diff --git a/.project b/.project deleted file mode 100644 index 0b76a40ba..000000000 --- a/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - processing-head - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/app/.classpath b/app/.classpath index 26775c499..4589f3f47 100644 --- a/app/.classpath +++ b/app/.classpath @@ -2,19 +2,11 @@ - - - - - - - - - - - + + + diff --git a/app/src/processing/app/debug/AvrdudeUploader.java b/app/src/processing/app/debug/AvrdudeUploader.java old mode 100755 new mode 100644 diff --git a/app/src/processing/app/debug/BossaCUploader.java b/app/src/processing/app/debug/BossaCUploader.java new file mode 100644 index 000000000..d91e771e0 --- /dev/null +++ b/app/src/processing/app/debug/BossaCUploader.java @@ -0,0 +1,104 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + AvrdudeUploader - uploader implementation using avrdude + Part of the Arduino project - http://www.arduino.cc/ + + Copyright (c) 2011 Cristian Maglie + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + $Id$ + */ + +package processing.app.debug; + +import java.io.File; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import processing.app.Base; +import processing.app.Preferences; +import processing.app.SerialException; + +public class BossaCUploader extends Uploader { + + public boolean uploadUsingPreferences(String buildPath, String className, + boolean usingProgrammer) + throws RunnerException, SerialException { + List commandDownloader = new ArrayList(); + String port = Preferences.get("serial.port"); + if (port.startsWith("/dev/")) + port = port.substring(5); + commandDownloader.add("--port=" + port); + commandDownloader.add("-e"); + commandDownloader.add("-w"); + commandDownloader.add("-v"); + commandDownloader.add("-b"); + commandDownloader.add(buildPath + File.separator + className + ".bin"); + + return bossac(commandDownloader); + } + + public boolean burnBootloader() { + return true; + } + + public boolean bossac(Collection params) throws RunnerException { + List commandDownloader = new ArrayList(); + commandDownloader.add("bossac"); + + if (verbose || Preferences.getBoolean("upload.verbose")) { + commandDownloader.add("-i"); + commandDownloader.add("-d"); + } + commandDownloader.addAll(params); + + return executeUploadCommand(commandDownloader); + } + + protected boolean executeUploadCommand(List cmdParams) + throws RunnerException { + + try { + String avrBasePath = Base.getHardwarePath() + "/tools/"; + + String[] cmdArray = cmdParams.toArray(new String[0]); + cmdArray[0] = avrBasePath + cmdArray[0]; + + if (verbose || Preferences.getBoolean("upload.verbose")) { + for (String cmd : cmdArray) + System.out.print(cmd + " "); + System.out.println(); + } + + Process bossac = Runtime.getRuntime().exec(cmdArray); + new MessageSiphon(bossac.getInputStream(), this); + new MessageSiphon(bossac.getErrorStream(), this); + + // wait for the process to finish. if interrupted + // before waitFor returns, continue waiting + int result = bossac.waitFor(); + if (result != 0) + return false; + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + +} diff --git a/app/src/processing/app/debug/Sizer.java b/app/src/processing/app/debug/Sizer.java index d67728a3c..2b4dfd80f 100644 --- a/app/src/processing/app/debug/Sizer.java +++ b/app/src/processing/app/debug/Sizer.java @@ -1,67 +1,77 @@ /* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ /* - Sizer - computes the size of a .hex file - Part of the Arduino project - http://www.arduino.cc/ + Sizer - computes the size of a .hex file + Part of the Arduino project - http://www.arduino.cc/ - Copyright (c) 2006 David A. Mellis + Copyright (c) 2006 David A. Mellis - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - $Id$ -*/ + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + $Id$ + */ package processing.app.debug; -import processing.app.Base; - -import java.io.*; -import java.util.*; +import java.io.File; +import java.text.MessageFormat; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.StringTokenizer; public class Sizer implements MessageConsumer { private String buildPath, sketchName; + private String firstLine; + private long size; + private RunnerException exception; - public Sizer(String buildPath, String sketchName) { + private Map prefs; + + public Sizer(String buildPath, String sketchName, + Map prefs) { this.buildPath = buildPath; this.sketchName = sketchName; + this.prefs = prefs; } - + public long computeSize() throws RunnerException { - String avrBasePath = Base.getAvrBasePath(); - String commandSize[] = new String[] { - avrBasePath + "avr-size", - " " - }; - - commandSize[1] = buildPath + File.separator + sketchName + ".hex"; + String args[] = new String[3]; + args[0] = prefs.get("compiler.path"); + args[1] = prefs.get("compiler.size.cmd"); + args[2] = buildPath + File.separator + sketchName; + + String recipe = prefs.get("recipe.size.pattern"); + MessageFormat compileFormat = new MessageFormat(recipe); + String command = compileFormat.format(args); + String[] commandArray = command.split("\\|"); int r = 0; try { exception = null; size = -1; firstLine = null; - Process process = Runtime.getRuntime().exec(commandSize); + Process process = Runtime.getRuntime().exec(commandArray); MessageSiphon in = new MessageSiphon(process.getInputStream(), this); MessageSiphon err = new MessageSiphon(process.getErrorStream(), this); boolean running = true; - while(running) { + while (running) { try { if (in.thread != null) in.thread.join(); @@ -69,25 +79,28 @@ public class Sizer implements MessageConsumer { err.thread.join(); r = process.waitFor(); running = false; - } catch (InterruptedException intExc) { } + } catch (InterruptedException intExc) { + } } } catch (Exception e) { // The default Throwable.toString() never returns null, but apparently // some sub-class has overridden it to do so, thus we need to check for - // it. See: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1166589459 - exception = new RunnerException( - (e.toString() == null) ? e.getClass().getName() + r : e.toString() + r); + // it. See: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1166589459 + if (e.toString() == null) + exception = new RunnerException(e.getClass().getName() + r); + else + exception = new RunnerException(e.toString() + r); } - + if (exception != null) throw exception; - + if (size == -1) throw new RunnerException(firstLine); - + return size; } - + public void message(String s) { if (firstLine == null) firstLine = s; diff --git a/app/src/processing/app/debug/Uploader.java b/app/src/processing/app/debug/Uploader.java old mode 100755 new mode 100644 diff --git a/build/linux/dist/tools/bossac b/build/linux/dist/tools/bossac new file mode 100755 index 000000000..bba40b71c Binary files /dev/null and b/build/linux/dist/tools/bossac differ diff --git a/build/linux/dist/tools/bossac64 b/build/linux/dist/tools/bossac64 new file mode 100755 index 000000000..b75546546 Binary files /dev/null and b/build/linux/dist/tools/bossac64 differ diff --git a/build/macosx/dist/CodeSourcery_arm.zip b/build/macosx/dist/CodeSourcery_arm.zip new file mode 100644 index 000000000..032c42943 Binary files /dev/null and b/build/macosx/dist/CodeSourcery_arm.zip differ diff --git a/build/macosx/dist/bossac b/build/macosx/dist/bossac new file mode 100755 index 000000000..18cb43eb7 Binary files /dev/null and b/build/macosx/dist/bossac differ diff --git a/build/macosx/template.dmg.gz b/build/macosx/template.dmg.gz index 70405c676..cb966b320 100644 Binary files a/build/macosx/template.dmg.gz and b/build/macosx/template.dmg.gz differ diff --git a/build/windows/CodeSourcery_arm.zip b/build/windows/CodeSourcery_arm.zip new file mode 100644 index 000000000..56ae4546b Binary files /dev/null and b/build/windows/CodeSourcery_arm.zip differ diff --git a/build/windows/bossac.exe b/build/windows/bossac.exe new file mode 100644 index 000000000..2e9530e01 Binary files /dev/null and b/build/windows/bossac.exe differ diff --git a/build/windows/dist/drivers/bossa.inf b/build/windows/dist/drivers/bossa.inf new file mode 100755 index 000000000..1722074f3 --- /dev/null +++ b/build/windows/dist/drivers/bossa.inf @@ -0,0 +1,48 @@ +[Version] ; Version section +Signature="$Chicago$" ; All Windows versions +Class=Ports ; This is a serial port driver +ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} ; Associated GUID +Provider=%SHUMATECH% ; Driver is provided by SHUMATECH +DriverVer=05/18/2011,1.0 ; Driver version + +[DestinationDirs] ; DestinationDirs section +DefaultDestDir=12 ; Default install directory is \drivers or \IOSubSys + +[Manufacturer] ; Manufacturer section +%SHUMATECH%=ShumaTech,NTamd64 ; Only one manufacturer (SHUMATECH), models section is named + ; ShumaTech + +[ShumaTech] ; Models section corresponding to SHUMATECH +%BOSSA%=BOSSA.Install,USB\VID_03EB&PID_6124 ; Identifies a device with Vendor ID (03EBh) and + ; Product ID equal to 6124h. Corresponding Install section + ; is named BOSSA.Install + +[ShumaTech.NTamd64] ; Models section corresponding to SHUMATECH +%BOSSA%=BOSSA.Install,USB\VID_03EB&PID_6124 ; Identifies a device with Vendor ID (03EBh) and + ; Product ID equal to 6124h. Corresponding Install section + ; is named BOSSA.Install + +[BOSSA.Install] ; Install section +include=mdmcpq.inf +CopyFiles=FakeModemCopyFileSection +AddReg=BOSSA.AddReg ; Registry keys to add are listed in BOSSA.AddReg + +[BOSSA.AddReg] ; AddReg section +HKR,,DevLoader,,*ntkern +HKR,,NTMPDriver,,usbser.sys +HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" + +[BOSSA.Install.Services] ; Services section +AddService=usbser,0x00000002,BOSSA.AddService ; Assign usbser as the PnP driver for the device + +[BOSSA.AddService] ; Service install section +DisplayName=%USBSer% ; Name of the serial driver +ServiceType=1 ; Service kernel driver +StartType=3 ; Driver is started by the PnP manager +ErrorControl=1 ; Warn about errors +ServiceBinary=%12%\usbser.sys ; Driver filename + +[Strings] ; Strings section +SHUMATECH="ShumaTech" ; String value for the SHUMATECH symbol +BOSSA="BOSSA Program Port" ; String value for the BOSSA symbol +USBSer="USB Serial Driver" ; String value for the USBSer symbol diff --git a/hardware/sam/boards.txt b/hardware/sam/boards.txt new file mode 100644 index 000000000..ec43dd61b --- /dev/null +++ b/hardware/sam/boards.txt @@ -0,0 +1,54 @@ +############################################################## + +sam3s_ek.name=Atmel SAM3S-EK +sam3s_ek.platform=sam +sam3s_ek.upload.protocol=sam-ba +sam3s_ek.upload.maximum_size=49152 +sam3s_ek.upload.speed=115200 +sam3s_ek.bootloader.path=sam3s_boot +sam3s_ek.bootloader.file=sam3s_boot.bin +sam3s_ek.build.mcu=cortex-m3 +sam3s_ek.build.f_cpu=64000000L +sam3s_ek.build.core=sam +sam3s_ek.build.pins=sam3s_ek + +############################################################## + +sam3u_ek.name=Atmel SAM3U-EK +sam3u_ek.platform=sam +sam3u_ek.upload.protocol=sam-ba +sam3u_ek.upload.maximum_size=49152 +sam3u_ek.upload.speed=115200 +sam3u_ek.bootloader.path=sam3u_boot +sam3u_ek.bootloader.file=sam3u_boot.bin +sam3u_ek.build.mcu=cortex-m3 +sam3u_ek.build.f_cpu=96000000L +sam3u_ek.build.core=sam +sam3u_ek.build.pins=sam3u_ek + +############################################################## + +arduino_due.name=Arduino Due +arduino_due.platform=sam +arduino_due.uploader=bossac +arduino_due.upload.maximum_size=49152 +arduino_due.upload.speed=115200 +#arduino_due.bootloader.path=sam3u_boot +#arduino_due.bootloader.file=sam3u_boot.bin +arduino_due.build.mcu=cortex-m3 +arduino_due.build.f_cpu=96000000L +arduino_due.build.core=sam +arduino_due.build.pins=arduino_due +arduino_due.build.extra_flags=-D__SAM3U4E__ +arduino_due.build.extra_include_dirs=system/libsam|system/libsam/include|system/CMSIS/Include|system/libsam/cmsis/sam3u/source/templates|system/libsam/cmsis/sam3u/include +arduino_due.core.extra_source_dirs=sam +arduino_due.system.extra_source_dirs=libsam/source|libsam/cmsis/sam3u/source/templates|libsam/cmsis/sam3u/source/templates/gcc +arduino_due.variants.extra_source_dirs=arduino_due|common +#hardware/sam/system/libsam/source/ +#hardware/sam/system/libsam/cmsis/sam3u/source/ +#hardware/sam/variants/arduino_due +#hardware/sam/variants/common +#hardware/sam/cores/sam +arduino_due.build.ldscript=linker_scripts/gcc/flash.ld + + diff --git a/hardware/sam/bootloaders/sam3_samba/linker_script/flash.ld b/hardware/sam/bootloaders/sam3_samba/linker_script/flash.ld new file mode 100644 index 000000000..c47a2c508 --- /dev/null +++ b/hardware/sam/bootloaders/sam3_samba/linker_script/flash.ld @@ -0,0 +1,140 @@ +/* ---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2009, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------------ + * Linker script for running in internal FLASH on the ATSAM3S4 + *----------------------------------------------------------------------------*/ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00400000, LENGTH = 0x00040000 /* flash, 256K */ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x0000c000 /* sram, 48K */ +} + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(0x4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + *(.stack .stack.*) + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/hardware/sam/cores/sam/Arduino.h b/hardware/sam/cores/sam/Arduino.h new file mode 100644 index 000000000..e0b11199e --- /dev/null +++ b/hardware/sam/cores/sam/Arduino.h @@ -0,0 +1,180 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Arduino_h +#define Arduino_h + +#include +#include +#include +#include + +#include "binary.h" + +#ifdef __cplusplus +extern "C"{ +#endif // __cplusplus + +#include "libsam/chip.h" +#include "wiring_constants.h" + +#define clockCyclesPerMicrosecond() ( SystemCoreClock / 1000000L ) +#define clockCyclesToMicroseconds(a) ( ((a) * 1000L) / (SystemCoreClock / 1000L) ) +#define microsecondsToClockCycles(a) ( (a) * (SystemCoreClock / 1000000L) ) + + +#include "wiring.h" +#include "wiring_digital.h" +#include "wiring_analog.h" +#include "wiring_shift.h" +#include "WInterrupts.h" + +/* sketch */ +extern void setup( void ) ; +extern void loop( void ) ; + +// Get the bit location within the hardware port of the given virtual pin. +// This comes from the pins_*.c file for the active board configuration. +// +// These perform slightly better as macros compared to inline functions +// +#define digitalPinToPort( ulPin ) ( g_APinDescription[ulPin]->pPort->PIO_PDSR ) +#define digitalPinToBitMask( ulPin ) ( g_APinDescription[ulPin]->dwPin ) +#define digitalPinToTimer( P ) ( ) +#define analogInPinToBit( P ) ( P ) +#define portOutputRegister( P ) ( ) +#define portInputRegister( P ) ( ) +#define portModeRegister( P ) ( ) + +//#define NOT_A_PIN 0 // defined in pio.h/EPioType +#define NOT_A_PORT 0 + +#define NOT_ON_TIMER 0 +#define TIMER0 1 + +typedef enum _EExt_Interrupts +{ + EXTERNAL_INT_0=0, + EXTERNAL_INT_1=1, + EXTERNAL_INT_2=2, + EXTERNAL_INT_3=3, + EXTERNAL_INT_4=4, + EXTERNAL_INT_5=5, + EXTERNAL_INT_6=6, + EXTERNAL_INT_7=7, + EXTERNAL_NUM_INTERRUPTS +} EExt_Interrupts ; + +typedef void (*voidFuncPtr)( void ) ; + +/* Define attribute */ +#if defined ( __CC_ARM ) /* Keil uVision 4 */ + #define WEAK (__attribute__ ((weak))) +#elif defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */ + #define WEAK __weak +#elif defined ( __GNUC__ ) /* GCC CS */ + #define WEAK __attribute__ ((weak)) +#endif + +/* Definitions and types for pins */ +typedef enum _EAnalogChannel +{ + NO_ADC=-1, + ADC0=0, + ADC1, + ADC2, + ADC3, + ADC4, + ADC5, + ADC6, + ADC7, + ADC8, + ADC9, + ADC10, + ADC11, + ADC12, + ADC13, + ADC14, + ADC15, + DAC0, + DAC1 +} EAnalogChannel ; + +#define ADC_CHANNEL_NUMBER_NONE 0xffffffff + +// Definitions for PWM channels +typedef enum _EPWMChannel +{ + NO_PWM=-1, + PWM_CH0=0, + PWM_CH1, + PWM_CH2, + PWM_CH3 +} EPWMChannel ; + +// Definitions for TC channels +typedef enum _ETCChannel +{ + NO_TC=-1, + TC0_CHA0=0, + TC0_CHB0, + TC0_CHA1, + TC0_CHB1, + TC0_CHA2, + TC0_CHB2 +} ETCChannel ; + +/** + * Pin Attributes to be OR-ed + */ +#define PIN_ATTR_COMBO (1UL<<0) +#define PIN_ATTR_ANALOG (1UL<<1) +#define PIN_ATTR_DIGITAL (1UL<<2) +#define PIN_ATTR_PWM (1UL<<3) +#define PIN_ATTR_TIMER (1UL<<4) + +/* Types used for the tables below */ +typedef struct _PinDescription +{ + Pio* pPort ; + uint32_t ulPin ; + uint32_t ulPeripheralId ; + EPioType ulPinType ; + uint32_t ulPinConfiguration ; + uint32_t ulPinAttribute ; + EAnalogChannel ulAnalogChannel ; /* Describe which Analog pin is linked to a MCU pin */ + EAnalogChannel ulADCChannelNumber ; /* We use the same enum than for ADC pins to describe the ADC channel in use on this pin */ + EPWMChannel ulPWMChannel ; + ETCChannel ulTCChannel ; +} PinDescription ; + +/* Pins table to be instanciated into variant.cpp */ +extern const PinDescription g_APinDescription[] ; + +#ifdef __cplusplus +} // extern "C" + +#include "WCharacter.h" +#include "WString.h" +#include "Tone.h" +#include "WMath.h" +#include "HardwareSerial.h" +#include "wiring_pulse.h" +#endif // __cplusplus + +#endif // Arduino_h diff --git a/hardware/sam/cores/sam/CDC.cpp b/hardware/sam/cores/sam/CDC.cpp new file mode 100644 index 000000000..fb980ab75 --- /dev/null +++ b/hardware/sam/cores/sam/CDC.cpp @@ -0,0 +1,174 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "Platform.h" +#include "USBAPI.h" + +#if defined(USBCON) +#ifdef CDC_ENABLED + +void Reboot() +{ + USB.detach(); + cli(); + asm volatile("jmp 0x7800"); // jump to bootloader - DiskLoader takes up last 2 kB +} + +typedef struct +{ + u32 dwDTERate; + u8 bCharFormat; + u8 bParityType; + u8 bDataBits; + u8 lineState; +} LineInfo; + +static volatile LineInfo _usbLineInfo = { 57600, 0x00, 0x00, 0x00, 0x00 }; + +#define WEAK __attribute__ ((weak)) + +extern const CDCDescriptor _cdcInterface PROGMEM; +const CDCDescriptor _cdcInterface = +{ + D_IAD(0,2,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,1), + + // CDC communication interface + D_INTERFACE(CDC_ACM_INTERFACE,1,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,0), + D_CDCCS(CDC_HEADER,0x10,0x01), // Header (1.10 bcd) + D_CDCCS(CDC_CALL_MANAGEMENT,1,1), // Device handles call management (not) + D_CDCCS4(CDC_ABSTRACT_CONTROL_MANAGEMENT,6), // SET_LINE_CODING, GET_LINE_CODING, SET_CONTROL_LINE_STATE supported + D_CDCCS(CDC_UNION,CDC_ACM_INTERFACE,CDC_DATA_INTERFACE), // Communication interface is master, data interface is slave 0 + D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_ACM),USB_ENDPOINT_TYPE_INTERRUPT,0x10,0x40), + + // CDC data interface + D_INTERFACE(CDC_DATA_INTERFACE,2,CDC_DATA_INTERFACE_CLASS,0,0), + D_ENDPOINT(USB_ENDPOINT_OUT(CDC_ENDPOINT_OUT),USB_ENDPOINT_TYPE_BULK,0x40,0), + D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_IN ),USB_ENDPOINT_TYPE_BULK,0x40,0) +}; + +int WEAK CDC_GetInterface(u8* interfaceNum) +{ + interfaceNum[0] += 2; // uses 2 + return USB_SendControl(TRANSFER_PGM,&_cdcInterface,sizeof(_cdcInterface)); +} + +bool WEAK CDC_Setup(Setup& setup) +{ + u8 r = setup.bRequest; + u8 requestType = setup.bmRequestType; + + if (REQUEST_DEVICETOHOST_CLASS_INTERFACE == requestType) + { + if (CDC_GET_LINE_CODING == r) + { + USB_SendControl(0,(void*)&_usbLineInfo,7); + return true; + } + } + + if (REQUEST_HOSTTODEVICE_CLASS_INTERFACE == requestType) + { + if (CDC_SET_LINE_CODING == r) + { + USB_RecvControl((void*)&_usbLineInfo,7); + return true; + } + + if (CDC_SET_CONTROL_LINE_STATE == r) + { + if (0 != _usbLineInfo.lineState && 1200 == _usbLineInfo.dwDTERate) // auto-reset is triggered when the port, already open at 1200 bps, is closed + Reboot(); + _usbLineInfo.lineState = setup.wValueL; + return true; + } + } + return false; +} + + +int _serialPeek = -1; +void Serial_::begin(uint16_t baud_count) +{ +} + +void Serial_::end(void) +{ +} + +int Serial_::available(void) +{ + u8 avail = USB_Available(CDC_RX); + if (_serialPeek != -1) + avail++; + return avail; +} + +// peek is nasty +int Serial_::peek(void) +{ + if (_serialPeek == -1) + _serialPeek = read(); + return _serialPeek; +} + +int Serial_::read(void) +{ + int c; + if (_serialPeek != -1) + { + c = _serialPeek; + _serialPeek = -1; + } else { + c = USB_Recv(CDC_RX); + } + return c; +} + +void Serial_::flush(void) +{ + USB_Flush(CDC_TX); +} + +size_t Serial_::write(uint8_t c) +{ + /* only try to send bytes if the high-level CDC connection itself + is open (not just the pipe) - the OS should set lineState when the port + is opened and clear lineState when the port is closed. + bytes sent before the user opens the connection or after + the connection is closed are lost - just like with a UART. */ + + // TODO - ZE - check behavior on different OSes and test what happens if an + // open connection isn't broken cleanly (cable is yanked out, host dies + // or locks up, or host virtual serial port hangs) + if (_usbLineInfo.lineState > 0) { + int r = USB_Send(CDC_TX,&c,1); + if (r > 0) { + return r; + } else { + setWriteError(); + return 0; + } + } + setWriteError(); + return 0; +} + +Serial_ Serial; + +#endif +#endif /* if defined(USBCON) */ diff --git a/hardware/sam/cores/sam/HID.cpp b/hardware/sam/cores/sam/HID.cpp new file mode 100644 index 000000000..8ed156666 --- /dev/null +++ b/hardware/sam/cores/sam/HID.cpp @@ -0,0 +1,446 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "Platform.h" +#include "USBAPI.h" +#include "USBDesc.h" + +#if defined(USBCON) +#ifdef HID_ENABLED + +//#define RAWHID_ENABLED + +// Singletons for mouse and keyboard + +Mouse_ Mouse; +Keyboard_ Keyboard; + +//================================================================================ +//================================================================================ + +// HID report descriptor + +#define LSB(_x) ((_x) & 0xFF) +#define MSB(_x) ((_x) >> 8) + +#define RAWHID_USAGE_PAGE 0xFFC0 +#define RAWHID_USAGE 0x0C00 +#define RAWHID_TX_SIZE 64 +#define RAWHID_RX_SIZE 64 + +extern const u8 _hidReportDescriptor[] PROGMEM; +const u8 _hidReportDescriptor[] = { + + // Mouse + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 54 + 0x09, 0x02, // USAGE (Mouse) + 0xa1, 0x01, // COLLECTION (Application) + 0x09, 0x01, // USAGE (Pointer) + 0xa1, 0x00, // COLLECTION (Physical) + 0x85, 0x01, // REPORT_ID (1) + 0x05, 0x09, // USAGE_PAGE (Button) + 0x19, 0x01, // USAGE_MINIMUM (Button 1) + 0x29, 0x03, // USAGE_MAXIMUM (Button 3) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x95, 0x03, // REPORT_COUNT (3) + 0x75, 0x01, // REPORT_SIZE (1) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x05, // REPORT_SIZE (5) + 0x81, 0x03, // INPUT (Cnst,Var,Abs) + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) + 0x09, 0x30, // USAGE (X) + 0x09, 0x31, // USAGE (Y) + 0x09, 0x38, // USAGE (Wheel) + 0x15, 0x81, // LOGICAL_MINIMUM (-127) + 0x25, 0x7f, // LOGICAL_MAXIMUM (127) + 0x75, 0x08, // REPORT_SIZE (8) + 0x95, 0x03, // REPORT_COUNT (3) + 0x81, 0x06, // INPUT (Data,Var,Rel) + 0xc0, // END_COLLECTION + 0xc0, // END_COLLECTION + + // Keyboard + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 47 + 0x09, 0x06, // USAGE (Keyboard) + 0xa1, 0x01, // COLLECTION (Application) + 0x85, 0x02, // REPORT_ID (2) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + + 0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl) + 0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x75, 0x01, // REPORT_SIZE (1) + + 0x95, 0x08, // REPORT_COUNT (8) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x08, // REPORT_SIZE (8) + 0x81, 0x03, // INPUT (Cnst,Var,Abs) + + 0x95, 0x06, // REPORT_COUNT (6) + 0x75, 0x08, // REPORT_SIZE (8) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x65, // LOGICAL_MAXIMUM (101) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + + 0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated)) + 0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application) + 0x81, 0x00, // INPUT (Data,Ary,Abs) + 0xc0, // END_COLLECTION + +#if RAWHID_ENABLED + // RAW HID + 0x06, LSB(RAWHID_USAGE_PAGE), MSB(RAWHID_USAGE_PAGE), // 30 + 0x0A, LSB(RAWHID_USAGE), MSB(RAWHID_USAGE), + + 0xA1, 0x01, // Collection 0x01 + 0x85, 0x03, // REPORT_ID (3) + 0x75, 0x08, // report size = 8 bits + 0x15, 0x00, // logical minimum = 0 + 0x26, 0xFF, 0x00, // logical maximum = 255 + + 0x95, 64, // report count TX + 0x09, 0x01, // usage + 0x81, 0x02, // Input (array) + + 0x95, 64, // report count RX + 0x09, 0x02, // usage + 0x91, 0x02, // Output (array) + 0xC0 // end collection +#endif +}; + +extern const HIDDescriptor _hidInterface PROGMEM; +const HIDDescriptor _hidInterface = +{ + D_INTERFACE(HID_INTERFACE,1,3,0,0), + D_HIDREPORT(sizeof(_hidReportDescriptor)), + D_ENDPOINT(USB_ENDPOINT_IN (HID_ENDPOINT_INT),USB_ENDPOINT_TYPE_INTERRUPT,0x40,0x01) +}; + +//================================================================================ +//================================================================================ +// Driver + +u8 _hid_protocol = 1; +u8 _hid_idle = 1; + +#define WEAK __attribute__ ((weak)) +#define WEAK + +int WEAK HID_GetInterface(u8* interfaceNum) +{ + interfaceNum[0] += 1; // uses 1 + return USB_SendControl(TRANSFER_PGM,&_hidInterface,sizeof(_hidInterface)); +} + +int WEAK HID_GetDescriptor(int i) +{ + return USB_SendControl(TRANSFER_PGM,_hidReportDescriptor,sizeof(_hidReportDescriptor)); +} + +void WEAK HID_SendReport(u8 id, const void* data, int len) +{ + USB_Send(HID_TX, &id, 1); + USB_Send(HID_TX | TRANSFER_RELEASE,data,len); +} + +bool WEAK HID_Setup(Setup& setup) +{ + u8 r = setup.bRequest; + u8 requestType = setup.bmRequestType; + if (REQUEST_DEVICETOHOST_CLASS_INTERFACE == requestType) + { + if (HID_GET_REPORT == r) + { + //HID_GetReport(); + return true; + } + if (HID_GET_PROTOCOL == r) + { + //Send8(_hid_protocol); // TODO + return true; + } + } + + if (REQUEST_HOSTTODEVICE_CLASS_INTERFACE == requestType) + { + if (HID_SET_PROTOCOL == r) + { + _hid_protocol = setup.wValueL; + return true; + } + + if (HID_SET_IDLE == r) + { + _hid_idle = setup.wValueL; + return true; + } + } + return false; +} + +//================================================================================ +//================================================================================ +// Mouse + +Mouse_::Mouse_() : _buttons(0) +{ +} + +void Mouse_::click(uint8_t b) +{ + _buttons = b; + move(0,0,0); + _buttons = 0; + move(0,0,0); +} + +void Mouse_::move(signed char x, signed char y, signed char wheel) +{ + u8 m[4]; + m[0] = _buttons; + m[1] = x; + m[2] = y; + m[3] = wheel; + HID_SendReport(1,m,4); +} + +void Mouse_::buttons(uint8_t b) +{ + if (b != _buttons) + { + _buttons = b; + move(0,0,0); + } +} + +void Mouse_::press(uint8_t b) +{ + buttons(_buttons | b); +} + +void Mouse_::release(uint8_t b) +{ + buttons(_buttons & ~b); +} + +bool Mouse_::isPressed(uint8_t b) +{ + if (b & _buttons > 0) + return true; + return false; +} + +//================================================================================ +//================================================================================ +// Keyboard + +Keyboard_::Keyboard_() : _keyMap(0) +{ +} + +void Keyboard_::sendReport(KeyReport* keys) +{ + HID_SendReport(2,keys,sizeof(KeyReport)); +} + +void Keyboard_::setKeyMap(KeyMap* keyMap) +{ + _keyMap = keyMap; +} + +extern +const uint8_t _asciimap[128] PROGMEM; + +#define SHIFT 0x80 +const uint8_t _asciimap[128] = +{ + 0x00, // NUL + 0x00, // SOH + 0x00, // STX + 0x00, // ETX + 0x00, // EOT + 0x00, // ENQ + 0x00, // ACK + 0x00, // BEL + 0x2a, // BS Backspace + 0x2b, // TAB Tab + 0x28, // LF Enter + 0x00, // VT + 0x00, // FF + 0x00, // CR + 0x00, // SO + 0x00, // SI + 0x00, // DEL + 0x00, // DC1 + 0x00, // DC2 + 0x00, // DC3 + 0x00, // DC4 + 0x00, // NAK + 0x00, // SYN + 0x00, // ETB + 0x00, // CAN + 0x00, // EM + 0x00, // SUB + 0x00, // ESC + 0x00, // FS + 0x00, // GS + 0x00, // RS + 0x00, // US + + 0x2c, // ' ' + 0x1e|SHIFT, // ! + 0x34|SHIFT, // " + 0x20|SHIFT, // # + 0x21|SHIFT, // $ + 0x22|SHIFT, // % + 0x24|SHIFT, // & + 0x34, // ' + 0x26|SHIFT, // ( + 0x27|SHIFT, // ) + 0x25|SHIFT, // * + 0x2e|SHIFT, // + + 0x36, // , + 0x2d, // - + 0x37, // . + 0x38, // / + 0x27, // 0 + 0x1e, // 1 + 0x1f, // 2 + 0x20, // 3 + 0x21, // 4 + 0x22, // 5 + 0x23, // 6 + 0x24, // 7 + 0x25, // 8 + 0x26, // 9 + 0x33|SHIFT, // : + 0x33, // ; + 0x36|SHIFT, // < + 0x2e, // = + 0x37|SHIFT, // > + 0x38|SHIFT, // ? + 0x1f|SHIFT, // @ + 0x04|SHIFT, // A + 0x05|SHIFT, // B + 0x06|SHIFT, // C + 0x07|SHIFT, // D + 0x08|SHIFT, // E + 0x09|SHIFT, // F + 0x0a|SHIFT, // G + 0x0b|SHIFT, // H + 0x0c|SHIFT, // I + 0x0d|SHIFT, // J + 0x0e|SHIFT, // K + 0x0f|SHIFT, // L + 0x10|SHIFT, // M + 0x11|SHIFT, // N + 0x12|SHIFT, // O + 0x13|SHIFT, // P + 0x14|SHIFT, // Q + 0x15|SHIFT, // R + 0x16|SHIFT, // S + 0x17|SHIFT, // T + 0x18|SHIFT, // U + 0x19|SHIFT, // V + 0x1a|SHIFT, // W + 0x1b|SHIFT, // X + 0x1c|SHIFT, // Y + 0x1d|SHIFT, // Z + 0x2f, // [ + 0x31, // bslash + 0x30, // ] + 0x23|SHIFT, // ^ + 0x2d|SHIFT, // _ + 0x35, // ` + 0x04, // a + 0x05, // b + 0x06, // c + 0x07, // d + 0x08, // e + 0x09, // f + 0x0a, // g + 0x0b, // h + 0x0c, // i + 0x0d, // j + 0x0e, // k + 0x0f, // l + 0x10, // m + 0x11, // n + 0x12, // o + 0x13, // p + 0x14, // q + 0x15, // r + 0x16, // s + 0x17, // t + 0x18, // u + 0x19, // v + 0x1a, // w + 0x1b, // x + 0x1c, // y + 0x1d, // z + 0x2f|SHIFT, // + 0x31|SHIFT, // | + 0x30|SHIFT, // } + 0x35|SHIFT, // ~ + 0 // DEL +}; + +uint8_t USBPutChar(uint8_t c); +size_t Keyboard_::write(uint8_t c) +{ + // Keydown + { + KeyReport keys = {0}; + if (_keyMap) + _keyMap->charToKey(c,&keys); + else + { + if (c >= 128) { + setWriteError(); + return 0; + } + c = pgm_read_byte(_asciimap + c); + if (!c) { + setWriteError(); + return 0; + } + if (c & 0x80) + { + keys.modifiers |= KEY_MODIFIER_LEFT_SHIFT; + c &= 0x7F; + } + keys.keys[0] = c; + } + sendReport(&keys); + } + // Keyup + { + KeyReport keys = {0}; + sendReport(&keys); + } + return 1; +} + +#endif + +#endif /* if defined(USBCON) */ \ No newline at end of file diff --git a/hardware/sam/cores/sam/HOWTO - compiling a project.txt b/hardware/sam/cores/sam/HOWTO - compiling a project.txt new file mode 100644 index 000000000..2f60ef42b --- /dev/null +++ b/hardware/sam/cores/sam/HOWTO - compiling a project.txt @@ -0,0 +1,55 @@ + +1- Path to GCC ARM toolchain + +Set into environment variables the ARM_GCC_TOOLCHAIN variable: +ex: +ARM_GCC_TOOLCHAIN=C:\CodeSourcery_2011.03-42\bin + +2- Compile libsam (at91sam peripheral drivers) + +Go to hardware/sam/system/libsam/build_gcc + +run the command: 'cs-make' + +This will compile the libsam library and deliver to main Arduino folder the files: + +hardware/sam/cores/sam/libsam_sam3s4c_gcc_dbg.a +hardware/sam/cores/sam/libsam_sam3s4c_gcc_dbg.a.txt (result of nm) + +3- Compile libarduino (Arduino API) + +Go to hardware/sam/cores/sam/build_gcc + +run the command: 'cs-make' + +This will compile the libarduino library and deliver to main Arduino folder the files: + +hardware/sam/cores/sam/libarduino_sam3s_ek_gcc_dbg.a +hardware/sam/cores/sam/libarduino_sam3s_ek_gcc_dbg.a.txt (result of nm) + +4- Compile libvariant (variant specific library, use Arduino API and libsam) + +Go to hardware/sam/variants/sam3s-ek/build_gcc + +run the command: 'cs-make' + +This will compile the libvariant library and deliver to main Arduino folder the files: + +hardware/sam/cores/sam/libvariant_sam3s_ek_gcc_dbg.a +hardware/sam/cores/sam/libvariant_sam3s_ek_gcc_dbg.a.txt (result of nm) + +5- Compile test application + +Go to hardware/sam/cores/sam/validation/build_gcc + +run the command: 'cs-make' + +This will compile the test application and deliver the binary into: + +hardware/sam/cores/sam/validation/debug_sam3s_ek/test_gcc_dbg.elf +hardware/sam/cores/sam/validation/debug_sam3s_ek/test_gcc_dbg.bin +hardware/sam/cores/sam/validation/debug_sam3s_ek/test_gcc_dbg.map (mapping matching linker script) +hardware/sam/cores/sam/validation/debug_sam3s_ek/test_gcc_dbg.elf.txt (result of nm) + + + diff --git a/hardware/sam/cores/sam/HardwareSerial.h b/hardware/sam/cores/sam/HardwareSerial.h new file mode 100644 index 000000000..b76f2efbd --- /dev/null +++ b/hardware/sam/cores/sam/HardwareSerial.h @@ -0,0 +1,46 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef HardwareSerial_h +#define HardwareSerial_h + +#include +#include "Stream.h" +#include "RingBuffer.h" + +class HardwareSerial : public Stream +{ + protected: + RingBuffer *_rx_buffer ; + RingBuffer *_tx_buffer ; + + public: + virtual void begin( const uint32_t dwBaudRate ) =0 ; + virtual void end( void ) =0 ; + virtual int available( void ) =0 ; + virtual int peek( void ) =0 ; + virtual int read( void ) =0 ; + virtual void flush( void ) =0 ; + virtual void write( const uint8_t c ) =0 ; + +// virtual void write( const char *str ) ; +// virtual void write( const uint8_t *buffer, size_t size ) ; + using Print::write ; // pull in write(str) and write(buf, size) from Print +} ; + +#endif // HardwareSerial_h diff --git a/hardware/sam/cores/sam/Platform.h b/hardware/sam/cores/sam/Platform.h new file mode 100644 index 000000000..e334dcad1 --- /dev/null +++ b/hardware/sam/cores/sam/Platform.h @@ -0,0 +1,19 @@ + +#ifndef __PLATFORM_H__ +#define __PLATFORM_H__ + +#include + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned long u32; + +#include "Arduino.h" + +#if defined(USBCON) + #include "USBDesc.h" + #include "USBCore.h" + #include "USBAPI.h" +#endif /* if defined(USBCON) */ + +#endif diff --git a/hardware/sam/cores/sam/Print.cpp b/hardware/sam/cores/sam/Print.cpp new file mode 100644 index 000000000..ff9604cbb --- /dev/null +++ b/hardware/sam/cores/sam/Print.cpp @@ -0,0 +1,219 @@ +/* + Print.cpp - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + */ + +#include +#include +#include +#include +#include "Arduino.h" + +#include "Print.h" + +// Public Methods ////////////////////////////////////////////////////////////// + +/* default implementation: may be overridden */ +void Print::write(const char *str) +{ + while (*str) + write(*str++); +} + +/* default implementation: may be overridden */ +void Print::write(const uint8_t *buffer, size_t size) +{ + while (size--) + write(*buffer++); +} + +void Print::print( const String &s ) +{ + for ( int i = 0 ; i < (int)s.length() ; i++ ) + { + write( s[i] ) ; + } +} + +void Print::print(const char str[]) +{ + write(str); +} + +void Print::print(char c) +{ + write(c); +} + +void Print::print(unsigned char b, int base) +{ + print((unsigned long) b, base); +} + +void Print::print(int n, int base) +{ + print((long) n, base); +} + +void Print::print(unsigned int n, int base) +{ + print((unsigned long) n, base); +} + +void Print::print(long n, int base) +{ + if (base == 0) { + write(n); + } else if (base == 10) { + if (n < 0) { + print('-'); + n = -n; + } + printNumber(n, 10); + } else { + printNumber(n, base); + } +} + +void Print::print(unsigned long n, int base) +{ + if (base == 0) write(n); + else printNumber(n, base); +} + +void Print::print(double n, int digits) +{ + printFloat(n, digits); +} + +void Print::println(void) +{ + print('\r'); + print('\n'); +} + +void Print::println(const String &s) +{ + print(s); + println(); +} + +void Print::println(const char c[]) +{ + print(c); + println(); +} + +void Print::println(char c) +{ + print(c); + println(); +} + +void Print::println(unsigned char b, int base) +{ + print(b, base); + println(); +} + +void Print::println(int n, int base) +{ + print(n, base); + println(); +} + +void Print::println(unsigned int n, int base) +{ + print(n, base); + println(); +} + +void Print::println(long n, int base) +{ + print(n, base); + println(); +} + +void Print::println(unsigned long n, int base) +{ + print(n, base); + println(); +} + +void Print::println(double n, int digits) +{ + print(n, digits); + println(); +} + +// Private Methods ///////////////////////////////////////////////////////////// + +void Print::printNumber(unsigned long n, uint8_t base) { + char buf[8 * sizeof(long) + 1]; // Assumes 8-bit chars plus zero byte. + char *str = &buf[sizeof(buf) - 1]; + + *str = '\0'; + + // prevent crash if called with base == 1 + if (base < 2) base = 10; + + do { + unsigned long m = n; + n /= base; + char c = m - base * n; + *--str = c < 10 ? c + '0' : c + 'A' - 10; + } while(n); + + write(str); +} + +void Print::printFloat(double number, uint8_t digits) +{ + // Handle negative numbers + if (number < 0.0) + { + print('-'); + number = -number; + } + + // Round correctly so that print(1.999, 2) prints as "2.00" + double rounding = 0.5; + for (uint8_t i=0; i 0) + print("."); + + // Extract digits from the remainder one at a time + while (digits-- > 0) + { + remainder *= 10.0; + int toPrint = int(remainder); + print(toPrint); + remainder -= toPrint; + } +} diff --git a/hardware/sam/cores/sam/Print.h b/hardware/sam/cores/sam/Print.h new file mode 100644 index 000000000..7885617ed --- /dev/null +++ b/hardware/sam/cores/sam/Print.h @@ -0,0 +1,65 @@ +/* + Print.h - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Print_h +#define Print_h + +#include +#include // for size_t + +#include "WString.h" + +#define DEC 10 +#define HEX 16 +#define OCT 8 +#define BIN 2 + +class Print +{ + private: + void printNumber(unsigned long, uint8_t); + void printFloat(double, uint8_t); + public: + virtual void write(uint8_t) = 0; + virtual void write(const char *str); + virtual void write(const uint8_t *buffer, size_t size); + + void print(const String &); + void print(const char[]); + void print(char); + void print(unsigned char, int = DEC); + void print(int, int = DEC); + void print(unsigned int, int = DEC); + void print(long, int = DEC); + void print(unsigned long, int = DEC); + void print(double, int = 2); + + void println(const String &s); + void println(const char[]); + void println(char); + void println(unsigned char, int = DEC); + void println(int, int = DEC); + void println(unsigned int, int = DEC); + void println(long, int = DEC); + void println(unsigned long, int = DEC); + void println(double, int = 2); + void println(void); +}; + +#endif diff --git a/hardware/sam/cores/sam/RingBuffer.cpp b/hardware/sam/cores/sam/RingBuffer.cpp new file mode 100644 index 000000000..f0b3ed1df --- /dev/null +++ b/hardware/sam/cores/sam/RingBuffer.cpp @@ -0,0 +1,43 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "RingBuffer.h" +#include + +RingBuffer::RingBuffer( void ) +{ + memset( _aucBuffer, 0, SERIAL_BUFFER_SIZE ) ; + _iHead=0 ; + _iTail=0 ; +} + +void RingBuffer::store_char( uint8_t c ) +{ + int i = (uint32_t)(_iHead + 1) % SERIAL_BUFFER_SIZE ; + + // if we should be storing the received character into the location + // just before the tail (meaning that the head would advance to the + // current location of the tail), we're about to overflow the buffer + // and so we don't write the character or advance the head. + if ( i != _iTail ) + { + _aucBuffer[_iHead] = c ; + _iHead = i ; + } +} + diff --git a/hardware/sam/cores/sam/RingBuffer.h b/hardware/sam/cores/sam/RingBuffer.h new file mode 100644 index 000000000..28309df45 --- /dev/null +++ b/hardware/sam/cores/sam/RingBuffer.h @@ -0,0 +1,42 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _RING_BUFFER_ +#define _RING_BUFFER_ + +#include + +// Define constants and variables for buffering incoming serial data. We're +// using a ring buffer (I think), in which head is the index of the location +// to which to write the next incoming character and tail is the index of the +// location from which to read. +#define SERIAL_BUFFER_SIZE 64 + +class RingBuffer +{ + public: + uint8_t _aucBuffer[SERIAL_BUFFER_SIZE] ; + int _iHead ; + int _iTail ; + + public: + RingBuffer( void ) ; + void store_char( uint8_t c ) ; +} ; + +#endif /* _RING_BUFFER_ */ diff --git a/hardware/sam/cores/sam/Stream.h b/hardware/sam/cores/sam/Stream.h new file mode 100644 index 000000000..aaa189f4d --- /dev/null +++ b/hardware/sam/cores/sam/Stream.h @@ -0,0 +1,35 @@ +/* + Stream.h - base class for character-based streams. + Copyright (c) 2010 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Stream_h +#define Stream_h + +#include +#include "Print.h" + +class Stream : public Print +{ + public: + virtual int available() = 0; + virtual int read() = 0; + virtual int peek() = 0; + virtual void flush() = 0; +}; + +#endif diff --git a/hardware/sam/cores/sam/Tone.cpp.disabled b/hardware/sam/cores/sam/Tone.cpp.disabled new file mode 100644 index 000000000..20eed3f48 --- /dev/null +++ b/hardware/sam/cores/sam/Tone.cpp.disabled @@ -0,0 +1,601 @@ +/* Tone.cpp + + A Tone Generator Library + + Written by Brett Hagman + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Version Modified By Date Comments +------- ----------- -------- -------- +0001 B Hagman 09/08/02 Initial coding +0002 B Hagman 09/08/18 Multiple pins +0003 B Hagman 09/08/18 Moved initialization from constructor to begin() +0004 B Hagman 09/09/26 Fixed problems with ATmega8 +0005 B Hagman 09/11/23 Scanned prescalars for best fit on 8 bit timers + 09/11/25 Changed pin toggle method to XOR + 09/11/25 Fixed timer0 from being excluded +0006 D Mellis 09/12/29 Replaced objects with functions +0007 M Sproul 10/08/29 Changed #ifdefs from cpu to register +*************************************************/ + +#include +#include +#include "Arduino.h" +#include "pins_arduino.h" + +#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) +#define TCCR2A TCCR2 +#define TCCR2B TCCR2 +#define COM2A1 COM21 +#define COM2A0 COM20 +#define OCR2A OCR2 +#define TIMSK2 TIMSK +#define OCIE2A OCIE2 +#define TIMER2_COMPA_vect TIMER2_COMP_vect +#define TIMSK1 TIMSK +#endif + +// timerx_toggle_count: +// > 0 - duration specified +// = 0 - stopped +// < 0 - infinitely (until stop() method called, or new play() called) + +#if !defined(__AVR_ATmega8__) +volatile long timer0_toggle_count; +volatile uint8_t *timer0_pin_port; +volatile uint8_t timer0_pin_mask; +#endif + +volatile long timer1_toggle_count; +volatile uint8_t *timer1_pin_port; +volatile uint8_t timer1_pin_mask; +volatile long timer2_toggle_count; +volatile uint8_t *timer2_pin_port; +volatile uint8_t timer2_pin_mask; + +#if defined(TIMSK3) +volatile long timer3_toggle_count; +volatile uint8_t *timer3_pin_port; +volatile uint8_t timer3_pin_mask; +#endif + +#if defined(TIMSK4) +volatile long timer4_toggle_count; +volatile uint8_t *timer4_pin_port; +volatile uint8_t timer4_pin_mask; +#endif + +#if defined(TIMSK5) +volatile long timer5_toggle_count; +volatile uint8_t *timer5_pin_port; +volatile uint8_t timer5_pin_mask; +#endif + + +// MLS: This does not make sense, the 3 options are the same +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + +#define AVAILABLE_TONE_PINS 1 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 3, 4, 5, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 255 */ }; + +#elif defined(__AVR_ATmega8__) + +#define AVAILABLE_TONE_PINS 1 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ }; + +#else + +#define AVAILABLE_TONE_PINS 1 + +// Leave timer 0 to last. +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255 */ }; + +#endif + + + +static int8_t toneBegin(uint8_t _pin) +{ + int8_t _timer = -1; + + // if we're already using the pin, the timer should be configured. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + return pgm_read_byte(tone_pin_to_timer_PGM + i); + } + } + + // search for an unused timer. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == 255) { + tone_pins[i] = _pin; + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + break; + } + } + + if (_timer != -1) + { + // Set timer specific stuff + // All timers in CTC mode + // 8 bit timers will require changing prescalar values, + // whereas 16 bit timers are set to either ck/1 or ck/64 prescalar + switch (_timer) + { + #if defined(TCCR0A) && defined(TCCR0B) + case 0: + // 8 bit timer + TCCR0A = 0; + TCCR0B = 0; + bitWrite(TCCR0A, WGM01, 1); + bitWrite(TCCR0B, CS00, 1); + timer0_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer0_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR1A) && defined(TCCR1B) && defined(WGM12) + case 1: + // 16 bit timer + TCCR1A = 0; + TCCR1B = 0; + bitWrite(TCCR1B, WGM12, 1); + bitWrite(TCCR1B, CS10, 1); + timer1_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer1_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR2A) && defined(TCCR2B) + case 2: + // 8 bit timer + TCCR2A = 0; + TCCR2B = 0; + bitWrite(TCCR2A, WGM21, 1); + bitWrite(TCCR2B, CS20, 1); + timer2_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer2_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR3A) && defined(TCCR3B) && defined(TIMSK3) + case 3: + // 16 bit timer + TCCR3A = 0; + TCCR3B = 0; + bitWrite(TCCR3B, WGM32, 1); + bitWrite(TCCR3B, CS30, 1); + timer3_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer3_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR4A) && defined(TCCR4B) && defined(TIMSK4) + case 4: + // 16 bit timer + TCCR4A = 0; + TCCR4B = 0; + #if defined(WGM42) + bitWrite(TCCR4B, WGM42, 1); + #elif defined(CS43) + #warning this may not be correct + // atmega32u4 + bitWrite(TCCR4B, CS43, 1); + #endif + bitWrite(TCCR4B, CS40, 1); + timer4_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer4_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR5A) && defined(TCCR5B) && defined(TIMSK5) + case 5: + // 16 bit timer + TCCR5A = 0; + TCCR5B = 0; + bitWrite(TCCR5B, WGM52, 1); + bitWrite(TCCR5B, CS50, 1); + timer5_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer5_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + } + } + + return _timer; +} + + + +// frequency (in hertz) and duration (in milliseconds). + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration) +{ + uint8_t prescalarbits = 0b001; + long toggle_count = 0; + uint32_t ocr = 0; + int8_t _timer; + + _timer = toneBegin(_pin); + + if (_timer >= 0) + { + // Set the pinMode as OUTPUT + pinMode(_pin, OUTPUT); + + // if we are using an 8 bit timer, scan through prescalars to find the best fit + if (_timer == 0 || _timer == 2) + { + ocr = F_CPU / frequency / 2 - 1; + prescalarbits = 0b001; // ck/1: same for both timers + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 8 - 1; + prescalarbits = 0b010; // ck/8: same for both timers + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 32 - 1; + prescalarbits = 0b011; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = _timer == 0 ? 0b011 : 0b100; + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 128 - 1; + prescalarbits = 0b101; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 256 - 1; + prescalarbits = _timer == 0 ? 0b100 : 0b110; + if (ocr > 255) + { + // can't do any better than /1024 + ocr = F_CPU / frequency / 2 / 1024 - 1; + prescalarbits = _timer == 0 ? 0b101 : 0b111; + } + } + } + } + +#if defined(TCCR0B) + if (_timer == 0) + { + TCCR0B = prescalarbits; + } + else +#endif +#if defined(TCCR2B) + { + TCCR2B = prescalarbits; + } +#else + { + // dummy place holder to make the above ifdefs work + } +#endif + } + else + { + // two choices for the 16 bit timers: ck/1 or ck/64 + ocr = F_CPU / frequency / 2 - 1; + + prescalarbits = 0b001; + if (ocr > 0xffff) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = 0b011; + } + + if (_timer == 1) + { +#if defined(TCCR1B) + TCCR1B = (TCCR1B & 0b11111000) | prescalarbits; +#endif + } +#if defined(TCCR3B) + else if (_timer == 3) + TCCR3B = (TCCR3B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR4B) + else if (_timer == 4) + TCCR4B = (TCCR4B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR5B) + else if (_timer == 5) + TCCR5B = (TCCR5B & 0b11111000) | prescalarbits; +#endif + + } + + + // Calculate the toggle count + if (duration > 0) + { + toggle_count = 2 * frequency * duration / 1000; + } + else + { + toggle_count = -1; + } + + // Set the OCR for the given timer, + // set the toggle count, + // then turn on the interrupts + switch (_timer) + { + +#if defined(OCR0A) && defined(TIMSK0) && defined(OCIE0A) + case 0: + OCR0A = ocr; + timer0_toggle_count = toggle_count; + bitWrite(TIMSK0, OCIE0A, 1); + break; +#endif + + case 1: +#if defined(OCR1A) && defined(TIMSK1) && defined(OCIE1A) + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK1, OCIE1A, 1); +#elif defined(OCR1A) && defined(TIMSK) && defined(OCIE1A) + // this combination is for at least the ATmega32 + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK, OCIE1A, 1); +#endif + break; + +#if defined(OCR2A) && defined(TIMSK2) && defined(OCIE2A) + case 2: + OCR2A = ocr; + timer2_toggle_count = toggle_count; + bitWrite(TIMSK2, OCIE2A, 1); + break; +#endif + +#if defined(TIMSK3) + case 3: + OCR3A = ocr; + timer3_toggle_count = toggle_count; + bitWrite(TIMSK3, OCIE3A, 1); + break; +#endif + +#if defined(TIMSK4) + case 4: + OCR4A = ocr; + timer4_toggle_count = toggle_count; + bitWrite(TIMSK4, OCIE4A, 1); + break; +#endif + +#if defined(OCR5A) && defined(TIMSK5) && defined(OCIE5A) + case 5: + OCR5A = ocr; + timer5_toggle_count = toggle_count; + bitWrite(TIMSK5, OCIE5A, 1); + break; +#endif + + } + } +} + + +// XXX: this function only works properly for timer 2 (the only one we use +// currently). for the others, it should end the tone, but won't restore +// proper PWM functionality for the timer. +void disableTimer(uint8_t _timer) +{ + switch (_timer) + { + case 0: + #if defined(TIMSK0) + TIMSK0 = 0; + #elif defined(TIMSK) + TIMSK = 0; // atmega32 + #endif + break; + +#if defined(TIMSK1) && defined(OCIE1A) + case 1: + bitWrite(TIMSK1, OCIE1A, 0); + break; +#endif + + case 2: + #if defined(TIMSK2) && defined(OCIE2A) + bitWrite(TIMSK2, OCIE2A, 0); // disable interrupt + #endif + #if defined(TCCR2A) && defined(WGM20) + TCCR2A = (1 << WGM20); + #endif + #if defined(TCCR2B) && defined(CS22) + TCCR2B = (TCCR2B & 0b11111000) | (1 << CS22); + #endif + #if defined(OCR2A) + OCR2A = 0; + #endif + break; + +#if defined(TIMSK3) + case 3: + TIMSK3 = 0; + break; +#endif + +#if defined(TIMSK4) + case 4: + TIMSK4 = 0; + break; +#endif + +#if defined(TIMSK5) + case 5: + TIMSK5 = 0; + break; +#endif + } +} + + +void noTone(uint8_t _pin) +{ + int8_t _timer = -1; + + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + tone_pins[i] = 255; + } + } + + disableTimer(_timer); + + digitalWrite(_pin, 0); +} + +#if 0 +#if !defined(__AVR_ATmega8__) +ISR(TIMER0_COMPA_vect) +{ + if (timer0_toggle_count != 0) + { + // toggle the pin + *timer0_pin_port ^= timer0_pin_mask; + + if (timer0_toggle_count > 0) + timer0_toggle_count--; + } + else + { + disableTimer(0); + *timer0_pin_port &= ~(timer0_pin_mask); // keep pin low after stop + } +} +#endif + + +ISR(TIMER1_COMPA_vect) +{ + if (timer1_toggle_count != 0) + { + // toggle the pin + *timer1_pin_port ^= timer1_pin_mask; + + if (timer1_toggle_count > 0) + timer1_toggle_count--; + } + else + { + disableTimer(1); + *timer1_pin_port &= ~(timer1_pin_mask); // keep pin low after stop + } +} +#endif + + +ISR(TIMER2_COMPA_vect) +{ + + if (timer2_toggle_count != 0) + { + // toggle the pin + *timer2_pin_port ^= timer2_pin_mask; + + if (timer2_toggle_count > 0) + timer2_toggle_count--; + } + else + { + // need to call noTone() so that the tone_pins[] entry is reset, so the + // timer gets initialized next time we call tone(). + // XXX: this assumes timer 2 is always the first one used. + noTone(tone_pins[0]); +// disableTimer(2); +// *timer2_pin_port &= ~(timer2_pin_mask); // keep pin low after stop + } +} + + + +//#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +#if 0 + +ISR(TIMER3_COMPA_vect) +{ + if (timer3_toggle_count != 0) + { + // toggle the pin + *timer3_pin_port ^= timer3_pin_mask; + + if (timer3_toggle_count > 0) + timer3_toggle_count--; + } + else + { + disableTimer(3); + *timer3_pin_port &= ~(timer3_pin_mask); // keep pin low after stop + } +} + +ISR(TIMER4_COMPA_vect) +{ + if (timer4_toggle_count != 0) + { + // toggle the pin + *timer4_pin_port ^= timer4_pin_mask; + + if (timer4_toggle_count > 0) + timer4_toggle_count--; + } + else + { + disableTimer(4); + *timer4_pin_port &= ~(timer4_pin_mask); // keep pin low after stop + } +} + +ISR(TIMER5_COMPA_vect) +{ + if (timer5_toggle_count != 0) + { + // toggle the pin + *timer5_pin_port ^= timer5_pin_mask; + + if (timer5_toggle_count > 0) + timer5_toggle_count--; + } + else + { + disableTimer(5); + *timer5_pin_port &= ~(timer5_pin_mask); // keep pin low after stop + } +} + +#endif diff --git a/hardware/sam/cores/sam/Tone.h b/hardware/sam/cores/sam/Tone.h new file mode 100644 index 000000000..5789b082d --- /dev/null +++ b/hardware/sam/cores/sam/Tone.h @@ -0,0 +1,23 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _WIRING_TONE_ +#define _WIRING_TONE_ + + +#endif /* _WIRING_TONE_ */ diff --git a/hardware/sam/cores/sam/UARTClass.cpp b/hardware/sam/cores/sam/UARTClass.cpp new file mode 100644 index 000000000..2ef23a7e1 --- /dev/null +++ b/hardware/sam/cores/sam/UARTClass.cpp @@ -0,0 +1,136 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include +#include +#include +#include "UARTClass.h" + +// Constructors //////////////////////////////////////////////////////////////// + +UARTClass::UARTClass( Uart* pUart, IRQn_Type dwIrq, uint32_t dwId, RingBuffer* pRx_buffer ) +{ + _rx_buffer = pRx_buffer ; + + _pUart=pUart ; + _dwIrq=dwIrq ; + _dwId=dwId ; +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void UARTClass::begin( const uint32_t dwBaudRate ) +{ + // Configure PMC + PMC_EnablePeripheral( _dwId ) ; + + // Disable PDC channel + _pUart->UART_PTCR = UART_PTCR_RXTDIS | UART_PTCR_TXTDIS ; + + // Reset and disable receiver and transmitter + _pUart->UART_CR = UART_CR_RSTRX | UART_CR_RSTTX | UART_CR_RXDIS | UART_CR_TXDIS ; + + // Configure mode + _pUart->UART_MR = UART_MR_PAR_NO | UART_MR_CHMODE_NORMAL ; + + // Configure baudrate (asynchronous, no oversampling) + _pUart->UART_BRGR = (SystemCoreClock / dwBaudRate) >> 4 ; + + // Configure interrupts + _pUart->UART_IDR = 0xFFFFFFFF; + _pUart->UART_IER = UART_IER_RXRDY | UART_IER_OVRE | UART_IER_FRAME; + + // Enable UART interrupt in NVIC + NVIC_EnableIRQ(_dwIrq); + + // Enable receiver and transmitter + _pUart->UART_CR = UART_CR_RXEN | UART_CR_TXEN ; +} + +void UARTClass::end( void ) +{ + // clear any received data + _rx_buffer->_iHead = _rx_buffer->_iTail ; + + // Disable UART interrupt in NVIC + NVIC_DisableIRQ( _dwIrq ) ; + + // Wait for any outstanding data to be sent + flush(); + + PMC_DisablePeripheral( _dwId ) ; +} + +int UARTClass::available( void ) +{ + return (uint32_t)(SERIAL_BUFFER_SIZE + _rx_buffer->_iHead - _rx_buffer->_iTail) % SERIAL_BUFFER_SIZE ; +} + +int UARTClass::peek( void ) +{ + if ( _rx_buffer->_iHead == _rx_buffer->_iTail ) + return -1 ; + + return _rx_buffer->_aucBuffer[_rx_buffer->_iTail] ; +} + +int UARTClass::read( void ) +{ + // if the head isn't ahead of the tail, we don't have any characters + if ( _rx_buffer->_iHead == _rx_buffer->_iTail ) + return -1 ; + + uint8_t uc = _rx_buffer->_aucBuffer[_rx_buffer->_iTail] ; + _rx_buffer->_iTail = (unsigned int)(_rx_buffer->_iTail + 1) % SERIAL_BUFFER_SIZE ; + return uc ; +} + +void UARTClass::flush( void ) +{ + // Wait for transmission to complete + while ((_pUart->UART_SR & UART_SR_TXRDY) != UART_SR_TXRDY) + ; +} + +void UARTClass::write( const uint8_t uc_data ) +{ + // Check if the transmitter is ready + while ((_pUart->UART_SR & UART_SR_TXRDY) != UART_SR_TXRDY) + ; + + // Send character + _pUart->UART_THR = uc_data; +} + +void UARTClass::IrqHandler( void ) +{ + uint32_t status = _pUart->UART_SR; + + // Did we receive data ? + if ((status & UART_SR_RXRDY) == UART_SR_RXRDY) + _rx_buffer->store_char(_pUart->UART_RHR); + + // Acknowledge errors + if ((status & UART_SR_OVRE) == UART_SR_OVRE || + (status & UART_SR_FRAME) == UART_SR_FRAME) + { + // TODO: error reporting outside ISR + _pUart->UART_CR |= UART_CR_RSTSTA; + } +} + diff --git a/hardware/sam/cores/sam/UARTClass.h b/hardware/sam/cores/sam/UARTClass.h new file mode 100644 index 000000000..0ce9d714c --- /dev/null +++ b/hardware/sam/cores/sam/UARTClass.h @@ -0,0 +1,55 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _UART_CLASS_ +#define _UART_CLASS_ + +#include "Arduino.h" + +class UARTClass : public HardwareSerial +{ + protected: + RingBuffer *_rx_buffer ; + + protected: + Uart* _pUart ; + IRQn_Type _dwIrq ; + uint32_t _dwId ; + + public: + UARTClass( Uart* pUart, IRQn_Type dwIrq, uint32_t dwId, RingBuffer* pRx_buffer ) ; + + void begin( const uint32_t dwBaudRate ) ; + void end( void ) ; + int available( void ) ; + int peek( void ) ; + int read( void ) ; + void flush( void ) ; + void write( const uint8_t c ) ; + + void IrqHandler( void ) ; + +#if defined __GNUC__ /* GCC CS3 */ + using Print::write ; // pull in write(str) and write(buf, size) from Print +#elif defined __ICCARM__ /* IAR Ewarm 5.41+ */ +// virtual void write( const char *str ) ; +// virtual void write( const uint8_t *buffer, size_t size ) ; +#endif +}; + +#endif // _UART_CLASS_ diff --git a/hardware/sam/cores/sam/USARTClass.cpp b/hardware/sam/cores/sam/USARTClass.cpp new file mode 100644 index 000000000..a1b511a72 --- /dev/null +++ b/hardware/sam/cores/sam/USARTClass.cpp @@ -0,0 +1,137 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include +#include +#include +#include "USARTClass.h" + +// Constructors //////////////////////////////////////////////////////////////// + +USARTClass::USARTClass( Usart* pUsart, IRQn_Type dwIrq, uint32_t dwId, RingBuffer* pRx_buffer ) +{ + _rx_buffer = pRx_buffer ; + + _pUsart=pUsart ; + _dwIrq=dwIrq ; + _dwId=dwId ; +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void USARTClass::begin( const uint32_t dwBaudRate ) +{ + // Configure PMC + PMC_EnablePeripheral( _dwId ) ; + + // Disable PDC channel + _pUsart->US_PTCR = US_PTCR_RXTDIS | US_PTCR_TXTDIS ; + + // Reset and disable receiver and transmitter + _pUsart->US_CR = US_CR_RSTRX | US_CR_RSTTX | US_CR_RXDIS | US_CR_TXDIS ; + + // Configure mode + _pUsart->US_MR = US_MR_USART_MODE_NORMAL | US_MR_USCLKS_MCK | US_MR_CHRL_8_BIT | US_MR_PAR_NO | + US_MR_NBSTOP_1_BIT | US_MR_CHMODE_NORMAL; + + // Configure baudrate, asynchronous no oversampling + _pUsart->US_BRGR = (SystemCoreClock / dwBaudRate) / 16 ; + + // Configure interrupts + _pUsart->US_IDR = 0xFFFFFFFF; + _pUsart->US_IER = US_IER_RXRDY | US_IER_OVRE | US_IER_FRAME; + + // Enable UART interrupt in NVIC + NVIC_EnableIRQ( _dwIrq ) ; + + // Enable receiver and transmitter + _pUsart->US_CR = US_CR_RXEN | US_CR_TXEN ; +} + +void USARTClass::end( void ) +{ + // clear any received data + _rx_buffer->_iHead = _rx_buffer->_iTail ; + + // Disable UART interrupt in NVIC + NVIC_DisableIRQ( _dwIrq ) ; + + // Wait for any outstanding data to be sent + flush(); + + PMC_DisablePeripheral( _dwId ) ; +} + +int USARTClass::available( void ) +{ + return (uint32_t)(SERIAL_BUFFER_SIZE + _rx_buffer->_iHead - _rx_buffer->_iTail) % SERIAL_BUFFER_SIZE ; +} + +int USARTClass::peek( void ) +{ + if ( _rx_buffer->_iHead == _rx_buffer->_iTail ) + return -1 ; + + return _rx_buffer->_aucBuffer[_rx_buffer->_iTail] ; +} + +int USARTClass::read( void ) +{ + // if the head isn't ahead of the tail, we don't have any characters + if ( _rx_buffer->_iHead == _rx_buffer->_iTail ) + return -1 ; + + uint8_t uc = _rx_buffer->_aucBuffer[_rx_buffer->_iTail] ; + _rx_buffer->_iTail = (unsigned int)(_rx_buffer->_iTail + 1) % SERIAL_BUFFER_SIZE ; + return uc ; +} + +void USARTClass::flush( void ) +{ + // Wait for transmission to complete + while ((_pUsart->US_CSR & US_CSR_TXRDY) != US_CSR_TXRDY) + ; +} + +void USARTClass::write( const uint8_t uc_data ) +{ + // Check if the transmitter is ready + while ((_pUsart->US_CSR & US_CSR_TXRDY) != US_CSR_TXRDY) + ; + + // Send character + _pUsart->US_THR = uc_data ; +} + +void USARTClass::IrqHandler( void ) +{ + uint32_t status = _pUsart->US_CSR; + + // Did we receive data ? + if ((status & US_CSR_RXRDY) == US_CSR_RXRDY) + _rx_buffer->store_char( _pUsart->US_RHR ) ; + + // Acknowledge errors + if ((status & US_CSR_OVRE) == US_CSR_OVRE || + (status & US_CSR_FRAME) == US_CSR_FRAME) + { + // TODO: error reporting outside ISR + _pUsart->US_CR |= US_CR_RSTSTA; + } +} + diff --git a/hardware/sam/cores/sam/USARTClass.h b/hardware/sam/cores/sam/USARTClass.h new file mode 100644 index 000000000..1b85b27b6 --- /dev/null +++ b/hardware/sam/cores/sam/USARTClass.h @@ -0,0 +1,55 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _USART_CLASS_ +#define _USART_CLASS_ + +#include "Arduino.h" + +class USARTClass : public HardwareSerial +{ + protected: + RingBuffer *_rx_buffer ; + + protected: + Usart* _pUsart ; + IRQn_Type _dwIrq ; + uint32_t _dwId ; + + public: + USARTClass( Usart* pUsart, IRQn_Type dwIrq, uint32_t dwId, RingBuffer* pRx_buffer ) ; + + void begin( const uint32_t dwBaudRate ) ; + void end( void ) ; + int available( void ) ; + int peek( void ) ; + int read( void ) ; + void flush( void ) ; + void write( const uint8_t c ) ; + + void IrqHandler( void ) ; + +#if defined __GNUC__ /* GCC CS3 */ + using Print::write ; // pull in write(str) and write(buf, size) from Print +#elif defined __ICCARM__ /* IAR Ewarm 5.41+ */ +// virtual void write( const char *str ) ; +// virtual void write( const uint8_t *buffer, size_t size ) ; +#endif +}; + +#endif // _USART_CLASS_ diff --git a/hardware/sam/cores/sam/USBAPI.h b/hardware/sam/cores/sam/USBAPI.h new file mode 100644 index 000000000..fdf4cd4fd --- /dev/null +++ b/hardware/sam/cores/sam/USBAPI.h @@ -0,0 +1,166 @@ + + +#ifndef __USBAPI__ +#define __USBAPI__ + +#if defined(USBCON) + +//================================================================================ +//================================================================================ +// USB + +class USB_ +{ +public: + USB_(); + bool configured(); + + void attach(); + void detach(); // Serial port goes down too... + void poll(); +}; +extern USB_ USB; + +//================================================================================ +//================================================================================ +// Serial over CDC (Serial1 is the physical port) + +class Serial_ : public Stream +{ +public: + void begin(uint16_t baud_count); + void end(void); + + virtual int available(void); + virtual int peek(void); + virtual int read(void); + virtual void flush(void); + virtual void write(uint8_t); +}; +extern Serial_ Serial; + +//================================================================================ +//================================================================================ +// Mouse + +#define MOUSE_LEFT 1 +#define MOUSE_RIGHT 2 +#define MOUSE_MIDDLE 4 +#define MOUSE_ALL (MOUSE_LEFT | MOUSE_RIGHT | MOUSE_MIDDLE) + +class Mouse_ +{ +private: + uint8_t _buttons; + void buttons(uint8_t b); +public: + Mouse_(); + void click(uint8_t b = MOUSE_LEFT); + void move(signed char x, signed char y, signed char wheel = 0); + void press(uint8_t b = MOUSE_LEFT); // press LEFT by default + void release(uint8_t b = MOUSE_LEFT); // release LEFT by default + bool isPressed(uint8_t b = MOUSE_ALL); // check all buttons by default +}; +extern Mouse_ Mouse; + +//================================================================================ +//================================================================================ +// Keyboard + +#define KEY_MODIFIER_LEFT_CTRL 0x01 +#define KEY_MODIFIER_LEFT_SHIFT 0x02 +#define KEY_MODIFIER_LEFT_ALT 0x04 +#define KEY_MODIFIER_LEFT_GUI 0x08 +#define KEY_MODIFIER_RIGHT_CTRL 0x010 +#define KEY_MODIFIER_RIGHT_SHIFT 0x020 +#define KEY_MODIFIER_RIGHT_ALT 0x040 +#define KEY_MODIFIER_RIGHT_GUI 0x080 + +// Low level key report: up to 6 keys and shift, ctrl etc at once +typedef struct +{ + uint8_t modifiers; + uint8_t reserved; + uint8_t keys[6]; +} KeyReport; + +// Map a character into a key report +// Called from Print to map text to keycodes +class KeyMap +{ +public: + virtual void charToKey(int c, KeyReport* keyReport) = 0; +}; + +// +class Keyboard_ : public Print +{ +private: + KeyMap* _keyMap; + void sendReport(KeyReport* keys); + void setKeyMap(KeyMap* keyMap); +public: + Keyboard_(); + virtual void write(uint8_t); +}; +extern Keyboard_ Keyboard; + +//================================================================================ +//================================================================================ +// Low level API + +typedef struct +{ + uint8_t bmRequestType; + uint8_t bRequest; + uint8_t wValueL; + uint8_t wValueH; + uint16_t wIndex; + uint16_t wLength; +} Setup; + +//================================================================================ +//================================================================================ +// HID 'Driver' + +int HID_GetInterface(uint8_t* interfaceNum); +int HID_GetDescriptor(int i); +bool HID_Setup(Setup& setup); +void HID_SendReport(uint8_t id, const void* data, int len); + +//================================================================================ +//================================================================================ +// MSC 'Driver' + +int MSC_GetInterface(uint8_t* interfaceNum); +int MSC_GetDescriptor(int i); +bool MSC_Setup(Setup& setup); +bool MSC_Data(uint8_t rx,uint8_t tx); + +//================================================================================ +//================================================================================ +// CSC 'Driver' + +int CDC_GetInterface(uint8_t* interfaceNum); +int CDC_GetDescriptor(int i); +bool CDC_Setup(Setup& setup); + +//================================================================================ +//================================================================================ + +#define TRANSFER_PGM 0x80 +#define TRANSFER_RELEASE 0x40 +#define TRANSFER_ZERO 0x20 + +int USB_SendControl(uint8_t flags, const void* d, int len); +int USB_RecvControl(void* d, int len); + +uint8_t USB_Available(uint8_t ep); +int USB_Send(uint8_t ep, const void* data, int len); // blocking +int USB_Recv(uint8_t ep, void* data, int len); // non-blocking +int USB_Recv(uint8_t ep); // non-blocking +void USB_Flush(uint8_t ep); + +#endif + +#endif /* if defined(USBCON) */ diff --git a/hardware/sam/cores/sam/USBCore.cpp b/hardware/sam/cores/sam/USBCore.cpp new file mode 100644 index 000000000..49cfe1d4c --- /dev/null +++ b/hardware/sam/cores/sam/USBCore.cpp @@ -0,0 +1,910 @@ + + +/* Copyright (c) 2010, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ +#define USBCON +#include "Platform.h" +#include "USBAPI.h" +#include "USBDesc.h" +#include "USBCore.h" + +#if 0 + +#if defined(USBCON) + +#define NUM_IT_MAX 3 + +#define EP_SINGLE_64 0x32 // EP0 +#define EP_DOUBLE_64 0x36 // Other endpoints + + +// Endpoiont 0: +#define EP_TYPE_CONTROL UDPHS_EPTCFG_EPT_SIZE_64 \ + | UDPHS_EPTCFG_EPT_TYPE_CTRL8 \ + | UDPHS_EPTCFG_BK_NUMBER_1 +#ifdef CDC_ENABLED +#define EP_TYPE_BULK_IN UDPHS_EPTCFG_EPT_SIZE_512 \ + | UDPHS_EPTCFG_EPT_DIR \ + | UDPHS_EPTCFG_EPT_TYPE_BULK \ + | UDPHS_EPTCFG_BK_NUMBER_2 +#define EP_TYPE_BULK_OUT UDPHS_EPTCFG_EPT_SIZE_512 \ + | UDPHS_EPTCFG_EPT_TYPE_BULK \ + | UDPHS_EPTCFG_BK_NUMBER_2 +#define EP_TYPE_INTERRUPT_IN UDPHS_EPTCFG_EPT_SIZE_64 \ + | UDPHS_EPTCFG_EPT_DIR \ + | UDPHS_EPTCFG_EPT_TYPE_INT \ + | UDPHS_EPTCFG_BK_NUMBER_2 +#endif + +#ifdef HID_ENABLED +#define EP_TYPE_INTERRUPT_IN_HID UDPHS_EPTCFG_EPT_SIZE_64 \ + | UDPHS_EPTCFG_EPT_DIR \ + | UDPHS_EPTCFG_EPT_TYPE_INT \ + | UDPHS_EPTCFG_BK_NUMBER_2 +#endif + +#define EP_TYPE_INTERRUPT_OUT UDPHS_EPTCFG_EPT_SIZE_64 \ + | UDPHS_EPTCFG_EPT_TYPE_INT \ + | UDPHS_EPTCFG_EPT_TYPE_INT \ + | UDPHS_EPTCFG_BK_NUMBER_1 +#define EP_TYPE_ISOCHRONOUS_IN UDPHS_EPTCFG_EPT_SIZE_1024 \ + | UDPHS_EPTCFG_EPT_DIR \ + | UDPHS_EPTCFG_EPT_TYPE_ISO \ + | UDPHS_EPTCFG_BK_NUMBER_3 +#define EP_TYPE_ISOCHRONOUS_OUT UDPHS_EPTCFG_EPT_SIZE_1024 \ + | UDPHS_EPTCFG_EPT_TYPE_ISO \ + | UDPHS_EPTCFG_BK_NUMBER_3 + +extern const u8 _initEndpoints[] ; +const u8 _initEndpoints[] = +{ + 0, + +#ifdef CDC_ENABLED + EP_TYPE_BULK_IN, // CDC_ENDPOINT_IN + EP_TYPE_BULK_OUT, // CDC_ENDPOINT_OUT + EP_TYPE_INTERRUPT_IN, // CDC_ENDPOINT_ACM +#endif + +#ifdef HID_ENABLED + EP_TYPE_INTERRUPT_IN // HID_ENDPOINT_INT +#endif +}; + +/** Pulse generation counters to keep track of the number of milliseconds remaining for each pulse type */ +#define TX_RX_LED_PULSE_MS 100 +volatile u8 TxLEDPulse; /**< Milliseconds remaining for data Tx LED pulse */ +volatile u8 RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse */ + +//================================================================== +//================================================================== + +extern const u16 STRING_LANGUAGE[] ; +extern const u16 STRING_IPRODUCT[] ; +extern const u16 STRING_IMANUFACTURER[] ; +extern const DeviceDescriptor USB_DeviceDescriptor ; +extern const DeviceDescriptor USB_DeviceDescriptorA ; + +const u16 STRING_LANGUAGE[2] = { + (3<<8) | (2+2), + 0x0409 // English +}; + +const u16 STRING_IPRODUCT[17] = { + (3<<8) | (2+2*16), +#if USB_PID == USB_PID_LEONARDO + 'A','r','d','u','i','n','o',' ','L','e','o','n','a','r','d','o' +#elif USB_PID == USB_PID_MICRO + 'A','r','d','u','i','n','o',' ','M','i','c','r','o',' ',' ',' ' +#elif USB_PID == ARDUINO_MODEL_USB_PID + 'A','r','d','u','i','n','o',' ','D','u','e',' ',' ',' ',' ',' ' +#else +#error "Need an USB PID" +#endif +}; + +const u16 STRING_IMANUFACTURER[12] = { + (3<<8) | (2+2*11), + 'A','r','d','u','i','n','o',' ','L','L','C' +}; + +#ifdef CDC_ENABLED +#define DEVICE_CLASS 0x02 +#else +#define DEVICE_CLASS 0x00 +#endif + +// DEVICE DESCRIPTOR +const DeviceDescriptor USB_DeviceDescriptor = + D_DEVICE(0x00,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1); + +const DeviceDescriptor USB_DeviceDescriptorA = + D_DEVICE(DEVICE_CLASS,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1); + +//================================================================== +//================================================================== + +volatile u8 _usbConfiguration = 0; +// Global variable for endpoint number +unsigned int NumEndpoint=0; + + +#include "../../../system/libsam/cmsis/sam3u/include/sam3u.h" + +#ifndef TXLED1 +#define TXLED0 +#define RXLED0 +#define TXLED1 +#define RXLED1 +#endif + + +/// Max size of the FMA FIFO +#define EPT_VIRTUAL_SIZE 16384 +#define SHIFT_INTERUPT 8 + +static inline void WaitIN(void) +{ +// while (!(UEINTX & (1<UDPHS_EPT[0].UDPHS_EPTSTA & UDPHS_EPTSTA_TX_PK_RDY)); +} + +static inline void ClearIN(void) +{ +// UEINTX = ~(1<UDPHS_EPT[NumEndpoint].UDPHS_EPTCLRSTA = UDPHS_EPTCLRSTA_TX_COMPLT; +} + +static inline void WaitOUT(void) +{ +// while (!(UEINTX & (1<UDPHS_EPT[NumEndpoint].UDPHS_EPTSTA & UDPHS_EPTSTA_RX_BK_RDY)); +} + +static inline u8 WaitForINOrOUT() +{ +// while (!(UEINTX & ((1<UDPHS_EPT[NumEndpoint].UDPHS_EPTSTA & (UDPHS_EPTSTA_RX_BK_RDY | UDPHS_EPTSTA_TX_PK_RDY))); + return (UDPHS->UDPHS_EPT[NumEndpoint].UDPHS_EPTSTA & UDPHS_EPTSTA_RX_BK_RDY) == 0; +} + +static inline void ClearOUT(void) +{ +// UEINTX = ~(1<UDPHS_EPT[NumEndpoint].UDPHS_EPTCLRSTA = UDPHS_EPTCLRSTA_RX_BK_RDY; +} + +/* +static void UDPHS_ClearRxFlag( unsigned char bEndpoint ) +{ + UDPHS->UDPHS_EPT[NumEndpoint].UDPHS_EPTCLRSTA = UDPHS_EPTCLRSTA_RX_BK_RDY; +} +*/ + +#define UDPHS_EPTFIFO (0x20180000) // (UDPHS_EPTFIFO) Base Address + +static void Recv(volatile u8* data, u8 count) +{ + u8 *pFifo; + + pFifo = (u8*)((u32 *)UDPHS_EPTFIFO + (EPT_VIRTUAL_SIZE * NumEndpoint)); + + while (count--) + *data++ = pFifo[0]; // UEDATX; + + RXLED1; // light the RX LED + RxLEDPulse = TX_RX_LED_PULSE_MS; +} + + +static inline u8 Recv8() +{ + u8 *pFifo; + + RXLED1; // light the RX LED + RxLEDPulse = TX_RX_LED_PULSE_MS; + + pFifo = (u8*)((u32 *)UDPHS_EPTFIFO + (EPT_VIRTUAL_SIZE * NumEndpoint)); + +// return UEDATX; + return (pFifo[0]); +} + +static inline void Send8(u8 d) +{ + u8 *pFifo; + pFifo = (u8*)((u32 *)UDPHS_EPTFIFO + (EPT_VIRTUAL_SIZE * NumEndpoint)); +// UEDATX = d; + pFifo[0] =d; +} + +static inline void SetEP(u8 ep) +{ +// UENUM = ep; + NumEndpoint = ep & 7; +} + +static inline u16 FifoByteCount() +{ +// return UEBCLX; + // SAM3X + //return ((UOTGHS->UOTGHS_DEVEPTISR[ep] & UOTGHS_DEVEPTISR_BYCT_Msk) >> UOTGHS_DEVEPTISR_BYCT_Pos); + // SAM3U //AT91C_UDPHS_BYTE_COUNT (0x7FF << 20) + return ((UDPHS->UDPHS_EPT[NumEndpoint].UDPHS_EPTSTA & (0x7FF << 20)) >> 20); +} + +static inline u8 ReceivedSetupInt() +{ +// return UEINTX & (1<UDPHS_EPT[NumEndpoint].UDPHS_EPTSTA & UDPHS_EPTSTA_RX_SETUP) ); +} + +static inline void ClearSetupInt() +{ +// UEINTX = ~((1<UDPHS_EPT[NumEndpoint].UDPHS_EPTCLRSTA = UDPHS_EPTSTA_RX_SETUP | UDPHS_EPTCLRSTA_RX_BK_RDY | UDPHS_EPTCLRSTA_TX_COMPLT; +} + +static inline void Stall() +{ +// UECONX = (1<UDPHS_EPT[NumEndpoint].UDPHS_EPTSETSTA = UDPHS_EPTSETSTA_FRCESTALL; +} + +static inline u8 ReadWriteAllowed() +{ + //return UEINTX & (1<UDPHS_EPT[NumEndpoint].UDPHS_EPTSTA & UDPHS_EPTSTA_FRCESTALL)); +} + +static inline u8 FifoFree() +{ +// return UEINTX & (1<UDPHS_EPT[NumEndpoint].UDPHS_EPTSTA & UDPHS_EPTSTA_TX_PK_RDY )); +} + +//static inline void ReleaseRX() +//{ +// UEINTX = 0x6B; // FIFOCON=0 NAKINI=1 RWAL=1 NAKOUTI=0 RXSTPI=1 RXOUTI=0 STALLEDI=1 TXINI=1 +//} + +//static inline void ReleaseTX() +//{ +// UEINTX = 0x3A; // FIFOCON=0 NAKINI=0 RWAL=1 NAKOUTI=1 RXSTPI=1 RXOUTI=0 STALLEDI=1 TXINI=0 +//} +#define UDFNUML ((UDPHS->UDPHS_FNUM & UDPHS_FNUM_FRAME_NUMBER_Msk)>>3) + +static inline u8 FrameNumber() +{ + return UDFNUML; +} + +//================================================================== +//================================================================== + +u8 USBGetConfiguration(void) +{ + return _usbConfiguration; +} + +#define USB_RECV_TIMEOUT + +// Number of bytes, assumes a rx endpoint +u8 USB_Available(u8 ep) +{ + SetEP(ep); + return FifoByteCount(); +} + +// Non Blocking receive +// Return number of bytes read +int USB_Recv(u8 ep, void* d, int len) +{ + if (!_usbConfiguration || len < 0) + return -1; + + SetEP(ep); + u8 n = FifoByteCount(); + len = min(n,len); + n = len; + u8* dst = (u8*)d; + while (n--) + *dst++ = Recv8(); +// if (len && !FifoByteCount()) // release empty buffer +// ReleaseRX(); + + return len; +} + +// Recv 1 byte if ready +int USB_Recv(u8 ep) +{ + u8 c; + if (USB_Recv(ep,&c,1) != 1) + return -1; + return c; +} + +// Space in send EP +u8 USB_SendSpace(u8 ep) +{ + SetEP(ep); + if (!ReadWriteAllowed()) + return 0; + return 64 - FifoByteCount(); +} + +// Blocking Send of data to an endpoint +int USB_Send(u8 ep, const void* d, int len) +{ + if (!_usbConfiguration) + return -1; + + int r = len; + const u8* data = (const u8*)d; + u8 zero = ep & TRANSFER_ZERO; + u8 timeout = 250; // 250ms timeout on send? TODO + while (len) + { + u8 n = USB_SendSpace(ep); + if (n == 0) + { + if (!(--timeout)) + return -1; + delay(1); + continue; + } + + if (n > len) + n = len; + len -= n; + { + SetEP(ep); + if (ep & TRANSFER_ZERO) + { + while (n--) + Send8(0); + } + else if (ep & TRANSFER_PGM) + { + while (n--) + Send8(*data++); + } + else + { + while (n--) + Send8(*data++); + } +// if (!ReadWriteAllowed() || ((len == 0) && (ep & TRANSFER_RELEASE))) // Release full buffer +// ReleaseTX(); + } + } + TXLED1; // light the TX LED + TxLEDPulse = TX_RX_LED_PULSE_MS; + return r; +} + + +//static +//void InitEP(u8 index, u8 type, u8 size) +//{ +// UENUM = index; +// UECONX = 1; +// UECFG0X = type; +// UECFG1X = size; +//} + + +static +void InitEndpoints() +{ + for (u8 i = 1; i < sizeof(_initEndpoints); i++) + { + // Reset Endpoint Fifos + UDPHS->UDPHS_EPT[i].UDPHS_EPTCLRSTA = UDPHS_EPTCLRSTA_TOGGLESQ | UDPHS_EPTCLRSTA_FRCESTALL; + UDPHS->UDPHS_EPTRST = 1<UDPHS_EPT[i].UDPHS_EPTCFG = _initEndpoints[i]; + + while( (signed int)UDPHS_EPTCFG_EPT_MAPD != (signed int)((UDPHS->UDPHS_EPT[i].UDPHS_EPTCFG) & (unsigned int)UDPHS_EPTCFG_EPT_MAPD) ) + ; + UDPHS->UDPHS_EPT[i].UDPHS_EPTCTLENB = UDPHS_EPTCTLENB_EPT_ENABL; + + // UECFG1X = EP_DOUBLE_64; + } +///\// UERST = 0x7E; // And reset them +///\// UERST = 0; +} + +// Handle CLASS_INTERFACE requests +static +bool ClassInterfaceRequest(Setup& setup) +{ + u8 i = setup.wIndex; + +#ifdef CDC_ENABLED + if (CDC_ACM_INTERFACE == i) + return CDC_Setup(setup); +#endif + +#ifdef HID_ENABLED + if (HID_INTERFACE == i) + return HID_Setup(setup); +#endif + return false; +} + +int _cmark; +int _cend; +void InitControl(int end) +{ + SetEP(0); + UDPHS->UDPHS_EPT[0].UDPHS_EPTCFG = _initEndpoints[0]; + while( (signed int)UDPHS_EPTCFG_EPT_MAPD != (signed int)((UDPHS->UDPHS_EPT[0].UDPHS_EPTCFG) & (unsigned int)UDPHS_EPTCFG_EPT_MAPD) ) + ; + UDPHS->UDPHS_EPT[0].UDPHS_EPTCTLENB = UDPHS_EPTCTLENB_RX_BK_RDY + | UDPHS_EPTCTLENB_RX_SETUP + | UDPHS_EPTCTLENB_EPT_ENABL; + + _cmark = 0; + _cend = end; +} + +static +bool SendControl(u8 d) +{ + if (_cmark < _cend) + { + if (!WaitForINOrOUT()) + return false; + Send8(d); + if (!((_cmark + 1) & 0x3F)) + ClearIN(); // Fifo is full, release this packet + } + _cmark++; + return true; +}; + +// Clipped by _cmark/_cend +int USB_SendControl(u8 flags, const void* d, int len) +{ + int sent = len; + const u8* data = (const u8*)d; + bool pgm = flags & TRANSFER_PGM; + while (len--) + { + u8 c = pgm ? *data++ : *data++; + if (!SendControl(c)) + return -1; + } + return sent; +} + +// Does not timeout or cross fifo boundaries +// Will only work for transfers <= 64 bytes +// TODO +int USB_RecvControl(void* d, int len) +{ + WaitOUT(); + Recv((u8*)d,len); + ClearOUT(); + return len; +} + +int SendInterfaces() +{ + int total = 0; + u8 interfaces = 0; + +#ifdef CDC_ENABLED + total = CDC_GetInterface(&interfaces); +#endif + +#ifdef HID_ENABLED + total += HID_GetInterface(&interfaces); +#endif + + return interfaces; +} + +// Construct a dynamic configuration descriptor +// This really needs dynamic endpoint allocation etc +// TODO +static +bool SendConfiguration(int maxlen) +{ + // Count and measure interfaces + InitControl(0); + int interfaces = SendInterfaces(); + ConfigDescriptor config = D_CONFIG(_cmark + sizeof(ConfigDescriptor),interfaces); + + // Now send them + InitControl(maxlen); + USB_SendControl(0,&config,sizeof(ConfigDescriptor)); + SendInterfaces(); + return true; +} + +u8 _cdcComposite = 0; + +static +bool SendDescriptor(Setup& setup) +{ + u8 t = setup.wValueH; + if (USB_CONFIGURATION_DESCRIPTOR_TYPE == t) + return SendConfiguration(setup.wLength); + + InitControl(setup.wLength); +#ifdef HID_ENABLED + if (HID_REPORT_DESCRIPTOR_TYPE == t) + return HID_GetDescriptor(t); +#endif + + u8 desc_length = 0; + const u8* desc_addr = 0; + if (USB_DEVICE_DESCRIPTOR_TYPE == t) + { + if (setup.wLength == 8) + _cdcComposite = 1; + desc_addr = _cdcComposite ? (const u8*)&USB_DeviceDescriptorA : (const u8*)&USB_DeviceDescriptor; + } + else if (USB_STRING_DESCRIPTOR_TYPE == t) + { + if (setup.wValueL == 0) + desc_addr = (const u8*)&STRING_LANGUAGE; + else if (setup.wValueL == IPRODUCT) + desc_addr = (const u8*)&STRING_IPRODUCT; + else if (setup.wValueL == IMANUFACTURER) + desc_addr = (const u8*)&STRING_IMANUFACTURER; + else + return false; + } + + if (desc_addr == 0) + return false; + if (desc_length == 0) + desc_length = *desc_addr; + + USB_SendControl(TRANSFER_PGM,desc_addr,desc_length); + return true; +} + +// Endpoint 0 interrupt +//ISR(USB_COM_vect) +void USB_ISR() +{ + SetEP(0); + if (!ReceivedSetupInt()) + return; + + Setup setup; + Recv((u8*)&setup,8); + ClearSetupInt(); + + u8 requestType = setup.bmRequestType; + if (requestType & REQUEST_DEVICETOHOST) + WaitIN(); + else + ClearIN(); + + bool ok = true; + if (REQUEST_STANDARD == (requestType & REQUEST_TYPE)) + { + // Standard Requests + u8 r = setup.bRequest; + if (GET_STATUS == r) + { + Send8(0); // TODO + Send8(0); + } + else if (CLEAR_FEATURE == r) + { + } + else if (SET_FEATURE == r) + { + } + else if (SET_ADDRESS == r) + { + WaitIN(); + UDPHS->UDPHS_CTRL |= UDPHS_CTRL_DEV_ADDR(setup.wValueL) | UDPHS_CTRL_FADDR_EN; + } + else if (GET_DESCRIPTOR == r) + { + ok = SendDescriptor(setup); + } + else if (SET_DESCRIPTOR == r) + { + ok = false; + } + else if (GET_CONFIGURATION == r) + { + Send8(1); + } + else if (SET_CONFIGURATION == r) + { + if (REQUEST_DEVICE == (requestType & REQUEST_RECIPIENT)) + { + InitEndpoints(); + _usbConfiguration = setup.wValueL; + } else + ok = false; + } + else if (GET_INTERFACE == r) + { + } + else if (SET_INTERFACE == r) + { + } + } + else + { + InitControl(setup.wLength); // Max length of transfer + ok = ClassInterfaceRequest(setup); + } + + if (ok) + ClearIN(); + else + { + Stall(); + } +} + +void USB_Flush(u8 ep) +{ + SetEP(ep); +// if (FifoByteCount()) +// ReleaseTX(); +} + +// General interrupt +// USB device interrupt handler +/* +// Manages device resume, suspend, end of bus reset. +// Forwards endpoint interrupts to the appropriate handler. +// General interrupt +ISR(USB_GEN_vect) +{ + u8 udint = UDINT; + UDINT = 0; + + // End of Reset + if (udint & (1<UDPHS_INTSTA & UDPHS->UDPHS_IEN; + + // Handle all UDPHS interrupts + while (status != 0) { + + // Start of Frame - happens every millisecond so we use it for TX and RX LED one-shot timing, too + if ((status & UDPHS_IEN_INT_SOF) != 0) { + +#ifdef CDC_ENABLED + USB_Flush(CDC_TX); // Send a tx frame if found +#endif + + // check whether the one-shot period has elapsed. if so, turn off the LED + if (TxLEDPulse && !(--TxLEDPulse)) + TXLED0; + if (RxLEDPulse && !(--RxLEDPulse)) + RXLED0; + + // Acknowledge interrupt + UDPHS->UDPHS_CLRINT = UDPHS_CLRINT_INT_SOF; + status &= ~UDPHS_IEN_INT_SOF; + } + // Suspend + // This interrupt is always treated last (hence the '==') + else if (status == UDPHS_IEN_DET_SUSPD) { + + //UDPHS_DisableBIAS(); + + // Enable wakeup + UDPHS->UDPHS_IEN |= UDPHS_IEN_WAKE_UP | UDPHS_IEN_ENDOFRSM; + UDPHS->UDPHS_IEN &= ~UDPHS_IEN_DET_SUSPD; + + // Acknowledge interrupt + UDPHS->UDPHS_CLRINT = UDPHS_CLRINT_DET_SUSPD | UDPHS_CLRINT_WAKE_UP; + + //UDPHS_DisableUsbClock(); + + } + // Resume + else if( ((status & UDPHS_IEN_WAKE_UP) != 0) // line activity + || ((status & UDPHS_IEN_ENDOFRSM) != 0)) { // pc wakeup + { + + //UDPHS_EnableUsbClock(); + //UDPHS_EnableBIAS(); + + UDPHS->UDPHS_CLRINT = UDPHS_CLRINT_WAKE_UP | UDPHS_CLRINT_ENDOFRSM + | UDPHS_CLRINT_DET_SUSPD; + + UDPHS->UDPHS_IEN |= UDPHS_IEN_ENDOFRSM | UDPHS_IEN_DET_SUSPD; + UDPHS->UDPHS_CLRINT = UDPHS_CLRINT_WAKE_UP | UDPHS_CLRINT_ENDOFRSM; + UDPHS->UDPHS_IEN &= ~UDPHS_IEN_WAKE_UP; + } + } + // End of Reset + else if ((status & UDPHS_IEN_ENDRESET) == UDPHS_IEN_ENDRESET) { + + InitControl(0); // init ep0 + _usbConfiguration = 0; // not configured yet + //UEIENX = 1 << RXSTPE; // Enable interrupts for ep0 + + //UDPHS_ResetEndpoints(); + //UDPHS_DisableEndpoints(); + //USBD_ConfigureEndpoint(0); + UDPHS->UDPHS_IEN |= (1<UDPHS_CLRINT = UDPHS_CLRINT_WAKE_UP | UDPHS_CLRINT_DET_SUSPD; + + //// Enable the Start Of Frame (SOF) interrupt if needed + UDPHS->UDPHS_IEN |= UDPHS_IEN_INT_SOF; + + // Acknowledge end of bus reset interrupt + UDPHS->UDPHS_CLRINT = UDPHS_CLRINT_ENDRESET; + + UDPHS->UDPHS_IEN |= UDPHS_IEN_DET_SUSPD; + } + // Handle upstream resume interrupt + else if (status & UDPHS_IEN_UPSTR_RES) { + + // - Acknowledge the IT + UDPHS->UDPHS_CLRINT = UDPHS_CLRINT_UPSTR_RES; + } + // Endpoint interrupts + else { + // Handle endpoint interrupts + for (numIT = 0; numIT < NUM_IT_MAX; numIT++) { + + if ((status & (1 << SHIFT_INTERUPT << numIT)) != 0) { + USB_ISR(); + //EndpointHandler(numIT); // TODO: interrupt for bulk + } + } + } + // Retrieve new interrupt status + status = UDPHS->UDPHS_INTSTA & UDPHS->UDPHS_IEN; + } +} + +// VBUS or counting frames +// Any frame counting? +u8 USBConnected() +{ + u8 f = UDFNUML; + delay(3); + return f != UDFNUML; +} + + +//======================================================================= +//======================================================================= + +USB_ USB; + +USB_::USB_() +{ +} + +void USB_::attach() +{/* + _usbConfiguration = 0; + + //UHWCON = 0x01; // power internal reg + //USBCON = (1<PMC_PCER = (1 << ID_UDPHS); + // Enable 480MHZ + //AT91C_BASE_CKGR->CKGR_UCKR |= (AT91C_CKGR_PLLCOUNT & (3 << 20)) | AT91C_CKGR_UPLLEN; + CKGR->CKGR_UCKR |= ((0xf << 20) & (3 << 20)) | AT91C_CKGR_UPLLEN; + // Wait until UTMI PLL is locked + while ((PMC->PMC_SR & PMC_LOCKU) == 0); + + // Reset and enable IP UDPHS + UDPHS->UDPHS_CTRL &= ~UDPHS_CTRL_EN_UDPHS; + UDPHS->UDPHS_CTRL |= UDPHS_CTRL_EN_UDPHS; + + //USBCON = ((1<UDPHS_IEN = 0; + UDPHS->UDPHS_CLRINT = UDPHS_CLRINT_UPSTR_RES + | UDPHS_CLRINT_ENDOFRSM + | UDPHS_CLRINT_WAKE_UP + | UDPHS_CLRINT_ENDRESET + | UDPHS_CLRINT_INT_SOF + | UDPHS_CLRINT_MICRO_SOF + | UDPHS_CLRINT_DET_SUSPD; + + // Enable interrupts for EOR (End of Reset), wake up and SOF (start of frame) + //UDIEN = (1<UDPHS_IEN = UDPHS_IEN_ENDOFRSM + | UDPHS_IEN_WAKE_UP + | UDPHS_IEN_DET_SUSPD; + + // enable attach resistor + //UDCON = 0; + UDPHS->UDPHS_CTRL &= ~UDPHS_CTRL_DETACH; // Pull Up on DP + UDPHS->UDPHS_CTRL |= UDPHS_CTRL_PULLD_DIS; // Disable Pull Down + + TX_RX_LED_INIT; +*/} + +void USB_::detach() +{ + UDPHS->UDPHS_CTRL |= UDPHS_CTRL_DETACH; // detach + UDPHS->UDPHS_CTRL &= ~UDPHS_CTRL_PULLD_DIS; // Enable Pull Down +} + +// Check for interrupts +// TODO: VBUS detection +bool USB_::configured() +{ + return _usbConfiguration; +} + +void USB_::poll() +{ +} + +#endif /* if defined(USBCON) */ + +#endif diff --git a/hardware/sam/cores/sam/USBCore.h b/hardware/sam/cores/sam/USBCore.h new file mode 100644 index 000000000..02558647d --- /dev/null +++ b/hardware/sam/cores/sam/USBCore.h @@ -0,0 +1,304 @@ + +// Copyright (c) 2010, Peter Barrett +/* +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#ifndef __USBCORE_H__ +#define __USBCORE_H__ + +// Standard requests +#define GET_STATUS 0 +#define CLEAR_FEATURE 1 +#define SET_FEATURE 3 +#define SET_ADDRESS 5 +#define GET_DESCRIPTOR 6 +#define SET_DESCRIPTOR 7 +#define GET_CONFIGURATION 8 +#define SET_CONFIGURATION 9 +#define GET_INTERFACE 10 +#define SET_INTERFACE 11 + + +// bmRequestType +#define REQUEST_HOSTTODEVICE 0x00 +#define REQUEST_DEVICETOHOST 0x80 +#define REQUEST_DIRECTION 0x80 + +#define REQUEST_STANDARD 0x00 +#define REQUEST_CLASS 0x20 +#define REQUEST_VENDOR 0x40 +#define REQUEST_TYPE 0x60 + +#define REQUEST_DEVICE 0x00 +#define REQUEST_INTERFACE 0x01 +#define REQUEST_ENDPOINT 0x02 +#define REQUEST_OTHER 0x03 +#define REQUEST_RECIPIENT 0x03 + +#define REQUEST_DEVICETOHOST_CLASS_INTERFACE (REQUEST_DEVICETOHOST + REQUEST_CLASS + REQUEST_INTERFACE) +#define REQUEST_HOSTTODEVICE_CLASS_INTERFACE (REQUEST_HOSTTODEVICE + REQUEST_CLASS + REQUEST_INTERFACE) + +// Class requests + +#define CDC_SET_LINE_CODING 0x20 +#define CDC_GET_LINE_CODING 0x21 +#define CDC_SET_CONTROL_LINE_STATE 0x22 + +#define MSC_RESET 0xFF +#define MSC_GET_MAX_LUN 0xFE + +#define HID_GET_REPORT 0x01 +#define HID_GET_IDLE 0x02 +#define HID_GET_PROTOCOL 0x03 +#define HID_SET_REPORT 0x09 +#define HID_SET_IDLE 0x0A +#define HID_SET_PROTOCOL 0x0B + +// Descriptors + +#define USB_DEVICE_DESC_SIZE 18 +#define USB_CONFIGUARTION_DESC_SIZE 9 +#define USB_INTERFACE_DESC_SIZE 9 +#define USB_ENDPOINT_DESC_SIZE 7 + +#define USB_DEVICE_DESCRIPTOR_TYPE 1 +#define USB_CONFIGURATION_DESCRIPTOR_TYPE 2 +#define USB_STRING_DESCRIPTOR_TYPE 3 +#define USB_INTERFACE_DESCRIPTOR_TYPE 4 +#define USB_ENDPOINT_DESCRIPTOR_TYPE 5 + +#define USB_DEVICE_CLASS_COMMUNICATIONS 0x02 +#define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03 +#define USB_DEVICE_CLASS_STORAGE 0x08 +#define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF + +#define USB_CONFIG_POWERED_MASK 0x40 +#define USB_CONFIG_BUS_POWERED 0x80 +#define USB_CONFIG_SELF_POWERED 0xC0 +#define USB_CONFIG_REMOTE_WAKEUP 0x20 + +// bMaxPower in Configuration Descriptor +#define USB_CONFIG_POWER_MA(mA) ((mA)/2) + +// bEndpointAddress in Endpoint Descriptor +#define USB_ENDPOINT_DIRECTION_MASK 0x80 +#define USB_ENDPOINT_OUT(addr) ((addr) | 0x00) +#define USB_ENDPOINT_IN(addr) ((addr) | 0x80) + +#define USB_ENDPOINT_TYPE_MASK 0x03 +#define USB_ENDPOINT_TYPE_CONTROL 0x00 +#define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01 +#define USB_ENDPOINT_TYPE_BULK 0x02 +#define USB_ENDPOINT_TYPE_INTERRUPT 0x03 + +#define TOBYTES(x) ((x) & 0xFF),(((x) >> 8) & 0xFF) + +#define CDC_V1_10 0x0110 +#define CDC_COMMUNICATION_INTERFACE_CLASS 0x02 + +#define CDC_CALL_MANAGEMENT 0x01 +#define CDC_ABSTRACT_CONTROL_MODEL 0x02 +#define CDC_HEADER 0x00 +#define CDC_ABSTRACT_CONTROL_MANAGEMENT 0x02 +#define CDC_UNION 0x06 +#define CDC_CS_INTERFACE 0x24 +#define CDC_CS_ENDPOINT 0x25 +#define CDC_DATA_INTERFACE_CLASS 0x0A + +#define MSC_SUBCLASS_SCSI 0x06 +#define MSC_PROTOCOL_BULK_ONLY 0x50 + +#define HID_HID_DESCRIPTOR_TYPE 0x21 +#define HID_REPORT_DESCRIPTOR_TYPE 0x22 +#define HID_PHYSICAL_DESCRIPTOR_TYPE 0x23 + + +// Device +typedef struct { + u8 len; // 18 + u8 dtype; // 1 USB_DEVICE_DESCRIPTOR_TYPE + u16 usbVersion; // 0x200 + u8 deviceClass; + u8 deviceSubClass; + u8 deviceProtocol; + u8 packetSize0; // Packet 0 + u16 idVendor; + u16 idProduct; + u16 deviceVersion; // 0x100 + u8 iManufacturer; + u8 iProduct; + u8 iSerialNumber; + u8 bNumConfigurations; +} DeviceDescriptor; + +// Config +typedef struct { + u8 len; // 9 + u8 dtype; // 2 + u16 clen; // total length + u8 numInterfaces; + u8 config; + u8 iconfig; + u8 attributes; + u8 maxPower; +} ConfigDescriptor; + +// String + +// Interface +typedef struct +{ + u8 len; // 9 + u8 dtype; // 4 + u8 number; + u8 alternate; + u8 numEndpoints; + u8 interfaceClass; + u8 interfaceSubClass; + u8 protocol; + u8 iInterface; +} InterfaceDescriptor; + +// Endpoint +typedef struct +{ + u8 len; // 7 + u8 dtype; // 5 + u8 addr; + u8 attr; + u16 packetSize; + u8 interval; +} EndpointDescriptor; + +// Interface Association Descriptor +// Used to bind 2 interfaces together in CDC compostite device +typedef struct +{ + u8 len; // 8 + u8 dtype; // 11 + u8 firstInterface; + u8 interfaceCount; + u8 functionClass; + u8 funtionSubClass; + u8 functionProtocol; + u8 iInterface; +} IADDescriptor; + +// CDC CS interface descriptor +typedef struct +{ + u8 len; // 5 + u8 dtype; // 0x24 + u8 subtype; + u8 d0; + u8 d1; +} CDCCSInterfaceDescriptor; + +typedef struct +{ + u8 len; // 4 + u8 dtype; // 0x24 + u8 subtype; + u8 d0; +} CDCCSInterfaceDescriptor4; + +typedef struct +{ + u8 len; + u8 dtype; // 0x24 + u8 subtype; // 1 + u8 bmCapabilities; + u8 bDataInterface; +} CMFunctionalDescriptor; + +typedef struct +{ + u8 len; + u8 dtype; // 0x24 + u8 subtype; // 1 + u8 bmCapabilities; +} ACMFunctionalDescriptor; + +typedef struct +{ + // IAD + IADDescriptor iad; // Only needed on compound device + + // Control + InterfaceDescriptor cif; // + CDCCSInterfaceDescriptor header; + CMFunctionalDescriptor callManagement; // Call Management + ACMFunctionalDescriptor controlManagement; // ACM + CDCCSInterfaceDescriptor functionalDescriptor; // CDC_UNION + EndpointDescriptor cifin; + + // Data + InterfaceDescriptor dif; + EndpointDescriptor in; + EndpointDescriptor out; + +} CDCDescriptor; + +typedef struct +{ + InterfaceDescriptor msc; + EndpointDescriptor in; + EndpointDescriptor out; +} MSCDescriptor; + +typedef struct +{ + u8 len; // 9 + u8 dtype; // 0x21 + u8 addr; + u8 versionL; // 0x101 + u8 versionH; // 0x101 + u8 country; + u8 desctype; // 0x22 report + u8 descLenL; + u8 descLenH; +} HIDDescDescriptor; + +typedef struct +{ + InterfaceDescriptor hid; + HIDDescDescriptor desc; + EndpointDescriptor in; +} HIDDescriptor; + + +#define D_DEVICE(_class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs) \ + { 18, 1, 0x200, _class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs } + +#define D_CONFIG(_totalLength,_interfaces) \ + { 9, 2, _totalLength,_interfaces, 1, 0, USB_CONFIG_BUS_POWERED, USB_CONFIG_POWER_MA(500) } + +#define D_INTERFACE(_n,_numEndpoints,_class,_subClass,_protocol) \ + { 9, 4, _n, 0, _numEndpoints, _class,_subClass, _protocol, 0 } + +#define D_ENDPOINT(_addr,_attr,_packetSize, _interval) \ + { 7, 5, _addr,_attr,_packetSize, _interval } + +#define D_IAD(_firstInterface, _count, _class, _subClass, _protocol) \ + { 8, 11, _firstInterface, _count, _class, _subClass, _protocol, 0 } + +#define D_HIDREPORT(_descriptorLength) \ + { 9, 0x21, 0x1, 0x1, 0, 1, 0x22, _descriptorLength, 0 } + +#define D_CDCCS(_subtype,_d0,_d1) { 5, 0x24, _subtype, _d0, _d1 } +#define D_CDCCS4(_subtype,_d0) { 4, 0x24, _subtype, _d0 } + + +#endif diff --git a/hardware/sam/cores/sam/USBDesc.h b/hardware/sam/cores/sam/USBDesc.h new file mode 100644 index 000000000..1c3b28a0c --- /dev/null +++ b/hardware/sam/cores/sam/USBDesc.h @@ -0,0 +1,68 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#define CDC_ENABLED +#define HID_ENABLED + + +#ifdef CDC_ENABLED +#define CDC_INTERFACE_COUNT 2 +#define CDC_ENPOINT_COUNT 3 +#else +#define CDC_INTERFACE_COUNT 0 +#define CDC_ENPOINT_COUNT 0 +#endif + +#ifdef HID_ENABLED +#define HID_INTERFACE_COUNT 1 +#define HID_ENPOINT_COUNT 1 +#else +#define HID_INTERFACE_COUNT 0 +#define HID_ENPOINT_COUNT 0 +#endif + +#define CDC_ACM_INTERFACE 0 // CDC ACM +#define CDC_DATA_INTERFACE 1 // CDC Data +#define CDC_FIRST_ENDPOINT 1 +#define CDC_ENDPOINT_IN (CDC_FIRST_ENDPOINT) // CDC First +#define CDC_ENDPOINT_OUT (CDC_FIRST_ENDPOINT+1) +#define CDC_ENDPOINT_ACM (CDC_FIRST_ENDPOINT+2) + +#define HID_INTERFACE (CDC_ACM_INTERFACE + CDC_INTERFACE_COUNT) // HID Interface +#define HID_FIRST_ENDPOINT (CDC_FIRST_ENDPOINT + CDC_ENPOINT_COUNT) +#define HID_ENDPOINT_INT (HID_FIRST_ENDPOINT) + +#define INTERFACE_COUNT (MSC_INTERFACE + MSC_INTERFACE_COUNT) + +#ifdef CDC_ENABLED +#define CDC_RX CDC_ENDPOINT_OUT +#define CDC_TX CDC_ENDPOINT_IN +#endif + +#ifdef HID_ENABLED +#define HID_TX HID_ENDPOINT_INT +#endif + +#define IMANUFACTURER 1 +#define IPRODUCT 2 +#define USB_PID_LEONARDO 0x0034 +#define USB_PID_MICRO 0x0035 +#define ARDUINO_MODEL_USB_PID 0x0036 +#define USB_VID 0x2341 // arduino LLC vid +#define USB_PID ARDUINO_MODEL_USB_PID + diff --git a/hardware/sam/cores/sam/USB_driver.cpp b/hardware/sam/cores/sam/USB_driver.cpp new file mode 100644 index 000000000..ce16fbdb1 --- /dev/null +++ b/hardware/sam/cores/sam/USB_driver.cpp @@ -0,0 +1,21 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "Arduino.h" +#include "USB_driver.h" + diff --git a/hardware/sam/cores/sam/USB_driver.h b/hardware/sam/cores/sam/USB_driver.h new file mode 100644 index 000000000..2160f2ef3 --- /dev/null +++ b/hardware/sam/cores/sam/USB_driver.h @@ -0,0 +1,22 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _USB_DRIVER_ +#define _USB_DRIVER_ + +#endif /* _USB_DRIVER_*/ diff --git a/hardware/sam/cores/sam/WCharacter.h b/hardware/sam/cores/sam/WCharacter.h new file mode 100644 index 000000000..e84b34857 --- /dev/null +++ b/hardware/sam/cores/sam/WCharacter.h @@ -0,0 +1,180 @@ +/* + WCharacter.h - Character utility functions for Wiring & Arduino + Copyright (c) 2010 Hernando Barragan. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef Character_h +#define Character_h + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +// WCharacter.h prototypes +#if defined ( __GNUC__ ) +inline boolean isAlphaNumeric(int c) __attribute__((always_inline)); +inline boolean isAlpha(int c) __attribute__((always_inline)); +inline boolean isAscii(int c) __attribute__((always_inline)); +inline boolean isWhitespace(int c) __attribute__((always_inline)); +inline boolean isControl(int c) __attribute__((always_inline)); +inline boolean isDigit(int c) __attribute__((always_inline)); +inline boolean isGraph(int c) __attribute__((always_inline)); +inline boolean isLowerCase(int c) __attribute__((always_inline)); +inline boolean isPrintable(int c) __attribute__((always_inline)); +inline boolean isPunct(int c) __attribute__((always_inline)); +inline boolean isSpace(int c) __attribute__((always_inline)); +inline boolean isUpperCase(int c) __attribute__((always_inline)); +inline boolean isHexadecimalDigit(int c) __attribute__((always_inline)); +inline int toAscii(int c) __attribute__((always_inline)); +inline int toLowerCase(int c) __attribute__((always_inline)); +inline int toUpperCase(int c)__attribute__((always_inline)); +#elif defined ( __ICCARM__ ) +#endif + +// Checks for an alphanumeric character. +// It is equivalent to (isalpha(c) || isdigit(c)). +inline boolean isAlphaNumeric(int c) +{ + return ( isalnum(c) == 0 ? false : true); +} + + +// Checks for an alphabetic character. +// It is equivalent to (isupper(c) || islower(c)). +inline boolean isAlpha(int c) +{ + return ( isalpha(c) == 0 ? false : true); +} + + +// Checks whether c is a 7-bit unsigned char value +// that fits into the ASCII character set. +inline boolean isAscii(int c) +{ +/* return ( isascii(c) == 0 ? false : true); */ + return ( (c & ~0x7f) != 0 ? false : true); +} + + +// Checks for a blank character, that is, a space or a tab. +inline boolean isWhitespace(int c) +{ + return ( isblank (c) == 0 ? false : true); +} + + +// Checks for a control character. +inline boolean isControl(int c) +{ + return ( iscntrl (c) == 0 ? false : true); +} + + +// Checks for a digit (0 through 9). +inline boolean isDigit(int c) +{ + return ( isdigit (c) == 0 ? false : true); +} + + +// Checks for any printable character except space. +inline boolean isGraph(int c) +{ + return ( isgraph (c) == 0 ? false : true); +} + + +// Checks for a lower-case character. +inline boolean isLowerCase(int c) +{ + return (islower (c) == 0 ? false : true); +} + + +// Checks for any printable character including space. +inline boolean isPrintable(int c) +{ + return ( isprint (c) == 0 ? false : true); +} + + +// Checks for any printable character which is not a space +// or an alphanumeric character. +inline boolean isPunct(int c) +{ + return ( ispunct (c) == 0 ? false : true); +} + + +// Checks for white-space characters. For the avr-libc library, +// these are: space, formfeed ('\f'), newline ('\n'), carriage +// return ('\r'), horizontal tab ('\t'), and vertical tab ('\v'). +inline boolean isSpace(int c) +{ + return ( isspace (c) == 0 ? false : true); +} + + +// Checks for an uppercase letter. +inline boolean isUpperCase(int c) +{ + return ( isupper (c) == 0 ? false : true); +} + + +// Checks for a hexadecimal digits, i.e. one of 0 1 2 3 4 5 6 7 +// 8 9 a b c d e f A B C D E F. +inline boolean isHexadecimalDigit(int c) +{ + return ( isxdigit (c) == 0 ? false : true); +} + + +// Converts c to a 7-bit unsigned char value that fits into the +// ASCII character set, by clearing the high-order bits. +inline int toAscii(int c) +{ +/* return toascii (c); */ + return (c & 0x7f); +} + + +// Warning: +// Many people will be unhappy if you use this function. +// This function will convert accented letters into random +// characters. + +// Converts the letter c to lower case, if possible. +inline int toLowerCase(int c) +{ + return tolower (c); +} + + +// Converts the letter c to upper case, if possible. +inline int toUpperCase(int c) +{ + return toupper (c); +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/hardware/sam/cores/sam/WInterrupts.c b/hardware/sam/cores/sam/WInterrupts.c new file mode 100644 index 000000000..8d5768aaa --- /dev/null +++ b/hardware/sam/cores/sam/WInterrupts.c @@ -0,0 +1,57 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "WInterrupts.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** PIO interrupt handlers array */ +/*volatile*/ static voidFuncPtr g_apfn_IntFunc[EXTERNAL_NUM_INTERRUPTS]={ 0 } ; + +void attachInterrupt( uint32_t ulInterrupt, void (*pfn_UserFunc)(void), uint32_t ulMode ) +{ + if ( ulInterrupt < EXTERNAL_NUM_INTERRUPTS ) + { + g_apfn_IntFunc[ulInterrupt] = pfn_UserFunc ; + + // Configure the interrupt mode (trigger on low input, any change, rising + // edge, or falling edge). The mode constants were chosen to correspond + // to the configuration bits in the hardware register, so we simply shift + // the mode into place. + + // Enable the interrupt. + + } +} + +void detachInterrupt( uint32_t ulInterrupt ) +{ + if ( ulInterrupt < EXTERNAL_NUM_INTERRUPTS ) + { + /* Disable the interrupt. */ + + + g_apfn_IntFunc[ulInterrupt] = NULL ; + } +} + +#ifdef __cplusplus +} +#endif diff --git a/hardware/sam/cores/sam/WInterrupts.h b/hardware/sam/cores/sam/WInterrupts.h new file mode 100644 index 000000000..3c8caa694 --- /dev/null +++ b/hardware/sam/cores/sam/WInterrupts.h @@ -0,0 +1,82 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _WIRING_INTERRUPTS_ +#define _WIRING_INTERRUPTS_ + +#include "Arduino.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +//typedef struct _InterruptSource +//{ +// /* Pointer to the source pin instance. */ +// PinDescription *pPin ; +// +// /* Interrupt handler. */ +// void (*handler)( const PinDescription *pPin ) ; +//} InterruptSource ; + + +/* + * \brief Specifies a function to call when an external interrupt occurs. + * Replaces any previous function that was attached to the interrupt. + * All Arduino SAM3 based boards pins can be switched into INPUT mode and have + * an interrupt user function attached to an event. + * + * \param ulInterrupt + * \param pfn_UserFunc + * \param ulMode + * +PIO_IT_RE_OR_HL = Interrupt High Level/Rising Edge detection is active +PIO_IT_EDGE = Interrupt Edge detection is active +PIO_IT_LOW_LEVEL = Low level interrupt is active +PIO_IT_HIGH_LEVEL = High level interrupt is active +PIO_IT_FALL_EDGE = Falling edge interrupt is active +PIO_IT_RISE_EDGE = Rising edge interrupt is active + +interrupt: the number of the interrupt (int) + +function: the function to call when the interrupt occurs; this function must take no parameters and return nothing. This function is sometimes referred to as an interrupt service routine. + +mode defines when the interrupt should be triggered. Four contstants are predefined as valid values: + + LOW to trigger the interrupt whenever the pin is low, + CHANGE to trigger the interrupt whenever the pin changes value + RISING to trigger when the pin goes from low to high, + FALLING for when the pin goes from high to low. + */ +extern void attachInterrupt( uint32_t ulInterrupt, void (*pfn_UserFunc)(void), uint32_t ulMode ) ; + +/* +Turns off the given interrupt. + +Parameters + +interrupt: the number of interrupt to disable (0 or 1). +*/ +extern void detachInterrupt( uint32_t ulInterrupt ) ; + +#ifdef __cplusplus +} +#endif + +#endif /* _WIRING_INTERRUPTS_ */ diff --git a/hardware/sam/cores/sam/WMath.cpp b/hardware/sam/cores/sam/WMath.cpp new file mode 100644 index 000000000..ec2e29b28 --- /dev/null +++ b/hardware/sam/cores/sam/WMath.cpp @@ -0,0 +1,68 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +extern "C" { + #include "stdlib.h" + #include "stdint.h" +} +#include "WMath.h" + +extern void randomSeed( uint32_t dwSeed ) +{ + if ( dwSeed != 0 ) + { + srand( dwSeed ) ; + } +} + +extern long random( long howbig ) +{ + if ( howbig == 0 ) + { + return 0 ; + } + + return rand() % howbig; +} + +extern long random( long howsmall, long howbig ) +{ + if (howsmall >= howbig) + { + return howsmall; + } + + long diff = howbig - howsmall; + + return random(diff) + howsmall; +} + +extern long map(long x, long in_min, long in_max, long out_min, long out_max) +{ + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} + +extern uint16_t makeWord( uint16_t w ) +{ + return w ; +} + +extern uint16_t makeWord( uint8_t h, uint8_t l ) +{ + return (h << 8) | l ; +} diff --git a/hardware/sam/cores/sam/WMath.h b/hardware/sam/cores/sam/WMath.h new file mode 100644 index 000000000..05779eafb --- /dev/null +++ b/hardware/sam/cores/sam/WMath.h @@ -0,0 +1,33 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _WIRING_MATH_ +#define _WIRING_MATH_ + +extern long random( long ) ; +extern long random( long, long ) ; +extern void randomSeed( uint32_t dwSeed ) ; +extern long map( long, long, long, long, long ) ; + +extern uint16_t makeWord( uint16_t w ) ; +extern uint16_t makeWord( uint8_t h, uint8_t l ) ; + +#define word(...) makeWord(__VA_ARGS__) + + +#endif /* _WIRING_MATH_ */ diff --git a/hardware/sam/cores/sam/WString.cpp b/hardware/sam/cores/sam/WString.cpp new file mode 100644 index 000000000..d0b86ece9 --- /dev/null +++ b/hardware/sam/cores/sam/WString.cpp @@ -0,0 +1,646 @@ +/* + WString.cpp - String library for Wiring & Arduino + ...mostly rewritten by Paul Stoffregen... + Copyright (c) 2009-10 Hernando Barragan. All rights reserved. + Copyright 2011, Paul Stoffregen, paul@pjrc.com + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "WString.h" +#include "itoa.h" + + +/*********************************************/ +/* Constructors */ +/*********************************************/ + +String::String(const char *cstr) +{ + init(); + if (cstr) copy(cstr, strlen(cstr)); +} + +String::String(const String &value) +{ + init(); + *this = value; +} + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +String::String(String &&rval) +{ + init(); + move(rval); +} +String::String(StringSumHelper &&rval) +{ + init(); + move(rval); +} +#endif + +String::String(char c) +{ + init(); + char buf[2]; + buf[0] = c; + buf[1] = 0; + *this = buf; +} + +String::String(unsigned char value, unsigned char base) +{ + init(); + char buf[9]; + utoa(value, buf, base); + *this = buf; +} + +String::String(int value, unsigned char base) +{ + init(); + char buf[18]; + itoa(value, buf, base); + *this = buf; +} + +String::String(unsigned int value, unsigned char base) +{ + init(); + char buf[17]; + utoa(value, buf, base); + *this = buf; +} + +String::String(long value, unsigned char base) +{ + init(); + char buf[34]; + ltoa(value, buf, base); + *this = buf; +} + +String::String(unsigned long value, unsigned char base) +{ + init(); + char buf[33]; + ultoa(value, buf, base); + *this = buf; +} + +String::~String() +{ + free(buffer); +} + +/*********************************************/ +/* Memory Management */ +/*********************************************/ + +inline void String::init(void) +{ + buffer = NULL; + capacity = 0; + len = 0; + flags = 0; +} + +void String::invalidate(void) +{ + if (buffer) free(buffer); + buffer = NULL; + capacity = len = 0; +} + +unsigned char String::reserve(unsigned int size) +{ + if (buffer && capacity >= size) return 1; + if (changeBuffer(size)) { + if (len == 0) buffer[0] = 0; + return 1; + } + return 0; +} + +unsigned char String::changeBuffer(unsigned int maxStrLen) +{ + char *newbuffer = (char *)realloc(buffer, maxStrLen + 1); + if (newbuffer) { + buffer = newbuffer; + capacity = maxStrLen; + return 1; + } + return 0; +} + +/*********************************************/ +/* Copy and Move */ +/*********************************************/ + +String & String::copy(const char *cstr, unsigned int length) +{ + if (!reserve(length)) { + invalidate(); + return *this; + } + len = length; + strcpy(buffer, cstr); + return *this; +} + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +void String::move(String &rhs) +{ + if (buffer) { + if (capacity >= rhs.len) { + strcpy(buffer, rhs.buffer); + len = rhs.len; + rhs.len = 0; + return; + } else { + free(buffer); + } + } + buffer = rhs.buffer; + capacity = rhs.capacity; + len = rhs.len; + rhs.buffer = NULL; + rhs.capacity = 0; + rhs.len = 0; +} +#endif + +String & String::operator = (const String &rhs) +{ + if (this == &rhs) return *this; + + if (rhs.buffer) copy(rhs.buffer, rhs.len); + else invalidate(); + + return *this; +} + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +String & String::operator = (String &&rval) +{ + if (this != &rval) move(rval); + return *this; +} + +String & String::operator = (StringSumHelper &&rval) +{ + if (this != &rval) move(rval); + return *this; +} +#endif + +String & String::operator = (const char *cstr) +{ + if (cstr) copy(cstr, strlen(cstr)); + else invalidate(); + + return *this; +} + +/*********************************************/ +/* concat */ +/*********************************************/ + +unsigned char String::concat(const String &s) +{ + return concat(s.buffer, s.len); +} + +unsigned char String::concat(const char *cstr, unsigned int length) +{ + unsigned int newlen = len + length; + if (!cstr) return 0; + if (length == 0) return 1; + if (!reserve(newlen)) return 0; + strcpy(buffer + len, cstr); + len = newlen; + return 1; +} + +unsigned char String::concat(const char *cstr) +{ + if (!cstr) return 0; + return concat(cstr, strlen(cstr)); +} + +unsigned char String::concat(char c) +{ + char buf[2]; + buf[0] = c; + buf[1] = 0; + return concat(buf, 1); +} + +unsigned char String::concat(unsigned char num) +{ + char buf[4]; +// itoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(int num) +{ + char buf[7]; + itoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(unsigned int num) +{ + char buf[6]; + utoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(long num) +{ + char buf[12]; + ltoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(unsigned long num) +{ + char buf[11]; + ultoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +/*********************************************/ +/* Concatenate */ +/*********************************************/ + +StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(rhs.buffer, rhs.len)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr) +{ + StringSumHelper &a = const_cast(lhs); + if (!cstr || !a.concat(cstr, strlen(cstr))) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, char c) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(c)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, int num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, long num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +/*********************************************/ +/* Comparison */ +/*********************************************/ + +int String::compareTo(const String &s) const +{ + if (!buffer || !s.buffer) { + if (s.buffer && s.len > 0) return 0 - *(unsigned char *)s.buffer; + if (buffer && len > 0) return *(unsigned char *)buffer; + return 0; + } + return strcmp(buffer, s.buffer); +} + +unsigned char String::equals(const String &s2) const +{ + return (len == s2.len && compareTo(s2) == 0); +} + +unsigned char String::equals(const char *cstr) const +{ + if (len == 0) return (cstr == NULL || *cstr == 0); + if (cstr == NULL) return buffer[0] == 0; + return strcmp(buffer, cstr) == 0; +} + +unsigned char String::operator<(const String &rhs) const +{ + return compareTo(rhs) < 0; +} + +unsigned char String::operator>(const String &rhs) const +{ + return compareTo(rhs) > 0; +} + +unsigned char String::operator<=(const String &rhs) const +{ + return compareTo(rhs) <= 0; +} + +unsigned char String::operator>=(const String &rhs) const +{ + return compareTo(rhs) >= 0; +} + +unsigned char String::equalsIgnoreCase( const String &s2 ) const +{ + if (this == &s2) return 1; + if (len != s2.len) return 0; + if (len == 0) return 1; + const char *p1 = buffer; + const char *p2 = s2.buffer; + while (*p1) { + if (tolower(*p1++) != tolower(*p2++)) return 0; + } + return 1; +} + +unsigned char String::startsWith( const String &s2 ) const +{ + if (len < s2.len) return 0; + return startsWith(s2, 0); +} + +unsigned char String::startsWith( const String &s2, unsigned int offset ) const +{ + if (offset > len - s2.len || !buffer || !s2.buffer) return 0; + return strncmp( &buffer[offset], s2.buffer, s2.len ) == 0; +} + +unsigned char String::endsWith( const String &s2 ) const +{ + if ( len < s2.len || !buffer || !s2.buffer) return 0; + return strcmp(&buffer[len - s2.len], s2.buffer) == 0; +} + +/*********************************************/ +/* Character Access */ +/*********************************************/ + +char String::charAt(unsigned int loc) const +{ + return operator[](loc); +} + +void String::setCharAt(unsigned int loc, char c) +{ + if (loc < len) buffer[loc] = c; +} + +char & String::operator[](unsigned int index) +{ + static char dummy_writable_char; + if (index >= len || !buffer) { + dummy_writable_char = 0; + return dummy_writable_char; + } + return buffer[index]; +} + +char String::operator[]( unsigned int index ) const +{ + if (index >= len || !buffer) return 0; + return buffer[index]; +} + +void String::getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index) const +{ + if (!bufsize || !buf) return; + if (index >= len) { + buf[0] = 0; + return; + } + unsigned int n = bufsize - 1; + if (n > len - index) n = len - index; + strncpy((char *)buf, buffer + index, n); + buf[n] = 0; +} + +/*********************************************/ +/* Search */ +/*********************************************/ + +int String::indexOf(char c) const +{ + return indexOf(c, 0); +} + +int String::indexOf( char ch, unsigned int fromIndex ) const +{ + if (fromIndex >= len) return -1; + const char* temp = strchr(buffer + fromIndex, ch); + if (temp == NULL) return -1; + return temp - buffer; +} + +int String::indexOf(const String &s2) const +{ + return indexOf(s2, 0); +} + +int String::indexOf(const String &s2, unsigned int fromIndex) const +{ + if (fromIndex >= len) return -1; + const char *found = strstr(buffer + fromIndex, s2.buffer); + if (found == NULL) return -1; + return found - buffer; +} + +int String::lastIndexOf( char theChar ) const +{ + return lastIndexOf(theChar, len - 1); +} + +int String::lastIndexOf(char ch, int fromIndex) const +{ + if (fromIndex >= len || fromIndex < 0) return -1; + char tempchar = buffer[fromIndex + 1]; + buffer[fromIndex + 1] = '\0'; + char* temp = strrchr( buffer, ch ); + buffer[fromIndex + 1] = tempchar; + if (temp == NULL) return -1; + return temp - buffer; +} + +int String::lastIndexOf(const String &s2) const +{ + return lastIndexOf(s2, len - s2.len); +} + +int String::lastIndexOf(const String &s2, int fromIndex) const +{ + if (s2.len == 0 || len == 0 || s2.len > len || fromIndex < 0) return -1; + if (fromIndex >= len) fromIndex = len - 1; + int found = -1; + for (char *p = buffer; p <= buffer + fromIndex; p++) { + p = strstr(p, s2.buffer); + if (!p) break; + if (p - buffer <= fromIndex) found = p - buffer; + } + return found; +} + +String String::substring( unsigned int left ) const +{ + return substring(left, len); +} + +String String::substring(unsigned int left, unsigned int right) const +{ + if (left > right) { + unsigned int temp = right; + right = left; + left = temp; + } + String out; + if (left > len) return out; + if (right > len) right = len; + char temp = buffer[right]; // save the replaced character + buffer[right] = '\0'; + out = buffer + left; // pointer arithmetic + buffer[right] = temp; //restore character + return out; +} + +/*********************************************/ +/* Modification */ +/*********************************************/ + +void String::replace(char find, char replace) +{ + if (!buffer) return; + for (char *p = buffer; *p; p++) { + if (*p == find) *p = replace; + } +} + +void String::replace(const String& find, const String& replace) +{ + if (len == 0 || find.len == 0) return; + int diff = replace.len - find.len; + char *readFrom = buffer; + char *foundAt; + if (diff == 0) { + while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { + memcpy(foundAt, replace.buffer, replace.len); + readFrom = foundAt + replace.len; + } + } else if (diff < 0) { + char *writeTo = buffer; + while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { + unsigned int n = foundAt - readFrom; + memcpy(writeTo, readFrom, n); + writeTo += n; + memcpy(writeTo, replace.buffer, replace.len); + writeTo += replace.len; + readFrom = foundAt + find.len; + len += diff; + } + strcpy(writeTo, readFrom); + } else { + unsigned int size = len; // compute size needed for result + while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { + readFrom = foundAt + find.len; + size += diff; + } + if (size == len) return; + if (size > capacity && !changeBuffer(size)) return; // XXX: tell user! + int index = len - 1; + while ((index = lastIndexOf(find, index)) >= 0) { + readFrom = buffer + index + find.len; + memmove(readFrom + diff, readFrom, len - (readFrom - buffer)); + len += diff; + buffer[len] = 0; + memcpy(buffer + index, replace.buffer, replace.len); + index--; + } + } +} + +void String::toLowerCase(void) +{ + if (!buffer) return; + for (char *p = buffer; *p; p++) { + *p = tolower(*p); + } +} + +void String::toUpperCase(void) +{ + if (!buffer) return; + for (char *p = buffer; *p; p++) { + *p = toupper(*p); + } +} + +void String::trim(void) +{ + if (!buffer || len == 0) return; + char *begin = buffer; + while (isspace(*begin)) begin++; + char *end = buffer + len - 1; + while (isspace(*end) && end >= begin) end--; + len = end + 1 - begin; + if (begin > buffer) memcpy(buffer, begin, len); + buffer[len] = 0; +} + +/*********************************************/ +/* Parsing / Conversion */ +/*********************************************/ + +long String::toInt(void) const +{ + if (buffer) return atol(buffer); + return 0; +} + + diff --git a/hardware/sam/cores/sam/WString.h b/hardware/sam/cores/sam/WString.h new file mode 100644 index 000000000..01f144ac6 --- /dev/null +++ b/hardware/sam/cores/sam/WString.h @@ -0,0 +1,204 @@ +/* + WString.h - String library for Wiring & Arduino + ...mostly rewritten by Paul Stoffregen... + Copyright (c) 2009-10 Hernando Barragan. All right reserved. + Copyright 2011, Paul Stoffregen, paul@pjrc.com + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef String_class_h +#define String_class_h +#ifdef __cplusplus + +#include +#include +#include + +// When compiling programs with this class, the following gcc parameters +// dramatically increase performance and memory (RAM) efficiency, typically +// with little or no increase in code size. +// -felide-constructors +// -std=c++0x + +class __FlashStringHelper; +#define F(string_literal) (reinterpret_cast<__FlashStringHelper *>(PSTR(string_literal))) + +// An inherited class for holding the result of a concatenation. These +// result objects are assumed to be writable by subsequent concatenations. +class StringSumHelper; + +// The string class +class String +{ + // use a function pointer to allow for "if (s)" without the + // complications of an operator bool(). for more information, see: + // http://www.artima.com/cppsource/safebool.html + typedef void (String::*StringIfHelperType)() const; + void StringIfHelper() const {} + +public: + // constructors + // creates a copy of the initial value. + // if the initial value is null or invalid, or if memory allocation + // fails, the string will be marked as invalid (i.e. "if (s)" will + // be false). + String(const char *cstr = ""); + String(const String &str); + #ifdef __GXX_EXPERIMENTAL_CXX0X__ + String(String &&rval); + String(StringSumHelper &&rval); + #endif + explicit String(char c); + explicit String(unsigned char, unsigned char base=10); + explicit String(int, unsigned char base=10); + explicit String(unsigned int, unsigned char base=10); + explicit String(long, unsigned char base=10); + explicit String(unsigned long, unsigned char base=10); + ~String(void); + + // memory management + // return true on success, false on failure (in which case, the string + // is left unchanged). reserve(0), if successful, will validate an + // invalid string (i.e., "if (s)" will be true afterwards) + unsigned char reserve(unsigned int size); + inline unsigned int length(void) const {return len;} + + // creates a copy of the assigned value. if the value is null or + // invalid, or if the memory allocation fails, the string will be + // marked as invalid ("if (s)" will be false). + String & operator = (const String &rhs); + String & operator = (const char *cstr); + #ifdef __GXX_EXPERIMENTAL_CXX0X__ + String & operator = (String &&rval); + String & operator = (StringSumHelper &&rval); + #endif + + // concatenate (works w/ built-in types) + + // returns true on success, false on failure (in which case, the string + // is left unchanged). if the argument is null or invalid, the + // concatenation is considered unsucessful. + unsigned char concat(const String &str); + unsigned char concat(const char *cstr); + unsigned char concat(char c); + unsigned char concat(unsigned char c); + unsigned char concat(int num); + unsigned char concat(unsigned int num); + unsigned char concat(long num); + unsigned char concat(unsigned long num); + + // if there's not enough memory for the concatenated value, the string + // will be left unchanged (but this isn't signalled in any way) + String & operator += (const String &rhs) {concat(rhs); return (*this);} + String & operator += (const char *cstr) {concat(cstr); return (*this);} + String & operator += (char c) {concat(c); return (*this);} + String & operator += (unsigned char num) {concat(num); return (*this);} + String & operator += (int num) {concat(num); return (*this);} + String & operator += (unsigned int num) {concat(num); return (*this);} + String & operator += (long num) {concat(num); return (*this);} + String & operator += (unsigned long num) {concat(num); return (*this);} + + friend StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs); + friend StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr); + friend StringSumHelper & operator + (const StringSumHelper &lhs, char c); + friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, int num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, long num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num); + + // comparison (only works w/ Strings and "strings") + operator StringIfHelperType() const { return buffer ? &String::StringIfHelper : 0; } + int compareTo(const String &s) const; + unsigned char equals(const String &s) const; + unsigned char equals(const char *cstr) const; + unsigned char operator == (const String &rhs) const {return equals(rhs);} + unsigned char operator == (const char *cstr) const {return equals(cstr);} + unsigned char operator != (const String &rhs) const {return !equals(rhs);} + unsigned char operator != (const char *cstr) const {return !equals(cstr);} + unsigned char operator < (const String &rhs) const; + unsigned char operator > (const String &rhs) const; + unsigned char operator <= (const String &rhs) const; + unsigned char operator >= (const String &rhs) const; + unsigned char equalsIgnoreCase(const String &s) const; + unsigned char startsWith( const String &prefix) const; + unsigned char startsWith(const String &prefix, unsigned int offset) const; + unsigned char endsWith(const String &suffix) const; + + // character acccess + char charAt(unsigned int index) const; + void setCharAt(unsigned int index, char c); + char operator [] (unsigned int index) const; + char& operator [] (unsigned int index); + void getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index=0) const; + void toCharArray(char *buf, unsigned int bufsize, unsigned int index=0) const + {getBytes((unsigned char *)buf, bufsize, index);} + + // search + int indexOf( char ch ) const; + int indexOf( char ch, unsigned int fromIndex ) const; + int indexOf( const String &str ) const; + int indexOf( const String &str, unsigned int fromIndex ) const; + int lastIndexOf( char ch ) const; + int lastIndexOf( char ch, int fromIndex ) const; + int lastIndexOf( const String &str ) const; + int lastIndexOf( const String &str, int fromIndex ) const; + String substring( unsigned int beginIndex ) const; + String substring( unsigned int beginIndex, unsigned int endIndex ) const; + + // modification + void replace(char find, char replace); + void replace(const String& find, const String& replace); + void toLowerCase(void); + void toUpperCase(void); + void trim(void); + + // parsing/conversion + long toInt(void) const; + +protected: + char *buffer; // the actual char array + unsigned int capacity; // the array length minus one (for the '\0') + unsigned int len; // the String length (not counting the '\0') + unsigned char flags; // unused, for future features +protected: + void init(void); + void invalidate(void); + unsigned char changeBuffer(unsigned int maxStrLen); + unsigned char concat(const char *cstr, unsigned int length); + + // copy and move + String & copy(const char *cstr, unsigned int length); + #ifdef __GXX_EXPERIMENTAL_CXX0X__ + void move(String &rhs); + #endif +}; + +class StringSumHelper : public String +{ +public: + StringSumHelper(const String &s) : String(s) {} + StringSumHelper(const char *p) : String(p) {} + StringSumHelper(char c) : String(c) {} + StringSumHelper(unsigned char num) : String(num) {} + StringSumHelper(int num) : String(num) {} + StringSumHelper(unsigned int num) : String(num) {} + StringSumHelper(long num) : String(num) {} + StringSumHelper(unsigned long num) : String(num) {} +}; + +#endif // __cplusplus +#endif // String_class_h diff --git a/hardware/sam/cores/sam/binary.h b/hardware/sam/cores/sam/binary.h new file mode 100644 index 000000000..af1498033 --- /dev/null +++ b/hardware/sam/cores/sam/binary.h @@ -0,0 +1,515 @@ +#ifndef Binary_h +#define Binary_h + +#define B0 0 +#define B00 0 +#define B000 0 +#define B0000 0 +#define B00000 0 +#define B000000 0 +#define B0000000 0 +#define B00000000 0 +#define B1 1 +#define B01 1 +#define B001 1 +#define B0001 1 +#define B00001 1 +#define B000001 1 +#define B0000001 1 +#define B00000001 1 +#define B10 2 +#define B010 2 +#define B0010 2 +#define B00010 2 +#define B000010 2 +#define B0000010 2 +#define B00000010 2 +#define B11 3 +#define B011 3 +#define B0011 3 +#define B00011 3 +#define B000011 3 +#define B0000011 3 +#define B00000011 3 +#define B100 4 +#define B0100 4 +#define B00100 4 +#define B000100 4 +#define B0000100 4 +#define B00000100 4 +#define B101 5 +#define B0101 5 +#define B00101 5 +#define B000101 5 +#define B0000101 5 +#define B00000101 5 +#define B110 6 +#define B0110 6 +#define B00110 6 +#define B000110 6 +#define B0000110 6 +#define B00000110 6 +#define B111 7 +#define B0111 7 +#define B00111 7 +#define B000111 7 +#define B0000111 7 +#define B00000111 7 +#define B1000 8 +#define B01000 8 +#define B001000 8 +#define B0001000 8 +#define B00001000 8 +#define B1001 9 +#define B01001 9 +#define B001001 9 +#define B0001001 9 +#define B00001001 9 +#define B1010 10 +#define B01010 10 +#define B001010 10 +#define B0001010 10 +#define B00001010 10 +#define B1011 11 +#define B01011 11 +#define B001011 11 +#define B0001011 11 +#define B00001011 11 +#define B1100 12 +#define B01100 12 +#define B001100 12 +#define B0001100 12 +#define B00001100 12 +#define B1101 13 +#define B01101 13 +#define B001101 13 +#define B0001101 13 +#define B00001101 13 +#define B1110 14 +#define B01110 14 +#define B001110 14 +#define B0001110 14 +#define B00001110 14 +#define B1111 15 +#define B01111 15 +#define B001111 15 +#define B0001111 15 +#define B00001111 15 +#define B10000 16 +#define B010000 16 +#define B0010000 16 +#define B00010000 16 +#define B10001 17 +#define B010001 17 +#define B0010001 17 +#define B00010001 17 +#define B10010 18 +#define B010010 18 +#define B0010010 18 +#define B00010010 18 +#define B10011 19 +#define B010011 19 +#define B0010011 19 +#define B00010011 19 +#define B10100 20 +#define B010100 20 +#define B0010100 20 +#define B00010100 20 +#define B10101 21 +#define B010101 21 +#define B0010101 21 +#define B00010101 21 +#define B10110 22 +#define B010110 22 +#define B0010110 22 +#define B00010110 22 +#define B10111 23 +#define B010111 23 +#define B0010111 23 +#define B00010111 23 +#define B11000 24 +#define B011000 24 +#define B0011000 24 +#define B00011000 24 +#define B11001 25 +#define B011001 25 +#define B0011001 25 +#define B00011001 25 +#define B11010 26 +#define B011010 26 +#define B0011010 26 +#define B00011010 26 +#define B11011 27 +#define B011011 27 +#define B0011011 27 +#define B00011011 27 +#define B11100 28 +#define B011100 28 +#define B0011100 28 +#define B00011100 28 +#define B11101 29 +#define B011101 29 +#define B0011101 29 +#define B00011101 29 +#define B11110 30 +#define B011110 30 +#define B0011110 30 +#define B00011110 30 +#define B11111 31 +#define B011111 31 +#define B0011111 31 +#define B00011111 31 +#define B100000 32 +#define B0100000 32 +#define B00100000 32 +#define B100001 33 +#define B0100001 33 +#define B00100001 33 +#define B100010 34 +#define B0100010 34 +#define B00100010 34 +#define B100011 35 +#define B0100011 35 +#define B00100011 35 +#define B100100 36 +#define B0100100 36 +#define B00100100 36 +#define B100101 37 +#define B0100101 37 +#define B00100101 37 +#define B100110 38 +#define B0100110 38 +#define B00100110 38 +#define B100111 39 +#define B0100111 39 +#define B00100111 39 +#define B101000 40 +#define B0101000 40 +#define B00101000 40 +#define B101001 41 +#define B0101001 41 +#define B00101001 41 +#define B101010 42 +#define B0101010 42 +#define B00101010 42 +#define B101011 43 +#define B0101011 43 +#define B00101011 43 +#define B101100 44 +#define B0101100 44 +#define B00101100 44 +#define B101101 45 +#define B0101101 45 +#define B00101101 45 +#define B101110 46 +#define B0101110 46 +#define B00101110 46 +#define B101111 47 +#define B0101111 47 +#define B00101111 47 +#define B110000 48 +#define B0110000 48 +#define B00110000 48 +#define B110001 49 +#define B0110001 49 +#define B00110001 49 +#define B110010 50 +#define B0110010 50 +#define B00110010 50 +#define B110011 51 +#define B0110011 51 +#define B00110011 51 +#define B110100 52 +#define B0110100 52 +#define B00110100 52 +#define B110101 53 +#define B0110101 53 +#define B00110101 53 +#define B110110 54 +#define B0110110 54 +#define B00110110 54 +#define B110111 55 +#define B0110111 55 +#define B00110111 55 +#define B111000 56 +#define B0111000 56 +#define B00111000 56 +#define B111001 57 +#define B0111001 57 +#define B00111001 57 +#define B111010 58 +#define B0111010 58 +#define B00111010 58 +#define B111011 59 +#define B0111011 59 +#define B00111011 59 +#define B111100 60 +#define B0111100 60 +#define B00111100 60 +#define B111101 61 +#define B0111101 61 +#define B00111101 61 +#define B111110 62 +#define B0111110 62 +#define B00111110 62 +#define B111111 63 +#define B0111111 63 +#define B00111111 63 +#define B1000000 64 +#define B01000000 64 +#define B1000001 65 +#define B01000001 65 +#define B1000010 66 +#define B01000010 66 +#define B1000011 67 +#define B01000011 67 +#define B1000100 68 +#define B01000100 68 +#define B1000101 69 +#define B01000101 69 +#define B1000110 70 +#define B01000110 70 +#define B1000111 71 +#define B01000111 71 +#define B1001000 72 +#define B01001000 72 +#define B1001001 73 +#define B01001001 73 +#define B1001010 74 +#define B01001010 74 +#define B1001011 75 +#define B01001011 75 +#define B1001100 76 +#define B01001100 76 +#define B1001101 77 +#define B01001101 77 +#define B1001110 78 +#define B01001110 78 +#define B1001111 79 +#define B01001111 79 +#define B1010000 80 +#define B01010000 80 +#define B1010001 81 +#define B01010001 81 +#define B1010010 82 +#define B01010010 82 +#define B1010011 83 +#define B01010011 83 +#define B1010100 84 +#define B01010100 84 +#define B1010101 85 +#define B01010101 85 +#define B1010110 86 +#define B01010110 86 +#define B1010111 87 +#define B01010111 87 +#define B1011000 88 +#define B01011000 88 +#define B1011001 89 +#define B01011001 89 +#define B1011010 90 +#define B01011010 90 +#define B1011011 91 +#define B01011011 91 +#define B1011100 92 +#define B01011100 92 +#define B1011101 93 +#define B01011101 93 +#define B1011110 94 +#define B01011110 94 +#define B1011111 95 +#define B01011111 95 +#define B1100000 96 +#define B01100000 96 +#define B1100001 97 +#define B01100001 97 +#define B1100010 98 +#define B01100010 98 +#define B1100011 99 +#define B01100011 99 +#define B1100100 100 +#define B01100100 100 +#define B1100101 101 +#define B01100101 101 +#define B1100110 102 +#define B01100110 102 +#define B1100111 103 +#define B01100111 103 +#define B1101000 104 +#define B01101000 104 +#define B1101001 105 +#define B01101001 105 +#define B1101010 106 +#define B01101010 106 +#define B1101011 107 +#define B01101011 107 +#define B1101100 108 +#define B01101100 108 +#define B1101101 109 +#define B01101101 109 +#define B1101110 110 +#define B01101110 110 +#define B1101111 111 +#define B01101111 111 +#define B1110000 112 +#define B01110000 112 +#define B1110001 113 +#define B01110001 113 +#define B1110010 114 +#define B01110010 114 +#define B1110011 115 +#define B01110011 115 +#define B1110100 116 +#define B01110100 116 +#define B1110101 117 +#define B01110101 117 +#define B1110110 118 +#define B01110110 118 +#define B1110111 119 +#define B01110111 119 +#define B1111000 120 +#define B01111000 120 +#define B1111001 121 +#define B01111001 121 +#define B1111010 122 +#define B01111010 122 +#define B1111011 123 +#define B01111011 123 +#define B1111100 124 +#define B01111100 124 +#define B1111101 125 +#define B01111101 125 +#define B1111110 126 +#define B01111110 126 +#define B1111111 127 +#define B01111111 127 +#define B10000000 128 +#define B10000001 129 +#define B10000010 130 +#define B10000011 131 +#define B10000100 132 +#define B10000101 133 +#define B10000110 134 +#define B10000111 135 +#define B10001000 136 +#define B10001001 137 +#define B10001010 138 +#define B10001011 139 +#define B10001100 140 +#define B10001101 141 +#define B10001110 142 +#define B10001111 143 +#define B10010000 144 +#define B10010001 145 +#define B10010010 146 +#define B10010011 147 +#define B10010100 148 +#define B10010101 149 +#define B10010110 150 +#define B10010111 151 +#define B10011000 152 +#define B10011001 153 +#define B10011010 154 +#define B10011011 155 +#define B10011100 156 +#define B10011101 157 +#define B10011110 158 +#define B10011111 159 +#define B10100000 160 +#define B10100001 161 +#define B10100010 162 +#define B10100011 163 +#define B10100100 164 +#define B10100101 165 +#define B10100110 166 +#define B10100111 167 +#define B10101000 168 +#define B10101001 169 +#define B10101010 170 +#define B10101011 171 +#define B10101100 172 +#define B10101101 173 +#define B10101110 174 +#define B10101111 175 +#define B10110000 176 +#define B10110001 177 +#define B10110010 178 +#define B10110011 179 +#define B10110100 180 +#define B10110101 181 +#define B10110110 182 +#define B10110111 183 +#define B10111000 184 +#define B10111001 185 +#define B10111010 186 +#define B10111011 187 +#define B10111100 188 +#define B10111101 189 +#define B10111110 190 +#define B10111111 191 +#define B11000000 192 +#define B11000001 193 +#define B11000010 194 +#define B11000011 195 +#define B11000100 196 +#define B11000101 197 +#define B11000110 198 +#define B11000111 199 +#define B11001000 200 +#define B11001001 201 +#define B11001010 202 +#define B11001011 203 +#define B11001100 204 +#define B11001101 205 +#define B11001110 206 +#define B11001111 207 +#define B11010000 208 +#define B11010001 209 +#define B11010010 210 +#define B11010011 211 +#define B11010100 212 +#define B11010101 213 +#define B11010110 214 +#define B11010111 215 +#define B11011000 216 +#define B11011001 217 +#define B11011010 218 +#define B11011011 219 +#define B11011100 220 +#define B11011101 221 +#define B11011110 222 +#define B11011111 223 +#define B11100000 224 +#define B11100001 225 +#define B11100010 226 +#define B11100011 227 +#define B11100100 228 +#define B11100101 229 +#define B11100110 230 +#define B11100111 231 +#define B11101000 232 +#define B11101001 233 +#define B11101010 234 +#define B11101011 235 +#define B11101100 236 +#define B11101101 237 +#define B11101110 238 +#define B11101111 239 +#define B11110000 240 +#define B11110001 241 +#define B11110010 242 +#define B11110011 243 +#define B11110100 244 +#define B11110101 245 +#define B11110110 246 +#define B11110111 247 +#define B11111000 248 +#define B11111001 249 +#define B11111010 250 +#define B11111011 251 +#define B11111100 252 +#define B11111101 253 +#define B11111110 254 +#define B11111111 255 + +#endif diff --git a/hardware/sam/cores/sam/build_gcc/Makefile b/hardware/sam/cores/sam/build_gcc/Makefile new file mode 100644 index 000000000..4943a9b93 --- /dev/null +++ b/hardware/sam/cores/sam/build_gcc/Makefile @@ -0,0 +1,46 @@ +ifeq ("$(VARIANTS)", "") +VARIANTS = sam3s_ek sam3u_ek arduino_due +#VARIANTS = sam3u_ek +endif + +SUBMAKE_OPTIONS=--no-builtin-rules --no-builtin-variables + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- + +all: $(VARIANTS) + +.PHONY: sam3s_ek +sam3s_ek: + @echo --- Making sam3s_ek + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f libarduino_sam3s_ek.mk +# @$(MAKE) $(SUBMAKE_OPTIONS) -f libarduino_sam3s_ek.mk + +.PHONY: sam3u_ek +sam3u_ek: + @echo --- Making sam3u_ek + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f libarduino_sam3u_ek.mk +# @$(MAKE) $(SUBMAKE_OPTIONS) -f libarduino_sam3u_ek.mk + +.PHONY: arduino_due +arduino_due: + @echo --- Making arduino_due + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f libarduino_arduino_due.mk +# @$(MAKE) $(SUBMAKE_OPTIONS) -f libarduino_arduino_due.mk + +.PHONY: clean +clean: + @echo --- Cleaning sam3s_ek + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f libarduino_sam3s_ek.mk $@ +# @$(MAKE) $(SUBMAKE_OPTIONS) -f libarduino_sam3s_ek.mk $@ + + @echo --- Cleaning sam3u_ek + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f libarduino_sam3u_ek.mk $@ +# @$(MAKE) $(SUBMAKE_OPTIONS) -f libarduino_sam3u_ek.mk $@ + + @echo --- Cleaning arduino_due + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f libarduino_arduino_due.mk $@ +# @$(MAKE) $(SUBMAKE_OPTIONS) -f libarduino_arduino_due.mk $@ + + diff --git a/hardware/sam/cores/sam/build_gcc/debug.mk b/hardware/sam/cores/sam/build_gcc/debug.mk new file mode 100644 index 000000000..3ab3f8066 --- /dev/null +++ b/hardware/sam/cores/sam/build_gcc/debug.mk @@ -0,0 +1,7 @@ +# Optimization level +# -O1 Optimize +# -O2 Optimize even more +# -O3 Optimize yet more +# -O0 Reduce compilation time and make debugging produce the expected results +# -Os Optimize for size +OPTIMIZATION = -g -O0 -DDEBUG diff --git a/hardware/sam/cores/sam/build_gcc/gcc.mk b/hardware/sam/cores/sam/build_gcc/gcc.mk new file mode 100644 index 000000000..e7436816e --- /dev/null +++ b/hardware/sam/cores/sam/build_gcc/gcc.mk @@ -0,0 +1,66 @@ + +# Tool suffix when cross-compiling +#CROSS_COMPILE = ../../../../tools/CodeSourcery_arm/bin/arm-none-eabi- +#CROSS_COMPILE = C:/CodeSourcery_2011.03-42/bin/arm-none-eabi- +CROSS_COMPILE = $(ARM_GCC_TOOLCHAIN)/arm-none-eabi- + +# Compilation tools +AR = $(CROSS_COMPILE)ar +CC = $(CROSS_COMPILE)gcc +CXX = $(CROSS_COMPILE)g++ +AS = $(CROSS_COMPILE)as +#LD = $(CROSS_COMPILE)ld +#SIZE = $(CROSS_COMPILE)size +NM = $(CROSS_COMPILE)nm +#OBJCOPY = $(CROSS_COMPILE)objcopy +RM=cs-rm -Rf +SEP=\\ + +# --------------------------------------------------------------------------------------- +# C Flags + +CFLAGS += -Wall -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int +CFLAGS += -Werror-implicit-function-declaration -Wmain -Wparentheses +CFLAGS += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused +CFLAGS += -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef +CFLAGS += -Wshadow -Wpointer-arith -Wbad-function-cast -Wwrite-strings +CFLAGS += -Wsign-compare -Waggregate-return -Wstrict-prototypes +CFLAGS += -Wmissing-prototypes -Wmissing-declarations +CFLAGS += -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations +CFLAGS += -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wlong-long +CFLAGS += -Wunreachable-code +CFLAGS += -Wcast-align +#CFLAGS += -Wmissing-noreturn +#CFLAGS += -Wconversion + +CFLAGS += --param max-inline-insns-single=500 -mcpu=cortex-m3 -mthumb -mlong-calls -ffunction-sections -nostdlib +CFLAGS += $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) -D$(VARIANT) + +# To reduce application size use only integer printf function. +CFLAGS += -Dprintf=iprintf + +# --------------------------------------------------------------------------------------- +# CPP Flags + +CPPFLAGS += -Wall -Wchar-subscripts -Wcomment -Wformat=2 +CPPFLAGS += -Wmain -Wparentheses -Wcast-align -Wunreachable-code +CPPFLAGS += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused +CPPFLAGS += -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef +CPPFLAGS += -Wshadow -Wpointer-arith -Wwrite-strings +CPPFLAGS += -Wsign-compare -Waggregate-return -Wmissing-declarations +CPPFLAGS += -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations +CPPFLAGS += -Wpacked -Wredundant-decls -Winline -Wlong-long +#CPPFLAGS += -Wmissing-noreturn +#CPPFLAGS += -Wconversion + +#-fno-rtti -fno-exceptions +CPPFLAGS += --param max-inline-insns-single=500 -mcpu=cortex-m3 -mthumb -mlong-calls -ffunction-sections +CPPFLAGS += $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) + +# To reduce application size use only integer printf function. +CPPFLAGS += -Dprintf=iprintf + +# --------------------------------------------------------------------------------------- +# ASM Flags + +ASFLAGS = -mcpu=cortex-m3 -mthumb -Wall -g $(OPTIMIZATION) $(INCLUDES) diff --git a/hardware/sam/cores/sam/build_gcc/libarduino_arduino_due.mk b/hardware/sam/cores/sam/build_gcc/libarduino_arduino_due.mk new file mode 100644 index 000000000..645f794f9 --- /dev/null +++ b/hardware/sam/cores/sam/build_gcc/libarduino_arduino_due.mk @@ -0,0 +1,152 @@ +# Makefile for compiling libArduino +.SUFFIXES: .o .a .c .s + +CHIP=__SAM3U4E__ +VARIANT=arduino_due +LIBNAME=libarduino_$(VARIANT) +TOOLCHAIN=gcc + +#------------------------------------------------------------------------------- +# Path +#------------------------------------------------------------------------------- + +# Output directories +#OUTPUT_BIN = ../lib +OUTPUT_BIN = .. + +# Libraries +PROJECT_BASE_PATH = .. +SYSTEM_PATH = ../../../system +CMSIS_PATH = $(SYSTEM_PATH)/CMSIS/Include +VARIANT_PATH = ../../../variants/$(VARIANT) + +#------------------------------------------------------------------------------- +# Files +#------------------------------------------------------------------------------- + +vpath %.h $(PROJECT_BASE_PATH) $(SYSTEM_PATH) $(VARIANT_PATH) +vpath %.c $(PROJECT_BASE_PATH) $(VARIANT_PATH) +vpath %.cpp $(PROJECT_BASE_PATH) $(PROJECT_BASE_PATH) + +VPATH+=$(PROJECT_BASE_PATH) + +INCLUDES = +INCLUDES += -I$(PROJECT_BASE_PATH) +INCLUDES += -I$(SYSTEM_PATH) +INCLUDES += -I$(SYSTEM_PATH)/libsam +INCLUDES += -I$(VARIANT_PATH) +INCLUDES += -I$(CMSIS_PATH) + +#------------------------------------------------------------------------------- +ifdef DEBUG +include debug.mk +else +include release.mk +endif + +#------------------------------------------------------------------------------- +# Tools +#------------------------------------------------------------------------------- + +include $(TOOLCHAIN).mk + +#------------------------------------------------------------------------------- +ifdef DEBUG +OUTPUT_OBJ=debug +OUTPUT_LIB=$(LIBNAME)_$(TOOLCHAIN)_dbg.a +else +OUTPUT_OBJ=release +OUTPUT_LIB=$(LIBNAME)_$(TOOLCHAIN)_rel.a +endif + +OUTPUT_PATH=$(OUTPUT_OBJ)_$(VARIANT) + +#------------------------------------------------------------------------------- +# C source files and objects +#------------------------------------------------------------------------------- +C_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.c) + +C_OBJ_TEMP = $(patsubst %.c, %.o, $(notdir $(C_SRC))) + +# during development, remove some files +C_OBJ_FILTER=dlib_lowlevel_sam3.o + +C_OBJ=$(filter-out $(C_OBJ_FILTER), $(C_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# CPP source files and objects +#------------------------------------------------------------------------------- +CPP_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.cpp) + +CPP_OBJ_TEMP = $(patsubst %.cpp, %.o, $(notdir $(CPP_SRC))) + +# during development, remove some files +CPP_OBJ_FILTER= + +CPP_OBJ=$(filter-out $(CPP_OBJ_FILTER), $(CPP_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# Assembler source files and objects +#------------------------------------------------------------------------------- +A_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.s) + +A_OBJ_TEMP=$(patsubst %.s, %.o, $(notdir $(A_SRC))) + +# during development, remove some files +A_OBJ_FILTER= + +A_OBJ=$(filter-out $(A_OBJ_FILTER), $(A_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- +all: $(VARIANT) + +$(VARIANT): create_output $(OUTPUT_LIB) + +.PHONY: create_output +create_output: + @echo --- Preparing $(VARIANT) files in $(OUTPUT_PATH) $(OUTPUT_BIN) + @echo ------------------------- + @echo *$(INCLUDES) + @echo ------------------------- + @echo *$(C_SRC) + @echo ------------------------- + @echo *$(C_OBJ) + @echo ------------------------- + @echo *$(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) + @echo ------------------------- + @echo *$(CPP_SRC) + @echo ------------------------- + @echo *$(CPP_OBJ) + @echo ------------------------- + @echo *$(addprefix $(OUTPUT_PATH)/, $(CPP_OBJ)) + @echo ------------------------- + @echo *$(A_SRC) + @echo ------------------------- + +# -@mkdir $(subst /,$(SEP),$(OUTPUT_BIN)) 1>NUL 2>&1 + -mkdir $(subst /,$(SEP),$(OUTPUT_BIN)) + -@mkdir $(OUTPUT_PATH) 1>NUL 2>&1 + +$(addprefix $(OUTPUT_PATH)/,$(C_OBJ)): $(OUTPUT_PATH)/%.o: %.c +# @$(CC) -v -c $(CFLAGS) $< -o $@ + @$(CC) -c $(CFLAGS) $< -o $@ + +$(addprefix $(OUTPUT_PATH)/,$(CPP_OBJ)): $(OUTPUT_PATH)/%.o: %.cpp +# @$(CC) -c $(CPPFLAGS) $< -o $@ + @$(CC) -xc++ -c $(CPPFLAGS) $< -o $@ + +$(addprefix $(OUTPUT_PATH)/,$(A_OBJ)): $(OUTPUT_PATH)/%.o: %.s + @$(AS) -c $(ASFLAGS) $< -o $@ + +$(OUTPUT_LIB): $(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(CPP_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(A_OBJ)) + @$(AR) -v -r "$(OUTPUT_BIN)/$@" $^ + @$(NM) "$(OUTPUT_BIN)/$@" > "$(OUTPUT_BIN)/$@.txt" + + +.PHONY: clean +clean: + @echo --- Cleaning $(VARIANT) files [$(OUTPUT_PATH)$(SEP)*.o] + -@$(RM) $(OUTPUT_PATH) 1>NUL 2>&1 + -@$(RM) $(OUTPUT_BIN)/$(OUTPUT_LIB) 1>NUL 2>&1 diff --git a/hardware/sam/cores/sam/build_gcc/libarduino_sam3s_ek.mk b/hardware/sam/cores/sam/build_gcc/libarduino_sam3s_ek.mk new file mode 100644 index 000000000..c2547027c --- /dev/null +++ b/hardware/sam/cores/sam/build_gcc/libarduino_sam3s_ek.mk @@ -0,0 +1,152 @@ +# Makefile for compiling libArduino +.SUFFIXES: .o .a .c .s + +CHIP=__SAM3S4C__ +VARIANT=sam3s_ek +LIBNAME=libarduino_$(VARIANT) +TOOLCHAIN=gcc + +#------------------------------------------------------------------------------- +# Path +#------------------------------------------------------------------------------- + +# Output directories +#OUTPUT_BIN = ../lib +OUTPUT_BIN = .. + +# Libraries +PROJECT_BASE_PATH = .. +SYSTEM_PATH = ../../../system +CMSIS_PATH = $(SYSTEM_PATH)/CMSIS/Include +VARIANT_PATH = ../../../variants/$(VARIANT) + +#------------------------------------------------------------------------------- +# Files +#------------------------------------------------------------------------------- + +vpath %.h $(PROJECT_BASE_PATH) $(SYSTEM_PATH) $(VARIANT_PATH) +vpath %.c $(PROJECT_BASE_PATH) $(VARIANT_PATH) +vpath %.cpp $(PROJECT_BASE_PATH) $(PROJECT_BASE_PATH) + +VPATH+=$(PROJECT_BASE_PATH) + +INCLUDES = +INCLUDES += -I$(PROJECT_BASE_PATH) +INCLUDES += -I$(SYSTEM_PATH) +INCLUDES += -I$(SYSTEM_PATH)/libsam +INCLUDES += -I$(VARIANT_PATH) +INCLUDES += -I$(CMSIS_PATH) + +#------------------------------------------------------------------------------- +ifdef DEBUG +include debug.mk +else +include release.mk +endif + +#------------------------------------------------------------------------------- +# Tools +#------------------------------------------------------------------------------- + +include $(TOOLCHAIN).mk + +#------------------------------------------------------------------------------- +ifdef DEBUG +OUTPUT_OBJ=debug +OUTPUT_LIB=$(LIBNAME)_$(TOOLCHAIN)_dbg.a +else +OUTPUT_OBJ=release +OUTPUT_LIB=$(LIBNAME)_$(TOOLCHAIN)_rel.a +endif + +OUTPUT_PATH=$(OUTPUT_OBJ)_$(VARIANT) + +#------------------------------------------------------------------------------- +# C source files and objects +#------------------------------------------------------------------------------- +C_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.c) + +C_OBJ_TEMP = $(patsubst %.c, %.o, $(notdir $(C_SRC))) + +# during development, remove some files +C_OBJ_FILTER=dlib_lowlevel_sam3.o + +C_OBJ=$(filter-out $(C_OBJ_FILTER), $(C_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# CPP source files and objects +#------------------------------------------------------------------------------- +CPP_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.cpp) + +CPP_OBJ_TEMP = $(patsubst %.cpp, %.o, $(notdir $(CPP_SRC))) + +# during development, remove some files +CPP_OBJ_FILTER= + +CPP_OBJ=$(filter-out $(CPP_OBJ_FILTER), $(CPP_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# Assembler source files and objects +#------------------------------------------------------------------------------- +A_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.s) + +A_OBJ_TEMP=$(patsubst %.s, %.o, $(notdir $(A_SRC))) + +# during development, remove some files +A_OBJ_FILTER= + +A_OBJ=$(filter-out $(A_OBJ_FILTER), $(A_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- +all: $(VARIANT) + +$(VARIANT): create_output $(OUTPUT_LIB) + +.PHONY: create_output +create_output: + @echo --- Preparing $(VARIANT) files in $(OUTPUT_PATH) $(OUTPUT_BIN) + @echo ------------------------- + @echo *$(INCLUDES) + @echo ------------------------- + @echo *$(C_SRC) + @echo ------------------------- + @echo *$(C_OBJ) + @echo ------------------------- + @echo *$(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) + @echo ------------------------- + @echo *$(CPP_SRC) + @echo ------------------------- + @echo *$(CPP_OBJ) + @echo ------------------------- + @echo *$(addprefix $(OUTPUT_PATH)/, $(CPP_OBJ)) + @echo ------------------------- + @echo *$(A_SRC) + @echo ------------------------- + +# -@mkdir $(subst /,$(SEP),$(OUTPUT_BIN)) 1>NUL 2>&1 + -mkdir $(subst /,$(SEP),$(OUTPUT_BIN)) + -@mkdir $(OUTPUT_PATH) 1>NUL 2>&1 + +$(addprefix $(OUTPUT_PATH)/,$(C_OBJ)): $(OUTPUT_PATH)/%.o: %.c +# @$(CC) -v -c $(CFLAGS) $< -o $@ + @$(CC) -c $(CFLAGS) $< -o $@ + +$(addprefix $(OUTPUT_PATH)/,$(CPP_OBJ)): $(OUTPUT_PATH)/%.o: %.cpp +# @$(CC) -c $(CPPFLAGS) $< -o $@ + @$(CC) -xc++ -c $(CPPFLAGS) $< -o $@ + +$(addprefix $(OUTPUT_PATH)/,$(A_OBJ)): $(OUTPUT_PATH)/%.o: %.s + @$(AS) -c $(ASFLAGS) $< -o $@ + +$(OUTPUT_LIB): $(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(CPP_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(A_OBJ)) + @$(AR) -v -r "$(OUTPUT_BIN)/$@" $^ + @$(NM) "$(OUTPUT_BIN)/$@" > "$(OUTPUT_BIN)/$@.txt" + + +.PHONY: clean +clean: + @echo --- Cleaning $(VARIANT) files [$(OUTPUT_PATH)$(SEP)*.o] + -@$(RM) $(OUTPUT_PATH) 1>NUL 2>&1 + -@$(RM) $(OUTPUT_BIN)/$(OUTPUT_LIB) 1>NUL 2>&1 diff --git a/hardware/sam/cores/sam/build_gcc/libarduino_sam3u_ek.mk b/hardware/sam/cores/sam/build_gcc/libarduino_sam3u_ek.mk new file mode 100644 index 000000000..46c101a35 --- /dev/null +++ b/hardware/sam/cores/sam/build_gcc/libarduino_sam3u_ek.mk @@ -0,0 +1,152 @@ +# Makefile for compiling libArduino +.SUFFIXES: .o .a .c .s + +CHIP=__SAM3U4E__ +VARIANT=sam3u_ek +LIBNAME=libarduino_$(VARIANT) +TOOLCHAIN=gcc + +#------------------------------------------------------------------------------- +# Path +#------------------------------------------------------------------------------- + +# Output directories +#OUTPUT_BIN = ../lib +OUTPUT_BIN = .. + +# Libraries +PROJECT_BASE_PATH = .. +SYSTEM_PATH = ../../../system +CMSIS_PATH = $(SYSTEM_PATH)/CMSIS/Include +VARIANT_PATH = ../../../variants/$(VARIANT) + +#------------------------------------------------------------------------------- +# Files +#------------------------------------------------------------------------------- + +vpath %.h $(PROJECT_BASE_PATH) $(SYSTEM_PATH) $(VARIANT_PATH) +vpath %.c $(PROJECT_BASE_PATH) $(VARIANT_PATH) +vpath %.cpp $(PROJECT_BASE_PATH) $(PROJECT_BASE_PATH) + +VPATH+=$(PROJECT_BASE_PATH) + +INCLUDES = +INCLUDES += -I$(PROJECT_BASE_PATH) +INCLUDES += -I$(SYSTEM_PATH) +INCLUDES += -I$(SYSTEM_PATH)/libsam +INCLUDES += -I$(VARIANT_PATH) +INCLUDES += -I$(CMSIS_PATH) + +#------------------------------------------------------------------------------- +ifdef DEBUG +include debug.mk +else +include release.mk +endif + +#------------------------------------------------------------------------------- +# Tools +#------------------------------------------------------------------------------- + +include $(TOOLCHAIN).mk + +#------------------------------------------------------------------------------- +ifdef DEBUG +OUTPUT_OBJ=debug +OUTPUT_LIB=$(LIBNAME)_$(TOOLCHAIN)_dbg.a +else +OUTPUT_OBJ=release +OUTPUT_LIB=$(LIBNAME)_$(TOOLCHAIN)_rel.a +endif + +OUTPUT_PATH=$(OUTPUT_OBJ)_$(VARIANT) + +#------------------------------------------------------------------------------- +# C source files and objects +#------------------------------------------------------------------------------- +C_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.c) + +C_OBJ_TEMP = $(patsubst %.c, %.o, $(notdir $(C_SRC))) + +# during development, remove some files +C_OBJ_FILTER=dlib_lowlevel_sam3.o + +C_OBJ=$(filter-out $(C_OBJ_FILTER), $(C_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# CPP source files and objects +#------------------------------------------------------------------------------- +CPP_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.cpp) + +CPP_OBJ_TEMP = $(patsubst %.cpp, %.o, $(notdir $(CPP_SRC))) + +# during development, remove some files +CPP_OBJ_FILTER= + +CPP_OBJ=$(filter-out $(CPP_OBJ_FILTER), $(CPP_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# Assembler source files and objects +#------------------------------------------------------------------------------- +A_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.s) + +A_OBJ_TEMP=$(patsubst %.s, %.o, $(notdir $(A_SRC))) + +# during development, remove some files +A_OBJ_FILTER= + +A_OBJ=$(filter-out $(A_OBJ_FILTER), $(A_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- +all: $(VARIANT) + +$(VARIANT): create_output $(OUTPUT_LIB) + +.PHONY: create_output +create_output: + @echo --- Preparing $(VARIANT) files in $(OUTPUT_PATH) $(OUTPUT_BIN) + @echo ------------------------- + @echo *$(INCLUDES) + @echo ------------------------- + @echo *$(C_SRC) + @echo ------------------------- + @echo *$(C_OBJ) + @echo ------------------------- + @echo *$(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) + @echo ------------------------- + @echo *$(CPP_SRC) + @echo ------------------------- + @echo *$(CPP_OBJ) + @echo ------------------------- + @echo *$(addprefix $(OUTPUT_PATH)/, $(CPP_OBJ)) + @echo ------------------------- + @echo *$(A_SRC) + @echo ------------------------- + +# -@mkdir $(subst /,$(SEP),$(OUTPUT_BIN)) 1>NUL 2>&1 + -mkdir $(subst /,$(SEP),$(OUTPUT_BIN)) + -@mkdir $(OUTPUT_PATH) 1>NUL 2>&1 + +$(addprefix $(OUTPUT_PATH)/,$(C_OBJ)): $(OUTPUT_PATH)/%.o: %.c +# @$(CC) -v -c $(CFLAGS) $< -o $@ + @$(CC) -c $(CFLAGS) $< -o $@ + +$(addprefix $(OUTPUT_PATH)/,$(CPP_OBJ)): $(OUTPUT_PATH)/%.o: %.cpp +# @$(CC) -c $(CPPFLAGS) $< -o $@ + @$(CC) -xc++ -c $(CPPFLAGS) $< -o $@ + +$(addprefix $(OUTPUT_PATH)/,$(A_OBJ)): $(OUTPUT_PATH)/%.o: %.s + @$(AS) -c $(ASFLAGS) $< -o $@ + +$(OUTPUT_LIB): $(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(CPP_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(A_OBJ)) + @$(AR) -v -r "$(OUTPUT_BIN)/$@" $^ + @$(NM) "$(OUTPUT_BIN)/$@" > "$(OUTPUT_BIN)/$@.txt" + + +.PHONY: clean +clean: + @echo --- Cleaning $(VARIANT) files [$(OUTPUT_PATH)$(SEP)*.o] + -@$(RM) $(OUTPUT_PATH) 1>NUL 2>&1 + -@$(RM) $(OUTPUT_BIN)/$(OUTPUT_LIB) 1>NUL 2>&1 diff --git a/hardware/sam/cores/sam/build_gcc/release.mk b/hardware/sam/cores/sam/build_gcc/release.mk new file mode 100644 index 000000000..b4e815985 --- /dev/null +++ b/hardware/sam/cores/sam/build_gcc/release.mk @@ -0,0 +1,8 @@ + +# Optimization level +# -O1 Optimize +# -O2 Optimize even more +# -O3 Optimize yet more +# -O0 Reduce compilation time and make debugging produce the expected results +# -Os Optimize for size +OPTIMIZATION = -Os diff --git a/hardware/sam/cores/sam/build_iar/libarduino.ewd b/hardware/sam/cores/sam/build_iar/libarduino.ewd new file mode 100644 index 000000000..66b367087 --- /dev/null +++ b/hardware/sam/cores/sam/build_iar/libarduino.ewd @@ -0,0 +1,2587 @@ + + + + 2 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + ANGEL_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IARROM_ID + 2 + + 1 + 1 + 1 + + + + + + + + + JLINK_ID + 2 + + 13 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + MACRAIGOR_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + PEMICRO_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + + + + + + + RDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + + + + + + + STLINK_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin + 1 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + ANGEL_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IARROM_ID + 2 + + 1 + 1 + 0 + + + + + + + + + JLINK_ID + 2 + + 13 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + MACRAIGOR_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + PEMICRO_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + + + + + + + RDI_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + + + + + + + STLINK_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin + 1 + + + + + Debug_sam3s-ek + + ARM + + 1 + + C-SPY + 2 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + ANGEL_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IARROM_ID + 2 + + 1 + 1 + 1 + + + + + + + + + JLINK_ID + 2 + + 13 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + MACRAIGOR_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + PEMICRO_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + + + + + + + RDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + + + + + + + STLINK_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin + 1 + + + + + + diff --git a/hardware/sam/cores/sam/build_iar/libarduino.ewp b/hardware/sam/cores/sam/build_iar/libarduino.ewp new file mode 100644 index 000000000..99ee36770 --- /dev/null +++ b/hardware/sam/cores/sam/build_iar/libarduino.ewp @@ -0,0 +1,2808 @@ + + + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 21 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 28 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 13 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 21 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 28 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 13 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + Debug_sam3s-ek + + ARM + + 1 + + General + 3 + + 21 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 28 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 13 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + $PROJ_DIR$\..\Arduino.h + + + $PROJ_DIR$\..\binary.h + + + $PROJ_DIR$\..\HardwareSerial.h + + + $PROJ_DIR$\..\itoa.c + + + $PROJ_DIR$\..\itoa.h + + + $PROJ_DIR$\..\main.cpp + + + $PROJ_DIR$\..\Print.cpp + + + $PROJ_DIR$\..\Print.h + + + $PROJ_DIR$\..\RingBuffer.cpp + + + $PROJ_DIR$\..\RingBuffer.h + + + $PROJ_DIR$\..\Stream.h + + + $PROJ_DIR$\..\syscalls.h + + Debug + + + + $PROJ_DIR$\..\syscalls_sam3.c + + Debug + + + + $PROJ_DIR$\..\Tone.cpp + + Debug + + + + $PROJ_DIR$\..\Tone.h + + + $PROJ_DIR$\..\WCharacter.h + + + $PROJ_DIR$\..\WInterrupts.c + + + $PROJ_DIR$\..\WInterrupts.h + + + $PROJ_DIR$\..\wiring.c + + + $PROJ_DIR$\..\wiring.h + + + $PROJ_DIR$\..\wiring_analog.c + + Debug + + + + $PROJ_DIR$\..\wiring_analog.h + + + $PROJ_DIR$\..\wiring_constants.h + + + $PROJ_DIR$\..\wiring_digital.c + + + $PROJ_DIR$\..\wiring_digital.h + + + $PROJ_DIR$\..\wiring_private.h + + + $PROJ_DIR$\..\wiring_pulse.c + + Debug + + + + $PROJ_DIR$\..\wiring_pulse.h + + + $PROJ_DIR$\..\wiring_shift.c + + + $PROJ_DIR$\..\wiring_shift.h + + + $PROJ_DIR$\..\WMath.cpp + + + $PROJ_DIR$\..\WMath.h + + + $PROJ_DIR$\..\WString.cpp + + + $PROJ_DIR$\..\WString.h + + + + diff --git a/hardware/sam/cores/sam/cortex_handlers.c b/hardware/sam/cores/sam/cortex_handlers.c new file mode 100644 index 000000000..7df048b81 --- /dev/null +++ b/hardware/sam/cores/sam/cortex_handlers.c @@ -0,0 +1,68 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "Arduino.h" + +#ifdef __cplusplus +extern "C" { +#endif + +extern void NMI_Handler( void ) +{ + for ( ;; ) ; +} + +extern void HardFault_Handler( void ) +{ + for ( ;; ) ; +} + +extern void MemManage_Handler( void ) +{ + for ( ;; ) ; +} + +extern void BusFault_Handler( void ) +{ + for ( ;; ) ; +} + +extern void UsageFault_Handler( void ) +{ + for ( ;; ) ; +} + +extern void SVC_Handler( void ) +{ + for ( ;; ) ; +} + +extern void DebugMon_Handler( void ) +{ + for ( ;; ) ; +} + +extern void PendSV_Handler( void ) +{ + for ( ;; ) ; +} + +#ifdef __cplusplus +} +#endif + diff --git a/hardware/sam/cores/sam/cxxabi-compat.cpp b/hardware/sam/cores/sam/cxxabi-compat.cpp new file mode 100644 index 000000000..7370b0be1 --- /dev/null +++ b/hardware/sam/cores/sam/cxxabi-compat.cpp @@ -0,0 +1,26 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +extern "C" void __cxa_pure_virtual(void) ; + +/* We compile with nodefaultlibs, so we need to provide an error + * handler for an empty pure virtual function */ +extern "C" void __cxa_pure_virtual(void) { + while(1) + ; +} diff --git a/hardware/sam/cores/sam/iar_calls_sam3.c b/hardware/sam/cores/sam/iar_calls_sam3.c new file mode 100644 index 000000000..253f3b092 --- /dev/null +++ b/hardware/sam/cores/sam/iar_calls_sam3.c @@ -0,0 +1,109 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +/** +* \file +* +* Implementation of low level library. +* +*/ + +#if defined __ICCARM__ /* IAR Ewarm 5.41+ */ + +#include "board.h" + +#include +#include +#include +#include +#include + +extern __weak size_t __write( int handle, const unsigned char *buf, size_t bufSize ) +{ + size_t nChars = 0 ; + + /* Check for the command to flush all handles */ + if ( handle == -1 ) + { + return 0 ; + } + + /* Check for stdout and stderr (only necessary if FILE descriptors are enabled.) */ + if ( handle != 1 && handle != 2 ) + { + /* remove warnings */ + return 0xfffffff ; + } + + for ( /* Empty */ ; bufSize > 0 ; --bufSize ) + { + while ( !uart_is_tx_ready(CONSOLE_UART) ) + ; + uart_write( CONSOLE_UART, *buf ) ; + ++buf ; + ++nChars ; + } + + return nChars ; +} + + +extern __weak size_t __read( int handle, unsigned char *buf, size_t bufSize ) +{ + size_t nChars = 0 ; + + /* Check for stdin (only necessary if FILE descriptors are enabled) */ + if ( handle != 0 ) + { + /* remove warnings */ + return 0xfffffff ; + } + + for ( /*Empty*/; bufSize > 0 ; --bufSize ) + { + uint8_t c; + while (uart_read( CONSOLE_UART, &c )) + ; + + if ( c == 0 ) + { + break ; + } + *buf++ = c ; + ++nChars ; + } + + return nChars ; +} + +/** + * \brief Outputs a character on the UART. + * + * \param c Character to output. + * + * \return The character that was output. + */ +extern __weak signed int putchar( signed int c ) +{ + while ( !uart_is_tx_ready(CONSOLE_UART) ) + ; + uart_write( CONSOLE_UART, c ) ; + + return c ; +} +#endif // defined __ICCARM__ diff --git a/hardware/sam/cores/sam/itoa.c b/hardware/sam/cores/sam/itoa.c new file mode 100644 index 000000000..fc3576602 --- /dev/null +++ b/hardware/sam/cores/sam/itoa.c @@ -0,0 +1,170 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "itoa.h" +#include + +#ifdef __cplusplus +extern "C"{ +#endif // __cplusplus + +#if 0 +/* reverse: reverse string s in place */ +static void reverse( char s[] ) +{ + int i, j ; + char c ; + + for ( i = 0, j = strlen(s)-1 ; i < j ; i++, j-- ) + { + c = s[i] ; + s[i] = s[j] ; + s[j] = c ; + } +} + +/* itoa: convert n to characters in s */ +extern void itoa( int n, char s[] ) +{ + int i, sign ; + + if ( (sign = n) < 0 ) /* record sign */ + { + n = -n; /* make n positive */ + } + + i = 0; + do + { /* generate digits in reverse order */ + s[i++] = n % 10 + '0'; /* get next digit */ + } while ((n /= 10) > 0) ; /* delete it */ + + if (sign < 0 ) + { + s[i++] = '-'; + } + + s[i] = '\0'; + + reverse( s ) ; +} + +#else + +extern char* itoa( int value, char *string, int radix ) +{ + return ltoa( value, string, radix ) ; +} + +extern char* ltoa( long value, char *string, int radix ) +{ + char tmp[33]; + char *tp = tmp; + long i; + unsigned long v; + int sign; + char *sp; + + if ( string == NULL ) + { + return 0 ; + } + + if (radix > 36 || radix <= 1) + { + return 0 ; + } + + sign = (radix == 10 && value < 0); + if (sign) + { + v = -value; + } + else + { + v = (unsigned long)value; + } + + while (v || tp == tmp) + { + i = v % radix; + v = v / radix; + if (i < 10) + *tp++ = i+'0'; + else + *tp++ = i + 'a' - 10; + } + + sp = string; + + if (sign) + *sp++ = '-'; + while (tp > tmp) + *sp++ = *--tp; + *sp = 0; + + return string; +} + +extern char* utoa( unsigned long value, char *string, int radix ) +{ + return ultoa( value, string, radix ) ; +} + +extern char* ultoa( unsigned long value, char *string, int radix ) +{ + char tmp[33]; + char *tp = tmp; + long i; + unsigned long v = value; + char *sp; + + if ( string == NULL ) + { + return 0; + } + + if (radix > 36 || radix <= 1) + { + return 0; + } + + while (v || tp == tmp) + { + i = v % radix; + v = v / radix; + if (i < 10) + *tp++ = i+'0'; + else + *tp++ = i + 'a' - 10; + } + + sp = string; + + + while (tp > tmp) + *sp++ = *--tp; + *sp = 0; + + return string; +} +#endif /* 0 */ + +#ifdef __cplusplus +} // extern "C" +#endif // __cplusplus diff --git a/hardware/sam/cores/sam/itoa.h b/hardware/sam/cores/sam/itoa.h new file mode 100644 index 000000000..59af10947 --- /dev/null +++ b/hardware/sam/cores/sam/itoa.h @@ -0,0 +1,42 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _ITOA_ +#define _ITOA_ + +#ifdef __cplusplus +extern "C"{ +#endif // __cplusplus + +#if 0 + +extern void itoa( int n, char s[] ) ; + +#else + +extern char* itoa( int value, char *string, int radix ) ; +extern char* ltoa( long value, char *string, int radix ) ; +extern char* utoa( unsigned long value, char *string, int radix ) ; +extern char* ultoa( unsigned long value, char *string, int radix ) ; +#endif /* 0 */ + +#ifdef __cplusplus +} // extern "C" +#endif // __cplusplus + +#endif // _ITOA_ diff --git a/hardware/sam/cores/sam/main.cpp b/hardware/sam/cores/sam/main.cpp new file mode 100644 index 000000000..325e6a807 --- /dev/null +++ b/hardware/sam/cores/sam/main.cpp @@ -0,0 +1,37 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#define ARDUINO_MAIN +#include "Arduino.h" + +/* + * \brief Main entry point of Arduino application + */ +int main( void ) +{ + init() ; + + setup() ; + + for ( ; ; ) + { + loop() ; + } + +// return 0 ; +} diff --git a/hardware/sam/cores/sam/prod_test_due/build_gcc/Makefile b/hardware/sam/cores/sam/prod_test_due/build_gcc/Makefile new file mode 100644 index 000000000..a24299e2b --- /dev/null +++ b/hardware/sam/cores/sam/prod_test_due/build_gcc/Makefile @@ -0,0 +1,41 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +SUBMAKE_OPTIONS=--no-builtin-rules --no-builtin-variables + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- + +all: prod_test_due + +.PHONY: prod_test_due +prod_test_due: + @echo --- Making prod_test_due + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f prod_test_due.mk + +.PHONY: clean +clean: + @echo --- Cleaning prod_test_due + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f prod_test_due.mk $@ + +.PHONY: debug +debug: + @echo --- Debugging prod_test_due + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f prod_test_due.mk $@ + diff --git a/hardware/sam/cores/sam/prod_test_due/build_gcc/debug.mk b/hardware/sam/cores/sam/prod_test_due/build_gcc/debug.mk new file mode 100644 index 000000000..d0716744a --- /dev/null +++ b/hardware/sam/cores/sam/prod_test_due/build_gcc/debug.mk @@ -0,0 +1,25 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Optimization level +# -O1 Optimize +# -O2 Optimize even more +# -O3 Optimize yet more +# -O0 Reduce compilation time and make debugging produce the expected results +# -Os Optimize for size +OPTIMIZATION = -g -O0 -DDEBUG diff --git a/hardware/sam/cores/sam/prod_test_due/build_gcc/gcc.mk b/hardware/sam/cores/sam/prod_test_due/build_gcc/gcc.mk new file mode 100644 index 000000000..f26b9b882 --- /dev/null +++ b/hardware/sam/cores/sam/prod_test_due/build_gcc/gcc.mk @@ -0,0 +1,79 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Tool suffix when cross-compiling +#CROSS_COMPILE = ../../../../tools/CodeSourcery_arm/bin/arm-none-eabi- +#CROSS_COMPILE = C:/CodeSourcery_2011.03-42/bin/arm-none-eabi- +CROSS_COMPILE = $(ARM_GCC_TOOLCHAIN)/arm-none-eabi- + +# Compilation tools +AR = $(CROSS_COMPILE)ar +CC = $(CROSS_COMPILE)gcc +CXX = $(CROSS_COMPILE)g++ +AS = $(CROSS_COMPILE)as +GDB = $(CROSS_COMPILE)gdb +SIZE = $(CROSS_COMPILE)size +NM = $(CROSS_COMPILE)nm +OBJCOPY = $(CROSS_COMPILE)objcopy +RM=cs-rm -Rf +SEP=\\ + +# --------------------------------------------------------------------------------------- +# C Flags + +CFLAGS += -Wall -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int +CFLAGS += -Werror-implicit-function-declaration -Wmain -Wparentheses +CFLAGS += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused +CFLAGS += -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef +CFLAGS += -Wshadow -Wpointer-arith -Wbad-function-cast -Wwrite-strings +CFLAGS += -Wsign-compare -Waggregate-return -Wstrict-prototypes +CFLAGS += -Wmissing-prototypes -Wmissing-declarations +CFLAGS += -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations +CFLAGS += -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wlong-long +CFLAGS += -Wunreachable-code +CFLAGS += -Wcast-align + +CFLAGS += --param max-inline-insns-single=500 -mcpu=cortex-m3 -mthumb -mlong-calls -ffunction-sections -nostdlib +CFLAGS += $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) -D$(VARIANT) + +# To reduce application size use only integer printf function. +CFLAGS += -Dprintf=iprintf + +# --------------------------------------------------------------------------------------- +# CPP Flags + +CPPFLAGS += -Wall -Wchar-subscripts -Wcomment -Wformat=2 +CPPFLAGS += -Wmain -Wparentheses -Wcast-align -Wunreachable-code +CPPFLAGS += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused +CPPFLAGS += -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef +CPPFLAGS += -Wshadow -Wpointer-arith -Wwrite-strings +CPPFLAGS += -Wsign-compare -Waggregate-return -Wmissing-declarations +CPPFLAGS += -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations +CPPFLAGS += -Wpacked -Wredundant-decls -Winline -Wlong-long + +#-fno-rtti -fno-exceptions +CPPFLAGS += --param max-inline-insns-single=500 -mcpu=cortex-m3 -mthumb -mlong-calls -ffunction-sections +CPPFLAGS += $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) + +# To reduce application size use only integer printf function. +CPPFLAGS += -Dprintf=iprintf + +# --------------------------------------------------------------------------------------- +# ASM Flags + +ASFLAGS = -mcpu=cortex-m3 -mthumb -Wall -g $(OPTIMIZATION) $(INCLUDES) diff --git a/hardware/sam/cores/sam/prod_test_due/build_gcc/prod_test_due.mk b/hardware/sam/cores/sam/prod_test_due/build_gcc/prod_test_due.mk new file mode 100644 index 000000000..2bf64e1ba --- /dev/null +++ b/hardware/sam/cores/sam/prod_test_due/build_gcc/prod_test_due.mk @@ -0,0 +1,183 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Makefile for compiling libArduino +.SUFFIXES: .o .a .c .s + +# putting default variant +ifeq ("$(VARIANT)", "") +#VARIANT=sam3s_ek +VARIANT=sam3u_ek +#VARIANT=arduino_due +endif + +ifeq ("$(VARIANT)", "sam3s_ek") +CHIP=__SAM3S4C__ +else ifeq ("$(VARIANT)", "sam3u_ek") +CHIP=__SAM3U4E__ +else ifeq ("$(VARIANT)", "arduino_due") +CHIP=__SAM3U4E__ +endif + +TOOLCHAIN=gcc + +#------------------------------------------------------------------------------- +# Path +#------------------------------------------------------------------------------- + +# Libraries +PROJECT_BASE_PATH = ./.. +SYSTEM_PATH = ../../../../system +CMSIS_BASE_PATH = $(SYSTEM_PATH)/CMSIS/Include +VARIANT_PATH = ../../../../variants/$(VARIANT) + +ifeq ($(CHIP), __SAM3S4C__) +CHIP_NAME=sam3s4c +CHIP_SERIE=sam3s +else ifeq ($(CHIP), __SAM3U4E__) +CHIP_NAME=sam3u4e +CHIP_SERIE=sam3u +else ifeq ($(CHIP), __SAM3N4C__) +CHIP_NAME=sam3n4c +CHIP_SERIE=sam3n +else ifeq ($(CHIP), __SAM3X8H__) +CHIP_NAME=sam3x8h +CHIP_SERIE=sam3xa +else +endif + +CMSIS_CHIP_PATH=$(SYSTEM_PATH)/libsam/cmsis/$(CHIP_SERIE) + +# Output directories +OUTPUT_PATH = debug_$(VARIANT) + +#------------------------------------------------------------------------------- +# Files +#------------------------------------------------------------------------------- + +vpath %.h $(PROJECT_BASE_PATH)/.. $(VARIANT_PATH) $(SYSTEM_PATH) $(CMSIS_BASE_PATH) +vpath %.cpp $(PROJECT_BASE_PATH) + +VPATH+=$(PROJECT_BASE_PATH) + +INCLUDES = -I$(PROJECT_BASE_PATH)/.. +INCLUDES += -I$(VARIANT_PATH) +INCLUDES += -I$(VARIANT_PATH)/.. +INCLUDES += -I$(SYSTEM_PATH) +INCLUDES += -I$(SYSTEM_PATH)/libsam +INCLUDES += -I$(CMSIS_BASE_PATH) + +#------------------------------------------------------------------------------- +ifdef DEBUG +include debug.mk +else +include release.mk +endif + +#------------------------------------------------------------------------------- +# Tools +#------------------------------------------------------------------------------- + +include $(TOOLCHAIN).mk + +#------------------------------------------------------------------------------- +ifdef DEBUG +OUTPUT_OBJ=debug +LIBS_POSTFIX=dbg +else +OUTPUT_OBJ=release +LIBS_POSTFIX=rel +endif + +OUTPUT_BIN=test_$(TOOLCHAIN)_$(LIBS_POSTFIX) +#LIBS=-L../libsam_$(CHIP_NAME)_$(TOOLCHAIN)_rel.a -L../arduino_$(VARIANT)_$(TOOLCHAIN)_rel.a +# +LIBS=-Wl,--start-group -lgcc -lc -lstdc++ -lsam_$(CHIP_NAME)_$(TOOLCHAIN)_$(LIBS_POSTFIX) -larduino_$(VARIANT)_$(TOOLCHAIN)_$(LIBS_POSTFIX) -lvariant_$(VARIANT)_$(TOOLCHAIN)_$(LIBS_POSTFIX) -Wl,--end-group + +LIB_PATH =-L$(PROJECT_BASE_PATH)/.. +LIB_PATH+=-L=/lib/thumb2 +#LIB_PATH+=-L=/../lib/gcc/arm-none-eabi/4.5.2/thumb2 + +LDFLAGS= -mcpu=cortex-m3 -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols + +#------------------------------------------------------------------------------- +# CPP source files and objects +#------------------------------------------------------------------------------- +CPP_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.cpp) + +CPP_OBJ_TEMP = $(patsubst %.cpp, %.o, $(notdir $(CPP_SRC))) + +# during development, remove some files +CPP_OBJ_FILTER= + +CPP_OBJ=$(filter-out $(CPP_OBJ_FILTER), $(CPP_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- +all: prod_test_due + +prod_test_due: create_output $(OUTPUT_BIN) + +.PHONY: create_output +create_output: + @echo --- Preparing $(VARIANT) files in $(OUTPUT_PATH) $(OUTPUT_BIN) + @echo ------------------------- + @echo *$(INCLUDES) + @echo ------------------------- + @echo *$(C_SRC) + @echo ------------------------- + @echo *$(C_OBJ) + @echo ------------------------- + @echo *$(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) + @echo ------------------------- + @echo *$(CPP_SRC) + @echo ------------------------- + @echo *$(CPP_OBJ) + @echo ------------------------- + @echo *$(addprefix $(OUTPUT_PATH)/, $(CPP_OBJ)) + @echo ------------------------- + @echo *$(A_SRC) + @echo ------------------------- + + -@mkdir $(OUTPUT_PATH) 1>NUL 2>&1 + +$(addprefix $(OUTPUT_PATH)/,$(CPP_OBJ)): $(OUTPUT_PATH)/%.o: %.cpp +# @$(CC) -c $(CPPFLAGS) $< -o $@ + @$(CXX) -c $(CPPFLAGS) $< -o $@ +# @$(CXX) -v -c $(CPPFLAGS) $< -o $@ + +$(OUTPUT_BIN): $(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(CPP_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(A_OBJ)) + @$(CC) $(LIB_PATH) $(LDFLAGS) -T"$(VARIANT_PATH)/linker_scripts/gcc/flash.ld" -Wl,-Map,$(OUTPUT_PATH)/$@.map -o $(OUTPUT_PATH)/$@.elf $^ $(LIBS) +# @$(CC) $(LIB_PATH) $(LDFLAGS) -T"$(VARIANT_PATH)/linker_scripts/gcc/sram.ld" -Wl,-Map,$(OUTPUT_PATH)/$@.map -o $(OUTPUT_PATH)/$@.elf $^ $(LIBS) + @$(NM) $(OUTPUT_PATH)/$@.elf >$(OUTPUT_PATH)/$@.elf.txt + @$(OBJCOPY) -O binary $(OUTPUT_PATH)/$@.elf $(OUTPUT_PATH)/$@.bin + $(SIZE) $^ $(OUTPUT_PATH)/$@.elf + +.PHONY: clean +clean: + @echo --- Cleaning test files + -@$(RM) $(OUTPUT_PATH)/test.o 1>NUL 2>&1 + -@$(RM) $(OUTPUT_PATH)/$(OUTPUT_BIN).elf 1>NUL 2>&1 + -@$(RM) $(OUTPUT_PATH)/$(OUTPUT_BIN).elf.txt 1>NUL 2>&1 + -@$(RM) $(OUTPUT_PATH)/$(OUTPUT_BIN).bin 1>NUL 2>&1 + -@$(RM) $(OUTPUT_PATH)/$(OUTPUT_BIN).map 1>NUL 2>&1 + +debug: test + @$(GDB) -x "$(VARIANT_PATH)/debug_scripts/gcc/$(VARIANT)_flash.gdb" -ex "reset" -readnow -se $(OUTPUT_PATH)/$(OUTPUT_BIN).elf +# @$(GDB) -w -x "$(VARIANT_PATH)/debug_scripts/gcc/$(VARIANT)_sram.gdb" -ex "reset" -readnow -se $(OUTPUT_PATH)/$(OUTPUT_BIN).elf diff --git a/hardware/sam/cores/sam/prod_test_due/build_gcc/release.mk b/hardware/sam/cores/sam/prod_test_due/build_gcc/release.mk new file mode 100644 index 000000000..0d15157f4 --- /dev/null +++ b/hardware/sam/cores/sam/prod_test_due/build_gcc/release.mk @@ -0,0 +1,25 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Optimization level +# -O1 Optimize +# -O2 Optimize even more +# -O3 Optimize yet more +# -O0 Reduce compilation time and make debugging produce the expected results +# -Os Optimize for size +OPTIMIZATION = -Os diff --git a/hardware/sam/cores/sam/prod_test_due/build_iar/prod_test_due.ewd b/hardware/sam/cores/sam/prod_test_due/build_iar/prod_test_due.ewd new file mode 100644 index 000000000..a8513fb89 --- /dev/null +++ b/hardware/sam/cores/sam/prod_test_due/build_iar/prod_test_due.ewd @@ -0,0 +1,1769 @@ + + + + 2 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + ANGEL_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IARROM_ID + 2 + + 1 + 1 + 1 + + + + + + + + + JLINK_ID + 2 + + 13 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + MACRAIGOR_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + PEMICRO_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + + + + + + + RDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + + + + + + + STLINK_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + XDS100_ID + 2 + + 0 + 1 + 1 + + + + + + + $TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin + 1 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + ANGEL_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IARROM_ID + 2 + + 1 + 1 + 0 + + + + + + + + + JLINK_ID + 2 + + 13 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + MACRAIGOR_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + PEMICRO_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + + + + + + + RDI_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + + + + + + + STLINK_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + XDS100_ID + 2 + + 0 + 1 + 0 + + + + + + + $TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin + 1 + + + + + + diff --git a/hardware/sam/cores/sam/prod_test_due/build_iar/prod_test_due.ewp b/hardware/sam/cores/sam/prod_test_due/build_iar/prod_test_due.ewp new file mode 100644 index 000000000..c22825fb8 --- /dev/null +++ b/hardware/sam/cores/sam/prod_test_due/build_iar/prod_test_due.ewp @@ -0,0 +1,1834 @@ + + + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 21 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 28 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 13 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 21 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 28 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 13 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + resources + + arduino_due + + + sam3s_ek + + $PROJ_DIR$\..\..\..\..\variants\sam3s_ek\linker_scripts\iar\sam3s_ek_flash.icf + + + $PROJ_DIR$\..\..\..\..\variants\sam3s_ek\debug_scripts\iar\sam3s_ek_flash.mac + + + $PROJ_DIR$\..\..\..\..\variants\sam3s_ek\linker_scripts\iar\sam3s_ek_sram.icf + + + $PROJ_DIR$\..\..\..\..\variants\sam3s_ek\debug_scripts\iar\sam3s_ek_sram.mac + + + + sam3u_ek + + + + $PROJ_DIR$\..\..\libarduino_sam3s_ek_ewarm_dbg.a + + + $PROJ_DIR$\..\..\libsam_sam3s4c_ewarm_dbg.a + + + $PROJ_DIR$\..\..\libvariant_sam3s_ek_ewarm_dbg.a + + + $PROJ_DIR$\..\test.cpp + + + + diff --git a/hardware/sam/cores/sam/prod_test_due/main.cpp b/hardware/sam/cores/sam/prod_test_due/main.cpp new file mode 100644 index 000000000..59adb4ade --- /dev/null +++ b/hardware/sam/cores/sam/prod_test_due/main.cpp @@ -0,0 +1,219 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "variant.h" + +/* Ensure we are compiling this for Arduino Due */ +#if !defined( arduino_due ) +#error "Error: wrong variant chosen" +#endif + +typedef enum _ePins +{ + /* LEDs */ + PIN_13=0, + PIN_RXL=1, + PIN_TXL=2, + + /* UART */ + PIN_URXD=3, + PIN_UTXD=4, + PIN_UART=5, + + /* USART0 */ + PIN_RXD0=6, + PIN_TXD0=7, + PIN_USART0=8, + + /* USART1 */ + PIN_RXD1=9, + PIN_TXD1=10, + PIN_USART1=11, + + /* USART2 */ + PIN_RXD2=12, + PIN_TXD2=13, + PIN_USART2=14, + + /* SPI */ + PIN_MISO=15, + PIN_MOSI=16, + PIN_SPCK=17, + PIN_NPCS0=18, + + /* TWI0 */ + PIN_SDA1=19, + PIN_SCL1=20, + PIN_TWI0=21, + + /* TWI1 */ + PIN_SDA0=22, + PIN_SCL0=23, + PIN_TWI1=24, + + /* Analog */ + PIN_AD0=25, + PIN_AD1=26, + PIN_AD2=27, + PIN_AD3=28, + PIN_AD4=29, + PIN_AD5=30, + PIN_AD6=31, + PIN_AD7=32, + PIN_AD8=33, + PIN_AD9=34, + PIN_AD10=35, + PIN_AD11=36, + PIN_AD12=37, + PIN_AD13=38, + + /* External DAC */ + PIN_DAC_CS=39, + PIN_DAC_SCK=40, + PIN_DAC_DIN=41, + + /* PWM */ + PIN_PWM=42, + PIN_PWMH0=43, + PIN_PWMH1=44, + PIN_PWMH2=45, + PIN_PWMH3=46, + PIN_PWML0=47, + PIN_PWML1=48, + PIN_PWML2=49, + PIN_PWML3=50, + + PIN_10=51, + + PIN_22=52, + PIN_23=53, + PIN_24=54, + PIN_25=55, + PIN_26=56, + PIN_27=57, + PIN_28=58, + PIN_29=59, + PIN_30=60, + PIN_31=61, + PIN_32=62, + PIN_33=63, + PIN_34=64, + PIN_35=65, + PIN_36=66, + PIN_37=67, + PIN_38=68, + PIN_39=69, + PIN_40=70, + PIN_41=71, + PIN_42=72, + PIN_43=73, + PIN_44=74, + PIN_45=75, + PIN_46=76, + PIN_47=77, + PIN_48=78, + PIN_49=79, + PIN_50=80, + PIN_51=81, + PIN_52=82, + PIN_53=83 +} ePins ; + +#define PIN_FIRST PIN_13 +#define PIN_LAST PIN_53 + +void setup( void ) +{ + // Initialize all digital pins in output mode. + for ( dwIndex=PIN_FIRST ; dwIndex <= PIN_LAST ; dwIndex++ ) + { + if ( ((g_APinDescription[dwIndex].ulPinAttribute & PIN_ATTR_COMBO) == 0) && ((g_APinDescription[dwIndex].ulPinAttribute & PIN_ATTR_ANALOG) == 0) ) + { + pinMode( dwIndex, OUTPUT ) ; + } + } + + // Initialize all analog pins + +} + +void loop( void ) +{ + uint32_t dwIndex ; + uint32_t adwAnalogValues[PIN_AD13-PIN_AD0+1] ; + uint32_t dwChaserIndex=PIN_FIRST ; + uint32_t dwChaserIndexLast=PIN_FIRST ; + + // production test loop + for ( ;; ) + { + // Read analog values + for ( dwIndex=PIN_AD0 ; dwIndex <= PIN_AD13 ; dwIndex++ ) + { +// adwAnalogValues[dwIndex]= ; + } + + // Transmit analog values on USB CDC + for ( dwIndex=PIN_AD0 ; dwIndex <= PIN_AD13 ; dwIndex++ ) + { +// CDC_Print( adwAnalogValues[dwIndex] ) ; + } + + // Do chaser + // set the current pin output to VCC + digitalWrite( dwChaserIndex, HIGH ) ; + + // set the previous pin output to GND + if ( dwChaserIndexLast != dwChaserIndex ) + { + digitalWrite( dwChaserIndex, LOW ) ; + } + + // backup current chaser pin index + dwChaserIndexLast=dwChaserIndex ; + dwChaserIndex++ ; + + // find next chaser pin + for ( ; ; ) + { + // Go circular if we reached the end of pins + if ( dwChaserIndex > PIN_LAST ) + { + dwChaserIndex=PIN_FIRST ; + } + + // bypass combo and analog pins + if ( ((g_APinDescription[dwChaserIndex].ulPinAttribute & PIN_ATTR_COMBO) != 0) || ((g_APinDescription[dwChaserIndex].ulPinAttribute & PIN_ATTR_ANALOG) != 0) ) + { + dwChaserIndex++ ; + } + else + { + break ; + } + } + + // Go circular if we reached the end of pins + if ( dwChaserIndex > PIN_LAST ) + { + dwChaserIndex=PIN_FIRST ; + } + + delay( 500 ) ; // wait for a second + } +} diff --git a/hardware/sam/cores/sam/syscalls.h b/hardware/sam/cores/sam/syscalls.h new file mode 100644 index 000000000..845b4b5d3 --- /dev/null +++ b/hardware/sam/cores/sam/syscalls.h @@ -0,0 +1,60 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +/** + * \file syscalls.h + * + * Implementation of newlib syscall. + * + */ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ +#include +#include +#include +#include + +/*---------------------------------------------------------------------------- + * Exported functions + *----------------------------------------------------------------------------*/ +#ifdef __cplusplus +extern "C" { +#endif + +extern caddr_t _sbrk( int incr ) ; + +extern int link( char *cOld, char *cNew ) ; + +extern int _close( int file ) ; + +extern int _fstat( int file, struct stat *st ) ; + +extern int _isatty( int file ) ; + +extern int _lseek( int file, int ptr, int dir ) ; + +extern int _read(int file, char *ptr, int len) ; + +extern int _write( int file, char *ptr, int len ) ; + +#ifdef __cplusplus +} +#endif + diff --git a/hardware/sam/cores/sam/syscalls_sam3.c b/hardware/sam/cores/sam/syscalls_sam3.c new file mode 100644 index 000000000..e0f72dd46 --- /dev/null +++ b/hardware/sam/cores/sam/syscalls_sam3.c @@ -0,0 +1,132 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +/** + * \file syscalls_sam3.c + * + * Implementation of newlib syscall. + * + */ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + + +#include "syscalls.h" + +#include +#include +#if defined ( __GNUC__ ) /* GCC CS3 */ + #include + #include +#endif + +/*---------------------------------------------------------------------------- + * Exported variables + *----------------------------------------------------------------------------*/ + +#undef errno +extern int errno ; +extern int _end ; + +/*---------------------------------------------------------------------------- + * Exported functions + *----------------------------------------------------------------------------*/ +extern void _exit( int status ) ; +extern void _kill( int pid, int sig ) ; +extern int _getpid ( void ) ; + +extern caddr_t _sbrk ( int incr ) +{ + static unsigned char *heap = NULL ; + unsigned char *prev_heap ; + + if ( heap == NULL ) + { + heap = (unsigned char *)&_end ; + } + prev_heap = heap; + + heap += incr ; + + return (caddr_t) prev_heap ; +} + +extern int link( char *cOld, char *cNew ) +{ + return -1 ; +} + +extern int _close( int file ) +{ + return -1 ; +} + +extern int _fstat( int file, struct stat *st ) +{ + st->st_mode = S_IFCHR ; + + return 0 ; +} + +extern int _isatty( int file ) +{ + return 1 ; +} + +extern int _lseek( int file, int ptr, int dir ) +{ + return 0 ; +} + +extern int _read(int file, char *ptr, int len) +{ + return 0 ; +} + +extern int _write( int file, char *ptr, int len ) +{ + int iIndex ; + + +// for ( ; *ptr != 0 ; ptr++ ) + for ( iIndex=0 ; iIndex < len ; iIndex++, ptr++ ) + { +// UART_PutChar( *ptr ) ; + } + + return iIndex ; +} + +extern void _exit( int status ) +{ + printf( "Exiting with status %d.\n", status ) ; + + for ( ; ; ) ; +} + +extern void _kill( int pid, int sig ) +{ + return ; +} + +extern int _getpid ( void ) +{ + return -1 ; +} diff --git a/hardware/sam/cores/sam/validation/build_gcc/Makefile b/hardware/sam/cores/sam/validation/build_gcc/Makefile new file mode 100644 index 000000000..92bddee3e --- /dev/null +++ b/hardware/sam/cores/sam/validation/build_gcc/Makefile @@ -0,0 +1,41 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +SUBMAKE_OPTIONS=--no-builtin-rules --no-builtin-variables + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- + +all: test + +.PHONY: test +test: + @echo --- Making test + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f test.mk + +.PHONY: clean +clean: + @echo --- Cleaning test + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f test.mk $@ + +.PHONY: debug +debug: + @echo --- Debugging test + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f test.mk $@ + diff --git a/hardware/sam/cores/sam/validation/build_gcc/debug.mk b/hardware/sam/cores/sam/validation/build_gcc/debug.mk new file mode 100644 index 000000000..d0716744a --- /dev/null +++ b/hardware/sam/cores/sam/validation/build_gcc/debug.mk @@ -0,0 +1,25 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Optimization level +# -O1 Optimize +# -O2 Optimize even more +# -O3 Optimize yet more +# -O0 Reduce compilation time and make debugging produce the expected results +# -Os Optimize for size +OPTIMIZATION = -g -O0 -DDEBUG diff --git a/hardware/sam/cores/sam/validation/build_gcc/gcc.mk b/hardware/sam/cores/sam/validation/build_gcc/gcc.mk new file mode 100644 index 000000000..f26b9b882 --- /dev/null +++ b/hardware/sam/cores/sam/validation/build_gcc/gcc.mk @@ -0,0 +1,79 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Tool suffix when cross-compiling +#CROSS_COMPILE = ../../../../tools/CodeSourcery_arm/bin/arm-none-eabi- +#CROSS_COMPILE = C:/CodeSourcery_2011.03-42/bin/arm-none-eabi- +CROSS_COMPILE = $(ARM_GCC_TOOLCHAIN)/arm-none-eabi- + +# Compilation tools +AR = $(CROSS_COMPILE)ar +CC = $(CROSS_COMPILE)gcc +CXX = $(CROSS_COMPILE)g++ +AS = $(CROSS_COMPILE)as +GDB = $(CROSS_COMPILE)gdb +SIZE = $(CROSS_COMPILE)size +NM = $(CROSS_COMPILE)nm +OBJCOPY = $(CROSS_COMPILE)objcopy +RM=cs-rm -Rf +SEP=\\ + +# --------------------------------------------------------------------------------------- +# C Flags + +CFLAGS += -Wall -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int +CFLAGS += -Werror-implicit-function-declaration -Wmain -Wparentheses +CFLAGS += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused +CFLAGS += -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef +CFLAGS += -Wshadow -Wpointer-arith -Wbad-function-cast -Wwrite-strings +CFLAGS += -Wsign-compare -Waggregate-return -Wstrict-prototypes +CFLAGS += -Wmissing-prototypes -Wmissing-declarations +CFLAGS += -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations +CFLAGS += -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wlong-long +CFLAGS += -Wunreachable-code +CFLAGS += -Wcast-align + +CFLAGS += --param max-inline-insns-single=500 -mcpu=cortex-m3 -mthumb -mlong-calls -ffunction-sections -nostdlib +CFLAGS += $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) -D$(VARIANT) + +# To reduce application size use only integer printf function. +CFLAGS += -Dprintf=iprintf + +# --------------------------------------------------------------------------------------- +# CPP Flags + +CPPFLAGS += -Wall -Wchar-subscripts -Wcomment -Wformat=2 +CPPFLAGS += -Wmain -Wparentheses -Wcast-align -Wunreachable-code +CPPFLAGS += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused +CPPFLAGS += -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef +CPPFLAGS += -Wshadow -Wpointer-arith -Wwrite-strings +CPPFLAGS += -Wsign-compare -Waggregate-return -Wmissing-declarations +CPPFLAGS += -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations +CPPFLAGS += -Wpacked -Wredundant-decls -Winline -Wlong-long + +#-fno-rtti -fno-exceptions +CPPFLAGS += --param max-inline-insns-single=500 -mcpu=cortex-m3 -mthumb -mlong-calls -ffunction-sections +CPPFLAGS += $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) + +# To reduce application size use only integer printf function. +CPPFLAGS += -Dprintf=iprintf + +# --------------------------------------------------------------------------------------- +# ASM Flags + +ASFLAGS = -mcpu=cortex-m3 -mthumb -Wall -g $(OPTIMIZATION) $(INCLUDES) diff --git a/hardware/sam/cores/sam/validation/build_gcc/release.mk b/hardware/sam/cores/sam/validation/build_gcc/release.mk new file mode 100644 index 000000000..0d15157f4 --- /dev/null +++ b/hardware/sam/cores/sam/validation/build_gcc/release.mk @@ -0,0 +1,25 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Optimization level +# -O1 Optimize +# -O2 Optimize even more +# -O3 Optimize yet more +# -O0 Reduce compilation time and make debugging produce the expected results +# -Os Optimize for size +OPTIMIZATION = -Os diff --git a/hardware/sam/cores/sam/validation/build_gcc/test.mk b/hardware/sam/cores/sam/validation/build_gcc/test.mk new file mode 100644 index 000000000..e64349433 --- /dev/null +++ b/hardware/sam/cores/sam/validation/build_gcc/test.mk @@ -0,0 +1,183 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Makefile for compiling libArduino +.SUFFIXES: .o .a .c .s + +# putting default variant +ifeq ("$(VARIANT)", "") +#VARIANT=sam3s_ek +#VARIANT=sam3u_ek +VARIANT=arduino_due +endif + +ifeq ("$(VARIANT)", "sam3s_ek") +CHIP=__SAM3S4C__ +else ifeq ("$(VARIANT)", "sam3u_ek") +CHIP=__SAM3U4E__ +else ifeq ("$(VARIANT)", "arduino_due") +CHIP=__SAM3U4E__ +endif + +TOOLCHAIN=gcc + +#------------------------------------------------------------------------------- +# Path +#------------------------------------------------------------------------------- + +# Libraries +PROJECT_BASE_PATH = ./.. +SYSTEM_PATH = ../../../../system +CMSIS_BASE_PATH = $(SYSTEM_PATH)/CMSIS/Include +VARIANT_PATH = ../../../../variants/$(VARIANT) + +ifeq ($(CHIP), __SAM3S4C__) +CHIP_NAME=sam3s4c +CHIP_SERIE=sam3s +else ifeq ($(CHIP), __SAM3U4E__) +CHIP_NAME=sam3u4e +CHIP_SERIE=sam3u +else ifeq ($(CHIP), __SAM3N4C__) +CHIP_NAME=sam3n4c +CHIP_SERIE=sam3n +else ifeq ($(CHIP), __SAM3X8H__) +CHIP_NAME=sam3x8h +CHIP_SERIE=sam3xa +else +endif + +CMSIS_CHIP_PATH=$(SYSTEM_PATH)/libsam/cmsis/$(CHIP_SERIE) + +# Output directories +OUTPUT_PATH = debug_$(VARIANT) + +#------------------------------------------------------------------------------- +# Files +#------------------------------------------------------------------------------- + +vpath %.h $(PROJECT_BASE_PATH)/.. $(VARIANT_PATH) $(SYSTEM_PATH) $(CMSIS_BASE_PATH) +vpath %.cpp $(PROJECT_BASE_PATH) + +VPATH+=$(PROJECT_BASE_PATH) + +INCLUDES = -I$(PROJECT_BASE_PATH)/.. +INCLUDES += -I$(VARIANT_PATH) +INCLUDES += -I$(VARIANT_PATH)/.. +INCLUDES += -I$(SYSTEM_PATH) +INCLUDES += -I$(SYSTEM_PATH)/libsam +INCLUDES += -I$(CMSIS_BASE_PATH) + +#------------------------------------------------------------------------------- +ifdef DEBUG +include debug.mk +else +include release.mk +endif + +#------------------------------------------------------------------------------- +# Tools +#------------------------------------------------------------------------------- + +include $(TOOLCHAIN).mk + +#------------------------------------------------------------------------------- +ifdef DEBUG +OUTPUT_OBJ=debug +LIBS_POSTFIX=dbg +else +OUTPUT_OBJ=release +LIBS_POSTFIX=rel +endif + +OUTPUT_BIN=test_$(TOOLCHAIN)_$(LIBS_POSTFIX) +#LIBS=-L../libsam_$(CHIP_NAME)_$(TOOLCHAIN)_rel.a -L../arduino_$(VARIANT)_$(TOOLCHAIN)_rel.a +# +LIBS=-Wl,--start-group -lgcc -lc -lstdc++ -lsam_$(CHIP_NAME)_$(TOOLCHAIN)_$(LIBS_POSTFIX) -larduino_$(VARIANT)_$(TOOLCHAIN)_$(LIBS_POSTFIX) -lvariant_$(VARIANT)_$(TOOLCHAIN)_$(LIBS_POSTFIX) -Wl,--end-group + +LIB_PATH =-L$(PROJECT_BASE_PATH)/.. +LIB_PATH+=-L=/lib/thumb2 +#LIB_PATH+=-L=/../lib/gcc/arm-none-eabi/4.5.2/thumb2 + +LDFLAGS= -mcpu=cortex-m3 -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols + +#------------------------------------------------------------------------------- +# CPP source files and objects +#------------------------------------------------------------------------------- +CPP_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.cpp) + +CPP_OBJ_TEMP = $(patsubst %.cpp, %.o, $(notdir $(CPP_SRC))) + +# during development, remove some files +CPP_OBJ_FILTER= + +CPP_OBJ=$(filter-out $(CPP_OBJ_FILTER), $(CPP_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- +all: test + +test: create_output $(OUTPUT_BIN) + +.PHONY: create_output +create_output: + @echo --- Preparing $(VARIANT) files in $(OUTPUT_PATH) $(OUTPUT_BIN) + @echo ------------------------- + @echo *$(INCLUDES) + @echo ------------------------- + @echo *$(C_SRC) + @echo ------------------------- + @echo *$(C_OBJ) + @echo ------------------------- + @echo *$(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) + @echo ------------------------- + @echo *$(CPP_SRC) + @echo ------------------------- + @echo *$(CPP_OBJ) + @echo ------------------------- + @echo *$(addprefix $(OUTPUT_PATH)/, $(CPP_OBJ)) + @echo ------------------------- + @echo *$(A_SRC) + @echo ------------------------- + + -@mkdir $(OUTPUT_PATH) 1>NUL 2>&1 + +$(addprefix $(OUTPUT_PATH)/,$(CPP_OBJ)): $(OUTPUT_PATH)/%.o: %.cpp +# @$(CC) -c $(CPPFLAGS) $< -o $@ + @$(CXX) -c $(CPPFLAGS) $< -o $@ +# @$(CXX) -v -c $(CPPFLAGS) $< -o $@ + +$(OUTPUT_BIN): $(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(CPP_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(A_OBJ)) + @$(CC) $(LIB_PATH) $(LDFLAGS) -T"$(VARIANT_PATH)/linker_scripts/gcc/flash.ld" -Wl,-Map,$(OUTPUT_PATH)/$@.map -o $(OUTPUT_PATH)/$@.elf $^ $(LIBS) +# @$(CC) $(LIB_PATH) $(LDFLAGS) -T"$(VARIANT_PATH)/linker_scripts/gcc/sram.ld" -Wl,-Map,$(OUTPUT_PATH)/$@.map -o $(OUTPUT_PATH)/$@.elf $^ $(LIBS) + @$(NM) $(OUTPUT_PATH)/$@.elf >$(OUTPUT_PATH)/$@.elf.txt + @$(OBJCOPY) -O binary $(OUTPUT_PATH)/$@.elf $(OUTPUT_PATH)/$@.bin + $(SIZE) $^ $(OUTPUT_PATH)/$@.elf + +.PHONY: clean +clean: + @echo --- Cleaning test files + -@$(RM) $(OUTPUT_PATH)/test.o 1>NUL 2>&1 + -@$(RM) $(OUTPUT_PATH)/$(OUTPUT_BIN).elf 1>NUL 2>&1 + -@$(RM) $(OUTPUT_PATH)/$(OUTPUT_BIN).elf.txt 1>NUL 2>&1 + -@$(RM) $(OUTPUT_PATH)/$(OUTPUT_BIN).bin 1>NUL 2>&1 + -@$(RM) $(OUTPUT_PATH)/$(OUTPUT_BIN).map 1>NUL 2>&1 + +debug: test + @$(GDB) -x "$(VARIANT_PATH)/debug_scripts/gcc/$(VARIANT)_flash.gdb" -ex "reset" -readnow -se $(OUTPUT_PATH)/$(OUTPUT_BIN).elf +# @$(GDB) -w -x "$(VARIANT_PATH)/debug_scripts/gcc/$(VARIANT)_sram.gdb" -ex "reset" -readnow -se $(OUTPUT_PATH)/$(OUTPUT_BIN).elf diff --git a/hardware/sam/cores/sam/validation/build_iar/test.ewd b/hardware/sam/cores/sam/validation/build_iar/test.ewd new file mode 100644 index 000000000..a8513fb89 --- /dev/null +++ b/hardware/sam/cores/sam/validation/build_iar/test.ewd @@ -0,0 +1,1769 @@ + + + + 2 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + ANGEL_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IARROM_ID + 2 + + 1 + 1 + 1 + + + + + + + + + JLINK_ID + 2 + + 13 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + MACRAIGOR_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + PEMICRO_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + + + + + + + RDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + + + + + + + STLINK_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + XDS100_ID + 2 + + 0 + 1 + 1 + + + + + + + $TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin + 1 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + ANGEL_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IARROM_ID + 2 + + 1 + 1 + 0 + + + + + + + + + JLINK_ID + 2 + + 13 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + MACRAIGOR_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + PEMICRO_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + + + + + + + RDI_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + + + + + + + STLINK_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + XDS100_ID + 2 + + 0 + 1 + 0 + + + + + + + $TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin + 1 + + + + + + diff --git a/hardware/sam/cores/sam/validation/build_iar/test.ewp b/hardware/sam/cores/sam/validation/build_iar/test.ewp new file mode 100644 index 000000000..c22825fb8 --- /dev/null +++ b/hardware/sam/cores/sam/validation/build_iar/test.ewp @@ -0,0 +1,1834 @@ + + + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 21 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 28 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 13 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 21 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 28 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 13 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + resources + + arduino_due + + + sam3s_ek + + $PROJ_DIR$\..\..\..\..\variants\sam3s_ek\linker_scripts\iar\sam3s_ek_flash.icf + + + $PROJ_DIR$\..\..\..\..\variants\sam3s_ek\debug_scripts\iar\sam3s_ek_flash.mac + + + $PROJ_DIR$\..\..\..\..\variants\sam3s_ek\linker_scripts\iar\sam3s_ek_sram.icf + + + $PROJ_DIR$\..\..\..\..\variants\sam3s_ek\debug_scripts\iar\sam3s_ek_sram.mac + + + + sam3u_ek + + + + $PROJ_DIR$\..\..\libarduino_sam3s_ek_ewarm_dbg.a + + + $PROJ_DIR$\..\..\libsam_sam3s4c_ewarm_dbg.a + + + $PROJ_DIR$\..\..\libvariant_sam3s_ek_ewarm_dbg.a + + + $PROJ_DIR$\..\test.cpp + + + + diff --git a/hardware/sam/cores/sam/validation/test.cpp b/hardware/sam/cores/sam/validation/test.cpp new file mode 100644 index 000000000..7da0fec1a --- /dev/null +++ b/hardware/sam/cores/sam/validation/test.cpp @@ -0,0 +1,81 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "variant.h" + +void setup( void ) +{ + // Initialize the digital pin as an output. + // Pin PIN_LED has a LED connected on most Arduino boards: + pinMode( PIN_LED, OUTPUT ) ; + digitalWrite( PIN_LED, LOW ) ; + + // Initialize the PIN_LED2 digital pin as an output. + pinMode( PIN_LED2, OUTPUT ) ; + digitalWrite( PIN_LED2, HIGH ) ; + + Serial.begin( 115200 ) ; +} + +static void led_step1( void ) +{ +#if defined sam3s_ek + digitalWrite( PIN_LED, HIGH ) ; // set the LED on + digitalWrite( PIN_LED2, LOW ) ; // set the red LED off +#endif /* sam3s_ek */ + +#if defined sam3u_ek + digitalWrite( PIN_LED, HIGH ) ; // set the LED on + digitalWrite( PIN_LED2, LOW ) ; // set the red LED off +#endif /* sam3u_ek */ + +#if defined arduino_due + digitalWrite( PIN_LED, LOW ) ; // set the LED on + digitalWrite( PIN_LED2, LOW ) ; // set the red LED off +#endif /* arduino_due */ +} + +static void led_step2( void ) +{ +#if defined sam3s_ek + digitalWrite( PIN_LED, LOW ) ; // set the LED off + digitalWrite( PIN_LED2, HIGH ) ; // set the red LED on +#endif /* sam3s_ek */ + +#if defined sam3u_ek + digitalWrite( PIN_LED, LOW ) ; // set the LED off + digitalWrite( PIN_LED2, HIGH ) ; // set the red LED on +#endif /* sam3u_ek */ + +#if defined arduino_due + digitalWrite( PIN_LED, HIGH ) ; // set the LED off + digitalWrite( PIN_LED2, HIGH ) ; // set the red LED on +#endif /* arduino_due */ +} + +void loop( void ) +{ + led_step1() ; + delay( 1000 ) ; // wait for a second + led_step2() ; + delay( 1000 ) ; // wait for a second + + Serial.write( '-' ) ; // send a char +// Serial.write( "test1\n" ) ; // send a string +// Serial.write( "test2" ) ; // send another string +} diff --git a/hardware/sam/cores/sam/wiring.c b/hardware/sam/cores/sam/wiring.c new file mode 100644 index 000000000..2b78297f7 --- /dev/null +++ b/hardware/sam/cores/sam/wiring.c @@ -0,0 +1,83 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "Arduino.h" + +#ifdef __cplusplus +extern "C" { +#endif + +uint32_t millis( void ) +{ +// todo: ensure no interrupts + return GetTickCount() ; +} + +uint32_t micros( void ) +{ + uint32_t dwTicks ; + + __disable_irq() ; + dwTicks=SysTick->VAL ; + __enable_irq() ; + + return (GetTickCount()*1000) + ((SysTick->LOAD + 1 - dwTicks)/(SystemCoreClock/1000000)) ; +} + +void delay( uint32_t dwMs ) +{ + Wait( dwMs ) ; +} + +void delayMicroseconds( uint32_t dwUs ) +{ + uint32_t dwStartMicros=micros() ; + + while ( (micros() - dwStartMicros) < dwUs ) + { + // do nothing + } +} + +/* + * Cortex-M3 Systick IT handler + */ +extern void SysTick_Handler( void ) +{ + // Increment tick count each ms + TimeTick_Increment() ; +} + +#if defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */ +extern signed int putchar( signed int c ) ; +/** + * \brief + * + * \param c Character to output. + * + * \return The character that was output. + */ +extern WEAK signed int putchar( signed int c ) +{ + return c ; +} +#endif /* __ICCARM__ */ + +#ifdef __cplusplus +} +#endif diff --git a/hardware/sam/cores/sam/wiring.h b/hardware/sam/cores/sam/wiring.h new file mode 100644 index 000000000..ad13cac66 --- /dev/null +++ b/hardware/sam/cores/sam/wiring.h @@ -0,0 +1,72 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _WIRING_ +#define _WIRING_ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * + */ +extern void init( void ) ; + +/** + * \brief Returns the number of milliseconds since the Arduino board began running the current program. + * + * This number will overflow (go back to zero), after approximately 50 days. + * + * \return Number of milliseconds since the program started (uint32_t) + */ +extern uint32_t millis( void ) ; + +/** + * \brief Returns the number of microseconds since the Arduino board began running the current program. + * + * This number will overflow (go back to zero), after approximately 70 minutes. On 16 MHz Arduino boards + * (e.g. Duemilanove and Nano), this function has a resolution of four microseconds (i.e. the value returned is + * always a multiple of four). On 8 MHz Arduino boards (e.g. the LilyPad), this function has a resolution + * of eight microseconds. + * + * \note There are 1,000 microseconds in a millisecond and 1,000,000 microseconds in a second. + */ +extern uint32_t micros( void ) ; + +/** + * \brief Pauses the program for the amount of time (in miliseconds) specified as parameter. + * (There are 1000 milliseconds in a second.) + * + * \param dwMs the number of milliseconds to pause (uint32_t) + */ +extern void delay( uint32_t dwMs ) ; + +/** + * \brief Pauses the program for the amount of time (in microseconds) specified as parameter. + * + * \param dwUs the number of microseconds to pause (uint32_t) + */ +extern void delayMicroseconds( uint32_t dwUs ) ; + + +#ifdef __cplusplus +} +#endif + +#endif /* _WIRING_ */ diff --git a/hardware/sam/cores/sam/wiring_analog.c b/hardware/sam/cores/sam/wiring_analog.c new file mode 100644 index 000000000..da3ba8f44 --- /dev/null +++ b/hardware/sam/cores/sam/wiring_analog.c @@ -0,0 +1,231 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +//#include "wiring_private.h" +#include "Arduino.h" +#include "variant.h" + +#ifdef __cplusplus +extern "C" { +#endif + +eAnalogReference analog_reference = AR_DEFAULT; + +void analogReference(eAnalogReference ulMode) +{ + analog_reference = ulMode; +} + +uint32_t analogRead(uint32_t ulPin) +{ + uint32_t ulValue = 0; + uint32_t ulChannel; + + if (ulPin < A0) + ulPin += A0; + + ulChannel = g_APinDescription[ulPin].ulADCChannelNumber ; + +#if defined __SAM3U4E__ + switch ( g_APinDescription[ulPin].ulAnalogChannel ) + { + // Handling ADC 10 bits channels + case ADC0 : + case ADC1 : + case ADC2 : + case ADC3 : + case ADC4 : + case ADC5 : + case ADC6 : + case ADC7 : + // Enable the corresponding channel + adc_enable_channel( ADC, ulChannel ); + + // Start the ADC + adc_start( ADC ); + + // Wait for end of conversion + while ((adc_get_status(ADC) & (1<TC_CHANNEL+chan; + ch->TC_RA = v; +} + +static void TC_SetRB(Tc *tc, uint32_t chan, uint32_t v ) +{ + TcChannel* ch = &tc->TC_CHANNEL+chan; + ch->TC_RB = v; +} + +static void TC_SetRC(Tc *tc, uint32_t chan, uint32_t v ) +{ + TcChannel* ch = &tc->TC_CHANNEL+chan; + ch->TC_RC = v; +} + +static uint8_t PWMEnabled = 0; +static uint8_t pinEnabled[PINS_COUNT]; +static uint8_t TCChanEnabled[] = {0, 0, 0}; + +void analogOutputInit() { + uint8_t i; + for (i=0; i 96Mhz/2 => 48Mhz as clock. + // To get 1KHz we should use 48000 as TC + // 48Mhz/48000 = 1KHz + const uint32_t TC = VARIANT_MCK / 2 / TC_FREQUENCY; + + // Map value to Timer ranges 0..255=>0..48000 + ulValue = ulValue * TC; + ulValue = ulValue / TC_MAX_DUTY_CYCLE; + + // Setup Timer for this pin + ETCChannel channel = g_APinDescription[ulPin].ulTCChannel; + static const channelToChNo[] = { 0, 0, 1, 1, 2, 2 }; + static const channelToAB[] = { 1, 0, 1, 0, 1, 0 }; + uint32_t chNo = channelToChNo[channel]; + uint32_t chA = channelToAB[channel]; + + if (!TCChanEnabled[chNo]) { + PMC_EnablePeripheral(TC_INTERFACE_ID + chNo); + TC_Configure(TC_INTERFACE, chNo, + TC_CMR_TCCLKS_TIMER_CLOCK1 | + TC_CMR_WAVE | + TC_CMR_WAVSEL_UP_RC | + TC_CMR_ACPA_CLEAR | // RA Compare Effect on OA: clear + TC_CMR_ACPC_SET | // RC Compare Effect on OA: set + TC_CMR_BCPB_CLEAR | // RB Compare Effect on OB: clear + TC_CMR_BCPC_SET); // RC Compare Effect on OB: set + TC_SetRC(TC_INTERFACE, chNo, TC); + } + if (chA) + TC_SetRA(TC_INTERFACE, chNo, ulValue); + else + TC_SetRB(TC_INTERFACE, chNo, ulValue); + if (!pinEnabled[ulPin]) { + PIO_Configure(g_APinDescription[ulPin].pPort, + g_APinDescription[ulPin].ulPinType, + g_APinDescription[ulPin].ulPin, + g_APinDescription[ulPin].ulPinConfiguration); + pinEnabled[ulPin] = 1; + } + if (!TCChanEnabled[chNo]) { + TC_Start(TC_INTERFACE, chNo); + TCChanEnabled[chNo] = 1; + } + return; + } + + // Default to digital write + pinMode(ulPin, OUTPUT); + if (ulValue < 128) + digitalWrite(ulPin, LOW); + else + digitalWrite(ulPin, HIGH); +} + +#ifdef __cplusplus +} +#endif diff --git a/hardware/sam/cores/sam/wiring_analog.h b/hardware/sam/cores/sam/wiring_analog.h new file mode 100644 index 000000000..06a6a9d04 --- /dev/null +++ b/hardware/sam/cores/sam/wiring_analog.h @@ -0,0 +1,64 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _WIRING_ANALOG_ +#define _WIRING_ANALOG_ + +#ifdef __cplusplus + extern "C" { +#endif + +/* + * \brief SAM3 products have only one reference for ADC + */ +typedef enum _eAnalogReference +{ + AR_DEFAULT, +} eAnalogReference ; + +/* + * \brief Configures the reference voltage used for analog input (i.e. the value used as the top of the input range). + * This function is kept only for compatibility with existing AVR based API. + * + * \param ulMmode Should be set to AR_DEFAULT. + */ +extern void analogReference( eAnalogReference ulMode ) ; + +/* + * \brief Writes an analog value (PWM wave) to a pin. + * + * \param ulPin + * \param ulValue + */ +extern void analogWrite( uint32_t ulPin, uint32_t ulValue ) ; + +/* + * \brief Reads the value from the specified analog pin. + * + * \param ulPin + * + * \return Read value from selected pin, if no error. + */ +extern uint32_t analogRead( uint32_t ulPin ) ; + + +#ifdef __cplusplus +} +#endif + +#endif /* _WIRING_ANALOG_ */ diff --git a/hardware/sam/cores/sam/wiring_constants.h b/hardware/sam/cores/sam/wiring_constants.h new file mode 100644 index 000000000..3d8ba03e8 --- /dev/null +++ b/hardware/sam/cores/sam/wiring_constants.h @@ -0,0 +1,92 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _WIRING_CONSTANTS_ +#define _WIRING_CONSTANTS_ + +#ifdef __cplusplus +extern "C"{ +#endif // __cplusplus + +#define HIGH 0x1 +#define LOW 0x0 + +#define INPUT 0x0 +#define OUTPUT 0x1 + +#define true 0x1 +#define false 0x0 + +#define PI 3.1415926535897932384626433832795 +#define HALF_PI 1.5707963267948966192313216916398 +#define TWO_PI 6.283185307179586476925286766559 +#define DEG_TO_RAD 0.017453292519943295769236907684886 +#define RAD_TO_DEG 57.295779513082320876798154814105 + +#define SERIAL 0x0 +#define DISPLAY 0x1 + +#define LSBFIRST 0 +#define MSBFIRST 1 + +#define CHANGE 1 +#define FALLING 2 +#define RISING 3 + +#define DEFAULT 1 +#define EXTERNAL 0 + +// undefine stdlib's abs if encountered +#ifdef abs +#undef abs +#endif // abs + +#define min(a,b) ((a)<(b)?(a):(b)) +#define max(a,b) ((a)>(b)?(a):(b)) +#define abs(x) ((x)>0?(x):-(x)) +#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt))) +#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5)) +#define radians(deg) ((deg)*DEG_TO_RAD) +#define degrees(rad) ((rad)*RAD_TO_DEG) +#define sq(x) ((x)*(x)) + +#define interrupts() __enable_irq() +#define noInterrupts() __disable_irq() + +#define lowByte(w) ((uint8_t) ((w) & 0xff)) +#define highByte(w) ((uint8_t) ((w) >> 8)) + +#define bitRead(value, bit) (((value) >> (bit)) & 0x01) +#define bitSet(value, bit) ((value) |= (1UL << (bit))) +#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) +#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit)) + +typedef unsigned int word; + +#define bit(b) (1UL << (b)) + +// TODO: to be checked +typedef uint8_t boolean ; +typedef uint8_t byte ; + + +#ifdef __cplusplus +} // extern "C" +#endif // __cplusplus + +#endif /* _WIRING_CONSTANTS_ */ diff --git a/hardware/sam/cores/sam/wiring_digital.c b/hardware/sam/cores/sam/wiring_digital.c new file mode 100644 index 000000000..791ae5b87 --- /dev/null +++ b/hardware/sam/cores/sam/wiring_digital.c @@ -0,0 +1,90 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "Arduino.h" + +#ifdef __cplusplus + extern "C" { +#endif + +extern void pinMode( uint32_t ulPin, uint32_t ulMode ) +{ + if ( g_APinDescription[ulPin].ulPinType == PIO_NOT_A_PIN ) + { + return ; + } + + switch ( ulMode ) + { + case INPUT: + /* Enable peripheral for clocking input */ + PMC_EnablePeripheral( g_APinDescription[ulPin].ulPeripheralId ) ; + PIO_Configure( g_APinDescription[ulPin].pPort, PIO_INPUT, g_APinDescription[ulPin].ulPin, 0 ) ; + break ; + + case OUTPUT: + /* if all pins are output, disable PIO Controller clocking, reduce power consomption */ + if ( g_APinDescription[ulPin].pPort->PIO_OSR == 0xffffffff ) + { + PMC_DisablePeripheral( g_APinDescription[ulPin].ulPeripheralId ) ; + } + PIO_Configure( g_APinDescription[ulPin].pPort, PIO_OUTPUT_1, g_APinDescription[ulPin].ulPin, g_APinDescription[ulPin].ulPinConfiguration ) ; + break ; + + default: + break ; + } +} + +extern void digitalWrite( uint32_t ulPin, uint32_t ulVal ) +{ + /* Handle */ + if ( g_APinDescription[ulPin].ulPinType == PIO_NOT_A_PIN ) + { + return ; + } + + if ( PIO_GetOutputDataStatus( g_APinDescription[ulPin].pPort, g_APinDescription[ulPin].ulPin ) == 0 ) + { + PIO_PullUp( g_APinDescription[ulPin].pPort, g_APinDescription[ulPin].ulPin, 1 ) ; + } + else + { + PIO_SetOutput( g_APinDescription[ulPin].pPort, g_APinDescription[ulPin].ulPin, ulVal, 0, PIO_PULLUP ) ; + } +} + +extern int digitalRead( uint32_t ulPin ) +{ + if ( g_APinDescription[ulPin].ulPinType == PIO_NOT_A_PIN ) + { + return LOW ; + } + + if ( PIO_Get( g_APinDescription[ulPin].pPort, PIO_INPUT, g_APinDescription[ulPin].ulPin ) == 1 ) + { + return HIGH ; + } + + return LOW ; +} + +#ifdef __cplusplus +} +#endif + diff --git a/hardware/sam/cores/sam/wiring_digital.h b/hardware/sam/cores/sam/wiring_digital.h new file mode 100644 index 000000000..449902409 --- /dev/null +++ b/hardware/sam/cores/sam/wiring_digital.h @@ -0,0 +1,69 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _WIRING_DIGITAL_ +#define _WIRING_DIGITAL_ + +#ifdef __cplusplus + extern "C" { +#endif + +/** + * \brief Configures the specified pin to behave either as an input or an output. See the description of digital pins for details. + * + * \param ulPin The number of the pin whose mode you wish to set + * \param ulMode Either INPUT or OUTPUT + */ +extern void pinMode( uint32_t dwPin, uint32_t dwMode ) ; + +/** + * \brief Write a HIGH or a LOW value to a digital pin. + * + * If the pin has been configured as an OUTPUT with pinMode(), its voltage will be set to the + * corresponding value: 5V (or 3.3V on 3.3V boards) for HIGH, 0V (ground) for LOW. + * + * If the pin is configured as an INPUT, writing a HIGH value with digitalWrite() will enable an internal + * 20K pullup resistor (see the tutorial on digital pins). Writing LOW will disable the pullup. The pullup + * resistor is enough to light an LED dimly, so if LEDs appear to work, but very dimly, this is a likely + * cause. The remedy is to set the pin to an output with the pinMode() function. + * + * \note Digital pin PIN_LED is harder to use as a digital input than the other digital pins because it has an LED + * and resistor attached to it that's soldered to the board on most boards. If you enable its internal 20k pull-up + * resistor, it will hang at around 1.7 V instead of the expected 5V because the onboard LED and series resistor + * pull the voltage level down, meaning it always returns LOW. If you must use pin PIN_LED as a digital input, use an + * external pull down resistor. + * + * \param dwPin the pin number + * \param dwVal HIGH or LOW + */ +extern void digitalWrite( uint32_t dwPin, uint32_t dwVal ) ; + +/** + * \brief Reads the value from a specified digital pin, either HIGH or LOW. + * + * \param ulPin The number of the digital pin you want to read (int) + * + * \return HIGH or LOW + */ +extern int digitalRead( uint32_t ulPin ) ; + +#ifdef __cplusplus +} +#endif + +#endif /* _WIRING_DIGITAL_ */ diff --git a/hardware/sam/cores/sam/wiring_private.h b/hardware/sam/cores/sam/wiring_private.h new file mode 100644 index 000000000..2938d3eac --- /dev/null +++ b/hardware/sam/cores/sam/wiring_private.h @@ -0,0 +1,40 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef WiringPrivate_h +#define WiringPrivate_h + +#include +#include +#include + +#ifdef __cplusplus +extern "C"{ +#endif + +#include "libsam/chip.h" +#include "wiring_constants.h" + +#ifdef __cplusplus +} // extern "C" + +#include "HardwareSerial.h" + +#endif + +#endif diff --git a/hardware/sam/cores/sam/wiring_pulse.cpp b/hardware/sam/cores/sam/wiring_pulse.cpp new file mode 100644 index 000000000..40f1261ae --- /dev/null +++ b/hardware/sam/cores/sam/wiring_pulse.cpp @@ -0,0 +1,61 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "Arduino.h" +#include "wiring_private.h" + +/* Measures the length (in microseconds) of a pulse on the pin; state is HIGH + * or LOW, the type of pulse to measure. Works on pulses from 2-3 microseconds + * to 3 minutes in length, but must be called at least a few dozen microseconds + * before the start of the pulse. */ +extern uint32_t pulseIn( uint32_t pin, uint32_t state, uint32_t timeout ) +{ + // cache the port and bit of the pin in order to speed up the + // pulse width measuring loop and achieve finer resolution. calling + // digitalRead() instead yields much coarser resolution. + PinDescription p = g_APinDescription[pin]; + uint32_t width = 0; // keep initialization out of time critical area + + // convert the timeout from microseconds to a number of times through + // the initial loop; it takes 22 clock cycles per iteration. + uint32_t numloops = 0; + uint32_t maxloops = microsecondsToClockCycles(timeout) / 22; + + // wait for any previous pulse to end + while (PIO_Get(p.pPort, PIO_INPUT, p.ulPin) == state) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to start + while (PIO_Get(p.pPort, PIO_INPUT, p.ulPin) != state) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to stop + while (PIO_Get(p.pPort, PIO_INPUT, p.ulPin) == state) { + if (numloops++ == maxloops) + return 0; + width++; + } + + // convert the reading to microseconds. The loop has been determined + // to be 22 clock cycles long and have about 16 clocks between the edge + // and the start of the loop. There will be some error introduced by + // the interrupt handlers. + return clockCyclesToMicroseconds(width * 22 + 16); +} diff --git a/hardware/sam/cores/sam/wiring_pulse.h b/hardware/sam/cores/sam/wiring_pulse.h new file mode 100644 index 000000000..f32896984 --- /dev/null +++ b/hardware/sam/cores/sam/wiring_pulse.h @@ -0,0 +1,39 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _WIRING_PULSE_ +#define _WIRING_PULSE_ + +#ifdef __cplusplus + extern "C" { +#endif + +/* + * \brief Measures the length (in microseconds) of a pulse on the pin; state is HIGH + * or LOW, the type of pulse to measure. Works on pulses from 2-3 microseconds + * to 3 minutes in length, but must be called at least a few dozen microseconds + * before the start of the pulse. + */ +extern uint32_t pulseIn( uint32_t ulPin, uint32_t ulState, uint32_t ulTimeout = 1000000L ) ; + + +#ifdef __cplusplus +} +#endif + +#endif /* _WIRING_PULSE_ */ diff --git a/hardware/sam/cores/sam/wiring_shift.c b/hardware/sam/cores/sam/wiring_shift.c new file mode 100644 index 000000000..30d3f43b6 --- /dev/null +++ b/hardware/sam/cores/sam/wiring_shift.c @@ -0,0 +1,71 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "Arduino.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +extern uint32_t shiftIn( uint32_t ulDataPin, uint32_t ulClockPin, uint32_t ulBitOrder ) +{ + uint8_t value = 0 ; + uint8_t i ; + + for ( i=0 ; i < 8 ; ++i ) + { + digitalWrite( ulClockPin, HIGH ) ; + + if ( ulBitOrder == LSBFIRST ) + { + value |= digitalRead( ulDataPin ) << i ; + } + else + { + value |= digitalRead( ulDataPin ) << (7 - i) ; + } + + digitalWrite( ulClockPin, LOW ) ; + } + + return value ; +} + +extern void shiftOut( uint32_t ulDataPin, uint32_t ulClockPin, uint32_t ulBitOrder, uint32_t ulVal ) +{ + uint8_t i ; + + for ( i=0 ; i < 8 ; i++ ) + { + if ( ulBitOrder == LSBFIRST ) + { + digitalWrite( ulDataPin, !!(ulVal & (1 << i)) ) ; + } + else + { + digitalWrite( ulDataPin, !!(ulVal & (1 << (7 - i))) ) ; + } + + digitalWrite( ulClockPin, HIGH ) ; + digitalWrite( ulClockPin, LOW ) ; + } +} + +#ifdef __cplusplus +} // extern "C" +#endif diff --git a/hardware/sam/cores/sam/wiring_shift.h b/hardware/sam/cores/sam/wiring_shift.h new file mode 100644 index 000000000..f33d84856 --- /dev/null +++ b/hardware/sam/cores/sam/wiring_shift.h @@ -0,0 +1,42 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _WIRING_SHIFT_ +#define _WIRING_SHIFT_ + +#ifdef __cplusplus + extern "C" { +#endif + +/* + * \brief + */ +extern uint32_t shiftIn( uint32_t ulDataPin, uint32_t ulClockPin, uint32_t ulBitOrder ) ; + + +/* + * \brief + */ +extern void shiftOut( uint32_t ulDataPin, uint32_t ulClockPin, uint32_t ulBitOrder, uint32_t ulVal ) ; + + +#ifdef __cplusplus +} +#endif + +#endif /* _WIRING_SHIFT_ */ diff --git a/hardware/sam/libraries/SPI/SPI.cpp b/hardware/sam/libraries/SPI/SPI.cpp new file mode 100644 index 000000000..bd7a6433a --- /dev/null +++ b/hardware/sam/libraries/SPI/SPI.cpp @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2010 by Cristian Maglie + * SPI Master library for arduino. + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of either the GNU General Public License version 2 + * or the GNU Lesser General Public License version 2.1, both as + * published by the Free Software Foundation. + */ + +#include "SPI.h" + +SPIClass::SPIClass(Spi *_spi, uint32_t _id, void(*_initCb)(void)) : + spi(_spi), id(_id), initCb(_initCb) { + // Empty +} + +void SPIClass::begin() { + initCb(); + + // Set CS on NPCS3 + SPI_Configure(spi, id, SPI_MR_MSTR | SPI_MR_PCS(0x07)); + SPI_Enable( spi); + setClockDivider(1); +} + +void SPIClass::end() { + SPI_Disable( spi); +} + +void SPIClass::setBitOrder(uint8_t bitOrder) { + // Not supported +} + +void SPIClass::setDataMode(uint8_t _mode) { + mode = _mode; + SPI_ConfigureNPCS(spi, 3, mode | SPI_CSR_SCBR(divider)); +} + +void SPIClass::setClockDivider(uint8_t _divider) { + divider = _divider; + SPI_ConfigureNPCS(spi, 3, mode | SPI_CSR_SCBR(divider)); +} + +byte SPIClass::transfer(byte _data) { + SPI_Write(spi, 0, _data); + return SPI_Read(spi); +} + +void SPIClass::attachInterrupt(void) { + // Should be enableInterrupt() +} + +void SPIClass::detachInterrupt(void) { + // Should be disableInterrupt() +} + +#if SPI_INTERFACES_COUNT > 0 +static void SPI0_Init(void) { + PIO_Configure(g_APinDescription[PIN_SPI_MOSI].pPort, + g_APinDescription[PIN_SPI_MOSI].ulPinType, + g_APinDescription[PIN_SPI_MOSI].ulPin, + g_APinDescription[PIN_SPI_MOSI].ulPinConfiguration); + PIO_Configure(g_APinDescription[PIN_SPI_MISO].pPort, + g_APinDescription[PIN_SPI_MISO].ulPinType, + g_APinDescription[PIN_SPI_MISO].ulPin, + g_APinDescription[PIN_SPI_MISO].ulPinConfiguration); + PIO_Configure(g_APinDescription[PIN_SPI_SCK].pPort, + g_APinDescription[PIN_SPI_SCK].ulPinType, + g_APinDescription[PIN_SPI_SCK].ulPin, + g_APinDescription[PIN_SPI_SCK].ulPinConfiguration); +} + +SPIClass SPI0(SPI_INTERFACE, SPI_INTERFACE_ID, SPI0_Init); +#endif diff --git a/hardware/sam/libraries/SPI/SPI.h b/hardware/sam/libraries/SPI/SPI.h new file mode 100644 index 000000000..ceeaa3f52 --- /dev/null +++ b/hardware/sam/libraries/SPI/SPI.h @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2010 by Cristian Maglie + * SPI Master library for arduino. + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of either the GNU General Public License version 2 + * or the GNU Lesser General Public License version 2.1, both as + * published by the Free Software Foundation. + */ + +#ifndef _SPI_H_INCLUDED +#define _SPI_H_INCLUDED + +#include "variant.h" +#include + +#define SPI_CLOCK_DIV4 0x00 +#define SPI_CLOCK_DIV16 0x01 +#define SPI_CLOCK_DIV64 0x02 +#define SPI_CLOCK_DIV128 0x03 +#define SPI_CLOCK_DIV2 0x04 +#define SPI_CLOCK_DIV8 0x05 +#define SPI_CLOCK_DIV32 0x06 +#define SPI_CLOCK_DIV64 0x07 + +#define SPI_MODE0 0x00 +#define SPI_MODE1 0x02 +#define SPI_MODE2 0x01 +#define SPI_MODE3 0x03 + +#define SPI_MODE_MASK 0x03 // CPOL = bit 3, CPHA = bit 2 on SPCR +#define SPI_CLOCK_MASK 0x03 // SPR1 = bit 1, SPR0 = bit 0 on SPCR +#define SPI_2XCLOCK_MASK 0x01 // SPI2X = bit 0 on SPSR + +class SPIClass { + public: + SPIClass(Spi *_spi, uint32_t _id, void(*_initCb)(void)); + + byte transfer(byte _data); + + // SPI Configuration methods + + void attachInterrupt(void); + void detachInterrupt(void); // Default + + void begin(void); // Default + void end(void); + + void setBitOrder(uint8_t); + void setDataMode(uint8_t); + void setClockDivider(uint8_t); + + private: + Spi *spi; + uint32_t id, divider, mode; + void (*initCb)(void); +}; + +#if SPI_INTERFACES_COUNT > 0 +extern SPIClass SPI0; +#endif + +#endif diff --git a/hardware/sam/libraries/SPI/examples/BarometricPressureSensor/BarometricPressureSensor.pde b/hardware/sam/libraries/SPI/examples/BarometricPressureSensor/BarometricPressureSensor.pde new file mode 100644 index 000000000..9d77a4261 --- /dev/null +++ b/hardware/sam/libraries/SPI/examples/BarometricPressureSensor/BarometricPressureSensor.pde @@ -0,0 +1,143 @@ +/* + SCP1000 Barometric Pressure Sensor Display + + Shows the output of a Barometric Pressure Sensor on a + Uses the SPI library. For details on the sensor, see: + http://www.sparkfun.com/commerce/product_info.php?products_id=8161 + http://www.vti.fi/en/support/obsolete_products/pressure_sensors/ + + This sketch adapted from Nathan Seidle's SCP1000 example for PIC: + http://www.sparkfun.com/datasheets/Sensors/SCP1000-Testing.zip + + Circuit: + SCP1000 sensor attached to pins 6, 7, 10 - 13: + DRDY: pin 6 + CSB: pin 7 + MOSI: pin 11 + MISO: pin 12 + SCK: pin 13 + + created 31 July 2010 + modified 14 August 2010 + by Tom Igoe + */ + +// the sensor communicates using SPI, so include the library: +#include + +//Sensor's memory register addresses: +const int PRESSURE = 0x1F; //3 most significant bits of pressure +const int PRESSURE_LSB = 0x20; //16 least significant bits of pressure +const int TEMPERATURE = 0x21; //16 bit temperature reading +const byte READ = 0b11111100; // SCP1000's read command +const byte WRITE = 0b00000010; // SCP1000's write command + +// pins used for the connection with the sensor +// the other you need are controlled by the SPI library): +const int dataReadyPin = 6; +const int chipSelectPin = 7; + +void setup() { + Serial.begin(9600); + + // start the SPI library: + SPI.begin(); + + // initalize the data ready and chip select pins: + pinMode(dataReadyPin, INPUT); + pinMode(chipSelectPin, OUTPUT); + + //Configure SCP1000 for low noise configuration: + writeRegister(0x02, 0x2D); + writeRegister(0x01, 0x03); + writeRegister(0x03, 0x02); + // give the sensor time to set up: + delay(100); +} + +void loop() { + //Select High Resolution Mode + writeRegister(0x03, 0x0A); + + // don't do anything until the data ready pin is high: + if (digitalRead(dataReadyPin) == HIGH) { + //Read the temperature data + int tempData = readRegister(0x21, 2); + + // convert the temperature to celsius and display it: + float realTemp = (float)tempData / 20.0; + Serial.print("Temp[C]="); + Serial.print(realTemp); + + + //Read the pressure data highest 3 bits: + byte pressure_data_high = readRegister(0x1F, 1); + pressure_data_high &= 0b00000111; //you only needs bits 2 to 0 + + //Read the pressure data lower 16 bits: + unsigned int pressure_data_low = readRegister(0x20, 2); + //combine the two parts into one 19-bit number: + long pressure = ((pressure_data_high << 16) | pressure_data_low)/4; + + // display the temperature: + Serial.println("\tPressure [Pa]=" + String(pressure)); + } +} + +//Read from or write to register from the SCP1000: +unsigned int readRegister(byte thisRegister, int bytesToRead ) { + byte inByte = 0; // incoming byte from the SPI + unsigned int result = 0; // result to return + Serial.print(thisRegister, BIN); + Serial.print("\t"); + // SCP1000 expects the register name in the upper 6 bits + // of the byte. So shift the bits left by two bits: + thisRegister = thisRegister << 2; + // now combine the address and the command into one byte + byte dataToSend = thisRegister & READ; + Serial.println(thisRegister, BIN); + // take the chip select low to select the device: + digitalWrite(chipSelectPin, LOW); + // send the device the register you want to read: + SPI.transfer(dataToSend); + // send a value of 0 to read the first byte returned: + result = SPI.transfer(0x00); + // decrement the number of bytes left to read: + bytesToRead--; + // if you still have another byte to read: + if (bytesToRead > 0) { + // shift the first byte left, then get the second byte: + result = result << 8; + inByte = SPI.transfer(0x00); + // combine the byte you just got with the previous one: + result = result | inByte; + // decrement the number of bytes left to read: + bytesToRead--; + } + // take the chip select high to de-select: + digitalWrite(chipSelectPin, HIGH); + // return the result: + return(result); +} + + +//Sends a write command to SCP1000 + +void writeRegister(byte thisRegister, byte thisValue) { + + // SCP1000 expects the register address in the upper 6 bits + // of the byte. So shift the bits left by two bits: + thisRegister = thisRegister << 2; + // now combine the register address and the command into one byte: + byte dataToSend = thisRegister | WRITE; + + // take the chip select low to select the device: + digitalWrite(chipSelectPin, LOW); + + SPI.transfer(dataToSend); //Send register location + SPI.transfer(thisValue); //Send value to record into register + + // take the chip select high to de-select: + digitalWrite(chipSelectPin, HIGH); +} + diff --git a/hardware/sam/libraries/SPI/examples/DigitalPotControl/DigitalPotControl.pde b/hardware/sam/libraries/SPI/examples/DigitalPotControl/DigitalPotControl.pde new file mode 100644 index 000000000..ef97dae88 --- /dev/null +++ b/hardware/sam/libraries/SPI/examples/DigitalPotControl/DigitalPotControl.pde @@ -0,0 +1,71 @@ +/* + Digital Pot Control + + This example controls an Analog Devices AD5206 digital potentiometer. + The AD5206 has 6 potentiometer channels. Each channel's pins are labeled + A - connect this to voltage + W - this is the pot's wiper, which changes when you set it + B - connect this to ground. + + The AD5206 is SPI-compatible,and to command it, you send two bytes, + one with the channel number (0 - 5) and one with the resistance value for the + channel (0 - 255). + + The circuit: + * All A pins of AD5206 connected to +5V + * All B pins of AD5206 connected to ground + * An LED and a 220-ohm resisor in series connected from each W pin to ground + * CS - to digital pin 10 (SS pin) + * SDI - to digital pin 11 (MOSI pin) + * CLK - to digital pin 13 (SCK pin) + + created 10 Aug 2010 + by Tom Igoe + + Thanks to Heather Dewey-Hagborg for the original tutorial, 2005 + +*/ + + +// inslude the SPI library: +#include + + +// set pin 10 as the slave select for the digital pot: +const int slaveSelectPin = 10; + +void setup() { + // set the slaveSelectPin as an output: + pinMode (slaveSelectPin, OUTPUT); + // initialize SPI: + SPI.begin(); +} + +void loop() { + // go through the six channels of the digital pot: + for (int channel = 0; channel < 6; channel++) { + // change the resistance on this channel from min to max: + for (int level = 0; level < 255; level++) { + digitalPotWrite(channel, level); + delay(10); + } + // wait a second at the top: + delay(100); + // change the resistance on this channel from max to min: + for (int level = 0; level < 255; level++) { + digitalPotWrite(channel, 255 - level); + delay(10); + } + } + +} + +int digitalPotWrite(int address, int value) { + // take the SS pin low to select the chip: + digitalWrite(slaveSelectPin,LOW); + // send in the address and value via SPI: + SPI.transfer(address); + SPI.transfer(value); + // take the SS pin high to de-select the chip: + digitalWrite(slaveSelectPin,HIGH); +} \ No newline at end of file diff --git a/hardware/sam/libraries/SPI/keywords.txt b/hardware/sam/libraries/SPI/keywords.txt new file mode 100644 index 000000000..fa7616581 --- /dev/null +++ b/hardware/sam/libraries/SPI/keywords.txt @@ -0,0 +1,36 @@ +####################################### +# Syntax Coloring Map SPI +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +SPI KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### +begin KEYWORD2 +end KEYWORD2 +transfer KEYWORD2 +setBitOrder KEYWORD2 +setDataMode KEYWORD2 +setClockDivider KEYWORD2 + + +####################################### +# Constants (LITERAL1) +####################################### +SPI_CLOCK_DIV4 LITERAL1 +SPI_CLOCK_DIV16 LITERAL1 +SPI_CLOCK_DIV64 LITERAL1 +SPI_CLOCK_DIV128 LITERAL1 +SPI_CLOCK_DIV2 LITERAL1 +SPI_CLOCK_DIV8 LITERAL1 +SPI_CLOCK_DIV32 LITERAL1 +SPI_CLOCK_DIV64 LITERAL1 +SPI_MODE0 LITERAL1 +SPI_MODE1 LITERAL1 +SPI_MODE2 LITERAL1 +SPI_MODE3 LITERAL1 \ No newline at end of file diff --git a/hardware/sam/libraries/Wire/Wire.cpp b/hardware/sam/libraries/Wire/Wire.cpp new file mode 100644 index 000000000..67383ac3f --- /dev/null +++ b/hardware/sam/libraries/Wire/Wire.cpp @@ -0,0 +1,348 @@ +/* + * TwoWire.h - TWI/I2C library for Arduino Due + * Copyright (c) 2011 Cristian Maglie . + * All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +extern "C" { +#include +#include "twi.h" +} + +#include "Wire.h" + +static inline bool TWI_FailedAcknowledge(Twi *pTwi) { + return pTwi->TWI_SR & TWI_SR_NACK; +} + +static inline bool TWI_WaitTransferComplete(Twi *_twi, uint32_t _timeout) { + while (!TWI_TransferComplete(_twi)) { + if (TWI_FailedAcknowledge(_twi)) + return false; + if (--_timeout == 0) + return false; + } + return true; +} + +static inline bool TWI_WaitByteSent(Twi *_twi, uint32_t _timeout) { + while (!TWI_ByteSent(_twi)) { + if (TWI_FailedAcknowledge(_twi)) + return false; + if (--_timeout == 0) + return false; + } + return true; +} + +static inline bool TWI_WaitByteReceived(Twi *_twi, uint32_t _timeout) { + while (!TWI_ByteReceived(_twi)) { + if (TWI_FailedAcknowledge(_twi)) + return false; + if (--_timeout == 0) + return false; + } + return true; +} + +static inline bool TWI_STATUS_SVREAD(uint32_t status) { + return (status & TWI_SR_SVREAD) == TWI_SR_SVREAD; +} + +static inline bool TWI_STATUS_SVACC(uint32_t status) { + return (status & TWI_SR_SVACC) == TWI_SR_SVACC; +} + +static inline bool TWI_STATUS_GACC(uint32_t status) { + return (status & TWI_SR_GACC) == TWI_SR_GACC; +} + +static inline bool TWI_STATUS_EOSACC(uint32_t status) { + return (status & TWI_SR_EOSACC) == TWI_SR_EOSACC; +} + +static inline bool TWI_STATUS_NACK(uint32_t status) { + return (status & TWI_SR_NACK) == TWI_SR_NACK; +} + +TwoWire::TwoWire(Twi *_twi, void(*_beginCb)(void)) : + twi(_twi), rxBufferIndex(0), rxBufferLength(0), txAddress(0), + txBufferLength(0), srvBufferIndex(0), srvBufferLength(0), status( + UNINITIALIZED), onBeginCallback(_beginCb) { + // Empty +} + +void TwoWire::begin(void) { + if (onBeginCallback) + onBeginCallback(); + + // Disable PDC channel + twi->TWI_PTCR = UART_PTCR_RXTDIS | UART_PTCR_TXTDIS; + + TWI_ConfigureMaster(twi, TWI_CLOCK, VARIANT_MCK); + status = MASTER_IDLE; +} + +void TwoWire::begin(uint8_t address) { + if (onBeginCallback) + onBeginCallback(); + + // Disable PDC channel + twi->TWI_PTCR = UART_PTCR_RXTDIS | UART_PTCR_TXTDIS; + + TWI_ConfigureSlave(twi, address); + status = SLAVE_IDLE; + TWI_EnableIt(twi, TWI_IER_SVACC); + //| TWI_IER_RXRDY | TWI_IER_TXRDY | TWI_IER_TXCOMP); +} + +void TwoWire::begin(int address) { + begin((uint8_t) address); +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity) { + if (quantity > BUFFER_LENGTH) + quantity = BUFFER_LENGTH; + + // perform blocking read into buffer + int readed = 0; + TWI_StartRead(twi, address, 0, 0); + do { + // Stop condition must be set during the reception of last byte + if (readed + 1 == quantity) + TWI_SendSTOPCondition( twi); + + TWI_WaitByteReceived(twi, RECV_TIMEOUT); + rxBuffer[readed++] = TWI_ReadByte(twi); + } while (readed < quantity); + TWI_WaitTransferComplete(twi, RECV_TIMEOUT); + + // set rx buffer iterator vars + rxBufferIndex = 0; + rxBufferLength = readed; + + return readed; +} + +uint8_t TwoWire::requestFrom(int address, int quantity) { + return requestFrom((uint8_t) address, (uint8_t) quantity); +} + +void TwoWire::beginTransmission(uint8_t address) { + status = MASTER_SEND; + + // save address of target and empty buffer + txAddress = address; + txBufferLength = 0; +} + +void TwoWire::beginTransmission(int address) { + beginTransmission((uint8_t) address); +} + +uint8_t TwoWire::endTransmission(void) { + // transmit buffer (blocking) + TWI_StartWrite(twi, txAddress, 0, 0, txBuffer[0]); + TWI_WaitByteSent(twi, XMIT_TIMEOUT); + int sent = 1; + while (sent < txBufferLength) { + TWI_WriteByte(twi, txBuffer[sent++]); + TWI_WaitByteSent(twi, XMIT_TIMEOUT); + } + TWI_Stop( twi); + TWI_WaitTransferComplete(twi, XMIT_TIMEOUT); + + // empty buffer + txBufferLength = 0; + + status = MASTER_IDLE; + return sent; +} + +void TwoWire::write(uint8_t data) { + if (status == MASTER_SEND) { + if (txBufferLength >= BUFFER_LENGTH) + return; + txBuffer[txBufferLength++] = data; + } else { + if (srvBufferLength >= BUFFER_LENGTH) + return; + srvBuffer[srvBufferLength++] = data; + } +} + +void TwoWire::write(const uint8_t *data, size_t quantity) { + if (status == MASTER_SEND) { + for (size_t i = 0; i < quantity; ++i) { + if (txBufferLength >= BUFFER_LENGTH) + return; + txBuffer[txBufferLength++] = data[i]; + } + } else { + for (size_t i = 0; i < quantity; ++i) { + if (srvBufferLength >= BUFFER_LENGTH) + return; + srvBuffer[srvBufferLength++] = data[i]; + } + } +} + +void TwoWire::write(const char *data) { + write((uint8_t*) data, strlen(data)); +} + +int TwoWire::available(void) { + return rxBufferLength - rxBufferIndex; +} + +int TwoWire::read(void) { + if (rxBufferIndex < rxBufferLength) + return rxBuffer[rxBufferIndex++]; + return -1; +} + +int TwoWire::peek(void) { + if (rxBufferIndex < rxBufferLength) + return rxBuffer[rxBufferIndex]; + return -1; +} + +void TwoWire::flush(void) { + // Do nothing, use endTransmission(..) to force + // data transfer. +} + +void TwoWire::onReceive(void(*function)(int)) { + onReceiveCallback = function; +} + +void TwoWire::onRequest(void(*function)(void)) { + onRequestCallback = function; +} + +void TwoWire::onService(void) { + // Retrieve interrupt status + uint32_t sr = TWI_GetStatus(twi); + + if (status == SLAVE_IDLE && TWI_STATUS_SVACC(sr)) { + TWI_DisableIt(twi, TWI_IDR_SVACC); + TWI_EnableIt(twi, TWI_IER_RXRDY | TWI_IER_GACC | TWI_IER_NACK + | TWI_IER_EOSACC | TWI_IER_SCL_WS | TWI_IER_TXCOMP); + + srvBufferLength = 0; + srvBufferIndex = 0; + + // Detect if we should go into RECV or SEND status + // SVREAD==1 means *master* reading -> SLAVE_SEND + if (!TWI_STATUS_SVREAD(sr)) { + status = SLAVE_RECV; + } else { + status = SLAVE_SEND; + + // Alert calling program to generate a response ASAP + if (onRequestCallback) + onRequestCallback(); + else + // create a default 1-byte response + write((uint8_t) 0); + } + } + + if (status != SLAVE_IDLE) { + if (TWI_STATUS_TXCOMP(sr) && TWI_STATUS_EOSACC(sr)) { + if (status == SLAVE_RECV && onReceiveCallback) { + // Copy data into rxBuffer + // (allows to receive another packet while the + // user program reads actual data) + for (uint8_t i = 0; i < srvBufferLength; ++i) + rxBuffer[i] = srvBuffer[i]; + rxBufferIndex = 0; + rxBufferLength = srvBufferLength; + + // Alert calling program + onReceiveCallback( rxBufferLength); + } + + // Transfer completed + TWI_EnableIt(twi, TWI_SR_SVACC); + TWI_DisableIt(twi, TWI_IDR_RXRDY | TWI_IDR_GACC | TWI_IDR_NACK + | TWI_IDR_EOSACC | TWI_IDR_SCL_WS | TWI_IER_TXCOMP); + status = SLAVE_IDLE; + } + } + + if (status == SLAVE_RECV) { + if (TWI_STATUS_RXRDY(sr)) { + if (srvBufferLength < BUFFER_LENGTH) + srvBuffer[srvBufferLength++] = TWI_ReadByte(twi); + } + } + + if (status == SLAVE_SEND) { + if (TWI_STATUS_TXRDY(sr) && !TWI_STATUS_NACK(sr)) { + uint8_t c = 'x'; + if (srvBufferIndex < srvBufferLength) + c = srvBuffer[srvBufferIndex++]; + TWI_WriteByte(twi, c); + } + } +} + +#if WIRE_INTERFACES_COUNT > 0 +static void Wire_Init(void) { + PMC_EnablePeripheral( WIRE_INTERFACE_ID); + PIO_Configure(g_APinDescription[PIN_WIRE_SDA].pPort, + g_APinDescription[PIN_WIRE_SDA].ulPinType, + g_APinDescription[PIN_WIRE_SDA].ulPin, + g_APinDescription[PIN_WIRE_SDA].ulPinConfiguration); + PIO_Configure(g_APinDescription[PIN_WIRE_SCL].pPort, + g_APinDescription[PIN_WIRE_SCL].ulPinType, + g_APinDescription[PIN_WIRE_SCL].ulPin, + g_APinDescription[PIN_WIRE_SCL].ulPinConfiguration); + + NVIC_DisableIRQ(TWI1_IRQn); + NVIC_ClearPendingIRQ(TWI1_IRQn); + NVIC_SetPriority(TWI1_IRQn, 0); + NVIC_EnableIRQ(TWI1_IRQn); +} + +TwoWire Wire = TwoWire(WIRE_INTERFACE, Wire_Init); + +void WIRE_ISR_HANDLER(void) { + Wire.onService(); +} +#endif + +#if WIRE_INTERFACES_COUNT > 1 +static void Wire1_Init(void) { + PMC_EnablePeripheral( WIRE1_INTERFACE_ID); + PIO_Configure(g_APinDescription[PIN_WIRE1_SDA].pPort, + g_APinDescription[PIN_WIRE1_SDA].ulPinType, + g_APinDescription[PIN_WIRE1_SDA].ulPin, + g_APinDescription[PIN_WIRE1_SDA].ulPinConfiguration); + PIO_Configure(g_APinDescription[PIN_WIRE1_SCL].pPort, + g_APinDescription[PIN_WIRE1_SCL].ulPinType, + g_APinDescription[PIN_WIRE1_SCL].ulPin, + g_APinDescription[PIN_WIRE1_SCL].ulPinConfiguration); +} + +TwoWire Wire1 = TwoWire(WIRE1_INTERFACE, Wire1_Init); + +void WIRE1_ISR_HANDLER(void) { + Wire1.onService(); +} +#endif diff --git a/hardware/sam/libraries/Wire/Wire.h b/hardware/sam/libraries/Wire/Wire.h new file mode 100644 index 000000000..b5edc2425 --- /dev/null +++ b/hardware/sam/libraries/Wire/Wire.h @@ -0,0 +1,107 @@ +/* + * TwoWire.h - TWI/I2C library for Arduino Due + * Copyright (c) 2011 Cristian Maglie . + * All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef TwoWire_h +#define TwoWire_h + +#include "Stream.h" +#include "twi.h" +#include "variant.h" + +#define BUFFER_LENGTH 32 + +class TwoWire: public Stream { +public: + TwoWire(Twi *twi, void(*begin_cb)(void)); + void begin(); + void begin(uint8_t); + void begin(int); + void beginTransmission(uint8_t); + void beginTransmission(int); + uint8_t endTransmission(void); + uint8_t requestFrom(uint8_t, uint8_t); + uint8_t requestFrom(int, int); + virtual void write(uint8_t); + virtual void write(const char *); + virtual void write(const uint8_t *, size_t); + virtual int available(void); + virtual int read(void); + virtual int peek(void); + virtual void flush(void); + void onReceive(void(*)(int)); + void onRequest(void(*)(void)); + + void onService(void); + +private: + // RX Buffer + uint8_t rxBuffer[BUFFER_LENGTH]; + uint8_t rxBufferIndex; + uint8_t rxBufferLength; + + // TX Buffer + uint8_t txAddress; + uint8_t txBuffer[BUFFER_LENGTH]; + uint8_t txBufferLength; + + // Service buffer + uint8_t srvBuffer[BUFFER_LENGTH]; + uint8_t srvBufferIndex; + uint8_t srvBufferLength; + + // Callback user functions + void (*onRequestCallback)(void); + void (*onReceiveCallback)(int); + + // Called before initialization + void (*onBeginCallback)(void); + + // TWI instance + Twi *twi; + + // TWI state + enum TwoWireStatus { + UNINITIALIZED, + MASTER_IDLE, + MASTER_SEND, + MASTER_RECV, + SLAVE_IDLE, + SLAVE_RECV, + SLAVE_SEND + }; + TwoWireStatus status; + + // TWI clock frequency + static const uint32_t TWI_CLOCK = 100000; + + // Timeouts ( + static const uint32_t RECV_TIMEOUT = 100000; + static const uint32_t XMIT_TIMEOUT = 100000; +}; + +#if WIRE_INTERFACES_COUNT > 0 +extern TwoWire Wire; +#endif +#if WIRE_INTERFACES_COUNT > 1 +extern TwoWire Wire1; +#endif + +#endif + diff --git a/hardware/sam/libraries/Wire/examples/SFRRanger_reader/SFRRanger_reader.pde b/hardware/sam/libraries/Wire/examples/SFRRanger_reader/SFRRanger_reader.pde new file mode 100644 index 000000000..9c41c18f1 --- /dev/null +++ b/hardware/sam/libraries/Wire/examples/SFRRanger_reader/SFRRanger_reader.pde @@ -0,0 +1,87 @@ +// I2C SRF10 or SRF08 Devantech Ultrasonic Ranger Finder +// by Nicholas Zambetti +// and James Tichenor + +// Demonstrates use of the Wire library reading data from the +// Devantech Utrasonic Rangers SFR08 and SFR10 + +// Created 29 April 2006 + +// This example code is in the public domain. + + +#include + +void setup() +{ + Wire.begin(); // join i2c bus (address optional for master) + Serial.begin(9600); // start serial communication at 9600bps +} + +int reading = 0; + +void loop() +{ + // step 1: instruct sensor to read echoes + Wire.beginTransmission(112); // transmit to device #112 (0x70) + // the address specified in the datasheet is 224 (0xE0) + // but i2c adressing uses the high 7 bits so it's 112 + Wire.write(byte(0x00)); // sets register pointer to the command register (0x00) + Wire.write(byte(0x50)); // command sensor to measure in "inches" (0x50) + // use 0x51 for centimeters + // use 0x52 for ping microseconds + Wire.endTransmission(); // stop transmitting + + // step 2: wait for readings to happen + delay(70); // datasheet suggests at least 65 milliseconds + + // step 3: instruct sensor to return a particular echo reading + Wire.beginTransmission(112); // transmit to device #112 + Wire.write(byte(0x02)); // sets register pointer to echo #1 register (0x02) + Wire.endTransmission(); // stop transmitting + + // step 4: request reading from sensor + Wire.requestFrom(112, 2); // request 2 bytes from slave device #112 + + // step 5: receive reading from sensor + if(2 <= Wire.available()) // if two bytes were received + { + reading = Wire.read(); // receive high byte (overwrites previous reading) + reading = reading << 8; // shift high byte to be high 8 bits + reading |= Wire.read(); // receive low byte as lower 8 bits + Serial.println(reading); // print the reading + } + + delay(250); // wait a bit since people have to read the output :) +} + + +/* + +// The following code changes the address of a Devantech Ultrasonic Range Finder (SRF10 or SRF08) +// usage: changeAddress(0x70, 0xE6); + +void changeAddress(byte oldAddress, byte newAddress) +{ + Wire.beginTransmission(oldAddress); + Wire.write(byte(0x00)); + Wire.write(byte(0xA0)); + Wire.endTransmission(); + + Wire.beginTransmission(oldAddress); + Wire.write(byte(0x00)); + Wire.write(byte(0xAA)); + Wire.endTransmission(); + + Wire.beginTransmission(oldAddress); + Wire.write(byte(0x00)); + Wire.write(byte(0xA5)); + Wire.endTransmission(); + + Wire.beginTransmission(oldAddress); + Wire.write(byte(0x00)); + Wire.write(newAddress); + Wire.endTransmission(); +} + +*/ diff --git a/hardware/sam/libraries/Wire/examples/digital_potentiometer/digital_potentiometer.pde b/hardware/sam/libraries/Wire/examples/digital_potentiometer/digital_potentiometer.pde new file mode 100644 index 000000000..38da1c543 --- /dev/null +++ b/hardware/sam/libraries/Wire/examples/digital_potentiometer/digital_potentiometer.pde @@ -0,0 +1,39 @@ +// I2C Digital Potentiometer +// by Nicholas Zambetti +// and Shawn Bonkowski + +// Demonstrates use of the Wire library +// Controls AD5171 digital potentiometer via I2C/TWI + +// Created 31 March 2006 + +// This example code is in the public domain. + +// This example code is in the public domain. + + +#include + +void setup() +{ + Wire.begin(); // join i2c bus (address optional for master) +} + +byte val = 0; + +void loop() +{ + Wire.beginTransmission(44); // transmit to device #44 (0x2c) + // device address is specified in datasheet + Wire.write(byte(0x00)); // sends instruction byte + Wire.write(val); // sends potentiometer value byte + Wire.endTransmission(); // stop transmitting + + val++; // increment value + if(val == 64) // if reached 64th position (max) + { + val = 0; // start over from lowest value + } + delay(500); +} + diff --git a/hardware/sam/libraries/Wire/examples/master_reader/master_reader.pde b/hardware/sam/libraries/Wire/examples/master_reader/master_reader.pde new file mode 100644 index 000000000..4124d7d6b --- /dev/null +++ b/hardware/sam/libraries/Wire/examples/master_reader/master_reader.pde @@ -0,0 +1,32 @@ +// Wire Master Reader +// by Nicholas Zambetti + +// Demonstrates use of the Wire library +// Reads data from an I2C/TWI slave device +// Refer to the "Wire Slave Sender" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + + +#include + +void setup() +{ + Wire.begin(); // join i2c bus (address optional for master) + Serial.begin(9600); // start serial for output +} + +void loop() +{ + Wire.requestFrom(2, 6); // request 6 bytes from slave device #2 + + while(Wire.available()) // slave may send less than requested + { + char c = Wire.read(); // receive a byte as character + Serial.print(c); // print the character + } + + delay(500); +} diff --git a/hardware/sam/libraries/Wire/examples/master_writer/master_writer.pde b/hardware/sam/libraries/Wire/examples/master_writer/master_writer.pde new file mode 100644 index 000000000..ccaa0361b --- /dev/null +++ b/hardware/sam/libraries/Wire/examples/master_writer/master_writer.pde @@ -0,0 +1,31 @@ +// Wire Master Writer +// by Nicholas Zambetti + +// Demonstrates use of the Wire library +// Writes data to an I2C/TWI slave device +// Refer to the "Wire Slave Receiver" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + + +#include + +void setup() +{ + Wire.begin(); // join i2c bus (address optional for master) +} + +byte x = 0; + +void loop() +{ + Wire.beginTransmission(4); // transmit to device #4 + Wire.write("x is "); // sends five bytes + Wire.write(x); // sends one byte + Wire.endTransmission(); // stop transmitting + + x++; + delay(500); +} diff --git a/hardware/sam/libraries/Wire/examples/slave_receiver/slave_receiver.pde b/hardware/sam/libraries/Wire/examples/slave_receiver/slave_receiver.pde new file mode 100644 index 000000000..60dd4bdde --- /dev/null +++ b/hardware/sam/libraries/Wire/examples/slave_receiver/slave_receiver.pde @@ -0,0 +1,38 @@ +// Wire Slave Receiver +// by Nicholas Zambetti + +// Demonstrates use of the Wire library +// Receives data as an I2C/TWI slave device +// Refer to the "Wire Master Writer" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + + +#include + +void setup() +{ + Wire.begin(4); // join i2c bus with address #4 + Wire.onReceive(receiveEvent); // register event + Serial.begin(9600); // start serial for output +} + +void loop() +{ + delay(100); +} + +// function that executes whenever data is received from master +// this function is registered as an event, see setup() +void receiveEvent(int howMany) +{ + while(1 < Wire.available()) // loop through all but the last + { + char c = Wire.read(); // receive byte as a character + Serial.print(c); // print the character + } + int x = Wire.read(); // receive byte as an integer + Serial.println(x); // print the integer +} diff --git a/hardware/sam/libraries/Wire/examples/slave_sender/slave_sender.pde b/hardware/sam/libraries/Wire/examples/slave_sender/slave_sender.pde new file mode 100644 index 000000000..d3b238af9 --- /dev/null +++ b/hardware/sam/libraries/Wire/examples/slave_sender/slave_sender.pde @@ -0,0 +1,32 @@ +// Wire Slave Sender +// by Nicholas Zambetti + +// Demonstrates use of the Wire library +// Sends data as an I2C/TWI slave device +// Refer to the "Wire Master Reader" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + + +#include + +void setup() +{ + Wire.begin(2); // join i2c bus with address #2 + Wire.onRequest(requestEvent); // register event +} + +void loop() +{ + delay(100); +} + +// function that executes whenever data is requested by master +// this function is registered as an event, see setup() +void requestEvent() +{ + Wire.write("hello "); // respond with message of 6 bytes + // as expected by master +} diff --git a/hardware/sam/libraries/Wire/keywords.txt b/hardware/sam/libraries/Wire/keywords.txt new file mode 100644 index 000000000..12f129b99 --- /dev/null +++ b/hardware/sam/libraries/Wire/keywords.txt @@ -0,0 +1,31 @@ +####################################### +# Syntax Coloring Map For Wire +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +begin KEYWORD2 +beginTransmission KEYWORD2 +endTransmission KEYWORD2 +requestFrom KEYWORD2 +send KEYWORD2 +receive KEYWORD2 +onReceive KEYWORD2 +onRequest KEYWORD2 + +####################################### +# Instances (KEYWORD2) +####################################### + +Wire KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### + diff --git a/hardware/sam/platforms.txt b/hardware/sam/platforms.txt new file mode 100755 index 000000000..3740fdb9e --- /dev/null +++ b/hardware/sam/platforms.txt @@ -0,0 +1,69 @@ +#########Compiler Recipe################################# +##compile c object files +##Default.recipe, overide if overide exists, these defauls should remain the same, if you need to change them do it as an overide. + +#default.recipe.c.o.pattern={0}{1}|{2}|{3}{4}|-DF_CPU={5}|-D{6}={7}|{8}|{9}|-o|{10} +#default.recipe.cpp.o.pattern={0}{1}|{2}|{3}{4}|-DF_CPU={5}|-D{6}={7}|{8}|{9}|-o|{10} +#default.recipe.ar.pattern={0}{1}|{2}|{3}{4}|{5} +#default.recipe.c.combine.pattern={0}{1}|{2}|{3}{4}|-o|{5}{6}.elf|{7}|{8}|-L{9}|-lm +#default.recipe.objcopy.eep.pattern={0}{1}|{2}|{3}.elf|{4}.eep +#default.recipe.objcopy.hex.pattern={0}{1}|{2}|{3}.elf|{4}.hex + +########sam compile pattern ########## +#sam.recipe.c.o.pattern={0=compiler.path}{1=compiler.c.cmd}{2=compiler.c.flags}{3=compiler.cpudef}{4=build.mcu}-DF_CPU={5=build.f_cpu}-D{7=ARDUINO}={6=Base.REVISION}{7=-I/INCLUDE_PATHS} {8=SOURCE_NAME} -o{9=OBJECT_NAME} +#object name seems to have build path in it. +sam.recipe.c.o.pattern={0}{1}|{2}|{3}{4}|-DF_CPU={5}|-D{6}={7}|{11}|{8}|{9}|-o|{10} + + +##compile cc object files +#sam.recipe.cc.o.pattern={0=compiler.path}{1=compiler.cc.cmd}{2=compiler.c.flags}{3=compiler.cpudef}{4=build.mcu}-DF_CPU={5=build.f_cpu}-DARDUINO={6=Base.REVISION}{-7=I/INCLUDE_PATHS} {8=SOURCE_NAME} -o{9=BUILD_PATH}{10=OBJECT_NAME} +sam.recipe.cpp.o.pattern={0}{1}|{2}|{3}{4}|-DF_CPU={5}|-D{6}={7}|{11}|{8}|{9}|-o|{10} +##create archives +#sam.recipe.ar.pattern={0=compiler.path}{1=compiler.ar.cmd}{2=compiler.ar.flags}{3=BUILD_PATH}{4=CORE_NAME=core.a}{5=BUILD_PATH}{6=OBJECT_NAME} +sam.recipe.ar.pattern={0}{1}|{2}|{3}{4}|{5} + +##combine gc-sections| archives, and objects +#sam.recipe.c.combine.pattern={0=compiler.path}{1=compiler.c.cmd}{2=compiler.combine.flags}{3=compiler.cpudef}{4=build.mcu} -o {5=BUILD_PATH}{6=SOURCE_NAME}.elf {7=BUILD_PATH}{8=SOURCE_NAME}.o {9=BUILD_PATH}{10=CORE_NAME=core.a} -L{11=BUILD_PATH} -lm +#sam.recipe.c.combine.pattern={0}{1}|{2}|{3}{4}|-o|{5}{6}.elf|{7}{8}|{9}|-L{10}|-lm +sam.recipe.c.combine.pattern={0}{1}|{2}|{3}{4}|-T{11}|-Wl,-Map,{5}{6}.map|-o|{5}{6}.elf|-L{9}|-lm|-lgcc|-mthumb|-Wl,--cref|-Wl,--check-sections|-Wl,--gc-sections|-Wl,--entry=Reset_Handler|-Wl,--unresolved-symbols=report-all|-Wl,--warn-common|-Wl,--warn-section-align|-Wl,--warn-unresolved-symbols|-Wl,--start-group|{7}|{8}|-Wl,--end-group + +##create eeprom +#sam.recipe.objcopy.eep.pattern={0=compiler.path}{1=compiler.objcopy.cmd}{2=compiler.objcopy.eep.flags} {3=BUILD_PATH}{4=SOURCE_NAME}.elf {5=BUILD_PATH}{6=SOURCE_NAME}.eep +#sam.recipe.objcopy.eep.pattern={0}{1}|{2}|{3}.elf|{4}.eep +sam.recipe.objcopy.eep.pattern= + +##create hex +#sam.recipe.objcopy.hex.pattern={0=compiler.path}{1=compiler.objcopy.cmd}{2=compiler.objcopy.elf.flags} {3=BUILD_PATH}{4=SOURCE_NAME}.elf {5=BUILD_PATH}{6=SOURCE_NAME}.hex +sam.recipe.objcopy.hex.pattern={0}{1}|{2}|{3}.elf|{4}.bin + + +##compute size +sam.recipe.size.pattern={0}{1}|{2}.elf + + +######################################################## +sam.name=Atmel SAM +#sam.compiler.path Official default is correct, only need to change this if you want to overide the initial default +sam.compiler.path={0}/hardware/tools/CodeSourcery_arm/bin/ +sam.compiler.c.cmd=arm-none-eabi-gcc +sam.compiler.c.flags=|-c|-g|-Os|-w|-mthumb|-mlong-calls|-ffunction-sections|-nostdlib|--param|max-inline-insns-single=500|-Dprintf=iprintf +sam.compiler.c.elf.flags=|-Os|-Wl,--gc-sections +sam.compiler.c.elf.cmd=arm-none-eabi-gcc +sam.compiler.S.flags=|-c|-g|-assembler-with-cpp +sam.compiler.cpp.cmd=arm-none-eabi-g++ +sam.compiler.cpp.flags=|-c|-g|-Os|-w|-mthumb|-mlong-calls|-ffunction-sections|-nostdlib|--param|max-inline-insns-single=500|-fno-rtti|-fno-exceptions|-Dprintf=iprintf +sam.compiler.ar.cmd=arm-none-eabi-ar +sam.compiler.ar.flags=rcs +sam.compiler.objcopy.cmd=arm-none-eabi-objcopy +sam.compiler.objcopy.eep.flags=|-O|ihex|-j|.eeprom|--set-section-flags=.eeprom=alloc,load|--no-change-warnings|--change-section-lma|.eeprom=0 +sam.compiler.elf2hex.flags=|-O|binary +sam.compiler.elf2hex.cmd=arm-none-eabi-objcopy +sam.compiler.ldflags= +sam.compiler.cpudef=-mcpu= +sam.compiler.size.cmd=arm-none-eabi-size +sam.compiler.upload.cmd= +sam.compiler.upload.flags= +sam.compiler.define=-DARDUINO= +sam.library.path=./hardware/sam/cores/sam +sam.library.core.path=./libraries;./hardware/sam/libraries + diff --git a/hardware/sam/programmers.txt b/hardware/sam/programmers.txt new file mode 100644 index 000000000..371e5ae82 --- /dev/null +++ b/hardware/sam/programmers.txt @@ -0,0 +1,18 @@ +samba.name=SAM-BA +samba.communication=serial +samba.protocol=sam-ba +samba.speed=19200 + +sambausb.name=SAM-BA +sambausb.communication=usb +sambausb.protocol=sam-ba + +arduinosamba.name=Arduino as SAM-BA +arduinosamba.communication=serial +arduinosamba.protocol=sam-ba +arduinosamba.speed=19200 + +arduinosambausb.name=Arduino as SAM-BA USB +arduinosambausb.communication=usb +arduinosambausb.protocol=sam-ba + diff --git a/hardware/sam/sam.bat b/hardware/sam/sam.bat new file mode 100644 index 000000000..550f9a642 --- /dev/null +++ b/hardware/sam/sam.bat @@ -0,0 +1,6 @@ +start "libsam" /d"system\libsam\build_gcc" /max "cd" +start "libarduino" /d"cores\sam\build_gcc" /max "cd" +start "libvariant sam3s-ek" /d"variants\sam3s_ek\build_gcc" /max "cd" +start "libvariant sam3u-ek" /d"variants\sam3u_ek\build_gcc" /max "cd" +start "libvariant Arduino Due" /d"variants\arduino_due\build_gcc" /max "cd" +start "test" /d"cores\sam\validation\build_gcc" /max "cd" \ No newline at end of file diff --git a/hardware/sam/system/CMSIS/CMSIS END USER LICENCE AGREEMENT.pdf b/hardware/sam/system/CMSIS/CMSIS END USER LICENCE AGREEMENT.pdf new file mode 100644 index 000000000..e04afaee6 Binary files /dev/null and b/hardware/sam/system/CMSIS/CMSIS END USER LICENCE AGREEMENT.pdf differ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/Common/Include/math_helper.h b/hardware/sam/system/CMSIS/DSP_Lib/Examples/Common/Include/math_helper.h new file mode 100644 index 000000000..4eb34ace8 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/Common/Include/math_helper.h @@ -0,0 +1,53 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 29. November 2010 +* $Revision: V1.0.3 +* +* Project: CMSIS DSP Library +* +* Title: math_helper.h +* +* +* Description: Prototypes of all helper functions required. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + + +#include "arm_math.h" + +#ifndef MATH_HELPER_H +#define MATH_HELPER_H + +float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize); +void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples); +void arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits); +void arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits); +void arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples); +void arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_clip_f32(float *pIn, uint32_t numSamples); +uint32_t arm_calc_guard_bits(uint32_t num_adds); +void arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits); +uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples); +uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples); +uint32_t arm_calc_2pow(uint32_t guard_bits); +#endif + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/Common/Source/math_helper.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/Common/Source/math_helper.c new file mode 100644 index 000000000..75dcd5f25 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/Common/Source/math_helper.c @@ -0,0 +1,447 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 29. November 2010 +* $Revision: V1.0.3 +* +* Project: CMSIS DSP Library +* +* Title: math_helper.c +* +* Description: Definition of all helper functions required. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- +* Include standard header files +* -------------------------------------------------------------------- */ +#include + +/* ---------------------------------------------------------------------- +* Include project header files +* -------------------------------------------------------------------- */ +#include "math_helper.h" + +/** + * @brief Caluclation of SNR + * @param float* Pointer to the reference buffer + * @param float* Pointer to the test buffer + * @param uint32_t total number of samples + * @return float SNR + * The function Caluclates signal to noise ratio for the reference output + * and test output + */ + +float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize) +{ + float EnergySignal = 0.0, EnergyError = 0.0; + uint32_t i; + float SNR; + int temp; + int *test; + + for (i = 0; i < buffSize; i++) + { + /* Checking for a NAN value in pRef array */ + test = (int *)(&pRef[i]); + temp = *test; + + if(temp == 0x7FC00000) + { + return(0); + } + + /* Checking for a NAN value in pTest array */ + test = (int *)(&pTest[i]); + temp = *test; + + if(temp == 0x7FC00000) + { + return(0); + } + EnergySignal += pRef[i] * pRef[i]; + EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]); + } + + /* Checking for a NAN value in EnergyError */ + test = (int *)(&EnergyError); + temp = *test; + + if(temp == 0x7FC00000) + { + return(0); + } + + + SNR = 10 * log10 (EnergySignal / EnergyError); + + return (SNR); + +} + + +/** + * @brief Provide guard bits for Input buffer + * @param q15_t* Pointer to input buffer + * @param uint32_t blockSize + * @param uint32_t guard_bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + +/** + * @brief Converts float to fixed in q12.20 format + * @param uint32_t number of samples in the buffer + * @return none + * The function converts floating point values to fixed point(q12.20) values + */ + +void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1048576.0f corresponds to pow(2, 20) */ + pOut[i] = (q31_t) (pIn[i] * 1048576.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 1.0) + { + pOut[i] = 0x000FFFFF; + } + } +} + +/** + * @brief Compare MATLAB Reference Output and ARM Test output + * @param q15_t* Pointer to Ref buffer + * @param q15_t* Pointer to Test buffer + * @param uint32_t number of samples in the buffer + * @return none + */ + +uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples) +{ + uint32_t i; + int32_t diff, diffCrnt = 0; + uint32_t maxDiff = 0; + + for (i = 0; i < numSamples; i++) + { + diff = pIn[i] - pOut[i]; + diffCrnt = (diff > 0) ? diff : -diff; + + if(diffCrnt > maxDiff) + { + maxDiff = diffCrnt; + } + } + + return(maxDiff); +} + +/** + * @brief Compare MATLAB Reference Output and ARM Test output + * @param q31_t* Pointer to Ref buffer + * @param q31_t* Pointer to Test buffer + * @param uint32_t number of samples in the buffer + * @return none + */ + +uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + int32_t diff, diffCrnt = 0; + uint32_t maxDiff = 0; + + for (i = 0; i < numSamples; i++) + { + diff = pIn[i] - pOut[i]; + diffCrnt = (diff > 0) ? diff : -diff; + + if(diffCrnt > maxDiff) + { + maxDiff = diffCrnt; + } + } + + return(maxDiff); +} + +/** + * @brief Provide guard bits for Input buffer + * @param q31_t* Pointer to input buffer + * @param uint32_t blockSize + * @param uint32_t guard_bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q31 (q31_t * input_buf, + uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + +/** + * @brief Provide guard bits for Input buffer + * @param q31_t* Pointer to input buffer + * @param uint32_t blockSize + * @param uint32_t guard_bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q7 (q7_t * input_buf, + uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + + + +/** + * @brief Caluclates number of guard bits + * @param uint32_t number of additions + * @return none + * The function Caluclates the number of guard bits + * depending on the numtaps + */ + +uint32_t arm_calc_guard_bits (uint32_t num_adds) +{ + uint32_t i = 1, j = 0; + + if (num_adds == 1) + { + return (0); + } + + while (i < num_adds) + { + i = i * 2; + j++; + } + + return (j); +} + +/** + * @brief Converts Q15 to floating-point + * @param uint32_t number of samples in the buffer + * @return none + */ + +void arm_apply_guard_bits (float32_t * pIn, + uint32_t numSamples, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + pIn[i] = pIn[i] * arm_calc_2pow(guard_bits); + } +} + +/** + * @brief Calculates pow(2, numShifts) + * @param uint32_t number of shifts + * @return pow(2, numShifts) + */ +uint32_t arm_calc_2pow(uint32_t numShifts) +{ + + uint32_t i, val = 1; + + for (i = 0; i < numShifts; i++) + { + val = val * 2; + } + + return(val); +} + + + +/** + * @brief Converts float to fixed q14 + * @param uint32_t number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q14 (float *pIn, q15_t * pOut, + uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 16384.0f corresponds to pow(2, 14) */ + pOut[i] = (q15_t) (pIn[i] * 16384.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 2.0) + { + pOut[i] = 0x7FFF; + } + + } + +} + + +/** + * @brief Converts float to fixed q30 format + * @param uint32_t number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q30 (float *pIn, q31_t * pOut, + uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1073741824.0f corresponds to pow(2, 30) */ + pOut[i] = (q31_t) (pIn[i] * 1073741824.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 2.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + +/** + * @brief Converts float to fixed q30 format + * @param uint32_t number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q29 (float *pIn, q31_t * pOut, + uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1073741824.0f corresponds to pow(2, 30) */ + pOut[i] = (q31_t) (pIn[i] * 536870912.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 4.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + + +/** + * @brief Converts float to fixed q28 format + * @param uint32_t number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q28 (float *pIn, q31_t * pOut, + uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 268435456.0f corresponds to pow(2, 28) */ + pOut[i] = (q31_t) (pIn[i] * 268435456.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 8.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + +/** + * @brief Clip the float values to +/- 1 + * @param pIn input buffer + * @param numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_clip_f32 (float *pIn, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + if(pIn[i] > 1.0f) + { + pIn[i] = 1.0; + } + else if( pIn[i] < -1.0f) + { + pIn[i] = -1.0; + } + + } +} + + + + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_class_marks_example.ini b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_class_marks_example.ini new file mode 100644 index 000000000..0ca6ba5ef --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_class_marks_example.ini @@ -0,0 +1,14 @@ + +/* This file demonstrates how to Map memory ranges, specify read, write, and execute permissions + + The file can be executed in the following way: + 1) manually from uVision command window (in debug mode) using command: + INCLUIDE arm_class_marks_example.ini + +*/ + + +// usual initialisation for target setup +MAP 0x20000000, 0x20008000 READ WRITE // allow R/W access to IO space + + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_cortexM0l_class_marks_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_cortexM0l_class_marks_example.uvopt new file mode 100644 index 000000000..2654ad975 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_cortexM0l_class_marks_example.uvopt @@ -0,0 +1,281 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_class_marks_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 193 + 1 +
330
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_class_marks_example\../arm_class_marks_example_f32.c\193 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 183 + 193 + 0 + ..\arm_class_marks_example_f32.c + arm_class_marks_example_f32.c + + + + + CMSIS Device + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM0.c + system_ARMCM0.c + + + 2 + 3 + 2 + 0 + 0 + 0 + 0 + 78 + 78 + 0 + .\startup_ARMCM0.s + startup_ARMCM0.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 4 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + arm_cortexM0l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_class_marks_example_f32.c + 0 + 183 + 193 + + + .\startup_ARMCM0.s + 0 + 78 + 78 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_cortexM0l_class_marks_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_cortexM0l_class_marks_example.uvproj new file mode 100644 index 000000000..989129cbd --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_cortexM0l_class_marks_example.uvproj @@ -0,0 +1,425 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M0 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M0") ESEL ELITTLE + + + + 4803 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM0l_class_marks_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_class_marks_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM0 + + ..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM0\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_class_marks_example_f32.c + 1 + ..\arm_class_marks_example_f32.c + + + + + CMSIS Device + + + system_ARMCM0.c + 1 + ..\system_ARMCM0.c + + + startup_ARMCM0.s + 2 + .\startup_ARMCM0.s + + + + + CMSIS DSP_Library + + + arm_cortexM0l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_cortexM3l_class_marks_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_cortexM3l_class_marks_example.uvopt new file mode 100644 index 000000000..439df6547 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_cortexM3l_class_marks_example.uvopt @@ -0,0 +1,287 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_class_marks_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 193 + 1 +
334
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_class_marks_example\../arm_class_marks_example_f32.c\193 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 183 + 193 + 0 + ..\arm_class_marks_example_f32.c + arm_class_marks_example_f32.c + + + + + CMSIS Device + 1 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 29 + 0 + 1 + 15 + 0 + ..\system_ARMCM3.c + system_ARMCM3.c + + + 2 + 3 + 2 + 0 + 0 + 0 + 0 + 78 + 78 + 0 + .\startup_ARMCM3.s + startup_ARMCM3.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 4 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + arm_cortexM3l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_class_marks_example_f32.c + 0 + 183 + 193 + + + ..\system_ARMCM3.c + 29 + 1 + 15 + + + .\startup_ARMCM3.s + 0 + 78 + 78 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_cortexM3l_class_marks_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_cortexM3l_class_marks_example.uvproj new file mode 100644 index 000000000..cd8c06a18 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_cortexM3l_class_marks_example.uvproj @@ -0,0 +1,425 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M3 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M3") ESEL ELITTLE + + + + 4349 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM3l_class_marks_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_class_marks_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM3 + + ..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM3\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_class_marks_example_f32.c + 1 + ..\arm_class_marks_example_f32.c + + + + + CMSIS Device + + + system_ARMCM3.c + 1 + ..\system_ARMCM3.c + + + startup_ARMCM3.s + 2 + .\startup_ARMCM3.s + + + + + CMSIS DSP_Library + + + arm_cortexM3l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_cortexM4lf_class_marks_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_cortexM4lf_class_marks_example.uvopt new file mode 100644 index 000000000..3640e4584 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_cortexM4lf_class_marks_example.uvopt @@ -0,0 +1,281 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_class_marks_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 193 + 1 +
334
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lfclass_marks_example\../arm_class_marks_example_f32.c\193 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 183 + 193 + 0 + ..\arm_class_marks_example_f32.c + arm_class_marks_example_f32.c + + + + + CMSIS Device + 1 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM4.c + system_ARMCM4.c + + + 2 + 3 + 2 + 0 + 0 + 0 + 0 + 78 + 78 + 0 + .\startup_ARMCM4.s + startup_ARMCM4.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 4 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + arm_cortexM4lf_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_class_marks_example_f32.c + 0 + 183 + 193 + + + .\startup_ARMCM4.s + 0 + 78 + 78 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_cortexM4lf_class_marks_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_cortexM4lf_class_marks_example.uvproj new file mode 100644 index 000000000..5cc7c3d79 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/arm_cortexM4lf_class_marks_example.uvproj @@ -0,0 +1,425 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M4 FPU + ARM + CLOCK(12000000) CPUTYPE("Cortex-M4") ESEL ELITTLE FPU2 + + + + 5237 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM4lfclass_marks_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_class_marks_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM4, __FPU_PRESENT = 1 + + ..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM4\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_class_marks_example_f32.c + 1 + ..\arm_class_marks_example_f32.c + + + + + CMSIS Device + + + system_ARMCM4.c + 1 + ..\system_ARMCM4.c + + + startup_ARMCM4.s + 2 + .\startup_ARMCM4.s + + + + + CMSIS DSP_Library + + + arm_cortexM4lf_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/startup_ARMCM0.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/startup_ARMCM0.s new file mode 100644 index 000000000..0acd34611 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/startup_ARMCM0.s @@ -0,0 +1,144 @@ +;/**************************************************************************//** +; * @file startup_ARMCM0.s +; * @brief CMSIS Cortex-M0 Core Device Startup File +; * for CM0 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/startup_ARMCM3.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/startup_ARMCM3.s new file mode 100644 index 000000000..5af584bdc --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/startup_ARMCM3.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM3.s +; * @brief CMSIS Cortex-M3 Core Device Startup File +; * for CM3 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/startup_ARMCM4.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/startup_ARMCM4.s new file mode 100644 index 000000000..09fdbd6ed --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/ARM/startup_ARMCM4.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM4.s +; * @brief CMSIS Cortex-M4 Core Device Startup File +; * for CM4 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/ARMCMx.ld b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/ARMCMx.ld new file mode 100644 index 000000000..9cf8c92fa --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/ARMCMx.ld @@ -0,0 +1,198 @@ +/* Linker script for Cortex-M0 + * + * Version:CodeSourcery Sourcery G++ Lite 2007q3-53 + * BugURL:https://support.codesourcery.com/GNUToolchain/ + * + * Copyright 2007 CodeSourcery. + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. */ + +OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") +ENTRY(_start) +SEARCH_DIR(.) +GROUP(-lgcc -lc -lcs3 -lcs3unhosted -lcs3micro) + +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 64K + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 8K +} + +/* These force the linker to search for particular symbols from + * the start of the link process and thus ensure the user's + * overrides are picked up + */ +EXTERN(__cs3_reset_cortex_m) +EXTERN(__cs3_interrupt_vector_cortex_m) +EXTERN(__cs3_start_c main __cs3_stack __cs3_stack_size __cs3_heap_end) + +PROVIDE(__cs3_stack = __cs3_region_start_ram + __cs3_region_size_ram); +PROVIDE(__cs3_stack_size = __cs3_region_start_ram + __cs3_region_size_ram - _end); +PROVIDE(__cs3_heap_start = _end); +PROVIDE(__cs3_heap_end = __cs3_region_start_ram + __cs3_region_size_ram); + +SECTIONS +{ + .text : + { + CREATE_OBJECT_SYMBOLS + __cs3_region_start_rom = .; + *(.cs3.region-head.rom) + __cs3_interrupt_vector = __cs3_interrupt_vector_cortex_m; + *(.cs3.interrupt_vector) + /* Make sure we pulled in an interrupt vector. */ + ASSERT (. != __cs3_interrupt_vector_cortex_m, "No interrupt vector"); + *(.rom) + *(.rom.b) + + __cs3_reset = __cs3_reset_cortex_m; + *(.cs3.reset) + /* Make sure we pulled in some reset code. */ + ASSERT (. != __cs3_reset, "No reset code"); + + *(.text .text.* .gnu.linkonce.t.*) + *(.plt) + *(.gnu.warning) + *(.glue_7t) *(.glue_7) *(.vfp11_veneer) + + *(.rodata .rodata.* .gnu.linkonce.r.*) + + *(.ARM.extab* .gnu.linkonce.armextab.*) + *(.gcc_except_table) + *(.eh_frame_hdr) + *(.eh_frame) + + . = ALIGN(4); + KEEP(*(.init)) + + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(0x4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + __cs3_regions = .; + LONG (0) + LONG (__cs3_region_init_ram) + LONG (__cs3_region_start_ram) + LONG (__cs3_region_init_size_ram) + LONG (__cs3_region_zero_size_ram) + } + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } >rom + __exidx_end = .; + .text.align : + { + . = ALIGN(8); + _etext = .; + } >rom + __cs3_region_size_rom = LENGTH(rom); + __cs3_region_num = 1; + + .data : + { + __cs3_region_start_ram = .; + *(.cs3.region-head.ram) + KEEP(*(.jcr)) + *(.got.plt) *(.got) + *(.shdata) + *(.data .data.* .gnu.linkonce.d.*) + *(.ram) + . = ALIGN (8); + _edata = .; + } >ram AT>rom + .bss : + { + *(.shbss) + *(.bss .bss.* .gnu.linkonce.b.*) + *(COMMON) + *(.ram.b) + . = ALIGN (8); + _end = .; + __end = .; + } >ram AT>rom + .heap : + { + *(.heap) + } >ram + .stack (__cs3_stack - __cs3_stack_size) : + { + *(.stack) + } >ram + __cs3_region_init_ram = LOADADDR (.data); + __cs3_region_init_size_ram = _edata - __cs3_region_start_ram; + __cs3_region_zero_size_ram = _end - _edata; + __cs3_region_size_ram = LENGTH(ram); + __cs3_region_num = 1; + + .stab 0 (NOLOAD) : { *(.stab) } + .stabstr 0 (NOLOAD) : { *(.stabstr) } + /* DWARF debug sections. + * Symbols in the DWARF debugging sections are relative to the beginning + * of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + + .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } + .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) } + /DISCARD/ : { *(.note.GNU-stack) } +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_class_marks_example.ini b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_class_marks_example.ini new file mode 100644 index 000000000..0ca6ba5ef --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_class_marks_example.ini @@ -0,0 +1,14 @@ + +/* This file demonstrates how to Map memory ranges, specify read, write, and execute permissions + + The file can be executed in the following way: + 1) manually from uVision command window (in debug mode) using command: + INCLUIDE arm_class_marks_example.ini + +*/ + + +// usual initialisation for target setup +MAP 0x20000000, 0x20008000 READ WRITE // allow R/W access to IO space + + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_cortexM0l_class_marks_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_cortexM0l_class_marks_example.uvopt new file mode 100644 index 000000000..4efa018b9 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_cortexM0l_class_marks_example.uvopt @@ -0,0 +1,261 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x3 + ARM-GNU + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_class_marks_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 193 + 1 +
268
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_class_marks_example\../arm_class_marks_example_f32.c\193 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 183 + 193 + 0 + ../arm_class_marks_example_f32.c + arm_class_marks_example_f32.c + + + + + CMSIS Device + 1 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../system_ARMCM0.c + system_ARMCM0.c + + + 2 + 3 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM0.s + startup_ARMCM0.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + + + 1 + 0 + + 100 + 0 + + + ../arm_class_marks_example_f32.c + 0 + 183 + 193 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_cortexM0l_class_marks_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_cortexM0l_class_marks_example.uvproj new file mode 100644 index 000000000..902e454c4 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_cortexM0l_class_marks_example.uvproj @@ -0,0 +1,328 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x3 + ARM-GNU + + + Cortex-M0 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M0") ESEL ELITTLE + + + + 4803 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM0l_class_marks_example + 1 + 0 + 0 + 1 + 0 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_class_marks_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + "Cortex-M0" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 2 + 1 + + + ARM_MATH_CM0 + + ..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM0\Include + + + + 0 + 1 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + + + + arm_cortexM0l_math + ..\..\..\..\Lib\GCC + -Wl,--gc-sections + ARMCMx.ld + + + + + + Source Group 1 + + + arm_class_marks_example_f32.c + 1 + ../arm_class_marks_example_f32.c + + + + + CMSIS Device + + + system_ARMCM0.c + 1 + ../system_ARMCM0.c + + + startup_ARMCM0.s + 2 + .\startup_ARMCM0.s + + + + + CMSIS DSP_Library + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_cortexM3l_class_marks_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_cortexM3l_class_marks_example.uvopt new file mode 100644 index 000000000..d8322edd5 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_cortexM3l_class_marks_example.uvopt @@ -0,0 +1,261 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x3 + ARM-GNU + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_class_marks_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 193 + 1 +
392
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_class_marks_example\../arm_class_marks_example_f32.c\193 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 183 + 193 + 0 + ../arm_class_marks_example_f32.c + arm_class_marks_example_f32.c + + + + + CMSIS Device + 1 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../system_ARMCM3.c + system_ARMCM3.c + + + 2 + 3 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM3.s + startup_ARMCM3.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + + + 1 + 0 + + 100 + 0 + + + ../arm_class_marks_example_f32.c + 0 + 183 + 193 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_cortexM3l_class_marks_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_cortexM3l_class_marks_example.uvproj new file mode 100644 index 000000000..23eeea730 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_cortexM3l_class_marks_example.uvproj @@ -0,0 +1,328 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x3 + ARM-GNU + + + Cortex-M3 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M3") ESEL ELITTLE + + + + 4349 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM3l_class_marks_example + 1 + 0 + 0 + 1 + 0 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_class_marks_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + "Cortex-M3" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 2 + 1 + + + ARM_MATH_CM3 + + ..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM3\Include + + + + 0 + 1 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + + + + arm_cortexM3l_math + ..\..\..\..\Lib\GCC + -Wl,--gc-sections + ARMCMx.ld + + + + + + Source Group 1 + + + arm_class_marks_example_f32.c + 1 + ../arm_class_marks_example_f32.c + + + + + CMSIS Device + + + system_ARMCM3.c + 1 + ../system_ARMCM3.c + + + startup_ARMCM3.s + 2 + .\startup_ARMCM3.s + + + + + CMSIS DSP_Library + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_cortexM4lf_class_marks_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_cortexM4lf_class_marks_example.uvopt new file mode 100644 index 000000000..d42b1f73a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_cortexM4lf_class_marks_example.uvopt @@ -0,0 +1,261 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x3 + ARM-GNU + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_class_marks_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 193 + 1 +
392
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_class_marks_example\../arm_class_marks_example_f32.c\193 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 183 + 193 + 0 + ../arm_class_marks_example_f32.c + arm_class_marks_example_f32.c + + + + + CMSIS Device + 1 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../system_ARMCM4.c + system_ARMCM4.c + + + 2 + 3 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM4.s + startup_ARMCM4.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + + + 1 + 0 + + 100 + 0 + + + ../arm_class_marks_example_f32.c + 0 + 183 + 193 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_cortexM4lf_class_marks_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_cortexM4lf_class_marks_example.uvproj new file mode 100644 index 000000000..16828d0a6 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/arm_cortexM4lf_class_marks_example.uvproj @@ -0,0 +1,328 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x3 + ARM-GNU + + + Cortex-M4 FPU + ARM + CLOCK(12000000) CPUTYPE("Cortex-M4") ESEL ELITTLE FPU2 + + + + 5237 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM4lf_class_marks_example + 1 + 0 + 0 + 1 + 0 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_class_marks_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + "Cortex-M4" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 2 + 1 + + -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -fno-strict-aliasing -ffunction-sections + ARM_MATH_CM4, __FPU_PRESENT = 1 + + ..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM4\Include + + + + 0 + 1 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + + + + arm_cortexM4lf_math + ..\..\..\..\Lib\GCC + -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -Wl,--gc-sections + ARMCMx.ld + + + + + + Source Group 1 + + + arm_class_marks_example_f32.c + 1 + ../arm_class_marks_example_f32.c + + + + + CMSIS Device + + + system_ARMCM4.c + 1 + ../system_ARMCM4.c + + + startup_ARMCM4.s + 2 + .\startup_ARMCM4.s + + + + + CMSIS DSP_Library + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/startup_ARMCM0.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/startup_ARMCM0.s new file mode 100644 index 000000000..faa790939 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/startup_ARMCM0.s @@ -0,0 +1,155 @@ +/**************************************************************************//** + * @file startup_ARMCM0.s + * @brief CMSIS Cortex-M0 Core Device Startup File + * for CM0 Device Series + * @version V1.04 + * @date 14. January 2011 + *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ + * + ******************************************************************************/ + +/*****************************************************************************/ +/* Version: CodeSourcery Sourcery G++ Lite (with CS3) */ +/*****************************************************************************/ + + +/* +// Stack Configuration +// Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +// +*/ + + .equ Stack_Size, 0x00000100 + .section ".stack", "w" + .align 3 + .globl __cs3_stack_mem + .globl __cs3_stack_size +__cs3_stack_mem: + .if Stack_Size + .space Stack_Size + .endif + .size __cs3_stack_mem, . - __cs3_stack_mem + .set __cs3_stack_size, . - __cs3_stack_mem + + +/* +// Heap Configuration +// Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +// +*/ + + .equ Heap_Size, 0x00001000 + + .section ".heap", "w" + .align 3 + .globl __cs3_heap_start + .globl __cs3_heap_end +__cs3_heap_start: + .if Heap_Size + .space Heap_Size + .endif +__cs3_heap_end: + + +/* Vector Table */ + + .section ".cs3.interrupt_vector" + .globl __cs3_interrupt_vector_cortex_m + .type __cs3_interrupt_vector_cortex_m, %object + +__cs3_interrupt_vector_cortex_m: + .long __cs3_stack /* Top of Stack */ + .long __cs3_reset /* Reset Handler */ + .long NMI_Handler /* NMI Handler */ + .long HardFault_Handler /* Hard Fault Handler */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long SVC_Handler /* SVCall Handler */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long PendSV_Handler /* PendSV Handler */ + .long SysTick_Handler /* SysTick Handler */ + + /* External Interrupts */ + .long DEF_IRQHandler /* 0: Default */ + + + .size __cs3_interrupt_vector_cortex_m, . - __cs3_interrupt_vector_cortex_m + + + .thumb + + +/* Reset Handler */ + + .section .cs3.reset,"x",%progbits + .thumb_func + .globl __cs3_reset_cortex_m + .type __cs3_reset_cortex_m, %function +__cs3_reset_cortex_m: + .fnstart + LDR R0, =SystemInit + BLX R0 + LDR R0,=_start + BX R0 + .pool + .cantunwind + .fnend + .size __cs3_reset_cortex_m,.-__cs3_reset_cortex_m + + .section ".text" + +/* Exception Handlers */ + + .weak NMI_Handler + .type NMI_Handler, %function +NMI_Handler: + B . + .size NMI_Handler, . - NMI_Handler + + .weak HardFault_Handler + .type HardFault_Handler, %function +HardFault_Handler: + B . + .size HardFault_Handler, . - HardFault_Handler + + .weak SVC_Handler + .type SVC_Handler, %function +SVC_Handler: + B . + .size SVC_Handler, . - SVC_Handler + + .weak PendSV_Handler + .type PendSV_Handler, %function +PendSV_Handler: + B . + .size PendSV_Handler, . - PendSV_Handler + + .weak SysTick_Handler + .type SysTick_Handler, %function +SysTick_Handler: + B . + .size SysTick_Handler, . - SysTick_Handler + + +/* IRQ Handlers */ + + .globl Default_Handler + .type Default_Handler, %function +Default_Handler: + B . + .size Default_Handler, . - Default_Handler + + .macro IRQ handler + .weak \handler + .set \handler, Default_Handler + .endm + + IRQ DEF_IRQHandler + + .end diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/startup_ARMCM3.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/startup_ARMCM3.s new file mode 100644 index 000000000..07b53c81c --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/startup_ARMCM3.s @@ -0,0 +1,179 @@ +/**************************************************************************//** + * @file startup_ARMCM3.s + * @brief CMSIS Cortex-M3 Core Device Startup File + * for CM3 Device Series + * @version V1.04 + * @date 14. January 2011 + *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ + * + ******************************************************************************/ + +/*****************************************************************************/ +/* Version: CodeSourcery Sourcery G++ Lite (with CS3) */ +/*****************************************************************************/ + + +/* +// Stack Configuration +// Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +// +*/ + + .equ Stack_Size, 0x00000100 + .section ".stack", "w" + .align 3 + .globl __cs3_stack_mem + .globl __cs3_stack_size +__cs3_stack_mem: + .if Stack_Size + .space Stack_Size + .endif + .size __cs3_stack_mem, . - __cs3_stack_mem + .set __cs3_stack_size, . - __cs3_stack_mem + + +/* +// Heap Configuration +// Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +// +*/ + + .equ Heap_Size, 0x00001000 + + .section ".heap", "w" + .align 3 + .globl __cs3_heap_start + .globl __cs3_heap_end +__cs3_heap_start: + .if Heap_Size + .space Heap_Size + .endif +__cs3_heap_end: + + +/* Vector Table */ + + .section ".cs3.interrupt_vector" + .globl __cs3_interrupt_vector_cortex_m + .type __cs3_interrupt_vector_cortex_m, %object + +__cs3_interrupt_vector_cortex_m: + .long __cs3_stack /* Top of Stack */ + .long __cs3_reset /* Reset Handler */ + .long NMI_Handler /* NMI Handler */ + .long HardFault_Handler /* Hard Fault Handler */ + .long MemManage_Handler /* MPU Fault Handler */ + .long BusFault_Handler /* Bus Fault Handler */ + .long UsageFault_Handler /* Usage Fault Handler */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long SVC_Handler /* SVCall Handler */ + .long DebugMon_Handler /* Debug Monitor Handler */ + .long 0 /* Reserved */ + .long PendSV_Handler /* PendSV Handler */ + .long SysTick_Handler /* SysTick Handler */ + + /* External Interrupts */ + .long DEF_IRQHandler /* 0: Default */ + + + .size __cs3_interrupt_vector_cortex_m, . - __cs3_interrupt_vector_cortex_m + + + .thumb + + +/* Reset Handler */ + + .section .cs3.reset,"x",%progbits + .thumb_func + .globl __cs3_reset_cortex_m + .type __cs3_reset_cortex_m, %function +__cs3_reset_cortex_m: + .fnstart + LDR R0, =SystemInit + BLX R0 + LDR R0,=_start + BX R0 + .pool + .cantunwind + .fnend + .size __cs3_reset_cortex_m,.-__cs3_reset_cortex_m + + .section ".text" + +/* Exception Handlers */ + + .weak NMI_Handler + .type NMI_Handler, %function +NMI_Handler: + B . + .size NMI_Handler, . - NMI_Handler + + .weak HardFault_Handler + .type HardFault_Handler, %function +HardFault_Handler: + B . + .size HardFault_Handler, . - HardFault_Handler + + .weak MemManage_Handler + .type MemManage_Handler, %function +MemManage_Handler: + B . + .size MemManage_Handler, . - MemManage_Handler + + .weak BusFault_Handler + .type BusFault_Handler, %function +BusFault_Handler: + B . + .size BusFault_Handler, . - BusFault_Handler + + .weak UsageFault_Handler + .type UsageFault_Handler, %function +UsageFault_Handler: + B . + .size UsageFault_Handler, . - UsageFault_Handler + + .weak SVC_Handler + .type SVC_Handler, %function +SVC_Handler: + B . + .size SVC_Handler, . - SVC_Handler + + .weak DebugMon_Handler + .type DebugMon_Handler, %function +DebugMon_Handler: + B . + .size DebugMon_Handler, . - DebugMon_Handler + + .weak PendSV_Handler + .type PendSV_Handler, %function +PendSV_Handler: + B . + .size PendSV_Handler, . - PendSV_Handler + + .weak SysTick_Handler + .type SysTick_Handler, %function +SysTick_Handler: + B . + .size SysTick_Handler, . - SysTick_Handler + + +/* IRQ Handlers */ + + .globl Default_Handler + .type Default_Handler, %function +Default_Handler: + B . + .size Default_Handler, . - Default_Handler + + .macro IRQ handler + .weak \handler + .set \handler, Default_Handler + .endm + + IRQ DEF_IRQHandler + + .end diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/startup_ARMCM4.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/startup_ARMCM4.s new file mode 100644 index 000000000..004d00130 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/GCC/startup_ARMCM4.s @@ -0,0 +1,179 @@ +/**************************************************************************//** + * @file startup_ARMCM4.s + * @brief CMSIS Cortex-M4 Core Device Startup File + * for CM4 Device Series + * @version V1.04 + * @date 14. January 2011 + *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ + * + ******************************************************************************/ + +/*****************************************************************************/ +/* Version: CodeSourcery Sourcery G++ Lite (with CS3) */ +/*****************************************************************************/ + + +/* +// Stack Configuration +// Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +// +*/ + + .equ Stack_Size, 0x00000100 + .section ".stack", "w" + .align 3 + .globl __cs3_stack_mem + .globl __cs3_stack_size +__cs3_stack_mem: + .if Stack_Size + .space Stack_Size + .endif + .size __cs3_stack_mem, . - __cs3_stack_mem + .set __cs3_stack_size, . - __cs3_stack_mem + + +/* +// Heap Configuration +// Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +// +*/ + + .equ Heap_Size, 0x00001000 + + .section ".heap", "w" + .align 3 + .globl __cs3_heap_start + .globl __cs3_heap_end +__cs3_heap_start: + .if Heap_Size + .space Heap_Size + .endif +__cs3_heap_end: + + +/* Vector Table */ + + .section ".cs3.interrupt_vector" + .globl __cs3_interrupt_vector_cortex_m + .type __cs3_interrupt_vector_cortex_m, %object + +__cs3_interrupt_vector_cortex_m: + .long __cs3_stack /* Top of Stack */ + .long __cs3_reset /* Reset Handler */ + .long NMI_Handler /* NMI Handler */ + .long HardFault_Handler /* Hard Fault Handler */ + .long MemManage_Handler /* MPU Fault Handler */ + .long BusFault_Handler /* Bus Fault Handler */ + .long UsageFault_Handler /* Usage Fault Handler */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long SVC_Handler /* SVCall Handler */ + .long DebugMon_Handler /* Debug Monitor Handler */ + .long 0 /* Reserved */ + .long PendSV_Handler /* PendSV Handler */ + .long SysTick_Handler /* SysTick Handler */ + + /* External Interrupts */ + .long DEF_IRQHandler /* 0: Default */ + + + .size __cs3_interrupt_vector_cortex_m, . - __cs3_interrupt_vector_cortex_m + + + .thumb + + +/* Reset Handler */ + + .section .cs3.reset,"x",%progbits + .thumb_func + .globl __cs3_reset_cortex_m + .type __cs3_reset_cortex_m, %function +__cs3_reset_cortex_m: + .fnstart + LDR R0, =SystemInit + BLX R0 + LDR R0,=_start + BX R0 + .pool + .cantunwind + .fnend + .size __cs3_reset_cortex_m,.-__cs3_reset_cortex_m + + .section ".text" + +/* Exception Handlers */ + + .weak NMI_Handler + .type NMI_Handler, %function +NMI_Handler: + B . + .size NMI_Handler, . - NMI_Handler + + .weak HardFault_Handler + .type HardFault_Handler, %function +HardFault_Handler: + B . + .size HardFault_Handler, . - HardFault_Handler + + .weak MemManage_Handler + .type MemManage_Handler, %function +MemManage_Handler: + B . + .size MemManage_Handler, . - MemManage_Handler + + .weak BusFault_Handler + .type BusFault_Handler, %function +BusFault_Handler: + B . + .size BusFault_Handler, . - BusFault_Handler + + .weak UsageFault_Handler + .type UsageFault_Handler, %function +UsageFault_Handler: + B . + .size UsageFault_Handler, . - UsageFault_Handler + + .weak SVC_Handler + .type SVC_Handler, %function +SVC_Handler: + B . + .size SVC_Handler, . - SVC_Handler + + .weak DebugMon_Handler + .type DebugMon_Handler, %function +DebugMon_Handler: + B . + .size DebugMon_Handler, . - DebugMon_Handler + + .weak PendSV_Handler + .type PendSV_Handler, %function +PendSV_Handler: + B . + .size PendSV_Handler, . - PendSV_Handler + + .weak SysTick_Handler + .type SysTick_Handler, %function +SysTick_Handler: + B . + .size SysTick_Handler, . - SysTick_Handler + + +/* IRQ Handlers */ + + .globl Default_Handler + .type Default_Handler, %function +Default_Handler: + B . + .size Default_Handler, . - Default_Handler + + .macro IRQ handler + .weak \handler + .set \handler, Default_Handler + .endm + + IRQ DEF_IRQHandler + + .end diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/arm_class_marks_example_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/arm_class_marks_example_f32.c new file mode 100644 index 000000000..fef0280da --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/arm_class_marks_example_f32.c @@ -0,0 +1,196 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 29. November 2010 +* $Revision: V1.0.3 +* +* Project: CMSIS DSP Library +* Title: arm_class_marks_example_f32.c +* +* Description: Example code to calculate Minimum, Maximum +* Mean, std and variance of marks obtained in a class +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.1 2010/10/05 KK +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 KK +* Production release and review comments incorporated. +* ------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup ClassMarks Class Marks Example + * + * \par Description: + * \par + * Demonstrates the use the Maximum, Minimum, Mean, Standard Deviation, Variance + * and Matrix functions to calculate statistical values of marks obtained in a class. + * + * \note This example also demonstrates the usage of static initialization. + * + * \par Variables Description: + * \par + * \li \c testMarks_f32 points to the marks scored by 20 students in 4 subjects + * \li \c max_marks Maximum of all marks + * \li \c min_marks Minimum of all marks + * \li \c mean Mean of all marks + * \li \c var Variance of the marks + * \li \c std Standard deviation of the marks + * \li \c numStudents Total number of students in the class + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_mat_init_f32() + * - arm_mat_mult_f32() + * - arm_max_f32() + * - arm_min_f32() + * - arm_mean_f32() + * - arm_std_f32() + * - arm_var_f32() + * + * Refer + * \link arm_class_marks_example_f32.c \endlink + * + */ + + +/** \example arm_class_marks_example_f32.c + */ +#include "arm_math.h" + +#define USE_STATIC_INIT + + /* ---------------------------------------------------------------------- +** Global defines +** ------------------------------------------------------------------- */ + +#define TEST_LENGTH_SAMPLES (20*4) + +/* ---------------------------------------------------------------------- +** List of Marks scored by 20 students for 4 subjects +** ------------------------------------------------------------------- */ +const float32_t testMarks_f32[TEST_LENGTH_SAMPLES] = +{ + 42.000000, 37.000000, 81.000000, 28.000000, + 83.000000, 72.000000, 36.000000, 38.000000, + 32.000000, 51.000000, 63.000000, 64.000000, + 97.000000, 82.000000, 95.000000, 90.000000, + 66.000000, 51.000000, 54.000000, 42.000000, + 67.000000, 56.000000, 45.000000, 57.000000, + 67.000000, 69.000000, 35.000000, 52.000000, + 29.000000, 81.000000, 58.000000, 47.000000, + 38.000000, 76.000000, 100.000000, 29.000000, + 33.000000, 47.000000, 29.000000, 50.000000, + 34.000000, 41.000000, 61.000000, 46.000000, + 52.000000, 50.000000, 48.000000, 36.000000, + 47.000000, 55.000000, 44.000000, 40.000000, + 100.000000, 94.000000, 84.000000, 37.000000, + 32.000000, 71.000000, 47.000000, 77.000000, + 31.000000, 50.000000, 49.000000, 35.000000, + 63.000000, 67.000000, 40.000000, 31.000000, + 29.000000, 68.000000, 61.000000, 38.000000, + 31.000000, 28.000000, 28.000000, 76.000000, + 55.000000, 33.000000, 29.000000, 39.000000 +}; + + +/* ---------------------------------------------------------------------- +* Number of subjects X 1 +* ------------------------------------------------------------------- */ +const float32_t testUnity_f32[4] = +{ + 1.000, 1.000, 1.000, 1.000 +}; + + +/* ---------------------------------------------------------------------- +** f32 Output buffer +** ------------------------------------------------------------------- */ +static float32_t testOutput[TEST_LENGTH_SAMPLES]; + + +/* ------------------------------------------------------------------ +* Global defines +*------------------------------------------------------------------- */ +#define NUMSTUDENTS 20 +#define NUMSUBJECTS 4 + +/* ------------------------------------------------------------------ +* Global variables +*------------------------------------------------------------------- */ + +uint32_t numStudents = 20; +uint32_t numSubjects = 4; +float32_t max_marks, min_marks, mean, std, var; +uint32_t student_num; + +/* ---------------------------------------------------------------------------------- +* Main f32 test function. It returns maximum marks secured and student number +* ------------------------------------------------------------------------------- */ + +int32_t main() +{ + +#ifndef USE_STATIC_INIT + + arm_matrix_instance_f32 srcA; + arm_matrix_instance_f32 srcB; + arm_matrix_instance_f32 dstC; + + /* Input and output matrices initializations */ + arm_mat_init_f32(&srcA, numStudents, numSubjects, (float32_t *)testMarks_f32); + arm_mat_init_f32(&srcB, numSubjects, 1, (float32_t *)testUnity_f32); + arm_mat_init_f32(&dstC, numStudents, 1, testOutput); + +#else + + /* Static Initializations of Input and output matrix sizes and array */ + arm_matrix_instance_f32 srcA = {NUMSTUDENTS, NUMSUBJECTS, (float32_t *)testMarks_f32}; + arm_matrix_instance_f32 srcB = {NUMSUBJECTS, 1, (float32_t *)testUnity_f32}; + arm_matrix_instance_f32 dstC = {NUMSTUDENTS, 1, testOutput}; + +#endif + + + /* ---------------------------------------------------------------------- + *Call the Matrix multiplication process function + * ------------------------------------------------------------------- */ + arm_mat_mult_f32(&srcA, &srcB, &dstC); + + /* ---------------------------------------------------------------------- + ** Call the Max function to calculate max marks among numStudents + ** ------------------------------------------------------------------- */ + arm_max_f32(testOutput, numStudents, &max_marks, &student_num); + + /* ---------------------------------------------------------------------- + ** Call the Min function to calculate min marks among numStudents + ** ------------------------------------------------------------------- */ + arm_min_f32(testOutput, numStudents, &min_marks, &student_num); + + /* ---------------------------------------------------------------------- + ** Call the Mean function to calculate mean + ** ------------------------------------------------------------------- */ + arm_mean_f32(testOutput, numStudents, &mean); + + /* ---------------------------------------------------------------------- + ** Call the std function to calculate standard deviation + ** ------------------------------------------------------------------- */ + arm_std_f32(testOutput, numStudents, &std); + + /* ---------------------------------------------------------------------- + ** Call the var function to calculate variance + ** ------------------------------------------------------------------- */ + arm_var_f32(testOutput, numStudents, &var); + + while(1); /* main function does not return */ +} + + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/system_ARMCM0.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/system_ARMCM0.c new file mode 100644 index 000000000..ece74d2de --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/system_ARMCM0.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM0.c + * @brief CMSIS Cortex-M0 Device System Source File + * for CM0 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM0.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/system_ARMCM3.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/system_ARMCM3.c new file mode 100644 index 000000000..2f5fa0b93 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/system_ARMCM3.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM3.c + * @brief CMSIS Cortex-M3 Device System Source File + * for CM3 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM3.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/system_ARMCM4.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/system_ARMCM4.c new file mode 100644 index 000000000..beaaf6fb8 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_class_marks_example/system_ARMCM4.c @@ -0,0 +1,81 @@ +/**************************************************************************//** + * @file system_ARMCM4.c + * @brief CMSIS Cortex-M4 Device System Source File + * for CM4 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM4.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2) | /* set CP10 Full Access */ + (3UL << 11*2) ); /* set CP11 Full Access */ + #endif + + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_convolution_example.ini b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_convolution_example.ini new file mode 100644 index 000000000..5509390f0 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_convolution_example.ini @@ -0,0 +1,14 @@ + +/* This file demonstrates how to Map memory ranges, specify read, write, and execute permissions + + The file can be executed in the following way: + 1) manually from uVision command window (in debug mode) using command: + INCLUIDE arm_convolution_example.ini + +*/ + + +// usual initialisation for target setup +MAP 0x20000000, 0x20008000 READ WRITE // allow R/W access to IO space + + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_cortexM0l_convolution_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_cortexM0l_convolution_example.uvopt new file mode 100644 index 000000000..06c25dd1f --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_cortexM0l_convolution_example.uvopt @@ -0,0 +1,325 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_convolution_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 94 + 1 +
1414
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_convolution_example\startup_ARMCM0.s\94 +
+ + 1 + 0 + 228 + 1 +
384
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_convolution_example\../arm_convolution_example_f32.c\228 +
+ + 2 + 0 + 225 + 1 +
382
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_convolution_example\../arm_convolution_example_f32.c\225 +
+
+ + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 218 + 228 + 0 + ..\arm_convolution_example_f32.c + arm_convolution_example_f32.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\Common\Source\math_helper.c + math_helper.c + + + + + CMSIS Device + 1 + 0 + 0 + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM0.c + system_ARMCM0.c + + + 2 + 4 + 2 + 0 + 0 + 0 + 0 + 78 + 78 + 0 + .\startup_ARMCM0.s + startup_ARMCM0.s + + + + + CMSIS SW_DSP_library + 1 + 0 + 0 + + 3 + 5 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + arm_cortexM0l_math.lib + + + + + 1 + 0 + + 100 + 1 + + + .\startup_ARMCM0.s + 0 + 78 + 78 + + + ..\arm_convolution_example_f32.c + 0 + 218 + 228 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_cortexM0l_convolution_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_cortexM0l_convolution_example.uvproj new file mode 100644 index 000000000..e2f1000d9 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_cortexM0l_convolution_example.uvproj @@ -0,0 +1,430 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M0 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M0") ESEL ELITTLE + + + + 4803 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM0l_convolution_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_convolution_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM0 + + ..\..\..\..\Include;..\..\Common\Include;..\..\..\..\..\Device\ARM\ARMCM0\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_convolution_example_f32.c + 1 + ..\arm_convolution_example_f32.c + + + math_helper.c + 1 + ..\..\Common\Source\math_helper.c + + + + + CMSIS Device + + + system_ARMCM0.c + 1 + ..\system_ARMCM0.c + + + startup_ARMCM0.s + 2 + .\startup_ARMCM0.s + + + + + CMSIS DSP_Library + + + arm_cortexM0l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_cortexM3l_convolution_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_cortexM3l_convolution_example.uvopt new file mode 100644 index 000000000..631898420 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_cortexM3l_convolution_example.uvopt @@ -0,0 +1,310 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_convolution_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 225 + 1 +
380
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_convolution_example\../arm_convolution_example_f32.c\225 +
+ + 1 + 0 + 228 + 1 +
382
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_convolution_example\../arm_convolution_example_f32.c\228 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 218 + 228 + 0 + ..\arm_convolution_example_f32.c + arm_convolution_example_f32.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\Common\Source\math_helper.c + math_helper.c + + + + + CMSIS Device + 1 + 0 + 0 + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM3.c + system_ARMCM3.c + + + 2 + 4 + 2 + 0 + 0 + 0 + 0 + 78 + 78 + 0 + .\startup_ARMCM3.s + startup_ARMCM3.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 5 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + arm_cortexM3l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_convolution_example_f32.c + 0 + 218 + 228 + + + .\startup_ARMCM3.s + 0 + 78 + 78 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_cortexM3l_convolution_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_cortexM3l_convolution_example.uvproj new file mode 100644 index 000000000..e21b5251a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_cortexM3l_convolution_example.uvproj @@ -0,0 +1,430 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M3 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M3") ESEL ELITTLE + + + + 4349 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM3l_convolution_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_convolution_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM3 + + ..\..\Common\Include;..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM3\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_convolution_example_f32.c + 1 + ..\arm_convolution_example_f32.c + + + math_helper.c + 1 + ..\..\Common\Source\math_helper.c + + + + + CMSIS Device + + + system_ARMCM3.c + 1 + ..\system_ARMCM3.c + + + startup_ARMCM3.s + 2 + .\startup_ARMCM3.s + + + + + CMSIS DSP_Library + + + arm_cortexM3l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_cortexM4lf_convolution_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_cortexM4lf_convolution_example.uvopt new file mode 100644 index 000000000..1976ab073 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_cortexM4lf_convolution_example.uvopt @@ -0,0 +1,310 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_convolution_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 225 + 1 +
398
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_convolution_example\../arm_convolution_example_f32.c\225 +
+ + 1 + 0 + 228 + 1 +
400
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_convolution_example\../arm_convolution_example_f32.c\228 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 218 + 228 + 0 + ..\arm_convolution_example_f32.c + arm_convolution_example_f32.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\Common\Source\math_helper.c + math_helper.c + + + + + CMSIS Device + 1 + 0 + 0 + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM4.c + system_ARMCM4.c + + + 2 + 4 + 2 + 0 + 0 + 0 + 0 + 78 + 78 + 0 + .\startup_ARMCM4.s + startup_ARMCM4.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 5 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + arm_cortexM4lf_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_convolution_example_f32.c + 0 + 218 + 228 + + + .\startup_ARMCM4.s + 0 + 78 + 78 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_cortexM4lf_convolution_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_cortexM4lf_convolution_example.uvproj new file mode 100644 index 000000000..5f10472c3 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/arm_cortexM4lf_convolution_example.uvproj @@ -0,0 +1,430 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M4 FPU + ARM + CLOCK(12000000) CPUTYPE("Cortex-M4") ESEL ELITTLE FPU2 + + + + 5237 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM4lf_convolution_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_convolution_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM4, __FPU_PRESENT = 1 + + ..\..\Common\Include;..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM4\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_convolution_example_f32.c + 1 + ..\arm_convolution_example_f32.c + + + math_helper.c + 1 + ..\..\Common\Source\math_helper.c + + + + + CMSIS Device + + + system_ARMCM4.c + 1 + ..\system_ARMCM4.c + + + startup_ARMCM4.s + 2 + .\startup_ARMCM4.s + + + + + CMSIS DSP_Library + + + arm_cortexM4lf_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/startup_ARMCM0.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/startup_ARMCM0.s new file mode 100644 index 000000000..0acd34611 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/startup_ARMCM0.s @@ -0,0 +1,144 @@ +;/**************************************************************************//** +; * @file startup_ARMCM0.s +; * @brief CMSIS Cortex-M0 Core Device Startup File +; * for CM0 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/startup_ARMCM3.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/startup_ARMCM3.s new file mode 100644 index 000000000..5af584bdc --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/startup_ARMCM3.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM3.s +; * @brief CMSIS Cortex-M3 Core Device Startup File +; * for CM3 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/startup_ARMCM4.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/startup_ARMCM4.s new file mode 100644 index 000000000..09fdbd6ed --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/ARM/startup_ARMCM4.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM4.s +; * @brief CMSIS Cortex-M4 Core Device Startup File +; * for CM4 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/ARMCMx.ld b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/ARMCMx.ld new file mode 100644 index 000000000..9cf8c92fa --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/ARMCMx.ld @@ -0,0 +1,198 @@ +/* Linker script for Cortex-M0 + * + * Version:CodeSourcery Sourcery G++ Lite 2007q3-53 + * BugURL:https://support.codesourcery.com/GNUToolchain/ + * + * Copyright 2007 CodeSourcery. + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. */ + +OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") +ENTRY(_start) +SEARCH_DIR(.) +GROUP(-lgcc -lc -lcs3 -lcs3unhosted -lcs3micro) + +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 64K + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 8K +} + +/* These force the linker to search for particular symbols from + * the start of the link process and thus ensure the user's + * overrides are picked up + */ +EXTERN(__cs3_reset_cortex_m) +EXTERN(__cs3_interrupt_vector_cortex_m) +EXTERN(__cs3_start_c main __cs3_stack __cs3_stack_size __cs3_heap_end) + +PROVIDE(__cs3_stack = __cs3_region_start_ram + __cs3_region_size_ram); +PROVIDE(__cs3_stack_size = __cs3_region_start_ram + __cs3_region_size_ram - _end); +PROVIDE(__cs3_heap_start = _end); +PROVIDE(__cs3_heap_end = __cs3_region_start_ram + __cs3_region_size_ram); + +SECTIONS +{ + .text : + { + CREATE_OBJECT_SYMBOLS + __cs3_region_start_rom = .; + *(.cs3.region-head.rom) + __cs3_interrupt_vector = __cs3_interrupt_vector_cortex_m; + *(.cs3.interrupt_vector) + /* Make sure we pulled in an interrupt vector. */ + ASSERT (. != __cs3_interrupt_vector_cortex_m, "No interrupt vector"); + *(.rom) + *(.rom.b) + + __cs3_reset = __cs3_reset_cortex_m; + *(.cs3.reset) + /* Make sure we pulled in some reset code. */ + ASSERT (. != __cs3_reset, "No reset code"); + + *(.text .text.* .gnu.linkonce.t.*) + *(.plt) + *(.gnu.warning) + *(.glue_7t) *(.glue_7) *(.vfp11_veneer) + + *(.rodata .rodata.* .gnu.linkonce.r.*) + + *(.ARM.extab* .gnu.linkonce.armextab.*) + *(.gcc_except_table) + *(.eh_frame_hdr) + *(.eh_frame) + + . = ALIGN(4); + KEEP(*(.init)) + + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(0x4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + __cs3_regions = .; + LONG (0) + LONG (__cs3_region_init_ram) + LONG (__cs3_region_start_ram) + LONG (__cs3_region_init_size_ram) + LONG (__cs3_region_zero_size_ram) + } + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } >rom + __exidx_end = .; + .text.align : + { + . = ALIGN(8); + _etext = .; + } >rom + __cs3_region_size_rom = LENGTH(rom); + __cs3_region_num = 1; + + .data : + { + __cs3_region_start_ram = .; + *(.cs3.region-head.ram) + KEEP(*(.jcr)) + *(.got.plt) *(.got) + *(.shdata) + *(.data .data.* .gnu.linkonce.d.*) + *(.ram) + . = ALIGN (8); + _edata = .; + } >ram AT>rom + .bss : + { + *(.shbss) + *(.bss .bss.* .gnu.linkonce.b.*) + *(COMMON) + *(.ram.b) + . = ALIGN (8); + _end = .; + __end = .; + } >ram AT>rom + .heap : + { + *(.heap) + } >ram + .stack (__cs3_stack - __cs3_stack_size) : + { + *(.stack) + } >ram + __cs3_region_init_ram = LOADADDR (.data); + __cs3_region_init_size_ram = _edata - __cs3_region_start_ram; + __cs3_region_zero_size_ram = _end - _edata; + __cs3_region_size_ram = LENGTH(ram); + __cs3_region_num = 1; + + .stab 0 (NOLOAD) : { *(.stab) } + .stabstr 0 (NOLOAD) : { *(.stabstr) } + /* DWARF debug sections. + * Symbols in the DWARF debugging sections are relative to the beginning + * of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + + .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } + .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) } + /DISCARD/ : { *(.note.GNU-stack) } +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_convolution_example.ini b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_convolution_example.ini new file mode 100644 index 000000000..5509390f0 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_convolution_example.ini @@ -0,0 +1,14 @@ + +/* This file demonstrates how to Map memory ranges, specify read, write, and execute permissions + + The file can be executed in the following way: + 1) manually from uVision command window (in debug mode) using command: + INCLUIDE arm_convolution_example.ini + +*/ + + +// usual initialisation for target setup +MAP 0x20000000, 0x20008000 READ WRITE // allow R/W access to IO space + + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_cortexM0l_convolution_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_cortexM0l_convolution_example.uvopt new file mode 100644 index 000000000..e7a7637a2 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_cortexM0l_convolution_example.uvopt @@ -0,0 +1,290 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x3 + ARM-GNU + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_convolution_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 228 + 1 +
398
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_convolution_example\../arm_convolution_example_f32.c\228 +
+ + 1 + 0 + 225 + 1 +
396
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_convolution_example\../arm_convolution_example_f32.c\225 +
+
+ + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 218 + 228 + 0 + ../arm_convolution_example_f32.c + arm_convolution_example_f32.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../../Common/Source/math_helper.c + math_helper.c + + + + + CMSIS Device + 1 + 0 + 0 + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../system_ARMCM0.c + system_ARMCM0.c + + + 2 + 4 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM0.s + startup_ARMCM0.s + + + + + CMSIS SW_DSP_library + 1 + 0 + 0 + + + + 1 + 0 + + 100 + 0 + + + ../arm_convolution_example_f32.c + 0 + 218 + 228 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_cortexM0l_convolution_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_cortexM0l_convolution_example.uvproj new file mode 100644 index 000000000..12121a5bb --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_cortexM0l_convolution_example.uvproj @@ -0,0 +1,333 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x3 + ARM-GNU + + + Cortex-M0 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M0") ESEL ELITTLE + + + + 4803 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM0l_convolution_example + 1 + 0 + 0 + 1 + 0 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_convolution_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + "Cortex-M0" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 2 + 1 + + + ARM_MATH_CM0 + + ..\..\..\..\Include;..\..\Common\Include;..\..\..\..\..\Device\ARM\ARMCM0\Include + + + + 0 + 1 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + + + + arm_cortexM0l_math + ..\..\..\..\Lib\GCC + -Wl,--gc-sections + ARMCMx.ld + + + + + + Source Group 1 + + + arm_convolution_example_f32.c + 1 + ../arm_convolution_example_f32.c + + + math_helper.c + 1 + ../../Common/Source/math_helper.c + + + + + CMSIS Device + + + system_ARMCM0.c + 1 + ../system_ARMCM0.c + + + startup_ARMCM0.s + 2 + .\startup_ARMCM0.s + + + + + CMSIS DSP_Library + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_cortexM3l_convolution_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_cortexM3l_convolution_example.uvopt new file mode 100644 index 000000000..5d839e8e1 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_cortexM3l_convolution_example.uvopt @@ -0,0 +1,290 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x3 + ARM-GNU + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_convolution_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 225 + 1 +
498
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_convolution_example\../arm_convolution_example_f32.c\225 +
+ + 1 + 0 + 228 + 1 +
500
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_convolution_example\../arm_convolution_example_f32.c\228 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 218 + 228 + 0 + ../arm_convolution_example_f32.c + arm_convolution_example_f32.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../../Common/Source/math_helper.c + math_helper.c + + + + + CMSIS Device + 1 + 0 + 0 + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../system_ARMCM3.c + system_ARMCM3.c + + + 2 + 4 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM3.s + startup_ARMCM3.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + + + 1 + 0 + + 100 + 0 + + + ../arm_convolution_example_f32.c + 0 + 218 + 228 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_cortexM3l_convolution_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_cortexM3l_convolution_example.uvproj new file mode 100644 index 000000000..e4887e2b5 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_cortexM3l_convolution_example.uvproj @@ -0,0 +1,333 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x3 + ARM-GNU + + + Cortex-M3 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M3") ESEL ELITTLE + + + + 4349 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM3l_convolution_example + 1 + 0 + 0 + 1 + 0 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_convolution_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + "Cortex-M3" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 2 + 1 + + + ARM_MATH_CM3 + + ..\..\Common\Include;..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM3\Include + + + + 0 + 1 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + + + + arm_cortexM3l_math + ..\..\..\..\Lib\GCC + -Wl,--gc-sections + ARMCMx.ld + + + + + + Source Group 1 + + + arm_convolution_example_f32.c + 1 + ../arm_convolution_example_f32.c + + + math_helper.c + 1 + ../../Common/Source/math_helper.c + + + + + CMSIS Device + + + system_ARMCM3.c + 1 + ../system_ARMCM3.c + + + startup_ARMCM3.s + 2 + .\startup_ARMCM3.s + + + + + CMSIS DSP_Library + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_cortexM4lf_convolution_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_cortexM4lf_convolution_example.uvopt new file mode 100644 index 000000000..8d0514a3a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_cortexM4lf_convolution_example.uvopt @@ -0,0 +1,290 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x3 + ARM-GNU + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_convolution_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 225 + 1 +
492
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_convolution_example\../arm_convolution_example_f32.c\225 +
+ + 1 + 0 + 228 + 1 +
494
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_convolution_example\../arm_convolution_example_f32.c\228 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 218 + 228 + 0 + ../arm_convolution_example_f32.c + arm_convolution_example_f32.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../../Common/Source/math_helper.c + math_helper.c + + + + + CMSIS Device + 1 + 0 + 0 + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../system_ARMCM4.c + system_ARMCM4.c + + + 2 + 4 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM4.s + startup_ARMCM4.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + + + 1 + 0 + + 100 + 0 + + + ../arm_convolution_example_f32.c + 0 + 218 + 228 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_cortexM4lf_convolution_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_cortexM4lf_convolution_example.uvproj new file mode 100644 index 000000000..eda231e05 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/arm_cortexM4lf_convolution_example.uvproj @@ -0,0 +1,333 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x3 + ARM-GNU + + + Cortex-M4 FPU + ARM + CLOCK(12000000) CPUTYPE("Cortex-M4") ESEL ELITTLE FPU2 + + + + 5237 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM4lf_convolution_example + 1 + 0 + 0 + 1 + 0 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_convolution_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + "Cortex-M4" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 2 + 1 + + -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -fno-strict-aliasing -ffunction-sections + ARM_MATH_CM4, __FPU_PRESENT = 1 + + ..\..\Common\Include;..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM4\Include + + + + 0 + 1 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + + + + arm_cortexM4lf_math + ..\..\..\..\Lib\GCC + -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -Wl,--gc-sections + ARMCMx.ld + + + + + + Source Group 1 + + + arm_convolution_example_f32.c + 1 + ../arm_convolution_example_f32.c + + + math_helper.c + 1 + ../../Common/Source/math_helper.c + + + + + CMSIS Device + + + system_ARMCM4.c + 1 + ../system_ARMCM4.c + + + startup_ARMCM4.s + 2 + .\startup_ARMCM4.s + + + + + CMSIS DSP_Library + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/startup_ARMCM0.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/startup_ARMCM0.s new file mode 100644 index 000000000..faa790939 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/startup_ARMCM0.s @@ -0,0 +1,155 @@ +/**************************************************************************//** + * @file startup_ARMCM0.s + * @brief CMSIS Cortex-M0 Core Device Startup File + * for CM0 Device Series + * @version V1.04 + * @date 14. January 2011 + *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ + * + ******************************************************************************/ + +/*****************************************************************************/ +/* Version: CodeSourcery Sourcery G++ Lite (with CS3) */ +/*****************************************************************************/ + + +/* +// Stack Configuration +// Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +// +*/ + + .equ Stack_Size, 0x00000100 + .section ".stack", "w" + .align 3 + .globl __cs3_stack_mem + .globl __cs3_stack_size +__cs3_stack_mem: + .if Stack_Size + .space Stack_Size + .endif + .size __cs3_stack_mem, . - __cs3_stack_mem + .set __cs3_stack_size, . - __cs3_stack_mem + + +/* +// Heap Configuration +// Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +// +*/ + + .equ Heap_Size, 0x00001000 + + .section ".heap", "w" + .align 3 + .globl __cs3_heap_start + .globl __cs3_heap_end +__cs3_heap_start: + .if Heap_Size + .space Heap_Size + .endif +__cs3_heap_end: + + +/* Vector Table */ + + .section ".cs3.interrupt_vector" + .globl __cs3_interrupt_vector_cortex_m + .type __cs3_interrupt_vector_cortex_m, %object + +__cs3_interrupt_vector_cortex_m: + .long __cs3_stack /* Top of Stack */ + .long __cs3_reset /* Reset Handler */ + .long NMI_Handler /* NMI Handler */ + .long HardFault_Handler /* Hard Fault Handler */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long SVC_Handler /* SVCall Handler */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long PendSV_Handler /* PendSV Handler */ + .long SysTick_Handler /* SysTick Handler */ + + /* External Interrupts */ + .long DEF_IRQHandler /* 0: Default */ + + + .size __cs3_interrupt_vector_cortex_m, . - __cs3_interrupt_vector_cortex_m + + + .thumb + + +/* Reset Handler */ + + .section .cs3.reset,"x",%progbits + .thumb_func + .globl __cs3_reset_cortex_m + .type __cs3_reset_cortex_m, %function +__cs3_reset_cortex_m: + .fnstart + LDR R0, =SystemInit + BLX R0 + LDR R0,=_start + BX R0 + .pool + .cantunwind + .fnend + .size __cs3_reset_cortex_m,.-__cs3_reset_cortex_m + + .section ".text" + +/* Exception Handlers */ + + .weak NMI_Handler + .type NMI_Handler, %function +NMI_Handler: + B . + .size NMI_Handler, . - NMI_Handler + + .weak HardFault_Handler + .type HardFault_Handler, %function +HardFault_Handler: + B . + .size HardFault_Handler, . - HardFault_Handler + + .weak SVC_Handler + .type SVC_Handler, %function +SVC_Handler: + B . + .size SVC_Handler, . - SVC_Handler + + .weak PendSV_Handler + .type PendSV_Handler, %function +PendSV_Handler: + B . + .size PendSV_Handler, . - PendSV_Handler + + .weak SysTick_Handler + .type SysTick_Handler, %function +SysTick_Handler: + B . + .size SysTick_Handler, . - SysTick_Handler + + +/* IRQ Handlers */ + + .globl Default_Handler + .type Default_Handler, %function +Default_Handler: + B . + .size Default_Handler, . - Default_Handler + + .macro IRQ handler + .weak \handler + .set \handler, Default_Handler + .endm + + IRQ DEF_IRQHandler + + .end diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/startup_ARMCM3.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/startup_ARMCM3.s new file mode 100644 index 000000000..07b53c81c --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/startup_ARMCM3.s @@ -0,0 +1,179 @@ +/**************************************************************************//** + * @file startup_ARMCM3.s + * @brief CMSIS Cortex-M3 Core Device Startup File + * for CM3 Device Series + * @version V1.04 + * @date 14. January 2011 + *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ + * + ******************************************************************************/ + +/*****************************************************************************/ +/* Version: CodeSourcery Sourcery G++ Lite (with CS3) */ +/*****************************************************************************/ + + +/* +// Stack Configuration +// Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +// +*/ + + .equ Stack_Size, 0x00000100 + .section ".stack", "w" + .align 3 + .globl __cs3_stack_mem + .globl __cs3_stack_size +__cs3_stack_mem: + .if Stack_Size + .space Stack_Size + .endif + .size __cs3_stack_mem, . - __cs3_stack_mem + .set __cs3_stack_size, . - __cs3_stack_mem + + +/* +// Heap Configuration +// Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +// +*/ + + .equ Heap_Size, 0x00001000 + + .section ".heap", "w" + .align 3 + .globl __cs3_heap_start + .globl __cs3_heap_end +__cs3_heap_start: + .if Heap_Size + .space Heap_Size + .endif +__cs3_heap_end: + + +/* Vector Table */ + + .section ".cs3.interrupt_vector" + .globl __cs3_interrupt_vector_cortex_m + .type __cs3_interrupt_vector_cortex_m, %object + +__cs3_interrupt_vector_cortex_m: + .long __cs3_stack /* Top of Stack */ + .long __cs3_reset /* Reset Handler */ + .long NMI_Handler /* NMI Handler */ + .long HardFault_Handler /* Hard Fault Handler */ + .long MemManage_Handler /* MPU Fault Handler */ + .long BusFault_Handler /* Bus Fault Handler */ + .long UsageFault_Handler /* Usage Fault Handler */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long SVC_Handler /* SVCall Handler */ + .long DebugMon_Handler /* Debug Monitor Handler */ + .long 0 /* Reserved */ + .long PendSV_Handler /* PendSV Handler */ + .long SysTick_Handler /* SysTick Handler */ + + /* External Interrupts */ + .long DEF_IRQHandler /* 0: Default */ + + + .size __cs3_interrupt_vector_cortex_m, . - __cs3_interrupt_vector_cortex_m + + + .thumb + + +/* Reset Handler */ + + .section .cs3.reset,"x",%progbits + .thumb_func + .globl __cs3_reset_cortex_m + .type __cs3_reset_cortex_m, %function +__cs3_reset_cortex_m: + .fnstart + LDR R0, =SystemInit + BLX R0 + LDR R0,=_start + BX R0 + .pool + .cantunwind + .fnend + .size __cs3_reset_cortex_m,.-__cs3_reset_cortex_m + + .section ".text" + +/* Exception Handlers */ + + .weak NMI_Handler + .type NMI_Handler, %function +NMI_Handler: + B . + .size NMI_Handler, . - NMI_Handler + + .weak HardFault_Handler + .type HardFault_Handler, %function +HardFault_Handler: + B . + .size HardFault_Handler, . - HardFault_Handler + + .weak MemManage_Handler + .type MemManage_Handler, %function +MemManage_Handler: + B . + .size MemManage_Handler, . - MemManage_Handler + + .weak BusFault_Handler + .type BusFault_Handler, %function +BusFault_Handler: + B . + .size BusFault_Handler, . - BusFault_Handler + + .weak UsageFault_Handler + .type UsageFault_Handler, %function +UsageFault_Handler: + B . + .size UsageFault_Handler, . - UsageFault_Handler + + .weak SVC_Handler + .type SVC_Handler, %function +SVC_Handler: + B . + .size SVC_Handler, . - SVC_Handler + + .weak DebugMon_Handler + .type DebugMon_Handler, %function +DebugMon_Handler: + B . + .size DebugMon_Handler, . - DebugMon_Handler + + .weak PendSV_Handler + .type PendSV_Handler, %function +PendSV_Handler: + B . + .size PendSV_Handler, . - PendSV_Handler + + .weak SysTick_Handler + .type SysTick_Handler, %function +SysTick_Handler: + B . + .size SysTick_Handler, . - SysTick_Handler + + +/* IRQ Handlers */ + + .globl Default_Handler + .type Default_Handler, %function +Default_Handler: + B . + .size Default_Handler, . - Default_Handler + + .macro IRQ handler + .weak \handler + .set \handler, Default_Handler + .endm + + IRQ DEF_IRQHandler + + .end diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/startup_ARMCM4.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/startup_ARMCM4.s new file mode 100644 index 000000000..004d00130 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/GCC/startup_ARMCM4.s @@ -0,0 +1,179 @@ +/**************************************************************************//** + * @file startup_ARMCM4.s + * @brief CMSIS Cortex-M4 Core Device Startup File + * for CM4 Device Series + * @version V1.04 + * @date 14. January 2011 + *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ + * + ******************************************************************************/ + +/*****************************************************************************/ +/* Version: CodeSourcery Sourcery G++ Lite (with CS3) */ +/*****************************************************************************/ + + +/* +// Stack Configuration +// Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +// +*/ + + .equ Stack_Size, 0x00000100 + .section ".stack", "w" + .align 3 + .globl __cs3_stack_mem + .globl __cs3_stack_size +__cs3_stack_mem: + .if Stack_Size + .space Stack_Size + .endif + .size __cs3_stack_mem, . - __cs3_stack_mem + .set __cs3_stack_size, . - __cs3_stack_mem + + +/* +// Heap Configuration +// Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +// +*/ + + .equ Heap_Size, 0x00001000 + + .section ".heap", "w" + .align 3 + .globl __cs3_heap_start + .globl __cs3_heap_end +__cs3_heap_start: + .if Heap_Size + .space Heap_Size + .endif +__cs3_heap_end: + + +/* Vector Table */ + + .section ".cs3.interrupt_vector" + .globl __cs3_interrupt_vector_cortex_m + .type __cs3_interrupt_vector_cortex_m, %object + +__cs3_interrupt_vector_cortex_m: + .long __cs3_stack /* Top of Stack */ + .long __cs3_reset /* Reset Handler */ + .long NMI_Handler /* NMI Handler */ + .long HardFault_Handler /* Hard Fault Handler */ + .long MemManage_Handler /* MPU Fault Handler */ + .long BusFault_Handler /* Bus Fault Handler */ + .long UsageFault_Handler /* Usage Fault Handler */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long SVC_Handler /* SVCall Handler */ + .long DebugMon_Handler /* Debug Monitor Handler */ + .long 0 /* Reserved */ + .long PendSV_Handler /* PendSV Handler */ + .long SysTick_Handler /* SysTick Handler */ + + /* External Interrupts */ + .long DEF_IRQHandler /* 0: Default */ + + + .size __cs3_interrupt_vector_cortex_m, . - __cs3_interrupt_vector_cortex_m + + + .thumb + + +/* Reset Handler */ + + .section .cs3.reset,"x",%progbits + .thumb_func + .globl __cs3_reset_cortex_m + .type __cs3_reset_cortex_m, %function +__cs3_reset_cortex_m: + .fnstart + LDR R0, =SystemInit + BLX R0 + LDR R0,=_start + BX R0 + .pool + .cantunwind + .fnend + .size __cs3_reset_cortex_m,.-__cs3_reset_cortex_m + + .section ".text" + +/* Exception Handlers */ + + .weak NMI_Handler + .type NMI_Handler, %function +NMI_Handler: + B . + .size NMI_Handler, . - NMI_Handler + + .weak HardFault_Handler + .type HardFault_Handler, %function +HardFault_Handler: + B . + .size HardFault_Handler, . - HardFault_Handler + + .weak MemManage_Handler + .type MemManage_Handler, %function +MemManage_Handler: + B . + .size MemManage_Handler, . - MemManage_Handler + + .weak BusFault_Handler + .type BusFault_Handler, %function +BusFault_Handler: + B . + .size BusFault_Handler, . - BusFault_Handler + + .weak UsageFault_Handler + .type UsageFault_Handler, %function +UsageFault_Handler: + B . + .size UsageFault_Handler, . - UsageFault_Handler + + .weak SVC_Handler + .type SVC_Handler, %function +SVC_Handler: + B . + .size SVC_Handler, . - SVC_Handler + + .weak DebugMon_Handler + .type DebugMon_Handler, %function +DebugMon_Handler: + B . + .size DebugMon_Handler, . - DebugMon_Handler + + .weak PendSV_Handler + .type PendSV_Handler, %function +PendSV_Handler: + B . + .size PendSV_Handler, . - PendSV_Handler + + .weak SysTick_Handler + .type SysTick_Handler, %function +SysTick_Handler: + B . + .size SysTick_Handler, . - SysTick_Handler + + +/* IRQ Handlers */ + + .globl Default_Handler + .type Default_Handler, %function +Default_Handler: + B . + .size Default_Handler, . - Default_Handler + + .macro IRQ handler + .weak \handler + .set \handler, Default_Handler + .endm + + IRQ DEF_IRQHandler + + .end diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/arm_convolution_example_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/arm_convolution_example_f32.c new file mode 100644 index 000000000..4d547b207 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/arm_convolution_example_f32.c @@ -0,0 +1,232 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 29. November 2010 +* $Revision: V1.0.3 +* +* Project: CMSIS DSP Library +* Title: arm_convolution_example_f32.c +* +* Description: Example code demonstrating Convolution of two input signals using fft. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.1 2010/10/05 KK +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 KK +* Production release and review comments incorporated. +* ------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup ConvolutionExample Convolution Example + * + * \par Description: + * \par + * Demonstrates the convolution theorem with the use of the Complex FFT, Complex-by-Complex + * Multiplication, and Support Functions. + * + * \par Algorithm: + * \par + * The convolution theorem states that convolution in the time domain corresponds to + * multiplication in the frequency domain. Therefore, the Fourier transform of the convoution of + * two signals is equal to the product of their individual Fourier transforms. + * The Fourier transform of a signal can be evaluated efficiently using the Fast Fourier Transform (FFT). + * \par + * Two input signals, a[n] and b[n], with lengths \c n1 and \c n2 respectively, + * are zero padded so that their lengths become \c N, which is greater than or equal to (n1+n2-1) + * and is a power of 4 as FFT implementation is radix-4. + * The convolution of a[n] and b[n] is obtained by taking the FFT of the input + * signals, multiplying the Fourier transforms of the two signals, and taking the inverse FFT of + * the multiplied result. + * \par + * This is denoted by the following equations: + *
 A[k] = FFT(a[n],N)
+ * B[k] = FFT(b[n],N)
+ * conv(a[n], b[n]) = IFFT(A[k] * B[k], N)
+ * where A[k] and B[k] are the N-point FFTs of the signals a[n] + * and b[n] respectively. + * The length of the convolved signal is (n1+n2-1). + * + * \par Block Diagram: + * \par + * \image html Convolution.gif + * + * \par Variables Description: + * \par + * \li \c testInputA_f32 points to the first input sequence + * \li \c srcALen length of the first input sequence + * \li \c testInputB_f32 points to the second input sequence + * \li \c srcBLen length of the second input sequence + * \li \c outLen length of convolution output sequence, (srcALen + srcBLen - 1) + * \li \c AxB points to the output array where the product of individual FFTs of inputs is stored. + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_fill_f32() + * - arm_copy_f32() + * - arm_cfft_radix4_init_f32() + * - arm_cfft_radix4_f32() + * - arm_cmplx_mult_cmplx_f32() + * + * Refer + * \link arm_convolution_example_f32.c \endlink + * + */ + + +/** \example arm_convolution_example_f32.c + */ + +#include "arm_math.h" +#include "math_helper.h" + +/* ---------------------------------------------------------------------- +* Defines each of the tests performed +* ------------------------------------------------------------------- */ +#define MAX_BLOCKSIZE 128 +#define DELTA (0.000001f) +#define SNR_THRESHOLD 90 + +/* ---------------------------------------------------------------------- +* Declare I/O buffers +* ------------------------------------------------------------------- */ +float32_t Ak[MAX_BLOCKSIZE]; /* Input A */ +float32_t Bk[MAX_BLOCKSIZE]; /* Input B */ +float32_t AxB[MAX_BLOCKSIZE * 2]; /* Output */ + +/* ---------------------------------------------------------------------- +* Test input data for Floating point Convolution example for 32-blockSize +* Generated by the MATLAB randn() function +* ------------------------------------------------------------------- */ +float32_t testInputA_f32[64] = +{ +-0.808920, 1.357369, 1.180861, -0.504544, 1.762637, -0.703285, +1.696966, 0.620571, -0.151093, -0.100235, -0.872382, -0.403579, +-0.860749, -0.382648, -1.052338, 0.128113, -0.646269, 1.093377, +-2.209198, 0.471706, 0.408901, 1.266242, 0.598252, 1.176827, +-0.203421, 0.213596, -0.851964, -0.466958, 0.021841, -0.698938, +-0.604107, 0.461778, -0.318219, 0.942520, 0.577585, 0.417619, +0.614665, 0.563679, -1.295073, -0.764437, 0.952194, -0.859222, +-0.618554, -2.268542, -1.210592, 1.655853, -2.627219, -0.994249, +-1.374704, 0.343799, 0.025619, 1.227481, -0.708031, 0.069355, +-1.845228, -1.570886, 1.010668, -1.802084, 1.630088, 1.286090, +-0.161050, -0.940794, 0.367961, 0.291907 + +}; + +float32_t testInputB_f32[64] = +{ +0.933724, 0.046881, 1.316470, 0.438345, 0.332682, 2.094885, +0.512081, 0.035546, 0.050894, -2.320371, 0.168711, -1.830493, +-0.444834, -1.003242, -0.531494, -1.365600, -0.155420, -0.757692, +-0.431880, -0.380021, 0.096243, -0.695835, 0.558850, -1.648962, +0.020369, -0.363630, 0.887146, 0.845503, -0.252864, -0.330397, +1.269131, -1.109295, -1.027876, 0.135940, 0.116721, -0.293399, +-1.349799, 0.166078, -0.802201, 0.369367, -0.964568, -2.266011, +0.465178, 0.651222, -0.325426, 0.320245, -0.784178, -0.579456, +0.093374, 0.604778, -0.048225, 0.376297, -0.394412, 0.578182, +-1.218141, -1.387326, 0.692462, -0.631297, 0.153137, -0.638952, +0.635474, -0.970468, 1.334057, -0.111370 +}; + +const float testRefOutput_f32[126] = +{ +-0.818943, 1.229484, -0.533664, 1.016604, 0.341875, -1.963656, +5.171476, 3.478033, 7.616361, 6.648384, 0.479069, 1.792012, +-1.295591, -7.447818, 0.315830, -10.657445, -2.483469, -6.524236, +-7.380591, -3.739005, -8.388957, 0.184147, -1.554888, 3.786508, +-1.684421, 5.400610, -1.578126, 7.403361, 8.315999, 2.080267, +11.077776, 2.749673, 7.138962, 2.748762, 0.660363, 0.981552, +1.442275, 0.552721, -2.576892, 4.703989, 0.989156, 8.759344, +-0.564825, -3.994680, 0.954710, -5.014144, 6.592329, 1.599488, +-13.979146, -0.391891, -4.453369, -2.311242, -2.948764, 1.761415, +-0.138322, 10.433007, -2.309103, 4.297153, 8.535523, 3.209462, +8.695819, 5.569919, 2.514304, 5.582029, 2.060199, 0.642280, +7.024616, 1.686615, -6.481756, 1.343084, -3.526451, 1.099073, +-2.965764, -0.173723, -4.111484, 6.528384, -6.965658, 1.726291, +1.535172, 11.023435, 2.338401, -4.690188, 1.298210, 3.943885, +8.407885, 5.168365, 0.684131, 1.559181, 1.859998, 2.852417, +8.574070, -6.369078, 6.023458, 11.837963, -6.027632, 4.469678, +-6.799093, -2.674048, 6.250367, -6.809971, -3.459360, 9.112410, +-2.711621, -1.336678, 1.564249, -1.564297, -1.296760, 8.904013, +-3.230109, 6.878013, -7.819823, 3.369909, -1.657410, -2.007358, +-4.112825, 1.370685, -3.420525, -6.276605, 3.244873, -3.352638, +1.545372, 0.902211, 0.197489, -1.408732, 0.523390, 0.348440 +}; + + +/* ---------------------------------------------------------------------- +* Declare Global variables +* ------------------------------------------------------------------- */ +uint32_t srcALen = 64; /* Length of Input A */ +uint32_t srcBLen = 64; /* Length of Input B */ +uint32_t outLen; /* Length of convolution output */ +float32_t snr; /* output SNR */ + +int32_t main(void) +{ + arm_status status; /* Status of the example */ + arm_cfft_radix4_instance_f32 cfft_instance; /* CFFT Structure instance */ + + /* CFFT Structure instance pointer */ + arm_cfft_radix4_instance_f32 *cfft_instance_ptr = + (arm_cfft_radix4_instance_f32*) &cfft_instance; + + /* output length of convolution */ + outLen = srcALen + srcBLen - 1; + + /* Initialise the fft input buffers with all zeros */ + arm_fill_f32(0.0, Ak, MAX_BLOCKSIZE); + arm_fill_f32(0.0, Bk, MAX_BLOCKSIZE); + + /* Copy the input values to the fft input buffers */ + arm_copy_f32(testInputA_f32, Ak, MAX_BLOCKSIZE/2); + arm_copy_f32(testInputB_f32, Bk, MAX_BLOCKSIZE/2); + + /* Initialize the CFFT function to compute 64 point fft */ + status = arm_cfft_radix4_init_f32(cfft_instance_ptr, 64, 0, 1); + + /* Transform input a[n] from time domain to frequency domain A[k] */ + arm_cfft_radix4_f32(cfft_instance_ptr, Ak); + /* Transform input b[n] from time domain to frequency domain B[k] */ + arm_cfft_radix4_f32(cfft_instance_ptr, Bk); + + /* Complex Multiplication of the two input buffers in frequency domain */ + arm_cmplx_mult_cmplx_f32(Ak, Bk, AxB, MAX_BLOCKSIZE/2); + + /* Initialize the CIFFT function to compute 64 point ifft */ + status = arm_cfft_radix4_init_f32(cfft_instance_ptr, 64, 1, 1); + + /* Transform the multiplication output from frequency domain to time domain, + that gives the convolved output */ + arm_cfft_radix4_f32(cfft_instance_ptr, AxB); + + /* SNR Calculation */ + snr = arm_snr_f32((float32_t *)testRefOutput_f32, AxB, srcALen + srcBLen - 1); + + /* Compare the SNR with threshold to test whether the + computed output is matched with the reference output values. */ + if( snr > SNR_THRESHOLD) + { + status = ARM_MATH_SUCCESS; + } + + if( status != ARM_MATH_SUCCESS) + { + while(1); + } + + while(1); /* main function does not return */ +} + + /** \endlink */ + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/system_ARMCM0.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/system_ARMCM0.c new file mode 100644 index 000000000..ece74d2de --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/system_ARMCM0.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM0.c + * @brief CMSIS Cortex-M0 Device System Source File + * for CM0 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM0.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/system_ARMCM3.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/system_ARMCM3.c new file mode 100644 index 000000000..2f5fa0b93 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/system_ARMCM3.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM3.c + * @brief CMSIS Cortex-M3 Device System Source File + * for CM3 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM3.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/system_ARMCM4.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/system_ARMCM4.c new file mode 100644 index 000000000..beaaf6fb8 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_convolution_example/system_ARMCM4.c @@ -0,0 +1,81 @@ +/**************************************************************************//** + * @file system_ARMCM4.c + * @brief CMSIS Cortex-M4 Device System Source File + * for CM4 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM4.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2) | /* set CP10 Full Access */ + (3UL << 11*2) ); /* set CP11 Full Access */ + #endif + + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_cortexM0l_dotproduct_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_cortexM0l_dotproduct_example.uvopt new file mode 100644 index 000000000..0c77fcd38 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_cortexM0l_dotproduct_example.uvopt @@ -0,0 +1,290 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_dotproduct_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 156 + 1 +
306
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_dotproduct_example\../arm_dotproduct_example_f32.c\156 +
+ + 1 + 0 + 159 + 1 +
304
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_dotproduct_example\../arm_dotproduct_example_f32.c\159 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_dotproduct_example_f32.c + arm_dotproduct_example_f32.c + + + + + CMSIS + 1 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM0.c + system_ARMCM0.c + + + 2 + 3 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM0.s + startup_ARMCM0.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 4 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + arm_cortexM0l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_dotproduct_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_cortexM0l_dotproduct_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_cortexM0l_dotproduct_example.uvproj new file mode 100644 index 000000000..46580ad86 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_cortexM0l_dotproduct_example.uvproj @@ -0,0 +1,425 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M0 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M0") ESEL ELITTLE + + + + 4803 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM0l_dotproduct_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_dotproduct_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM0 + + ..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM0\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_dotproduct_example_f32.c + 1 + ..\arm_dotproduct_example_f32.c + + + + + CMSIS Device + + + system_ARMCM0.c + 1 + ..\system_ARMCM0.c + + + startup_ARMCM0.s + 2 + .\startup_ARMCM0.s + + + + + CMSIS DSP_Library + + + arm_cortexM0l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_cortexM3l_dotproduct_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_cortexM3l_dotproduct_example.uvopt new file mode 100644 index 000000000..4b80fb888 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_cortexM3l_dotproduct_example.uvopt @@ -0,0 +1,290 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_dotproduct_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 156 + 1 +
300
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_dotProduct_example\../arm_dotproduct_example_f32.c\156 +
+ + 1 + 0 + 159 + 1 +
298
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_dotProduct_example\../arm_dotproduct_example_f32.c\159 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_dotproduct_example_f32.c + arm_dotproduct_example_f32.c + + + + + CMSIS DeviceSupport + 1 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM3.c + system_ARMCM3.c + + + 2 + 3 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM3.s + startup_ARMCM3.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 4 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + arm_cortexM3l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_dotproduct_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_cortexM3l_dotproduct_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_cortexM3l_dotproduct_example.uvproj new file mode 100644 index 000000000..e2fd21ac4 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_cortexM3l_dotproduct_example.uvproj @@ -0,0 +1,425 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M3 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M3") ESEL ELITTLE + + + + 4349 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM3l_dotProduct_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_dotproduct_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM3 + + ..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM3\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_dotproduct_example_f32.c + 1 + ..\arm_dotproduct_example_f32.c + + + + + CMSIS Device + + + system_ARMCM3.c + 1 + ..\system_ARMCM3.c + + + startup_ARMCM3.s + 2 + .\startup_ARMCM3.s + + + + + CMSIS DSP_Library + + + arm_cortexM3l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_cortexM4lf_dotproduct_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_cortexM4lf_dotproduct_example.uvopt new file mode 100644 index 000000000..f7363bb09 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_cortexM4lf_dotproduct_example.uvopt @@ -0,0 +1,290 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_dotProduct_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 156 + 1 +
308
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_dotProduct_example\../arm_dotproduct_example_f32.c\156 +
+ + 1 + 0 + 159 + 1 +
306
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_dotProduct_example\../arm_dotproduct_example_f32.c\159 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_dotproduct_example_f32.c + arm_dotproduct_example_f32.c + + + + + CMSIS DeviceSupport + 1 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM4.c + system_ARMCM4.c + + + 2 + 3 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM4.s + startup_ARMCM4.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 4 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + arm_cortexM4lf_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_dotproduct_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_cortexM4lf_dotproduct_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_cortexM4lf_dotproduct_example.uvproj new file mode 100644 index 000000000..341c39a1e --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_cortexM4lf_dotproduct_example.uvproj @@ -0,0 +1,425 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M4 FPU + ARM + CLOCK(12000000) CPUTYPE("Cortex-M4") ESEL ELITTLE FPU2 + + + + 5237 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM4lf_dotProduct_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_dotProduct_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM4, __FPU_PRESENT = 1 + + ..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM4\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_dotproduct_example_f32.c + 1 + ..\arm_dotproduct_example_f32.c + + + + + CMSIS Device + + + system_ARMCM4.c + 1 + ..\system_ARMCM4.c + + + startup_ARMCM4.s + 2 + .\startup_ARMCM4.s + + + + + CMSIS DSP_Library + + + arm_cortexM4lf_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_dotproduct_example.ini b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_dotproduct_example.ini new file mode 100644 index 000000000..df2ec0e5c --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/arm_dotproduct_example.ini @@ -0,0 +1,12 @@ + +/* This file demonstrates how to Map memory ranges, specify read, write, and execute permissions + + The file can be executed in the following way: + 1) manually from uVision command window (in debug mode) using command: + INCLUIDE arm_dotproduct_example.ini + +*/ + +// usual initialisation for target setup +MAP 0x20000000, 0x20008000 READ WRITE // allow R/W access to IO space + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/startup_ARMCM0.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/startup_ARMCM0.s new file mode 100644 index 000000000..0acd34611 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/startup_ARMCM0.s @@ -0,0 +1,144 @@ +;/**************************************************************************//** +; * @file startup_ARMCM0.s +; * @brief CMSIS Cortex-M0 Core Device Startup File +; * for CM0 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/startup_ARMCM3.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/startup_ARMCM3.s new file mode 100644 index 000000000..5af584bdc --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/startup_ARMCM3.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM3.s +; * @brief CMSIS Cortex-M3 Core Device Startup File +; * for CM3 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/startup_ARMCM4.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/startup_ARMCM4.s new file mode 100644 index 000000000..09fdbd6ed --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/ARM/startup_ARMCM4.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM4.s +; * @brief CMSIS Cortex-M4 Core Device Startup File +; * for CM4 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/arm_dotproduct_example_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/arm_dotproduct_example_f32.c new file mode 100644 index 000000000..f2acfbc07 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/arm_dotproduct_example_f32.c @@ -0,0 +1,163 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 29. November 2010 +* $Revision: V1.0.3 +* +* Project: CMSIS DSP Library +* Title: arm_dotproduct_example_f32.c +* +* Description: Example code computing dot product of two vectors. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.1 2010/10/05 KK +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 KK +* Production release and review comments incorporated. +* ------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup DotproductExample Dot Product Example + * + * \par Description: + * \par + * Demonstrates the use of the Multiply and Add functions to perform the dot product. + * The dot product of two vectors is obtained by multiplying corresponding elements + * and summing the products. + + * \par Algorithm: + * \par + * The two input vectors \c A and \c B with length \c n, are multiplied element-by-element + * and then added to obtain dot product. + * \par + * This is denoted by the following equation: + *
  dotProduct = A[0] * B[0] + A[1] * B[1] + ... + A[n-1] * B[n-1]
+ * + * \par Block Diagram: + * \par + * \image html dotProduct.gif + * + * \par Variables Description: + * \par + * \li \c srcA_buf_f32 points to first input vector + * \li \c srcB_buf_f32 points to second input vector + * \li \c testOutput stores dot product of the two input vectors. + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_mult_f32() + * - arm_add_f32() + * + * Refer + * \link arm_dotproduct_example_f32.c \endlink + * + */ + + +/** \example arm_dotproduct_example_f32.c + */ + +#include +#include "arm_math.h" + +/* ---------------------------------------------------------------------- +* Defines each of the tests performed +* ------------------------------------------------------------------- */ +#define MAX_BLOCKSIZE 32 +#define DELTA (0.000001f) + +/* ---------------------------------------------------------------------- +* Test input data for Floating point Dot Product example for 32-blockSize +* Generated by the MATLAB randn() function +* ------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- +** Test input data of srcA for blockSize 32 +** ------------------------------------------------------------------- */ +float32_t srcA_buf_f32[MAX_BLOCKSIZE] = +{ +-0.4325648115282207, -1.6655843782380970, 0.1253323064748307, + 0.2876764203585489, -1.1464713506814637, 1.1909154656429988, + 1.1891642016521031, -0.0376332765933176, 0.3272923614086541, + 0.1746391428209245, -0.1867085776814394, 0.7257905482933027, +-0.5883165430141887, 2.1831858181971011, -0.1363958830865957, + 0.1139313135208096, 1.0667682113591888, 0.0592814605236053, +-0.0956484054836690, -0.8323494636500225, 0.2944108163926404, +-1.3361818579378040, 0.7143245518189522, 1.6235620644462707, +-0.6917757017022868, 0.8579966728282626, 1.2540014216025324, +-1.5937295764474768, -1.4409644319010200, 0.5711476236581780, +-0.3998855777153632, 0.6899973754643451 +}; + +/* ---------------------------------------------------------------------- +** Test input data of srcB for blockSize 32 +** ------------------------------------------------------------------- */ +float32_t srcB_buf_f32[MAX_BLOCKSIZE] = +{ + 1.7491401329284098, 0.1325982188803279, 0.3252281811989881, +-0.7938091410349637, 0.3149236145048914, -0.5272704888029532, + 0.9322666565031119, 1.1646643544607362, -2.0456694357357357, +-0.6443728590041911, 1.7410657940825480, 0.4867684246821860, + 1.0488288293660140, 1.4885752747099299, 1.2705014969484090, +-1.8561241921210170, 2.1343209047321410, 1.4358467535865909, +-0.9173023332875400, -1.1060770780029008, 0.8105708062681296, + 0.6985430696369063, -0.4015827425012831, 1.2687512030669628, +-0.7836083053674872, 0.2132664971465569, 0.7878984786088954, + 0.8966819356782295, -0.1869172943544062, 1.0131816724341454, + 0.2484350696132857, 0.0596083377937976 +}; + +/* Reference dot product output */ +float32_t refDotProdOut = 5.9273644806352142; + +/* ---------------------------------------------------------------------- +* Declare Global variables +* ------------------------------------------------------------------- */ +float32_t multOutput[MAX_BLOCKSIZE]; /* Intermediate output */ +float32_t testOutput; /* Final ouput */ + +arm_status status; /* Status of the example */ + +int32_t main(void) +{ + uint32_t i; /* Loop counter */ + float32_t diff; /* Difference between reference and test outputs */ + + /* Multiplication of two input buffers */ + arm_mult_f32(srcA_buf_f32, srcB_buf_f32, multOutput, MAX_BLOCKSIZE); + + /* Accumulate the multiplication output values to + get the dot product of the two inputs */ + for(i=0; i< MAX_BLOCKSIZE; i++) + { + arm_add_f32(&testOutput, &multOutput[i], &testOutput, 1); + } + + /* absolute value of difference between ref and test */ + diff = fabsf(refDotProdOut - testOutput); + + /* Comparison of dot product value with reference */ + if(diff > DELTA) + { + status = ARM_MATH_TEST_FAILURE; + } + + if( status == ARM_MATH_TEST_FAILURE) + { + while(1); + } + + while(1); /* main function does not return */ +} + + /** \endlink */ + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/system_ARMCM0.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/system_ARMCM0.c new file mode 100644 index 000000000..ece74d2de --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/system_ARMCM0.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM0.c + * @brief CMSIS Cortex-M0 Device System Source File + * for CM0 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM0.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/system_ARMCM3.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/system_ARMCM3.c new file mode 100644 index 000000000..2f5fa0b93 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/system_ARMCM3.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM3.c + * @brief CMSIS Cortex-M3 Device System Source File + * for CM3 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM3.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/system_ARMCM4.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/system_ARMCM4.c new file mode 100644 index 000000000..beaaf6fb8 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_dotproduct_example/system_ARMCM4.c @@ -0,0 +1,81 @@ +/**************************************************************************//** + * @file system_ARMCM4.c + * @brief CMSIS Cortex-M4 Device System Source File + * for CM4 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM4.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2) | /* set CP10 Full Access */ + (3UL << 11*2) ); /* set CP11 Full Access */ + #endif + + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_cortexM0l_fft_bin_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_cortexM0l_fft_bin_example.uvopt new file mode 100644 index 000000000..a5def4886 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_cortexM0l_fft_bin_example.uvopt @@ -0,0 +1,304 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_fft_bin_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 143 + 1 +
274
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_fft_bin_example\../arm_fft_bin_example_f32.c\143 +
+ + 1 + 0 + 146 + 1 +
276
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_fft_bin_example\../arm_fft_bin_example_f32.c\146 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_fft_bin_example_f32.c + arm_fft_bin_example_f32.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\arm_fft_bin_data.c + arm_fft_bin_data.c + + + + + CMSIS + 1 + 0 + 0 + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM0.c + system_ARMCM0.c + + + 2 + 4 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM0.s + startup_ARMCM0.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 5 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + arm_cortexM0l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_fft_bin_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_cortexM0l_fft_bin_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_cortexM0l_fft_bin_example.uvproj new file mode 100644 index 000000000..417abdce2 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_cortexM0l_fft_bin_example.uvproj @@ -0,0 +1,430 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M0 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M0") ESEL ELITTLE + + + + 4803 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM0l_fft_bin_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_fft_bin_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM0 + + ..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM0\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_fft_bin_example_f32.c + 1 + ..\arm_fft_bin_example_f32.c + + + arm_fft_bin_data.c + 1 + ..\arm_fft_bin_data.c + + + + + CMSIS Device + + + system_ARMCM0.c + 1 + ..\system_ARMCM0.c + + + startup_ARMCM0.s + 2 + .\startup_ARMCM0.s + + + + + CMSIS DSP_Library + + + arm_cortexM0l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_cortexM3l_fft_bin_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_cortexM3l_fft_bin_example.uvopt new file mode 100644 index 000000000..39bfd9cad --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_cortexM3l_fft_bin_example.uvopt @@ -0,0 +1,304 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_fft_bin_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 143 + 1 +
360
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_fft_bin_example\../arm_fft_bin_example_f32.c\143 +
+ + 1 + 0 + 146 + 1 +
362
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_fft_bin_example\../arm_fft_bin_example_f32.c\146 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\arm_fft_bin_data.c + arm_fft_bin_data.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_fft_bin_example_f32.c + arm_fft_bin_example_f32.c + + + + + CMSIS DeviceSupport + 1 + 0 + 0 + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM3.c + system_ARMCM3.c + + + 2 + 4 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM3.s + startup_ARMCM3.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 5 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + arm_cortexM3l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_fft_bin_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_cortexM3l_fft_bin_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_cortexM3l_fft_bin_example.uvproj new file mode 100644 index 000000000..c8b8fd676 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_cortexM3l_fft_bin_example.uvproj @@ -0,0 +1,430 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M3 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M3") ESEL ELITTLE + + + + 4349 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM3l_fft_bin_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_fft_bin_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM3 + + ..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM3\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_fft_bin_data.c + 1 + ..\arm_fft_bin_data.c + + + arm_fft_bin_example_f32.c + 1 + ..\arm_fft_bin_example_f32.c + + + + + CMSIS Device + + + system_ARMCM3.c + 1 + ..\system_ARMCM3.c + + + startup_ARMCM3.s + 2 + .\startup_ARMCM3.s + + + + + CMSIS DSP_Library + + + arm_cortexM3l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_cortexM4lf_fft_bin_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_cortexM4lf_fft_bin_example.uvopt new file mode 100644 index 000000000..12356134f --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_cortexM4lf_fft_bin_example.uvopt @@ -0,0 +1,304 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_fft_bin_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 143 + 1 +
360
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_fft_bin_example\../arm_fft_bin_example_f32.c\143 +
+ + 1 + 0 + 146 + 1 +
362
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_fft_bin_example\../arm_fft_bin_example_f32.c\146 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\arm_fft_bin_data.c + arm_fft_bin_data.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_fft_bin_example_f32.c + arm_fft_bin_example_f32.c + + + + + CMSIS DeviceSupport + 1 + 0 + 0 + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM4.c + system_ARMCM4.c + + + 2 + 4 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM4.s + startup_ARMCM4.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 5 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + arm_cortexM4lf_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_fft_bin_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_cortexM4lf_fft_bin_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_cortexM4lf_fft_bin_example.uvproj new file mode 100644 index 000000000..5fe326d79 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_cortexM4lf_fft_bin_example.uvproj @@ -0,0 +1,430 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M4 FPU + ARM + CLOCK(12000000) CPUTYPE("Cortex-M4") ESEL ELITTLE FPU2 + + + + 5237 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM4lf_fft_bin_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_fft_bin_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM4, __FPU_PRESENT = 1 + + ..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM4\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_fft_bin_data.c + 1 + ..\arm_fft_bin_data.c + + + arm_fft_bin_example_f32.c + 1 + ..\arm_fft_bin_example_f32.c + + + + + CMSIS Device + + + system_ARMCM4.c + 1 + ..\system_ARMCM4.c + + + startup_ARMCM4.s + 2 + .\startup_ARMCM4.s + + + + + CMSIS DSP_Library + + + arm_cortexM4lf_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_fft_bin_example.ini b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_fft_bin_example.ini new file mode 100644 index 000000000..fdf91bebf --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/arm_fft_bin_example.ini @@ -0,0 +1,12 @@ + +/* This file demonstrates how to Map memory ranges, specify read, write, and execute permissions + + The file can be executed in the following way: + 1) manually from uVision command window (in debug mode) using command: + INCLUIDE arm_fft_bin_example.ini + +*/ + +// usual initialisation for target setup +MAP 0x20000000, 0x20008000 READ WRITE // allow R/W access to IO space + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/startup_ARMCM0.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/startup_ARMCM0.s new file mode 100644 index 000000000..0acd34611 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/startup_ARMCM0.s @@ -0,0 +1,144 @@ +;/**************************************************************************//** +; * @file startup_ARMCM0.s +; * @brief CMSIS Cortex-M0 Core Device Startup File +; * for CM0 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/startup_ARMCM3.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/startup_ARMCM3.s new file mode 100644 index 000000000..5af584bdc --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/startup_ARMCM3.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM3.s +; * @brief CMSIS Cortex-M3 Core Device Startup File +; * for CM3 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/startup_ARMCM4.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/startup_ARMCM4.s new file mode 100644 index 000000000..09fdbd6ed --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/ARM/startup_ARMCM4.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM4.s +; * @brief CMSIS Cortex-M4 Core Device Startup File +; * for CM4 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/arm_fft_bin_data.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/arm_fft_bin_data.c new file mode 100644 index 000000000..64c9df249 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/arm_fft_bin_data.c @@ -0,0 +1,268 @@ +#include "arm_math.h" + +/* ---------------------------------------------------------------------- +Test Input signal contains 10KHz signal + Uniformly distributed white noise +** ------------------------------------------------------------------- */ + +float32_t testInput_f32_10khz[2048] = +{ +-0.865129623056441, 0.000000000000000, -2.655020678073846, 0.000000000000000, 0.600664612949661, 0.000000000000000, 0.080378093886515, 0.000000000000000, +-2.899160484012034, 0.000000000000000, 2.563004262857762, 0.000000000000000, 3.078328403304206, 0.000000000000000, 0.105906778385130, 0.000000000000000, +0.048366940168201, 0.000000000000000, -0.145696461188734, 0.000000000000000, -0.023417155362879, 0.000000000000000, 2.127729174988954, 0.000000000000000, +-1.176633086028377, 0.000000000000000, 3.690223557991855, 0.000000000000000, -0.622791766173194, 0.000000000000000, 0.722837373872203, 0.000000000000000, +2.739754205367484, 0.000000000000000, -0.062610410524552, 0.000000000000000, -0.891296810967338, 0.000000000000000, -1.845872258871811, 0.000000000000000, +1.195039415434387, 0.000000000000000, -2.177388969045026, 0.000000000000000, 1.078649103637905, 0.000000000000000, 2.570976050490193, 0.000000000000000, +-1.383551403404574, 0.000000000000000, 2.392141424058873, 0.000000000000000, 2.858002843205065, 0.000000000000000, -3.682433899725536, 0.000000000000000, +-3.488146646451150, 0.000000000000000, 1.323468578888120, 0.000000000000000, -0.099771155430726, 0.000000000000000, 1.561168082500454, 0.000000000000000, +1.025026795103179, 0.000000000000000, 0.928841900171200, 0.000000000000000, 2.930499509864950, 0.000000000000000, 2.013349089766430, 0.000000000000000, +2.381676148486737, 0.000000000000000, -3.081062307950236, 0.000000000000000, -0.389579115537544, 0.000000000000000, 0.181540149166620, 0.000000000000000, +-2.601953341353208, 0.000000000000000, 0.333435137783218, 0.000000000000000, -2.812945856162965, 0.000000000000000, 2.649109640172910, 0.000000000000000, +-1.003963025744654, 0.000000000000000, 1.552460768755035, 0.000000000000000, 0.088641345335247, 0.000000000000000, -2.519951327113426, 0.000000000000000, +-4.341348988610527, 0.000000000000000, 0.557772429359965, 0.000000000000000, -1.671267412948494, 0.000000000000000, 0.733951350960387, 0.000000000000000, +0.409263788034864, 0.000000000000000, 3.566033071952806, 0.000000000000000, 1.882565173848352, 0.000000000000000, -1.106017073793287, 0.000000000000000, +0.154456720778718, 0.000000000000000, -2.513205795512153, 0.000000000000000, 0.310978660939421, 0.000000000000000, 0.579706500111723, 0.000000000000000, +0.000086383683251, 0.000000000000000, -1.311866980897721, 0.000000000000000, 1.840007477574986, 0.000000000000000, -3.253005768451345, 0.000000000000000, +1.462584328739432, 0.000000000000000, 1.610103610851738, 0.000000000000000, 0.761914676858907, 0.000000000000000, 0.974541361089834, 0.000000000000000, +0.686845845885983, 0.000000000000000, 1.849153122025191, 0.000000000000000, 0.787800410401453, 0.000000000000000, -1.187438909666279, 0.000000000000000, +-0.754937911044720, 0.000000000000000, 0.084373858395232, 0.000000000000000, -2.600269011710521, 0.000000000000000, -0.962982842142644, 0.000000000000000, +-0.369328108540868, 0.000000000000000, 0.810791418361879, 0.000000000000000, 3.587016488699641, 0.000000000000000, -0.520776145083723, 0.000000000000000, +0.640249919627884, 0.000000000000000, 1.103122489464969, 0.000000000000000, 2.231779881455556, 0.000000000000000, -1.308035392685241, 0.000000000000000, +0.424070304330106, 0.000000000000000, -0.200383932651189, 0.000000000000000, -2.365526783356541, 0.000000000000000, -0.989114757436628, 0.000000000000000, +2.770807688959777, 0.000000000000000, -0.444172737462307, 0.000000000000000, 0.079760979374078, 0.000000000000000, -0.005199118412183, 0.000000000000000, +-0.664712668309527, 0.000000000000000, -0.624171857561896, 0.000000000000000, 0.537306979007338, 0.000000000000000, -2.575955675497642, 0.000000000000000, +1.562363235756780, 0.000000000000000, 1.814069369848895, 0.000000000000000, -1.293428583392509, 0.000000000000000, -1.026188449495686, 0.000000000000000, +-2.981771815588717, 0.000000000000000, -4.223468103075124, 0.000000000000000, 2.672674782004045, 0.000000000000000, -0.856096801117735, 0.000000000000000, +0.048517345512563, 0.000000000000000, -0.026860721136222, 0.000000000000000, 0.392932277758187, 0.000000000000000, -1.331740855093099, 0.000000000000000, +-1.894292129477081, 0.000000000000000, -1.425006468460681, 0.000000000000000, -2.721772427617057, 0.000000000000000, -1.616831100216806, 0.000000000000000, +3.551177651488947, 0.000000000000000, -0.069685667896087, 0.000000000000000, -3.134634907409102, 0.000000000000000, -0.263627598944639, 0.000000000000000, +-1.650469945991350, 0.000000000000000, -2.203580339374399, 0.000000000000000, -0.872203246123242, 0.000000000000000, 1.230782812607287, 0.000000000000000, +0.257288860093291, 0.000000000000000, 1.989083106173137, 0.000000000000000, -1.985638729453261, 0.000000000000000, -1.416185105842892, 0.000000000000000, +-1.131097688325772, 0.000000000000000, -2.245130805416057, 0.000000000000000, -1.938873996219074, 0.000000000000000, 2.043608361562645, 0.000000000000000, +-0.583727989880841, 0.000000000000000, -1.785266378212929, 0.000000000000000, 1.961457586224753, 0.000000000000000, 1.139400099963223, 0.000000000000000, +-1.979519343363991, 0.000000000000000, 2.003023322818429, 0.000000000000000, 0.229004069076829, 0.000000000000000, 3.452808862193135, 0.000000000000000, +2.882273808365857, 0.000000000000000, -1.549450501844438, 0.000000000000000, -3.283872089931876, 0.000000000000000, -0.327025884099064, 0.000000000000000, +-0.054979977136430, 0.000000000000000, -1.192280531479012, 0.000000000000000, 0.645539328365578, 0.000000000000000, 2.300832863404618, 0.000000000000000, +-1.092951789535240, 0.000000000000000, -1.017368249363773, 0.000000000000000, -0.142673056169787, 0.000000000000000, 0.831073544881250, 0.000000000000000, +-2.314612531587064, 0.000000000000000, -2.221456299106321, 0.000000000000000, 0.460261143885226, 0.000000000000000, 0.050585301888595, 0.000000000000000, +0.364373329183988, 0.000000000000000, -1.685956552069538, 0.000000000000000, 0.050664512351055, 0.000000000000000, -0.193355783902718, 0.000000000000000, +-0.158660446046828, 0.000000000000000, 2.394156453841953, 0.000000000000000, -1.562965718554525, 0.000000000000000, -2.199750600869900, 0.000000000000000, +1.544984022381773, 0.000000000000000, -1.988307216807315, 0.000000000000000, -0.628240722541046, 0.000000000000000, -1.436235771505429, 0.000000000000000, +1.677013691147313, 0.000000000000000, 1.600741781678228, 0.000000000000000, -0.757380959134706, 0.000000000000000, -4.784797439515566, 0.000000000000000, +0.265121462834569, 0.000000000000000, 3.862029485934378, 0.000000000000000, 2.386823577249430, 0.000000000000000, -3.655779745436893, 0.000000000000000, +-0.763541621368016, 0.000000000000000, -1.182140388432962, 0.000000000000000, -1.349106114858063, 0.000000000000000, -2.287533624396759, 0.000000000000000, +-0.028603745188423, 0.000000000000000, -1.353580755934427, 0.000000000000000, 0.461602380352937, 0.000000000000000, -0.059599055078928, 0.000000000000000, +-0.929946734342228, 0.000000000000000, 0.065773089295561, 0.000000000000000, 1.106565863102982, 0.000000000000000, 4.719295086373593, 0.000000000000000, +-2.108377703544395, 0.000000000000000, -2.226393620240159, 0.000000000000000, 1.375668397437521, 0.000000000000000, -0.960772428525443, 0.000000000000000, +-2.156313465390571, 0.000000000000000, 1.126060012375311, 0.000000000000000, 2.756485137030720, 0.000000000000000, 0.739639690862600, 0.000000000000000, +3.914769510295006, 0.000000000000000, 1.685232785586675, 0.000000000000000, 4.079058040970612, 0.000000000000000, -1.174598301660513, 0.000000000000000, +-2.885776587275580, 0.000000000000000, -0.241073635188767, 0.000000000000000, 3.080489872502403, 0.000000000000000, -2.051244183999421, 0.000000000000000, +0.664330486845139, 0.000000000000000, -1.697798999370016, 0.000000000000000, 1.452369423649782, 0.000000000000000, -1.523532831019280, 0.000000000000000, +0.171981186587481, 0.000000000000000, -4.685274721583927, 0.000000000000000, -1.336175835319380, 0.000000000000000, 1.419070770428945, 0.000000000000000, +-0.035791601713475, 0.000000000000000, 2.291937971632081, 0.000000000000000, -1.962559313450293, 0.000000000000000, -4.831595589339301, 0.000000000000000, +-1.857055284000925, 0.000000000000000, 2.606271522635512, 0.000000000000000, -0.576447978738030, 0.000000000000000, 0.082299166967720, 0.000000000000000, +1.888399453494614, 0.000000000000000, -3.564705298046079, 0.000000000000000, -0.939357831083889, 0.000000000000000, -1.903578203697778, 0.000000000000000, +-2.642492215447250, 0.000000000000000, -0.182990405251017, 0.000000000000000, 3.742026478011174, 0.000000000000000, 0.104295803798333, 0.000000000000000, +1.848678195370347, 0.000000000000000, -1.887384346896369, 0.000000000000000, 0.365048973046045, 0.000000000000000, -0.889638010354219, 0.000000000000000, +1.173877118428863, 0.000000000000000, -1.178562827540109, 0.000000000000000, 0.610271645685184, 0.000000000000000, 1.831284815697871, 0.000000000000000, +0.449575390102283, 0.000000000000000, 1.597171905253443, 0.000000000000000, 3.918574971904773, 0.000000000000000, 0.868104027970404, 0.000000000000000, +0.582643134746494, 0.000000000000000, 2.321256382353331, 0.000000000000000, -0.238118642223180, 0.000000000000000, -2.890287868054370, 0.000000000000000, +0.970995414625622, 0.000000000000000, 0.666137930891283, 0.000000000000000, -0.202435718709502, 0.000000000000000, 2.057930200518194, 0.000000000000000, +3.120583443719949, 0.000000000000000, -0.863945271701041, 0.000000000000000, 0.906848893874630, 0.000000000000000, -1.434124930222570, 0.000000000000000, +0.754659384848783, 0.000000000000000, -5.224154442713778, 0.000000000000000, 2.330229744098967, 0.000000000000000, 1.113946320164698, 0.000000000000000, +0.523324920322840, 0.000000000000000, 1.750740911548348, 0.000000000000000, -0.899333972913577, 0.000000000000000, 0.228705845203506, 0.000000000000000, +-1.934782624767648, 0.000000000000000, -3.508386237231303, 0.000000000000000, -2.107108523073510, 0.000000000000000, 0.380587645474815, 0.000000000000000, +-0.476200877183279, 0.000000000000000, -2.172086712642198, 0.000000000000000, 1.795372535780299, 0.000000000000000, -2.100318983391055, 0.000000000000000, +-0.022571122461405, 0.000000000000000, 0.674514020010955, 0.000000000000000, -0.148872569390857, 0.000000000000000, 0.298175890592737, 0.000000000000000, +-1.134244492493590, 0.000000000000000, -3.146848422289455, 0.000000000000000, -1.357950199087602, 0.000000000000000, 0.667362732020878, 0.000000000000000, +-3.119397998316724, 0.000000000000000, -1.189341126297637, 0.000000000000000, -1.532744386856668, 0.000000000000000, -1.672972484202534, 0.000000000000000, +-2.042283373871558, 0.000000000000000, -1.479481547595924, 0.000000000000000, -0.002668662875396, 0.000000000000000, 0.262737760129546, 0.000000000000000, +2.734456080621830, 0.000000000000000, -0.671945925075102, 0.000000000000000, -3.735078262179111, 0.000000000000000, -0.161705013319883, 0.000000000000000, +0.748963512361001, 0.000000000000000, 1.128046374367600, 0.000000000000000, 0.649651335592966, 0.000000000000000, 1.880020215025867, 0.000000000000000, +-1.095632293842306, 0.000000000000000, 1.197764876160487, 0.000000000000000, 0.323646656252985, 0.000000000000000, -1.655502751114502, 0.000000000000000, +3.666399062961496, 0.000000000000000, -0.334060899735197, 0.000000000000000, -2.119056978738397, 0.000000000000000, 3.721375117275012, 0.000000000000000, +0.044874186872307, 0.000000000000000, -2.733053897593234, 0.000000000000000, 1.590700278891042, 0.000000000000000, 3.215711772781902, 0.000000000000000, +-1.792085012843801, 0.000000000000000, -0.405797188885475, 0.000000000000000, -0.628080020080892, 0.000000000000000, -1.831815840843960, 0.000000000000000, +2.973656862522834, 0.000000000000000, -0.212032655138417, 0.000000000000000, 0.372437389437234, 0.000000000000000, -1.614030579023492, 0.000000000000000, +-0.704900996358698, 0.000000000000000, 1.123700273452105, 0.000000000000000, -0.136371848130819, 0.000000000000000, 3.020284357635585, 0.000000000000000, +-0.550211350877649, 0.000000000000000, 5.101256236381711, 0.000000000000000, 3.367051512192333, 0.000000000000000, -4.385131946669234, 0.000000000000000, +-3.967303337694391, 0.000000000000000, -0.965894936640022, 0.000000000000000, 0.328366945264681, 0.000000000000000, 0.199041562924914, 0.000000000000000, +1.067681999025495, 0.000000000000000, -1.939516091697170, 0.000000000000000, -1.092980954328824, 0.000000000000000, 0.273786079368066, 0.000000000000000, +-0.040928322190265, 0.000000000000000, -0.118368078577437, 0.000000000000000, 1.766589628899997, 0.000000000000000, 1.738321311635393, 0.000000000000000, +-2.895012794321649, 0.000000000000000, 1.213521771395142, 0.000000000000000, 0.922971726633985, 0.000000000000000, 1.091516563636489, 0.000000000000000, +3.226378465469620, 0.000000000000000, 1.149169778666974, 0.000000000000000, -1.695986327709386, 0.000000000000000, -0.974803077355813, 0.000000000000000, +-4.898035507513607, 0.000000000000000, 1.622719302889447, 0.000000000000000, 0.583891313586579, 0.000000000000000, -1.677182424094957, 0.000000000000000, +-1.915633132814685, 0.000000000000000, -1.980150370851616, 0.000000000000000, 0.604538269404190, 0.000000000000000, 0.939862406149365, 0.000000000000000, +-1.266939874246416, 0.000000000000000, -1.494771249200063, 0.000000000000000, 0.278042784093988, 0.000000000000000, 0.326627416008916, 0.000000000000000, +-1.914530157643303, 0.000000000000000, 1.908947721862196, 0.000000000000000, 0.531819285694044, 0.000000000000000, 3.056856632319658, 0.000000000000000, +-0.389241827774643, 0.000000000000000, -2.418606606780420, 0.000000000000000, 0.915299238878703, 0.000000000000000, -0.098774174295283, 0.000000000000000, +-0.906199428444304, 0.000000000000000, 0.316716451217743, 0.000000000000000, -4.367700643578311, 0.000000000000000, 1.491687997515293, 0.000000000000000, +-1.962381126288365, 0.000000000000000, -0.700829196527045, 0.000000000000000, 3.028958963615630, 0.000000000000000, -2.313461067462598, 0.000000000000000, +-1.431933239886712, 0.000000000000000, -0.831153039725342, 0.000000000000000, 3.939495598250743, 0.000000000000000, 0.342974753984771, 0.000000000000000, +-2.768330763002974, 0.000000000000000, -2.744010370019008, 0.000000000000000, 3.821352685212561, 0.000000000000000, 4.551065271455856, 0.000000000000000, +3.270136437041298, 0.000000000000000, -3.188028411950982, 0.000000000000000, -0.777075012417436, 0.000000000000000, 0.097110650265216, 0.000000000000000, +1.221216137608812, 0.000000000000000, -1.325824244541822, 0.000000000000000, -2.655296734084113, 0.000000000000000, -1.074792144885704, 0.000000000000000, +2.770401584439407, 0.000000000000000, 5.240270645610543, 0.000000000000000, 0.108576672208892, 0.000000000000000, -1.209394350650142, 0.000000000000000, +1.403344353838785, 0.000000000000000, -0.299032904177277, 0.000000000000000, 4.074959450638227, 0.000000000000000, 1.718727473952107, 0.000000000000000, +-3.061349227080806, 0.000000000000000, -1.158596888541269, 0.000000000000000, 3.381858904662625, 0.000000000000000, 0.957339964054052, 0.000000000000000, +0.179900074904899, 0.000000000000000, -3.909641902506081, 0.000000000000000, 0.805717289408649, 0.000000000000000, 2.047413793928261, 0.000000000000000, +-1.273580225826614, 0.000000000000000, -2.681359186869971, 0.000000000000000, -0.721241345822093, 0.000000000000000, -1.613090681569475, 0.000000000000000, +0.463138804815955, 0.000000000000000, 0.377223507800954, 0.000000000000000, 2.046550684968141, 0.000000000000000, 0.178508732797712, 0.000000000000000, +-0.477815330358845, 0.000000000000000, 3.763355908332053, 0.000000000000000, 1.300430303035163, 0.000000000000000, -0.214625793857725, 0.000000000000000, +1.343267891864081, 0.000000000000000, -0.340007682433245, 0.000000000000000, 2.062703194680005, 0.000000000000000, 0.042032160234235, 0.000000000000000, +0.643732569732250, 0.000000000000000, -1.913502543857589, 0.000000000000000, 3.771340762937158, 0.000000000000000, 1.050024807363386, 0.000000000000000, +-4.440489488592649, 0.000000000000000, 0.444904302066643, 0.000000000000000, 2.898702265650048, 0.000000000000000, 1.953232980548558, 0.000000000000000, +2.761564952735079, 0.000000000000000, 1.963537633260397, 0.000000000000000, -2.168858472916215, 0.000000000000000, -4.116235357699841, 0.000000000000000, +4.183678271896528, 0.000000000000000, 0.600422284944681, 0.000000000000000, -0.659352647255126, 0.000000000000000, -0.993127338218109, 0.000000000000000, +-2.463571314945747, 0.000000000000000, 0.937720951545881, 0.000000000000000, -3.098957308429730, 0.000000000000000, -2.354719140045463, 0.000000000000000, +-0.417285119323949, 0.000000000000000, 2.187974075975947, 0.000000000000000, 1.101468905172585, 0.000000000000000, -3.185800678152109, 0.000000000000000, +2.357534709345083, 0.000000000000000, 0.246645606729407, 0.000000000000000, 4.440905650784504, 0.000000000000000, -2.236807716637866, 0.000000000000000, +-2.171481518317550, 0.000000000000000, -2.029571795072690, 0.000000000000000, 0.135599790431348, 0.000000000000000, -1.277965265520191, 0.000000000000000, +-1.927976233157507, 0.000000000000000, -5.434492783745394, 0.000000000000000, -2.026375829312657, 0.000000000000000, 1.009666016819321, 0.000000000000000, +0.238549782367247, 0.000000000000000, -0.516403923971309, 0.000000000000000, -0.933977817429352, 0.000000000000000, 0.155803015935614, 0.000000000000000, +-0.396194809997929, 0.000000000000000, -0.915178100253214, 0.000000000000000, 0.666329367985015, 0.000000000000000, -1.517991149945785, 0.000000000000000, +0.458266744144822, 0.000000000000000, -1.242845974381418, 0.000000000000000, 0.057914823556477, 0.000000000000000, 0.994101307476875, 0.000000000000000, +-2.387209849199325, 0.000000000000000, 0.459297048883826, 0.000000000000000, 0.227711405683905, 0.000000000000000, 0.030255073506117, 0.000000000000000, +-1.323361608181337, 0.000000000000000, -4.650244457426706, 0.000000000000000, 0.062908579526021, 0.000000000000000, 3.462831028244432, 0.000000000000000, +1.303608183314856, 0.000000000000000, -1.430415193881612, 0.000000000000000, -1.672886118942142, 0.000000000000000, 0.992890699210099, 0.000000000000000, +-0.160814531784247, 0.000000000000000, -1.238132939350430, 0.000000000000000, -0.589223271459376, 0.000000000000000, 2.326363810561534, 0.000000000000000, +-4.433789496230785, 0.000000000000000, 1.664686987538929, 0.000000000000000, -2.366128834617921, 0.000000000000000, 1.212421570743837, 0.000000000000000, +-4.847914267690055, 0.000000000000000, 0.228485221404712, 0.000000000000000, 0.466139765470957, 0.000000000000000, -1.344202776943546, 0.000000000000000, +-1.012053673330574, 0.000000000000000, -2.844980626424742, 0.000000000000000, -1.552703722026340, 0.000000000000000, -1.448830983885038, 0.000000000000000, +0.127010756753980, 0.000000000000000, -1.667188263752299, 0.000000000000000, 3.424818052085100, 0.000000000000000, 0.956291135453840, 0.000000000000000, +-3.725533331754662, 0.000000000000000, -1.584534272368832, 0.000000000000000, -1.654148210472472, 0.000000000000000, 0.701610500675698, 0.000000000000000, +0.164954538683927, 0.000000000000000, -0.739260064712987, 0.000000000000000, -2.167324026090101, 0.000000000000000, -0.310240491909496, 0.000000000000000, +-2.281790349106906, 0.000000000000000, 1.719655331305361, 0.000000000000000, -2.997005923606441, 0.000000000000000, -1.999301431556852, 0.000000000000000, +-0.292229010068828, 0.000000000000000, 1.172317994855851, 0.000000000000000, 0.196734885241533, 0.000000000000000, 2.981365193477068, 0.000000000000000, +2.637726016926352, 0.000000000000000, 1.434045125217982, 0.000000000000000, 0.883627180451827, 0.000000000000000, -1.434040761445747, 0.000000000000000, +-1.528891971086553, 0.000000000000000, -3.306913135367542, 0.000000000000000, -0.399059265470646, 0.000000000000000, -0.265674394285178, 0.000000000000000, +3.502591252855384, 0.000000000000000, 0.830301156604454, 0.000000000000000, -0.220021317046083, 0.000000000000000, -0.090553770476646, 0.000000000000000, +0.771863477047951, 0.000000000000000, 1.351209629105760, 0.000000000000000, 3.773699756201963, 0.000000000000000, 0.472600118752329, 0.000000000000000, +2.332825668012222, 0.000000000000000, 1.853747950314528, 0.000000000000000, 0.759515251766178, 0.000000000000000, 1.327112776215496, 0.000000000000000, +2.518730296237868, 0.000000000000000, 0.764450208786353, 0.000000000000000, -0.278275349491296, 0.000000000000000, -0.041559465082020, 0.000000000000000, +1.387166083167787, 0.000000000000000, 2.612996769598122, 0.000000000000000, -0.385404831721799, 0.000000000000000, 2.005630016170309, 0.000000000000000, +-0.950500047307998, 0.000000000000000, -1.166884021392492, 0.000000000000000, 1.432973552928162, 0.000000000000000, 2.540370505384567, 0.000000000000000, +-1.140505295054501, 0.000000000000000, -3.673358835201185, 0.000000000000000, -0.450691288038056, 0.000000000000000, 1.601024294408014, 0.000000000000000, +0.773213556014045, 0.000000000000000, 2.973873693246168, 0.000000000000000, -1.361548406382279, 0.000000000000000, 1.409136332424815, 0.000000000000000, +-0.963382518314713, 0.000000000000000, -2.031268227368161, 0.000000000000000, 0.983309972085586, 0.000000000000000, -3.461412488471631, 0.000000000000000, +-2.601124929406039, 0.000000000000000, -0.533896239766343, 0.000000000000000, -2.627129008866350, 0.000000000000000, 0.622111169161305, 0.000000000000000, +-1.160926365580422, 0.000000000000000, -2.406196188132628, 0.000000000000000, -1.076870362758737, 0.000000000000000, -1.791866820937175, 0.000000000000000, +-0.749453071522325, 0.000000000000000, -5.324156615990973, 0.000000000000000, -1.038698022238289, 0.000000000000000, -2.106629944730630, 0.000000000000000, +0.659295598564773, 0.000000000000000, 0.520940881580988, 0.000000000000000, -0.055649203928700, 0.000000000000000, 0.292096765423137, 0.000000000000000, +-4.663743901790872, 0.000000000000000, -0.125066503391666, 0.000000000000000, -2.452620252445380, 0.000000000000000, -0.712128227397468, 0.000000000000000, +-0.048938037970968, 0.000000000000000, -1.821520226003361, 0.000000000000000, 0.810106421304257, 0.000000000000000, -0.196636623956257, 0.000000000000000, +-0.701769836763804, 0.000000000000000, 2.460345045649201, 0.000000000000000, 3.506597671641116, 0.000000000000000, -2.711322611972225, 0.000000000000000, +-0.658079876600542, 0.000000000000000, -2.040082099646173, 0.000000000000000, 2.201668355395807, 0.000000000000000, 1.181507395879711, 0.000000000000000, +-1.640739552179682, 0.000000000000000, -1.613393726467190, 0.000000000000000, -1.156741241731352, 0.000000000000000, 2.527773464519963, 0.000000000000000, +-0.497040638009502, 0.000000000000000, -0.975817112895589, 0.000000000000000, -2.866830755546166, 0.000000000000000, 1.120214498507878, 0.000000000000000, +5.986771654661698, 0.000000000000000, 0.398219252656757, 0.000000000000000, -3.545606013198135, 0.000000000000000, 0.312398099396191, 0.000000000000000, +-2.265327979531788, 0.000000000000000, 0.792121001107366, 0.000000000000000, -3.736145137670100, 0.000000000000000, 0.762228883650802, 0.000000000000000, +2.283545661214646, 0.000000000000000, 3.780020629583529, 0.000000000000000, 3.117260228608810, 0.000000000000000, -2.011159255609613, 0.000000000000000, +0.279107700476072, 0.000000000000000, 2.003369134246936, 0.000000000000000, -1.448171234480257, 0.000000000000000, 0.584697150310140, 0.000000000000000, +0.919508663636197, 0.000000000000000, -3.071349141675388, 0.000000000000000, -1.555923649263667, 0.000000000000000, 2.232497079438850, 0.000000000000000, +-0.012662139119883, 0.000000000000000, 0.372825540734715, 0.000000000000000, 2.378543590847629, 0.000000000000000, 1.459053407813062, 0.000000000000000, +-0.967913907390927, 0.000000000000000, 1.322825200678212, 0.000000000000000, -1.033775820061824, 0.000000000000000, -1.813629552693142, 0.000000000000000, +4.794348161661486, 0.000000000000000, 0.655279811518676, 0.000000000000000, -2.224590138589720, 0.000000000000000, 0.595329481295766, 0.000000000000000, +3.364055988866225, 0.000000000000000, 1.863416422998127, 0.000000000000000, 1.930305751828105, 0.000000000000000, -0.284467053432545, 0.000000000000000, +-0.923374905878938, 0.000000000000000, 1.922988234041399, 0.000000000000000, 0.310482143432719, 0.000000000000000, 0.332122302397134, 0.000000000000000, +-1.659487472408966, 0.000000000000000, -1.865943507877961, 0.000000000000000, -0.186775297569864, 0.000000000000000, -1.700543850628361, 0.000000000000000, +0.497157959366735, 0.000000000000000, -0.471244843957418, 0.000000000000000, -0.432013753969948, 0.000000000000000, -4.000189880113231, 0.000000000000000, +-0.415335170016467, 0.000000000000000, 0.317311950972859, 0.000000000000000, 0.038393428927595, 0.000000000000000, 0.177219909465206, 0.000000000000000, +0.531650958095143, 0.000000000000000, -2.711644985175806, 0.000000000000000, 0.328744077805156, 0.000000000000000, -0.938417707547928, 0.000000000000000, +0.970379584897379, 0.000000000000000, 1.873649473917137, 0.000000000000000, 0.177938226987023, 0.000000000000000, 0.155609346302393, 0.000000000000000, +-1.276504241867208, 0.000000000000000, -0.463725075928807, 0.000000000000000, -0.064748250389500, 0.000000000000000, -1.725568534062385, 0.000000000000000, +-0.139066584804067, 0.000000000000000, 1.975514554117767, 0.000000000000000, -0.807063199499478, 0.000000000000000, -0.326926659682788, 0.000000000000000, +1.445727032487938, 0.000000000000000, -0.597151107739100, 0.000000000000000, 2.732557531709386, 0.000000000000000, -2.907130934109188, 0.000000000000000, +-1.461264832679981, 0.000000000000000, -1.708588604968163, 0.000000000000000, 3.652851925431363, 0.000000000000000, 0.682050868282879, 0.000000000000000, +-0.281312579963294, 0.000000000000000, 0.554966483307825, 0.000000000000000, -0.981341739340932, 0.000000000000000, 1.279543331141603, 0.000000000000000, +0.036589747826856, 0.000000000000000, 2.312073745896073, 0.000000000000000, 1.754682200732425, 0.000000000000000, -0.957515875428627, 0.000000000000000, +-0.833596942819695, 0.000000000000000, 0.437054368791033, 0.000000000000000, -0.898819399360279, 0.000000000000000, -0.296050580896839, 0.000000000000000, +-0.785144257649601, 0.000000000000000, -2.541503089003311, 0.000000000000000, 2.225075846758761, 0.000000000000000, -1.587290487902002, 0.000000000000000, +-1.421404172056462, 0.000000000000000, -3.015149802293631, 0.000000000000000, 1.780874288867949, 0.000000000000000, -0.865812740882613, 0.000000000000000, +-2.845327531197112, 0.000000000000000, 1.445225867774367, 0.000000000000000, 2.183733236584647, 0.000000000000000, 1.163371072749080, 0.000000000000000, +0.883547693520409, 0.000000000000000, -1.224093106684675, 0.000000000000000, -1.854501116331044, 0.000000000000000, 1.783082089255796, 0.000000000000000, +2.301508706196191, 0.000000000000000, -0.539901944139077, 0.000000000000000, 1.962315832319967, 0.000000000000000, -0.060709041870503, 0.000000000000000, +-1.353139923300238, 0.000000000000000, -1.482887537805234, 0.000000000000000, 1.273732601967176, 0.000000000000000, -3.456609915556321, 0.000000000000000, +-3.752320586540873, 0.000000000000000, 3.536356614978951, 0.000000000000000, 0.206035952043233, 0.000000000000000, 5.933966913773842, 0.000000000000000, +-0.486633898075490, 0.000000000000000, -0.329595089863342, 0.000000000000000, 1.496414153905337, 0.000000000000000, 0.137868749388880, 0.000000000000000, +-0.437192030996792, 0.000000000000000, 2.682750615210656, 0.000000000000000, -2.440234892848570, 0.000000000000000, 1.433910252426186, 0.000000000000000, +-0.415051506104074, 0.000000000000000, 1.982003013708649, 0.000000000000000, 1.345796609972435, 0.000000000000000, -2.335949513404370, 0.000000000000000, +1.065988867433025, 0.000000000000000, 2.741844905000464, 0.000000000000000, -1.754047930934362, 0.000000000000000, 0.229252730015575, 0.000000000000000, +-0.679791016408669, 0.000000000000000, -2.274097820043743, 0.000000000000000, 0.149802252231876, 0.000000000000000, -0.139697151364830, 0.000000000000000, +-2.773367420505435, 0.000000000000000, -4.403400246165611, 0.000000000000000, -1.468974515184135, 0.000000000000000, 0.664990623095844, 0.000000000000000, +-3.446979775557143, 0.000000000000000, 1.850006428987618, 0.000000000000000, -1.550866747921936, 0.000000000000000, -3.632874882935257, 0.000000000000000, +0.828039662992464, 0.000000000000000, 2.794055182632816, 0.000000000000000, -0.593995716682633, 0.000000000000000, 0.142788156054200, 0.000000000000000, +0.552461945119668, 0.000000000000000, 0.842127129738758, 0.000000000000000, 1.414335509600077, 0.000000000000000, -0.311559241382430, 0.000000000000000, +1.510590844695250, 0.000000000000000, 1.692217183824300, 0.000000000000000, 0.613760285711957, 0.000000000000000, 0.065233463207770, 0.000000000000000, +-2.571912893711505, 0.000000000000000, -1.707001531141341, 0.000000000000000, 0.673884968382041, 0.000000000000000, 0.889863883420103, 0.000000000000000, +-2.395635435233346, 0.000000000000000, 1.129247296359819, 0.000000000000000, 0.569074704779735, 0.000000000000000, 6.139436017480722, 0.000000000000000, +0.822158309259017, 0.000000000000000, -3.289872016222589, 0.000000000000000, 0.417612988384414, 0.000000000000000, 1.493982103868165, 0.000000000000000, +-0.415353391377005, 0.000000000000000, 0.288670764933155, 0.000000000000000, -1.895650228872272, 0.000000000000000, -0.139631694475020, 0.000000000000000, +1.445103299005436, 0.000000000000000, 2.877182243683429, 0.000000000000000, 1.192428490172580, 0.000000000000000, -5.964591921763842, 0.000000000000000, +0.570859795882959, 0.000000000000000, 2.328333316356666, 0.000000000000000, 0.333755014930026, 0.000000000000000, 1.221901577771909, 0.000000000000000, +0.943358697415568, 0.000000000000000, 2.793063983613067, 0.000000000000000, 3.163005066073616, 0.000000000000000, 2.098300664513867, 0.000000000000000, +-3.915313164333447, 0.000000000000000, -2.475766769064539, 0.000000000000000, 1.720472044894277, 0.000000000000000, -1.273591949275665, 0.000000000000000, +-1.213451272938616, 0.000000000000000, 0.697439404325690, 0.000000000000000, -0.309902287574293, 0.000000000000000, 2.622575852162781, 0.000000000000000, +-2.075881936219060, 0.000000000000000, 0.777847545691770, 0.000000000000000, -3.967947986440650, 0.000000000000000, -3.066503371806472, 0.000000000000000, +1.193780625937845, 0.000000000000000, 0.214246579281311, 0.000000000000000, -2.610681491162162, 0.000000000000000, -1.261224183972745, 0.000000000000000, +-1.165071748544285, 0.000000000000000, -1.116548474834374, 0.000000000000000, 0.847202164846982, 0.000000000000000, -3.474301529532390, 0.000000000000000, +0.020799541946476, 0.000000000000000, -3.868995473288166, 0.000000000000000, 1.757979409638067, 0.000000000000000, 0.868115130183109, 0.000000000000000, +0.910167436737958, 0.000000000000000, -1.878855115563720, 0.000000000000000, 1.710357104174161, 0.000000000000000, -1.468933980990902, 0.000000000000000, +1.799544171601169, 0.000000000000000, -4.922332880027887, 0.000000000000000, 0.219424548939720, 0.000000000000000, -0.971671113451924, 0.000000000000000, +-0.940533475616266, 0.000000000000000, 0.122510114412152, 0.000000000000000, -1.373686254916911, 0.000000000000000, 1.760348103896323, 0.000000000000000, +0.391745067829643, 0.000000000000000, 2.521958505327354, 0.000000000000000, -1.300693516405092, 0.000000000000000, -0.538251788309178, 0.000000000000000, +0.797184135810173, 0.000000000000000, 2.908800548982588, 0.000000000000000, 1.590902251655215, 0.000000000000000, -1.070323714487264, 0.000000000000000, +-3.349764443340999, 0.000000000000000, -1.190563529731447, 0.000000000000000, 1.363369471291963, 0.000000000000000, -1.814270299924576, 0.000000000000000, +-0.023381588315711, 0.000000000000000, 1.719182048679569, 0.000000000000000, 0.839917213252626, 0.000000000000000, 1.006099633839122, 0.000000000000000, +0.812462674381527, 0.000000000000000, 1.755814336346739, 0.000000000000000, 2.546848681206319, 0.000000000000000, -1.555300208869455, 0.000000000000000, +1.017053811631167, 0.000000000000000, 0.996591039170903, 0.000000000000000, -1.228047247924881, 0.000000000000000, 4.809462271463009, 0.000000000000000, +2.318113116151685, 0.000000000000000, -1.206932520679733, 0.000000000000000, 1.273757685623312, 0.000000000000000, 0.724335352481802, 0.000000000000000, +1.519876652073198, 0.000000000000000, -2.749670314714158, 0.000000000000000, 3.424042481847581, 0.000000000000000, -3.714668360421517, 0.000000000000000, +1.612834197004014, 0.000000000000000, -2.038234723985566, 0.000000000000000, 1.470938786562152, 0.000000000000000, 2.111634918450302, 0.000000000000000, +1.030376670151787, 0.000000000000000, -0.420877189003829, 0.000000000000000, -1.502024800532894, 0.000000000000000, 0.452310749163804, 0.000000000000000, +-1.606059382300987, 0.000000000000000, -4.006159967834147, 0.000000000000000, -2.152801208196508, 0.000000000000000, 1.671674089372579, 0.000000000000000, +1.714536333564101, 0.000000000000000, -1.011518543005344, 0.000000000000000, -0.576410282180584, 0.000000000000000, 0.733689809480836, 0.000000000000000, +1.004245602717974, 0.000000000000000, 1.010090391888449, 0.000000000000000, 3.811459513385621, 0.000000000000000, -5.230621089271954, 0.000000000000000, +0.678044861034399, 0.000000000000000, 1.255935859598107, 0.000000000000000, 1.674521701615288, 0.000000000000000, -1.656695216761705, 0.000000000000000, +1.169286028869693, 0.000000000000000, 0.524915416191998, 0.000000000000000, 2.397642885039520, 0.000000000000000, 2.108711400616072, 0.000000000000000, +2.037618211018084, 0.000000000000000, -0.623664553406925, 0.000000000000000, 2.984106170984409, 0.000000000000000, 1.132182737400932, 0.000000000000000, +-2.859274340352130, 0.000000000000000, -0.975550071398723, 0.000000000000000, -1.359935119997407, 0.000000000000000, -2.963308211050121, 0.000000000000000, +-0.228726662781163, 0.000000000000000, -1.411110379682043, 0.000000000000000, 0.741553355734225, 0.000000000000000, 0.497554254758309, 0.000000000000000, +2.371907950598855, 0.000000000000000, 1.063465168988748, 0.000000000000000, -0.641082692081488, 0.000000000000000, -0.855439878540726, 0.000000000000000, +0.578321738578726, 0.000000000000000, 3.005809768796194, 0.000000000000000, 1.961458699064065, 0.000000000000000, -3.206261663772745, 0.000000000000000, +-0.364431989095434, 0.000000000000000, -0.263182496622273, 0.000000000000000, 1.843464680631139, 0.000000000000000, -0.419107530229249, 0.000000000000000, +1.662335873298487, 0.000000000000000, -0.853687563304005, 0.000000000000000, -2.584133404357169, 0.000000000000000, 3.466839568922895, 0.000000000000000, +0.881671345091973, 0.000000000000000, 0.454620014206908, 0.000000000000000, -1.737245187402739, 0.000000000000000, 2.162713238369243, 0.000000000000000, +-3.868539002714486, 0.000000000000000, 2.014114855933826, 0.000000000000000, -0.703233831811006, 0.000000000000000, -3.410319935997574, 0.000000000000000, +-1.851235811006584, 0.000000000000000, 0.909783907894036, 0.000000000000000, 0.091884002136728, 0.000000000000000, -2.688294201131650, 0.000000000000000, +-0.906134178460955, 0.000000000000000, 3.475054609035133, 0.000000000000000, -0.573927964170323, 0.000000000000000, -0.429542937515399, 0.000000000000000, +0.991348618739939, 0.000000000000000, 1.974804904926325, 0.000000000000000, 0.975783450796698, 0.000000000000000, -3.057119549071503, 0.000000000000000, +-3.899429237481194, 0.000000000000000, 0.362439009175350, 0.000000000000000, -1.124461670265618, 0.000000000000000, 1.806000360163583, 0.000000000000000, +-2.768333362600288, 0.000000000000000, 0.244387897900379, 0.000000000000000, 0.908767296720926, 0.000000000000000, 1.254669374391882, 0.000000000000000, +-1.420441929463686, 0.000000000000000, -0.875658895966293, 0.000000000000000, 0.183824603376167, 0.000000000000000, -3.361653917011686, 0.000000000000000, +-0.796615630227952, 0.000000000000000, -1.660226542658673, 0.000000000000000, 1.654439358307226, 0.000000000000000, 2.782812946709771, 0.000000000000000, +1.418064412811531, 0.000000000000000, -0.819645647243761, 0.000000000000000, 0.807724772592699, 0.000000000000000, -0.941967976379298, 0.000000000000000, +-2.312768306047469, 0.000000000000000, 0.872426936477443, 0.000000000000000, 0.919528961530845, 0.000000000000000, -2.084904575264847, 0.000000000000000, +-1.972464868459322, 0.000000000000000, -1.050687203338466, 0.000000000000000, 1.659579707007902, 0.000000000000000, -1.820640014705855, 0.000000000000000, +-1.195078061671045, 0.000000000000000, -1.639773173762048, 0.000000000000000, 1.616744338157063, 0.000000000000000, 4.019216096811563, 0.000000000000000, +3.461021102549681, 0.000000000000000, 1.642352734361484, 0.000000000000000, -0.046354693720813, 0.000000000000000, -0.041936252359677, 0.000000000000000, +-2.393307519480551, 0.000000000000000, -0.341471634615121, 0.000000000000000, -0.392073595257017, 0.000000000000000, -0.219299018372730, 0.000000000000000, +-2.016391579662071, 0.000000000000000, -0.653096251969787, 0.000000000000000, 1.466353155666821, 0.000000000000000, -2.872058864320412, 0.000000000000000, +-2.157180779503830, 0.000000000000000, 0.723257479841560, 0.000000000000000, 3.769951308104384, 0.000000000000000, -1.923392042420024, 0.000000000000000, +0.644899359942840, 0.000000000000000, -2.090226891621437, 0.000000000000000, -0.277043982890403, 0.000000000000000, -0.528271428321112, 0.000000000000000, +2.518120645960652, 0.000000000000000, 1.040820431111488, 0.000000000000000, -4.560583754742486, 0.000000000000000, -0.226899614918836, 0.000000000000000, +1.713331231108959, 0.000000000000000, -3.293941019163642, 0.000000000000000, -1.113331444648290, 0.000000000000000, -1.032308423149906, 0.000000000000000, +1.593774272982443, 0.000000000000000, -1.246840475090529, 0.000000000000000, -0.190344684920137, 0.000000000000000, -1.719386356896355, 0.000000000000000, +-2.827721754659679, 0.000000000000000, -0.092438285279020, 0.000000000000000, -0.565844430675246, 0.000000000000000, -1.077916121691716, 0.000000000000000, +-1.208665809504693, 0.000000000000000, -2.996014266381254, 0.000000000000000, 2.888573323402423, 0.000000000000000, 2.829507048720695, 0.000000000000000, +-0.859177034120755, 0.000000000000000, -1.969302377743254, 0.000000000000000, 0.777437674525362, 0.000000000000000, -0.124910190157646, 0.000000000000000, +0.129875493115290, 0.000000000000000, -4.192139262163992, 0.000000000000000, 3.023496047962126, 0.000000000000000, 1.149775163736637, 0.000000000000000, +2.038151304801731, 0.000000000000000, 3.016122489841263, 0.000000000000000, -4.829481812137012, 0.000000000000000, -1.668436615909279, 0.000000000000000, +0.958586784636918, 0.000000000000000, 1.550652410058678, 0.000000000000000, -1.456305257976716, 0.000000000000000, -0.079588392344731, 0.000000000000000, +-2.453213599392345, 0.000000000000000, 0.296795909127105, 0.000000000000000, -0.253426616607643, 0.000000000000000, 1.418937160028195, 0.000000000000000, +-1.672949529066915, 0.000000000000000, -1.620990298572947, 0.000000000000000, -1.085103073196045, 0.000000000000000, 0.738606361195386, 0.000000000000000, +-2.097831202853255, 0.000000000000000, 2.711952282071310, 0.000000000000000, 1.498539238246888, 0.000000000000000, 1.317457282535915, 0.000000000000000, +-0.302765938349717, 0.000000000000000, -0.044623707947201, 0.000000000000000, 2.337405215062395, 0.000000000000000, -3.980689173859100, 0.000000000000000, + + +}; + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/arm_fft_bin_example_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/arm_fft_bin_example_f32.c new file mode 100644 index 000000000..56e403041 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/arm_fft_bin_example_f32.c @@ -0,0 +1,152 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 29. November 2010 +* $Revision: V1.0.3 +* +* Project: CMSIS DSP Library +* Title: arm_fft_bin_example_f32.c +* +* Description: Example code demonstrating calculation of Max energy bin of +* frequency domain of input signal. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.1 2010/10/05 KK +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 KK +* Production release and review comments incorporated. +* ------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup FrequencyBin Frequency Bin Example + * + * \par Description + * \par + * Demonstrates the calculation of the maximum energy bin in the frequency + * domain of the input signal with the use of Complex FFT, Complex + * Magnitude, and Maximum functions. + * + * \par Algorithm: + * \par + * The input test signal contains a 10 kHz signal with uniformly distributed white noise. + * Calculating the FFT of the input signal will give us the maximum energy of the + * bin corresponding to the input frequency of 10 kHz. + * + * \par Block Diagram: + * \image html FFTBin.gif "Block Diagram" + * \par + * The figure below shows the time domain signal of 10 kHz signal with + * uniformly distributed white noise, and the next figure shows the input + * in the frequency domain. The bin with maximum energy corresponds to 10 kHz signal. + * \par + * \image html FFTBinInput.gif "Input signal in Time domain" + * \image html FFTBinOutput.gif "Input signal in Frequency domain" + * + * \par Variables Description: + * \par + * \li \c testInput_f32_10khz points to the input data + * \li \c testOutput points to the output data + * \li \c fftSize length of FFT + * \li \c ifftFlag flag for the selection of CFFT/CIFFT + * \li \c doBitReverse Flag for selection of normal order or bit reversed order + * \li \c refIndex reference index value at which maximum energy of bin ocuurs + * \li \c testIndex calculated index value at which maximum energy of bin ocuurs + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_cfft_radix4_init_f32() + * - arm_cfft_radix4_f32() + * - arm_cmplx_mag_f32() + * - arm_max_f32() + * + * Refer + * \link arm_fft_bin_example_f32.c \endlink + * + */ + + +/** \example arm_fft_bin_example_f32.c + */ + + +#include "arm_math.h" + +#define TEST_LENGTH_SAMPLES 2048 + +/* ------------------------------------------------------------------- +* External Input and Output buffer Declarations for FFT Bin Example +* ------------------------------------------------------------------- */ +extern float32_t testInput_f32_10khz[TEST_LENGTH_SAMPLES]; +static float32_t testOutput[TEST_LENGTH_SAMPLES/2]; + +/* ------------------------------------------------------------------ +* Global variables for FFT Bin Example +* ------------------------------------------------------------------- */ +uint32_t fftSize = 1024; +uint32_t ifftFlag = 0; +uint32_t doBitReverse = 1; + +/* Reference index at which max energy of bin ocuurs */ +uint32_t refIndex = 213, testIndex = 0; + +/* ---------------------------------------------------------------------- +* Max magnitude FFT Bin test +* ------------------------------------------------------------------- */ + +int32_t main(void) +{ + + arm_status status; + arm_cfft_radix4_instance_f32 S; + float32_t maxValue; + + status = ARM_MATH_SUCCESS; + + /* Initialize the CFFT/CIFFT module */ + status = arm_cfft_radix4_init_f32(&S, fftSize, + ifftFlag, doBitReverse); + + /* Process the data through the CFFT/CIFFT module */ + arm_cfft_radix4_f32(&S, testInput_f32_10khz); + + + /* Process the data through the Complex Magnitude Module for + calculating the magnitude at each bin */ + arm_cmplx_mag_f32(testInput_f32_10khz, testOutput, + fftSize); + + /* Calculates maxValue and returns corresponding BIN value */ + arm_max_f32(testOutput, fftSize, &maxValue, &testIndex); + + if(testIndex != refIndex) + { + status = ARM_MATH_TEST_FAILURE; + } + + /* ---------------------------------------------------------------------- + ** Loop here if the signals fail the PASS check. + ** This denotes a test failure + ** ------------------------------------------------------------------- */ + + if( status != ARM_MATH_SUCCESS) + { + while(1); + } + + while(1); /* main function does not return */ +} + + /** \endlink */ + + + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/system_ARMCM0.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/system_ARMCM0.c new file mode 100644 index 000000000..ece74d2de --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/system_ARMCM0.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM0.c + * @brief CMSIS Cortex-M0 Device System Source File + * for CM0 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM0.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/system_ARMCM3.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/system_ARMCM3.c new file mode 100644 index 000000000..2f5fa0b93 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/system_ARMCM3.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM3.c + * @brief CMSIS Cortex-M3 Device System Source File + * for CM3 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM3.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/system_ARMCM4.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/system_ARMCM4.c new file mode 100644 index 000000000..beaaf6fb8 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fft_bin_example/system_ARMCM4.c @@ -0,0 +1,81 @@ +/**************************************************************************//** + * @file system_ARMCM4.c + * @brief CMSIS Cortex-M4 Device System Source File + * for CM4 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM4.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2) | /* set CP10 Full Access */ + (3UL << 11*2) ); /* set CP11 Full Access */ + #endif + + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_cortexM0l_fir_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_cortexM0l_fir_example.uvopt new file mode 100644 index 000000000..0c6ce4117 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_cortexM0l_fir_example.uvopt @@ -0,0 +1,318 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_fir_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 211 + 1 +
286
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_fir_example\../arm_fir_example_f32.c\211 +
+ + 1 + 0 + 214 + 1 +
288
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_fir_example\../arm_fir_example_f32.c\214 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\arm_fir_data.c + arm_fir_data.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_fir_example_f32.c + arm_fir_example_f32.c + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\Common\Source\math_helper.c + math_helper.c + + + + + CMSIS + 1 + 0 + 0 + + 2 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM0.c + system_ARMCM0.c + + + 2 + 5 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM0.s + startup_ARMCM0.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 6 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + arm_cortexM0l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_fir_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_cortexM0l_fir_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_cortexM0l_fir_example.uvproj new file mode 100644 index 000000000..fdacdfcf6 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_cortexM0l_fir_example.uvproj @@ -0,0 +1,435 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M0 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M0") ESEL ELITTLE + + + + 4803 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM0l_fir_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_fir_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM0 + + ..\..\..\..\Include;..\..\Common\Include;..\..\..\..\..\Device\ARM\ARMCM0\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_fir_data.c + 1 + ..\arm_fir_data.c + + + arm_fir_example_f32.c + 1 + ..\arm_fir_example_f32.c + + + math_helper.c + 1 + ..\..\Common\Source\math_helper.c + + + + + CMSIS Device + + + system_ARMCM0.c + 1 + ..\system_ARMCM0.c + + + startup_ARMCM0.s + 2 + .\startup_ARMCM0.s + + + + + CMSIS DSP_Library + + + arm_cortexM0l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_cortexM3l_fir_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_cortexM3l_fir_example.uvopt new file mode 100644 index 000000000..35da16305 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_cortexM3l_fir_example.uvopt @@ -0,0 +1,318 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_fir_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 211 + 1 +
382
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_fir_example\../arm_fir_example_f32.c\211 +
+ + 1 + 0 + 214 + 1 +
384
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_fir_example\../arm_fir_example_f32.c\214 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\arm_fir_data.c + arm_fir_data.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_fir_example_f32.c + arm_fir_example_f32.c + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\Common\Source\math_helper.c + math_helper.c + + + + + CMSIS DeviceSupport + 1 + 0 + 0 + + 2 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM3.c + system_ARMCM3.c + + + 2 + 5 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM3.s + startup_ARMCM3.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 6 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + arm_cortexM3l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_fir_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_cortexM3l_fir_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_cortexM3l_fir_example.uvproj new file mode 100644 index 000000000..182decbdc --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_cortexM3l_fir_example.uvproj @@ -0,0 +1,435 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M3 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M3") ESEL ELITTLE + + + + 4349 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM3l_fir_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_fir_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM3 + + ..\..\Common\Include;..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM3\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_fir_data.c + 1 + ..\arm_fir_data.c + + + arm_fir_example_f32.c + 1 + ..\arm_fir_example_f32.c + + + math_helper.c + 1 + ..\..\Common\Source\math_helper.c + + + + + CMSIS Device + + + system_ARMCM3.c + 1 + ..\system_ARMCM3.c + + + startup_ARMCM3.s + 2 + .\startup_ARMCM3.s + + + + + CMSIS DSP_Library + + + arm_cortexM3l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_cortexM4lf_fir_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_cortexM4lf_fir_example.uvopt new file mode 100644 index 000000000..18ec066a0 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_cortexM4lf_fir_example.uvopt @@ -0,0 +1,318 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_fir_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 211 + 1 +
388
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_fir_example\../arm_fir_example_f32.c\211 +
+ + 1 + 0 + 214 + 1 +
390
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_fir_example\../arm_fir_example_f32.c\214 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 77 + 0 + 0 + 0 + 0 + ..\arm_fir_data.c + arm_fir_data.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_fir_example_f32.c + arm_fir_example_f32.c + + + 1 + 3 + 1 + 0 + 0 + 16 + 0 + 0 + 0 + 0 + ..\..\Common\Source\math_helper.c + math_helper.c + + + + + CMSIS DeviceSupport + 1 + 0 + 0 + + 2 + 4 + 1 + 0 + 0 + 43 + 0 + 0 + 0 + 0 + ..\system_ARMCM4.c + system_ARMCM4.c + + + 2 + 5 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM4.s + startup_ARMCM4.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 6 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + arm_cortexM4lf_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_fir_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_cortexM4lf_fir_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_cortexM4lf_fir_example.uvproj new file mode 100644 index 000000000..8d68e4415 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_cortexM4lf_fir_example.uvproj @@ -0,0 +1,435 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M4 FPU + ARM + CLOCK(12000000) CPUTYPE("Cortex-M4") ESEL ELITTLE FPU2 + + + + 5237 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM4lf_fir_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_fir_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM4, __FPU_PRESENT = 1 + + ..\..\Common\Include;..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM4\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_fir_data.c + 1 + ..\arm_fir_data.c + + + arm_fir_example_f32.c + 1 + ..\arm_fir_example_f32.c + + + math_helper.c + 1 + ..\..\Common\Source\math_helper.c + + + + + CMSIS Device + + + system_ARMCM4.c + 1 + ..\system_ARMCM4.c + + + startup_ARMCM4.s + 2 + .\startup_ARMCM4.s + + + + + CMSIS DSP_Library + + + arm_cortexM4lf_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_fir_example.ini b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_fir_example.ini new file mode 100644 index 000000000..06c86a62d --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/arm_fir_example.ini @@ -0,0 +1,12 @@ + +/* This file demonstrates how to Map memory ranges, specify read, write, and execute permissions + + The file can be executed in the following way: + 1) manually from uVision command window (in debug mode) using command: + INCLUIDE arm_fir_lpf_example.ini + +*/ + +// usual initialisation for target setup +MAP 0x20000000, 0x20008000 READ WRITE // allow R/W access to IO space + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/startup_ARMCM0.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/startup_ARMCM0.s new file mode 100644 index 000000000..0acd34611 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/startup_ARMCM0.s @@ -0,0 +1,144 @@ +;/**************************************************************************//** +; * @file startup_ARMCM0.s +; * @brief CMSIS Cortex-M0 Core Device Startup File +; * for CM0 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/startup_ARMCM3.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/startup_ARMCM3.s new file mode 100644 index 000000000..5af584bdc --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/startup_ARMCM3.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM3.s +; * @brief CMSIS Cortex-M3 Core Device Startup File +; * for CM3 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/startup_ARMCM4.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/startup_ARMCM4.s new file mode 100644 index 000000000..09fdbd6ed --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/ARM/startup_ARMCM4.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM4.s +; * @brief CMSIS Cortex-M4 Core Device Startup File +; * for CM4 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/arm_fir_data.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/arm_fir_data.c new file mode 100644 index 000000000..e2e9ad658 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/arm_fir_data.c @@ -0,0 +1,94 @@ +#include "arm_math.h" + +/* ---------------------------------------------------------------------- +** Test input signal contains 1000Hz + 15000 Hz +** ------------------------------------------------------------------- */ + +float32_t testInput_f32_1kHz_15kHz[320] = +{ ++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, +-0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, +-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, ++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, ++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, +-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, ++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, ++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, +-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, +-0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, +-0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, +-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, ++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, ++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, +-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, +-0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, ++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, +-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, +-0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, ++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +}; + +float32_t refOutput[320] = +{ ++0.0000000000f, -0.0010797829f, -0.0007681386f, -0.0001982932f, +0.0000644313f, +0.0020854271f, +0.0036891871f, +0.0015855941f, +-0.0026280805f, -0.0075907658f, -0.0119390538f, -0.0086665968f, +0.0088981202f, +0.0430539279f, +0.0974468742f, +0.1740405600f, ++0.2681416601f, +0.3747720089f, +0.4893362230f, +0.6024154672f, +0.7058740791f, +0.7968348987f, +0.8715901940f, +0.9277881093f, ++0.9682182661f, +0.9934674267f, +1.0012052245f, +0.9925859371f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, ++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, -0.0000000000f, -0.1309866321f, +-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, +-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, +-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, ++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, ++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, ++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, -0.0000000000f, -0.1309866321f, +-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, +-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, +-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, ++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, ++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, ++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, -0.0000000000f, -0.1309866321f, +-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, +-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, +-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, ++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, ++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, ++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, +0.0000000000f, -0.1309866321f, +-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, +-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, +-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, ++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, ++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, ++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, +0.0000000000f, -0.1309866321f, +-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, +-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, +-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, -0.0000000000f, +0.1309866321f, ++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, ++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, ++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, +0.0000000000f, -0.1309866321f, +-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, +-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, +-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, ++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, ++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f +}; + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/arm_fir_example_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/arm_fir_example_f32.c new file mode 100644 index 000000000..37897e094 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/arm_fir_example_f32.c @@ -0,0 +1,220 @@ +/* ---------------------------------------------------------------------- + * Copyright (C) 2010 ARM Limited. All rights reserved. + * + * $Date: 29. November 2010 + * $Revision: V1.0.3 + * + * Project: CMSIS DSP Library + * Title: arm_fir_example_f32.c + * + * Description: Example code demonstrating how an FIR filter can be used + * as a low pass filter. + * + * Target Processor: Cortex-M4/Cortex-M3 + * + * + * Version 1.0.3 2010/11/29 + * Re-organized the CMSIS folders and updated documentation. + * + * Version 1.0.1 2010/10/05 KK + * Production release and review comments incorporated. + * + * Version 1.0.0 2010/09/20 KK + * Production release and review comments incorporated. + * ------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup FIRLPF FIR Lowpass Filter Example + * + * \par Description: + * \par + * Removes high frequency signal components from the input using an FIR lowpass filter. + * The example demonstrates how to configure an FIR filter and then pass data through + * it in a block-by-block fashion. + * \image html FIRLPF_signalflow.gif + * + * \par Algorithm: + * \par + * The input signal is a sum of two sine waves: 1 kHz and 15 kHz. + * This is processed by an FIR lowpass filter with cutoff frequency 6 kHz. + * The lowpass filter eliminates the 15 kHz signal leaving only the 1 kHz sine wave at the output. + * \par + * The lowpass filter was designed using MATLAB with a sample rate of 48 kHz and + * a length of 29 points. + * The MATLAB code to generate the filter coefficients is shown below: + *
+ *     h = fir1(28, 6/24);
+ * 
+ * The first argument is the "order" of the filter and is always one less than the desired length. + * The second argument is the normalized cutoff frequency. This is in the range 0 (DC) to 1.0 (Nyquist). + * A 6 kHz cutoff with a Nyquist frequency of 24 kHz lies at a normalized frequency of 6/24 = 0.25. + * The CMSIS FIR filter function requires the coefficients to be in time reversed order. + *
+ *     fliplr(h)
+ * 
+ * The resulting filter coefficients and are shown below. + * Note that the filter is symmetric (a property of linear phase FIR filters) + * and the point of symmetry is sample 14. Thus the filter will have a delay of + * 14 samples for all frequencies. + * \par + * \image html FIRLPF_coeffs.gif + * \par + * The frequency response of the filter is shown next. + * The passband gain of the filter is 1.0 and it reaches 0.5 at the cutoff frequency 6 kHz. + * \par + * \image html FIRLPF_response.gif + * \par + * The input signal is shown below. + * The left hand side shows the signal in the time domain while the right hand side is a frequency domain representation. + * The two sine wave components can be clearly seen. + * \par + * \image html FIRLPF_input.gif + * \par + * The output of the filter is shown below. The 15 kHz component has been eliminated. + * \par + * \image html FIRLPF_output.gif + * + * \par Variables Description: + * \par + * \li \c testInput_f32_1kHz_15kHz points to the input data + * \li \c refOutput points to the reference output data + * \li \c testOutput points to the test output data + * \li \c firStateF32 points to state buffer + * \li \c firCoeffs32 points to coefficient buffer + * \li \c blockSize number of samples processed at a time + * \li \c numBlocks number of frames + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_fir_init_f32() + * - arm_fir_f32() + * + * Refer + * \link arm_fir_example_f32.c \endlink + * + */ + + +/** \example arm_fir_example_f32.c + */ + +/* ---------------------------------------------------------------------- +** Include Files +** ------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "math_helper.h" + +/* ---------------------------------------------------------------------- +** Macro Defines +** ------------------------------------------------------------------- */ + +#define TEST_LENGTH_SAMPLES 320 +#define SNR_THRESHOLD_F32 140.0f +#define BLOCK_SIZE 32 +#define NUM_TAPS 29 + +/* ------------------------------------------------------------------- + * The input signal and reference output (computed with MATLAB) + * are defined externally in arm_fir_lpf_data.c. + * ------------------------------------------------------------------- */ + +extern float32_t testInput_f32_1kHz_15kHz[TEST_LENGTH_SAMPLES]; +extern float32_t refOutput[TEST_LENGTH_SAMPLES]; + +/* ------------------------------------------------------------------- + * Declare Test output buffer + * ------------------------------------------------------------------- */ + +static float32_t testOutput[TEST_LENGTH_SAMPLES]; + +/* ------------------------------------------------------------------- + * Declare State buffer of size (numTaps + blockSize - 1) + * ------------------------------------------------------------------- */ + +static float32_t firStateF32[BLOCK_SIZE + NUM_TAPS - 1]; + +/* ---------------------------------------------------------------------- +** FIR Coefficients buffer generated using fir1() MATLAB function. +** fir1(28, 6/24) +** ------------------------------------------------------------------- */ + +const float32_t firCoeffs32[NUM_TAPS] = { +-0.0018225230f, -0.0015879294f, +0.0000000000f, +0.0036977508f, +0.0080754303f, +0.0085302217f, -0.0000000000f, -0.0173976984f, +-0.0341458607f, -0.0333591565f, +0.0000000000f, +0.0676308395f, +0.1522061835f, +0.2229246956f, +0.2504960933f, +0.2229246956f, ++0.1522061835f, +0.0676308395f, +0.0000000000f, -0.0333591565f, -0.0341458607f, -0.0173976984f, -0.0000000000f, +0.0085302217f, ++0.0080754303f, +0.0036977508f, +0.0000000000f, -0.0015879294f, -0.0018225230f +}; + +/* ------------------------------------------------------------------ + * Global variables for FIR LPF Example + * ------------------------------------------------------------------- */ + +uint32_t blockSize = BLOCK_SIZE; +uint32_t numBlocks = TEST_LENGTH_SAMPLES/BLOCK_SIZE; + +float32_t snr; + +/* ---------------------------------------------------------------------- + * FIR LPF Example + * ------------------------------------------------------------------- */ + +int32_t main(void) +{ + uint32_t i; + arm_fir_instance_f32 S; + arm_status status; + float32_t *inputF32, *outputF32; + + /* Initialize input and output buffer pointers */ + inputF32 = &testInput_f32_1kHz_15kHz[0]; + outputF32 = &testOutput[0]; + + /* Call FIR init function to initialize the instance structure. */ + arm_fir_init_f32(&S, NUM_TAPS, (float32_t *)&firCoeffs32[0], &firStateF32[0], blockSize); + + /* ---------------------------------------------------------------------- + ** Call the FIR process function for every blockSize samples + ** ------------------------------------------------------------------- */ + + for(i=0; i < numBlocks; i++) + { + arm_fir_f32(&S, inputF32 + (i * blockSize), outputF32 + (i * blockSize), blockSize); + } + + /* ---------------------------------------------------------------------- + ** Compare the generated output against the reference output computed + ** in MATLAB. + ** ------------------------------------------------------------------- */ + + snr = arm_snr_f32(&refOutput[0], &testOutput[0], TEST_LENGTH_SAMPLES); + + if (snr < SNR_THRESHOLD_F32) + { + status = ARM_MATH_TEST_FAILURE; + } + else + { + status = ARM_MATH_SUCCESS; + } + + /* ---------------------------------------------------------------------- + ** Loop here if the signal does not match the reference output. + ** ------------------------------------------------------------------- */ + + if( status != ARM_MATH_SUCCESS) + { + while(1); + } + + while(1); /* main function does not return */ +} + +/** \endlink */ + + + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/system_ARMCM0.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/system_ARMCM0.c new file mode 100644 index 000000000..ece74d2de --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/system_ARMCM0.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM0.c + * @brief CMSIS Cortex-M0 Device System Source File + * for CM0 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM0.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/system_ARMCM3.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/system_ARMCM3.c new file mode 100644 index 000000000..2f5fa0b93 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/system_ARMCM3.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM3.c + * @brief CMSIS Cortex-M3 Device System Source File + * for CM3 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM3.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/system_ARMCM4.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/system_ARMCM4.c new file mode 100644 index 000000000..beaaf6fb8 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_fir_example/system_ARMCM4.c @@ -0,0 +1,81 @@ +/**************************************************************************//** + * @file system_ARMCM4.c + * @brief CMSIS Cortex-M4 Device System Source File + * for CM4 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM4.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2) | /* set CP10 Full Access */ + (3UL << 11*2) ); /* set CP11 Full Access */ + #endif + + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_cortexM0l_graphic_equalizer_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_cortexM0l_graphic_equalizer_example.uvopt new file mode 100644 index 000000000..bcef850a6 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_cortexM0l_graphic_equalizer_example.uvopt @@ -0,0 +1,318 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_graphic_equalizer_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 386 + 1 +
528
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_graphic_equalizer_example\../arm_graphic_equalizer_example_q31.c\386 +
+ + 1 + 0 + 389 + 1 +
530
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_graphic_equalizer_example\../arm_graphic_equalizer_example_q31.c\389 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_graphic_equalizer_example_q31.c + arm_graphic_equalizer_example_q31.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\arm_graphic_equalizer_data.c + arm_graphic_equalizer_data.c + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\Common\Source\math_helper.c + math_helper.c + + + + + CMSIS + 1 + 0 + 0 + + 2 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM0.c + system_ARMCM0.c + + + 2 + 5 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM0.s + startup_ARMCM0.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 6 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + arm_cortexM0l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_graphic_equalizer_example_q31.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_cortexM0l_graphic_equalizer_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_cortexM0l_graphic_equalizer_example.uvproj new file mode 100644 index 000000000..dc567cce0 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_cortexM0l_graphic_equalizer_example.uvproj @@ -0,0 +1,435 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M0 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M0") ESEL ELITTLE + + + + 4803 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM0l_graphic_equalizer_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_graphic_equalizer_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM0 + + ..\..\..\..\Include;..\..\Common\Include;..\..\..\..\..\Device\ARM\ARMCM0\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_graphic_equalizer_example_q31.c + 1 + ..\arm_graphic_equalizer_example_q31.c + + + arm_graphic_equalizer_data.c + 1 + ..\arm_graphic_equalizer_data.c + + + math_helper.c + 1 + ..\..\Common\Source\math_helper.c + + + + + CMSIS Device + + + system_ARMCM0.c + 1 + ..\system_ARMCM0.c + + + startup_ARMCM0.s + 2 + .\startup_ARMCM0.s + + + + + CMSIS DSP_Library + + + arm_cortexM0l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_cortexM3l_graphic_equalizer_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_cortexM3l_graphic_equalizer_example.uvopt new file mode 100644 index 000000000..8dff7c480 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_cortexM3l_graphic_equalizer_example.uvopt @@ -0,0 +1,318 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_graphic_equalizer_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 386 + 1 +
538
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_graphic_equalizer_example\../arm_graphic_equalizer_example_q31.c\386 +
+ + 1 + 0 + 389 + 1 +
540
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_graphic_equalizer_example\../arm_graphic_equalizer_example_q31.c\389 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\arm_graphic_equalizer_data.c + arm_graphic_equalizer_data.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_graphic_equalizer_example_q31.c + arm_graphic_equalizer_example_q31.c + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\Common\Source\math_helper.c + math_helper.c + + + + + CMSIS DeviceSupport + 1 + 0 + 0 + + 2 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM3.c + system_ARMCM3.c + + + 2 + 5 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM3.s + startup_ARMCM3.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 6 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + arm_cortexM3l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_graphic_equalizer_example_q31.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_cortexM3l_graphic_equalizer_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_cortexM3l_graphic_equalizer_example.uvproj new file mode 100644 index 000000000..4ce751585 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_cortexM3l_graphic_equalizer_example.uvproj @@ -0,0 +1,435 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M3 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M3") ESEL ELITTLE + + + + 4349 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM3l_graphic_equalizer_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_graphic_equalizer_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM3 + + ..\..\..\..\Include;..\..\Common\Include;..\..\..\..\..\Device\ARM\ARMCM3\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_graphic_equalizer_data.c + 1 + ..\arm_graphic_equalizer_data.c + + + arm_graphic_equalizer_example_q31.c + 1 + ..\arm_graphic_equalizer_example_q31.c + + + math_helper.c + 1 + ..\..\Common\Source\math_helper.c + + + + + CMSIS Device + + + system_ARMCM3.c + 1 + ..\system_ARMCM3.c + + + startup_ARMCM3.s + 2 + .\startup_ARMCM3.s + + + + + CMSIS DSP_Library + + + arm_cortexM3l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_cortexM4lf_graphic_equalizer_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_cortexM4lf_graphic_equalizer_example.uvopt new file mode 100644 index 000000000..f1246b6e0 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_cortexM4lf_graphic_equalizer_example.uvopt @@ -0,0 +1,318 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_graphic_equalizer_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 386 + 1 +
544
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_graphic_equalizer_example\../arm_graphic_equalizer_example_q31.c\386 +
+ + 1 + 0 + 389 + 1 +
546
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_graphic_equalizer_example\../arm_graphic_equalizer_example_q31.c\389 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\arm_graphic_equalizer_data.c + arm_graphic_equalizer_data.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_graphic_equalizer_example_q31.c + arm_graphic_equalizer_example_q31.c + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\Common\Source\math_helper.c + math_helper.c + + + + + CMSIS DeviceSupport + 1 + 0 + 0 + + 2 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM4.c + system_ARMCM4.c + + + 2 + 5 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM4.s + startup_ARMCM4.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 6 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + arm_cortexM4lf_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_graphic_equalizer_example_q31.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_cortexM4lf_graphic_equalizer_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_cortexM4lf_graphic_equalizer_example.uvproj new file mode 100644 index 000000000..71acd00ed --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_cortexM4lf_graphic_equalizer_example.uvproj @@ -0,0 +1,435 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M4 FPU + ARM + CLOCK(12000000) CPUTYPE("Cortex-M4") ESEL ELITTLE FPU2 + + + + 5237 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM4lf_graphic_equalizer_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_graphic_equalizer_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM4, __FPU_PRESENT = 1 + + ..\..\..\..\Include;..\..\Common\Include;..\..\..\..\..\Device\ARM\ARMCM4\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_graphic_equalizer_data.c + 1 + ..\arm_graphic_equalizer_data.c + + + arm_graphic_equalizer_example_q31.c + 1 + ..\arm_graphic_equalizer_example_q31.c + + + math_helper.c + 1 + ..\..\Common\Source\math_helper.c + + + + + CMSIS Device + + + system_ARMCM4.c + 1 + ..\system_ARMCM4.c + + + startup_ARMCM4.s + 2 + .\startup_ARMCM4.s + + + + + CMSIS DSP_Library + + + arm_cortexM4lf_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_graphic_equalizer_example.ini b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_graphic_equalizer_example.ini new file mode 100644 index 000000000..4e1a3e43d --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/arm_graphic_equalizer_example.ini @@ -0,0 +1,14 @@ + +/* This file demonstrates how to Map memory ranges, specify read, write, and execute permissions + + The file can be executed in the following way: + 1) manually from uVision command window (in debug mode) using command: + INCLUIDE arm_geq_5band_example.ini + +*/ + + +// usual initialisation for target setup +MAP 0x20000000, 0x20008000 READ WRITE // allow R/W access to IO space + + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/startup_ARMCM0.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/startup_ARMCM0.s new file mode 100644 index 000000000..0acd34611 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/startup_ARMCM0.s @@ -0,0 +1,144 @@ +;/**************************************************************************//** +; * @file startup_ARMCM0.s +; * @brief CMSIS Cortex-M0 Core Device Startup File +; * for CM0 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/startup_ARMCM3.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/startup_ARMCM3.s new file mode 100644 index 000000000..5af584bdc --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/startup_ARMCM3.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM3.s +; * @brief CMSIS Cortex-M3 Core Device Startup File +; * for CM3 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/startup_ARMCM4.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/startup_ARMCM4.s new file mode 100644 index 000000000..09fdbd6ed --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/ARM/startup_ARMCM4.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM4.s +; * @brief CMSIS Cortex-M4 Core Device Startup File +; * for CM4 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/arm_graphic_equalizer_data.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/arm_graphic_equalizer_data.c new file mode 100644 index 000000000..b1a314e8b --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/arm_graphic_equalizer_data.c @@ -0,0 +1,94 @@ +#include "arm_math.h" + +float32_t testRefOutput_f32[320] = { + +0.000000000000000000, 0.001898396760225296, 0.004215449094772339, 0.007432077080011368, 0.010948467999696732, 0.015026375651359558, 0.019191544502973557, 0.023574527353048325, +0.027919445186853409, 0.032277785241603851, 0.036551639437675476, 0.040732793509960175, 0.044799156486988068, 0.048710610717535019, 0.052476800978183746, 0.056059073656797409, +0.059482168406248093, 0.062726479023694992, 0.065821025520563126, 0.068763464689254761, 0.071577839553356171, 0.074270240962505341, 0.076856281608343124, 0.079344697296619415, +0.081745062023401260, 0.084067162126302719, 0.086318407207727432, 0.088509257882833481, 0.090647127479314804, 0.092742368578910828, 0.094802625477313995, 0.096837285906076431, +0.098853722214698792, 0.100859899073839190, 0.102862443774938580, 0.104867763817310330, 0.106881409883499150, 0.108908228576183320, 0.110952425748109820, 0.113017357885837550, +0.115105822682380680, 0.117219865322113040, 0.119361080229282380, 0.121530555188655850, 0.123729091137647630, 0.125957202166318890, 0.128215309232473370, 0.130503740161657330, +0.132822841405868530, 0.135173004120588300, 0.137554679065942760, 0.139968376606702800, 0.142414685338735580, 0.144894234836101530, 0.147407654672861100, 0.149955596774816510, +0.152538605034351350, 0.155157200992107390, 0.157811731100082400, 0.160502441227436070, 0.163229387253522870, 0.165992442518472670, 0.168791320174932480, 0.171625509858131410, +0.174494370818138120, 0.177397061139345170, 0.180332608520984650, 0.183299910277128220, 0.186297744512557980, 0.189324837177991870, 0.192379791289567950, 0.195461250841617580, +0.198567759245634080, 0.201697919517755510, 0.204850304871797560, 0.208023533225059510, 0.211216274648904800, 0.214427210390567780, 0.217655111104249950, 0.220898788422346120, +0.224157124757766720, 0.227429077029228210, 0.230713658034801480, 0.234009962528944020, 0.237317133694887160, 0.240634419023990630, 0.243961080908775330, 0.247296508401632310, +0.250640105456113820, 0.253991369158029560, 0.257349837571382520, 0.260715119540691380, 0.264086868613958360, 0.267464816570281980, 0.270848698914051060, 0.274238351732492450, +0.277633611112833020, 0.281034380197525020, 0.284440591931343080, 0.287852220237255100, 0.291269283741712570, 0.294691801071166990, 0.298119872808456420, 0.301553562283515930, +0.304993014782667160, 0.308438356965780260, 0.311889752745628360, 0.315347377210855480, 0.318811416625976560, 0.322282072156667710, 0.325759567320346830, 0.329244095832109450, +0.332735907286405560, 0.336235217750072480, 0.339742250740528110, 0.343257248401641850, 0.346780419349670410, 0.350311983376741410, 0.353852160274982450, 0.357401121407747270, +0.360959105193614960, 0.364526227116584780, 0.368102725595235820, 0.371688675135374070, 0.375284302979707720, 0.378889638930559160, 0.382504884153604510, 0.386130042374134060, +0.389765247702598570, 0.393410529941320420, 0.397065933793783190, 0.400731507688760760, 0.404407206922769550, 0.408093083649873730, 0.411789052188396450, 0.415495119988918300, +0.419211201369762420, 0.422937240451574330, 0.426673140376806260, 0.430418811738491060, 0.434174135327339170, 0.437938995659351350, 0.441713258624076840, 0.445496778935194020, +0.449289388954639430, 0.453090950846672060, 0.456901267170906070, 0.460720170289278030, 0.464547459036111830, 0.468382950872182850, 0.472226426005363460, 0.476077698171138760, +0.479936532676219940, 0.483802750706672670, 0.487676106393337250, 0.491556398570537570, 0.495443399995565410, 0.499336875975131990, 0.503236617892980580, 0.507142387330532070, +0.511053957045078280, 0.514971107244491580, 0.518893606960773470, 0.522821225225925450, 0.526753749698400500, 0.530690938234329220, 0.534632585942745210, 0.538578454405069350, +0.542528338730335240, 0.546481993049383160, 0.550439231097698210, 0.554399792104959490, 0.558363504707813260, 0.562330115586519240, 0.566299438476562500, 0.570271246135234830, +0.574245333671569820, 0.578221492469310760, 0.582199502736330030, 0.586179181933403020, 0.590160276740789410, 0.594142623245716090, 0.598125983029603960, 0.602110169827938080, +0.606094967573881150, 0.610080175101757050, 0.614065583795309070, 0.618050977587699890, 0.622036151587963100, 0.626020893454551700, 0.630004994571208950, 0.633988231420516970, +0.637970402836799620, 0.641951277852058410, 0.645930647850036620, 0.649908289313316350, 0.653883971273899080, 0.657857488840818410, 0.661828581243753430, 0.665797054767608640, +0.669762641191482540, 0.673725124448537830, 0.677684243768453600, 0.681639779359102250, 0.685591462999582290, 0.689539063721895220, 0.693482317030429840, 0.697420965880155560, +0.701354760676622390, 0.705283410847187040, 0.709206689149141310, 0.713124278932809830, 0.717035952955484390, 0.720941375941038130, 0.724840316921472550, 0.728732451796531680, +0.732617516070604320, 0.736495196819305420, 0.740365199744701390, 0.744227230548858640, 0.748080968856811520, 0.751926124095916750, 0.755762357264757160, 0.759589381515979770, +0.763406842947006230, 0.767214450985193250, 0.771011855453252790, 0.774798732250928880, 0.778574761003255840, 0.782339565455913540, 0.786092851310968400, 0.789834223687648770, +0.793563373386859890, 0.797279909253120420, 0.800983514636754990, 0.804673787206411360, 0.808350402861833570, 0.812012966722249980, 0.815661124885082240, 0.819294504821300510, +0.822912722826004030, 0.826515413820743560, 0.830102190375328060, 0.833672653883695600, 0.837226435542106630, 0.840763118118047710, 0.844282336533069610, 0.847783654928207400, +0.851266715675592420, 0.854731071740388870, 0.858176350593566890, 0.861602116376161580, 0.865007970482110980, 0.868393491953611370, 0.871758259832859040, 0.875101849436759950, +0.878423850983381270, 0.881723806262016300, 0.885001312941312790, 0.888255912810564040, 0.891487173736095430, 0.894694659858942030, 0.897877920418977740, 0.901036512106657030, +0.904169965535402300, 0.907277844846248630, 0.910359673202037810, 0.913415014743804930, 0.916443370282649990, 0.919444311410188670, 0.922417331486940380, 0.925361987203359600, +0.928277771919965740, 0.931164238601922990, 0.934020876884460450, 0.936847217381000520, 0.939642757177352910, 0.942407000809907910, 0.945139460265636440, 0.947839632630348210, +0.950507018715143200, 0.953141096979379650, 0.955741371959447860, 0.958307322114706040, 0.960838429629802700, 0.963334184139966960, 0.965794049203395840, 0.968217510730028150, +0.970604017376899720, 0.972953058779239650, 0.975264083594083790, 0.977536566555500030, 0.979769956320524220, 0.981963708996772770, 0.984117280691862110, 0.986230112612247470, +0.988301653414964680, 0.990331344306468960, 0.992318630218505860, 0.994262944906950000, 0.996163722127676010, 0.998020399361848830, 0.999832402914762500, 1.001599155366420700, +1.003320086747407900, 1.004994612187147100, 1.006622135639190700, 1.008202098309993700, 1.009733878076076500, 1.011216927319765100, 1.012650609016418500, 1.014034371823072400, +1.015367589890956900, 1.016649682074785200, 1.017880033701658200, 1.019058048725128200, 1.020183108747005500, 1.021254621446132700, 1.022271949797868700, 1.023234523832798000, + +}; +/* ---------------------------------------------------------------------- +** Test input - logarithmic chirp signal +** ------------------------------------------------------------------- */ + +float32_t testInput_f32[320] = + { + 0.000000000000000061, 0.002622410992047861, 0.005253663973466970, 0.007893770384930297, 0.010542741395035495, 0.013200587895525877, 0.015867320496454066, 0.018542949521290073, +0.021227485001971542, 0.023920936673895138, 0.026623313970853074, 0.029334626019908643, 0.032054881636210709, 0.034784089317753723, 0.037522257240071598, 0.040269393250875855, +0.043025504864628375, 0.045790599257054837, 0.048564683259595690, 0.051347763353792118, 0.054139845665610427, 0.056940935959702531, 0.059751039633601337, 0.062570161711849828, +0.065398306840066575, 0.068235479278943648, 0.071081682898178900, 0.073936921170339814, 0.076801197164660218, 0.079674513540768196, 0.082556872542344922, 0.085448275990715375, +0.088348725278367082, 0.091258221362398390, 0.094176764757897533, 0.097104355531246703, 0.100040993293358240, 0.102986677192832010, 0.105941405909045980, 0.108905177645166230, +0.111877990121087980, 0.114859840566297130, 0.117850725712659680, 0.120850641787131110, 0.123859584504392860, 0.126877549059407400, 0.129904530119898690, 0.132940521818751430, +0.135985517746334080, 0.139039510942737950, 0.142102493889940090, 0.145174458503884160, 0.148255396126476810, 0.151345297517508140, 0.154444152846483080, 0.157551951684374300, +0.160668682995289720, 0.163794335128054890, 0.166928895807713030, 0.170072352126936720, 0.173224690537355760, 0.176385896840798810, 0.179555956180445340, 0.182734853031894270, +0.185922571194139130, 0.189119093780459800, 0.192324403209221870, 0.195538481194587030, 0.198761308737133020, 0.201992866114384050, 0.205233132871247170, 0.208482087810360570, +0.211739708982344370, 0.215005973675965020, 0.218280858408200220, 0.221564338914212730, 0.224856390137231970, 0.228156986218334190, 0.231466100486134670, 0.234783705446379690, +0.238109772771442410, 0.241444273289723230, 0.244787176974952890, 0.248138452935395580, 0.251498069402956710, 0.254865993722190930, 0.258242192339209860, 0.261626630790492030, +0.265019273691591620, 0.268420084725748410, 0.271829026632395280, 0.275246061195565440, 0.278671149232197430, 0.282104250580339830, 0.285545324087251580, 0.288994327597401960, +0.292451217940364990, 0.295915950918612280, 0.299388481295203350, 0.302868762781368150, 0.306356748023990040, 0.309852388592980640, 0.313355634968552230, 0.316866436528383590, +0.320384741534681720, 0.323910497121136620, 0.327443649279772870, 0.330984142847692230, 0.334531921493712690, 0.338086927704900790, 0.341649102772995210, 0.345218386780727190, +0.348794718588032520, 0.352378035818156910, 0.355968274843654950, 0.359565370772282730, 0.363169257432780890, 0.366779867360555120, 0.370397131783246010, 0.374020980606193880, +0.377651342397795690, 0.381288144374756830, 0.384931312387234990, 0.388580770903877330, 0.392236442996751310, 0.395898250326170650, 0.399566113125414350, 0.403239950185338420, +0.406919678838884410, 0.410605214945482130, 0.414296472875345100, 0.417993365493664670, 0.421695804144698540, 0.425403698635752780, 0.429116957221065130, 0.432835486585582130, +0.436559191828633180, 0.440287976447505720, 0.444021742320914510, 0.447760389692375140, 0.451503817153472210, 0.455251921627031540, 0.459004598350192470, 0.462761740857380200, +0.466523240963184150, 0.470288988745136360, 0.474058872526396560, 0.477832778858340690, 0.481610592503056990, 0.485392196415748600, 0.489177471727042850, 0.492966297725213780, +0.496758551838309250, 0.500554109616195060, 0.504352844712508190, 0.508154628866524960, 0.511959331884944910, 0.515766821623591440, 0.519576963969030530, 0.523389622820107150, +0.527204660069405030, 0.531021935584629400, 0.534841307189911630, 0.538662630647041900, 0.542485759636628150, 0.546310545739186690, 0.550136838416161340, 0.553964484990880020, +0.557793330629441700, 0.561623218321546380, 0.565453988861259300, 0.569285480827721570, 0.573117530565801950, 0.576949972166696630, 0.580782637448476910, 0.584615355936589420, +0.588447954844309340, 0.592280259053150400, 0.596112091093235260, 0.599943271123626440, 0.603773616912622660, 0.607602943818024150, 0.611431064767369080, 0.615257790238142090, +0.619082928237961740, 0.622906284284749700, 0.626727661386881850, 0.630546860023327600, 0.634363678123782030, 0.638177911048790960, 0.641989351569874020, 0.645797789849653410, +0.649603013421986450, 0.653404807172108140, 0.657202953316791350, 0.660997231384523490, 0.664787418195706640, 0.668573287842887610, 0.672354611671016960, 0.676131158257749170, +0.679902693393781730, 0.683668980063242500, 0.687429778424128110, 0.691184845788802130, 0.694933936604551380, 0.698676802434213370, 0.702413191936877570, 0.706142850848662460, +0.709865521963579990, 0.713580945114492330, 0.717288857154159800, 0.720988991936399870, 0.724681080297347790, 0.728364850036839040, 0.732040025899910680, 0.735706329558433620, +0.739363479592880620, 0.743011191474238440, 0.746649177546067850, 0.750277147006723990, 0.753894805891742180, 0.757501857056394940, 0.761098000158428880, 0.764682931640995540, +0.768256344715771980, 0.771817929346292900, 0.775367372231492210, 0.778904356789468790, 0.782428563141483460, 0.785939668096195860, 0.789437345134148760, 0.792921264392515420, +0.796391092650110770, 0.799846493312681210, 0.803287126398485760, 0.806712648524170680, 0.810122712890953390, 0.813516969271127150, 0.816895063994893090, 0.820256639937531280, +0.823601336506926020, 0.826928789631450890, 0.830238631748229430, 0.833530491791779850, 0.836803995183058700, 0.840058763818912760, 0.843294416061954100, 0.846510566730867220, +0.849706827091166740, 0.852882804846411770, 0.856038104129895340, 0.859172325496819990, 0.862285065916973510, 0.865375918767918860, 0.868444473828712590, 0.871490317274166260, +0.874513031669661770, 0.877512195966544280, 0.880487385498096800, 0.883438171976119850, 0.886364123488128100, 0.889264804495180530, 0.892139775830360640, 0.894988594697921020, +0.897810814673113080, 0.900605985702712770, 0.903373654106265470, 0.906113362578062300, 0.908824650189867690, 0.911507052394417540, 0.914160101029702910, 0.916783324324059180, +0.919376246902079860, 0.921938389791372770, 0.924469270430179120, 0.926968402675872660, 0.929435296814361430, 0.931869459570409790, 0.934270394118903560, 0.936637600097074200, +0.938970573617708970, 0.941268807283364040, 0.943531790201601380, 0.945759008001275100, 0.947949942849885320, 0.950104073472023970, 0.952220875168933280, 0.954299819839202090, +0.956340376000621160, 0.958342008813221960, 0.960304180103520260, 0.962226348389994210, 0.964107968909812760, 0.965948493646846980, 0.967747371360983650, 0.969504047618768740, +0.971217964825405680, 0.972888562258134030, 0.974515276101013520, 0.976097539481141750, 0.977634782506330400, 0.979126432304266880, 0.980571913063189360, 0.981970646074102120, +0.983322049774557390, 0.984625539794035220, 0.985880529000944810, 0.987086427551279730, 0.988242642938953360, 0.989348580047844540, 0.990403641205582440, 0.991407226239099710, +0.992358732531984260, 0.993257555083659870, 0.994103086570423680, 0.994894717408374870, 0.995631835818261310, 0.996313827892278070, 0.996940077662846650, 0.997509967173408010, + + }; diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/arm_graphic_equalizer_example_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/arm_graphic_equalizer_example_q31.c new file mode 100644 index 000000000..82345d4fd --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/arm_graphic_equalizer_example_q31.c @@ -0,0 +1,395 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 29. November 2010 +* $Revision: V1.0.3 +* +* Project: CMSIS DSP Library +* Title: arm_graphic_equalizer_example_q31.c +* +* Description: Example showing an audio graphic equalizer constructed +* out of Biquad filters. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.1 2010/10/05 KK +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 KK +* Production release and review comments incorporated. +* ------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup GEQ5Band Graphic Audio Equalizer Example + * + * \par Description: + * \par + * This example demonstrates how a 5-band graphic equalizer can be constructed + * using the Biquad cascade functions. + * A graphic equalizer is used in audio applications to vary the tonal quality + * of the audio. + * + * \par Block Diagram: + * \par + * The design is based on a cascade of 5 filter sections. + * \image html GEQ_signalflow.gif + * Each filter section is 4th order and consists of a cascade of two Biquads. + * Each filter has a nominal gain of 0 dB (1.0 in linear units) and + * boosts or cuts signals within a specific frequency range. + * The edge frequencies between the 5 bands are 100, 500, 2000, and 6000 Hz. + * Each band has an adjustable boost or cut in the range of +/- 9 dB. + * For example, the band that extends from 500 to 2000 Hz has the response shown below: + * \par + * \image html GEQ_bandresponse.gif + * \par + * With 1 dB steps, each filter has a total of 19 different settings. + * The filter coefficients for all possible 19 settings were precomputed + * in MATLAB and stored in a table. With 5 different tables, there are + * a total of 5 x 19 = 95 different 4th order filters. + * All 95 responses are shown below: + * \par + * \image html GEQ_allbandresponse.gif + * \par + * Each 4th order filter has 10 coefficents for a grand total of 950 different filter + * coefficients that must be tabulated. The input and output data is in Q31 format. + * For better noise performance, the two low frequency bands are implemented using the high + * precision 32x64-bit Biquad filters. The remaining 3 high frequency bands use standard + * 32x32-bit Biquad filters. The input signal used in the example is a logarithmic chirp. + * \par + * \image html GEQ_inputchirp.gif + * \par + * The array bandGains specifies the gain in dB to apply in each band. + * For example, if bandGains={0, -3, 6, 4, -6}; then the output signal will be: + * \par + * \image html GEQ_outputchirp.gif + * \par + * \note The output chirp signal follows the gain or boost of each band. + * \par + * + * \par Variables Description: + * \par + * \li \c testInput_f32 points to the input data + * \li \c testRefOutput_f32 points to the reference output data + * \li \c testOutput points to the test output data + * \li \c inputQ31 temporary input buffer + * \li \c outputQ31 temporary output buffer + * \li \c biquadStateBand1Q31 points to state buffer for band1 + * \li \c biquadStateBand2Q31 points to state buffer for band2 + * \li \c biquadStateBand3Q31 points to state buffer for band3 + * \li \c biquadStateBand4Q31 points to state buffer for band4 + * \li \c biquadStateBand5Q31 points to state buffer for band5 + * \li \c coeffTable points to coefficient buffer for all bands + * \li \c gainDB gain buffer which has gains applied for all the bands + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_biquad_cas_df1_32x64_init_q31() + * - arm_biquad_cas_df1_32x64_q31() + * - arm_biquad_cascade_df1_init_q31() + * - arm_biquad_cascade_df1_q31() + * - arm_scale_q31() + * - arm_scale_f32() + * - arm_float_to_q31() + * - arm_q31_to_float() + * + * Refer + * \link arm_graphic_equalizer_example_q31.c \endlink + * + */ + + +/** \example arm_graphic_equalizer_example_q31.c + */ + + +#include "arm_math.h" +#include "math_helper.h" + +/* Length of the overall data in the test */ +#define TESTLENGTH 320 + +/* Block size for the underlying processing */ +#define BLOCKSIZE 32 + +/* Total number of blocks to run */ +#define NUMBLOCKS (TESTLENGTH/BLOCKSIZE) + +/* Number of 2nd order Biquad stages per filter */ +#define NUMSTAGES 2 + +#define SNR_THRESHOLD_F32 98 + +/* ------------------------------------------------------------------- + * External Declarations for Input and Output buffers + * ------------------------------------------------------------------- */ + +extern float32_t testInput_f32[TESTLENGTH]; +static float32_t testOutput[TESTLENGTH]; + +extern float32_t testRefOutput_f32[TESTLENGTH]; + +/* ---------------------------------------------------------------------- +** Q31 state buffers for Band1, Band2, Band3, Band4, Band5 +** ------------------------------------------------------------------- */ + +static q63_t biquadStateBand1Q31[4 * 2]; +static q63_t biquadStateBand2Q31[4 * 2]; +static q31_t biquadStateBand3Q31[4 * 2]; +static q31_t biquadStateBand4Q31[4 * 2]; +static q31_t biquadStateBand5Q31[4 * 2]; + +/* ---------------------------------------------------------------------- +** Q31 input and output buffers +** ------------------------------------------------------------------- */ + +q31_t inputQ31[BLOCKSIZE]; +q31_t outputQ31[BLOCKSIZE]; + +/* ---------------------------------------------------------------------- +** Entire coefficient table. There are 10 coefficients per 4th order Biquad +** cascade filter. The first 10 coefficients correspond to the -9 dB gain +** setting of band 1; the next 10 coefficient correspond to the -8 dB gain +** setting of band 1; and so on. There are 10*19=190 coefficients in total +** for band 1 (gains = -9, -8, -7, ..., 9). After this come the 190 coefficients +** for band 2. +** +** The coefficients are in Q29 format and require a postShift of 2. +** ------------------------------------------------------------------- */ + +const q31_t coeffTable[950] = { + + /* Band 1, -9 dB gain */ + 535576962, -1071153923, 535576962, 1073741824, -536870912, 535576962, -1063501998, 527979313, 1060865294, -524146981, + /* Band 1, -8 dB gain */ + 535723226, -1071446451, 535723226, 1073741824, -536870912, 535723226, -1063568947, 527903217, 1061230578, -524503778, + 535868593, -1071737186, 535868593, 1073741824, -536870912, 535868593, -1063627467, 527819780, 1061585502, -524850686, + 536013181, -1072026363, 536013181, 1073741824, -536870912, 536013181, -1063677598, 527728935, 1061930361, -525187972, + 536157109, -1072314217, 536157109, 1073741824, -536870912, 536157109, -1063719372, 527630607, 1062265438, -525515897, + 536300492, -1072600983, 536300492, 1073741824, -536870912, 536300492, -1063752815, 527524720, 1062591011, -525834716, + 536443447, -1072886894, 536443447, 1073741824, -536870912, 536443447, -1063777945, 527411186, 1062907350, -526144676, + 536586091, -1073172183, 536586091, 1073741824, -536870912, 536586091, -1063794775, 527289917, 1063214717, -526446017, + 536728541, -1073457082, 536728541, 1073741824, -536870912, 536728541, -1063803308, 527160815, 1063513366, -526738975, + 536870912, -1073741824, 536870912, 1073741824, -536870912, 536870912, -1063803543, 527023777, 1063803543, -527023777, + 537013321, -1074026642, 537013321, 1073741824, -536870912, 537013321, -1063795470, 526878696, 1064085490, -527300648, + 537155884, -1074311768, 537155884, 1073741824, -536870912, 537155884, -1063779073, 526725455, 1064359439, -527569803, + 537298718, -1074597435, 537298718, 1073741824, -536870912, 537298718, -1063754328, 526563934, 1064625617, -527831454, + 537441939, -1074883878, 537441939, 1073741824, -536870912, 537441939, -1063721205, 526394005, 1064884245, -528085806, + 537585666, -1075171331, 537585666, 1073741824, -536870912, 537585666, -1063679666, 526215534, 1065135536, -528333059, + 537730015, -1075460030, 537730015, 1073741824, -536870912, 537730015, -1063629666, 526028380, 1065379699, -528573409, + 537875106, -1075750212, 537875106, 1073741824, -536870912, 537875106, -1063571152, 525832396, 1065616936, -528807045, + 538021057, -1076042114, 538021057, 1073741824, -536870912, 538021057, -1063504065, 525627429, 1065847444, -529034151, + 538167989, -1076335977, 538167989, 1073741824, -536870912, 538167989, -1063428338, 525413317, 1066071412, -529254907, + + /* Band 2, -9 dB gain */ + 531784976, -1055497692, 523873415, 1066213307, -529420241, 531784976, -1040357886, 509828014, 1028908252, -494627367, + /* Band 2, -8 dB gain */ + 532357636, -1056601982, 524400080, 1066115844, -529326645, 532357636, -1040623406, 509562600, 1030462237, -496062122, + 532927392, -1057707729, 524931110, 1066024274, -529239070, 532927392, -1040848253, 509262081, 1031969246, -497457090, + 533494678, -1058816094, 525467240, 1065939047, -529157961, 533494678, -1041032161, 508925950, 1033429976, -498812573, + 534059929, -1059928204, 526009170, 1065860582, -529083734, 534059929, -1041174868, 508553717, 1034845124, -500128887, + 534623580, -1061045148, 526557561, 1065789260, -529016764, 534623580, -1041276126, 508144920, 1036215393, -501406373, + 535186068, -1062167969, 527113032, 1065725420, -528957385, 535186068, -1041335703, 507699125, 1037541500, -502645399, + 535747827, -1063297666, 527676151, 1065669351, -528905879, 535747827, -1041353386, 507215934, 1038824183, -503846368, + 536309295, -1064435183, 528247436, 1065621289, -528862476, 536309295, -1041328990, 506694984, 1040064203, -505009724, + 536870912, -1065581413, 528827349, 1065581413, -528827349, 536870912, -1041262354, 506135953, 1041262354, -506135953, + 537433117, -1066737194, 529416295, 1065549847, -528800610, 537433117, -1041153346, 505538564, 1042419457, -507225588, + 537996352, -1067903307, 530014622, 1065526651, -528782316, 537996352, -1041001864, 504902578, 1043536370, -508279208, + 538561061, -1069080480, 530622620, 1065511830, -528772462, 538561061, -1040807833, 504227800, 1044613981, -509297437, + 539127690, -1070269387, 531240527, 1065505333, -528770987, 539127690, -1040571205, 503514074, 1045653211, -510280946, + 539696690, -1071470656, 531868525, 1065507054, -528777778, 539696690, -1040291951, 502761277, 1046655011, -511230450, + 540268512, -1072684867, 532506750, 1065516837, -528792672, 540268512, -1039970063, 501969320, 1047620358, -512146700, + 540843613, -1073912567, 533155297, 1065534483, -528815459, 540843613, -1039605542, 501138139, 1048550251, -513030484, + 541422451, -1075154268, 533814224, 1065559750, -528845892, 541422451, -1039198394, 500267687, 1049445708, -513882621, + 542005489, -1076410460, 534483561, 1065592362, -528883686, 542005489, -1038748624, 499357932, 1050307760, -514703956, + 518903861, -1001986830, 486725277, 1037235801, -502367695, 518903861, -945834422, 446371043, 902366163, -400700571, + 520899989, -1005630916, 488289126, 1036926846, -502147311, 520899989, -946490935, 445581846, 907921945, -404936158, + 522893209, -1009290002, 489869792, 1036650484, -501961419, 522893209, -947006359, 444685310, 913306106, -409075225, + 524884763, -1012968199, 491470256, 1036407567, -501810737, 524884763, -947377809, 443679533, 918521018, -413116221, + 526875910, -1016669649, 493093518, 1036198712, -501695739, 526875910, -947602324, 442562672, 923569247, -417057897, + 528867927, -1020398503, 494742575, 1036024293, -501616651, 528867927, -947676875, 441332970, 928453558, -420899319, + 530862111, -1024158905, 496420407, 1035884447, -501573457, 530862111, -947598385, 439988777, 933176909, -424639872, + 532859778, -1027954970, 498129955, 1035779077, -501565907, 532859778, -947363742, 438528571, 937742446, -428279254, + 534862260, -1031790763, 499874098, 1035707863, -501593525, 534862260, -946969823, 436950987, 942153486, -431817474, + 536870912, -1035670279, 501655630, 1035670279, -501655630, 536870912, -946413508, 435254839, 946413508, -435254839, + 538887107, -1039597419, 503477238, 1035665609, -501751354, 538887107, -945691703, 433439146, 950526127, -438591937, + 540912240, -1043575967, 505341475, 1035692963, -501879659, 540912240, -944801359, 431503152, 954495080, -441829621, + 542947726, -1047609569, 507250741, 1035751307, -502039364, 542947726, -943739490, 429446349, 958324201, -444968987, + 544995000, -1051701717, 509207261, 1035839473, -502229165, 544995000, -942503190, 427268492, 962017400, -448011351, + 547055523, -1055855728, 511213065, 1035956193, -502447657, 547055523, -941089647, 424969617, 965578640, -450958226, + 549130774, -1060074734, 513269973, 1036100110, -502693359, 549130774, -939496155, 422550049, 969011913, -453811298, + 551222259, -1064361672, 515379585, 1036269804, -502964731, 551222259, -937720119, 420010407, 972321228, -456572401, + 553331507, -1068719280, 517543273, 1036463810, -503260192, 553331507, -935759057, 417351601, 975510582, -459243495, + 555460072, -1073150100, 519762181, 1036680633, -503578144, 555460072, -933610600, 414574832, 978583948, -461826644, + 494084017, -851422604, 404056273, 930151631, -423619864, 494084017, -673714108, 339502486, 561843007, -265801750, + 498713542, -859177141, 406587077, 929211656, -423786402, 498713542, -673274906, 338185129, 573719128, -272222942, + 503369016, -867012190, 409148384, 928362985, -424054784, 503369016, -672533059, 336693984, 585290277, -278599028, + 508052536, -874935599, 411746438, 927604291, -424422151, 508052536, -671478538, 335026905, 596558312, -284920289, + 512766286, -882955583, 414387826, 926933782, -424885216, 512766286, -670100998, 333182045, 607525792, -291177811, + 517512534, -891080712, 417079474, 926349262, -425440318, 517512534, -668389789, 331157902, 618195914, -297363485, + 522293635, -899319903, 419828635, 925848177, -426083491, 522293635, -666333963, 328953368, 628572440, -303470012, + 527112032, -907682405, 422642886, 925427679, -426810526, 527112032, -663922286, 326567785, 638659631, -309490882, + 531970251, -916177781, 425530105, 925084675, -427617023, 531970251, -661143261, 324000998, 648462180, -315420352, + 536870912, -924815881, 428498454, 924815881, -428498454, 536870912, -657985147, 321253420, 657985147, -321253420, + 541816719, -933606817, 431556352, 924617870, -429450209, 541816719, -654435997, 318326093, 667233900, -326985786, + 546810467, -942560921, 434712438, 924487114, -430467639, 546810467, -650483688, 315220754, 676214053, -332613816, + 551855042, -951688708, 437975532, 924420027, -431546101, 551855042, -646115970, 311939896, 684931422, -338134495, + 556953421, -961000826, 441354588, 924413001, -432680993, 556953421, -641320513, 308486839, 693391970, -343545389, + 562108672, -970508005, 444858642, 924462435, -433867780, 562108672, -636084967, 304865786, 701601770, -348844597, + 567323959, -980220994, 448496743, 924564764, -435102022, 567323959, -630397020, 301081886, 709566963, -354030710, + 572602539, -990150500, 452277894, 924716482, -436379394, 572602539, -624244471, 297141281, 717293726, -359102767, + 577947763, -1000307125, 456210977, 924914158, -437695705, 577947763, -617615296, 293051155, 724788245, -364060214, + 583363084, -1010701292, 460304674, 925154455, -439046908, 583363084, -610497723, 288819761, 732056685, -368902865, + 387379495, -506912469, 196933274, 840112184, -347208270, 387379495, 506912469, 196933274, -840112184, -347208270, + 401658082, -532275898, 207149427, 833765363, -343175316, 401658082, 532275898, 207149427, -833765363, -343175316, + 416472483, -558722695, 217902617, 827270154, -339107319, 416472483, 558722695, 217902617, -827270154, -339107319, + 431841949, -586290861, 229212798, 820624988, -335007540, 431841949, 586290861, 229212798, -820624988, -335007540, + 447786335, -615019650, 241100489, 813828443, -330879528, 447786335, 615019650, 241100489, -813828443, -330879528, + 464326111, -644949597, 253586805, 806879270, -326727141, 464326111, 644949597, 253586805, -806879270, -326727141, + 481482377, -676122557, 266693475, 799776409, -322554559, 481482377, 676122557, 266693475, -799776409, -322554559, + 499276882, -708581728, 280442865, 792519013, -318366296, 499276882, 708581728, 280442865, -792519013, -318366296, + 517732032, -742371685, 294857996, 785106465, -314167221, 517732032, 742371685, 294857996, -785106465, -314167221, + 536870912, -777538408, 309962566, 777538408, -309962566, 536870912, 777538408, 309962566, -777538408, -309962566, + 556717294, -814129313, 325780968, 769814766, -305757943, 556717294, 814129313, 325780968, -769814766, -305757943, + 577295658, -852193284, 342338310, 761935777, -301559360, 577295658, 852193284, 342338310, -761935777, -301559360, + 598631206, -891780698, 359660433, 753902014, -297373230, 598631206, 891780698, 359660433, -753902014, -297373230, + 620749877, -932943463, 377773927, 745714425, -293206383, 620749877, 932943463, 377773927, -745714425, -293206383, + 643678365, -975735041, 396706151, 737374355, -289066077, 643678365, 975735041, 396706151, -737374355, -289066077, + 667444134, -1020210487, 416485252, 728883588, -284960004, 667444134, 1020210487, 416485252, -728883588, -284960004, + 692075438, -1066426476, 437140179, 720244375, -280896294, 692075438, 1066426476, 437140179, -720244375, -280896294, + 717601336, -1114441339, 458700704, 711459472, -276883515, 717601336, 1114441339, 458700704, -711459472, -276883515, + 744051710, -1164315096, 481197437, 702532174, -272930673, 744051710, 1164315096, 481197437, -702532174, -272930673 + +}; + +/* ---------------------------------------------------------------------- +** Desired gains, in dB, per band +** ------------------------------------------------------------------- */ + +int gainDB[5] = {0, -3, 6, 4, -6}; + +float32_t snr; + + +/* ---------------------------------------------------------------------- + * Graphic equalizer Example + * ------------------------------------------------------------------- */ + +int32_t main(void) +{ + float32_t *inputF32, *outputF32; + arm_biquad_cas_df1_32x64_ins_q31 S1; + arm_biquad_cas_df1_32x64_ins_q31 S2; + arm_biquad_casd_df1_inst_q31 S3; + arm_biquad_casd_df1_inst_q31 S4; + arm_biquad_casd_df1_inst_q31 S5; + int i; + int32_t status; + + inputF32 = &testInput_f32[0]; + outputF32 = &testOutput[0]; + + /* Initialize the state and coefficient buffers for all Biquad sections */ + + arm_biquad_cas_df1_32x64_init_q31(&S1, NUMSTAGES, + (q31_t *) &coeffTable[190*0 + 10*(gainDB[0] + 9)], + &biquadStateBand1Q31[0], 2); + + arm_biquad_cas_df1_32x64_init_q31(&S2, NUMSTAGES, + (q31_t *) &coeffTable[190*1 + 10*(gainDB[1] + 9)], + &biquadStateBand2Q31[0], 2); + + arm_biquad_cascade_df1_init_q31(&S3, NUMSTAGES, + (q31_t *) &coeffTable[190*2 + 10*(gainDB[2] + 9)], + &biquadStateBand3Q31[0], 2); + + arm_biquad_cascade_df1_init_q31(&S4, NUMSTAGES, + (q31_t *) &coeffTable[190*3 + 10*(gainDB[3] + 9)], + &biquadStateBand4Q31[0], 2); + + arm_biquad_cascade_df1_init_q31(&S5, NUMSTAGES, + (q31_t *) &coeffTable[190*4 + 10*(gainDB[4] + 9)], + &biquadStateBand5Q31[0], 2); + + + /* Call the process functions and needs to change filter coefficients + for varying the gain of each band */ + + for(i=0; i < NUMBLOCKS; i++) + { + + /* ---------------------------------------------------------------------- + ** Convert block of input data from float to Q31 + ** ------------------------------------------------------------------- */ + + arm_float_to_q31(inputF32 + (i*BLOCKSIZE), inputQ31, BLOCKSIZE); + + /* ---------------------------------------------------------------------- + ** Scale down by 1/8. This provides additional headroom so that the + ** graphic EQ can apply gain. + ** ------------------------------------------------------------------- */ + + arm_scale_q31(inputQ31, 0x7FFFFFFF, -3, inputQ31, BLOCKSIZE); + + /* ---------------------------------------------------------------------- + ** Call the Q31 Biquad Cascade DF1 32x64 process function for band1, band2 + ** ------------------------------------------------------------------- */ + + arm_biquad_cas_df1_32x64_q31(&S1, inputQ31, outputQ31, BLOCKSIZE); + arm_biquad_cas_df1_32x64_q31(&S2, outputQ31, outputQ31, BLOCKSIZE); + + /* ---------------------------------------------------------------------- + ** Call the Q31 Biquad Cascade DF1 process function for band3, band4, band5 + ** ------------------------------------------------------------------- */ + + arm_biquad_cascade_df1_q31(&S3, outputQ31, outputQ31, BLOCKSIZE); + arm_biquad_cascade_df1_q31(&S4, outputQ31, outputQ31, BLOCKSIZE); + arm_biquad_cascade_df1_q31(&S5, outputQ31, outputQ31, BLOCKSIZE); + + /* ---------------------------------------------------------------------- + ** Convert Q31 result back to float + ** ------------------------------------------------------------------- */ + + arm_q31_to_float(outputQ31, outputF32 + (i * BLOCKSIZE), BLOCKSIZE); + + /* ---------------------------------------------------------------------- + ** Scale back up + ** ------------------------------------------------------------------- */ + + arm_scale_f32(outputF32 + (i * BLOCKSIZE), 8.0f, outputF32 + (i * BLOCKSIZE), BLOCKSIZE); + }; + + snr = arm_snr_f32(testRefOutput_f32, testOutput, TESTLENGTH); + + if (snr < SNR_THRESHOLD_F32) + { + status = ARM_MATH_TEST_FAILURE; + } + else + { + status = ARM_MATH_SUCCESS; + } + + /* ---------------------------------------------------------------------- + ** Loop here if the signal does not match the reference output. + ** ------------------------------------------------------------------- */ + + if( status != ARM_MATH_SUCCESS) + { + while(1); + } + + while(1); /* main function does not return */ +} + +/** \endlink */ + + + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/system_ARMCM0.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/system_ARMCM0.c new file mode 100644 index 000000000..ece74d2de --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/system_ARMCM0.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM0.c + * @brief CMSIS Cortex-M0 Device System Source File + * for CM0 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM0.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/system_ARMCM3.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/system_ARMCM3.c new file mode 100644 index 000000000..2f5fa0b93 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/system_ARMCM3.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM3.c + * @brief CMSIS Cortex-M3 Device System Source File + * for CM3 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM3.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/system_ARMCM4.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/system_ARMCM4.c new file mode 100644 index 000000000..beaaf6fb8 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_graphic_equalizer_example/system_ARMCM4.c @@ -0,0 +1,81 @@ +/**************************************************************************//** + * @file system_ARMCM4.c + * @brief CMSIS Cortex-M4 Device System Source File + * for CM4 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM4.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2) | /* set CP10 Full Access */ + (3UL << 11*2) ); /* set CP11 Full Access */ + #endif + + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_cortexM0l_linear_interp_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_cortexM0l_linear_interp_example.uvopt new file mode 100644 index 000000000..082f09ce2 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_cortexM0l_linear_interp_example.uvopt @@ -0,0 +1,318 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_linear_interp_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 175 + 1 +
476
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_linear_interp_example\../arm_linear_interp_example_f32.c\175 +
+ + 1 + 0 + 178 + 1 +
478
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_linear_interp_example\../arm_linear_interp_example_f32.c\178 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_linear_interp_example_f32.c + arm_linear_interp_example_f32.c + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\arm_linear_interp_data.c + arm_linear_interp_data.c + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\Common\Source\math_helper.c + math_helper.c + + + + + CMSIS + 1 + 0 + 0 + + 2 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM0.c + system_ARMCM0.c + + + 2 + 6 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM0.s + startup_ARMCM0.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 0 + 1 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + arm_cortexM0l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_linear_interp_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_cortexM0l_linear_interp_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_cortexM0l_linear_interp_example.uvproj new file mode 100644 index 000000000..7d3baf1be --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_cortexM0l_linear_interp_example.uvproj @@ -0,0 +1,435 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M0 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M0") ESEL ELITTLE + + + + 4803 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM0l_linear_interp_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_linear_interp_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM0 + + ..\..\..\..\Include;..\..\Common\Include;..\..\..\..\..\Device\ARM\ARMCM0\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_linear_interp_example_f32.c + 1 + ..\arm_linear_interp_example_f32.c + + + arm_linear_interp_data.c + 1 + ..\arm_linear_interp_data.c + + + math_helper.c + 1 + ..\..\Common\Source\math_helper.c + + + + + CMSIS Device + + + system_ARMCM0.c + 1 + ..\system_ARMCM0.c + + + startup_ARMCM0.s + 2 + .\startup_ARMCM0.s + + + + + CMSIS DSP_Library + + + arm_cortexM0l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_cortexM3l_linear_interp_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_cortexM3l_linear_interp_example.uvopt new file mode 100644 index 000000000..f5c5cfccd --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_cortexM3l_linear_interp_example.uvopt @@ -0,0 +1,318 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_linear_interp_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 175 + 1 +
454
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_linear_interp_example\../arm_linear_interp_example_f32.c\175 +
+ + 1 + 0 + 178 + 1 +
456
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_linear_interp_example\../arm_linear_interp_example_f32.c\178 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_linear_interp_example_f32.c + arm_linear_interp_example_f32.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\arm_linear_interp_data.c + arm_linear_interp_data.c + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\Common\Source\math_helper.c + math_helper.c + + + + + CMSIS DeviceSupport + 1 + 0 + 0 + + 2 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM3.c + system_ARMCM3.c + + + 2 + 5 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM3.s + startup_ARMCM3.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 6 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + arm_cortexM3l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_linear_interp_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_cortexM3l_linear_interp_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_cortexM3l_linear_interp_example.uvproj new file mode 100644 index 000000000..aa6b6d647 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_cortexM3l_linear_interp_example.uvproj @@ -0,0 +1,435 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M3 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M3") ESEL ELITTLE + + + + 4349 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM3l_linear_interp_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_linear_interp_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM3 + + ..\..\..\..\Include;..\..\Common\Include;..\..\..\..\..\Device\ARM\ARMCM3\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_linear_interp_example_f32.c + 1 + ..\arm_linear_interp_example_f32.c + + + arm_linear_interp_data.c + 1 + ..\arm_linear_interp_data.c + + + math_helper.c + 1 + ..\..\Common\Source\math_helper.c + + + + + CMSIS Device + + + system_ARMCM3.c + 1 + ..\system_ARMCM3.c + + + startup_ARMCM3.s + 2 + .\startup_ARMCM3.s + + + + + CMSIS DSP_Library + + + arm_cortexM3l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_cortexM4lf_linear_interp_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_cortexM4lf_linear_interp_example.uvopt new file mode 100644 index 000000000..05a822ea2 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_cortexM4lf_linear_interp_example.uvopt @@ -0,0 +1,318 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_linear_interp_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 175 + 1 +
468
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_linear_interp_example\../arm_linear_interp_example_f32.c\175 +
+ + 1 + 0 + 178 + 1 +
470
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_linear_interp_example\../arm_linear_interp_example_f32.c\178 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_linear_interp_example_f32.c + arm_linear_interp_example_f32.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\arm_linear_interp_data.c + arm_linear_interp_data.c + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\Common\Source\math_helper.c + math_helper.c + + + + + CMSIS DeviceSupport + 1 + 0 + 0 + + 2 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM4.c + system_ARMCM4.c + + + 2 + 5 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM4.s + startup_ARMCM4.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 6 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + arm_cortexM4lf_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_linear_interp_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_cortexM4lf_linear_interp_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_cortexM4lf_linear_interp_example.uvproj new file mode 100644 index 000000000..24aef81b3 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_cortexM4lf_linear_interp_example.uvproj @@ -0,0 +1,435 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M4 FPU + ARM + CLOCK(12000000) CPUTYPE("Cortex-M4") ESEL ELITTLE FPU2 + + + + 5237 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM4lf_linear_interp_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_linear_interp_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM4, __FPU_PRESENT = 1 + + ..\..\..\..\Include;..\..\Common\Include;..\..\..\..\..\Device\ARM\ARMCM4\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_linear_interp_example_f32.c + 1 + ..\arm_linear_interp_example_f32.c + + + arm_linear_interp_data.c + 1 + ..\arm_linear_interp_data.c + + + math_helper.c + 1 + ..\..\Common\Source\math_helper.c + + + + + CMSIS Device + + + system_ARMCM4.c + 1 + ..\system_ARMCM4.c + + + startup_ARMCM4.s + 2 + .\startup_ARMCM4.s + + + + + CMSIS DSP_Library + + + arm_cortexM4lf_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_linear_interp_example.ini b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_linear_interp_example.ini new file mode 100644 index 000000000..63e18b0b2 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/arm_linear_interp_example.ini @@ -0,0 +1,14 @@ + +/* This file demonstrates how to Map memory ranges, specify read, write, and execute permissions + + The file can be executed in the following way: + 1) manually from uVision command window (in debug mode) using command: + INCLUIDE arm_linear_interp_example.ini + +*/ + + +// usual initialisation for target setup +MAP 0x20000000, 0x20008000 READ WRITE // allow R/W access to IO space + + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/startup_ARMCM0.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/startup_ARMCM0.s new file mode 100644 index 000000000..0acd34611 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/startup_ARMCM0.s @@ -0,0 +1,144 @@ +;/**************************************************************************//** +; * @file startup_ARMCM0.s +; * @brief CMSIS Cortex-M0 Core Device Startup File +; * for CM0 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/startup_ARMCM3.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/startup_ARMCM3.s new file mode 100644 index 000000000..5af584bdc --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/startup_ARMCM3.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM3.s +; * @brief CMSIS Cortex-M3 Core Device Startup File +; * for CM3 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/startup_ARMCM4.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/startup_ARMCM4.s new file mode 100644 index 000000000..09fdbd6ed --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/ARM/startup_ARMCM4.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM4.s +; * @brief CMSIS Cortex-M4 Core Device Startup File +; * for CM4 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/arm_linear_interp_data.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/arm_linear_interp_data.c new file mode 100644 index 000000000..464ce85c4 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/arm_linear_interp_data.c @@ -0,0 +1,23576 @@ + +/* ---------------------------------------------------------------------- +* Table generated from following MATLAB Command +* x = -pi: 0.00005 : (2*pi - 0.00005); +* y = sin(x); +* where pi value is 3.141592653589793 +* --------------------------------------------------------------------*/ + +const float arm_linear_interep_table[188495] = { + + +-0.000000000000000122, -0.000049999999979173, -0.000099999999833667, -0.000149999999437717, -0.000199999998666767, -0.000249999997395817, -0.000299999995500311, -0.000349999992854362, +-0.000399999989333412, -0.000449999984812462, -0.000499999979166956, -0.000549999972271007, -0.000599999964000057, -0.000649999954229107, -0.000699999942833602, -0.000749999929687653, +-0.000799999914666704, -0.000849999897645755, -0.000899999878500250, -0.000949999857104302, -0.000999999833333354, -0.001049999807062851, -0.001099999778166904, -0.001149999746520957, +-0.001199999712000011, -0.001249999674479510, -0.001299999633833566, -0.001349999589937622, -0.001399999542666680, -0.001449999491896183, -0.001499999437500243, -0.001549999379354304, +-0.001599999317333367, -0.001649999251312876, -0.001699999181166942, -0.001749999106771011, -0.001799999028000082, -0.001849998944729599, -0.001899998856833675, -0.001949998764187754, +-0.001999998666666836, -0.002049998564146365, -0.002099998456500453, -0.002149998343604546, -0.002199998225334087, -0.002249998101563188, -0.002299997972167294, -0.002349997837021405, +-0.002399997696000966, -0.002449997548980088, -0.002499997395834216, -0.002549997236438351, -0.002599997070667937, -0.002649996898397086, -0.002699996719501243, -0.002749996533855408, +-0.002799996341335026, -0.002849996141814208, -0.002899995935168401, -0.002949995721272604, -0.002999995500002261, -0.003049995271231486, -0.003099995034835722, -0.003149994790690415, +-0.003199994538669677, -0.003249994278648952, -0.003299994010503243, -0.003349993734107991, -0.003399993449337312, -0.003449993156066649, -0.003499992854171003, -0.003549992543525819, +-0.003599992224005209, -0.003649991895484619, -0.003699991557839049, -0.003749991210943944, -0.003799990854673418, -0.003849990488902914, -0.003899990113507434, -0.003949989728362423, +-0.003999989333341993, -0.004049988928321590, -0.004099988513176658, -0.004149988087781312, -0.004199987652010995, -0.004249987205740709, -0.004299986748845899, -0.004349986281200678, +-0.004399985802680492, -0.004449985313160341, -0.004499984812515671, -0.004549984300620594, -0.004599983777350557, -0.004649983242580561, -0.004699982696186050, -0.004749982138041138, +-0.004799981568021272, -0.004849980986001451, -0.004899980391857122, -0.004949979785462398, -0.004999979166692725, -0.005049978535423547, -0.005099977891528979, -0.005149977234884466, +-0.005199976565365011, -0.005249975882846058, -0.005299975187201721, -0.005349974478307446, -0.005399973756038235, -0.005449973020269535, -0.005499972270875456, -0.005549971507731448, +-0.005599970730712511, -0.005649969939694091, -0.005699969134550302, -0.005749968315156590, -0.005799967481387958, -0.005849966633119851, -0.005899965770226383, -0.005949964892583000, +-0.005999964000064706, -0.006049963092546945, -0.006099962169903833, -0.006149961232010816, -0.006199960278743339, -0.006249959309975518, -0.006299958325582797, -0.006349957325440182, +-0.006399956309423117, -0.006449955277405718, -0.006499954229263430, -0.006549953164871257, -0.006599952084104644, -0.006649950986837708, -0.006699949872945895, -0.006749948742304206, +-0.006799947594788089, -0.006849946430271660, -0.006899945248630365, -0.006949944049739206, -0.006999942833473632, -0.007049941599707755, -0.007099940348317025, -0.007149939079176889, +-0.007199937792161461, -0.007249936487146187, -0.007299935164006074, -0.007349933822616566, -0.007399932462851779, -0.007449931084587162, -0.007499929687697716, -0.007549928272058891, +-0.007599926837544801, -0.007649925384030893, -0.007699923911392173, -0.007749922419504085, -0.007799920908240749, -0.007849919377477610, -0.007899917827089672, -0.007949916256952384, +-0.007999914666939863, -0.008049913056927554, -0.008099911426790906, -0.008149909776404035, -0.008199908105642390, -0.008249906414380975, -0.008299904702495238, -0.008349902969859295, +-0.008399901216348595, -0.008449899441838141, -0.008499897646203384, -0.008549895829318437, -0.008599893991058752, -0.008649892131299332, -0.008699890249915625, -0.008749888346781748, +-0.008799886421773151, -0.008849884474764837, -0.008899882505632256, -0.008949880514249525, -0.008999878500492093, -0.009049876464234965, -0.009099874405353590, -0.009149872323722084, +-0.009199870219215898, -0.009249868091710479, -0.009299865941079948, -0.009349863767199750, -0.009399861569944894, -0.009449859349190827, -0.009499857104811669, -0.009549854836682867, +-0.009599852544679429, -0.009649850228676803, -0.009699847888549109, -0.009749845524171793, -0.009799843135419864, -0.009849840722168771, -0.009899838284292632, -0.009949835821666898, +-0.009999833334166574, -0.010049830821667110, -0.010099828284042626, -0.010149825721168572, -0.010199823132920397, -0.010249820519172219, -0.010299817879799491, -0.010349815214677217, +-0.010399812523680850, -0.010449809806684508, -0.010499807063563642, -0.010549804294193258, -0.010599801498448806, -0.010649798676204407, -0.010699795827335511, -0.010749792951717126, +-0.010799790049224703, -0.010849787119732359, -0.010899784163115548, -0.010949781179249277, -0.010999778168008997, -0.011049775129268828, -0.011099772062904221, -0.011149768968790628, +-0.011199765846802169, -0.011249762696814294, -0.011299759518702013, -0.011349756312340777, -0.011399753077604706, -0.011449749814369253, -0.011499746522509425, -0.011549743201900674, +-0.011599739852417123, -0.011649736473934221, -0.011699733066326979, -0.011749729629470847, -0.011799726163239948, -0.011849722667509732, -0.011899719142155211, -0.011949715587051834, +-0.011999712002073726, -0.012049708387096337, -0.012099704741995123, -0.012149701066644201, -0.012199697360919026, -0.012249693624694609, -0.012299689857846402, -0.012349686060248525, +-0.012399682231776434, -0.012449678372305137, -0.012499674481710089, -0.012549670559865410, -0.012599666606646555, -0.012649662621928532, -0.012699658605586799, -0.012749654557495473, +-0.012799650477530011, -0.012849646365565424, -0.012899642221477166, -0.012949638045139357, -0.012999633836427452, -0.013049629595216463, -0.013099625321381845, -0.013149621014797719, +-0.013199616675339540, -0.013249612302882765, -0.013299607897301514, -0.013349603458471243, -0.013399598986266964, -0.013449594480564131, -0.013499589941236869, -0.013549585368160630, +-0.013599580761210430, -0.013649576120261721, -0.013699571445188626, -0.013749566735866605, -0.013799561992170667, -0.013849557213976266, -0.013899552401157530, -0.013949547553589911, +-0.013999542671148425, -0.014049537753708525, -0.014099532801144338, -0.014149527813331319, -0.014199522790144923, -0.014249517731459277, -0.014299512637149837, -0.014349507507091614, +-0.014399502341160067, -0.014449497139229321, -0.014499491901174831, -0.014549486626871612, -0.014599481316195120, -0.014649475969019481, -0.014699470585220153, -0.014749465164672147, +-0.014799459707250922, -0.014849454212830605, -0.014899448681286651, -0.014949443112494076, -0.014999437506328338, -0.015049431862663561, -0.015099426181375206, -0.015149420462338728, +-0.015199414705428255, -0.015249408910519246, -0.015299403077486715, -0.015349397206206119, -0.015399391296551587, -0.015449385348398575, -0.015499379361622101, -0.015549373336097624, +-0.015599367271699268, -0.015649361168302494, -0.015699355025782315, -0.015749348844014195, -0.015799342622872262, -0.015849336362231969, -0.015899330061968333, -0.015949323721956819, +-0.015999317342071551, -0.016049310922187990, -0.016099304462181149, -0.016149297961926493, -0.016199291421298147, -0.016249284840171574, -0.016299278218422232, -0.016349271555924253, +-0.016399264852553091, -0.016449258108183769, -0.016499251322691748, -0.016549244495951149, -0.016599237627837445, -0.016649230718225643, -0.016699223766991209, -0.016749216774008271, +-0.016799209739152290, -0.016849202662298290, -0.016899195543321723, -0.016949188382096723, -0.016999181178498753, -0.017049173932402829, -0.017099166643684417, -0.017149159312217641, +-0.017199151937877969, -0.017249144520540861, -0.017299137060080447, -0.017349129556372193, -0.017399122009291113, -0.017449114418712670, -0.017499106784510998, -0.017549099106561560, +-0.017599091384739373, -0.017649083618919904, -0.017699075808977279, -0.017749067954786969, -0.017799060056223986, -0.017849052113163795, -0.017899044125480532, -0.017949036093049660, +-0.017999028015746196, -0.018049019893445605, -0.018099011726022022, -0.018149003513350907, -0.018198995255307732, -0.018248986951766622, -0.018298978602603044, -0.018348970207692019, +-0.018398961766909014, -0.018448953280128161, -0.018498944747224924, -0.018548936168074327, -0.018598927542551831, -0.018648918870531574, -0.018698910151889018, -0.018748901386499189, +-0.018798892574237547, -0.018848883714978233, -0.018898874808596710, -0.018948865854967998, -0.018998856853967565, -0.019048847805469546, -0.019098838709349409, -0.019148829565482174, +-0.019198820373743309, -0.019248811134006949, -0.019298801846148562, -0.019348792510043615, -0.019398783125566241, -0.019448773692591910, -0.019498764210995646, -0.019548754680652914, +-0.019598745101437852, -0.019648735473225928, -0.019698725795892161, -0.019748716069312028, -0.019798706293359659, -0.019848696467910525, -0.019898686592839651, -0.019948676668022504, +-0.019998666693333219, -0.020048656668647271, -0.020098646593839677, -0.020148636468785914, -0.020198626293360115, -0.020248616067437750, -0.020298605790894288, -0.020348595463603868, +-0.020398585085441959, -0.020448574656283587, -0.020498564176004225, -0.020548553644478006, -0.020598543061580404, -0.020648532427186443, -0.020698521741171597, -0.020748511003410002, +-0.020798500213777129, -0.020848489372148005, -0.020898478478398104, -0.020948467532401559, -0.020998456534033847, -0.021048445483169996, -0.021098434379685473, -0.021148423223454418, +-0.021198412014352307, -0.021248400752254610, -0.021298389437035468, -0.021348378068570352, -0.021398366646734290, -0.021448355171402755, -0.021498343642449892, -0.021548332059751166, +-0.021598320423181612, -0.021648308732616698, -0.021698296987930570, -0.021748285188998701, -0.021798273335696117, -0.021848261427898294, -0.021898249465479372, -0.021948237448314829, +-0.021998225376279691, -0.022048213249249434, -0.022098201067098200, -0.022148188829701463, -0.022198176536934698, -0.022248164188672048, -0.022298151784788989, -0.022348139325160547, +-0.022398126809662203, -0.022448114238168098, -0.022498101610553708, -0.022548088926694063, -0.022598076186464637, -0.022648063389739580, -0.022698050536394364, -0.022748037626304021, +-0.022798024659344031, -0.022848011635388531, -0.022897998554313004, -0.022947985415992481, -0.022997972220302438, -0.023047958967117019, -0.023097945656311705, -0.023147932287761526, +-0.023197918861341957, -0.023247905376927152, -0.023297891834392580, -0.023347878233613725, -0.023397864574464730, -0.023447850856821072, -0.023497837080557787, -0.023547823245550353, +-0.023597809351672917, -0.023647795398800960, -0.023697781386809513, -0.023747767315574056, -0.023797753184968740, -0.023847738994869038, -0.023897724745149989, -0.023947710435687070, +-0.023997696066354435, -0.024047681637027557, -0.024097667147581475, -0.024147652597891669, -0.024197637987832289, -0.024247623317278814, -0.024297608586106724, -0.024347593794190169, +-0.024397578941404627, -0.024447564027625143, -0.024497549052727188, -0.024547534016584920, -0.024597518919073816, -0.024647503760068912, -0.024697488539445693, -0.024747473257078312, +-0.024797457912842245, -0.024847442506612534, -0.024897427038264662, -0.024947411507672778, -0.024997395914712364, -0.025047380259258463, -0.025097364541186551, -0.025147348760370787, +-0.025197332916686650, -0.025247317010009623, -0.025297301040213861, -0.025347285007174848, -0.025397268910767622, -0.025447252750867667, -0.025497236527349136, -0.025547220240087511, +-0.025597203888957840, -0.025647187473835601, -0.025697170994594950, -0.025747154451111372, -0.025797137843259908, -0.025847121170916042, -0.025897104433953929, -0.025947087632249056, +-0.025997070765676464, -0.026047053834111638, -0.026097036837428735, -0.026147019775503239, -0.026197002648210635, -0.026246985455425084, -0.026296968197022069, -0.026346950872876633, +-0.026396933482864263, -0.026446916026859116, -0.026496898504736681, -0.026546880916371998, -0.026596863261640555, -0.026646845540416509, -0.026696827752575352, -0.026746809897992125, +-0.026796791976542320, -0.026846773988100085, -0.026896755932540921, -0.026946737809739864, -0.026996719619572406, -0.027046701361912708, -0.027096683036636253, -0.027146664643618094, +-0.027196646182733715, -0.027246627653857276, -0.027296609056864270, -0.027346590391630184, -0.027396571658029178, -0.027446552855936744, -0.027496533985227927, -0.027546515045778219, +-0.027596496037461778, -0.027646476960154098, -0.027696457813730226, -0.027746438598065654, -0.027796419313034542, -0.027846399958512381, -0.027896380534374220, -0.027946361040495551, +-0.027996341476750536, -0.028046321843014668, -0.028096302139162994, -0.028146282365071010, -0.028196262520612875, -0.028246242605664086, -0.028296222620100130, -0.028346202563795178, +-0.028396182436624718, -0.028446162238463801, -0.028496141969187923, -0.028546121628671248, -0.028596101216789266, -0.028646080733417033, -0.028696060178430041, -0.028746039551702456, +-0.028796018853109770, -0.028845998082527038, -0.028895977239829753, -0.028945956324892084, -0.028995935337589523, -0.029045914277797125, -0.029095893145390381, -0.029145871940243463, +-0.029195850662231865, -0.029245829311231087, -0.029295807887115288, -0.029345786389759970, -0.029395764819040188, -0.029445743174831437, -0.029495721457007882, -0.029545699665445027, +-0.029595677800017921, -0.029645655860602062, -0.029695633847071624, -0.029745611759302099, -0.029795589597168545, -0.029845567360546461, -0.029895545049310013, -0.029945522663334705, +-0.029995500202495588, -0.030045477666668166, -0.030095455055726604, -0.030145432369546407, -0.030195409608002627, -0.030245386770970769, -0.030295363858325000, -0.030345340869940819, +-0.030395317805693732, -0.030445294665457905, -0.030495271449108841, -0.030545248156521602, -0.030595224787571682, -0.030645201342133260, -0.030695177820081833, -0.030745154221292460, +-0.030795130545640648, -0.030845106793000565, -0.030895082963247715, -0.030945059056257156, -0.030995035071904393, -0.031045011010063600, -0.031094986870610280, -0.031144962653419490, +-0.031194938358366741, -0.031244913985326202, -0.031294889534173378, -0.031344865004783770, -0.031394840397031561, -0.031444815710792245, -0.031494790945940897, -0.031544766102353010, +-0.031594741179902762, -0.031644716178465669, -0.031694691097916783, -0.031744665938131605, -0.031794640698984328, -0.031844615380350445, -0.031894589982105023, -0.031944564504123571, +-0.031994538946280265, -0.032044513308450616, -0.032094487590509674, -0.032144461792332962, -0.032194435913794651, -0.032244409954770251, -0.032294383915135269, -0.032344357794763884, +-0.032394331593531604, -0.032444305311313495, -0.032494278947985067, -0.032544252503420502, -0.032594225977495297, -0.032644199370084531, -0.032694172681063713, -0.032744145910307020, +-0.032794119057689960, -0.032844092123087601, -0.032894065106375457, -0.032944038007427706, -0.032994010826119857, -0.033043983562326990, -0.033093956215924598, -0.033143928786786875, +-0.033193901274789335, -0.033243873679807037, -0.033293846001715498, -0.033343818240388901, -0.033393790395702755, -0.033443762467532584, -0.033493734455752558, -0.033543706360238200, +-0.033593678180864575, -0.033643649917507193, -0.033693621570040251, -0.033743593138339245, -0.033793564622279268, -0.033843536021735815, -0.033893507336583077, -0.033943478566696578, +-0.033993449711951375, -0.034043420772222999, -0.034093391747385619, -0.034143362637314767, -0.034193333441885507, -0.034243304160973355, -0.034293274794452495, -0.034343245342198452, +-0.034393215804086739, -0.034443186179991543, -0.034493156469788386, -0.034543126673352333, -0.034593096790558907, -0.034643066821282299, -0.034693036765398019, -0.034743006622781153, +-0.034792976393307209, -0.034842946076850380, -0.034892915673286187, -0.034942885182489711, -0.034992854604336460, -0.035042823938700625, -0.035092793185457737, -0.035142762344482860, +-0.035192731415651525, -0.035242700398837916, -0.035292669293917563, -0.035342638100765975, -0.035392606819257343, -0.035442575449267197, -0.035492543990670616, -0.035542512443343117, +-0.035592480807158891, -0.035642449081993467, -0.035692417267721918, -0.035742385364219767, -0.035792353371361212, -0.035842321289021775, -0.035892289117076537, -0.035942256855401013, +-0.035992224503869408, -0.036042192062357238, -0.036092159530739590, -0.036142126908891986, -0.036192094196688625, -0.036242061394005022, -0.036292028500716271, -0.036341995516697888, +-0.036391962441824077, -0.036441929275970356, -0.036491896019012260, -0.036541862670823974, -0.036591829231281035, -0.036641795700258523, -0.036691762077631966, -0.036741728363275557, +-0.036791694557064832, -0.036841660658874870, -0.036891626668581194, -0.036941592586058017, -0.036991558411180854, -0.037041524143824792, -0.037091489783865367, -0.037141455331176770, +-0.037191420785634539, -0.037241386147113753, -0.037291351415489948, -0.037341316590637316, -0.037391281672431401, -0.037441246660747718, -0.037491211555460480, -0.037541176356445209, +-0.037591141063576999, -0.037641105676731380, -0.037691070195782550, -0.037741034620606045, -0.037790998951076960, -0.037840963187070815, -0.037890927328461818, -0.037940891375125504, +-0.037990855326936968, -0.038040819183771730, -0.038090782945504005, -0.038140746612009321, -0.038190710183162765, -0.038240673658839881, -0.038290637038914874, -0.038340600323263266, +-0.038390563511760609, -0.038440526604281093, -0.038490489600700263, -0.038540452500893212, -0.038590415304735469, -0.038640378012101247, -0.038690340622866082, -0.038740303136905060, +-0.038790265554093727, -0.038840227874306285, -0.038890190097418273, -0.038940152223304790, -0.038990114251841367, -0.039040076182902214, -0.039090038016362870, -0.039139999752098434, +-0.039189961389984436, -0.039239922929895095, -0.039289884371705948, -0.039339845715292532, -0.039389806960529065, -0.039439768107291072, -0.039489729155453658, -0.039539690104892368, +-0.039589650955481413, -0.039639611707096324, -0.039689572359612207, -0.039739532912904607, -0.039789493366847728, -0.039839453721317121, -0.039889413976187872, -0.039939374131335532, +-0.039989334186634320, -0.040039294141959766, -0.040089253997186977, -0.040139213752191497, -0.040189173406847543, -0.040239132961030655, -0.040289092414616375, -0.040339051767478921, +-0.040389011019493840, -0.040438970170536229, -0.040488929220481633, -0.040538888169204278, -0.040588847016579700, -0.040638805762483000, -0.040688764406789736, -0.040738722949374112, +-0.040788681390111679, -0.040838639728877552, -0.040888597965547259, -0.040938556099995034, -0.040988514132096414, -0.041038472061726512, -0.041088429888760873, -0.041138387613073715, +-0.041188345234540590, -0.041238302753036603, -0.041288260168437299, -0.041338217480616897, -0.041388174689450961, -0.041438131794815029, -0.041488088796583319, -0.041538045694631390, +-0.041588002488834347, -0.041637959179067742, -0.041687915765205794, -0.041737872247124060, -0.041787828624697640, -0.041837784897802099, -0.041887741066311650, -0.041937697130101842, +-0.041987653089047797, -0.042037608943025065, -0.042087564691907858, -0.042137520335571749, -0.042187475873891836, -0.042237431306743671, -0.042287386634001493, -0.042337341855540847, +-0.042387296971237283, -0.042437251980965041, -0.042487206884599664, -0.042537161682016274, -0.042587116373090421, -0.042637070957696331, -0.042687025435709569, -0.042736979807005242, +-0.042786934071458907, -0.042836888228944790, -0.042886842279338457, -0.042936796222515020, -0.042986750058350030, -0.043036703786717728, -0.043086657407493664, -0.043136610920552952, +-0.043186564325771164, -0.043236517623022518, -0.043286470812182579, -0.043336423893126905, -0.043386376865729728, -0.043436329729866607, -0.043486282485412663, -0.043536235132243459, +-0.043586187670233222, -0.043636140099257516, -0.043686092419191462, -0.043736044629910618, -0.043785996731289217, -0.043835948723202824, -0.043885900605526565, -0.043935852378135992, +-0.043985804040905345, -0.044035755593710195, -0.044085707036425649, -0.044135658368927279, -0.044185609591089324, -0.044235560702787342, -0.044285511703896455, -0.044335462594292240, +-0.044385413373848923, -0.044435364042442069, -0.044485314599947250, -0.044535265046238698, -0.044585215381191985, -0.044635165604682239, -0.044685115716585018, -0.044735065716774568, +-0.044785015605126446, -0.044834965381515789, -0.044884915045818166, -0.044934864597907805, -0.044984814037660290, -0.045034763364950735, -0.045084712579654712, -0.045134661681646468, +-0.045184610670801574, -0.045234559546995151, -0.045284508310102771, -0.045334456959998673, -0.045384405496558436, -0.045434353919657632, -0.045484302229170492, -0.045534250424972604, +-0.045584198506939087, -0.045634146474945521, -0.045684094328866137, -0.045734042068576522, -0.045783989693951803, -0.045833937204867552, -0.045883884601198015, -0.045933831882818764, +-0.045983779049604941, -0.046033726101432110, -0.046083673038174518, -0.046133619859707743, -0.046183566565906921, -0.046233513156647622, -0.046283459631804101, -0.046333405991251929, +-0.046383352234866684, -0.046433298362522614, -0.046483244374095303, -0.046533190269459880, -0.046583136048491923, -0.046633081711065685, -0.046683027257056739, -0.046732972686340225, +-0.046782917998791723, -0.046832863194285486, -0.046882808272697092, -0.046932753233901670, -0.046982698077774818, -0.047032642804190769, -0.047082587413025116, -0.047132531904152994, +-0.047182476277449988, -0.047232420532790344, -0.047282364670049655, -0.047332308689103049, -0.047382252589826118, -0.047432196372093109, -0.047482140035779608, -0.047532083580761206, +-0.047582027006912150, -0.047631970314108020, -0.047681913502223970, -0.047731856571135579, -0.047781799520717101, -0.047831742350844128, -0.047881685061391802, -0.047931627652235700, +-0.047981570123250085, -0.048031512474310548, -0.048081454705292230, -0.048131396816070718, -0.048181338806520271, -0.048231280676516476, -0.048281222425934481, -0.048331164054649871, +-0.048381105562536907, -0.048431046949471181, -0.048480988215328286, -0.048530929359982468, -0.048580870383309334, -0.048630811285184018, -0.048680752065482120, -0.048730692724077894, +-0.048780633260846945, -0.048830573675664408, -0.048880513968405877, -0.048930454138945624, -0.048980394187159236, -0.049030334112921854, -0.049080273916109085, -0.049130213596595189, +-0.049180153154255758, -0.049230092588965949, -0.049280031900601345, -0.049329971089036223, -0.049379910154146167, -0.049429849095806784, -0.049479787913892334, -0.049529726608278417, +-0.049579665178840181, -0.049629603625453225, -0.049679541947991818, -0.049729480146331551, -0.049779418220347586, -0.049829356169915524, -0.049879293994909625, -0.049929231695205488, +-0.049979169270678275, -0.050029106721203580, -0.050079044046655675, -0.050128981246910162, -0.050178918321842195, -0.050228855271327380, -0.050278792095239978, -0.050328728793455596, +-0.050378665365849389, -0.050428601812296969, -0.050478538132672598, -0.050528474326851883, -0.050578410394710421, -0.050628346336122496, -0.050678282150963705, -0.050728217839109205, +-0.050778153400434602, -0.050828088834814177, -0.050878024142123529, -0.050927959322237815, -0.050977894375032654, -0.051027829300382306, -0.051077764098162393, -0.051127698768248062, +-0.051177633310514933, -0.051227567724837275, -0.051277502011090700, -0.051327436169150371, -0.051377370198891888, -0.051427304100189544, -0.051477237872918934, -0.051527171516955676, +-0.051577105032174046, -0.051627038418449650, -0.051676971675657664, -0.051726904803673687, -0.051776837802372008, -0.051826770671628226, -0.051876703411317525, -0.051926636021315510, +-0.051976568501496463, -0.052026500851735991, -0.052076433071909262, -0.052126365161891904, -0.052176297121558184, -0.052226228950783722, -0.052276160649443688, -0.052326092217413696, +-0.052376023654568026, -0.052425954960782298, -0.052475886135932133, -0.052525817179891805, -0.052575748092536935, -0.052625678873742691, -0.052675609523384695, -0.052725540041337234, +-0.052775470427475921, -0.052825400681675933, -0.052875330803812882, -0.052925260793761066, -0.052975190651396095, -0.053025120376593154, -0.053075049969227850, -0.053124979429174476, +-0.053174908756308654, -0.053224837950505567, -0.053274767011640821, -0.053324695939588718, -0.053374624734224871, -0.053424553395424908, -0.053474481923063123, -0.053524410317015131, +-0.053574338577156107, -0.053624266703361685, -0.053674194695506154, -0.053724122553465134, -0.053774050277113808, -0.053823977866327796, -0.053873905320981401, -0.053923832640950242, +-0.053973759826109496, -0.054023686876334805, -0.054073613791500441, -0.054123540571482054, -0.054173467216154805, -0.054223393725394337, -0.054273320099074943, -0.054323246337072244, +-0.054373172439261881, -0.054423098405518136, -0.054473024235716642, -0.054522949929732598, -0.054572875487441615, -0.054622800908718003, -0.054672726193437382, -0.054722651341474957, +-0.054772576352706340, -0.054822501227005840, -0.054872425964249086, -0.054922350564311266, -0.054972275027068015, -0.055022199352393636, -0.055072123540163755, -0.055122047590253562, +-0.055171971502538698, -0.055221895276893460, -0.055271818913193486, -0.055321742411313962, -0.055371665771130528, -0.055421588992517486, -0.055471512075350470, -0.055521435019505121, +-0.055571357824855741, -0.055621280491277958, -0.055671203018646982, -0.055721125406838441, -0.055771047655726637, -0.055820969765187224, -0.055870891735095379, -0.055920813565326750, +-0.055970735255755640, -0.056020656806257701, -0.056070578216708113, -0.056120499486982521, -0.056170420616955243, -0.056220341606501911, -0.056270262455497724, -0.056320183163818323, +-0.056370103731338023, -0.056420024157932465, -0.056469944443477291, -0.056519864587846809, -0.056569784590916668, -0.056619704452562064, -0.056669624172658639, -0.056719543751080716, +-0.056769463187703935, -0.056819382482403487, -0.056869301635055033, -0.056919220645532884, -0.056969139513712679, -0.057019058239469622, -0.057068976822679369, -0.057118895263216229, +-0.057168813560955850, -0.057218731715773435, -0.057268649727544640, -0.057318567596143774, -0.057368485321446491, -0.057418402903328433, -0.057468320341663930, -0.057518237636328622, +-0.057568154787197720, -0.057618071794146873, -0.057667988657050410, -0.057717905375783973, -0.057767821950222766, -0.057817738380242456, -0.057867654665717354, -0.057917570806523114, +-0.057967486802534947, -0.058017402653628508, -0.058067318359678120, -0.058117233920559432, -0.058167149336147660, -0.058217064606318460, -0.058266979730946154, -0.058316894709906399, +-0.058366809543074410, -0.058416724230325838, -0.058466638771535011, -0.058516553166577591, -0.058566467415329226, -0.058616381517664254, -0.058666295473458328, -0.058716209282586661, +-0.058766122944924913, -0.058816036460347415, -0.058865949828729829, -0.058915863049947365, -0.058965776123875685, -0.059015689050389127, -0.059065601829363344, -0.059115514460673556, +-0.059165426944195423, -0.059215339279803283, -0.059265251467372798, -0.059315163506779178, -0.059365075397898093, -0.059414987140603878, -0.059464898734772197, -0.059514810180278710, +-0.059564721476997755, -0.059614632624804993, -0.059664543623575657, -0.059714454473185401, -0.059764365173508562, -0.059814275724420815, -0.059864186125797379, -0.059914096377513916, +-0.059964006479444776, -0.060013916431465614, -0.060063826233451661, -0.060113735885278588, -0.060163645386820737, -0.060213554737953763, -0.060263463938552905, -0.060313372988493832, +-0.060363281887650888, -0.060413190635899734, -0.060463099233116047, -0.060513007679174169, -0.060562915973949770, -0.060612824117318082, -0.060662732109154779, -0.060712639949334200, +-0.060762547637732020, -0.060812455174223477, -0.060862362558684234, -0.060912269790988648, -0.060962176871012380, -0.061012083798630670, -0.061061990573719201, -0.061111897196152308, +-0.061161803665805668, -0.061211709982554520, -0.061261616146274546, -0.061311522156840083, -0.061361428014126820, -0.061411333718009983, -0.061461239268365254, -0.061511144665066991, +-0.061561049907990856, -0.061610954997012544, -0.061660859932006401, -0.061710764712848115, -0.061760669339412912, -0.061810573811576473, -0.061860478129213164, -0.061910382292198654, +-0.061960286300408195, -0.062010190153717455, -0.062060093852000807, -0.062109997395133919, -0.062159900782992036, -0.062209804015450842, -0.062259707092384702, -0.062309610013669289, +-0.062359512779179851, -0.062409415388792078, -0.062459317842380319, -0.062509220139820271, -0.062559122280987617, -0.062609024265756708, -0.062658926094003239, -0.062708827765602451, +-0.062758729280430040, -0.062808630638360369, -0.062858531839269122, -0.062908432883031537, -0.062958333769523311, -0.063008234498618809, -0.063058135070193727, -0.063108035484123304, +-0.063157935740283236, -0.063207835838547888, -0.063257735778792956, -0.063307635560893666, -0.063357535184725741, -0.063407434650163547, -0.063457333957082751, -0.063507233105359065, +-0.063557132094866853, -0.063607030925481811, -0.063656929597079193, -0.063706828109534694, -0.063756726462722679, -0.063806624656518859, -0.063856522690798473, -0.063906420565437216, +-0.063956318280309468, -0.064006215835290925, -0.064056113230256839, -0.064106010465082922, -0.064155907539643522, -0.064205804453814366, -0.064255701207470692, -0.064305597800488210, +-0.064355494232741298, -0.064405390504105639, -0.064455286614456500, -0.064505182563669605, -0.064555078351619291, -0.064604973978181296, -0.064654869443231303, -0.064704764746643703, +-0.064754659888294180, -0.064804554868058001, -0.064854449685810889, -0.064904344341427209, -0.064954238834782671, -0.065004133165752528, -0.065054027334212505, -0.065103921340036966, +-0.065153815183101621, -0.065203708863281737, -0.065253602380453024, -0.065303495734489861, -0.065353388925267972, -0.065403281952663039, -0.065453174816549470, -0.065503067516802946, +-0.065552960053298776, -0.065602852425912628, -0.065652744634518923, -0.065702636678993342, -0.065752528559211182, -0.065802420275048137, -0.065852311826378601, -0.065902203213078284, +-0.065952094435022451, -0.066001985492086829, -0.066051876384145808, -0.066101767111075085, -0.066151657672749956, -0.066201548069046129, -0.066251438299837970, -0.066301328365001230, +-0.066351218264411163, -0.066401107997943493, -0.066450997565472611, -0.066500886966874243, -0.066550776202024098, -0.066600665270796555, -0.066650554173067367, -0.066700442908711785, +-0.066750331477605535, -0.066800219879623021, -0.066850108114639956, -0.066899996182531618, -0.066949884083173733, -0.066999771816440706, -0.067049659382208235, -0.067099546780351613, +-0.067149434010746578, -0.067199321073267509, -0.067249207967790145, -0.067299094694189751, -0.067348981252342066, -0.067398867642121496, -0.067448753863403738, -0.067498639916064113, +-0.067548525799978318, -0.067598411515020773, -0.067648297061067189, -0.067698182437993318, -0.067748067645673551, -0.067797952683983601, -0.067847837552798773, -0.067897722251994794, +-0.067947606781446068, -0.067997491141028335, -0.068047375330616861, -0.068097259350087397, -0.068147143199314336, -0.068197026878173431, -0.068246910386539947, -0.068296793724289637, +-0.068346676891296892, -0.068396559887437453, -0.068446442712587069, -0.068496325366620134, -0.068546207849412372, -0.068596090160839104, -0.068645972300776043, -0.068695854269097620, +-0.068745736065679547, -0.068795617690397146, -0.068845499143126140, -0.068895380423740937, -0.068945261532117288, -0.068995142468130488, -0.069045023231656275, -0.069094903822569068, +-0.069144784240744592, -0.069194664486058155, -0.069244544558385496, -0.069294424457601034, -0.069344304183580521, -0.069394183736199239, -0.069444063115332938, -0.069493942320856039, +-0.069543821352644294, -0.069593700210573428, -0.069643578894517874, -0.069693457404353371, -0.069743335739955226, -0.069793213901199178, -0.069843091887959660, -0.069892969700112398, +-0.069942847337532726, -0.069992724800096370, -0.070042602087677777, -0.070092479200152658, -0.070142356137396347, -0.070192232899284598, -0.070242109485691817, -0.070291985896493756, +-0.070341862131565736, -0.070391738190783509, -0.070441614074021483, -0.070491489781155436, -0.070541365312061094, -0.070591240666612903, -0.070641115844686603, -0.070690990846157514, +-0.070740865670901404, -0.070790740318792678, -0.070840614789707101, -0.070890489083519984, -0.070940363200107090, -0.070990237139342854, -0.071040110901103015, -0.071089984485262894, +-0.071139857891698272, -0.071189731120283539, -0.071239604170894505, -0.071289477043406435, -0.071339349737695137, -0.071389222253635004, -0.071439094591101829, -0.071488966749971350, +-0.071538838730118015, -0.071588710531417590, -0.071638582153745384, -0.071688453596977161, -0.071738324860987371, -0.071788195945651764, -0.071838066850845664, -0.071887937576444835, +-0.071937808122323726, -0.071987678488358103, -0.072037548674423274, -0.072087418680395018, -0.072137288506147770, -0.072187158151557310, -0.072237027616498944, -0.072286896900848469, +-0.072336766004480288, -0.072386634927270210, -0.072436503669093530, -0.072486372229826040, -0.072536240609342176, -0.072586108807517716, -0.072635976824228413, -0.072685844659348742, +-0.072735712312754441, -0.072785579784320875, -0.072835447073923795, -0.072885314181437663, -0.072935181106738231, -0.072985047849700863, -0.073034914410201310, -0.073084780788114020, +-0.073134646983314788, -0.073184512995678935, -0.073234378825082241, -0.073284244471399168, -0.073334109934505468, -0.073383975214276503, -0.073433840310588042, -0.073483705223314544, +-0.073533569952331776, -0.073583434497515518, -0.073633298858740245, -0.073683163035881710, -0.073733027028815276, -0.073782890837416723, -0.073832754461560485, -0.073882617901122369, +-0.073932481155977711, -0.073982344226002292, -0.074032207111070572, -0.074082069811058332, -0.074131932325840921, -0.074181794655294106, -0.074231656799292375, -0.074281518757711509, +-0.074331380530426830, -0.074381242117314159, -0.074431103518247929, -0.074480964733103935, -0.074530825761757985, -0.074580686604084512, -0.074630547259959337, -0.074680407729257797, +-0.074730268011855672, -0.074780128107627436, -0.074829988016448870, -0.074879847738195351, -0.074929707272742646, -0.074979566619965229, -0.075029425779738895, -0.075079284751938993, +-0.075129143536441331, -0.075179002133120371, -0.075228860541851891, -0.075278718762511271, -0.075328576794974303, -0.075378434639115435, -0.075428292294810489, -0.075478149761934815, +-0.075528007040364192, -0.075577864129973124, -0.075627721030637390, -0.075677577742232813, -0.075727434264633825, -0.075777290597716263, -0.075827146741355475, -0.075877002695427256, +-0.075926858459806096, -0.075976714034367787, -0.076026569418987694, -0.076076424613541610, -0.076126279617904039, -0.076176134431950759, -0.076225989055557150, -0.076275843488599004, +-0.076325697730950798, -0.076375551782488366, -0.076425405643087044, -0.076475259312622654, -0.076525112790969671, -0.076574966078003903, -0.076624819173601172, -0.076674672077635939, +-0.076724524789984039, -0.076774377310520822, -0.076824229639122096, -0.076874081775662365, -0.076923933720017421, -0.076973785472062642, -0.077023637031673850, -0.077073488398725520, +-0.077123339573093461, -0.077173190554653062, -0.077223041343280133, -0.077272891938849148, -0.077322742341235942, -0.077372592550315866, -0.077422442565964769, -0.077472292388057112, +-0.077522142016468731, -0.077571991451075434, -0.077621840691751709, -0.077671689738373392, -0.077721538590815847, -0.077771387248954896, -0.077821235712665041, -0.077871083981822090, +-0.077920932056301434, -0.077970779935978882, -0.078020627620728950, -0.078070475110427445, -0.078120322404949746, -0.078170169504171688, -0.078220016407967760, -0.078269863116213798, +-0.078319709628785178, -0.078369555945557723, -0.078419402066405935, -0.078469247991205637, -0.078519093719832234, -0.078568939252161518, -0.078618784588068036, -0.078668629727427580, +-0.078718474670115987, -0.078768319416007773, -0.078818163964978760, -0.078868008316904326, -0.078917852471660319, -0.078967696429121242, -0.079017540189162933, -0.079067383751660766, +-0.079117227116490579, -0.079167070283526875, -0.079216913252645516, -0.079266756023721852, -0.079316598596631746, -0.079366440971249716, -0.079416283147451569, -0.079466125125113155, +-0.079515966904108989, -0.079565808484314909, -0.079615649865606306, -0.079665491047859027, -0.079715332030947578, -0.079765172814747792, -0.079815013399135076, -0.079864853783985265, +-0.079914693969172876, -0.079964533954573758, -0.080014373740063302, -0.080064213325517358, -0.080114052710810443, -0.080163891895818393, -0.080213730880416598, -0.080263569664480935, +-0.080313408247885895, -0.080363246630507340, -0.080413084812220675, -0.080462922792901737, -0.080512760572425041, -0.080562598150666451, -0.080612435527501802, -0.080662272702805626, +-0.080712109676453772, -0.080761946448321645, -0.080811783018285080, -0.080861619386218636, -0.080911455551998121, -0.080961291515498982, -0.081011127276597053, -0.081060962835166867, +-0.081110798191084271, -0.081160633344224672, -0.081210468294463947, -0.081260303041676599, -0.081310137585738490, -0.081359971926525040, -0.081409806063912113, -0.081459639997774225, +-0.081509473727987225, -0.081559307254426547, -0.081609140576968053, -0.081658973695486248, -0.081708806609857021, -0.081758639319956222, -0.081808471825658369, -0.081858304126839351, +-0.081908136223374561, -0.081957968115139876, -0.082007799802009840, -0.082057631283860288, -0.082107462560566669, -0.082157293632004830, -0.082207124498049317, -0.082256955158575992, +-0.082306785613460276, -0.082356615862578045, -0.082406445905803830, -0.082456275743013493, -0.082506105374082914, -0.082555934798886635, -0.082605764017300506, -0.082655593029199975, +-0.082705421834460904, -0.082755250432957839, -0.082805078824566655, -0.082854907009162759, -0.082904734986622042, -0.082954562756819047, -0.083004390319629640, -0.083054217674929265, +-0.083104044822593787, -0.083153871762497750, -0.083203698494517031, -0.083253525018527078, -0.083303351334403752, -0.083353177442021600, -0.083403003341256499, -0.083452829031983894, +-0.083502654514079663, -0.083552479787418352, -0.083602304851875850, -0.083652129707328007, -0.083701954353649410, -0.083751778790715936, -0.083801603018403004, -0.083851427036586504, +-0.083901250845141009, -0.083951074443942370, -0.084000897832866059, -0.084050721011787927, -0.084100543980582573, -0.084150366739125848, -0.084200189287293198, -0.084250011624960527, +-0.084299833752002382, -0.084349655668294651, -0.084399477373712783, -0.084449298868132669, -0.084499120151428866, -0.084548941223477253, -0.084598762084153289, -0.084648582733332867, +-0.084698403170890543, -0.084748223396702210, -0.084798043410643759, -0.084847863212589761, -0.084897682802416108, -0.084947502179998247, -0.084997321345212068, -0.085047140297932144, +-0.085096959038034381, -0.085146777565394210, -0.085196595879887538, -0.085246413981388935, -0.085296231869774294, -0.085346049544919075, -0.085395867006699169, -0.085445684254989163, +-0.085495501289664946, -0.085545318110602411, -0.085595134717676144, -0.085644951110762035, -0.085694767289735560, -0.085744583254472595, -0.085794399004847741, -0.085844214540736888, +-0.085894029862015484, -0.085943844968559460, -0.085993659860243390, -0.086043474536943151, -0.086093288998534245, -0.086143103244892549, -0.086192917275892650, -0.086242731091410452, +-0.086292544691321443, -0.086342358075501502, -0.086392171243825228, -0.086441984196168525, -0.086491796932406870, -0.086541609452416152, -0.086591421756070971, -0.086641233843247234, +-0.086691045713820872, -0.086740857367666430, -0.086790668804659854, -0.086840480024676606, -0.086890291027592603, -0.086940101813282433, -0.086989912381622000, -0.087039722732486793, +-0.087089532865752717, -0.087139342781294371, -0.087189152478987661, -0.087238961958708075, -0.087288771220331532, -0.087338580263732604, -0.087388389088787238, -0.087438197695370895, +-0.087488006083359507, -0.087537814252627646, -0.087587622203051260, -0.087637429934506253, -0.087687237446867239, -0.087737044740010137, -0.087786851813810407, -0.087836658668143996, +-0.087886465302885491, -0.087936271717910838, -0.087986077913095498, -0.088035883888315403, -0.088085689643445153, -0.088135495178360682, -0.088185300492937477, -0.088235105587051457, +-0.088284910460577223, -0.088334715113390735, -0.088384519545367440, -0.088434323756383298, -0.088484127746312896, -0.088533931515032194, -0.088583735062417082, -0.088633538388342203, +-0.088683341492683476, -0.088733144375316403, -0.088782947036116902, -0.088832749474959588, -0.088882551691720407, -0.088932353686274848, -0.088982155458498843, -0.089031957008267007, +-0.089081758335455272, -0.089131559439939154, -0.089181360321594572, -0.089231160980296154, -0.089280961415919832, -0.089330761628341096, -0.089380561617435905, -0.089430361383078874, +-0.089480160925145935, -0.089529960243512591, -0.089579759338054787, -0.089629558208647153, -0.089679356855165607, -0.089729155277486122, -0.089778953475483314, -0.089828751449033115, +-0.089878549198011026, -0.089928346722293023, -0.089978144021753706, -0.090027941096269021, -0.090077737945714498, -0.090127534569966056, -0.090177330968898350, -0.090227127142387301, +-0.090276923090308450, -0.090326718812537732, -0.090376514308949760, -0.090426309579420522, -0.090476104623825493, -0.090525899442040647, -0.090575694033940626, -0.090625488399401349, +-0.090675282538298804, -0.090725076450507619, -0.090774870135903726, -0.090824663594362670, -0.090874456825760383, -0.090924249829971521, -0.090974042606872044, -0.091023835156337454, +-0.091073627478243713, -0.091123419572465461, -0.091173211438878660, -0.091223003077358839, -0.091272794487781944, -0.091322585670022619, -0.091372376623956836, -0.091422167349460112, +-0.091471957846408408, -0.091521748114676379, -0.091571538154139959, -0.091621327964675148, -0.091671117546156575, -0.091720906898460214, -0.091770696021461567, -0.091820484915036638, +-0.091870273579060052, -0.091920062013407786, -0.091969850217955354, -0.092019638192578745, -0.092069425937152602, -0.092119213451552884, -0.092169000735655135, -0.092218787789335330, +-0.092268574612468124, -0.092318361204929464, -0.092368147566594908, -0.092417933697340429, -0.092467719597040671, -0.092517505265571606, -0.092567290702808780, -0.092617075908628180, +-0.092666860882904434, -0.092716645625513544, -0.092766430136331485, -0.092816214415232912, -0.092865998462093799, -0.092915782276789677, -0.092965565859196561, -0.093015349209189080, +-0.093065132326643221, -0.093114915211434529, -0.093164697863439005, -0.093214480282531278, -0.093264262468587364, -0.093314044421482792, -0.093363826141093550, -0.093413607627294296, +-0.093463388879961029, -0.093513169898969725, -0.093562950684195054, -0.093612731235513016, -0.093662511552799144, -0.093712291635929437, -0.093762071484778553, -0.093811851099222493, +-0.093861630479136815, -0.093911409624397493, -0.093961188534879211, -0.094010967210457944, -0.094060745651009275, -0.094110523856409167, -0.094160301826532330, -0.094210079561254725, +-0.094259857060451924, -0.094309634323999914, -0.094359411351773378, -0.094409188143648320, -0.094458964699500297, -0.094508741019205297, -0.094558517102638004, -0.094608292949674419, +-0.094658068560190545, -0.094707843934061051, -0.094757619071161953, -0.094807393971368809, -0.094857168634557607, -0.094906943060603058, -0.094956717249381151, -0.095006491200767443, +-0.095056264914637950, -0.095106038390867356, -0.095155811629331663, -0.095205584629906442, -0.095255357392467710, -0.095305129916890136, -0.095354902203049735, -0.095404674250822080, +-0.095454446060083187, -0.095504217630707725, -0.095553988962571723, -0.095603760055550754, -0.095653530909520820, -0.095703301524356618, -0.095753071899934178, -0.095802842036129487, +-0.095852611932817244, -0.095902381589873478, -0.095952151007173761, -0.096001920184594094, -0.096051689122009204, -0.096101457819295077, -0.096151226276327315, -0.096200994492981917, +-0.096250762469133597, -0.096300530204658383, -0.096350297699431819, -0.096400064953329978, -0.096449831966227514, -0.096499598738000486, -0.096549365268524895, -0.096599131557675438, +-0.096648897605328174, -0.096698663411358646, -0.096748428975642911, -0.096798194298055668, -0.096847959378472931, -0.096897724216770301, -0.096947488812823793, -0.096997253166508118, +-0.097047017277699321, -0.097096781146272987, -0.097146544772105131, -0.097196308155070479, -0.097246071295045047, -0.097295834191904434, -0.097345596845524685, -0.097395359255780509, +-0.097445121422547923, -0.097494883345702540, -0.097544645025120391, -0.097594406460676186, -0.097644167652245956, -0.097693928599705757, -0.097743689302930301, -0.097793449761795617, +-0.097843209976177306, -0.097892969945951411, -0.097942729670992656, -0.097992489151177073, -0.098042248386380260, -0.098092007376478274, -0.098141766121345828, -0.098191524620858978, +-0.098241282874893296, -0.098291040883324854, -0.098340798646028377, -0.098390556162879894, -0.098440313433755033, -0.098490070458529824, -0.098539827237078992, -0.098589583769278594, +-0.098639340055004243, -0.098689096094131970, -0.098738851886536527, -0.098788607432093958, -0.098838362730680307, -0.098888117782170298, -0.098937872586440004, -0.098987627143365023, +-0.099037381452821427, -0.099087135514683927, -0.099136889328828595, -0.099186642895131030, -0.099236396213467304, -0.099286149283712141, -0.099335902105741614, -0.099385654679431334, +-0.099435407004657347, -0.099485159081294405, -0.099534910909218566, -0.099584662488305900, -0.099634413818431120, -0.099684164899470323, -0.099733915731299097, -0.099783666313793540, +-0.099833416646828363, -0.099883166730279652, -0.099932916564023019, -0.099982666147934537, -0.100032415481888940, -0.100082164565762330, -0.100131913399430280, -0.100181661982768900, +-0.100231410315652930, -0.100281158397958430, -0.100330906229561020, -0.100380653810336800, -0.100430401140160510, -0.100480148218908200, -0.100529895046455530, -0.100579641622678570, +-0.100629387947452050, -0.100679134020652070, -0.100728879842154700, -0.100778625411834670, -0.100828370729568100, -0.100878115795230590, -0.100927860608698240, -0.100977605169845790, +-0.101027349478549330, -0.101077093534684480, -0.101126837338127360, -0.101176580888752700, -0.101226324186436580, -0.101276067231054660, -0.101325810022483000, -0.101375552560596400, +-0.101425294845270890, -0.101475036876382150, -0.101524778653806270, -0.101574520177418000, -0.101624261447093430, -0.101674002462708630, -0.101723743224138390, -0.101773483731258800, +-0.101823223983945500, -0.101872963982074590, -0.101922703725520810, -0.101972443214160280, -0.102022182447868630, -0.102071921426521980, -0.102121660149995090, -0.102171398618164040, +-0.102221136830904490, -0.102270874788092550, -0.102320612489602970, -0.102370349935311870, -0.102420087125094890, -0.102469824058828120, -0.102519560736386360, -0.102569297157645710, +-0.102619033322482250, -0.102668769230770760, -0.102718504882387360, -0.102768240277207680, -0.102817975415107860, -0.102867710295962640, -0.102917444919648160, -0.102967179286040060, +-0.103016913395014450, -0.103066647246446120, -0.103116380840211170, -0.103166114176185280, -0.103215847254244530, -0.103265580074263730, -0.103315312636118970, -0.103365044939685930, +-0.103414776984840720, -0.103464508771458140, -0.103514240299414280, -0.103563971568584810, -0.103613702578845860, -0.103663433330072220, -0.103713163822139990, -0.103762894054925280, +-0.103812624028302910, -0.103862353742148970, -0.103912083196339160, -0.103961812390749570, -0.104011541325255020, -0.104061269999731600, -0.104110998414055010, -0.104160726568101370, +-0.104210454461745470, -0.104260182094863430, -0.104309909467330940, -0.104359636579024130, -0.104409363429817770, -0.104459090019588000, -0.104508816348210510, -0.104558542415561420, +-0.104608268221515530, -0.104657993765948980, -0.104707719048737880, -0.104757444069757040, -0.104807168828882590, -0.104856893325990230, -0.104906617560956070, -0.104956341533654920, +-0.105006065243962910, -0.105055788691755750, -0.105105511876909560, -0.105155234799299140, -0.105204957458800640, -0.105254679855289730, -0.105304401988642590, -0.105354123858733980, +-0.105403845465440070, -0.105453566808636550, -0.105503287888199540, -0.105553008704003890, -0.105602729255925700, -0.105652449543841150, -0.105702169567625020, -0.105751889327153460, +-0.105801608822302190, -0.105851328052947320, -0.105901047018963700, -0.105950765720227480, -0.106000484156614320, -0.106050202328000400, -0.106099920234260540, -0.106149637875270870, +-0.106199355250907110, -0.106249072361045400, -0.106298789205560570, -0.106348505784328760, -0.106398222097225700, -0.106447938144127520, -0.106497653924909050, -0.106547369439446440, +-0.106597084687615420, -0.106646799669292120, -0.106696514384351390, -0.106746228832669360, -0.106795943014122210, -0.106845656928584750, -0.106895370575933170, -0.106945083956043140, +-0.106994797068790850, -0.107044509914051120, -0.107094222491700130, -0.107143934801613580, -0.107193646843667630, -0.107243358617737110, -0.107293070123698210, -0.107342781361426620, +-0.107392492330798530, -0.107442203031688760, -0.107491913463973490, -0.107541623627528430, -0.107591333522229770, -0.107641043147952320, -0.107690752504572260, -0.107740461591965760, +-0.107790170410007670, -0.107839878958574160, -0.107889587237540940, -0.107939295246784210, -0.107989002986178780, -0.108038710455600860, -0.108088417654926150, -0.108138124584030840, +-0.108187831242789790, -0.108237537631079140, -0.108287243748774660, -0.108336949595752520, -0.108386655171887540, -0.108436360477055950, -0.108486065511133430, -0.108535770273996220, +-0.108585474765519120, -0.108635178985578340, -0.108684882934050060, -0.108734586610809120, -0.108784290015731710, -0.108833993148693590, -0.108883696009570920, -0.108933398598238570, +-0.108983100914572720, -0.109032802958449120, -0.109082504729743970, -0.109132206228332100, -0.109181907454089720, -0.109231608406892570, -0.109281309086616830, -0.109331009493137380, +-0.109380709626330420, -0.109430409486071680, -0.109480109072237350, -0.109529808384702320, -0.109579507423342760, -0.109629206188034430, -0.109678904678653530, -0.109728602895074930, +-0.109778300837174810, -0.109827998504829380, -0.109877695897913520, -0.109927393016303430, -0.109977089859874840, -0.110026786428503970, -0.110076482722065700, -0.110126178740436220, +-0.110175874483491300, -0.110225569951107120, -0.110275265143158580, -0.110324960059521890, -0.110374654700072780, -0.110424349064687480, -0.110474043153240870, -0.110523736965609160, +-0.110573430501668540, -0.110623123761293910, -0.110672816744361450, -0.110722509450746960, -0.110772201880326650, -0.110821894032975390, -0.110871585908569380, -0.110921277506984410, +-0.110970968828096710, -0.111020659871781110, -0.111070350637913890, -0.111120041126370780, -0.111169731337028010, -0.111219421269760480, -0.111269110924444390, -0.111318800300955510, +-0.111368489399170090, -0.111418178218962990, -0.111467866760210450, -0.111517555022788250, -0.111567243006572600, -0.111616930711438400, -0.111666618137261860, -0.111716305283919240, +-0.111765992151285400, -0.111815678739236590, -0.111865365047648570, -0.111915051076397580, -0.111964736825358540, -0.112014422294407640, -0.112064107483420690, -0.112113792392273910, +-0.112163477020842210, -0.112213161369001820, -0.112262845436628520, -0.112312529223598560, -0.112362212729786830, -0.112411895955069560, -0.112461578899322550, -0.112511261562422040, +-0.112560943944242940, -0.112610626044661470, -0.112660307863553450, -0.112709989400795090, -0.112759670656261320, -0.112809351629828370, -0.112859032321372480, -0.112908712730768570, +-0.112958392857892890, -0.113008072702621210, -0.113057752264829790, -0.113107431544393550, -0.113157110541188740, -0.113206789255091160, -0.113256467685977020, -0.113306145833721300, +-0.113355823698200200, -0.113405501279289540, -0.113455178576865570, -0.113504855590803210, -0.113554532320978730, -0.113604208767268340, -0.113653884929546990, -0.113703560807690940, +-0.113753236401575970, -0.113802911711078360, -0.113852586736073030, -0.113902261476436230, -0.113951935932043780, -0.114001610102771930, -0.114051283988495610, -0.114100957589091080, +-0.114150630904434160, -0.114200303934401100, -0.114249976678866840, -0.114299649137707640, -0.114349321310799320, -0.114398993198018130, -0.114448664799239030, -0.114498336114338270, +-0.114548007143191650, -0.114597677885675460, -0.114647348341664640, -0.114697018511035450, -0.114746688393664140, -0.114796357989425680, -0.114846027298196330, -0.114895696319851900, +-0.114945365054268680, -0.114995033501321610, -0.115044701660886940, -0.115094369532840520, -0.115144037117058630, -0.115193704413416200, -0.115243371421789500, -0.115293038142054380, +-0.115342704574087100, -0.115392370717762640, -0.115442036572957220, -0.115491702139546720, -0.115541367417407420, -0.115591032406414250, -0.115640697106443490, -0.115690361517371440, +-0.115740025639073050, -0.115789689471424580, -0.115839353014301900, -0.115889016267581270, -0.115938679231137670, -0.115988341904847360, -0.116038004288586200, -0.116087666382230480, +-0.116137328185655130, -0.116186989698736480, -0.116236650921350340, -0.116286311853373030, -0.116335972494679490, -0.116385632845146010, -0.116435292904648460, -0.116484952673063120, +-0.116534612150264960, -0.116584271336130270, -0.116633930230535320, -0.116683588833355130, -0.116733247144465950, -0.116782905163743660, -0.116832562891064560, -0.116882220326303590, +-0.116931877469337090, -0.116981534320040880, -0.117031190878291280, -0.117080847143963260, -0.117130503116933130, -0.117180158797076740, -0.117229814184270390, -0.117279469278389060, +-0.117329124079309070, -0.117378778586906260, -0.117428432801056940, -0.117478086721636110, -0.117527740348520050, -0.117577393681584650, -0.117627046720706200, -0.117676699465759700, +-0.117726351916621450, -0.117776004073167750, -0.117825655935273610, -0.117875307502815330, -0.117924958775668780, -0.117974609753710270, -0.118024260436814800, -0.118073910824858670, +-0.118123560917717770, -0.118173210715268410, -0.118222860217385580, -0.118272509423945600, -0.118322158334824350, -0.118371806949898140, -0.118421455269041960, -0.118471103292132160, +-0.118520751019044610, -0.118570398449655600, -0.118620045583840160, -0.118669692421474610, -0.118719338962435280, -0.118768985206597150, -0.118818631153836550, -0.118868276804029380, +-0.118917922157051960, -0.118967567212779290, -0.119017211971087710, -0.119066856431853090, -0.119116500594951780, -0.119166144460258780, -0.119215788027650400, -0.119265431297002570, +-0.119315074268191590, -0.119364716941092490, -0.119414359315581590, -0.119464001391534800, -0.119513643168828440, -0.119563284647337540, -0.119612925826938430, -0.119662566707507440, +-0.119712207288919580, -0.119761847571051220, -0.119811487553778240, -0.119861127236976980, -0.119910766620522450, -0.119960405704291020, -0.120010044488158570, -0.120059682972001450, +-0.120109321155694670, -0.120158959039114610, -0.120208596622137130, -0.120258233904638610, -0.120307870886494070, -0.120357507567579850, -0.120407143947771860, -0.120456780026946440, +-0.120506415804978630, -0.120556051281744790, -0.120605686457120830, -0.120655321330983080, -0.120704955903206600, -0.120754590173667710, -0.120804224142242800, -0.120853857808806880, +-0.120903491173236330, -0.120953124235407040, -0.121002756995195390, -0.121052389452476390, -0.121102021607126420, -0.121151653459021420, -0.121201285008037700, -0.121250916254050340, +-0.121300547196935680, -0.121350177836569660, -0.121399808172828640, -0.121449438205587650, -0.121499067934723070, -0.121548697360110810, -0.121598326481627260, -0.121647955299147440, +-0.121697583812547750, -0.121747212021704530, -0.121796839926492840, -0.121846467526789060, -0.121896094822469090, -0.121945721813409350, -0.121995348499484850, -0.122044974880571980, +-0.122094600956546660, -0.122144226727285300, -0.122193852192662920, -0.122243477352555920, -0.122293102206840210, -0.122342726755392190, -0.122392350998086930, -0.122441974934800770, +-0.122491598565409680, -0.122541221889790040, -0.122590844907816910, -0.122640467619366660, -0.122690090024315680, -0.122739712122539040, -0.122789333913913110, -0.122838955398313850, +-0.122888576575617640, -0.122938197445699550, -0.122987818008435970, -0.123037438263702840, -0.123087058211376550, -0.123136677851332190, -0.123186297183446130, -0.123235916207594320, +-0.123285534923653170, -0.123335153331497730, -0.123384771431004420, -0.123434389222049160, -0.123484006704508390, -0.123533623878257160, -0.123583240743171850, -0.123632857299128460, +-0.123682473546003370, -0.123732089483671630, -0.123781705112009700, -0.123831320430893930, -0.123880935440199420, -0.123930550139802560, -0.123980164529579340, -0.124029778609406140, +-0.124079392379158060, -0.124129005838711490, -0.124178618987942410, -0.124228231826727240, -0.124277844354941030, -0.124327456572460210, -0.124377068479160760, -0.124426680074919070, +-0.124476291359610230, -0.124525902333110690, -0.124575512995296820, -0.124625123346043710, -0.124674733385227820, -0.124724343112725080, -0.124773952528411920, -0.124823561632163450, +-0.124873170423856070, -0.124922778903365760, -0.124972387070568940, -0.125021994925340720, -0.125071602467557520, -0.125121209697095310, -0.125170816613830500, -0.125220423217638240, +-0.125270029508394890, -0.125319635485976490, -0.125369241150259410, -0.125418846501118810, -0.125468451538431110, -0.125518056262072240, -0.125567660671918710, -0.125617264767845570, +-0.125666868549729280, -0.125716472017446230, -0.125766075170871570, -0.125815678009881750, -0.125865280534352700, -0.125914882744160910, -0.125964484639181470, -0.126014086219290810, +-0.126063687484364940, -0.126113288434280300, -0.126162889068911990, -0.126212489388136450, -0.126262089391829670, -0.126311689079868140, -0.126361288452126940, -0.126410887508482530, +-0.126460486248810870, -0.126510084672988470, -0.126559682780890390, -0.126609280572393120, -0.126658878047372640, -0.126708475205705410, -0.126758072047266550, -0.126807668571932510, +-0.126857264779579730, -0.126906860670083360, -0.126956456243319830, -0.127006051499165160, -0.127055646437495810, -0.127105241058186910, -0.127154835361114880, -0.127204429346155780, +-0.127254023013186060, -0.127303616362080820, -0.127353209392716550, -0.127402802104969240, -0.127452394498715400, -0.127501986573830110, -0.127551578330189850, -0.127601169767671080, +-0.127650760886148960, -0.127700351685499920, -0.127749942165600040, -0.127799532326325710, -0.127849122167552120, -0.127898711689155730, -0.127948300891012560, -0.127997889772999060, +-0.128047478334990390, -0.128097066576863040, -0.128146654498493050, -0.128196242099756830, -0.128245829380529560, -0.128295416340687750, -0.128345002980107370, -0.128394589298664930, +-0.128444175296235590, -0.128493760972695800, -0.128543346327921610, -0.128592931361789480, -0.128642516074174600, -0.128692100464953410, -0.128741684534002420, -0.128791268281196800, +-0.128840851706412990, -0.128890434809527050, -0.128940017590415460, -0.128989600048953410, -0.129039182185017340, -0.129088763998483290, -0.129138345489227810, -0.129187926657126000, +-0.129237507502054400, -0.129287088023889000, -0.129336668222506330, -0.129386248097781570, -0.129435827649591190, -0.129485406877811210, -0.129534985782318170, -0.129584564362987240, +-0.129634142619694890, -0.129683720552317170, -0.129733298160730590, -0.129782875444810320, -0.129832452404432890, -0.129882029039474740, -0.129931605349811100, -0.129981181335318440, +-0.130030756995872830, -0.130080332331350750, -0.130129907341627410, -0.130179482026579310, -0.130229056386082480, -0.130278630420013470, -0.130328204128247440, -0.130377777510660900, +-0.130427350567129920, -0.130476923297530990, -0.130526495701739330, -0.130576067779631410, -0.130625639531083780, -0.130675210955971590, -0.130724782054171400, -0.130774352825559240, +-0.130823923270011630, -0.130873493387403780, -0.130923063177612210, -0.130972632640512980, -0.131022201775982590, -0.131071770583896270, -0.131121339064130510, -0.131170907216561410, +-0.131220475041065490, -0.131270042537517920, -0.131319609705795260, -0.131369176545773570, -0.131418743057329400, -0.131468309240337890, -0.131517875094675660, -0.131567440620218690, +-0.131617005816843600, -0.131666570684425530, -0.131716135222841040, -0.131765699431966670, -0.131815263311677590, -0.131864826861850360, -0.131914390082361050, -0.131963952973086220, +-0.132013515533901060, -0.132063077764682120, -0.132112639665305480, -0.132162201235647670, -0.132211762475583940, -0.132261323384990780, -0.132310883963744320, -0.132360444211721110, +-0.132410004128796330, -0.132459563714846550, -0.132509122969748290, -0.132558681893376770, -0.132608240485608570, -0.132657798746319750, -0.132707356675386440, -0.132756914272685180, +-0.132806471538091220, -0.132856028471481040, -0.132905585072731260, -0.132955141341717040, -0.133004697278315010, -0.133054252882401220, -0.133103808153852230, -0.133153363092543280, +-0.133202917698350940, -0.133252471971151280, -0.133302025910820880, -0.133351579517235000, -0.133401132790270160, -0.133450685729802480, -0.133500238335708540, -0.133549790607863570, +-0.133599342546144110, -0.133648894150426720, -0.133698445420586680, -0.133747996356500500, -0.133797546958044360, -0.133847097225094770, -0.133896647157527000, -0.133946196755217630, +-0.133995746018042760, -0.134045294945878940, -0.134094843538601460, -0.134144391796086890, -0.134193939718211310, -0.134243487304851330, -0.134293034555882210, -0.134342581471180500, +-0.134392128050622310, -0.134441674294084270, -0.134491220201441580, -0.134540765772570870, -0.134590311007348220, -0.134639855905650250, -0.134689400467352170, -0.134738944692330610, +-0.134788488580462130, -0.134838032131621990, -0.134887575345686770, -0.134937118222532600, -0.134986660762036080, -0.135036202964072480, -0.135085744828518340, -0.135135286355249880, +-0.135184827544143630, -0.135234368395074860, -0.135283908907920160, -0.135333449082555710, -0.135382988918858080, -0.135432528416702530, -0.135482067575965650, -0.135531606396524030, +-0.135581144878252980, -0.135630683021029070, -0.135680220824728440, -0.135729758289227260, -0.135779295414402120, -0.135828832200128310, -0.135878368646282420, -0.135927904752741050, +-0.135977440519379460, -0.136026975946074300, -0.136076511032701660, -0.136126045779138200, -0.136175580185259220, -0.136225114250941250, -0.136274647976060510, -0.136324181360493570, +-0.136373714404115750, -0.136423247106803650, -0.136472779468433420, -0.136522311488881690, -0.136571843168023730, -0.136621374505736190, -0.136670905501895620, -0.136720436156377360, +-0.136769966469058010, -0.136819496439813750, -0.136869026068521190, -0.136918555355055620, -0.136968084299293660, -0.137017612901111500, -0.137067141160385740, -0.137116669076991690, +-0.137166196650805950, -0.137215723881704720, -0.137265250769564640, -0.137314777314260980, -0.137364303515670390, -0.137413829373669030, -0.137463354888133550, -0.137512880058939220, +-0.137562404885962690, -0.137611929369080180, -0.137661453508168250, -0.137710977303102280, -0.137760500753758840, -0.137810023860014590, -0.137859546621744850, -0.137909069038826240, +-0.137958591111134980, -0.138008112838547640, -0.138057634220939610, -0.138107155258187480, -0.138156675950167480, -0.138206196296756210, -0.138255716297829010, -0.138305235953262520, +-0.138354755262932950, -0.138404274226716920, -0.138453792844489780, -0.138503311116128150, -0.138552829041508670, -0.138602346620506690, -0.138651863852998850, -0.138701380738861350, +-0.138750897277970820, -0.138800413470202640, -0.138849929315433380, -0.138899444813539330, -0.138948959964397100, -0.138998474767882020, -0.139047989223870770, -0.139097503332239550, +-0.139147017092865010, -0.139196530505622470, -0.139246043570388610, -0.139295556287039630, -0.139345068655452240, -0.139394580675501700, -0.139444092347064730, -0.139493603670017510, +-0.139543114644236720, -0.139592625269597730, -0.139642135545977150, -0.139691645473251690, -0.139741155051296670, -0.139790664279988760, -0.139840173159204190, -0.139889681688819630, +-0.139939189868710400, -0.139988697698753220, -0.140038205178824320, -0.140087712308800290, -0.140137219088556590, -0.140186725517969820, -0.140236231596916230, -0.140285737325272520, +-0.140335242702914000, -0.140384747729717400, -0.140434252405558930, -0.140483756730315270, -0.140533260703861770, -0.140582764326075110, -0.140632267596831530, -0.140681770516007750, +-0.140731273083479070, -0.140780775299122250, -0.140830277162813900, -0.140879778674429440, -0.140929279833845510, -0.140978780640938380, -0.141028281095584770, -0.141077781197659980, +-0.141127280947040770, -0.141176780343603340, -0.141226279387224400, -0.141275778077779330, -0.141325276415144810, -0.141374774399197070, -0.141424272029812860, -0.141473769306867560, +-0.141523266230237780, -0.141572762799800300, -0.141622259015430490, -0.141671754877005010, -0.141721250384400140, -0.141770745537492610, -0.141820240336157750, -0.141869734780272320, +-0.141919228869712530, -0.141968722604355110, -0.142018215984075440, -0.142067709008750240, -0.142117201678255760, -0.142166693992468700, -0.142216185951264510, -0.142265677554519830, +-0.142315168802110950, -0.142364659693914600, -0.142414150229806140, -0.142463640409662310, -0.142513130233359400, -0.142562619700774080, -0.142612108811781800, -0.142661597566259210, +-0.142711085964083080, -0.142760574005128820, -0.142810061689273100, -0.142859549016392220, -0.142909035986362930, -0.142958522599060610, -0.143008008854361960, -0.143057494752143300, +-0.143106980292281360, -0.143156465474651500, -0.143205950299130500, -0.143255434765594600, -0.143304918873920580, -0.143354402623983800, -0.143403886015661040, -0.143453369048828550, +-0.143502851723363080, -0.143552334039140030, -0.143601815996036160, -0.143651297593927750, -0.143700778832691530, -0.143750259712202900, -0.143799740232338660, -0.143849220392975490, +-0.143898700193988820, -0.143948179635255410, -0.143997658716651540, -0.144047137438054000, -0.144096615799338130, -0.144146093800380760, -0.144195571441058130, -0.144245048721247020, +-0.144294525640822850, -0.144344002199662370, -0.144393478397641880, -0.144442954234638130, -0.144492429710526560, -0.144541904825183890, -0.144591379578486940, -0.144640853970311070, +-0.144690328000533080, -0.144739801669029280, -0.144789274975676400, -0.144838747920349900, -0.144888220502926520, -0.144937692723282580, -0.144987164581294880, -0.145036636076838810, +-0.145086107209791150, -0.145135577980028210, -0.145185048387426800, -0.145234518431862300, -0.145283988113211500, -0.145333457431350730, -0.145382926386156800, -0.145432394977505070, +-0.145481863205272370, -0.145531331069335000, -0.145580798569569740, -0.145630265705852050, -0.145679732478058710, -0.145729198886066470, -0.145778664929750780, -0.145828130608988440, +-0.145877595923655760, -0.145927060873629550, -0.145976525458785260, -0.146025989678999630, -0.146075453534149020, -0.146124917024110230, -0.146174380148758720, -0.146223842907971250, +-0.146273305301624160, -0.146322767329594230, -0.146372228991756980, -0.146421690287989150, -0.146471151218167530, -0.146520611782167580, -0.146570071979866130, -0.146619531811139460, +-0.146668991275864000, -0.146718450373916480, -0.146767909105172400, -0.146817367469508550, -0.146866825466801710, -0.146916283096927360, -0.146965740359762310, -0.147015197255182940, +-0.147064653783065990, -0.147114109943286970, -0.147163565735722670, -0.147213021160249450, -0.147262476216744130, -0.147311930905082180, -0.147361385225140390, -0.147410839176795150, +-0.147460292759923230, -0.147509745974400170, -0.147559198820102740, -0.147608651296907730, -0.147658103404690650, -0.147707555143328340, -0.147757006512697130, -0.147806457512673850, +-0.147855908143133980, -0.147905358403954330, -0.147954808295011290, -0.148004257816181680, -0.148053706967340960, -0.148103155748365990, -0.148152604159133140, -0.148202052199519210, +-0.148251499869399730, -0.148300947168651470, -0.148350394097150840, -0.148399840654774680, -0.148449286841398490, -0.148498732656899060, -0.148548178101152810, -0.148597623174036550, +-0.148647067875425810, -0.148696512205197360, -0.148745956163228110, -0.148795399749393510, -0.148844842963570420, -0.148894285805635210, -0.148943728275464730, -0.148993170372934500, +-0.149042612097921330, -0.149092053450301630, -0.149141494429952250, -0.149190935036748680, -0.149240375270567800, -0.149289815131285950, -0.149339254618780000, -0.149388693732925510, +-0.149438132473599240, -0.149487570840678120, -0.149537008834037620, -0.149586446453554590, -0.149635883699105440, -0.149685320570566580, -0.149734757067814860, -0.149784193190725830, +-0.149833628939176290, -0.149883064313043130, -0.149932499312201870, -0.149981933936529370, -0.150031368185902010, -0.150080802060196690, -0.150130235559288920, -0.150179668683055570, +-0.150229101431373020, -0.150278533804118180, -0.150327965801166560, -0.150377397422395030, -0.150426828667680010, -0.150476259536898360, -0.150525690029925610, -0.150575120146638620, +-0.150624549886914290, -0.150673979250628140, -0.150723408237657060, -0.150772836847877430, -0.150822265081166170, -0.150871692937398800, -0.150921120416452200, -0.150970547518202800, +-0.151019974242527470, -0.151069400589301740, -0.151118826558402530, -0.151168252149706280, -0.151217677363089800, -0.151267102198428700, -0.151316526655599860, -0.151365950734479670, +-0.151415374434945070, -0.151464797756871580, -0.151514220700136090, -0.151563643264615080, -0.151613065450185380, -0.151662487256722570, -0.151711908684103560, -0.151761329732205210, +-0.151810750400903080, -0.151860170690074100, -0.151909590599594690, -0.151959010129341710, -0.152008429279190810, -0.152057848049018810, -0.152107266438702200, -0.152156684448117860, +-0.152206102077141360, -0.152255519325649620, -0.152304936193519090, -0.152354352680626640, -0.152403768786847860, -0.152453184512059690, -0.152502599856138980, -0.152552014818961330, +-0.152601429400403640, -0.152650843600342370, -0.152700257418654450, -0.152749670855215430, -0.152799083909902270, -0.152848496582591360, -0.152897908873159650, -0.152947320781482740, +-0.152996732307437540, -0.153046143450900480, -0.153095554211748530, -0.153144964589857240, -0.153194374585103540, -0.153243784197363900, -0.153293193426515260, -0.153342602272433180, +-0.153392010734994590, -0.153441418814075970, -0.153490826509554260, -0.153540233821305020, -0.153589640749205230, -0.153639047293131740, -0.153688453452960230, -0.153737859228567560, +-0.153787264619830250, -0.153836669626625210, -0.153886074248828050, -0.153935478486315720, -0.153984882338964710, -0.154034285806651900, -0.154083688889252970, -0.154133091586644790, +-0.154182493898703890, -0.154231895825307190, -0.154281297366330340, -0.154330698521650210, -0.154380099291143350, -0.154429499674686670, -0.154478899672155810, -0.154528299283427710, +-0.154577698508378850, -0.154627097346886180, -0.154676495798825340, -0.154725893864073260, -0.154775291542506880, -0.154824688834001830, -0.154874085738435060, -0.154923482255683060, +-0.154972878385622820, -0.155022274128129940, -0.155071669483081350, -0.155121064450353620, -0.155170459029823630, -0.155219853221367080, -0.155269247024860890, -0.155318640440181590, +-0.155368033467206120, -0.155417426105810140, -0.155466818355870590, -0.155516210217264420, -0.155565601689867300, -0.155614992773556170, -0.155664383468207550, -0.155713773773698410, +-0.155763163689904420, -0.155812553216702510, -0.155861942353969190, -0.155911331101581480, -0.155960719459415000, -0.156010107427346720, -0.156059495005253180, -0.156108882193011330, +-0.156158268990496840, -0.156207655397586690, -0.156257041414157390, -0.156306427040085900, -0.156355812275247950, -0.156405197119520440, -0.156454581572779940, -0.156503965634903430, +-0.156553349305766560, -0.156602732585246350, -0.156652115473219690, -0.156701497969562340, -0.156750880074151250, -0.156800261786862930, -0.156849643107574430, -0.156899024036161380, +-0.156948404572500750, -0.156997784716469110, -0.157047164467943450, -0.157096543826799440, -0.157145922792914060, -0.157195301366163890, -0.157244679546425900, -0.157294057333575790, +-0.157343434727490520, -0.157392811728046670, -0.157442188335121220, -0.157491564548589870, -0.157540940368329580, -0.157590315794216980, -0.157639690826129000, -0.157689065463941370, +-0.157738439707531070, -0.157787813556775100, -0.157837187011549170, -0.157886560071730270, -0.157935932737194970, -0.157985305007820290, -0.158034676883481880, -0.158084048364056820, +-0.158133419449421610, -0.158182790139453300, -0.158232160434027550, -0.158281530333021420, -0.158330899836311460, -0.158380268943774720, -0.158429637655286840, -0.158479005970724840, +-0.158528373889965800, -0.158577741412885390, -0.158627108539360600, -0.158676475269268060, -0.158725841602484760, -0.158775207538886440, -0.158824573078350070, -0.158873938220752270, +-0.158923302965970070, -0.158972667313879180, -0.159022031264356630, -0.159071394817279000, -0.159120757972523310, -0.159170120729965280, -0.159219483089481970, -0.159268845050949930, +-0.159318206614246230, -0.159367567779246570, -0.159416928545827980, -0.159466288913867080, -0.159515648883240910, -0.159565008453825150, -0.159614367625496880, -0.159663726398133140, +-0.159713084771609640, -0.159762442745803420, -0.159811800320591110, -0.159861157495849730, -0.159910514271455030, -0.159959870647284040, -0.160009226623213350, -0.160058582199120060, +-0.160107937374879860, -0.160157292150369810, -0.160206646525466540, -0.160256000500047100, -0.160305354073987190, -0.160354707247163940, -0.160404060019454310, -0.160453412390734130, +-0.160502764360880400, -0.160552115929769780, -0.160601467097278850, -0.160650817863284700, -0.160700168227663060, -0.160749518190291010, -0.160798867751045600, -0.160848216909802580, +-0.160897565666439010, -0.160946914020831560, -0.160996261972857210, -0.161045609522391800, -0.161094956669312370, -0.161144303413495530, -0.161193649754818370, -0.161242995693156670, +-0.161292341228387450, -0.161341686360387400, -0.161391031089033580, -0.161440375414201730, -0.161489719335768940, -0.161539062853612280, -0.161588405967607540, -0.161637748677631780, +-0.161687090983561650, -0.161736432885274230, -0.161785774382645300, -0.161835115475551930, -0.161884456163870760, -0.161933796447478880, -0.161983136326252110, -0.162032475800067470, +-0.162081814868801630, -0.162131153532331710, -0.162180491790533450, -0.162229829643284000, -0.162279167090459950, -0.162328504131938420, -0.162377840767595180, -0.162427176997307350, +-0.162476512820951570, -0.162525848238404960, -0.162575183249543290, -0.162624517854243640, -0.162673852052383160, -0.162723185843837600, -0.162772519228484100, -0.162821852206199270, +-0.162871184776860270, -0.162920516940342850, -0.162969848696524140, -0.163019180045280820, -0.163068510986489970, -0.163117841520027420, -0.163167171645770270, -0.163216501363595200, +-0.163265830673379300, -0.163315159574998370, -0.163364488068329570, -0.163413816153249960, -0.163463143829635390, -0.163512471097362940, -0.163561797956309350, -0.163611124406351230, +-0.163660450447365740, -0.163709776079228710, -0.163759101301817230, -0.163808426115008430, -0.163857750518678120, -0.163907074512703450, -0.163956398096961080, -0.164005721271328150, +-0.164055044035680500, -0.164104366389895230, -0.164153688333849020, -0.164203009867419060, -0.164252330990481120, -0.164301651702912360, -0.164350972004589480, -0.164400291895389600, +-0.164449611375188540, -0.164498930443863460, -0.164548249101291480, -0.164597567347348460, -0.164646885181911510, -0.164696202604857370, -0.164745519616063120, -0.164794836215404670, +-0.164844152402759130, -0.164893468178003180, -0.164942783541014020, -0.164992098491667460, -0.165041413029840630, -0.165090727155410290, -0.165140040868253570, -0.165189354168246320, +-0.165238667055265660, -0.165287979529188330, -0.165337291589891520, -0.165386603237251020, -0.165435914471144030, -0.165485225291447240, -0.165534535698037830, -0.165583845690791630, +-0.165633155269585830, -0.165682464434297570, -0.165731773184802730, -0.165781081520978420, -0.165830389442701450, -0.165879696949848910, -0.165929004042296710, -0.165978310719922000, +-0.166027616982601520, -0.166076922830212410, -0.166126228262630570, -0.166175533279733170, -0.166224837881396910, -0.166274142067499020, -0.166323445837915310, -0.166372749192523010, +-0.166422052131199260, -0.166471354653819960, -0.166520656760262260, -0.166569958450402900, -0.166619259724119120, -0.166668560581286730, -0.166717861021782930, -0.166767161045484500, +-0.166816460652268600, -0.166865759842011100, -0.166915058614589190, -0.166964356969879660, -0.167013654907759660, -0.167062952428105090, -0.167112249530793150, -0.167161546215700560, +-0.167210842482704570, -0.167260138331681020, -0.167309433762507120, -0.167358728775059670, -0.167408023369215790, -0.167457317544851440, -0.167506611301843800, -0.167555904640070060, +-0.167605197559406120, -0.167654490059729180, -0.167703782140916020, -0.167753073802843850, -0.167802365045388540, -0.167851655868427350, -0.167900946271836990, -0.167950236255494710, +-0.167999525819276410, -0.168048814963059290, -0.168098103686720120, -0.168147391990136150, -0.168196679873183240, -0.168245967335738660, -0.168295254377679140, -0.168344540998881910, +-0.168393827199222910, -0.168443112978579330, -0.168492398336828000, -0.168541683273846080, -0.168590967789509520, -0.168640251883695550, -0.168689535556281380, -0.168738818807142920, +-0.168788101636157430, -0.168837384043201700, -0.168886666028152920, -0.168935947590887060, -0.168985228731281300, -0.169034509449212500, -0.169083789744557840, -0.169133069617193290, +-0.169182349066996060, -0.169231628093842960, -0.169280906697611230, -0.169330184878176780, -0.169379462635416870, -0.169428739969208740, -0.169478016879428340, -0.169527293365952870, +-0.169576569428659200, -0.169625845067424510, -0.169675120282124810, -0.169724395072637290, -0.169773669438838760, -0.169822943380606520, -0.169872216897816480, -0.169921489990345900, +-0.169970762658071570, -0.170020034900870810, -0.170069306718619500, -0.170118578111194930, -0.170167849078473900, -0.170217119620333700, -0.170266389736650260, -0.170315659427300870, +-0.170364928692162300, -0.170414197531111870, -0.170463465944025480, -0.170512733930780450, -0.170562001491254000, -0.170611268625322140, -0.170660535332862070, -0.170709801613750680, +-0.170759067467865230, -0.170808332895081680, -0.170857597895277270, -0.170906862468328900, -0.170956126614113770, -0.171005390332507920, -0.171054653623388590, -0.171103916486632620, +-0.171153178922117290, -0.171202440929718590, -0.171251702509313790, -0.171300963660779710, -0.171350224383993670, -0.171399484678831650, -0.171448744545170890, -0.171498003982888280, +-0.171547262991861100, -0.171596521571965310, -0.171645779723078230, -0.171695037445077160, -0.171744294737838030, -0.171793551601238160, -0.171842808035154420, -0.171892064039464110, +-0.171941319614043190, -0.171990574758768970, -0.172039829473518310, -0.172089083758168530, -0.172138337612595590, -0.172187591036676800, -0.172236844030289050, -0.172286096593309620, +-0.172335348725614510, -0.172384600427081040, -0.172433851697586490, -0.172483102537006850, -0.172532352945219490, -0.172581602922101260, -0.172630852467529430, -0.172680101581380030, +-0.172729350263530400, -0.172778598513857380, -0.172827846332238300, -0.172877093718549170, -0.172926340672667290, -0.172975587194469590, -0.173024833283833330, -0.173074078940634590, +-0.173123324164750620, -0.173172568956058340, -0.173221813314435090, -0.173271057239756860, -0.173320300731900970, -0.173369543790744350, -0.173418786416164320, -0.173468028608036840, +-0.173517270366239320, -0.173566511690649070, -0.173615752581142090, -0.173664993037595750, -0.173714233059886900, -0.173763472647892910, -0.173812711801489800, -0.173861950520554920, +-0.173911188804965170, -0.173960426654597880, -0.174009664069329080, -0.174058901049036100, -0.174108137593595890, -0.174157373702885780, -0.174206609376781780, -0.174255844615161280, +-0.174305079417901160, -0.174354313784878760, -0.174403547715970160, -0.174452781211052680, -0.174502014270003250, -0.174551246892699240, -0.174600479079016660, -0.174649710828832880, +-0.174698942142025250, -0.174748173018469840, -0.174797403458043980, -0.174846633460624650, -0.174895863026089140, -0.174945092154313560, -0.174994320845175220, -0.175043549098551100, +-0.175092776914318540, -0.175142004292353600, -0.175191231232533630, -0.175240457734735620, -0.175289683798836890, -0.175338909424713500, -0.175388134612242840, -0.175437359361302280, +-0.175486583671767890, -0.175535807543517050, -0.175585030976426660, -0.175634253970374160, -0.175683476525235580, -0.175732698640888310, -0.175781920317209290, -0.175831141554075920, +-0.175880362351364230, -0.175929582708951650, -0.175978802626715110, -0.176028022104532000, -0.176077241142278410, -0.176126459739831710, -0.176175677897068870, -0.176224895613867260, +-0.176274112890102970, -0.176323329725653400, -0.176372546120395520, -0.176421762074206710, -0.176470977586963030, -0.176520192658541940, -0.176569407288820780, -0.176618621477675680, +-0.176667835224984030, -0.176717048530622780, -0.176766261394469350, -0.176815473816399840, -0.176864685796291640, -0.176913897334021710, -0.176963108429467500, -0.177012319082505060, +-0.177061529293011830, -0.177110739060864770, -0.177159948385941320, -0.177209157268117530, -0.177258365707270880, -0.177307573703278740, -0.177356781256017230, -0.177405988365363750, +-0.177455195031195310, -0.177504401253388870, -0.177553607031821880, -0.177602812366370460, -0.177652017256911960, -0.177701221703323890, -0.177750425705482330, -0.177799629263264670, +-0.177848832376547970, -0.177898035045209620, -0.177947237269125730, -0.177996439048173780, -0.178045640382230700, -0.178094841271173950, -0.178144041714879690, -0.178193241713225310, +-0.178242441266087820, -0.178291640373344690, -0.178340839034872000, -0.178390037250547220, -0.178439235020247780, -0.178488432343849810, -0.178537629221230760, -0.178586825652267630, +-0.178636021636837890, -0.178685217174817670, -0.178734412266084390, -0.178783606910515090, -0.178832801107987190, -0.178881994858376860, -0.178931188161561530, -0.178980381017418260, +-0.179029573425824460, -0.179078765386656290, -0.179127956899791190, -0.179177147965106230, -0.179226338582478800, -0.179275528751785120, -0.179324718472902600, -0.179373907745708300, +-0.179423096570079650, -0.179472284945892820, -0.179521472873025280, -0.179570660351354520, -0.179619847380756650, -0.179669033961109170, -0.179718220092289080, -0.179767405774173910, +-0.179816591006639770, -0.179865775789564140, -0.179914960122824100, -0.179964144006297090, -0.180013327439859290, -0.180062510423388140, -0.180111692956760740, -0.180160875039854530, +-0.180210056672545720, -0.180259237854711730, -0.180308418586230120, -0.180357598866977000, -0.180406778696829890, -0.180455958075665860, -0.180505137003362350, -0.180554315479795560, +-0.180603493504842980, -0.180652671078381650, -0.180701848200289120, -0.180751024870441510, -0.180800201088716330, -0.180849376854990640, -0.180898552169141970, -0.180947727031046470, +-0.180996901440581640, -0.181046075397624600, -0.181095248902052780, -0.181144421953742390, -0.181193594552570950, -0.181242766698415550, -0.181291938391153620, -0.181341109630661440, +-0.181390280416816490, -0.181439450749496270, -0.181488620628576990, -0.181537790053936170, -0.181586959025450860, -0.181636127542998570, -0.181685295606455550, -0.181734463215699280, +-0.181783630370606850, -0.181832797071055790, -0.181881963316922300, -0.181931129108083900, -0.181980294444417680, -0.182029459325801170, -0.182078623752110540, -0.182127787723223380, +-0.182176951239016750, -0.182226114299368160, -0.182275276904153880, -0.182324439053251380, -0.182373600746537800, -0.182422761983890620, -0.182471922765186150, -0.182521083090301850, +-0.182570242959115250, -0.182619402371502650, -0.182668561327341520, -0.182717719826509000, -0.182766877868882600, -0.182816035454338580, -0.182865192582754470, -0.182914349254007370, +-0.182963505467974850, -0.183012661224533140, -0.183061816523559740, -0.183110971364931820, -0.183160125748526910, -0.183209279674221260, -0.183258433141892390, -0.183307586151417870, +-0.183356738702673970, -0.183405890795538210, -0.183455042429887720, -0.183504193605600080, -0.183553344322551490, -0.183602494580619560, -0.183651644379681400, -0.183700793719614540, +-0.183749942600295290, -0.183799091021601160, -0.183848238983409300, -0.183897386485597310, -0.183946533528041380, -0.183995680110619150, -0.184044826233207700, -0.184093971895684600, +-0.184143117097926160, -0.184192261839809940, -0.184241406121213040, -0.184290549942013080, -0.184339693302086300, -0.184388836201310270, -0.184437978639562600, -0.184487120616719570, +-0.184536262132658700, -0.184585403187257190, -0.184634543780392620, -0.184683683911941260, -0.184732823581780670, -0.184781962789788030, -0.184831101535840920, -0.184880239819815610, +-0.184929377641589700, -0.184978515001040340, -0.185027651898045150, -0.185076788332480400, -0.185125924304223670, -0.185175059813152100, -0.185224194859143350, -0.185273329442073670, +-0.185322463561820670, -0.185371597218261520, -0.185420730411273800, -0.185469863140733800, -0.185518995406519170, -0.185568127208507460, -0.185617258546575010, -0.185666389420599430, +-0.185715519830457860, -0.185764649776027940, -0.185813779257185950, -0.185862908273809500, -0.185912036825775780, -0.185961164912962440, -0.186010292535245730, -0.186059419692503280, +-0.186108546384612270, -0.186157672611450360, -0.186206798372893810, -0.186255923668820270, -0.186305048499107370, -0.186354172863631400, -0.186403296762269990, -0.186452420194900350, +-0.186501543161400110, -0.186550665661645550, -0.186599787695514360, -0.186648909262883660, -0.186698030363631140, -0.186747150997633120, -0.186796271164767210, -0.186845390864910620, +-0.186894510097941000, -0.186943628863734670, -0.186992747162169240, -0.187041864993121980, -0.187090982356470450, -0.187140099252091070, -0.187189215679861410, -0.187238331639658750, +-0.187287447131360670, -0.187336562154843540, -0.187385676709984990, -0.187434790796662700, -0.187483904414752990, -0.187533017564133540, -0.187582130244681510, -0.187631242456274630, +-0.187680354198789170, -0.187729465472102870, -0.187778576276092870, -0.187827686610636870, -0.187876796475611230, -0.187925905870893580, -0.187975014796361200, -0.188024123251891690, +-0.188073231237361440, -0.188122338752648110, -0.188171445797628960, -0.188220552372181600, -0.188269658476182430, -0.188318764109509120, -0.188367869272038880, -0.188416973963649430, +-0.188466078184217100, -0.188515181933619570, -0.188564285211734520, -0.188613388018438330, -0.188662490353608660, -0.188711592217122780, -0.188760693608858330, -0.188809794528691730, +-0.188858894976500660, -0.188907994952162320, -0.188957094455554450, -0.189006193486553400, -0.189055292045036850, -0.189104390130882090, -0.189153487743966790, -0.189202584884167330, +-0.189251681551361410, -0.189300777745426720, -0.189349873466239630, -0.189398968713677900, -0.189448063487618720, -0.189497157787939820, -0.189546251614517600, -0.189595344967229740, +-0.189644437845953530, -0.189693530250566650, -0.189742622180945510, -0.189791713636967810, -0.189840804618510830, -0.189889895125452260, -0.189938985157668550, -0.189988074715037340, +-0.190037163797435990, -0.190086252404742110, -0.190135340536832200, -0.190184428193583940, -0.190233515374874600, -0.190282602080581900, -0.190331688310582280, -0.190380774064753430, +-0.190429859342973070, -0.190478944145117620, -0.190528028471064840, -0.190577112320691970, -0.190626195693876760, -0.190675278590495630, -0.190724361010426280, -0.190773442953546060, +-0.190822524419732630, -0.190871605408862500, -0.190920685920813320, -0.190969765955462440, -0.191018845512687580, -0.191067924592365160, -0.191117003194372940, -0.191166081318588640, +-0.191215158964888720, -0.191264236133150880, -0.191313312823252450, -0.191362389035070750, -0.191411464768483530, -0.191460540023367180, -0.191509614799599490, -0.191558689097058200, +-0.191607762915619760, -0.191656836255161890, -0.191705909115561960, -0.191754981496697670, -0.191804053398445500, -0.191853124820683200, -0.191902195763288070, -0.191951266226137920, +-0.192000336209109140, -0.192049405712079540, -0.192098474734926420, -0.192147543277527530, -0.192196611339759350, -0.192245678921499660, -0.192294746022626200, -0.192343812643015450, +-0.192392878782545160, -0.192441944441092670, -0.192491009618535740, -0.192540074314750870, -0.192589138529615820, -0.192638202263007900, -0.192687265514804920, -0.192736328284883350, +-0.192785390573120940, -0.192834452379395090, -0.192883513703583500, -0.192932574545562730, -0.192981634905210500, -0.193030694782404200, -0.193079754177021580, -0.193128813088939140, +-0.193177871518034670, -0.193226929464185540, -0.193275986927269490, -0.193325043907163070, -0.193374100403744030, -0.193423156416890170, -0.193472211946477980, -0.193521266992385250, +-0.193570321554489390, -0.193619375632668120, -0.193668429226798000, -0.193717482336756790, -0.193766534962421880, -0.193815587103671080, -0.193864638760380880, -0.193913689932429080, +-0.193962740619693040, -0.194011790822050580, -0.194060840539378220, -0.194109889771553770, -0.194158938518455000, -0.194207986779958490, -0.194257034555941980, -0.194306081846282900, +-0.194355128650858610, -0.194404174969546930, -0.194453220802224380, -0.194502266148768780, -0.194551311009057950, -0.194600355382968410, -0.194649399270377970, -0.194698442671164040, +-0.194747485585204440, -0.194796528012375710, -0.194845569952555640, -0.194894611405621640, -0.194943652371451560, -0.194992692849921910, -0.195041732840910500, -0.195090772344294780, +-0.195139811359952590, -0.195188849887760390, -0.195237887927596110, -0.195286925479337510, -0.195335962542861170, -0.195384999118044940, -0.195434035204766210, -0.195483070802902810, +-0.195532105912331310, -0.195581140532929550, -0.195630174664574910, -0.195679208307145300, -0.195728241460517230, -0.195777274124568550, -0.195826306299176660, -0.195875337984219470, +-0.195924369179573510, -0.195973399885116610, -0.196022430100726200, -0.196071459826280160, -0.196120489061655050, -0.196169517806728700, -0.196218546061378560, -0.196267573825482490, +-0.196316601098917050, -0.196365627881560120, -0.196414654173289540, -0.196463679973981900, -0.196512705283515030, -0.196561730101766420, -0.196610754428613920, -0.196659778263934100, +-0.196708801607604840, -0.196757824459503570, -0.196806846819508160, -0.196855868687495220, -0.196904890063342610, -0.196953910946927770, -0.197002931338128570, -0.197051951236821620, +-0.197100970642884790, -0.197149989556195980, -0.197199007976631730, -0.197248025904070010, -0.197297043338388180, -0.197346060279464190, -0.197395076727174630, -0.197444092681397340, +-0.197493108142009850, -0.197542123108890020, -0.197591137581914460, -0.197640151560961040, -0.197689165045907250, -0.197738178036630960, -0.197787190533008810, -0.197836202534918680, +-0.197885214042238050, -0.197934225054844810, -0.197983235572615570, -0.198032245595428260, -0.198081255123160330, -0.198130264155689680, -0.198179272692892950, -0.198228280734648040, +-0.198277288280832850, -0.198326295331324010, -0.198375301885999440, -0.198424307944736590, -0.198473313507413430, -0.198522318573906560, -0.198571323144093870, -0.198620327217852890, +-0.198669330795061520, -0.198718333875596370, -0.198767336459335420, -0.198816338546156100, -0.198865340135936370, -0.198914341228552870, -0.198963341823883500, -0.199012341921805810, +-0.199061341522197680, -0.199110340624935740, -0.199159339229897980, -0.199208337336961860, -0.199257334946005310, -0.199306332056905010, -0.199355328669538890, -0.199404324783784860, +-0.199453320399519600, -0.199502315516621040, -0.199551310134966690, -0.199600304254434480, -0.199649297874901100, -0.199698290996244480, -0.199747283618342100, -0.199796275741071980, +-0.199845267364310710, -0.199894258487936290, -0.199943249111826200, -0.199992239235858430, -0.200041228859909660, -0.200090217983857790, -0.200139206607580810, -0.200188194730955370, +-0.200237182353859460, -0.200286169476170590, -0.200335156097766730, -0.200384142218524550, -0.200433127838322010, -0.200482112957036630, -0.200531097574546430, -0.200580081690728050, +-0.200629065305459460, -0.200678048418618190, -0.200727031030082270, -0.200776013139728320, -0.200824994747434320, -0.200873975853077870, -0.200922956456536880, -0.200971936557688080, +-0.201020916156409430, -0.201069895252578510, -0.201118873846073270, -0.201167851936770420, -0.201216829524547920, -0.201265806609283810, -0.201314783190854720, -0.201363759269138690, +-0.201412734844013260, -0.201461709915356420, -0.201510684483044880, -0.201559658546956620, -0.201608632106969220, -0.201657605162960690, -0.201706577714807680, -0.201755549762388240, +-0.201804521305579940, -0.201853492344260750, -0.201902462878307400, -0.201951432907597900, -0.202000402432009810, -0.202049371451421160, -0.202098339965708640, -0.202147307974750280, +-0.202196275478423640, -0.202245242476606750, -0.202294208969176300, -0.202343174956010340, -0.202392140436986890, -0.202441105411982650, -0.202490069880875640, -0.202539033843543460, +-0.202587997299864130, -0.202636960249714370, -0.202685922692972200, -0.202734884629515220, -0.202783846059221480, -0.202832806981967710, -0.202881767397631890, -0.202930727306091660, +-0.202979686707225050, -0.203028645600908770, -0.203077603987020900, -0.203126561865439450, -0.203175519236041160, -0.203224476098704060, -0.203273432453305790, -0.203322388299724350, +-0.203371343637836520, -0.203420298467520330, -0.203469252788653380, -0.203518206601113750, -0.203567159904778170, -0.203616112699524680, -0.203665064985230900, -0.203714016761774920, +-0.203762968029033460, -0.203811918786884570, -0.203860869035205870, -0.203909818773875460, -0.203958768002770050, -0.204007716721767710, -0.204056664930746090, -0.204105612629583240, +-0.204154559818155920, -0.204203506496342220, -0.204252452664020170, -0.204301398321066560, -0.204350343467359450, -0.204399288102776490, -0.204448232227195740, -0.204497175840493980, +-0.204546118942549260, -0.204595061533239280, -0.204644003612442060, -0.204692945180034390, -0.204741886235894370, -0.204790826779899630, -0.204839766811928250, -0.204888706331857020, +-0.204937645339564020, -0.204986583834927350, -0.205035521817823780, -0.205084459288131400, -0.205133396245727910, -0.205182332690490880, -0.205231268622298480, -0.205280204041027480, +-0.205329138946555970, -0.205378073338762010, -0.205427007217522470, -0.205475940582715400, -0.205524873434218490, -0.205573805771909810, -0.205622737595666180, -0.205671668905365730, +-0.205720599700886100, -0.205769529982105400, -0.205818459748900450, -0.205867389001149340, -0.205916317738729760, -0.205965245961519800, -0.206014173669396310, -0.206063100862237390, +-0.206112027539921170, -0.206160953702324400, -0.206209879349325280, -0.206258804480801440, -0.206307729096631060, -0.206356653196690890, -0.206405576780859110, -0.206454499849013370, +-0.206503422401031810, -0.206552344436791270, -0.206601265956169870, -0.206650186959045300, -0.206699107445295710, -0.206748027414797920, -0.206796946867430030, -0.206845865803069790, +-0.206894784221595320, -0.206943702122883460, -0.206992619506812360, -0.207041536373259670, -0.207090452722103610, -0.207139368553220990, -0.207188283866489910, -0.207237198661788580, +-0.207286112938993820, -0.207335026697983760, -0.207383939938636160, -0.207432852660829110, -0.207481764864439530, -0.207530676549345510, -0.207579587715424810, -0.207628498362555590, +-0.207677408490614670, -0.207726318099480220, -0.207775227189029990, -0.207824135759142130, -0.207873043809693490, -0.207921951340562240, -0.207970858351626570, -0.208019764842763300, +-0.208068670813850610, -0.208117576264766240, -0.208166481195387940, -0.208215385605593880, -0.208264289495260910, -0.208313192864267220, -0.208362095712490980, -0.208410998039809060, +-0.208459899846099670, -0.208508801131240510, -0.208557701895109780, -0.208606602137584360, -0.208655501858542450, -0.208704401057861750, -0.208753299735420530, -0.208802197891095610, +-0.208851095524765190, -0.208899992636307010, -0.208948889225599320, -0.208997785292518940, -0.209046680836944110, -0.209095575858753020, -0.209144470357822550, -0.209193364334030910, +-0.209242257787255860, -0.209291150717375580, -0.209340043124267020, -0.209388935007808340, -0.209437826367877310, -0.209486717204352160, -0.209535607517109780, -0.209584497306028380, +-0.209633386570985740, -0.209682275311860070, -0.209731163528528270, -0.209780051220868570, -0.209828938388758740, -0.209877825032077000, -0.209926711150700250, -0.209975596744506720, +-0.210024481813374210, -0.210073366357180940, -0.210122250375803820, -0.210171133869121060, -0.210220016837010890, -0.210268899279350270, -0.210317781196017380, -0.210366662586890050, +-0.210415543451846490, -0.210464423790763630, -0.210513303603519750, -0.210562182889992570, -0.210611061650060380, -0.210659939883600100, -0.210708817590489980, -0.210757694770607800, +-0.210806571423831830, -0.210855447550038990, -0.210904323149107540, -0.210953198220915710, -0.211002072765340440, -0.211050946782260000, -0.211099820271552190, -0.211148693233095260, +-0.211197565666766170, -0.211246437572443190, -0.211295308950004090, -0.211344179799327150, -0.211393050120289330, -0.211441919912768870, -0.211490789176643630, -0.211539657911791860, +-0.211588526118090480, -0.211637393795417790, -0.211686260943651640, -0.211735127562670270, -0.211783993652350620, -0.211832859212571000, -0.211881724243209250, -0.211930588744143610, +-0.211979452715251070, -0.212028316156409880, -0.212077179067498340, -0.212126041448393420, -0.212174903298973400, -0.212223764619116130, -0.212272625408699870, -0.212321485667601620, +-0.212370345395699660, -0.212419204592871810, -0.212468063258996390, -0.212516921393950400, -0.212565778997612090, -0.212614636069859340, -0.212663492610570440, -0.212712348619622380, +-0.212761204096893420, -0.212810059042261470, -0.212858913455604790, -0.212907767336800420, -0.212956620685726600, -0.213005473502261260, -0.213054325786282640, -0.213103177537667800, +-0.213152028756294990, -0.213200879442042580, -0.213249729594787500, -0.213298579214408120, -0.213347428300782270, -0.213396276853788290, -0.213445124873303190, -0.213493972359205280, +-0.213542819311372420, -0.213591665729682970, -0.213640511614013930, -0.213689356964243570, -0.213738201780249850, -0.213787046061911040, -0.213835889809104200, -0.213884733021707630, +-0.213933575699599670, -0.213982417842657310, -0.214031259450758930, -0.214080100523782400, -0.214128941061606040, -0.214177781064106900, -0.214226620531163310, -0.214275459462653170, +-0.214324297858454800, -0.214373135718445270, -0.214421973042502880, -0.214470809830505590, -0.214519646082331680, -0.214568481797858230, -0.214617316976963600, -0.214666151619525620, +-0.214714985725422750, -0.214763819294531950, -0.214812652326731630, -0.214861484821899650, -0.214910316779914400, -0.214959148200652930, -0.215007979083993610, -0.215056809429814750, +-0.215105639237993420, -0.215154468508408030, -0.215203297240936430, -0.215252125435457050, -0.215300953091846910, -0.215349780209984380, -0.215398606789747430, -0.215447432831014360, +-0.215496258333662290, -0.215545083297569580, -0.215593907722614160, -0.215642731608674390, -0.215691554955627360, -0.215740377763351480, -0.215789200031724610, -0.215838021760625190, +-0.215886842949930300, -0.215935663599518270, -0.215984483709267090, -0.216033303279055150, -0.216082122308759510, -0.216130940798258560, -0.216179758747430700, -0.216228576156153010, +-0.216277393024303880, -0.216326209351761250, -0.216375025138403540, -0.216423840384107840, -0.216472655088752520, -0.216521469252215580, -0.216570282874375410, -0.216619095955109090, +-0.216667908494295010, -0.216716720491811180, -0.216765531947535980, -0.216814342861346520, -0.216863153233121190, -0.216911963062738440, -0.216960772350075330, -0.217009581095010280, +-0.217058389297421270, -0.217107196957186750, -0.217156004074183780, -0.217204810648290810, -0.217253616679385810, -0.217302422167347210, -0.217351227112052130, -0.217400031513378940, +-0.217448835371205710, -0.217497638685410830, -0.217546441455871400, -0.217595243682465860, -0.217644045365072230, -0.217692846503568900, -0.217741647097833060, -0.217790447147743070, +-0.217839246653176940, -0.217888045614013180, -0.217936844030128830, -0.217985641901402400, -0.218034439227712290, -0.218083236008935640, -0.218132032244950900, -0.218180827935636090, +-0.218229623080869630, -0.218278417680528690, -0.218327211734491710, -0.218376005242636670, -0.218424798204842090, -0.218473590620985060, -0.218522382490944050, -0.218571173814597090, +-0.218619964591822650, -0.218668754822497840, -0.218717544506501160, -0.218766333643711040, -0.218815122234004650, -0.218863910277260460, -0.218912697773356480, -0.218961484722170780, +-0.219010271123581790, -0.219059056977466690, -0.219107842283703950, -0.219156627042172040, -0.219205411252748120, -0.219254194915310670, -0.219302978029737750, -0.219351760595907800, +-0.219400542613698010, -0.219449324082986900, -0.219498105003652440, -0.219546885375573180, -0.219595665198626250, -0.219644444472690160, -0.219693223197642980, -0.219742001373363170, +-0.219790778999727900, -0.219839556076615710, -0.219888332603905030, -0.219937108581473110, -0.219985884009198410, -0.220034658886959030, -0.220083433214633390, -0.220132206992098760, +-0.220180980219233600, -0.220229752895916010, -0.220278525022024470, -0.220327296597436160, -0.220376067622029630, -0.220424838095682920, -0.220473608018274540, -0.220522377389681720, +-0.220571146209782960, -0.220619914478456330, -0.220668682195580330, -0.220717449361032210, -0.220766215974690480, -0.220814982036433180, -0.220863747546138880, -0.220912512503684770, +-0.220961276908949370, -0.221010040761811240, -0.221058804062147530, -0.221107566809836840, -0.221156329004757230, -0.221205090646787230, -0.221253851735804090, -0.221302612271686290, +-0.221351372254311980, -0.221400131683559650, -0.221448890559306580, -0.221497648881431250, -0.221546406649811840, -0.221595163864326820, -0.221643920524853460, -0.221692676631270320, +-0.221741432183455910, -0.221790187181287480, -0.221838941624643570, -0.221887695513402320, -0.221936448847441850, -0.221985201626640680, -0.222033953850876040, -0.222082705520026540, +-0.222131456633970710, -0.222180207192585830, -0.222228957195750390, -0.222277706643342590, -0.222326455535240940, -0.222375203871322730, -0.222423951651466500, -0.222472698875550380, +-0.222521445543452960, -0.222570191655051490, -0.222618937210224550, -0.222667682208850250, -0.222716426650807180, -0.222765170535972640, -0.222813913864225140, -0.222862656635443300, +-0.222911398849504390, -0.222960140506286990, -0.223008881605669200, -0.223057622147529670, -0.223106362131745640, -0.223155101558195730, -0.223203840426758030, -0.223252578737311190, +-0.223301316489732480, -0.223350053683900460, -0.223398790319693290, -0.223447526396989590, -0.223496261915666660, -0.223544996875603060, -0.223593731276676950, -0.223642465118766980, +-0.223691198401750390, -0.223739931125505800, -0.223788663289911400, -0.223837394894845780, -0.223886125940186230, -0.223934856425811350, -0.223983586351599790, -0.224032315717428790, +-0.224081044523177040, -0.224129772768722670, -0.224178500453944300, -0.224227227578719240, -0.224275954142926110, -0.224324680146443110, -0.224373405589148840, -0.224422130470920610, +-0.224470854791637060, -0.224519578551176350, -0.224568301749417170, -0.224617024386236760, -0.224665746461513830, -0.224714467975126950, -0.224763188926953460, -0.224811909316872010, +-0.224860629144760770, -0.224909348410498390, -0.224958067113962240, -0.225006785255030900, -0.225055502833582580, -0.225104219849495970, -0.225152936302648350, -0.225201652192918410, +-0.225250367520184320, -0.225299082284324740, -0.225347796485217050, -0.225396510122739840, -0.225445223196771380, -0.225493935707190260, -0.225542647653873910, -0.225591359036700910, +-0.225640069855549520, -0.225688780110298390, -0.225737489800824890, -0.225786198927007660, -0.225834907488725340, -0.225883615485855340, -0.225932322918276310, -0.225981029785866460, +-0.226029736088504490, -0.226078441826067710, -0.226127146998434860, -0.226175851605484120, -0.226224555647094180, -0.226273259123142450, -0.226321962033507550, -0.226370664378067740, +-0.226419366156701720, -0.226468067369286820, -0.226516768015701780, -0.226565468095824810, -0.226614167609534590, -0.226662866556708560, -0.226711564937225330, -0.226760262750963200, +-0.226808959997800820, -0.226857656677615650, -0.226906352790286310, -0.226955048335691520, -0.227003743313708680, -0.227052437724216490, -0.227101131567093190, -0.227149824842217520, +-0.227198517549466850, -0.227247209688719860, -0.227295901259854880, -0.227344592262750560, -0.227393282697284320, -0.227441972563334870, -0.227490661860780510, -0.227539350589499920, +-0.227588038749370530, -0.227636726340271020, -0.227685413362080150, -0.227734099814675290, -0.227782785697935200, -0.227831471011738150, -0.227880155755962850, -0.227928839930486710, +-0.227977523535188490, -0.228026206569946460, -0.228074889034639350, -0.228123570929144560, -0.228172252253340870, -0.228220933007106550, -0.228269613190320330, -0.228318292802859620, +-0.228366971844603190, -0.228415650315429320, -0.228464328215216780, -0.228513005543842990, -0.228561682301186670, -0.228610358487126130, -0.228659034101540150, -0.228707709144306160, +-0.228756383615302870, -0.228805057514409080, -0.228853730841502210, -0.228902403596461000, -0.228951075779163770, -0.228999747389489310, -0.229048418427315020, -0.229097088892519700, +-0.229145758784981670, -0.229194428104579660, -0.229243096851191150, -0.229291765024694890, -0.229340432624969250, -0.229389099651892940, -0.229437766105343440, -0.229486431985199520, +-0.229535097291339560, -0.229583762023642250, -0.229632426181985120, -0.229681089766246900, -0.229729752776305970, -0.229778415212041120, -0.229827077073329780, -0.229875738360050740, +-0.229924399072082790, -0.229973059209303390, -0.230021718771591360, -0.230070377758825050, -0.230119036170883200, -0.230167694007643340, -0.230216351268984270, -0.230265007954784270, +-0.230313664064922210, -0.230362319599275560, -0.230410974557723110, -0.230459628940143210, -0.230508282746414690, -0.230556935976415020, -0.230605588630023030, -0.230654240707117490, +-0.230702892207575890, -0.230751543131277080, -0.230800193478099410, -0.230848843247921710, -0.230897492440621440, -0.230946141056077440, -0.230994789094168100, -0.231043436554772220, +-0.231092083437767330, -0.231140729743032210, -0.231189375470445270, -0.231238020619885330, -0.231286665191229900, -0.231335309184357800, -0.231383952599147430, -0.231432595435477620, +-0.231481237693225870, -0.231529879372271040, -0.231578520472491530, -0.231627160993766120, -0.231675800935972400, -0.231724440298989170, -0.231773079082695260, -0.231821717286968240, +-0.231870354911686890, -0.231918991956729690, -0.231967628421975440, -0.232016264307301680, -0.232064899612587250, -0.232113534337710590, -0.232162168482550500, -0.232210802046984580, +-0.232259435030891640, -0.232308067434150110, -0.232356699256638850, -0.232405330498235420, -0.232453961158818670, -0.232502591238267000, -0.232551220736459290, -0.232599849653273070, +-0.232648477988587260, -0.232697105742280250, -0.232745732914230900, -0.232794359504316790, -0.232842985512416780, -0.232891610938409740, -0.232940235782173240, -0.232988860043586150, +-0.233037483722526920, -0.233086106818874400, -0.233134729332506170, -0.233183351263301140, -0.233231972611137710, -0.233280593375894800, -0.233329213557449950, -0.233377833155682110, +-0.233426452170469640, -0.233475070601691510, -0.233523688449225250, -0.233572305712949760, -0.233620922392743960, -0.233669538488485430, -0.233718154000053020, -0.233766768927325260, +-0.233815383270180980, -0.233863997028497830, -0.233912610202154670, -0.233961222791029990, -0.234009834795002700, -0.234058446213950390, -0.234107057047751950, -0.234155667296285870, +-0.234204276959431050, -0.234252886037065120, -0.234301494529066960, -0.234350102435315070, -0.234398709755688360, -0.234447316490064450, -0.234495922638322220, -0.234544528200340220, +-0.234593133175997310, -0.234641737565171150, -0.234690341367740610, -0.234738944583584690, -0.234787547212580970, -0.234836149254608360, -0.234884750709545400, -0.234933351577270990, +-0.234981951857662770, -0.235030551550599650, -0.235079150655960160, -0.235127749173623250, -0.235176347103466520, -0.235224944445368900, -0.235273541199208960, -0.235322137364865570, +-0.235370732942216420, -0.235419327931140430, -0.235467922331516530, -0.235516516143222420, -0.235565109366137030, -0.235613702000138840, -0.235662294045106410, -0.235710885500918680, +-0.235759476367453290, -0.235808066644589230, -0.235856656332205400, -0.235905245430179540, -0.235953833938390530, -0.236002421856716970, -0.236051009185037770, -0.236099595923230600, +-0.236148182071174470, -0.236196767628747860, -0.236245352595829770, -0.236293936972297860, -0.236342520758031140, -0.236391103952908080, -0.236439686556807720, -0.236488268569607700, +-0.236536849991187010, -0.236585430821424610, -0.236634011060198210, -0.236682590707386810, -0.236731169762868900, -0.236779748226523510, -0.236828326098228320, -0.236876903377862320, +-0.236925480065304060, -0.236974056160432520, -0.237022631663125400, -0.237071206573261720, -0.237119780890720030, -0.237168354615379300, -0.237216927747117250, -0.237265500285812890, +-0.237314072231344790, -0.237362643583591940, -0.237411214342432040, -0.237459784507744100, -0.237508354079406710, -0.237556923057298860, -0.237605491441298280, -0.237654059231283940, +-0.237702626427134910, -0.237751193028728880, -0.237799759035944860, -0.237848324448661470, -0.237896889266757670, -0.237945453490111230, -0.237994017118601160, -0.238042580152106030, +-0.238091142590504870, -0.238139704433675460, -0.238188265681496760, -0.238236826333847410, -0.238285386390606420, -0.238333945851651550, -0.238382504716861790, -0.238431062986116220, +-0.238479620659292540, -0.238528177736269830, -0.238576734216926660, -0.238625290101142080, -0.238673845388793880, -0.238722400079761030, -0.238770954173922190, -0.238819507671156390, +-0.238868060571341410, -0.238916612874356280, -0.238965164580079600, -0.239013715688390440, -0.239062266199166570, -0.239110816112287020, -0.239159365427630440, -0.239207914145075890, +-0.239256462264501090, -0.239305009785785170, -0.239353556708806700, -0.239402103033444780, -0.239450648759577170, -0.239499193887082930, -0.239547738415841150, -0.239596282345729610, +-0.239644825676627340, -0.239693368408413020, -0.239741910540965690, -0.239790452074163160, -0.239838993007884500, -0.239887533342008350, -0.239936073076413820, -0.239984612210978670, +-0.240033150745581960, -0.240081688680102410, -0.240130226014419050, -0.240178762748409710, -0.240227298881953430, -0.240275834414928950, -0.240324369347215290, -0.240372903678690270, +-0.240421437409233000, -0.240469970538722130, -0.240518503067036760, -0.240567034994054710, -0.240615566319655080, -0.240664097043716970, -0.240712627166118160, -0.240761156686737810, +-0.240809685605454540, -0.240858213922147510, -0.240906741636694510, -0.240955268748974660, -0.241003795258866640, -0.241052321166249560, -0.241100846471001220, -0.241149371173000780, +-0.241197895272126930, -0.241246418768258750, -0.241294941661274100, -0.241343463951052110, -0.241391985637471880, -0.241440506720411260, -0.241489027199749350, -0.241537547075364900, +-0.241586066347137000, -0.241634585014943500, -0.241683103078663560, -0.241731620538175850, -0.241780137393359520, -0.241828653644092400, -0.241877169290253660, -0.241925684331721990, +-0.241974198768376560, -0.242022712600095170, -0.242071225826757020, -0.242119738448240810, -0.242168250464425670, -0.242216761875189480, -0.242265272680411370, -0.242313782879970100, +-0.242362292473744800, -0.242410801461613340, -0.242459309843454870, -0.242507817619148550, -0.242556324788572280, -0.242604831351605180, -0.242653337308125990, -0.242701842658013920, +-0.242750347401146790, -0.242798851537403800, -0.242847355066663660, -0.242895857988805590, -0.242944360303707420, -0.242992862011248370, -0.243041363111307170, -0.243089863603762970, +-0.243138363488493690, -0.243186862765378510, -0.243235361434296170, -0.243283859495125850, -0.243332356947745470, -0.243380853792034170, -0.243429350027870750, -0.243477845655134390, +-0.243526340673702960, -0.243574835083455700, -0.243623328884271790, -0.243671822076029110, -0.243720314658606880, -0.243768806631883880, -0.243817297995739280, -0.243865788750050990, +-0.243914278894698240, -0.243962768429559800, -0.244011257354514870, -0.244059745669441360, -0.244108233374218500, -0.244156720468725050, -0.244205206952840200, -0.244253692826441940, +-0.244302178089409430, -0.244350662741621930, -0.244399146782957290, -0.244447630213294830, -0.244496113032513280, -0.244544595240491880, -0.244593076837108570, -0.244641557822242560, +-0.244690038195772650, -0.244738517957578060, -0.244786997107536760, -0.244835475645527990, -0.244883953571430500, -0.244932430885123560, -0.244980907586485140, -0.245029383675394420, +-0.245077859151730250, -0.245126334015371870, -0.245174808266197230, -0.245223281904085540, -0.245271754928915680, -0.245320227340566850, -0.245368699138917010, -0.245417170323845440, +-0.245465640895231370, -0.245514110852952770, -0.245562580196888870, -0.245611048926918540, -0.245659517042921020, -0.245707984544774270, -0.245756451432357550, -0.245804917705549740, +-0.245853383364230020, -0.245901848408276450, -0.245950312837568240, -0.245998776651984250, -0.246047239851403730, -0.246095702435704690, -0.246144164404766410, -0.246192625758467700, +-0.246241086496687880, -0.246289546619304880, -0.246338006126198050, -0.246386465017246180, -0.246434923292328580, -0.246483380951323240, -0.246531837994109470, -0.246580294420566530, +-0.246628750230572400, -0.246677205424006420, -0.246725660000747420, -0.246774113960674670, -0.246822567303666250, -0.246871020029601370, -0.246919472138358960, -0.246967923629818310, +-0.247016374503857410, -0.247064824760355600, -0.247113274399191700, -0.247161723420245030, -0.247210171823393670, -0.247258619608516830, -0.247307066775493910, -0.247355513324202860, +-0.247403959254523050, -0.247452404566333330, -0.247500849259512600, -0.247549293333940180, -0.247597736789494090, -0.247646179626053680, -0.247694621843498250, -0.247743063441705800, +-0.247791504420555720, -0.247839944779926880, -0.247888384519698610, -0.247936823639748920, -0.247985262139957200, -0.248033700020202750, -0.248082137280363600, -0.248130573920319120, +-0.248179009939948210, -0.248227445339129770, -0.248275880117743150, -0.248324314275666400, -0.248372747812778880, -0.248421180728959880, -0.248469613024087540, -0.248518044698041150, +-0.248566475750699650, -0.248614906181942400, -0.248663335991647440, -0.248711765179694150, -0.248760193745961420, -0.248808621690328660, -0.248857049012673910, -0.248905475712876550, +-0.248953901790815500, -0.249002327246370110, -0.249050752079418490, -0.249099176289839960, -0.249147599877513950, -0.249196022842318510, -0.249244445184133000, -0.249292866902836360, +-0.249341287998307570, -0.249389708470425990, -0.249438128319069720, -0.249486547544118110, -0.249534966145450590, -0.249583384122945200, -0.249631801476481370, -0.249680218205938030, +-0.249728634311194550, -0.249777049792129090, -0.249825464648620960, -0.249873878880549210, -0.249922292487793190, -0.249970705470230980, -0.250019117827742050, -0.250067529560205280, +-0.250115940667500150, -0.250164351149504690, -0.250212761006098410, -0.250261170237160660, -0.250309578842569490, -0.250357986822204450, -0.250406394175944400, -0.250454800903668340, +-0.250503207005255750, -0.250551612480584720, -0.250600017329534630, -0.250648421551984910, -0.250696825147813720, -0.250745228116900480, -0.250793630459124170, -0.250842032174364240, +-0.250890433262498770, -0.250938833723407200, -0.250987233556969000, -0.251035632763062290, -0.251084031341566480, -0.251132429292360630, -0.251180826615323650, -0.251229223310335090, +-0.251277619377273000, -0.251326014816016910, -0.251374409626446140, -0.251422803808438950, -0.251471197361874790, -0.251519590286632570, -0.251567982582591830, -0.251616374249630740, +-0.251664765287628660, -0.251713155696464690, -0.251761545476018260, -0.251809934626167580, -0.251858323146792020, -0.251906711037770630, -0.251955098298982940, -0.252003484930307050, +-0.252051870931622460, -0.252100256302808580, -0.252148641043743680, -0.252197025154307140, -0.252245408634378050, -0.252293791483835460, -0.252342173702558790, -0.252390555290426310, +-0.252438936247317390, -0.252487316573111580, -0.252535696267687020, -0.252584075330923250, -0.252632453762699270, -0.252680831562894610, -0.252729208731387430, -0.252777585268057270, +-0.252825961172783110, -0.252874336445444440, -0.252922711085919520, -0.252971085094087830, -0.253019458469828480, -0.253067831213020840, -0.253116203323543230, -0.253164574801275080, +-0.253212945646095980, -0.253261315857884030, -0.253309685436518830, -0.253358054381879360, -0.253406422693845220, -0.253454790372294620, -0.253503157417106990, -0.253551523828161480, +-0.253599889605337640, -0.253648254748513600, -0.253696619257568920, -0.253744983132382750, -0.253793346372834520, -0.253841708978802430, -0.253890070950166140, -0.253938432286805070, +-0.253986792988597500, -0.254035153055422960, -0.254083512487160550, -0.254131871283689300, -0.254180229444888880, -0.254228586970637380, -0.254276943860814450, -0.254325300115299640, +-0.254373655733971080, -0.254422010716708390, -0.254470365063390660, -0.254518718773897480, -0.254567071848107060, -0.254615424285899010, -0.254663776087152350, -0.254712127251746630, +-0.254760477779560230, -0.254808827670472640, -0.254857176924362940, -0.254905525541110790, -0.254953873520594340, -0.255002220862693200, -0.255050567567286950, -0.255098913634253910, +-0.255147259063473520, -0.255195603854824980, -0.255243948008187450, -0.255292291523440520, -0.255340634400462340, -0.255388976639132630, -0.255437318239330910, -0.255485659200935470, +-0.255533999523825880, -0.255582339207881260, -0.255630678252981250, -0.255679016659004110, -0.255727354425829450, -0.255775691553336350, -0.255824028041404530, -0.255872363889912140, +-0.255920699098738880, -0.255969033667763860, -0.256017367596866660, -0.256065700885925620, -0.256114033534820370, -0.256162365543430410, -0.256210696911634170, -0.256259027639311130, +-0.256307357726340560, -0.256355687172601990, -0.256404015977973800, -0.256452344142335530, -0.256500671665566450, -0.256548998547546090, -0.256597324788152840, -0.256645650387266220, +-0.256693975344765510, -0.256742299660530300, -0.256790623334438920, -0.256838946366370950, -0.256887268756206040, -0.256935590503822590, -0.256983911609100110, -0.257032232071917830, +-0.257080551892155010, -0.257128871069691230, -0.257177189604404830, -0.257225507496175450, -0.257273824744882810, -0.257322141350405100, -0.257370457312622040, -0.257418772631412830, +-0.257467087306657180, -0.257515401338233310, -0.257563714726020960, -0.257612027469899360, -0.257660339569748100, -0.257708651025445550, -0.257756961836871360, -0.257805272003904800, +-0.257853581526425460, -0.257901890404311770, -0.257950198637443340, -0.257998506225699810, -0.258046813168959610, -0.258095119467102400, -0.258143425120007370, -0.258191730127553750, +-0.258240034489621300, -0.258288338206088260, -0.258336641276834420, -0.258384943701739420, -0.258433245480681580, -0.258481546613540670, -0.258529847100195890, -0.258578146940526890, +-0.258626446134412100, -0.258674744681731240, -0.258723042582363500, -0.258771339836188550, -0.258819636443084870, -0.258867932402932040, -0.258916227715609400, -0.258964522380996650, +-0.259012816398972170, -0.259061109769415600, -0.259109402492206710, -0.259157694567223870, -0.259205985994346800, -0.259254276773454810, -0.259302566904427490, -0.259350856387143340, +-0.259399145221482110, -0.259447433407322960, -0.259495720944545650, -0.259544007833028610, -0.259592294072651550, -0.259640579663293790, -0.259688864604834980, -0.259737148897153600, +-0.259785432540129370, -0.259833715533641930, -0.259881997877569830, -0.259930279571792660, -0.259978560616189850, -0.260026841010640610, -0.260075120755024700, -0.260123399849220560, +-0.260171678293107940, -0.260219956086566560, -0.260268233229474840, -0.260316509721712550, -0.260364785563158950, -0.260413060753693860, -0.260461335293195650, -0.260509609181544140, +-0.260557882418618600, -0.260606155004298790, -0.260654426938463140, -0.260702698220991400, -0.260750968851762970, -0.260799238830657530, -0.260847508157553530, -0.260895776832330780, +-0.260944044854869050, -0.260992312225046710, -0.261040578942743630, -0.261088845007839130, -0.261137110420212480, -0.261185375179743500, -0.261233639286310660, -0.261281902739793680, +-0.261330165540072430, -0.261378427687025290, -0.261426689180532080, -0.261474950020472160, -0.261523210206725310, -0.261571469739170000, -0.261619728617686010, -0.261667986842152700, +-0.261716244412449890, -0.261764501328455970, -0.261812757590050850, -0.261861013197113800, -0.261909268149524700, -0.261957522447161920, -0.262005776089905380, -0.262054029077634810, +-0.262102281410228790, -0.262150533087567030, -0.262198784109528900, -0.262247034475994290, -0.262295284186841670, -0.262343533241950810, -0.262391781641201140, -0.262440029384472420, +-0.262488276471643240, -0.262536522902593330, -0.262584768677202100, -0.262633013795349420, -0.262681258256913740, -0.262729502061774920, -0.262777745209812790, -0.262825987700905870, +-0.262874229534934000, -0.262922470711776550, -0.262970711231312880, -0.263018951093422880, -0.263067190297985090, -0.263115428844879320, -0.263163666733985390, -0.263211903965181850, +-0.263260140538348620, -0.263308376453364970, -0.263356611710110820, -0.263404846308464720, -0.263453080248306550, -0.263501313529515610, -0.263549546151971850, -0.263597778115553790, +-0.263646009420141270, -0.263694240065613760, -0.263742470051851030, -0.263790699378731730, -0.263838928046135680, -0.263887156053942750, -0.263935383402031490, -0.263983610090281760, +-0.264031836118573000, -0.264080061486784650, -0.264128286194796610, -0.264176510242487390, -0.264224733629736920, -0.264272956356425060, -0.264321178422430300, -0.264369399827632690, +-0.264417620571911540, -0.264465840655146780, -0.264514060077216950, -0.264562278838001990, -0.264610496937381760, -0.264658714375234860, -0.264706931151441170, -0.264755147265880180, +-0.264803362718431300, -0.264851577508974480, -0.264899791637388250, -0.264948005103552540, -0.264996217907347230, -0.265044430048650970, -0.265092641527343630, -0.265140852343304700, +-0.265189062496414050, -0.265237271986550340, -0.265285480813593430, -0.265333688977422820, -0.265381896477918430, -0.265430103314958870, -0.265478309488423990, -0.265526514998193410, +-0.265574719844146930, -0.265622924026163280, -0.265671127544122250, -0.265719330397903850, -0.265767532587386720, -0.265815734112450740, -0.265863934972975450, -0.265912135168840270, +-0.265960334699925250, -0.266008533566108930, -0.266056731767271240, -0.266104929303292210, -0.266153126174050400, -0.266201322379425730, -0.266249517919297850, -0.266297712793546530, +-0.266345907002050520, -0.266394100544689760, -0.266442293421343730, -0.266490485631892370, -0.266538677176214430, -0.266586868054189740, -0.266635058265697940, -0.266683247810618860, +-0.266731436688831260, -0.266779624900215060, -0.266827812444650260, -0.266875999322015440, -0.266924185532190660, -0.266972371075055450, -0.267020555950489680, -0.267068740158372120, +-0.267116923698582700, -0.267165106571000950, -0.267213288775506930, -0.267261470311979220, -0.267309651180297810, -0.267357831380342300, -0.267406010911992620, -0.267454189775127530, +-0.267502367969626900, -0.267550545495370830, -0.267598722352237970, -0.267646898540108260, -0.267695074058861340, -0.267743248908376750, -0.267791423088534430, -0.267839596599213140, +-0.267887769440292860, -0.267935941611653570, -0.267984113113173990, -0.268032283944734160, -0.268080454106213560, -0.268128623597492340, -0.268176792418449050, -0.268224960568963830, +-0.268273128048916230, -0.268321294858186180, -0.268369460996652490, -0.268417626464195150, -0.268465791260693750, -0.268513955386028290, -0.268562118840077520, -0.268610281622721440, +-0.268658443733840120, -0.268706605173312240, -0.268754765941017830, -0.268802926036836530, -0.268851085460647900, -0.268899244212331970, -0.268947402291767500, -0.268995559698834540, +-0.269043716433413130, -0.269091872495381970, -0.269140027884621160, -0.269188182601010240, -0.269236336644429360, -0.269284490014757130, -0.269332642711873740, -0.269380794735658680, +-0.269428946085992100, -0.269477096762752720, -0.269525246765820630, -0.269573396095075360, -0.269621544750397070, -0.269669692731664470, -0.269717840038757650, -0.269765986671556660, +-0.269814132629940310, -0.269862277913788580, -0.269910422522981140, -0.269958566457398130, -0.270006709716918260, -0.270054852301421570, -0.270102994210787820, -0.270151135444896940, +-0.270199276003627810, -0.270247415886860520, -0.270295555094474670, -0.270343693626350360, -0.270391831482366400, -0.270439968662402890, -0.270488105166339870, -0.270536240994056100, +-0.270584376145431790, -0.270632510620346490, -0.270680644418679950, -0.270728777540312220, -0.270776909985122160, -0.270825041752989770, -0.270873172843795200, -0.270921303257417310, +-0.270969432993736100, -0.271017562052631390, -0.271065690433983150, -0.271113818137670270, -0.271161945163572840, -0.271210071511570560, -0.271258197181543480, -0.271306322173370530, +-0.271354446486931740, -0.271402570122106890, -0.271450693078776010, -0.271498815356817970, -0.271546936956112870, -0.271595057876540870, -0.271643178117980830, -0.271691297680312800, +-0.271739416563416550, -0.271787534767171770, -0.271835652291458560, -0.271883769136155810, -0.271931885301143590, -0.271980000786302130, -0.272028115591510240, -0.272076229716648020, +-0.272124343161595280, -0.272172455926232070, -0.272220568010437310, -0.272268679414091110, -0.272316790137073270, -0.272364900179263850, -0.272413009540541710, -0.272461118220787110, +-0.272509226219879660, -0.272557333537699620, -0.272605440174125800, -0.272653546129038360, -0.272701651402317500, -0.272749755993842050, -0.272797859903492260, -0.272845963131147780, +-0.272894065676688890, -0.272942167539994340, -0.272990268720944400, -0.273038369219418760, -0.273086469035297650, -0.273134568168459930, -0.273182666618785820, -0.273230764386155010, +-0.273278861470447720, -0.273326957871542870, -0.273375053589320570, -0.273423148623661130, -0.273471242974443360, -0.273519336641547480, -0.273567429624853250, -0.273615521924240490, +-0.273663613539589290, -0.273711704470778690, -0.273759794717688800, -0.273807884280199860, -0.273855973158190770, -0.273904061351541770, -0.273952148860132580, -0.274000235683843460, +-0.274048321822553340, -0.274096407276142370, -0.274144492044490430, -0.274192576127477660, -0.274240659524983050, -0.274288742236886760, -0.274336824263068660, -0.274384905603408890, +-0.274432986257786450, -0.274481066226081540, -0.274529145508174370, -0.274577224103943920, -0.274625302013270400, -0.274673379236033630, -0.274721455772113430, -0.274769531621390010, +-0.274817606783742340, -0.274865681259050640, -0.274913755047195170, -0.274961828148054870, -0.275009900561510030, -0.275057972287440390, -0.275106043325726300, -0.275154113676246650, +-0.275202183338881750, -0.275250252313511360, -0.275298320600015740, -0.275346388198273890, -0.275394455108166130, -0.275442521329572200, -0.275490586862372380, -0.275538651706445700, +-0.275586715861672380, -0.275634779327932680, -0.275682842105105630, -0.275730904193071450, -0.275778965591710000, -0.275827026300901610, -0.275875086320525150, -0.275923145650461050, +-0.275971204290589080, -0.276019262240789490, -0.276067319500941320, -0.276115376070924900, -0.276163431950619990, -0.276211487139906950, -0.276259541638664730, -0.276307595446773690, +-0.276355648564114100, -0.276403700990564940, -0.276451752726006530, -0.276499803770318740, -0.276547854123381450, -0.276595903785074930, -0.276643952755278260, -0.276692001033871650, +-0.276740048620735530, -0.276788095515748790, -0.276836141718791890, -0.276884187229744560, -0.276932232048487270, -0.276980276174898900, -0.277028319608859870, -0.277076362350250070, +-0.277124404398949750, -0.277172445754838010, -0.277220486417795120, -0.277268526387701050, -0.277316565664436080, -0.277364604247879290, -0.277412642137910950, -0.277460679334411490, +-0.277508715837259830, -0.277556751646336420, -0.277604786761521170, -0.277652821182693910, -0.277700854909735010, -0.277748887942523560, -0.277796920280939890, -0.277844951924864360, +-0.277892982874176020, -0.277941013128755240, -0.277989042688481900, -0.278037071553236370, -0.278085099722897740, -0.278133127197346400, -0.278181153976462650, -0.278229180060125540, +-0.278277205448215550, -0.278325230140612500, -0.278373254137196380, -0.278421277437847560, -0.278469300042445130, -0.278517321950869420, -0.278565343163000860, -0.278613363678718530, +-0.278661383497902760, -0.278709402620433530, -0.278757421046191220, -0.278805438775054980, -0.278853455806905070, -0.278901472141621590, -0.278949487779084790, -0.278997502719173900, +-0.279045516961769210, -0.279093530506750790, -0.279141543353998880, -0.279189555503392750, -0.279237566954812720, -0.279285577708139220, -0.279333587763251290, -0.279381597120029410, +-0.279429605778353570, -0.279477613738103700, -0.279525620999160230, -0.279573627561402250, -0.279621633424710250, -0.279669638588964540, -0.279717643054044340, -0.279765646819830020, +-0.279813649886201610, -0.279861652253039440, -0.279909653920222770, -0.279957654887631970, -0.280005655155146970, -0.280053654722648320, -0.280101653590015100, -0.280149651757127690, +-0.280197649223866200, -0.280245645990111040, -0.280293642055741310, -0.280341637420637450, -0.280389632084679930, -0.280437626047747910, -0.280485619309721880, -0.280533611870481760, +-0.280581603729907590, -0.280629594887879860, -0.280677585344277670, -0.280725575098981550, -0.280773564151871930, -0.280821552502827980, -0.280869540151730160, -0.280917527098458460, +-0.280965513342893380, -0.281013498884914060, -0.281061483724401040, -0.281109467861234700, -0.281157451295294290, -0.281205434026460200, -0.281253416054612570, -0.281301397379631450, +-0.281349378001397200, -0.281397357919789090, -0.281445337134687560, -0.281493315645973130, -0.281541293453525020, -0.281589270557223600, -0.281637246956949080, -0.281685222652581830, +-0.281733197644001120, -0.281781171931087430, -0.281829145513720740, -0.281877118391781700, -0.281925090565149360, -0.281973062033704310, -0.282021032797326650, -0.282069002855896810, +-0.282116972209294050, -0.282164940857398850, -0.282212908800091700, -0.282260876037251860, -0.282308842568759880, -0.282356808394495730, -0.282404773514339570, -0.282452737928171940, +-0.282500701635871990, -0.282548664637320310, -0.282596626932397400, -0.282644588520982510, -0.282692549402956130, -0.282740509578198350, -0.282788469046589770, -0.282836427808009610, +-0.282884385862338330, -0.282932343209456090, -0.282980299849243440, -0.283028255781579590, -0.283076211006345110, -0.283124165523420070, -0.283172119332685100, -0.283220072434019370, +-0.283268024827303510, -0.283315976512417970, -0.283363927489242050, -0.283411877757656310, -0.283459827317540940, -0.283507776168776370, -0.283555724311241930, -0.283603671744818210, +-0.283651618469385300, -0.283699564484823750, -0.283747509791012880, -0.283795454387833270, -0.283843398275164970, -0.283891341452888630, -0.283939283920883470, -0.283987225679030120, +-0.284035166727209190, -0.284083107065299880, -0.284131046693182790, -0.284178985610738070, -0.284226923817845870, -0.284274861314386840, -0.284322798100240190, -0.284370734175286580, +-0.284418669539406530, -0.284466604192479430, -0.284514538134385760, -0.284562471365005790, -0.284610403884220040, -0.284658335691907850, -0.284706266787949860, -0.284754197172226160, +-0.284802126844617420, -0.284850055805002940, -0.284897984053263280, -0.284945911589278680, -0.284993838412929750, -0.285041764524095800, -0.285089689922657430, -0.285137614608495240, +-0.285185538581488600, -0.285233461841518100, -0.285281384388463950, -0.285329306222206370, -0.285377227342625940, -0.285425147749601980, -0.285473067443015200, -0.285520986422746150, +-0.285568904688674190, -0.285616822240680020, -0.285664739078643760, -0.285712655202446100, -0.285760570611966360, -0.285808485307085190, -0.285856399287682810, -0.285904312553639850, +-0.285952225104835700, -0.286000136941150950, -0.286048048062465920, -0.286095958468661150, -0.286143868159616070, -0.286191777135211320, -0.286239685395327570, -0.286287592939844130, +-0.286335499768641750, -0.286383405881600610, -0.286431311278601390, -0.286479215959523470, -0.286527119924247510, -0.286575023172653710, -0.286622925704622830, -0.286670827520034140, +-0.286718728618768460, -0.286766629000705930, -0.286814528665727260, -0.286862427613711830, -0.286910325844540350, -0.286958223358093460, -0.287006120154250590, -0.287054016232892390, +-0.287101911593899200, -0.287149806237151200, -0.287197700162529160, -0.287245593369912400, -0.287293485859181690, -0.287341377630217610, -0.287389268682899710, -0.287437159017108650, +-0.287485048632724730, -0.287532937529628550, -0.287580825707699610, -0.287628713166818650, -0.287676599906865840, -0.287724485927721980, -0.287772371229266520, -0.287820255811380100, +-0.287868139673943040, -0.287916022816836090, -0.287963905239938590, -0.288011786943131400, -0.288059667926295120, -0.288107548189309230, -0.288155427732054490, -0.288203306554411230, +-0.288251184656259650, -0.288299062037480570, -0.288346938697953360, -0.288394814637558840, -0.288442689856177710, -0.288490564353689420, -0.288538438129974710, -0.288586311184913900, +-0.288634183518387770, -0.288682055130275730, -0.288729926020458550, -0.288777796188816550, -0.288825665635230490, -0.288873534359579850, -0.288921402361745410, -0.288969269641607410, +-0.289017136199046680, -0.289065002033942700, -0.289112867146176180, -0.289160731535627940, -0.289208595202177450, -0.289256458145705440, -0.289304320366092330, -0.289352181863218820, +-0.289400042636964390, -0.289447902687209930, -0.289495762013835700, -0.289543620616722450, -0.289591478495749730, -0.289639335650798360, -0.289687192081748590, -0.289735047788481300, +-0.289782902770875980, -0.289830757028813390, -0.289878610562174290, -0.289926463370838270, -0.289974315454686100, -0.290022166813598160, -0.290070017447454750, -0.290117867356136760, +-0.290165716539523670, -0.290213564997496290, -0.290261412729935440, -0.290309259736720620, -0.290357106017732620, -0.290404951572851900, -0.290452796401959200, -0.290500640504934070, +-0.290548483881657380, -0.290596326532009450, -0.290644168455871150, -0.290692009653121970, -0.290739850123642780, -0.290787689867314010, -0.290835528884016370, -0.290883367173629560, +-0.290931204736034290, -0.290979041571111430, -0.291026877678740530, -0.291074713058802450, -0.291122547711177570, -0.291170381635746320, -0.291218214832389580, -0.291266047300986870, +-0.291313879041419030, -0.291361710053566920, -0.291409540337310090, -0.291457369892529410, -0.291505198719105350, -0.291553026816918690, -0.291600854185849020, -0.291648680825777220, +-0.291696506736584150, -0.291744331918149410, -0.291792156370353830, -0.291839980093077880, -0.291887803086201940, -0.291935625349606930, -0.291983446883172400, -0.292031267686779280, +-0.292079087760308440, -0.292126907103639420, -0.292174725716653150, -0.292222543599230110, -0.292270360751251070, -0.292318177172595730, -0.292365992863144910, -0.292413807822779150, +-0.292461622051379320, -0.292509435548824970, -0.292557248314997020, -0.292605060349775960, -0.292652871653042710, -0.292700682224676820, -0.292748492064559220, -0.292796301172570830, +-0.292844109548591250, -0.292891917192501410, -0.292939724104181790, -0.292987530283512820, -0.293035335730375490, -0.293083140444649340, -0.293130944426215400, -0.293178747674954500, +-0.293226550190746280, -0.293274351973471740, -0.293322153023011290, -0.293369953339245870, -0.293417752922055190, -0.293465551771320050, -0.293513349886921070, -0.293561147268739160, +-0.293608943916653930, -0.293656739830546350, -0.293704535010296920, -0.293752329455786610, -0.293800123166895020, -0.293847916143503090, -0.293895708385491840, -0.293943499892740880, +-0.293991290665131190, -0.294039080702543250, -0.294086870004857610, -0.294134658571955250, -0.294182446403715770, -0.294230233500020200, -0.294278019860749470, -0.294325805485783240, +-0.294373590375002550, -0.294421374528287870, -0.294469157945520140, -0.294516940626579130, -0.294564722571345750, -0.294612503779701000, -0.294660284251524520, -0.294708063986697410, +-0.294755842985100100, -0.294803621246613130, -0.294851398771117600, -0.294899175558493150, -0.294946951608620720, -0.294994726921381340, -0.295042501496654790, -0.295090275334321920, +-0.295138048434263330, -0.295185820796360130, -0.295233592420491910, -0.295281363306539700, -0.295329133454384110, -0.295376902863906050, -0.295424671534985360, -0.295472439467503010, +-0.295520206661339550, -0.295567973116375950, -0.295615738832492040, -0.295663503809568740, -0.295711268047487150, -0.295759031546126930, -0.295806794305369160, -0.295854556325094390, +-0.295902317605183260, -0.295950078145516720, -0.295997837945974560, -0.296045597006437840, -0.296093355326787540, -0.296141112906903430, -0.296188869746666530, -0.296236625845957450, +-0.296284381204657220, -0.296332135822645610, -0.296379889699803670, -0.296427642836012030, -0.296475395231151680, -0.296523146885102450, -0.296570897797745310, -0.296618647968960980, +-0.296666397398630380, -0.296714146086633430, -0.296761894032851080, -0.296809641237164410, -0.296857387699453250, -0.296905133419598620, -0.296952878397481130, -0.297000622632981880, +-0.297048366125980620, -0.297096108876358460, -0.297143850883996030, -0.297191592148774440, -0.297239332670573400, -0.297287072449274050, -0.297334811484756990, -0.297382549776903370, +-0.297430287325592900, -0.297478024130706730, -0.297525760192125950, -0.297573495509730330, -0.297621230083400970, -0.297668963913018500, -0.297716696998463700, -0.297764429339617500, +-0.297812160936359870, -0.297859891788571810, -0.297907621896134400, -0.297955351258927580, -0.298003079876832330, -0.298050807749729420, -0.298098534877499880, -0.298146261260023640, +-0.298193986897181680, -0.298241711788854780, -0.298289435934924020, -0.298337159335269280, -0.298384881989771590, -0.298432603898311720, -0.298480325060770770, -0.298528045477028550, +-0.298575765146966270, -0.298623484070464960, -0.298671202247404510, -0.298718919677666060, -0.298766636361130320, -0.298814352297678000, -0.298862067487190240, -0.298909781929546870, +-0.298957495624629030, -0.299005208572317880, -0.299052920772493290, -0.299100632225036410, -0.299148342929827950, -0.299196052886749000, -0.299243762095679540, -0.299291470556500680, +-0.299339178269093120, -0.299386885233338060, -0.299434591449115380, -0.299482296916306180, -0.299530001634791270, -0.299577705604451740, -0.299625408825167580, -0.299673111296819840, +-0.299720813019289770, -0.299768513992457300, -0.299816214216203470, -0.299863913690409100, -0.299911612414955400, -0.299959310389722230, -0.300007007614590810, -0.300054704089441850, +-0.300102399814156600, -0.300150094788614870, -0.300197789012697950, -0.300245482486286520, -0.300293175209261800, -0.300340867181503710, -0.300388558402893470, -0.300436248873312270, +-0.300483938592640050, -0.300531627560757960, -0.300579315777546760, -0.300627003242887330, -0.300674689956660800, -0.300722375918747060, -0.300770061129027490, -0.300817745587383110, +-0.300865429293693980, -0.300913112247841230, -0.300960794449705750, -0.301008475899168680, -0.301056156596110010, -0.301103836540410950, -0.301151515731952310, -0.301199194170615250, +-0.301246871856279850, -0.301294548788827220, -0.301342224968138230, -0.301389900394094130, -0.301437575066574810, -0.301485248985461580, -0.301532922150635650, -0.301580594561977000, +-0.301628266219366890, -0.301675937122686030, -0.301723607271815410, -0.301771276666636170, -0.301818945307028300, -0.301866613192873060, -0.301914280324051710, -0.301961946700444240, +-0.302009612321931910, -0.302057277188395590, -0.302104941299716430, -0.302152604655774540, -0.302200267256451100, -0.302247929101627070, -0.302295590191183570, -0.302343250525000660, +-0.302390910102959650, -0.302438568924941420, -0.302486226990827110, -0.302533884300496820, -0.302581540853831880, -0.302629196650713470, -0.302676851691021650, -0.302724505974637680, +-0.302772159501442430, -0.302819812271317270, -0.302867464284142130, -0.302915115539798270, -0.302962766038166690, -0.303010415779128630, -0.303058064762564080, -0.303105712988354370, +-0.303153360456380360, -0.303201007166523370, -0.303248653118663450, -0.303296298312681900, -0.303343942748460050, -0.303391586425877880, -0.303439229344816760, -0.303486871505157570, +-0.303534512906781240, -0.303582153549569020, -0.303629793433400960, -0.303677432558158430, -0.303725070923722750, -0.303772708529974010, -0.303820345376793480, -0.303867981464062020, +-0.303915616791661130, -0.303963251359470720, -0.304010885167372180, -0.304058518215246430, -0.304106150502974790, -0.304153782030437360, -0.304201412797515500, -0.304249042804090100, +-0.304296672050042520, -0.304344300535252850, -0.304391928259602370, -0.304439555222972560, -0.304487181425243390, -0.304534806866296300, -0.304582431546012170, -0.304630055464271960, +-0.304677678620957070, -0.304725301015947530, -0.304772922649124760, -0.304820543520370080, -0.304868163629563590, -0.304915782976586780, -0.304963401561320460, -0.305011019383646050, +-0.305058636443443660, -0.305106252740594720, -0.305153868274980530, -0.305201483046481260, -0.305249097054978320, -0.305296710300352600, -0.305344322782485080, -0.305391934501257230, +-0.305439545456549110, -0.305487155648242080, -0.305534765076217630, -0.305582373740355850, -0.305629981640538120, -0.305677588776645410, -0.305725195148559170, -0.305772800756159540, +-0.305820405599327880, -0.305868009677945250, -0.305915612991892960, -0.305963215541051270, -0.306010817325301500, -0.306058418344524740, -0.306106018598602310, -0.306153618087414430, +-0.306201216810842450, -0.306248814768767920, -0.306296411961070880, -0.306344008387632870, -0.306391604048334760, -0.306439198943057710, -0.306486793071683080, -0.306534386434091030, +-0.306581979030162990, -0.306629570859780430, -0.306677161922823570, -0.306724752219173780, -0.306772341748712100, -0.306819930511319950, -0.306867518506877600, -0.306915105735266420, +-0.306962692196367510, -0.307010277890062300, -0.307057862816230930, -0.307105446974754950, -0.307153030365515330, -0.307200612988393570, -0.307248194843269820, -0.307295775930025610, +-0.307343356248542420, -0.307390935798700360, -0.307438514580380960, -0.307486092593465320, -0.307533669837834420, -0.307581246313369750, -0.307628822019951560, -0.307676396957461300, +-0.307723971125780480, -0.307771544524789330, -0.307819117154369270, -0.307866689014401450, -0.307914260104767360, -0.307961830425347140, -0.308009399976022390, -0.308056968756674540, +-0.308104536767183860, -0.308152104007431820, -0.308199670477299510, -0.308247236176668050, -0.308294801105418960, -0.308342365263432390, -0.308389928650589900, -0.308437491266773060, +-0.308485053111862030, -0.308532614185738350, -0.308580174488283180, -0.308627734019377930, -0.308675292778902990, -0.308722850766739780, -0.308770407982769500, -0.308817964426873590, +-0.308865520098932310, -0.308913074998827250, -0.308960629126439510, -0.309008182481650630, -0.309055735064340860, -0.309103286874391760, -0.309150837911684850, -0.309198388176100460, +-0.309245937667520070, -0.309293486385824820, -0.309341034330895880, -0.309388581502614780, -0.309436127900861780, -0.309483673525518480, -0.309531218376466410, -0.309578762453585900, +-0.309626305756758420, -0.309673848285865250, -0.309721390040787860, -0.309768931021406570, -0.309816471227602920, -0.309864010659258120, -0.309911549316253700, -0.309959087198469980, +-0.310006624305788570, -0.310054160638090600, -0.310101696195257630, -0.310149230977170010, -0.310196764983709290, -0.310244298214757130, -0.310291830670193720, -0.310339362349900780, +-0.310386893253759450, -0.310434423381651340, -0.310481952733456690, -0.310529481309057160, -0.310577009108333970, -0.310624536131168640, -0.310672062377441550, -0.310719587847034300, +-0.310767112539828080, -0.310814636455704560, -0.310862159594543940, -0.310909681956227980, -0.310957203540638220, -0.311004724347655030, -0.311052244377160000, -0.311099763629034410, +-0.311147282103159390, -0.311194799799416610, -0.311242316717686370, -0.311289832857850330, -0.311337348219790140, -0.311384862803386180, -0.311432376608520080, -0.311479889635073000, +-0.311527401882926660, -0.311574913351961360, -0.311622424042058750, -0.311669933953100110, -0.311717443084967070, -0.311764951437540020, -0.311812459010700540, -0.311859965804329900, +-0.311907471818309800, -0.311954977052520620, -0.312002481506843950, -0.312049985181161560, -0.312097488075353760, -0.312144990189302200, -0.312192491522888190, -0.312239992075992960, +-0.312287491848498190, -0.312334990840284210, -0.312382489051232840, -0.312429986481225610, -0.312477483130143010, -0.312524978997866690, -0.312572474084277910, -0.312619968389258370, +-0.312667461912688520, -0.312714954654449980, -0.312762446614424090, -0.312809937792492440, -0.312857428188535570, -0.312904917802435180, -0.312952406634072420, -0.312999894683329060, +-0.313047381950085580, -0.313094868434223630, -0.313142354135624970, -0.313189839054169970, -0.313237323189740350, -0.313284806542217460, -0.313332289111482980, -0.313379770897417310, +-0.313427251899902230, -0.313474732118819040, -0.313522211554049410, -0.313569690205473870, -0.313617168072974070, -0.313664645156431390, -0.313712121455727470, -0.313759596970742850, +-0.313807071701359240, -0.313854545647458400, -0.313902018808920710, -0.313949491185628040, -0.313996962777461590, -0.314044433584302730, -0.314091903606033230, -0.314139372842533570, +-0.314186841293685460, -0.314234308959370660, -0.314281775839469700, -0.314329241933864250, -0.314376707242435720, -0.314424171765065820, -0.314471635501635090, -0.314519098452025300, +-0.314566560616117710, -0.314614021993794180, -0.314661482584935150, -0.314708942389422430, -0.314756401407137340, -0.314803859637961700, -0.314851317081775940, -0.314898773738461920, +-0.314946229607901420, -0.314993684689974850, -0.315041138984564100, -0.315088592491550520, -0.315136045210815450, -0.315183497142240700, -0.315230948285706750, -0.315278398641095470, +-0.315325848208288570, -0.315373296987166650, -0.315420744977611520, -0.315468192179504450, -0.315515638592727410, -0.315563084217160780, -0.315610529052686490, -0.315657973099185860, +-0.315705416356540700, -0.315752858824631610, -0.315800300503340350, -0.315847741392548340, -0.315895181492137410, -0.315942620801988090, -0.315990059321982260, -0.316037497052001680, +-0.316084933991926890, -0.316132370141639810, -0.316179805501021820, -0.316227240069954670, -0.316274673848319090, -0.316322106835996760, -0.316369539032869180, -0.316416970438818170, +-0.316464401053724310, -0.316511830877469480, -0.316559259909935050, -0.316606688151002900, -0.316654115600553570, -0.316701542258469030, -0.316748968124630990, -0.316796393198920110, +-0.316843817481218260, -0.316891240971406860, -0.316938663669367400, -0.316986085574981650, -0.317033506688130300, -0.317080927008695170, -0.317128346536558140, -0.317175765271599800, +-0.317223183213702080, -0.317270600362746400, -0.317318016718614650, -0.317365432281187410, -0.317412847050346610, -0.317460261025973690, -0.317507674207950510, -0.317555086596157720, +-0.317602498190477260, -0.317649908990790540, -0.317697318996979450, -0.317744728208924630, -0.317792136626508070, -0.317839544249611530, -0.317886951078115710, -0.317934357111902490, +-0.317981762350853400, -0.318029166794849940, -0.318076570443773910, -0.318123973297506080, -0.318171375355928320, -0.318218776618922510, -0.318266177086369400, -0.318313576758150810, +-0.318360975634148220, -0.318408373714243690, -0.318455770998317790, -0.318503167486252460, -0.318550563177929180, -0.318597958073229990, -0.318645352172035430, -0.318692745474227490, +-0.318740137979687700, -0.318787529688297930, -0.318834920599939010, -0.318882310714492690, -0.318929700031841070, -0.318977088551864800, -0.319024476274445800, -0.319071863199465570, +-0.319119249326806130, -0.319166634656348150, -0.319214019187973540, -0.319261402921563910, -0.319308785857001230, -0.319356167994166110, -0.319403549332940630, -0.319450929873206220, +-0.319498309614844930, -0.319545688557737460, -0.319593066701765740, -0.319640444046811800, -0.319687820592756300, -0.319735196339481280, -0.319782571286868270, -0.319829945434798810, +-0.319877318783154900, -0.319924691331817280, -0.319972063080667950, -0.320019434029588880, -0.320066804178460780, -0.320114173527165700, -0.320161542075585170, -0.320208909823601170, +-0.320256276771094530, -0.320303642917947160, -0.320351008264040730, -0.320398372809257150, -0.320445736553477250, -0.320493099496583000, -0.320540461638456010, -0.320587822978978250, +-0.320635183518030550, -0.320682543255494890, -0.320729902191253300, -0.320777260325186500, -0.320824617657176570, -0.320871974187105110, -0.320919329914853670, -0.320966684840304380, +-0.321014038963337910, -0.321061392283836400, -0.321108744801681780, -0.321156096516754860, -0.321203447428937750, -0.321250797538112030, -0.321298146844159690, -0.321345495346961610, +-0.321392843046399760, -0.321440189942356180, -0.321487536034711750, -0.321534881323348510, -0.321582225808148050, -0.321629569488992020, -0.321676912365762460, -0.321724254438340240, +-0.321771595706607350, -0.321818936170445880, -0.321866275829736700, -0.321913614684361800, -0.321960952734202890, -0.322008289979141990, -0.322055626419059940, -0.322102962053838810, +-0.322150296883360330, -0.322197630907506470, -0.322244964126158160, -0.322292296539197440, -0.322339628146505960, -0.322386958947965820, -0.322434288943457880, -0.322481618132864190, +-0.322528946516066890, -0.322576274092946810, -0.322623600863386040, -0.322670926827266280, -0.322718251984469180, -0.322765576334876900, -0.322812899878370250, -0.322860222614831380, +-0.322907544544142330, -0.322954865666183980, -0.323002185980838520, -0.323049505487987550, -0.323096824187513290, -0.323144142079296480, -0.323191459163219340, -0.323238775439163570, +-0.323286090907011270, -0.323333405566643360, -0.323380719417941890, -0.323428032460788660, -0.323475344695065730, -0.323522656120654010, -0.323569966737435710, -0.323617276545292880, +-0.323664585544106430, -0.323711893733758530, -0.323759201114130870, -0.323806507685105600, -0.323853813446563720, -0.323901118398387260, -0.323948422540458030, -0.323995725872658120, +-0.324043028394868540, -0.324090330106971360, -0.324137631008848350, -0.324184931100381660, -0.324232230381452270, -0.324279528851942280, -0.324326826511733890, -0.324374123360707980, +-0.324421419398746800, -0.324468714625732070, -0.324516009041545540, -0.324563302646069420, -0.324610595439184630, -0.324657887420773340, -0.324705178590717740, -0.324752468948898750, +-0.324799758495198650, -0.324847047229499140, -0.324894335151682420, -0.324941622261629430, -0.324988908559222410, -0.325036194044343090, -0.325083478716873710, -0.325130762576695260, +-0.325178045623689850, -0.325225327857739330, -0.325272609278725920, -0.325319889886530600, -0.325367169681035520, -0.325414448662122930, -0.325461726829673840, -0.325509004183570370, +-0.325556280723694410, -0.325603556449927780, -0.325650831362152670, -0.325698105460250020, -0.325745378744102140, -0.325792651213591240, -0.325839922868598310, -0.325887193709005540, +-0.325934463734694810, -0.325981732945548330, -0.326029001341447080, -0.326076268922273320, -0.326123535687908920, -0.326170801638236090, -0.326218066773135810, -0.326265331092490400, +-0.326312594596181670, -0.326359857284091840, -0.326407119156101930, -0.326454380212094280, -0.326501640451951070, -0.326548899875553360, -0.326596158482783390, -0.326643416273523000, +-0.326690673247654500, -0.326737929405058910, -0.326785184745618460, -0.326832439269215120, -0.326879692975731050, -0.326926945865047340, -0.326974197937046240, -0.327021449191609690, +-0.327068699628619900, -0.327115949247957950, -0.327163198049506110, -0.327210446033146750, -0.327257693198760800, -0.327304939546230630, -0.327352185075438170, -0.327399429786265180, +-0.327446673678594040, -0.327493916752305820, -0.327541159007282810, -0.327588400443407310, -0.327635641060560370, -0.327682880858624350, -0.327730119837481130, -0.327777357997013020, +-0.327824595337101120, -0.327871831857627690, -0.327919067558474720, -0.327966302439524520, -0.328013536500658060, -0.328060769741757850, -0.328108002162705640, -0.328155233763383900, +-0.328202464543673630, -0.328249694503457200, -0.328296923642616980, -0.328344151961034000, -0.328391379458590650, -0.328438606135168840, -0.328485831990650510, -0.328533057024918030, +-0.328580281237852550, -0.328627504629336260, -0.328674727199251670, -0.328721948947479860, -0.328769169873903200, -0.328816389978403570, -0.328863609260863390, -0.328910827721163810, +-0.328958045359187100, -0.329005262174815290, -0.329052478167930760, -0.329099693338414660, -0.329146907686149240, -0.329194121211016600, -0.329241333912899060, -0.329288545791677770, +-0.329335756847235150, -0.329382967079453530, -0.329430176488214040, -0.329477385073399130, -0.329524592834890770, -0.329571799772571340, -0.329619005886322040, -0.329666211176025180, +-0.329713415641562760, -0.329760619282817250, -0.329807822099669800, -0.329855024092002790, -0.329902225259698200, -0.329949425602638460, -0.329996625120704710, -0.330043823813779450, +-0.330091021681745030, -0.330138218724482620, -0.330185414941874700, -0.330232610333803240, -0.330279804900150240, -0.330326998640798120, -0.330374191555628140, -0.330421383644522610, +-0.330468574907364090, -0.330515765344033710, -0.330562954954413960, -0.330610143738386760, -0.330657331695834610, -0.330704518826638760, -0.330751705130681580, -0.330798890607845120, +-0.330846075258011910, -0.330893259081063040, -0.330940442076881060, -0.330987624245347940, -0.331034805586346240, -0.331081986099757030, -0.331129165785462920, -0.331176344643346280, +-0.331223522673288360, -0.331270699875171660, -0.331317876248878150, -0.331365051794289990, -0.331412226511289650, -0.331459400399758300, -0.331506573459578460, -0.331553745690632560, +-0.331600917092801930, -0.331648087665968980, -0.331695257410015760, -0.331742426324824920, -0.331789594410277500, -0.331836761666256140, -0.331883928092642890, -0.331931093689320220, +-0.331978258456169410, -0.332025422393072980, -0.332072585499912920, -0.332119747776571880, -0.332166909222931020, -0.332214069838872860, -0.332261229624280010, -0.332308388579033610, +-0.332355546703016260, -0.332402703996110050, -0.332449860458197520, -0.332497016089159880, -0.332544170888879720, -0.332591324857239130, -0.332638477994120660, -0.332685630299405570, +-0.332732781772976380, -0.332779932414715260, -0.332827082224504740, -0.332874231202226030, -0.332921379347761840, -0.332968526660994520, -0.333015673141805520, -0.333062818790077380, +-0.333109963605692120, -0.333157107588531950, -0.333204250738479480, -0.333251393055415960, -0.333298534539223920, -0.333345675189785970, -0.333392815006983420, -0.333439953990698870, +-0.333487092140814400, -0.333534229457212620, -0.333581365939774830, -0.333628501588383640, -0.333675636402921190, -0.333722770383270080, -0.333769903529311630, -0.333817035840928420, +-0.333864167318002610, -0.333911297960416800, -0.333958427768052350, -0.334005556740791800, -0.334052684878517800, -0.334099812181111620, -0.334146938648455960, -0.334194064280432970, +-0.334241189076924790, -0.334288313037814030, -0.334335436162982110, -0.334382558452311570, -0.334429679905685120, -0.334476800522983950, -0.334523920304090840, -0.334571039248887920, +-0.334618157357257860, -0.334665274629081910, -0.334712391064242830, -0.334759506662623160, -0.334806621424104330, -0.334853735348568940, -0.334900848435899180, -0.334947960685977320, +-0.334995072098686010, -0.335042182673906560, -0.335089292411521690, -0.335136401311413980, -0.335183509373464860, -0.335230616597556930, -0.335277722983572500, -0.335324828531394170, +-0.335371933240903360, -0.335419037111982680, -0.335466140144514480, -0.335513242338381260, -0.335560343693464600, -0.335607444209647000, -0.335654543886810870, -0.335701642724838710, +-0.335748740723612100, -0.335795837883013590, -0.335842934202925940, -0.335890029683230510, -0.335937124323810010, -0.335984218124546760, -0.336031311085322910, -0.336078403206021170, +-0.336125494486523070, -0.336172584926711200, -0.336219674526468280, -0.336266763285675730, -0.336313851204216310, -0.336360938281972280, -0.336408024518826290, -0.336455109914659820, +-0.336502194469355590, -0.336549278182795900, -0.336596361054863400, -0.336643443085439530, -0.336690524274407150, -0.336737604621648370, -0.336784684127046040, -0.336831762790481600, +-0.336878840611837760, -0.336925917590997210, -0.336972993727841450, -0.337020069022253180, -0.337067143474114760, -0.337114217083308520, -0.337161289849717110, -0.337208361773222050, +-0.337255432853706130, -0.337302503091051980, -0.337349572485141190, -0.337396641035856480, -0.337443708743080160, -0.337490775606694990, -0.337537841626582460, -0.337584906802625320, +-0.337631971134706390, -0.337679034622707040, -0.337726097266510090, -0.337773159065997970, -0.337820220021052890, -0.337867280131557700, -0.337914339397393900, -0.337961397818444250, +-0.338008455394591510, -0.338055512125717270, -0.338102568011704190, -0.338149623052434680, -0.338196677247791570, -0.338243730597656330, -0.338290783101911800, -0.338337834760440270, +-0.338384885573124570, -0.338431935539846240, -0.338478984660488090, -0.338526032934932440, -0.338573080363062160, -0.338620126944758790, -0.338667172679905040, -0.338714217568383820, +-0.338761261610076640, -0.338808304804866290, -0.338855347152635160, -0.338902388653265660, -0.338949429306640630, -0.338996469112641640, -0.339043508071151410, -0.339090546182052870, +-0.339137583445227540, -0.339184619860558260, -0.339231655427927440, -0.339278690147217840, -0.339325724018311130, -0.339372757041090160, -0.339419789215437250, -0.339466820541235280, +-0.339513851018365840, -0.339560880646711800, -0.339607909426155540, -0.339654937356579920, -0.339701964437866540, -0.339748990669898280, -0.339796016052557880, -0.339843040585727120, +-0.339890064269288690, -0.339937087103125150, -0.339984109087119290, -0.340031130221152720, -0.340078150505108310, -0.340125169938868600, -0.340172188522316340, -0.340219206255333200, +-0.340266223137802030, -0.340313239169605260, -0.340360254350625890, -0.340407268680745390, -0.340454282159846800, -0.340501294787812880, -0.340548306564525280, -0.340595317489866930, +-0.340642327563720320, -0.340689336785967860, -0.340736345156492480, -0.340783352675175840, -0.340830359341900810, -0.340877365156550320, -0.340924370119005950, -0.340971374229150690, +-0.341018377486866970, -0.341065379892037720, -0.341112381444544640, -0.341159382144270550, -0.341206381991098100, -0.341253380984910040, -0.341300379125588080, -0.341347376413015270, +-0.341394372847073910, -0.341441368427647110, -0.341488363154616450, -0.341535357027864920, -0.341582350047275330, -0.341629342212729500, -0.341676333524110310, -0.341723323981300290, +-0.341770313584181970, -0.341817302332638300, -0.341864290226550900, -0.341911277265802840, -0.341958263450276970, -0.342005248779855000, -0.342052233254419910, -0.342099216873854250, +-0.342146199638040990, -0.342193181546861790, -0.342240162600199630, -0.342287142797937090, -0.342334122139957120, -0.342381100626141410, -0.342428078256372950, -0.342475055030534270, +-0.342522030948508360, -0.342569006010176980, -0.342615980215423110, -0.342662953564129680, -0.342709926056178450, -0.342756897691452400, -0.342803868469834130, -0.342850838391206610, +-0.342897807455451560, -0.342944775662451960, -0.342991743012090460, -0.343038709504250030, -0.343085675138812380, -0.343132639915660560, -0.343179603834677100, -0.343226566895745100, +-0.343273529098746260, -0.343320490443563550, -0.343367450930080090, -0.343414410558177560, -0.343461369327739020, -0.343508327238647050, -0.343555284290784250, -0.343602240484033650, +-0.343649195818277020, -0.343696150293397450, -0.343743103909277870, -0.343790056665800150, -0.343837008562847270, -0.343883959600301880, -0.343930909778047020, -0.343977859095964460, +-0.344024807553937220, -0.344071755151847960, -0.344118701889579770, -0.344165647767014420, -0.344212592784034880, -0.344259536940523910, -0.344306480236364510, -0.344353422671438480, +-0.344400364245628920, -0.344447304958818870, -0.344494244810890080, -0.344541183801725710, -0.344588121931208410, -0.344635059199220770, -0.344681995605645940, -0.344728931150365680, +-0.344775865833263080, -0.344822799654221250, -0.344869732613121980, -0.344916664709848390, -0.344963595944283160, -0.345010526316309350, -0.345057455825808770, -0.345104384472664620, +-0.345151312256759430, -0.345198239177976430, -0.345245165236197420, -0.345292090431305490, -0.345339014763183290, -0.345385938231713980, -0.345432860836779430, -0.345479782578262730, +-0.345526703456047020, -0.345573623470014080, -0.345620542620047100, -0.345667460906028790, -0.345714378327842240, -0.345761294885369270, -0.345808210578493090, -0.345855125407096400, +-0.345902039371062340, -0.345948952470272740, -0.345995864704610740, -0.346042776073959110, -0.346089686578200940, -0.346136596217218100, -0.346183504990893840, -0.346230412899111160, +-0.346277319941752090, -0.346324226118699730, -0.346371131429836780, -0.346418035875045990, -0.346464939454210530, -0.346511842167212310, -0.346558744013934490, -0.346605644994260220, +-0.346652545108071420, -0.346699444355251240, -0.346746342735682500, -0.346793240249248290, -0.346840136895830540, -0.346887032675312460, -0.346933927587576800, -0.346980821632506760, +-0.347027714809984230, -0.347074607119892410, -0.347121498562114110, -0.347168389136532420, -0.347215278843029380, -0.347262167681488150, -0.347309055651791930, -0.347355942753822590, +-0.347402828987463440, -0.347449714352597190, -0.347496598849106720, -0.347543482476875110, -0.347590365235784400, -0.347637247125717750, -0.347684128146558410, -0.347731008298188370, +-0.347777887580490770, -0.347824765993348440, -0.347871643536644630, -0.347918520210261320, -0.347965396014081660, -0.348012270947988980, -0.348059145011865190, -0.348106018205593500, +-0.348152890529056790, -0.348199761982137870, -0.348246632564719940, -0.348293502276684990, -0.348340371117916330, -0.348387239088297160, -0.348434106187709420, -0.348480972416036480, +-0.348527837773161100, -0.348574702258966530, -0.348621565873334760, -0.348668428616149110, -0.348715290487292380, -0.348762151486647850, -0.348809011614097500, -0.348855870869524630, +-0.348902729252812070, -0.348949586763843130, -0.348996443402499800, -0.349043299168665330, -0.349090154062223100, -0.349137008083055030, -0.349183861231044390, -0.349230713506074150, +-0.349277564908027140, -0.349324415436786610, -0.349371265092234650, -0.349418113874254480, -0.349464961782729460, -0.349511808817541620, -0.349558654978574300, -0.349605500265710300, +-0.349652344678832990, -0.349699188217824360, -0.349746030882567780, -0.349792872672946120, -0.349839713588842750, -0.349886553630139600, -0.349933392796720090, -0.349980231088467150, +-0.350027068505263990, -0.350073905046992760, -0.350120740713536770, -0.350167575504779340, -0.350214409420602560, -0.350261242460889740, -0.350308074625523820, -0.350354905914387730, +-0.350401736327364770, -0.350448565864337090, -0.350495394525187960, -0.350542222309800760, -0.350589049218057610, -0.350635875249841860, -0.350682700405036350, -0.350729524683524580, +-0.350776348085188540, -0.350823170609911640, -0.350869992257577200, -0.350916813028067380, -0.350963632921265530, -0.351010451937054660, -0.351057270075317560, -0.351104087335937790, +-0.351150903718797310, -0.351197719223779630, -0.351244533850768040, -0.351291347599644700, -0.351338160470292980, -0.351384972462595870, -0.351431783576436730, -0.351478593811697770, +-0.351525403168262250, -0.351572211646013270, -0.351619019244834190, -0.351665825964607100, -0.351712631805215450, -0.351759436766542260, -0.351806240848470900, -0.351853044050883470, +-0.351899846373663450, -0.351946647816694210, -0.351993448379857960, -0.352040248063038130, -0.352087046866117640, -0.352133844788979520, -0.352180641831507210, -0.352227437993582910, +-0.352274233275090000, -0.352321027675911890, -0.352367821195930800, -0.352414613835030200, -0.352461405593093020, -0.352508196470002750, -0.352554986465641600, -0.352601775579892970, +-0.352648563812639930, -0.352695351163765880, -0.352742137633152990, -0.352788923220684780, -0.352835707926244300, -0.352882491749714920, -0.352929274690978960, -0.352976056749919720, +-0.353022837926420810, -0.353069618220364420, -0.353116397631633940, -0.353163176160112450, -0.353209953805683490, -0.353256730568229150, -0.353303506447633030, -0.353350281443778170, +-0.353397055556547990, -0.353443828785824750, -0.353490601131492000, -0.353537372593432650, -0.353584143171530360, -0.353630912865667280, -0.353677681675726880, -0.353724449601592720, +-0.353771216643147040, -0.353817982800273320, -0.353864748072854620, -0.353911512460774010, -0.353958275963915100, -0.354005038582160040, -0.354051800315392410, -0.354098561163495700, +-0.354145321126352160, -0.354192080203845350, -0.354238838395858290, -0.354285595702274580, -0.354332352122976420, -0.354379107657847410, -0.354425862306770640, -0.354472616069629650, +-0.354519368946306700, -0.354566120936685270, -0.354612872040648560, -0.354659622258080120, -0.354706371588862200, -0.354753120032878340, -0.354799867590012090, -0.354846614260145740, +-0.354893360043162910, -0.354940104938946620, -0.354986848947380140, -0.355033592068346890, -0.355080334301729250, -0.355127075647410810, -0.355173816105275040, -0.355220555675204390, +-0.355267294357082260, -0.355314032150791990, -0.355360769056217000, -0.355407505073239650, -0.355454240201743600, -0.355500974441611880, -0.355547707792728210, -0.355594440254974830, +-0.355641171828235350, -0.355687902512392910, -0.355734632307331160, -0.355781361212932410, -0.355828089229080270, -0.355874816355658260, -0.355921542592548880, -0.355968267939635600, +-0.356014992396801620, -0.356061715963930600, -0.356108438640904910, -0.356155160427608090, -0.356201881323923390, -0.356248601329734400, -0.356295320444923460, -0.356342038669374250, +-0.356388756002969930, -0.356435472445594150, -0.356482187997129220, -0.356528902657458900, -0.356575616426466680, -0.356622329304035040, -0.356669041290047560, -0.356715752384387460, +-0.356762462586938000, -0.356809171897582820, -0.356855880316204240, -0.356902587842686030, -0.356949294476911700, -0.356996000218763760, -0.357042705068125800, -0.357089409024881070, +-0.357136112088913270, -0.357182814260104730, -0.357229515538339200, -0.357276215923499840, -0.357322915415470340, -0.357369614014133200, -0.357416311719371990, -0.357463008531069990, +-0.357509704449110900, -0.357556399473377140, -0.357603093603752360, -0.357649786840120280, -0.357696479182363300, -0.357743170630365150, -0.357789861184009070, -0.357836550843178340, +-0.357883239607756640, -0.357929927477626420, -0.357976614452671370, -0.358023300532775200, -0.358069985717820390, -0.358116670007690600, -0.358163353402269120, -0.358210035901439680, +-0.358256717505084750, -0.358303398213088040, -0.358350078025332810, -0.358396756941702810, -0.358443434962080480, -0.358490112086349570, -0.358536788314393400, -0.358583463646095670, +-0.358630138081338870, -0.358676811620006700, -0.358723484261982920, -0.358770156007150070, -0.358816826855391740, -0.358863496806591410, -0.358910165860632730, -0.358956834017398200, +-0.359003501276771610, -0.359050167638636290, -0.359096833102875930, -0.359143497669373090, -0.359190161338011520, -0.359236824108674520, -0.359283485981245880, -0.359330146955608110, +-0.359376807031644980, -0.359423466209240210, -0.359470124488276420, -0.359516781868637280, -0.359563438350206210, -0.359610093932866530, -0.359656748616501990, -0.359703402400995240, +-0.359750055286229940, -0.359796707272089900, -0.359843358358457710, -0.359890008545217130, -0.359936657832251540, -0.359983306219444690, -0.360029953706679170, -0.360076600293838760, +-0.360123245980806860, -0.360169890767467250, -0.360216534653702460, -0.360263177639396410, -0.360309819724432380, -0.360356460908694220, -0.360403101192064480, -0.360449740574426970, +-0.360496379055665560, -0.360543016635662790, -0.360589653314302430, -0.360636289091468000, -0.360682923967042820, -0.360729557940910720, -0.360776191012954330, -0.360822823183057470, +-0.360869454451103970, -0.360916084816976460, -0.360962714280558650, -0.361009342841734140, -0.361055970500386620, -0.361102597256398760, -0.361149223109654470, -0.361195848060037460, +-0.361242472107430490, -0.361289095251717260, -0.361335717492781370, -0.361382338830506130, -0.361428959264775470, -0.361475578795472040, -0.361522197422479600, -0.361568815145682120, +-0.361615431964962210, -0.361662047880203670, -0.361708662891290060, -0.361755276998105170, -0.361801890200531660, -0.361848502498453460, -0.361895113891753990, -0.361941724380317130, +-0.361988333964025580, -0.362034942642763150, -0.362081550416413430, -0.362128157284860200, -0.362174763247986140, -0.362221368305675250, -0.362267972457811280, -0.362314575704277000, +-0.362361178044956270, -0.362407779479732630, -0.362454380008489510, -0.362500979631110830, -0.362547578347479300, -0.362594176157478850, -0.362640773060993350, -0.362687369057905550, +-0.362733964148099270, -0.362780558331458110, -0.362827151607865940, -0.362873743977205510, -0.362920335439360700, -0.362966925994215090, -0.363013515641652520, -0.363060104381555780, +-0.363106692213808810, -0.363153279138295040, -0.363199865154898550, -0.363246450263501940, -0.363293034463989200, -0.363339617756244350, -0.363386200140150000, -0.363432781615590120, +-0.363479362182448310, -0.363525941840608100, -0.363572520589953490, -0.363619098430367100, -0.363665675361733000, -0.363712251383935090, -0.363758826496856150, -0.363805400700380200, +-0.363851973994390680, -0.363898546378771670, -0.363945117853405890, -0.363991688418177250, -0.364038258072969860, -0.364084826817666410, -0.364131394652150890, -0.364177961576306890, +-0.364224527590018000, -0.364271092693168150, -0.364317656885640220, -0.364364220167318060, -0.364410782538085840, -0.364457343997826260, -0.364503904546423290, -0.364550464183760530, +-0.364597022909722070, -0.364643580724190560, -0.364690137627050210, -0.364736693618184450, -0.364783248697477360, -0.364829802864811760, -0.364876356120071690, -0.364922908463140680, +-0.364969459893902840, -0.365016010412240910, -0.365062560018038940, -0.365109108711181020, -0.365155656491549910, -0.365202203359029640, -0.365248749313503870, -0.365295294354856250, +-0.365341838482970750, -0.365388381697730300, -0.365434923999018890, -0.365481465386720550, -0.365528005860718150, -0.365574545420895740, -0.365621084067137000, -0.365667621799325880, +-0.365714158617345350, -0.365760694521079450, -0.365807229510411780, -0.365853763585226420, -0.365900296745406250, -0.365946828990835360, -0.365993360321397400, -0.366039890736976460, +-0.366086420237455360, -0.366132948822718180, -0.366179476492649090, -0.366226003247130890, -0.366272529086047680, -0.366319054009283110, -0.366365578016721370, -0.366412101108245240, +-0.366458623283738900, -0.366505144543085970, -0.366551664886170580, -0.366598184312875610, -0.366644702823085200, -0.366691220416683060, -0.366737737093553230, -0.366784252853578690, +-0.366830767696643470, -0.366877281622631780, -0.366923794631426440, -0.366970306722911640, -0.367016817896971050, -0.367063328153488470, -0.367109837492347930, -0.367156345913432380, +-0.367202853416626010, -0.367249360001812910, -0.367295865668875950, -0.367342370417699350, -0.367388874248166850, -0.367435377160162560, -0.367481879153569450, -0.367528380228271560, +-0.367574880384152760, -0.367621379621097200, -0.367667877938987750, -0.367714375337708620, -0.367760871817143560, -0.367807367377176730, -0.367853862017691050, -0.367900355738570720, +-0.367946848539699890, -0.367993340420961550, -0.368039831382239890, -0.368086321423418570, -0.368132810544381520, -0.368179298745012820, -0.368225786025195510, -0.368272272384813690, +-0.368318757823751620, -0.368365242341892220, -0.368411725939119750, -0.368458208615317920, -0.368504690370371040, -0.368551171204161980, -0.368597651116575000, -0.368644130107493860, +-0.368690608176802880, -0.368737085324384930, -0.368783561550124260, -0.368830036853904700, -0.368876511235610440, -0.368922984695124470, -0.368969457232331100, -0.369015928847114480, +-0.369062399539357600, -0.369108869308944710, -0.369155338155759680, -0.369201806079686720, -0.369248273080608810, -0.369294739158410270, -0.369341204312974790, -0.369387668544186810, +-0.369434131851929190, -0.369480594236086260, -0.369527055696541820, -0.369573516233180190, -0.369619975845884300, -0.369666434534538510, -0.369712892299027040, -0.369759349139232920, +-0.369805805055040460, -0.369852260046333480, -0.369898714112995800, -0.369945167254911830, -0.369991619471964460, -0.370038070764038050, -0.370084521131016920, -0.370130970572784050, +-0.370177419089223750, -0.370223866680219890, -0.370270313345656740, -0.370316759085417500, -0.370363203899386260, -0.370409647787447060, -0.370456090749484160, -0.370502532785380590, +-0.370548973895020730, -0.370595414078288390, -0.370641853335067940, -0.370688291665242480, -0.370734729068696260, -0.370781165545313650, -0.370827601094977700, -0.370874035717572710, +-0.370920469412982680, -0.370966902181091460, -0.371013334021783440, -0.371059764934941580, -0.371106194920450380, -0.371152623978194100, -0.371199052108055820, -0.371245479309919910, +-0.371291905583670310, -0.371338330929191380, -0.371384755346366220, -0.371431178835079150, -0.371477601395214130, -0.371524023026655490, -0.371570443729286440, -0.371616863502991220, +-0.371663282347653890, -0.371709700263158750, -0.371756117249388950, -0.371802533306228870, -0.371848948433562810, -0.371895362631274040, -0.371941775899246820, -0.371988188237365180, +-0.372034599645513440, -0.372081010123574860, -0.372127419671433700, -0.372173828288974000, -0.372220235976080170, -0.372266642732635320, -0.372313048558523870, -0.372359453453629750, +-0.372405857417837490, -0.372452260451030140, -0.372498662553092110, -0.372545063723907890, -0.372591463963360570, -0.372637863271334580, -0.372684261647713900, -0.372730659092382620, +-0.372777055605225120, -0.372823451186124530, -0.372869845834965300, -0.372916239551631890, -0.372962632336007460, -0.373009024187976490, -0.373055415107422910, -0.373101805094231240, +-0.373148194148284600, -0.373194582269467500, -0.373240969457664000, -0.373287355712758400, -0.373333741034634070, -0.373380125423175340, -0.373426508878266280, -0.373472891399791400, +-0.373519272987633880, -0.373565653641678150, -0.373612033361808700, -0.373658412147908790, -0.373704789999862840, -0.373751166917554890, -0.373797542900869030, -0.373843917949689740, +-0.373890292063900230, -0.373936665243385040, -0.373983037488028520, -0.374029408797714070, -0.374075779172326040, -0.374122148611748580, -0.374168517115866130, -0.374214884684562040, +-0.374261251317720700, -0.374307617015226250, -0.374353981776963110, -0.374400345602814650, -0.374446708492665370, -0.374493070446399230, -0.374539431463900900, -0.374585791545053560, +-0.374632150689741710, -0.374678508897849930, -0.374724866169261430, -0.374771222503860800, -0.374817577901532140, -0.374863932362159870, -0.374910285885627410, -0.374956638471819200, +-0.375002990120619440, -0.375049340831912600, -0.375095690605581960, -0.375142039441512140, -0.375188387339587200, -0.375234734299691730, -0.375281080321708980, -0.375327425405523550, +-0.375373769551019980, -0.375420112758081510, -0.375466455026592820, -0.375512796356437970, -0.375559136747501130, -0.375605476199666890, -0.375651814712818500, -0.375698152286840610, +-0.375744488921617710, -0.375790824617033230, -0.375837159372971630, -0.375883493189317190, -0.375929826065954380, -0.375976158002766630, -0.376022488999638470, -0.376068819056454060, +-0.376115148173098050, -0.376161476349453740, -0.376207803585405790, -0.376254129880838280, -0.376300455235635880, -0.376346779649681880, -0.376393103122861010, -0.376439425655057720, +-0.376485747246155520, -0.376532067896038880, -0.376578387604592110, -0.376624706371699370, -0.376671024197245300, -0.376717341081113210, -0.376763657023187810, -0.376809972023353700, +-0.376856286081494190, -0.376902599197493970, -0.376948911371237260, -0.376995222602608700, -0.377041532891491670, -0.377087842237770810, -0.377134150641330770, -0.377180458102054920, +-0.377226764619827900, -0.377273070194533990, -0.377319374826057430, -0.377365678514282820, -0.377411981259093590, -0.377458283060374430, -0.377504583918009950, -0.377550883831883620, +-0.377597182801880090, -0.377643480827883570, -0.377689777909778810, -0.377736074047449130, -0.377782369240779290, -0.377828663489653550, -0.377874956793956550, -0.377921249153571730, +-0.377967540568383830, -0.378013831038277020, -0.378060120563136090, -0.378106409142844440, -0.378152696777286750, -0.378198983466347730, -0.378245269209910860, -0.378291554007860800, +-0.378337837860081850, -0.378384120766458330, -0.378430402726874890, -0.378476683741215070, -0.378522963809363510, -0.378569242931204970, -0.378615521106622890, -0.378661798335502060, +-0.378708074617726650, -0.378754349953181520, -0.378800624341750100, -0.378846897783317090, -0.378893170277766870, -0.378939441824984120, -0.378985712424852350, -0.379031982077256360, +-0.379078250782080350, -0.379124518539209140, -0.379170785348526220, -0.379217051209916330, -0.379263316123264250, -0.379309580088453450, -0.379355843105368680, -0.379402105173894330, +-0.379448366293915100, -0.379494626465314570, -0.379540885687977450, -0.379587143961788160, -0.379633401286631370, -0.379679657662390700, -0.379725913088950870, -0.379772167566196250, +-0.379818421094011650, -0.379864673672280610, -0.379910925300887830, -0.379957175979718180, -0.380003425708655140, -0.380049674487583590, -0.380095922316387780, -0.380142169194952250, +-0.380188415123161650, -0.380234660100899620, -0.380280904128050930, -0.380327147204500390, -0.380373389330131590, -0.380419630504829350, -0.380465870728477980, -0.380512110000962360, +-0.380558348322166060, -0.380604585691973860, -0.380650822110270240, -0.380697057576939950, -0.380743292091866580, -0.380789525654935010, -0.380835758266029610, -0.380881989925035250, +-0.380928220631835510, -0.380974450386315220, -0.381020679188359190, -0.381066907037851070, -0.381113133934675660, -0.381159359878717410, -0.381205584869860780, -0.381251808907990600, +-0.381298031992990500, -0.381344254124745260, -0.381390475303139850, -0.381436695528057870, -0.381482914799384070, -0.381529133117003040, -0.381575350480799600, -0.381621566890657290, +-0.381667782346461150, -0.381713996848095540, -0.381760210395445330, -0.381806422988394180, -0.381852634626826950, -0.381898845310628180, -0.381945055039682680, -0.381991263813874160, +-0.382037471633087430, -0.382083678497207480, -0.382129884406117950, -0.382176089359703650, -0.382222293357849130, -0.382268496400439310, -0.382314698487357830, -0.382360899618489570, +-0.382407099793719120, -0.382453299012931290, -0.382499497276009850, -0.382545694582839600, -0.382591890933305150, -0.382638086327291400, -0.382684280764682030, -0.382730474245361940, +-0.382776666769216070, -0.382822858336128110, -0.382869048945983000, -0.382915238598665280, -0.382961427294059460, -0.383007615032050500, -0.383053801812522080, -0.383099987635359180, +-0.383146172500446690, -0.383192356407668360, -0.383238539356909160, -0.383284721348053580, -0.383330902380986660, -0.383377082455592040, -0.383423261571754710, -0.383469439729359210, +-0.383515616928290560, -0.383561793168432420, -0.383607968449669820, -0.383654142771887310, -0.383700316134969850, -0.383746488538801170, -0.383792659983266280, -0.383838830468250130, +-0.383884999993636510, -0.383931168559310420, -0.383977336165156390, -0.384023502811058960, -0.384069668496903270, -0.384115833222572980, -0.384161996987953060, -0.384208159792928610, +-0.384254321637383320, -0.384300482521202250, -0.384346642444269910, -0.384392801406471470, -0.384438959407690570, -0.384485116447812250, -0.384531272526721150, -0.384577427644302310, +-0.384623581800439480, -0.384669734995017660, -0.384715887227921550, -0.384762038499036120, -0.384808188808245130, -0.384854338155433740, -0.384900486540486860, -0.384946633963288430, +-0.384992780423723370, -0.385038925921676320, -0.385085070457032440, -0.385131214029675430, -0.385177356639490380, -0.385223498286361930, -0.385269638970175190, -0.385315778690813900, +-0.385361917448163170, -0.385408055242107640, -0.385454192072532400, -0.385500327939321320, -0.385546462842359330, -0.385592596781531630, -0.385638729756722030, -0.385684861767815630, +-0.385730992814697030, -0.385777122897250970, -0.385823252015362550, -0.385869380168915530, -0.385915507357795060, -0.385961633581886290, -0.386007758841072970, -0.386053883135240310, +-0.386100006464272890, -0.386146128828055880, -0.386192250226473130, -0.386238370659409750, -0.386284490126750480, -0.386330608628380370, -0.386376726164183340, -0.386422842734044480, +-0.386468958337848500, -0.386515072975480540, -0.386561186646824540, -0.386607299351765520, -0.386653411090188690, -0.386699521861977870, -0.386745631667018310, -0.386791740505194660, +-0.386837848376391620, -0.386883955280494410, -0.386930061217386880, -0.386976166186954180, -0.387022270189081530, -0.387068373223652730, -0.387114475290553040, -0.387160576389667170, +-0.387206676520880260, -0.387252775684076230, -0.387298873879140250, -0.387344971105957110, -0.387391067364411980, -0.387437162654388710, -0.387483256975772570, -0.387529350328448260, +-0.387575442712301040, -0.387621534127214780, -0.387667624573074630, -0.387713714049765900, -0.387759802557172460, -0.387805890095179460, -0.387851976663671830, -0.387898062262534590, +-0.387944146891651800, -0.387990230550908640, -0.388036313240189950, -0.388082394959380850, -0.388128475708365340, -0.388174555487028670, -0.388220634295255610, -0.388266712132931350, +-0.388312788999939930, -0.388358864896166500, -0.388404939821496320, -0.388451013775813430, -0.388497086759002960, -0.388543158770949800, -0.388589229811538710, -0.388635299880654980, +-0.388681368978182620, -0.388727437104006810, -0.388773504258012770, -0.388819570440084640, -0.388865635650107510, -0.388911699887966370, -0.388957763153546350, -0.389003825446731510, +-0.389049886767407090, -0.389095947115457970, -0.389142006490769410, -0.389188064893225380, -0.389234122322711210, -0.389280178779111750, -0.389326234262312280, -0.389372288772196760, +-0.389418342308650520, -0.389464394871558870, -0.389510446460805790, -0.389556497076276600, -0.389602546717856160, -0.389648595385429400, -0.389694643078881520, -0.389740689798096620, +-0.389786735542960010, -0.389832780313357000, -0.389878824109171570, -0.389924866930289100, -0.389970908776594460, -0.390016949647973010, -0.390062989544308740, -0.390109028465486950, +-0.390155066411393080, -0.390201103381911050, -0.390247139376926340, -0.390293174396323720, -0.390339208439988210, -0.390385241507805070, -0.390431273599658460, -0.390477304715433570, +-0.390523334855015890, -0.390569364018289460, -0.390615392205139630, -0.390661419415451290, -0.390707445649109860, -0.390753470905999380, -0.390799495186005210, -0.390845518489012280, +-0.390891540814906010, -0.390937562163570450, -0.390983582534891020, -0.391029601928752580, -0.391075620345040620, -0.391121637783639120, -0.391167654244433560, -0.391213669727309310, +-0.391259684232150410, -0.391305697758842330, -0.391351710307270010, -0.391397721877318420, -0.391443732468872930, -0.391489742081817690, -0.391535750716038080, -0.391581758371419510, +-0.391627765047846190, -0.391673770745203380, -0.391719775463376220, -0.391765779202249980, -0.391811781961708900, -0.391857783741638320, -0.391903784541923320, -0.391949784362449320, +-0.391995783203100360, -0.392041781063761970, -0.392087777944319150, -0.392133773844657310, -0.392179768764660600, -0.392225762704214440, -0.392271755663204320, -0.392317747641514390, +-0.392363738639030070, -0.392409728655636450, -0.392455717691218450, -0.392501705745661620, -0.392547692818850100, -0.392593678910669320, -0.392639664021004810, -0.392685648149740660, +-0.392731631296762470, -0.392777613461955170, -0.392823594645204220, -0.392869574846393840, -0.392915554065409620, -0.392961532302136870, -0.393007509556459860, -0.393053485828264100, +-0.393099461117434660, -0.393145435423856550, -0.393191408747415210, -0.393237381087995000, -0.393283352445481290, -0.393329322819759630, -0.393375292210714270, -0.393421260618230680, +-0.393467228042193920, -0.393513194482489500, -0.393559159939001700, -0.393605124411615990, -0.393651087900217470, -0.393697050404691610, -0.393743011924922730, -0.393788972460796360, +-0.393834932012197490, -0.393880890579011770, -0.393926848161123390, -0.393972804758417890, -0.394018760370780760, -0.394064714998096370, -0.394110668640250130, -0.394156621297127250, +-0.394202572968612830, -0.394248523654592400, -0.394294473354950210, -0.394340422069571870, -0.394386369798342850, -0.394432316541147520, -0.394478262297871420, -0.394524207068399630, +-0.394570150852617760, -0.394616093650410060, -0.394662035461662180, -0.394707976286259200, -0.394753916124086670, -0.394799854975028900, -0.394845792838971590, -0.394891729715799720, +-0.394937665605398950, -0.394983600507653630, -0.395029534422449310, -0.395075467349671530, -0.395121399289204700, -0.395167330240934370, -0.395213260204745680, -0.395259189180524270, +-0.395305117168154470, -0.395351044167521930, -0.395396970178511720, -0.395442895201009500, -0.395488819234899700, -0.395534742280067800, -0.395580664336399050, -0.395626585403779040, +-0.395672505482092150, -0.395718424571224030, -0.395764342671060200, -0.395810259781485150, -0.395856175902384420, -0.395902091033643270, -0.395948005175146890, -0.395993918326780940, +-0.396039830488429720, -0.396085741659979010, -0.396131651841314270, -0.396177561032320050, -0.396223469232881880, -0.396269376442885070, -0.396315282662215220, -0.396361187890756750, +-0.396407092128395310, -0.396452995375016160, -0.396498897630504940, -0.396544798894746030, -0.396590699167625130, -0.396636598449027490, -0.396682496738838760, -0.396728394036943380, +-0.396774290343227030, -0.396820185657575320, -0.396866079979872780, -0.396911973310005000, -0.396957865647857340, -0.397003756993314970, -0.397049647346263630, -0.397095536706587760, +-0.397141425074173100, -0.397187312448905210, -0.397233198830668650, -0.397279084219349150, -0.397324968614831910, -0.397370852017002620, -0.397416734425745820, -0.397462615840947160, +-0.397508496262492020, -0.397554375690265970, -0.397600254124153620, -0.397646131564040610, -0.397692008009812300, -0.397737883461354360, -0.397783757918551310, -0.397829631381288850, +-0.397875503849452750, -0.397921375322927480, -0.397967245801598760, -0.398013115285351940, -0.398058983774072670, -0.398104851267645610, -0.398150717765956400, -0.398196583268890400, +-0.398242447776333330, -0.398288311288169770, -0.398334173804285370, -0.398380035324565620, -0.398425895848896150, -0.398471755377161510, -0.398517613909247500, -0.398563471445039840, +-0.398609327984423110, -0.398655183527283070, -0.398701038073505100, -0.398746891622974500, -0.398792744175577090, -0.398838595731197400, -0.398884446289721200, -0.398930295851034340, +-0.398976144415021330, -0.399021991981567900, -0.399067838550559550, -0.399113684121881970, -0.399159528695419820, -0.399205372271058790, -0.399251214848684370, -0.399297056428182310, +-0.399342897009437200, -0.399388736592334870, -0.399434575176760680, -0.399480412762600430, -0.399526249349738790, -0.399572084938061510, -0.399617919527454400, -0.399663753117802110, +-0.399709585708990460, -0.399755417300904800, -0.399801247893430630, -0.399847077486453760, -0.399892906079858720, -0.399938733673531500, -0.399984560267357790, -0.400030385861222300, +-0.400076210455010850, -0.400122034048608850, -0.400167856641902190, -0.400213678234775490, -0.400259498827114590, -0.400305318418804900, -0.400351137009732350, -0.400396954599781580, +-0.400442771188838420, -0.400488586776788280, -0.400534401363517150, -0.400580214948909550, -0.400626027532851430, -0.400671839115228630, -0.400717649695925880, -0.400763459274828980, +-0.400809267851823410, -0.400855075426795100, -0.400900881999628700, -0.400946687570210070, -0.400992492138424750, -0.401038295704158610, -0.401084098267296300, -0.401129899827723730, +-0.401175700385326460, -0.401221499939990290, -0.401267298491600030, -0.401313096040041450, -0.401358892585200580, -0.401404688126962060, -0.401450482665211830, -0.401496276199835410, +-0.401542068730718240, -0.401587860257746340, -0.401633650780804430, -0.401679440299778310, -0.401725228814554080, -0.401771016325016330, -0.401816802831051030, -0.401862588332543740, +-0.401908372829380360, -0.401954156321445650, -0.401999938808625560, -0.402045720290805600, -0.402091500767871760, -0.402137280239708790, -0.402183058706202580, -0.402228836167238760, +-0.402274612622703250, -0.402320388072480770, -0.402366162516457350, -0.402411935954518910, -0.402457708386550210, -0.402503479812437280, -0.402549250232065610, -0.402595019645320850, +-0.402640788052088970, -0.402686555452254680, -0.402732321845703960, -0.402778087232322890, -0.402823851611996190, -0.402869614984609880, -0.402915377350049510, -0.402961138708201110, +-0.403006899058949430, -0.403052658402180520, -0.403098416737780410, -0.403144174065633800, -0.403189930385626780, -0.403235685697644900, -0.403281440001573840, -0.403327193297299600, +-0.403372945584706930, -0.403418696863681920, -0.403464447134110560, -0.403510196395877710, -0.403555944648869350, -0.403601691892971130, -0.403647438128069080, -0.403693183354048020, +-0.403738927570793990, -0.403784670778192690, -0.403830412976130090, -0.403876154164491070, -0.403921894343161610, -0.403967633512027470, -0.404013371670974620, -0.404059108819887990, +-0.404104844958653510, -0.404150580087157370, -0.404196314205284400, -0.404242047312920570, -0.404287779409951700, -0.404333510496263320, -0.404379240571741630, -0.404424969636271390, +-0.404470697689738700, -0.404516424732029760, -0.404562150763029260, -0.404607875782623420, -0.404653599790697930, -0.404699322787138770, -0.404745044771830930, -0.404790765744660500, +-0.404836485705513170, -0.404882204654274990, -0.404927922590830880, -0.404973639515066990, -0.405019355426869010, -0.405065070326123040, -0.405110784212713960, -0.405156497086527960, +-0.405202208947451130, -0.405247919795368340, -0.405293629630165740, -0.405339338451729090, -0.405385046259944090, -0.405430753054696890, -0.405476458835872410, -0.405522163603356740, +-0.405567867357036150, -0.405613570096795380, -0.405659271822520760, -0.405704972534097930, -0.405750672231413090, -0.405796370914351170, -0.405842068582798310, -0.405887765236640660, +-0.405933460875763210, -0.405979155500052090, -0.406024849109393130, -0.406070541703672020, -0.406116233282774960, -0.406161923846586890, -0.406207613394994060, -0.406253301927882560, +-0.406298989445137430, -0.406344675946644810, -0.406390361432290510, -0.406436045901960700, -0.406481729355540390, -0.406527411792915740, -0.406573093213972560, -0.406618773618597050, +-0.406664453006674200, -0.406710131378090260, -0.406755808732730930, -0.406801485070482530, -0.406847160391229980, -0.406892834694859540, -0.406938507981257410, -0.406984180250308640, +-0.407029851501899350, -0.407075521735915490, -0.407121190952242810, -0.407166859150767560, -0.407212526331374780, -0.407258192493950620, -0.407303857638381450, -0.407349521764552190, +-0.407395184872349160, -0.407440846961658170, -0.407486508032365410, -0.407532168084356050, -0.407577827117516220, -0.407623485131731800, -0.407669142126889150, -0.407714798102873200, +-0.407760453059570260, -0.407806106996866150, -0.407851759914647230, -0.407897411812798480, -0.407943062691206170, -0.407988712549756660, -0.408034361388334930, -0.408080009206827350, +-0.408125656005119690, -0.408171301783098290, -0.408216946540648270, -0.408262590277655880, -0.408308232994006980, -0.408353874689587950, -0.408399515364283820, -0.408445155017980900, +-0.408490793650565060, -0.408536431261922680, -0.408582067851938790, -0.408627703420499750, -0.408673337967491830, -0.408718971492800180, -0.408764603996311090, -0.408810235477910510, +-0.408855865937484300, -0.408901495374918880, -0.408947123790099290, -0.408992751182911900, -0.409038377553243020, -0.409084002900977790, -0.409129627226002600, -0.409175250528203300, +-0.409220872807466270, -0.409266494063676710, -0.409312114296720870, -0.409357733506484740, -0.409403351692854690, -0.409448968855715860, -0.409494584994954610, -0.409540200110456890, +-0.409585814202109100, -0.409631427269796340, -0.409677039313405040, -0.409722650332821510, -0.409768260327930960, -0.409813869298619790, -0.409859477244773900, -0.409905084166279350, +-0.409950690063022480, -0.409996294934888480, -0.410041898781763780, -0.410087501603534690, -0.410133103400086460, -0.410178704171305470, -0.410224303917077760, -0.410269902637289630, +-0.410315500331826340, -0.410361097000574330, -0.410406692643419610, -0.410452287260248520, -0.410497880850946300, -0.410543473415399370, -0.410589064953493790, -0.410634655465115960, +-0.410680244950151040, -0.410725833408485560, -0.410771420840005840, -0.410817007244597240, -0.410862592622146080, -0.410908176972538450, -0.410953760295660770, -0.410999342591398250, +-0.411044923859637420, -0.411090504100264260, -0.411136083313165260, -0.411181661498225660, -0.411227238655331890, -0.411272814784370060, -0.411318389885226510, -0.411363963957786630, +-0.411409537001936890, -0.411455109017563660, -0.411500680004552260, -0.411546249962789160, -0.411591818892160400, -0.411637386792552130, -0.411682953663850830, -0.411728519505941690, +-0.411774084318711260, -0.411819648102046020, -0.411865210855831280, -0.411910772579953510, -0.411956333274298760, -0.412001892938753670, -0.412047451573203380, -0.412093009177534440, +-0.412138565751633050, -0.412184121295385620, -0.412229675808677480, -0.412275229291395100, -0.412320781743424680, -0.412366333164652770, -0.412411883554964550, -0.412457432914246640, +-0.412502981242385550, -0.412548528539266660, -0.412594074804776390, -0.412639620038800950, -0.412685164241226420, -0.412730707411939460, -0.412776249550825260, -0.412821790657770470, +-0.412867330732661570, -0.412912869775383990, -0.412958407785824210, -0.413003944763868420, -0.413049480709403170, -0.413095015622313820, -0.413140549502486910, -0.413186082349808640, +-0.413231614164165590, -0.413277144945443040, -0.413322674693527680, -0.413368203408305600, -0.413413731089663450, -0.413459257737486600, -0.413504783351661520, -0.413550307932074920, +-0.413595831478612170, -0.413641353991159810, -0.413686875469604090, -0.413732395913831600, -0.413777915323727650, -0.413823433699178960, -0.413868951040071710, -0.413914467346292450, +-0.413959982617726600, -0.414005496854260800, -0.414051010055781320, -0.414096522222174630, -0.414142033353326330, -0.414187543449122840, -0.414233052509450970, -0.414278560534196040, +-0.414324067523244740, -0.414369573476483230, -0.414415078393797760, -0.414460582275075100, -0.414506085120200480, -0.414551586929060690, -0.414597087701542360, -0.414642587437530850, +-0.414688086136912880, -0.414733583799574760, -0.414779080425403010, -0.414824576014283190, -0.414870070566101920, -0.414915564080745480, -0.414961056558100560, -0.415006547998052530, +-0.415052038400488210, -0.415097527765293740, -0.415143016092355880, -0.415188503381560050, -0.415233989632792950, -0.415279474845941350, -0.415324959020890620, -0.415370442157527440, +-0.415415924255738260, -0.415461405315409200, -0.415506885336427050, -0.415552364318677260, -0.415597842262046550, -0.415643319166421670, -0.415688795031688100, -0.415734269857732490, +-0.415779743644441260, -0.415825216391701060, -0.415870688099397420, -0.415916158767417050, -0.415961628395646650, -0.416007096983971870, -0.416052564532279230, -0.416098031040455290, +-0.416143496508386220, -0.416188960935958810, -0.416234424323058570, -0.416279886669572330, -0.416325347975386730, -0.416370808240387360, -0.416416267464460980, -0.416461725647493950, +-0.416507182789372990, -0.416552638889983670, -0.416598093949212770, -0.416643547966946640, -0.416689000943071990, -0.416734452877474460, -0.416779903770040820, -0.416825353620657420, +-0.416870802429211040, -0.416916250195587200, -0.416961696919672780, -0.417007142601354520, -0.417052587240518020, -0.417098030837049990, -0.417143473390836960, -0.417188914901765180, +-0.417234355369721530, -0.417279794794591650, -0.417325233176262190, -0.417370670514620120, -0.417416106809550940, -0.417461542060941490, -0.417506976268678220, -0.417552409432647880, +-0.417597841552736100, -0.417643272628829780, -0.417688702660815200, -0.417734131648579310, -0.417779559592007690, -0.417824986490987150, -0.417870412345404170, -0.417915837155145520, +-0.417961260920096890, -0.418006683640145150, -0.418052105315177060, -0.418097525945078320, -0.418142945529735800, -0.418188364069035870, -0.418233781562865000, -0.418279198011110130, +-0.418324613413656840, -0.418370027770392060, -0.418415441081202600, -0.418460853345974100, -0.418506264564593500, -0.418551674736947210, -0.418597083862922160, -0.418642491942403940, +-0.418687898975279580, -0.418733304961435790, -0.418778709900758380, -0.418824113793134220, -0.418869516638449730, -0.418914918436591450, -0.418960319187446310, -0.419005718890899990, +-0.419051117546839320, -0.419096515155151280, -0.419141911715721520, -0.419187307228437000, -0.419232701693184220, -0.419278095109850090, -0.419323487478320320, -0.419368878798481840, +-0.419414269070221170, -0.419459658293425190, -0.419505046467979700, -0.419550433593771530, -0.419595819670687380, -0.419641204698613990, -0.419686588677437240, -0.419731971607044010, +-0.419777353487321260, -0.419822734318154700, -0.419868114099431310, -0.419913492831037630, -0.419958870512860240, -0.420004247144786070, -0.420049622726700820, -0.420094997258491590, +-0.420140370740045230, -0.420185743171247570, -0.420231114551985530, -0.420276484882145750, -0.420321854161615100, -0.420367222390279460, -0.420412589568025740, -0.420457955694740540, +-0.420503320770310830, -0.420548684794622480, -0.420594047767562370, -0.420639409689017140, -0.420684770558873820, -0.420730130377018170, -0.420775489143337180, -0.420820846857717870, +-0.420866203520046000, -0.420911559130208670, -0.420956913688092460, -0.421002267193584300, -0.421047619646570110, -0.421092971046936880, -0.421138321394571250, -0.421183670689360190, +-0.421229018931189520, -0.421274366119946340, -0.421319712255517230, -0.421365057337789230, -0.421410401366648200, -0.421455744341981190, -0.421501086263675160, -0.421546427131616050, +-0.421591766945690890, -0.421637105705786270, -0.421682443411788950, -0.421727780063585860, -0.421773115661062960, -0.421818450204107240, -0.421863783692605850, -0.421909116126444550, +-0.421954447505510480, -0.421999777829690280, -0.422045107098871000, -0.422090435312938610, -0.422135762471780080, -0.422181088575282190, -0.422226413623331960, -0.422271737615815320, +-0.422317060552619310, -0.422362382433630670, -0.422407703258736440, -0.422453023027822620, -0.422498341740776160, -0.422543659397484280, -0.422588975997832850, -0.422634291541709010, +-0.422679606028999400, -0.422724919459590790, -0.422770231833370260, -0.422815543150223790, -0.422860853410038430, -0.422906162612701360, -0.422951470758098470, -0.422996777846116890, +-0.423042083876643380, -0.423087388849565090, -0.423132692764767890, -0.423177995622138980, -0.423223297421565060, -0.423268598162933330, -0.423313897846129660, -0.423359196471041310, +-0.423404494037554920, -0.423449790545557700, -0.423495085994935570, -0.423540380385575790, -0.423585673717365440, -0.423630965990190460, -0.423676257203938140, -0.423721547358495100, +-0.423766836453748630, -0.423812124489584720, -0.423857411465890400, -0.423902697382552600, -0.423947982239458510, -0.423993266036494010, -0.424038548773546300, -0.424083830450502300, +-0.424129111067249100, -0.424174390623672680, -0.424219669119660300, -0.424264946555099160, -0.424310222929875300, -0.424355498243875810, -0.424400772496987600, -0.424446045689097500, +-0.424491317820092640, -0.424536588889859070, -0.424581858898284090, -0.424627127845254800, -0.424672395730657350, -0.424717662554378870, -0.424762928316306240, -0.424808193016326660, +-0.424853456654326220, -0.424898719230192180, -0.424943980743811290, -0.424989241195070870, -0.425034500583856940, -0.425079758910056780, -0.425125016173557190, -0.425170272374245480, +-0.425215527512007700, -0.425260781586731080, -0.425306034598302910, -0.425351286546609250, -0.425396537431537380, -0.425441787252974160, -0.425487036010806510, -0.425532283704921630, +-0.425577530335205680, -0.425622775901545850, -0.425668020403829510, -0.425713263841942690, -0.425758506215772770, -0.425803747525206560, -0.425848987770131360, -0.425894226950433270, +-0.425939465065999670, -0.425984702116717350, -0.426029938102473750, -0.426075173023154840, -0.426120406878648050, -0.426165639668840190, -0.426210871393618680, -0.426256102052869570, +-0.426301331646480150, -0.426346560174337860, -0.426391787636328790, -0.426437014032340190, -0.426482239362259100, -0.426527463625972820, -0.426572686823367460, -0.426617908954330380, +-0.426663130018748560, -0.426708350016509250, -0.426753568947498720, -0.426798786811604270, -0.426844003608712830, -0.426889219338711770, -0.426934434001487280, -0.426979647596926690, +-0.427024860124917420, -0.427070071585345550, -0.427115281978098500, -0.427160491303063270, -0.427205699560126830, -0.427250906749176540, -0.427296112870098550, -0.427341317922780290, +-0.427386521907109130, -0.427431724822971320, -0.427476926670254110, -0.427522127448844660, -0.427567327158630270, -0.427612525799497160, -0.427657723371332680, -0.427702919874023980, +-0.427748115307458320, -0.427793309671521960, -0.427838502966102370, -0.427883695191086540, -0.427928886346361840, -0.427974076431814510, -0.428019265447331990, -0.428064453392801750, +-0.428109640268109940, -0.428154826073144030, -0.428200010807791080, -0.428245194471938100, -0.428290377065472520, -0.428335558588280600, -0.428380739040249760, -0.428425918421267480, +-0.428471096731220020, -0.428516273969994810, -0.428561450137478930, -0.428606625233559860, -0.428651799258123740, -0.428696972211058180, -0.428742144092250200, -0.428787314901587220, +-0.428832484638955570, -0.428877653304242710, -0.428922820897335690, -0.428967987418122090, -0.429013152866488060, -0.429058317242321130, -0.429103480545508840, -0.429148642775937450, +-0.429193803933494490, -0.429238964018066940, -0.429284123029542440, -0.429329280967807200, -0.429374437832748810, -0.429419593624254250, -0.429464748342211160, -0.429509901986505790, +-0.429555054557025640, -0.429600206053657900, -0.429645356476289990, -0.429690505824808330, -0.429735654099100420, -0.429780801299053720, -0.429825947424554660, -0.429871092475490710, +-0.429916236451749030, -0.429961379353216770, -0.430006521179781440, -0.430051661931329430, -0.430096801607748270, -0.430141940208925490, -0.430187077734747460, -0.430232214185101770, +-0.430277349559875510, -0.430322483858956270, -0.430367617082230420, -0.430412749229585560, -0.430457880300908810, -0.430503010296087730, -0.430548139215008780, -0.430593267057559460, +-0.430638393823626950, -0.430683519513098860, -0.430728644125861590, -0.430773767661802700, -0.430818890120809820, -0.430864011502769260, -0.430909131807568730, -0.430954251035095330, +-0.430999369185236290, -0.431044486257879280, -0.431089602252910600, -0.431134717170217950, -0.431179831009688930, -0.431224943771209900, -0.431270055454668510, -0.431315166059951960, +-0.431360275586947890, -0.431405384035542790, -0.431450491405624190, -0.431495597697079790, -0.431540702909795960, -0.431585807043660400, -0.431630910098560310, -0.431676012074382940, +-0.431721112971015950, -0.431766212788345760, -0.431811311526260070, -0.431856409184646520, -0.431901505763391480, -0.431946601262382710, -0.431991695681507410, -0.432036789020653340, +-0.432081881279706810, -0.432126972458555640, -0.432172062557087010, -0.432217151575188640, -0.432262239512747000, -0.432307326369649750, -0.432352412145784180, -0.432397496841037950, +-0.432442580455297650, -0.432487662988450820, -0.432532744440385310, -0.432577824810987500, -0.432622904100145090, -0.432667982307745500, -0.432713059433675880, -0.432758135477824050, +-0.432803210440076470, -0.432848284320320850, -0.432893357118444950, -0.432938428834335250, -0.432983499467879510, -0.433028569018964970, -0.433073637487479400, -0.433118704873309390, +-0.433163771176342580, -0.433208836396466350, -0.433253900533568440, -0.433298963587535340, -0.433344025558254850, -0.433389086445614360, -0.433434146249501500, -0.433479204969802860, +-0.433524262606406200, -0.433569319159199330, -0.433614374628068730, -0.433659429012902220, -0.433704482313587100, -0.433749534530011190, -0.433794585662061030, -0.433839635709624470, +-0.433884684672588780, -0.433929732550841770, -0.433974779344270030, -0.434019825052761320, -0.434064869676203060, -0.434109913214483060, -0.434154955667487850, -0.434199997035105260, +-0.434245037317223080, -0.434290076513727920, -0.434335114624507520, -0.434380151649449380, -0.434425187588440840, -0.434470222441369740, -0.434515256208122700, -0.434560288888587500, +-0.434605320482651940, -0.434650350990202720, -0.434695380411127650, -0.434740408745314060, -0.434785435992649900, -0.434830462153021740, -0.434875487226317410, -0.434920511212424420, +-0.434965534111230460, -0.435010555922622330, -0.435055576646487810, -0.435100596282714300, -0.435145614831189740, -0.435190632291800720, -0.435235648664435150, -0.435280663948980850, +-0.435325678145324470, -0.435370691253353930, -0.435415703272956640, -0.435460714204020050, -0.435505724046432120, -0.435550732800079500, -0.435595740464850000, -0.435640747040631600, +-0.435685752527310900, -0.435730756924775810, -0.435775760232913870, -0.435820762451612890, -0.435865763580759620, -0.435910763620241950, -0.435955762569947340, -0.436000760429763770, +-0.436045757199577830, -0.436090752879277570, -0.436135747468750390, -0.436180740967884230, -0.436225733376565840, -0.436270724694683140, -0.436315714922124010, -0.436360704058775140, +-0.436405692104524570, -0.436450679059259770, -0.436495664922868620, -0.436540649695237980, -0.436585633376255670, -0.436630615965809320, -0.436675597463786760, -0.436720577870074840, +-0.436765557184561500, -0.436810535407134220, -0.436855512537681070, -0.436900488576088710, -0.436945463522245110, -0.436990437376038270, -0.437035410137354920, -0.437080381806083000, +-0.437125352382110200, -0.437170321865324010, -0.437215290255612400, -0.437260257552862130, -0.437305223756961290, -0.437350188867797750, -0.437395152885258320, -0.437440115809231030, +-0.437485077639603430, -0.437530038376263590, -0.437574998019098220, -0.437619956567995350, -0.437664914022842580, -0.437709870383527930, -0.437754825649938230, -0.437799779821961440, +-0.437844732899485220, -0.437889684882397550, -0.437934635770585280, -0.437979585563936400, -0.438024534262339000, -0.438069481865679840, -0.438114428373846950, -0.438159373786728030, +-0.438204318104210680, -0.438249261326182860, -0.438294203452531560, -0.438339144483144760, -0.438384084417910440, -0.438429023256715570, -0.438473960999448080, -0.438518897645995720, +-0.438563833196246530, -0.438608767650087330, -0.438653701007406250, -0.438698633268090890, -0.438743564432029330, -0.438788494499108510, -0.438833423469216390, -0.438878351342240740, +-0.438923278118069640, -0.438968203796589910, -0.439013128377689690, -0.439058051861257010, -0.439102974247178870, -0.439147895535343220, -0.439192815725637900, -0.439237734817950860, +-0.439282652812169160, -0.439327569708180820, -0.439372485505873490, -0.439417400205135420, -0.439462313805853430, -0.439507226307915610, -0.439552137711209770, -0.439597048015623990, +-0.439641957221045150, -0.439686865327361450, -0.439731772334460980, -0.439776678242230710, -0.439821583050558680, -0.439866486759332760, -0.439911389368440600, -0.439956290877770330, +-0.440001191287208990, -0.440046090596644620, -0.440090988805965480, -0.440135885915058420, -0.440180781923811660, -0.440225676832112940, -0.440270570639850420, -0.440315463346911130, +-0.440360354953183100, -0.440405245458554250, -0.440450134862912620, -0.440495023166145310, -0.440539910368140440, -0.440584796468785790, -0.440629681467969550, -0.440674565365578700, +-0.440719448161501380, -0.440764329855625910, -0.440809210447839220, -0.440854089938029440, -0.440898968326084490, -0.440943845611892150, -0.440988721795340540, -0.441033596876316710, +-0.441078470854708920, -0.441123343730405350, -0.441168215503293050, -0.441213086173260160, -0.441257955740194550, -0.441302824203984480, -0.441347691564516980, -0.441392557821680190, +-0.441437422975362040, -0.441482287025450730, -0.441527149971833290, -0.441572011814397980, -0.441616872553032670, -0.441661732187625560, -0.441706590718063670, -0.441751448144235390, +-0.441796304466028860, -0.441841159683331150, -0.441886013796030540, -0.441930866804014890, -0.441975718707172500, -0.442020569505390370, -0.442065419198556850, -0.442110267786559820, +-0.442155115269287470, -0.442199961646626890, -0.442244806918466460, -0.442289651084694040, -0.442334494145197880, -0.442379336099865070, -0.442424176948583880, -0.442469016691242720, +-0.442513855327728580, -0.442558692857929810, -0.442603529281734300, -0.442648364599029950, -0.442693198809705090, -0.442738031913646910, -0.442782863910743560, -0.442827694800883460, +-0.442872524583953760, -0.442917353259842770, -0.442962180828438360, -0.443007007289628880, -0.443051832643301500, -0.443096656889344580, -0.443141480027645970, -0.443186302058094060, +-0.443231122980575990, -0.443275942794980120, -0.443320761501194430, -0.443365579099107180, -0.443410395588605620, -0.443455210969578070, -0.443500025241912900, -0.443544838405497240, +-0.443589650460219480, -0.443634461405967630, -0.443679271242629570, -0.443724079970093780, -0.443768887588247400, -0.443813694096978790, -0.443858499496176280, -0.443903303785727230, +-0.443948106965519840, -0.443992909035442200, -0.444037709995382720, -0.444082509845228510, -0.444127308584868100, -0.444172106214189790, -0.444216902733080790, -0.444261698141429520, +-0.444306492439124010, -0.444351285626052310, -0.444396077702102770, -0.444440868667162650, -0.444485658521120370, -0.444530447263864310, -0.444575234895281720, -0.444620021415261080, +-0.444664806823690360, -0.444709591120458050, -0.444754374305451390, -0.444799156378558710, -0.444843937339668210, -0.444888717188668240, -0.444933495925446070, -0.444978273549890170, +-0.445023050061888580, -0.445067825461329780, -0.445112599748101020, -0.445157372922090730, -0.445202144983187440, -0.445246915931278350, -0.445291685766252000, -0.445336454487996470, +-0.445381222096399740, -0.445425988591350410, -0.445470753972735670, -0.445515518240444050, -0.445560281394364040, -0.445605043434382900, -0.445649804360389200, -0.445694564172270940, +-0.445739322869916690, -0.445784080453213770, -0.445828836922050610, -0.445873592276315340, -0.445918346515896510, -0.445963099640681430, -0.446007851650558620, -0.446052602545416120, +-0.446097352325142580, -0.446142100989625200, -0.446186848538752570, -0.446231594972413270, -0.446276340290494570, -0.446321084492884990, -0.446365827579472680, -0.446410569550145850, +-0.446455310404792970, -0.446500050143301460, -0.446544788765559750, -0.446589526271456540, -0.446634262660879080, -0.446678997933715960, -0.446723732089855330, -0.446768465129185830, +-0.446813197051594720, -0.446857927856970650, -0.446902657545202090, -0.446947386116176570, -0.446992113569782520, -0.447036839905908200, -0.447081565124441800, -0.447126289225271920, +-0.447171012208285870, -0.447215734073372280, -0.447260454820419760, -0.447305174449315720, -0.447349892959948760, -0.447394610352207070, -0.447439326625979240, -0.447484041781152640, +-0.447528755817616030, -0.447573468735257440, -0.447618180533965630, -0.447662891213627960, -0.447707600774133070, -0.447752309215369180, -0.447797016537224920, -0.447841722739587720, +-0.447886427822346170, -0.447931131785389010, -0.447975834628603580, -0.448020536351878550, -0.448065236955102250, -0.448109936438162770, -0.448154634800948910, -0.448199332043348050, +-0.448244028165248830, -0.448288723166540000, -0.448333417047108940, -0.448378109806844280, -0.448422801445634400, -0.448467491963367940, -0.448512181359932320, -0.448556869635216240, +-0.448601556789107960, -0.448646242821496230, -0.448690927732268490, -0.448735611521313420, -0.448780294188519340, -0.448824975733774890, -0.448869656156967610, -0.448914335457986200, +-0.448959013636719360, -0.449003690693054570, -0.449048366626880580, -0.449093041438085650, -0.449137715126558530, -0.449182387692186710, -0.449227059134858940, -0.449271729454463480, +-0.449316398650889130, -0.449361066724023370, -0.449405733673754970, -0.449450399499972230, -0.449495064202563850, -0.449539727781417490, -0.449584390236421720, -0.449629051567465410, +-0.449673711774436100, -0.449718370857222490, -0.449763028815712950, -0.449807685649795840, -0.449852341359359920, -0.449896995944292720, -0.449941649404483060, -0.449986301739819680, +-0.450030952950190130, -0.450075603035483160, -0.450120251995587250, -0.450164899830391100, -0.450209546539782290, -0.450254192123649590, -0.450298836581881410, -0.450343479914366570, +-0.450388122120992610, -0.450432763201648380, -0.450477403156222200, -0.450522041984602940, -0.450566679686678130, -0.450611316262336690, -0.450655951711467330, -0.450700586033957680, +-0.450745219229696570, -0.450789851298572410, -0.450834482240473620, -0.450879112055289020, -0.450923740742906250, -0.450968368303214130, -0.451012994736101460, -0.451057620041455940, +-0.451102244219166340, -0.451146867269121180, -0.451191489191209220, -0.451236109985318160, -0.451280729651336750, -0.451325348189153600, -0.451369965598657440, -0.451414581879735990, +-0.451459197032278050, -0.451503811056172160, -0.451548423951307120, -0.451593035717570590, -0.451637646354851540, -0.451682255863038730, -0.451726864242019910, -0.451771471491683900, +-0.451816077611919220, -0.451860682602614750, -0.451905286463658130, -0.451949889194938340, -0.451994490796343850, -0.452039091267763480, -0.452083690609084990, -0.452128288820197290, +-0.452172885900988920, -0.452217481851348630, -0.452262076671164300, -0.452306670360324790, -0.452351262918718970, -0.452395854346234580, -0.452440444642760620, -0.452485033808185500, +-0.452529621842397810, -0.452574208745286420, -0.452618794516739200, -0.452663379156644900, -0.452707962664892600, -0.452752545041369970, -0.452797126285966020, -0.452841706398569240, +-0.452886285379068550, -0.452930863227351820, -0.452975439943307860, -0.453020015526825360, -0.453064589977793200, -0.453109163296099130, -0.453153735481632180, -0.453198306534280890, +-0.453242876453934240, -0.453287445240480040, -0.453332012893807150, -0.453376579413804660, -0.453421144800360330, -0.453465709053363140, -0.453510272172701680, -0.453554834158264530, +-0.453599395009940680, -0.453643954727617980, -0.453688513311185370, -0.453733070760531820, -0.453777627075545250, -0.453822182256114650, -0.453866736302128540, -0.453911289213476010, +-0.453955840990044880, -0.454000391631724120, -0.454044941138402380, -0.454089489509968690, -0.454134036746310870, -0.454178582847317940, -0.454223127812878600, -0.454267671642881840, +-0.454312214337215470, -0.454356755895768570, -0.454401296318430180, -0.454445835605088170, -0.454490373755631500, -0.454534910769949010, -0.454579446647929540, -0.454623981389461140, +-0.454668514994432730, -0.454713047462733060, -0.454757578794251160, -0.454802108988874910, -0.454846638046493390, -0.454891165966995250, -0.454935692750269630, -0.454980218396204390, +-0.455024742904688580, -0.455069266275611280, -0.455113788508860470, -0.455158309604325180, -0.455202829561894120, -0.455247348381455970, -0.455291866062899840, -0.455336382606113640, +-0.455380898010986520, -0.455425412277407520, -0.455469925405264600, -0.455514437394446860, -0.455558948244843050, -0.455603457956342270, -0.455647966528832440, -0.455692473962202690, +-0.455736980256341740, -0.455781485411138780, -0.455825989426481670, -0.455870492302259570, -0.455914994038361280, -0.455959494634675890, -0.456003994091091380, -0.456048492407496840, +-0.456092989583781530, -0.456137485619833300, -0.456181980515541370, -0.456226474270794490, -0.456270966885481410, -0.456315458359491330, -0.456359948692712240, -0.456404437885033210, +-0.456448925936343510, -0.456493412846531110, -0.456537898615485160, -0.456582383243094470, -0.456626866729248240, -0.456671349073834440, -0.456715830276742230, -0.456760310337860850, +-0.456804789257078350, -0.456849267034283860, -0.456893743669366190, -0.456938219162214110, -0.456982693512716920, -0.457027166720762660, -0.457071638786240410, -0.457116109709039490, +-0.457160579489047870, -0.457205048126154810, -0.457249515620249130, -0.457293981971220060, -0.457338447178955660, -0.457382911243345120, -0.457427374164277310, -0.457471835941641480, +-0.457516296575325660, -0.457560756065219070, -0.457605214411210600, -0.457649671613189480, -0.457694127671043840, -0.457738582584662820, -0.457783036353935750, -0.457827488978750700, +-0.457871940458996930, -0.457916390794563310, -0.457960839985338760, -0.458005288031212430, -0.458049734932072520, -0.458094180687808270, -0.458138625298308950, -0.458183068763462710, +-0.458227511083158730, -0.458271952257286060, -0.458316392285733840, -0.458360831168390270, -0.458405268905144600, -0.458449705495885820, -0.458494140940503110, -0.458538575238884640, +-0.458583008390919760, -0.458627440396497390, -0.458671871255506790, -0.458716300967836110, -0.458760729533374660, -0.458805156952011790, -0.458849583223635670, -0.458894008348135540, +-0.458938432325400440, -0.458982855155319220, -0.459027276837781270, -0.459071697372674730, -0.459116116759888950, -0.459160534999313310, -0.459204952090835890, -0.459249368034346070, +-0.459293782829732880, -0.459338196476885620, -0.459382608975692440, -0.459427020326042770, -0.459471430527825960, -0.459515839580930120, -0.459560247485244710, -0.459604654240658720, +-0.459649059847061060, -0.459693464304341160, -0.459737867612387160, -0.459782269771088550, -0.459826670780334620, -0.459871070640013650, -0.459915469350014980, -0.459959866910227670, +-0.460004263320541060, -0.460048658580843370, -0.460093052691024070, -0.460137445650972140, -0.460181837460576950, -0.460226228119726850, -0.460270617628311120, -0.460315005986218880, +-0.460359393193339460, -0.460403779249561220, -0.460448164154773520, -0.460492547908865790, -0.460536930511726340, -0.460581311963244480, -0.460625692263309410, -0.460670071411810100, +-0.460714449408635980, -0.460758826253675370, -0.460803201946817680, -0.460847576487952380, -0.460891949876967740, -0.460936322113753240, -0.460980693198197900, -0.461025063130191260, +-0.461069431909621570, -0.461113799536378320, -0.461158166010350530, -0.461202531331427690, -0.461246895499498210, -0.461291258514451410, -0.461335620376176540, -0.461379981084562960, +-0.461424340639499050, -0.461468699040874290, -0.461513056288578140, -0.461557412382499030, -0.461601767322526340, -0.461646121108549250, -0.461690473740457240, -0.461734825218138630, +-0.461779175541482960, -0.461823524710379410, -0.461867872724717410, -0.461912219584385330, -0.461956565289272700, -0.462000909839268610, -0.462045253234262710, -0.462089595474143240, +-0.462133936558799810, -0.462178276488121930, -0.462222615261997980, -0.462266952880317440, -0.462311289342969560, -0.462355624649843480, -0.462399958800828680, -0.462444291795813590, +-0.462488623634687790, -0.462532954317340820, -0.462577283843661090, -0.462621612213538150, -0.462665939426861180, -0.462710265483519730, -0.462754590383402220, -0.462798914126398230, +-0.462843236712397020, -0.462887558141288010, -0.462931878412959800, -0.462976197527301850, -0.463020515484203420, -0.463064832283554110, -0.463109147925242270, -0.463153462409157610, +-0.463197775735189670, -0.463242087903226910, -0.463286398913158930, -0.463330708764874980, -0.463375017458264200, -0.463419324993216310, -0.463463631369619710, -0.463507936587364000, +-0.463552240646338880, -0.463596543546432700, -0.463640845287535240, -0.463685145869535630, -0.463729445292323570, -0.463773743555787490, -0.463818040659817020, -0.463862336604301480, +-0.463906631389130520, -0.463950925014192550, -0.463995217479377280, -0.464039508784573950, -0.464083798929672280, -0.464128087914560670, -0.464172375739128900, -0.464216662403266530, +-0.464260947906862120, -0.464305232249805360, -0.464349515431985550, -0.464393797453292290, -0.464438078313614170, -0.464482358012840820, -0.464526636550861630, -0.464570913927566160, +-0.464615190142843080, -0.464659465196582020, -0.464703739088672300, -0.464748011819003600, -0.464792283387464480, -0.464836553793944670, -0.464880823038333830, -0.464925091120520610, +-0.464969358040394630, -0.465013623797845220, -0.465057888392761800, -0.465102151825034000, -0.465146414094550490, -0.465190675201200890, -0.465234935144875020, -0.465279193925461410, +-0.465323451542849820, -0.465367707996929610, -0.465411963287590490, -0.465456217414721100, -0.465500470378211180, -0.465544722177950070, -0.465588972813827550, -0.465633222285732230, +-0.465677470593553800, -0.465721717737181740, -0.465765963716505750, -0.465810208531414470, -0.465854452181797660, -0.465898694667545080, -0.465942935988545410, -0.465987176144688430, +-0.466031415135863440, -0.466075652961959960, -0.466119889622867770, -0.466164125118475380, -0.466208359448672730, -0.466252592613349560, -0.466296824612394520, -0.466341055445697430, +-0.466385285113147700, -0.466429513614635140, -0.466473740950048400, -0.466517967119277340, -0.466562192122211340, -0.466606415958740250, -0.466650638628752720, -0.466694860132138570, +-0.466739080468787320, -0.466783299638588720, -0.466827517641431490, -0.466871734477205480, -0.466915950145800560, -0.466960164647105320, -0.467004377981009690, -0.467048590147403130, +-0.467092801146175460, -0.467137010977215380, -0.467181219640412810, -0.467225427135657180, -0.467269633462838340, -0.467313838621845060, -0.467358042612567190, -0.467402245434894230, +-0.467446447088716020, -0.467490647573921280, -0.467534846890399920, -0.467579045038041870, -0.467623242016735830, -0.467667437826371660, -0.467711632466838890, -0.467755825938027000, +-0.467800018239826030, -0.467844209372124560, -0.467888399334812580, -0.467932588127779990, -0.467976775750915560, -0.468020962204109160, -0.468065147487250370, -0.468109331600229110, +-0.468153514542934080, -0.468197696315255320, -0.468241876917082300, -0.468286056348305000, -0.468330234608812120, -0.468374411698493700, -0.468418587617239260, -0.468462762364938720, +-0.468506935941480850, -0.468551108346755670, -0.468595279580653110, -0.468639449643061980, -0.468683618533872190, -0.468727786252973400, -0.468771952800255130, -0.468816118175607310, +-0.468860282378918860, -0.468904445410079700, -0.468948607268979800, -0.468992767955508040, -0.469036927469554330, -0.469081085811008270, -0.469125242979759940, -0.469169398975698090, +-0.469213553798712710, -0.469257707448693880, -0.469301859925530360, -0.469346011229112180, -0.469390161359329040, -0.469434310316070410, -0.469478458099226450, -0.469522604708685950, +-0.469566750144338960, -0.469610894406075450, -0.469655037493784290, -0.469699179407355560, -0.469743320146678910, -0.469787459711644320, -0.469831598102140700, -0.469875735318058100, +-0.469919871359286150, -0.469964006225714880, -0.470008139917233230, -0.470052272433731270, -0.470096403775098590, -0.470140533941225290, -0.470184662932000290, -0.470228790747313610, +-0.470272917387055340, -0.470317042851114360, -0.470361167139380810, -0.470405290251744320, -0.470449412188094660, -0.470493532948321800, -0.470537652532314780, -0.470581770939963560, +-0.470625888171158360, -0.470670004225787970, -0.470714119103742670, -0.470758232804912020, -0.470802345329186190, -0.470846456676454080, -0.470890566846605850, -0.470934675839531190, +-0.470978783655120250, -0.471022890293261940, -0.471066995753846420, -0.471111100036763430, -0.471155203141903070, -0.471199305069154250, -0.471243405818407230, -0.471287505389552110, +-0.471331603782477790, -0.471375700997074430, -0.471419797033231890, -0.471463891890839810, -0.471507985569788400, -0.471552078069966680, -0.471596169391264700, -0.471640259533572690, +-0.471684348496779700, -0.471728436280775820, -0.471772522885450800, -0.471816608310694940, -0.471860692556397120, -0.471904775622447540, -0.471948857508736500, -0.471992938215152870, +-0.472037017741586850, -0.472081096087928360, -0.472125173254067110, -0.472169249239893280, -0.472213324045295980, -0.472257397670165390, -0.472301470114391660, -0.472345541377863830, +-0.472389611460472200, -0.472433680362106530, -0.472477748082657080, -0.472521814622012810, -0.472565879980064050, -0.472609944156700550, -0.472654007151812610, -0.472698068965289260, +-0.472742129597020720, -0.472786189046896900, -0.472830247314807940, -0.472874304400642990, -0.472918360304292300, -0.472962415025646070, -0.473006468564593440, -0.473050520921024620, +-0.473094572094829520, -0.473138622085897960, -0.473182670894120250, -0.473226718519385470, -0.473270764961583930, -0.473314810220605840, -0.473358854296340340, -0.473402897188677670, +-0.473446938897507770, -0.473490979422720950, -0.473535018764206280, -0.473579056921854040, -0.473623093895554180, -0.473667129685196920, -0.473711164290671500, -0.473755197711868190, +-0.473799229948676850, -0.473843261000987840, -0.473887290868690250, -0.473931319551674450, -0.473975347049830800, -0.474019373363048340, -0.474063398491217420, -0.474107422434228040, +-0.474151445191970500, -0.474195466764333940, -0.474239487151208730, -0.474283506352484780, -0.474327524368052480, -0.474371541197800950, -0.474415556841620620, -0.474459571299401360, +-0.474503584571033530, -0.474547596656406390, -0.474591607555410240, -0.474635617267935520, -0.474679625793871300, -0.474723633133108060, -0.474767639285535670, -0.474811644251044220, +-0.474855648029524070, -0.474899650620864420, -0.474943652024955590, -0.474987652241688040, -0.475031651270950980, -0.475075649112634830, -0.475119645766629520, -0.475163641232825450, +-0.475207635511111950, -0.475251628601379320, -0.475295620503517650, -0.475339611217417300, -0.475383600742967540, -0.475427589080058780, -0.475471576228580990, -0.475515562188424720, +-0.475559546959479110, -0.475603530541634680, -0.475647512934781800, -0.475691494138809730, -0.475735474153608950, -0.475779452979069430, -0.475823430615081310, -0.475867407061535020, +-0.475911382318319810, -0.475955356385326160, -0.475999329262444480, -0.476043300949564100, -0.476087271446575480, -0.476131240753368660, -0.476175208869834170, -0.476219175795861260, +-0.476263141531340360, -0.476307106076161610, -0.476351069430215550, -0.476395031593391360, -0.476438992565579640, -0.476482952346670430, -0.476526910936554190, -0.476570868335120300, +-0.476614824542259290, -0.476658779557861570, -0.476702733381816510, -0.476746686014014600, -0.476790637454345970, -0.476834587702701150, -0.476878536758969520, -0.476922484623041490, +-0.476966431294807260, -0.477010376774157360, -0.477054321060981110, -0.477098264155169090, -0.477142206056611340, -0.477186146765198550, -0.477230086280819920, -0.477274024603366150, +-0.477317961732727670, -0.477361897668793890, -0.477405832411455400, -0.477449765960602290, -0.477493698316124760, -0.477537629477913450, -0.477581559445857620, -0.477625488219847850, +-0.477669415799774840, -0.477713342185527860, -0.477757267376997470, -0.477801191374074010, -0.477845114176647880, -0.477889035784608620, -0.477932956197846760, -0.477976875416252500, +-0.478020793439716480, -0.478064710268128020, -0.478108625901377820, -0.478152540339356060, -0.478196453581953340, -0.478240365629059080, -0.478284276480563930, -0.478328186136358470, +-0.478372094596332180, -0.478416001860375580, -0.478459907928379060, -0.478503812800232740, -0.478547716475827280, -0.478591618955052090, -0.478635520237797930, -0.478679420323955330, +-0.478723319213413770, -0.478767216906063940, -0.478811113401796050, -0.478855008700500740, -0.478898902802067540, -0.478942795706387090, -0.478986687413349650, -0.479030577922845920, +-0.479074467234765320, -0.479118355348998550, -0.479162242265435860, -0.479206127983968000, -0.479250012504484400, -0.479293895826875820, -0.479337777951032830, -0.479381658876845030, +-0.479425538604203120, -0.479469417132997340, -0.479513294463117970, -0.479557170594455790, -0.479601045526900300, -0.479644919260342200, -0.479688791794672160, -0.479732663129779800, +-0.479776533265555750, -0.479820402201890370, -0.479864269938674370, -0.479908136475797330, -0.479952001813149950, -0.479995865950622940, -0.480039728888105870, -0.480083590625489500, +-0.480127451162664090, -0.480171310499520110, -0.480215168635948260, -0.480259025571838080, -0.480302881307080320, -0.480346735841565730, -0.480390589175183960, -0.480434441307825700, +-0.480478292239381320, -0.480522141969741190, -0.480565990498796110, -0.480609837826435680, -0.480653683952551090, -0.480697528877031820, -0.480741372599768790, -0.480785215120652310, +-0.480829056439572740, -0.480872896556421010, -0.480916735471086600, -0.480960573183460360, -0.481004409693433050, -0.481048245000894330, -0.481092079105735040, -0.481135912007845500, +-0.481179743707116250, -0.481223574203437980, -0.481267403496700390, -0.481311231586794290, -0.481355058473610490, -0.481398884157038690, -0.481442708636969640, -0.481486531913293820, +-0.481530353985902100, -0.481574174854684070, -0.481617994519530630, -0.481661812980332560, -0.481705630236979600, -0.481749446289362560, -0.481793261137371920, -0.481837074780898100, +-0.481880887219831970, -0.481924698454063270, -0.481968508483482770, -0.482012317307981440, -0.482056124927448930, -0.482099931341776090, -0.482143736550853410, -0.482187540554571410, +-0.482231343352820920, -0.482275144945491730, -0.482318945332474600, -0.482362744513660570, -0.482406542488939270, -0.482450339258201580, -0.482494134821338070, -0.482537929178239620, +-0.482581722328795980, -0.482625514272898020, -0.482669305010436640, -0.482713094541301620, -0.482756882865383820, -0.482800669982573870, -0.482844455892762260, -0.482888240595839850, +-0.482932024091696440, -0.482975806380223030, -0.483019587461310460, -0.483063367334848560, -0.483107146000728180, -0.483150923458839980, -0.483194699709074470, -0.483238474751322590, +-0.483282248585474140, -0.483326021211420430, -0.483369792629051330, -0.483413562838257700, -0.483457331838930190, -0.483501099630959390, -0.483544866214236150, -0.483588631588650400, +-0.483632395754093060, -0.483676158710455160, -0.483719920457626410, -0.483763680995497880, -0.483807440323960170, -0.483851198442903860, -0.483894955352219940, -0.483938711051798200, +-0.483982465541529740, -0.484026218821305480, -0.484069970891015280, -0.484113721750550120, -0.484157471399800700, -0.484201219838657990, -0.484244967067011810, -0.484288713084753240, +-0.484332457891773320, -0.484376201487961790, -0.484419943873209800, -0.484463685047407940, -0.484507425010446860, -0.484551163762217630, -0.484594901302610070, -0.484638637631515270, +-0.484682372748824250, -0.484726106654426950, -0.484769839348214330, -0.484813570830077150, -0.484857301099906050, -0.484901030157592060, -0.484944758003025110, -0.484988484636096670, +-0.485032210056696610, -0.485075934264716010, -0.485119657260045630, -0.485163379042576060, -0.485207099612198430, -0.485250818968802730, -0.485294537112279930, -0.485338254042521180, +-0.485381969759416390, -0.485425684262856700, -0.485469397552732770, -0.485513109628935400, -0.485556820491355570, -0.485600530139883360, -0.485644238574409800, -0.485687945794826050, +-0.485731651801022070, -0.485775356592888900, -0.485819060170317400, -0.485862762533198600, -0.485906463681422480, -0.485950163614880250, -0.485993862333462980, -0.486037559837060650, +-0.486081256125564460, -0.486124951198865120, -0.486168645056853370, -0.486212337699420400, -0.486256029126456210, -0.486299719337851990, -0.486343408333498820, -0.486387096113286730, +-0.486430782677106930, -0.486474468024850120, -0.486518152156407200, -0.486561835071669280, -0.486605516770526330, -0.486649197252869650, -0.486692876518590330, -0.486736554567578470, +-0.486780231399725150, -0.486823907014921340, -0.486867581413058080, -0.486911254594025510, -0.486954926557714830, -0.486998597304017180, -0.487042266832822650, -0.487085935144022490, +-0.487129602237507450, -0.487173268113168410, -0.487216932770896620, -0.487260596210582100, -0.487304258432116060, -0.487347919435389800, -0.487391579220293360, -0.487435237786717930, +-0.487478895134554390, -0.487522551263693650, -0.487566206174026960, -0.487609859865444310, -0.487653512337837440, -0.487697163591096330, -0.487740813625112350, -0.487784462439776360, +-0.487828110034979220, -0.487871756410612150, -0.487915401566565320, -0.487959045502730000, -0.488002688218997450, -0.488046329715257740, -0.488089969991402250, -0.488133609047321840, +-0.488177246882907420, -0.488220883498050260, -0.488264518892640500, -0.488308153066569440, -0.488351786019728400, -0.488395417752007450, -0.488439048263297980, -0.488482677553490950, +-0.488526305622477560, -0.488569932470148020, -0.488613558096393670, -0.488657182501105790, -0.488700805684174570, -0.488744427645491360, -0.488788048384947050, -0.488831667902432650, +-0.488875286197839490, -0.488918903271057640, -0.488962519121978580, -0.489006133750493620, -0.489049747156492960, -0.489093359339867860, -0.489136970300509450, -0.489180580038308550, +-0.489224188553156640, -0.489267795844943840, -0.489311401913561540, -0.489355006758901090, -0.489398610380852810, -0.489442212779307990, -0.489485813954157580, -0.489529413905293090, +-0.489573012632604660, -0.489616610135983680, -0.489660206415321540, -0.489703801470508570, -0.489747395301436020, -0.489790987907995020, -0.489834579290076570, -0.489878169447572010, +-0.489921758380371660, -0.489965346088366950, -0.490008932571449230, -0.490052517829508820, -0.490096101862437070, -0.490139684670125090, -0.490183266252463890, -0.490226846609344900, +-0.490270425740658430, -0.490314003646296290, -0.490357580326148730, -0.490401155780107230, -0.490444730008062880, -0.490488303009906650, -0.490531874785530060, -0.490575445334823390, +-0.490619014657678100, -0.490662582753985720, -0.490706149623636460, -0.490749715266521780, -0.490793279682532890, -0.490836842871560760, -0.490880404833496930, -0.490923965568231650, +-0.490967525075656500, -0.491011083355662900, -0.491054640408141230, -0.491098196232982950, -0.491141750830079220, -0.491185304199321440, -0.491228856340600040, -0.491272407253806500, +-0.491315956938832290, -0.491359505395567830, -0.491403052623904660, -0.491446598623733800, -0.491490143394946450, -0.491533686937434100, -0.491577229251087210, -0.491620770335797210, +-0.491664310191455680, -0.491707848817952990, -0.491751386215180660, -0.491794922383029850, -0.491838457321391750, -0.491881991030157950, -0.491925523509218750, -0.491969054758465700, +-0.492012584777790420, -0.492056113567083340, -0.492099641126235940, -0.492143167455139420, -0.492186692553685410, -0.492230216421764230, -0.492273739059267520, -0.492317260466086930, +-0.492360780642112690, -0.492404299587236580, -0.492447817301349680, -0.492491333784343230, -0.492534849036108830, -0.492578363056536960, -0.492621875845519200, -0.492665387402947070, +-0.492708897728711130, -0.492752406822702940, -0.492795914684813710, -0.492839421314934690, -0.492882926712957530, -0.492926430878772640, -0.492969933812272110, -0.493013435513346310, +-0.493056935981886930, -0.493100435217785240, -0.493143933220932420, -0.493187429991220170, -0.493230925528538980, -0.493274419832780480, -0.493317912903836250, -0.493361404741596900, +-0.493404895345954050, -0.493448384716798970, -0.493491872854022910, -0.493535359757517500, -0.493578845427173400, -0.493622329862882130, -0.493665813064535440, -0.493709295032023820, +-0.493752775765238960, -0.493796255264072170, -0.493839733528415150, -0.493883210558158370, -0.493926686353193590, -0.493970160913412450, -0.494013634238705530, -0.494057106328964550, +-0.494100577184080790, -0.494144046803945640, -0.494187515188450670, -0.494230982337486580, -0.494274448250945020, -0.494317912928717740, -0.494361376370695270, -0.494404838576769370, +-0.494448299546831340, -0.494491759280772600, -0.494535217778484860, -0.494578675039858640, -0.494622131064785810, -0.494665585853157950, -0.494709039404865770, -0.494752491719801010, +-0.494795942797855050, -0.494839392638919570, -0.494882841242885230, -0.494926288609643770, -0.494969734739087010, -0.495013179631105530, -0.495056623285591080, -0.495100065702435090, +-0.495143506881528920, -0.495186946822764370, -0.495230385526032050, -0.495273822991223800, -0.495317259218231390, -0.495360694206945400, -0.495404127957257690, -0.495447560469059690, +-0.495490991742242760, -0.495534421776698760, -0.495577850572318290, -0.495621278128993590, -0.495664704446615310, -0.495708129525075260, -0.495751553364264910, -0.495794975964075680, +-0.495838397324399380, -0.495881817445126660, -0.495925236326149430, -0.495968653967359560, -0.496012070368647580, -0.496055485529905470, -0.496098899451024640, -0.496142312131896520, +-0.496185723572413080, -0.496229133772464910, -0.496272542731943880, -0.496315950450741890, -0.496359356928749660, -0.496402762165859050, -0.496446166161961520, -0.496489568916948950, +-0.496532970430712040, -0.496576370703142760, -0.496619769734132910, -0.496663167523573260, -0.496706564071355720, -0.496749959377371710, -0.496793353441512820, -0.496836746263670970, +-0.496880137843736860, -0.496923528181602350, -0.496966917277159470, -0.497010305130298870, -0.497053691740912520, -0.497097077108891950, -0.497140461234128690, -0.497183844116514670, +-0.497227225755940640, -0.497270606152298900, -0.497313985305480320, -0.497357363215376710, -0.497400739881879770, -0.497444115304880920, -0.497487489484272180, -0.497530862419944320, +-0.497574234111789360, -0.497617604559699170, -0.497660973763564550, -0.497704341723277540, -0.497747708438729620, -0.497791073909812480, -0.497834438136418030, -0.497877801118437100, +-0.497921162855761660, -0.497964523348283730, -0.498007882595894070, -0.498051240598484710, -0.498094597355947240, -0.498137952868173690, -0.498181307135054870, -0.498224660156482760, +-0.498268011932349380, -0.498311362462545590, -0.498354711746963440, -0.498398059785494450, -0.498441406578030380, -0.498484752124463140, -0.498528096424683600, -0.498571439478583840, +-0.498614781286055910, -0.498658121846990600, -0.498701461161280000, -0.498744799228815710, -0.498788136049489460, -0.498831471623193250, -0.498874805949817980, -0.498918139029255690, +-0.498961470861398420, -0.499004801446137130, -0.499048130783363800, -0.499091458872970130, -0.499134785714848260, -0.499178111308889010, -0.499221435654984450, -0.499264758753026730, +-0.499308080602906710, -0.499351401204516490, -0.499394720557747750, -0.499438038662492260, -0.499481355518642030, -0.499524671126088000, -0.499567985484722310, -0.499611298594437040, +-0.499654610455123160, -0.499697921066672710, -0.499741230428977500, -0.499784538541929220, -0.499827845405419970, -0.499871151019340710, -0.499914455383583920, -0.499957758498040640, +-0.500001060362602940, -0.500044360977162650, -0.500087660341611450, -0.500130958455841430, -0.500174255319743690, -0.500217550933210300, -0.500260845296133350, -0.500304138408403930, +-0.500347430269914240, -0.500390720880555920, -0.500434010240220830, -0.500477298348801060, -0.500520585206187580, -0.500563870812272830, -0.500607155166948650, -0.500650438270106250, +-0.500693720121637710, -0.500737000721434900, -0.500780280069389900, -0.500823558165393920, -0.500866835009339040, -0.500910110601117450, -0.500953384940620140, -0.500996658027739410, +-0.501039929862367010, -0.501083200444394810, -0.501126469773715000, -0.501169737850218570, -0.501213004673797920, -0.501256270244345050, -0.501299534561751140, -0.501342797625908390, +-0.501386059436708660, -0.501429319994043720, -0.501472579297805980, -0.501515837347886300, -0.501559094144177100, -0.501602349686570470, -0.501645603974957610, -0.501688857009230830, +-0.501732108789281760, -0.501775359315002940, -0.501818608586285240, -0.501861856603021070, -0.501905103365102630, -0.501948348872421010, -0.501991593124868630, -0.502034836122337120, +-0.502078077864718590, -0.502121318351905320, -0.502164557583788310, -0.502207795560259850, -0.502251032281212370, -0.502294267746536850, -0.502337501956125700, -0.502380734909870790, +-0.502423966607664090, -0.502467197049397800, -0.502510426234963110, -0.502553654164252790, -0.502596880837157920, -0.502640106253570920, -0.502683330413383640, -0.502726553316487970, +-0.502769774962776310, -0.502812995352139860, -0.502856214484470930, -0.502899432359661840, -0.502942648977603770, -0.502985864338189040, -0.503029078441309730, -0.503072291286857600, +-0.503115502874725280, -0.503158713204803760, -0.503201922276985460, -0.503245130091162670, -0.503288336647226720, -0.503331541945069900, -0.503374745984584320, -0.503417948765662150, +-0.503461150288194830, -0.503504350552074540, -0.503547549557193830, -0.503590747303443780, -0.503633943790716910, -0.503677139018905210, -0.503720332987900640, -0.503763525697595640, +-0.503806717147881390, -0.503849907338650320, -0.503893096269794950, -0.503936283941206490, -0.503979470352777240, -0.504022655504399290, -0.504065839395964720, -0.504109022027365960, +-0.504152203398494310, -0.504195383509242090, -0.504238562359501820, -0.504281739949164700, -0.504324916278123260, -0.504368091346269590, -0.504411265153495990, -0.504454437699693890, +-0.504497608984755710, -0.504540779008573860, -0.504583947771039760, -0.504627115272045730, -0.504670281511483850, -0.504713446489246320, -0.504756610205225550, -0.504799772659312860, +-0.504842933851400780, -0.504886093781381720, -0.504929252449147100, -0.504972409854589240, -0.505015565997600450, -0.505058720878072690, -0.505101874495898610, -0.505145026850969290, +-0.505188177943177940, -0.505231327772415750, -0.505274476338575140, -0.505317623641548420, -0.505360769681227560, -0.505403914457505210, -0.505447057970272670, -0.505490200219422590, +-0.505533341204847280, -0.505576480926438250, -0.505619619384088060, -0.505662756577688780, -0.505705892507132600, -0.505749027172312180, -0.505792160573118710, -0.505835292709444830, +-0.505878423581183070, -0.505921553188224960, -0.505964681530462920, -0.506007808607789160, -0.506050934420096300, -0.506094058967275770, -0.506137182249220000, -0.506180304265821720, +-0.506223425016972260, -0.506266544502564250, -0.506309662722489890, -0.506352779676641380, -0.506395895364911250, -0.506439009787191030, -0.506482122943373250, -0.506525234833350660, +-0.506568345457014460, -0.506611454814257510, -0.506654562904971790, -0.506697669729049840, -0.506740775286383950, -0.506783879576865770, -0.506826982600387940, -0.506870084356843000, +-0.506913184846122470, -0.506956284068118990, -0.506999382022724880, -0.507042478709832540, -0.507085574129333750, -0.507128668281120910, -0.507171761165086890, -0.507214852781122990, +-0.507257943129121980, -0.507301032208976150, -0.507344120020577720, -0.507387206563819420, -0.507430291838592670, -0.507473375844790240, -0.507516458582304650, -0.507559540051027660, +-0.507602620250851790, -0.507645699181669240, -0.507688776843372550, -0.507731853235854350, -0.507774928359006060, -0.507818002212720890, -0.507861074796890240, -0.507904146111407000, +-0.507947216156163340, -0.507990284931051580, -0.508033352435964590, -0.508076418670793780, -0.508119483635431910, -0.508162547329771840, -0.508205609753704880, -0.508248670907124000, +-0.508291730789921400, -0.508334789401989400, -0.508377846743220840, -0.508420902813507380, -0.508463957612741550, -0.508507011140816310, -0.508550063397623100, -0.508593114383054770, +-0.508636164097003520, -0.508679212539362440, -0.508722259710022830, -0.508765305608877560, -0.508808350235819380, -0.508851393590740050, -0.508894435673532210, -0.508937476484088270, +-0.508980516022300660, -0.509023554288062010, -0.509066591281264190, -0.509109627001799960, -0.509152661449561950, -0.509195694624441920, -0.509238726526332730, -0.509281757155126580, +-0.509324786510716220, -0.509367814592994070, -0.509410841401852110, -0.509453866937183530, -0.509496891198879750, -0.509539914186833750, -0.509582935900938060, -0.509625956341084980, +-0.509668975507167390, -0.509711993399076910, -0.509755010016706530, -0.509798025359949000, -0.509841039428696070, -0.509884052222840390, -0.509927063742274700, -0.509970073986891310, +-0.510013082956583210, -0.510056090651241910, -0.510099097070760400, -0.510142102215031530, -0.510185106083947070, -0.510228108677399870, -0.510271109995282250, -0.510314110037486950, +-0.510357108803906830, -0.510400106294433440, -0.510443102508960190, -0.510486097447378830, -0.510529091109582220, -0.510572083495462900, -0.510615074604913400, -0.510658064437826460, +-0.510701052994094070, -0.510744040273609090, -0.510787026276264380, -0.510830011001951690, -0.510872994450563890, -0.510915976621993730, -0.510958957516133520, -0.511001937132876450, +-0.511044915472114060, -0.511087892533739320, -0.511130868317645310, -0.511173842823723800, -0.511216816051867640, -0.511259788001969360, -0.511302758673922050, -0.511345728067617470, +-0.511388696182948580, -0.511431663019808360, -0.511474628578088450, -0.511517592857682170, -0.511560555858481810, -0.511603517580380030, -0.511646478023269900, -0.511689437187043180, +-0.511732395071592850, -0.511775351676811870, -0.511818307002592230, -0.511861261048826680, -0.511904213815408070, -0.511947165302228950, -0.511990115509182280, -0.512033064436159920, +-0.512076012083055310, -0.512118958449760300, -0.512161903536167860, -0.512204847342170640, -0.512247789867661290, -0.512290731112532870, -0.512333671076677270, -0.512376609759987560, +-0.512419547162356600, -0.512462483283676380, -0.512505418123839980, -0.512548351682740040, -0.512591283960269210, -0.512634214956320670, -0.512677144670786070, -0.512720073103558600, +-0.512763000254531360, -0.512805926123596320, -0.512848850710646340, -0.512891774015574290, -0.512934696038273240, -0.512977616778634960, -0.513020536236552750, -0.513063454411919470, +-0.513106371304627330, -0.513149286914569070, -0.513192201241637780, -0.513235114285725880, -0.513278026046726570, -0.513320936524531810, -0.513363845719034710, -0.513406753630128440, +-0.513449660257704890, -0.513492565601657120, -0.513535469661878020, -0.513578372438260210, -0.513621273930696790, -0.513664174139079830, -0.513707073063302540, -0.513749970703257790, +-0.513792867058837870, -0.513835762129935760, -0.513878655916444220, -0.513921548418256320, -0.513964439635264280, -0.514007329567361170, -0.514050218214440080, -0.514093105576392980, +-0.514135991653113190, -0.514178876444493450, -0.514221759950426520, -0.514264642170805590, -0.514307523105522520, -0.514350402754470860, -0.514393281117543450, -0.514436158194632400, +-0.514479033985631110, -0.514521908490432110, -0.514564781708928390, -0.514607653641013020, -0.514650524286578200, -0.514693393645517470, -0.514736261717722910, -0.514779128503087600, +-0.514821994001504520, -0.514864858212866430, -0.514907721137066620, -0.514950582773997080, -0.514993443123551110, -0.515036302185621910, -0.515079159960101560, -0.515122016446883380, +-0.515164871645860110, -0.515207725556924620, -0.515250578179970220, -0.515293429514888990, -0.515336279561574240, -0.515379128319919060, -0.515421975789815750, -0.515464821971157510, +-0.515507666863837200, -0.515550510467748140, -0.515593352782782400, -0.515636193808833300, -0.515679033545794030, -0.515721871993556790, -0.515764709152015000, -0.515807545021061300, +-0.515850379600588770, -0.515893212890490730, -0.515936044890659250, -0.515978875600987650, -0.516021705021369240, -0.516064533151696200, -0.516107359991861750, -0.516150185541758950, +-0.516193009801280690, -0.516235832770320370, -0.516278654448769970, -0.516321474836523020, -0.516364293933472720, -0.516407111739511260, -0.516449928254532060, -0.516492743478428110, +-0.516535557411092580, -0.516578370052417800, -0.516621181402297180, -0.516663991460623920, -0.516706800227290210, -0.516749607702189580, -0.516792413885215020, -0.516835218776259260, +-0.516878022375215960, -0.516920824681977200, -0.516963625696436390, -0.517006425418486850, -0.517049223848020880, -0.517092020984931900, -0.517134816829112780, -0.517177611380456700, +-0.517220404638856880, -0.517263196604205720, -0.517305987276396980, -0.517348776655322860, -0.517391564740876770, -0.517434351532951810, -0.517477137031440940, -0.517519921236237690, +-0.517562704147234150, -0.517605485764323860, -0.517648266087400330, -0.517691045116355660, -0.517733822851083380, -0.517776599291476570, -0.517819374437428310, -0.517862148288831920, +-0.517904920845579820, -0.517947692107565420, -0.517990462074682250, -0.518033230746822390, -0.518075998123879500, -0.518118764205746650, -0.518161528992317270, -0.518204292483483650, +-0.518247054679139340, -0.518289815579177750, -0.518332575183491300, -0.518375333491973290, -0.518418090504517040, -0.518460846221015510, -0.518503600641362250, -0.518546353765449660, +-0.518589105593171170, -0.518631856124420310, -0.518674605359089380, -0.518717353297071910, -0.518760099938261110, -0.518802845282550160, -0.518845589329832270, -0.518888332080000180, +-0.518931073532947210, -0.518973813688566990, -0.519016552546751720, -0.519059290107395150, -0.519102026370390380, -0.519144761335630920, -0.519187495003009200, -0.519230227372418640, +-0.519272958443752990, -0.519315688216904550, -0.519358416691766860, -0.519401143868233110, -0.519443869746196500, -0.519486594325550670, -0.519529317606187920, -0.519572039588001910, +-0.519614760270886160, -0.519657479654733080, -0.519700197739436320, -0.519742914524889080, -0.519785630010984660, -0.519828344197616370, -0.519871057084676960, -0.519913768672060290, +-0.519956478959658800, -0.519999187947365990, -0.520041895635075300, -0.520084602022679920, -0.520127307110073380, -0.520170010897148210, -0.520212713383797930, -0.520255414569916420, +-0.520298114455395870, -0.520340813040130020, -0.520383510324012200, -0.520426206306935480, -0.520468900988793730, -0.520511594369479360, -0.520554286448886020, -0.520596977226907230, +-0.520639666703435760, -0.520682354878365010, -0.520725041751588400, -0.520767727322999590, -0.520810411592491080, -0.520853094559956540, -0.520895776225289600, -0.520938456588382890, +-0.520981135649130070, -0.521023813407424320, -0.521066489863159070, -0.521109165016228060, -0.521151838866523610, -0.521194511413939690, -0.521237182658369820, -0.521279852599706550, +-0.521322521237843730, -0.521365188572674660, -0.521407854604092560, -0.521450519331991160, -0.521493182756263110, -0.521535844876802050, -0.521578505693501840, -0.521621165206255010, +-0.521663823414955210, -0.521706480319495850, -0.521749135919770680, -0.521791790215672350, -0.521834443207094490, -0.521877094893930860, -0.521919745276074100, -0.521962394353418070, +-0.522005042125855970, -0.522047688593281320, -0.522090333755587890, -0.522132977612668080, -0.522175620164415990, -0.522218261410725140, -0.522260901351488280, -0.522303539986599170, +-0.522346177315951230, -0.522388813339437760, -0.522431448056952740, -0.522474081468388700, -0.522516713573639820, -0.522559344372598770, -0.522601973865159270, -0.522644602051214990, +-0.522687228930659110, -0.522729854503385600, -0.522772478769287010, -0.522815101728257290, -0.522857723380190100, -0.522900343724978290, -0.522942962762515620, -0.522985580492695610, +-0.523028196915411580, -0.523070812030557390, -0.523113425838025780, -0.523156038337710740, -0.523198649529505900, -0.523241259413304020, -0.523283867988999060, -0.523326475256484350, +-0.523369081215653950, -0.523411685866400410, -0.523454289208617580, -0.523496891242199560, -0.523539491967038860, -0.523582091383029360, -0.523624689490064690, -0.523667286288038270, +-0.523709881776844080, -0.523752475956374750, -0.523795068826524270, -0.523837660387186490, -0.523880250638254160, -0.523922839579621160, -0.523965427211181110, -0.524008013532827550, +-0.524050598544454240, -0.524093182245954140, -0.524135764637221340, -0.524178345718148920, -0.524220925488630530, -0.524263503948559810, -0.524306081097830390, -0.524348656936336030, +-0.524391231463969820, -0.524433804680625390, -0.524476376586196950, -0.524518947180577120, -0.524561516463659890, -0.524604084435338900, -0.524646651095507680, -0.524689216444060300, +-0.524731780480889420, -0.524774343205889120, -0.524816904618953250, -0.524859464719974910, -0.524902023508847740, -0.524944580985465590, -0.524987137149722340, -0.525029692001510950, +-0.525072245540725290, -0.525114797767259330, -0.525157348681006050, -0.525199898281859420, -0.525242446569712970, -0.525284993544460450, -0.525327539205995840, -0.525370083554212000, +-0.525412626589002900, -0.525455168310262730, -0.525497708717884150, -0.525540247811761340, -0.525582785591787950, -0.525625322057857500, -0.525667857209864200, -0.525710391047700790, +-0.525752923571261470, -0.525795454780440210, -0.525837984675129990, -0.525880513255224780, -0.525923040520618220, -0.525965566471204520, -0.526008091106876410, -0.526050614427528210, +-0.526093136433053780, -0.526135657123346090, -0.526178176498299340, -0.526220694557807180, -0.526263211301763230, -0.526305726730061600, -0.526348240842595240, -0.526390753639258360, +-0.526433265119944930, -0.526475775284548030, -0.526518284132961640, -0.526560791665079520, -0.526603297880795520, -0.526645802780003500, -0.526688306362596670, -0.526730808628469440, +-0.526773309577514890, -0.526815809209627010, -0.526858307524699530, -0.526900804522626440, -0.526943300203301600, -0.526985794566618200, -0.527028287612470230, -0.527070779340751970, +-0.527113269751356420, -0.527155758844177650, -0.527198246619109410, -0.527240733076045690, -0.527283218214880440, -0.527325702035506770, -0.527368184537818860, -0.527410665721710910, +-0.527453145587075790, -0.527495624133807910, -0.527538101361801020, -0.527580577270949090, -0.527623051861145440, -0.527665525132284150, -0.527707997084259530, -0.527750467716964430, +-0.527792937030293170, -0.527835405024139500, -0.527877871698397390, -0.527920337052961040, -0.527962801087723310, -0.528005263802578730, -0.528047725197421270, -0.528090185272144240, +-0.528132644026641620, -0.528175101460807370, -0.528217557574535480, -0.528260012367720020, -0.528302465840254200, -0.528344917992032200, -0.528387368822948230, -0.528429818332895480, +-0.528472266521768150, -0.528514713389460210, -0.528557158935865860, -0.528599603160878280, -0.528642046064391580, -0.528684487646300270, -0.528726927906497220, -0.528769366844876960, +-0.528811804461333250, -0.528854240755760040, -0.528896675728051550, -0.528939109378101070, -0.528981541705802800, -0.529023972711051060, -0.529066402393738920, -0.529108830753760920, +-0.529151257791010690, -0.529193683505382430, -0.529236107896770340, -0.529278530965067500, -0.529320952710168770, -0.529363373131967350, -0.529405792230357440, -0.529448210005233010, +-0.529490626456488030, -0.529533041584016930, -0.529575455387712890, -0.529617867867470120, -0.529660279023183130, -0.529702688854745030, -0.529745097362050220, -0.529787504544992680, +-0.529829910403466280, -0.529872314937365640, -0.529914718146583750, -0.529957120031015030, -0.529999520590553890, -0.530041919825093630, -0.530084317734528580, -0.530126714318752690, +-0.530169109577660390, -0.530211503511144990, -0.530253896119100790, -0.530296287401422210, -0.530338677358002550, -0.530381065988736240, -0.530423453293517260, -0.530465839272239560, +-0.530508223924797680, -0.530550607251084940, -0.530592989250995630, -0.530635369924424170, -0.530677749271263990, -0.530720127291409380, -0.530762503984754440, -0.530804879351193360, +-0.530847253390620330, -0.530889626102928890, -0.530931997488013340, -0.530974367545768100, -0.531016736276086590, -0.531059103678863330, -0.531101469753992310, -0.531143834501367930, +-0.531186197920883510, -0.531228560012433680, -0.531270920775912870, -0.531313280211214380, -0.531355638318232630, -0.531397995096861810, -0.531440350546996010, -0.531482704668529650, +-0.531525057461356250, -0.531567408925370130, -0.531609759060465930, -0.531652107866536830, -0.531694455343477590, -0.531736801491182190, -0.531779146309544810, -0.531821489798459890, +-0.531863831957820830, -0.531906172787522610, -0.531948512287458650, -0.531990850457523260, -0.532033187297610840, -0.532075522807615500, -0.532117856987431640, -0.532160189836952790, +-0.532202521356073490, -0.532244851544688260, -0.532287180402690520, -0.532329507929974800, -0.532371834126435290, -0.532414158991966200, -0.532456482526462160, -0.532498804729816480, +-0.532541125601923790, -0.532583445142678750, -0.532625763351974650, -0.532668080229706130, -0.532710395775767400, -0.532752709990053090, -0.532795022872456610, -0.532837334422872620, +-0.532879644641195640, -0.532921953527319080, -0.532964261081137810, -0.533006567302545810, -0.533048872191437370, -0.533091175747707150, -0.533133477971248550, -0.533175778861956330, +-0.533218078419725020, -0.533260376644448140, -0.533302673536020230, -0.533344969094335710, -0.533387263319288870, -0.533429556210774150, -0.533471847768685170, -0.533514137992916580, +-0.533556426883363020, -0.533598714439917910, -0.533641000662476110, -0.533683285550931920, -0.533725569105179760, -0.533767851325113290, -0.533810132210627230, -0.533852411761616240, +-0.533894689977973740, -0.533936966859594580, -0.533979242406373070, -0.534021516618203410, -0.534063789494980350, -0.534106061036597410, -0.534148331242949250, -0.534190600113930710, +-0.534232867649435340, -0.534275133849357760, -0.534317398713592300, -0.534359662242033460, -0.534401924434575680, -0.534444185291112820, -0.534486444811539840, -0.534528702995750390, +-0.534570959843639230, -0.534613215355100650, -0.534655469530028960, -0.534697722368319030, -0.534739973869864380, -0.534782224034559770, -0.534824472862300060, -0.534866720352978780, +-0.534908966506490670, -0.534951211322730160, -0.534993454801591550, -0.535035696942969820, -0.535077937746758380, -0.535120177212852100, -0.535162415341145730, -0.535204652131533010, +-0.535246887583908590, -0.535289121698167000, -0.535331354474202990, -0.535373585911910200, -0.535415816011183380, -0.535458044771917500, -0.535500272194006090, -0.535542498277344010, +-0.535584723021825690, -0.535626946427345540, -0.535669168493798420, -0.535711389221077970, -0.535753608609079060, -0.535795826657696540, -0.535838043366824060, -0.535880258736356470, +-0.535922472766188210, -0.535964685456213790, -0.536006896806327960, -0.536049106816424590, -0.536091315486398880, -0.536133522816144460, -0.536175728805556200, -0.536217933454528620, +-0.536260136762956250, -0.536302338730733850, -0.536344539357755280, -0.536386738643915280, -0.536428936589108950, -0.536471133193229810, -0.536513328456172830, -0.536555522377832550, +-0.536597714958103490, -0.536639906196880510, -0.536682096094057370, -0.536724284649529040, -0.536766471863190260, -0.536808657734935020, -0.536850842264658180, -0.536893025452254150, +-0.536935207297617900, -0.536977387800643300, -0.537019566961225210, -0.537061744779258610, -0.537103921254637350, -0.537146096387256190, -0.537188270177009760, -0.537230442623792710, +-0.537272613727499900, -0.537314783488025190, -0.537356951905263560, -0.537399118979109970, -0.537441284709458070, -0.537483449096203050, -0.537525612139239330, -0.537567773838461660, +-0.537609934193764900, -0.537652093205042920, -0.537694250872190690, -0.537736407195103290, -0.537778562173674480, -0.537820715807799220, -0.537862868097372160, -0.537905019042288270, +-0.537947168642441520, -0.537989316897726890, -0.538031463808039230, -0.538073609373272640, -0.538115753593321980, -0.538157896468081990, -0.538200037997447200, -0.538242178181312700, +-0.538284317019572360, -0.538326454512121240, -0.538368590658854340, -0.538410725459665620, -0.538452858914450160, -0.538494991023102390, -0.538537121785517270, -0.538579251201589670, +-0.538621379271213560, -0.538663505994284470, -0.538705631370696160, -0.538747755400343700, -0.538789878083121950, -0.538831999418925460, -0.538874119407649400, -0.538916238049187650, +-0.538958355343435280, -0.539000471290287390, -0.539042585889638050, -0.539084699141382130, -0.539126811045414490, -0.539168921601629770, -0.539211030809923280, -0.539253138670188650, +-0.539295245182321300, -0.539337350346216220, -0.539379454161767250, -0.539421556628869810, -0.539463657747418330, -0.539505757517308230, -0.539547855938433240, -0.539589953010688680, +-0.539632048733969640, -0.539674143108169970, -0.539716236133185090, -0.539758327808909530, -0.539800418135238160, -0.539842507112066160, -0.539884594739287520, -0.539926681016797310, +-0.539968765944490840, -0.540010849522262080, -0.540052931750006240, -0.540095012627617940, -0.540137092154992170, -0.540179170332024120, -0.540221247158607750, -0.540263322634638170, +-0.540305396760010770, -0.540347469534619430, -0.540389540958359450, -0.540431611031125580, -0.540473679752813020, -0.540515747123315960, -0.540557813142529490, -0.540599877810348910, +-0.540641941126668300, -0.540684003091382760, -0.540726063704387250, -0.540768122965576530, -0.540810180874845890, -0.540852237432089430, -0.540894292637202460, -0.540936346490080040, +-0.540978398990616390, -0.541020450138706700, -0.541062499934245930, -0.541104548377128960, -0.541146595467250970, -0.541188641204506050, -0.541230685588789950, -0.541272728619996870, +-0.541314770298021770, -0.541356810622759870, -0.541398849594105890, -0.541440887211955160, -0.541482923476201970, -0.541524958386741310, -0.541566991943468690, -0.541609024146278210, +-0.541651054995065160, -0.541693084489724420, -0.541735112630151060, -0.541777139416240280, -0.541819164847886280, -0.541861188924984360, -0.541903211647429830, -0.541945233015116880, +-0.541987253027940820, -0.542029271685796730, -0.542071288988579700, -0.542113304936184150, -0.542155319528505380, -0.542197332765438690, -0.542239344646878170, -0.542281355172719360, +-0.542323364342857220, -0.542365372157186610, -0.542407378615602950, -0.542449383718000440, -0.542491387464274500, -0.542533389854320540, -0.542575390888032640, -0.542617390565306220, +-0.542659388886036490, -0.542701385850118180, -0.542743381457446720, -0.542785375707916520, -0.542827368601422890, -0.542869360137861130, -0.542911350317125670, -0.542953339139111810, +-0.542995326603714630, -0.543037312710829450, -0.543079297460350660, -0.543121280852173590, -0.543163262886193770, -0.543205243562305370, -0.543247222880403830, -0.543289200840384230, +-0.543331177442141660, -0.543373152685571510, -0.543415126570568120, -0.543457099097026890, -0.543499070264843340, -0.543541040073911690, -0.543583008524127440, -0.543624975615385700, +-0.543666941347581530, -0.543708905720610370, -0.543750868734366510, -0.543792830388745930, -0.543834790683642820, -0.543876749618952830, -0.543918707194570920, -0.543960663410392180, +-0.544002618266312240, -0.544044571762225320, -0.544086523898027030, -0.544128474673612810, -0.544170424088877060, -0.544212372143715100, -0.544254318838022330, -0.544296264171693740, +-0.544338208144624860, -0.544380150756710090, -0.544422092007844970, -0.544464031897924920, -0.544505970426844450, -0.544547907594499110, -0.544589843400783980, -0.544631777845594580, +-0.544673710928825330, -0.544715642650371870, -0.544757573010129610, -0.544799502007993100, -0.544841429643857840, -0.544883355917618940, -0.544925280829171800, -0.544967204378411730, +-0.545009126565233260, -0.545051047389531920, -0.545092966851203450, -0.545134884950142170, -0.545176801686243610, -0.545218717059403170, -0.545260631069515830, -0.545302543716477240, +-0.545344455000182030, -0.545386364920525610, -0.545428273477403750, -0.545470180670710740, -0.545512086500342330, -0.545553990966193610, -0.545595894068160450, -0.545637795806137030, +-0.545679696180019210, -0.545721595189702420, -0.545763492835081410, -0.545805389116051590, -0.545847284032508260, -0.545889177584346850, -0.545931069771462770, -0.545972960593750670, +-0.546014850051106170, -0.546056738143424920, -0.546098624870601350, -0.546140510232531300, -0.546182394229110080, -0.546224276860232780, -0.546266158125795150, -0.546308038025691720, +-0.546349916559818570, -0.546391793728070340, -0.546433669530342560, -0.546475543966530640, -0.546517417036529900, -0.546559288740235850, -0.546601159077543360, -0.546643028048347860, +-0.546684895652545190, -0.546726761890030000, -0.546768626760697820, -0.546810490264444060, -0.546852352401164140, -0.546894213170753600, -0.546936072573107280, -0.546977930608120720, +-0.547019787275689670, -0.547061642575708880, -0.547103496508073880, -0.547145349072680200, -0.547187200269423470, -0.547229050098198440, -0.547270898558900760, -0.547312745651426180, +-0.547354591375669330, -0.547396435731526080, -0.547438278718891720, -0.547480120337661690, -0.547521960587731620, -0.547563799468996360, -0.547605636981351560, -0.547647473124693080, +-0.547689307898915570, -0.547731141303914760, -0.547772973339586080, -0.547814804005825050, -0.547856633302527320, -0.547898461229587630, -0.547940287786902180, -0.547982112974365610, +-0.548023936791873780, -0.548065759239321990, -0.548107580316606000, -0.548149400023621340, -0.548191218360262740, -0.548233035326426200, -0.548274850922007340, -0.548316665146901140, +-0.548358478001003120, -0.548400289484208940, -0.548442099596414100, -0.548483908337514370, -0.548525715707404490, -0.548567521705980220, -0.548609326333137640, -0.548651129588771380, +-0.548692931472777200, -0.548734731985050740, -0.548776531125487850, -0.548818328893983300, -0.548860125290432820, -0.548901920314732390, -0.548943713966776880, -0.548985506246462030, +-0.549027297153683480, -0.549069086688336650, -0.549110874850317400, -0.549152661639520700, -0.549194447055842310, -0.549236231099178180, -0.549278013769423090, -0.549319795066472990, +-0.549361574990223310, -0.549403353540569790, -0.549445130717408190, -0.549486906520633480, -0.549528680950141400, -0.549570454005828050, -0.549612225687588160, -0.549653995995317720, +-0.549695764928912370, -0.549737532488267950, -0.549779298673279240, -0.549821063483842300, -0.549862826919853110, -0.549904588981206530, -0.549946349667798430, -0.549988108979524440, +-0.550029866916280200, -0.550071623477961680, -0.550113378664463640, -0.550155132475682260, -0.550196884911513310, -0.550238635971851850, -0.550280385656593870, -0.550322133965634790, +-0.550363880898870450, -0.550405626456196730, -0.550447370637508700, -0.550489113442702460, -0.550530854871673190, -0.550572594924316650, -0.550614333600528690, -0.550656070900204960, +-0.550697806823241320, -0.550739541369532850, -0.550781274538975520, -0.550823006331465410, -0.550864736746897400, -0.550906465785167440, -0.550948193446171410, -0.550989919729804930, +-0.551031644635963990, -0.551073368164543550, -0.551115090315439700, -0.551156811088548420, -0.551198530483764880, -0.551240248500984850, -0.551281965140104410, -0.551323680401019310, +-0.551365394283624630, -0.551407106787816460, -0.551448817913490870, -0.551490527660542960, -0.551532236028868580, -0.551573943018363710, -0.551615648628924090, -0.551657352860445590, +-0.551699055712823290, -0.551740757185953390, -0.551782457279732070, -0.551824155994054100, -0.551865853328815880, -0.551907549283912950, -0.551949243859241050, -0.551990937054696600, +-0.552032628870174350, -0.552074319305570490, -0.552116008360781230, -0.552157696035701530, -0.552199382330227690, -0.552241067244255370, -0.552282750777680740, -0.552324432930398790, +-0.552366113702305820, -0.552407793093298020, -0.552449471103270250, -0.552491147732118830, -0.552532822979739490, -0.552574496846028220, -0.552616169330880980, -0.552657840434192970, +-0.552699510155860390, -0.552741178495779420, -0.552782845453845040, -0.552824511029953560, -0.552866175224000940, -0.552907838035882730, -0.552949499465495320, -0.552991159512733810, +-0.553032818177494830, -0.553074475459673360, -0.553116131359165820, -0.553157785875867840, -0.553199439009675390, -0.553241090760484780, -0.553282741128190980, -0.553324390112690410, +-0.553366037713879160, -0.553407683931652520, -0.553449328765906690, -0.553490972216537420, -0.553532614283440800, -0.553574254966513020, -0.553615894265649280, -0.553657532180745650, +-0.553699168711698660, -0.553740803858403410, -0.553782437620756070, -0.553824069998652750, -0.553865700991989510, -0.553907330600661660, -0.553948958824565520, -0.553990585663597380, +-0.554032211117652440, -0.554073835186626900, -0.554115457870416720, -0.554157079168917990, -0.554198699082026900, -0.554240317609638660, -0.554281934751649660, -0.554323550507956230, +-0.554365164878453440, -0.554406777863037830, -0.554448389461605240, -0.554489999674051770, -0.554531608500273610, -0.554573215940165950, -0.554614821993625440, -0.554656426660548150, +-0.554698029940829400, -0.554739631834365590, -0.554781232341052700, -0.554822831460787150, -0.554864429193464130, -0.554906025538979940, -0.554947620497231120, -0.554989214068112970, +-0.555030806251521680, -0.555072397047353340, -0.555113986455504140, -0.555155574475870270, -0.555197161108347050, -0.555238746352830990, -0.555280330209218410, -0.555321912677404720, +-0.555363493757286110, -0.555405073448758890, -0.555446651751718920, -0.555488228666062730, -0.555529804191685520, -0.555571378328484240, -0.555612951076354110, -0.555654522435191640, +-0.555696092404892820, -0.555737660985353820, -0.555779228176470960, -0.555820793978139660, -0.555862358390256440, -0.555903921412717720, -0.555945483045418800, -0.555987043288256100, +-0.556028602141125820, -0.556070159603924140, -0.556111715676547270, -0.556153270358890840, -0.556194823650851270, -0.556236375552324970, -0.556277926063207360, -0.556319475183394860, +-0.556361022912783780, -0.556402569251270410, -0.556444114198750390, -0.556485657755119930, -0.556527199920275770, -0.556568740694113330, -0.556610280076528910, -0.556651818067418810, +-0.556693354666679130, -0.556734889874206500, -0.556776423689896330, -0.556817956113645040, -0.556859487145349160, -0.556901016784904330, -0.556942545032206860, -0.556984071887153040, +-0.557025597349639080, -0.557067121419561380, -0.557108644096815600, -0.557150165381298250, -0.557191685272905860, -0.557233203771533850, -0.557274720877078740, -0.557316236589436960, +-0.557357750908504920, -0.557399263834178040, -0.557440775366353170, -0.557482285504926620, -0.557523794249794040, -0.557565301600851940, -0.557606807557996520, -0.557648312121124200, +-0.557689815290131400, -0.557731317064913750, -0.557772817445367770, -0.557814316431390120, -0.557855814022876320, -0.557897310219722890, -0.557938805021826360, -0.557980298429082700, +-0.558021790441388670, -0.558063281058639780, -0.558104770280733130, -0.558146258107564130, -0.558187744539029530, -0.558229229575025520, -0.558270713215448520, -0.558312195460194950, +-0.558353676309160660, -0.558395155762242080, -0.558436633819336060, -0.558478110480338130, -0.558519585745144820, -0.558561059613652540, -0.558602532085757720, -0.558644003161356870, +-0.558685472840345640, -0.558726941122620670, -0.558768408008078810, -0.558809873496615590, -0.558851337588127550, -0.558892800282511320, -0.558934261579663310, -0.558975721479479380, +-0.559017179981856070, -0.559058637086690240, -0.559100092793877510, -0.559141547103314430, -0.559183000014897510, -0.559224451528523180, -0.559265901644087960, -0.559307350361487710, +-0.559348797680619070, -0.559390243601378680, -0.559431688123662510, -0.559473131247366970, -0.559514572972388710, -0.559556013298623920, -0.559597452225969460, -0.559638889754321080, +-0.559680325883575860, -0.559721760613629440, -0.559763193944378570, -0.559804625875719660, -0.559846056407549360, -0.559887485539764200, -0.559928913272259910, -0.559970339604933360, +-0.560011764537681310, -0.560053188070399610, -0.560094610202984790, -0.560136030935333480, -0.560177450267342110, -0.560218868198907540, -0.560260284729925400, -0.560301699860292550, +-0.560343113589905740, -0.560384525918660840, -0.560425936846454590, -0.560467346373183520, -0.560508754498744160, -0.560550161223033140, -0.560591566545946440, -0.560632970467381140, +-0.560674372987233110, -0.560715774105399190, -0.560757173821775700, -0.560798572136259390, -0.560839969048746890, -0.560881364559134180, -0.560922758667318110, -0.560964151373195440, +-0.561005542676662030, -0.561046932577614840, -0.561088321075950190, -0.561129708171564820, -0.561171093864355600, -0.561212478154218150, -0.561253861041049570, -0.561295242524746720, +-0.561336622605205340, -0.561378001282322400, -0.561419378555994550, -0.561460754426118540, -0.561502128892590320, -0.561543501955306780, -0.561584873614164870, -0.561626243869060350, +-0.561667612719890190, -0.561708980166551130, -0.561750346208939490, -0.561791710846952450, -0.561833074080485660, -0.561874435909436310, -0.561915796333701150, -0.561957155353176140, +-0.561998512967758270, -0.562039869177344050, -0.562081223981830250, -0.562122577381113710, -0.562163929375090410, -0.562205279963657540, -0.562246629146711200, -0.562287976924148340, +-0.562329323295865380, -0.562370668261759190, -0.562412011821726730, -0.562453353975663870, -0.562494694723467580, -0.562536034065034940, -0.562577372000261810, -0.562618708529045390, +-0.562660043651282080, -0.562701377366868650, -0.562742709675702170, -0.562784040577678500, -0.562825370072694840, -0.562866698160648050, -0.562908024841434210, -0.562949350114950180, +-0.562990673981092930, -0.563031996439759210, -0.563073317490845220, -0.563114637134247920, -0.563155955369864400, -0.563197272197590640, -0.563238587617323700, -0.563279901628960240, +-0.563321214232397120, -0.563362525427531290, -0.563403835214258740, -0.563445143592476660, -0.563486450562082020, -0.563527756122970900, -0.563569060275040390, -0.563610363018187230, +-0.563651664352308290, -0.563692964277300420, -0.563734262793059830, -0.563775559899483470, -0.563816855596468660, -0.563858149883911360, -0.563899442761708670, -0.563940734229757430, +-0.563982024287954630, -0.564023312936196450, -0.564064600174379980, -0.564105886002402410, -0.564147170420159720, -0.564188453427549090, -0.564229735024467380, -0.564271015210811240, +-0.564312293986477980, -0.564353571351363660, -0.564394847305365380, -0.564436121848380320, -0.564477394980304580, -0.564518666701035450, -0.564559937010469580, -0.564601205908503930, +-0.564642473395035480, -0.564683739469960640, -0.564725004133176720, -0.564766267384580020, -0.564807529224067520, -0.564848789651536290, -0.564890048666883080, -0.564931306270005100, +-0.564972562460798520, -0.565013817239160550, -0.565055070604988270, -0.565096322558178100, -0.565137573098627000, -0.565178822226232060, -0.565220069940890020, -0.565261316242498200, +-0.565302561130952670, -0.565343804606150860, -0.565385046667989830, -0.565426287316365790, -0.565467526551176050, -0.565508764372317450, -0.565550000779687310, -0.565591235773181930, +-0.565632469352698290, -0.565673701518134010, -0.565714932269384960, -0.565756161606348670, -0.565797389528922000, -0.565838616037001810, -0.565879841130485390, -0.565921064809269070, +-0.565962287073250030, -0.566003507922325680, -0.566044727356392220, -0.566085945375346960, -0.566127161979086750, -0.566168377167508670, -0.566209590940510040, -0.566250803297987050, +-0.566292014239837100, -0.566333223765957410, -0.566374431876244370, -0.566415638570595180, -0.566456843848906930, -0.566498047711076920, -0.566539250157001350, -0.566580451186577740, +-0.566621650799703390, -0.566662848996274500, -0.566704045776188490, -0.566745241139342440, -0.566786435085633200, -0.566827627614958200, -0.566868818727213840, -0.566910008422297440, +-0.566951196700106410, -0.566992383560536940, -0.567033569003486560, -0.567074753028852240, -0.567115935636531070, -0.567157116826420450, -0.567198296598416580, -0.567239474952417440, +-0.567280651888319110, -0.567321827406019220, -0.567363001505414850, -0.567404174186402880, -0.567445345448880810, -0.567486515292745080, -0.567527683717893080, -0.567568850724222250, +-0.567610016311628770, -0.567651180480010400, -0.567692343229264100, -0.567733504559286840, -0.567774664469976150, -0.567815822961228570, -0.567856980032941380, -0.567898135685012130, +-0.567939289917337110, -0.567980442729813850, -0.568021594122339550, -0.568062744094811610, -0.568103892647126460, -0.568145039779181520, -0.568186185490874410, -0.568227329782101440, +-0.568268472652760150, -0.568309614102747720, -0.568350754131961230, -0.568391892740298220, -0.568433029927655100, -0.568474165693929390, -0.568515300039018620, -0.568556432962819320, +-0.568597564465228800, -0.568638694546144460, -0.568679823205463400, -0.568720950443083130, -0.568762076258900070, -0.568803200652811870, -0.568844323624716040, -0.568885445174509010, +-0.568926565302088410, -0.568967684007351430, -0.569008801290195490, -0.569049917150517230, -0.569091031588214170, -0.569132144603183950, -0.569173256195323000, -0.569214366364528820, +-0.569255475110698740, -0.569296582433730050, -0.569337688333520160, -0.569378792809965840, -0.569419895862964380, -0.569460997492413630, -0.569502097698210030, -0.569543196480251200, +-0.569584293838434340, -0.569625389772656750, -0.569666484282816080, -0.569707577368808730, -0.569748669030532890, -0.569789759267885000, -0.569830848080762680, -0.569871935469063340, +-0.569913021432684070, -0.569954105971522630, -0.569995189085475530, -0.570036270774440520, -0.570077351038315140, -0.570118429876996120, -0.570159507290380900, -0.570200583278366980, +-0.570241657840851570, -0.570282730977732410, -0.570323802688906030, -0.570364872974270190, -0.570405941833722510, -0.570447009267159630, -0.570488075274479200, -0.570529139855578520, +-0.570570203010355440, -0.570611264738706490, -0.570652325040529320, -0.570693383915721770, -0.570734441364180390, -0.570775497385802800, -0.570816551980486530, -0.570857605148128890, +-0.570898656888627620, -0.570939707201879370, -0.570980756087781760, -0.571021803546232780, -0.571062849577128830, -0.571103894180367670, -0.571144937355846930, -0.571185979103463690, +-0.571227019423115930, -0.571268058314700290, -0.571309095778114510, -0.571350131813256330, -0.571391166420022520, -0.571432199598310710, -0.571473231348018420, -0.571514261669043400, +-0.571555290561282400, -0.571596318024633180, -0.571637344058993580, -0.571678368664260140, -0.571719391840330830, -0.571760413587103060, -0.571801433904474240, -0.571842452792342140, +-0.571883470250603600, -0.571924486279156370, -0.571965500877898330, -0.572006514046726200, -0.572047525785537640, -0.572088536094230380, -0.572129544972701740, -0.572170552420849690, +-0.572211558438570740, -0.572252563025763330, -0.572293566182324190, -0.572334567908151070, -0.572375568203141620, -0.572416567067193240, -0.572457564500203690, -0.572498560502069930, +-0.572539555072689830, -0.572580548211961140, -0.572621539919780710, -0.572662530196046520, -0.572703519040655860, -0.572744506453506500, -0.572785492434496170, -0.572826476983521850, +-0.572867460100481280, -0.572908441785272340, -0.572949422037792090, -0.572990400857938180, -0.573031378245608350, -0.573072354200700350, -0.573113328723111160, -0.573154301812738630, +-0.573195273469480630, -0.573236243693234230, -0.573277212483897070, -0.573318179841367010, -0.573359145765541480, -0.573400110256318430, -0.573441073313594730, -0.573482034937268240, +-0.573522995127237150, -0.573563953883398200, -0.573604911205649380, -0.573645867093888210, -0.573686821548012430, -0.573727774567920010, -0.573768726153507710, -0.573809676304673940, +-0.573850625021315670, -0.573891572303330880, -0.573932518150617080, -0.573973462563072020, -0.574014405540593690, -0.574055347083078930, -0.574096287190425820, -0.574137225862532350, +-0.574178163099295480, -0.574219098900613180, -0.574260033266383090, -0.574300966196502950, -0.574341897690870740, -0.574382827749383540, -0.574423756371939100, -0.574464683558435720, +-0.574505609308770260, -0.574546533622840800, -0.574587456500544990, -0.574628377941780900, -0.574669297946445500, -0.574710216514436880, -0.574751133645653110, -0.574792049339991060, +-0.574832963597348920, -0.574873876417624330, -0.574914787800715140, -0.574955697746519220, -0.574996606254933870, -0.575037513325856840, -0.575078418959186430, -0.575119323154819620, +-0.575160225912654590, -0.575201127232588870, -0.575242027114520440, -0.575282925558347260, -0.575323822563966300, -0.575364718131275880, -0.575405612260174060, -0.575446504950557820, +-0.575487396202325250, -0.575528286015374310, -0.575569174389602980, -0.575610061324908330, -0.575650946821188450, -0.575691830878341640, -0.575732713496264870, -0.575773594674856340, +-0.575814474414013900, -0.575855352713635190, -0.575896229573618410, -0.575937104993860750, -0.575977978974260400, -0.576018851514715320, -0.576059722615122840, -0.576100592275381020, +-0.576141460495387720, -0.576182327275040820, -0.576223192614238490, -0.576264056512877710, -0.576304918970857230, -0.576345779988074010, -0.576386639564426370, -0.576427497699812160, +-0.576468354394129250, -0.576509209647275700, -0.576550063459148830, -0.576590915829646830, -0.576631766758667790, -0.576672616246109100, -0.576713464291868870, -0.576754310895844840, +-0.576795156057935190, -0.576835999778037900, -0.576876842056050280, -0.576917682891870620, -0.576958522285397010, -0.576999360236526870, -0.577040196745158160, -0.577081031811189080, +-0.577121865434517820, -0.577162697615041460, -0.577203528352658310, -0.577244357647266780, -0.577285185498763950, -0.577326011907048130, -0.577366836872017400, -0.577407660393569500, +-0.577448482471602740, -0.577489303106014540, -0.577530122296702970, -0.577570940043566570, -0.577611756346502410, -0.577652571205408800, -0.577693384620183830, -0.577734196590725340, +-0.577775007116931750, -0.577815816198700370, -0.577856623835929280, -0.577897430028517120, -0.577938234776360970, -0.577979038079359240, -0.578019839937410020, -0.578060640350411380, +-0.578101439318260860, -0.578142236840856860, -0.578183032918097470, -0.578223827549880220, -0.578264620736103300, -0.578305412476664890, -0.578346202771462980, -0.578386991620395860, +-0.578427779023360960, -0.578468564980256560, -0.578509349490981210, -0.578550132555432080, -0.578590914173507500, -0.578631694345105750, -0.578672473070124820, -0.578713250348462990, +-0.578754026180017590, -0.578794800564687570, -0.578835573502370250, -0.578876344992963920, -0.578917115036366780, -0.578957883632476800, -0.578998650781192500, -0.579039416482411200, +-0.579080180736031290, -0.579120943541951430, -0.579161704900068800, -0.579202464810281810, -0.579243223272488780, -0.579283980286587670, -0.579324735852476900, -0.579365489970053990, +-0.579406242639217360, -0.579446993859865420, -0.579487743631895700, -0.579528491955206610, -0.579569238829696240, -0.579609984255263220, -0.579650728231804860, -0.579691470759219670, +-0.579732211837406200, -0.579772951466261730, -0.579813689645684920, -0.579854426375573940, -0.579895161655826890, -0.579935895486342280, -0.579976627867017540, -0.580017358797751290, +-0.580058088278441960, -0.580098816308987080, -0.580139542889285040, -0.580180268019234280, -0.580220991698732760, -0.580261713927679220, -0.580302434705970980, -0.580343154033506670, +-0.580383871910184810, -0.580424588335902940, -0.580465303310559570, -0.580506016834053010, -0.580546728906281670, -0.580587439527143200, -0.580628148696536120, -0.580668856414359060, +-0.580709562680509440, -0.580750267494885900, -0.580790970857386730, -0.580831672767910150, -0.580872373226354770, -0.580913072232618120, -0.580953769786598630, -0.580994465888195260, +-0.581035160537305310, -0.581075853733827420, -0.581116545477659900, -0.581157235768701040, -0.581197924606849380, -0.581238611992002660, -0.581279297924059750, -0.581319982402918160, +-0.581360665428476640, -0.581401347000633510, -0.581442027119286940, -0.581482705784335700, -0.581523382995677300, -0.581564058753210490, -0.581604733056833910, -0.581645405906445090, +-0.581686077301942770, -0.581726747243225260, -0.581767415730190860, -0.581808082762738320, -0.581848748340765280, -0.581889412464170250, -0.581930075132852110, -0.581970736346708370, +-0.582011396105637790, -0.582052054409538780, -0.582092711258309970, -0.582133366651849000, -0.582174020590054630, -0.582214673072825590, -0.582255324100059420, -0.582295973671655090, +-0.582336621787510780, -0.582377268447524800, -0.582417913651596120, -0.582458557399622270, -0.582499199691501990, -0.582539840527134150, -0.582580479906416260, -0.582621117829247190, +-0.582661754295525360, -0.582702389305149170, -0.582743022858017270, -0.582783654954027510, -0.582824285593078640, -0.582864914775069410, -0.582905542499897460, -0.582946168767461750, +-0.582986793577660590, -0.583027416930392840, -0.583068038825556020, -0.583108659263049330, -0.583149278242771190, -0.583189895764619550, -0.583230511828493170, -0.583271126434290580, +-0.583311739581910070, -0.583352351271250620, -0.583392961502209870, -0.583433570274686790, -0.583474177588580110, -0.583514783443787710, -0.583555387840208220, -0.583595990777740380, +-0.583636592256282500, -0.583677192275733450, -0.583717790835991070, -0.583758387936954670, -0.583798983578521890, -0.583839577760591590, -0.583880170483062400, -0.583920761745832850, +-0.583961351548801690, -0.584001939891866770, -0.584042526774927070, -0.584083112197881340, -0.584123696160627540, -0.584164278663064420, -0.584204859705090620, -0.584245439286604660, +-0.584286017407505520, -0.584326594067690940, -0.584367169267059890, -0.584407743005511350, -0.584448315282942940, -0.584488886099253870, -0.584529455454342540, -0.584570023348107930, +-0.584610589780447890, -0.584651154751261390, -0.584691718260447300, -0.584732280307903700, -0.584772840893529210, -0.584813400017222820, -0.584853957678882820, -0.584894513878408300, +-0.584935068615697110, -0.584975621890648220, -0.585016173703160720, -0.585056724053132360, -0.585097272940462210, -0.585137820365048910, -0.585178366326791100, -0.585218910825587630, +-0.585259453861336600, -0.585299995433937290, -0.585340535543287580, -0.585381074189286530, -0.585421611371832800, -0.585462147090825110, -0.585502681346162350, -0.585543214137742570, +-0.585583745465464660, -0.585624275329227780, -0.585664803728929930, -0.585705330664470060, -0.585745856135746810, -0.585786380142658940, -0.585826902685105510, -0.585867423762984400, +-0.585907943376194780, -0.585948461524635640, -0.585988978208204950, -0.586029493426801880, -0.586070007180325090, -0.586110519468673540, -0.586151030291745420, -0.586191539649439710, +-0.586232047541655590, -0.586272553968290810, -0.586313058929244790, -0.586353562424416050, -0.586394064453703460, -0.586434565017005970, -0.586475064114221790, -0.586515561745249990, +-0.586556057909989550, -0.586596552608338650, -0.586637045840196380, -0.586677537605461490, -0.586718027904032710, -0.586758516735809250, -0.586799004100689190, -0.586839489998571610, +-0.586879974429355580, -0.586920457392939300, -0.586960938889221960, -0.587001418918102200, -0.587041897479479210, -0.587082374573251190, -0.587122850199317200, -0.587163324357576450, +-0.587203797047927020, -0.587244268270268100, -0.587284738024498430, -0.587325206310516990, -0.587365673128222960, -0.587406138477514330, -0.587446602358290380, -0.587487064770450210, +-0.587527525713892110, -0.587567985188515160, -0.587608443194218230, -0.587648899730900180, -0.587689354798460300, -0.587729808396796560, -0.587770260525808720, -0.587810711185394960, +-0.587851160375454260, -0.587891608095885810, -0.587932054346588240, -0.587972499127460970, -0.588012942438402080, -0.588053384279310750, -0.588093824650086420, -0.588134263550627150, +-0.588174700980832130, -0.588215136940600460, -0.588255571429830870, -0.588296004448422780, -0.588336435996274280, -0.588376866073284650, -0.588417294679353330, -0.588457721814378390, +-0.588498147478259010, -0.588538571670894410, -0.588578994392183750, -0.588619415642025130, -0.588659835420318080, -0.588700253726961660, -0.588740670561854420, -0.588781085924895420, +-0.588821499815983640, -0.588861912235018160, -0.588902323181898280, -0.588942732656522190, -0.588983140658789320, -0.589023547188598950, -0.589063952245849400, -0.589104355830439850, +-0.589144757942269500, -0.589185158581237210, -0.589225557747242500, -0.589265955440183340, -0.589306351659959480, -0.589346746406470000, -0.589387139679613310, -0.589427531479288720, +-0.589467921805395420, -0.589508310657832600, -0.589548698036498560, -0.589589083941292950, -0.589629468372114830, -0.589669851328862850, -0.589710232811436090, -0.589750612819733840, +-0.589790991353654980, -0.589831368413099020, -0.589871743997964380, -0.589912118108150250, -0.589952490743556270, -0.589992861904080620, -0.590033231589622950, -0.590073599800082120, +-0.590113966535357300, -0.590154331795347930, -0.590194695579952300, -0.590235057889070380, -0.590275418722600360, -0.590315778080441890, -0.590356135962493920, -0.590396492368655660, +-0.590436847298826510, -0.590477200752904880, -0.590517552730790210, -0.590557903232382110, -0.590598252257578780, -0.590638599806279860, -0.590678945878384540, -0.590719290473791680, +-0.590759633592401130, -0.590799975234110990, -0.590840315398820980, -0.590880654086430530, -0.590920991296838060, -0.590961327029943200, -0.591001661285644910, -0.591041994063842950, +-0.591082325364435500, -0.591122655187322320, -0.591162983532402930, -0.591203310399575630, -0.591243635788740060, -0.591283959699795410, -0.591324282132640880, -0.591364603087175980, +-0.591404922563299240, -0.591445240560910190, -0.591485557079908350, -0.591525872120192250, -0.591566185681661530, -0.591606497764215370, -0.591646808367752850, -0.591687117492173840, +-0.591727425137376530, -0.591767731303260660, -0.591808035989725870, -0.591848339196670680, -0.591888640923994620, -0.591928941171596890, -0.591969239939377220, -0.592009537227234040, +-0.592049833035067090, -0.592090127362775890, -0.592130420210258970, -0.592170711577416080, -0.592211001464146290, -0.592251289870349140, -0.592291576795924040, -0.592331862240769610, +-0.592372146204785620, -0.592412428687871580, -0.592452709689926140, -0.592492989210848810, -0.592533267250539120, -0.592573543808896260, -0.592613818885819880, -0.592654092481208480, +-0.592694364594962390, -0.592734635226979890, -0.592774904377160960, -0.592815172045404570, -0.592855438231610350, -0.592895702935677950, -0.592935966157505880, -0.592976227896993890, +-0.593016488154041730, -0.593056746928547930, -0.593097004220412230, -0.593137260029534150, -0.593177514355812780, -0.593217767199148090, -0.593258018559438600, -0.593298268436584060, +-0.593338516830484220, -0.593378763741037710, -0.593419009168144270, -0.593459253111703330, -0.593499495571614630, -0.593539736547776810, -0.593579976040089610, -0.593620214048452890, +-0.593660450572765290, -0.593700685612926550, -0.593740919168836090, -0.593781151240393210, -0.593821381827498000, -0.593861610930048860, -0.593901838547945760, -0.593942064681088340, +-0.593982289329375470, -0.594022512492706880, -0.594062734170981990, -0.594102954364100320, -0.594143173071961520, -0.594183390294464430, -0.594223606031508920, -0.594263820282994850, +-0.594304033048820730, -0.594344244328886550, -0.594384454123091820, -0.594424662431336180, -0.594464869253518600, -0.594505074589538940, -0.594545278439296830, -0.594585480802691250, +-0.594625681679621930, -0.594665881069988410, -0.594706078973690100, -0.594746275390627080, -0.594786470320697980, -0.594826663763802670, -0.594866855719841100, -0.594907046188712040, +-0.594947235170315340, -0.594987422664550510, -0.595027608671317210, -0.595067793190515170, -0.595107976222043260, -0.595148157765801880, -0.595188337821689670, -0.595228516389606610, +-0.595268693469452330, -0.595308869061126230, -0.595349043164528410, -0.595389215779557610, -0.595429386906113690, -0.595469556544096720, -0.595509724693405460, -0.595549891353939990, +-0.595590056525599710, -0.595630220208284270, -0.595670382401893630, -0.595710543106326760, -0.595750702321483530, -0.595790860047263780, -0.595831016283566610, -0.595871171030291860, +-0.595911324287339280, -0.595951476054608630, -0.595991626331998980, -0.596031775119410300, -0.596071922416742560, -0.596112068223894510, -0.596152212540766450, -0.596192355367257790, +-0.596232496703268280, -0.596272636548697780, -0.596312774903445360, -0.596352911767411120, -0.596393047140494900, -0.596433181022595680, -0.596473313413613540, -0.596513444313448100, +-0.596553573721999020, -0.596593701639166360, -0.596633828064849100, -0.596673952998947650, -0.596714076441360990, -0.596754198391989070, -0.596794318850731640, -0.596834437817488460, +-0.596874555292159600, -0.596914671274643930, -0.596954785764841620, -0.596994898762652660, -0.597035010267976120, -0.597075120280711970, -0.597115228800760180, -0.597155335828020160, +-0.597195441362392220, -0.597235545403775330, -0.597275647952069550, -0.597315749007175100, -0.597355848568990820, -0.597395946637417020, -0.597436043212353220, -0.597476138293699720, +-0.597516231881355610, -0.597556323975220850, -0.597596414575195630, -0.597636503681178930, -0.597676591293071050, -0.597716677410771720, -0.597756762034180710, -0.597796845163198090, +-0.597836926797723050, -0.597877006937655660, -0.597917085582896140, -0.597957162733343540, -0.597997238388898070, -0.598037312549459470, -0.598077385214927480, -0.598117456385202530, +-0.598157526060183580, -0.598197594239770700, -0.598237660923864320, -0.598277726112363410, -0.598317789805168140, -0.598357852002178390, -0.598397912703294340, -0.598437971908415190, +-0.598478029617441120, -0.598518085830272330, -0.598558140546808000, -0.598598193766948230, -0.598638245490593080, -0.598678295717642310, -0.598718344447996100, -0.598758391681553650, +-0.598798437418215260, -0.598838481657881120, -0.598878524400450420, -0.598918565645823460, -0.598958605393900000, -0.598998643644580110, -0.599038680397763980, -0.599078715653350690, +-0.599118749411240990, -0.599158781671334180, -0.599198812433530350, -0.599238841697729450, -0.599278869463831470, -0.599318895731736580, -0.599358920501344210, -0.599398943772554540, +-0.599438965545267880, -0.599478985819383410, -0.599519004594801450, -0.599559021871421960, -0.599599037649145020, -0.599639051927870700, -0.599679064707498540, -0.599719075987928620, +-0.599759085769061450, -0.599799094050796120, -0.599839100833033050, -0.599879106115672300, -0.599919109898614080, -0.599959112181757790, -0.599999112965003740, -0.600039112248252240, +-0.600079110031402570, -0.600119106314355170, -0.600159101097009870, -0.600199094379267000, -0.600239086161026610, -0.600279076442188250, -0.600319065222652100, -0.600359052502318800, +-0.600399038281087320, -0.600439022558858390, -0.600479005335531890, -0.600518986611007780, -0.600558966385186690, -0.600598944657967700, -0.600638921429251460, -0.600678896698938150, +-0.600718870466927290, -0.600758842733119300, -0.600798813497414150, -0.600838782759712360, -0.600878750519913350, -0.600918716777917310, -0.600958681533624860, -0.600998644786935430, +-0.601038606537749320, -0.601078566785966720, -0.601118525531487700, -0.601158482774212690, -0.601198438514041200, -0.601238392750873540, -0.601278345484610230, -0.601318296715150800, +-0.601358246442395550, -0.601398194666244670, -0.601438141386598350, -0.601478086603357000, -0.601518030316420150, -0.601557972525688540, -0.601597913231061600, -0.601637852432439950, +-0.601677790129723560, -0.601717726322812840, -0.601757661011607990, -0.601797594196008760, -0.601837525875915550, -0.601877456051228780, -0.601917384721848080, -0.601957311887673980, +-0.601997237548606570, -0.602037161704546020, -0.602077084355392870, -0.602117005501046740, -0.602156925141408060, -0.602196843276377460, -0.602236759905854350, -0.602276675029739360, +-0.602316588647932690, -0.602356500760334980, -0.602396411366845520, -0.602436320467365170, -0.602476228061794240, -0.602516134150032470, -0.602556038731980380, -0.602595941807538060, +-0.602635843376606030, -0.602675743439084700, -0.602715641994873600, -0.602755539043873470, -0.602795434585984840, -0.602835328621107220, -0.602875221149141380, -0.602915112169987390, +-0.602955001683545650, -0.602994889689716820, -0.603034776188400290, -0.603074661179496930, -0.603114544662907260, -0.603154426638530810, -0.603194307106268310, -0.603234186066020080, +-0.603274063517686640, -0.603313939461167850, -0.603353813896364110, -0.603393686823176180, -0.603433558241503690, -0.603473428151247380, -0.603513296552307340, -0.603553163444584210, +-0.603593028827978490, -0.603632892702389840, -0.603672755067718890, -0.603712615923866490, -0.603752475270732170, -0.603792333108216670, -0.603832189436220300, -0.603872044254643470, +-0.603911897563386920, -0.603951749362350300, -0.603991599651434560, -0.604031448430539570, -0.604071295699565860, -0.604111141458414050, -0.604150985706984220, -0.604190828445177350, +-0.604230669672893070, -0.604270509390032130, -0.604310347596495270, -0.604350184292182120, -0.604390019476993560, -0.604429853150829980, -0.604469685313591800, -0.604509515965179660, +-0.604549345105493410, -0.604589172734433800, -0.604628998851901580, -0.604668823457796600, -0.604708646552019500, -0.604748468134470700, -0.604788288205051260, -0.604828106763660610, +-0.604867923810199710, -0.604907739344569430, -0.604947553366669390, -0.604987365876400450, -0.605027176873663140, -0.605066986358357870, -0.605106794330385500, -0.605146600789645770, +-0.605186405736039550, -0.605226209169467680, -0.605266011089829910, -0.605305811497027110, -0.605345610390959800, -0.605385407771528490, -0.605425203638634060, -0.605464997992176120, +-0.605504790832055770, -0.605544582158173860, -0.605584371970430020, -0.605624160268725340, -0.605663947052960230, -0.605703732323035540, -0.605743516078851240, -0.605783298320308080, +-0.605823079047307140, -0.605862858259748060, -0.605902635957531910, -0.605942412140559110, -0.605982186808730280, -0.606021959961946300, -0.606061731600107120, -0.606101501723113610, +-0.606141270330866730, -0.606181037423266340, -0.606220803000213300, -0.606260567061608250, -0.606300329607351810, -0.606340090637344840, -0.606379850151487320, -0.606419608149680540, +-0.606459364631824370, -0.606499119597819880, -0.606538873047567480, -0.606578624980967930, -0.606618375397922180, -0.606658124298330100, -0.606697871682092770, -0.606737617549111040, +-0.606777361899284990, -0.606817104732515490, -0.606856846048703270, -0.606896585847748970, -0.606936324129553450, -0.606976060894016790, -0.607015796141040060, -0.607055529870524140, +-0.607095262082368970, -0.607134992776475760, -0.607174721952745020, -0.607214449611077840, -0.607254175751374190, -0.607293900373535030, -0.607333623477461560, -0.607373345063053630, +-0.607413065130212430, -0.607452783678838480, -0.607492500708832540, -0.607532216220095790, -0.607571930212528090, -0.607611642686030520, -0.607651353640504270, -0.607691063075849300, +-0.607730770991966600, -0.607770477388757000, -0.607810182266121270, -0.607849885623960360, -0.607889587462174360, -0.607929287780664800, -0.607968986579331740, -0.608008683858076050, +-0.608048379616798810, -0.608088073855400530, -0.608127766573782420, -0.608167457771844560, -0.608207147449488120, -0.608246835606614080, -0.608286522243122520, -0.608326207358914850, +-0.608365890953891490, -0.608405573027953510, -0.608445253581001880, -0.608484932612936790, -0.608524610123659440, -0.608564286113070900, -0.608603960581071140, -0.608643633527561680, +-0.608683304952442940, -0.608722974855616110, -0.608762643236982150, -0.608802310096441150, -0.608841975433894840, -0.608881639249243210, -0.608921301542387440, -0.608960962313228380, +-0.609000621561667010, -0.609040279287604400, -0.609079935490940750, -0.609119590171577240, -0.609159243329415070, -0.609198894964354530, -0.609238545076296710, -0.609278193665142460, +-0.609317840730792870, -0.609357486273148900, -0.609397130292110960, -0.609436772787580130, -0.609476413759457710, -0.609516053207643900, -0.609555691132040000, -0.609595327532546860, +-0.609634962409065780, -0.609674595761496960, -0.609714227589741590, -0.609753857893700960, -0.609793486673275490, -0.609833113928366140, -0.609872739658874120, -0.609912363864700160, +-0.609951986545745670, -0.609991607701910970, -0.610031227333097110, -0.610070845439205640, -0.610110462020136630, -0.610150077075791500, -0.610189690606071090, -0.610229302610876600, +-0.610268913090109110, -0.610308522043669030, -0.610348129471458000, -0.610387735373376210, -0.610427339749325170, -0.610466942599205750, -0.610506543922918920, -0.610546143720366200, +-0.610585741991447660, -0.610625338736064840, -0.610664933954119030, -0.610704527645510530, -0.610744119810140650, -0.610783710447910470, -0.610823299558721060, -0.610862887142473720, +-0.610902473199068870, -0.610942057728407820, -0.610981640730391960, -0.611021222204921610, -0.611060802151898290, -0.611100380571222850, -0.611139957462796920, -0.611179532826520710, +-0.611219106662295620, -0.611258678970023170, -0.611298249749603670, -0.611337819000938530, -0.611377386723928830, -0.611416952918475640, -0.611456517584480500, -0.611496080721843690, +-0.611535642330466640, -0.611575202410250870, -0.611614760961096680, -0.611654317982905700, -0.611693873475578800, -0.611733427439017370, -0.611772979873122620, -0.611812530777795070, +-0.611852080152936240, -0.611891627998447430, -0.611931174314229390, -0.611970719100183300, -0.612010262356210370, -0.612049804082212210, -0.612089344278089250, -0.612128882943742790, +-0.612168420079074570, -0.612207955683984890, -0.612247489758375400, -0.612287022302147150, -0.612326553315201250, -0.612366082797439430, -0.612405610748762100, -0.612445137169070560, +-0.612484662058266680, -0.612524185416250750, -0.612563707242924300, -0.612603227538188740, -0.612642746301944930, -0.612682263534094720, -0.612721779234538410, -0.612761293403178090, +-0.612800806039914160, -0.612840317144648260, -0.612879826717281470, -0.612919334757715210, -0.612958841265850870, -0.612998346241589110, -0.613037849684831550, -0.613077351595479600, +-0.613116851973434020, -0.613156350818596210, -0.613195848130867580, -0.613235343910149330, -0.613274838156343090, -0.613314330869349390, -0.613353822049069960, -0.613393311695406230, +-0.613432799808258820, -0.613472286387529490, -0.613511771433119410, -0.613551254944930240, -0.613590736922862590, -0.613630217366818110, -0.613669696276698430, -0.613709173652404180, +-0.613748649493837010, -0.613788123800898200, -0.613827596573489060, -0.613867067811511240, -0.613906537514865460, -0.613946005683453370, -0.613985472317176480, -0.614024937415935670, +-0.614064400979632550, -0.614103863008168330, -0.614143323501444520, -0.614182782459362750, -0.614222239881823670, -0.614261695768728910, -0.614301150119980320, -0.614340602935478540, +-0.614380054215125200, -0.614419503958821830, -0.614458952166469950, -0.614498398837970310, -0.614537843973224750, -0.614577287572134920, -0.614616729634601460, -0.614656170160526210, +-0.614695609149810580, -0.614735046602355890, -0.614774482518063990, -0.614813916896835400, -0.614853349738572090, -0.614892781043175800, -0.614932210810547160, -0.614971639040588050, +-0.615011065733199750, -0.615050490888283900, -0.615089914505742020, -0.615129336585475080, -0.615168757127385170, -0.615208176131373020, -0.615247593597340490, -0.615287009525188890, +-0.615326423914819730, -0.615365836766134990, -0.615405248079035180, -0.615444657853422280, -0.615484066089198150, -0.615523472786263400, -0.615562877944520030, -0.615602281563869540, +-0.615641683644213230, -0.615681084185453090, -0.615720483187489950, -0.615759880650225470, -0.615799276573561820, -0.615838670957399530, -0.615878063801640560, -0.615917455106186450, +-0.615956844870938940, -0.615996233095799100, -0.616035619780668680, -0.616075004925449530, -0.616114388530042520, -0.616153770594349500, -0.616193151118272110, -0.616232530101711750, +-0.616271907544570510, -0.616311283446749130, -0.616350657808149570, -0.616390030628673700, -0.616429401908222370, -0.616468771646697560, -0.616508139844000770, -0.616547506500033650, +-0.616586871614698160, -0.616626235187895170, -0.616665597219526520, -0.616704957709494180, -0.616744316657699240, -0.616783674064043440, -0.616823029928428410, -0.616862384250756230, +-0.616901737030927650, -0.616941088268844750, -0.616980437964409600, -0.617019786117522840, -0.617059132728086770, -0.617098477796002800, -0.617137821321172560, -0.617177163303498140, +-0.617216503742880510, -0.617255842639221620, -0.617295179992423560, -0.617334515802387070, -0.617373850069014350, -0.617413182792206920, -0.617452513971866620, -0.617491843607895330, +-0.617531171700194110, -0.617570498248665390, -0.617609823253210010, -0.617649146713730060, -0.617688468630127270, -0.617727789002303300, -0.617767107830160090, -0.617806425113598960, +-0.617845740852521640, -0.617885055046830330, -0.617924367696426110, -0.617963678801210840, -0.618002988361086470, -0.618042296375954650, -0.618081602845717340, -0.618120907770275730, +-0.618160211149531900, -0.618199512983387820, -0.618238813271744570, -0.618278112014504440, -0.618317409211568860, -0.618356704862840220, -0.618395998968219400, -0.618435291527608680, +-0.618474582540910030, -0.618513872008024550, -0.618553159928854400, -0.618592446303301350, -0.618631731131267130, -0.618671014412654040, -0.618710296147362950, -0.618749576335296260, +-0.618788854976355830, -0.618828132070443070, -0.618867407617459840, -0.618906681617308110, -0.618945954069889730, -0.618985224975106770, -0.619024494332860440, -0.619063762143052920, +-0.619103028405586290, -0.619142293120361730, -0.619181556287281440, -0.619220817906247280, -0.619260077977161430, -0.619299336499924970, -0.619338593474440200, -0.619377848900609320, +-0.619417102778333510, -0.619456355107514840, -0.619495605888055300, -0.619534855119856840, -0.619574102802821550, -0.619613348936850610, -0.619652593521846320, -0.619691836557710870, +-0.619731078044345570, -0.619770317981652500, -0.619809556369533610, -0.619848793207890880, -0.619888028496626500, -0.619927262235641650, -0.619966494424839090, -0.620005725064119880, +-0.620044954153386450, -0.620084181692540540, -0.620123407681484220, -0.620162632120119680, -0.620201855008348240, -0.620241076346072170, -0.620280296133193800, -0.620319514369614300, +-0.620358731055235980, -0.620397946189960800, -0.620437159773690850, -0.620476371806328310, -0.620515582287774480, -0.620554791217931780, -0.620593998596702390, -0.620633204423987620, +-0.620672408699689870, -0.620711611423711120, -0.620750812595953660, -0.620790012216318800, -0.620829210284708940, -0.620868406801026400, -0.620907601765172570, -0.620946795177049650, +-0.620985987036559720, -0.621025177343604850, -0.621064366098087460, -0.621103553299908740, -0.621142738948971100, -0.621181923045176940, -0.621221105588427690, -0.621260286578625640, +-0.621299466015672990, -0.621338643899471580, -0.621377820229923940, -0.621416995006931370, -0.621456168230396620, -0.621495339900221210, -0.621534510016307330, -0.621573678578557280, +-0.621612845586873020, -0.621652011041156860, -0.621691174941310430, -0.621730337287236150, -0.621769498078836300, -0.621808657316012310, -0.621847814998666700, -0.621886971126701550, +-0.621926125700019040, -0.621965278718521470, -0.622004430182110380, -0.622043580090688280, -0.622082728444157460, -0.622121875242419580, -0.622161020485377030, -0.622200164172931780, +-0.622239306304986580, -0.622278446881442740, -0.622317585902202760, -0.622356723367169300, -0.622395859276243520, -0.622434993629328190, -0.622474126426325270, -0.622513257667137170, +-0.622552387351666180, -0.622591515479813840, -0.622630642051482770, -0.622669767066575510, -0.622708890524993340, -0.622748012426639130, -0.622787132771414730, -0.622826251559222550, +-0.622865368789965120, -0.622904484463543850, -0.622943598579861370, -0.622982711138820310, -0.623021822140322090, -0.623060931584269340, -0.623100039470564250, -0.623139145799109340, +-0.623178250569806360, -0.623217353782557600, -0.623256455437265930, -0.623295555533832760, -0.623334654072160600, -0.623373751052151870, -0.623412846473708760, -0.623451940336733900, +-0.623491032641128820, -0.623530123386796140, -0.623569212573638510, -0.623608300201557550, -0.623647386270455790, -0.623686470780235540, -0.623725553730799190, -0.623764635122049270, +-0.623803714953887420, -0.623842793226216610, -0.623881869938938460, -0.623920945091955610, -0.623960018685170480, -0.623999090718485250, -0.624038161191802660, -0.624077230105024360, +-0.624116297458052970, -0.624155363250791130, -0.624194427483140580, -0.624233490155003960, -0.624272551266283560, -0.624311610816881800, -0.624350668806701430, -0.624389725235643960, +-0.624428780103612250, -0.624467833410508820, -0.624506885156235540, -0.624545935340695020, -0.624584983963789700, -0.624624031025422300, -0.624663076525494350, -0.624702120463908830, +-0.624741162840568350, -0.624780203655374570, -0.624819242908230320, -0.624858280599037920, -0.624897316727699770, -0.624936351294118730, -0.624975384298196550, -0.625014415739835740, +-0.625053445618939390, -0.625092473935409010, -0.625131500689147470, -0.625170525880057170, -0.625209549508040530, -0.625248571573000400, -0.625287592074838420, -0.625326611013457550, +-0.625365628388760530, -0.625404644200649010, -0.625443658449025830, -0.625482671133793630, -0.625521682254855050, -0.625560691812111940, -0.625599699805467040, -0.625638706234823210, +-0.625677711100082410, -0.625716714401147180, -0.625755716137920250, -0.625794716310304030, -0.625833714918201390, -0.625872711961514060, -0.625911707440144900, -0.625950701353996890, +-0.625989693702971860, -0.626028684486972460, -0.626067673705901440, -0.626106661359661200, -0.626145647448154600, -0.626184631971283600, -0.626223614928951290, -0.626262596321059740, +-0.626301576147511590, -0.626340554408209570, -0.626379531103056110, -0.626418506231954160, -0.626457479794805590, -0.626496451791513360, -0.626535422221980330, -0.626574391086108460, +-0.626613358383800500, -0.626652324114959190, -0.626691288279487170, -0.626730250877287180, -0.626769211908261180, -0.626808171372312260, -0.626847129269343160, -0.626886085599255960, +-0.626925040361953510, -0.626963993557338450, -0.627002945185313740, -0.627041895245781360, -0.627080843738644260, -0.627119790663805300, -0.627158736021166560, -0.627197679810631010, +-0.627236622032101290, -0.627275562685480010, -0.627314501770670050, -0.627353439287573590, -0.627392375236093590, -0.627431309616132920, -0.627470242427593640, -0.627509173670378730, +-0.627548103344390930, -0.627587031449532870, -0.627625957985707530, -0.627664882952816970, -0.627703806350764170, -0.627742728179452310, -0.627781648438783150, -0.627820567128659970, +-0.627859484248985300, -0.627898399799662330, -0.627937313780593030, -0.627976226191680360, -0.628015137032827520, -0.628054046303936460, -0.628092954004910390, -0.628131860135651810, +-0.628170764696063590, -0.628209667686048910, -0.628248569105509640, -0.628287468954348950, -0.628326367232469930, -0.628365263939774650, -0.628404159076166200, -0.628443052641547430, +-0.628481944635820860, -0.628520835058889890, -0.628559723910656510, -0.628598611191024110, -0.628637496899894900, -0.628676381037171940, -0.628715263602757980, -0.628754144596555880, +-0.628793024018468700, -0.628831901868398770, -0.628870778146248920, -0.628909652851922570, -0.628948525985321690, -0.628987397546349580, -0.629026267534908870, -0.629065135950902520, +-0.629104002794233730, -0.629142868064804570, -0.629181731762518240, -0.629220593887277910, -0.629259454438985680, -0.629298313417544940, -0.629337170822858340, -0.629376026654829170, +-0.629414880913359620, -0.629453733598352770, -0.629492584709712030, -0.629531434247339480, -0.629570282211138310, -0.629609128601011480, -0.629647973416861740, -0.629686816658592500, +-0.629725658326105830, -0.629764498419305040, -0.629803336938093320, -0.629842173882372960, -0.629881009252047150, -0.629919843047018760, -0.629958675267190850, -0.629997505912466500, +-0.630036334982748140, -0.630075162477938930, -0.630113988397942080, -0.630152812742660000, -0.630191635511995860, -0.630230456705852540, -0.630269276324133540, -0.630308094366740960, +-0.630346910833578190, -0.630385725724548430, -0.630424539039553980, -0.630463350778498240, -0.630502160941284200, -0.630540969527814580, -0.630579776537993020, -0.630618581971721600, +-0.630657385828903850, -0.630696188109442830, -0.630734988813241080, -0.630773787940201780, -0.630812585490228120, -0.630851381463222950, -0.630890175859089570, -0.630928968677730520, +-0.630967759919049410, -0.631006549582948550, -0.631045337669331240, -0.631084124178100670, -0.631122909109159690, -0.631161692462411830, -0.631200474237759380, -0.631239254435105760, +-0.631278033054354370, -0.631316810095407630, -0.631355585558168730, -0.631394359442540850, -0.631433131748427190, -0.631471902475731040, -0.631510671624354700, -0.631549439194201700, +-0.631588205185175440, -0.631626969597178340, -0.631665732430113810, -0.631704493683885040, -0.631743253358395320, -0.631782011453547070, -0.631820767969243800, -0.631859522905389050, +-0.631898276261885110, -0.631937028038635380, -0.631975778235543180, -0.632014526852511470, -0.632053273889443880, -0.632092019346242710, -0.632130763222811480, -0.632169505519053710, +-0.632208246234871820, -0.632246985370169320, -0.632285722924849300, -0.632324458898815060, -0.632363193291969990, -0.632401926104216530, -0.632440657335458620, -0.632479386985598800, +-0.632518115054540480, -0.632556841542186830, -0.632595566448441170, -0.632634289773206790, -0.632673011516386440, -0.632711731677883530, -0.632750450257601680, -0.632789167255443320, +-0.632827882671312070, -0.632866596505111120, -0.632905308756743670, -0.632944019426113340, -0.632982728513122540, -0.633021436017674910, -0.633060141939674080, -0.633098846279022460, +-0.633137549035623800, -0.633176250209381290, -0.633214949800198550, -0.633253647807977990, -0.633292344232623260, -0.633331039074038090, -0.633369732332125010, -0.633408424006787540, +-0.633447114097929090, -0.633485802605452840, -0.633524489529262320, -0.633563174869260390, -0.633601858625350460, -0.633640540797436150, -0.633679221385420210, -0.633717900389206170, +-0.633756577808697430, -0.633795253643797300, -0.633833927894409290, -0.633872600560436150, -0.633911271641781400, -0.633949941138349020, -0.633988609050041290, -0.634027275376762070, +-0.634065940118414660, -0.634104603274902810, -0.634143264846129040, -0.634181924831997090, -0.634220583232410710, -0.634259240047272520, -0.634297895276486280, -0.634336548919955280, +-0.634375200977582930, -0.634413851449272760, -0.634452500334927840, -0.634491147634451580, -0.634529793347747730, -0.634568437474719140, -0.634607080015269440, -0.634645720969301940, +-0.634684360336720270, -0.634722998117427940, -0.634761634311327820, -0.634800268918323970, -0.634838901938319160, -0.634877533371217000, -0.634916163216921010, -0.634954791475334620, +-0.634993418146361680, -0.635032043229904810, -0.635070666725867760, -0.635109288634154500, -0.635147908954667550, -0.635186527687310990, -0.635225144831988000, -0.635263760388602110, +-0.635302374357057160, -0.635340986737256030, -0.635379597529102450, -0.635418206732500050, -0.635456814347351910, -0.635495420373561770, -0.635534024811033050, -0.635572627659669600, +-0.635611228919374160, -0.635649828590050700, -0.635688426671603080, -0.635727023163934040, -0.635765618066947420, -0.635804211380546660, -0.635842803104635480, -0.635881393239117630, +-0.635919981783895860, -0.635958568738874240, -0.635997154103956520, -0.636035737879045550, -0.636074320064045300, -0.636112900658859170, -0.636151479663390810, -0.636190057077544060, +-0.636228632901221890, -0.636267207134328160, -0.636305779776766720, -0.636344350828440430, -0.636382920289253360, -0.636421488159108930, -0.636460054437911090, -0.636498619125562830, +-0.636537182221967980, -0.636575743727030520, -0.636614303640653410, -0.636652861962740510, -0.636691418693195450, -0.636729973831921870, -0.636768527378823720, -0.636807079333803870, +-0.636845629696766280, -0.636884178467615030, -0.636922725646252960, -0.636961271232584060, -0.636999815226511950, -0.637038357627940370, -0.637076898436773290, -0.637115437652913450, +-0.637153975276265490, -0.637192511306732270, -0.637231045744217740, -0.637269578588625540, -0.637308109839859420, -0.637346639497823330, -0.637385167562420360, -0.637423694033554480, +-0.637462218911129750, -0.637500742195049040, -0.637539263885216530, -0.637577783981535860, -0.637616302483910660, -0.637654819392245110, -0.637693334706442180, -0.637731848426405850, +-0.637770360552040280, -0.637808871083248460, -0.637847380019934460, -0.637885887362002020, -0.637924393109355230, -0.637962897261897030, -0.638001399819531630, -0.638039900782163110, +-0.638078400149694520, -0.638116897922029860, -0.638155394099072960, -0.638193888680727570, -0.638232381666897890, -0.638270873057486750, -0.638309362852398590, -0.638347851051537240, +-0.638386337654806010, -0.638424822662108980, -0.638463306073349780, -0.638501787888432370, -0.638540268107260830, -0.638578746729738240, -0.638617223755768790, -0.638655699185256660, +-0.638694173018104940, -0.638732645254217800, -0.638771115893499000, -0.638809584935852710, -0.638848052381182250, -0.638886518229391580, -0.638924982480384870, -0.638963445134065560, +-0.639001906190337480, -0.639040365649104710, -0.639078823510271010, -0.639117279773740550, -0.639155734439416650, -0.639194187507203360, -0.639232638977004890, -0.639271088848724520, +-0.639309537122266460, -0.639347983797534550, -0.639386428874432640, -0.639424872352865050, -0.639463314232734840, -0.639501754513946750, -0.639540193196403980, -0.639578630280010610, +-0.639617065764670810, -0.639655499650288230, -0.639693931936767270, -0.639732362624011230, -0.639770791711924190, -0.639809219200410560, -0.639847645089373530, -0.639886069378717390, +-0.639924492068346010, -0.639962913158163450, -0.640001332648073910, -0.640039750537980790, -0.640078166827788180, -0.640116581517400580, -0.640154994606721210, -0.640193406095654230, +-0.640231815984103840, -0.640270224271974220, -0.640308630959168680, -0.640347036045591620, -0.640385439531147240, -0.640423841415738940, -0.640462241699271130, -0.640500640381647560, +-0.640539037462772520, -0.640577432942550100, -0.640615826820883920, -0.640654219097678060, -0.640692609772837040, -0.640730998846264050, -0.640769386317863730, -0.640807772187539810, +-0.640846156455196490, -0.640884539120738170, -0.640922920184068160, -0.640961299645090850, -0.640999677503710560, -0.641038053759830810, -0.641076428413355880, -0.641114801464189870, +-0.641153172912237170, -0.641191542757401310, -0.641229910999586480, -0.641268277638697310, -0.641306642674637000, -0.641345006107310160, -0.641383367936620870, -0.641421728162473000, +-0.641460086784771290, -0.641498443803418920, -0.641536799218320520, -0.641575153029380400, -0.641613505236502070, -0.641651855839590060, -0.641690204838548330, -0.641728552233281070, +-0.641766898023692800, -0.641805242209686930, -0.641843584791168320, -0.641881925768040370, -0.641920265140207720, -0.641958602907574340, -0.641996939070044400, -0.642035273627522440, +-0.642073606579912080, -0.642111937927117630, -0.642150267669043600, -0.642188595805593730, -0.642226922336672220, -0.642265247262183480, -0.642303570582031580, -0.642341892296121150, +-0.642380212404355610, -0.642418530906639470, -0.642456847802877480, -0.642495163092972940, -0.642533476776830590, -0.642571788854354400, -0.642610099325449210, -0.642648408190018340, +-0.642686715447966520, -0.642725021099198160, -0.642763325143617000, -0.642801627581127580, -0.642839928411633950, -0.642878227635040540, -0.642916525251251980, -0.642954821260171670, +-0.642993115661704360, -0.643031408455754570, -0.643069699642225930, -0.643107989221023080, -0.643146277192050200, -0.643184563555211700, -0.643222848310411990, -0.643261131457554920, +-0.643299412996545360, -0.643337692927286930, -0.643375971249684260, -0.643414247963641660, -0.643452523069063420, -0.643490796565854280, -0.643529068453917770, -0.643567338733158520, +-0.643605607403481380, -0.643643874464789880, -0.643682139916988530, -0.643720403759981960, -0.643758665993674370, -0.643796926617970500, -0.643835185632773870, -0.643873443037989320, +-0.643911698833521510, -0.643949953019274160, -0.643988205595151910, -0.644026456561059060, -0.644064705916900460, -0.644102953662579750, -0.644141199798001660, -0.644179444323070950, +-0.644217687237691240, -0.644255928541767390, -0.644294168235203690, -0.644332406317904450, -0.644370642789774630, -0.644408877650717860, -0.644447110900638890, -0.644485342539442560, +-0.644523572567032410, -0.644561800983313390, -0.644600027788189920, -0.644638252981566300, -0.644676476563347370, -0.644714698533436990, -0.644752918891739800, -0.644791137638160650, +-0.644829354772603390, -0.644867570294972660, -0.644905784205173080, -0.644943996503109300, -0.644982207188685260, -0.645020416261805620, -0.645058623722375320, -0.645096829570298120, +-0.645135033805478870, -0.645173236427821980, -0.645211437437232080, -0.645249636833613920, -0.645287834616871230, -0.645326030786909090, -0.645364225343632140, -0.645402418286944220, +-0.645440609616750430, -0.645478799332954930, -0.645516987435462490, -0.645555173924178050, -0.645593358799005150, -0.645631542059849290, -0.645669723706614240, -0.645707903739204840, +-0.645746082157525710, -0.645784258961481390, -0.645822434150976730, -0.645860607725915690, -0.645898779686203020, -0.645936950031743900, -0.645975118762441960, -0.646013285878202170, +-0.646051451378929280, -0.646089615264527680, -0.646127777534902470, -0.646165938189957380, -0.646204097229597600, -0.646242254653727750, -0.646280410462252040, -0.646318564655075200, +-0.646356717232101970, -0.646394868193237330, -0.646433017538385220, -0.646471165267450520, -0.646509311380338180, -0.646547455876952280, -0.646585598757197790, -0.646623740020979220, +-0.646661879668201320, -0.646700017698769170, -0.646738154112586510, -0.646776288909558520, -0.646814422089590060, -0.646852553652585320, -0.646890683598449150, -0.646928811927086290, +-0.646966938638401380, -0.647005063732299380, -0.647043187208684480, -0.647081309067461640, -0.647119429308535830, -0.647157547931811130, -0.647195664937192490, -0.647233780324584670, +-0.647271894093892850, -0.647310006245020890, -0.647348116777873960, -0.647386225692357040, -0.647424332988374210, -0.647462438665830530, -0.647500542724630870, -0.647538645164679740, +-0.647576745985882330, -0.647614845188142720, -0.647652942771366090, -0.647691038735457410, -0.647729133080320760, -0.647767225805861320, -0.647805316911983730, -0.647843406398592950, +-0.647881494265593940, -0.647919580512890780, -0.647957665140389110, -0.647995748147992880, -0.648033829535607400, -0.648071909303137180, -0.648109987450487310, -0.648148063977562750, +-0.648186138884267680, -0.648224212170507300, -0.648262283836186780, -0.648300353881210100, -0.648338422305482550, -0.648376489108908990, -0.648414554291394270, -0.648452617852843470, +-0.648490679793160660, -0.648528740112251260, -0.648566798810020330, -0.648604855886372070, -0.648642911341211660, -0.648680965174443960, -0.648719017385974260, -0.648757067975706650, +-0.648795116943546300, -0.648833164289398520, -0.648871210013167500, -0.648909254114758530, -0.648947296594076350, -0.648985337451025930, -0.649023376685512470, -0.649061414297440350, +-0.649099450286714560, -0.649137484653240620, -0.649175517396922470, -0.649213548517665660, -0.649251578015374920, -0.649289605889955210, -0.649327632141311840, -0.649365656769349100, +-0.649403679773972180, -0.649441701155086480, -0.649479720912596090, -0.649517739046406420, -0.649555755556422420, -0.649593770442549290, -0.649631783704691550, -0.649669795342754150, +-0.649707805356642740, -0.649745813746261500, -0.649783820511515620, -0.649821825652310280, -0.649859829168550340, -0.649897831060141210, -0.649935831326987070, -0.649973829968993440, +-0.650011826986065520, -0.650049822378107710, -0.650087816145025420, -0.650125808286723510, -0.650163798803107040, -0.650201787694081430, -0.650239774959551100, -0.650277760599421660, +-0.650315744613597420, -0.650353727001983790, -0.650391707764485850, -0.650429686901008770, -0.650467664411457650, -0.650505640295737100, -0.650543614553752430, -0.650581587185409150, +-0.650619558190611460, -0.650657527569264870, -0.650695495321274580, -0.650733461446545420, -0.650771425944983050, -0.650809388816491640, -0.650847350060976940, -0.650885309678344020, +-0.650923267668497620, -0.650961224031343040, -0.650999178766785370, -0.651037131874730110, -0.651075083355081570, -0.651113033207745500, -0.651150981432627060, -0.651188928029630910, +-0.651226872998662330, -0.651264816339626630, -0.651302758052428880, -0.651340698136974590, -0.651378636593168300, -0.651416573420915300, -0.651454508620121220, -0.651492442190690580, +-0.651530374132528790, -0.651568304445541040, -0.651606233129632620, -0.651644160184708940, -0.651682085610674420, -0.651720009407434800, -0.651757931574895370, -0.651795852112960870, +-0.651833771021536720, -0.651871688300528220, -0.651909603949840650, -0.651947517969378890, -0.651985430359048320, -0.652023341118754480, -0.652061250248402000, -0.652099157747896290, +-0.652137063617142740, -0.652174967856046560, -0.652212870464513260, -0.652250771442447470, -0.652288670789754720, -0.652326568506340630, -0.652364464592109840, -0.652402359046967860, +-0.652440251870819890, -0.652478143063571440, -0.652516032625127920, -0.652553920555393960, -0.652591806854275540, -0.652629691521677270, -0.652667574557504790, -0.652705455961663290, +-0.652743335734058180, -0.652781213874595200, -0.652819090383178760, -0.652856965259714480, -0.652894838504108230, -0.652932710116264640, -0.652970580096089100, -0.653008448443487270, +-0.653046315158364200, -0.653084180240625760, -0.653122043690176460, -0.653159905506922040, -0.653197765690768260, -0.653235624241619740, -0.653273481159382110, -0.653311336443960780, +-0.653349190095261490, -0.653387042113188880, -0.653424892497648570, -0.653462741248546530, -0.653500588365787170, -0.653538433849276350, -0.653576277698919460, -0.653614119914621930, +-0.653651960496289370, -0.653689799443826660, -0.653727636757139410, -0.653765472436133370, -0.653803306480713280, -0.653841138890784990, -0.653878969666253810, -0.653916798807025250, +-0.653954626313005050, -0.653992452184097850, -0.654030276420209940, -0.654068099021245960, -0.654105919987111760, -0.654143739317712750, -0.654181557012954440, -0.654219373072742580, +-0.654257187496981810, -0.654295000285578190, -0.654332811438437360, -0.654370620955464170, -0.654408428836564470, -0.654446235081643680, -0.654484039690607310, -0.654521842663361110, +-0.654559643999810040, -0.654597443699859840, -0.654635241763416360, -0.654673038190384470, -0.654710832980670010, -0.654748626134178390, -0.654786417650815240, -0.654824207530486310, +-0.654861995773096670, -0.654899782378552290, -0.654937567346758120, -0.654975350677620030, -0.655013132371043530, -0.655050912426934250, -0.655088690845198050, -0.655126467625739780, +-0.655164242768465300, -0.655202016273280560, -0.655239788140090430, -0.655277558368800860, -0.655315326959317380, -0.655353093911545610, -0.655390859225391420, -0.655428622900759650, +-0.655466384937556490, -0.655504145335687570, -0.655541904095058080, -0.655579661215573760, -0.655617416697140240, -0.655655170539663600, -0.655692922743048690, -0.655730673307201360, +-0.655768422232027800, -0.655806169517432870, -0.655843915163322410, -0.655881659169602170, -0.655919401536177890, -0.655957142262955430, -0.655994881349839630, -0.656032618796736800, +-0.656070354603552670, -0.656108088770192330, -0.656145821296561740, -0.656183552182566630, -0.656221281428112650, -0.656259009033105740, -0.656296734997451110, -0.656334459321054830, +-0.656372182003822190, -0.656409903045659050, -0.656447622446471150, -0.656485340206164110, -0.656523056324644140, -0.656560770801816180, -0.656598483637586330, -0.656636194831860530, +-0.656673904384543980, -0.656711612295542650, -0.656749318564762260, -0.656787023192108580, -0.656824726177487660, -0.656862427520804590, -0.656900127221965560, -0.656937825280876410, +-0.656975521697442440, -0.657013216471569630, -0.657050909603163810, -0.657088601092131070, -0.657126290938376490, -0.657163979141806130, -0.657201665702326190, -0.657239350619841730, +-0.657277033894258840, -0.657314715525483480, -0.657352395513421280, -0.657390073857978430, -0.657427750559060000, -0.657465425616572290, -0.657503099030421370, -0.657540770800512210, +-0.657578440926751330, -0.657616109409044140, -0.657653776247296820, -0.657691441441415340, -0.657729104991304990, -0.657766766896871750, -0.657804427158022010, -0.657842085774660860, +-0.657879742746694470, -0.657917398074028830, -0.657955051756569990, -0.657992703794223030, -0.658030354186894480, -0.658068002934490300, -0.658105650036915790, -0.658143295494077240, +-0.658180939305880290, -0.658218581472231110, -0.658256221993035790, -0.658293860868199630, -0.658331498097628700, -0.658369133681229400, -0.658406767618907040, -0.658444399910567690, +-0.658482030556117310, -0.658519659555461880, -0.658557286908507570, -0.658594912615159790, -0.658632536675325060, -0.658670159088908580, -0.658707779855816740, -0.658745398975955520, +-0.658783016449230760, -0.658820632275548770, -0.658858246454814830, -0.658895858986935370, -0.658933469871816560, -0.658971079109363700, -0.659008686699483200, -0.659046292642080920, +-0.659083896937062930, -0.659121499584335520, -0.659159100583804110, -0.659196699935374890, -0.659234297638954250, -0.659271893694447500, -0.659309488101761040, -0.659347080860800960, +-0.659384671971473440, -0.659422261433683880, -0.659459849247338690, -0.659497435412344180, -0.659535019928605750, -0.659572602796029810, -0.659610184014522320, -0.659647763583989350, +-0.659685341504337440, -0.659722917775471760, -0.659760492397298730, -0.659798065369724850, -0.659835636692655440, -0.659873206365997000, -0.659910774389655510, -0.659948340763537140, +-0.659985905487548210, -0.660023468561594110, -0.660061029985581470, -0.660098589759416490, -0.660136147883004790, -0.660173704356252670, -0.660211259179066200, -0.660248812351352020, +-0.660286363873015420, -0.660323913743963040, -0.660361461964101060, -0.660399008533335220, -0.660436553451571710, -0.660474096718716930, -0.660511638334676850, -0.660549178299358110, +-0.660586716612665990, -0.660624253274507130, -0.660661788284787940, -0.660699321643413940, -0.660736853350291640, -0.660774383405327240, -0.660811911808426800, -0.660849438559496960, +-0.660886963658443240, -0.660924487105172380, -0.660962008899590000, -0.660999529041602640, -0.661037047531116360, -0.661074564368037580, -0.661112079552272580, -0.661149593083727120, +-0.661187104962307700, -0.661224615187920860, -0.661262123760472110, -0.661299630679868080, -0.661337135946014950, -0.661374639558818920, -0.661412141518186720, -0.661449641824023770, +-0.661487140476236800, -0.661524637474732220, -0.661562132819415780, -0.661599626510193990, -0.661637118546973160, -0.661674608929659790, -0.661712097658159640, -0.661749584732379210, +-0.661787070152225150, -0.661824553917603090, -0.661862036028419640, -0.661899516484581120, -0.661936995285993810, -0.661974472432564240, -0.662011947924198260, -0.662049421760802390, +-0.662086893942283370, -0.662124364468546720, -0.662161833339499180, -0.662199300555046940, -0.662236766115096630, -0.662274230019554650, -0.662311692268326760, -0.662349152861319570, +-0.662386611798439940, -0.662424069079593390, -0.662461524704686670, -0.662498978673626170, -0.662536430986318540, -0.662573881642669500, -0.662611330642585820, -0.662648777985974100, +-0.662686223672740100, -0.662723667702790450, -0.662761110076031780, -0.662798550792370270, -0.662835989851712660, -0.662873427253964810, -0.662910862999033350, -0.662948297086825120, +-0.662985729517245770, -0.663023160290202140, -0.663060589405600530, -0.663098016863347570, -0.663135442663349780, -0.663172866805513130, -0.663210289289744680, -0.663247710115950070, +-0.663285129284036270, -0.663322546793909560, -0.663359962645476590, -0.663397376838643970, -0.663434789373317570, -0.663472200249404230, -0.663509609466810700, -0.663547017025442830, +-0.663584422925207360, -0.663621827166010920, -0.663659229747759930, -0.663696630670361110, -0.663734029933720440, -0.663771427537744650, -0.663808823482340600, -0.663846217767414260, +-0.663883610392872360, -0.663921001358621310, -0.663958390664568190, -0.663995778310618730, -0.664033164296679910, -0.664070548622658350, -0.664107931288460240, -0.664145312293992210, +-0.664182691639160990, -0.664220069323873010, -0.664257445348035100, -0.664294819711553350, -0.664332192414334500, -0.664369563456285510, -0.664406932837312230, -0.664444300557321730, +-0.664481666616220430, -0.664519031013914960, -0.664556393750312170, -0.664593754825318130, -0.664631114238839690, -0.664668471990783830, -0.664705828081056490, -0.664743182509564430, +-0.664780535276214610, -0.664817886380913660, -0.664855235823567650, -0.664892583604083650, -0.664929929722368420, -0.664967274178328130, -0.665004616971869520, -0.665041958102899460, +-0.665079297571324560, -0.665116635377051680, -0.665153971519986900, -0.665191306000037170, -0.665228638817109470, -0.665265969971109870, -0.665303299461945330, -0.665340627289522590, +-0.665377953453748280, -0.665415277954529370, -0.665452600791772040, -0.665489921965383480, -0.665527241475269760, -0.665564559321337960, -0.665601875503494700, -0.665639190021646730, +-0.665676502875701240, -0.665713814065564070, -0.665751123591142410, -0.665788431452343340, -0.665825737649072710, -0.665863042181237820, -0.665900345048745400, -0.665937646251501980, +-0.665974945789414850, -0.666012243662389980, -0.666049539870334550, -0.666086834413155530, -0.666124127290759200, -0.666161418503052440, -0.666198708049942190, -0.666235995931335530, +-0.666273282147138550, -0.666310566697258300, -0.666347849581601980, -0.666385130800075780, -0.666422410352586650, -0.666459688239041560, -0.666496964459347250, -0.666534239013410800, +-0.666571511901138500, -0.666608783122437320, -0.666646052677214660, -0.666683320565376380, -0.666720586786829880, -0.666757851341481910, -0.666795114229239320, -0.666832375450009280, +-0.666869635003698000, -0.666906892890212880, -0.666944149109460200, -0.666981403661347170, -0.667018656545780740, -0.667055907762667540, -0.667093157311914870, -0.667130405193429140, +-0.667167651407117200, -0.667204895952886570, -0.667242138830643430, -0.667279380040294860, -0.667316619581747820, -0.667353857454909270, -0.667391093659686410, -0.667428328195985520, +-0.667465561063713800, -0.667502792262778420, -0.667540021793085800, -0.667577249654543130, -0.667614475847057240, -0.667651700370535670, -0.667688923224884380, -0.667726144410010770, +-0.667763363925822250, -0.667800581772224900, -0.667837797949126120, -0.667875012456432880, -0.667912225294052030, -0.667949436461890980, -0.667986645959856020, -0.668023853787854450, +-0.668061059945793570, -0.668098264433579780, -0.668135467251120160, -0.668172668398322010, -0.668209867875092180, -0.668247065681337960, -0.668284261816965760, -0.668321456281882890, +-0.668358649075996740, -0.668395840199213610, -0.668433029651440910, -0.668470217432585610, -0.668507403542555110, -0.668544587981255820, -0.668581770748595040, -0.668618951844480170, +-0.668656131268817510, -0.668693309021514580, -0.668730485102478340, -0.668767659511615990, -0.668804832248834690, -0.668842003314041090, -0.668879172707142370, -0.668916340428046150, +-0.668953506476658740, -0.668990670852887440, -0.669027833556639640, -0.669064994587822090, -0.669102153946342540, -0.669139311632107160, -0.669176467645023920, -0.669213621984999120, +-0.669250774651940270, -0.669287925645754460, -0.669325074966348850, -0.669362222613630990, -0.669399368587507150, -0.669436512887884860, -0.669473655514671640, -0.669510796467774010, +-0.669547935747099250, -0.669585073352554790, -0.669622209284047590, -0.669659343541485260, -0.669696476124774120, -0.669733607033821900, -0.669770736268536000, -0.669807863828822850, +-0.669844989714590060, -0.669882113925744820, -0.669919236462194640, -0.669956357323845950, -0.669993476510606480, -0.670030594022383630, -0.670067709859083930, -0.670104824020614890, +-0.670141936506883920, -0.670179047317798090, -0.670216156453264930, -0.670253263913191070, -0.670290369697484010, -0.670327473806051290, -0.670364576238799750, -0.670401676995636690, +-0.670438776076469290, -0.670475873481205080, -0.670512969209751560, -0.670550063262015270, -0.670587155637903720, -0.670624246337324650, -0.670661335360184680, -0.670698422706391460, +-0.670735508375852050, -0.670772592368474200, -0.670809674684164530, -0.670846755322830780, -0.670883834284380360, -0.670920911568720140, -0.670957987175757500, -0.670995061105399970, +-0.671032133357554850, -0.671069203932129540, -0.671106272829031130, -0.671143340048166890, -0.671180405589444580, -0.671217469452771050, -0.671254531638053820, -0.671291592145200180, +-0.671328650974117650, -0.671365708124713860, -0.671402763596895320, -0.671439817390570350, -0.671476869505645450, -0.671513919942028360, -0.671550968699626490, -0.671588015778347150, +-0.671625061178098170, -0.671662104898786190, -0.671699146940318850, -0.671736187302604090, -0.671773225985548450, -0.671810262989059880, -0.671847298313045570, -0.671884331957413040, +-0.671921363922069910, -0.671958394206923160, -0.671995422811880290, -0.672032449736849280, -0.672069474981736860, -0.672106498546450770, -0.672143520430898310, -0.672180540634987440, +-0.672217559158624910, -0.672254576001718450, -0.672291591164175920, -0.672328604645904050, -0.672365616446810700, -0.672402626566803270, -0.672439635005789290, -0.672476641763676500, +-0.672513646840371850, -0.672550650235783090, -0.672587651949818070, -0.672624651982383530, -0.672661650333387320, -0.672698647002736960, -0.672735641990340080, -0.672772635296104430, +-0.672809626919936840, -0.672846616861745070, -0.672883605121437300, -0.672920591698920050, -0.672957576594101270, -0.672994559806888600, -0.673031541337189900, -0.673068521184912010, +-0.673105499349962780, -0.673142475832250180, -0.673179450631681050, -0.673216423748163260, -0.673253395181604430, -0.673290364931912190, -0.673327332998994280, -0.673364299382757660, +-0.673401264083110410, -0.673438227099960260, -0.673475188433214190, -0.673512148082780260, -0.673549106048565880, -0.673586062330478690, -0.673623016928426740, -0.673659969842316910, +-0.673696921072057480, -0.673733870617555410, -0.673770818478718670, -0.673807764655454890, -0.673844709147671690, -0.673881651955277050, -0.673918593078177920, -0.673955532516282370, +-0.673992470269498270, -0.674029406337732670, -0.674066340720893550, -0.674103273418888650, -0.674140204431625480, -0.674177133759012230, -0.674214061400955740, -0.674250987357364110, +-0.674287911628145280, -0.674324834213206440, -0.674361755112455440, -0.674398674325800140, -0.674435591853148390, -0.674472507694407360, -0.674509421849485150, -0.674546334318289590, +-0.674583245100727870, -0.674620154196708070, -0.674657061606137920, -0.674693967328925170, -0.674730871364977670, -0.674767773714202820, -0.674804674376508370, -0.674841573351802730, +-0.674878470639992730, -0.674915366240986580, -0.674952260154692010, -0.674989152381016750, -0.675026042919869010, -0.675062931771155840, -0.675099818934785210, -0.675136704410665530, +-0.675173588198703660, -0.675210470298807870, -0.675247350710885820, -0.675284229434845900, -0.675321106470594960, -0.675357981818041190, -0.675394855477092880, -0.675431727447657120, +-0.675468597729641960, -0.675505466322955380, -0.675542333227505120, -0.675579198443199360, -0.675616061969945170, -0.675652923807650960, -0.675689783956224700, -0.675726642415573680, +-0.675763499185606080, -0.675800354266229640, -0.675837207657352450, -0.675874059358882450, -0.675910909370727060, -0.675947757692794690, -0.675984604324992520, -0.676021449267228960, +-0.676058292519411740, -0.676095134081448720, -0.676131973953248310, -0.676168812134717580, -0.676205648625764820, -0.676242483426298220, -0.676279316536225080, -0.676316147955453810, +-0.676352977683892020, -0.676389805721447800, -0.676426632068029440, -0.676463456723544130, -0.676500279687900160, -0.676537100961005940, -0.676573920542768550, -0.676610738433096380, +-0.676647554631897300, -0.676684369139079700, -0.676721181954550890, -0.676757993078219040, -0.676794802509992690, -0.676831610249778890, -0.676868416297486060, -0.676905220653022170, +-0.676942023316295270, -0.676978824287213680, -0.677015623565684680, -0.677052421151616570, -0.677089217044917870, -0.677126011245495650, -0.677162803753258440, -0.677199594568114290, +-0.677236383689971080, -0.677273171118737190, -0.677309956854320160, -0.677346740896628500, -0.677383523245569720, -0.677420303901052120, -0.677457082862983670, -0.677493860131272550, +-0.677530635705827170, -0.677567409586554810, -0.677604181773364010, -0.677640952266163050, -0.677677721064859240, -0.677714488169361310, -0.677751253579577110, -0.677788017295414710, +-0.677824779316782640, -0.677861539643588310, -0.677898298275740220, -0.677935055213146560, -0.677971810455714970, -0.678008564003353850, -0.678045315855971390, -0.678082066013475870, +-0.678118814475774930, -0.678155561242776980, -0.678192306314390430, -0.678229049690522780, -0.678265791371082450, -0.678302531355977620, -0.678339269645116590, -0.678376006238407660, +-0.678412741135758330, -0.678449474337077250, -0.678486205842272700, -0.678522935651252430, -0.678559663763924740, -0.678596390180197910, -0.678633114899980020, -0.678669837923179810, +-0.678706559249704580, -0.678743278879463060, -0.678779996812363560, -0.678816713048313810, -0.678853427587222220, -0.678890140428997090, -0.678926851573546930, -0.678963561020779370, +-0.679000268770602820, -0.679036974822926020, -0.679073679177656380, -0.679110381834702630, -0.679147082793972840, -0.679183782055375330, -0.679220479618818710, -0.679257175484210610, +-0.679293869651459550, -0.679330562120474160, -0.679367252891161950, -0.679403941963431680, -0.679440629337191520, -0.679477315012349870, -0.679513998988815150, -0.679550681266495200, +-0.679587361845298890, -0.679624040725133720, -0.679660717905908540, -0.679697393387531550, -0.679734067169911030, -0.679770739252955720, -0.679807409636573270, -0.679844078320672280, +-0.679880745305161400, -0.679917410589948370, -0.679954074174941690, -0.679990736060049890, -0.680027396245181270, -0.680064054730244560, -0.680100711515147280, -0.680137366599798290, +-0.680174019984106090, -0.680210671667978660, -0.680247321651324510, -0.680283969934051940, -0.680320616516069900, -0.680357261397285920, -0.680393904577608840, -0.680430546056947310, +-0.680467185835209150, -0.680503823912302910, -0.680540460288137190, -0.680577094962620310, -0.680613727935660990, -0.680650359207166990, -0.680686988777047140, -0.680723616645210190, +-0.680760242811563780, -0.680796867276016850, -0.680833490038477710, -0.680870111098854870, -0.680906730457057070, -0.680943348112992060, -0.680979964066568800, -0.681016578317695800, +-0.681053190866281130, -0.681089801712233430, -0.681126410855461330, -0.681163018295873450, -0.681199624033377750, -0.681236228067882870, -0.681272830399297870, -0.681309431027530390, +-0.681346029952489380, -0.681382627174083270, -0.681419222692220660, -0.681455816506810200, -0.681492408617759950, -0.681528999024978650, -0.681565587728375170, -0.681602174727857450, +-0.681638760023334230, -0.681675343614714160, -0.681711925501905740, -0.681748505684817820, -0.681785084163358260, -0.681821660937436350, -0.681858236006959940, -0.681894809371838000, +-0.681931381031979030, -0.681967950987291570, -0.682004519237684570, -0.682041085783065880, -0.682077650623344580, -0.682114213758429400, -0.682150775188228420, -0.682187334912650490, +-0.682223892931604240, -0.682260449244998180, -0.682297003852741390, -0.682333556754741720, -0.682370107950908240, -0.682406657441149810, -0.682443205225374380, -0.682479751303490810, +-0.682516295675408060, -0.682552838341034750, -0.682589379300279080, -0.682625918553049990, -0.682662456099256460, -0.682698991938806340, -0.682735526071608810, -0.682772058497572500, +-0.682808589216606030, -0.682845118228618380, -0.682881645533517600, -0.682918171131212780, -0.682954695021612770, -0.682991217204625740, -0.683027737680160670, -0.683064256448126180, +-0.683100773508431120, -0.683137288860984460, -0.683173802505694260, -0.683210314442469490, -0.683246824671219330, -0.683283333191851750, -0.683319840004275920, -0.683356345108400380, +-0.683392848504134290, -0.683429350191385840, -0.683465850170064000, -0.683502348440077840, -0.683538845001335440, -0.683575339853745970, -0.683611832997218170, -0.683648324431660790, +-0.683684814156982900, -0.683721302173092570, -0.683757788479899100, -0.683794273077311440, -0.683830755965237790, -0.683867237143587210, -0.683903716612268560, -0.683940194371190690, +-0.683976670420262560, -0.684013144759392460, -0.684049617388489910, -0.684086088307462870, -0.684122557516220640, -0.684159025014672070, -0.684195490802725900, -0.684231954880291320, +-0.684268417247276490, -0.684304877903590740, -0.684341336849143000, -0.684377794083841580, -0.684414249607595780, -0.684450703420314330, -0.684487155521906090, -0.684523605912280230, +-0.684560054591345170, -0.684596501559009860, -0.684632946815183720, -0.684669390359774810, -0.684705832192692430, -0.684742272313845430, -0.684778710723143110, -0.684815147420493760, +-0.684851582405806460, -0.684888015678990600, -0.684924447239954270, -0.684960877088606980, -0.684997305224857360, -0.685033731648614590, -0.685070156359787630, -0.685106579358285120, +-0.685143000644016120, -0.685179420216889930, -0.685215838076814850, -0.685252254223700170, -0.685288668657454970, -0.685325081377987980, -0.685361492385208600, -0.685397901679025260, +-0.685434309259347120, -0.685470715126083490, -0.685507119279142760, -0.685543521718434250, -0.685579922443867010, -0.685616321455350230, -0.685652718752792320, -0.685689114336102580, +-0.685725508205190400, -0.685761900359964090, -0.685798290800333050, -0.685834679526206360, -0.685871066537492970, -0.685907451834102180, -0.685943835415942390, -0.685980217282923020, +-0.686016597434953470, -0.686052975871942140, -0.686089352593798330, -0.686125727600431110, -0.686162100891749670, -0.686198472467663190, -0.686234842328080300, -0.686271210472910510, +-0.686307576902062460, -0.686343941615445540, -0.686380304612968620, -0.686416665894540980, -0.686453025460072030, -0.686489383309470180, -0.686525739442644830, -0.686562093859505510, +-0.686598446559960610, -0.686634797543919650, -0.686671146811291600, -0.686707494361985750, -0.686743840195911500, -0.686780184312977270, -0.686816526713092570, -0.686852867396166910, +-0.686889206362108820, -0.686925543610827690, -0.686961879142232610, -0.686998212956233200, -0.687034545052737980, -0.687070875431656350, -0.687107204092897830, -0.687143531036371050, +-0.687179856261985410, -0.687216179769650100, -0.687252501559274420, -0.687288821630767770, -0.687325139984038770, -0.687361456618996840, -0.687397771535551590, -0.687434084733611670, +-0.687470396213086480, -0.687506705973885300, -0.687543014015917440, -0.687579320339092300, -0.687615624943318520, -0.687651927828506040, -0.687688228994563390, -0.687724528441400200, +-0.687760826168925640, -0.687797122177049030, -0.687833416465679970, -0.687869709034726990, -0.687905999884099840, -0.687942289013707910, -0.687978576423459940, -0.688014862113265570, +-0.688051146083034080, -0.688087428332674670, -0.688123708862097060, -0.688159987671209780, -0.688196264759922570, -0.688232540128145050, -0.688268813775785860, -0.688305085702754620, +-0.688341355908960620, -0.688377624394313600, -0.688413891158722090, -0.688450156202096040, -0.688486419524344750, -0.688522681125377180, -0.688558941005102950, -0.688595199163431260, +-0.688631455600271610, -0.688667710315533640, -0.688703963309126090, -0.688740214580958690, -0.688776464130941070, -0.688812711958981860, -0.688848958064990910, -0.688885202448877630, +-0.688921445110551200, -0.688957686049921580, -0.688993925266897510, -0.689030162761388510, -0.689066398533304430, -0.689102632582554110, -0.689138864909047080, -0.689175095512692960, +-0.689211324393401490, -0.689247551551081310, -0.689283776985642250, -0.689320000696994060, -0.689356222685045590, -0.689392442949706590, -0.689428661490886440, -0.689464878308494570, +-0.689501093402440920, -0.689537306772634140, -0.689573518418984180, -0.689609728341400660, -0.689645936539792560, -0.689682143014069600, -0.689718347764141320, -0.689754550789917100, +-0.689790752091306910, -0.689826951668219390, -0.689863149520564930, -0.689899345648252280, -0.689935540051191180, -0.689971732729291240, -0.690007923682462000, -0.690044112910613290, +-0.690080300413653980, -0.690116486191493910, -0.690152670244042920, -0.690188852571209990, -0.690225033172904840, -0.690261212049037120, -0.690297389199516440, -0.690333564624252550, +-0.690369738323154510, -0.690405910296132070, -0.690442080543095190, -0.690478249063952720, -0.690514415858614730, -0.690550580926990620, -0.690586744268990360, -0.690622905884523020, +-0.690659065773498340, -0.690695223935826390, -0.690731380371415900, -0.690767535080177080, -0.690803688062019420, -0.690839839316852560, -0.690875988844586340, -0.690912136645129960, +-0.690948282718393150, -0.690984427064285980, -0.691020569682717410, -0.691056710573597410, -0.691092849736835600, -0.691128987172341720, -0.691165122880025630, -0.691201256859796500, +-0.691237389111564180, -0.691273519635238640, -0.691309648430729060, -0.691345775497945400, -0.691381900836797290, -0.691418024447194690, -0.691454146329046780, -0.691490266482263420, +-0.691526384906754780, -0.691562501602429820, -0.691598616569198630, -0.691634729806970830, -0.691670841315656260, -0.691706951095164890, -0.691743059145405900, -0.691779165466289150, +-0.691815270057724920, -0.691851372919622070, -0.691887474051890880, -0.691923573454441000, -0.691959671127182150, -0.691995767070024530, -0.692031861282877080, -0.692067953765650220, +-0.692104044518253360, -0.692140133540596230, -0.692176220832588780, -0.692212306394140890, -0.692248390225162490, -0.692284472325562780, -0.692320552695251830, -0.692356631334139940, +-0.692392708242136060, -0.692428783419150480, -0.692464856865092850, -0.692500928579873110, -0.692536998563401450, -0.692573066815586950, -0.692609133336339780, -0.692645198125570020, +-0.692681261183186960, -0.692717322509100790, -0.692753382103221350, -0.692789439965458720, -0.692825496095722190, -0.692861550493921950, -0.692897603159968070, -0.692933654093769950, +-0.692969703295237550, -0.693005750764281060, -0.693041796500810100, -0.693077840504734980, -0.693113882775964970, -0.693149923314410280, -0.693185962119981070, -0.693221999192586650, +-0.693258034532137190, -0.693294068138542660, -0.693330100011712910, -0.693366130151558350, -0.693402158557988040, -0.693438185230912390, -0.693474210170241580, -0.693510233375884910, +-0.693546254847752670, -0.693582274585754830, -0.693618292589801570, -0.693654308859802280, -0.693690323395667270, -0.693726336197306730, -0.693762347264629930, -0.693798356597547410, +-0.693834364195968890, -0.693870370059804560, -0.693906374188964500, -0.693942376583358330, -0.693978377242896130, -0.694014376167488290, -0.694050373357044230, -0.694086368811474230, +-0.694122362530688370, -0.694158354514596510, -0.694194344763109150, -0.694230333276135590, -0.694266320053586460, -0.694302305095371270, -0.694338288401400330, -0.694374269971583580, +-0.694410249805831210, -0.694446227904053530, -0.694482204266160030, -0.694518178892060910, -0.694554151781666800, -0.694590122934886870, -0.694626092351631640, -0.694662060031811300, +-0.694698025975335700, -0.694733990182115350, -0.694769952652059760, -0.694805913385079240, -0.694841872381084300, -0.694877829639984230, -0.694913785161689780, -0.694949738946110780, +-0.694985690993157770, -0.695021641302740130, -0.695057589874768510, -0.695093536709153190, -0.695129481805803700, -0.695165425164630420, -0.695201366785543670, -0.695237306668453510, +-0.695273244813270350, -0.695309181219903820, -0.695345115888264310, -0.695381048818262350, -0.695416980009807450, -0.695452909462810130, -0.695488837177180460, -0.695524763152828740, +-0.695560687389665370, -0.695596609887600080, -0.695632530646543180, -0.695668449666405290, -0.695704366947095920, -0.695740282488525710, -0.695776196290604720, -0.695812108353243590, +-0.695848018676351820, -0.695883927259840050, -0.695919834103618800, -0.695955739207597680, -0.695991642571687220, -0.696027544195797490, -0.696063444079839110, -0.696099342223722270, +-0.696135238627356820, -0.696171133290653280, -0.696207026213522260, -0.696242917395873300, -0.696278806837617110, -0.696314694538663790, -0.696350580498923840, -0.696386464718307780, +-0.696422347196725130, -0.696458227934086960, -0.696494106930302890, -0.696529984185283670, -0.696565859698939360, -0.696601733471180480, -0.696637605501917560, -0.696673475791060310, +-0.696709344338519390, -0.696745211144205400, -0.696781076208027980, -0.696816939529897980, -0.696852801109725580, -0.696888660947421300, -0.696924519042895540, -0.696960375396058260, +-0.696996230006819980, -0.697032082875091440, -0.697067934000782370, -0.697103783383803520, -0.697139631024065180, -0.697175476921478080, -0.697211321075951960, -0.697247163487397570, +-0.697283004155725530, -0.697318843080845690, -0.697354680262668780, -0.697390515701105220, -0.697426349396065290, -0.697462181347459740, -0.697498011555198530, -0.697533840019192270, +-0.697569666739351720, -0.697605491715586610, -0.697641314947807900, -0.697677136435925770, -0.697712956179850960, -0.697748774179493990, -0.697784590434764710, -0.697820404945574290, +-0.697856217711832590, -0.697892028733450350, -0.697927838010338090, -0.697963645542406090, -0.697999451329565420, -0.698035255371725730, -0.698071057668797960, -0.698106858220692850, +-0.698142657027320150, -0.698178454088590920, -0.698214249404415570, -0.698250042974704610, -0.698285834799368790, -0.698321624878318170, -0.698357413211463380, -0.698393199798715390, +-0.698428984639984150, -0.698464767735180400, -0.698500549084214770, -0.698536328686997780, -0.698572106543440150, -0.698607882653452080, -0.698643657016944530, -0.698679429633827560, +-0.698715200504012040, -0.698750969627408570, -0.698786737003927570, -0.698822502633480000, -0.698858266515975930, -0.698894028651326330, -0.698929789039441810, -0.698965547680232560, +-0.699001304573609320, -0.699037059719482930, -0.699072813117763920, -0.699108564768363140, -0.699144314671190650, -0.699180062826157300, -0.699215809233174170, -0.699251553892151320, +-0.699287296802999390, -0.699323037965629330, -0.699358777379952000, -0.699394515045877350, -0.699430250963316460, -0.699465985132180170, -0.699501717552378670, -0.699537448223822910, +-0.699573177146423530, -0.699608904320091150, -0.699644629744736850, -0.699680353420270680, -0.699716075346603520, -0.699751795523646640, -0.699787513951309890, -0.699823230629504360, +-0.699858945558140770, -0.699894658737129750, -0.699930370166382380, -0.699966079845808940, -0.700001787775320410, -0.700037493954827280, -0.700073198384240310, -0.700108901063470350, +-0.700144601992428120, -0.700180301171024700, -0.700215998599170280, -0.700251694276775800, -0.700287388203752470, -0.700323080380010340, -0.700358770805460500, -0.700394459480013660, +-0.700430146403580700, -0.700465831576072780, -0.700501514997399880, -0.700537196667473160, -0.700572876586203820, -0.700608554753502030, -0.700644231169278760, -0.700679905833444970, +-0.700715578745911730, -0.700751249906589210, -0.700786919315388610, -0.700822586972220880, -0.700858252876996550, -0.700893917029626450, -0.700929579430021650, -0.700965240078092800, +-0.701000898973751290, -0.701036556116907180, -0.701072211507471680, -0.701107865145355950, -0.701143517030470180, -0.701179167162725660, -0.701214815542033240, -0.701250462168303780, +-0.701286107041448450, -0.701321750161377650, -0.701357391528002360, -0.701393031141233970, -0.701428669000982660, -0.701464305107159620, -0.701499939459675930, -0.701535572058442640, +-0.701571202903370050, -0.701606831994369570, -0.701642459331352280, -0.701678084914228560, -0.701713708742909500, -0.701749330817306280, -0.701784951137329750, -0.701820569702891080, +-0.701856186513900690, -0.701891801570269870, -0.701927414871909790, -0.701963026418730980, -0.701998636210644510, -0.702034244247561560, -0.702069850529392860, -0.702105455056049930, +-0.702141057827442960, -0.702176658843483790, -0.702212258104082610, -0.702247855609150710, -0.702283451358599260, -0.702319045352339130, -0.702354637590281720, -0.702390228072337420, +-0.702425816798417530, -0.702461403768433360, -0.702496988982295510, -0.702532572439915070, -0.702568154141203220, -0.702603734086071020, -0.702639312274429770, -0.702674888706189880, +-0.702710463381262860, -0.702746036299559900, -0.702781607460991610, -0.702817176865469300, -0.702852744512904030, -0.702888310403207210, -0.702923874536289350, -0.702959436912061750, +-0.702994997530435820, -0.703030556391322170, -0.703066113494632110, -0.703101668840276810, -0.703137222428167230, -0.703172774258215010, -0.703208324330330430, -0.703243872644425120, +-0.703279419200410480, -0.703314963998196930, -0.703350507037695970, -0.703386048318818680, -0.703421587841476350, -0.703457125605580380, -0.703492661611041180, -0.703528195857770380, +-0.703563728345679480, -0.703599259074678910, -0.703634788044680160, -0.703670315255594430, -0.703705840707333220, -0.703741364399807170, -0.703776886332927560, -0.703812406506606150, +-0.703847924920753430, -0.703883441575280930, -0.703918956470099720, -0.703954469605121200, -0.703989980980256780, -0.704025490595417080, -0.704060998450513730, -0.704096504545458140, +-0.704132008880160920, -0.704167511454533710, -0.704203012268487800, -0.704238511321934270, -0.704274008614784840, -0.704309504146950040, -0.704344997918341820, -0.704380489928870810, +-0.704415980178448530, -0.704451468666986270, -0.704486955394395430, -0.704522440360587420, -0.704557923565473090, -0.704593405008963840, -0.704628884690971510, -0.704664362611406640, +-0.704699838770180830, -0.704735313167205390, -0.704770785802391720, -0.704806256675651330, -0.704841725786895080, -0.704877193136034360, -0.704912658722981140, -0.704948122547645940, +-0.704983584609940370, -0.705019044909775850, -0.705054503447064000, -0.705089960221715660, -0.705125415233642360, -0.705160868482755830, -0.705196319968966810, -0.705231769692187040, +-0.705267217652327800, -0.705302663849300520, -0.705338108283017020, -0.705373550953387830, -0.705408991860324800, -0.705444431003739550, -0.705479868383542930, -0.705515303999646570, +-0.705550737851962100, -0.705586169940400690, -0.705621600264874190, -0.705657028825293350, -0.705692455621569900, -0.705727880653615690, -0.705763303921341460, -0.705798725424658930, +-0.705834145163479640, -0.705869563137715320, -0.705904979347276810, -0.705940393792075740, -0.705975806472024070, -0.706011217387032540, -0.706046626537013000, -0.706082033921876850, +-0.706117439541535610, -0.706152843395901120, -0.706188245484884240, -0.706223645808396690, -0.706259044366350340, -0.706294441158656030, -0.706329836185225710, -0.706365229445970690, +-0.706400620940802690, -0.706436010669633460, -0.706471398632373850, -0.706506784828936030, -0.706542169259230970, -0.706577551923170510, -0.706612932820666170, -0.706648311951629470, +-0.706683689315972250, -0.706719064913605590, -0.706754438744441220, -0.706789810808391090, -0.706825181105366070, -0.706860549635278220, -0.706895916398038840, -0.706931281393559760, +-0.706966644621752740, -0.707002006082528830, -0.707037365775799900, -0.707072723701477890, -0.707108079859473770, -0.707143434249699390, -0.707178786872066480, -0.707214137726486890, +-0.707249486812871590, -0.707284834131132630, -0.707320179681181880, -0.707355523462930400, -0.707390865476290150, -0.707426205721172650, -0.707461544197489630, -0.707496880905153170, +-0.707532215844074110, -0.707567549014164520, -0.707602880415336370, -0.707638210047500720, -0.707673537910569530, -0.707708864004454540, -0.707744188329067380, -0.707779510884319900, +-0.707814831670123490, -0.707850150686390010, -0.707885467933031420, -0.707920783409958900, -0.707956097117084400, -0.707991409054319680, -0.708026719221576670, -0.708062027618766580, +-0.708097334245801460, -0.708132639102593280, -0.708167942189053210, -0.708203243505093230, -0.708238543050625170, -0.708273840825560770, -0.708309136829812110, -0.708344431063290260, +-0.708379723525907280, -0.708415014217575360, -0.708450303138205670, -0.708485590287710190, -0.708520875666000640, -0.708556159272988980, -0.708591441108587180, -0.708626721172706530, +-0.708661999465259320, -0.708697275986156840, -0.708732550735311160, -0.708767823712634140, -0.708803094918037500, -0.708838364351433440, -0.708873632012733120, -0.708908897901848860, +-0.708944162018692590, -0.708979424363175630, -0.709014684935210030, -0.709049943734707750, -0.709085200761580660, -0.709120456015740810, -0.709155709497099610, -0.709190961205569010, +-0.709226211141061440, -0.709261459303487940, -0.709296705692760820, -0.709331950308791930, -0.709367193151493550, -0.709402434220776760, -0.709437673516553960, -0.709472911038737330, +-0.709508146787237950, -0.709543380761968320, -0.709578612962840300, -0.709613843389765630, -0.709649072042656700, -0.709684298921424820, -0.709719524025982150, -0.709754747356240890, +-0.709789968912112550, -0.709825188693509300, -0.709860406700343120, -0.709895622932525840, -0.709930837389969870, -0.709966050072586510, -0.710001260980288260, -0.710036470112986540, +-0.710071677470593740, -0.710106883053021720, -0.710142086860182430, -0.710177288891988170, -0.710212489148350560, -0.710247687629181670, -0.710282884334393790, -0.710318079263898450, +-0.710353272417607930, -0.710388463795434190, -0.710423653397289300, -0.710458841223085560, -0.710494027272734470, -0.710529211546148340, -0.710564394043239340, -0.710599574763919220, +-0.710634753708100030, -0.710669930875694080, -0.710705106266613540, -0.710740279880769820, -0.710775451718075550, -0.710810621778442900, -0.710845790061783500, -0.710880956568009540, +-0.710916121297033190, -0.710951284248766520, -0.710986445423121950, -0.711021604820010870, -0.711056762439345900, -0.711091918281039350, -0.711127072345002610, -0.711162224631148200, +-0.711197375139388300, -0.711232523869634870, -0.711267670821800540, -0.711302815995796700, -0.711337959391535770, -0.711373101008930250, -0.711408240847891780, -0.711443378908332540, +-0.711478515190165030, -0.711513649693301440, -0.711548782417653400, -0.711583913363133420, -0.711619042529654020, -0.711654169917126600, -0.711689295525463890, -0.711724419354577750, +-0.711759541404380800, -0.711794661674785110, -0.711829780165702530, -0.711864896877045460, -0.711900011808726530, -0.711935124960657250, -0.711970236332750140, -0.712005345924917380, +-0.712040453737071370, -0.712075559769124510, -0.712110664020988440, -0.712145766492575990, -0.712180867183798800, -0.712215966094569500, -0.712251063224800250, -0.712286158574403250, +-0.712321252143291340, -0.712356343931375810, -0.712391433938569520, -0.712426522164784970, -0.712461608609933790, -0.712496693273928620, -0.712531776156681620, -0.712566857258105200, +-0.712601936578111990, -0.712637014116613620, -0.712672089873522710, -0.712707163848751880, -0.712742236042212870, -0.712777306453818320, -0.712812375083480390, -0.712847441931111940, +-0.712882506996624480, -0.712917570279930750, -0.712952631780943370, -0.712987691499574190, -0.713022749435735740, -0.713057805589340510, -0.713092859960300700, -0.713127912548529030, +-0.713162963353937250, -0.713198012376438100, -0.713233059615944190, -0.713268105072367380, -0.713303148745620290, -0.713338190635615320, -0.713373230742264890, -0.713408269065481710, +-0.713443305605177440, -0.713478340361265010, -0.713513373333657050, -0.713548404522265310, -0.713583433927002520, -0.713618461547781190, -0.713653487384513950, -0.713688511437112760, +-0.713723533705490350, -0.713758554189559250, -0.713793572889231620, -0.713828589804419880, -0.713863604935036870, -0.713898618280994770, -0.713933629842206320, -0.713968639618583590, +-0.714003647610039200, -0.714038653816486120, -0.714073658237835970, -0.714108660874001710, -0.714143661724895850, -0.714178660790430800, -0.714213658070519400, -0.714248653565073610, +-0.714283647274006390, -0.714318639197229820, -0.714353629334656630, -0.714388617686199320, -0.714423604251770540, -0.714458589031283120, -0.714493572024648800, -0.714528553231780550, +-0.714563532652591200, -0.714598510286992840, -0.714633486134898080, -0.714668460196219660, -0.714703432470870090, -0.714738402958762230, -0.714773371659808030, -0.714808338573920450, +-0.714843303701012340, -0.714878267040995660, -0.714913228593783370, -0.714948188359287860, -0.714983146337422330, -0.715018102528098500, -0.715053056931229450, -0.715088009546728130, +-0.715122960374506400, -0.715157909414477320, -0.715192856666553520, -0.715227802130647410, -0.715262745806672260, -0.715297687694539830, -0.715332627794163290, -0.715367566105455490, +-0.715402502628328390, -0.715437437362695050, -0.715472370308468110, -0.715507301465560190, -0.715542230833884460, -0.715577158413352790, -0.715612084203878230, -0.715647008205373640, +-0.715681930417751410, -0.715716850840924290, -0.715751769474805010, -0.715786686319306640, -0.715821601374341250, -0.715856514639821810, -0.715891426115661370, -0.715926335801772120, +-0.715961243698067020, -0.715996149804458910, -0.716031054120860320, -0.716065956647184310, -0.716100857383343280, -0.716135756329250080, -0.716170653484817680, -0.716205548849958460, +-0.716240442424585290, -0.716275334208611000, -0.716310224201948450, -0.716345112404510600, -0.716379998816209730, -0.716414883436959030, -0.716449766266670900, -0.716484647305258400, +-0.716519526552634290, -0.716554404008711290, -0.716589279673402580, -0.716624153546620460, -0.716659025628277880, -0.716693895918288030, -0.716728764416563190, -0.716763631123016330, +-0.716798496037560520, -0.716833359160108370, -0.716868220490573190, -0.716903080028867160, -0.716937937774903440, -0.716972793728595130, -0.717007647889854600, -0.717042500258594840, +-0.717077350834728900, -0.717112199618169850, -0.717147046608830110, -0.717181891806622620, -0.717216735211460790, -0.717251576823256800, -0.717286416641923830, -0.717321254667374840, +-0.717356090899522790, -0.717390925338280640, -0.717425757983561010, -0.717460588835276970, -0.717495417893341700, -0.717530245157667610, -0.717565070628167990, -0.717599894304755680, +-0.717634716187343540, -0.717669536275844950, -0.717704354570172230, -0.717739171070238550, -0.717773985775957300, -0.717808798687240790, -0.717843609804002300, -0.717878419126154800, +-0.717913226653611570, -0.717948032386284910, -0.717982836324088210, -0.718017638466934670, -0.718052438814736790, -0.718087237367407760, -0.718122034124860640, -0.718156829087008510, +-0.718191622253764540, -0.718226413625041250, -0.718261203200751930, -0.718295990980809870, -0.718330776965127480, -0.718365561153618270, -0.718400343546195090, -0.718435124142771110, +-0.718469902943259520, -0.718504679947572940, -0.718539455155624900, -0.718574228567328000, -0.718609000182595440, -0.718643770001340500, -0.718678538023476030, -0.718713304248915550, +-0.718748068677571570, -0.718782831309357380, -0.718817592144186390, -0.718852351181971110, -0.718887108422624930, -0.718921863866061050, -0.718956617512192420, -0.718991369360932660, +-0.719026119412194080, -0.719060867665890280, -0.719095614121934570, -0.719130358780239560, -0.719165101640718560, -0.719199842703284850, -0.719234581967851950, -0.719269319434332250, +-0.719304055102639170, -0.719338788972686330, -0.719373521044386120, -0.719408251317652070, -0.719442979792397570, -0.719477706468535480, -0.719512431345979530, -0.719547154424642120, +-0.719581875704436880, -0.719616595185277210, -0.719651312867075840, -0.719686028749745970, -0.719720742833201200, -0.719755455117354610, -0.719790165602119610, -0.719824874287408930, +-0.719859581173136310, -0.719894286259214480, -0.719928989545556950, -0.719963691032076800, -0.719998390718687540, -0.720033088605302680, -0.720067784691834740, -0.720102478978197350, +-0.720137171464304000, -0.720171862150067450, -0.720206551035401210, -0.720241238120218670, -0.720275923404433030, -0.720310606887957890, -0.720345288570705790, -0.720379968452590670, +-0.720414646533525830, -0.720449322813424110, -0.720483997292199030, -0.720518669969763880, -0.720553340846032510, -0.720588009920917430, -0.720622677194332370, -0.720657342666190860, +-0.720692006336405620, -0.720726668204890510, -0.720761328271558700, -0.720795986536323490, -0.720830642999098710, -0.720865297659797010, -0.720899950518332000, -0.720934601574617420, +-0.720969250828566110, -0.721003898280091590, -0.721038543929107380, -0.721073187775526760, -0.721107829819263470, -0.721142470060230470, -0.721177108498341160, -0.721211745133509390, +-0.721246379965647890, -0.721281012994670510, -0.721315644220490660, -0.721350273643021960, -0.721384901262177140, -0.721419527077870270, -0.721454151090014760, -0.721488773298523570, +-0.721523393703310530, -0.721558012304288840, -0.721592629101372230, -0.721627244094474430, -0.721661857283508180, -0.721696468668387210, -0.721731078249025380, -0.721765686025335640, +-0.721800291997231610, -0.721834896164626820, -0.721869498527434870, -0.721904099085569410, -0.721938697838943490, -0.721973294787471080, -0.722007889931065130, -0.722042483269639380, +-0.722077074803107570, -0.722111664531382870, -0.722146252454379580, -0.722180838572010100, -0.722215422884188610, -0.722250005390828950, -0.722284586091843980, -0.722319164987147430, +-0.722353742076653040, -0.722388317360274200, -0.722422890837924990, -0.722457462509518140, -0.722492032374967730, -0.722526600434187590, -0.722561166687090580, -0.722595731133590550, +-0.722630293773601330, -0.722664854607036670, -0.722699413633809410, -0.722733970853833840, -0.722768526267023480, -0.722803079873291620, -0.722837631672551990, -0.722872181664718340, +-0.722906729849704170, -0.722941276227423550, -0.722975820797789330, -0.723010363560715570, -0.723044904516116360, -0.723079443663904420, -0.723113981003993930, -0.723148516536298520, +-0.723183050260731710, -0.723217582177207770, -0.723252112285639350, -0.723286640585940830, -0.723321167078025960, -0.723355691761807810, -0.723390214637200430, -0.723424735704117580, +-0.723459254962473210, -0.723493772412180380, -0.723528288053153060, -0.723562801885305310, -0.723597313908550310, -0.723631824122802030, -0.723666332527974190, -0.723700839123980530, +-0.723735343910735020, -0.723769846888150940, -0.723804348056142130, -0.723838847414622900, -0.723873344963506080, -0.723907840702705970, -0.723942334632136310, -0.723976826751710710, +-0.724011317061343470, -0.724045805560947550, -0.724080292250437460, -0.724114777129726270, -0.724149260198728160, -0.724183741457356980, -0.724218220905526340, -0.724252698543150550, +-0.724287174370142670, -0.724321648386416770, -0.724356120591887140, -0.724390590986466850, -0.724425059570070200, -0.724459526342610790, -0.724493991304002600, -0.724528454454159700, +-0.724562915792995480, -0.724597375320423900, -0.724631833036359140, -0.724666288940714500, -0.724700743033404260, -0.724735195314341940, -0.724769645783442160, -0.724804094440617890, +-0.724838541285783400, -0.724872986318852770, -0.724907429539739410, -0.724941870948357490, -0.724976310544620860, -0.725010748328443590, -0.725045184299739630, -0.725079618458422390, +-0.725114050804406160, -0.725148481337605010, -0.725182910057932450, -0.725217336965302660, -0.725251762059629490, -0.725286185340826780, -0.725320606808809050, -0.725355026463489480, +-0.725389444304782360, -0.725423860332601870, -0.725458274546861510, -0.725492686947475370, -0.725527097534357620, -0.725561506307422330, -0.725595913266583010, -0.725630318411753960, +-0.725664721742849350, -0.725699123259782590, -0.725733522962468180, -0.725767920850819760, -0.725802316924751610, -0.725836711184178030, -0.725871103629012420, -0.725905494259168950, +-0.725939883074562140, -0.725974270075105180, -0.726008655260712680, -0.726043038631298380, -0.726077420186776570, -0.726111799927061650, -0.726146177852066700, -0.726180553961706780, +-0.726214928255895060, -0.726249300734546080, -0.726283671397573770, -0.726318040244892440, -0.726352407276416150, -0.726386772492058630, -0.726421135891734180, -0.726455497475357200, +-0.726489857242841100, -0.726524215194100380, -0.726558571329049220, -0.726592925647601470, -0.726627278149671870, -0.726661628835173710, -0.726695977704021390, -0.726730324756129530, +-0.726764669991411540, -0.726799013409781920, -0.726833355011154650, -0.726867694795444440, -0.726902032762564600, -0.726936368912429630, -0.726970703244954050, -0.727005035760051490, +-0.727039366457636340, -0.727073695337622670, -0.727108022399924890, -0.727142347644457290, -0.727176671071133600, -0.727210992679868110, -0.727245312470575440, -0.727279630443169340, +-0.727313946597563990, -0.727348260933673880, -0.727382573451413110, -0.727416884150696160, -0.727451193031436680, -0.727485500093549290, -0.727519805336948490, -0.727554108761547800, +-0.727588410367261850, -0.727622710154004810, -0.727657008121691320, -0.727691304270235100, -0.727725598599550550, -0.727759891109552300, -0.727794181800154090, -0.727828470671270320, +-0.727862757722815500, -0.727897042954703700, -0.727931326366849650, -0.727965607959166870, -0.727999887731570210, -0.728034165683974050, -0.728068441816292160, -0.728102716128439240, +-0.728136988620329490, -0.728171259291877200, -0.728205528142997220, -0.728239795173603040, -0.728274060383609640, -0.728308323772930870, -0.728342585341481220, -0.728376845089175000, +-0.728411103015926820, -0.728445359121651200, -0.728479613406261880, -0.728513865869673370, -0.728548116511800630, -0.728582365332557380, -0.728616612331858040, -0.728650857509617220, +-0.728685100865749340, -0.728719342400168890, -0.728753582112789840, -0.728787820003526820, -0.728822056072294560, -0.728856290319006890, -0.728890522743578460, -0.728924753345923770, +-0.728958982125957440, -0.728993209083593330, -0.729027434218746270, -0.729061657531330900, -0.729095879021261160, -0.729130098688451690, -0.729164316532816880, -0.729198532554271360, +-0.729232746752729750, -0.729266959128106020, -0.729301169680314890, -0.729335378409271100, -0.729369585314888490, -0.729403790397082140, -0.729437993655766110, -0.729472195090855260, +-0.729506394702264080, -0.729540592489906660, -0.729574788453698050, -0.729608982593552220, -0.729643174909383910, -0.729677365401107720, -0.729711554068637970, -0.729745740911889710, +-0.729779925930776900, -0.729814109125214160, -0.729848290495116460, -0.729882470040397750, -0.729916647760972870, -0.729950823656756340, -0.729984997727662790, -0.730019169973606940, +-0.730053340394502980, -0.730087508990265640, -0.730121675760809890, -0.730155840706049550, -0.730190003825899710, -0.730224165120274770, -0.730258324589089680, -0.730292482232258620, +-0.730326638049696330, -0.730360792041317650, -0.730394944207036770, -0.730429094546768410, -0.730463243060427430, -0.730497389747928330, -0.730531534609186070, -0.730565677644114620, +-0.730599818852629030, -0.730633958234644170, -0.730668095790074080, -0.730702231518833730, -0.730736365420837860, -0.730770497496001090, -0.730804627744238380, -0.730838756165463790, +-0.730872882759592280, -0.730907007526538920, -0.730941130466217670, -0.730975251578543590, -0.731009370863431430, -0.731043488320796130, -0.731077603950551770, -0.731111717752613410, +-0.731145829726896120, -0.731179939873313980, -0.731214048191781930, -0.731248154682214710, -0.731282259344527170, -0.731316362178634270, -0.731350463184450180, -0.731384562361889980, +-0.731418659710868500, -0.731452755231300270, -0.731486848923100010, -0.731520940786182680, -0.731555030820463030, -0.731589119025855990, -0.731623205402275990, -0.731657289949638190, +-0.731691372667856890, -0.731725453556847150, -0.731759532616523820, -0.731793609846801640, -0.731827685247595780, -0.731861758818820320, -0.731895830560390540, -0.731929900472221510, +-0.731963968554227300, -0.731998034806323190, -0.732032099228424050, -0.732066161820444710, -0.732100222582300120, -0.732134281513904810, -0.732168338615173720, -0.732202393886022040, +-0.732236447326364170, -0.732270498936115180, -0.732304548715189910, -0.732338596663503650, -0.732372642780970470, -0.732406687067505780, -0.732440729523024640, -0.732474770147441330, +-0.732508808940671050, -0.732542845902628860, -0.732576881033229600, -0.732610914332388340, -0.732644945800019490, -0.732678975436038330, -0.732713003240359930, -0.732747029212898800, +-0.732781053353570130, -0.732815075662288870, -0.732849096138969760, -0.732883114783528300, -0.732917131595878790, -0.732951146575936410, -0.732985159723616440, -0.733019171038833290, +-0.733053180521502260, -0.733087188171538170, -0.733121193988856560, -0.733155197973371480, -0.733189200124998550, -0.733223200443652860, -0.733257198929248900, -0.733291195581701970, +-0.733325190400927030, -0.733359183386839030, -0.733393174539353490, -0.733427163858384580, -0.733461151343847930, -0.733495136995658600, -0.733529120813731120, -0.733563102797980870, +-0.733597082948322820, -0.733631061264672150, -0.733665037746944030, -0.733699012395053090, -0.733732985208914830, -0.733766956188443900, -0.733800925333555560, -0.733834892644164900, +-0.733868858120186980, -0.733902821761537210, -0.733936783568130190, -0.733970743539881120, -0.734004701676705510, -0.734038657978517860, -0.734072612445233470, -0.734106565076767640, +-0.734140515873035420, -0.734174464833952100, -0.734208411959432430, -0.734242357249391690, -0.734276300703745390, -0.734310242322408050, -0.734344182105295060, -0.734378120052321610, +-0.734412056163403100, -0.734445990438454270, -0.734479922877390390, -0.734513853480126990, -0.734547782246578800, -0.734581709176660990, -0.734615634270288980, -0.734649557527377820, +-0.734683478947843140, -0.734717398531599450, -0.734751316278562270, -0.734785232188647110, -0.734819146261768590, -0.734853058497842100, -0.734886968896783070, -0.734920877458506540, +-0.734954784182928140, -0.734988689069962400, -0.735022592119525030, -0.735056493331531560, -0.735090392705896490, -0.735124290242535450, -0.735158185941363620, -0.735192079802296620, +-0.735225971825249180, -0.735259862010136820, -0.735293750356875050, -0.735327636865378610, -0.735361521535563110, -0.735395404367343850, -0.735429285360636010, -0.735463164515355210, +-0.735497041831416290, -0.735530917308734770, -0.735564790947226270, -0.735598662746805410, -0.735632532707387930, -0.735666400828889120, -0.735700267111224270, -0.735734131554309110, +-0.735767994158058380, -0.735801854922387810, -0.735835713847212360, -0.735869570932447650, -0.735903426178009080, -0.735937279583811830, -0.735971131149771750, -0.736004980875803570, +-0.736038828761822810, -0.736072674807745410, -0.736106519013485890, -0.736140361378960220, -0.736174201904083560, -0.736208040588771430, -0.736241877432939450, -0.736275712436502580, +-0.736309545599376340, -0.736343376921476560, -0.736377206402717980, -0.736411034043016440, -0.736444859842287360, -0.736478683800446340, -0.736512505917408360, -0.736546326193089130, +-0.736580144627404400, -0.736613961220268900, -0.736647775971598580, -0.736681588881308860, -0.736715399949315120, -0.736749209175533220, -0.736783016559877880, -0.736816822102265070, +-0.736850625802610510, -0.736884427660829180, -0.736918227676836680, -0.736952025850548530, -0.736985822181880470, -0.737019616670748110, -0.737053409317066420, -0.737087200120751130, +-0.737120989081718190, -0.737154776199882460, -0.737188561475159760, -0.737222344907465740, -0.737256126496716120, -0.737289906242825870, -0.737323684145710920, -0.737357460205287030, +-0.737391234421469140, -0.737425006794173220, -0.737458777323314770, -0.737492546008809310, -0.737526312850572800, -0.737560077848520290, -0.737593841002567530, -0.737627602312630470, +-0.737661361778624180, -0.737695119400464390, -0.737728875178066850, -0.737762629111347050, -0.737796381200221060, -0.737830131444603850, -0.737863879844411490, -0.737897626399559140, +-0.737931371109962870, -0.737965113975538100, -0.737998854996200440, -0.738032594171866060, -0.738066331502449820, -0.738100066987867900, -0.738133800628036020, -0.738167532422869250, +-0.738201262372283780, -0.738234990476195120, -0.738268716734518990, -0.738302441147171250, -0.738336163714067180, -0.738369884435122750, -0.738403603310253900, -0.738437320339375700, +-0.738471035522404230, -0.738504748859255210, -0.738538460349844610, -0.738572169994087480, -0.738605877791900010, -0.738639583743198050, -0.738673287847896880, -0.738706990105912450, +-0.738740690517160630, -0.738774389081557010, -0.738808085799017800, -0.738841780669458050, -0.738875473692793830, -0.738909164868941200, -0.738942854197815360, -0.738976541679332470, +-0.739010227313408150, -0.739043911099958260, -0.739077593038898860, -0.739111273130145240, -0.739144951373613690, -0.739178627769219500, -0.739212302316878840, -0.739245975016507240, +-0.739279645868020860, -0.739313314871335560, -0.739346982026366620, -0.739380647333030330, -0.739414310791242760, -0.739447972400919080, -0.739481632161975380, -0.739515290074327700, +-0.739548946137891680, -0.739582600352583720, -0.739616252718318990, -0.739649903235013450, -0.739683551902583610, -0.739717198720944550, -0.739750843690012430, -0.739784486809703210, +-0.739818128079932860, -0.739851767500617430, -0.739885405071672330, -0.739919040793013960, -0.739952674664557720, -0.739986306686219790, -0.740019936857916120, -0.740053565179562560, +-0.740087191651075390, -0.740120816272369920, -0.740154439043362420, -0.740188059963969190, -0.740221679034105410, -0.740255296253687580, -0.740288911622631330, -0.740322525140852950, +-0.740356136808268510, -0.740389746624793400, -0.740423354590343920, -0.740456960704836350, -0.740490564968186100, -0.740524167380309460, -0.740557767941122380, -0.740591366650541150, +-0.740624963508481280, -0.740658558514858960, -0.740692151669590570, -0.740725742972591420, -0.740759332423778010, -0.740792920023066180, -0.740826505770372120, -0.740860089665612120, +-0.740893671708701460, -0.740927251899556770, -0.740960830238094230, -0.740994406724229230, -0.741027981357878280, -0.741061554138957360, -0.741095125067382510, -0.741128694143070140, +-0.741162261365935880, -0.741195826735896120, -0.741229390252866600, -0.741262951916763500, -0.741296511727503100, -0.741330069685001370, -0.741363625789174810, -0.741397180039938820, +-0.741430732437210030, -0.741464282980904500, -0.741497831670938080, -0.741531378507227060, -0.741564923489687610, -0.741598466618235810, -0.741632007892788160, -0.741665547313260290, +-0.741699084879568480, -0.741732620591629250, -0.741766154449358120, -0.741799686452671690, -0.741833216601486050, -0.741866744895717580, -0.741900271335282020, -0.741933795920095670, +-0.741967318650075260, -0.742000839525136180, -0.742034358545195060, -0.742067875710167970, -0.742101391019971300, -0.742134904474521350, -0.742168416073733850, -0.742201925817525420, +-0.742235433705812350, -0.742268939738510490, -0.742302443915536130, -0.742335946236805770, -0.742369446702235480, -0.742402945311742000, -0.742436442065240840, -0.742469936962648510, +-0.742503430003881640, -0.742536921188855840, -0.742570410517487840, -0.742603897989693730, -0.742637383605390220, -0.742670867364493060, -0.742704349266918530, -0.742737829312583590, +-0.742771307501403630, -0.742804783833295510, -0.742838258308175400, -0.742871730925959710, -0.742905201686564930, -0.742938670589906810, -0.742972137635902090, -0.743005602824467260, +-0.743039066155518180, -0.743072527628971360, -0.743105987244743300, -0.743139445002750200, -0.743172900902908880, -0.743206354945134870, -0.743239807129345340, -0.743273257455456140, +-0.743306705923383550, -0.743340152533044310, -0.743373597284354700, -0.743407040177231470, -0.743440481211590230, -0.743473920387347720, -0.743507357704420890, -0.743540793162725260, +-0.743574226762177660, -0.743607658502694500, -0.743641088384192180, -0.743674516406587440, -0.743707942569796220, -0.743741366873734930, -0.743774789318320640, -0.743808209903469190, +-0.743841628629097080, -0.743875045495120850, -0.743908460501457420, -0.743941873648022560, -0.743975284934732860, -0.744008694361505410, -0.744042101928255820, -0.744075507634901050, +-0.744108911481357490, -0.744142313467541670, -0.744175713593370200, -0.744209111858759380, -0.744242508263625700, -0.744275902807886030, -0.744309295491456300, -0.744342686314253270, +-0.744376075276193650, -0.744409462377193740, -0.744442847617170500, -0.744476230996039880, -0.744509612513718720, -0.744542992170123650, -0.744576369965170960, -0.744609745898777260, +-0.744643119970859300, -0.744676492181333800, -0.744709862530116730, -0.744743231017125030, -0.744776597642275550, -0.744809962405484250, -0.744843325306668080, -0.744876686345743670, +-0.744910045522627410, -0.744943402837236370, -0.744976758289486510, -0.745010111879294780, -0.745043463606578140, -0.745076813471252430, -0.745110161473234720, -0.745143507612441640, +-0.745176851888789790, -0.745210194302196150, -0.745243534852576660, -0.745276873539848510, -0.745310210363928080, -0.745343545324732020, -0.745376878422177150, -0.745410209656180100, +-0.745443539026657720, -0.745476866533526290, -0.745510192176702670, -0.745543515956103910, -0.745576837871645970, -0.745610157923245920, -0.745643476110820600, -0.745676792434286530, +-0.745710106893560760, -0.745743419488559490, -0.745776730219199660, -0.745810039085398220, -0.745843346087071370, -0.745876651224136270, -0.745909954496509540, -0.745943255904108150, +-0.745976555446848270, -0.746009853124647070, -0.746043148937421520, -0.746076442885087900, -0.746109734967563050, -0.746143025184763940, -0.746176313536607180, -0.746209600023010070, +-0.746242884643888550, -0.746276167399159810, -0.746309448288741020, -0.746342727312548250, -0.746376004470498790, -0.746409279762509150, -0.746442553188496390, -0.746475824748377480, +-0.746509094442068810, -0.746542362269487340, -0.746575628230550240, -0.746608892325173910, -0.746642154553275210, -0.746675414914771180, -0.746708673409578920, -0.746741930037614690, +-0.746775184798795570, -0.746808437693038840, -0.746841688720260690, -0.746874937880378290, -0.746908185173308590, -0.746941430598968450, -0.746974674157275030, -0.747007915848144630, +-0.747041155671494430, -0.747074393627241480, -0.747107629715302420, -0.747140863935594310, -0.747174096288034000, -0.747207326772538430, -0.747240555389024900, -0.747273782137409580, +-0.747307007017610100, -0.747340230029542860, -0.747373451173125040, -0.747406670448273690, -0.747439887854905560, -0.747473103392937930, -0.747506317062287430, -0.747539528862871010, +-0.747572738794606060, -0.747605946857409000, -0.747639153051197100, -0.747672357375887330, -0.747705559831396640, -0.747738760417642310, -0.747771959134540860, -0.747805155982009360, +-0.747838350959965430, -0.747871544068325230, -0.747904735307006190, -0.747937924675925350, -0.747971112175000010, -0.748004297804146570, -0.748037481563282310, -0.748070663452324760, +-0.748103843471190190, -0.748137021619796010, -0.748170197898059270, -0.748203372305897170, -0.748236544843226770, -0.748269715509964680, -0.748302884306028430, -0.748336051231335290, +-0.748369216285801660, -0.748402379469344960, -0.748435540781882350, -0.748468700223330900, -0.748501857793608010, -0.748535013492630070, -0.748568167320314730, -0.748601319276579140, +-0.748634469361340040, -0.748667617574514720, -0.748700763916020470, -0.748733908385774470, -0.748767050983693450, -0.748800191709694810, -0.748833330563695940, -0.748866467545613590, +-0.748899602655364930, -0.748932735892867350, -0.748965867258037930, -0.748998996750794070, -0.749032124371052490, -0.749065250118730490, -0.749098373993745680, -0.749131495996014810, +-0.749164616125455040, -0.749197734381983780, -0.749230850765518100, -0.749263965275975720, -0.749297077913273050, -0.749330188677328040, -0.749363297568057200, -0.749396404585378150, +-0.749429509729208080, -0.749462612999464260, -0.749495714396064220, -0.749528813918924560, -0.749561911567962920, -0.749595007343096700, -0.749628101244242730, -0.749661193271318420, +-0.749694283424241270, -0.749727371702928360, -0.749760458107297300, -0.749793542637264720, -0.749826625292748460, -0.749859706073665810, -0.749892784979933610, -0.749925862011469490, +-0.749958937168190620, -0.749992010450014850, -0.750025081856858680, -0.750058151388639740, -0.750091219045275760, -0.750124284826683470, -0.750157348732780500, -0.750190410763484140, +-0.750223470918711670, -0.750256529198380930, -0.750289585602408550, -0.750322640130712150, -0.750355692783209460, -0.750388743559817220, -0.750421792460453150, -0.750454839485034660, +-0.750487884633478930, -0.750520927905703910, -0.750553969301626210, -0.750587008821163910, -0.750620046464233860, -0.750653082230753550, -0.750686116120640730, -0.750719148133812460, +-0.750752178270186700, -0.750785206529680060, -0.750818232912210610, -0.750851257417695650, -0.750884280046052450, -0.750917300797198430, -0.750950319671051190, -0.750983336667528150, +-0.751016351786547020, -0.751049365028024880, -0.751082376391879250, -0.751115385878027840, -0.751148393486387730, -0.751181399216876770, -0.751214403069412230, -0.751247405043911960, +-0.751280405140292820, -0.751313403358472740, -0.751346399698369470, -0.751379394159899850, -0.751412386742981830, -0.751445377447532700, -0.751478366273470310, -0.751511353220712160, +-0.751544338289175330, -0.751577321478777760, -0.751610302789437080, -0.751643282221070460, -0.751676259773595530, -0.751709235446930020, -0.751742209240991330, -0.751775181155697410, +-0.751808151190965330, -0.751841119346712940, -0.751874085622857850, -0.751907050019317460, -0.751940012536009280, -0.751972973172851170, -0.752005931929760840, -0.752038888806655480, +-0.752071843803452820, -0.752104796920070930, -0.752137748156426640, -0.752170697512438040, -0.752203644988022720, -0.752236590583098220, -0.752269534297582590, -0.752302476131392780, +-0.752335416084446870, -0.752368354156662590, -0.752401290347957220, -0.752434224658248610, -0.752467157087454490, -0.752500087635492370, -0.752533016302280310, -0.752565943087735610, +-0.752598867991776110, -0.752631791014319320, -0.752664712155282970, -0.752697631414584900, -0.752730548792142740, -0.752763464287874440, -0.752796377901697290, -0.752829289633529020, +-0.752862199483287920, -0.752895107450891050, -0.752928013536256380, -0.752960917739301740, -0.752993820059944750, -0.753026720498103490, -0.753059619053695120, -0.753092515726637710, +-0.753125410516849450, -0.753158303424247280, -0.753191194448749270, -0.753224083590273370, -0.753256970848737440, -0.753289856224058860, -0.753322739716155710, -0.753355621324945930, +-0.753388501050346830, -0.753421378892276450, -0.753454254850652650, -0.753487128925393160, -0.753520001116416150, -0.753552871423638910, -0.753585739846979520, -0.753618606386355920, +-0.753651471041685620, -0.753684333812886690, -0.753717194699876750, -0.753750053702573970, -0.753782910820896320, -0.753815766054761080, -0.753848619404086540, -0.753881470868790540, +-0.753914320448790700, -0.753947168144005090, -0.753980013954351440, -0.754012857879748140, -0.754045699920112390, -0.754078540075362350, -0.754111378345416310, -0.754144214730191440, +-0.754177049229606160, -0.754209881843578180, -0.754242712572025460, -0.754275541414866300, -0.754308368372017980, -0.754341193443398780, -0.754374016628926890, -0.754406837928519590, +-0.754439657342095280, -0.754472474869571700, -0.754505290510867120, -0.754538104265899510, -0.754570916134586380, -0.754603726116846120, -0.754636534212596350, -0.754669340421755260, +-0.754702144744240800, -0.754734947179971030, -0.754767747728864120, -0.754800546390837600, -0.754833343165809630, -0.754866138053698620, -0.754898931054422070, -0.754931722167898060, +-0.754964511394044860, -0.754997298732780320, -0.755030084184022840, -0.755062867747689830, -0.755095649423699670, -0.755128429211970760, -0.755161207112420410, -0.755193983124966990, +-0.755226757249528700, -0.755259529486023710, -0.755292299834369740, -0.755325068294484980, -0.755357834866287710, -0.755390599549695670, -0.755423362344627150, -0.755456123251000200, +-0.755488882268732900, -0.755521639397743750, -0.755554394637950160, -0.755587147989270620, -0.755619899451623560, -0.755652649024926350, -0.755685396709097510, -0.755718142504055330, +-0.755750886409717660, -0.755783628426003110, -0.755816368552829190, -0.755849106790114300, -0.755881843137776950, -0.755914577595734770, -0.755947310163906150, -0.755980040842209160, +-0.756012769630562410, -0.756045496528883530, -0.756078221537090810, -0.756110944655102870, -0.756143665882837210, -0.756176385220212350, -0.756209102667146690, -0.756241818223558180, +-0.756274531889365440, -0.756307243664485980, -0.756339953548838540, -0.756372661542341510, -0.756405367644912510, -0.756438071856470050, -0.756470774176932430, -0.756503474606217810, +-0.756536173144244820, -0.756568869790931190, -0.756601564546195650, -0.756634257409955930, -0.756666948382130560, -0.756699637462637800, -0.756732324651395950, -0.756765009948323520, +-0.756797693353338240, -0.756830374866358850, -0.756863054487303840, -0.756895732216090740, -0.756928408052638390, -0.756961081996865070, -0.756993754048689070, -0.757026424208028900, +-0.757059092474802410, -0.757091758848928100, -0.757124423330324810, -0.757157085918910070, -0.757189746614602700, -0.757222405417320890, -0.757255062326983470, -0.757287717343507970, +-0.757320370466813220, -0.757353021696817840, -0.757385671033439680, -0.757418318476597240, -0.757450964026209150, -0.757483607682193470, -0.757516249444469160, -0.757548889312953940, +-0.757581527287566450, -0.757614163368225510, -0.757646797554848870, -0.757679429847355150, -0.757712060245662840, -0.757744688749690480, -0.757777315359356660, -0.757809940074579250, +-0.757842562895276960, -0.757875183821368650, -0.757907802852771930, -0.757940419989405870, -0.757973035231188640, -0.758005648578039090, -0.758038260029875290, -0.758070869586615740, +-0.758103477248179280, -0.758136083014483870, -0.758168686885448250, -0.758201288860990920, -0.758233888941030390, -0.758266487125485390, -0.758299083414273880, -0.758331677807314700, +-0.758364270304526580, -0.758396860905827470, -0.758429449611136340, -0.758462036420371470, -0.758494621333451470, -0.758527204350295300, -0.758559785470820810, -0.758592364694947060, +-0.758624942022592230, -0.758657517453675050, -0.758690090988114020, -0.758722662625827770, -0.758755232366735140, -0.758787800210754090, -0.758820366157803680, -0.758852930207802530, +-0.758885492360668820, -0.758918052616321390, -0.758950610974678750, -0.758983167435659630, -0.759015721999182880, -0.759048274665166560, -0.759080825433529500, -0.759113374304190680, +-0.759145921277068150, -0.759178466352080860, -0.759211009529147330, -0.759243550808186620, -0.759276090189116790, -0.759308627671856580, -0.759341163256325280, -0.759373696942440720, +-0.759406228730121760, -0.759438758619287450, -0.759471286609856080, -0.759503812701746940, -0.759536336894877760, -0.759568859189167940, -0.759601379584536220, -0.759633898080900650, +-0.759666414678180520, -0.759698929376294240, -0.759731442175160530, -0.759763953074698680, -0.759796462074826650, -0.759828969175463610, -0.759861474376527960, -0.759893977677938650, +-0.759926479079614300, -0.759958978581473880, -0.759991476183436210, -0.760023971885419590, -0.760056465687343090, -0.760088957589125650, -0.760121447590685450, -0.760153935691941780, +-0.760186421892813270, -0.760218906193218640, -0.760251388593077060, -0.760283869092306720, -0.760316347690826680, -0.760348824388556110, -0.760381299185413080, -0.760413772081316890, +-0.760446243076186250, -0.760478712169940340, -0.760511179362497240, -0.760543644653776330, -0.760576108043696460, -0.760608569532176150, -0.760641029119134340, -0.760673486804489980, +-0.760705942588161930, -0.760738396470069360, -0.760770848450130430, -0.760803298528264450, -0.760835746704390360, -0.760868192978426780, -0.760900637350292670, -0.760933079819906990, +-0.760965520387188450, -0.760997959052056580, -0.761030395814429440, -0.761062830674226310, -0.761095263631366480, -0.761127694685768130, -0.761160123837350540, -0.761192551086032680, +-0.761224976431733700, -0.761257399874372020, -0.761289821413866810, -0.761322241050137350, -0.761354658783101930, -0.761387074612679960, -0.761419488538790270, -0.761451900561351810, +-0.761484310680283990, -0.761516718895505100, -0.761549125206934300, -0.761581529614490990, -0.761613932118093690, -0.761646332717661470, -0.761678731413113490, -0.761711128204368590, +-0.761743523091346190, -0.761775916073964670, -0.761808307152143650, -0.761840696325801650, -0.761873083594857840, -0.761905468959231390, -0.761937852418841270, -0.761970233973606750, +-0.762002613623446350, -0.762034991368279350, -0.762067367208025260, -0.762099741142602480, -0.762132113171930300, -0.762164483295927900, -0.762196851514514220, -0.762229217827608770, +-0.762261582235129960, -0.762293944736997080, -0.762326305333129730, -0.762358664023446320, -0.762391020807866250, -0.762423375686308690, -0.762455728658692930, -0.762488079724937600, +-0.762520428884961960, -0.762552776138685550, -0.762585121486026970, -0.762617464926905630, -0.762649806461240590, -0.762682146088951020, -0.762714483809956320, -0.762746819624175230, +-0.762779153531527030, -0.762811485531931230, -0.762843815625306450, -0.762876143811572090, -0.762908470090647440, -0.762940794462451550, -0.762973116926904060, -0.763005437483923350, +-0.763037756133429170, -0.763070072875340790, -0.763102387709576950, -0.763134700636057260, -0.763167011654700690, -0.763199320765426960, -0.763231627968154580, -0.763263933262803170, +-0.763296236649292140, -0.763328538127540310, -0.763360837697467210, -0.763393135358991890, -0.763425431112033760, -0.763457724956512320, -0.763490016892346300, -0.763522306919455220, +-0.763554595037758690, -0.763586881247175440, -0.763619165547624880, -0.763651447939026510, -0.763683728421299390, -0.763716006994363370, -0.763748283658136960, -0.763780558412540110, +-0.763812831257491660, -0.763845102192911130, -0.763877371218717790, -0.763909638334831050, -0.763941903541170530, -0.763974166837654840, -0.764006428224203840, -0.764038687700737020, +-0.764070945267173230, -0.764103200923432090, -0.764135454669432890, -0.764167706505095130, -0.764199956430338330, -0.764232204445081330, -0.764264450549243860, -0.764296694742745530, +-0.764328937025505200, -0.764361177397442580, -0.764393415858476870, -0.764425652408528000, -0.764457887047514720, -0.764490119775356750, -0.764522350591973710, -0.764554579497284560, +-0.764586806491208910, -0.764619031573666290, -0.764651254744576070, -0.764683476003858000, -0.764715695351430910, -0.764747912787214550, -0.764780128311128850, -0.764812341923092440, +-0.764844553623025170, -0.764876763410846540, -0.764908971286475950, -0.764941177249833350, -0.764973381300837360, -0.765005583439408050, -0.765037783665465040, -0.765069981978927280, +-0.765102178379714500, -0.765134372867746330, -0.765166565442942480, -0.765198756105221920, -0.765230944854504490, -0.765263131690710030, -0.765295316613757490, -0.765327499623566500, +-0.765359680720056890, -0.765391859903148060, -0.765424037172759860, -0.765456212528811240, -0.765488385971222150, -0.765520557499912320, -0.765552727114800820, -0.765584894815807600, +-0.765617060602852060, -0.765649224475853820, -0.765681386434732940, -0.765713546479408150, -0.765745704609799960, -0.765777860825827110, -0.765810015127409540, -0.765842167514466990, +-0.765874317986919070, -0.765906466544685640, -0.765938613187685750, -0.765970757915839240, -0.766002900729066290, -0.766035041627285640, -0.766067180610417450, -0.766099317678381350, +-0.766131452831096960, -0.766163586068484110, -0.766195717390462110, -0.766227846796950770, -0.766259974287870180, -0.766292099863139290, -0.766324223522678150, -0.766356345266406390, +-0.766388465094244190, -0.766420583006110490, -0.766452699001925360, -0.766484813081608760, -0.766516925245079750, -0.766549035492258500, -0.766581143823064640, -0.766613250237418000, +-0.766645354735238430, -0.766677457316445210, -0.766709557980958410, -0.766741656728697870, -0.766773753559582990, -0.766805848473533720, -0.766837941470469800, -0.766870032550311050, +-0.766902121712977560, -0.766934208958388370, -0.766966294286463680, -0.766998377697123650, -0.767030459190287230, -0.767062538765874820, -0.767094616423805940, -0.767126692164000870, +-0.767158765986378780, -0.767190837890859730, -0.767222907877363910, -0.767254975945810600, -0.767287042096119750, -0.767319106328211320, -0.767351168642005140, -0.767383229037421290, +-0.767415287514379150, -0.767447344072798690, -0.767479398712600290, -0.767511451433703030, -0.767543502236027080, -0.767575551119492490, -0.767607598084018910, -0.767639643129526710, +-0.767671686255935070, -0.767703727463164620, -0.767735766751134420, -0.767767804119764860, -0.767799839568975790, -0.767831873098687060, -0.767863904708819050, -0.767895934399290820, +-0.767927962170022900, -0.767959988020935350, -0.767992011951947550, -0.768024033962979690, -0.768056054053951720, -0.768088072224783590, -0.768120088475395590, -0.768152102805707120, +-0.768184115215638450, -0.768216125705109660, -0.768248134274040370, -0.768280140922350640, -0.768312145649960640, -0.768344148456790550, -0.768376149342759770, -0.768408148307788700, +-0.768440145351797390, -0.768472140474705580, -0.768504133676433330, -0.768536124956900820, -0.768568114316027890, -0.768600101753735050, -0.768632087269941700, -0.768664070864568010, +-0.768696052537534480, -0.768728032288760630, -0.768760010118166530, -0.768791986025672560, -0.768823960011198570, -0.768855932074664960, -0.768887902215991240, -0.768919870435098020, +-0.768951836731904810, -0.768983801106332130, -0.769015763558299810, -0.769047724087728150, -0.769079682694537530, -0.769111639378647350, -0.769143594139978020, -0.769175546978450030, +-0.769207497893982910, -0.769239446886497040, -0.769271393955912600, -0.769303339102149540, -0.769335282325128600, -0.769367223624769060, -0.769399163000991430, -0.769431100453716210, +-0.769463035982863030, -0.769494969588352170, -0.769526901270103920, -0.769558831028038680, -0.769590758862076060, -0.769622684772136580, -0.769654608758140730, -0.769686530820007930, +-0.769718450957658900, -0.769750369171013800, -0.769782285459992720, -0.769814199824516150, -0.769846112264503830, -0.769878022779876270, -0.769909931370553970, -0.769941838036456440, +-0.769973742777504410, -0.770005645593617950, -0.770037546484717450, -0.770069445450723310, -0.770101342491555260, -0.770133237607133920, -0.770165130797379800, -0.770197022062212520, +-0.770228911401552590, -0.770260798815320500, -0.770292684303436670, -0.770324567865820820, -0.770356449502393570, -0.770388329213075540, -0.770420206997786350, -0.770452082856446620, +-0.770483956788976740, -0.770515828795296900, -0.770547698875327810, -0.770579567028989110, -0.770611433256201630, -0.770643297556885760, -0.770675159930961360, -0.770707020378349150, +-0.770738878898969300, -0.770770735492742330, -0.770802590159588740, -0.770834442899428370, -0.770866293712182180, -0.770898142597770120, -0.770929989556112580, -0.770961834587130080, +-0.770993677690742900, -0.771025518866871980, -0.771057358115436850, -0.771089195436358340, -0.771121030829557190, -0.771152864294953220, -0.771184695832466960, -0.771216525442019020, +-0.771248353123529800, -0.771280178876919910, -0.771312002702109420, -0.771343824599018730, -0.771375644567568910, -0.771407462607679670, -0.771439278719271760, -0.771471092902265680, +-0.771502905156582040, -0.771534715482140920, -0.771566523878863040, -0.771598330346669140, -0.771630134885479050, -0.771661937495213720, -0.771693738175793560, -0.771725536927138970, +-0.771757333749170880, -0.771789128641809150, -0.771820921604974620, -0.771852712638588010, -0.771884501742569400, -0.771916288916839500, -0.771948074161318940, -0.771979857475928120, +-0.772011638860587990, -0.772043418315218390, -0.772075195839740270, -0.772106971434074470, -0.772138745098141070, -0.772170516831860660, -0.772202286635154000, -0.772234054507941910, +-0.772265820450144470, -0.772297584461682400, -0.772329346542476650, -0.772361106692447290, -0.772392864911515150, -0.772424621199600760, -0.772456375556624940, -0.772488127982508430, +-0.772519878477171300, -0.772551627040534480, -0.772583373672518950, -0.772615118373044530, -0.772646861142032400, -0.772678601979403190, -0.772710340885077400, -0.772742077858976080, +-0.772773812901019320, -0.772805546011128160, -0.772837277189223020, -0.772869006435224600, -0.772900733749053660, -0.772932459130630910, -0.772964182579877310, -0.772995904096712930, +-0.773027623681058820, -0.773059341332835940, -0.773091057051964350, -0.773122770838365230, -0.773154482691959080, -0.773186192612666860, -0.773217900600409290, -0.773249606655106780, +-0.773281310776680160, -0.773313012965050620, -0.773344713220138310, -0.773376411541864210, -0.773408107930149020, -0.773439802384913830, -0.773471494906078920, -0.773503185493565230, +-0.773534874147293830, -0.773566560867185000, -0.773598245653159710, -0.773629928505138900, -0.773661609423043180, -0.773693288406793860, -0.773724965456310980, -0.773756640571515610, +-0.773788313752328930, -0.773819984998671220, -0.773851654310463540, -0.773883321687626750, -0.773914987130081670, -0.773946650637749260, -0.773978312210550130, -0.774009971848405140, +-0.774041629551235450, -0.774073285318961470, -0.774104939151504360, -0.774136591048784740, -0.774168241010724010, -0.774199889037242350, -0.774231535128261040, -0.774263179283701140, +-0.774294821503482940, -0.774326461787527840, -0.774358100135756460, -0.774389736548089850, -0.774421371024449190, -0.774453003564754880, -0.774484634168927990, -0.774516262836889790, +-0.774547889568560690, -0.774579514363861850, -0.774611137222714240, -0.774642758145038800, -0.774674377130756710, -0.774705994179788360, -0.774737609292055370, -0.774769222467478040, +-0.774800833705977740, -0.774832443007475220, -0.774864050371891660, -0.774895655799148320, -0.774927259289165500, -0.774958860841864490, -0.774990460457166690, -0.775022058134992360, +-0.775053653875263040, -0.775085247677899440, -0.775116839542822730, -0.775148429469954330, -0.775180017459214500, -0.775211603510524540, -0.775243187623805950, -0.775274769798979140, +-0.775306350035965260, -0.775337928334685620, -0.775369504695061500, -0.775401079117013170, -0.775432651600462260, -0.775464222145329950, -0.775495790751536850, -0.775527357419004250, +-0.775558922147653320, -0.775590484937405010, -0.775622045788180730, -0.775653604699901080, -0.775685161672487470, -0.775716716705861180, -0.775748269799942940, -0.775779820954653920, +-0.775811370169915300, -0.775842917445648370, -0.775874462781774410, -0.775906006178213930, -0.775937547634888540, -0.775969087151719530, -0.776000624728627410, -0.776032160365533800, +-0.776063694062359870, -0.776095225819026900, -0.776126755635455630, -0.776158283511567460, -0.776189809447283770, -0.776221333442525420, -0.776252855497213680, -0.776284375611269840, +-0.776315893784614960, -0.776347410017170670, -0.776378924308857580, -0.776410436659597190, -0.776441947069311020, -0.776473455537919690, -0.776504962065344690, -0.776536466651507330, +-0.776567969296328760, -0.776599469999730510, -0.776630968761633400, -0.776662465581959060, -0.776693960460628330, -0.776725453397562720, -0.776756944392683390, -0.776788433445911750, +-0.776819920557169310, -0.776851405726376790, -0.776882888953455810, -0.776914370238327770, -0.776945849580913620, -0.776977326981134750, -0.777008802438912680, -0.777040275954168580, +-0.777071747526824060, -0.777103217156799860, -0.777134684844017600, -0.777166150588398890, -0.777197614389864680, -0.777229076248336260, -0.777260536163735250, -0.777291994135983160, +-0.777323450165000820, -0.777354904250709740, -0.777386356393031770, -0.777417806591887640, -0.777449254847198960, -0.777480701158887230, -0.777512145526873640, -0.777543587951080030, +-0.777575028431427120, -0.777606466967836750, -0.777637903560230330, -0.777669338208529020, -0.777700770912654220, -0.777732201672527660, -0.777763630488070400, -0.777795057359204510, +-0.777826482285850610, -0.777857905267930860, -0.777889326305366000, -0.777920745398077870, -0.777952162545987870, -0.777983577749017390, -0.778014991007088370, -0.778046402320121460, +-0.778077811688038580, -0.778109219110761470, -0.778140624588211090, -0.778172028120309060, -0.778203429706977090, -0.778234829348136480, -0.778266227043708960, -0.778297622793615700, +-0.778329016597778420, -0.778360408456118870, -0.778391798368557990, -0.778423186335017500, -0.778454572355419150, -0.778485956429684430, -0.778517338557734970, -0.778548718739491940, +-0.778580096974877400, -0.778611473263812410, -0.778642847606218710, -0.778674220002017800, -0.778705590451131410, -0.778736958953481270, -0.778768325508988560, -0.778799690117574880, +-0.778831052779162420, -0.778862413493671910, -0.778893772261025410, -0.778925129081144530, -0.778956483953950780, -0.778987836879366120, -0.779019187857311610, -0.779050536887709090, +-0.779081883970480500, -0.779113229105546920, -0.779144572292830300, -0.779175913532252240, -0.779207252823734710, -0.779238590167198760, -0.779269925562566250, -0.779301259009759330, +-0.779332590508698850, -0.779363920059306990, -0.779395247661505360, -0.779426573315215480, -0.779457897020359610, -0.779489218776858620, -0.779520538584634550, -0.779551856443609470, +-0.779583172353704450, -0.779614486314841540, -0.779645798326942360, -0.779677108389928650, -0.779708416503722580, -0.779739722668245090, -0.779771026883418590, -0.779802329149164250, +-0.779833629465404020, -0.779864927832059850, -0.779896224249053250, -0.779927518716306500, -0.779958811233740560, -0.779990101801277590, -0.780021390418839670, -0.780052677086348070, +-0.780083961803724630, -0.780115244570891430, -0.780146525387769960, -0.780177804254282630, -0.780209081170350370, -0.780240356135895490, -0.780271629150840030, -0.780302900215105180, +-0.780334169328612990, -0.780365436491285420, -0.780396701703044650, -0.780427964963811730, -0.780459226273508940, -0.780490485632058360, -0.780521743039381270, -0.780552998495399830, +-0.780584252000036010, -0.780615503553211410, -0.780646753154848330, -0.780678000804868160, -0.780709246503192960, -0.780740490249744900, -0.780771732044445390, -0.780802971887216480, +-0.780834209777980240, -0.780865445716658390, -0.780896679703173220, -0.780927911737446130, -0.780959141819399180, -0.780990369948954770, -0.781021596126034060, -0.781052820350559340, +-0.781084042622452570, -0.781115262941636020, -0.781146481308031100, -0.781177697721559870, -0.781208912182144720, -0.781240124689706940, -0.781271335244168920, -0.781302543845452610, +-0.781333750493479860, -0.781364955188173060, -0.781396157929453490, -0.781427358717243670, -0.781458557551465650, -0.781489754432040940, -0.781520949358891940, -0.781552142331940480, +-0.781583333351108630, -0.781614522416318790, -0.781645709527492350, -0.781676894684551930, -0.781708077887419030, -0.781739259136015830, -0.781770438430264610, -0.781801615770087220, +-0.781832791155406050, -0.781863964586142710, -0.781895136062219390, -0.781926305583558470, -0.781957473150081570, -0.781988638761710990, -0.782019802418368880, -0.782050964119977100, +-0.782082123866458370, -0.782113281657733860, -0.782144437493726310, -0.782175591374357880, -0.782206743299550200, -0.782237893269225660, -0.782269041283306320, -0.782300187341714690, +-0.782331331444372390, -0.782362473591201700, -0.782393613782125130, -0.782424752017064180, -0.782455888295941480, -0.782487022618678970, -0.782518154985198940, -0.782549285395423790, +-0.782580413849275120, -0.782611540346675460, -0.782642664887547190, -0.782673787471811930, -0.782704908099392300, -0.782736026770210370, -0.782767143484188410, -0.782798258241248820, +-0.782829371041313230, -0.782860481884304350, -0.782891590770144470, -0.782922697698755330, -0.782953802670059540, -0.782984905683979160, -0.783016006740436810, -0.783047105839354110, +-0.783078202980653780, -0.783109298164258120, -0.783140391390088950, -0.783171482658068800, -0.783202571968119930, -0.783233659320164640, -0.783264744714125550, -0.783295828149924270, +-0.783326909627483410, -0.783357989146725610, -0.783389066707572470, -0.783420142309946720, -0.783451215953770540, -0.783482287638966430, -0.783513357365456800, -0.783544425133163580, +-0.783575490942009510, -0.783606554791916430, -0.783637616682806960, -0.783668676614603490, -0.783699734587228300, -0.783730790600604020, -0.783761844654652600, -0.783792896749296420, +-0.783823946884458440, -0.783854995060060180, -0.783886041276024460, -0.783917085532273680, -0.783948127828730130, -0.783979168165316650, -0.784010206541954860, -0.784041242958567590, +-0.784072277415077460, -0.784103309911406420, -0.784134340447477100, -0.784165369023211880, -0.784196395638533490, -0.784227420293363900, -0.784258442987625810, -0.784289463721241750, +-0.784320482494133890, -0.784351499306224720, -0.784382514157436870, -0.784413527047692740, -0.784444537976914940, -0.784475546945025640, -0.784506553951947460, -0.784537558997603130, +-0.784568562081914720, -0.784599563204804840, -0.784630562366196100, -0.784661559566010910, -0.784692554804172100, -0.784723548080601630, -0.784754539395222220, -0.784785528747956820, +-0.784816516138727270, -0.784847501567456530, -0.784878485034066880, -0.784909466538481480, -0.784940446080621970, -0.784971423660411500, -0.785002399277772600, -0.785033372932627540, +-0.785064344624899050, -0.785095314354509630, -0.785126282121381910, -0.785157247925438840, -0.785188211766602250, -0.785219173644795210, -0.785250133559940560, -0.785281091511960240, +-0.785312047500777210, -0.785343001526314090, -0.785373953588493380, -0.785404903687238140, -0.785435851822470330, -0.785466797994113230, -0.785497742202088790, -0.785528684446319960, +-0.785559624726729470, -0.785590563043239930, -0.785621499395774300, -0.785652433784254530, -0.785683366208603800, -0.785714296668744820, -0.785745225164599880, -0.785776151696091940, +-0.785807076263143500, -0.785837998865677400, -0.785868919503616590, -0.785899838176883250, -0.785930754885400320, -0.785961669629090750, -0.785992582407876730, -0.786023493221681190, +-0.786054402070426980, -0.786085308954037050, -0.786116213872433580, -0.786147116825539500, -0.786178017813278010, -0.786208916835571150, -0.786239813892341990, -0.786270708983513260, +-0.786301602109007790, -0.786332493268748660, -0.786363382462657910, -0.786394269690658840, -0.786425154952674180, -0.786456038248626530, -0.786486919578438750, -0.786517798942033550, +-0.786548676339334010, -0.786579551770262950, -0.786610425234742780, -0.786641296732696560, -0.786672166264047350, -0.786703033828717420, -0.786733899426629970, -0.786764763057707710, +-0.786795624721873920, -0.786826484419050680, -0.786857342149161370, -0.786888197912128830, -0.786919051707875570, -0.786949903536324660, -0.786980753397399040, -0.787011601291021550, +-0.787042447217115250, -0.787073291175602650, -0.787104133166406710, -0.787134973189450800, -0.787165811244657120, -0.787196647331949050, -0.787227481451249210, -0.787258313602480770, +-0.787289143785566800, -0.787319972000429580, -0.787350798246992830, -0.787381622525178740, -0.787412444834910690, -0.787443265176111410, -0.787474083548704070, -0.787504899952611750, +-0.787535714387756940, -0.787566526854062810, -0.787597337351452650, -0.787628145879848860, -0.787658952439174610, -0.787689757029353180, -0.787720559650307180, -0.787751360301960140, +-0.787782158984234430, -0.787812955697053340, -0.787843750440340050, -0.787874543214017180, -0.787905334018008000, -0.787936122852235350, -0.787966909716622750, -0.787997694611092590, +-0.788028477535568150, -0.788059258489972940, -0.788090037474229230, -0.788120814488260320, -0.788151589531989490, -0.788182362605339690, -0.788213133708234200, -0.788243902840595640, +-0.788274670002347300, -0.788305435193412560, -0.788336198413713940, -0.788366959663174830, -0.788397718941718400, -0.788428476249267600, -0.788459231585745820, -0.788489984951075810, +-0.788520736345181050, -0.788551485767984170, -0.788582233219408680, -0.788612978699377520, -0.788643722207813870, -0.788674463744641230, -0.788705203309782220, -0.788735940903160130, +-0.788766676524698450, -0.788797410174319920, -0.788828141851947720, -0.788858871557505230, -0.788889599290915510, -0.788920325052102190, -0.788951048840987660, -0.788981770657495530, +-0.789012490501549310, -0.789043208373071630, -0.789073924271985750, -0.789104638198215190, -0.789135350151683350, -0.789166060132312720, -0.789196768140027040, -0.789227474174749700, +-0.789258178236403320, -0.789288880324911620, -0.789319580440197680, -0.789350278582184760, -0.789380974750796380, -0.789411668945955380, -0.789442361167585150, -0.789473051415609310, +-0.789503739689950580, -0.789534425990532470, -0.789565110317278270, -0.789595792670111370, -0.789626473048955280, -0.789657151453732610, -0.789687827884367200, -0.789718502340782450, +-0.789749174822901080, -0.789779845330646930, -0.789810513863943080, -0.789841180422713230, -0.789871845006880120, -0.789902507616367380, -0.789933168251098720, -0.789963826910996870, +-0.789994483595985340, -0.790025138305987750, -0.790055791040927160, -0.790086441800727510, -0.790117090585311430, -0.790147737394602650, -0.790178382228524660, -0.790209025087000640, +-0.790239665969953880, -0.790270304877308090, -0.790300941808986470, -0.790331576764912840, -0.790362209745009920, -0.790392840749201800, -0.790423469777411290, -0.790454096829562030, +-0.790484721905577610, -0.790515345005381450, -0.790545966128897050, -0.790576585276047570, -0.790607202446756530, -0.790637817640947870, -0.790668430858544320, -0.790699042099469730, +-0.790729651363647480, -0.790760258651001190, -0.790790863961454480, -0.790821467294930300, -0.790852068651352490, -0.790882668030644780, -0.790913265432730110, -0.790943860857532320, +-0.790974454304974820, -0.791005045774981540, -0.791035635267475330, -0.791066222782380040, -0.791096808319619370, -0.791127391879116510, -0.791157973460795190, -0.791188553064578910, +-0.791219130690391180, -0.791249706338155940, -0.791280280007796270, -0.791310851699235760, -0.791341421412398380, -0.791371989147207300, -0.791402554903586130, -0.791433118681458600, +-0.791463680480748330, -0.791494240301379050, -0.791524798143274030, -0.791555354006356900, -0.791585907890551720, -0.791616459795781440, -0.791647009721970000, -0.791677557669041130, +-0.791708103636918570, -0.791738647625525480, -0.791769189634785820, -0.791799729664623310, -0.791830267714961340, -0.791860803785723650, -0.791891337876833970, -0.791921869988216010, +-0.791952400119793510, -0.791982928271489860, -0.792013454443228900, -0.792043978634934480, -0.792074500846529860, -0.792105021077939010, -0.792135539329085650, -0.792166055599893390, +-0.792196569890286310, -0.792227082200187450, -0.792257592529521220, -0.792288100878210780, -0.792318607246179970, -0.792349111633352750, -0.792379614039652740, -0.792410114465003870, +-0.792440612909329540, -0.792471109372553610, -0.792501603854600220, -0.792532096355392570, -0.792562586874854590, -0.792593075412910240, -0.792623561969483140, -0.792654046544497450, +-0.792684529137876350, -0.792715009749543900, -0.792745488379424270, -0.792775965027440630, -0.792806439693517050, -0.792836912377577360, -0.792867383079545630, -0.792897851799345240, +-0.792928318536900270, -0.792958783292134650, -0.792989246064971900, -0.793019706855335960, -0.793050165663150790, -0.793080622488340210, -0.793111077330828310, -0.793141530190538460, +-0.793171981067394840, -0.793202429961321510, -0.793232876872241750, -0.793263321800079860, -0.793293764744759770, -0.793324205706205100, -0.793354644684340250, -0.793385081679088610, +-0.793415516690374130, -0.793445949718121210, -0.793476380762253130, -0.793506809822694060, -0.793537236899368060, -0.793567661992199080, -0.793598085101110850, -0.793628506226027320, +-0.793658925366872770, -0.793689342523570710, -0.793719757696045190, -0.793750170884220290, -0.793780582088020050, -0.793810991307368650, -0.793841398542189380, -0.793871803792406630, +-0.793902207057944790, -0.793932608338727030, -0.793963007634677750, -0.793993404945721020, -0.794023800271780660, -0.794054193612781180, -0.794084584968645870, -0.794114974339299450, +-0.794145361724665320, -0.794175747124667760, -0.794206130539230730, -0.794236511968278490, -0.794266891411735230, -0.794297268869524450, -0.794327644341570550, -0.794358017827797690, +-0.794388389328129610, -0.794418758842490580, -0.794449126370804560, -0.794479491912995830, -0.794509855468988560, -0.794540217038706480, -0.794570576622073750, -0.794600934219014900, +-0.794631289829453410, -0.794661643453313690, -0.794691995090519910, -0.794722344740996340, -0.794752692404666730, -0.794783038081455340, -0.794813381771286690, -0.794843723474084270, +-0.794874063189772500, -0.794904400918275630, -0.794934736659517640, -0.794965070413423240, -0.794995402179915820, -0.795025731958919900, -0.795056059750359980, -0.795086385554159560, +-0.795116709370243150, -0.795147031198535030, -0.795177351038959260, -0.795207668891440460, -0.795237984755902240, -0.795268298632269000, -0.795298610520465350, -0.795328920420414810, +-0.795359228332041980, -0.795389534255271150, -0.795419838190026710, -0.795450140136232390, -0.795480440093812800, -0.795510738062692350, -0.795541034042794750, -0.795571328034044510, +-0.795601620036366030, -0.795631910049683480, -0.795662198073921470, -0.795692484109003620, -0.795722768154854650, -0.795753050211398970, -0.795783330278560410, -0.795813608356263470, +-0.795843884444432550, -0.795874158542991930, -0.795904430651866220, -0.795934700770979160, -0.795964968900255590, -0.795995235039619220, -0.796025499188994900, -0.796055761348306800, +-0.796086021517479310, -0.796116279696436950, -0.796146535885103760, -0.796176790083404140, -0.796207042291262820, -0.796237292508603640, -0.796267540735351220, -0.796297786971429940, +-0.796328031216764210, -0.796358273471278740, -0.796388513734897160, -0.796418752007544420, -0.796448988289145120, -0.796479222579623000, -0.796509454878902790, -0.796539685186908990, +-0.796569913503566210, -0.796600139828798400, -0.796630364162530190, -0.796660586504686410, -0.796690806855190890, -0.796721025213968370, -0.796751241580943240, -0.796781455956040000, +-0.796811668339183380, -0.796841878730297330, -0.796872087129306680, -0.796902293536135950, -0.796932497950709310, -0.796962700372951360, -0.796992900802786730, -0.797023099240139810, +-0.797053295684935330, -0.797083490137097450, -0.797113682596551130, -0.797143873063220210, -0.797174061537029740, -0.797204248017904020, -0.797234432505767750, -0.797264615000545680, +-0.797294795502161760, -0.797324974010540810, -0.797355150525607790, -0.797385325047286540, -0.797415497575502010, -0.797445668110178700, -0.797475836651241330, -0.797506003198614530, +-0.797536167752222580, -0.797566330311990090, -0.797596490877842010, -0.797626649449702520, -0.797656806027496450, -0.797686960611148300, -0.797717113200583030, -0.797747263795724690, +-0.797777412396498130, -0.797807559002828400, -0.797837703614639460, -0.797867846231856360, -0.797897986854403500, -0.797928125482205820, -0.797958262115187940, -0.797988396753274270, +-0.798018529396389510, -0.798048660044458740, -0.798078788697406120, -0.798108915355156380, -0.798139040017634470, -0.798169162684764900, -0.798199283356472720, -0.798229402032682110, +-0.798259518713317910, -0.798289633398305170, -0.798319746087568170, -0.798349856781031760, -0.798379965478620670, -0.798410072180260060, -0.798440176885873880, -0.798470279595387300, +-0.798500380308725280, -0.798530479025811980, -0.798560575746572580, -0.798590670470931690, -0.798620763198814140, -0.798650853930144900, -0.798680942664848350, -0.798711029402849440, +-0.798741114144073120, -0.798771196888443890, -0.798801277635886600, -0.798831356386326070, -0.798861433139687160, -0.798891507895895030, -0.798921580654873730, -0.798951651416548890, +-0.798981720180844570, -0.799011786947685930, -0.799041851716997820, -0.799071914488705070, -0.799101975262732860, -0.799132034039005460, -0.799162090817447930, -0.799192145597985460, +-0.799222198380542430, -0.799252249165043780, -0.799282297951414590, -0.799312344739579570, -0.799342389529464010, -0.799372432320992200, -0.799402473114089300, -0.799432511908680480, +-0.799462548704690130, -0.799492583502043440, -0.799522616300665230, -0.799552647100480800, -0.799582675901414520, -0.799612702703391460, -0.799642727506336910, -0.799672750310175370, +-0.799702771114831900, -0.799732789920231560, -0.799762806726299180, -0.799792821532960050, -0.799822834340138570, -0.799852845147760010, -0.799882853955749650, -0.799912860764031900, +-0.799942865572531910, -0.799972868381174870, -0.800002869189885610, -0.800032867998589410, -0.800062864807210780, -0.800092859615675000, -0.800122852423907460, -0.800152843231832330, +-0.800182832039375240, -0.800212818846461000, -0.800242803653014920, -0.800272786458961720, -0.800302767264226440, -0.800332746068734500, -0.800362722872410500, -0.800392697675179620, +-0.800422670476967020, -0.800452641277697770, -0.800482610077297150, -0.800512576875689770, -0.800542541672800920, -0.800572504468556100, -0.800602465262879590, -0.800632424055697010, +-0.800662380846933310, -0.800692335636513760, -0.800722288424363550, -0.800752239210407280, -0.800782187994570790, -0.800812134776778590, -0.800842079556955970, -0.800872022335028190, +-0.800901963110920320, -0.800931901884557870, -0.800961838655865450, -0.800991773424768240, -0.801021706191192060, -0.801051636955061210, -0.801081565716301400, -0.801111492474837590, +-0.801141417230595070, -0.801171339983499210, -0.801201260733474860, -0.801231179480447200, -0.801261096224341940, -0.801291010965083710, -0.801320923702597890, -0.801350834436809880, +-0.801380743167644960, -0.801410649895027860, -0.801440554618884190, -0.801470457339139350, -0.801500358055718180, -0.801530256768546170, -0.801560153477548390, -0.801590048182650340, +-0.801619940883777300, -0.801649831580854230, -0.801679720273806520, -0.801709606962559880, -0.801739491647038840, -0.801769374327169220, -0.801799255002876080, -0.801829133674084700, +-0.801859010340720930, -0.801888885002709270, -0.801918757659975450, -0.801948628312444960, -0.801978496960042640, -0.802008363602694010, -0.802038228240324560, -0.802068090872859800, +-0.802097951500224560, -0.802127810122344350, -0.802157666739145010, -0.802187521350551160, -0.802217373956488510, -0.802247224556882470, -0.802277073151658300, -0.802306919740741750, +-0.802336764324057650, -0.802366606901531610, -0.802396447473089360, -0.802426286038655730, -0.802456122598156350, -0.802485957151516600, -0.802515789698662110, -0.802545620239518250, +-0.802575448774010210, -0.802605275302063710, -0.802635099823603810, -0.802664922338556130, -0.802694742846846170, -0.802724561348399420, -0.802754377843141410, -0.802784192330997290, +-0.802814004811892580, -0.802843815285753220, -0.802873623752504040, -0.802903430212070780, -0.802933234664378940, -0.802963037109354020, -0.802992837546921740, -0.803022635977007180, +-0.803052432399535940, -0.803082226814433970, -0.803112019221626120, -0.803141809621038320, -0.803171598012595860, -0.803201384396224680, -0.803231168771849860, -0.803260951139397110, +-0.803290731498792150, -0.803320509849960170, -0.803350286192826890, -0.803380060527317920, -0.803409832853358760, -0.803439603170875370, -0.803469371479792580, -0.803499137780036450, +-0.803528902071532710, -0.803558664354206530, -0.803588424627983630, -0.803618182892789630, -0.803647939148550260, -0.803677693395191130, -0.803707445632637630, -0.803737195860815490, +-0.803766944079650660, -0.803796690289068310, -0.803826434488994050, -0.803856176679353720, -0.803885916860073270, -0.803915655031077760, -0.803945391192293140, -0.803975125343645350, +-0.804004857485059340, -0.804034587616461290, -0.804064315737776700, -0.804094041848931410, -0.804123765949851130, -0.804153488040461270, -0.804183208120687780, -0.804212926190456370, +-0.804242642249692440, -0.804272356298321940, -0.804302068336270600, -0.804331778363463920, -0.804361486379828180, -0.804391192385288440, -0.804420896379770990, -0.804450598363200990, +-0.804480298335504610, -0.804509996296607350, -0.804539692246435180, -0.804569386184914030, -0.804599078111969180, -0.804628768027526590, -0.804658455931512310, -0.804688141823851620, +-0.804717825704470700, -0.804747507573295050, -0.804777187430250730, -0.804806865275263790, -0.804836541108259310, -0.804866214929163440, -0.804895886737902360, -0.804925556534401340, +-0.804955224318586350, -0.804984890090383320, -0.805014553849718320, -0.805044215596516730, -0.805073875330704510, -0.805103533052207940, -0.805133188760952300, -0.805162842456863650, +-0.805192494139867820, -0.805222143809890880, -0.805251791466858770, -0.805281437110697000, -0.805311080741331510, -0.805340722358688700, -0.805370361962693740, -0.805399999553272910, +-0.805429635130352040, -0.805459268693857090, -0.805488900243714220, -0.805518529779848950, -0.805548157302187540, -0.805577782810655510, -0.805607406305178910, -0.805637027785683910, +-0.805666647252096360, -0.805696264704342300, -0.805725880142347470, -0.805755493566037930, -0.805785104975339840, -0.805814714370178710, -0.805844321750480930, -0.805873927116172230, +-0.805903530467178770, -0.805933131803426630, -0.805962731124841510, -0.805992328431349600, -0.806021923722877070, -0.806051516999349400, -0.806081108260693010, -0.806110697506833950, +-0.806140284737698280, -0.806169869953211600, -0.806199453153300330, -0.806229034337890730, -0.806258613506908190, -0.806288190660279120, -0.806317765797929690, -0.806347338919785720, +-0.806376910025773720, -0.806406479115819200, -0.806436046189848430, -0.806465611247787820, -0.806495174289562860, -0.806524735315100050, -0.806554294324325350, -0.806583851317165030, +-0.806613406293545280, -0.806642959253391690, -0.806672510196630780, -0.806702059123188820, -0.806731606032991430, -0.806761150925965010, -0.806790693802035830, -0.806820234661130060, +-0.806849773503173440, -0.806879310328092460, -0.806908845135813510, -0.806938377926262110, -0.806967908699364740, -0.806997437455047590, -0.807026964193236940, -0.807056488913859060, +-0.807086011616839680, -0.807115532302105310, -0.807145050969582440, -0.807174567619196590, -0.807204082250874370, -0.807233594864541940, -0.807263105460125470, -0.807292614037551590, +-0.807322120596745800, -0.807351625137635030, -0.807381127660144910, -0.807410628164202060, -0.807440126649732530, -0.807469623116662700, -0.807499117564919210, -0.807528609994427550, +-0.807558100405114330, -0.807587588796906180, -0.807617075169728800, -0.807646559523508720, -0.807676041858172210, -0.807705522173645550, -0.807735000469855470, -0.807764476746727580, +-0.807793951004188490, -0.807823423242164830, -0.807852893460582310, -0.807882361659367550, -0.807911827838446840, -0.807941291997746890, -0.807970754137193440, -0.808000214256713090, +-0.808029672356232460, -0.808059128435677400, -0.808088582494974510, -0.808118034534050180, -0.808147484552830810, -0.808176932551242900, -0.808206378529212510, -0.808235822486666030, +-0.808265264423530420, -0.808294704339731270, -0.808324142235195330, -0.808353578109849090, -0.808383011963618950, -0.808412443796431510, -0.808441873608212620, -0.808471301398889120, +-0.808500727168387720, -0.808530150916634050, -0.808559572643555160, -0.808588992349077220, -0.808618410033127180, -0.808647825695630760, -0.808677239336514810, -0.808706650955706040, +-0.808736060553130410, -0.808765468128714530, -0.808794873682385010, -0.808824277214068350, -0.808853678723691180, -0.808883078211179660, -0.808912475676460410, -0.808941871119460140, +-0.808971264540105040, -0.809000655938321710, -0.809030045314036880, -0.809059432667176730, -0.809088817997668410, -0.809118201305437770, -0.809147582590411860, -0.809176961852516640, +-0.809206339091679160, -0.809235714307825820, -0.809265087500883110, -0.809294458670777980, -0.809323827817436500, -0.809353194940785390, -0.809382560040751490, -0.809411923117261070, +-0.809441284170240750, -0.809470643199617260, -0.809500000205317090, -0.809529355187267320, -0.809558708145393770, -0.809588059079623500, -0.809617407989883350, -0.809646754876099380, +-0.809676099738198540, -0.809705442576107550, -0.809734783389753130, -0.809764122179061460, -0.809793458943959490, -0.809822793684374150, -0.809852126400231630, -0.809881457091458760, +-0.809910785757982250, -0.809940112399728740, -0.809969437016625160, -0.809998759608597800, -0.810028080175573590, -0.810057398717479390, -0.810086715234241360, -0.810116029725786670, +-0.810145342192041820, -0.810174652632933650, -0.810203961048389100, -0.810233267438334350, -0.810262571802696450, -0.810291874141402470, -0.810321174454378460, -0.810350472741551480, +-0.810379769002848360, -0.810409063238196170, -0.810438355447520960, -0.810467645630749800, -0.810496933787809960, -0.810526219918627390, -0.810555504023129370, -0.810584786101242520, +-0.810614066152893660, -0.810643344178009980, -0.810672620176517640, -0.810701894148343820, -0.810731166093415450, -0.810760436011658920, -0.810789703903001310, -0.810818969767369450, +-0.810848233604690160, -0.810877495414890510, -0.810906755197896900, -0.810936012953636600, -0.810965268682036110, -0.810994522383022390, -0.811023774056522370, -0.811053023702462910, +-0.811082271320771150, -0.811111516911373510, -0.811140760474197030, -0.811170002009168890, -0.811199241516215470, -0.811228478995263960, -0.811257714446241280, -0.811286947869074290, +-0.811316179263690260, -0.811345408630015470, -0.811374635967977210, -0.811403861277502520, -0.811433084558517930, -0.811462305810950690, -0.811491525034727660, -0.811520742229776100, +-0.811549957396022430, -0.811579170533393790, -0.811608381641817590, -0.811637590721220100, -0.811666797771528610, -0.811696002792670180, -0.811725205784571750, -0.811754406747160600, +-0.811783605680363120, -0.811812802584106600, -0.811841997458318420, -0.811871190302924870, -0.811900381117853450, -0.811929569903031000, -0.811958756658384680, -0.811987941383841670, +-0.812017124079328580, -0.812046304744772800, -0.812075483380101380, -0.812104659985240950, -0.812133834560119010, -0.812163007104662380, -0.812192177618798470, -0.812221346102453890, +-0.812250512555556030, -0.812279676978032050, -0.812308839369808690, -0.812337999730813220, -0.812367158060972700, -0.812396314360214310, -0.812425468628465320, -0.812454620865652570, +-0.812483771071703110, -0.812512919246544560, -0.812542065390103430, -0.812571209502307210, -0.812600351583082860, -0.812629491632357650, -0.812658629650058970, -0.812687765636113560, +-0.812716899590448900, -0.812746031512991740, -0.812775161403669570, -0.812804289262409440, -0.812833415089138530, -0.812862538883784350, -0.812891660646273720, -0.812920780376533700, +-0.812949898074492140, -0.812979013740075640, -0.813008127373211490, -0.813037238973827070, -0.813066348541849450, -0.813095456077206350, -0.813124561579824270, -0.813153665049630820, +-0.813182766486553520, -0.813211865890518970, -0.813240963261454790, -0.813270058599288140, -0.813299151903946640, -0.813328243175357010, -0.813357332413446880, -0.813386419618143510, +-0.813415504789373970, -0.813444587927065530, -0.813473669031145710, -0.813502748101541660, -0.813531825138181120, -0.813560900140990580, -0.813589973109897890, -0.813619044044830540, +-0.813648112945715370, -0.813677179812479780, -0.813706244645051370, -0.813735307443357200, -0.813764368207325120, -0.813793426936881840, -0.813822483631955310, -0.813851538292472250, +-0.813880590918360400, -0.813909641509547030, -0.813938690065959540, -0.813967736587525640, -0.813996781074172060, -0.814025823525826530, -0.814054863942416770, -0.814083902323869620, +-0.814112938670112580, -0.814141972981073270, -0.814171005256679070, -0.814200035496857600, -0.814229063701535690, -0.814258089870641190, -0.814287114004101810, -0.814316136101844280, +-0.814345156163796440, -0.814374174189885670, -0.814403190180039480, -0.814432204134185600, -0.814461216052250970, -0.814490225934163540, -0.814519233779850250, -0.814548239589238940, +-0.814577243362257010, -0.814606245098831950, -0.814635244798891490, -0.814664242462362690, -0.814693238089173380, -0.814722231679251170, -0.814751223232523030, -0.814780212748916990, +-0.814809200228360340, -0.814838185670780700, -0.814867169076105790, -0.814896150444262780, -0.814925129775179390, -0.814954107068783350, -0.814983082325001940, -0.815012055543762660, +-0.815041026724993340, -0.815069995868621720, -0.815098962974574850, -0.815127928042780560, -0.815156891073166690, -0.815185852065660300, -0.815214811020189330, -0.815243767936681300, +-0.815272722815063910, -0.815301675655264900, -0.815330626457211440, -0.815359575220831470, -0.815388521946052820, -0.815417466632802570, -0.815446409281008640, -0.815475349890598780, +-0.815504288461500470, -0.815533224993641670, -0.815562159486949660, -0.815591091941352380, -0.815620022356777220, -0.815648950733151910, -0.815677877070404290, -0.815706801368461960, +-0.815735723627252880, -0.815764643846704330, -0.815793562026744020, -0.815822478167300140, -0.815851392268299720, -0.815880304329670960, -0.815909214351341340, -0.815938122333238700, +-0.815967028275291110, -0.815995932177425500, -0.816024834039570270, -0.816053733861653030, -0.816082631643601290, -0.816111527385342980, -0.816140421086805850, -0.816169312747917930, +-0.816198202368606410, -0.816227089948799440, -0.816255975488424990, -0.816284858987410320, -0.816313740445683500, -0.816342619863172360, -0.816371497239804730, -0.816400372575508460, +-0.816429245870211150, -0.816458117123840640, -0.816486986336325100, -0.816515853507591930, -0.816544718637569060, -0.816573581726184330, -0.816602442773365690, -0.816631301779041310, +-0.816660158743138240, -0.816689013665584880, -0.816717866546309180, -0.816746717385238630, -0.816775566182301290, -0.816804412937425010, -0.816833257650537940, -0.816862100321567470, +-0.816890940950441790, -0.816919779537088940, -0.816948616081436430, -0.816977450583412310, -0.817006283042944650, -0.817035113459961270, -0.817063941834390350, -0.817092768166159390, +-0.817121592455196440, -0.817150414701429680, -0.817179234904786720, -0.817208053065195730, -0.817236869182584540, -0.817265683256881200, -0.817294495288013900, -0.817323305275910130, +-0.817352113220498280, -0.817380919121705960, -0.817409722979461240, -0.817438524793692390, -0.817467324564327140, -0.817496122291293760, -0.817524917974519870, -0.817553711613933750, +-0.817582503209463570, -0.817611292761036830, -0.817640080268581930, -0.817668865732026680, -0.817697649151299390, -0.817726430526328320, -0.817755209857040750, -0.817783987143365200, +-0.817812762385229930, -0.817841535582562560, -0.817870306735291370, -0.817899075843344310, -0.817927842906649880, -0.817956607925135580, -0.817985370898729800, -0.818014131827360820, +-0.818042890710956260, -0.818071647549444390, -0.818100402342753500, -0.818129155090811630, -0.818157905793546970, -0.818186654450887450, -0.818215401062761250, -0.818244145629096750, +-0.818272888149821690, -0.818301628624864330, -0.818330367054152960, -0.818359103437615750, -0.818387837775180980, -0.818416570066776260, -0.818445300312330200, -0.818474028511771200, +-0.818502754665026750, -0.818531478772025480, -0.818560200832695540, -0.818588920846965330, -0.818617638814762570, -0.818646354736015660, -0.818675068610653200, -0.818703780438602810, +-0.818732490219792890, -0.818761197954151810, -0.818789903641607750, -0.818818607282089110, -0.818847308875523710, -0.818876008421840050, -0.818904705920966650, -0.818933401372831220, +-0.818962094777362370, -0.818990786134488170, -0.819019475444137000, -0.819048162706237480, -0.819076847920717220, -0.819105531087505170, -0.819134212206528930, -0.819162891277717240, +-0.819191568300998260, -0.819220243276300500, -0.819248916203552220, -0.819277587082681500, -0.819306255913616830, -0.819334922696286720, -0.819363587430618990, -0.819392250116542380, +-0.819420910753985150, -0.819449569342875610, -0.819478225883142340, -0.819506880374713420, -0.819535532817517120, -0.819564183211482390, -0.819592831556536840, -0.819621477852609300, +-0.819650122099627950, -0.819678764297521620, -0.819707404446218150, -0.819736042545646140, -0.819764678595734320, -0.819793312596410530, -0.819821944547603380, -0.819850574449241480, +-0.819879202301253110, -0.819907828103566880, -0.819936451856110970, -0.819965073558813870, -0.819993693211604310, -0.820022310814410350, -0.820050926367160480, -0.820079539869783440, +-0.820108151322207490, -0.820136760724361480, -0.820165368076173240, -0.820193973377571610, -0.820222576628485190, -0.820251177828842160, -0.820279776978571240, -0.820308374077600820, +-0.820336969125859740, -0.820365562123275940, -0.820394153069778250, -0.820422741965295520, -0.820451328809755580, -0.820479913603087360, -0.820508496345219380, -0.820537077036080030, +-0.820565655675598360, -0.820594232263702320, -0.820622806800320630, -0.820651379285382230, -0.820679949718815080, -0.820708518100548120, -0.820737084430509740, -0.820765648708628780, +-0.820794210934833960, -0.820822771109053220, -0.820851329231215950, -0.820879885301250000, -0.820908439319084420, -0.820936991284647700, -0.820965541197868460, -0.820994089058675660, +-0.821022634866997450, -0.821051178622762560, -0.821079720325900040, -0.821108259976337960, -0.821136797574005150, -0.821165333118830440, -0.821193866610742340, -0.821222398049669790, +-0.821250927435541070, -0.821279454768285010, -0.821307980047830570, -0.821336503274106010, -0.821365024447040070, -0.821393543566561580, -0.821422060632599480, -0.821450575645082060, +-0.821479088603938150, -0.821507599509096800, -0.821536108360486180, -0.821564615158035250, -0.821593119901672830, -0.821621622591327540, -0.821650123226928540, -0.821678621808403900, +-0.821707118335682770, -0.821735612808694120, -0.821764105227366090, -0.821792595591627870, -0.821821083901408180, -0.821849570156635730, -0.821878054357239600, -0.821906536503148040, +-0.821935016594290250, -0.821963494630595040, -0.821991970611990920, -0.822020444538406950, -0.822048916409771730, -0.822077386226014560, -0.822105853987063600, -0.822134319692848110, +-0.822162783343297070, -0.822191244938338730, -0.822219704477902270, -0.822248161961916630, -0.822276617390310550, -0.822305070763013180, -0.822333522079952810, -0.822361971341058710, +-0.822390418546259940, -0.822418863695484890, -0.822447306788662620, -0.822475747825722190, -0.822504186806592320, -0.822532623731202170, -0.822561058599480250, -0.822589491411355960, +-0.822617922166757780, -0.822646350865614660, -0.822674777507855670, -0.822703202093409750, -0.822731624622206170, -0.822760045094173220, -0.822788463509240060, -0.822816879867336090, +-0.822845294168389700, -0.822873706412330040, -0.822902116599086080, -0.822930524728586850, -0.822958930800761550, -0.822987334815538650, -0.823015736772847450, -0.823044136672617220, +-0.823072534514776350, -0.823100930299254130, -0.823129324025979600, -0.823157715694881940, -0.823186105305889870, -0.823214492858932450, -0.823242878353939060, -0.823271261790838200, +-0.823299643169559170, -0.823328022490031120, -0.823356399752183000, -0.823384774955944090, -0.823413148101243000, -0.823441519188009010, -0.823469888216171510, -0.823498255185659000, +-0.823526620096400990, -0.823554982948326300, -0.823583343741364100, -0.823611702475443910, -0.823640059150494210, -0.823668413766444620, -0.823696766323223640, -0.823725116820760880, +-0.823753465258985180, -0.823781811637825930, -0.823810155957212410, -0.823838498217073110, -0.823866838417337650, -0.823895176557935430, -0.823923512638794930, -0.823951846659845670, +-0.823980178621016800, -0.824008508522237500, -0.824036836363437160, -0.824065162144544390, -0.824093485865488810, -0.824121807526199790, -0.824150127126605960, -0.824178444666636810, +-0.824206760146221520, -0.824235073565289690, -0.824263384923769830, -0.824291694221591540, -0.824320001458684230, -0.824348306634976710, -0.824376609750398390, -0.824404910804878540, +-0.824433209798346440, -0.824461506730731600, -0.824489801601962610, -0.824518094411969330, -0.824546385160680910, -0.824574673848026300, -0.824602960473935000, -0.824631245038336290, +-0.824659527541159560, -0.824687807982334210, -0.824716086361789060, -0.824744362679453720, -0.824772636935257710, -0.824800909129129840, -0.824829179260999750, -0.824857447330796690, +-0.824885713338450290, -0.824913977283889270, -0.824942239167043350, -0.824970498987842140, -0.824998756746214370, -0.825027012442089650, -0.825055266075397480, -0.825083517646067240, +-0.825111767154028340, -0.825140014599209710, -0.825168259981541200, -0.825196503300952180, -0.825224744557371710, -0.825252983750729310, -0.825281220880954570, -0.825309455947976670, +-0.825337688951725430, -0.825365919892129710, -0.825394148769119430, -0.825422375582623440, -0.825450600332571670, -0.825478823018893300, -0.825507043641517950, -0.825535262200375100, +-0.825563478695394040, -0.825591693126504160, -0.825619905493635290, -0.825648115796716490, -0.825676324035677260, -0.825704530210447320, -0.825732734320956060, -0.825760936367133210, +-0.825789136348907830, -0.825817334266209510, -0.825845530118968110, -0.825873723907112670, -0.825901915630572910, -0.825930105289278350, -0.825958292883158810, -0.825986478412143230, +-0.826014661876161460, -0.826042843275143320, -0.826071022609017880, -0.826099199877714850, -0.826127375081163740, -0.826155548219294270, -0.826183719292036160, -0.826211888299318460, +-0.826240055241071140, -0.826268220117223780, -0.826296382927705800, -0.826324543672446680, -0.826352702351376370, -0.826380858964424150, -0.826409013511520190, -0.826437165992593310, +-0.826465316407573590, -0.826493464756390850, -0.826521611038974150, -0.826549755255253430, -0.826577897405158300, -0.826606037488618720, -0.826634175505563840, -0.826662311455923390, +-0.826690445339627540, -0.826718577156605240, -0.826746706906786530, -0.826774834590101040, -0.826802960206478480, -0.826831083755848790, -0.826859205238141160, -0.826887324653285400, +-0.826915442001211700, -0.826943557281849100, -0.826971670495127540, -0.826999781640976870, -0.827027890719326810, -0.827055997730107180, -0.827084102673247390, -0.827112205548677480, +-0.827140306356326850, -0.827168405096125550, -0.827196501768003080, -0.827224596371889500, -0.827252688907714640, -0.827280779375407670, -0.827308867774898870, -0.827336954106118180, +-0.827365038368994780, -0.827393120563458930, -0.827421200689440140, -0.827449278746868360, -0.827477354735673630, -0.827505428655785360, -0.827533500507133370, -0.827561570289648050, +-0.827589638003258350, -0.827617703647894780, -0.827645767223486820, -0.827673828729964640, -0.827701888167257760, -0.827729945535296110, -0.827758000834009850, -0.827786054063328280, +-0.827814105223181660, -0.827842154313499720, -0.827870201334212520, -0.827898246285249880, -0.827926289166541540, -0.827954329978017320, -0.827982368719607620, -0.828010405391241820, +-0.828038439992849870, -0.828066472524361830, -0.828094502985707640, -0.828122531376817460, -0.828150557697620690, -0.828178581948047610, -0.828206604128028270, -0.828234624237492060, +-0.828262642276369480, -0.828290658244590140, -0.828318672142084430, -0.828346683968781860, -0.828374693724612590, -0.828402701409506780, -0.828430707023393940, -0.828458710566204350, +-0.828486712037868060, -0.828514711438314900, -0.828542708767475160, -0.828570704025278550, -0.828598697211655130, -0.828626688326535190, -0.828654677369848210, -0.828682664341524710, +-0.828710649241494400, -0.828738632069687560, -0.828766612826034250, -0.828794591510464310, -0.828822568122908110, -0.828850542663295160, -0.828878515131555970, -0.828906485527620470, +-0.828934453851418730, -0.828962420102881010, -0.828990384281937160, -0.829018346388517240, -0.829046306422551730, -0.829074264383970250, -0.829102220272703080, -0.829130174088680280, +-0.829158125831832130, -0.829186075502088890, -0.829214023099380300, -0.829241968623636530, -0.829269912074788170, -0.829297853452764630, -0.829325792757496630, -0.829353729988914100, +-0.829381665146947440, -0.829409598231526490, -0.829437529242581410, -0.829465458180042800, -0.829493385043840290, -0.829521309833904370, -0.829549232550165110, -0.829577153192552870, +-0.829605071760997960, -0.829632988255430080, -0.829660902675779740, -0.829688815021977330, -0.829716725293952680, -0.829744633491636300, -0.829772539614958230, -0.829800443663848860, +-0.829828345638238600, -0.829856245538057260, -0.829884143363235350, -0.829912039113703260, -0.829939932789390820, -0.829967824390228540, -0.829995713916146790, -0.830023601367075870, +-0.830051486742945820, -0.830079370043686930, -0.830107251269230020, -0.830135130419504600, -0.830163007494441390, -0.830190882493970770, -0.830218755418022810, -0.830246626266528230, +-0.830274495039416860, -0.830302361736619310, -0.830330226358066080, -0.830358088903686900, -0.830385949373412590, -0.830413807767173440, -0.830441664084899720, -0.830469518326522160, +-0.830497370491970480, -0.830525220581175730, -0.830553068594067520, -0.830580914530576810, -0.830608758390633750, -0.830636600174168740, -0.830664439881112490, -0.830692277511394960, +-0.830720113064946640, -0.830747946541698370, -0.830775777941579970, -0.830803607264522070, -0.830831434510455270, -0.830859259679309740, -0.830887082771016420, -0.830914903785505030, +-0.830942722722706420, -0.830970539582551290, -0.830998354364969600, -0.831026167069891960, -0.831053977697248980, -0.831081786246971270, -0.831109592718988770, -0.831137397113232310, +-0.831165199429632630, -0.831192999668119770, -0.831220797828624350, -0.831248593911076970, -0.831276387915408030, -0.831304179841548360, -0.831331969689428130, -0.831359757458977830, +-0.831387543150128530, -0.831415326762810050, -0.831443108296953230, -0.831470887752488670, -0.831498665129346890, -0.831526440427458600, -0.831554213646754080, -0.831581984787164270, +-0.831609753848619130, -0.831637520831049800, -0.831665285734386470, -0.831693048558560080, -0.831720809303501230, -0.831748567969140100, -0.831776324555407620, -0.831804079062234520, +-0.831831831489551090, -0.831859581837287920, -0.831887330105375860, -0.831915076293745500, -0.831942820402327700, -0.831970562431052500, -0.831998302379851060, -0.832026040248654010, +-0.832053776037391610, -0.832081509745994820, -0.832109241374394240, -0.832136970922520700, -0.832164698390304600, -0.832192423777676770, -0.832220147084568040, -0.832247868310908800, +-0.832275587456629770, -0.832303304521661900, -0.832331019505935690, -0.832358732409382180, -0.832386443231931560, -0.832414151973514870, -0.832441858634063060, -0.832469563213506400, +-0.832497265711775740, -0.832524966128802000, -0.832552664464515810, -0.832580360718848220, -0.832608054891729400, -0.832635746983090510, -0.832663436992862490, -0.832691124920975630, +-0.832718810767360980, -0.832746494531949380, -0.832774176214671650, -0.832801855815458290, -0.832829533334240260, -0.832857208770948710, -0.832884882125513810, -0.832912553397866740, +-0.832940222587938320, -0.832967889695659270, -0.832995554720960760, -0.833023217663773190, -0.833050878524027590, -0.833078537301654930, -0.833106193996585700, -0.833133848608751060, +-0.833161501138081740, -0.833189151584508680, -0.833216799947963050, -0.833244446228375120, -0.833272090425676290, -0.833299732539797060, -0.833327372570668360, -0.833355010518221360, +-0.833382646382386790, -0.833410280163095820, -0.833437911860279050, -0.833465541473867310, -0.833493169003792110, -0.833520794449983620, -0.833548417812373210, -0.833576039090891730, +-0.833603658285470230, -0.833631275396039760, -0.833658890422530830, -0.833686503364874710, -0.833714114223002570, -0.833741722996844900, -0.833769329686332990, -0.833796934291397670, +-0.833824536811970330, -0.833852137247981350, -0.833879735599362020, -0.833907331866043600, -0.833934926047956600, -0.833962518145032420, -0.833990108157201760, -0.834017696084395910, +-0.834045281926546030, -0.834072865683582740, -0.834100447355437310, -0.834128026942040910, -0.834155604443324260, -0.834183179859218640, -0.834210753189654990, -0.834238324434564580, +-0.834265893593878480, -0.834293460667527410, -0.834321025655442750, -0.834348588557555780, -0.834376149373797000, -0.834403708104097920, -0.834431264748389580, -0.834458819306603260, +-0.834486371778669690, -0.834513922164520140, -0.834541470464086110, -0.834569016677298100, -0.834596560804087620, -0.834624102844385710, -0.834651642798123540, -0.834679180665232500, +-0.834706716445643200, -0.834734250139287150, -0.834761781746095720, -0.834789311265999650, -0.834816838698930310, -0.834844364044818770, -0.834871887303596400, -0.834899408475194500, +-0.834926927559543900, -0.834954444556576190, -0.834981959466222110, -0.835009472288413160, -0.835036983023080490, -0.835064491670155400, -0.835091998229569370, -0.835119502701253010, +-0.835147005085137950, -0.835174505381155560, -0.835202003589236690, -0.835229499709312820, -0.835256993741315230, -0.835284485685175100, -0.835311975540824040, -0.835339463308192860, +-0.835366948987212980, -0.835394432577815870, -0.835421914079932600, -0.835449393493494450, -0.835476870818432800, -0.835504346054679160, -0.835531819202164570, -0.835559290260820320, +-0.835586759230578120, -0.835614226111368820, -0.835641690903123900, -0.835669153605774760, -0.835696614219252680, -0.835724072743489480, -0.835751529178415660, -0.835778983523963180, +-0.835806435780063420, -0.835833885946647310, -0.835861334023646490, -0.835888780010992320, -0.835916223908616200, -0.835943665716449850, -0.835971105434423990, -0.835998543062470350, +-0.836025978600520750, -0.836053412048505810, -0.836080843406357350, -0.836108272674006890, -0.836135699851385920, -0.836163124938425480, -0.836190547935057200, -0.836217968841212800, +-0.836245387656823210, -0.836272804381820170, -0.836300219016135160, -0.836327631559699580, -0.836355042012445150, -0.836382450374302920, -0.836409856645204510, -0.836437260825081740, +-0.836464662913865450, -0.836492062911487700, -0.836519460817879650, -0.836546856632973010, -0.836574250356699410, -0.836601641988990010, -0.836629031529776750, -0.836656418978990680, +-0.836683804336563530, -0.836711187602426800, -0.836738568776512200, -0.836765947858751360, -0.836793324849075540, -0.836820699747416240, -0.836848072553705520, -0.836875443267874330, +-0.836902811889854600, -0.836930178419577840, -0.836957542856975540, -0.836984905201979660, -0.837012265454521340, -0.837039623614532320, -0.837066979681944430, -0.837094333656688950, +-0.837121685538697590, -0.837149035327901970, -0.837176383024234030, -0.837203728627624930, -0.837231072138006520, -0.837258413555310610, -0.837285752879468490, -0.837313090110411880, +-0.837340425248072620, -0.837367758292382300, -0.837395089243272770, -0.837422418100675410, -0.837449744864521950, -0.837477069534744320, -0.837504392111273810, -0.837531712594042240, +-0.837559030982981460, -0.837586347278023060, -0.837613661479099100, -0.837640973586140760, -0.837668283599079850, -0.837695591517848560, -0.837722897342378150, -0.837750201072600340, +-0.837777502708447090, -0.837804802249850320, -0.837832099696741330, -0.837859395049052050, -0.837886688306714530, -0.837913979469660060, -0.837941268537820690, -0.837968555511128140, +-0.837995840389514140, -0.838023123172910830, -0.838050403861249400, -0.838077682454462010, -0.838104958952480610, -0.838132233355236680, -0.838159505662662060, -0.838186775874688710, +-0.838214043991248440, -0.838241310012273310, -0.838268573937694610, -0.838295835767444820, -0.838323095501455120, -0.838350353139657670, -0.838377608681984300, -0.838404862128367070, +-0.838432113478737810, -0.838459362733028010, -0.838486609891169850, -0.838513854953095380, -0.838541097918735990, -0.838568338788023950, -0.838595577560890980, -0.838622814237269140, +-0.838650048817090490, -0.838677281300286400, -0.838704511686789170, -0.838731739976530940, -0.838758966169443120, -0.838786190265457860, -0.838813412264507010, -0.838840632166523050, +-0.838867849971437150, -0.838895065679181710, -0.838922279289688770, -0.838949490802889940, -0.838976700218717400, -0.839003907537103080, -0.839031112757978930, -0.839058315881277330, +-0.839085516906929670, -0.839112715834868240, -0.839139912665025190, -0.839167107397332130, -0.839194300031721350, -0.839221490568124890, -0.839248679006474600, -0.839275865346702840, +-0.839303049588741250, -0.839330231732522190, -0.839357411777977400, -0.839384589725039040, -0.839411765573639170, -0.839438939323709940, -0.839466110975183640, -0.839493280527991770, +-0.839520447982066600, -0.839547613337340740, -0.839574776593745460, -0.839601937751213280, -0.839629096809676350, -0.839656253769066610, -0.839683408629316450, -0.839710561390357490, +-0.839737712052122220, -0.839764860614542810, -0.839792007077551080, -0.839819151441079330, -0.839846293705059700, -0.839873433869424590, -0.839900571934105610, -0.839927707899035260, +-0.839954841764145810, -0.839981973529369100, -0.840009103194637400, -0.840036230759882980, -0.840063356225037920, -0.840090479590034690, -0.840117600854805140, -0.840144720019281530, +-0.840171837083396380, -0.840198952047081280, -0.840226064910268970, -0.840253175672891370, -0.840280284334880890, -0.840307390896170010, -0.840334495356690250, -0.840361597716374310, +-0.840388697975154700, -0.840415796132963020, -0.840442892189731890, -0.840469986145393590, -0.840497077999880490, -0.840524167753124440, -0.840551255405058040, -0.840578340955613680, +-0.840605424404723190, -0.840632505752319180, -0.840659584998333930, -0.840686662142699710, -0.840713737185349030, -0.840740810126213820, -0.840767880965226590, -0.840794949702319940, +-0.840822016337425590, -0.840849080870476160, -0.840876143301404140, -0.840903203630141700, -0.840930261856621560, -0.840957317980775440, -0.840984372002536280, -0.841011423921836030, +-0.841038473738607180, -0.841065521452782020, -0.841092567064293250, -0.841119610573073160, -0.841146651979053920, -0.841173691282168010, -0.841200728482348060, -0.841227763579526000, +-0.841254796573634670, -0.841281827464606340, -0.841308856252373390, -0.841335882936868560, -0.841362907518023670, -0.841389929995771670, -0.841416950370045050, -0.841443968640775750, +-0.841470984807896620, -0.841497998871339910, -0.841525010831038260, -0.841552020686924360, -0.841579028438930180, -0.841606034086988640, -0.841633037631031700, -0.841660039070992290, +-0.841687038406802700, -0.841714035638395530, -0.841741030765703280, -0.841768023788658670, -0.841795014707194090, -0.841822003521241590, -0.841848990230734230, -0.841875974835604280, +-0.841902957335784460, -0.841929937731207280, -0.841956916021805450, -0.841983892207511020, -0.842010866288257160, -0.842037838263975940, -0.842064808134600050, -0.842091775900062120, +-0.842118741560294870, -0.842145705115230680, -0.842172666564802500, -0.842199625908942370, -0.842226583147583470, -0.842253538280657850, -0.842280491308098340, -0.842307442229837670, +-0.842334391045808430, -0.842361337755943350, -0.842388282360174710, -0.842415224858435670, -0.842442165250658290, -0.842469103536775510, -0.842496039716719940, -0.842522973790424290, +-0.842549905757821180, -0.842576835618843560, -0.842603763373423580, -0.842630689021494520, -0.842657612562988430, -0.842684533997838270, -0.842711453325976860, -0.842738370547336800, +-0.842765285661850830, -0.842792198669451880, -0.842819109570072110, -0.842846018363644920, -0.842872925050102360, -0.842899829629377480, -0.842926732101403120, -0.842953632466111880, +-0.842980530723436820, -0.843007426873310100, -0.843034320915665210, -0.843061212850434120, -0.843088102677550080, -0.843114990396945820, -0.843141876008553950, -0.843168759512307520, +-0.843195640908139370, -0.843222520195981980, -0.843249397375768430, -0.843276272447431200, -0.843303145410903230, -0.843330016266117370, -0.843356885013006540, -0.843383751651503480, +-0.843410616181541340, -0.843437478603052520, -0.843464338915969840, -0.843491197120226350, -0.843518053215754790, -0.843544907202488200, -0.843571759080359310, -0.843598608849301160, +-0.843625456509246360, -0.843652302060128090, -0.843679145501878950, -0.843705986834431760, -0.843732826057719710, -0.843759663171675610, -0.843786498176232410, -0.843813331071323060, +-0.843840161856880160, -0.843866990532837200, -0.843893817099126480, -0.843920641555681250, -0.843947463902434250, -0.843974284139318740, -0.844001102266267790, -0.844027918283213770, +-0.844054732190090200, -0.844081543986829550, -0.844108353673365120, -0.844135161249629730, -0.844161966715556430, -0.844188770071078290, -0.844215571316128340, -0.844242370450639320, +-0.844269167474544610, -0.844295962387776710, -0.844322755190268890, -0.844349545881954210, -0.844376334462765720, -0.844403120932636360, -0.844429905291499420, -0.844456687539287380, +-0.844483467675933960, -0.844510245701371680, -0.844537021615533680, -0.844563795418353250, -0.844590567109763210, -0.844617336689697070, -0.844644104158087330, -0.844670869514867580, +-0.844697632759970340, -0.844724393893329100, -0.844751152914876900, -0.844777909824546700, -0.844804664622271880, -0.844831417307985500, -0.844858167881620380, -0.844884916343110140, +-0.844911662692387270, -0.844938406929385270, -0.844965149054037300, -0.844991889066276540, -0.845018626966035910, -0.845045362753249040, -0.845072096427848640, -0.845098827989767880, +-0.845125557438940020, -0.845152284775298250, -0.845179009998775820, -0.845205733109305800, -0.845232454106821680, -0.845259172991256190, -0.845285889762543040, -0.845312604420614950, +-0.845339316965405320, -0.845366027396847410, -0.845392735714874390, -0.845419441919419530, -0.845446146010416340, -0.845472847987797650, -0.845499547851496950, -0.845526245601447180, +-0.845552941237581730, -0.845579634759834000, -0.845606326168137130, -0.845633015462424750, -0.845659702642629570, -0.845686387708685320, -0.845713070660524920, -0.845739751498081780, +-0.845766430221289390, -0.845793106830080800, -0.845819781324389510, -0.845846453704149010, -0.845873123969292040, -0.845899792119752640, -0.845926458155463410, -0.845953122076358090, +-0.845979783882369940, -0.846006443573432350, -0.846033101149478610, -0.846059756610442410, -0.846086409956256610, -0.846113061186854920, -0.846139710302170390, -0.846166357302136630, +-0.846193002186686920, -0.846219644955754750, -0.846246285609273620, -0.846272924147176590, -0.846299560569397480, -0.846326194875869240, -0.846352827066525590, -0.846379457141299810, +-0.846406085100125270, -0.846432710942935710, -0.846459334669664500, -0.846485956280244700, -0.846512575774610370, -0.846539193152694210, -0.846565808414430190, -0.846592421559751560, +-0.846619032588591950, -0.846645641500884950, -0.846672248296563620, -0.846698852975561910, -0.846725455537812870, -0.846752055983250100, -0.846778654311807210, -0.846805250523417710, +-0.846831844618015190, -0.846858436595533170, -0.846885026455904800, -0.846911614199064130, -0.846938199824944230, -0.846964783333478800, -0.846991364724601460, -0.847017943998245700, +-0.847044521154345030, -0.847071096192833270, -0.847097669113643590, -0.847124239916709930, -0.847150808601965450, -0.847177375169343990, -0.847203939618779160, -0.847230501950204330, +-0.847257062163553560, -0.847283620258759810, -0.847310176235757330, -0.847336730094479180, -0.847363281834859210, -0.847389831456831000, -0.847416378960328180, -0.847442924345284450, +-0.847469467611633660, -0.847496008759308970, -0.847522547788244540, -0.847549084698373420, -0.847575619489629560, -0.847602152161946790, -0.847628682715258490, -0.847655211149498600, +-0.847681737464600850, -0.847708261660498510, -0.847734783737125850, -0.847761303694415820, -0.847787821532302700, -0.847814337250719970, -0.847840850849601370, -0.847867362328880940, +-0.847893871688491840, -0.847920378928368250, -0.847946884048443540, -0.847973387048651550, -0.847999887928926110, -0.848026386689201050, -0.848052883329409870, -0.848079377849486840, +-0.848105870249365120, -0.848132360528978890, -0.848158848688261520, -0.848185334727147190, -0.848211818645569380, -0.848238300443462050, -0.848264780120759230, -0.848291257677394110, +-0.848317733113301160, -0.848344206428413680, -0.848370677622665600, -0.848397146695990980, -0.848423613648323420, -0.848450078479596750, -0.848476541189745140, -0.848503001778702080, +-0.848529460246401520, -0.848555916592777290, -0.848582370817763110, -0.848608822921293140, -0.848635272903300990, -0.848661720763720710, -0.848688166502486350, -0.848714610119531420, +-0.848741051614790190, -0.848767490988196040, -0.848793928239683140, -0.848820363369185430, -0.848846796376636850, -0.848873227261971450, -0.848899656025122850, -0.848926082666025210, +-0.848952507184612240, -0.848978929580818000, -0.849005349854576320, -0.849031768005821360, -0.849058184034486960, -0.849084597940507390, -0.849111009723816030, -0.849137419384347390, +-0.849163826922034960, -0.849190232336813010, -0.849216635628615490, -0.849243036797376340, -0.849269435843029610, -0.849295832765509460, -0.849322227564749840, -0.849348620240684250, +-0.849375010793247290, -0.849401399222372680, -0.849427785527994690, -0.849454169710047170, -0.849480551768464380, -0.849506931703180150, -0.849533309514128640, -0.849559685201243700, +-0.849586058764459580, -0.849612430203710360, -0.849638799518929950, -0.849665166710052660, -0.849691531777012620, -0.849717894719743460, -0.849744255538179890, -0.849770614232255420, +-0.849796970801904420, -0.849823325247060950, -0.849849677567659170, -0.849876027763633470, -0.849902375834917460, -0.849928721781445740, -0.849955065603152040, -0.849981407299970630, +-0.850007746871835670, -0.850034084318681330, -0.850060419640441770, -0.850086752837051480, -0.850113083908444090, -0.850139412854554080, -0.850165739675315390, -0.850192064370662410, +-0.850218386940529200, -0.850244707384850030, -0.850271025703559060, -0.850297341896590900, -0.850323655963878930, -0.850349967905358220, -0.850376277720962360, -0.850402585410625740, +-0.850428890974282650, -0.850455194411867340, -0.850481495723314330, -0.850507794908557320, -0.850534091967531050, -0.850560386900169330, -0.850586679706406560, -0.850612970386177230, +-0.850639258939415390, -0.850665545366055430, -0.850691829666031850, -0.850718111839278370, -0.850744391885729920, -0.850770669805320230, -0.850796945597983910, -0.850823219263655230, +-0.850849490802268460, -0.850875760213757990, -0.850902027498058320, -0.850928292655103610, -0.850954555684828030, -0.850980816587165960, -0.851007075362051780, -0.851033332009420000, +-0.851059586529204880, -0.851085838921341040, -0.851112089185762310, -0.851138337322403630, -0.851164583331198930, -0.851190827212082720, -0.851217068964989390, -0.851243308589853420, +-0.851269546086609210, -0.851295781455191360, -0.851322014695533810, -0.851348245807571510, -0.851374474791238290, -0.851400701646468970, -0.851426926373197830, -0.851453148971359370, +-0.851479369440888310, -0.851505587781718590, -0.851531803993785030, -0.851558018077021810, -0.851584230031363630, -0.851610439856744780, -0.851636647553099760, -0.851662853120363270, +-0.851689056558469830, -0.851715257867353470, -0.851741457046949260, -0.851767654097191130, -0.851793849018013920, -0.851820041809352000, -0.851846232471140000, -0.851872421003312510, +-0.851898607405804030, -0.851924791678548950, -0.851950973821482100, -0.851977153834537540, -0.852003331717650080, -0.852029507470754340, -0.852055681093784820, -0.852081852586676350, +-0.852108021949362970, -0.852134189181779860, -0.852160354283860940, -0.852186517255541180, -0.852212678096755050, -0.852238836807437390, -0.852264993387522480, -0.852291147836945370, +-0.852317300155640220, -0.852343450343541980, -0.852369598400584900, -0.852395744326703840, -0.852421888121833390, -0.852448029785908280, -0.852474169318863110, -0.852500306720632710, +-0.852526441991151460, -0.852552575130353980, -0.852578706138174990, -0.852604835014549310, -0.852630961759411440, -0.852657086372696220, -0.852683208854338570, -0.852709329204272560, +-0.852735447422433570, -0.852761563508755650, -0.852787677463173850, -0.852813789285622900, -0.852839898976037400, -0.852866006534352180, -0.852892111960502300, -0.852918215254421690, +-0.852944316416045960, -0.852970415445309050, -0.852996512342146240, -0.853022607106492030, -0.853048699738281350, -0.853074790237449250, -0.853100878603929800, -0.853126964837658490, +-0.853153048938569470, -0.853179130906597800, -0.853205210741678320, -0.853231288443745850, -0.853257364012735220, -0.853283437448581370, -0.853309508751218580, -0.853335577920582460, +-0.853361644956607050, -0.853387709859227410, -0.853413772628378700, -0.853439833263995420, -0.853465891766012620, -0.853491948134365350, -0.853518002368987890, -0.853544054469815740, +-0.853570104436783160, -0.853596152269825330, -0.853622197968877170, -0.853648241533873420, -0.853674282964749340, -0.853700322261439330, -0.853726359423878760, -0.853752394452002130, +-0.853778427345744380, -0.853804458105040690, -0.853830486729825750, -0.853856513220034640, -0.853882537575602510, -0.853908559796463740, -0.853934579882553830, -0.853960597833807180, +-0.853986613650159150, -0.854012627331544480, -0.854038638877898330, -0.854064648289155740, -0.854090655565251320, -0.854116660706120580, -0.854142663711697890, -0.854168664581918420, +-0.854194663316717450, -0.854220659916029800, -0.854246654379790420, -0.854272646707934790, -0.854298636900397200, -0.854324624957113250, -0.854350610878017450, -0.854376594663045270, +-0.854402576312131460, -0.854428555825211270, -0.854454533202219760, -0.854480508443092090, -0.854506481547762880, -0.854532452516167720, -0.854558421348241230, -0.854584388043918670, +-0.854610352603135110, -0.854636315025825710, -0.854662275311925730, -0.854688233461369910, -0.854714189474093610, -0.854740143350031680, -0.854766095089119380, -0.854792044691291890, +-0.854817992156484240, -0.854843937484631610, -0.854869880675669380, -0.854895821729532160, -0.854921760646155660, -0.854947697425474500, -0.854973632067424160, -0.854999564571939710, +-0.855025494938956410, -0.855051423168409320, -0.855077349260233820, -0.855103273214364860, -0.855129195030737810, -0.855155114709287620, -0.855181032249949680, -0.855206947652659030, +-0.855232860917351180, -0.855258772043961280, -0.855284681032424280, -0.855310587882675780, -0.855336492594650610, -0.855362395168284160, -0.855388295603511710, -0.855414193900268630, +-0.855440090058489980, -0.855465984078111360, -0.855491875959067620, -0.855517765701294230, -0.855543653304726370, -0.855569538769299310, -0.855595422094948430, -0.855621303281608900, +-0.855647182329216440, -0.855673059237705870, -0.855698934007012690, -0.855724806637072070, -0.855750677127819380, -0.855776545479190130, -0.855802411691119370, -0.855828275763542590, +-0.855854137696395400, -0.855879997489612630, -0.855905855143130110, -0.855931710656882670, -0.855957564030806030, -0.855983415264835350, -0.856009264358906230, -0.856035111312953960, +-0.856060956126914130, -0.856086798800721690, -0.856112639334312480, -0.856138477727621420, -0.856164313980584120, -0.856190148093136090, -0.856215980065212710, -0.856241809896749580, +-0.856267637587681650, -0.856293463137944970, -0.856319286547474360, -0.856345107816205430, -0.856370926944073910, -0.856396743931014950, -0.856422558776964160, -0.856448371481857150, +-0.856474182045629080, -0.856499990468215680, -0.856525796749552200, -0.856551600889574160, -0.856577402888217150, -0.856603202745416570, -0.856629000461108010, -0.856654796035227210, +-0.856680589467709310, -0.856706380758489820, -0.856732169907504340, -0.856757956914688480, -0.856783741779977740, -0.856809524503307610, -0.856835305084613810, -0.856861083523831610, +-0.856886859820896960, -0.856912633975744910, -0.856938405988311280, -0.856964175858531570, -0.856989943586341510, -0.857015709171676470, -0.857041472614472500, -0.857067233914664550, +-0.857092993072188780, -0.857118750086980240, -0.857144504958974980, -0.857170257688108280, -0.857196008274316080, -0.857221756717533980, -0.857247503017697370, -0.857273247174742070, +-0.857298989188603590, -0.857324729059217530, -0.857350466786519720, -0.857376202370445650, -0.857401935810931160, -0.857427667107912070, -0.857453396261323550, -0.857479123271101760, +-0.857504848137181860, -0.857530570859500020, -0.857556291437991610, -0.857582009872592480, -0.857607726163238330, -0.857633440309865210, -0.857659152312408080, -0.857684862170803420, +-0.857710569884986400, -0.857736275454892840, -0.857761978880458690, -0.857787680161619550, -0.857813379298311470, -0.857839076290469630, -0.857864771138030390, -0.857890463840929040, +-0.857916154399101520, -0.857941842812483530, -0.857967529081010930, -0.857993213204619630, -0.858018895183245480, -0.858044575016823850, -0.858070252705290910, -0.858095928248582270, +-0.858121601646633760, -0.858147272899381200, -0.858172942006760420, -0.858198608968707370, -0.858224273785158090, -0.858249936456047970, -0.858275596981312840, -0.858301255360888750, +-0.858326911594711530, -0.858352565682717010, -0.858378217624841120, -0.858403867421019820, -0.858429515071188700, -0.858455160575283930, -0.858480803933241110, -0.858506445144996300, +-0.858532084210485320, -0.858557721129644120, -0.858583355902408640, -0.858608988528715030, -0.858634619008498690, -0.858660247341695990, -0.858685873528242550, -0.858711497568074410, +-0.858737119461127410, -0.858762739207337700, -0.858788356806641340, -0.858813972258973930, -0.858839585564271760, -0.858865196722470410, -0.858890805733506070, -0.858916412597314660, +-0.858942017313832350, -0.858967619882994860, -0.858993220304738680, -0.859018818578999090, -0.859044414705712690, -0.859070008684815090, -0.859095600516242450, -0.859121190199930830, +-0.859146777735816270, -0.859172363123834710, -0.859197946363922440, -0.859223527456015160, -0.859249106400049150, -0.859274683195960230, -0.859300257843684690, -0.859325830343158350, +-0.859351400694317590, -0.859376968897098470, -0.859402534951436700, -0.859428098857268790, -0.859453660614530430, -0.859479220223157920, -0.859504777683087420, -0.859530332994254850, +-0.859555886156596620, -0.859581437170048760, -0.859606986034547100, -0.859632532750028270, -0.859658077316427850, -0.859683619733682240, -0.859709160001727590, -0.859734698120499960, +-0.859760234089935630, -0.859785767909970970, -0.859811299580541920, -0.859836829101584320, -0.859862356473034660, -0.859887881694829210, -0.859913404766903920, -0.859938925689195170, +-0.859964444461639330, -0.859989961084172250, -0.860015475556730300, -0.860040987879249540, -0.860066498051666350, -0.860092006073916890, -0.860117511945937440, -0.860143015667664160, +-0.860168517239033540, -0.860194016659981520, -0.860219513930444490, -0.860245009050358610, -0.860270502019660150, -0.860295992838285510, -0.860321481506170830, -0.860346968023252610, +-0.860372452389466800, -0.860397934604750110, -0.860423414669038380, -0.860448892582267980, -0.860474368344375520, -0.860499841955297050, -0.860525313414968960, -0.860550782723327860, +-0.860576249880309560, -0.860601714885850800, -0.860627177739887620, -0.860652638442356510, -0.860678096993193640, -0.860703553392335730, -0.860729007639718820, -0.860754459735279640, +-0.860779909678954120, -0.860805357470678990, -0.860830803110390290, -0.860856246598024620, -0.860881687933518270, -0.860907127116807720, -0.860932564147829480, -0.860957999026519700, +-0.860983431752815220, -0.861008862326651860, -0.861034290747966340, -0.861059717016695040, -0.861085141132774570, -0.861110563096141090, -0.861135982906731550, -0.861161400564481870, +-0.861186816069328790, -0.861212229421208560, -0.861237640620057700, -0.861263049665812690, -0.861288456558410130, -0.861313861297786310, -0.861339263883878160, -0.861364664316621840, +-0.861390062595953740, -0.861415458721810360, -0.861440852694128290, -0.861466244512844150, -0.861491634177894430, -0.861517021689215850, -0.861542407046744450, -0.861567790250417300, +-0.861593171300170440, -0.861618550195940580, -0.861643926937664450, -0.861669301525278430, -0.861694673958719130, -0.861720044237923480, -0.861745412362827420, -0.861770778333368010, +-0.861796142149481530, -0.861821503811104670, -0.861846863318174060, -0.861872220670626190, -0.861897575868398100, -0.861922928911425860, -0.861948279799646390, -0.861973628532996190, +-0.861998975111411770, -0.862024319534829940, -0.862049661803187320, -0.862075001916420610, -0.862100339874466550, -0.862125675677261390, -0.862151009324742310, -0.862176340816845470, +-0.862201670153507790, -0.862226997334666010, -0.862252322360256620, -0.862277645230216440, -0.862302965944482410, -0.862328284502990710, -0.862353600905678590, -0.862378915152482220, +-0.862404227243338430, -0.862429537178184270, -0.862454844956956120, -0.862480150579591150, -0.862505454046025630, -0.862530755356196610, -0.862556054510040470, -0.862581351507494270, +-0.862606646348494600, -0.862631939032978410, -0.862657229560882310, -0.862682517932143340, -0.862707804146697900, -0.862733088204483240, -0.862758370105435550, -0.862783649849491960, +-0.862808927436589210, -0.862834202866664120, -0.862859476139653860, -0.862884747255494580, -0.862910016214123670, -0.862935283015477510, -0.862960547659493150, -0.862985810146107420, +-0.863011070475257270, -0.863036328646879290, -0.863061584660910760, -0.863086838517288070, -0.863112090215948480, -0.863137339756828490, -0.863162587139865050, -0.863187832364995190, +-0.863213075432155860, -0.863238316341283670, -0.863263555092316000, -0.863288791685189240, -0.863314026119840650, -0.863339258396206840, -0.863364488514224870, -0.863389716473831670, +-0.863414942274964180, -0.863440165917559570, -0.863465387401554320, -0.863490606726885820, -0.863515823893490580, -0.863541038901305740, -0.863566251750268350, -0.863591462440315260, +-0.863616670971383620, -0.863641877343410470, -0.863667081556332430, -0.863692283610086880, -0.863717483504610420, -0.863742681239840220, -0.863767876815713320, -0.863793070232166780, +-0.863818261489137540, -0.863843450586562870, -0.863868637524379590, -0.863893822302524430, -0.863919004920934760, -0.863944185379547540, -0.863969363678299910, -0.863994539817128810, +-0.864019713795971640, -0.864044885614765000, -0.864070055273446270, -0.864095222771952280, -0.864120388110220180, -0.864145551288187150, -0.864170712305790120, -0.864195871162966480, +-0.864221027859653270, -0.864246182395787320, -0.864271334771306020, -0.864296484986146310, -0.864321633040245340, -0.864346778933540280, -0.864371922665968300, -0.864397064237466650, +-0.864422203647972180, -0.864447340897422480, -0.864472475985754050, -0.864497608912904610, -0.864522739678811100, -0.864547868283410680, -0.864572994726640620, -0.864598119008438300, +-0.864623241128740450, -0.864648361087484660, -0.864673478884607880, -0.864698594520047270, -0.864723707993740210, -0.864748819305623970, -0.864773928455635610, -0.864799035443712620, +-0.864824140269791930, -0.864849242933811050, -0.864874343435706790, -0.864899441775416670, -0.864924537952878050, -0.864949631968027990, -0.864974723820804090, -0.864999813511143190, +-0.865024901038983000, -0.865049986404260340, -0.865075069606912610, -0.865100150646877290, -0.865125229524091540, -0.865150306238492760, -0.865175380790018430, -0.865200453178605500, +-0.865225523404191570, -0.865250591466713570, -0.865275657366109120, -0.865300721102315600, -0.865325782675270270, -0.865350842084910420, -0.865375899331173760, -0.865400954413997230, +-0.865426007333318200, -0.865451058089074080, -0.865476106681202450, -0.865501153109640380, -0.865526197374325570, -0.865551239475195410, -0.865576279412186960, -0.865601317185238030, +-0.865626352794285570, -0.865651386239267180, -0.865676417520120370, -0.865701446636782500, -0.865726473589191080, -0.865751498377283710, -0.865776521000997330, -0.865801541460269770, +-0.865826559755038190, -0.865851575885240310, -0.865876589850813390, -0.865901601651695050, -0.865926611287822890, -0.865951618759134070, -0.865976624065566300, -0.866001627207056870, +-0.866026628183543260, -0.866051626994963190, -0.866076623641253930, -0.866101618122353200, -0.866126610438198610, -0.866151600588727310, -0.866176588573877140, -0.866201574393585360, +-0.866226558047789700, -0.866251539536427530, -0.866276518859436570, -0.866301496016754210, -0.866326471008318500, -0.866351443834066260, -0.866376414493935650, -0.866401382987863840, +-0.866426349315788550, -0.866451313477647370, -0.866476275473377910, -0.866501235302918000, -0.866526192966204810, -0.866551148463176270, -0.866576101793769760, -0.866601052957922890, +-0.866626001955573380, -0.866650948786658940, -0.866675893451117170, -0.866700835948885810, -0.866725776279902100, -0.866750714444104230, -0.866775650441429350, -0.866800584271815280, +-0.866825515935199850, -0.866850445431520570, -0.866875372760715250, -0.866900297922721610, -0.866925220917477260, -0.866950141744919690, -0.866975060404986730, -0.866999976897616100, +-0.867024891222745510, -0.867049803380312790, -0.867074713370255660, -0.867099621192511600, -0.867124526847018680, -0.867149430333714280, -0.867174331652536210, -0.867199230803422430, +-0.867224127786310530, -0.867249022601138230, -0.867273915247843700, -0.867298805726364090, -0.867323694036637670, -0.867348580178601950, -0.867373464152194630, -0.867398345957353660, +-0.867423225594016860, -0.867448103062122280, -0.867472978361607080, -0.867497851492409770, -0.867522722454467600, -0.867547591247718520, -0.867572457872100580, -0.867597322327551380, +-0.867622184614008970, -0.867647044731411300, -0.867671902679695850, -0.867696758458800790, -0.867721612068663610, -0.867746463509222470, -0.867771312780415080, -0.867796159882179400, +-0.867821004814453460, -0.867845847577175090, -0.867870688170281900, -0.867895526593712270, -0.867920362847403590, -0.867945196931294020, -0.867970028845321370, -0.867994858589423710, +-0.868019686163539190, -0.868044511567605090, -0.868069334801560010, -0.868094155865341440, -0.868118974758887330, -0.868143791482135940, -0.868168606035024990, -0.868193418417492540, +-0.868218228629476730, -0.868243036670915180, -0.868267842541746270, -0.868292646241907500, -0.868317447771337130, -0.868342247129973100, -0.868367044317753470, -0.868391839334616170, +-0.868416632180499580, -0.868441422855341430, -0.868466211359079420, -0.868490997691651940, -0.868515781852996940, -0.868540563843052560, -0.868565343661756640, -0.868590121309047670, +-0.868614896784863140, -0.868639670089141670, -0.868664441221820630, -0.868689210182838620, -0.868713976972133590, -0.868738741589643590, -0.868763504035306780, -0.868788264309061310, +-0.868813022410845020, -0.868837778340596500, -0.868862532098253150, -0.868887283683753560, -0.868912033097035800, -0.868936780338037900, -0.868961525406698240, -0.868986268302954560, +-0.869011009026745440, -0.869035747578008610, -0.869060483956682450, -0.869085218162705010, -0.869109950196014560, -0.869134680056549150, -0.869159407744247380, -0.869184133259046750, +-0.869208856600886090, -0.869233577769703000, -0.869258296765436090, -0.869283013588023290, -0.869307728237403100, -0.869332440713513450, -0.869357151016293070, -0.869381859145679450, +-0.869406565101611520, -0.869431268884026890, -0.869455970492864050, -0.869480669928061390, -0.869505367189556950, -0.869530062277289350, -0.869554755191196400, -0.869579445931216830, +-0.869604134497288350, -0.869628820889349560, -0.869653505107338630, -0.869678187151194050, -0.869702867020853980, -0.869727544716256910, -0.869752220237340890, -0.869776893584044420, +-0.869801564756305550, -0.869826233754062650, -0.869850900577254340, -0.869875565225818660, -0.869900227699694330, -0.869924887998819170, -0.869949546123132130, -0.869974202072570920, +-0.869998855847074150, -0.870023507446580300, -0.870048156871027660, -0.870072804120354700, -0.870097449194499940, -0.870122092093401190, -0.870146732816997610, -0.870171371365226930, +-0.870196007738027740, -0.870220641935338660, -0.870245273957097830, -0.870269903803243870, -0.870294531473715490, -0.870319156968450410, -0.870343780287387680, -0.870368401430465340, +-0.870393020397622010, -0.870417637188796060, -0.870442251803925980, -0.870466864242950610, -0.870491474505807770, -0.870516082592436510, -0.870540688502774770, -0.870565292236761380, +-0.870589893794334710, -0.870614493175433380, -0.870639090379995760, -0.870663685407960690, -0.870688278259266090, -0.870712868933851030, -0.870737457431653650, -0.870762043752612570, +-0.870786627896666390, -0.870811209863753710, -0.870835789653812920, -0.870860367266782840, -0.870884942702601970, -0.870909515961208470, -0.870934087042541160, -0.870958655946538650, +-0.870983222673139430, -0.871007787222282230, -0.871032349593905740, -0.871056909787948250, -0.871081467804348590, -0.871106023643045120, -0.871130577303976580, -0.871155128787081570, +-0.871179678092298680, -0.871204225219566750, -0.871228770168824380, -0.871253312940009850, -0.871277853533062310, -0.871302391947919920, -0.871326928184521510, -0.871351462242805800, +-0.871375994122711380, -0.871400523824177210, -0.871425051347141540, -0.871449576691543440, -0.871474099857321270, -0.871498620844413760, -0.871523139652759740, -0.871547656282297800, +-0.871572170732966780, -0.871596683004705610, -0.871621193097452450, -0.871645701011146470, -0.871670206745726150, -0.871694710301130220, -0.871719211677297490, -0.871743710874166800, +-0.871768207891676750, -0.871792702729766500, -0.871817195388374210, -0.871841685867439150, -0.871866174166899710, -0.871890660286694820, -0.871915144226763310, -0.871939625987043890, +-0.871964105567475610, -0.871988582967996860, -0.872013058188546910, -0.872037531229064020, -0.872062002089487360, -0.872086470769755650, -0.872110937269807820, -0.872135401589582580, +-0.872159863729019100, -0.872184323688055760, -0.872208781466631830, -0.872233237064685700, -0.872257690482156510, -0.872282141718983110, -0.872306590775104310, -0.872331037650458940, +-0.872355482344986390, -0.872379924858625030, -0.872404365191313590, -0.872428803342991330, -0.872453239313596970, -0.872477673103069670, -0.872502104711348040, -0.872526534138371450, +-0.872550961384078280, -0.872575386448407820, -0.872599809331298880, -0.872624230032690300, -0.872648648552521110, -0.872673064890730380, -0.872697479047256920, -0.872721891022040010, +-0.872746300815018140, -0.872770708426130800, -0.872795113855316380, -0.872819517102514260, -0.872843918167663380, -0.872868317050702560, -0.872892713751571290, -0.872917108270207960, +-0.872941500606552070, -0.872965890760542210, -0.872990278732117650, -0.873014664521217340, -0.873039048127780440, -0.873063429551745980, -0.873087808793053030, -0.873112185851640410, +-0.873136560727447500, -0.873160933420413010, -0.873185303930476220, -0.873209672257576060, -0.873234038401651810, -0.873258402362642410, -0.873282764140487220, -0.873307123735124980, +-0.873331481146495060, -0.873355836374536290, -0.873380189419187940, -0.873404540280389050, -0.873428888958078800, -0.873453235452196550, -0.873477579762681030, -0.873501921889471840, +-0.873526261832507590, -0.873550599591727650, -0.873574935167071190, -0.873599268558477360, -0.873623599765885440, -0.873647928789234810, -0.873672255628463960, -0.873696580283512820, +-0.873720902754320020, -0.873745223040824910, -0.873769541142966680, -0.873793857060684690, -0.873818170793917990, -0.873842482342606200, -0.873866791706688130, -0.873891098886102840, +-0.873915403880789810, -0.873939706690688320, -0.873964007315737530, -0.873988305755876720, -0.874012602011045360, -0.874036896081182290, -0.874061187966227230, -0.874085477666118880, +-0.874109765180796860, -0.874134050510200540, -0.874158333654268980, -0.874182614612941670, -0.874206893386157980, -0.874231169973856860, -0.874255444375978020, -0.874279716592460400, +-0.874303986623243490, -0.874328254468266560, -0.874352520127469000, -0.874376783600790410, -0.874401044888169610, -0.874425303989546320, -0.874449560904859700, -0.874473815634049130, +-0.874498068177054000, -0.874522318533813680, -0.874546566704267560, -0.874570812688355350, -0.874595056486015760, -0.874619298097188860, -0.874643537521813450, -0.874667774759829150, +-0.874692009811175450, -0.874716242675791730, -0.874740473353617490, -0.874764701844592100, -0.874788928148654830, -0.874813152265745520, -0.874837374195803100, -0.874861593938767170, +-0.874885811494577340, -0.874910026863172870, -0.874934240044493610, -0.874958451038478580, -0.874982659845067510, -0.875006866464199670, -0.875031070895814670, -0.875055273139851990, +-0.875079473196251120, -0.875103671064951570, -0.875127866745893050, -0.875152060239014600, -0.875176251544256270, -0.875200440661557110, -0.875224627590856840, -0.875248812332094950, +-0.875272994885211040, -0.875297175250144720, -0.875321353426835590, -0.875345529415223140, -0.875369703215246650, -0.875393874826845830, -0.875418044249960390, -0.875442211484529830, +-0.875466376530493750, -0.875490539387791870, -0.875514700056363560, -0.875538858536148660, -0.875563014827086320, -0.875587168929116480, -0.875611320842178740, -0.875635470566212710, +-0.875659618101158000, -0.875683763446954420, -0.875707906603541250, -0.875732047570858540, -0.875756186348845560, -0.875780322937442010, -0.875804457336587630, -0.875828589546222220, +-0.875852719566285520, -0.875876847396716780, -0.875900973037456070, -0.875925096488442860, -0.875949217749616760, -0.875973336820917710, -0.875997453702285320, -0.876021568393659190, +-0.876045680894979470, -0.876069791206185330, -0.876093899327216820, -0.876118005258013420, -0.876142108998515080, -0.876166210548661390, -0.876190309908392200, -0.876214407077647190, +-0.876238502056366440, -0.876262594844489100, -0.876286685441955650, -0.876310773848705150, -0.876334860064677760, -0.876358944089813190, -0.876383025924051260, -0.876407105567332030, +-0.876431183019594880, -0.876455258280779860, -0.876479331350826560, -0.876503402229674930, -0.876527470917264680, -0.876551537413535860, -0.876575601718428190, -0.876599663831881700, +-0.876623723753835900, -0.876647781484230950, -0.876671837023006330, -0.876695890370102090, -0.876719941525458180, -0.876743990489014410, -0.876768037260710840, -0.876792081840487070, +-0.876816124228283260, -0.876840164424038890, -0.876864202427694140, -0.876888238239188820, -0.876912271858462990, -0.876936303285456350, -0.876960332520109300, -0.876984359562361200, +-0.877008384412152340, -0.877032407069422320, -0.877056427534111280, -0.877080445806159180, -0.877104461885506060, -0.877128475772091630, -0.877152487465856390, -0.877176496966739610, +-0.877200504274681770, -0.877224509389622490, -0.877248512311502030, -0.877272513040260220, -0.877296511575837100, -0.877320507918172950, -0.877344502067207270, -0.877368494022880640, +-0.877392483785132460, -0.877416471353903100, -0.877440456729132620, -0.877464439910760950, -0.877488420898728140, -0.877512399692974570, -0.877536376293439720, -0.877560350700064220, +-0.877584322912787650, -0.877608292931550180, -0.877632260756291970, -0.877656226386953180, -0.877680189823473840, -0.877704151065794140, -0.877728110113853880, -0.877752066967593560, +-0.877776021626952900, -0.877799974091872160, -0.877823924362291510, -0.877847872438151100, -0.877871818319391100, -0.877895762005951430, -0.877919703497772490, -0.877943642794794200, +-0.877967579896956730, -0.877991514804200230, -0.878015447516464990, -0.878039378033691250, -0.878063306355819200, -0.878087232482788640, -0.878111156414540180, -0.878135078151013770, +-0.878158997692149560, -0.878182915037887810, -0.878206830188168810, -0.878230743142933030, -0.878254653902120100, -0.878278562465670710, -0.878302468833524810, -0.878326373005622660, +-0.878350274981904540, -0.878374174762310830, -0.878398072346781690, -0.878421967735257490, -0.878445860927678180, -0.878469751923984470, -0.878493640724116180, -0.878517527328013800, +-0.878541411735617510, -0.878565293946867780, -0.878589173961704770, -0.878613051780069100, -0.878636927401900470, -0.878660800827139820, -0.878684672055726980, -0.878708541087602430, +-0.878732407922706460, -0.878756272560979550, -0.878780135002362180, -0.878803995246794200, -0.878827853294216530, -0.878851709144568890, -0.878875562797792110, -0.878899414253826340, +-0.878923263512612070, -0.878947110574089590, -0.878970955438199590, -0.878994798104882010, -0.879018638574077580, -0.879042476845726450, -0.879066312919769000, -0.879090146796145830, +-0.879113978474797330, -0.879137807955663870, -0.879161635238686070, -0.879185460323804180, -0.879209283210958480, -0.879233103900089460, -0.879256922391137730, -0.879280738684043770, +-0.879304552778747860, -0.879328364675190930, -0.879352174373312700, -0.879375981873054320, -0.879399787174355850, -0.879423590277157770, -0.879447391181400810, -0.879471189887025330, +-0.879494986393971940, -0.879518780702181260, -0.879542572811593430, -0.879566362722149280, -0.879590150433789190, -0.879613935946453540, -0.879637719260083160, -0.879661500374618430, +-0.879685279290000180, -0.879709056006168550, -0.879732830523064500, -0.879756602840628180, -0.879780372958800290, -0.879804140877521460, -0.879827906596732270, -0.879851670116373330, +-0.879875431436385470, -0.879899190556708840, -0.879922947477284390, -0.879946702198052380, -0.879970454718953630, -0.879994205039928650, -0.880017953160918240, -0.880041699081862920, +-0.880065442802703600, -0.880089184323380460, -0.880112923643834530, -0.880136660764006100, -0.880160395683835970, -0.880184128403264990, -0.880207858922233520, -0.880231587240682730, +-0.880255313358552780, -0.880279037275784710, -0.880302758992318800, -0.880326478508095980, -0.880350195823057070, -0.880373910937142570, -0.880397623850293300, -0.880421334562450310, +-0.880445043073553650, -0.880468749383544580, -0.880492453492363490, -0.880516155399951210, -0.880539855106248550, -0.880563552611196340, -0.880587247914735190, -0.880610941016806150, +-0.880634631917349700, -0.880658320616306440, -0.880682007113617440, -0.880705691409223500, -0.880729373503065240, -0.880753053395083580, -0.880776731085219480, -0.880800406573413300, +-0.880824079859606310, -0.880847750943739020, -0.880871419825752230, -0.880895086505587010, -0.880918750983183950, -0.880942413258484100, -0.880966073331428400, -0.880989731201957340, +-0.881013386870012070, -0.881037040335533210, -0.881060691598461680, -0.881084340658738530, -0.881107987516304370, -0.881131632171100580, -0.881155274623067530, -0.881178914872146390, +-0.881202552918277760, -0.881226188761402800, -0.881249822401462430, -0.881273453838397390, -0.881297083072148710, -0.881320710102657670, -0.881344334929864530, -0.881367957553710780, +-0.881391577974136920, -0.881415196191084100, -0.881438812204493380, -0.881462426014305580, -0.881486037620461740, -0.881509647022902910, -0.881533254221569810, -0.881556859216403810, +-0.881580462007345520, -0.881604062594335990, -0.881627660977316260, -0.881651257156227500, -0.881674851131010740, -0.881698442901606590, -0.881722032467956550, -0.881745619830001330, +-0.881769204987681960, -0.881792787940939630, -0.881816368689715360, -0.881839947233950090, -0.881863523573585220, -0.881887097708561220, -0.881910669638819810, -0.881934239364301490, +-0.881957806884947510, -0.881981372200699170, -0.882004935311497260, -0.882028496217283080, -0.882052054917997760, -0.882075611413582370, -0.882099165703977840, -0.882122717789125210, +-0.882146267668965980, -0.882169815343440970, -0.882193360812491440, -0.882216904076058680, -0.882240445134083510, -0.882263983986507410, -0.882287520633271090, -0.882311055074316060, +-0.882334587309583360, -0.882358117339014150, -0.882381645162549690, -0.882405170780131360, -0.882428694191699890, -0.882452215397196760, -0.882475734396563020, -0.882499251189739930, +-0.882522765776668660, -0.882546278157290480, -0.882569788331546870, -0.882593296299378550, -0.882616802060727230, -0.882640305615533640, -0.882663806963739360, -0.882687306105285450, +-0.882710803040113400, -0.882734297768164260, -0.882757790289379620, -0.882781280603700310, -0.882804768711067940, -0.882828254611423450, -0.882851738304708420, -0.882875219790863920, +-0.882898699069831430, -0.882922176141552220, -0.882945651005967780, -0.882969123663018940, -0.882992594112647520, -0.883016062354794460, -0.883039528389401140, -0.883062992216409160, +-0.883086453835759570, -0.883109913247394070, -0.883133370451253620, -0.883156825447279910, -0.883180278235414010, -0.883203728815597280, -0.883227177187771330, -0.883250623351877430, +-0.883274067307856960, -0.883297509055651520, -0.883320948595202160, -0.883344385926450480, -0.883367821049337750, -0.883391253963805470, -0.883414684669795000, -0.883438113167247850, +-0.883461539456105620, -0.883484963536309340, -0.883508385407800860, -0.883531805070521200, -0.883555222524412100, -0.883578637769414920, -0.883602050805471050, -0.883625461632522090, +-0.883648870250509750, -0.883672276659374980, -0.883695680859059700, -0.883719082849505070, -0.883742482630652690, -0.883765880202444070, -0.883789275564820900, -0.883812668717724350, +-0.883836059661096460, -0.883859448394878180, -0.883882834919011540, -0.883906219233437480, -0.883929601338097950, -0.883952981232934420, -0.883976358917888390, -0.883999734392901690, +-0.884023107657915470, -0.884046478712871790, -0.884069847557711560, -0.884093214192376740, -0.884116578616808920, -0.884139940830949600, -0.884163300834740480, -0.884186658628123290, +-0.884210014211039290, -0.884233367583430410, -0.884256718745237920, -0.884280067696403550, -0.884303414436869110, -0.884326758966576200, -0.884350101285466210, -0.884373441393481290, +-0.884396779290562600, -0.884420114976652070, -0.884443448451691090, -0.884466779715621490, -0.884490108768384960, -0.884513435609923130, -0.884536760240177910, -0.884560082659090590, +-0.884583402866603310, -0.884606720862657350, -0.884630036647194420, -0.884653350220156560, -0.884676661581485280, -0.884699970731122280, -0.884723277669009600, -0.884746582395088630, +-0.884769884909301310, -0.884793185211589010, -0.884816483301893890, -0.884839779180157440, -0.884863072846321600, -0.884886364300328300, -0.884909653542118810, -0.884932940571635520, +-0.884956225388819570, -0.884979507993613020, -0.885002788385957810, -0.885026066565795520, -0.885049342533068220, -0.885072616287717610, -0.885095887829685290, -0.885119157158913540, +-0.885142424275343620, -0.885165689178917690, -0.885188951869577470, -0.885212212347264880, -0.885235470611921870, -0.885258726663490260, -0.885281980501911650, -0.885305232127128310, +-0.885328481539081720, -0.885351728737713950, -0.885374973722966810, -0.885398216494782230, -0.885421457053102270, -0.885444695397868520, -0.885467931529023260, -0.885491165446507860, +-0.885514397150264700, -0.885537626640235390, -0.885560853916362080, -0.885584078978586710, -0.885607301826851320, -0.885630522461097410, -0.885653740881267360, -0.885676957087302870, +-0.885700171079145890, -0.885723382856738570, -0.885746592420022740, -0.885769799768940440, -0.885793004903433820, -0.885816207823444720, -0.885839408528914960, -0.885862607019786590, +-0.885885803296001750, -0.885908997357502390, -0.885932189204230450, -0.885955378836128400, -0.885978566253137640, -0.886001751455200550, -0.886024934442259050, -0.886048115214255080, +-0.886071293771130920, -0.886094470112828490, -0.886117644239289850, -0.886140816150457370, -0.886163985846272540, -0.886187153326678080, -0.886210318591615480, -0.886233481641027110, +-0.886256642474854920, -0.886279801093041280, -0.886302957495528230, -0.886326111682257610, -0.886349263653171900, -0.886372413408212930, -0.886395560947322860, -0.886418706270443830, +-0.886441849377518130, -0.886464990268487680, -0.886488128943295100, -0.886511265401881960, -0.886534399644190780, -0.886557531670163490, -0.886580661479742350, -0.886603789072869520, +-0.886626914449487270, -0.886650037609537640, -0.886673158552963250, -0.886696277279705680, -0.886719393789707540, -0.886742508082910890, -0.886765620159257860, -0.886788730018690850, +-0.886811837661151900, -0.886834943086583620, -0.886858046294927820, -0.886881147286127100, -0.886904246060123300, -0.886927342616858900, -0.886950436956276070, -0.886973529078317170, +-0.886996618982924480, -0.887019706670040490, -0.887042792139607020, -0.887065875391566670, -0.887088956425861500, -0.887112035242433980, -0.887135111841226290, -0.887158186222180900, +-0.887181258385239980, -0.887204328330346130, -0.887227396057441500, -0.887250461566468140, -0.887273524857368550, -0.887296585930085310, -0.887319644784560490, -0.887342701420736570, +-0.887365755838556150, -0.887388808037961050, -0.887411858018894220, -0.887434905781297580, -0.887457951325113630, -0.887480994650284740, -0.887504035756753410, -0.887527074644462010, +-0.887550111313353040, -0.887573145763368650, -0.887596177994451670, -0.887619208006543920, -0.887642235799588230, -0.887665261373526970, -0.887688284728302520, -0.887711305863857490, +-0.887734324780134140, -0.887757341477075080, -0.887780355954622460, -0.887803368212718990, -0.887826378251307060, -0.887849386070329260, -0.887872391669727980, -0.887895395049445810, +-0.887918396209425030, -0.887941395149608460, -0.887964391869938250, -0.887987386370357010, -0.888010378650807340, -0.888033368711231620, -0.888056356551572560, -0.888079342171772870, +-0.888102325571774490, -0.888125306751520570, -0.888148285710953170, -0.888171262450015100, -0.888194236968648850, -0.888217209266796930, -0.888240179344402250, -0.888263147201406980, +-0.888286112837753940, -0.888309076253385510, -0.888332037448244290, -0.888354996422273110, -0.888377953175414350, -0.888400907707610710, -0.888423860018805020, -0.888446810108939440, +-0.888469757977957130, -0.888492703625800130, -0.888515647052411370, -0.888538588257733570, -0.888561527241709230, -0.888584464004281150, -0.888607398545392060, -0.888630330864984440, +-0.888653260963000790, -0.888676188839384040, -0.888699114494076790, -0.888722037927021760, -0.888744959138161650, -0.888767878127439290, -0.888790794894797180, -0.888813709440178120, +-0.888836621763524630, -0.888859531864779620, -0.888882439743885810, -0.888905345400785810, -0.888928248835422540, -0.888951150047738840, -0.888974049037676960, -0.888996945805180290, +-0.889019840350190990, -0.889042732672651990, -0.889065622772506340, -0.889088510649696520, -0.889111396304165690, -0.889134279735856130, -0.889157160944711090, -0.889180039930672960, +-0.889202916693684680, -0.889225791233689170, -0.889248663550629040, -0.889271533644447440, -0.889294401515087100, -0.889317267162490600, -0.889340130586601110, -0.889362991787361110, +-0.889385850764713550, -0.889408707518601460, -0.889431562048967560, -0.889454414355754790, -0.889477264438906180, -0.889500112298364230, -0.889522957934072100, -0.889545801345972500, +-0.889568642534008360, -0.889591481498122500, -0.889614318238258090, -0.889637152754358060, -0.889659985046364900, -0.889682815114221980, -0.889705642957871800, -0.889728468577257510, +-0.889751291972322170, -0.889774113143008470, -0.889796932089259580, -0.889819748811018440, -0.889842563308227860, -0.889865375580831010, -0.889888185628770480, -0.889910993451989540, +-0.889933799050431130, -0.889956602424038180, -0.889979403572753740, -0.890002202496521070, -0.890024999195282770, -0.890047793668981790, -0.890070585917561390, -0.890093375940964490, +-0.890116163739134160, -0.890138949312013430, -0.890161732659545460, -0.890184513781673070, -0.890207292678339530, -0.890230069349487560, -0.890252843795060420, -0.890275616015001160, +-0.890298386009252930, -0.890321153777758670, -0.890343919320461750, -0.890366682637304780, -0.890389443728231370, -0.890412202593184100, -0.890434959232106360, -0.890457713644941200, +-0.890480465831631760, -0.890503215792121440, -0.890525963526352720, -0.890548709034269410, -0.890571452315814140, -0.890594193370930150, -0.890616932199560730, -0.890639668801648910, +-0.890662403177138070, -0.890685135325971270, -0.890707865248091530, -0.890730592943442260, -0.890753318411966370, -0.890776041653607130, -0.890798762668307820, -0.890821481456011590, +-0.890844198016661700, -0.890866912350201430, -0.890889624456573710, -0.890912334335722140, -0.890935041987589550, -0.890957747412119420, -0.890980450609254790, -0.891003151578939170, +-0.891025850321115700, -0.891048546835727540, -0.891071241122718180, -0.891093933182030450, -0.891116623013607940, -0.891139310617393930, -0.891161995993331570, -0.891184679141364230, +-0.891207360061435420, -0.891230038753488050, -0.891252715217465740, -0.891275389453311420, -0.891298061460968570, -0.891320731240380690, -0.891343398791490940, -0.891366064114242910, +-0.891388727208579420, -0.891411388074444420, -0.891434046711780730, -0.891456703120531820, -0.891479357300641320, -0.891502009252052360, -0.891524658974708340, -0.891547306468552850, +-0.891569951733528930, -0.891592594769580420, -0.891615235576650120, -0.891637874154681760, -0.891660510503618720, -0.891683144623404370, -0.891705776513982200, -0.891728406175295810, +-0.891751033607288130, -0.891773658809903110, -0.891796281783083790, -0.891818902526773650, -0.891841521040916410, -0.891864137325455220, -0.891886751380333910, -0.891909363205495630, +-0.891931972800884100, -0.891954580166442360, -0.891977185302114230, -0.891999788207843090, -0.892022388883572550, -0.892044987329245980, -0.892067583544807200, -0.892090177530199260, +-0.892112769285365980, -0.892135358810250630, -0.892157946104796930, -0.892180531168948350, -0.892203114002648400, -0.892225694605840670, -0.892248272978468980, -0.892270849120476490, +-0.892293423031806810, -0.892315994712403420, -0.892338564162210130, -0.892361131381170460, -0.892383696369227870, -0.892406259126326320, -0.892428819652408940, -0.892451377947419690, +-0.892473934011301710, -0.892496487843999040, -0.892519039445455080, -0.892541588815613520, -0.892564135954417970, -0.892586680861812250, -0.892609223537739640, -0.892631763982144280, +-0.892654302194969220, -0.892676838176158390, -0.892699371925655520, -0.892721903443404190, -0.892744432729348340, -0.892766959783431120, -0.892789484605596820, -0.892812007195788460, +-0.892834527553950210, -0.892857045680025550, -0.892879561573958420, -0.892902075235692210, -0.892924586665171160, -0.892947095862338340, -0.892969602827138000, -0.892992107559513530, +-0.893014610059408740, -0.893037110326767360, -0.893059608361533310, -0.893082104163650190, -0.893104597733061940, -0.893127089069712170, -0.893149578173544680, -0.893172065044503190, +-0.893194549682531540, -0.893217032087573410, -0.893239512259572770, -0.893261990198473520, -0.893284465904219170, -0.893306939376753760, -0.893329410616020780, -0.893351879621964380, +-0.893374346394528280, -0.893396810933656190, -0.893419273239292160, -0.893441733311380220, -0.893464191149863640, -0.893486646754686810, -0.893509100125793100, -0.893531551263126780, +-0.893554000166631450, -0.893576446836251260, -0.893598891271929820, -0.893621333473611390, -0.893643773441239690, -0.893666211174758310, -0.893688646674111300, -0.893711079939242810, +-0.893733510970096570, -0.893755939766616600, -0.893778366328746960, -0.893800790656431140, -0.893823212749613630, -0.893845632608237790, -0.893868050232248020, -0.893890465621588030, +-0.893912878776201850, -0.893935289696033530, -0.893957698381027120, -0.893980104831126330, -0.894002509046275430, -0.894024911026418120, -0.894047310771498460, -0.894069708281460600, +-0.894092103556248460, -0.894114496595806220, -0.894136887400077570, -0.894159275969006790, -0.894181662302537820, -0.894204046400614570, -0.894226428263181220, -0.894248807890181800, +-0.894271185281560350, -0.894293560437261160, -0.894315933357227810, -0.894338304041404910, -0.894360672489736050, -0.894383038702165400, -0.894405402678637220, -0.894427764419095550, +-0.894450123923484550, -0.894472481191748270, -0.894494836223830750, -0.894517189019676250, -0.894539539579228600, -0.894561887902432070, -0.894584233989230810, -0.894606577839568980, +-0.894628919453390960, -0.894651258830640340, -0.894673595971261840, -0.894695930875199160, -0.894718263542396700, -0.894740593972798480, -0.894762922166348900, -0.894785248122991870, +-0.894807571842672010, -0.894829893325333030, -0.894852212570919400, -0.894874529579375190, -0.894896844350644540, -0.894919156884671830, -0.894941467181401220, -0.894963775240776970, +-0.894986081062743470, -0.895008384647244750, -0.895030685994224860, -0.895052985103628300, -0.895075281975399210, -0.895097576609481970, -0.895119869005820750, -0.895142159164360130, +-0.895164447085043840, -0.895186732767816680, -0.895209016212622500, -0.895231297419405660, -0.895253576388110650, -0.895275853118681740, -0.895298127611063200, -0.895320399865199510, +-0.895342669881034610, -0.895364937658513220, -0.895387203197579360, -0.895409466498177430, -0.895431727560251910, -0.895453986383746960, -0.895476242968607280, -0.895498497314776820, +-0.895520749422200280, -0.895542999290821710, -0.895565246920585700, -0.895587492311436420, -0.895609735463318570, -0.895631976376176310, -0.895654215049954240, -0.895676451484596510, +-0.895698685680047850, -0.895720917636252280, -0.895743147353154410, -0.895765374830698620, -0.895787600068829400, -0.895809823067491240, -0.895832043826628730, -0.895854262346185810, +-0.895876478626107530, -0.895898692666337810, -0.895920904466821380, -0.895943114027502710, -0.895965321348326180, -0.895987526429236620, -0.896009729270178080, -0.896031929871095370, +-0.896054128231932530, -0.896076324352634510, -0.896098518233145680, -0.896120709873410410, -0.896142899273373540, -0.896165086432979540, -0.896187271352172580, -0.896209454030897690, +-0.896231634469099040, -0.896253812666721220, -0.896275988623708830, -0.896298162340006590, -0.896320333815558870, -0.896342503050310490, -0.896364670044205840, -0.896386834797189390, +-0.896408997309205870, -0.896431157580199760, -0.896453315610115880, -0.896475471398898600, -0.896497624946492880, -0.896519776252842850, -0.896541925317893670, -0.896564072141589400, +-0.896586216723875060, -0.896608359064695050, -0.896630499163994180, -0.896652637021717050, -0.896674772637808590, -0.896696906012212970, -0.896719037144875330, -0.896741166035739830, +-0.896763292684751410, -0.896785417091854780, -0.896807539256994630, -0.896829659180115810, -0.896851776861162690, -0.896873892300080190, -0.896896005496812920, -0.896918116451305590, +-0.896940225163502910, -0.896962331633349710, -0.896984435860790690, -0.897006537845770780, -0.897028637588234260, -0.897050735088126380, -0.897072830345391540, -0.897094923359974540, +-0.897117014131820320, -0.897139102660873490, -0.897161188947078970, -0.897183272990381590, -0.897205354790725830, -0.897227434348056960, -0.897249511662319250, -0.897271586733457750, +-0.897293659561417380, -0.897315730146142740, -0.897337798487579000, -0.897359864585670630, -0.897381928440362690, -0.897403990051599880, -0.897426049419327020, -0.897448106543488940, +-0.897470161424030800, -0.897492214060897080, -0.897514264454033040, -0.897536312603383290, -0.897558358508892760, -0.897580402170506280, -0.897602443588168760, -0.897624482761825050, +-0.897646519691420290, -0.897668554376899300, -0.897690586818206790, -0.897712617015287930, -0.897734644968087410, -0.897756670676550290, -0.897778694140621390, -0.897800715360245860, +-0.897822734335368520, -0.897844751065934530, -0.897866765551888490, -0.897888777793175660, -0.897910787789740760, -0.897932795541528830, -0.897954801048485020, -0.897976804310554160, +-0.897998805327681170, -0.898020804099811550, -0.898042800626889570, -0.898064794908860820, -0.898086786945670010, -0.898108776737262080, -0.898130764283582290, -0.898152749584575580, +-0.898174732640187210, -0.898196713450361780, -0.898218692015044670, -0.898240668334180810, -0.898262642407715140, -0.898284614235592920, -0.898306583817759190, -0.898328551154158990, +-0.898350516244737610, -0.898372479089439730, -0.898394439688210870, -0.898416398040995710, -0.898438354147739540, -0.898460308008387500, -0.898482259622884640, -0.898504208991176220, +-0.898526156113207410, -0.898548100988923240, -0.898570043618268530, -0.898591984001188780, -0.898613922137629140, -0.898635858027534650, -0.898657791670850470, -0.898679723067521970, +-0.898701652217494100, -0.898723579120712210, -0.898745503777121150, -0.898767426186666380, -0.898789346349293080, -0.898811264264946400, -0.898833179933571480, -0.898855093355113930, +-0.898877004529518350, -0.898898913456730450, -0.898920820136695160, -0.898942724569357750, -0.898964626754663600, -0.898986526692557740, -0.899008424382985890, -0.899030319825892770, +-0.899052213021223960, -0.899074103968924510, -0.899095992668939800, -0.899117879121215100, -0.899139763325695670, -0.899161645282326890, -0.899183524991054140, -0.899205402451822340, +-0.899227277664577330, -0.899249150629263800, -0.899271021345827480, -0.899292889814213630, -0.899314756034367500, -0.899336620006234600, -0.899358481729760180, -0.899380341204889520, +-0.899402198431568100, -0.899424053409740960, -0.899445906139353820, -0.899467756620351830, -0.899489604852680370, -0.899511450836285250, -0.899533294571111200, -0.899555136057104130, +-0.899576975294208990, -0.899598812282371480, -0.899620647021536990, -0.899642479511650770, -0.899664309752658430, -0.899686137744505450, -0.899707963487136890, -0.899729786980498770, +-0.899751608224535810, -0.899773427219193960, -0.899795243964418570, -0.899817058460154920, -0.899838870706348710, -0.899860680702945560, -0.899882488449890610, -0.899904293947129340, +-0.899926097194607260, -0.899947898192270060, -0.899969696940063010, -0.899991493437931720, -0.900013287685821890, -0.900035079683678680, -0.900056869431447910, -0.900078656929074850, +-0.900100442176505090, -0.900122225173684230, -0.900144005920557880, -0.900165784417071400, -0.900187560663170740, -0.900209334658800930, -0.900231106403908020, -0.900252875898437170, +-0.900274643142334070, -0.900296408135544350, -0.900318170878013690, -0.900339931369687710, -0.900361689610511770, -0.900383445600431820, -0.900405199339393000, -0.900426950827341250, +-0.900448700064222060, -0.900470447049981140, -0.900492191784564080, -0.900513934267916820, -0.900535674499984400, -0.900557412480713080, -0.900579148210048030, -0.900600881687935060, +-0.900622612914320000, -0.900644341889148330, -0.900666068612365760, -0.900687793083918220, -0.900709515303751100, -0.900731235271810320, -0.900752952988041260, -0.900774668452389850, +-0.900796381664801690, -0.900818092625222610, -0.900839801333598530, -0.900861507789874730, -0.900883211993997350, -0.900904913945911770, -0.900926613645563920, -0.900948311092899520, +-0.900970006287864280, -0.900991699230404120, -0.901013389920464870, -0.901035078357991900, -0.901056764542931490, -0.901078448475229000, -0.901100130154830370, -0.901121809581681310, +-0.901143486755727860, -0.901165161676915630, -0.901186834345190760, -0.901208504760498740, -0.901230172922785180, -0.901251838831996330, -0.901273502488077800, -0.901295163890975640, +-0.901316823040635430, -0.901338479937003450, -0.901360134580024950, -0.901381786969646440, -0.901403437105813170, -0.901425084988471400, -0.901446730617566860, -0.901468373993045470, +-0.901490015114853270, -0.901511653982936090, -0.901533290597239630, -0.901554924957710170, -0.901576557064293180, -0.901598186916934720, -0.901619814515580930, -0.901641439860177530, +-0.901663062950670780, -0.901684683787006060, -0.901706302369129960, -0.901727918696987760, -0.901749532770525940, -0.901771144589690210, -0.901792754154426610, -0.901814361464681080, +-0.901835966520399880, -0.901857569321528610, -0.901879169868013530, -0.901900768159800360, -0.901922364196835360, -0.901943957979064350, -0.901965549506433480, -0.901987138778888700, +-0.902008725796376360, -0.902030310558841970, -0.902051893066231900, -0.902073473318491970, -0.902095051315568440, -0.902116627057407250, -0.902138200543954440, -0.902159771775156270, +-0.902181340750958570, -0.902202907471307710, -0.902224471936149300, -0.902246034145429810, -0.902267594099095180, -0.902289151797091570, -0.902310707239365130, -0.902332260425862120, +-0.902353811356528260, -0.902375360031310030, -0.902396906450153140, -0.902418450613004080, -0.902439992519808890, -0.902461532170513720, -0.902483069565064630, -0.902504604703408210, +-0.902526137585490160, -0.902547668211256650, -0.902569196580653930, -0.902590722693628170, -0.902612246550125620, -0.902633768150092550, -0.902655287493475230, -0.902676804580219370, +-0.902698319410271790, -0.902719831983578190, -0.902741342300085070, -0.902762850359738580, -0.902784356162484980, -0.902805859708270430, -0.902827360997041420, -0.902848860028743870, +-0.902870356803324280, -0.902891851320728690, -0.902913343580903470, -0.902934833583794780, -0.902956321329349110, -0.902977806817512830, -0.902999290048231870, -0.903020771021452840, +-0.903042249737121660, -0.903063726195184820, -0.903085200395588710, -0.903106672338279680, -0.903128142023203910, -0.903149609450307870, -0.903171074619537720, -0.903192537530840060, +-0.903213998184160930, -0.903235456579446700, -0.903256912716643880, -0.903278366595698820, -0.903299818216557800, -0.903321267579167420, -0.903342714683473710, -0.903364159529423390, +-0.903385602116962390, -0.903407042446037530, -0.903428480516594970, -0.903449916328581290, -0.903471349881942890, -0.903492781176626010, -0.903514210212577380, -0.903535636989742930, +-0.903557061508069470, -0.903578483767503380, -0.903599903767991040, -0.903621321509478940, -0.903642736991913780, -0.903664150215241600, -0.903685561179409120, -0.903706969884362610, +-0.903728376330048650, -0.903749780516413860, -0.903771182443404490, -0.903792582110967360, -0.903813979519048630, -0.903835374667595230, -0.903856767556553090, -0.903878158185869030, +-0.903899546555489540, -0.903920932665361330, -0.903942316515430670, -0.903963698105644480, -0.903985077435948800, -0.904006454506290580, -0.904027829316616070, -0.904049201866871990, +-0.904070572157004930, -0.904091940186961480, -0.904113305956688150, -0.904134669466131750, -0.904156030715238420, -0.904177389703955230, -0.904198746432228420, -0.904220100900004710, +-0.904241453107230700, -0.904262803053853090, -0.904284150739818720, -0.904305496165073720, -0.904326839329565260, -0.904348180233239480, -0.904369518876043220, -0.904390855257923070, +-0.904412189378825950, -0.904433521238698250, -0.904454850837487000, -0.904476178175138370, -0.904497503251599500, -0.904518826066816770, -0.904540146620736900, -0.904561464913306580, +-0.904582780944472750, -0.904604094714181910, -0.904625406222380970, -0.904646715469016430, -0.904668022454035210, -0.904689327177383820, -0.904710629639009060, -0.904731929838857640, +-0.904753227776876500, -0.904774523453012570, -0.904795816867212000, -0.904817108019422060, -0.904838396909589230, -0.904859683537660440, -0.904880967903582410, -0.904902250007301960, +-0.904923529848765780, -0.904944807427921160, -0.904966082744714130, -0.904987355799092170, -0.905008626591001670, -0.905029895120389670, -0.905051161387202760, -0.905072425391388100, +-0.905093687132892400, -0.905114946611662470, -0.905136203827645260, -0.905157458780787350, -0.905178711471035790, -0.905199961898337510, -0.905221210062639340, -0.905242455963888080, +-0.905263699602030900, -0.905284940977014290, -0.905306180088785490, -0.905327416937291020, -0.905348651522478120, -0.905369883844293510, -0.905391113902684120, -0.905412341697597100, +-0.905433567228979270, -0.905454790496777460, -0.905476011500938820, -0.905497230241409930, -0.905518446718137970, -0.905539660931069970, -0.905560872880152750, -0.905582082565333460, +-0.905603289986558920, -0.905624495143776300, -0.905645698036932180, -0.905666898665973940, -0.905688097030848400, -0.905709293131502500, -0.905730486967883500, -0.905751678539938430, +-0.905772867847614020, -0.905794054890857630, -0.905815239669615860, -0.905836422183836090, -0.905857602433465140, -0.905878780418450270, -0.905899956138738420, -0.905921129594276840, +-0.905942300785012480, -0.905963469710892140, -0.905984636371863110, -0.906005800767872520, -0.906026962898867420, -0.906048122764794960, -0.906069280365602300, -0.906090435701236370, +-0.906111588771644440, -0.906132739576773430, -0.906153888116570490, -0.906175034390982900, -0.906196178399957700, -0.906217320143442030, -0.906238459621383160, -0.906259596833728140, +-0.906280731780424230, -0.906301864461418250, -0.906322994876657680, -0.906344123026089580, -0.906365248909661190, -0.906386372527319910, -0.906407493879012430, -0.906428612964686460, +-0.906449729784288840, -0.906470844337766810, -0.906491956625067650, -0.906513066646138620, -0.906534174400926870, -0.906555279889380010, -0.906576383111444620, -0.906597484067068530, +-0.906618582756198550, -0.906639679178782080, -0.906660773334766470, -0.906681865224098880, -0.906702954846726580, -0.906724042202597170, -0.906745127291657460, -0.906766210113855050, +-0.906787290669136990, -0.906808368957450760, -0.906829444978743520, -0.906850518732962630, -0.906871590220055700, -0.906892659439969550, -0.906913726392652000, -0.906934791078049970, +-0.906955853496110850, -0.906976913646782230, -0.906997971530011270, -0.907019027145745340, -0.907040080493932030, -0.907061131574518400, -0.907082180387452140, -0.907103226932680200, +-0.907124271210150160, -0.907145313219809510, -0.907166352961605530, -0.907187390435485690, -0.907208425641397480, -0.907229458579288270, -0.907250489249105230, -0.907271517650796060, +-0.907292543784308010, -0.907313567649588590, -0.907334589246585280, -0.907355608575245550, -0.907376625635516800, -0.907397640427346610, -0.907418652950682140, -0.907439663205470980, +-0.907460671191660740, -0.907481676909198790, -0.907502680358032610, -0.907523681538109920, -0.907544680449377860, -0.907565677091784260, -0.907586671465276380, -0.907607663569801710, +-0.907628653405307960, -0.907649640971742610, -0.907670626269053260, -0.907691609297187170, -0.907712590056092280, -0.907733568545715630, -0.907754544766005140, -0.907775518716908310, +-0.907796490398372620, -0.907817459810345780, -0.907838426952775390, -0.907859391825608820, -0.907880354428793890, -0.907901314762277980, -0.907922272826008680, -0.907943228619933820, +-0.907964182144000760, -0.907985133398157340, -0.908006082382351250, -0.908027029096529770, -0.908047973540640820, -0.908068915714631890, -0.908089855618450570, -0.908110793252044580, +-0.908131728615361730, -0.908152661708349630, -0.908173592530955750, -0.908194521083128150, -0.908215447364813970, -0.908236371375961140, -0.908257293116517480, -0.908278212586430490, +-0.908299129785647970, -0.908320044714117870, -0.908340957371787440, -0.908361867758604840, -0.908382775874517430, -0.908403681719472940, -0.908424585293419410, -0.908445486596304310, +-0.908466385628075470, -0.908487282388680930, -0.908508176878068170, -0.908529069096184690, -0.908549959042978640, -0.908570846718397610, -0.908591732122389530, -0.908612615254902110, +-0.908633496115883400, -0.908654374705280650, -0.908675251023042250, -0.908696125069115460, -0.908716996843448420, -0.908737866345988850, -0.908758733576684570, -0.908779598535483510, +-0.908800461222333600, -0.908821321637182430, -0.908842179779978050, -0.908863035650668060, -0.908883889249200600, -0.908904740575523280, -0.908925589629584140, -0.908946436411331220, +-0.908967280920712000, -0.908988123157674850, -0.909008963122167170, -0.909029800814136980, -0.909050636233532440, -0.909071469380301140, -0.909092300254391360, -0.909113128855750910, +-0.909133955184327490, -0.909154779240069270, -0.909175601022924050, -0.909196420532839780, -0.909217237769764370, -0.909238052733646000, -0.909258865424432350, -0.909279675842071810, +-0.909300483986511980, -0.909321289857700890, -0.909342093455586700, -0.909362894780117110, -0.909383693831240400, -0.909404490608904270, -0.909425285113057090, -0.909446077343646580, +-0.909466867300621100, -0.909487654983928140, -0.909508440393516300, -0.909529223529333190, -0.909550004391327160, -0.909570782979446050, -0.909591559293638000, -0.909612333333850940, +-0.909633105100033260, -0.909653874592132650, -0.909674641810097380, -0.909695406753875500, -0.909716169423415270, -0.909736929818664500, -0.909757687939571350, -0.909778443786084080, +-0.909799197358150510, -0.909819948655719140, -0.909840697678737760, -0.909861444427154780, -0.909882188900918100, -0.909902931099976000, -0.909923671024276510, -0.909944408673767910, +-0.909965144048398230, -0.909985877148115740, -0.910006607972868480, -0.910027336522604810, -0.910048062797272680, -0.910068786796820460, -0.910089508521196300, -0.910110227970348350, +-0.910130945144224770, -0.910151660042773920, -0.910172372665943970, -0.910193083013682850, -0.910213791085939250, -0.910234496882661000, -0.910255200403796700, -0.910275901649294280, +-0.910296600619102110, -0.910317297313168460, -0.910337991731441590, -0.910358683873869650, -0.910379373740401120, -0.910400061330984060, -0.910420746645566940, -0.910441429684097800, +-0.910462110446525250, -0.910482788932797330, -0.910503465142862510, -0.910524139076668960, -0.910544810734165160, -0.910565480115299140, -0.910586147220019630, -0.910606812048274760, +-0.910627474600012700, -0.910648134875182040, -0.910668792873730930, -0.910689448595608080, -0.910710102040761300, -0.910730753209139540, -0.910751402100690720, -0.910772048715363550, +-0.910792693053106060, -0.910813335113866970, -0.910833974897594540, -0.910854612404237150, -0.910875247633743170, -0.910895880586061190, -0.910916511261139370, -0.910937139658926420, +-0.910957765779370490, -0.910978389622420280, -0.910999011188024070, -0.911019630476130220, -0.911040247486687440, -0.911060862219643890, -0.911081474674948380, -0.911102084852548950, +-0.911122692752394550, -0.911143298374433200, -0.911163901718613720, -0.911184502784884390, -0.911205101573194010, -0.911225698083490630, -0.911246292315723180, -0.911266884269839930, +-0.911287473945789460, -0.911308061343520270, -0.911328646462981060, -0.911349229304120100, -0.911369809866886200, -0.911390388151227640, -0.911410964157093220, -0.911431537884431320, +-0.911452109333190540, -0.911472678503319590, -0.911493245394766840, -0.911513810007481110, -0.911534372341410770, -0.911554932396504540, -0.911575490172710890, -0.911596045669978540, +-0.911616598888256080, -0.911637149827492220, -0.911657698487635340, -0.911678244868634360, -0.911698788970437660, -0.911719330792994050, -0.911739870336252030, -0.911760407600160530, +-0.911780942584667800, -0.911801475289722770, -0.911822005715274160, -0.911842533861270450, -0.911863059727660460, -0.911883583314392680, -0.911904104621416020, -0.911924623648679100, +-0.911945140396130730, -0.911965654863719280, -0.911986167051393900, -0.912006676959102980, -0.912027184586795440, -0.912047689934419870, -0.912068193001925210, -0.912088693789259830, +-0.912109192296372990, -0.912129688523212970, -0.912150182469728790, -0.912170674135869160, -0.912191163521582920, -0.912211650626818640, -0.912232135451525370, -0.912252617995651720, +-0.912273098259146380, -0.912293576241958500, -0.912314051944036470, -0.912334525365329550, -0.912354996505786110, -0.912375465365355300, -0.912395931943985720, -0.912416396241626520, +-0.912436858258226070, -0.912457317993733640, -0.912477775448097830, -0.912498230621267670, -0.912518683513191880, -0.912539134123819370, -0.912559582453099090, -0.912580028500979750, +-0.912600472267410370, -0.912620913752339890, -0.912641352955717020, -0.912661789877490910, -0.912682224517610270, -0.912702656876024030, -0.912723086952681120, -0.912743514747530570, +-0.912763940260521210, -0.912784363491601860, -0.912804784440721770, -0.912825203107829660, -0.912845619492874570, -0.912866033595805430, -0.912886445416571270, -0.912906854955120810, +-0.912927262211403410, -0.912947667185367680, -0.912968069876962880, -0.912988470286137940, -0.913008868412841790, -0.913029264257023470, -0.913049657818632010, -0.913070049097616350, +-0.913090438093925540, -0.913110824807508830, -0.913131209238314810, -0.913151591386292870, -0.913171971251391930, -0.913192348833561150, -0.913212724132749450, -0.913233097148905880, +-0.913253467881979590, -0.913273836331919720, -0.913294202498675210, -0.913314566382195210, -0.913334927982428660, -0.913355287299324910, -0.913375644332832910, -0.913395999082901920, +-0.913416351549480750, -0.913436701732518790, -0.913457049631965060, -0.913477395247768720, -0.913497738579878930, -0.913518079628244720, -0.913538418392815350, -0.913558754873539990, +-0.913579089070367670, -0.913599420983247650, -0.913619750612129080, -0.913640077956961010, -0.913660403017692910, -0.913680725794273730, -0.913701046286652830, -0.913721364494779140, +-0.913741680418602260, -0.913761994058071010, -0.913782305413134770, -0.913802614483742780, -0.913822921269844430, -0.913843225771388550, -0.913863527988324710, -0.913883827920602080, +-0.913904125568169800, -0.913924420930977250, -0.913944714008973700, -0.913965004802108290, -0.913985293310330400, -0.914005579533589300, -0.914025863471834120, -0.914046145125014480, +-0.914066424493079290, -0.914086701575978160, -0.914106976373660230, -0.914127248886074880, -0.914147519113171380, -0.914167787054899090, -0.914188052711207400, -0.914208316082045560, +-0.914228577167362830, -0.914248835967108710, -0.914269092481232450, -0.914289346709683650, -0.914309598652411350, -0.914329848309365030, -0.914350095680494190, -0.914370340765747970, +-0.914390583565075970, -0.914410824078427440, -0.914431062305752000, -0.914451298246998780, -0.914471531902117380, -0.914491763271057080, -0.914511992353767460, -0.914532219150197780, +-0.914552443660297640, -0.914572665884016310, -0.914592885821303380, -0.914613103472108220, -0.914633318836380330, -0.914653531914069060, -0.914673742705124030, -0.914693951209494700, +-0.914714157427130360, -0.914734361357980700, -0.914754563001995090, -0.914774762359123140, -0.914794959429314210, -0.914815154212517910, -0.914835346708683720, -0.914855536917761230, +-0.914875724839699700, -0.914895910474449070, -0.914916093821958600, -0.914936274882177880, -0.914956453655056400, -0.914976630140543980, -0.914996804338589760, -0.915016976249143690, +-0.915037145872155120, -0.915057313207573770, -0.915077478255349020, -0.915097641015430670, -0.915117801487768220, -0.915137959672311150, -0.915158115569009280, -0.915178269177812090, +-0.915198420498669170, -0.915218569531530250, -0.915238716276345010, -0.915258860733062840, -0.915279002901633550, -0.915299142782006750, -0.915319280374132130, -0.915339415677959290, +-0.915359548693437940, -0.915379679420517570, -0.915399807859148210, -0.915419934009279230, -0.915440057870860470, -0.915460179443841390, -0.915480298728172050, -0.915500415723801920, +-0.915520530430680710, -0.915540642848758250, -0.915560752977984120, -0.915580860818308140, -0.915600966369680020, -0.915621069632049480, -0.915641170605366210, -0.915661269289580030, +-0.915681365684640650, -0.915701459790498000, -0.915721551607101560, -0.915741641134401260, -0.915761728372346820, -0.915781813320888150, -0.915801895979974970, -0.915821976349556980, +-0.915842054429584000, -0.915862130220006070, -0.915882203720772560, -0.915902274931833740, -0.915922343853139200, -0.915942410484638760, -0.915962474826282350, -0.915982536878019670, +-0.916002596639800770, -0.916022654111575240, -0.916042709293293120, -0.916062762184904230, -0.916082812786358500, -0.916102861097605640, -0.916122907118595680, -0.916142950849278440, +-0.916162992289603850, -0.916183031439521730, -0.916203068298982130, -0.916223102867934740, -0.916243135146329600, -0.916263165134116650, -0.916283192831245820, -0.916303218237666920, +-0.916323241353330100, -0.916343262178185180, -0.916363280712181980, -0.916383296955270770, -0.916403310907401130, -0.916423322568523320, -0.916443331938587070, -0.916463339017542620, +-0.916483343805339800, -0.916503346301928650, -0.916523346507258970, -0.916543344421281160, -0.916563340043944800, -0.916583333375200260, -0.916603324414997140, -0.916623313163285940, +-0.916643299620016340, -0.916663283785138620, -0.916683265658602480, -0.916703245240358400, -0.916723222530356100, -0.916743197528545720, -0.916763170234877410, -0.916783140649301110, +-0.916803108771767070, -0.916823074602225120, -0.916843038140625620, -0.916862999386918290, -0.916882958341053710, -0.916902915002981600, -0.916922869372652330, -0.916942821450015710, +-0.916962771235022120, -0.916982718727621600, -0.917002663927764420, -0.917022606835400380, -0.917042547450479970, -0.917062485772953020, -0.917082421802770000, -0.917102355539880840, +-0.917122286984235920, -0.917142216135785170, -0.917162142994478960, -0.917182067560267320, -0.917201989833100530, -0.917221909812928730, -0.917241827499702180, -0.917261742893371150, +-0.917281655993885670, -0.917301566801196120, -0.917321475315252540, -0.917341381536005310, -0.917361285463404670, -0.917381187097400800, -0.917401086437943940, -0.917420983484984460, +-0.917440878238472310, -0.917460770698358190, -0.917480660864592010, -0.917500548737124280, -0.917520434315905130, -0.917540317600884950, -0.917560198592013880, -0.917580077289242290, +-0.917599953692520680, -0.917619827801798960, -0.917639699617027850, -0.917659569138157380, -0.917679436365138050, -0.917699301297920100, -0.917719163936453920, -0.917739024280689760, +-0.917758882330578230, -0.917778738086069250, -0.917798591547113630, -0.917818442713661420, -0.917838291585663100, -0.917858138163069050, -0.917877982445829740, -0.917897824433895340, +-0.917917664127216540, -0.917937501525743490, -0.917957336629426690, -0.917977169438216610, -0.917996999952063520, -0.918016828170918010, -0.918036654094730230, -0.918056477723451000, +-0.918076299057030590, -0.918096118095419360, -0.918115934838567790, -0.918135749286426490, -0.918155561438945830, -0.918175371296076180, -0.918195178857768140, -0.918214984123972180, +-0.918234787094638680, -0.918254587769718360, -0.918274386149161350, -0.918294182232918590, -0.918313976020940230, -0.918333767513177080, -0.918353556709579410, -0.918373343610097810, +-0.918393128214682890, -0.918412910523285220, -0.918432690535855190, -0.918452468252343390, -0.918472243672700530, -0.918492016796876980, -0.918511787624823440, -0.918531556156490400, +-0.918551322391828570, -0.918571086330788320, -0.918590847973320360, -0.918610607319375270, -0.918630364368903770, -0.918650119121856230, -0.918669871578183470, -0.918689621737835970, +-0.918709369600764550, -0.918729115166919690, -0.918748858436251870, -0.918768599408712030, -0.918788338084250640, -0.918808074462818420, -0.918827808544366080, -0.918847540328844190, +-0.918867269816203370, -0.918886997006394420, -0.918906721899367950, -0.918926444495074770, -0.918946164793465360, -0.918965882794490650, -0.918985598498101130, -0.919005311904247720, +-0.919025023012880920, -0.919044731823951740, -0.919064438337410470, -0.919084142553208360, -0.919103844471295670, -0.919123544091623560, -0.919143241414142500, -0.919162936438803310, +-0.919182629165556930, -0.919202319594353830, -0.919222007725144950, -0.919241693557880990, -0.919261377092512990, -0.919281058328991320, -0.919300737267267240, -0.919320413907291130, +-0.919340088249014030, -0.919359760292386750, -0.919379430037360110, -0.919399097483884710, -0.919418762631911800, -0.919438425481391760, -0.919458086032275860, -0.919477744284514560, +-0.919497400238059150, -0.919517053892860090, -0.919536705248868320, -0.919556354306034880, -0.919576001064310480, -0.919595645523646250, -0.919615287683992700, -0.919634927545301070, +-0.919654565107521970, -0.919674200370606650, -0.919693833334505720, -0.919713463999170200, -0.919733092364551030, -0.919752718430599250, -0.919772342197265450, -0.919791963664501000, +-0.919811582832256500, -0.919831199700483100, -0.919850814269131730, -0.919870426538153320, -0.919890036507498790, -0.919909644177119180, -0.919929249546965530, -0.919948852616988670, +-0.919968453387139840, -0.919988051857369650, -0.920007648027629470, -0.920027241897870110, -0.920046833468042720, -0.920066422738098130, -0.920086009707987600, -0.920105594377661930, +-0.920125176747072390, -0.920144756816169810, -0.920164334584905430, -0.920183910053230190, -0.920203483221095130, -0.920223054088451400, -0.920242622655250030, -0.920262188921442070, +-0.920281752886978670, -0.920301314551810970, -0.920320873915889790, -0.920340430979166620, -0.920359985741592280, -0.920379538203118020, -0.920399088363694770, -0.920418636223274020, +-0.920438181781806470, -0.920457725039243610, -0.920477265995536360, -0.920496804650635990, -0.920516341004493530, -0.920535875057060360, -0.920555406808287400, -0.920574936258126030, +-0.920594463406527170, -0.920613988253442320, -0.920633510798822270, -0.920653031042618640, -0.920672548984782350, -0.920692064625264760, -0.920711577964016930, -0.920731089000990210, +-0.920750597736135770, -0.920770104169404750, -0.920789608300748520, -0.920809110130118240, -0.920828609657465270, -0.920848106882740660, -0.920867601805895890, -0.920887094426882100, +-0.920906584745650570, -0.920926072762152550, -0.920945558476339410, -0.920965041888162190, -0.920984522997572610, -0.921004001804521580, -0.921023478308960590, -0.921042952510840780, +-0.921062424410113770, -0.921081894006730570, -0.921101361300642800, -0.921120826291801590, -0.921140288980158100, -0.921159749365664140, -0.921179207448270640, -0.921198663227929200, +-0.921218116704591080, -0.921237567878207760, -0.921257016748730400, -0.921276463316110570, -0.921295907580299440, -0.921315349541248720, -0.921334789198909540, -0.921354226553233400, +-0.921373661604171670, -0.921393094351675820, -0.921412524795697240, -0.921431952936187290, -0.921451378773097460, -0.921470802306379340, -0.921490223535984090, -0.921509642461863290, +-0.921529059083968430, -0.921548473402250880, -0.921567885416662120, -0.921587295127153650, -0.921606702533677050, -0.921626107636183580, -0.921645510434624840, -0.921664910928952310, +-0.921684309119117580, -0.921703705005072040, -0.921723098586767260, -0.921742489864154750, -0.921761878837185970, -0.921781265505812520, -0.921800649869985890, -0.921820031929657670, +-0.921839411684779340, -0.921858789135302390, -0.921878164281178640, -0.921897537122359450, -0.921916907658796300, -0.921936275890441030, -0.921955641817244990, -0.921975005439159780, +-0.921994366756137110, -0.922013725768128570, -0.922033082475085640, -0.922052436876960150, -0.922071788973703340, -0.922091138765267270, -0.922110486251603190, -0.922129831432663030, +-0.922149174308398270, -0.922168514878760500, -0.922187853143701440, -0.922207189103172900, -0.922226522757126240, -0.922245854105513300, -0.922265183148285760, -0.922284509885395230, +-0.922303834316793520, -0.922323156442432010, -0.922342476262262840, -0.922361793776237280, -0.922381108984307360, -0.922400421886424680, -0.922419732482540940, -0.922439040772607740, +-0.922458346756577120, -0.922477650434400550, -0.922496951806029860, -0.922516250871416750, -0.922535547630513040, -0.922554842083270430, -0.922574134229640850, -0.922593424069575780, +-0.922612711603027270, -0.922631996829946900, -0.922651279750286600, -0.922670560363998080, -0.922689838671033050, -0.922709114671343640, -0.922728388364881250, -0.922747659751598000, +-0.922766928831445510, -0.922786195604375800, -0.922805460070340480, -0.922824722229291570, -0.922843982081180900, -0.922863239625960290, -0.922882494863581430, -0.922901747793996470, +-0.922920998417157130, -0.922940246733015220, -0.922959492741522780, -0.922978736442631620, -0.922997977836293450, -0.923017216922460530, -0.923036453701084560, -0.923055688172117360, +-0.923074920335510970, -0.923094150191217210, -0.923113377739188220, -0.923132602979375720, -0.923151825911731730, -0.923171046536208070, -0.923190264852756900, -0.923209480861330030, +-0.923228694561879500, -0.923247905954357240, -0.923267115038715170, -0.923286321814905330, -0.923305526282879650, -0.923324728442590170, -0.923343928293988920, -0.923363125837027840, +-0.923382321071658960, -0.923401513997834100, -0.923420704615505630, -0.923439892924625470, -0.923459078925145450, -0.923478262617017710, -0.923497444000194400, -0.923516623074627450, +-0.923535799840268900, -0.923554974297070900, -0.923574146444985370, -0.923593316283964680, -0.923612483813960440, -0.923631649034925230, -0.923650811946810760, -0.923669972549569280, +-0.923689130843152850, -0.923708286827513710, -0.923727440502603690, -0.923746591868375160, -0.923765740924780140, -0.923784887671770800, -0.923804032109299180, -0.923823174237317520, +-0.923842314055777880, -0.923861451564632510, -0.923880586763833560, -0.923899719653332950, -0.923918850233083290, -0.923937978503036270, -0.923957104463144500, -0.923976228113359780, +-0.923995349453634710, -0.924014468483921100, -0.924033585204171340, -0.924052699614337670, -0.924071811714372250, -0.924090921504227230, -0.924110028983854970, -0.924129134153207630, +-0.924148237012237470, -0.924167337560896640, -0.924186435799137620, -0.924205531726912440, -0.924224625344173270, -0.924243716650872790, -0.924262805646962840, -0.924281892332395990, +-0.924300976707124300, -0.924320058771100240, -0.924339138524275960, -0.924358215966603950, -0.924377291098036350, -0.924396363918525530, -0.924415434428023760, -0.924434502626483410, +-0.924453568513856850, -0.924472632090096340, -0.924491693355154240, -0.924510752308982940, -0.924529808951534690, -0.924548863282762090, -0.924567915302617060, -0.924586965011052530, +-0.924606012408020430, -0.924625057493473350, -0.924644100267363540, -0.924663140729643510, -0.924682178880265710, -0.924701214719182430, -0.924720248246346130, -0.924739279461709080, +-0.924758308365223990, -0.924777334956843000, -0.924796359236518820, -0.924815381204203590, -0.924834400859850030, -0.924853418203410380, -0.924872433234837250, -0.924891445954083010, +-0.924910456361100140, -0.924929464455841120, -0.924948470238258440, -0.924967473708304680, -0.924986474865932110, -0.925005473711093540, -0.925024470243741010, -0.925043464463827570, +-0.925062456371305240, -0.925081445966126960, -0.925100433248244980, -0.925119418217611900, -0.925138400874180310, -0.925157381217902700, -0.925176359248731650, -0.925195334966619650, +-0.925214308371519300, -0.925233279463383300, -0.925252248242164010, -0.925271214707814150, -0.925290178860286190, -0.925309140699532850, -0.925328100225506600, -0.925347057438160260, +-0.925366012337446090, -0.925384964923317010, -0.925403915195725400, -0.925422863154624080, -0.925441808799965630, -0.925460752131702540, -0.925479693149787730, -0.925498631854173470, +-0.925517568244812790, -0.925536502321658180, -0.925555434084662340, -0.925574363533777870, -0.925593290668957460, -0.925612215490153820, -0.925631137997319780, -0.925650058190407690, +-0.925668976069370600, -0.925687891634160990, -0.925706804884731780, -0.925725715821035360, -0.925744624443024850, -0.925763530750652760, -0.925782434743871670, -0.925801336422634620, +-0.925820235786894210, -0.925839132836603240, -0.925858027571714310, -0.925876919992180470, -0.925895810097954190, -0.925914697888988500, -0.925933583365236010, -0.925952466526649640, +-0.925971347373181990, -0.925990225904786080, -0.926009102121414520, -0.926027976023020230, -0.926046847609556020, -0.926065716880974720, -0.926084583837229030, -0.926103448478271970, +-0.926122310804056270, -0.926141170814534730, -0.926160028509660390, -0.926178883889385850, -0.926197736953664250, -0.926216587702448080, -0.926235436135690700, -0.926254282253344500, +-0.926273126055362720, -0.926291967541698070, -0.926310806712303590, -0.926329643567131990, -0.926348478106136410, -0.926367310329269440, -0.926386140236484360, -0.926404967827733850, +-0.926423793102971070, -0.926442616062148620, -0.926461436705219740, -0.926480255032137160, -0.926499071042854120, -0.926517884737323330, -0.926536696115497720, -0.926555505177330430, +-0.926574311922774400, -0.926593116351782650, -0.926611918464307900, -0.926630718260303630, -0.926649515739722320, -0.926668310902517440, -0.926687103748641610, -0.926705894278048060, +-0.926724682490689840, -0.926743468386519890, -0.926762251965491220, -0.926781033227557010, -0.926799812172670050, -0.926818588800783720, -0.926837363111850830, -0.926856135105824650, +-0.926874904782658100, -0.926893672142304230, -0.926912437184716160, -0.926931199909846960, -0.926949960317649870, -0.926968718408077820, -0.926987474181084070, -0.927006227636621550, +-0.927024978774643520, -0.927043727595102900, -0.927062474097953060, -0.927081218283147050, -0.927099960150638000, -0.927118699700378970, -0.927137436932323310, -0.927156171846423960, +-0.927174904442634280, -0.927193634720907210, -0.927212362681196110, -0.927231088323454130, -0.927249811647634430, -0.927268532653690250, -0.927287251341574640, -0.927305967711240960, +-0.927324681762642270, -0.927343393495732030, -0.927362102910463170, -0.927380810006789180, -0.927399514784662980, -0.927418217244038170, -0.927436917384867780, -0.927455615207105070, +-0.927474310710703300, -0.927493003895615730, -0.927511694761795740, -0.927530383309196460, -0.927549069537771160, -0.927567753447473330, -0.927586435038256000, -0.927605114310072640, +-0.927623791262876530, -0.927642465896620920, -0.927661138211259060, -0.927679808206744450, -0.927698475883030340, -0.927717141240069880, -0.927735804277816770, -0.927754464996223940, +-0.927773123395245090, -0.927791779474833380, -0.927810433234942280, -0.927829084675525050, -0.927847733796535180, -0.927866380597925810, -0.927885025079650650, -0.927903667241662840, +-0.927922307083915990, -0.927940944606363230, -0.927959579808958160, -0.927978212691654150, -0.927996843254404570, -0.928015471497163010, -0.928034097419882630, -0.928052721022517010, +-0.928071342305019640, -0.928089961267343890, -0.928108577909443230, -0.928127192231271160, -0.928145804232781040, -0.928164413913926570, -0.928183021274660900, -0.928201626314937740, +-0.928220229034710460, -0.928238829433932770, -0.928257427512557800, -0.928276023270539370, -0.928294616707830870, -0.928313207824385870, -0.928331796620157750, -0.928350383095100320, +-0.928368967249166730, -0.928387549082310800, -0.928406128594486120, -0.928424705785645950, -0.928443280655744110, -0.928461853204733960, -0.928480423432569310, -0.928498991339203440, +-0.928517556924590260, -0.928536120188683030, -0.928554681131435690, -0.928573239752801480, -0.928591796052734230, -0.928610350031187530, -0.928628901688114850, -0.928647451023470020, +-0.928665998037206510, -0.928684542729278030, -0.928703085099638170, -0.928721625148240640, -0.928740162875039020, -0.928758698279987030, -0.928777231363038250, -0.928795762124146500, +-0.928814290563265140, -0.928832816680348230, -0.928851340475349120, -0.928869861948221850, -0.928888381098919800, -0.928906897927396780, -0.928925412433606600, -0.928943924617502860, +-0.928962434479039260, -0.928980942018169610, -0.928999447234847620, -0.929017950129026990, -0.929036450700661430, -0.929054948949704860, -0.929073444876110880, -0.929091938479833290, +-0.929110429760825810, -0.929128918719042350, -0.929147405354436520, -0.929165889666962120, -0.929184371656573190, -0.929202851323223110, -0.929221328666866020, -0.929239803687455620, +-0.929258276384945630, -0.929276746759289950, -0.929295214810442530, -0.929313680538356950, -0.929332143942987240, -0.929350605024287120, -0.929369063782210510, -0.929387520216711230, +-0.929405974327743190, -0.929424426115260100, -0.929442875579216120, -0.929461322719564830, -0.929479767536260270, -0.929498210029256370, -0.929516650198506820, -0.929535088043965670, +-0.929553523565586850, -0.929571956763324270, -0.929590387637131640, -0.929608816186963120, -0.929627242412772500, -0.929645666314513950, -0.929664087892141060, -0.929682507145608070, +-0.929700924074868710, -0.929719338679877110, -0.929737750960587080, -0.929756160916952790, -0.929774568548928040, -0.929792973856466860, -0.929811376839523200, -0.929829777498051180, +-0.929848175832004630, -0.929866571841337810, -0.929884965526004410, -0.929903356885958600, -0.929921745921154510, -0.929940132631545960, -0.929958517017087090, -0.929976899077731960, +-0.929995278813434580, -0.930013656224148890, -0.930032031309829250, -0.930050404070429380, -0.930068774505903640, -0.930087142616205840, -0.930105508401290250, -0.930123871861110780, +-0.930142232995621710, -0.930160591804777060, -0.930178948288530980, -0.930197302446837400, -0.930215654279650690, -0.930234003786924890, -0.930252350968613920, -0.930270695824672260, +-0.930289038355053720, -0.930307378559712570, -0.930325716438602960, -0.930344051991679240, -0.930362385218895140, -0.930380716120205340, -0.930399044695563560, -0.930417370944924270, +-0.930435694868241400, -0.930454016465469440, -0.930472335736562410, -0.930490652681474570, -0.930508967300159970, -0.930527279592573090, -0.930545589558667950, -0.930563897198398830, +-0.930582202511719970, -0.930600505498585640, -0.930618806158950100, -0.930637104492767490, -0.930655400499992070, -0.930673694180578100, -0.930691985534480070, -0.930710274561651900, +-0.930728561262048170, -0.930746845635622930, -0.930765127682330770, -0.930783407402125620, -0.930801684794961950, -0.930819959860794130, -0.930838232599576430, -0.930856503011263100, +-0.930874771095808520, -0.930893036853166930, -0.930911300283292940, -0.930929561386140580, -0.930947820161664330, -0.930966076609818450, -0.930984330730557530, -0.931002582523835720, +-0.931020831989607500, -0.931039079127827130, -0.931057323938449090, -0.931075566421427750, -0.931093806576717480, -0.931112044404272640, -0.931130279904047730, -0.931148513075997220, +-0.931166743920075260, -0.931184972436236550, -0.931203198624435350, -0.931221422484626250, -0.931239644016763510, -0.931257863220801730, -0.931276080096695160, -0.931294294644398500, +-0.931312506863866020, -0.931330716755052410, -0.931348924317911940, -0.931367129552399090, -0.931385332458468550, -0.931403533036074590, -0.931421731285171810, -0.931439927205714670, +-0.931458120797657770, -0.931476312060955490, -0.931494500995562520, -0.931512687601433240, -0.931530871878522350, -0.931549053826784100, -0.931567233446173320, -0.931585410736644470, +-0.931603585698152050, -0.931621758330650640, -0.931639928634094950, -0.931658096608439350, -0.931676262253638530, -0.931694425569646990, -0.931712586556419530, -0.931730745213910530, +-0.931748901542074680, -0.931767055540866580, -0.931785207210240830, -0.931803356550152010, -0.931821503560554820, -0.931839648241403970, -0.931857790592653830, -0.931875930614259330, +-0.931894068306174940, -0.931912203668355480, -0.931930336700755420, -0.931948467403329590, -0.931966595776032580, -0.931984721818819080, -0.932002845531643700, -0.932020966914461240, +-0.932039085967226400, -0.932057202689893890, -0.932075317082418310, -0.932093429144754350, -0.932111538876856940, -0.932129646278680670, -0.932147751350180240, -0.932165854091310480, +-0.932183954502026070, -0.932202052582281730, -0.932220148332032370, -0.932238241751232490, -0.932256332839837110, -0.932274421597800830, -0.932292508025078570, -0.932310592121624930, +-0.932328673887394930, -0.932346753322343180, -0.932364830426424600, -0.932382905199593880, -0.932400977641805960, -0.932419047753015540, -0.932437115533177540, -0.932455180982246780, +-0.932473244100178070, -0.932491304886926220, -0.932509363342446050, -0.932527419466692600, -0.932545473259620450, -0.932563524721184640, -0.932581573851340110, -0.932599620650041650, +-0.932617665117243980, -0.932635707252902350, -0.932653747056971350, -0.932671784529406020, -0.932689819670161180, -0.932707852479191860, -0.932725882956452760, -0.932743911101899140, +-0.932761936915485590, -0.932779960397167260, -0.932797981546899080, -0.932816000364635860, -0.932834016850332740, -0.932852031003944540, -0.932870042825426180, -0.932888052314732820, +-0.932906059471819260, -0.932924064296640540, -0.932942066789151810, -0.932960066949307780, -0.932978064777063580, -0.932996060272374250, -0.933014053435194720, -0.933032044265480140, +-0.933050032763185430, -0.933068018928265520, -0.933086002760675770, -0.933103984260370890, -0.933121963427306020, -0.933139940261436320, -0.933157914762716700, -0.933175886931102430, +-0.933193856766548310, -0.933211824269009620, -0.933229789438441260, -0.933247752274798500, -0.933265712778036380, -0.933283670948109930, -0.933301626784974300, -0.933319580288584750, +-0.933337531458896090, -0.933355480295863680, -0.933373426799442460, -0.933391370969587800, -0.933409312806254610, -0.933427252309398270, -0.933445189478973700, -0.933463124314936170, +-0.933481056817240810, -0.933498986985842880, -0.933516914820697430, -0.933534840321759710, -0.933552763488984860, -0.933570684322328150, -0.933588602821744720, -0.933606518987189720, +-0.933624432818618510, -0.933642344315986140, -0.933660253479247970, -0.933678160308359150, -0.933696064803274940, -0.933713966963950480, -0.933731866790341260, -0.933749764282402190, +-0.933767659440088880, -0.933785552263356360, -0.933803442752159980, -0.933821330906454920, -0.933839216726196630, -0.933857100211340160, -0.933874981361841110, -0.933892860177654490, +-0.933910736658735700, -0.933928610805040190, -0.933946482616523020, -0.933964352093139770, -0.933982219234845590, -0.934000084041595850, -0.934017946513345910, -0.934035806650051040, +-0.934053664451666710, -0.934071519918148300, -0.934089373049450940, -0.934107223845530240, -0.934125072306341450, -0.934142918431840050, -0.934160762221981190, -0.934178603676720560, +-0.934196442796013330, -0.934214279579815180, -0.934232114028081150, -0.934249946140766950, -0.934267775917827840, -0.934285603359219170, -0.934303428464896670, -0.934321251234815460, +-0.934339071668931260, -0.934356889767199330, -0.934374705529575130, -0.934392518956014160, -0.934410330046472000, -0.934428138800903920, -0.934445945219265490, -0.934463749301512210, +-0.934481551047599560, -0.934499350457483000, -0.934517147531118250, -0.934534942268460340, -0.934552734669465310, -0.934570524734088300, -0.934588312462285130, -0.934606097854011050, +-0.934623880909221770, -0.934641661627872770, -0.934659440009919630, -0.934677216055317950, -0.934694989764023100, -0.934712761135990890, -0.934730530171176690, -0.934748296869536200, +-0.934766061231025010, -0.934783823255598610, -0.934801582943212690, -0.934819340293822850, -0.934837095307384570, -0.934854847983853540, -0.934872598323185480, -0.934890346325335850, +-0.934908091990260370, -0.934925835317914730, -0.934943576308254420, -0.934961314961235250, -0.934979051276812800, -0.934996785254942560, -0.935014516895580570, -0.935032246198682080, +-0.935049973164203130, -0.935067697792099200, -0.935085420082325980, -0.935103140034839300, -0.935120857649594740, -0.935138572926548010, -0.935156285865654800, -0.935173996466870940, +-0.935191704730152120, -0.935209410655453930, -0.935227114242732300, -0.935244815491942830, -0.935262514403041420, -0.935280210975983680, -0.935297905210725420, -0.935315597107222340, +-0.935333286665430360, -0.935350973885305080, -0.935368658766802420, -0.935386341309878080, -0.935404021514487870, -0.935421699380587610, -0.935439374908133110, -0.935457048097080190, +-0.935474718947384650, -0.935492387459002320, -0.935510053631888990, -0.935527717466000610, -0.935545378961292860, -0.935563038117721680, -0.935580694935242870, -0.935598349413812370, +-0.935616001553385980, -0.935633651353919630, -0.935651298815369010, -0.935668943937690290, -0.935686586720839260, -0.935704227164771640, -0.935721865269443450, -0.935739501034810630, +-0.935757134460829090, -0.935774765547454650, -0.935792394294643340, -0.935810020702350980, -0.935827644770533710, -0.935845266499147230, -0.935862885888147590, -0.935880502937490700, +-0.935898117647132600, -0.935915730017029210, -0.935933340047136460, -0.935950947737410390, -0.935968553087807020, -0.935986156098282060, -0.936003756768791880, -0.936021355099292300, +-0.936038951089739340, -0.936056544740089040, -0.936074136050297210, -0.936091725020320230, -0.936109311650113800, -0.936126895939634160, -0.936144477888837260, -0.936162057497679110, +-0.936179634766115880, -0.936197209694103580, -0.936214782281598160, -0.936232352528555970, -0.936249920434932710, -0.936267486000684770, -0.936285049225768050, -0.936302610110138710, +-0.936320168653752780, -0.936337724856566630, -0.936355278718535970, -0.936372830239617260, -0.936390379419766440, -0.936407926258939540, -0.936425470757093040, -0.936443012914182640, +-0.936460552730164820, -0.936478090204995620, -0.936495625338631290, -0.936513158131027760, -0.936530688582141390, -0.936548216691928230, -0.936565742460344630, -0.936583265887346530, +-0.936600786972890400, -0.936618305716932280, -0.936635822119428420, -0.936653336180334860, -0.936670847899608080, -0.936688357277204120, -0.936705864313079340, -0.936723369007189890, +-0.936740871359492020, -0.936758371369942000, -0.936775869038495970, -0.936793364365110290, -0.936810857349741230, -0.936828347992345050, -0.936845836292877880, -0.936863322251296200, +-0.936880805867556180, -0.936898287141614270, -0.936915766073426530, -0.936933242662949420, -0.936950716910139090, -0.936968188814952140, -0.936985658377344600, -0.937003125597272950, +-0.937020590474693440, -0.937038053009562550, -0.937055513201836440, -0.937072971051471690, -0.937090426558424450, -0.937107879722651080, -0.937125330544108070, -0.937142779022751670, +-0.937160225158538360, -0.937177668951424400, -0.937195110401366380, -0.937212549508320560, -0.937229986272243410, -0.937247420693091190, -0.937264852770820500, -0.937282282505387590, +-0.937299709896749160, -0.937317134944861240, -0.937334557649680660, -0.937351978011163540, -0.937369396029266610, -0.937386811703946000, -0.937404225035158520, -0.937421636022860440, +-0.937439044667008230, -0.937456450967558470, -0.937473854924467550, -0.937491256537692050, -0.937508655807188340, -0.937526052732913010, -0.937543447314822530, -0.937560839552873500, +-0.937578229447022290, -0.937595616997225600, -0.937613002203439790, -0.937630385065621460, -0.937647765583727200, -0.937665143757713590, -0.937682519587537010, -0.937699893073154270, +-0.937717264214521620, -0.937734633011595990, -0.937751999464333630, -0.937769363572691360, -0.937786725336625550, -0.937804084756093110, -0.937821441831050430, -0.937838796561454080, +-0.937856148947260770, -0.937873498988426980, -0.937890846684909630, -0.937908192036664980, -0.937925535043649950, -0.937942875705821020, -0.937960214023135010, -0.937977549995548390, +-0.937994883623017970, -0.938012214905500240, -0.938029543842952010, -0.938046870435329970, -0.938064194682590720, -0.938081516584690860, -0.938098836141587400, -0.938116153353236730, +-0.938133468219595760, -0.938150780740621080, -0.938168090916269510, -0.938185398746497650, -0.938202704231262290, -0.938220007370520140, -0.938237308164228010, -0.938254606612342610, +-0.938271902714820750, -0.938289196471619010, -0.938306487882694330, -0.938323776948003510, -0.938341063667503140, -0.938358348041150260, -0.938375630068901350, -0.938392909750713430, +-0.938410187086543220, -0.938427462076347530, -0.938444734720083160, -0.938462005017707050, -0.938479272969175880, -0.938496538574446590, -0.938513801833475880, -0.938531062746220670, +-0.938548321312637770, -0.938565577532684100, -0.938582831406316600, -0.938600082933491840, -0.938617332114166980, -0.938634578948298710, -0.938651823435844080, -0.938669065576759780, +-0.938686305371002950, -0.938703542818530300, -0.938720777919298750, -0.938738010673265340, -0.938755241080386880, -0.938772469140620290, -0.938789694853922500, -0.938806918220250530, +-0.938824139239561210, -0.938841357911811670, -0.938858574236958620, -0.938875788214959210, -0.938892999845770240, -0.938910209129348750, -0.938927416065651780, -0.938944620654636350, +-0.938961822896259290, -0.938979022790477740, -0.938996220337248500, -0.939013415536528840, -0.939030608388275570, -0.939047798892445830, -0.939064987048996550, -0.939082172857884870, +-0.939099356319067600, -0.939116537432502120, -0.939133716198145120, -0.939150892615953970, -0.939168066685885590, -0.939185238407897030, -0.939202407781945410, -0.939219574807987680, +-0.939236739485981080, -0.939253901815882530, -0.939271061797649300, -0.939288219431238410, -0.939305374716607020, -0.939322527653712050, -0.939339678242510970, -0.939356826482960480, +-0.939373972375018070, -0.939391115918640660, -0.939408257113785510, -0.939425395960409640, -0.939442532458470430, -0.939459666607924680, -0.939476798408729890, -0.939493927860843070, +-0.939511054964221490, -0.939528179718822300, -0.939545302124602520, -0.939562422181519640, -0.939579539889530580, -0.939596655248592820, -0.939613768258663270, -0.939630878919699320, +-0.939647987231658210, -0.939665093194497090, -0.939682196808173330, -0.939699298072643960, -0.939716396987866460, -0.939733493553797870, -0.939750587770395550, -0.939767679637616870, +-0.939784769155418860, -0.939801856323759120, -0.939818941142594570, -0.939836023611882680, -0.939853103731580710, -0.939870181501646140, -0.939887256922036010, -0.939904329992707680, +-0.939921400713618630, -0.939938469084726000, -0.939955535105987280, -0.939972598777359610, -0.939989660098800580, -0.940006719070267230, -0.940023775691717240, -0.940040829963107670, +-0.940057881884396210, -0.940074931455539890, -0.940091978676496300, -0.940109023547222700, -0.940126066067676680, -0.940143106237815380, -0.940160144057596400, -0.940177179526976880, +-0.940194212645914630, -0.940211243414366680, -0.940228271832290740, -0.940245297899644170, -0.940262321616384230, -0.940279342982468510, -0.940296361997854380, -0.940313378662499530, +-0.940330392976361010, -0.940347404939396720, -0.940364414551563720, -0.940381421812819810, -0.940398426723122350, -0.940415429282428830, -0.940432429490696610, -0.940449427347883390, +-0.940466422853946660, -0.940483416008843780, -0.940500406812532440, -0.940517395264970020, -0.940534381366114110, -0.940551365115922300, -0.940568346514352170, -0.940585325561360990, +-0.940602302256906550, -0.940619276600946350, -0.940636248593438080, -0.940653218234339010, -0.940670185523607040, -0.940687150461199440, -0.940704113047074130, -0.940721073281188480, +-0.940738031163500190, -0.940754986693966730, -0.940771939872545810, -0.940788890699195020, -0.940805839173872170, -0.940822785296534510, -0.940839729067140080, -0.940856670485646250, +-0.940873609552010710, -0.940890546266191170, -0.940907480628145330, -0.940924412637830660, -0.940941342295204990, -0.940958269600226100, -0.940975194552851390, -0.940992117153038770, +-0.941009037400745820, -0.941025955295930250, -0.941042870838549870, -0.941059784028562270, -0.941076694865925160, -0.941093603350596440, -0.941110509482533500, -0.941127413261694470, +-0.941144314688036830, -0.941161213761518510, -0.941178110482096990, -0.941195004849730400, -0.941211896864376120, -0.941228786525992180, -0.941245673834536280, -0.941262558789966120, +-0.941279441392239620, -0.941296321641314490, -0.941313199537148650, -0.941330075079699680, -0.941346948268925620, -0.941363819104784170, -0.941380687587233140, -0.941397553716230350, +-0.941414417491733820, -0.941431278913701040, -0.941448137982090260, -0.941464994696859070, -0.941481849057965390, -0.941498701065367040, -0.941515550719022040, -0.941532398018887990, +-0.941549242964923150, -0.941566085557085100, -0.941582925795331870, -0.941599763679621280, -0.941616599209911250, -0.941633432386159820, -0.941650263208324790, -0.941667091676364090, +-0.941683917790235640, -0.941700741549897360, -0.941717562955307290, -0.941734382006423340, -0.941751198703203340, -0.941768013045605420, -0.941784825033587400, -0.941801634667107420, +-0.941818441946123190, -0.941835246870593060, -0.941852049440474630, -0.941868849655726150, -0.941885647516305550, -0.941902443022170850, -0.941919236173280110, -0.941936026969591110, +-0.941952815411062240, -0.941969601497651190, -0.941986385229316210, -0.942003166606015130, -0.942019945627706300, -0.942036722294347540, -0.942053496605896990, -0.942070268562312570, +-0.942087038163552660, -0.942103805409575060, -0.942120570300338020, -0.942137332835799480, -0.942154093015917680, -0.942170850840650550, -0.942187606309956350, -0.942204359423793100, +-0.942221110182119070, -0.942237858584892170, -0.942254604632070670, -0.942271348323612590, -0.942288089659476190, -0.942304828639619510, -0.942321565264000790, -0.942338299532578190, +-0.942355031445309850, -0.942371761002153920, -0.942388488203068530, -0.942405213048011950, -0.942421935536942310, -0.942438655669817880, -0.942455373446596800, -0.942472088867237320, +-0.942488801931697600, -0.942505512639935870, -0.942522220991910300, -0.942538926987579240, -0.942555630626900840, -0.942572331909833360, -0.942589030836335050, -0.942605727406364170, +-0.942622421619879080, -0.942639113476837820, -0.942655802977198750, -0.942672490120920250, -0.942689174907960450, -0.942705857338277720, -0.942722537411830430, -0.942739215128576720, +-0.942755890488475080, -0.942772563491483530, -0.942789234137560770, -0.942805902426664730, -0.942822568358754110, -0.942839231933786940, -0.942855893151721800, -0.942872552012516850, +-0.942889208516130560, -0.942905862662521190, -0.942922514451647210, -0.942939163883466990, -0.942955810957938790, -0.942972455675021080, -0.942989098034672240, -0.943005738036850730, +-0.943022375681514700, -0.943039010968622860, -0.943055643898133460, -0.943072274470004970, -0.943088902684195760, -0.943105528540664320, -0.943122152039369000, -0.943138773180268400, +-0.943155391963320770, -0.943172008388484810, -0.943188622455718660, -0.943205234164981030, -0.943221843516230280, -0.943238450509425010, -0.943255055144523460, -0.943271657421484440, +-0.943288257340266220, -0.943304854900827270, -0.943321450103126290, -0.943338042947121650, -0.943354633432771930, -0.943371221560035610, -0.943387807328871290, -0.943404390739237320, +-0.943420971791092410, -0.943437550484395150, -0.943454126819103900, -0.943470700795177360, -0.943487272412574240, -0.943503841671252670, -0.943520408571171700, -0.943536973112289680, +-0.943553535294565200, -0.943570095117956860, -0.943586652582423250, -0.943603207687923160, -0.943619760434414870, -0.943636310821857280, -0.943652858850208890, -0.943669404519428380, +-0.943685947829474240, -0.943702488780305380, -0.943719027371880180, -0.943735563604157560, -0.943752097477095870, -0.943768628990654060, -0.943785158144790580, -0.943801684939464370, +-0.943818209374633790, -0.943834731450257760, -0.943851251166294760, -0.943867768522703820, -0.943884283519443310, -0.943900796156472270, -0.943917306433749050, -0.943933814351232690, +-0.943950319908881790, -0.943966823106655030, -0.943983323944511230, -0.943999822422409100, -0.944016318540307540, -0.944032812298165050, -0.944049303695940530, -0.944065792733592810, +-0.944082279411080580, -0.944098763728362660, -0.944115245685397840, -0.944131725282144840, -0.944148202518562680, -0.944164677394609850, -0.944181149910245380, -0.944197620065428070, +-0.944214087860116740, -0.944230553294270080, -0.944247016367847140, -0.944263477080806600, -0.944279935433107400, -0.944296391424708340, -0.944312845055568340, -0.944329296325646220, +-0.944345745234900780, -0.944362191783291060, -0.944378635970775760, -0.944395077797314020, -0.944411517262864430, -0.944427954367386250, -0.944444389110837950, -0.944460821493178890, +-0.944477251514367570, -0.944493679174363330, -0.944510104473124780, -0.944526527410610940, -0.944542947986780850, -0.944559366201593310, -0.944575782055007470, -0.944592195546982150, +-0.944608606677476260, -0.944625015446448950, -0.944641421853859020, -0.944657825899665520, -0.944674227583827570, -0.944690626906303900, -0.944707023867053850, -0.944723418466036140, +-0.944739810703209890, -0.944756200578534040, -0.944772588091967850, -0.944788973243470000, -0.944805356032999870, -0.944821736460516260, -0.944838114525978320, -0.944854490229345090, +-0.944870863570575700, -0.944887234549629080, -0.944903603166464490, -0.944919969421040730, -0.944936333313317170, -0.944952694843252840, -0.944969054010806550, -0.944985410815937790, +-0.945001765258605460, -0.945018117338768730, -0.945034467056386610, -0.945050814411418470, -0.945067159403823240, -0.945083502033560060, -0.945099842300588190, -0.945116180204866650, +-0.945132515746354710, -0.945148848925011500, -0.945165179740796170, -0.945181508193667860, -0.945197834283585720, -0.945214158010509120, -0.945230479374396970, -0.945246798375208750, +-0.945263115012903610, -0.945279429287440460, -0.945295741198778900, -0.945312050746877960, -0.945328357931696890, -0.945344662753194840, -0.945360965211331280, -0.945377265306065140, +-0.945393563037356000, -0.945409858405162780, -0.945426151409445080, -0.945442442050161920, -0.945458730327272680, -0.945475016240736600, -0.945491299790512940, -0.945507580976561070, +-0.945523859798840350, -0.945540136257309820, -0.945556410351929060, -0.945572682082657100, -0.945588951449453650, -0.945605218452277740, -0.945621483091088730, -0.945637745365846110, +-0.945654005276509110, -0.945670262823037120, -0.945686518005389280, -0.945702770823525380, -0.945719021277404370, -0.945735269366985930, -0.945751515092229320, -0.945767758453093910, +-0.945783999449539060, -0.945800238081524250, -0.945816474349008730, -0.945832708251952200, -0.945848939790313810, -0.945865168964053040, -0.945881395773129350, -0.945897620217502340, +-0.945913842297131160, -0.945930062011975270, -0.945946279361994380, -0.945962494347147740, -0.945978706967394830, -0.945994917222695240, -0.946011125113008330, -0.946027330638293470, +-0.946043533798510470, -0.946059734593618470, -0.946075933023577290, -0.946092129088346170, -0.946108322787884810, -0.946124514122152590, -0.946140703091109090, -0.946156889694713790, +-0.946173073932926380, -0.946189255805706120, -0.946205435313012930, -0.946221612454805960, -0.946237787231045120, -0.946253959641689790, -0.946270129686699430, -0.946286297366033870, +-0.946302462679652460, -0.946318625627515010, -0.946334786209580890, -0.946350944425809910, -0.946367100276161440, -0.946383253760595400, -0.946399404879071040, -0.946415553631548280, +-0.946431700017986600, -0.946447844038345700, -0.946463985692585160, -0.946480124980664690, -0.946496261902543770, -0.946512396458182410, -0.946528528647539890, -0.946544658470576120, +-0.946560785927250680, -0.946576911017523280, -0.946593033741353730, -0.946609154098701390, -0.946625272089526290, -0.946641387713788030, -0.946657500971446190, -0.946673611862460680, +-0.946689720386791110, -0.946705826544397280, -0.946721930335238880, -0.946738031759275510, -0.946754130816467310, -0.946770227506773530, -0.946786321830154430, -0.946802413786569260, +-0.946818503375978280, -0.946834590598340960, -0.946850675453617120, -0.946866757941766670, -0.946882838062749310, -0.946898915816524860, -0.946914991203053000, -0.946931064222293890, +-0.946947134874206900, -0.946963203158752150, -0.946979269075889360, -0.946995332625578560, -0.947011393807779210, -0.947027452622451580, -0.947043509069555140, -0.947059563149050040, +-0.947075614860895980, -0.947091664205052860, -0.947107711181480630, -0.947123755790139190, -0.947139798030988240, -0.947155837903987830, -0.947171875409097860, -0.947187910546278160, +-0.947203943315488630, -0.947219973716689420, -0.947236001749840130, -0.947252027414900890, -0.947268050711831620, -0.947284071640592140, -0.947300090201142480, -0.947316106393442660, +-0.947332120217452500, -0.947348131673132030, -0.947364140760441400, -0.947380147479340180, -0.947396151829788760, -0.947412153811746930, -0.947428153425174720, -0.947444150670032070, +-0.947460145546279110, -0.947476138053875760, -0.947492128192782060, -0.947508115962958030, -0.947524101364363710, -0.947540084396959250, -0.947556065060704440, -0.947572043355559450, +-0.947588019281484390, -0.947603992838439320, -0.947619964026384260, -0.947635932845279360, -0.947651899295084420, -0.947667863375759920, -0.947683825087265670, -0.947699784429561930, +-0.947715741402608720, -0.947731696006366090, -0.947747648240794270, -0.947763598105853310, -0.947779545601503350, -0.947795490727704530, -0.947811433484416990, -0.947827373871600880, +-0.947843311889216330, -0.947859247537223500, -0.947875180815582640, -0.947891111724253670, -0.947907040263197050, -0.947922966432372730, -0.947938890231741050, -0.947954811661262050, +-0.947970730720896100, -0.947986647410603340, -0.948002561730344030, -0.948018473680078190, -0.948034383259766190, -0.948050290469368170, -0.948066195308844620, -0.948082097778155440, +-0.948097997877261010, -0.948113895606121580, -0.948129790964697520, -0.948145683952948850, -0.948161574570836050, -0.948177462818319380, -0.948193348695358870, -0.948209232201915220, +-0.948225113337948230, -0.948240992103418610, -0.948256868498286500, -0.948272742522512260, -0.948288614176056030, -0.948304483458878410, -0.948320350370939420, -0.948336214912199770, +-0.948352077082619370, -0.948367936882158920, -0.948383794310778570, -0.948399649368438790, -0.948415502055099720, -0.948431352370722070, -0.948447200315265970, -0.948463045888691900, +-0.948478889090960230, -0.948494729922031320, -0.948510568381865650, -0.948526404470423360, -0.948542238187665250, -0.948558069533551480, -0.948573898508042520, -0.948589725111098850, +-0.948605549342680820, -0.948621371202748920, -0.948637190691263730, -0.948653007808185400, -0.948668822553474620, -0.948684634927091760, -0.948700444928997300, -0.948716252559151710, +-0.948732057817515570, -0.948747860704049260, -0.948763661218713250, -0.948779459361468120, -0.948795255132274360, -0.948811048531092440, -0.948826839557882940, -0.948842628212606340, +-0.948858414495223010, -0.948874198405693870, -0.948889979943979060, -0.948905759110039380, -0.948921535903835320, -0.948937310325327470, -0.948953082374476180, -0.948968852051242370, +-0.948984619355586200, -0.949000384287468690, -0.949016146846850090, -0.949031907033691220, -0.949047664847952550, -0.949063420289594780, -0.949079173358578280, -0.949094924054864060, +-0.949110672378412400, -0.949126418329184100, -0.949142161907139740, -0.949157903112240020, -0.949173641944445530, -0.949189378403716870, -0.949205112490014820, -0.949220844203299880, +-0.949236573543532970, -0.949252300510674550, -0.949268025104685440, -0.949283747325526230, -0.949299467173157720, -0.949315184647540390, -0.949330899748635270, -0.949346612476402730, +-0.949362322830803800, -0.949378030811798950, -0.949393736419349210, -0.949409439653414950, -0.949425140513957210, -0.949440839000936450, -0.949456535114313720, -0.949472228854049690, +-0.949487920220104980, -0.949503609212440590, -0.949519295831017130, -0.949534980075795400, -0.949550661946736210, -0.949566341443800370, -0.949582018566948680, -0.949597693316141970, +-0.949613365691341030, -0.949629035692506670, -0.949644703319599710, -0.949660368572580960, -0.949676031451411330, -0.949691691956051630, -0.949707350086462680, -0.949723005842605380, +-0.949738659224440450, -0.949754310231929020, -0.949769958865031790, -0.949785605123709690, -0.949801249007923510, -0.949816890517634180, -0.949832529652802740, -0.949848166413389870, +-0.949863800799356620, -0.949879432810663780, -0.949895062447272510, -0.949910689709143500, -0.949926314596237780, -0.949941937108516270, -0.949957557245940000, -0.949973175008469670, +-0.949988790396066540, -0.950004403408691410, -0.950020014046305320, -0.950035622308869070, -0.950051228196343800, -0.950066831708690440, -0.950082432845870130, -0.950098031607843670, +-0.950113627994572110, -0.950129222006016460, -0.950144813642137760, -0.950160402902897050, -0.950175989788255350, -0.950191574298173690, -0.950207156432613000, -0.950222736191534520, +-0.950238313574899180, -0.950253888582668020, -0.950269461214802160, -0.950285031471262640, -0.950300599352010500, -0.950316164857006980, -0.950331727986212900, -0.950347288739589620, +-0.950362847117098060, -0.950378403118699480, -0.950393956744354780, -0.950409507994025240, -0.950425056867671870, -0.950440603365255930, -0.950456147486738460, -0.950471689232080590, +-0.950487228601243570, -0.950502765594188340, -0.950518300210876350, -0.950533832451268430, -0.950549362315326160, -0.950564889803010350, -0.950580414914282360, -0.950595937649103220, +-0.950611458007434410, -0.950626975989236840, -0.950642491594471890, -0.950658004823100590, -0.950673515675084400, -0.950689024150384370, -0.950704530248961840, -0.950720033970777980, +-0.950735535315794020, -0.950751034283971230, -0.950766530875270740, -0.950782025089654040, -0.950797516927082250, -0.950813006387516650, -0.950828493470918580, -0.950843978177249300, +-0.950859460506469970, -0.950874940458542040, -0.950890418033426780, -0.950905893231085430, -0.950921366051479370, -0.950936836494569950, -0.950952304560318320, -0.950967770248686060, +-0.950983233559634320, -0.950998694493124460, -0.951014153049117850, -0.951029609227575960, -0.951045063028460040, -0.951060514451731340, -0.951075963497351460, -0.951091410165281650, +-0.951106854455483370, -0.951122296367917790, -0.951137735902546690, -0.951153173059331000, -0.951168607838232540, -0.951184040239212550, -0.951199470262232500, -0.951214897907253660, +-0.951230323174237610, -0.951245746063145830, -0.951261166573939550, -0.951276584706580500, -0.951292000461029910, -0.951307413837249260, -0.951322824835200250, -0.951338233454844030, +-0.951353639696142280, -0.951369043559056490, -0.951384445043547910, -0.951399844149578340, -0.951415240877109160, -0.951430635226101940, -0.951446027196518050, -0.951461416788319080, +-0.951476804001466610, -0.951492188835922130, -0.951507571291647090, -0.951522951368603210, -0.951538329066751950, -0.951553704386054910, -0.951569077326473440, -0.951584447887969480, +-0.951599816070504260, -0.951615181874039600, -0.951630545298536860, -0.951645906343957850, -0.951661265010264160, -0.951676621297417150, -0.951691975205378630, -0.951707326734110180, +-0.951722675883573510, -0.951738022653729980, -0.951753367044541500, -0.951768709055969550, -0.951784048687975950, -0.951799385940522050, -0.951814720813569770, -0.951830053307080700, +-0.951845383421016540, -0.951860711155338770, -0.951876036510009400, -0.951891359484989820, -0.951906680080241930, -0.951921998295727210, -0.951937314131407590, -0.951952627587244750, +-0.951967938663200290, -0.951983247359235900, -0.951998553675313500, -0.952013857611394680, -0.952029159167441130, -0.952044458343414780, -0.952059755139277210, -0.952075049554990340, +-0.952090341590515750, -0.952105631245815490, -0.952120918520850900, -0.952136203415584250, -0.952151485929976890, -0.952166766063990980, -0.952182043817588090, -0.952197319190730030, +-0.952212592183378730, -0.952227862795495980, -0.952243131027043500, -0.952258396877983300, -0.952273660348277100, -0.952288921437886680, -0.952304180146773980, -0.952319436474900800, +-0.952334690422229070, -0.952349941988720470, -0.952365191174337270, -0.952380437979040930, -0.952395682402793490, -0.952410924445556860, -0.952426164107292970, -0.952441401387963630, +-0.952456636287530860, -0.952471868805956360, -0.952487098943202270, -0.952502326699230410, -0.952517552074002790, -0.952532775067481240, -0.952547995679627780, -0.952563213910404330, +-0.952578429759772800, -0.952593643227695350, -0.952608854314133560, -0.952624063019049780, -0.952639269342405840, -0.952654473284163750, -0.952669674844285330, -0.952684874022732830, +-0.952700070819468170, -0.952715265234453270, -0.952730457267650270, -0.952745646919021080, -0.952760834188527750, -0.952776019076132410, -0.952791201581796980, -0.952806381705483480, +-0.952821559447154080, -0.952836734806770890, -0.952851907784295740, -0.952867078379690870, -0.952882246592918310, -0.952897412423940100, -0.952912575872718380, -0.952927736939215180, +-0.952942895623392740, -0.952958051925212880, -0.952973205844638070, -0.952988357381630120, -0.953003506536151400, -0.953018653308163820, -0.953033797697629640, -0.953048939704510990, +-0.953064079328769910, -0.953079216570368650, -0.953094351429269460, -0.953109483905434260, -0.953124613998825420, -0.953139741709405080, -0.953154867037135370, -0.953169989981978330, +-0.953185110543896540, -0.953200228722851930, -0.953215344518806630, -0.953230457931723120, -0.953245568961563320, -0.953260677608289700, -0.953275783871864290, -0.953290887752249460, +-0.953305989249407460, -0.953321088363300430, -0.953336185093890730, -0.953351279441140620, -0.953366371405012130, -0.953381460985467830, -0.953396548182469880, -0.953411632995980530, +-0.953426715425962130, -0.953441795472376950, -0.953456873135187230, -0.953471948414355340, -0.953487021309843640, -0.953502091821614380, -0.953517159949629820, -0.953532225693852430, +-0.953547289054244460, -0.953562350030768170, -0.953577408623386140, -0.953592464832060500, -0.953607518656753750, -0.953622570097428120, -0.953637619154046210, -0.953652665826570160, +-0.953667710114962430, -0.953682752019185510, -0.953697791539201640, -0.953712828674973310, -0.953727863426462870, -0.953742895793632810, -0.953757925776445580, -0.953772953374863340, +-0.953787978588848890, -0.953803001418364490, -0.953818021863372500, -0.953833039923835610, -0.953848055599715970, -0.953863068890976270, -0.953878079797578770, -0.953893088319486160, +-0.953908094456660800, -0.953923098209065290, -0.953938099576661980, -0.953953098559413460, -0.953968095157282090, -0.953983089370230570, -0.953998081198221270, -0.954013070641216880, +-0.954028057699179640, -0.954043042372072380, -0.954058024659857450, -0.954073004562497550, -0.954087982079955150, -0.954102957212192630, -0.954117929959172880, -0.954132900320858180, +-0.954147868297211430, -0.954162833888194780, -0.954177797093771150, -0.954192757913903010, -0.954207716348553060, -0.954222672397683660, -0.954237626061257730, -0.954252577339237630, +-0.954267526231586170, -0.954282472738265720, -0.954297416859239300, -0.954312358594469170, -0.954327297943918350, -0.954342234907549100, -0.954357169485324340, -0.954372101677206650, +-0.954387031483158730, -0.954401958903143170, -0.954416883937122760, -0.954431806585060110, -0.954446726846918000, -0.954461644722659040, -0.954476560212245920, -0.954491473315641440, +-0.954506384032808300, -0.954521292363709200, -0.954536198308306830, -0.954551101866564000, -0.954566003038443410, -0.954580901823907760, -0.954595798222919960, -0.954610692235442590, +-0.954625583861438480, -0.954640473100870410, -0.954655359953701210, -0.954670244419893570, -0.954685126499410290, -0.954700006192214290, -0.954714883498268270, -0.954729758417534930, +-0.954744630949977300, -0.954759501095558070, -0.954774368854240050, -0.954789234225986160, -0.954804097210759100, -0.954818957808521880, -0.954833816019237220, -0.954848671842868040, +-0.954863525279377230, -0.954878376328727520, -0.954893224990881920, -0.954908071265803240, -0.954922915153454400, -0.954937756653798210, -0.954952595766797700, -0.954967432492415670, +-0.954982266830615050, -0.954997098781358860, -0.955011928344609800, -0.955026755520331010, -0.955041580308485180, -0.955056402709035580, -0.955071222721944890, -0.955086040347176150, +-0.955100855584692270, -0.955115668434456390, -0.955130478896431100, -0.955145286970579880, -0.955160092656865300, -0.955174895955250510, -0.955189696865698430, -0.955204495388172200, +-0.955219291522634630, -0.955234085269048960, -0.955248876627377900, -0.955263665597584800, -0.955278452179632480, -0.955293236373484070, -0.955308018179102600, -0.955322797596451000, +-0.955337574625492400, -0.955352349266189950, -0.955367121518506560, -0.955381891382405370, -0.955396658857849520, -0.955411423944801940, -0.955426186643225870, -0.955440946953084240, +-0.955455704874340280, -0.955470460406957050, -0.955485213550897770, -0.955499964306125270, -0.955514712672603020, -0.955529458650293930, -0.955544202239161260, -0.955558943439167920, +-0.955573682250277390, -0.955588418672452590, -0.955603152705656770, -0.955617884349853060, -0.955632613605004620, -0.955647340471074690, -0.955662064948026300, -0.955676787035822930, +-0.955691506734427380, -0.955706224043803230, -0.955720938963913410, -0.955735651494721280, -0.955750361636189980, -0.955765069388282870, -0.955779774750963100, -0.955794477724193790, +-0.955809178307938320, -0.955823876502159940, -0.955838572306821900, -0.955853265721887340, -0.955867956747319610, -0.955882645383082100, -0.955897331629137930, -0.955912015485450350, +-0.955926696951982850, -0.955941376028698550, -0.955956052715560830, -0.955970727012532940, -0.955985398919578230, -0.956000068436660080, -0.956014735563741720, -0.956029400300786540, +-0.956044062647757880, -0.956058722604618990, -0.956073380171333360, -0.956088035347864240, -0.956102688134175090, -0.956117338530229070, -0.956131986535989850, -0.956146632151420590, +-0.956161275376484880, -0.956175916211145840, -0.956190554655367060, -0.956205190709111920, -0.956219824372343760, -0.956234455645026070, -0.956249084527122210, -0.956263711018595640, +-0.956278335119409850, -0.956292956829528200, -0.956307576148914150, -0.956322193077531190, -0.956336807615342680, -0.956351419762312190, -0.956366029518403100, -0.956380636883578990, +-0.956395241857803220, -0.956409844441039490, -0.956424444633250940, -0.956439042434401480, -0.956453637844454250, -0.956468230863373070, -0.956482821491121290, -0.956497409727662400, +-0.956511995572960070, -0.956526579026977570, -0.956541160089678820, -0.956555738761027060, -0.956570315040986000, -0.956584888929519090, -0.956599460426590050, -0.956614029532162350, +-0.956628596246199560, -0.956643160568665160, -0.956657722499523080, -0.956672282038736440, -0.956686839186269290, -0.956701393942084980, -0.956715946306147200, -0.956730496278419550, +-0.956745043858865610, -0.956759589047449180, -0.956774131844133620, -0.956788672248882870, -0.956803210261660380, -0.956817745882429850, -0.956832279111154980, -0.956846809947799470, +-0.956861338392326790, -0.956875864444700850, -0.956890388104885250, -0.956904909372843780, -0.956919428248539820, -0.956933944731937490, -0.956948458823000170, -0.956962970521691770, +-0.956977479827975870, -0.956991986741816400, -0.957006491263176830, -0.957020993392021070, -0.957035493128312820, -0.957049990472015890, -0.957064485423093970, -0.957078977981510870, +-0.957093468147230290, -0.957107955920216020, -0.957122441300431890, -0.957136924287841580, -0.957151404882409020, -0.957165883084097890, -0.957180358892872230, -0.957194832308695510, +-0.957209303331531760, -0.957223771961344670, -0.957238238198098280, -0.957252702041756160, -0.957267163492282470, -0.957281622549640670, -0.957296079213795000, -0.957310533484708960, +-0.957324985362346670, -0.957339434846671940, -0.957353881937648590, -0.957368326635240630, -0.957382768939411650, -0.957397208850125910, -0.957411646367347100, -0.957426081491039250, +-0.957440514221166050, -0.957454944557691650, -0.957469372500579840, -0.957483798049794670, -0.957498221205300040, -0.957512641967059760, -0.957527060335037870, -0.957541476309198390, +-0.957555889889505240, -0.957570301075922340, -0.957584709868413600, -0.957599116266943160, -0.957613520271474950, -0.957627921881972880, -0.957642321098401080, -0.957656717920723490, +-0.957671112348904010, -0.957685504382906780, -0.957699894022695840, -0.957714281268235100, -0.957728666119488700, -0.957743048576420560, -0.957757428638994930, -0.957771806307175620, +-0.957786181580926880, -0.957800554460212620, -0.957814924944996980, -0.957829293035244110, -0.957843658730917920, -0.957858022031982560, -0.957872382938402270, -0.957886741450140860, +-0.957901097567162680, -0.957915451289431790, -0.957929802616912300, -0.957944151549568250, -0.957958498087363770, -0.957972842230263130, -0.957987183978230350, -0.958001523331229570, +-0.958015860289225030, -0.958030194852180880, -0.958044527020061150, -0.958058856792830090, -0.958073184170451950, -0.958087509152890870, -0.958101831740110990, -0.958116151932076550, +-0.958130469728751710, -0.958144785130100710, -0.958159098136087680, -0.958173408746677000, -0.958187716961832690, -0.958202022781519220, -0.958216326205700630, -0.958230627234341270, +-0.958244925867405280, -0.958259222104857030, -0.958273515946660660, -0.958287807392780520, -0.958302096443180870, -0.958316383097825960, -0.958330667356680150, -0.958344949219707590, +-0.958359228686872730, -0.958373505758139730, -0.958387780433473060, -0.958402052712836850, -0.958416322596195580, -0.958430590083513500, -0.958444855174754970, -0.958459117869884140, +-0.958473378168865690, -0.958487636071663650, -0.958501891578242730, -0.958516144688566940, -0.958530395402600770, -0.958544643720308680, -0.958558889641654920, -0.958573133166603970, +-0.958587374295120200, -0.958601613027167950, -0.958615849362711710, -0.958630083301715840, -0.958644314844144700, -0.958658543989962860, -0.958672770739134590, -0.958686995091624470, +-0.958701217047396750, -0.958715436606416120, -0.958729653768646830, -0.958743868534053360, -0.958758080902600280, -0.958772290874251980, -0.958786498448973010, -0.958800703626727760, +-0.958814906407480790, -0.958829106791196480, -0.958843304777839410, -0.958857500367374050, -0.958871693559765090, -0.958885884354976680, -0.958900072752973730, -0.958914258753720490, +-0.958928442357181670, -0.958942623563321720, -0.958956802372105230, -0.958970978783496690, -0.958985152797460770, -0.958999324413961960, -0.959013493632964840, -0.959027660454433880, +-0.959041824878333890, -0.959055986904629340, -0.959070146533284820, -0.959084303764264900, -0.959098458597534180, -0.959112611033057340, -0.959126761070798970, -0.959140908710723770, +-0.959155053952796210, -0.959169196796981090, -0.959183337243242900, -0.959197475291546420, -0.959211610941856250, -0.959225744194137090, -0.959239875048353400, -0.959254003504470210, +-0.959268129562451890, -0.959282253222263350, -0.959296374483869060, -0.959310493347233950, -0.959324609812322590, -0.959338723879099690, -0.959352835547529930, -0.959366944817578120, +-0.959381051689208950, -0.959395156162387130, -0.959409258237077460, -0.959423357913244620, -0.959437455190853440, -0.959451550069868600, -0.959465642550254790, -0.959479732631976940, +-0.959493820314999860, -0.959507905599288000, -0.959521988484806520, -0.959536068971520110, -0.959550147059393450, -0.959564222748391480, -0.959578296038478880, -0.959592366929620580, +-0.959606435421781370, -0.959620501514926060, -0.959634565209019570, -0.959648626504026600, -0.959662685399912060, -0.959676741896640760, -0.959690795994177610, -0.959704847692487650, +-0.959718896991535340, -0.959732943891285940, -0.959746988391704140, -0.959761030492754850, -0.959775070194403000, -0.959789107496613390, -0.959803142399351160, -0.959817174902581010, +-0.959831205006267840, -0.959845232710376810, -0.959859258014872600, -0.959873280919720240, -0.959887301424884650, -0.959901319530330980, -0.959915335236023790, -0.959929348541928460, +-0.959943359448009680, -0.959957367954232480, -0.959971374060561880, -0.959985377766962800, -0.959999379073400270, -0.960013377979839320, -0.960027374486244980, -0.960041368592582160, +-0.960055360298816000, -0.960069349604911300, -0.960083336510833330, -0.960097321016546880, -0.960111303122017310, -0.960125282827209330, -0.960139260132088280, -0.960153235036618980, +-0.960167207540766680, -0.960181177644496180, -0.960195145347772950, -0.960209110650561800, -0.960223073552827770, -0.960237034054536200, -0.960250992155651910, -0.960264947856140250, +-0.960278901155966150, -0.960292852055094850, -0.960306800553491380, -0.960320746651120990, -0.960334690347948610, -0.960348631643939580, -0.960362570539058940, -0.960376507033271930, +-0.960390441126543590, -0.960404372818839170, -0.960418302110123800, -0.960432229000362740, -0.960446153489521000, -0.960460075577563970, -0.960473995264456650, -0.960487912550164410, +-0.960501827434652510, -0.960515739917885860, -0.960529649999829930, -0.960543557680449860, -0.960557462959710890, -0.960571365837578290, -0.960585266314017310, -0.960599164388993070, +-0.960613060062470940, -0.960626953334416170, -0.960640844204794120, -0.960654732673569820, -0.960668618740708750, -0.960682502406176140, -0.960696383669937260, -0.960710262531957350, +-0.960724138992201880, -0.960738013050636110, -0.960751884707225170, -0.960765753961934640, -0.960779620814729670, -0.960793485265575730, -0.960807347314437950, -0.960821206961281820, +-0.960835064206072680, -0.960848919048776010, -0.960862771489356840, -0.960876621527780860, -0.960890469164013330, -0.960904314398019600, -0.960918157229765040, -0.960931997659215220, +-0.960945835686335290, -0.960959671311090840, -0.960973504533447100, -0.960987335353369660, -0.961001163770823900, -0.961014989785775260, -0.961028813398189130, -0.961042634608030970, +-0.961056453415266130, -0.961070269819860210, -0.961084083821778680, -0.961097895420986890, -0.961111704617450440, -0.961125511411134560, -0.961139315802005070, -0.961153117790027210, +-0.961166917375166570, -0.961180714557388630, -0.961194509336658950, -0.961208301712942910, -0.961222091686206200, -0.961235879256414180, -0.961249664423532550, -0.961263447187526650, +-0.961277227548362200, -0.961291005506004660, -0.961304781060419720, -0.961318554211572640, -0.961332324959429330, -0.961346093303955150, -0.961359859245115690, -0.961373622782876640, +-0.961387383917203580, -0.961401142648061980, -0.961414898975417540, -0.961428652899235850, -0.961442404419482480, -0.961456153536123240, -0.961469900249123490, -0.961483644558449040, +-0.961497386464065460, -0.961511125965938460, -0.961524863064033620, -0.961538597758316630, -0.961552330048753070, -0.961566059935308750, -0.961579787417949250, -0.961593512496640380, +-0.961607235171347610, -0.961620955442036850, -0.961634673308673690, -0.961648388771223720, -0.961662101829652950, -0.961675812483926750, -0.961689520734011150, -0.961703226579871730, +-0.961716930021474180, -0.961730631058784420, -0.961744329691768040, -0.961758025920390720, -0.961771719744618500, -0.961785411164416850, -0.961799100179751790, -0.961812786790588900, +-0.961826470996894000, -0.961840152798633000, -0.961853832195771590, -0.961867509188275570, -0.961881183776110870, -0.961894855959243290, -0.961908525737638300, -0.961922193111262260, +-0.961935858080080530, -0.961949520644059250, -0.961963180803164120, -0.961976838557361160, -0.961990493906615950, -0.962004146850894640, -0.962017797390162910, -0.962031445524386690, +-0.962045091253531770, -0.962058734577564300, -0.962072375496449860, -0.962086014010154480, -0.962099650118644070, -0.962113283821884660, -0.962126915119841940, -0.962140544012481950, +-0.962154170499770590, -0.962167794581673790, -0.962181416258157560, -0.962195035529187730, -0.962208652394730300, -0.962222266854751320, -0.962235878909216580, -0.962249488558092110, +-0.962263095801344060, -0.962276700638938220, -0.962290303070840620, -0.962303903097017190, -0.962317500717434160, -0.962331095932057230, -0.962344688740852660, -0.962358279143786350, +-0.962371867140824340, -0.962385452731932540, -0.962399035917077320, -0.962412616696224350, -0.962426195069339910, -0.962439771036390000, -0.962453344597340550, -0.962466915752157930, +-0.962480484500807810, -0.962494050843256680, -0.962507614779470220, -0.962521176309414920, -0.962534735433056450, -0.962548292150361310, -0.962561846461295390, -0.962575398365824950, +-0.962588947863915910, -0.962602494955534520, -0.962616039640646900, -0.962629581919219210, -0.962643121791217470, -0.962656659256608040, -0.962670194315356830, -0.962683726967430320, +-0.962697257212794310, -0.962710785051415270, -0.962724310483259240, -0.962737833508292450, -0.962751354126481050, -0.962764872337791290, -0.962778388142189410, -0.962791901539641450, +-0.962805412530113760, -0.962818921113572480, -0.962832427289983970, -0.962845931059314370, -0.962859432421530050, -0.962872931376597020, -0.962886427924481760, -0.962899922065150290, +-0.962913413798569210, -0.962926903124704410, -0.962940390043522500, -0.962953874554989490, -0.962967356659071850, -0.962980836355735840, -0.962994313644947700, -0.963007788526673790, +-0.963021261000880370, -0.963034731067533900, -0.963048198726600520, -0.963061663978046710, -0.963075126821838600, -0.963088587257942890, -0.963102045286325480, -0.963115500906953190, +-0.963128954119791940, -0.963142404924808400, -0.963155853321968850, -0.963169299311239730, -0.963182742892587210, -0.963196184065977960, -0.963209622831378120, -0.963223059188754390, +-0.963236493138072910, -0.963249924679300260, -0.963263353812402800, -0.963276780537346890, -0.963290204854099000, -0.963303626762625600, -0.963317046262893270, -0.963330463354868160, +-0.963343878038517070, -0.963357290313806120, -0.963370700180702030, -0.963384107639171150, -0.963397512689180060, -0.963410915330695120, -0.963424315563682910, -0.963437713388109910, +-0.963451108803942690, -0.963464501811147620, -0.963477892409691390, -0.963491280599540370, -0.963504666380661120, -0.963518049753020240, -0.963531430716584200, -0.963544809271319690, +-0.963558185417193070, -0.963571559154170920, -0.963584930482219940, -0.963598299401306700, -0.963611665911397570, -0.963625030012459470, -0.963638391704458640, -0.963651750987361890, +-0.963665107861135680, -0.963678462325746830, -0.963691814381161690, -0.963705164027347180, -0.963718511264269660, -0.963731856091895820, -0.963745198510192360, -0.963758538519125960, +-0.963771876118663220, -0.963785211308770820, -0.963798544089415340, -0.963811874460563490, -0.963825202422181950, -0.963838527974237410, -0.963851851116696580, -0.963865171849526030, +-0.963878490172692670, -0.963891806086162980, -0.963905119589903880, -0.963918430683881830, -0.963931739368063870, -0.963945045642416450, -0.963958349506906510, -0.963971650961500610, +-0.963984950006165690, -0.963998246640868190, -0.964011540865575280, -0.964024832680253410, -0.964038122084869500, -0.964051409079390240, -0.964064693663782560, -0.964077975838013130, +-0.964091255602048670, -0.964104532955856190, -0.964117807899402270, -0.964131080432653830, -0.964144350555577790, -0.964157618268140840, -0.964170883570309780, -0.964184146462051530, +-0.964197406943332890, -0.964210665014120780, -0.964223920674382010, -0.964237173924083480, -0.964250424763191890, -0.964263673191674390, -0.964276919209497540, -0.964290162816628600, +-0.964303404013034050, -0.964316642798681120, -0.964329879173536630, -0.964343113137567260, -0.964356344690740270, -0.964369573833022240, -0.964382800564380420, -0.964396024884781600, +-0.964409246794192710, -0.964422466292580660, -0.964435683379912480, -0.964448898056155080, -0.964462110321275380, -0.964475320175240510, -0.964488527618017290, -0.964501732649572730, +-0.964514935269873860, -0.964528135478887600, -0.964541333276581090, -0.964554528662921130, -0.964567721637874960, -0.964580912201409510, -0.964594100353491690, -0.964607286094088750, +-0.964620469423167370, -0.964633650340695040, -0.964646828846638440, -0.964660004940964820, -0.964673178623641210, -0.964686349894634640, -0.964699518753912130, -0.964712685201440930, +-0.964725849237187960, -0.964739010861120350, -0.964752170073205240, -0.964765326873409770, -0.964778481261700850, -0.964791633238045840, -0.964804782802411660, -0.964817929954765560, +-0.964831074695074560, -0.964844217023306030, -0.964857356939426870, -0.964870494443404340, -0.964883629535205570, -0.964896762214797700, -0.964909892482147980, -0.964923020337223440, +-0.964936145779991430, -0.964949268810419090, -0.964962389428473570, -0.964975507634121990, -0.964988623427331600, -0.965001736808069780, -0.965014847776303530, -0.965027956332000230, +-0.965041062475127000, -0.965054166205651100, -0.965067267523539880, -0.965080366428760380, -0.965093462921279950, -0.965106557001065960, -0.965119648668085530, -0.965132737922306030, +-0.965145824763694590, -0.965158909192218690, -0.965171991207845470, -0.965185070810542280, -0.965198148000276370, -0.965211222777015100, -0.965224295140725830, -0.965237365091375810, +-0.965250432628932290, -0.965263497753362840, -0.965276560464634500, -0.965289620762714850, -0.965302678647571020, -0.965315734119170710, -0.965328787177480940, -0.965341837822469180, +-0.965354886054102800, -0.965367931872349370, -0.965380975277176030, -0.965394016268550150, -0.965407054846439290, -0.965420091010810830, -0.965433124761632120, -0.965446156098870630, +-0.965459185022493730, -0.965472211532468760, -0.965485235628763430, -0.965498257311344980, -0.965511276580180770, -0.965524293435238490, -0.965537307876485400, -0.965550319903889060, +-0.965563329517416970, -0.965576336717036470, -0.965589341502715250, -0.965602343874420570, -0.965615343832120110, -0.965628341375781240, -0.965641336505371540, -0.965654329220858480, +-0.965667319522209630, -0.965680307409392480, -0.965693292882374490, -0.965706275941123350, -0.965719256585606420, -0.965732234815791510, -0.965745210631645870, -0.965758184033137290, +-0.965771155020233140, -0.965784123592901220, -0.965797089751108890, -0.965810053494823960, -0.965823014824013780, -0.965835973738646160, -0.965848930238688560, -0.965861884324108690, +-0.965874835994874000, -0.965887785250952310, -0.965900732092311090, -0.965913676518918020, -0.965926618530740910, -0.965939558127747120, -0.965952495309904460, -0.965965430077180610, +-0.965978362429543160, -0.965991292366959800, -0.966004219889398220, -0.966017144996826000, -0.966030067689211070, -0.966042987966520770, -0.966055905828723250, -0.966068821275785750, +-0.966081734307676300, -0.966094644924362480, -0.966107553125812090, -0.966120458911992830, -0.966133362282872390, -0.966146263238418460, -0.966159161778599060, -0.966172057903381680, +-0.966184951612734100, -0.966197842906624140, -0.966210731785019590, -0.966223618247888270, -0.966236502295197860, -0.966249383926916170, -0.966262263143011000, -0.966275139943450270, +-0.966288014328201660, -0.966300886297232990, -0.966313755850512050, -0.966326622988006870, -0.966339487709685030, -0.966352350015514450, -0.966365209905463040, -0.966378067379498610, +-0.966390922437588950, -0.966403775079702100, -0.966416625305805630, -0.966429473115867800, -0.966442318509856180, -0.966455161487738800, -0.966468002049483580, -0.966480840195058200, +-0.966493675924430810, -0.966506509237569200, -0.966519340134441410, -0.966532168615015120, -0.966544994679258470, -0.966557818327139380, -0.966570639558625770, -0.966583458373685420, +-0.966596274772286490, -0.966609088754396880, -0.966621900319984630, -0.966634709469017530, -0.966647516201463720, -0.966660320517291010, -0.966673122416467630, -0.966685921898961410, +-0.966698718964740360, -0.966711513613772500, -0.966724305846025870, -0.966737095661468480, -0.966749883060068370, -0.966762668041793560, -0.966775450606611960, -0.966788230754491940, +-0.966801008485401180, -0.966813783799307940, -0.966826556696180230, -0.966839327175986200, -0.966852095238693750, -0.966864860884271150, -0.966877624112686410, -0.966890384923907550, +-0.966903143317902720, -0.966915899294640060, -0.966928652854087690, -0.966941403996213640, -0.966954152720986060, -0.966966899028373180, -0.966979642918343040, -0.966992384390863660, +-0.967005123445903500, -0.967017860083430380, -0.967030594303412650, -0.967043326105818450, -0.967056055490616020, -0.967068782457773280, -0.967081507007258700, -0.967094229139040310, +-0.967106948853086460, -0.967119666149365060, -0.967132381027844600, -0.967145093488493200, -0.967157803531279110, -0.967170511156170360, -0.967183216363135420, -0.967195919152142540, +-0.967208619523159620, -0.967221317476155360, -0.967234013011097680, -0.967246706127955050, -0.967259396826695590, -0.967272085107287790, -0.967284770969699560, -0.967297454413899580, +-0.967310135439855890, -0.967322814047536840, -0.967335490236910790, -0.967348164007945990, -0.967360835360610790, -0.967373504294873570, -0.967386170810702440, -0.967398834908066000, +-0.967411496586932370, -0.967424155847270150, -0.967436812689047470, -0.967449467112232670, -0.967462119116794360, -0.967474768702700660, -0.967487415869920040, -0.967500060618420870, +-0.967512702948171600, -0.967525342859140600, -0.967537980351296230, -0.967550615424606740, -0.967563248079040930, -0.967575878314566930, -0.967588506131153210, -0.967601131528768140, +-0.967613754507380410, -0.967626375066958140, -0.967638993207470040, -0.967651608928884470, -0.967664222231169880, -0.967676833114294640, -0.967689441578227340, -0.967702047622936550, +-0.967714651248390510, -0.967727252454557930, -0.967739851241407160, -0.967752447608906770, -0.967765041557025250, -0.967777633085731170, -0.967790222194993000, -0.967802808884779320, +-0.967815393155058490, -0.967827975005799310, -0.967840554436970040, -0.967853131448539570, -0.967865706040476170, -0.967878278212748520, -0.967890847965325100, -0.967903415298174700, +-0.967915980211265680, -0.967928542704566740, -0.967941102778046350, -0.967953660431673300, -0.967966215665416070, -0.967978768479243360, -0.967991318873123730, -0.968003866847025660, +-0.968016412400918070, -0.968028955534769310, -0.968041496248548290, -0.968054034542223500, -0.968066570415763610, -0.968079103869137310, -0.968091634902313200, -0.968104163515260070, +-0.968116689707946510, -0.968129213480341200, -0.968141734832412840, -0.968154253764130220, -0.968166770275461940, -0.968179284366376680, -0.968191796036843240, -0.968204305286830320, +-0.968216812116306610, -0.968229316525241020, -0.968241818513601920, -0.968254318081358420, -0.968266815228479020, -0.968279309954932720, -0.968291802260688010, -0.968304292145713900, +-0.968316779609978970, -0.968329264653452150, -0.968341747276102120, -0.968354227477897790, -0.968366705258807860, -0.968379180618801130, -0.968391653557846510, -0.968404124075912700, +-0.968416592172968600, -0.968429057848983030, -0.968441521103924790, -0.968453981937762780, -0.968466440350465810, -0.968478896342002790, -0.968491349912342430, -0.968503801061453730, +-0.968516249789305620, -0.968528696095866670, -0.968541139981106140, -0.968553581444992710, -0.968566020487495400, -0.968578457108583040, -0.968590891308224510, -0.968603323086388630, +-0.968615752443044540, -0.968628179378161150, -0.968640603891707250, -0.968653025983651770, -0.968665445653963840, -0.968677862902612150, -0.968690277729565950, -0.968702690134793930, +-0.968715100118265340, -0.968727507679948860, -0.968739912819813640, -0.968752315537828700, -0.968764715833962950, -0.968777113708185420, -0.968789509160465020, -0.968801902190771000, +-0.968814292799072050, -0.968826680985337530, -0.968839066749536130, -0.968851450091637200, -0.968863831011609560, -0.968876209509422440, -0.968888585585044760, -0.968900959238445660, +-0.968913330469594050, -0.968925699278459170, -0.968938065665010060, -0.968950429629215740, -0.968962791171045450, -0.968975150290468100, -0.968987506987452840, -0.968999861261968910, +-0.969012213113985220, -0.969024562543471020, -0.969036909550395560, -0.969049254134727640, -0.969061596296436730, -0.969073936035491750, -0.969086273351861930, -0.969098608245516410, +-0.969110940716424450, -0.969123270764554960, -0.969135598389877510, -0.969147923592360900, -0.969160246371974620, -0.969172566728687570, -0.969184884662469330, -0.969197200173288700, +-0.969209513261115040, -0.969221823925917710, -0.969234132167665740, -0.969246437986328590, -0.969258741381875180, -0.969271042354274970, -0.969283340903497100, -0.969295637029511050, +-0.969307930732285720, -0.969320222011790690, -0.969332510867994990, -0.969344797300868090, -0.969357081310379230, -0.969369362896497560, -0.969381642059192530, -0.969393918798433510, +-0.969406193114189520, -0.969418465006430140, -0.969430734475124510, -0.969443001520242210, -0.969455266141752260, -0.969467528339624240, -0.969479788113827400, -0.969492045464330990, +-0.969504300391104580, -0.969516552894117310, -0.969528802973338650, -0.969541050628738080, -0.969553295860284830, -0.969565538667948370, -0.969577779051698060, -0.969590017011503270, +-0.969602252547333450, -0.969614485659157980, -0.969626716346946420, -0.969638944610667910, -0.969651170450292140, -0.969663393865788370, -0.969675614857126170, -0.969687833424274890, +-0.969700049567204130, -0.969712263285883220, -0.969724474580281550, -0.969736683450368790, -0.969748889896114190, -0.969761093917487550, -0.969773295514458010, -0.969785494686995380, +-0.969797691435068890, -0.969809885758648240, -0.969822077657702790, -0.969834267132202220, -0.969846454182116010, -0.969858638807413630, -0.969870821008064650, -0.969883000784038660, +-0.969895178135305120, -0.969907353061833620, -0.969919525563593730, -0.969931695640555150, -0.969943863292687110, -0.969956028519959660, -0.969968191322342020, -0.969980351699803900, +-0.969992509652314870, -0.970004665179844630, -0.970016818282362750, -0.970028968959838700, -0.970041117212242290, -0.970053263039543090, -0.970065406441710800, -0.970077547418714880, +-0.970089685970525140, -0.970101822097111270, -0.970113955798442730, -0.970126087074489330, -0.970138215925220760, -0.970150342350606600, -0.970162466350616650, -0.970174587925220380, +-0.970186707074387810, -0.970198823798088420, -0.970210938096291890, -0.970223049968968130, -0.970235159416086730, -0.970247266437617380, -0.970259371033529880, -0.970271473203793920, +-0.970283572948379300, -0.970295670267255830, -0.970307765160393080, -0.970319857627760960, -0.970331947669329180, -0.970344035285067630, -0.970356120474945790, -0.970368203238933800, +-0.970380283577001230, -0.970392361489118120, -0.970404436975253910, -0.970416510035378650, -0.970428580669462140, -0.970440648877474170, -0.970452714659384650, -0.970464778015163290, +-0.970476838944779980, -0.970488897448204550, -0.970500953525406880, -0.970513007176356800, -0.970525058401024320, -0.970537107199379130, -0.970549153571391150, -0.970561197517030290, +-0.970573239036266470, -0.970585278129069470, -0.970597314795409340, -0.970609349035255970, -0.970621380848579180, -0.970633410235348880, -0.970645437195535090, -0.970657461729107720, +-0.970669483836036790, -0.970681503516292010, -0.970693520769843500, -0.970705535596661280, -0.970717547996715170, -0.970729557969975180, -0.970741565516411220, -0.970753570635993430, +-0.970765573328691730, -0.970777573594476140, -0.970789571433316460, -0.970801566845182930, -0.970813559830045470, -0.970825550387874210, -0.970837538518638970, -0.970849524222309970, +-0.970861507498857020, -0.970873488348250380, -0.970885466770460060, -0.970897442765455980, -0.970909416333208370, -0.970921387473687280, -0.970933356186862610, -0.970945322472704600, +-0.970957286331183280, -0.970969247762268670, -0.970981206765931030, -0.970993163342140360, -0.971005117490866710, -0.971017069212080310, -0.971029018505751300, -0.971040965371849700, +-0.971052909810345640, -0.971064851821209380, -0.971076791404410940, -0.971088728559920570, -0.971100663287708390, -0.971112595587744430, -0.971124525459999060, -0.971136452904442390, +-0.971148377921044580, -0.971160300509775860, -0.971172220670606380, -0.971184138403506260, -0.971196053708445860, -0.971207966585395430, -0.971219877034324890, -0.971231785055204800, +-0.971243690648005200, -0.971255593812696330, -0.971267494549248540, -0.971279392857631980, -0.971291288737816890, -0.971303182189773630, -0.971315073213472440, -0.971326961808883560, +-0.971338847975977250, -0.971350731714723860, -0.971362613025093640, -0.971374491907056830, -0.971386368360583790, -0.971398242385644870, -0.971410113982210440, -0.971421983150250520, +-0.971433849889735800, -0.971445714200636410, -0.971457576082922710, -0.971469435536565060, -0.971481292561533930, -0.971493147157799440, -0.971504999325332190, -0.971516849064102290, +-0.971528696374080350, -0.971540541255236700, -0.971552383707541710, -0.971564223730965740, -0.971576061325479130, -0.971587896491052480, -0.971599729227656030, -0.971611559535260240, +-0.971623387413835580, -0.971635212863352530, -0.971647035883781320, -0.971658856475092650, -0.971670674637256760, -0.971682490370244230, -0.971694303674025320, -0.971706114548570810, +-0.971717922993850960, -0.971729729009836340, -0.971741532596497310, -0.971753333753804570, -0.971765132481728470, -0.971776928780239470, -0.971788722649308160, -0.971800514088905110, +-0.971812303099000680, -0.971824089679565570, -0.971835873830570240, -0.971847655551985160, -0.971859434843781010, -0.971871211705928270, -0.971882986138397520, -0.971894758141159220, +-0.971906527714184070, -0.971918294857442520, -0.971930059570905390, -0.971941821854543030, -0.971953581708326130, -0.971965339132225160, -0.971977094126211030, -0.971988846690253980, +-0.972000596824324940, -0.972012344528394360, -0.972024089802433040, -0.972035832646411360, -0.972047573060300100, -0.972059311044069950, -0.972071046597691610, -0.972082779721135440, +-0.972094510414372560, -0.972106238677373220, -0.972117964510108350, -0.972129687912548610, -0.972141408884664600, -0.972153127426427120, -0.972164843537806740, -0.972176557218774270, +-0.972188268469300400, -0.972199977289355920, -0.972211683678911420, -0.972223387637937810, -0.972235089166405660, -0.972246788264285900, -0.972258484931548980, -0.972270179168166050, +-0.972281870974107450, -0.972293560349344330, -0.972305247293847260, -0.972316931807587160, -0.972328613890534600, -0.972340293542660610, -0.972351970763935760, -0.972363645554331080, +-0.972375317913817260, -0.972386987842365210, -0.972398655339945630, -0.972410320406529420, -0.972421983042087380, -0.972433643246590430, -0.972445301020009370, -0.972456956362314990, +-0.972468609273478330, -0.972480259753469970, -0.972491907802261140, -0.972503553419822420, -0.972515196606124950, -0.972526837361139320, -0.972538475684836760, -0.972550111577187960, +-0.972561745038163840, -0.972573376067735310, -0.972585004665873500, -0.972596630832549100, -0.972608254567733140, -0.972619875871396530, -0.972631494743510180, -0.972643111184045120, +-0.972654725192972250, -0.972666336770262710, -0.972677945915887190, -0.972689552629816820, -0.972701156912022640, -0.972712758762475540, -0.972724358181146440, -0.972735955168006590, +-0.972747549723026790, -0.972759141846178070, -0.972770731537431540, -0.972782318796758250, -0.972793903624129100, -0.972805486019515220, -0.972817065982887530, -0.972828643514217270, +-0.972840218613475360, -0.972851791280632930, -0.972863361515661110, -0.972874929318530700, -0.972886494689213070, -0.972898057627679220, -0.972909618133900200, -0.972921176207847130, +-0.972932731849491140, -0.972944285058803260, -0.972955835835754730, -0.972967384180316590, -0.972978930092459950, -0.972990473572156070, -0.973002014619375970, -0.973013553234090780, +-0.973025089416271750, -0.973036623165890010, -0.973048154482916710, -0.973059683367323070, -0.973071209819080130, -0.973082733838159240, -0.973094255424531430, -0.973105774578168050, +-0.973117291299040230, -0.973128805587119230, -0.973140317442376060, -0.973151826864782300, -0.973163333854308750, -0.973174838410927000, -0.973186340534608170, -0.973197840225323520, +-0.973209337483044170, -0.973220832307741480, -0.973232324699386700, -0.973243814657951180, -0.973255302183406170, -0.973266787275722800, -0.973278269934872430, -0.973289750160826530, +-0.973301227953556230, -0.973312703313032770, -0.973324176239227620, -0.973335646732111930, -0.973347114791657250, -0.973358580417834630, -0.973370043610615740, -0.973381504369971620, +-0.973392962695873830, -0.973404418588293520, -0.973415872047202260, -0.973427323072571180, -0.973438771664371980, -0.973450217822575680, -0.973461661547153970, -0.973473102838078090, +-0.973484541695319390, -0.973495978118849360, -0.973507412108639450, -0.973518843664661020, -0.973530272786885310, -0.973541699475284130, -0.973553123729828500, -0.973564545550490210, +-0.973575964937240410, -0.973587381890050900, -0.973598796408892800, -0.973610208493737690, -0.973621618144557170, -0.973633025361322570, -0.973644430144005260, -0.973655832492577030, +-0.973667232407009250, -0.973678629887273270, -0.973690024933340780, -0.973701417545183250, -0.973712807722772130, -0.973724195466079020, -0.973735580775075380, -0.973746963649732790, +-0.973758344090022820, -0.973769722095917060, -0.973781097667386850, -0.973792470804404010, -0.973803841506939990, -0.973815209774966270, -0.973826575608454650, -0.973837939007376470, +-0.973849299971703550, -0.973860658501407240, -0.973872014596459450, -0.973883368256831530, -0.973894719482495170, -0.973906068273422080, -0.973917414629583810, -0.973928758550951960, +-0.973940100037498200, -0.973951439089194240, -0.973962775706011750, -0.973974109887922210, -0.973985441634897420, -0.973996770946909060, -0.974008097823928720, -0.974019422265928190, +-0.974030744272879060, -0.974042063844753110, -0.974053380981521940, -0.974064695683157340, -0.974076007949631010, -0.974087317780914730, -0.974098625176980090, -0.974109930137798900, +-0.974121232663342830, -0.974132532753583800, -0.974143830408493280, -0.974155125628043290, -0.974166418412205530, -0.974177708760951670, -0.974188996674253520, -0.974200282152082870, +-0.974211565194411540, -0.974222845801211320, -0.974234123972453900, -0.974245399708111190, -0.974256673008155110, -0.974267943872557220, -0.974279212301289550, -0.974290478294323800, +-0.974301741851631880, -0.974313002973185570, -0.974324261658956800, -0.974335517908917260, -0.974346771723039070, -0.974358023101293820, -0.974369272043653640, -0.974380518550090220, +-0.974391762620575590, -0.974403004255081420, -0.974414243453579740, -0.974425480216042580, -0.974436714542441630, -0.974447946432748900, -0.974459175886936310, -0.974470402904975770, +-0.974481627486839310, -0.974492849632498710, -0.974504069341925900, -0.974515286615093120, -0.974526501451971950, -0.974537713852534630, -0.974548923816752950, -0.974560131344598960, +-0.974571336436044660, -0.974582539091062070, -0.974593739309623120, -0.974604937091699820, -0.974616132437264080, -0.974627325346288150, -0.974638515818743830, -0.974649703854603260, +-0.974660889453838440, -0.974672072616421300, -0.974683253342324090, -0.974694431631518700, -0.974705607483977170, -0.974716780899671730, -0.974727951878574310, -0.974739120420656910, +-0.974750286525891800, -0.974761450194250980, -0.974772611425706590, -0.974783770220230550, -0.974794926577795100, -0.974806080498372360, -0.974817231981934480, -0.974828381028453480, +-0.974839527637901490, -0.974850671810250760, -0.974861813545473300, -0.974872952843541250, -0.974884089704426860, -0.974895224128102370, -0.974906356114539690, -0.974917485663711170, +-0.974928612775588840, -0.974939737450145060, -0.974950859687351960, -0.974961979487181660, -0.974973096849606420, -0.974984211774598490, -0.974995324262129870, -0.975006434312173150, +-0.975017541924700250, -0.975028647099683510, -0.975039749837095070, -0.975050850136907400, -0.975061947999092520, -0.975073043423622780, -0.975084136410470430, -0.975095226959607710, +-0.975106315071006980, -0.975117400744640370, -0.975128483980480350, -0.975139564778499170, -0.975150643138668950, -0.975161719060962160, -0.975172792545351160, -0.975183863591808090, +-0.975194932200305400, -0.975205998370815340, -0.975217062103310270, -0.975228123397762660, -0.975239182254144630, -0.975250238672428660, -0.975261292652587100, -0.975272344194592300, +-0.975283393298416730, -0.975294439964032530, -0.975305484191412390, -0.975316525980528430, -0.975327565331353230, -0.975338602243859040, -0.975349636718018330, -0.975360668753803670, +-0.975371698351187200, -0.975382725510141600, -0.975393750230639010, -0.975404772512652230, -0.975415792356153390, -0.975426809761115180, -0.975437824727509840, -0.975448837255309950, +-0.975459847344487980, -0.975470854995016510, -0.975481860206867780, -0.975492862980014470, -0.975503863314428950, -0.975514861210083790, -0.975525856666951460, -0.975536849685004540, +-0.975547840264215370, -0.975558828404556650, -0.975569814106000970, -0.975580797368520660, -0.975591778192088420, -0.975602756576676610, -0.975613732522258030, -0.975624706028805130, +-0.975635677096290400, -0.975646645724686510, -0.975657611913965940, -0.975668575664101370, -0.975679536975065380, -0.975690495846830540, -0.975701452279369550, -0.975712406272654760, +-0.975723357826659090, -0.975734306941354990, -0.975745253616715160, -0.975756197852712060, -0.975767139649318600, -0.975778079006507260, -0.975789015924250710, -0.975799950402521650, +-0.975810882441292660, -0.975821812040536530, -0.975832739200225840, -0.975843663920333280, -0.975854586200831540, -0.975865506041693420, -0.975876423442891380, -0.975887338404398450, +-0.975898250926187090, -0.975909161008230220, -0.975920068650500290, -0.975930973852970230, -0.975941876615612710, -0.975952776938400660, -0.975963674821306530, -0.975974570264303230, +-0.975985463267363460, -0.975996353830460130, -0.976007241953565920, -0.976018127636653520, -0.976029010879695850, -0.976039891682665580, -0.976050770045535750, -0.976061645968278820, +-0.976072519450867810, -0.976083390493275530, -0.976094259095474870, -0.976105125257438420, -0.976115988979139200, -0.976126850260550020, -0.976137709101643770, -0.976148565502393150, +-0.976159419462771180, -0.976170270982750550, -0.976181120062304400, -0.976191966701405400, -0.976202810900026470, -0.976213652658140530, -0.976224491975720370, -0.976235328852739110, +-0.976246163289169470, -0.976256995284984440, -0.976267824840156840, -0.976278651954659790, -0.976289476628465990, -0.976300298861548680, -0.976311118653880430, -0.976321936005434490, +-0.976332750916183660, -0.976343563386101070, -0.976354373415159400, -0.976365181003331920, -0.976375986150591400, -0.976386788856910990, -0.976397589122263600, -0.976408386946622240, +-0.976419182329959830, -0.976429975272249510, -0.976440765773464390, -0.976451553833577180, -0.976462339452561110, -0.976473122630389210, -0.976483903367034610, -0.976494681662470110, +-0.976505457516668950, -0.976516230929604160, -0.976527001901248750, -0.976537770431575860, -0.976548536520558620, -0.976559300168169940, -0.976570061374383070, -0.976580820139171020, +-0.976591576462506940, -0.976602330344363830, -0.976613081784715060, -0.976623830783533430, -0.976634577340792290, -0.976645321456464770, -0.976656063130523780, -0.976666802362942790, +-0.976677539153694710, -0.976688273502752890, -0.976699005410090250, -0.976709734875680140, -0.976720461899495680, -0.976731186481510140, -0.976741908621696520, -0.976752628320028290, +-0.976763345576478370, -0.976774060391020100, -0.976784772763626740, -0.976795482694271410, -0.976806190182927250, -0.976816895229567830, -0.976827597834166060, -0.976838297996695300, +-0.976848995717128800, -0.976859690995439790, -0.976870383831601630, -0.976881074225587450, -0.976891762177370620, -0.976902447686924250, -0.976913130754221930, -0.976923811379236670, +-0.976934489561941950, -0.976945165302311010, -0.976955838600317210, -0.976966509455933660, -0.976977177869133960, -0.976987843839891230, -0.976998507368178950, -0.977009168453970340, +-0.977019827097238890, -0.977030483297957830, -0.977041137056100630, -0.977051788371640530, -0.977062437244551000, -0.977073083674805280, -0.977083727662376940, -0.977094369207239240, +-0.977105008309365640, -0.977115644968729490, -0.977126279185304260, -0.977136910959063300, -0.977147540289980080, -0.977158167178028060, -0.977168791623180490, -0.977179413625411050, +-0.977190033184693110, -0.977200650301000010, -0.977211264974305330, -0.977221877204582420, -0.977232486991804870, -0.977243094335946140, -0.977253699236979580, -0.977264301694878880, +-0.977274901709617280, -0.977285499281168590, -0.977296094409506040, -0.977306687094603330, -0.977317277336433810, -0.977327865134971160, -0.977338450490188860, -0.977349033402060360, +-0.977359613870559360, -0.977370191895659320, -0.977380767477333710, -0.977391340615556330, -0.977401911310300520, -0.977412479561539870, -0.977423045369248070, -0.977433608733398680, +-0.977444169653965300, -0.977454728130921380, -0.977465284164240720, -0.977475837753896790, -0.977486388899863390, -0.977496937602113980, -0.977507483860622140, -0.977518027675361670, +-0.977528569046306140, -0.977539107973429130, -0.977549644456704340, -0.977560178496105550, -0.977570710091606120, -0.977581239243180080, -0.977591765950800880, -0.977602290214442340, +-0.977612812034078020, -0.977623331409681610, -0.977633848341226910, -0.977644362828687610, -0.977654874872037390, -0.977665384471250070, -0.977675891626299200, -0.977686396337158590, +-0.977696898603802040, -0.977707398426203240, -0.977717895804335880, -0.977728390738173860, -0.977738883227690870, -0.977749373272860600, -0.977759860873656960, -0.977770346030053530, +-0.977780828742024430, -0.977791309009543140, -0.977801786832583560, -0.977812262211119610, -0.977822735145124970, -0.977833205634573430, -0.977843673679438920, -0.977854139279695220, +-0.977864602435316250, -0.977875063146275700, -0.977885521412547480, -0.977895977234105480, -0.977906430610923530, -0.977916881542975510, -0.977927330030235350, -0.977937776072676730, +-0.977948219670273790, -0.977958660823000200, -0.977969099530830000, -0.977979535793737090, -0.977989969611695380, -0.978000400984678660, -0.978010829912660860, -0.978021256395616210, +-0.978031680433518180, -0.978042102026341120, -0.978052521174058720, -0.978062937876645110, -0.978073352134074090, -0.978083763946319680, -0.978094173313355800, -0.978104580235156670, +-0.978114984711695890, -0.978125386742947800, -0.978135786328886090, -0.978146183469485120, -0.978156578164718570, -0.978166970414560580, -0.978177360218985160, -0.978187747577966340, +-0.978198132491478130, -0.978208514959494680, -0.978218894981989880, -0.978229272558937770, -0.978239647690312570, -0.978250020376088210, -0.978260390616238930, -0.978270758410738520, +-0.978281123759561220, -0.978291486662681180, -0.978301847120072400, -0.978312205131709020, -0.978322560697565070, -0.978332913817614780, -0.978343264491832180, -0.978353612720191500, +-0.978363958502666660, -0.978374301839232020, -0.978384642729861590, -0.978394981174529500, -0.978405317173210000, -0.978415650725877220, -0.978425981832505290, -0.978436310493068450, +-0.978446636707540840, -0.978456960475896590, -0.978467281798109930, -0.978477600674155120, -0.978487917104006180, -0.978498231087637560, -0.978508542625023400, -0.978518851716137840, +-0.978529158360955110, -0.978539462559449570, -0.978549764311595240, -0.978560063617366580, -0.978570360476737840, -0.978580654889683150, -0.978590946856176760, -0.978601236376193010, +-0.978611523449706260, -0.978621808076690640, -0.978632090257120500, -0.978642369990970100, -0.978652647278213880, -0.978662922118825880, -0.978673194512780680, -0.978683464460052500, +-0.978693731960615710, -0.978703997014444440, -0.978714259621513260, -0.978724519781796420, -0.978734777495268380, -0.978745032761903280, -0.978755285581675570, -0.978765535954559730, +-0.978775783880530100, -0.978786029359560940, -0.978796272391626700, -0.978806512976701740, -0.978816751114760520, -0.978826986805777510, -0.978837220049726950, -0.978847450846583310, +-0.978857679196321160, -0.978867905098914750, -0.978878128554338530, -0.978888349562566980, -0.978898568123574670, -0.978908784237335850, -0.978918997903825080, -0.978929209123016840, +-0.978939417894885590, -0.978949624219405790, -0.978959828096551910, -0.978970029526298520, -0.978980228508619990, -0.978990425043490880, -0.979000619130885760, -0.979010810770779010, +-0.979020999963145290, -0.979031186707959080, -0.979041371005194950, -0.979051552854827260, -0.979061732256830800, -0.979071909211179920, -0.979082083717849330, -0.979092255776813580, +-0.979102425388047150, -0.979112592551524610, -0.979122757267220640, -0.979132919535109720, -0.979143079355166530, -0.979153236727365650, -0.979163391651681760, -0.979173544128089320, +-0.979183694156562920, -0.979193841737077460, -0.979203986869607300, -0.979214129554127120, -0.979224269790611720, -0.979234407579035570, -0.979244542919373460, -0.979254675811599970, +-0.979264806255689790, -0.979274934251617600, -0.979285059799358090, -0.979295182898885950, -0.979305303550175750, -0.979315421753202410, -0.979325537507940380, -0.979335650814364690, +-0.979345761672449690, -0.979355870082170400, -0.979365976043501400, -0.979376079556417480, -0.979386180620893440, -0.979396279236903760, -0.979406375404423550, -0.979416469123427280, +-0.979426560393889870, -0.979436649215786100, -0.979446735589090680, -0.979456819513778500, -0.979466900989824140, -0.979476980017202630, -0.979487056595888640, -0.979497130725856980, +-0.979507202407082560, -0.979517271639540050, -0.979527338423204390, -0.979537402758050350, -0.979547464644052850, -0.979557524081186680, -0.979567581069426760, -0.979577635608747780, +-0.979587687699124740, -0.979597737340532570, -0.979607784532945950, -0.979617829276340000, -0.979627871570689310, -0.979637911415969010, -0.979647948812154000, -0.979657983759219090, +-0.979668016257139170, -0.979678046305889170, -0.979688073905444100, -0.979698099055778870, -0.979708121756868390, -0.979718142008687680, -0.979728159811211530, -0.979738175164414970, +-0.979748188068273020, -0.979758198522760580, -0.979768206527852570, -0.979778212083524110, -0.979788215189750120, -0.979798215846505620, -0.979808214053765610, -0.979818209811504910, +-0.979828203119698870, -0.979838193978322170, -0.979848182387350050, -0.979858168346757540, -0.979868151856519540, -0.979878132916611080, -0.979888111527007500, -0.979898087687683490, +-0.979908061398614310, -0.979918032659774840, -0.979928001471140450, -0.979937967832686050, -0.979947931744386660, -0.979957893206217510, -0.979967852218153520, -0.979977808780170050, +-0.979987762892241990, -0.979997714554344480, -0.980007663766452760, -0.980017610528541860, -0.980027554840586900, -0.980037496702563020, -0.980047436114445450, -0.980057373076209330, +-0.980067307587829670, -0.980077239649281840, -0.980087169260540850, -0.980097096421581940, -0.980107021132380350, -0.980116943392911220, -0.980126863203149570, -0.980136780563070960, +-0.980146695472650320, -0.980156607931862880, -0.980166517940683990, -0.980176425499088790, -0.980186330607052510, -0.980196233264550410, -0.980206133471557830, -0.980216031228049790, +-0.980225926534001760, -0.980235819389388750, -0.980245709794186350, -0.980255597748369680, -0.980265483251913980, -0.980275366304794500, -0.980285246906986710, -0.980295125058465720, +-0.980305000759207010, -0.980314874009185710, -0.980324744808377280, -0.980334613156756960, -0.980344479054300110, -0.980354342500982080, -0.980364203496778220, -0.980374062041663770, +-0.980383918135614210, -0.980393771778604870, -0.980403622970611120, -0.980413471711608200, -0.980423318001571680, -0.980433161840476910, -0.980443003228299140, -0.980452842165013940, +-0.980462678650596660, -0.980472512685022670, -0.980482344268267300, -0.980492173400306140, -0.980502000081114540, -0.980511824310667970, -0.980521646088941770, -0.980531465415911520, +-0.980541282291552570, -0.980551096715840400, -0.980560908688750570, -0.980570718210258430, -0.980580525280339450, -0.980590329898969220, -0.980600132066123060, -0.980609931781776690, +-0.980619729045905440, -0.980629523858484900, -0.980639316219490520, -0.980649106128897770, -0.980658893586682350, -0.980668678592819700, -0.980678461147285410, -0.980688241250054830, +-0.980698018901103750, -0.980707794100407540, -0.980717566847941870, -0.980727337143682320, -0.980737104987604470, -0.980746870379683780, -0.980756633319895930, -0.980766393808216510, +-0.980776151844621080, -0.980785907429085340, -0.980795660561584740, -0.980805411242095080, -0.980815159470591840, -0.980824905247050680, -0.980834648571447310, -0.980844389443757290, +-0.980854127863956200, -0.980863863832019960, -0.980873597347924010, -0.980883328411644050, -0.980893057023155770, -0.980902783182434850, -0.980912506889456860, -0.980922228144197830, +-0.980931946946632990, -0.980941663296738490, -0.980951377194489660, -0.980961088639862530, -0.980970797632832570, -0.980980504173375790, -0.980990208261467540, -0.980999909897083850, +-0.981009609080200410, -0.981019305810793000, -0.981029000088837200, -0.981038691914308920, -0.981048381287183970, -0.981058068207438130, -0.981067752675046980, -0.981077434689986540, +-0.981087114252232500, -0.981096791361760650, -0.981106466018546790, -0.981116138222566820, -0.981125807973796450, -0.981135475272211570, -0.981145140117788080, -0.981154802510501690, +-0.981164462450328290, -0.981174119937243790, -0.981183774971223890, -0.981193427552244590, -0.981203077680281700, -0.981212725355311230, -0.981222370577308880, -0.981232013346250540, +-0.981241653662112250, -0.981251291524869780, -0.981260926934499070, -0.981270559890976110, -0.981280190394276720, -0.981289818444376790, -0.981299444041252360, -0.981309067184879420, +-0.981318687875233690, -0.981328306112291270, -0.981337921896028090, -0.981347535226420040, -0.981357146103443270, -0.981366754527073560, -0.981376360497287050, -0.981385964014059530, +-0.981395565077367140, -0.981405163687185890, -0.981414759843491690, -0.981424353546260560, -0.981433944795468530, -0.981443533591091710, -0.981453119933106020, -0.981462703821487590, +-0.981472285256212330, -0.981481864237256360, -0.981491440764595710, -0.981501014838206510, -0.981510586458064770, -0.981520155624146520, -0.981529722336427990, -0.981539286594884990, +-0.981548848399493970, -0.981558407750230730, -0.981567964647071410, -0.981577519089992250, -0.981587071078969250, -0.981596620613978570, -0.981606167694996420, -0.981615712321998850, +-0.981625254494961850, -0.981634794213861910, -0.981644331478674800, -0.981653866289377010, -0.981663398645944430, -0.981672928548353420, -0.981682455996580110, -0.981691980990600620, +-0.981701503530391210, -0.981711023615927990, -0.981720541247187330, -0.981730056424145240, -0.981739569146777960, -0.981749079415061840, -0.981758587228973020, -0.981768092588487630, +-0.981777595493582120, -0.981787095944232520, -0.981796593940415300, -0.981806089482106460, -0.981815582569282470, -0.981825073201919580, -0.981834561379993920, -0.981844047103481940, +-0.981853530372359780, -0.981863011186603800, -0.981872489546190330, -0.981881965451095520, -0.981891438901295930, -0.981900909896767700, -0.981910378437487190, -0.981919844523430730, +-0.981929308154574690, -0.981938769330895410, -0.981948228052369140, -0.981957684318972230, -0.981967138130681260, -0.981976589487472350, -0.981986038389321970, -0.981995484836206580, +-0.982004928828102420, -0.982014370364985960, -0.982023809446833430, -0.982033246073621520, -0.982042680245326480, -0.982052111961924770, -0.982061541223392730, -0.982070968029706840, +-0.982080392380843550, -0.982089814276779330, -0.982099233717490420, -0.982108650702953610, -0.982118065233145040, -0.982127477308041400, -0.982136886927619020, -0.982146294091854390, +-0.982155698800724060, -0.982165101054204510, -0.982174500852272200, -0.982183898194903590, -0.982193293082075260, -0.982202685513763660, -0.982212075489945490, -0.982221463010596980, +-0.982230848075694830, -0.982240230685215600, -0.982249610839135870, -0.982258988537431990, -0.982268363780080640, -0.982277736567058410, -0.982287106898341870, -0.982296474773907580, +-0.982305840193732020, -0.982315203157791970, -0.982324563666063800, -0.982333921718524290, -0.982343277315149920, -0.982352630455917470, -0.982361981140803310, -0.982371329369784330, +-0.982380675142836890, -0.982390018459937900, -0.982399359321063700, -0.982408697726191220, -0.982418033675297010, -0.982427367168357660, -0.982436698205349850, -0.982446026786250370, +-0.982455352911035810, -0.982464676579682950, -0.982473997792168260, -0.982483316548468650, -0.982492632848560700, -0.982501946692421190, -0.982511258080026820, -0.982520567011354370, +-0.982529873486380430, -0.982539177505081800, -0.982548479067435250, -0.982557778173417500, -0.982567074823005320, -0.982576369016175400, -0.982585660752904650, -0.982594950033169660, +-0.982604236856947310, -0.982613521224214410, -0.982622803134947650, -0.982632082589123930, -0.982641359586719940, -0.982650634127712590, -0.982659906212078770, -0.982669175839794960, +-0.982678443010838400, -0.982687707725185660, -0.982696969982813640, -0.982706229783699260, -0.982715487127819200, -0.982724742015150590, -0.982733994445669890, -0.982743244419354460, +-0.982752491936180750, -0.982761736996125790, -0.982770979599166590, -0.982780219745279850, -0.982789457434442680, -0.982798692666631780, -0.982807925441824160, -0.982817155759996730, +-0.982826383621126400, -0.982835609025190180, -0.982844831972164880, -0.982854052462027510, -0.982863270494754970, -0.982872486070324290, -0.982881699188712380, -0.982890909849896240, +-0.982900118053852800, -0.982909323800559060, -0.982918527089992170, -0.982927727922128790, -0.982936926296946070, -0.982946122214421130, -0.982955315674530870, -0.982964506677252330, +-0.982973695222562500, -0.982982881310438430, -0.982992064940857110, -0.983001246113795690, -0.983010424829231180, -0.983019601087140480, -0.983028774887500960, -0.983037946230289390, +-0.983047115115482930, -0.983056281543058690, -0.983065445512993800, -0.983074607025265390, -0.983083766079850260, -0.983092922676725880, -0.983102076815869030, -0.983111228497257180, +-0.983120377720867130, -0.983129524486676120, -0.983138668794661390, -0.983147810644799950, -0.983156950037068930, -0.983166086971445590, -0.983175221447907030, -0.983184353466430410, +-0.983193483026992940, -0.983202610129571770, -0.983211734774144030, -0.983220856960686950, -0.983229976689177660, -0.983239093959593520, -0.983248208771911660, -0.983257321126109310, +-0.983266431022163600, -0.983275538460051780, -0.983284643439751190, -0.983293745961238860, -0.983302846024492360, -0.983311943629488590, -0.983321038776205030, -0.983330131464618780, +-0.983339221694707330, -0.983348309466447800, -0.983357394779817430, -0.983366477634793680, -0.983375558031353680, -0.983384635969474670, -0.983393711449134230, -0.983402784470309490, +-0.983411855032977790, -0.983420923137116380, -0.983429988782702710, -0.983439051969714040, -0.983448112698127820, -0.983457170967921290, -0.983466226779071690, -0.983475280131556720, +-0.983484331025353490, -0.983493379460439350, -0.983502425436791780, -0.983511468954388230, -0.983520510013205950, -0.983529548613222500, -0.983538584754415020, -0.983547618436761200, +-0.983556649660238260, -0.983565678424823790, -0.983574704730495020, -0.983583728577229530, -0.983592749965004680, -0.983601768893798020, -0.983610785363586930, -0.983619799374348850, +-0.983628810926061250, -0.983637820018701700, -0.983646826652247560, -0.983655830826676290, -0.983664832541965460, -0.983673831798092650, -0.983682828595035200, -0.983691822932770690, +-0.983700814811276580, -0.983709804230530450, -0.983718791190509870, -0.983727775691192190, -0.983736757732555200, -0.983745737314576260, -0.983754714437232950, -0.983763689100502940, +-0.983772661304363690, -0.983781631048792680, -0.983790598333767700, -0.983799563159266200, -0.983808525525265760, -0.983817485431744080, -0.983826442878678600, -0.983835397866047010, +-0.983844350393827010, -0.983853300461996040, -0.983862248070531910, -0.983871193219412080, -0.983880135908614340, -0.983889076138116270, -0.983898013907895440, -0.983906949217929540, +-0.983915882068196360, -0.983924812458673470, -0.983933740389338450, -0.983942665860169210, -0.983951588871143200, -0.983960509422238340, -0.983969427513432080, -0.983978343144702340, +-0.983987256316026790, -0.983996167027382910, -0.984005075278748810, -0.984013981070101850, -0.984022884401420050, -0.984031785272680980, -0.984040683683862550, -0.984049579634942330, +-0.984058473125898230, -0.984067364156707810, -0.984076252727349110, -0.984085138837799690, -0.984094022488037460, -0.984102903678040210, -0.984111782407785630, -0.984120658677251630, +-0.984129532486415990, -0.984138403835256530, -0.984147272723751020, -0.984156139151877380, -0.984165003119613410, -0.984173864626936900, -0.984182723673825640, -0.984191580260257660, +-0.984200434386210740, -0.984209286051662690, -0.984218135256591520, -0.984226982000974910, -0.984235826284790890, -0.984244668108017250, -0.984253507470632010, -0.984262344372612950, +-0.984271178813938110, -0.984280010794585270, -0.984288840314532340, -0.984297667373757460, -0.984306491972238300, -0.984315314109952880, -0.984324133786879220, -0.984332951002995230, +-0.984341765758278920, -0.984350578052708090, -0.984359387886260980, -0.984368195258915280, -0.984377000170649110, -0.984385802621440380, -0.984394602611267210, -0.984403400140107520, +-0.984412195207939320, -0.984420987814740630, -0.984429777960489470, -0.984438565645163850, -0.984447350868741910, -0.984456133631201550, -0.984464913932520780, -0.984473691772677850, +-0.984482467151650550, -0.984491240069417240, -0.984500010525955700, -0.984508778521244190, -0.984517544055260710, -0.984526307127983390, -0.984535067739390370, -0.984543825889459550, +-0.984552581578169270, -0.984561334805497460, -0.984570085571422340, -0.984578833875922040, -0.984587579718974590, -0.984596323100558220, -0.984605064020651070, -0.984613802479231250, +-0.984622538476276900, -0.984631272011766260, -0.984640003085677340, -0.984648731697988500, -0.984657457848677750, -0.984666181537723450, -0.984674902765103720, -0.984683621530796580, +-0.984692337834780610, -0.984701051677033590, -0.984709763057533990, -0.984718471976260060, -0.984727178433189910, -0.984735882428301790, -0.984744583961573940, -0.984753283032984710, +-0.984761979642512220, -0.984770673790134720, -0.984779365475830670, -0.984788054699578090, -0.984796741461355540, -0.984805425761140940, -0.984814107598912860, -0.984822786974649530, +-0.984831463888329210, -0.984840138339930230, -0.984848810329430950, -0.984857479856809600, -0.984866146922044550, -0.984874811525114140, -0.984883473665996710, -0.984892133344670630, +-0.984900790561114130, -0.984909445315305780, -0.984918097607223710, -0.984926747436846380, -0.984935394804152260, -0.984944039709119590, -0.984952682151726820, -0.984961322131952420, +-0.984969959649774630, -0.984978594705172020, -0.984987227298122820, -0.984995857428605740, -0.985004485096598770, -0.985013110302080830, -0.985021733045029930, -0.985030353325424770, +-0.985038971143243790, -0.985047586498465240, -0.985056199391067810, -0.985064809821029840, -0.985073417788329910, -0.985082023292946360, -0.985090626334857890, -0.985099226914042720, +-0.985107825030479560, -0.985116420684146730, -0.985125013875022940, -0.985133604603086630, -0.985142192868316280, -0.985150778670690450, -0.985159362010187610, -0.985167942886786440, +-0.985176521300465400, -0.985185097251203070, -0.985193670738978010, -0.985202241763768690, -0.985210810325553910, -0.985219376424312010, -0.985227940060021680, -0.985236501232661490, +-0.985245059942210010, -0.985253616188645930, -0.985262169971947820, -0.985270721292094250, -0.985279270149063910, -0.985287816542835370, -0.985296360473387310, -0.985304901940698310, +-0.985313440944747040, -0.985321977485512310, -0.985330511562972470, -0.985339043177106520, -0.985347572327892830, -0.985356099015310180, -0.985364623239337380, -0.985373144999952990, +-0.985381664297135810, -0.985390181130864300, -0.985398695501117470, -0.985407207407873910, -0.985415716851112290, -0.985424223830811300, -0.985432728346949840, -0.985441230399506600, +-0.985449729988460250, -0.985458227113789500, -0.985466721775473230, -0.985475213973490140, -0.985483703707819130, -0.985492190978438760, -0.985500675785327960, -0.985509158128465400, +-0.985517638007829990, -0.985526115423400410, -0.985534590375155670, -0.985543062863074360, -0.985551532887135480, -0.985560000447317730, -0.985568465543599890, -0.985576928175960990, +-0.985585388344379810, -0.985593846048835040, -0.985602301289305700, -0.985610754065770590, -0.985619204378208600, -0.985627652226598650, -0.985636097610919530, -0.985644540531150250, +-0.985652980987269500, -0.985661418979256410, -0.985669854507089660, -0.985678287570748380, -0.985686718170211250, -0.985695146305457400, -0.985703571976465630, -0.985711995183215060, +-0.985720415925684380, -0.985728834203852710, -0.985737250017698960, -0.985745663367202150, -0.985754074252341070, -0.985762482673094850, -0.985770888629442400, -0.985779292121362730, +-0.985787693148834850, -0.985796091711837800, -0.985804487810350460, -0.985812881444351860, -0.985821272613821130, -0.985829661318737170, -0.985838047559079000, -0.985846431334825860, +-0.985854812645956540, -0.985863191492450160, -0.985871567874285870, -0.985879941791442670, -0.985888313243899580, -0.985896682231635730, -0.985905048754630140, -0.985913412812862040, +-0.985921774406310240, -0.985930133534954070, -0.985938490198772670, -0.985946844397744940, -0.985955196131850120, -0.985963545401067230, -0.985971892205375620, -0.985980236544754200, +-0.985988578419182190, -0.985996917828638740, -0.986005254773102970, -0.986013589252554110, -0.986021921266971300, -0.986030250816333660, -0.986038577900620330, -0.986046902519810640, +-0.986055224673883620, -0.986063544362818620, -0.986071861586594770, -0.986080176345191180, -0.986088488638587220, -0.986096798466762010, -0.986105105829694790, -0.986113410727364800, +-0.986121713159751280, -0.986130013126833570, -0.986138310628590700, -0.986146605665002120, -0.986154898236047070, -0.986163188341704690, -0.986171475981954430, -0.986179761156775300, +-0.986188043866147000, -0.986196324110048430, -0.986204601888459150, -0.986212877201358310, -0.986221150048725240, -0.986229420430539410, -0.986237688346779940, -0.986245953797426300, +-0.986254216782457730, -0.986262477301853570, -0.986270735355593290, -0.986278990943656230, -0.986287244066021530, -0.986295494722668860, -0.986303742913577360, -0.986311988638726600, +-0.986320231898095810, -0.986328472691664460, -0.986336711019411890, -0.986344946881317690, -0.986353180277360960, -0.986361411207521300, -0.986369639671778150, -0.986377865670110880, +-0.986386089202498930, -0.986394310268921880, -0.986402528869358970, -0.986410745003789670, -0.986418958672193540, -0.986427169874550040, -0.986435378610838630, -0.986443584881038780, +-0.986451788685129950, -0.986459990023091590, -0.986468188894903400, -0.986476385300544600, -0.986484579239994890, -0.986492770713233710, -0.986500959720240660, -0.986509146260995170, +-0.986517330335476840, -0.986525511943665110, -0.986533691085539680, -0.986541867761079990, -0.986550041970265750, -0.986558213713076280, -0.986566382989491290, -0.986574549799490330, +-0.986582714143052990, -0.986590876020158940, -0.986599035430787640, -0.986607192374918780, -0.986615346852531830, -0.986623498863606670, -0.986631648408122670, -0.986639795486059620, +-0.986647940097396980, -0.986656082242114540, -0.986664221920191880, -0.986672359131608670, -0.986680493876344600, -0.986688626154379360, -0.986696755965692400, -0.986704883310263630, +-0.986713008188072620, -0.986721130599099160, -0.986729250543322830, -0.986737368020723320, -0.986745483031280510, -0.986753595574973890, -0.986761705651783340, -0.986769813261688440, +-0.986777918404669110, -0.986786021080704900, -0.986794121289775730, -0.986802219031861160, -0.986810314306941220, -0.986818407114995240, -0.986826497456003480, -0.986834585329945280, +-0.986842670736800760, -0.986850753676549510, -0.986858834149171420, -0.986866912154646170, -0.986874987692953680, -0.986883060764073620, -0.986891131367986010, -0.986899199504670640, +-0.986907265174107210, -0.986915328376275600, -0.986923389111155620, -0.986931447378727290, -0.986939503178970170, -0.986947556511864500, -0.986955607377389740, -0.986963655775526140, +-0.986971701706253260, -0.986979745169551230, -0.986987786165399730, -0.986995824693778890, -0.987003860754668390, -0.987011894348048260, -0.987019925473898390, -0.987027954132198790, +-0.987035980322929160, -0.987044004046069730, -0.987052025301600190, -0.987060044089500650, -0.987068060409750920, -0.987076074262331130, -0.987084085647221050, -0.987092094564400830, +-0.987100101013850370, -0.987108104995549680, -0.987116106509478670, -0.987124105555617360, -0.987132102133945870, -0.987140096244444100, -0.987148087887092180, -0.987156077061869920, +-0.987164063768757540, -0.987172048007734950, -0.987180029778782280, -0.987188009081879430, -0.987195985917006640, -0.987203960284143920, -0.987211932183271300, -0.987219901614368790, +-0.987227868577416510, -0.987235833072394600, -0.987243795099283170, -0.987251754658062140, -0.987259711748711740, -0.987267666371212100, -0.987275618525543350, -0.987283568211685500, +-0.987291515429618680, -0.987299460179323130, -0.987307402460778860, -0.987315342273966220, -0.987323279618865120, -0.987331214495455800, -0.987339146903718490, -0.987347076843633320, +-0.987355004315180420, -0.987362929318340130, -0.987370851853092370, -0.987378771919417590, -0.987386689517295800, -0.987394604646707360, -0.987402517307632400, -0.987410427500051040, +-0.987418335223943730, -0.987426240479290510, -0.987434143266071710, -0.987442043584267570, -0.987449941433858340, -0.987457836814824130, -0.987465729727145520, -0.987473620170802420, +-0.987481508145775400, -0.987489393652044580, -0.987497276689590200, -0.987505157258392720, -0.987513035358432270, -0.987520910989689300, -0.987528784152143960, -0.987536654845776800, +-0.987544523070567840, -0.987552388826497650, -0.987560252113546590, -0.987568112931694770, -0.987575971280922670, -0.987583827161210740, -0.987591680572539100, -0.987599531514888330, +-0.987607379988238780, -0.987615225992570790, -0.987623069527864610, -0.987630910594100910, -0.987638749191259820, -0.987646585319321920, -0.987654418978267450, -0.987662250168077070, +-0.987670078888730930, -0.987677905140209700, -0.987685728922493730, -0.987693550235563380, -0.987701369079399210, -0.987709185453981560, -0.987716999359290910, -0.987724810795307830, +-0.987732619762012650, -0.987740426259385960, -0.987748230287408320, -0.987756031846059980, -0.987763830935321610, -0.987771627555173560, -0.987779421705596520, -0.987787213386570940, +-0.987795002598077290, -0.987802789340096240, -0.987810573612608160, -0.987818355415593600, -0.987826134749033140, -0.987833911612907340, -0.987841686007196800, -0.987849457931882060, +-0.987857227386943700, -0.987864994372362190, -0.987872758888118210, -0.987880520934192430, -0.987888280510565210, -0.987896037617217450, -0.987903792254129390, -0.987911544421282040, +-0.987919294118655760, -0.987927041346231220, -0.987934786103989100, -0.987942528391909990, -0.987950268209974560, -0.987958005558163490, -0.987965740436457350, -0.987973472844836940, +-0.987981202783282830, -0.987988930251775700, -0.987996655250296230, -0.988004377778825100, -0.988012097837343120, -0.988019815425830840, -0.988027530544269060, -0.988035243192638360, +-0.988042953370919630, -0.988050661079093450, -0.988058366317140720, -0.988066069085042020, -0.988073769382778130, -0.988081467210329740, -0.988089162567677870, -0.988096855454802970, +-0.988104545871685950, -0.988112233818307590, -0.988119919294648600, -0.988127602300689860, -0.988135282836412050, -0.988142960901796100, -0.988150636496822780, -0.988158309621472770, +-0.988165980275727110, -0.988173648459566350, -0.988181314172971610, -0.988188977415923490, -0.988196638188402980, -0.988204296490390880, -0.988211952321867980, -0.988219605682815190, +-0.988227256573213420, -0.988234904993043560, -0.988242550942286300, -0.988250194420922770, -0.988257835428933750, -0.988265473966300160, -0.988273110033002890, -0.988280743629022850, +-0.988288374754340840, -0.988296003408937970, -0.988303629592795050, -0.988311253305893200, -0.988318874548213100, -0.988326493319735770, -0.988334109620442320, -0.988341723450313570, +-0.988349334809330400, -0.988356943697473960, -0.988364550114725240, -0.988372154061065040, -0.988379755536474500, -0.988387354540934630, -0.988394951074426320, -0.988402545136930600, +-0.988410136728428590, -0.988417725848901200, -0.988425312498329430, -0.988432896676694430, -0.988440478383977190, -0.988448057620158750, -0.988455634385220220, -0.988463208679142610, +-0.988470780501906840, -0.988478349853494250, -0.988485916733885750, -0.988493481143062460, -0.988501043081005500, -0.988508602547695900, -0.988516159543114780, -0.988523714067243260, +-0.988531266120062480, -0.988538815701553550, -0.988546362811697500, -0.988553907450475670, -0.988561449617868960, -0.988568989313858610, -0.988576526538425870, -0.988584061291551850, +-0.988591593573217580, -0.988599123383404390, -0.988606650722093310, -0.988614175589265680, -0.988621697984902630, -0.988629217908985280, -0.988636735361494880, -0.988644250342412660, +-0.988651762851719850, -0.988659272889397590, -0.988666780455427110, -0.988674285549789760, -0.988681788172466660, -0.988689288323439050, -0.988696786002688290, -0.988704281210195600, +-0.988711773945942120, -0.988719264209909190, -0.988726752002078160, -0.988734237322430260, -0.988741720170946750, -0.988749200547608950, -0.988756678452398120, -0.988764153885295590, +-0.988771626846282730, -0.988779097335340750, -0.988786565352451020, -0.988794030897594880, -0.988801493970753680, -0.988808954571908760, -0.988816412701041480, -0.988823868358133070, +-0.988831321543165110, -0.988838772256118710, -0.988846220496975460, -0.988853666265716690, -0.988861109562323760, -0.988868550386778010, -0.988875988739060910, -0.988883424619153790, +-0.988890858027038130, -0.988898288962695380, -0.988905717426106780, -0.988913143417254000, -0.988920566936118410, -0.988927987982681220, -0.988935406556924250, -0.988942822658828600, +-0.988950236288375970, -0.988957647445547820, -0.988965056130325480, -0.988972462342690430, -0.988979866082624340, -0.988987267350108560, -0.988994666145124550, -0.989002062467653990, +-0.989009456317678230, -0.989016847695178720, -0.989024236600137270, -0.989031623032535110, -0.989039006992353920, -0.989046388479575160, -0.989053767494180500, -0.989061144036151420, +-0.989068518105469470, -0.989075889702116240, -0.989083258826073290, -0.989090625477322180, -0.989097989655844390, -0.989105351361621810, -0.989112710594635790, -0.989120067354867900, +-0.989127421642299940, -0.989134773456913470, -0.989142122798689960, -0.989149469667611190, -0.989156814063658740, -0.989164155986814290, -0.989171495437059400, -0.989178832414375760, +-0.989186166918745060, -0.989193498950148960, -0.989200828508569160, -0.989208155593987230, -0.989215480206384950, -0.989222802345743890, -0.989230122012045850, -0.989237439205272520, +-0.989244753925405670, -0.989252066172426780, -0.989259375946317850, -0.989266683247060460, -0.989273988074636400, -0.989281290429027240, -0.989288590310214990, -0.989295887718181110, +-0.989303182652907620, -0.989310475114376200, -0.989317765102568520, -0.989325052617466500, -0.989332337659051820, -0.989339620227306260, -0.989346900322211730, -0.989354177943749800, +-0.989361453091902600, -0.989368725766651690, -0.989375995967978980, -0.989383263695866270, -0.989390528950295330, -0.989397791731248200, -0.989405052038706430, -0.989412309872652160, +-0.989419565233067070, -0.989426818119933160, -0.989434068533232010, -0.989441316472945860, -0.989448561939056390, -0.989455804931545500, -0.989463045450395100, -0.989470283495587080, +-0.989477519067103240, -0.989484752164925820, -0.989491982789036380, -0.989499210939416950, -0.989506436616049640, -0.989513659818916150, -0.989520880547998470, -0.989528098803278630, +-0.989535314584738530, -0.989542527892360190, -0.989549738726125510, -0.989556947086016490, -0.989564152972015050, -0.989571356384103320, -0.989578557322263070, -0.989585755786476560, +-0.989592951776725570, -0.989600145292992230, -0.989607336335258550, -0.989614524903506540, -0.989621710997718230, -0.989628894617875510, -0.989636075763960730, -0.989643254435955580, +-0.989650430633842500, -0.989657604357603190, -0.989664775607219880, -0.989671944382674700, -0.989679110683949650, -0.989686274511026750, -0.989693435863888250, -0.989700594742516150, +-0.989707751146892580, -0.989714905076999550, -0.989722056532819310, -0.989729205514333970, -0.989736352021525550, -0.989743496054376280, -0.989750637612868190, -0.989757776696983620, +-0.989764913306704460, -0.989772047442013190, -0.989779179102891700, -0.989786308289322350, -0.989793435001287140, -0.989800559238768420, -0.989807681001748210, -0.989814800290208850, +-0.989821917104132480, -0.989829031443501320, -0.989836143308297610, -0.989843252698503480, -0.989850359614101280, -0.989857464055073240, -0.989864566021401380, -0.989871665513068270, +-0.989878762530055910, -0.989885857072346550, -0.989892949139922760, -0.989900038732766440, -0.989907125850860050, -0.989914210494185820, -0.989921292662726100, -0.989928372356463250, +-0.989935449575379380, -0.989942524319456840, -0.989949596588677980, -0.989956666383025260, -0.989963733702480810, -0.989970798547026960, -0.989977860916646190, -0.989984920811320720, +-0.989991978231033020, -0.989999033175765320, -0.990006085645499970, -0.990013135640219530, -0.990020183159906140, -0.990027228204542480, -0.990034270774110550, -0.990041310868593040, +-0.990048348487972190, -0.990055383632230560, -0.990062416301350390, -0.990069446495314250, -0.990076474214104390, -0.990083499457703460, -0.990090522226093730, -0.990097542519257750, +-0.990104560337177860, -0.990111575679836540, -0.990118588547216350, -0.990125598939299630, -0.990132606856068960, -0.990139612297506690, -0.990146615263595490, -0.990153615754317710, +-0.990160613769655920, -0.990167609309592470, -0.990174602374110150, -0.990181592963191300, -0.990188581076818400, -0.990195566714974110, -0.990202549877640890, -0.990209530564801210, +-0.990216508776437850, -0.990223484512533170, -0.990230457773069730, -0.990237428558030210, -0.990244396867397070, -0.990251362701152880, -0.990258326059280440, -0.990265286941762080, +-0.990272245348580490, -0.990279201279718360, -0.990286154735158130, -0.990293105714882600, -0.990300054218874240, -0.990307000247115820, -0.990313943799589810, -0.990320884876279120, +-0.990327823477165970, -0.990334759602233490, -0.990341693251463930, -0.990348624424840280, -0.990355553122344910, -0.990362479343960820, -0.990369403089670470, -0.990376324359456550, +-0.990383243153301950, -0.990390159471189140, -0.990397073313101010, -0.990403984679020130, -0.990410893568929310, -0.990417799982811210, -0.990424703920648630, -0.990431605382424360, +-0.990438504368120980, -0.990445400877721370, -0.990452294911208340, -0.990459186468564460, -0.990466075549772730, -0.990472962154815730, -0.990479846283676360, -0.990486727936337300, +-0.990493607112781560, -0.990500483812991720, -0.990507358036950670, -0.990514229784641210, -0.990521099056046130, -0.990527965851148440, -0.990534830169930710, -0.990541692012375960, +-0.990548551378466980, -0.990555408268186670, -0.990562262681517700, -0.990569114618443210, -0.990575964078945880, -0.990582811063008720, -0.990589655570614400, -0.990596497601746060, +-0.990603337156386380, -0.990610174234518360, -0.990617008836124910, -0.990623840961189050, -0.990630670609693450, -0.990637497781621250, -0.990644322476955330, -0.990651144695678500, +-0.990657964437773870, -0.990664781703224360, -0.990671596492012860, -0.990678408804122390, -0.990685218639535960, -0.990692025998236360, -0.990698830880206720, -0.990705633285430040, +-0.990712433213889240, -0.990719230665567440, -0.990726025640447430, -0.990732818138512440, -0.990739608159745490, -0.990746395704129370, -0.990753180771647310, -0.990759963362282340, +-0.990766743476017450, -0.990773521112835680, -0.990780296272720020, -0.990787068955653720, -0.990793839161619780, -0.990800606890601230, -0.990807372142581080, -0.990814134917542550, +-0.990820895215468680, -0.990827653036342570, -0.990834408380147360, -0.990841161246866160, -0.990847911636482000, -0.990854659548978000, -0.990861404984337390, -0.990868147942543410, +-0.990874888423578850, -0.990881626427427160, -0.990888361954071480, -0.990895095003494820, -0.990901825575680410, -0.990908553670611480, -0.990915279288271170, -0.990922002428642590, +-0.990928723091709100, -0.990935441277453700, -0.990942156985859750, -0.990948870216910360, -0.990955580970588890, -0.990962289246878350, -0.990968995045762190, -0.990975698367223550, +-0.990982399211245650, -0.990989097577811620, -0.990995793466905030, -0.991002486878508890, -0.991009177812606450, -0.991015866269181140, -0.991022552248216230, -0.991029235749694810, +-0.991035916773600370, -0.991042595319916120, -0.991049271388625420, -0.991055944979711610, -0.991062616093157820, -0.991069284728947510, -0.991075950887064020, -0.991082614567490580, +-0.991089275770210660, -0.991095934495207500, -0.991102590742464540, -0.991109244511965140, -0.991115895803692640, -0.991122544617630390, -0.991129190953761730, -0.991135834812070130, +-0.991142476192538810, -0.991149115095151470, -0.991155751519891330, -0.991162385466741740, -0.991169016935686260, -0.991175645926708150, -0.991182272439790960, -0.991188896474918150, +-0.991195518032073060, -0.991202137111239170, -0.991208753712399910, -0.991215367835538760, -0.991221979480639280, -0.991228588647684710, -0.991235195336658830, -0.991241799547544880, +-0.991248401280326430, -0.991255000534986940, -0.991261597311509980, -0.991268191609879110, -0.991274783430077690, -0.991281372772089280, -0.991287959635897440, -0.991294544021485760, +-0.991301125928837680, -0.991307705357936770, -0.991314282308766730, -0.991320856781310880, -0.991327428775552800, -0.991333998291476280, -0.991340565329064670, -0.991347129888301760, +-0.991353691969171000, -0.991360251571655970, -0.991366808695740230, -0.991373363341407580, -0.991379915508641570, -0.991386465197425680, -0.991393012407743580, -0.991399557139579060, +-0.991406099392915570, -0.991412639167736920, -0.991419176464026550, -0.991425711281768370, -0.991432243620945840, -0.991438773481542750, -0.991445300863542660, -0.991451825766929360, +-0.991458348191686540, -0.991464868137797770, -0.991471385605246840, -0.991477900594017410, -0.991484413104093300, -0.991490923135458170, -0.991497430688095700, -0.991503935761989590, +-0.991510438357123820, -0.991516938473481770, -0.991523436111047430, -0.991529931269804490, -0.991536423949736840, -0.991542914150827960, -0.991549401873061950, -0.991555887116422290, +-0.991562369880892970, -0.991568850166457790, -0.991575327973100440, -0.991581803300804810, -0.991588276149554580, -0.991594746519333660, -0.991601214410125940, -0.991607679821915220, +-0.991614142754685180, -0.991620603208419830, -0.991627061183103060, -0.991633516678718570, -0.991639969695250260, -0.991646420232682010, -0.991652868290997750, -0.991659313870181360, +-0.991665756970216640, -0.991672197591087600, -0.991678635732777920, -0.991685071395271730, -0.991691504578552930, -0.991697935282605300, -0.991704363507412870, -0.991710789252959410, +-0.991717212519229170, -0.991723633306205720, -0.991730051613873290, -0.991736467442215660, -0.991742880791216970, -0.991749291660861010, -0.991755700051131780, -0.991762105962013420, +-0.991768509393489710, -0.991774910345544770, -0.991781308818162510, -0.991787704811326940, -0.991794098325022190, -0.991800489359232150, -0.991806877913940950, -0.991813263989132500, +-0.991819647584790910, -0.991826028700900200, -0.991832407337444380, -0.991838783494407570, -0.991845157171773790, -0.991851528369527170, -0.991857897087651710, -0.991864263326131420, +-0.991870627084950550, -0.991876988364093100, -0.991883347163543210, -0.991889703483284980, -0.991896057323302440, -0.991902408683579710, -0.991908757564101020, -0.991915103964850390, +-0.991921447885812050, -0.991927789326970120, -0.991934128288308630, -0.991940464769811900, -0.991946798771463860, -0.991953130293248940, -0.991959459335151170, -0.991965785897154780, +-0.991972109979244010, -0.991978431581402860, -0.991984750703615580, -0.991991067345866510, -0.991997381508139760, -0.992003693190419590, -0.992010002392690100, -0.992016309114935660, +-0.992022613357140370, -0.992028915119288700, -0.992035214401364660, -0.992041511203352490, -0.992047805525236640, -0.992054097367001340, -0.992060386728630730, -0.992066673610109140, +-0.992072958011420810, -0.992079239932550210, -0.992085519373481440, -0.992091796334198860, -0.992098070814686820, -0.992104342814929650, -0.992110612334911490, -0.992116879374616900, +-0.992123143934030120, -0.992129406013135480, -0.992135665611917240, -0.992141922730359950, -0.992148177368447740, -0.992154429526165170, -0.992160679203496490, -0.992166926400426140, +-0.992173171116938480, -0.992179413353017850, -0.992185653108648700, -0.992191890383815390, -0.992198125178502370, -0.992204357492694090, -0.992210587326374900, -0.992216814679529270, +-0.992223039552141530, -0.992229261944196250, -0.992235481855677780, -0.992241699286570580, -0.992247914236859210, -0.992254126706528020, -0.992260336695561460, -0.992266544203944110, +-0.992272749231660420, -0.992278951778694850, -0.992285151845031850, -0.992291349430656000, -0.992297544535551750, -0.992303737159703660, -0.992309927303096310, -0.992316114965714040, +-0.992322300147541530, -0.992328482848563230, -0.992334663068763720, -0.992340840808127570, -0.992347016066639330, -0.992353188844283580, -0.992359359141044890, -0.992365526956907720, +-0.992371692291856730, -0.992377855145876510, -0.992384015518951720, -0.992390173411066830, -0.992396328822206520, -0.992402481752355350, -0.992408632201498000, -0.992414780169619150, +-0.992420925656703260, -0.992427068662735110, -0.992433209187699280, -0.992439347231580450, -0.992445482794363180, -0.992451615876032260, -0.992457746476572260, -0.992463874595967850, +-0.992470000234203840, -0.992476123391264790, -0.992482244067135480, -0.992488362261800480, -0.992494477975244700, -0.992500591207452600, -0.992506701958409070, -0.992512810228098790, +-0.992518916016506550, -0.992525019323616920, -0.992531120149414800, -0.992537218493884770, -0.992543314357011820, -0.992549407738780530, -0.992555498639175800, -0.992561587058182200, +-0.992567672995784740, -0.992573756451967990, -0.992579837426716960, -0.992585915920016220, -0.992591991931850770, -0.992598065462205410, -0.992604136511064720, -0.992610205078413800, +-0.992616271164237340, -0.992622334768520240, -0.992628395891247180, -0.992634454532403290, -0.992640510691973120, -0.992646564369941810, -0.992652615566294030, -0.992658664281014680, +-0.992664710514088670, -0.992670754265501000, -0.992676795535236360, -0.992682834323279640, -0.992688870629615970, -0.992694904454230030, -0.992700935797106940, -0.992706964658231380, +-0.992712991037588590, -0.992719014935163120, -0.992725036350940230, -0.992731055284904680, -0.992737071737041620, -0.992743085707335720, -0.992749097195772200, -0.992755106202335870, +-0.992761112727011840, -0.992767116769785020, -0.992773118330640410, -0.992779117409563040, -0.992785114006537790, -0.992791108121549800, -0.992797099754584080, -0.992803088905625520, +-0.992809075574659360, -0.992815059761670390, -0.992821041466643850, -0.992827020689564630, -0.992832997430417970, -0.992838971689188780, -0.992844943465862050, -0.992850912760423030, +-0.992856879572856730, -0.992862843903148270, -0.992868805751282670, -0.992874765117245150, -0.992880722001020620, -0.992886676402594310, -0.992892628321951240, -0.992898577759076640, +-0.992904524713955630, -0.992910469186573330, -0.992916411176914760, -0.992922350684965260, -0.992928287710709840, -0.992934222254133750, -0.992940154315221980, -0.992946083893960000, +-0.992952010990332700, -0.992957935604325330, -0.992963857735923220, -0.992969777385111390, -0.992975694551875180, -0.992981609236199710, -0.992987521438070230, -0.992993431157471960, +-0.992999338394390030, -0.993005243148809780, -0.993011145420716450, -0.993017045210095260, -0.993022942516931460, -0.993028837341210280, -0.993034729682917060, -0.993040619542037040, +-0.993046506918555340, -0.993052391812457520, -0.993058274223728610, -0.993064154152354050, -0.993070031598319190, -0.993075906561609160, -0.993081779042209290, -0.993087649040105160, +-0.993093516555281770, -0.993099381587724590, -0.993105244137418960, -0.993111104204350340, -0.993116961788503840, -0.993122816889864920, -0.993128669508419050, -0.993134519644151450, +-0.993140367297047580, -0.993146212467092780, -0.993152055154272410, -0.993157895358572020, -0.993163733079976740, -0.993169568318472250, -0.993175401074043780, -0.993181231346676800, +-0.993187059136356740, -0.993192884443069080, -0.993198707266799150, -0.993204527607532530, -0.993210345465254550, -0.993216160839950680, -0.993221973731606480, -0.993227784140207290, +-0.993233592065738580, -0.993239397508186020, -0.993245200467534840, -0.993251000943770720, -0.993256798936879130, -0.993262594446845500, -0.993268387473655420, -0.993274178017294340, +-0.993279966077747820, -0.993285751655001440, -0.993291534749040640, -0.993297315359851000, -0.993303093487418080, -0.993308869131727330, -0.993314642292764560, -0.993320412970515100, +-0.993326181164964630, -0.993331946876098710, -0.993337710103902930, -0.993343470848362830, -0.993349229109464100, -0.993354984887192320, -0.993360738181533030, -0.993366488992471930, +-0.993372237319994580, -0.993377983164086650, -0.993383726524733720, -0.993389467401921470, -0.993395205795635560, -0.993400941705861680, -0.993406675132585510, -0.993412406075792510, +-0.993418134535468570, -0.993423860511599250, -0.993429584004170360, -0.993435305013167460, -0.993441023538576330, -0.993446739580382650, -0.993452453138572000, -0.993458164213130380, +-0.993463872804043250, -0.993469578911296500, -0.993475282534875710, -0.993480983674766780, -0.993486682330955380, -0.993492378503427310, -0.993498072192168240, -0.993503763397163950, +-0.993509452118400360, -0.993515138355863140, -0.993520822109537960, -0.993526503379410840, -0.993532182165467350, -0.993537858467693490, -0.993543532286074950, -0.993549203620597620, +-0.993554872471247300, -0.993560538838009770, -0.993566202720870820, -0.993571864119816460, -0.993577523034832380, -0.993583179465904460, -0.993588833413018730, -0.993594484876160760, +-0.993600133855316650, -0.993605780350472310, -0.993611424361613320, -0.993617065888725890, -0.993622704931795830, -0.993628341490808920, -0.993633975565751170, -0.993639607156608480, +-0.993645236263366760, -0.993650862886012010, -0.993656487024530130, -0.993662108678906920, -0.993667727849128600, -0.993673344535180750, -0.993678958737049700, -0.993684570454721140, +-0.993690179688181300, -0.993695786437415850, -0.993701390702411040, -0.993706992483152750, -0.993712591779627010, -0.993718188591819710, -0.993723782919716970, -0.993729374763304700, +-0.993734964122569120, -0.993740550997496030, -0.993746135388071660, -0.993751717294281800, -0.993757296716112790, -0.993762873653550540, -0.993768448106581050, -0.993774020075190450, +-0.993779589559364740, -0.993785156559090170, -0.993790721074352620, -0.993796283105138340, -0.993801842651433230, -0.993807399713223630, -0.993812954290495540, -0.993818506383234990, +-0.993824055991428200, -0.993829603115061300, -0.993835147754120410, -0.993840689908591650, -0.993846229578461030, -0.993851766763715010, -0.993857301464339480, -0.993862833680320690, +-0.993868363411644860, -0.993873890658298120, -0.993879415420266590, -0.993884937697536610, -0.993890457490094300, -0.993895974797925800, -0.993901489621017320, -0.993907001959355110, +-0.993912511812925500, -0.993918019181714520, -0.993923524065708500, -0.993929026464893670, -0.993934526379256390, -0.993940023808782660, -0.993945518753458930, -0.993951011213271340, +-0.993956501188206330, -0.993961988678249920, -0.993967473683388670, -0.993972956203608700, -0.993978436238896370, -0.993983913789237890, -0.993989388854619630, -0.993994861435027910, +-0.994000331530449090, -0.994005799140869390, -0.994011264266275170, -0.994016726906652880, -0.994022187061988640, -0.994027644732269010, -0.994033099917480230, -0.994038552617608760, +-0.994044002832640940, -0.994049450562563000, -0.994054895807361500, -0.994060338567022810, -0.994065778841533130, -0.994071216630879160, -0.994076651935047020, -0.994082084754023380, +-0.994087515087794360, -0.994092942936346760, -0.994098368299666690, -0.994103791177740610, -0.994109211570555210, -0.994114629478096700, -0.994120044900351660, -0.994125457837306440, +-0.994130868288947590, -0.994136276255261690, -0.994141681736234960, -0.994147084731854090, -0.994152485242105530, -0.994157883266975630, -0.994163278806451170, -0.994168671860518380, +-0.994174062429164060, -0.994179450512374440, -0.994184836110136310, -0.994190219222436000, -0.994195599849260200, -0.994200977990595370, -0.994206353646428180, -0.994211726816745080, +-0.994217097501532530, -0.994222465700777440, -0.994227831414466020, -0.994233194642585080, -0.994238555385121180, -0.994243913642060880, -0.994249269413390760, -0.994254622699097480, +-0.994259973499167620, -0.994265321813587840, -0.994270667642344840, -0.994276010985425060, -0.994281351842815300, -0.994286690214502220, -0.994292026100472290, -0.994297359500712410, +-0.994302690415209020, -0.994308018843949040, -0.994313344786918910, -0.994318668244105420, -0.994323989215495360, -0.994329307701075190, -0.994334623700831810, -0.994339937214751890, +-0.994345248242822110, -0.994350556785029260, -0.994355862841360020, -0.994361166411801060, -0.994366467496339170, -0.994371766094961140, -0.994377062207653650, -0.994382355834403600, +-0.994387646975197660, -0.994392935630022510, -0.994398221798865060, -0.994403505481712080, -0.994408786678550370, -0.994414065389366610, -0.994419341614147690, -0.994424615352880510, +-0.994429886605551760, -0.994435155372148220, -0.994440421652656780, -0.994445685447064350, -0.994450946755357720, -0.994456205577523790, -0.994461461913549230, -0.994466715763421050, +-0.994471967127126040, -0.994477216004651220, -0.994482462395983260, -0.994487706301109160, -0.994492947720015840, -0.994498186652690070, -0.994503423099118880, -0.994508657059289150, +-0.994513888533187780, -0.994519117520801690, -0.994524344022117760, -0.994529568037123000, -0.994534789565804320, -0.994540008608148730, -0.994545225164143010, -0.994550439233774290, +-0.994555650817029460, -0.994560859913895530, -0.994566066524359420, -0.994571270648408110, -0.994576472286028750, -0.994581671437208100, -0.994586868101933310, -0.994592062280191260, +-0.994597253971969190, -0.994602443177253880, -0.994607629896032570, -0.994612814128292060, -0.994617995874019560, -0.994623175133202090, -0.994628351905826660, -0.994633526191880390, +-0.994638697991350300, -0.994643867304223490, -0.994649034130487000, -0.994654198470127810, -0.994659360323133290, -0.994664519689490320, -0.994669676569185920, -0.994674830962207550, +-0.994679982868541980, -0.994685132288176450, -0.994690279221098090, -0.994695423667294020, -0.994700565626751350, -0.994705705099457440, -0.994710842085399060, -0.994715976584563680, +-0.994721108596938410, -0.994726238122510260, -0.994731365161266590, -0.994736489713194500, -0.994741611778281240, -0.994746731356513810, -0.994751848447879670, -0.994756963052365830, +-0.994762075169959630, -0.994767184800648190, -0.994772291944418850, -0.994777396601258750, -0.994782498771155210, -0.994787598454095370, -0.994792695650066560, -0.994797790359055910, +-0.994802882581050980, -0.994807972316038680, -0.994813059564006560, -0.994818144324941640, -0.994823226598831490, -0.994828306385663220, -0.994833383685424290, -0.994838458498101820, +-0.994843530823683150, -0.994848600662155750, -0.994853668013506720, -0.994858732877723640, -0.994863795254793740, -0.994868855144704240, -0.994873912547442730, -0.994878967462996310, +-0.994884019891352560, -0.994889069832498700, -0.994894117286422300, -0.994899162253110480, -0.994904204732550810, -0.994909244724730520, -0.994914282229637290, -0.994919317247258240, +-0.994924349777580930, -0.994929379820592710, -0.994934407376281140, -0.994939432444633450, -0.994944455025637220, -0.994949475119279780, -0.994954492725548810, -0.994959507844431430, +-0.994964520475915440, -0.994969530619988050, -0.994974538276636840, -0.994979543445849380, -0.994984546127613000, -0.994989546321915160, -0.994994544028743540, -0.994999539248085600, +-0.995004531979928770, -0.995009522224260650, -0.995014509981068660, -0.995019495250340390, -0.995024478032063510, -0.995029458326225250, -0.995034436132813500, -0.995039411451815630, +-0.995044384283219170, -0.995049354627011720, -0.995054322483180930, -0.995059287851714380, -0.995064250732599630, -0.995069211125824140, -0.995074169031375690, -0.995079124449241850, +-0.995084077379410180, -0.995089027821868250, -0.995093975776603860, -0.995098921243604440, -0.995103864222857680, -0.995108804714351370, -0.995113742718073070, -0.995118678234010350, +-0.995123611262150880, -0.995128541802482450, -0.995133469854992620, -0.995138395419669200, -0.995143318496499730, -0.995148239085472010, -0.995153157186573600, -0.995158072799792400, +-0.995162985925115980, -0.995167896562532020, -0.995172804712028400, -0.995177710373592820, -0.995182613547212940, -0.995187514232876440, -0.995192412430571220, -0.995197308140284950, +-0.995202201362005430, -0.995207092095720340, -0.995211980341417560, -0.995216866099084880, -0.995221749368710000, -0.995226630150280680, -0.995231508443784940, -0.995236384249210350, +-0.995241257566544690, -0.995246128395776090, -0.995250996736891990, -0.995255862589880520, -0.995260725954729360, -0.995265586831426300, -0.995270445219959330, -0.995275301120316370, +-0.995280154532484970, -0.995285005456453260, -0.995289853892209030, -0.995294699839740170, -0.995299543299034580, -0.995304384270080170, -0.995309222752864710, -0.995314058747376220, +-0.995318892253602590, -0.995323723271531850, -0.995328551801151650, -0.995333377842450130, -0.995338201395415180, -0.995343022460034590, -0.995347841036296590, -0.995352657124188970, +-0.995357470723699620, -0.995362281834816680, -0.995367090457528030, -0.995371896591821680, -0.995376700237685540, -0.995381501395107620, -0.995386300064076020, -0.995391096244578550, +-0.995395889936603440, -0.995400681140138580, -0.995405469855172090, -0.995410256081691870, -0.995415039819686040, -0.995419821069142510, -0.995424599830049490, -0.995429376102395010, +-0.995434149886167070, -0.995438921181353690, -0.995443689987943080, -0.995448456305923270, -0.995453220135282260, -0.995457981476008170, -0.995462740328089240, -0.995467496691513350, +-0.995472250566268760, -0.995477001952343570, -0.995481750849725790, -0.995486497258403770, -0.995491241178365400, -0.995495982609598930, -0.995500721552092570, -0.995505458005834340, +-0.995510191970812470, -0.995514923447015200, -0.995519652434430520, -0.995524378933046790, -0.995529102942852020, -0.995533824463834540, -0.995538543495982590, -0.995543260039284170, +-0.995547974093727640, -0.995552685659301110, -0.995557394735992920, -0.995562101323791300, -0.995566805422684390, -0.995571507032660400, -0.995576206153707680, -0.995580902785814460, +-0.995585596928969090, -0.995590288583159570, -0.995594977748374350, -0.995599664424601680, -0.995604348611830000, -0.995609030310047330, -0.995613709519242000, -0.995618386239402580, +-0.995623060470517070, -0.995627732212573950, -0.995632401465561420, -0.995637068229468070, -0.995641732504281900, -0.995646394289991470, -0.995651053586585010, -0.995655710394050870, +-0.995660364712377510, -0.995665016541553260, -0.995669665881566470, -0.995674312732405480, -0.995678957094058740, -0.995683598966514590, -0.995688238349761390, -0.995692875243787690, +-0.995697509648581720, -0.995702141564132060, -0.995706770990427040, -0.995711397927455000, -0.995716022375204620, -0.995720644333664030, -0.995725263802821890, -0.995729880782666550, +-0.995734495273186580, -0.995739107274370320, -0.995743716786206320, -0.995748323808683060, -0.995752928341788970, -0.995757530385512510, -0.995762129939842260, -0.995766727004766650, +-0.995771321580274260, -0.995775913666353650, -0.995780503262993170, -0.995785090370181370, -0.995789674987906940, -0.995794257116158320, -0.995798836754923980, -0.995803413904192580, +-0.995807988563952700, -0.995812560734192780, -0.995817130414901500, -0.995821697606067420, -0.995826262307679010, -0.995830824519725040, -0.995835384242193980, -0.995839941475074370, +-0.995844496218355020, -0.995849048472024380, -0.995853598236071110, -0.995858145510483910, -0.995862690295251320, -0.995867232590361920, -0.995871772395804490, -0.995876309711567710, +-0.995880844537640030, -0.995885376874010350, -0.995889906720667130, -0.995894434077599260, -0.995898958944795190, -0.995903481322243820, -0.995908001209933720, -0.995912518607853570, +-0.995917033515992140, -0.995921545934338130, -0.995926055862880300, -0.995930563301607230, -0.995935068250507820, -0.995939570709570730, -0.995944070678784770, -0.995948568158138590, +-0.995953063147621000, -0.995957555647220660, -0.995962045656926590, -0.995966533176727230, -0.995971018206611710, -0.995975500746568490, -0.995979980796586670, -0.995984458356654830, +-0.995988933426761760, -0.995993406006896450, -0.995997876097047600, -0.996002343697204080, -0.996006808807354700, -0.996011271427488350, -0.996015731557593710, -0.996020189197659780, +-0.996024644347675460, -0.996029097007629430, -0.996033547177510690, -0.996037994857308040, -0.996042440047010480, -0.996046882746606800, -0.996051322956085890, -0.996055760675436660, +-0.996060195904648000, -0.996064628643708930, -0.996069058892608330, -0.996073486651334990, -0.996077911919877930, -0.996082334698226160, -0.996086754986368450, -0.996091172784293930, +-0.996095588091991500, -0.996100000909450060, -0.996104411236658600, -0.996108819073606160, -0.996113224420281610, -0.996117627276674080, -0.996122027642772470, -0.996126425518565670, +-0.996130820904042920, -0.996135213799193120, -0.996139604204005270, -0.996143992118468380, -0.996148377542571570, -0.996152760476303740, -0.996157140919654130, -0.996161518872611510, +-0.996165894335165230, -0.996170267307304070, -0.996174637789017380, -0.996179005780294060, -0.996183371281123220, -0.996187734291493880, -0.996192094811395260, -0.996196452840816480, +-0.996200808379746450, -0.996205161428174500, -0.996209511986089540, -0.996213860053480890, -0.996218205630337470, -0.996222548716648730, -0.996226889312403440, -0.996231227417591070, +-0.996235563032200510, -0.996239896156221110, -0.996244226789641970, -0.996248554932452230, -0.996252880584641120, -0.996257203746197750, -0.996261524417111470, -0.996265842597371390, +-0.996270158286966630, -0.996274471485886440, -0.996278782194120140, -0.996283090411656860, -0.996287396138485940, -0.996291699374596380, -0.996296000119977650, -0.996300298374618980, +-0.996304594138509470, -0.996308887411638590, -0.996313178193995340, -0.996317466485569290, -0.996321752286349450, -0.996326035596325270, -0.996330316415486080, -0.996334594743821020, +-0.996338870581319420, -0.996343143927970740, -0.996347414783764210, -0.996351683148689050, -0.996355949022734720, -0.996360212405890570, -0.996364473298145930, -0.996368731699490030, +-0.996372987609912220, -0.996377241029402060, -0.996381491957948780, -0.996385740395541730, -0.996389986342170350, -0.996394229797823990, -0.996398470762492110, -0.996402709236164030, +-0.996406945218829110, -0.996411178710476910, -0.996415409711096770, -0.996419638220678030, -0.996423864239210260, -0.996428087766682790, -0.996432308803085200, -0.996436527348406710, +-0.996440743402637000, -0.996444956965765290, -0.996449168037781270, -0.996453376618674390, -0.996457582708433990, -0.996461786307049740, -0.996465987414510870, -0.996470186030807170, +-0.996474382155927870, -0.996478575789862760, -0.996482766932601070, -0.996486955584132580, -0.996491141744446640, -0.996495325413532920, -0.996499506591380760, -0.996503685277979940, +-0.996507861473319820, -0.996512035177390180, -0.996516206390180350, -0.996520375111680010, -0.996524541341878730, -0.996528705080766190, -0.996532866328331710, -0.996537025084565210, +-0.996541181349456130, -0.996545335122994040, -0.996549486405168610, -0.996553635195969510, -0.996557781495386320, -0.996561925303408700, -0.996566066620026230, -0.996570205445228560, +-0.996574341779005390, -0.996578475621346490, -0.996582606972241210, -0.996586735831679560, -0.996590862199650980, -0.996594986076145380, -0.996599107461152210, -0.996603226354661250, +-0.996607342756662300, -0.996611456667144900, -0.996615568086098860, -0.996619677013513950, -0.996623783449379850, -0.996627887393686350, -0.996631988846423010, -0.996636087807579840, +-0.996640184277146290, -0.996644278255112370, -0.996648369741467750, -0.996652458736202230, -0.996656545239305470, -0.996660629250767480, -0.996664710770577830, -0.996668789798726420, +-0.996672866335203020, -0.996676940379997430, -0.996681011933099550, -0.996685080994499150, -0.996689147564186030, -0.996693211642150080, -0.996697273228380980, -0.996701332322868840, +-0.996705388925603230, -0.996709443036574270, -0.996713494655771640, -0.996717543783185330, -0.996721590418805040, -0.996725634562620870, -0.996729676214622610, -0.996733715374800160, +-0.996737752043143410, -0.996741786219642270, -0.996745817904286620, -0.996749847097066490, -0.996753873797971760, -0.996757898006992330, -0.996761919724118210, -0.996765938949339180, +-0.996769955682645370, -0.996773969924026560, -0.996777981673472980, -0.996781990930974420, -0.996785997696520760, -0.996790001970102260, -0.996794003751708680, -0.996798003041330040, +-0.996801999838956450, -0.996805994144577930, -0.996809985958184370, -0.996813975279765780, -0.996817962109312280, -0.996821946446813880, -0.996825928292260690, -0.996829907645642610, +-0.996833884506949760, -0.996837858876172270, -0.996841830753300020, -0.996845800138323250, -0.996849767031231960, -0.996853731432016280, -0.996857693340666320, -0.996861652757172090, +-0.996865609681523710, -0.996869564113711300, -0.996873516053724980, -0.996877465501554870, -0.996881412457191090, -0.996885356920623860, -0.996889298891843080, -0.996893238370839210, +-0.996897175357602140, -0.996901109852122210, -0.996905041854389440, -0.996908971364394160, -0.996912898382126380, -0.996916822907576330, -0.996920744940734240, -0.996924664481590340, +-0.996928581530134750, -0.996932496086357700, -0.996936408150249420, -0.996940317721800030, -0.996944224800999980, -0.996948129387839280, -0.996952031482308270, -0.996955931084397280, +-0.996959828194096340, -0.996963722811395890, -0.996967614936286160, -0.996971504568757270, -0.996975391708799790, -0.996979276356403710, -0.996983158511559500, -0.996987038174257380, +-0.996990915344487580, -0.996994790022240560, -0.996998662207506550, -0.997002531900275990, -0.997006399100539010, -0.997010263808286060, -0.997014126023507360, -0.997017985746193490, +-0.997021842976334560, -0.997025697713921020, -0.997029549958943220, -0.997033399711391600, -0.997037246971256510, -0.997041091738528280, -0.997044934013197270, -0.997048773795253920, +-0.997052611084688680, -0.997056445881491890, -0.997060278185654010, -0.997064107997165490, -0.997067935316016560, -0.997071760142197890, -0.997075582475699830, -0.997079402316512820, +-0.997083219664627210, -0.997087034520033670, -0.997090846882722430, -0.997094656752684160, -0.997098464129909210, -0.997102269014388030, -0.997106071406111290, -0.997109871305069340, +-0.997113668711252730, -0.997117463624651920, -0.997121256045257480, -0.997125045973059840, -0.997128833408049700, -0.997132618350217380, -0.997136400799553460, -0.997140180756048710, +-0.997143958219693370, -0.997147733190478110, -0.997151505668393610, -0.997155275653430430, -0.997159043145578900, -0.997162808144829830, -0.997166570651173760, -0.997170330664601150, +-0.997174088185102780, -0.997177843212669220, -0.997181595747291040, -0.997185345788958900, -0.997189093337663370, -0.997192838393395120, -0.997196580956144720, -0.997200321025902950, +-0.997204058602660260, -0.997207793686407550, -0.997211526277135270, -0.997215256374834210, -0.997218983979495040, -0.997222709091108330, -0.997226431709664960, -0.997230151835155400, +-0.997233869467570530, -0.997237584606900930, -0.997241297253137370, -0.997245007406270640, -0.997248715066291310, -0.997252420233190270, -0.997256122906958200, -0.997259823087585760, +-0.997263520775063750, -0.997267215969382950, -0.997270908670534140, -0.997274598878508000, -0.997278286593295430, -0.997281971814887090, -0.997285654543273890, -0.997289334778446500, +-0.997293012520395820, -0.997296687769112510, -0.997300360524587590, -0.997304030786811730, -0.997307698555775720, -0.997311363831470570, -0.997315026613886930, -0.997318686903015840, +-0.997322344698847950, -0.997326000001374170, -0.997329652810585500, -0.997333303126472610, -0.997336950949026410, -0.997340596278238010, -0.997344239114097970, -0.997347879456597420, +-0.997351517305727020, -0.997355152661478010, -0.997358785523841050, -0.997362415892807050, -0.997366043768367130, -0.997369669150512060, -0.997373292039232750, -0.997376912434520310, +-0.997380530336365530, -0.997384145744759530, -0.997387758659693090, -0.997391369081157220, -0.997394977009142920, -0.997398582443641210, -0.997402185384643090, -0.997405785832139460, +-0.997409383786121320, -0.997412979246579790, -0.997416572213505770, -0.997420162686890380, -0.997423750666724510, -0.997427336152999280, -0.997430919145705810, -0.997434499644834880, +-0.997438077650377840, -0.997441653162325580, -0.997445226180669110, -0.997448796705399650, -0.997452364736508110, -0.997455930273985820, -0.997459493317823580, -0.997463053868012590, +-0.997466611924544000, -0.997470167487408910, -0.997473720556598440, -0.997477271132103600, -0.997480819213915510, -0.997484364802025510, -0.997487907896424500, -0.997491448497103810, +-0.997494986604054450, -0.997498522217267650, -0.997502055336734530, -0.997505585962446210, -0.997509114094394020, -0.997512639732568980, -0.997516162876962320, -0.997519683527565370, +-0.997523201684369140, -0.997526717347364870, -0.997530230516543880, -0.997533741191897310, -0.997537249373416370, -0.997540755061092300, -0.997544258254916330, -0.997547758954879680, +-0.997551257160973700, -0.997554752873189510, -0.997558246091518550, -0.997561736815951840, -0.997565225046480930, -0.997568710783096830, -0.997572194025791000, -0.997575674774554670, +-0.997579153029379160, -0.997582628790255830, -0.997586102057175910, -0.997589572830130720, -0.997593041109111510, -0.997596506894109840, -0.997599970185116810, -0.997603430982123900, +-0.997606889285122420, -0.997610345094103620, -0.997613798409059060, -0.997617249229979960, -0.997620697556857780, -0.997624143389683860, -0.997627586728449530, -0.997631027573146260, +-0.997634465923765370, -0.997637901780298430, -0.997641335142736560, -0.997644766011071550, -0.997648194385294510, -0.997651620265397000, -0.997655043651370480, -0.997658464543206280, +-0.997661882940895970, -0.997665298844431000, -0.997668712253802710, -0.997672123169002670, -0.997675531590022310, -0.997678937516853100, -0.997682340949486600, -0.997685741887914150, +-0.997689140332127410, -0.997692536282117850, -0.997695929737876910, -0.997699320699396150, -0.997702709166667150, -0.997706095139681340, -0.997709478618430180, -0.997712859602905460, +-0.997716238093098620, -0.997719614089001010, -0.997722987590604520, -0.997726358597900490, -0.997729727110880590, -0.997733093129536400, -0.997736456653859460, -0.997739817683841350, +-0.997743176219473730, -0.997746532260748160, -0.997749885807656220, -0.997753236860189570, -0.997756585418339890, -0.997759931482098740, -0.997763275051457680, -0.997766616126408600, +-0.997769954706942850, -0.997773290793052210, -0.997776624384728360, -0.997779955481962970, -0.997783284084747700, -0.997786610193074130, -0.997789933806934150, -0.997793254926319320, +-0.997796573551221310, -0.997799889681631800, -0.997803203317542690, -0.997806514458945530, -0.997809823105832110, -0.997813129258194100, -0.997816432916023290, -0.997819734079311350, +-0.997823032748050180, -0.997826328922231330, -0.997829622601846600, -0.997832913786887990, -0.997836202477346950, -0.997839488673215480, -0.997842772374485270, -0.997846053581148080, +-0.997849332293195830, -0.997852608510620190, -0.997855882233413150, -0.997859153461566280, -0.997862422195071600, -0.997865688433920760, -0.997868952178105780, -0.997872213427618450, +-0.997875472182450540, -0.997878728442593950, -0.997881982208040470, -0.997885233478782220, -0.997888482254810750, -0.997891728536118070, -0.997894972322696080, -0.997898213614536680, +-0.997901452411631750, -0.997904688713973200, -0.997907922521552910, -0.997911153834362800, -0.997914382652394850, -0.997917608975640970, -0.997920832804092940, -0.997924054137742990, +-0.997927272976582790, -0.997930489320604460, -0.997933703169799900, -0.997936914524161000, -0.997940123383679880, -0.997943329748348430, -0.997946533618158770, -0.997949734993102690, +-0.997952933873172190, -0.997956130258359500, -0.997959324148656400, -0.997962515544055020, -0.997965704444547350, -0.997968890850125410, -0.997972074760781200, -0.997975256176506840, +-0.997978435097294450, -0.997981611523135800, -0.997984785454023250, -0.997987956889948680, -0.997991125830904210, -0.997994292276881970, -0.997997456227873950, -0.998000617683872270, +-0.998003776644869060, -0.998006933110856420, -0.998010087081826480, -0.998013238557771350, -0.998016387538683050, -0.998019534024553790, -0.998022678015375700, -0.998025819511141000, +-0.998028958511841590, -0.998032095017469920, -0.998035229028018000, -0.998038360543477940, -0.998041489563841980, -0.998044616089102330, -0.998047740119251130, -0.998050861654280590, +-0.998053980694182940, -0.998057097238950310, -0.998060211288574920, -0.998063322843048990, -0.998066431902364770, -0.998069538466514470, -0.998072642535490330, -0.998075744109284570, +-0.998078843187889420, -0.998081939771297220, -0.998085033859500200, -0.998088125452490480, -0.998091214550260620, -0.998094301152802510, -0.998097385260108830, -0.998100466872171580, +-0.998103545988983210, -0.998106622610535950, -0.998109696736822150, -0.998112768367834140, -0.998115837503564140, -0.998118904144004620, -0.998121968289147790, -0.998125029938986110, +-0.998128089093511690, -0.998131145752717220, -0.998134199916594800, -0.998137251585136890, -0.998140300758335930, -0.998143347436184160, -0.998146391618673910, -0.998149433305797860, +-0.998152472497548130, -0.998155509193917270, -0.998158543394897620, -0.998161575100481540, -0.998164604310661560, -0.998167631025430160, -0.998170655244779550, -0.998173676968702410, +-0.998176696197191070, -0.998179712930237990, -0.998182727167835520, -0.998185738909976310, -0.998188748156652820, -0.998191754907857390, -0.998194759163582580, -0.998197760923820840, +-0.998200760188564740, -0.998203756957806720, -0.998206751231539350, -0.998209743009755070, -0.998212732292446340, -0.998215719079605930, -0.998218703371226090, -0.998221685167299590, +-0.998224664467818880, -0.998227641272776520, -0.998230615582164970, -0.998233587395976900, -0.998236556714204970, -0.998239523536841530, -0.998242487863879370, -0.998245449695310930, +-0.998248409031128880, -0.998251365871325790, -0.998254320215894330, -0.998257272064827060, -0.998260221418116540, -0.998263168275755560, -0.998266112637736570, -0.998269054504052340, +-0.998271993874695560, -0.998274930749658670, -0.998277865128934460, -0.998280797012515710, -0.998283726400394870, -0.998286653292564720, -0.998289577689017940, -0.998292499589747200, +-0.998295418994745280, -0.998298335904004740, -0.998301250317518480, -0.998304162235278960, -0.998307071657279050, -0.998309978583511560, -0.998312883013969030, -0.998315784948644370, +-0.998318684387530130, -0.998321581330619210, -0.998324475777904400, -0.998327367729378360, -0.998330257185033990, -0.998333144144863850, -0.998336028608860950, -0.998338910577017960, +-0.998341790049327660, -0.998344667025782840, -0.998347541506376390, -0.998350413491101100, -0.998353282979949850, -0.998356149972915330, -0.998359014469990420, -0.998361876471168030, +-0.998364735976440820, -0.998367592985801910, -0.998370447499243970, -0.998373299516759900, -0.998376149038342600, -0.998378996063984840, -0.998381840593679740, -0.998384682627419970, +-0.998387522165198440, -0.998390359207008140, -0.998393193752841970, -0.998396025802692820, -0.998398855356553590, -0.998401682414417180, -0.998404506976276580, -0.998407329042124810, +-0.998410148611954540, -0.998412965685759100, -0.998415780263531170, -0.998418592345263760, -0.998421401930949860, -0.998424209020582490, -0.998427013614154530, -0.998429815711659120, +-0.998432615313089130, -0.998435412418437580, -0.998438207027697590, -0.998440999140862040, -0.998443788757923940, -0.998446575878876420, -0.998449360503712470, -0.998452142632425100, +-0.998454922265007320, -0.998457699401452240, -0.998460474041752980, -0.998463246185902540, -0.998466015833893940, -0.998468782985720280, -0.998471547641374800, -0.998474309800850280, +-0.998477069464140050, -0.998479826631237240, -0.998482581302134740, -0.998485333476825780, -0.998488083155303570, -0.998490830337561140, -0.998493575023591600, -0.998496317213388160, +-0.998499056906943850, -0.998501794104251990, -0.998504528805305600, -0.998507261010097900, -0.998509990718622010, -0.998512717930871150, -0.998515442646838560, -0.998518164866517340, +-0.998520884589900630, -0.998523601816981850, -0.998526316547753920, -0.998529028782210280, -0.998531738520344050, -0.998534445762148560, -0.998537150507616820, -0.998539852756742290, +-0.998542552509518070, -0.998545249765937500, -0.998547944525993820, -0.998550636789680260, -0.998553326556990140, -0.998556013827916700, -0.998558698602453170, -0.998561380880592870, +-0.998564060662329170, -0.998566737947655380, -0.998569412736564630, -0.998572085029050480, -0.998574754825106050, -0.998577422124724670, -0.998580086927899790, -0.998582749234624760, +-0.998585409044892790, -0.998588066358697350, -0.998590721176031650, -0.998593373496889150, -0.998596023321263290, -0.998598670649147310, -0.998601315480534770, -0.998603957815418770, +-0.998606597653793000, -0.998609234995650690, -0.998611869840985380, -0.998614502189790310, -0.998617132042058930, -0.998619759397784800, -0.998622384256961260, -0.998625006619581760, +-0.998627626485639740, -0.998630243855128660, -0.998632858728041970, -0.998635471104373120, -0.998638080984115660, -0.998640688367262940, -0.998643293253808520, -0.998645895643745840, +-0.998648495537068360, -0.998651092933769750, -0.998653687833843340, -0.998656280237282810, -0.998658870144081500, -0.998661457554232970, -0.998664042467730880, -0.998666624884568700, +-0.998669204804739860, -0.998671782228238050, -0.998674357155056810, -0.998676929585189720, -0.998679499518630220, -0.998682066955371980, -0.998684631895408680, -0.998687194338733650, +-0.998689754285340680, -0.998692311735223440, -0.998694866688375260, -0.998697419144790040, -0.998699969104461240, -0.998702516567382400, -0.998705061533547430, -0.998707604002949670, +-0.998710143975583000, -0.998712681451440990, -0.998715216430517190, -0.998717748912805400, -0.998720278898299170, -0.998722806386992400, -0.998725331378878420, -0.998727853873951240, +-0.998730373872204420, -0.998732891373631640, -0.998735406378226550, -0.998737918885983070, -0.998740428896894740, -0.998742936410955350, -0.998745441428158690, -0.998747943948498310, +-0.998750443971968100, -0.998752941498561750, -0.998755436528273140, -0.998757929061095840, -0.998760419097023840, -0.998762906636050720, -0.998765391678170360, -0.998767874223376430, +-0.998770354271662940, -0.998772831823023450, -0.998775306877451970, -0.998777779434942170, -0.998780249495487940, -0.998782717059083060, -0.998785182125721430, -0.998787644695396830, +-0.998790104768103150, -0.998792562343834180, -0.998795017422583810, -0.998797470004345820, -0.998799920089114220, -0.998802367676882910, -0.998804812767645540, -0.998807255361396250, +-0.998809695458128700, -0.998812133057837000, -0.998814568160514950, -0.998817000766156540, -0.998819430874755550, -0.998821858486306000, -0.998824283600801780, -0.998826706218236880, +-0.998829126338605210, -0.998831543961900660, -0.998833959088117340, -0.998836371717249150, -0.998838781849289980, -0.998841189484233840, -0.998843594622074730, -0.998845997262806650, +-0.998848397406423620, -0.998850795052919520, -0.998853190202288470, -0.998855582854524470, -0.998857973009621420, -0.998860360667573550, -0.998862745828374640, -0.998865128492019030, +-0.998867508658500490, -0.998869886327813260, -0.998872261499951230, -0.998874634174908630, -0.998877004352679340, -0.998879372033257610, -0.998881737216637420, -0.998884099902812910, +-0.998886460091778170, -0.998888817783527230, -0.998891172978054300, -0.998893525675353390, -0.998895875875418730, -0.998898223578244320, -0.998900568783824380, -0.998902911492153050, +-0.998905251703224310, -0.998907589417032620, -0.998909924633571870, -0.998912257352836290, -0.998914587574820100, -0.998916915299517430, -0.998919240526922380, -0.998921563257029410, +-0.998923883489832410, -0.998926201225325720, -0.998928516463503560, -0.998930829204360050, -0.998933139447889530, -0.998935447194086110, -0.998937752442944140, -0.998940055194457720, +-0.998942355448621200, -0.998944653205428800, -0.998946948464874750, -0.998949241226953390, -0.998951531491658830, -0.998953819258985520, -0.998956104528927580, -0.998958387301479460, +-0.998960667576635260, -0.998962945354389450, -0.998965220634736360, -0.998967493417670100, -0.998969763703185240, -0.998972031491275890, -0.998974296781936390, -0.998976559575161290, +-0.998978819870944720, -0.998981077669281130, -0.998983332970164730, -0.998985585773590090, -0.998987836079551550, -0.998990083888043330, -0.998992329199059890, -0.998994572012595670, +-0.998996812328645010, -0.998999050147202360, -0.999001285468262060, -0.999003518291818550, -0.999005748617866170, -0.999007976446399490, -0.999010201777412840, -0.999012424610900780, +-0.999014644946857540, -0.999016862785277790, -0.999019078126155760, -0.999021290969486110, -0.999023501315263300, -0.999025709163481550, -0.999027914514135640, -0.999030117367220030, +-0.999032317722729050, -0.999034515580657260, -0.999036710940999110, -0.999038903803749270, -0.999041094168902190, -0.999043282036452320, -0.999045467406394330, -0.999047650278722550, +-0.999049830653431780, -0.999052008530516340, -0.999054183909970920, -0.999056356791789950, -0.999058527175968210, -0.999060695062500060, -0.999062860451380260, -0.999065023342603280, +-0.999067183736163770, -0.999069341632056180, -0.999071497030275310, -0.999073649930815710, -0.999075800333672050, -0.999077948238838780, -0.999080093646310670, -0.999082236556082300, +-0.999084376968148450, -0.999086514882503550, -0.999088650299142400, -0.999090783218059660, -0.999092913639249900, -0.999095041562707900, -0.999097166988428210, -0.999099289916405730, +-0.999101410346634910, -0.999103528279110640, -0.999105643713827480, -0.999107756650780330, -0.999109867089963740, -0.999111975031372390, -0.999114080475001280, -0.999116183420844850, +-0.999118283868897890, -0.999120381819155300, -0.999122477271611850, -0.999124570226262110, -0.999126660683100960, -0.999128748642123090, -0.999130834103323480, -0.999132917066696710, +-0.999134997532237670, -0.999137075499941130, -0.999139150969801880, -0.999141223941814700, -0.999143294415974600, -0.999145362392276140, -0.999147427870714310, -0.999149490851284020, +-0.999151551333979930, -0.999153609318796930, -0.999155664805729930, -0.999157717794773690, -0.999159768285923230, -0.999161816279173330, -0.999163861774518990, -0.999165904771954880, +-0.999167945271476010, -0.999169983273077380, -0.999172018776753660, -0.999174051782499960, -0.999176082290311070, -0.999178110300182110, -0.999180135812107740, -0.999182158826083080, +-0.999184179342103020, -0.999186197360162560, -0.999188212880256610, -0.999190225902380050, -0.999192236426527990, -0.999194244452695330, -0.999196249980876970, -0.999198253011068130, +-0.999200253543263580, -0.999202251577458340, -0.999204247113647530, -0.999206240151826130, -0.999208230691989160, -0.999210218734131520, -0.999212204278248420, -0.999214187324334760, +-0.999216167872385540, -0.999218145922395990, -0.999220121474361120, -0.999222094528275930, -0.999224065084135530, -0.999226033141934810, -0.999227998701669230, -0.999229961763333450, +-0.999231922326922930, -0.999233880392432550, -0.999235835959857430, -0.999237789029192690, -0.999239739600433550, -0.999241687673575020, -0.999243633248612320, -0.999245576325540560, +-0.999247516904354760, -0.999249454985050240, -0.999251390567622020, -0.999253323652065430, -0.999255254238375470, -0.999257182326547370, -0.999259107916576240, -0.999261031008457420, +-0.999262951602186030, -0.999264869697757300, -0.999266785295166330, -0.999268698394408460, -0.999270608995478820, -0.999272517098372610, -0.999274422703085090, -0.999276325809611570, +-0.999278226417947280, -0.999280124528087340, -0.999282020140027090, -0.999283913253761870, -0.999285803869286780, -0.999287691986597280, -0.999289577605688480, -0.999291460726555720, +-0.999293341349194340, -0.999295219473599560, -0.999297095099766830, -0.999298968227691260, -0.999300838857368310, -0.999302706988793310, -0.999304572621961480, -0.999306435756868280, +-0.999308296393508930, -0.999310154531878880, -0.999312010171973350, -0.999313863313787910, -0.999315713957317770, -0.999317562102558400, -0.999319407749505010, -0.999321250898153160, +-0.999323091548498190, -0.999324929700535550, -0.999326765354260460, -0.999328598509668600, -0.999330429166755190, -0.999332257325515670, -0.999334082985945500, -0.999335906148040130, +-0.999337726811795000, -0.999339544977205560, -0.999341360644267260, -0.999343173812975550, -0.999344984483325980, -0.999346792655313900, -0.999348598328934750, -0.999350401504184190, +-0.999352202181057690, -0.999354000359550580, -0.999355796039658520, -0.999357589221376960, -0.999359379904701360, -0.999361168089627380, -0.999362953776150480, -0.999364736964266200, +-0.999366517653970110, -0.999368295845257660, -0.999370071538124520, -0.999371844732566130, -0.999373615428578170, -0.999375383626156190, -0.999377149325295750, -0.999378912525992420, +-0.999380673228241760, -0.999382431432039530, -0.999384187137381090, -0.999385940344262310, -0.999387691052678660, -0.999389439262625690, -0.999391184974099180, -0.999392928187094690, +-0.999394668901607890, -0.999396407117634440, -0.999398142835170030, -0.999399876054210100, -0.999401606774750650, -0.999403334996787130, -0.999405060720315210, -0.999406783945330670, +-0.999408504671829180, -0.999410222899806410, -0.999411938629258150, -0.999413651860179940, -0.999415362592567690, -0.999417070826416950, -0.999418776561723620, -0.999420479798483250, +-0.999422180536691850, -0.999423878776344870, -0.999425574517438190, -0.999427267759967600, -0.999428958503928880, -0.999430646749317700, -0.999432332496129950, -0.999434015744361300, +-0.999435696494007650, -0.999437374745064780, -0.999439050497528460, -0.999440723751394590, -0.999442394506658840, -0.999444062763317100, -0.999445728521365150, -0.999447391780798890, +-0.999449052541614200, -0.999450710803806870, -0.999452366567372800, -0.999454019832307860, -0.999455670598607740, -0.999457318866268540, -0.999458964635285940, -0.999460607905656050, +-0.999462248677374540, -0.999463886950437420, -0.999465522724840680, -0.999467156000580000, -0.999468786777651500, -0.999470415056051050, -0.999472040835774570, -0.999473664116817930, +-0.999475284899177140, -0.999476903182848210, -0.999478518967826910, -0.999480132254109480, -0.999481743041691570, -0.999483351330569310, -0.999484957120738700, -0.999486560412195750, +-0.999488161204936330, -0.999489759498956580, -0.999491355294252370, -0.999492948590819830, -0.999494539388654850, -0.999496127687753530, -0.999497713488111890, -0.999499296789726040, +-0.999500877592591870, -0.999502455896705500, -0.999504031702063030, -0.999505605008660480, -0.999507175816493950, -0.999508744125559460, -0.999510309935853100, -0.999511873247371010, +-0.999513434060109170, -0.999514992374063720, -0.999516548189230860, -0.999518101505606600, -0.999519652323187070, -0.999521200641968480, -0.999522746461946830, -0.999524289783118250, +-0.999525830605479060, -0.999527368929025270, -0.999528904753753000, -0.999530438079658580, -0.999531968906737900, -0.999533497234987410, -0.999535023064403230, -0.999536546394981350, +-0.999538067226718230, -0.999539585559609870, -0.999541101393652600, -0.999542614728842540, -0.999544125565175910, -0.999545633902649060, -0.999547139741258080, -0.999548643080999220, +-0.999550143921868810, -0.999551642263862950, -0.999553138106978100, -0.999554631451210260, -0.999556122296555990, -0.999557610643011300, -0.999559096490572620, -0.999560579839236300, +-0.999562060688998440, -0.999563539039855400, -0.999565014891803600, -0.999566488244839180, -0.999567959098958570, -0.999569427454158000, -0.999570893310434030, -0.999572356667782660, +-0.999573817526200450, -0.999575275885683730, -0.999576731746228850, -0.999578185107832030, -0.999579635970489820, -0.999581084334198570, -0.999582530198954490, -0.999583973564754150, +-0.999585414431593880, -0.999586852799470020, -0.999588288668379120, -0.999589722038317420, -0.999591152909281470, -0.999592581281267600, -0.999594007154272270, -0.999595430528292030, +-0.999596851403323110, -0.999598269779362060, -0.999599685656405330, -0.999601099034449380, -0.999602509913490760, -0.999603918293525790, -0.999605324174551060, -0.999606727556563100, +-0.999608128439558150, -0.999609526823532990, -0.999610922708484060, -0.999612316094407700, -0.999613706981300590, -0.999615095369159270, -0.999616481257980190, -0.999617864647759920, +-0.999619245538494900, -0.999620623930181810, -0.999621999822817190, -0.999623373216397600, -0.999624744110919510, -0.999626112506379560, -0.999627478402774330, -0.999628841800100480, +-0.999630202698354450, -0.999631561097532930, -0.999632916997632570, -0.999634270398649830, -0.999635621300581480, -0.999636969703423970, -0.999638315607174200, -0.999639659011828500, +-0.999640999917383750, -0.999642338323836420, -0.999643674231183280, -0.999645007639420990, -0.999646338548546120, -0.999647666958555450, -0.999648992869445530, -0.999650316281213260, +-0.999651637193855080, -0.999652955607367890, -0.999654271521748240, -0.999655584936993020, -0.999656895853098800, -0.999658204270062250, -0.999659510187880240, -0.999660813606549460, +-0.999662114526066680, -0.999663412946428580, -0.999664708867632030, -0.999666002289673620, -0.999667293212550210, -0.999668581636258600, -0.999669867560795460, -0.999671150986157660, +-0.999672431912342120, -0.999673710339345380, -0.999674986267164440, -0.999676259695795990, -0.999677530625236900, -0.999678799055483960, -0.999680064986533940, -0.999681328418383860, +-0.999682589351030490, -0.999683847784470610, -0.999685103718701120, -0.999686357153718900, -0.999687608089520730, -0.999688856526103510, -0.999690102463464240, -0.999691345901599690, +-0.999692586840506770, -0.999693825280182360, -0.999695061220623350, -0.999696294661826750, -0.999697525603789440, -0.999698754046508320, -0.999699979989980280, -0.999701203434202210, +-0.999702424379171230, -0.999703642824884220, -0.999704858771337970, -0.999706072218529700, -0.999707283166456180, -0.999708491615114550, -0.999709697564501560, -0.999710901014614350, +-0.999712101965450020, -0.999713300417005240, -0.999714496369277340, -0.999715689822263220, -0.999716880775959770, -0.999718069230364210, -0.999719255185473440, -0.999720438641284570, +-0.999721619597794490, -0.999722798055000420, -0.999723974012899360, -0.999725147471488440, -0.999726318430764540, -0.999727486890724990, -0.999728652851366580, -0.999729816312686540, +-0.999730977274682080, -0.999732135737350090, -0.999733291700687810, -0.999734445164692230, -0.999735596129360580, -0.999736744594689860, -0.999737890560677410, -0.999739034027320230, +-0.999740174994615320, -0.999741313462560120, -0.999742449431151540, -0.999743582900386900, -0.999744713870263310, -0.999745842340777900, -0.999746968311927890, -0.999748091783710490, +-0.999749212756122830, -0.999750331229162130, -0.999751447202825600, -0.999752560677110490, -0.999753671652013900, -0.999754780127533270, -0.999755886103665500, -0.999756989580408150, +-0.999758090557758330, -0.999759189035713260, -0.999760285014270170, -0.999761378493426500, -0.999762469473179260, -0.999763557953525890, -0.999764643934463630, -0.999765727415989680, +-0.999766808398101500, -0.999767886880796320, -0.999768962864071350, -0.999770036347924050, -0.999771107332351530, -0.999772175817351340, -0.999773241802920710, -0.999774305289056970, +-0.999775366275757470, -0.999776424763019530, -0.999777480750840610, -0.999778534239217920, -0.999779585228148800, -0.999780633717630930, -0.999781679707661300, -0.999782723198237580, +-0.999783764189356990, -0.999784802681016990, -0.999785838673215020, -0.999786872165948410, -0.999787903159214620, -0.999788931653011080, -0.999789957647335250, -0.999790981142184560, +-0.999792002137556370, -0.999793020633448100, -0.999794036629857330, -0.999795050126781490, -0.999796061124218040, -0.999797069622164410, -0.999798075620618180, -0.999799079119576660, +-0.999800080119037430, -0.999801078618998140, -0.999802074619456030, -0.999803068120408760, -0.999804059121853770, -0.999805047623788750, -0.999806033626211010, -0.999807017129118240, +-0.999807998132507980, -0.999808976636377580, -0.999809952640724810, -0.999810926145547230, -0.999811897150842290, -0.999812865656607540, -0.999813831662840660, -0.999814795169539310, +-0.999815756176700820, -0.999816714684322980, -0.999817670692403460, -0.999818624200939590, -0.999819575209929260, -0.999820523719370020, -0.999821469729259450, -0.999822413239595200, +-0.999823354250374830, -0.999824292761596230, -0.999825228773256750, -0.999826162285354260, -0.999827093297886440, -0.999828021810850840, -0.999828947824245140, -0.999829871338067110, +-0.999830792352314310, -0.999831710866984640, -0.999832626882075640, -0.999833540397585100, -0.999834451413510790, -0.999835359929850180, -0.999836265946601240, -0.999837169463761670, +-0.999838070481329220, -0.999838968999301470, -0.999839865017676410, -0.999840758536451600, -0.999841649555624930, -0.999842538075194190, -0.999843424095157030, -0.999844307615511350, +-0.999845188636254930, -0.999846067157385440, -0.999846943178900880, -0.999847816700798920, -0.999848687723077440, -0.999849556245734240, -0.999850422268767080, -0.999851285792173970, +-0.999852146815952580, -0.999853005340100800, -0.999853861364616510, -0.999854714889497620, -0.999855565914742010, -0.999856414440347340, -0.999857260466311740, -0.999858103992632860, +-0.999858945019308830, -0.999859783546337420, -0.999860619573716520, -0.999861453101444140, -0.999862284129518050, -0.999863112657936370, -0.999863938686696760, -0.999864762215797340, +-0.999865583245236110, -0.999866401775010850, -0.999867217805119560, -0.999868031335560240, -0.999868842366330890, -0.999869650897429410, -0.999870456928853790, -0.999871260460602040, +-0.999872061492672160, -0.999872860025062040, -0.999873656057769900, -0.999874449590793520, -0.999875240624131020, -0.999876029157780510, -0.999876815191739880, -0.999877598726007120, +-0.999878379760580470, -0.999879158295457810, -0.999879934330637270, -0.999880707866116940, -0.999881478901894830, -0.999882247437969050, -0.999883013474337610, -0.999883777010998620, +-0.999884538047950190, -0.999885296585190430, -0.999886052622717350, -0.999886806160529270, -0.999887557198624100, -0.999888305737000050, -0.999889051775655240, -0.999889795314587880, +-0.999890536353795880, -0.999891274893277670, -0.999892010933031260, -0.999892744473054760, -0.999893475513346400, -0.999894204053904390, -0.999894930094726850, -0.999895653635812010, +-0.999896374677157970, -0.999897093218763080, -0.999897809260625440, -0.999898522802743160, -0.999899233845114700, -0.999899942387738160, -0.999900648430611770, -0.999901351973733640, +-0.999902053017102220, -0.999902751560715730, -0.999903447604572280, -0.999904141148670210, -0.999904832193007740, -0.999905520737583320, -0.999906206782394950, -0.999906890327441180, +-0.999907571372720130, -0.999908249918230130, -0.999908925963969630, -0.999909599509936740, -0.999910270556129800, -0.999910939102547250, -0.999911605149187310, -0.999912268696048320, +-0.999912929743128730, -0.999913588290426870, -0.999914244337940960, -0.999914897885669450, -0.999915548933610680, -0.999916197481763080, -0.999916843530124890, -0.999917487078694660, +-0.999918128127470720, -0.999918766676451520, -0.999919402725635290, -0.999920036275020570, -0.999920667324605830, -0.999921295874389380, -0.999921921924369680, -0.999922545474545180, +-0.999923166524914420, -0.999923785075475640, -0.999924401126227380, -0.999925014677168100, -0.999925625728296350, -0.999926234279610580, -0.999926840331109120, -0.999927443882790650, +-0.999928044934653480, -0.999928643486696300, -0.999929239538917440, -0.999929833091315450, -0.999930424143888890, -0.999931012696636310, -0.999931598749556280, -0.999932182302647130, +-0.999932763355907530, -0.999933341909336030, -0.999933917962931180, -0.999934491516691560, -0.999935062570615710, -0.999935631124702300, -0.999936197178949660, -0.999936760733356580, +-0.999937321787921610, -0.999937880342643300, -0.999938436397520340, -0.999938989952551260, -0.999939541007734740, -0.999940089563069350, -0.999940635618553620, -0.999941179174186460, +-0.999941720229966300, -0.999942258785891820, -0.999942794841961690, -0.999943328398174680, -0.999943859454529240, -0.999944388011024140, -0.999944914067658170, -0.999945437624429780, +-0.999945958681337840, -0.999946477238381040, -0.999946993295558140, -0.999947506852867600, -0.999948017910308410, -0.999948526467879020, -0.999949032525578430, -0.999949536083405310, +-0.999950037141358220, -0.999950535699436150, -0.999951031757637670, -0.999951525315961650, -0.999952016374406780, -0.999952504932971830, -0.999952990991655690, -0.999953474550457130, +-0.999953955609374720, -0.999954434168407570, -0.999954910227554230, -0.999955383786813700, -0.999955854846184660, -0.999956323405665980, -0.999956789465256570, -0.999957253024955080, +-0.999957714084760530, -0.999958172644671680, -0.999958628704687440, -0.999959082264806560, -0.999959533325027960, -0.999959981885350510, -0.999960427945773220, -0.999960871506294760, +-0.999961312566914230, -0.999961751127630310, -0.999962187188441990, -0.999962620749348270, -0.999963051810348060, -0.999963480371440120, -0.999963906432623560, -0.999964329993897170, +-0.999964751055259950, -0.999965169616710890, -0.999965585678248890, -0.999965999239872950, -0.999966410301581950, -0.999966818863375020, -0.999967224925250920, -0.999967628487208880, +-0.999968029549247680, -0.999968428111366440, -0.999968824173564140, -0.999969217735839800, -0.999969608798192410, -0.999969997360620980, -0.999970383423124500, -0.999970766985702090, +-0.999971148048352850, -0.999971526611075690, -0.999971902673869710, -0.999972276236733900, -0.999972647299667510, -0.999973015862669400, -0.999973381925738810, -0.999973745488874850, +-0.999974106552076410, -0.999974465115342710, -0.999974821178672870, -0.999975174742065990, -0.999975525805521180, -0.999975874369037570, -0.999976220432614250, -0.999976563996250340, +-0.999976905059945080, -0.999977243623697550, -0.999977579687506890, -0.999977913251372310, -0.999978244315292920, -0.999978572879267950, -0.999978898943296500, -0.999979222507377810, +-0.999979543571511090, -0.999979862135695450, -0.999980178199930240, -0.999980491764214550, -0.999980802828547620, -0.999981111392928670, -0.999981417457357020, -0.999981721021831800, +-0.999982022086352230, -0.999982320650917630, -0.999982616715527240, -0.999982910280180270, -0.999983201344876060, -0.999983489909613830, -0.999983775974392920, -0.999984059539212540, +-0.999984340604071930, -0.999984619168970630, -0.999984895233907660, -0.999985168798882550, -0.999985439863894430, -0.999985708428942740, -0.999985974494026710, -0.999986238059145880, +-0.999986499124299380, -0.999986757689486640, -0.999987013754707000, -0.999987267319959790, -0.999987518385244470, -0.999987766950560350, -0.999988013015906780, -0.999988256581283210, +-0.999988497646689070, -0.999988736212123590, -0.999988972277586320, -0.999989205843076490, -0.999989436908593770, -0.999989665474137480, -0.999989891539706970, -0.999990115105301780, +-0.999990336170921260, -0.999990554736564840, -0.999990770802232090, -0.999990984367922440, -0.999991195433635350, -0.999991403999370140, -0.999991610065126600, -0.999991813630903950, +-0.999992014696701740, -0.999992213262519520, -0.999992409328356760, -0.999992602894212990, -0.999992793960087670, -0.999992982525980460, -0.999993168591890690, -0.999993352157818040, +-0.999993533223762050, -0.999993711789722180, -0.999993887855698090, -0.999994061421689230, -0.999994232487695140, -0.999994401053715620, -0.999994567119749990, -0.999994730685798030, +-0.999994891751859180, -0.999995050317933120, -0.999995206384019400, -0.999995359950117680, -0.999995511016227630, -0.999995659582348710, -0.999995805648480670, -0.999995949214623090, +-0.999996090280775740, -0.999996228846938060, -0.999996364913109840, -0.999996498479290730, -0.999996629545480410, -0.999996758111678430, -0.999996884177884570, -0.999997007744098500, +-0.999997128810319990, -0.999997247376548600, -0.999997363442784120, -0.999997477009026190, -0.999997588075274610, -0.999997696641529040, -0.999997802707789150, -0.999997906274054830, +-0.999998007340325730, -0.999998105906601650, -0.999998201972882250, -0.999998295539167410, -0.999998386605456810, -0.999998475171750220, -0.999998561238047420, -0.999998644804348300, +-0.999998725870652530, -0.999998804436959880, -0.999998880503270350, -0.999998954069583500, -0.999999025135899330, -0.999999093702217620, -0.999999159768538040, -0.999999223334860690, +-0.999999284401185240, -0.999999342967511580, -0.999999399033839610, -0.999999452600169090, -0.999999503666499920, -0.999999552232832100, -0.999999598299165290, -0.999999641865499500, +-0.999999682931834610, -0.999999721498170510, -0.999999757564507100, -0.999999791130844360, -0.999999822197182090, -0.999999850763520270, -0.999999876829858910, -0.999999900396197680, +-0.999999921462536800, -0.999999940028876160, -0.999999956095215640, -0.999999969661555240, -0.999999980727894870, -0.999999989294234610, -0.999999995360574270, -0.999999998926914050, +-0.999999999993253730, -0.999999998559593540, -0.999999994625933250, -0.999999988192273090, -0.999999979258612840, -0.999999967824952710, -0.999999953891292590, -0.999999937457632600, +-0.999999918523972850, -0.999999897090313230, -0.999999873156653950, -0.999999846722994910, -0.999999817789336220, -0.999999786355678100, -0.999999752422020440, -0.999999715988363350, +-0.999999677054707050, -0.999999635621051540, -0.999999591687396940, -0.999999545253743350, -0.999999496320091000, -0.999999444886439770, -0.999999390952790000, -0.999999334519141690, +-0.999999275585495170, -0.999999214151850340, -0.999999150218207510, -0.999999083784566810, -0.999999014850928350, -0.999998943417292450, -0.999998869483659130, -0.999998793050028700, +-0.999998714116401180, -0.999998632682777000, -0.999998548749156170, -0.999998462315538910, -0.999998373381925540, -0.999998281948316300, -0.999998188014711300, -0.999998091581110860, +-0.999997992647515100, -0.999997891213924460, -0.999997787280339060, -0.999997680846759220, -0.999997571913185170, -0.999997460479617130, -0.999997346546055540, -0.999997230112500520, +-0.999997111178952400, -0.999996989745411510, -0.999996865811878190, -0.999996739378352760, -0.999996610444835340, -0.999996479011326490, -0.999996345077826420, -0.999996208644335470, +-0.999996069710853970, -0.999995928277382370, -0.999995784343920890, -0.999995637910470080, -0.999995488977030060, -0.999995337543601260, -0.999995183610184250, -0.999995027176779240, +-0.999994868243386570, -0.999994706810006790, -0.999994542876640360, -0.999994376443287370, -0.999994207509948610, -0.999994036076624290, -0.999993862143314760, -0.999993685710020670, +-0.999993506776742370, -0.999993325343480290, -0.999993141410234990, -0.999992954977006690, -0.999992766043796060, -0.999992574610603540, -0.999992380677429570, -0.999992184244274610, +-0.999991985311139310, -0.999991783878023900, -0.999991579944929150, -0.999991373511855300, -0.999991164578803100, -0.999990953145773020, -0.999990739212765600, -0.999990522779781290, +-0.999990303846820640, -0.999990082413884210, -0.999989858480972550, -0.999989632048086330, -0.999989403115225990, -0.999989171682392210, -0.999988937749585420, -0.999988701316806280, +-0.999988462384055480, -0.999988220951333440, -0.999987977018640840, -0.999987730585978340, -0.999987481653346500, -0.999987230220745980, -0.999986976288177340, -0.999986719855641360, +-0.999986460923138480, -0.999986199490669470, -0.999985935558234900, -0.999985669125835640, -0.999985400193472040, -0.999985128761145090, -0.999984854828855240, -0.999984578396603260, +-0.999984299464389830, -0.999984018032215700, -0.999983734100081460, -0.999983447667987970, -0.999983158735935800, -0.999982867303925720, -0.999982573371958510, -0.999982276940034830, +-0.999981978008155470, -0.999981676576321200, -0.999981372644532680, -0.999981066212790700, -0.999980757281096140, -0.999980445849449670, -0.999980131917852070, -0.999979815486304210, +-0.999979496554806670, -0.999979175123360540, -0.999978851191966390, -0.999978524760625100, -0.999978195829337560, -0.999977864398104430, -0.999977530466926720, -0.999977194035805210, +-0.999976855104740660, -0.999976513673733970, -0.999976169742786030, -0.999975823311897600, -0.999975474381069710, -0.999975122950303110, -0.999974769019598700, -0.999974412588957250, +-0.999974053658379880, -0.999973692227867360, -0.999973328297420690, -0.999972961867040540, -0.999972592936728130, -0.999972221506484130, -0.999971847576309640, -0.999971471146205550, +-0.999971092216172750, -0.999970710786212250, -0.999970326856324920, -0.999969940426511770, -0.999969551496773800, -0.999969160067111900, -0.999968766137527170, -0.999968369708020500, +-0.999967970778592900, -0.999967569349245360, -0.999967165419978990, -0.999966758990794570, -0.999966350061693320, -0.999965938632676240, -0.999965524703744220, -0.999965108274898480, +-0.999964689346139910, -0.999964267917469620, -0.999963843988888710, -0.999963417560398080, -0.999962988631999060, -0.999962557203692430, -0.999962123275479510, -0.999961686847361200, +-0.999961247919338710, -0.999960806491413170, -0.999960362563585560, -0.999959916135857000, -0.999959467208228700, -0.999959015780701680, -0.999958561853277140, -0.999958105425956200, +-0.999957646498740080, -0.999957185071629780, -0.999956721144626530, -0.999956254717731420, -0.999955785790945680, -0.999955314364270540, -0.999954840437707100, -0.999954364011256480, +-0.999953885084920000, -0.999953403658698890, -0.999952919732594150, -0.999952433306607210, -0.999951944380739090, -0.999951452954991220, -0.999950959029364590, -0.999950462603860670, +-0.999949963678480550, -0.999949462253225560, -0.999948958328096830, -0.999948451903095780, -0.999947942978223540, -0.999947431553481540, -0.999946917628870890, -0.999946401204392930, +-0.999945882280048990, -0.999945360855840400, -0.999944836931768390, -0.999944310507834170, -0.999943781584039290, -0.999943250160384990, -0.999942716236872480, -0.999942179813503200, +-0.999941640890278480, -0.999941099467199670, -0.999940555544268080, -0.999940009121485060, -0.999939460198852050, -0.999938908776370480, -0.999938354854041590, -0.999937798431866810, +-0.999937239509847480, -0.999936678087985030, -0.999936114166281030, -0.999935547744736590, -0.999934978823353360, -0.999934407402132690, -0.999933833481076010, -0.999933257060184770, +-0.999932678139460300, -0.999932096718904150, -0.999931512798517770, -0.999930926378302610, -0.999930337458260210, -0.999929746038391910, -0.999929152118699260, -0.999928555699183710, +-0.999927956779846800, -0.999927355360689880, -0.999926751441714720, -0.999926145022922650, -0.999925536104315120, -0.999924924685893890, -0.999924310767660310, -0.999923694349615920, +-0.999923075431762290, -0.999922454014100960, -0.999921830096633490, -0.999921203679361550, -0.999920574762286460, -0.999919943345410010, -0.999919309428733750, -0.999918673012259120, +-0.999918034095987780, -0.999917392679921520, -0.999916748764061670, -0.999916102348409890, -0.999915453432967950, -0.999914802017737410, -0.999914148102719720, -0.999913491687916770, +-0.999912832773330100, -0.999912171358961270, -0.999911507444812050, -0.999910841030884120, -0.999910172117179030, -0.999909500703698550, -0.999908826790444240, -0.999908150377417980, +-0.999907471464621220, -0.999906790052055850, -0.999906106139723530, -0.999905419727625810, -0.999904730815764700, -0.999904039404141740, -0.999903345492758610, -0.999902649081617190, +-0.999901950170719030, -0.999901248760066140, -0.999900544849660070, -0.999899838439502590, -0.999899129529595590, -0.999898418119940740, -0.999897704210539810, -0.999896987801394690, +-0.999896268892507050, -0.999895547483878660, -0.999894823575511520, -0.999894097167407290, -0.999893368259567870, -0.999892636851994920, -0.999891902944690440, -0.999891166537656200, +-0.999890427630894090, -0.999889686224405880, -0.999888942318193360, -0.999888195912258640, -0.999887447006603370, -0.999886695601229450, -0.999885941696138760, -0.999885185291333300, +-0.999884426386814850, -0.999883664982585300, -0.999882901078646640, -0.999882134675000640, -0.999881365771649430, -0.999880594368594780, -0.999879820465838560, -0.999879044063382790, +-0.999878265161229460, -0.999877483759380570, -0.999876699857837780, -0.999875913456603320, -0.999875124555679170, -0.999874333155067130, -0.999873539254769180, -0.999872742854787440, +-0.999871943955123910, -0.999871142555780470, -0.999870338656759120, -0.999869532258061970, -0.999868723359691010, -0.999867911961648260, -0.999867098063935700, -0.999866281666555450, +-0.999865462769509380, -0.999864641372799730, -0.999863817476428500, -0.999862991080397670, -0.999862162184709360, -0.999861330789365680, -0.999860496894368620, -0.999859660499720420, +-0.999858821605422940, -0.999857980211478540, -0.999857136317889080, -0.999856289924656800, -0.999855441031783810, -0.999854589639272210, -0.999853735747124220, -0.999852879355341840, +-0.999852020463927180, -0.999851159072882580, -0.999850295182210020, -0.999849428791911740, -0.999848559901989840, -0.999847688512446650, -0.999846814623284170, -0.999845938234504630, +-0.999845059346110340, -0.999844177958103320, -0.999843294070485890, -0.999842407683260160, -0.999841518796428460, -0.999840627409993020, -0.999839733523955940, -0.999838837138319560, +-0.999837938253086090, -0.999837036868257760, -0.999836132983836780, -0.999835226599825600, -0.999834317716226220, -0.999833406333041070, -0.999832492450272500, -0.999831576067922610, +-0.999830657185993840, -0.999829735804488420, -0.999828811923408560, -0.999827885542756810, -0.999826956662535290, -0.999826025282746330, -0.999825091403392370, -0.999824155024475640, +-0.999823216145998560, -0.999822274767963480, -0.999821330890372620, -0.999820384513228520, -0.999819435636533420, -0.999818484260289630, -0.999817530384499720, -0.999816574009166010, +-0.999815615134290850, -0.999814653759876660, -0.999813689885925780, -0.999812723512440770, -0.999811754639423840, -0.999810783266877670, -0.999809809394804460, -0.999808833023206670, +-0.999807854152086840, -0.999806872781447420, -0.999805888911290740, -0.999804902541619470, -0.999803913672435820, -0.999802922303742460, -0.999801928435541720, -0.999800932067836160, +-0.999799933200628320, -0.999798931833920660, -0.999797927967715610, -0.999796921602015830, -0.999795912736823670, -0.999794901372141780, -0.999793887507972600, -0.999792871144318700, +-0.999791852281182610, -0.999790830918566910, -0.999789807056474130, -0.999788780694906840, -0.999787751833867590, -0.999786720473359040, -0.999785686613383630, -0.999784650253943920, +-0.999783611395042680, -0.999782570036682360, -0.999781526178865730, -0.999780479821595120, -0.999779430964873430, -0.999778379608703190, -0.999777325753086870, -0.999776269398027330, +-0.999775210543527030, -0.999774149189588850, -0.999773085336215120, -0.999772018983408840, -0.999770950131172450, -0.999769878779508630, -0.999768804928420130, -0.999767728577909740, +-0.999766649727979910, -0.999765568378633510, -0.999764484529873100, -0.999763398181701570, -0.999762309334121470, -0.999761217987135690, -0.999760124140746780, -0.999759027794957620, +-0.999757928949770890, -0.999756827605189360, -0.999755723761215690, -0.999754617417852760, -0.999753508575103260, -0.999752397232969940, -0.999751283391455690, -0.999750167050563300, +-0.999749048210295420, -0.999747926870654830, -0.999746803031644540, -0.999745676693267190, -0.999744547855525690, -0.999743416518422800, -0.999742282681961410, -0.999741146346144300, +-0.999740007510974250, -0.999738866176454240, -0.999737722342587070, -0.999736576009375600, -0.999735427176822730, -0.999734275844931240, -0.999733122013704010, -0.999731965683144040, +-0.999730806853254110, -0.999729645524037200, -0.999728481695496220, -0.999727315367633930, -0.999726146540453440, -0.999724975213957530, -0.999723801388149200, -0.999722625063031440, +-0.999721446238607040, -0.999720264914878980, -0.999719081091850370, -0.999717894769524000, -0.999716705947902850, -0.999715514626990040, -0.999714320806788350, -0.999713124487300870, +-0.999711925668530620, -0.999710724350480580, -0.999709520533153650, -0.999708314216552930, -0.999707105400681530, -0.999705894085542220, -0.999704680271138240, -0.999703463957472670, +-0.999702245144548310, -0.999701023832368360, -0.999699800020935840, -0.999698573710253830, -0.999697344900325360, -0.999696113591153620, -0.999694879782741520, -0.999693643475092260, +-0.999692404668208860, -0.999691163362094400, -0.999689919556752130, -0.999688673252185020, -0.999687424448396200, -0.999686173145388880, -0.999684919343166060, -0.999683663041731060, +-0.999682404241086790, -0.999681142941236560, -0.999679879142183370, -0.999678612843930670, -0.999677344046481230, -0.999676072749838610, -0.999674798954005680, -0.999673522658985790, +-0.999672243864782150, -0.999670962571397870, -0.999669678778836170, -0.999668392487100270, -0.999667103696193380, -0.999665812406118850, -0.999664518616879660, -0.999663222328479150, +-0.999661923540920650, -0.999660622254207380, -0.999659318468342440, -0.999658012183329280, -0.999656703399171120, -0.999655392115871180, -0.999654078333432670, -0.999652762051859050, +-0.999651443271153520, -0.999650121991319420, -0.999648798212359970, -0.999647471934278500, -0.999646143157078340, -0.999644811880762930, -0.999643478105335380, -0.999642141830799140, +-0.999640803057157630, -0.999639461784414100, -0.999638118012571850, -0.999636771741634340, -0.999635422971604900, -0.999634071702486860, -0.999632717934283650, -0.999631361666998730, +-0.999630002900635310, -0.999628641635196940, -0.999627277870686950, -0.999625911607108790, -0.999624542844465780, -0.999623171582761480, -0.999621797821999230, -0.999620421562182560, +-0.999619042803314710, -0.999617661545399330, -0.999616277788439760, -0.999614891532439540, -0.999613502777402020, -0.999612111523330850, -0.999610717770229360, -0.999609321518101000, +-0.999607922766949430, -0.999606521516777980, -0.999605117767590310, -0.999603711519389760, -0.999602302772179980, -0.999600891525964430, -0.999599477780746650, -0.999598061536530190, +-0.999596642793318610, -0.999595221551115350, -0.999593797809924080, -0.999592371569748340, -0.999590942830591580, -0.999589511592457570, -0.999588077855349750, -0.999586641619271690, +-0.999585202884227030, -0.999583761650219450, -0.999582317917252380, -0.999580871685329500, -0.999579422954454460, -0.999577971724630920, -0.999576517995862450, -0.999575061768152580, +-0.999573603041505110, -0.999572141815923690, -0.999570678091411870, -0.999569211867973430, -0.999567743145611810, -0.999566271924330900, -0.999564798204134350, -0.999563321985025840, +-0.999561843267008920, -0.999560362050087470, -0.999558878334265040, -0.999557392119545530, -0.999555903405932370, -0.999554412193429550, -0.999552918482040750, -0.999551422271769630, +-0.999549923562619960, -0.999548422354595400, -0.999546918647699840, -0.999545412441936950, -0.999543903737310610, -0.999542392533824490, -0.999540878831482350, -0.999539362630287980, +-0.999537843930245250, -0.999536322731357950, -0.999534799033629740, -0.999533272837064610, -0.999531744141666230, -0.999530212947438600, -0.999528679254385380, -0.999527143062510450, +-0.999525604371817700, -0.999524063182310910, -0.999522519493993960, -0.999520973306870730, -0.999519424620945010, -0.999517873436220780, -0.999516319752701940, -0.999514763570392150, +-0.999513204889295510, -0.999511643709415920, -0.999510080030757140, -0.999508513853323290, -0.999506945177118020, -0.999505374002145450, -0.999503800328409350, -0.999502224155913830, +-0.999500645484662780, -0.999499064314660070, -0.999497480645909710, -0.999495894478415690, -0.999494305812181900, -0.999492714647212340, -0.999491120983511010, -0.999489524821081890, +-0.999487926159928870, -0.999486325000056080, -0.999484721341467490, -0.999483115184167100, -0.999481506528158930, -0.999479895373447060, -0.999478281720035390, -0.999476665567927910, +-0.999475046917128850, -0.999473425767642200, -0.999471802119472060, -0.999470175972622330, -0.999468547327097110, -0.999466916182900620, -0.999465282540036750, -0.999463646398509710, +-0.999462007758323610, -0.999460366619482340, -0.999458722981990340, -0.999457076845851390, -0.999455428211069810, -0.999453777077649710, -0.999452123445595090, -0.999450467314910160, +-0.999448808685599150, -0.999447147557666060, -0.999445483931115100, -0.999443817805950370, -0.999442149182176220, -0.999440478059796520, -0.999438804438815830, -0.999437128319238030, +-0.999435449701067350, -0.999433768584308100, -0.999432084968964520, -0.999430398855040590, -0.999428710242540760, -0.999427019131469140, -0.999425325521829940, -0.999423629413627390, +-0.999421930806865810, -0.999420229701549420, -0.999418526097682450, -0.999416819995269210, -0.999415111394313830, -0.999413400294820730, -0.999411686696794140, -0.999409970600238280, +-0.999408252005157480, -0.999406530911556180, -0.999404807319438370, -0.999403081228808720, -0.999401352639671230, -0.999399621552030440, -0.999397887965890570, -0.999396151881255970, +-0.999394413298131060, -0.999392672216520060, -0.999390928636427310, -0.999389182557857360, -0.999387433980814420, -0.999385682905302830, -0.999383929331327030, -0.999382173258891560, +-0.999380414688000540, -0.999378653618658410, -0.999376890050869830, -0.999375123984638900, -0.999373355419970190, -0.999371584356868130, -0.999369810795337040, -0.999368034735381380, +-0.999366256177005810, -0.999364475120214420, -0.999362691565012010, -0.999360905511402780, -0.999359116959391280, -0.999357325908981960, -0.999355532360179380, -0.999353736312987960, +-0.999351937767412160, -0.999350136723456520, -0.999348333181125590, -0.999346527140423820, -0.999344718601355760, -0.999342907563925850, -0.999341094028138640, -0.999339277993998800, +-0.999337459461510650, -0.999335638430678960, -0.999333814901508080, -0.999331988874002760, -0.999330160348167350, -0.999328329324006610, -0.999326495801525110, -0.999324659780727260, +-0.999322821261617760, -0.999320980244201240, -0.999319136728482270, -0.999317290714465510, -0.999315442202155510, -0.999313591191556830, -0.999311737682674230, -0.999309881675512270, +-0.999308023170075610, -0.999306162166368920, -0.999304298664396850, -0.999302432664163960, -0.999300564165675030, -0.999298693168934600, -0.999296819673947570, -0.999294943680718360, +-0.999293065189251870, -0.999291184199552760, -0.999289300711625690, -0.999287414725475220, -0.999285526241106340, -0.999283635258523590, -0.999281741777731880, -0.999279845798735630, +-0.999277947321539850, -0.999276046346149190, -0.999274142872568440, -0.999272236900802360, -0.999270328430855610, -0.999268417462733090, -0.999266503996439570, -0.999264588031979710, +-0.999262669569358390, -0.999260748608580500, -0.999258825149650590, -0.999256899192573660, -0.999254970737354590, -0.999253039783997930, -0.999251106332508800, -0.999249170382891850, +-0.999247231935151970, -0.999245290989294040, -0.999243347545322850, -0.999241401603243260, -0.999239453163060290, -0.999237502224778580, -0.999235548788403150, -0.999233592853938870, +-0.999231634421390510, -0.999229673490763190, -0.999227710062061570, -0.999225744135290750, -0.999223775710455510, -0.999221804787560950, -0.999219831366611740, -0.999217855447613100, +-0.999215877030569690, -0.999213896115486610, -0.999211912702368870, -0.999209926791221340, -0.999207938382048910, -0.999205947474856690, -0.999203954069649570, -0.999201958166432540, +-0.999199959765210700, -0.999197958865988940, -0.999195955468772270, -0.999193949573565670, -0.999191941180374240, -0.999189930289202890, -0.999187916900056820, -0.999185901012940910, +-0.999183882627860290, -0.999181861744819930, -0.999179838363824850, -0.999177812484880250, -0.999175784107991130, -0.999173753233162490, -0.999171719860399540, -0.999169683989707180, +-0.999167645621090730, -0.999165604754555070, -0.999163561390105540, -0.999161515527747010, -0.999159467167484610, -0.999157416309323640, -0.999155362953269120, -0.999153307099326260, +-0.999151248747500050, -0.999149187897795720, -0.999147124550218370, -0.999145058704773330, -0.999142990361465590, -0.999140919520300370, -0.999138846181282900, -0.999136770344418170, +-0.999134692009711610, -0.999132611177168340, -0.999130527846793570, -0.999128442018592410, -0.999126353692570190, -0.999124262868732020, -0.999122169547083330, -0.999120073727629120, +-0.999117975410374730, -0.999115874595325360, -0.999113771282486350, -0.999111665471862920, -0.999109557163460280, -0.999107446357283880, -0.999105333053338710, -0.999103217251630320, +-0.999101098952163810, -0.999098978154944530, -0.999096854859977900, -0.999094729067269150, -0.999092600776823490, -0.999090469988646370, -0.999088336702743000, -0.999086200919118930, +-0.999084062637779270, -0.999081921858729460, -0.999079778581974830, -0.999077632807520710, -0.999075484535372650, -0.999073333765535750, -0.999071180498015580, -0.999069024732817450, +-0.999066866469946690, -0.999064705709408860, -0.999062542451209290, -0.999060376695353300, -0.999058208441846340, -0.999056037690693950, -0.999053864441901360, -0.999051688695474120, +-0.999049510451417770, -0.999047329709737530, -0.999045146470439070, -0.999042960733527610, -0.999040772499008910, -0.999038581766888200, -0.999036388537171030, -0.999034192809862830, +-0.999031994584969270, -0.999029793862495570, -0.999027590642447500, -0.999025384924830510, -0.999023176709649910, -0.999020965996911480, -0.999018752786620560, -0.999016537078782800, +-0.999014318873403750, -0.999012098170488750, -0.999009874970043680, -0.999007649272073750, -0.999005421076584850, -0.999003190383582320, -0.999000957193071800, -0.998998721505058970, +-0.998996483319549270, -0.998994242636548350, -0.998991999456061870, -0.998989753778095400, -0.998987505602654480, -0.998985254929744880, -0.998983001759372050, -0.998980746091541860, +-0.998978487926259650, -0.998976227263531300, -0.998973964103362370, -0.998971698445758500, -0.998969430290725380, -0.998967159638268760, -0.998964886488394210, -0.998962610841107380, +-0.998960332696414150, -0.998958052054319980, -0.998955768914830730, -0.998953483277951970, -0.998951195143689570, -0.998948904512049210, -0.998946611383036640, -0.998944315756657430, +-0.998942017632917460, -0.998939717011822490, -0.998937413893378200, -0.998935108277590360, -0.998932800164464730, -0.998930489554007090, -0.998928176446223340, -0.998925860841119010, +-0.998923542738700100, -0.998921222138972280, -0.998918899041941530, -0.998916573447613420, -0.998914245355993930, -0.998911914767088850, -0.998909581680903940, -0.998907246097445080, +-0.998904908016718050, -0.998902567438728850, -0.998900224363483140, -0.998897878790986900, -0.998895530721246040, -0.998893180154266200, -0.998890827090053500, -0.998888471528613820, +-0.998886113469952820, -0.998883752914076610, -0.998881389860991060, -0.998879024310701970, -0.998876656263215310, -0.998874285718536980, -0.998871912676672970, -0.998869537137629270, +-0.998867159101411660, -0.998864778568026130, -0.998862395537478690, -0.998860010009775200, -0.998857621984921670, -0.998855231462924210, -0.998852838443788580, -0.998850442927520900, +-0.998848044914127040, -0.998845644403613120, -0.998843241395985130, -0.998840835891248950, -0.998838427889410800, -0.998836017390476450, -0.998833604394452120, -0.998831188901343810, +-0.998828770911157520, -0.998826350423899220, -0.998823927439575040, -0.998821501958191190, -0.998819073979753450, -0.998816643504268130, -0.998814210531741130, -0.998811775062178550, +-0.998809337095586610, -0.998806896631971310, -0.998804453671338850, -0.998802008213695140, -0.998799560259046480, -0.998797109807398890, -0.998794656858758460, -0.998792201413131520, +-0.998789743470523960, -0.998787283030942110, -0.998784820094392070, -0.998782354660879950, -0.998779886730411960, -0.998777416302994210, -0.998774943378632930, -0.998772467957334320, +-0.998769990039104600, -0.998767509623949780, -0.998765026711876280, -0.998762541302890110, -0.998760053396997690, -0.998757562994205150, -0.998755070094518580, -0.998752574697944430, +-0.998750076804488800, -0.998747576414158010, -0.998745073526958290, -0.998742568142895860, -0.998740060261977040, -0.998737549884208040, -0.998735037009595210, -0.998732521638144740, +-0.998730003769862980, -0.998727483404756140, -0.998724960542830660, -0.998722435184092760, -0.998719907328548870, -0.998717376976205110, -0.998714844127067900, -0.998712308781143590, +-0.998709770938438600, -0.998707230598959050, -0.998704687762711480, -0.998702142429702230, -0.998699594599937620, -0.998697044273423980, -0.998694491450167750, -0.998691936130175260, +-0.998689378313452950, -0.998686818000007250, -0.998684255189844490, -0.998681689882971010, -0.998679122079393360, -0.998676551779117960, -0.998673978982151040, -0.998671403688499270, +-0.998668825898168970, -0.998666245611166680, -0.998663662827498740, -0.998661077547171590, -0.998658489770191780, -0.998655899496565750, -0.998653306726299930, -0.998650711459400870, +-0.998648113695875030, -0.998645513435728940, -0.998642910678969040, -0.998640305425601780, -0.998637697675633930, -0.998635087429071700, -0.998632474685921760, -0.998629859446190760, +-0.998627241709884930, -0.998624621477011140, -0.998621998747575730, -0.998619373521585360, -0.998616745799046470, -0.998614115579965820, -0.998611482864349860, -0.998608847652205140, +-0.998606209943538330, -0.998603569738356070, -0.998600927036664810, -0.998598281838471210, -0.998595634143781940, -0.998592983952603650, -0.998590331264942790, -0.998587676080806120, +-0.998585018400200310, -0.998582358223131910, -0.998579695549607680, -0.998577030379634190, -0.998574362713218090, -0.998571692550366040, -0.998569019891084820, -0.998566344735381080, +-0.998563667083261500, -0.998560986934732610, -0.998558304289801410, -0.998555619148474350, -0.998552931510758300, -0.998550241376659820, -0.998547548746185900, -0.998544853619342980, +-0.998542155996137940, -0.998539455876577550, -0.998536753260668600, -0.998534048148417620, -0.998531340539831610, -0.998528630434917130, -0.998525917833681160, -0.998523202736130490, +-0.998520485142271650, -0.998517765052111650, -0.998515042465657250, -0.998512317382915350, -0.998509589803892480, -0.998506859728595760, -0.998504127157031850, -0.998501392089207630, +-0.998498654525129870, -0.998495914464805570, -0.998493171908241380, -0.998490426855444310, -0.998487679306421240, -0.998484929261178930, -0.998482176719724280, -0.998479421682064160, +-0.998476664148205460, -0.998473904118155180, -0.998471141591920070, -0.998468376569507270, -0.998465609050923300, -0.998462839036175500, -0.998460066525270530, -0.998457291518215380, +-0.998454514015016950, -0.998451734015682320, -0.998448951520218290, -0.998446166528631940, -0.998443379040930170, -0.998440589057119960, -0.998437796577208210, -0.998435001601202020, +-0.998432204129108380, -0.998429404160934180, -0.998426601696686400, -0.998423796736372160, -0.998420989279998450, -0.998418179327572260, -0.998415366879100710, -0.998412551934590550, +-0.998409734494049130, -0.998406914557483430, -0.998404092124900330, -0.998401267196307060, -0.998398439771710610, -0.998395609851118080, -0.998392777434536470, -0.998389942521973000, +-0.998387105113434650, -0.998384265208928530, -0.998381422808461650, -0.998378577912041320, -0.998375730519674540, -0.998372880631368420, -0.998370028247130060, -0.998367173366966680, +-0.998364315990885380, -0.998361456118893260, -0.998358593750997450, -0.998355728887205250, -0.998352861527523670, -0.998349991671960040, -0.998347119320521340, -0.998344244473214790, +-0.998341367130047730, -0.998338487291027140, -0.998335604956160470, -0.998332720125454710, -0.998329832798917180, -0.998326942976555000, -0.998324050658375480, -0.998321155844385970, +-0.998318258534593440, -0.998315358729005230, -0.998312456427628780, -0.998309551630471080, -0.998306644337539460, -0.998303734548841360, -0.998300822264383770, -0.998297907484174240, +-0.998294990208219880, -0.998292070436528120, -0.998289148169106080, -0.998286223405961290, -0.998283296147100870, -0.998280366392532150, -0.998277434142262670, -0.998274499396299530, +-0.998271562154650070, -0.998268622417321730, -0.998265680184321940, -0.998262735455657910, -0.998259788231336990, -0.998256838511366600, -0.998253886295754180, -0.998250931584506950, +-0.998247974377632460, -0.998245014675138040, -0.998242052477031020, -0.998239087783318930, -0.998236120594009120, -0.998233150909108910, -0.998230178728625960, -0.998227204052567480, +-0.998224226880941030, -0.998221247213754050, -0.998218265051013850, -0.998215280392728000, -0.998212293238904040, -0.998209303589549290, -0.998206311444671310, -0.998203316804277540, +-0.998200319668375410, -0.998197320036972590, -0.998194317910076400, -0.998191313287694500, -0.998188306169834230, -0.998185296556503230, -0.998182284447708960, -0.998179269843458950, +-0.998176252743760870, -0.998173233148622050, -0.998170211058050260, -0.998167186472052830, -0.998164159390637520, -0.998161129813811780, -0.998158097741583260, -0.998155063173959410, +-0.998152026110948000, -0.998148986552556460, -0.998145944498792460, -0.998142899949663540, -0.998139852905177480, -0.998136803365341720, -0.998133751330164020, -0.998130696799651830, +-0.998127639773813020, -0.998124580252655050, -0.998121518236185670, -0.998118453724412440, -0.998115386717343120, -0.998112317214985280, -0.998109245217346670, -0.998106170724434970, +-0.998103093736257830, -0.998100014252822910, -0.998096932274137980, -0.998093847800210820, -0.998090760831048970, -0.998087671366660210, -0.998084579407052200, -0.998081484952232810, +-0.998078388002209720, -0.998075288556990680, -0.998072186616583370, -0.998069082180995660, -0.998065975250235220, -0.998062865824309810, -0.998059753903227210, -0.998056639486995300, +-0.998053522575621740, -0.998050403169114420, -0.998047281267481100, -0.998044156870729450, -0.998041029978867570, -0.998037900591903000, -0.998034768709843760, -0.998031634332697480, +-0.998028497460472290, -0.998025358093175720, -0.998022216230815770, -0.998019071873400330, -0.998015925020937170, -0.998012775673434270, -0.998009623830899420, -0.998006469493340380, +-0.998003312660765250, -0.998000153333181930, -0.997996991510598060, -0.997993827193021880, -0.997990660380461030, -0.997987491072923500, -0.997984319270417310, -0.997981144972950320, +-0.997977968180530420, -0.997974788893165600, -0.997971607110863860, -0.997968422833633070, -0.997965236061481240, -0.997962046794416360, -0.997958855032446300, -0.997955660775579180, +-0.997952464023822760, -0.997949264777185260, -0.997946063035674680, -0.997942858799298890, -0.997939652068065900, -0.997936442841983800, -0.997933231121060690, -0.997930016905304360, +-0.997926800194723020, -0.997923580989324770, -0.997920359289117490, -0.997917135094109290, -0.997913908404308380, -0.997910679219722540, -0.997907447540360090, -0.997904213366229030, +-0.997900976697337460, -0.997897737533693370, -0.997894495875304990, -0.997891251722180290, -0.997888005074327510, -0.997884755931754740, -0.997881504294470090, -0.997878250162481660, +-0.997874993535797670, -0.997871734414426110, -0.997868472798375210, -0.997865208687653160, -0.997861942082268080, -0.997858672982228190, -0.997855401387541590, -0.997852127298216480, +-0.997848850714260990, -0.997845571635683440, -0.997842290062491920, -0.997839005994694770, -0.997835719432299980, -0.997832430375315990, -0.997829138823750910, -0.997825844777612940, +-0.997822548236910410, -0.997819249201651440, -0.997815947671844450, -0.997812643647497440, -0.997809337128618970, -0.997806028115217130, -0.997802716607300130, -0.997799402604876430, +-0.997796086107954230, -0.997792767116541750, -0.997789445630647310, -0.997786121650279360, -0.997782795175446100, -0.997779466206155760, -0.997776134742416890, -0.997772800784237580, +-0.997769464331626280, -0.997766125384591420, -0.997762783943141110, -0.997759440007283890, -0.997756093577028100, -0.997752744652382060, -0.997749393233354210, -0.997746039319952760, +-0.997742682912186260, -0.997739324010063160, -0.997735962613591650, -0.997732598722780200, -0.997729232337637330, -0.997725863458171380, -0.997722492084390680, -0.997719118216303770, +-0.997715741853919200, -0.997712362997245080, -0.997708981646290180, -0.997705597801062830, -0.997702211461571450, -0.997698822627824500, -0.997695431299830630, -0.997692037477598050, +-0.997688641161135430, -0.997685242350451200, -0.997681841045553910, -0.997678437246451890, -0.997675030953153910, -0.997671622165668290, -0.997668210884003590, -0.997664797108168470, +-0.997661380838171240, -0.997657962074020580, -0.997654540815725130, -0.997651117063293240, -0.997647690816733550, -0.997644262076054610, -0.997640830841264980, -0.997637397112373430, +-0.997633960889388270, -0.997630522172318180, -0.997627080961171920, -0.997623637255957820, -0.997620191056684760, -0.997616742363361060, -0.997613291175995620, -0.997609837494596970, +-0.997606381319173670, -0.997602922649734380, -0.997599461486287860, -0.997595997828842670, -0.997592531677407470, -0.997589063031991020, -0.997585591892601760, -0.997582118259248580, +-0.997578642131940140, -0.997575163510685090, -0.997571682395492100, -0.997568198786369930, -0.997564712683327360, -0.997561224086372820, -0.997557732995515310, -0.997554239410763490, +-0.997550743332126120, -0.997547244759611760, -0.997543743693229400, -0.997540240132987590, -0.997536734078895200, -0.997533225530961020, -0.997529714489193810, -0.997526200953602230, +-0.997522684924195160, -0.997519166400981370, -0.997515645383969750, -0.997512121873168960, -0.997508595868587870, -0.997505067370235250, -0.997501536378120000, -0.997498002892250880, +-0.997494466912636770, -0.997490928439286550, -0.997487387472209000, -0.997483844011412880, -0.997480298056907190, -0.997476749608700810, -0.997473198666802510, -0.997469645231221280, +-0.997466089301965900, -0.997462530879045240, -0.997458969962468300, -0.997455406552243960, -0.997451840648381110, -0.997448272250888610, -0.997444701359775480, -0.997441127975050470, +-0.997437552096722800, -0.997433973724801140, -0.997430392859294580, -0.997426809500212120, -0.997423223647562530, -0.997419635301354910, -0.997416044461598260, -0.997412451128301460, +-0.997408855301473500, -0.997405256981123370, -0.997401656167260180, -0.997398052859892800, -0.997394447059030350, -0.997390838764681710, -0.997387227976856080, -0.997383614695562250, +-0.997379998920809420, -0.997376380652606590, -0.997372759890962860, -0.997369136635887220, -0.997365510887388780, -0.997361882645476430, -0.997358251910159480, -0.997354618681446920, +-0.997350982959347760, -0.997347344743871100, -0.997343704035026150, -0.997340060832821900, -0.997336415137267560, -0.997332766948372140, -0.997329116266144730, -0.997325463090594670, +-0.997321807421730820, -0.997318149259562530, -0.997314488604098880, -0.997310825455348990, -0.997307159813321960, -0.997303491678027120, -0.997299821049473570, -0.997296147927670410, +-0.997292472312626970, -0.997288794204352240, -0.997285113602855540, -0.997281430508146110, -0.997277744920233020, -0.997274056839125620, -0.997270366264833120, -0.997266673197364620, +-0.997262977636729550, -0.997259279582936920, -0.997255579035996150, -0.997251875995916470, -0.997248170462707080, -0.997244462436377210, -0.997240751916936170, -0.997237038904393300, +-0.997233323398757920, -0.997229605400039130, -0.997225884908246260, -0.997222161923388750, -0.997218436445475920, -0.997214708474516880, -0.997210978010521170, -0.997207245053497890, +-0.997203509603456610, -0.997199771660406520, -0.997196031224356960, -0.997192288295317360, -0.997188542873297060, -0.997184794958305360, -0.997181044550351730, -0.997177291649445350, +-0.997173536255595900, -0.997169778368812600, -0.997166017989104760, -0.997162255116481930, -0.997158489750953450, -0.997154721892528740, -0.997150951541217250, -0.997147178697028400, +-0.997143403359971540, -0.997139625530056200, -0.997135845207291820, -0.997132062391687720, -0.997128277083253580, -0.997124489281998700, -0.997120698987932650, -0.997116906201064860, +-0.997113110921404750, -0.997109313148961900, -0.997105512883745710, -0.997101710125765760, -0.997097904875031580, -0.997094097131552610, -0.997090286895338410, -0.997086474166398510, +-0.997082658944742350, -0.997078841230379600, -0.997075021023319690, -0.997071198323572270, -0.997067373131146910, -0.997063545446053020, -0.997059715268300280, -0.997055882597898350, +-0.997052047434856650, -0.997048209779184850, -0.997044369630892490, -0.997040526989989240, -0.997036681856484640, -0.997032834230388350, -0.997028984111709930, -0.997025131500459130, +-0.997021276396645510, -0.997017418800278610, -0.997013558711368210, -0.997009696129923960, -0.997005831055955420, -0.997001963489472340, -0.996998093430484290, -0.996994220879001030, +-0.996990345835032210, -0.996986468298587500, -0.996982588269676670, -0.996978705748309380, -0.996974820734495280, -0.996970933228244150, -0.996967043229565750, -0.996963150738469640, +-0.996959255754965800, -0.996955358279063670, -0.996951458310773140, -0.996947555850104080, -0.996943650897066050, -0.996939743451668910, -0.996935833513922450, -0.996931921083836330, +-0.996928006161420520, -0.996924088746684590, -0.996920168839638520, -0.996916246440291980, -0.996912321548654830, -0.996908394164736870, -0.996904464288547840, -0.996900531920097750, +-0.996896597059396370, -0.996892659706453470, -0.996888719861278920, -0.996884777523882490, -0.996880832694274190, -0.996876885372463770, -0.996872935558461130, -0.996868983252276240, +-0.996865028453918780, -0.996861071163398840, -0.996857111380726190, -0.996853149105910830, -0.996849184338962520, -0.996845217079891270, -0.996841247328706940, -0.996837275085419530, +-0.996833300350038920, -0.996829323122575000, -0.996825343403037860, -0.996821361191437380, -0.996817376487783460, -0.996813389292086070, -0.996809399604355220, -0.996805407424600890, +-0.996801412752832960, -0.996797415589061650, -0.996793415933296730, -0.996789413785548200, -0.996785409145826250, -0.996781402014140670, -0.996777392390501670, -0.996773380274919130, +-0.996769365667403260, -0.996765348567963840, -0.996761328976611070, -0.996757306893355070, -0.996753282318205700, -0.996749255251173190, -0.996745225692267530, -0.996741193641498710, +-0.996737159098877060, -0.996733122064412450, -0.996729082538114990, -0.996725040519994890, -0.996720996010062140, -0.996716949008326970, -0.996712899514799360, -0.996708847529489520, +-0.996704793052407560, -0.996700736083563580, -0.996696676622967790, -0.996692614670630310, -0.996688550226561330, -0.996684483290770970, -0.996680413863269330, -0.996676341944066730, +-0.996672267533173280, -0.996668190630599080, -0.996664111236354460, -0.996660029350449620, -0.996655944972894670, -0.996651858103699830, -0.996647768742875310, -0.996643676890431430, +-0.996639582546378300, -0.996635485710726240, -0.996631386383485470, -0.996627284564666320, -0.996623180254278870, -0.996619073452333470, -0.996614964158840430, -0.996610852373809860, +-0.996606738097252310, -0.996602621329177870, -0.996598502069596880, -0.996594380318519550, -0.996590256075956420, -0.996586129341917480, -0.996582000116413290, -0.996577868399454170, +-0.996573734191050330, -0.996569597491212100, -0.996565458299949910, -0.996561316617274100, -0.996557172443194970, -0.996553025777722980, -0.996548876620868330, -0.996544724972641570, +-0.996540570833052920, -0.996536414202112920, -0.996532255079831900, -0.996528093466220180, -0.996523929361288200, -0.996519762765046500, -0.996515593677505310, -0.996511422098675160, +-0.996507248028566380, -0.996503071467189640, -0.996498892414555030, -0.996494710870673320, -0.996490526835554840, -0.996486340309210020, -0.996482151291649300, -0.996477959782883230, +-0.996473765782922350, -0.996469569291776880, -0.996465370309457700, -0.996461168835974910, -0.996456964871339280, -0.996452758415561250, -0.996448549468651250, -0.996444338030619940, +-0.996440124101477750, -0.996435907681235360, -0.996431688769903070, -0.996427467367491660, -0.996423243474011460, -0.996419017089473220, -0.996414788213887510, -0.996410556847264760, +-0.996406322989615510, -0.996402086640950650, -0.996397847801280490, -0.996393606470615700, -0.996389362648966830, -0.996385116336344630, -0.996380867532759670, -0.996376616238222490, +-0.996372362452743740, -0.996368106176334200, -0.996363847409004300, -0.996359586150764810, -0.996355322401626280, -0.996351056161599580, -0.996346787430695160, -0.996342516208923780, +-0.996338242496296100, -0.996333966292822890, -0.996329687598514700, -0.996325406413382300, -0.996321122737436340, -0.996316836570687590, -0.996312547913146830, -0.996308256764824600, +-0.996303963125731770, -0.996299666995879020, -0.996295368375277210, -0.996291067263936790, -0.996286763661868860, -0.996282457569083960, -0.996278148985592860, -0.996273837911406450, +-0.996269524346535480, -0.996265208290990630, -0.996260889744782880, -0.996256568707922780, -0.996252245180421330, -0.996247919162289160, -0.996243590653537290, -0.996239259654176480, +-0.996234926164217380, -0.996230590183671110, -0.996226251712548310, -0.996221910750859860, -0.996217567298616660, -0.996213221355829460, -0.996208872922509260, -0.996204521998666940, +-0.996200168584313260, -0.996195812679459220, -0.996191454284115600, -0.996187093398293370, -0.996182730022003300, -0.996178364155256510, -0.996173995798063760, -0.996169624950436040, +-0.996165251612384340, -0.996160875783919430, -0.996156497465052300, -0.996152116655793950, -0.996147733356155360, -0.996143347566147420, -0.996138959285781000, -0.996134568515067320, +-0.996130175254017150, -0.996125779502641580, -0.996121381260951620, -0.996116980528958030, -0.996112577306672130, -0.996108171594104810, -0.996103763391266940, -0.996099352698169740, +-0.996094939514824200, -0.996090523841241190, -0.996086105677431940, -0.996081685023407440, -0.996077261879178670, -0.996072836244756840, -0.996068408120152850, -0.996063977505377900, +-0.996059544400442860, -0.996055108805359080, -0.996050670720137530, -0.996046230144789320, -0.996041787079325450, -0.996037341523757220, -0.996032893478095540, -0.996028442942351710, +-0.996023989916536730, -0.996019534400661710, -0.996015076394737960, -0.996010615898776490, -0.996006152912788490, -0.996001687436785080, -0.995997219470777460, -0.995992749014776750, +-0.995988276068794250, -0.995983800632840980, -0.995979322706928240, -0.995974842291067250, -0.995970359385269120, -0.995965873989545060, -0.995961386103906390, -0.995956895728364100, +-0.995952402862929740, -0.995947907507614310, -0.995943409662429110, -0.995938909327385380, -0.995934406502494320, -0.995929901187767360, -0.995925393383215620, -0.995920883088850300, +-0.995916370304682830, -0.995911855030724440, -0.995907337266986440, -0.995902817013480160, -0.995898294270216700, -0.995893769037207610, -0.995889241314463990, -0.995884711101997390, +-0.995880178399818900, -0.995875643207939980, -0.995871105526372040, -0.995866565355126300, -0.995862022694214090, -0.995857477543646840, -0.995852929903435990, -0.995848379773592750, +-0.995843827154128450, -0.995839272045054740, -0.995834714446382830, -0.995830154358124050, -0.995825591780289950, -0.995821026712891850, -0.995816459155941190, -0.995811889109449400, +-0.995807316573427910, -0.995802741547888060, -0.995798164032841380, -0.995793584028299320, -0.995789001534273300, -0.995784416550774760, -0.995779829077815150, -0.995775239115406000, +-0.995770646663558750, -0.995766051722284830, -0.995761454291595900, -0.995756854371503300, -0.995752251962018440, -0.995747647063153110, -0.995743039674918620, -0.995738429797326410, +-0.995733817430388250, -0.995729202574115570, -0.995724585228519810, -0.995719965393612630, -0.995715343069405460, -0.995710718255910070, -0.995706090953137780, -0.995701461161100250, +-0.995696828879809150, -0.995692194109275900, -0.995687556849512160, -0.995682917100529590, -0.995678274862339730, -0.995673630134954140, -0.995668982918384460, -0.995664333212642470, +-0.995659681017739500, -0.995655026333687300, -0.995650369160497650, -0.995645709498181990, -0.995641047346752070, -0.995636382706219570, -0.995631715576596130, -0.995627045957893420, +-0.995622373850122980, -0.995617699253296680, -0.995613022167426090, -0.995608342592523070, -0.995603660528599050, -0.995598975975665930, -0.995594288933735360, -0.995589599402819100, +-0.995584907382928820, -0.995580212874076280, -0.995575515876273240, -0.995570816389531380, -0.995566114413862450, -0.995561409949278220, -0.995556702995790580, -0.995551993553411060, +-0.995547281622151560, -0.995542567202023940, -0.995537850293039870, -0.995533130895211120, -0.995528409008549660, -0.995523684633067060, -0.995518957768775300, -0.995514228415686150, +-0.995509496573811380, -0.995504762243162980, -0.995500025423752600, -0.995495286115592130, -0.995490544318693440, -0.995485800033068520, -0.995481053258728930, -0.995476303995686870, +-0.995471552243953890, -0.995466798003542100, -0.995462041274463360, -0.995457282056729450, -0.995452520350352370, -0.995447756155343980, -0.995442989471716280, -0.995438220299481040, +-0.995433448638650240, -0.995428674489235780, -0.995423897851249630, -0.995419118724703790, -0.995414337109610140, -0.995409553005980660, -0.995404766413827360, -0.995399977333161990, +-0.995395185763996770, -0.995390391706343580, -0.995385595160214410, -0.995380796125621250, -0.995375994602576090, -0.995371190591091030, -0.995366384091177950, -0.995361575102848840, +-0.995356763626115800, -0.995351949660990940, -0.995347133207486130, -0.995342314265613480, -0.995337492835385080, -0.995332668916812930, -0.995327842509909130, -0.995323013614685670, +-0.995318182231154760, -0.995313348359328390, -0.995308511999218550, -0.995303673150837560, -0.995298831814197320, -0.995293987989310010, -0.995289141676187650, -0.995284292874842550, +-0.995279441585286690, -0.995274587807532200, -0.995269731541591260, -0.995264872787476000, -0.995260011545198500, -0.995255147814771090, -0.995250281596205770, -0.995245412889514620, +-0.995240541694710100, -0.995235668011804190, -0.995230791840808980, -0.995225913181736920, -0.995221032034600110, -0.995216148399410640, -0.995211262276180840, -0.995206373664922820, +-0.995201482565648890, -0.995196588978371270, -0.995191692903102280, -0.995186794339853910, -0.995181893288638600, -0.995176989749468550, -0.995172083722356100, -0.995167175207313350, +-0.995162264204352720, -0.995157350713486320, -0.995152434734726700, -0.995147516268085840, -0.995142595313576290, -0.995137671871210270, -0.995132745940999990, -0.995127817522957980, +-0.995122886617096250, -0.995117953223427440, -0.995113017341963670, -0.995108078972717360, -0.995103138115700950, -0.995098194770926540, -0.995093248938406780, -0.995088300618153900, +-0.995083349810180100, -0.995078396514498140, -0.995073440731120030, -0.995068482460058410, -0.995063521701325500, -0.995058558454933850, -0.995053592720895770, -0.995048624499223820, +-0.995043653789930200, -0.995038680593027470, -0.995033704908528050, -0.995028726736444380, -0.995023746076788780, -0.995018762929573920, -0.995013777294812110, -0.995008789172515900, +-0.995003798562697720, -0.994998805465370010, -0.994993809880545310, -0.994988811808236060, -0.994983811248454810, -0.994978808201213980, -0.994973802666526240, -0.994968794644403910, +-0.994963784134859640, -0.994958771137905870, -0.994953755653555150, -0.994948737681820130, -0.994943717222713130, -0.994938694276246930, -0.994933668842434060, -0.994928640921286860, +-0.994923610512818190, -0.994918577617040390, -0.994913542233966220, -0.994908504363608230, -0.994903464005978840, -0.994898421161090950, -0.994893375828956870, -0.994888328009589480, +-0.994883277703001110, -0.994878224909204740, -0.994873169628212590, -0.994868111860037650, -0.994863051604692460, -0.994857988862189570, -0.994852923632541740, -0.994847855915761640, +-0.994842785711861800, -0.994837713020855110, -0.994832637842754110, -0.994827560177571460, -0.994822480025319920, -0.994817397386012160, -0.994812312259660940, -0.994807224646279020, +-0.994802134545878960, -0.994797041958473520, -0.994791946884075570, -0.994786849322697670, -0.994781749274352700, -0.994776646739053310, -0.994771541716812370, -0.994766434207642550, +-0.994761324211556610, -0.994756211728567430, -0.994751096758687670, -0.994745979301930090, -0.994740859358307690, -0.994735736927833130, -0.994730612010519160, -0.994725484606378770, +-0.994720354715424530, -0.994715222337669510, -0.994710087473126390, -0.994704950121808040, -0.994699810283727340, -0.994694667958897160, -0.994689523147330170, -0.994684375849039460, +-0.994679226064037800, -0.994674073792338190, -0.994668919033953270, -0.994663761788896040, -0.994658602057179490, -0.994653439838816380, -0.994648275133819700, -0.994643107942202230, +-0.994637938263977060, -0.994632766099157070, -0.994627591447755140, -0.994622414309784260, -0.994617234685257310, -0.994612052574187390, -0.994606867976587150, -0.994601680892469920, +-0.994596491321848350, -0.994591299264735660, -0.994586104721144610, -0.994580907691088310, -0.994575708174579850, -0.994570506171632010, -0.994565301682257990, -0.994560094706470670, +-0.994554885244283150, -0.994549673295708310, -0.994544458860759480, -0.994539241939449310, -0.994534022531791130, -0.994528800637797920, -0.994523576257482670, -0.994518349390858480, +-0.994513120037938350, -0.994507888198735480, -0.994502653873262870, -0.994497417061533720, -0.994492177763560910, -0.994486935979357780, -0.994481691708937190, -0.994476444952312470, +-0.994471195709496490, -0.994465943980502700, -0.994460689765343960, -0.994455433064033500, -0.994450173876584410, -0.994444912203010010, -0.994439648043323190, -0.994434381397537370, +-0.994429112265665550, -0.994423840647720940, -0.994418566543716740, -0.994413289953666070, -0.994408010877582240, -0.994402729315478350, -0.994397445267367620, -0.994392158733263360, +-0.994386869713178690, -0.994381578207126800, -0.994376284215120920, -0.994370987737174360, -0.994365688773300450, -0.994360387323512170, -0.994355083387822970, -0.994349776966246050, +-0.994344468058794730, -0.994339156665482230, -0.994333842786321860, -0.994328526421326850, -0.994323207570510510, -0.994317886233886170, -0.994312562411467040, -0.994307236103266660, +-0.994301907309298130, -0.994296576029574770, -0.994291242264109920, -0.994285906012917110, -0.994280567276009440, -0.994275226053400460, -0.994269882345103270, -0.994264536151131530, +-0.994259187471498330, -0.994253836306217220, -0.994248482655301520, -0.994243126518764560, -0.994237767896619880, -0.994232406788880700, -0.994227043195560540, -0.994221677116672750, +-0.994216308552230750, -0.994210937502247980, -0.994205563966737870, -0.994200187945713960, -0.994194809439189480, -0.994189428447177950, -0.994184044969692930, -0.994178659006747730, +-0.994173270558355910, -0.994167879624530900, -0.994162486205286240, -0.994157090300635260, -0.994151691910591720, -0.994146291035168830, -0.994140887674380250, -0.994135481828239410, +-0.994130073496759860, -0.994124662679955250, -0.994119249377838910, -0.994113833590424380, -0.994108415317725310, -0.994102994559755260, -0.994097571316527650, -0.994092145588056140, +-0.994086717374354280, -0.994081286675435600, -0.994075853491313670, -0.994070417822002230, -0.994064979667514610, -0.994059539027864590, -0.994054095903065700, -0.994048650293131720, +-0.994043202198075960, -0.994037751617912190, -0.994032298552654070, -0.994026843002315250, -0.994021384966909280, -0.994015924446449930, -0.994010461440950620, -0.994004995950425240, +-0.993999527974887440, -0.993994057514350770, -0.993988584568828880, -0.993983109138335540, -0.993977631222884520, -0.993972150822489350, -0.993966667937163820, -0.993961182566921670, +-0.993955694711776470, -0.993950204371742090, -0.993944711546832280, -0.993939216237060500, -0.993933718442440830, -0.993928218162986820, -0.993922715398712240, -0.993917210149630970, +-0.993911702415756550, -0.993906192197102970, -0.993900679493683880, -0.993895164305513060, -0.993889646632604370, -0.993884126474971490, -0.993878603832628380, -0.993873078705588720, +-0.993867551093866370, -0.993862020997475120, -0.993856488416428930, -0.993850953350741360, -0.993845415800426510, -0.993839875765498150, -0.993834333245969930, -0.993828788241856050, +-0.993823240753170080, -0.993817690779926100, -0.993812138322137880, -0.993806583379819310, -0.993801025952984250, -0.993795466041646700, -0.993789903645820430, -0.993784338765519410, +-0.993778771400757430, -0.993773201551548690, -0.993767629217906840, -0.993762054399846000, -0.993756477097380020, -0.993750897310522800, -0.993745315039288310, -0.993739730283690560, +-0.993734143043743520, -0.993728553319461080, -0.993722961110857340, -0.993717366417946060, -0.993711769240741450, -0.993706169579257390, -0.993700567433507990, -0.993694962803507110, +-0.993689355689268860, -0.993683746090807120, -0.993678134008136090, -0.993672519441269660, -0.993666902390222040, -0.993661282855007100, -0.993655660835638940, -0.993650036332131670, +-0.993644409344499270, -0.993638779872755950, -0.993633147916915590, -0.993627513476992300, -0.993621876553000270, -0.993616237144953620, -0.993610595252866320, -0.993604950876752600, +-0.993599304016626440, -0.993593654672502050, -0.993588002844393410, -0.993582348532314860, -0.993576691736280490, -0.993571032456304290, -0.993565370692400580, -0.993559706444583470, +-0.993554039712867040, -0.993548370497265520, -0.993542698797793000, -0.993537024614463800, -0.993531347947292030, -0.993525668796292010, -0.993519987161477600, -0.993514303042863370, +-0.993508616440463400, -0.993502927354291800, -0.993497235784362890, -0.993491541730690990, -0.993485845193290080, -0.993480146172174730, -0.993474444667358900, -0.993468740678856930, +-0.993463034206683250, -0.993457325250851840, -0.993451613811377250, -0.993445899888273480, -0.993440183481555050, -0.993434464591236190, -0.993428743217331100, -0.993423019359854220, +-0.993417293018819760, -0.993411564194242040, -0.993405832886135380, -0.993400099094514210, -0.993394362819392750, -0.993388624060785430, -0.993382882818706460, -0.993377139093170380, +-0.993371392884191410, -0.993365644191783970, -0.993359893015962390, -0.993354139356741220, -0.993348383214134540, -0.993342624588156920, -0.993336863478822770, -0.993331099886146540, +-0.993325333810142430, -0.993319565250824990, -0.993313794208208760, -0.993308020682307950, -0.993302244673137100, -0.993296466180710660, -0.993290685205043040, -0.993284901746148700, +-0.993279115804042160, -0.993273327378737750, -0.993267536470250010, -0.993261743078593500, -0.993255947203782630, -0.993250148845831850, -0.993244348004755810, -0.993238544680568710, +-0.993232738873285450, -0.993226930582920220, -0.993221119809487680, -0.993215306553002390, -0.993209490813478760, -0.993203672590931450, -0.993197851885374900, -0.993192028696823770, +-0.993186203025292590, -0.993180374870795910, -0.993174544233348280, -0.993168711112964230, -0.993162875509658430, -0.993157037423445520, -0.993151196854339950, -0.993145353802356360, +-0.993139508267509410, -0.993133660249813750, -0.993127809749283830, -0.993121956765934510, -0.993116101299780120, -0.993110243350835640, -0.993104382919115510, -0.993098520004634390, +-0.993092654607407030, -0.993086786727447990, -0.993080916364772030, -0.993075043519393690, -0.993069168191327840, -0.993063290380589050, -0.993057410087191950, -0.993051527311151430, +-0.993045642052482020, -0.993039754311198510, -0.993033864087315640, -0.993027971380848080, -0.993022076191810710, -0.993016178520218060, -0.993010278366084910, -0.993004375729426130, +-0.992998470610256370, -0.992992563008590510, -0.992986652924443210, -0.992980740357829240, -0.992974825308763460, -0.992968907777260550, -0.992962987763335470, -0.992957065267002890, +-0.992951140288277580, -0.992945212827174520, -0.992939282883708360, -0.992933350457893990, -0.992927415549746280, -0.992921478159280000, -0.992915538286510020, -0.992909595931451340, +-0.992903651094118490, -0.992897703774526570, -0.992891753972690360, -0.992885801688624840, -0.992879846922344770, -0.992873889673865140, -0.992867929943200720, -0.992861967730366500, +-0.992856003035377350, -0.992850035858248160, -0.992844066198993900, -0.992838094057629570, -0.992832119434169820, -0.992826142328629980, -0.992820162741024580, -0.992814180671368950, +-0.992808196119677740, -0.992802209085966170, -0.992796219570248990, -0.992790227572541210, -0.992784233092858020, -0.992778236131214080, -0.992772236687624600, -0.992766234762104570, +-0.992760230354668980, -0.992754223465332710, -0.992748214094110960, -0.992742202241018720, -0.992736187906070880, -0.992730171089282630, -0.992724151790668970, -0.992718130010244780, +-0.992712105748025490, -0.992706079004025740, -0.992700049778260870, -0.992694018070745860, -0.992687983881495930, -0.992681947210525830, -0.992675908057851000, -0.992669866423486420, +-0.992663822307447100, -0.992657775709748220, -0.992651726630404910, -0.992645675069432350, -0.992639621026845550, -0.992633564502659720, -0.992627505496889940, -0.992621444009551430, +-0.992615380040659300, -0.992609313590228750, -0.992603244658274870, -0.992597173244812890, -0.992591099349858010, -0.992585022973425320, -0.992578944115530050, -0.992572862776187500, +-0.992566778955412790, -0.992560692653221110, -0.992554603869627680, -0.992548512604647830, -0.992542418858296640, -0.992536322630589330, -0.992530223921541330, -0.992524122731167750, +-0.992518019059483780, -0.992511912906504870, -0.992505804272246110, -0.992499693156722820, -0.992493579559950320, -0.992487463481943940, -0.992481344922718890, -0.992475223882290370, +-0.992469100360673820, -0.992462974357884550, -0.992456845873937900, -0.992450714908849060, -0.992444581462633480, -0.992438445535306470, -0.992432307126883240, -0.992426166237379340, +-0.992420022866809970, -0.992413877015190570, -0.992407728682536460, -0.992401577868863070, -0.992395424574185720, -0.992389268798519740, -0.992383110541880660, -0.992376949804283810, +-0.992370786585744510, -0.992364620886278410, -0.992358452705900620, -0.992352282044626670, -0.992346108902472100, -0.992339933279452250, -0.992333755175582530, -0.992327574590878500, +-0.992321391525355370, -0.992315205979028890, -0.992309017951914400, -0.992302827444027310, -0.992296634455383190, -0.992290438985997450, -0.992284241035885640, -0.992278040605063190, +-0.992271837693545770, -0.992265632301348570, -0.992259424428487470, -0.992253214074977690, -0.992247001240834870, -0.992240785926074560, -0.992234568130712310, -0.992228347854763660, +-0.992222125098244150, -0.992215899861169310, -0.992209672143554710, -0.992203441945415880, -0.992197209266768580, -0.992190974107628130, -0.992184736468010200, -0.992178496347930540, +-0.992172253747404590, -0.992166008666448110, -0.992159761105076530, -0.992153511063305520, -0.992147258541150710, -0.992141003538627890, -0.992134746055752470, -0.992128486092540120, +-0.992122223649006710, -0.992115958725167670, -0.992109691321038660, -0.992103421436635550, -0.992097149071973770, -0.992090874227069210, -0.992084596901937400, -0.992078317096594110, +-0.992072034811054990, -0.992065750045335810, -0.992059462799452340, -0.992053173073420110, -0.992046880867255010, -0.992040586180972680, -0.992034289014588900, -0.992027989368119420, +-0.992021687241579910, -0.992015382634986230, -0.992009075548354050, -0.992002765981699230, -0.991996453935037440, -0.991990139408384540, -0.991983822401756310, -0.991977502915168510, +-0.991971180948637010, -0.991964856502177470, -0.991958529575805880, -0.991952200169537890, -0.991945868283389380, -0.991939533917376210, -0.991933197071514280, -0.991926857745819350, +-0.991920515940307170, -0.991914171654993850, -0.991907824889894930, -0.991901475645026620, -0.991895123920404460, -0.991888769716044670, -0.991882413031962780, -0.991876053868175010, +-0.991869692224697010, -0.991863328101544760, -0.991856961498734260, -0.991850592416281370, -0.991844220854201990, -0.991837846812511970, -0.991831470291227420, -0.991825091290364110, +-0.991818709809938140, -0.991812325849965370, -0.991805939410461800, -0.991799550491443420, -0.991793159092926090, -0.991786765214925920, -0.991780368857458790, -0.991773970020540800, +-0.991767568704187810, -0.991761164908415930, -0.991754758633241250, -0.991748349878679550, -0.991741938644747020, -0.991735524931459560, -0.991729108738833350, -0.991722690066884400, +-0.991716268915628700, -0.991709845285082330, -0.991703419175261280, -0.991696990586181770, -0.991690559517859780, -0.991684125970311300, -0.991677689943552650, -0.991671251437599710, +-0.991664810452468570, -0.991658366988175440, -0.991651921044736430, -0.991645472622167620, -0.991639021720485130, -0.991632568339705030, -0.991626112479843560, -0.991619654140916800, +-0.991613193322940960, -0.991606730025932030, -0.991600264249906330, -0.991593795994879960, -0.991587325260869120, -0.991580852047890040, -0.991574376355958690, -0.991567898185091500, +-0.991561417535304470, -0.991554934406614020, -0.991548448799036140, -0.991541960712587160, -0.991535470147283270, -0.991528977103140700, -0.991522481580175640, -0.991515983578404430, +-0.991509483097843370, -0.991502980138508460, -0.991496474700416130, -0.991489966783582590, -0.991483456388024260, -0.991476943513757150, -0.991470428160797780, -0.991463910329162260, +-0.991457390018867010, -0.991450867229928260, -0.991444341962362310, -0.991437814216185600, -0.991431283991414340, -0.991424751288064840, -0.991418216106153440, -0.991411678445696440, +-0.991405138306710400, -0.991398595689211400, -0.991392050593215890, -0.991385503018740400, -0.991378952965801030, -0.991372400434414320, -0.991365845424596600, -0.991359287936364300, +-0.991352727969733730, -0.991346165524721320, -0.991339600601343630, -0.991333033199616850, -0.991326463319557430, -0.991319890961181890, -0.991313316124506680, -0.991306738809548120, +-0.991300159016322740, -0.991293576744846970, -0.991286991995137260, -0.991280404767210020, -0.991273815061081810, -0.991267222876769050, -0.991260628214288290, -0.991254031073655840, +-0.991247431454888470, -0.991240829358002400, -0.991234224783014260, -0.991227617729940610, -0.991221008198797880, -0.991214396189602610, -0.991207781702371450, -0.991201164737120720, +-0.991194545293867190, -0.991187923372627180, -0.991181298973417450, -0.991174672096254430, -0.991168042741154780, -0.991161410908135030, -0.991154776597211630, -0.991148139808401440, +-0.991141500541720790, -0.991134858797186440, -0.991128214574814930, -0.991121567874622910, -0.991114918696626930, -0.991108267040843650, -0.991101612907289710, -0.991094956295981770, +-0.991088297206936470, -0.991081635640170380, -0.991074971595700130, -0.991068305073542600, -0.991061636073714220, -0.991054964596231770, -0.991048290641111880, -0.991041614208371340, +-0.991034935298026660, -0.991028253910094750, -0.991021570044592130, -0.991014883701535560, -0.991008194880941830, -0.991001503582827570, -0.990994809807209660, -0.990988113554104650, +-0.990981414823529310, -0.990974713615500490, -0.990968009930034870, -0.990961303767149300, -0.990954595126860350, -0.990947884009184990, -0.990941170414139980, -0.990934454341741880, +-0.990927735792007770, -0.990921014764954310, -0.990914291260598270, -0.990907565278956510, -0.990900836820045820, -0.990894105883883050, -0.990887372470485080, -0.990880636579868580, +-0.990873898212050520, -0.990867157367047780, -0.990860414044877120, -0.990853668245555430, -0.990846919969099460, -0.990840169215526310, -0.990833415984852750, -0.990826660277095540, +-0.990819902092271780, -0.990813141430398230, -0.990806378291491870, -0.990799612675569490, -0.990792844582648160, -0.990786074012744660, -0.990779300965875960, -0.990772525442059070, +-0.990765747441310740, -0.990758966963648180, -0.990752184009088150, -0.990745398577647650, -0.990738610669343660, -0.990731820284193150, -0.990725027422213130, -0.990718232083420470, +-0.990711434267832260, -0.990704633975465490, -0.990697831206337140, -0.990691025960464210, -0.990684218237863680, -0.990677408038552640, -0.990670595362547980, -0.990663780209866900, +-0.990656962580526490, -0.990650142474543530, -0.990643319891935210, -0.990636494832718650, -0.990629667296910820, -0.990622837284528820, -0.990616004795589760, -0.990609169830110710, +-0.990602332388108690, -0.990595492469600880, -0.990588650074604280, -0.990581805203136100, -0.990574957855213320, -0.990568108030853270, -0.990561255730072920, -0.990554400952889380, +-0.990547543699319850, -0.990540683969381440, -0.990533821763091350, -0.990526957080466790, -0.990520089921524740, -0.990513220286282530, -0.990506348174757130, -0.990499473586965990, +-0.990492596522926090, -0.990485716982654860, -0.990478834966169170, -0.990471950473486460, -0.990465063504623820, -0.990458174059598570, -0.990451282138427920, -0.990444387741128970, +-0.990437490867719150, -0.990430591518215550, -0.990423689692635500, -0.990416785390996090, -0.990409878613314860, -0.990402969359608920, -0.990396057629895580, -0.990389143424192040, +-0.990382226742515640, -0.990375307584883680, -0.990368385951313490, -0.990361461841822280, -0.990354535256427470, -0.990347606195146280, -0.990340674657996130, -0.990333740644994240, +-0.990326804156158040, -0.990319865191504830, -0.990312923751051840, -0.990305979834816720, -0.990299033442816560, -0.990292084575068790, -0.990285133231590840, -0.990278179412400040, +-0.990271223117513810, -0.990264264346949590, -0.990257303100724570, -0.990250339378856430, -0.990243373181362350, -0.990236404508259890, -0.990229433359566370, -0.990222459735299320, +-0.990215483635476070, -0.990208505060114150, -0.990201524009230890, -0.990194540482843940, -0.990187554480970620, -0.990180566003628360, -0.990173575050834700, -0.990166581622607070, +-0.990159585718963010, -0.990152587339920070, -0.990145586485495550, -0.990138583155707130, -0.990131577350572220, -0.990124569070108370, -0.990117558314333120, -0.990110545083263900, +-0.990103529376918370, -0.990096511195314060, -0.990089490538468400, -0.990082467406399050, -0.990075441799123550, -0.990068413716659430, -0.990061383159024260, -0.990054350126235660, +-0.990047314618311190, -0.990040276635268390, -0.990033236177124910, -0.990026193243898400, -0.990019147835606290, -0.990012099952266470, -0.990005049593896240, -0.989997996760513480, +-0.989990941452135730, -0.989983883668780650, -0.989976823410465780, -0.989969760677208880, -0.989962695469027600, -0.989955627785939600, -0.989948557627962410, -0.989941484995114030, +-0.989934409887411770, -0.989927332304873510, -0.989920252247517010, -0.989913169715359810, -0.989906084708419680, -0.989898997226714370, -0.989891907270261550, -0.989884814839078970, +-0.989877719933184300, -0.989870622552595390, -0.989863522697329910, -0.989856420367405620, -0.989849315562840280, -0.989842208283651660, -0.989835098529857520, -0.989827986301475620, +-0.989820871598523830, -0.989813754421019710, -0.989806634768981340, -0.989799512642426380, -0.989792388041372590, -0.989785260965837850, -0.989778131415839920, -0.989770999391396680, +-0.989763864892525880, -0.989756727919245520, -0.989749588471573350, -0.989742446549527140, -0.989735302153124770, -0.989728155282384340, -0.989721005937323370, -0.989713854117959870, +-0.989706699824311810, -0.989699543056396960, -0.989692383814233300, -0.989685222097838600, -0.989678057907230850, -0.989670891242428020, -0.989663722103448000, -0.989656550490308540, +-0.989649376403027750, -0.989642199841623600, -0.989635020806113870, -0.989627839296516650, -0.989620655312849820, -0.989613468855131240, -0.989606279923379130, -0.989599088517611250, +-0.989591894637845690, -0.989584698284100340, -0.989577499456393280, -0.989570298154742510, -0.989563094379165900, -0.989555888129681650, -0.989548679406307640, -0.989541468209061970, +-0.989534254537962510, -0.989527038393027580, -0.989519819774274940, -0.989512598681722810, -0.989505375115389160, -0.989498149075291990, -0.989490920561449610, -0.989483689573879780, +-0.989476456112600820, -0.989469220177630620, -0.989461981768987480, -0.989454740886689390, -0.989447497530754340, -0.989440251701200650, -0.989433003398046300, -0.989425752621309380, +-0.989418499371008120, -0.989411243647160710, -0.989403985449785030, -0.989396724778899510, -0.989389461634522130, -0.989382196016671100, -0.989374927925364520, -0.989367657360620710, +-0.989360384322457760, -0.989353108810893780, -0.989345830825947070, -0.989338550367635850, -0.989331267435978100, -0.989323982030992250, -0.989316694152696520, -0.989309403801108990, +-0.989302110976247980, -0.989294815678131600, -0.989287517906778270, -0.989280217662206200, -0.989272914944433480, -0.989265609753478550, -0.989258302089359500, -0.989250991952094760, +-0.989243679341702540, -0.989236364258201050, -0.989229046701608830, -0.989221726671943860, -0.989214404169224570, -0.989207079193469290, -0.989199751744696320, -0.989192421822923880, +-0.989185089428170520, -0.989177754560454430, -0.989170417219793820, -0.989163077406207350, -0.989155735119713000, -0.989148390360329420, -0.989141043128074830, -0.989133693422967750, +-0.989126341245026300, -0.989118986594269000, -0.989111629470714290, -0.989104269874380490, -0.989096907805286030, -0.989089543263449330, -0.989082176248888720, -0.989074806761622630, +-0.989067434801669590, -0.989060060369047920, -0.989052683463776170, -0.989045304085872660, -0.989037922235355920, -0.989030537912244270, -0.989023151116556360, -0.989015761848310640, +-0.989008370107525400, -0.989000975894219310, -0.988993579208410690, -0.988986180050118180, -0.988978778419360330, -0.988971374316155340, -0.988963967740522090, -0.988956558692478780, +-0.988949147172044190, -0.988941733179236620, -0.988934316714074830, -0.988926897776577160, -0.988919476366762250, -0.988912052484648640, -0.988904626130254980, -0.988897197303599710, +-0.988889766004701460, -0.988882332233578800, -0.988874895990250250, -0.988867457274734460, -0.988860016087050100, -0.988852572427215690, -0.988845126295249790, -0.988837677691171150, +-0.988830226614998200, -0.988822773066749820, -0.988815317046444430, -0.988807858554100800, -0.988800397589737480, -0.988792934153373220, -0.988785468245026560, -0.988777999864716260, +-0.988770529012460990, -0.988763055688279380, -0.988755579892190100, -0.988748101624211890, -0.988740620884363430, -0.988733137672663350, -0.988725651989130540, -0.988718163833783530, +-0.988710673206641080, -0.988703180107721960, -0.988695684537045040, -0.988688186494628750, -0.988680685980492080, -0.988673182994653570, -0.988665677537132190, -0.988658169607946610, +-0.988650659207115700, -0.988643146334658000, -0.988635630990592480, -0.988628113174937930, -0.988620592887713090, -0.988613070128936730, -0.988605544898627730, -0.988598017196804730, +-0.988590487023486840, -0.988582954378692700, -0.988575419262441190, -0.988567881674751070, -0.988560341615641320, -0.988552799085130610, -0.988545254083238010, -0.988537706609982300, +-0.988530156665382240, -0.988522604249456820, -0.988515049362224900, -0.988507492003705250, -0.988499932173916960, -0.988492369872878920, -0.988484805100609880, -0.988477237857128820, +-0.988469668142454630, -0.988462095956606280, -0.988454521299602760, -0.988446944171462950, -0.988439364572205710, -0.988431782501850040, -0.988424197960414920, -0.988416610947919330, +-0.988409021464382250, -0.988401429509822570, -0.988393835084259380, -0.988386238187711540, -0.988378638820198160, -0.988371036981738120, -0.988363432672350490, -0.988355825892054280, +-0.988348216640868580, -0.988340604918812260, -0.988332990725904410, -0.988325374062164140, -0.988317754927610430, -0.988310133322262360, -0.988302509246138940, -0.988294882699259250, +-0.988287253681642270, -0.988279622193307230, -0.988271988234273090, -0.988264351804559070, -0.988256712904184040, -0.988249071533167320, -0.988241427691527900, -0.988233781379284970, +-0.988226132596457530, -0.988218481343064780, -0.988210827619125820, -0.988203171424659740, -0.988195512759685760, -0.988187851624223070, -0.988180188018290660, -0.988172521941907860, +-0.988164853395093750, -0.988157182377867430, -0.988149508890248220, -0.988141832932255220, -0.988134154503907620, -0.988126473605224650, -0.988118790236225400, -0.988111104396929290, +-0.988103416087355410, -0.988095725307522990, -0.988088032057451220, -0.988080336337159420, -0.988072638146666790, -0.988064937485992440, -0.988057234355155910, -0.988049528754176180, +-0.988041820683072670, -0.988034110141864600, -0.988026397130571280, -0.988018681649211920, -0.988010963697805940, -0.988003243276372460, -0.987995520384930880, -0.987987795023500540, +-0.987980067192100740, -0.987972336890750700, -0.987964604119469850, -0.987956868878277490, -0.987949131167192960, -0.987941390986235680, -0.987933648335424740, -0.987925903214779800, +-0.987918155624320060, -0.987910405564065060, -0.987902653034033910, -0.987894898034246130, -0.987887140564721160, -0.987879380625478310, -0.987871618216537020, -0.987863853337916710, +-0.987856085989636700, -0.987848316171716530, -0.987840543884175530, -0.987832769127033220, -0.987824991900309040, -0.987817212204022300, -0.987809430038192550, -0.987801645402839100, +-0.987793858297981720, -0.987786068723639610, -0.987778276679832310, -0.987770482166579370, -0.987762685183900200, -0.987754885731814360, -0.987747083810341260, -0.987739279419500460, +-0.987731472559311490, -0.987723663229793770, -0.987715851430966960, -0.987708037162850490, -0.987700220425463900, -0.987692401218826840, -0.987684579542958740, -0.987676755397879140, +-0.987668928783607680, -0.987661099700163910, -0.987653268147567380, -0.987645434125837720, -0.987637597634994480, -0.987629758675057200, -0.987621917246045530, -0.987614073347979130, +-0.987606226980877410, -0.987598378144760260, -0.987590526839647100, -0.987582673065557580, -0.987574816822511470, -0.987566958110528300, -0.987559096929627730, -0.987551233279829410, +-0.987543367161152990, -0.987535498573618110, -0.987527627517244540, -0.987519753992051940, -0.987511877998059950, -0.987503999535288220, -0.987496118603756520, -0.987488235203484390, +-0.987480349334491910, -0.987472460996798420, -0.987464570190423770, -0.987456676915387740, -0.987448781171709980, -0.987440882959410240, -0.987432982278508400, -0.987425079129024000, +-0.987417173510977020, -0.987409265424387010, -0.987401354869273830, -0.987393441845657250, -0.987385526353557140, -0.987377608392993160, -0.987369687963985280, -0.987361765066553040, +-0.987353839700716440, -0.987345911866495230, -0.987337981563909170, -0.987330048792978250, -0.987322113553722240, -0.987314175846160880, -0.987306235670314060, -0.987298293026201760, +-0.987290347913843620, -0.987282400333259650, -0.987274450284469700, -0.987266497767493530, -0.987258542782351260, -0.987250585329062510, -0.987242625407647400, -0.987234663018125680, +-0.987226698160517220, -0.987218730834842130, -0.987210761041120160, -0.987202788779371400, -0.987194814049615510, -0.987186836851872700, -0.987178857186162720, -0.987170875052505560, +-0.987162890450921320, -0.987154903381429750, -0.987146913844051070, -0.987138921838805030, -0.987130927365711620, -0.987122930424790930, -0.987114931016062960, -0.987106929139547670, +-0.987098924795264950, -0.987090917983235010, -0.987082908703477810, -0.987074896956013250, -0.987066882740861520, -0.987058866058042490, -0.987050846907576380, -0.987042825289483170, +-0.987034801203782840, -0.987026774650495490, -0.987018745629641310, -0.987010714141240090, -0.987002680185312230, -0.986994643761877620, -0.986986604870956350, -0.986978563512568740, +-0.986970519686734550, -0.986962473393474090, -0.986954424632807470, -0.986946373404754880, -0.986938319709336210, -0.986930263546571870, -0.986922204916481750, -0.986914143819086150, +-0.986906080254405180, -0.986898014222459150, -0.986889945723267940, -0.986881874756851960, -0.986873801323231210, -0.986865725422426010, -0.986857647054456440, -0.986849566219342720, +-0.986841482917105160, -0.986833397147763860, -0.986825308911339130, -0.986817218207851070, -0.986809125037319990, -0.986801029399766110, -0.986792931295209620, -0.986784830723670850, +-0.986776727685170000, -0.986768622179727270, -0.986760514207362990, -0.986752403768097470, -0.986744290861950920, -0.986736175488943660, -0.986728057649095990, -0.986719937342428130, +-0.986711814568960510, -0.986703689328713220, -0.986695561621706800, -0.986687431447961450, -0.986679298807497500, -0.986671163700335250, -0.986663026126495150, -0.986654886085997610, +-0.986646743578862620, -0.986638598605110940, -0.986630451164762780, -0.986622301257838340, -0.986614148884358280, -0.986605994044342790, -0.986597836737812320, -0.986589676964787280, +-0.986581514725288100, -0.986573350019334990, -0.986565182846948610, -0.986557013208149260, -0.986548841102957370, -0.986540666531393380, -0.986532489493477720, -0.986524309989230800, +-0.986516128018673170, -0.986507943581825140, -0.986499756678707370, -0.986491567309340180, -0.986483375473743980, -0.986475181171939440, -0.986466984403946870, -0.986458785169786910, +-0.986450583469479890, -0.986442379303046460, -0.986434172670507150, -0.986425963571882390, -0.986417752007192620, -0.986409537976458580, -0.986401321479700610, -0.986393102516939350, +-0.986384881088195440, -0.986376657193489210, -0.986368430832841430, -0.986360202006272500, -0.986351970713803090, -0.986343736955453740, -0.986335500731244990, -0.986327262041197580, +-0.986319020885331970, -0.986310777263668890, -0.986302531176228790, -0.986294282623032430, -0.986286031604100330, -0.986277778119453160, -0.986269522169111460, -0.986261263753096080, +-0.986253002871427360, -0.986244739524126280, -0.986236473711213370, -0.986228205432709280, -0.986219934688634560, -0.986211661479010070, -0.986203385803856470, -0.986195107663194290, +-0.986186827057044410, -0.986178543985427480, -0.986170258448364260, -0.986161970445875280, -0.986153679977981420, -0.986145387044703340, -0.986137091646061780, -0.986128793782077520, +-0.986120493452771310, -0.986112190658163800, -0.986103885398275760, -0.986095577673128170, -0.986087267482741560, -0.986078954827136700, -0.986070639706334570, -0.986062322120355830, +-0.986054002069221220, -0.986045679552951640, -0.986037354571567830, -0.986029027125090660, -0.986020697213540910, -0.986012364836939440, -0.986004029995307120, -0.985995692688664600, +-0.985987352917032880, -0.985979010680432920, -0.985970665978885270, -0.985962318812411030, -0.985953969181030950, -0.985945617084765910, -0.985937262523636890, -0.985928905497664760, +-0.985920546006870290, -0.985912184051274450, -0.985903819630898240, -0.985895452745762400, -0.985887083395887930, -0.985878711581295810, -0.985870337302006900, -0.985861960558042090, +-0.985853581349422360, -0.985845199676168790, -0.985836815538302160, -0.985828428935843440, -0.985820039868813720, -0.985811648337233890, -0.985803254341124920, -0.985794857880507800, +-0.985786458955403620, -0.985778057565833250, -0.985769653711817680, -0.985761247393378000, -0.985752838610535200, -0.985744427363310360, -0.985736013651724470, -0.985727597475798410, +-0.985719178835553490, -0.985710757731010580, -0.985702334162190770, -0.985693908129115060, -0.985685479631804640, -0.985677048670280500, -0.985668615244563840, -0.985660179354675540, +-0.985651741000636790, -0.985643300182468710, -0.985634856900192370, -0.985626411153828990, -0.985617962943399430, -0.985609512268925010, -0.985601059130426840, -0.985592603527926100, +-0.985584145461443680, -0.985575684931001010, -0.985567221936619050, -0.985558756478319140, -0.985550288556122260, -0.985541818170049710, -0.985533345320122600, -0.985524870006362130, +-0.985516392228789400, -0.985507911987425820, -0.985499429282292390, -0.985490944113410320, -0.985482456480801020, -0.985473966384485480, -0.985465473824485130, -0.985456978800821060, +-0.985448481313514480, -0.985439981362586700, -0.985431478948059050, -0.985422974069952720, -0.985414466728288920, -0.985405956923088850, -0.985397444654373960, -0.985388929922165540, +-0.985380412726484690, -0.985371893067352840, -0.985363370944791210, -0.985354846358821200, -0.985346319309464040, -0.985337789796741140, -0.985329257820673820, -0.985320723381283290, +-0.985312186478590870, -0.985303647112618090, -0.985295105283386150, -0.985286560990916490, -0.985278014235230310, -0.985269465016349270, -0.985260913334294440, -0.985252359189087380, +-0.985243802580749390, -0.985235243509301920, -0.985226681974766370, -0.985218117977164080, -0.985209551516516460, -0.985200982592844940, -0.985192411206171070, -0.985183837356516160, +-0.985175261043901520, -0.985166682268348910, -0.985158101029879440, -0.985149517328514860, -0.985140931164276370, -0.985132342537185620, -0.985123751447264050, -0.985115157894532970, +-0.985106561879014130, -0.985097963400728750, -0.985089362459698580, -0.985080759055944940, -0.985072153189489490, -0.985063544860353520, -0.985054934068558820, -0.985046320814126690, +-0.985037705097078780, -0.985029086917436620, -0.985020466275221770, -0.985011843170455760, -0.985003217603160120, -0.984994589573356390, -0.984985959081066230, -0.984977326126311170, +-0.984968690709112750, -0.984960052829492730, -0.984951412487472420, -0.984942769683073700, -0.984934124416318000, -0.984925476687227070, -0.984916826495822350, -0.984908173842125590, +-0.984899518726158440, -0.984890861147942440, -0.984882201107499240, -0.984873538604850610, -0.984864873640018180, -0.984856206213023500, -0.984847536323888330, -0.984838863972634320, +-0.984830189159283110, -0.984821511883856470, -0.984812832146376050, -0.984804149946863490, -0.984795465285340570, -0.984786778161829020, -0.984778088576350520, -0.984769396528926810, +-0.984760702019579660, -0.984752005048330710, -0.984743305615201740, -0.984734603720214490, -0.984725899363390720, -0.984717192544752210, -0.984708483264320700, -0.984699771522118070, +-0.984691057318165970, -0.984682340652486170, -0.984673621525100630, -0.984664899936030900, -0.984656175885299080, -0.984647449372926700, -0.984638720398935630, -0.984629988963347970, +-0.984621255066185140, -0.984612518707469350, -0.984603779887222140, -0.984595038605465490, -0.984586294862221270, -0.984577548657511350, -0.984568799991357490, -0.984560048863781680, +-0.984551295274805670, -0.984542539224451560, -0.984533780712741000, -0.984525019739695970, -0.984516256305338460, -0.984507490409690320, -0.984498722052773330, -0.984489951234609690, +-0.984481177955221050, -0.984472402214629510, -0.984463624012857030, -0.984454843349925390, -0.984446060225856790, -0.984437274640672880, -0.984428486594395860, -0.984419696087047600, +-0.984410903118650090, -0.984402107689225310, -0.984393309798795360, -0.984384509447382090, -0.984375706635007510, -0.984366901361693690, -0.984358093627462630, -0.984349283432336300, +-0.984340470776336800, -0.984331655659485990, -0.984322838081806210, -0.984314018043319190, -0.984305195544047270, -0.984296370584012310, -0.984287543163236410, -0.984278713281741660, +-0.984269880939550150, -0.984261046136683860, -0.984252208873165000, -0.984243369149015670, -0.984234526964257840, -0.984225682318913720, -0.984216835213005400, -0.984207985646555090, +-0.984199133619584670, -0.984190279132116430, -0.984181422184172590, -0.984172562775775140, -0.984163700906946270, -0.984154836577708190, -0.984145969788082890, -0.984137100538092780, +-0.984128228827759970, -0.984119354657106430, -0.984110478026154590, -0.984101598934926550, -0.984092717383444620, -0.984083833371730780, -0.984074946899807350, -0.984066057967696530, +-0.984057166575420640, -0.984048272723001770, -0.984039376410462350, -0.984030477637824360, -0.984021576405110230, -0.984012672712342160, -0.984003766559542360, -0.983994857946733140, +-0.983985946873936920, -0.983977033341175700, -0.983968117348471890, -0.983959198895847820, -0.983950277983325790, -0.983941354610928020, -0.983932428778676820, -0.983923500486594600, +-0.983914569734703590, -0.983905636523026320, -0.983896700851584760, -0.983887762720401570, -0.983878822129498840, -0.983869879078899220, -0.983860933568624810, -0.983851985598698130, +-0.983843035169141400, -0.983834082279977150, -0.983825126931227590, -0.983816169122915360, -0.983807208855062560, -0.983798246127691840, -0.983789280940825520, -0.983780313294486010, +-0.983771343188695640, -0.983762370623476930, -0.983753395598852220, -0.983744418114844140, -0.983735438171475020, -0.983726455768767270, -0.983717470906743330, -0.983708483585425730, +-0.983699493804837010, -0.983690501564999490, -0.983681506865935700, -0.983672509707668170, -0.983663510090219350, -0.983654508013611760, -0.983645503477867940, -0.983636496483010330, +-0.983627487029061440, -0.983618475116043940, -0.983609460743980150, -0.983600443912892700, -0.983591424622804240, -0.983582402873737220, -0.983573378665714040, -0.983564351998757580, +-0.983555322872890160, -0.983546291288134420, -0.983537257244513020, -0.983528220742048380, -0.983519181780763250, -0.983510140360680190, -0.983501096481821710, -0.983492050144210590, +-0.983483001347869260, -0.983473950092820460, -0.983464896379086740, -0.983455840206690860, -0.983446781575655240, -0.983437720486002860, -0.983428656937756050, -0.983419590930937670, +-0.983410522465570260, -0.983401451541676570, -0.983392378159279160, -0.983383302318400880, -0.983374224019064380, -0.983365143261292320, -0.983356060045107340, -0.983346974370532200, +-0.983337886237589660, -0.983328795646302490, -0.983319702596693210, -0.983310607088784700, -0.983301509122599730, -0.983292408698160920, -0.983283305815491170, -0.983274200474613000, +-0.983265092675549510, -0.983255982418323130, -0.983246869702956940, -0.983237754529473480, -0.983228636897895750, -0.983219516808246260, -0.983210394260548020, -0.983201269254823870, +-0.983192141791096490, -0.983183011869388830, -0.983173879489723570, -0.983164744652123670, -0.983155607356611890, -0.983146467603211010, -0.983137325391943980, -0.983128180722833810, +-0.983119033595903020, -0.983109884011174720, -0.983100731968671650, -0.983091577468416800, -0.983082420510432930, -0.983073261094743130, -0.983064099221370060, -0.983054934890336800, +-0.983045768101666220, -0.983036598855381190, -0.983027427151504600, -0.983018252990059520, -0.983009076371068820, -0.982999897294555390, -0.982990715760542310, -0.982981531769052340, +-0.982972345320108580, -0.982963156413733890, -0.982953965049951470, -0.982944771228783990, -0.982935574950254630, -0.982926376214386280, -0.982917175021202130, -0.982907971370724940, +-0.982898765262977810, -0.982889556697983830, -0.982880345675765880, -0.982871132196347140, -0.982861916259750500, -0.982852697865999160, -0.982843477015115980, -0.982834253707124180, +-0.982825027942046630, -0.982815799719906620, -0.982806569040727160, -0.982797335904531220, -0.982788100311341890, -0.982778862261182380, -0.982769621754075670, -0.982760378790044960, +-0.982751133369113240, -0.982741885491303700, -0.982732635156639440, -0.982723382365143670, -0.982714127116839360, -0.982704869411749730, -0.982695609249897960, -0.982686346631307160, +-0.982677081556000530, -0.982667814024001160, -0.982658544035332260, -0.982649271590016920, -0.982639996688078550, -0.982630719329540050, -0.982621439514424820, -0.982612157242755970, +-0.982602872514556800, -0.982593585329850420, -0.982584295688660010, -0.982575003591008910, -0.982565709036920310, -0.982556412026417410, -0.982547112559523540, -0.982537810636261780, +-0.982528506256655660, -0.982519199420728070, -0.982509890128502650, -0.982500578380002490, -0.982491264175250790, -0.982481947514270980, -0.982472628397086270, -0.982463306823720070, +-0.982453982794195490, -0.982444656308536060, -0.982435327366764870, -0.982425995968905450, -0.982416662114981020, -0.982407325805015000, -0.982397987039030580, -0.982388645817051210, +-0.982379302139100300, -0.982369956005201050, -0.982360607415376900, -0.982351256369651260, -0.982341902868047570, -0.982332546910589020, -0.982323188497299050, -0.982313827628201190, +-0.982304464303318750, -0.982295098522675160, -0.982285730286293850, -0.982276359594198120, -0.982266986446411640, -0.982257610842957600, -0.982248232783859530, -0.982238852269140870, +-0.982229469298825150, -0.982220083872935690, -0.982210695991496020, -0.982201305654529570, -0.982191912862059980, -0.982182517614110460, -0.982173119910704770, -0.982163719751866230, +-0.982154317137618470, -0.982144912067984820, -0.982135504542988920, -0.982126094562654210, -0.982116682127004310, -0.982107267236062790, -0.982097849889852940, -0.982088430088398520, +-0.982079007831723080, -0.982069583119850150, -0.982060155952803160, -0.982050726330605860, -0.982041294253281680, -0.982031859720854270, -0.982022422733347280, -0.982012983290784240, +-0.982003541393188570, -0.981994097040584270, -0.981984650232994530, -0.981975200970443330, -0.981965749252953990, -0.981956295080550380, -0.981946838453256030, -0.981937379371094600, +-0.981927917834089610, -0.981918453842264950, -0.981908987395644030, -0.981899518494250720, -0.981890047138108570, -0.981880573327241320, -0.981871097061672750, -0.981861618341426270, +-0.981852137166525860, -0.981842653536995070, -0.981833167452857650, -0.981823678914137240, -0.981814187920857730, -0.981804694473042750, -0.981795198570715950, -0.981785700213901210, +-0.981776199402622280, -0.981766696136902710, -0.981757190416766570, -0.981747682242237300, -0.981738171613338870, -0.981728658530095060, -0.981719142992529600, -0.981709625000666160, +-0.981700104554528830, -0.981690581654141140, -0.981681056299526960, -0.981671528490710270, -0.981661998227714610, -0.981652465510564070, -0.981642930339282290, -0.981633392713893270, +-0.981623852634420760, -0.981614310100888510, -0.981604765113320620, -0.981595217671740740, -0.981585667776172840, -0.981576115426640810, -0.981566560623168380, -0.981557003365779670, +-0.981547443654498310, -0.981537881489348510, -0.981528316870353910, -0.981518749797538500, -0.981509180270926260, -0.981499608290541060, -0.981490033856406760, -0.981480456968547470, +-0.981470877626987040, -0.981461295831749460, -0.981451711582858490, -0.981442124880338330, -0.981432535724212960, -0.981422944114506040, -0.981413350051241970, -0.981403753534444420, +-0.981394154564137480, -0.981384553140345120, -0.981374949263091430, -0.981365342932400410, -0.981355734148295910, -0.981346122910802140, -0.981336509219943090, -0.981326893075742830, +-0.981317274478225140, -0.981307653427414440, -0.981298029923334590, -0.981288403966009580, -0.981278775555463610, -0.981269144691720660, -0.981259511374804940, -0.981249875604740420, +-0.981240237381551080, -0.981230596705261360, -0.981220953575895010, -0.981211307993476330, -0.981201659958029330, -0.981192009469578190, -0.981182356528147000, -0.981172701133759980, +-0.981163043286441220, -0.981153382986214790, -0.981143720233104920, -0.981134055027135800, -0.981124387368331520, -0.981114717256716170, -0.981105044692314190, -0.981095369675149430, +-0.981085692205246440, -0.981076012282629080, -0.981066329907321680, -0.981056645079348530, -0.981046957798733740, -0.981037268065501510, -0.981027575879676260, -0.981017881241281970, +-0.981008184150342970, -0.980998484606883440, -0.980988782610927810, -0.980979078162500180, -0.980969371261624870, -0.980959661908326170, -0.980949950102628310, -0.980940235844555470, +-0.980930519134132100, -0.980920799971382480, -0.980911078356330850, -0.980901354289001490, -0.980891627769418740, -0.980881898797606900, -0.980872167373590400, -0.980862433497393440, +-0.980852697169040330, -0.980842958388555510, -0.980833217155963390, -0.980823473471288180, -0.980813727334554190, -0.980803978745785950, -0.980794227705007790, -0.980784474212244020, +-0.980774718267519050, -0.980764959870857430, -0.980755199022283250, -0.980745435721821160, -0.980735669969495350, -0.980725901765330480, -0.980716131109350850, -0.980706358001580900, +-0.980696582442045050, -0.980686804430767720, -0.980677023967773340, -0.980667241053086450, -0.980657455686731460, -0.980647667868732810, -0.980637877599115030, -0.980628084877902540, +-0.980618289705119880, -0.980608492080791370, -0.980598692004941760, -0.980588889477595370, -0.980579084498776730, -0.980569277068510380, -0.980559467186820970, -0.980549654853732690, +-0.980539840069270420, -0.980530022833458470, -0.980520203146321490, -0.980510381007884010, -0.980500556418170580, -0.980490729377205830, -0.980480899885014080, -0.980471067941620200, +-0.980461233547048620, -0.980451396701323970, -0.980441557404470920, -0.980431715656513880, -0.980421871457477500, -0.980412024807386540, -0.980402175706265420, -0.980392324154139020, +-0.980382470151031640, -0.980372613696968150, -0.980362754791973100, -0.980352893436071240, -0.980343029629287100, -0.980333163371645330, -0.980323294663170810, -0.980313423503887840, +-0.980303549893821510, -0.980293673832996150, -0.980283795321436720, -0.980273914359167780, -0.980264030946214060, -0.980254145082600110, -0.980244256768351030, -0.980234366003491120, +-0.980224472788045480, -0.980214577122038520, -0.980204679005495130, -0.980194778438440050, -0.980184875420898050, -0.980174969952893880, -0.980165062034452310, -0.980155151665597970, +-0.980145238846355850, -0.980135323576750590, -0.980125405856806960, -0.980115485686549940, -0.980105563066004160, -0.980095637995194500, -0.980085710474145610, -0.980075780502882580, +-0.980065848081430050, -0.980055913209813000, -0.980045975888055980, -0.980036036116184170, -0.980026093894222240, -0.980016149222195040, -0.980006202100127450, -0.979996252528044450, +-0.979986300505970800, -0.979976346033931360, -0.979966389111951000, -0.979956429740054700, -0.979946467918267340, -0.979936503646613890, -0.979926536925119110, -0.979916567753807980, +-0.979906596132705480, -0.979896622061836360, -0.979886645541225840, -0.979876666570898560, -0.979866685150879710, -0.979856701281194180, -0.979846714961866820, -0.979836726192922720, +-0.979826734974386770, -0.979816741306284040, -0.979806745188639420, -0.979796746621477980, -0.979786745604824590, -0.979776742138704360, -0.979766736223142360, -0.979756727858163370, +-0.979746717043792680, -0.979736703780055170, -0.979726688066975940, -0.979716669904579950, -0.979706649292892200, -0.979696626231937980, -0.979686600721742070, -0.979676572762329780, +-0.979666542353725970, -0.979656509495955840, -0.979646474189044380, -0.979636436433016790, -0.979626396227898040, -0.979616353573713460, -0.979606308470487800, -0.979596260918246480, +-0.979586210917014480, -0.979576158466817000, -0.979566103567679040, -0.979556046219625890, -0.979545986422682650, -0.979535924176874300, -0.979525859482226260, -0.979515792338763510, +-0.979505722746511380, -0.979495650705494820, -0.979485576215739280, -0.979475499277269730, -0.979465419890111380, -0.979455338054289530, -0.979445253769829380, -0.979435167036756040, +-0.979425077855094810, -0.979414986224870780, -0.979404892146109370, -0.979394795618835690, -0.979384696643075150, -0.979374595218852730, -0.979364491346193860, -0.979354385025123730, +-0.979344276255667780, -0.979334165037850980, -0.979324051371698760, -0.979313935257236530, -0.979303816694489400, -0.979293695683482790, -0.979283572224241890, -0.979273446316792030, +-0.979263317961158620, -0.979253187157366870, -0.979243053905442080, -0.979232918205409810, -0.979222780057295130, -0.979212639461123580, -0.979202496416920360, -0.979192350924711020, +-0.979182202984520630, -0.979172052596374850, -0.979161899760298880, -0.979151744476318250, -0.979141586744458170, -0.979131426564744170, -0.979121263937201560, -0.979111098861855880, +-0.979100931338732330, -0.979090761367856550, -0.979080588949253870, -0.979070414082949590, -0.979060236768969470, -0.979050057007338600, -0.979039874798082630, -0.979029690141226980, +-0.979019503036797190, -0.979009313484818570, -0.978999121485316650, -0.978988927038316860, -0.978978730143844840, -0.978968530801926030, -0.978958329012585840, -0.978948124775849800, +-0.978937918091743580, -0.978927708960292460, -0.978917497381522010, -0.978907283355457960, -0.978897066882125520, -0.978886847961550570, -0.978876626593758400, -0.978866402778774790, +-0.978856176516625040, -0.978845947807334920, -0.978835716650929940, -0.978825483047435660, -0.978815246996877610, -0.978805008499281540, -0.978794767554672870, -0.978784524163077370, +-0.978774278324520460, -0.978764030039028010, -0.978753779306625330, -0.978743526127338280, -0.978733270501192300, -0.978723012428213250, -0.978712751908426660, -0.978702488941858180, +-0.978692223528533470, -0.978681955668478150, -0.978671685361718110, -0.978661412608278660, -0.978651137408185770, -0.978640859761465090, -0.978630579668142150, -0.978620297128242830, +-0.978610012141792770, -0.978599724708817620, -0.978589434829343240, -0.978579142503395170, -0.978568847730999390, -0.978558550512181440, -0.978548250846967060, -0.978537948735382020, +-0.978527644177452190, -0.978517337173203220, -0.978507027722660960, -0.978496715825851070, -0.978486401482799420, -0.978476084693531760, -0.978465765458073840, -0.978455443776451550, +-0.978445119648690630, -0.978434793074816960, -0.978424464054856280, -0.978414132588834470, -0.978403798676777290, -0.978393462318710600, -0.978383123514660280, -0.978372782264652190, +-0.978362438568712080, -0.978352092426865940, -0.978341743839139410, -0.978331392805558700, -0.978321039326149440, -0.978310683400937630, -0.978300325029949010, -0.978289964213209680, +-0.978279600950745400, -0.978269235242582020, -0.978258867088745760, -0.978248496489262150, -0.978238123444157390, -0.978227747953457350, -0.978217370017187890, -0.978206989635375000, +-0.978196606808044660, -0.978186221535222720, -0.978175833816935290, -0.978165443653208340, -0.978155051044067750, -0.978144655989539480, -0.978134258489649630, -0.978123858544424070, +-0.978113456153888890, -0.978103051318070070, -0.978092644036993590, -0.978082234310685530, -0.978071822139171880, -0.978061407522478720, -0.978050990460632040, -0.978040570953657820, +-0.978030149001582250, -0.978019724604431210, -0.978009297762230890, -0.977998868475007390, -0.977988436742786680, -0.977978002565594860, -0.977967565943458130, -0.977957126876402350, +-0.977946685364453840, -0.977936241407638570, -0.977925795005982760, -0.977915346159512370, -0.977904894868253720, -0.977894441132232780, -0.977883984951475660, -0.977873526326008660, +-0.977863065255857870, -0.977852601741049380, -0.977842135781609390, -0.977831667377564000, -0.977821196528939510, -0.977810723235762010, -0.977800247498057830, -0.977789769315852820, +-0.977779288689173520, -0.977768805618045910, -0.977758320102496410, -0.977747832142551010, -0.977737341738236120, -0.977726848889577730, -0.977716353596602360, -0.977705855859336000, +-0.977695355677805080, -0.977684853052035780, -0.977674347982054210, -0.977663840467886900, -0.977653330509559940, -0.977642818107099740, -0.977632303260532410, -0.977621785969884360, +-0.977611266235181800, -0.977600744056451140, -0.977590219433718600, -0.977579692367010480, -0.977569162856353090, -0.977558630901772860, -0.977548096503296100, -0.977537559660949020, +-0.977527020374758030, -0.977516478644749550, -0.977505934470949800, -0.977495387853385300, -0.977484838792082260, -0.977474287287067200, -0.977463733338366340, -0.977453176946006200, +-0.977442618110013100, -0.977432056830413450, -0.977421493107233700, -0.977410926940500140, -0.977400358330239310, -0.977389787276477630, -0.977379213779241420, -0.977368637838557210, +-0.977358059454451420, -0.977347478626950370, -0.977336895356080700, -0.977326309641868840, -0.977315721484341200, -0.977305130883524110, -0.977294537839444310, -0.977283942352128230, +-0.977273344421602190, -0.977262744047892820, -0.977252141231026660, -0.977241535971030030, -0.977230928267929570, -0.977220318121751810, -0.977209705532523290, -0.977199090500270540, +-0.977188473025019990, -0.977177853106798280, -0.977167230745631940, -0.977156605941547520, -0.977145978694571540, -0.977135349004730760, -0.977124716872051490, -0.977114082296560380, +-0.977103445278284190, -0.977092805817249330, -0.977082163913482460, -0.977071519567010220, -0.977060872777859020, -0.977050223546055860, -0.977039571871627040, -0.977028917754599210, +-0.977018261194999240, -0.977007602192853540, -0.976996940748188770, -0.976986276861031790, -0.976975610531409020, -0.976964941759347230, -0.976954270544873160, -0.976943596888013350, +-0.976932920788794570, -0.976922242247243440, -0.976911561263386740, -0.976900877837251100, -0.976890191968863400, -0.976879503658250050, -0.976868812905438030, -0.976858119710454000, +-0.976847424073324590, -0.976836725994076670, -0.976826025472737000, -0.976815322509332120, -0.976804617103888990, -0.976793909256434390, -0.976783198966994950, -0.976772486235597540, +-0.976761771062268910, -0.976751053447035830, -0.976740333389925160, -0.976729610890963660, -0.976718885950178080, -0.976708158567595410, -0.976697428743242170, -0.976686696477145460, +-0.976675961769331910, -0.976665224619828630, -0.976654485028662140, -0.976643742995859540, -0.976632998521447470, -0.976622251605453020, -0.976611502247902830, -0.976600750448824000, +-0.976589996208243160, -0.976579239526187410, -0.976568480402683630, -0.976557718837758550, -0.976546954831439160, -0.976536188383752450, -0.976525419494725270, -0.976514648164384490, +-0.976503874392757100, -0.976493098179870070, -0.976482319525750260, -0.976471538430424670, -0.976460754893920260, -0.976449968916263900, -0.976439180497482680, -0.976428389637603370, +-0.976417596336653260, -0.976406800594659010, -0.976396002411647920, -0.976385201787646650, -0.976374398722682500, -0.976363593216782340, -0.976352785269973160, -0.976341974882282030, +-0.976331162053735930, -0.976320346784362080, -0.976309529074187220, -0.976298708923238560, -0.976287886331543060, -0.976277061299127950, -0.976266233826020180, -0.976255403912246860, +-0.976244571557834950, -0.976233736762811670, -0.976222899527203980, -0.976212059851039090, -0.976201217734343980, -0.976190373177145960, -0.976179526179471900, -0.976168676741349000, +-0.976157824862804450, -0.976146970543865340, -0.976136113784558890, -0.976125254584912060, -0.976114392944952170, -0.976103528864706190, -0.976092662344201440, -0.976081793383465010, +-0.976070921982524210, -0.976060048141405900, -0.976049171860137620, -0.976038293138746350, -0.976027411977259400, -0.976016528375703960, -0.976005642334107140, -0.975994753852496230, +-0.975983862930898450, -0.975972969569340880, -0.975962073767851050, -0.975951175526455940, -0.975940274845182860, -0.975929371724059250, -0.975918466163112060, -0.975907558162368850, +-0.975896647721856580, -0.975885734841602790, -0.975874819521634680, -0.975863901761979460, -0.975852981562664530, -0.975842058923717110, -0.975831133845164620, -0.975820206327034260, +-0.975809276369353330, -0.975798343972149260, -0.975787409135449260, -0.975776471859280850, -0.975765532143671120, -0.975754589988647720, -0.975743645394237750, -0.975732698360468720, +-0.975721748887367850, -0.975710796974962660, -0.975699842623280470, -0.975688885832348700, -0.975677926602194770, -0.975666964932845880, -0.975656000824329680, -0.975645034276673480, +-0.975634065289904710, -0.975623093864050660, -0.975612119999138990, -0.975601143695197020, -0.975590164952252150, -0.975579183770331810, -0.975568200149463660, -0.975557214089674880, +-0.975546225590993130, -0.975535234653445830, -0.975524241277060390, -0.975513245461864350, -0.975502247207885140, -0.975491246515150510, -0.975480243383687550, -0.975469237813524130, +-0.975458229804687550, -0.975447219357205460, -0.975436206471105180, -0.975425191146414460, -0.975414173383160830, -0.975403153181371720, -0.975392130541074650, -0.975381105462297390, +-0.975370077945067250, -0.975359047989411980, -0.975348015595359110, -0.975336980762936180, -0.975325943492170720, -0.975314903783090490, -0.975303861635723020, -0.975292817050095850, +-0.975281770026236620, -0.975270720564172970, -0.975259668663932540, -0.975248614325543000, -0.975237557549031850, -0.975226498334426760, -0.975215436681755590, -0.975204372591045640, +-0.975193306062324900, -0.975182237095620800, -0.975171165690961180, -0.975160091848373600, -0.975149015567885800, -0.975137936849525430, -0.975126855693320250, -0.975115772099298010, +-0.975104686067486240, -0.975093597597912810, -0.975082506690605370, -0.975071413345591550, -0.975060317562899350, -0.975049219342556280, -0.975038118684590120, -0.975027015589028820, +-0.975015910055899830, -0.975004802085231210, -0.974993691677050410, -0.974982578831385500, -0.974971463548264140, -0.974960345827714070, -0.974949225669763160, -0.974938103074439290, +-0.974926978041769980, -0.974915850571783320, -0.974904720664507060, -0.974893588319968970, -0.974882453538196800, -0.974871316319218640, -0.974860176663062130, -0.974849034569755250, +-0.974837890039325750, -0.974826743071801390, -0.974815593667210380, -0.974804441825580240, -0.974793287546939060, -0.974782130831314710, -0.974770971678734940, -0.974759810089227740, +-0.974748646062821080, -0.974737479599542820, -0.974726310699420840, -0.974715139362483000, -0.974703965588757380, -0.974692789378271860, -0.974681610731054300, -0.974670429647132800, +-0.974659246126535210, -0.974648060169289510, -0.974636871775423570, -0.974625680944965490, -0.974614487677943230, -0.974603291974384780, -0.974592093834318110, -0.974580893257771200, +-0.974569690244771910, -0.974558484795348570, -0.974547276909528910, -0.974536066587341150, -0.974524853828813150, -0.974513638633973110, -0.974502421002848900, -0.974491200935468700, +-0.974479978431860410, -0.974468753492052200, -0.974457526116072170, -0.974446296303948300, -0.974435064055708570, -0.974423829371381390, -0.974412592250994410, -0.974401352694576170, +-0.974390110702154420, -0.974378866273757360, -0.974367619409413190, -0.974356370109149990, -0.974345118372995870, -0.974333864200978890, -0.974322607593127280, -0.974311348549469210, +-0.974300087070032680, -0.974288823154846000, -0.974277556803937240, -0.974266288017334610, -0.974255016795066210, -0.974243743137160330, -0.974232467043645080, -0.974221188514548640, +-0.974209907549899220, -0.974198624149725020, -0.974187338314054350, -0.974176050042915190, -0.974164759336336060, -0.974153466194344950, -0.974142170616970060, -0.974130872604239920, +-0.974119572156182500, -0.974108269272826230, -0.974096963954199200, -0.974085656200329940, -0.974074346011246320, -0.974063033386976970, -0.974051718327550000, -0.974040400832993700, +-0.974029080903336400, -0.974017758538606500, -0.974006433738832110, -0.973995106504041640, -0.973983776834263400, -0.973972444729525820, -0.973961110189856980, -0.973949773215285420, +-0.973938433805839440, -0.973927091961547360, -0.973915747682437600, -0.973904400968538360, -0.973893051819878290, -0.973881700236485460, -0.973870346218388420, -0.973858989765615470, +-0.973847630878195150, -0.973836269556155650, -0.973824905799525520, -0.973813539608333170, -0.973802170982606910, -0.973790799922375270, -0.973779426427666570, -0.973768050498509340, +-0.973756672134932000, -0.973745291336962860, -0.973733908104630670, -0.973722522437963640, -0.973711134336990300, -0.973699743801739070, -0.973688350832238480, -0.973676955428517180, +-0.973665557590603250, -0.973654157318525670, -0.973642754612312530, -0.973631349471992590, -0.973619941897594150, -0.973608531889145980, -0.973597119446676480, -0.973585704570214090, +-0.973574287259787560, -0.973562867515425200, -0.973551445337155760, -0.973540020725007670, -0.973528593679009460, -0.973517164199189880, -0.973505732285577350, -0.973494297938200530, +-0.973482861157087820, -0.973471421942268100, -0.973459980293769790, -0.973448536211621530, -0.973437089695851960, -0.973425640746489520, -0.973414189363563160, -0.973402735547101220, +-0.973391279297132540, -0.973379820613685550, -0.973368359496789130, -0.973356895946471680, -0.973345429962762080, -0.973333961545688850, -0.973322490695280760, -0.973311017411566450, +-0.973299541694574550, -0.973288063544333840, -0.973276582960872940, -0.973265099944220500, -0.973253614494405510, -0.973242126611456370, -0.973230636295401850, -0.973219143546270820, +-0.973207648364091900, -0.973196150748893980, -0.973184650700705480, -0.973173148219555470, -0.973161643305472610, -0.973150135958485650, -0.973138626178623230, -0.973127113965914450, +-0.973115599320387710, -0.973104082242072010, -0.973092562730996090, -0.973081040787188820, -0.973069516410678960, -0.973057989601495250, -0.973046460359666580, -0.973034928685221790, +-0.973023394578189650, -0.973011858038599020, -0.973000319066478770, -0.972988777661857650, -0.972977233824764750, -0.972965687555228610, -0.972954138853278310, -0.972942587718942600, +-0.972931034152250570, -0.972919478153230770, -0.972907919721912480, -0.972896358858324260, -0.972884795562495190, -0.972873229834454010, -0.972861661674229940, -0.972850091081851610, +-0.972838518057348000, -0.972826942600748200, -0.972815364712081080, -0.972803784391375380, -0.972792201638660430, -0.972780616453964740, -0.972769028837317640, -0.972757438788747990, +-0.972745846308284760, -0.972734251395956820, -0.972722654051793260, -0.972711054275823160, -0.972699452068075400, -0.972687847428578940, -0.972676240357362890, -0.972664630854456310, +-0.972653018919888090, -0.972641404553687310, -0.972629787755883050, -0.972618168526504290, -0.972606546865580120, -0.972594922773139640, -0.972583296249211800, -0.972571667293825710, +-0.972560035907010460, -0.972548402088795120, -0.972536765839208780, -0.972525127158280540, -0.972513486046039490, -0.972501842502514700, -0.972490196527735380, -0.972478548121730400, +-0.972466897284529170, -0.972455244016160680, -0.972443588316654120, -0.972431930186038570, -0.972420269624343140, -0.972408606631597120, -0.972396941207829490, -0.972385273353069570, +-0.972373603067346440, -0.972361930350689300, -0.972350255203127340, -0.972338577624689780, -0.972326897615405810, -0.972315215175304500, -0.972303530304415080, -0.972291843002767050, +-0.972280153270389190, -0.972268461107311130, -0.972256766513561850, -0.972245069489170670, -0.972233370034166770, -0.972221668148579470, -0.972209963832437960, -0.972198257085771680, +-0.972186547908609590, -0.972174836300981230, -0.972163122262915790, -0.972151405794442480, -0.972139686895590720, -0.972127965566389700, -0.972116241806868730, -0.972104515617057240, +-0.972092786996984430, -0.972081055946679710, -0.972069322466172170, -0.972057586555491460, -0.972045848214666770, -0.972034107443727420, -0.972022364242702940, -0.972010618611622410, +-0.971998870550515370, -0.971987120059411120, -0.971975367138339100, -0.971963611787328710, -0.971951854006409270, -0.971940093795610080, -0.971928331154960800, -0.971916566084490620, +-0.971904798584229070, -0.971893028654205460, -0.971881256294449440, -0.971869481504990080, -0.971857704285857160, -0.971845924637079860, -0.971834142558687830, -0.971822358050710380, +-0.971810571113177040, -0.971798781746117330, -0.971786989949560700, -0.971775195723536540, -0.971763399068074300, -0.971751599983203710, -0.971739798468954090, -0.971727994525354970, +-0.971716188152435770, -0.971704379350226240, -0.971692568118755710, -0.971680754458053690, -0.971668938368149830, -0.971657119849073660, -0.971645298900854600, -0.971633475523522420, +-0.971621649717106520, -0.971609821481636440, -0.971597990817141820, -0.971586157723652200, -0.971574322201197330, -0.971562484249806510, -0.971550643869509510, -0.971538801060335850, +-0.971526955822315300, -0.971515108155477260, -0.971503258059851600, -0.971491405535467640, -0.971479550582355240, -0.971467693200543940, -0.971455833390063360, -0.971443971150943280, +-0.971432106483213210, -0.971420239386902920, -0.971408369862042040, -0.971396497908660230, -0.971384623526787120, -0.971372746716452460, -0.971360867477686020, -0.971348985810517320, +-0.971337101714976230, -0.971325215191092380, -0.971313326238895440, -0.971301434858415250, -0.971289541049681350, -0.971277644812723720, -0.971265746147571880, -0.971253845054255830, +-0.971241941532804960, -0.971230035583249380, -0.971218127205618620, -0.971206216399942650, -0.971194303166251100, -0.971182387504573750, -0.971170469414940450, -0.971158548897381070, +-0.971146625951925250, -0.971134700578602850, -0.971122772777443630, -0.971110842548477570, -0.971098909891734420, -0.971086974807243930, -0.971075037295036080, -0.971063097355140510, +-0.971051154987587320, -0.971039210192406130, -0.971027262969627050, -0.971015313319279700, -0.971003361241394190, -0.970991406736000150, -0.970979449803127670, -0.970967490442806500, +-0.970955528655066740, -0.970943564439938010, -0.970931597797450530, -0.970919628727633930, -0.970907657230518310, -0.970895683306133410, -0.970883706954509430, -0.970871728175676240, +-0.970859746969663600, -0.970847763336501690, -0.970835777276220280, -0.970823788788849450, -0.970811797874419180, -0.970799804532959440, -0.970787808764500100, -0.970775810569071360, +-0.970763809946703080, -0.970751806897425240, -0.970739801421267810, -0.970727793518261000, -0.970715783188434540, -0.970703770431818770, -0.970691755248443530, -0.970679737638338920, +-0.970667717601534920, -0.970655695138061710, -0.970643670247949180, -0.970631642931227500, -0.970619613187926780, -0.970607581018076870, -0.970595546421708200, -0.970583509398850520, +-0.970571469949534140, -0.970559428073789030, -0.970547383771645400, -0.970535337043133330, -0.970523287888282900, -0.970511236307124210, -0.970499182299687460, -0.970487125866002720, +-0.970475067006100200, -0.970463005720009990, -0.970450942007762270, -0.970438875869387260, -0.970426807304915040, -0.970414736314375690, -0.970402662897799640, -0.970390587055216860, +-0.970378508786657550, -0.970366428092152120, -0.970354344971730450, -0.970342259425423070, -0.970330171453259950, -0.970318081055271510, -0.970305988231487730, -0.970293892981939130, +-0.970281795306655590, -0.970269695205667750, -0.970257592679005580, -0.970245487726699500, -0.970233380348779590, -0.970221270545276400, -0.970209158316219900, -0.970197043661640500, +-0.970184926581568520, -0.970172807076034260, -0.970160685145067920, -0.970148560788699930, -0.970136434006960480, -0.970124304799879990, -0.970112173167488770, -0.970100039109817010, +-0.970087902626895260, -0.970075763718753700, -0.970063622385422760, -0.970051478626932750, -0.970039332443313970, -0.970027183834596960, -0.970015032800811920, -0.970002879341989370, +-0.969990723458159620, -0.969978565149352990, -0.969966404415600000, -0.969954241256930970, -0.969942075673376420, -0.969929907664966560, -0.969917737231732020, -0.969905564373703120, +-0.969893389090910270, -0.969881211383384010, -0.969869031251154650, -0.969856848694252700, -0.969844663712708720, -0.969832476306553000, -0.969820286475816080, -0.969808094220528600, +-0.969795899540720760, -0.969783702436423200, -0.969771502907666340, -0.969759300954480820, -0.969747096576896950, -0.969734889774945370, -0.969722680548656510, -0.969710468898061120, +-0.969698254823189390, -0.969686038324072070, -0.969673819400739600, -0.969661598053222720, -0.969649374281551730, -0.969637148085757290, -0.969624919465870150, -0.969612688421920500, +-0.969600454953939320, -0.969588219061956910, -0.969575980746003930, -0.969563740006111010, -0.969551496842308790, -0.969539251254627700, -0.969527003243098710, -0.969514752807752010, +-0.969502499948618480, -0.969490244665728750, -0.969477986959113360, -0.969465726828802940, -0.969453464274828370, -0.969441199297220060, -0.969428931896008760, -0.969416662071225010, +-0.969404389822899780, -0.969392115151063490, -0.969379838055746900, -0.969367558536980760, -0.969355276594795700, -0.969342992229222490, -0.969330705440291760, -0.969318416228034270, +-0.969306124592480670, -0.969293830533661920, -0.969281534051608440, -0.969269235146351220, -0.969256933817920880, -0.969244630066348200, -0.969232323891664030, -0.969220015293898900, +-0.969207704273083780, -0.969195390829249550, -0.969183074962426620, -0.969170756672646180, -0.969158435959938780, -0.969146112824335160, -0.969133787265866410, -0.969121459284563170, +-0.969109128880456310, -0.969096796053576570, -0.969084460803954940, -0.969072123131622050, -0.969059783036608890, -0.969047440518946200, -0.969035095578665070, -0.969022748215796040, +-0.969010398430370290, -0.968998046222418470, -0.968985691591971570, -0.968973334539060320, -0.968960975063715810, -0.968948613165968920, -0.968936248845850390, -0.968923882103391310, +-0.968911512938622430, -0.968899141351574960, -0.968886767342279520, -0.968874390910767100, -0.968862012057068790, -0.968849630781215440, -0.968837247083238040, -0.968824860963167440, +-0.968812472421034740, -0.968800081456870910, -0.968787688070706810, -0.968775292262573530, -0.968762894032501930, -0.968750493380523210, -0.968738090306668130, -0.968725684810967990, +-0.968713276893453430, -0.968700866554155880, -0.968688453793106090, -0.968676038610335130, -0.968663621005874110, -0.968651200979753990, -0.968638778532005970, -0.968626353662660920, +-0.968613926371750030, -0.968601496659304280, -0.968589064525354760, -0.968576629969932660, -0.968564192993068950, -0.968551753594794730, -0.968539311775141190, -0.968526867534139300, +-0.968514420871820380, -0.968501971788215290, -0.968489520283355220, -0.968477066357271490, -0.968464610009994950, -0.968452151241557040, -0.968439690051988710, -0.968427226441321070, +-0.968414760409585410, -0.968402291956812820, -0.968389821083034510, -0.968377347788281660, -0.968364872072585480, -0.968352393935977160, -0.968339913378487680, -0.968327430400148570, +-0.968314945000990800, -0.968302457181045790, -0.968289966940344530, -0.968277474278918420, -0.968264979196798550, -0.968252481694016230, -0.968239981770602780, -0.968227479426589380, +-0.968214974662007230, -0.968202467476887650, -0.968189957871261830, -0.968177445845161300, -0.968164931398616920, -0.968152414531660340, -0.968139895244322760, -0.968127373536635360, +-0.968114849408629690, -0.968102322860336710, -0.968089793891788060, -0.968077262503014730, -0.968064728694048470, -0.968052192464920250, -0.968039653815661590, -0.968027112746303820, +-0.968014569256878230, -0.968002023347416250, -0.967989475017949190, -0.967976924268508450, -0.967964371099125480, -0.967951815509831450, -0.967939257500657900, -0.967926697071636260, +-0.967914134222797820, -0.967901568954174120, -0.967889001265796470, -0.967876431157696280, -0.967863858629904980, -0.967851283682454210, -0.967838706315375050, -0.967826126528699260, +-0.967813544322458030, -0.967800959696683010, -0.967788372651405490, -0.967775783186657250, -0.967763191302469350, -0.967750596998873560, -0.967738000275901290, -0.967725401133583960, +-0.967712799571953220, -0.967700195591040370, -0.967687589190877160, -0.967674980371494910, -0.967662369132925140, -0.967649755475199490, -0.967637139398349500, -0.967624520902406580, +-0.967611899987402490, -0.967599276653368530, -0.967586650900336460, -0.967574022728337700, -0.967561392137404000, -0.967548759127566660, -0.967536123698857550, -0.967523485851307980, +-0.967510845584949820, -0.967498202899814470, -0.967485557795933700, -0.967472910273339040, -0.967460260332062120, -0.967447607972134360, -0.967434953193587740, -0.967422295996453680, +-0.967409636380763940, -0.967396974346550140, -0.967384309893843830, -0.967371643022676750, -0.967358973733080550, -0.967346302025086980, -0.967333627898727570, -0.967320951354034180, +-0.967308272391038340, -0.967295591009771800, -0.967282907210266330, -0.967270220992553660, -0.967257532356665340, -0.967244841302633220, -0.967232147830488940, -0.967219451940264370, +-0.967206753631991160, -0.967194052905701150, -0.967181349761425890, -0.967168644199197240, -0.967155936219047050, -0.967143225821006870, -0.967130513005108880, -0.967117797771384400, +-0.967105080119865510, -0.967092360050583850, -0.967079637563571400, -0.967066912658859800, -0.967054185336480910, -0.967041455596466590, -0.967028723438848600, -0.967015988863658800, +-0.967003251870929060, -0.966990512460691230, -0.966977770632977070, -0.966965026387818450, -0.966952279725247330, -0.966939530645295480, -0.966926779147994740, -0.966914025233377110, +-0.966901268901474430, -0.966888510152318580, -0.966875748985941420, -0.966862985402374920, -0.966850219401650950, -0.966837450983801470, -0.966824680148858250, -0.966811906896853480, +-0.966799131227818800, -0.966786353141786400, -0.966773572638788050, -0.966760789718855820, -0.966748004382021580, -0.966735216628317300, -0.966722426457775060, -0.966709633870426740, +-0.966696838866304200, -0.966684041445439730, -0.966671241607865110, -0.966658439353612400, -0.966645634682713580, -0.966632827595200640, -0.966620018091105650, -0.966607206170460590, +-0.966594391833297540, -0.966581575079648480, -0.966568755909545610, -0.966555934323020670, -0.966543110320105980, -0.966530283900833510, -0.966517455065235340, -0.966504623813343570, +-0.966491790145190270, -0.966478954060807420, -0.966466115560227210, -0.966453274643481630, -0.966440431310602980, -0.966427585561623110, -0.966414737396574460, -0.966401886815488780, +-0.966389033818398580, -0.966376178405335630, -0.966363320576332230, -0.966350460331420690, -0.966337597670632880, -0.966324732594001090, -0.966311865101557420, -0.966298995193334180, +-0.966286122869363440, -0.966273248129677410, -0.966260370974308170, -0.966247491403288140, -0.966234609416649180, -0.966221725014423940, -0.966208838196644160, -0.966195948963342490, +-0.966183057314550790, -0.966170163250301580, -0.966157266770626850, -0.966144367875559020, -0.966131466565130160, -0.966118562839372810, -0.966105656698318940, -0.966092748142000860, +-0.966079837170451090, -0.966066923783701510, -0.966054007981784870, -0.966041089764733020, -0.966028169132578500, -0.966015246085353610, -0.966002320623090550, -0.965989392745821740, +-0.965976462453579380, -0.965963529746395880, -0.965950594624303660, -0.965937657087334810, -0.965924717135521860, -0.965911774768897110, -0.965898829987492990, -0.965885882791341800, +-0.965872933180475850, -0.965859981154927550, -0.965847026714729330, -0.965834069859913490, -0.965821110590512570, -0.965808148906558860, -0.965795184808084680, -0.965782218295122670, +-0.965769249367705030, -0.965756278025864280, -0.965743304269632840, -0.965730328099043130, -0.965717349514127580, -0.965704368514918700, -0.965691385101448920, -0.965678399273750650, +-0.965665411031856320, -0.965652420375798570, -0.965639427305609700, -0.965626431821322240, -0.965613433922968720, -0.965600433610581680, -0.965587430884193520, -0.965574425743836780, +-0.965561418189544000, -0.965548408221347580, -0.965535395839280270, -0.965522381043374400, -0.965509363833662590, -0.965496344210177380, -0.965483322172951300, -0.965470297722016870, +-0.965457270857406740, -0.965444241579153430, -0.965431209887289590, -0.965418175781847630, -0.965405139262860200, -0.965392100330359940, -0.965379058984379590, -0.965366015224951360, +-0.965352969052108320, -0.965339920465882680, -0.965326869466307300, -0.965313816053414710, -0.965300760227237650, -0.965287701987808670, -0.965274641335160390, -0.965261578269325570, +-0.965248512790336740, -0.965235444898226660, -0.965222374593027950, -0.965209301874773380, -0.965196226743495480, -0.965183149199227100, -0.965170069242000770, -0.965156986871849250, +-0.965143902088805290, -0.965130814892901650, -0.965117725284170840, -0.965104633262645840, -0.965091538828359070, -0.965078441981343630, -0.965065342721632020, -0.965052241049257020, +-0.965039136964251590, -0.965026030466648140, -0.965012921556479660, -0.964999810233778900, -0.964986696498578600, -0.964973580350911520, -0.964960461790810630, -0.964947340818308460, +-0.964934217433437990, -0.964921091636231850, -0.964907963426723140, -0.964894832804944480, -0.964881699770928750, -0.964868564324708690, -0.964855426466317280, -0.964842286195787270, +-0.964829143513151630, -0.964815998418443010, -0.964802850911694490, -0.964789700992938810, -0.964776548662208850, -0.964763393919537580, -0.964750236764957750, -0.964737077198502440, +-0.964723915220204290, -0.964710750830096500, -0.964697584028211710, -0.964684414814583110, -0.964671243189243350, -0.964658069152225520, -0.964644892703562460, -0.964631713843287280, +-0.964618532571432710, -0.964605348888031950, -0.964592162793117660, -0.964578974286723010, -0.964565783368880990, -0.964552590039624460, -0.964539394298986390, -0.964526196146999970, +-0.964512995583697960, -0.964499792609113450, -0.964486587223279510, -0.964473379426229130, -0.964460169217995270, -0.964446956598611020, -0.964433741568109350, -0.964420524126523240, +-0.964407304273885990, -0.964394082010230360, -0.964380857335589540, -0.964367630249996610, -0.964354400753484660, -0.964341168846086560, -0.964327934527835720, -0.964314697798764890, +-0.964301458658907370, -0.964288217108296150, -0.964274973146964530, -0.964261726774945260, -0.964248477992271870, -0.964235226798977220, -0.964221973195094510, -0.964208717180656820, +-0.964195458755697340, -0.964182197920249280, -0.964168934674345720, -0.964155669018019750, -0.964142400951304660, -0.964129130474233540, -0.964115857586839600, -0.964102582289156130, +-0.964089304581216110, -0.964076024463052850, -0.964062741934699430, -0.964049456996189270, -0.964036169647555450, -0.964022879888831170, -0.964009587720049630, -0.963996293141244240, +-0.963982996152448090, -0.963969696753694370, -0.963956394945016500, -0.963943090726447680, -0.963929784098021100, -0.963916475059769960, -0.963903163611727790, -0.963889849753927550, +-0.963876533486402790, -0.963863214809186690, -0.963849893722312560, -0.963836570225813590, -0.963823244319723330, -0.963809916004074840, -0.963796585278901660, -0.963783252144236990, +-0.963769916600114240, -0.963756578646566610, -0.963743238283627510, -0.963729895511330370, -0.963716550329708490, -0.963703202738795280, -0.963689852738623950, -0.963676500329228140, +-0.963663145510640920, -0.963649788282895940, -0.963636428646026500, -0.963623066600065910, -0.963609702145047710, -0.963596335281005300, -0.963582966007972000, -0.963569594325981220, +-0.963556220235066490, -0.963542843735261330, -0.963529464826598850, -0.963516083509112890, -0.963502699782836650, -0.963489313647803660, -0.963475925104047450, -0.963462534151601320, +-0.963449140790498930, -0.963435745020773560, -0.963422346842458980, -0.963408946255588480, -0.963395543260195720, -0.963382137856313880, -0.963368730043976940, -0.963355319823217980, +-0.963341907194070870, -0.963328492156568910, -0.963315074710745730, -0.963301654856634770, -0.963288232594269880, -0.963274807923684250, -0.963261380844911640, -0.963247951357985580, +-0.963234519462939700, -0.963221085159807420, -0.963207648448622500, -0.963194209329418350, -0.963180767802228830, -0.963167323867087250, -0.963153877524027480, -0.963140428773082920, +-0.963126977614287340, -0.963113524047674360, -0.963100068073277530, -0.963086609691130580, -0.963073148901266940, -0.963059685703720580, -0.963046220098525030, -0.963032752085713820, +-0.963019281665320800, -0.963005808837379520, -0.962992333601923710, -0.962978855958987130, -0.962965375908603430, -0.962951893450806230, -0.962938408585629290, -0.962924921313106470, +-0.962911431633271200, -0.962897939546157320, -0.962884445051798710, -0.962870948150228890, -0.962857448841481720, -0.962843947125590960, -0.962830443002590350, -0.962816936472513650, +-0.962803427535394500, -0.962789916191266860, -0.962776402440164490, -0.962762886282121030, -0.962749367717170350, -0.962735846745346290, -0.962722323366682620, -0.962708797581213080, +-0.962695269388971540, -0.962681738789991860, -0.962668205784307900, -0.962654670371953290, -0.962641132552962130, -0.962627592327368050, -0.962614049695205030, -0.962600504656506930, +-0.962586957211307490, -0.962573407359640700, -0.962559855101540410, -0.962546300437040480, -0.962532743366174780, -0.962519183888977280, -0.962505622005481730, -0.962492057715722100, +-0.962478491019732370, -0.962464921917546510, -0.962451350409198270, -0.962437776494721620, -0.962424200174150530, -0.962410621447518990, -0.962397040314860840, -0.962383456776210180, +-0.962369870831600750, -0.962356282481066750, -0.962342691724642040, -0.962329098562360490, -0.962315502994256280, -0.962301905020363280, -0.962288304640715570, -0.962274701855347140, +-0.962261096664291830, -0.962247489067583840, -0.962233879065257150, -0.962220266657345720, -0.962206651843883650, -0.962193034624904910, -0.962179415000443680, -0.962165792970533840, +-0.962152168535209570, -0.962138541694504750, -0.962124912448453770, -0.962111280797090300, -0.962097646740448730, -0.962084010278563050, -0.962070371411467340, -0.962056730139195790, +-0.962043086461782270, -0.962029440379261080, -0.962015791891666310, -0.962002140999032030, -0.961988487701392450, -0.961974831998781640, -0.961961173891233700, -0.961947513378782930, +-0.961933850461463290, -0.961920185139308990, -0.961906517412354330, -0.961892847280633290, -0.961879174744180170, -0.961865499803029160, -0.961851822457214340, -0.961838142706769930, +-0.961824460551730210, -0.961810775992129270, -0.961797089028001540, -0.961783399659380980, -0.961769707886302010, -0.961756013708798600, -0.961742317126905280, -0.961728618140656130, +-0.961714916750085580, -0.961701212955227590, -0.961687506756116580, -0.961673798152786750, -0.961660087145272510, -0.961646373733608060, -0.961632657917827700, -0.961618939697965640, +-0.961605219074056270, -0.961591496046133810, -0.961577770614232550, -0.961564042778386920, -0.961550312538631210, -0.961536579894999740, -0.961522844847526810, -0.961509107396246730, +-0.961495367541193910, -0.961481625282402660, -0.961467880619907290, -0.961454133553742320, -0.961440384083941950, -0.961426632210540700, -0.961412877933572770, -0.961399121253072700, +-0.961385362169074780, -0.961371600681613540, -0.961357836790723290, -0.961344070496438440, -0.961330301798793310, -0.961316530697822520, -0.961302757193560400, -0.961288981286041340, +-0.961275202975299890, -0.961261422261370350, -0.961247639144287350, -0.961233853624085200, -0.961220065700798430, -0.961206275374461460, -0.961192482645108930, -0.961178687512775020, +-0.961164889977494500, -0.961151090039301660, -0.961137287698231260, -0.961123482954317490, -0.961109675807595100, -0.961095866258098400, -0.961082054305862240, -0.961068239950920720, +-0.961054423193308800, -0.961040604033060690, -0.961026782470211120, -0.961012958504794510, -0.960999132136845620, -0.960985303366398870, -0.960971472193488770, -0.960957638618150200, +-0.960943802640417340, -0.960929964260325060, -0.960916123477907780, -0.960902280293200350, -0.960888434706237080, -0.960874586717052840, -0.960860736325682030, -0.960846883532159410, +-0.960833028336519620, -0.960819170738797190, -0.960805310739026860, -0.960791448337243280, -0.960777583533481080, -0.960763716327774910, -0.960749846720159400, -0.960735974710669400, +-0.960722100299339350, -0.960708223486203990, -0.960694344271298300, -0.960680462654656560, -0.960666578636313770, -0.960652692216304450, -0.960638803394663450, -0.960624912171425430, +-0.960611018546625120, -0.960597122520297160, -0.960583224092476540, -0.960569323263197880, -0.960555420032495830, -0.960541514400405250, -0.960527606366960880, -0.960513695932197490, +-0.960499783096149920, -0.960485867858852820, -0.960471950220341150, -0.960458030180649460, -0.960444107739812810, -0.960430182897865860, -0.960416255654843450, -0.960402326010780350, +-0.960388393965711520, -0.960374459519671710, -0.960360522672695670, -0.960346583424818380, -0.960332641776074580, -0.960318697726499250, -0.960304751276127020, -0.960290802424993100, +-0.960276851173132110, -0.960262897520579030, -0.960248941467368610, -0.960234983013535940, -0.960221022159115760, -0.960207058904143040, -0.960193093248652540, -0.960179125192679560, +-0.960165154736258520, -0.960151181879424720, -0.960137206622213020, -0.960123228964658180, -0.960109248906795390, -0.960095266448659390, -0.960081281590285270, -0.960067294331707900, +-0.960053304672962350, -0.960039312614083480, -0.960025318155106390, -0.960011321296065920, -0.959997322036997280, -0.959983320377935210, -0.959969316318914910, -0.959955309859971240, +-0.959941301001139390, -0.959927289742454230, -0.959913276083950830, -0.959899260025664280, -0.959885241567629670, -0.959871220709881840, -0.959857197452455900, -0.959843171795387030, +-0.959829143738710310, -0.959815113282460720, -0.959801080426673230, -0.959787045171383140, -0.959773007516625310, -0.959758967462435160, -0.959744925008847450, -0.959730880155897470, +-0.959716832903620310, -0.959702783252051050, -0.959688731201224780, -0.959674676751176790, -0.959660619901941960, -0.959646560653555800, -0.959632499006052960, -0.959618434959469080, +-0.959604368513839010, -0.959590299669198070, -0.959576228425581430, -0.959562154783024090, -0.959548078741561560, -0.959534000301228600, -0.959519919462060830, -0.959505836224093130, +-0.959491750587360910, -0.959477662551899260, -0.959463572117743580, -0.959449479284928850, -0.959435384053490490, -0.959421286423463580, -0.959407186394883540, -0.959393083967785440, +-0.959378979142204710, -0.959364871918176540, -0.959350762295736240, -0.959336650274918880, -0.959322535855759990, -0.959308419038294780, -0.959294299822558430, -0.959280178208586460, +-0.959266054196413860, -0.959251927786076260, -0.959237798977608860, -0.959223667771046950, -0.959209534166425850, -0.959195398163780850, -0.959181259763147390, -0.959167118964560860, +-0.959152975768056470, -0.959138830173669740, -0.959124682181435760, -0.959110531791390160, -0.959096379003568260, -0.959082223818005450, -0.959068066234736950, -0.959053906253798380, +-0.959039743875224950, -0.959025579099052280, -0.959011411925315580, -0.958997242354050370, -0.958983070385292070, -0.958968896019076090, -0.958954719255437850, -0.958940540094412870, +-0.958926358536036470, -0.958912174580344170, -0.958897988227371600, -0.958883799477153850, -0.958869608329726670, -0.958855414785125480, -0.958841218843385800, -0.958827020504543050, +-0.958812819768632750, -0.958798616635690330, -0.958784411105751410, -0.958770203178851420, -0.958755992855026110, -0.958741780134310550, -0.958727565016740720, -0.958713347502351930, +-0.958699127591179700, -0.958684905283259780, -0.958670680578627590, -0.958656453477318650, -0.958642223979368490, -0.958627992084812970, -0.958613757793687290, -0.958599521106027310, +-0.958585282021868430, -0.958571040541246530, -0.958556796664196800, -0.958542550390755310, -0.958528301720957270, -0.958514050654838520, -0.958499797192434720, -0.958485541333781390, +-0.958471283078914160, -0.958457022427868790, -0.958442759380680690, -0.958428493937385830, -0.958414226098019740, -0.958399955862618060, -0.958385683231216530, -0.958371408203850810, +-0.958357130780556510, -0.958342850961369400, -0.958328568746325220, -0.958314284135459490, -0.958299997128808200, -0.958285707726406750, -0.958271415928291130, -0.958257121734496950, +-0.958242825145059980, -0.958228526160015970, -0.958214224779400660, -0.958199921003249690, -0.958185614831599030, -0.958171306264484210, -0.958156995301941210, -0.958142681944005760, +-0.958128366190713510, -0.958114048042100430, -0.958099727498202160, -0.958085404559054670, -0.958071079224693480, -0.958056751495154790, -0.958042421370474130, -0.958028088850687460, +-0.958013753935830550, -0.957999416625939240, -0.957985076921049390, -0.957970734821196880, -0.957956390326417440, -0.957942043436747160, -0.957927694152221680, -0.957913342472876960, +-0.957898988398748870, -0.957884631929873390, -0.957870273066286250, -0.957855911808023430, -0.957841548155121010, -0.957827182107614530, -0.957812813665540160, -0.957798442828933670, +-0.957784069597831240, -0.957769693972268520, -0.957755315952281580, -0.957740935537906290, -0.957726552729178840, -0.957712167526134860, -0.957697779928810560, -0.957683389937241670, +-0.957668997551464400, -0.957654602771514600, -0.957640205597428350, -0.957625806029241520, -0.957611404066990300, -0.957596999710710440, -0.957582592960438130, -0.957568183816209340, +-0.957553772278060040, -0.957539358346026330, -0.957524942020144270, -0.957510523300449830, -0.957496102186979000, -0.957481678679768080, -0.957467252778852810, -0.957452824484269490, +-0.957438393796054110, -0.957423960714242740, -0.957409525238871460, -0.957395087369976470, -0.957380647107593630, -0.957366204451759240, -0.957351759402509270, -0.957337311959879920, +-0.957322862123907270, -0.957308409894627510, -0.957293955272076720, -0.957279498256290990, -0.957265038847306630, -0.957250577045159590, -0.957236112849886190, -0.957221646261522400, +-0.957207177280104520, -0.957192705905668740, -0.957178232138251150, -0.957163755977888050, -0.957149277424615530, -0.957134796478469770, -0.957120313139487090, -0.957105827407703560, +-0.957091339283155480, -0.957076848765879060, -0.957062355855910600, -0.957047860553286060, -0.957033362858042080, -0.957018862770214530, -0.957004360289839930, -0.956989855416954360, +-0.956975348151594130, -0.956960838493795650, -0.956946326443594900, -0.956931812001028500, -0.956917295166132440, -0.956902775938943240, -0.956888254319497090, -0.956873730307830290, +-0.956859203903979160, -0.956844675107980100, -0.956830143919869200, -0.956815610339683100, -0.956801074367457760, -0.956786536003229940, -0.956771995247035710, -0.956757452098911500, +-0.956742906558893600, -0.956728358627018550, -0.956713808303322530, -0.956699255587841970, -0.956684700480613270, -0.956670142981672860, -0.956655583091057030, -0.956641020808802310, +-0.956626456134945010, -0.956611889069521550, -0.956597319612568440, -0.956582747764122000, -0.956568173524218750, -0.956553596892894880, -0.956539017870187250, -0.956524436456131940, +-0.956509852650765600, -0.956495266454124530, -0.956480677866245350, -0.956466086887164500, -0.956451493516918380, -0.956436897755543520, -0.956422299603076560, -0.956407699059553700, +-0.956393096125011550, -0.956378490799486890, -0.956363883083015790, -0.956349272975635100, -0.956334660477381140, -0.956320045588290650, -0.956305428308399930, -0.956290808637745740, +-0.956276186576364370, -0.956261562124292700, -0.956246935281567010, -0.956232306048224070, -0.956217674424300280, -0.956203040409832390, -0.956188404004856830, -0.956173765209410330, +-0.956159124023529320, -0.956144480447250640, -0.956129834480610620, -0.956115186123646100, -0.956100535376393610, -0.956085882238889680, -0.956071226711171170, -0.956056568793274500, +-0.956041908485236510, -0.956027245787093640, -0.956012580698882840, -0.955997913220640430, -0.955983243352403260, -0.955968571094207960, -0.955953896446091300, -0.955939219408089790, +-0.955924539980240410, -0.955909858162579450, -0.955895173955144010, -0.955880487357970600, -0.955865798371095980, -0.955851106994556890, -0.955836413228389970, -0.955821717072631970, +-0.955807018527319750, -0.955792317592490060, -0.955777614268179420, -0.955762908554424920, -0.955748200451262960, -0.955733489958730640, -0.955718777076864590, -0.955704061805701550, +-0.955689344145278400, -0.955674624095631860, -0.955659901656798700, -0.955645176828815890, -0.955630449611720060, -0.955615720005548170, -0.955600988010336880, -0.955586253626123260, +-0.955571516852943840, -0.955556777690835800, -0.955542036139835680, -0.955527292199980560, -0.955512545871307180, -0.955497797153852410, -0.955483046047653220, -0.955468292552746350, +-0.955453536669168770, -0.955438778396957340, -0.955424017736148930, -0.955409254686780510, -0.955394489248889030, -0.955379721422511260, -0.955364951207684170, -0.955350178604444710, +-0.955335403612829760, -0.955320626232876390, -0.955305846464621470, -0.955291064308101840, -0.955276279763354610, -0.955261492830416610, -0.955246703509324950, -0.955231911800116460, +-0.955217117702828240, -0.955202321217497260, -0.955187522344160490, -0.955172721082854890, -0.955157917433617440, -0.955143111396485220, -0.955128302971495200, -0.955113492158684460, +-0.955098678958089970, -0.955083863369748820, -0.955069045393697970, -0.955054225029974500, -0.955039402278615500, -0.955024577139658050, -0.955009749613139000, -0.954994919699095780, +-0.954980087397565120, -0.954965252708584230, -0.954950415632190300, -0.954935576168420290, -0.954920734317311280, -0.954905890078900480, -0.954891043453224950, -0.954876194440321790, +-0.954861343040228290, -0.954846489252981320, -0.954831633078618070, -0.954816774517175840, -0.954801913568691600, -0.954787050233202650, -0.954772184510746080, -0.954757316401358970, +-0.954742445905078620, -0.954727573021942110, -0.954712697751986750, -0.954697820095249510, -0.954682940051767790, -0.954668057621578800, -0.954653172804719620, -0.954638285601227430, +-0.954623396011139550, -0.954608504034493270, -0.954593609671325670, -0.954578712921674070, -0.954563813785575640, -0.954548912263067710, -0.954534008354187450, -0.954519102058972280, +-0.954504193377459290, -0.954489282309685770, -0.954474368855689040, -0.954459453015506500, -0.954444534789175240, -0.954429614176732780, -0.954414691178216090, -0.954399765793662810, +-0.954384838023110030, -0.954369907866595260, -0.954354975324155590, -0.954340040395828540, -0.954325103081651420, -0.954310163381661410, -0.954295221295896170, -0.954280276824392760, +-0.954265329967188710, -0.954250380724321330, -0.954235429095828040, -0.954220475081746120, -0.954205518682113010, -0.954190559896966110, -0.954175598726342940, -0.954160635170280600, +-0.954145669228816720, -0.954130700901988700, -0.954115730189833870, -0.954100757092389730, -0.954085781609693820, -0.954070803741783320, -0.954055823488695890, -0.954040840850468810, +-0.954025855827139610, -0.954010868418745830, -0.953995878625324870, -0.953980886446914260, -0.953965891883551410, -0.953950894935273850, -0.953935895602119000, -0.953920893884124490, +-0.953905889781327620, -0.953890883293766150, -0.953875874421477370, -0.953860863164499030, -0.953845849522868440, -0.953830833496623230, -0.953815815085800930, -0.953800794290439180, +-0.953785771110575390, -0.953770745546247190, -0.953755717597492000, -0.953740687264347690, -0.953725654546851540, -0.953710619445041320, -0.953695581958954540, -0.953680542088628850, +-0.953665499834101760, -0.953650455195410810, -0.953635408172593960, -0.953620358765688400, -0.953605306974732000, -0.953590252799762280, -0.953575196240817100, -0.953560137297933760, +-0.953545075971150120, -0.953530012260503820, -0.953514946166032500, -0.953499877687773780, -0.953484806825765420, -0.953469733580044940, -0.953454657950650210, -0.953439579937618740, +-0.953424499540988510, -0.953409416760796820, -0.953394331597081650, -0.953379244049880730, -0.953364154119231590, -0.953349061805172200, -0.953333967107740100, -0.953318870026973020, +-0.953303770562908830, -0.953288668715585260, -0.953273564485039860, -0.953258457871310690, -0.953243348874435290, -0.953228237494451620, -0.953213123731397220, -0.953198007585310150, +-0.953182889056227940, -0.953167768144188690, -0.953152644849229790, -0.953137519171389450, -0.953122391110705180, -0.953107260667214960, -0.953092127840956760, -0.953076992631967990, +-0.953061855040286950, -0.953046715065951180, -0.953031572708998630, -0.953016427969467060, -0.953001280847394550, -0.952986131342818730, -0.952970979455777690, -0.952955825186309170, +-0.952940668534451140, -0.952925509500241350, -0.952910348083717770, -0.952895184284918370, -0.952880018103881010, -0.952864849540643540, -0.952849678595244050, -0.952834505267720290, +-0.952819329558110330, -0.952804151466452030, -0.952788970992783260, -0.952773788137142200, -0.952758602899566490, -0.952743415280094430, -0.952728225278763770, -0.952713032895612600, +-0.952697838130678760, -0.952682640984000460, -0.952667441455615440, -0.952652239545561890, -0.952637035253877660, -0.952621828580600960, -0.952606619525769640, -0.952591408089421780, +-0.952576194271595340, -0.952560978072328420, -0.952545759491659090, -0.952530538529625330, -0.952515315186265200, -0.952500089461616790, -0.952484861355718300, -0.952469630868607480, +-0.952454398000322720, -0.952439162750901900, -0.952423925120383210, -0.952408685108804610, -0.952393442716204410, -0.952378197942620460, -0.952362950788091190, -0.952347701252654440, +-0.952332449336348530, -0.952317195039211310, -0.952301938361281300, -0.952286679302596360, -0.952271417863194690, -0.952256154043114480, -0.952240887842394020, -0.952225619261071190, +-0.952210348299184380, -0.952195074956771690, -0.952179799233871300, -0.952164521130521410, -0.952149240646760210, -0.952133957782625990, -0.952118672538156740, -0.952103384913390860, +-0.952088094908366540, -0.952072802523121990, -0.952057507757695380, -0.952042210612125130, -0.952026911086449210, -0.952011609180706150, -0.951996304894933920, -0.951980998229171040, +-0.951965689183455590, -0.951950377757825980, -0.951935063952320410, -0.951919747766977190, -0.951904429201834600, -0.951889108256930850, -0.951873784932304460, -0.951858459227993500, +-0.951843131144036400, -0.951827800680471460, -0.951812467837337190, -0.951797132614671580, -0.951781795012513250, -0.951766455030900290, -0.951751112669871340, -0.951735767929464460, +-0.951720420809718300, -0.951705071310671060, -0.951689719432361140, -0.951674365174826840, -0.951659008538106700, -0.951643649522239010, -0.951628288127262190, -0.951612924353214650, +-0.951597558200134920, -0.951582189668061070, -0.951566818757031860, -0.951551445467085700, -0.951536069798260780, -0.951520691750595840, -0.951505311324128970, -0.951489928518899020, +-0.951474543334944080, -0.951459155772302890, -0.951443765831013750, -0.951428373511115310, -0.951412978812645750, -0.951397581735643930, -0.951382182280148040, -0.951366780446196820, +-0.951351376233828480, -0.951335969643081870, -0.951320560673995170, -0.951305149326607150, -0.951289735600956200, -0.951274319497081080, -0.951258901015019980, -0.951243480154811640, +-0.951228056916494700, -0.951212631300107580, -0.951197203305688910, -0.951181772933277100, -0.951166340182911020, -0.951150905054628960, -0.951135467548469780, -0.951120027664471790, +-0.951104585402673840, -0.951089140763114350, -0.951073693745832060, -0.951058244350865500, -0.951042792578253420, -0.951027338428034220, -0.951011881900246770, -0.950996422994929590, +-0.950980961712121320, -0.950965498051860700, -0.950950032014186260, -0.950934563599136860, -0.950919092806750910, -0.950903619637067380, -0.950888144090124680, -0.950872666165961670, +-0.950857185864616980, -0.950841703186129370, -0.950826218130537360, -0.950810730697880020, -0.950795240888195670, -0.950779748701523380, -0.950764254137901550, -0.950748757197369180, +-0.950733257879964880, -0.950717756185727510, -0.950702252114695720, -0.950686745666908250, -0.950671236842403950, -0.950655725641221580, -0.950640212063399880, -0.950624696108977600, +-0.950609177777993590, -0.950593657070486710, -0.950578133986495600, -0.950562608526059230, -0.950547080689216340, -0.950531550476005680, -0.950516017886466220, -0.950500482920636600, +-0.950484945578555900, -0.950469405860262740, -0.950453863765796210, -0.950438319295194840, -0.950422772448497820, -0.950407223225743780, -0.950391671626971690, -0.950376117652220410, +-0.950360561301528910, -0.950345002574935930, -0.950329441472480440, -0.950313877994201420, -0.950298312140137710, -0.950282743910328190, -0.950267173304811810, -0.950251600323627540, +-0.950236024966814140, -0.950220447234410790, -0.950204867126456240, -0.950189284642989570, -0.950173699784049750, -0.950158112549675640, -0.950142522939906200, -0.950126930954780510, +-0.950111336594337440, -0.950095739858616060, -0.950080140747655340, -0.950064539261494260, -0.950048935400171770, -0.950033329163727070, -0.950017720552198910, -0.950002109565626470, +-0.949986496204048850, -0.949970880467505000, -0.949955262356033890, -0.949939641869674610, -0.949924019008466240, -0.949908393772447850, -0.949892766161658410, -0.949877136176137120, +-0.949861503815922940, -0.949845869081055060, -0.949830231971572460, -0.949814592487514320, -0.949798950628919720, -0.949783306395827640, -0.949767659788277370, -0.949752010806307890, +-0.949736359449958490, -0.949720705719268140, -0.949705049614275930, -0.949689391135021270, -0.949673730281543000, -0.949658067053880450, -0.949642401452072680, -0.949626733476159000, +-0.949611063126178490, -0.949595390402170230, -0.949579715304173510, -0.949564037832227650, -0.949548357986371490, -0.949532675766644570, -0.949516991173085860, -0.949501304205734860, +-0.949485614864630350, -0.949469923149812050, -0.949454229061318710, -0.949438532599189980, -0.949422833763464810, -0.949407132554182630, -0.949391428971382510, -0.949375723015103870, +-0.949360014685386000, -0.949344303982267990, -0.949328590905789360, -0.949312875455989080, -0.949297157632906670, -0.949281437436581440, -0.949265714867052580, -0.949249989924359380, +-0.949234262608541270, -0.949218532919637430, -0.949202800857687380, -0.949187066422730210, -0.949171329614805440, -0.949155590433952260, -0.949139848880210190, -0.949124104953618430, +-0.949108358654216500, -0.949092609982043590, -0.949076858937139220, -0.949061105519542700, -0.949045349729293330, -0.949029591566430740, -0.949013831030994020, -0.948998068123022790, +-0.948982302842556360, -0.948966535189634250, -0.948950765164295770, -0.948934992766580330, -0.948919217996527450, -0.948903440854176550, -0.948887661339566920, -0.948871879452738320, +-0.948856095193729930, -0.948840308562581280, -0.948824519559331890, -0.948808728184021180, -0.948792934436688660, -0.948777138317373870, -0.948761339826116100, -0.948745538962954990, +-0.948729735727930180, -0.948713930121080850, -0.948698122142446860, -0.948682311792067520, -0.948666499069982350, -0.948650683976230980, -0.948634866510852940, -0.948619046673887630, +-0.948603224465374820, -0.948587399885353790, -0.948571572933864400, -0.948555743610945970, -0.948539911916638330, -0.948524077850980700, -0.948508241414013130, -0.948492402605774720, +-0.948476561426305430, -0.948460717875644680, -0.948444871953832200, -0.948429023660907530, -0.948413172996910190, -0.948397319961880040, -0.948381464555856590, -0.948365606778879490, +-0.948349746630988260, -0.948333884112222750, -0.948318019222622490, -0.948302151962227340, -0.948286282331076590, -0.948270410329210220, -0.948254535956667870, -0.948238659213489150, +-0.948222780099713720, -0.948206898615381430, -0.948191014760531800, -0.948175128535204800, -0.948159239939439850, -0.948143348973276790, -0.948127455636755380, -0.948111559929915360, +-0.948095661852796370, -0.948079761405438260, -0.948063858587880780, -0.948047953400163680, -0.948032045842326700, -0.948016135914409470, -0.948000223616452090, -0.947984308948493950, +-0.947968391910575250, -0.947952472502735400, -0.947936550725014480, -0.947920626577452020, -0.947904700060088200, -0.947888771172962440, -0.947872839916114930, -0.947856906289585190, +-0.947840970293413300, -0.947825031927638890, -0.947809091192301940, -0.947793148087442190, -0.947777202613099610, -0.947761254769314170, -0.947745304556125380, -0.947729351973573440, +-0.947713397021698100, -0.947697439700539320, -0.947681480010136860, -0.947665517950530780, -0.947649553521760830, -0.947633586723866990, -0.947617617556889220, -0.947601646020867490, +-0.947585672115841550, -0.947569695841851470, -0.947553717198937000, -0.947537736187138440, -0.947521752806495420, -0.947505767057048140, -0.947489778938836240, -0.947473788451900110, +-0.947457795596279410, -0.947441800372014090, -0.947425802779144450, -0.947409802817710260, -0.947393800487751570, -0.947377795789308360, -0.947361788722420720, -0.947345779287128490, +-0.947329767483471970, -0.947313753311490920, -0.947297736771225530, -0.947281717862715760, -0.947265696586001680, -0.947249672941123390, -0.947233646928120950, -0.947217618547034350, +-0.947201587797903750, -0.947185554680769150, -0.947169519195670720, -0.947153481342648320, -0.947137441121742360, -0.947121398532992820, -0.947105353576439660, -0.947089306252123290, +-0.947073256560083450, -0.947057204500360680, -0.947041150072994720, -0.947025093278025980, -0.947009034115494530, -0.946992972585440460, -0.946976908687903850, -0.946960842422925110, +-0.946944773790544200, -0.946928702790801440, -0.946912629423736880, -0.946896553689390740, -0.946880475587803190, -0.946864395119014430, -0.946848312283064760, -0.946832227079994260, +-0.946816139509843220, -0.946800049572651740, -0.946783957268460320, -0.946767862597308830, -0.946751765559237790, -0.946735666154287280, -0.946719564382497600, -0.946703460243909060, +-0.946687353738561830, -0.946671244866496230, -0.946655133627752550, -0.946639020022370990, -0.946622904050391960, -0.946606785711855530, -0.946590665006802220, -0.946574541935272240, +-0.946558416497305990, -0.946542288692943550, -0.946526158522225550, -0.946510025985191960, -0.946493891081883420, -0.946477753812340120, -0.946461614176602460, -0.946445472174710760, +-0.946429327806705410, -0.946413181072626730, -0.946397031972515010, -0.946380880506410780, -0.946364726674354340, -0.946348570476386100, -0.946332411912546470, -0.946316250982875750, +-0.946300087687414360, -0.946283922026202930, -0.946267753999281540, -0.946251583606690820, -0.946235410848471070, -0.946219235724662930, -0.946203058235306590, -0.946186878380442580, +-0.946170696160111400, -0.946154511574353490, -0.946138324623209350, -0.946122135306719400, -0.946105943624924060, -0.946089749577863850, -0.946073553165579400, -0.946057354388110890, +-0.946041153245499090, -0.946024949737784390, -0.946008743865007330, -0.945992535627208310, -0.945976325024428080, -0.945960112056706940, -0.945943896724085630, -0.945927679026604570, +-0.945911458964304290, -0.945895236537225290, -0.945879011745408230, -0.945862784588893610, -0.945846555067722080, -0.945830323181934160, -0.945814088931570480, -0.945797852316671570, +-0.945781613337277950, -0.945765371993430360, -0.945749128285169330, -0.945732882212535490, -0.945716633775569360, -0.945700382974311690, -0.945684129808803120, -0.945667874279084160, +-0.945651616385195570, -0.945635356127177970, -0.945619093505071890, -0.945602828518918080, -0.945586561168757280, -0.945570291454630010, -0.945554019376577020, -0.945537744934639050, +-0.945521468128856620, -0.945505188959270490, -0.945488907425921510, -0.945472623528850200, -0.945456337268097300, -0.945440048643703570, -0.945423757655709850, -0.945407464304156560, +-0.945391168589084670, -0.945374870510534930, -0.945358570068547950, -0.945342267263164500, -0.945325962094425540, -0.945309654562371480, -0.945293344667043400, -0.945277032408481930, +-0.945260717786727930, -0.945244400801822040, -0.945228081453805210, -0.945211759742718090, -0.945195435668601760, -0.945179109231496620, -0.945162780431443860, -0.945146449268484120, +-0.945130115742658150, -0.945113779854007020, -0.945097441602571360, -0.945081100988392260, -0.945064758011510240, -0.945048412671966380, -0.945032064969801410, -0.945015714905056430, +-0.944999362477772050, -0.944983007687989370, -0.944966650535749020, -0.944950291021092180, -0.944933929144059490, -0.944917564904692140, -0.944901198303030650, -0.944884829339116330, +-0.944868458012989910, -0.944852084324692250, -0.944835708274264550, -0.944819329861747440, -0.944802949087182100, -0.944786565950609390, -0.944770180452070170, -0.944753792591605520, +-0.944737402369256520, -0.944721009785063900, -0.944704614839068760, -0.944688217531312050, -0.944671817861834960, -0.944655415830678140, -0.944639011437882870, -0.944622604683490020, +-0.944606195567540770, -0.944589784090075880, -0.944573370251136630, -0.944556954050763900, -0.944540535488998860, -0.944524114565882480, -0.944507691281455730, -0.944491265635759800, +-0.944474837628835660, -0.944458407260724500, -0.944441974531467280, -0.944425539441105190, -0.944409101989679090, -0.944392662177230390, -0.944376220003799950, -0.944359775469429060, +-0.944343328574158590, -0.944326879318029940, -0.944310427701083980, -0.944293973723361990, -0.944277517384905060, -0.944261058685754380, -0.944244597625951030, -0.944228134205536200, +-0.944211668424551060, -0.944195200283036610, -0.944178729781034340, -0.944162256918585130, -0.944145781695730270, -0.944129304112511060, -0.944112824168968470, -0.944096341865143910, +-0.944079857201078450, -0.944063370176813410, -0.944046880792389850, -0.944030389047849080, -0.944013894943232510, -0.943997398478581000, -0.943980899653936170, -0.943964398469338880, +-0.943947894924830780, -0.943931389020452930, -0.943914880756246520, -0.943898370132252970, -0.943881857148513470, -0.943865341805069310, -0.943848824101961800, -0.943832304039232240, +-0.943815781616921920, -0.943799256835072150, -0.943782729693724230, -0.943766200192919570, -0.943749668332699240, -0.943733134113104890, -0.943716597534177580, -0.943700058595958960, +-0.943683517298489980, -0.943666973641812400, -0.943650427625967180, -0.943633879250996070, -0.943617328516940250, -0.943600775423841020, -0.943584219971739910, -0.943567662160678220, +-0.943551101990697360, -0.943534539461838740, -0.943517974574143880, -0.943501407327653970, -0.943484837722410540, -0.943468265758455100, -0.943451691435828970, -0.943435114754573530, +-0.943418535714730440, -0.943401954316340880, -0.943385370559446490, -0.943368784444088670, -0.943352195970308950, -0.943335605138148630, -0.943319011947649440, -0.943302416398852590, +-0.943285818491799710, -0.943269218226532310, -0.943252615603091930, -0.943236010621519960, -0.943219403281857940, -0.943202793584147380, -0.943186181528429920, -0.943169567114746980, +-0.943152950343140060, -0.943136331213650920, -0.943119709726320750, -0.943103085881191520, -0.943086459678304400, -0.943069831117701260, -0.943053200199423400, -0.943036566923512680, +-0.943019931290010490, -0.943003293298958490, -0.942986652950398190, -0.942970010244371330, -0.942953365180919430, -0.942936717760084140, -0.942920067981906970, -0.942903415846429670, +-0.942886761353693870, -0.942870104503741090, -0.942853445296613080, -0.942836783732351470, -0.942820119810997890, -0.942803453532593980, -0.942786784897181600, -0.942770113904802140, +-0.942753440555497370, -0.942736764849309020, -0.942720086786278830, -0.942703406366448230, -0.942686723589859280, -0.942670038456553510, -0.942653350966572660, -0.942636661119958360, +-0.942619968916752480, -0.942603274356996530, -0.942586577440732600, -0.942569878168002080, -0.942553176538846960, -0.942536472553308860, -0.942519766211429520, -0.942503057513250810, +-0.942486346458814460, -0.942469633048162340, -0.942452917281335960, -0.942436199158377400, -0.942419478679328290, -0.942402755844230500, -0.942386030653125870, -0.942369303106056160, +-0.942352573203063090, -0.942335840944188650, -0.942319106329474690, -0.942302369358962830, -0.942285630032695170, -0.942268888350713320, -0.942252144313059260, -0.942235397919774950, +-0.942218649170902030, -0.942201898066482580, -0.942185144606558330, -0.942168388791171150, -0.942151630620363110, -0.942134870094175960, -0.942118107212651660, -0.942101341975832060, +-0.942084574383759140, -0.942067804436474750, -0.942051032134020860, -0.942034257476439320, -0.942017480463772320, -0.942000701096061380, -0.941983919373348910, -0.941967135295676440, +-0.941950348863086370, -0.941933560075620240, -0.941916768933320330, -0.941899975436228390, -0.941883179584386500, -0.941866381377836740, -0.941849580816620960, -0.941832777900781350, +-0.941815972630359650, -0.941799165005398060, -0.941782355025938540, -0.941765542692023280, -0.941748728003694020, -0.941731910960993070, -0.941715091563962160, -0.941698269812643710, +-0.941681445707079460, -0.941664619247311600, -0.941647790433382200, -0.941630959265333360, -0.941614125743207130, -0.941597289867045610, -0.941580451636890750, -0.941563611052784850, +-0.941546768114769890, -0.941529922822888050, -0.941513075177181300, -0.941496225177691940, -0.941479372824462040, -0.941462518117533680, -0.941445661056949050, -0.941428801642750220, +-0.941411939874979400, -0.941395075753678760, -0.941378209278890490, -0.941361340450656560, -0.941344469269019380, -0.941327595734020920, -0.941310719845703580, -0.941293841604109450, +-0.941276961009280710, -0.941260078061259440, -0.941243192760088050, -0.941226305105808740, -0.941209415098463680, -0.941192522738094950, -0.941175628024744970, -0.941158730958455920, +-0.941141831539270000, -0.941124929767229610, -0.941108025642376830, -0.941091119164754080, -0.941074210334403420, -0.941057299151367270, -0.941040385615687810, -0.941023469727407580, +-0.941006551486568420, -0.940989630893213080, -0.940972707947383520, -0.940955782649122390, -0.940938854998471630, -0.940921924995473780, -0.940904992640171020, -0.940888057932605990, +-0.940871120872820650, -0.940854181460857640, -0.940837239696759030, -0.940820295580567350, -0.940803349112324990, -0.940786400292074170, -0.940769449119857490, -0.940752495595717050, +-0.940735539719695480, -0.940718581491834960, -0.940701620912178130, -0.940684657980767060, -0.940667692697644500, -0.940650725062852630, -0.940633755076434100, -0.940616782738430970, +-0.940599808048885990, -0.940582831007841460, -0.940565851615339900, -0.940548869871423610, -0.940531885776135220, -0.940514899329517150, -0.940497910531611800, -0.940480919382461590, +-0.940463925882109140, -0.940446930030596980, -0.940429931827967300, -0.940412931274262950, -0.940395928369526240, -0.940378923113799670, -0.940361915507125780, -0.940344905549547190, +-0.940327893241106220, -0.940310878581845590, -0.940293861571807720, -0.940276842211035360, -0.940259820499570690, -0.940242796437456560, -0.940225770024735400, -0.940208741261449820, +-0.940191710147642470, -0.940174676683355750, -0.940157640868632290, -0.940140602703514850, -0.940123562188045820, -0.940106519322267960, -0.940089474106223790, -0.940072426539955820, +-0.940055376623507020, -0.940038324356919590, -0.940021269740236360, -0.940004212773499990, -0.939987153456753100, -0.939970091790038320, -0.939953027773398290, -0.939935961406875740, +-0.939918892690513320, -0.939901821624353540, -0.939884748208439260, -0.939867672442813110, -0.939850594327517830, -0.939833513862595950, -0.939816431048090430, -0.939799345884043790, +-0.939782258370498670, -0.939765168507498030, -0.939748076295084390, -0.939730981733300720, -0.939713884822189430, -0.939696785561793480, -0.939679683952155510, -0.939662579993318480, +-0.939645473685324810, -0.939628365028217560, -0.939611254022039380, -0.939594140666833110, -0.939577024962641390, -0.939559906909507300, -0.939542786507473250, -0.939525663756582310, +-0.939508538656877220, -0.939491411208400740, -0.939474281411195710, -0.939457149265304990, -0.939440014770771550, -0.939422877927637900, -0.939405738735947130, -0.939388597195741970, +-0.939371453307065400, -0.939354307069960040, -0.939337158484469080, -0.939320007550635160, -0.939302854268501240, -0.939285698638110070, -0.939268540659504820, -0.939251380332728150, +-0.939234217657823000, -0.939217052634832350, -0.939199885263799050, -0.939182715544765960, -0.939165543477776250, -0.939148369062872580, -0.939131192300098010, -0.939114013189495390, +-0.939096831731107810, -0.939079647924978110, -0.939062461771149270, -0.939045273269664360, -0.939028082420566230, -0.939010889223897970, -0.938993693679702310, -0.938976495788022560, +-0.938959295548901560, -0.938942092962382290, -0.938924888028507710, -0.938907680747321120, -0.938890471118865140, -0.938873259143183090, -0.938856044820317810, -0.938838828150312500, +-0.938821609133210000, -0.938804387769053620, -0.938787164057886090, -0.938769937999750840, -0.938752709594690590, -0.938735478842748660, -0.938718245743968010, -0.938701010298391810, +-0.938683772506063050, -0.938666532367024800, -0.938649289881320240, -0.938632045048992450, -0.938614797870084620, -0.938597548344639710, -0.938580296472701030, -0.938563042254311530, +-0.938545785689514410, -0.938528526778352860, -0.938511265520870050, -0.938494001917108970, -0.938476735967112900, -0.938459467670925030, -0.938442197028588550, -0.938424924040146440, +-0.938407648705642080, -0.938390371025118690, -0.938373090998619210, -0.938355808626187170, -0.938338523907865430, -0.938321236843697500, -0.938303947433726470, -0.938286655677995630, +-0.938269361576547940, -0.938252065129427050, -0.938234766336675910, -0.938217465198337930, -0.938200161714456190, -0.938182855885074110, -0.938165547710234860, -0.938148237189981750, +-0.938130924324358070, -0.938113609113407130, -0.938096291557172000, -0.938078971655696310, -0.938061649409023040, -0.938044324817195680, -0.938026997880257670, -0.938009668598251970, +-0.937992336971222200, -0.937975002999211550, -0.937957666682263440, -0.937940328020421150, -0.937922987013728000, -0.937905643662227400, -0.937888297965962740, -0.937870949924977330, +-0.937853599539314460, -0.937836246809017670, -0.937818891734130240, -0.937801534314695480, -0.937784174550757130, -0.937766812442358160, -0.937749447989542180, -0.937732081192352520, +-0.937714712050832790, -0.937697340565026180, -0.937679966734976220, -0.937662590560726540, -0.937645212042320100, -0.937627831179800860, -0.937610447973211910, -0.937593062422596880, +-0.937575674527999170, -0.937558284289462310, -0.937540891707029700, -0.937523496780744870, -0.937506099510651340, -0.937488699896792620, -0.937471297939212020, -0.937453893637953170, +-0.937436486993059590, -0.937419078004574910, -0.937401666672542430, -0.937384252997005900, -0.937366836978008600, -0.937349418615594290, -0.937331997909806370, -0.937314574860688480, +-0.937297149468284240, -0.937279721732636960, -0.937262291653790490, -0.937244859231788240, -0.937227424466673950, -0.937209987358491040, -0.937192547907283120, -0.937175106113093850, +-0.937157661975966840, -0.937140215495945620, -0.937122766673073930, -0.937105315507395290, -0.937087861998953440, -0.937070406147791800, -0.937052947953954220, -0.937035487417484210, +-0.937018024538425530, -0.937000559316821800, -0.936983091752716660, -0.936965621846153840, -0.936948149597176870, -0.936930675005829610, -0.936913198072155560, -0.936895718796198600, +-0.936878237178002340, -0.936860753217610530, -0.936843266915066700, -0.936825778270414800, -0.936808287283698470, -0.936790793954961340, -0.936773298284247270, -0.936755800271599990, +-0.936738299917063140, -0.936720797220680690, -0.936703292182496040, -0.936685784802553380, -0.936668275080896010, -0.936650763017568110, -0.936633248612613320, -0.936615731866075270, +-0.936598212777998040, -0.936580691348425140, -0.936563167577400660, -0.936545641464968210, -0.936528113011171670, -0.936510582216054770, -0.936493049079661470, -0.936475513602035510, +-0.936457975783220880, -0.936440435623261180, -0.936422893122200510, -0.936405348280082480, -0.936387801096951190, -0.936370251572850250, -0.936352699707823870, -0.936335145501915660, +-0.936317588955169590, -0.936300030067629520, -0.936282468839339300, -0.936264905270343010, -0.936247339360684490, -0.936229771110407620, -0.936212200519556230, -0.936194627588174400, +-0.936177052316305990, -0.936159474703994960, -0.936141894751285180, -0.936124312458220810, -0.936106727824845500, -0.936089140851203430, -0.936071551537338560, -0.936053959883294760, +-0.936036365889115980, -0.936018769554846420, -0.936001170880529920, -0.935983569866210450, -0.935965966511932090, -0.935948360817738690, -0.935930752783674550, -0.935913142409783520, +-0.935895529696109560, -0.935877914642696760, -0.935860297249589300, -0.935842677516830920, -0.935825055444466040, -0.935807431032538380, -0.935789804281092150, -0.935772175190171420, +-0.935754543759820370, -0.935736909990082850, -0.935719273881003070, -0.935701635432625080, -0.935683994644993080, -0.935666351518151030, -0.935648706052143120, -0.935631058247013430, +-0.935613408102806130, -0.935595755619565210, -0.935578100797334940, -0.935560443636159530, -0.935542784136082940, -0.935525122297149460, -0.935507458119403060, -0.935489791602888030, +-0.935472122747648570, -0.935454451553728750, -0.935436778021172870, -0.935419102150024990, -0.935401423940329320, -0.935383743392130260, -0.935366060505471660, -0.935348375280398050, +-0.935330687716953380, -0.935312997815182070, -0.935295305575128190, -0.935277610996836150, -0.935259914080350030, -0.935242214825714010, -0.935224513232972620, -0.935206809302169930, +-0.935189103033350120, -0.935171394426557610, -0.935153683481836700, -0.935135970199231450, -0.935118254578786390, -0.935100536620545600, -0.935082816324553480, -0.935065093690854330, +-0.935047368719492460, -0.935029641410512150, -0.935011911763957810, -0.934994179779873540, -0.934976445458303940, -0.934958708799293210, -0.934940969802885770, -0.934923228469125790, +-0.934905484798057800, -0.934887738789726090, -0.934869990444174960, -0.934852239761448930, -0.934834486741592310, -0.934816731384649380, -0.934798973690664670, -0.934781213659682590, +-0.934763451291747430, -0.934745686586903710, -0.934727919545195630, -0.934710150166667920, -0.934692378451364660, -0.934674604399330590, -0.934656828010610010, -0.934639049285247330, +-0.934621268223286950, -0.934603484824773510, -0.934585699089751310, -0.934567911018264860, -0.934550120610358580, -0.934532327866077090, -0.934514532785464700, -0.934496735368566030, +-0.934478935615425610, -0.934461133526087620, -0.934443329100597020, -0.934425522338998000, -0.934407713241335200, -0.934389901807653130, -0.934372088037996210, -0.934354271932409160, +-0.934336453490936410, -0.934318632713622590, -0.934300809600512090, -0.934282984151649560, -0.934265156367079630, -0.934247326246846810, -0.934229493790995740, -0.934211658999570820, +-0.934193821872616790, -0.934175982410178190, -0.934158140612299630, -0.934140296479025740, -0.934122450010401060, -0.934104601206470320, -0.934086750067278040, -0.934068896592868960, +-0.934051040783287490, -0.934033182638578600, -0.934015322158786580, -0.933997459343956390, -0.933979594194132460, -0.933961726709359620, -0.933943856889682400, -0.933925984735145650, +-0.933908110245793790, -0.933890233421671770, -0.933872354262824110, -0.933854472769295560, -0.933836588941130860, -0.933818702778374750, -0.933800814281071760, -0.933782923449266720, +-0.933765030283004500, -0.933747134782329510, -0.933729236947286930, -0.933711336777921060, -0.933693434274276980, -0.933675529436399200, -0.933657622264332690, -0.933639712758122080, +-0.933621800917812220, -0.933603886743447850, -0.933585970235073730, -0.933568051392734690, -0.933550130216475590, -0.933532206706341070, -0.933514280862376090, -0.933496352684625390, +-0.933478422173133930, -0.933460489327946230, -0.933442554149107370, -0.933424616636662100, -0.933406676790655250, -0.933388734611131920, -0.933370790098136500, -0.933352843251714300, +-0.933334894071909840, -0.933316942558768290, -0.933298988712334300, -0.933281032532652820, -0.933263074019768820, -0.933245113173727160, -0.933227149994572570, -0.933209184482350240, +-0.933191216637104910, -0.933173246458881560, -0.933155273947725020, -0.933137299103680370, -0.933119321926792480, -0.933101342417106290, -0.933083360574666680, -0.933065376399518590, +-0.933047389891707210, -0.933029401051277300, -0.933011409878273910, -0.932993416372742020, -0.932975420534726600, -0.932957422364272480, -0.932939421861424980, -0.932921419026228830, +-0.932903413858729210, -0.932885406358970990, -0.932867396526999240, -0.932849384362859020, -0.932831369866595430, -0.932813353038253300, -0.932795333877877830, -0.932777312385513980, +-0.932759288561206930, -0.932741262405001550, -0.932723233916943010, -0.932705203097076500, -0.932687169945446980, -0.932669134462099540, -0.932651096647079130, -0.932633056500431160, +-0.932615014022200370, -0.932596969212432180, -0.932578922071171550, -0.932560872598463540, -0.932542820794353360, -0.932524766658886280, -0.932506710192107070, -0.932488651394061230, +-0.932470590264793620, -0.932452526804349760, -0.932434461012774380, -0.932416392890112910, -0.932398322436410520, -0.932380249651712290, -0.932362174536063400, -0.932344097089509050, +-0.932326017312094520, -0.932307935203864900, -0.932289850764865480, -0.932271763995141440, -0.932253674894737980, -0.932235583463700280, -0.932217489702073740, -0.932199393609903340, +-0.932181295187234580, -0.932163194434112440, -0.932145091350582430, -0.932126985936689630, -0.932108878192479450, -0.932090768117996960, -0.932072655713287680, -0.932054540978396680, +-0.932036423913369380, -0.932018304518250960, -0.932000182793086720, -0.931982058737922170, -0.931963932352802390, -0.931945803637772800, -0.931927672592878680, -0.931909539218165440, +-0.931891403513678270, -0.931873265479462700, -0.931855125115563900, -0.931836982422027280, -0.931818837398898150, -0.931800690046222010, -0.931782540364044180, -0.931764388352409930, +-0.931746234011364690, -0.931728077340953980, -0.931709918341222960, -0.931691757012217180, -0.931673593353981920, -0.931655427366562820, -0.931637259050005050, -0.931619088404354150, +-0.931600915429655620, -0.931582740125954770, -0.931564562493297000, -0.931546382531727830, -0.931528200241292790, -0.931510015622037170, -0.931491828674006590, -0.931473639397246370, +-0.931455447791802120, -0.931437253857719140, -0.931419057595043180, -0.931400859003819410, -0.931382658084093600, -0.931364454835911130, -0.931346249259317530, -0.931328041354358200, +-0.931309831121078900, -0.931291618559524910, -0.931273403669741980, -0.931255186451775520, -0.931236966905671040, -0.931218745031474170, -0.931200520829230440, -0.931182294298985470, +-0.931164065440784670, -0.931145834254673790, -0.931127600740698220, -0.931109364898903720, -0.931091126729335810, -0.931072886232040100, -0.931054643407062120, -0.931036398254447620, +-0.931018150774241990, -0.930999900966491100, -0.930981648831240350, -0.930963394368535590, -0.930945137578422340, -0.930926878460946240, -0.930908617016152800, -0.930890353244087860, +-0.930872087144797190, -0.930853818718326180, -0.930835547964720680, -0.930817274884026320, -0.930798999476288750, -0.930780721741553570, -0.930762441679866770, -0.930744159291273740, +-0.930725874575820460, -0.930707587533552320, -0.930689298164515290, -0.930671006468755000, -0.930652712446317310, -0.930634416097247620, -0.930616117421592120, -0.930597816419396100, +-0.930579513090705750, -0.930561207435566470, -0.930542899454024240, -0.930524589146124680, -0.930506276511913640, -0.930487961551437090, -0.930469644264740440, -0.930451324651869860, +-0.930433002712870880, -0.930414678447789360, -0.930396351856671130, -0.930378022939562180, -0.930359691696508010, -0.930341358127554700, -0.930323022232747880, -0.930304684012133620, +-0.930286343465757560, -0.930268000593665770, -0.930249655395903870, -0.930231307872517840, -0.930212958023553530, -0.930194605849056890, -0.930176251349073670, -0.930157894523649830, +-0.930139535372831340, -0.930121173896663930, -0.930102810095193580, -0.930084443968466230, -0.930066075516527760, -0.930047704739424110, -0.930029331637201250, -0.930010956209905040, +-0.929992578457581430, -0.929974198380276280, -0.929955815978035780, -0.929937431250905670, -0.929919044198932010, -0.929900654822160670, -0.929882263120637820, -0.929863869094409100, +-0.929845472743520920, -0.929827074068019010, -0.929808673067949340, -0.929790269743357990, -0.929771864094291020, -0.929753456120794410, -0.929735045822914110, -0.929716633200696200, +-0.929698218254186750, -0.929679800983431730, -0.929661381388477200, -0.929642959469369260, -0.929624535226153850, -0.929606108658877160, -0.929587679767585160, -0.929569248552324030, +-0.929550815013139630, -0.929532379150078360, -0.929513940963186070, -0.929495500452508950, -0.929477057618092960, -0.929458612459984510, -0.929440164978229340, -0.929421715172873860, +-0.929403263043964150, -0.929384808591546150, -0.929366351815666290, -0.929347892716370420, -0.929329431293704930, -0.929310967547715690, -0.929292501478449220, -0.929274033085951360, +-0.929255562370268520, -0.929237089331446780, -0.929218613969532200, -0.929200136284571210, -0.929181656276609870, -0.929163173945694250, -0.929144689291870880, -0.929126202315185610, +-0.929107713015684960, -0.929089221393414990, -0.929070727448422010, -0.929052231180752090, -0.929033732590451630, -0.929015231677566940, -0.928996728442144090, -0.928978222884229380, +-0.928959715003869200, -0.928941204801109750, -0.928922692275997220, -0.928904177428578000, -0.928885660258898290, -0.928867140767004500, -0.928848618952942790, -0.928830094816759600, +-0.928811568358501090, -0.928793039578213690, -0.928774508475943670, -0.928755975051737460, -0.928737439305641230, -0.928718901237701510, -0.928700360847964480, -0.928681818136476540, +-0.928663273103284000, -0.928644725748433260, -0.928626176071970840, -0.928607624073942930, -0.928589069754395920, -0.928570513113376240, -0.928551954150930390, -0.928533392867104460, +-0.928514829261945170, -0.928496263335498840, -0.928477695087811860, -0.928459124518930530, -0.928440551628901490, -0.928421976417770910, -0.928403398885585540, -0.928384819032391670, +-0.928366236858235720, -0.928347652363164190, -0.928329065547223500, -0.928310476410460160, -0.928291884952920590, -0.928273291174651400, -0.928254695075698910, -0.928236096656109730, +-0.928217495915930280, -0.928198892855207070, -0.928180287473986620, -0.928161679772315560, -0.928143069750240190, -0.928124457407807250, -0.928105842745063030, -0.928087225762054380, +-0.928068606458827490, -0.928049984835429220, -0.928031360891905850, -0.928012734628304250, -0.927994106044670590, -0.927975475141051830, -0.927956841917494390, -0.927938206374044780, +-0.927919568510749640, -0.927900928327655580, -0.927882285824809250, -0.927863641002257160, -0.927844993860046040, -0.927826344398222420, -0.927807692616832940, -0.927789038515924090, +-0.927770382095542860, -0.927751723355735520, -0.927733062296548950, -0.927714398918029650, -0.927695733220224470, -0.927677065203179830, -0.927658394866942680, -0.927639722211559440, +-0.927621047237076950, -0.927602369943541730, -0.927583690331000630, -0.927565008399500290, -0.927546324149087440, -0.927527637579808830, -0.927508948691711080, -0.927490257484841040, +-0.927471563959245240, -0.927452868114970630, -0.927434169952063850, -0.927415469470571630, -0.927396766670540610, -0.927378061552017850, -0.927359354115049880, -0.927340644359683550, +-0.927321932285965490, -0.927303217893942770, -0.927284501183661790, -0.927265782155169750, -0.927247060808513160, -0.927228337143738980, -0.927209611160893840, -0.927190882860024820, +-0.927172152241178550, -0.927153419304401760, -0.927134684049741640, -0.927115946477244600, -0.927097206586957930, -0.927078464378928050, -0.927059719853202120, -0.927040973009826800, +-0.927022223848849140, -0.927003472370315880, -0.926984718574273890, -0.926965962460770120, -0.926947204029851530, -0.926928443281564870, -0.926909680215957100, -0.926890914833075170, +-0.926872147132965950, -0.926853377115676280, -0.926834604781253240, -0.926815830129743670, -0.926797053161194540, -0.926778273875652700, -0.926759492273165230, -0.926740708353779090, +-0.926721922117541120, -0.926703133564498400, -0.926684342694697680, -0.926665549508186360, -0.926646754005010950, -0.926627956185218760, -0.926609156048856630, -0.926590353595971640, +-0.926571548826610750, -0.926552741740821030, -0.926533932338649450, -0.926515120620143070, -0.926496306585348760, -0.926477490234313810, -0.926458671567085060, -0.926439850583709700, +-0.926421027284234590, -0.926402201668707010, -0.926383373737173940, -0.926364543489682330, -0.926345710926279490, -0.926326876047012250, -0.926308038851927920, -0.926289199341073450, +-0.926270357514496050, -0.926251513372242650, -0.926232666914360570, -0.926213818140896760, -0.926194967051898410, -0.926176113647412700, -0.926157257927486600, -0.926138399892167400, +-0.926119539541502280, -0.926100676875538210, -0.926081811894322480, -0.926062944597902280, -0.926044074986324680, -0.926025203059636760, -0.926006328817885920, -0.925987452261119340, +-0.925968573389384100, -0.925949692202727380, -0.925930808701196480, -0.925911922884838590, -0.925893034753700770, -0.925874144307830440, -0.925855251547274770, -0.925836356472080960, +-0.925817459082296180, -0.925798559377967840, -0.925779657359143030, -0.925760753025869130, -0.925741846378193340, -0.925722937416162960, -0.925704026139825160, -0.925685112549227470, +-0.925666196644416850, -0.925647278425440700, -0.925628357892346430, -0.925609435045181230, -0.925590509883992500, -0.925571582408827420, -0.925552652619733520, -0.925533720516757860, +-0.925514786099947970, -0.925495849369351030, -0.925476910325014560, -0.925457968966985730, -0.925439025295312080, -0.925420079310040780, -0.925401131011219350, -0.925382180398894970, +-0.925363227473115280, -0.925344272233927460, -0.925325314681379020, -0.925306354815517150, -0.925287392636389480, -0.925268428144043310, -0.925249461338526040, -0.925230492219885290, +-0.925211520788168150, -0.925192547043422240, -0.925173570985694970, -0.925154592615033740, -0.925135611931486080, -0.925116628935099380, -0.925097643625921060, -0.925078656003998740, +-0.925059666069379730, -0.925040673822111530, -0.925021679262241660, -0.925002682389817530, -0.924983683204886780, -0.924964681707496790, -0.924945677897695110, -0.924926671775529230, +-0.924907663341046680, -0.924888652594294870, -0.924869639535321530, -0.924850624164174070, -0.924831606480900130, -0.924812586485547090, -0.924793564178162610, -0.924774539558794180, +-0.924755512627489450, -0.924736483384295930, -0.924717451829261240, -0.924698417962432790, -0.924679381783858450, -0.924660343293585480, -0.924641302491661770, -0.924622259378134800, +-0.924603213953052230, -0.924584166216461560, -0.924565116168410530, -0.924546063808946550, -0.924527009138117580, -0.924507952155971040, -0.924488892862554530, -0.924469831257915930, +-0.924450767342102630, -0.924431701115162490, -0.924412632577143010, -0.924393561728092060, -0.924374488568057150, -0.924355413097086130, -0.924336335315226410, -0.924317255222525950, +-0.924298172819032260, -0.924279088104793310, -0.924260001079856510, -0.924240911744269810, -0.924221820098080630, -0.924202726141337140, -0.924183629874086640, -0.924164531296377210, +-0.924145430408256360, -0.924126327209771950, -0.924107221700971700, -0.924088113881903370, -0.924069003752614910, -0.924049891313153850, -0.924030776563568020, -0.924011659503905290, +-0.923992540134213500, -0.923973418454540170, -0.923954294464933490, -0.923935168165440860, -0.923916039556110570, -0.923896908636989920, -0.923877775408127210, -0.923858639869569950, +-0.923839502021366110, -0.923820361863563530, -0.923801219396210070, -0.923782074619353470, -0.923762927533041790, -0.923743778137322670, -0.923724626432244180, -0.923705472417854170, +-0.923686316094200380, -0.923667157461330880, -0.923647996519293410, -0.923628833268136050, -0.923609667707906530, -0.923590499838652930, -0.923571329660422990, -0.923552157173264780, +-0.923532982377226030, -0.923513805272355050, -0.923494625858699350, -0.923475444136307330, -0.923456260105226520, -0.923437073765505100, -0.923417885117190920, -0.923398694160332160, +-0.923379500894976560, -0.923360305321172300, -0.923341107438967250, -0.923321907248409350, -0.923302704749546790, -0.923283499942427310, -0.923264292827099320, -0.923245083403610440, +-0.923225871672008870, -0.923206657632342660, -0.923187441284659790, -0.923168222629008330, -0.923149001665436340, -0.923129778393991680, -0.923110552814722760, -0.923091324927677430, +-0.923072094732903750, -0.923052862230449800, -0.923033627420363770, -0.923014390302693610, -0.922995150877487510, -0.922975909144793550, -0.922956665104659680, -0.922937418757134310, +-0.922918170102265290, -0.922898919140100920, -0.922879665870689260, -0.922860410294078390, -0.922841152410316500, -0.922821892219451770, -0.922802629721532260, -0.922783364916606170, +-0.922764097804721680, -0.922744828385926970, -0.922725556660270230, -0.922706282627799520, -0.922687006288563150, -0.922667727642609290, -0.922648446689986020, -0.922629163430741750, +-0.922609877864924430, -0.922590589992582480, -0.922571299813764070, -0.922552007328517390, -0.922532712536890730, -0.922513415438932170, -0.922494116034690230, -0.922474814324212970, +-0.922455510307548690, -0.922436203984745460, -0.922416895355851920, -0.922397584420916020, -0.922378271179986280, -0.922358955633110770, -0.922339637780337900, -0.922320317621715960, +-0.922300995157293250, -0.922281670387117950, -0.922262343311238570, -0.922243013929703200, -0.922223682242560460, -0.922204348249858310, -0.922185011951645370, -0.922165673347970060, +-0.922146332438880450, -0.922126989224425040, -0.922107643704652040, -0.922088295879610050, -0.922068945749347280, -0.922049593313912230, -0.922030238573353090, -0.922010881527718370, +-0.921991522177056490, -0.921972160521415840, -0.921952796560844610, -0.921933430295391540, -0.921914061725104820, -0.921894690850033060, -0.921875317670224460, -0.921855942185727750, +-0.921836564396590900, -0.921817184302862860, -0.921797801904591820, -0.921778417201826180, -0.921759030194614580, -0.921739640883005310, -0.921720249267047100, -0.921700855346788140, +-0.921681459122277060, -0.921662060593562370, -0.921642659760692480, -0.921623256623716030, -0.921603851182681400, -0.921584443437637010, -0.921565033388631720, -0.921545621035713690, +-0.921526206378931790, -0.921506789418334190, -0.921487370153969750, -0.921467948585886760, -0.921448524714133970, -0.921429098538759870, -0.921409670059813000, -0.921390239277341980, +-0.921370806191395220, -0.921351370802021670, -0.921331933109269530, -0.921312493113187640, -0.921293050813824510, -0.921273606211228780, -0.921254159305448960, -0.921234710096533790, +-0.921215258584531790, -0.921195804769491810, -0.921176348651462140, -0.921156890230491740, -0.921137429506628910, -0.921117966479922720, -0.921098501150421470, -0.921079033518174110, +-0.921059563583229050, -0.921040091345635140, -0.921020616805440890, -0.921001139962695170, -0.920981660817446590, -0.920962179369743890, -0.920942695619635820, -0.920923209567170890, +-0.920903721212397940, -0.920884230555365720, -0.920864737596122970, -0.920845242334718210, -0.920825744771200600, -0.920806244905618350, -0.920786742738020750, -0.920767238268456080, +-0.920747731496973530, -0.920728222423621400, -0.920708711048448980, -0.920689197371504560, -0.920669681392837220, -0.920650163112495700, -0.920630642530528840, -0.920611119646985280, +-0.920591594461913850, -0.920572066975363530, -0.920552537187383060, -0.920533005098021270, -0.920513470707326810, -0.920493934015348850, -0.920474395022136020, -0.920454853727737170, +-0.920435310132201150, -0.920415764235576920, -0.920396216037913220, -0.920376665539259120, -0.920357112739663140, -0.920337557639174570, -0.920318000237841940, -0.920298440535714520, +-0.920278878532840850, -0.920259314229269990, -0.920239747625050790, -0.920220178720232320, -0.920200607514863430, -0.920181034008992870, -0.920161458202669920, -0.920141880095943220, +-0.920122299688861830, -0.920102716981474720, -0.920083131973830740, -0.920063544665978950, -0.920043955057968430, -0.920024363149847810, -0.920004768941666500, -0.919985172433473110, +-0.919965573625316950, -0.919945972517246640, -0.919926369109311580, -0.919906763401560520, -0.919887155394042530, -0.919867545086806680, -0.919847932479902040, -0.919828317573377460, +-0.919808700367282020, -0.919789080861665000, -0.919769459056575140, -0.919749834952061750, -0.919730208548173780, -0.919710579844960300, -0.919690948842470160, -0.919671315540752880, +-0.919651679939857190, -0.919632042039832400, -0.919612401840727340, -0.919592759342591440, -0.919573114545473520, -0.919553467449423010, -0.919533818054488640, -0.919514166360719810, +-0.919494512368165480, -0.919474856076874960, -0.919455197486897300, -0.919435536598281590, -0.919415873411077110, -0.919396207925332830, -0.919376540141098150, -0.919356870058422040, +-0.919337197677353780, -0.919317522997942560, -0.919297846020237560, -0.919278166744287750, -0.919258485170142750, -0.919238801297851400, -0.919219115127463130, -0.919199426659027100, +-0.919179735892592390, -0.919160042828208400, -0.919140347465924320, -0.919120649805789340, -0.919100949847852840, -0.919081247592163810, -0.919061543038771740, -0.919041836187725720, +-0.919022127039075150, -0.919002415592869440, -0.918982701849157420, -0.918962985807988850, -0.918943267469412680, -0.918923546833478540, -0.918903823900235280, -0.918884098669732640, +-0.918864371142019690, -0.918844641317145830, -0.918824909195160360, -0.918805174776112680, -0.918785438060051860, -0.918765699047027650, -0.918745957737089110, -0.918726214130285770, +-0.918706468226666790, -0.918686720026281600, -0.918666969529179700, -0.918647216735410390, -0.918627461645022960, -0.918607704258066930, -0.918587944574591590, -0.918568182594646450, +-0.918548418318280820, -0.918528651745544100, -0.918508882876485910, -0.918489111711155330, -0.918469338249602090, -0.918449562491875480, -0.918429784438024920, -0.918410004088099920, +-0.918390221442149990, -0.918370436500224430, -0.918350649262372750, -0.918330859728644480, -0.918311067899089120, -0.918291273773755970, -0.918271477352694760, -0.918251678635954690, +-0.918231877623585490, -0.918212074315636780, -0.918192268712157640, -0.918172460813198030, -0.918152650618807130, -0.918132838129034680, -0.918113023343930080, -0.918093206263542960, +-0.918073386887922730, -0.918053565217119120, -0.918033741251181650, -0.918013914990159720, -0.917994086434103070, -0.917974255583061230, -0.917954422437083580, -0.917934586996220100, +-0.917914749260519970, -0.917894909230033140, -0.917875066904808910, -0.917855222284897020, -0.917835375370347100, -0.917815526161208760, -0.917795674657531650, -0.917775820859365150, +-0.917755964766759360, -0.917736106379763440, -0.917716245698427470, -0.917696382722800740, -0.917676517452933100, -0.917656649888874080, -0.917636780030673620, -0.917616907878381020, +-0.917597033432046240, -0.917577156691718800, -0.917557277657448660, -0.917537396329285100, -0.917517512707278220, -0.917497626791477510, -0.917477738581932710, -0.917457848078693460, +-0.917437955281809710, -0.917418060191331100, -0.917398162807307240, -0.917378263129788100, -0.917358361158823190, -0.917338456894462470, -0.917318550336755580, -0.917298641485752240, +-0.917278730341502310, -0.917258816904055640, -0.917238901173461850, -0.917218983149770910, -0.917199062833032430, -0.917179140223296390, -0.917159215320612290, -0.917139288125030430, +-0.917119358636600100, -0.917099426855371490, -0.917079492781394330, -0.917059556414718370, -0.917039617755393550, -0.917019676803469630, -0.916999733558996670, -0.916979788022024290, +-0.916959840192602460, -0.916939890070780920, -0.916919937656609840, -0.916899982950138750, -0.916880025951417820, -0.916860066660496690, -0.916840105077425530, -0.916820141202254080, +-0.916800175035032310, -0.916780206575809940, -0.916760235824637280, -0.916740262781563840, -0.916720287446639910, -0.916700309819915130, -0.916680329901439660, -0.916660347691263260, +-0.916640363189436090, -0.916620376396007910, -0.916600387311028890, -0.916580395934548870, -0.916560402266617840, -0.916540406307285840, -0.916520408056602730, -0.916500407514618700, +-0.916480404681383700, -0.916460399556947580, -0.916440392141360530, -0.916420382434672500, -0.916400370436933450, -0.916380356148193580, -0.916360339568502600, -0.916340320697911050, +-0.916320299536468540, -0.916300276084225370, -0.916280250341231390, -0.916260222307536900, -0.916240191983191730, -0.916220159368246080, -0.916200124462750120, -0.916180087266753820, +-0.916160047780307350, -0.916140006003460680, -0.916119961936264100, -0.916099915578767580, -0.916079866931021280, -0.916059815993075180, -0.916039762764979670, -0.916019707246784720, +-0.915999649438540620, -0.915979589340297220, -0.915959526952104920, -0.915939462274013790, -0.915919395306074020, -0.915899326048335680, -0.915879254500849170, -0.915859180663664450, +-0.915839104536831820, -0.915819026120401340, -0.915798945414423300, -0.915778862418948010, -0.915758777134025430, -0.915738689559706050, -0.915718599696039750, -0.915698507543077130, +-0.915678413100868170, -0.915658316369463270, -0.915638217348912490, -0.915618116039266130, -0.915598012440574480, -0.915577906552887950, -0.915557798376256500, -0.915537687910730650, +-0.915517575156360450, -0.915497460113196440, -0.915477342781288780, -0.915457223160687780, -0.915437101251443620, -0.915416977053606700, -0.915396850567227420, -0.915376721792355960, +-0.915356590729042740, -0.915336457377337930, -0.915316321737292160, -0.915296183808955500, -0.915276043592378350, -0.915255901087611120, -0.915235756294704220, -0.915215609213707810, +-0.915195459844672430, -0.915175308187648360, -0.915155154242686120, -0.915134998009835780, -0.915114839489148180, -0.915094678680673400, -0.915074515584461960, -0.915054350200564140, +-0.915034182529030460, -0.915014012569911330, -0.914993840323257150, -0.914973665789118430, -0.914953488967545470, -0.914933309858588890, -0.914913128462299000, -0.914892944778726290, +-0.914872758807921180, -0.914852570549934300, -0.914832380004815810, -0.914812187172616590, -0.914791992053386680, -0.914771794647176950, -0.914751594954037570, -0.914731392974019400, +-0.914711188707172610, -0.914690982153547940, -0.914670773313195680, -0.914650562186166580, -0.914630348772511040, -0.914610133072279560, -0.914589915085522900, -0.914569694812291330, +-0.914549472252635720, -0.914529247406606240, -0.914509020274253740, -0.914488790855628620, -0.914468559150781510, -0.914448325159763040, -0.914428088882623840, -0.914407850319414290, +-0.914387609470185160, -0.914367366334986940, -0.914347120913870490, -0.914326873206886100, -0.914306623214084510, -0.914286370935516350, -0.914266116371232450, -0.914245859521283010, +-0.914225600385719090, -0.914205338964591110, -0.914185075257949680, -0.914164809265845760, -0.914144540988329650, -0.914124270425452300, -0.914103997577264240, -0.914083722443816190, +-0.914063445025158790, -0.914043165321342890, -0.914022883332418990, -0.914002599058437950, -0.913982312499450280, -0.913962023655507050, -0.913941732526658560, -0.913921439112955870, +-0.913901143414449390, -0.913880845431190300, -0.913860545163228900, -0.913840242610616250, -0.913819937773402870, -0.913799630651639830, -0.913779321245377530, -0.913759009554666930, +-0.913738695579559000, -0.913718379320104130, -0.913698060776353520, -0.913677739948357550, -0.913657416836167410, -0.913637091439833520, -0.913616763759407150, -0.913596433794938710, +-0.913576101546479170, -0.913555767014079480, -0.913535430197790270, -0.913515091097662490, -0.913494749713747110, -0.913474406046094760, -0.913454060094756380, -0.913433711859782840, +-0.913413361341225190, -0.913393008539133970, -0.913372653453560220, -0.913352296084554930, -0.913331936432168810, -0.913311574496452840, -0.913291210277457970, -0.913270843775235150, +-0.913250474989835140, -0.913230103921308990, -0.913209730569707560, -0.913189354935081800, -0.913168977017482560, -0.913148596816961030, -0.913128214333567940, -0.913107829567354370, +-0.913087442518371150, -0.913067053186669360, -0.913046661572299970, -0.913026267675313920, -0.913005871495762070, -0.912985473033695700, -0.912965072289165570, -0.912944669262222730, +-0.912924263952918260, -0.912903856361303110, -0.912883446487428360, -0.912863034331344970, -0.912842619893104110, -0.912822203172756530, -0.912801784170353510, -0.912781362885946020, +-0.912760939319585130, -0.912740513471321900, -0.912720085341207410, -0.912699654929292610, -0.912679222235628810, -0.912658787260266830, -0.912638350003257990, -0.912617910464653240, +-0.912597468644503750, -0.912577024542860490, -0.912556578159774650, -0.912536129495297500, -0.912515678549479900, -0.912495225322373150, -0.912474769814028310, -0.912454312024496670, +-0.912433851953829090, -0.912413389602077070, -0.912392924969291360, -0.912372458055523470, -0.912351988860824360, -0.912331517385245430, -0.912311043628837530, -0.912290567591652170, +-0.912270089273740200, -0.912249608675153260, -0.912229125795942060, -0.912208640636158250, -0.912188153195852670, -0.912167663475076830, -0.912147171473881690, -0.912126677192318660, +-0.912106180630439020, -0.912085681788293860, -0.912065180665934560, -0.912044677263412320, -0.912024171580778310, -0.912003663618083940, -0.911983153375380380, -0.911962640852718830, +-0.911942126050150900, -0.911921608967727450, -0.911901089605500090, -0.911880567963520020, -0.911860044041838510, -0.911839517840506870, -0.911818989359576390, -0.911798458599098470, +-0.911777925559124510, -0.911757390239705590, -0.911736852640893210, -0.911716312762738790, -0.911695770605293500, -0.911675226168608850, -0.911654679452736040, -0.911634130457726680, +-0.911613579183631840, -0.911593025630503150, -0.911572469798391900, -0.911551911687349500, -0.911531351297427240, -0.911510788628676630, -0.911490223681149070, -0.911469656454895970, +-0.911449086949968620, -0.911428515166418650, -0.911407941104297350, -0.911387364763656230, -0.911366786144546690, -0.911346205247020260, -0.911325622071128110, -0.911305036616921970, +-0.911284448884453370, -0.911263858873773590, -0.911243266584934150, -0.911222672017986570, -0.911202075172982240, -0.911181476049972790, -0.911160874649009630, -0.911140270970144270, +-0.911119665013428340, -0.911099056778913010, -0.911078446266650240, -0.911057833476691340, -0.911037218409087800, -0.911016601063891260, -0.910995981441153240, -0.910975359540925120, +-0.910954735363258770, -0.910934108908205480, -0.910913480175816970, -0.910892849166144660, -0.910872215879240280, -0.910851580315155450, -0.910830942473941470, -0.910810302355650410, +-0.910789659960333340, -0.910769015288042330, -0.910748368338828660, -0.910727719112744080, -0.910707067609840220, -0.910686413830168680, -0.910665757773781110, -0.910645099440729240, +-0.910624438831064480, -0.910603775944838660, -0.910583110782103410, -0.910562443342910480, -0.910541773627311260, -0.910521101635357710, -0.910500427367101350, -0.910479750822593910, +-0.910459072001887250, -0.910438390905032760, -0.910417707532082400, -0.910397021883087690, -0.910376333958100470, -0.910355643757172370, -0.910334951280355240, -0.910314256527700590, +-0.910293559499260500, -0.910272860195086350, -0.910252158615230120, -0.910231454759743430, -0.910210748628678230, -0.910190040222086050, -0.910169329540018830, -0.910148616582528210, +-0.910127901349666150, -0.910107183841484260, -0.910086464058034390, -0.910065741999368400, -0.910045017665538030, -0.910024291056595210, -0.910003562172591480, -0.909982831013579020, +-0.909962097579609440, -0.909941361870734600, -0.909920623887006340, -0.909899883628476620, -0.909879141095197070, -0.909858396287219760, -0.909837649204596310, -0.909816899847378900, +-0.909796148215619160, -0.909775394309369050, -0.909754638128680520, -0.909733879673605310, -0.909713118944195380, -0.909692355940502790, -0.909671590662579190, -0.909650823110476630, +-0.909630053284247060, -0.909609281183942240, -0.909588506809614450, -0.909567730161315200, -0.909546951239096680, -0.909526170043010730, -0.909505386573109530, -0.909484600829444600, +-0.909463812812068450, -0.909443022521032480, -0.909422229956389220, -0.909401435118190270, -0.909380638006487720, -0.909359838621333520, -0.909339036962779850, -0.909318233030878440, +-0.909297426825681600, -0.909276618347241270, -0.909255807595609090, -0.909234994570837560, -0.909214179272978650, -0.909193361702083980, -0.909172541858206170, -0.909151719741396970, +-0.909130895351708550, -0.909110068689192640, -0.909089239753901770, -0.909068408545887770, -0.909047575065202730, -0.909026739311898590, -0.909005901286027870, -0.908985060987642310, +-0.908964218416794090, -0.908943373573535160, -0.908922526457918050, -0.908901677069994470, -0.908880825409816850, -0.908859971477436910, -0.908839115272907170, -0.908818256796279810, +-0.908797396047606450, -0.908776533026939840, -0.908755667734331920, -0.908734800169834880, -0.908713930333500560, -0.908693058225381710, -0.908672183845530060, -0.908651307193998110, +-0.908630428270837620, -0.908609547076101200, -0.908588663609841030, -0.908567777872109070, -0.908546889862957620, -0.908525999582439070, -0.908505107030605500, -0.908484212207509190, +-0.908463315113202110, -0.908442415747736990, -0.908421514111165780, -0.908400610203540900, -0.908379704024914190, -0.908358795575338500, -0.908337884854865770, -0.908316971863548090, +-0.908296056601438200, -0.908275139068588140, -0.908254219265050340, -0.908233297190876750, -0.908212372846120110, -0.908191446230832480, -0.908170517345066260, -0.908149586188873650, +-0.908128652762307140, -0.908107717065419040, -0.908086779098261740, -0.908065838860887210, -0.908044896353348290, -0.908023951575697040, -0.908003004527985990, -0.907982055210267310, +-0.907961103622593630, -0.907940149765017130, -0.907919193637590110, -0.907898235240365390, -0.907877274573394950, -0.907856311636731310, -0.907835346430426850, -0.907814378954534100, +-0.907793409209105450, -0.907772437194193200, -0.907751462909849760, -0.907730486356127740, -0.907709507533079660, -0.907688526440757700, -0.907667543079214270, -0.907646557448502200, +-0.907625569548673680, -0.907604579379781230, -0.907583586941877240, -0.907562592235014340, -0.907541595259245050, -0.907520596014621540, -0.907499594501196770, -0.907478590719023040, +-0.907457584668152740, -0.907436576348638390, -0.907415565760532730, -0.907394552903888150, -0.907373537778757180, -0.907352520385192210, -0.907331500723246090, -0.907310478792971220, +-0.907289454594420230, -0.907268428127645300, -0.907247399392699600, -0.907226368389635330, -0.907205335118505210, -0.907184299579361530, -0.907163261772257260, -0.907142221697244790, +-0.907121179354376640, -0.907100134743705770, -0.907079087865284570, -0.907058038719165570, -0.907036987305401280, -0.907015933624044760, -0.906994877675148410, -0.906973819458764870, +-0.906952758974946540, -0.906931696223746590, -0.906910631205217310, -0.906889563919411560, -0.906868494366381620, -0.906847422546180670, -0.906826348458861120, -0.906805272104475700, +-0.906784193483077040, -0.906763112594717980, -0.906742029439451150, -0.906720944017329170, -0.906699856328404770, -0.906678766372730820, -0.906657674150360030, -0.906636579661344810, +-0.906615482905738350, -0.906594383883593260, -0.906573282594962060, -0.906552179039897600, -0.906531073218452830, -0.906509965130680270, -0.906488854776632990, -0.906467742156363280, +-0.906446627269924420, -0.906425510117368940, -0.906404390698749780, -0.906383269014119360, -0.906362145063531080, -0.906341018847037330, -0.906319890364691070, -0.906298759616544940, +-0.906277626602651990, -0.906256491323065070, -0.906235353777836710, -0.906214213967020180, -0.906193071890668000, -0.906171927548833240, -0.906150780941568530, -0.906129632068926940, +-0.906108480930961300, -0.906087327527724470, -0.906066171859269190, -0.906045013925648620, -0.906023853726915410, -0.906002691263122720, -0.905981526534323070, -0.905960359540569750, +-0.905939190281915610, -0.905918018758413380, -0.905896844970116020, -0.905875668917076720, -0.905854490599348190, -0.905833310016983310, -0.905812127170035340, -0.905790942058557040, +-0.905769754682601350, -0.905748565042221120, -0.905727373137469650, -0.905706178968399780, -0.905684982535064460, -0.905663783837516450, -0.905642582875809230, -0.905621379649995450, +-0.905600174160128280, -0.905578966406260570, -0.905557756388445490, -0.905536544106736120, -0.905515329561185300, -0.905494112751846100, -0.905472893678771710, -0.905451672342015070, +-0.905430448741629370, -0.905409222877667230, -0.905387994750182280, -0.905366764359227360, -0.905345531704855320, -0.905324296787119560, -0.905303059606073160, -0.905281820161769060, +-0.905260578454260220, -0.905239334483600170, -0.905218088249841850, -0.905196839753038220, -0.905175588993242240, -0.905154335970507540, -0.905133080684887070, -0.905111823136433790, +-0.905090563325200770, -0.905069301251241630, -0.905048036914609110, -0.905026770315356610, -0.905005501453536980, -0.904984230329203720, -0.904962956942409910, -0.904941681293208510, +-0.904920403381653140, -0.904899123207796750, -0.904877840771692530, -0.904856556073393550, -0.904835269112953310, -0.904813979890424890, -0.904792688405861580, -0.904771394659316330, +-0.904750098650842880, -0.904728800380494080, -0.904707499848323330, -0.904686197054383580, -0.904664891998728570, -0.904643584681411260, -0.904622275102485050, -0.904600963262003010, +-0.904579649160018650, -0.904558332796585260, -0.904537014171755800, -0.904515693285584010, -0.904494370138123060, -0.904473044729426020, -0.904451717059546300, -0.904430387128537410, +-0.904409054936452630, -0.904387720483345150, -0.904366383769268260, -0.904345044794275470, -0.904323703558420180, -0.904302360061755570, -0.904281014304334940, -0.904259666286211910, +-0.904238316007439650, -0.904216963468071680, -0.904195608668161180, -0.904174251607761770, -0.904152892286926750, -0.904131530705709290, -0.904110166864163120, -0.904088800762341660, +-0.904067432400298080, -0.904046061778085890, -0.904024688895758600, -0.904003313753369620, -0.903981936350972350, -0.903960556688620080, -0.903939174766366650, -0.903917790584265250, +-0.903896404142369270, -0.903875015440732230, -0.903853624479407760, -0.903832231258449250, -0.903810835777910220, -0.903789438037843840, -0.903768038038304080, -0.903746635779344220, +-0.903725231261017780, -0.903703824483378050, -0.903682415446478980, -0.903661004150373870, -0.903639590595116000, -0.903618174780759340, -0.903596756707357280, -0.903575336374963340, +-0.903553913783630920, -0.903532488933413870, -0.903511061824365580, -0.903489632456539680, -0.903468200829989470, -0.903446766944768890, -0.903425330800931460, -0.903403892398530690, +-0.903382451737620000, -0.903361008818253430, -0.903339563640484290, -0.903318116204366190, -0.903296666509952660, -0.903275214557297650, -0.903253760346454550, -0.903232303877476990, +-0.903210845150418720, -0.903189384165333450, -0.903167920922274710, -0.903146455421295900, -0.903124987662451200, -0.903103517645794000, -0.903082045371378040, -0.903060570839256730, +-0.903039094049484240, -0.903017615002113970, -0.902996133697199670, -0.902974650134794830, -0.902953164314953540, -0.902931676237729410, -0.902910185903176070, -0.902888693311347020, +-0.902867198462296460, -0.902845701356078000, -0.902824201992744930, -0.902802700372351660, -0.902781196494951590, -0.902759690360598550, -0.902738181969346080, -0.902716671321248440, +-0.902695158416359060, -0.902673643254731760, -0.902652125836420070, -0.902630606161478390, -0.902609084229960220, -0.902587560041919200, -0.902566033597409170, -0.902544504896484300, +-0.902522973939198110, -0.902501440725604450, -0.902479905255757050, -0.902458367529710090, -0.902436827547517200, -0.902415285309232210, -0.902393740814908860, -0.902372194064601230, +-0.902350645058363270, -0.902329093796248370, -0.902307540278311060, -0.902285984504604840, -0.902264426475183680, -0.902242866190101190, -0.902221303649411780, -0.902199738853169180, +-0.902178171801427120, -0.902156602494239460, -0.902135030931660590, -0.902113457113744020, -0.902091881040543830, -0.902070302712113750, -0.902048722128508170, -0.902027139289780730, +-0.902005554195985490, -0.901983966847176080, -0.901962377243407000, -0.901940785384731990, -0.901919191271204790, -0.901897594902879800, -0.901875996279810850, -0.901854395402051920, +-0.901832792269656850, -0.901811186882679920, -0.901789579241175090, -0.901767969345196210, -0.901746357194797230, -0.901724742790032670, -0.901703126130956160, -0.901681507217621860, +-0.901659886050083630, -0.901638262628395750, -0.901616636952612290, -0.901595009022787330, -0.901573378838974480, -0.901551746401228480, -0.901530111709603180, -0.901508474764152300, +-0.901486835564930480, -0.901465194111991550, -0.901443550405389590, -0.901421904445178670, -0.901400256231413070, -0.901378605764146860, -0.901356953043434220, -0.901335298069328880, +-0.901313640841885590, -0.901291981361158180, -0.901270319627200720, -0.901248655640067400, -0.901226989399812610, -0.901205320906490300, -0.901183650160154670, -0.901161977160859770, +-0.901140301908660120, -0.901118624403609680, -0.901096944645762510, -0.901075262635173120, -0.901053578371895700, -0.901031891855984200, -0.901010203087492910, -0.900988512066476120, +-0.900966818792988230, -0.900945123267083200, -0.900923425488815210, -0.900901725458238770, -0.900880023175408160, -0.900858318640377350, -0.900836611853200630, -0.900814902813932620, +-0.900793191522627270, -0.900771477979338990, -0.900749762184121730, -0.900728044137030340, -0.900706323838118880, -0.900684601287441540, -0.900662876485052500, -0.900641149431006480, +-0.900619420125357560, -0.900597688568159920, -0.900575954759468280, -0.900554218699336720, -0.900532480387819630, -0.900510739824971100, -0.900488997010845950, -0.900467251945498370, +-0.900445504628982650, -0.900423755061352860, -0.900402003242663950, -0.900380249172969990, -0.900358492852325500, -0.900336734280784530, -0.900314973458401950, -0.900293210385231910, +-0.900271445061328830, -0.900249677486746890, -0.900227907661541040, -0.900206135585765450, -0.900184361259474210, -0.900162584682722370, -0.900140805855564000, -0.900119024778053610, +-0.900097241450245500, -0.900075455872194510, -0.900053668043954810, -0.900031877965581040, -0.900010085637127260, -0.899988291058648530, -0.899966494230199030, -0.899944695151833400, +-0.899922893823605690, -0.899901090245571080, -0.899879284417783640, -0.899857476340298000, -0.899835666013168560, -0.899813853436450040, -0.899792038610196960, -0.899770221534463620, +-0.899748402209304850, -0.899726580634775060, -0.899704756810928870, -0.899682930737820570, -0.899661102415505120, -0.899639271844037030, -0.899617439023470580, -0.899595603953860510, +-0.899573766635261450, -0.899551927067728130, -0.899530085251314950, -0.899508241186076310, -0.899486394872067270, -0.899464546309342360, -0.899442695497955970, -0.899420842437962610, +-0.899398987129417460, -0.899377129572374810, -0.899355269766889290, -0.899333407713015400, -0.899311543410808210, -0.899289676860322130, -0.899267808061611660, -0.899245937014731990, +-0.899224063719737400, -0.899202188176682630, -0.899180310385622180, -0.899158430346611140, -0.899136548059704110, -0.899114663524955620, -0.899092776742420270, -0.899070887712153270, +-0.899048996434208990, -0.899027102908642180, -0.899005207135507470, -0.898983309114860020, -0.898961408846754130, -0.898939506331244860, -0.898917601568386520, -0.898895694558234480, +-0.898873785300843050, -0.898851873796267080, -0.898829960044561620, -0.898808044045781300, -0.898786125799980740, -0.898764205307214790, -0.898742282567538410, -0.898720357581006430, +-0.898698430347673490, -0.898676500867594320, -0.898654569140824090, -0.898632635167417430, -0.898610698947429180, -0.898588760480913960, -0.898566819767927070, -0.898544876808523130, +-0.898522931602756980, -0.898500984150683250, -0.898479034452357330, -0.898457082507833850, -0.898435128317167430, -0.898413171880413360, -0.898391213197626380, -0.898369252268861440, +-0.898347289094173050, -0.898325323673616730, -0.898303356007247090, -0.898281386095118980, -0.898259413937287250, -0.898237439533807190, -0.898215462884733530, -0.898193483990121220, +-0.898171502850025010, -0.898149519464500280, -0.898127533833601670, -0.898105545957384340, -0.898083555835902820, -0.898061563469212620, -0.898039568857368580, -0.898017572000425420, +-0.897995572898438450, -0.897973571551462620, -0.897951567959552890, -0.897929562122763980, -0.897907554041151300, -0.897885543714769810, -0.897863531143674450, -0.897841516327920090, +-0.897819499267562100, -0.897797479962655460, -0.897775458413255010, -0.897753434619415810, -0.897731408581193160, -0.897709380298642000, -0.897687349771817300, -0.897665317000774120, +-0.897643281985567860, -0.897621244726253380, -0.897599205222885830, -0.897577163475519970, -0.897555119484211520, -0.897533073249015210, -0.897511024769986010, -0.897488974047179420, +-0.897466921080650400, -0.897444865870454130, -0.897422808416645460, -0.897400748719279990, -0.897378686778412590, -0.897356622594098540, -0.897334556166392680, -0.897312487495350640, +-0.897290416581027480, -0.897268343423478170, -0.897246268022757860, -0.897224190378922090, -0.897202110492025810, -0.897180028362124180, -0.897157943989272400, -0.897135857373525860, +-0.897113768514939740, -0.897091677413568990, -0.897069584069469240, -0.897047488482695550, -0.897025390653303110, -0.897003290581347090, -0.896981188266883000, -0.896959083709965800, +-0.896936976910651000, -0.896914867868993660, -0.896892756585049190, -0.896870643058872870, -0.896848527290520000, -0.896826409280045530, -0.896804289027505310, -0.896782166532954280, +-0.896760041796447970, -0.896737914818041220, -0.896715785597789970, -0.896693654135749200, -0.896671520431974180, -0.896649384486520430, -0.896627246299443350, -0.896605105870798000, +-0.896582963200639790, -0.896560818289024450, -0.896538671136006940, -0.896516521741642760, -0.896494370105987090, -0.896472216229095790, -0.896450060111023790, -0.896427901751826740, +-0.896405741151559800, -0.896383578310278590, -0.896361413228038420, -0.896339245904894780, -0.896317076340902850, -0.896294904536118380, -0.896272730490596640, -0.896250554204393150, +-0.896228375677562970, -0.896206194910162070, -0.896184011902245730, -0.896161826653869120, -0.896139639165088210, -0.896117449435958170, -0.896095257466534510, -0.896073063256872530, +-0.896050866807028060, -0.896028668117056390, -0.896006467187013040, -0.895984264016953410, -0.895962058606933230, -0.895939850957008010, -0.895917641067233040, -0.895895428937663830, +-0.895873214568356220, -0.895850997959365620, -0.895828779110747540, -0.895806558022557260, -0.895784334694850860, -0.895762109127683500, -0.895739881321110820, -0.895717651275188540, +-0.895695418989972070, -0.895673184465517140, -0.895650947701879030, -0.895628708699113820, -0.895606467457276790, -0.895584223976423570, -0.895561978256609550, -0.895539730297890910, +-0.895517480100322840, -0.895495227663961060, -0.895472972988861080, -0.895450716075078870, -0.895428456922669810, -0.895406195531689650, -0.895383931902193790, -0.895361666034238280, +-0.895339397927878640, -0.895317127583170280, -0.895294855000169370, -0.895272580178931190, -0.895250303119511700, -0.895228023821966200, -0.895205742286350750, -0.895183458512721080, +-0.895161172501132700, -0.895138884251641230, -0.895116593764302640, -0.895094301039172650, -0.895072006076306880, -0.895049708875760960, -0.895027409437590960, -0.895005107761852380, +-0.894982803848601070, -0.894960497697892540, -0.894938189309782970, -0.894915878684327870, -0.894893565821582970, -0.894871250721604230, -0.894848933384447490, -0.894826613810168370, +-0.894804291998822500, -0.894781967950466160, -0.894759641665154760, -0.894737313142944360, -0.894714982383890470, -0.894692649388049380, -0.894670314155476600, -0.894647976686227970, +-0.894625636980359350, -0.894603295037926790, -0.894580950858985920, -0.894558604443592700, -0.894536255791802850, -0.894513904903672440, -0.894491551779257320, -0.894469196418613330, +-0.894446838821796210, -0.894424478988862130, -0.894402116919866820, -0.894379752614866020, -0.894357386073916130, -0.894335017297072650, -0.894312646284391780, -0.894290273035928900, +-0.894267897551740740, -0.894245519831882720, -0.894223139876410890, -0.894200757685381100, -0.894178373258849520, -0.894155986596872010, -0.894133597699504620, -0.894111206566802990, +-0.894088813198823500, -0.894066417595622000, -0.894044019757254560, -0.894021619683776800, -0.893999217375245130, -0.893976812831715480, -0.893954406053243610, -0.893931997039885800, +-0.893909585791698100, -0.893887172308736490, -0.893864756591056690, -0.893842338638715210, -0.893819918451767890, -0.893797496030270700, -0.893775071374279690, -0.893752644483851060, +-0.893730215359040960, -0.893707783999905250, -0.893685350406499880, -0.893662914578881360, -0.893640476517105540, -0.893618036221228600, -0.893595593691306260, -0.893573148927395140, +-0.893550701929551220, -0.893528252697830320, -0.893505801232288950, -0.893483347532983090, -0.893460891599968890, -0.893438433433302310, -0.893415973033039770, -0.893393510399237310, +-0.893371045531951010, -0.893348578431237050, -0.893326109097151710, -0.893303637529751170, -0.893281163729091500, -0.893258687695228760, -0.893236209428219460, -0.893213728928119680, +-0.893191246194985580, -0.893168761228873120, -0.893146274029838930, -0.893123784597939060, -0.893101292933229820, -0.893078799035767150, -0.893056302905607560, -0.893033804542807340, +-0.893011303947422340, -0.892988801119509290, -0.892966296059124250, -0.892943788766323410, -0.892921279241162940, -0.892898767483699560, -0.892876253493989140, -0.892853737272088170, +-0.892831218818052610, -0.892808698131939190, -0.892786175213803990, -0.892763650063703510, -0.892741122681693590, -0.892718593067831080, -0.892696061222172040, -0.892673527144772880, +-0.892650990835689770, -0.892628452294979220, -0.892605911522697750, -0.892583368518901190, -0.892560823283646390, -0.892538275816989520, -0.892515726118987110, -0.892493174189694980, +-0.892470620029170210, -0.892448063637468980, -0.892425505014647460, -0.892402944160762050, -0.892380381075869480, -0.892357815760025820, -0.892335248213287800, -0.892312678435711380, +-0.892290106427353510, -0.892267532188270260, -0.892244955718518360, -0.892222377018153770, -0.892199796087233430, -0.892177212925813530, -0.892154627533950470, -0.892132039911701090, +-0.892109450059121570, -0.892086857976268410, -0.892064263663197910, -0.892041667119967020, -0.892019068346631920, -0.891996467343249110, -0.891973864109874890, -0.891951258646566330, +-0.891928650953379590, -0.891906041030371190, -0.891883428877597530, -0.891860814495115450, -0.891838197882981350, -0.891815579041251750, -0.891792957969983040, -0.891770334669232060, +-0.891747709139055320, -0.891725081379509120, -0.891702451390650300, -0.891679819172535470, -0.891657184725221040, -0.891634548048763410, -0.891611909143219750, -0.891589268008646130, +-0.891566624645099500, -0.891543979052636050, -0.891521331231312830, -0.891498681181186360, -0.891476028902313030, -0.891453374394749590, -0.891430717658552860, -0.891408058693779260, +-0.891385397500485620, -0.891362734078728240, -0.891340068428564280, -0.891317400550050040, -0.891294730443242370, -0.891272058108197650, -0.891249383544973070, -0.891226706753624920, +-0.891204027734209920, -0.891181346486784930, -0.891158663011406670, -0.891135977308131650, -0.891113289377016500, -0.891090599218118400, -0.891067906831493840, -0.891045212217199340, +-0.891022515375291760, -0.890999816305828030, -0.890977115008864780, -0.890954411484458750, -0.890931705732666450, -0.890908997753545150, -0.890886287547151380, -0.890863575113541860, +-0.890840860452773110, -0.890818143564902520, -0.890795424449986490, -0.890772703108081760, -0.890749979539245400, -0.890727253743534230, -0.890704525721004780, -0.890681795471713890, +-0.890659062995718730, -0.890636328293075820, -0.890613591363842220, -0.890590852208074320, -0.890568110825829540, -0.890545367217164490, -0.890522621382136000, -0.890499873320800830, +-0.890477123033216130, -0.890454370519438540, -0.890431615779525120, -0.890408858813532490, -0.890386099621517820, -0.890363338203537970, -0.890340574559649540, -0.890317808689909840, +-0.890295040594375700, -0.890272270273103960, -0.890249497726151250, -0.890226722953575080, -0.890203945955432060, -0.890181166731779160, -0.890158385282673210, -0.890135601608171510, +-0.890112815708330670, -0.890090027583207990, -0.890067237232859850, -0.890044444657343890, -0.890021649856716830, -0.889998852831035640, -0.889976053580357140, -0.889953252104738750, +-0.889930448404237180, -0.889907642478909410, -0.889884834328812380, -0.889862023954003490, -0.889839211354539580, -0.889816396530477390, -0.889793579481874430, -0.889770760208787540, +-0.889747938711273670, -0.889725114989389780, -0.889702289043193370, -0.889679460872741190, -0.889656630478090400, -0.889633797859297750, -0.889610963016420840, -0.889588125949516530, +-0.889565286658641980, -0.889542445143853940, -0.889519601405209910, -0.889496755442766960, -0.889473907256582150, -0.889451056846712330, -0.889428204213215110, -0.889405349356147350, +-0.889382492275565980, -0.889359632971528650, -0.889336771444092180, -0.889313907693313870, -0.889291041719250550, -0.889268173521959750, -0.889245303101498630, -0.889222430457924150, +-0.889199555591293490, -0.889176678501664040, -0.889153799189092990, -0.889130917653637390, -0.889108033895354310, -0.889085147914301270, -0.889062259710535430, -0.889039369284113980, +-0.889016476635093870, -0.888993581763532830, -0.888970684669487700, -0.888947785353015770, -0.888924883814174560, -0.888901980053021120, -0.888879074069612640, -0.888856165864006400, +-0.888833255436259910, -0.888810342786430340, -0.888787427914574880, -0.888764510820750590, -0.888741591505015300, -0.888718669967425990, -0.888695746208039930, -0.888672820226914410, +-0.888649892024107050, -0.888626961599674910, -0.888604028953675410, -0.888581094086165590, -0.888558156997203200, -0.888535217686845510, -0.888512276155149490, -0.888489332402173090, +-0.888466386427973260, -0.888443438232607520, -0.888420487816133030, -0.888397535178607420, -0.888374580320087980, -0.888351623240632100, -0.888328663940296970, -0.888305702419140420, +-0.888282738677219630, -0.888259772714591890, -0.888236804531314590, -0.888213834127445480, -0.888190861503041830, -0.888167886658160930, -0.888144909592860190, -0.888121930307197330, +-0.888098948801229640, -0.888075965075014630, -0.888052979128609480, -0.888029990962072020, -0.888007000575459670, -0.887984007968829590, -0.887961013142239630, -0.887938016095747300, +-0.887915016829409760, -0.887892015343284550, -0.887869011637429480, -0.887846005711901980, -0.887822997566759310, -0.887799987202058990, -0.887776974617858980, -0.887753959814216450, +-0.887730942791189140, -0.887707923548834100, -0.887684902087209630, -0.887661878406372780, -0.887638852506381300, -0.887615824387292470, -0.887592794049164250, -0.887569761492054020, +-0.887546726716019310, -0.887523689721117840, -0.887500650507407230, -0.887477609074945000, -0.887454565423788530, -0.887431519553995800, -0.887408471465624290, -0.887385421158731650, +-0.887362368633375250, -0.887339313889613070, -0.887316256927502710, -0.887293197747101580, -0.887270136348467410, -0.887247072731657930, -0.887224006896730870, -0.887200938843743850, +-0.887177868572754160, -0.887154796083819970, -0.887131721376998920, -0.887108644452348270, -0.887085565309926330, -0.887062483949790370, -0.887039400371998240, -0.887016314576607350, +-0.886993226563675960, -0.886970136333261490, -0.886947043885421670, -0.886923949220214000, -0.886900852337696670, -0.886877753237927280, -0.886854651920963470, -0.886831548386862730, +-0.886808442635683370, -0.886785334667482990, -0.886762224482319230, -0.886739112080249690, -0.886715997461332560, -0.886692880625625460, -0.886669761573186220, -0.886646640304072250, +-0.886623516818341950, -0.886600391116052820, -0.886577263197262600, -0.886554133062029350, -0.886531000710410800, -0.886507866142464680, -0.886484729358248740, -0.886461590357821240, +-0.886438449141239700, -0.886415305708562080, -0.886392160059845890, -0.886369012195149630, -0.886345862114530700, -0.886322709818047280, -0.886299555305756770, -0.886276398577717560, +-0.886253239633987500, -0.886230078474624210, -0.886206915099685520, -0.886183749509229850, -0.886160581703314690, -0.886137411681997890, -0.886114239445337850, -0.886091064993392070, +-0.886067888326218740, -0.886044709443875480, -0.886021528346420670, -0.885998345033911950, -0.885975159506407480, -0.885951971763964790, -0.885928781806642470, -0.885905589634498170, +-0.885882395247589830, -0.885859198645975400, -0.885835999829713060, -0.885812798798860770, -0.885789595553476580, -0.885766390093618130, -0.885743182419343910, -0.885719972530711660, +-0.885696760427779340, -0.885673546110605340, -0.885650329579247500, -0.885627110833763780, -0.885603889874212010, -0.885580666700650830, -0.885557441313137960, -0.885534213711731470, +-0.885510983896489300, -0.885487751867469860, -0.885464517624731000, -0.885441281168330870, -0.885418042498327230, -0.885394801614778790, -0.885371558517743410, -0.885348313207279030, +-0.885325065683443710, -0.885301815946295870, -0.885278563995893550, -0.885255309832294610, -0.885232053455557550, -0.885208794865740440, -0.885185534062901350, -0.885162271047098100, +-0.885139005818389450, -0.885115738376833330, -0.885092468722487810, -0.885069196855410970, -0.885045922775661300, -0.885022646483296760, -0.884999367978375640, -0.884976087260956000, +-0.884952804331096240, -0.884929519188854430, -0.884906231834288960, -0.884882942267457560, -0.884859650488419190, -0.884836356497231580, -0.884813060293953010, -0.884789761878641670, +-0.884766461251356160, -0.884743158412154450, -0.884719853361094710, -0.884696546098235450, -0.884673236623634840, -0.884649924937351170, -0.884626611039442510, -0.884603294929967480, +-0.884579976608984240, -0.884556656076550980, -0.884533333332725990, -0.884510008377567770, -0.884486681211134610, -0.884463351833484680, -0.884440020244676160, -0.884416686444767900, +-0.884393350433817840, -0.884370012211884380, -0.884346671779025820, -0.884323329135300650, -0.884299984280767170, -0.884276637215483550, -0.884253287939508640, -0.884229936452900380, +-0.884206582755717290, -0.884183226848017530, -0.884159868729859970, -0.884136508401302760, -0.884113145862404190, -0.884089781113222670, -0.884066414153816820, -0.884043044984244910, +-0.884019673604565460, -0.883996300014836530, -0.883972924215117080, -0.883949546205465400, -0.883926165985939760, -0.883902783556598570, -0.883879398917500670, -0.883856012068704120, +-0.883832623010267440, -0.883809231742249460, -0.883785838264708250, -0.883762442577702530, -0.883739044681290500, -0.883715644575531090, -0.883692242260482490, -0.883668837736203310, +-0.883645431002751840, -0.883622022060187030, -0.883598610908567170, -0.883575197547950770, -0.883551781978396120, -0.883528364199962280, -0.883504944212707530, -0.883481522016690390, +-0.883458097611969250, -0.883434670998603070, -0.883411242176650240, -0.883387811146169270, -0.883364377907218560, -0.883340942459857060, -0.883317504804143280, -0.883294064940135510, +-0.883270622867892820, -0.883247178587473590, -0.883223732098936340, -0.883200283402339580, -0.883176832497742370, -0.883153379385203000, -0.883129924064780300, -0.883106466536532460, +-0.883083006800518660, -0.883059544856797380, -0.883036080705427270, -0.883012614346466720, -0.882989145779974890, -0.882965675006010200, -0.882942202024631250, -0.882918726835896560, +-0.882895249439865300, -0.882871769836595990, -0.882848288026147010, -0.882824804008577440, -0.882801317783945990, -0.882777829352311190, -0.882754338713731550, -0.882730845868266330, +-0.882707350815973960, -0.882683853556913260, -0.882660354091142630, -0.882636852418721470, -0.882613348539708080, -0.882589842454161280, -0.882566334162139810, -0.882542823663702620, +-0.882519310958908340, -0.882495796047815810, -0.882472278930483630, -0.882448759606970890, -0.882425238077336300, -0.882401714341638390, -0.882378188399936430, -0.882354660252288920, +-0.882331129898754840, -0.882307597339392680, -0.882284062574261730, -0.882260525603420720, -0.882236986426928270, -0.882213445044843230, -0.882189901457224760, -0.882166355664131490, +-0.882142807665622470, -0.882119257461756120, -0.882095705052591830, -0.882072150438188320, -0.882048593618604330, -0.882025034593898800, -0.882001473364130820, -0.881977909929359090, +-0.881954344289642700, -0.881930776445040140, -0.881907206395610930, -0.881883634141413690, -0.881860059682507140, -0.881836483018950680, -0.881812904150802930, -0.881789323078122970, +-0.881765739800969510, -0.881742154319401950, -0.881718566633478920, -0.881694976743259470, -0.881671384648802460, -0.881647790350167160, -0.881624193847412310, -0.881600595140597080, +-0.881576994229780090, -0.881553391115020850, -0.881529785796378080, -0.881506178273910870, -0.881482568547678040, -0.881458956617738990, -0.881435342484152560, -0.881411726146977600, +-0.881388107606273510, -0.881364486862099120, -0.881340863914513490, -0.881317238763575480, -0.881293611409344590, -0.881269981851879770, -0.881246350091239860, -0.881222716127483930, +-0.881199079960671480, -0.881175441590861250, -0.881151801018112410, -0.881128158242483920, -0.881104513264035270, -0.881080866082825210, -0.881057216698913130, -0.881033565112357640, +-0.881009911323218600, -0.880986255331554720, -0.880962597137424970, -0.880938936740888970, -0.880915274142005660, -0.880891609340834100, -0.880867942337433260, -0.880844273131862860, +-0.880820601724181750, -0.880796928114449210, -0.880773252302724070, -0.880749574289065970, -0.880725894073533970, -0.880702211656187230, -0.880678527037084820, -0.880654840216286260, +-0.880631151193850600, -0.880607459969837030, -0.880583766544304590, -0.880560070917313030, -0.880536373088921190, -0.880512673059188230, -0.880488970828173900, -0.880465266395937030, +-0.880441559762537020, -0.880417850928032930, -0.880394139892484380, -0.880370426655950560, -0.880346711218490620, -0.880322993580163640, -0.880299273741029450, -0.880275551701147130, +-0.880251827460575840, -0.880228101019374760, -0.880204372377603740, -0.880180641535321720, -0.880156908492588100, -0.880133173249461940, -0.880109435806003200, -0.880085696162270730, +-0.880061954318324120, -0.880038210274222350, -0.880014464030025260, -0.879990715585792120, -0.879966964941581890, -0.879943212097454410, -0.879919457053468970, -0.879895699809684850, +-0.879871940366161340, -0.879848178722958170, -0.879824414880134520, -0.879800648837749890, -0.879776880595863340, -0.879753110154534830, -0.879729337513823540, -0.879705562673788970, +-0.879681785634490180, -0.879658006395987240, -0.879634224958339210, -0.879610441321605710, -0.879586655485845800, -0.879562867451119450, -0.879539077217486030, -0.879515284785004630, +-0.879491490153735290, -0.879467693323737200, -0.879443894295069860, -0.879420093067792560, -0.879396289641965260, -0.879372484017647230, -0.879348676194897980, -0.879324866173776920, +-0.879301053954343770, -0.879277239536658040, -0.879253422920779240, -0.879229604106766650, -0.879205783094680230, -0.879181959884579370, -0.879158134476523690, -0.879134306870572370, +-0.879110477066785580, -0.879086645065222490, -0.879062810865942620, -0.879038974469005920, -0.879015135874471890, -0.878991295082399930, -0.878967452092849430, -0.878943606905880690, +-0.878919759521552770, -0.878895909939925610, -0.878872058161058400, -0.878848204185011190, -0.878824348011843500, -0.878800489641615060, -0.878776629074385030, -0.878752766310213710, +-0.878728901349160480, -0.878705034191284980, -0.878681164836646710, -0.878657293285305620, -0.878633419537321440, -0.878609543592753670, -0.878585665451661830, -0.878561785114105990, +-0.878537902580145750, -0.878514017849840510, -0.878490130923250460, -0.878466241800435090, -0.878442350481454140, -0.878418456966367000, -0.878394561255233960, -0.878370663348114640, +-0.878346763245068550, -0.878322860946155300, -0.878298956451435190, -0.878275049760967710, -0.878251140874812600, -0.878227229793029360, -0.878203316515678290, -0.878179401042818890, +-0.878155483374511100, -0.878131563510814230, -0.878107641451788770, -0.878083717197494230, -0.878059790747990120, -0.878035862103336730, -0.878011931263593780, -0.877987998228820900, +-0.877964062999077920, -0.877940125574424910, -0.877916185954921600, -0.877892244140627830, -0.877868300131603220, -0.877844353927908160, -0.877820405529602170, -0.877796454936745070, +-0.877772502149396730, -0.877748547167617300, -0.877724589991466520, -0.877700630621004340, -0.877676669056290270, -0.877652705297384710, -0.877628739344347490, -0.877604771197238120, +-0.877580800856117120, -0.877556828321044090, -0.877532853592079000, -0.877508876669281460, -0.877484897552712080, -0.877460916242430390, -0.877436932738496430, -0.877412947040969840, +-0.877388959149911220, -0.877364969065380200, -0.877340976787436720, -0.877316982316140530, -0.877292985651552120, -0.877268986793731330, -0.877244985742737900, -0.877220982498632010, +-0.877196977061473700, -0.877172969431323060, -0.877148959608239800, -0.877124947592284210, -0.877100933383516360, -0.877076916981996190, -0.877052898387783440, -0.877028877600938730, +-0.877004854621521780, -0.876980829449592770, -0.876956802085211320, -0.876932772528438260, -0.876908740779333120, -0.876884706837956270, -0.876860670704367350, -0.876836632378626970, +-0.876812591860794970, -0.876788549150931520, -0.876764504249096580, -0.876740457155350540, -0.876716407869753240, -0.876692356392365090, -0.876668302723245700, -0.876644246862455790, +-0.876620188810055320, -0.876596128566104140, -0.876572066130662850, -0.876548001503791420, -0.876523934685550010, -0.876499865675998470, -0.876475794475197520, -0.876451721083207120, +-0.876427645500087340, -0.876403567725898340, -0.876379487760700520, -0.876355405604554050, -0.876331321257519000, -0.876307234719655550, -0.876283145991024190, -0.876259055071684890, +-0.876234961961698030, -0.876210866661123470, -0.876186769170022030, -0.876162669488453670, -0.876138567616478350, -0.876114463554156900, -0.876090357301549270, -0.876066248858715760, +-0.876042138225716300, -0.876018025402611870, -0.875993910389462280, -0.875969793186327950, -0.875945673793268930, -0.875921552210345960, -0.875897428437619090, -0.875873302475148610, +-0.875849174322994690, -0.875825043981217970, -0.875800911449878820, -0.875776776729037200, -0.875752639818753510, -0.875728500719088480, -0.875704359430102160, -0.875680215951854750, +-0.875656070284406950, -0.875631922427819060, -0.875607772382151260, -0.875583620147463940, -0.875559465723817710, -0.875535309111272750, -0.875511150309889690, -0.875486989319728350, +-0.875462826140849910, -0.875438660773314340, -0.875414493217182120, -0.875390323472513440, -0.875366151539369140, -0.875341977417809500, -0.875317801107894920, -0.875293622609685680, +-0.875269441923242520, -0.875245259048625710, -0.875221073985895880, -0.875196886735113090, -0.875172697296338290, -0.875148505669631760, -0.875124311855053680, -0.875100115852665120, +-0.875075917662526240, -0.875051717284697660, -0.875027514719239450, -0.875003309966212670, -0.874979103025677720, -0.874954893897694870, -0.874930682582324650, -0.874906469079627990, +-0.874882253389665080, -0.874858035512496520, -0.874833815448182730, -0.874809593196784530, -0.874785368758362440, -0.874761142132976950, -0.874736913320688260, -0.874712682321557630, +-0.874688449135645250, -0.874664213763011510, -0.874639976203717360, -0.874615736457823420, -0.874591494525390090, -0.874567250406477760, -0.874543004101147600, -0.874518755609459910, +-0.874494504931475400, -0.874470252067254260, -0.874445997016857770, -0.874421739780346320, -0.874397480357780530, -0.874373218749220800, -0.874348954954728200, -0.874324688974363220, +-0.874300420808186600, -0.874276150456258620, -0.874251877918640450, -0.874227603195392720, -0.874203326286575710, -0.874179047192250590, -0.874154765912477760, -0.874130482447318170, +-0.874106196796832100, -0.874081908961080730, -0.874057618940124570, -0.874033326734024450, -0.874009032342840770, -0.873984735766634710, -0.873960437005466770, -0.873936136059397790, +-0.873911832928488170, -0.873887527612799310, -0.873863220112391590, -0.873838910427325750, -0.873814598557662410, -0.873790284503462970, -0.873765968264787700, -0.873741649841697220, +-0.873717329234252940, -0.873693006442515240, -0.873668681466545080, -0.873644354306403080, -0.873620024962150300, -0.873595693433847460, -0.873571359721555530, -0.873547023825334780, +-0.873522685745246830, -0.873498345481352080, -0.873474003033711590, -0.873449658402385750, -0.873425311587436080, -0.873400962588923080, -0.873376611406907590, -0.873352258041450450, +-0.873327902492612940, -0.873303544760455570, -0.873279184845039300, -0.873254822746424960, -0.873230458464673730, -0.873206091999846330, -0.873181723352003610, -0.873157352521206740, +-0.873132979507516340, -0.873108604310993690, -0.873084226931699180, -0.873059847369694440, -0.873035465625039970, -0.873011081697796950, -0.872986695588025880, -0.872962307295788390, +-0.872937916821145080, -0.872913524164157020, -0.872889129324884830, -0.872864732303390120, -0.872840333099733630, -0.872815931713976200, -0.872791528146178770, -0.872767122396402750, +-0.872742714464708860, -0.872718304351158050, -0.872693892055811720, -0.872669477578730590, -0.872645060919975730, -0.872620642079608100, -0.872596221057688970, -0.872571797854279410, +-0.872547372469440250, -0.872522944903232570, -0.872498515155717640, -0.872474083226956410, -0.872449649117010060, -0.872425212825939320, -0.872400774353805700, -0.872376333700670250, +-0.872351890866593930, -0.872327445851637680, -0.872302998655862920, -0.872278549279330790, -0.872254097722102050, -0.872229643984238300, -0.872205188065800390, -0.872180729966849590, +-0.872156269687446640, -0.872131807227653270, -0.872107342587530420, -0.872082875767139170, -0.872058406766540560, -0.872033935585796120, -0.872009462224966890, -0.871984986684113950, +-0.871960508963298350, -0.871936029062581720, -0.871911546982024890, -0.871887062721689370, -0.871862576281635880, -0.871838087661926160, -0.871813596862621280, -0.871789103883782280, +-0.871764608725470460, -0.871740111387747210, -0.871715611870673810, -0.871691110174311110, -0.871666606298720730, -0.871642100243963940, -0.871617592010101920, -0.871593081597195730, +-0.871568569005306990, -0.871544054234496880, -0.871519537284826560, -0.871495018156357220, -0.871470496849150570, -0.871445973363267680, -0.871421447698769840, -0.871396919855718100, +-0.871372389834174420, -0.871347857634199640, -0.871323323255855260, -0.871298786699202350, -0.871274247964302750, -0.871249707051217400, -0.871225163960007710, -0.871200618690735280, +-0.871176071243461190, -0.871151521618247050, -0.871126969815153920, -0.871102415834243530, -0.871077859675577050, -0.871053301339215990, -0.871028740825221410, -0.871004178133655160, +-0.870979613264578620, -0.870955046218052860, -0.870930476994139390, -0.870905905592899930, -0.870881332014395660, -0.870856756258688080, -0.870832178325838480, -0.870807598215908580, +-0.870783015928959680, -0.870758431465052940, -0.870733844824250420, -0.870709256006613310, -0.870684665012203100, -0.870660071841080960, -0.870635476493308860, -0.870610878968947950, +-0.870586279268059980, -0.870561677390706110, -0.870537073336948190, -0.870512467106847600, -0.870487858700465860, -0.870463248117864350, -0.870438635359104820, -0.870414020424248760, +-0.870389403313357570, -0.870364784026492640, -0.870340162563716050, -0.870315538925089060, -0.870290913110672970, -0.870266285120529840, -0.870241654954720940, -0.870217022613308020, +-0.870192388096352240, -0.870167751403915670, -0.870143112536059800, -0.870118471492846160, -0.870093828274336010, -0.870069182880591650, -0.870044535311674250, -0.870019885567645530, +-0.869995233648566790, -0.869970579554500300, -0.869945923285507350, -0.869921264841649560, -0.869896604222988420, -0.869871941429586020, -0.869847276461503730, -0.869822609318803170, +-0.869797940001545980, -0.869773268509794080, -0.869748594843609110, -0.869723919003052350, -0.869699240988185960, -0.869674560799071570, -0.869649878435770800, -0.869625193898345030, +-0.869600507186856550, -0.869575818301366770, -0.869551127241937500, -0.869526434008630060, -0.869501738601506920, -0.869477041020629280, -0.869452341266059080, -0.869427639337857940, +-0.869402935236087800, -0.869378228960810300, -0.869353520512087250, -0.869328809889980290, -0.869304097094551360, -0.869279382125862310, -0.869254664983974520, -0.869229945668950400, +-0.869205224180851220, -0.869180500519739160, -0.869155774685675510, -0.869131046678722760, -0.869106316498942320, -0.869081584146396020, -0.869056849621145600, -0.869032112923253330, +-0.869007374052780720, -0.868982633009789730, -0.868957889794341850, -0.868933144406499600, -0.868908396846324370, -0.868883647113878220, -0.868858895209222660, -0.868834141132420080, +-0.868809384883532210, -0.868784626462620670, -0.868759865869747740, -0.868735103104975150, -0.868710338168364850, -0.868685571059978460, -0.868660801779878260, -0.868636030328126200, +-0.868611256704784010, -0.868586480909913420, -0.868561702943576930, -0.868536922805836050, -0.868512140496752960, -0.868487356016389270, -0.868462569364807480, -0.868437780542069220, +-0.868412989548236540, -0.868388196383371060, -0.868363401047535400, -0.868338603540791290, -0.868313803863200560, -0.868289002014825170, -0.868264197995727400, -0.868239391805969210, +-0.868214583445612310, -0.868189772914719220, -0.868164960213351660, -0.868140145341571690, -0.868115328299441160, -0.868090509087022450, -0.868065687704377530, -0.868040864151568450, +-0.868016038428656930, -0.867991210535705490, -0.867966380472776080, -0.867941548239930750, -0.867916713837231240, -0.867891877264740260, -0.867867038522519450, -0.867842197610631190, +-0.867817354529137110, -0.867792509278099920, -0.867767661857581470, -0.867742812267643600, -0.867717960508349040, -0.867693106579759400, -0.867668250481937080, -0.867643392214943910, +-0.867618531778842520, -0.867593669173694740, -0.867568804399562850, -0.867543937456508710, -0.867519068344594910, -0.867494197063883420, -0.867469323614436520, -0.867444447996316040, +-0.867419570209584710, -0.867394690254304380, -0.867369808130537320, -0.867344923838345610, -0.867320037377791730, -0.867295148748937760, -0.867270257951845760, -0.867245364986578340, +-0.867220469853197450, -0.867195572551765380, -0.867170673082344190, -0.867145771444996490, -0.867120867639784470, -0.867095961666770170, -0.867071053526015770, -0.867046143217584000, +-0.867021230741536920, -0.866996316097936700, -0.866971399286845410, -0.866946480308325880, -0.866921559162440180, -0.866896635849250590, -0.866871710368819160, -0.866846782721208630, +-0.866821852906481280, -0.866796920924698950, -0.866771986775924600, -0.866747050460220270, -0.866722111977648370, -0.866697171328270840, -0.866672228512150640, -0.866647283529349940, +-0.866622336379931020, -0.866597387063956060, -0.866572435581487780, -0.866547481932588460, -0.866522526117320390, -0.866497568135745740, -0.866472607987927470, -0.866447645673927740, +-0.866422681193808830, -0.866397714547632920, -0.866372745735463080, -0.866347774757361360, -0.866322801613390150, -0.866297826303611630, -0.866272848828088860, -0.866247869186884010, +-0.866222887380059260, -0.866197903407677440, -0.866172917269800950, -0.866147928966492060, -0.866122938497813190, -0.866097945863827160, -0.866072951064596360, -0.866047954100183090, +-0.866022954970649740, -0.865997953676059250, -0.865972950216473800, -0.865947944591956010, -0.865922936802568160, -0.865897926848373190, -0.865872914729433400, -0.865847900445811390, +-0.865822883997569240, -0.865797865384770220, -0.865772844607476610, -0.865747821665750480, -0.865722796559655120, -0.865697769289252790, -0.865672739854606020, -0.865647708255777190, +-0.865622674492829260, -0.865597638565824720, -0.865572600474825980, -0.865547560219895540, -0.865522517801096460, -0.865497473218491130, -0.865472426472142060, -0.865447377562111760, +-0.865422326488463180, -0.865397273251258810, -0.865372217850561180, -0.865347160286432880, -0.865322100558936880, -0.865297038668135570, -0.865271974614091550, -0.865246908396867690, +-0.865221840016526690, -0.865196769473130960, -0.865171696766743210, -0.865146621897426420, -0.865121544865242950, -0.865096465670255780, -0.865071384312527060, -0.865046300792120190, +-0.865021215109097570, -0.864996127263521930, -0.864971037255455770, -0.864945945084962140, -0.864920850752103790, -0.864895754256943210, -0.864870655599543010, -0.864845554779966500, +-0.864820451798275940, -0.864795346654534390, -0.864770239348804150, -0.864745129881148600, -0.864720018251630250, -0.864694904460311610, -0.864669788507255950, -0.864644670392525790, +-0.864619550116183970, -0.864594427678292980, -0.864569303078916220, -0.864544176318116200, -0.864519047395955640, -0.864493916312497390, -0.864468783067804500, -0.864443647661939600, +-0.864418510094965730, -0.864393370366945190, -0.864368228477941590, -0.864343084428017330, -0.864317938217235350, -0.864292789845658380, -0.864267639313349600, -0.864242486620371730, +-0.864217331766787390, -0.864192174752660080, -0.864167015578052200, -0.864141854243026810, -0.864116690747646520, -0.864091525091974840, -0.864066357276074280, -0.864041187300007780, +-0.864016015163838190, -0.863990840867628670, -0.863965664411442180, -0.863940485795341440, -0.863915305019389290, -0.863890122083649130, -0.863864936988183670, -0.863839749733055770, +-0.863814560318328370, -0.863789368744064760, -0.863764175010327650, -0.863738979117180010, -0.863713781064685100, -0.863688580852905790, -0.863663378481904890, -0.863638173951745470, +-0.863612967262490700, -0.863587758414203540, -0.863562547406947050, -0.863537334240783940, -0.863512118915777730, -0.863486901431991250, -0.863461681789487460, -0.863436459988329300, +-0.863411236028580160, -0.863386009910302900, -0.863360781633560670, -0.863335551198416320, -0.863310318604933240, -0.863285083853174370, -0.863259846943202570, -0.863234607875081330, +-0.863209366648873600, -0.863184123264642560, -0.863158877722450920, -0.863133630022362320, -0.863108380164439580, -0.863083128148745880, -0.863057873975344170, -0.863032617644298060, +-0.863007359155670390, -0.862982098509524230, -0.862956835705922630, -0.862931570744929210, -0.862906303626606920, -0.862881034351018820, -0.862855762918227850, -0.862830489328297760, +-0.862805213581291470, -0.862779935677272070, -0.862754655616302600, -0.862729373398446800, -0.862704089023767500, -0.862678802492327760, -0.862653513804191310, -0.862628222959420990, +-0.862602929958080190, -0.862577634800231750, -0.862552337485939510, -0.862527038015266420, -0.862501736388275760, -0.862476432605030490, -0.862451126665594310, -0.862425818570030420, +-0.862400508318401980, -0.862375195910771940, -0.862349881347204250, -0.862324564627761750, -0.862299245752507940, -0.862273924721505770, -0.862248601534818970, -0.862223276192510710, +-0.862197948694644060, -0.862172619041282730, -0.862147287232489790, -0.862121953268328740, -0.862096617148862430, -0.862071278874154910, -0.862045938444269240, -0.862020595859268600, +-0.861995251119216380, -0.861969904224176190, -0.861944555174211200, -0.861919203969384930, -0.861893850609760310, -0.861868495095401310, -0.861843137426371090, -0.861817777602733040, +-0.861792415624550330, -0.861767051491886820, -0.861741685204805650, -0.861716316763370130, -0.861690946167643860, -0.861665573417690340, -0.861640198513572870, -0.861614821455354730, +-0.861589442243099750, -0.861564060876871100, -0.861538677356732290, -0.861513291682746600, -0.861487903854977870, -0.861462513873489490, -0.861437121738344750, -0.861411727449607030, +-0.861386331007340080, -0.861360932411607380, -0.861335531662472450, -0.861310128759998350, -0.861284723704249130, -0.861259316495288200, -0.861233907133178930, -0.861208495617984630, +-0.861183081949769450, -0.861157666128596460, -0.861132248154529050, -0.861106828027631280, -0.861081405747966430, -0.861055981315598130, -0.861030554730589650, -0.861005125993004940, +-0.860979695102907390, -0.860954262060360740, -0.860928826865428040, -0.860903389518173580, -0.860877950018660740, -0.860852508366952930, -0.860827064563113640, -0.860801618607206830, +-0.860776170499296110, -0.860750720239444880, -0.860725267827716630, -0.860699813264175440, -0.860674356548884690, -0.860648897681907890, -0.860623436663309090, -0.860597973493151590, +-0.860572508171499220, -0.860547040698415370, -0.860521571073964210, -0.860496099298209030, -0.860470625371213550, -0.860445149293041390, -0.860419671063756500, -0.860394190683422490, +-0.860368708152102980, -0.860343223469861470, -0.860317736636762140, -0.860292247652868490, -0.860266756518244250, -0.860241263232952800, -0.860215767797058440, -0.860190270210624660, +-0.860164770473714980, -0.860139268586393670, -0.860113764548724120, -0.860088258360770190, -0.860062750022595360, -0.860037239534263920, -0.860011726895839380, -0.859986212107385460, +-0.859960695168965890, -0.859935176080644740, -0.859909654842485600, -0.859884131454552340, -0.859858605916908660, -0.859833078229618520, -0.859807548392745760, -0.859782016406354210, +-0.859756482270507270, -0.859730945985269450, -0.859705407550704130, -0.859679866966875150, -0.859654324233846800, -0.859628779351682470, -0.859603232320446330, -0.859577683140201780, +-0.859552131811013310, -0.859526578332944550, -0.859501022706059330, -0.859475464930421260, -0.859449905006094860, -0.859424342933143630, -0.859398778711631510, -0.859373212341622230, +-0.859347643823180190, -0.859322073156368990, -0.859296500341252710, -0.859270925377894850, -0.859245348266359900, -0.859219769006711600, -0.859194187599014000, -0.859168604043330510, +-0.859143018339725840, -0.859117430488263610, -0.859091840489007550, -0.859066248342022170, -0.859040654047371180, -0.859015057605118540, -0.858989459015327970, -0.858963858278063990, +-0.858938255393390420, -0.858912650361371210, -0.858887043182070100, -0.858861433855551580, -0.858835822381879610, -0.858810208761118020, -0.858784592993330540, -0.858758975078582010, +-0.858733355016935930, -0.858707732808456470, -0.858682108453207470, -0.858656481951253440, -0.858630853302658200, -0.858605222507485610, -0.858579589565800160, -0.858553954477665800, +-0.858528317243146490, -0.858502677862306160, -0.858477036335209440, -0.858451392661920050, -0.858425746842502170, -0.858400098877019730, -0.858374448765537260, -0.858348796508118680, +-0.858323142104828070, -0.858297485555729490, -0.858271826860887320, -0.858246166020365630, -0.858220503034228480, -0.858194837902539920, -0.858169170625364350, -0.858143501202766060, +-0.858117829634808650, -0.858092155921556850, -0.858066480063074730, -0.858040802059426460, -0.858015121910675860, -0.857989439616887780, -0.857963755178126060, -0.857938068594454980, +-0.857912379865938380, -0.857886688992641200, -0.857860995974627280, -0.857835300811960800, -0.857809603504705920, -0.857783904052927150, -0.857758202456688770, -0.857732498716054730, +-0.857706792831089300, -0.857681084801857120, -0.857655374628422230, -0.857629662310848810, -0.857603947849201130, -0.857578231243543710, -0.857552512493940820, -0.857526791600456420, +-0.857501068563155110, -0.857475343382101300, -0.857449616057359030, -0.857423886588992490, -0.857398154977066510, -0.857372421221645140, -0.857346685322792680, -0.857320947280573400, +-0.857295207095051800, -0.857269464766292290, -0.857243720294359140, -0.857217973679316400, -0.857192224921229040, -0.857166474020161000, -0.857140720976176770, -0.857114965789340650, +-0.857089208459717260, -0.857063448987370860, -0.857037687372365520, -0.857011923614766300, -0.856986157714637260, -0.856960389672042800, -0.856934619487047190, -0.856908847159715160, +-0.856883072690111100, -0.856857296078299300, -0.856831517324344150, -0.856805736428310260, -0.856779953390262140, -0.856754168210264070, -0.856728380888380440, -0.856702591424676090, +-0.856676799819215180, -0.856651006072062350, -0.856625210183281640, -0.856599412152938220, -0.856573611981096270, -0.856547809667820070, -0.856522005213174680, -0.856496198617224150, +-0.856470389880033100, -0.856444579001665930, -0.856418765982187470, -0.856392950821662110, -0.856367133520154370, -0.856341314077728620, -0.856315492494449830, -0.856289668770382150, +-0.856263842905590430, -0.856238014900138960, -0.856212184754092550, -0.856186352467515730, -0.856160518040472880, -0.856134681473028740, -0.856108842765248010, -0.856083001917195110, +-0.856057158928934530, -0.856031313800531320, -0.856005466532049790, -0.855979617123554640, -0.855953765575110160, -0.855927911886781520, -0.855902056058633120, -0.855876198090729570, +-0.855850337983135260, -0.855824475735915470, -0.855798611349134370, -0.855772744822856700, -0.855746876157146950, -0.855721005352070410, -0.855695132407691130, -0.855669257324074170, +-0.855643380101283820, -0.855617500739385140, -0.855591619238442850, -0.855565735598521450, -0.855539849819685450, -0.855513961902000130, -0.855488071845529880, -0.855462179650339220, +-0.855436285316493290, -0.855410388844056620, -0.855384490233094040, -0.855358589483670050, -0.855332686595849820, -0.855306781569697750, -0.855280874405278890, -0.855254965102657420, +-0.855229053661898940, -0.855203140083067750, -0.855177224366228780, -0.855151306511446440, -0.855125386518786110, -0.855099464388312190, -0.855073540120089740, -0.855047613714183140, +-0.855021685170657800, -0.854995754489578320, -0.854969821671009100, -0.854943886715015530, -0.854917949621662340, -0.854892010391014150, -0.854866069023135890, -0.854840125518092520, +-0.854814179875948990, -0.854788232096769800, -0.854762282180620000, -0.854736330127564670, -0.854710375937668410, -0.854684419610996390, -0.854658461147612900, -0.854632500547583660, +-0.854606537810973070, -0.854580572937846170, -0.854554605928267600, -0.854528636782302730, -0.854502665500016300, -0.854476692081472920, -0.854450716526738100, -0.854424738835876440, +-0.854398759008953010, -0.854372777046032320, -0.854346792947180080, -0.854320806712460690, -0.854294818341939430, -0.854268827835680810, -0.854242835193750440, -0.854216840416212930, +-0.854190843503133230, -0.854164844454576300, -0.854138843270607520, -0.854112839951291500, -0.854086834496693430, -0.854060826906878120, -0.854034817181910990, -0.854008805321856750, +-0.853982791326780450, -0.853956775196746950, -0.853930756931821740, -0.853904736532069770, -0.853878713997555660, -0.853852689328344900, -0.853826662524502570, -0.853800633586093480, +-0.853774602513182600, -0.853748569305835430, -0.853722533964116790, -0.853696496488091870, -0.853670456877825500, -0.853644415133383290, -0.853618371254829870, -0.853592325242230610, +-0.853566277095650360, -0.853540226815154620, -0.853514174400808230, -0.853488119852676470, -0.853462063170824180, -0.853436004355316970, -0.853409943406219780, -0.853383880323597350, +-0.853357815107515630, -0.853331747758039330, -0.853305678275233630, -0.853279606659163470, -0.853253532909894590, -0.853227457027491810, -0.853201379012020420, -0.853175298863545370, +-0.853149216582132270, -0.853123132167846190, -0.853097045620752280, -0.853070956940915390, -0.853044866128401470, -0.853018773183275350, -0.852992678105602310, -0.852966580895447300, +-0.852940481552876160, -0.852914380077953730, -0.852888276470745170, -0.852862170731316090, -0.852836062859731680, -0.852809952856056990, -0.852783840720357290, -0.852757726452698210, +-0.852731610053144800, -0.852705491521762340, -0.852679370858615890, -0.852653248063771300, -0.852627123137293610, -0.852600996079248000, -0.852574866889699750, -0.852548735568714580, +-0.852522602116357550, -0.852496466532694060, -0.852470328817789060, -0.852444188971708590, -0.852418046994517620, -0.852391902886281530, -0.852365756647065380, -0.852339608276935110, +-0.852313457775955910, -0.852287305144192710, -0.852261150381711570, -0.852234993488577450, -0.852208834464855960, -0.852182673310612150, -0.852156510025911750, -0.852130344610820160, +-0.852104177065402760, -0.852078007389724610, -0.852051835583851780, -0.852025661647849210, -0.851999485581782620, -0.851973307385716970, -0.851947127059718420, -0.851920944603851930, +-0.851894760018183090, -0.851868573302777210, -0.851842384457700000, -0.851816193483016960, -0.851790000378793160, -0.851763805145094530, -0.851737607781986480, -0.851711408289534290, +-0.851685206667803450, -0.851659002916859810, -0.851632797036768640, -0.851606589027595450, -0.851580378889405630, -0.851554166622265130, -0.851527952226239120, -0.851501735701393200, +-0.851475517047792780, -0.851449296265503810, -0.851423073354591550, -0.851396848315121630, -0.851370621147159330, -0.851344391850770820, -0.851318160426021150, -0.851291926872976060, +-0.851265691191701260, -0.851239453382262260, -0.851213213444724560, -0.851186971379153670, -0.851160727185615530, -0.851134480864175650, -0.851108232414899520, -0.851081981837852550, +-0.851055729133100900, -0.851029474300709850, -0.851003217340745240, -0.850976958253272240, -0.850950697038357130, -0.850924433696065300, -0.850898168226462360, -0.850871900629613820, +-0.850845630905585630, -0.850819359054443500, -0.850793085076252620, -0.850766808971079370, -0.850740530738989030, -0.850714250380047440, -0.850687967894319890, -0.850661683281872750, +-0.850635396542771320, -0.850609107677081420, -0.850582816684868570, -0.850556523566198820, -0.850530228321137890, -0.850503930949751300, -0.850477631452104640, -0.850451329828264210, +-0.850425026078295400, -0.850398720202264040, -0.850372412200235630, -0.850346102072276340, -0.850319789818451910, -0.850293475438828050, -0.850267158933470160, -0.850240840302444620, +-0.850214519545817060, -0.850188196663652860, -0.850161871656018530, -0.850135544522979460, -0.850109215264601480, -0.850082883880950320, -0.850056550372092050, -0.850030214738092480, +-0.850003876979017470, -0.849977537094932400, -0.849951195085903780, -0.849924850951997100, -0.849898504693278320, -0.849872156309813160, -0.849845805801667690, -0.849819453168907830, +-0.849793098411599220, -0.849766741529807800, -0.849740382523599620, -0.849714021393040530, -0.849687658138196130, -0.849661292759132820, -0.849634925255916330, -0.849608555628612480, +-0.849582183877287010, -0.849555810002006310, -0.849529434002836090, -0.849503055879842320, -0.849476675633090590, -0.849450293262647430, -0.849423908768578650, -0.849397522150949990, +-0.849371133409827280, -0.849344742545277030, -0.849318349557364850, -0.849291954446156900, -0.849265557211718810, -0.849239157854116970, -0.849212756373417310, -0.849186352769685460, +-0.849159947042988030, -0.849133539193390740, -0.849107129220959660, -0.849080717125760390, -0.849054302907859660, -0.849027886567323090, -0.849001468104216840, -0.848975047518606640, +-0.848948624810559100, -0.848922199980140070, -0.848895773027415480, -0.848869343952451170, -0.848842912755313760, -0.848816479436069080, -0.848790043994783310, -0.848763606431522040, +-0.848737166746352020, -0.848710724939339190, -0.848684281010549380, -0.848657834960048760, -0.848631386787903730, -0.848604936494180230, -0.848578484078944210, -0.848552029542262170, +-0.848525572884200050, -0.848499114104824040, -0.848472653204199960, -0.848446190182394530, -0.848419725039473600, -0.848393257775503340, -0.848366788390549800, -0.848340316884679480, +-0.848313843257958330, -0.848287367510452530, -0.848260889642228120, -0.848234409653351730, -0.848207927543889300, -0.848181443313907100, -0.848154956963470990, -0.848128468492647780, +-0.848101977901503430, -0.848075485190103780, -0.848048990358515780, -0.848022493406805240, -0.847995994335038470, -0.847969493143281410, -0.847942989831600990, -0.847916484400062950, +-0.847889976848733800, -0.847863467177679460, -0.847836955386966680, -0.847810441476661510, -0.847783925446830230, -0.847757407297538900, -0.847730887028854350, -0.847704364640842530, +-0.847677840133569730, -0.847651313507102210, -0.847624784761506600, -0.847598253896848950, -0.847571720913195550, -0.847545185810613000, -0.847518648589167590, -0.847492109248925480, +-0.847465567789952860, -0.847439024212316540, -0.847412478516082700, -0.847385930701317620, -0.847359380768087480, -0.847332828716459210, -0.847306274546498760, -0.847279718258272750, +-0.847253159851847130, -0.847226599327288830, -0.847200036684664040, -0.847173471924039250, -0.847146905045480400, -0.847120336049054570, -0.847093764934828020, -0.847067191702866710, +-0.847040616353237690, -0.847014038886007010, -0.846987459301241420, -0.846960877599006840, -0.846934293779370350, -0.846907707842398110, -0.846881119788156500, -0.846854529616712040, +-0.846827937328131330, -0.846801342922480880, -0.846774746399826970, -0.846748147760236100, -0.846721547003775000, -0.846694944130510050, -0.846668339140507760, -0.846641732033834420, +-0.846615122810556840, -0.846588511470741660, -0.846561898014455030, -0.846535282441763460, -0.846508664752734010, -0.846482044947432840, -0.846455423025926250, -0.846428798988281380, +-0.846402172834564540, -0.846375544564842320, -0.846348914179180900, -0.846322281677647560, -0.846295647060308460, -0.846269010327230120, -0.846242371478479140, -0.846215730514122470, +-0.846189087434226490, -0.846162442238857730, -0.846135794928082660, -0.846109145501968250, -0.846082493960581110, -0.846055840303987730, -0.846029184532254400, -0.846002526645448390, +-0.845975866643636110, -0.845949204526883940, -0.845922540295258930, -0.845895873948827590, -0.845869205487656540, -0.845842534911812270, -0.845815862221361960, -0.845789187416371880, +-0.845762510496908870, -0.845735831463039430, -0.845709150314830630, -0.845682467052348840, -0.845655781675661020, -0.845629094184833340, -0.845602404579933300, -0.845575712861027280, +-0.845549019028181800, -0.845522323081463690, -0.845495625020940000, -0.845468924846677240, -0.845442222558741910, -0.845415518157201170, -0.845388811642121760, -0.845362103013570290, +-0.845335392271613360, -0.845308679416318150, -0.845281964447751170, -0.845255247365979350, -0.845228528171069190, -0.845201806863087990, -0.845175083442102130, -0.845148357908178660, +-0.845121630261384090, -0.845094900501785600, -0.845068168629449890, -0.845041434644443810, -0.845014698546833750, -0.844987960336687330, -0.844961220014071030, -0.844934477579051600, +-0.844907733031695750, -0.844880986372070760, -0.844854237600243470, -0.844827486716280160, -0.844800733720248440, -0.844773978612214930, -0.844747221392246450, -0.844720462060409630, +-0.844693700616771960, -0.844666937061399950, -0.844640171394360650, -0.844613403615720790, -0.844586633725547540, -0.844559861723907730, -0.844533087610868320, -0.844506311386495790, +-0.844479533050857880, -0.844452752604021080, -0.844425970046052350, -0.844399185377018520, -0.844372398596986980, -0.844345609706024460, -0.844318818704197670, -0.844292025591574010, +-0.844265230368220320, -0.844238433034203540, -0.844211633589590390, -0.844184832034448500, -0.844158028368844460, -0.844131222592845450, -0.844104414706517980, -0.844077604709929870, +-0.844050792603147640, -0.844023978386238550, -0.843997162059269110, -0.843970343622307160, -0.843943523075419310, -0.843916700418672620, -0.843889875652133910, -0.843863048775870820, +-0.843836219789950050, -0.843809388694438440, -0.843782555489403730, -0.843755720174912520, -0.843728882751032080, -0.843702043217829270, -0.843675201575371460, -0.843648357823725710, +-0.843621511962958980, -0.843594663993138320, -0.843567813914331220, -0.843540961726604640, -0.843514107430025530, -0.843487251024661040, -0.843460392510578580, -0.843433531887845090, +-0.843406669156527840, -0.843379804316693680, -0.843352937368410330, -0.843326068311744500, -0.843299197146763380, -0.843272323873534460, -0.843245448492124680, -0.843218571002601340, +-0.843191691405031250, -0.843164809699482260, -0.843137925886021210, -0.843111039964715370, -0.843084151935631580, -0.843057261798837780, -0.843030369554400800, -0.843003475202387940, +-0.842976578742866020, -0.842949680175902990, -0.842922779501565690, -0.842895876719921610, -0.842868971831037370, -0.842842064834981140, -0.842815155731819640, -0.842788244521620270, +-0.842761331204450070, -0.842734415780376670, -0.842707498249467330, -0.842680578611789020, -0.842653656867409450, -0.842626733016395790, -0.842599807058815320, -0.842572878994734990, +-0.842545948824222850, -0.842519016547345730, -0.842492082164171040, -0.842465145674766050, -0.842438207079198250, -0.842411266377535050, -0.842384323569843610, -0.842357378656191200, +-0.842330431636645560, -0.842303482511273850, -0.842276531280143460, -0.842249577943321450, -0.842222622500875760, -0.842195664952873460, -0.842168705299381810, -0.842141743540468670, +-0.842114779676201080, -0.842087813706646650, -0.842060845631872330, -0.842033875451946190, -0.842006903166935380, -0.841979928776907300, -0.841952952281929120, -0.841925973682068900, +-0.841898992977393680, -0.841872010167970970, -0.841845025253867950, -0.841818038235152670, -0.841791049111892290, -0.841764057884154320, -0.841737064552005920, -0.841710069115515160, +-0.841683071574749090, -0.841656071929775210, -0.841629070180661350, -0.841602066327474920, -0.841575060370283180, -0.841548052309153640, -0.841521042144154130, -0.841494029875352050, +-0.841467015502815000, -0.841439999026610040, -0.841412980446805350, -0.841385959763468190, -0.841358936976666190, -0.841331912086466630, -0.841304885092937440, -0.841277855996146130, +-0.841250824796160090, -0.841223791493046820, -0.841196756086874280, -0.841169718577709840, -0.841142678965621120, -0.841115637250675400, -0.841088593432940960, -0.841061547512484960, +-0.841034499489374810, -0.841007449363678660, -0.840980397135463910, -0.840953342804798280, -0.840926286371748930, -0.840899227836384040, -0.840872167198771230, -0.840845104458977980, +-0.840818039617071690, -0.840790972673120530, -0.840763903627191890, -0.840736832479353600, -0.840709759229672950, -0.840682683878218100, -0.840655606425056550, -0.840628526870256020, +-0.840601445213883910, -0.840574361456008500, -0.840547275596697060, -0.840520187636017320, -0.840493097574037230, -0.840466005410824500, -0.840438911146446750, -0.840411814780971380, +-0.840384716314466760, -0.840357615747000410, -0.840330513078639930, -0.840303408309453050, -0.840276301439507820, -0.840249192468871750, -0.840222081397612790, -0.840194968225798420, +-0.840167852953496830, -0.840140735580775620, -0.840113616107702520, -0.840086494534345140, -0.840059370860771870, -0.840032245087050100, -0.840005117213247440, -0.839977987239432290, +-0.839950855165672140, -0.839923720992034940, -0.839896584718588080, -0.839869446345400060, -0.839842305872538390, -0.839815163300071000, -0.839788018628065400, -0.839760871856590100, +-0.839733722985712470, -0.839706572015500700, -0.839679418946022160, -0.839652263777345250, -0.839625106509537810, -0.839597947142667560, -0.839570785676802210, -0.839543622112010060, +-0.839516456448358930, -0.839489288685916430, -0.839462118824750860, -0.839434946864930140, -0.839407772806521900, -0.839380596649594080, -0.839353418394214960, -0.839326238040452370, +-0.839299055588374140, -0.839271871038048010, -0.839244684389542470, -0.839217495642925250, -0.839190304798264290, -0.839163111855627200, -0.839135916815082710, -0.839108719676698310, +-0.839081520440542180, -0.839054319106682040, -0.839027115675186290, -0.838999910146122850, -0.838972702519559580, -0.838945492795564180, -0.838918280974205510, -0.838891067055550940, +-0.838863851039668540, -0.838836632926626800, -0.838809412716493450, -0.838782190409336550, -0.838754966005223920, -0.838727739504224190, -0.838700510906405070, -0.838673280211834630, +-0.838646047420580800, -0.838618812532712090, -0.838591575548296330, -0.838564336467401690, -0.838537095290095900, -0.838509852016447680, -0.838482606646524740, -0.838455359180395380, +-0.838428109618127190, -0.838400857959789140, -0.838373604205448930, -0.838346348355174410, -0.838319090409034300, -0.838291830367096540, -0.838264568229429070, -0.838237303996099970, +-0.838210037667177940, -0.838182769242730720, -0.838155498722826690, -0.838128226107533570, -0.838100951396920090, -0.838073674591054310, -0.838046395690004390, -0.838019114693838160, +-0.837991831602624360, -0.837964546416431030, -0.837937259135326350, -0.837909969759378260, -0.837882678288655480, -0.837855384723225960, -0.837828089063157870, -0.837800791308519700, +-0.837773491459379520, -0.837746189515805710, -0.837718885477866100, -0.837691579345629540, -0.837664271119164080, -0.837636960798537890, -0.837609648383819130, -0.837582333875076410, +-0.837555017272377910, -0.837527698575791790, -0.837500377785386220, -0.837473054901230030, -0.837445729923391060, -0.837418402851937920, -0.837391073686938440, -0.837363742428461450, +-0.837336409076575250, -0.837309073631347990, -0.837281736092847730, -0.837254396461143410, -0.837227054736303100, -0.837199710918394960, -0.837172365007487710, -0.837145017003649630, +-0.837117666906948890, -0.837090314717453880, -0.837062960435233210, -0.837035604060355260, -0.837008245592888220, -0.836980885032900250, -0.836953522380460390, -0.836926157635636820, +-0.836898790798497720, -0.836871421869111450, -0.836844050847546870, -0.836816677733872140, -0.836789302528155750, -0.836761925230465780, -0.836734545840871370, -0.836707164359440480, +-0.836679780786241500, -0.836652395121343260, -0.836625007364814040, -0.836597617516722350, -0.836570225577136340, -0.836542831546125080, -0.836515435423756730, -0.836488037210099680, +-0.836460636905222430, -0.836433234509193710, -0.836405830022081910, -0.836378423443955630, -0.836351014774883050, -0.836323604014933110, -0.836296191164174090, -0.836268776222674700, +-0.836241359190503130, -0.836213940067728420, -0.836186518854418750, -0.836159095550642610, -0.836131670156469050, -0.836104242671966260, -0.836076813097202830, -0.836049381432247050, +-0.836021947677168200, -0.835994511832034440, -0.835967073896914380, -0.835939633871876420, -0.835912191756989610, -0.835884747552322340, -0.835857301257943110, -0.835829852873920530, +-0.835802402400323440, -0.835774949837220450, -0.835747495184679940, -0.835720038442770540, -0.835692579611561290, -0.835665118691120590, -0.835637655681516820, -0.835610190582819270, +-0.835582723395096090, -0.835555254118416140, -0.835527782752847890, -0.835500309298460310, -0.835472833755322000, -0.835445356123501680, -0.835417876403067640, -0.835390394594089150, +-0.835362910696634710, -0.835335424710773040, -0.835307936636572550, -0.835280446474102380, -0.835252954223431150, -0.835225459884627490, -0.835197963457759980, -0.835170464942897820, +-0.835142964340109480, -0.835115461649463710, -0.835087956871029100, -0.835060450004874830, -0.835032941051069400, -0.835005430009681300, -0.834977916880780050, -0.834950401664433910, +-0.834922884360711710, -0.834895364969682090, -0.834867843491414300, -0.834840319925976960, -0.834812794273438800, -0.834785266533868420, -0.834757736707335110, -0.834730204793907470, +-0.834702670793654230, -0.834675134706644120, -0.834647596532946510, -0.834620056272629810, -0.834592513925762950, -0.834564969492414650, -0.834537422972654100, -0.834509874366550000, +-0.834482323674170970, -0.834454770895586400, -0.834427216030864890, -0.834399659080075300, -0.834372100043286320, -0.834344538920567480, -0.834316975711987150, -0.834289410417614400, +-0.834261843037517940, -0.834234273571767050, -0.834206702020430460, -0.834179128383577220, -0.834151552661275830, -0.834123974853595800, -0.834096394960605950, -0.834068812982375010, +-0.834041228918971810, -0.834013642770465750, -0.833986054536925540, -0.833958464218420130, -0.833930871815018680, -0.833903277326790040, -0.833875680753803250, -0.833848082096127040, +-0.833820481353830800, -0.833792878526983360, -0.833765273615653780, -0.833737666619910670, -0.833710057539823750, -0.833682446375461630, -0.833654833126893480, -0.833627217794187910, +-0.833599600377414540, -0.833571980876642190, -0.833544359291939930, -0.833516735623376470, -0.833489109871021430, -0.833461482034943630, -0.833433852115212150, -0.833406220111895690, +-0.833378586025063980, -0.833350949854785860, -0.833323311601130160, -0.833295671264166260, -0.833268028843963340, -0.833240384340590220, -0.833212737754115970, -0.833185089084610090, +-0.833157438332141510, -0.833129785496779300, -0.833102130578592500, -0.833074473577650520, -0.833046814494022290, -0.833019153327777100, -0.832991490078983880, -0.832963824747712020, +-0.832936157334030700, -0.832908487838008970, -0.832880816259715660, -0.832853142599220720, -0.832825466856592870, -0.832797789031901050, -0.832770109125215100, -0.832742427136603740, +-0.832714743066136460, -0.832687056913882010, -0.832659368679910080, -0.832631678364289860, -0.832603985967090400, -0.832576291488380750, -0.832548594928230630, -0.832520896286708890, +-0.832493195563885010, -0.832465492759827950, -0.832437787874607320, -0.832410080908292270, -0.832382371860951990, -0.832354660732655520, -0.832326947523472690, -0.832299232233472460, +-0.832271514862723880, -0.832243795411296780, -0.832216073879260220, -0.832188350266683470, -0.832160624573635600, -0.832132896800186430, -0.832105166946405020, -0.832077435012360640, +-0.832049700998122480, -0.832021964903760240, -0.831994226729343200, -0.831966486474940430, -0.831938744140621300, -0.831910999726455550, -0.831883253232512330, -0.831855504658860930, +-0.831827754005570630, -0.831800001272711030, -0.831772246460351530, -0.831744489568561170, -0.831716730597409800, -0.831688969546966580, -0.831661206417300900, -0.831633441208482040, +-0.831605673920579820, -0.831577904553663430, -0.831550133107802240, -0.831522359583065530, -0.831494583979523030, -0.831466806297244230, -0.831439026536298310, -0.831411244696754650, +-0.831383460778683080, -0.831355674782152780, -0.831327886707233450, -0.831300096553994060, -0.831272304322504760, -0.831244510012834610, -0.831216713625053230, -0.831188915159229770, +-0.831161114615434290, -0.831133311993736080, -0.831105507294204290, -0.831077700516908990, -0.831049891661919450, -0.831022080729305170, -0.830994267719135430, -0.830966452631480280, +-0.830938635466409000, -0.830910816223991100, -0.830882994904295960, -0.830855171507393630, -0.830827346033353290, -0.830799518482244650, -0.830771688854136880, -0.830743857149100150, +-0.830716023367203740, -0.830688187508517360, -0.830660349573110300, -0.830632509561052500, -0.830604667472413460, -0.830576823307262570, -0.830548977065669770, -0.830521128747704670, +-0.830493278353436670, -0.830465425882935150, -0.830437571336270390, -0.830409714713511770, -0.830381856014728690, -0.830353995239990870, -0.830326132389368250, -0.830298267462930340, +-0.830270400460746740, -0.830242531382886840, -0.830214660229420920, -0.830186787000418260, -0.830158911695948800, -0.830131034316081710, -0.830103154860887260, -0.830075273330434960, +-0.830047389724794190, -0.830019504044035240, -0.829991616288227490, -0.829963726457440760, -0.829935834551744470, -0.829907940571208760, -0.829880044515903250, -0.829852146385897660, +-0.829824246181261380, -0.829796343902064800, -0.829768439548377310, -0.829740533120268740, -0.829712624617808590, -0.829684714041067140, -0.829656801390113880, -0.829628886665018660, +-0.829600969865850970, -0.829573050992681080, -0.829545130045578500, -0.829517207024613180, -0.829489281929854600, -0.829461354761373060, -0.829433425519238040, -0.829405494203519390, +-0.829377560814287040, -0.829349625351610940, -0.829321687815560700, -0.829293748206206050, -0.829265806523617250, -0.829237862767863930, -0.829209916939016020, -0.829181969037142920, +-0.829154019062315230, -0.829126067014602560, -0.829098112894074650, -0.829070156700801200, -0.829042198434852610, -0.829014238096298590, -0.828986275685208880, -0.828958311201653310, +-0.828930344645702140, -0.828902376017425220, -0.828874405316892050, -0.828846432544173120, -0.828818457699338040, -0.828790480782456870, -0.828762501793599230, -0.828734520732835600, +-0.828706537600235720, -0.828678552395869410, -0.828650565119806500, -0.828622575772117510, -0.828594584352872030, -0.828566590862140020, -0.828538595299991300, -0.828510597666496370, +-0.828482597961724960, -0.828454596185747130, -0.828426592338632470, -0.828398586420451500, -0.828370578431274150, -0.828342568371170150, -0.828314556240209890, -0.828286542038463300, +-0.828258525766000340, -0.828230507422890840, -0.828202487009205290, -0.828174464525013530, -0.828146439970385620, -0.828118413345391380, -0.828090384650101320, -0.828062353884585270, +-0.828034321048913390, -0.828006286143155410, -0.827978249167382050, -0.827950210121662920, -0.827922169006068410, -0.827894125820668240, -0.827866080565532900, -0.827838033240732350, +-0.827809983846336530, -0.827781932382416040, -0.827753878849040610, -0.827725823246280520, -0.827697765574205710, -0.827669705832886680, -0.827641644022393370, -0.827613580142795960, +-0.827585514194164370, -0.827557446176569230, -0.827529376090080370, -0.827501303934768170, -0.827473229710702470, -0.827445153417953990, -0.827417075056592570, -0.827388994626688470, +-0.827360912128311640, -0.827332827561532700, -0.827304740926421810, -0.827276652223049020, -0.827248561451484290, -0.827220468611798430, -0.827192373704061510, -0.827164276728343360, +-0.827136177684714700, -0.827108076573245590, -0.827079973394006410, -0.827051868147066880, -0.827023760832498070, -0.826995651450369800, -0.826967540000752450, -0.826939426483715880, +-0.826911310899331120, -0.826883193247668010, -0.826855073528796950, -0.826826951742787970, -0.826798827889711820, -0.826770701969638640, -0.826742573982638620, -0.826714443928782020, +-0.826686311808139560, -0.826658177620781310, -0.826630041366777310, -0.826601903046198520, -0.826573762659114860, -0.826545620205596960, -0.826517475685714650, -0.826489329099538870, +-0.826461180447139900, -0.826433029728587900, -0.826404876943953040, -0.826376722093306260, -0.826348565176717730, -0.826320406194257730, -0.826292245145996530, -0.826264082032004850, +-0.826235916852353090, -0.826207749607111520, -0.826179580296350300, -0.826151408920140270, -0.826123235478551820, -0.826095059971655110, -0.826066882399520860, -0.826038702762219470, +-0.826010521059821310, -0.825982337292396670, -0.825954151460016380, -0.825925963562750720, -0.825897773600670070, -0.825869581573844820, -0.825841387482345920, -0.825813191326243420, +-0.825784993105608050, -0.825756792820509840, -0.825728590471019990, -0.825700386057208640, -0.825672179579146290, -0.825643971036903350, -0.825615760430550630, -0.825587547760158520, +-0.825559333025797540, -0.825531116227538050, -0.825502897365450910, -0.825474676439606590, -0.825446453450075390, -0.825418228396928130, -0.825390001280235430, -0.825361772100067670, +-0.825333540856495350, -0.825305307549589310, -0.825277072179420030, -0.825248834746058040, -0.825220595249573810, -0.825192353690038290, -0.825164110067521880, -0.825135864382095190, +-0.825107616633828590, -0.825079366822793150, -0.825051114949059360, -0.825022861012697730, -0.824994605013778750, -0.824966346952373470, -0.824938086828552410, -0.824909824642385820, +-0.824881560393944890, -0.824853294083300100, -0.824825025710522080, -0.824796755275681190, -0.824768482778848730, -0.824740208220094970, -0.824711931599490740, -0.824683652917106550, +-0.824655372173013320, -0.824627089367281680, -0.824598804499982350, -0.824570517571185820, -0.824542228580963150, -0.824513937529384950, -0.824485644416521830, -0.824457349242444510, +-0.824429052007223940, -0.824400752710930830, -0.824372451353635460, -0.824344147935409330, -0.824315842456322830, -0.824287534916446680, -0.824259225315851380, -0.824230913654608320, +-0.824202599932787990, -0.824174284150461230, -0.824145966307698430, -0.824117646404570970, -0.824089324441149350, -0.824061000417504520, -0.824032674333706860, -0.824004346189827760, +-0.823976015985937840, -0.823947683722107920, -0.823919349398408500, -0.823891013014910970, -0.823862674571685830, -0.823834334068803800, -0.823805991506336150, -0.823777646884353620, +-0.823749300202926920, -0.823720951462126760, -0.823692600662024430, -0.823664247802690540, -0.823635892884196140, -0.823607535906611730, -0.823579176870008700, -0.823550815774457770, +-0.823522452620029770, -0.823494087406795310, -0.823465720134826000, -0.823437350804192340, -0.823408979414965270, -0.823380605967215520, -0.823352230461014580, -0.823323852896433060, +-0.823295473273541800, -0.823267091592411630, -0.823238707853114040, -0.823210322055719650, -0.823181934200299280, -0.823153544286924220, -0.823125152315665410, -0.823096758286593570, +-0.823068362199779750, -0.823039964055295110, -0.823011563853210730, -0.822983161593597300, -0.822954757276525780, -0.822926350902067560, -0.822897942470293580, -0.822869531981274660, +-0.822841119435081650, -0.822812704831786150, -0.822784288171458880, -0.822755869454170790, -0.822727448679992920, -0.822699025848996570, -0.822670600961252660, -0.822642174016832040, +-0.822613745015806200, -0.822585313958246080, -0.822556880844222630, -0.822528445673806670, -0.822500008447069940, -0.822471569164083150, -0.822443127824917460, -0.822414684429643610, +-0.822386238978333410, -0.822357791471057590, -0.822329341907887200, -0.822300890288893300, -0.822272436614147400, -0.822243980883720420, -0.822215523097683420, -0.822187063256107460, +-0.822158601359064050, -0.822130137406624110, -0.822101671398858700, -0.822073203335839220, -0.822044733217636820, -0.822016261044322460, -0.821987786815967290, -0.821959310532642930, +-0.821930832194420310, -0.821902351801370500, -0.821873869353564660, -0.821845384851074390, -0.821816898293970640, -0.821788409682324580, -0.821759919016207260, -0.821731426295690400, +-0.821702931520845060, -0.821674434691742280, -0.821645935808453240, -0.821617434871049660, -0.821588931879602360, -0.821560426834182840, -0.821531919734861950, -0.821503410581711500, +-0.821474899374802560, -0.821446386114206060, -0.821417870799993950, -0.821389353432237180, -0.821360834011006900, -0.821332312536374290, -0.821303789008411280, -0.821275263427188710, +-0.821246735792777960, -0.821218206105250090, -0.821189674364677050, -0.821161140571129770, -0.821132604724679640, -0.821104066825397830, -0.821075526873356050, -0.821046984868625370, +-0.821018440811277280, -0.820989894701382950, -0.820961346539013980, -0.820932796324241760, -0.820904244057137240, -0.820875689737772360, -0.820847133366218170, -0.820818574942546290, +-0.820790014466827640, -0.820761451939134300, -0.820732887359537310, -0.820704320728107950, -0.820675752044917720, -0.820647181310038220, -0.820618608523540850, -0.820590033685496990, +-0.820561456795977700, -0.820532877855055130, -0.820504296862800240, -0.820475713819284750, -0.820447128724579590, -0.820418541578756930, -0.820389952381887940, -0.820361361134043790, +-0.820332767835296410, -0.820304172485717190, -0.820275575085377520, -0.820246975634348670, -0.820218374132702710, -0.820189770580510680, -0.820161164977844300, -0.820132557324774750, +-0.820103947621374060, -0.820075335867713530, -0.820046722063864530, -0.820018106209898570, -0.819989488305887580, -0.819960868351902960, -0.819932246348016090, -0.819903622294298360, +-0.819874996190821830, -0.819846368037657760, -0.819817737834877770, -0.819789105582553250, -0.819760471280756240, -0.819731834929557920, -0.819703196529029900, -0.819674556079244110, +-0.819645913580271830, -0.819617269032184900, -0.819588622435054480, -0.819559973788952730, -0.819531323093951160, -0.819502670350121140, -0.819474015557534300, -0.819445358716262670, +-0.819416699826377550, -0.819388038887950750, -0.819359375901053570, -0.819330710865758260, -0.819302043782136110, -0.819273374650258850, -0.819244703470197950, -0.819216030242025490, +-0.819187354965812960, -0.819158677641631860, -0.819129998269554240, -0.819101316849651710, -0.819072633381995760, -0.819043947866658130, -0.819015260303710750, -0.818986570693225340, +-0.818957879035273400, -0.818929185329926530, -0.818900489577257030, -0.818871791777336160, -0.818843091930235970, -0.818814390036027740, -0.818785686094783750, -0.818756980106575490, +-0.818728272071474920, -0.818699561989553400, -0.818670849860883120, -0.818642135685535790, -0.818613419463582900, -0.818584701195096630, -0.818555980880148580, -0.818527258518810700, +-0.818498534111154360, -0.818469807657251970, -0.818441079157175010, -0.818412348610995430, -0.818383616018784620, -0.818354881380615070, -0.818326144696558400, -0.818297405966686210, +-0.818268665191070330, -0.818239922369783050, -0.818211177502895960, -0.818182430590481010, -0.818153681632609600, -0.818124930629354320, -0.818096177580786680, -0.818067422486978390, +-0.818038665348001740, -0.818009906163928440, -0.817981144934830320, -0.817952381660779220, -0.817923616341847290, -0.817894848978106380, -0.817866079569628310, -0.817837308116484810, +-0.817808534618748360, -0.817779759076490480, -0.817750981489783200, -0.817722201858698260, -0.817693420183308040, -0.817664636463684370, -0.817635850699898970, -0.817607062892023780, +-0.817578273040131090, -0.817549481144292820, -0.817520687204580820, -0.817491891221066800, -0.817463093193823380, -0.817434293122922150, -0.817405491008434960, -0.817376686850434410, +-0.817347880648992000, -0.817319072404179890, -0.817290262116069920, -0.817261449784734580, -0.817232635410245490, -0.817203818992674910, -0.817175000532094460, -0.817146180028576860, +-0.817117357482193720, -0.817088532893017190, -0.817059706261119120, -0.817030877586572000, -0.817002046869447770, -0.816973214109818380, -0.816944379307755650, -0.816915542463332200, +-0.816886703576619970, -0.816857862647690670, -0.816829019676617030, -0.816800174663470770, -0.816771327608324160, -0.816742478511248930, -0.816713627372317790, -0.816684774191602570, +-0.816655918969175440, -0.816627061705108130, -0.816598202399473560, -0.816569341052343470, -0.816540477663790010, -0.816511612233885020, -0.816482744762701330, -0.816453875250310770, +-0.816425003696785500, -0.816396130102197470, -0.816367254466619400, -0.816338376790123220, -0.816309497072780780, -0.816280615314664890, -0.816251731515847510, -0.816222845676400690, +-0.816193957796396590, -0.816165067875907810, -0.816136175915006310, -0.816107281913764470, -0.816078385872254120, -0.816049487790548090, -0.816020587668718320, -0.815991685506837090, +-0.815962781304976350, -0.815933875063208910, -0.815904966781606840, -0.815876056460242300, -0.815847144099187460, -0.815818229698514920, -0.815789313258296840, -0.815760394778605510, +-0.815731474259512870, -0.815702551701091850, -0.815673627103414400, -0.815644700466552690, -0.815615771790579420, -0.815586841075566780, -0.815557908321587030, -0.815528973528712230, +-0.815500036697015210, -0.815471097826568130, -0.815442156917443370, -0.815413213969712890, -0.815384268983449730, -0.815355321958725730, -0.815326372895613600, -0.815297421794185180, +-0.815268468654513520, -0.815239513476670560, -0.815210556260728910, -0.815181597006760630, -0.815152635714838650, -0.815123672385035030, -0.815094707017421930, -0.815065739612072400, +-0.815036770169058510, -0.815007798688452630, -0.814978825170327050, -0.814949849614754700, -0.814920872021807630, -0.814891892391558350, -0.814862910724079240, -0.814833927019443020, +-0.814804941277721960, -0.814775953498988570, -0.814746963683315120, -0.814717971830774430, -0.814688977941438800, -0.814659982015380810, -0.814630984052672540, -0.814601984053387020, +-0.814572982017596650, -0.814543977945373480, -0.814514971836790670, -0.814485963691920390, -0.814456953510835250, -0.814427941293607520, -0.814398927040310030, -0.814369910751015390, +-0.814340892425795880, -0.814311872064723890, -0.814282849667872570, -0.814253825235313980, -0.814224798767120950, -0.814195770263365540, -0.814166739724121010, -0.814137707149459660, +-0.814108672539454070, -0.814079635894176530, -0.814050597213700100, -0.814021556498097270, -0.813992513747440190, -0.813963468961802160, -0.813934422141255440, -0.813905373285872650, +-0.813876322395726160, -0.813847269470889150, -0.813818214511433880, -0.813789157517433190, -0.813760098488959360, -0.813731037426085440, -0.813701974328884030, -0.813672909197427520, +-0.813643842031788630, -0.813614772832040420, -0.813585701598255160, -0.813556628330505680, -0.813527553028864370, -0.813498475693404500, -0.813469396324198350, -0.813440314921318740, +-0.813411231484838180, -0.813382146014829720, -0.813353058511365860, -0.813323968974519080, -0.813294877404362680, -0.813265783800969140, -0.813236688164411080, -0.813207590494761100, +-0.813178490792092370, -0.813149389056477380, -0.813120285287988960, -0.813091179486699510, -0.813062071652682410, -0.813032961786010140, -0.813003849886755450, -0.812974735954990920, +-0.812945619990789740, -0.812916501994224490, -0.812887381965368140, -0.812858259904292950, -0.812829135811072410, -0.812800009685778920, -0.812770881528485310, -0.812741751339264630, +-0.812712619118189710, -0.812683484865333150, -0.812654348580767570, -0.812625210264566470, -0.812596069916802330, -0.812566927537548000, -0.812537783126876080, -0.812508636684859950, +-0.812479488211572340, -0.812450337707085860, -0.812421185171473330, -0.812392030604808140, -0.812362874007162890, -0.812333715378610320, -0.812304554719223360, -0.812275392029075170, +-0.812246227308238590, -0.812217060556786110, -0.812187891774791230, -0.812158720962326660, -0.812129548119465250, -0.812100373246279710, -0.812071196342843530, -0.812042017409229320, +-0.812012836445510140, -0.811983653451758600, -0.811954468428048080, -0.811925281374451520, -0.811896092291041650, -0.811866901177891400, -0.811837708035074050, -0.811808512862662530, +-0.811779315660729580, -0.811750116429348250, -0.811720915168591790, -0.811691711878533060, -0.811662506559245100, -0.811633299210800520, -0.811604089833273030, -0.811574878426735260, +-0.811545664991260130, -0.811516449526921040, -0.811487232033790810, -0.811458012511942490, -0.811428790961448930, -0.811399567382383610, -0.811370341774819370, -0.811341114138829260, +-0.811311884474486210, -0.811282652781863620, -0.811253419061034430, -0.811224183312071580, -0.811194945535048120, -0.811165705730037550, -0.811136463897112690, -0.811107220036346720, +-0.811077974147812460, -0.811048726231583420, -0.811019476287732630, -0.810990224316332940, -0.810960970317457840, -0.810931714291180380, -0.810902456237573620, -0.810873196156710500, +-0.810843934048664620, -0.810814669913508810, -0.810785403751316470, -0.810756135562160310, -0.810726865346114050, -0.810697593103250620, -0.810668318833643210, -0.810639042537364850, +-0.810609764214488940, -0.810580483865088740, -0.810551201489237320, -0.810521917087007710, -0.810492630658473430, -0.810463342203707750, -0.810434051722783270, -0.810404759215774040, +-0.810375464682752900, -0.810346168123793010, -0.810316869538967530, -0.810287568928350080, -0.810258266292013700, -0.810228961630031770, -0.810199654942477030, -0.810170346229423520, +-0.810141035490944070, -0.810111722727112180, -0.810082407938000570, -0.810053091123683180, -0.810023772284233170, -0.809994451419723700, -0.809965128530227840, -0.809935803615819410, +-0.809906476676571450, -0.809877147712557030, -0.809847816723849980, -0.809818483710523450, -0.809789148672650730, -0.809759811610304860, -0.809730472523559670, -0.809701131412488340, +-0.809671788277164240, -0.809642443117660320, -0.809613095934050620, -0.809583746726408090, -0.809554395494806230, -0.809525042239318090, -0.809495686960017720, -0.809466329656978070, +-0.809436970330272510, -0.809407608979974440, -0.809378245606157450, -0.809348880208894950, -0.809319512788260200, -0.809290143344326360, -0.809260771877167500, -0.809231398386856650, +-0.809202022873467100, -0.809172645337072780, -0.809143265777746760, -0.809113884195562630, -0.809084500590593560, -0.809055114962913490, -0.809025727312595590, -0.808996337639713350, +-0.808966945944340040, -0.808937552226549620, -0.808908156486415340, -0.808878758724010720, -0.808849358939408790, -0.808819957132683840, -0.808790553303909030, -0.808761147453157750, +-0.808731739580503370, -0.808702329686019850, -0.808672917769780560, -0.808643503831858680, -0.808614087872328360, -0.808584669891262760, -0.808555249888735620, -0.808525827864819970, +-0.808496403819589980, -0.808466977753119040, -0.808437549665480650, -0.808408119556748180, -0.808378687426995590, -0.808349253276296360, -0.808319817104723890, -0.808290378912351670, +-0.808260938699253860, -0.808231496465503520, -0.808202052211174580, -0.808172605936340220, -0.808143157641074580, -0.808113707325451070, -0.808084254989542950, -0.808054800633424500, +-0.808025344257169100, -0.807995885860850360, -0.807966425444541560, -0.807936963008316970, -0.807907498552249970, -0.807878032076414290, -0.807848563580883190, -0.807819093065731080, +-0.807789620531031090, -0.807760145976857080, -0.807730669403282530, -0.807701190810381500, -0.807671710198227480, -0.807642227566894190, -0.807612742916455020, -0.807583256246984350, +-0.807553767558555460, -0.807524276851242170, -0.807494784125117990, -0.807465289380257080, -0.807435792616732930, -0.807406293834619040, -0.807376793033989680, -0.807347290214918360, +-0.807317785377478780, -0.807288278521744560, -0.807258769647789750, -0.807229258755688180, -0.807199745845513350, -0.807170230917338970, -0.807140713971239210, -0.807111195007287670, +-0.807081674025558190, -0.807052151026124260, -0.807022626009060160, -0.806993098974439490, -0.806963569922336200, -0.806934038852823550, -0.806904505765976170, -0.806874970661867530, +-0.806845433540571140, -0.806815894402161500, -0.806786353246712110, -0.806756810074296780, -0.806727264884989250, -0.806697717678863780, -0.806668168455993980, -0.806638617216453800, +-0.806609063960316730, -0.806579508687657380, -0.806549951398549240, -0.806520392093066140, -0.806490830771281920, -0.806461267433270850, -0.806431702079106530, -0.806402134708863020, +-0.806372565322613920, -0.806342993920433630, -0.806313420502395850, -0.806283845068574310, -0.806254267619043400, -0.806224688153876820, -0.806195106673148420, -0.806165523176932130, +-0.806135937665302230, -0.806106350138332540, -0.806076760596096900, -0.806047169038669130, -0.806017575466123740, -0.805987979878534320, -0.805958382275975050, -0.805928782658519530, +-0.805899181026242360, -0.805869577379217160, -0.805839971717517980, -0.805810364041218750, -0.805780754350393760, -0.805751142645116940, -0.805721528925462000, -0.805691913191503460, +-0.805662295443315140, -0.805632675680971080, -0.805603053904545120, -0.805573430114111750, -0.805543804309744820, -0.805514176491518350, -0.805484546659506200, -0.805454914813782950, +-0.805425280954422340, -0.805395645081498630, -0.805366007195085550, -0.805336367295257590, -0.805306725382088810, -0.805277081455653240, -0.805247435516024730, -0.805217787563277780, +-0.805188137597486420, -0.805158485618724720, -0.805128831627066500, -0.805099175622586480, -0.805069517605358610, -0.805039857575456600, -0.805010195532955160, -0.804980531477928360, +-0.804950865410450130, -0.804921197330594530, -0.804891527238436160, -0.804861855134048950, -0.804832181017507200, -0.804802504888884720, -0.804772826748256230, -0.804743146595695570, +-0.804713464431277110, -0.804683780255074810, -0.804654094067163150, -0.804624405867616410, -0.804594715656508640, -0.804565023433913670, -0.804535329199906560, -0.804505632954561120, +-0.804475934697951310, -0.804446234430151840, -0.804416532151236870, -0.804386827861280570, -0.804357121560356880, -0.804327413248540730, -0.804297702925905970, -0.804267990592527070, +-0.804238276248477880, -0.804208559893833220, -0.804178841528667140, -0.804149121153054040, -0.804119398767067730, -0.804089674370783380, -0.804059947964274710, -0.804030219547616220, +-0.804000489120881840, -0.803970756684146640, -0.803941022237484430, -0.803911285780969490, -0.803881547314676540, -0.803851806838679740, -0.803822064353053370, -0.803792319857871700, +-0.803762573353209440, -0.803732824839140660, -0.803703074315739950, -0.803673321783081150, -0.803643567241239420, -0.803613810690288810, -0.803584052130303590, -0.803554291561357940, +-0.803524528983526890, -0.803494764396884500, -0.803464997801505270, -0.803435229197463130, -0.803405458584833370, -0.803375685963689800, -0.803345911334107150, -0.803316134696159370, +-0.803286356049921490, -0.803256575395467800, -0.803226792732872340, -0.803197008062210170, -0.803167221383555560, -0.803137432696982790, -0.803107642002566240, -0.803077849300380840, +-0.803048054590500770, -0.803018257873000630, -0.802988459147954580, -0.802958658415437570, -0.802928855675524080, -0.802899050928288280, -0.802869244173804670, -0.802839435412148190, +-0.802809624643393120, -0.802779811867614050, -0.802749997084885040, -0.802720180295281470, -0.802690361498877400, -0.802660540695747100, -0.802630717885965740, -0.802600893069607580, +-0.802571066246747230, -0.802541237417458860, -0.802511406581817740, -0.802481573739898150, -0.802451738891774570, -0.802421902037521280, -0.802392063177213680, -0.802362222310925800, +-0.802332379438732370, -0.802302534560707770, -0.802272687676927050, -0.802242838787464720, -0.802212987892395150, -0.802183134991792950, -0.802153280085733170, -0.802123423174290200, +-0.802093564257538310, -0.802063703335552880, -0.802033840408408080, -0.802003975476178740, -0.801974108538939250, -0.801944239596764640, -0.801914368649729540, -0.801884495697908540, +-0.801854620741375920, -0.801824743780207070, -0.801794864814476370, -0.801764983844258540, -0.801735100869627960, -0.801705215890659790, -0.801675328907428650, -0.801645439920009250, +-0.801615548928475970, -0.801585655932903980, -0.801555760933368000, -0.801525863929942290, -0.801495964922702140, -0.801466063911722150, -0.801436160897076920, -0.801406255878841070, +-0.801376348857089860, -0.801346439831897790, -0.801316528803339480, -0.801286615771489740, -0.801256700736423740, -0.801226783698215870, -0.801196864656941070, -0.801166943612673930, +-0.801137020565489630, -0.801107095515462770, -0.801077168462668190, -0.801047239407180480, -0.801017308349074810, -0.800987375288426010, -0.800957440225308680, -0.800927503159797440, +-0.800897564091967880, -0.800867623021894290, -0.800837679949651380, -0.800807734875314540, -0.800777787798958360, -0.800747838720657690, -0.800717887640487240, -0.800687934558522270, +-0.800657979474837520, -0.800628022389507700, -0.800598063302607740, -0.800568102214212820, -0.800538139124397530, -0.800508174033236930, -0.800478206940805740, -0.800448237847179220, +-0.800418266752432110, -0.800388293656639330, -0.800358318559875600, -0.800328341462216320, -0.800298362363736190, -0.800268381264509830, -0.800238398164612840, -0.800208413064119830, +-0.800178425963105840, -0.800148436861645500, -0.800118445759814280, -0.800088452657686910, -0.800058457555338550, -0.800028460452843700, -0.799998461350277970, -0.799968460247716060, +-0.799938457145233040, -0.799908452042903620, -0.799878444940803290, -0.799848435839006890, -0.799818424737589350, -0.799788411636625510, -0.799758396536190960, -0.799728379436360330, +-0.799698360337208540, -0.799668339238811090, -0.799638316141242810, -0.799608291044578760, -0.799578263948893750, -0.799548234854263300, -0.799518203760762210, -0.799488170668465670, +-0.799458135577448380, -0.799428098487786070, -0.799398059399553550, -0.799368018312825780, -0.799337975227677800, -0.799307930144185110, -0.799277883062422530, -0.799247833982465350, +-0.799217782904388270, -0.799187729828267020, -0.799157674754176430, -0.799127617682191650, -0.799097558612387520, -0.799067497544839860, -0.799037434479623390, -0.799007369416813050, +-0.798977302356484560, -0.798947233298712870, -0.798917162243573010, -0.798887089191140040, -0.798857014141489570, -0.798826937094696650, -0.798796858050836330, -0.798766777009983550, +-0.798736693972214250, -0.798706608937603040, -0.798676521906225400, -0.798646432878156180, -0.798616341853471080, -0.798586248832245270, -0.798556153814553690, -0.798526056800471510, +-0.798495957790074540, -0.798465856783437510, -0.798435753780635690, -0.798405648781744800, -0.798375541786839670, -0.798345432795995680, -0.798315321809287880, -0.798285208826792100, +-0.798255093848583290, -0.798224976874736700, -0.798194857905327400, -0.798164736940431220, -0.798134613980123200, -0.798104489024478610, -0.798074362073572630, -0.798044233127480960, +-0.798014102186278660, -0.797983969250041230, -0.797953834318843480, -0.797923697392761480, -0.797893558471870160, -0.797863417556244790, -0.797833274645961100, -0.797803129741094240, +-0.797772982841719490, -0.797742833947912010, -0.797712683059747850, -0.797682530177301840, -0.797652375300649590, -0.797622218429866030, -0.797592059565027320, -0.797561898706208420, +-0.797531735853484690, -0.797501571006931420, -0.797471404166624540, -0.797441235332639110, -0.797411064505050620, -0.797380891683934110, -0.797350716869365650, -0.797320540061420500, +-0.797290361260173610, -0.797260180465701240, -0.797229997678078340, -0.797199812897380400, -0.797169626123682700, -0.797139437357061160, -0.797109246597591080, -0.797079053845347830, +-0.797048859100406790, -0.797018662362843800, -0.796988463632734120, -0.796958262910153260, -0.796928060195176590, -0.796897855487879950, -0.796867648788338710, -0.796837440096628380, +-0.796807229412824110, -0.796777016737002080, -0.796746802069237430, -0.796716585409605880, -0.796686366758182610, -0.796656146115043650, -0.796625923480264290, -0.796595698853919900, +-0.796565472236086420, -0.796535243626839360, -0.796505013026254200, -0.796474780434406230, -0.796444545851371590, -0.796414309277225560, -0.796384070712043760, -0.796353830155901440, +-0.796323587608874890, -0.796293343071039380, -0.796263096542470520, -0.796232848023243680, -0.796202597513434920, -0.796172345013119730, -0.796142090522373610, -0.796111834041271950, +-0.796081575569891120, -0.796051315108306290, -0.796021052656592840, -0.795990788214827050, -0.795960521783084410, -0.795930253361440300, -0.795899982949970440, -0.795869710548750780, +-0.795839436157856910, -0.795809159777364330, -0.795778881407348760, -0.795748601047886140, -0.795718318699051960, -0.795688034360922170, -0.795657748033571920, -0.795627459717077600, +-0.795597169411514590, -0.795566877116958620, -0.795536582833485270, -0.795506286561170730, -0.795475988300090360, -0.795445688050319900, -0.795415385811935380, -0.795385081585012530, +-0.795354775369626840, -0.795324467165854030, -0.795294156973770260, -0.795263844793451140, -0.795233530624972370, -0.795203214468409470, -0.795172896323838920, -0.795142576191335990, +-0.795112254070976740, -0.795081929962836550, -0.795051603866991810, -0.795021275783518000, -0.794990945712491070, -0.794960613653986510, -0.794930279608080600, -0.794899943574849050, +-0.794869605554367700, -0.794839265546712030, -0.794808923551958420, -0.794778579570182500, -0.794748233601459960, -0.794717885645866980, -0.794687535703479390, -0.794657183774372890, +-0.794626829858623210, -0.794596473956306730, -0.794566116067499050, -0.794535756192276010, -0.794505394330713320, -0.794475030482887480, -0.794444664648874090, -0.794414296828748980, +-0.794383927022587870, -0.794353555230467250, -0.794323181452462720, -0.794292805688650240, -0.794262427939105400, -0.794232048203904810, -0.794201666483124180, -0.794171282776839020, +-0.794140897085125920, -0.794110509408060610, -0.794080119745719020, -0.794049728098176870, -0.794019334465510650, -0.793988938847796090, -0.793958541245109230, -0.793928141657525790, +-0.793897740085122150, -0.793867336527974250, -0.793836930986157930, -0.793806523459749000, -0.793776113948824080, -0.793745702453458880, -0.793715288973729450, -0.793684873509711510, +-0.793654456061481660, -0.793624036629115630, -0.793593615212689230, -0.793563191812279190, -0.793532766427961000, -0.793502339059811050, -0.793471909707904820, -0.793441478372319150, +-0.793411045053129870, -0.793380609750412910, -0.793350172464244110, -0.793319733194700280, -0.793289291941856930, -0.793258848705790550, -0.793228403486576640, -0.793197956284292020, +-0.793167507099012510, -0.793137055930814290, -0.793106602779773180, -0.793076147645965680, -0.793045690529467940, -0.793015231430355680, -0.792984770348705630, -0.792954307284593600, +-0.792923842238095870, -0.792893375209288150, -0.792862906198247400, -0.792832435205049310, -0.792801962229770170, -0.792771487272485810, -0.792741010333272930, -0.792710531412207600, +-0.792680050509366070, -0.792649567624823970, -0.792619082758658330, -0.792588595910944880, -0.792558107081760000, -0.792527616271179620, -0.792497123479280360, -0.792466628706138380, +-0.792436131951829830, -0.792405633216430650, -0.792375132500017680, -0.792344629802666840, -0.792314125124454200, -0.792283618465456470, -0.792253109825749700, -0.792222599205410160, +-0.792192086604513900, -0.792161572023137640, -0.792131055461357540, -0.792100536919249750, -0.792070016396890340, -0.792039493894356130, -0.792008969411723160, -0.791978442949067830, +-0.791947914506466180, -0.791917384083994920, -0.791886851681730230, -0.791856317299748370, -0.791825780938125500, -0.791795242596938450, -0.791764702276263280, -0.791734159976176020, +-0.791703615696753740, -0.791673069438072360, -0.791642521200208280, -0.791611970983237660, -0.791581418787237420, -0.791550864612283630, -0.791520308458452670, -0.791489750325820580, +-0.791459190214464540, -0.791428628124460350, -0.791398064055884750, -0.791367498008813560, -0.791336929983324060, -0.791306359979492170, -0.791275787997394290, -0.791245214037106790, +-0.791214638098706510, -0.791184060182269610, -0.791153480287872250, -0.791122898415591580, -0.791092314565503550, -0.791061728737684770, -0.791031140932211390, -0.791000551149160460, +-0.790969959388608030, -0.790939365650630830, -0.790908769935305010, -0.790878172242707400, -0.790847572572914380, -0.790816970926002450, -0.790786367302047880, -0.790755761701127600, +-0.790725154123317900, -0.790694544568695370, -0.790663933037336180, -0.790633319529317370, -0.790602704044715330, -0.790572086583606560, -0.790541467146067210, -0.790510845732174560, +-0.790480222342004660, -0.790449596975634110, -0.790418969633139730, -0.790388340314597930, -0.790357709020085290, -0.790327075749678090, -0.790296440503453490, -0.790265803281487880, +-0.790235164083857630, -0.790204522910639250, -0.790173879761909780, -0.790143234637745720, -0.790112587538223550, -0.790081938463419560, -0.790051287413411020, -0.790020634388274300, +-0.789989979388086020, -0.789959322412922440, -0.789928663462860840, -0.789898002537977590, -0.789867339638349100, -0.789836674764052500, -0.789806007915164310, -0.789775339091761010, +-0.789744668293919090, -0.789713995521715730, -0.789683320775227400, -0.789652644054530840, -0.789621965359702300, -0.789591284690819300, -0.789560602047957970, -0.789529917431195050, +-0.789499230840607140, -0.789468542276271500, -0.789437851738264420, -0.789407159226662710, -0.789376464741542880, -0.789345768282982090, -0.789315069851056930, -0.789284369445843790, +-0.789253667067420060, -0.789222962715862120, -0.789192256391246790, -0.789161548093650470, -0.789130837823150630, -0.789100125579823670, -0.789069411363746420, -0.789038695174995360, +-0.789007977013647780, -0.788977256879780380, -0.788946534773469770, -0.788915810694792550, -0.788885084643826010, -0.788854356620646850, -0.788823626625331790, -0.788792894657957430, +-0.788762160718600950, -0.788731424807339150, -0.788700686924248550, -0.788669947069406520, -0.788639205242889660, -0.788608461444774700, -0.788577715675138350, -0.788546967934057990, +-0.788516218221610110, -0.788485466537871770, -0.788454712882919460, -0.788423957256830680, -0.788393199659682020, -0.788362440091550320, -0.788331678552512290, -0.788300915042645320, +-0.788270149562026010, -0.788239382110731410, -0.788208612688838020, -0.788177841296423430, -0.788147067933564150, -0.788116292600337220, -0.788085515296819360, -0.788054736023087950, +-0.788023954779219720, -0.787993171565291250, -0.787962386381380160, -0.787931599227563170, -0.787900810103917100, -0.787870019010518790, -0.787839225947445710, -0.787808430914774480, +-0.787777633912582260, -0.787746834940945660, -0.787716033999942280, -0.787685231089648720, -0.787654426210142140, -0.787623619361499160, -0.787592810543797480, -0.787561999757113830, +-0.787531187001525020, -0.787500372277108120, -0.787469555583940490, -0.787438736922098980, -0.787407916291660400, -0.787377093692702260, -0.787346269125301370, -0.787315442589534790, +-0.787284614085479340, -0.787253783613212740, -0.787222951172811490, -0.787192116764353080, -0.787161280387914000, -0.787130442043571970, -0.787099601731403810, -0.787068759451486690, +-0.787037915203897430, -0.787007068988713530, -0.786976220806012150, -0.786945370655870110, -0.786914518538364360, -0.786883664453572610, -0.786852808401571680, -0.786821950382438520, +-0.786791090396250610, -0.786760228443085130, -0.786729364523019000, -0.786698498636129170, -0.786667630782493470, -0.786636760962188600, -0.786605889175291840, -0.786575015421880130, +-0.786544139702031080, -0.786513262015821720, -0.786482382363329240, -0.786451500744630550, -0.786420617159803270, -0.786389731608924560, -0.786358844092071460, -0.786327954609321030, +-0.786297063160750880, -0.786266169746438150, -0.786235274366460010, -0.786204377020893410, -0.786173477709816050, -0.786142576433305100, -0.786111673191437380, -0.786080767984290830, +-0.786049860811942280, -0.786018951674469110, -0.785988040571948270, -0.785957127504457560, -0.785926212472074170, -0.785895295474875130, -0.785864376512937610, -0.785833455586339440, +-0.785802532695157650, -0.785771607839469420, -0.785740681019352020, -0.785709752234883150, -0.785678821486139880, -0.785647888773199580, -0.785616954096139190, -0.785586017455036870, +-0.785555078849969330, -0.785524138281013970, -0.785493195748248390, -0.785462251251749950, -0.785431304791595840, -0.785400356367863210, -0.785369405980629880, -0.785338453629973120, +-0.785307499315970210, -0.785276543038698200, -0.785245584798235250, -0.785214624594658180, -0.785183662428044720, -0.785152698298471670, -0.785121732206017220, -0.785090764150758510, +-0.785059794132772830, -0.785028822152137320, -0.784997848208930150, -0.784966872303228260, -0.784935894435108920, -0.784904914604650170, -0.784873932811929190, -0.784842949057023230, +-0.784811963340009690, -0.784780975660966610, -0.784749986019970920, -0.784718994417100360, -0.784688000852432070, -0.784657005326043990, -0.784626007838013400, -0.784595008388417890, +-0.784564006977334530, -0.784533003604841350, -0.784501998271015740, -0.784470990975935090, -0.784439981719676770, -0.784408970502318610, -0.784377957323938220, -0.784346942184612760, +-0.784315925084419830, -0.784284906023437260, -0.784253885001742420, -0.784222862019412600, -0.784191837076525950, -0.784160810173159750, -0.784129781309391370, -0.784098750485298420, +-0.784067717700958730, -0.784036682956449900, -0.784005646251849210, -0.783974607587234250, -0.783943566962682970, -0.783912524378272750, -0.783881479834081300, -0.783850433330185890, +-0.783819384866664580, -0.783788334443594860, -0.783757282061054330, -0.783726227719120260, -0.783695171417870930, -0.783664113157383600, -0.783633052937735890, -0.783601990759005720, +-0.783570926621270480, -0.783539860524608000, -0.783508792469095660, -0.783477722454811510, -0.783446650481833150, -0.783415576550238080, -0.783384500660103790, -0.783353422811508660, +-0.783322343004529850, -0.783291261239245200, -0.783260177515732070, -0.783229091834068860, -0.783198004194332940, -0.783166914596601930, -0.783135823040953420, -0.783104729527465570, +-0.783073634056215990, -0.783042536627281960, -0.783011437240741850, -0.782980335896673150, -0.782949232595153700, -0.782918127336260870, -0.782887020120072940, -0.782855910946667510, +-0.782824799816122300, -0.782793686728514790, -0.782762571683923270, -0.782731454682425440, -0.782700335724098920, -0.782669214809021300, -0.782638091937270960, -0.782606967108925300, +-0.782575840324062360, -0.782544711582759400, -0.782513580885095040, -0.782482448231146650, -0.782451313620991850, -0.782420177054709120, -0.782389038532375960, -0.782357898054070080, +-0.782326755619869310, -0.782295611229851810, -0.782264464884095400, -0.782233316582677810, -0.782202166325676520, -0.782171014113170250, -0.782139859945236380, -0.782108703821952860, +-0.782077545743397270, -0.782046385709648130, -0.782015223720783030, -0.781984059776879900, -0.781952893878016250, -0.781921726024270790, -0.781890556215720900, -0.781859384452444630, +-0.781828210734519690, -0.781797035062024470, -0.781765857435036570, -0.781734677853633820, -0.781703496317894710, -0.781672312827896840, -0.781641127383718160, -0.781609939985436370, +-0.781578750633129980, -0.781547559326876810, -0.781516366066754680, -0.781485170852841300, -0.781453973685215300, -0.781422774563954480, -0.781391573489136570, -0.781360370460839610, +-0.781329165479141880, -0.781297958544121320, -0.781266749655855740, -0.781235538814423090, -0.781204326019901860, -0.781173111272369880, -0.781141894571904750, -0.781110675918585180, +-0.781079455312488900, -0.781048232753694060, -0.781017008242278380, -0.780985781778320340, -0.780954553361897900, -0.780923322993089090, -0.780892090671971740, -0.780860856398624350, +-0.780829620173124850, -0.780798381995551290, -0.780767141865981510, -0.780735899784494200, -0.780704655751167100, -0.780673409766078350, -0.780642161829305790, -0.780610911940928130, +-0.780579660101023200, -0.780548406309668820, -0.780517150566943710, -0.780485892872925690, -0.780454633227692930, -0.780423371631323360, -0.780392108083895700, -0.780360842585487660, +-0.780329575136177510, -0.780298305736043200, -0.780267034385163430, -0.780235761083616030, -0.780204485831479280, -0.780173208628830990, -0.780141929475749900, -0.780110648372314030, +-0.780079365318601560, -0.780048080314690420, -0.780016793360659320, -0.779985504456586210, -0.779954213602549460, -0.779922920798626800, -0.779891626044897150, -0.779860329341438340, +-0.779829030688328540, -0.779797730085646460, -0.779766427533469920, -0.779735123031877420, -0.779703816580946780, -0.779672508180756950, -0.779641197831385860, -0.779609885532911660, +-0.779578571285412520, -0.779547255088967270, -0.779515936943653840, -0.779484616849550620, -0.779453294806735530, -0.779421970815287410, -0.779390644875284530, -0.779359316986804940, +-0.779327987149926790, -0.779296655364728920, -0.779265321631289480, -0.779233985949686400, -0.779202648319998640, -0.779171308742304340, -0.779139967216681660, -0.779108623743208880, +-0.779077278321964720, -0.779045930953027430, -0.779014581636475300, -0.778983230372386480, -0.778951877160839800, -0.778920522001913420, -0.778889164895685830, -0.778857805842234960, +-0.778826444841639880, -0.778795081893978610, -0.778763716999329780, -0.778732350157771310, -0.778700981369382150, -0.778669610634240670, -0.778638237952424930, -0.778606863324013740, +-0.778575486749085390, -0.778544108227718470, -0.778512727759990810, -0.778481345345981790, -0.778449960985769240, -0.778418574679431870, -0.778387186427047850, -0.778355796228696000, +-0.778324404084454800, -0.778293009994402540, -0.778261613958617480, -0.778230215977178560, -0.778198816050164280, -0.778167414177652890, -0.778136010359722570, -0.778104604596452700, +-0.778073196887921200, -0.778041787234206470, -0.778010375635387440, -0.777978962091542600, -0.777947546602750340, -0.777916129169088920, -0.777884709790637400, -0.777853288467474150, +-0.777821865199677660, -0.777790439987326330, -0.777759012830499090, -0.777727583729274310, -0.777696152683730600, -0.777664719693946240, -0.777633284760000270, -0.777601847881971180, +-0.777570409059937460, -0.777538968293977390, -0.777507525584170240, -0.777476080930594280, -0.777444634333328110, -0.777413185792450000, -0.777381735308039220, -0.777350282880174160, +-0.777318828508933190, -0.777287372194395250, -0.777255913936638950, -0.777224453735742890, -0.777192991591785450, -0.777161527504845790, -0.777130061475002300, -0.777098593502333570, +-0.777067123586918210, -0.777035651728835260, -0.777004177928163120, -0.776972702184980710, -0.776941224499366090, -0.776909744871398740, -0.776878263301157060, -0.776846779788719740, +-0.776815294334165190, -0.776783806937572650, -0.776752317599020530, -0.776720826318587410, -0.776689333096352460, -0.776657837932394290, -0.776626340826791380, -0.776594841779622460, +-0.776563340790966670, -0.776531837860902520, -0.776500332989508710, -0.776468826176863970, -0.776437317423047220, -0.776405806728137300, -0.776374294092212920, -0.776342779515352470, +-0.776311262997635310, -0.776279744539140060, -0.776248224139945320, -0.776216701800129920, -0.776185177519772900, -0.776153651298952970, -0.776122123137748640, -0.776090593036239400, +-0.776059060994503500, -0.776027527012620010, -0.775995991090667530, -0.775964453228725200, -0.775932913426871760, -0.775901371685186140, -0.775869828003746710, -0.775838282382632970, +-0.775806734821923640, -0.775775185321697420, -0.775743633882032930, -0.775712080503009660, -0.775680525184706200, -0.775648967927201390, -0.775617408730573940, -0.775585847594903120, +-0.775554284520267870, -0.775522719506746780, -0.775491152554418580, -0.775459583663362870, -0.775428012833658140, -0.775396440065383220, -0.775364865358617370, -0.775333288713439320, +-0.775301710129928210, -0.775270129608162440, -0.775238547148221600, -0.775206962750184410, -0.775175376414129810, -0.775143788140136510, -0.775112197928284010, -0.775080605778651010, +-0.775049011691316570, -0.775017415666359180, -0.774985817703858660, -0.774954217803893510, -0.774922615966542880, -0.774891012191885390, -0.774859406480000620, -0.774827798830967420, +-0.774796189244864380, -0.774764577721771210, -0.774732964261766520, -0.774701348864929470, -0.774669731531338780, -0.774638112261073930, -0.774606491054213860, -0.774574867910837630, +-0.774543242831023940, -0.774511615814852390, -0.774479986862401710, -0.774448355973751170, -0.774416723148979470, -0.774385088388166220, -0.774353451691390250, -0.774321813058730600, +-0.774290172490266220, -0.774258529986076690, -0.774226885546240750, -0.774195239170837320, -0.774163590859946240, -0.774131940613645990, -0.774100288432015950, -0.774068634315134950, +-0.774036978263082600, -0.774005320275937820, -0.773973660353779680, -0.773941998496687210, -0.773910334704740020, -0.773878668978016940, -0.773847001316597230, -0.773815331720559610, +-0.773783660189984120, -0.773751986724949380, -0.773720311325534650, -0.773688633991818970, -0.773656954723881850, -0.773625273521802440, -0.773593590385659560, -0.773561905315532930, +-0.773530218311501590, -0.773498529373644720, -0.773466838502041230, -0.773435145696770850, -0.773403450957912630, -0.773371754285545940, -0.773340055679749390, -0.773308355140603030, +-0.773276652668185790, -0.773244948262577060, -0.773213241923855540, -0.773181533652101180, -0.773149823447393030, -0.773118111309810230, -0.773086397239431950, -0.773054681236338030, +-0.773022963300607380, -0.772991243432319170, -0.772959521631552680, -0.772927797898387730, -0.772896072232903240, -0.772864344635178280, -0.772832615105292660, -0.772800883643325550, +-0.772769150249356330, -0.772737414923463820, -0.772705677665728170, -0.772673938476228230, -0.772642197355043470, -0.772610454302252950, -0.772578709317936600, -0.772546962402173460, +-0.772515213555042930, -0.772483462776624050, -0.772451710066996760, -0.772419955426240310, -0.772388198854433880, -0.772356440351656740, -0.772324679917988700, -0.772292917553508930, +-0.772261153258296700, -0.772229387032431820, -0.772197618875993470, -0.772165848789061030, -0.772134076771713750, -0.772102302824031580, -0.772070526946093570, -0.772038749137979320, +-0.772006969399767870, -0.771975187731539280, -0.771943404133372810, -0.771911618605347740, -0.771879831147543330, -0.771848041760039630, -0.771816250442915910, -0.771784457196251440, +-0.771752662020125600, -0.771720864914618440, -0.771689065879809010, -0.771657264915776690, -0.771625462022601520, -0.771593657200362770, -0.771561850449139720, -0.771530041769011850, +-0.771498231160059110, -0.771466418622360760, -0.771434604155996410, -0.771402787761045320, -0.771370969437587430, -0.771339149185702230, -0.771307327005469110, -0.771275502896967450, +-0.771243676860277170, -0.771211848895477780, -0.771180019002648760, -0.771148187181869500, -0.771116353433219940, -0.771084517756779550, -0.771052680152627850, -0.771020840620844190, +-0.770988999161508650, -0.770957155774700700, -0.770925310460499500, -0.770893463218985330, -0.770861614050237560, -0.770829762954335700, -0.770797909931359100, -0.770766054981388060, +-0.770734198104501940, -0.770702339300780250, -0.770670478570302460, -0.770638615913148750, -0.770606751329398490, -0.770574884819131390, -0.770543016382426730, -0.770511146019364880, +-0.770479273730025120, -0.770447399514487150, -0.770415523372830480, -0.770383645305135260, -0.770351765311480970, -0.770319883391946900, -0.770287999546613420, -0.770256113775559910, +-0.770224226078866200, -0.770192336456611560, -0.770160444908876470, -0.770128551435740220, -0.770096656037282500, -0.770064758713582930, -0.770032859464721780, -0.770000958290778410, +-0.769969055191832670, -0.769937150167964050, -0.769905243219252800, -0.769873334345778430, -0.769841423547620750, -0.769809510824859270, -0.769777596177574240, -0.769745679605845280, +-0.769713761109751760, -0.769681840689374170, -0.769649918344791910, -0.769617994076085000, -0.769586067883332610, -0.769554139766615460, -0.769522209726013040, -0.769490277761604950, +-0.769458343873470900, -0.769426408061691380, -0.769394470326345780, -0.769362530667513920, -0.769330589085275520, -0.769298645579711060, -0.769266700150899820, -0.769234752798921840, +-0.769202803523856730, -0.769170852325784970, -0.769138899204785950, -0.769106944160939500, -0.769074987194325880, -0.769043028305024910, -0.769011067493116210, -0.768979104758679700, +-0.768947140101795660, -0.768915173522543790, -0.768883205021003930, -0.768851234597255790, -0.768819262251379860, -0.768787287983455860, -0.768755311793563490, -0.768723333681782690, +-0.768691353648193740, -0.768659371692876460, -0.768627387815910780, -0.768595402017376310, -0.768563414297353640, -0.768531424655922390, -0.768499433093162600, -0.768467439609153870, +-0.768435444203976910, -0.768403446877711340, -0.768371447630436850, -0.768339446462234070, -0.768307443373182570, -0.768275438363362540, -0.768243431432853670, -0.768211422581736470, +-0.768179411810090640, -0.768147399117996340, -0.768115384505533290, -0.768083367972781980, -0.768051349519822350, -0.768019329146734320, -0.767987306853597620, -0.767955282640493060, +-0.767923256507500150, -0.767891228454699150, -0.767859198482169880, -0.767827166589992840, -0.767795132778247850, -0.767763097047014730, -0.767731059396374200, -0.767699019826405980, +-0.767666978337190220, -0.767634934928806740, -0.767602889601336270, -0.767570842354858510, -0.767538793189453620, -0.767506742105201530, -0.767474689102182860, -0.767442634180477420, +-0.767410577340165490, -0.767378518581326660, -0.767346457904041990, -0.767314395308391070, -0.767282330794454290, -0.767250264362311250, -0.767218196012042890, -0.767186125743729020, +-0.767154053557449590, -0.767121979453285310, -0.767089903431316110, -0.767057825491622050, -0.767025745634283270, -0.766993663859380280, -0.766961580166993230, -0.766929494557202160, +-0.766897407030087130, -0.766865317585728850, -0.766833226224207240, -0.766801132945602590, -0.766769037749994830, -0.766736940637464780, -0.766704841608092380, -0.766672740661957790, +-0.766640637799141160, -0.766608533019723200, -0.766576426323783870, -0.766544317711403520, -0.766512207182662110, -0.766480094737640340, -0.766447980376418480, -0.766415864099076360, +-0.766383745905694800, -0.766351625796353850, -0.766319503771133890, -0.766287379830114970, -0.766255253973377790, -0.766223126201002410, -0.766190996513069320, -0.766158864909658450, +-0.766126731390850630, -0.766094595956726130, -0.766062458607364990, -0.766030319342847490, -0.765998178163254440, -0.765966035068666010, -0.765933890059162460, -0.765901743134823840, +-0.765869594295731200, -0.765837443541964590, -0.765805290873604050, -0.765773136290730630, -0.765740979793424260, -0.765708821381765550, -0.765676661055834430, -0.765644498815711950, +-0.765612334661478270, -0.765580168593213760, -0.765548000610998480, -0.765515830714913470, -0.765483658905039000, -0.765451485181455340, -0.765419309544242640, -0.765387131993481960, +-0.765354952529253450, -0.765322771151637490, -0.765290587860714470, -0.765258402656565200, -0.765226215539269840, -0.765194026508908780, -0.765161835565562940, -0.765129642709312390, +-0.765097447940237820, -0.765065251258419290, -0.765033052663937950, -0.765000852156874080, -0.764968649737307940, -0.764936445405319910, -0.764904239160991150, -0.764872031004401710, +-0.764839820935632190, -0.764807608954762850, -0.764775395061874750, -0.764743179257048160, -0.764710961540363670, -0.764678741911901440, -0.764646520371742630, -0.764614296919967630, +-0.764582071556656470, -0.764549844281890540, -0.764517615095749890, -0.764485383998315230, -0.764453150989666930, -0.764420916069885940, -0.764388679239052630, -0.764356440497247710, +-0.764324199844551360, -0.764291957281044710, -0.764259712806808270, -0.764227466421922520, -0.764195218126467850, -0.764162967920525400, -0.764130715804175580, -0.764098461777498850, +-0.764066205840575720, -0.764033947993487450, -0.764001688236314200, -0.763969426569136800, -0.763937162992035510, -0.763904897505091610, -0.763872630108385580, -0.763840360801997580, +-0.763808089586008990, -0.763775816460500080, -0.763743541425551790, -0.763711264481244270, -0.763678985627658790, -0.763646704864875960, -0.763614422192976370, -0.763582137612040410, +-0.763549851122149350, -0.763517562723383780, -0.763485272415824200, -0.763452980199551210, -0.763420686074645970, -0.763388390041189080, -0.763356092099261250, -0.763323792248942870, +-0.763291490490315310, -0.763259186823458950, -0.763226881248454390, -0.763194573765382910, -0.763162264374325110, -0.763129953075361470, -0.763097639868572710, -0.763065324754040210, +-0.763033007731844350, -0.763000688802065950, -0.762968367964785620, -0.762936045220084620, -0.762903720568043450, -0.762871394008743040, -0.762839065542263770, -0.762806735168687240, +-0.762774402888093840, -0.762742068700564380, -0.762709732606179470, -0.762677394605020600, -0.762645054697168150, -0.762612712882702830, -0.762580369161705910, -0.762548023534258210, +-0.762515676000440350, -0.762483326560333130, -0.762450975214017830, -0.762418621961575060, -0.762386266803085740, -0.762353909738630490, -0.762321550768290670, -0.762289189892147110, +-0.762256827110280530, -0.762224462422771530, -0.762192095829701710, -0.762159727331151670, -0.762127356927202240, -0.762094984617934120, -0.762062610403428930, -0.762030234283767150, +-0.761997856259029830, -0.761965476329297560, -0.761933094494651850, -0.761900710755173520, -0.761868325110943050, -0.761835937562042040, -0.761803548108551110, -0.761771156750551400, +-0.761738763488123530, -0.761706368321349080, -0.761673971250308560, -0.761641572275083220, -0.761609171395753680, -0.761576768612401420, -0.761544363925107270, -0.761511957333952270, +-0.761479548839017030, -0.761447138440383140, -0.761414726138131550, -0.761382311932343070, -0.761349895823098530, -0.761317477810479540, -0.761285057894566800, -0.761252636075441250, +-0.761220212353184270, -0.761187786727876790, -0.761155359199599870, -0.761122929768434320, -0.761090498434461640, -0.761058065197762760, -0.761025630058418720, -0.760993193016510250, +-0.760960754072119160, -0.760928313225326170, -0.760895870476212430, -0.760863425824858660, -0.760830979271346690, -0.760798530815757210, -0.760766080458171400, -0.760733628198670080, +-0.760701174037335060, -0.760668717974247070, -0.760636260009487030, -0.760603800143136550, -0.760571338375276570, -0.760538874705988350, -0.760506409135352610, -0.760473941663451060, +-0.760441472290364740, -0.760409001016174700, -0.760376527840961880, -0.760344052764807990, -0.760311575787794070, -0.760279096910001170, -0.760246616131510230, -0.760214133452402960, +-0.760181648872760410, -0.760149162392663840, -0.760116674012193960, -0.760084183731432720, -0.760051691550461040, -0.760019197469359750, -0.759986701488210900, -0.759954203607095200, +-0.759921703826093920, -0.759889202145288210, -0.759856698564759790, -0.759824193084589590, -0.759791685704858890, -0.759759176425648720, -0.759726665247040910, -0.759694152169116400, +-0.759661637191956450, -0.759629120315642230, -0.759596601540255430, -0.759564080865877230, -0.759531558292588670, -0.759499033820471010, -0.759466507449606090, -0.759433979180074940, +-0.759401449011958720, -0.759368916945338590, -0.759336382980296490, -0.759303847116913460, -0.759271309355270540, -0.759238769695449680, -0.759206228137531800, -0.759173684681598290, +-0.759141139327730310, -0.759108592076009890, -0.759076042926517980, -0.759043491879335840, -0.759010938934544740, -0.758978384092226620, -0.758945827352462520, -0.758913268715333820, +-0.758880708180921680, -0.758848145749308150, -0.758815581420574150, -0.758783015194801180, -0.758750447072070400, -0.758717877052463850, -0.758685305136062470, -0.758652731322947640, +-0.758620155613201290, -0.758587578006904570, -0.758554998504138880, -0.758522417104985360, -0.758489833809526060, -0.758457248617842250, -0.758424661530015310, -0.758392072546126390, +-0.758359481666257660, -0.758326888890490160, -0.758294294218905480, -0.758261697651584690, -0.758229099188610030, -0.758196498830062570, -0.758163896576023900, -0.758131292426575180, +-0.758098686381798450, -0.758066078441775200, -0.758033468606586270, -0.758000856876314020, -0.757968243251039730, -0.757935627730844660, -0.757903010315810310, -0.757870391006018720, +-0.757837769801551260, -0.757805146702489220, -0.757772521708914070, -0.757739894820907980, -0.757707266038552100, -0.757674635361928030, -0.757642002791117040, -0.757609368326201400, +-0.757576731967262380, -0.757544093714381470, -0.757511453567640050, -0.757478811527120270, -0.757446167592903400, -0.757413521765071260, -0.757380874043704910, -0.757348224428886720, +-0.757315572920697950, -0.757282919519220000, -0.757250264224535010, -0.757217607036724360, -0.757184947955869660, -0.757152286982052390, -0.757119624115354610, -0.757086959355857790, +-0.757054292703643550, -0.757021624158793260, -0.756988953721389300, -0.756956281391512940, -0.756923607169245780, -0.756890931054669420, -0.756858253047866030, -0.756825573148916850, +-0.756792891357903950, -0.756760207674908370, -0.756727522100012600, -0.756694834633298120, -0.756662145274846100, -0.756629454024739130, -0.756596760883058490, -0.756564065849886000, +-0.756531368925303040, -0.756498670109391870, -0.756465969402234100, -0.756433266803911320, -0.756400562314505140, -0.756367855934097830, -0.756335147662770990, -0.756302437500606110, +-0.756269725447684890, -0.756237011504089730, -0.756204295669901990, -0.756171577945203510, -0.756138858330075880, -0.756106136824601260, -0.756073413428861360, -0.756040688142937570, +-0.756007960966912470, -0.755975231900867350, -0.755942500944884130, -0.755909768099044530, -0.755877033363430710, -0.755844296738124250, -0.755811558223207220, -0.755778817818760880, +-0.755746075524867830, -0.755713331341609560, -0.755680585269067890, -0.755647837307324540, -0.755615087456461890, -0.755582335716561530, -0.755549582087705400, -0.755516826569974880, +-0.755484069163452680, -0.755451309868220290, -0.755418548684359310, -0.755385785611952240, -0.755353020651080680, -0.755320253801826660, -0.755287485064271680, -0.755254714438498230, +-0.755221941924588020, -0.755189167522622990, -0.755156391232684740, -0.755123613054855760, -0.755090832989217860, -0.755058051035852770, -0.755025267194842310, -0.754992481466268960, +-0.754959693850214440, -0.754926904346760570, -0.754894112955989180, -0.754861319677982980, -0.754828524512823230, -0.754795727460592310, -0.754762928521371830, -0.754730127695244170, +-0.754697324982291360, -0.754664520382594790, -0.754631713896237290, -0.754598905523300440, -0.754566095263866420, -0.754533283118016820, -0.754500469085834350, -0.754467653167400610, +-0.754434835362797870, -0.754402015672107630, -0.754369194095412700, -0.754336370632794790, -0.754303545284335960, -0.754270718050117920, -0.754237888930223480, -0.754205057924734130, +-0.754172225033732270, -0.754139390257299590, -0.754106553595518700, -0.754073715048471430, -0.754040874616239480, -0.754008032298905780, -0.753975188096551950, -0.753942342009260140, +-0.753909494037112160, -0.753876644180190740, -0.753843792438577690, -0.753810938812355170, -0.753778083301605120, -0.753745225906410020, -0.753712366626851930, -0.753679505463012880, +-0.753646642414974810, -0.753613777482820320, -0.753580910666631460, -0.753548041966490390, -0.753515171382478920, -0.753482298914679770, -0.753449424563174870, -0.753416548328046050, +-0.753383670209376240, -0.753350790207247160, -0.753317908321741170, -0.753285024552940220, -0.753252138900926900, -0.753219251365783160, -0.753186361947591370, -0.753153470646433450, +-0.753120577462392030, -0.753087682395549240, -0.753054785445987250, -0.753021886613787990, -0.752988985899034290, -0.752956083301808080, -0.752923178822191730, -0.752890272460267070, +-0.752857364216117150, -0.752824454089823680, -0.752791542081469260, -0.752758628191135480, -0.752725712418905510, -0.752692794764861280, -0.752659875229084730, -0.752626953811658890, +-0.752594030512665490, -0.752561105332187120, -0.752528178270305710, -0.752495249327104100, -0.752462318502664430, -0.752429385797068860, -0.752396451210399660, -0.752363514742739550, +-0.752330576394170670, -0.752297636164775300, -0.752264694054635590, -0.752231750063834470, -0.752198804192453880, -0.752165856440576430, -0.752132906808283930, -0.752099955295659430, +-0.752067001902785080, -0.752034046629743050, -0.752001089476616040, -0.751968130443486320, -0.751935169530436380, -0.751902206737548150, -0.751869242064904690, -0.751836275512588140, +-0.751803307080680880, -0.751770336769265080, -0.751737364578423770, -0.751704390508239010, -0.751671414558793270, -0.751638436730168720, -0.751605457022448410, -0.751572475435714370, +-0.751539491970049210, -0.751506506625534980, -0.751473519402254820, -0.751440530300290790, -0.751407539319725260, -0.751374546460641060, -0.751341551723120560, -0.751308555107246150, +-0.751275556613100080, -0.751242556240765410, -0.751209553990324300, -0.751176549861859330, -0.751143543855452680, -0.751110535971187600, -0.751077526209146030, -0.751044514569410680, +-0.751011501052063710, -0.750978485657188390, -0.750945468384866750, -0.750912449235181520, -0.750879428208214850, -0.750846405304049780, -0.750813380522768910, -0.750780353864454190, +-0.750747325329188860, -0.750714294917055210, -0.750681262628135840, -0.750648228462513110, -0.750615192420269970, -0.750582154501489020, -0.750549114706252520, -0.750516073034642960, +-0.750483029486743500, -0.750449984062636520, -0.750416936762404620, -0.750383887586129950, -0.750350836533896000, -0.750317783605784940, -0.750284728801879350, -0.750251672122261630, +-0.750218613567015140, -0.750185553136222040, -0.750152490829965050, -0.750119426648326540, -0.750086360591389780, -0.750053292659237150, -0.750020222851950910, -0.749987151169614450, +-0.749954077612310140, -0.749921002180120590, -0.749887924873128280, -0.749854845691416360, -0.749821764635067440, -0.749788681704164130, -0.749755596898788680, -0.749722510219024580, +-0.749689421664954340, -0.749656331236660420, -0.749623238934225330, -0.749590144757732560, -0.749557048707264360, -0.749523950782903570, -0.749490850984732560, -0.749457749312834820, +-0.749424645767292620, -0.749391540348188560, -0.749358433055605900, -0.749325323889627140, -0.749292212850335090, -0.749259099937812260, -0.749225985152141890, -0.749192868493406610, +-0.749159749961689210, -0.749126629557072100, -0.749093507279638640, -0.749060383129471430, -0.749027257106653410, -0.748994129211266850, -0.748960999443395230, -0.748927867803121150, +-0.748894734290527330, -0.748861598905696480, -0.748828461648711860, -0.748795322519656080, -0.748762181518611850, -0.748729038645662200, -0.748695893900890200, -0.748662747284378320, +-0.748629598796209380, -0.748596448436466670, -0.748563296205232880, -0.748530142102590830, -0.748496986128623030, -0.748463828283413180, -0.748430668567043770, -0.748397506979597620, +-0.748364343521157440, -0.748331178191806720, -0.748298010991627960, -0.748264841920704300, -0.748231670979118140, -0.748198498166953160, -0.748165323484291880, -0.748132146931217320, +-0.748098968507812100, -0.748065788214159810, -0.748032606050343050, -0.747999422016444430, -0.747966236112547530, -0.747933048338734970, -0.747899858695089900, -0.747866667181694920, +-0.747833473798633520, -0.747800278545988410, -0.747767081423842630, -0.747733882432278900, -0.747700681571380700, -0.747667478841230750, -0.747634274241912200, -0.747601067773507650, +-0.747567859436100710, -0.747534649229774080, -0.747501437154610810, -0.747468223210693730, -0.747435007398106420, -0.747401789716931500, -0.747368570167251890, -0.747335348749151080, +-0.747302125462711910, -0.747268900308017400, -0.747235673285150390, -0.747202444394194480, -0.747169213635232480, -0.747135981008347440, -0.747102746513622180, -0.747069510151140310, +-0.747036271920984650, -0.747003031823238350, -0.746969789857984120, -0.746936546025305680, -0.746903300325286070, -0.746870052758008110, -0.746836803323554620, -0.746803552022009540, +-0.746770298853455470, -0.746737043817975450, -0.746703786915653090, -0.746670528146571200, -0.746637267510813050, -0.746604005008461470, -0.746570740639600160, -0.746537474404311950, +-0.746504206302680110, -0.746470936334787450, -0.746437664500717690, -0.746404390800553870, -0.746371115234378930, -0.746337837802276030, -0.746304558504328750, -0.746271277340620150, +-0.746237994311233280, -0.746204709416251170, -0.746171422655757640, -0.746138134029835420, -0.746104843538567990, -0.746071551182038050, -0.746038256960329660, -0.746004960873525520, +-0.745971662921708690, -0.745938363104962980, -0.745905061423371430, -0.745871757877017210, -0.745838452465983350, -0.745805145190353570, -0.745771836050210910, -0.745738525045638760, +-0.745705212176719920, -0.745671897443538350, -0.745638580846177070, -0.745605262384719360, -0.745571942059248150, -0.745538619869847370, -0.745505295816600080, -0.745471969899589530, +-0.745438642118898760, -0.745405312474611730, -0.745371980966811340, -0.745338647595580770, -0.745305312361003840, -0.745271975263163580, -0.745238636302143490, -0.745205295478026500, +-0.745171952790896540, -0.745138608240836660, -0.745105261827930240, -0.745071913552260430, -0.745038563413911170, -0.745005211412965500, -0.744971857549506680, -0.744938501823617980, +-0.744905144235383340, -0.744871784784885800, -0.744838423472208970, -0.744805060297435540, -0.744771695260649900, -0.744738328361934990, -0.744704959601373950, -0.744671588979050840, +-0.744638216495048690, -0.744604842149451110, -0.744571465942341030, -0.744538087873802600, -0.744504707943918990, -0.744471326152773560, -0.744437942500449590, -0.744404556987031010, +-0.744371169612601080, -0.744337780377243190, -0.744304389281040480, -0.744270996324077230, -0.744237601506436360, -0.744204204828201600, -0.744170806289455980, -0.744137405890283650, +-0.744104003630767790, -0.744070599510991640, -0.744037193531039250, -0.744003785690994010, -0.743970375990939180, -0.743936964430958140, -0.743903551011135030, -0.743870135731553030, +-0.743836718592295610, -0.743803299593446150, -0.743769878735088710, -0.743736456017306650, -0.743703031440183350, -0.743669605003802190, -0.743636176708247440, -0.743602746553602150, +-0.743569314539950010, -0.743535880667374300, -0.743502444935959180, -0.743469007345787910, -0.743435567896944090, -0.743402126589511210, -0.743368683423573100, -0.743335238399213450, +-0.743301791516515320, -0.743268342775563080, -0.743234892176439900, -0.743201439719229580, -0.743167985404015300, -0.743134529230881300, -0.743101071199911090, -0.743067611311188150, +-0.743034149564795960, -0.743000685960818590, -0.742967220499339610, -0.742933753180442520, -0.742900284004210710, -0.742866812970728540, -0.742833340080079290, -0.742799865332346650, +-0.742766388727614140, -0.742732910265966000, -0.742699429947485500, -0.742665947772256140, -0.742632463740362180, -0.742598977851887110, -0.742565490106914640, -0.742532000505528030, +-0.742498509047811780, -0.742465015733849270, -0.742431520563724190, -0.742398023537520050, -0.742364524655321210, -0.742331023917210950, -0.742297521323273090, -0.742264016873591230, +-0.742230510568249620, -0.742197002407331660, -0.742163492390921280, -0.742129980519101840, -0.742096466791957620, -0.742062951209572440, -0.742029433772029570, -0.741995914479413270, +-0.741962393331807250, -0.741928870329295220, -0.741895345471960790, -0.741861818759888210, -0.741828290193161210, -0.741794759771863380, -0.741761227496078310, -0.741727693365890620, +-0.741694157381383560, -0.741660619542641180, -0.741627079849746960, -0.741593538302785290, -0.741559994901839770, -0.741526449646994320, -0.741492902538332330, -0.741459353575938510, +-0.741425802759896220, -0.741392250090289530, -0.741358695567201800, -0.741325139190717740, -0.741291580960920740, -0.741258020877894610, -0.741224458941723620, -0.741190895152491480, +-0.741157329510282130, -0.741123762015179150, -0.741090192667267060, -0.741056621466629540, -0.741023048413350430, -0.740989473507513320, -0.740955896749202920, -0.740922318138502730, +-0.740888737675496900, -0.740855155360268690, -0.740821571192903040, -0.740787985173483430, -0.740754397302093800, -0.740720807578818090, -0.740687216003740430, -0.740653622576944780, +-0.740620027298514840, -0.740586430168535090, -0.740552831187089260, -0.740519230354261370, -0.740485627670135040, -0.740452023134794970, -0.740418416748324870, -0.740384808510808680, +-0.740351198422330330, -0.740317586482974190, -0.740283972692823980, -0.740250357051963960, -0.740216739560477730, -0.740183120218449900, -0.740149499025964270, -0.740115875983104910, +-0.740082251089955620, -0.740048624346600900, -0.740014995753124680, -0.739981365309610780, -0.739947733016143580, -0.739914098872807120, -0.739880462879685340, -0.739846825036862280, +-0.739813185344422310, -0.739779543802449480, -0.739745900411027720, -0.739712255170240860, -0.739678608080173830, -0.739644959140910110, -0.739611308352533970, -0.739577655715129460, +-0.739544001228780950, -0.739510344893572480, -0.739476686709588100, -0.739443026676911860, -0.739409364795628240, -0.739375701065821180, -0.739342035487574600, -0.739308368060973220, +-0.739274698786100970, -0.739241027663041890, -0.739207354691880040, -0.739173679872700000, -0.739140003205585930, -0.739106324690621760, -0.739072644327891440, -0.739038962117479770, +-0.739005278059470690, -0.738971592153948590, -0.738937904400997050, -0.738904214800701120, -0.738870523353144630, -0.738836830058411830, -0.738803134916586670, -0.738769437927753960, +-0.738735739091997630, -0.738702038409401960, -0.738668335880050990, -0.738634631504029420, -0.738600925281421180, -0.738567217212310450, -0.738533507296781910, -0.738499795534919620, +-0.738466081926807850, -0.738432366472530520, -0.738398649172172680, -0.738364930025818160, -0.738331209033551320, -0.738297486195456100, -0.738263761511617540, -0.738230034982119590, +-0.738196306607046490, -0.738162576386482420, -0.738128844320512070, -0.738095110409219710, -0.738061374652689620, -0.738027637051005710, -0.737993897604252940, -0.737960156312515550, +-0.737926413175877370, -0.737892668194423560, -0.737858921368238050, -0.737825172697405220, -0.737791422182009100, -0.737757669822134750, -0.737723915617866320, -0.737690159569288070, +-0.737656401676484050, -0.737622641939539300, -0.737588880358538090, -0.737555116933564570, -0.737521351664703010, -0.737487584552038330, -0.737453815595654700, -0.737420044795636500, +-0.737386272152068090, -0.737352497665034080, -0.737318721334618840, -0.737284943160906540, -0.737251163143982200, -0.737217381283930000, -0.737183597580834180, -0.737149812034779250, +-0.737116024645849910, -0.737082235414130650, -0.737048444339705840, -0.737014651422659430, -0.736980856663076890, -0.736947060061042160, -0.736913261616639730, -0.736879461329953860, +-0.736845659201069590, -0.736811855230071200, -0.736778049417043170, -0.736744241762069760, -0.736710432265236030, -0.736676620926626220, -0.736642807746324850, -0.736608992724416160, +-0.736575175860985310, -0.736541357156116570, -0.736507536609893990, -0.736473714222402930, -0.736439889993727670, -0.736406063923952580, -0.736372236013162040, -0.736338406261441310, +-0.736304574668874450, -0.736270741235546260, -0.736236905961540790, -0.736203068846943420, -0.736169229891838420, -0.736135389096310270, -0.736101546460443350, -0.736067701984322920, +-0.736033855668033250, -0.736000007511658950, -0.735966157515284270, -0.735932305678994480, -0.735898452002873960, -0.735864596487006970, -0.735830739131478890, -0.735796879936373880, +-0.735763018901776640, -0.735729156027771670, -0.735695291314444000, -0.735661424761878120, -0.735627556370158750, -0.735593686139370150, -0.735559814069597580, -0.735525940160925540, +-0.735492064413438620, -0.735458186827221310, -0.735424307402358760, -0.735390426138935460, -0.735356543037036130, -0.735322658096745130, -0.735288771318147740, -0.735254882701328330, +-0.735220992246371610, -0.735187099953362620, -0.735153205822385860, -0.735119309853526140, -0.735085412046867840, -0.735051512402496220, -0.735017610920496000, -0.734983707600951550, +-0.734949802443947700, -0.734915895449569480, -0.734881986617901720, -0.734848075949028790, -0.734814163443035520, -0.734780249100007050, -0.734746332920028000, -0.734712414903183060, +-0.734678495049556850, -0.734644573359234720, -0.734610649832301180, -0.734576724468840590, -0.734542797268938560, -0.734508868232679580, -0.734474937360148350, -0.734441004651429470, +-0.734407070106608440, -0.734373133725769730, -0.734339195508998180, -0.734305255456378370, -0.734271313567995690, -0.734237369843934730, -0.734203424284280310, -0.734169476889117050, +-0.734135527658530410, -0.734101576592604890, -0.734067623691425530, -0.734033668955076820, -0.733999712383644140, -0.733965753977212200, -0.733931793735865920, -0.733897831659689800, +-0.733863867748769440, -0.733829902003189430, -0.733795934423034370, -0.733761965008389750, -0.733727993759340170, -0.733694020675970670, -0.733660045758365850, -0.733626069006611090, +-0.733592090420791320, -0.733558110000991250, -0.733524127747295580, -0.733490143659789820, -0.733456157738558880, -0.733422169983687370, -0.733388180395260210, -0.733354188973362910, +-0.733320195718080160, -0.733286200629496900, -0.733252203707697840, -0.733218204952768570, -0.733184204364793810, -0.733150201943858270, -0.733116197690047430, -0.733082191603446120, +-0.733048183684139380, -0.733014173932211800, -0.732980162347749100, -0.732946148930836090, -0.732912133681557610, -0.732878116599998570, -0.732844097686244480, -0.732810076940380140, +-0.732776054362490600, -0.732742029952660690, -0.732708003710976000, -0.732673975637521240, -0.732639945732381670, -0.732605913995641790, -0.732571880427387520, -0.732537845027703470, +-0.732503807796674570, -0.732469768734386410, -0.732435727840923810, -0.732401685116371940, -0.732367640560815490, -0.732333594174340410, -0.732299545957031170, -0.732265495908973160, +-0.732231444030251090, -0.732197390320950660, -0.732163334781156800, -0.732129277410954570, -0.732095218210428890, -0.732061157179665470, -0.732027094318749130, -0.731993029627765020, +-0.731958963106798090, -0.731924894755934030, -0.731890824575257780, -0.731856752564854380, -0.731822678724808770, -0.731788603055206880, -0.731754525556133520, -0.731720446227673400, +-0.731686365069912580, -0.731652282082935760, -0.731618197266828310, -0.731584110621675050, -0.731550022147561820, -0.731515931844573420, -0.731481839712795350, -0.731447745752312310, +-0.731413649963210230, -0.731379552345573950, -0.731345452899488820, -0.731311351625039910, -0.731277248522312680, -0.731243143591392530, -0.731209036832364380, -0.731174928245313380, +-0.731140817830325360, -0.731106705587485360, -0.731072591516878310, -0.731038475618589920, -0.731004357892705460, -0.730970238339310190, -0.730936116958488810, -0.730901993750327610, +-0.730867868714911270, -0.730833741852325410, -0.730799613162654850, -0.730765482645985510, -0.730731350302402440, -0.730697216131991120, -0.730663080134836380, -0.730628942311024270, +-0.730594802660639810, -0.730560661183768280, -0.730526517880494830, -0.730492372750905390, -0.730458225795085010, -0.730424077013118840, -0.730389926405092700, -0.730355773971091750, +-0.730321619711201350, -0.730287463625506670, -0.730253305714093640, -0.730219145977047290, -0.730184984414453010, -0.730150821026396060, -0.730116655812962370, -0.730082488774236980, +-0.730048319910305390, -0.730014149221252740, -0.729979976707164970, -0.729945802368127340, -0.729911626204225120, -0.729877448215543570, -0.729843268402168620, -0.729809086764185540, +-0.729774903301679490, -0.729740718014736500, -0.729706530903441620, -0.729672341967880440, -0.729638151208138130, -0.729603958624300830, -0.729569764216453590, -0.729535567984681890, +-0.729501369929070890, -0.729467170049706850, -0.729432968346674930, -0.729398764820060500, -0.729364559469948940, -0.729330352296426290, -0.729296143299577700, -0.729261932479488780, +-0.729227719836244680, -0.729193505369931660, -0.729159289080634760, -0.729125070968439810, -0.729090851033431740, -0.729056629275696920, -0.729022405695320510, -0.728988180292387770, +-0.728953953066984850, -0.728919724019197020, -0.728885493149110000, -0.728851260456808920, -0.728817025942379960, -0.728782789605908370, -0.728748551447479960, -0.728714311467179690, +-0.728680069665094130, -0.728645826041308230, -0.728611580595907920, -0.728577333328978230, -0.728543084240605540, -0.728508833330875130, -0.728474580599872690, -0.728440326047683500, +-0.728406069674393700, -0.728371811480088780, -0.728337551464854020, -0.728303289628775770, -0.728269025971939210, -0.728234760494430140, -0.728200493196333840, -0.728166224077736570, +-0.728131953138723700, -0.728097680379381050, -0.728063405799793890, -0.728029129400048490, -0.727994851180230330, -0.727960571140425010, -0.727926289280717900, -0.727892005601195380, +-0.727857720101942830, -0.727823432783046060, -0.727789143644590350, -0.727754852686662070, -0.727720559909346700, -0.727686265312729620, -0.727651968896897210, -0.727617670661934830, +-0.727583370607928330, -0.727549068734962940, -0.727514765043125400, -0.727480459532500840, -0.727446152203175100, -0.727411843055233760, -0.727377532088762990, -0.727343219303848490, +-0.727308904700575960, -0.727274588279030800, -0.727240270039299470, -0.727205949981467590, -0.727171628105620750, -0.727137304411844540, -0.727102978900225240, -0.727068651570848660, +-0.727034322423800510, -0.726999991459166050, -0.726965658677032000, -0.726931324077483950, -0.726896987660607060, -0.726862649426488150, -0.726828309375212480, -0.726793967506866200, +-0.726759623821534580, -0.726725278319304220, -0.726690931000260720, -0.726656581864489890, -0.726622230912077230, -0.726587878143109320, -0.726553523557671780, -0.726519167155850410, +-0.726484808937730710, -0.726450448903399490, -0.726416087052942030, -0.726381723386444240, -0.726347357903992070, -0.726312990605671670, -0.726278621491568850, -0.726244250561769110, +-0.726209877816359040, -0.726175503255424350, -0.726141126879050860, -0.726106748687324280, -0.726072368680331090, -0.726037986858157010, -0.726003603220887970, -0.725969217768609560, +-0.725934830501408500, -0.725900441419370270, -0.725866050522581020, -0.725831657811126350, -0.725797263285092750, -0.725762866944566040, -0.725728468789632150, -0.725694068820376790, +-0.725659667036886560, -0.725625263439247160, -0.725590858027544310, -0.725556450801864590, -0.725522041762293850, -0.725487630908917880, -0.725453218241822520, -0.725418803761094470, +-0.725384387466819440, -0.725349969359083470, -0.725315549437972160, -0.725281127703572340, -0.725246704155969700, -0.725212278795250300, -0.725177851621499950, -0.725143422634805250, +-0.725108991835251900, -0.725074559222926180, -0.725040124797913690, -0.725005688560301230, -0.724971250510174530, -0.724936810647619390, -0.724902368972722530, -0.724867925485569780, +-0.724833480186247160, -0.724799033074840620, -0.724764584151436740, -0.724730133416121360, -0.724695680868980840, -0.724661226510100680, -0.724626770339567680, -0.724592312357467790, +-0.724557852563887160, -0.724523390958911720, -0.724488927542627950, -0.724454462315121890, -0.724419995276479600, -0.724385526426787110, -0.724351055766131120, -0.724316583294597470, +-0.724282109012272410, -0.724247632919241660, -0.724213155015592250, -0.724178675301409890, -0.724144193776780520, -0.724109710441790950, -0.724075225296527240, -0.724040738341075300, +-0.724006249575521290, -0.723971758999951920, -0.723937266614453230, -0.723902772419111380, -0.723868276414012190, -0.723833778599242690, -0.723799278974888830, -0.723764777541036630, +-0.723730274297772150, -0.723695769245182420, -0.723661262383353150, -0.723626753712370840, -0.723592243232321300, -0.723557730943291460, -0.723523216845367250, -0.723488700938634710, +-0.723454183223180670, -0.723419663699091280, -0.723385142366452680, -0.723350619225350930, -0.723316094275872960, -0.723281567518104680, -0.723247038952132600, -0.723212508578042420, +-0.723177976395921520, -0.723143442405855490, -0.723108906607930920, -0.723074369002233870, -0.723039829588851050, -0.723005288367868700, -0.722970745339373110, -0.722936200503450420, +-0.722901653860187570, -0.722867105409670470, -0.722832555151985410, -0.722798003087219200, -0.722763449215457990, -0.722728893536788150, -0.722694336051295740, -0.722659776759067900, +-0.722625215660190560, -0.722590652754750210, -0.722556088042832780, -0.722521521524525650, -0.722486953199914520, -0.722452383069086100, -0.722417811132126440, -0.722383237389122580, +-0.722348661840160560, -0.722314084485326970, -0.722279505324707750, -0.722244924358390160, -0.722210341586460250, -0.722175757009004380, -0.722141170626108940, -0.722106582437860740, +-0.722071992444346280, -0.722037400645651360, -0.722002807041863370, -0.721968211633068240, -0.721933614419352660, -0.721899015400802810, -0.721864414577505610, -0.721829811949547430, +-0.721795207517014650, -0.721760601279993640, -0.721725993238571340, -0.721691383392834120, -0.721656771742868460, -0.721622158288760530, -0.721587543030597470, -0.721552925968465650, +-0.721518307102451460, -0.721483686432641160, -0.721449063959122010, -0.721414439681980160, -0.721379813601301880, -0.721345185717174430, -0.721310556029684080, -0.721275924538917200, +-0.721241291244960280, -0.721206656147900470, -0.721172019247823930, -0.721137380544817350, -0.721102740038967130, -0.721068097730360290, -0.721033453619083110, -0.720998807705222510, +-0.720964159988864430, -0.720929510470096350, -0.720894859149004310, -0.720860206025675240, -0.720825551100195420, -0.720790894372651980, -0.720756235843131310, -0.720721575511719670, +-0.720686913378504430, -0.720652249443571980, -0.720617583707008790, -0.720582916168901470, -0.720548246829337050, -0.720513575688402130, -0.720478902746183090, -0.720444228002766640, +-0.720409551458239930, -0.720374873112689220, -0.720340192966201440, -0.720305511018862870, -0.720270827270760750, -0.720236141721981580, -0.720201454372612180, -0.720166765222738700, +-0.720132074272448630, -0.720097381521828450, -0.720062686970964430, -0.720027990619944050, -0.719993292468853690, -0.719958592517780050, -0.719923890766809630, -0.719889187216029900, +-0.719854481865527030, -0.719819774715388050, -0.719785065765699340, -0.719750355016548270, -0.719715642468021330, -0.719680928120205230, -0.719646211973186460, -0.719611494027052600, +-0.719576774281889930, -0.719542052737785260, -0.719507329394825310, -0.719472604253097230, -0.719437877312687600, -0.719403148573683370, -0.719368418036170910, -0.719333685700237810, +-0.719298951565970460, -0.719264215633455330, -0.719229477902780020, -0.719194738374031030, -0.719159997047295160, -0.719125253922659020, -0.719090509000209990, -0.719055762280034760, +-0.719021013762220160, -0.718986263446852680, -0.718951511334019800, -0.718916757423808230, -0.718882001716304670, -0.718847244211595850, -0.718812484909769230, -0.718777723810911430, +-0.718742960915109250, -0.718708196222449410, -0.718673429733019290, -0.718638661446905800, -0.718603891364195220, -0.718569119484975150, -0.718534345809332400, -0.718499570337353680, +-0.718464793069125810, -0.718430014004736270, -0.718395233144271670, -0.718360450487819050, -0.718325666035464880, -0.718290879787296890, -0.718256091743401770, -0.718221301903866350, +-0.718186510268777330, -0.718151716838222430, -0.718116921612288240, -0.718082124591061690, -0.718047325774629600, -0.718012525163079340, -0.717977722756497960, -0.717942918554971830, +-0.717908112558588770, -0.717873304767435490, -0.717838495181598810, -0.717803683801165660, -0.717768870626223630, -0.717734055656859440, -0.717699238893160010, -0.717664420335212270, +-0.717629599983103720, -0.717594777836921270, -0.717559953896751760, -0.717525128162682100, -0.717490300634799900, -0.717455471313191980, -0.717420640197945380, -0.717385807289146920, +-0.717350972586884180, -0.717316136091244120, -0.717281297802313640, -0.717246457720179590, -0.717211615844929650, -0.717176772176650770, -0.717141926715429650, -0.717107079461353990, +-0.717072230414510630, -0.717037379574986700, -0.717002526942868920, -0.716967672518245340, -0.716932816301202420, -0.716897958291827450, -0.716863098490207350, -0.716828236896429830, +-0.716793373510581700, -0.716758508332750010, -0.716723641363021910, -0.716688772601485000, -0.716653902048226100, -0.716619029703332470, -0.716584155566890920, -0.716549279638989290, +-0.716514401919714490, -0.716479522409153360, -0.716444641107393700, -0.716409758014522560, -0.716374873130626980, -0.716339986455793780, -0.716305097990111110, -0.716270207733665560, +-0.716235315686544530, -0.716200421848834920, -0.716165526220624570, -0.716130628802000400, -0.716095729593049680, -0.716060828593859220, -0.716025925804517070, -0.715991021225110160, +-0.715956114855725630, -0.715921206696450430, -0.715886296747372700, -0.715851385008579140, -0.715816471480156810, -0.715781556162193630, -0.715746639054776530, -0.715711720157992780, +-0.715676799471929530, -0.715641876996674590, -0.715606952732314780, -0.715572026678937820, -0.715537098836630300, -0.715502169205480490, -0.715467237785575190, -0.715432304577001800, +-0.715397369579847340, -0.715362432794199750, -0.715327494220146080, -0.715292553857773680, -0.715257611707169620, -0.715222667768421800, -0.715187722041617400, -0.715152774526843340, +-0.715117825224187540, -0.715082874133737280, -0.715047921255579810, -0.715012966589802180, -0.714978010136492540, -0.714943051895737810, -0.714908091867625490, -0.714873130052242620, +-0.714838166449677240, -0.714803201060016490, -0.714768233883347650, -0.714733264919757970, -0.714698294169335390, -0.714663321632167060, -0.714628347308340460, -0.714593371197942750, +-0.714558393301061860, -0.714523413617784930, -0.714488432148199570, -0.714453448892392820, -0.714418463850452710, -0.714383477022466410, -0.714348488408521170, -0.714313498008705030, +-0.714278505823105040, -0.714243511851808900, -0.714208516094903540, -0.714173518552477350, -0.714138519224617240, -0.714103518111410930, -0.714068515212945450, -0.714033510529309080, +-0.713998504060588850, -0.713963495806872350, -0.713928485768246860, -0.713893473944800410, -0.713858460336620370, -0.713823444943794130, -0.713788427766408830, -0.713753408804552960, +-0.713718388058313450, -0.713683365527777780, -0.713648341213033890, -0.713613315114169260, -0.713578287231271260, -0.713543257564427270, -0.713508226113725440, -0.713473192879253040, +-0.713438157861097650, -0.713403121059346560, -0.713368082474087890, -0.713333042105409150, -0.713297999953397710, -0.713262956018141050, -0.713227910299727320, -0.713192862798243680, +-0.713157813513777940, -0.713122762446417370, -0.713087709596250230, -0.713052654963363790, -0.713017598547845410, -0.712982540349783370, -0.712947480369264920, -0.712912418606377880, +-0.712877355061209420, -0.712842289733847780, -0.712807222624380570, -0.712772153732895260, -0.712737083059479250, -0.712702010604220780, -0.712666936367207350, -0.712631860348526550, +-0.712596782548265860, -0.712561702966513440, -0.712526621603356780, -0.712491538458883580, -0.712456453533181210, -0.712421366826338050, -0.712386278338441370, -0.712351188069579200, +-0.712316096019838580, -0.712281002189308010, -0.712245906578075070, -0.712210809186226920, -0.712175710013852160, -0.712140609061038040, -0.712105506327872510, -0.712070401814442810, +-0.712035295520837440, -0.712000187447143770, -0.711965077593449850, -0.711929965959842700, -0.711894852546411050, -0.711859737353242260, -0.711824620380424040, -0.711789501628044110, +-0.711754381096190600, -0.711719258784951240, -0.711684134694413610, -0.711649008824665420, -0.711613881175795050, -0.711578751747889870, -0.711543620541037590, -0.711508487555326590, +-0.711473352790844230, -0.711438216247678670, -0.711403077925917170, -0.711367937825648220, -0.711332795946959530, -0.711297652289938800, -0.711262506854673630, -0.711227359641252500, +-0.711192210649763010, -0.711157059880292990, -0.711121907332930010, -0.711086753007762580, -0.711051596904878180, -0.711016439024364840, -0.710981279366310170, -0.710946117930802530, +-0.710910954717929530, -0.710875789727778980, -0.710840622960439150, -0.710805454415997850, -0.710770284094542900, -0.710735111996161910, -0.710699938120943450, -0.710664762468975140, +-0.710629585040344900, -0.710594405835140440, -0.710559224853450240, -0.710524042095362020, -0.710488857560963690, -0.710453671250342870, -0.710418483163588130, -0.710383293300787310, +-0.710348101662028110, -0.710312908247398460, -0.710277713056986840, -0.710242516090880960, -0.710207317349168310, -0.710172116831937930, -0.710136914539277080, -0.710101710471274020, +-0.710066504628016350, -0.710031297009592670, -0.709996087616090790, -0.709960876447598750, -0.709925663504204160, -0.709890448785995720, -0.709855232293061240, -0.709820014025488550, +-0.709784793983365580, -0.709749572166780920, -0.709714348575822380, -0.709679123210577910, -0.709643896071135320, -0.709608667157583310, -0.709573436470009700, -0.709538204008502430, +-0.709502969773149310, -0.709467733764039150, -0.709432495981259570, -0.709397256424898480, -0.709362015095044600, -0.709326771991785730, -0.709291527115209820, -0.709256280465404790, +-0.709221032042459450, -0.709185781846461420, -0.709150529877499050, -0.709115276135659940, -0.709080020621033040, -0.709044763333706030, -0.709009504273767190, -0.708974243441304110, +-0.708938980836405830, -0.708903716459160170, -0.708868450309655170, -0.708833182387978660, -0.708797912694219660, -0.708762641228465770, -0.708727367990804940, -0.708692092981326070, +-0.708656816200117000, -0.708621537647265760, -0.708586257322860400, -0.708550975226989730, -0.708515691359741680, -0.708480405721204410, -0.708445118311465730, -0.708409829130614680, +-0.708374538178738970, -0.708339245455926860, -0.708303950962266390, -0.708268654697846390, -0.708233356662754670, -0.708198056857079590, -0.708162755280909110, -0.708127451934332020, +-0.708092146817436260, -0.708056839930309880, -0.708021531273041680, -0.707986220845719720, -0.707950908648432130, -0.707915594681266970, -0.707880278944313050, -0.707844961437658630, +-0.707809642161391750, -0.707774321115600350, -0.707738998300373460, -0.707703673715799120, -0.707668347361965600, -0.707633019238960940, -0.707597689346874060, -0.707562357685792900, +-0.707527024255805830, -0.707491689057000880, -0.707456352089467110, -0.707421013353292330, -0.707385672848565130, -0.707350330575373440, -0.707314986533806200, -0.707279640723951440, +-0.707244293145897320, -0.707208943799732760, -0.707173592685545800, -0.707138239803424940, -0.707102885153458200, -0.707067528735734420, -0.707032170550341950, -0.706996810597368960, +-0.706961448876903710, -0.706926085389035120, -0.706890720133851240, -0.706855353111440650, -0.706819984321891410, -0.706784613765292450, -0.706749241441731900, -0.706713867351298370, +-0.706678491494079800, -0.706643113870165320, -0.706607734479642980, -0.706572353322601040, -0.706536970399128660, -0.706501585709313650, -0.706466199253244830, -0.706430811031010130, +-0.706395421042698700, -0.706360029288398810, -0.706324635768198710, -0.706289240482186780, -0.706253843430452060, -0.706218444613082810, -0.706183044030167300, -0.706147641681794000, +-0.706112237568051750, -0.706076831689029020, -0.706041424044814180, -0.706006014635495500, -0.705970603461162140, -0.705935190521902230, -0.705899775817803940, -0.705864359348956640, +-0.705828941115448360, -0.705793521117367820, -0.705758099354803050, -0.705722675827843430, -0.705687250536577100, -0.705651823481092680, -0.705616394661478300, -0.705580964077823340, +-0.705545531730215950, -0.705510097618744610, -0.705474661743497820, -0.705439224104564720, -0.705403784702033580, -0.705368343535992870, -0.705332900606530980, -0.705297455913737270, +-0.705262009457699790, -0.705226561238507350, -0.705191111256248230, -0.705155659511011670, -0.705120206002885830, -0.705084750731959310, -0.705049293698321140, -0.705013834902059710, +-0.704978374343263820, -0.704942912022021530, -0.704907447938422300, -0.704871982092554530, -0.704836514484506790, -0.704801045114367360, -0.704765573982225720, -0.704730101088170140, +-0.704694626432289310, -0.704659150014671610, -0.704623671835406310, -0.704588191894581770, -0.704552710192286820, -0.704517226728609840, -0.704481741503640070, -0.704446254517465900, +-0.704410765770175810, -0.704375275261859170, -0.704339782992604250, -0.704304288962499860, -0.704268793171634490, -0.704233295620097510, -0.704197796307977190, -0.704162295235362450, +-0.704126792402341550, -0.704091287809004100, -0.704055781455438350, -0.704020273341733230, -0.703984763467977110, -0.703949251834259270, -0.703913738440668400, -0.703878223287293210, +-0.703842706374222080, -0.703807187701544600, -0.703771667269349030, -0.703736145077724080, -0.703700621126759020, -0.703665095416542430, -0.703629567947163030, -0.703594038718709400, +-0.703558507731271150, -0.703522974984936430, -0.703487440479794390, -0.703451904215933400, -0.703416366193443050, -0.703380826412411730, -0.703345284872928240, -0.703309741575081300, +-0.703274196518960390, -0.703238649704653880, -0.703203101132250820, -0.703167550801839680, -0.703131998713509950, -0.703096444867350230, -0.703060889263449120, -0.703025331901896090, +-0.702989772782779630, -0.702954211906188900, -0.702918649272212150, -0.702883084880939310, -0.702847518732458540, -0.702811950826859100, -0.702776381164229470, -0.702740809744659130, +-0.702705236568236800, -0.702669661635051400, -0.702634084945191530, -0.702598506498746780, -0.702562926295805750, -0.702527344336457360, -0.702491760620790330, -0.702456175148894250, +-0.702420587920857710, -0.702384998936769640, -0.702349408196718760, -0.702313815700794760, -0.702278221449086140, -0.702242625441681700, -0.702207027678671050, -0.702171428160142770, +-0.702135826886185920, -0.702100223856889190, -0.702064619072342190, -0.702029012532633720, -0.701993404237852610, -0.701957794188087790, -0.701922182383428740, -0.701886568823964270, +-0.701850953509783330, -0.701815336440974710, -0.701779717617628140, -0.701744097039832200, -0.701708474707675940, -0.701672850621248290, -0.701637224780638840, -0.701601597185936290, +-0.701565967837229460, -0.701530336734607960, -0.701494703878160710, -0.701459069267976630, -0.701423432904144550, -0.701387794786754170, -0.701352154915894420, -0.701316513291654230, +-0.701280869914122420, -0.701245224783388800, -0.701209577899542080, -0.701173929262671410, -0.701138278872865620, -0.701102626730214510, -0.701066972834806680, -0.701031317186731510, +-0.700995659786077810, -0.700960000632935180, -0.700924339727392540, -0.700888677069538720, -0.700853012659463650, -0.700817346497255910, -0.700781678583004890, -0.700746008916799280, +-0.700710337498729020, -0.700674664328882920, -0.700638989407350140, -0.700603312734219610, -0.700567634309581020, -0.700531954133523430, -0.700496272206135970, -0.700460588527507480, +-0.700424903097727760, -0.700389215916885850, -0.700353526985070920, -0.700317836302371880, -0.700282143868878440, -0.700246449684679750, -0.700210753749864970, -0.700175056064522900, +-0.700139356628743490, -0.700103655442615770, -0.700067952506228550, -0.700032247819671770, -0.699996541383034470, -0.699960833196405670, -0.699925123259874550, -0.699889411573530910, +-0.699853698137463680, -0.699817982951762340, -0.699782266016515610, -0.699746547331813630, -0.699710826897745220, -0.699675104714399750, -0.699639380781866160, -0.699603655100234480, +-0.699567927669593750, -0.699532198490033120, -0.699496467561641630, -0.699460734884509330, -0.699425000458725240, -0.699389264284378200, -0.699353526361558450, -0.699317786690354830, +-0.699282045270856800, -0.699246302103153190, -0.699210557187334270, -0.699174810523488950, -0.699139062111706620, -0.699103311952076200, -0.699067560044687950, -0.699031806389630810, +-0.698996050986994020, -0.698960293836866860, -0.698924534939339260, -0.698888774294500360, -0.698853011902439540, -0.698817247763245830, -0.698781481877009390, -0.698745714243819150, +-0.698709944863764370, -0.698674173736934970, -0.698638400863420220, -0.698602626243309490, -0.698566849876691710, -0.698531071763657250, -0.698495291904295160, -0.698459510298694800, +-0.698423726946945320, -0.698387941849136770, -0.698352155005358520, -0.698316366415699830, -0.698280576080249850, -0.698244783999098730, -0.698208990172335730, -0.698173194600050230, +-0.698137397282331370, -0.698101598219269430, -0.698065797410953430, -0.698029994857472640, -0.697994190558917200, -0.697958384515376280, -0.697922576726939360, -0.697886767193695690, +-0.697850955915735430, -0.697815142893147830, -0.697779328126022280, -0.697743511614448140, -0.697707693358515570, -0.697671873358313710, -0.697636051613932270, -0.697600228125460300, +-0.697564402892988040, -0.697528575916604780, -0.697492747196400200, -0.697456916732463350, -0.697421084524884490, -0.697385250573753000, -0.697349414879158250, -0.697313577441189820, +-0.697277738259937660, -0.697241897335491130, -0.697206054667939610, -0.697170210257373250, -0.697134364103881410, -0.697098516207553590, -0.697062666568479150, -0.697026815186748470, +-0.696990962062450590, -0.696955107195675440, -0.696919250586512160, -0.696883392235051020, -0.696847532141381510, -0.696811670305593100, -0.696775806727775170, -0.696739941408018090, +-0.696704074346411130, -0.696668205543043980, -0.696632334998006030, -0.696596462711387530, -0.696560588683277970, -0.696524712913766500, -0.696488835402943600, -0.696452956150898640, +-0.696417075157721220, -0.696381192423500940, -0.696345307948327830, -0.696309421732291600, -0.696273533775481730, -0.696237644077987720, -0.696201752639899920, -0.696165859461307710, +-0.696129964542300920, -0.696094067882968790, -0.696058169483401820, -0.696022269343689490, -0.695986367463921510, -0.695950463844187240, -0.695914558484577170, -0.695878651385180680, +-0.695842742546087250, -0.695806831967387350, -0.695770919649170260, -0.695735005591525900, -0.695699089794543760, -0.695663172258314200, -0.695627252982926600, -0.695591331968471000, +-0.695555409215036670, -0.695519484722714190, -0.695483558491593050, -0.695447630521762950, -0.695411700813313380, -0.695375769366334940, -0.695339836180917100, -0.695303901257149690, +-0.695267964595122080, -0.695232026194924970, -0.695196086056647840, -0.695160144180380520, -0.695124200566212380, -0.695088255214234120, -0.695052308124535220, -0.695016359297205290, +-0.694980408732334690, -0.694944456430013120, -0.694908502390330420, -0.694872546613376050, -0.694836589099240730, -0.694800629848013940, -0.694764668859785610, -0.694728706134645210, +-0.694692741672683360, -0.694656775473989740, -0.694620807538654070, -0.694584837866766060, -0.694548866458416400, -0.694512893313694480, -0.694476918432690330, -0.694440941815493650, +-0.694404963462194820, -0.694368983372883660, -0.694333001547649650, -0.694297017986583500, -0.694261032689774900, -0.694225045657313580, -0.694189056889289340, -0.694153066385792880, +-0.694117074146913590, -0.694081080172741730, -0.694045084463366880, -0.694009087018879530, -0.693973087839369620, -0.693937086924926840, -0.693901084275641120, -0.693865079891602950, +-0.693829073772902040, -0.693793065919628530, -0.693757056331872010, -0.693721045009723200, -0.693685031953271690, -0.693649017162607300, -0.693613000637820720, -0.693576982379001670, +-0.693540962386240190, -0.693504940659625870, -0.693468917199249630, -0.693432892005201080, -0.693396865077570260, -0.693360836416446970, -0.693324806021921810, -0.693288773894084830, +-0.693252740033025730, -0.693216704438834540, -0.693180667111601980, -0.693144628051417630, -0.693108587258371770, -0.693072544732554200, -0.693036500474055520, -0.693000454482965540, +-0.692964406759374100, -0.692928357303371990, -0.692892306115049040, -0.692856253194495290, -0.692820198541800550, -0.692784142157055640, -0.692748084040350490, -0.692712024191775020, +-0.692675962611419170, -0.692639899299373750, -0.692603834255728580, -0.692567767480573800, -0.692531698973999350, -0.692495628736095940, -0.692459556766953480, -0.692423483066662130, +-0.692387407635311700, -0.692351330472993130, -0.692315251579796120, -0.692279170955811150, -0.692243088601127820, -0.692207004515837170, -0.692170918700028890, -0.692134831153793040, +-0.692098741877220420, -0.692062650870401090, -0.692026558133424950, -0.691990463666382170, -0.691954367469363560, -0.691918269542459050, -0.691882169885758790, -0.691846068499352820, +-0.691809965383332060, -0.691773860537786330, -0.691737753962805900, -0.691701645658480910, -0.691665535624901960, -0.691629423862159310, -0.691593310370343000, -0.691557195149543170, +-0.691521078199850650, -0.691484959521355360, -0.691448839114147450, -0.691412716978317740, -0.691376593113956160, -0.691340467521153190, -0.691304340199998760, -0.691268211150583680, +-0.691232080372998100, -0.691195947867332410, -0.691159813633676510, -0.691123677672121350, -0.691087539982756960, -0.691051400565673820, -0.691015259420961760, -0.690979116548711910, +-0.690942971949014330, -0.690906825621959260, -0.690870677567636760, -0.690834527786137960, -0.690798376277552810, -0.690762223041971430, -0.690726068079484780, -0.690689911390182990, +-0.690653752974156430, -0.690617592831495150, -0.690581430962290190, -0.690545267366631690, -0.690509102044609910, -0.690472934996315240, -0.690436766221838360, -0.690400595721269660, +-0.690364423494699510, -0.690328249542217940, -0.690292073863916110, -0.690255896459884060, -0.690219717330212260, -0.690183536474990870, -0.690147353894310920, -0.690111169588262570, +-0.690074983556936310, -0.690038795800422380, -0.690002606318811610, -0.689966415112194480, -0.689930222180660910, -0.689894027524302070, -0.689857831143208200, -0.689821633037469790, +-0.689785433207176890, -0.689749231652420860, -0.689713028373291630, -0.689676823369879900, -0.689640616642275830, -0.689604408190570450, -0.689568198014854030, -0.689531986115217150, +-0.689495772491750090, -0.689459557144543770, -0.689423340073688660, -0.689387121279275150, -0.689350900761393490, -0.689314678520134950, -0.689278454555589670, -0.689242228867847920, +-0.689206001457000950, -0.689169772323139030, -0.689133541466352640, -0.689097308886732040, -0.689061074584368600, -0.689024838559352370, -0.688988600811774040, -0.688952361341723880, +-0.688916120149293150, -0.688879877234572220, -0.688843632597651470, -0.688807386238621370, -0.688771138157573180, -0.688734888354597060, -0.688698636829783720, -0.688662383583223510, +-0.688626128615007600, -0.688589871925226470, -0.688553613513970260, -0.688517353381330350, -0.688481091527397120, -0.688444827952261030, -0.688408562656012690, -0.688372295638743140, +-0.688336026900542960, -0.688299756441502650, -0.688263484261712690, -0.688227210361264220, -0.688190934740247840, -0.688154657398754140, -0.688118378336873390, -0.688082097554697070, +-0.688045815052315430, -0.688009530829819300, -0.687973244887299050, -0.687936957224845940, -0.687900667842550550, -0.687864376740503050, -0.687828083918795020, -0.687791789377516730, +-0.687755493116758990, -0.687719195136612170, -0.687682895437167760, -0.687646594018516020, -0.687610290880747880, -0.687573986023953590, -0.687537679448224750, -0.687501371153651620, +-0.687465061140325130, -0.687428749408335650, -0.687392435957774550, -0.687356120788732540, -0.687319803901300100, -0.687283485295567820, -0.687247164971627190, -0.687210842929568580, +-0.687174519169482910, -0.687138193691460670, -0.687101866495593240, -0.687065537581971090, -0.687029206950684810, -0.686992874601825900, -0.686956540535484720, -0.686920204751752190, +-0.686883867250718820, -0.686847528032476170, -0.686811187097114640, -0.686774844444725140, -0.686738500075398270, -0.686702153989225410, -0.686665806186297130, -0.686629456666704390, +-0.686593105430537750, -0.686556752477888610, -0.686520397808847550, -0.686484041423505500, -0.686447683321953050, -0.686411323504281800, -0.686374961970582120, -0.686338598720944710, +-0.686302233755461290, -0.686265867074222100, -0.686229498677318310, -0.686193128564840490, -0.686156756736880150, -0.686120383193527860, -0.686084007934874670, -0.686047630961011070, +-0.686011252272028860, -0.685974871868018420, -0.685938489749070790, -0.685902105915276560, -0.685865720366727550, -0.685829333103514130, -0.685792944125727330, -0.685756553433457980, +-0.685720161026797450, -0.685683766905836660, -0.685647371070665980, -0.685610973521377230, -0.685574574258061120, -0.685538173280808570, -0.685501770589710180, -0.685465366184857760, +-0.685428960066341910, -0.685392552234253550, -0.685356142688683610, -0.685319731429723580, -0.685283318457464260, -0.685246903771996710, -0.685210487373411500, -0.685174069261800360, +-0.685137649437254080, -0.685101227899863720, -0.685064804649719860, -0.685028379686914430, -0.684991953011538040, -0.684955524623681700, -0.684919094523436240, -0.684882662710893380, +-0.684846229186143800, -0.684809793949278430, -0.684773357000388880, -0.684736918339565960, -0.684700477966900700, -0.684664035882483810, -0.684627592086407330, -0.684591146578761740, +-0.684554699359638420, -0.684518250429127950, -0.684481799787322150, -0.684445347434311960, -0.684408893370188290, -0.684372437595042070, -0.684335980108965130, -0.684299520912048260, +-0.684263060004382530, -0.684226597386058840, -0.684190133057169030, -0.684153667017803780, -0.684117199268054140, -0.684080729808011820, -0.684044258637767630, -0.684007785757412830, +-0.683971311167038240, -0.683934834866735670, -0.683898356856595950, -0.683861877136710430, -0.683825395707169940, -0.683788912568066180, -0.683752427719490190, -0.683715941161533110, +-0.683679452894285890, -0.683642962917840320, -0.683606471232287350, -0.683569977837718220, -0.683533482734223760, -0.683496985921896010, -0.683460487400825770, -0.683423987171103970, +-0.683387485232822560, -0.683350981586072330, -0.683314476230944770, -0.683277969167530590, -0.683241460395921930, -0.683204949916209500, -0.683168437728484790, -0.683131923832838610, +-0.683095408229362990, -0.683058890918148750, -0.683022371899287380, -0.682985851172869700, -0.682949328738987840, -0.682912804597732510, -0.682876278749195210, -0.682839751193466960, +-0.682803221930639580, -0.682766690960804220, -0.682730158284051700, -0.682693623900474170, -0.682657087810162540, -0.682620550013208320, -0.682584010509702300, -0.682547469299736530, +-0.682510926383402160, -0.682474381760790450, -0.682437835431992430, -0.682401287397100260, -0.682364737656204760, -0.682328186209397500, -0.682291633056769320, -0.682255078198412470, +-0.682218521634417980, -0.682181963364877130, -0.682145403389881060, -0.682108841709521800, -0.682072278323890390, -0.682035713233078320, -0.681999146437176630, -0.681962577936277460, +-0.681926007730471740, -0.681889435819850730, -0.681852862204506470, -0.681816286884530110, -0.681779709860012910, -0.681743131131046230, -0.681706550697721900, -0.681669968560131290, +-0.681633384718365760, -0.681596799172516480, -0.681560211922675460, -0.681523622968933870, -0.681487032311383300, -0.681450439950114780, -0.681413845885220580, -0.681377250116791620, +-0.681340652644919720, -0.681304053469695690, -0.681267452591211910, -0.681230850009559520, -0.681194245724829670, -0.681157639737114520, -0.681121032046505310, -0.681084422653093440, +-0.681047811556970250, -0.681011198758227910, -0.680974584256957450, -0.680937968053250580, -0.680901350147198550, -0.680864730538893290, -0.680828109228426400, -0.680791486215889140, +-0.680754861501372770, -0.680718235084969650, -0.680681606966770940, -0.680644977146868340, -0.680608345625352770, -0.680571712402316730, -0.680535077477851470, -0.680498440852048030, +-0.680461802524998990, -0.680425162496795410, -0.680388520767528870, -0.680351877337290740, -0.680315232206173180, -0.680278585374267550, -0.680241936841665560, -0.680205286608458250, +-0.680168634674738200, -0.680131981040596470, -0.680095325706124850, -0.680058668671414510, -0.680022009936557930, -0.679985349501646240, -0.679948687366771170, -0.679912023532024070, +-0.679875357997497320, -0.679838690763282070, -0.679802021829470140, -0.679765351196152780, -0.679728678863422480, -0.679692004831370380, -0.679655329100087970, -0.679618651669667620, +-0.679581972540200590, -0.679545291711778580, -0.679508609184493070, -0.679471924958436340, -0.679435239033699840, -0.679398551410375200, -0.679361862088553870, -0.679325171068328240, +-0.679288478349789670, -0.679251783933029870, -0.679215087818140330, -0.679178390005213410, -0.679141690494340480, -0.679104989285613360, -0.679068286379123310, -0.679031581774963030, +-0.678994875473223680, -0.678958167473996950, -0.678921457777375000, -0.678884746383449420, -0.678848033292312030, -0.678811318504054180, -0.678774602018768380, -0.678737883836546100, +-0.678701163957479150, -0.678664442381658910, -0.678627719109177850, -0.678590994140127580, -0.678554267474599680, -0.678517539112685970, -0.678480809054478610, -0.678444077300069280, +-0.678407343849549700, -0.678370608703011470, -0.678333871860547170, -0.678297133322248060, -0.678260393088205740, -0.678223651158512910, -0.678186907533260830, -0.678150162212541540, +-0.678113415196446410, -0.678076666485068260, -0.678039916078498340, -0.678003163976828580, -0.677966410180150690, -0.677929654688557040, -0.677892897502139210, -0.677856138620989260, +-0.677819378045198540, -0.677782615774859760, -0.677745851810064410, -0.677709086150904420, -0.677672318797471360, -0.677635549749857850, -0.677598779008155570, -0.677562006572455910, +-0.677525232442851570, -0.677488456619434130, -0.677451679102295650, -0.677414899891527480, -0.677378118987222550, -0.677341336389472250, -0.677304552098368600, -0.677267766114003300, +-0.677230978436468840, -0.677194189065856930, -0.677157398002259600, -0.677120605245768450, -0.677083810796476060, -0.677047014654474260, -0.677010216819854850, -0.676973417292709550, +-0.676936616073131050, -0.676899813161210950, -0.676863008557041400, -0.676826202260713990, -0.676789394272321320, -0.676752584591955310, -0.676715773219707440, -0.676678960155670420, +-0.676642145399936060, -0.676605328952596290, -0.676568510813742920, -0.676531690983468550, -0.676494869461864990, -0.676458046249024280, -0.676421221345038130, -0.676384394749999230, +-0.676347566463999290, -0.676310736487130470, -0.676273904819484460, -0.676237071461154080, -0.676200236412231040, -0.676163399672807360, -0.676126561242974770, -0.676089721122826170, +-0.676052879312453280, -0.676016035811947910, -0.675979190621402770, -0.675942343740909560, -0.675905495170560530, -0.675868644910447510, -0.675831792960663200, -0.675794939321299300, +-0.675758083992448080, -0.675721226974201450, -0.675684368266651900, -0.675647507869891580, -0.675610645784012420, -0.675573782009106340, -0.675536916545266040, -0.675500049392583570, +-0.675463180551150840, -0.675426310021060020, -0.675389437802403680, -0.675352563895273650, -0.675315688299761960, -0.675278811015961430, -0.675241932043963770, -0.675205051383861330, +-0.675168169035745950, -0.675131284999710420, -0.675094399275846690, -0.675057511864247010, -0.675020622765003190, -0.674983731978208160, -0.674946839503953730, -0.674909945342332280, +-0.674873049493435630, -0.674836151957356690, -0.674799252734187390, -0.674762351824019890, -0.674725449226946220, -0.674688544943059300, -0.674651638972450950, -0.674614731315213540, +-0.674577821971438900, -0.674540910941220150, -0.674503998224649020, -0.674467083821817640, -0.674430167732818830, -0.674393249957744630, -0.674356330496687310, -0.674319409349738770, +-0.674282486516992070, -0.674245561998539240, -0.674208635794472430, -0.674171707904883680, -0.674134778329866010, -0.674097847069511370, -0.674060914123912220, -0.674023979493160400, +-0.673987043177348920, -0.673950105176569840, -0.673913165490915510, -0.673876224120477870, -0.673839281065350070, -0.673802336325624030, -0.673765389901391900, -0.673728441792746600, +-0.673691491999780180, -0.673654540522585000, -0.673617587361253210, -0.673580632515877740, -0.673543675986550630, -0.673506717773364460, -0.673469757876411060, -0.673432796295783560, +-0.673395833031574240, -0.673358868083875240, -0.673321901452778700, -0.673284933138377780, -0.673247963140764520, -0.673210991460031380, -0.673174018096270420, -0.673137043049574670, +-0.673100066320036380, -0.673063087907747600, -0.673026107812801480, -0.672989126035289930, -0.672952142575305670, -0.672915157432940720, -0.672878170608288250, -0.672841182101440280, +-0.672804191912489410, -0.672767200041527680, -0.672730206488648340, -0.672693211253943430, -0.672656214337505440, -0.672619215739426730, -0.672582215459800240, -0.672545213498718210, +-0.672508209856273130, -0.672471204532557150, -0.672434197527663650, -0.672397188841684530, -0.672360178474712080, -0.672323166426839650, -0.672286152698159170, -0.672249137288763340, +-0.672212120198744320, -0.672175101428195370, -0.672138080977208730, -0.672101058845876790, -0.672064035034291910, -0.672027009542547350, -0.671989982370735150, -0.671952953518948020, +-0.671915922987278200, -0.671878890775818860, -0.671841856884662360, -0.671804821313901180, -0.671767784063627580, -0.671730745133934830, -0.671693704524915390, -0.671656662236661540, +-0.671619618269265750, -0.671582572622821170, -0.671545525297420290, -0.671508476293155130, -0.671471425610119190, -0.671434373248404710, -0.671397319208104190, -0.671360263489310220, +-0.671323206092115820, -0.671286147016613380, -0.671249086262895590, -0.671212023831054720, -0.671174959721184130, -0.671137893933376200, -0.671100826467723510, -0.671063757324318440, +-0.671026686503254250, -0.670989614004623420, -0.670952539828518550, -0.670915463975031880, -0.670878386444257010, -0.670841307236286100, -0.670804226351211730, -0.670767143789126940, +-0.670730059550124440, -0.670692973634296700, -0.670655886041736200, -0.670618796772536330, -0.670581705826789440, -0.670544613204588360, -0.670507518906025330, -0.670470422931193850, +-0.670433325280186400, -0.670396225953095560, -0.670359124950013820, -0.670322022271034660, -0.670284917916250440, -0.670247811885753890, -0.670210704179637460, -0.670173594797994650, +-0.670136483740917830, -0.670099371008499480, -0.670062256600832960, -0.670025140518010880, -0.669988022760125920, -0.669950903327270590, -0.669913782219538230, -0.669876659437021570, +-0.669839534979813190, -0.669802408848005680, -0.669765281041692420, -0.669728151560965990, -0.669691020405919210, -0.669653887576644460, -0.669616753073235430, -0.669579616895784490, +-0.669542479044384460, -0.669505339519127940, -0.669468198320108400, -0.669431055447418320, -0.669393910901150630, -0.669356764681397820, -0.669319616788253470, -0.669282467221810060, +-0.669245315982160190, -0.669208163069397340, -0.669171008483613990, -0.669133852224903180, -0.669096694293357500, -0.669059534689070310, -0.669022373412134330, -0.668985210462642370, +-0.668948045840687120, -0.668910879546361970, -0.668873711579759720, -0.668836541940973190, -0.668799370630094980, -0.668762197647218670, -0.668725022992436750, -0.668687846665842360, +-0.668650668667528090, -0.668613488997587440, -0.668576307656112980, -0.668539124643197540, -0.668501939958934590, -0.668464753603416730, -0.668427565576736990, -0.668390375878988090, +-0.668353184510263490, -0.668315991470656010, -0.668278796760258480, -0.668241600379163690, -0.668204402327465250, -0.668167202605255750, -0.668130001212628220, -0.668092798149675370, +-0.668055593416490900, -0.668018387013167400, -0.667981178939797910, -0.667943969196475250, -0.667906757783292890, -0.667869544700343650, -0.667832329947720240, -0.667795113525516350, +-0.667757895433824690, -0.667720675672738300, -0.667683454242349870, -0.667646231142753120, -0.667609006374040750, -0.667571779936305900, -0.667534551829641280, -0.667497322054140700, +-0.667460090609896640, -0.667422857497002480, -0.667385622715550800, -0.667348386265635420, -0.667311148147349040, -0.667273908360784820, -0.667236666906035450, -0.667199423783194740, +-0.667162178992355530, -0.667124932533610600, -0.667087684407053570, -0.667050434612777350, -0.667013183150874990, -0.666975930021439400, -0.666938675224564290, -0.666901418760342590, +-0.666864160628867220, -0.666826900830231220, -0.666789639364528290, -0.666752376231851130, -0.666715111432293120, -0.666677844965947060, -0.666640576832906670, -0.666603307033264760, +-0.666566035567114690, -0.666528762434549170, -0.666491487635662020, -0.666454211170546260, -0.666416933039294830, -0.666379653242000880, -0.666342371778757990, -0.666305088649659320, +-0.666267803854797450, -0.666230517394266530, -0.666193229268159270, -0.666155939476568930, -0.666118648019588420, -0.666081354897311570, -0.666044060109831420, -0.666006763657240990, +-0.665969465539633430, -0.665932165757102460, -0.665894864309741210, -0.665857561197642720, -0.665820256420899930, -0.665782949979606960, -0.665745641873856540, -0.665708332103742030, +-0.665671020669356350, -0.665633707570793430, -0.665596392808146310, -0.665559076381507800, -0.665521758290971930, -0.665484438536631750, -0.665447117118580400, -0.665409794036910920, +-0.665372469291717340, -0.665335142883092480, -0.665297814811129930, -0.665260485075922390, -0.665223153677564020, -0.665185820616147730, -0.665148485891766890, -0.665111149504514550, +-0.665073811454484630, -0.665036471741770160, -0.664999130366464630, -0.664961787328660850, -0.664924442628452850, -0.664887096265933900, -0.664849748241196800, -0.664812398554335720, +-0.664775047205443560, -0.664737694194613820, -0.664700339521939520, -0.664662983187514710, -0.664625625191432420, -0.664588265533786030, -0.664550904214668670, -0.664513541234174500, +-0.664476176592396330, -0.664438810289427750, -0.664401442325361800, -0.664364072700292630, -0.664326701414313270, -0.664289328467517090, -0.664251953859997360, -0.664214577591847990, +-0.664177199663162240, -0.664139820074033490, -0.664102438824554890, -0.664065055914820460, -0.664027671344923350, -0.663990285114956840, -0.663952897225014830, -0.663915507675190590, +-0.663878116465577710, -0.663840723596269110, -0.663803329067359060, -0.663765932878940700, -0.663728535031107400, -0.663691135523952540, -0.663653734357570140, -0.663616331532053460, +-0.663578927047495880, -0.663541520903990660, -0.663504113101632040, -0.663466703640513080, -0.663429292520727350, -0.663391879742368020, -0.663354465305529440, -0.663317049210304540, +-0.663279631456786810, -0.663242212045070280, -0.663204790975248320, -0.663167368247414290, -0.663129943861661460, -0.663092517818084200, -0.663055090116775550, -0.663017660757829310, +-0.662980229741338520, -0.662942797067397450, -0.662905362736099460, -0.662867926747538030, -0.662830489101806420, -0.662793049798998890, -0.662755608839208810, -0.662718166222529660, +-0.662680721949054810, -0.662643276018878510, -0.662605828432093920, -0.662568379188794520, -0.662530928289074450, -0.662493475733027080, -0.662456021520746010, -0.662418565652324600, +-0.662381108127857000, -0.662343648947436690, -0.662306188111157270, -0.662268725619112100, -0.662231261471395330, -0.662193795668100550, -0.662156328209321130, -0.662118859095150670, +-0.662081388325683310, -0.662043915901012530, -0.662006441821232030, -0.661968966086434960, -0.661931488696715920, -0.661894009652168050, -0.661856528952885270, -0.661819046598960740, +-0.661781562590489040, -0.661744076927563320, -0.661706589610277060, -0.661669100638724750, -0.661631610012999640, -0.661594117733195540, -0.661556623799405720, -0.661519128211724760, +-0.661481630970246040, -0.661444132075063140, -0.661406631526269550, -0.661369129323959860, -0.661331625468227210, -0.661294119959165540, -0.661256612796868200, -0.661219103981429690, +-0.661181593512943480, -0.661144081391503160, -0.661106567617202430, -0.661069052190135560, -0.661031535110396030, -0.660994016378077420, -0.660956495993274000, -0.660918973956079460, +-0.660881450266587400, -0.660843924924891410, -0.660806397931085860, -0.660768869285264350, -0.660731338987520790, -0.660693807037948440, -0.660656273436641910, -0.660618738183694650, +-0.660581201279200610, -0.660543662723253270, -0.660506122515947090, -0.660468580657375570, -0.660431037147632630, -0.660393491986811740, -0.660355945175007400, -0.660318396712313290, +-0.660280846598822800, -0.660243294834630510, -0.660205741419830130, -0.660168186354515240, -0.660130629638779550, -0.660093071272717660, -0.660055511256423140, -0.660017949589989830, +-0.659980386273511300, -0.659942821307082040, -0.659905254690795860, -0.659867686424746470, -0.659830116509027560, -0.659792544943733740, -0.659754971728958470, -0.659717396864795800, +-0.659679820351339320, -0.659642242188683610, -0.659604662376922280, -0.659567080916149020, -0.659529497806458310, -0.659491913047943860, -0.659454326640699700, -0.659416738584819310, +-0.659379148880397500, -0.659341557527527770, -0.659303964526304130, -0.659266369876820300, -0.659228773579170870, -0.659191175633449420, -0.659153576039750110, -0.659115974798166530, +-0.659078371908793260, -0.659040767371724120, -0.659003161187053040, -0.658965553354873830, -0.658927943875280970, -0.658890332748368280, -0.658852719974229670, -0.658815105552959080, +-0.658777489484650980, -0.658739871769399080, -0.658702252407297300, -0.658664631398440230, -0.658627008742921460, -0.658589384440835260, -0.658551758492275210, -0.658514130897336130, +-0.658476501656111710, -0.658438870768696120, -0.658401238235182930, -0.658363604055666960, -0.658325968230242030, -0.658288330759002170, -0.658250691642041090, -0.658213050879453700, +-0.658175408471333600, -0.658137764417775050, -0.658100118718871750, -0.658062471374718520, -0.658024822385409050, -0.657987171751037160, -0.657949519471697770, -0.657911865547484490, +-0.657874209978491550, -0.657836552764812790, -0.657798893906543000, -0.657761233403776010, -0.657723571256605850, -0.657685907465126450, -0.657648242029432620, -0.657610574949618280, +-0.657572906225777350, -0.657535235858003890, -0.657497563846392690, -0.657459890191037570, -0.657422214892032670, -0.657384537949471940, -0.657346859363450280, -0.657309179134061390, +-0.657271497261399220, -0.657233813745558670, -0.657196128586633570, -0.657158441784718050, -0.657120753339906270, -0.657083063252292820, -0.657045371521971730, -0.657007678149037270, +-0.656969983133583240, -0.656932286475704560, -0.656894588175495180, -0.656856888233049330, -0.656819186648460950, -0.656781483421824960, -0.656743778553235180, -0.656706072042785970, +-0.656668363890571370, -0.656630654096686080, -0.656592942661224140, -0.656555229584279920, -0.656517514865947230, -0.656479798506321100, -0.656442080505495460, -0.656404360863564350, +-0.656366639580622580, -0.656328916656764290, -0.656291192092083750, -0.656253465886674770, -0.656215738040632490, -0.656178008554050950, -0.656140277427024300, -0.656102544659646680, +-0.656064810252013020, -0.656027074204217240, -0.655989336516353940, -0.655951597188516810, -0.655913856220801120, -0.655876113613300780, -0.655838369366110060, -0.655800623479323220, +-0.655762875953035060, -0.655725126787339740, -0.655687375982331290, -0.655649623538104740, -0.655611869454754140, -0.655574113732373840, -0.655536356371057890, -0.655498597370901440, +-0.655460836731998510, -0.655423074454443370, -0.655385310538330270, -0.655347544983754250, -0.655309777790809460, -0.655272008959590040, -0.655234238490190360, -0.655196466382705460, +-0.655158692637229370, -0.655120917253856460, -0.655083140232680990, -0.655045361573798000, -0.655007581277301630, -0.654969799343285920, -0.654932015771846120, -0.654894230563076270, +-0.654856443717070860, -0.654818655233923910, -0.654780865113730680, -0.654743073356585330, -0.654705279962582320, -0.654667484931815700, -0.654629688264380730, -0.654591889960371540, +-0.654554090019882630, -0.654516288443008240, -0.654478485229843420, -0.654440680380482310, -0.654402873895019500, -0.654365065773549250, -0.654327256016166590, -0.654289444622965900, +-0.654251631594041210, -0.654213816929487770, -0.654176000629399730, -0.654138182693871810, -0.654100363122998020, -0.654062541916873630, -0.654024719075593010, -0.653986894599250410, +-0.653949068487940430, -0.653911240741757990, -0.653873411360797460, -0.653835580345153430, -0.653797747694920160, -0.653759913410192790, -0.653722077491065590, -0.653684239937633250, +-0.653646400749990030, -0.653608559928231080, -0.653570717472450770, -0.653532873382743680, -0.653495027659203980, -0.653457180301927120, -0.653419331311007270, -0.653381480686538780, +-0.653343628428616930, -0.653305774537335960, -0.653267919012790690, -0.653230061855075150, -0.653192203064284830, -0.653154342640513970, -0.653116480583857300, -0.653078616894409160, +-0.653040751572264710, -0.653002884617518430, -0.652965016030264910, -0.652927145810598520, -0.652889273958614620, -0.652851400474407480, -0.652813525358071910, -0.652775648609702160, +-0.652737770229393610, -0.652699890217240620, -0.652662008573337560, -0.652624125297779910, -0.652586240390661930, -0.652548353852078210, -0.652510465682123450, -0.652472575880892800, +-0.652434684448480630, -0.652396791384981860, -0.652358896690490740, -0.652321000365102650, -0.652283102408912070, -0.652245202822013810, -0.652207301604502130, -0.652169398756472620, +-0.652131494278019530, -0.652093588169237790, -0.652055680430221660, -0.652017771061066730, -0.651979860061867370, -0.651941947432717940, -0.651904033173714040, -0.651866117284950140, +-0.651828199766520840, -0.651790280618520730, -0.651752359841045180, -0.651714437434188890, -0.651676513398046330, -0.651638587732712220, -0.651600660438282020, -0.651562731514850220, +-0.651524800962511420, -0.651486868781360420, -0.651448934971492590, -0.651410999533002300, -0.651373062465984590, -0.651335123770533930, -0.651297183446745700, -0.651259241494714590, +-0.651221297914535420, -0.651183352706302570, -0.651145405870111720, -0.651107457406057350, -0.651069507314233960, -0.651031555594737130, -0.650993602247661450, -0.650955647273101850, +-0.650917690671152680, -0.650879732441909660, -0.650841772585467270, -0.650803811101920540, -0.650765847991363830, -0.650727883253892860, -0.650689916889602200, -0.650651948898586800, +-0.650613979280941110, -0.650576008036760970, -0.650538035166140620, -0.650500060669175320, -0.650462084545959440, -0.650424106796588690, -0.650386127421157760, -0.650348146419761020, +-0.650310163792494400, -0.650272179539452270, -0.650234193660729760, -0.650196206156421370, -0.650158217026622910, -0.650120226271428850, -0.650082233890934110, -0.650044239885233630, +-0.650006244254422770, -0.649968246998596340, -0.649930248117849270, -0.649892247612276260, -0.649854245481973010, -0.649816241727034120, -0.649778236347554610, -0.649740229343629180, +-0.649702220715353440, -0.649664210462822190, -0.649626198586130130, -0.649588185085372860, -0.649550169960645190, -0.649512153212042030, -0.649474134839658210, -0.649436114843589430, +-0.649398093223930270, -0.649360069980775890, -0.649322045114220980, -0.649284018624361360, -0.649245990511291620, -0.649207960775106900, -0.649169929415902010, -0.649131896433772560, +-0.649093861828813460, -0.649055825601119630, -0.649017787750786000, -0.648979748277908160, -0.648941707182580930, -0.648903664464899110, -0.648865620124958520, -0.648827574162853860, +-0.648789526578680160, -0.648751477372532470, -0.648713426544506260, -0.648675374094696670, -0.648637320023198520, -0.648599264330106730, -0.648561207015517120, -0.648523148079524490, +-0.648485087522224110, -0.648447025343710570, -0.648408961544079790, -0.648370896123426580, -0.648332829081846200, -0.648294760419433460, -0.648256690136284060, -0.648218618232492940, +-0.648180544708155340, -0.648142469563365960, -0.648104392798220740, -0.648066314412814590, -0.648028234407242330, -0.647990152781599770, -0.647952069535981940, -0.647913984670483780, +-0.647875898185200420, -0.647837810080227670, -0.647799720355660360, -0.647761629011593730, -0.647723536048122720, -0.647685441465343130, -0.647647345263349990, -0.647609247442238580, +-0.647571148002103580, -0.647533046943041150, -0.647494944265145980, -0.647456839968513550, -0.647418734053238690, -0.647380626519417300, -0.647342517367144320, -0.647304406596514670, +-0.647266294207624380, -0.647228180200568380, -0.647190064575441930, -0.647151947332340050, -0.647113828471358570, -0.647075707992592510, -0.647037585896137140, -0.646999462182087480, +-0.646961336850539580, -0.646923209901588250, -0.646885081335328960, -0.646846951151856640, -0.646808819351267220, -0.646770685933655830, -0.646732550899117630, -0.646694414247747760, +-0.646656275979642260, -0.646618136094895930, -0.646579994593604050, -0.646541851475862410, -0.646503706741766270, -0.646465560391410790, -0.646427412424890990, -0.646389262842303140, +-0.646351111643742040, -0.646312958829303290, -0.646274804399081690, -0.646236648353173400, -0.646198490691673570, -0.646160331414677440, -0.646122170522280160, -0.646084008014577770, +-0.646045843891665420, -0.646007678153638460, -0.645969510800591950, -0.645931341832622020, -0.645893171249823710, -0.645854999052292490, -0.645816825240123400, -0.645778649813412600, +-0.645740472772255210, -0.645702294116746290, -0.645664113846981860, -0.645625931963057290, -0.645587748465067830, -0.645549563353108650, -0.645511376627275980, -0.645473188287664760, +-0.645434998334370680, -0.645396806767488670, -0.645358613587114990, -0.645320418793344790, -0.645282222386273640, -0.645244024365996480, -0.645205824732609680, -0.645167623486208260, +-0.645129420626887720, -0.645091216154743410, -0.645053010069871370, -0.645014802372366750, -0.644976593062324800, -0.644938382139841780, -0.644900169605012730, -0.644861955457933230, +-0.644823739698698550, -0.644785522327404940, -0.644747303344147430, -0.644709082749021610, -0.644670860542122860, -0.644632636723547310, -0.644594411293390010, -0.644556184251746880, +-0.644517955598712830, -0.644479725334384250, -0.644441493458856370, -0.644403259972224700, -0.644365024874584580, -0.644326788166032280, -0.644288549846662950, -0.644250309916571950, +-0.644212068375855430, -0.644173825224608860, -0.644135580462927630, -0.644097334090907190, -0.644059086108643710, -0.644020836516232540, -0.643982585313769280, -0.643944332501349190, +-0.643906078079068630, -0.643867822047022860, -0.643829564405307480, -0.643791305154017950, -0.643753044293250420, -0.643714781823100380, -0.643676517743663300, -0.643638252055034550, +-0.643599984757310620, -0.643561715850586640, -0.643523445334958090, -0.643485173210521230, -0.643446899477371440, -0.643408624135604400, -0.643370347185315490, -0.643332068626601080, +-0.643293788459556430, -0.643255506684277330, -0.643217223300859060, -0.643178938309398210, -0.643140651709989910, -0.643102363502729980, -0.643064073687713900, -0.643025782265037930, +-0.642987489234797430, -0.642949194597088320, -0.642910898352005770, -0.642872600499646450, -0.642834301040105530, -0.642795999973478800, -0.642757697299861870, -0.642719393019350990, +-0.642681087132041640, -0.642642779638029180, -0.642604470537410100, -0.642566159830279870, -0.642527847516734310, -0.642489533596868670, -0.642451218070779650, -0.642412900938562510, +-0.642374582200313180, -0.642336261856127020, -0.642297939906100510, -0.642259616350329130, -0.642221291188908800, -0.642182964421934900, -0.642144636049503890, -0.642106306071711260, +-0.642067974488652940, -0.642029641300424280, -0.641991306507121880, -0.641952970108841230, -0.641914632105677780, -0.641876292497728150, -0.641837951285087690, -0.641799608467852440, +-0.641761264046117770, -0.641722918019980380, -0.641684570389535640, -0.641646221154879460, -0.641607870316107330, -0.641569517873315950, -0.641531163826600690, -0.641492808176057580, +-0.641454450921782100, -0.641416092063870850, -0.641377731602419400, -0.641339369537523570, -0.641301005869278960, -0.641262640597782260, -0.641224273723128960, -0.641185905245414520, +-0.641147535164735770, -0.641109163481188070, -0.641070790194867570, -0.641032415305869630, -0.640994038814291070, -0.640955660720227470, -0.640917281023774650, -0.640878899725028320, +-0.640840516824085050, -0.640802132321040440, -0.640763746215990640, -0.640725358509031010, -0.640686969200258360, -0.640648578289768290, -0.640610185777656830, -0.640571791664019450, +-0.640533395948952980, -0.640494998632553100, -0.640456599714915640, -0.640418199196136410, -0.640379797076311870, -0.640341393355537970, -0.640302988033910280, -0.640264581111525400, +-0.640226172588479030, -0.640187762464867300, -0.640149350740785720, -0.640110937416331180, -0.640072522491599290, -0.640034105966686080, -0.639995687841687260, -0.639957268116699620, +-0.639918846791818760, -0.639880423867140840, -0.639841999342761420, -0.639803573218777450, -0.639765145495284400, -0.639726716172378640, -0.639688285250155640, -0.639649852728712330, +-0.639611418608144410, -0.639572982888547580, -0.639534545570018540, -0.639496106652653330, -0.639457666136547640, -0.639419224021797630, -0.639380780308499760, -0.639342334996749970, +-0.639303888086644400, -0.639265439578278750, -0.639226989471749830, -0.639188537767153450, -0.639150084464585650, -0.639111629564142470, -0.639073173065920370, -0.639034714970015410, +-0.638996255276523710, -0.638957793985540980, -0.638919331097164140, -0.638880866611488910, -0.638842400528611190, -0.638803932848627910, -0.638765463571634660, -0.638726992697727810, +-0.638688520227003180, -0.638650046159557560, -0.638611570495486780, -0.638573093234887090, -0.638534614377854410, -0.638496133924485450, -0.638457651874876130, -0.638419168229122810, +-0.638380682987321090, -0.638342196149568110, -0.638303707715959570, -0.638265217686591720, -0.638226726061560610, -0.638188232840962930, -0.638149738024894720, -0.638111241613451790, +-0.638072743606731160, -0.638034244004828550, -0.637995742807840440, -0.637957240015862630, -0.637918735628992040, -0.637880229647324490, -0.637841722070956570, -0.637803212899983870, +-0.637764702134503540, -0.637726189774611370, -0.637687675820403870, -0.637649160271976710, -0.637610643129427060, -0.637572124392850830, -0.637533604062344160, -0.637495082138003210, +-0.637456558619924900, -0.637418033508205250, -0.637379506802940420, -0.637340978504226550, -0.637302448612160570, -0.637263917126838500, -0.637225384048356160, -0.637186849376810800, +-0.637148313112298360, -0.637109775254915080, -0.637071235804757000, -0.637032694761921260, -0.636994152126503680, -0.636955607898600730, -0.636917062078308450, -0.636878514665723870, +-0.636839965660943030, -0.636801415064062180, -0.636762862875177580, -0.636724309094386040, -0.636685753721783820, -0.636647196757467170, -0.636608638201532130, -0.636570078054075950, +-0.636531516315194560, -0.636492952984983980, -0.636454388063541380, -0.636415821550962770, -0.636377253447344640, -0.636338683752783130, -0.636300112467375170, -0.636261539591216900, +-0.636222965124404790, -0.636184389067034890, -0.636145811419204450, -0.636107232181009510, -0.636068651352546420, -0.636030068933911340, -0.635991484925201410, -0.635952899326512890, +-0.635914312137942030, -0.635875723359584980, -0.635837132991539100, -0.635798541033900320, -0.635759947486764900, -0.635721352350229860, -0.635682755624391470, -0.635644157309346200, +-0.635605557405190200, -0.635566955912020730, -0.635528352829933810, -0.635489748159025920, -0.635451141899393450, -0.635412534051133400, -0.635373924614342060, -0.635335313589115880, +-0.635296700975551020, -0.635258086773744850, -0.635219470983793390, -0.635180853605793240, -0.635142234639840650, -0.635103614086032890, -0.635064991944465970, -0.635026368215236610, +-0.634987742898441070, -0.634949115994176360, -0.634910487502538980, -0.634871857423625060, -0.634833225757531760, -0.634794592504355440, -0.634755957664192570, -0.634717321237139530, +-0.634678683223293460, -0.634640043622750840, -0.634601402435607920, -0.634562759661961300, -0.634524115301908000, -0.634485469355544510, -0.634446821822967300, -0.634408172704272740, +-0.634369521999557980, -0.634330869708919500, -0.634292215832453880, -0.634253560370257260, -0.634214903322427250, -0.634176244689059860, -0.634137584470251590, -0.634098922666099570, +-0.634060259276700400, -0.634021594302150440, -0.633982927742546280, -0.633944259597985060, -0.633905589868563270, -0.633866918554377380, -0.633828245655523980, -0.633789571172100220, +-0.633750895104202570, -0.633712217451927740, -0.633673538215371870, -0.633634857394632660, -0.633596174989806250, -0.633557491000989350, -0.633518805428278430, -0.633480118271770860, +-0.633441429531562910, -0.633402739207751140, -0.633364047300432830, -0.633325353809704340, -0.633286658735662590, -0.633247962078403730, -0.633209263838025340, -0.633170564014623900, +-0.633131862608295900, -0.633093159619138040, -0.633054455047247440, -0.633015748892720830, -0.632977041155654900, -0.632938331836145900, -0.632899620934291420, -0.632860908450187940, +-0.632822194383932280, -0.632783478735620690, -0.632744761505350750, -0.632706042693218840, -0.632667322299321540, -0.632628600323756340, -0.632589876766619600, -0.632551151628008120, +-0.632512424908018400, -0.632473696606748010, -0.632434966724293450, -0.632396235260751390, -0.632357502216218450, -0.632318767590791970, -0.632280031384568670, -0.632241293597645360, +-0.632202554230118400, -0.632163813282085370, -0.632125070753642880, -0.632086326644887620, -0.632047580955916290, -0.632008833686826250, -0.631970084837714220, -0.631931334408676880, +-0.631892582399810940, -0.631853828811213880, -0.631815073642982280, -0.631776316895212630, -0.631737558568002510, -0.631698798661448510, -0.631660037175647450, -0.631621274110696020, +-0.631582509466691700, -0.631543743243731190, -0.631504975441911200, -0.631466206061328530, -0.631427435102080660, -0.631388662564264180, -0.631349888447976130, -0.631311112753312980, +-0.631272335480372320, -0.631233556629250850, -0.631194776200045490, -0.631155994192852840, -0.631117210607770600, -0.631078425444895340, -0.631039638704323560, -0.631000850386153170, +-0.630962060490480540, -0.630923269017402810, -0.630884475967016580, -0.630845681339419540, -0.630806885134708170, -0.630768087352979730, -0.630729287994330590, -0.630690487058858660, +-0.630651684546660540, -0.630612880457833150, -0.630574074792473180, -0.630535267550678460, -0.630496458732545560, -0.630457648338171420, -0.630418836367652840, -0.630380022821087630, +-0.630341207698572270, -0.630302391000203580, -0.630263572726079250, -0.630224752876295870, -0.630185931450950810, -0.630147108450140440, -0.630108283873962670, -0.630069457722514210, +-0.630030629995892100, -0.629991800694193140, -0.629952969817514920, -0.629914137365954250, -0.629875303339608280, -0.629836467738573820, -0.629797630562948350, -0.629758791812828900, +-0.629719951488312500, -0.629681109589495860, -0.629642266116476780, -0.629603421069352080, -0.629564574448218670, -0.629525726253173600, -0.629486876484314560, -0.629448025141738370, +-0.629409172225541710, -0.629370317735822420, -0.629331461672677390, -0.629292604036203680, -0.629253744826498210, -0.629214884043658660, -0.629176021687781860, -0.629137157758965060, +-0.629098292257304960, -0.629059425182899590, -0.629020556535845540, -0.628981686316240070, -0.628942814524180220, -0.628903941159763560, -0.628865066223087020, -0.628826189714247860, +-0.628787311633342890, -0.628748431980469920, -0.628709550755725880, -0.628670667959207670, -0.628631783591013130, -0.628592897651239160, -0.628554010139982910, -0.628515121057341310, +-0.628476230403412270, -0.628437338178292610, -0.628398444382079590, -0.628359549014870120, -0.628320652076762130, -0.628281753567852540, -0.628242853488238500, -0.628203951838017030, +-0.628165048617286060, -0.628126143826142400, -0.628087237464683420, -0.628048329533006040, -0.628009420031208080, -0.627970508959386660, -0.627931596317638620, -0.627892682106061860, +-0.627853766324753430, -0.627814848973810570, -0.627775930053330320, -0.627737009563410500, -0.627698087504148240, -0.627659163875640690, -0.627620238677984890, -0.627581311911278860, +-0.627542383575619530, -0.627503453671104270, -0.627464522197830110, -0.627425589155894860, -0.627386654545395660, -0.627347718366429890, -0.627308780619094340, -0.627269841303487290, +-0.627230900419705640, -0.627191957967846440, -0.627153013948007600, -0.627114068360286270, -0.627075121204779710, -0.627036172481585050, -0.626997222190800340, -0.626958270332522490, +-0.626919316906848990, -0.626880361913876860, -0.626841405353704250, -0.626802447226428080, -0.626763487532145720, -0.626724526270954320, -0.626685563442952010, -0.626646599048235720, +-0.626607633086903040, -0.626568665559050890, -0.626529696464777300, -0.626490725804179640, -0.626451753577355050, -0.626412779784400800, -0.626373804425414900, -0.626334827500494520, +-0.626295849009736670, -0.626256868953239620, -0.626217887331100400, -0.626178904143416370, -0.626139919390284790, -0.626100933071803810, -0.626061945188070460, -0.626022955739182210, +-0.625983964725236210, -0.625944972146330710, -0.625905978002562760, -0.625866982294029820, -0.625827985020829150, -0.625788986183058780, -0.625749985780816090, -0.625710983814198320, +-0.625671980283302730, -0.625632975188227580, -0.625593968529070010, -0.625554960305927170, -0.625515950518897190, -0.625476939168077450, -0.625437926253565310, -0.625398911775458030, +-0.625359895733853750, -0.625320878128849730, -0.625281858960543560, -0.625242838229032480, -0.625203815934414540, -0.625164792076787100, -0.625125766656247640, -0.625086739672893410, +-0.625047711126822780, -0.625008681018132780, -0.624969649346921120, -0.624930616113284930, -0.624891581317322590, -0.624852544959131340, -0.624813507038808340, -0.624774467556451940, +-0.624735426512159300, -0.624696383906028220, -0.624657339738155740, -0.624618294008640220, -0.624579246717579030, -0.624540197865069760, -0.624501147451209550, -0.624462095476096880, +-0.624423041939829000, -0.624383986842503510, -0.624344930184217660, -0.624305871965069810, -0.624266812185157340, -0.624227750844577820, -0.624188687943428630, -0.624149623481807910, +-0.624110557459813250, -0.624071489877542240, -0.624032420735092020, -0.623993350032561180, -0.623954277770046970, -0.623915203947646770, -0.623876128565458820, -0.623837051623580610, +-0.623797973122109720, -0.623758893061143520, -0.623719811440780480, -0.623680728261117980, -0.623641643522253600, -0.623602557224284700, -0.623563469367309780, -0.623524379951426290, +-0.623485288976731720, -0.623446196443323660, -0.623407102351300480, -0.623368006700759420, -0.623328909491798420, -0.623289810724514840, -0.623250710399007040, -0.623211608515372490, +-0.623172505073708580, -0.623133400074113660, -0.623094293516685330, -0.623055185401521270, -0.623016075728718870, -0.622976964498376580, -0.622937851710591910, -0.622898737365462640, +-0.622859621463086150, -0.622820504003561040, -0.622781384986984540, -0.622742264413454700, -0.622703142283068780, -0.622664018595925350, -0.622624893352121900, -0.622585766551756240, +-0.622546638194925730, -0.622507508281729070, -0.622468376812263640, -0.622429243786626780, -0.622390109204917330, -0.622350973067232530, -0.622311835373670300, -0.622272696124328120, +-0.622233555319304580, -0.622194412958697150, -0.622155269042603650, -0.622116123571121670, -0.622076976544349680, -0.622037827962385270, -0.621998677825326250, -0.621959526133270320, +-0.621920372886315740, -0.621881218084560430, -0.621842061728101970, -0.621802903817037960, -0.621763744351467080, -0.621724583331486840, -0.621685420757194800, -0.621646256628689550, +-0.621607090946068700, -0.621567923709430150, -0.621528754918871380, -0.621489584574490990, -0.621450412676386790, -0.621411239224656460, -0.621372064219397720, -0.621332887660709150, +-0.621293709548688340, -0.621254529883433330, -0.621215348665041580, -0.621176165893611910, -0.621136981569241690, -0.621097795692029160, -0.621058608262071710, -0.621019419279468020, +-0.620980228744315910, -0.620941036656713190, -0.620901843016757440, -0.620862647824547590, -0.620823451080181000, -0.620784252783755490, -0.620745052935369630, -0.620705851535121140, +-0.620666648583108050, -0.620627444079428050, -0.620588238024179730, -0.620549030417460790, -0.620509821259369380, -0.620470610550002970, -0.620431398289460480, -0.620392184477839390, +-0.620352969115237850, -0.620313752201753550, -0.620274533737485310, -0.620235313722530600, -0.620196092156987680, -0.620156869040954130, -0.620117644374528880, -0.620078418157809400, +-0.620039190390893500, -0.619999961073880110, -0.619960730206866710, -0.619921497789951540, -0.619882263823232190, -0.619843028306807600, -0.619803791240775450, -0.619764552625233780, +-0.619725312460280400, -0.619686070746014120, -0.619646827482532640, -0.619607582669934100, -0.619568336308316200, -0.619529088397777870, -0.619489838938416800, -0.619450587930331140, +-0.619411335373618700, -0.619372081268378170, -0.619332825614707480, -0.619293568412704440, -0.619254309662467750, -0.619215049364095330, -0.619175787517685210, -0.619136524123335420, +-0.619097259181144550, -0.619057992691210530, -0.619018724653631610, -0.618979455068505490, -0.618940183935931090, -0.618900911256006210, -0.618861637028829010, -0.618822361254497410, +-0.618783083933110320, -0.618743805064765450, -0.618704524649561050, -0.618665242687595040, -0.618625959178966230, -0.618586674123772550, -0.618547387522112140, -0.618508099374083020, +-0.618468809679783900, -0.618429518439312820, -0.618390225652767580, -0.618350931320247100, -0.618311635441849190, -0.618272338017672340, -0.618233039047814240, -0.618193738532373920, +-0.618154436471449300, -0.618115132865138530, -0.618075827713539530, -0.618036521016751440, -0.617997212774871960, -0.617957902987999460, -0.617918591656231860, -0.617879278779668080, +-0.617839964358406160, -0.617800648392544340, -0.617761330882180550, -0.617722011827413710, -0.617682691228341850, -0.617643369085063010, -0.617604045397675990, -0.617564720166278950, +-0.617525393390970010, -0.617486065071847330, -0.617446735209009830, -0.617407403802555430, -0.617368070852582610, -0.617328736359189170, -0.617289400322474260, -0.617250062742535910, +-0.617210723619472380, -0.617171382953381590, -0.617132040744362790, -0.617092696992513900, -0.617053351697933180, -0.617014004860718890, -0.616974656480969830, -0.616935306558784150, +-0.616895955094259760, -0.616856602087495930, -0.616817247538590570, -0.616777891447642170, -0.616738533814748520, -0.616699174640009010, -0.616659813923521540, -0.616620451665384590, +-0.616581087865696100, -0.616541722524555300, -0.616502355642060130, -0.616462987218309060, -0.616423617253400220, -0.616384245747432670, -0.616344872700504420, -0.616305498112714070, +-0.616266121984159640, -0.616226744314940290, -0.616187365105154040, -0.616147984354899370, -0.616108602064274310, -0.616069218233378240, -0.616029832862309060, -0.615990445951164920, +-0.615951057500044970, -0.615911667509047470, -0.615872275978270770, -0.615832882907813130, -0.615793488297773470, -0.615754092148250170, -0.615714694459341680, -0.615675295231146060, +-0.615635894463762550, -0.615596492157289290, -0.615557088311824760, -0.615517682927467220, -0.615478276004315820, -0.615438867542468680, -0.615399457542024520, -0.615360046003081250, +-0.615320632925738130, -0.615281218310093530, -0.615241802156245580, -0.615202384464293430, -0.615162965234335330, -0.615123544466469770, -0.615084122160795000, -0.615044698317410380, +-0.615005272936413940, -0.614965846017904270, -0.614926417561979740, -0.614886987568739380, -0.614847556038281670, -0.614808122970704970, -0.614768688366107760, -0.614729252224589070, +-0.614689814546247270, -0.614650375331180940, -0.614610934579488340, -0.614571492291268730, -0.614532048466620350, -0.614492603105641580, -0.614453156208431550, -0.614413707775088750, +-0.614374257805711640, -0.614334806300398490, -0.614295353259248670, -0.614255898682360520, -0.614216442569832650, -0.614176984921763310, -0.614137525738251750, -0.614098065019396460, +-0.614058602765296000, -0.614019138976048760, -0.613979673651753880, -0.613940206792509930, -0.613900738398415410, -0.613861268469568680, -0.613821797006069200, -0.613782324008015130, +-0.613742849475504950, -0.613703373408638010, -0.613663895807512570, -0.613624416672227450, -0.613584936002881000, -0.613545453799572480, -0.613505970062400370, -0.613466484791463260, +-0.613426997986859620, -0.613387509648688820, -0.613348019777049340, -0.613308528372039750, -0.613269035433758440, -0.613229540962304980, -0.613190044957777620, -0.613150547420275080, +-0.613111048349895940, -0.613071547746739440, -0.613032045610904190, -0.612992541942488760, -0.612953036741591520, -0.612913530008312170, -0.612874021742748960, -0.612834511945000380, +-0.612795000615165790, -0.612755487753343760, -0.612715973359633010, -0.612676457434131900, -0.612636939976940130, -0.612597420988155950, -0.612557900467878170, -0.612518378416205380, +-0.612478854833236940, -0.612439329719071330, -0.612399803073807370, -0.612360274897543630, -0.612320745190379600, -0.612281213952413640, -0.612241681183744670, -0.612202146884471050, +-0.612162611054692500, -0.612123073694507470, -0.612083534804014340, -0.612043994383312700, -0.612004452432501120, -0.611964908951678320, -0.611925363940942990, -0.611885817400394600, +-0.611846269330131640, -0.611806719730253020, -0.611767168600857230, -0.611727615942043950, -0.611688061753911550, -0.611648506036558960, -0.611608948790084870, -0.611569390014588650, +-0.611529829710169000, -0.611490267876924840, -0.611450704514954540, -0.611411139624357890, -0.611371573205233390, -0.611332005257679610, -0.611292435781796150, -0.611252864777681590, +-0.611213292245434970, -0.611173718185154650, -0.611134142596940430, -0.611094565480890810, -0.611054986837104910, -0.611015406665681100, -0.610975824966719090, -0.610936241740317580, +-0.610896656986575360, -0.610857070705591250, -0.610817482897464850, -0.610777893562294620, -0.610738302700179700, -0.610698710311218700, -0.610659116395511290, -0.610619520953156080, +-0.610579923984252090, -0.610540325488897920, -0.610500725467193250, -0.610461123919236790, -0.610421520845127130, -0.610381916244964070, -0.610342310118846210, -0.610302702466872570, +-0.610263093289141860, -0.610223482585753650, -0.610183870356806880, -0.610144256602400350, -0.610104641322632870, -0.610065024517604030, -0.610025406187412740, -0.609985786332157940, +-0.609946164951938320, -0.609906542046853570, -0.609866917617002510, -0.609827291662484170, -0.609787664183397250, -0.609748035179841440, -0.609708404651915670, -0.609668772599718410, +-0.609629139023349700, -0.609589503922908120, -0.609549867298492700, -0.609510229150202250, -0.609470589478136700, -0.609430948282394520, -0.609391305563075080, -0.609351661320277070, +-0.609312015554100080, -0.609272368264643260, -0.609232719452005410, -0.609193069116285350, -0.609153417257583100, -0.609113763875997250, -0.609074108971626950, -0.609034452544571110, +-0.608994794594929440, -0.608955135122800750, -0.608915474128283950, -0.608875811611478750, -0.608836147572484050, -0.608796482011398910, -0.608756814928322340, -0.608717146323354050, +-0.608677476196592850, -0.608637804548137980, -0.608598131378088270, -0.608558456686543510, -0.608518780473602640, -0.608479102739364900, -0.608439423483928990, -0.608399742707394830, +-0.608360060409861350, -0.608320376591427790, -0.608280691252192860, -0.608241004392256590, -0.608201316011717790, -0.608161626110675260, -0.608121934689229150, -0.608082241747478160, +-0.608042547285521540, -0.608002851303458210, -0.607963153801388100, -0.607923454779410120, -0.607883754237623530, -0.607844052176127140, -0.607804348595021080, -0.607764643494404070, +-0.607724936874375450, -0.607685228735034170, -0.607645519076480120, -0.607605807898812240, -0.607566095202130010, -0.607526380986532000, -0.607486665252118470, -0.607446947998988350, +-0.607407229227240770, -0.607367508936974780, -0.607327787128290390, -0.607288063801286530, -0.607248338956062120, -0.607208612592717190, -0.607168884711350780, -0.607129155312062130, +-0.607089424394950280, -0.607049691960115270, -0.607009958007655890, -0.606970222537671740, -0.606930485550261630, -0.606890747045525700, -0.606851007023562870, -0.606811265484472510, +-0.606771522428353640, -0.606731777855306300, -0.606692031765429520, -0.606652284158822660, -0.606612535035584770, -0.606572784395815860, -0.606533032239615080, -0.606493278567081240, +-0.606453523378314600, -0.606413766673414180, -0.606374008452479350, -0.606334248715609150, -0.606294487462903600, -0.606254724694461840, -0.606214960410383360, -0.606175194610767080, +-0.606135427295713240, -0.606095658465320760, -0.606055888119689130, -0.606016116258917380, -0.605976342883105760, -0.605936567992353290, -0.605896791586759350, -0.605857013666423080, +-0.605817234231444730, -0.605777453281923120, -0.605737670817957710, -0.605697886839648310, -0.605658101347094300, -0.605618314340395040, -0.605578525819649550, -0.605538735784958200, +-0.605498944236420030, -0.605459151174134400, -0.605419356598200560, -0.605379560508718770, -0.605339762905787950, -0.605299963789507790, -0.605260163159977330, -0.605220361017296930, +-0.605180557361565510, -0.605140752192882770, -0.605100945511347740, -0.605061137317060680, -0.605021327610120840, -0.604981516390627690, -0.604941703658680390, -0.604901889414379060, +-0.604862073657823180, -0.604822256389111690, -0.604782437608344830, -0.604742617315621960, -0.604702795511042560, -0.604662972194705770, -0.604623147366711970, -0.604583321027160280, +-0.604543493176150300, -0.604503663813781180, -0.604463832940153270, -0.604424000555365830, -0.604384166659518330, -0.604344331252710030, -0.604304494335041410, -0.604264655906611380, +-0.604224815967519760, -0.604184974517865790, -0.604145131557749740, -0.604105287087270850, -0.604065441106528380, -0.604025593615622690, -0.603985744614652930, -0.603945894103718910, +-0.603906042082919760, -0.603866188552355740, -0.603826333512126450, -0.603786476962331230, -0.603746618903069470, -0.603706759334441510, -0.603666898256546620, -0.603627035669484500, +-0.603587171573354510, -0.603547305968256900, -0.603507438854291030, -0.603467570231556620, -0.603427700100152790, -0.603387828460180130, -0.603347955311737900, -0.603308080654925470, +-0.603268204489843200, -0.603228326816590330, -0.603188447635266690, -0.603148566945971630, -0.603108684748805410, -0.603068801043867510, -0.603028915831257620, -0.602989029111075100, +-0.602949140883420330, -0.602909251148392780, -0.602869359906092030, -0.602829467156617560, -0.602789572900069740, -0.602749677136548030, -0.602709779866152150, -0.602669881088981450, +-0.602629980805136300, -0.602590079014716280, -0.602550175717820770, -0.602510270914550120, -0.602470364605003810, -0.602430456789281530, -0.602390547467482770, -0.602350636639708000, +-0.602310724306056700, -0.602270810466628450, -0.602230895121522950, -0.602190978270840560, -0.602151059914680650, -0.602111140053143150, -0.602071218686327400, -0.602031295814334010, +-0.601991371437262330, -0.601951445555212290, -0.601911518168283250, -0.601871589276575800, -0.601831658880189300, -0.601791726979223670, -0.601751793573778390, -0.601711858663954050, +-0.601671922249849890, -0.601631984331565730, -0.601592044909201930, -0.601552103982857970, -0.601512161552633760, -0.601472217618628790, -0.601432272180943640, -0.601392325239677890, +-0.601352376794931250, -0.601312426846803310, -0.601272475395394630, -0.601232522440804830, -0.601192567983133700, -0.601152612022480830, -0.601112654558946690, -0.601072695592630990, +-0.601032735123633530, -0.600992773152053910, -0.600952809677992580, -0.600912844701549380, -0.600872878222823650, -0.600832910241916100, -0.600792940758926310, -0.600752969773954090, +-0.600712997287099150, -0.600673023298462060, -0.600633047808142310, -0.600593070816240030, -0.600553092322854810, -0.600513112328087020, -0.600473130832036570, -0.600433147834803280, +-0.600393163336486730, -0.600353177337187740, -0.600313189837005660, -0.600273200836040740, -0.600233210334392360, -0.600193218332161330, -0.600153224829447220, -0.600113229826349740, +-0.600073233322969580, -0.600033235319406330, -0.599993235815759920, -0.599953234812130140, -0.599913232308617590, -0.599873228305321970, -0.599833222802343300, -0.599793215799781180, +-0.599753207297736290, -0.599713197296308560, -0.599673185795597700, -0.599633172795703610, -0.599593158296726880, -0.599553142298767330, -0.599513124801924870, -0.599473105806299200, +-0.599433085311991240, -0.599393063319100470, -0.599353039827727030, -0.599313014837970730, -0.599272988349932150, -0.599232960363711210, -0.599192930879407390, -0.599152899897121730, +-0.599112867416953690, -0.599072833439003530, -0.599032797963370940, -0.598992760990156750, -0.598952722519460630, -0.598912682551382640, -0.598872641086022670, -0.598832598123481440, +-0.598792553663858750, -0.598752507707254630, -0.598712460253768790, -0.598672411303502350, -0.598632360856554690, -0.598592308913026280, -0.598552255473016710, -0.598512200536626790, +-0.598472144103956440, -0.598432086175105350, -0.598392026750174330, -0.598351965829263310, -0.598311903412472420, -0.598271839499901370, -0.598231774091651070, -0.598191707187821330, +-0.598151638788512300, -0.598111568893823890, -0.598071497503856800, -0.598031424618711060, -0.597991350238486710, -0.597951274363283660, -0.597911196993202830, -0.597871118128343930, +-0.597831037768807310, -0.597790955914692670, -0.597750872566101040, -0.597710787723132130, -0.597670701385885960, -0.597630613554463450, -0.597590524228964410, -0.597550433409488990, +-0.597510341096137100, -0.597470247289009770, -0.597430151988206810, -0.597390055193828480, -0.597349956905974700, -0.597309857124746270, -0.597269755850243330, -0.597229653082565930, +-0.597189548821814080, -0.597149443068088590, -0.597109335821489620, -0.597069227082117290, -0.597029116850071540, -0.596989005125453280, -0.596948891908362530, -0.596908777198899230, +-0.596868660997164400, -0.596828543303257850, -0.596788424117279950, -0.596748303439330610, -0.596708181269510970, -0.596668057607920740, -0.596627932454660390, -0.596587805809829950, +-0.596547677673530230, -0.596507548045861480, -0.596467416926923730, -0.596427284316817020, -0.596387150215642590, -0.596347014623500260, -0.596306877540490390, -0.596266738966712890, +-0.596226598902269030, -0.596186457347258610, -0.596146314301782000, -0.596106169765939330, -0.596066023739831530, -0.596025876223558740, -0.595985727217220760, -0.595945576720918970, +-0.595905424734753160, -0.595865271258823830, -0.595825116293230980, -0.595784959838075670, -0.595744801893457910, -0.595704642459478180, -0.595664481536236520, -0.595624319123833960, +-0.595584155222370630, -0.595543989831947010, -0.595503822952662910, -0.595463654584619690, -0.595423484727917280, -0.595383313382656150, -0.595343140548936440, -0.595302966226859190, +-0.595262790416524630, -0.595222613118032600, -0.595182434331484430, -0.595142254056980180, -0.595102072294620310, -0.595061889044504970, -0.595021704306735180, -0.594981518081411090, +-0.594941330368633280, -0.594901141168501790, -0.594860950481117760, -0.594820758306581430, -0.594780564644993180, -0.594740369496453040, -0.594700172861062470, -0.594659974738921400, +-0.594619775130130420, -0.594579574034789670, -0.594539371453000290, -0.594499167384862530, -0.594458961830476530, -0.594418754789943330, -0.594378546263363390, -0.594338336250836980, +-0.594298124752464460, -0.594257911768346970, -0.594217697298584650, -0.594177481343278190, -0.594137263902527520, -0.594097044976434230, -0.594056824565098120, -0.594016602668620110, +-0.593976379287100120, -0.593936154420639630, -0.593895928069338770, -0.593855700233298030, -0.593815470912617660, -0.593775240107399020, -0.593735007817742240, -0.593694774043748040, +-0.593654538785516440, -0.593614302043148910, -0.593574063816745600, -0.593533824106406760, -0.593493582912233750, -0.593453340234326720, -0.593413096072786360, -0.593372850427712930, +-0.593332603299207780, -0.593292354687371070, -0.593252104592303490, -0.593211853014105280, -0.593171599952877720, -0.593131345408721260, -0.593091089381736380, -0.593050831872023450, +-0.593010572879683840, -0.592970312404817790, -0.592930050447525890, -0.592889787007908510, -0.592849522086067120, -0.592809255682101850, -0.592768987796113090, -0.592728718428202180, +-0.592688447578469500, -0.592648175247015740, -0.592607901433941150, -0.592567626139347210, -0.592527349363334180, -0.592487071106002740, -0.592446791367453260, -0.592406510147787220, +-0.592366227447104880, -0.592325943265506920, -0.592285657603093820, -0.592245370459966840, -0.592205081836226550, -0.592164791731973450, -0.592124500147308110, -0.592084207082331890, +-0.592043912537145060, -0.592003616511848070, -0.591963319006542530, -0.591923020021328570, -0.591882719556307110, -0.591842417611578520, -0.591802114187244150, -0.591761809283404610, +-0.591721502900160460, -0.591681195037612300, -0.591640885695861370, -0.591600574875008390, -0.591560262575153820, -0.591519948796398350, -0.591479633538843250, -0.591439316802589210, +-0.591398998587736810, -0.591358678894386540, -0.591318357722639850, -0.591278035072597350, -0.591237710944359510, -0.591197385338027570, -0.591157058253702240, -0.591116729691484320, +-0.591076399651474180, -0.591036068133773410, -0.590995735138482360, -0.590955400665702070, -0.590915064715532900, -0.590874727288076440, -0.590834388383433160, -0.590794048001703990, +-0.590753706142989170, -0.590713362807390620, -0.590673017995008490, -0.590632671705943910, -0.590592323940297260, -0.590551974698170220, -0.590511623979663170, -0.590471271784877130, +-0.590430918113912570, -0.590390562966870980, -0.590350206343853050, -0.590309848244959250, -0.590269488670291160, -0.590229127619949280, -0.590188765094034730, -0.590148401092647770, +-0.590108035615890200, -0.590067668663862620, -0.590027300236665830, -0.589986930334400420, -0.589946558957167970, -0.589906186105069290, -0.589865811778204960, -0.589825435976675800, +-0.589785058700583510, -0.589744679950028550, -0.589704299725111740, -0.589663918025933990, -0.589623534852596660, -0.589583150205200580, -0.589542764083846320, -0.589502376488635460, +-0.589461987419668600, -0.589421596877046870, -0.589381204860870760, -0.589340811371241950, -0.589300416408261140, -0.589260019972029260, -0.589219622062647000, -0.589179222680216050, +-0.589138821824837010, -0.589098419496610900, -0.589058015695638430, -0.589017610422021280, -0.588977203675860150, -0.588936795457255970, -0.588896385766309430, -0.588855974603122220, +-0.588815561967795160, -0.588775147860428840, -0.588734732281124940, -0.588694315229984280, -0.588653896707107770, -0.588613476712596230, -0.588573055246551350, -0.588532632309073820, +-0.588492207900264690, -0.588451782020224630, -0.588411354669055590, -0.588370925846858130, -0.588330495553733290, -0.588290063789781880, -0.588249630555105710, -0.588209195849805470, +-0.588168759673982190, -0.588128322027736680, -0.588087882911170650, -0.588047442324384990, -0.588007000267480760, -0.587966556740558640, -0.587926111743720450, -0.587885665277066980, +-0.587845217340699060, -0.587804767934718360, -0.587764317059225830, -0.587723864714322360, -0.587683410900109000, -0.587642955616687450, -0.587602498864158500, -0.587562040642623300, +-0.587521580952182650, -0.587481119792938490, -0.587440657164991390, -0.587400193068442710, -0.587359727503393160, -0.587319260469944760, -0.587278791968198100, -0.587238321998254430, +-0.587197850560214670, -0.587157377654180630, -0.587116903280253120, -0.587076427438533060, -0.587035950129122240, -0.586995471352121490, -0.586954991107632160, -0.586914509395754960, +-0.586874026216591790, -0.586833541570243590, -0.586793055456811600, -0.586752567876396510, -0.586712078829100480, -0.586671588315024200, -0.586631096334268910, -0.586590602886935540, +-0.586550107973126010, -0.586509611592941240, -0.586469113746482470, -0.586428614433850410, -0.586388113655147310, -0.586347611410473980, -0.586307107699931110, -0.586266602523620950, +-0.586226095881644200, -0.586185587774102230, -0.586145078201095960, -0.586104567162727300, -0.586064054659097280, -0.586023540690307150, -0.585983025256457730, -0.585942508357651160, +-0.585901989993988240, -0.585861470165570440, -0.585820948872498580, -0.585780426114874690, -0.585739901892799790, -0.585699376206375020, -0.585658849055701540, -0.585618320440881250, +-0.585577790362015180, -0.585537258819204260, -0.585496725812550630, -0.585456191342155100, -0.585415655408119130, -0.585375118010543650, -0.585334579149530800, -0.585294038825181380, +-0.585253497037596990, -0.585212953786878430, -0.585172409073127840, -0.585131862896446140, -0.585091315256934920, -0.585050766154694980, -0.585010215589828570, -0.584969663562436510, +-0.584929110072620380, -0.584888555120481100, -0.584847998706120810, -0.584807440829640420, -0.584766881491141530, -0.584726320690725050, -0.584685758428493130, -0.584645194704546790, +-0.584604629518987170, -0.584564062871916200, -0.584523494763435240, -0.584482925193645420, -0.584442354162648000, -0.584401781670545020, -0.584361207717437600, -0.584320632303427120, +-0.584280055428614720, -0.584239477093102530, -0.584198897296991700, -0.584158316040383600, -0.584117733323379350, -0.584077149146081110, -0.584036563508590010, -0.583995976411007530, +-0.583955387853434700, -0.583914797835973780, -0.583874206358725890, -0.583833613421792070, -0.583793019025274700, -0.583752423169274670, -0.583711825853893580, -0.583671227079232580, +-0.583630626845393910, -0.583590025152478600, -0.583549422000588350, -0.583508817389824070, -0.583468211320288140, -0.583427603792081690, -0.583386994805306200, -0.583346384360062920, +-0.583305772456453990, -0.583265159094580650, -0.583224544274544400, -0.583183927996446470, -0.583143310260389120, -0.583102691066473390, -0.583062070414800630, -0.583021448305472980, +-0.582980824738591810, -0.582940199714258480, -0.582899573232574350, -0.582858945293641680, -0.582818315897561610, -0.582777685044435720, -0.582737052734365270, -0.582696418967452610, +-0.582655783743798890, -0.582615147063505700, -0.582574508926674170, -0.582533869333406900, -0.582493228283804900, -0.582452585777969770, -0.582411941816002860, -0.582371296398006440, +-0.582330649524081760, -0.582290001194330500, -0.582249351408853810, -0.582208700167754170, -0.582168047471132820, -0.582127393319090910, -0.582086737711730920, -0.582046080649154090, +-0.582005422131462000, -0.581964762158756030, -0.581924100731138540, -0.581883437848710770, -0.581842773511574430, -0.581802107719830760, -0.581761440473582140, -0.581720771772930020, +-0.581680101617975900, -0.581639430008821230, -0.581598756945568280, -0.581558082428318520, -0.581517406457173420, -0.581476729032234570, -0.581436050153604220, -0.581395369821383730, +-0.581354688035674470, -0.581314004796578910, -0.581273320104198190, -0.581232633958634230, -0.581191946359988390, -0.581151257308363030, -0.581110566803859530, -0.581069874846579570, +-0.581029181436624520, -0.580988486574096960, -0.580947790259098150, -0.580907092491729890, -0.580866393272093550, -0.580825692600291490, -0.580784990476425290, -0.580744286900596540, +-0.580703581872906830, -0.580662875393458400, -0.580622167462352850, -0.580581458079691530, -0.580540747245576920, -0.580500034960110490, -0.580459321223393830, -0.580418606035528640, +-0.580377889396617270, -0.580337171306761100, -0.580296451766062040, -0.580255730774621560, -0.580215008332542030, -0.580174284439925030, -0.580133559096872250, -0.580092832303485300, +-0.580052104059866620, -0.580011374366117600, -0.579970643222340150, -0.579929910628635860, -0.579889176585107080, -0.579848441091855290, -0.579807704148982080, -0.579766965756590040, +-0.579726225914780510, -0.579685484623655430, -0.579644741883316270, -0.579603997693865610, -0.579563252055405040, -0.579522504968036260, -0.579481756431860840, -0.579441006446981490, +-0.579400255013499570, -0.579359502131516990, -0.579318747801135240, -0.579277992022457110, -0.579237234795583980, -0.579196476120617640, -0.579155715997659910, -0.579114954426813160, +-0.579074191408178950, -0.579033426941859440, -0.578992661027955880, -0.578951893666571070, -0.578911124857806490, -0.578870354601763730, -0.578829582898545470, -0.578788809748253310, +-0.578748035150989050, -0.578707259106854390, -0.578666481615951910, -0.578625702678383200, -0.578584922294250290, -0.578544140463654770, -0.578503357186699100, -0.578462572463485200, +-0.578421786294114780, -0.578380998678689530, -0.578340209617312140, -0.578299419110084310, -0.578258627157107850, -0.578217833758484460, -0.578177038914316820, -0.578136242624706640, +-0.578095444889755510, -0.578054645709566110, -0.578013845084240030, -0.577973043013879420, -0.577932239498585850, -0.577891434538462030, -0.577850628133609550, -0.577809820284130530, +-0.577769010990126670, -0.577728200251700570, -0.577687388068954030, -0.577646574441988970, -0.577605759370907080, -0.577564942855811280, -0.577524124896803050, -0.577483305493984410, +-0.577442484647457290, -0.577401662357324260, -0.577360838623687030, -0.577320013446647410, -0.577279186826308190, -0.577238358762770850, -0.577197529256137650, -0.577156698306510400, +-0.577115865913991670, -0.577075032078683270, -0.577034196800687240, -0.576993360080105380, -0.576952521917040500, -0.576911682311594290, -0.576870841263869010, -0.576829998773966120, +-0.576789154841988560, -0.576748309468038230, -0.576707462652217060, -0.576666614394626960, -0.576625764695370640, -0.576584913554549880, -0.576544060972266850, -0.576503206948623340, +-0.576462351483722050, -0.576421494577665010, -0.576380636230553800, -0.576339776442491460, -0.576298915213579570, -0.576258052543920480, -0.576217188433615800, -0.576176322882768540, +-0.576135455891480520, -0.576094587459853870, -0.576053717587990290, -0.576012846275992920, -0.575971973523963340, -0.575931099332003820, -0.575890223700216250, -0.575849346628703460, +-0.575808468117567250, -0.575767588166909980, -0.575726706776833240, -0.575685823947440170, -0.575644939678832570, -0.575604053971112250, -0.575563166824382130, -0.575522278238744130, +-0.575481388214300390, -0.575440496751152830, -0.575399603849404360, -0.575358709509156910, -0.575317813730512720, -0.575276916513573600, -0.575236017858442470, -0.575195117765221480, +-0.575154216234012530, -0.575113313264917770, -0.575072408858040010, -0.575031503013481270, -0.574990595731343810, -0.574949687011729440, -0.574908776854741290, -0.574867865260481170, +-0.574826952229051000, -0.574786037760553810, -0.574745121855091520, -0.574704204512766490, -0.574663285733680530, -0.574622365517936660, -0.574581443865637030, -0.574540520776883670, +-0.574499596251778710, -0.574458670290425080, -0.574417742892924800, -0.574376814059380130, -0.574335883789893090, -0.574294952084566710, -0.574254018943502920, -0.574213084366804070, +-0.574172148354572200, -0.574131210906910330, -0.574090272023920380, -0.574049331705704380, -0.574008389952365470, -0.573967446764005460, -0.573926502140726940, -0.573885556082631810, +-0.573844608589823110, -0.573803659662402990, -0.573762709300473570, -0.573721757504137120, -0.573680804273496660, -0.573639849608654110, -0.573598893509711940, -0.573557935976772180, +-0.573516977009937980, -0.573476016609311360, -0.573435054774994680, -0.573394091507089980, -0.573353126805700390, -0.573312160670928050, -0.573271193102875220, -0.573230224101644040, +-0.573189253667337750, -0.573148281800058280, -0.573107308499907760, -0.573066333766989340, -0.573025357601405050, -0.572984380003257350, -0.572943400972648400, -0.572902420509681320, +-0.572861438614458150, -0.572820455287081360, -0.572779470527653100, -0.572738484336276500, -0.572697496713053810, -0.572656507658087180, -0.572615517171479070, -0.572574525253332520, +-0.572533531903749560, -0.572492537122832880, -0.572451540910684400, -0.572410543267407480, -0.572369544193104150, -0.572328543687876670, -0.572287541751828170, -0.572246538385060790, +-0.572205533587677120, -0.572164527359779180, -0.572123519701470350, -0.572082510612852760, -0.572041500094028770, -0.572000488145100740, -0.571959474766171820, -0.571918459957344250, +-0.571877443718720510, -0.571836426050402750, -0.571795406952494420, -0.571754386425097460, -0.571713364468314560, -0.571672341082247960, -0.571631316267000700, -0.571590290022675250, +-0.571549262349373750, -0.571508233247199460, -0.571467202716254510, -0.571426170756641590, -0.571385137368462860, -0.571344102551821780, -0.571303066306820260, -0.571262028633561130, +-0.571220989532146620, -0.571179949002679990, -0.571138907045263490, -0.571097863659999700, -0.571056818846990890, -0.571015772606340290, -0.570974724938150380, -0.570933675842523640, +-0.570892625319562420, -0.570851573369369870, -0.570810519992048460, -0.570769465187700780, -0.570728408956428960, -0.570687351298336590, -0.570646292213525810, -0.570605231702098870, +-0.570564169764159250, -0.570523106399809300, -0.570482041609151500, -0.570440975392288220, -0.570399907749322920, -0.570358838680357750, -0.570317768185495620, -0.570276696264838680, +-0.570235622918490280, -0.570194548146552900, -0.570153471949129020, -0.570112394326321210, -0.570071315278232850, -0.570030234804966060, -0.569989152906623770, -0.569948069583308130, +-0.569906984835122810, -0.569865898662169970, -0.569824811064551960, -0.569783722042372380, -0.569742631595733460, -0.569701539724738030, -0.569660446429488320, -0.569619351710087820, +-0.569578255566638990, -0.569537157999244540, -0.569496059008006710, -0.569454958593029190, -0.569413856754414250, -0.569372753492264790, -0.569331648806682970, -0.569290542697772350, +-0.569249435165635420, -0.569208326210374980, -0.569167215832093290, -0.569126104030893920, -0.569084990806879240, -0.569043876160151840, -0.569002760090814960, -0.568961642598971310, +-0.568920523684723570, -0.568879403348174110, -0.568838281589426400, -0.568797158408583140, -0.568756033805746910, -0.568714907781020300, -0.568673780334506660, -0.568632651466308700, +-0.568591521176529000, -0.568550389465270260, -0.568509256332635830, -0.568468121778728190, -0.568426985803650360, -0.568385848407504720, -0.568344709590394740, -0.568303569352422990, +-0.568262427693692400, -0.568221284614305320, -0.568180140114365350, -0.568138994193975070, -0.568097846853236940, -0.568056698092254560, -0.568015547911130400, -0.567974396309967490, +-0.567933243288868070, -0.567892088847935960, -0.567850932987273740, -0.567809775706984100, -0.567768617007169630, -0.567727456887934020, -0.567686295349379750, -0.567645132391609740, +-0.567603968014726460, -0.567562802218833710, -0.567521635004033960, -0.567480466370430150, -0.567439296318124730, -0.567398124847221520, -0.567356951957822990, -0.567315777650031610, +-0.567274601923951180, -0.567233424779684300, -0.567192246217333880, -0.567151066237002400, -0.567109884838793650, -0.567068702022810230, -0.567027517789155060, -0.566986332137930700, +-0.566945145069240870, -0.566903956583188150, -0.566862766679875560, -0.566821575359405690, -0.566780382621882240, -0.566739188467407900, -0.566697992896085580, -0.566656795908017760, +-0.566615597503308480, -0.566574397682060190, -0.566533196444375500, -0.566491993790358190, -0.566450789720110870, -0.566409584233736550, -0.566368377331337940, -0.566327169013018830, +-0.566285959278881700, -0.566244748129029700, -0.566203535563565510, -0.566162321582592830, -0.566121106186214250, -0.566079889374533020, -0.566038671147651610, -0.565997451505673930, +-0.565956230448702690, -0.565915007976840800, -0.565873784090191070, -0.565832558788857190, -0.565791332072941970, -0.565750103942547990, -0.565708874397779170, -0.565667643438738100, +-0.565626411065527910, -0.565585177278251420, -0.565543942077012310, -0.565502705461913390, -0.565461467433057590, -0.565420227990547920, -0.565378987134487860, -0.565337744864980450, +-0.565296501182128710, -0.565255256086035330, -0.565214009576804120, -0.565172761654537890, -0.565131512319339780, -0.565090261571312480, -0.565049009410559910, -0.565007755837184880, +-0.564966500851290410, -0.564925244452979310, -0.564883986642355510, -0.564842727419521680, -0.564801466784580760, -0.564760204737636550, -0.564718941278791740, -0.564677676408149590, +-0.564636410125812890, -0.564595142431885580, -0.564553873326470330, -0.564512602809670420, -0.564471330881588630, -0.564430057542328890, -0.564388782791994110, -0.564347506630687220, +-0.564306229058511240, -0.564264950075570090, -0.564223669681966580, -0.564182387877803840, -0.564141104663184790, -0.564099820038213350, -0.564058534002992330, -0.564017246557624640, +-0.563975957702214200, -0.563934667436863930, -0.563893375761676860, -0.563852082676756130, -0.563810788182205420, -0.563769492278127780, -0.563728194964626450, -0.563686896241804240, +-0.563645596109765170, -0.563604294568612050, -0.563562991618448250, -0.563521687259376680, -0.563480381491501150, -0.563439074314924680, -0.563397765729750530, -0.563356455736081620, +-0.563315144334021860, -0.563273831523674380, -0.563232517305141790, -0.563191201678528430, -0.563149884643937000, -0.563108566201470870, -0.563067246351232950, -0.563025925093327270, +-0.562984602427856750, -0.562943278354924750, -0.562901952874634180, -0.562860625987089190, -0.562819297692392470, -0.562777967990647610, -0.562736636881957520, -0.562695304366426120, +-0.562653970444156440, -0.562612635115251840, -0.562571298379815340, -0.562529960237950880, -0.562488620689761580, -0.562447279735350690, -0.562405937374821360, -0.562364593608277400, +-0.562323248435822040, -0.562281901857558110, -0.562240553873589840, -0.562199204484020280, -0.562157853688952550, -0.562116501488489910, -0.562075147882736380, -0.562033792871795000, +-0.561992436455769130, -0.561951078634761680, -0.561909719408877020, -0.561868358778218060, -0.561826996742888160, -0.561785633302990470, -0.561744268458629010, -0.561702902209906820, +-0.561661534556927470, -0.561620165499793880, -0.561578795038610300, -0.561537423173479660, -0.561496049904505080, -0.561454675231790820, -0.561413299155439800, -0.561371921675555610, +-0.561330542792241150, -0.561289162505600790, -0.561247780815737450, -0.561206397722754710, -0.561165013226755600, -0.561123627327844380, -0.561082240026124060, -0.561040851321698120, +-0.560999461214669590, -0.560958069705142950, -0.560916676793220990, -0.560875282479007420, -0.560833886762605260, -0.560792489644118760, -0.560751091123650960, -0.560709691201305200, +-0.560668289877185530, -0.560626887151395080, -0.560585483024037430, -0.560544077495215730, -0.560502670565034220, -0.560461262233595940, -0.560419852501004570, -0.560378441367363260, +-0.560337028832776140, -0.560295614897346470, -0.560254199561177720, -0.560212782824373150, -0.560171364687036990, -0.560129945149272390, -0.560088524211182940, -0.560047101872871880, +-0.560005678134443350, -0.559964252996000610, -0.559922826457647020, -0.559881398519486590, -0.559839969181622710, -0.559798538444158830, -0.559757106307198330, -0.559715672770845440, +-0.559674237835203310, -0.559632801500375530, -0.559591363766465570, -0.559549924633577440, -0.559508484101814420, -0.559467042171280290, -0.559425598842078210, -0.559384154114312530, +-0.559342707988086390, -0.559301260463503480, -0.559259811540667060, -0.559218361219681490, -0.559176909500650020, -0.559135456383676230, -0.559094001868863490, -0.559052545956316150, +-0.559011088646137360, -0.558969629938430470, -0.558928169833299960, -0.558886708330848970, -0.558845245431181190, -0.558803781134399990, -0.558762315440609610, -0.558720848349913530, +-0.558679379862415340, -0.558637909978218270, -0.558596438697426810, -0.558554966020144320, -0.558513491946474370, -0.558472016476520230, -0.558430539610386580, -0.558389061348176450, +-0.558347581689993770, -0.558306100635941660, -0.558264618186124720, -0.558223134340646300, -0.558181649099609540, -0.558140162463119150, -0.558098674431278250, -0.558057185004190770, +-0.558015694181959840, -0.557974201964690160, -0.557932708352484990, -0.557891213345447890, -0.557849716943682570, -0.557808219147293170, -0.557766719956383270, -0.557725219371056680, +-0.557683717391416530, -0.557642214017567530, -0.557600709249613020, -0.557559203087656610, -0.557517695531801970, -0.557476186582153370, -0.557434676238814380, -0.557393164501888250, +-0.557351651371479570, -0.557310136847691820, -0.557268620930628680, -0.557227103620393740, -0.557185584917091250, -0.557144064820824900, -0.557102543331698400, -0.557061020449815090, +-0.557019496175279680, -0.556977970508195420, -0.556936443448666330, -0.556894914996795660, -0.556853385152688230, -0.556811853916447270, -0.556770321288176610, -0.556728787267979810, +-0.556687251855961460, -0.556645715052224930, -0.556604176856874130, -0.556562637270012540, -0.556521096291744730, -0.556479553922174070, -0.556438010161404260, -0.556396465009539760, +-0.556354918466684170, -0.556313370532941280, -0.556271821208414450, -0.556230270493208610, -0.556188718387427010, -0.556147164891173550, -0.556105610004551940, -0.556064053727666540, +-0.556022496060621150, -0.555980937003519360, -0.555939376556464970, -0.555897814719562570, -0.555856251492915510, -0.555814686876627830, -0.555773120870803110, -0.555731553475545930, +-0.555689984690959870, -0.555648414517148530, -0.555606842954216470, -0.555565270002267300, -0.555523695661404910, -0.555482119931733020, -0.555440542813356200, -0.555398964306377920, +-0.555357384410902320, -0.555315803127032770, -0.555274220454874180, -0.555232636394530020, -0.555191050946104330, -0.555149464109700560, -0.555107875885423540, -0.555066286273376840, +-0.555024695273664380, -0.554983102886389860, -0.554941509111657850, -0.554899913949572170, -0.554858317400236280, -0.554816719463754990, -0.554775120140231890, -0.554733519429771120, +-0.554691917332476030, -0.554650313848451540, -0.554608708977801230, -0.554567102720629260, -0.554525495077039080, -0.554483886047135610, -0.554442275631022330, -0.554400663828803380, +-0.554359050640582440, -0.554317436066464220, -0.554275820106552410, -0.554234202760951030, -0.554192584029763790, -0.554150963913095480, -0.554109342411049810, -0.554067719523730350, +-0.554026095251241910, -0.553984469593688300, -0.553942842551173540, -0.553901214123801220, -0.553859584311676370, -0.553817953114902450, -0.553776320533583610, -0.553734686567823650, +-0.553693051217727380, -0.553651414483398500, -0.553609776364941020, -0.553568136862458760, -0.553526495976056520, -0.553484853705838000, -0.553443210051907440, -0.553401565014368440, +-0.553359918593325780, -0.553318270788883520, -0.553276621601145440, -0.553234971030215460, -0.553193319076198510, -0.553151665739198160, -0.553110011019318340, -0.553068354916663840, +-0.553026697431338480, -0.552985038563446380, -0.552943378313091260, -0.552901716680378130, -0.552860053665410580, -0.552818389268293080, -0.552776723489129100, -0.552735056328023780, +-0.552693387785080700, -0.552651717860404230, -0.552610046554098070, -0.552568373866267230, -0.552526699797015410, -0.552485024346446750, -0.552443347514665280, -0.552401669301775810, +-0.552359989707882140, -0.552318308733088070, -0.552276626377498640, -0.552234942641217640, -0.552193257524349330, -0.552151571026997410, -0.552109883149267010, -0.552068193891261830, +-0.552026503253086220, -0.551984811234844000, -0.551943117836640180, -0.551901423058578480, -0.551859726900763240, -0.551818029363298270, -0.551776330446288600, -0.551734630149838150, +-0.551692928474051160, -0.551651225419031330, -0.551609520984883920, -0.551567815171712720, -0.551526107979621650, -0.551484399408715520, -0.551442689459098580, -0.551400978130874740, +-0.551359265424148260, -0.551317551339023830, -0.551275835875605580, -0.551234119033997770, -0.551192400814304320, -0.551150681216630130, -0.551108960241079360, -0.551067237887756130, +-0.551025514156764370, -0.550983789048209330, -0.550942062562194690, -0.550900334698824930, -0.550858605458203980, -0.550816874840436950, -0.550775142845627670, -0.550733409473880500, +-0.550691674725299450, -0.550649938599989670, -0.550608201098054970, -0.550566462219599370, -0.550524721964728010, -0.550482980333544920, -0.550441237326154240, -0.550399492942660220, +-0.550357747183167770, -0.550316000047781030, -0.550274251536604250, -0.550232501649741360, -0.550190750387297700, -0.550148997749377200, -0.550107243736084110, -0.550065488347522560, +-0.550023731583797690, -0.549981973445013540, -0.549940213931274350, -0.549898453042684370, -0.549856690779348510, -0.549814927141371030, -0.549773162128855740, -0.549731395741907990, +-0.549689627980631810, -0.549647858845131450, -0.549606088335511170, -0.549564316451875980, -0.549522543194330030, -0.549480768562977670, -0.549438992557923060, -0.549397215179271310, +-0.549355436427126590, -0.549313656301593120, -0.549271874802775280, -0.549230091930778100, -0.549188307685705700, -0.549146522067662460, -0.549104735076752610, -0.549062946713081310, +-0.549021156976752580, -0.548979365867870660, -0.548937573386540700, -0.548895779532866720, -0.548853984306953310, -0.548812187708904610, -0.548770389738825860, -0.548728590396820980, +-0.548686789682994780, -0.548644987597451170, -0.548603184140295410, -0.548561379311631850, -0.548519573111564630, -0.548477765540198230, -0.548435956597637770, -0.548394146283987420, +-0.548352334599351730, -0.548310521543834860, -0.548268707117541940, -0.548226891320577340, -0.548185074153045070, -0.548143255615050620, -0.548101435706697890, -0.548059614428091590, +-0.548017791779335960, -0.547975967760536140, -0.547934142371796500, -0.547892315613221380, -0.547850487484915270, -0.547808657986983190, -0.547766827119529510, -0.547724994882658690, +-0.547683161276475090, -0.547641326301083860, -0.547599489956589470, -0.547557652243096270, -0.547515813160708520, -0.547473972709531690, -0.547432130889669800, -0.547390287701227770, +-0.547348443144309530, -0.547306597219020530, -0.547264749925465140, -0.547222901263747400, -0.547181051233972870, -0.547139199836245700, -0.547097347070670480, -0.547055492937351560, +-0.547013637436394200, -0.546971780567902850, -0.546929922331982010, -0.546888062728736020, -0.546846201758270150, -0.546804339420688850, -0.546762475716096710, -0.546720610644597980, +-0.546678744206298140, -0.546636876401301430, -0.546595007229712440, -0.546553136691635630, -0.546511264787176380, -0.546469391516438920, -0.546427516879527620, -0.546385640876547950, +-0.546343763507604050, -0.546301884772800840, -0.546260004672242560, -0.546218123206034580, -0.546176240374281360, -0.546134356177087500, -0.546092470614557350, -0.546050583686796490, +-0.546008695393909060, -0.545966805735999980, -0.545924914713173500, -0.545883022325535090, -0.545841128573189120, -0.545799233456240260, -0.545757336974793010, -0.545715439128952820, +-0.545673539918823950, -0.545631639344510980, -0.545589737406119160, -0.545547834103753070, -0.545505929437517410, -0.545464023407516540, -0.545422116013855930, -0.545380207256640050, +-0.545338297135973700, -0.545296385651961150, -0.545254472804708070, -0.545212558594318830, -0.545170643020898130, -0.545128726084550430, -0.545086807785381430, -0.545044888123495270, +-0.545002967098996980, -0.544961044711990810, -0.544919120962582440, -0.544877195850876350, -0.544835269376977130, -0.544793341540989460, -0.544751412343018830, -0.544709481783169580, +-0.544667549861546310, -0.544625616578254480, -0.544583681933398680, -0.544541745927083600, -0.544499808559413930, -0.544457869830494930, -0.544415929740431400, -0.544373988289327930, +-0.544332045477289190, -0.544290101304420680, -0.544248155770826970, -0.544206208876612750, -0.544164260621882720, -0.544122311006742470, -0.544080360031296340, -0.544038407695649370, +-0.543996453999906040, -0.543954498944171800, -0.543912542528551480, -0.543870584753149310, -0.543828625618071100, -0.543786665123421330, -0.543744703269304910, -0.543702740055826310, +-0.543660775483091330, -0.543618809551204340, -0.543576842260270250, -0.543534873610393770, -0.543492903601680570, -0.543450932234235020, -0.543408959508162040, -0.543366985423566430, +-0.543325009980553660, -0.543283033179228440, -0.543241055019695550, -0.543199075502059700, -0.543157094626426470, -0.543115112392900560, -0.543073128801586540, -0.543031143852589990, +-0.542989157546015620, -0.542947169881968340, -0.542905180860552840, -0.542863190481874590, -0.542821198746038510, -0.542779205653149410, -0.542737211203311860, -0.542695215396631790, +-0.542653218233213550, -0.542611219713162280, -0.542569219836582570, -0.542527218603580330, -0.542485216014259920, -0.542443212068726480, -0.542401206767084590, -0.542359200109440160, +-0.542317192095897680, -0.542275182726561830, -0.542233172001538420, -0.542191159920932140, -0.542149146484847800, -0.542107131693390420, -0.542065115546665480, -0.542023098044777660, +-0.541981079187832230, -0.541939058975933750, -0.541897037409187930, -0.541855014487699460, -0.541812990211573590, -0.541770964580914780, -0.541728937595828960, -0.541686909256420710, +-0.541644879562795280, -0.541602848515057240, -0.541560816113312530, -0.541518782357665710, -0.541476747248221920, -0.541434710785085980, -0.541392672968363580, -0.541350633798159400, +-0.541308593274578360, -0.541266551397726280, -0.541224508167707730, -0.541182463584627960, -0.541140417648591550, -0.541098370359704540, -0.541056321718071610, -0.541014271723797900, +-0.540972220376988110, -0.540930167677748150, -0.540888113626182720, -0.540846058222397060, -0.540804001466495880, -0.540761943358585070, -0.540719883898769460, -0.540677823087154060, +-0.540635760923843690, -0.540593697408944360, -0.540551632542560780, -0.540509566324797740, -0.540467498755761170, -0.540425429835555860, -0.540383359564286960, -0.540341287942059270, +-0.540299214968978700, -0.540257140645150180, -0.540215064970678730, -0.540172987945669260, -0.540130909570227800, -0.540088829844458940, -0.540046748768468030, -0.540004666342359880, +-0.539962582566240520, -0.539920497440214640, -0.539878410964387490, -0.539836323138863980, -0.539794233963749930, -0.539752143439150460, -0.539710051565170160, -0.539667958341915170, +-0.539625863769490180, -0.539583767848000550, -0.539541670577551200, -0.539499571958248050, -0.539457471990195890, -0.539415370673500090, -0.539373268008265570, -0.539331163994598130, +-0.539289058632602790, -0.539246951922384920, -0.539204843864049210, -0.539162734457701800, -0.539120623703447490, -0.539078511601391640, -0.539036398151639170, -0.538994283354296110, +-0.538952167209467260, -0.538910049717258090, -0.538867930877773290, -0.538825810691119120, -0.538783689157400380, -0.538741566276722090, -0.538699442049190290, -0.538657316474909780, +-0.538615189553986130, -0.538573061286524050, -0.538530931672629660, -0.538488800712407900, -0.538446668405964220, -0.538404534753403440, -0.538362399754831800, -0.538320263410354110, +-0.538278125720075720, -0.538235986684101660, -0.538193846302537970, -0.538151704575489780, -0.538109561503062220, -0.538067417085360430, -0.538025271322490450, -0.537983124214557300, +-0.537940975761666000, -0.537898825963922580, -0.537856674821432180, -0.537814522334300050, -0.537772368502631220, -0.537730213326531810, -0.537688056806106870, -0.537645898941461860, +-0.537603739732701700, -0.537561579179932520, -0.537519417283259470, -0.537477254042787900, -0.537435089458622730, -0.537392923530870200, -0.537350756259635460, -0.537308587645023760, +-0.537266417687140230, -0.537224246386091010, -0.537182073741981240, -0.537139899754915830, -0.537097724425001030, -0.537055547752341990, -0.537013369737044060, -0.536971190379212370, +-0.536929009678952960, -0.536886827636371190, -0.536844644251572190, -0.536802459524661320, -0.536760273455744620, -0.536718086044927320, -0.536675897292314690, -0.536633707198011960, +-0.536591515762125380, -0.536549322984759990, -0.536507128866021370, -0.536464933406014420, -0.536422736604845630, -0.536380538462619900, -0.536338338979442500, -0.536296138155419650, +-0.536253935990656410, -0.536211732485258330, -0.536169527639330570, -0.536127321452979370, -0.536085113926309860, -0.536042905059427640, -0.536000694852437620, -0.535958483305446380, +-0.535916270418558830, -0.535874056191880670, -0.535831840625516920, -0.535789623719574060, -0.535747405474157110, -0.535705185889371550, -0.535662964965322730, -0.535620742702116900, +-0.535578519099859100, -0.535536294158655110, -0.535494067878609980, -0.535451840259830060, -0.535409611302420490, -0.535367381006486620, -0.535325149372134600, -0.535282916399469680, +-0.535240682088597540, -0.535198446439623220, -0.535156209452653300, -0.535113971127792690, -0.535071731465147300, -0.535029490464822180, -0.534987248126923660, -0.534945004451557020, +-0.534902759438827920, -0.534860513088841530, -0.534818265401704180, -0.534776016377521150, -0.534733766016398220, -0.534691514318440420, -0.534649261283754120, -0.534607006912444780, +-0.534564751204617550, -0.534522494160378780, -0.534480235779833720, -0.534437976063088180, -0.534395715010247300, -0.534353452621417420, -0.534311188896704040, -0.534268923836212610, +-0.534226657440048490, -0.534184389708318160, -0.534142120641126760, -0.534099850238580090, -0.534057578500783500, -0.534015305427843260, -0.533973031019864820, -0.533930755276953770, +-0.533888478199215370, -0.533846199786756290, -0.533803920039681580, -0.533761638958096810, -0.533719356542108230, -0.533677072791821310, -0.533634787707341740, -0.533592501288774780, +-0.533550213536226890, -0.533507924449803550, -0.533465634029610340, -0.533423342275752720, -0.533381049188337180, -0.533338754767468840, -0.533296459013253730, -0.533254161925797110, +-0.533211863505205440, -0.533169563751584090, -0.533127262665038850, -0.533084960245675090, -0.533042656493599280, -0.533000351408916770, -0.532958044991733490, -0.532915737242154690, +-0.532873428160286930, -0.532831117746235590, -0.532788806000106030, -0.532746492922004930, -0.532704178512037550, -0.532661862770309690, -0.532619545696926820, -0.532577227291995410, +-0.532534907555621050, -0.532492586487909310, -0.532450264088965790, -0.532407940358897050, -0.532365615297808350, -0.532323288905805600, -0.532280961182994280, -0.532238632129480970, +-0.532196301745371030, -0.532153970030770360, -0.532111636985784450, -0.532069302610519770, -0.532026966905081890, -0.531984629869576060, -0.531942291504109210, -0.531899951808786460, +-0.531857610783713960, -0.531815268428997070, -0.531772924744742360, -0.531730579731055310, -0.531688233388041720, -0.531645885715807290, -0.531603536714458480, -0.531561186384100880, +-0.531518834724840290, -0.531476481736782190, -0.531434127420033380, -0.531391771774699100, -0.531349414800885490, -0.531307056498697920, -0.531264696868243070, -0.531222335909626530, +-0.531179973622953770, -0.531137610008331480, -0.531095245065865140, -0.531052878795660650, -0.531010511197823610, -0.530968142272460700, -0.530925772019677390, -0.530883400439579600, +-0.530841027532273020, -0.530798653297864240, -0.530756277736458840, -0.530713900848162720, -0.530671522633081480, -0.530629143091321810, -0.530586762222989170, -0.530544380028189820, +-0.530501996507029010, -0.530459611659613640, -0.530417225486049190, -0.530374837986441360, -0.530332449160896720, -0.530290059009521090, -0.530247667532420250, -0.530205274729699920, +-0.530162880601466660, -0.530120485147826280, -0.530078088368884700, -0.530035690264747390, -0.529993290835521380, -0.529950890081312130, -0.529908488002225560, -0.529866084598367480, +-0.529823679869844580, -0.529781273816762430, -0.529738866439227070, -0.529696457737344200, -0.529654047711220600, -0.529611636360961870, -0.529569223686674030, -0.529526809688462770, +-0.529484394366434800, -0.529441977720695900, -0.529399559751351670, -0.529357140458508900, -0.529314719842273300, -0.529272297902750880, -0.529229874640047340, -0.529187450054269480, +-0.529145024145523110, -0.529102596913914040, -0.529060168359548170, -0.529017738482532200, -0.528975307282971930, -0.528932874760973390, -0.528890440916642280, -0.528848005750085500, +-0.528805569261408650, -0.528763131450717850, -0.528720692318118910, -0.528678251863718530, -0.528635810087622620, -0.528593366989936750, -0.528550922570767860, -0.528508476830221620, +-0.528466029768404180, -0.528423581385421340, -0.528381131681379900, -0.528338680656385670, -0.528296228310544680, -0.528253774643962840, -0.528211319656746840, -0.528168863349002590, +-0.528126405720836130, -0.528083946772353370, -0.528041486503661010, -0.527999024914865060, -0.527956562006071440, -0.527914097777386070, -0.527871632228915870, -0.527829165360766520, +-0.527786697173043940, -0.527744227665854940, -0.527701756839305420, -0.527659284693501540, -0.527616811228548980, -0.527574336444554870, -0.527531860341624800, -0.527489382919865140, +-0.527446904179381670, -0.527404424120281320, -0.527361942742669900, -0.527319460046653530, -0.527276976032338250, -0.527234490699830860, -0.527192004049237270, -0.527149516080663630, +-0.527107026794215840, -0.527064536190000930, -0.527022044268124600, -0.526979551028693200, -0.526937056471812440, -0.526894560597589550, -0.526852063406130220, -0.526809564897540270, +-0.526767065071926940, -0.526724563929395820, -0.526682061470053360, -0.526639557694005280, -0.526597052601358810, -0.526554546192219640, -0.526512038466694140, -0.526469529424888120, +-0.526427019066908700, -0.526384507392861690, -0.526341994402853340, -0.526299480096989790, -0.526256964475377840, -0.526214447538123410, -0.526171929285332960, -0.526129409717112310, +-0.526086888833568470, -0.526044366634807470, -0.526001843120935120, -0.525959318292058550, -0.525916792148283680, -0.525874264689716760, -0.525831735916463930, -0.525789205828632090, +-0.525746674426327170, -0.525704141709655630, -0.525661607678723390, -0.525619072333637470, -0.525576535674503910, -0.525533997701428950, -0.525491458414518610, -0.525448917813880030, +-0.525406375899619140, -0.525363832671842280, -0.525321288130655590, -0.525278742276165890, -0.525236195108479410, -0.525193646627702180, -0.525151096833941010, -0.525108545727302260, +-0.525065993307892050, -0.525023439575816540, -0.524980884531182750, -0.524938328174096800, -0.524895770504664960, -0.524853211522993360, -0.524810651229189130, -0.524768089623358300, +-0.524725526705607130, -0.524682962476041850, -0.524640396934769600, -0.524597830081896200, -0.524555261917528330, -0.524512692441771900, -0.524470121654734170, -0.524427549556521040, +-0.524384976147238780, -0.524342401426994400, -0.524299825395893930, -0.524257248054044060, -0.524214669401550590, -0.524172089438520780, -0.524129508165060880, -0.524086925581277120, +-0.524044341687275650, -0.524001756483163720, -0.523959169969047460, -0.523916582145033230, -0.523873993011227170, -0.523831402567736410, -0.523788810814667330, -0.523746217752126150, +-0.523703623380219030, -0.523661027699053210, -0.523618430708734820, -0.523575832409370330, -0.523533232801066010, -0.523490631883928860, -0.523448029658065140, -0.523405426123580990, +-0.523362821280583650, -0.523320215129179370, -0.523277607669474400, -0.523234998901575100, -0.523192388825588610, -0.523149777441621280, -0.523107164749779360, -0.523064550750169220, +-0.523021935442898100, -0.522979318828072140, -0.522936700905797910, -0.522894081676181450, -0.522851461139330230, -0.522808839295350380, -0.522766216144348370, -0.522723591686430460, +-0.522680965921703990, -0.522638338850275110, -0.522595710472249950, -0.522553080787735880, -0.522510449796839140, -0.522467817499666310, -0.522425183896323530, -0.522382548986918160, +-0.522339912771556450, -0.522297275250344860, -0.522254636423389870, -0.522211996290798510, -0.522169354852677240, -0.522126712109132530, -0.522084068060270750, -0.522041422706199130, +-0.521998776047023940, -0.521956128082851860, -0.521913478813789020, -0.521870828239942910, -0.521828176361419650, -0.521785523178325610, -0.521742868690768140, -0.521700212898853600, +-0.521657555802688360, -0.521614897402378990, -0.521572237698032740, -0.521529576689755750, -0.521486914377654930, -0.521444250761836540, -0.521401585842407700, -0.521358919619475000, +-0.521316252093145030, -0.521273583263524020, -0.521230913130719450, -0.521188241694837570, -0.521145568955985070, -0.521102894914268310, -0.521060219569794650, -0.521017542922670550, +-0.520974864973002490, -0.520932185720896830, -0.520889505166461260, -0.520846823309801810, -0.520804140151024940, -0.520761455690238020, -0.520718769927547620, -0.520676082863060220, +-0.520633394496882170, -0.520590704829121180, -0.520548013859883250, -0.520505321589275430, -0.520462628017403840, -0.520419933144376070, -0.520377236970298470, -0.520334539495277750, +-0.520291840719420360, -0.520249140642833670, -0.520206439265624150, -0.520163736587898610, -0.520121032609763280, -0.520078327331325860, -0.520035620752692500, -0.519992912873969760, +-0.519950203695265010, -0.519907493216684950, -0.519864781438336030, -0.519822068360324740, -0.519779353982758760, -0.519736638305744350, -0.519693921329388300, -0.519651203053797080, +-0.519608483479078290, -0.519565762605338270, -0.519523040432683820, -0.519480316961221430, -0.519437592191058560, -0.519394866122301790, -0.519352138755057810, -0.519309410089433100, +-0.519266680125535230, -0.519223948863470790, -0.519181216303345900, -0.519138482445268500, -0.519095747289344820, -0.519053010835681780, -0.519010273084385850, -0.518967534035564610, +-0.518924793689324540, -0.518882052045772530, -0.518839309105014970, -0.518796564867159530, -0.518753819332312570, -0.518711072500581240, -0.518668324372071670, -0.518625574946891770, +-0.518582824225148010, -0.518540072206947090, -0.518497318892395590, -0.518454564281601190, -0.518411808374670380, -0.518369051171710060, -0.518326292672826710, -0.518283532878128120, +-0.518240771787720540, -0.518198009401710790, -0.518155245720206330, -0.518112480743313730, -0.518069714471139920, -0.518026946903791470, -0.517984178041376090, -0.517941407884000230, +-0.517898636431770810, -0.517855863684794420, -0.517813089643178850, -0.517770314307030470, -0.517727537676456300, -0.517684759751562920, -0.517641980532458020, -0.517599200019248200, +-0.517556418212040350, -0.517513635110941060, -0.517470850716058140, -0.517428065027498050, -0.517385278045367380, -0.517342489769773930, -0.517299700200824160, -0.517256909338625230, +-0.517214117183283690, -0.517171323734907150, -0.517128528993602400, -0.517085732959476240, -0.517042935632635370, -0.517000137013187590, -0.516957337101239480, -0.516914535896897950, +-0.516871733400269710, -0.516828929611462540, -0.516786124530583150, -0.516743318157738330, -0.516700510493034780, -0.516657701536580420, -0.516614891288481810, -0.516572079748845560, +-0.516529266917779560, -0.516486452795390290, -0.516443637381785000, -0.516400820677070160, -0.516358002681353680, -0.516315183394742140, -0.516272362817342790, -0.516229540949261990, +-0.516186717790607760, -0.516143893341486800, -0.516101067602006030, -0.516058240572272230, -0.516015412252393220, -0.515972582642475700, -0.515929751742626670, -0.515886919552952960, +-0.515844086073562250, -0.515801251304561340, -0.515758415246056920, -0.515715577898156920, -0.515672739260967910, -0.515629899334597020, -0.515587058119151060, -0.515544215614737840, +-0.515501371821464050, -0.515458526739436820, -0.515415680368762950, -0.515372832709550250, -0.515329983761905420, -0.515287133525935580, -0.515244282001747660, -0.515201429189449330, +-0.515158575089147420, -0.515115719700949160, -0.515072863024961140, -0.515030005061291370, -0.514987145810046560, -0.514944285271333960, -0.514901423445260240, -0.514858560331933330, +-0.514815695931459930, -0.514772830243947040, -0.514729963269502380, -0.514687095008232840, -0.514644225460245570, -0.514601354625647380, -0.514558482504546060, -0.514515609097048630, +-0.514472734403262240, -0.514429858423293580, -0.514386981157250570, -0.514344102605240220, -0.514301222767369560, -0.514258341643745400, -0.514215459234475870, -0.514172575539667660, +-0.514129690559428030, -0.514086804293863770, -0.514043916743082920, -0.514001027907192260, -0.513958137786298620, -0.513915246380510000, -0.513872353689933340, -0.513829459714675750, +-0.513786564454844050, -0.513743667910546490, -0.513700770081889630, -0.513657870968980860, -0.513614970571927070, -0.513572068890836290, -0.513529165925815210, -0.513486261676971310, +-0.513443356144411280, -0.513400449328243360, -0.513357541228574240, -0.513314631845511290, -0.513271721179161420, -0.513228809229632540, -0.513185895997031680, -0.513142981481465750, +-0.513100065683042670, -0.513057148601869460, -0.513014230238053370, -0.512971310591701310, -0.512928389662921420, -0.512885467451820510, -0.512842543958505930, -0.512799619183084590, +-0.512756693125664630, -0.512713765786352860, -0.512670837165256740, -0.512627907262483080, -0.512584976078140130, -0.512542043612334690, -0.512499109865174220, -0.512456174836765420, +-0.512413238527216760, -0.512370300936634830, -0.512327362065127300, -0.512284421912800880, -0.512241480479763810, -0.512198537766123010, -0.512155593771985610, -0.512112648497459520, +-0.512069701942651780, -0.512026754107669850, -0.511983804992620530, -0.511940854597612180, -0.511897902922751720, -0.511854949968146400, -0.511811995733903460, -0.511769040220130810, +-0.511726083426935600, -0.511683125354425170, -0.511640166002706560, -0.511597205371887910, -0.511554243462076230, -0.511511280273378890, -0.511468315805903020, -0.511425350059756760, +-0.511382383035047130, -0.511339414731881160, -0.511296445150366980, -0.511253474290611740, -0.511210502152722900, -0.511167528736807260, -0.511124554042973300, -0.511081578071327920, +-0.511038600821978490, -0.510995622295032260, -0.510952642490597460, -0.510909661408780910, -0.510866679049690300, -0.510823695413432530, -0.510780710500115980, -0.510737724309847540, +-0.510694736842734920, -0.510651748098885030, -0.510608758078406110, -0.510565766781405310, -0.510522774207989750, -0.510479780358267580, -0.510436785232345920, -0.510393788830332480, +-0.510350791152334060, -0.510307792198459010, -0.510264791968814580, -0.510221790463508130, -0.510178787682646790, -0.510135783626338820, -0.510092778294691460, -0.510049771687812180, +-0.510006763805808010, -0.509963754648787400, -0.509920744216857400, -0.509877732510125470, -0.509834719528698850, -0.509791705272685800, -0.509748689742193560, -0.509705672937329160, +-0.509662654858200950, -0.509619635504916180, -0.509576614877582210, -0.509533592976306400, -0.509490569801197000, -0.509447545352361030, -0.509404519629906400, -0.509361492633939930, +-0.509318464364570180, -0.509275434821904290, -0.509232404006049740, -0.509189371917113890, -0.509146338555204970, -0.509103303920430130, -0.509060268012897050, -0.509017230832713000, +-0.508974192379986200, -0.508931152654823920, -0.508888111657333830, -0.508845069387622970, -0.508802025845799810, -0.508758981031971700, -0.508715934946245670, -0.508672887588730190, +-0.508629838959532510, -0.508586789058760200, -0.508543737886520630, -0.508500685442922040, -0.508457631728071680, -0.508414576742077350, -0.508371520485046080, -0.508328462957086450, +-0.508285404158305700, -0.508242344088811420, -0.508199282748710850, -0.508156220138112460, -0.508113156257123610, -0.508070091105851770, -0.508027024684404420, -0.507983956992889780, +-0.507940888031415240, -0.507897817800088250, -0.507854746299016950, -0.507811673528308800, -0.507768599488071510, -0.507725524178412320, -0.507682447599439700, -0.507639369751261000, +-0.507596290633983930, -0.507553210247715600, -0.507510128592564720, -0.507467045668638540, -0.507423961476044630, -0.507380876014890570, -0.507337789285284610, -0.507294701287334230, +-0.507251612021146990, -0.507208521486830490, -0.507165429684492960, -0.507122336614241890, -0.507079242276184620, -0.507036146670429620, -0.506993049797084260, -0.506949951656256230, +-0.506906852248052990, -0.506863751572583010, -0.506820649629953550, -0.506777546420272620, -0.506734441943647360, -0.506691336200186360, -0.506648229189996970, -0.506605120913187100, +-0.506562011369864010, -0.506518900560136260, -0.506475788484111340, -0.506432675141896940, -0.506389560533600400, -0.506346444659330320, -0.506303327519194160, -0.506260209113299720, +-0.506217089441754360, -0.506173968504666670, -0.506130846302144000, -0.506087722834293820, -0.506044598101224820, -0.506001472103044250, -0.505958344839860020, -0.505915216311779600, +-0.505872086518911470, -0.505828955461363080, -0.505785823139242360, -0.505742689552656670, -0.505699554701714680, -0.505656418586523770, -0.505613281207191730, -0.505570142563826260, +-0.505527002656535720, -0.505483861485427680, -0.505440719050610050, -0.505397575352190210, -0.505354430390276830, -0.505311284164977280, -0.505268136676399250, -0.505224987924651200, +-0.505181837909840730, -0.505138686632075620, -0.505095534091463460, -0.505052380288112720, -0.505009225222131210, -0.504966068893626500, -0.504922911302706280, -0.504879752449479140, +-0.504836592334052650, -0.504793430956534730, -0.504750268317032740, -0.504707104415655580, -0.504663939252510630, -0.504620772827705790, -0.504577605141348640, -0.504534436193547870, +-0.504491265984410960, -0.504448094514045600, -0.504404921782560360, -0.504361747790062710, -0.504318572536660790, -0.504275396022462070, -0.504232218247575140, -0.504189039212107780, +-0.504145858916167810, -0.504102677359862690, -0.504059494543301460, -0.504016310466591340, -0.503973125129840490, -0.503929938533156370, -0.503886750676647900, -0.503843561560422540, +-0.503800371184588200, -0.503757179549252590, -0.503713986654524490, -0.503670792500511280, -0.503627597087320860, -0.503584400415061690, -0.503541202483841600, -0.503498003293768480, +-0.503454802844950030, -0.503411601137494840, -0.503368398171510690, -0.503325193947105620, -0.503281988464387100, -0.503238781723464030, -0.503195573724444010, -0.503152364467435050, +-0.503109153952544740, -0.503065942179881990, -0.503022729149554370, -0.502979514861669920, -0.502936299316336320, -0.502893082513662270, -0.502849864453755680, -0.502806645136724240, +-0.502763424562675980, -0.502720202731719470, -0.502676979643962410, -0.502633755299512490, -0.502590529698478730, -0.502547302840968490, -0.502504074727090020, -0.502460845356951010, +-0.502417614730660270, -0.502374382848325470, -0.502331149710054770, -0.502287915315955740, -0.502244679666137390, -0.502201442760707330, -0.502158204599773560, -0.502114965183444010, +-0.502071724511827360, -0.502028482585031410, -0.501985239403164310, -0.501941994966333630, -0.501898749274648390, -0.501855502328216300, -0.501812254127145030, -0.501769004671543510, +-0.501725753961519530, -0.501682501997181120, -0.501639248778636080, -0.501595994305993330, -0.501552738579360560, -0.501509481598846010, -0.501466223364557260, -0.501422963876603460, +-0.501379703135092170, -0.501336441140131650, -0.501293177891829590, -0.501249913390295010, -0.501206647635635720, -0.501163380627959730, -0.501120112367374970, -0.501076842853990230, +-0.501033572087913440, -0.500990300069252270, -0.500947026798115760, -0.500903752274611700, -0.500860476498848240, -0.500817199470933280, -0.500773921190975630, -0.500730641659083210, +-0.500687360875364140, -0.500644078839926340, -0.500600795552878620, -0.500557511014328990, -0.500514225224385600, -0.500470938183156240, -0.500427649890749950, -0.500384360347274510, +-0.500341069552838190, -0.500297777507548780, -0.500254484211515300, -0.500211189664845680, -0.500167893867648040, -0.500124596820030300, -0.500081298522101480, -0.500037998973969280, +-0.499994698175741830, -0.499951396127527980, -0.499908092829435660, -0.499864788281573050, -0.499821482484048120, -0.499778175436969900, -0.499734867140446180, -0.499691557594585330, +-0.499648246799495210, -0.499604934755284840, -0.499561621462062120, -0.499518306919935370, -0.499474991129012450, -0.499431674089402480, -0.499388355801213270, -0.499345036264553180, +-0.499301715479530170, -0.499258393446253170, -0.499215070164830240, -0.499171745635369260, -0.499128419857979290, -0.499085092832768250, -0.499041764559844500, -0.498998435039315960, +-0.498955104271291690, -0.498911772255879680, -0.498868438993188220, -0.498825104483325290, -0.498781768726400010, -0.498738431722520250, -0.498695093471794470, -0.498651753974330540, +-0.498608413230237580, -0.498565071239623630, -0.498521728002597030, -0.498478383519265660, -0.498435037789738740, -0.498391690814124270, -0.498348342592530140, -0.498304993125065540, +-0.498261642411838460, -0.498218290452957290, -0.498174937248530010, -0.498131582798665760, -0.498088227103472560, -0.498044870163058760, -0.498001511977532450, -0.497958152547002710, +-0.497914791871577610, -0.497871429951365520, -0.497828066786474450, -0.497784702377013670, -0.497741336723091070, -0.497697969824815120, -0.497654601682293920, -0.497611232295636530, +-0.497567861664951090, -0.497524489790345640, -0.497481116671929350, -0.497437742309810190, -0.497394366704096760, -0.497350989854897010, -0.497307611762320130, -0.497264232426474270, +-0.497220851847467840, -0.497177470025408850, -0.497134086960406560, -0.497090702652569110, -0.497047317102004840, -0.497003930308821950, -0.496960542273129580, -0.496917152995035860, +-0.496873762474649260, -0.496830370712077920, -0.496786977707430970, -0.496743583460816600, -0.496700187972343280, -0.496656791242119090, -0.496613393270253280, -0.496569994056854040, +-0.496526593602029440, -0.496483191905888690, -0.496439788968539960, -0.496396384790091790, -0.496352979370652260, -0.496309572710330660, -0.496266164809235130, -0.496222755667474260, +-0.496179345285156000, -0.496135933662389840, -0.496092520799283840, -0.496049106695946480, -0.496005691352486010, -0.495962274769011720, -0.495918856945631700, -0.495875437882454580, +-0.495832017579588450, -0.495788596037142650, -0.495745173255225380, -0.495701749233944830, -0.495658323973410250, -0.495614897473729830, -0.495571469735012200, -0.495528040757365510, +-0.495484610540899100, -0.495441179085721160, -0.495397746391940290, -0.495354312459664660, -0.495310877289003640, -0.495267440880065410, -0.495224003232958620, -0.495180564347791400, +-0.495137124224673150, -0.495093682863712080, -0.495050240265016870, -0.495006796428695610, -0.494963351354857750, -0.494919905043611550, -0.494876457495065150, -0.494833008709328000, +-0.494789558686508370, -0.494746107426714820, -0.494702654930055610, -0.494659201196640200, -0.494615746226576720, -0.494572290019973880, -0.494528832576939970, -0.494485373897584350, +-0.494441913982015260, -0.494398452830341400, -0.494354990442671060, -0.494311526819113610, -0.494268061959777350, -0.494224595864770910, -0.494181128534202600, -0.494137659968181870, +-0.494094190166816990, -0.494050719130216590, -0.494007246858489070, -0.493963773351743800, -0.493920298610089070, -0.493876822633633250, -0.493833345422485690, -0.493789866976754870, +-0.493746387296549290, -0.493702906381977390, -0.493659424233148620, -0.493615940850171300, -0.493572456233154100, -0.493528970382205390, -0.493485483297434640, -0.493441994978950140, +-0.493398505426860700, -0.493355014641274630, -0.493311522622301380, -0.493268029370049320, -0.493224534884627200, -0.493181039166143310, -0.493137542214707240, -0.493094044030427340, +-0.493050544613411910, -0.493007043963770540, -0.492963542081611530, -0.492920038967043670, -0.492876534620175330, -0.492833029041116030, -0.492789522229974190, -0.492746014186858540, +-0.492702504911877450, -0.492658994405140490, -0.492615482666756030, -0.492571969696832870, -0.492528455495479410, -0.492484940062805190, -0.492441423398918610, -0.492397905503928480, +-0.492354386377943210, -0.492310866021072380, -0.492267344433424350, -0.492223821615107580, -0.492180297566231660, -0.492136772286904940, -0.492093245777236340, -0.492049718037334270, +-0.492006189067308250, -0.491962658867266760, -0.491919127437318580, -0.491875594777572260, -0.491832060888137300, -0.491788525769122240, -0.491744989420635830, -0.491701451842786570, +-0.491657913035684010, -0.491614372999436720, -0.491570831734153500, -0.491527289239942820, -0.491483745516914320, -0.491440200565176400, -0.491396654384837650, -0.491353106976007590, +-0.491309558338794810, -0.491266008473308150, -0.491222457379656030, -0.491178905057948150, -0.491135351508293070, -0.491091796730799560, -0.491048240725576180, -0.491004683492732570, +-0.490961125032377320, -0.490917565344619170, -0.490874004429566800, -0.490830442287329750, -0.490786878918016590, -0.490743314321736290, -0.490699748498597270, -0.490656181448709260, +-0.490612613172180800, -0.490569043669120850, -0.490525472939637890, -0.490481900983841590, -0.490438327801840600, -0.490394753393743330, -0.490351177759659640, -0.490307600899697940, +-0.490264022813967300, -0.490220443502576150, -0.490176862965634340, -0.490133281203250340, -0.490089698215533160, -0.490046114002591350, -0.490002528564534580, -0.489958941901471550, +-0.489915354013511160, -0.489871764900761950, -0.489828174563333770, -0.489784583001335150, -0.489740990214875050, -0.489697396204062110, -0.489653800969006070, -0.489610204509815460, +-0.489566606826599030, -0.489523007919466460, -0.489479407788526330, -0.489435806433887730, -0.489392203855659180, -0.489348600053950530, -0.489304995028870370, -0.489261388780527720, +-0.489217781309031260, -0.489174172614490700, -0.489130562697014710, -0.489086951556712280, -0.489043339193692140, -0.488999725608063980, -0.488956110799936560, -0.488912494769418840, +-0.488868877516619500, -0.488825259041648360, -0.488781639344614050, -0.488738018425625250, -0.488694396284791830, -0.488650772922222420, -0.488607148338026040, -0.488563522532311450, +-0.488519895505188370, -0.488476267256765630, -0.488432637787152180, -0.488389007096456720, -0.488345375184789150, -0.488301742052258180, -0.488258107698972820, -0.488214472125041820, +-0.488170835330575040, -0.488127197315681160, -0.488083558080469270, -0.488039917625048110, -0.487996275949527550, -0.487952633054016320, -0.487908988938623440, -0.487865343603457740, +-0.487821697048629100, -0.487778049274246170, -0.487734400280417760, -0.487690750067253710, -0.487647098634862770, -0.487603445983354140, -0.487559792112836510, -0.487516137023419730, +-0.487472480715212650, -0.487428823188324370, -0.487385164442863620, -0.487341504478940310, -0.487297843296663310, -0.487254180896141700, -0.487210517277484210, -0.487166852440800820, +-0.487123186386200340, -0.487079519113791830, -0.487035850623684210, -0.486992180915987280, -0.486948509990809960, -0.486904837848260940, -0.486861164488450180, -0.486817489911486550, +-0.486773814117479220, -0.486730137106536950, -0.486686458878769710, -0.486642779434286350, -0.486599098773196010, -0.486555416895607550, -0.486511733801630930, -0.486468049491374950, +-0.486424363964948870, -0.486380677222461530, -0.486336989264022860, -0.486293300089741700, -0.486249609699727300, -0.486205918094088470, -0.486162225272935290, -0.486118531236376490, +-0.486074835984521000, -0.486031139517478780, -0.485987441835358750, -0.485943742938270080, -0.485900042826321710, -0.485856341499623590, -0.485812638958284580, -0.485768935202414040, +-0.485725230232120770, -0.485681524047514750, -0.485637816648704980, -0.485594108035800660, -0.485550398208910660, -0.485506687168145050, -0.485462974913612730, -0.485419261445423020, +-0.485375546763684720, -0.485331830868507950, -0.485288113760001580, -0.485244395438274580, -0.485200675903436960, -0.485156955155597650, -0.485113233194865930, -0.485069510021350790, +-0.485025785635162240, -0.484982060036409200, -0.484938333225201020, -0.484894605201646620, -0.484850875965856130, -0.484807145517938410, -0.484763413858002870, -0.484719680986158360, +-0.484675946902515090, -0.484632211607181900, -0.484588475100268200, -0.484544737381882920, -0.484500998452136180, -0.484457258311136950, -0.484413516958994590, -0.484369774395818020, +-0.484326030621717420, -0.484282285636801760, -0.484238539441180000, -0.484194792034962240, -0.484151043418257540, -0.484107293591175210, -0.484063542553824280, -0.484019790306314810, +-0.483976036848755950, -0.483932282181256950, -0.483888526303926870, -0.483844769216875860, -0.483801010920212940, -0.483757251414047520, -0.483713490698488510, -0.483669728773646220, +-0.483625965639629560, -0.483582201296548050, -0.483538435744510610, -0.483494668983627470, -0.483450901014007670, -0.483407131835760230, -0.483363361448995330, -0.483319589853822060, +-0.483275817050349780, -0.483232043038687550, -0.483188267818945640, -0.483144491391233060, -0.483100713755659270, -0.483056934912333260, -0.483013154861365310, -0.482969373602864520, +-0.482925591136940220, -0.482881807463701630, -0.482838022583258860, -0.482794236495721060, -0.482750449201197640, -0.482706660699797730, -0.482662870991631580, -0.482619080076808200, +-0.482575287955436800, -0.482531494627627510, -0.482487700093489510, -0.482443904353132220, -0.482400107406664840, -0.482356309254197540, -0.482312509895839510, -0.482268709331700180, +-0.482224907561888680, -0.482181104586515310, -0.482137300405689140, -0.482093495019519760, -0.482049688428116240, -0.482005880631588890, -0.481962071630046840, -0.481918261423599610, +-0.481874450012356350, -0.481830637396427400, -0.481786823575921790, -0.481743008550949090, -0.481699192321618560, -0.481655374888040390, -0.481611556250323810, -0.481567736408577920, +-0.481523915362913110, -0.481480093113438480, -0.481436269660263650, -0.481392445003497700, -0.481348619143251110, -0.481304792079632890, -0.481260963812752740, -0.481217134342719790, +-0.481173303669644390, -0.481129471793635740, -0.481085638714803370, -0.481041804433256560, -0.480997968949105630, -0.480954132262459750, -0.480910294373428530, -0.480866455282121190, +-0.480822614988648140, -0.480778773493118540, -0.480734930795641560, -0.480691086896327720, -0.480647241795286120, -0.480603395492626430, -0.480559547988457850, -0.480515699282890780, +-0.480471849376034490, -0.480427998267998590, -0.480384145958892230, -0.480340292448825980, -0.480296437737908980, -0.480252581826250860, -0.480208724713960920, -0.480164866401149530, +-0.480121006887925970, -0.480077146174399950, -0.480033284260680590, -0.479989421146878480, -0.479945556833102800, -0.479901691319462810, -0.479857824606069020, -0.479813956693030620, +-0.479770087580457420, -0.479726217268458540, -0.479682345757144520, -0.479638473046624600, -0.479594599137008530, -0.479550724028405590, -0.479506847720926220, -0.479462970214679710, +-0.479419091509775800, -0.479375211606323790, -0.479331330504434110, -0.479287448204216090, -0.479243564705779500, -0.479199680009233580, -0.479155794114688840, -0.479111907022254590, +-0.479068018732040250, -0.479024129244156220, -0.478980238558711860, -0.478936346675816860, -0.478892453595580690, -0.478848559318113710, -0.478804663843525380, -0.478760767171925390, +-0.478716869303423050, -0.478672970238128940, -0.478629069976152450, -0.478585168517603240, -0.478541265862590710, -0.478497362011225450, -0.478453456963616740, -0.478409550719874400, +-0.478365643280107830, -0.478321734644427510, -0.478277824812942840, -0.478233913785763630, -0.478190001562999230, -0.478146088144760230, -0.478102173531156030, -0.478058257722295990, +-0.478014340718290690, -0.477970422519249540, -0.477926503125282290, -0.477882582536498460, -0.477838660753008520, -0.477794737774921980, -0.477750813602348560, -0.477706888235397700, +-0.477662961674180040, -0.477619033918804950, -0.477575104969382270, -0.477531174826021480, -0.477487243488833150, -0.477443310957926640, -0.477399377233411910, -0.477355442315398340, +-0.477311506203996540, -0.477267568899315990, -0.477223630401466090, -0.477179690710557550, -0.477135749826699760, -0.477091807750002590, -0.477047864480575570, -0.477003920018529200, +-0.476959974363973080, -0.476916027517017000, -0.476872079477770490, -0.476828130246344130, -0.476784179822847490, -0.476740228207390370, -0.476696275400082300, -0.476652321401033920, +-0.476608366210354740, -0.476564409828154620, -0.476520452254543150, -0.476476493489630890, -0.476432533533527440, -0.476388572386342250, -0.476344610048185960, -0.476300646519168200, +-0.476256681799398840, -0.476212715888987340, -0.476168748788044440, -0.476124780496679720, -0.476080811015002990, -0.476036840343123880, -0.475992868481153080, -0.475948895429200050, +-0.475904921187374820, -0.475860945755786910, -0.475816969134547020, -0.475772991323764660, -0.475729012323549860, -0.475685032134012140, -0.475641050755262200, -0.475597068187409660, +-0.475553084430564430, -0.475509099484836160, -0.475465113350335480, -0.475421126027172010, -0.475377137515455350, -0.475333147815296230, -0.475289156926804290, -0.475245164850089390, +-0.475201171585261210, -0.475157177132430500, -0.475113181491706840, -0.475069184663200250, -0.475025186647020260, -0.474981187443277720, -0.474937187052082210, -0.474893185473543760, +-0.474849182707771930, -0.474805178754877490, -0.474761173614970170, -0.474717167288159880, -0.474673159774556320, -0.474629151074270230, -0.474585141187411240, -0.474541130114089050, +-0.474497117854414400, -0.474453104408496970, -0.474409089776446750, -0.474365073958373410, -0.474321056954387810, -0.474277038764599530, -0.474233019389118720, -0.474188998828054930, +-0.474144977081519040, -0.474100954149620670, -0.474056930032469960, -0.474012904730176540, -0.473968878242851220, -0.473924850570603680, -0.473880821713544060, -0.473836791671782000, +-0.473792760445428340, -0.473748728034592780, -0.473704694439385010, -0.473660659659915880, -0.473616623696295090, -0.473572586548632770, -0.473528548217038600, -0.473484508701623400, +-0.473440468002497010, -0.473396426119769400, -0.473352383053550320, -0.473308338803950680, -0.473264293371080220, -0.473220246755049030, -0.473176198955966800, -0.473132149973944480, +-0.473088099809091780, -0.473044048461518820, -0.472999995931335350, -0.472955942218652340, -0.472911887323579420, -0.472867831246226390, -0.472823773986704170, -0.472779715545122550, +-0.472735655921591610, -0.472691595116221110, -0.472647533129122050, -0.472603469960404200, -0.472559405610177620, -0.472515340078552120, -0.472471273365638710, -0.472427205471547100, +-0.472383136396387460, -0.472339066140269600, -0.472294994703304490, -0.472250922085601880, -0.472206848287271940, -0.472162773308424490, -0.472118697149170540, -0.472074619809619790, +-0.472030541289882530, -0.471986461590068520, -0.471942380710288770, -0.471898298650653030, -0.471854215411271150, -0.471810130992254160, -0.471766045393711810, -0.471721958615754390, +-0.471677870658491650, -0.471633781522034610, -0.471589691206493130, -0.471545599711977400, -0.471501507038597330, -0.471457413186463840, -0.471413318155686820, -0.471369221946376540, +-0.471325124558642780, -0.471281025992596640, -0.471236926248347900, -0.471192825326006870, -0.471148723225683350, -0.471104619947488420, -0.471060515491531940, -0.471016409857923810, +-0.470972303046775010, -0.470928195058195500, -0.470884085892295470, -0.470839975549184830, -0.470795864028974660, -0.470751751331774830, -0.470707637457695620, -0.470663522406846890, +-0.470619406179339780, -0.470575288775284150, -0.470531170194790290, -0.470487050437968120, -0.470442929504928720, -0.470398807395781990, -0.470354684110638300, -0.470310559649607440, +-0.470266434012800550, -0.470222307200327650, -0.470178179212298540, -0.470134050048824360, -0.470089919710015120, -0.470045788195981030, -0.470001655506832090, -0.469957521642679400, +-0.469913386603632910, -0.469869250389802980, -0.469825113001299480, -0.469780974438233630, -0.469736834700715310, -0.469692693788854920, -0.469648551702762430, -0.469604408442548920, +-0.469560264008324400, -0.469516118400199240, -0.469471971618283360, -0.469427823662687930, -0.469383674533522980, -0.469339524230898810, -0.469295372754925500, -0.469251220105714070, +-0.469207066283374660, -0.469162911288017130, -0.469118755119752760, -0.469074597778691480, -0.469030439264943700, -0.468986279578619440, -0.468942118719829880, -0.468897956688685060, +-0.468853793485295270, -0.468809629109770640, -0.468765463562222370, -0.468721296842760370, -0.468677128951495160, -0.468632959888536760, -0.468588789653996310, -0.468544618247983930, +-0.468500445670609940, -0.468456271921984520, -0.468412097002218750, -0.468367920911422760, -0.468323743649706580, -0.468279565217181450, -0.468235385613957390, -0.468191204840144870, +-0.468147022895853970, -0.468102839781195880, -0.468058655496280670, -0.468014470041218820, -0.467970283416120460, -0.467926095621096720, -0.467881906656257780, -0.467837716521714080, +-0.467793525217575670, -0.467749332743953860, -0.467705139100958680, -0.467660944288700700, -0.467616748307289940, -0.467572551156837710, -0.467528352837454090, -0.467484153349249200, +-0.467439952692334350, -0.467395750866819560, -0.467351547872815460, -0.467307343710432030, -0.467263138379780670, -0.467218931880971470, -0.467174724214114930, -0.467130515379321210, +-0.467086305376701590, -0.467042094206366170, -0.466997881868425560, -0.466953668362989790, -0.466909453690170280, -0.466865237850077160, -0.466821020842820960, -0.466776802668511740, +-0.466732583327260970, -0.466688362819178690, -0.466644141144375520, -0.466599918302961660, -0.466555694295048340, -0.466511469120745760, -0.466467242780164160, -0.466423015273414840, +-0.466378786600608000, -0.466334556761854150, -0.466290325757263540, -0.466246093586947520, -0.466201860251016230, -0.466157625749580360, -0.466113390082749990, -0.466069153250636530, +-0.466024915253350160, -0.465980676091001520, -0.465936435763700860, -0.465892194271559420, -0.465847951614687560, -0.465803707793195800, -0.465759462807194320, -0.465715216656794660, +-0.465670969342106890, -0.465626720863241360, -0.465582471220309380, -0.465538220413421240, -0.465493968442687530, -0.465449715308218550, -0.465405461010125640, -0.465361205548519120, +-0.465316948923509550, -0.465272691135207190, -0.465228432183723560, -0.465184172069168790, -0.465139910791653620, -0.465095648351288250, -0.465051384748184190, -0.465007119982451640, +-0.464962854054201350, -0.464918586963543490, -0.464874318710589540, -0.464830049295449800, -0.464785778718234570, -0.464741506979055250, -0.464697234078022160, -0.464652960015246030, +-0.464608684790837060, -0.464564408404906810, -0.464520130857565550, -0.464475852148923900, -0.464431572279092260, -0.464387291248182120, -0.464343009056303710, -0.464298725703567780, +-0.464254441190084630, -0.464210155515965780, -0.464165868681321590, -0.464121580686262690, -0.464077291530899440, -0.464033001215343350, -0.463988709739704740, -0.463944417104094010, +-0.463900123308622630, -0.463855828353400890, -0.463811532238539600, -0.463767234964149120, -0.463722936530340910, -0.463678636937225390, -0.463634336184913230, -0.463590034273514860, +-0.463545731203141850, -0.463501426973904450, -0.463457121585913510, -0.463412815039279340, -0.463368507334113560, -0.463324198470526470, -0.463279888448628940, -0.463235577268531260, +-0.463191264930345070, -0.463146951434180660, -0.463102636780148900, -0.463058320968360190, -0.463014003998926000, -0.462969685871956860, -0.462925366587563060, -0.462881046145856290, +-0.462836724546946850, -0.462792401790945660, -0.462748077877963020, -0.462703752808110600, -0.462659426581498830, -0.462615099198238460, -0.462570770658439930, -0.462526440962214900, +-0.462482110109673770, -0.462437778100927340, -0.462393444936086080, -0.462349110615261630, -0.462304775138564330, -0.462260438506105150, -0.462216100717994460, -0.462171761774343940, +-0.462127421675263990, -0.462083080420865100, -0.462038738011258940, -0.461994394446555880, -0.461950049726866820, -0.461905703852302290, -0.461861356822973910, -0.461817008638992110, +-0.461772659300467790, -0.461728308807511420, -0.461683957160234640, -0.461639604358748010, -0.461595250403162400, -0.461550895293588230, -0.461506539030137220, -0.461462181612919850, +-0.461417823042047040, -0.461373463317629300, -0.461329102439778260, -0.461284740408604450, -0.461240377224218460, -0.461196012886731840, -0.461151647396255250, -0.461107280752899530, +-0.461062912956775210, -0.461018544007993970, -0.460974173906666400, -0.460929802652903400, -0.460885430246815500, -0.460841056688514440, -0.460796681978110690, -0.460752306115715270, +-0.460707929101438650, -0.460663550935392630, -0.460619171617687730, -0.460574791148434910, -0.460530409527744710, -0.460486026755728920, -0.460441642832498000, -0.460397257758163040, +-0.460352871532834500, -0.460308484156624120, -0.460264095629642600, -0.460219705952000460, -0.460175315123809440, -0.460130923145180060, -0.460086530016223460, -0.460042135737050110, +-0.459997740307771800, -0.459953343728499160, -0.459908945999343180, -0.459864547120414410, -0.459820147091824670, -0.459775745913684530, -0.459731343586105070, -0.459686940109196860, +-0.459642535483071660, -0.459598129707840140, -0.459553722783613340, -0.459509314710501770, -0.459464905488617350, -0.459420495118070650, -0.459376083598972310, -0.459331670931434180, +-0.459287257115566840, -0.459242842151481370, -0.459198426039288400, -0.459154008779099790, -0.459109590371026110, -0.459065170815178500, -0.459020750111667540, -0.458976328260605080, +-0.458931905262101870, -0.458887481116268810, -0.458843055823216720, -0.458798629383057380, -0.458754201795901430, -0.458709773061860000, -0.458665343181043740, -0.458620912153564490, +-0.458576479979532990, -0.458532046659059890, -0.458487612192257090, -0.458443176579235220, -0.458398739820105430, -0.458354301914978390, -0.458309862863966020, -0.458265422667178960, +-0.458220981324728330, -0.458176538836724880, -0.458132095203280460, -0.458087650424505830, -0.458043204500512060, -0.457998757431409890, -0.457954309217311170, -0.457909859858326720, +-0.457865409354567650, -0.457820957706144620, -0.457776504913169620, -0.457732050975753310, -0.457687595894006540, -0.457643139668041100, -0.457598682297967850, -0.457554223783897930, +-0.457509764125942020, -0.457465303324212090, -0.457420841378818890, -0.457376378289873650, -0.457331914057487020, -0.457287448681771010, -0.457242982162836380, -0.457198514500794300, +-0.457154045695755520, -0.457109575747832010, -0.457065104657134570, -0.457020632423774390, -0.456976159047862260, -0.456931684529510050, -0.456887208868828660, -0.456842732065929290, +-0.456798254120922680, -0.456753775033920780, -0.456709294805034470, -0.456664813434374540, -0.456620330922053010, -0.456575847268180570, -0.456531362472868570, -0.456486876536227770, +-0.456442389458370120, -0.456397901239406540, -0.456353411879448220, -0.456308921378605960, -0.456264429736991770, -0.456219936954716520, -0.456175443031891450, -0.456130947968627350, +-0.456086451765036260, -0.456041954421229080, -0.455997455937317000, -0.455952956313410870, -0.455908455549622780, -0.455863953646063520, -0.455819450602843960, -0.455774946420076210, +-0.455730441097871090, -0.455685934636339880, -0.455641427035593400, -0.455596918295743780, -0.455552408416901810, -0.455507897399178910, -0.455463385242685810, -0.455418871947534660, +-0.455374357513836310, -0.455329841941702060, -0.455285325231242880, -0.455240807382570720, -0.455196288395796570, -0.455151768271031650, -0.455107247008386950, -0.455062724607974530, +-0.455018201069905310, -0.454973676394290150, -0.454929150581241230, -0.454884623630869460, -0.454840095543286080, -0.454795566318602070, -0.454751035956929560, -0.454706504458379460, +-0.454661971823063060, -0.454617438051091390, -0.454572903142576480, -0.454528367097629340, -0.454483829916361270, -0.454439291598883240, -0.454394752145307390, -0.454350211555744620, +-0.454305669830306350, -0.454261126969103480, -0.454216582972248260, -0.454172037839851490, -0.454127491572024700, -0.454082944168878730, -0.454038395630525840, -0.453993845957076920, +-0.453949295148643020, -0.453904743205336250, -0.453860190127267640, -0.453815635914548600, -0.453771080567289990, -0.453726524085604150, -0.453681966469601960, -0.453637407719394870, +-0.453592847835093850, -0.453548286816811090, -0.453503724664657600, -0.453459161378744870, -0.453414596959183790, -0.453370031406086620, -0.453325464719564420, -0.453280896899728500, +-0.453236327946689940, -0.453191757860560980, -0.453147186641452650, -0.453102614289475900, -0.453058040804743050, -0.453013466187365100, -0.452968890437453480, -0.452924313555119200, +-0.452879735540474560, -0.452835156393630590, -0.452790576114698750, -0.452745994703790010, -0.452701412161016730, -0.452656828486489910, -0.452612243680320990, -0.452567657742621090, +-0.452523070673502450, -0.452478482473076150, -0.452433893141453600, -0.452389302678745940, -0.452344711085065410, -0.452300118360523140, -0.452255524505230160, -0.452210929519298750, +-0.452166333402840010, -0.452121736155965460, -0.452077137778786160, -0.452032538271414430, -0.451987937633961330, -0.451943335866538400, -0.451898732969256700, -0.451854128942228590, +-0.451809523785565210, -0.451764917499377970, -0.451720310083778000, -0.451675701538877710, -0.451631091864788170, -0.451586481061620860, -0.451541869129486960, -0.451497256068498830, +-0.451452641878767550, -0.451408026560404240, -0.451363410113521270, -0.451318792538229760, -0.451274173834641250, -0.451229554002866960, -0.451184933043019150, -0.451140310955209010, +-0.451095687739548110, -0.451051063396147590, -0.451006437925119800, -0.450961811326575920, -0.450917183600627490, -0.450872554747385750, -0.450827924766962980, -0.450783293659470450, +-0.450738661425019620, -0.450694028063721770, -0.450649393575689280, -0.450604757961033280, -0.450560121219865330, -0.450515483352296740, -0.450470844358439870, -0.450426204238405850, +-0.450381562992305920, -0.450336920620252430, -0.450292277122356700, -0.450247632498730290, -0.450202986749484390, -0.450158339874731360, -0.450113691874582560, -0.450069042749149490, +-0.450024392498543420, -0.449979741122876750, -0.449935088622260780, -0.449890434996807030, -0.449845780246626860, -0.449801124371832620, -0.449756467372535500, -0.449711809248847290, +-0.449667150000879150, -0.449622489628743460, -0.449577828132551650, -0.449533165512414790, -0.449488501768445460, -0.449443836900754850, -0.449399170909454690, -0.449354503794656130, +-0.449309835556471750, -0.449265166195012830, -0.449220495710390910, -0.449175824102717390, -0.449131151372104740, -0.449086477518664150, -0.449041802542507420, -0.448997126443745790, +-0.448952449222491720, -0.448907770878856530, -0.448863091412951890, -0.448818410824889160, -0.448773729114780750, -0.448729046282738080, -0.448684362328872320, -0.448639677253296120, +-0.448594991056120720, -0.448550303737457800, -0.448505615297418780, -0.448460925736116070, -0.448416235053661070, -0.448371543250165480, -0.448326850325740660, -0.448282156280499060, +-0.448237461114552090, -0.448192764828011460, -0.448148067420988560, -0.448103368893595870, -0.448058669245944730, -0.448013968478146950, -0.447969266590313830, -0.447924563582557940, +-0.447879859454990650, -0.447835154207723740, -0.447790447840868520, -0.447745740354537570, -0.447701031748842290, -0.447656322023893990, -0.447611611179805360, -0.447566899216687630, +-0.447522186134652670, -0.447477471933811880, -0.447432756614277780, -0.447388040176161790, -0.447343322619575710, -0.447298603944630890, -0.447253884151440020, -0.447209163240114390, +-0.447164441210765870, -0.447119718063505870, -0.447074993798446950, -0.447030268415700540, -0.446985541915378480, -0.446940814297592140, -0.446896085562454190, -0.446851355710076000, +-0.446806624740569040, -0.446761892654045870, -0.446717159450618020, -0.446672425130397290, -0.446627689693495030, -0.446582953140024000, -0.446538215470095590, -0.446493476683821610, +-0.446448736781313580, -0.446403995762684080, -0.446359253628044570, -0.446314510377506970, -0.446269766011182680, -0.446225020529184340, -0.446180273931623460, -0.446135526218611910, +-0.446090777390261150, -0.446046027446683870, -0.446001276387991470, -0.445956524214295550, -0.445911770925708660, -0.445867016522342340, -0.445822261004308500, -0.445777504371718590, +-0.445732746624685370, -0.445687987763320250, -0.445643227787735130, -0.445598466698041600, -0.445553704494352280, -0.445508941176778640, -0.445464176745432710, -0.445419411200425940, +-0.445374644541871030, -0.445329876769879510, -0.445285107884563270, -0.445240337886033900, -0.445195566774404080, -0.445150794549785340, -0.445106021212289200, -0.445061246762028410, +-0.445016471199114530, -0.444971694523659420, -0.444926916735774720, -0.444882137835573120, -0.444837357823166190, -0.444792576698665840, -0.444747794462183650, -0.444703011113832370, +-0.444658226653723570, -0.444613441081969210, -0.444568654398680820, -0.444523866603971250, -0.444479077697951970, -0.444434287680735010, -0.444389496552431930, -0.444344704313155480, +-0.444299910963017300, -0.444255116502129340, -0.444210320930603200, -0.444165524248551660, -0.444120726456086250, -0.444075927553318710, -0.444031127540361670, -0.443986326417326880, +-0.443941524184326250, -0.443896720841471360, -0.443851916388875170, -0.443807110826649090, -0.443762304154905310, -0.443717496373755290, -0.443672687483312010, -0.443627877483686980, +-0.443583066374992230, -0.443538254157339440, -0.443493440830841410, -0.443448626395609780, -0.443403810851756620, -0.443358994199393450, -0.443314176438633250, -0.443269357569587630, +-0.443224537592368180, -0.443179716507087760, -0.443134894313858110, -0.443090071012791190, -0.443045246603998690, -0.443000421087593520, -0.442955594463687260, -0.442910766732391990, +-0.442865937893819450, -0.442821107948082440, -0.442776276895292640, -0.442731444735562200, -0.442686611469002730, -0.442641777095727110, -0.442596941615847060, -0.442552105029474670, +-0.442507267336721580, -0.442462428537700740, -0.442417588632523840, -0.442372747621302580, -0.442327905504149800, -0.442283062281177310, -0.442238217952497130, -0.442193372518221050, +-0.442148525978461880, -0.442103678333331420, -0.442058829582941790, -0.442013979727404640, -0.441969128766832970, -0.441924276701338490, -0.441879423531033320, -0.441834569256029150, +-0.441789713876439010, -0.441744857392374570, -0.441699999803947970, -0.441655141111270970, -0.441610281314456510, -0.441565420413616350, -0.441520558408862670, -0.441475695300307170, +-0.441430831088062800, -0.441385965772241430, -0.441341099352954680, -0.441296231830315630, -0.441251363204435980, -0.441206493475427900, -0.441161622643403200, -0.441116750708474840, +-0.441071877670754620, -0.441027003530354680, -0.440982128287386870, -0.440937251941964090, -0.440892374494198210, -0.440847495944201420, -0.440802616292085450, -0.440757735537963380, +-0.440712853681946900, -0.440667970724148370, -0.440623086664679480, -0.440578201503653230, -0.440533315241181500, -0.440488427877376130, -0.440443539412350040, -0.440398649846215130, +-0.440353759179083590, -0.440308867411067230, -0.440263974542279110, -0.440219080572831100, -0.440174185502835320, -0.440129289332403690, -0.440084392061649290, -0.440039493690683850, +-0.439994594219619730, -0.439949693648568670, -0.439904791977643820, -0.439859889206956960, -0.439814985336620390, -0.439770080366745920, -0.439725174297446730, -0.439680267128834510, +-0.439635358861021290, -0.439590449494120070, -0.439545539028242730, -0.439500627463501490, -0.439455714800008330, -0.439410801037876280, -0.439365886177217170, -0.439320970218143430, +-0.439276053160766790, -0.439231135005200450, -0.439186215751556310, -0.439141295399946560, -0.439096373950483230, -0.439051451403279340, -0.439006527758446840, -0.438961603016097990, +-0.438916677176344750, -0.438871750239300200, -0.438826822205076290, -0.438781893073784960, -0.438736962845539260, -0.438692031520451160, -0.438647099098632980, -0.438602165580196600, +-0.438557230965255280, -0.438512295253920880, -0.438467358446305690, -0.438422420542521730, -0.438377481542682130, -0.438332541446898820, -0.438287600255284180, -0.438242657967950090, +-0.438197714585009780, -0.438152770106575220, -0.438107824532758650, -0.438062877863672210, -0.438017930099428910, -0.437972981240140840, -0.437928031285920280, -0.437883080236879220, +-0.437838128093130880, -0.437793174854787250, -0.437748220521960270, -0.437703265094763150, -0.437658308573307840, -0.437613350957706760, -0.437568392248071920, -0.437523432444516470, +-0.437478471547152470, -0.437433509556092280, -0.437388546471447930, -0.437343582293332590, -0.437298617021858290, -0.437253650657137450, -0.437208683199282130, -0.437163714648405420, +-0.437118745004619500, -0.437073774268036670, -0.437028802438769020, -0.436983829516929770, -0.436938855502630950, -0.436893880395984590, -0.436848904197103930, -0.436803926906101040, +-0.436758948523088280, -0.436713969048177770, -0.436668988481482720, -0.436624006823115200, -0.436579024073187720, -0.436534040231812190, -0.436489055299102040, -0.436444069275169210, +-0.436399082160126180, -0.436354093954085090, -0.436309104657159160, -0.436264114269460490, -0.436219122791101480, -0.436174130222194310, -0.436129136562852180, -0.436084141813187220, +-0.436039145973311500, -0.435994149043338330, -0.435949151023379830, -0.435904151913548370, -0.435859151713956170, -0.435814150424716500, -0.435769148045941470, -0.435724144577743500, +-0.435679140020234830, -0.435634134373528710, -0.435589127637737220, -0.435544119812972920, -0.435499110899347950, -0.435454100896975560, -0.435409089805967930, -0.435364077626437580, +-0.435319064358496650, -0.435274050002258440, -0.435229034557835130, -0.435184018025339240, -0.435139000404882850, -0.435093981696579420, -0.435048961900540990, -0.435003941016879780, +-0.434958919045709100, -0.434913895987141140, -0.434868871841288420, -0.434823846608263180, -0.434778820288178660, -0.434733792881147110, -0.434688764387281050, -0.434643734806692720, +-0.434598704139495420, -0.434553672385801390, -0.434508639545723160, -0.434463605619372970, -0.434418570606864120, -0.434373534508308850, -0.434328497323819780, -0.434283459053509010, +-0.434238419697490050, -0.434193379255874980, -0.434148337728776150, -0.434103295116306800, -0.434058251418579230, -0.434013206635706030, -0.433968160767799430, -0.433923113814972840, +-0.433878065777338400, -0.433833016655008840, -0.433787966448096360, -0.433742915156714310, -0.433697862780975050, -0.433652809320991100, -0.433607754776874690, -0.433562699148739290, +-0.433517642436697210, -0.433472584640860970, -0.433427525761342860, -0.433382465798256400, -0.433337404751713730, -0.433292342621827140, -0.433247279408710110, -0.433202215112474860, +-0.433157149733234100, -0.433112083271100070, -0.433067015726186220, -0.433021947098604810, -0.432976877388468570, -0.432931806595889700, -0.432886734720981770, -0.432841661763856970, +-0.432796587724627980, -0.432751512603407160, -0.432706436400307930, -0.432661359115442680, -0.432616280748923940, -0.432571201300864130, -0.432526120771376750, -0.432481039160574070, +-0.432435956468568360, -0.432390872695473160, -0.432345787841400760, -0.432300701906463970, -0.432255614890774960, -0.432210526794447330, -0.432165437617593350, -0.432120347360325840, +-0.432075256022756980, -0.432030163605000460, -0.431985070107168470, -0.431939975529373850, -0.431894879871728870, -0.431849783134347130, -0.431804685317340900, -0.431759586420822910, +-0.431714486444905620, -0.431669385389702510, -0.431624283255325920, -0.431579180041888610, -0.431534075749502980, -0.431488970378282490, -0.431443863928339670, -0.431398756399786750, +-0.431353647792737330, -0.431308538107303800, -0.431263427343598900, -0.431218315501735060, -0.431173202581825840, -0.431128088583983600, -0.431082973508321140, -0.431037857354950820, +-0.430992740123986310, -0.430947621815539920, -0.430902502429724440, -0.430857381966652350, -0.430812260426437220, -0.430767137809191400, -0.430722014115027750, -0.430676889344058680, +-0.430631763496397760, -0.430586636572157460, -0.430541508571450130, -0.430496379494389460, -0.430451249341087860, -0.430406118111658080, -0.430360985806212630, -0.430315852424865140, +-0.430270717967727980, -0.430225582434914040, -0.430180445826535750, -0.430135308142706780, -0.430090169383539500, -0.430045029549146810, -0.429999888639641110, -0.429954746655136110, +-0.429909603595744260, -0.429864459461578420, -0.429819314252750990, -0.429774167969375680, -0.429729020611564980, -0.429683872179431270, -0.429638722673088340, -0.429593572092648590, +-0.429548420438224890, -0.429503267709929750, -0.429458113907876860, -0.429412959032178630, -0.429367803082948090, -0.429322646060297570, -0.429277487964340840, -0.429232328795190410, +-0.429187168552959190, -0.429142007237759580, -0.429096844849705390, -0.429051681388909090, -0.429006516855483580, -0.428961351249541380, -0.428916184571196180, -0.428871016820560560, +-0.428825847997747370, -0.428780678102869180, -0.428735507136039700, -0.428690335097371420, -0.428645161986976890, -0.428599987804969880, -0.428554812551462940, -0.428509636226568900, +-0.428464458830400410, -0.428419280363071200, -0.428374100824693740, -0.428328920215381050, -0.428283738535245650, -0.428238555784401290, -0.428193371962960530, -0.428148187071036410, +-0.428103001108741390, -0.428057814076189260, -0.428012625973492540, -0.427967436800764320, -0.427922246558117110, -0.427877055245664660, -0.427831862863519600, -0.427786669411794440, +-0.427741474890603050, -0.427696279300057940, -0.427651082640272180, -0.427605884911358260, -0.427560686113430070, -0.427515486246600130, -0.427470285310981470, -0.427425083306686720, +-0.427379880233829670, -0.427334676092522900, -0.427289470882879440, -0.427244264605011910, -0.427199057259034120, -0.427153848845058690, -0.427108639363198650, -0.427063428813566570, +-0.427018217196276360, -0.426973004511440600, -0.426927790759171920, -0.426882575939584120, -0.426837360052789940, -0.426792143098902340, -0.426746925078034020, -0.426701705990298720, +-0.426656485835809170, -0.426611264614678460, -0.426566042327019170, -0.426520818972945140, -0.426475594552569060, -0.426430369066004010, -0.426385142513362680, -0.426339914894758860, +-0.426294686210305250, -0.426249456460114920, -0.426204225644300550, -0.426158993762976000, -0.426113760816253960, -0.426068526804247170, -0.426023291727069430, -0.425978055584833480, +-0.425932818377652340, -0.425887580105638820, -0.425842340768906700, -0.425797100367568790, -0.425751858901738060, -0.425706616371527350, -0.425661372777050410, -0.425616128118420090, +-0.425570882395749470, -0.425525635609151240, -0.425480387758739310, -0.425435138844626410, -0.425389888866925640, -0.425344637825749770, -0.425299385721212670, -0.425254132553427140, +-0.425208878322506310, -0.425163623028562860, -0.425118366671710710, -0.425073109252062710, -0.425027850769731490, -0.424982591224831060, -0.424937330617474180, -0.424892068947773930, +-0.424846806215843140, -0.424801542421795690, -0.424756277565744410, -0.424711011647802450, -0.424665744668082550, -0.424620476626698660, -0.424575207523763600, -0.424529937359390540, +-0.424484666133692230, -0.424439393846782640, -0.424394120498774560, -0.424348846089781240, -0.424303570619915360, -0.424258294089290940, -0.424213016498020790, -0.424167737846217700, +-0.424122458133995680, -0.424077177361467490, -0.424031895528746370, -0.423986612635945110, -0.423941328683177740, -0.423896043670557050, -0.423850757598196240, -0.423805470466208090, +-0.423760182274706740, -0.423714893023804880, -0.423669602713615810, -0.423624311344252320, -0.423579018915828500, -0.423533725428457080, -0.423488430882251350, -0.423443135277324130, +-0.423397838613789490, -0.423352540891760280, -0.423307242111349290, -0.423261942272670610, -0.423216641375837090, -0.423171339420961910, -0.423126036408158050, -0.423080732337539460, +-0.423035427209219050, -0.422990121023310070, -0.422944813779925380, -0.422899505479179040, -0.422854196121183970, -0.422808885706053410, -0.422763574233900210, -0.422718261704838450, +-0.422672948118981100, -0.422627633476441330, -0.422582317777332130, -0.422537001021767500, -0.422491683209860360, -0.422446364341724000, -0.422401044417471390, -0.422355723437216500, +-0.422310401401072340, -0.422265078309151780, -0.422219754161568930, -0.422174428958436650, -0.422129102699868360, -0.422083775385976860, -0.422038447016876370, -0.421993117592679710, +-0.421947787113500280, -0.421902455579451000, -0.421857122990645980, -0.421811789347198150, -0.421766454649220800, -0.421721118896826950, -0.421675782090130740, -0.421630444229245000, +-0.421585105314283230, -0.421539765345358200, -0.421494424322584220, -0.421449082246074190, -0.421403739115941030, -0.421358394932298930, -0.421313049695260840, -0.421267703404940130, +-0.421222356061449750, -0.421177007664903900, -0.421131658215415540, -0.421086307713097960, -0.421040956158064310, -0.420995603550428590, -0.420950249890303880, -0.420904895177803610, +-0.420859539413040660, -0.420814182596129240, -0.420768824727182360, -0.420723465806313420, -0.420678105833635460, -0.420632744809262600, -0.420587382733307870, -0.420542019605884330, +-0.420496655427106130, -0.420451290197086270, -0.420405923915938170, -0.420360556583774860, -0.420315188200710620, -0.420269818766858320, -0.420224448282331520, -0.420179076747243200, +-0.420133704161707590, -0.420088330525837720, -0.420042955839747050, -0.419997580103548540, -0.419952203317356500, -0.419906825481284000, -0.419861446595444390, -0.419816066659950750, +-0.419770685674917320, -0.419725303640457240, -0.419679920556683460, -0.419634536423710290, -0.419589151241650800, -0.419543765010618410, -0.419498377730726240, -0.419452989402088470, +-0.419407600024818250, -0.419362209599029030, -0.419316818124833900, -0.419271425602347150, -0.419226032031681790, -0.419180637412951360, -0.419135241746268930, -0.419089845031748790, +-0.419044447269504070, -0.418999048459648190, -0.418953648602294340, -0.418908247697556750, -0.418862845745548550, -0.418817442746383220, -0.418772038700173880, -0.418726633607034830, +-0.418681227467079200, -0.418635820280420120, -0.418590412047171900, -0.418545002767447600, -0.418499592441360870, -0.418454181069024710, -0.418408768650553490, -0.418363355186060380, +-0.418317940675658860, -0.418272525119462110, -0.418227108517584380, -0.418181690870138960, -0.418136272177239250, -0.418090852438998520, -0.418045431655531040, -0.418000009826949960, +-0.417954586953368900, -0.417909163034900940, -0.417863738071660440, -0.417818312063760630, -0.417772885011314650, -0.417727456914436860, -0.417682027773240430, -0.417636597587838890, +-0.417591166358345480, -0.417545734084874550, -0.417500300767539300, -0.417454866406453300, -0.417409431001729720, -0.417363994553482940, -0.417318557061826250, -0.417273118526873100, +-0.417227678948736750, -0.417182238327531650, -0.417136796663370890, -0.417091353956368200, -0.417045910206636730, -0.417000465414290810, -0.416955019579443810, -0.416909572702208800, +-0.416864124782700300, -0.416818675821031490, -0.416773225817315960, -0.416727774771666950, -0.416682322684198970, -0.416636869555025100, -0.416591415384259140, -0.416545960172014170, +-0.416500503918404760, -0.416455046623544050, -0.416409588287545760, -0.416364128910523050, -0.416318668492590470, -0.416273207033861170, -0.416227744534448880, -0.416182280994466800, +-0.416136816414029500, -0.416091350793250050, -0.416045884132242310, -0.416000416431119400, -0.415954947689995910, -0.415909477908984970, -0.415864007088199980, -0.415818535227755410, +-0.415773062327764450, -0.415727588388340840, -0.415682113409597880, -0.415636637391650020, -0.415591160334610580, -0.415545682238593230, -0.415500203103711270, -0.415454722930079230, +-0.415409241717810350, -0.415363759467018370, -0.415318276177816580, -0.415272791850319570, -0.415227306484640510, -0.415181820080893220, -0.415136332639190920, -0.415090844159648250, +-0.415045354642378460, -0.414999864087494900, -0.414954372495112020, -0.414908879865343250, -0.414863386198302260, -0.414817891494102420, -0.414772395752858290, -0.414726898974683120, +-0.414681401159690710, -0.414635902307994410, -0.414590402419708740, -0.414544901494947050, -0.414499399533823140, -0.414453896536450320, -0.414408392502943150, -0.414362887433415040, +-0.414317381327979680, -0.414271874186750430, -0.414226366009841920, -0.414180856797367550, -0.414135346549440560, -0.414089835266175650, -0.414044322947686120, -0.413998809594085800, +-0.413953295205488070, -0.413907779782007490, -0.413862263323757470, -0.413816745830851760, -0.413771227303403820, -0.413725707741528230, -0.413680187145338330, -0.413634665514947990, +-0.413589142850470550, -0.413543619152020650, -0.413498094419711750, -0.413452568653657590, -0.413407041853971590, -0.413361514020768430, -0.413315985154161460, -0.413270455254264530, +-0.413224924321191070, -0.413179392355055690, -0.413133859355971800, -0.413088325324052870, -0.413042790259413590, -0.412997254162167260, -0.412951717032427830, -0.412906178870308730, +-0.412860639675924510, -0.412815099449388770, -0.412769558190815230, -0.412724015900317430, -0.412678472578009990, -0.412632928224006320, -0.412587382838420390, -0.412541836421365550, +-0.412496288972956540, -0.412450740493306820, -0.412405190982530260, -0.412359640440740300, -0.412314088868051650, -0.412268536264577770, -0.412222982630432170, -0.412177427965729480, +-0.412131872270583230, -0.412086315545107270, -0.412040757789415180, -0.411995199003621580, -0.411949639187839940, -0.411904078342184290, -0.411858516466767970, -0.411812953561705770, +-0.411767389627111180, -0.411721824663098150, -0.411676258669780140, -0.411630691647271900, -0.411585123595686890, -0.411539554515139130, -0.411493984405742030, -0.411448413267610390, +-0.411402841100857730, -0.411357267905597570, -0.411311693681944590, -0.411266118430012430, -0.411220542149914940, -0.411174964841765690, -0.411129386505679480, -0.411083807141769790, +-0.411038226750150560, -0.410992645330935320, -0.410947062884238930, -0.410901479410174850, -0.410855894908857100, -0.410810309380399200, -0.410764722824915940, -0.410719135242520850, +-0.410673546633327950, -0.410627956997450750, -0.410582366335004110, -0.410536774646101500, -0.410491181930856600, -0.410445588189384090, -0.410399993421797670, -0.410354397628211240, +-0.410308800808738380, -0.410263202963493940, -0.410217604092591500, -0.410172004196145080, -0.410126403274268190, -0.410080801327075750, -0.410035198354681270, -0.409989594357198840, +-0.409943989334741970, -0.409898383287425560, -0.409852776215363150, -0.409807168118668850, -0.409761558997456200, -0.409715948851840040, -0.409670337681934060, -0.409624725487852230, +-0.409579112269708110, -0.409533498027616680, -0.409487882761691510, -0.409442266472046180, -0.409396649158795590, -0.409351030822053430, -0.409305411461933670, -0.409259791078549980, +-0.409214169672017180, -0.409168547242449000, -0.409122923789959460, -0.409077299314662190, -0.409031673816672050, -0.408986047296102720, -0.408940419753068330, -0.408894791187682460, +-0.408849161600060020, -0.408803530990314630, -0.408757899358560440, -0.408712266704911120, -0.408666633029481530, -0.408620998332385350, -0.408575362613736280, -0.408529725873649220, +-0.408484088112237800, -0.408438449329616200, -0.408392809525898070, -0.408347168701198300, -0.408301526855630590, -0.408255883989309120, -0.408210240102347520, -0.408164595194860700, +-0.408118949266962410, -0.408073302318766710, -0.408027654350387400, -0.407982005361939350, -0.407936355353536230, -0.407890704325292290, -0.407845052277321150, -0.407799399209737790, +-0.407753745122655940, -0.407708090016189350, -0.407662433890452920, -0.407616776745560410, -0.407571118581625920, -0.407525459398763280, -0.407479799197087320, -0.407434137976711960, +-0.407388475737751170, -0.407342812480318840, -0.407297148204529890, -0.407251482910498010, -0.407205816598337490, -0.407160149268161960, -0.407114480920086510, -0.407068811554224860, +-0.407023141170691160, -0.406977469769599200, -0.406931797351064000, -0.406886123915199290, -0.406840449462119280, -0.406794773991937700, -0.406749097504769620, -0.406703420000728790, +-0.406657741479929000, -0.406612061942485280, -0.406566381388511420, -0.406520699818121560, -0.406475017231429590, -0.406429333628550440, -0.406383649009598000, -0.406337963374686420, +-0.406292276723929480, -0.406246589057442320, -0.406200900375338620, -0.406155210677732750, -0.406109519964738430, -0.406063828236470690, -0.406018135493043390, -0.405972441734570700, +-0.405926746961166600, -0.405881051172945980, -0.405835354370022720, -0.405789656552510700, -0.405743957720524910, -0.405698257874179240, -0.405652557013587930, -0.405606855138864850, +-0.405561152250125010, -0.405515448347482270, -0.405469743431050970, -0.405424037500944860, -0.405378330557279070, -0.405332622600167450, -0.405286913629724240, -0.405241203646063420, +-0.405195492649299940, -0.405149780639547760, -0.405104067616921080, -0.405058353581533860, -0.405012638533501170, -0.404966922472936860, -0.404921205399954850, -0.404875487314670270, +-0.404829768217196910, -0.404784048107649170, -0.404738326986140870, -0.404692604852787190, -0.404646881707701970, -0.404601157550999570, -0.404555432382793840, -0.404509706203199980, +-0.404463979012331830, -0.404418250810303750, -0.404372521597229640, -0.404326791373224580, -0.404281060138402590, -0.404235327892877920, -0.404189594636764570, -0.404143860370177580, +-0.404098125093230950, -0.404052388806038660, -0.404006651508715730, -0.403960913201376230, -0.403915173884134450, -0.403869433557104310, -0.403823692220400930, -0.403777949874138400, +-0.403732206518430950, -0.403686462153392600, -0.403640716779138540, -0.403594970395782630, -0.403549223003439320, -0.403503474602222520, -0.403457725192247480, -0.403411974773628110, +-0.403366223346478760, -0.403320470910913500, -0.403274717467047460, -0.403228963014994610, -0.403183207554869360, -0.403137451086785730, -0.403091693610858840, -0.403045935127202660, +-0.403000175635931320, -0.402954415137159900, -0.402908653631002480, -0.402862891117573400, -0.402817127596986680, -0.402771363069357570, -0.402725597534800030, -0.402679830993428520, +-0.402634063445357020, -0.402588294890700750, -0.402542525329573740, -0.402496754762090460, -0.402450983188364860, -0.402405210608512200, -0.402359437022646540, -0.402313662430882240, +-0.402267886833333420, -0.402222110230115280, -0.402176332621341840, -0.402130554007127160, -0.402084774387586550, -0.402038993762833970, -0.401993212132983950, -0.401947429498150430, +-0.401901645858448790, -0.401855861213992970, -0.401810075564897560, -0.401764288911276580, -0.401718501253245210, -0.401672712590917640, -0.401626922924408270, -0.401581132253831190, +-0.401535340579301680, -0.401489547900933770, -0.401443754218842040, -0.401397959533140560, -0.401352163843944510, -0.401306367151368140, -0.401260569455525350, -0.401214770756531610, +-0.401168971054500890, -0.401123170349547810, -0.401077368641786340, -0.401031565931331880, -0.400985762218298510, -0.400939957502800700, -0.400894151784952630, -0.400848345064869550, +-0.400802537342665630, -0.400756728618455400, -0.400710918892352890, -0.400665108164473480, -0.400619296434931380, -0.400573483703840940, -0.400527669971316450, -0.400481855237473150, +-0.400436039502425290, -0.400390222766287270, -0.400344405029173290, -0.400298586291198690, -0.400252766552477660, -0.400206945813124270, -0.400161124073253940, -0.400115301332980790, +-0.400069477592419400, -0.400023652851683900, -0.399977827110889690, -0.399932000370150920, -0.399886172629582150, -0.399840343889297510, -0.399794514149412420, -0.399748683410041050, +-0.399702851671297990, -0.399657018933297410, -0.399611185196154680, -0.399565350459983930, -0.399519514724899880, -0.399473677991016570, -0.399427840258449520, -0.399382001527312850, +-0.399336161797720750, -0.399290321069788680, -0.399244479343630830, -0.399198636619361720, -0.399152792897095650, -0.399106948176948030, -0.399061102459033030, -0.399015255743465250, +-0.398969408030358910, -0.398923559319829480, -0.398877709611991150, -0.398831858906958550, -0.398786007204845860, -0.398740154505768610, -0.398694300809840970, -0.398648446117177540, +-0.398602590427892640, -0.398556733742101600, -0.398510876059918810, -0.398465017381458340, -0.398419157706835780, -0.398373297036165310, -0.398327435369561610, -0.398281572707138930, +-0.398235709049012730, -0.398189844395297200, -0.398143978746107070, -0.398098112101556660, -0.398052244461761300, -0.398006375826835350, -0.397960506196893490, -0.397914635572049920, +-0.397868763952420210, -0.397822891338118540, -0.397777017729259660, -0.397731143125957860, -0.397685267528328560, -0.397639390936486150, -0.397593513350544770, -0.397547634770620110, +-0.397501755196826290, -0.397455874629278120, -0.397409993068089830, -0.397364110513377000, -0.397318226965253870, -0.397272342423835190, -0.397226456889235250, -0.397180570361569560, +-0.397134682840952440, -0.397088794327498610, -0.397042904821322370, -0.396997014322539310, -0.396951122831263710, -0.396905230347610270, -0.396859336871693390, -0.396813442403628590, +-0.396767546943530110, -0.396721650491512810, -0.396675753047690980, -0.396629854612180200, -0.396583955185094760, -0.396538054766549020, -0.396492153356658550, -0.396446250955537650, +-0.396400347563301170, -0.396354443180063410, -0.396308537805940000, -0.396262631441045180, -0.396216724085493800, -0.396170815739400160, -0.396124906402879950, -0.396078996076047460, +-0.396033084759017500, -0.395987172451904350, -0.395941259154823750, -0.395895344867889960, -0.395849429591217830, -0.395803513324921700, -0.395757596069117200, -0.395711677823918750, +-0.395665758589440640, -0.395619838365798560, -0.395573917153106910, -0.395527994951480440, -0.395482071761033560, -0.395436147581881950, -0.395390222414139960, -0.395344296257922390, +-0.395298369113343650, -0.395252440980519480, -0.395206511859564120, -0.395160581750592540, -0.395114650653719090, -0.395068718569059400, -0.395022785496727920, -0.394976851436839470, +-0.394930916389508500, -0.394884980354850650, -0.394839043332980310, -0.394793105324012020, -0.394747166328061340, -0.394701226345242740, -0.394655285375671070, -0.394609343419460800, +-0.394563400476727550, -0.394517456547585800, -0.394471511632150440, -0.394425565730535890, -0.394379618842857830, -0.394333670969230670, -0.394287722109769370, -0.394241772264588400, +-0.394195821433803330, -0.394149869617528790, -0.394103916815879530, -0.394057963028970060, -0.394012008256916120, -0.393966052499832130, -0.393920095757833040, -0.393874138031033270, +-0.393828179319548550, -0.393782219623493410, -0.393736258942982360, -0.393690297278130990, -0.393644334629053900, -0.393598370995866030, -0.393552406378681770, -0.393506440777616930, +-0.393460474192785960, -0.393414506624303830, -0.393368538072285000, -0.393322568536845220, -0.393276598018099060, -0.393230626516161360, -0.393184654031146720, -0.393138680563170860, +-0.393092706112348310, -0.393046730678793920, -0.393000754262622380, -0.392954776863949310, -0.392908798482889340, -0.392862819119556950, -0.392816838774067920, -0.392770857446536780, +-0.392724875137078490, -0.392678891845807620, -0.392632907572839920, -0.392586922318289950, -0.392540936082272700, -0.392494948864902660, -0.392448960666295700, -0.392402971486566330, +-0.392356981325829520, -0.392310990184199850, -0.392264998061793100, -0.392219004958723860, -0.392173010875107090, -0.392127015811057410, -0.392081019766690630, -0.392035022742121260, +-0.391989024737463940, -0.391943025752834460, -0.391897025788347400, -0.391851024844117820, -0.391805022920260200, -0.391759020016890500, -0.391713016134123240, -0.391667011272073430, +-0.391621005430855650, -0.391574998610585810, -0.391528990811378430, -0.391482982033348580, -0.391436972276610890, -0.391390961541281220, -0.391344949827474090, -0.391298937135304560, +-0.391252923464887330, -0.391206908816338180, -0.391160893189771760, -0.391114876585302700, -0.391068859003046890, -0.391022840443118860, -0.390976820905633790, -0.390930800390706270, +-0.390884778898452080, -0.390838756428986020, -0.390792732982423010, -0.390746708558877830, -0.390700683158466230, -0.390654656781302960, -0.390608629427503020, -0.390562601097181110, +-0.390516571790453070, -0.390470541507433650, -0.390424510248237820, -0.390378478012980370, -0.390332444801777090, -0.390286410614742730, -0.390240375451992360, -0.390194339313640610, +-0.390148302199803400, -0.390102264110595450, -0.390056225046131470, -0.390010185006527290, -0.389964143991897660, -0.389918102002357660, -0.389872059038022020, -0.389826015099006610, +-0.389779970185426210, -0.389733924297395840, -0.389687877435030310, -0.389641829598445400, -0.389595780787755970, -0.389549731003077100, -0.389503680244523480, -0.389457628512211110, +-0.389411575806254630, -0.389365522126769170, -0.389319467473869530, -0.389273411847671670, -0.389227355248290220, -0.389181297675840030, -0.389135239130436960, -0.389089179612195800, +-0.389043119121231740, -0.388997057657659410, -0.388950995221594880, -0.388904931813152830, -0.388858867432448460, -0.388812802079596560, -0.388766735754712990, -0.388720668457912640, +-0.388674600189310600, -0.388628530949021610, -0.388582460737161790, -0.388536389553845730, -0.388490317399188770, -0.388444244273305540, -0.388398170176312170, -0.388352095108323300, +-0.388306019069453830, -0.388259942059819730, -0.388213864079535790, -0.388167785128717140, -0.388121705207478680, -0.388075624315936340, -0.388029542454204900, -0.387983459622399660, +-0.387937375820635310, -0.387891291049027980, -0.387845205307692400, -0.387799118596743760, -0.387753030916296980, -0.387706942266468010, -0.387660852647371710, -0.387614762059123210, +-0.387568670501837460, -0.387522577975630440, -0.387476484480616950, -0.387430390016912260, -0.387384294584631190, -0.387338198183889760, -0.387292100814802860, -0.387246002477485310, +-0.387199903172053160, -0.387153802898621220, -0.387107701657304850, -0.387061599448218720, -0.387015496271479080, -0.386969392127200660, -0.386923287015498770, -0.386877180936488260, +-0.386831073890285150, -0.386784965877004390, -0.386738856896761240, -0.386692746949670540, -0.386646636035848370, -0.386600524155409630, -0.386554411308469570, -0.386508297495143040, +-0.386462182715546170, -0.386416066969793910, -0.386369950258001030, -0.386323832580283690, -0.386277713936756750, -0.386231594327535510, -0.386185473752734930, -0.386139352212471030, +-0.386093229706858780, -0.386047106236013460, -0.386000981800049940, -0.385954856399084390, -0.385908730033231730, -0.385862602702607190, -0.385816474407325750, -0.385770345147503520, +-0.385724214923255480, -0.385678083734696860, -0.385631951581942630, -0.385585818465108920, -0.385539684384310690, -0.385493549339662840, -0.385447413331281520, -0.385401276359281620, +-0.385355138423778610, -0.385308999524887290, -0.385262859662723890, -0.385216718837403330, -0.385170577049041010, -0.385124434297751780, -0.385078290583651950, -0.385032145906856360, +-0.384986000267480370, -0.384939853665638990, -0.384893706101448410, -0.384847557575023540, -0.384801408086479780, -0.384755257635932100, -0.384709106223496690, -0.384662953849288500, +-0.384616800513422510, -0.384570646216014940, -0.384524490957180780, -0.384478334737035350, -0.384432177555693700, -0.384386019413272000, -0.384339860309885260, -0.384293700245648910, +-0.384247539220677840, -0.384201377235088350, -0.384155214288995410, -0.384109050382514470, -0.384062885515760450, -0.384016719688849650, -0.383970552901897020, -0.383924385155018030, +-0.383878216448327700, -0.383832046781942220, -0.383785876155976590, -0.383739704570546290, -0.383693532025766340, -0.383647358521752910, -0.383601184058621150, -0.383555008636486010, +-0.383508832255463730, -0.383462654915669390, -0.383416476617218390, -0.383370297360225820, -0.383324117144807910, -0.383277935971079680, -0.383231753839156640, -0.383185570749153770, +-0.383139386701187410, -0.383093201695372590, -0.383047015731824760, -0.383000828810658940, -0.382954640931991550, -0.382908452095937490, -0.382862262302612280, -0.382816071552131040, +-0.382769879844610030, -0.382723687180164360, -0.382677493558909010, -0.382631298980960320, -0.382585103446433430, -0.382538906955443790, -0.382492709508106430, -0.382446511104537700, +-0.382400311744852730, -0.382354111429166980, -0.382307910157595520, -0.382261707930254710, -0.382215504747259630, -0.382169300608725780, -0.382123095514768250, -0.382076889465503390, +-0.382030682461046320, -0.381984474501512570, -0.381938265587017210, -0.381892055717676590, -0.381845844893605850, -0.381799633114920050, -0.381753420381735600, -0.381707206694167580, +-0.381660992052331560, -0.381614776456342670, -0.381568559906317220, -0.381522342402370370, -0.381476123944617720, -0.381429904533174270, -0.381383684168156490, -0.381337462849679560, +-0.381291240577858900, -0.381245017352809750, -0.381198793174648500, -0.381152568043490240, -0.381106341959450530, -0.381060114922644580, -0.381013886933188770, -0.380967657991198250, +-0.380921428096788530, -0.380875197250074900, -0.380828965451173620, -0.380782732700199970, -0.380736498997269080, -0.380690264342497360, -0.380644028735999950, -0.380597792177892470, +-0.380551554668290100, -0.380505316207309260, -0.380459076795065130, -0.380412836431673340, -0.380366595117249020, -0.380320352851908570, -0.380274109635767300, -0.380227865468940770, +-0.380181620351544130, -0.380135374283693870, -0.380089127265505140, -0.380042879297093630, -0.379996630378574510, -0.379950380510064190, -0.379904129691677970, -0.379857877923530980, +-0.379811625205739690, -0.379765371538419380, -0.379719116921685640, -0.379672861355653650, -0.379626604840439970, -0.379580347376159750, -0.379534088962928670, -0.379487829600861970, +-0.379441569290076050, -0.379395308030686270, -0.379349045822808210, -0.379302782666557090, -0.379256518562049450, -0.379210253509400520, -0.379163987508725930, -0.379117720560140980, +-0.379071452663762130, -0.379025183819704680, -0.378978914028083810, -0.378932643289016100, -0.378886371602616790, -0.378840098969001560, -0.378793825388285600, -0.378747550860585540, +-0.378701275386016610, -0.378654998964694510, -0.378608721596734420, -0.378562443282253020, -0.378516164021365450, -0.378469883814187500, -0.378423602660834470, -0.378377320561422810, +-0.378331037516067840, -0.378284753524885280, -0.378238468587990430, -0.378192182705499810, -0.378145895877528730, -0.378099608104192520, -0.378053319385607660, -0.378007029721889540, +-0.377960739113153870, -0.377914447559515860, -0.377868155061092230, -0.377821861617998130, -0.377775567230349440, -0.377729271898261390, -0.377682975621850600, -0.377636678401232330, +-0.377590380236522420, -0.377544081127836110, -0.377497781075290030, -0.377451480078999480, -0.377405178139080200, -0.377358875255647600, -0.377312571428818240, -0.377266266658707440, +-0.377219960945430920, -0.377173654289104150, -0.377127346689843660, -0.377081038147764720, -0.377034728662982880, -0.376988418235614580, -0.376942106865775230, -0.376895794553580630, +-0.376849481299146080, -0.376803167102588320, -0.376756851964022590, -0.376710535883564730, -0.376664218861330170, -0.376617900897435410, -0.376571581991995920, -0.376525262145127490, +-0.376478941356945480, -0.376432619627566520, -0.376386296957106070, -0.376339973345679810, -0.376293648793403210, -0.376247323300392960, -0.376200996866764340, -0.376154669492632820, +-0.376108341178115040, -0.376062011923326440, -0.376015681728382790, -0.375969350593399530, -0.375923018518493300, -0.375876685503779510, -0.375830351549374050, -0.375784016655392240, +-0.375737680821950860, -0.375691344049165210, -0.375645006337151250, -0.375598667686024350, -0.375552328095901220, -0.375505987566897240, -0.375459646099128300, -0.375413303692709810, +-0.375366960347758460, -0.375320616064389770, -0.375274270842719080, -0.375227924682863150, -0.375181577584937420, -0.375135229549057700, -0.375088880575339570, -0.375042530663899590, +-0.374996179814853280, -0.374949828028316560, -0.374903475304404820, -0.374857121643234810, -0.374810767044922000, -0.374764411509582280, -0.374718055037331130, -0.374671697628285230, +-0.374625339282560090, -0.374578980000271620, -0.374532619781535290, -0.374486258626467780, -0.374439896535184670, -0.374393533507801800, -0.374347169544434700, -0.374300804645200100, +-0.374254438810213470, -0.374208072039590280, -0.374161704333447360, -0.374115335691900200, -0.374068966115064680, -0.374022595603056400, -0.373976224155991970, -0.373929851773986970, +-0.373883478457157360, -0.373837104205618660, -0.373790729019487620, -0.373744352898879690, -0.373697975843910960, -0.373651597854696820, -0.373605218931354120, -0.373558839073998390, +-0.373512458282745540, -0.373466076557711140, -0.373419693899011970, -0.373373310306763570, -0.373326925781081450, -0.373280540322082470, -0.373234153929882070, -0.373187766604596350, +-0.373141378346340760, -0.373094989155232200, -0.373048599031386100, -0.373002207974918510, -0.372955815985945020, -0.372909423064582410, -0.372863029210946220, -0.372816634425152450, +-0.372770238707316680, -0.372723842057555770, -0.372677444475985160, -0.372631045962721010, -0.372584646517878810, -0.372538246141575440, -0.372491844833926440, -0.372445442595047420, +-0.372399039425055200, -0.372352635324065370, -0.372306230292193950, -0.372259824329556570, -0.372213417436270010, -0.372167009612449920, -0.372120600858212300, -0.372074191173672800, +-0.372027780558948200, -0.371981369014154130, -0.371934956539406670, -0.371888543134821390, -0.371842128800515200, -0.371795713536603620, -0.371749297343202830, -0.371702880220428360, +-0.371656462168397090, -0.371610043187224680, -0.371563623277026740, -0.371517202437920140, -0.371470780670020540, -0.371424357973443970, -0.371377934348306130, -0.371331509794723850, +-0.371285084312812820, -0.371238657902689060, -0.371192230564468260, -0.371145802298267270, -0.371099373104201770, -0.371052942982387890, -0.371006511932941150, -0.370960079955978630, +-0.370913647051615890, -0.370867213219969020, -0.370820778461153690, -0.370774342775286810, -0.370727906162484130, -0.370681468622861670, -0.370635030156535090, -0.370588590763621380, +-0.370542150444236160, -0.370495709198495170, -0.370449267026515370, -0.370402823928412340, -0.370356379904302260, -0.370309934954300810, -0.370263489078524970, -0.370217042277090400, +-0.370170594550113200, -0.370124145897709140, -0.370077696319995100, -0.370031245817086800, -0.369984794389100420, -0.369938342036151610, -0.369891888758357380, -0.369845434555833410, +-0.369798979428695880, -0.369752523377060490, -0.369706066401044200, -0.369659608500762740, -0.369613149676331850, -0.369566689927868450, -0.369520229255488390, -0.369473767659307730, +-0.369427305139442270, -0.369380841696008930, -0.369334377329123500, -0.369287912038902100, -0.369241445825460530, -0.369194978688915710, -0.369148510629383530, -0.369102041646980020, +-0.369055571741820960, -0.369009100914023450, -0.368962629163703150, -0.368916156490976310, -0.368869682895958670, -0.368823208378767200, -0.368776732939517680, -0.368730256578325980, +-0.368683779295309040, -0.368637301090582630, -0.368590821964262960, -0.368544341916465850, -0.368497860947308300, -0.368451379056906060, -0.368404896245375420, -0.368358412512832130, +-0.368311927859393150, -0.368265442285174440, -0.368218955790292070, -0.368172468374861890, -0.368125980039000990, -0.368079490782825090, -0.368033000606450500, -0.367986509509993010, +-0.367940017493569640, -0.367893524557296240, -0.367847030701288990, -0.367800535925663810, -0.367754040230537650, -0.367707543616026420, -0.367661046082245920, -0.367614547629313170, +-0.367568048257344130, -0.367521547966454920, -0.367475046756761400, -0.367428544628380700, -0.367382041581428680, -0.367335537616021500, -0.367289032732275090, -0.367242526930306510, +-0.367196020210231620, -0.367149512572166660, -0.367103004016227530, -0.367056494542531310, -0.367009984151193790, -0.366963472842331380, -0.366916960616059830, -0.366870447472496310, +-0.366823933411756680, -0.366777418433956840, -0.366730902539213810, -0.366684385727643500, -0.366637867999362270, -0.366591349354485950, -0.366544829793131690, -0.366498309315415330, +-0.366451787921453220, -0.366405265611361220, -0.366358742385256450, -0.366312218243254830, -0.366265693185472640, -0.366219167212025850, -0.366172640323031540, -0.366126112518605610, +-0.366079583798864410, -0.366033054163923840, -0.365986523613901050, -0.365939992148911990, -0.365893459769072500, -0.365846926474499730, -0.365800392265309690, -0.365753857141618680, +-0.365707321103542590, -0.365660784151198630, -0.365614246284702680, -0.365567707504171170, -0.365521167809719940, -0.365474627201466230, -0.365428085679525890, -0.365381543244015390, +-0.365334999895050580, -0.365288455632748750, -0.365241910457225700, -0.365195364368597950, -0.365148817366981350, -0.365102269452493080, -0.365055720625249160, -0.365009170885365550, +-0.364962620232959390, -0.364916068668146690, -0.364869516191043850, -0.364822962801766790, -0.364776408500432690, -0.364729853287157620, -0.364683297162057940, -0.364636740125249550, +-0.364590182176849740, -0.364543623316974490, -0.364497063545740130, -0.364450502863262750, -0.364403941269659530, -0.364357378765046420, -0.364310815349539910, -0.364264251023255880, +-0.364217685786311700, -0.364171119638823260, -0.364124552580907090, -0.364077984612679040, -0.364031415734256510, -0.363984845945755420, -0.363938275247291780, -0.363891703638982880, +-0.363845131120944740, -0.363798557693293720, -0.363751983356145950, -0.363705408109618600, -0.363658831953827750, -0.363612254888889820, -0.363565676914920810, -0.363519098032038020, +-0.363472518240357530, -0.363425937539995750, -0.363379355931068680, -0.363332773413693630, -0.363286189987986620, -0.363239605654064210, -0.363193020412042320, -0.363146434262038300, +-0.363099847204168210, -0.363053259238548090, -0.363006670365295210, -0.362960080584525670, -0.362913489896355910, -0.362866898300902020, -0.362820305798281340, -0.362773712388609840, +-0.362727118072004080, -0.362680522848580100, -0.362633926718455290, -0.362587329681745560, -0.362540731738567600, -0.362494132889037370, -0.362447533133272160, -0.362400932471388220, +-0.362354330903501890, -0.362307728429729300, -0.362261125050187820, -0.362214520764993550, -0.362167915574262530, -0.362121309478112160, -0.362074702476658520, -0.362028094570018110, +-0.361981485758307080, -0.361934876041642710, -0.361888265420141130, -0.361841653893918920, -0.361795041463092160, -0.361748428127778240, -0.361701813888093250, -0.361655198744153690, +-0.361608582696075710, -0.361561965743976700, -0.361515347887972790, -0.361468729128180510, -0.361422109464715980, -0.361375488897696610, -0.361328867427238460, -0.361282245053458180, +-0.361235621776471890, -0.361188997596396940, -0.361142372513349520, -0.361095746527445750, -0.361049119638803040, -0.361002491847537470, -0.360955863153765710, -0.360909233557603900, +-0.360862603059169400, -0.360815971658578370, -0.360769339355947460, -0.360722706151392740, -0.360676072045031660, -0.360629437036980470, -0.360582801127355630, -0.360536164316273390, +-0.360489526603851140, -0.360442887990205070, -0.360396248475451820, -0.360349608059707500, -0.360302966743089590, -0.360256324525714270, -0.360209681407697710, -0.360163037389157340, +-0.360116392470209430, -0.360069746650970470, -0.360023099931556790, -0.359976452312085750, -0.359929803792673590, -0.359883154373436930, -0.359836504054491910, -0.359789852835956100, +-0.359743200717945690, -0.359696547700577180, -0.359649893783966950, -0.359603238968232430, -0.359556583253489770, -0.359509926639855650, -0.359463269127446310, -0.359416610716379200, +-0.359369951406770580, -0.359323291198736630, -0.359276630092394910, -0.359229968087861620, -0.359183305185253380, -0.359136641384686430, -0.359089976686278340, -0.359043311090145310, +-0.358996644596404010, -0.358949977205170630, -0.358903308916562800, -0.358856639730696650, -0.358809969647688910, -0.358763298667655830, -0.358716626790714920, -0.358669954016982430, +-0.358623280346575090, -0.358576605779609090, -0.358529930316202010, -0.358483253956470130, -0.358436576700530090, -0.358389898548498180, -0.358343219500491970, -0.358296539556627660, +-0.358249858717021640, -0.358203176981791380, -0.358156494351053180, -0.358109810824923710, -0.358063126403519340, -0.358016441086957520, -0.357969754875354650, -0.357923067768827370, +-0.357876379767491980, -0.357829690871466100, -0.357783001080865970, -0.357736310395808330, -0.357689618816409540, -0.357642926342787050, -0.357596232975057330, -0.357549538713336950, +-0.357502843557742370, -0.357456147508391050, -0.357409450565399360, -0.357362752728883630, -0.357316053998961490, -0.357269354375749140, -0.357222653859363470, -0.357175952449920680, +-0.357129250147538490, -0.357082546952333160, -0.357035842864421420, -0.356989137883919730, -0.356942432010945550, -0.356895725245615300, -0.356849017588045770, -0.356802309038353250, +-0.356755599596655370, -0.356708889263068480, -0.356662178037709390, -0.356615465920694430, -0.356568752912141240, -0.356522039012166170, -0.356475324220885570, -0.356428608538417070, +-0.356381891964877070, -0.356335174500382320, -0.356288456145049230, -0.356241736898995410, -0.356195016762337280, -0.356148295735191580, -0.356101573817674710, -0.356054851009904310, +-0.356008127311996820, -0.355961402724069010, -0.355914677246237270, -0.355867950878619220, -0.355821223621331340, -0.355774495474490420, -0.355727766438212800, -0.355681036512616180, +-0.355634305697816950, -0.355587573993931590, -0.355540841401077670, -0.355494107919371690, -0.355447373548930410, -0.355400638289870290, -0.355353902142309000, -0.355307165106362950, +-0.355260427182148950, -0.355213688369783510, -0.355166948669384250, -0.355120208081067650, -0.355073466604950480, -0.355026724241149230, -0.354979980989781620, -0.354933236850964010, +-0.354886491824813350, -0.354839745911446070, -0.354792999110979780, -0.354746251423531000, -0.354699502849216640, -0.354652753388153050, -0.354606003040458030, -0.354559251806247980, +-0.354512499685639420, -0.354465746678749970, -0.354418992785696220, -0.354372238006594950, -0.354325482341562690, -0.354278725790717120, -0.354231968354174700, -0.354185210032052440, +-0.354138450824466710, -0.354091690731535240, -0.354044929753374540, -0.353998167890101520, -0.353951405141832710, -0.353904641508685780, -0.353857876990777250, -0.353811111588223980, +-0.353764345301142590, -0.353717578129650710, -0.353670810073864860, -0.353624041133901610, -0.353577271309878700, -0.353530500601912550, -0.353483729010120210, -0.353436956534618040, +-0.353390183175523950, -0.353343408932954410, -0.353296633807026360, -0.353249857797856280, -0.353203080905562020, -0.353156303130259970, -0.353109524472067230, -0.353062744931100240, +-0.353015964507476800, -0.352969183201313490, -0.352922401012727200, -0.352875617941834470, -0.352828833988753140, -0.352782049153599670, -0.352735263436490700, -0.352688476837544010, +-0.352641689356876120, -0.352594900994604000, -0.352548111750844160, -0.352501321625714510, -0.352454530619331570, -0.352407738731812250, -0.352360945963273220, -0.352314152313832230, +-0.352267357783605850, -0.352220562372711040, -0.352173766081264440, -0.352126968909383890, -0.352080170857185850, -0.352033371924787400, -0.351986572112305110, -0.351939771419856830, +-0.351892969847559080, -0.351846167395528930, -0.351799364063882900, -0.351752559852738960, -0.351705754762213550, -0.351658948792423380, -0.351612141943486220, -0.351565334215518720, +-0.351518525608637890, -0.351471716122960350, -0.351424905758603910, -0.351378094515685190, -0.351331282394321260, -0.351284469394628710, -0.351237655516725370, -0.351190840760727930, +-0.351144025126753360, -0.351097208614918330, -0.351050391225340710, -0.351003572958137060, -0.350956753813424500, -0.350909933791319680, -0.350863112891940390, -0.350816291115403360, +-0.350769468461825160, -0.350722644931323710, -0.350675820524015640, -0.350628995240018000, -0.350582169079447500, -0.350535342042421980, -0.350488514129058070, -0.350441685339472950, +-0.350394855673783150, -0.350348025132106610, -0.350301193714560030, -0.350254361421260480, -0.350207528252324600, -0.350160694207870330, -0.350113859288014310, -0.350067023492873610, +-0.350020186822564970, -0.349973349277206250, -0.349926510856914170, -0.349879671561805440, -0.349832831391997890, -0.349785990347608320, -0.349739148428753750, -0.349692305635550870, +-0.349645461968117630, -0.349598617426570780, -0.349551772011027380, -0.349504925721604130, -0.349458078558418930, -0.349411230521588620, -0.349364381611230180, -0.349317531827460390, +-0.349270681170397170, -0.349223829640157250, -0.349176977236857760, -0.349130123960615430, -0.349083269811548190, -0.349036414789772760, -0.348989558895405890, -0.348942702128565540, +-0.348895844489368450, -0.348848985977931740, -0.348802126594372150, -0.348755266338807660, -0.348708405211354990, -0.348661543212131280, -0.348614680341253370, -0.348567816598839120, +-0.348520951985005320, -0.348474086499869160, -0.348427220143547380, -0.348380352916157990, -0.348333484817817670, -0.348286615848643680, -0.348239746008752680, -0.348192875298262760, +-0.348146003717290650, -0.348099131265953540, -0.348052257944368170, -0.348005383752652610, -0.347958508690923540, -0.347911632759297820, -0.347864755957893400, -0.347817878286827140, +-0.347770999746216170, -0.347724120336177220, -0.347677240056828430, -0.347630358908286590, -0.347583476890668760, -0.347536594004091870, -0.347489710248673920, -0.347442825624531710, +-0.347395940131782380, -0.347349053770542810, -0.347302166540931050, -0.347255278443063860, -0.347208389477058450, -0.347161499643031670, -0.347114608941101580, -0.347067717371384920, +-0.347020824933998550, -0.346973931629060540, -0.346927037456687740, -0.346880142416997330, -0.346833246510106110, -0.346786349736132260, -0.346739452095192470, -0.346692553587404080, +-0.346645654212883900, -0.346598753971750000, -0.346551852864119160, -0.346504950890108740, -0.346458048049835540, -0.346411144343417580, -0.346364239770971800, -0.346317334332615410, +-0.346270428028465300, -0.346223520858639500, -0.346176612823254900, -0.346129703922428370, -0.346082794156277960, -0.346035883524920600, -0.345988972028473510, -0.345942059667053600, +-0.345895146440778960, -0.345848232349766420, -0.345801317394133280, -0.345754401573996510, -0.345707484889474060, -0.345660567340682960, -0.345613648927740440, -0.345566729650763350, +-0.345519809509869880, -0.345472888505176880, -0.345425966636801640, -0.345379043904861130, -0.345332120309473360, -0.345285195850755290, -0.345238270528824280, -0.345191344343797110, +-0.345144417295792040, -0.345097489384925960, -0.345050560611315670, -0.345003630975079410, -0.344956700476334090, -0.344909769115197050, -0.344862836891785150, -0.344815903806216520, +-0.344768969858608220, -0.344722035049077450, -0.344675099377741160, -0.344628162844717530, -0.344581225450123540, -0.344534287194076470, -0.344487348076693230, -0.344440408098092070, +-0.344393467258389870, -0.344346525557704060, -0.344299582996151430, -0.344252639573850330, -0.344205695290917600, -0.344158750147470220, -0.344111804143626410, -0.344064857279503030, +-0.344017909555217550, -0.343970960970886860, -0.343924011526629210, -0.343877061222561510, -0.343830110058801150, -0.343783158035465160, -0.343736205152671610, -0.343689251410537580, +-0.343642296809180460, -0.343595341348717110, -0.343548385029265880, -0.343501427850943670, -0.343454469813867850, -0.343407510918155520, -0.343360551163924780, -0.343313590551292620, +-0.343266629080376140, -0.343219666751293510, -0.343172703564161630, -0.343125739519098080, -0.343078774616219720, -0.343031808855644830, -0.342984842237490430, -0.342937874761873930, +-0.342890906428912350, -0.342843937238723860, -0.342796967191425610, -0.342749996287134870, -0.342703024525968740, -0.342656051908045490, -0.342609078433482090, -0.342562104102396010, +-0.342515128914904270, -0.342468152871125090, -0.342421175971175500, -0.342374198215172620, -0.342327219603234590, -0.342280240135478590, -0.342233259812021960, -0.342186278632981730, +-0.342139296598476250, -0.342092313708622530, -0.342045329963538040, -0.341998345363339780, -0.341951359908146070, -0.341904373598073960, -0.341857386433240930, -0.341810398413764040, +-0.341763409539761530, -0.341716419811350540, -0.341669429228648460, -0.341622437791772370, -0.341575445500840680, -0.341528452355970290, -0.341481458357278830, -0.341434463504883270, +-0.341387467798902000, -0.341340471239452050, -0.341293473826650540, -0.341246475560615710, -0.341199476441464700, -0.341152476469315010, -0.341105475644283730, -0.341058473966489140, +-0.341011471436048370, -0.340964468053078950, -0.340917463817697940, -0.340870458730023640, -0.340823452790173230, -0.340776445998264180, -0.340729438354413610, -0.340682429858739870, +-0.340635420511360030, -0.340588410312391680, -0.340541399261951820, -0.340494387360158910, -0.340447374607130040, -0.340400361002982320, -0.340353346547834110, -0.340306331241802540, +-0.340259315085005120, -0.340212298077559040, -0.340165280219582590, -0.340118261511192950, -0.340071241952507650, -0.340024221543643870, -0.339977200284719890, -0.339930178175852970, +-0.339883155217160560, -0.339836131408759850, -0.339789106750769230, -0.339742081243305850, -0.339695054886487270, -0.339648027680430680, -0.339600999625254360, -0.339553970721075570, +-0.339506940968011480, -0.339459910366180400, -0.339412878915699550, -0.339365846616686510, -0.339318813469258460, -0.339271779473533760, -0.339224744629629590, -0.339177708937663640, +-0.339130672397752910, -0.339083635010015980, -0.339036596774569930, -0.338989557691532440, -0.338942517761020580, -0.338895476983152870, -0.338848435358046430, -0.338801392885818950, +-0.338754349566587560, -0.338707305400470730, -0.338660260387585570, -0.338613214528049820, -0.338566167821980570, -0.338519120269496380, -0.338472071870714320, -0.338425022625751750, +-0.338377972534726960, -0.338330921597757290, -0.338283869814960280, -0.338236817186453210, -0.338189763712354490, -0.338142709392781350, -0.338095654227851480, -0.338048598217682020, +-0.338001541362391470, -0.337954483662097130, -0.337907425116916520, -0.337860365726966980, -0.337813305492366880, -0.337766244413233550, -0.337719182489684630, -0.337672119721837300, +-0.337625056109810140, -0.337577991653720270, -0.337530926353685030, -0.337483860209822910, -0.337436793222251170, -0.337389725391087360, -0.337342656716448920, -0.337295587198454150, +-0.337248516837220510, -0.337201445632865530, -0.337154373585506480, -0.337107300695261960, -0.337060226962249190, -0.337013152386585860, -0.336966076968389210, -0.336919000707777800, +-0.336871923604868890, -0.336824845659780160, -0.336777766872628890, -0.336730687243533670, -0.336683606772611670, -0.336636525459980240, -0.336589443305757960, -0.336542360310062020, +-0.336495276473010250, -0.336448191794719800, -0.336401106275309340, -0.336354019914896050, -0.336306932713597790, -0.336259844671531750, -0.336212755788816490, -0.336165666065569360, +-0.336118575501908050, -0.336071484097949900, -0.336024391853813440, -0.335977298769616020, -0.335930204845475370, -0.335883110081508730, -0.335836014477834790, -0.335788918034570780, +-0.335741820751834120, -0.335694722629743260, -0.335647623668415610, -0.335600523867968900, -0.335553423228520440, -0.335506321750188910, -0.335459219433091540, -0.335412116277346070, +-0.335365012283069970, -0.335317907450381700, -0.335270801779398660, -0.335223695270238650, -0.335176587923018960, -0.335129479737858280, -0.335082370714873850, -0.335035260854183500, +-0.334988150155904550, -0.334941038620155670, -0.334893926247054220, -0.334846813036717930, -0.334799698989264150, -0.334752584104811570, -0.334705468383477530, -0.334658351825379450, +-0.334611234430635840, -0.334564116199364160, -0.334516997131682200, -0.334469877227707320, -0.334422756487558200, -0.334375634911352190, -0.334328512499207030, -0.334281389251240240, +-0.334234265167570320, -0.334187140248314810, -0.334140014493591430, -0.334092887903517600, -0.334045760478211940, -0.333998632217791860, -0.333951503122375260, -0.333904373192079440, +-0.333857242427023140, -0.333810110827323700, -0.333762978393098600, -0.333715845124466450, -0.333668711021544660, -0.333621576084451140, -0.333574440313303240, -0.333527303708219700, +-0.333480166269317870, -0.333433027996715590, -0.333385888890530340, -0.333338748950880780, -0.333291608177884390, -0.333244466571658960, -0.333197324132321950, -0.333150180859992040, +-0.333103036754786640, -0.333055891816823710, -0.333008746046220610, -0.332961599443096060, -0.332914452007567530, -0.332867303739752430, -0.332820154639769440, -0.332773004707736130, +-0.332725853943770300, -0.332678702347989410, -0.332631549920512190, -0.332584396661456120, -0.332537242570938970, -0.332490087649078390, -0.332442931895992940, -0.332395775311800200, +-0.332348617896618010, -0.332301459650563900, -0.332254300573756490, -0.332207140666313410, -0.332159979928352390, -0.332112818359991070, -0.332065655961348070, -0.332018492732540970, +-0.331971328673687620, -0.331924163784905520, -0.331876998066313430, -0.331829831518028860, -0.331782664140169270, -0.331735495932853510, -0.331688326896198930, -0.331641157030323540, +-0.331593986335344870, -0.331546814811381650, -0.331499642458551400, -0.331452469276972030, -0.331405295266761050, -0.331358120428037250, -0.331310944760918210, -0.331263768265521730, +-0.331216590941965480, -0.331169412790368100, -0.331122233810847270, -0.331075054003520770, -0.331027873368506310, -0.330980691905922500, -0.330933509615887020, -0.330886326498517290, +-0.330839142553932210, -0.330791957782249240, -0.330744772183586390, -0.330697585758061240, -0.330650398505792480, -0.330603210426897720, -0.330556021521494990, -0.330508831789701750, +-0.330461641231636850, -0.330414449847417860, -0.330367257637162740, -0.330320064600989060, -0.330272870739015620, -0.330225676051360000, -0.330178480538140200, -0.330131284199473800, +-0.330084087035479590, -0.330036889046275150, -0.329989690231978110, -0.329942490592707250, -0.329895290128580150, -0.329848088839714840, -0.329800886726228870, -0.329753683788241100, +-0.329706480025869110, -0.329659275439230960, -0.329612070028444170, -0.329564863793627650, -0.329517656734898970, -0.329470448852376090, -0.329423240146176740, -0.329376030616419680, +-0.329328820263222520, -0.329281609086703340, -0.329234397086979710, -0.329187184264170540, -0.329139970618393400, -0.329092756149765850, -0.329045540858406930, -0.328998324744434080, +-0.328951107807965440, -0.328903890049118630, -0.328856671468012450, -0.328809452064764640, -0.328762231839493210, -0.328715010792315800, -0.328667788923351250, -0.328620566232717180, +-0.328573342720531790, -0.328526118386912540, -0.328478893231978490, -0.328431667255847160, -0.328384440458636680, -0.328337212840464630, -0.328289984401450020, -0.328242755141710420, +-0.328195525061363960, -0.328148294160528260, -0.328101062439322240, -0.328053829897863580, -0.328006596536269900, -0.327959362354660170, -0.327912127353152010, -0.327864891531863540, +-0.327817654890912470, -0.327770417430417630, -0.327723179150496760, -0.327675940051267930, -0.327628700132848840, -0.327581459395358430, -0.327534217838914340, -0.327486975463634760, +-0.327439732269637240, -0.327392488257040870, -0.327345243425963270, -0.327297997776522580, -0.327250751308836460, -0.327203504023023840, -0.327156255919202500, -0.327109006997490130, +-0.327061757258005630, -0.327014506700866740, -0.326967255326191530, -0.326920003134097860, -0.326872750124704510, -0.326825496298129350, -0.326778241654490430, -0.326730986193905500, +-0.326683729916493470, -0.326636472822372180, -0.326589214911659650, -0.326541956184473740, -0.326494696640933280, -0.326447436281156130, -0.326400175105260370, -0.326352913113363790, +-0.326305650305585280, -0.326258386682042660, -0.326211122242853700, -0.326163856988137320, -0.326116590918011320, -0.326069324032593810, -0.326022056332002600, -0.325974787816356640, +-0.325927518485773730, -0.325880248340371990, -0.325832977380269280, -0.325785705605584510, -0.325738433016435460, -0.325691159612940320, -0.325643885395216880, -0.325596610363384160, +-0.325549334517559910, -0.325502057857862290, -0.325454780384409170, -0.325407502097319450, -0.325360222996711020, -0.325312943082702030, -0.325265662355410210, -0.325218380814954740, +-0.325171098461453260, -0.325123815295023600, -0.325076531315784840, -0.325029246523854790, -0.324981960919351610, -0.324934674502393050, -0.324887387273098290, -0.324840099231585020, +-0.324792810377971530, -0.324745520712375610, -0.324698230234916290, -0.324650938945711340, -0.324603646844879130, -0.324556353932537340, -0.324509060208805100, -0.324461765673800200, +-0.324414470327640870, -0.324367174170444970, -0.324319877202331520, -0.324272579423418420, -0.324225280833823400, -0.324177981433665660, -0.324130681223062930, -0.324083380202133510, +-0.324036078370995180, -0.323988775729767140, -0.323941472278567120, -0.323894168017513420, -0.323846862946723880, -0.323799557066317630, -0.323752250376412480, -0.323704942877126700, +-0.323657634568578100, -0.323610325450885860, -0.323563015524167830, -0.323515704788542250, -0.323468393244127020, -0.323421080891041160, -0.323373767729402630, -0.323326453759329280, +-0.323279138980940180, -0.323231823394353250, -0.323184506999686760, -0.323137189797058580, -0.323089871786587880, -0.323042552968392460, -0.322995233342590670, -0.322947912909300360, +-0.322900591668640710, -0.322853269620729580, -0.322805946765685250, -0.322758623103625690, -0.322711298634669960, -0.322663973358935980, -0.322616647276542050, -0.322569320387606110, +-0.322521992692247240, -0.322474664190583460, -0.322427334882732560, -0.322380004768813730, -0.322332673848944930, -0.322285342123244390, -0.322238009591830130, -0.322190676254821230, +-0.322143342112335640, -0.322096007164491720, -0.322048671411407360, -0.322001334853201760, -0.321953997489992760, -0.321906659321898820, -0.321859320349037800, -0.321811980571528880, +-0.321764639989490010, -0.321717298603039550, -0.321669956412295450, -0.321622613417376860, -0.321575269618401720, -0.321527925015488440, -0.321480579608754870, -0.321433233398320310, +-0.321385886384302650, -0.321338538566819880, -0.321291189945991150, -0.321243840521934500, -0.321196490294768210, -0.321149139264610250, -0.321101787431579910, -0.321054434795795100, +-0.321007081357374160, -0.320959727116435110, -0.320912372073097200, -0.320865016227478320, -0.320817659579696930, -0.320770302129870950, -0.320722943878119670, -0.320675584824560990, +-0.320628224969313370, -0.320580864312494720, -0.320533502854224380, -0.320486140594620270, -0.320438777533800400, -0.320391413671884010, -0.320344049008989050, -0.320296683545234000, +-0.320249317280736800, -0.320201950215616700, -0.320154582349991780, -0.320107213683980370, -0.320059844217700560, -0.320012473951271530, -0.319965102884811280, -0.319917731018438290, +-0.319870358352270570, -0.319822984886427350, -0.319775610621026720, -0.319728235556187010, -0.319680859692026310, -0.319633483028663900, -0.319586105566217750, -0.319538727304805930, +-0.319491348244547720, -0.319443968385561110, -0.319396587727964590, -0.319349206271876180, -0.319301824017415190, -0.319254440964699630, -0.319207057113848000, -0.319159672464978280, +-0.319112287018209760, -0.319064900773660560, -0.319017513731449150, -0.318970125891693490, -0.318922737254512920, -0.318875347820025520, -0.318827957588349810, -0.318780566559603680, +-0.318733174733906610, -0.318685782111376600, -0.318638388692132180, -0.318590994476291300, -0.318543599463973370, -0.318496203655296460, -0.318448807050378590, -0.318401409649339160, +-0.318354011452296190, -0.318306612459368200, -0.318259212670673250, -0.318211812086330700, -0.318164410706458620, -0.318117008531175470, -0.318069605560599430, -0.318022201794849800, +-0.317974797234044650, -0.317927391878302490, -0.317879985727741400, -0.317832578782480830, -0.317785171042638810, -0.317737762508333800, -0.317690353179684030, -0.317642943056808790, +-0.317595532139826160, -0.317548120428854270, -0.317500707924012530, -0.317453294625419050, -0.317405880533192300, -0.317358465647450410, -0.317311049968312770, -0.317263633495897530, +-0.317216216230323260, -0.317168798171707960, -0.317121379320171090, -0.317073959675830800, -0.317026539238805580, -0.316979118009213580, -0.316931695987174240, -0.316884273172805650, +-0.316836849566226380, -0.316789425167554590, -0.316741999976909610, -0.316694573994409640, -0.316647147220172840, -0.316599719654318600, -0.316552291296964990, -0.316504862148230700, +-0.316457432208233860, -0.316410001477093860, -0.316362569954928790, -0.316315137641857370, -0.316267704537997630, -0.316220270643469080, -0.316172835958389850, -0.316125400482878520, +-0.316077964217053250, -0.316030527161033530, -0.315983089314937520, -0.315935650678883740, -0.315888211252990380, -0.315840771037376960, -0.315793330032161590, -0.315745888237462520, +-0.315698445653399110, -0.315651002280089580, -0.315603558117652560, -0.315556113166206240, -0.315508667425870030, -0.315461220896762150, -0.315413773579001240, -0.315366325472705430, +-0.315318876577994290, -0.315271426894985940, -0.315223976423799010, -0.315176525164551690, -0.315129073117363550, -0.315081620282352650, -0.315034166659637740, -0.314986712249337000, +-0.314939257051569890, -0.314891801066454650, -0.314844344294109900, -0.314796886734653840, -0.314749428388206020, -0.314701969254884640, -0.314654509334807870, -0.314607048628095300, +-0.314559587134865040, -0.314512124855235890, -0.314464661789325920, -0.314417197937254810, -0.314369733299140640, -0.314322267875102150, -0.314274801665257560, -0.314227334669726410, +-0.314179866888626920, -0.314132398322077790, -0.314084928970197190, -0.314037458833104740, -0.313989987910918590, -0.313942516203757520, -0.313895043711739710, -0.313847570434984680, +-0.313800096373610780, -0.313752621527736200, -0.313705145897480500, -0.313657669482961920, -0.313610192284299150, -0.313562714301610480, -0.313515235535015480, -0.313467755984632390, +-0.313420275650579890, -0.313372794532976280, -0.313325312631941080, -0.313277829947592680, -0.313230346480049600, -0.313182862229430310, -0.313135377195854270, -0.313087891379439760, +-0.313040404780305540, -0.312992917398569880, -0.312945429234352370, -0.312897940287771290, -0.312850450558944890, -0.312802960047992800, -0.312755468755033350, -0.312707976680185180, +-0.312660483823566700, -0.312612990185297370, -0.312565495765495640, -0.312518000564280090, -0.312470504581769170, -0.312423007818082410, -0.312375510273338100, -0.312328011947655030, +-0.312280512841151490, -0.312233012953947120, -0.312185512286160200, -0.312138010837909540, -0.312090508609313370, -0.312043005600491360, -0.311995501811561880, -0.311947997242643600, +-0.311900491893854940, -0.311852985765315450, -0.311805478857143490, -0.311757971169457470, -0.311710462702376900, -0.311662953456020130, -0.311615443430506070, -0.311567932625952890, +-0.311520421042480340, -0.311472908680206720, -0.311425395539250860, -0.311377881619731070, -0.311330366921767020, -0.311282851445477020, -0.311235335190979900, -0.311187818158394030, +-0.311140300347839020, -0.311092781759433280, -0.311045262393295610, -0.310997742249544300, -0.310950221328299080, -0.310902699629678310, -0.310855177153800400, -0.310807653900784910, +-0.310760129870750360, -0.310712605063815430, -0.310665079480098580, -0.310617553119719450, -0.310570025982796430, -0.310522498069448370, -0.310474969379793630, -0.310427439913951890, +-0.310379909672041540, -0.310332378654181400, -0.310284846860489900, -0.310237314291086750, -0.310189780946090290, -0.310142246825619360, -0.310094711929792380, -0.310047176258729070, +-0.309999639812547800, -0.309952102591367070, -0.309904564595306460, -0.309857025824484430, -0.309809486279019830, -0.309761945959031120, -0.309714404864637920, -0.309666862995958750, +-0.309619320353112400, -0.309571776936217350, -0.309524232745393260, -0.309476687780758600, -0.309429142042432210, -0.309381595530532570, -0.309334048245179350, -0.309286500186491010, +-0.309238951354586400, -0.309191401749584040, -0.309143851371603550, -0.309096300220763450, -0.309048748297182150, -0.309001195600979440, -0.308953642132273720, -0.308906087891183900, +-0.308858532877828440, -0.308810977092327080, -0.308763420534798270, -0.308715863205360870, -0.308668305104133460, -0.308620746231235640, -0.308573186586786010, -0.308525626170903400, +-0.308478064983706280, -0.308430503025314440, -0.308382940295846340, -0.308335376795420890, -0.308287812524156550, -0.308240247482173100, -0.308192681669589070, -0.308145115086523310, +-0.308097547733094390, -0.308049979609421990, -0.308002410715624620, -0.307954841051820800, -0.307907270618130340, -0.307859699414671670, -0.307812127441563780, -0.307764554698925110, +-0.307716981186875460, -0.307669406905533400, -0.307621831855017850, -0.307574256035447250, -0.307526679446941450, -0.307479102089618930, -0.307431523963598690, -0.307383945068999190, +-0.307336365405940280, -0.307288784974540430, -0.307241203774918650, -0.307193621807193400, -0.307146039071484520, -0.307098455567910540, -0.307050871296590030, -0.307003286257642730, +-0.306955700451187250, -0.306908113877342510, -0.306860526536227030, -0.306812938427960700, -0.306765349552661990, -0.306717759910449920, -0.306670169501443050, -0.306622578325761120, +-0.306574986383522820, -0.306527393674846990, -0.306479800199852270, -0.306432205958658500, -0.306384610951384200, -0.306337015178148380, -0.306289418639069560, -0.306241821334267640, +-0.306194223263861200, -0.306146624427968750, -0.306099024826710140, -0.306051424460204000, -0.306003823328569290, -0.305956221431924640, -0.305908618770389770, -0.305861015344083440, +-0.305813411153124490, -0.305765806197631660, -0.305718200477724690, -0.305670593993522250, -0.305622986745143320, -0.305575378732706520, -0.305527769956331630, -0.305480160416137400, +-0.305432550112242680, -0.305384939044766210, -0.305337327213827840, -0.305289714619546130, -0.305242101262040100, -0.305194487141428440, -0.305146872257830990, -0.305099256611366330, +-0.305051640202153080, -0.305004023030311210, -0.304956405095959280, -0.304908786399216310, -0.304861166940200930, -0.304813546719033100, -0.304765925735831390, -0.304718303990714870, +-0.304670681483802160, -0.304623058215213180, -0.304575434185066500, -0.304527809393481290, -0.304480183840576120, -0.304432557526470910, -0.304384930451284340, -0.304337302615135420, +-0.304289674018142780, -0.304242044660426430, -0.304194414542104940, -0.304146783663297000, -0.304099152024122580, -0.304051519624700230, -0.304003886465149030, -0.303956252545587780, +-0.303908617866136270, -0.303860982426913230, -0.303813346228037740, -0.303765709269628430, -0.303718071551805300, -0.303670433074687000, -0.303622793838392580, -0.303575153843040790, +-0.303527513088751530, -0.303479871575643490, -0.303432229303835730, -0.303384586273447000, -0.303336942484597250, -0.303289297937405110, -0.303241652631989320, -0.303194006568469840, +-0.303146359746965300, -0.303098712167594870, -0.303051063830477310, -0.303003414735732450, -0.302955764883479030, -0.302908114273836240, -0.302860462906922700, -0.302812810782858490, +-0.302765157901762230, -0.302717504263753050, -0.302669849868949680, -0.302622194717472150, -0.302574538809439080, -0.302526882144969700, -0.302479224724182700, -0.302431566547198050, +-0.302383907614134470, -0.302336247925111160, -0.302288587480246780, -0.302240926279661310, -0.302193264323473600, -0.302145601611802260, -0.302097938144767380, -0.302050273922487620, +-0.302002608945082180, -0.301954943212669800, -0.301907276725370490, -0.301859609483302980, -0.301811941486586470, -0.301764272735339620, -0.301716603229682580, -0.301668932969734020, +-0.301621261955613120, -0.301573590187438620, -0.301525917665330550, -0.301478244389407730, -0.301430570359789320, -0.301382895576594030, -0.301335220039941900, -0.301287543749951760, +-0.301239866706742300, -0.301192188910433640, -0.301144510361144480, -0.301096831058994040, -0.301049151004101120, -0.301001470196585740, -0.300953788636566690, -0.300906106324163150, +-0.300858423259493910, -0.300810739442679050, -0.300763054873837370, -0.300715369553088030, -0.300667683480549840, -0.300619996656342870, -0.300572309080585910, -0.300524620753398140, +-0.300476931674898470, -0.300429241845206860, -0.300381551264442100, -0.300333859932723100, -0.300286167850169870, -0.300238475016901150, -0.300190781433036350, -0.300143087098694080, +-0.300095392013994540, -0.300047696179056580, -0.299999999593999310, -0.299952302258941650, -0.299904604174003660, -0.299856905339304150, -0.299809205754962340, -0.299761505421097140, +-0.299713804337828570, -0.299666102505275530, -0.299618399923557210, -0.299570696592792450, -0.299522992513101380, -0.299475287684602850, -0.299427582107415660, -0.299379875781659980, +-0.299332168707454550, -0.299284460884918720, -0.299236752314171350, -0.299189042995332440, -0.299141332928521020, -0.299093622113856210, -0.299045910551456910, -0.298998198241443300, +-0.298950485183934190, -0.298902771379048800, -0.298855056826906160, -0.298807341527626220, -0.298759625481327950, -0.298711908688130630, -0.298664191148153120, -0.298616472861515550, +-0.298568753828336810, -0.298521034048736140, -0.298473313522832520, -0.298425592250746000, -0.298377870232595490, -0.298330147468499900, -0.298282423958579400, -0.298234699702952800, +-0.298186974701739440, -0.298139248955058220, -0.298091522463029330, -0.298043795225771620, -0.297996067243404440, -0.297948338516046630, -0.297900609043818430, -0.297852878826838700, +-0.297805147865226770, -0.297757416159101560, -0.297709683708583190, -0.297661950513790690, -0.297614216574843220, -0.297566481891859860, -0.297518746464960680, -0.297471010294264650, +-0.297423273379890660, -0.297375535721958910, -0.297327797320588340, -0.297280058175898250, -0.297232318288007610, -0.297184577657036600, -0.297136836283104110, -0.297089094166329560, +-0.297041351306831850, -0.296993607704731210, -0.296945863360146500, -0.296898118273197180, -0.296850372444002090, -0.296802625872681520, -0.296754878559354400, -0.296707130504140050, +-0.296659381707157500, -0.296611632168526870, -0.296563881888367190, -0.296516130866797340, -0.296468379103937640, -0.296420626599906980, -0.296372873354824710, -0.296325119368809900, +-0.296277364641982680, -0.296229609174462060, -0.296181852966367400, -0.296134096017817650, -0.296086338328933160, -0.296038579899832790, -0.295990820730635980, -0.295943060821461660, +-0.295895300172430150, -0.295847538783660380, -0.295799776655271740, -0.295752013787383250, -0.295704250180115150, -0.295656485833586450, -0.295608720747916500, -0.295560954923224370, +-0.295513188359630200, -0.295465421057253150, -0.295417653016212030, -0.295369884236627240, -0.295322114718617800, -0.295274344462303000, -0.295226573467801960, -0.295178801735234860, +-0.295131029264720790, -0.295083256056379140, -0.295035482110328930, -0.294987707426690450, -0.294939932005582660, -0.294892155847125080, -0.294844378951436670, -0.294796601318637720, +-0.294748822948847300, -0.294701043842184820, -0.294653263998769290, -0.294605483418721060, -0.294557702102159090, -0.294509920049202400, -0.294462137259971390, -0.294414353734585020, +-0.294366569473162810, -0.294318784475823710, -0.294270998742688080, -0.294223212273874930, -0.294175425069503780, -0.294127637129693640, -0.294079848454564810, -0.294032059044236350, +-0.293984268898827780, -0.293936478018458070, -0.293888686403247670, -0.293840894053315480, -0.293793100968781080, -0.293745307149763490, -0.293697512596383050, -0.293649717308758880, +-0.293601921287009960, -0.293554124531256620, -0.293506327041618050, -0.293458528818213600, -0.293410729861162460, -0.293362930170584850, -0.293315129746599960, -0.293267328589327250, +-0.293219526698885740, -0.293171724075395880, -0.293123920718976750, -0.293076116629747750, -0.293028311807828070, -0.292980506253337990, -0.292932699966396700, -0.292884892947123670, +-0.292837085195637950, -0.292789276712059900, -0.292741467496508700, -0.292693657549103430, -0.292645846869964420, -0.292598035459210810, -0.292550223316962070, -0.292502410443337360, +-0.292454596838457090, -0.292406782502440290, -0.292358967435406570, -0.292311151637474950, -0.292263335108765900, -0.292215517849398530, -0.292167699859492370, -0.292119881139166480, +-0.292072061688541380, -0.292024241507736090, -0.291976420596870180, -0.291928598956062820, -0.291880776585434430, -0.291832953485104020, -0.291785129655191270, -0.291737305095815250, +-0.291689479807096420, -0.291641653789153850, -0.291593827042106790, -0.291545999566075520, -0.291498171361179280, -0.291450342427537590, -0.291402512765269630, -0.291354682374495800, +-0.291306851255335290, -0.291259019407907660, -0.291211186832332050, -0.291163353528728910, -0.291115519497217310, -0.291067684737917000, -0.291019849250947040, -0.290972013036427830, +-0.290924176094478630, -0.290876338425218980, -0.290828500028768030, -0.290780660905246290, -0.290732821054772880, -0.290684980477467050, -0.290637139173449130, -0.290589297142838380, +-0.290541454385754410, -0.290493610902316350, -0.290445766692644660, -0.290397921756858580, -0.290350076095077740, -0.290302229707421260, -0.290254382594009600, -0.290206534754962000, +-0.290158686190398090, -0.290110836900436990, -0.290062986885199270, -0.290015136144804060, -0.289967284679371000, -0.289919432489019300, -0.289871579573869440, -0.289823725934040650, +-0.289775871569652120, -0.289728016480824360, -0.289680160667676550, -0.289632304130328310, -0.289584446868898890, -0.289536588883508810, -0.289488730174277230, -0.289440870741323850, +-0.289393010584767800, -0.289345149704729740, -0.289297288101328760, -0.289249425774684540, -0.289201562724916370, -0.289153698952144710, -0.289105834456488800, -0.289057969238068260, +-0.289010103297002440, -0.288962236633411750, -0.288914369247415480, -0.288866501139133260, -0.288818632308684380, -0.288770762756189350, -0.288722892481767410, -0.288675021485537810, +-0.288627149767621110, -0.288579277328136540, -0.288531404167203740, -0.288483530284942000, -0.288435655681471890, -0.288387780356912590, -0.288339904311383900, -0.288292027545004990, +-0.288244150057896440, -0.288196271850177540, -0.288148392921967920, -0.288100513273386930, -0.288052632904555070, -0.288004751815591600, -0.287956870006616290, -0.287908987477748350, +-0.287861104229108380, -0.287813220260815680, -0.287765335572989440, -0.287717450165750340, -0.287669564039217620, -0.287621677193510950, -0.287573789628749690, -0.287525901345054350, +-0.287478012342544280, -0.287430122621339160, -0.287382232181558340, -0.287334341023322340, -0.287286449146750500, -0.287238556551962560, -0.287190663239077770, -0.287142769208216740, +-0.287094874459498830, -0.287046978993043660, -0.286999082808970680, -0.286951185907400430, -0.286903288288452190, -0.286855389952245300, -0.286807490898900340, -0.286759591128536660, +-0.286711690641274000, -0.286663789437231750, -0.286615887516530390, -0.286567984879289310, -0.286520081525628300, -0.286472177455666670, -0.286424272669524970, -0.286376367167322620, +-0.286328460949179350, -0.286280554015214520, -0.286232646365548680, -0.286184738000301250, -0.286136828919592020, -0.286088919123540230, -0.286041008612266610, -0.285993097385890460, +-0.285945185444531120, -0.285897272788309230, -0.285849359417344180, -0.285801445331755780, -0.285753530531663300, -0.285705615017187390, -0.285657698788447490, -0.285609781845563290, +-0.285561864188654260, -0.285513945817840950, -0.285466026733242840, -0.285418106934979600, -0.285370186423170690, -0.285322265197936740, -0.285274343259397160, -0.285226420607671670, +-0.285178497242879690, -0.285130573165141950, -0.285082648374577750, -0.285034722871306930, -0.284986796655448900, -0.284938869727124290, -0.284890942086452490, -0.284843013733552920, +-0.284795084668546250, -0.284747154891551830, -0.284699224402689580, -0.284651293202078830, -0.284603361289840210, -0.284555428666093240, -0.284507495330957700, -0.284459561284553020, +-0.284411626526999810, -0.284363691058417580, -0.284315754878926070, -0.284267817988644760, -0.284219880387694360, -0.284171942076194230, -0.284124003054264270, -0.284076063322023900, +-0.284028122879593730, -0.283980181727093330, -0.283932239864642000, -0.283884297292360480, -0.283836354010368270, -0.283788410018785130, -0.283740465317730560, -0.283692519907325250, +-0.283644573787688650, -0.283596626958940610, -0.283548679421200540, -0.283500731174589240, -0.283452782219226100, -0.283404832555231020, -0.283356882182723420, -0.283308931101824040, +-0.283260979312652320, -0.283213026815328170, -0.283165073609971010, -0.283117119696701610, -0.283069165075639400, -0.283021209746903870, -0.282973253710615710, -0.282925296966894450, +-0.282877339515859920, -0.282829381357631640, -0.282781422492330290, -0.282733462920075450, -0.282685502640986910, -0.282637541655184180, -0.282589579962788050, -0.282541617563917940, +-0.282493654458693790, -0.282445690647235070, -0.282397726129662570, -0.282349760906095760, -0.282301794976654590, -0.282253828341458400, -0.282205861000628170, -0.282157892954283230, +-0.282109924202543550, -0.282061954745528640, -0.282013984583359300, -0.281966013716154980, -0.281918042144035210, -0.281870069867120760, -0.281822096885531110, -0.281774123199386270, +-0.281726148808805640, -0.281678173713910070, -0.281630197914819080, -0.281582221411652620, -0.281534244204530160, -0.281486266293572480, -0.281438287678899170, -0.281390308360630170, +-0.281342328338884950, -0.281294347613784300, -0.281246366185447790, -0.281198384053995390, -0.281150401219546600, -0.281102417682222220, -0.281054433442141820, -0.281006448499424910, +-0.280958462854192290, -0.280910476506563530, -0.280862489456658540, -0.280814501704596930, -0.280766513250499450, -0.280718524094485720, -0.280670534236675710, -0.280622543677188920, +-0.280574552416146210, -0.280526560453667080, -0.280478567789871570, -0.280430574424879180, -0.280382580358810810, -0.280334585591785980, -0.280286590123924710, -0.280238593955346560, +-0.280190597086172280, -0.280142599516521540, -0.280094601246513920, -0.280046602276270150, -0.279998602605909920, -0.279950602235553180, -0.279902601165319450, -0.279854599395329700, +-0.279806596925703480, -0.279758593756560700, -0.279710589888021060, -0.279662585320205330, -0.279614580053233200, -0.279566574087224570, -0.279518567422299080, -0.279470560058577620, +-0.279422551996179710, -0.279374543235225480, -0.279326533775834440, -0.279278523618127490, -0.279230512762224210, -0.279182501208244280, -0.279134488956308490, -0.279086476006536470, +-0.279038462359048280, -0.278990448013963500, -0.278942432971403030, -0.278894417231486450, -0.278846400794333870, -0.278798383660064820, -0.278750365828800250, -0.278702347300659790, +-0.278654328075763400, -0.278606308154230820, -0.278558287536182890, -0.278510266221739240, -0.278462244211019890, -0.278414221504144580, -0.278366198101234090, -0.278318174002408100, +-0.278270149207786700, -0.278222123717489440, -0.278174097531637350, -0.278126070650350050, -0.278078043073747120, -0.278030014801949440, -0.277981985835076830, -0.277933956173249170, +-0.277885925816586220, -0.277837894765208930, -0.277789863019236860, -0.277741830578790090, -0.277693797443988370, -0.277645763614952580, -0.277597729091802410, -0.277549693874657890, +-0.277501657963638680, -0.277453621358865750, -0.277405584060458840, -0.277357546068537910, -0.277309507383222690, -0.277261468004634140, -0.277213427932891940, -0.277165387168115670, +-0.277117345710426450, -0.277069303559943800, -0.277021260716787950, -0.276973217181078480, -0.276925172952936390, -0.276877128032481380, -0.276829082419833560, -0.276781036115112620, +-0.276732989118439470, -0.276684941429933880, -0.276636893049715950, -0.276588843977905340, -0.276540794214623020, -0.276492743759988780, -0.276444692614122630, -0.276396640777144320, +-0.276348588249174850, -0.276300535030333920, -0.276252481120741190, -0.276204426520517740, -0.276156371229783150, -0.276108315248657700, -0.276060258577261020, -0.276012201215714130, +-0.275964143164136700, -0.275916084422648920, -0.275868024991370530, -0.275819964870422480, -0.275771904059924520, -0.275723842559996820, -0.275675780370759070, -0.275627717492332280, +-0.275579653924836190, -0.275531589668391030, -0.275483524723116380, -0.275435459089133420, -0.275387392766561770, -0.275339325755521670, -0.275291258056132800, -0.275243189668516240, +-0.275195120592791660, -0.275147050829078920, -0.275098980377498910, -0.275050909238171490, -0.275002837411216780, -0.274954764896754580, -0.274906691694905890, -0.274858617805790460, +-0.274810543229528470, -0.274762467966239710, -0.274714392016045190, -0.274666315379064720, -0.274618238055418410, -0.274570160045226110, -0.274522081348608840, -0.274474001965686390, +-0.274425921896578880, -0.274377841141406180, -0.274329759700289330, -0.274281677573348040, -0.274233594760702140, -0.274185511262472650, -0.274137427078779420, -0.274089342209742630, +-0.274041256655482010, -0.273993170416118700, -0.273945083491772490, -0.273896995882563500, -0.273848907588611690, -0.273800818610037970, -0.273752728946962230, -0.273704638599504670, +-0.273656547567785070, -0.273608455851924500, -0.273560363452042820, -0.273512270368260260, -0.273464176600696550, -0.273416082149472880, -0.273367987014708990, -0.273319891196524670, +-0.273271794695041090, -0.273223697510378010, -0.273175599642655640, -0.273127501091993910, -0.273079401858513810, -0.273031301942335210, -0.272983201343578400, -0.272935100062363100, +-0.272886998098810510, -0.272838895453040410, -0.272790792125173100, -0.272742688115328370, -0.272694583423627350, -0.272646478050189880, -0.272598371995136150, -0.272550265258586110, +-0.272502157840660840, -0.272454049741480190, -0.272405940961163940, -0.272357831499833340, -0.272309721357608110, -0.272261610534608570, -0.272213499030954600, -0.272165386846767280, +-0.272117273982166510, -0.272069160437272580, -0.272021046212205300, -0.271972931307085830, -0.271924815722034030, -0.271876699457170190, -0.271828582512614160, -0.271780464888487120, +-0.271732346584908910, -0.271684227601999840, -0.271636107939879800, -0.271587987598669870, -0.271539866578490000, -0.271491744879460480, -0.271443622501701120, -0.271395499445333140, +-0.271347375710476460, -0.271299251297250850, -0.271251126205777630, -0.271203000436176510, -0.271154873988567910, -0.271106746863071730, -0.271058619059809050, -0.271010490578899870, +-0.270962361420464480, -0.270914231584622690, -0.270866101071495780, -0.270817969881203660, -0.270769838013866560, -0.270721705469604450, -0.270673572248538550, -0.270625438350788670, +-0.270577303776475210, -0.270529168525718070, -0.270481032598638430, -0.270432895995356190, -0.270384758715991270, -0.270336620760664950, -0.270288482129497020, -0.270240342822607890, +-0.270192202840117470, -0.270144062182147040, -0.270095920848816400, -0.270047778840245940, -0.269999636156555640, -0.269951492797866620, -0.269903348764298940, -0.269855204055972850, +-0.269807058673008360, -0.269758912615526590, -0.269710765883647560, -0.269662618477491680, -0.269614470397178730, -0.269566321642830060, -0.269518172214565640, -0.269470022112505310, +-0.269421871336770370, -0.269373719887480770, -0.269325567764756800, -0.269277414968718540, -0.269229261499487170, -0.269181107357182650, -0.269132952541925370, -0.269084797053835260, +-0.269036640893033590, -0.268988484059640260, -0.268940326553775810, -0.268892168375560070, -0.268844009525114340, -0.268795850002558620, -0.268747689808013220, -0.268699528941598210, +-0.268651367403434760, -0.268603205193642950, -0.268555042312343120, -0.268506878759655230, -0.268458714535700580, -0.268410549640599130, -0.268362384074470880, -0.268314217837437140, +-0.268266050929617810, -0.268217883351133330, -0.268169715102103800, -0.268121546182650330, -0.268073376592893040, -0.268025206332952290, -0.267977035402948090, -0.267928863803001740, +-0.267880691533233240, -0.267832518593763000, -0.267784344984711040, -0.267736170706198650, -0.267687995758345790, -0.267639820141273020, -0.267591643855100200, -0.267543466899948730, +-0.267495289275938570, -0.267447110983189800, -0.267398932021823690, -0.267350752391960210, -0.267302572093719830, -0.267254391127222660, -0.267206209492589890, -0.267158027189941580, +-0.267109844219398260, -0.267061660581079830, -0.267013476275107740, -0.266965291301601960, -0.266917105660682890, -0.266868919352470700, -0.266820732377086590, -0.266772544734650670, +-0.266724356425283360, -0.266676167449104770, -0.266627977806236200, -0.266579787496797670, -0.266531596520909190, -0.266483404878692210, -0.266435212570266700, -0.266387019595753170, +-0.266338825955271640, -0.266290631648943510, -0.266242436676888740, -0.266194241039227950, -0.266146044736081060, -0.266097847767569510, -0.266049650133813380, -0.266001451834933070, +-0.265953252871048760, -0.265905053242281700, -0.265856852948752000, -0.265808651990580180, -0.265760450367886310, -0.265712248080791750, -0.265664045129416600, -0.265615841513880850, +-0.265567637234305930, -0.265519432290811930, -0.265471226683519360, -0.265423020412548280, -0.265374813478020110, -0.265326605880054860, -0.265278397618773140, -0.265230188694294990, +-0.265181979106741740, -0.265133768856233630, -0.265085557942891010, -0.265037346366834130, -0.264989134128184310, -0.264940921227061640, -0.264892707663586640, -0.264844493437879470, +-0.264796278550061490, -0.264748063000252830, -0.264699846788574000, -0.264651629915145130, -0.264603412380087550, -0.264555194183521520, -0.264506975325567050, -0.264458755806345590, +-0.264410535625977220, -0.264362314784582500, -0.264314093282281560, -0.264265871119195860, -0.264217648295445470, -0.264169424811150910, -0.264121200666432410, -0.264072975861411320, +-0.264024750396207820, -0.263976524270942370, -0.263928297485735260, -0.263880070040707790, -0.263831841935980140, -0.263783613171672930, -0.263735383747906230, -0.263687153664801500, +-0.263638922922478870, -0.263590691521058520, -0.263542459460661900, -0.263494226741409100, -0.263445993363420730, -0.263397759326816970, -0.263349524631719180, -0.263301289278247640, +-0.263253053266522870, -0.263204816596665000, -0.263156579268795540, -0.263108341283034670, -0.263060102639502910, -0.263011863338320440, -0.262963623379608770, -0.262915382763488080, +-0.262867141490078890, -0.262818899559501440, -0.262770656971877130, -0.262722413727326190, -0.262674169825968810, -0.262625925267926390, -0.262577680053319220, -0.262529434182267820, +-0.262481187654892370, -0.262432940471314440, -0.262384692631654150, -0.262336444136032080, -0.262288194984568510, -0.262239945177384860, -0.262191694714601350, -0.262143443596338620, +-0.262095191822716840, -0.262046939393857540, -0.261998686309880880, -0.261950432570907500, -0.261902178177057580, -0.261853923128452680, -0.261805667425212940, -0.261757411067459090, +-0.261709154055311200, -0.261660896388890900, -0.261612638068318360, -0.261564379093713770, -0.261516119465198700, -0.261467859182893340, -0.261419598246918290, -0.261371336657393820, +-0.261323074414441470, -0.261274811518181440, -0.261226547968734350, -0.261178283766220430, -0.261130018910761260, -0.261081753402477080, -0.261033487241488500, -0.260985220427915720, +-0.260936952961880350, -0.260888684843502640, -0.260840416072903150, -0.260792146650202230, -0.260743876575521390, -0.260695605848980830, -0.260647334470700820, -0.260599062440802940, +-0.260550789759407380, -0.260502516426634800, -0.260454242442605570, -0.260405967807441130, -0.260357692521261790, -0.260309416584188210, -0.260261139996340650, -0.260212862757840670, +-0.260164584868808560, -0.260116306329364940, -0.260068027139630180, -0.260019747299725710, -0.259971466809771960, -0.259923185669889480, -0.259874903880198630, -0.259826621440820920, +-0.259778338351876690, -0.259730054613486190, -0.259681770225770990, -0.259633485188851320, -0.259585199502847970, -0.259536913167881190, -0.259488626184072530, -0.259440338551542300, +-0.259392050270411290, -0.259343761340799670, -0.259295471762829080, -0.259247181536619850, -0.259198890662292620, -0.259150599139967740, -0.259102306969766830, -0.259054014151810120, +-0.259005720686218350, -0.258957426573111880, -0.258909131812612270, -0.258860836404839870, -0.258812540349914910, -0.258764243647959020, -0.258715946299092500, -0.258667648303436190, +-0.258619349661110280, -0.258571050372236430, -0.258522750436934960, -0.258474449855326580, -0.258426148627531660, -0.258377846753671810, -0.258329544233867390, -0.258281241068239080, +-0.258232937256907210, -0.258184632799993430, -0.258136327697618070, -0.258088021949901940, -0.258039715556965250, -0.257991408518929770, -0.257943100835915710, -0.257894792508043920, +-0.257846483535434710, -0.257798173918209750, -0.257749863656489330, -0.257701552750393860, -0.257653241200044900, -0.257604929005562810, -0.257556616167068430, -0.257508302684682110, +-0.257459988558525420, -0.257411673788718760, -0.257363358375382930, -0.257315042318638280, -0.257266725618606470, -0.257218408275407820, -0.257170090289163160, -0.257121771659992840, +-0.257073452388018540, -0.257025132473360560, -0.256976811916139800, -0.256928490716476550, -0.256880168874492500, -0.256831846390308040, -0.256783523264043520, -0.256735199495820690, +-0.256686875085759770, -0.256638550033981730, -0.256590224340606850, -0.256541898005756830, -0.256493571029552060, -0.256445243412113390, -0.256396915153561170, -0.256348586254017130, +-0.256300256713601570, -0.256251926532435390, -0.256203595710638940, -0.256155264248333960, -0.256106932145640840, -0.256058599402680330, -0.256010266019572940, -0.255961931996440300, +-0.255913597333402850, -0.255865262030580910, -0.255816926088096310, -0.255768589506069400, -0.255720252284620970, -0.255671914423871490, -0.255623575923942690, -0.255575236784954920, +-0.255526897007029070, -0.255478556590285510, -0.255430215534846070, -0.255381873840831000, -0.255333531508361300, -0.255285188537557330, -0.255236844928540820, -0.255188500681432170, +-0.255140155796352300, -0.255091810273421650, -0.255043464112761850, -0.254995117314493370, -0.254946769878737160, -0.254898421805613560, -0.254850073095244320, -0.254801723747749900, +-0.254753373763250750, -0.254705023141868600, -0.254656671883723930, -0.254608319988937510, -0.254559967457629930, -0.254511614289922810, -0.254463260485936650, -0.254414906045792370, +-0.254366550969610360, -0.254318195257512420, -0.254269838909619020, -0.254221481926050990, -0.254173124306928840, -0.254124766052374330, -0.254076407162507840, -0.254028047637450400, +-0.253979687477322410, -0.253931326682245610, -0.253882965252340440, -0.253834603187727490, -0.253786240488528440, -0.253737877154863790, -0.253689513186854450, -0.253641148584620950, +-0.253592783348284940, -0.253544417477966970, -0.253496050973788020, -0.253447683835868460, -0.253399316064330140, -0.253350947659293500, -0.253302578620879510, -0.253254208949208640, +-0.253205838644402710, -0.253157467706582150, -0.253109096135867910, -0.253060723932380550, -0.253012351096241760, -0.252963977627572110, -0.252915603526492060, -0.252867228793123460, +-0.252818853427586810, -0.252770477430002970, -0.252722100800492570, -0.252673723539177330, -0.252625345646177780, -0.252576967121614810, -0.252528587965609060, -0.252480208178282260, +-0.252431827759754920, -0.252383446710148010, -0.252335065029582030, -0.252286682718178890, -0.252238299776058990, -0.252189916203343360, -0.252141532000152490, -0.252093147166608240, +-0.252044761702831130, -0.251996375608941670, -0.251947988885061700, -0.251899601531311750, -0.251851213547812810, -0.251802824934685370, -0.251754435692051360, -0.251706045820031200, +-0.251657655318745950, -0.251609264188316140, -0.251560872428863600, -0.251512480040508910, -0.251464087023372970, -0.251415693377576410, -0.251367299103241020, -0.251318904200487410, +-0.251270508669436510, -0.251222112510208930, -0.251173715722926520, -0.251125318307709790, -0.251076920264679760, -0.251028521593957000, -0.250980122295663410, -0.250931722369919450, +-0.250883321816845810, -0.250834920636564260, -0.250786518829195390, -0.250738116394860270, -0.250689713333679400, -0.250641309645774690, -0.250592905331266710, -0.250544500390276480, +-0.250496094822924560, -0.250447688629332810, -0.250399281809621840, -0.250350874363912680, -0.250302466292325890, -0.250254057594983370, -0.250205648272005750, -0.250157238323513940, +-0.250108827749628670, -0.250060416550471680, -0.250012004726163690, -0.249963592276825300, -0.249915179202578300, -0.249866765503543390, -0.249818351179841550, -0.249769936231593410, +-0.249721520658920840, -0.249673104461944490, -0.249624687640785350, -0.249576270195564110, -0.249527852126402580, -0.249479433433421440, -0.249431014116741710, -0.249382594176484010, +-0.249334173612770270, -0.249285752425721100, -0.249237330615457530, -0.249188908182100210, -0.249140485125771060, -0.249092061446590680, -0.249043637144679720, -0.248995212220160110, +-0.248946786673152450, -0.248898360503777840, -0.248849933712156880, -0.248801506298411550, -0.248753078262662440, -0.248704649605030610, -0.248656220325636750, -0.248607790424602760, +-0.248559359902049300, -0.248510928758097440, -0.248462496992867820, -0.248414064606482410, -0.248365631599061800, -0.248317197970727150, -0.248268763721599060, -0.248220328851799480, +-0.248171893361449100, -0.248123457250668980, -0.248075020519579780, -0.248026583168303450, -0.247978145196960680, -0.247929706605672100, -0.247881267394559710, -0.247832827563744110, +-0.247784387113346470, -0.247735946043487420, -0.247687504354288960, -0.247639062045871720, -0.247590619118356840, -0.247542175571864950, -0.247493731406518090, -0.247445286622436870, +-0.247396841219742450, -0.247348395198555500, -0.247299948558997980, -0.247251501301190580, -0.247203053425254450, -0.247154604931310250, -0.247106155819479980, -0.247057706089884280, +-0.247009255742643930, -0.246960804777880850, -0.246912353195715750, -0.246863900996269790, -0.246815448179663640, -0.246766994746019290, -0.246718540695457460, -0.246670086028099260, +-0.246621630744065430, -0.246573174843477960, -0.246524718326457560, -0.246476261193125350, -0.246427803443602040, -0.246379345078009680, -0.246330886096468940, -0.246282426499101010, +-0.246233966286026560, -0.246185505457367640, -0.246137044013244930, -0.246088581953779200, -0.246040119279092450, -0.245991655989305390, -0.245943192084539190, -0.245894727564914590, +-0.245846262430553600, -0.245797796681576950, -0.245749330318105810, -0.245700863340260920, -0.245652395748164280, -0.245603927541936660, -0.245555458721699230, -0.245506989287572720, +-0.245458519239679180, -0.245410048578139330, -0.245361577303074340, -0.245313105414605020, -0.245264632912853330, -0.245216159797940060, -0.245167686069986400, -0.245119211729113110, +-0.245070736775442190, -0.245022261209094460, -0.244973785030190630, -0.244925308238852750, -0.244876830835201620, -0.244828352819358410, -0.244779874191443900, -0.244731394951580110, +-0.244682915099887850, -0.244634434636488320, -0.244585953561502230, -0.244537471875051700, -0.244488989577257510, -0.244440506668240850, -0.244392023148122470, -0.244343539017024460, +-0.244295054275067620, -0.244246568922373150, -0.244198082959061810, -0.244149596385255680, -0.244101109201075580, -0.244052621406642300, -0.244004133002077850, -0.243955643987503110, +-0.243907154363039220, -0.243858664128807050, -0.243810173284928630, -0.243761681831524770, -0.243713189768716730, -0.243664697096625250, -0.243616203815372500, -0.243567709925079200, +-0.243519215425866660, -0.243470720317855630, -0.243422224601168250, -0.243373728275925270, -0.243325231342248010, -0.243276733800257220, -0.243228235650075040, -0.243179736891822260, +-0.243131237525619710, -0.243082737551589490, -0.243034236969852440, -0.242985735780529790, -0.242937233983742370, -0.242888731579612300, -0.242840228568260370, -0.242791724949807910, +-0.242743220724375680, -0.242694715892085850, -0.242646210453059230, -0.242597704407417070, -0.242549197755280220, -0.242500690496770810, -0.242452182632009680, -0.242403674161118100, +-0.242355165084216890, -0.242306655401428210, -0.242258145112872860, -0.242209634218671750, -0.242161122718946960, -0.242112610613819390, -0.242064097903410270, -0.242015584587840500, +-0.241967070667232190, -0.241918556141706180, -0.241870041011383820, -0.241821525276385900, -0.241773008936834590, -0.241724491992850790, -0.241675974444555740, -0.241627456292070300, +-0.241578937535516680, -0.241530418175015720, -0.241481898210688720, -0.241433377642656520, -0.241384856471041300, -0.241336334695963970, -0.241287812317545790, -0.241239289335907630, +-0.241190765751171710, -0.241142241563458870, -0.241093716772889960, -0.241045191379587210, -0.240996665383671510, -0.240948138785264110, -0.240899611584485950, -0.240851083781459200, +-0.240802555376304710, -0.240754026369143860, -0.240705496760097500, -0.240656966549287840, -0.240608435736835740, -0.240559904322862560, -0.240511372307489200, -0.240462839690837840, +-0.240414306473029390, -0.240365772654185160, -0.240317238234426050, -0.240268703213874310, -0.240220167592650800, -0.240171631370876440, -0.240123094548673420, -0.240074557126162660, +-0.240026019103465520, -0.239977480480702910, -0.239928941257997020, -0.239880401435468770, -0.239831861013239530, -0.239783319991430180, -0.239734778370162990, -0.239686236149558860, +-0.239637693329739110, -0.239589149910824720, -0.239540605892937880, -0.239492061276199510, -0.239443516060731030, -0.239394970246653290, -0.239346423834088550, -0.239297876823157780, +-0.239249329213981870, -0.239200781006683070, -0.239152232201382320, -0.239103682798200990, -0.239055132797260010, -0.239006582198681650, -0.238958031002586810, -0.238909479209096910, +-0.238860926818332870, -0.238812373830416950, -0.238763820245470100, -0.238715266063613710, -0.238666711284968690, -0.238618155909657350, -0.238569599937800610, -0.238521043369519880, +-0.238472486204936110, -0.238423928444171540, -0.238375370087347160, -0.238326811134584370, -0.238278251586004100, -0.238229691441728620, -0.238181130701878930, -0.238132569366575980, +-0.238084007435942050, -0.238035444910098090, -0.237986881789165520, -0.237938318073265320, -0.237889753762519750, -0.237841188857049800, -0.237792623356976870, -0.237744057262421950, +-0.237695490573507310, -0.237646923290353970, -0.237598355413083300, -0.237549786941816300, -0.237501217876675300, -0.237452648217781230, -0.237404077965255560, -0.237355507119219240, +-0.237306935679794610, -0.237258363647102620, -0.237209791021264300, -0.237161217802401900, -0.237112643990636500, -0.237064069586089470, -0.237015494588881850, -0.236966918999135910, +-0.236918342816972660, -0.236869766042513590, -0.236821188675879650, -0.236772610717193160, -0.236724032166575170, -0.236675453024147080, -0.236626873290029930, -0.236578292964346040, +-0.236529712047216400, -0.236481130538762490, -0.236432548439105330, -0.236383965748367230, -0.236335382466669190, -0.236286798594132290, -0.236238214130878810, -0.236189629077029810, +-0.236141043432706730, -0.236092457198030600, -0.236043870373123770, -0.235995282958107260, -0.235946694953102530, -0.235898106358230640, -0.235849517173613910, -0.235800927399373420, +-0.235752337035630590, -0.235703746082506470, -0.235655154540123420, -0.235606562408602500, -0.235557969688065170, -0.235509376378632480, -0.235460782480426790, -0.235412187993569140, +-0.235363592918180600, -0.235314997254383480, -0.235266401002298900, -0.235217804162048290, -0.235169206733752740, -0.235120608717534620, -0.235072010113514970, -0.235023410921815310, +-0.234974811142556670, -0.234926210775861430, -0.234877609821850690, -0.234829008280645900, -0.234780406152368170, -0.234731803437139840, -0.234683200135082040, -0.234634596246316220, +-0.234585991770963450, -0.234537386709146170, -0.234488781060985390, -0.234440174826602680, -0.234391568006119100, -0.234342960599657040, -0.234294352607337550, -0.234245744029281780, +-0.234197134865612060, -0.234148525116449510, -0.234099914781915660, -0.234051303862131580, -0.234002692357219650, -0.233954080267301020, -0.233905467592497200, -0.233856854332929240, +-0.233808240488719590, -0.233759626059989340, -0.233711011046860040, -0.233662395449452780, -0.233613779267889950, -0.233565162502292670, -0.233516545152782500, -0.233467927219480510, +-0.233419308702509150, -0.233370689601989530, -0.233322069918042750, -0.233273449650791190, -0.233224828800356050, -0.233176207366858820, -0.233127585350420640, -0.233078962751163940, +-0.233030339569209820, -0.232981715804679860, -0.232933091457695170, -0.232884466528378190, -0.232835841016850040, -0.232787214923232290, -0.232738588247646070, -0.232689960990213800, +-0.232641333151056650, -0.232592704730296140, -0.232544075728053470, -0.232495446144451000, -0.232446815979609950, -0.232398185233651410, -0.232349553906697870, -0.232300921998870400, +-0.232252289510290640, -0.232203656441079740, -0.232155022791360130, -0.232106388561252960, -0.232057753750879810, -0.232009118360361840, -0.231960482389821530, -0.231911845839379990, +-0.231863208709158860, -0.231814570999279240, -0.231765932709863650, -0.231717293841033230, -0.231668654392909570, -0.231620014365613830, -0.231571373759268510, -0.231522732573994750, +-0.231474090809914130, -0.231425448467147880, -0.231376805545818440, -0.231328162046046980, -0.231279517967954680, -0.231230873311664030, -0.231182228077296190, -0.231133582264972770, +-0.231084935874814960, -0.231036288906945250, -0.230987641361484840, -0.230938993238555300, -0.230890344538277840, -0.230841695260774970, -0.230793045406167850, -0.230744394974578130, +-0.230695743966126960, -0.230647092380936890, -0.230598440219129090, -0.230549787480825190, -0.230501134166146370, -0.230452480275215170, -0.230403825808152750, -0.230355170765080330, +-0.230306515146120440, -0.230257858951394250, -0.230209202181023420, -0.230160544835129130, -0.230111886913833940, -0.230063228417259010, -0.230014569345526030, -0.229965909698756160, +-0.229917249477071980, -0.229868588680594650, -0.229819927309445870, -0.229771265363746840, -0.229722602843620060, -0.229673939749186790, -0.229625276080568680, -0.229576611837886910, +-0.229527947021264080, -0.229479281630821370, -0.229430615666680020, -0.229381949128962560, -0.229333282017790240, -0.229284614333284700, -0.229235946075567220, -0.229187277244760290, +-0.229138607840985160, -0.229089937864363520, -0.229041267315016590, -0.228992596193066940, -0.228943924498635790, -0.228895252231844840, -0.228846579392815300, -0.228797905981669770, +-0.228749231998529480, -0.228700557443516080, -0.228651882316750880, -0.228603206618356400, -0.228554530348453910, -0.228505853507164650, -0.228457176094611190, -0.228408498110914790, +-0.228359819556197140, -0.228311140430579510, -0.228262460734184490, -0.228213780467133280, -0.228165099629547650, -0.228116418221548820, -0.228067736243259380, -0.228019053694800610, +-0.227970370576294180, -0.227921686887861410, -0.227873002629624840, -0.227824317801705780, -0.227775632404225940, -0.227726946437306570, -0.227678259901070240, -0.227629572795638310, +-0.227580885121132420, -0.227532196877673870, -0.227483508065385280, -0.227434818684387920, -0.227386128734803100, -0.227337438216753370, -0.227288747130360040, -0.227240055475744830, +-0.227191363253029080, -0.227142670462335330, -0.227093977103784930, -0.227045283177499560, -0.226996588683600560, -0.226947893622210520, -0.226899197993450760, -0.226850501797442980, +-0.226801805034308520, -0.226753107704170010, -0.226704409807148700, -0.226655711343366370, -0.226607012312944330, -0.226558312716005210, -0.226509612552670270, -0.226460911823060910, +-0.226412210527299680, -0.226363508665507920, -0.226314806237807390, -0.226266103244319420, -0.226217399685166630, -0.226168695560470310, -0.226119990870352280, -0.226071285614933840, +-0.226022579794337620, -0.225973873408684940, -0.225925166458097570, -0.225876458942696870, -0.225827750862605450, -0.225779042217944650, -0.225730333008836240, -0.225681623235401560, +-0.225632912897763270, -0.225584201996042680, -0.225535490530361180, -0.225486778500841370, -0.225438065907604600, -0.225389352750772680, -0.225340639030466940, -0.225291924746810030, +-0.225243209899923330, -0.225194494489928590, -0.225145778516947200, -0.225097061981101770, -0.225048344882513710, -0.224999627221304760, -0.224950908997596320, -0.224902190211511060, +-0.224853470863170310, -0.224804750952695860, -0.224756030480209150, -0.224707309445832750, -0.224658587849688090, -0.224609865691896980, -0.224561142972580760, -0.224512419691862110, +-0.224463695849862420, -0.224414971446703050, -0.224366246482506660, -0.224317520957394710, -0.224268794871488930, -0.224220068224910720, -0.224171341017782770, -0.224122613250226480, +-0.224073884922363660, -0.224025156034315690, -0.223976426586205260, -0.223927696578153780, -0.223878966010283040, -0.223830234882714450, -0.223781503195570720, -0.223732770948973230, +-0.223684038143043800, -0.223635304777903860, -0.223586570853676090, -0.223537836370481860, -0.223489101328442630, -0.223440365727681080, -0.223391629568318620, -0.223342892850477090, +-0.223294155574277900, -0.223245417739843720, -0.223196679347296030, -0.223147940396756620, -0.223099200888346950, -0.223050460822189680, -0.223001720198406280, -0.222952979017118580, +-0.222904237278447990, -0.222855494982517250, -0.222806752129447750, -0.222758008719361380, -0.222709264752379570, -0.222660520228625040, -0.222611775148219170, -0.222563029511283460, +-0.222514283317940600, -0.222465536568312030, -0.222416789262519620, -0.222368041400684810, -0.222319292982930320, -0.222270544009377600, -0.222221794480148530, -0.222173044395364530, +-0.222124293755148360, -0.222075542559621450, -0.222026790808905670, -0.221978038503122500, -0.221929285642394670, -0.221880532226843620, -0.221831778256591230, -0.221783023731758950, +-0.221734268652469590, -0.221685513018844510, -0.221636756831005250, -0.221588000089074500, -0.221539242793173770, -0.221490484943424940, -0.221441726539949450, -0.221392967582870080, +-0.221344208072308280, -0.221295448008385990, -0.221246687391224630, -0.221197926220946970, -0.221149164497674520, -0.221100402221529160, -0.221051639392632340, -0.221002876011106850, +-0.220954112077074190, -0.220905347590656250, -0.220856582551974490, -0.220807816961151730, -0.220759050818309400, -0.220710284123569470, -0.220661516877053400, -0.220612749078883950, +-0.220563980729182620, -0.220515211828070930, -0.220466442375671650, -0.220417672372106240, -0.220368901817496660, -0.220320130711964380, -0.220271359055632220, -0.220222586848621640, +-0.220173814091054630, -0.220125040783052620, -0.220076266924738470, -0.220027492516233630, -0.219978717557660080, -0.219929942049139270, -0.219881165990794050, -0.219832389382745940, +-0.219783612225116830, -0.219734834518028280, -0.219686056261603040, -0.219637277455962680, -0.219588498101228710, -0.219539718197523910, -0.219490937744969810, -0.219442156743688390, +-0.219393375193801120, -0.219344593095430830, -0.219295810448699090, -0.219247027253727830, -0.219198243510638550, -0.219149459219554090, -0.219100674380595990, -0.219051888993886220, +-0.219003103059546260, -0.218954316577699010, -0.218905529548465950, -0.218856741971969050, -0.218807953848329910, -0.218759165177671270, -0.218710375960114750, -0.218661586195781830, +-0.218612795884795400, -0.218564005027276960, -0.218515213623348530, -0.218466421673131630, -0.218417629176749090, -0.218368836134322510, -0.218320042545973810, -0.218271248411824580, +-0.218222453731997670, -0.218173658506614600, -0.218124862735797400, -0.218076066419667620, -0.218027269558348110, -0.217978472151960400, -0.217929674200626530, -0.217880875704468040, +-0.217832076663607790, -0.217783277078167360, -0.217734476948268720, -0.217685676274033460, -0.217636875055584430, -0.217588073293043220, -0.217539270986531420, -0.217490468136171840, +-0.217441664742086120, -0.217392860804396210, -0.217344056323223730, -0.217295251298691540, -0.217246445730921220, -0.217197639620034800, -0.217148832966153840, -0.217100025769401210, +-0.217051218029898550, -0.217002409747767830, -0.216953600923130650, -0.216904791556109890, -0.216855981646827150, -0.216807171195404490, -0.216758360201963430, -0.216709548666626920, +-0.216660736589516540, -0.216611923970753910, -0.216563110810461870, -0.216514297108762050, -0.216465482865776490, -0.216416668081626800, -0.216367852756435890, -0.216319036890325310, +-0.216270220483417150, -0.216221403535833020, -0.216172586047695820, -0.216123768019127140, -0.216074949450249050, -0.216026130341183150, -0.215977310692052340, -0.215928490502978270, +-0.215879669774082960, -0.215830848505488060, -0.215782026697316470, -0.215733204349689790, -0.215684381462729700, -0.215635558036559070, -0.215586734071299550, -0.215537909567073190, +-0.215489084524001620, -0.215440258942207780, -0.215391432821813310, -0.215342606162940240, -0.215293778965710200, -0.215244951230246170, -0.215196122956669760, -0.215147294145103060, +-0.215098464795667660, -0.215049634908486550, -0.215000804483681330, -0.214951973521374130, -0.214903142021686560, -0.214854309984741560, -0.214805477410660780, -0.214756644299565870, +-0.214707810651579790, -0.214658976466824190, -0.214610141745421120, -0.214561306487492300, -0.214512470693160620, -0.214463634362547780, -0.214414797495775860, -0.214365960092966490, +-0.214317122154242670, -0.214268283679726030, -0.214219444669538680, -0.214170605123802320, -0.214121765042639860, -0.214072924426172980, -0.214024083274523800, -0.213975241587813950, +-0.213926399366166450, -0.213877556609702950, -0.213828713318545580, -0.213779869492815970, -0.213731025132637110, -0.213682180238130710, -0.213633334809418430, -0.213584488846623230, +-0.213535642349866800, -0.213486795319271280, -0.213437947754958330, -0.213389099657050970, -0.213340251025670840, -0.213291401860940060, -0.213242552162980380, -0.213193701931914730, +-0.213144851167864830, -0.213095999870952820, -0.213047148041300340, -0.212998295679030450, -0.212949442784264810, -0.212900589357125580, -0.212851735397734440, -0.212802880906214380, +-0.212754025882687130, -0.212705170327274370, -0.212656314240099120, -0.212607457621283110, -0.212558600470948430, -0.212509742789216830, -0.212460884576211290, -0.212412025832053540, +-0.212363166556865740, -0.212314306750769570, -0.212265446413888090, -0.212216585546342980, -0.212167724148256410, -0.212118862219750100, -0.212069999760947060, -0.212021136771969020, +-0.211972273252938160, -0.211923409203976150, -0.211874544625206080, -0.211825679516749630, -0.211776813878728540, -0.211727947711265880, -0.211679081014483320, -0.211630213788503080, +-0.211581346033446860, -0.211532477749437700, -0.211483608936597370, -0.211434739595047990, -0.211385869724911360, -0.211336999326310480, -0.211288128399367090, -0.211239256944203370, +-0.211190384960941090, -0.211141512449703280, -0.211092639410611680, -0.211043765843788510, -0.210994891749355460, -0.210946017127435630, -0.210897141978150740, -0.210848266301623010, +-0.210799390097974190, -0.210750513367327310, -0.210701636109804140, -0.210652758325526460, -0.210603880014617330, -0.210555001177198470, -0.210506121813392150, -0.210457241923320050, +-0.210408361507105290, -0.210359480564869640, -0.210310599096735270, -0.210261717102823990, -0.210212834583258850, -0.210163951538161610, -0.210115067967654500, -0.210066183871859270, +-0.210017299250899010, -0.209968414104895530, -0.209919528433971020, -0.209870642238247220, -0.209821755517847260, -0.209772868272892930, -0.209723980503505990, -0.209675092209809510, +-0.209626203391925340, -0.209577314049975620, -0.209528424184082210, -0.209479533794368150, -0.209430642880955280, -0.209381751443965790, -0.209332859483521480, -0.209283966999745470, +-0.209235073992759530, -0.209186180462685920, -0.209137286409646410, -0.209088391833764130, -0.209039496735160840, -0.208990601113958840, -0.208941704970279890, -0.208892808304247140, +-0.208843911115982330, -0.208795013405607330, -0.208746115173245230, -0.208697216419017840, -0.208648317143047410, -0.208599417345455730, -0.208550517026365980, -0.208501616185899910, +-0.208452714824179820, -0.208403812941327480, -0.208354910537466080, -0.208306007612717360, -0.208257104167203670, -0.208208200201046740, -0.208159295714369780, -0.208110390707294560, +-0.208061485179943360, -0.208012579132438010, -0.207963672564901670, -0.207914765477456130, -0.207865857870223240, -0.207816949743326150, -0.207768041096886680, -0.207719131931027120, +-0.207670222245869280, -0.207621312041536330, -0.207572401318150110, -0.207523490075832870, -0.207474578314706480, -0.207425666034894070, -0.207376753236517470, -0.207327839919699030, +-0.207278926084560530, -0.207230011731225160, -0.207181096859814760, -0.207132181470451620, -0.207083265563257600, -0.207034349138355830, -0.206985432195868210, -0.206936514735916980, +-0.206887596758624060, -0.206838678264112560, -0.206789759252504370, -0.206740839723921350, -0.206691919678486660, -0.206642999116322200, -0.206594078037550200, -0.206545156442292600, +-0.206496234330672520, -0.206447311702811890, -0.206398388558832940, -0.206349464898857610, -0.206300540723009050, -0.206251616031409120, -0.206202690824180160, -0.206153765101444040, +-0.206104838863323950, -0.206055912109941760, -0.206006984841419770, -0.205958057057879920, -0.205909128759445340, -0.205860199946237940, -0.205811270618379590, -0.205762340775993540, +-0.205713410419201600, -0.205664479548126140, -0.205615548162889040, -0.205566616263613530, -0.205517683850421460, -0.205468750923435190, -0.205419817482776600, -0.205370883528568910, +-0.205321949060934010, -0.205273014079994240, -0.205224078585871490, -0.205175142578688990, -0.205126206058568630, -0.205077269025632750, -0.205028331480003270, -0.204979393421803380, +-0.204930454851155020, -0.204881515768180090, -0.204832576173001800, -0.204783636065742070, -0.204734695446523260, -0.204685754315467260, -0.204636812672697320, -0.204587870518335320, +-0.204538927852503690, -0.204489984675324280, -0.204441040986920340, -0.204392096787413820, -0.204343152076927050, -0.204294206855581940, -0.204245261123501780, -0.204196314880808440, +-0.204147368127624320, -0.204098420864071370, -0.204049473090272770, -0.204000524806350500, -0.203951576012426920, -0.203902626708623970, -0.203853676895064890, -0.203804726571871600, +-0.203755775739166090, -0.203706824397071550, -0.203657872545709940, -0.203608920185203680, -0.203559967315674660, -0.203511013937246160, -0.203462060050040140, -0.203413105654178940, +-0.203364150749784590, -0.203315195336980250, -0.203266239415887950, -0.203217282986630030, -0.203168326049328500, -0.203119368604106560, -0.203070410651086220, -0.203021452190389830, +-0.202972493222139390, -0.202923533746458130, -0.202874573763468070, -0.202825613273291130, -0.202776652276050570, -0.202727690771868420, -0.202678728760867010, -0.202629766243168360, +-0.202580803218895710, -0.202531839688171070, -0.202482875651116830, -0.202433911107854970, -0.202384946058508740, -0.202335980503200170, -0.202287014442051630, -0.202238047875185150, +-0.202189080802723960, -0.202140113224790090, -0.202091145141505920, -0.202042176552993450, -0.201993207459375960, -0.201944237860775480, -0.201895267757313950, -0.201846297149114700, +-0.201797326036299710, -0.201748354418991390, -0.201699382297311770, -0.201650409671384120, -0.201601436541330450, -0.201552462907273160, -0.201503488769334300, -0.201454514127637150, +-0.201405538982303730, -0.201356563333456450, -0.201307587181217330, -0.201258610525709670, -0.201209633367055500, -0.201160655705377220, -0.201111677540796870, -0.201062698873437780, +-0.201013719703421940, -0.200964740030871360, -0.200915759855909370, -0.200866779178657970, -0.200817797999239630, -0.200768816317776350, -0.200719834134391480, -0.200670851449207020, +-0.200621868262345400, -0.200572884573928720, -0.200523900384080240, -0.200474915692922030, -0.200425930500576500, -0.200376944807165720, -0.200327958612813020, -0.200278971917640440, +-0.200229984721770390, -0.200180997025324990, -0.200132008828427490, -0.200083020131200000, -0.200034030933764930, -0.199985041236244360, -0.199936051038761640, -0.199887060341438770, +-0.199838069144397830, -0.199789077447762140, -0.199740085251653770, -0.199691092556195160, -0.199642099361508420, -0.199593105667716850, -0.199544111474942500, -0.199495116783307890, +-0.199446121592935070, -0.199397125903947340, -0.199348129716466820, -0.199299133030615970, -0.199250135846516850, -0.199201138164292830, -0.199152139984065970, -0.199103141305958740, +-0.199054142130093260, -0.199005142456592820, -0.198956142285579530, -0.198907141617175460, -0.198858140451503990, -0.198809138788687140, -0.198760136628847450, -0.198711133972106990, +-0.198662130818589130, -0.198613127168415950, -0.198564123021709920, -0.198515118378593170, -0.198466113239189060, -0.198417107603619660, -0.198368101472007510, -0.198319094844474660, +-0.198270087721144490, -0.198221080102139120, -0.198172071987581050, -0.198123063377592360, -0.198074054272296430, -0.198025044671815390, -0.197976034576271300, -0.197927023985787570, +-0.197878012900486260, -0.197829001320489920, -0.197779989245920630, -0.197730976676901820, -0.197681963613555580, -0.197632950056004400, -0.197583936004370440, -0.197534921458777050, +-0.197485906419346380, -0.197436890886200920, -0.197387874859462800, -0.197338858339255440, -0.197289841325700930, -0.197240823818921830, -0.197191805819040220, -0.197142787326179540, +-0.197093768340461880, -0.197044748862009820, -0.196995728890945440, -0.196946708427392150, -0.196897687471472130, -0.196848666023307420, -0.196799644083021500, -0.196750621650736480, +-0.196701598726574890, -0.196652575310658860, -0.196603551403111840, -0.196554527004055930, -0.196505502113613730, -0.196456476731907300, -0.196407450859060140, -0.196358424495194360, +-0.196309397640432510, -0.196260370294896710, -0.196211342458710440, -0.196162314131995810, -0.196113285314875400, -0.196064256007471350, -0.196015226209907080, -0.195966195922304740, +-0.195917165144786490, -0.195868133877475760, -0.195819102120494660, -0.195770069873965860, -0.195721037138011420, -0.195672003912754830, -0.195622970198318230, -0.195573935994824200, +-0.195524901302394890, -0.195475866121153780, -0.195426830451222970, -0.195377794292725120, -0.195328757645782340, -0.195279720510518090, -0.195230682887054560, -0.195181644775514310, +-0.195132606176019520, -0.195083567088693620, -0.195034527513658850, -0.194985487451037300, -0.194936446900952460, -0.194887405863526510, -0.194838364338882050, -0.194789322327141250, +-0.194740279828427560, -0.194691236842863190, -0.194642193370570700, -0.194593149411672330, -0.194544104966291490, -0.194495060034550390, -0.194446014616571660, -0.194396968712477440, +-0.194347922322391260, -0.194298875446435260, -0.194249828084732040, -0.194200780237403860, -0.194151731904574130, -0.194102683086365110, -0.194053633782898920, -0.194004583994299070, +-0.193955533720687770, -0.193906482962187650, -0.193857431718920890, -0.193808379991010970, -0.193759327778580100, -0.193710275081750930, -0.193661221900645610, -0.193612168235387680, +-0.193563114086099330, -0.193514059452903200, -0.193465004335921480, -0.193415948735277700, -0.193366892651094020, -0.193317836083493150, -0.193268779032597200, -0.193219721498529780, +-0.193170663481413040, -0.193121604981369650, -0.193072545998521810, -0.193023486532993030, -0.192974426584905550, -0.192925366154381550, -0.192876305241544590, -0.192827243846516870, +-0.192778181969421010, -0.192729119610379280, -0.192680056769515190, -0.192630993446950950, -0.192581929642809240, -0.192532865357212260, -0.192483800590283530, -0.192434735342145340, +-0.192385669612920280, -0.192336603402730620, -0.192287536711699900, -0.192238469539950330, -0.192189401887604580, -0.192140333754784900, -0.192091265141614790, -0.192042196048216540, +-0.191993126474712370, -0.191944056421225830, -0.191894985887879120, -0.191845914874794960, -0.191796843382095600, -0.191747771409904540, -0.191698698958344040, -0.191649626027536820, +-0.191600552617605090, -0.191551478728672400, -0.191502404360861020, -0.191453329514293640, -0.191404254189092520, -0.191355178385381160, -0.191306102103281860, -0.191257025342917330, +-0.191207948104409780, -0.191158870387882820, -0.191109792193458670, -0.191060713521259580, -0.191011634371409170, -0.190962554744029650, -0.190913474639243770, -0.190864394057173760, +-0.190815312997943190, -0.190766231461674350, -0.190717149448489910, -0.190668066958512180, -0.190618983991864720, -0.190569900548669820, -0.190520816629050130, -0.190471732233127970, +-0.190422647361026930, -0.190373562012869260, -0.190324476188777710, -0.190275389888874490, -0.190226303113283260, -0.190177215862126270, -0.190128128135526240, -0.190079039933605450, +-0.190029951256487500, -0.189980862104294660, -0.189931772477149240, -0.189882682375174830, -0.189833591798493710, -0.189784500747228610, -0.189735409221501810, -0.189686317221436950, +-0.189637224747156270, -0.189588131798782530, -0.189539038376438040, -0.189489944480246390, -0.189440850110329880, -0.189391755266811230, -0.189342659949812750, -0.189293564159458080, +-0.189244467895869490, -0.189195371159169730, -0.189146273949481110, -0.189097176266927240, -0.189048078111630410, -0.188998979483712970, -0.188949880383298520, -0.188900780810509340, +-0.188851680765468240, -0.188802580248297490, -0.188753479259120730, -0.188704377798060260, -0.188655275865238860, -0.188606173460778820, -0.188557070584803810, -0.188507967237436100, +-0.188458863418798470, -0.188409759129013250, -0.188360654368204070, -0.188311549136493260, -0.188262443434003580, -0.188213337260857340, -0.188164230617178210, -0.188115123503088480, +-0.188066015918710530, -0.188016907864167970, -0.187967799339583130, -0.187918690345078800, -0.187869580880777320, -0.187820470946802290, -0.187771360543276120, -0.187722249670321530, +-0.187673138328060870, -0.187624026516617830, -0.187574914236114690, -0.187525801486674280, -0.187476688268418930, -0.187427574581472300, -0.187378460425956740, -0.187329345801995010, +-0.187280230709709480, -0.187231115149223830, -0.187181999120660390, -0.187132882624141930, -0.187083765659790850, -0.187034648227730780, -0.186985530328084070, -0.186936411960973130, +-0.186887293126521580, -0.186838173824851820, -0.186789054056086590, -0.186739933820348310, -0.186690813117760650, -0.186641691948445930, -0.186592570312526990, -0.186543448210126170, +-0.186494325641367200, -0.186445202606372370, -0.186396079105264570, -0.186346955138166130, -0.186297830705200730, -0.186248705806490750, -0.186199580442159040, -0.186150454612327900, +-0.186101328317121090, -0.186052201556660940, -0.186003074331069860, -0.185953946640471520, -0.185904818484988330, -0.185855689864743070, -0.185806560779858160, -0.185757431230457290, +-0.185708301216662850, -0.185659170738597640, -0.185610039796384070, -0.185560908390145830, -0.185511776520005330, -0.185462644186085410, -0.185413511388508400, -0.185364378127398090, +-0.185315244402876810, -0.185266110215067420, -0.185216975564092310, -0.185167840450075200, -0.185118704873138500, -0.185069568833404610, -0.185020432330997210, -0.184971295366038760, +-0.184922157938652050, -0.184873020048959500, -0.184823881697084860, -0.184774742883150520, -0.184725603607279300, -0.184676463869593630, -0.184627323670217250, -0.184578183009272560, +-0.184529041886882430, -0.184479900303169240, -0.184430758258256750, -0.184381615752267330, -0.184332472785323910, -0.184283329357548850, -0.184234185469065920, -0.184185041119997510, +-0.184135896310466060, -0.184086751040595300, -0.184037605310507700, -0.183988459120326050, -0.183939312470172810, -0.183890165360171750, -0.183841017790445260, -0.183791869761116250, +-0.183742721272307120, -0.183693572324141600, -0.183644422916742180, -0.183595273050231680, -0.183546122724732560, -0.183496971940368600, -0.183447820697262180, -0.183398668995536220, +-0.183349516835313140, -0.183300364216716720, -0.183251211139869390, -0.183202057604894030, -0.183152903611913080, -0.183103749161050320, -0.183054594252428180, -0.183005438886169100, +-0.182956283062396890, -0.182907126781233940, -0.182857970042803210, -0.182808812847227110, -0.182759655194629390, -0.182710497085132570, -0.182661338518859460, -0.182612179495932610, +-0.182563020016475730, -0.182513860080611300, -0.182464699688462210, -0.182415538840150940, -0.182366377535801260, -0.182317215775535640, -0.182268053559477010, -0.182218890887747760, +-0.182169727760471740, -0.182120564177771390, -0.182071400139769220, -0.182022235646588980, -0.181973070698353140, -0.181923905295184620, -0.181874739437205890, -0.181825573124540780, +-0.181776406357311710, -0.181727239135641650, -0.181678071459653030, -0.181628903329469680, -0.181579734745214080, -0.181530565707009120, -0.181481396214977330, -0.181432226269242460, +-0.181383055869927060, -0.181333885017154000, -0.181284713711045790, -0.181235541951726250, -0.181186369739317840, -0.181137197073943070, -0.181088023955725740, -0.181038850384788370, +-0.180989676361253850, -0.180940501885244710, -0.180891326956884760, -0.180842151576296490, -0.180792975743602840, -0.180743799458926300, -0.180694622722390700, -0.180645445534118570, +-0.180596267894232800, -0.180547089802855940, -0.180497911260111780, -0.180448732266122850, -0.180399552821012080, -0.180350372924902000, -0.180301192577916440, -0.180252011780177880, +-0.180202830531809270, -0.180153648832933190, -0.180104466683673390, -0.180055284084152440, -0.180006101034492850, -0.179956917534818430, -0.179907733585251720, -0.179858549185915680, +-0.179809364336932810, -0.179760179038427000, -0.179710993290520730, -0.179661807093336980, -0.179612620446998270, -0.179563433351628440, -0.179514245807350040, -0.179465057814286010, +-0.179415869372558910, -0.179366680482292570, -0.179317491143609510, -0.179268301356632740, -0.179219111121484780, -0.179169920438289470, -0.179120729307169380, -0.179071537728247020, +-0.179022345701646240, -0.178973153227489610, -0.178923960305900100, -0.178874766937000250, -0.178825573120913910, -0.178776378857763650, -0.178727184147672440, -0.178677988990762810, +-0.178628793387158670, -0.178579597336982530, -0.178530400840357430, -0.178481203897405850, -0.178432006508251720, -0.178382808673017560, -0.178333610391826380, -0.178284411664800750, +-0.178235212492064530, -0.178186012873740280, -0.178136812809950560, -0.178087612300819210, -0.178038411346468860, -0.177989209947022500, -0.177940008102602630, -0.177890805813333220, +-0.177841603079336770, -0.177792399900736340, -0.177743196277654450, -0.177693992210215010, -0.177644787698540580, -0.177595582742754190, -0.177546377342978400, -0.177497171499337110, +-0.177447965211952910, -0.177398758480948770, -0.177349551306447310, -0.177300343688572390, -0.177251135627446630, -0.177201927123192600, -0.177152718175934170, -0.177103508785793950, +-0.177054298952894980, -0.177005088677359810, -0.176955877959312340, -0.176906666798875210, -0.176857455196171380, -0.176808243151323490, -0.176759030664455420, -0.176709817735689780, +-0.176660604365149600, -0.176611390552957460, -0.176562176299237290, -0.176512961604111670, -0.176463746467703660, -0.176414530890135840, -0.176365314871532120, -0.176316098412015120, +-0.176266881511707880, -0.176217664170733010, -0.176168446389214390, -0.176119228167274680, -0.176070009505036460, -0.176020790402623640, -0.175971570860158830, -0.175922350877765120, +-0.175873130455565070, -0.175823909593682660, -0.175774688292240470, -0.175725466551361540, -0.175676244371168520, -0.175627021751785320, -0.175577798693334590, -0.175528575195939340, +-0.175479351259722220, -0.175430126884807160, -0.175380902071316790, -0.175331676819374140, -0.175282451129101870, -0.175233225000623940, -0.175183998434062900, -0.175134771429541450, +-0.175085543987183540, -0.175036316107111730, -0.174987087789449130, -0.174937859034318380, -0.174888629841843450, -0.174839400212146890, -0.174790170145351860, -0.174740939641580970, +-0.174691708700958180, -0.174642477323606080, -0.174593245509647830, -0.174544013259205990, -0.174494780572404580, -0.174445547449366220, -0.174396313890213980, -0.174347079895070510, +-0.174297845464059800, -0.174248610597304450, -0.174199375294927160, -0.174150139557051860, -0.174100903383801210, -0.174051666775298290, -0.174002429731665800, -0.173953192253027630, +-0.173903954339506510, -0.173854715991225480, -0.173805477208307250, -0.173756237990875750, -0.173706998339053680, -0.173657758252964090, -0.173608517732729640, -0.173559276778474380, +-0.173510035390320920, -0.173460793568392360, -0.173411551312811360, -0.173362308623701940, -0.173313065501186750, -0.173263821945388890, -0.173214577956431050, -0.173165333534437190, +-0.173116088679530020, -0.173066843391832180, -0.173017597671467650, -0.172968351518559130, -0.172919104933229730, -0.172869857915602170, -0.172820610465800360, -0.172771362583947040, +-0.172722114270165290, -0.172672865524577830, -0.172623616347308660, -0.172574366738480450, -0.172525116698216300, -0.172475866226638940, -0.172426615323872350, -0.172377363990039220, +-0.172328112225262680, -0.172278860029665410, -0.172229607403371430, -0.172180354346503440, -0.172131100859184120, -0.172081846941537500, -0.172032592593686250, -0.171983337815753530, +-0.171934082607862030, -0.171884826970135740, -0.171835570902697380, -0.171786314405670100, -0.171737057479176610, -0.171687800123340920, -0.171638542338285710, -0.171589284124134160, +-0.171540025481008940, -0.171490766409034100, -0.171441506908332380, -0.171392246979026860, -0.171342986621240280, -0.171293725835096670, -0.171244464620718770, -0.171195202978229240, +-0.171145940907752180, -0.171096678409410230, -0.171047415483326610, -0.170998152129623990, -0.170948888348426450, -0.170899624139856680, -0.170850359504037850, -0.170801094441092680, +-0.170751828951145210, -0.170702563034318160, -0.170653296690734730, -0.170604029920517600, -0.170554762723790830, -0.170505495100677170, -0.170456227051299760, -0.170406958575781340, +-0.170357689674245970, -0.170308420346816400, -0.170259150593615290, -0.170209880414766780, -0.170160609810393550, -0.170111338780618820, -0.170062067325565280, -0.170012795445357020, +-0.169963523140116760, -0.169914250409967720, -0.169864977255032580, -0.169815703675435470, -0.169766429671299070, -0.169717155242746610, -0.169667880389900830, -0.169618605112885790, +-0.169569329411824200, -0.169520053286839330, -0.169470776738053890, -0.169421499765591930, -0.169372222369576190, -0.169322944550129940, -0.169273666307375860, -0.169224387641438070, +-0.169175108552439310, -0.169125829040502360, -0.169076549105751230, -0.169027268748308760, -0.168977987968298100, -0.168928706765842070, -0.168879425141064660, -0.168830143094088720, +-0.168780860625037420, -0.168731577734033520, -0.168682294421201110, -0.168633010686662980, -0.168583726530542320, -0.168534441952961880, -0.168485156954045810, -0.168435871533916840, +-0.168386585692698180, -0.168337299430512620, -0.168288012747484260, -0.168238725643735850, -0.168189438119390190, -0.168140150174571370, -0.168090861809402190, -0.168041573024005850, +-0.167992283818505140, -0.167942994193024160, -0.167893704147685700, -0.167844413682612960, -0.167795122797928770, -0.167745831493757190, -0.167696539770221030, -0.167647247627443540, +-0.167597955065547500, -0.167548662084656990, -0.167499368684894820, -0.167450074866384250, -0.167400780629248040, -0.167351485973610330, -0.167302190899593890, -0.167252895407321550, +-0.167203599496917400, -0.167154303168504240, -0.167105006422205330, -0.167055709258143480, -0.167006411676442780, -0.166957113677226070, -0.166907815260616540, -0.166858516426737070, +-0.166809217175711730, -0.166759917507663340, -0.166710617422715170, -0.166661316920990010, -0.166612016002612020, -0.166562714667703950, -0.166513412916389130, -0.166464110748790310, +-0.166414808165031680, -0.166365505165236020, -0.166316201749526580, -0.166266897918026210, -0.166217593670859030, -0.166168289008147870, -0.166118983930015560, -0.166069678436586210, +-0.166020372527982660, -0.165971066204328190, -0.165921759465745610, -0.165872452312359090, -0.165823144744291410, -0.165773836761665900, -0.165724528364605330, -0.165675219553233890, +-0.165625910327674400, -0.165576600688050140, -0.165527290634483930, -0.165477980167099940, -0.165428669286021010, -0.165379357991370380, -0.165330046283270940, -0.165280734161846830, +-0.165231421627220850, -0.165182108679515910, -0.165132795318856110, -0.165083481545364340, -0.165034167359163850, -0.164984852760377530, -0.164935537749129500, -0.164886222325542620, +-0.164836906489740200, -0.164787590241845060, -0.164738273581981400, -0.164688956510272020, -0.164639639026840280, -0.164590321131808990, -0.164541002825302350, -0.164491684107443190, +-0.164442364978354850, -0.164393045438160130, -0.164343725486983230, -0.164294405124947030, -0.164245084352174390, -0.164195763168789450, -0.164146441574915120, -0.164097119570674690, +-0.164047797156191000, -0.163998474331588260, -0.163949151096989350, -0.163899827452517580, -0.163850503398295770, -0.163801178934448150, -0.163751854061097570, -0.163702528778367380, +-0.163653203086380400, -0.163603876985260880, -0.163554550475131650, -0.163505223556116050, -0.163455896228336950, -0.163406568491918560, -0.163357240346983730, -0.163307911793655390, +-0.163258582832057690, -0.163209253462313520, -0.163159923684546240, -0.163110593498878690, -0.163061262905435100, -0.163011931904338350, -0.162962600495711790, -0.162913268679678290, +-0.162863936456362050, -0.162814603825885950, -0.162765270788373360, -0.162715937343947150, -0.162666603492731540, -0.162617269234849400, -0.162567934570424120, -0.162518599499578530, +-0.162469264022436920, -0.162419928139122120, -0.162370591849757500, -0.162321255154465970, -0.162271918053371740, -0.162222580546597720, -0.162173242634266800, -0.162123904316503230, +-0.162074565593429890, -0.162025226465170120, -0.161975886931846860, -0.161926546993584330, -0.161877206650505420, -0.161827865902733490, -0.161778524750391480, -0.161729183193603580, +-0.161679841232492710, -0.161630498867182250, -0.161581156097795110, -0.161531812924455510, -0.161482469347286380, -0.161433125366411080, -0.161383780981952520, -0.161334436194034950, +-0.161285091002781290, -0.161235745408314450, -0.161186399410758710, -0.161137053010236950, -0.161087706206872570, -0.161038359000788500, -0.160989011392108940, -0.160939663380956890, +-0.160890314967455650, -0.160840966151728190, -0.160791616933898760, -0.160742267314090280, -0.160692917292426130, -0.160643566869029250, -0.160594216044023910, -0.160544864817533020, +-0.160495513189679940, -0.160446161160587690, -0.160396808730380420, -0.160347455899181170, -0.160298102667112840, -0.160248749034299670, -0.160199395000864640, -0.160150040566931110, +-0.160100685732622070, -0.160051330498061720, -0.160001974863373060, -0.159952618828679450, -0.159903262394103880, -0.159853905559770580, -0.159804548325802510, -0.159755190692323080, +-0.159705832659455200, -0.159656474227323240, -0.159607115396050050, -0.159557756165759070, -0.159508396536573280, -0.159459036508616920, -0.159409676082012980, -0.159360315256884850, +-0.159310954033355490, -0.159261592411549190, -0.159212230391588910, -0.159162867973597600, -0.159113505157699560, -0.159064141944017770, -0.159014778332675630, -0.158965414323796100, +-0.158916049917503470, -0.158866685113920710, -0.158817319913171250, -0.158767954315378050, -0.158718588320665380, -0.158669221929156250, -0.158619855140974100, -0.158570487956241820, +-0.158521120375083780, -0.158471752397622960, -0.158422384023982730, -0.158373015254286130, -0.158323646088657400, -0.158274276527219570, -0.158224906570095610, -0.158175536217409820, +-0.158126165469285210, -0.158076794325845150, -0.158027422787212680, -0.157978050853512100, -0.157928678524866390, -0.157879305801398970, -0.157829932683232870, -0.157780559170492360, +-0.157731185263300460, -0.157681810961780610, -0.157632436266055780, -0.157583061176250290, -0.157533685692487160, -0.157484309814889780, -0.157434933543581230, -0.157385556878685770, +-0.157336179820326410, -0.157286802368626190, -0.157237424523709370, -0.157188046285699020, -0.157138667654718540, -0.157089288630890940, -0.157039909214340580, -0.156990529405190430, +-0.156941149203563950, -0.156891768609584180, -0.156842387623375410, -0.156793006245060680, -0.156743624474763420, -0.156694242312606670, -0.156644859758714760, -0.156595476813210700, +-0.156546093476217920, -0.156496709747859510, -0.156447325628259750, -0.156397941117541660, -0.156348556215828300, -0.156299170923243970, -0.156249785239911730, -0.156200399165955020, +-0.156151012701496870, -0.156101625846661620, -0.156052238601572300, -0.156002850966352410, -0.155953462941124940, -0.155904074526014260, -0.155854685721143390, -0.155805296526635800, +-0.155755906942614510, -0.155706516969203930, -0.155657126606527030, -0.155607735854707330, -0.155558344713867840, -0.155508953184132940, -0.155459561265625660, -0.155410168958469460, +-0.155360776262787410, -0.155311383178703850, -0.155261989706341840, -0.155212595845824420, -0.155163201597275950, -0.155113806960819470, -0.155064411936578470, -0.155015016524676000, +-0.154965620725236420, -0.154916224538382800, -0.154866827964238620, -0.154817431002926940, -0.154768033654572120, -0.154718635919297190, -0.154669237797225690, -0.154619839288480660, +-0.154570440393186460, -0.154521041111466170, -0.154471641443443270, -0.154422241389240820, -0.154372840948983210, -0.154323440122793500, -0.154274038910794780, -0.154224637313111370, +-0.154175235329866350, -0.154125832961183260, -0.154076430207185170, -0.154027027067996420, -0.153977623543740120, -0.153928219634539730, -0.153878815340518370, -0.153829410661800420, +-0.153780005598508930, -0.153730600150767420, -0.153681194318699000, -0.153631788102428000, -0.153582381502077560, -0.153532974517771150, -0.153483567149631850, -0.153434159397784100, +-0.153384751262350930, -0.153335342743455450, -0.153285933841222080, -0.153236524555773830, -0.153187114887234300, -0.153137704835726530, -0.153088294401374920, -0.153038883584302590, +-0.152989472384633060, -0.152940060802489420, -0.152890648837996050, -0.152841236491276070, -0.152791823762452980, -0.152742410651649900, -0.152692997158991230, -0.152643583284600070, +-0.152594169028599960, -0.152544754391113980, -0.152495339372266530, -0.152445923972180760, -0.152396508190980190, -0.152347092028787880, -0.152297675485728280, -0.152248258561924530, +-0.152198841257499660, -0.152149423572578130, -0.152100005507283060, -0.152050587061737960, -0.152001168236065960, -0.151951749030391460, -0.151902329444837610, -0.151852909479527930, +-0.151803489134585550, -0.151754068410134860, -0.151704647306299010, -0.151655225823201570, -0.151605803960965600, -0.151556381719715550, -0.151506959099574540, -0.151457536100666150, +-0.151408112723113500, -0.151358688967040970, -0.151309264832571730, -0.151259840319828890, -0.151210415428936900, -0.151160990160018850, -0.151111564513198350, -0.151062138488598480, +-0.151012712086343730, -0.150963285306557170, -0.150913858149362400, -0.150864430614882560, -0.150815002703242080, -0.150765574414564090, -0.150716145748972160, -0.150666716706589430, +-0.150617287287540340, -0.150567857491948040, -0.150518427319936090, -0.150468996771627640, -0.150419565847147140, -0.150370134546617710, -0.150320702870162530, -0.150271270817906010, +-0.150221838389971300, -0.150172405586482010, -0.150122972407561280, -0.150073538853333550, -0.150024104923921990, -0.149974670619450130, -0.149925235940041170, -0.149875800885819560, +-0.149826365456908470, -0.149776929653431450, -0.149727493475511650, -0.149678056923273570, -0.149628619996840350, -0.149579182696335580, -0.149529745021882400, -0.149480306973605310, +-0.149430868551627460, -0.149381429756071990, -0.149331990587063400, -0.149282551044724790, -0.149233111129179840, -0.149183670840551670, -0.149134230178964770, -0.149084789144542260, +-0.149035347737407810, -0.148985905957684540, -0.148936463805496940, -0.148887021280968200, -0.148837578384221870, -0.148788135115381190, -0.148738691474570610, -0.148689247461913280, +-0.148639803077532830, -0.148590358321552460, -0.148540913194096620, -0.148491467695288480, -0.148442021825251680, -0.148392575584109400, -0.148343128971986120, -0.148293681989005000, +-0.148244234635289240, -0.148194786910963360, -0.148145338816150500, -0.148095890350974260, -0.148046441515557880, -0.147996992310025830, -0.147947542734501310, -0.147898092789107930, +-0.147848642473968890, -0.147799191789208670, -0.147749740734950450, -0.147700289311317900, -0.147650837518434190, -0.147601385356423840, -0.147551932825409990, -0.147502479925516320, +-0.147453026656866020, -0.147403573019583590, -0.147354119013792250, -0.147304664639615140, -0.147255209897176800, -0.147205754786600470, -0.147156299308009750, -0.147106843461527830, +-0.147057387247279240, -0.147007930665387170, -0.146958473715975290, -0.146909016399166790, -0.146859558715086160, -0.146810100663856660, -0.146760642245601900, -0.146711183460445090, +-0.146661724308510770, -0.146612264789922150, -0.146562804904802860, -0.146513344653276120, -0.146463884035466420, -0.146414423051497070, -0.146364961701491190, -0.146315499985573330, +-0.146266037903866750, -0.146216575456495080, -0.146167112643581510, -0.146117649465250600, -0.146068185921625570, -0.146018722012830090, -0.145969257738987330, -0.145919793100221910, +-0.145870328096656980, -0.145820862728416240, -0.145771396995622890, -0.145721930898401490, -0.145672464436875290, -0.145622997611167900, -0.145573530421402590, -0.145524062867703860, +-0.145474594950195020, -0.145425126668999680, -0.145375658024241070, -0.145326189016043740, -0.145276719644530980, -0.145227249909825970, -0.145177779812053260, -0.145128309351336110, +-0.145078838527798180, -0.145029367341562710, -0.144979895792754280, -0.144930423881496070, -0.144880951607911840, -0.144831478972124780, -0.144782005974259470, -0.144732532614439140, +-0.144683058892787490, -0.144633584809427730, -0.144584110364484460, -0.144534635558080910, -0.144485160390340760, -0.144435684861387280, -0.144386208971345050, -0.144336732720337260, +-0.144287256108487220, -0.144237779135919480, -0.144188301802757300, -0.144138824109124350, -0.144089346055143900, -0.144039867640940510, -0.143990388866637480, -0.143940909732358460, +-0.143891430238226730, -0.143841950384366870, -0.143792470170902130, -0.143742989597956230, -0.143693508665652390, -0.143644027374115250, -0.143594545723468000, -0.143545063713834410, +-0.143495581345337710, -0.143446098618102510, -0.143396615532252080, -0.143347132087909640, -0.143297648285199810, -0.143248164124245870, -0.143198679605171520, -0.143149194728100030, +-0.143099709493156010, -0.143050223900462680, -0.143000737950143810, -0.142951251642322670, -0.142901764977123810, -0.142852277954670560, -0.142802790575086630, -0.142753302838495240, +-0.142703814745021060, -0.142654326294787360, -0.142604837487917800, -0.142555348324535730, -0.142505858804765740, -0.142456368928731090, -0.142406878696555080, -0.142357388108362320, +-0.142307897164276080, -0.142258405864420100, -0.142208914208917650, -0.142159422197893380, -0.142109929831470560, -0.142060437109772900, -0.142010944032923690, -0.141961450601047590, +-0.141911956814267850, -0.141862462672708220, -0.141812968176491970, -0.141763473325743770, -0.141713978120586890, -0.141664482561145060, -0.141614986647541570, -0.141565490379901040, +-0.141515993758346810, -0.141466496783002600, -0.141416999453991690, -0.141367501771438750, -0.141318003735467020, -0.141268505346199860, -0.141219006603761880, -0.141169507508276370, +-0.141120008059867100, -0.141070508258657360, -0.141021008104771810, -0.140971507598333710, -0.140922006739466870, -0.140872505528294560, -0.140823003964941430, -0.140773502049530790, +-0.140723999782186390, -0.140674497163031570, -0.140624994192190910, -0.140575490869787790, -0.140525987195945950, -0.140476483170788670, -0.140426978794440660, -0.140377474067025170, +-0.140327968988665590, -0.140278463559486500, -0.140228957779611250, -0.140179451649163620, -0.140129945168266910, -0.140080438337045780, -0.140030931155623570, -0.139981423624124020, +-0.139931915742670470, -0.139882407511387560, -0.139832898930398660, -0.139783389999827480, -0.139733880719797390, -0.139684371090433050, -0.139634861111857800, -0.139585350784195370, +-0.139535840107569140, -0.139486329082103730, -0.139436817707922520, -0.139387305985148810, -0.139337793913907270, -0.139288281494321260, -0.139238768726514530, -0.139189255610610460, +-0.139139742146733690, -0.139090228335007530, -0.139040714175555830, -0.138991199668501900, -0.138941684813970430, -0.138892169612084730, -0.138842654062968580, -0.138793138166745380, +-0.138743621923539780, -0.138694105333475120, -0.138644588396675210, -0.138595071113263360, -0.138545553483364280, -0.138496035507101320, -0.138446517184598270, -0.138396998515978500, +-0.138347479501366670, -0.138297960140886130, -0.138248440434660250, -0.138198920382813730, -0.138149399985469910, -0.138099879242752550, -0.138050358154785090, -0.138000836721692170, +-0.137951314943597140, -0.137901792820623810, -0.137852270352895600, -0.137802747540537120, -0.137753224383671800, -0.137703700882423400, -0.137654177036915320, -0.137604652847272220, +-0.137555128313617490, -0.137505603436074960, -0.137456078214767960, -0.137406552649821210, -0.137357026741358080, -0.137307500489501970, -0.137257973894377520, -0.137208446956108120, +-0.137158919674817640, -0.137109392050629390, -0.137059864083668100, -0.137010335774057190, -0.136960807121920410, -0.136911278127381160, -0.136861748790564170, -0.136812219111592800, +-0.136762689090590920, -0.136713158727681830, -0.136663628022990310, -0.136614096976639700, -0.136564565588753880, -0.136515033859456180, -0.136465501788871320, -0.136415969377122750, +-0.136366436624333790, -0.136316903530629170, -0.136267370096132300, -0.136217836320967010, -0.136168302205256690, -0.136118767749126040, -0.136069232952698490, -0.136019697816097850, +-0.135970162339447530, -0.135920626522872230, -0.135871090366495360, -0.135821553870440790, -0.135772017034831880, -0.135722479859793380, -0.135672942345448660, -0.135623404491921590, +-0.135573866299335570, -0.135524327767815340, -0.135474788897484270, -0.135425249688465810, -0.135375710140884650, -0.135326170254864210, -0.135276630030528370, -0.135227089468000490, +-0.135177548567405330, -0.135128007328866290, -0.135078465752507260, -0.135028923838451610, -0.134979381586824070, -0.134929838997748100, -0.134880296071347520, -0.134830752807745790, +-0.134781209207067570, -0.134731665269436360, -0.134682120994975980, -0.134632576383809850, -0.134583031436062730, -0.134533486151858030, -0.134483940531319620, -0.134434394574570900, +-0.134384848281736660, -0.134335301652940280, -0.134285754688305200, -0.134236207387956190, -0.134186659752016660, -0.134137111780610470, -0.134087563473861080, -0.134038014831893200, +-0.133988465854830290, -0.133938916542796220, -0.133889366895914410, -0.133839816914309630, -0.133790266598105310, -0.133740715947425310, -0.133691164962393080, -0.133641613643133400, +-0.133592061989769670, -0.133542510002425780, -0.133492957681225180, -0.133443405026292650, -0.133393852037751590, -0.133344298715725450, -0.133294745060339000, -0.133245191071715700, +-0.133195636749979420, -0.133146082095253610, -0.133096527107663040, -0.133046971787331130, -0.132997416134381820, -0.132947860148938500, -0.132898303831126000, -0.132848747181067710, +-0.132799190198887580, -0.132749632884709010, -0.132700075238656820, -0.132650517260854420, -0.132600958951425730, -0.132551400310494230, -0.132501841338184660, -0.132452282034620480, +-0.132402722399925150, -0.132353162434223460, -0.132303602137638840, -0.132254041510295240, -0.132204480552316090, -0.132154919263826190, -0.132105357644948990, -0.132055795695808390, +-0.132006233416527840, -0.131956670807232170, -0.131907107868044830, -0.131857544599089690, -0.131807981000490270, -0.131758417072371350, -0.131708852814856360, -0.131659288228069240, +-0.131609723312133470, -0.131560158067173830, -0.131510592493313820, -0.131461026590677290, -0.131411460359387780, -0.131361893799570060, -0.131312326911347590, -0.131262759694843860, +-0.131213192150183680, -0.131163624277490510, -0.131114056076888280, -0.131064487548500470, -0.131014918692451910, -0.130965349508866010, -0.130915779997866770, -0.130866210159577640, +-0.130816639994123410, -0.130767069501627560, -0.130717498682214080, -0.130667927536006370, -0.130618356063129330, -0.130568784263706360, -0.130519212137861440, -0.130469639685718060, +-0.130420066907401020, -0.130370493803033780, -0.130320920372739900, -0.130271346616644160, -0.130221772534870020, -0.130172198127541490, -0.130122623394782010, -0.130073048336716400, +-0.130023472953468190, -0.129973897245161290, -0.129924321211919190, -0.129874744853866740, -0.129825168171127440, -0.129775591163825200, -0.129726013832083540, -0.129676436176027310, +-0.129626858195779960, -0.129577279891465470, -0.129527701263207370, -0.129478122311130430, -0.129428543035358200, -0.129378963436014150, -0.129329383513223150, -0.129279803267108690, +-0.129230222697794720, -0.129180641805404760, -0.129131060590063600, -0.129081479051894820, -0.129031897191022340, -0.128982315007569680, -0.128932732501661680, -0.128883149673421820, +-0.128833566522974120, -0.128783983050442030, -0.128734399255950450, -0.128684815139622850, -0.128635230701583230, -0.128585645941955070, -0.128536060860863250, -0.128486475458431280, +-0.128436889734783120, -0.128387303690042310, -0.128337717324333660, -0.128288130637780720, -0.128238543630507020, -0.128188956302637410, -0.128139368654295400, -0.128089780685604950, +-0.128040192396689620, -0.127990603787674270, -0.127941014858682390, -0.127891425609837990, -0.127841836041264560, -0.127792246153086990, -0.127742655945428800, -0.127693065418413990, +-0.127643474572166070, -0.127593883406809880, -0.127544291922469020, -0.127494700119267390, -0.127445107997328610, -0.127395515556777470, -0.127345922797737540, -0.127296329720332390, +-0.127246736324686830, -0.127197142610924440, -0.127147548579169180, -0.127097954229544650, -0.127048359562175640, -0.126998764577185730, -0.126949169274698900, -0.126899573654838730, +-0.126849977717730070, -0.126800381463496450, -0.126750784892261880, -0.126701188004149900, -0.126651590799285400, -0.126601993277791920, -0.126552395439793460, -0.126502797285413580, +-0.126453198814777120, -0.126403600028007680, -0.126354000925228800, -0.126304401506565360, -0.126254801772140910, -0.126205201722079470, -0.126155601356504580, -0.126106000675541120, +-0.126056399679312650, -0.126006798367943210, -0.125957196741556310, -0.125907594800276860, -0.125857992544228410, -0.125808389973535000, -0.125758787088320170, -0.125709183888708830, +-0.125659580374824500, -0.125609976546791240, -0.125560372404732580, -0.125510767948773440, -0.125461163179037380, -0.125411558095647970, -0.125361952698730100, -0.125312346988407370, +-0.125262740964803750, -0.125213134628042840, -0.125163527978249560, -0.125113921015547440, -0.125064313740060500, -0.125014706151912350, -0.124965098251227880, -0.124915490038130670, +-0.124865881512744720, -0.124816272675193630, -0.124766663525602310, -0.124717054064094320, -0.124667444290793700, -0.124617834205824020, -0.124568223809310210, -0.124518613101375820, +-0.124469002082144910, -0.124419390751741060, -0.124369779110289170, -0.124320167157912820, -0.124270554894735620, -0.124220942320882470, -0.124171329436476980, -0.124121716241643160, +-0.124072102736504600, -0.124022488921186220, -0.123972874795811640, -0.123923260360504860, -0.123873645615389480, -0.123824030560590420, -0.123774415196231310, -0.123724799522436150, +-0.123675183539328550, -0.123625567247033430, -0.123575950645674390, -0.123526333735375480, -0.123476716516260300, -0.123427098988453750, -0.123377481152079470, -0.123327863007261030, +-0.123278244554123400, -0.123228625792790130, -0.123179006723385320, -0.123129387346032540, -0.123079767660856740, -0.123030147667981510, -0.122980527367530910, -0.122930906759628560, +-0.122881285844399380, -0.122831664621966980, -0.122782043092455430, -0.122732421255988320, -0.122682799112690600, -0.122633176662685890, -0.122583553906098240, -0.122533930843051250, +-0.122484307473669880, -0.122434683798077750, -0.122385059816398470, -0.122335435528756980, -0.122285810935276880, -0.122236186036082270, -0.122186560831296750, -0.122136935321045280, +-0.122087309505451460, -0.122037683384639370, -0.121988056958732630, -0.121938430227856190, -0.121888803192133670, -0.121839175851689140, -0.121789548206646240, -0.121739920257129920, +-0.121690292003263770, -0.121640663445171910, -0.121591034582977940, -0.121541405416806830, -0.121491775946782220, -0.121442146173028150, -0.121392516095668280, -0.121342885714827560, +-0.121293255030629630, -0.121243624043198120, -0.121193992752657990, -0.121144361159132880, -0.121094729262746860, -0.121045097063623580, -0.120995464561888010, -0.120945831757663750, +-0.120896198651074940, -0.120846565242245170, -0.120796931531299450, -0.120747297518361390, -0.120697663203555090, -0.120648028587004190, -0.120598393668833650, -0.120548758449167130, +-0.120499122928128710, -0.120449487105842050, -0.120399850982432120, -0.120350214558022560, -0.120300577832737010, -0.120250940806700470, -0.120201303480036560, -0.120151665852869400, +-0.120102027925322650, -0.120052389697521260, -0.120002751169588890, -0.119953112341649650, -0.119903473213827190, -0.119853833786246480, -0.119804194059031190, -0.119754554032305410, +-0.119704913706192810, -0.119655273080818360, -0.119605632156305740, -0.119555990932779020, -0.119506349410361900, -0.119456707589179340, -0.119407065469355010, -0.119357423051012570, +-0.119307780334277020, -0.119258137319272030, -0.119208494006121680, -0.119158850394949670, -0.119109206485880960, -0.119059562279039230, -0.119009917774548610, -0.118960272972532750, +-0.118910627873116640, -0.118860982476423970, -0.118811336782578840, -0.118761690791704930, -0.118712044503927240, -0.118662397919369430, -0.118612751038155620, -0.118563103860409500, +-0.118513456386256060, -0.118463808615818980, -0.118414160549221940, -0.118364512186589930, -0.118314863528046640, -0.118265214573716210, -0.118215565323722280, -0.118165915778189880, +-0.118116265937242710, -0.118066615801004860, -0.118016965369600030, -0.117967314643153230, -0.117917663621788140, -0.117868012305628910, -0.117818360694799190, -0.117768708789424010, +-0.117719056589627060, -0.117669404095532460, -0.117619751307263920, -0.117570098224946450, -0.117520444848703720, -0.117470791178659880, -0.117421137214938620, -0.117371482957664960, +-0.117321828406962610, -0.117272173562955220, -0.117222518425767850, -0.117172862995524190, -0.117123207272348360, -0.117073551256364080, -0.117023894947696360, -0.116974238346468900, +-0.116924581452805850, -0.116874924266830910, -0.116825266788669090, -0.116775609018444100, -0.116725950956280090, -0.116676292602300770, -0.116626633956631160, -0.116576975019394960, +-0.116527315790716320, -0.116477656270718950, -0.116427996459527880, -0.116378336357266830, -0.116328675964059480, -0.116279015280030900, -0.116229354305304760, -0.116179693040005250, +-0.116130031484256060, -0.116080369638182250, -0.116030707501907500, -0.115981045075555980, -0.115931382359251410, -0.115881719353118820, -0.115832056057281930, -0.115782392471864910, +-0.115732728596991460, -0.115683064432786640, -0.115633399979374150, -0.115583735236878160, -0.115534070205422400, -0.115484404885131900, -0.115434739276130390, -0.115385073378541580, +-0.115335407192490540, -0.115285740718100980, -0.115236073955497060, -0.115186406904802520, -0.115136739566142400, -0.115087071939640430, -0.115037404025420800, -0.114987735823607200, +-0.114938067334324700, -0.114888398557697040, -0.114838729493848380, -0.114789060142902450, -0.114739390504984330, -0.114689720580217720, -0.114640050368726810, -0.114590379870635330, +-0.114540709086068340, -0.114491038015149580, -0.114441366658003220, -0.114391695014753020, -0.114342023085524010, -0.114292350870439940, -0.114242678369624570, -0.114193005583202920, +-0.114143332511298770, -0.114093659154036280, -0.114043985511539210, -0.113994311583932630, -0.113944637371340250, -0.113894962873886270, -0.113845288091694460, -0.113795613024889870, +-0.113745937673596240, -0.113696262037937770, -0.113646586118038200, -0.113596909914022600, -0.113547233426014750, -0.113497556654138800, -0.113447879598518510, -0.113398202259278980, +-0.113348524636543920, -0.113298846730437120, -0.113249168541083650, -0.113199490068607260, -0.113149811313132130, -0.113100132274782050, -0.113050452953682070, -0.113000773349955950, +-0.112951093463727910, -0.112901413295121700, -0.112851732844262380, -0.112802052111273740, -0.112752371096279960, -0.112702689799404810, -0.112653008220773380, -0.112603326360509450, +-0.112553644218737180, -0.112503961795580370, -0.112454279091164090, -0.112404596105612110, -0.112354912839048210, -0.112305229291597460, -0.112255545463383640, -0.112205861354530950, +-0.112156176965163180, -0.112106492295405400, -0.112056807345381380, -0.112007122115215350, -0.111957436605031090, -0.111907750814953660, -0.111858064745106860, -0.111808378395614890, +-0.111758691766601540, -0.111709004858191890, -0.111659317670509750, -0.111609630203679300, -0.111559942457824340, -0.111510254433069960, -0.111460566129539950, -0.111410877547358080, +-0.111361188686649460, -0.111311499547537860, -0.111261810130147520, -0.111212120434602210, -0.111162430461027040, -0.111112740209545800, -0.111063049680282700, -0.111013358873361540, +-0.110963667788907430, -0.110913976427044130, -0.110864284787895910, -0.110814592871586530, -0.110764900678241100, -0.110715208207983430, -0.110665515460937740, -0.110615822437227810, +-0.110566129136978770, -0.110516435560314420, -0.110466741707358970, -0.110417047578236230, -0.110367353173071290, -0.110317658491987990, -0.110267963535110110, -0.110218268302562730, +-0.110168572794469700, -0.110118877010955240, -0.110069180952143140, -0.110019484618158540, -0.109969788009125210, -0.109920091125167430, -0.109870393966408980, -0.109820696532974970, +-0.109770998824989220, -0.109721300842575990, -0.109671602585859050, -0.109621904054963550, -0.109572205250013290, -0.109522506171132520, -0.109472806818445040, -0.109423107192075990, +-0.109373407292149170, -0.109323707118788390, -0.109274006672118770, -0.109224305952264150, -0.109174604959348760, -0.109124903693496420, -0.109075202154832250, -0.109025500343480090, +-0.108975798259564170, -0.108926095903208310, -0.108876393274537660, -0.108826690373676020, -0.108776987200747670, -0.108727283755876400, -0.108677580039187360, -0.108627876050804370, +-0.108578171790851690, -0.108528467259453140, -0.108478762456733870, -0.108429057382817680, -0.108379352037828420, -0.108329646421891200, -0.108279940535129890, -0.108230234377668710, +-0.108180527949631510, -0.108130821251143430, -0.108081114282328310, -0.108031407043310380, -0.107981699534213510, -0.107931991755162830, -0.107882283706282150, -0.107832575387695780, +-0.107782866799527530, -0.107733157941902550, -0.107683448814944680, -0.107633739418778180, -0.107584029753526910, -0.107534319819315980, -0.107484609616269270, -0.107434899144511030, +-0.107385188404165100, -0.107335477395356630, -0.107285766118209490, -0.107236054572847480, -0.107186342759395770, -0.107136630677978210, -0.107086918328719070, -0.107037205711742190, +-0.106987492827172740, -0.106937779675134560, -0.106888066255751940, -0.106838352569148700, -0.106788638615450020, -0.106738924394779750, -0.106689209907262160, -0.106639495153021110, +-0.106589780132181760, -0.106540064844867970, -0.106490349291204020, -0.106440633471313730, -0.106390917385322320, -0.106341201033353610, -0.106291484415531460, -0.106241767531981040, +-0.106192050382826200, -0.106142332968191230, -0.106092615288199990, -0.106042897342977660, -0.105993179132648070, -0.105943460657335540, -0.105893741917163910, -0.105844022912258390, +-0.105794303642742800, -0.105744584108741440, -0.105694864310378180, -0.105645144247778210, -0.105595423921065380, -0.105545703330363990, -0.105495982475797900, -0.105446261357492290, +-0.105396539975571020, -0.105346818330157980, -0.105297096421378330, -0.105247374249355930, -0.105197651814215090, -0.105147929116079690, -0.105098206155074900, -0.105048482931324600, +-0.104998759444953100, -0.104949035696084240, -0.104899311684843250, -0.104849587411353970, -0.104799862875740740, -0.104750138078127400, -0.104700413018639150, -0.104650687697399870, +-0.104600962114533870, -0.104551236270165030, -0.104501510164418540, -0.104451783797418280, -0.104402057169288100, -0.104352330280153230, -0.104302603130137530, -0.104252875719365340, +-0.104203148047960490, -0.104153420116048240, -0.104103691923752420, -0.104053963471197390, -0.104004234758506980, -0.103954505785806450, -0.103904776553219640, -0.103855047060870900, +-0.103805317308884090, -0.103755587297384450, -0.103705857026495820, -0.103656126496342550, -0.103606395707048530, -0.103556664658738960, -0.103506933351537720, -0.103457201785569160, +-0.103407469960957150, -0.103357737877826900, -0.103308005536302320, -0.103258272936507270, -0.103208540078566990, -0.103158806962605350, -0.103109073588746700, -0.103059339957114910, +-0.103009606067835230, -0.102959871921031520, -0.102910137516828150, -0.102860402855348980, -0.102810667936719240, -0.102760932761062840, -0.102711197328504100, -0.102661461639166940, +-0.102611725693176560, -0.102561989490656850, -0.102512253031732180, -0.102462516316526450, -0.102412779345164850, -0.102363042117771310, -0.102313304634469720, -0.102263566895385310, +-0.102213828900641980, -0.102164090650364090, -0.102114352144675530, -0.102064613383701530, -0.102014874367565980, -0.101965135096393270, -0.101915395570307250, -0.101865655789433210, +-0.101815915753895020, -0.101766175463817040, -0.101716434919323180, -0.101666694120538680, -0.101616953067587430, -0.101567211760593810, -0.101517470199681710, -0.101467728384976390, +-0.101417986316601750, -0.101368243994681680, -0.101318501419341470, -0.101268758590704990, -0.101219015508896610, -0.101169272174040260, -0.101119528586261160, -0.101069784745683250, +-0.101020040652430880, -0.100970296306627960, -0.100920551708399740, -0.100870806857870140, -0.100821061755163520, -0.100771316400403810, -0.100721570793716260, -0.100671824935224770, +-0.100622078825053710, -0.100572332463327030, -0.100522585850169950, -0.100472838985706410, -0.100423091870060770, -0.100373344503356960, -0.100323596885720230, -0.100273849017274500, +-0.100224100898143720, -0.100174352528453120, -0.100124603908326640, -0.100074855037888650, -0.100025105917263090, -0.099975356546575203, -0.099925606925948915, -0.099875857055508624, +-0.099826106935378231, -0.099776356565683025, -0.099726605946546920, -0.099676855078094304, -0.099627103960449118, -0.099577352593736609, -0.099527600978080707, -0.099477849113605812, +-0.099428097000435853, -0.099378344638696089, -0.099328592028510465, -0.099278839170002922, -0.099229086063298721, -0.099179332708521806, -0.099129579105796561, -0.099079825255246917, +-0.099030071156998162, -0.098980316811174224, -0.098930562217899504, -0.098880807377297916, -0.098831052289494764, -0.098781296954613990, -0.098731541372779966, -0.098681785544116635, +-0.098632029468749299, -0.098582273146801888, -0.098532516578398788, -0.098482759763663955, -0.098433002702722663, -0.098383245395698871, -0.098333487842716519, -0.098283730043900883, +-0.098233971999375932, -0.098184213709266041, -0.098134455173695193, -0.098084696392788634, -0.098034937366670336, -0.097985178095464698, -0.097935418579295663, -0.097885658818288535, +-0.097835898812567254, -0.097786138562256222, -0.097736378067479410, -0.097686617328362091, -0.097636856345028236, -0.097587095117602232, -0.097537333646208049, -0.097487571930970976, +-0.097437809972014969, -0.097388047769463998, -0.097338285323443352, -0.097288522634076988, -0.097238759701489333, -0.097188996525804316, -0.097139233107147255, -0.097089469445642118, +-0.097039705541413307, -0.096989941394584792, -0.096940177005281861, -0.096890412373628484, -0.096840647499749077, -0.096790882383767610, -0.096741117025809384, -0.096691351425998356, +-0.096641585584458956, -0.096591819501315151, -0.096542053176692233, -0.096492286610714198, -0.096442519803505433, -0.096392752755189923, -0.096342985465892983, -0.096293217935738570, +-0.096243450164850683, -0.096193682153354609, -0.096143913901374320, -0.096094145409034257, -0.096044376676458376, -0.095994607703772009, -0.095944838491099110, -0.095895069038564124, +-0.095845299346291032, -0.095795529414405112, -0.095745759243030387, -0.095695988832291259, -0.095646218182311712, -0.095596447293217063, -0.095546676165131295, -0.095496904798178836, +-0.095447133192483685, -0.095397361348171131, -0.095347589265365171, -0.095297816944189803, -0.095248044384770331, -0.095198271587230751, -0.095148498551695493, -0.095098725278288540, +-0.095048951767135223, -0.094999178018359526, -0.094949404032085891, -0.094899629808438288, -0.094849855347542061, -0.094800080649521196, -0.094750305714500133, -0.094700530542602857, +-0.094650755133954698, -0.094600979488679640, -0.094551203606902154, -0.094501427488746209, -0.094451651134337136, -0.094401874543798933, -0.094352097717255598, -0.094302320654832475, +-0.094252543356653534, -0.094202765822843246, -0.094152988053525608, -0.094103210048825922, -0.094053431808868229, -0.094003653333776943, -0.093953874623676090, -0.093904095678690985, +-0.093854316498945656, -0.093804537084564515, -0.093754757435671604, -0.093704977552392238, -0.093655197434850429, -0.093605417083170619, -0.093555636497476835, -0.093505855677894406, +-0.093456074624547317, -0.093406293337560065, -0.093356511817056620, -0.093306730063162341, -0.093256948076001239, -0.093207165855697327, -0.093157383402375948, -0.093107600716161101, +-0.093057817797177256, -0.093008034645548424, -0.092958251261399949, -0.092908467644855844, -0.092858683796040564, -0.092808899715078136, -0.092759115402093903, -0.092709330857211877, +-0.092659546080556529, -0.092609761072251884, -0.092559975832423258, -0.092510190361194705, -0.092460404658690681, -0.092410618725035185, -0.092360832560353601, -0.092311046164769928, +-0.092261259538408205, -0.092211472681393764, -0.092161685593850642, -0.092111898275903312, -0.092062110727675797, -0.092012322949293443, -0.091962534940880289, -0.091912746702560791, +-0.091862958234458975, -0.091813169536700212, -0.091763380609408529, -0.091713591452708396, -0.091663802066723837, -0.091614012451580226, -0.091564222607401574, -0.091514432534312365, +-0.091464642232436638, -0.091414851701899738, -0.091365060942825718, -0.091315269955338604, -0.091265478739563755, -0.091215687295625208, -0.091165895623647436, -0.091116103723754491, +-0.091066311596071731, -0.091016519240723182, -0.090966726657833341, -0.090916933847526249, -0.090867140809927249, -0.090817347545160410, -0.090767554053350200, -0.090717760334620659, +-0.090667966389097160, -0.090618172216903742, -0.090568377818164902, -0.090518583193004667, -0.090468788341548423, -0.090418993263920208, -0.090369197960244063, -0.090319402430645360, +-0.090269606675248165, -0.090219810694176950, -0.090170014487555752, -0.090120218055509974, -0.090070421398163653, -0.090020624515641273, -0.089970827408066889, -0.089921030075565872, +-0.089871232518262290, -0.089821434736280625, -0.089771636729744933, -0.089721838498780584, -0.089672040043511647, -0.089622241364062605, -0.089572442460557511, -0.089522643333121765, +-0.089472843981879407, -0.089423044406954935, -0.089373244608472416, -0.089323444586557221, -0.089273644341333419, -0.089223843872925063, -0.089174043181457552, -0.089124242267054912, +-0.089074441129841683, -0.089024639769941905, -0.088974838187480962, -0.088925036382582923, -0.088875234355372298, -0.088825432105973143, -0.088775629634510855, -0.088725826941109490, +-0.088676024025893557, -0.088626220888987126, -0.088576417530515580, -0.088526613950602989, -0.088476810149373863, -0.088427006126952284, -0.088377201883463610, -0.088327397419031950, +-0.088277592733781343, -0.088227787827837204, -0.088177982701323585, -0.088128177354365012, -0.088078371787085566, -0.088028565999610620, -0.087978759992064254, -0.087928953764571008, +-0.087879147317254921, -0.087829340650241408, -0.087779533763654549, -0.087729726657618856, -0.087679919332258396, -0.087630111787698584, -0.087580304024063499, -0.087530496041477640, +-0.087480687840065116, -0.087430879419951299, -0.087381070781260298, -0.087331261924116166, -0.087281452848644331, -0.087231643554968846, -0.087181834043214265, -0.087132024313504669, +-0.087082214365965430, -0.087032404200720670, -0.086982593817894902, -0.086932783217612206, -0.086882972399997982, -0.086833161365176340, -0.086783350113271790, -0.086733538644408414, +-0.086683726958711654, -0.086633915056305563, -0.086584102937314680, -0.086534290601863101, -0.086484478050076252, -0.086434665282078188, -0.086384852297993475, -0.086335039097946181, +-0.086285225682061734, -0.086235412050464227, -0.086185598203277744, -0.086135784140627697, -0.086085969862638209, -0.086036155369433778, -0.085986340661138527, -0.085936525737877870, +-0.085886710599775887, -0.085836895246957146, -0.085787079679545700, -0.085737263897667018, -0.085687447901445168, -0.085637631691004704, -0.085587815266469705, -0.085537998627965614, +-0.085488181775616540, -0.085438364709546993, -0.085388547429881112, -0.085338729936744295, -0.085288912230260652, -0.085239094310554278, -0.085189276177750628, -0.085139457831973769, +-0.085089639273348283, -0.085039820501998251, -0.084990001518049099, -0.084940182321624952, -0.084890362912850362, -0.084840543291849396, -0.084790723458747538, -0.084740903413668855, +-0.084691083156737929, -0.084641262688078839, -0.084591442007817041, -0.084541621116076632, -0.084491800012982177, -0.084441978698657771, -0.084392157173228871, -0.084342335436819571, +-0.084292513489553994, -0.084242691331557581, -0.084192868962954429, -0.084143046383869116, -0.084093223594425739, -0.084043400594749740, -0.083993577384965240, -0.083943753965196807, +-0.083893930335568537, -0.083844106496205884, -0.083794282447232971, -0.083744458188774351, -0.083694633720954134, -0.083644809043897789, -0.083594984157729410, -0.083545159062573579, +-0.083495333758554405, -0.083445508245797342, -0.083395682524426501, -0.083345856594566017, -0.083296030456341333, -0.083246204109876570, -0.083196377555296297, -0.083146550792724636, +-0.083096723822287041, -0.083046896644107637, -0.082997069258311004, -0.082947241665021237, -0.082897413864363820, -0.082847585856462860, -0.082797757641442940, -0.082747929219428182, +-0.082698100590544055, -0.082648271754914668, -0.082598442712664588, -0.082548613463917980, -0.082498784008800272, -0.082448954347435599, -0.082399124479948543, -0.082349294406463242, +-0.082299464127105135, -0.082249633641998374, -0.082199802951267095, -0.082149972055036741, -0.082100140953431461, -0.082050309646575822, -0.082000478134593963, -0.081950646417611364, +-0.081900814495752150, -0.081850982369140887, -0.081801150037901726, -0.081751317502160151, -0.081701484762040269, -0.081651651817666676, -0.081601818669163509, -0.081551985316656236, +-0.081502151760269009, -0.081452318000126395, -0.081402484036352543, -0.081352649869072924, -0.081302815498411687, -0.081252980924492957, -0.081203146147442229, -0.081153311167383627, +-0.081103475984441759, -0.081053640598740748, -0.081003805010406077, -0.080953969219561897, -0.080904133226332803, -0.080854297030842917, -0.080804460633217737, -0.080754624033581413, +-0.080704787232058525, -0.080654950228773226, -0.080605113023850983, -0.080555275617415975, -0.080505438009592770, -0.080455600200505531, -0.080405762190279728, -0.080355923979039526, +-0.080306085566909061, -0.080256246954013830, -0.080206408140477983, -0.080156569126426117, -0.080106729911982380, -0.080056890497272271, -0.080007050882419925, -0.079957211067549966, +-0.079907371052786530, -0.079857530838255100, -0.079807690424079855, -0.079757849810385376, -0.079708008997295826, -0.079658167984936704, -0.079608326773432159, -0.079558485362906800, +-0.079508643753484792, -0.079458801945291604, -0.079408959938451415, -0.079359117733088833, -0.079309275329328008, -0.079259432727294438, -0.079209589927112287, -0.079159746928905719, +-0.079109903732800219, -0.079060060338919977, -0.079010216747389561, -0.078960372958333178, -0.078910528971876295, -0.078860684788143107, -0.078810840407258193, -0.078760995829345731, +-0.078711151054531234, -0.078661306082938851, -0.078611460914693204, -0.078561615549918459, -0.078511769988740127, -0.078461924231282371, -0.078412078277669786, -0.078362232128026579, +-0.078312385782478233, -0.078262539241148926, -0.078212692504162823, -0.078162845571645420, -0.078112998443720924, -0.078063151120513916, -0.078013303602148601, -0.077963455888750463, +-0.077913607980443680, -0.077863759877352876, -0.077813911579602241, -0.077764063087317259, -0.077714214400622136, -0.077664365519641454, -0.077614516444499432, -0.077564667175321553, +-0.077514817712232009, -0.077464968055355424, -0.077415118204815975, -0.077365268160739173, -0.077315417923249197, -0.077265567492470238, -0.077215716868527809, -0.077165866051546073, +-0.077116015041649680, -0.077066163838962809, -0.077016312443610971, -0.076966460855718344, -0.076916609075409578, -0.076866757102808839, -0.076816904938041650, -0.076767052581232190, +-0.076717200032505109, -0.076667347291984586, -0.076617494359796132, -0.076567641236063938, -0.076517787920912655, -0.076467934414466449, -0.076418080716850856, -0.076368226828190056, +-0.076318372748608254, -0.076268518478230948, -0.076218664017182358, -0.076168809365587106, -0.076118954523569385, -0.076069099491254732, -0.076019244268767314, -0.075969388856231793, +-0.075919533253772362, -0.075869677461514531, -0.075819821479582508, -0.075769965308100928, -0.075720108947193998, -0.075670252396987242, -0.075620395657604852, -0.075570538729171480, +-0.075520681611811302, -0.075470824305649872, -0.075420966810811382, -0.075371109127420469, -0.075321251255601351, -0.075271393195479541, -0.075221534947179244, -0.075171676510824681, +-0.075121817886541362, -0.075071959074453493, -0.075022100074685724, -0.074972240887362276, -0.074922381512608660, -0.074872521950549081, -0.074822662201308218, -0.074772802265010235, +-0.074722942141780699, -0.074673081831743815, -0.074623221335024220, -0.074573360651746134, -0.074523499782035083, -0.074473638726015284, -0.074423777483811390, -0.074373916055547606, +-0.074324054441349471, -0.074274192641341205, -0.074224330655647014, -0.074174468484392436, -0.074124606127701692, -0.074074743585699432, -0.074024880858509876, -0.073975017946258548, +-0.073925154849069682, -0.073875291567067930, -0.073825428100377510, -0.073775564449123948, -0.073725700613431491, -0.073675836593424776, -0.073625972389228023, -0.073576108000966783, +-0.073526243428765278, -0.073476378672748172, -0.073426513733039656, -0.073376648609765310, -0.073326783303049342, -0.073276917813015971, -0.073227052139790749, -0.073177186283497897, +-0.073127320244262092, -0.073077454022207528, -0.073027587617459769, -0.072977721030143050, -0.072927854260382022, -0.072877987308300932, -0.072828120174025290, -0.072778252857679374, +-0.072728385359387804, -0.072678517679274843, -0.072628649817466029, -0.072578781774085582, -0.072528913549258181, -0.072479045143108059, -0.072429176555760769, -0.072379307787340530, +-0.072329438837972021, -0.072279569707779476, -0.072229700396888460, -0.072179830905423181, -0.072129961233507886, -0.072080091381268127, -0.072030221348828138, -0.071980351136312598, +-0.071930480743845740, -0.071880610171553130, -0.071830739419558975, -0.071780868487987995, -0.071730997376964381, -0.071681126086613728, -0.071631254617060255, -0.071581382968428642, +-0.071531511140843135, -0.071481639134429287, -0.071431766949311346, -0.071381894585613989, -0.071332022043461452, -0.071282149322979299, -0.071232276424291779, -0.071182403347523127, +-0.071132530092798907, -0.071082656660243354, -0.071032783049981160, -0.070982909262136573, -0.070933035296835159, -0.070883161154201138, -0.070833286834359230, -0.070783412337433654, +-0.070733537663550006, -0.070683662812832504, -0.070633787785405841, -0.070583912581394265, -0.070534037200923355, -0.070484161644117346, -0.070434285911100944, -0.070384410001998368, +-0.070334533916935227, -0.070284657656035740, -0.070234781219424169, -0.070184904607226095, -0.070135027819565751, -0.070085150856567843, -0.070035273718356605, -0.069985396405057645, +-0.069935518916795170, -0.069885641253693911, -0.069835763415878105, -0.069785885403473330, -0.069736007216603849, -0.069686128855394353, -0.069636250319969076, -0.069586371610453626, +-0.069536492726972252, -0.069486613669649630, -0.069436734438610051, -0.069386855033979067, -0.069336975455880939, -0.069287095704440388, -0.069237215779781647, -0.069187335682030310, +-0.069137455411310625, -0.069087574967746868, -0.069037694351464618, -0.068987813562588138, -0.068937932601242105, -0.068888051467550809, -0.068838170161639831, -0.068788288683633431, +-0.068738407033656301, -0.068688525211832704, -0.068638643218288248, -0.068588761053147179, -0.068538878716534204, -0.068488996208573599, -0.068439113529390944, -0.068389230679110499, +-0.068339347657856986, -0.068289464465754651, -0.068239581102929103, -0.068189697569504604, -0.068139813865605414, -0.068089929991357129, -0.068040045946884037, -0.067990161732310817, +-0.067940277347761743, -0.067890392793362425, -0.067840508069237124, -0.067790623175510559, -0.067740738112306992, -0.067690852879752017, -0.067640967477969910, -0.067591081907085390, +-0.067541196167222720, -0.067491310258507506, -0.067441424181064011, -0.067391537935016954, -0.067341651520490611, -0.067291764937610590, -0.067241878186501153, -0.067191991267286574, +-0.067142104180092449, -0.067092216925043080, -0.067042329502263159, -0.066992441911876977, -0.066942554154010139, -0.066892666228786909, -0.066842778136332007, -0.066792889876769734, +-0.066743001450225659, -0.066693112856824097, -0.066643224096689740, -0.066593335169946893, -0.066543446076721136, -0.066493556817136770, -0.066443667391318517, -0.066393777799390652, +-0.066343888041478782, -0.066293998117707184, -0.066244108028200160, -0.066194217773083305, -0.066144327352480908, -0.066094436766517689, -0.066044546015317937, -0.065994655099007260, +-0.065944764017709948, -0.065894872771550733, -0.065844981360653879, -0.065795089785145033, -0.065745198045148445, -0.065695306140788862, -0.065645414072190586, -0.065595521839479212, +-0.065545629442779030, -0.065495736882214772, -0.065445844157910729, -0.065395951269992522, -0.065346058218584441, -0.065296165003811205, -0.065246271625797117, -0.065196378084667786, +-0.065146484380547529, -0.065096590513560607, -0.065046696483832642, -0.064996802291487951, -0.064946907936651241, -0.064897013419446828, -0.064847118740000320, -0.064797223898436021, +-0.064747328894878664, -0.064697433729452539, -0.064647538402283267, -0.064597642913495151, -0.064547747263212926, -0.064497851451560895, -0.064447955478664679, -0.064398059344648567, +-0.064348163049637322, -0.064298266593755204, -0.064248369977127878, -0.064198473199879619, -0.064148576262134743, -0.064098679164018860, -0.064048781905656285, -0.063998884487171753, +-0.063948986908689567, -0.063899089170335363, -0.063849191272233430, -0.063799293214508529, -0.063749394997284936, -0.063699496620688301, -0.063649598084842940, -0.063599699389873560, +-0.063549800535904505, -0.063499901523061397, -0.063450002351468526, -0.063400103021250639, -0.063350203532532068, -0.063300303885438419, -0.063250404080094025, -0.063200504116623160, +-0.063150603995151489, -0.063100703715803313, -0.063050803278703368, -0.063000902683975971, -0.062951001931746770, -0.062901101022140055, -0.062851199955280587, -0.062801298731292685, +-0.062751397350301968, -0.062701495812432770, -0.062651594117809822, -0.062601692266557443, -0.062551790258801282, -0.062501888094665656, -0.062451985774275298, -0.062402083297754533, +-0.062352180665229004, -0.062302277876823027, -0.062252374932661350, -0.062202471832868297, -0.062152568577569504, -0.062102665166889288, -0.062052761600951974, -0.062002857879883196, +-0.061952954003807272, -0.061903049972848963, -0.061853145787132580, -0.061803241446783785, -0.061753336951926883, -0.061703432302686635, -0.061653527499187365, -0.061603622541554721, +-0.061553717429913023, -0.061503812164387030, -0.061453906745101060, -0.061404001172180769, -0.061354095445750476, -0.061304189565934947, -0.061254283532858493, -0.061204377346646778, +-0.061154471007424119, -0.061104564515314840, -0.061054657870444597, -0.061004751072937700, -0.060954844122918933, -0.060904937020512612, -0.060855029765844386, -0.060805122359038587, +-0.060755214800219989, -0.060705307089512904, -0.060655399227042994, -0.060605491212934591, -0.060555583047312456, -0.060505674730300926, -0.060455766262025645, -0.060405857642610951, +-0.060355948872181618, -0.060306039950861964, -0.060256130878777653, -0.060206221656053015, -0.060156312282812381, -0.060106402759181408, -0.060056493085284435, -0.060006583261246221, +-0.059956673287191106, -0.059906763163244760, -0.059856852889531499, -0.059806942466176106, -0.059757031893302913, -0.059707121171037582, -0.059657210299504451, -0.059607299278828296, +-0.059557388109133448, -0.059507476790545570, -0.059457565323189007, -0.059407653707188528, -0.059357741942668470, -0.059307830029754496, -0.059257917968570953, -0.059208005759242170, +-0.059158093401893819, -0.059108180896650230, -0.059058268243636192, -0.059008355442976036, -0.058958442494795441, -0.058908529399218736, -0.058858616156370704, -0.058808702766375689, +-0.058758789229359371, -0.058708875545446071, -0.058658961714760580, -0.058609047737427249, -0.058559133613571734, -0.058509219343318389, -0.058459304926791994, -0.058409390364116895, +-0.058359475655418769, -0.058309560800821947, -0.058259645800451225, -0.058209730654430941, -0.058159815362886780, -0.058109899925943079, -0.058059984343724183, -0.058010068616355770, +-0.057960152743962184, -0.057910236726668222, -0.057860320564598215, -0.057810404257877861, -0.057760487806631490, -0.057710571210983899, -0.057660654471059440, -0.057610737586983783, +-0.057560820558881287, -0.057510903386876741, -0.057460986071094490, -0.057411068611660218, -0.057361151008698277, -0.057311233262333450, -0.057261315372690108, -0.057211397339893909, +-0.057161479164069225, -0.057111560845340401, -0.057061642383833114, -0.057011723779671723, -0.056961805032981018, -0.056911886143885364, -0.056861967112510431, -0.056812047938980585, +-0.056762128623420616, -0.056712209165954888, -0.056662289566709073, -0.056612369825807543, -0.056562449943375080, -0.056512529919536050, -0.056462609754416145, -0.056412689448139708, +-0.056362769000831550, -0.056312848412616030, -0.056262927683618826, -0.056213006813964309, -0.056163085803776831, -0.056113164653182078, -0.056063243362304414, -0.056013321931268643, +-0.055963400360199124, -0.055913478649221547, -0.055863556798460272, -0.055813634808040108, -0.055763712678085414, -0.055713790408721875, -0.055663868000073870, -0.055613945452266188, +-0.055564022765423202, -0.055514099939670596, -0.055464176975132749, -0.055414253871934452, -0.055364330630200083, -0.055314407250055327, -0.055264483731624556, -0.055214560075032573, +-0.055164636280403752, -0.055114712347863776, -0.055064788277537025, -0.055014864069547857, -0.054964939724021972, -0.054915015241083741, -0.054865090620857968, -0.054815165863469031, +-0.054765240969042617, -0.054715315937703103, -0.054665390769575294, -0.054615465464783568, -0.054565540023453624, -0.054515614445709834, -0.054465688731677002, -0.054415762881479500, +-0.054365836895243040, -0.054315910773091988, -0.054265984515151161, -0.054216058121544924, -0.054166131592398990, -0.054116204927837724, -0.054066278127985506, -0.054016351192968035, +-0.053966424122909681, -0.053916496917935271, -0.053866569578169175, -0.053816642103737100, -0.053766714494763418, -0.053716786751372946, -0.053666858873690070, -0.053616930861840488, +-0.053567002715948574, -0.053517074436139157, -0.053467146022536612, -0.053417217475266648, -0.053367288794453634, -0.053317359980222405, -0.053267431032697328, -0.053217501952004115, +-0.053167572738267152, -0.053117643391610812, -0.053067713912160808, -0.053017784300041511, -0.052967854555377766, -0.052917924678293933, -0.052867994668915730, -0.052818064527367550, +-0.052768134253774197, -0.052718203848260071, -0.052668273310950885, -0.052618342641971010, -0.052568411841445277, -0.052518480909498066, -0.052468549846255104, -0.052418618651840769, +-0.052368687326379885, -0.052318755869996833, -0.052268824282817344, -0.052218892564965785, -0.052168960716566563, -0.052119028737745376, -0.052069096628626611, -0.052019164389335112, +-0.051969232019995260, -0.051919299520732771, -0.051869366891672028, -0.051819434132937874, -0.051769501244654688, -0.051719568226948190, -0.051669635079942773, -0.051619701803763268, +-0.051569768398534069, -0.051519834864380887, -0.051469901201428123, -0.051419967409800607, -0.051370033489622720, -0.051320099441020200, -0.051270165264117429, -0.051220230959039249, +-0.051170296525910042, -0.051120361964855539, -0.051070427276000134, -0.051020492459468214, -0.050970557515385512, -0.050920622443876414, -0.050870687245065757, -0.050820751919077936, +-0.050770816466038683, -0.050720880886072392, -0.050670945179303893, -0.050621009345857587, -0.050571073385859207, -0.050521137299433139, -0.050471201086704227, -0.050421264747796873, +-0.050371328282836796, -0.050321391691948401, -0.050271454975256528, -0.050221518132885570, -0.050171581164961267, -0.050121644071608004, -0.050071706852950190, -0.050021769509113558, +-0.049971832040222493, -0.049921894446401854, -0.049871956727776029, -0.049822018884470763, -0.049772080916610451, -0.049722142824319929, -0.049672204607723612, -0.049622266266947226, +-0.049572327802115172, -0.049522389213352301, -0.049472450500783006, -0.049422511664533035, -0.049372572704726787, -0.049322633621489108, -0.049272694414944397, -0.049222755085218395, +-0.049172815632435501, -0.049122876056720131, -0.049072936358198010, -0.049022996536993553, -0.048973056593231604, -0.048923116527036563, -0.048873176338534184, -0.048823236027848854, +-0.048773295595105438, -0.048723355040428344, -0.048673414363943304, -0.048623473565774726, -0.048573532646047461, -0.048523591604885931, -0.048473650442415854, -0.048423709158761659, +-0.048373767754048190, -0.048323826228399855, -0.048273884581942400, -0.048223942814800233, -0.048174000927098205, -0.048124058918960738, -0.048074116790513564, -0.048024174541881098, +-0.047974232173187754, -0.047924289684559272, -0.047874347076120066, -0.047824404347994988, -0.047774461500308459, -0.047724518533186225, -0.047674575446752687, -0.047624632241132711, +-0.047574688916450718, -0.047524745472832440, -0.047474801910402299, -0.047424858229285154, -0.047374914429605418, -0.047324970511488845, -0.047275026475059843, -0.047225082320443271, +-0.047175138047763555, -0.047125193657146437, -0.047075249148716330, -0.047025304522597663, -0.046975359778916176, -0.046925414917796282, -0.046875469939362861, -0.046825524843740321, +-0.046775579631054408, -0.046725634301429543, -0.046675688854990599, -0.046625743291861990, -0.046575797612169463, -0.046525851816037439, -0.046475905903590790, -0.046425959874953932, +-0.046376013730252616, -0.046326067469611265, -0.046276121093154751, -0.046226174601007489, -0.046176227993295231, -0.046126281270142400, -0.046076334431673430, -0.046026387478014061, +-0.045976440409288728, -0.045926493225622290, -0.045876545927139183, -0.045826598513965144, -0.045776650986224618, -0.045726703344042462, -0.045676755587543104, -0.045626807716852298, +-0.045576859732094473, -0.045526911633394500, -0.045476963420876808, -0.045427015094667143, -0.045377066654889948, -0.045327118101670082, -0.045277169435131978, -0.045227220655401391, +-0.045177271762602757, -0.045127322756860502, -0.045077373638300375, -0.045027424407046823, -0.044977475063224706, -0.044927525606958459, -0.044877576038373841, -0.044827626357595282, +-0.044777676564747661, -0.044727726659955398, -0.044677776643344269, -0.044627826515038695, -0.044577876275163554, -0.044527925923843276, -0.044477975461203634, -0.044428024887369050, +-0.044378074202464403, -0.044328123406614128, -0.044278172499943987, -0.044228221482578413, -0.044178270354642286, -0.044128319116260042, -0.044078367767557448, -0.044028416308658926, +-0.043978464739688923, -0.043928513060773201, -0.043878561272036203, -0.043828609373602792, -0.043778657365597419, -0.043728705248145844, -0.043678753021372509, -0.043628800685402293, +-0.043578848240359624, -0.043528895686370285, -0.043478943023558703, -0.043428990252049771, -0.043379037371967910, -0.043329084383438903, -0.043279131286587183, -0.043229178081537638, +-0.043179224768414702, -0.043129271347344150, -0.043079317818450417, -0.043029364181857946, -0.042979410437692510, -0.042929456586078552, -0.042879502627140943, -0.042829548561004141, +-0.042779594387793912, -0.042729640107634692, -0.042679685720651374, -0.042629731226968400, -0.042579776626711537, -0.042529821920005234, -0.042479867106974378, -0.042429912187743411, +-0.042379957162438107, -0.042330002031182909, -0.042280046794102702, -0.042230091451321942, -0.042180136002966391, -0.042130180449160504, -0.042080224790028722, -0.042030269025696815, +-0.041980313156289244, -0.041930357181930888, -0.041880401102746191, -0.041830444918860940, -0.041780488630399577, -0.041730532237486989, -0.041680575740247632, -0.041630619138807272, +-0.041580662433290366, -0.041530705623821808, -0.041480748710526039, -0.041430791693528847, -0.041380834572954668, -0.041330877348928409, -0.041280920021574505, -0.041230962591018751, +-0.041181005057385589, -0.041131047420799920, -0.041081089681386178, -0.041031131839270166, -0.040981173894576318, -0.040931215847429092, -0.040881257697954275, -0.040831299446276309, +-0.040781341092520094, -0.040731382636810080, -0.040681424079272062, -0.040631465420030481, -0.040581506659210231, -0.040531547796935775, -0.040481588833332895, -0.040431629768526038, +-0.040381670602640106, -0.040331711335799561, -0.040281751968130178, -0.040231792499756412, -0.040181832930803164, -0.040131873261394897, -0.040081913491657385, -0.040031953621715091, +-0.039981993651692471, -0.039932033581715307, -0.039882073411908060, -0.039832113142395632, -0.039782152773302472, -0.039732192304754381, -0.039682231736875802, -0.039632271069791648, +-0.039582310303626377, -0.039532349438505768, -0.039482388474554285, -0.039432427411896828, -0.039382466250657867, -0.039332504990963177, -0.039282543632937234, -0.039232582176704923, +-0.039182620622390717, -0.039132658970120401, -0.039082697220018434, -0.039032735372209290, -0.038982773426818745, -0.038932811383971262, -0.038882849243791762, -0.038832887006404686, +-0.038782924671935837, -0.038732962240509677, -0.038682999712251115, -0.038633037087284612, -0.038583074365735957, -0.038533111547729613, -0.038483148633390495, -0.038433185622843057, +-0.038383222516213102, -0.038333259313625086, -0.038283296015203923, -0.038233332621074083, -0.038183369131361347, -0.038133405546190192, -0.038083441865685082, -0.038033478089971810, +-0.037983514219174841, -0.037933550253419088, -0.037883586192829014, -0.037833622037530414, -0.037783657787647765, -0.037733693443305967, -0.037683729004629497, -0.037633764471744144, +-0.037583799844774383, -0.037533835123845123, -0.037483870309080826, -0.037433905400607301, -0.037383940398549018, -0.037333975303030877, -0.037284010114177354, -0.037234044832114253, +-0.037184079456966036, -0.037134113988857617, -0.037084148427913480, -0.037034182774259405, -0.036984217028019878, -0.036934251189319367, -0.036884285258283668, -0.036834319235037258, +-0.036784353119705050, -0.036734386912411515, -0.036684420613282455, -0.036634454222442346, -0.036584487740016103, -0.036534521166128195, -0.036484554500904424, -0.036434587744469268, +-0.036384620896947648, -0.036334653958464025, -0.036284686929144216, -0.036234719809112692, -0.036184752598494359, -0.036134785297413707, -0.036084817905996540, -0.036034850424367319, +-0.035984882852650536, -0.035934915190971986, -0.035884947439456145, -0.035834979598227942, -0.035785011667411840, -0.035735043647133653, -0.035685075537517860, -0.035635107338689381, +-0.035585139050772686, -0.035535170673893585, -0.035485202208176560, -0.035435233653746533, -0.035385265010727973, -0.035335296279246690, -0.035285327459427175, -0.035235358551394341, +-0.035185389555272659, -0.035135420471187957, -0.035085451299264700, -0.035035482039627364, -0.034985512692401778, -0.034935543257712399, -0.034885573735684169, -0.034835604126441565, +-0.034785634430110388, -0.034735664646815122, -0.034685694776680702, -0.034635724819831598, -0.034585754776393626, -0.034535784646491263, -0.034485814430249444, -0.034435844127792645, +-0.034385873739246675, -0.034335903264736026, -0.034285932704385617, -0.034235962058319927, -0.034185991326664784, -0.034136020509544659, -0.034086049607084480, -0.034036078619408737, +-0.033986107546643239, -0.033936136388912477, -0.033886165146340928, -0.033836193819054408, -0.033786222407177401, -0.033736250910834840, -0.033686279330151211, -0.033636307665252323, +-0.033586335916262672, -0.033536364083307180, -0.033486392166510330, -0.033436420165997946, -0.033386448081894511, -0.033336475914324953, -0.033286503663413763, -0.033236531329286757, +-0.033186558912068426, -0.033136586411883696, -0.033086613828857053, -0.033036641163114326, -0.032986668414779992, -0.032936695583978541, -0.032886722670835804, -0.032836749675476250, +-0.032786776598024828, -0.032736803438606014, -0.032686830197345640, -0.032636856874368195, -0.032586883469798600, -0.032536909983761353, -0.032486936416382277, -0.032436962767785862, +-0.032386989038097037, -0.032337015227440299, -0.032287041335941465, -0.032237067363725030, -0.032187093310915925, -0.032137119177638639, -0.032087144964019002, -0.032037170670181504, +-0.031987196296250631, -0.031937221842352218, -0.031887247308610742, -0.031837272695151159, -0.031787298002097938, -0.031737323229576925, -0.031687348377712601, -0.031637373446629903, +-0.031587398436453334, -0.031537423347308705, -0.031487448179320525, -0.031437472932613716, -0.031387497607312791, -0.031337522203543557, -0.031287546721430526, -0.031237571161098619, +-0.031187595522672348, -0.031137619806277529, -0.031087644012038659, -0.031037668140080237, -0.030987692190528087, -0.030937716163506709, -0.030887740059141040, -0.030837763877555574, +-0.030787787618876145, -0.030737811283227248, -0.030687834870733819, -0.030637858381520361, -0.030587881815712703, -0.030537905173435336, -0.030487928454813209, -0.030437951659970819, +-0.030387974789033989, -0.030337997842127224, -0.030288020819375466, -0.030238043720903211, -0.030188066546836291, -0.030138089297299202, -0.030088111972416894, -0.030038134572313861, +-0.029988157097115935, -0.029938179546947614, -0.029888201921933404, -0.029838224222199131, -0.029788246447869298, -0.029738268599068848, -0.029688290675922283, -0.029638312678555434, +-0.029588334607092807, -0.029538356461659341, -0.029488378242379539, -0.029438399949379235, -0.029388421582782934, -0.029338443142715578, -0.029288464629301670, -0.029238486042667045, +-0.029188507382936203, -0.029138528650234096, -0.029088549844685219, -0.029038570966415416, -0.028988592015549181, -0.028938612992211024, -0.028888633896526780, -0.028838654728620950, +-0.028788675488618482, -0.028738696176643885, -0.028688716792822987, -0.028638737337280298, -0.028588757810140770, -0.028538778211528899, -0.028488798541570527, -0.028438818800390162, +-0.028388838988112744, -0.028338859104862790, -0.028288879150766128, -0.028238899125947271, -0.028188919030531168, -0.028138938864642318, -0.028088958628406571, -0.028038978321948422, +-0.027988997945392387, -0.027939017498864301, -0.027889036982488669, -0.027839056396390446, -0.027789075740694134, -0.027739095015525583, -0.027689114221009292, -0.027639133357270213, +-0.027589152424432859, -0.027539171422623070, -0.027489190351965349, -0.027439209212584654, -0.027389228004605491, -0.027339246728153702, -0.027289265383353797, -0.027239283970330725, +-0.027189302489209005, -0.027139320940114467, -0.027089339323171632, -0.027039357638505446, -0.026989375886240421, -0.026939394066502403, -0.026889412179415897, -0.026839430225105418, +-0.026789448203696806, -0.026739466115314577, -0.026689483960083679, -0.026639501738128631, -0.026589519449575268, -0.026539537094548111, -0.026489554673172107, -0.026439572185571775, +-0.026389589631872955, -0.026339607012200162, -0.026289624326678352, -0.026239641575432036, -0.026189658758587062, -0.026139675876267938, -0.026089692928599625, -0.026039709915706640, +-0.025989726837714819, -0.025939743694748683, -0.025889760486932745, -0.025839777214392848, -0.025789793877253508, -0.025739810475639682, -0.025689827009675890, -0.025639843479487973, +-0.025589859885200444, -0.025539876226938270, -0.025489892504825959, -0.025439908718989358, -0.025389924869552990, -0.025339940956641806, -0.025289956980380328, -0.025239972940894403, +-0.025189988838308544, -0.025140004672747712, -0.025090020444336423, -0.025040036153200530, -0.024990051799464546, -0.024940067383252988, -0.024890082904691704, -0.024840098363905216, +-0.024790113761018480, -0.024740129096156017, -0.024690144369443674, -0.024640159581005971, -0.024590174730967869, -0.024540189819453884, -0.024490204846589869, -0.024440219812500344, +-0.024390234717310270, -0.024340249561144164, -0.024290264344127878, -0.024240279066385931, -0.024190293728043284, -0.024140308329224463, -0.024090322870055313, -0.024040337350660357, +-0.023990351771164112, -0.023940366131692432, -0.023890380432369837, -0.023840394673321292, -0.023790408854671315, -0.023740422976545758, -0.023690437039069145, -0.023640451042366440, +-0.023590464986562164, -0.023540478871782171, -0.023490492698150980, -0.023440506465793553, -0.023390520174834419, -0.023340533825399429, -0.023290547417613106, -0.023240560951600410, +-0.023190574427485872, -0.023140587845395338, -0.023090601205453337, -0.023040614507784832, -0.022990627752514349, -0.022940640939767738, -0.022890654069669527, -0.022840667142344236, +-0.022790680157917718, -0.022740693116514502, -0.022690706018259555, -0.022640718863277398, -0.022590731651693886, -0.022540744383633547, -0.022490757059221343, -0.022440769678581808, +-0.022390782241840788, -0.022340794749122816, -0.022290807200552855, -0.022240819596255432, -0.022190831936356407, -0.022140844220980300, -0.022090856450252081, -0.022040868624296280, +-0.021990880743238749, -0.021940892807204019, -0.021890904816316611, -0.021840916770702382, -0.021790928670485866, -0.021740940515792024, -0.021690952306745389, -0.021640964043471819, +-0.021590975726095838, -0.021540987354742417, -0.021490998929536084, -0.021441010450602697, -0.021391021918066782, -0.021341033332053314, -0.021291044692686820, -0.021241056000093156, +-0.021191067254396855, -0.021141078455722884, -0.021091089604195774, -0.021041100699941383, -0.020991111743084240, -0.020941122733748874, -0.020891133672061146, -0.020841144558145581, +-0.020791155392127156, -0.020741166174130399, -0.020691176904281173, -0.020641187582704001, -0.020591198209523862, -0.020541208784865282, -0.020491219308854124, -0.020441229781614920, +-0.020391240203272640, -0.020341250573951818, -0.020291260893778310, -0.020241271162876651, -0.020191281381371814, -0.020141291549388329, -0.020091301667052062, -0.020041311734487539, +-0.019991321751819734, -0.019941331719173186, -0.019891341636673748, -0.019841351504445957, -0.019791361322614345, -0.019741371091304773, -0.019691380810641774, -0.019641390480750320, +-0.019591400101754950, -0.019541409673781519, -0.019491419196954567, -0.019441428671399068, -0.019391438097239550, -0.019341447474601883, -0.019291456803610597, -0.019241466084390670, +-0.019191475317066633, -0.019141484501764349, -0.019091493638608358, -0.019041502727723630, -0.018991511769234703, -0.018941520763267439, -0.018891529709946373, -0.018841538609396039, +-0.018791547461742303, -0.018741556267109698, -0.018691565025623205, -0.018641573737407352, -0.018591582402588010, -0.018541591021289713, -0.018491599593637435, -0.018441608119755717, +-0.018391616599770424, -0.018341625033806087, -0.018291633421987689, -0.018241641764439761, -0.018191650061288176, -0.018141658312657464, -0.018091666518672604, -0.018041674679458136, +-0.017991682795139925, -0.017941690865842509, -0.017891698891690420, -0.017841706872809528, -0.017791714809324368, -0.017741722701359919, -0.017691730549040725, -0.017641738352492643, +-0.017591746111840219, -0.017541753827208427, -0.017491761498721808, -0.017441769126506232, -0.017391776710686230, -0.017341784251386785, -0.017291791748732438, -0.017241799202849052, +-0.017191806613861171, -0.017141813981893773, -0.017091821307071396, -0.017041828589519911, -0.016991835829363852, -0.016941843026727764, -0.016891850181737507, -0.016841857294517627, +-0.016791864365193105, -0.016741871393888476, -0.016691878380729611, -0.016641885325841054, -0.016591892229347781, -0.016541899091374334, -0.016491905912046585, -0.016441912691489070, +-0.016391919429826773, -0.016341926127184235, -0.016291932783687322, -0.016241939399460580, -0.016191945974628988, -0.016141952509317090, -0.016091959003650753, -0.016041965457754517, +-0.015991971871753368, -0.015941978245771846, -0.015891984579935823, -0.015841990874369837, -0.015791997129198432, -0.015742003344547475, -0.015692009520541512, -0.015642015657305525, +-0.015592021754964054, -0.015542027813642972, -0.015492033833466822, -0.015442039814560587, -0.015392045757048809, -0.015342051661057361, -0.015292057526710782, -0.015242063354134061, +-0.015192069143451736, -0.015142074894789683, -0.015092080608272444, -0.015042086284025001, -0.014992091922171899, -0.014942097522839011, -0.014892103086150882, -0.014842108612232048, +-0.014792114101208387, -0.014742119553204442, -0.014692124968345198, -0.014642130346755197, -0.014592135688560314, -0.014542140993885093, -0.014492146262854519, -0.014442151495593135, +-0.014392156692226815, -0.014342161852880104, -0.014292166977677989, -0.014242172066745013, -0.014192177120207049, -0.014142182138188644, -0.014092187120814784, -0.014042192068210011, +-0.013992196980500202, -0.013942201857809901, -0.013892206700263652, -0.013842211507987328, -0.013792216281105477, -0.013742221019743085, -0.013692225724024697, -0.013642230394076187, +-0.013592235030022102, -0.013542239631987430, -0.013492244200096714, -0.013442248734475831, -0.013392253235249328, -0.013342257702542191, -0.013292262136478966, -0.013242266537185529, +-0.013192270904786427, -0.013142275239406646, -0.013092279541170733, -0.013042283810204567, -0.012992288046632690, -0.012942292250580094, -0.012892296422171321, -0.012842300561532254, +-0.012792304668787434, -0.012742308744061409, -0.012692312787480056, -0.012642316799167920, -0.012592320779249993, -0.012542324727850820, -0.012492328645096279, -0.012442332531110916, +-0.012392336386019722, -0.012342340209947242, -0.012292344003019358, -0.012242347765360612, -0.012192351497095997, -0.012142355198350059, -0.012092358869248677, -0.012042362509916400, +-0.011992366120478215, -0.011942369701058671, -0.011892373251783646, -0.011842376772777687, -0.011792380264165344, -0.011742383726072494, -0.011692387158623684, -0.011642390561943907, +-0.011592393936157710, -0.011542397281390971, -0.011492400597768239, -0.011442403885414506, -0.011392407144454319, -0.011342410375013557, -0.011292413577216770, -0.011242416751188949, +-0.011192419897054643, -0.011142423014939730, -0.011092426104968760, -0.011042429167266726, -0.010992432201958174, -0.010942435209168985, -0.010892438189023709, -0.010842441141646892, +-0.010792444067164416, -0.010742446965700833, -0.010692449837381129, -0.010642452682329858, -0.010592455500672900, -0.010542458292534803, -0.010492461058040558, -0.010442463797314719, +-0.010392466510483164, -0.010342469197670442, -0.010292471859001548, -0.010242474494601028, -0.010192477104594769, -0.010142479689107316, -0.010092482248263663, -0.010042484782188360, +-0.009992487291007291, -0.009942489774845003, -0.009892492233826490, -0.009842494668076303, -0.009792497077720322, -0.009742499462883100, -0.009692501823689184, -0.009642504160264459, +-0.009592506472733473, -0.009542508761221220, -0.009492511025852251, -0.009442513266752450, -0.009392515484046364, -0.009342517677858991, -0.009292519848314879, -0.009242521995539911, +-0.009192524119658639, -0.009142526220796057, -0.009092528299076714, -0.009042530354626495, -0.008992532387569949, -0.008942534398032073, -0.008892536386137417, -0.008842538352011865, +-0.008792540295779966, -0.008742542217566273, -0.008692544117496667, -0.008642545995695701, -0.008592547852288371, -0.008542549687399228, -0.008492551501154154, -0.008442553293677700, +-0.008392555065094865, -0.008342556815530196, -0.008292558545109581, -0.008242560253957568, -0.008192561942199155, -0.008142563609958894, -0.008092565257362667, -0.008042566884535028, +-0.007992568491600970, -0.007942570078685048, -0.007892571645913145, -0.007842573193409811, -0.007792574721299603, -0.007742576229708400, -0.007692577718760757, -0.007642579188581669, +-0.007592580639295690, -0.007542582071028704, -0.007492583483905262, -0.007442584878050361, -0.007392586253588554, -0.007342587610645725, -0.007292588949346428, -0.007242590269815658, +-0.007192591572177969, -0.007142592856559244, -0.007092594123084038, -0.007042595371877345, -0.006992596603063722, -0.006942597816769049, -0.006892599013117883, -0.006842600192234775, +-0.006792601354245611, -0.006742602499274943, -0.006692603627447769, -0.006642604738888642, -0.006592605833723447, -0.006542606912076737, -0.006492607974073510, -0.006442609019838320, +-0.006392610049497051, -0.006342611063174256, -0.006292612060994934, -0.006242613043083638, -0.006192614009566253, -0.006142614960567333, -0.006092615896211876, -0.006042616816624435, +-0.005992617721930896, -0.005942618612255812, -0.005892619487724183, -0.005842620348460561, -0.005792621194590831, -0.005742622026239549, -0.005692622843531267, -0.005642623646591872, +-0.005592624435545919, -0.005542625210518404, -0.005492625971633882, -0.005442626719018240, -0.005392627452796030, -0.005342628173092252, -0.005292628880031459, -0.005242629573739539, +-0.005192630254341044, -0.005142630921960973, -0.005092631576723882, -0.005042632218755655, -0.004992632848180848, -0.004942633465124459, -0.004892634069711042, -0.004842634662066484, +-0.004792635242315340, -0.004742635810582162, -0.004692636366992840, -0.004642636911671927, -0.004592637444744421, -0.004542637966334878, -0.004492638476569184, -0.004442638975571894, +-0.004392639463468006, -0.004342639940382076, -0.004292640406439990, -0.004242640861766302, -0.004192641306486013, -0.004142641740723677, -0.004092642164605180, -0.004042642578255077, +-0.003992642981798369, -0.003942643375359608, -0.003892643759064683, -0.003842644133038149, -0.003792644497404561, -0.003742644852289805, -0.003692645197818437, -0.003642645534115456, +-0.003592645861305418, -0.003542646179514209, -0.003492646488866384, -0.003442646789486943, -0.003392647081500441, -0.003342647365032765, -0.003292647640208471, -0.003242647907152558, +-0.003192648165989581, -0.003142648416845428, -0.003092648659844654, -0.003042648895112258, -0.002992649122772795, -0.002942649342952154, -0.002892649555774890, -0.002842649761366002, +-0.002792649959850045, -0.002742650151352907, -0.002692650335999144, -0.002642650513913312, -0.002592650685221296, -0.002542650850047655, -0.002492651008517386, -0.002442651160755045, +-0.002392651306886521, -0.002342651447036368, -0.002292651581329587, -0.002242651709890733, -0.002192651832845693, -0.002142651950319024, -0.002092652062435725, -0.002042652169320352, +-0.001992652271098793, -0.001942652367895603, -0.001892652459835782, -0.001842652547043885, -0.001792652629645802, -0.001742652707766087, -0.001692652781529296, -0.001642652851061317, +-0.001592652916486706, -0.001542652977930462, -0.001492653035517143, -0.001442653089372634, -0.001392653139621493, -0.001342653186388719, -0.001292653229798869, -0.001242653269977829, +-0.001192653307050155, -0.001142653341140849, -0.001092653372374465, -0.001042653400876892, -0.000992653426772685, -0.000942653450186845, -0.000892653471243927, -0.000842653490069820, +-0.000792653506789079, -0.000742653521526259, -0.000692653534407251, -0.000642653545556608, -0.000592653555099331, -0.000542653563159977, -0.000492653569864433, -0.000442653575337254, +-0.000392653579703442, -0.000342653583087552, -0.000292653585615472, -0.000242653587411758, -0.000192653588601410, -0.000142653589308984, -0.000092653589660368, -0.000042653589780118, +0.000007346410206766, 0.000057346410175728, 0.000107346410000880, 0.000157346409557666, 0.000207346408721530, 0.000257346407366583, 0.000307346405368271, 0.000357346402601593, +0.000407346398941993, 0.000457346394263583, 0.000507346388441806, 0.000557346381351664, 0.000607346372868600, 0.000657346362866726, 0.000707346351221486, 0.000757346337807880, +0.000807346322501352, 0.000857346305176015, 0.000907346285707312, 0.000957346263970243, 0.001007346239840252, 0.001057346213191452, 0.001107346183899286, 0.001157346151838755, +0.001207346116885302, 0.001257346078913040, 0.001307346037797413, 0.001357345993413865, 0.001407345945636508, 0.001457345894340786, 0.001507345839401699, 0.001557345780694692, +0.001607345718093876, 0.001657345651474696, 0.001707345580712151, 0.001757345505681687, 0.001807345426257415, 0.001857345342314780, 0.001907345253728781, 0.001957345160374863, +0.002007345062127138, 0.002057344958861051, 0.002107344850451600, 0.002157344736774233, 0.002207344617703058, 0.002257344493113523, 0.002307344362881071, 0.002357344226879813, +0.002407344084985194, 0.002457343937072216, 0.002507343783016322, 0.002557343622691624, 0.002607343455973567, 0.002657343282737152, 0.002707343102857823, 0.002757342916209691, +0.002807342722668203, 0.002857342522108357, 0.002907342314405600, 0.002957342099434042, 0.003007341877069129, 0.003057341647185862, 0.003107341409659684, 0.003157341164364709, +0.003207340911176381, 0.003257340649970145, 0.003307340380620113, 0.003357340103001730, 0.003407339816989997, 0.003457339522460358, 0.003507339219286927, 0.003557338907345147, +0.003607338586510021, 0.003657338256656991, 0.003707337917660173, 0.003757337569395009, 0.003807337211736501, 0.003857336844560094, 0.003907336467739902, 0.003957336081151368, +0.004007335684669494, 0.004057335278169725, 0.004107334861526173, 0.004157334434614284, 0.004207333997309060, 0.004257333549485944, 0.004307333091019050, 0.004357332621783824, +0.004407332141655711, 0.004457331650508822, 0.004507331148218605, 0.004557330634660059, 0.004607330109708632, 0.004657329573238434, 0.004707329025124913, 0.004757328465243070, +0.004807327893468349, 0.004857327309674865, 0.004907326713738062, 0.004957326105532942, 0.005007325484934952, 0.005057324851818203, 0.005107324206058143, 0.005157323547529772, +0.005207322876108536, 0.005257322191668548, 0.005307321494085256, 0.005357320783234103, 0.005407320058989205, 0.005457319321226006, 0.005507318569819510, 0.005557317804645160, +0.005607317025577073, 0.005657316232490692, 0.005707315425261022, 0.005757314603763507, 0.005807313767872260, 0.005857312917462730, 0.005907312052409917, 0.005957311172589269, +0.006007310277874899, 0.006057309368142251, 0.006107308443266332, 0.006157307503122585, 0.006207306547585126, 0.006257305576529399, 0.006307304589830853, 0.006357303587363602, +0.006407302569003091, 0.006457301534624325, 0.006507300484102748, 0.006557299417312476, 0.006607298334128956, 0.006657297234427190, 0.006707296118082624, 0.006757294984969375, +0.006807293834962888, 0.006857292667938166, 0.006907291483770657, 0.006957290282334475, 0.007007289063505067, 0.007057287827157437, 0.007107286573167031, 0.007157285301407965, +0.007207284011755685, 0.007257282704085639, 0.007307281378271943, 0.007357280034190043, 0.007407278671714943, 0.007457277290722091, 0.007507275891085601, 0.007557274472680921, +0.007607273035383055, 0.007657271579067451, 0.007707270103608224, 0.007757268608880821, 0.007807267094760247, 0.007857265561121950, 0.007907264007840044, 0.007957262434789978, +0.008007260841846756, 0.008057259228885828, 0.008107257595781304, 0.008157255942408639, 0.008207254268642833, 0.008257252574359336, 0.008307250859432264, 0.008357249123737063, +0.008407247367149184, 0.008457245589542743, 0.008507243790793187, 0.008557241970775523, 0.008607240129365198, 0.008657238266436327, 0.008707236381864362, 0.008757234475524305, +0.008807232547291606, 0.008857230597040383, 0.008907228624646083, 0.008957226629983710, 0.009007224612928716, 0.009057222573355216, 0.009107220511138658, 0.009157218426154051, +0.009207216318276841, 0.009257214187381147, 0.009307212033342416, 0.009357209856036100, 0.009407207655336316, 0.009457205431118511, 0.009507203183257693, 0.009557200911629312, +0.009607198616107484, 0.009657196296567659, 0.009707193952884843, 0.009757191584934488, 0.009807189192590708, 0.009857186775728957, 0.009907184334224238, 0.009957181867952003, +0.010007179376786367, 0.010057176860602784, 0.010107174319276260, 0.010157171752682244, 0.010207169160694854, 0.010257166543189540, 0.010307163900041756, 0.010357161231125615, +0.010407158536316574, 0.010457155815489635, 0.010507153068520252, 0.010557150295282541, 0.010607147495651954, 0.010657144669503498, 0.010707141816712626, 0.010757138937153455, +0.010807136030701436, 0.010857133097231577, 0.010907130136619330, 0.010957127148738812, 0.011007124133465478, 0.011057121090674332, 0.011107118020240829, 0.011157114922039087, +0.011207111795944556, 0.011257108641832247, 0.011307105459577610, 0.011357102249054764, 0.011407099010139164, 0.011457095742706260, 0.011507092446630172, 0.011557089121786353, +0.011607085768049813, 0.011657082385296001, 0.011707078973399039, 0.011757075532234380, 0.011807072061677032, 0.011857068561602449, 0.011907065031884750, 0.011957061472399387, +0.012007057883021371, 0.012057054263626155, 0.012107050614087858, 0.012157046934281936, 0.012207043224083397, 0.012257039483367692, 0.012307035712008946, 0.012357031909882609, +0.012407028076864139, 0.012457024212827652, 0.012507020317648606, 0.012557016391202009, 0.012607012433363315, 0.012657008444006645, 0.012707004423007455, 0.012757000370240754, +0.012806996285581995, 0.012856992168905302, 0.012906988020086128, 0.012956983838999486, 0.013006979625520826, 0.013056975379524275, 0.013106971100885283, 0.013156966789478865, +0.013206962445180475, 0.013256958067864233, 0.013306953657405597, 0.013356949213680020, 0.013406944736561626, 0.013456940225925871, 0.013506935681647764, 0.013556931103602763, +0.013606926491664990, 0.013656921845709900, 0.013706917165612507, 0.013756912451248264, 0.013806907702491296, 0.013856902919217059, 0.013906898101300564, 0.013956893248617269, +0.014006888361041296, 0.014056883438448102, 0.014106878480712700, 0.014156873487710546, 0.014206868459315763, 0.014256863395403810, 0.014306858295850142, 0.014356853160528885, +0.014406847989315495, 0.014456842782084983, 0.014506837538712810, 0.014556832259073098, 0.014606826943041308, 0.014656821590492449, 0.014706816201301980, 0.014756810775344026, +0.014806805312494044, 0.014856799812627051, 0.014906794275618501, 0.014956788701342523, 0.015006783089674571, 0.015056777440489662, 0.015106771753663255, 0.015156766029069473, +0.015206760266583777, 0.015256754466081180, 0.015306748627437141, 0.015356742750525785, 0.015406736835222574, 0.015456730881402963, 0.015506724888941083, 0.015556718857712390, +0.015606712787591900, 0.015656706678455069, 0.015706700530176032, 0.015756694342630242, 0.015806688115692715, 0.015856681849238913, 0.015906675543142960, 0.015956669197280320, +0.016006662811526007, 0.016056656385755482, 0.016106649919842873, 0.016156643413663636, 0.016206636867092790, 0.016256630280005797, 0.016306623652276787, 0.016356616983781214, +0.016406610274394547, 0.016456603523990906, 0.016506596732445759, 0.016556589899634117, 0.016606583025431446, 0.016656576109711874, 0.016706569152350862, 0.016756562153223426, +0.016806555112205031, 0.016856548029169801, 0.016906540903993204, 0.016956533736550251, 0.017006526526716411, 0.017056519274365810, 0.017106511979373910, 0.017156504641615729, +0.017206497260966732, 0.017256489837301048, 0.017306482370494140, 0.017356474860421470, 0.017406467306957166, 0.017456459709976696, 0.017506452069355076, 0.017556444384967770, +0.017606436656688911, 0.017656428884393959, 0.017706421067957934, 0.017756413207256301, 0.017806405302163191, 0.017856397352554065, 0.017906389358303951, 0.017956381319288305, +0.018006373235381259, 0.018056365106458284, 0.018106356932394395, 0.018156348713065058, 0.018206340448344405, 0.018256332138107900, 0.018306323782230564, 0.018356315380587865, +0.018406306933053930, 0.018456298439504231, 0.018506289899814229, 0.018556281313858058, 0.018606272681511184, 0.018656264002648627, 0.018706255277145856, 0.018756246504877002, +0.018806237685717531, 0.018856228819542468, 0.018906219906227276, 0.018956210945646090, 0.019006201937674376, 0.019056192882187156, 0.019106183779059899, 0.019156174628166739, +0.019206165429383144, 0.019256156182584132, 0.019306146887645176, 0.019356137544440408, 0.019406128152845297, 0.019456118712735310, 0.019506109223984578, 0.019556099686468577, +0.019606090100062326, 0.019656080464641294, 0.019706070780079618, 0.019756061046252764, 0.019806051263035755, 0.019856041430304065, 0.019906031547931826, 0.019956021615794507, +0.020006011633767137, 0.020056001601725180, 0.020105991519542774, 0.020155981387095390, 0.020205971204258055, 0.020255960970906234, 0.020305950686914067, 0.020355940352157022, +0.020405929966510569, 0.020455919529848852, 0.020505909042047330, 0.020555898502981042, 0.020605887912525447, 0.020655877270554689, 0.020705866576944239, 0.020755855831569123, +0.020805845034304809, 0.020855834185025440, 0.020905823283606486, 0.020955812329922975, 0.021005801323850375, 0.021055790265262827, 0.021105779154035803, 0.021155767990044334, +0.021205756773163886, 0.021255745503268607, 0.021305734180233959, 0.021355722803935422, 0.021405711374247134, 0.021455699891044566, 0.021505688354202749, 0.021555676763597157, +0.021605665119101929, 0.021655653420592537, 0.021705641667944010, 0.021755629861031824, 0.021805617999730121, 0.021855606083914372, 0.021905594113459607, 0.021955582088241301, +0.022005570008133593, 0.022055557873011965, 0.022105545682751439, 0.022155533437227495, 0.022205521136314271, 0.022255508779887245, 0.022305496367821448, 0.022355483899992354, +0.022405471376274109, 0.022455458796542180, 0.022505446160672050, 0.022555433468537861, 0.022605420720015090, 0.022655407914978765, 0.022705395053304368, 0.022755382134866033, +0.022805369159539249, 0.022855356127199036, 0.022905343037720880, 0.022955329890978923, 0.023005316686848642, 0.023055303425205068, 0.023105290105923677, 0.023155276728878620, +0.023205263293945372, 0.023255249800998964, 0.023305236249914874, 0.023355222640567250, 0.023405208972831573, 0.023455195246583314, 0.023505181461696622, 0.023555167618046980, +0.023605153715509416, 0.023655139753959414, 0.023705125733271118, 0.023755111653320005, 0.023805097513981115, 0.023855083315129925, 0.023905069056640586, 0.023955054738388569, +0.024005040360248919, 0.024055025922097111, 0.024105011423807294, 0.024154996865254946, 0.024204982246315107, 0.024254967566863260, 0.024304952826773547, 0.024354938025921452, +0.024404923164182458, 0.024454908241430710, 0.024504893257541693, 0.024554878212390441, 0.024604863105852439, 0.024654847937801833, 0.024704832708114109, 0.024754817416664302, +0.024804802063327899, 0.024854786647979042, 0.024904771170493223, 0.024954755630745472, 0.025004740028611278, 0.025054724363964789, 0.025104708636681492, 0.025154692846636420, +0.025204676993705061, 0.025254661077761566, 0.025304645098681418, 0.025354629056339659, 0.025404612950611770, 0.025454596781371904, 0.025504580548495547, 0.025554564251858179, +0.025604547891333960, 0.025654531466798372, 0.025704514978126453, 0.025754498425193690, 0.025804481807874240, 0.025854465126043585, 0.025904448379576766, 0.025954431568349270, +0.026004414692235252, 0.026054397751110195, 0.026104380744849144, 0.026154363673327588, 0.026204346536419676, 0.026254329334000900, 0.026304312065946300, 0.026354294732131363, +0.026404277332430247, 0.026454259866718434, 0.026504242334871420, 0.026554224736763353, 0.026604207072269726, 0.026654189341265580, 0.026704171543626403, 0.026754153679226355, +0.026804135747940924, 0.026854117749645152, 0.026904099684214530, 0.026954081551523217, 0.027004063351446696, 0.027054045083860022, 0.027104026748638675, 0.027154008345656819, +0.027203989874789940, 0.027253971335913087, 0.027303952728901751, 0.027353934053630090, 0.027403915309973593, 0.027453896497807748, 0.027503877617006723, 0.027553858667446002, +0.027603839649000633, 0.027653820561546111, 0.027703801404956593, 0.027753782179107570, 0.027803762883874095, 0.027853743519131655, 0.027903724084754410, 0.027953704580617859, +0.028003685006597043, 0.028053665362567461, 0.028103645648403269, 0.028153625863979966, 0.028203606009172596, 0.028253586083856655, 0.028303566087906306, 0.028353546021197041, +0.028403525883604355, 0.028453505675002412, 0.028503485395266703, 0.028553465044272280, 0.028603444621894639, 0.028653424128007941, 0.028703403562487687, 0.028753382925208921, +0.028803362216047141, 0.028853341434876514, 0.028903320581572533, 0.028953299656010248, 0.029003278658065158, 0.029053257587611431, 0.029103236444524557, 0.029153215228679592, +0.029203193939952035, 0.029253172578216049, 0.029303151143347129, 0.029353129635220333, 0.029403108053711158, 0.029453086398693769, 0.029503064670043662, 0.029553042867636336, +0.029603020991345961, 0.029652999041048032, 0.029702977016617609, 0.029752954917930185, 0.029802932744859928, 0.029852910497282344, 0.029902888175072480, 0.029952865778105839, +0.030002843306256591, 0.030052820759400235, 0.030102798137411828, 0.030152775440166868, 0.030202752667539527, 0.030252729819405303, 0.030302706895639252, 0.030352683896116880, +0.030402660820712357, 0.030452637669301178, 0.030502614441758853, 0.030552591137959544, 0.030602567757778761, 0.030652544301091555, 0.030702520767773432, 0.030752497157698566, +0.030802473470742456, 0.030852449706780163, 0.030902425865687186, 0.030952401947337706, 0.031002377951607218, 0.031052353878370784, 0.031102329727503913, 0.031152305498880772, +0.031202281192376866, 0.031252256807867258, 0.031302232345227450, 0.031352207804331622, 0.031402183185055270, 0.031452158487273903, 0.031502133710861698, 0.031552108855694164, +0.031602083921646353, 0.031652058908593773, 0.031702033816410603, 0.031752008644972352, 0.031801983394154076, 0.031851958063831287, 0.031901932653878161, 0.031951907164170200, +0.032001881594582476, 0.032051855944990486, 0.032101830215268419, 0.032151804405291771, 0.032201778514935615, 0.032251752544075453, 0.032301726492585468, 0.032351700360341164, +0.032401674147217611, 0.032451647853090321, 0.032501621477833462, 0.032551595021322551, 0.032601568483433097, 0.032651541864039277, 0.032701515163016601, 0.032751488380240140, +0.032801461515585398, 0.032851434568926564, 0.032901407540139142, 0.032951380429098197, 0.033001353235679251, 0.033051325959756475, 0.033101298601205378, 0.033151271159901040, +0.033201243635718969, 0.033251216028533349, 0.033301188338219684, 0.033351160564653044, 0.033401132707708954, 0.033451104767261583, 0.033501076743186455, 0.033551048635359078, +0.033601020443653630, 0.033650992167945634, 0.033700963808110163, 0.033750935364022717, 0.033800906835557497, 0.033850878222590003, 0.033900849524995322, 0.033950820742648956, +0.034000791875425096, 0.034050762923199251, 0.034100733885846501, 0.034150704763242362, 0.034200675555261018, 0.034250646261777984, 0.034300616882668333, 0.034350587417807589, +0.034400557867069928, 0.034450528230330874, 0.034500498507465942, 0.034550468698349317, 0.034600438802856522, 0.034650408820862635, 0.034700378752243168, 0.034750348596872302, +0.034800318354625576, 0.034850288025378047, 0.034900257609005246, 0.034950227105381357, 0.035000196514381895, 0.035050165835881948, 0.035100135069757024, 0.035150104215881321, +0.035200073274130363, 0.035250042244379214, 0.035300011126503404, 0.035349979920377125, 0.035399948625875900, 0.035449917242875238, 0.035499885771249351, 0.035549854210873741, +0.035599822561623494, 0.035649790823374140, 0.035699758995999864, 0.035749727079376188, 0.035799695073378199, 0.035849662977881412, 0.035899630792760026, 0.035949598517889557, +0.035999566153145098, 0.036049533698402164, 0.036099501153534955, 0.036149468518418992, 0.036199435792929363, 0.036249402976941583, 0.036299370070329851, 0.036349337072969695, +0.036399303984736196, 0.036449270805504877, 0.036499237535149942, 0.036549204173546915, 0.036599170720571318, 0.036649137176097350, 0.036699103540000541, 0.036749069812155970, +0.036799035992439173, 0.036849002080724343, 0.036898968076887001, 0.036948933980802241, 0.036998899792345594, 0.037048865511391249, 0.037098831137814745, 0.037148796671491159, +0.037198762112296030, 0.037248727460103548, 0.037298692714789250, 0.037348657876228215, 0.037398622944295981, 0.037448587918866752, 0.037498552799816044, 0.037548517587019402, +0.037598482280351023, 0.037648446879686437, 0.037698411384900737, 0.037748375795869447, 0.037798340112466779, 0.037848304334568261, 0.037898268462048981, 0.037948232494784469, +0.037998196432648935, 0.038048160275517912, 0.038098124023266490, 0.038148087675770194, 0.038198051232903242, 0.038248014694541158, 0.038297978060559040, 0.038347941330832420, +0.038397904505235503, 0.038447867583643824, 0.038497830565932915, 0.038547793451976994, 0.038597756241651585, 0.038647718934831786, 0.038697681531393135, 0.038747644031209838, +0.038797606434157424, 0.038847568740110999, 0.038897530948946095, 0.038947493060536922, 0.038997455074759012, 0.039047416991487470, 0.039097378810597820, 0.039147340531964288, +0.039197302155462403, 0.039247263680967259, 0.039297225108354407, 0.039347186437498044, 0.039397147668273715, 0.039447108800556512, 0.039497069834221986, 0.039547030769144342, +0.039596991605199118, 0.039646952342261864, 0.039696912980206778, 0.039746873518909417, 0.039796833958244869, 0.039846794298088677, 0.039896754538315059, 0.039946714678799553, +0.039996674719417265, 0.040046634660043733, 0.040096594500553161, 0.040146554240821114, 0.040196513880722679, 0.040246473420133398, 0.040296432858927492, 0.040346392196980503, +0.040396351434167539, 0.040446310570364137, 0.040496269605444515, 0.040546228539284218, 0.040596187371758789, 0.040646146102742454, 0.040696104732110758, 0.040746063259738792, +0.040796021685502115, 0.040845980009274939, 0.040895938230932814, 0.040945896350350841, 0.040995854367404570, 0.041045812281968228, 0.041095770093917343, 0.041145727803127044, +0.041195685409472861, 0.041245642912829027, 0.041295600313071078, 0.041345557610074135, 0.041395514803713743, 0.041445471893864112, 0.041495428880400809, 0.041545385763199376, +0.041595342542134033, 0.041645299217080337, 0.041695255787913388, 0.041745212254508744, 0.041795168616740631, 0.041845124874484593, 0.041895081027615744, 0.041945037076009634, +0.041994993019540489, 0.042044948858083860, 0.042094904591514860, 0.042144860219709042, 0.042194815742540630, 0.042244771159885175, 0.042294726471617798, 0.042344681677614043, +0.042394636777748143, 0.042444591771895655, 0.042494546659932124, 0.042544501441731788, 0.042594456117170200, 0.042644410686122465, 0.042694365148464149, 0.042744319504069483, +0.042794273752814013, 0.042844227894572859, 0.042894181929221578, 0.042944135856634397, 0.042994089676686879, 0.043044043389254140, 0.043093996994211729, 0.043143950491433887, +0.043193903880796164, 0.043243857162173688, 0.043293810335442010, 0.043343763400475362, 0.043393716357149302, 0.043443669205338958, 0.043493621944919882, 0.043543574575766304, +0.043593527097753798, 0.043643479510757907, 0.043693431814652885, 0.043743384009314275, 0.043793336094617205, 0.043843288070437240, 0.043893239936648613, 0.043943191693126889, +0.043993143339747180, 0.044043094876385060, 0.044093046302914753, 0.044142997619211838, 0.044192948825151422, 0.044242899920609084, 0.044292850905459050, 0.044342801779576890, +0.044392752542837727, 0.044442703195117124, 0.044492653736289314, 0.044542604166229877, 0.044592554484814369, 0.044642504691917037, 0.044692454787413440, 0.044742404771178704, +0.044792354643088401, 0.044842304403016765, 0.044892254050839374, 0.044942203586431341, 0.044992153009668252, 0.045042102320424326, 0.045092051518575156, 0.045142000603995848, +0.045191949576561988, 0.045241898436147801, 0.045291847182628880, 0.045341795815880333, 0.045391744335777744, 0.045441692742195346, 0.045491641035008724, 0.045541589214093438, +0.045591537279323732, 0.045641485230575186, 0.045691433067722928, 0.045741380790642536, 0.045791328399208242, 0.045841275893295626, 0.045891223272779821, 0.045941170537536401, +0.045991117687439617, 0.046041064722365035, 0.046091011642187790, 0.046140958446783460, 0.046190905136026292, 0.046240851709791857, 0.046290798167955297, 0.046340744510392183, +0.046390690736976763, 0.046440636847584621, 0.046490582842090886, 0.046540528720371135, 0.046590474482299617, 0.046640420127751915, 0.046690365656603609, 0.046740311068728939, +0.046790256364003496, 0.046840201542302409, 0.046890146603501263, 0.046940091547474312, 0.046990036374097127, 0.047039981083244850, 0.047089925674793066, 0.047139870148616023, +0.047189814504589311, 0.047239758742588053, 0.047289702862487848, 0.047339646864162942, 0.047389590747488913, 0.047439534512340918, 0.047489478158594521, 0.047539421686123989, +0.047589365094804902, 0.047639308384512843, 0.047689251555122075, 0.047739194606508176, 0.047789137538546286, 0.047839080351112000, 0.047889023044079569, 0.047938965617324580, +0.047988908070722182, 0.048038850404147952, 0.048088792617476152, 0.048138734710582373, 0.048188676683341758, 0.048238618535629892, 0.048288560267321035, 0.048338501878290779, +0.048388443368414268, 0.048438384737567092, 0.048488325985623512, 0.048538267112459121, 0.048588208117949498, 0.048638149001968917, 0.048688089764392962, 0.048738030405096777, +0.048787970923955967, 0.048837911320844786, 0.048887851595638819, 0.048937791748213229, 0.048987731778443601, 0.049037671686204203, 0.049087611471370626, 0.049137551133818021, +0.049187490673421978, 0.049237430090056766, 0.049287369383597977, 0.049337308553920767, 0.049387247600900727, 0.049437186524412126, 0.049487125324330562, 0.049537064000531178, +0.049587002552889586, 0.049636940981280041, 0.049686879285578141, 0.049736817465659486, 0.049786755521398343, 0.049836693452670312, 0.049886631259350549, 0.049936568941314652, +0.049986506498436889, 0.050036443930592860, 0.050086381237657719, 0.050136318419507067, 0.050186255476015185, 0.050236192407057650, 0.050286129212509648, 0.050336065892246755, +0.050386002446143260, 0.050435938874074757, 0.050485875175916406, 0.050535811351543815, 0.050585747400831250, 0.050635683323654312, 0.050685619119888614, 0.050735554789408423, +0.050785490332089352, 0.050835425747806542, 0.050885361036435622, 0.050935296197850852, 0.050985231231927844, 0.051035166138541754, 0.051085100917568189, 0.051135035568881437, +0.051184970092357090, 0.051234904487870318, 0.051284838755296734, 0.051334772894510605, 0.051384706905387545, 0.051434640787802716, 0.051484574541631731, 0.051534508166748864, +0.051584441663029730, 0.051634375030349934, 0.051684308268583758, 0.051734241377606807, 0.051784174357294252, 0.051834107207521712, 0.051884039928163456, 0.051933972519095095, +0.051983904980191807, 0.052033837311329205, 0.052083769512381563, 0.052133701583224494, 0.052183633523733175, 0.052233565333783212, 0.052283497013248900, 0.052333428562005839, +0.052383359979929205, 0.052433291266894617, 0.052483222422776359, 0.052533153447450041, 0.052583084340791286, 0.052633015102674381, 0.052682945732974933, 0.052732876231568117, +0.052782806598329561, 0.052832736833133540, 0.052882666935855679, 0.052932596906371150, 0.052982526744555572, 0.053032456450283240, 0.053082386023429760, 0.053132315463870317, +0.053182244771480529, 0.053232173946134685, 0.053282102987708406, 0.053332031896076867, 0.053381960671115697, 0.053431889312699175, 0.053481817820702937, 0.053531746195002151, +0.053581674435472446, 0.053631602541988108, 0.053681530514424765, 0.053731458352658037, 0.053781386056562221, 0.053831313626012942, 0.053881241060885376, 0.053931168361055153, +0.053981095526396565, 0.054031022556785241, 0.054080949452096357, 0.054130876212205546, 0.054180802836987098, 0.054230729326316639, 0.054280655680069366, 0.054330581898120893, +0.054380507980345522, 0.054430433926618879, 0.054480359736816149, 0.054530285410812972, 0.054580210948483629, 0.054630136349703762, 0.054680061614348997, 0.054729986742293638, +0.054779911733413310, 0.054829836587583204, 0.054879761304678948, 0.054929685884574850, 0.054979610327146530, 0.055029534632269186, 0.055079458799818452, 0.055129382829668623, +0.055179306721695340, 0.055229230475773793, 0.055279154091779609, 0.055329077569587097, 0.055379000909071892, 0.055428924110109190, 0.055478847172574612, 0.055528770096342474, +0.055578692881288416, 0.055628615527288067, 0.055678538034215734, 0.055728460401947059, 0.055778382630357233, 0.055828304719321889, 0.055878226668715343, 0.055928148478413230, +0.055978070148290746, 0.056027991678223532, 0.056077913068085891, 0.056127834317753471, 0.056177755427101468, 0.056227676396005517, 0.056277597224339927, 0.056327517911980346, +0.056377438458801978, 0.056427358864680449, 0.056477279129490084, 0.056527199253106515, 0.056577119235404955, 0.056627039076261036, 0.056676958775549076, 0.056726878333144722, +0.056776797748923614, 0.056826717022760063, 0.056876636154529731, 0.056926555144107799, 0.056976473991369923, 0.057026392696190427, 0.057076311258444944, 0.057126229678008678, +0.057176147954757291, 0.057226066088565085, 0.057275984079307708, 0.057325901926860379, 0.057375819631098737, 0.057425737191897107, 0.057475654609131129, 0.057525571882676013, +0.057575489012407409, 0.057625405998199646, 0.057675322839928364, 0.057725239537469220, 0.057775156090696535, 0.057825072499485958, 0.057874988763712699, 0.057924904883252408, +0.057974820857979420, 0.058024736687769370, 0.058074652372497489, 0.058124567912039411, 0.058174483306269474, 0.058224398555063332, 0.058274313658296190, 0.058324228615843708, +0.058374143427580211, 0.058424058093381352, 0.058473972613122351, 0.058523886986678861, 0.058573801213925213, 0.058623715294737061, 0.058673629228990061, 0.058723543016558549, +0.058773456657318174, 0.058823370151144166, 0.058873283497912168, 0.058923196697496523, 0.058973109749772878, 0.059023022654616467, 0.059072935411902942, 0.059122848021506635, +0.059172760483303208, 0.059222672797167877, 0.059272584962976306, 0.059322496980602830, 0.059372408849923120, 0.059422320570812377, 0.059472232143146279, 0.059522143566799163, +0.059572054841646682, 0.059621965967564507, 0.059671876944426980, 0.059721787772109756, 0.059771698450488062, 0.059821608979437564, 0.059871519358832608, 0.059921429588548847, +0.059971339668461514, 0.060021249598446270, 0.060071159378377467, 0.060121069008130759, 0.060170978487581385, 0.060220887816605000, 0.060270796995075961, 0.060320706022869923, +0.060370614899862118, 0.060420523625928230, 0.060470432200942580, 0.060520340624780851, 0.060570248897318275, 0.060620157018430515, 0.060670064987991920, 0.060719972805878167, +0.060769880471964917, 0.060819787986126528, 0.060869695348238669, 0.060919602558176571, 0.060969509615815910, 0.061019416521031038, 0.061069323273697615, 0.061119229873690888, +0.061169136320886532, 0.061219042615158883, 0.061268948756383640, 0.061318854744436012, 0.061368760579191703, 0.061418666260525043, 0.061468571788311714, 0.061518477162426963, +0.061568382382746457, 0.061618287449144556, 0.061668192361496933, 0.061718097119679273, 0.061768001723565925, 0.061817906173032580, 0.061867810467954462, 0.061917714608207261, +0.061967618593665334, 0.062017522424204365, 0.062067426099699584, 0.062117329620026682, 0.062167232985060009, 0.062217136194675254, 0.062267039248747665, 0.062316942147152915, +0.062366844889765370, 0.062416747476460713, 0.062466649907114188, 0.062516552181601473, 0.062566454299796945, 0.062616356261576273, 0.062666258066815167, 0.062716159715387965, +0.062766061207170362, 0.062815962542037598, 0.062865863719865384, 0.062915764740528068, 0.062965665603901336, 0.063015566309860438, 0.063065466858281058, 0.063115367249037588, +0.063165267482005683, 0.063215167557060623, 0.063265067474078077, 0.063314967232932423, 0.063364866833499345, 0.063414766275654108, 0.063464665559272396, 0.063514564684228586, +0.063564463650398348, 0.063614362457656962, 0.063664261105880110, 0.063714159594942157, 0.063764057924718814, 0.063813956095085764, 0.063863854105917384, 0.063913751957089357, +0.063963649648476964, 0.064013547179955888, 0.064063444551400492, 0.064113341762686502, 0.064163238813689141, 0.064213135704284136, 0.064263032434345849, 0.064312929003749963, +0.064362825412371774, 0.064412721660086963, 0.064462617746769896, 0.064512513672296296, 0.064562409436541401, 0.064612305039380924, 0.064662200480689255, 0.064712095760342078, +0.064761990878215103, 0.064811885834182709, 0.064861780628120591, 0.064911675259904031, 0.064961569729408725, 0.065011464036509051, 0.065061358181080720, 0.065111252162998998, +0.065161145982139582, 0.065211039638376850, 0.065260933131586527, 0.065310826461643878, 0.065360719628424602, 0.065410612631803075, 0.065460505471655023, 0.065510398147855711, +0.065560290660280837, 0.065610183008804793, 0.065660075193303302, 0.065709967213652062, 0.065759859069725465, 0.065809750761399208, 0.065859642288548584, 0.065909533651049290, +0.065959424848775733, 0.066009315881603609, 0.066059206749408184, 0.066109097452065196, 0.066158987989449011, 0.066208878361435367, 0.066258768567899529, 0.066308658608717208, +0.066358548483762783, 0.066408438192912006, 0.066458327736040129, 0.066508217113022877, 0.066558106323734628, 0.066607995368051121, 0.066657884245848079, 0.066707772956999867, +0.066757661501382237, 0.066807549878870442, 0.066857438089340221, 0.066907326132665965, 0.066957214008723384, 0.067007101717387774, 0.067056989258534844, 0.067106876632039014, +0.067156763837775982, 0.067206650875621041, 0.067256537745449915, 0.067306424447136998, 0.067356310980558026, 0.067406197345588281, 0.067456083542103487, 0.067505969569978022, +0.067555855429087652, 0.067605741119307644, 0.067655626640513708, 0.067705511992580278, 0.067755397175383064, 0.067805282188797805, 0.067855167032698893, 0.067905051706962066, +0.067954936211462605, 0.068004820546076247, 0.068054704710677399, 0.068104588705141786, 0.068154472529344701, 0.068204356183161882, 0.068254239666467723, 0.068304122979137960, +0.068354006121047903, 0.068403889092073275, 0.068453771892088469, 0.068503654520969237, 0.068553536978590873, 0.068603419264829102, 0.068653301379558357, 0.068703183322654335, +0.068753065093992816, 0.068802946693448178, 0.068852828120896187, 0.068902709376212123, 0.068952590459271726, 0.069002471369949400, 0.069052352108120912, 0.069102232673661529, +0.069152113066447016, 0.069201993286351779, 0.069251873333251557, 0.069301753207021644, 0.069351632907537791, 0.069401512434674420, 0.069451391788307268, 0.069501270968311643, +0.069551149974563270, 0.069601028806936582, 0.069650907465307332, 0.069700785949551244, 0.069750664259542752, 0.069800542395157608, 0.069850420356271092, 0.069900298142758985, +0.069950175754495678, 0.070000053191356937, 0.070049930453218057, 0.070099807539954803, 0.070149684451441582, 0.070199561187554146, 0.070249437748167817, 0.070299314133158333, +0.070349190342400114, 0.070399066375768926, 0.070448942233140077, 0.070498817914389306, 0.070548693419391045, 0.070598568748021062, 0.070648443900154650, 0.070698318875667562, +0.070748193674434245, 0.070798068296330452, 0.070847942741231920, 0.070897817009013084, 0.070947691099549709, 0.070997565012717118, 0.071047438748391048, 0.071097312306445934, +0.071147185686757541, 0.071197058889201192, 0.071246931913652625, 0.071296804759986301, 0.071346677428077959, 0.071396549917802921, 0.071446422229036952, 0.071496294361654486, +0.071546166315531276, 0.071596038090542657, 0.071645909686564396, 0.071695781103470899, 0.071745652341137958, 0.071795523399441341, 0.071845394278255453, 0.071895264977456089, +0.071945135496918555, 0.071995005836518633, 0.072044875996130756, 0.072094745975630689, 0.072144615774893756, 0.072194485393795721, 0.072244354832211033, 0.072294224090015458, +0.072344093167084317, 0.072393962063293391, 0.072443830778517113, 0.072493699312631263, 0.072543567665511163, 0.072593435837032594, 0.072643303827069974, 0.072693171635499113, +0.072743039262195761, 0.072792906707034366, 0.072842773969890709, 0.072892641050640111, 0.072942507949158353, 0.072992374665319881, 0.073042241199000477, 0.073092107550075461, +0.073141973718420628, 0.073191839703910425, 0.073241705506420604, 0.073291571125826530, 0.073341436562003981, 0.073391301814827378, 0.073441166884172529, 0.073491031769914769, +0.073540896471929865, 0.073590760990092277, 0.073640625324277800, 0.073690489474362186, 0.073740353440219911, 0.073790217221726753, 0.073840080818758050, 0.073889944231189594, +0.073939807458895820, 0.073989670501752536, 0.074039533359635090, 0.074089396032419236, 0.074139258519979448, 0.074189120822191520, 0.074238982938930789, 0.074288844870073048, +0.074338706615492745, 0.074388568175065686, 0.074438429548667195, 0.074488290736173079, 0.074538151737457786, 0.074588012552397123, 0.074637873180866426, 0.074687733622741490, +0.074737593877896774, 0.074787453946208074, 0.074837313827551169, 0.074887173521800562, 0.074937033028832006, 0.074986892348520864, 0.075036751480742944, 0.075086610425372693, +0.075136469182285934, 0.075186327751357987, 0.075236186132464661, 0.075286044325480431, 0.075335902330281090, 0.075385760146742004, 0.075435617774738950, 0.075485475214146405, +0.075535332464840177, 0.075585189526695615, 0.075635046399588526, 0.075684903083393387, 0.075734759577985977, 0.075784615883242118, 0.075834471999036271, 0.075884327925244244, +0.075934183661741400, 0.075984039208403534, 0.076033894565105134, 0.076083749731721995, 0.076133604708129479, 0.076183459494203395, 0.076233314089818233, 0.076283168494849771, +0.076333022709173387, 0.076382876732664903, 0.076432730565198767, 0.076482584206650814, 0.076532437656896407, 0.076582290915811341, 0.076632143983270104, 0.076681996859148505, +0.076731849543322364, 0.076781702035666144, 0.076831554336055680, 0.076881406444366321, 0.076931258360473903, 0.076981110084252888, 0.077030961615579097, 0.077080812954327907, +0.077130664100375113, 0.077180515053595231, 0.077230365813864055, 0.077280216381056963, 0.077330066755049789, 0.077379916935716983, 0.077429766922934393, 0.077479616716577396, +0.077529466316521786, 0.077579315722642067, 0.077629164934814074, 0.077679013952913156, 0.077728862776815150, 0.077778711406394543, 0.077828559841527159, 0.077878408082088818, +0.077928256127954010, 0.077978103978998570, 0.078027951635097861, 0.078077799096127720, 0.078127646361962635, 0.078177493432478443, 0.078227340307550505, 0.078277186987054673, +0.078327033470865420, 0.078376879758858584, 0.078426725850909554, 0.078476571746894153, 0.078526417446686869, 0.078576262950163553, 0.078626108257199581, 0.078675953367670776, +0.078725798281451639, 0.078775642998418008, 0.078825487518445717, 0.078875331841409269, 0.078925175967184485, 0.078975019895646759, 0.079024863626671937, 0.079074707160134511, +0.079124550495910301, 0.079174393633874726, 0.079224236573903609, 0.079274079315871465, 0.079323921859654117, 0.079373764205126957, 0.079423606352165846, 0.079473448300645261, +0.079523290050441064, 0.079573131601428634, 0.079622972953483820, 0.079672814106481138, 0.079722655060296410, 0.079772495814805500, 0.079822336369882896, 0.079872176725404462, +0.079922016881245575, 0.079971856837282099, 0.080021696593388522, 0.080071536149440722, 0.080121375505314077, 0.080171214660884421, 0.080221053616026300, 0.080270892370615549, +0.080320730924527559, 0.080370569277638179, 0.080420407429821941, 0.080470245380954694, 0.080520083130911815, 0.080569920679569182, 0.080619758026801311, 0.080669595172484024, +0.080719432116493212, 0.080769268858703364, 0.080819105398990357, 0.080868941737229569, 0.080918777873296877, 0.080968613807066811, 0.081018449538415194, 0.081068285067217458, +0.081118120393349452, 0.081167955516685708, 0.081217790437102061, 0.081267625154473944, 0.081317459668677219, 0.081367293979586391, 0.081417128087077323, 0.081466961991025447, +0.081516795691306598, 0.081566629187795323, 0.081616462480367483, 0.081666295568898470, 0.081716128453264175, 0.081765961133339116, 0.081815793608999141, 0.081865625880120127, +0.081915457946576620, 0.081965289808244454, 0.082015121464999077, 0.082064952916716324, 0.082114784163270754, 0.082164615204538216, 0.082214446040394157, 0.082264276670714412, +0.082314107095373540, 0.082363937314247390, 0.082413767327211410, 0.082463597134141448, 0.082513426734912049, 0.082563256129399076, 0.082613085317477977, 0.082662914299024601, +0.082712743073913492, 0.082762571642020527, 0.082812400003221584, 0.082862228157391193, 0.082912056104405232, 0.082961883844139134, 0.083011711376468761, 0.083061538701268672, +0.083111365818414731, 0.083161192727782385, 0.083211019429247496, 0.083260845922684623, 0.083310672207969616, 0.083360498284977949, 0.083410324153585472, 0.083460149813666729, +0.083509975265097625, 0.083559800507753579, 0.083609625541510482, 0.083659450366242866, 0.083709274981826634, 0.083759099388137651, 0.083808923585050488, 0.083858747572441009, +0.083908571350184646, 0.083958394918157320, 0.084008218276233559, 0.084058041424289243, 0.084107864362199830, 0.084157687089841199, 0.084207509607087908, 0.084257331913815833, +0.084307154009900437, 0.084356975895217609, 0.084406797569641881, 0.084456619033049171, 0.084506440285314899, 0.084556261326314983, 0.084606082155923967, 0.084655902774017744, +0.084705723180471773, 0.084755543375161918, 0.084805363357962779, 0.084855183128750220, 0.084905002687400158, 0.084954822033787139, 0.085004641167787068, 0.085054460089275391, +0.085104278798128014, 0.085154097294219480, 0.085203915577425723, 0.085253733647622162, 0.085303551504684716, 0.085353369148487956, 0.085403186578907761, 0.085453003795819604, +0.085502820799099377, 0.085552637588621666, 0.085602454164262348, 0.085652270525896898, 0.085702086673401220, 0.085751902606649888, 0.085801718325518792, 0.085851533829883836, +0.085901349119619608, 0.085951164194602012, 0.086000979054706495, 0.086050793699808989, 0.086100608129784040, 0.086150422344507580, 0.086200236343855055, 0.086250050127702399, +0.086299863695924156, 0.086349677048396259, 0.086399490184994182, 0.086449303105593817, 0.086499115810069735, 0.086548928298297884, 0.086598740570153709, 0.086648552625513117, +0.086698364464250707, 0.086748176086242385, 0.086797987491364054, 0.086847798679490329, 0.086897609650497101, 0.086947420404259845, 0.086997230940654480, 0.087047041259555605, +0.087096851360839111, 0.087146661244380502, 0.087196470910055682, 0.087246280357739237, 0.087296089587307099, 0.087345898598634730, 0.087395707391598049, 0.087445515966071669, +0.087495324321931495, 0.087545132459053016, 0.087594940377312150, 0.087644748076583484, 0.087694555556742937, 0.087744362817666469, 0.087794169859228624, 0.087843976681305377, +0.087893783283772176, 0.087943589666504965, 0.087993395829378332, 0.088043201772268209, 0.088093007495050085, 0.088142812997599893, 0.088192618279792218, 0.088242423341502993, +0.088292228182607721, 0.088342032802982307, 0.088391837202501378, 0.088441641381040853, 0.088491445338476221, 0.088541249074683429, 0.088591052589537062, 0.088640855882913067, +0.088690658954686932, 0.088740461804734591, 0.088790264432930657, 0.088840066839151063, 0.088889869023271742, 0.088939670985167307, 0.088989472724713692, 0.089039274241786398, +0.089089075536261358, 0.089138876608013187, 0.089188677456917817, 0.089238478082850764, 0.089288278485687961, 0.089338078665304008, 0.089387878621574865, 0.089437678354376021, +0.089487477863583437, 0.089537277149071698, 0.089587076210716779, 0.089636875048394168, 0.089686673661979813, 0.089736472051348326, 0.089786270216375655, 0.089836068156937759, +0.089885865872909240, 0.089935663364166071, 0.089985460630583741, 0.090035257672038196, 0.090085054488404065, 0.090134851079557293, 0.090184647445373398, 0.090234443585728324, +0.090284239500496716, 0.090334035189554490, 0.090383830652777178, 0.090433625890040739, 0.090483420901219788, 0.090533215686190285, 0.090583010244827747, 0.090632804577008119, +0.090682598682606044, 0.090732392561497469, 0.090782186213558352, 0.090831979638663338, 0.090881772836688371, 0.090931565807508968, 0.090981358551001090, 0.091031151067039379, +0.091080943355499794, 0.091130735416257838, 0.091180527249189500, 0.091230318854169393, 0.091280110231073491, 0.091329901379777312, 0.091379692300156815, 0.091429482992086655, +0.091479273455442781, 0.091529063690100734, 0.091578853695936463, 0.091628643472824622, 0.091678433020641159, 0.091728222339261617, 0.091778011428561970, 0.091827800288416847, +0.091877588918702222, 0.091927377319294068, 0.091977165490067042, 0.092026953430897090, 0.092076741141659743, 0.092126528622231002, 0.092176315872485495, 0.092226102892299197, +0.092275889681547638, 0.092325676240106805, 0.092375462567851327, 0.092425248664657206, 0.092475034530399958, 0.092524820164955557, 0.092574605568198673, 0.092624390740005266, +0.092674175680250895, 0.092723960388811519, 0.092773744865561808, 0.092823529110377723, 0.092873313123135265, 0.092923096903709076, 0.092972880451975159, 0.093022663767809030, +0.093072446851086690, 0.093122229701682782, 0.093172012319473307, 0.093221794704333796, 0.093271576856140237, 0.093321358774767299, 0.093371140460090971, 0.093420921911986782, +0.093470703130330735, 0.093520484114997485, 0.093570264865863020, 0.093620045382802899, 0.093669825665693110, 0.093719605714408322, 0.093769385528824509, 0.093819165108817673, +0.093868944454262485, 0.093918723565034931, 0.093968502441010571, 0.094018281082065405, 0.094068059488074077, 0.094117837658912615, 0.094167615594456550, 0.094217393294581897, +0.094267170759163313, 0.094316947988076813, 0.094366724981197928, 0.094416501738402672, 0.094466278259565731, 0.094516054544563091, 0.094565830593270311, 0.094615606405563407, +0.094665381981317034, 0.094715157320407209, 0.094764932422709933, 0.094814707288099875, 0.094864481916453067, 0.094914256307645037, 0.094964030461551815, 0.095013804378048086, +0.095063578057009823, 0.095113351498312640, 0.095163124701832497, 0.095212897667444119, 0.095262670395023494, 0.095312442884446180, 0.095362215135588208, 0.095411987148324259, +0.095461758922530338, 0.095511530458082028, 0.095561301754855332, 0.095611072812724934, 0.095660843631566850, 0.095710614211256664, 0.095760384551670394, 0.095810154652682708, +0.095859924514169637, 0.095909694136007195, 0.095959463518070082, 0.096009232660234298, 0.096059001562375443, 0.096108770224369519, 0.096158538646091238, 0.096208306827416601, +0.096258074768221208, 0.096307842468381061, 0.096357609927770871, 0.096407377146266654, 0.096457144123743982, 0.096506910860078912, 0.096556677355146114, 0.096606443608821618, +0.096656209620981023, 0.096705975391500332, 0.096755740920254268, 0.096805506207118863, 0.096855271251970118, 0.096905036054682758, 0.096954800615132813, 0.097004564933195855, +0.097054329008747942, 0.097104092841663756, 0.097153856431819341, 0.097203619779090283, 0.097253382883352613, 0.097303145744481054, 0.097352908362351623, 0.097402670736839919, +0.097452432867821986, 0.097502194755172536, 0.097551956398767584, 0.097601717798482743, 0.097651478954194057, 0.097701239865776224, 0.097751000533105301, 0.097800760956057317, +0.097850521134506985, 0.097900281068330347, 0.097950040757403017, 0.097999800201601012, 0.098049559400799083, 0.098099318354873233, 0.098149077063699103, 0.098198835527152722, +0.098248593745108803, 0.098298351717443402, 0.098348109444032134, 0.098397866924751012, 0.098447624159474806, 0.098497381148079516, 0.098547137890440784, 0.098596894386434653, +0.098646650635935834, 0.098696406638820400, 0.098746162394963949, 0.098795917904242525, 0.098845673166530867, 0.098895428181705033, 0.098945182949641067, 0.098994937470213692, +0.099044691743298982, 0.099094445768772535, 0.099144199546510423, 0.099193953076387370, 0.099243706358279435, 0.099293459392062244, 0.099343212177611828, 0.099392964714802953, +0.099442717003511663, 0.099492469043613571, 0.099542220834984763, 0.099591972377499949, 0.099641723671035201, 0.099691474715466161, 0.099741225510668857, 0.099790976056518058, +0.099840726352889819, 0.099890476399660214, 0.099940226196703966, 0.099989975743897147, 0.100039725041115400, 0.100089474088234780, 0.100139222885130020, 0.100188971431677220, +0.100238719727751990, 0.100288467773230390, 0.100338215567987190, 0.100387963111898450, 0.100437710404839800, 0.100487457446687310, 0.100537204237315740, 0.100586950776601170, +0.100636697064419200, 0.100686443100645950, 0.100736188885156130, 0.100785934417825860, 0.100835679698531190, 0.100885424727146870, 0.100935169503549000, 0.100984914027613200, +0.101034658299215550, 0.101084402318230820, 0.101134146084535080, 0.101183889598003980, 0.101233632858513600, 0.101283375865938690, 0.101333118620155340, 0.101382861121039200, +0.101432603368466340, 0.101482345362311540, 0.101532087102450870, 0.101581828588759980, 0.101631569821114970, 0.101681310799390580, 0.101731051523462930, 0.101780791993208080, +0.101830532208500820, 0.101880272169217220, 0.101930011875232930, 0.101979751326424060, 0.102029490522665380, 0.102079229463832970, 0.102128968149802480, 0.102178706580450020, +0.102228444755650350, 0.102278182675279560, 0.102327920339213310, 0.102377657747327720, 0.102427394899497540, 0.102477131795598860, 0.102526868435507360, 0.102576604819099120, +0.102626340946248940, 0.102676076816832900, 0.102725812430726660, 0.102775547787806340, 0.102825282887946720, 0.102875017731023880, 0.102924752316913930, 0.102974486645491680, +0.103024220716633200, 0.103073954530214160, 0.103123688086110680, 0.103173421384197550, 0.103223154424350860, 0.103272887206446280, 0.103322619730359930, 0.103372351995966570, +0.103422084003142360, 0.103471815751762920, 0.103521547241704380, 0.103571278472841550, 0.103621009445050510, 0.103670740158206940, 0.103720470612186980, 0.103770200806865390, +0.103819930742118300, 0.103869660417821820, 0.103919389833850750, 0.103969118990081210, 0.104018847886388880, 0.104068576522649850, 0.104118304898738950, 0.104168033014532290, +0.104217760869905540, 0.104267488464734840, 0.104317215798894970, 0.104366942872262060, 0.104416669684711790, 0.104466396236120290, 0.104516122526362370, 0.104565848555314130, +0.104615574322851280, 0.104665299828849920, 0.104715025073184880, 0.104764750055732270, 0.104814474776368240, 0.104864199234967560, 0.104913923431406400, 0.104963647365560420, +0.105013371037305780, 0.105063094446517260, 0.105112817593071010, 0.105162540476842700, 0.105212263097708490, 0.105261985455543190, 0.105311707550222910, 0.105361429381623360, +0.105411150949620700, 0.105460872254089700, 0.105510593294906530, 0.105560314071946880, 0.105610034585086870, 0.105659754834201360, 0.105709474819166440, 0.105759194539857840, +0.105808913996151690, 0.105858633187922810, 0.105908352115047360, 0.105958070777401460, 0.106007789174859950, 0.106057507307298970, 0.106107225174594210, 0.106156942776621840, +0.106206660113256660, 0.106256377184374850, 0.106306093989852080, 0.106355810529564510, 0.106405526803386980, 0.106455242811195640, 0.106504958552866190, 0.106554674028274790, +0.106604389237296250, 0.106654104179806750, 0.106703818855681980, 0.106753533264798110, 0.106803247407029960, 0.106852961282253690, 0.106902674890345470, 0.106952388231180110, +0.107002101304633790, 0.107051814110582210, 0.107101526648901530, 0.107151238919466610, 0.107200950922153580, 0.107250662656838180, 0.107300374123396550, 0.107350085321703550, +0.107399796251635340, 0.107449506913067640, 0.107499217305876610, 0.107548927429937100, 0.107598637285125270, 0.107648346871316840, 0.107698056188388000, 0.107747765236213570, +0.107797474014669730, 0.107847182523632640, 0.107896890762977150, 0.107946598732579450, 0.107996306432315240, 0.108046013862060700, 0.108095721021690700, 0.108145427911081380, +0.108195134530108500, 0.108244840878648220, 0.108294546956575410, 0.108344252763766220, 0.108393958300096390, 0.108443663565442120, 0.108493368559678250, 0.108543073282680950, +0.108592777734325980, 0.108642481914489500, 0.108692185823046360, 0.108741889459872770, 0.108791592824844460, 0.108841295917837600, 0.108890998738727070, 0.108940701287389030, +0.108990403563699680, 0.109040105567533890, 0.109089807298767840, 0.109139508757277250, 0.109189209942938350, 0.109238910855625980, 0.109288611495216320, 0.109338311861585140, +0.109388011954608620, 0.109437711774161630, 0.109487411320120370, 0.109537110592360570, 0.109586809590758440, 0.109636508315188840, 0.109686206765527970, 0.109735904941651590, +0.109785602843435890, 0.109835300470755720, 0.109884997823487320, 0.109934694901506850, 0.109984391704689220, 0.110034088232910610, 0.110083784486046780, 0.110133480463973910, +0.110183176166566920, 0.110232871593701970, 0.110282566745254860, 0.110332261621101770, 0.110381956221117570, 0.110431650545178490, 0.110481344593160280, 0.110531038364939160, +0.110580731860390000, 0.110630425079389000, 0.110680118021811950, 0.110729810687535040, 0.110779503076433170, 0.110829195188382520, 0.110878887023259350, 0.110928578580938510, +0.110978269861296220, 0.111027960864208260, 0.111077651589550840, 0.111127342037198850, 0.111177032207028500, 0.111226722098915570, 0.111276411712736280, 0.111326101048365520, +0.111375790105679500, 0.111425478884554010, 0.111475167384865260, 0.111524855606488160, 0.111574543549298910, 0.111624231213173300, 0.111673918597987570, 0.111723605703616590, +0.111773292529936600, 0.111822979076823810, 0.111872665344153150, 0.111922351331800810, 0.111972037039642610, 0.112021722467554740, 0.112071407615412120, 0.112121092483090990, +0.112170777070467130, 0.112220461377416770, 0.112270145403814820, 0.112319829149537490, 0.112369512614460600, 0.112419195798460370, 0.112468878701411700, 0.112518561323190840, +0.112568243663673570, 0.112617925722736140, 0.112667607500253450, 0.112717288996101740, 0.112766970210156820, 0.112816651142294900, 0.112866331792390930, 0.112916012160321110, +0.112965692245961720, 0.113015372049187640, 0.113065051569875130, 0.113114730807900010, 0.113164409763138490, 0.113214088435465500, 0.113263766824757310, 0.113313444930889680, +0.113363122753738890, 0.113412800293179850, 0.113462477549088810, 0.113512154521341570, 0.113561831209814390, 0.113611507614382200, 0.113661183734921230, 0.113710859571307300, +0.113760535123416680, 0.113810210391124250, 0.113859885374306320, 0.113909560072839100, 0.113959234486597550, 0.114008908615457910, 0.114058582459296010, 0.114108256017988070, +0.114157929291409070, 0.114207602279435240, 0.114257274981942410, 0.114306947398806830, 0.114356619529903430, 0.114406291375108490, 0.114455962934297830, 0.114505634207347690, +0.114555305194133030, 0.114604975894530100, 0.114654646308414740, 0.114704316435663200, 0.114753986276150440, 0.114803655829752700, 0.114853325096346270, 0.114902994075806080, +0.114952662768008400, 0.115002331172829070, 0.115051999290144360, 0.115101667119829190, 0.115151334661759880, 0.115201001915812220, 0.115250668881862490, 0.115300335559785650, +0.115350001949457980, 0.115399668050755300, 0.115449333863553880, 0.115498999387728700, 0.115548664623156020, 0.115598329569711670, 0.115647994227271940, 0.115697658595711790, +0.115747322674907490, 0.115796986464734880, 0.115846649965070240, 0.115896313175788550, 0.115945976096766060, 0.115995638727879090, 0.116045301069002570, 0.116094963120012790, +0.116144624880785610, 0.116194286351197320, 0.116243947531122850, 0.116293608420438520, 0.116343269019020190, 0.116392929326744110, 0.116442589343485270, 0.116492249069119950, +0.116541908503524010, 0.116591567646573750, 0.116641226498144110, 0.116690885058111410, 0.116740543326351500, 0.116790201302740690, 0.116839858987153920, 0.116889516379467500, +0.116939173479557730, 0.116988830287299590, 0.117038486802569370, 0.117088143025242940, 0.117137798955196590, 0.117187454592305300, 0.117237109936445370, 0.117286764987492670, +0.117336419745323510, 0.117386074209812840, 0.117435728380837000, 0.117485382258271830, 0.117535035841993650, 0.117584689131877430, 0.117634342127799500, 0.117683994829635710, +0.117733647237262370, 0.117783299350554480, 0.117832951169388330, 0.117882602693640260, 0.117932253923185220, 0.117981904857899560, 0.118031555497659130, 0.118081205842340260, +0.118130855891817930, 0.118180505645968460, 0.118230155104667740, 0.118279804267792050, 0.118329453135216420, 0.118379101706817160, 0.118428749982470150, 0.118478397962051690, +0.118528045645436800, 0.118577693032501800, 0.118627340123122570, 0.118676986917175420, 0.118726633414535380, 0.118776279615078740, 0.118825925518681850, 0.118875571125219700, +0.118925216434568620, 0.118974861446604500, 0.119024506161203680, 0.119074150578241140, 0.119123794697593220, 0.119173438519135820, 0.119223082042745270, 0.119272725268296580, +0.119322368195666060, 0.119372010824729630, 0.119421653155363610, 0.119471295187443020, 0.119520936920844190, 0.119570578355443020, 0.119620219491115840, 0.119669860327737670, +0.119719500865184850, 0.119769141103333280, 0.119818781042059300, 0.119868420681237920, 0.119918060020745500, 0.119967699060458360, 0.120017337800251530, 0.120066976240001360, +0.120116614379583750, 0.120166252218875040, 0.120215889757750270, 0.120265526996085770, 0.120315163933757450, 0.120364800570641670, 0.120414436906613440, 0.120464072941549120, +0.120513708675324610, 0.120563344107816270, 0.120612979238899150, 0.120662614068449550, 0.120712248596343440, 0.120761882822457150, 0.120811516746665700, 0.120861150368845450, +0.120910783688872790, 0.120960416706622710, 0.121010049421971590, 0.121059681834795350, 0.121109313944970350, 0.121158945752371610, 0.121208577256875530, 0.121258208458358000, +0.121307839356695370, 0.121357469951762720, 0.121407100243436390, 0.121456730231592310, 0.121506359916106840, 0.121555989296855040, 0.121605618373713250, 0.121655247146557440, +0.121704875615263930, 0.121754503779707800, 0.121804131639765400, 0.121853759195313130, 0.121903386446226020, 0.121953013392380430, 0.122002640033652310, 0.122052266369918030, +0.122101892401052650, 0.122151518126932530, 0.122201143547433620, 0.122250768662432300, 0.122300393471803600, 0.122350017975423940, 0.122399642173169220, 0.122449266064915840, +0.122498889650538840, 0.122548512929914630, 0.122598135902919140, 0.122647758569428740, 0.122697380929318510, 0.122747002982464830, 0.122796624728743640, 0.122846246168031330, +0.122895867300202950, 0.122945488125134920, 0.122995108642703600, 0.123044728852784070, 0.123094348755252730, 0.123143968349985510, 0.123193587636858810, 0.123243206615747700, +0.123292825286528560, 0.123342443649077370, 0.123392061703270510, 0.123441679448983060, 0.123491296886091410, 0.123540914014471510, 0.123590530833999760, 0.123640147344551250, +0.123689763546002390, 0.123739379438229100, 0.123788995021107810, 0.123838610294513580, 0.123888225258322840, 0.123937839912411970, 0.123987454256656070, 0.124037068290931520, +0.124086682015114300, 0.124136295429080820, 0.124185908532706170, 0.124235521325866740, 0.124285133808438500, 0.124334745980297880, 0.124384357841319950, 0.124433969391381110, +0.124483580630357370, 0.124533191558125100, 0.124582802174559430, 0.124632412479536740, 0.124682022472933020, 0.124731632154624680, 0.124781241524486830, 0.124830850582395870, +0.124880459328228240, 0.124930067761859000, 0.124979675883164600, 0.125029283692021010, 0.125078891188304650, 0.125128498371890630, 0.125178105242655350, 0.125227711800474820, +0.125277318045225430, 0.125326923976782330, 0.125376529595021910, 0.125426134899820160, 0.125475739891053510, 0.125525344568597070, 0.125574948932327290, 0.125624552982120140, +0.125674156717852010, 0.125723760139398070, 0.125773363246634740, 0.125822966039438430, 0.125872568517684270, 0.125922170681248670, 0.125971772530007660, 0.126021374063837680, +0.126070975282613800, 0.126120576186212470, 0.126170176774509730, 0.126219777047381960, 0.126269377004704310, 0.126318976646353250, 0.126368575972204720, 0.126418174982135200, +0.126467773676019770, 0.126517372053734950, 0.126566970115156690, 0.126616567860161430, 0.126666165288624320, 0.126715762400421790, 0.126765359195429860, 0.126814955673524990, +0.126864551834582260, 0.126914147678478170, 0.126963743205089160, 0.127013338414290330, 0.127062933305958160, 0.127112527879968660, 0.127162122136198260, 0.127211716074522140, +0.127261309694816720, 0.127310902996958020, 0.127360495980822520, 0.127410088646285340, 0.127459680993222910, 0.127509273021511300, 0.127558864731026960, 0.127608456121645010, +0.127658047193241890, 0.127707637945693670, 0.127757228378876820, 0.127806818492666420, 0.127856408286939010, 0.127905997761570990, 0.127955586916437550, 0.128005175751415150, +0.128054764266379790, 0.128104352461207970, 0.128153940335774850, 0.128203527889956840, 0.128253115123630020, 0.128302702036670880, 0.128352288628954540, 0.128401874900357450, +0.128451460850755680, 0.128501046480025720, 0.128550631788042690, 0.128600216774683060, 0.128649801439822910, 0.128699385783338700, 0.128748969805105580, 0.128798553505000050, +0.128848136882898560, 0.128897719938676270, 0.128947302672209720, 0.128996885083374900, 0.129046467172048290, 0.129096048938105080, 0.129145630381421740, 0.129195211501874350, +0.129244792299339360, 0.129294372773691930, 0.129343952924808600, 0.129393532752565380, 0.129443112256838740, 0.129492691437503920, 0.129542270294437320, 0.129591848827515090, +0.129641427036613660, 0.129691004921608230, 0.129740582482375270, 0.129790159718790880, 0.129839736630731510, 0.129889313218072370, 0.129938889480689930, 0.129988465418460740, +0.130038041031259930, 0.130087616318964010, 0.130137191281449040, 0.130186765918591550, 0.130236340230266700, 0.130285914216351000, 0.130335487876720500, 0.130385061211251760, +0.130434634219819880, 0.130484206902301450, 0.130533779258572490, 0.130583351288509510, 0.130632922991987730, 0.130682494368883630, 0.130732065419073310, 0.130781636142433240, +0.130831206538838670, 0.130880776608166080, 0.130930346350291970, 0.130979915765091550, 0.131029484852441370, 0.131079053612217440, 0.131128622044296340, 0.131178190148553250, +0.131227757924864690, 0.131277325373106710, 0.131326892493155850, 0.131376459284887340, 0.131426025748177690, 0.131475591882902950, 0.131525157688939690, 0.131574723166163090, +0.131624288314449690, 0.131673853133675550, 0.131723417623717250, 0.131772981784449930, 0.131822545615750190, 0.131872109117494500, 0.131921672289558090, 0.131971235131817520, +0.132020797644148870, 0.132070359826428650, 0.132119921678532090, 0.132169483200335720, 0.132219044391715640, 0.132268605252548410, 0.132318165782709220, 0.132367725982074610, +0.132417285850520680, 0.132466845387924000, 0.132516404594159750, 0.132565963469104490, 0.132615522012634300, 0.132665080224625780, 0.132714638104954100, 0.132764195653495810, +0.132813752870127500, 0.132863309754724350, 0.132912866307162950, 0.132962422527319350, 0.133011978415070150, 0.133061533970290580, 0.133111089192857160, 0.133160644082646020, +0.133210198639533710, 0.133259752863395450, 0.133309306754107820, 0.133358860311546920, 0.133408413535589330, 0.133457966426110240, 0.133507518982986240, 0.133557071206093450, +0.133606623095308410, 0.133656174650506360, 0.133705725871563900, 0.133755276758357110, 0.133804827310762600, 0.133854377528655530, 0.133903927411912570, 0.133953476960410180, +0.134003026174023680, 0.134052575052629630, 0.134102123596104130, 0.134151671804323750, 0.134201219677163780, 0.134250767214500740, 0.134300314416210760, 0.134349861282170470, +0.134399407812255070, 0.134448954006341160, 0.134498499864304870, 0.134548045386022750, 0.134597590571370110, 0.134647135420223470, 0.134696679932458980, 0.134746224107953260, +0.134795767946581520, 0.134845311448220350, 0.134894854612746360, 0.134944397440034780, 0.134993939929962230, 0.135043482082404800, 0.135093023897239120, 0.135142565374340440, +0.135192106513585350, 0.135241647314850000, 0.135291187778010940, 0.135340727902943490, 0.135390267689524220, 0.135439807137629290, 0.135489346247135290, 0.135538885017917470, +0.135588423449852450, 0.135637961542816350, 0.135687499296685780, 0.135737036711336050, 0.135786573786643720, 0.135836110522485400, 0.135885646918736340, 0.135935182975273180, +0.135984718691972070, 0.136034254068709590, 0.136083789105361040, 0.136133323801803010, 0.136182858157911670, 0.136232392173563640, 0.136281925848634190, 0.136331459182999910, +0.136380992176536990, 0.136430524829122020, 0.136480057140630300, 0.136529589110938460, 0.136579120739922620, 0.136628652027459440, 0.136678182973424180, 0.136727713577693450, +0.136777243840143450, 0.136826773760650780, 0.136876303339090730, 0.136925832575339940, 0.136975361469274970, 0.137024890020771200, 0.137074418229705170, 0.137123946095953130, +0.137173473619391640, 0.137223000799896020, 0.137272527637342910, 0.137322054131608470, 0.137371580282569350, 0.137421106090100830, 0.137470631554079570, 0.137520156674381690, +0.137569681450883880, 0.137619205883461440, 0.137668729971990980, 0.137718253716348660, 0.137767777116411190, 0.137817300172053820, 0.137866822883153190, 0.137916345249585960, +0.137965867271227420, 0.138015388947954200, 0.138064910279642520, 0.138114431266169010, 0.138163951907408960, 0.138213472203239040, 0.138262992153535460, 0.138312511758174830, +0.138362031017032460, 0.138411549929985030, 0.138461068496908730, 0.138510586717680180, 0.138560104592174740, 0.138609622120269030, 0.138659139301839260, 0.138708656136762090, +0.138758172624912860, 0.138807688766168170, 0.138857204560404710, 0.138906720007497790, 0.138956235107324080, 0.139005749859759780, 0.139055264264681510, 0.139104778321964690, +0.139154292031485910, 0.139203805393121380, 0.139253318406747790, 0.139302831072240480, 0.139352343389476080, 0.139401855358330830, 0.139451366978681350, 0.139500878250403050, +0.139550389173372540, 0.139599899747466060, 0.139649409972560260, 0.139698919848530500, 0.139748429375253450, 0.139797938552605750, 0.139847447380462790, 0.139896955858701180, +0.139946463987197180, 0.139995971765827480, 0.140045479194467410, 0.140094986272993630, 0.140144493001282400, 0.140193999379210370, 0.140243505406652900, 0.140293011083486690, +0.140342516409587920, 0.140392021384833310, 0.140441526009098210, 0.140491030282259290, 0.140540534204192800, 0.140590037774775380, 0.140639540993882480, 0.140689043861390690, +0.140738546377176310, 0.140788048541115980, 0.140837550353085120, 0.140887051812960380, 0.140936552920618440, 0.140986053675934670, 0.141035554078785790, 0.141085054129048010, +0.141134553826598010, 0.141184053171311220, 0.141233552163064300, 0.141283050801733480, 0.141332549087195470, 0.141382047019325660, 0.141431544598000720, 0.141481041823096950, +0.141530538694490980, 0.141580035212058250, 0.141629531375675410, 0.141679027185218740, 0.141728522640564960, 0.141778017741589430, 0.141827512488168860, 0.141877006880179930, +0.141926500917498060, 0.141975994599999930, 0.142025487927561810, 0.142074980900060430, 0.142124473517371150, 0.142173965779370660, 0.142223457685935280, 0.142272949236941700, +0.142322440432265300, 0.142371931271782800, 0.142421421755370450, 0.142470911882905000, 0.142520401654261860, 0.142569891069317670, 0.142619380127948780, 0.142668868830031880, +0.142718357175442350, 0.142767845164056940, 0.142817332795752370, 0.142866820070403990, 0.142916306987888600, 0.142965793548082420, 0.143015279750862200, 0.143064765596103340, +0.143114251083682590, 0.143163736213476170, 0.143213220985360880, 0.143262705399212100, 0.143312189454906540, 0.143361673152320510, 0.143411156491330740, 0.143460639471812620, +0.143510122093642920, 0.143559604356697930, 0.143609086260854340, 0.143658567805987620, 0.143708048991974450, 0.143757529818691190, 0.143807010286014530, 0.143856490393819900, +0.143905970141984060, 0.143955449530383720, 0.144004928558894320, 0.144054407227392600, 0.144103885535754870, 0.144153363483857850, 0.144202841071576990, 0.144252318298789010, +0.144301795165370260, 0.144351271671197460, 0.144400747816146040, 0.144450223600092740, 0.144499699022913870, 0.144549174084486230, 0.144598648784685170, 0.144648123123387510, +0.144697597100469560, 0.144747070715808030, 0.144796543969278410, 0.144846016860757400, 0.144895489390121810, 0.144944961557247040, 0.144994433362009870, 0.145043904804286610, +0.145093375883954050, 0.145142846600887610, 0.145192316954964040, 0.145241786946059690, 0.145291256574051290, 0.145340725838814330, 0.145390194740225550, 0.145439663278161270, +0.145489131452498280, 0.145538599263112020, 0.145588066709879280, 0.145637533792676350, 0.145687000511380030, 0.145736466865865780, 0.145785932856010350, 0.145835398481690550, +0.145884863742781780, 0.145934328639160890, 0.145983793170704150, 0.146033257337288360, 0.146082721138789010, 0.146132184575082870, 0.146181647646046240, 0.146231110351555920, +0.146280572691487420, 0.146330034665717450, 0.146379496274122420, 0.146428957516579080, 0.146478418392962910, 0.146527878903150690, 0.146577339047018810, 0.146626798824443960, +0.146676258235301730, 0.146725717279468810, 0.146775175956822050, 0.146824634267236910, 0.146874092210590200, 0.146923549786758260, 0.146973006995617860, 0.147022463837044510, +0.147071920310915010, 0.147121376417105710, 0.147170832155493400, 0.147220287525953590, 0.147269742528363030, 0.147319197162598140, 0.147368651428535670, 0.147418105326051150, +0.147467558855021390, 0.147517012015322690, 0.147566464806831920, 0.147615917229424550, 0.147665369282977380, 0.147714820967366790, 0.147764272282469580, 0.147813723228161280, +0.147863173804318630, 0.147912624010818510, 0.147962073847536370, 0.148011523314349080, 0.148060972411132950, 0.148110421137764850, 0.148159869494120240, 0.148209317480075960, +0.148258765095508390, 0.148308212340294370, 0.148357659214309350, 0.148407105717430180, 0.148456551849533270, 0.148505997610495400, 0.148555443000192110, 0.148604888018500190, +0.148654332665296070, 0.148703776940456560, 0.148753220843857140, 0.148802664375374700, 0.148852107534886040, 0.148901550322266650, 0.148950992737393400, 0.149000434780142660, +0.149049876450391280, 0.149099317748014740, 0.149148758672889930, 0.149198199224893220, 0.149247639403901460, 0.149297079209790160, 0.149346518642436170, 0.149395957701715880, +0.149445396387506120, 0.149494834699682420, 0.149544272638121640, 0.149593710202700210, 0.149643147393294930, 0.149692584209781320, 0.149742020652036260, 0.149791456719936600, +0.149840892413357850, 0.149890327732176860, 0.149939762676270070, 0.149989197245514290, 0.150038631439785100, 0.150088065258959320, 0.150137498702913370, 0.150186931771524150, +0.150236364464667120, 0.150285796782219210, 0.150335228724056770, 0.150384660290056730, 0.150434091480094590, 0.150483522294047210, 0.150532952731791040, 0.150582382793202910, +0.150631812478158410, 0.150681241786534360, 0.150730670718207200, 0.150780099273053830, 0.150829527450949740, 0.150878955251771860, 0.150928382675397020, 0.150977809721700770, +0.151027236390560010, 0.151076662681851160, 0.151126088595451100, 0.151175514131235370, 0.151224939289080850, 0.151274364068863960, 0.151323788470461630, 0.151373212493749380, +0.151422636138604130, 0.151472059404902240, 0.151521482292520660, 0.151570904801334950, 0.151620326931221960, 0.151669748682058150, 0.151719170053720430, 0.151768591046084340, +0.151818011659026750, 0.151867431892424600, 0.151916851746153410, 0.151966271220090100, 0.152015690314111110, 0.152065109028093340, 0.152114527361912330, 0.152163945315445030, +0.152213362888567880, 0.152262780081157730, 0.152312196893090200, 0.152361613324242170, 0.152411029374490140, 0.152460445043710920, 0.152509860331780210, 0.152559275238574820, +0.152608689763971240, 0.152658103907846370, 0.152707517670075820, 0.152756931050536450, 0.152806344049105200, 0.152855756665657650, 0.152905168900070720, 0.152954580752220880, +0.153003992221984990, 0.153053403309238720, 0.153102814013858920, 0.153152224335722090, 0.153201634274705120, 0.153251043830683640, 0.153300453003534560, 0.153349861793134340, +0.153399270199359890, 0.153448678222086850, 0.153498085861192100, 0.153547493116552140, 0.153596899988043880, 0.153646306475542950, 0.153695712578926220, 0.153745118298070690, +0.153794523632851900, 0.153843928583146800, 0.153893333148831880, 0.153942737329784090, 0.153992141125878970, 0.154041544536993540, 0.154090947563004230, 0.154140350203788000, +0.154189752459220450, 0.154239154329178510, 0.154288555813538700, 0.154337956912177910, 0.154387357624971830, 0.154436757951797320, 0.154486157892530950, 0.154535557447049580, +0.154584956615228920, 0.154634355396945840, 0.154683753792076880, 0.154733151800498990, 0.154782549422087770, 0.154831946656720180, 0.154881343504273160, 0.154930739964622340, +0.154980136037644660, 0.155029531723216650, 0.155078927021215260, 0.155128321931516100, 0.155177716453996140, 0.155227110588531890, 0.155276504335000310, 0.155325897693277010, +0.155375290663238990, 0.155424683244762720, 0.155474075437725210, 0.155523467242002030, 0.155572858657470230, 0.155622249684006260, 0.155671640321487090, 0.155721030569788390, +0.155770420428787110, 0.155819809898360250, 0.155869198978383390, 0.155918587668733540, 0.155967975969287240, 0.156017363879921410, 0.156066751400511770, 0.156116138530935230, +0.156165525271068330, 0.156214911620788070, 0.156264297579970100, 0.156313683148491370, 0.156363068326228430, 0.156412453113058260, 0.156461837508856530, 0.156511221513500190, +0.156560605126865810, 0.156609988348830360, 0.156659371179269510, 0.156708753618060190, 0.156758135665079460, 0.156807517320202950, 0.156856898583307650, 0.156906279454270080, +0.156955659932967260, 0.157005040019274870, 0.157054419713069850, 0.157103799014228800, 0.157153177922628700, 0.157202556438145210, 0.157251934560655310, 0.157301312290035580, +0.157350689626163030, 0.157400066568913280, 0.157449443118163390, 0.157498819273789890, 0.157548195035669770, 0.157597570403678750, 0.157646945377693780, 0.157696319957591450, +0.157745694143248770, 0.157795067934541400, 0.157844441331346370, 0.157893814333540690, 0.157943186941000010, 0.157992559153601360, 0.158041930971221320, 0.158091302393736920, +0.158140673421023780, 0.158190044052958970, 0.158239414289419070, 0.158288784130281050, 0.158338153575420660, 0.158387522624714870, 0.158436891278040250, 0.158486259535273870, +0.158535627396291400, 0.158584994860969860, 0.158634361929185810, 0.158683728600816340, 0.158733094875737060, 0.158782460753825070, 0.158831826234957370, 0.158881191319009660, +0.158930556005858980, 0.158979920295381880, 0.159029284187455430, 0.159078647681955340, 0.159128010778758660, 0.159177373477741910, 0.159226735778782190, 0.159276097681755160, +0.159325459186537900, 0.159374820293007010, 0.159424181001039500, 0.159473541310511090, 0.159522901221298840, 0.159572260733279320, 0.159621619846329610, 0.159670978560325390, +0.159720336875143730, 0.159769694790661660, 0.159819052306754920, 0.159868409423300550, 0.159917766140175170, 0.159967122457255810, 0.160016478374418180, 0.160065833891539390, +0.160115189008495970, 0.160164543725165060, 0.160213898041422330, 0.160263251957144860, 0.160312605472209270, 0.160361958586492580, 0.160411311299870570, 0.160460663612220280, +0.160510015523418340, 0.160559367033341780, 0.160608718141866390, 0.160658068848869180, 0.160707419154227260, 0.160756769057816330, 0.160806118559513490, 0.160855467659195370, +0.160904816356738980, 0.160954164652020140, 0.161003512544915880, 0.161052860035302840, 0.161102207123058090, 0.161151553808057370, 0.161200900090177790, 0.161250245969295960, +0.161299591445288940, 0.161348936518032500, 0.161398281187403710, 0.161447625453279230, 0.161496969315536140, 0.161546312774050150, 0.161595655828698420, 0.161644998479357540, +0.161694340725904580, 0.161743682568215340, 0.161793024006166910, 0.161842365039636340, 0.161891705668499420, 0.161941045892633250, 0.161990385711914460, 0.162039725126220140, +0.162089064135426060, 0.162138402739409330, 0.162187740938046610, 0.162237078731214960, 0.162286416118790160, 0.162335753100649320, 0.162385089676669120, 0.162434425846726630, +0.162483761610697640, 0.162533096968459220, 0.162582431919888080, 0.162631766464861300, 0.162681100603254660, 0.162730434334945270, 0.162779767659810230, 0.162829100577725340, +0.162878433088567700, 0.162927765192213970, 0.162977096888541260, 0.163026428177425380, 0.163075759058743410, 0.163125089532372060, 0.163174419598188430, 0.163223749256068310, +0.163273078505888790, 0.163322407347526590, 0.163371735780858840, 0.163421063805761270, 0.163470391422111060, 0.163519718629784870, 0.163569045428659830, 0.163618371818611720, +0.163667697799517700, 0.163717023371254850, 0.163766348533699040, 0.163815673286727330, 0.163864997630216420, 0.163914321564043480, 0.163963645088084310, 0.164012968202216000, +0.164062290906315300, 0.164111613200259270, 0.164160935083923790, 0.164210256557185990, 0.164259577619922520, 0.164308898272010560, 0.164358218513325910, 0.164407538343745720, +0.164456857763146700, 0.164506176771405940, 0.164555495368399330, 0.164604813554003970, 0.164654131328096560, 0.164703448690554280, 0.164752765641252940, 0.164802082180069670, +0.164851398306881640, 0.164900714021564670, 0.164950029323995940, 0.164999344214052100, 0.165048658691610370, 0.165097972756546560, 0.165147286408737800, 0.165196599648060800, +0.165245912474392770, 0.165295224887609530, 0.165344536887588210, 0.165393848474205550, 0.165443159647338690, 0.165492470406863520, 0.165541780752657160, 0.165591090684596350, +0.165640400202558270, 0.165689709306418740, 0.165739017996054920, 0.165788326271344020, 0.165837634132161850, 0.165886941578385600, 0.165936248609891980, 0.165985555226558200, +0.166034861428260070, 0.166084167214874820, 0.166133472586279110, 0.166182777542350200, 0.166232082082963860, 0.166281386207997340, 0.166330689917327380, 0.166379993210831110, +0.166429296088384420, 0.166478598549864490, 0.166527900595148050, 0.166577202224112320, 0.166626503436633130, 0.166675804232587680, 0.166725104611853160, 0.166774404574305450, +0.166823704119821730, 0.166873003248278750, 0.166922301959553680, 0.166971600253522450, 0.167020898130062180, 0.167070195589049700, 0.167119492630362160, 0.167168789253875430, +0.167218085459466730, 0.167267381247012850, 0.167316676616390940, 0.167365971567476870, 0.167415266100147900, 0.167464560214280770, 0.167513853909752650, 0.167563147186439500, +0.167612440044218440, 0.167661732482966290, 0.167711024502560260, 0.167760316102876230, 0.167809607283791410, 0.167858898045183000, 0.167908188386926890, 0.167957478308900340, +0.168006767810980090, 0.168056056893043340, 0.168105345554966030, 0.168154633796625350, 0.168203921617898100, 0.168253209018661450, 0.168302495998791380, 0.168351782558165050, +0.168401068696659250, 0.168450354414151240, 0.168499639710516870, 0.168548924585633450, 0.168598209039377670, 0.168647493071626830, 0.168696776682256830, 0.168746059871144880, +0.168795342638168200, 0.168844624983202740, 0.168893906906125740, 0.168943188406813940, 0.168992469485144630, 0.169041750140993680, 0.169091030374238370, 0.169140310184755500, +0.169189589572422280, 0.169238868537114650, 0.169288147078709840, 0.169337425197084670, 0.169386702892116350, 0.169435980163680860, 0.169485257011655430, 0.169534533435916850, +0.169583809436342350, 0.169633085012807910, 0.169682360165190750, 0.169731634893368150, 0.169780909197216000, 0.169830183076611600, 0.169879456531431720, 0.169928729561553640, +0.169978002166853300, 0.170027274347207960, 0.170076546102494420, 0.170125817432589980, 0.170175088337370550, 0.170224358816713380, 0.170273628870495320, 0.170322898498593640, +0.170372167700884260, 0.170421436477244480, 0.170470704827551080, 0.170519972751681380, 0.170569240249511310, 0.170618507320918130, 0.170667773965779120, 0.170717040183970240, +0.170766305975368770, 0.170815571339851510, 0.170864836277295790, 0.170914100787577520, 0.170963364870574010, 0.171012628526162060, 0.171061891754219010, 0.171111154554620780, +0.171160416927244650, 0.171209678871967500, 0.171258940388666570, 0.171308201477217870, 0.171357462137498670, 0.171406722369385810, 0.171455982172756570, 0.171505241547486950, +0.171554500493454220, 0.171603759010535230, 0.171653017098607280, 0.171702274757546370, 0.171751531987229760, 0.171800788787534770, 0.171850045158337350, 0.171899301099514850, +0.171948556610944050, 0.171997811692502330, 0.172047066344065640, 0.172096320565511270, 0.172145574356716100, 0.172194827717557450, 0.172244080647911270, 0.172293333147654910, +0.172342585216665210, 0.172391836854819490, 0.172441088061993740, 0.172490338838065250, 0.172539589182910930, 0.172588839096408070, 0.172638088578432660, 0.172687337628862040, +0.172736586247573540, 0.172785834434443120, 0.172835082189348090, 0.172884329512165370, 0.172933576402772270, 0.172982822861044800, 0.173032068886860260, 0.173081314480095530, +0.173130559640627980, 0.173179804368333580, 0.173229048663089690, 0.173278292524773170, 0.173327535953261340, 0.173376778948430230, 0.173426021510157180, 0.173475263638319080, +0.173524505332793260, 0.173573746593455760, 0.173622987420183870, 0.173672227812854930, 0.173721467771345010, 0.173770707295531400, 0.173819946385291050, 0.173869185040501250, +0.173918423261038070, 0.173967661046778830, 0.174016898397600400, 0.174066135313380190, 0.174115371793994220, 0.174164607839319810, 0.174213843449233850, 0.174263078623613760, +0.174312313362335520, 0.174361547665276480, 0.174410781532313600, 0.174460014963324190, 0.174509247958184290, 0.174558480516771310, 0.174607712638962100, 0.174656944324634050, +0.174706175573663190, 0.174755406385926900, 0.174804636761302530, 0.174853866699666160, 0.174903096200895090, 0.174952325264866290, 0.175001553891457110, 0.175050782080543620, +0.175100009832003160, 0.175149237145712680, 0.175198464021549540, 0.175247690459389820, 0.175296916459110860, 0.175346142020589600, 0.175395367143703430, 0.175444591828328420, +0.175493816074341920, 0.175543039881620870, 0.175592263250042680, 0.175641486179483390, 0.175690708669820370, 0.175739930720931030, 0.175789152332691410, 0.175838373504978910, +0.175887594237670470, 0.175936814530643500, 0.175986034383774050, 0.176035253796939520, 0.176084472770016850, 0.176133691302883450, 0.176182909395415370, 0.176232127047490030, +0.176281344258984340, 0.176330561029775760, 0.176379777359740310, 0.176428993248755440, 0.176478208696698090, 0.176527423703445650, 0.176576638268874210, 0.176625852392861160, +0.176675066075283940, 0.176724279316018610, 0.176773492114942590, 0.176822704471932820, 0.176871916386866720, 0.176921127859620410, 0.176970338890071300, 0.177019549478096310, +0.177068759623572910, 0.177117969326377160, 0.177167178586386480, 0.177216387403477870, 0.177265595777528710, 0.177314803708415130, 0.177364011196014530, 0.177413218240203920, +0.177462424840860690, 0.177511630997860990, 0.177560836711082170, 0.177610041980401730, 0.177659246805695730, 0.177708451186841620, 0.177757655123716380, 0.177806858616197440, +0.177856061664160900, 0.177905264267484240, 0.177954466426044370, 0.178003668139718820, 0.178052869408383630, 0.178102070231916290, 0.178151270610193760, 0.178200470543093490, +0.178249670030491610, 0.178298869072265580, 0.178348067668292340, 0.178397265818449390, 0.178446463522612810, 0.178495660780660120, 0.178544857592468240, 0.178594053957914670, +0.178643249876875520, 0.178692445349228230, 0.178741640374850300, 0.178790834953617810, 0.178840029085408220, 0.178889222770098580, 0.178938416007566330, 0.178987608797687580, +0.179036801140339820, 0.179085993035400040, 0.179135184482745740, 0.179184375482253020, 0.179233566033799360, 0.179282756137261800, 0.179331945792517770, 0.179381134999443470, +0.179430323757916290, 0.179479512067813350, 0.179528699929012020, 0.179577887341388520, 0.179627074304820310, 0.179676260819184840, 0.179725446884358290, 0.179774632500218130, +0.179823817666641380, 0.179873002383505510, 0.179922186650686710, 0.179971370468062440, 0.180020553835509740, 0.180069736752906110, 0.180118919220127680, 0.180168101237051990, +0.180217282803556010, 0.180266463919517260, 0.180315644584811920, 0.180364824799317480, 0.180414004562910960, 0.180463183875469890, 0.180512362736870410, 0.180561541146990020, +0.180610719105706200, 0.180659896612895170, 0.180709073668434390, 0.180758250272200940, 0.180807426424072270, 0.180856602123924630, 0.180905777371635460, 0.180954952167081850, +0.181004126510141310, 0.181053300400690010, 0.181102473838605450, 0.181151646823764720, 0.181200819356045290, 0.181249991435323390, 0.181299163061476530, 0.181348334234381740, +0.181397504953916540, 0.181446675219957170, 0.181495845032381090, 0.181545014391065410, 0.181594183295887610, 0.181643351746723940, 0.181692519743451880, 0.181741687285948940, +0.181790854374091370, 0.181840021007756670, 0.181889187186821900, 0.181938352911164610, 0.181987518180661000, 0.182036682995188580, 0.182085847354624460, 0.182135011258846150, +0.182184174707729910, 0.182233337701153190, 0.182282500238993140, 0.182331662321127300, 0.182380823947431850, 0.182429985117784330, 0.182479145832061870, 0.182528306090141950, +0.182577465891900850, 0.182626625237216090, 0.182675784125965190, 0.182724942558024410, 0.182774100533271260, 0.182823258051582870, 0.182872415112836750, 0.182921571716909180, +0.182970727863677660, 0.183019883553019320, 0.183069038784811730, 0.183118193558931110, 0.183167347875254990, 0.183216501733660500, 0.183265655134025180, 0.183314808076225300, +0.183363960560138400, 0.183413112585641610, 0.183462264152612440, 0.183511415260927210, 0.183560565910463440, 0.183609716101098660, 0.183658865832709180, 0.183708015105172540, +0.183757163918365830, 0.183806312272166680, 0.183855460166451300, 0.183904607601097250, 0.183953754575981730, 0.184002901090982220, 0.184052047145975030, 0.184101192740837720, +0.184150337875447430, 0.184199482549681740, 0.184248626763416910, 0.184297770516530510, 0.184346913808899670, 0.184396056640401980, 0.184445199010913750, 0.184494340920312470, +0.184543482368475810, 0.184592623355280010, 0.184641763880602630, 0.184690903944320860, 0.184740043546312240, 0.184789182686453090, 0.184838321364621000, 0.184887459580693080, +0.184936597334546950, 0.184985734626058910, 0.185034871455106530, 0.185084007821566950, 0.185133143725317810, 0.185182279166235360, 0.185231414144197220, 0.185280548659080560, +0.185329682710762940, 0.185378816299120670, 0.185427949424031370, 0.185477082085372220, 0.185526214283020770, 0.185575346016853350, 0.185624477286747580, 0.185673608092581040, +0.185722738434230070, 0.185771868311572250, 0.185820997724484740, 0.185870126672845170, 0.185919255156529850, 0.185968383175416390, 0.186017510729382000, 0.186066637818304240, +0.186115764442059460, 0.186164890600525270, 0.186214016293578840, 0.186263141521097800, 0.186312266282958490, 0.186361390579038530, 0.186410514409215050, 0.186459637773365740, +0.186508760671366900, 0.186557883103096180, 0.186607005068431170, 0.186656126567248200, 0.186705247599424940, 0.186754368164838540, 0.186803488263366650, 0.186852607894885610, +0.186901727059273080, 0.186950845756406190, 0.186999963986162640, 0.187049081748418750, 0.187098199043052170, 0.187147315869940050, 0.187196432228960100, 0.187245548119988640, +0.187294663542903310, 0.187343778497581300, 0.187392892983900300, 0.187442007001736630, 0.187491120550967920, 0.187540233631471880, 0.187589346243124790, 0.187638458385804340, +0.187687570059387770, 0.187736681263752670, 0.187785791998775460, 0.187834902264333780, 0.187884012060304810, 0.187933121386566260, 0.187982230242994490, 0.188031338629467110, +0.188080446545861400, 0.188129553992055030, 0.188178660967924320, 0.188227767473346940, 0.188276873508200160, 0.188325979072361650, 0.188375084165707720, 0.188424188788116090, +0.188473292939464020, 0.188522396619629110, 0.188571499828487810, 0.188620602565917730, 0.188669704831796600, 0.188718806626000770, 0.188767907948407920, 0.188817008798895290, +0.188866109177340590, 0.188915209083620170, 0.188964308517611730, 0.189013407479192510, 0.189062505968240230, 0.189111603984631230, 0.189160701528243210, 0.189209798598953480, +0.189258895196639660, 0.189307991321178150, 0.189357086972446690, 0.189406182150322510, 0.189455276854683300, 0.189504371085405470, 0.189553464842366710, 0.189602558125444710, +0.189651650934515890, 0.189700743269457960, 0.189749835130148150, 0.189798926516464180, 0.189848017428282470, 0.189897107865480720, 0.189946197827936200, 0.189995287315526620, +0.190044376328128400, 0.190093464865619200, 0.190142552927876380, 0.190191640514777600, 0.190240727626199290, 0.190289814262019130, 0.190338900422114460, 0.190387986106362980, +0.190437071314641080, 0.190486156046826500, 0.190535240302796980, 0.190584324082428920, 0.190633407385600060, 0.190682490212187670, 0.190731572562069490, 0.190780654435121960, +0.190829735831222760, 0.190878816750249260, 0.190927897192079120, 0.190976977156588820, 0.191026056643656070, 0.191075135653158170, 0.191124214184972880, 0.191173292238976610, +0.191222369815047120, 0.191271446913061720, 0.191320523532898110, 0.191369599674432760, 0.191418675337543420, 0.191467750522107820, 0.191516825228002420, 0.191565899455104940, +0.191614973203292740, 0.191664046472443510, 0.191713119262433730, 0.191762191573141170, 0.191811263404443130, 0.191860334756217360, 0.191909405628340330, 0.191958476020689770, +0.192007545933143010, 0.192056615365577860, 0.192105684317870700, 0.192154752789899350, 0.192203820781541110, 0.192252888292673760, 0.192301955323173730, 0.192351021872918830, +0.192400087941786370, 0.192449153529654140, 0.192498218636398570, 0.192547283261897460, 0.192596347406028600, 0.192645411068668420, 0.192694474249694710, 0.192743536948984800, +0.192792599166416500, 0.192841660901866270, 0.192890722155211890, 0.192939782926330680, 0.192988843215100490, 0.193037903021397730, 0.193086962345100200, 0.193136021186085280, +0.193185079544230750, 0.193234137419413060, 0.193283194811510050, 0.193332251720399060, 0.193381308145957860, 0.193430364088062970, 0.193479419546592150, 0.193528474521423220, +0.193577529012432660, 0.193626583019498310, 0.193675636542497480, 0.193724689581307980, 0.193773742135806340, 0.193822794205870340, 0.193871845791377370, 0.193920896892205210, +0.193969947508230350, 0.194018997639330640, 0.194068047285383460, 0.194117096446266570, 0.194166145121856510, 0.194215193312031080, 0.194264241016667670, 0.194313288235644090, +0.194362334968836870, 0.194411381216123810, 0.194460426977382720, 0.194509472252490130, 0.194558517041323880, 0.194607561343761310, 0.194656605159680280, 0.194705648488957300, +0.194754691331470190, 0.194803733687096360, 0.194852775555713650, 0.194901816937198550, 0.194950857831428900, 0.194999898238282120, 0.195048938157636020, 0.195097977589367140, +0.195147016533353340, 0.195196054989471960, 0.195245092957600900, 0.195294130437616680, 0.195343167429397110, 0.195392203932819640, 0.195441239947762080, 0.195490275474101000, +0.195539310511714220, 0.195588345060479620, 0.195637379120273710, 0.195686412690974340, 0.195735445772458940, 0.195784478364605390, 0.195833510467290170, 0.195882542080391190, +0.195931573203785870, 0.195980603837352020, 0.196029633980966260, 0.196078663634506410, 0.196127692797849890, 0.196176721470874560, 0.196225749653457020, 0.196274777345475080, +0.196323804546806200, 0.196372831257328270, 0.196421857476917790, 0.196470883205452700, 0.196519908442810810, 0.196568933188868730, 0.196617957443504300, 0.196666981206595010, +0.196716004478018680, 0.196765027257651910, 0.196814049545372540, 0.196863071341058100, 0.196912092644586370, 0.196961113455834000, 0.197010133774678850, 0.197059153600998350, +0.197108172934670390, 0.197157191775571590, 0.197206210123579810, 0.197255227978572510, 0.197304245340427540, 0.197353262209021550, 0.197402278584232400, 0.197451294465937980, +0.197500309854014900, 0.197549324748341030, 0.197598339148793850, 0.197647353055251270, 0.197696366467589870, 0.197745379385687560, 0.197794391809421790, 0.197843403738670490, +0.197892415173310220, 0.197941426113218940, 0.197990436558274090, 0.198039446508353560, 0.198088455963333990, 0.198137464923093280, 0.198186473387508920, 0.198235481356458800, +0.198284488829819560, 0.198333495807469060, 0.198382502289285310, 0.198431508275144830, 0.198480513764925590, 0.198529518758505050, 0.198578523255761170, 0.198627527256570540, +0.198676530760811100, 0.198725533768360300, 0.198774536279096140, 0.198823538292895170, 0.198872539809635400, 0.198921540829194250, 0.198970541351449680, 0.199019541376278340, +0.199068540903558130, 0.199117539933166580, 0.199166538464981590, 0.199215536498879850, 0.199264534034739260, 0.199313531072437320, 0.199362527611852000, 0.199411523652859940, +0.199460519195339050, 0.199509514239167300, 0.199558508784221320, 0.199607502830379090, 0.199656496377518090, 0.199705489425516300, 0.199754481974250330, 0.199803474023598160, +0.199852465573437300, 0.199901456623645720, 0.199950447174100070, 0.199999437224678310, 0.200048426775257940, 0.200097415825716940, 0.200146404375931980, 0.200195392425780990, +0.200244379975141520, 0.200293367023891560, 0.200342353571907720, 0.200391339619067990, 0.200440325165250370, 0.200489310210331480, 0.200538294754189330, 0.200587278796701430, +0.200636262337745790, 0.200685245377199060, 0.200734227914939200, 0.200783209950843780, 0.200832191484790760, 0.200881172516656830, 0.200930153046319980, 0.200979133073657720, +0.201028112598548080, 0.201077091620867730, 0.201126070140494630, 0.201175048157306390, 0.201224025671180940, 0.201273002681994990, 0.201321979189626550, 0.201370955193953590, +0.201419930694852780, 0.201468905692202190, 0.201517880185879290, 0.201566854175762170, 0.201615827661727450, 0.201664800643653160, 0.201713773121416890, 0.201762745094896580, +0.201811716563969010, 0.201860687528512130, 0.201909657988403550, 0.201958627943521260, 0.202007597393741970, 0.202056566338943640, 0.202105534779003950, 0.202154502713800840, +0.202203470143211020, 0.202252437067112540, 0.202301403485382970, 0.202350369397900330, 0.202399334804541310, 0.202448299705183970, 0.202497264099706310, 0.202546227987985050, +0.202595191369898230, 0.202644154245323420, 0.202693116614138690, 0.202742078476220690, 0.202791039831447530, 0.202840000679696760, 0.202888961020846410, 0.202937920854773250, +0.202986880181355270, 0.203035839000470090, 0.203084797311995750, 0.203133755115808970, 0.203182712411787810, 0.203231669199809870, 0.203280625479753200, 0.203329581251494530, +0.203378536514911890, 0.203427491269883350, 0.203476445516285660, 0.203525399253996850, 0.203574352482894540, 0.203623305202856790, 0.203672257413760330, 0.203721209115483220, +0.203770160307903100, 0.203819110990898030, 0.203868061164344720, 0.203917010828121280, 0.203965959982105290, 0.204014908626174860, 0.204063856760206720, 0.204112804384078920, +0.204161751497669130, 0.204210698100855380, 0.204259644193514440, 0.204308589775524410, 0.204357534846763330, 0.204406479407107990, 0.204455423456436440, 0.204504366994626350, +0.204553310021555750, 0.204602252537101460, 0.204651194541141530, 0.204700136033553610, 0.204749077014215800, 0.204798017483004860, 0.204846957439798860, 0.204895896884475490, +0.204944835816912780, 0.204993774236987590, 0.205042712144577920, 0.205091649539561490, 0.205140586421816370, 0.205189522791219350, 0.205238458647648530, 0.205287393990982000, +0.205336328821096540, 0.205385263137870260, 0.205434196941180810, 0.205483130230906310, 0.205532063006923560, 0.205580995269110640, 0.205629927017345250, 0.205678858251505480, +0.205727788971468100, 0.205776719177111270, 0.205825648868312620, 0.205874578044950300, 0.205923506706901100, 0.205972434854043150, 0.206021362486254080, 0.206070289603412060, +0.206119216205393860, 0.206168142292077640, 0.206217067863341070, 0.206265992919062250, 0.206314917459118010, 0.206363841483386490, 0.206412764991745800, 0.206461687984072740, +0.206510610460245490, 0.206559532420141690, 0.206608453863639520, 0.206657374790615770, 0.206706295200948580, 0.206755215094515640, 0.206804134471195110, 0.206853053330863820, +0.206901971673399880, 0.206950889498681010, 0.206999806806585360, 0.207048723596989750, 0.207097639869772340, 0.207146555624810820, 0.207195470861983370, 0.207244385581166780, +0.207293299782239230, 0.207342213465078890, 0.207391126629562550, 0.207440039275568420, 0.207488951402974160, 0.207537863011658000, 0.207586774101496700, 0.207635684672368510, +0.207684594724151070, 0.207733504256722600, 0.207782413269959910, 0.207831321763741220, 0.207880229737944210, 0.207929137192447070, 0.207978044127126640, 0.208026950541861100, +0.208075856436528210, 0.208124761811006090, 0.208173666665171620, 0.208222570998903010, 0.208271474812078390, 0.208320378104574650, 0.208369280876269960, 0.208418183127042080, +0.208467084856769180, 0.208515986065328120, 0.208564886752597100, 0.208613786918453860, 0.208662686562776590, 0.208711585685442180, 0.208760484286328790, 0.208809382365314180, +0.208858279922276570, 0.208907176957092820, 0.208956073469641120, 0.209004969459799270, 0.209053864927445400, 0.209102759872456440, 0.209151654294710580, 0.209200548194085570, +0.209249441570459630, 0.209298334423709650, 0.209347226753713870, 0.209396118560350420, 0.209445009843496260, 0.209493900603029550, 0.209542790838828100, 0.209591680550770130, +0.209640569738732490, 0.209689458402593450, 0.209738346542230750, 0.209787234157522620, 0.209836121248345970, 0.209885007814579030, 0.209933893856099560, 0.209982779372785780, +0.210031664364514650, 0.210080548831164340, 0.210129432772612650, 0.210178316188737810, 0.210227199079416750, 0.210276081444527700, 0.210324963283948900, 0.210373844597557230, +0.210422725385230940, 0.210471605646847860, 0.210520485382286180, 0.210569364591422860, 0.210618243274136140, 0.210667121430303810, 0.210715999059804090, 0.210764876162513960, +0.210813752738311630, 0.210862628787074930, 0.210911504308682080, 0.210960379303010040, 0.211009253769937040, 0.211058127709340900, 0.211107001121099900, 0.211155874005090950, +0.211204746361192320, 0.211253618189282260, 0.211302489489237720, 0.211351360260936950, 0.211400230504257800, 0.211449100219078480, 0.211497969405275990, 0.211546838062728560, +0.211595706191314040, 0.211644573790910700, 0.211693440861395490, 0.211742307402646680, 0.211791173414542090, 0.211840038896960010, 0.211888903849777400, 0.211937768272872530, +0.211986632166123230, 0.212035495529407810, 0.212084358362603200, 0.212133220665587680, 0.212182082438239550, 0.212230943680435800, 0.212279804392054660, 0.212328664572974030, +0.212377524223072180, 0.212426383342226080, 0.212475241930314000, 0.212524099987213830, 0.212572957512803830, 0.212621814506961020, 0.212670670969563690, 0.212719526900489650, +0.212768382299617250, 0.212817237166823440, 0.212866091501986540, 0.212914945304984420, 0.212963798575695390, 0.213012651313996410, 0.213061503519765800, 0.213110355192881430, +0.213159206333221610, 0.213208056940663330, 0.213256907015084930, 0.213305756556364660, 0.213354605564379600, 0.213403454039008010, 0.213452301980127800, 0.213501149387617250, +0.213549996261353400, 0.213598842601214560, 0.213647688407078620, 0.213696533678823880, 0.213745378416327380, 0.213794222619467430, 0.213843066288121940, 0.213891909422169210, +0.213940752021486270, 0.213989594085951450, 0.214038435615442640, 0.214087276609838170, 0.214136117069015090, 0.214184956992851700, 0.214233796381226360, 0.214282635234016080, +0.214331473551099240, 0.214380311332353720, 0.214429148577657820, 0.214477985286888630, 0.214526821459924490, 0.214575657096643310, 0.214624492196923390, 0.214673326760641820, +0.214722160787676920, 0.214770994277906630, 0.214819827231209290, 0.214868659647461930, 0.214917491526542940, 0.214966322868330230, 0.215015153672702130, 0.215063983939535710, +0.215112813668709320, 0.215161642860101370, 0.215210471513588820, 0.215259299629050130, 0.215308127206363190, 0.215356954245406380, 0.215405780746056740, 0.215454606708192640, +0.215503432131692010, 0.215552257016433240, 0.215601081362293420, 0.215649905169150860, 0.215698728436883560, 0.215747551165369870, 0.215796373354486870, 0.215845195004112920, +0.215894016114126010, 0.215942836684404480, 0.215991656714825430, 0.216040476205267230, 0.216089295155607850, 0.216138113565725650, 0.216186931435497750, 0.216235748764802500, +0.216284565553518330, 0.216333381801522310, 0.216382197508692810, 0.216431012674907860, 0.216479827300045780, 0.216528641383983700, 0.216577454926600050, 0.216626267927772730, +0.216675080387380180, 0.216723892305299480, 0.216772703681409080, 0.216821514515586900, 0.216870324807711370, 0.216919134557659630, 0.216967943765310010, 0.217016752430540550, +0.217065560553229620, 0.217114368133254380, 0.217163175170493220, 0.217211981664824550, 0.217260787616125490, 0.217309593024274470, 0.217358397889149430, 0.217407202210628870, +0.217456005988589860, 0.217504809222910820, 0.217553611913469780, 0.217602414060145130, 0.217651215662814030, 0.217700016721354860, 0.217748817235645680, 0.217797617205564870, +0.217846416630989580, 0.217895215511798270, 0.217944013847868910, 0.217992811639079940, 0.218041608885308520, 0.218090405586433080, 0.218139201742332060, 0.218187997352882580, +0.218236792417963120, 0.218285586937451700, 0.218334380911226730, 0.218383174339165380, 0.218431967221146080, 0.218480759557046850, 0.218529551346746180, 0.218578342590121180, +0.218627133287050360, 0.218675923437411680, 0.218724713041083620, 0.218773502097943360, 0.218822290607869310, 0.218871078570739560, 0.218919865986432570, 0.218968652854825450, +0.219017439175796720, 0.219066224949224790, 0.219115010174986890, 0.219163794852961470, 0.219212578983026540, 0.219261362565060620, 0.219310145598940850, 0.219358928084545710, +0.219407710021753270, 0.219456491410441960, 0.219505272250489020, 0.219554052541772880, 0.219602832284171600, 0.219651611477563680, 0.219700390121826320, 0.219749168216837960, +0.219797945762476690, 0.219846722758620970, 0.219895499205148030, 0.219944275101936340, 0.219993050448863970, 0.220041825245809400, 0.220090599492649810, 0.220139373189263740, +0.220188146335529690, 0.220236918931324830, 0.220285690976527640, 0.220334462471016260, 0.220383233414669140, 0.220432003807363520, 0.220480773648977890, 0.220529542939390310, +0.220578311678479300, 0.220627079866122090, 0.220675847502197180, 0.220724614586582660, 0.220773381119157040, 0.220822147099797500, 0.220870912528382620, 0.220919677404790460, +0.220968441728899540, 0.221017205500587070, 0.221065968719731580, 0.221114731386211630, 0.221163493499904410, 0.221212255060688450, 0.221261016068441840, 0.221309776523043120, +0.221358536424369560, 0.221407295772299640, 0.221456054566711470, 0.221504812807483600, 0.221553570494493280, 0.221602327627619030, 0.221651084206738960, 0.221699840231731620, +0.221748595702474210, 0.221797350618845340, 0.221846104980723100, 0.221894858787986010, 0.221943612040511360, 0.221992364738177680, 0.222041116880863500, 0.222089868468446110, +0.222138619500804050, 0.222187369977815440, 0.222236119899358820, 0.222284869265311490, 0.222333618075551990, 0.222382366329958420, 0.222431114028409400, 0.222479861170782140, +0.222528607756955240, 0.222577353786806790, 0.222626099260215430, 0.222674844177058350, 0.222723588537214190, 0.222772332340561040, 0.222821075586977500, 0.222869818276340840, +0.222918560408529640, 0.222967301983422040, 0.223016043000896610, 0.223064783460830640, 0.223113523363102690, 0.223162262707591400, 0.223211001494174000, 0.223259739722729110, +0.223308477393134860, 0.223357214505269850, 0.223405951059011370, 0.223454687054238020, 0.223503422490827970, 0.223552157368659770, 0.223600891687610740, 0.223649625447559510, +0.223698358648384190, 0.223747091289963400, 0.223795823372174460, 0.223844554894895960, 0.223893285858006080, 0.223942016261383440, 0.223990746104905300, 0.224039475388450290, +0.224088204111897030, 0.224136932275122820, 0.224185659878006290, 0.224234386920425600, 0.224283113402259400, 0.224331839323384960, 0.224380564683680920, 0.224429289483025480, +0.224478013721297250, 0.224526737398373560, 0.224575460514133020, 0.224624183068453830, 0.224672905061214600, 0.224721626492292690, 0.224770347361566700, 0.224819067668914850, +0.224867787414215760, 0.224916506597346770, 0.224965225218186540, 0.225013943276613640, 0.225062660772505470, 0.225111377705740660, 0.225160094076197390, 0.225208809883754300, +0.225257525128288780, 0.225306239809679430, 0.225354953927804500, 0.225403667482542590, 0.225452380473771110, 0.225501092901368660, 0.225549804765213470, 0.225598516065184220, +0.225647226801158260, 0.225695936973014210, 0.225744646580630310, 0.225793355623885250, 0.225842064102656340, 0.225890772016822280, 0.225939479366261300, 0.225988186150852060, +0.226036892370471890, 0.226085598024999530, 0.226134303114313600, 0.226183007638291470, 0.226231711596811800, 0.226280414989752880, 0.226329117816993330, 0.226377820078410590, +0.226426521773883280, 0.226475222903289640, 0.226523923466508400, 0.226572623463416940, 0.226621322893893890, 0.226670021757817560, 0.226718720055066570, 0.226767417785518370, +0.226816114949051630, 0.226864811545544610, 0.226913507574875970, 0.226962203036923130, 0.227010897931564810, 0.227059592258679670, 0.227108286018145090, 0.227156979209839820, +0.227205671833642100, 0.227254363889430630, 0.227303055377082790, 0.227351746296477340, 0.227400436647492520, 0.227449126430007060, 0.227497815643898320, 0.227546504289045050, +0.227595192365325520, 0.227643879872618470, 0.227692566810801240, 0.227741253179752630, 0.227789938979350880, 0.227838624209474700, 0.227887308870001550, 0.227935992960810100, +0.227984676481779110, 0.228033359432786020, 0.228082041813709500, 0.228130723624427880, 0.228179404864819910, 0.228228085534762980, 0.228276765634135820, 0.228325445162816780, +0.228374124120684530, 0.228422802507616540, 0.228471480323491540, 0.228520157568187860, 0.228568834241584200, 0.228617510343558040, 0.228666185873988100, 0.228714860832752690, +0.228763535219730560, 0.228812209034799150, 0.228860882277837240, 0.228909554948723530, 0.228958227047335510, 0.229006898573551940, 0.229055569527251120, 0.229104239908311800, +0.229152909716611420, 0.229201578952028810, 0.229250247614442240, 0.229298915703730480, 0.229347583219771000, 0.229396250162442560, 0.229444916531623490, 0.229493582327192550, +0.229542247549027250, 0.229590912197006340, 0.229639576271008120, 0.229688239770911410, 0.229736902696593640, 0.229785565047933630, 0.229834226824809720, 0.229882888027100660, +0.229931548654683960, 0.229980208707438380, 0.230028868185242710, 0.230077527087974440, 0.230126185415512360, 0.230174843167734790, 0.230223500344520580, 0.230272156945747150, +0.230320812971293360, 0.230369468421037530, 0.230418123294858450, 0.230466777592633650, 0.230515431314241880, 0.230564084459561560, 0.230612737028471430, 0.230661389020849040, +0.230710040436573170, 0.230758691275522200, 0.230807341537574960, 0.230855991222608910, 0.230904640330502900, 0.230953288861135700, 0.231001936814384860, 0.231050584190129170, +0.231099230988247030, 0.231147877208617240, 0.231196522851117300, 0.231245167915626080, 0.231293812402021960, 0.231342456310183710, 0.231391099639988880, 0.231439742391316320, +0.231488384564044410, 0.231537026158051940, 0.231585667173216490, 0.231634307609416890, 0.231682947466531510, 0.231731586744439190, 0.231780225443017460, 0.231828863562145190, +0.231877501101701190, 0.231926138061562980, 0.231974774441609440, 0.232023410241718960, 0.232072045461770400, 0.232120680101641270, 0.232169314161210480, 0.232217947640356360, +0.232266580538957820, 0.232315212856892410, 0.232363844594038970, 0.232412475750275900, 0.232461106325482090, 0.232509736319535060, 0.232558365732313700, 0.232606994563696430, +0.232655622813562110, 0.232704250481788280, 0.232752877568253860, 0.232801504072837200, 0.232850129995417240, 0.232898755335871540, 0.232947380094078920, 0.232996004269918290, +0.233044627863267210, 0.233093250874004590, 0.233141873302008810, 0.233190495147158810, 0.233239116409332120, 0.233287737088407640, 0.233336357184263820, 0.233384976696779540, +0.233433595625832380, 0.233482213971301230, 0.233530831733064550, 0.233579448911001240, 0.233628065504988850, 0.233676681514906310, 0.233725296940632040, 0.233773911782044990, +0.233822526039022730, 0.233871139711444130, 0.233919752799188140, 0.233968365302132330, 0.234016977220155600, 0.234065588553136420, 0.234114199300953730, 0.234162809463485080, +0.234211419040609410, 0.234260028032205190, 0.234308636438151360, 0.234357244258325490, 0.234405851492606510, 0.234454458140872870, 0.234503064203003570, 0.234551669678876140, +0.234600274568369540, 0.234648878871362270, 0.234697482587733240, 0.234746085717360050, 0.234794688260121650, 0.234843290215896980, 0.234891891584563640, 0.234940492366000560, +0.234989092560086270, 0.235037692166699670, 0.235086291185718390, 0.235134889617021420, 0.235183487460487200, 0.235232084715994690, 0.235280681383421560, 0.235329277462646700, +0.235377872953548670, 0.235426467856006380, 0.235475062169897470, 0.235523655895100940, 0.235572249031495230, 0.235620841578959350, 0.235669433537370940, 0.235718024906608950, +0.235766615686552330, 0.235815205877078720, 0.235863795478067100, 0.235912384489396000, 0.235960972910944370, 0.236009560742589890, 0.236058147984211490, 0.236106734635687710, +0.236155320696897540, 0.236203906167718640, 0.236252491048029980, 0.236301075337710080, 0.236349659036637900, 0.236398242144691180, 0.236446824661748850, 0.236495406587689440, +0.236543987922391950, 0.236592568665734080, 0.236641148817594770, 0.236689728377852600, 0.236738307346386510, 0.236786885723074240, 0.236835463507794770, 0.236884040700427070, +0.236932617300848800, 0.236981193308939020, 0.237029768724576260, 0.237078343547639490, 0.237126917778006460, 0.237175491415556110, 0.237224064460167030, 0.237272636911718240, +0.237321208770087390, 0.237369780035153550, 0.237418350706795260, 0.237466920784891510, 0.237515490269320030, 0.237564059159959850, 0.237612627456689480, 0.237661195159387990, +0.237709762267933080, 0.237758328782203790, 0.237806894702079080, 0.237855460027436710, 0.237904024758155700, 0.237952588894114610, 0.238001152435192490, 0.238049715381267040, +0.238098277732217340, 0.238146839487921920, 0.238195400648259840, 0.238243961213108810, 0.238292521182347890, 0.238341080555855680, 0.238389639333511180, 0.238438197515192160, +0.238486755100777630, 0.238535312090146220, 0.238583868483176980, 0.238632424279747620, 0.238680979479737210, 0.238729534083024770, 0.238778088089488080, 0.238826641499006150, +0.238875194311457650, 0.238923746526721550, 0.238972298144675690, 0.239020849165199060, 0.239069399588170330, 0.239117949413468510, 0.239166498640971390, 0.239215047270558030, +0.239263595302107060, 0.239312142735497530, 0.239360689570607190, 0.239409235807315160, 0.239457781445500010, 0.239506326485040860, 0.239554870925815460, 0.239603414767702860, +0.239651958010581730, 0.239700500654331160, 0.239749042698828880, 0.239797584143954020, 0.239846124989585600, 0.239894665235601460, 0.239943204881880650, 0.239991743928301830, +0.240040282374744090, 0.240088820221085190, 0.240137357467204240, 0.240185894112979910, 0.240234430158291300, 0.240282965603016150, 0.240331500447033580, 0.240380034690222290, +0.240428568332461320, 0.240477101373628520, 0.240525633813602950, 0.240574165652263310, 0.240622696889488650, 0.240671227525156850, 0.240719757559146990, 0.240768286991338150, +0.240816815821608160, 0.240865344049836120, 0.240913871675900730, 0.240962398699681110, 0.241010925121055040, 0.241059450939901660, 0.241107976156099660, 0.241156500769528160, +0.241205024780064950, 0.241253548187589210, 0.241302070991979560, 0.241350593193115190, 0.241399114790873920, 0.241447635785134840, 0.241496156175776660, 0.241544675962678560, +0.241593195145718310, 0.241641713724775080, 0.241690231699728000, 0.241738749070454890, 0.241787265836834940, 0.241835781998746810, 0.241884297556069630, 0.241932812508681320, +0.241981326856460950, 0.242029840599287280, 0.242078353737039430, 0.242126866269595260, 0.242175378196833930, 0.242223889518634160, 0.242272400234875090, 0.242320910345434600, +0.242369419850191840, 0.242417928749025490, 0.242466437041814780, 0.242514944728437540, 0.242563451808772950, 0.242611958282700160, 0.242660464150097010, 0.242708969410842750, +0.242757474064816040, 0.242805978111896080, 0.242854481551960740, 0.242902984384889190, 0.242951486610560180, 0.242999988228852880, 0.243048489239645200, 0.243096989642816290, +0.243145489438244910, 0.243193988625810240, 0.243242487205390160, 0.243290985176863840, 0.243339482540110090, 0.243387979295008050, 0.243436475441435620, 0.243484970979272020, +0.243533465908396000, 0.243581960228686720, 0.243630453940022110, 0.243678947042281380, 0.243727439535343730, 0.243775931419087020, 0.243824422693390500, 0.243872913358132910, +0.243921403413193490, 0.243969892858450110, 0.244018381693781980, 0.244066869919067920, 0.244115357534187120, 0.244163844539017490, 0.244212330933438250, 0.244260816717328190, +0.244309301890566520, 0.244357786453031130, 0.244406270404601310, 0.244454753745155800, 0.244503236474573840, 0.244551718592733360, 0.244600200099513580, 0.244648680994793750, +0.244697161278451760, 0.244745640950366880, 0.244794120010417890, 0.244842598458484020, 0.244891076294443260, 0.244939553518174790, 0.244988030129557420, 0.245036506128470420, +0.245084981514791720, 0.245133456288400580, 0.245181930449175800, 0.245230403996996610, 0.245278876931740970, 0.245327349253288170, 0.245375820961516970, 0.245424292056306640, +0.245472762537535170, 0.245521232405081810, 0.245569701658825770, 0.245618170298645050, 0.245666638324418900, 0.245715105736026170, 0.245763572533346100, 0.245812038716256680, +0.245860504284637150, 0.245908969238366360, 0.245957433577323580, 0.246005897301386780, 0.246054360410435240, 0.246102822904347790, 0.246151284783003740, 0.246199746046281030, +0.246248206694058950, 0.246296666726216360, 0.246345126142632540, 0.246393584943185470, 0.246442043127754420, 0.246490500696218280, 0.246538957648456320, 0.246587413984346530, +0.246635869703768220, 0.246684324806600630, 0.246732779292721830, 0.246781233162011090, 0.246829686414347240, 0.246878139049609620, 0.246926591067676200, 0.246975042468426330, +0.247023493251738830, 0.247071943417493060, 0.247120392965566980, 0.247168841895839900, 0.247217290208190750, 0.247265737902498780, 0.247314184978642050, 0.247362631436499860, +0.247411077275951070, 0.247459522496875060, 0.247507967099149770, 0.247556411082654580, 0.247604854447268790, 0.247653297192870440, 0.247701739319338840, 0.247750180826552900, +0.247798621714391900, 0.247847061982733960, 0.247895501631458350, 0.247943940660444010, 0.247992379069570220, 0.248040816858715040, 0.248089254027757860, 0.248137690576577500, +0.248186126505053370, 0.248234561813063500, 0.248282996500487210, 0.248331430567203440, 0.248379864013091510, 0.248428296838029500, 0.248476729041896740, 0.248525160624572610, +0.248573591585935120, 0.248622021925863660, 0.248670451644237150, 0.248718880740934960, 0.248767309215835090, 0.248815737068816990, 0.248864164299759520, 0.248912590908542090, +0.248961016895042740, 0.249009442259140850, 0.249057867000715360, 0.249106291119645630, 0.249154714615809740, 0.249203137489087070, 0.249251559739356560, 0.249299981366497560, +0.249348402370388190, 0.249396822750907830, 0.249445242507935820, 0.249493661641350280, 0.249542080151030580, 0.249590498036855680, 0.249638915298704990, 0.249687331936456560, +0.249735747949989790, 0.249784163339183680, 0.249832578103917570, 0.249880992244069590, 0.249929405759519140, 0.249977818650145150, 0.250026230915827040, 0.250074642556442960, +0.250123053571872260, 0.250171463961993910, 0.250219873726687360, 0.250268282865830690, 0.250316691379303290, 0.250365099266984190, 0.250413506528752720, 0.250461913164487130, +0.250510319174066690, 0.250558724557370880, 0.250607129314277870, 0.250655533444667070, 0.250703936948417360, 0.250752339825408290, 0.250800742075517890, 0.250849143698625650, +0.250897544694610560, 0.250945945063352050, 0.250994344804728260, 0.251042743918618580, 0.251091142404902050, 0.251139540263458080, 0.251187937494164850, 0.251236334096901770, +0.251284730071547830, 0.251333125417982530, 0.251381520136084000, 0.251429914225731630, 0.251478307686804900, 0.251526700519182020, 0.251575092722742370, 0.251623484297364970, +0.251671875242929280, 0.251720265559313480, 0.251768655246397020, 0.251817044304058930, 0.251865432732178710, 0.251913820530634380, 0.251962207699305550, 0.252010594238071210, +0.252058980146810770, 0.252107365425402520, 0.252155750073725820, 0.252204134091659700, 0.252252517479083730, 0.252300900235876040, 0.252349282361916060, 0.252397663857083340, +0.252446044721256040, 0.252494424954313570, 0.252542804556135090, 0.252591183526599980, 0.252639561865586500, 0.252687939572974140, 0.252736316648641930, 0.252784693092469370, +0.252833068904334600, 0.252881444084117170, 0.252929818631696170, 0.252978192546951030, 0.253026565829759960, 0.253074938480002510, 0.253123310497557650, 0.253171681882304990, +0.253220052634122730, 0.253268422752890300, 0.253316792238486800, 0.253365161090791770, 0.253413529309683420, 0.253461896895041230, 0.253510263846744690, 0.253558630164672120, +0.253606995848702940, 0.253655360898716260, 0.253703725314591680, 0.253752089096207280, 0.253800452243442720, 0.253848814756176990, 0.253897176634289620, 0.253945537877658940, +0.253993898486164380, 0.254042258459685090, 0.254090617798100600, 0.254138976501289080, 0.254187334569130170, 0.254235692001502920, 0.254284048798286870, 0.254332404959360210, +0.254380760484602620, 0.254429115373893510, 0.254477469627111210, 0.254525823244135200, 0.254574176224844630, 0.254622528569119100, 0.254670880276836760, 0.254719231347877270, +0.254767581782119670, 0.254815931579443600, 0.254864280739727220, 0.254912629262850130, 0.254960977148691480, 0.255009324397130810, 0.255057671008046440, 0.255106016981317850, +0.255154362316824260, 0.255202707014445140, 0.255251051074058820, 0.255299394495544950, 0.255347737278782960, 0.255396079423651220, 0.255444420930029280, 0.255492761797796230, +0.255541102026831780, 0.255589441617014130, 0.255637780568222840, 0.255686118880337150, 0.255734456553236570, 0.255782793586799400, 0.255831129980905290, 0.255879465735433300, +0.255927800850263120, 0.255976135325272970, 0.256024469160342550, 0.256072802355350900, 0.256121134910177680, 0.256169466824701210, 0.256217798098801020, 0.256266128732356820, +0.256314458725246890, 0.256362788077350750, 0.256411116788547670, 0.256459444858717240, 0.256507772287737750, 0.256556099075488820, 0.256604425221849670, 0.256652750726699850, +0.256701075589917780, 0.256749399811382950, 0.256797723390974670, 0.256846046328572500, 0.256894368624054790, 0.256942690277301160, 0.256991011288190800, 0.257039331656603360, +0.257087651382417130, 0.257135970465511790, 0.257184288905766500, 0.257232606703060920, 0.257280923857273410, 0.257329240368283580, 0.257377556235971080, 0.257425871460214280, +0.257474186040892780, 0.257522499977885840, 0.257570813271073060, 0.257619125920332810, 0.257667437925544750, 0.257715749286588140, 0.257764060003342510, 0.257812370075686360, +0.257860679503499280, 0.257908988286660480, 0.257957296425049610, 0.258005603918545100, 0.258053910767026610, 0.258102216970373330, 0.258150522528464930, 0.258198827441179780, +0.258247131708397530, 0.258295435329997940, 0.258343738305859330, 0.258392040635861350, 0.258440342319883280, 0.258488643357804750, 0.258536943749504200, 0.258585243494861340, +0.258633542593755320, 0.258681841046065900, 0.258730138851671400, 0.258778436010451580, 0.258826732522285720, 0.258875028387053400, 0.258923323604633100, 0.258971618174904490, +0.259019912097746830, 0.259068205373039820, 0.259116498000661890, 0.259164789980492690, 0.259213081312411940, 0.259261371996298060, 0.259309662032030760, 0.259357951419489310, +0.259406240158553400, 0.259454528249101420, 0.259502815691013190, 0.259551102484167910, 0.259599388628445280, 0.259647674123723750, 0.259695958969883010, 0.259744243166802390, +0.259792526714361650, 0.259840809612439110, 0.259889091860914520, 0.259937373459667280, 0.259985654408576960, 0.260033934707522120, 0.260082214356382400, 0.260130493355037180, +0.260178771703366170, 0.260227049401247750, 0.260275326448561770, 0.260323602845187850, 0.260371878591004520, 0.260420153685891500, 0.260468428129728090, 0.260516701922394010, +0.260564975063767800, 0.260613247553729110, 0.260661519392157310, 0.260709790578932120, 0.260758061113932070, 0.260806330997036820, 0.260854600228125790, 0.260902868807078640, +0.260951136733773960, 0.260999404008091350, 0.261047670629910300, 0.261095936599110460, 0.261144201915570360, 0.261192466579169780, 0.261240730589788420, 0.261288993947304870, +0.261337256651598790, 0.261385518702549560, 0.261433780100036980, 0.261482040843939500, 0.261530300934136930, 0.261578560370508640, 0.261626819152934340, 0.261675077281292580, +0.261723334755463110, 0.261771591575325310, 0.261819847740758950, 0.261868103251642560, 0.261916358107855910, 0.261964612309278370, 0.262012865855789700, 0.262061118747268450, +0.262109370983594440, 0.262157622564647420, 0.262205873490305890, 0.262254123760449650, 0.262302373374958150, 0.262350622333711150, 0.262398870636587120, 0.262447118283465950, +0.262495365274226950, 0.262543611608750000, 0.262591857286913590, 0.262640102308597520, 0.262688346673681180, 0.262736590382044440, 0.262784833433565790, 0.262833075828125040, +0.262881317565601620, 0.262929558645875310, 0.262977799068824680, 0.263026038834329570, 0.263074277942269790, 0.263122516392523880, 0.263170754184971660, 0.263218991319492560, +0.263267227795966450, 0.263315463614271830, 0.263363698774288500, 0.263411933275895960, 0.263460167118974020, 0.263508400303401220, 0.263556632829057450, 0.263604864695822060, +0.263653095903574940, 0.263701326452194680, 0.263749556341561050, 0.263797785571553590, 0.263846014142052050, 0.263894242052935100, 0.263942469304082490, 0.263990695895373770, +0.264038921826688700, 0.264087147097905870, 0.264135371708905220, 0.264183595659566510, 0.264231818949768440, 0.264280041579390780, 0.264328263548313070, 0.264376484856415070, +0.264424705503575500, 0.264472925489674100, 0.264521144814590440, 0.264569363478204310, 0.264617581480394330, 0.264665798821040410, 0.264714015500021990, 0.264762231517219000, +0.264810446872509990, 0.264858661565774810, 0.264906875596893020, 0.264955088965744490, 0.265003301672207760, 0.265051513716162810, 0.265099725097489470, 0.265147935816066440, +0.265196145871773540, 0.265244355264490250, 0.265292563994096510, 0.265340772060470960, 0.265388979463493490, 0.265437186203043520, 0.265485392279001030, 0.265533597691244680, +0.265581802439654290, 0.265630006524109400, 0.265678209944489930, 0.265726412700674490, 0.265774614792543050, 0.265822816219975060, 0.265871016982850430, 0.265919217081047880, +0.265967416514447220, 0.266015615282928500, 0.266063813386370310, 0.266112010824652580, 0.266160207597654800, 0.266208403705256950, 0.266256599147337680, 0.266304793923776870, +0.266352988034454120, 0.266401181479249290, 0.266449374258041110, 0.266497566370709480, 0.266545757817133910, 0.266593948597194430, 0.266642138710769640, 0.266690328157739460, +0.266738516937983510, 0.266786705051381630, 0.266834892497812610, 0.266883079277156320, 0.266931265389292400, 0.266979450834100680, 0.267027635611459920, 0.267075819721250110, +0.267124003163351110, 0.267172185937641750, 0.267220368044001840, 0.267268549482311100, 0.267316730252449340, 0.267364910354295380, 0.267413089787729100, 0.267461268552630140, +0.267509446648878440, 0.267557624076352640, 0.267605800834932790, 0.267653976924498490, 0.267702152344929610, 0.267750327096104970, 0.267798501177904490, 0.267846674590207780, +0.267894847332894810, 0.267943019405844250, 0.267991190808936190, 0.268039361542050550, 0.268087531605066100, 0.268135700997862820, 0.268183869720320270, 0.268232037772318470, +0.268280205153736180, 0.268328371864453350, 0.268376537904349620, 0.268424703273304920, 0.268472867971198070, 0.268521031997909050, 0.268569195353317470, 0.268617358037303300, +0.268665520049745310, 0.268713681390523540, 0.268761842059517530, 0.268810002056607380, 0.268858161381671790, 0.268906320034590750, 0.268954478015244410, 0.269002635323511430, +0.269050791959271840, 0.269098947922405240, 0.269147103212791730, 0.269195257830310060, 0.269243411774840240, 0.269291565046261840, 0.269339717644455020, 0.269387869569298440, +0.269436020820672200, 0.269484171398455870, 0.269532321302529580, 0.269580470532772070, 0.269628619089063330, 0.269676766971283120, 0.269724914179311330, 0.269773060713026870, +0.269821206572309790, 0.269869351757040080, 0.269917496267096600, 0.269965640102359350, 0.270013783262707970, 0.270061925748022620, 0.270110067558182010, 0.270158208693066230, +0.270206349152554930, 0.270254488936528150, 0.270302628044864770, 0.270350766477444770, 0.270398904234147920, 0.270447041314854200, 0.270495177719442430, 0.270543313447792750, +0.270591448499784780, 0.270639582875298600, 0.270687716574213030, 0.270735849596408170, 0.270783981941763730, 0.270832113610159690, 0.270880244601474970, 0.270928374915589690, +0.270976504552383870, 0.271024633511736330, 0.271072761793527240, 0.271120889397636230, 0.271169016323943410, 0.271217142572327650, 0.271265268142668990, 0.271313393034847190, +0.271361517248742360, 0.271409640784233300, 0.271457763641200110, 0.271505885819522510, 0.271554007319080640, 0.271602128139753320, 0.271650248281420700, 0.271698367743962440, +0.271746486527258690, 0.271794604631188260, 0.271842722055631370, 0.271890838800468100, 0.271938954865577290, 0.271987070250839070, 0.272035184956133210, 0.272083298981339820, +0.272131412326337750, 0.272179524991007120, 0.272227636975227730, 0.272275748278879630, 0.272323858901841740, 0.272371968843994230, 0.272420078105216730, 0.272468186685389520, +0.272516294584391420, 0.272564401802102560, 0.272612508338402730, 0.272660614193172000, 0.272708719366289320, 0.272756823857634890, 0.272804927667088800, 0.272853030794529940, +0.272901133239838500, 0.272949235002894250, 0.272997336083577350, 0.273045436481766710, 0.273093536197342450, 0.273141635230184310, 0.273189733580172570, 0.273237831247186040, +0.273285928231104920, 0.273334024531808990, 0.273382120149178400, 0.273430215083092120, 0.273478309333430310, 0.273526402900072680, 0.273574495782899500, 0.273622587981789680, +0.273670679496623380, 0.273718770327280370, 0.273766860473640850, 0.273814949935583750, 0.273863038712989280, 0.273911126805737650, 0.273959214213707780, 0.274007300936779830, +0.274055386974833670, 0.274103472327749450, 0.274151556995406160, 0.274199640977683960, 0.274247724274462650, 0.274295806885622440, 0.274343888811042270, 0.274391970050602450, +0.274440050604182640, 0.274488130471663150, 0.274536209652922910, 0.274584288147842190, 0.274632365956300690, 0.274680443078178740, 0.274728519513355200, 0.274776595261710390, +0.274824670323124580, 0.274872744697476580, 0.274920818384646770, 0.274968891384514860, 0.275016963696961210, 0.275065035321864710, 0.275113106259105620, 0.275161176508563750, +0.275209246070119370, 0.275257314943651410, 0.275305383129040240, 0.275353450626165560, 0.275401517434907710, 0.275449583555145590, 0.275497648986759550, 0.275545713729629380, +0.275593777783635360, 0.275641841148656470, 0.275689903824572980, 0.275737965811265140, 0.275786027108612000, 0.275834087716493760, 0.275882147634790300, 0.275930206863381880, +0.275978265402147540, 0.276026323250967540, 0.276074380409721710, 0.276122436878290360, 0.276170492656552520, 0.276218547744388420, 0.276266602141677970, 0.276314655848301450, +0.276362708864137830, 0.276410761189067430, 0.276458812822970190, 0.276506863765726310, 0.276554914017214830, 0.276602963577316060, 0.276651012445910340, 0.276699060622876640, +0.276747108108095270, 0.276795154901446180, 0.276843201002809570, 0.276891246412064580, 0.276939291129091440, 0.276987335153770110, 0.277035378485980870, 0.277083421125602750, +0.277131463072516020, 0.277179504326600710, 0.277227544887737040, 0.277275584755804050, 0.277323623930682110, 0.277371662412251140, 0.277419700200391420, 0.277467737294982030, +0.277515773695903300, 0.277563809403035100, 0.277611844416257860, 0.277659878735450560, 0.277707912360493530, 0.277755945291267180, 0.277803977527650510, 0.277852009069523950, +0.277900039916767320, 0.277948070069261030, 0.277996099526884140, 0.278044128289517020, 0.278092156357039600, 0.278140183729332140, 0.278188210406273840, 0.278236236387745030, +0.278284261673625580, 0.278332286263795970, 0.278380310158135140, 0.278428333356523620, 0.278476355858841170, 0.278524377664968350, 0.278572398774784070, 0.278620419188168880, +0.278668438905003040, 0.278716457925165640, 0.278764476248537120, 0.278812493874997400, 0.278860510804426860, 0.278908527036704660, 0.278956542571711100, 0.279004557409326230, +0.279052571549430360, 0.279100584991902660, 0.279148597736623480, 0.279196609783472770, 0.279244621132331010, 0.279292631783077280, 0.279340641735591920, 0.279388650989755020, +0.279436659545446890, 0.279484667402546630, 0.279532674560934780, 0.279580681020491660, 0.279628686781096370, 0.279676691842629390, 0.279724696204970650, 0.279772699868000630, +0.279820702831598430, 0.279868705095644490, 0.279916706660018780, 0.279964707524601670, 0.280012707689272440, 0.280060707153911400, 0.280108705918398590, 0.280156703982614500, +0.280204701346438160, 0.280252698009750060, 0.280300693972430240, 0.280348689234359130, 0.280396683795415880, 0.280444677655480870, 0.280492670814434190, 0.280540663272156270, +0.280588655028526260, 0.280636646083424590, 0.280684636436731750, 0.280732626088326890, 0.280780615038090490, 0.280828603285902530, 0.280876590831643460, 0.280924577675192520, +0.280972563816430150, 0.281020549255236340, 0.281068533991491560, 0.281116518025075090, 0.281164501355867290, 0.281212483983748210, 0.281260465908598380, 0.281308447130296960, +0.281356427648724430, 0.281404407463760780, 0.281452386575286590, 0.281500364983180980, 0.281548342687324480, 0.281596319687597520, 0.281644295983879360, 0.281692271576050480, +0.281740246463990870, 0.281788220647581080, 0.281836194126700360, 0.281884166901229080, 0.281932138971047460, 0.281980110336035870, 0.282028080996073570, 0.282076050951041100, +0.282124020200818500, 0.282171988745286260, 0.282219956584323640, 0.282267923717811120, 0.282315890145628800, 0.282363855867657170, 0.282411820883775420, 0.282459785193864220, +0.282507748797803940, 0.282555711695473830, 0.282603673886754450, 0.282651635371525930, 0.282699596149668720, 0.282747556221062070, 0.282795515585586580, 0.282843474243122280, +0.282891432193549670, 0.282939389436748120, 0.282987345972598060, 0.283035301800979690, 0.283083256921773440, 0.283131211334858630, 0.283179165040115810, 0.283227118037425060, +0.283275070326666930, 0.283323021907720740, 0.283370972780466970, 0.283418922944785770, 0.283466872400557680, 0.283514821147661970, 0.283562769185979220, 0.283610716515389990, +0.283658663135773540, 0.283706609047010390, 0.283754554248980770, 0.283802498741565160, 0.283850442524642920, 0.283898385598094550, 0.283946327961800190, 0.283994269615640450, +0.284042210559494630, 0.284090150793243290, 0.284138090316766510, 0.284186029129945010, 0.284233967232657980, 0.284281904624786030, 0.284329841306209310, 0.284377777276808410, +0.284425712536462650, 0.284473647085052570, 0.284521580922458880, 0.284569514048560730, 0.284617446463238830, 0.284665378166373330, 0.284713309157844820, 0.284761239437532570, +0.284809169005317280, 0.284857097861078990, 0.284905026004698410, 0.284952953436054870, 0.285000880155028950, 0.285048806161500800, 0.285096731455351030, 0.285144656036459050, +0.285192579904705420, 0.285240503059970340, 0.285288425502134460, 0.285336347231077040, 0.285384268246678790, 0.285432188548820240, 0.285480108137380840, 0.285528027012241170, +0.285575945173281440, 0.285623862620382250, 0.285671779353422970, 0.285719695372284250, 0.285767610676846310, 0.285815525266989780, 0.285863439142593990, 0.285911352303539590, +0.285959264749706840, 0.286007176480976290, 0.286055087497227470, 0.286102997798340860, 0.286150907384196740, 0.286198816254675860, 0.286246724409657430, 0.286294631849022260, +0.286342538572650910, 0.286390444580422730, 0.286438349872218500, 0.286486254447918360, 0.286534158307403090, 0.286582061450551930, 0.286629963877245600, 0.286677865587364410, +0.286725766580788970, 0.286773666857398690, 0.286821566417074180, 0.286869465259695810, 0.286917363385144230, 0.286965260793298760, 0.287013157484040160, 0.287061053457248690, +0.287108948712805010, 0.287156843250588490, 0.287204737070479890, 0.287252630172359470, 0.287300522556107830, 0.287348414221604510, 0.287396305168730160, 0.287444195397365430, +0.287492084907389810, 0.287539973698684000, 0.287587861771128270, 0.287635749124603270, 0.287683635758988480, 0.287731521674164600, 0.287779406870011910, 0.287827291346411160, +0.287875175103241730, 0.287923058140384380, 0.287970940457719370, 0.288018822055127410, 0.288066702932487980, 0.288114583089681800, 0.288162462526589170, 0.288210341243090810, +0.288258219239066190, 0.288306096514395980, 0.288353973068960990, 0.288401848902640650, 0.288449724015315660, 0.288497598406866400, 0.288545472077173510, 0.288593345026116550, +0.288641217253576220, 0.288689088759432830, 0.288736959543567150, 0.288784829605858660, 0.288832698946188130, 0.288880567564435810, 0.288928435460482470, 0.288976302634207650, +0.289024169085492060, 0.289072034814216060, 0.289119899820260430, 0.289167764103504590, 0.289215627663829360, 0.289263490501115440, 0.289311352615242380, 0.289359214006090990, +0.289407074673541490, 0.289454934617474790, 0.289502793837770330, 0.289550652334308820, 0.289598510106970740, 0.289646367155636800, 0.289694223480186530, 0.289742079080500650, +0.289789933956459630, 0.289837788107944140, 0.289885641534833820, 0.289933494237009370, 0.289981346214351180, 0.290029197466740050, 0.290077047994055480, 0.290124897796178340, +0.290172746872988880, 0.290220595224368050, 0.290268442850195260, 0.290316289750351400, 0.290364135924717210, 0.290411981373172310, 0.290459826095597400, 0.290507670091872950, +0.290555513361879740, 0.290603355905497300, 0.290651197722606500, 0.290699038813087730, 0.290746879176821740, 0.290794718813688120, 0.290842557723567760, 0.290890395906340970, +0.290938233361888620, 0.290986070090090250, 0.291033906090826740, 0.291081741363978410, 0.291129575909426170, 0.291177409727049590, 0.291225242816729510, 0.291273075178346720, +0.291320906811780800, 0.291368737716912630, 0.291416567893622580, 0.291464397341791580, 0.291512226061299120, 0.291560054052026120, 0.291607881313853010, 0.291655707846660620, +0.291703533650328470, 0.291751358724737560, 0.291799183069768210, 0.291847006685301340, 0.291894829571216540, 0.291942651727394640, 0.291990473153716120, 0.292038293850061860, +0.292086113816311440, 0.292133933052345700, 0.292181751558045600, 0.292229569333290640, 0.292277386377961800, 0.292325202691939510, 0.292373018275104590, 0.292420833127336740, +0.292468647248516790, 0.292516460638525210, 0.292564273297242940, 0.292612085224549510, 0.292659896420325920, 0.292707706884452520, 0.292755516616810320, 0.292803325617278950, +0.292851133885739190, 0.292898941422071620, 0.292946748226157130, 0.292994554297875350, 0.293042359637107170, 0.293090164243733520, 0.293137968117634040, 0.293185771258689660, +0.293233573666780820, 0.293281375341788500, 0.293329176283592290, 0.293376976492073120, 0.293424775967111530, 0.293472574708588450, 0.293520372716383480, 0.293568169990377600, +0.293615966530451300, 0.293663762336485450, 0.293711557408359860, 0.293759351745955300, 0.293807145349152370, 0.293854938217832040, 0.293902730351873920, 0.293950521751158990, +0.293998312415567730, 0.294046102344981130, 0.294093891539278840, 0.294141679998341790, 0.294189467722051010, 0.294237254710286110, 0.294285040962928120, 0.294332826479857480, +0.294380611260955220, 0.294428395306100990, 0.294476178615175830, 0.294523961188060180, 0.294571743024635010, 0.294619524124780100, 0.294667304488376410, 0.294715084115304390, +0.294762863005445130, 0.294810641158678280, 0.294858418574884820, 0.294906195253945350, 0.294953971195740790, 0.295001746400150870, 0.295049520867056550, 0.295097294596338930, +0.295145067587877620, 0.295192839841553590, 0.295240611357247500, 0.295288382134840320, 0.295336152174211770, 0.295383921475242780, 0.295431690037814050, 0.295479457861806460, +0.295527224947099880, 0.295574991293575170, 0.295622756901113000, 0.295670521769594350, 0.295718285898899040, 0.295766049288907930, 0.295813811939501740, 0.295861573850561440, +0.295909335021966760, 0.295957095453598770, 0.296004855145338470, 0.296052614097065570, 0.296100372308661150, 0.296148129780005820, 0.296195886510980610, 0.296243642501465180, +0.296291397751340720, 0.296339152260487740, 0.296386906028787310, 0.296434659056119150, 0.296482411342364360, 0.296530162887403580, 0.296577913691117800, 0.296625663753386780, +0.296673413074091620, 0.296721161653112960, 0.296768909490331800, 0.296816656585627950, 0.296864402938882390, 0.296912148549975890, 0.296959893418789420, 0.297007637545202820, +0.297055380929097110, 0.297103123570353400, 0.297150865468851390, 0.297198606624472280, 0.297246347037096630, 0.297294086706605510, 0.297341825632878750, 0.297389563815797450, +0.297437301255242260, 0.297485037951094210, 0.297532773903233180, 0.297580509111540160, 0.297628243575895900, 0.297675977296181450, 0.297723710272276620, 0.297771442504062570, +0.297819173991419880, 0.297866904734229660, 0.297914634732371730, 0.297962363985727290, 0.298010092494177310, 0.298057820257601690, 0.298105547275881510, 0.298153273548897480, +0.298200999076530690, 0.298248723858660970, 0.298296447895169400, 0.298344171185936760, 0.298391893730844130, 0.298439615529771270, 0.298487336582599460, 0.298535056889209230, +0.298582776449481830, 0.298630495263297050, 0.298678213330536070, 0.298725930651079500, 0.298773647224808540, 0.298821363051603060, 0.298869078131344170, 0.298916792463913010, +0.298964506049189390, 0.299012218887054590, 0.299059930977389200, 0.299107642320074420, 0.299155352914990070, 0.299203062762017360, 0.299250771861036990, 0.299298480211930170, +0.299346187814576670, 0.299393894668857690, 0.299441600774653980, 0.299489306131846710, 0.299537010740315750, 0.299584714599942290, 0.299632417710607000, 0.299680120072191140, +0.299727821684574510, 0.299775522547638340, 0.299823222661263770, 0.299870922025330720, 0.299918620639720410, 0.299966318504313490, 0.300014015618991210, 0.300061711983633520, +0.300109407598121490, 0.300157102462335960, 0.300204796576158120, 0.300252489939467850, 0.300300182552146360, 0.300347874414074400, 0.300395565525133190, 0.300443255885202600, +0.300490945494163940, 0.300538634351897870, 0.300586322458285650, 0.300634009813207200, 0.300681696416543740, 0.300729382268176030, 0.300777067367985260, 0.300824751715851440, +0.300872435311655690, 0.300920118155279360, 0.300967800246602250, 0.301015481585505620, 0.301063162171870350, 0.301110842005577530, 0.301158521086507200, 0.301206199414540630, +0.301253876989558520, 0.301301553811442140, 0.301349229880071400, 0.301396905195327640, 0.301444579757091600, 0.301492253565244560, 0.301539926619666440, 0.301587598920238510, +0.301635270466841580, 0.301682941259356910, 0.301730611297664490, 0.301778280581645460, 0.301825949111181210, 0.301873616886151660, 0.301921283906438080, 0.301968950171921270, +0.302016615682482500, 0.302064280438001760, 0.302111944438360370, 0.302159607683439080, 0.302207270173119210, 0.302254931907280700, 0.302302592885804910, 0.302350253108572610, +0.302397912575465110, 0.302445571286362400, 0.302493229241145800, 0.302540886439696070, 0.302588542881894570, 0.302636198567621310, 0.302683853496757530, 0.302731507669184550, +0.302779161084782370, 0.302826813743432290, 0.302874465645015130, 0.302922116789412330, 0.302969767176503760, 0.303017416806170730, 0.303065065678294220, 0.303112713792755450, +0.303160361149434450, 0.303208007748212600, 0.303255653588970660, 0.303303298671590060, 0.303350942995950780, 0.303398586561934140, 0.303446229369421060, 0.303493871418292820, +0.303541512708429440, 0.303589153239712310, 0.303636793012022290, 0.303684432025240700, 0.303732070279247650, 0.303779707773924380, 0.303827344509152280, 0.303874980484811370, +0.303922615700783050, 0.303970250156948170, 0.304017883853188060, 0.304065516789382870, 0.304113148965413860, 0.304160780381162010, 0.304208411036508590, 0.304256040931333740, +0.304303670065518780, 0.304351298438944650, 0.304398926051492660, 0.304446552903043010, 0.304494178993476920, 0.304541804322675410, 0.304589428890519760, 0.304637052696890180, +0.304684675741667970, 0.304732298024734450, 0.304779919545969780, 0.304827540305255270, 0.304875160302471970, 0.304922779537501190, 0.304970398010223020, 0.305018015720518840, +0.305065632668269640, 0.305113248853356780, 0.305160864275660360, 0.305208478935061810, 0.305256092831442060, 0.305303705964682480, 0.305351318334663220, 0.305398929941265660, +0.305446540784370780, 0.305494150863859950, 0.305541760179613320, 0.305589368731512320, 0.305636976519438330, 0.305684583543271440, 0.305732189802893130, 0.305779795298184330, +0.305827400029026420, 0.305875003995299650, 0.305922607196885350, 0.305970209633664500, 0.306017811305518580, 0.306065412212327690, 0.306113012353973310, 0.306160611730336370, +0.306208210341298300, 0.306255808186739360, 0.306303405266540820, 0.306351001580583810, 0.306398597128749730, 0.306446191910918650, 0.306493785926972180, 0.306541379176791640, +0.306588971660257230, 0.306636563377250370, 0.306684154327652110, 0.306731744511343940, 0.306779333928205940, 0.306826922578119610, 0.306874510460965980, 0.306922097576626470, +0.306969683924981310, 0.307017269505911960, 0.307064854319299420, 0.307112438365025160, 0.307160021642969350, 0.307207604153013570, 0.307255185895038700, 0.307302766868926320, +0.307350347074556610, 0.307397926511811030, 0.307445505180570620, 0.307493083080716880, 0.307540660212130000, 0.307588236574691480, 0.307635812168282790, 0.307683386992784190, +0.307730961048077070, 0.307778534334042560, 0.307826106850562110, 0.307873678597516020, 0.307921249574785670, 0.307968819782252270, 0.308016389219797180, 0.308063957887300730, +0.308111525784644400, 0.308159092911709230, 0.308206659268376760, 0.308254224854527190, 0.308301789670042070, 0.308349353714802490, 0.308396916988689930, 0.308444479491584710, +0.308492041223368210, 0.308539602183922070, 0.308587162373126560, 0.308634721790863040, 0.308682280437012790, 0.308729838311457230, 0.308777395414076670, 0.308824951744752610, +0.308872507303366130, 0.308920062089798890, 0.308967616103930980, 0.309015169345644100, 0.309062721814819250, 0.309110273511338070, 0.309157824435080720, 0.309205374585928890, +0.309252923963763580, 0.309300472568466380, 0.309348020399917540, 0.309395567457998680, 0.309443113742591370, 0.309490659253575770, 0.309538203990833590, 0.309585747954245870, +0.309633291143694200, 0.309680833559058900, 0.309728375200221510, 0.309775916067063170, 0.309823456159465490, 0.309870995477308730, 0.309918534020474480, 0.309966071788843890, +0.310013608782298500, 0.310061145000718740, 0.310108680443986100, 0.310156215111981710, 0.310203749004587250, 0.310251282121683010, 0.310298814463150550, 0.310346346028871010, +0.310393876818726100, 0.310441406832596020, 0.310488936070362430, 0.310536464531906970, 0.310583992217109860, 0.310631519125852850, 0.310679045258016980, 0.310726570613483910, +0.310774095192134060, 0.310821618993848910, 0.310869142018509740, 0.310916664265998120, 0.310964185736194390, 0.311011706428980240, 0.311059226344236830, 0.311106745481845750, +0.311154263841687430, 0.311201781423643410, 0.311249298227594890, 0.311296814253423650, 0.311344329501009880, 0.311391843970235280, 0.311439357660981580, 0.311486870573128960, +0.311534382706559200, 0.311581894061153500, 0.311629404636793510, 0.311676914433359540, 0.311724423450733310, 0.311771931688796020, 0.311819439147429270, 0.311866945826513590, +0.311914451725930460, 0.311961956845561270, 0.312009461185287550, 0.312056964744989780, 0.312104467524549620, 0.312151969523848270, 0.312199470742767440, 0.312246971181187490, +0.312294470838990090, 0.312341969716056990, 0.312389467812268510, 0.312436965127506350, 0.312484461661651840, 0.312531957414586500, 0.312579452386190890, 0.312626946576346710, +0.312674439984935100, 0.312721932611837780, 0.312769424456935290, 0.312816915520109210, 0.312864405801240810, 0.312911895300211850, 0.312959384016902710, 0.313006871951195090, +0.313054359102970300, 0.313101845472110060, 0.313149331058494800, 0.313196815862006210, 0.313244299882525950, 0.313291783119934550, 0.313339265574113680, 0.313386747244944700, +0.313434228132309200, 0.313481708236087730, 0.313529187556161990, 0.313576666092413300, 0.313624143844723370, 0.313671620812972620, 0.313719096997042870, 0.313766572396815320, +0.313814047012171800, 0.313861520842992740, 0.313908993889159880, 0.313956466150554560, 0.314003937627058420, 0.314051408318552050, 0.314098878224917220, 0.314146347346035140, +0.314193815681787610, 0.314241283232055080, 0.314288749996719410, 0.314336215975662250, 0.314383681168764140, 0.314431145575906850, 0.314478609196971680, 0.314526072031840410, +0.314573534080393510, 0.314620995342512810, 0.314668455818079620, 0.314715915506975700, 0.314763374409081590, 0.314810832524278990, 0.314858289852449350, 0.314905746393474410, +0.314953202147234660, 0.315000657113611910, 0.315048111292487550, 0.315095564683743280, 0.315143017287259740, 0.315190469102918590, 0.315237920130601760, 0.315285370370189670, +0.315332819821564140, 0.315380268484606600, 0.315427716359198750, 0.315475163445221250, 0.315522609742555800, 0.315570055251083840, 0.315617499970687170, 0.315664943901246330, +0.315712387042643150, 0.315759829394758940, 0.315807270957475630, 0.315854711730673700, 0.315902151714235020, 0.315949590908040920, 0.315997029311973270, 0.316044466925912650, +0.316091903749740830, 0.316139339783339690, 0.316186775026589820, 0.316234209479372970, 0.316281643141570590, 0.316329076013064540, 0.316376508093735350, 0.316423939383464910, +0.316471369882134650, 0.316518799589626370, 0.316566228505820670, 0.316613656630599370, 0.316661083963843960, 0.316708510505436250, 0.316755936255256830, 0.316803361213187580, +0.316850785379109930, 0.316898208752905750, 0.316945631334455640, 0.316993053123641400, 0.317040474120344530, 0.317087894324446950, 0.317135313735829210, 0.317182732354373110, +0.317230150179960650, 0.317277567212472410, 0.317324983451790220, 0.317372398897795620, 0.317419813550370410, 0.317467227409395260, 0.317514640474751970, 0.317562052746322150, +0.317609464223987610, 0.317656874907629010, 0.317704284797128200, 0.317751693892366680, 0.317799102193226320, 0.317846509699587830, 0.317893916411333020, 0.317941322328343430, +0.317988727450501000, 0.318036131777686300, 0.318083535309781230, 0.318130938046667810, 0.318178339988226590, 0.318225741134339490, 0.318273141484888110, 0.318320541039754270, +0.318367939798818610, 0.318415337761963180, 0.318462734929069350, 0.318510131300019090, 0.318557526874693130, 0.318604921652973330, 0.318652315634741220, 0.318699708819878750, +0.318747101208266600, 0.318794492799786670, 0.318841883594320530, 0.318889273591750070, 0.318936662791956040, 0.318984051194820320, 0.319031438800224940, 0.319078825608050510, +0.319126211618179000, 0.319173596830492010, 0.319220981244871420, 0.319268364861197970, 0.319315747679353610, 0.319363129699219870, 0.319410510920678680, 0.319457891343610860, +0.319505270967898270, 0.319552649793422520, 0.319600027820065580, 0.319647405047708170, 0.319694781476232200, 0.319742157105519290, 0.319789531935451400, 0.319836905965909250, +0.319884279196774870, 0.319931651627930190, 0.319979023259255980, 0.320026394090634210, 0.320073764121946440, 0.320121133353074680, 0.320168501783899660, 0.320215869414303410, +0.320263236244167470, 0.320310602273373880, 0.320357967501803340, 0.320405331929337900, 0.320452695555859090, 0.320500058381249010, 0.320547420405388360, 0.320594781628159130, +0.320642142049442970, 0.320689501669121860, 0.320736860487076560, 0.320784218503189170, 0.320831575717341170, 0.320878932129414710, 0.320926287739290440, 0.320973642546850460, +0.321020996551976800, 0.321068349754550290, 0.321115702154452840, 0.321163053751566120, 0.321210404545772210, 0.321257754536951880, 0.321305103724987160, 0.321352452109759710, +0.321399799691151510, 0.321447146469043380, 0.321494492443317400, 0.321541837613855190, 0.321589181980538820, 0.321636525543249060, 0.321683868301868010, 0.321731210256277270, +0.321778551406358910, 0.321825891751993780, 0.321873231293063890, 0.321920570029451350, 0.321967907961036970, 0.322015245087702850, 0.322062581409330580, 0.322109916925802320, +0.322157251636998820, 0.322204585542802180, 0.322251918643094050, 0.322299250937756580, 0.322346582426670580, 0.322393913109718100, 0.322441242986780840, 0.322488572057740900, +0.322535900322479090, 0.322583227780877560, 0.322630554432817910, 0.322677880278182340, 0.322725205316851670, 0.322772529548707940, 0.322819852973633300, 0.322867175591508630, +0.322914497402216010, 0.322961818405637200, 0.323009138601654200, 0.323056457990147930, 0.323103776571000530, 0.323151094344093730, 0.323198411309309600, 0.323245727466528960, +0.323293042815634090, 0.323340357356506570, 0.323387671089028550, 0.323434984013080960, 0.323482296128545900, 0.323529607435305120, 0.323576917933240730, 0.323624227622233640, +0.323671536502165960, 0.323718844572919440, 0.323766151834376240, 0.323813458286417220, 0.323860763928924600, 0.323908068761780410, 0.323955372784865690, 0.324002675998062540, +0.324049978401252660, 0.324097279994318310, 0.324144580777140310, 0.324191880749600870, 0.324239179911581690, 0.324286478262965030, 0.324333775803631710, 0.324381072533463990, +0.324428368452343570, 0.324475663560152620, 0.324522957856772150, 0.324570251342084230, 0.324617544015970700, 0.324664835878313740, 0.324712126928994320, 0.324759417167894530, +0.324806706594896580, 0.324853995209881510, 0.324901283012731410, 0.324948570003328110, 0.324995856181553850, 0.325043141547289470, 0.325090426100417270, 0.325137709840818970, +0.325184992768376870, 0.325232274882971790, 0.325279556184486120, 0.325326836672801490, 0.325374116347800220, 0.325421395209363200, 0.325468673257372720, 0.325515950491710560, +0.325563226912258970, 0.325610502518898840, 0.325657777311512460, 0.325705051289982120, 0.325752324454188670, 0.325799596804014440, 0.325846868339341180, 0.325894139060051210, +0.325941408966025470, 0.325988678057146150, 0.326035946333295190, 0.326083213794354790, 0.326130480440205930, 0.326177746270730870, 0.326225011285811380, 0.326272275485329890, +0.326319538869167200, 0.326366801437205700, 0.326414063189327200, 0.326461324125413950, 0.326508584245347010, 0.326555843549008570, 0.326603102036280960, 0.326650359707045150, +0.326697616561183460, 0.326744872598577710, 0.326792127819110210, 0.326839382222661960, 0.326886635809115260, 0.326933888578351980, 0.326981140530254400, 0.327028391664703540, +0.327075641981581730, 0.327122891480770780, 0.327170140162153010, 0.327217388025609510, 0.327264635071022550, 0.327311881298273930, 0.327359126707246100, 0.327406371297820020, +0.327453615069877970, 0.327500858023301920, 0.327548100157974140, 0.327595341473775670, 0.327642581970588880, 0.327689821648296020, 0.327737060506778200, 0.327784298545917730, +0.327831535765596540, 0.327878772165696890, 0.327926007746099920, 0.327973242506687910, 0.328020476447342780, 0.328067709567946900, 0.328114941868381360, 0.328162173348528430, +0.328209404008270030, 0.328256633847488600, 0.328303862866065170, 0.328351091063882050, 0.328398318440821180, 0.328445544996764980, 0.328492770731594500, 0.328539995645192040, +0.328587219737440040, 0.328634443008219590, 0.328681665457413010, 0.328728887084902280, 0.328776107890569770, 0.328823327874296520, 0.328870547035965020, 0.328917765375457080, +0.328964982892655190, 0.329012199587440380, 0.329059415459695140, 0.329106630509301330, 0.329153844736141340, 0.329201058140096310, 0.329248270721048670, 0.329295482478880350, +0.329342693413473770, 0.329389903524709980, 0.329437112812471460, 0.329484321276640570, 0.329531528917098470, 0.329578735733727530, 0.329625941726409740, 0.329673146895027580, +0.329720351239462080, 0.329767554759595680, 0.329814757455310470, 0.329861959326488710, 0.329909160373011660, 0.329956360594761740, 0.330003559991620900, 0.330050758563471550, +0.330097956310194900, 0.330145153231673370, 0.330192349327788960, 0.330239544598424080, 0.330286739043459900, 0.330333932662778940, 0.330381125456263080, 0.330428317423794860, +0.330475508565255430, 0.330522698880527210, 0.330569888369492690, 0.330617077032032970, 0.330664264868030630, 0.330711451877367610, 0.330758638059926340, 0.330805823415588120, +0.330853007944235280, 0.330900191645749960, 0.330947374520014550, 0.330994556566910290, 0.331041737786319680, 0.331088918178124690, 0.331136097742207810, 0.331183276478450310, +0.331230454386734540, 0.331277631466942720, 0.331324807718957230, 0.331371983142659250, 0.331419157737931350, 0.331466331504655990, 0.331513504442714320, 0.331560676551988950, +0.331607847832361860, 0.331655018283715570, 0.331702187905931310, 0.331749356698891610, 0.331796524662478500, 0.331843691796574520, 0.331890858101060840, 0.331938023575820080, +0.331985188220734200, 0.332032352035685820, 0.332079515020556100, 0.332126677175227590, 0.332173838499582430, 0.332220998993503050, 0.332268158656870820, 0.332315317489568110, +0.332362475491477570, 0.332409632662480410, 0.332456789002459170, 0.332503944511296000, 0.332551099188873320, 0.332598253035072510, 0.332645406049776050, 0.332692558232866090, +0.332739709584225160, 0.332786860103734540, 0.332834009791276750, 0.332881158646733900, 0.332928306669988630, 0.332975453860922140, 0.333022600219417040, 0.333069745745355470, +0.333116890438619920, 0.333164034299091690, 0.333211177326653400, 0.333258319521187620, 0.333305460882575570, 0.333352601410699890, 0.333399741105442740, 0.333446879966686590, +0.333494017994312890, 0.333541155188204100, 0.333588291548242430, 0.333635427074310490, 0.333682561766289520, 0.333729695624062130, 0.333776828647510570, 0.333823960836517280, +0.333871092190963730, 0.333918222710732400, 0.333965352395705520, 0.334012481245765710, 0.334059609260794250, 0.334106736440673790, 0.334153862785286470, 0.334200988294514940, +0.334248112968240470, 0.334295236806345760, 0.334342359808713350, 0.334389481975224670, 0.334436603305762250, 0.334483723800208300, 0.334530843458445530, 0.334577962280355190, +0.334625080265819940, 0.334672197414721980, 0.334719313726943970, 0.334766429202367210, 0.334813543840874420, 0.334860657642347740, 0.334907770606669870, 0.334954882733722150, +0.335001994023387210, 0.335049104475547310, 0.335096214090085050, 0.335143322866881810, 0.335190430805820280, 0.335237537906783120, 0.335284644169651650, 0.335331749594308610, +0.335378854180636180, 0.335425957928517040, 0.335473060837832570, 0.335520162908465480, 0.335567264140297920, 0.335614364533212690, 0.335661464087091080, 0.335708562801815820, +0.335755660677269200, 0.335802757713333790, 0.335849853909891080, 0.335896949266823790, 0.335944043784014050, 0.335991137461344620, 0.336038230298697000, 0.336085322295953730, +0.336132413452997600, 0.336179503769710060, 0.336226593245973700, 0.336273681881670890, 0.336320769676684280, 0.336367856630895360, 0.336414942744186760, 0.336462028016440820, +0.336509112447540230, 0.336556196037366420, 0.336603278785802150, 0.336650360692729630, 0.336697441758031680, 0.336744521981589660, 0.336791601363286400, 0.336838679903004090, +0.336885757600625500, 0.336932834456032120, 0.336979910469106640, 0.337026985639731380, 0.337074059967789110, 0.337121133453161250, 0.337168206095730560, 0.337215277895379750, +0.337262348851990360, 0.337309418965445030, 0.337356488235626200, 0.337403556662416610, 0.337450624245697660, 0.337497690985352150, 0.337544756881262400, 0.337591821933311220, +0.337638886141380050, 0.337685949505351630, 0.337733012025108410, 0.337780073700533030, 0.337827134531507030, 0.337874194517913230, 0.337921253659633940, 0.337968311956551910, +0.338015369408548700, 0.338062426015507070, 0.338109481777309760, 0.338156536693838380, 0.338203590764975640, 0.338250643990603890, 0.338297696370605970, 0.338344747904863410, +0.338391798593258960, 0.338438848435675010, 0.338485897431994360, 0.338532945582098570, 0.338579992885870430, 0.338627039343192270, 0.338674084953946910, 0.338721129718015990, +0.338768173635282170, 0.338815216705627980, 0.338862258928936120, 0.338909300305088200, 0.338956340833967080, 0.339003380515455480, 0.339050419349435030, 0.339097457335788500, +0.339144494474398320, 0.339191530765147350, 0.339238566207917150, 0.339285600802590510, 0.339332634549049880, 0.339379667447178070, 0.339426699496856720, 0.339473730697968550, +0.339520761050396080, 0.339567790554022140, 0.339614819208728320, 0.339661847014397440, 0.339708873970911930, 0.339755900078154650, 0.339802925336007200, 0.339849949744352450, +0.339896973303072840, 0.339943996012051160, 0.339991017871169140, 0.340038038880309530, 0.340085059039355260, 0.340132078348187930, 0.340179096806690400, 0.340226114414745100, +0.340273131172234950, 0.340320147079041570, 0.340367162135047810, 0.340414176340136150, 0.340461189694189480, 0.340508202197089380, 0.340555213848718790, 0.340602224648960170, +0.340649234597696420, 0.340696243694809160, 0.340743251940181290, 0.340790259333695280, 0.340837265875234050, 0.340884271564679210, 0.340931276401913730, 0.340978280386820430, +0.341025283519281070, 0.341072285799178480, 0.341119287226395170, 0.341166287800814040, 0.341213287522316780, 0.341260286390786320, 0.341307284406105140, 0.341354281568156170, +0.341401277876821060, 0.341448273331982800, 0.341495267933523810, 0.341542261681327060, 0.341589254575274280, 0.341636246615248330, 0.341683237801131800, 0.341730228132807570, +0.341777217610157340, 0.341824206233064090, 0.341871194001410750, 0.341918180915078970, 0.341965166973951800, 0.342012152177911640, 0.342059136526841560, 0.342106120020623180, +0.342153102659139560, 0.342200084442273120, 0.342247065369906960, 0.342294045441922660, 0.342341024658203260, 0.342388003018631320, 0.342434980523089790, 0.342481957171460350, +0.342528932963626020, 0.342575907899469400, 0.342622881978873420, 0.342669855201719780, 0.342716827567891570, 0.342763799077271670, 0.342810769729741840, 0.342857739525185110, +0.342904708463483980, 0.342951676544521580, 0.342998643768179510, 0.343045610134340820, 0.343092575642888140, 0.343139540293704470, 0.343186504086671450, 0.343233467021672230, +0.343280429098589300, 0.343327390317305750, 0.343374350677703330, 0.343421310179664980, 0.343468268823073410, 0.343515226607811530, 0.343562183533761170, 0.343609139600805360, +0.343656094808826750, 0.343703049157708270, 0.343750002647331740, 0.343796955277580250, 0.343843907048336730, 0.343890857959483100, 0.343937808010902290, 0.343984757202476950, +0.344031705534090130, 0.344078653005623620, 0.344125599616960490, 0.344172545367983360, 0.344219490258575290, 0.344266434288618080, 0.344313377457994780, 0.344360319766588040, +0.344407261214280950, 0.344454201800955260, 0.344501141526494030, 0.344548080390780000, 0.344595018393696160, 0.344641955535124390, 0.344688891814947660, 0.344735827233049190, +0.344782761789310720, 0.344829695483615310, 0.344876628315845700, 0.344923560285884890, 0.344970491393614800, 0.345017421638918460, 0.345064351021678590, 0.345111279541778280, +0.345158207199099290, 0.345205133993524820, 0.345252059924937520, 0.345298984993220480, 0.345345909198255590, 0.345392832539925860, 0.345439755018114080, 0.345486676632703330, +0.345533597383575470, 0.345580517270613670, 0.345627436293700910, 0.345674354452719210, 0.345721271747551570, 0.345768188178080800, 0.345815103744189940, 0.345862018445760920, +0.345908932282676830, 0.345955845254820430, 0.346002757362074860, 0.346049668604321960, 0.346096578981444860, 0.346143488493326320, 0.346190397139849500, 0.346237304920896270, +0.346284211836349780, 0.346331117886092720, 0.346378023070008310, 0.346424927387978420, 0.346471830839886250, 0.346518733425614460, 0.346565635145046290, 0.346612535998063580, +0.346659435984549510, 0.346706335104387310, 0.346753233357458830, 0.346800130743647290, 0.346847027262835450, 0.346893922914906390, 0.346940817699742170, 0.346987711617225860, +0.347034604667240290, 0.347081496849668600, 0.347128388164392790, 0.347175278611295990, 0.347222168190260970, 0.347269056901170990, 0.347315944743907920, 0.347362831718355030, +0.347409717824395000, 0.347456603061911170, 0.347503487430785350, 0.347550370930900850, 0.347597253562140830, 0.347644135324387200, 0.347691016217523300, 0.347737896241431870, +0.347784775395996060, 0.347831653681097920, 0.347878531096620650, 0.347925407642447060, 0.347972283318460360, 0.348019158124542540, 0.348066032060576850, 0.348112905126446050, +0.348159777322033400, 0.348206648647220900, 0.348253519101891730, 0.348300388685928830, 0.348347257399215350, 0.348394125241633320, 0.348440992213065960, 0.348487858313396510, +0.348534723542507090, 0.348581587900280760, 0.348628451386600540, 0.348675314001349550, 0.348722175744409890, 0.348769036615664770, 0.348815896614997070, 0.348862755742290030, +0.348909613997425700, 0.348956471380287350, 0.349003327890757830, 0.349050183528720360, 0.349097038294057030, 0.349143892186651150, 0.349190745206385490, 0.349237597353143360, +0.349284448626806850, 0.349331299027259230, 0.349378148554383820, 0.349424997208062580, 0.349471844988178850, 0.349518691894615490, 0.349565537927255810, 0.349612383085981910, +0.349659227370677010, 0.349706070781224070, 0.349752913317506350, 0.349799754979405960, 0.349846595766806160, 0.349893435679589860, 0.349940274717640390, 0.349987112880839830, +0.350033950169071520, 0.350080786582218310, 0.350127622120163520, 0.350174456782789300, 0.350221290569978920, 0.350268123481615290, 0.350314955517581790, 0.350361786677760470, +0.350408616962034740, 0.350455446370287800, 0.350502274902401880, 0.350549102558260270, 0.350595929337745920, 0.350642755240742120, 0.350689580267131040, 0.350736404416795990, +0.350783227689619950, 0.350830050085486290, 0.350876871604277050, 0.350923692245875610, 0.350970512010164940, 0.351017330897028470, 0.351064148906348180, 0.351110966038007570, +0.351157782291889540, 0.351204597667877430, 0.351251412165853430, 0.351298225785700910, 0.351345038527303260, 0.351391850390542600, 0.351438661375302270, 0.351485471481465310, +0.351532280708915070, 0.351579089057533770, 0.351625896527204660, 0.351672703117810900, 0.351719508829235750, 0.351766313661361410, 0.351813117614071300, 0.351859920687248360, +0.351906722880776070, 0.351953524194536570, 0.352000324628413240, 0.352047124182289060, 0.352093922856047570, 0.352140720649570800, 0.352187517562742250, 0.352234313595445270, +0.352281108747562130, 0.352327903018976260, 0.352374696409570590, 0.352421488919228590, 0.352468280547832470, 0.352515071295265600, 0.352561861161411080, 0.352608650146152340, +0.352655438249371570, 0.352702225470952200, 0.352749011810777220, 0.352795797268730170, 0.352842581844693190, 0.352889365538549770, 0.352936148350182940, 0.352982930279476140, +0.353029711326311610, 0.353076491490572800, 0.353123270772142780, 0.353170049170905000, 0.353216826686741650, 0.353263603319536210, 0.353310379069172230, 0.353357153935531850, +0.353403927918498620, 0.353450701017955560, 0.353497473233786160, 0.353544244565872630, 0.353591015014098560, 0.353637784578346880, 0.353684553258501230, 0.353731321054443710, +0.353778087966057920, 0.353824853993226880, 0.353871619135834150, 0.353918383393761970, 0.353965146766893830, 0.354011909255112780, 0.354058670858302390, 0.354105431576344940, +0.354152191409123910, 0.354198950356522770, 0.354245708418423840, 0.354292465594710670, 0.354339221885266340, 0.354385977289974340, 0.354432731808717040, 0.354479485441377860, +0.354526238187839960, 0.354572990047986920, 0.354619741021700960, 0.354666491108865670, 0.354713240309364130, 0.354759988623079890, 0.354806736049895320, 0.354853482589693850, +0.354900228242358730, 0.354946973007773390, 0.354993716885820270, 0.355040459876382830, 0.355087201979344620, 0.355133943194588020, 0.355180683521996610, 0.355227422961453430, +0.355274161512842130, 0.355320899176044980, 0.355367635950945620, 0.355414371837427130, 0.355461106835373190, 0.355507840944666030, 0.355554574165189260, 0.355601306496826090, +0.355648037939460040, 0.355694768492973430, 0.355741498157249980, 0.355788226932172770, 0.355834954817625390, 0.355881681813490220, 0.355928407919650800, 0.355975133135990830, +0.356021857462392620, 0.356068580898739720, 0.356115303444915380, 0.356162025100803190, 0.356208745866285590, 0.356255465741246060, 0.356302184725567850, 0.356348902819134670, +0.356395620021828730, 0.356442336333533780, 0.356489051754133040, 0.356535766283510020, 0.356582479921547180, 0.356629192668128150, 0.356675904523136130, 0.356722615486454790, +0.356769325557966480, 0.356816034737554850, 0.356862743025103120, 0.356909450420494930, 0.356956156923612770, 0.357002862534340160, 0.357049567252560820, 0.357096271078157170, +0.357142974011012860, 0.357189676051011040, 0.357236377198035530, 0.357283077451968580, 0.357329776812694010, 0.357376475280094970, 0.357423172854055120, 0.357469869534456970, +0.357516565321184140, 0.357563260214119880, 0.357609954213147900, 0.357656647318150610, 0.357703339529011730, 0.357750030845614460, 0.357796721267842570, 0.357843410795578410, +0.357890099428705750, 0.357936787167108250, 0.357983474010668380, 0.358030159959269840, 0.358076845012795850, 0.358123529171130220, 0.358170212434155310, 0.358216894801754890, +0.358263576273812220, 0.358310256850211010, 0.358356936530833780, 0.358403615315564190, 0.358450293204285560, 0.358496970196881650, 0.358543646293234820, 0.358590321493228950, +0.358636995796747240, 0.358683669203673450, 0.358730341713890120, 0.358777013327280900, 0.358823684043729550, 0.358870353863118610, 0.358917022785331720, 0.358963690810252310, +0.359010357937764090, 0.359057024167749590, 0.359103689500092530, 0.359150353934676200, 0.359197017471384440, 0.359243680110099660, 0.359290341850705740, 0.359337002693085940, +0.359383662637124070, 0.359430321682702610, 0.359476979829705390, 0.359523637078015660, 0.359570293427517280, 0.359616948878092760, 0.359663603429625830, 0.359710257081999940, +0.359756909835098780, 0.359803561688804950, 0.359850212643002210, 0.359896862697574370, 0.359943511852403920, 0.359990160107374720, 0.360036807462370160, 0.360083453917273920, +0.360130099471968670, 0.360176744126338160, 0.360223387880265810, 0.360270030733635390, 0.360316672686329500, 0.360363313738231880, 0.360409953889226030, 0.360456593139195650, +0.360503231488023430, 0.360549868935593100, 0.360596505481788120, 0.360643141126492260, 0.360689775869588170, 0.360736409710959600, 0.360783042650490440, 0.360829674688063260, +0.360876305823561890, 0.360922936056869760, 0.360969565387870730, 0.361016193816447340, 0.361062821342483460, 0.361109447965862530, 0.361156073686468400, 0.361202698504183680, +0.361249322418892240, 0.361295945430477440, 0.361342567538823210, 0.361389188743812150, 0.361435809045328130, 0.361482428443254570, 0.361529046937475400, 0.361575664527873150, +0.361622281214331760, 0.361668896996735050, 0.361715511874965700, 0.361762125848907600, 0.361808738918444120, 0.361855351083459230, 0.361901962343835590, 0.361948572699457020, +0.361995182150207040, 0.362041790695969480, 0.362088398336627040, 0.362135005072063590, 0.362181610902162670, 0.362228215826808090, 0.362274819845882610, 0.362321422959270060, +0.362368025166853960, 0.362414626468518190, 0.362461226864145390, 0.362507826353619610, 0.362554424936824660, 0.362601022613643190, 0.362647619383959230, 0.362694215247656160, +0.362740810204618010, 0.362787404254727390, 0.362833997397868260, 0.362880589633924170, 0.362927180962778980, 0.362973771384315470, 0.363020360898417490, 0.363066949504968650, +0.363113537203852810, 0.363160123994952730, 0.363206709878152290, 0.363253294853335130, 0.363299878920385180, 0.363346462079185080, 0.363393044329618780, 0.363439625671569950, +0.363486206104922440, 0.363532785629558990, 0.363579364245363580, 0.363625941952220140, 0.363672518750011500, 0.363719094638621510, 0.363765669617933770, 0.363812243687832330, +0.363858816848199820, 0.363905389098920280, 0.363951960439877260, 0.363998530870954800, 0.364045100392035580, 0.364091669003003600, 0.364138236703742400, 0.364184803494136070, +0.364231369374067300, 0.364277934343420150, 0.364324498402078150, 0.364371061549925270, 0.364417623786844390, 0.364464185112719390, 0.364510745527434340, 0.364557305030872080, +0.364603863622916520, 0.364650421303451270, 0.364696978072360400, 0.364743533929526690, 0.364790088874834160, 0.364836642908166360, 0.364883196029407390, 0.364929748238440040, +0.364976299535148260, 0.365022849919415800, 0.365069399391126590, 0.365115947950163440, 0.365162495596410450, 0.365209042329751270, 0.365255588150069810, 0.365302133057249010, +0.365348677051172910, 0.365395220131725480, 0.365441762298789610, 0.365488303552249320, 0.365534843891988310, 0.365581383317890580, 0.365627921829838940, 0.365674459427717540, +0.365720996111409960, 0.365767531880800360, 0.365814066735771440, 0.365860600676207400, 0.365907133701991850, 0.365953665813008920, 0.366000197009141380, 0.366046727290273320, +0.366093256656288450, 0.366139785107070900, 0.366186312642503400, 0.366232839262470190, 0.366279364966854810, 0.366325889755541480, 0.366372413628413000, 0.366418936585353520, +0.366465458626247080, 0.366511979750976550, 0.366558499959426130, 0.366605019251479420, 0.366651537627020570, 0.366698055085932510, 0.366744571628099260, 0.366791087253404650, +0.366837601961732650, 0.366884115752966310, 0.366930628626989610, 0.366977140583686410, 0.367023651622940710, 0.367070161744635470, 0.367116670948654860, 0.367163179234882560, +0.367209686603202750, 0.367256193053498270, 0.367302698585653340, 0.367349203199552050, 0.367395706895077330, 0.367442209672113380, 0.367488711530543910, 0.367535212470253000, +0.367581712491123700, 0.367628211593040160, 0.367674709775886010, 0.367721207039545580, 0.367767703383901630, 0.367814198808838480, 0.367860693314239820, 0.367907186899989860, +0.367953679565971530, 0.368000171312068970, 0.368046662138165950, 0.368093152044146720, 0.368139641029894220, 0.368186129095292580, 0.368232616240226070, 0.368279102464577570, +0.368325587768231320, 0.368372072151071150, 0.368418555612981150, 0.368465038153844350, 0.368511519773545020, 0.368558000471966850, 0.368604480248994060, 0.368650959104509680, +0.368697437038397910, 0.368743914050542580, 0.368790390140827820, 0.368836865309136670, 0.368883339555353410, 0.368929812879361770, 0.368976285281045980, 0.369022756760289120, +0.369069227316975330, 0.369115696950988950, 0.369162165662212830, 0.369208633450531340, 0.369255100315828260, 0.369301566257987820, 0.369348031276893090, 0.369394495372428240, +0.369440958544477230, 0.369487420792924180, 0.369533882117652150, 0.369580342518545430, 0.369626801995487860, 0.369673260548363690, 0.369719718177055960, 0.369766174881448920, +0.369812630661426500, 0.369859085516872850, 0.369905539447671130, 0.369951992453705520, 0.369998444534859920, 0.370044895691018620, 0.370091345922064720, 0.370137795227882430, +0.370184243608356060, 0.370230691063368640, 0.370277137592804560, 0.370323583196547570, 0.370370027874482090, 0.370416471626491050, 0.370462914452458880, 0.370509356352269450, +0.370555797325807010, 0.370602237372954670, 0.370648676493596730, 0.370695114687617120, 0.370741551954900110, 0.370787988295328830, 0.370834423708787550, 0.370880858195160260, +0.370927291754331200, 0.370973724386183530, 0.371020156090601520, 0.371066586867469520, 0.371113016716670690, 0.371159445638089280, 0.371205873631609230, 0.371252300697114960, +0.371298726834489500, 0.371345152043617230, 0.371391576324382080, 0.371437999676668410, 0.371484422100359310, 0.371530843595339170, 0.371577264161491950, 0.371623683798701920, +0.371670102506852280, 0.371716520285827410, 0.371762937135511230, 0.371809353055788160, 0.371855768046541250, 0.371902182107654910, 0.371948595239013520, 0.371995007440500290, +0.372041418711999470, 0.372087829053395160, 0.372134238464571660, 0.372180646945412140, 0.372227054495801070, 0.372273461115622320, 0.372319866804760310, 0.372366271563098210, +0.372412675390520480, 0.372459078286911050, 0.372505480252154300, 0.372551881286133480, 0.372598281388732970, 0.372644680559836680, 0.372691078799329170, 0.372737476107093510, +0.372783872483014200, 0.372830267926975210, 0.372876662438860920, 0.372923056018554580, 0.372969448665940620, 0.373015840380903410, 0.373062231163326210, 0.373108621013093440, +0.373155009930089100, 0.373201397914197650, 0.373247784965302310, 0.373294171083287500, 0.373340556268037300, 0.373386940519436050, 0.373433323837367100, 0.373479706221714780, +0.373526087672363230, 0.373572468189196870, 0.373618847772098920, 0.373665226420953900, 0.373711604135645750, 0.373757980916059050, 0.373804356762076910, 0.373850731673583960, +0.373897105650464520, 0.373943478692601970, 0.373989850799880730, 0.374036221972184780, 0.374082592209398770, 0.374128961511405840, 0.374175329878090490, 0.374221697309336850, +0.374268063805029360, 0.374314429365051270, 0.374360793989287120, 0.374407157677621010, 0.374453520429937400, 0.374499882246119580, 0.374546243126052060, 0.374592603069618950, +0.374638962076704720, 0.374685320147192690, 0.374731677280967350, 0.374778033477913220, 0.374824388737913570, 0.374870743060853000, 0.374917096446615530, 0.374963448895085760, +0.375009800406146950, 0.375056150979683640, 0.375102500615579980, 0.375148849313720440, 0.375195197073988350, 0.375241543896268290, 0.375287889780444420, 0.375334234726401150, +0.375380578734021920, 0.375426921803191260, 0.375473263933793320, 0.375519605125712590, 0.375565945378832420, 0.375612284693037420, 0.375658623068212070, 0.375704960504239790, +0.375751297001005120, 0.375797632558392210, 0.375843967176285600, 0.375890300854568700, 0.375936633593126010, 0.375982965391841730, 0.376029296250600500, 0.376075626169285580, +0.376121955147781570, 0.376168283185972730, 0.376214610283743590, 0.376260936440977470, 0.376307261657559010, 0.376353585933372430, 0.376399909268302300, 0.376446231662231960, +0.376492553115046040, 0.376538873626628750, 0.376585193196864680, 0.376631511825637200, 0.376677829512830960, 0.376724146258330560, 0.376770462062019420, 0.376816776923782070, +0.376863090843502780, 0.376909403821066190, 0.376955715856355680, 0.377002026949255890, 0.377048337099651020, 0.377094646307425730, 0.377140954572463380, 0.377187261894648680, +0.377233568273865780, 0.377279873709999440, 0.377326178202932960, 0.377372481752551060, 0.377418784358737940, 0.377465086021378240, 0.377511386740355450, 0.377557686515554160, +0.377603985346859130, 0.377650283234153670, 0.377696580177322550, 0.377742876176249910, 0.377789171230820560, 0.377835465340917830, 0.377881758506426410, 0.377928050727230680, +0.377974342003215170, 0.378020632334263420, 0.378066921720260070, 0.378113210161089400, 0.378159497656636150, 0.378205784206783750, 0.378252069811416850, 0.378298354470419820, +0.378344638183677310, 0.378390920951072740, 0.378437202772490930, 0.378483483647816530, 0.378529763576932960, 0.378576042559724990, 0.378622320596076920, 0.378668597685873460, +0.378714873828998160, 0.378761149025335590, 0.378807423274770180, 0.378853696577186590, 0.378899968932468410, 0.378946240340500280, 0.378992510801166530, 0.379038780314351900, +0.379085048879939930, 0.379131316497815400, 0.379177583167862490, 0.379223848889966080, 0.379270113664009590, 0.379316377489877900, 0.379362640367455210, 0.379408902296626330, +0.379455163277274800, 0.379501423309285320, 0.379547682392542720, 0.379593940526930520, 0.379640197712333430, 0.379686453948635870, 0.379732709235722610, 0.379778963573477120, +0.379825216961784280, 0.379871469400528350, 0.379917720889594190, 0.379963971428865290, 0.380010221018226460, 0.380056469657562120, 0.380102717346756940, 0.380148964085694600, +0.380195209874259870, 0.380241454712337110, 0.380287698599811100, 0.380333941536565470, 0.380380183522484930, 0.380426424557454400, 0.380472664641357320, 0.380518903774078650, +0.380565141955502730, 0.380611379185514300, 0.380657615463997070, 0.380703850790835740, 0.380750085165914850, 0.380796318589119110, 0.380842551060332210, 0.380888782579438870, +0.380935013146323610, 0.380981242760871250, 0.381027471422965340, 0.381073699132490780, 0.381119925889331970, 0.381166151693373700, 0.381212376544499690, 0.381258600442594740, +0.381304823387543680, 0.381351045379230150, 0.381397266417539020, 0.381443486502354710, 0.381489705633562100, 0.381535923811044840, 0.381582141034687740, 0.381628357304375330, +0.381674572619992380, 0.381720786981422640, 0.381767000388550880, 0.381813212841261630, 0.381859424339439810, 0.381905634882968970, 0.381951844471734080, 0.381998053105619520, +0.382044260784510310, 0.382090467508289950, 0.382136673276843530, 0.382182878090055740, 0.382229081947810410, 0.382275284849992350, 0.382321486796486090, 0.382367687787176500, +0.382413887821947300, 0.382460086900683340, 0.382506285023269220, 0.382552482189589760, 0.382598678399528710, 0.382644873652970950, 0.382691067949801010, 0.382737261289903820, +0.382783453673163020, 0.382829645099463660, 0.382875835568690150, 0.382922025080727420, 0.382968213635459300, 0.383014401232770580, 0.383060587872545880, 0.383106773554670100, +0.383152958279027010, 0.383199142045501540, 0.383245324853978610, 0.383291506704341920, 0.383337687596476460, 0.383383867530266820, 0.383430046505597920, 0.383476224522353530, +0.383522401580418500, 0.383568577679677500, 0.383614752820015450, 0.383660927001316150, 0.383707100223464490, 0.383753272486345110, 0.383799443789842930, 0.383845614133841770, +0.383891783518226560, 0.383937951942881880, 0.383984119407692730, 0.384030285912542850, 0.384076451457317280, 0.384122616041901010, 0.384168779666177800, 0.384214942330032620, +0.384261104033350060, 0.384307264776015180, 0.384353424557911720, 0.384399583378924660, 0.384445741238938710, 0.384491898137838740, 0.384538054075508670, 0.384584209051833440, +0.384630363066697730, 0.384676516119986490, 0.384722668211583570, 0.384768819341373970, 0.384814969509242270, 0.384861118715073610, 0.384907266958751770, 0.384953414240161720, +0.384999560559188550, 0.385045705915716070, 0.385091850309629340, 0.385137993740812920, 0.385184136209151980, 0.385230277714530330, 0.385276418256832900, 0.385322557835944490, +0.385368696451750090, 0.385414834104133520, 0.385460970792979860, 0.385507106518173770, 0.385553241279600330, 0.385599375077143370, 0.385645507910688020, 0.385691639780118830, +0.385737770685321000, 0.385783900626178290, 0.385830029602575900, 0.385876157614398360, 0.385922284661530890, 0.385968410743857290, 0.386014535861262610, 0.386060660013632040, +0.386106783200849460, 0.386152905422799840, 0.386199026679368010, 0.386245146970438990, 0.386291266295896720, 0.386337384655626280, 0.386383502049512330, 0.386429618477440120, +0.386475733939293410, 0.386521848434957350, 0.386567961964316700, 0.386614074527256490, 0.386660186123660770, 0.386706296753414560, 0.386752406416402570, 0.386798515112510010, +0.386844622841620740, 0.386890729603619920, 0.386936835398392690, 0.386982940225822910, 0.387029044085795860, 0.387075146978196170, 0.387121248902909000, 0.387167349859818320, +0.387213449848809230, 0.387259548869766550, 0.387305646922575410, 0.387351744007119750, 0.387397840123284710, 0.387443935270955050, 0.387490029450016040, 0.387536122660351480, +0.387582214901846630, 0.387628306174386210, 0.387674396477855450, 0.387720485812138360, 0.387766574177119960, 0.387812661572685570, 0.387858747998719170, 0.387904833455105850, +0.387950917941730420, 0.387997001458478150, 0.388043084005232960, 0.388089165581880000, 0.388135246188304190, 0.388181325824390690, 0.388227404490023410, 0.388273482185087670, +0.388319558909468180, 0.388365634663050240, 0.388411709445717790, 0.388457783257356030, 0.388503856097849880, 0.388549927967084430, 0.388595998864943840, 0.388642068791313190, +0.388688137746077740, 0.388734205729121600, 0.388780272740329950, 0.388826338779587610, 0.388872403846779790, 0.388918467941790580, 0.388964531064505240, 0.389010593214808520, +0.389056654392585740, 0.389102714597720890, 0.389148773830099270, 0.389194832089605760, 0.389240889376125550, 0.389286945689542700, 0.389333001029742440, 0.389379055396609770, +0.389425108790029780, 0.389471161209886670, 0.389517212656065650, 0.389563263128451580, 0.389609312626929770, 0.389655361151384270, 0.389701408701700390, 0.389747455277763390, +0.389793500879457300, 0.389839545506667500, 0.389885589159278840, 0.389931631837176610, 0.389977673540244870, 0.390023714268368960, 0.390069754021433730, 0.390115792799324570, +0.390161830601925500, 0.390207867429121890, 0.390253903280798560, 0.390299938156840940, 0.390345972057133010, 0.390392004981560180, 0.390438036930007340, 0.390484067902359790, +0.390530097898501680, 0.390576126918318280, 0.390622154961695060, 0.390668182028515940, 0.390714208118666470, 0.390760233232031410, 0.390806257368496170, 0.390852280527944910, +0.390898302710262990, 0.390944323915335230, 0.390990344143047120, 0.391036363393282740, 0.391082381665927400, 0.391128398960866150, 0.391174415277984360, 0.391220430617166050, +0.391266444978296660, 0.391312458361261220, 0.391358470765944990, 0.391404482192232170, 0.391450492640008200, 0.391496502109158320, 0.391542510599566850, 0.391588518111119050, +0.391634524643700020, 0.391680530197195060, 0.391726534771488330, 0.391772538366465310, 0.391818540982010910, 0.391864542618010630, 0.391910543274348490, 0.391956542950910040, +0.392002541647580250, 0.392048539364244500, 0.392094536100786980, 0.392140531857093130, 0.392186526633047980, 0.392232520428536900, 0.392278513243444090, 0.392324505077654980, +0.392370495931054660, 0.392416485803528500, 0.392462474694960710, 0.392508462605236700, 0.392554449534242010, 0.392600435481860740, 0.392646420447978370, 0.392692404432479990, +0.392738387435250970, 0.392784369456175560, 0.392830350495139260, 0.392876330552027090, 0.392922309626724530, 0.392968287719115740, 0.393014264829086250, 0.393060240956521090, +0.393106216101305690, 0.393152190263324430, 0.393198163442462610, 0.393244135638605440, 0.393290106851638340, 0.393336077081445520, 0.393382046327912570, 0.393428014590924860, +0.393473981870366750, 0.393519948166123620, 0.393565913478080680, 0.393611877806123330, 0.393657841150135910, 0.393703803510003840, 0.393749764885612310, 0.393795725276846750, +0.393841684683591490, 0.393887643105731990, 0.393933600543153410, 0.393979556995741220, 0.394025512463379690, 0.394071466945954460, 0.394117420443350520, 0.394163372955453450, +0.394209324482147520, 0.394255275023318310, 0.394301224578851250, 0.394347173148630770, 0.394393120732542400, 0.394439067330471180, 0.394485012942302700, 0.394530957567921280, +0.394576901207212450, 0.394622843860061410, 0.394668785526353650, 0.394714726205973530, 0.394760665898806600, 0.394806604604737930, 0.394852542323653240, 0.394898479055436790, +0.394944414799974110, 0.394990349557150400, 0.395036283326851200, 0.395082216108960880, 0.395128147903365090, 0.395174078709948860, 0.395220008528597840, 0.395265937359196460, +0.395311865201630200, 0.395357792055784640, 0.395403717921544220, 0.395449642798794520, 0.395495566687420750, 0.395541489587308390, 0.395587411498341980, 0.395633332420406990, +0.395679252353388690, 0.395725171297172660, 0.395771089251643280, 0.395817006216686200, 0.395862922192186550, 0.395908837178030050, 0.395954751174101060, 0.396000664180285180, +0.396046576196467660, 0.396092487222534040, 0.396138397258368860, 0.396184306303857650, 0.396230214358886110, 0.396276121423338620, 0.396322027497100830, 0.396367932580057980, +0.396413836672095680, 0.396459739773098400, 0.396505641882951730, 0.396551543001541000, 0.396597443128751780, 0.396643342264468570, 0.396689240408577000, 0.396735137560962350, +0.396781033721510250, 0.396826928890105180, 0.396872823066632740, 0.396918716250978300, 0.396964608443027440, 0.397010499642664660, 0.397056389849775590, 0.397102279064246000, +0.397148167285960310, 0.397194054514804160, 0.397239940750662930, 0.397285825993422210, 0.397331710242966540, 0.397377593499181610, 0.397423475761952690, 0.397469357031165480, +0.397515237306704460, 0.397561116588455330, 0.397606994876303410, 0.397652872170134450, 0.397698748469832890, 0.397744623775284470, 0.397790498086374460, 0.397836371402988610, +0.397882243725011460, 0.397928115052328670, 0.397973985384825980, 0.398019854722387990, 0.398065723064900290, 0.398111590412248360, 0.398157456764317800, 0.398203322120993190, +0.398249186482160290, 0.398295049847704420, 0.398340912217511390, 0.398386773591465570, 0.398432633969452890, 0.398478493351358600, 0.398524351737068520, 0.398570209126467120, +0.398616065519440180, 0.398661920915873100, 0.398707775315651600, 0.398753628718660270, 0.398799481124784920, 0.398845332533910800, 0.398891182945923790, 0.398937032360708380, +0.398982880778150420, 0.399028728198135670, 0.399074574620548680, 0.399120420045275260, 0.399166264472200770, 0.399212107901211030, 0.399257950332190640, 0.399303791765025340, +0.399349632199600570, 0.399395471635802140, 0.399441310073514630, 0.399487147512623820, 0.399532983953015170, 0.399578819394574460, 0.399624653837186260, 0.399670487280736510, +0.399716319725110460, 0.399762151170194040, 0.399807981615871830, 0.399853811062029660, 0.399899639508553400, 0.399945466955327620, 0.399991293402238160, 0.400037118849170480, +0.400082943296010410, 0.400128766742642580, 0.400174589188952820, 0.400220410634826610, 0.400266231080149750, 0.400312050524806950, 0.400357868968683970, 0.400403686411666350, +0.400449502853639890, 0.400495318294489310, 0.400541132734100410, 0.400586946172358680, 0.400632758609149990, 0.400678570044359030, 0.400724380477871620, 0.400770189909573640, +0.400815998339349780, 0.400861805767085970, 0.400907612192667630, 0.400953417615980630, 0.400999222036909740, 0.401045025455340760, 0.401090827871159180, 0.401136629284250980, +0.401182429694500800, 0.401228229101794560, 0.401274027506017710, 0.401319824907056260, 0.401365621304794750, 0.401411416699119280, 0.401457211089915220, 0.401503004477068550, +0.401548796860463910, 0.401594588239987340, 0.401640378615524260, 0.401686167986960660, 0.401731956354181240, 0.401777743717071980, 0.401823530075518690, 0.401869315429406180, +0.401915099778620390, 0.401960883123046840, 0.402006665462571520, 0.402052446797079130, 0.402098227126455600, 0.402144006450586510, 0.402189784769357790, 0.402235562082654260, +0.402281338390361790, 0.402327113692365960, 0.402372887988552750, 0.402418661278806930, 0.402464433563014480, 0.402510204841060870, 0.402555975112832250, 0.402601744378213220, +0.402647512637089870, 0.402693279889348110, 0.402739046134872770, 0.402784811373549770, 0.402830575605264810, 0.402876338829903760, 0.402922101047351490, 0.402967862257493980, +0.403013622460216770, 0.403059381655405950, 0.403105139842946210, 0.403150897022723660, 0.403196653194623890, 0.403242408358532870, 0.403288162514335410, 0.403333915661917560, +0.403379667801164970, 0.403425418931963540, 0.403471169054198220, 0.403516918167754920, 0.403562666272519740, 0.403608413368377490, 0.403654159455214270, 0.403699904532915600, +0.403745648601367580, 0.403791391660455020, 0.403837133710063970, 0.403882874750080110, 0.403928614780389440, 0.403974353800876870, 0.404020091811428390, 0.404065828811929710, +0.404111564802266840, 0.404157299782324670, 0.404203033751989240, 0.404248766711146180, 0.404294498659681640, 0.404340229597480500, 0.404385959524428740, 0.404431688440412500, +0.404477416345316590, 0.404523143239027220, 0.404568869121429920, 0.404614593992410900, 0.404660317851854970, 0.404706040699648220, 0.404751762535676410, 0.404797483359825570, +0.404843203171980640, 0.404888921972027690, 0.404934639759852440, 0.404980356535340980, 0.405026072298378230, 0.405071787048850330, 0.405117500786642940, 0.405163213511642200, +0.405208925223733030, 0.405254635922801530, 0.405300345608733460, 0.405346054281414900, 0.405391761940730840, 0.405437468586567370, 0.405483174218810580, 0.405528878837345510, +0.405574582442058240, 0.405620285032834480, 0.405665986609560440, 0.405711687172121030, 0.405757386720402350, 0.405803085254290260, 0.405848782773670870, 0.405894479278429090, +0.405940174768451120, 0.405985869243622680, 0.406031562703830010, 0.406077255148958040, 0.406122946578892920, 0.406168636993520400, 0.406214326392726750, 0.406260014776396840, +0.406305702144416910, 0.406351388496673130, 0.406397073833050460, 0.406442758153435110, 0.406488441457712850, 0.406534123745769920, 0.406579805017491250, 0.406625485272763100, +0.406671164511471170, 0.406716842733501840, 0.406762519938739910, 0.406808196127071700, 0.406853871298383020, 0.406899545452560070, 0.406945218589487840, 0.406990890709052530, +0.407036561811140060, 0.407082231895636580, 0.407127900962427070, 0.407173569011397840, 0.407219236042435100, 0.407264902055423820, 0.407310567050250320, 0.407356231026800410, +0.407401893984960290, 0.407447555924615070, 0.407493216845650930, 0.407538876747953750, 0.407584535631409840, 0.407630193495904130, 0.407675850341322920, 0.407721506167552150, +0.407767160974477960, 0.407812814761985500, 0.407858467529960970, 0.407904119278290290, 0.407949770006859720, 0.407995419715554310, 0.408041068404260350, 0.408086716072863730, +0.408132362721250750, 0.408178008349306400, 0.408223652956917090, 0.408269296543968980, 0.408314939110347270, 0.408360580655938220, 0.408406221180627750, 0.408451860684302060, +0.408497499166846360, 0.408543136628146900, 0.408588773068089610, 0.408634408486560740, 0.408680042883445500, 0.408725676258630100, 0.408771308612000560, 0.408816939943443150, +0.408862570252842950, 0.408908199540086390, 0.408953827805059290, 0.408999455047648010, 0.409045081267737700, 0.409090706465214670, 0.409136330639965300, 0.409181953791874720, +0.409227575920829200, 0.409273197026714770, 0.409318817109417750, 0.409364436168823340, 0.409410054204817800, 0.409455671217287100, 0.409501287206117610, 0.409546902171194550, +0.409592516112404210, 0.409638129029632590, 0.409683740922766050, 0.409729351791689730, 0.409774961636290070, 0.409820570456452980, 0.409866178252064840, 0.409911785023010900, +0.409957390769177480, 0.410002995490450990, 0.410048599186716600, 0.410094201857860720, 0.410139803503769330, 0.410185404124328860, 0.410231003719424450, 0.410276602288942530, +0.410322199832769070, 0.410367796350790570, 0.410413391842892160, 0.410458986308960270, 0.410504579748880940, 0.410550172162540530, 0.410595763549824300, 0.410641353910618680, +0.410686943244809640, 0.410732531552283620, 0.410778118832925920, 0.410823705086622910, 0.410869290313261030, 0.410914874512725570, 0.410960457684902860, 0.411006039829679040, +0.411051620946940530, 0.411097201036572550, 0.411142780098461560, 0.411188358132493600, 0.411233935138555220, 0.411279511116531550, 0.411325086066309080, 0.411370659987773950, +0.411416232880812530, 0.411461804745310130, 0.411507375581153250, 0.411552945388227900, 0.411598514166420570, 0.411644081915616580, 0.411689648635702400, 0.411735214326564070, +0.411780778988088130, 0.411826342620159820, 0.411871905222665700, 0.411917466795492180, 0.411963027338524580, 0.412008586851649430, 0.412054145334752820, 0.412099702787721230, +0.412145259210439980, 0.412190814602795610, 0.412236368964674190, 0.412281922295962280, 0.412327474596545120, 0.412373025866309250, 0.412418576105140880, 0.412464125312926420, +0.412509673489551250, 0.412555220634901960, 0.412600766748864530, 0.412646311831325660, 0.412691855882170560, 0.412737398901285860, 0.412782940888558050, 0.412828481843872440, +0.412874021767115680, 0.412919560658173870, 0.412965098516933530, 0.413010635343280030, 0.413056171137099970, 0.413101705898279490, 0.413147239626705130, 0.413192772322262260, +0.413238303984837460, 0.413283834614316890, 0.413329364210587190, 0.413374892773533620, 0.413420420303042880, 0.413465946799001060, 0.413511472261294750, 0.413556996689809390, +0.413602520084431490, 0.413648042445047710, 0.413693563771543480, 0.413739084063805270, 0.413784603321719400, 0.413830121545172400, 0.413875638734049700, 0.413921154888237890, +0.413966670007623220, 0.414012184092092230, 0.414057697141530400, 0.414103209155824380, 0.414148720134860260, 0.414194230078524790, 0.414239738986703300, 0.414285246859282530, +0.414330753696148580, 0.414376259497188200, 0.414421764262286720, 0.414467267991330880, 0.414512770684206830, 0.414558272340801230, 0.414603772960999590, 0.414649272544688530, +0.414694771091754680, 0.414740268602083460, 0.414785765075561640, 0.414831260512075360, 0.414876754911511330, 0.414922248273755010, 0.414967740598693120, 0.415013231886211810, +0.415058722136197880, 0.415104211348536700, 0.415149699523114980, 0.415195186659819080, 0.415240672758535550, 0.415286157819149960, 0.415331641841548970, 0.415377124825618890, +0.415422606771246370, 0.415468087678317000, 0.415513567546717310, 0.415559046376334170, 0.415604524167053010, 0.415650000918760530, 0.415695476631343040, 0.415740951304687300, +0.415786424938678730, 0.415831897533204100, 0.415877369088149760, 0.415922839603402370, 0.415968309078847520, 0.416013777514371850, 0.416059244909861740, 0.416104711265203930, +0.416150176580283970, 0.416195640854988560, 0.416241104089204010, 0.416286566282817130, 0.416332027435713400, 0.416377487547779650, 0.416422946618902560, 0.416468404648967670, +0.416513861637861800, 0.416559317585471320, 0.416604772491682870, 0.416650226356382160, 0.416695679179455820, 0.416741130960790300, 0.416786581700272380, 0.416832031397787570, +0.416877480053222730, 0.416922927666464160, 0.416968374237398690, 0.417013819765911840, 0.417059264251890440, 0.417104707695220960, 0.417150150095790040, 0.417195591453483340, +0.417241031768187720, 0.417286471039789890, 0.417331909268175430, 0.417377346453231270, 0.417422782594843720, 0.417468217692899600, 0.417513651747284550, 0.417559084757885390, +0.417604516724588480, 0.417649947647280690, 0.417695377525847620, 0.417740806360176130, 0.417786234150152650, 0.417831660895663930, 0.417877086596595670, 0.417922511252834690, +0.417967934864267480, 0.418013357430780770, 0.418058778952260290, 0.418104199428592890, 0.418149618859664950, 0.418195037245363390, 0.418240454585573850, 0.418285870880183150, +0.418331286129078160, 0.418376700332144580, 0.418422113489269280, 0.418467525600338620, 0.418512936665239590, 0.418558346683857830, 0.418603755656080160, 0.418649163581793160, +0.418694570460883600, 0.418739976293237230, 0.418785381078740910, 0.418830784817281140, 0.418876187508744830, 0.418921589153017640, 0.418966989749986470, 0.419012389299537880, +0.419057787801558670, 0.419103185255934540, 0.419148581662552530, 0.419193977021299400, 0.419239371332060960, 0.419284764594724140, 0.419330156809175350, 0.419375547975301580, +0.419420938092988530, 0.419466327162123120, 0.419511715182591950, 0.419557102154281880, 0.419602488077078620, 0.419647872950869140, 0.419693256775539980, 0.419738639550978120, +0.419784021277069210, 0.419829401953700280, 0.419874781580757810, 0.419920160158128830, 0.419965537685699050, 0.420010914163355400, 0.420056289590984840, 0.420101663968473200, +0.420147037295707400, 0.420192409572573980, 0.420237780798959960, 0.420283150974751110, 0.420328520099834350, 0.420373888174096270, 0.420419255197423900, 0.420464621169702960, +0.420509986090820520, 0.420555349960663070, 0.420600712779117650, 0.420646074546070060, 0.420691435261407290, 0.420736794925015920, 0.420782153536783000, 0.420827511096594220, +0.420872867604336730, 0.420918223059897070, 0.420963577463162210, 0.421008930814018020, 0.421054283112351550, 0.421099634358049700, 0.421144984550998410, 0.421190333691084660, +0.421235681778195040, 0.421281028812216630, 0.421326374793035250, 0.421371719720537940, 0.421417063594611340, 0.421462406415142490, 0.421507748182017190, 0.421553088895122550, +0.421598428554345150, 0.421643767159572140, 0.421689104710689270, 0.421734441207583630, 0.421779776650141880, 0.421825111038251150, 0.421870444371797160, 0.421915776650667150, +0.421961107874748000, 0.422006438043925740, 0.422051767158087400, 0.422097095217119630, 0.422142422220909470, 0.422187748169342900, 0.422233073062306950, 0.422278396899688320, +0.422323719681374110, 0.422369041407250180, 0.422414362077203680, 0.422459681691121250, 0.422505000248890040, 0.422550317750395870, 0.422595634195525980, 0.422640949584166980, +0.422686263916205950, 0.422731577191528930, 0.422776889410022950, 0.422822200571575100, 0.422867510676071420, 0.422912819723398950, 0.422958127713444380, 0.423003434646094910, +0.423048740521236480, 0.423094045338756220, 0.423139349098540780, 0.423184651800477430, 0.423229953444452020, 0.423275254030351710, 0.423320553558063310, 0.423365852027473900, +0.423411149438469410, 0.423456445790937110, 0.423501741084763680, 0.423547035319836280, 0.423592328496040950, 0.423637620613264760, 0.423682911671394940, 0.423728201670317380, +0.423773490609919370, 0.423818778490087640, 0.423864065310709300, 0.423909351071670440, 0.423954635772858250, 0.423999919414159380, 0.424045201995461200, 0.424090483516649570, +0.424135763977611710, 0.424181043378234480, 0.424226321718405020, 0.424271598998009370, 0.424316875216934670, 0.424362150375067860, 0.424407424472296010, 0.424452697508505230, +0.424497969483582700, 0.424543240397415260, 0.424588510249890140, 0.424633779040893280, 0.424679046770312040, 0.424724313438033520, 0.424769579043943860, 0.424814843587930260, +0.424860107069879530, 0.424905369489678940, 0.424950630847214520, 0.424995891142373520, 0.425041150375042810, 0.425086408545109600, 0.425131665652459970, 0.425176921696981180, +0.425222176678560100, 0.425267430597083940, 0.425312683452438830, 0.425357935244512040, 0.425403185973190380, 0.425448435638361160, 0.425493684239910460, 0.425538931777725560, +0.425584178251693700, 0.425629423661701030, 0.425674668007634760, 0.425719911289381860, 0.425765153506829530, 0.425810394659863980, 0.425855634748372400, 0.425900873772241730, +0.425946111731359320, 0.425991348625611170, 0.426036584454884680, 0.426081819219066740, 0.426127052918044650, 0.426172285551704500, 0.426217517119933660, 0.426262747622619060, +0.426307977059647960, 0.426353205430906490, 0.426398432736282030, 0.426443658975661890, 0.426488884148932210, 0.426534108255980320, 0.426579331296693120, 0.426624553270958050, +0.426669774178661140, 0.426714994019689820, 0.426760212793931000, 0.426805430501272120, 0.426850647141599200, 0.426895862714799680, 0.426941077220760470, 0.426986290659368990, +0.427031503030511410, 0.427076714334075010, 0.427121924569946910, 0.427167133738014350, 0.427212341838163530, 0.427257548870281890, 0.427302754834256390, 0.427347959729974360, +0.427393163557322100, 0.427438366316186870, 0.427483568006456150, 0.427528768628016090, 0.427573968180754100, 0.427619166664557240, 0.427664364079312850, 0.427709560424907100, +0.427754755701227510, 0.427799949908161000, 0.427845143045595010, 0.427890335113415790, 0.427935526111510700, 0.427980716039766840, 0.428025904898071520, 0.428071092686311110, +0.428116279404372910, 0.428161465052144030, 0.428206649629511940, 0.428251833136362780, 0.428297015572584040, 0.428342196938063140, 0.428387377232686380, 0.428432556456341150, +0.428477734608914530, 0.428522911690293990, 0.428568087700365810, 0.428613262639017330, 0.428658436506135780, 0.428703609301608450, 0.428748781025321770, 0.428793951677163110, +0.428839121257019560, 0.428884289764778600, 0.428929457200326550, 0.428974623563550820, 0.429019788854338560, 0.429064953072577250, 0.429110116218153090, 0.429155278290953680, +0.429200439290866490, 0.429245599217777770, 0.429290758071575070, 0.429335915852145480, 0.429381072559376460, 0.429426228193154400, 0.429471382753366770, 0.429516536239900660, +0.429561688652643660, 0.429606839991481970, 0.429651990256303180, 0.429697139446994500, 0.429742287563443290, 0.429787434605535980, 0.429832580573160090, 0.429877725466202790, +0.429922869284551530, 0.429968012028092710, 0.430013153696713830, 0.430058294290302510, 0.430103433808744990, 0.430148572251928930, 0.430193709619741460, 0.430238845912070120, +0.430283981128801230, 0.430329115269822370, 0.430374248335020800, 0.430419380324283950, 0.430464511237498240, 0.430509641074551250, 0.430554769835330200, 0.430599897519722610, +0.430645024127614850, 0.430690149658894570, 0.430735274113448920, 0.430780397491165420, 0.430825519791930620, 0.430870641015631940, 0.430915761162156690, 0.430960880231392450, +0.431005998223225610, 0.431051115137543740, 0.431096230974234500, 0.431141345733184300, 0.431186459414280690, 0.431231572017410970, 0.431276683542462740, 0.431321793989322360, +0.431366903357877470, 0.431412011648015400, 0.431457118859623620, 0.431502224992588720, 0.431547330046798240, 0.431592434022139370, 0.431637536918499880, 0.431682638735766120, +0.431727739473825810, 0.431772839132566090, 0.431817937711874710, 0.431863035211638050, 0.431908131631743850, 0.431953226972079720, 0.431998321232532070, 0.432043414412988660, +0.432088506513336690, 0.432133597533463860, 0.432178687473256660, 0.432223776332602730, 0.432268864111389320, 0.432313950809504190, 0.432359036426833760, 0.432404120963265800, +0.432449204418687510, 0.432494286792986570, 0.432539368086049540, 0.432584448297764050, 0.432629527428017470, 0.432674605476697500, 0.432719682443690580, 0.432764758328884500, +0.432809833132166870, 0.432854906853424260, 0.432899979492544440, 0.432945051049414610, 0.432990121523922580, 0.433035190915954830, 0.433080259225399110, 0.433125326452142740, +0.433170392596073480, 0.433215457657077810, 0.433260521635043530, 0.433305584529857900, 0.433350646341408740, 0.433395707069582580, 0.433440766714267120, 0.433485825275349730, +0.433530882752718230, 0.433575939146259080, 0.433620994455860110, 0.433666048681408620, 0.433711101822792430, 0.433756153879898080, 0.433801204852613360, 0.433846254740826000, +0.433891303544422620, 0.433936351263291000, 0.433981397897318490, 0.434026443446392850, 0.434071487910400730, 0.434116531289229890, 0.434161573582767750, 0.434206614790902060, +0.434251654913519410, 0.434296693950507630, 0.434341731901754120, 0.434386768767146660, 0.434431804546571930, 0.434476839239917640, 0.434521872847071280, 0.434566905367920640, +0.434611936802352330, 0.434656967150254150, 0.434701996411513970, 0.434747024586018440, 0.434792051673655310, 0.434837077674312010, 0.434882102587876460, 0.434927126414235250, +0.434972149153276260, 0.435017170804886890, 0.435062191368954960, 0.435107210845367130, 0.435152229234011310, 0.435197246534774930, 0.435242262747545790, 0.435287277872210670, +0.435332291908657300, 0.435377304856773170, 0.435422316716446210, 0.435467327487563060, 0.435512337170011590, 0.435557345763679720, 0.435602353268454030, 0.435647359684222470, +0.435692365010872500, 0.435737369248292040, 0.435782372396367750, 0.435827374454987540, 0.435872375424038890, 0.435917375303409680, 0.435962374092986660, 0.436007371792657690, +0.436052368402310260, 0.436097363921832350, 0.436142358351110650, 0.436187351690032980, 0.436232343938486980, 0.436277335096360520, 0.436322325163540300, 0.436367314139914310, +0.436412302025370400, 0.436457288819795340, 0.436502274523077110, 0.436547259135103120, 0.436592242655761410, 0.436637225084938680, 0.436682206422522920, 0.436727186668401660, +0.436772165822462750, 0.436817143884593080, 0.436862120854680570, 0.436907096732612740, 0.436952071518277580, 0.436997045211561800, 0.437042017812353410, 0.437086989320540020, +0.437131959736009550, 0.437176929058648740, 0.437221897288345650, 0.437266864424987800, 0.437311830468463170, 0.437356795418658570, 0.437401759275462040, 0.437446722038761450, +0.437491683708443660, 0.437536644284396700, 0.437581603766508060, 0.437626562154665890, 0.437671519448756870, 0.437716475648669060, 0.437761430754290030, 0.437806384765507870, +0.437851337682209350, 0.437896289504282440, 0.437941240231614850, 0.437986189864094540, 0.438031138401608340, 0.438076085844044340, 0.438121032191290120, 0.438165977443233660, +0.438210921599761940, 0.438255864660762830, 0.438300806626124530, 0.438345747495733800, 0.438390687269478660, 0.438435625947246830, 0.438480563528926340, 0.438525500014404050, +0.438570435403567990, 0.438615369696305820, 0.438660302892505680, 0.438705234992054330, 0.438750165994839900, 0.438795095900750110, 0.438840024709672930, 0.438884952421495280, +0.438929879036105310, 0.438974804553390610, 0.439019728973239260, 0.439064652295538260, 0.439109574520175570, 0.439154495647039340, 0.439199415676016500, 0.439244334606995130, +0.439289252439862890, 0.439334169174507960, 0.439379084810817170, 0.439423999348678710, 0.439468912787980230, 0.439513825128609870, 0.439558736370454510, 0.439603646513402340, +0.439648555557341060, 0.439693463502158820, 0.439738370347742490, 0.439783276093980210, 0.439828180740759740, 0.439873084287969280, 0.439917986735495650, 0.439962888083227090, +0.440007788331051310, 0.440052687478856400, 0.440097585526529440, 0.440142482473958490, 0.440187378321031720, 0.440232273067636130, 0.440277166713659850, 0.440322059258990650, +0.440366950703516720, 0.440411841047125000, 0.440456730289703670, 0.440501618431140500, 0.440546505471323730, 0.440591391410140250, 0.440636276247478310, 0.440681159983225660, +0.440726042617270550, 0.440770924149499920, 0.440815804579801960, 0.440860683908064540, 0.440905562134175750, 0.440950439258022690, 0.440995315279493540, 0.441040190198476460, +0.441085064014858530, 0.441129936728527900, 0.441174808339372500, 0.441219678847280420, 0.441264548252138790, 0.441309416553835760, 0.441354283752259210, 0.441399149847297330, +0.441444014838837160, 0.441488878726767010, 0.441533741510974630, 0.441578603191348280, 0.441623463767775060, 0.441668323240143160, 0.441713181608340440, 0.441758038872255180, +0.441802895031774390, 0.441847750086786450, 0.441892604037179450, 0.441937456882840580, 0.441982308623658060, 0.442027159259519740, 0.442072008790313940, 0.442116857215927750, +0.442161704536249370, 0.442206550751166770, 0.442251395860568160, 0.442296239864340690, 0.442341082762372610, 0.442385924554551830, 0.442430765240766630, 0.442475604820904090, +0.442520443294852570, 0.442565280662499950, 0.442610116923734530, 0.442654952078443350, 0.442699786126514890, 0.442744619067837300, 0.442789450902297770, 0.442834281629784610, +0.442879111250185750, 0.442923939763389560, 0.442968767169283070, 0.443013593467754650, 0.443058418658692280, 0.443103242741984260, 0.443148065717517750, 0.443192887585181050, +0.443237708344862150, 0.443282527996449350, 0.443327346539829860, 0.443372163974891990, 0.443416980301523660, 0.443461795519613340, 0.443506609629048140, 0.443551422629716360, +0.443596234521506090, 0.443641045304305590, 0.443685854978002110, 0.443730663542483970, 0.443775470997639590, 0.443820277343356110, 0.443865082579521950, 0.443909886706025050, +0.443954689722753870, 0.443999491629595570, 0.444044292426438500, 0.444089092113170770, 0.444133890689680620, 0.444178688155855430, 0.444223484511583440, 0.444268279756752820, +0.444313073891251850, 0.444357866914967810, 0.444402658827789070, 0.444447449629603750, 0.444492239320300130, 0.444537027899765570, 0.444581815367888430, 0.444626601724557150, +0.444671386969658970, 0.444716171103082260, 0.444760954124715220, 0.444805736034446120, 0.444850516832162310, 0.444895296517752230, 0.444940075091103890, 0.444984852552105740, +0.445029628900645070, 0.445074404136610370, 0.445119178259889610, 0.445163951270371280, 0.445208723167942740, 0.445253493952492360, 0.445298263623908230, 0.445343032182078880, +0.445387799626891510, 0.445432565958234660, 0.445477331175996800, 0.445522095280065260, 0.445566858270328380, 0.445611620146674440, 0.445656380908991790, 0.445701140557167810, +0.445745899091091020, 0.445790656510649420, 0.445835412815731640, 0.445880168006224880, 0.445924922082017670, 0.445969675042998230, 0.446014426889054960, 0.446059177620075240, +0.446103927235947550, 0.446148675736560090, 0.446193423121801320, 0.446238169391558580, 0.446282914545720390, 0.446327658584174950, 0.446372401506810790, 0.446417143313515170, +0.446461884004176750, 0.446506623578683980, 0.446551362036924250, 0.446596099378786140, 0.446640835604157740, 0.446685570712927690, 0.446730304704983320, 0.446775037580213140, +0.446819769338505420, 0.446864499979748640, 0.446909229503830220, 0.446953957910638740, 0.446998685200062360, 0.447043411371989610, 0.447088136426308010, 0.447132860362906060, +0.447177583181671940, 0.447222304882494260, 0.447267025465260430, 0.447311744929859030, 0.447356463276178620, 0.447401180504106710, 0.447445896613531850, 0.447490611604342230, +0.447535325476426490, 0.447580038229672020, 0.447624749863967500, 0.447669460379201080, 0.447714169775261410, 0.447758878052035900, 0.447803585209413210, 0.447848291247281540, +0.447892996165529580, 0.447937699964044640, 0.447982402642715550, 0.448027104201430440, 0.448071804640077900, 0.448116503958545520, 0.448161202156721840, 0.448205899234495610, +0.448250595191754140, 0.448295290028386250, 0.448339983744280140, 0.448384676339324440, 0.448429367813406700, 0.448474058166415500, 0.448518747398239160, 0.448563435508766320, +0.448608122497884510, 0.448652808365482440, 0.448697493111448300, 0.448742176735670850, 0.448786859238037520, 0.448831540618437110, 0.448876220876757770, 0.448920900012888310, +0.448965578026716220, 0.449010254918130180, 0.449054930687018520, 0.449099605333269870, 0.449144278856771880, 0.449188951257413150, 0.449233622535082420, 0.449278292689667290, +0.449322961721056400, 0.449367629629138120, 0.449412296413801150, 0.449456962074933020, 0.449501626612422540, 0.449546290026157980, 0.449590952316028080, 0.449635613481920380, +0.449680273523723640, 0.449724932441326270, 0.449769590234616930, 0.449814246903483210, 0.449858902447813900, 0.449903556867497330, 0.449948210162422260, 0.449992862332476260, +0.450037513377548100, 0.450082163297526590, 0.450126812092299270, 0.450171459761754880, 0.450216106305781850, 0.450260751724268990, 0.450305396017103790, 0.450350039184175150, +0.450394681225371410, 0.450439322140581360, 0.450483961929692590, 0.450528600592593920, 0.450573238129173770, 0.450617874539320900, 0.450662509822922940, 0.450707143979868720, +0.450751777010046650, 0.450796408913345490, 0.450841039689652940, 0.450885669338857820, 0.450930297860848930, 0.450974925255513860, 0.451019551522741480, 0.451064176662420210, +0.451108800674438930, 0.451153423558685210, 0.451198045315047980, 0.451242665943415610, 0.451287285443676970, 0.451331903815719690, 0.451376521059432710, 0.451421137174704390, +0.451465752161423650, 0.451510366019478140, 0.451554978748756660, 0.451599590349147760, 0.451644200820540300, 0.451688810162821920, 0.451733418375881550, 0.451778025459607990, +0.451822631413889010, 0.451867236238613410, 0.451911839933669730, 0.451956442498946900, 0.452001043934332490, 0.452045644239715490, 0.452090243414984440, 0.452134841460028080, +0.452179438374734290, 0.452224034158991870, 0.452268628812689420, 0.452313222335715750, 0.452357814727958610, 0.452402405989306980, 0.452446996119649280, 0.452491585118874550, +0.452536172986870430, 0.452580759723525850, 0.452625345328729390, 0.452669929802369970, 0.452714513144335360, 0.452759095354514420, 0.452803676432796180, 0.452848256379068340, +0.452892835193219820, 0.452937412875139220, 0.452981989424715510, 0.453026564841836450, 0.453071139126390960, 0.453115712278267580, 0.453160284297355390, 0.453204855183542030, +0.453249424936716550, 0.453293993556767530, 0.453338561043583890, 0.453383127397053500, 0.453427692617065230, 0.453472256703507770, 0.453516819656270050, 0.453561381475239890, +0.453605942160306250, 0.453650501711358180, 0.453695060128283480, 0.453739617410971070, 0.453784173559309670, 0.453828728573188230, 0.453873282452494530, 0.453917835197117650, +0.453962386806946230, 0.454006937281869190, 0.454051486621774410, 0.454096034826550920, 0.454140581896087300, 0.454185127830272710, 0.454229672628994830, 0.454274216292142820, +0.454318758819605210, 0.454363300211271140, 0.454407840467028420, 0.454452379586766100, 0.454496917570373250, 0.454541454417737630, 0.454585990128748450, 0.454630524703294290, +0.454675058141264190, 0.454719590442546060, 0.454764121607028950, 0.454808651634601550, 0.454853180525152890, 0.454897708278570900, 0.454942234894744610, 0.454986760373562780, +0.455031284714914440, 0.455075807918687460, 0.455120329984770980, 0.455164850913053700, 0.455209370703424650, 0.455253889355771770, 0.455298406869984180, 0.455342923245950600, +0.455387438483560110, 0.455431952582700580, 0.455476465543261210, 0.455520977365131030, 0.455565488048198080, 0.455609997592351320, 0.455654505997479640, 0.455699013263472060, +0.455743519390216570, 0.455788024377602240, 0.455832528225517900, 0.455877030933852620, 0.455921532502494340, 0.455966032931332250, 0.456010532220255120, 0.456055030369151960, +0.456099527377910930, 0.456144023246421000, 0.456188517974571050, 0.456233011562250210, 0.456277504009346410, 0.456321995315748910, 0.456366485481346780, 0.456410974506028020, +0.456455462389681820, 0.456499949132196990, 0.456544434733462730, 0.456588919193366920, 0.456633402511798850, 0.456677884688647230, 0.456722365723801320, 0.456766845617149090, +0.456811324368579800, 0.456855801977982150, 0.456900278445245390, 0.456944753770257510, 0.456989227952907810, 0.457033700993084990, 0.457078172890678370, 0.457122643645575870, +0.457167113257666790, 0.457211581726840290, 0.457256049052984450, 0.457300515235988530, 0.457344980275741280, 0.457389444172132010, 0.457433906925048710, 0.457478368534380620, +0.457522829000016620, 0.457567288321845960, 0.457611746499756670, 0.457656203533638060, 0.457700659423378900, 0.457745114168868480, 0.457789567769994910, 0.457834020226647380, +0.457878471538714800, 0.457922921706086510, 0.457967370728650460, 0.458011818606295970, 0.458056265338912360, 0.458100710926387660, 0.458145155368611220, 0.458189598665471880, +0.458234040816858920, 0.458278481822660510, 0.458322921682765840, 0.458367360397063940, 0.458411797965443960, 0.458456234387794090, 0.458500669664003660, 0.458545103793961570, +0.458589536777557090, 0.458633968614678420, 0.458678399305214760, 0.458722828849055130, 0.458767257246088860, 0.458811684496204020, 0.458856110599289990, 0.458900535555235630, +0.458944959363930370, 0.458989382025262290, 0.459033803539120820, 0.459078223905395160, 0.459122643123973610, 0.459167061194745370, 0.459211478117599550, 0.459255893892425380, +0.459300308519111130, 0.459344721997546060, 0.459389134327619240, 0.459433545509219940, 0.459477955542236360, 0.459522364426557920, 0.459566772162073590, 0.459611178748672690, +0.459655584186243470, 0.459699988474675300, 0.459744391613857160, 0.459788793603678410, 0.459833194444027260, 0.459877594134793180, 0.459921992675865480, 0.459966390067132410, +0.460010786308483350, 0.460055181399807330, 0.460099575340993770, 0.460143968131930870, 0.460188359772508050, 0.460232750262614340, 0.460277139602139120, 0.460321527790970690, +0.460365914828998410, 0.460410300716111330, 0.460454685452198920, 0.460499069037149430, 0.460543451470852240, 0.460587832753196420, 0.460632212884071410, 0.460676591863365460, +0.460720969690968040, 0.460765346366768640, 0.460809721890655390, 0.460854096262517890, 0.460898469482245170, 0.460942841549726650, 0.460987212464850580, 0.461031582227506560, +0.461075950837583510, 0.461120318294971020, 0.461164684599557340, 0.461209049751231950, 0.461253413749883930, 0.461297776595402780, 0.461342138287676780, 0.461386498826595440, +0.461430858212047880, 0.461475216443923530, 0.461519573522110760, 0.461563929446499040, 0.461608284216977530, 0.461652637833435690, 0.461696990295761830, 0.461741341603845560, +0.461785691757576280, 0.461830040756842360, 0.461874388601533400, 0.461918735291538430, 0.461963080826747030, 0.462007425207047520, 0.462051768432329420, 0.462096110502481950, +0.462140451417394570, 0.462184791176955710, 0.462229129781054790, 0.462273467229581130, 0.462317803522424130, 0.462362138659472290, 0.462406472640615070, 0.462450805465741690, +0.462495137134741660, 0.462539467647503420, 0.462583797003916500, 0.462628125203870480, 0.462672452247253730, 0.462716778133955840, 0.462761102863866070, 0.462805426436873890, +0.462849748852867780, 0.462894070111737280, 0.462938390213371580, 0.462982709157660320, 0.463027026944491940, 0.463071343573755900, 0.463115659045341580, 0.463159973359138500, +0.463204286515035040, 0.463248598512920880, 0.463292909352685240, 0.463337219034217760, 0.463381527557406800, 0.463425834922142010, 0.463470141128313030, 0.463514446175808340, +0.463558750064517470, 0.463603052794329780, 0.463647354365134820, 0.463691654776821120, 0.463735954029278250, 0.463780252122395490, 0.463824549056062520, 0.463868844830167770, +0.463913139444600890, 0.463957432899251180, 0.464001725194008290, 0.464046016328760690, 0.464090306303398040, 0.464134595117809630, 0.464178882771885130, 0.464223169265512990, +0.464267454598582980, 0.464311738770984690, 0.464356021782606710, 0.464400303633338620, 0.464444584323069790, 0.464488863851689910, 0.464533142219087480, 0.464577419425152180, +0.464621695469773330, 0.464665970352840630, 0.464710244074242610, 0.464754516633869020, 0.464798788031609070, 0.464843058267352620, 0.464887327340988090, 0.464931595252405240, +0.464975862001493380, 0.465020127588142260, 0.465064392012240480, 0.465108655273677670, 0.465152917372343270, 0.465197178308126960, 0.465241438080917280, 0.465285696690603990, +0.465329954137076900, 0.465374210420224530, 0.465418465539936600, 0.465462719496102520, 0.465506972288612040, 0.465551223917353760, 0.465595474382217380, 0.465639723683092310, +0.465683971819868370, 0.465728218792434090, 0.465772464600679230, 0.465816709244493250, 0.465860952723765880, 0.465905195038385730, 0.465949436188242580, 0.465993676173225850, +0.466037914993225330, 0.466082152648129630, 0.466126389137828560, 0.466170624462211860, 0.466214858621168240, 0.466259091614587510, 0.466303323442358970, 0.466347554104372560, +0.466391783600516860, 0.466436011930681740, 0.466480239094756550, 0.466524465092631180, 0.466568689924194260, 0.466612913589335600, 0.466657136087944620, 0.466701357419911260, +0.466745577585124080, 0.466789796583472970, 0.466834014414847340, 0.466878231079137060, 0.466922446576230830, 0.466966660906018520, 0.467010874068389930, 0.467055086063233700, +0.467099296890439830, 0.467143506549897670, 0.467187715041497200, 0.467231922365127010, 0.467276128520677010, 0.467320333508036700, 0.467364537327095930, 0.467408739977743400, +0.467452941459869100, 0.467497141773362380, 0.467541340918113220, 0.467585538894010330, 0.467629735700943570, 0.467673931338802470, 0.467718125807476960, 0.467762319106855730, +0.467806511236828700, 0.467850702197285420, 0.467894891988115740, 0.467939080609208410, 0.467983268060453430, 0.468027454341740650, 0.468071639452958880, 0.468115823393997990, +0.468160006164747510, 0.468204187765097420, 0.468248368194936480, 0.468292547454154660, 0.468336725542641390, 0.468380902460286740, 0.468425078206979480, 0.468469252782609480, +0.468513426187066370, 0.468557598420240030, 0.468601769482019370, 0.468645939372294260, 0.468690108090954290, 0.468734275637889440, 0.468778442012988570, 0.468822607216141550, +0.468866771247238360, 0.468910934106167910, 0.468955095792820130, 0.468999256307084560, 0.469043415648851270, 0.469087573818009030, 0.469131730814447920, 0.469175886638057430, +0.469220041288727630, 0.469264194766347340, 0.469308347070806540, 0.469352498201994870, 0.469396648159802370, 0.469440796944117830, 0.469484944554831360, 0.469529090991832490, +0.469573236255011240, 0.469617380344256540, 0.469661523259458420, 0.469705665000506870, 0.469749805567290730, 0.469793944959700120, 0.469838083177624650, 0.469882220220954330, +0.469926356089578110, 0.469970490783385930, 0.470014624302267590, 0.470058756646113070, 0.470102887814811240, 0.470147017808252190, 0.470191146626325660, 0.470235274268921590, +0.470279400735928940, 0.470323526027237810, 0.470367650142737900, 0.470411773082319180, 0.470455894845870690, 0.470500015433282460, 0.470544134844444570, 0.470588253079245960, +0.470632370137576690, 0.470676486019326550, 0.470720600724385540, 0.470764714252642660, 0.470808826603987980, 0.470852937778311220, 0.470897047775502560, 0.470941156595450830, +0.470985264238046260, 0.471029370703178460, 0.471073475990737680, 0.471117580100612830, 0.471161683032694010, 0.471205784786870970, 0.471249885363033860, 0.471293984761071650, +0.471338082980874480, 0.471382180022332120, 0.471426275885334700, 0.471470370569771200, 0.471514464075531770, 0.471558556402506550, 0.471602647550584560, 0.471646737519655910, +0.471690826309610460, 0.471734913920338340, 0.471779000351728540, 0.471823085603671260, 0.471867169676056240, 0.471911252568773700, 0.471955334281712600, 0.471999414814763210, +0.472043494167815270, 0.472087572340758990, 0.472131649333483390, 0.472175725145878630, 0.472219799777834570, 0.472263873229241460, 0.472307945499988220, 0.472352016589965120, +0.472396086499062400, 0.472440155227169030, 0.472484222774175290, 0.472528289139971030, 0.472572354324446390, 0.472616418327490460, 0.472660481148993510, 0.472704542788845380, +0.472748603246936290, 0.472792662523155270, 0.472836720617392570, 0.472880777529538110, 0.472924833259482090, 0.472968887807113600, 0.473012941172322900, 0.473056993354999840, +0.473101044355034640, 0.473145094172316480, 0.473189142806735570, 0.473233190258182220, 0.473277236526545520, 0.473321281611715660, 0.473365325513582680, 0.473409368232036720, +0.473453409766966930, 0.473497450118263660, 0.473541489285816740, 0.473585527269516530, 0.473629564069252050, 0.473673599684913740, 0.473717634116391340, 0.473761667363575280, +0.473805699426354700, 0.473849730304619850, 0.473893759998260670, 0.473937788507167450, 0.473981815831229390, 0.474025841970336810, 0.474069866924379580, 0.474113890693248110, +0.474157913276831540, 0.474201934675020140, 0.474245954887704320, 0.474289973914773230, 0.474333991756117180, 0.474378008411626200, 0.474422023881190540, 0.474466038164699460, +0.474510051262043260, 0.474554063173111940, 0.474598073897795850, 0.474642083435984190, 0.474686091787567320, 0.474730098952435230, 0.474774104930478280, 0.474818109721585670, +0.474862113325647820, 0.474906115742554650, 0.474950116972196580, 0.474994117014462810, 0.475038115869243830, 0.475082113536429870, 0.475126110015910260, 0.475170105307575360, +0.475214099411315210, 0.475258092327020210, 0.475302084054579580, 0.475346074593883780, 0.475390063944822750, 0.475434052107286950, 0.475478039081165650, 0.475522024866349200, +0.475566009462727760, 0.475609992870191680, 0.475653975088630170, 0.475697956117933750, 0.475741935957992470, 0.475785914608696680, 0.475829892069935760, 0.475873868341600110, +0.475917843423580180, 0.475961817315765260, 0.476005790018045770, 0.476049761530311810, 0.476093731852453850, 0.476137700984361150, 0.476181668925924170, 0.476225635677033080, +0.476269601237578280, 0.476313565607449090, 0.476357528786535980, 0.476401490774728990, 0.476445451571918750, 0.476489411177994430, 0.476533369592846650, 0.476577326816365390, +0.476621282848441190, 0.476665237688963410, 0.476709191337822580, 0.476753143794909070, 0.476797095060112420, 0.476841045133322980, 0.476884994014430910, 0.476928941703326780, +0.476972888199899860, 0.477016833504040780, 0.477060777615639590, 0.477104720534586800, 0.477148662260771850, 0.477192602794085260, 0.477236542134417190, 0.477280480281658090, +0.477324417235697460, 0.477368352996425770, 0.477412287563733160, 0.477456220937510280, 0.477500153117646430, 0.477544084104032150, 0.477588013896557750, 0.477631942495113650, +0.477675869899589320, 0.477719796109875310, 0.477763721125862180, 0.477807644947439380, 0.477851567574497430, 0.477895489006926630, 0.477939409244617470, 0.477983328287459370, +0.478027246135342980, 0.478071162788158480, 0.478115078245796410, 0.478158992508146310, 0.478202905575098700, 0.478246817446543850, 0.478290728122372330, 0.478334637602473630, +0.478378545886738280, 0.478422452975056590, 0.478466358867319200, 0.478510263563415470, 0.478554167063236110, 0.478598069366671710, 0.478641970473611730, 0.478685870383946830, +0.478729769097567260, 0.478773666614363710, 0.478817562934225560, 0.478861458057043500, 0.478905351982707780, 0.478949244711109060, 0.478993136242136910, 0.479037026575681870, +0.479080915711634250, 0.479124803649884750, 0.479168690390322840, 0.479212575932839220, 0.479256460277324160, 0.479300343423668340, 0.479344225371761250, 0.479388106121493630, +0.479431985672756130, 0.479475864025438240, 0.479519741179430690, 0.479563617134623810, 0.479607491890908290, 0.479651365448173660, 0.479695237806310570, 0.479739108965209440, +0.479782978924760910, 0.479826847684854510, 0.479870715245381000, 0.479914581606230740, 0.479958446767294380, 0.480002310728461560, 0.480046173489622920, 0.480090035050668830, +0.480133895411490100, 0.480177754571976200, 0.480221612532017890, 0.480265469291505600, 0.480309324850330010, 0.480353179208380720, 0.480397032365548480, 0.480440884321724050, +0.480484735076797010, 0.480528584630658120, 0.480572432983197790, 0.480616280134306790, 0.480660126083874650, 0.480703970831792230, 0.480747814377949890, 0.480791656722238390, +0.480835497864547380, 0.480879337804767600, 0.480923176542789490, 0.480967014078503790, 0.481010850411800190, 0.481054685542569470, 0.481098519470702040, 0.481142352196088700, +0.481186183718619100, 0.481230014038184000, 0.481273843154674310, 0.481317671067979570, 0.481361497777990700, 0.481405323284598060, 0.481449147587692470, 0.481492970687163680, +0.481536792582902440, 0.481580613274799230, 0.481624432762744860, 0.481668251046629030, 0.481712068126342540, 0.481755884001775940, 0.481799698672819960, 0.481843512139364380, +0.481887324401300000, 0.481931135458517290, 0.481974945310907180, 0.482018753958359300, 0.482062561400764530, 0.482106367638013730, 0.482150172669996660, 0.482193976496604120, +0.482237779117726690, 0.482281580533255150, 0.482325380743079290, 0.482369179747089980, 0.482412977545177760, 0.482456774137233420, 0.482500569523146790, 0.482544363702808730, +0.482588156676109710, 0.482631948442940770, 0.482675739003191550, 0.482719528356752970, 0.482763316503515560, 0.482807103443370240, 0.482850889176206780, 0.482894673701916130, +0.482938457020389120, 0.482982239131515670, 0.483026020035186520, 0.483069799731292380, 0.483113578219724120, 0.483157355500371530, 0.483201131573125550, 0.483244906437876760, +0.483288680094516090, 0.483332452542933280, 0.483376223783019370, 0.483419993814664940, 0.483463762637760860, 0.483507530252197000, 0.483551296657864340, 0.483595061854653400, +0.483638825842455210, 0.483682588621159590, 0.483726350190657460, 0.483770110550839460, 0.483813869701596620, 0.483857627642818640, 0.483901384374396670, 0.483945139896221570, +0.483988894208183250, 0.484032647310172700, 0.484076399202080510, 0.484120149883797760, 0.484163899355214200, 0.484207647616220930, 0.484251394666708520, 0.484295140506568020, +0.484338885135689230, 0.484382628553963300, 0.484426370761280760, 0.484470111757532680, 0.484513851542608950, 0.484557590116400590, 0.484601327478798250, 0.484645063629693010, +0.484688798568974680, 0.484732532296534350, 0.484776264812263100, 0.484819996116050810, 0.484863726207788500, 0.484907455087366880, 0.484951182754677020, 0.484994909209608800, +0.485038634452053310, 0.485082358481901290, 0.485126081299043720, 0.485169802903370530, 0.485213523294772850, 0.485257242473141390, 0.485300960438367180, 0.485344677190340190, +0.485388392728951510, 0.485432107054091900, 0.485475820165652330, 0.485519532063522830, 0.485563242747594550, 0.485606952217758510, 0.485650660473904710, 0.485694367515924260, +0.485738073343707940, 0.485781777957146780, 0.485825481356130790, 0.485869183540551090, 0.485912884510298460, 0.485956584265263950, 0.486000282805337640, 0.486043980130410610, +0.486087676240373630, 0.486131371135117840, 0.486175064814533260, 0.486218757278510990, 0.486262448526941840, 0.486306138559716940, 0.486349827376726330, 0.486393514977861150, +0.486437201363012160, 0.486480886532070560, 0.486524570484926370, 0.486568253221470740, 0.486611934741594860, 0.486655615045188780, 0.486699294132143630, 0.486742972002350280, +0.486786648655699870, 0.486830324092082490, 0.486873998311389280, 0.486917671313511050, 0.486961343098339050, 0.487005013665763260, 0.487048683015675000, 0.487092351147965010, +0.487136018062524490, 0.487179683759243590, 0.487223348238013440, 0.487267011498724980, 0.487310673541269330, 0.487354334365536600, 0.487397993971418090, 0.487441652358804930, +0.487485309527587280, 0.487528965477656340, 0.487572620208902960, 0.487616273721218460, 0.487659926014492870, 0.487703577088617500, 0.487747226943483160, 0.487790875578981150, +0.487834522995001520, 0.487878169191435620, 0.487921814168174320, 0.487965457925108810, 0.488009100462129310, 0.488052741779127050, 0.488096381875992970, 0.488140020752618310, +0.488183658408893160, 0.488227294844708890, 0.488270930059956810, 0.488314564054526950, 0.488358196828310720, 0.488401828381199000, 0.488445458713083090, 0.488489087823853140, +0.488532715713400510, 0.488576342381616070, 0.488619967828391120, 0.488663592053615870, 0.488707215057181680, 0.488750836838979460, 0.488794457398900480, 0.488838076736835050, +0.488881694852674350, 0.488925311746309430, 0.488968927417631650, 0.489012541866531150, 0.489056155092899290, 0.489099767096627390, 0.489143377877605760, 0.489186987435725640, +0.489230595770878070, 0.489274202882954420, 0.489317808771844830, 0.489361413437440720, 0.489405016879633110, 0.489448619098313330, 0.489492220093371620, 0.489535819864699350, +0.489579418412187550, 0.489623015735727530, 0.489666611835209650, 0.489710206710525230, 0.489753800361565240, 0.489797392788221210, 0.489840983990383280, 0.489884573967942880, +0.489928162720791040, 0.489971750248819230, 0.490015336551917590, 0.490058921629977660, 0.490102505482890800, 0.490146088110547270, 0.490189669512838540, 0.490233249689655650, +0.490276828640890010, 0.490320406366431930, 0.490363982866172780, 0.490407558140003700, 0.490451132187816110, 0.490494705009500320, 0.490538276604947750, 0.490581846974049500, +0.490625416116697020, 0.490668984032780590, 0.490712550722191720, 0.490756116184821510, 0.490799680420561320, 0.490843243429301580, 0.490886805210933750, 0.490930365765349260, +0.490973925092438530, 0.491017483192092930, 0.491061040064203650, 0.491104595708662110, 0.491148150125358730, 0.491191703314184990, 0.491235255275031980, 0.491278806007791170, +0.491322355512353040, 0.491365903788608950, 0.491409450836450160, 0.491452996655768080, 0.491496541246453140, 0.491540084608396880, 0.491583626741490360, 0.491627167645625200, +0.491670707320691740, 0.491714245766581460, 0.491757782983185950, 0.491801318970395640, 0.491844853728102050, 0.491888387256196270, 0.491931919554569940, 0.491975450623113430, +0.492018980461718270, 0.492062509070275660, 0.492106036448677180, 0.492149562596813190, 0.492193087514575360, 0.492236611201854750, 0.492280133658543060, 0.492323654884530560, +0.492367174879708990, 0.492410693643969500, 0.492454211177203620, 0.492497727479301820, 0.492541242550155740, 0.492584756389656540, 0.492628268997695800, 0.492671780374164040, +0.492715290518952800, 0.492758799431953720, 0.492802307113057280, 0.492845813562155070, 0.492889318779138330, 0.492932822763898660, 0.492976325516326590, 0.493019827036313640, +0.493063327323751190, 0.493106826378530760, 0.493150324200542890, 0.493193820789679220, 0.493237316145831000, 0.493280810268889870, 0.493324303158746310, 0.493367794815292030, +0.493411285238418260, 0.493454774428016610, 0.493498262383977700, 0.493541749106193080, 0.493585234594554500, 0.493628718848952490, 0.493672201869278630, 0.493715683655424290, +0.493759164207281110, 0.493802643524739630, 0.493846121607691530, 0.493889598456028140, 0.493933074069641150, 0.493976548448421090, 0.494020021592259660, 0.494063493501048170, +0.494106964174678360, 0.494150433613040730, 0.494193901816027010, 0.494237368783528530, 0.494280834515437030, 0.494324299011643040, 0.494367762272038320, 0.494411224296514570, +0.494454685084962380, 0.494498144637273480, 0.494541602953339210, 0.494585060033051300, 0.494628515876300410, 0.494671970482978170, 0.494715423852976070, 0.494758875986185730, +0.494802326882497870, 0.494845776541804170, 0.494889224963996010, 0.494932672148965190, 0.494976118096602300, 0.495019562806799100, 0.495063006279447050, 0.495106448514437800, +0.495149889511662060, 0.495193329271011620, 0.495236767792378240, 0.495280205075652570, 0.495323641120726350, 0.495367075927491070, 0.495410509495838420, 0.495453941825659160, +0.495497372916845040, 0.495540802769287470, 0.495584231382878330, 0.495627658757508190, 0.495671084893068880, 0.495714509789451860, 0.495757933446549000, 0.495801355864250890, +0.495844777042449390, 0.495888196981035980, 0.495931615679902400, 0.495975033138939430, 0.496018449358038900, 0.496061864337092210, 0.496105278075991250, 0.496148690574626740, +0.496192101832890480, 0.496235511850674380, 0.496278920627869100, 0.496322328164366500, 0.496365734460058050, 0.496409139514835730, 0.496452543328590120, 0.496495945901213150, +0.496539347232596350, 0.496582747322631520, 0.496626146171209480, 0.496669543778222090, 0.496712940143560770, 0.496756335267117540, 0.496799729148783060, 0.496843121788449300, +0.496886513186007680, 0.496929903341350230, 0.496973292254367590, 0.497016679924951690, 0.497060066352994550, 0.497103451538386810, 0.497146835481020450, 0.497190218180787010, +0.497233599637578410, 0.497276979851285380, 0.497320358821799920, 0.497363736549013610, 0.497407113032818320, 0.497450488273104840, 0.497493862269765160, 0.497537235022690870, +0.497580606531773830, 0.497623976796904840, 0.497667345817976000, 0.497710713594878730, 0.497754080127505110, 0.497797445415745890, 0.497840809459493050, 0.497884172258638570, +0.497927533813073250, 0.497970894122689130, 0.498014253187377740, 0.498057611007031160, 0.498100967581540100, 0.498144322910796690, 0.498187676994692410, 0.498231029833119340, +0.498274381425968360, 0.498317731773131380, 0.498361080874500100, 0.498404428729966430, 0.498447775339421360, 0.498491120702756860, 0.498534464819864580, 0.498577807690636480, +0.498621149314963490, 0.498664489692737580, 0.498707828823850510, 0.498751166708194250, 0.498794503345659670, 0.498837838736138790, 0.498881172879523770, 0.498924505775705410, +0.498967837424575730, 0.499011167826026560, 0.499054496979949800, 0.499097824886236390, 0.499141151544778450, 0.499184476955467640, 0.499227801118195980, 0.499271124032854450, +0.499314445699335140, 0.499357766117529690, 0.499401085287330240, 0.499444403208627650, 0.499487719881314070, 0.499531035305281200, 0.499574349480421120, 0.499617662406624750, +0.499660974083784290, 0.499704284511791720, 0.499747593690538060, 0.499790901619915460, 0.499834208299815560, 0.499877513730130560, 0.499920817910751380, 0.499964120841570160, +0.500007422522478650, 0.500050722953368940, 0.500094022134132010, 0.500137320064660050, 0.500180616744844820, 0.500223912174578400, 0.500267206353751880, 0.500310499282257240, +0.500353790959986440, 0.500397081386831480, 0.500440370562683420, 0.500483658487434480, 0.500526945160976840, 0.500570230583201380, 0.500613514754000400, 0.500656797673265540, +0.500700079340889110, 0.500743359756762100, 0.500786638920776680, 0.500829916832824740, 0.500873193492798350, 0.500916468900588500, 0.500959743056087590, 0.501003015959187280, +0.501046287609779870, 0.501089558007756230, 0.501132827153008780, 0.501176095045429260, 0.501219361684909880, 0.501262627071341730, 0.501305891204616990, 0.501349154084627550, +0.501392415711265580, 0.501435676084422190, 0.501478935203989560, 0.501522193069860120, 0.501565449681924620, 0.501608705040075710, 0.501651959144204910, 0.501695211994204530, +0.501738463589965880, 0.501781713931380930, 0.501824963018341790, 0.501868210850740630, 0.501911457428468540, 0.501954702751417850, 0.501997946819480400, 0.502041189632548400, +0.502084431190513050, 0.502127671493266650, 0.502170910540701070, 0.502214148332708610, 0.502257384869180370, 0.502300620150008650, 0.502343854175085760, 0.502387086944302900, +0.502430318457552370, 0.502473548714725940, 0.502516777715716010, 0.502560005460413910, 0.502603231948711590, 0.502646457180501380, 0.502689681155675250, 0.502732903874124610, +0.502776125335741670, 0.502819345540418520, 0.502862564488047340, 0.502905782178519330, 0.502948998611726930, 0.502992213787561980, 0.503035427705916800, 0.503078640366682820, +0.503121851769752100, 0.503165061915017200, 0.503208270802369300, 0.503251478431700710, 0.503294684802903400, 0.503337889915869810, 0.503381093770491010, 0.503424296366659530, +0.503467497704267350, 0.503510697783206780, 0.503553896603369020, 0.503597094164646600, 0.503640290466931480, 0.503683485510115880, 0.503726679294091320, 0.503769871818749990, +0.503813063083983990, 0.503856253089685730, 0.503899441835746420, 0.503942629322058580, 0.503985815548514520, 0.504029000515005430, 0.504072184221423970, 0.504115366667661990, +0.504158547853612030, 0.504201727779165280, 0.504244906444214160, 0.504288083848650870, 0.504331259992367720, 0.504374434875256020, 0.504417608497208180, 0.504460780858116410, +0.504503951957873010, 0.504547121796369400, 0.504590290373498010, 0.504633457689150800, 0.504676623743220420, 0.504719788535598070, 0.504762952066176160, 0.504806114334847010, +0.504849275341502810, 0.504892435086035210, 0.504935593568336390, 0.504978750788299010, 0.505021906745814380, 0.505065061440775010, 0.505108214873072890, 0.505151367042600660, +0.505194517949249630, 0.505237667592912330, 0.505280815973480960, 0.505323963090847820, 0.505367108944904330, 0.505410253535543140, 0.505453396862656330, 0.505496538926136440, +0.505539679725874770, 0.505582819261763850, 0.505625957533695990, 0.505669094541563500, 0.505712230285258020, 0.505755364764671870, 0.505798497979697670, 0.505841629930226970, +0.505884760616152060, 0.505927890037365380, 0.505971018193759230, 0.506014145085225240, 0.506057270711655850, 0.506100395072943240, 0.506143518168980070, 0.506186639999657740, +0.506229760564868790, 0.506272879864505530, 0.506315997898460380, 0.506359114666624750, 0.506402230168891410, 0.506445344405152540, 0.506488457375300680, 0.506531569079227250, +0.506574679516825000, 0.506617788687986350, 0.506660896592602830, 0.506704003230567080, 0.506747108601771300, 0.506790212706108250, 0.506833315543469110, 0.506876417113746870, +0.506919517416833500, 0.506962616452621640, 0.507005714221002930, 0.507048810721869910, 0.507091905955114890, 0.507134999920630490, 0.507178092618308260, 0.507221184048040730, +0.507264274209720200, 0.507307363103239430, 0.507350450728489830, 0.507393537085364170, 0.507436622173754630, 0.507479705993553960, 0.507522788544653600, 0.507565869826946180, +0.507608949840324560, 0.507652028584680170, 0.507695106059905750, 0.507738182265893510, 0.507781257202536310, 0.507824330869725450, 0.507867403267353800, 0.507910474395313670, +0.507953544253497700, 0.507996612841797530, 0.508039680160105810, 0.508082746208314840, 0.508125810986317480, 0.508168874494005160, 0.508211936731270630, 0.508254997698006310, +0.508298057394104830, 0.508341115819457840, 0.508384172973957990, 0.508427228857498250, 0.508470283469969920, 0.508513336811265980, 0.508556388881278630, 0.508599439679900730, +0.508642489207023820, 0.508685537462540640, 0.508728584446343720, 0.508771630158325720, 0.508814674598378150, 0.508857717766393990, 0.508900759662265450, 0.508943800285885480, +0.508986839637145640, 0.509029877715938660, 0.509072914522156970, 0.509115950055693430, 0.509158984316439580, 0.509202017304288270, 0.509245049019132260, 0.509288079460863300, +0.509331108629374140, 0.509374136524557210, 0.509417163146305360, 0.509460188494510140, 0.509503212569064500, 0.509546235369860880, 0.509589256896791910, 0.509632277149749570, +0.509675296128626500, 0.509718313833315120, 0.509761330263708400, 0.509804345419697880, 0.509847359301176640, 0.509890371908036880, 0.509933383240171570, 0.509976393297472460, +0.510019402079832430, 0.510062409587144220, 0.510105415819299580, 0.510148420776191490, 0.510191424457712260, 0.510234426863754860, 0.510277427994211050, 0.510320427848973580, +0.510363426427935200, 0.510406423730988550, 0.510449419758025380, 0.510492414508938790, 0.510535407983621070, 0.510578400181965210, 0.510621391103863060, 0.510664380749207390, +0.510707369117890720, 0.510750356209806020, 0.510793342024845170, 0.510836326562900790, 0.510879309823865760, 0.510922291807632710, 0.510965272514093630, 0.511008251943141260, +0.511051230094668680, 0.511094206968567780, 0.511137182564731170, 0.511180156883051740, 0.511223129923422230, 0.511266101685734500, 0.511309072169881640, 0.511352041375755960, +0.511395009303250660, 0.511437975952257370, 0.511480941322669190, 0.511523905414378640, 0.511566868227278700, 0.511609829761261240, 0.511652790016219220, 0.511695748992045170, +0.511738706688632080, 0.511781663105871920, 0.511824618243657660, 0.511867572101882160, 0.511910524680437300, 0.511953475979216250, 0.511996425998111460, 0.512039374737016000, +0.512082322195821620, 0.512125268374421520, 0.512168213272708230, 0.512211156890574840, 0.512254099227913100, 0.512297040284616200, 0.512339980060576570, 0.512382918555687520, +0.512425855769840680, 0.512468791702929250, 0.512511726354845880, 0.512554659725483530, 0.512597591814734080, 0.512640522622490710, 0.512683452148646520, 0.512726380393093150, +0.512769307355723900, 0.512812233036431420, 0.512855157435108680, 0.512898080551647760, 0.512941002385941540, 0.512983922937882860, 0.513026842207364720, 0.513069760194279080, +0.513112676898519030, 0.513155592319977320, 0.513198506458547030, 0.513241419314120150, 0.513284330886589650, 0.513327241175848270, 0.513370150181789220, 0.513413057904304470, +0.513455964343287000, 0.513498869498629660, 0.513541773370225550, 0.513584675957966530, 0.513627577261745900, 0.513670477281456650, 0.513713376016990850, 0.513756273468241710, +0.513799169635101750, 0.513842064517464280, 0.513884958115221280, 0.513927850428265940, 0.513970741456490910, 0.514013631199789380, 0.514056519658053430, 0.514099406831176160, +0.514142292719050430, 0.514185177321569320, 0.514228060638624920, 0.514270942670110310, 0.514313823415918360, 0.514356702875942260, 0.514399581050074000, 0.514442457938206750, +0.514485333540233740, 0.514528207856047140, 0.514571080885539820, 0.514613952628604990, 0.514656823085135610, 0.514699692255023660, 0.514742560138162660, 0.514785426734445160, +0.514828292043764460, 0.514871156066012640, 0.514914018801083010, 0.514956880248868320, 0.514999740409261770, 0.515042599282155460, 0.515085456867442780, 0.515128313165016280, +0.515171168174769490, 0.515214021896594380, 0.515256874330384250, 0.515299725476032310, 0.515342575333430640, 0.515385423902472550, 0.515428271183050900, 0.515471117175058890, +0.515513961878388720, 0.515556805292933680, 0.515599647418586660, 0.515642488255240950, 0.515685327802788530, 0.515728166061122820, 0.515771003030136680, 0.515813838709723420, +0.515856673099775230, 0.515899506200185320, 0.515942338010846660, 0.515985168531652550, 0.516027997762495080, 0.516070825703267680, 0.516113652353863530, 0.516156477714174940, +0.516199301784095010, 0.516242124563517040, 0.516284946052333990, 0.516327766250438190, 0.516370585157723050, 0.516413402774081430, 0.516456219099406640, 0.516499034133591000, +0.516541847876527680, 0.516584660328109790, 0.516627471488230740, 0.516670281356782500, 0.516713089933658500, 0.516755897218751930, 0.516798703211955870, 0.516841507913162750, +0.516884311322265870, 0.516927113439158090, 0.516969914263733070, 0.517012713795882760, 0.517055512035500710, 0.517098308982480330, 0.517141104636713700, 0.517183898998094360, +0.517226692066515280, 0.517269483841869770, 0.517312274324050250, 0.517355063512950020, 0.517397851408462060, 0.517440638010480010, 0.517483423318895850, 0.517526207333603220, +0.517568990054494970, 0.517611771481464760, 0.517654551614404660, 0.517697330453208200, 0.517740107997768370, 0.517782884247978690, 0.517825659203731360, 0.517868432864920010, +0.517911205231437850, 0.517953976303177300, 0.517996746080031880, 0.518039514561894570, 0.518082281748658780, 0.518125047640217050, 0.518167812236462580, 0.518210575537288660, +0.518253337542588620, 0.518296098252254870, 0.518338857666180820, 0.518381615784259680, 0.518424372606384960, 0.518467128132448770, 0.518509882362344850, 0.518552635295966290, +0.518595386933206390, 0.518638137273957690, 0.518680886318113710, 0.518723634065567870, 0.518766380516212490, 0.518809125669941200, 0.518851869526647190, 0.518894612086223780, +0.518937353348563500, 0.518980093313559760, 0.519022831981105880, 0.519065569351095270, 0.519108305423420350, 0.519151040197974640, 0.519193773674651360, 0.519236505853344020, +0.519279236733945050, 0.519321966316347970, 0.519364694600445990, 0.519407421586132620, 0.519450147273300410, 0.519492871661842770, 0.519535594751652900, 0.519578316542624540, +0.519621037034649900, 0.519663756227622730, 0.519706474121436560, 0.519749190715983690, 0.519791906011157990, 0.519834620006852430, 0.519877332702960770, 0.519920044099375420, +0.519962754195989920, 0.520005462992697560, 0.520048170489391890, 0.520090876685965430, 0.520133581582311710, 0.520176285178324150, 0.520218987473896170, 0.520261688468920400, +0.520304388163290390, 0.520347086556899430, 0.520389783649641060, 0.520432479441407910, 0.520475173932093530, 0.520517867121591650, 0.520560559009794700, 0.520603249596596320, +0.520645938881889810, 0.520688626865568830, 0.520731313547526000, 0.520773998927654750, 0.520816683005848600, 0.520859365782001090, 0.520902047256004860, 0.520944727427753440, +0.520987406297140130, 0.521030083864058800, 0.521072760128401870, 0.521115435090062970, 0.521158108748935530, 0.521200781104913190, 0.521243452157888590, 0.521286121907755250, +0.521328790354407050, 0.521371457497736390, 0.521414123337637150, 0.521456787874002630, 0.521499451106726570, 0.521542113035701420, 0.521584773660821010, 0.521627432981978670, +0.521670090999068140, 0.521712747711981950, 0.521755403120613970, 0.521798057224857390, 0.521840710024606080, 0.521883361519752680, 0.521926011710190820, 0.521968660595813930, +0.522011308176515750, 0.522053954452188940, 0.522096599422727240, 0.522139243088024510, 0.522181885447973170, 0.522224526502467200, 0.522267166251399790, 0.522309804694665040, +0.522352441832155230, 0.522395077663764360, 0.522437712189385840, 0.522480345408913420, 0.522522977322239730, 0.522565607929258550, 0.522608237229863380, 0.522650865223947990, +0.522693491911405130, 0.522736117292128430, 0.522778741366011550, 0.522821364132948110, 0.522863985592830980, 0.522906605745553810, 0.522949224591010120, 0.522991842129093780, +0.523034458359697420, 0.523077073282714910, 0.523119686898040110, 0.523162299205565780, 0.523204910205185670, 0.523247519896793190, 0.523290128280282430, 0.523332735355545810, +0.523375341122477520, 0.523417945580970770, 0.523460548730919630, 0.523503150572216640, 0.523545751104755760, 0.523588350328430540, 0.523630948243134830, 0.523673544848761390, +0.523716140145204070, 0.523758734132356410, 0.523801326810112270, 0.523843918178364510, 0.523886508237006890, 0.523929096985933370, 0.523971684425036720, 0.524014270554210900, +0.524056855373349450, 0.524099438882346110, 0.524142021081093870, 0.524184601969486570, 0.524227181547417760, 0.524269759814781410, 0.524312336771470270, 0.524354912417378300, +0.524397486752398940, 0.524440059776426380, 0.524482631489353260, 0.524525201891073430, 0.524567770981480770, 0.524610338760469030, 0.524652905227930950, 0.524695470383760740, +0.524738034227852150, 0.524780596760098140, 0.524823157980392590, 0.524865717888629240, 0.524908276484701840, 0.524950833768503490, 0.524993389739928040, 0.525035944398869030, +0.525078497745220640, 0.525121049778875530, 0.525163600499727880, 0.525206149907671120, 0.525248698002599430, 0.525291244784405700, 0.525333790252983770, 0.525376334408227400, +0.525418877250030560, 0.525461418778286120, 0.525503958992888150, 0.525546497893730310, 0.525589035480706570, 0.525631571753709890, 0.525674106712634260, 0.525716640357373750, +0.525759172687821240, 0.525801703703870800, 0.525844233405416080, 0.525886761792351170, 0.525929288864569020, 0.525971814621963630, 0.526014339064428740, 0.526056862191858320, +0.526099384004145350, 0.526141904501184030, 0.526184423682867890, 0.526226941549091000, 0.526269458099746460, 0.526311973334728230, 0.526354487253930080, 0.526396999857246080, +0.526439511144569220, 0.526482021115793560, 0.526524529770813320, 0.526567037109521240, 0.526609543131811630, 0.526652047837578240, 0.526694551226715050, 0.526737053299115020, +0.526779554054672470, 0.526822053493280930, 0.526864551614834700, 0.526907048419226750, 0.526949543906351180, 0.526992038076101620, 0.527034530928372490, 0.527077022463056540, +0.527119512680048090, 0.527162001579240870, 0.527204489160529090, 0.527246975423805610, 0.527289460368964740, 0.527331943995900550, 0.527374426304506150, 0.527416907294675610, +0.527459386966302900, 0.527501865319282110, 0.527544342353506220, 0.527586818068869420, 0.527629292465265690, 0.527671765542589100, 0.527714237300732640, 0.527756707739590600, +0.527799176859056860, 0.527841644659025500, 0.527884111139389710, 0.527926576300043580, 0.527969040140881090, 0.528011502661796310, 0.528053963862682330, 0.528096423743433570, +0.528138882303944010, 0.528181339544106950, 0.528223795463816590, 0.528266250062966680, 0.528308703341451520, 0.528351155299164210, 0.528393605935999040, 0.528436055251849780, +0.528478503246610830, 0.528520949920175290, 0.528563395272437230, 0.528605839303290860, 0.528648282012630140, 0.528690723400348390, 0.528733163466339810, 0.528775602210498350, +0.528818039632718230, 0.528860475732892630, 0.528902910510915870, 0.528945343966681800, 0.528987776100084740, 0.529030206911017880, 0.529072636399375520, 0.529115064565051970, +0.529157491407940330, 0.529199916927935000, 0.529242341124929850, 0.529284763998819300, 0.529327185549496430, 0.529369605776855550, 0.529412024680790630, 0.529454442261196090, +0.529496858517965020, 0.529539273450991830, 0.529581687060170500, 0.529624099345395230, 0.529666510306559420, 0.529708919943557290, 0.529751328256282910, 0.529793735244630580, +0.529836140908493510, 0.529878545247766010, 0.529920948262342590, 0.529963349952116470, 0.530005750316981940, 0.530048149356833090, 0.530090547071564110, 0.530132943461068540, +0.530175338525240460, 0.530217732263974170, 0.530260124677163880, 0.530302515764702890, 0.530344905526485500, 0.530387293962406030, 0.530429681072358550, 0.530472066856236600, +0.530514451313934490, 0.530556834445346180, 0.530599216250366210, 0.530641596728887780, 0.530683975880805400, 0.530726353706013400, 0.530768730204405180, 0.530811105375875170, +0.530853479220317340, 0.530895851737626210, 0.530938222927695100, 0.530980592790418430, 0.531022961325690270, 0.531065328533405050, 0.531107694413456180, 0.531150058965737970, +0.531192422190144730, 0.531234784086570770, 0.531277144654909490, 0.531319503895055330, 0.531361861806902370, 0.531404218390345240, 0.531446573645277140, 0.531488927571592610, +0.531531280169185720, 0.531573631437951000, 0.531615981377781880, 0.531658329988572760, 0.531700677270218190, 0.531743023222611580, 0.531785367845647450, 0.531827711139219780, +0.531870053103223330, 0.531912393737551280, 0.531954733042098280, 0.531997071016758530, 0.532039407661426320, 0.532081742975995420, 0.532124076960360020, 0.532166409614414420, +0.532208740938053260, 0.532251070931169750, 0.532293399593658620, 0.532335726925413980, 0.532378052926330450, 0.532420377596301450, 0.532462700935221410, 0.532505022942984960, +0.532547343619485640, 0.532589662964617960, 0.532631980978276130, 0.532674297660354790, 0.532716613010747240, 0.532758927029348130, 0.532801239716051760, 0.532843551070752650, +0.532885861093344350, 0.532928169783721260, 0.532970477141777920, 0.533012783167408630, 0.533055087860507040, 0.533097391220967780, 0.533139693248684930, 0.533181993943553370, +0.533224293305466280, 0.533266591334318530, 0.533308888030004760, 0.533351183392418270, 0.533393477421453930, 0.533435770117005830, 0.533478061478968700, 0.533520351507236090, +0.533562640201702520, 0.533604927562262410, 0.533647213588810290, 0.533689498281239790, 0.533731781639445570, 0.533774063663321920, 0.533816344352763370, 0.533858623707663680, +0.533900901727917490, 0.533943178413418870, 0.533985453764062810, 0.534027727779742720, 0.534070000460353240, 0.534112271805789240, 0.534154541815944130, 0.534196810490712660, +0.534239077829989250, 0.534281343833668430, 0.534323608501643840, 0.534365871833810350, 0.534408133830062030, 0.534450394490293860, 0.534492653814399370, 0.534534911802273080, +0.534577168453809650, 0.534619423768903700, 0.534661677747448660, 0.534703930389339610, 0.534746181694470630, 0.534788431662736490, 0.534830680294031020, 0.534872927588248780, +0.534915173545284280, 0.534957418165032280, 0.534999661447386200, 0.535041903392241110, 0.535084143999491560, 0.535126383269031280, 0.535168621200755030, 0.535210857794557240, +0.535253093050332750, 0.535295326967975100, 0.535337559547379050, 0.535379790788439220, 0.535422020691050270, 0.535464249255105830, 0.535506476480500760, 0.535548702367129590, +0.535590926914886970, 0.535633150123666750, 0.535675371993363570, 0.535717592523871970, 0.535759811715086690, 0.535802029566901590, 0.535844246079211440, 0.535886461251911080, +0.535928675084894060, 0.535970887578055440, 0.536013098731289660, 0.536055308544491350, 0.536097517017554480, 0.536139724150373810, 0.536181929942843860, 0.536224134394859500, +0.536266337506314360, 0.536308539277103310, 0.536350739707120990, 0.536392938796262260, 0.536435136544420770, 0.536477332951491360, 0.536519528017368690, 0.536561721741947490, +0.536603914125121760, 0.536646105166786120, 0.536688294866835670, 0.536730483225164030, 0.536772670241666190, 0.536814855916236790, 0.536857040248770460, 0.536899223239161280, +0.536941404887304020, 0.536983585193093190, 0.537025764156423780, 0.537067941777189640, 0.537110118055285630, 0.537152292990606290, 0.537194466583046590, 0.537236638832500390, +0.537278809738862660, 0.537320979302027820, 0.537363147521890850, 0.537405314398345710, 0.537447479931287280, 0.537489644120610180, 0.537531806966209280, 0.537573968467978560, +0.537616128625812870, 0.537658287439607200, 0.537700444909255500, 0.537742601034652660, 0.537784755815693290, 0.537826909252272500, 0.537869061344283920, 0.537911212091622850, +0.537953361494183600, 0.537995509551861370, 0.538037656264550020, 0.538079801632144530, 0.538121945654539520, 0.538164088331630100, 0.538206229663310000, 0.538248369649474310, +0.538290508290017680, 0.538332645584835290, 0.538374781533820790, 0.538416916136869370, 0.538459049393876010, 0.538501181304734680, 0.538543311869340350, 0.538585441087587770, +0.538627568959372030, 0.538669695484586870, 0.538711820663127620, 0.538753944494888670, 0.538796066979765340, 0.538838188117651380, 0.538880307908442100, 0.538922426352031910, +0.538964543448316010, 0.539006659197188490, 0.539048773598544310, 0.539090886652278110, 0.539132998358285100, 0.539175108716459240, 0.539217217726695620, 0.539259325388889320, +0.539301431702934320, 0.539343536668725700, 0.539385640286158320, 0.539427742555127150, 0.539469843475526290, 0.539511943047250810, 0.539554041270195460, 0.539596138144255330, +0.539638233669324620, 0.539680327845298180, 0.539722420672070990, 0.539764512149538130, 0.539806602277593690, 0.539848691056132650, 0.539890778485049850, 0.539932864564240500, +0.539974949293598680, 0.540017032673019480, 0.540059114702397980, 0.540101195381628370, 0.540143274710605750, 0.540185352689225070, 0.540227429317381210, 0.540269504594968470, +0.540311578521882050, 0.540353651098016590, 0.540395722323267380, 0.540437792197528520, 0.540479860720695200, 0.540521927892662180, 0.540563993713324640, 0.540606058182576900, +0.540648121300313920, 0.540690183066430690, 0.540732243480822380, 0.540774302543382990, 0.540816360254007920, 0.540858416612591930, 0.540900471619030320, 0.540942525273217180, +0.540984577575047590, 0.541026628524417070, 0.541068678121219500, 0.541110726365350290, 0.541152773256704300, 0.541194818795176610, 0.541236862980661650, 0.541278905813054490, +0.541320947292250000, 0.541362987418143590, 0.541405026190629360, 0.541447063609602490, 0.541489099674957950, 0.541531134386591170, 0.541573167744396010, 0.541615199748267990, +0.541657230398101990, 0.541699259693793290, 0.541741287635236100, 0.541783314222325620, 0.541825339454957260, 0.541867363333025210, 0.541909385856424790, 0.541951407025050850, +0.541993426838798700, 0.542035445297562650, 0.542077462401238000, 0.542119478149719720, 0.542161492542903130, 0.542203505580682310, 0.542245517262952890, 0.542287527589609630, +0.542329536560547830, 0.542371544175661910, 0.542413550434847070, 0.542455555337998390, 0.542497558885011280, 0.542539561075779720, 0.542581561910199350, 0.542623561388165480, +0.542665559509572290, 0.542707556274315220, 0.542749551682289330, 0.542791545733389840, 0.542833538427511140, 0.542875529764548560, 0.542917519744397170, 0.542959508366952390, +0.543001495632108420, 0.543043481539760790, 0.543085466089804350, 0.543127449282134630, 0.543169431116645950, 0.543211411593233720, 0.543253390711792910, 0.543295368472219040, +0.543337344874406440, 0.543379319918250280, 0.543421293603645990, 0.543463265930488770, 0.543505236898673030, 0.543547206508094180, 0.543589174758647760, 0.543631141650227970, +0.543673107182730320, 0.543715071356049910, 0.543757034170082250, 0.543798995624721560, 0.543840955719863350, 0.543882914455402820, 0.543924871831235390, 0.543966827847255360, +0.544008782503358270, 0.544050735799439190, 0.544092687735393770, 0.544134638311116080, 0.544176587526501890, 0.544218535381446270, 0.544260481875844640, 0.544302427009591420, +0.544344370782582130, 0.544386313194712310, 0.544428254245876380, 0.544470193935969740, 0.544512132264887700, 0.544554069232525580, 0.544596004838778010, 0.544637939083540410, +0.544679871966707860, 0.544721803488176120, 0.544763733647839480, 0.544805662445593470, 0.544847589881333420, 0.544889515954954610, 0.544931440666351690, 0.544973364015420180, +0.545015286002055290, 0.545057206626152540, 0.545099125887606450, 0.545141043786312450, 0.545182960322166290, 0.545224875495062270, 0.545266789304896140, 0.545308701751562990, +0.545350612834958450, 0.545392522554977060, 0.545434430911514330, 0.545476337904465590, 0.545518243533726240, 0.545560147799191040, 0.545602050700755400, 0.545643952238314630, +0.545685852411764370, 0.545727751220999150, 0.545769648665914490, 0.545811544746405700, 0.545853439462368420, 0.545895332813697290, 0.545937224800287720, 0.545979115422035480, +0.546021004678835080, 0.546062892570582160, 0.546104779097172030, 0.546146664258500230, 0.546188548054461490, 0.546230430484951460, 0.546272311549865220, 0.546314191249098640, +0.546356069582546120, 0.546397946550103540, 0.546439822151666090, 0.546481696387129400, 0.546523569256388120, 0.546565440759337880, 0.546607310895874000, 0.546649179665892330, +0.546691047069287280, 0.546732913105954620, 0.546774777775789640, 0.546816641078688210, 0.546858503014544750, 0.546900363583255000, 0.546942222784714720, 0.546984080618818420, +0.547025937085462100, 0.547067792184540820, 0.547109645915950460, 0.547151498279585650, 0.547193349275342020, 0.547235198903115010, 0.547277047162800460, 0.547318894054292900, +0.547360739577488100, 0.547402583732281340, 0.547444426518568620, 0.547486267936244440, 0.547528107985204570, 0.547569946665344420, 0.547611783976559850, 0.547653619918745390, +0.547695454491796910, 0.547737287695610140, 0.547779119530079740, 0.547820949995101560, 0.547862779090571020, 0.547904606816383980, 0.547946433172434970, 0.547988258158619850, +0.548030081774834140, 0.548071904020973610, 0.548113724896932890, 0.548155544402607940, 0.548197362537894080, 0.548239179302687170, 0.548280994696881960, 0.548322808720374310, +0.548364621373059520, 0.548406432654833690, 0.548448242565591330, 0.548490051105228300, 0.548531858273640590, 0.548573664070722830, 0.548615468496370990, 0.548657271550480390, +0.548699073232947090, 0.548740873543665630, 0.548782672482531990, 0.548824470049441680, 0.548866266244290580, 0.548908061066973430, 0.548949854517386200, 0.548991646595424320, +0.549033437300983640, 0.549075226633959020, 0.549117014594246330, 0.549158801181741100, 0.549200586396339170, 0.549242370237935430, 0.549284152706425830, 0.549325933801705800, +0.549367713523671420, 0.549409491872217210, 0.549451268847239380, 0.549493044448633780, 0.549534818676295170, 0.549576591530119400, 0.549618363010002220, 0.549660133115839610, +0.549701901847526210, 0.549743669204957990, 0.549785435188030690, 0.549827199796640190, 0.549868963030681220, 0.549910724890049880, 0.549952485374641810, 0.549994244484352750, +0.550036002219077780, 0.550077758578712880, 0.550119513563153470, 0.550161267172295740, 0.550203019406034440, 0.550244770264265550, 0.550286519746885140, 0.550328267853788080, +0.550370014584870340, 0.550411759940027560, 0.550453503919155710, 0.550495246522149760, 0.550536987748905690, 0.550578727599319140, 0.550620466073286190, 0.550662203170701690, +0.550703938891461630, 0.550745673235461750, 0.550787406202598030, 0.550829137792765540, 0.550870868005860050, 0.550912596841777510, 0.550954324300413800, 0.550996050381663880, +0.551037775085423950, 0.551079498411589870, 0.551121220360056620, 0.551162940930720380, 0.551204660123476800, 0.551246377938221950, 0.551288094374850710, 0.551329809433259270, +0.551371523113343360, 0.551413235414998980, 0.551454946338121090, 0.551496655882605880, 0.551538364048348990, 0.551580070835246630, 0.551621776243193750, 0.551663480272086340, +0.551705182921820250, 0.551746884192291560, 0.551788584083395370, 0.551830282595027640, 0.551871979727084240, 0.551913675479461240, 0.551955369852053620, 0.551997062844757690, +0.552038754457469420, 0.552080444690083880, 0.552122133542497280, 0.552163821014605370, 0.552205507106304230, 0.552247191817488940, 0.552288875148055690, 0.552330557097900240, +0.552372237666918680, 0.552413916855006290, 0.552455594662059070, 0.552497271087972860, 0.552538946132643870, 0.552580619795967070, 0.552622292077838750, 0.552663962978154680, +0.552705632496811150, 0.552747300633703140, 0.552788967388726850, 0.552830632761778570, 0.552872296752753290, 0.552913959361547300, 0.552955620588056360, 0.552997280432176770, +0.553038938893803620, 0.553080595972833100, 0.553122251669161070, 0.553163905982683830, 0.553205558913296370, 0.553247210460895090, 0.553288860625375860, 0.553330509406634750, +0.553372156804566970, 0.553413802819068820, 0.553455447450036160, 0.553497090697365300, 0.553538732560951320, 0.553580373040690520, 0.553622012136479100, 0.553663649848212370, +0.553705286175786400, 0.553746921119097290, 0.553788554678041220, 0.553830186852513400, 0.553871817642410220, 0.553913447047627350, 0.553955075068061300, 0.553996701703607150, +0.554038326954161330, 0.554079950819619580, 0.554121573299878430, 0.554163194394832860, 0.554204814104379380, 0.554246432428413870, 0.554288049366832620, 0.554329664919530950, +0.554371279086405040, 0.554412891867351320, 0.554454503262264970, 0.554496113271042420, 0.554537721893579530, 0.554579329129772700, 0.554620934979517250, 0.554662539442709490, +0.554704142519245270, 0.554745744209021120, 0.554787344511932230, 0.554828943427874920, 0.554870540956745370, 0.554912137098439780, 0.554953731852853460, 0.554995325219882820, +0.555036917199423940, 0.555078507791373020, 0.555120096995625590, 0.555161684812077730, 0.555203271240625850, 0.555244856281166040, 0.555286439933593830, 0.555328022197805420, +0.555369603073697320, 0.555411182561164950, 0.555452760660104520, 0.555494337370412210, 0.555535912691984430, 0.555577486624716510, 0.555619059168504850, 0.555660630323245640, +0.555702200088835090, 0.555743768465168710, 0.555785335452142930, 0.555826901049653820, 0.555868465257597810, 0.555910028075870310, 0.555951589504367740, 0.555993149542986180, +0.556034708191622040, 0.556076265450170860, 0.556117821318528940, 0.556159375796592910, 0.556200928884257980, 0.556242480581420780, 0.556284030887977400, 0.556325579803824240, +0.556367127328856850, 0.556408673462971630, 0.556450218206064660, 0.556491761558032590, 0.556533303518770730, 0.556574844088175590, 0.556616383266143270, 0.556657921052570500, +0.556699457447352500, 0.556740992450385770, 0.556782526061566640, 0.556824058280791620, 0.556865589107956030, 0.556907118542956490, 0.556948646585689430, 0.556990173236050490, +0.557031698493936080, 0.557073222359242390, 0.557114744831866070, 0.557156265911702530, 0.557197785598648300, 0.557239303892599570, 0.557280820793452980, 0.557322336301103950, +0.557363850415449110, 0.557405363136384670, 0.557446874463807140, 0.557488384397612060, 0.557529892937696060, 0.557571400083955340, 0.557612905836286420, 0.557654410194584840, +0.557695913158747340, 0.557737414728670000, 0.557778914904249470, 0.557820413685381270, 0.557861911071962150, 0.557903407063888520, 0.557944901661056040, 0.557986394863361320, +0.558027886670700580, 0.558069377082970550, 0.558110866100066660, 0.558152353721885540, 0.558193839948323610, 0.558235324779277510, 0.558276808214642650, 0.558318290254315790, +0.558359770898193110, 0.558401250146171480, 0.558442727998146320, 0.558484204454014370, 0.558525679513671940, 0.558567153177015660, 0.558608625443941080, 0.558650096314344920, +0.558691565788123960, 0.558733033865173700, 0.558774500545390800, 0.558815965828671770, 0.558857429714913030, 0.558898892204010460, 0.558940353295860670, 0.558981812990359870, +0.559023271287405030, 0.559064728186891570, 0.559106183688716340, 0.559147637792775650, 0.559189090498966260, 0.559230541807183680, 0.559271991717324890, 0.559313440229285970, +0.559354887342963900, 0.559396333058254200, 0.559437777375053740, 0.559479220293259140, 0.559520661812766160, 0.559562101933471560, 0.559603540655271630, 0.559644977978063230, +0.559686413901742010, 0.559727848426204820, 0.559769281551347970, 0.559810713277068220, 0.559852143603261410, 0.559893572529824190, 0.559935000056653090, 0.559976426183644740, +0.560017850910695110, 0.560059274237700740, 0.560100696164558260, 0.560142116691164430, 0.560183535817414870, 0.560224953543206450, 0.560266369868436030, 0.560307784792999360, +0.560349198316793200, 0.560390610439714050, 0.560432021161658800, 0.560473430482523070, 0.560514838402203730, 0.560556244920597300, 0.560597650037600650, 0.560639053753109520, +0.560680456067020770, 0.560721856979230830, 0.560763256489636650, 0.560804654598134000, 0.560846051304619620, 0.560887446608990260, 0.560928840511142560, 0.560970233010972370, +0.561011624108376570, 0.561053013803251790, 0.561094402095494770, 0.561135788985001490, 0.561177174471668590, 0.561218558555393270, 0.561259941236071040, 0.561301322513599100, +0.561342702387873760, 0.561384080858791990, 0.561425457926249760, 0.561466833590143820, 0.561508207850370810, 0.561549580706827700, 0.561590952159410240, 0.561632322208015400, +0.561673690852539710, 0.561715058092880250, 0.561756423928932660, 0.561797788360594020, 0.561839151387760970, 0.561880513010330370, 0.561921873228198200, 0.561963232041261310, +0.562004589449416670, 0.562045945452560260, 0.562087300050588930, 0.562128653243399330, 0.562170005030888540, 0.562211355412952310, 0.562252704389487710, 0.562294051960391280, +0.562335398125560220, 0.562376742884890260, 0.562418086238278380, 0.562459428185621340, 0.562500768726816090, 0.562542107861758510, 0.562583445590345680, 0.562624781912474230, +0.562666116828041240, 0.562707450336942580, 0.562748782439075220, 0.562790113134336360, 0.562831442422621730, 0.562872770303828650, 0.562914096777853530, 0.562955421844593570, +0.562996745503944740, 0.563038067755804010, 0.563079388600068120, 0.563120708036634050, 0.563162026065397890, 0.563203342686256710, 0.563244657899107160, 0.563285971703846310, +0.563327284100370140, 0.563368595088575840, 0.563409904668359940, 0.563451212839619740, 0.563492519602251110, 0.563533824956151230, 0.563575128901216750, 0.563616431437344740, +0.563657732564431410, 0.563699032282373610, 0.563740330591068650, 0.563781627490412610, 0.563822922980302340, 0.563864217060634830, 0.563905509731307150, 0.563946800992215390, +0.563988090843256520, 0.564029379284327500, 0.564070666315325320, 0.564111951936146160, 0.564153236146687110, 0.564194518946845030, 0.564235800336516880, 0.564277080315598980, +0.564318358883988400, 0.564359636041581900, 0.564400911788276560, 0.564442186123968680, 0.564483459048555350, 0.564524730561933640, 0.564566000663999870, 0.564607269354651000, +0.564648536633784000, 0.564689802501295970, 0.564731066957083190, 0.564772330001042660, 0.564813591633071320, 0.564854851853066280, 0.564896110660923820, 0.564937368056541160, +0.564978624039815020, 0.565019878610642620, 0.565061131768920260, 0.565102383514545000, 0.565143633847413730, 0.565184882767423850, 0.565226130274471330, 0.565267376368453590, +0.565308621049267710, 0.565349864316809890, 0.565391106170977430, 0.565432346611667190, 0.565473585638776480, 0.565514823252201370, 0.565556059451839290, 0.565597294237586980, +0.565638527609341860, 0.565679759567000010, 0.565720990110458730, 0.565762219239615120, 0.565803446954366240, 0.565844673254608300, 0.565885898140238820, 0.565927121611154550, +0.565968343667252790, 0.566009564308429860, 0.566050783534582940, 0.566092001345609550, 0.566133217741405680, 0.566174432721868850, 0.566215646286895910, 0.566256858436384180, +0.566298069170229960, 0.566339278488330540, 0.566380486390583030, 0.566421692876884600, 0.566462897947131560, 0.566504101601221330, 0.566545303839050770, 0.566586504660517300, +0.566627704065517320, 0.566668902053947930, 0.566710098625706430, 0.566751293780690000, 0.566792487518794960, 0.566833679839918720, 0.566874870743958260, 0.566916060230810980, +0.566957248300373200, 0.566998434952542210, 0.567039620187215650, 0.567080804004289620, 0.567121986403661520, 0.567163167385228540, 0.567204346948887990, 0.567245525094536180, +0.567286701822070530, 0.567327877131388100, 0.567369051022386440, 0.567410223494961730, 0.567451394549011500, 0.567492564184432840, 0.567533732401123040, 0.567574899198978520, +0.567616064577896820, 0.567657228537774890, 0.567698391078510280, 0.567739552199999390, 0.567780711902139630, 0.567821870184828330, 0.567863027047962100, 0.567904182491438260, +0.567945336515154000, 0.567986489119006730, 0.568027640302892880, 0.568068790066709850, 0.568109938410354950, 0.568151085333725490, 0.568192230836717990, 0.568233374919229980, +0.568274517581158430, 0.568315658822401090, 0.568356798642854160, 0.568397937042415150, 0.568439074020981370, 0.568480209578450250, 0.568521343714718300, 0.568562476429682940, +0.568603607723241810, 0.568644737595291220, 0.568685866045728790, 0.568726993074451740, 0.568768118681357570, 0.568809242866342710, 0.568850365629304800, 0.568891486970140910, +0.568932606888748690, 0.568973725385024550, 0.569014842458866130, 0.569055958110170620, 0.569097072338835550, 0.569138185144757450, 0.569179296527833940, 0.569220406487962130, +0.569261515025039630, 0.569302622138963100, 0.569343727829629940, 0.569384832096937470, 0.569425934940783310, 0.569467036361063880, 0.569508136357676830, 0.569549234930519900, +0.569590332079489500, 0.569631427804483280, 0.569672522105398430, 0.569713614982132690, 0.569754706434582590, 0.569795796462645670, 0.569836885066219210, 0.569877972245200980, +0.569919057999487390, 0.569960142328976180, 0.570001225233564670, 0.570042306713150370, 0.570083386767630040, 0.570124465396901200, 0.570165542600861160, 0.570206618379407670, +0.570247692732437250, 0.570288765659847650, 0.570329837161536400, 0.570370907237400250, 0.570411975887336830, 0.570453043111243450, 0.570494108909017860, 0.570535173280556700, +0.570576236225757480, 0.570617297744517750, 0.570658357836735020, 0.570699416502306160, 0.570740473741128680, 0.570781529553100130, 0.570822583938118020, 0.570863636896079110, +0.570904688426881140, 0.570945738530421410, 0.570986787206597680, 0.571027834455306690, 0.571068880276446090, 0.571109924669913620, 0.571150967635605910, 0.571192009173420940, +0.571233049283255800, 0.571274087965008450, 0.571315125218575530, 0.571356161043854890, 0.571397195440743740, 0.571438228409139940, 0.571479259948940220, 0.571520290060042460, +0.571561318742343840, 0.571602345995742330, 0.571643371820134690, 0.571684396215418560, 0.571725419181491330, 0.571766440718251000, 0.571807460825594190, 0.571848479503418770, +0.571889496751622480, 0.571930512570102080, 0.571971526958755420, 0.572012539917479910, 0.572053551446173540, 0.572094561544732820, 0.572135570213055720, 0.572176577451039670, +0.572217583258582520, 0.572258587635581020, 0.572299590581933140, 0.572340592097536290, 0.572381592182288230, 0.572422590836085930, 0.572463588058827130, 0.572504583850409250, +0.572545578210730380, 0.572586571139687250, 0.572627562637177620, 0.572668552703099020, 0.572709541337349530, 0.572750528539825780, 0.572791514310425630, 0.572832498649047170, +0.572873481555587040, 0.572914463029943200, 0.572955443072013180, 0.572996421681694960, 0.573037398858885380, 0.573078374603482210, 0.573119348915383190, 0.573160321794486060, +0.573201293240687800, 0.573242263253886280, 0.573283231833979220, 0.573324198980864290, 0.573365164694438660, 0.573406128974599970, 0.573447091821245980, 0.573488053234274760, +0.573529013213582850, 0.573569971759068540, 0.573610928870629590, 0.573651884548163070, 0.573692838791566740, 0.573733791600738340, 0.573774742975575850, 0.573815692915976120, +0.573856641421837120, 0.573897588493056500, 0.573938534129532330, 0.573979478331161470, 0.574020421097841900, 0.574061362429471260, 0.574102302325947610, 0.574143240787167830, +0.574184177813029880, 0.574225113403431520, 0.574266047558270820, 0.574306980277444530, 0.574347911560850850, 0.574388841408387750, 0.574429769819952200, 0.574470696795442160, +0.574511622334755500, 0.574552546437790080, 0.574593469104442870, 0.574634390334612060, 0.574675310128195280, 0.574716228485090520, 0.574757145405194850, 0.574798060888406350, +0.574838974934622660, 0.574879887543741970, 0.574920798715661150, 0.574961708450278270, 0.575002616747491200, 0.575043523607197900, 0.575084429029295460, 0.575125333013681960, +0.575166235560255150, 0.575207136668913100, 0.575248036339552790, 0.575288934572072420, 0.575329831366370060, 0.575370726722342800, 0.575411620639888710, 0.575452513118905550, +0.575493404159291510, 0.575534293760943560, 0.575575181923759890, 0.575616068647638260, 0.575656953932476840, 0.575697837778172630, 0.575738720184623910, 0.575779601151728330, +0.575820480679384070, 0.575861358767488340, 0.575902235415939100, 0.575943110624634320, 0.575983984393472200, 0.576024856722349600, 0.576065727611165030, 0.576106597059816370, +0.576147465068200910, 0.576188331636216860, 0.576229196763761830, 0.576270060450734260, 0.576310922697031210, 0.576351783502550790, 0.576392642867190940, 0.576433500790849870, +0.576474357273424660, 0.576515212314813510, 0.576556065914914370, 0.576596918073625450, 0.576637768790843830, 0.576678618066467810, 0.576719465900395250, 0.576760312292524450, +0.576801157242752380, 0.576842000750977470, 0.576882842817098010, 0.576923683441010970, 0.576964522622614770, 0.577005360361807270, 0.577046196658486670, 0.577087031512550250, +0.577127864923896230, 0.577168696892422560, 0.577209527418027560, 0.577250356500608300, 0.577291184140063200, 0.577332010336290110, 0.577372835089187460, 0.577413658398652220, +0.577454480264582900, 0.577495300686877380, 0.577536119665433940, 0.577576937200149910, 0.577617753290923460, 0.577658567937653020, 0.577699381140235780, 0.577740192898570150, +0.577781003212553990, 0.577821812082085720, 0.577862619507062520, 0.577903425487382720, 0.577944230022944480, 0.577985033113645910, 0.578025834759384520, 0.578066634960058390, +0.578107433715565830, 0.578148231025804930, 0.578189026890673090, 0.578229821310068730, 0.578270614283889820, 0.578311405812034770, 0.578352195894400790, 0.578392984530886280, +0.578433771721389430, 0.578474557465808450, 0.578515341764040620, 0.578556124615984600, 0.578596906021538570, 0.578637685980599840, 0.578678464493066920, 0.578719241558837920, +0.578760017177811110, 0.578800791349883940, 0.578841564074954800, 0.578882335352921660, 0.578923105183683170, 0.578963873567136410, 0.579004640503180120, 0.579045405991712170, +0.579086170032630960, 0.579126932625834150, 0.579167693771219900, 0.579208453468686430, 0.579249211718132150, 0.579289968519454580, 0.579330723872552020, 0.579371477777323010, +0.579412230233664950, 0.579452981241476260, 0.579493730800655140, 0.579534478911100100, 0.579575225572708570, 0.579615970785378850, 0.579656714549009240, 0.579697456863498270, +0.579738197728743240, 0.579778937144642680, 0.579819675111094780, 0.579860411627998170, 0.579901146695250060, 0.579941880312749070, 0.579982612480393510, 0.580023343198081690, +0.580064072465711120, 0.580104800283180340, 0.580145526650387990, 0.580186251567231470, 0.580226975033609320, 0.580267697049419720, 0.580308417614561310, 0.580349136728931400, +0.580389854392428630, 0.580430570604951290, 0.580471285366397920, 0.580511998676665810, 0.580552710535653830, 0.580593420943260050, 0.580634129899383120, 0.580674837403920450, +0.580715543456770790, 0.580756248057832100, 0.580796951207003250, 0.580837652904181660, 0.580878353149265950, 0.580919051942154320, 0.580959749282745410, 0.581000445170936850, +0.581041139606627070, 0.581081832589714910, 0.581122524120097680, 0.581163214197674250, 0.581203902822342800, 0.581244589994001860, 0.581285275712549070, 0.581325959977883170, +0.581366642789902350, 0.581407324148505270, 0.581448004053589540, 0.581488682505053810, 0.581529359502796380, 0.581570035046715890, 0.581610709136709870, 0.581651381772677170, +0.581692052954515980, 0.581732722682125060, 0.581773390955401930, 0.581814057774245440, 0.581854723138554020, 0.581895387048225520, 0.581936049503158470, 0.581976710503251390, +0.582017370048402820, 0.582058028138510490, 0.582098684773473040, 0.582139339953189010, 0.582179993677556910, 0.582220645946474490, 0.582261296759840400, 0.582301946117553040, +0.582342594019511270, 0.582383240465612630, 0.582423885455755850, 0.582464528989839360, 0.582505171067762010, 0.582545811689421320, 0.582586450854716050, 0.582627088563545060, +0.582667724815805980, 0.582708359611397550, 0.582748992950218200, 0.582789624832166790, 0.582830255257140940, 0.582870884225039520, 0.582911511735760830, 0.582952137789203630, +0.582992762385265870, 0.583033385523846090, 0.583074007204842930, 0.583114627428155120, 0.583155246193680310, 0.583195863501317470, 0.583236479350964900, 0.583277093742521570, +0.583317706675885010, 0.583358318150954290, 0.583398928167628170, 0.583439536725804290, 0.583480143825381600, 0.583520749466258540, 0.583561353648333950, 0.583601956371505690, +0.583642557635672410, 0.583683157440732850, 0.583723755786585750, 0.583764352673128760, 0.583804948100261070, 0.583845542067880970, 0.583886134575887230, 0.583926725624178020, +0.583967315212651880, 0.584007903341207450, 0.584048490009743570, 0.584089075218158120, 0.584129658966350050, 0.584170241254217790, 0.584210822081660310, 0.584251401448575460, +0.584291979354861990, 0.584332555800419100, 0.584373130785144300, 0.584413704308936690, 0.584454276371694890, 0.584494846973317770, 0.584535416113703080, 0.584575983792749890, +0.584616550010356840, 0.584657114766422680, 0.584697678060845380, 0.584738239893523800, 0.584778800264356800, 0.584819359173243010, 0.584859916620080520, 0.584900472604768300, +0.584941027127204750, 0.584981580187289070, 0.585022131784919130, 0.585062681919993890, 0.585103230592412200, 0.585143777802072050, 0.585184323548872510, 0.585224867832712210, +0.585265410653490030, 0.585305952011104020, 0.585346491905453070, 0.585387030336435910, 0.585427567303951620, 0.585468102807897960, 0.585508636848174110, 0.585549169424678610, +0.585589700537310520, 0.585630230185967830, 0.585670758370549600, 0.585711285090954490, 0.585751810347081460, 0.585792334138828590, 0.585832856466094950, 0.585873377328779420, +0.585913896726780180, 0.585954414659996090, 0.585994931128326010, 0.586035446131669020, 0.586075959669922990, 0.586116471742987090, 0.586156982350759970, 0.586197491493140820, +0.586237999170027500, 0.586278505381319200, 0.586319010126914670, 0.586359513406713000, 0.586400015220612140, 0.586440515568511290, 0.586481014450309090, 0.586521511865904840, +0.586562007815196300, 0.586602502298082750, 0.586642995314463070, 0.586683486864236100, 0.586723976947300160, 0.586764465563554330, 0.586804952712897570, 0.586845438395228070, +0.586885922610445030, 0.586926405358447200, 0.586966886639133770, 0.587007366452402590, 0.587047844798153080, 0.587088321676284000, 0.587128797086694520, 0.587169271029282620, +0.587209743503947500, 0.587250214510588010, 0.587290684049103450, 0.587331152119391800, 0.587371618721352130, 0.587412083854883530, 0.587452547519885070, 0.587493009716254950, +0.587533470443892150, 0.587573929702696170, 0.587614387492564890, 0.587654843813397720, 0.587695298665093510, 0.587735752047551240, 0.587776203960669320, 0.587816654404346940, +0.587857103378482850, 0.587897550882976460, 0.587937996917725750, 0.587978441482630010, 0.588018884577588220, 0.588059326202499570, 0.588099766357262240, 0.588140205041775550, +0.588180642255938250, 0.588221077999649730, 0.588261512272808210, 0.588301945075312860, 0.588342376407063110, 0.588382806267956910, 0.588423234657893810, 0.588463661576772550, +0.588504087024492530, 0.588544511000951950, 0.588584933506050010, 0.588625354539685790, 0.588665774101758580, 0.588706192192166580, 0.588746608810808980, 0.588787023957584980, +0.588827437632393760, 0.588867849835133520, 0.588908260565703780, 0.588948669824003290, 0.588989077609931470, 0.589029483923386610, 0.589069888764268130, 0.589110292132475230, +0.589150694027906210, 0.589191094450460470, 0.589231493400037000, 0.589271890876535200, 0.589312286879853260, 0.589352681409890610, 0.589393074466546210, 0.589433466049719580, +0.589473856159308920, 0.589514244795213530, 0.589554631957332600, 0.589595017645565430, 0.589635401859810340, 0.589675784599966720, 0.589716165865933780, 0.589756545657610600, +0.589796923974895800, 0.589837300817688700, 0.589877676185888270, 0.589918050079394130, 0.589958422498104370, 0.589998793441918630, 0.590039162910736330, 0.590079530904455640, +0.590119897422976210, 0.590160262466197020, 0.590200626034017460, 0.590240988126336070, 0.590281348743052160, 0.590321707884064910, 0.590362065549273620, 0.590402421738576930, +0.590442776451874260, 0.590483129689064470, 0.590523481450047290, 0.590563831734721160, 0.590604180542985360, 0.590644527874739090, 0.590684873729881880, 0.590725218108312020, +0.590765561009929270, 0.590805902434632930, 0.590846242382321420, 0.590886580852894360, 0.590926917846250840, 0.590967253362290390, 0.591007587400911530, 0.591047919962013560, +0.591088251045495780, 0.591128580651257840, 0.591168908779198030, 0.591209235429216000, 0.591249560601210810, 0.591289884295082110, 0.591330206510728430, 0.591370527248049060, +0.591410846506943530, 0.591451164287311150, 0.591491480589050540, 0.591531795412061130, 0.591572108756242780, 0.591612420621493660, 0.591652731007713540, 0.591693039914801490, +0.591733347342657370, 0.591773653291179370, 0.591813957760267350, 0.591854260749820390, 0.591894562259738130, 0.591934862289919090, 0.591975160840262920, 0.592015457910668900, +0.592055753501036450, 0.592096047611264440, 0.592136340241252170, 0.592176631390899040, 0.592216921060104820, 0.592257209248767900, 0.592297495956787930, 0.592337781184064220, +0.592378064930496380, 0.592418347195983070, 0.592458627980423810, 0.592498907283718460, 0.592539185105765420, 0.592579461446464340, 0.592619736305714740, 0.592660009683416140, +0.592700281579467080, 0.592740551993767410, 0.592780820926216310, 0.592821088376713550, 0.592861354345157630, 0.592901618831448430, 0.592941881835485020, 0.592982143357167370, +0.593022403396394000, 0.593062661953064670, 0.593102919027078680, 0.593143174618335660, 0.593183428726734460, 0.593223681352174630, 0.593263932494555890, 0.593304182153777000, +0.593344430329737720, 0.593384677022337330, 0.593424922231475580, 0.593465165957051230, 0.593505408198963910, 0.593545648957113040, 0.593585888231398460, 0.593626126021718830, +0.593666362327973870, 0.593706597150062910, 0.593746830487885900, 0.593787062341341490, 0.593827292710329300, 0.593867521594748980, 0.593907748994500160, 0.593947974909481700, +0.593988199339593240, 0.594028422284734630, 0.594068643744804610, 0.594108863719702950, 0.594149082209329160, 0.594189299213583100, 0.594229514732363300, 0.594269728765569830, +0.594309941313102000, 0.594350152374859660, 0.594390361950741570, 0.594430570040647590, 0.594470776644477120, 0.594510981762130130, 0.594551185393505380, 0.594591387538502600, +0.594631588197021330, 0.594671787368961540, 0.594711985054221850, 0.594752181252702240, 0.594792375964302460, 0.594832569188921470, 0.594872760926459020, 0.594912951176814640, +0.594953139939888300, 0.594993327215578740, 0.595033513003785820, 0.595073697304409180, 0.595113880117348560, 0.595154061442502940, 0.595194241279772160, 0.595234419629055770, +0.595274596490253720, 0.595314771863264870, 0.595354945747988970, 0.595395118144325770, 0.595435289052175130, 0.595475458471435900, 0.595515626402008060, 0.595555792843791120, +0.595595957796685060, 0.595636121260588740, 0.595676283235402120, 0.595716443721025170, 0.595756602717356640, 0.595796760224296730, 0.595836916241744950, 0.595877070769601170, +0.595917223807764350, 0.595957375356134470, 0.595997525414611150, 0.596037673983094370, 0.596077821061483100, 0.596117966649677200, 0.596158110747576410, 0.596198253355080810, +0.596238394472089040, 0.596278534098501400, 0.596318672234217420, 0.596358808879137060, 0.596398944033159410, 0.596439077696184320, 0.596479209868111980, 0.596519340548841150, +0.596559469738272010, 0.596599597436304200, 0.596639723642837790, 0.596679848357771660, 0.596719971581005870, 0.596760093312440290, 0.596800213551974770, 0.596840332299508280, +0.596880449554941020, 0.596920565318172720, 0.596960679589103260, 0.597000792367631710, 0.597040903653658250, 0.597081013447082530, 0.597121121747804630, 0.597161228555723620, +0.597201333870739480, 0.597241437692752290, 0.597281540021661230, 0.597321640857366280, 0.597361740199767290, 0.597401838048764340, 0.597441934404256300, 0.597482029266143580, +0.597522122634325690, 0.597562214508702840, 0.597602304889174100, 0.597642393775639660, 0.597682481167999160, 0.597722567066152900, 0.597762651469999850, 0.597802734379440090, +0.597842815794373590, 0.597882895714700320, 0.597922974140319470, 0.597963051071131240, 0.598003126507035350, 0.598043200447932020, 0.598083272893720320, 0.598123343844300440, +0.598163413299572570, 0.598203481259435790, 0.598243547723790290, 0.598283612692535940, 0.598323676165572920, 0.598363738142800310, 0.598403798624118410, 0.598443857609427090, +0.598483915098626310, 0.598523971091615480, 0.598564025588294690, 0.598604078588563900, 0.598644130092323200, 0.598684180099471890, 0.598724228609910040, 0.598764275623537730, +0.598804321140254950, 0.598844365159961090, 0.598884407682556350, 0.598924448707940930, 0.598964488236014000, 0.599004526266675890, 0.599044562799826430, 0.599084597835365830, +0.599124631373193490, 0.599164663413209620, 0.599204693955313950, 0.599244722999407010, 0.599284750545387880, 0.599324776593156860, 0.599364801142613920, 0.599404824193659370, +0.599444845746192280, 0.599484865800113180, 0.599524884355321920, 0.599564901411718810, 0.599604916969203040, 0.599644931027674910, 0.599684943587034950, 0.599724954647182230, +0.599764964208017060, 0.599804972269439520, 0.599844978831349910, 0.599884983893647530, 0.599924987456232680, 0.599964989519005340, 0.600004990081865920, 0.600044989144713600, +0.600084986707448810, 0.600124982769971620, 0.600164977332182330, 0.600204970393980240, 0.600244961955265670, 0.600284952015938680, 0.600324940575899690, 0.600364927635048010, +0.600404913193284040, 0.600444897250507760, 0.600484879806619580, 0.600524860861518790, 0.600564840415105940, 0.600604818467281310, 0.600644795017944320, 0.600684770066995280, +0.600724743614334370, 0.600764715659861890, 0.600804686203477380, 0.600844655245081020, 0.600884622784573110, 0.600924588821853960, 0.600964553356822970, 0.601004516389380680, +0.601044477919427060, 0.601084437946862500, 0.601124396471586550, 0.601164353493499730, 0.601204309012501880, 0.601244263028493650, 0.601284215541374460, 0.601324166551044700, +0.601364116057404810, 0.601404064060354400, 0.601444010559793680, 0.601483955555623060, 0.601523899047742840, 0.601563841036052540, 0.601603781520452690, 0.601643720500843250, +0.601683657977124970, 0.601723593949197170, 0.601763528416960460, 0.601803461380314820, 0.601843392839160880, 0.601883322793398180, 0.601923251242927120, 0.601963178187648000, +0.602003103627461230, 0.602043027562266350, 0.602082949991963880, 0.602122870916454330, 0.602162790335637350, 0.602202708249413470, 0.602242624657682630, 0.602282539560345720, +0.602322452957302020, 0.602362364848452290, 0.602402275233696600, 0.602442184112935600, 0.602482091486068680, 0.602521997352996610, 0.602561901713619560, 0.602601804567838070, +0.602641705915551770, 0.602681605756661190, 0.602721504091066510, 0.602761400918668590, 0.602801296239366620, 0.602841190053061580, 0.602881082359653760, 0.602920973159043030, +0.602960862451129790, 0.603000750235814450, 0.603040636512997550, 0.603080521282578720, 0.603120404544458480, 0.603160286298537350, 0.603200166544715870, 0.603240045282893540, +0.603279922512971130, 0.603319798234848940, 0.603359672448427590, 0.603399545153606720, 0.603439416350286970, 0.603479286038368650, 0.603519154217752480, 0.603559020888338130, +0.603598886050026100, 0.603638749702717030, 0.603678611846311330, 0.603718472480708760, 0.603758331605810050, 0.603798189221515850, 0.603838045327725780, 0.603877899924340600, +0.603917753011260720, 0.603957604588386760, 0.603997454655618490, 0.604037303212856540, 0.604077150260001310, 0.604116995796953550, 0.604156839823613010, 0.604196682339880330, +0.604236523345656030, 0.604276362840840740, 0.604316200825334100, 0.604356037299037090, 0.604395872261849880, 0.604435705713673330, 0.604475537654407310, 0.604515368083952340, +0.604555197002209280, 0.604595024409077860, 0.604634850304458960, 0.604674674688252870, 0.604714497560360550, 0.604754318920681540, 0.604794138769116700, 0.604833957105566640, +0.604873773929931910, 0.604913589242112470, 0.604953403042009060, 0.604993215329522100, 0.605033026104552450, 0.605072835366999960, 0.605112643116765270, 0.605152449353749010, +0.605192254077852040, 0.605232057288974110, 0.605271858987015960, 0.605311659171878460, 0.605351457843461560, 0.605391255001666020, 0.605431050646392240, 0.605470844777541320, +0.605510637395012870, 0.605550428498707770, 0.605590218088526640, 0.605630006164370350, 0.605669792726138630, 0.605709577773732470, 0.605749361307052370, 0.605789143325999310, +0.605828923830472930, 0.605868702820374190, 0.605908480295603850, 0.605948256256062520, 0.605988030701650300, 0.606027803632267940, 0.606067575047816050, 0.606107344948195630, +0.606147113333306510, 0.606186880203049560, 0.606226645557325750, 0.606266409396035040, 0.606306171719078190, 0.606345932526356050, 0.606385691817769360, 0.606425449593218090, +0.606465205852603220, 0.606504960595825260, 0.606544713822785300, 0.606584465533383190, 0.606624215727520010, 0.606663964405096180, 0.606703711566012880, 0.606743457210169870, +0.606783201337468210, 0.606822943947808670, 0.606862685041091980, 0.606902424617218330, 0.606942162676088580, 0.606981899217603700, 0.607021634241663780, 0.607061367748169770, +0.607101099737022420, 0.607140830208122590, 0.607180559161370370, 0.607220286596666710, 0.607260012513912370, 0.607299736913008310, 0.607339459793854620, 0.607379181156352250, +0.607418901000401860, 0.607458619325904610, 0.607498336132760500, 0.607538051420870580, 0.607577765190135510, 0.607617477440456350, 0.607657188171733090, 0.607696897383866900, +0.607736605076758860, 0.607776311250308950, 0.607816015904418250, 0.607855719038987500, 0.607895420653917770, 0.607935120749109160, 0.607974819324462850, 0.608014516379879360, +0.608054211915259990, 0.608093905930504720, 0.608133598425514620, 0.608173289400190660, 0.608212978854433710, 0.608252666788144050, 0.608292353201222660, 0.608332038093570390, +0.608371721465088440, 0.608411403315676780, 0.608451083645236700, 0.608490762453669180, 0.608530439740874400, 0.608570115506753550, 0.608609789751207390, 0.608649462474137090, +0.608689133675442860, 0.608728803355025770, 0.608768471512786570, 0.608808138148626670, 0.608847803262446030, 0.608887466854145850, 0.608927128923626990, 0.608966789470790750, +0.609006448495537090, 0.609046105997767430, 0.609085761977382400, 0.609125416434283310, 0.609165069368370340, 0.609204720779544790, 0.609244370667707310, 0.609284019032759310, +0.609323665874600960, 0.609363311193133360, 0.609402954988257920, 0.609442597259874600, 0.609482238007884920, 0.609521877232189650, 0.609561514932689950, 0.609601151109286140, +0.609640785761879520, 0.609680418890370830, 0.609720050494661490, 0.609759680574651690, 0.609799309130242720, 0.609838936161335440, 0.609878561667831160, 0.609918185649630070, +0.609957808106633690, 0.609997429038742660, 0.610037048445858380, 0.610076666327881160, 0.610116282684712300, 0.610155897516253100, 0.610195510822403750, 0.610235122603065670, +0.610274732858139820, 0.610314341587527400, 0.610353948791128810, 0.610393554468845360, 0.610433158620578010, 0.610472761246228180, 0.610512362345696060, 0.610551961918882950, +0.610591559965690030, 0.610631156486018510, 0.610670751479768790, 0.610710344946842180, 0.610749936887139630, 0.610789527300562680, 0.610829116187011520, 0.610868703546387560, +0.610908289378592210, 0.610947873683525880, 0.610987456461089760, 0.611027037711185050, 0.611066617433713040, 0.611106195628574160, 0.611145772295669800, 0.611185347434900940, +0.611224921046169210, 0.611264493129374700, 0.611304063684419030, 0.611343632711203180, 0.611383200209628550, 0.611422766179595680, 0.611462330621005750, 0.611501893533760050, +0.611541454917760020, 0.611581014772905940, 0.611620573099099340, 0.611660129896241410, 0.611699685164233340, 0.611739238902975770, 0.611778791112370100, 0.611818341792317870, +0.611857890942719360, 0.611897438563476110, 0.611936984654489310, 0.611976529215660480, 0.612016072246889810, 0.612055613748079040, 0.612095153719129260, 0.612134692159941980, +0.612174229070417520, 0.612213764450457500, 0.612253298299963110, 0.612292830618835770, 0.612332361406976110, 0.612371890664285430, 0.612411418390665040, 0.612450944586016570, +0.612490469250240310, 0.612529992383237800, 0.612569513984910770, 0.612609034055159540, 0.612648552593885840, 0.612688069600990650, 0.612727585076375590, 0.612767099019941310, +0.612806611431589320, 0.612846122311220710, 0.612885631658737220, 0.612925139474039150, 0.612964645757028360, 0.613004150507605930, 0.613043653725673490, 0.613083155411131560, +0.613122655563881790, 0.613162154183825250, 0.613201651270863790, 0.613241146824897830, 0.613280640845829010, 0.613320133333558950, 0.613359624287988070, 0.613399113709018230, +0.613438601596550610, 0.613478087950486860, 0.613517572770727490, 0.613557056057174250, 0.613596537809728340, 0.613636018028291490, 0.613675496712764110, 0.613714973863048070, +0.613754449479044560, 0.613793923560655320, 0.613833396107780980, 0.613872867120323070, 0.613912336598183010, 0.613951804541262410, 0.613991270949461930, 0.614030735822683420, +0.614070199160828280, 0.614109660963797380, 0.614149121231492230, 0.614188579963814370, 0.614228037160665430, 0.614267492821945930, 0.614306946947557830, 0.614346399537402220, +0.614385850591381070, 0.614425300109394890, 0.614464748091345550, 0.614504194537134230, 0.614543639446662790, 0.614583082819831980, 0.614622524656543430, 0.614661964956698560, +0.614701403720199100, 0.614740840946945810, 0.614780276636840430, 0.614819710789784260, 0.614859143405679260, 0.614898574484426090, 0.614938004025926350, 0.614977432030082040, +0.615016858496793770, 0.615056283425963410, 0.615095706817492260, 0.615135128671282280, 0.615174548987234120, 0.615213967765249500, 0.615253385005230080, 0.615292800707077480, +0.615332214870692450, 0.615371627495976960, 0.615411038582832410, 0.615450448131160680, 0.615489856140862380, 0.615529262611839490, 0.615568667543993420, 0.615608070937226030, +0.615647472791438060, 0.615686873106531470, 0.615726271882408030, 0.615765669118968570, 0.615805064816114970, 0.615844458973748730, 0.615883851591771610, 0.615923242670084580, +0.615962632208589380, 0.616002020207187640, 0.616041406665781110, 0.616080791584270870, 0.616120174962558550, 0.616159556800545790, 0.616198937098134560, 0.616238315855225590, +0.616277693071720760, 0.616317068747521790, 0.616356442882530550, 0.616395815476647680, 0.616435186529775470, 0.616474556041815450, 0.616513924012668800, 0.616553290442237390, +0.616592655330422620, 0.616632018677126690, 0.616671380482250340, 0.616710740745695430, 0.616750099467363810, 0.616789456647157230, 0.616828812284976660, 0.616868166380723950, +0.616907518934300960, 0.616946869945609540, 0.616986219414550560, 0.617025567341025980, 0.617064913724937550, 0.617104258566187110, 0.617143601864675760, 0.617182943620305350, +0.617222283832977610, 0.617261622502594420, 0.617300959629056960, 0.617340295212267080, 0.617379629252126750, 0.617418961748537050, 0.617458292701399850, 0.617497622110616980, +0.617536949976090430, 0.617576276297721160, 0.617615601075411140, 0.617654924309062210, 0.617694245998576250, 0.617733566143854330, 0.617772884744798520, 0.617812201801310470, +0.617851517313292240, 0.617890831280644930, 0.617930143703270480, 0.617969454581070780, 0.618008763913947660, 0.618048071701802430, 0.618087377944536830, 0.618126682642053280, +0.618165985794252640, 0.618205287401037080, 0.618244587462308150, 0.618283885977968240, 0.618323182947918220, 0.618362478372060260, 0.618401772250296130, 0.618441064582527900, +0.618480355368656640, 0.618519644608584440, 0.618558932302213260, 0.618598218449444960, 0.618637503050180840, 0.618676786104322970, 0.618716067611773110, 0.618755347572433450, +0.618794625986205050, 0.618833902852990110, 0.618873178172690720, 0.618912451945208050, 0.618951724170444310, 0.618990994848301220, 0.619030263978680990, 0.619069531561484700, +0.619108797596614640, 0.619148062083972550, 0.619187325023460740, 0.619226586414980180, 0.619265846258433170, 0.619305104553721560, 0.619344361300747550, 0.619383616499412320, +0.619422870149617940, 0.619462122251266400, 0.619501372804259990, 0.619540621808499780, 0.619579869263887970, 0.619619115170326860, 0.619658359527717640, 0.619697602335962490, +0.619736843594963280, 0.619776083304622420, 0.619815321464840970, 0.619854558075521140, 0.619893793136565010, 0.619933026647874750, 0.619972258609351570, 0.620011489020897640, +0.620050717882415060, 0.620089945193806000, 0.620129170954971780, 0.620168395165814680, 0.620207617826236460, 0.620246838936139630, 0.620286058495425400, 0.620325276503995940, +0.620364492961753330, 0.620403707868599770, 0.620442921224436670, 0.620482133029166220, 0.620521343282690820, 0.620560551984911670, 0.620599759135731180, 0.620638964735051200, +0.620678168782774260, 0.620717371278801560, 0.620756572223035370, 0.620795771615377800, 0.620834969455731130, 0.620874165743996680, 0.620913360480076840, 0.620952553663873590, +0.620991745295289220, 0.621030935374225270, 0.621070123900583910, 0.621109310874267240, 0.621148496295177650, 0.621187680163216460, 0.621226862478286180, 0.621266043240289000, +0.621305222449126340, 0.621344400104700600, 0.621383576206913980, 0.621422750755668660, 0.621461923750866170, 0.621501095192408810, 0.621540265080198770, 0.621579433414138350, +0.621618600194129070, 0.621657765420073340, 0.621696929091873020, 0.621736091209430850, 0.621775251772648140, 0.621814410781427180, 0.621853568235670280, 0.621892724135279850, +0.621931878480157190, 0.621971031270204810, 0.622010182505325250, 0.622049332185419910, 0.622088480310391210, 0.622127626880141230, 0.622166771894572590, 0.622205915353586710, +0.622245057257086010, 0.622284197604972670, 0.622323336397149210, 0.622362473633517040, 0.622401609313978700, 0.622440743438436250, 0.622479876006792440, 0.622519007018948470, +0.622558136474807070, 0.622597264374270210, 0.622636390717240640, 0.622675515503619770, 0.622714638733310010, 0.622753760406213660, 0.622792880522233360, 0.622831999081270400, +0.622871116083227540, 0.622910231528007170, 0.622949345415510950, 0.622988457745641270, 0.623027568518300550, 0.623066677733391190, 0.623105785390814740, 0.623144891490473920, +0.623183996032270810, 0.623223099016108060, 0.623262200441887290, 0.623301300309510920, 0.623340398618881350, 0.623379495369901120, 0.623418590562471840, 0.623457684196496050, +0.623496776271876050, 0.623535866788514470, 0.623574955746312830, 0.623614043145173880, 0.623653128985000140, 0.623692213265693130, 0.623731295987155710, 0.623770377149290070, +0.623809456751998730, 0.623848534795183430, 0.623887611278746810, 0.623926686202591170, 0.623965759566619150, 0.624004831370732480, 0.624043901614833580, 0.624082970298824980, +0.624122037422609300, 0.624161102986088290, 0.624200166989164360, 0.624239229431740040, 0.624278290313718070, 0.624317349634999960, 0.624356407395488590, 0.624395463595086350, +0.624434518233695330, 0.624473571311217830, 0.624512622827556490, 0.624551672782613920, 0.624590721176291890, 0.624629768008492900, 0.624668813279119610, 0.624707856988074630, +0.624746899135259600, 0.624785939720577390, 0.624824978743930280, 0.624864016205221140, 0.624903052104351600, 0.624942086441224400, 0.624981119215741950, 0.625020150427807120, +0.625059180077321530, 0.625098208164187930, 0.625137234688309170, 0.625176259649587120, 0.625215283047924290, 0.625254304883223310, 0.625293325155386830, 0.625332343864316800, +0.625371361009915860, 0.625410376592086540, 0.625449390610731570, 0.625488403065752820, 0.625527413957053020, 0.625566423284534710, 0.625605431048100740, 0.625644437247652840, +0.625683441883093770, 0.625722444954326160, 0.625761446461252760, 0.625800446403775410, 0.625839444781796870, 0.625878441595219770, 0.625917436843946960, 0.625956430527880190, +0.625995422646922320, 0.626034413200976300, 0.626073402189943780, 0.626112389613727840, 0.626151375472230990, 0.626190359765355970, 0.626229342493004660, 0.626268323655080010, +0.626307303251484540, 0.626346281282121220, 0.626385257746891910, 0.626424232645699350, 0.626463205978446180, 0.626502177745035470, 0.626541147945368860, 0.626580116579349420, +0.626619083646879680, 0.626658049147862610, 0.626697013082200050, 0.626735975449794980, 0.626774936250550250, 0.626813895484367830, 0.626852853151150800, 0.626891809250801460, +0.626930763783223100, 0.626969716748317360, 0.627008668145987440, 0.627047617976135840, 0.627086566238665430, 0.627125512933478290, 0.627164458060477490, 0.627203401619565450, +0.627242343610645240, 0.627281284033618820, 0.627320222888389290, 0.627359160174859150, 0.627398095892931380, 0.627437030042508060, 0.627475962623492260, 0.627514893635786830, +0.627553823079293750, 0.627592750953916200, 0.627631677259556820, 0.627670601996118460, 0.627709525163503310, 0.627748446761614340, 0.627787366790354300, 0.627826285249626140, +0.627865202139331950, 0.627904117459374800, 0.627943031209657220, 0.627981943390082510, 0.628020854000552630, 0.628059763040970550, 0.628098670511239020, 0.628137576411261220, +0.628176480740939120, 0.628215383500175810, 0.628254284688874120, 0.628293184306937040, 0.628332082354266520, 0.628370978830765870, 0.628409873736338160, 0.628448767070885370, +0.628487658834310790, 0.628526549026516950, 0.628565437647407020, 0.628604324696883320, 0.628643210174848700, 0.628682094081206010, 0.628720976415858560, 0.628759857178708190, +0.628798736369658330, 0.628837613988611490, 0.628876490035470970, 0.628915364510138960, 0.628954237412518550, 0.628993108742512460, 0.629031978500024010, 0.629070846684955160, +0.629109713297209330, 0.629148578336689470, 0.629187441803297890, 0.629226303696937660, 0.629265164017511760, 0.629304022764923140, 0.629342879939074230, 0.629381735539868090, +0.629420589567207590, 0.629459442020996020, 0.629498292901135460, 0.629537142207529100, 0.629575989940080020, 0.629614836098691180, 0.629653680683264990, 0.629692523693704540, +0.629731365129912900, 0.629770204991793040, 0.629809043279247470, 0.629847879992179170, 0.629886715130491550, 0.629925548694086790, 0.629964380682868200, 0.630003211096738620, +0.630042039935601370, 0.630080867199358740, 0.630119692887913920, 0.630158517001169760, 0.630197339539029790, 0.630236160501395970, 0.630274979888171830, 0.630313797699260330, +0.630352613934564540, 0.630391428593986890, 0.630430241677430780, 0.630469053184798960, 0.630507863115994940, 0.630546671470920810, 0.630585478249480080, 0.630624283451575950, +0.630663087077110830, 0.630701889125987900, 0.630740689598110360, 0.630779488493381390, 0.630818285811703290, 0.630857081552979590, 0.630895875717113140, 0.630934668304007350, +0.630973459313564520, 0.631012248745688060, 0.631051036600280950, 0.631089822877246580, 0.631128607576487370, 0.631167390697906620, 0.631206172241407400, 0.631244952206893030, +0.631283730594266010, 0.631322507403429660, 0.631361282634287040, 0.631400056286741560, 0.631438828360695540, 0.631477598856052480, 0.631516367772715800, 0.631555135110587810, +0.631593900869572010, 0.631632665049571500, 0.631671427650489560, 0.631710188672228830, 0.631748948114692510, 0.631787705977783890, 0.631826462261406370, 0.631865216965462270, +0.631903970089855220, 0.631942721634488170, 0.631981471599264770, 0.632020219984087190, 0.632058966788859200, 0.632097712013483750, 0.632136455657864360, 0.632175197721903450, +0.632213938205504530, 0.632252677108571250, 0.632291414431005780, 0.632330150172711880, 0.632368884333592510, 0.632407616913551300, 0.632446347912490770, 0.632485077330314230, +0.632523805166925080, 0.632562531422226850, 0.632601256096121830, 0.632639979188513670, 0.632678700699305650, 0.632717420628401190, 0.632756138975702820, 0.632794855741114050, +0.632833570924538180, 0.632872284525878740, 0.632910996545038240, 0.632949706981920320, 0.632988415836428400, 0.633027123108465100, 0.633065828797934050, 0.633104532904738340, +0.633143235428781700, 0.633181936369966560, 0.633220635728196650, 0.633259333503375150, 0.633298029695405610, 0.633336724304190630, 0.633375417329633980, 0.633414108771638620, +0.633452798630108390, 0.633491486904945830, 0.633530173596054570, 0.633568858703337900, 0.633607542226699350, 0.633646224166041660, 0.633684904521268470, 0.633723583292282950, +0.633762260478988760, 0.633800936081288620, 0.633839610099086180, 0.633878282532285060, 0.633916953380787800, 0.633955622644498230, 0.633994290323319550, 0.634032956417155510, +0.634071620925908740, 0.634110283849482980, 0.634148945187781420, 0.634187604940707920, 0.634226263108164990, 0.634264919690056490, 0.634303574686285620, 0.634342228096756220, +0.634380879921370820, 0.634419530160033270, 0.634458178812646880, 0.634496825879115380, 0.634535471359341520, 0.634574115253228930, 0.634612757560681360, 0.634651398281601660, +0.634690037415893360, 0.634728674963460080, 0.634767310924205350, 0.634805945298032030, 0.634844578084843960, 0.634883209284544340, 0.634921838897037020, 0.634960466922224740, +0.634999093360011370, 0.635037718210300190, 0.635076341472995190, 0.635114963147998870, 0.635153583235215200, 0.635192201734547490, 0.635230818645899700, 0.635269433969174570, +0.635308047704275740, 0.635346659851107170, 0.635385270409571600, 0.635423879379572900, 0.635462486761014470, 0.635501092553800160, 0.635539696757832840, 0.635578299373016240, +0.635616900399253780, 0.635655499836449530, 0.635694097684506240, 0.635732693943327650, 0.635771288612817290, 0.635809881692879000, 0.635848473183415750, 0.635887063084331290, +0.635925651395529260, 0.635964238116913380, 0.636002823248386530, 0.636041406789852660, 0.636079988741215630, 0.636118569102378180, 0.636157147873244400, 0.636195725053717690, +0.636234300643702120, 0.636272874643100340, 0.636311447051816410, 0.636350017869753870, 0.636388587096816670, 0.636427154732907670, 0.636465720777930730, 0.636504285231789480, +0.636542848094387880, 0.636581409365628790, 0.636619969045416180, 0.636658527133653670, 0.636697083630245240, 0.636735638535093740, 0.636774191848103020, 0.636812743569176940, +0.636851293698219360, 0.636889842235133120, 0.636928389179822310, 0.636966934532190890, 0.637005478292141710, 0.637044020459578970, 0.637082561034406080, 0.637121100016527110, +0.637159637405845140, 0.637198173202264020, 0.637236707405687500, 0.637275240016019540, 0.637313771033163110, 0.637352300457022290, 0.637390828287500710, 0.637429354524502330, +0.637467879167930350, 0.637506402217688510, 0.637544923673680760, 0.637583443535811090, 0.637621961803982450, 0.637660478478098810, 0.637698993558064480, 0.637737507043782180, +0.637776018935156230, 0.637814529232090140, 0.637853037934488110, 0.637891545042253090, 0.637930050555289290, 0.637968554473500320, 0.638007056796790260, 0.638045557525062310, +0.638084056658220430, 0.638122554196168370, 0.638161050138810300, 0.638199544486049210, 0.638238037237789380, 0.638276528393934340, 0.638315017954388390, 0.638353505919054490, +0.638391992287836940, 0.638430477060639600, 0.638468960237365880, 0.638507441817919630, 0.638545921802204820, 0.638584400190125520, 0.638622876981584930, 0.638661352176487120, +0.638699825774735940, 0.638738297776235590, 0.638776768180889130, 0.638815236988600650, 0.638853704199274230, 0.638892169812813830, 0.638930633829122630, 0.638969096248104830, +0.639007557069664280, 0.639046016293705280, 0.639084473920130790, 0.639122929948845230, 0.639161384379752230, 0.639199837212756190, 0.639238288447760210, 0.639276738084668450, +0.639315186123385230, 0.639353632563813720, 0.639392077405858130, 0.639430520649422300, 0.639468962294410530, 0.639507402340726010, 0.639545840788272920, 0.639584277636955360, +0.639622712886677380, 0.639661146537342300, 0.639699578588854290, 0.639738009041117440, 0.639776437894035820, 0.639814865147512850, 0.639853290801452590, 0.639891714855759240, +0.639930137310336880, 0.639968558165088800, 0.640006977419919300, 0.640045395074732790, 0.640083811129432470, 0.640122225583922510, 0.640160638438107110, 0.640199049691890340, +0.640237459345175730, 0.640275867397867350, 0.640314273849869390, 0.640352678701086030, 0.640391081951420690, 0.640429483600777560, 0.640467883649060710, 0.640506282096174660, +0.640544678942022380, 0.640583074186508510, 0.640621467829536880, 0.640659859871012040, 0.640698250310837050, 0.640736639148916540, 0.640775026385154820, 0.640813412019455080, +0.640851796051721820, 0.640890178481859140, 0.640928559309771330, 0.640966938535361800, 0.641005316158534840, 0.641043692179194660, 0.641082066597245650, 0.641120439412591000, +0.641158810625135360, 0.641197180234782560, 0.641235548241437250, 0.641273914645002720, 0.641312279445383380, 0.641350642642483430, 0.641389004236207150, 0.641427364226457960, +0.641465722613140390, 0.641504079396158940, 0.641542434575416820, 0.641580788150818760, 0.641619140122268620, 0.641657490489671020, 0.641695839252929280, 0.641734186411948020, +0.641772531966631310, 0.641810875916883570, 0.641849218262608320, 0.641887559003709970, 0.641925898140092820, 0.641964235671661170, 0.642002571598318640, 0.642040905919969650, +0.642079238636518390, 0.642117569747869490, 0.642155899253926240, 0.642194227154593180, 0.642232553449774590, 0.642270878139375000, 0.642309201223297820, 0.642347522701447680, +0.642385842573729100, 0.642424160840045500, 0.642462477500301610, 0.642500792554401400, 0.642539106002249620, 0.642577417843749670, 0.642615728078806290, 0.642654036707323460, +0.642692343729205920, 0.642730649144357290, 0.642768952952681880, 0.642807255154084210, 0.642845555748468690, 0.642883854735738950, 0.642922152115799510, 0.642960447888554780, +0.642998742053909170, 0.643037034611766420, 0.643075325562031170, 0.643113614904607830, 0.643151902639400140, 0.643190188766312730, 0.643228473285249790, 0.643266756196116060, +0.643305037498815070, 0.643343317193251550, 0.643381595279329700, 0.643419871756954140, 0.643458146626028630, 0.643496419886457780, 0.643534691538145800, 0.643572961580997420, +0.643611230014916380, 0.643649496839807210, 0.643687762055574320, 0.643726025662122340, 0.643764287659355010, 0.643802548047176960, 0.643840806825492830, 0.643879063994206360, +0.643917319553222180, 0.643955573502444810, 0.643993825841778780, 0.644032076571127820, 0.644070325690396680, 0.644108573199489780, 0.644146819098311730, 0.644185063386766400, +0.644223306064758310, 0.644261547132191970, 0.644299786588972130, 0.644338024435002430, 0.644376260670187720, 0.644414495294432290, 0.644452728307641000, 0.644490959709717590, +0.644529189500566810, 0.644567417680092960, 0.644605644248200990, 0.644643869204794440, 0.644682092549778370, 0.644720314283057320, 0.644758534404535230, 0.644796752914116640, +0.644834969811706290, 0.644873185097208920, 0.644911398770528050, 0.644949610831568880, 0.644987821280235570, 0.645026030116433110, 0.645064237340065130, 0.645102442951036690, +0.645140646949252110, 0.645178849334616220, 0.645217050107032790, 0.645255249266406870, 0.645293446812642780, 0.645331642745645360, 0.645369837065318590, 0.645408029771567190, +0.645446220864296040, 0.645484410343408980, 0.645522598208810860, 0.645560784460406320, 0.645598969098100220, 0.645637152121796290, 0.645675333531399390, 0.645713513326814260, +0.645751691507945650, 0.645789868074697520, 0.645828043026974720, 0.645866216364681670, 0.645904388087723550, 0.645942558196004100, 0.645980726689428300, 0.646018893567900650, +0.646057058831326030, 0.646095222479608490, 0.646133384512652900, 0.646171544930364220, 0.646209703732646300, 0.646247860919404000, 0.646286016490542180, 0.646324170445965680, +0.646362322785578370, 0.646400473509285310, 0.646438622616991030, 0.646476770108600500, 0.646514915984017670, 0.646553060243147630, 0.646591202885894890, 0.646629343912164530, +0.646667483321860530, 0.646705621114887720, 0.646743757291150860, 0.646781891850555010, 0.646820024793004040, 0.646858156118403030, 0.646896285826656590, 0.646934413917669810, +0.646972540391346660, 0.647010665247592100, 0.647048788486311200, 0.647086910107408150, 0.647125030110787700, 0.647163148496354700, 0.647201265264014220, 0.647239380413670130, +0.647277493945227710, 0.647315605858591490, 0.647353716153666550, 0.647391824830357070, 0.647429931888567900, 0.647468037328204020, 0.647506141149170380, 0.647544243351371060, +0.647582343934711040, 0.647620442899095260, 0.647658540244428590, 0.647696635970615330, 0.647734730077560440, 0.647772822565169100, 0.647810913433345400, 0.647849002681994300, +0.647887090311020760, 0.647925176320329870, 0.647963260709825680, 0.648001343479413290, 0.648039424628997550, 0.648077504158483640, 0.648115582067775640, 0.648153658356778630, +0.648191733025397450, 0.648229806073537420, 0.648267877501102370, 0.648305947307997730, 0.648344015494128120, 0.648382082059398850, 0.648420147003714090, 0.648458210326978920, +0.648496272029098650, 0.648534332109977240, 0.648572390569520100, 0.648610447407631850, 0.648648502624217920, 0.648686556219182360, 0.648724608192430500, 0.648762658543867050, +0.648800707273397230, 0.648838754380925420, 0.648876799866356600, 0.648914843729595850, 0.648952885970548340, 0.648990926589118280, 0.649028965585210840, 0.649067002958731100, +0.649105038709584140, 0.649143072837674250, 0.649181105342906630, 0.649219136225186570, 0.649257165484418360, 0.649295193120507320, 0.649333219133358170, 0.649371243522876450, +0.649409266288966220, 0.649447287431532790, 0.649485306950481120, 0.649523324845716620, 0.649561341117143360, 0.649599355764666760, 0.649637368788191890, 0.649675380187623830, +0.649713389962866980, 0.649751398113826650, 0.649789404640407910, 0.649827409542515940, 0.649865412820055170, 0.649903414472930760, 0.649941414501047920, 0.649979412904311830, +0.650017409682626780, 0.650055404835898300, 0.650093398364031680, 0.650131390266931230, 0.650169380544502240, 0.650207369196649790, 0.650245356223279280, 0.650283341624295020, +0.650321325399602520, 0.650359307549106540, 0.650397288072712800, 0.650435266970325390, 0.650473244241849820, 0.650511219887191180, 0.650549193906254760, 0.650587166298945090, +0.650625137065167450, 0.650663106204827040, 0.650701073717829150, 0.650739039604078200, 0.650777003863479700, 0.650814966495939060, 0.650852927501360590, 0.650890886879649910, +0.650928844630711880, 0.650966800754452120, 0.651004755250775060, 0.651042708119586090, 0.651080659360790400, 0.651118608974293300, 0.651156556959999410, 0.651194503317814140, +0.651232448047642580, 0.651270391149390230, 0.651308332622961620, 0.651346272468262160, 0.651384210685197030, 0.651422147273671650, 0.651460082233590530, 0.651498015564859310, +0.651535947267383290, 0.651573877341067200, 0.651611805785816230, 0.651649732601535910, 0.651687657788131540, 0.651725581345507730, 0.651763503273569910, 0.651801423572223370, +0.651839342241373520, 0.651877259280925100, 0.651915174690783420, 0.651953088470853870, 0.651991000621041980, 0.652028911141252170, 0.652066820031390050, 0.652104727291360930, +0.652142632921070440, 0.652180536920422880, 0.652218439289323990, 0.652256340027679070, 0.652294239135393640, 0.652332136612372220, 0.652370032458520430, 0.652407926673744030, +0.652445819257947420, 0.652483710211036130, 0.652521599532915660, 0.652559487223491660, 0.652597373282668420, 0.652635257710351800, 0.652673140506447090, 0.652711021670859810, +0.652748901203494600, 0.652786779104257200, 0.652824655373052900, 0.652862530009787220, 0.652900403014364920, 0.652938274386691610, 0.652976144126672600, 0.653014012234213510, +0.653051878709219100, 0.653089743551594990, 0.653127606761246930, 0.653165468338079420, 0.653203328281998340, 0.653241186592908860, 0.653279043270716730, 0.653316898315326690, +0.653354751726644480, 0.653392603504575290, 0.653430453649024970, 0.653468302159898150, 0.653506149037100580, 0.653543994280537670, 0.653581837890115040, 0.653619679865737550, +0.653657520207310830, 0.653695358914740290, 0.653733195987931780, 0.653771031426789830, 0.653808865231220390, 0.653846697401129110, 0.653884527936420710, 0.653922356837000950, +0.653960184102775340, 0.653998009733649630, 0.654035833729528560, 0.654073656090317980, 0.654111476815923080, 0.654149295906249930, 0.654187113361203280, 0.654224929180688750, +0.654262743364611880, 0.654300555912878500, 0.654338366825393480, 0.654376176102062450, 0.654413983742791030, 0.654451789747484970, 0.654489594116049120, 0.654527396848389230, +0.654565197944411150, 0.654602997404019840, 0.654640795227121040, 0.654678591413620170, 0.654716385963423190, 0.654754178876434940, 0.654791970152561190, 0.654829759791707540, +0.654867547793779870, 0.654905334158682910, 0.654943118886322730, 0.654980901976604630, 0.655018683429434700, 0.655056463244717670, 0.655094241422359500, 0.655132017962265830, +0.655169792864342290, 0.655207566128494070, 0.655245337754626790, 0.655283107742646200, 0.655320876092458260, 0.655358642803967720, 0.655396407877080640, 0.655434171311702900, +0.655471933107739320, 0.655509693265095890, 0.655547451783678240, 0.655585208663392320, 0.655622963904143100, 0.655660717505836320, 0.655698469468377840, 0.655736219791673510, +0.655773968475628300, 0.655811715520148280, 0.655849460925138850, 0.655887204690506100, 0.655924946816154990, 0.655962687301991590, 0.656000426147921420, 0.656038163353850460, +0.656075898919683880, 0.656113632845327530, 0.656151365130687390, 0.656189095775668530, 0.656226824780176910, 0.656264552144118160, 0.656302277867398480, 0.656340001949922700, +0.656377724391596920, 0.656415445192326860, 0.656453164352018610, 0.656490881870576910, 0.656528597747908170, 0.656566311983917910, 0.656604024578512190, 0.656641735531595990, +0.656679444843075500, 0.656717152512856450, 0.656754858540844810, 0.656792562926945770, 0.656830265671065280, 0.656867966773109440, 0.656905666232983300, 0.656943364050593060, +0.656981060225844350, 0.657018754758643350, 0.657056447648895150, 0.657094138896505810, 0.657131828501381190, 0.657169516463427250, 0.657207202782549290, 0.657244887458653170, +0.657282570491644960, 0.657320251881430620, 0.657357931627915230, 0.657395609731005190, 0.657433286190605930, 0.657470961006623940, 0.657508634178964100, 0.657546305707532810, +0.657583975592235690, 0.657621643832978940, 0.657659310429667740, 0.657696975382208280, 0.657734638690506750, 0.657772300354468210, 0.657809960373998970, 0.657847618749004880, +0.657885275479392020, 0.657922930565065570, 0.657960584005931940, 0.657998235801896760, 0.658035885952866330, 0.658073534458745830, 0.658111181319441570, 0.658148826534859290, +0.658186470104905390, 0.658224112029484830, 0.658261752308504030, 0.658299390941868960, 0.658337027929485560, 0.658374663271259370, 0.658412296967096580, 0.658449929016903250, +0.658487559420584900, 0.658525188178047500, 0.658562815289197250, 0.658600440753940310, 0.658638064572181770, 0.658675686743828260, 0.658713307268785410, 0.658750926146959740, +0.658788543378256320, 0.658826158962581570, 0.658863772899841440, 0.658901385189942120, 0.658938995832789140, 0.658976604828288570, 0.659014212176346480, 0.659051817876869280, +0.659089421929762160, 0.659127024334931530, 0.659164625092283570, 0.659202224201723810, 0.659239821663158420, 0.659277417476493600, 0.659315011641635420, 0.659352604158489400, +0.659390195026961940, 0.659427784246959030, 0.659465371818386830, 0.659502957741150970, 0.659540542015157770, 0.659578124640313180, 0.659615705616523500, 0.659653284943694350, +0.659690862621731930, 0.659728438650542430, 0.659766013030032020, 0.659803585760106340, 0.659841156840671680, 0.659878726271634570, 0.659916294052900200, 0.659953860184375070, +0.659991424665965280, 0.660028987497577320, 0.660066548679116630, 0.660104108210489480, 0.660141666091601960, 0.660179222322360810, 0.660216776902671110, 0.660254329832439590, +0.660291881111572110, 0.660329430739975410, 0.660366978717554680, 0.660404525044216540, 0.660442069719867190, 0.660479612744412910, 0.660517154117759240, 0.660554693839812690, +0.660592231910479440, 0.660629768329665910, 0.660667303097277610, 0.660704836213221180, 0.660742367677402910, 0.660779897489728320, 0.660817425650104040, 0.660854952158436260, +0.660892477014631390, 0.660930000218594940, 0.660967521770233550, 0.661005041669453290, 0.661042559916160790, 0.661080076510261570, 0.661117591451662160, 0.661155104740268840, +0.661192616375988030, 0.661230126358725360, 0.661267634688387340, 0.661305141364880170, 0.661342646388110580, 0.661380149757984090, 0.661417651474407120, 0.661455151537286400, +0.661492649946527460, 0.661530146702036910, 0.661567641803720960, 0.661605135251486230, 0.661642627045238350, 0.661680117184883950, 0.661717605670329220, 0.661755092501480790, +0.661792577678244290, 0.661830061200526340, 0.661867543068233370, 0.661905023281271650, 0.661942501839547280, 0.661979978742966440, 0.662017453991435740, 0.662054927584861840, +0.662092399523150130, 0.662129869806207470, 0.662167338433940600, 0.662204805406254930, 0.662242270723057190, 0.662279734384253800, 0.662317196389751510, 0.662354656739455820, +0.662392115433273480, 0.662429572471110890, 0.662467027852874700, 0.662504481578470640, 0.662541933647805230, 0.662579384060785090, 0.662616832817316870, 0.662654279917306190, +0.662691725360659790, 0.662729169147284080, 0.662766611277085800, 0.662804051749970700, 0.662841490565845400, 0.662878927724616320, 0.662916363226190410, 0.662953797070473190, +0.662991229257371420, 0.663028659786791930, 0.663066088658640580, 0.663103515872823900, 0.663140941429248400, 0.663178365327820930, 0.663215787568447230, 0.663253208151034060, +0.663290627075487800, 0.663328044341715330, 0.663365459949622480, 0.663402873899115900, 0.663440286190102200, 0.663477696822488140, 0.663515105796179450, 0.663552513111082990, +0.663589918767105270, 0.663627322764153040, 0.663664725102132260, 0.663702125780949560, 0.663739524800512020, 0.663776922160725260, 0.663814317861496140, 0.663851711902731290, +0.663889104284337450, 0.663926495006220590, 0.663963884068287440, 0.664001271470444520, 0.664038657212598920, 0.664076041294656140, 0.664113423716523380, 0.664150804478107040, +0.664188183579314080, 0.664225561020050260, 0.664262936800222530, 0.664300310919737510, 0.664337683378501960, 0.664375054176421950, 0.664412423313404330, 0.664449790789355950, +0.664487156604182670, 0.664524520757791670, 0.664561883250089250, 0.664599244080982480, 0.664636603250377210, 0.664673960758180530, 0.664711316604298940, 0.664748670788639310, +0.664786023311107700, 0.664823374171611080, 0.664860723370055970, 0.664898070906349450, 0.664935416780397360, 0.664972760992106780, 0.665010103541384230, 0.665047444428136790, +0.665084783652270420, 0.665122121213692070, 0.665159457112308730, 0.665196791348026450, 0.665234123920752210, 0.665271454830392630, 0.665308784076854790, 0.665346111660044540, +0.665383437579869170, 0.665420761836235110, 0.665458084429049520, 0.665495405358218270, 0.665532724623648650, 0.665570042225247180, 0.665607358162920940, 0.665644672436575880, +0.665681985046119310, 0.665719295991457630, 0.665756605272498140, 0.665793912889146800, 0.665831218841310580, 0.665868523128896330, 0.665905825751811230, 0.665943126709961140, +0.665980426003253250, 0.666017723631594620, 0.666055019594891330, 0.666092313893050570, 0.666129606525978970, 0.666166897493583600, 0.666204186795770760, 0.666241474432447410, +0.666278760403520410, 0.666316044708896830, 0.666353327348482850, 0.666390608322185440, 0.666427887629911670, 0.666465165271568400, 0.666502441247061930, 0.666539715556299320, +0.666576988199187430, 0.666614259175633330, 0.666651528485543430, 0.666688796128824590, 0.666726062105384100, 0.666763326415128140, 0.666800589057963800, 0.666837850033798030, +0.666875109342538020, 0.666912366984089840, 0.666949622958360800, 0.666986877265257630, 0.667024129904687620, 0.667061380876557090, 0.667098630180772870, 0.667135877817242260, +0.667173123785872240, 0.667210368086569080, 0.667247610719239990, 0.667284851683791810, 0.667322090980131840, 0.667359328608166380, 0.667396564567802610, 0.667433798858947710, +0.667471031481507990, 0.667508262435390740, 0.667545491720502810, 0.667582719336751510, 0.667619945284043000, 0.667657169562284710, 0.667694392171383380, 0.667731613111246510, +0.667768832381780310, 0.667806049982891950, 0.667843265914488390, 0.667880480176477050, 0.667917692768764340, 0.667954903691257210, 0.667992112943862850, 0.668029320526488670, +0.668066526439040740, 0.668103730681426480, 0.668140933253552950, 0.668178134155327340, 0.668215333386656170, 0.668252530947446630, 0.668289726837606010, 0.668326921057040830, +0.668364113605658390, 0.668401304483365540, 0.668438493690069800, 0.668475681225677580, 0.668512867090096050, 0.668550051283232420, 0.668587233804993960, 0.668624414655287100, +0.668661593834019240, 0.668698771341097340, 0.668735947176428920, 0.668773121339920170, 0.668810293831478720, 0.668847464651011530, 0.668884633798426000, 0.668921801273628550, +0.668958967076526580, 0.668996131207027500, 0.669033293665037830, 0.669070454450464870, 0.669107613563215800, 0.669144771003198020, 0.669181926770317960, 0.669219080864483120, +0.669256233285600580, 0.669293384033577740, 0.669330533108321140, 0.669367680509738160, 0.669404826237736120, 0.669441970292222190, 0.669479112673103120, 0.669516253380286200, +0.669553392413678620, 0.669590529773188000, 0.669627665458720660, 0.669664799470184090, 0.669701931807485940, 0.669739062470532610, 0.669776191459231620, 0.669813318773490150, +0.669850444413215730, 0.669887568378314870, 0.669924690668695090, 0.669961811284263580, 0.669998930224927850, 0.670036047490594420, 0.670073163081170930, 0.670110276996564560, +0.670147389236682820, 0.670184499801432240, 0.670221608690720450, 0.670258715904454630, 0.670295821442542290, 0.670332925304890080, 0.670370027491405620, 0.670407128001996420, +0.670444226836569010, 0.670481323995031130, 0.670518419477289850, 0.670555513283252800, 0.670592605412826730, 0.670629695865919140, 0.670666784642437340, 0.670703871742288850, +0.670740957165380400, 0.670778040911619520, 0.670815122980913610, 0.670852203373170090, 0.670889282088295790, 0.670926359126198360, 0.670963434486784970, 0.671000508169963260, +0.671037580175640080, 0.671074650503722840, 0.671111719154119050, 0.671148786126736230, 0.671185851421481130, 0.671222915038261370, 0.671259976976984700, 0.671297037237557850, +0.671334095819888230, 0.671371152723883480, 0.671408207949451220, 0.671445261496497970, 0.671482313364931690, 0.671519363554659580, 0.671556412065589360, 0.671593458897627780, +0.671630504050682590, 0.671667547524661180, 0.671704589319471190, 0.671741629435019360, 0.671778667871213540, 0.671815704627960920, 0.671852739705169450, 0.671889773102745890, +0.671926804820597750, 0.671963834858632980, 0.672000863216758340, 0.672037889894881450, 0.672074914892909940, 0.672111938210751440, 0.672148959848312690, 0.672185979805501650, +0.672222998082225520, 0.672260014678392360, 0.672297029593908800, 0.672334042828682590, 0.672371054382621350, 0.672408064255632820, 0.672445072447623750, 0.672482078958501980, +0.672519083788175040, 0.672556086936550780, 0.672593088403535930, 0.672630088189038360, 0.672667086292965900, 0.672704082715225300, 0.672741077455724650, 0.672778070514371220, +0.672815061891072990, 0.672852051585736800, 0.672889039598270400, 0.672926025928581420, 0.672963010576577700, 0.672999993542166110, 0.673036974825254600, 0.673073954425750580, +0.673110932343562120, 0.673147908578595850, 0.673184883130759970, 0.673221855999961760, 0.673258827186109300, 0.673295796689109330, 0.673332764508870030, 0.673369730645298700, +0.673406695098303420, 0.673443657867791030, 0.673480618953669620, 0.673517578355846910, 0.673554536074229880, 0.673591492108726600, 0.673628446459244580, 0.673665399125691680, +0.673702350107975080, 0.673739299406002520, 0.673776247019681640, 0.673813192948920610, 0.673850137193626190, 0.673887079753706430, 0.673924020629069090, 0.673960959819621900, +0.673997897325272040, 0.674034833145927380, 0.674071767281495650, 0.674108699731884920, 0.674145630497002050, 0.674182559576755100, 0.674219486971052050, 0.674256412679799970, +0.674293336702906920, 0.674330259040280430, 0.674367179691828690, 0.674404098657458650, 0.674441015937078390, 0.674477931530595540, 0.674514845437918180, 0.674551757658953480, +0.674588668193609300, 0.674625577041793490, 0.674662484203414010, 0.674699389678378060, 0.674736293466593580, 0.674773195567968440, 0.674810095982410600, 0.674846994709827120, +0.674883891750126310, 0.674920787103216010, 0.674957680769003420, 0.674994572747396600, 0.675031463038303300, 0.675068351641631810, 0.675105238557288990, 0.675142123785183120, +0.675179007325221960, 0.675215889177313680, 0.675252769341365240, 0.675289647817284840, 0.675326524604980440, 0.675363399704359990, 0.675400273115330680, 0.675437144837800820, +0.675474014871678020, 0.675510883216870470, 0.675547749873285360, 0.675584614840830990, 0.675621478119415310, 0.675658339708945730, 0.675695199609330220, 0.675732057820476630, +0.675768914342293360, 0.675805769174687490, 0.675842622317567090, 0.675879473770840120, 0.675916323534414890, 0.675953171608198460, 0.675990017992099120, 0.676026862686024740, +0.676063705689883500, 0.676100547003582800, 0.676137386627030600, 0.676174224560134980, 0.676211060802804020, 0.676247895354945230, 0.676284728216466680, 0.676321559387276230, +0.676358388867282280, 0.676395216656392020, 0.676432042754513630, 0.676468867161555630, 0.676505689877424990, 0.676542510902030210, 0.676579330235279050, 0.676616147877080020, +0.676652963827340190, 0.676689778085967970, 0.676726590652871440, 0.676763401527958660, 0.676800210711136940, 0.676837018202314900, 0.676873824001400170, 0.676910628108301270, +0.676947430522925390, 0.676984231245181030, 0.677021030274976070, 0.677057827612218780, 0.677094623256816690, 0.677131417208677980, 0.677168209467711170, 0.677205000033823450, +0.677241788906923100, 0.677278576086918440, 0.677315361573717630, 0.677352145367228100, 0.677388927467358130, 0.677425707874015900, 0.677462486587109720, 0.677499263606547000, +0.677536038932236130, 0.677572812564085190, 0.677609584502002480, 0.677646354745895520, 0.677683123295672600, 0.677719890151242010, 0.677756655312511840, 0.677793418779389920, +0.677830180551784340, 0.677866940629603620, 0.677903699012755160, 0.677940455701147580, 0.677977210694688860, 0.678013963993287390, 0.678050715596850710, 0.678087465505287200, +0.678124213718505060, 0.678160960236412700, 0.678197705058917630, 0.678234448185928260, 0.678271189617352780, 0.678307929353099690, 0.678344667393076420, 0.678381403737191470, +0.678418138385353030, 0.678454871337469510, 0.678491602593448540, 0.678528332153198630, 0.678565060016627860, 0.678601786183644750, 0.678638510654156810, 0.678675233428072570, +0.678711954505300640, 0.678748673885748440, 0.678785391569324600, 0.678822107555937300, 0.678858821845495060, 0.678895534437905400, 0.678932245333076940, 0.678968954530917770, +0.679005662031336720, 0.679042367834240990, 0.679079071939539420, 0.679115774347140210, 0.679152475056951870, 0.679189174068882020, 0.679225871382839190, 0.679262566998731780, +0.679299260916468190, 0.679335953135956180, 0.679372643657104260, 0.679409332479821050, 0.679446019604014180, 0.679482705029592290, 0.679519388756463560, 0.679556070784536730, +0.679592751113719420, 0.679629429743920270, 0.679666106675047450, 0.679702781907009830, 0.679739455439714810, 0.679776127273071130, 0.679812797406987190, 0.679849465841371630, +0.679886132576131950, 0.679922797611177020, 0.679959460946415130, 0.679996122581754790, 0.680032782517103970, 0.680069440752371080, 0.680106097287464960, 0.680142752122293250, +0.680179405256764680, 0.680216056690787660, 0.680252706424270710, 0.680289354457121800, 0.680326000789249320, 0.680362645420562020, 0.680399288350968300, 0.680435929580376130, +0.680472569108694140, 0.680509206935830610, 0.680545843061694520, 0.680582477486193380, 0.680619110209236160, 0.680655741230731030, 0.680692370550586960, 0.680728998168711690, +0.680765624085013840, 0.680802248299402280, 0.680838870811784850, 0.680875491622070060, 0.680912110730166660, 0.680948728135983390, 0.680985343839427880, 0.681021957840408980, +0.681058570138835200, 0.681095180734615390, 0.681131789627657190, 0.681168396817869670, 0.681205002305161010, 0.681241606089440290, 0.681278208170615130, 0.681314808548594500, +0.681351407223286800, 0.681388004194600990, 0.681424599462444820, 0.681461193026727140, 0.681497784887356460, 0.681534375044241640, 0.681570963497290520, 0.681607550246412060, +0.681644135291515020, 0.681680718632507340, 0.681717300269297890, 0.681753880201795060, 0.681790458429908040, 0.681827034953544460, 0.681863609772613290, 0.681900182887023030, +0.681936754296682770, 0.681973324001500240, 0.682009892001384400, 0.682046458296243770, 0.682083022885987320, 0.682119585770523120, 0.682156146949759900, 0.682192706423606190, +0.682229264191971160, 0.682265820254762680, 0.682302374611889580, 0.682338927263260840, 0.682375478208784520, 0.682412027448369480, 0.682448574981924350, 0.682485120809358190, +0.682521664930578860, 0.682558207345495330, 0.682594748054016320, 0.682631287056050700, 0.682667824351506640, 0.682704359940292990, 0.682740893822318400, 0.682777425997491920, +0.682813956465721520, 0.682850485226916270, 0.682887012280984810, 0.682923537627836200, 0.682960061267378290, 0.682996583199520280, 0.683033103424171230, 0.683069621941238990, +0.683106138750632750, 0.683142653852261140, 0.683179167246033110, 0.683215678931856970, 0.683252188909641680, 0.683288697179295750, 0.683325203740728580, 0.683361708593847930, +0.683398211738563080, 0.683434713174782660, 0.683471212902415860, 0.683507710921370640, 0.683544207231556180, 0.683580701832881220, 0.683617194725254730, 0.683653685908585000, +0.683690175382781100, 0.683726663147751660, 0.683763149203405970, 0.683799633549652010, 0.683836116186399060, 0.683872597113556080, 0.683909076331031260, 0.683945553838733790, +0.683982029636572400, 0.684018503724456270, 0.684054976102293600, 0.684091446769993450, 0.684127915727464790, 0.684164382974616570, 0.684200848511356980, 0.684237312337595440, +0.684273774453240560, 0.684310234858201530, 0.684346693552386530, 0.684383150535704980, 0.684419605808065380, 0.684456059369377150, 0.684492511219548460, 0.684528961358488510, +0.684565409786106470, 0.684601856502310540, 0.684638301507010110, 0.684674744800113810, 0.684711186381530950, 0.684747626251169810, 0.684784064408939570, 0.684820500854749330, +0.684856935588508020, 0.684893368610124060, 0.684929799919506750, 0.684966229516564830, 0.685002657401207800, 0.685039083573343750, 0.685075508032881860, 0.685111930779731430, +0.685148351813801290, 0.685184771135000090, 0.685221188743236900, 0.685257604638421000, 0.685294018820460930, 0.685330431289265630, 0.685366842044744410, 0.685403251086806330, +0.685439658415359810, 0.685476064030314140, 0.685512467931578270, 0.685548870119061630, 0.685585270592672490, 0.685621669352320050, 0.685658066397913600, 0.685694461729362210, +0.685730855346574410, 0.685767247249459370, 0.685803637437926270, 0.685840025911884420, 0.685876412671242220, 0.685912797715908850, 0.685949181045793940, 0.685985562660805680, +0.686021942560853580, 0.686058320745846610, 0.686094697215694050, 0.686131071970304540, 0.686167445009587370, 0.686203816333451510, 0.686240185941806470, 0.686276553834560650, +0.686312920011623360, 0.686349284472903890, 0.686385647218311520, 0.686422008247754680, 0.686458367561142760, 0.686494725158384940, 0.686531081039390760, 0.686567435204068380, +0.686603787652327550, 0.686640138384077230, 0.686676487399226820, 0.686712834697684850, 0.686749180279360830, 0.686785524144164160, 0.686821866292003480, 0.686858206722787970, +0.686894545436427030, 0.686930882432830070, 0.686967217711905500, 0.687003551273563050, 0.687039883117711580, 0.687076213244260710, 0.687112541653119080, 0.687148868344195970, +0.687185193317400800, 0.687221516572642970, 0.687257838109830990, 0.687294157928874380, 0.687330476029682450, 0.687366792412164580, 0.687403107076229420, 0.687439420021786600, +0.687475731248745390, 0.687512040757014660, 0.687548348546503710, 0.687584654617122040, 0.687620958968778950, 0.687657261601383190, 0.687693562514844150, 0.687729861709071360, +0.687766159183974100, 0.687802454939461240, 0.687838748975442280, 0.687875041291826310, 0.687911331888523160, 0.687947620765441250, 0.687983907922490420, 0.688020193359579760, +0.688056477076618880, 0.688092759073516640, 0.688129039350182330, 0.688165317906525800, 0.688201594742455680, 0.688237869857881600, 0.688274143252712860, 0.688310414926858960, +0.688346684880228770, 0.688382953112731900, 0.688419219624277660, 0.688455484414775660, 0.688491747484134550, 0.688528008832264170, 0.688564268459073700, 0.688600526364473000, +0.688636782548370570, 0.688673037010676170, 0.688709289751299190, 0.688745540770149380, 0.688781790067135360, 0.688818037642166870, 0.688854283495153210, 0.688890527626004220, +0.688926770034628540, 0.688963010720936020, 0.688999249684836280, 0.689035486926238060, 0.689071722445051100, 0.689107956241184930, 0.689144188314549040, 0.689180418665052530, +0.689216647292604900, 0.689252874197115670, 0.689289099378494470, 0.689325322836650270, 0.689361544571492790, 0.689397764582931450, 0.689433982870875980, 0.689470199435235240, +0.689506414275919080, 0.689542627392836780, 0.689578838785898320, 0.689615048455012420, 0.689651256400088840, 0.689687462621037530, 0.689723667117767110, 0.689759869890187670, +0.689796070938208490, 0.689832270261739430, 0.689868467860689450, 0.689904663734968170, 0.689940857884485340, 0.689977050309150690, 0.690013241008872960, 0.690049429983562220, +0.690085617233128000, 0.690121802757479920, 0.690157986556527050, 0.690194168630179240, 0.690230348978346010, 0.690266527600937210, 0.690302704497861800, 0.690338879669029630, +0.690375053114350550, 0.690411224833733520, 0.690447394827088390, 0.690483563094324790, 0.690519729635352690, 0.690555894450080810, 0.690592057538419350, 0.690628218900277590, +0.690664378535565730, 0.690700536444192490, 0.690736692626067960, 0.690772847081101760, 0.690808999809203740, 0.690845150810282860, 0.690881300084249080, 0.690917447631012040, +0.690953593450481800, 0.690989737542567210, 0.691025879907178230, 0.691062020544224610, 0.691098159453616300, 0.691134296635262160, 0.691170432089072360, 0.691206565814956760, +0.691242697812824440, 0.691278828082585340, 0.691314956624149210, 0.691351083437426020, 0.691387208522324830, 0.691423331878755490, 0.691459453506627960, 0.691495573405851990, +0.691531691576336870, 0.691567808017992560, 0.691603922730728570, 0.691640035714455200, 0.691676146969081420, 0.691712256494517290, 0.691748364290672440, 0.691784470357457050, +0.691820574694780090, 0.691856677302551850, 0.691892778180682070, 0.691928877329080150, 0.691964974747655950, 0.692001070436319420, 0.692037164394980420, 0.692073256623548240, +0.692109347121932950, 0.692145435890044290, 0.692181522927792340, 0.692217608235086160, 0.692253691811836050, 0.692289773657951750, 0.692325853773343320, 0.692361932157919970, +0.692398008811591750, 0.692434083734268400, 0.692470156925860340, 0.692506228386276400, 0.692542298115427000, 0.692578366113222100, 0.692614432379571100, 0.692650496914383850, +0.692686559717570540, 0.692722620789041010, 0.692758680128704670, 0.692794737736471600, 0.692830793612251640, 0.692866847755955080, 0.692902900167491120, 0.692938950846769820, +0.692974999793701250, 0.693011047008195380, 0.693047092490161610, 0.693083136239510230, 0.693119178256150880, 0.693155218539993840, 0.693191257090948640, 0.693227293908925120, +0.693263328993833810, 0.693299362345583760, 0.693335393964085390, 0.693371423849248440, 0.693407452000983300, 0.693443478419199180, 0.693479503103806460, 0.693515526054714890, +0.693551547271834880, 0.693587566755075600, 0.693623584504347470, 0.693659600519560330, 0.693695614800624580, 0.693731627347449420, 0.693767638159945240, 0.693803647238021900, +0.693839654581589800, 0.693875660190558240, 0.693911664064837620, 0.693947666204337680, 0.693983666608969040, 0.694019665278640780, 0.694055662213263420, 0.694091657412747250, +0.694127650877001570, 0.694163642605936770, 0.694199632599462930, 0.694235620857490240, 0.694271607379928210, 0.694307592166687140, 0.694343575217677200, 0.694379556532808470, +0.694415536111990690, 0.694451513955133940, 0.694487490062148490, 0.694523464432944550, 0.694559437067431730, 0.694595407965520330, 0.694631377127120310, 0.694667344552142190, +0.694703310240495480, 0.694739274192090360, 0.694775236406837470, 0.694811196884646100, 0.694847155625426760, 0.694883112629089640, 0.694919067895544920, 0.694955021424702220, +0.694990973216472070, 0.695026923270764430, 0.695062871587489810, 0.695098818166557610, 0.695134763007878460, 0.695170706111362340, 0.695206647476919850, 0.695242587104460410, +0.695278524993894420, 0.695314461145132180, 0.695350395558084090, 0.695386328232659780, 0.695422259168769540, 0.695458188366324000, 0.695494115825232680, 0.695530041545405990, +0.695565965526754320, 0.695601887769188080, 0.695637808272616680, 0.695673727036950850, 0.695709644062100560, 0.695745559347976660, 0.695781472894488440, 0.695817384701546530, +0.695853294769061210, 0.695889203096943020, 0.695925109685101350, 0.695961014533447050, 0.695996917641890090, 0.696032819010341310, 0.696068718638710000, 0.696104616526906920, +0.696140512674842450, 0.696176407082426900, 0.696212299749570000, 0.696248190676182380, 0.696284079862174550, 0.696319967307456270, 0.696355853011938140, 0.696391736975530250, +0.696427619198143440, 0.696463499679687130, 0.696499378420072150, 0.696535255419208800, 0.696571130677007490, 0.696607004193378070, 0.696642875968231160, 0.696678746001477170, +0.696714614293026500, 0.696750480842789010, 0.696786345650675320, 0.696822208716595730, 0.696858070040460960, 0.696893929622180660, 0.696929787461665560, 0.696965643558826400, +0.697001497913572690, 0.697037350525815390, 0.697073201395464580, 0.697109050522431110, 0.697144897906624710, 0.697180743547956010, 0.697216587446335520, 0.697252429601673880, +0.697288270013880830, 0.697324108682867090, 0.697359945608543090, 0.697395780790819540, 0.697431614229606200, 0.697467445924813910, 0.697503275876352970, 0.697539104084134110, +0.697574930548067180, 0.697610755268062930, 0.697646578244032200, 0.697682399475884620, 0.697718218963531030, 0.697754036706881850, 0.697789852705848030, 0.697825666960339210, +0.697861479470266220, 0.697897290235539480, 0.697933099256069830, 0.697968906531767130, 0.698004712062542220, 0.698040515848305510, 0.698076317888967850, 0.698112118184438970, +0.698147916734629950, 0.698183713539451080, 0.698219508598813210, 0.698255301912626300, 0.698291093480801090, 0.698326883303248440, 0.698362671379878290, 0.698398457710601490, +0.698434242295328470, 0.698470025133970270, 0.698505806226436650, 0.698541585572638460, 0.698577363172486310, 0.698613139025891170, 0.698648913132762780, 0.698684685493012100, +0.698720456106549760, 0.698756224973286600, 0.698791992093132590, 0.698827757465998460, 0.698863521091795060, 0.698899282970433130, 0.698935043101822640, 0.698970801485874650, +0.699006558122499570, 0.699042313011608460, 0.699078066153111190, 0.699113817546918810, 0.699149567192942190, 0.699185315091091280, 0.699221061241277140, 0.699256805643410420, +0.699292548297401950, 0.699328289203161700, 0.699364028360600740, 0.699399765769629810, 0.699435501430159760, 0.699471235342100650, 0.699506967505363340, 0.699542697919858680, +0.699578426585497630, 0.699614153502190140, 0.699649878669847290, 0.699685602088379820, 0.699721323757698580, 0.699757043677713740, 0.699792761848336280, 0.699828478269477250, +0.699864192941046630, 0.699899905862955580, 0.699935617035114750, 0.699971326457435210, 0.700007034129827010, 0.700042740052201350, 0.700078444224468740, 0.700114146646540370, +0.700149847318326300, 0.700185546239737500, 0.700221243410684920, 0.700256938831079640, 0.700292632500831620, 0.700328324419852040, 0.700364014588051640, 0.700399703005341490, +0.700435389671631770, 0.700471074586833550, 0.700506757750858020, 0.700542439163615250, 0.700578118825016420, 0.700613796734972260, 0.700649472893393970, 0.700685147300191600, +0.700720819955276460, 0.700756490858559180, 0.700792160009951040, 0.700827827409362230, 0.700863493056703810, 0.700899156951886650, 0.700934819094821910, 0.700970479485419800, +0.701006138123591470, 0.701041795009247790, 0.701077450142299940, 0.701113103522658210, 0.701148755150233670, 0.701184405024937290, 0.701220053146680230, 0.701255699515372700, +0.701291344130925860, 0.701326986993251020, 0.701362628102258360, 0.701398267457859160, 0.701433905059964280, 0.701469540908485010, 0.701505175003331540, 0.701540807344415040, +0.701576437931646700, 0.701612066764937480, 0.701647693844197780, 0.701683319169338790, 0.701718942740271580, 0.701754564556907320, 0.701790184619156320, 0.701825802926929860, +0.701861419480138920, 0.701897034278694760, 0.701932647322507600, 0.701968258611488930, 0.702003868145549830, 0.702039475924600810, 0.702075081948553060, 0.702110686217317650, +0.702146288730805870, 0.702181889488928010, 0.702217488491595380, 0.702253085738719140, 0.702288681230210380, 0.702324274965979710, 0.702359866945938220, 0.702395457169997180, +0.702431045638067800, 0.702466632350060460, 0.702502217305886580, 0.702537800505457110, 0.702573381948683460, 0.702608961635476040, 0.702644539565746240, 0.702680115739405360, +0.702715690156363930, 0.702751262816533220, 0.702786833719824420, 0.702822402866148830, 0.702857970255416850, 0.702893535887540000, 0.702929099762429340, 0.702964661879996180, +0.703000222240151130, 0.703035780842805490, 0.703071337687870330, 0.703106892775257180, 0.703142446104876530, 0.703177997676639690, 0.703213547490457950, 0.703249095546242600, +0.703284641843904270, 0.703320186383354250, 0.703355729164504060, 0.703391270187264330, 0.703426809451546340, 0.703462346957261400, 0.703497882704320790, 0.703533416692635250, +0.703568948922116190, 0.703604479392674680, 0.703640008104222340, 0.703675535056669690, 0.703711060249928130, 0.703746583683908970, 0.703782105358523700, 0.703817625273682750, +0.703853143429297830, 0.703888659825280040, 0.703924174461540760, 0.703959687337990970, 0.703995198454541840, 0.704030707811104660, 0.704066215407591070, 0.704101721243911680, +0.704137225319978020, 0.704172727635701490, 0.704208228190992940, 0.704243726985763760, 0.704279224019925150, 0.704314719293388960, 0.704350212806065690, 0.704385704557866750, +0.704421194548703560, 0.704456682778487830, 0.704492169247129980, 0.704527653954541640, 0.704563136900634320, 0.704598618085319430, 0.704634097508507580, 0.704669575170110530, +0.704705051070039560, 0.704740525208206290, 0.704775997584521360, 0.704811468198896510, 0.704846937051243240, 0.704882404141472410, 0.704917869469495420, 0.704953333035223890, +0.704988794838569240, 0.705024254879442310, 0.705059713157754730, 0.705095169673417900, 0.705130624426343560, 0.705166077416442220, 0.705201528643625730, 0.705236978107805390, +0.705272425808892930, 0.705307871746799100, 0.705343315921435510, 0.705378758332713800, 0.705414198980545360, 0.705449637864841160, 0.705485074985512830, 0.705520510342472210, +0.705555943935629930, 0.705591375764897830, 0.705626805830187220, 0.705662234131410050, 0.705697660668476830, 0.705733085441299530, 0.705768508449789560, 0.705803929693858520, +0.705839349173417400, 0.705874766888377910, 0.705910182838651590, 0.705945597024150050, 0.705981009444784150, 0.706016420100465720, 0.706051828991106410, 0.706087236116617720, +0.706122641476910620, 0.706158045071896940, 0.706193446901488110, 0.706228846965595960, 0.706264245264131450, 0.706299641797006330, 0.706335036564132320, 0.706370429565420510, +0.706405820800782620, 0.706441210270130180, 0.706476597973374920, 0.706511983910427910, 0.706547368081201000, 0.706582750485605700, 0.706618131123553760, 0.706653509994956130, +0.706688887099724770, 0.706724262437771200, 0.706759636009007370, 0.706795007813344030, 0.706830377850693250, 0.706865746120966420, 0.706901112624075620, 0.706936477359931700, +0.706971840328446620, 0.707007201529532110, 0.707042560963099480, 0.707077918629060330, 0.707113274527326420, 0.707148628657809700, 0.707183981020421020, 0.707219331615072330, +0.707254680441675390, 0.707290027500142030, 0.707325372790383320, 0.707360716312311120, 0.707396058065837270, 0.707431398050873520, 0.707466736267330920, 0.707502072715121440, +0.707537407394156830, 0.707572740304349020, 0.707608071445609110, 0.707643400817848930, 0.707678728420980560, 0.707714054254915180, 0.707749378319564530, 0.707784700614840450, +0.707820021140655010, 0.707855339896919180, 0.707890656883544910, 0.707925972100444060, 0.707961285547528570, 0.707996597224709530, 0.708031907131899120, 0.708067215269008840, +0.708102521635950890, 0.708137826232636210, 0.708173129058977110, 0.708208430114885100, 0.708243729400272470, 0.708279026915049960, 0.708314322659130080, 0.708349616632424570, +0.708384908834844840, 0.708420199266302730, 0.708455487926710200, 0.708490774815979220, 0.708526059934020960, 0.708561343280747600, 0.708596624856070890, 0.708631904659902890, +0.708667182692154900, 0.708702458952738870, 0.708737733441566760, 0.708773006158550540, 0.708808277103601610, 0.708843546276631930, 0.708878813677553340, 0.708914079306278030, +0.708949343162717290, 0.708984605246783080, 0.709019865558387470, 0.709055124097442420, 0.709090380863859230, 0.709125635857550280, 0.709160889078427340, 0.709196140526401900, +0.709231390201386260, 0.709266638103291940, 0.709301884232031440, 0.709337128587515960, 0.709372371169657570, 0.709407611978368320, 0.709442851013560300, 0.709478088275144910, +0.709513323763034220, 0.709548557477140300, 0.709583789417375210, 0.709619019583650370, 0.709654247975877950, 0.709689474593970030, 0.709724699437838670, 0.709759922507395170, +0.709795143802551930, 0.709830363323221140, 0.709865581069314190, 0.709900797040743270, 0.709936011237420230, 0.709971223659257580, 0.710006434306166610, 0.710041643178059510, +0.710076850274848240, 0.710112055596445190, 0.710147259142761670, 0.710182460913710070, 0.710217660909202240, 0.710252859129150590, 0.710288055573466530, 0.710323250242062330, +0.710358443134849970, 0.710393634251741850, 0.710428823592649250, 0.710464011157484700, 0.710499196946160260, 0.710534380958587670, 0.710569563194679120, 0.710604743654346560, +0.710639922337502620, 0.710675099244058470, 0.710710274373926530, 0.710745447727018980, 0.710780619303248100, 0.710815789102525300, 0.710850957124763090, 0.710886123369873450, +0.710921287837768870, 0.710956450528360760, 0.710991611441561420, 0.711026770577283140, 0.711061927935438210, 0.711097083515938260, 0.711132237318695460, 0.711167389343622110, +0.711202539590630620, 0.711237688059632390, 0.711272834750540040, 0.711307979663265870, 0.711343122797721490, 0.711378264153819220, 0.711413403731471330, 0.711448541530590230, +0.711483677551087550, 0.711518811792875570, 0.711553944255866600, 0.711589074939973030, 0.711624203845106610, 0.711659330971179500, 0.711694456318104240, 0.711729579885793000, +0.711764701674157510, 0.711799821683110400, 0.711834939912563640, 0.711870056362429840, 0.711905171032620520, 0.711940283923048420, 0.711975395033625840, 0.712010504364264500, +0.712045611914876810, 0.712080717685375180, 0.712115821675672000, 0.712150923885679020, 0.712186024315308640, 0.712221122964473370, 0.712256219833085510, 0.712291314921056680, +0.712326408228299730, 0.712361499754726620, 0.712396589500250200, 0.712431677464781980, 0.712466763648234470, 0.712501848050520080, 0.712536930671551440, 0.712572011511240170, +0.712607090569498780, 0.712642167846240020, 0.712677243341375610, 0.712712317054817970, 0.712747388986479600, 0.712782459136273030, 0.712817527504110090, 0.712852594089903310, +0.712887658893564870, 0.712922721915007830, 0.712957783154143600, 0.712992842610884800, 0.713027900285144070, 0.713062956176833800, 0.713098010285865840, 0.713133062612152810, +0.713168113155607130, 0.713203161916141530, 0.713238208893667740, 0.713273254088098390, 0.713308297499346210, 0.713343339127322950, 0.713378378971941450, 0.713413417033113890, +0.713448453310753130, 0.713483487804770890, 0.713518520515080020, 0.713553551441592830, 0.713588580584222030, 0.713623607942879490, 0.713658633517477940, 0.713693657307929770, +0.713728679314147740, 0.713763699536043680, 0.713798717973530560, 0.713833734626520440, 0.713868749494926400, 0.713903762578660170, 0.713938773877634600, 0.713973783391761980, +0.714008791120955280, 0.714043797065126220, 0.714078801224187650, 0.714113803598052540, 0.714148804186632510, 0.714183802989840410, 0.714218800007588860, 0.714253795239790600, +0.714288788686357590, 0.714323780347202670, 0.714358770222238150, 0.714393758311377080, 0.714428744614531320, 0.714463729131613710, 0.714498711862536770, 0.714533692807213350, +0.714568671965555290, 0.714603649337475780, 0.714638624922886990, 0.714673598721701890, 0.714708570733832650, 0.714743540959191790, 0.714778509397692610, 0.714813476049246610, +0.714848440913767090, 0.714883403991166460, 0.714918365281357550, 0.714953324784252440, 0.714988282499764090, 0.715023238427805020, 0.715058192568288060, 0.715093144921125410, +0.715128095486229800, 0.715163044263514070, 0.715197991252890960, 0.715232936454272660, 0.715267879867571900, 0.715302821492701520, 0.715337761329574270, 0.715372699378102440, +0.715407635638198870, 0.715442570109776410, 0.715477502792747240, 0.715512433687024440, 0.715547362792520400, 0.715582290109148420, 0.715617215636820240, 0.715652139375449140, +0.715687061324947640, 0.715721981485228810, 0.715756899856204720, 0.715791816437788330, 0.715826731229892490, 0.715861644232430040, 0.715896555445313170, 0.715931464868455050, +0.715966372501768090, 0.716001278345165690, 0.716036182398559600, 0.716071084661863200, 0.716105985134989020, 0.716140883817850240, 0.716175780710358810, 0.716210675812428030, +0.716245569123970970, 0.716280460644899470, 0.716315350375126950, 0.716350238314566010, 0.716385124463129850, 0.716420008820730430, 0.716454891387281130, 0.716489772162694490, +0.716524651146883800, 0.716559528339761220, 0.716594403741239730, 0.716629277351232270, 0.716664149169651930, 0.716699019196410880, 0.716733887431422190, 0.716768753874598930, +0.716803618525854060, 0.716838481385099870, 0.716873342452249430, 0.716908201727215920, 0.716943059209911640, 0.716977914900249650, 0.717012768798142910, 0.717047620903504600, +0.717082471216246910, 0.717117319736283010, 0.717152166463525860, 0.717187011397888540, 0.717221854539283440, 0.717256695887623640, 0.717291535442822090, 0.717326373204792090, +0.717361209173445920, 0.717396043348696550, 0.717430875730457160, 0.717465706318640930, 0.717500535113160030, 0.717535362113927880, 0.717570187320857530, 0.717605010733861400, +0.717639832352852890, 0.717674652177744620, 0.717709470208450220, 0.717744286444881750, 0.717779100886952510, 0.717813913534575580, 0.717848724387664230, 0.717883533446130650, +0.717918340709888250, 0.717953146178849980, 0.717987949852929240, 0.718022751732038330, 0.718057551816090430, 0.718092350104998720, 0.718127146598676490, 0.718161941297035920, +0.718196734199990640, 0.718231525307453820, 0.718266314619337760, 0.718301102135556090, 0.718335887856021540, 0.718370671780647620, 0.718405453909346740, 0.718440234242032180, +0.718475012778617030, 0.718509789519014790, 0.718544564463137640, 0.718579337610899090, 0.718614108962212230, 0.718648878516990330, 0.718683646275146030, 0.718718412236592610, +0.718753176401243030, 0.718787938769010930, 0.718822699339808580, 0.718857458113549620, 0.718892215090146890, 0.718926970269514020, 0.718961723651563410, 0.718996475236208470, +0.719031225023362590, 0.719065973012938400, 0.719100719204849300, 0.719135463599008370, 0.719170206195329120, 0.719204946993724060, 0.719239685994106480, 0.719274423196389790, +0.719309158600487390, 0.719343892206311790, 0.719378624013776390, 0.719413354022794490, 0.719448082233279500, 0.719482808645143910, 0.719517533258301370, 0.719552256072665040, +0.719586977088148340, 0.719621696304663880, 0.719656413722125190, 0.719691129340445770, 0.719725843159538250, 0.719760555179316030, 0.719795265399692520, 0.719829973820581110, +0.719864680441894440, 0.719899385263546130, 0.719934088285449360, 0.719968789507517530, 0.720003488929663590, 0.720038186551800850, 0.720072882373842700, 0.720107576395702550, +0.720142268617293250, 0.720176959038528300, 0.720211647659320890, 0.720246334479584640, 0.720281019499232290, 0.720315702718177350, 0.720350384136333570, 0.720385063753613440, +0.720419741569930610, 0.720454417585198570, 0.720489091799330630, 0.720523764212239740, 0.720558434823839410, 0.720593103634042940, 0.720627770642764180, 0.720662435849915630, +0.720697099255410920, 0.720731760859163460, 0.720766420661086980, 0.720801078661094110, 0.720835734859098460, 0.720870389255013570, 0.720905041848753040, 0.720939692640229500, +0.720974341629356810, 0.721008988816048250, 0.721043634200217550, 0.721078277781777350, 0.721112919560641610, 0.721147559536723710, 0.721182197709936750, 0.721216834080194210, +0.721251468647409520, 0.721286101411496630, 0.721320732372368050, 0.721355361529937730, 0.721389988884118980, 0.721424614434825530, 0.721459238181970220, 0.721493860125466900, +0.721528480265228870, 0.721563098601169960, 0.721597715133203030, 0.721632329861241820, 0.721666942785199720, 0.721701553904990690, 0.721736163220527250, 0.721770770731723580, +0.721805376438493300, 0.721839980340749140, 0.721874582438405190, 0.721909182731374610, 0.721943781219571480, 0.721978377902908640, 0.722012972781299830, 0.722047565854658460, +0.722082157122898580, 0.722116746585933060, 0.722151334243675610, 0.722185920096039770, 0.722220504142939480, 0.722255086384287700, 0.722289666819998070, 0.722324245449984410, +0.722358822274160370, 0.722393397292438900, 0.722427970504734060, 0.722462541910959600, 0.722497111511028360, 0.722531679304854510, 0.722566245292351250, 0.722600809473432860, +0.722635371848012080, 0.722669932416002860, 0.722704491177318830, 0.722739048131873840, 0.722773603279580960, 0.722808156620354140, 0.722842708154106780, 0.722877257880753080, +0.722911805800205860, 0.722946351912379100, 0.722980896217186530, 0.723015438714541990, 0.723049979404358560, 0.723084518286550180, 0.723119055361030830, 0.723153590627713560, +0.723188124086512230, 0.723222655737340680, 0.723257185580112650, 0.723291713614741430, 0.723326239841140970, 0.723360764259224910, 0.723395286868907190, 0.723429807670101010, +0.723464326662720310, 0.723498843846678730, 0.723533359221890440, 0.723567872788268280, 0.723602384545726670, 0.723636894494178890, 0.723671402633539350, 0.723705908963720780, +0.723740413484637690, 0.723774916196203380, 0.723809417098332130, 0.723843916190937130, 0.723878413473932230, 0.723912908947231700, 0.723947402610748410, 0.723981894464396760, +0.724016384508090360, 0.724050872741743400, 0.724085359165268730, 0.724119843778580850, 0.724154326581593290, 0.724188807574220220, 0.724223286756374820, 0.724257764127971160, +0.724292239688923090, 0.724326713439144790, 0.724361185378549430, 0.724395655507050980, 0.724430123824563510, 0.724464590331000970, 0.724499055026276760, 0.724533517910304850, +0.724567978982999410, 0.724602438244273730, 0.724636895694041990, 0.724671351332217940, 0.724705805158715850, 0.724740257173449030, 0.724774707376331430, 0.724809155767277110, +0.724843602346200270, 0.724878047113014070, 0.724912490067632700, 0.724946931209970220, 0.724981370539940610, 0.725015808057457360, 0.725050243762434540, 0.725084677654786120, +0.725119109734426280, 0.725153540001268420, 0.725187968455226710, 0.725222395096215330, 0.725256819924147590, 0.725291242938937990, 0.725325664140500150, 0.725360083528748480, +0.725394501103596380, 0.725428916864957920, 0.725463330812747160, 0.725497742946878410, 0.725532153267265060, 0.725566561773821280, 0.725600968466461050, 0.725635373345098760, +0.725669776409647690, 0.725704177660022260, 0.725738577096136320, 0.725772974717904250, 0.725807370525239470, 0.725841764518056150, 0.725876156696268590, 0.725910547059790860, +0.725944935608536460, 0.725979322342419690, 0.726013707261354950, 0.726048090365255640, 0.726082471654036170, 0.726116851127610370, 0.726151228785892890, 0.726185604628796890, +0.726219978656237000, 0.726254350868127170, 0.726288721264381600, 0.726323089844914120, 0.726357456609638800, 0.726391821558469930, 0.726426184691321810, 0.726460546008107830, +0.726494905508742520, 0.726529263193139930, 0.726563619061214580, 0.726597973112879770, 0.726632325348050110, 0.726666675766639900, 0.726701024368562650, 0.726735371153732880, +0.726769716122064760, 0.726804059273472580, 0.726838400607869970, 0.726872740125171330, 0.726907077825290850, 0.726941413708142910, 0.726975747773641270, 0.727010080021700200, +0.727044410452233890, 0.727078739065156960, 0.727113065860382820, 0.727147390837825980, 0.727181713997400610, 0.727216035339021350, 0.727250354862601700, 0.727284672568056180, +0.727318988455299300, 0.727353302524244570, 0.727387614774806620, 0.727421925206899630, 0.727456233820438110, 0.727490540615335800, 0.727524845591506990, 0.727559148748866180, +0.727593450087327680, 0.727627749606805320, 0.727662047307213620, 0.727696343188466770, 0.727730637250479370, 0.727764929493165070, 0.727799219916438480, 0.727833508520213890, +0.727867795304405710, 0.727902080268927780, 0.727936363413694610, 0.727970644738620940, 0.728004924243620290, 0.728039201928607270, 0.728073477793496400, 0.728107751838201980, +0.728142024062637950, 0.728176294466718830, 0.728210563050359030, 0.728244829813473160, 0.728279094755974850, 0.728313357877778840, 0.728347619178799420, 0.728381878658951100, +0.728416136318148060, 0.728450392156304470, 0.728484646173334970, 0.728518898369154180, 0.728553148743675830, 0.728587397296814540, 0.728621644028484840, 0.728655888938601230, +0.728690132027077660, 0.728724373293828780, 0.728758612738769300, 0.728792850361812960, 0.728827086162874500, 0.728861320141868330, 0.728895552298709060, 0.728929782633310760, +0.728964011145587950, 0.728998237835455030, 0.729032462702826840, 0.729066685747617240, 0.729100906969740950, 0.729135126369112370, 0.729169343945646250, 0.729203559699256540, +0.729237773629857870, 0.729271985737364740, 0.729306196021692000, 0.729340404482753390, 0.729374611120463870, 0.729408815934738050, 0.729443018925489910, 0.729477220092634270, +0.729511419436085550, 0.729545616955758590, 0.729579812651567240, 0.729614006523426450, 0.729648198571250520, 0.729682388794954510, 0.729716577194452150, 0.729750763769658420, +0.729784948520487700, 0.729819131446854950, 0.729853312548674030, 0.729887491825859880, 0.729921669278327020, 0.729955844905990190, 0.729990018708763570, 0.730024190686561880, +0.730058360839299980, 0.730092529166891820, 0.730126695669252480, 0.730160860346296350, 0.730195023197938280, 0.730229184224092330, 0.730263343424673580, 0.730297500799596320, +0.730331656348775730, 0.730365810072125640, 0.730399961969561030, 0.730434112040996510, 0.730468260286347040, 0.730502406705526570, 0.730536551298450190, 0.730570694065032390, +0.730604835005188020, 0.730638974118831390, 0.730673111405877320, 0.730707246866240450, 0.730741380499835720, 0.730775512306577340, 0.730809642286380120, 0.730843770439159050, +0.730877896764828390, 0.730912021263302790, 0.730946143934497310, 0.730980264778326670, 0.731014383794705180, 0.731048500983547570, 0.731082616344768790, 0.731116729878283800, +0.731150841584006670, 0.731184951461852470, 0.731219059511735820, 0.731253165733571910, 0.731287270127274680, 0.731321372692759320, 0.731355473429940560, 0.731389572338733360, +0.731423669419051900, 0.731457764670811360, 0.731491858093926690, 0.731525949688312080, 0.731560039453882590, 0.731594127390552960, 0.731628213498238370, 0.731662297776852880, +0.731696380226311670, 0.731730460846529480, 0.731764539637421500, 0.731798616598901890, 0.731832691730885610, 0.731866765033287740, 0.731900836506023220, 0.731934906149006360, +0.731968973962152100, 0.732003039945375520, 0.732037104098591570, 0.732071166421714550, 0.732105226914659620, 0.732139285577342090, 0.732173342409675800, 0.732207397411576370, +0.732241450582958310, 0.732275501923736920, 0.732309551433826480, 0.732343599113142170, 0.732377644961598960, 0.732411688979111910, 0.732445731165595190, 0.732479771520964330, +0.732513810045133940, 0.732547846738019310, 0.732581881599534750, 0.732615914629595630, 0.732649945828116600, 0.732683975195013050, 0.732718002730199160, 0.732752028433590440, +0.732786052305101520, 0.732820074344647800, 0.732854094552143560, 0.732888112927504220, 0.732922129470644720, 0.732956144181479700, 0.732990157059924320, 0.733024168105893550, +0.733058177319302560, 0.733092184700065990, 0.733126190248098770, 0.733160193963316220, 0.733194195845633390, 0.733228195894964910, 0.733262194111225840, 0.733296190494331260, +0.733330185044196560, 0.733364177760736040, 0.733398168643865200, 0.733432157693498790, 0.733466144909552420, 0.733500130291940280, 0.733534113840577870, 0.733568095555380490, +0.733602075436262440, 0.733636053483139430, 0.733670029695926100, 0.733704004074538060, 0.733737976618889620, 0.733771947328896390, 0.733805916204473220, 0.733839883245535620, +0.733873848451997880, 0.733907811823775620, 0.733941773360783810, 0.733975733062937950, 0.734009690930152340, 0.734043646962342590, 0.734077601159423660, 0.734111553521310970, +0.734145504047919230, 0.734179452739163630, 0.734213399594959790, 0.734247344615222010, 0.734281287799865900, 0.734315229148806650, 0.734349168661959650, 0.734383106339239310, +0.734417042180561360, 0.734450976185840760, 0.734484908354992920, 0.734518838687932550, 0.734552767184575180, 0.734586693844835770, 0.734620618668629930, 0.734654541655872300, +0.734688462806478260, 0.734722382120363230, 0.734756299597442370, 0.734790215237630440, 0.734824129040843040, 0.734858041006995700, 0.734891951136002810, 0.734925859427780100, +0.734959765882242880, 0.734993670499306310, 0.735027573278885460, 0.735061474220895630, 0.735095373325251990, 0.735129270591870390, 0.735163166020665120, 0.735197059611552130, +0.735230951364446380, 0.735264841279263500, 0.735298729355918330, 0.735332615594326280, 0.735366499994402730, 0.735400382556063210, 0.735434263279222460, 0.735468142163796080, +0.735502019209699260, 0.735535894416847640, 0.735569767785156150, 0.735603639314540200, 0.735637509004915310, 0.735671376856196440, 0.735705242868299190, 0.735739107041138760, +0.735772969374630880, 0.735806829868690280, 0.735840688523232590, 0.735874545338173200, 0.735908400313427750, 0.735942253448911070, 0.735976104744538560, 0.736009954200225970, +0.736043801815888690, 0.736077647591441670, 0.736111491526800550, 0.736145333621880620, 0.736179173876597700, 0.736213012290866550, 0.736246848864602900, 0.736280683597722360, +0.736314516490139900, 0.736348347541771030, 0.736382176752531370, 0.736416004122336540, 0.736449829651101400, 0.736483653338741770, 0.736517475185172850, 0.736551295190310710, +0.736585113354069950, 0.736618929676366330, 0.736652744157115460, 0.736686556796233070, 0.736720367593633910, 0.736754176549233920, 0.736787983662948510, 0.736821788934693300, +0.736855592364383360, 0.736889393951934530, 0.736923193697262450, 0.736956991600282050, 0.736990787660909200, 0.737024581879059390, 0.737058374254648490, 0.737092164787591320, +0.737125953477803740, 0.737159740325201260, 0.737193525329699620, 0.737227308491213980, 0.737261089809660100, 0.737294869284953470, 0.737328646917009940, 0.737362422705744480, +0.737396196651073030, 0.737429968752911000, 0.737463739011174350, 0.737497507425778130, 0.737531273996638090, 0.737565038723669850, 0.737598801606789370, 0.737632562645911590, +0.737666321840952380, 0.737700079191827670, 0.737733834698452440, 0.737767588360742630, 0.737801340178613870, 0.737835090151982120, 0.737868838280762220, 0.737902584564870230, +0.737936329004221900, 0.737970071598732960, 0.738003812348318580, 0.738037551252894610, 0.738071288312376780, 0.738105023526681060, 0.738138756895722500, 0.738172488419416960, +0.738206218097680280, 0.738239945930428300, 0.738273671917576200, 0.738307396059039940, 0.738341118354735480, 0.738374838804577880, 0.738408557408483210, 0.738442274166367100, +0.738475989078145710, 0.738509702143734010, 0.738543413363047960, 0.738577122736003510, 0.738610830262516500, 0.738644535942502010, 0.738678239775876320, 0.738711941762554950, +0.738745641902454060, 0.738779340195488850, 0.738813036641575160, 0.738846731240628940, 0.738880423992566150, 0.738914114897302080, 0.738947803954752680, 0.738981491164834030, +0.739015176527461400, 0.739048860042550770, 0.739082541710018080, 0.739116221529779290, 0.739149899501749590, 0.739183575625845250, 0.739217249901981900, 0.739250922330075830, +0.739284592910042000, 0.739318261641796810, 0.739351928525255890, 0.739385593560335510, 0.739419256746950750, 0.739452918085018010, 0.739486577574452800, 0.739520235215171520, +0.739553891007089350, 0.739587544950122470, 0.739621197044187050, 0.739654847289198280, 0.739688495685072440, 0.739722142231725280, 0.739755786929073180, 0.739789429777031220, +0.739823070775515790, 0.739856709924442520, 0.739890347223727930, 0.739923982673287070, 0.739957616273036360, 0.739991248022891510, 0.740024877922768830, 0.740058505972583710, +0.740092132172252340, 0.740125756521690660, 0.740159379020814740, 0.740192999669540220, 0.740226618467783150, 0.740260235415459600, 0.740293850512485640, 0.740327463758776780, +0.740361075154249320, 0.740394684698819530, 0.740428292392402600, 0.740461898234915040, 0.740495502226272690, 0.740529104366391850, 0.740562704655188030, 0.740596303092577400, +0.740629899678476030, 0.740663494412800110, 0.740697087295465240, 0.740730678326387610, 0.740764267505483410, 0.740797854832668690, 0.740831440307859190, 0.740865023930970870, +0.740898605701920230, 0.740932185620623240, 0.740965763686995520, 0.740999339900953350, 0.741032914262413240, 0.741066486771290390, 0.741100057427501400, 0.741133626230962240, +0.741167193181589410, 0.741200758279298210, 0.741234321524005150, 0.741267882915626290, 0.741301442454078030, 0.741335000139275780, 0.741368555971136050, 0.741402109949575010, +0.741435662074508950, 0.741469212345853390, 0.741502760763524950, 0.741536307327439470, 0.741569852037513580, 0.741603394893662670, 0.741636935895803370, 0.741670475043851970, +0.741704012337724090, 0.741737547777336250, 0.741771081362604500, 0.741804613093445360, 0.741838142969774350, 0.741871670991508080, 0.741905197158562510, 0.741938721470854270, +0.741972243928298970, 0.742005764530813130, 0.742039283278312700, 0.742072800170714530, 0.742106315207933910, 0.742139828389887570, 0.742173339716491690, 0.742206849187662780, +0.742240356803316350, 0.742273862563369140, 0.742307366467737100, 0.742340868516337070, 0.742374368709084690, 0.742407867045896230, 0.742441363526688440, 0.742474858151376930, +0.742508350919878210, 0.742541841832108700, 0.742575330887984890, 0.742608818087422410, 0.742642303430337880, 0.742675786916647710, 0.742709268546268180, 0.742742748319115350, +0.742776226235105530, 0.742809702294155220, 0.742843176496180920, 0.742876648841098390, 0.742910119328824230, 0.742943587959274840, 0.742977054732366640, 0.743010519648015680, +0.743043982706138250, 0.743077443906651200, 0.743110903249470270, 0.743144360734512070, 0.743177816361693000, 0.743211270130929690, 0.743244722042137870, 0.743278172095234390, +0.743311620290135310, 0.743345066626757480, 0.743378511105016740, 0.743411953724829820, 0.743445394486112800, 0.743478833388782730, 0.743512270432755250, 0.743545705617947080, +0.743579138944274740, 0.743612570411654740, 0.743646000020003030, 0.743679427769236350, 0.743712853659271420, 0.743746277690023990, 0.743779699861410900, 0.743813120173348550, +0.743846538625753780, 0.743879955218542220, 0.743913369951630930, 0.743946782824936090, 0.743980193838374660, 0.744013602991862370, 0.744047010285316170, 0.744080415718652350, +0.744113819291787880, 0.744147221004638480, 0.744180620857121110, 0.744214018849152170, 0.744247414980648500, 0.744280809251525950, 0.744314201661701370, 0.744347592211091590, +0.744380980899612580, 0.744414367727181060, 0.744447752693713550, 0.744481135799127110, 0.744514517043337490, 0.744547896426261510, 0.744581273947815920, 0.744614649607917340, +0.744648023406481840, 0.744681395343426260, 0.744714765418667210, 0.744748133632121560, 0.744781499983705350, 0.744814864473335340, 0.744848227100928130, 0.744881587866400690, +0.744914946769668960, 0.744948303810649910, 0.744981658989260050, 0.745015012305416340, 0.745048363759034830, 0.745081713350032370, 0.745115061078325920, 0.745148406943831660, +0.745181750946466210, 0.745215093086146420, 0.745248433362789230, 0.745281771776310720, 0.745315108326627730, 0.745348443013656880, 0.745381775837315350, 0.745415106797518990, +0.745448435894184860, 0.745481763127229690, 0.745515088496570440, 0.745548412002123070, 0.745581733643804760, 0.745615053421532110, 0.745648371335222100, 0.745681687384790900, +0.745715001570155470, 0.745748313891232750, 0.745781624347939040, 0.745814932940191190, 0.745848239667906030, 0.745881544531000640, 0.745914847529391080, 0.745948148662994410, +0.745981447931727270, 0.746014745335506820, 0.746048040874249360, 0.746081334547871620, 0.746114626356290670, 0.746147916299423450, 0.746181204377186050, 0.746214490589495630, +0.746247774936269040, 0.746281057417423340, 0.746314338032874720, 0.746347616782540140, 0.746380893666336860, 0.746414168684181090, 0.746447441835989880, 0.746480713121680070, +0.746513982541168850, 0.746547250094372170, 0.746580515781207540, 0.746613779601591590, 0.746647041555441370, 0.746680301642673410, 0.746713559863204650, 0.746746816216951940, +0.746780070703832570, 0.746813323323762710, 0.746846574076659440, 0.746879822962439820, 0.746913069981020920, 0.746946315132319020, 0.746979558416251410, 0.747012799832734830, +0.747046039381686570, 0.747079277063022910, 0.747112512876661140, 0.747145746822518330, 0.747178978900510880, 0.747212209110555970, 0.747245437452570440, 0.747278663926471690, +0.747311888532176010, 0.747345111269600570, 0.747378332138662340, 0.747411551139278600, 0.747444768271365630, 0.747477983534840850, 0.747511196929621090, 0.747544408455623530, +0.747577618112764800, 0.747610825900961950, 0.747644031820131950, 0.747677235870192300, 0.747710438051059190, 0.747743638362650010, 0.747776836804882050, 0.747810033377671710, +0.747843228080936170, 0.747876420914592720, 0.747909611878558420, 0.747942800972749900, 0.747975988197084220, 0.748009173551478670, 0.748042357035850420, 0.748075538650116110, +0.748108718394192800, 0.748141896267997760, 0.748175072271448300, 0.748208246404460820, 0.748241418666952820, 0.748274589058841140, 0.748307757580043310, 0.748340924230475930, +0.748374089010056090, 0.748407251918701390, 0.748440412956328240, 0.748473572122854040, 0.748506729418195850, 0.748539884842271300, 0.748573038394996670, 0.748606190076289370, +0.748639339886066680, 0.748672487824245890, 0.748705633890743630, 0.748738778085477170, 0.748771920408363930, 0.748805060859321080, 0.748838199438265350, 0.748871336145114030, +0.748904470979784410, 0.748937603942194000, 0.748970735032259190, 0.749003864249897510, 0.749036991595026570, 0.749070117067562770, 0.749103240667423730, 0.749136362394526520, +0.749169482248788770, 0.749202600230126970, 0.749235716338458760, 0.749268830573701190, 0.749301942935771900, 0.749335053424587280, 0.749368162040065290, 0.749401268782122650, +0.749434373650677330, 0.749467476645645610, 0.749500577766945340, 0.749533677014493580, 0.749566774388207850, 0.749599869888004980, 0.749632963513802380, 0.749666055265517440, +0.749699145143067570, 0.749732233146369610, 0.749765319275341070, 0.749798403529899460, 0.749831485909961630, 0.749864566415444970, 0.749897645046266990, 0.749930721802345210, +0.749963796683596250, 0.749996869689937840, 0.750029940821287270, 0.750063010077562150, 0.750096077458679120, 0.750129142964556020, 0.750162206595110010, 0.750195268350258740, +0.750228328229919030, 0.750261386234008510, 0.750294442362444580, 0.750327496615144750, 0.750360548992025980, 0.750393599493005770, 0.750426648118001860, 0.750459694866930980, +0.750492739739710980, 0.750525782736259030, 0.750558823856492970, 0.750591863100329550, 0.750624900467686480, 0.750657935958481070, 0.750690969572631260, 0.750724001310053680, +0.750757031170666060, 0.750790059154385900, 0.750823085261130840, 0.750856109490817820, 0.750889131843364590, 0.750922152318688420, 0.750955170916707160, 0.750988187637337660, +0.751021202480497860, 0.751054215446105180, 0.751087226534076780, 0.751120235744330180, 0.751153243076783110, 0.751186248531353180, 0.751219252107957370, 0.751252253806513390, +0.751285253626938760, 0.751318251569151330, 0.751351247633067930, 0.751384241818606520, 0.751417234125684400, 0.751450224554219500, 0.751483213104128800, 0.751516199775330020, +0.751549184567740780, 0.751582167481278820, 0.751615148515861200, 0.751648127671405650, 0.751681104947829800, 0.751714080345051490, 0.751747053862987680, 0.751780025501556310, +0.751812995260675130, 0.751845963140261090, 0.751878929140232240, 0.751911893260506000, 0.751944855501000430, 0.751977815861632260, 0.752010774342319670, 0.752043730942980160, +0.752076685663531470, 0.752109638503890900, 0.752142589463976270, 0.752175538543705110, 0.752208485742995370, 0.752241431061764110, 0.752274374499929290, 0.752307316057408530, +0.752340255734119780, 0.752373193529980220, 0.752406129444907480, 0.752439063478819840, 0.752471995631634140, 0.752504925903268560, 0.752537854293640620, 0.752570780802668370, +0.752603705430268780, 0.752636628176360010, 0.752669549040859700, 0.752702468023685680, 0.752735385124755350, 0.752768300343986450, 0.752801213681296820, 0.752834125136604530, +0.752867034709826520, 0.752899942400880980, 0.752932848209685650, 0.752965752136158350, 0.752998654180216500, 0.753031554341777930, 0.753064452620760830, 0.753097349017082250, +0.753130243530660270, 0.753163136161412840, 0.753196026909257690, 0.753228915774112330, 0.753261802755894600, 0.753294687854522360, 0.753327571069913660, 0.753360452401985790, +0.753393331850656820, 0.753426209415844370, 0.753459085097466840, 0.753491958895441290, 0.753524830809685800, 0.753557700840118190, 0.753590568986656770, 0.753623435249218490, +0.753656299627721630, 0.753689162122084370, 0.753722022732223880, 0.753754881458058470, 0.753787738299505740, 0.753820593256483980, 0.753853446328910380, 0.753886297516703220, +0.753919146819780340, 0.753951994238059810, 0.753984839771459030, 0.754017683419896170, 0.754050525183289080, 0.754083365061556040, 0.754116203054614240, 0.754149039162381960, +0.754181873384777050, 0.754214705721717780, 0.754247536173121350, 0.754280364738906250, 0.754313191418990110, 0.754346016213291340, 0.754378839121727210, 0.754411660144215900, +0.754444479280675930, 0.754477296531024360, 0.754510111895179580, 0.754542925373059450, 0.754575736964582360, 0.754608546669665590, 0.754641354488227560, 0.754674160420185980, +0.754706964465459370, 0.754739766623965140, 0.754772566895621440, 0.754805365280346250, 0.754838161778057960, 0.754870956388674070, 0.754903749112112780, 0.754936539948292020, +0.754969328897130200, 0.755002115958544830, 0.755034901132454190, 0.755067684418776590, 0.755100465817429400, 0.755133245328331150, 0.755166022951399670, 0.755198798686553490, +0.755231572533710090, 0.755264344492787680, 0.755297114563704410, 0.755329882746378580, 0.755362649040727810, 0.755395413446670490, 0.755428175964124590, 0.755460936593008500, +0.755493695333239850, 0.755526452184736910, 0.755559207147417870, 0.755591960221201010, 0.755624711406004070, 0.755657460701745330, 0.755690208108343200, 0.755722953625715290, +0.755755697253780000, 0.755788438992455400, 0.755821178841660110, 0.755853916801311530, 0.755886652871328060, 0.755919387051628090, 0.755952119342129910, 0.755984849742751040, +0.756017578253410210, 0.756050304874025360, 0.756083029604515010, 0.756115752444796780, 0.756148473394789300, 0.756181192454410510, 0.756213909623579040, 0.756246624902212620, +0.756279338290229530, 0.756312049787548070, 0.756344759394086850, 0.756377467109763390, 0.756410172934496310, 0.756442876868204110, 0.756475578910804410, 0.756508279062215630, +0.756540977322356260, 0.756573673691144810, 0.756606368168498800, 0.756639060754336850, 0.756671751448577350, 0.756704440251138700, 0.756737127161938640, 0.756769812180895670, +0.756802495307928310, 0.756835176542954740, 0.756867855885893110, 0.756900533336662520, 0.756933208895179900, 0.756965882561364320, 0.756998554335134080, 0.757031224216407450, +0.757063892205102730, 0.757096558301138310, 0.757129222504433040, 0.757161884814904100, 0.757194545232470540, 0.757227203757050550, 0.757259860388562520, 0.757292515126924970, +0.757325167972055960, 0.757357818923874220, 0.757390467982298370, 0.757423115147245810, 0.757455760418635380, 0.757488403796385710, 0.757521045280414970, 0.757553684870641560, +0.757586322566983990, 0.757618958369360550, 0.757651592277690410, 0.757684224291890640, 0.757716854411880410, 0.757749482637577910, 0.757782108968901750, 0.757814733405770320, +0.757847355948102040, 0.757879976595815960, 0.757912595348829270, 0.757945212207061240, 0.757977827170430050, 0.758010440238854440, 0.758043051412252700, 0.758075660690543220, +0.758108268073644620, 0.758140873561476080, 0.758173477153954670, 0.758206078850999440, 0.758238678652529140, 0.758271276558462160, 0.758303872568717010, 0.758336466683212200, +0.758369058901866680, 0.758401649224597960, 0.758434237651325120, 0.758466824181966760, 0.758499408816441290, 0.758531991554667330, 0.758564572396563270, 0.758597151342047970, +0.758629728391040260, 0.758662303543457650, 0.758694876799219320, 0.758727448158243780, 0.758760017620449530, 0.758792585185755430, 0.758825150854079760, 0.758857714625341130, +0.758890276499458950, 0.758922836476350390, 0.758955394555934750, 0.758987950738130630, 0.759020505022856670, 0.759053057410031480, 0.759085607899573580, 0.759118156491402240, +0.759150703185434980, 0.759183247981590980, 0.759215790879788740, 0.759248331879947110, 0.759280870981984600, 0.759313408185819940, 0.759345943491371740, 0.759378476898559310, +0.759411008407300140, 0.759443538017513410, 0.759476065729117740, 0.759508591542031990, 0.759541115456174860, 0.759573637471464780, 0.759606157587820690, 0.759638675805161760, +0.759671192123405610, 0.759703706542471440, 0.759736219062277950, 0.759768729682744000, 0.759801238403788100, 0.759833745225329200, 0.759866250147286590, 0.759898753169577670, +0.759931254292121830, 0.759963753514838030, 0.759996250837644660, 0.760028746260460690, 0.760061239783204940, 0.760093731405796060, 0.760126221128153420, 0.760158708950194660, +0.760191194871839170, 0.760223678893005570, 0.760256161013612820, 0.760288641233579750, 0.760321119552825000, 0.760353595971268060, 0.760386070488826560, 0.760418543105419900, +0.760451013820966800, 0.760483482635386230, 0.760515949548596910, 0.760548414560517800, 0.760580877671067520, 0.760613338880165690, 0.760645798187730040, 0.760678255593679740, +0.760710711097933870, 0.760743164700411260, 0.760775616401030640, 0.760808066199711090, 0.760840514096371320, 0.760872960090930860, 0.760905404183307430, 0.760937846373420430, +0.760970286661188820, 0.761002725046531550, 0.761035161529367450, 0.761067596109615390, 0.761100028787194960, 0.761132459562023910, 0.761164888434021750, 0.761197315403107310, +0.761229740469199560, 0.761262163632217440, 0.761294584892080020, 0.761327004248706030, 0.761359421702015090, 0.761391837251925160, 0.761424250898355530, 0.761456662641225250, +0.761489072480453390, 0.761521480415958800, 0.761553886447660530, 0.761586290575478220, 0.761618692799329480, 0.761651093119134040, 0.761683491534810850, 0.761715888046278880, +0.761748282653457290, 0.761780675356264920, 0.761813066154620970, 0.761845455048444810, 0.761877842037654520, 0.761910227122169600, 0.761942610301909130, 0.761974991576792050, +0.762007370946737540, 0.762039748411664660, 0.762072123971492380, 0.762104497626140300, 0.762136869375526490, 0.762169239219570470, 0.762201607158191300, 0.762233973191308150, +0.762266337318840080, 0.762298699540706170, 0.762331059856826140, 0.762363418267117840, 0.762395774771501000, 0.762428129369894680, 0.762460482062218060, 0.762492832848390200, +0.762525181728330280, 0.762557528701957480, 0.762589873769191410, 0.762622216929950030, 0.762654558184153180, 0.762686897531719810, 0.762719234972569330, 0.762751570506620680, +0.762783904133793160, 0.762816235854005820, 0.762848565667178510, 0.762880893573229190, 0.762913219572077580, 0.762945543663642980, 0.762977865847844550, 0.763010186124601360, +0.763042504493832820, 0.763074820955458530, 0.763107135509396680, 0.763139448155566890, 0.763171758893888550, 0.763204067724280840, 0.763236374646662830, 0.763268679660954020, +0.763300982767073480, 0.763333283964941050, 0.763365583254474790, 0.763397880635594660, 0.763430176108219730, 0.763462469672269380, 0.763494761327662920, 0.763527051074319510, +0.763559338912159100, 0.763591624841099660, 0.763623908861061240, 0.763656190971963020, 0.763688471173724400, 0.763720749466264560, 0.763753025849502780, 0.763785300323358450, +0.763817572887751430, 0.763849843542599990, 0.763882112287823880, 0.763914379123342590, 0.763946644049075200, 0.763978907064941310, 0.764011168170860120, 0.764043427366751020, +0.764075684652533840, 0.764107940028126990, 0.764140193493450190, 0.764172445048422970, 0.764204694692964700, 0.764236942426994580, 0.764269188250432220, 0.764301432163197350, +0.764333674165208370, 0.764365914256385230, 0.764398152436647220, 0.764430388705913950, 0.764462623064104620, 0.764494855511138720, 0.764527086046935760, 0.764559314671415580, +0.764591541384496590, 0.764623766186098730, 0.764655989076141520, 0.764688210054544240, 0.764720429121226510, 0.764752646276107620, 0.764784861519107180, 0.764817074850145160, +0.764849286269139840, 0.764881495776011390, 0.764913703370679100, 0.764945909053062590, 0.764978112823081370, 0.765010314680654720, 0.765042514625702940, 0.765074712658144310, +0.765106908777898890, 0.765139102984886190, 0.765171295279025830, 0.765203485660237100, 0.765235674128439740, 0.765267860683553120, 0.765300045325497450, 0.765332228054191100, +0.765364408869554260, 0.765396587771506320, 0.765428764759966910, 0.765460939834855520, 0.765493112996091910, 0.765525284243596000, 0.765557453577286440, 0.765589620997083050, +0.765621786502905800, 0.765653950094673960, 0.765686111772307280, 0.765718271535725360, 0.765750429384847720, 0.765782585319594530, 0.765814739339884310, 0.765846891445637330, +0.765879041636773120, 0.765911189913211170, 0.765943336274871430, 0.765975480721673210, 0.766007623253536330, 0.766039763870380970, 0.766071902572125650, 0.766104039358690540, +0.766136174229995360, 0.766168307185959740, 0.766200438226503300, 0.766232567351545880, 0.766264694561007540, 0.766296819854806910, 0.766328943232864160, 0.766361064695099130, +0.766393184241431440, 0.766425301871780710, 0.766457417586066780, 0.766489531384209280, 0.766521643266128590, 0.766553753231743240, 0.766585861280973390, 0.766617967413739000, +0.766650071629959570, 0.766682173929555070, 0.766714274312445100, 0.766746372778549400, 0.766778469327788370, 0.766810563960080630, 0.766842656675346460, 0.766874747473505700, +0.766906836354477980, 0.766938923318183250, 0.766971008364541130, 0.767003091493472120, 0.767035172704894740, 0.767067251998729490, 0.767099329374896110, 0.767131404833314430, +0.767163478373904200, 0.767195549996585240, 0.767227619701277510, 0.767259687487901190, 0.767291753356375120, 0.767323817306619690, 0.767355879338554650, 0.767387939452100040, +0.767419997647175500, 0.767452053923700970, 0.767484108281596860, 0.767516160720781880, 0.767548211241176560, 0.767580259842700730, 0.767612306525274240, 0.767644351288816920, +0.767676394133248730, 0.767708435058489620, 0.767740474064460000, 0.767772511151078580, 0.767804546318265890, 0.767836579565941870, 0.767868610894026360, 0.767900640302439320, +0.767932667791100700, 0.767964693359930340, 0.767996717008848860, 0.768028738737775110, 0.768060758546629360, 0.768092776435331800, 0.768124792403802380, 0.768156806451960830, +0.768188818579727320, 0.768220828787022360, 0.768252837073764680, 0.768284843439875020, 0.768316847885273210, 0.768348850409879210, 0.768380851013613200, 0.768412849696395010, +0.768444846458144700, 0.768476841298782800, 0.768508834218228240, 0.768540825216401660, 0.768572814293222990, 0.768604801448612210, 0.768636786682489580, 0.768668769994774850, +0.768700751385388180, 0.768732730854250310, 0.768764708401279970, 0.768796684026397890, 0.768828657729524020, 0.768860629510578650, 0.768892599369481620, 0.768924567306153110, +0.768956533320513720, 0.768988497412482540, 0.769020459581979950, 0.769052419828926360, 0.769084378153241600, 0.769116334554845960, 0.769148289033659500, 0.769180241589602300, +0.769212192222595070, 0.769244140932556770, 0.769276087719408030, 0.769308032583069230, 0.769339975523460230, 0.769371916540501410, 0.769403855634112730, 0.769435792804214920, +0.769467728050727160, 0.769499661373570070, 0.769531592772663810, 0.769563522247928570, 0.769595449799284510, 0.769627375426651830, 0.769659299129950680, 0.769691220909101910, +0.769723140764024480, 0.769755058694639230, 0.769786974700866320, 0.769818888782625940, 0.769850800939838380, 0.769882711172423790, 0.769914619480302490, 0.769946525863395070, +0.769978430321620940, 0.770010332854900610, 0.770042233463154480, 0.770074132146302830, 0.770106028904265830, 0.770137923736963660, 0.770169816644317380, 0.770201707626245850, +0.770233596682670110, 0.770265483813510450, 0.770297369018686950, 0.770329252298120220, 0.770361133651730200, 0.770393013079437420, 0.770424890581162590, 0.770456766156825010, +0.770488639806345520, 0.770520511529644400, 0.770552381326642060, 0.770584249197258760, 0.770616115141414810, 0.770647979159031160, 0.770679841250026980, 0.770711701414323210, +0.770743559651840270, 0.770775415962498320, 0.770807270346217770, 0.770839122802919220, 0.770870973332522750, 0.770902821934949410, 0.770934668610118500, 0.770966513357950860, +0.770998356178366980, 0.771030197071287170, 0.771062036036631930, 0.771093873074321530, 0.771125708184276500, 0.771157541366417790, 0.771189372620664670, 0.771221201946938000, +0.771253029345158380, 0.771284854815246220, 0.771316678357121920, 0.771348499970705870, 0.771380319655919240, 0.771412137412681220, 0.771443953240912750, 0.771475767140534450, +0.771507579111466830, 0.771539389153630180, 0.771571197266945010, 0.771603003451331930, 0.771634807706711890, 0.771666610033004190, 0.771698410430130100, 0.771730208898009920, +0.771762005436564150, 0.771793800045713410, 0.771825592725378210, 0.771857383475478940, 0.771889172295936900, 0.771920959186671360, 0.771952744147603290, 0.771984527178653510, +0.772016308279742320, 0.772048087450790340, 0.772079864691718190, 0.772111640002446920, 0.772143413382896050, 0.772175184832986530, 0.772206954352639200, 0.772238721941774340, +0.772270487600312800, 0.772302251328174980, 0.772334013125281490, 0.772365772991553620, 0.772397530926910660, 0.772429286931273880, 0.772461041004563920, 0.772492793146701380, +0.772524543357606900, 0.772556291637200960, 0.772588037985404870, 0.772619782402138130, 0.772651524887322030, 0.772683265440876950, 0.772715004062723860, 0.772746740752783160, +0.772778475510975670, 0.772810208337221920, 0.772841939231443290, 0.772873668193559290, 0.772905395223491000, 0.772937120321159240, 0.772968843486484760, 0.773000564719388050, +0.773032284019790070, 0.773064001387611330, 0.773095716822773120, 0.773127430325195040, 0.773159141894798400, 0.773190851531503910, 0.773222559235232310, 0.773254265005904330, +0.773285968843440590, 0.773317670747762590, 0.773349370718789840, 0.773381068756443630, 0.773412764860644810, 0.773444459031313980, 0.773476151268372100, 0.773507841571739800, +0.773539529941337790, 0.773571216377087700, 0.773602900878908930, 0.773634583446722870, 0.773666264080450360, 0.773697942780012250, 0.773729619545329260, 0.773761294376322130, +0.773792967272911910, 0.773824638235019790, 0.773856307262565490, 0.773887974355470410, 0.773919639513655390, 0.773951302737041270, 0.773982964025549000, 0.774014623379099210, +0.774046280797613400, 0.774077936281011400, 0.774109589829214520, 0.774141241442143690, 0.774172891119719760, 0.774204538861863580, 0.774236184668496090, 0.774267828539538130, +0.774299470474911100, 0.774331110474534840, 0.774362748538330870, 0.774394384666220010, 0.774426018858123230, 0.774457651113961370, 0.774489281433655360, 0.774520909817126620, +0.774552536264295210, 0.774584160775082300, 0.774615783349409170, 0.774647403987196450, 0.774679022688365300, 0.774710639452836470, 0.774742254280531120, 0.774773867171370760, +0.774805478125275120, 0.774837087142165700, 0.774868694221963690, 0.774900299364589930, 0.774931902569965360, 0.774963503838011050, 0.774995103168647950, 0.775026700561797680, +0.775058296017380190, 0.775089889535316880, 0.775121481115528810, 0.775153070757937050, 0.775184658462462650, 0.775216244229026570, 0.775247828057550550, 0.775279409947954300, +0.775310989900159450, 0.775342567914087290, 0.775374143989658650, 0.775405718126794600, 0.775437290325416310, 0.775468860585444730, 0.775500428906801600, 0.775531995289406860, +0.775563559733182140, 0.775595122238048500, 0.775626682803926990, 0.775658241430738920, 0.775689798118405100, 0.775721352866846850, 0.775752905675985760, 0.775784456545741910, +0.775816005476036800, 0.775847552466791820, 0.775879097517927830, 0.775910640629366210, 0.775942181801027920, 0.775973721032834800, 0.776005258324706680, 0.776036793676565530, +0.776068327088332400, 0.776099858559928360, 0.776131388091274800, 0.776162915682292680, 0.776194441332903270, 0.776225965043028320, 0.776257486812587880, 0.776289006641503800, +0.776320524529697130, 0.776352040477089280, 0.776383554483601190, 0.776415066549154260, 0.776446576673670230, 0.776478084857069150, 0.776509591099272870, 0.776541095400202660, +0.776572597759779710, 0.776604098177925310, 0.776635596654560610, 0.776667093189606920, 0.776698587782986060, 0.776730080434618110, 0.776761571144425010, 0.776793059912327940, +0.776824546738248300, 0.776856031622107260, 0.776887514563826100, 0.776918995563326220, 0.776950474620529350, 0.776981951735355780, 0.777013426907727340, 0.777044900137565330, +0.777076371424791020, 0.777107840769325820, 0.777139308171091000, 0.777170773630008530, 0.777202237145998450, 0.777233698718982850, 0.777265158348883100, 0.777296616035620280, +0.777328071779116000, 0.777359525579291550, 0.777390977436068330, 0.777422427349368170, 0.777453875319111360, 0.777485321345219860, 0.777516765427615050, 0.777548207566218340, +0.777579647760951230, 0.777611086011734900, 0.777642522318490850, 0.777673956681141030, 0.777705389099605740, 0.777736819573807030, 0.777768248103666290, 0.777799674689104940, +0.777831099330044350, 0.777862522026406040, 0.777893942778111970, 0.777925361585082520, 0.777956778447239650, 0.777988193364504750, 0.778019606336799450, 0.778051017364045140, +0.778082426446163320, 0.778113833583075400, 0.778145238774703430, 0.778176642020967810, 0.778208043321790610, 0.778239442677093220, 0.778270840086797260, 0.778302235550824230, +0.778333629069095640, 0.778365020641533460, 0.778396410268058280, 0.778427797948591960, 0.778459183683056220, 0.778490567471372460, 0.778521949313462410, 0.778553329209247360, +0.778584707158649030, 0.778616083161589480, 0.778647457217989110, 0.778678829327770220, 0.778710199490854180, 0.778741567707162630, 0.778772933976617180, 0.778804298299139440, +0.778835660674650930, 0.778867021103073820, 0.778898379584328500, 0.778929736118337380, 0.778961090705021840, 0.778992443344303620, 0.779023794036104220, 0.779055142780345380, +0.779086489576949370, 0.779117834425836380, 0.779149177326928900, 0.779180518280148450, 0.779211857285416750, 0.779243194342655320, 0.779274529451785990, 0.779305862612730270, +0.779337193825410450, 0.779368523089747130, 0.779399850405662510, 0.779431175773078300, 0.779462499191916010, 0.779493820662097600, 0.779525140183544570, 0.779556457756179320, +0.779587773379922360, 0.779619087054695850, 0.779650398780421750, 0.779681708557021570, 0.779713016384417150, 0.779744322262530210, 0.779775626191282490, 0.779806928170596160, +0.779838228200392060, 0.779869526280592360, 0.779900822411118800, 0.779932116591893210, 0.779963408822837320, 0.779994699103872980, 0.780025987434921800, 0.780057273815906280, +0.780088558246746940, 0.780119840727366290, 0.780151121257685930, 0.780182399837627830, 0.780213676467113700, 0.780244951146065510, 0.780276223874405320, 0.780307494652054180, +0.780338763478934160, 0.780370030354967330, 0.780401295280075400, 0.780432558254180230, 0.780463819277203650, 0.780495078349067510, 0.780526335469694190, 0.780557590639004540, +0.780588843856920960, 0.780620095123365170, 0.780651344438259230, 0.780682591801524880, 0.780713837213084070, 0.780745080672858640, 0.780776322180771090, 0.780807561736742150, +0.780838799340694330, 0.780870034992549480, 0.780901268692229640, 0.780932500439656560, 0.780963730234752180, 0.780994958077439130, 0.781026183967638010, 0.781057407905271560, +0.781088629890261510, 0.781119849922529920, 0.781151068001998630, 0.781182284128589810, 0.781213498302225200, 0.781244710522827400, 0.781275920790317270, 0.781307129104617300, +0.781338335465649570, 0.781369539873335910, 0.781400742327598490, 0.781431942828359260, 0.781463141375540630, 0.781494337969063650, 0.781525532608850830, 0.781556725294824120, +0.781587916026905580, 0.781619104805017280, 0.781650291629081280, 0.781681476499019530, 0.781712659414754540, 0.781743840376207480, 0.781775019383300740, 0.781806196435956500, +0.781837371534096710, 0.781868544677643550, 0.781899715866518960, 0.781930885100645230, 0.781962052379944650, 0.781993217704338490, 0.782024381073749280, 0.782055542488099160, +0.782086701947310110, 0.782117859451304300, 0.782149015000003890, 0.782180168593331500, 0.782211320231208100, 0.782242469913556390, 0.782273617640298570, 0.782304763411356690, +0.782335907226652800, 0.782367049086109210, 0.782398188989648080, 0.782429326937191920, 0.782460462928662000, 0.782491596963980740, 0.782522729043070630, 0.782553859165853630, +0.782584987332252120, 0.782616113542187960, 0.782647237795583650, 0.782678360092361690, 0.782709480432443370, 0.782740598815751310, 0.782771715242207790, 0.782802829711734980, +0.782833942224255060, 0.782865052779690210, 0.782896161377963360, 0.782927268018995590, 0.782958372702709630, 0.782989475429027750, 0.783020576197872130, 0.783051675009165060, +0.783082771862828820, 0.783113866758785690, 0.783144959696958410, 0.783176050677268250, 0.783207139699637840, 0.783238226763989690, 0.783269311870245950, 0.783300395018328930, +0.783331476208160900, 0.783362555439664710, 0.783393632712761630, 0.783424708027374410, 0.783455781383425530, 0.783486852780837070, 0.783517922219531540, 0.783548989699431210, +0.783580055220458370, 0.783611118782535980, 0.783642180385585200, 0.783673240029528980, 0.783704297714289730, 0.783735353439789730, 0.783766407205951250, 0.783797459012696820, +0.783828508859948700, 0.783859556747629860, 0.783890602675661690, 0.783921646643966910, 0.783952688652468030, 0.783983728701087460, 0.784014766789747460, 0.784045802918370670, +0.784076837086879920, 0.784107869295196380, 0.784138899543243340, 0.784169927830942970, 0.784200954158217780, 0.784231978524990270, 0.784263000931182730, 0.784294021376717780, +0.784325039861518250, 0.784356056385505540, 0.784387070948602720, 0.784418083550732280, 0.784449094191816520, 0.784480102871778160, 0.784511109590539490, 0.784542114348023010, +0.784573117144151900, 0.784604117978847330, 0.784635116852032470, 0.784666113763629820, 0.784697108713561910, 0.784728101701751330, 0.784759092728120390, 0.784790081792592240, +0.784821068895088400, 0.784852054035531820, 0.784883037213845220, 0.784914018429950900, 0.784944997683771570, 0.784975974975229860, 0.785006950304248050, 0.785037923670749540, +0.785068895074655600, 0.785099864515889420, 0.785130831994373610, 0.785161797510030680, 0.785192761062783350, 0.785223722652554020, 0.785254682279265980, 0.785285639942840620, +0.785316595643201330, 0.785347549380270400, 0.785378501153970570, 0.785409450964224540, 0.785440398810954950, 0.785471344694084310, 0.785502288613535880, 0.785533230569231080, +0.785564170561093290, 0.785595108589045130, 0.785626044653009110, 0.785656978752907960, 0.785687910888664410, 0.785718841060201070, 0.785749769267441220, 0.785780695510306380, +0.785811619788719720, 0.785842542102604070, 0.785873462451882050, 0.785904380836476400, 0.785935297256309840, 0.785966211711305540, 0.785997124201385120, 0.786028034726471980, +0.786058943286488620, 0.786089849881357990, 0.786120754511002830, 0.786151657175345630, 0.786182557874309350, 0.786213456607817160, 0.786244353375790910, 0.786275248178153750, +0.786306141014828320, 0.786337031885737670, 0.786367920790804420, 0.786398807729951410, 0.786429692703101260, 0.786460575710177580, 0.786491456751101770, 0.786522335825797450, +0.786553212934187230, 0.786584088076193950, 0.786614961251740460, 0.786645832460749590, 0.786676701703144630, 0.786707568978847420, 0.786738434287781230, 0.786769297629869020, +0.786800159005033640, 0.786831018413197690, 0.786861875854284350, 0.786892731328216240, 0.786923584834916870, 0.786954436374307950, 0.786985285946313010, 0.787016133550854760, +0.787046979187856270, 0.787077822857240260, 0.787108664558929690, 0.787139504292848070, 0.787170342058917120, 0.787201177857060340, 0.787232011687200580, 0.787262843549260790, +0.787293673443163920, 0.787324501368832810, 0.787355327326190510, 0.787386151315160430, 0.787416973335664410, 0.787447793387625940, 0.787478611470967980, 0.787509427585613490, +0.787540241731485510, 0.787571053908506900, 0.787601864116600600, 0.787632672355690230, 0.787663478625697520, 0.787694282926546310, 0.787725085258159210, 0.787755885620459510, +0.787786684013370040, 0.787817480436813990, 0.787848274890714630, 0.787879067374994020, 0.787909857889575900, 0.787940646434383000, 0.787971433009338580, 0.788002217614365510, +0.788033000249386940, 0.788063780914325830, 0.788094559609105790, 0.788125336333648900, 0.788156111087878640, 0.788186883871717980, 0.788217654685090310, 0.788248423527918350, +0.788279190400125400, 0.788309955301634950, 0.788340718232369180, 0.788371479192251590, 0.788402238181205250, 0.788432995199153330, 0.788463750246018890, 0.788494503321725100, +0.788525254426195030, 0.788556003559352400, 0.788586750721119280, 0.788617495911419280, 0.788648239130175450, 0.788678980377310990, 0.788709719652749160, 0.788740456956413040, +0.788771192288225790, 0.788801925648111020, 0.788832657035990930, 0.788863386451789220, 0.788894113895429070, 0.788924839366833550, 0.788955562865925940, 0.788986284392629520, +0.789017003946867910, 0.789047721528563170, 0.789078437137639140, 0.789109150774019110, 0.789139862437626130, 0.789170572128383490, 0.789201279846214470, 0.789231985591042130, +0.789262689362790540, 0.789293391161381530, 0.789324090986739170, 0.789354788838786510, 0.789385484717446850, 0.789416178622643570, 0.789446870554299740, 0.789477560512338860, +0.789508248496684550, 0.789538934507259090, 0.789569618543986220, 0.789600300606789430, 0.789630980695591790, 0.789661658810316690, 0.789692334950887530, 0.789723009117228040, +0.789753681309260490, 0.789784351526908730, 0.789815019770096050, 0.789845686038745830, 0.789876350332781470, 0.789907012652126150, 0.789937672996703370, 0.789968331366436960, +0.789998987761249110, 0.790029642181063750, 0.790060294625804400, 0.790090945095394240, 0.790121593589756750, 0.790152240108815240, 0.790182884652493760, 0.790213527220714470, +0.790244167813401340, 0.790274806430477870, 0.790305443071867230, 0.790336077737493150, 0.790366710427278800, 0.790397341141147680, 0.790427969879023750, 0.790458596640829290, +0.790489221426488480, 0.790519844235924470, 0.790550465069060900, 0.790581083925821270, 0.790611700806128860, 0.790642315709907170, 0.790672928637080160, 0.790703539587570450, +0.790734148561301750, 0.790764755558197810, 0.790795360578181890, 0.790825963621177630, 0.790856564687108410, 0.790887163775898290, 0.790917760887469790, 0.790948356021746850, +0.790978949178653080, 0.791009540358111880, 0.791040129560046880, 0.791070716784381460, 0.791101302031039340, 0.791131885299944490, 0.791162466591019410, 0.791193045904188040, +0.791223623239374120, 0.791254198596501150, 0.791284771975492740, 0.791315343376272410, 0.791345912798763650, 0.791376480242890650, 0.791407045708575900, 0.791437609195743570, +0.791468170704317190, 0.791498730234220460, 0.791529287785376790, 0.791559843357710010, 0.791590396951144080, 0.791620948565601610, 0.791651498201006890, 0.791682045857283300, +0.791712591534354690, 0.791743135232144570, 0.791773676950576540, 0.791804216689574350, 0.791834754449062260, 0.791865290228962570, 0.791895824029199780, 0.791926355849697390, +0.791956885690379140, 0.791987413551168640, 0.792017939431989610, 0.792048463332766350, 0.792078985253421350, 0.792109505193878790, 0.792140023154062510, 0.792170539133896230, +0.792201053133303580, 0.792231565152208270, 0.792262075190534150, 0.792292583248205280, 0.792323089325144390, 0.792353593421275870, 0.792384095536523340, 0.792414595670810520, +0.792445093824061250, 0.792475589996199270, 0.792506084187148300, 0.792536576396832610, 0.792567066625174950, 0.792597554872099600, 0.792628041137530490, 0.792658525421391150, +0.792689007723605620, 0.792719488044097420, 0.792749966382791160, 0.792780442739609460, 0.792810917114476490, 0.792841389507316420, 0.792871859918052760, 0.792902328346609450, +0.792932794792910340, 0.792963259256879270, 0.792993721738440630, 0.793024182237517030, 0.793054640754033090, 0.793085097287912430, 0.793115551839079110, 0.793146004407456860, +0.793176454992969630, 0.793206903595541360, 0.793237350215096230, 0.793267794851557180, 0.793298237504848740, 0.793328678174894610, 0.793359116861618860, 0.793389553564945340, +0.793419988284797870, 0.793450421021100970, 0.793480851773777470, 0.793511280542751880, 0.793541707327948150, 0.793572132129290010, 0.793602554946701620, 0.793632975780106830, +0.793663394629429590, 0.793693811494594500, 0.793724226375524200, 0.793754639272143400, 0.793785050184376060, 0.793815459112146020, 0.793845866055377320, 0.793876271013993940, +0.793906673987920470, 0.793937074977079770, 0.793967473981396440, 0.793997871000794330, 0.794028266035197610, 0.794058659084530220, 0.794089050148716110, 0.794119439227679360, +0.794149826321344680, 0.794180211429634800, 0.794210594552474450, 0.794240975689787580, 0.794271354841498240, 0.794301732007530630, 0.794332107187808560, 0.794362480382256320, +0.794392851590798310, 0.794423220813357700, 0.794453588049858990, 0.794483953300226360, 0.794514316564383870, 0.794544677842255580, 0.794575037133765540, 0.794605394438838490, +0.794635749757397480, 0.794666103089366920, 0.794696454434671300, 0.794726803793234460, 0.794757151164980580, 0.794787496549833830, 0.794817839947718370, 0.794848181358558840, +0.794878520782278280, 0.794908858218801420, 0.794939193668052440, 0.794969527129955500, 0.794999858604434670, 0.795030188091414350, 0.795060515590818360, 0.795090841102571780, +0.795121164626597430, 0.795151486162820280, 0.795181805711164370, 0.795212123271553880, 0.795242438843913210, 0.795272752428166420, 0.795303064024238230, 0.795333373632051810, +0.795363681251532010, 0.795393986882602990, 0.795424290525189040, 0.795454592179214330, 0.795484891844603140, 0.795515189521279750, 0.795545485209168900, 0.795575778908193860, +0.795606070618279260, 0.795636360339349590, 0.795666648071328920, 0.795696933814141750, 0.795727217567712140, 0.795757499331965050, 0.795787779106823740, 0.795818056892212860, +0.795848332688056990, 0.795878606494280110, 0.795908878310806810, 0.795939148137561390, 0.795969415974468020, 0.795999681821451640, 0.796029945678435550, 0.796060207545344570, +0.796090467422103100, 0.796120725308635420, 0.796150981204865940, 0.796181235110719030, 0.796211487026118990, 0.796241736950990760, 0.796271984885257740, 0.796302230828844660, +0.796332474781676130, 0.796362716743676310, 0.796392956714769730, 0.796423194694880760, 0.796453430683934260, 0.796483664681853720, 0.796513896688564090, 0.796544126703989660, +0.796574354728054820, 0.796604580760684190, 0.796634804801802150, 0.796665026851333000, 0.796695246909201900, 0.796725464975332030, 0.796755681049648670, 0.796785895132075980, +0.796816107222538590, 0.796846317320960900, 0.796876525427267390, 0.796906731541382700, 0.796936935663231650, 0.796967137792737650, 0.796997337929825860, 0.797027536074420780, +0.797057732226446820, 0.797087926385828480, 0.797118118552490370, 0.797148308726357560, 0.797178496907353320, 0.797208683095402940, 0.797238867290430810, 0.797269049492361550, +0.797299229701119660, 0.797329407916629650, 0.797359584138816140, 0.797389758367604170, 0.797419930602917380, 0.797450100844680600, 0.797480269092818660, 0.797510435347256070, +0.797540599607917340, 0.797570761874727200, 0.797600922147610580, 0.797631080426491220, 0.797661236711294070, 0.797691391001943860, 0.797721543298365200, 0.797751693600482700, +0.797781841908220880, 0.797811988221504450, 0.797842132540258710, 0.797872274864407040, 0.797902415193874610, 0.797932553528586270, 0.797962689868466410, 0.797992824213439980, +0.798022956563431360, 0.798053086918365410, 0.798083215278167280, 0.798113341642760600, 0.798143466012070530, 0.798173588386021820, 0.798203708764539050, 0.798233827147547090, +0.798263943534970540, 0.798294057926734690, 0.798324170322763150, 0.798354280722981200, 0.798384389127313470, 0.798414495535684890, 0.798444599948019970, 0.798474702364243560, +0.798504802784280490, 0.798534901208055810, 0.798564997635493490, 0.798595092066518570, 0.798625184501055910, 0.798655274939030320, 0.798685363380366550, 0.798715449824989430, +0.798745534272824130, 0.798775616723794490, 0.798805697177825790, 0.798835775634842870, 0.798865852094770570, 0.798895926557533500, 0.798925999023056720, 0.798956069491264960, +0.798986137962083510, 0.799016204435436190, 0.799046268911248300, 0.799076331389444890, 0.799106391869950580, 0.799136450352690210, 0.799166506837588830, 0.799196561324571060, +0.799226613813562530, 0.799256664304486830, 0.799286712797269590, 0.799316759291835540, 0.799346803788109520, 0.799376846286016460, 0.799406886785481440, 0.799436925286429620, +0.799466961788785070, 0.799496996292472950, 0.799527028797418440, 0.799557059303546370, 0.799587087810781580, 0.799617114319049140, 0.799647138828273870, 0.799677161338381290, +0.799707181849295350, 0.799737200360941420, 0.799767216873244480, 0.799797231386129460, 0.799827243899521310, 0.799857254413345210, 0.799887262927525880, 0.799917269441988930, +0.799947273956658320, 0.799977276471459440, 0.800007276986317350, 0.800037275501157220, 0.800067272015903770, 0.800097266530482190, 0.800127259044817960, 0.800157249558835160, +0.800187238072459060, 0.800217224585614950, 0.800247209098227770, 0.800277191610222590, 0.800307172121524470, 0.800337150632058240, 0.800367127141749850, 0.800397101650523020, +0.800427074158303500, 0.800457044665016220, 0.800487013170586350, 0.800516979674939070, 0.800546944177999210, 0.800576906679692500, 0.800606867179943120, 0.800636825678676440, +0.800666782175817770, 0.800696736671292040, 0.800726689165024650, 0.800756639656940440, 0.800786588146964570, 0.800816534635022890, 0.800846479121039230, 0.800876421604939440, +0.800906362086648560, 0.800936300566091770, 0.800966237043194250, 0.800996171517881160, 0.801026103990077680, 0.801056034459709410, 0.801085962926700420, 0.801115889390976670, +0.801145813852463200, 0.801175736311085070, 0.801205656766767690, 0.801235575219436220, 0.801265491669016280, 0.801295406115432040, 0.801325318558609330, 0.801355228998473330, +0.801385137434949210, 0.801415043867962360, 0.801444948297437840, 0.801474850723300940, 0.801504751145477370, 0.801534649563891530, 0.801564545978468930, 0.801594440389135080, +0.801624332795815020, 0.801654223198434270, 0.801684111596917880, 0.801713997991191140, 0.801743882381180110, 0.801773764766808730, 0.801803645148002950, 0.801833523524688060, +0.801863399896789340, 0.801893274264232180, 0.801923146626941750, 0.801953016984844000, 0.801982885337863220, 0.802012751685925230, 0.802042616028955440, 0.802072478366878890, +0.802102338699621330, 0.802132197027107920, 0.802162053349263940, 0.802191907666015340, 0.802221759977286510, 0.802251610283003290, 0.802281458583090970, 0.802311304877475040, +0.802341149166080900, 0.802370991448833840, 0.802400831725659790, 0.802430669996483160, 0.802460506261229890, 0.802490340519825260, 0.802520172772194900, 0.802550003018264070, +0.802579831257958180, 0.802609657491202830, 0.802639481717923760, 0.802669303938045480, 0.802699124151493910, 0.802728942358194590, 0.802758758558072880, 0.802788572751054310, +0.802818384937064260, 0.802848195116028340, 0.802878003287872400, 0.802907809452520830, 0.802937613609899900, 0.802967415759934800, 0.802997215902551240, 0.803027014037674620, +0.803056810165230450, 0.803086604285144890, 0.803116396397342220, 0.803146186501748520, 0.803175974598289380, 0.803205760686890200, 0.803235544767476830, 0.803265326839974430, +0.803295106904308830, 0.803324884960405880, 0.803354661008190310, 0.803384435047587940, 0.803414207078524620, 0.803443977100925630, 0.803473745114716810, 0.803503511119823650, +0.803533275116171670, 0.803563037103687040, 0.803592797082294250, 0.803622555051919480, 0.803652311012488350, 0.803682064963926470, 0.803711816906159450, 0.803741566839112800, +0.803771314762712800, 0.803801060676883950, 0.803830804581552540, 0.803860546476644070, 0.803890286362084150, 0.803920024237798620, 0.803949760103713000, 0.803979493959752990, +0.804009225805844770, 0.804038955641912860, 0.804068683467883740, 0.804098409283682810, 0.804128133089235810, 0.804157854884468560, 0.804187574669306680, 0.804217292443676350, +0.804247008207502280, 0.804276721960710650, 0.804306433703227300, 0.804336143434977830, 0.804365851155887880, 0.804395556865883490, 0.804425260564890050, 0.804454962252834080, +0.804484661929640190, 0.804514359595234650, 0.804544055249543090, 0.804573748892491560, 0.804603440524005560, 0.804633130144010940, 0.804662817752433530, 0.804692503349199620, +0.804722186934233920, 0.804751868507462720, 0.804781548068811860, 0.804811225618207170, 0.804840901155574380, 0.804870574680839330, 0.804900246193928410, 0.804929915694766350, +0.804959583183279430, 0.804989248659393590, 0.805018912123034670, 0.805048573574128400, 0.805078233012600840, 0.805107890438377490, 0.805137545851385080, 0.805167199251548230, +0.805196850638793430, 0.805226500013046410, 0.805256147374233230, 0.805285792722279630, 0.805315436057111640, 0.805345077378654910, 0.805374716686836130, 0.805404353981580060, +0.805433989262812950, 0.805463622530461000, 0.805493253784449910, 0.805522883024705760, 0.805552510251154370, 0.805582135463722260, 0.805611758662334250, 0.805641379846916860, +0.805670999017396030, 0.805700616173697700, 0.805730231315747720, 0.805759844443472260, 0.805789455556797260, 0.805819064655649010, 0.805848671739952670, 0.805878276809634640, +0.805907879864620870, 0.805937480904837410, 0.805967079930210330, 0.805996676940665460, 0.806026271936129410, 0.806055864916527250, 0.806085455881785370, 0.806115044831829830, +0.806144631766586680, 0.806174216685981990, 0.806203799589941710, 0.806233380478391990, 0.806262959351259360, 0.806292536208468750, 0.806322111049946780, 0.806351683875619510, +0.806381254685413110, 0.806410823479253640, 0.806440390257066930, 0.806469955018779380, 0.806499517764317500, 0.806529078493606110, 0.806558637206572170, 0.806588193903141630, +0.806617748583240530, 0.806647301246795180, 0.806676851893731510, 0.806706400523976240, 0.806735947137454450, 0.806765491734092730, 0.806795034313817380, 0.806824574876554350, +0.806854113422230010, 0.806883649950770220, 0.806913184462101470, 0.806942716956150160, 0.806972247432841570, 0.807001775892102420, 0.807031302333858780, 0.807060826758036810, +0.807090349164562900, 0.807119869553363120, 0.807149387924364080, 0.807178904277491170, 0.807208418612670900, 0.807237930929829650, 0.807267441228893490, 0.807296949509788810, +0.807326455772441660, 0.807355960016778450, 0.807385462242725890, 0.807414962450209160, 0.807444460639154980, 0.807473956809489630, 0.807503450961139400, 0.807532943094030560, +0.807562433208089290, 0.807591921303241980, 0.807621407379415460, 0.807650891436534900, 0.807680373474527040, 0.807709853493318250, 0.807739331492834830, 0.807768807473003060, +0.807798281433749320, 0.807827753375000350, 0.807857223296681530, 0.807886691198719700, 0.807916157081041030, 0.807945620943572030, 0.807975082786238970, 0.808004542608968150, +0.808034000411686050, 0.808063456194319410, 0.808092909956793730, 0.808122361699035620, 0.808151811420971700, 0.808181259122528140, 0.808210704803631550, 0.808240148464208110, +0.808269590104184420, 0.808299029723487220, 0.808328467322041890, 0.808357902899775380, 0.808387336456614200, 0.808416767992484630, 0.808446197507313170, 0.808475625001026100, +0.808505050473550590, 0.808534473924811930, 0.808563895354737050, 0.808593314763252470, 0.808622732150284570, 0.808652147515759870, 0.808681560859604850, 0.808710972181745810, +0.808740381482109920, 0.808769788760622550, 0.808799194017210790, 0.808828597251800900, 0.808857998464319610, 0.808887397654693310, 0.808916794822848510, 0.808946189968712260, +0.808975583092209960, 0.809004974193268780, 0.809034363271815100, 0.809063750327775550, 0.809093135361076520, 0.809122518371644730, 0.809151899359406680, 0.809181278324289430, +0.809210655266218380, 0.809240030185120700, 0.809269403080922990, 0.809298773953551760, 0.809328142802933530, 0.809357509628995000, 0.809386874431662800, 0.809416237210863750, +0.809445597966523710, 0.809474956698569610, 0.809504313406928190, 0.809533668091525940, 0.809563020752289480, 0.809592371389145530, 0.809621720002021150, 0.809651066590841960, +0.809680411155535130, 0.809709753696027160, 0.809739094212244880, 0.809768432704114920, 0.809797769171563870, 0.809827103614518260, 0.809856436032905580, 0.809885766426651220, +0.809915094795682470, 0.809944421139925930, 0.809973745459308340, 0.810003067753756410, 0.810032388023196770, 0.810061706267556250, 0.810091022486761900, 0.810120336680739570, +0.810149648849416320, 0.810178958992718970, 0.810208267110574140, 0.810237573202908790, 0.810266877269649410, 0.810296179310723400, 0.810325479326056360, 0.810354777315575700, +0.810384073279208030, 0.810413367216880290, 0.810442659128519090, 0.810471949014051170, 0.810501236873403360, 0.810530522706503050, 0.810559806513275970, 0.810589088293649280, +0.810618368047549830, 0.810647645774904560, 0.810676921475640190, 0.810706195149683450, 0.810735466796961730, 0.810764736417400880, 0.810794004010928160, 0.810823269577470420, +0.810852533116954490, 0.810881794629307320, 0.810911054114455520, 0.810940311572326160, 0.810969567002846610, 0.810998820405942510, 0.811028071781541460, 0.811057321129570190, +0.811086568449955530, 0.811115813742624650, 0.811145057007504060, 0.811174298244520920, 0.811203537453602520, 0.811232774634674690, 0.811262009787664940, 0.811291242912500320, +0.811320474009107450, 0.811349703077413390, 0.811378930117345190, 0.811408155128830020, 0.811437378111794060, 0.811466599066164700, 0.811495817991868760, 0.811525034888833210, +0.811554249756985200, 0.811583462596251470, 0.811612673406559180, 0.811641882187835620, 0.811671088940006950, 0.811700293663000450, 0.811729496356743300, 0.811758697021162320, +0.811787895656184700, 0.811817092261737260, 0.811846286837747180, 0.811875479384141840, 0.811904669900847310, 0.811933858387791090, 0.811963044844900230, 0.811992229272101680, +0.812021411669322620, 0.812050592036489990, 0.812079770373531520, 0.812108946680373030, 0.812138120956942160, 0.812167293203166050, 0.812196463418971560, 0.812225631604286070, +0.812254797759036420, 0.812283961883149770, 0.812313123976553750, 0.812342284039174410, 0.812371442070939360, 0.812400598071775780, 0.812429752041610610, 0.812458903980371130, +0.812488053887984290, 0.812517201764377920, 0.812546347609477970, 0.812575491423212170, 0.812604633205507690, 0.812633772956291580, 0.812662910675491010, 0.812692046363033270, +0.812721180018845300, 0.812750311642854940, 0.812779441234988350, 0.812808568795173050, 0.812837694323336410, 0.812866817819405510, 0.812895939283307500, 0.812925058714969670, +0.812954176114319300, 0.812983291481283900, 0.813012404815789740, 0.813041516117764650, 0.813070625387135700, 0.813099732623830170, 0.813128837827775450, 0.813157940998898490, +0.813187042137127230, 0.813216141242387950, 0.813245238314608150, 0.813274333353715350, 0.813303426359636710, 0.813332517332299500, 0.813361606271631010, 0.813390693177558520, +0.813419778050009760, 0.813448860888911000, 0.813477941694190190, 0.813507020465774500, 0.813536097203591210, 0.813565171907567720, 0.813594244577631300, 0.813623315213709230, +0.813652383815729460, 0.813681450383618170, 0.813710514917303280, 0.813739577416712100, 0.813768637881771890, 0.813797696312410170, 0.813826752708554200, 0.813855807070131940, +0.813884859397069560, 0.813913909689295000, 0.813942957946735660, 0.813972004169319030, 0.814001048356972290, 0.814030090509623050, 0.814059130627198480, 0.814088168709626640, +0.814117204756833800, 0.814146238768748030, 0.814175270745296610, 0.814204300686407030, 0.814233328592006700, 0.814262354462023110, 0.814291378296384090, 0.814320400095016050, +0.814349419857847150, 0.814378437584804550, 0.814407453275815870, 0.814436466930808620, 0.814465478549710300, 0.814494488132448180, 0.814523495678950330, 0.814552501189143240, +0.814581504662954870, 0.814610506100312830, 0.814639505501144500, 0.814668502865377290, 0.814697498192938910, 0.814726491483756870, 0.814755482737759000, 0.814784471954871910, +0.814813459135023680, 0.814842444278141790, 0.814871427384153860, 0.814900408452987280, 0.814929387484569670, 0.814958364478829190, 0.814987339435692240, 0.815016312355086870, +0.815045283236940810, 0.815074252081181560, 0.815103218887736620, 0.815132183656533620, 0.815161146387500150, 0.815190107080564390, 0.815219065735652840, 0.815248022352693560, +0.815276976931614270, 0.815305929472342590, 0.815334879974806030, 0.815363828438932290, 0.815392774864649450, 0.815421719251884220, 0.815450661600564670, 0.815479601910618520, +0.815508540181973270, 0.815537476414556650, 0.815566410608296490, 0.815595342763120180, 0.815624272878956110, 0.815653200955730790, 0.815682126993372390, 0.815711050991808740, +0.815739972950967560, 0.815768892870776360, 0.815797810751162870, 0.815826726592054910, 0.815855640393380650, 0.815884552155066830, 0.815913461877041610, 0.815942369559232720, +0.815971275201567870, 0.816000178803974800, 0.816029080366381330, 0.816057979888715760, 0.816086877370904570, 0.816115772812876280, 0.816144666214558610, 0.816173557575879170, +0.816202446896765910, 0.816231334177146440, 0.816260219416948710, 0.816289102616100990, 0.816317983774529910, 0.816346862892163850, 0.816375739968930760, 0.816404615004758250, +0.816433487999574160, 0.816462358953306320, 0.816491227865882680, 0.816520094737231420, 0.816548959567279460, 0.816577822355955110, 0.816606683103186180, 0.816635541808900520, +0.816664398473026080, 0.816693253095490570, 0.816722105676222500, 0.816750956215148590, 0.816779804712197350, 0.816808651167296510, 0.816837495580374110, 0.816866337951357990, +0.816895178280175990, 0.816924016566756060, 0.816952852811026590, 0.816981687012914510, 0.817010519172348130, 0.817039349289255480, 0.817068177363564520, 0.817097003395203080, +0.817125827384099110, 0.817154649330181120, 0.817183469233375930, 0.817212287093612160, 0.817241102910817640, 0.817269916684920330, 0.817298728415848270, 0.817327538103529430, +0.817356345747891620, 0.817385151348863470, 0.817413954906372030, 0.817442756420345700, 0.817471555890712410, 0.817500353317400230, 0.817529148700337220, 0.817557942039451310, +0.817586733334670580, 0.817615522585923520, 0.817644309793137070, 0.817673094956239850, 0.817701878075159930, 0.817730659149825350, 0.817759438180164170, 0.817788215166104230, +0.817816990107574360, 0.817845763004501510, 0.817874533856814300, 0.817903302664440670, 0.817932069427308780, 0.817960834145346700, 0.817989596818482600, 0.818018357446644530, +0.818047116029760990, 0.818075872567759270, 0.818104627060567750, 0.818133379508114710, 0.818162129910328220, 0.818190878267136430, 0.818219624578467420, 0.818248368844249340, +0.818277111064410920, 0.818305851238879110, 0.818334589367582740, 0.818363325450449870, 0.818392059487408670, 0.818420791478387310, 0.818449521423314060, 0.818478249322117430, +0.818506975174724700, 0.818535698981064490, 0.818564420741065170, 0.818593140454654590, 0.818621858121761360, 0.818650573742313310, 0.818679287316238960, 0.818707998843466900, +0.818736708323924200, 0.818765415757539810, 0.818794121144241880, 0.818822824483958710, 0.818851525776618460, 0.818880225022149300, 0.818908922220480170, 0.818937617371538140, +0.818966310475252150, 0.818995001531550360, 0.819023690540361060, 0.819052377501612640, 0.819081062415233150, 0.819109745281150990, 0.819138426099294990, 0.819167104869592540, +0.819195781591972150, 0.819224456266362420, 0.819253128892691530, 0.819281799470887860, 0.819310468000879590, 0.819339134482595210, 0.819367798915963560, 0.819396461300911820, +0.819425121637368910, 0.819453779925263250, 0.819482436164523100, 0.819511090355076850, 0.819539742496852910, 0.819568392589780200, 0.819597040633785910, 0.819625686628798980, +0.819654330574747900, 0.819682972471560970, 0.819711612319166670, 0.819740250117493300, 0.819768885866469230, 0.819797519566023540, 0.819826151216083490, 0.819854780816578140, +0.819883408367435780, 0.819912033868584910, 0.819940657319953910, 0.819969278721471300, 0.819997898073065560, 0.820026515374665530, 0.820055130626198720, 0.820083743827594080, +0.820112354978779990, 0.820140964079685180, 0.820169571130237810, 0.820198176130366610, 0.820226779080000410, 0.820255379979066830, 0.820283978827494710, 0.820312575625212760, +0.820341170372149260, 0.820369763068232840, 0.820398353713392090, 0.820426942307555420, 0.820455528850651870, 0.820484113342609070, 0.820512695783355840, 0.820541276172821020, +0.820569854510933010, 0.820598430797620290, 0.820627005032811500, 0.820655577216435670, 0.820684147348420430, 0.820712715428694840, 0.820741281457187500, 0.820769845433826920, +0.820798407358541700, 0.820826967231260470, 0.820855525051911840, 0.820884080820424860, 0.820912634536727250, 0.820941186200747960, 0.820969735812415720, 0.820998283371659250, +0.821026828878406940, 0.821055372332587630, 0.821083913734129920, 0.821112453082962880, 0.821140990379014220, 0.821169525622213130, 0.821198058812488090, 0.821226589949768050, +0.821255119033981410, 0.821283646065057100, 0.821312171042924090, 0.821340693967510190, 0.821369214838744480, 0.821397733656555770, 0.821426250420872810, 0.821454765131624190, +0.821483277788738640, 0.821511788392144780, 0.821540296941772110, 0.821568803437548120, 0.821597307879402110, 0.821625810267262890, 0.821654310601059200, 0.821682808880719650, +0.821711305106173070, 0.821739799277348190, 0.821768291394174400, 0.821796781456579310, 0.821825269464492300, 0.821853755417842110, 0.821882239316557570, 0.821910721160567400, +0.821939200949800440, 0.821967678684185970, 0.821996154363651810, 0.822024627988127250, 0.822053099557541130, 0.822081569071822280, 0.822110036530899420, 0.822138501934701500, +0.822166965283157470, 0.822195426576196380, 0.822223885813746280, 0.822252342995736460, 0.822280798122095760, 0.822309251192753000, 0.822337702207637240, 0.822366151166677220, +0.822394598069802200, 0.822423042916940240, 0.822451485708020740, 0.822479926442972520, 0.822508365121724430, 0.822536801744205400, 0.822565236310344390, 0.822593668820070350, +0.822622099273312650, 0.822650527669999130, 0.822678954010059300, 0.822707378293422000, 0.822735800520016380, 0.822764220689771290, 0.822792638802615550, 0.822821054858478230, +0.822849468857288820, 0.822877880798975280, 0.822906290683466880, 0.822934698510692900, 0.822963104280582060, 0.822991507993063530, 0.823019909648066260, 0.823048309245519640, +0.823076706785351830, 0.823105102267492230, 0.823133495691869780, 0.823161887058413640, 0.823190276367052890, 0.823218663617716340, 0.823247048810333170, 0.823275431944832880, +0.823303813021143420, 0.823332192039194500, 0.823360568998915190, 0.823388943900234320, 0.823417316743081160, 0.823445687527384670, 0.823474056253074460, 0.823502422920078690, +0.823530787528326760, 0.823559150077747940, 0.823587510568271170, 0.823615868999825640, 0.823644225372340500, 0.823672579685744810, 0.823700931939968070, 0.823729282134938570, +0.823757630270585790, 0.823785976346839030, 0.823814320363627340, 0.823842662320879770, 0.823871002218525610, 0.823899340056493900, 0.823927675834714270, 0.823956009553115100, +0.823984341211625780, 0.824012670810175710, 0.824040998348693930, 0.824069323827109620, 0.824097647245352060, 0.824125968603350860, 0.824154287901034180, 0.824182605138331860, +0.824210920315172960, 0.824239233431486750, 0.824267544487202520, 0.824295853482249430, 0.824324160416556650, 0.824352465290054020, 0.824380768102669690, 0.824409068854333520, +0.824437367544974650, 0.824465664174522270, 0.824493958742905870, 0.824522251250054410, 0.824550541695897480, 0.824578830080364590, 0.824607116403384130, 0.824635400664885940, +0.824663682864799190, 0.824691963003053250, 0.824720241079577420, 0.824748517094300970, 0.824776791047153850, 0.824805062938064100, 0.824833332766961690, 0.824861600533776000, +0.824889866238436300, 0.824918129880871990, 0.824946391461012340, 0.824974650978786640, 0.825002908434124830, 0.825031163826955290, 0.825059417157207760, 0.825087668424811850, +0.825115917629696600, 0.825144164771791640, 0.825172409851026250, 0.825200652867330350, 0.825228893820632250, 0.825257132710861980, 0.825285369537948840, 0.825313604301822320, +0.825341837002411820, 0.825370067639646710, 0.825398296213456390, 0.825426522723770820, 0.825454747170518480, 0.825482969553629210, 0.825511189873032620, 0.825539408128658000, +0.825567624320434850, 0.825595838448292650, 0.825624050512160810, 0.825652260511969490, 0.825680468447646860, 0.825708674319123090, 0.825736878126327680, 0.825765079869190120, +0.825793279547639810, 0.825821477161606250, 0.825849672711019500, 0.825877866195808160, 0.825906057615902080, 0.825934246971230860, 0.825962434261724110, 0.825990619487311120, +0.826018802647921710, 0.826046983743485290, 0.826075162773931890, 0.826103339739190030, 0.826131514639189880, 0.826159687473860930, 0.826187858243132790, 0.826216026946934860, +0.826244193585196960, 0.826272358157848610, 0.826300520664819850, 0.826328681106039300, 0.826356839481437010, 0.826384995790942710, 0.826413150034485790, 0.826441302211996080, +0.826469452323403080, 0.826497600368636950, 0.826525746347626320, 0.826553890260301350, 0.826582032106591650, 0.826610171886426940, 0.826638309599736720, 0.826666445246450720, +0.826694578826498550, 0.826722710339810480, 0.826750839786315250, 0.826778967165942790, 0.826807092478622940, 0.826835215724285310, 0.826863336902859740, 0.826891456014275830, +0.826919573058463750, 0.826947688035352120, 0.826975800944871440, 0.827003911786951210, 0.827032020561521140, 0.827060127268511080, 0.827088231907850640, 0.827116334479469640, +0.827144434983298370, 0.827172533419265440, 0.827200629787301240, 0.827228724087335500, 0.827256816319297820, 0.827284906483118140, 0.827312994578726310, 0.827341080606051830, +0.827369164565025290, 0.827397246455575220, 0.827425326277632100, 0.827453404031125660, 0.827481479715985730, 0.827509553332142040, 0.827537624879524540, 0.827565694358063380, +0.827593761767687620, 0.827621827108327320, 0.827649890379912550, 0.827677951582373010, 0.827706010715638540, 0.827734067779639090, 0.827762122774304500, 0.827790175699565140, +0.827818226555349760, 0.827846275341588830, 0.827874322058212210, 0.827902366705149830, 0.827930409282331530, 0.827958449789687130, 0.827986488227146710, 0.828014524594640420, +0.828042558892097440, 0.828070591119448030, 0.828098621276622150, 0.828126649363549740, 0.828154675380160630, 0.828182699326384890, 0.828210721202153000, 0.828238741007393700, +0.828266758742037480, 0.828294774406014400, 0.828322787999254520, 0.828350799521687550, 0.828378808973243560, 0.828406816353852600, 0.828434821663445060, 0.828462824901950000, +0.828490826069297910, 0.828518825165418750, 0.828546822190242450, 0.828574817143699180, 0.828602810025718780, 0.828630800836231860, 0.828658789575167590, 0.828686776242456240, +0.828714760838027860, 0.828742743361812750, 0.828770723813740730, 0.828798702193741850, 0.828826678501746180, 0.828854652737684440, 0.828882624901485450, 0.828910594993079950, +0.828938563012397990, 0.828966528959369510, 0.828994492833924790, 0.829022454635993890, 0.829050414365506750, 0.829078372022394210, 0.829106327606585090, 0.829134281118010240, +0.829162232556599710, 0.829190181922283550, 0.829218129214991940, 0.829246074434655030, 0.829274017581203340, 0.829301958654566240, 0.829329897654674130, 0.829357834581457400, +0.829385769434845990, 0.829413702214770180, 0.829441632921160130, 0.829469561553945910, 0.829497488113058350, 0.829525412598426600, 0.829553335009981300, 0.829581255347652700, +0.829609173611370880, 0.829637089801066210, 0.829665003916668750, 0.829692915958108790, 0.829720825925317150, 0.829748733818222780, 0.829776639636756630, 0.829804543380848970, +0.829832445050429860, 0.829860344645429680, 0.829888242165778610, 0.829916137611407480, 0.829944030982245450, 0.829971922278223360, 0.829999811499271490, 0.830027698645320000, +0.830055583716299390, 0.830083466712139730, 0.830111347632771500, 0.830139226478125320, 0.830167103248130590, 0.830194977942718020, 0.830222850561818100, 0.830250721105361130, +0.830278589573277270, 0.830306455965496900, 0.830334320281950980, 0.830362182522568660, 0.830390042687281000, 0.830417900776018070, 0.830445756788710580, 0.830473610725288580, +0.830501462585682580, 0.830529312369822970, 0.830557160077640470, 0.830585005709064570, 0.830612849264026230, 0.830640690742455830, 0.830668530144283660, 0.830696367469440090, +0.830724202717855630, 0.830752035889460670, 0.830779866984186150, 0.830807696001961470, 0.830835522942717450, 0.830863347806384710, 0.830891170592893640, 0.830918991302174610, +0.830946809934158040, 0.830974626488774960, 0.831002440965954880, 0.831030253365628640, 0.831058063687726830, 0.831085871932179750, 0.831113678098918120, 0.831141482187872200, +0.831169284198972620, 0.831197084132150320, 0.831224881987334800, 0.831252677764457100, 0.831280471463447750, 0.831308263084237110, 0.831336052626755920, 0.831363840090934560, +0.831391625476703530, 0.831419408783994010, 0.831447190012735480, 0.831474969162858900, 0.831502746234294990, 0.831530521226974130, 0.831558294140827050, 0.831586064975784130, +0.831613833731776660, 0.831641600408734030, 0.831669365006587390, 0.831697127525267370, 0.831724887964704560, 0.831752646324829480, 0.831780402605572840, 0.831808156806865150, +0.831835908928637570, 0.831863658970819820, 0.831891406933342740, 0.831919152816137260, 0.831946896619133900, 0.831974638342263260, 0.832002377985456070, 0.832030115548643370, +0.832057851031754890, 0.832085584434721800, 0.832113315757474830, 0.832141044999944460, 0.832168772162061530, 0.832196497243756660, 0.832224220244960570, 0.832251941165604410, +0.832279660005617820, 0.832307376764932160, 0.832335091443478060, 0.832362804041186230, 0.832390514557987400, 0.832418222993812300, 0.832445929348591520, 0.832473633622256570, +0.832501335814736950, 0.832529035925964060, 0.832556733955868490, 0.832584429904381080, 0.832612123771432680, 0.832639815556953990, 0.832667505260876180, 0.832695192883129100, +0.832722878423644120, 0.832750561882351860, 0.832778243259183260, 0.832805922554069040, 0.832833599766939940, 0.832861274897726990, 0.832888947946361260, 0.832916618912772690, +0.832944287796892450, 0.832971954598651590, 0.832999619317980830, 0.833027281954811130, 0.833054942509073080, 0.833082600980698200, 0.833110257369616410, 0.833137911675758900, +0.833165563899056600, 0.833193214039440360, 0.833220862096841210, 0.833248508071189780, 0.833276151962417110, 0.833303793770454600, 0.833331433495232090, 0.833359071136681060, +0.833386706694732250, 0.833414340169316700, 0.833441971560365370, 0.833469600867809080, 0.833497228091578670, 0.833524853231605740, 0.833552476287820250, 0.833580097260153590, +0.833607716148536570, 0.833635332952900380, 0.833662947673175840, 0.833690560309293890, 0.833718170861186050, 0.833745779328782240, 0.833773385712013980, 0.833800990010812320, +0.833828592225108190, 0.833856192354832550, 0.833883790399916450, 0.833911386360290830, 0.833938980235887310, 0.833966572026635710, 0.833994161732467880, 0.834021749353314520, +0.834049334889106710, 0.834076918339775710, 0.834104499705252360, 0.834132078985467820, 0.834159656180353480, 0.834187231289839510, 0.834214804313857530, 0.834242375252338460, +0.834269944105213490, 0.834297510872413770, 0.834325075553870140, 0.834352638149514330, 0.834380198659276480, 0.834407757083088120, 0.834435313420880290, 0.834462867672584260, +0.834490419838131100, 0.834517969917451750, 0.834545517910477600, 0.834573063817140140, 0.834600607637369430, 0.834628149371097310, 0.834655689018254710, 0.834683226578773030, +0.834710762052583210, 0.834738295439616420, 0.834765826739804480, 0.834793355953077460, 0.834820883079366970, 0.834848408118604390, 0.834875931070720670, 0.834903451935647300, +0.834930970713315120, 0.834958487403655640, 0.834986002006600340, 0.835013514522079610, 0.835041024950025080, 0.835068533290367900, 0.835096039543039460, 0.835123543707970930, +0.835151045785093580, 0.835178545774338590, 0.835206043675637670, 0.835233539488921210, 0.835261033214120820, 0.835288524851167890, 0.835316014399993700, 0.835343501860529410, +0.835370987232706420, 0.835398470516456440, 0.835425951711709750, 0.835453430818398290, 0.835480907836453120, 0.835508382765805750, 0.835535855606387430, 0.835563326358129470, +0.835590795020963120, 0.835618261594820330, 0.835645726079631390, 0.835673188475328230, 0.835700648781841910, 0.835728106999104160, 0.835755563127046020, 0.835783017165599000, +0.835810469114694480, 0.835837918974264180, 0.835865366744238720, 0.835892812424549710, 0.835920256015128760, 0.835947697515907140, 0.835975136926816240, 0.836002574247787570, +0.836030009478752940, 0.836057442619642770, 0.836084873670388970, 0.836112302630923070, 0.836139729501176430, 0.836167154281080350, 0.836194576970566430, 0.836221997569566060, +0.836249416078011290, 0.836276832495832290, 0.836304246822961340, 0.836331659059329820, 0.836359069204869020, 0.836386477259510650, 0.836413883223186110, 0.836441287095827210, +0.836468688877364700, 0.836496088567730500, 0.836523486166856010, 0.836550881674672840, 0.836578275091112490, 0.836605666416106340, 0.836633055649586120, 0.836660442791483770, +0.836687827841729790, 0.836715210800256240, 0.836742591666994720, 0.836769970441876620, 0.836797347124833670, 0.836824721715797250, 0.836852094214699080, 0.836879464621471230, +0.836906832936044180, 0.836934199158350100, 0.836961563288320390, 0.836988925325886870, 0.837016285270981040, 0.837043643123534520, 0.837070998883479240, 0.837098352550746160, +0.837125704125267100, 0.837153053606973780, 0.837180400995797820, 0.837207746291670940, 0.837235089494524630, 0.837262430604290510, 0.837289769620900960, 0.837317106544286370, +0.837344441374379130, 0.837371774111110740, 0.837399104754412930, 0.837426433304217290, 0.837453759760455550, 0.837481084123059550, 0.837508406391961220, 0.837535726567091410, +0.837563044648382270, 0.837590360635765530, 0.837617674529172910, 0.837644986328536120, 0.837672296033786900, 0.837699603644857290, 0.837726909161678250, 0.837754212584181920, +0.837781513912300160, 0.837808813145964560, 0.837836110285106850, 0.837863405329658970, 0.837890698279552540, 0.837917989134719820, 0.837945277895091660, 0.837972564560600320, +0.837999849131177530, 0.838027131606755130, 0.838054411987264940, 0.838081690272638680, 0.838108966462808750, 0.838136240557705860, 0.838163512557262400, 0.838190782461410100, +0.838218050270080890, 0.838245315983206510, 0.838272579600718880, 0.838299841122549850, 0.838327100548631580, 0.838354357878895120, 0.838381613113272860, 0.838408866251696530, +0.838436117294097950, 0.838463366240409070, 0.838490613090561940, 0.838517857844488070, 0.838545100502120170, 0.838572341063389070, 0.838599579528227060, 0.838626815896566070, +0.838654050168338050, 0.838681282343474940, 0.838708512421908580, 0.838735740403571460, 0.838762966288394530, 0.838790190076310060, 0.838817411767250220, 0.838844631361146840, +0.838871848857931870, 0.838899064257537350, 0.838926277559895020, 0.838953488764937580, 0.838980697872595990, 0.839007904882802520, 0.839035109795489340, 0.839062312610588390, +0.839089513328031720, 0.839116711947751170, 0.839143908469678900, 0.839171102893747410, 0.839198295219887540, 0.839225485448031990, 0.839252673578112730, 0.839279859610061800, +0.839307043543811250, 0.839334225379293030, 0.839361405116439750, 0.839388582755182470, 0.839415758295453670, 0.839442931737185650, 0.839470103080310110, 0.839497272324759460, +0.839524439470465510, 0.839551604517360550, 0.839578767465376960, 0.839605928314446140, 0.839633087064500350, 0.839660243715471880, 0.839687398267292770, 0.839714550719895200, +0.839741701073211330, 0.839768849327173550, 0.839795995481713240, 0.839823139536763020, 0.839850281492254820, 0.839877421348120930, 0.839904559104293510, 0.839931694760704730, +0.839958828317286740, 0.839985959773972060, 0.840013089130692060, 0.840040216387379360, 0.840067341543966120, 0.840094464600384390, 0.840121585556566690, 0.840148704412444940, +0.840175821167951420, 0.840202935823018750, 0.840230048377578420, 0.840257158831562820, 0.840284267184904450, 0.840311373437535370, 0.840338477589387840, 0.840365579640394160, +0.840392679590486910, 0.840419777439597620, 0.840446873187658760, 0.840473966834602740, 0.840501058380361820, 0.840528147824868290, 0.840555235168054420, 0.840582320409852370, +0.840609403550195090, 0.840636484589013740, 0.840663563526241160, 0.840690640361809740, 0.840717715095651740, 0.840744787727699450, 0.840771858257885140, 0.840798926686141650, +0.840825993012400460, 0.840853057236594200, 0.840880119358655250, 0.840907179378516110, 0.840934237296109060, 0.840961293111366250, 0.840988346824220300, 0.841015398434603930, +0.841042447942448650, 0.841069495347687270, 0.841096540650252080, 0.841123583850075570, 0.841150624947090030, 0.841177663941228060, 0.841204700832421830, 0.841231735620604380, +0.841258768305707120, 0.841285798887662860, 0.841312827366404110, 0.841339853741863370, 0.841366878013972920, 0.841393900182665360, 0.841420920247873520, 0.841447938209528790, +0.841474954067564340, 0.841501967821912440, 0.841528979472505600, 0.841555989019276420, 0.841582996462157170, 0.841610001801080480, 0.841637005035979160, 0.841664006166784940, +0.841691005193430760, 0.841718002115849020, 0.841744996933972200, 0.841771989647732920, 0.841798980257063680, 0.841825968761897080, 0.841852955162165960, 0.841879939457801930, +0.841906921648738150, 0.841933901734906900, 0.841960879716241010, 0.841987855592672970, 0.842014829364135190, 0.842041801030560920, 0.842068770591881570, 0.842095738048030400, +0.842122703398939800, 0.842149666644542490, 0.842176627784770980, 0.842203586819557870, 0.842230543748835880, 0.842257498572537950, 0.842284451290595810, 0.842311401902942510, +0.842338350409510770, 0.842365296810233090, 0.842392241105042180, 0.842419183293870670, 0.842446123376651700, 0.842473061353317010, 0.842499997223799530, 0.842526930988032220, +0.842553862645947450, 0.842580792197478060, 0.842607719642556650, 0.842634644981116070, 0.842661568213089240, 0.842688489338408010, 0.842715408357005540, 0.842742325268814650, +0.842769240073767860, 0.842796152771797980, 0.842823063362837850, 0.842849971846819870, 0.842876878223677520, 0.842903782493342520, 0.842930684655748050, 0.842957584710826820, +0.842984482658511780, 0.843011378498735310, 0.843038272231430570, 0.843065163856530630, 0.843092053373967200, 0.843118940783673660, 0.843145826085582750, 0.843172709279627400, +0.843199590365740100, 0.843226469343853920, 0.843253346213901580, 0.843280220975816340, 0.843307093629530050, 0.843333964174976080, 0.843360832612087160, 0.843387698940796130, +0.843414563161035910, 0.843441425272739240, 0.843468285275839060, 0.843495143170268520, 0.843521998955959810, 0.843548852632845960, 0.843575704200860030, 0.843602553659934860, +0.843629401010003390, 0.843656246250998330, 0.843683089382853080, 0.843709930405499690, 0.843736769318871430, 0.843763606122901360, 0.843790440817522190, 0.843817273402666880, +0.843844103878268470, 0.843870932244259690, 0.843897758500574140, 0.843924582647143760, 0.843951404683901840, 0.843978224610781420, 0.844005042427715460, 0.844031858134636880, +0.844058671731478750, 0.844085483218174340, 0.844112292594655700, 0.844139099860856330, 0.844165905016709290, 0.844192708062147410, 0.844219508997103850, 0.844246307821511440, +0.844273104535303350, 0.844299899138412860, 0.844326691630772230, 0.844353482012314860, 0.844380270282973690, 0.844407056442681990, 0.844433840491372490, 0.844460622428978570, +0.844487402255432950, 0.844514179970669350, 0.844540955574619830, 0.844567729067217890, 0.844594500448396680, 0.844621269718089260, 0.844648036876228580, 0.844674801922747800, +0.844701564857580520, 0.844728325680658920, 0.844755084391916380, 0.844781840991286170, 0.844808595478701460, 0.844835347854095090, 0.844862098117400540, 0.844888846268550650, +0.844915592307479040, 0.844942336234118070, 0.844969078048401270, 0.844995817750261780, 0.845022555339632660, 0.845049290816447200, 0.845076024180638540, 0.845102755432139750, +0.845129484570884660, 0.845156211596805320, 0.845182936509835450, 0.845209659309908210, 0.845236379996956890, 0.845263098570914530, 0.845289815031714520, 0.845316529379290360, +0.845343241613574440, 0.845369951734500470, 0.845396659742001510, 0.845423365636011060, 0.845450069416462060, 0.845476771083287890, 0.845503470636421840, 0.845530168075797620, +0.845556863401347500, 0.845583556613005110, 0.845610247710703920, 0.845636936694377120, 0.845663623563957970, 0.845690308319379750, 0.845716990960576180, 0.845743671487479750, +0.845770349900024090, 0.845797026198142570, 0.845823700381768460, 0.845850372450835160, 0.845877042405275840, 0.845903710245023980, 0.845930375970013300, 0.845957039580176210, +0.845983701075446510, 0.846010360455757620, 0.846037017721042780, 0.846063672871235410, 0.846090325906268870, 0.846116976826076450, 0.846143625630592090, 0.846170272319748170, +0.846196916893478650, 0.846223559351716780, 0.846250199694396080, 0.846276837921449810, 0.846303474032811480, 0.846330108028414910, 0.846356739908192600, 0.846383369672078390, +0.846409997320005880, 0.846436622851908240, 0.846463246267719180, 0.846489867567371880, 0.846516486750800050, 0.846543103817937400, 0.846569718768716450, 0.846596331603071350, +0.846622942320935270, 0.846649550922241920, 0.846676157406924700, 0.846702761774916990, 0.846729364026152510, 0.846755964160565090, 0.846782562178087120, 0.846809158078652870, +0.846835751862195730, 0.846862343528649200, 0.846888933077946770, 0.846915520510022060, 0.846942105824809000, 0.846968689022240210, 0.846995270102249730, 0.847021849064771070, +0.847048425909737720, 0.847075000637083410, 0.847101573246741510, 0.847128143738645640, 0.847154712112729970, 0.847181278368926980, 0.847207842507170850, 0.847234404527395180, +0.847260964429533360, 0.847287522213519220, 0.847314077879286250, 0.847340631426768520, 0.847367182855898740, 0.847393732166611070, 0.847420279358839010, 0.847446824432516290, +0.847473367387576500, 0.847499908223953270, 0.847526446941580300, 0.847552983540391660, 0.847579518020320170, 0.847606050381299770, 0.847632580623264300, 0.847659108746147360, +0.847685634749882680, 0.847712158634403860, 0.847738680399644730, 0.847765200045539240, 0.847791717572020430, 0.847818232979022260, 0.847844746266478430, 0.847871257434322790, +0.847897766482489050, 0.847924273410910920, 0.847950778219522470, 0.847977280908256640, 0.848003781477047690, 0.848030279925829240, 0.848056776254535020, 0.848083270463098950, +0.848109762551454650, 0.848136252519535950, 0.848162740367277120, 0.848189226094610890, 0.848215709701471750, 0.848242191187793200, 0.848268670553509190, 0.848295147798553530, +0.848321622922860060, 0.848348095926362960, 0.848374566808995030, 0.848401035570690800, 0.848427502211383970, 0.848453966731008480, 0.848480429129497950, 0.848506889406786310, +0.848533347562807520, 0.848559803597495830, 0.848586257510784200, 0.848612709302606900, 0.848639158972897770, 0.848665606521590730, 0.848692051948619740, 0.848718495253918630, +0.848744936437421330, 0.848771375499062010, 0.848797812438773950, 0.848824247256491190, 0.848850679952147910, 0.848877110525677940, 0.848903538977015090, 0.848929965306093550, +0.848956389512847460, 0.848982811597209900, 0.849009231559115450, 0.849035649398497850, 0.849062065115291030, 0.849088478709429160, 0.849114890180846070, 0.849141299529475700, +0.849167706755252660, 0.849194111858109780, 0.849220514837981670, 0.849246915694802260, 0.849273314428505620, 0.849299711039025680, 0.849326105526296390, 0.849352497890251910, +0.849378888130826630, 0.849405276247953590, 0.849431662241567410, 0.849458046111602140, 0.849484427857991610, 0.849510807480670200, 0.849537184979571650, 0.849563560354630540, +0.849589933605780170, 0.849616304732955020, 0.849642673736089040, 0.849669040615116280, 0.849695405369971010, 0.849721768000587300, 0.849748128506899070, 0.849774486888841050, +0.849800843146346300, 0.849827197279349410, 0.849853549287784560, 0.849879899171585910, 0.849906246930687390, 0.849932592565023400, 0.849958936074528220, 0.849985277459135320, +0.850011616718779230, 0.850037953853394090, 0.850064288862914070, 0.850090621747273350, 0.850116952506406070, 0.850143281140246400, 0.850169607648728950, 0.850195932031787120, +0.850222254289355380, 0.850248574421368030, 0.850274892427759220, 0.850301208308463230, 0.850327522063414110, 0.850353833692546250, 0.850380143195794360, 0.850406450573091500, +0.850432755824372610, 0.850459058949571860, 0.850485359948623400, 0.850511658821461510, 0.850537955568020480, 0.850564250188235120, 0.850590542682038600, 0.850616833049365750, +0.850643121290150740, 0.850669407404327950, 0.850695691391831770, 0.850721973252596240, 0.850748252986555760, 0.850774530593645160, 0.850800806073797820, 0.850827079426948350, +0.850853350653031250, 0.850879619751980790, 0.850905886723731240, 0.850932151568217000, 0.850958414285372440, 0.850984674875132190, 0.851010933337429830, 0.851037189672200210, +0.851063443879377490, 0.851089695958896280, 0.851115945910690730, 0.851142193734695460, 0.851168439430844970, 0.851194682999073080, 0.851220924439314410, 0.851247163751503440, +0.851273400935574580, 0.851299635991462190, 0.851325868919100780, 0.851352099718424630, 0.851378328389368670, 0.851404554931866510, 0.851430779345852870, 0.851457001631262370, +0.851483221788029270, 0.851509439816088180, 0.851535655715373490, 0.851561869485820130, 0.851588081127361620, 0.851614290639932880, 0.851640498023468420, 0.851666703277902730, +0.851692906403170300, 0.851719107399205640, 0.851745306265943140, 0.851771503003317830, 0.851797697611263340, 0.851823890089714600, 0.851850080438606220, 0.851876268657872470, +0.851902454747448190, 0.851928638707267650, 0.851954820537265680, 0.851981000237377000, 0.852007177807535320, 0.852033353247675820, 0.852059526557732870, 0.852085697737641090, +0.852111866787335080, 0.852138033706749340, 0.852164198495819040, 0.852190361154477770, 0.852216521682660710, 0.852242680080302240, 0.852268836347337080, 0.852294990483699830, +0.852321142489325110, 0.852347292364147520, 0.852373440108102120, 0.852399585721122730, 0.852425729203144300, 0.852451870554101650, 0.852478009773929290, 0.852504146862561930, +0.852530281819934180, 0.852556414645980640, 0.852582545340636600, 0.852608673903835770, 0.852634800335513200, 0.852660924635603610, 0.852687046804041730, 0.852713166840762260, +0.852739284745699930, 0.852765400518789800, 0.852791514159965680, 0.852817625669162750, 0.852843735046315830, 0.852869842291359540, 0.852895947404228580, 0.852922050384857800, +0.852948151233181910, 0.852974249949136070, 0.853000346532654220, 0.853026440983671420, 0.853052533302122610, 0.853078623487942390, 0.853104711541065600, 0.853130797461427060, +0.853156881248962050, 0.853182962903604290, 0.853209042425289170, 0.853235119813951390, 0.853261195069525910, 0.853287268191947330, 0.853313339181150710, 0.853339408037070650, +0.853365474759642530, 0.853391539348800300, 0.853417601804479120, 0.853443662126614040, 0.853469720315139790, 0.853495776369991190, 0.853521830291103180, 0.853547882078410700, +0.853573931731848810, 0.853599979251351780, 0.853626024636854660, 0.853652067888292510, 0.853678109005600260, 0.853704147988712750, 0.853730184837564800, 0.853756219552091800, +0.853782252132227910, 0.853808282577908310, 0.853834310889068140, 0.853860337065642020, 0.853886361107565110, 0.853912383014772350, 0.853938402787198570, 0.853964420424779270, +0.853990435927448500, 0.854016449295141530, 0.854042460527793530, 0.854068469625339330, 0.854094476587713980, 0.854120481414852530, 0.854146484106689810, 0.854172484663161310, +0.854198483084201100, 0.854224479369744770, 0.854250473519727160, 0.854276465534083430, 0.854302455412748520, 0.854328443155657480, 0.854354428762745700, 0.854380412233947560, +0.854406393569198230, 0.854432372768432980, 0.854458349831586860, 0.854484324758594820, 0.854510297549391900, 0.854536268203913370, 0.854562236722094530, 0.854588203103869630, +0.854614167349174280, 0.854640129457943430, 0.854666089430112350, 0.854692047265615980, 0.854718002964389600, 0.854743956526368590, 0.854769907951487220, 0.854795857239681100, +0.854821804390885290, 0.854847749405035050, 0.854873692282065440, 0.854899633021911520, 0.854925571624508550, 0.854951508089792140, 0.854977442417696460, 0.855003374608157230, +0.855029304661109490, 0.855055232576488520, 0.855081158354229490, 0.855107081994267550, 0.855133003496537870, 0.855158922860976280, 0.855184840087516720, 0.855210755176095240, +0.855236668126646780, 0.855262578939106620, 0.855288487613410030, 0.855314394149492290, 0.855340298547288990, 0.855366200806734530, 0.855392100927764520, 0.855417998910314230, +0.855443894754318920, 0.855469788459713890, 0.855495680026434500, 0.855521569454415820, 0.855547456743593670, 0.855573341893902440, 0.855599224905277840, 0.855625105777655160, +0.855650984510969770, 0.855676861105156950, 0.855702735560151860, 0.855728607875890450, 0.855754478052307090, 0.855780346089337510, 0.855806211986917090, 0.855832075744981100, +0.855857937363464940, 0.855883796842303870, 0.855909654181433390, 0.855935509380789220, 0.855961362440305850, 0.855987213359919010, 0.856013062139564180, 0.856038908779176650, +0.856064753278691910, 0.856090595638045240, 0.856116435857172120, 0.856142273936008390, 0.856168109874488440, 0.856193943672548310, 0.856219775330123170, 0.856245604847148730, +0.856271432223560170, 0.856297257459293190, 0.856323080554283410, 0.856348901508465430, 0.856374720321775310, 0.856400536994148310, 0.856426351525520050, 0.856452163915825790, +0.856477974165001150, 0.856503782272981630, 0.856529588239703150, 0.856555392065100120, 0.856581193749108680, 0.856606993291664230, 0.856632790692702370, 0.856658585952158490, +0.856684379069968080, 0.856710170046066870, 0.856735958880390560, 0.856761745572873990, 0.856787530123452990, 0.856813312532063160, 0.856839092798640010, 0.856864870923119250, +0.856890646905436260, 0.856916420745527100, 0.856942192443326370, 0.856967961998770230, 0.856993729411794190, 0.857019494682333850, 0.857045257810324700, 0.857071018795702470, +0.857096777638402640, 0.857122534338361390, 0.857148288895513310, 0.857174041309794470, 0.857199791581140570, 0.857225539709487230, 0.857251285694769940, 0.857277029536924530, +0.857302771235886940, 0.857328510791592000, 0.857354248203975770, 0.857379983472973950, 0.857405716598522160, 0.857431447580556010, 0.857457176419011310, 0.857482903113823690, +0.857508627664929190, 0.857534350072262750, 0.857560070335760430, 0.857585788455357820, 0.857611504430990880, 0.857637218262595090, 0.857662929950106290, 0.857688639493460190, +0.857714346892592850, 0.857740052147439310, 0.857765755257935520, 0.857791456224017420, 0.857817155045620730, 0.857842851722681040, 0.857868546255134310, 0.857894238642916580, +0.857919928885962910, 0.857945616984209350, 0.857971302937591720, 0.857996986746045850, 0.858022668409507580, 0.858048347927912620, 0.858074025301196700, 0.858099700529296290, +0.858125373612146140, 0.858151044549682500, 0.858176713341841310, 0.858202379988558310, 0.858228044489769300, 0.858253706845410250, 0.858279367055416960, 0.858305025119725620, +0.858330681038271370, 0.858356334810990380, 0.858381986437818490, 0.858407635918691740, 0.858433283253545730, 0.858458928442316640, 0.858484571484940730, 0.858510212381352830, +0.858535851131489450, 0.858561487735286510, 0.858587122192679740, 0.858612754503605190, 0.858638384667998800, 0.858664012685796400, 0.858689638556934360, 0.858715262281347870, +0.858740883858973290, 0.858766503289746350, 0.858792120573603210, 0.858817735710479810, 0.858843348700311980, 0.858868959543036330, 0.858894568238587790, 0.858920174786902860, +0.858945779187917480, 0.858971381441567590, 0.858996981547789250, 0.859022579506518500, 0.859048175317691290, 0.859073768981244100, 0.859099360497112110, 0.859124949865231580, +0.859150537085538790, 0.859176122157969570, 0.859201705082460080, 0.859227285858946370, 0.859252864487364380, 0.859278440967650710, 0.859304015299740540, 0.859329587483570250, +0.859355157519075990, 0.859380725406193920, 0.859406291144860000, 0.859431854735010270, 0.859457416176581450, 0.859482975469508580, 0.859508532613728280, 0.859534087609176710, +0.859559640455789920, 0.859585191153503960, 0.859610739702255100, 0.859636286101979290, 0.859661830352613340, 0.859687372454092210, 0.859712912406352730, 0.859738450209331040, +0.859763985862963100, 0.859789519367185280, 0.859815050721933650, 0.859840579927144360, 0.859866106982754120, 0.859891631888698100, 0.859917154644913030, 0.859942675251335160, +0.859968193707900450, 0.859993710014545390, 0.860019224171205910, 0.860044736177818960, 0.860070246034319700, 0.860095753740644730, 0.860121259296730440, 0.860146762702513000, +0.860172263957928670, 0.860197763062913620, 0.860223260017404230, 0.860248754821337110, 0.860274247474647650, 0.860299737977272550, 0.860325226329148210, 0.860350712530210670, +0.860376196580396440, 0.860401678479641660, 0.860427158227883180, 0.860452635825056380, 0.860478111271097970, 0.860503584565944220, 0.860529055709531530, 0.860554524701796280, +0.860579991542674620, 0.860605456232103050, 0.860630918770018180, 0.860656379156355620, 0.860681837391052200, 0.860707293474044180, 0.860732747405267840, 0.860758199184659680, +0.860783648812155970, 0.860809096287693200, 0.860834541611208090, 0.860859984782636150, 0.860885425801914290, 0.860910864668978930, 0.860936301383766310, 0.860961735946212950, +0.860987168356255330, 0.861012598613830170, 0.861038026718873080, 0.861063452671321010, 0.861088876471110210, 0.861114298118177190, 0.861139717612458440, 0.861165134953890470, +0.861190550142409640, 0.861215963177952790, 0.861241374060455640, 0.861266782789855130, 0.861292189366087650, 0.861317593789089560, 0.861342996058797610, 0.861368396175148150, +0.861393794138077710, 0.861419189947523200, 0.861444583603420240, 0.861469975105705890, 0.861495364454316630, 0.861520751649188840, 0.861546136690259260, 0.861571519577464360, +0.861596900310740990, 0.861622278890025070, 0.861647655315253340, 0.861673029586362490, 0.861698401703289150, 0.861723771665969700, 0.861749139474340840, 0.861774505128339200, +0.861799868627901700, 0.861825229972964070, 0.861850589163463350, 0.861875946199336160, 0.861901301080519210, 0.861926653806948880, 0.861952004378562010, 0.861977352795295530, +0.862002699057085150, 0.862028043163868160, 0.862053385115580940, 0.862078724912160310, 0.862104062553542880, 0.862129398039665260, 0.862154731370464280, 0.862180062545876760, +0.862205391565838640, 0.862230718430287090, 0.862256043139158820, 0.862281365692390330, 0.862306686089918450, 0.862332004331679890, 0.862357320417611260, 0.862382634347649830, +0.862407946121731330, 0.862433255739793010, 0.862458563201771610, 0.862483868507603610, 0.862509171657226070, 0.862534472650575590, 0.862559771487589440, 0.862585068168203350, +0.862610362692354580, 0.862635655059979860, 0.862660945271016110, 0.862686233325399840, 0.862711519223068100, 0.862736802963957610, 0.862762084548005400, 0.862787363975147660, +0.862812641245321530, 0.862837916358463740, 0.862863189314511110, 0.862888460113400590, 0.862913728755068890, 0.862938995239452830, 0.862964259566489810, 0.862989521736115650, +0.863014781748267730, 0.863040039602882780, 0.863065295299897840, 0.863090548839249520, 0.863115800220874860, 0.863141049444711260, 0.863166296510694540, 0.863191541418761980, +0.863216784168850610, 0.863242024760897400, 0.863267263194839040, 0.863292499470612480, 0.863317733588154780, 0.863342965547403090, 0.863368195348293570, 0.863393422990763600, +0.863418648474750030, 0.863443871800189780, 0.863469092967020010, 0.863494311975177340, 0.863519528824599480, 0.863544743515222260, 0.863569956046983280, 0.863595166419819260, +0.863620374633667480, 0.863645580688464640, 0.863670784584147920, 0.863695986320654250, 0.863721185897921020, 0.863746383315884380, 0.863771578574481720, 0.863796771673650210, +0.863821962613326780, 0.863847151393448360, 0.863872338013952130, 0.863897522474775030, 0.863922704775854530, 0.863947884917126930, 0.863973062898529600, 0.863998238719999480, +0.864023412381473950, 0.864048583882889740, 0.864073753224184120, 0.864098920405294570, 0.864124085426157260, 0.864149248286709800, 0.864174408986889130, 0.864199567526632520, +0.864224723905876900, 0.864249878124559560, 0.864275030182617420, 0.864300180079988320, 0.864325327816608200, 0.864350473392414780, 0.864375616807345090, 0.864400758061336540, +0.864425897154325940, 0.864451034086250680, 0.864476168857048250, 0.864501301466654940, 0.864526431915008440, 0.864551560202045820, 0.864576686327704240, 0.864601810291921070, +0.864626932094633260, 0.864652051735778190, 0.864677169215293470, 0.864702284533115260, 0.864727397689181390, 0.864752508683429120, 0.864777617515795400, 0.864802724186217840, +0.864827828694633370, 0.864852931040979270, 0.864878031225193360, 0.864903129247211910, 0.864928225106972650, 0.864953318804412840, 0.864978410339469650, 0.865003499712080570, +0.865028586922182650, 0.865053671969713720, 0.865078754854610170, 0.865103835576809700, 0.865128914136249700, 0.865153990532867350, 0.865179064766600110, 0.865204136837385170, +0.865229206745159910, 0.865254274489862030, 0.865279340071428040, 0.865304403489795650, 0.865329464744902350, 0.865354523836685320, 0.865379580765082030, 0.865404635530029780, +0.865429688131465810, 0.865454738569328200, 0.865479786843553310, 0.865504832954078870, 0.865529876900842490, 0.865554918683781200, 0.865579958302832850, 0.865604995757934480, +0.865630031049024030, 0.865655064176038100, 0.865680095138914530, 0.865705123937590690, 0.865730150572004090, 0.865755175042092100, 0.865780197347792100, 0.865805217489041710, +0.865830235465778640, 0.865855251277939610, 0.865880264925462440, 0.865905276408284520, 0.865930285726343450, 0.865955292879576730, 0.865980297867921740, 0.866005300691316430, +0.866030301349697500, 0.866055299843002780, 0.866080296171169770, 0.866105290334135970, 0.866130282331839090, 0.866155272164216390, 0.866180259831205610, 0.866205245332744460, +0.866230228668769860, 0.866255209839219660, 0.866280188844031570, 0.866305165683142860, 0.866330140356491250, 0.866355112864014340, 0.866380083205649630, 0.866405051381335170, +0.866430017391007560, 0.866454981234604960, 0.866479942912064980, 0.866504902423325010, 0.866529859768322860, 0.866554814946996040, 0.866579767959282710, 0.866604718805119360, +0.866629667484444370, 0.866654613997195120, 0.866679558343309340, 0.866704500522724740, 0.866729440535378810, 0.866754378381209280, 0.866779314060154290, 0.866804247572150470, +0.866829178917136180, 0.866854108095048810, 0.866879035105826310, 0.866903959949406170, 0.866928882625725980, 0.866953803134723810, 0.866978721476337480, 0.867003637650503810, +0.867028551657161200, 0.867053463496247120, 0.867078373167699420, 0.867103280671455810, 0.867128186007453890, 0.867153089175632050, 0.867177990175927000, 0.867202889008277020, +0.867227785672619820, 0.867252680168893120, 0.867277572497034740, 0.867302462656982410, 0.867327350648673940, 0.867352236472047510, 0.867377120127040050, 0.867402001613589820, +0.867426880931634560, 0.867451758081112080, 0.867476633061960210, 0.867501505874116790, 0.867526376517520070, 0.867551244992106900, 0.867576111297815640, 0.867600975434584140, +0.867625837402350220, 0.867650697201051700, 0.867675554830626310, 0.867700410291012190, 0.867725263582147410, 0.867750114703969010, 0.867774963656415380, 0.867799810439424340, +0.867824655052933710, 0.867849497496881450, 0.867874337771205480, 0.867899175875843750, 0.867924011810734420, 0.867948845575814640, 0.867973677171022700, 0.867998506596296630, +0.868023333851574260, 0.868048158936793660, 0.868072981851892520, 0.868097802596809460, 0.868122621171481420, 0.868147437575846780, 0.868172251809843590, 0.868197063873409780, +0.868221873766483300, 0.868246681489002080, 0.868271487040904290, 0.868296290422128080, 0.868321091632610840, 0.868345890672290730, 0.868370687541106020, 0.868395482238994540, +0.868420274765894340, 0.868445065121743460, 0.868469853306479970, 0.868494639320042230, 0.868519423162367410, 0.868544204833394120, 0.868568984333060290, 0.868593761661303980, +0.868618536818063340, 0.868643309803276200, 0.868668080616881390, 0.868692849258815850, 0.868717615729018180, 0.868742380027426540, 0.868767142153978880, 0.868791902108613460, +0.868816659891268220, 0.868841415501881320, 0.868866168940391370, 0.868890920206735530, 0.868915669300852290, 0.868940416222680030, 0.868965160972156700, 0.868989903549220340, +0.869014643953809340, 0.869039382185862190, 0.869064118245316040, 0.869088852132109730, 0.869113583846181200, 0.869138313387468720, 0.869163040755910440, 0.869187765951444650, +0.869212488974009380, 0.869237209823543360, 0.869261928499983850, 0.869286645003269460, 0.869311359333338470, 0.869336071490129150, 0.869360781473579650, 0.869385489283628130, +0.869410194920212990, 0.869434898383272700, 0.869459599672744780, 0.869484298788567920, 0.869508995730680190, 0.869533690499020070, 0.869558383093525620, 0.869583073514135330, +0.869607761760787690, 0.869632447833420310, 0.869657131731971680, 0.869681813456380290, 0.869706493006584420, 0.869731170382522230, 0.869755845584132210, 0.869780518611352530, +0.869805189464122000, 0.869829858142378010, 0.869854524646059390, 0.869879188975104520, 0.869903851129451570, 0.869928511109039130, 0.869953168913805360, 0.869977824543688550, +0.870002477998627730, 0.870027129278560300, 0.870051778383424960, 0.870076425313160210, 0.870101070067704430, 0.870125712646996010, 0.870150353050973210, 0.870174991279574980, +0.870199627332738920, 0.870224261210403750, 0.870248892912507950, 0.870273522438989810, 0.870298149789787920, 0.870322774964840780, 0.870347397964086560, 0.870372018787464290, +0.870396637434911580, 0.870421253906367260, 0.870445868201769830, 0.870470480321057670, 0.870495090264169380, 0.870519698031043340, 0.870544303621618500, 0.870568907035832450, +0.870593508273624140, 0.870618107334932060, 0.870642704219694700, 0.870667298927850550, 0.870691891459338230, 0.870716481814096110, 0.870741069992063240, 0.870765655993177230, +0.870790239817377130, 0.870814821464601430, 0.870839400934788730, 0.870863978227877420, 0.870888553343806220, 0.870913126282513610, 0.870937697043938640, 0.870962265628019040, +0.870986832034693740, 0.871011396263901340, 0.871035958315580450, 0.871060518189669670, 0.871085075886107620, 0.871109631404833220, 0.871134184745784410, 0.871158735908900140, +0.871183284894119000, 0.871207831701379610, 0.871232376330620670, 0.871256918781780800, 0.871281459054798700, 0.871305997149613320, 0.871330533066162480, 0.871355066804385350, +0.871379598364220520, 0.871404127745606720, 0.871428654948482650, 0.871453179972786820, 0.871477702818458600, 0.871502223485435600, 0.871526741973657090, 0.871551258283061680, +0.871575772413588190, 0.871600284365175230, 0.871624794137761620, 0.871649301731285960, 0.871673807145687430, 0.871698310380904060, 0.871722811436874910, 0.871747310313538690, +0.871771807010834120, 0.871796301528700130, 0.871820793867075340, 0.871845284025898670, 0.871869772005109070, 0.871894257804644690, 0.871918741424444700, 0.871943222864447810, +0.871967702124592850, 0.871992179204818640, 0.872016654105064020, 0.872041126825268130, 0.872065597365369040, 0.872090065725305900, 0.872114531905017750, 0.872138995904443100, +0.872163457723521000, 0.872187917362190370, 0.872212374820389820, 0.872236830098058860, 0.872261283195135300, 0.872285734111558520, 0.872310182847267470, 0.872334629402200970, +0.872359073776297840, 0.872383515969497150, 0.872407955981737480, 0.872432393812958450, 0.872456829463098100, 0.872481262932095600, 0.872505694219889880, 0.872530123326419990, +0.872554550251624760, 0.872578974995443120, 0.872603397557814580, 0.872627817938677050, 0.872652236137970050, 0.872676652155632390, 0.872701065991603020, 0.872725477645821090, +0.872749887118225430, 0.872774294408755090, 0.872798699517349450, 0.872823102443946560, 0.872847503188486030, 0.872871901750906680, 0.872896298131147550, 0.872920692329147710, +0.872945084344846080, 0.872969474178182270, 0.872993861829094220, 0.873018247297521640, 0.873042630583403370, 0.873067011686678550, 0.873091390607286130, 0.873115767345165380, +0.873140141900255130, 0.873164514272494970, 0.873188884461822970, 0.873213252468178940, 0.873237618291501700, 0.873261981931730440, 0.873286343388804180, 0.873310702662662090, +0.873335059753243210, 0.873359414660487170, 0.873383767384332210, 0.873408117924717730, 0.873432466281583000, 0.873456812454867060, 0.873481156444509080, 0.873505498250448320, +0.873529837872624170, 0.873554175310975010, 0.873578510565440340, 0.873602843635959530, 0.873627174522471520, 0.873651503224915580, 0.873675829743230880, 0.873700154077356570, +0.873724476227232370, 0.873748796192796550, 0.873773113973988710, 0.873797429570748130, 0.873821742983013960, 0.873846054210725360, 0.873870363253821720, 0.873894670112242200, +0.873918974785926280, 0.873943277274812690, 0.873967577578840800, 0.873991875697949890, 0.874016171632079450, 0.874040465381168420, 0.874064756945156400, 0.874089046323982770, +0.874113333517586130, 0.874137618525906210, 0.874161901348882160, 0.874186181986453480, 0.874210460438559210, 0.874234736705138850, 0.874259010786131660, 0.874283282681477370, +0.874307552391114460, 0.874331819914982660, 0.874356085253021330, 0.874380348405169760, 0.874404609371367330, 0.874428868151553300, 0.874453124745667610, 0.874477379153648650, +0.874501631375436350, 0.874525881410969870, 0.874550129260188710, 0.874574374923032140, 0.874598618399439750, 0.874622859689350720, 0.874647098792705080, 0.874671335709441220, +0.874695570439498970, 0.874719802982817820, 0.874744033339337150, 0.874768261508996450, 0.874792487491735100, 0.874816711287492500, 0.874840932896208460, 0.874865152317821800, +0.874889369552272260, 0.874913584599499190, 0.874937797459442220, 0.874962008132040720, 0.874986216617234300, 0.875010422914962670, 0.875034627025164550, 0.875058828947779980, +0.875083028682748230, 0.875107226230008920, 0.875131421589501520, 0.875155614761165660, 0.875179805744940700, 0.875203994540766690, 0.875228181148582140, 0.875252365568327310, +0.875276547799941460, 0.875300727843364320, 0.875324905698535270, 0.875349081365394020, 0.875373254843880070, 0.875397426133933340, 0.875421595235492680, 0.875445762148498010, +0.875469926872888940, 0.875494089408605070, 0.875518249755586010, 0.875542407913771250, 0.875566563883100950, 0.875590717663513820, 0.875614869254949800, 0.875639018657348720, +0.875663165870650070, 0.875687310894793460, 0.875711453729718590, 0.875735594375365080, 0.875759732831673080, 0.875783869098581190, 0.875808003176029690, 0.875832135063958180, +0.875856264762306380, 0.875880392271013890, 0.875904517590020410, 0.875928640719266130, 0.875952761658689740, 0.875976880408231520, 0.876000996967830960, 0.876025111337428000, +0.876049223516962350, 0.876073333506373510, 0.876097441305601410, 0.876121546914586100, 0.876145650333266410, 0.876169751561582720, 0.876193850599474630, 0.876217947446881860, +0.876242042103744350, 0.876266134570001580, 0.876290224845593600, 0.876314312930460360, 0.876338398824541010, 0.876362482527775600, 0.876386564040104070, 0.876410643361466010, +0.876434720491801490, 0.876458795431049990, 0.876482868179152110, 0.876506938736046460, 0.876531007101673640, 0.876555073275973150, 0.876579137258885030, 0.876603199050349110, +0.876627258650305220, 0.876651316058693060, 0.876675371275453140, 0.876699424300524280, 0.876723475133846960, 0.876747523775360800, 0.876771570225005960, 0.876795614482722140, +0.876819656548449400, 0.876843696422127450, 0.876867734103696670, 0.876891769593096120, 0.876915802890266050, 0.876939833995146630, 0.876963862907677580, 0.876987889627798830, +0.877011914155450430, 0.877035936490572650, 0.877059956633104540, 0.877083974582986590, 0.877107990340158740, 0.877132003904560810, 0.877156015276132960, 0.877180024454815020, +0.877204031440547040, 0.877228036233269390, 0.877252038832921240, 0.877276039239443080, 0.877300037452774740, 0.877324033472856260, 0.877348027299627690, 0.877372018933029190, +0.877396008373000910, 0.877419995619482250, 0.877443980672413690, 0.877467963531735060, 0.877491944197386520, 0.877515922669308220, 0.877539898947440000, 0.877563873031722120, +0.877587844922094960, 0.877611814618497800, 0.877635782120871010, 0.877659747429154760, 0.877683710543289200, 0.877707671463214380, 0.877731630188870350, 0.877755586720197270, +0.877779541057135630, 0.877803493199624700, 0.877827443147605080, 0.877851390901016830, 0.877875336459800090, 0.877899279823895040, 0.877923220993241720, 0.877947159967780830, +0.877971096747451660, 0.877995031332194700, 0.878018963721950210, 0.878042893916658240, 0.878066821916258950, 0.878090747720692730, 0.878114671329899620, 0.878138592743820330, +0.878162511962394030, 0.878186428985561540, 0.878210343813262910, 0.878234256445438400, 0.878258166882028290, 0.878282075122972740, 0.878305981168212460, 0.878329885017686830, +0.878353786671336350, 0.878377686129101500, 0.878401583390922450, 0.878425478456739460, 0.878449371326492700, 0.878473262000122550, 0.878497150477569710, 0.878521036758773580, +0.878544920843674750, 0.878568802732213720, 0.878592682424330640, 0.878616559919965790, 0.878640435219059660, 0.878664308321552400, 0.878688179227384740, 0.878712047936496270, +0.878735914448827700, 0.878759778764319210, 0.878783640882911390, 0.878807500804544510, 0.878831358529158830, 0.878855214056695090, 0.878879067387092980, 0.878902918520293230, +0.878926767456236100, 0.878950614194862090, 0.878974458736111570, 0.878998301079924830, 0.879022141226242450, 0.879045979175005040, 0.879069814926152330, 0.879093648479625010, +0.879117479835363700, 0.879141308993308560, 0.879165135953400180, 0.879188960715578950, 0.879212783279785360, 0.879236603645960240, 0.879260421814043180, 0.879284237783975020, +0.879308051555696360, 0.879331863129147460, 0.879355672504268940, 0.879379479681001270, 0.879403284659285300, 0.879427087439060730, 0.879450888020268380, 0.879474686402848870, +0.879498482586742570, 0.879522276571890080, 0.879546068358232010, 0.879569857945708630, 0.879593645334261100, 0.879617430523829010, 0.879641213514353320, 0.879664994305774720, +0.879688772898033490, 0.879712549291070340, 0.879736323484825890, 0.879760095479241060, 0.879783865274255560, 0.879807632869810340, 0.879831398265846110, 0.879855161462303360, +0.879878922459122690, 0.879902681256244710, 0.879926437853610020, 0.879950192251159670, 0.879973944448833370, 0.879997694446572280, 0.880021442244317000, 0.880045187842008030, +0.880068931239586070, 0.880092672436991850, 0.880116411434165860, 0.880140148231049360, 0.880163882827582070, 0.880187615223705030, 0.880211345419358970, 0.880235073414484480, +0.880258799209022390, 0.880282522802913300, 0.880306244196098260, 0.880329963388517210, 0.880353680380111300, 0.880377395170821140, 0.880401107760587550, 0.880424818149351140, +0.880448526337052730, 0.880472232323632920, 0.880495936109033090, 0.880519637693192860, 0.880543337076053590, 0.880567034257556000, 0.880590729237640810, 0.880614422016248730, +0.880638112593320700, 0.880661800968797310, 0.880685487142619850, 0.880709171114728350, 0.880732852885063870, 0.880756532453567220, 0.880780209820179240, 0.880803884984840750, +0.880827557947492570, 0.880851228708075860, 0.880874897266530680, 0.880898563622798280, 0.880922227776819500, 0.880945889728535050, 0.880969549477885970, 0.880993207024812990, +0.881016862369257030, 0.881040515511159250, 0.881064166450459820, 0.881087815187099890, 0.881111461721020510, 0.881135106052162500, 0.881158748180466690, 0.881182388105874010, +0.881206025828325750, 0.881229661347762040, 0.881253294664124160, 0.881276925777353060, 0.881300554687389660, 0.881324181394174790, 0.881347805897649490, 0.881371428197754710, +0.881395048294431830, 0.881418666187620880, 0.881442281877263260, 0.881465895363299890, 0.881489506645671830, 0.881513115724320010, 0.881536722599185360, 0.881560327270208940, +0.881583929737332130, 0.881607530000494970, 0.881631128059639170, 0.881654723914705450, 0.881678317565634860, 0.881701909012368560, 0.881725498254847470, 0.881749085293012990, +0.881772670126805490, 0.881796252756166240, 0.881819833181036410, 0.881843411401356910, 0.881866987417068930, 0.881890561228113490, 0.881914132834431650, 0.881937702235964900, +0.881961269432653520, 0.881984834424438870, 0.882008397211262230, 0.882031957793064540, 0.882055516169786950, 0.882079072341370620, 0.882102626307756600, 0.882126178068886380, +0.882149727624700340, 0.882173274975139980, 0.882196820120146330, 0.882220363059660780, 0.882243903793624270, 0.882267442321977960, 0.882290978644663550, 0.882314512761621210, +0.882338044672792530, 0.882361574378118910, 0.882385101877541160, 0.882408627171000770, 0.882432150258438800, 0.882455671139796500, 0.882479189815015390, 0.882502706284035820, +0.882526220546799630, 0.882549732603247760, 0.882573242453321580, 0.882596750096962370, 0.882620255534111280, 0.882643758764709910, 0.882667259788698750, 0.882690758606019420, +0.882714255216613180, 0.882737749620421290, 0.882761241817385130, 0.882784731807445770, 0.882808219590544670, 0.882831705166623350, 0.882855188535622390, 0.882878669697483410, +0.882902148652147780, 0.882925625399556880, 0.882949099939651760, 0.882972572272374020, 0.882996042397664830, 0.883019510315465880, 0.883042976025717800, 0.883066439528362170, +0.883089900823340600, 0.883113359910594140, 0.883136816790064390, 0.883160271461692510, 0.883183723925420440, 0.883207174181188660, 0.883230622228938890, 0.883254068068612510, +0.883277511700151120, 0.883300953123495770, 0.883324392338588170, 0.883347829345369480, 0.883371264143781750, 0.883394696733765360, 0.883418127115262350, 0.883441555288213890, +0.883464981252561570, 0.883488405008246770, 0.883511826555211100, 0.883535245893395720, 0.883558663022742660, 0.883582077943192550, 0.883605490654687300, 0.883628901157168300, +0.883652309450576930, 0.883675715534854910, 0.883699119409943610, 0.883722521075784860, 0.883745920532319370, 0.883769317779489190, 0.883792712817235590, 0.883816105645500280, +0.883839496264224760, 0.883862884673350390, 0.883886270872818900, 0.883909654862572110, 0.883933036642550740, 0.883956416212696830, 0.883979793572951870, 0.884003168723257350, +0.884026541663554990, 0.884049912393786270, 0.884073280913893140, 0.884096647223816420, 0.884120011323498160, 0.884143373212879720, 0.884166732891902950, 0.884190090360509330, +0.884213445618640460, 0.884236798666238060, 0.884260149503243940, 0.884283498129599170, 0.884306844545245550, 0.884330188750124810, 0.884353530744178660, 0.884376870527348700, +0.884400208099576530, 0.884423543460803870, 0.884446876610972770, 0.884470207550023920, 0.884493536277899730, 0.884516862794541670, 0.884540187099891350, 0.884563509193890710, +0.884586829076481120, 0.884610146747605080, 0.884633462207203070, 0.884656775455217480, 0.884680086491590020, 0.884703395316262300, 0.884726701929176020, 0.884750006330273010, +0.884773308519495090, 0.884796608496784210, 0.884819906262081400, 0.884843201815328830, 0.884866495156468310, 0.884889786285441570, 0.884913075202190310, 0.884936361906656370, +0.884959646398781890, 0.884982928678507920, 0.885006208745776620, 0.885029486600529820, 0.885052762242709350, 0.885076035672256900, 0.885099306889114310, 0.885122575893223520, +0.885145842684526780, 0.885169107262964940, 0.885192369628480360, 0.885215629781014760, 0.885238887720510180, 0.885262143446908350, 0.885285396960151180, 0.885308648260180520, +0.885331897346938730, 0.885355144220366650, 0.885378388880406760, 0.885401631327000890, 0.885424871560090980, 0.885448109579618840, 0.885471345385526520, 0.885494578977756190, +0.885517810356248880, 0.885541039520947200, 0.885564266471792870, 0.885587491208727930, 0.885610713731694200, 0.885633934040633730, 0.885657152135488350, 0.885680368016200540, +0.885703581682711460, 0.885726793134963280, 0.885750002372898250, 0.885773209396458210, 0.885796414205585080, 0.885819616800220920, 0.885842817180307770, 0.885866015345788020, +0.885889211296602700, 0.885912405032694420, 0.885935596554005110, 0.885958785860476830, 0.885981972952051610, 0.886005157828671400, 0.886028340490278790, 0.886051520936814830, +0.886074699168222120, 0.886097875184442610, 0.886121048985418440, 0.886144220571091660, 0.886167389941404320, 0.886190557096298460, 0.886213722035716690, 0.886236884759600160, +0.886260045267891480, 0.886283203560532700, 0.886306359637465850, 0.886329513498633090, 0.886352665143976590, 0.886375814573438840, 0.886398961786961090, 0.886422106784485960, +0.886445249565955500, 0.886468390131312070, 0.886491528480497500, 0.886514664613454180, 0.886537798530124270, 0.886560930230450240, 0.886584059714373370, 0.886607186981836490, +0.886630312032781530, 0.886653434867150870, 0.886676555484886550, 0.886699673885930960, 0.886722790070226030, 0.886745904037714690, 0.886769015788338110, 0.886792125322038990, +0.886815232638759500, 0.886838337738442010, 0.886861440621028670, 0.886884541286461660, 0.886907639734683780, 0.886930735965636430, 0.886953829979262090, 0.886976921775503360, +0.887000011354302180, 0.887023098715601030, 0.887046183859342090, 0.887069266785467710, 0.887092347493920630, 0.887115425984642210, 0.887138502257575290, 0.887161576312662010, +0.887184648149844880, 0.887207717769066150, 0.887230785170268100, 0.887253850353392990, 0.887276913318383760, 0.887299974065181800, 0.887323032593729910, 0.887346088903970490, +0.887369142995845790, 0.887392194869298320, 0.887415244524270230, 0.887438291960704560, 0.887461337178542700, 0.887484380177727460, 0.887507420958201340, 0.887530459519906610, +0.887553495862785760, 0.887576529986781160, 0.887599561891835200, 0.887622591577890810, 0.887645619044889480, 0.887668644292774140, 0.887691667321487190, 0.887714688130971100, +0.887737706721168250, 0.887760723092021140, 0.887783737243472590, 0.887806749175464320, 0.887829758887939250, 0.887852766380839650, 0.887875771654108250, 0.887898774707687300, +0.887921775541519520, 0.887944774155547290, 0.887967770549713540, 0.887990764723959880, 0.888013756678229350, 0.888036746412464440, 0.888059733926607640, 0.888082719220601560, +0.888105702294388680, 0.888128683147911490, 0.888151661781113040, 0.888174638193934940, 0.888197612386320330, 0.888220584358211720, 0.888243554109551580, 0.888266521640282520, +0.888289486950347260, 0.888312450039688620, 0.888335410908248520, 0.888358369555969810, 0.888381325982795180, 0.888404280188667350, 0.888427232173528700, 0.888450181937322060, +0.888473129479989910, 0.888496074801475300, 0.888519017901720170, 0.888541958780667440, 0.888564897438259840, 0.888587833874440070, 0.888610768089150630, 0.888633700082334220, +0.888656629853933680, 0.888679557403891930, 0.888702482732150910, 0.888725405838653560, 0.888748326723342810, 0.888771245386161260, 0.888794161827051510, 0.888817076045956390, +0.888839988042818940, 0.888862897817581210, 0.888885805370186240, 0.888908710700576640, 0.888931613808695340, 0.888954514694485050, 0.888977413357888380, 0.889000309798848250, +0.889023204017307720, 0.889046096013208720, 0.889068985786494630, 0.889091873337107930, 0.889114758664991570, 0.889137641770088360, 0.889160522652341020, 0.889183401311692820, +0.889206277748085690, 0.889229151961462900, 0.889252023951767170, 0.889274893718941420, 0.889297761262928370, 0.889320626583670950, 0.889343489681111990, 0.889366350555194750, +0.889389209205861180, 0.889412065633054530, 0.889434919836717740, 0.889457771816793750, 0.889480621573225270, 0.889503469105955240, 0.889526314414926470, 0.889549157500082340, +0.889571998361365020, 0.889594836998717660, 0.889617673412083090, 0.889640507601404450, 0.889663339566624580, 0.889686169307686290, 0.889708996824532970, 0.889731822117106770, +0.889754645185350970, 0.889777466029208600, 0.889800284648622600, 0.889823101043535900, 0.889845915213891450, 0.889868727159632170, 0.889891536880701440, 0.889914344377041530, +0.889937149648595720, 0.889959952695307030, 0.889982753517118530, 0.890005552113973030, 0.890028348485813690, 0.890051142632583560, 0.890073934554225900, 0.890096724250682980, +0.890119511721898290, 0.890142296967814880, 0.890165079988375680, 0.890187860783523740, 0.890210639353202220, 0.890233415697354480, 0.890256189815922800, 0.890278961708850570, +0.890301731376081040, 0.890324498817557150, 0.890347264033221950, 0.890370027023018710, 0.890392787786890240, 0.890415546324780370, 0.890438302636631150, 0.890461056722386180, +0.890483808581988610, 0.890506558215381380, 0.890529305622507870, 0.890552050803311120, 0.890574793757734630, 0.890597534485720770, 0.890620272987213020, 0.890643009262154560, +0.890665743310488640, 0.890688475132158320, 0.890711204727106850, 0.890733932095277400, 0.890756657236613460, 0.890779380151057510, 0.890802100838553050, 0.890824819299043340, +0.890847535532471650, 0.890870249538781130, 0.890892961317914960, 0.890915670869816380, 0.890938378194429000, 0.890961083291695320, 0.890983786161558930, 0.891006486803962990, +0.891029185218850880, 0.891051881406165870, 0.891074575365851110, 0.891097267097850310, 0.891119956602105970, 0.891142643878561680, 0.891165328927160830, 0.891188011747846680, +0.891210692340562490, 0.891233370705251550, 0.891256046841857110, 0.891278720750323110, 0.891301392430591810, 0.891324061882607040, 0.891346729106312070, 0.891369394101650280, +0.891392056868565150, 0.891414717406999730, 0.891437375716897520, 0.891460031798202320, 0.891482685650856640, 0.891505337274804300, 0.891527986669988560, 0.891550633836352800, +0.891573278773840520, 0.891595921482395080, 0.891618561961960210, 0.891641200212478500, 0.891663836233893780, 0.891686470026149540, 0.891709101589189030, 0.891731730922955880, +0.891754358027393330, 0.891776982902444890, 0.891799605548054370, 0.891822225964164490, 0.891844844150719070, 0.891867460107661490, 0.891890073834935240, 0.891912685332483800, +0.891935294600250670, 0.891957901638179670, 0.891980506446213630, 0.892003109024296250, 0.892025709372371130, 0.892048307490381660, 0.892070903378271440, 0.892093497035984060, +0.892116088463462800, 0.892138677660651800, 0.892161264627493680, 0.892183849363932470, 0.892206431869911550, 0.892229012145374530, 0.892251590190265120, 0.892274166004526580, +0.892296739588102740, 0.892319310940937300, 0.892341880062973320, 0.892364446954154620, 0.892387011614424800, 0.892409574043727450, 0.892432134242006180, 0.892454692209204480, +0.892477247945266510, 0.892499801450135080, 0.892522352723754130, 0.892544901766067270, 0.892567448577018090, 0.892589993156550410, 0.892612535504607620, 0.892635075621133640, +0.892657613506072200, 0.892680149159366440, 0.892702682580960310, 0.892725213770797500, 0.892747742728821510, 0.892770269454976280, 0.892792793949205410, 0.892815316211452940, +0.892837836241661690, 0.892860354039775930, 0.892882869605739260, 0.892905382939495400, 0.892927894040988050, 0.892950402910161030, 0.892972909546957960, 0.892995413951323090, +0.893017916123199250, 0.893040416062530600, 0.893062913769260950, 0.893085409243333910, 0.893107902484693410, 0.893130393493283160, 0.893152882269046990, 0.893175368811928940, +0.893197853121872050, 0.893220335198820600, 0.893242815042718300, 0.893265292653508960, 0.893287768031136300, 0.893310241175544250, 0.893332712086677080, 0.893355180764477730, +0.893377647208890350, 0.893400111419858870, 0.893422573397327110, 0.893445033141239020, 0.893467490651538190, 0.893489945928168770, 0.893512398971074820, 0.893534849780199480, +0.893557298355486920, 0.893579744696881280, 0.893602188804326180, 0.893624630677765650, 0.893647070317143520, 0.893669507722403720, 0.893691942893490520, 0.893714375830347070, +0.893736806532917760, 0.893759235001146400, 0.893781661234976930, 0.893804085234353280, 0.893826506999219510, 0.893848926529519750, 0.893871343825197400, 0.893893758886196600, +0.893916171712461400, 0.893938582303935860, 0.893960990660563780, 0.893983396782289220, 0.894005800669056220, 0.894028202320809040, 0.894050601737491070, 0.894072998919046570, +0.894095393865419470, 0.894117786576553940, 0.894140177052394010, 0.894162565292883630, 0.894184951297967160, 0.894207335067587980, 0.894229716601690370, 0.894252095900218590, +0.894274472963116460, 0.894296847790328250, 0.894319220381797790, 0.894341590737469440, 0.894363958857287370, 0.894386324741195060, 0.894408688389137010, 0.894431049801057140, +0.894453408976899620, 0.894475765916608710, 0.894498120620128350, 0.894520473087402570, 0.894542823318376090, 0.894565171312992180, 0.894587517071195330, 0.894609860592929680, +0.894632201878139300, 0.894654540926768550, 0.894676877738761370, 0.894699212314062460, 0.894721544652615000, 0.894743874754363790, 0.894766202619252880, 0.894788528247226430, +0.894810851638228600, 0.894833172792203760, 0.894855491709095950, 0.894877808388849780, 0.894900122831408740, 0.894922435036717310, 0.894944745004719880, 0.894967052735360590, +0.894989358228583610, 0.895011661484333200, 0.895033962502553740, 0.895056261283189710, 0.895078557826184620, 0.895100852131483160, 0.895123144199029610, 0.895145434028768120, +0.895167721620643060, 0.895190006974598720, 0.895212290090579790, 0.895234570968529760, 0.895256849608393250, 0.895279126010114610, 0.895301400173638130, 0.895323672098908170, +0.895345941785869130, 0.895368209234465140, 0.895390474444641040, 0.895412737416340310, 0.895434998149507780, 0.895457256644087820, 0.895479512900024590, 0.895501766917262690, +0.895524018695746270, 0.895546268235420270, 0.895568515536228180, 0.895590760598114820, 0.895613003421024570, 0.895635244004901800, 0.895657482349690890, 0.895679718455336340, +0.895701952321782400, 0.895724183948974020, 0.895746413336854790, 0.895768640485369530, 0.895790865394462730, 0.895813088064078670, 0.895835308494161930, 0.895857526684656900, +0.895879742635508070, 0.895901956346660260, 0.895924167818057170, 0.895946377049643750, 0.895968584041364260, 0.895990788793163410, 0.896012991304985460, 0.896035191576775140, +0.896057389608477250, 0.896079585400035410, 0.896101778951394650, 0.896123970262499460, 0.896146159333294330, 0.896168346163723760, 0.896190530753732340, 0.896212713103264670, +0.896234893212265570, 0.896257071080678760, 0.896279246708449380, 0.896301420095521830, 0.896323591241840800, 0.896345760147350680, 0.896367926811996290, 0.896390091235722000, +0.896412253418472860, 0.896434413360192690, 0.896456571060826550, 0.896478726520318900, 0.896500879738614590, 0.896523030715657980, 0.896545179451393780, 0.896567325945767050, +0.896589470198721590, 0.896611612210202470, 0.896633751980154270, 0.896655889508521710, 0.896678024795249500, 0.896700157840282120, 0.896722288643564400, 0.896744417205041390, +0.896766543524656900, 0.896788667602356090, 0.896810789438083570, 0.896832909031784140, 0.896855026383402310, 0.896877141492883000, 0.896899254360171260, 0.896921364985210910, +0.896943473367947220, 0.896965579508324780, 0.896987683406288540, 0.897009785061782970, 0.897031884474752910, 0.897053981645143160, 0.897076076572898900, 0.897098169257964040, +0.897120259700283750, 0.897142347899802740, 0.897164433856465940, 0.897186517570218060, 0.897208599041003920, 0.897230678268768230, 0.897252755253456160, 0.897274829995011960, +0.897296902493380570, 0.897318972748507030, 0.897341040760335940, 0.897363106528812350, 0.897385170053880850, 0.897407231335486940, 0.897429290373574550, 0.897451347168088940, +0.897473401718974940, 0.897495454026177470, 0.897517504089641370, 0.897539551909311450, 0.897561597485132650, 0.897583640817050220, 0.897605681905008450, 0.897627720748952360, +0.897649757348826900, 0.897671791704577230, 0.897693823816147930, 0.897715853683484170, 0.897737881306530760, 0.897759906685232980, 0.897781929819535090, 0.897803950709382350, +0.897825969354719700, 0.897847985755492180, 0.897869999911644730, 0.897892011823122170, 0.897914021489870100, 0.897936028911832440, 0.897958034088954800, 0.897980037021182120, +0.898002037708459320, 0.898024036150731340, 0.898046032347943330, 0.898068026300040230, 0.898090018006967530, 0.898112007468669260, 0.898133994685091030, 0.898155979656177880, +0.898177962381874750, 0.898199942862126680, 0.898221921096878710, 0.898243897086076440, 0.898265870829664030, 0.898287842327586850, 0.898309811579790060, 0.898331778586218820, +0.898353743346818060, 0.898375705861533040, 0.898397666130308690, 0.898419624153090620, 0.898441579929822990, 0.898463533460451490, 0.898485484744921180, 0.898507433783177100, +0.898529380575164520, 0.898551325120828360, 0.898573267420114010, 0.898595207472966840, 0.898617145279331230, 0.898639080839152780, 0.898661014152376650, 0.898682945218947870, +0.898704874038811830, 0.898726800611913570, 0.898748724938198800, 0.898770647017611780, 0.898792566850098120, 0.898814484435602970, 0.898836399774071700, 0.898858312865449370, +0.898880223709681350, 0.898902132306712680, 0.898924038656489180, 0.898945942758955010, 0.898967844614056100, 0.898989744221737610, 0.899011641581944690, 0.899033536694622710, +0.899055429559716960, 0.899077320177172900, 0.899099208546935150, 0.899121094668949410, 0.899142978543161050, 0.899164860169515130, 0.899186739547957030, 0.899208616678432100, +0.899230491560885640, 0.899252364195263440, 0.899274234581509790, 0.899296102719570610, 0.899317968609391170, 0.899339832250916850, 0.899361693644092910, 0.899383552788864730, +0.899405409685177680, 0.899427264332977590, 0.899449116732208840, 0.899470966882817250, 0.899492814784748410, 0.899514660437947370, 0.899536503842359720, 0.899558344997930860, +0.899580183904606480, 0.899602020562331290, 0.899623854971051130, 0.899645687130711140, 0.899667517041257030, 0.899689344702634180, 0.899711170114787850, 0.899732993277663760, +0.899754814191207400, 0.899776632855363690, 0.899798449270078460, 0.899820263435297090, 0.899842075350964940, 0.899863885017027740, 0.899885692433430750, 0.899907497600119570, +0.899929300517040010, 0.899951101184136790, 0.899972899601355850, 0.899994695768642660, 0.900016489685942720, 0.900038281353201520, 0.900060070770364760, 0.900081857937378050, +0.900103642854186430, 0.900125425520735600, 0.900147205936971280, 0.900168984102838850, 0.900190760018284020, 0.900212533683252380, 0.900234305097689310, 0.900256074261540860, +0.900277841174751850, 0.900299605837268200, 0.900321368249035640, 0.900343128409999530, 0.900364886320105700, 0.900386641979299630, 0.900408395387527370, 0.900430146544733630, +0.900451895450864570, 0.900473642105865890, 0.900495386509682970, 0.900517128662261630, 0.900538868563547480, 0.900560606213486100, 0.900582341612023660, 0.900604074759104980, +0.900625805654676090, 0.900647534298682610, 0.900669260691070450, 0.900690984831785000, 0.900712706720772190, 0.900734426357977510, 0.900756143743347230, 0.900777858876826150, +0.900799571758360560, 0.900821282387895940, 0.900842990765378100, 0.900864696890752770, 0.900886400763965760, 0.900908102384963110, 0.900929801753689750, 0.900951498870091960, +0.900973193734115440, 0.900994886345705900, 0.901016576704809170, 0.901038264811370950, 0.901059950665337060, 0.901081634266653770, 0.901103315615265910, 0.901124994711119840, +0.901146671554161170, 0.901168346144335940, 0.901190018481589860, 0.901211688565868640, 0.901233356397118210, 0.901255021975284840, 0.901276685300313460, 0.901298346372150450, +0.901320005190741510, 0.901341661756032590, 0.901363316067969490, 0.901384968126498150, 0.901406617931564740, 0.901428265483114390, 0.901449910781093380, 0.901471553825447520, +0.901493194616122870, 0.901514833153065240, 0.901536469436220570, 0.901558103465534670, 0.901579735240953810, 0.901601364762423360, 0.901622992029889380, 0.901644617043298010, +0.901666239802595080, 0.901687860307726520, 0.901709478558638370, 0.901731094555276890, 0.901752708297587250, 0.901774319785515810, 0.901795929019008620, 0.901817535998011620, +0.901839140722470840, 0.901860743192332110, 0.901882343407541590, 0.901903941368045530, 0.901925537073789200, 0.901947130524719090, 0.901968721720781240, 0.901990310661921480, +0.902011897348085960, 0.902033481779220710, 0.902055063955271690, 0.902076643876185470, 0.902098221541907220, 0.902119796952383420, 0.902141370107560130, 0.902162941007383480, +0.902184509651799420, 0.902206076040754090, 0.902227640174193990, 0.902249202052064380, 0.902270761674311750, 0.902292319040882140, 0.902313874151721820, 0.902335427006776820, +0.902356977605993320, 0.902378525949317220, 0.902400072036695260, 0.902421615868072790, 0.902443157443396200, 0.902464696762611760, 0.902486233825665620, 0.902507768632503820, +0.902529301183072620, 0.902550831477318180, 0.902572359515187110, 0.902593885296624650, 0.902615408821577540, 0.902636930089991910, 0.902658449101813920, 0.902679965856989730, +0.902701480355465710, 0.902722992597188470, 0.902744502582103260, 0.902766010310156800, 0.902787515781295240, 0.902809018995465060, 0.902830519952612210, 0.902852018652683050, +0.902873515095623970, 0.902895009281381330, 0.902916501209900860, 0.902937990881129140, 0.902959478295012440, 0.902980963451497030, 0.903002446350529290, 0.903023926992055360, +0.903045405376021960, 0.903066881502374800, 0.903088355371060250, 0.903109826982024910, 0.903131296335215050, 0.903152763430576930, 0.903174228268056820, 0.903195690847601210, +0.903217151169156680, 0.903238609232668970, 0.903260065038084760, 0.903281518585350330, 0.903302969874412160, 0.903324418905216530, 0.903345865677709800, 0.903367310191838470, +0.903388752447549240, 0.903410192444787710, 0.903431630183500810, 0.903453065663634700, 0.903474498885135980, 0.903495929847951020, 0.903517358552026200, 0.903538784997308440, +0.903560209183743250, 0.903581631111277540, 0.903603050779857810, 0.903624468189430430, 0.903645883339941890, 0.903667296231338680, 0.903688706863567170, 0.903710115236574300, +0.903731521350305770, 0.903752925204708400, 0.903774326799728690, 0.903795726135313230, 0.903817123211408500, 0.903838518027960890, 0.903859910584916990, 0.903881300882223630, +0.903902688919826720, 0.903924074697673110, 0.903945458215709260, 0.903966839473881790, 0.903988218472137170, 0.904009595210422120, 0.904030969688683350, 0.904052341906866790, +0.904073711864919470, 0.904095079562787780, 0.904116445000418430, 0.904137808177757910, 0.904159169094752910, 0.904180527751350050, 0.904201884147496140, 0.904223238283137220, +0.904244590158220230, 0.904265939772691650, 0.904287287126498310, 0.904308632219586680, 0.904329975051903600, 0.904351315623395770, 0.904372653934009450, 0.904393989983691360, +0.904415323772388420, 0.904436655300047130, 0.904457984566614190, 0.904479311572036200, 0.904500636316260100, 0.904521958799232690, 0.904543279020900040, 0.904564596981209170, +0.904585912680106800, 0.904607226117539630, 0.904628537293454380, 0.904649846207797870, 0.904671152860516690, 0.904692457251558000, 0.904713759380867840, 0.904735059248393260, +0.904756356854081070, 0.904777652197877870, 0.904798945279730700, 0.904820236099586060, 0.904841524657391210, 0.904862810953092180, 0.904884094986636130, 0.904905376757969890, +0.904926656267040160, 0.904947933513793770, 0.904969208498177520, 0.904990481220138370, 0.905011751679623330, 0.905033019876578470, 0.905054285810951150, 0.905075549482688090, +0.905096810891736100, 0.905118070038042230, 0.905139326921553080, 0.905160581542215900, 0.905181833899977080, 0.905203083994783550, 0.905224331826582350, 0.905245577395320300, +0.905266820700944330, 0.905288061743401370, 0.905309300522638140, 0.905330537038602110, 0.905351771291239340, 0.905373003280497080, 0.905394233006322380, 0.905415460468662170, +0.905436685667463160, 0.905457908602672500, 0.905479129274237130, 0.905500347682104190, 0.905521563826220070, 0.905542777706532130, 0.905563989322987100, 0.905585198675532220, +0.905606405764114220, 0.905627610588680240, 0.905648813149177670, 0.905670013445552650, 0.905691211477752670, 0.905712407245724550, 0.905733600749415450, 0.905754791988772400, +0.905775980963742340, 0.905797167674272320, 0.905818352120309700, 0.905839534301800860, 0.905860714218693190, 0.905881891870933820, 0.905903067258469590, 0.905924240381247750, +0.905945411239215350, 0.905966579832319320, 0.905987746160507370, 0.906008910223725540, 0.906030072021921540, 0.906051231555042300, 0.906072388823034980, 0.906093543825846610, +0.906114696563424470, 0.906135847035716040, 0.906156995242667460, 0.906178141184226460, 0.906199284860340180, 0.906220426270955560, 0.906241565416019970, 0.906262702295480450, +0.906283836909284160, 0.906304969257378690, 0.906326099339710310, 0.906347227156226840, 0.906368352706875210, 0.906389475991602690, 0.906410597010356530, 0.906431715763083790, +0.906452832249732280, 0.906473946470248150, 0.906495058424579230, 0.906516168112672660, 0.906537275534475720, 0.906558380689935550, 0.906579483578999420, 0.906600584201614600, +0.906621682557728680, 0.906642778647288150, 0.906663872470240720, 0.906684964026533650, 0.906706053316114090, 0.906727140338929430, 0.906748225094926920, 0.906769307584053830, +0.906790387806257870, 0.906811465761485520, 0.906832541449684610, 0.906853614870802290, 0.906874686024785830, 0.906895754911582810, 0.906916821531140280, 0.906937885883406180, +0.906958947968326990, 0.906980007785850310, 0.907001065335923730, 0.907022120618494410, 0.907043173633509840, 0.907064224380917270, 0.907085272860664200, 0.907106319072698340, +0.907127363016966280, 0.907148404693415840, 0.907169444101994290, 0.907190481242649230, 0.907211516115327910, 0.907232548719977830, 0.907253579056546360, 0.907274607124981420, +0.907295632925229410, 0.907316656457238470, 0.907337677720955860, 0.907358696716328960, 0.907379713443305370, 0.907400727901832570, 0.907421740091858280, 0.907442750013329190, +0.907463757666193360, 0.907484763050398050, 0.907505766165890850, 0.907526767012619140, 0.907547765590530630, 0.907568761899572700, 0.907589755939693270, 0.907610747710838940, +0.907631737212957870, 0.907652724445997430, 0.907673709409905220, 0.907694692104628610, 0.907715672530115310, 0.907736650686313260, 0.907757626573169160, 0.907778600190631060, +0.907799571538646430, 0.907820540617162890, 0.907841507426127900, 0.907862471965489190, 0.907883434235194350, 0.907904394235191310, 0.907925351965426900, 0.907946307425849030, +0.907967260616405420, 0.907988211537043680, 0.908009160187711490, 0.908030106568356250, 0.908051050678925890, 0.908071992519368210, 0.908092932089630160, 0.908113869389659770, +0.908134804419404750, 0.908155737178812710, 0.908176667667831230, 0.908197595886408250, 0.908218521834491590, 0.908239445512028180, 0.908260366918966170, 0.908281286055253380, +0.908302202920837190, 0.908323117515665630, 0.908344029839686210, 0.908364939892846720, 0.908385847675095340, 0.908406753186378870, 0.908427656426645470, 0.908448557395843070, +0.908469456093919160, 0.908490352520821660, 0.908511246676498300, 0.908532138560896870, 0.908553028173965330, 0.908573915515650920, 0.908594800585901700, 0.908615683384665580, +0.908636563911890070, 0.908657442167523310, 0.908678318151512900, 0.908699191863806990, 0.908720063304352840, 0.908740932473098510, 0.908761799369991800, 0.908782663994980640, +0.908803526348012760, 0.908824386429036070, 0.908845244237998510, 0.908866099774848110, 0.908886953039532150, 0.908907804031998780, 0.908928652752195920, 0.908949499200071400, +0.908970343375573140, 0.908991185278649080, 0.909012024909247370, 0.909032862267315170, 0.909053697352800950, 0.909074530165652320, 0.909095360705817530, 0.909116188973244200, +0.909137014967880460, 0.909157838689674260, 0.909178660138573740, 0.909199479314526270, 0.909220296217480020, 0.909241110847383020, 0.909261923204183310, 0.909282733287828830, +0.909303541098267390, 0.909324346635447260, 0.909345149899316470, 0.909365950889822530, 0.909386749606913680, 0.909407546050537970, 0.909428340220643340, 0.909449132117177930, +0.909469921740089670, 0.909490709089327050, 0.909511494164837230, 0.909532276966568580, 0.909553057494469350, 0.909573835748487490, 0.909594611728570920, 0.909615385434667910, +0.909636156866726500, 0.909656926024694950, 0.909677692908520740, 0.909698457518152370, 0.909719219853537760, 0.909739979914625190, 0.909760737701362570, 0.909781493213698170, +0.909802246451580030, 0.909822997414956650, 0.909843746103775390, 0.909864492517984740, 0.909885236657532960, 0.909905978522367990, 0.909926718112438080, 0.909947455427691400, +0.909968190468076530, 0.909988923233540750, 0.910009653724032640, 0.910030381939500370, 0.910051107879892180, 0.910071831545156250, 0.910092552935240720, 0.910113272050093740, +0.910133988889664010, 0.910154703453898930, 0.910175415742747180, 0.910196125756156830, 0.910216833494076120, 0.910237538956453320, 0.910258242143236700, 0.910278943054374850, +0.910299641689815360, 0.910320338049506630, 0.910341032133397120, 0.910361723941435000, 0.910382413473568630, 0.910403100729746170, 0.910423785709916000, 0.910444468414026710, +0.910465148842025900, 0.910485826993862160, 0.910506502869483870, 0.910527176468839410, 0.910547847791876920, 0.910568516838544780, 0.910589183608791490, 0.910609848102565510, +0.910630510319814570, 0.910651170260487360, 0.910671827924532160, 0.910692483311897450, 0.910713136422531490, 0.910733787256382770, 0.910754435813399880, 0.910775082093530530, +0.910795726096723550, 0.910816367822927190, 0.910837007272089940, 0.910857644444160060, 0.910878279339086270, 0.910898911956816600, 0.910919542297300100, 0.910940170360484360, +0.910960796146318200, 0.910981419654750100, 0.911002040885728450, 0.911022659839201610, 0.911043276515118180, 0.911063890913426880, 0.911084503034075510, 0.911105112877012900, +0.911125720442187540, 0.911146325729547790, 0.911166928739042370, 0.911187529470619540, 0.911208127924227900, 0.911228724099816260, 0.911249317997332440, 0.911269909616725380, +0.911290498957943560, 0.911311086020935360, 0.911331670805649590, 0.911352253312034620, 0.911372833540038950, 0.911393411489611620, 0.911413987160700430, 0.911434560553254220, +0.911455131667221590, 0.911475700502551110, 0.911496267059191510, 0.911516831337091160, 0.911537393336199100, 0.911557953056463140, 0.911578510497832340, 0.911599065660255280, +0.911619618543680570, 0.911640169148056790, 0.911660717473332550, 0.911681263519456550, 0.911701807286377730, 0.911722348774044120, 0.911742887982404550, 0.911763424911407830, +0.911783959561002440, 0.911804491931137220, 0.911825022021760860, 0.911845549832821840, 0.911866075364269220, 0.911886598616051260, 0.911907119588116650, 0.911927638280414230, +0.911948154692892810, 0.911968668825500980, 0.911989180678187460, 0.912009690250901390, 0.912030197543590710, 0.912050702556204460, 0.912071205288691570, 0.912091705741000620, +0.912112203913080340, 0.912132699804879650, 0.912153193416347150, 0.912173684747432100, 0.912194173798082430, 0.912214660568247290, 0.912235145057875510, 0.912255627266915890, +0.912276107195317270, 0.912296584843028340, 0.912317060209998250, 0.912337533296175170, 0.912358004101508250, 0.912378472625946400, 0.912398938869438240, 0.912419402831932790, +0.912439864513378880, 0.912460323913725340, 0.912480781032921300, 0.912501235870914920, 0.912521688427655460, 0.912542138703091750, 0.912562586697172720, 0.912583032409847280, +0.912603475841064160, 0.912623916990772390, 0.912644355858921230, 0.912664792445458840, 0.912685226750334370, 0.912705658773496850, 0.912726088514895230, 0.912746515974478420, +0.912766941152195250, 0.912787364047995100, 0.912807784661826220, 0.912828202993637870, 0.912848619043378990, 0.912869032810998630, 0.912889444296445580, 0.912909853499669020, +0.912930260420617760, 0.912950665059241160, 0.912971067415487610, 0.912991467489306370, 0.913011865280646480, 0.913032260789456980, 0.913052654015686800, 0.913073044959284870, +0.913093433620200460, 0.913113819998382810, 0.913134204093780210, 0.913154585906342130, 0.913174965436017510, 0.913195342682755600, 0.913215717646505220, 0.913236090327215640, +0.913256460724836130, 0.913276828839315160, 0.913297194670602110, 0.913317558218646020, 0.913337919483396040, 0.913358278464801330, 0.913378635162810810, 0.913398989577373870, +0.913419341708439640, 0.913439691555956830, 0.913460039119874720, 0.913480384400142560, 0.913500727396709400, 0.913521068109524380, 0.913541406538536770, 0.913561742683696050, +0.913582076544950490, 0.913602408122249800, 0.913622737415543120, 0.913643064424779490, 0.913663389149908300, 0.913683711590878580, 0.913704031747639590, 0.913724349620140930, +0.913744665208330980, 0.913764978512159430, 0.913785289531575450, 0.913805598266528070, 0.913825904716966900, 0.913846208882840850, 0.913866510764099300, 0.913886810360691860, +0.913907107672567000, 0.913927402699674430, 0.913947695441963300, 0.913967985899383000, 0.913988274071882660, 0.914008559959411660, 0.914028843561919600, 0.914049124879355080, +0.914069403911667800, 0.914089680658807020, 0.914109955120721910, 0.914130227297362040, 0.914150497188676580, 0.914170764794614790, 0.914191030115126480, 0.914211293150160360, +0.914231553899665930, 0.914251812363592540, 0.914272068541889690, 0.914292322434506640, 0.914312574041392880, 0.914332823362497550, 0.914353070397770580, 0.914373315147160580, +0.914393557610617250, 0.914413797788090070, 0.914434035679528410, 0.914454271284881660, 0.914474504604099180, 0.914494735637130910, 0.914514964383925320, 0.914535190844432360, +0.914555415018601380, 0.914575636906381990, 0.914595856507723350, 0.914616073822575150, 0.914636288850886770, 0.914656501592608030, 0.914676712047687750, 0.914696920216075520, +0.914717126097721160, 0.914737329692573820, 0.914757531000583320, 0.914777730021698820, 0.914797926755870460, 0.914818121203046950, 0.914838313363178110, 0.914858503236213430, +0.914878690822102600, 0.914898876120794900, 0.914919059132240140, 0.914939239856387700, 0.914959418293187500, 0.914979594442588360, 0.914999768304540330, 0.915019939878992770, +0.915040109165895510, 0.915060276165197810, 0.915080440876849480, 0.915100603300800120, 0.915120763436999550, 0.915140921285396700, 0.915161076845941500, 0.915181230118583770, +0.915201381103272870, 0.915221529799958410, 0.915241676208590320, 0.915261820329118290, 0.915281962161491380, 0.915302101705659510, 0.915322238961572500, 0.915342373929179720, +0.915362506608431210, 0.915382636999276240, 0.915402765101664850, 0.915422890915546850, 0.915443014440871170, 0.915463135677588080, 0.915483254625647060, 0.915503371284997920, +0.915523485655590390, 0.915543597737374150, 0.915563707530298920, 0.915583815034314740, 0.915603920249370650, 0.915624023175416800, 0.915644123812402900, 0.915664222160278650, +0.915684318218993880, 0.915704411988498280, 0.915724503468742010, 0.915744592659674230, 0.915764679561244850, 0.915784764173403820, 0.915804846496100830, 0.915824926529285820, +0.915845004272908380, 0.915865079726918550, 0.915885152891266260, 0.915905223765900780, 0.915925292350772250, 0.915945358645830490, 0.915965422651025320, 0.915985484366306670, +0.916005543791624240, 0.916025600926928310, 0.916045655772168010, 0.916065708327293620, 0.916085758592254830, 0.916105806567001800, 0.916125852251484130, 0.916145895645651960, +0.916165936749455010, 0.916185975562843540, 0.916206012085766690, 0.916226046318174950, 0.916246078260018030, 0.916266107911245960, 0.916286135271808580, 0.916306160341655910, +0.916326183120737770, 0.916346203609004540, 0.916366221806405480, 0.916386237712890850, 0.916406251328410690, 0.916426262652914820, 0.916446271686353290, 0.916466278428676120, +0.916486282879833580, 0.916506285039775050, 0.916526284908450780, 0.916546282485810710, 0.916566277771804990, 0.916586270766383660, 0.916606261469496530, 0.916626249881093760, +0.916646236001125820, 0.916666219829541880, 0.916686201366292310, 0.916706180611327360, 0.916726157564596860, 0.916746132226051060, 0.916766104595639900, 0.916786074673313410, +0.916806042459022200, 0.916826007952715400, 0.916845971154343630, 0.916865932063857030, 0.916885890681205520, 0.916905847006339260, 0.916925801039208400, 0.916945752779763420, +0.916965702227953710, 0.916985649383729730, 0.917005594247041530, 0.917025536817839490, 0.917045477096073540, 0.917065415081693920, 0.917085350774650700, 0.917105284174894560, +0.917125215282374780, 0.917145144097041950, 0.917165070618846330, 0.917184994847738080, 0.917204916783667220, 0.917224836426584140, 0.917244753776439210, 0.917264668833182140, +0.917284581596763400, 0.917304492067133270, 0.917324400244241780, 0.917344306128039410, 0.917364209718476210, 0.917384111015502430, 0.917404010019068790, 0.917423906729124770, +0.917443801145620960, 0.917463693268507630, 0.917483583097735140, 0.917503470633253660, 0.917523355875013550, 0.917543238822964960, 0.917563119477058710, 0.917582997837244170, +0.917602873903472280, 0.917622747675693180, 0.917642619153857140, 0.917662488337914640, 0.917682355227815830, 0.917702219823511630, 0.917722082124951430, 0.917741942132086040, +0.917761799844865720, 0.917781655263240960, 0.917801508387162120, 0.917821359216579370, 0.917841207751443400, 0.917861053991704590, 0.917880897937312870, 0.917900739588218940, +0.917920578944373180, 0.917940416005725960, 0.917960250772227650, 0.917980083243828740, 0.917999913420479930, 0.918019741302131040, 0.918039566888732780, 0.918059390180235520, +0.918079211176589860, 0.918099029877746280, 0.918118846283654920, 0.918138660394266610, 0.918158472209531950, 0.918178281729400750, 0.918198088953823820, 0.918217893882751660, +0.918237696516134850, 0.918257496853923770, 0.918277294896068910, 0.918297090642520850, 0.918316884093230310, 0.918336675248147330, 0.918356464107222600, 0.918376250670406740, +0.918396034937650320, 0.918415816908903730, 0.918435596584117550, 0.918455373963242840, 0.918475149046229290, 0.918494921833027830, 0.918514692323589180, 0.918534460517863690, +0.918554226415802090, 0.918573990017354960, 0.918593751322472780, 0.918613510331106610, 0.918633267043206360, 0.918653021458722850, 0.918672773577606790, 0.918692523399808890, +0.918712270925279630, 0.918732016153969710, 0.918751759085829730, 0.918771499720810740, 0.918791238058862540, 0.918810974099936400, 0.918830707843982690, 0.918850439290952340, +0.918870168440795830, 0.918889895293463880, 0.918909619848907510, 0.918929342107076770, 0.918949062067922710, 0.918968779731396010, 0.918988495097447290, 0.919008208166027350, +0.919027918937086910, 0.919047627410576770, 0.919067333586447770, 0.919087037464650150, 0.919106739045134850, 0.919126438327852790, 0.919146135312754690, 0.919165829999791130, +0.919185522388913050, 0.919205212480071480, 0.919224900273216570, 0.919244585768299370, 0.919264268965270800, 0.919283949864081460, 0.919303628464682280, 0.919323304767024060, +0.919342978771057530, 0.919362650476733930, 0.919382319884003320, 0.919401986992816940, 0.919421651803125630, 0.919441314314880080, 0.919460974528031330, 0.919480632442530200, +0.919500288058327400, 0.919519941375374180, 0.919539592393620820, 0.919559241113018570, 0.919578887533518130, 0.919598531655070440, 0.919618173477626420, 0.919637813001137010, +0.919657450225553450, 0.919677085150825800, 0.919696717776905540, 0.919716348103743480, 0.919735976131290540, 0.919755601859497670, 0.919775225288315790, 0.919794846417695820, +0.919814465247589030, 0.919834081777945790, 0.919853696008717360, 0.919873307939854670, 0.919892917571308750, 0.919912524903030550, 0.919932129934970980, 0.919951732667081080, +0.919971333099312230, 0.919990931231614680, 0.920010527063939820, 0.920030120596238570, 0.920049711828462070, 0.920069300760561370, 0.920088887392487290, 0.920108471724191410, +0.920128053755624010, 0.920147633486736450, 0.920167210917479880, 0.920186786047805240, 0.920206358877663550, 0.920225929407006090, 0.920245497635783670, 0.920265063563947990, +0.920284627191449210, 0.920304188518238920, 0.920323747544268160, 0.920343304269487960, 0.920362858693849480, 0.920382410817303990, 0.920401960639802730, 0.920421508161296310, +0.920441053381735990, 0.920460596301073130, 0.920480136919258780, 0.920499675236243990, 0.920519211251980110, 0.920538744966418190, 0.920558276379509710, 0.920577805491205270, +0.920597332301456240, 0.920616856810213880, 0.920636379017429450, 0.920655898923053990, 0.920675416527038770, 0.920694931829335150, 0.920714444829894400, 0.920733955528667320, +0.920753463925605200, 0.920772970020659500, 0.920792473813781380, 0.920811975304922090, 0.920831474494032910, 0.920850971381065310, 0.920870465965969890, 0.920889958248698460, +0.920909448229201950, 0.920928935907431970, 0.920948421283339540, 0.920967904356876140, 0.920987385127992940, 0.921006863596641630, 0.921026339762772820, 0.921045813626338190, +0.921065285187289030, 0.921084754445576580, 0.921104221401152330, 0.921123686053967440, 0.921143148403973380, 0.921162608451121860, 0.921182066195363360, 0.921201521636649700, +0.921220974774932370, 0.921240425610162510, 0.921259874142291490, 0.921279320371270920, 0.921298764297052370, 0.921318205919586570, 0.921337645238825220, 0.921357082254719790, +0.921376516967221670, 0.921395949376282220, 0.921415379481852930, 0.921434807283885160, 0.921454232782330740, 0.921473655977140370, 0.921493076868265870, 0.921512495455658720, +0.921531911739270290, 0.921551325719052070, 0.921570737394955540, 0.921590146766932520, 0.921609553834933810, 0.921628958598911140, 0.921648361058816090, 0.921667761214600260, +0.921687159066214900, 0.921706554613611730, 0.921725947856742110, 0.921745338795557980, 0.921764727430010140, 0.921784113760050540, 0.921803497785630640, 0.921822879506701940, +0.921842258923216140, 0.921861636035124610, 0.921881010842379060, 0.921900383344931180, 0.921919753542732150, 0.921939121435733640, 0.921958487023887390, 0.921977850307144960, +0.921997211285457860, 0.922016569958777680, 0.922035926327056440, 0.922055280390245090, 0.922074632148295550, 0.922093981601159410, 0.922113328748788260, 0.922132673591133820, +0.922152016128147680, 0.922171356359781540, 0.922190694285987320, 0.922210029906716080, 0.922229363221919730, 0.922248694231549980, 0.922268022935558430, 0.922287349333896890, +0.922306673426516950, 0.922325995213370330, 0.922345314694409170, 0.922364631869584280, 0.922383946738847830, 0.922403259302151500, 0.922422569559447010, 0.922441877510686070, +0.922461183155820490, 0.922480486494802300, 0.922499787527582550, 0.922519086254113270, 0.922538382674346290, 0.922557676788233420, 0.922576968595726350, 0.922596258096776810, +0.922615545291336600, 0.922634830179357990, 0.922654112760791900, 0.922673393035590480, 0.922692671003705670, 0.922711946665089040, 0.922731220019692660, 0.922750491067468200, +0.922769759808367840, 0.922789026242342820, 0.922808290369345090, 0.922827552189326770, 0.922846811702239480, 0.922866068908035240, 0.922885323806665770, 0.922904576398082990, +0.922923826682239160, 0.922943074659085430, 0.922962320328573950, 0.922981563690656650, 0.923000804745285450, 0.923020043492412290, 0.923039279931989090, 0.923058514063967550, +0.923077745888300160, 0.923096975404937960, 0.923116202613833430, 0.923135427514938380, 0.923154650108204740, 0.923173870393584450, 0.923193088371029540, 0.923212304040492150, +0.923231517401923770, 0.923250728455276560, 0.923269937200502430, 0.923289143637553540, 0.923308347766381820, 0.923327549586939190, 0.923346749099177800, 0.923365946303049690, +0.923385141198506560, 0.923404333785500460, 0.923423524063983540, 0.923442712033907820, 0.923461897695225350, 0.923481081047888060, 0.923500262091848430, 0.923519440827057840, +0.923538617253468640, 0.923557791371033000, 0.923576963179702730, 0.923596132679430080, 0.923615299870167110, 0.923634464751865950, 0.923653627324478870, 0.923672787587957460, +0.923691945542254090, 0.923711101187320800, 0.923730254523109750, 0.923749405549573080, 0.923768554266662930, 0.923787700674331360, 0.923806844772530940, 0.923825986561213060, +0.923845126040330090, 0.923864263209834390, 0.923883398069678120, 0.923902530619813200, 0.923921660860192010, 0.923940788790767020, 0.923959914411489720, 0.923979037722312710, +0.923998158723188020, 0.924017277414067920, 0.924036393794904650, 0.924055507865650380, 0.924074619626257370, 0.924093729076678190, 0.924112836216864240, 0.924131941046768320, +0.924151043566342480, 0.924170143775538970, 0.924189241674310160, 0.924208337262608310, 0.924227430540385590, 0.924246521507594570, 0.924265610164186960, 0.924284696510115240, +0.924303780545331910, 0.924322862269788990, 0.924341941683439080, 0.924361018786234220, 0.924380093578127120, 0.924399166059069470, 0.924418236229013980, 0.924437304087912800, +0.924456369635718420, 0.924475432872383100, 0.924494493797859200, 0.924513552412099090, 0.924532608715055380, 0.924551662706679880, 0.924570714386925170, 0.924589763755743640, +0.924608810813087770, 0.924627855558909810, 0.924646897993162350, 0.924665938115797780, 0.924684975926768240, 0.924704011426026100, 0.924723044613523950, 0.924742075489214280, +0.924761104053049340, 0.924780130304981740, 0.924799154244963730, 0.924818175872948120, 0.924837195188886850, 0.924856212192732510, 0.924875226884437680, 0.924894239263954750, +0.924913249331236310, 0.924932257086234720, 0.924951262528902360, 0.924970265659192270, 0.924989266477056260, 0.925008264982447040, 0.925027261175317080, 0.925046255055618990, +0.925065246623305360, 0.925084235878328440, 0.925103222820641390, 0.925122207450195910, 0.925141189766944930, 0.925160169770841030, 0.925179147461836600, 0.925198122839884340, +0.925217095904936840, 0.925236066656946580, 0.925255035095866370, 0.925274001221648380, 0.925292965034245300, 0.925311926533609830, 0.925330885719694570, 0.925349842592452120, +0.925368797151834950, 0.925387749397795890, 0.925406699330287740, 0.925425646949262550, 0.925444592254673240, 0.925463535246472400, 0.925482475924612750, 0.925501414289046860, +0.925520350339727570, 0.925539284076607680, 0.925558215499639240, 0.925577144608775160, 0.925596071403968380, 0.925614995885171270, 0.925633918052336750, 0.925652837905417410, +0.925671755444366080, 0.925690670669135570, 0.925709583579678140, 0.925728494175946710, 0.925747402457894000, 0.925766308425472810, 0.925785212078635840, 0.925804113417335930, +0.925823012441525980, 0.925841909151158160, 0.925860803546185610, 0.925879695626561030, 0.925898585392237240, 0.925917472843166940, 0.925936357979303070, 0.925955240800598210, +0.925974121307005520, 0.925992999498477350, 0.926011875374966540, 0.926030748936426120, 0.926049620182808790, 0.926068489114067470, 0.926087355730154880, 0.926106220031023940, +0.926125082016627690, 0.926143941686918490, 0.926162799041849390, 0.926181654081373320, 0.926200506805443080, 0.926219357214011610, 0.926238205307031830, 0.926257051084456770, +0.926275894546238710, 0.926294735692331010, 0.926313574522686370, 0.926332411037257830, 0.926351245235998320, 0.926370077118860660, 0.926388906685797870, 0.926407733936763010, +0.926426558871708550, 0.926445381490587750, 0.926464201793353430, 0.926483019779958620, 0.926501835450356250, 0.926520648804499360, 0.926539459842340760, 0.926558268563833830, +0.926577074968931050, 0.926595879057585450, 0.926614680829750180, 0.926633480285378170, 0.926652277424422470, 0.926671072246836090, 0.926689864752572420, 0.926708654941583720, +0.926727442813823350, 0.926746228369244470, 0.926765011607799890, 0.926783792529442870, 0.926802571134126340, 0.926821347421803440, 0.926840121392427440, 0.926858893045950820, +0.926877662382326940, 0.926896429401508850, 0.926915194103449800, 0.926933956488102730, 0.926952716555420770, 0.926971474305357310, 0.926990229737864930, 0.927008982852896900, +0.927027733650406470, 0.927046482130346570, 0.927065228292670570, 0.927083972137331510, 0.927102713664282540, 0.927121452873477030, 0.927140189764867670, 0.927158924338407740, +0.927177656594050490, 0.927196386531749180, 0.927215114151456850, 0.927233839453126760, 0.927252562436712060, 0.927271283102166330, 0.927290001449441960, 0.927308717478492640, +0.927327431189271520, 0.927346142581731870, 0.927364851655826830, 0.927383558411509660, 0.927402262848733950, 0.927420964967452190, 0.927439664767618080, 0.927458362249184760, +0.927477057412105620, 0.927495750256333800, 0.927514440781822550, 0.927533128988525250, 0.927551814876395380, 0.927570498445385750, 0.927589179695449740, 0.927607858626540940, +0.927626535238612380, 0.927645209531617550, 0.927663881505509710, 0.927682551160242120, 0.927701218495768480, 0.927719883512041490, 0.927738546209014750, 0.927757206586641630, +0.927775864644875600, 0.927794520383669830, 0.927813173802977790, 0.927831824902753070, 0.927850473682948480, 0.927869120143517740, 0.927887764284414220, 0.927906406105591270, +0.927925045607002400, 0.927943682788600730, 0.927962317650339990, 0.927980950192173750, 0.927999580414054840, 0.928018208315936840, 0.928036833897773470, 0.928055457159517980, +0.928074078101123860, 0.928092696722544460, 0.928111313023733730, 0.928129927004644360, 0.928148538665230170, 0.928167148005444640, 0.928185755025241250, 0.928204359724573490, +0.928222962103394830, 0.928241562161658650, 0.928260159899318980, 0.928278755316328640, 0.928297348412641330, 0.928315939188210650, 0.928334527642990180, 0.928353113776933410, +0.928371697589993830, 0.928390279082124900, 0.928408858253280680, 0.928427435103414080, 0.928446009632478700, 0.928464581840428460, 0.928483151727216740, 0.928501719292797120, +0.928520284537123100, 0.928538847460148810, 0.928557408061827070, 0.928575966342111810, 0.928594522300956630, 0.928613075938315100, 0.928631627254140950, 0.928650176248387640, +0.928668722921008990, 0.928687267271958830, 0.928705809301190070, 0.928724349008656970, 0.928742886394312910, 0.928761421458111580, 0.928779954200006700, 0.928798484619952070, +0.928817012717901400, 0.928835538493807960, 0.928854061947625650, 0.928872583079308200, 0.928891101888809300, 0.928909618376082550, 0.928928132541081860, 0.928946644383760840, +0.928965153904073530, 0.928983661101972950, 0.929002165977413250, 0.929020668530348150, 0.929039168760731340, 0.929057666668516640, 0.929076162253657860, 0.929094655516108590, +0.929113146455822990, 0.929131635072754200, 0.929150121366856260, 0.929168605338083100, 0.929187086986388410, 0.929205566311726020, 0.929224043314049730, 0.929242517993313700, +0.929260990349470960, 0.929279460382475770, 0.929297928092281960, 0.929316393478843210, 0.929334856542113560, 0.929353317282046840, 0.929371775698596750, 0.929390231791717540, +0.929408685561362470, 0.929427137007485690, 0.929445586130041020, 0.929464032928982390, 0.929482477404263710, 0.929500919555838800, 0.929519359383661590, 0.929537796887686340, +0.929556232067866310, 0.929574664924155640, 0.929593095456508260, 0.929611523664878200, 0.929629949549219400, 0.929648373109485560, 0.929666794345631260, 0.929685213257609670, +0.929703629845374910, 0.929722044108881150, 0.929740456048082310, 0.929758865662932310, 0.929777272953385080, 0.929795677919394770, 0.929814080560915520, 0.929832480877900710, +0.929850878870304820, 0.929869274538081660, 0.929887667881185260, 0.929906058899569790, 0.929924447593189150, 0.929942833961997730, 0.929961218005948780, 0.929979599724996890, +0.929997979119095990, 0.930016356188200220, 0.930034730932263410, 0.930053103351239810, 0.930071473445083560, 0.930089841213748820, 0.930108206657189300, 0.930126569775359120, +0.930144930568212570, 0.930163289035703670, 0.930181645177786560, 0.930199998994415410, 0.930218350485544130, 0.930236699651127430, 0.930255046491118560, 0.930273391005472130, +0.930291733194142270, 0.930310073057083020, 0.930328410594248530, 0.930346745805593070, 0.930365078691071100, 0.930383409250636010, 0.930401737484242490, 0.930420063391844580, +0.930438386973396540, 0.930456708228852510, 0.930475027158166770, 0.930493343761293450, 0.930511658038187030, 0.930529969988801110, 0.930548279613090390, 0.930566586911008910, +0.930584891882510920, 0.930603194527550800, 0.930621494846082590, 0.930639792838060750, 0.930658088503439670, 0.930676381842173050, 0.930694672854215480, 0.930712961539521210, +0.930731247898044620, 0.930749531929739860, 0.930767813634561290, 0.930786093012463510, 0.930804370063400110, 0.930822644787325790, 0.930840917184194930, 0.930859187253961770, +0.930877454996580590, 0.930895720412005860, 0.930913983500191720, 0.930932244261093000, 0.930950502694663400, 0.930968758800857500, 0.930987012579629680, 0.931005264030934310, +0.931023513154725760, 0.931041759950958500, 0.931060004419587140, 0.931078246560565480, 0.931096486373848120, 0.931114723859389650, 0.931132959017144320, 0.931151191847066630, +0.931169422349110820, 0.931187650523231600, 0.931205876369383570, 0.931224099887520420, 0.931242321077597190, 0.931260539939568030, 0.931278756473387540, 0.931296970679010180, +0.931315182556390340, 0.931333392105482600, 0.931351599326241670, 0.931369804218621480, 0.931388006782576720, 0.931406207018061980, 0.931424404925031650, 0.931442600503440410, +0.931460793753242640, 0.931478984674393160, 0.931497173266845890, 0.931515359530555750, 0.931533543465477230, 0.931551725071564810, 0.931569904348773070, 0.931588081297056500, +0.931606255916369810, 0.931624428206667800, 0.931642598167904400, 0.931660765800034540, 0.931678931103012700, 0.931697094076793570, 0.931715254721331650, 0.931733413036581640, +0.931751569022498120, 0.931769722679036020, 0.931787874006149150, 0.931806023003792780, 0.931824169671921280, 0.931842314010489340, 0.931860456019451560, 0.931878595698762750, +0.931896733048377720, 0.931914868068250520, 0.931933000758336180, 0.931951131118589290, 0.931969259148964560, 0.931987384849416790, 0.932005508219900470, 0.932023629260370410, +0.932041747970781650, 0.932059864351088120, 0.932077978401244960, 0.932096090121206870, 0.932114199510928550, 0.932132306570364720, 0.932150411299470070, 0.932168513698199750, +0.932186613766507800, 0.932204711504349360, 0.932222806911679140, 0.932240899988451940, 0.932258990734622480, 0.932277079150145460, 0.932295165234975800, 0.932313248989068530, +0.932331330412377920, 0.932349409504858890, 0.932367486266466260, 0.932385560697155060, 0.932403632796879880, 0.932421702565595640, 0.932439770003257170, 0.932457835109819500, +0.932475897885236990, 0.932493958329464800, 0.932512016442457630, 0.932530072224170390, 0.932548125674558030, 0.932566176793575340, 0.932584225581177590, 0.932602272037318820, +0.932620316161954510, 0.932638357955039350, 0.932656397416528280, 0.932674434546376220, 0.932692469344538090, 0.932710501810968820, 0.932728531945623550, 0.932746559748456660, +0.932764585219423400, 0.932782608358478590, 0.932800629165577380, 0.932818647640674570, 0.932836663783725100, 0.932854677594683880, 0.932872689073506400, 0.932890698220146920, +0.932908705034560580, 0.932926709516702530, 0.932944711666527820, 0.932962711483991130, 0.932980708969047830, 0.932998704121652980, 0.933016696941761040, 0.933034687429327380, +0.933052675584307050, 0.933070661406654960, 0.933088644896326260, 0.933106626053275990, 0.933124604877459070, 0.933142581368830990, 0.933160555527346110, 0.933178527352959920, +0.933196496845627330, 0.933214464005303610, 0.933232428831943570, 0.933250391325502580, 0.933268351485935900, 0.933286309313198000, 0.933304264807244380, 0.933322217968030050, +0.933340168795510180, 0.933358117289639910, 0.933376063450374270, 0.933394007277668520, 0.933411948771478150, 0.933429887931757520, 0.933447824758462220, 0.933465759251547290, +0.933483691410967990, 0.933501621236679460, 0.933519548728636850, 0.933537473886795420, 0.933555396711110540, 0.933573317201536910, 0.933591235358030010, 0.933609151180544990, +0.933627064669037110, 0.933644975823461620, 0.933662884643773560, 0.933680791129928740, 0.933698695281881540, 0.933716597099587650, 0.933734496583002230, 0.933752393732080520, +0.933770288546777900, 0.933788181027049640, 0.933806071172850750, 0.933823958984137170, 0.933841844460863270, 0.933859727602984750, 0.933877608410456970, 0.933895486883235090, +0.933913363021274590, 0.933931236824530610, 0.933949108292958850, 0.933966977426514020, 0.933984844225151820, 0.934002708688827400, 0.934020570817496340, 0.934038430611113800, +0.934056288069635140, 0.934074143193015740, 0.934091995981211400, 0.934109846434176610, 0.934127694551867280, 0.934145540334238800, 0.934163383781246300, 0.934181224892845500, +0.934199063668991530, 0.934216900109639980, 0.934234734214746450, 0.934252565984265760, 0.934270395418153710, 0.934288222516365560, 0.934306047278857020, 0.934323869705583230, +0.934341689796499790, 0.934359507551562500, 0.934377322970726070, 0.934395136053946310, 0.934412946801178810, 0.934430755212378840, 0.934448561287501980, 0.934466365026503820, +0.934484166429339740, 0.934501965495965430, 0.934519762226336040, 0.934537556620407160, 0.934555348678134390, 0.934573138399473200, 0.934590925784379300, 0.934608710832807940, +0.934626493544714940, 0.934644273920055890, 0.934662051958785930, 0.934679827660860880, 0.934697601026236110, 0.934715372054867540, 0.934733140746710320, 0.934750907101720370, +0.934768671119853510, 0.934786432801064550, 0.934804192145309630, 0.934821949152544130, 0.934839703822723740, 0.934857456155804180, 0.934875206151740910, 0.934892953810489760, +0.934910699132006420, 0.934928442116246040, 0.934946182763164550, 0.934963921072717530, 0.934981657044860800, 0.934999390679549960, 0.935017121976740580, 0.935034850936388720, +0.935052577558449390, 0.935070301842878650, 0.935088023789632180, 0.935105743398665590, 0.935123460669934680, 0.935141175603395160, 0.935158888199002610, 0.935176598456713190, +0.935194306376482040, 0.935212011958264980, 0.935229715202018030, 0.935247416107696680, 0.935265114675256860, 0.935282810904654260, 0.935300504795844590, 0.935318196348783990, +0.935335885563427620, 0.935353572439731500, 0.935371256977651440, 0.935388939177143160, 0.935406619038162690, 0.935424296560665610, 0.935441971744608080, 0.935459644589945350, +0.935477315096633450, 0.935494983264628320, 0.935512649093885650, 0.935530312584361480, 0.935547973736011400, 0.935565632548791440, 0.935583289022657750, 0.935600943157565480, +0.935618594953470880, 0.935636244410329780, 0.935653891528098080, 0.935671536306731720, 0.935689178746186400, 0.935706818846418150, 0.935724456607383240, 0.935742092029036800, +0.935759725111335210, 0.935777355854234270, 0.935794984257689920, 0.935812610321658080, 0.935830234046094780, 0.935847855430956170, 0.935865474476197610, 0.935883091181775370, +0.935900705547645370, 0.935918317573763650, 0.935935927260086120, 0.935953534606568830, 0.935971139613167690, 0.935988742279838970, 0.936006342606538030, 0.936023940593221360, +0.936041536239844760, 0.936059129546364390, 0.936076720512736050, 0.936094309138916000, 0.936111895424860510, 0.936129479370524930, 0.936147060975865750, 0.936164640240838790, +0.936182217165400290, 0.936199791749506290, 0.936217363993112730, 0.936234933896175740, 0.936252501458651800, 0.936270066680496280, 0.936287629561665670, 0.936305190102115880, +0.936322748301803070, 0.936340304160683480, 0.936357857678713160, 0.936375408855848130, 0.936392957692044890, 0.936410504187259020, 0.936428048341446770, 0.936445590154564410, +0.936463129626568190, 0.936480666757414040, 0.936498201547058320, 0.936515733995457290, 0.936533264102566760, 0.936550791868342890, 0.936568317292742150, 0.936585840375720680, +0.936603361117234520, 0.936620879517239930, 0.936638395575693170, 0.936655909292550830, 0.936673420667768260, 0.936690929701302190, 0.936708436393108860, 0.936725940743144410, +0.936743442751365010, 0.936760942417727120, 0.936778439742186890, 0.936795934724700800, 0.936813427365224550, 0.936830917663714740, 0.936848405620127720, 0.936865891234419550, +0.936883374506546800, 0.936900855436465510, 0.936918334024132380, 0.936935810269503230, 0.936953284172534430, 0.936970755733182450, 0.936988224951403550, 0.937005691827154210, +0.937023156360390570, 0.937040618551069020, 0.937058078399146230, 0.937075535904577930, 0.937092991067320800, 0.937110443887331220, 0.937127894364565560, 0.937145342498980070, +0.937162788290531350, 0.937180231739175860, 0.937197672844869540, 0.937215111607568980, 0.937232548027230660, 0.937249982103810940, 0.937267413837266420, 0.937284843227553230, +0.937302270274627980, 0.937319694978447360, 0.937337117338967070, 0.937354537356144160, 0.937371955029934870, 0.937389370360295570, 0.937406783347182970, 0.937424193990553430, +0.937441602290363330, 0.937459008246569580, 0.937476411859128000, 0.937493813127995290, 0.937511212053128150, 0.937528608634482950, 0.937546002872016280, 0.937563394765684510, +0.937580784315444670, 0.937598171521252470, 0.937615556383064930, 0.937632938900838430, 0.937650319074529560, 0.937667696904095020, 0.937685072389491060, 0.937702445530674610, +0.937719816327602150, 0.937737184780230050, 0.937754550888514780, 0.937771914652413270, 0.937789276071882010, 0.937806635146877450, 0.937823991877356320, 0.937841346263275310, +0.937858698304591120, 0.937876048001259900, 0.937893395353238570, 0.937910740360483830, 0.937928083022952160, 0.937945423340600270, 0.937962761313384850, 0.937980096941262830, +0.937997430224190350, 0.938014761162124230, 0.938032089755021170, 0.938049416002837870, 0.938066739905531130, 0.938084061463057450, 0.938101380675373630, 0.938118697542436710, +0.938136012064202720, 0.938153324240628690, 0.938170634071671340, 0.938187941557287350, 0.938205246697433660, 0.938222549492066740, 0.938239849941143730, 0.938257148044620900, +0.938274443802455060, 0.938291737214603240, 0.938309028281022030, 0.938326317001668240, 0.938343603376498690, 0.938360887405470080, 0.938378169088539550, 0.938395448425663360, +0.938412725416798540, 0.938430000061901910, 0.938447272360930170, 0.938464542313840360, 0.938481809920589160, 0.938499075181133510, 0.938516338095430340, 0.938533598663436110, +0.938550856885107860, 0.938568112760402530, 0.938585366289276800, 0.938602617471687720, 0.938619866307592090, 0.938637112796947170, 0.938654356939709110, 0.938671598735835170, +0.938688838185282150, 0.938706075288007090, 0.938723310043966810, 0.938740542453118330, 0.938757772515418480, 0.938775000230824500, 0.938792225599292650, 0.938809448620780310, +0.938826669295244280, 0.938843887622641700, 0.938861103602929290, 0.938878317236064190, 0.938895528522003200, 0.938912737460703810, 0.938929944052122160, 0.938947148296215730, +0.938964350192941330, 0.938981549742256230, 0.938998746944117110, 0.939015941798481140, 0.939033134305305660, 0.939050324464547060, 0.939067512276162590, 0.939084697740109390, +0.939101880856344380, 0.939119061624824720, 0.939136240045507440, 0.939153416118349570, 0.939170589843308370, 0.939187761220340420, 0.939204930249403100, 0.939222096930453440, +0.939239261263448480, 0.939256423248345460, 0.939273582885101320, 0.939290740173673640, 0.939307895114018690, 0.939325047706094040, 0.939342197949856740, 0.939359345845263930, +0.939376491392272860, 0.939393634590840470, 0.939410775440924000, 0.939427913942480930, 0.939445050095467750, 0.939462183899841930, 0.939479315355560730, 0.939496444462581180, +0.939513571220860540, 0.939530695630355960, 0.939547817691024580, 0.939564937402824100, 0.939582054765710880, 0.939599169779642530, 0.939616282444576290, 0.939633392760469310, +0.939650500727278850, 0.939667606344962160, 0.939684709613476720, 0.939701810532779240, 0.939718909102827180, 0.939736005323577930, 0.939753099194988620, 0.939770190717016510, +0.939787279889618970, 0.939804366712753250, 0.939821451186376940, 0.939838533310446640, 0.939855613084920050, 0.939872690509754420, 0.939889765584907110, 0.939906838310335280, +0.939923908685996400, 0.939940976711848060, 0.939958042387846970, 0.939975105713950820, 0.939992166690116870, 0.940009225316302490, 0.940026281592465040, 0.940043335518561900, +0.940060387094550420, 0.940077436320388320, 0.940094483196032280, 0.940111527721440020, 0.940128569896569010, 0.940145609721376510, 0.940162647195819990, 0.940179682319856940, +0.940196715093444600, 0.940213745516540690, 0.940230773589102230, 0.940247799311086820, 0.940264822682451930, 0.940281843703154930, 0.940298862373153410, 0.940315878692404630, +0.940332892660866500, 0.940349904278495850, 0.940366913545250480, 0.940383920461087760, 0.940400925025965280, 0.940417927239840410, 0.940434927102670850, 0.940451924614413850, +0.940468919775027450, 0.940485912584468340, 0.940502903042694460, 0.940519891149663390, 0.940536876905332610, 0.940553860309659600, 0.940570841362601940, 0.940587820064117120, +0.940604796414163060, 0.940621770412696790, 0.940638742059676130, 0.940655711355058430, 0.940672678298801630, 0.940689642890863100, 0.940706605131200410, 0.940723565019771500, +0.940740522556533400, 0.940757477741444030, 0.940774430574460860, 0.940791381055541720, 0.940808329184644080, 0.940825274961725630, 0.940842218386744090, 0.940859159459657150, +0.940876098180422060, 0.940893034548996750, 0.940909968565338820, 0.940926900229406060, 0.940943829541155960, 0.940960756500546340, 0.940977681107535100, 0.940994603362079300, +0.941011523264137060, 0.941028440813665990, 0.941045356010623890, 0.941062268854968350, 0.941079179346657080, 0.941096087485647880, 0.941112993271898790, 0.941129896705366950, +0.941146797786010400, 0.941163696513786730, 0.941180592888653860, 0.941197486910569590, 0.941214378579491530, 0.941231267895377590, 0.941248154858185690, 0.941265039467873100, +0.941281921724397950, 0.941298801627718060, 0.941315679177791130, 0.941332554374574970, 0.941349427218027390, 0.941366297708106650, 0.941383165844769780, 0.941400031627975030, +0.941416895057680110, 0.941433756133843060, 0.941450614856421560, 0.941467471225373550, 0.941484325240656950, 0.941501176902229680, 0.941518026210049320, 0.941534873164073800, +0.941551717764261160, 0.941568560010569100, 0.941585399902955760, 0.941602237441378940, 0.941619072625796470, 0.941635905456166600, 0.941652735932446690, 0.941669564054594900, +0.941686389822569250, 0.941703213236327660, 0.941720034295827960, 0.941736853001028160, 0.941753669351886650, 0.941770483348360550, 0.941787294990408250, 0.941804104277987770, +0.941820911211057040, 0.941837715789573980, 0.941854518013496620, 0.941871317882783000, 0.941888115397391370, 0.941904910557279210, 0.941921703362404770, 0.941938493812725990, +0.941955281908200990, 0.941972067648787830, 0.941988851034444520, 0.942005632065129330, 0.942022410740799730, 0.942039187061414210, 0.942055961026930570, 0.942072732637307180, +0.942089501892501850, 0.942106268792472830, 0.942123033337178170, 0.942139795526576120, 0.942156555360624370, 0.942173312839281190, 0.942190067962504820, 0.942206820730253190, +0.942223571142484450, 0.942240319199156850, 0.942257064900228540, 0.942273808245657760, 0.942290549235402120, 0.942307287869420200, 0.942324024147670030, 0.942340758070109860, +0.942357489636697740, 0.942374218847391810, 0.942390945702150760, 0.942407670200931970, 0.942424392343694130, 0.942441112130395160, 0.942457829560993440, 0.942474544635447220, +0.942491257353714640, 0.942507967715753850, 0.942524675721523430, 0.942541381370981090, 0.942558084664085190, 0.942574785600794220, 0.942591484181066200, 0.942608180404859500, +0.942624874272132370, 0.942641565782842970, 0.942658254936949990, 0.942674941734411130, 0.942691626175184870, 0.942708308259229580, 0.942724987986503500, 0.942741665356964910, +0.942758340370572160, 0.942775013027283950, 0.942791683327057760, 0.942808351269852520, 0.942825016855626250, 0.942841680084337550, 0.942858340955944670, 0.942874999470405870, +0.942891655627679630, 0.942908309427724410, 0.942924960870498260, 0.942941609955959660, 0.942958256684067080, 0.942974901054778770, 0.942991543068053330, 0.943008182723848900, +0.943024820022124400, 0.943041454962837530, 0.943058087545947000, 0.943074717771411280, 0.943091345639188730, 0.943107971149237830, 0.943124594301517070, 0.943141215095984810, +0.943157833532599740, 0.943174449611319800, 0.943191063332103790, 0.943207674694910070, 0.943224283699697130, 0.943240890346423560, 0.943257494635047710, 0.943274096565528190, +0.943290696137823680, 0.943307293351892120, 0.943323888207692420, 0.943340480705182840, 0.943357070844322190, 0.943373658625068830, 0.943390244047381370, 0.943406827111218480, +0.943423407816538330, 0.943439986163299600, 0.943456562151460900, 0.943473135780980800, 0.943489707051817890, 0.943506275963930660, 0.943522842517277800, 0.943539406711818130, +0.943555968547509670, 0.943572528024311240, 0.943589085142181540, 0.943605639901079040, 0.943622192300962450, 0.943638742341790460, 0.943655290023521550, 0.943671835346114760, +0.943688378309528010, 0.943704918913720440, 0.943721457158650520, 0.943737993044276860, 0.943754526570558360, 0.943771057737453400, 0.943787586544921230, 0.943804112992919770, +0.943820637081407950, 0.943837158810344580, 0.943853678179688350, 0.943870195189397850, 0.943886709839431900, 0.943903222129749200, 0.943919732060308770, 0.943936239631068650, +0.943952744841987880, 0.943969247693025370, 0.943985748184139720, 0.944002246315289620, 0.944018742086433990, 0.944035235497531770, 0.944051726548541080, 0.944068215239421190, +0.944084701570130690, 0.944101185540628500, 0.944117667150873310, 0.944134146400824050, 0.944150623290439310, 0.944167097819678340, 0.944183569988499280, 0.944200039796861290, +0.944216507244723280, 0.944232972332043950, 0.944249435058782230, 0.944265895424896920, 0.944282353430346830, 0.944298809075091230, 0.944315262359088250, 0.944331713282297150, +0.944348161844676740, 0.944364608046185940, 0.944381051886783560, 0.944397493366428640, 0.944413932485080210, 0.944430369242696740, 0.944446803639237280, 0.944463235674660840, +0.944479665348926250, 0.944496092661992640, 0.944512517613818600, 0.944528940204363400, 0.944545360433586170, 0.944561778301445170, 0.944578193807899760, 0.944594606952908870, +0.944611017736431410, 0.944627426158426430, 0.944643832218852840, 0.944660235917670120, 0.944676637254836420, 0.944693036230311090, 0.944709432844053180, 0.944725827096021710, +0.944742218986175720, 0.944758608514474130, 0.944774995680875970, 0.944791380485340730, 0.944807762927826640, 0.944824143008293200, 0.944840520726699440, 0.944856896083004270, +0.944873269077166960, 0.944889639709146410, 0.944906007978901790, 0.944922373886392440, 0.944938737431576860, 0.944955098614414510, 0.944971457434864330, 0.944987813892885550, +0.945004167988437230, 0.945020519721478380, 0.945036869091968600, 0.945053216099866370, 0.945069560745131150, 0.945085903027722000, 0.945102242947598040, 0.945118580504718530, +0.945134915699042510, 0.945151248530529230, 0.945167578999138170, 0.945183907104827800, 0.945200232847557720, 0.945216556227287060, 0.945232877243974980, 0.945249195897580720, +0.945265512188063430, 0.945281826115382360, 0.945298137679497000, 0.945314446880366140, 0.945330753717949060, 0.945347058192205100, 0.945363360303093540, 0.945379660050573500, +0.945395957434604360, 0.945412252455145600, 0.945428545112155900, 0.945444835405594870, 0.945461123335421760, 0.945477408901595820, 0.945493692104076410, 0.945509972942822690, +0.945526251417794120, 0.945542527528950180, 0.945558801276249580, 0.945575072659652020, 0.945591341679116850, 0.945607608334603220, 0.945623872626070620, 0.945640134553478280, +0.945656394116785930, 0.945672651315952350, 0.945688906150937040, 0.945705158621699570, 0.945721408728199210, 0.945737656470395200, 0.945753901848247150, 0.945770144861714400, +0.945786385510756440, 0.945802623795332310, 0.945818859715401580, 0.945835093270923740, 0.945851324461858160, 0.945867553288164300, 0.945883779749801530, 0.945900003846729230, +0.945916225578907310, 0.945932444946294470, 0.945948661948850630, 0.945964876586535050, 0.945981088859307320, 0.945997298767126790, 0.946013506309953070, 0.946029711487745840, +0.946045914300464030, 0.946062114748067560, 0.946078312830515690, 0.946094508547768110, 0.946110701899784190, 0.946126892886523520, 0.946143081507945680, 0.946159267764010380, +0.946175451654676540, 0.946191633179904180, 0.946207812339652790, 0.946223989133881730, 0.946240163562550810, 0.946256335625619390, 0.946272505323047190, 0.946288672654793990, +0.946304837620818850, 0.946321000221081570, 0.946337160455541840, 0.946353318324159140, 0.946369473826893290, 0.946385626963703650, 0.946401777734550140, 0.946417926139392020, +0.946434072178189090, 0.946450215850900940, 0.946466357157487280, 0.946482496097907690, 0.946498632672121860, 0.946514766880089510, 0.946530898721770540, 0.946547028197124000, +0.946563155306109790, 0.946579280048687850, 0.946595402424817660, 0.946611522434458900, 0.946627640077571390, 0.946643755354115050, 0.946659868264049020, 0.946675978807333340, +0.946692086983927710, 0.946708192793791930, 0.946724296236885590, 0.946740397313168500, 0.946756496022600480, 0.946772592365141440, 0.946788686340750640, 0.946804777949388110, +0.946820867191013770, 0.946836954065587100, 0.946853038573068130, 0.946869120713416560, 0.946885200486592190, 0.946901277892555070, 0.946917352931264440, 0.946933425602680570, +0.946949495906763030, 0.946965563843471750, 0.946981629412766530, 0.946997692614607310, 0.947013753448954110, 0.947029811915766300, 0.947045868015003900, 0.947061921746626840, +0.947077973110594940, 0.947094022106868110, 0.947110068735406260, 0.947126112996169220, 0.947142154889117240, 0.947158194414209560, 0.947174231571406340, 0.947190266360667610, +0.947206298781953170, 0.947222328835223060, 0.947238356520437090, 0.947254381837555170, 0.947270404786537570, 0.947286425367343750, 0.947302443579933870, 0.947318459424267840, +0.947334472900305700, 0.947350484008007370, 0.947366492747332760, 0.947382499118242240, 0.947398503120695290, 0.947414504754651940, 0.947430504020072450, 0.947446500916916620, +0.947462495445144490, 0.947478487604716200, 0.947494477395591670, 0.947510464817731270, 0.947526449871094360, 0.947542432555641410, 0.947558412871332360, 0.947574390818127220, +0.947590366395986150, 0.947606339604869060, 0.947622310444736550, 0.947638278915547860, 0.947654245017263590, 0.947670208749843650, 0.947686170113248180, 0.947702129107437340, +0.947718085732371150, 0.947734039988009650, 0.947749991874313410, 0.947765941391241930, 0.947781888538755560, 0.947797833316814550, 0.947813775725378840, 0.947829715764408780, +0.947845653433864400, 0.947861588733705850, 0.947877521663893720, 0.947893452224387370, 0.947909380415147500, 0.947925306236134140, 0.947941229687307430, 0.947957150768627740, +0.947973069480055110, 0.947988985821550220, 0.948004899793072450, 0.948020811394582500, 0.948036720626040500, 0.948052627487406710, 0.948068531978641270, 0.948084434099704660, +0.948100333850556810, 0.948116231231158510, 0.948132126241469250, 0.948148018881449840, 0.948163909151060190, 0.948179797050260900, 0.948195682579012100, 0.948211565737274050, +0.948227446525007120, 0.948243324942171780, 0.948259200988727960, 0.948275074664636120, 0.948290945969856520, 0.948306814904349650, 0.948322681468075630, 0.948338545660994960, +0.948354407483068210, 0.948370266934255190, 0.948386124014516500, 0.948401978723812490, 0.948417831062103530, 0.948433681029350000, 0.948449528625512240, 0.948465373850550630, +0.948481216704425980, 0.948497057187097870, 0.948512895298527230, 0.948528731038674300, 0.948544564407499570, 0.948560395404963400, 0.948576224031026260, 0.948592050285648750, +0.948607874168791000, 0.948623695680413490, 0.948639514820476700, 0.948655331588941110, 0.948671145985767290, 0.948686958010915520, 0.948702767664346360, 0.948718574946020630, +0.948734379855898150, 0.948750182393939710, 0.948765982560105800, 0.948781780354357010, 0.948797575776653690, 0.948813368826956440, 0.948829159505225840, 0.948844947811422480, +0.948860733745506610, 0.948876517307438830, 0.948892298497179820, 0.948908077314689960, 0.948923853759929940, 0.948939627832860340, 0.948955399533441990, 0.948971168861634800, +0.948986935817399680, 0.949002700400697230, 0.949018462611488030, 0.949034222449732680, 0.949049979915391750, 0.949065735008425840, 0.949081487728795970, 0.949097238076462070, +0.949112986051385050, 0.949128731653525510, 0.949144474882844260, 0.949160215739301760, 0.949175954222858720, 0.949191690333476060, 0.949207424071113910, 0.949223155435733210, +0.949238884427294650, 0.949254611045758810, 0.949270335291086510, 0.949286057163238330, 0.949301776662174970, 0.949317493787857570, 0.949333208540246050, 0.949348920919301560, +0.949364630924984800, 0.949380338557256340, 0.949396043816077120, 0.949411746701407820, 0.949427447213209040, 0.949443145351442030, 0.949458841116066820, 0.949474534507044550, +0.949490225524335930, 0.949505914167901750, 0.949521600437702840, 0.949537284333699770, 0.949552965855853910, 0.949568645004125300, 0.949584321778475070, 0.949599996178864150, +0.949615668205253120, 0.949631337857602900, 0.949647005135874410, 0.949662670040028360, 0.949678332570025980, 0.949693992725827440, 0.949709650507393870, 0.949725305914686290, +0.949740958947665300, 0.949756609606292050, 0.949772257890527220, 0.949787903800331730, 0.949803547335666850, 0.949819188496492720, 0.949834827282770690, 0.949850463694461470, +0.949866097731526190, 0.949881729393925680, 0.949897358681620840, 0.949912985594572820, 0.949928610132742100, 0.949944232296089820, 0.949959852084577010, 0.949975469498164580, +0.949991084536813470, 0.950006697200484580, 0.950022307489139070, 0.950037915402737960, 0.950053520941241850, 0.950069124104611860, 0.950084724892809150, 0.950100323305794530, +0.950115919343529240, 0.950131513005973980, 0.950147104293090350, 0.950162693204838700, 0.950178279741180190, 0.950193863902076050, 0.950209445687487220, 0.950225025097374830, +0.950240602131699920, 0.950256176790423400, 0.950271749073506760, 0.950287318980910460, 0.950302886512595870, 0.950318451668524020, 0.950334014448656170, 0.950349574852953130, +0.950365132881376250, 0.950380688533886460, 0.950396241810445350, 0.950411792711013280, 0.950427341235551730, 0.950442887384021830, 0.950458431156384730, 0.950473972552601460, +0.950489511572633390, 0.950505048216441770, 0.950520582483987190, 0.950536114375231220, 0.950551643890135020, 0.950567171028659620, 0.950582695790766260, 0.950598218176416320, +0.950613738185570710, 0.950629255818191020, 0.950644771074237950, 0.950660283953672970, 0.950675794456457220, 0.950691302582552080, 0.950706808331918560, 0.950722311704518150, +0.950737812700311880, 0.950753311319261440, 0.950768807561327310, 0.950784301426471300, 0.950799792914654440, 0.950815282025838090, 0.950830768759983620, 0.950846253117052180, +0.950861735097005440, 0.950877214699804020, 0.950892691925409590, 0.950908166773783430, 0.950923639244886760, 0.950939109338681090, 0.950954577055127650, 0.950970042394187810, +0.950985505355823050, 0.951000965939994280, 0.951016424146663100, 0.951031879975790860, 0.951047333427338940, 0.951062784501268690, 0.951078233197541370, 0.951093679516118900, +0.951109123456961860, 0.951124565020032060, 0.951140004205290770, 0.951155441012699550, 0.951170875442219680, 0.951186307493812610, 0.951201737167439830, 0.951217164463062930, +0.951232589380642920, 0.951248011920141410, 0.951263432081519870, 0.951278849864739650, 0.951294265269762460, 0.951309678296549550, 0.951325088945062400, 0.951340497215262810, +0.951355903107111710, 0.951371306620570900, 0.951386707755601750, 0.951402106512165950, 0.951417502890224750, 0.951432896889739870, 0.951448288510672980, 0.951463677752985130, +0.951479064616638110, 0.951494449101593310, 0.951509831207812520, 0.951525210935257100, 0.951540588283888660, 0.951555963253668760, 0.951571335844559220, 0.951586706056521070, +0.951602073889516120, 0.951617439343505960, 0.951632802418452270, 0.951648163114316550, 0.951663521431060480, 0.951678877368645540, 0.951694230927033650, 0.951709582106185950, +0.951724930906064360, 0.951740277326630360, 0.951755621367845750, 0.951770963029672010, 0.951786302312070840, 0.951801639215004270, 0.951816973738433210, 0.951832305882319820, +0.951847635646625670, 0.951862963031312460, 0.951878288036341670, 0.951893610661675330, 0.951908930907274910, 0.951924248773102440, 0.951939564259119080, 0.951954877365286830, +0.951970188091567300, 0.951985496437922410, 0.952000802404313730, 0.952016105990702970, 0.952031407197052370, 0.952046706023322860, 0.952062002469476590, 0.952077296535475350, +0.952092588221280960, 0.952107877526855000, 0.952123164452159280, 0.952138448997155720, 0.952153731161806350, 0.952169010946072310, 0.952184288349915860, 0.952199563373298590, +0.952214836016182400, 0.952230106278529220, 0.952245374160300640, 0.952260639661458690, 0.952275902781965390, 0.952291163521782110, 0.952306421880870890, 0.952321677859193640, +0.952336931456712170, 0.952352182673388390, 0.952367431509184130, 0.952382677964061620, 0.952397922037982130, 0.952413163730907790, 0.952428403042800520, 0.952443639973622250, +0.952458874523335000, 0.952474106691900470, 0.952489336479280690, 0.952504563885437800, 0.952519788910333290, 0.952535011553929280, 0.952550231816187700, 0.952565449697070580, +0.952580665196539830, 0.952595878314557390, 0.952611089051085380, 0.952626297406085840, 0.952641503379520250, 0.952656706971350850, 0.952671908181539790, 0.952687107010048990, +0.952702303456840370, 0.952717497521875960, 0.952732689205118110, 0.952747878506528200, 0.952763065426068700, 0.952778249963701530, 0.952793432119388610, 0.952808611893092180, +0.952823789284774290, 0.952838964294396850, 0.952854136921922330, 0.952869307167312110, 0.952884475030528750, 0.952899640511534090, 0.952914803610290350, 0.952929964326759690, +0.952945122660904030, 0.952960278612685840, 0.952975432182066710, 0.952990583369008990, 0.953005732173474730, 0.953020878595426280, 0.953036022634825560, 0.953051164291634830, +0.953066303565816120, 0.953081440457331900, 0.953096574966143860, 0.953111707092214490, 0.953126836835505700, 0.953141964195979850, 0.953157089173599090, 0.953172211768325670, +0.953187331980121730, 0.953202449808949640, 0.953217565254771190, 0.953232678317548880, 0.953247788997244830, 0.953262897293821300, 0.953278003207240540, 0.953293106737464700, +0.953308207884456470, 0.953323306648177440, 0.953338403028590080, 0.953353497025656750, 0.953368588639339710, 0.953383677869601100, 0.953398764716403390, 0.953413849179708730, +0.953428931259479700, 0.953444010955678100, 0.953459088268266530, 0.953474163197207130, 0.953489235742462360, 0.953504305903994600, 0.953519373681765980, 0.953534439075739200, +0.953549502085875970, 0.953564562712139070, 0.953579620954490780, 0.953594676812893450, 0.953609730287309440, 0.953624781377701010, 0.953639830084030750, 0.953654876406261120, +0.953669920344354050, 0.953684961898272120, 0.953700001067977810, 0.953715037853433590, 0.953730072254601600, 0.953745104271444540, 0.953760133903924780, 0.953775161152004890, +0.953790186015646800, 0.953805208494813320, 0.953820228589466690, 0.953835246299569620, 0.953850261625084350, 0.953865274565973480, 0.953880285122199690, 0.953895293293724910, +0.953910299080511840, 0.953925302482523050, 0.953940303499721030, 0.953955302132068250, 0.953970298379527290, 0.953985292242060410, 0.954000283719630750, 0.954015272812200000, +0.954030259519731080, 0.954045243842186470, 0.954060225779528870, 0.954075205331720630, 0.954090182498724460, 0.954105157280502710, 0.954120129677018420, 0.954135099688233510, +0.954150067314110780, 0.954165032554613050, 0.954179995409702550, 0.954194955879342220, 0.954209913963494420, 0.954224869662122170, 0.954239822975187390, 0.954254773902653120, +0.954269722444481830, 0.954284668600636320, 0.954299612371079080, 0.954314553755772900, 0.954329492754680260, 0.954344429367764090, 0.954359363594986740, 0.954374295436310920, +0.954389224891699310, 0.954404151961114610, 0.954419076644519640, 0.954433998941876970, 0.954448918853149530, 0.954463836378299460, 0.954478751517289890, 0.954493664270083420, +0.954508574636642850, 0.954523482616930760, 0.954538388210909970, 0.954553291418543280, 0.954568192239793500, 0.954583090674623100, 0.954597986722994900, 0.954612880384871800, +0.954627771660216400, 0.954642660548991610, 0.954657547051160240, 0.954672431166684880, 0.954687312895528770, 0.954702192237654180, 0.954717069193024010, 0.954731943761601200, +0.954746815943348540, 0.954761685738228840, 0.954776553146205020, 0.954791418167239890, 0.954806280801296150, 0.954821141048336600, 0.954835998908324160, 0.954850854381221750, +0.954865707466992290, 0.954880558165598470, 0.954895406477003220, 0.954910252401169780, 0.954925095938060520, 0.954939937087638360, 0.954954775849866540, 0.954969612224707660, +0.954984446212124750, 0.954999277812080720, 0.955014107024538590, 0.955028933849461300, 0.955043758286811540, 0.955058580336552330, 0.955073399998646710, 0.955088217273057590, +0.955103032159747900, 0.955117844658680660, 0.955132654769819010, 0.955147462493125540, 0.955162267828563280, 0.955177070776095480, 0.955191871335684950, 0.955206669507294830, +0.955221465290887920, 0.955236258686427360, 0.955251049693876530, 0.955265838313197670, 0.955280624544354360, 0.955295408387309310, 0.955310189842025870, 0.955324968908466960, +0.955339745586595510, 0.955354519876375100, 0.955369291777768080, 0.955384061290737830, 0.955398828415247370, 0.955413593151259950, 0.955428355498738390, 0.955443115457646040, +0.955457873027945940, 0.955472628209601330, 0.955487381002575020, 0.955502131406830160, 0.955516879422329990, 0.955531625049037550, 0.955546368286916190, 0.955561109135928840, +0.955575847596038640, 0.955590583667209170, 0.955605317349403020, 0.955620048642583430, 0.955634777546713890, 0.955649504061757300, 0.955664228187676930, 0.955678949924436030, +0.955693669271998060, 0.955708386230325610, 0.955723100799382270, 0.955737812979131070, 0.955752522769535370, 0.955767230170558420, 0.955781935182163370, 0.955796637804313450, +0.955811338036972160, 0.955826035880102290, 0.955840731333667430, 0.955855424397630600, 0.955870115071955300, 0.955884803356604750, 0.955899489251542110, 0.955914172756730740, +0.955928853872134220, 0.955943532597715360, 0.955958208933437640, 0.955972882879264300, 0.955987554435158930, 0.956002223601084560, 0.956016890377004660, 0.956031554762882710, +0.956046216758681730, 0.956060876364365210, 0.956075533579896390, 0.956090188405238850, 0.956104840840355740, 0.956119490885210640, 0.956134138539766700, 0.956148783803987710, +0.956163426677836600, 0.956178067161276850, 0.956192705254271910, 0.956207340956785170, 0.956221974268780190, 0.956236605190220130, 0.956251233721068910, 0.956265859861289420, +0.956280483610845170, 0.956295104969699720, 0.956309723937816550, 0.956324340515159020, 0.956338954701690720, 0.956353566497375020, 0.956368175902175600, 0.956382782916055500, +0.956397387538978410, 0.956411989770907910, 0.956426589611807380, 0.956441187061640500, 0.956455782120370520, 0.956470374787961150, 0.956484965064376080, 0.956499552949578340, +0.956514138443531730, 0.956528721546199830, 0.956543302257546020, 0.956557880577533990, 0.956572456506127320, 0.956587030043289710, 0.956601601188984190, 0.956616169943174780, +0.956630736305824960, 0.956645300276898200, 0.956659861856358320, 0.956674421044168670, 0.956688977840293050, 0.956703532244695180, 0.956718084257338290, 0.956732633878186080, +0.956747181107202360, 0.956761725944350720, 0.956776268389594730, 0.956790808442897990, 0.956805346104224300, 0.956819881373537570, 0.956834414250800850, 0.956848944735978040, +0.956863472829032840, 0.956877998529929050, 0.956892521838630160, 0.956907042755100080, 0.956921561279302610, 0.956936077411200900, 0.956950591150759090, 0.956965102497940760, +0.956979611452709710, 0.956994118015029650, 0.957008622184864270, 0.957023123962177260, 0.957037623346932760, 0.957052120339094040, 0.957066614938624880, 0.957081107145489220, +0.957095596959650850, 0.957110084381073370, 0.957124569409720790, 0.957139052045557050, 0.957153532288545380, 0.957168010138649830, 0.957182485595834300, 0.957196958660062600, +0.957211429331298440, 0.957225897609505720, 0.957240363494648250, 0.957254826986690180, 0.957269288085594750, 0.957283746791326110, 0.957298203103848060, 0.957312657023124510, +0.957327108549119400, 0.957341557681796520, 0.957356004421119680, 0.957370448767053020, 0.957384890719560120, 0.957399330278604910, 0.957413767444151410, 0.957428202216163540, +0.957442634594604990, 0.957457064579440020, 0.957471492170632650, 0.957485917368146140, 0.957500340171944960, 0.957514760581992920, 0.957529178598253930, 0.957543594220692020, +0.957558007449271220, 0.957572418283955340, 0.957586826724708630, 0.957601232771494560, 0.957615636424277490, 0.957630037683021350, 0.957644436547690050, 0.957658833018247610, +0.957673227094658190, 0.957687618776885690, 0.957702008064894360, 0.957716394958647800, 0.957730779458110250, 0.957745161563245630, 0.957759541274018300, 0.957773918590391960, +0.957788293512330860, 0.957802666039799360, 0.957817036172760930, 0.957831403911179820, 0.957845769255020190, 0.957860132204246260, 0.957874492758821970, 0.957888850918711340, +0.957903206683878630, 0.957917560054288190, 0.957931911029903600, 0.957946259610689240, 0.957960605796609240, 0.957974949587627740, 0.957989290983708770, 0.958003629984816700, +0.958017966590915650, 0.958032300801969550, 0.958046632617942650, 0.958060962038799200, 0.958075289064503340, 0.958089613695019330, 0.958103935930311180, 0.958118255770343150, +0.958132573215079830, 0.958146888264484800, 0.958161200918522530, 0.958175511177157270, 0.958189819040353270, 0.958204124508074680, 0.958218427580285860, 0.958232728256950830, +0.958247026538034290, 0.958261322423500040, 0.958275615913312340, 0.958289907007435660, 0.958304195705834250, 0.958318482008472250, 0.958332765915314130, 0.958347047426324260, +0.958361326541466660, 0.958375603260705590, 0.958389877584005620, 0.958404149511330910, 0.958418419042645800, 0.958432686177914770, 0.958446950917101860, 0.958461213260171970, +0.958475473207088700, 0.958489730757816740, 0.958503985912320560, 0.958518238670564290, 0.958532489032512540, 0.958546736998129420, 0.958560982567379870, 0.958575225740227470, +0.958589466516637120, 0.958603704896572980, 0.958617940879999740, 0.958632174466881540, 0.958646405657182950, 0.958660634450868350, 0.958674860847902320, 0.958689084848249000, +0.958703306451872960, 0.958717525658738580, 0.958731742468810430, 0.958745956882052890, 0.958760168898430520, 0.958774378517907700, 0.958788585740449120, 0.958802790566018910, +0.958816992994581780, 0.958831193026102090, 0.958845390660544420, 0.958859585897873230, 0.958873778738053130, 0.958887969181048790, 0.958902157226824370, 0.958916342875344440, +0.958930526126573700, 0.958944706980476620, 0.958958885437017900, 0.958973061496161790, 0.958987235157873210, 0.959001406422116620, 0.959015575288856390, 0.959029741758057110, +0.959043905829683570, 0.959058067503700260, 0.959072226780071760, 0.959086383658762640, 0.959100538139737610, 0.959114690222961470, 0.959128839908398370, 0.959142987196013210, +0.959157132085770580, 0.959171274577635070, 0.959185414671571370, 0.959199552367544170, 0.959213687665518290, 0.959227820565457970, 0.959241951067328120, 0.959256079171093350, +0.959270204876718440, 0.959284328184167980, 0.959298449093406670, 0.959312567604399310, 0.959326683717110720, 0.959340797431505240, 0.959354908747547700, 0.959369017665202880, +0.959383124184435610, 0.959397228305210460, 0.959411330027492240, 0.959425429351245970, 0.959439526276435810, 0.959453620803026870, 0.959467712930983870, 0.959481802660271610, +0.959495889990854890, 0.959509974922698410, 0.959524057455766970, 0.959538137590025710, 0.959552215325438770, 0.959566290661971300, 0.959580363599588090, 0.959594434138254070, +0.959608502277933930, 0.959622568018592470, 0.959636631360194610, 0.959650692302705390, 0.959664750846089270, 0.959678806990311270, 0.959692860735336220, 0.959706912081129020, +0.959720961027654470, 0.959735007574877620, 0.959749051722763480, 0.959763093471276530, 0.959777132820381680, 0.959791169770044080, 0.959805204320228640, 0.959819236470900060, +0.959833266222023470, 0.959847293573563690, 0.959861318525485950, 0.959875341077754630, 0.959889361230334970, 0.959903378983191890, 0.959917394336290420, 0.959931407289595360, +0.959945417843071860, 0.959959425996684820, 0.959973431750399400, 0.959987435104180160, 0.960001436057992490, 0.960015434611801060, 0.960029430765571120, 0.960043424519267500, +0.960057415872855420, 0.960071404826300050, 0.960085391379565940, 0.960099375532618260, 0.960113357285422240, 0.960127336637942700, 0.960141313590144870, 0.960155288141993800, +0.960169260293454510, 0.960183230044492350, 0.960197197395071810, 0.960211162345158240, 0.960225124894716900, 0.960239085043712580, 0.960253042792110660, 0.960266998139876040, +0.960280951086974310, 0.960294901633369840, 0.960308849779028200, 0.960322795523914310, 0.960336738867993530, 0.960350679811230900, 0.960364618353591550, 0.960378554495040730, +0.960392488235543680, 0.960406419575065120, 0.960420348513570610, 0.960434275051025190, 0.960448199187394100, 0.960462120922642490, 0.960476040256735610, 0.960489957189638590, +0.960503871721316900, 0.960517783851735360, 0.960531693580859320, 0.960545600908654040, 0.960559505835084760, 0.960573408360116730, 0.960587308483715210, 0.960601206205845660, +0.960615101526472780, 0.960628994445562270, 0.960642884963079150, 0.960656773078988890, 0.960670658793256640, 0.960684542105847750, 0.960698423016727590, 0.960712301525861510, +0.960726177633214550, 0.960740051338752070, 0.960753922642439420, 0.960767791544241970, 0.960781658044125080, 0.960795522142054100, 0.960809383837994300, 0.960823243131911250, +0.960837100023769760, 0.960850954513535640, 0.960864806601174130, 0.960878656286650590, 0.960892503569930390, 0.960906348450978890, 0.960920190929761890, 0.960934031006244080, +0.960947868680391170, 0.960961703952168620, 0.960975536821541800, 0.960989367288476170, 0.961003195352937100, 0.961017021014890060, 0.961030844274300630, 0.961044665131133960, +0.961058483585355620, 0.961072299636930970, 0.961086113285825610, 0.961099924532004990, 0.961113733375434600, 0.961127539816080120, 0.961141343853906480, 0.961155145488879480, +0.961168944720964700, 0.961182741550127510, 0.961196535976333480, 0.961210327999547980, 0.961224117619736810, 0.961237904836865550, 0.961251689650899350, 0.961265472061803790, +0.961279252069544680, 0.961293029674087360, 0.961306804875397440, 0.961320577673440590, 0.961334348068182300, 0.961348116059588360, 0.961361881647623820, 0.961375644832254680, +0.961389405613446320, 0.961403163991164540, 0.961416919965374820, 0.961430673536042830, 0.961444424703134290, 0.961458173466614550, 0.961471919826449420, 0.961485663782604360, +0.961499405335045190, 0.961513144483737480, 0.961526881228647050, 0.961540615569739240, 0.961554347506980210, 0.961568077040335090, 0.961581804169769790, 0.961595528895249910, +0.961609251216741230, 0.961622971134209470, 0.961636688647620310, 0.961650403756939330, 0.961664116462132570, 0.961677826763165380, 0.961691534660003570, 0.961705240152612940, +0.961718943240959190, 0.961732643925008120, 0.961746342204725320, 0.961760038080077040, 0.961773731551028410, 0.961787422617545350, 0.961801111279593890, 0.961814797537139500, +0.961828481390148200, 0.961842162838585700, 0.961855841882417790, 0.961869518521610510, 0.961883192756129210, 0.961896864585939810, 0.961910534011008340, 0.961924201031300610, +0.961937865646782300, 0.961951527857419330, 0.961965187663177850, 0.961978845064022980, 0.961992500059921210, 0.962006152650838110, 0.962019802836739600, 0.962033450617591600, +0.962047095993359910, 0.962060738964010560, 0.962074379529509580, 0.962088017689822440, 0.962101653444915160, 0.962115286794753890, 0.962128917739304310, 0.962142546278532460, +0.962156172412404250, 0.962169796140885600, 0.962183417463942650, 0.962197036381540970, 0.962210652893646710, 0.962224267000225900, 0.962237878701244220, 0.962251487996668040, +0.962265094886463060, 0.962278699370595510, 0.962292301449031110, 0.962305901121735860, 0.962319498388675920, 0.962333093249817200, 0.962346685705125720, 0.962360275754567510, +0.962373863398108710, 0.962387448635715460, 0.962401031467353230, 0.962414611892988600, 0.962428189912587270, 0.962441765526115600, 0.962455338733539500, 0.962468909534825000, +0.962482477929938460, 0.962496043918845580, 0.962509607501512490, 0.962523168677905440, 0.962536727447990460, 0.962550283811733580, 0.962563837769101040, 0.962577389320058980, +0.962590938464573660, 0.962604485202610660, 0.962618029534136550, 0.962631571459117370, 0.962645110977519150, 0.962658648089308230, 0.962672182794450770, 0.962685715092912670, +0.962699244984660640, 0.962712772469660250, 0.962726297547877970, 0.962739820219279840, 0.962753340483832210, 0.962766858341501330, 0.962780373792253120, 0.962793886836054380, +0.962807397472870590, 0.962820905702668320, 0.962834411525413820, 0.962847914941073250, 0.962861415949612940, 0.962874914550999050, 0.962888410745197820, 0.962901904532175950, +0.962915395911899010, 0.962928884884333480, 0.962942371449445830, 0.962955855607202320, 0.962969337357569070, 0.962982816700512450, 0.962996293635998920, 0.963009768163994750, +0.963023240284466060, 0.963036709997379110, 0.963050177302700480, 0.963063642200396420, 0.963077104690433280, 0.963090564772777320, 0.963104022447395240, 0.963117477714252820, +0.963130930573316670, 0.963144381024553240, 0.963157829067928910, 0.963171274703409910, 0.963184717930962830, 0.963198158750553810, 0.963211597162149770, 0.963225033165716390, +0.963238466761220490, 0.963251897948628420, 0.963265326727906660, 0.963278753099021560, 0.963292177061939480, 0.963305598616627230, 0.963319017763050840, 0.963332434501176890, +0.963345848830971740, 0.963359260752402080, 0.963372670265434160, 0.963386077370034680, 0.963399482066169990, 0.963412884353806790, 0.963426284232911100, 0.963439681703449740, +0.963453076765389270, 0.963466469418695960, 0.963479859663336600, 0.963493247499277450, 0.963506632926485310, 0.963520015944926760, 0.963533396554567930, 0.963546774755375650, +0.963560150547316470, 0.963573523930356890, 0.963586894904463480, 0.963600263469602810, 0.963613629625741710, 0.963626993372846300, 0.963640354710883380, 0.963653713639819660, +0.963667070159621610, 0.963680424270255910, 0.963693775971689150, 0.963707125263887910, 0.963720472146819110, 0.963733816620448990, 0.963747158684744250, 0.963760498339671590, +0.963773835585197690, 0.963787170421289250, 0.963800502847912850, 0.963813832865035190, 0.963827160472623180, 0.963840485670642950, 0.963853808459061660, 0.963867128837845750, +0.963880446806962050, 0.963893762366377250, 0.963907075516058030, 0.963920386255971320, 0.963933694586083470, 0.963947000506361400, 0.963960304016771800, 0.963973605117281360, +0.963986903807857010, 0.964000200088465430, 0.964013493959073210, 0.964026785419647590, 0.964040074470154720, 0.964053361110561720, 0.964066645340835300, 0.964079927160942260, +0.964093206570849400, 0.964106483570523530, 0.964119758159931670, 0.964133030339040300, 0.964146300107816210, 0.964159567466226440, 0.964172832414237680, 0.964186094951816840, +0.964199355078930840, 0.964212612795546380, 0.964225868101630690, 0.964239120997150030, 0.964252371482071660, 0.964265619556362360, 0.964278865219988960, 0.964292108472918350, +0.964305349315117470, 0.964318587746553320, 0.964331823767192840, 0.964345057377002600, 0.964358288575949740, 0.964371517364001170, 0.964384743741123710, 0.964397967707284480, +0.964411189262450290, 0.964424408406588380, 0.964437625139665240, 0.964450839461648000, 0.964464051372503680, 0.964477260872199200, 0.964490467960701700, 0.964503672637977870, +0.964516874903994960, 0.964530074758719990, 0.964543272202119660, 0.964556467234161220, 0.964569659854811470, 0.964582850064037660, 0.964596037861806700, 0.964609223248085730, +0.964622406222841570, 0.964635586786041670, 0.964648764937652610, 0.964661940677641660, 0.964675114005975830, 0.964688284922622150, 0.964701453427547870, 0.964714619520719910, +0.964727783202105620, 0.964740944471671580, 0.964754103329385270, 0.964767259775213600, 0.964780413809123940, 0.964793565431083080, 0.964806714641058380, 0.964819861439016990, +0.964833005824926040, 0.964846147798752440, 0.964859287360463340, 0.964872424510026190, 0.964885559247407820, 0.964898691572575680, 0.964911821485496700, 0.964924948986138450, +0.964938074074467630, 0.964951196750451600, 0.964964317014057600, 0.964977434865252780, 0.964990550304004380, 0.965003663330279650, 0.965016773944045610, 0.965029882145270080, +0.965042987933919520, 0.965056091309961390, 0.965069192273363190, 0.965082290824091920, 0.965095386962114940, 0.965108480687399520, 0.965121571999912890, 0.965134660899622520, +0.965147747386495230, 0.965160831460498690, 0.965173913121599950, 0.965186992369766570, 0.965200069204965590, 0.965213143627164480, 0.965226215636330710, 0.965239285232431300, +0.965252352415433500, 0.965265417185304900, 0.965278479542012850, 0.965291539485524490, 0.965304597015807290, 0.965317652132828610, 0.965330704836556030, 0.965343755126956470, +0.965356803003997510, 0.965369848467646510, 0.965382891517870930, 0.965395932154638150, 0.965408970377915510, 0.965422006187670380, 0.965435039583870560, 0.965448070566482850, +0.965461099135475060, 0.965474125290814440, 0.965487149032468460, 0.965500170360404700, 0.965513189274590510, 0.965526205774993600, 0.965539219861580870, 0.965552231534320130, +0.965565240793178740, 0.965578247638124280, 0.965591252069124220, 0.965604254086146140, 0.965617253689157300, 0.965630250878125600, 0.965643245653017960, 0.965656238013802290, +0.965669227960445960, 0.965682215492916660, 0.965695200611181750, 0.965708183315208910, 0.965721163604965740, 0.965734141480419470, 0.965747116941537920, 0.965760089988288440, +0.965773060620638830, 0.965786028838556580, 0.965798994642009250, 0.965811958030964420, 0.965824919005389910, 0.965837877565252860, 0.965850833710521160, 0.965863787441162300, +0.965876738757144080, 0.965889687658433970, 0.965902634144999660, 0.965915578216808730, 0.965928519873828990, 0.965941459116027910, 0.965954395943373070, 0.965967330355832270, +0.965980262353373090, 0.965993191935963340, 0.966006119103570590, 0.966019043856162770, 0.966031966193707130, 0.966044886116171450, 0.966057803623523670, 0.966070718715731360, +0.966083631392762320, 0.966096541654584140, 0.966109449501164620, 0.966122354932471670, 0.966135257948472550, 0.966148158549135380, 0.966161056734427870, 0.966173952504317590, +0.966186845858772460, 0.966199736797760280, 0.966212625321248960, 0.966225511429205760, 0.966238395121598930, 0.966251276398396030, 0.966264155259564880, 0.966277031705073400, +0.966289905734889380, 0.966302777348980620, 0.966315646547315050, 0.966328513329860140, 0.966341377696584010, 0.966354239647454480, 0.966367099182439240, 0.966379956301506300, +0.966392811004623490, 0.966405663291758590, 0.966418513162879740, 0.966431360617954540, 0.966444205656950770, 0.966457048279836580, 0.966469888486579780, 0.966482726277148150, +0.966495561651509850, 0.966508394609632780, 0.966521225151484530, 0.966534053277033230, 0.966546878986246690, 0.966559702279093050, 0.966572523155540210, 0.966585341615555980, +0.966598157659108390, 0.966610971286165690, 0.966623782496695230, 0.966636591290665370, 0.966649397668044030, 0.966662201628799230, 0.966675003172898890, 0.966687802300311150, +0.966700599011003800, 0.966713393304945210, 0.966726185182102850, 0.966738974642445070, 0.966751761685939790, 0.966764546312555260, 0.966777328522259280, 0.966790108315019990, +0.966802885690805640, 0.966815660649583800, 0.966828433191322830, 0.966841203315990880, 0.966853971023555860, 0.966866736313985900, 0.966879499187249030, 0.966892259643313490, +0.966905017682147540, 0.966917773303718860, 0.966930526507995710, 0.966943277294946220, 0.966956025664538530, 0.966968771616740770, 0.966981515151521090, 0.966994256268847830, +0.967006994968688800, 0.967019731251012150, 0.967032465115786220, 0.967045196562979160, 0.967057925592559100, 0.967070652204494290, 0.967083376398752750, 0.967096098175303060, +0.967108817534112820, 0.967121534475150590, 0.967134248998384520, 0.967146961103782840, 0.967159670791313710, 0.967172378060945470, 0.967185082912646270, 0.967197785346384560, +0.967210485362128170, 0.967223182959845550, 0.967235878139504960, 0.967248570901074740, 0.967261261244523050, 0.967273949169818240, 0.967286634676928770, 0.967299317765822450, +0.967311998436467870, 0.967324676688833260, 0.967337352522887000, 0.967350025938597420, 0.967362696935932690, 0.967375365514861250, 0.967388031675351590, 0.967400695417371610, +0.967413356740889910, 0.967426015645874830, 0.967438672132294730, 0.967451326200117980, 0.967463977849312820, 0.967476627079847830, 0.967489273891691370, 0.967501918284811580, +0.967514560259176930, 0.967527199814755990, 0.967539836951516910, 0.967552471669428370, 0.967565103968458630, 0.967577733848576260, 0.967590361309749400, 0.967602986351946640, +0.967615608975136430, 0.967628229179287150, 0.967640846964367360, 0.967653462330345440, 0.967666075277189730, 0.967678685804869270, 0.967691293913351740, 0.967703899602605940, +0.967716502872600470, 0.967729103723303790, 0.967741702154684250, 0.967754298166710550, 0.967766891759351270, 0.967779482932574540, 0.967792071686349060, 0.967804658020643420, +0.967817241935426180, 0.967829823430665810, 0.967842402506330910, 0.967854979162389940, 0.967867553398811810, 0.967880125215564550, 0.967892694612616960, 0.967905261589937730, +0.967917826147495220, 0.967930388285258240, 0.967942948003195250, 0.967955505301274830, 0.967968060179465910, 0.967980612637736600, 0.967993162676055840, 0.968005710294392090, +0.968018255492714140, 0.968030798270990480, 0.968043338629189900, 0.968055876567281090, 0.968068412085232530, 0.968080945183012800, 0.968093475860590800, 0.968106004117935020, +0.968118529955014240, 0.968131053371797170, 0.968143574368252490, 0.968156092944349010, 0.968168609100055200, 0.968181122835339750, 0.968193634150171570, 0.968206143044519240, +0.968218649518351680, 0.968231153571637360, 0.968243655204345190, 0.968256154416444190, 0.968268651207902510, 0.968281145578689160, 0.968293637528772950, 0.968306127058122690, +0.968318614166707170, 0.968331098854495090, 0.968343581121455350, 0.968356060967556550, 0.968368538392767600, 0.968381013397057290, 0.968393485980394430, 0.968405956142747940, +0.968418423884086500, 0.968430889204378920, 0.968443352103594450, 0.968455812581701330, 0.968468270638668690, 0.968480726274465460, 0.968493179489060330, 0.968505630282422200, +0.968518078654520000, 0.968530524605322960, 0.968542968134799230, 0.968555409242918160, 0.968567847929648560, 0.968580284194959340, 0.968592718038819410, 0.968605149461197690, +0.968617578462063090, 0.968630005041384750, 0.968642429199131240, 0.968654850935271590, 0.968667270249774840, 0.968679687142609880, 0.968692101613745750, 0.968704513663151360, +0.968716923290795620, 0.968729330496647890, 0.968741735280676530, 0.968754137642850900, 0.968766537583139910, 0.968778935101512580, 0.968791330197937840, 0.968803722872384920, +0.968816113124822740, 0.968828500955220220, 0.968840886363546370, 0.968853269349770230, 0.968865649913861040, 0.968878028055787710, 0.968890403775519270, 0.968902777073024860, +0.968915147948273600, 0.968927516401234420, 0.968939882431876340, 0.968952246040168610, 0.968964607226080240, 0.968976965989580390, 0.968989322330638060, 0.969001676249222510, +0.969014027745302870, 0.969026376818848070, 0.969038723469827220, 0.969051067698209700, 0.969063409503964410, 0.969075748887060610, 0.969088085847467420, 0.969100420385154200, +0.969112752500089770, 0.969125082192243470, 0.969137409461584440, 0.969149734308081930, 0.969162056731705080, 0.969174376732423020, 0.969186694310205100, 0.969199009465020580, +0.969211322196838370, 0.969223632505627820, 0.969235940391358190, 0.969248245853998820, 0.969260548893518650, 0.969272849509887240, 0.969285147703073950, 0.969297443473047470, +0.969309736819777390, 0.969322027743233060, 0.969334316243383620, 0.969346602320198310, 0.969358885973646610, 0.969371167203697650, 0.969383446010321000, 0.969395722393485480, +0.969407996353160660, 0.969420267889315900, 0.969432537001920450, 0.969444803690943660, 0.969457067956354780, 0.969469329798123390, 0.969481589216218740, 0.969493846210609970, +0.969506100781266640, 0.969518352928157910, 0.969530602651253460, 0.969542849950522420, 0.969555094825934270, 0.969567337277458590, 0.969579577305064280, 0.969591814908721150, +0.969604050088398450, 0.969616282844065650, 0.969628513175692100, 0.969640741083247270, 0.969652966566700520, 0.969665189626021660, 0.969677410261179600, 0.969689628472144020, +0.969701844258884280, 0.969714057621370080, 0.969726268559570670, 0.969738477073455510, 0.969750683162994510, 0.969762886828156480, 0.969775088068911330, 0.969787286885228420, +0.969799483277077210, 0.969811677244427410, 0.969823868787248360, 0.969836057905509640, 0.969848244599180950, 0.969860428868231540, 0.969872610712630980, 0.969884790132348850, +0.969896967127354850, 0.969909141697618440, 0.969921313843109090, 0.969933483563796490, 0.969945650859650340, 0.969957815730639990, 0.969969978176735030, 0.969982138197905130, +0.969994295794119780, 0.970006450965348770, 0.970018603711561680, 0.970030754032728320, 0.970042901928817700, 0.970055047399799970, 0.970067190445644600, 0.970079331066321160, +0.970091469261799570, 0.970103605032049180, 0.970115738377039790, 0.970127869296741220, 0.970139997791122920, 0.970152123860154480, 0.970164247503805810, 0.970176368722046490, +0.970188487514846210, 0.970200603882174770, 0.970212717824001760, 0.970224829340297190, 0.970236938431030430, 0.970249045096171270, 0.970261149335689410, 0.970273251149554760, +0.970285350537737010, 0.970297447500205750, 0.970309542036931210, 0.970321634147882640, 0.970333723833029850, 0.970345811092342860, 0.970357895925791250, 0.970369978333344930, +0.970382058314973710, 0.970394135870647380, 0.970406211000335750, 0.970418283704008510, 0.970430353981635570, 0.970442421833186740, 0.970454487258631810, 0.970466550257940710, +0.970478610831083220, 0.970490668978029380, 0.970502724698748650, 0.970514777993211180, 0.970526828861386750, 0.970538877303245170, 0.970550923318756480, 0.970562966907890460, +0.970575008070617030, 0.970587046806906220, 0.970599083116727710, 0.970611117000051430, 0.970623148456847270, 0.970635177487085390, 0.970647204090735460, 0.970659228267767630, +0.970671250018151580, 0.970683269341857780, 0.970695286238855480, 0.970707300709114930, 0.970719312752606260, 0.970731322369299270, 0.970743329559163870, 0.970755334322170200, +0.970767336658288520, 0.970779336567488160, 0.970791334049739500, 0.970803329105012550, 0.970815321733277230, 0.970827311934503560, 0.970839299708661670, 0.970851285055721490, +0.970863267975653370, 0.970875248468426880, 0.970887226534012160, 0.970899202172379460, 0.970911175383498690, 0.970923146167340100, 0.970935114523873600, 0.970947080453069210, +0.970959043954897410, 0.970971005029327760, 0.970982963676330630, 0.970994919895876160, 0.971006873687934260, 0.971018825052475280, 0.971030773989469130, 0.971042720498886400, +0.971054664580696560, 0.971066606234870070, 0.971078545461377060, 0.971090482260187680, 0.971102416631272170, 0.971114348574600550, 0.971126278090143070, 0.971138205177870080, +0.971150129837751400, 0.971162052069757360, 0.971173971873858230, 0.971185889250024140, 0.971197804198225320, 0.971209716718432040, 0.971221626810614640, 0.971233534474743030, +0.971245439710787470, 0.971257342518718430, 0.971269242898506020, 0.971281140850120410, 0.971293036373532040, 0.971304929468711050, 0.971316820135627920, 0.971328708374252560, +0.971340594184555430, 0.971352477566506780, 0.971364358520076960, 0.971376237045236230, 0.971388113141954950, 0.971399986810203340, 0.971411858049952000, 0.971423726861170730, +0.971435593243830220, 0.971447457197900710, 0.971459318723352560, 0.971471177820156130, 0.971483034488281770, 0.971494888727700070, 0.971506740538380820, 0.971518589920294830, +0.971530436873412230, 0.971542281397703710, 0.971554123493139300, 0.971565963159689680, 0.971577800397325220, 0.971589635206016380, 0.971601467585733290, 0.971613297536446430, +0.971625125058126480, 0.971636950150743580, 0.971648772814268420, 0.971660593048671250, 0.971672410853922640, 0.971684226229993180, 0.971696039176852990, 0.971707849694472660, +0.971719657782822770, 0.971731463441873670, 0.971743266671595940, 0.971755067471959940, 0.971766865842936590, 0.971778661784495900, 0.971790455296608460, 0.971802246379244950, +0.971814035032375840, 0.971825821255971610, 0.971837605050002720, 0.971849386414439960, 0.971861165349253930, 0.971872941854414750, 0.971884715929893230, 0.971896487575659940, +0.971908256791685350, 0.971920023577940160, 0.971931787934394940, 0.971943549861020380, 0.971955309357786850, 0.971967066424665020, 0.971978821061625480, 0.971990573268638910, +0.972002323045675910, 0.972014070392707040, 0.972025815309703110, 0.972037557796634810, 0.972049297853472380, 0.972061035480186630, 0.972072770676748470, 0.972084503443128240, +0.972096233779296770, 0.972107961685224730, 0.972119687160882820, 0.972131410206241940, 0.972143130821272240, 0.972154849005944730, 0.972166564760230110, 0.972178278084099070, +0.972189988977522400, 0.972201697440470690, 0.972213403472914960, 0.972225107074825570, 0.972236808246173310, 0.972248506986929110, 0.972260203297063530, 0.972271897176547610, +0.972283588625351800, 0.972295277643447140, 0.972306964230804430, 0.972318648387394120, 0.972330330113187150, 0.972342009408154410, 0.972353686272266590, 0.972365360705494510, +0.972377032707809170, 0.972388702279181170, 0.972400369419581630, 0.972412034128980920, 0.972423696407350160, 0.972435356254660150, 0.972447013670881820, 0.972458668655985850, +0.972470321209943260, 0.972481971332725070, 0.972493619024301760, 0.972505264284644460, 0.972516907113723960, 0.972528547511511080, 0.972540185477976940, 0.972551821013092340, +0.972563454116828210, 0.972575084789155550, 0.972586713030045070, 0.972598338839467670, 0.972609962217394600, 0.972621583163796540, 0.972633201678644530, 0.972644817761909470, +0.972656431413562620, 0.972668042633574540, 0.972679651421916260, 0.972691257778558920, 0.972702861703473310, 0.972714463196630690, 0.972726062258001840, 0.972737658887557810, +0.972749253085269940, 0.972760844851108700, 0.972772434185045330, 0.972784021087050870, 0.972795605557096320, 0.972807187595152830, 0.972818767201191310, 0.972830344375182900, +0.972841919117098830, 0.972853491426909800, 0.972865061304586940, 0.972876628750101500, 0.972888193763424500, 0.972899756344526970, 0.972911316493380140, 0.972922874209955160, +0.972934429494222710, 0.972945982346154260, 0.972957532765720940, 0.972969080752893680, 0.972980626307643700, 0.972992169429942270, 0.973003710119760280, 0.973015248377069320, +0.973026784201839970, 0.973038317594043690, 0.973049848553651620, 0.973061377080635000, 0.973072903174964860, 0.973084426836612450, 0.973095948065549000, 0.973107466861745870, +0.973118983225173870, 0.973130497155804460, 0.973142008653608670, 0.973153517718557960, 0.973165024350623460, 0.973176528549776430, 0.973188030315988220, 0.973199529649229730, +0.973211026549472450, 0.973222521016687600, 0.973234013050846450, 0.973245502651920340, 0.973256989819880400, 0.973268474554697890, 0.973279956856344500, 0.973291436724791010, +0.973302914160008910, 0.973314389161969550, 0.973325861730644280, 0.973337331866004240, 0.973348799568020890, 0.973360264836665820, 0.973371727671909830, 0.973383188073724480, +0.973394646042081260, 0.973406101576951290, 0.973417554678306150, 0.973429005346117200, 0.973440453580355580, 0.973451899380993190, 0.973463342748000730, 0.973474783681349990, +0.973486222181012220, 0.973497658246958890, 0.973509091879161460, 0.973520523077591290, 0.973531951842219860, 0.973543378173018730, 0.973554802069958920, 0.973566223533012030, +0.973577642562149740, 0.973589059157343280, 0.973600473318564140, 0.973611885045783780, 0.973623294338973990, 0.973634701198105800, 0.973646105623150790, 0.973657507614080540, +0.973668907170866520, 0.973680304293480180, 0.973691698981893120, 0.973703091236076790, 0.973714481056003000, 0.973725868441642770, 0.973737253392967790, 0.973748635909949760, +0.973760015992560120, 0.973771393640770480, 0.973782768854552390, 0.973794141633877450, 0.973805511978717010, 0.973816879889042860, 0.973828245364826480, 0.973839608406039450, +0.973850969012653440, 0.973862327184639940, 0.973873682921970630, 0.973885036224617420, 0.973896387092551330, 0.973907735525744280, 0.973919081524167840, 0.973930425087793820, +0.973941766216593670, 0.973953104910539100, 0.973964441169601790, 0.973975774993753540, 0.973987106382965710, 0.973998435337210090, 0.974009761856458380, 0.974021085940682260, +0.974032407589853430, 0.974043726803943580, 0.974055043582924610, 0.974066357926767770, 0.974077669835445080, 0.974088979308928240, 0.974100286347189040, 0.974111590950198950, +0.974122893117929990, 0.974134192850353740, 0.974145490147442230, 0.974156785009166910, 0.974168077435499490, 0.974179367426411870, 0.974190654981875850, 0.974201940101863230, +0.974213222786345810, 0.974224503035295290, 0.974235780848683670, 0.974247056226482440, 0.974258329168663510, 0.974269599675198770, 0.974280867746060040, 0.974292133381219230, +0.974303396580648020, 0.974314657344318550, 0.974325915672202170, 0.974337171564271020, 0.974348425020496900, 0.974359676040851830, 0.974370924625307500, 0.974382170773835930, +0.974393414486408820, 0.974404655762998400, 0.974415894603576250, 0.974427131008114290, 0.974438364976584430, 0.974449596508958790, 0.974460825605209080, 0.974472052265307310, +0.974483276489225610, 0.974494498276935570, 0.974505717628409210, 0.974516934543618650, 0.974528149022535710, 0.974539361065132390, 0.974550570671380620, 0.974561777841252530, +0.974572982574720030, 0.974584184871755020, 0.974595384732329540, 0.974606582156415490, 0.974617777143985120, 0.974628969695010230, 0.974640159809462950, 0.974651347487315300, +0.974662532728539420, 0.974673715533107000, 0.974684895900990280, 0.974696073832161390, 0.974707249326592250, 0.974718422384255100, 0.974729593005121740, 0.974740761189164750, +0.974751926936355590, 0.974763090246666520, 0.974774251120069880, 0.974785409556537470, 0.974796565556041660, 0.974807719118554350, 0.974818870244047790, 0.974830018932494210, +0.974841165183865430, 0.974852308998133800, 0.974863450375271330, 0.974874589315250170, 0.974885725818042560, 0.974896859883620740, 0.974907991511956730, 0.974919120703022890, +0.974930247456791020, 0.974941371773233590, 0.974952493652322730, 0.974963613094030680, 0.974974730098329470, 0.974985844665191560, 0.974996956794589200, 0.975008066486494180, +0.975019173740879100, 0.975030278557716070, 0.975041380936977230, 0.975052480878635050, 0.975063578382661670, 0.975074673449029320, 0.975085766077710470, 0.975096856268677040, +0.975107944021901480, 0.975119029337355950, 0.975130112215013000, 0.975141192654844670, 0.975152270656823420, 0.975163346220921600, 0.975174419347111240, 0.975185490035364920, +0.975196558285654770, 0.975207624097953360, 0.975218687472232730, 0.975229748408465550, 0.975240806906623850, 0.975251862966680430, 0.975262916588607090, 0.975273967772376520, +0.975285016517960960, 0.975296062825332880, 0.975307106694464630, 0.975318148125328690, 0.975329187117897290, 0.975340223672143130, 0.975351257788038330, 0.975362289465555250, +0.975373318704666480, 0.975384345505344470, 0.975395369867561590, 0.975406391791290180, 0.975417411276503050, 0.975428428323172230, 0.975439442931270380, 0.975450455100769780, +0.975461464831643200, 0.975472472123862900, 0.975483476977401340, 0.975494479392231220, 0.975505479368324990, 0.975516476905654910, 0.975527472004193650, 0.975538464663913700, +0.975549454884787500, 0.975560442666787760, 0.975571428009886940, 0.975582410914057510, 0.975593391379272260, 0.975604369405503320, 0.975615344992723400, 0.975626318140905170, +0.975637288850021210, 0.975648257120043990, 0.975659222950946090, 0.975670186342700310, 0.975681147295278990, 0.975692105808654620, 0.975703061882800090, 0.975714015517687990, +0.975724966713290790, 0.975735915469581050, 0.975746861786531690, 0.975757805664115300, 0.975768747102304210, 0.975779686101071240, 0.975790622660389070, 0.975801556780230280, +0.975812488460567670, 0.975823417701373820, 0.975834344502621630, 0.975845268864283360, 0.975856190786331900, 0.975867110268740070, 0.975878027311480320, 0.975888941914525580, +0.975899854077848520, 0.975910763801421830, 0.975921671085218320, 0.975932575929210570, 0.975943478333371250, 0.975954378297673290, 0.975965275822089470, 0.975976170906592390, +0.975987063551154830, 0.975997953755749600, 0.976008841520349830, 0.976019726844927660, 0.976030609729456210, 0.976041490173908180, 0.976052368178256470, 0.976063243742473770, +0.976074116866533000, 0.976084987550407180, 0.976095855794068660, 0.976106721597490570, 0.976117584960645600, 0.976128445883506670, 0.976139304366046570, 0.976150160408238320, +0.976161014010054620, 0.976171865171468590, 0.976182713892452700, 0.976193560172980090, 0.976204404013023440, 0.976215245412555890, 0.976226084371550230, 0.976236920889979260, +0.976247754967816020, 0.976258586605033620, 0.976269415801604650, 0.976280242557502010, 0.976291066872698840, 0.976301888747167950, 0.976312708180882340, 0.976323525173814930, +0.976334339725938970, 0.976345151837226920, 0.976355961507652030, 0.976366768737187200, 0.976377573525805560, 0.976388375873479820, 0.976399175780183200, 0.976409973245888740, +0.976420768270569450, 0.976431560854198020, 0.976442350996747700, 0.976453138698191610, 0.976463923958502570, 0.976474706777653690, 0.976485487155618110, 0.976496265092368980, +0.976507040587879070, 0.976517813642121420, 0.976528584255069390, 0.976539352426695760, 0.976550118156973790, 0.976560881445876610, 0.976571642293377120, 0.976582400699448790, +0.976593156664064210, 0.976603910187196830, 0.976614661268819570, 0.976625409908905670, 0.976636156107428270, 0.976646899864360480, 0.976657641179675460, 0.976668380053346550, +0.976679116485346440, 0.976689850475648600, 0.976700582024226050, 0.976711311131052140, 0.976722037796099900, 0.976732762019342560, 0.976743483800753490, 0.976754203140305590, +0.976764920037972110, 0.976775634493726400, 0.976786346507541480, 0.976797056079390820, 0.976807763209247450, 0.976818467897084710, 0.976829170142875960, 0.976839869946594110, +0.976850567308212630, 0.976861262227704750, 0.976871954705043620, 0.976882644740202700, 0.976893332333155010, 0.976904017483874340, 0.976914700192333400, 0.976925380458505630, +0.976936058282364520, 0.976946733663883180, 0.976957406603035090, 0.976968077099793390, 0.976978745154131520, 0.976989410766023080, 0.977000073935440750, 0.977010734662358330, +0.977021392946749060, 0.977032048788586400, 0.977042702187843500, 0.977053353144493930, 0.977064001658510930, 0.977074647729868070, 0.977085291358538500, 0.977095932544495670, +0.977106571287712940, 0.977117207588163780, 0.977127841445821650, 0.977138472860660020, 0.977149101832652240, 0.977159728361771560, 0.977170352447991550, 0.977180974091285790, +0.977191593291627410, 0.977202210048990110, 0.977212824363347330, 0.977223436234672450, 0.977234045662939250, 0.977244652648120660, 0.977255257190190460, 0.977265859289122130, +0.977276458944889130, 0.977287056157464920, 0.977297650926823190, 0.977308243252937300, 0.977318833135780940, 0.977329420575327350, 0.977340005571550210, 0.977350588124422990, +0.977361168233919390, 0.977371745900012860, 0.977382321122676980, 0.977392893901885440, 0.977403464237611490, 0.977414032129828800, 0.977424597578511190, 0.977435160583632000, +0.977445721145164930, 0.977456279263083540, 0.977466834937361420, 0.977477388167972470, 0.977487938954889830, 0.977498487298087300, 0.977509033197538570, 0.977519576653217310, +0.977530117665097120, 0.977540656233151560, 0.977551192357354550, 0.977561726037679430, 0.977572257274100020, 0.977582786066589880, 0.977593312415122820, 0.977603836319672510, +0.977614357780212550, 0.977624876796716720, 0.977635393369158830, 0.977645907497512350, 0.977656419181751060, 0.977666928421848770, 0.977677435217779170, 0.977687939569515940, +0.977698441477032780, 0.977708940940303580, 0.977719437959302270, 0.977729932534002200, 0.977740424664377160, 0.977750914350401180, 0.977761401592047830, 0.977771886389291020, +0.977782368742104560, 0.977792848650462230, 0.977803326114337730, 0.977813801133704860, 0.977824273708537420, 0.977834743838809420, 0.977845211524494440, 0.977855676765566510, +0.977866139561999410, 0.977876599913767080, 0.977887057820843060, 0.977897513283201400, 0.977907966300816000, 0.977918416873660660, 0.977928865001709280, 0.977939310684935780, +0.977949753923313960, 0.977960194716817940, 0.977970633065421200, 0.977981068969097980, 0.977991502427822070, 0.978001933441567380, 0.978012362010307830, 0.978022788134017330, +0.978033211812670110, 0.978043633046239760, 0.978054051834700180, 0.978064468178025610, 0.978074882076189760, 0.978085293529166730, 0.978095702536930460, 0.978106109099454950, +0.978116513216714440, 0.978126914888682310, 0.978137314115333000, 0.978147710896640320, 0.978158105232578400, 0.978168497123121260, 0.978178886568242810, 0.978189273567917410, +0.978199658122118620, 0.978210040230820590, 0.978220419893997550, 0.978230797111623530, 0.978241171883672320, 0.978251544210118400, 0.978261914090935440, 0.978272281526098020, +0.978282646515579610, 0.978293009059354570, 0.978303369157397130, 0.978313726809681090, 0.978324082016180930, 0.978334434776870430, 0.978344785091723850, 0.978355132960715520, +0.978365478383819260, 0.978375821361009200, 0.978386161892259580, 0.978396499977544630, 0.978406835616838390, 0.978417168810115090, 0.978427499557348980, 0.978437827858513960, +0.978448153713584400, 0.978458477122534420, 0.978468798085338260, 0.978479116601970180, 0.978489432672404290, 0.978499746296614740, 0.978510057474576090, 0.978520366206262040, +0.978530672491647050, 0.978540976330705470, 0.978551277723411440, 0.978561576669739200, 0.978571873169662990, 0.978582167223157050, 0.978592458830195970, 0.978602747990753530, +0.978613034704804210, 0.978623318972322350, 0.978633600793282210, 0.978643880167658020, 0.978654157095424030, 0.978664431576555030, 0.978674703611024600, 0.978684973198807540, +0.978695240339877980, 0.978705505034210280, 0.978715767281778890, 0.978726027082558070, 0.978736284436522160, 0.978746539343645750, 0.978756791803902740, 0.978767041817267810, +0.978777289383715220, 0.978787534503219540, 0.978797777175754890, 0.978808017401295860, 0.978818255179817020, 0.978828490511292280, 0.978838723395696330, 0.978848953833003520, +0.978859181823188430, 0.978869407366225300, 0.978879630462088700, 0.978889851110753000, 0.978900069312192870, 0.978910285066382340, 0.978920498373296200, 0.978930709232908700, +0.978940917645194530, 0.978951123610128040, 0.978961327127683690, 0.978971528197836060, 0.978981726820559730, 0.978991922995828930, 0.979002116723618370, 0.979012308003902490, +0.979022496836655880, 0.979032683221853000, 0.979042867159468420, 0.979053048649476840, 0.979063227691852500, 0.979073404286569970, 0.979083578433604050, 0.979093750132929100, +0.979103919384519910, 0.979114086188350830, 0.979124250544396450, 0.979134412452631770, 0.979144571913030840, 0.979154728925568430, 0.979164883490219240, 0.979175035606957840, +0.979185185275758820, 0.979195332496596850, 0.979205477269446620, 0.979215619594282830, 0.979225759471079700, 0.979235896899812270, 0.979246031880455110, 0.979256164412982910, +0.979266294497370240, 0.979276422133591900, 0.979286547321622570, 0.979296670061436720, 0.979306790353009270, 0.979316908196314780, 0.979327023591328060, 0.979337136538023790, +0.979347247036376660, 0.979357355086361350, 0.979367460687952880, 0.979377563841125620, 0.979387664545854350, 0.979397762802113990, 0.979407858609879220, 0.979417951969124840, +0.979428042879825540, 0.979438131341956340, 0.979448217355491590, 0.979458300920406310, 0.979468382036675300, 0.979478460704273360, 0.979488536923175170, 0.979498610693355750, +0.979508682014789690, 0.979518750887452220, 0.979528817311317580, 0.979538881286361020, 0.979548942812557220, 0.979559001889880990, 0.979569058518307330, 0.979579112697810950, +0.979589164428366850, 0.979599213709950070, 0.979609260542534940, 0.979619304926096720, 0.979629346860610320, 0.979639386346050410, 0.979649423382392140, 0.979659457969610290, +0.979669490107680010, 0.979679519796575750, 0.979689547036272760, 0.979699571826745830, 0.979709594167969990, 0.979719614059920140, 0.979729631502571310, 0.979739646495898400, +0.979749659039876540, 0.979759669134480320, 0.979769676779684960, 0.979779681975465500, 0.979789684721796730, 0.979799685018653780, 0.979809682866011560, 0.979819678263845310, +0.979829671212129830, 0.979839661710840030, 0.979849649759951150, 0.979859635359438100, 0.979869618509276010, 0.979879599209439790, 0.979889577459904680, 0.979899553260645710, +0.979909526611637660, 0.979919497512855900, 0.979929465964275330, 0.979939431965871190, 0.979949395517618390, 0.979959356619492070, 0.979969315271467360, 0.979979271473519600, +0.979989225225623480, 0.979999176527754260, 0.980009125379887160, 0.980019071781997210, 0.980029015734059540, 0.980038957236049390, 0.980048896287942010, 0.980058832889712180, +0.980068767041335280, 0.980078698742786520, 0.980088627994040950, 0.980098554795073800, 0.980108479145860300, 0.980118401046375600, 0.980128320496595040, 0.980138237496493540, +0.980148152046046440, 0.980158064145228990, 0.980167973794016320, 0.980177880992383790, 0.980187785740306520, 0.980197688037759750, 0.980207587884718960, 0.980217485281159040, +0.980227380227055470, 0.980237272722383370, 0.980247162767118100, 0.980257050361234890, 0.980266935504709110, 0.980276818197516110, 0.980286698439630900, 0.980296576231028950, +0.980306451571685610, 0.980316324461576130, 0.980326194900675850, 0.980336062888960020, 0.980345928426404110, 0.980355791512983470, 0.980365652148673220, 0.980375510333448830, +0.980385366067285660, 0.980395219350159050, 0.980405070182044480, 0.980414918562917180, 0.980424764492752730, 0.980434607971526260, 0.980444448999213240, 0.980454287575789120, +0.980464123701229260, 0.980473957375509020, 0.980483788598603970, 0.980493617370489460, 0.980503443691141060, 0.980513267560533810, 0.980523088978643490, 0.980532907945445450, +0.980542724460915060, 0.980552538525027880, 0.980562350137759390, 0.980572159299085030, 0.980581966008980400, 0.980591770267420730, 0.980601572074381590, 0.980611371429838560, +0.980621168333767110, 0.980630962786142700, 0.980640754786940900, 0.980650544336137410, 0.980660331433707340, 0.980670116079626510, 0.980679898273870370, 0.980689678016414380, +0.980699455307234350, 0.980709230146305620, 0.980719002533603780, 0.980728772469104610, 0.980738539952783370, 0.980748304984615740, 0.980758067564577400, 0.980767827692643810, +0.980777585368790780, 0.980787340592993660, 0.980797093365228250, 0.980806843685470330, 0.980816591553695050, 0.980826336969878310, 0.980836079933995690, 0.980845820446022980, +0.980855558505935640, 0.980865294113709370, 0.980875027269320080, 0.980884757972743100, 0.980894486223954140, 0.980904212022928990, 0.980913935369643330, 0.980923656264072850, +0.980933374706193240, 0.980943090695980180, 0.980952804233409580, 0.980962515318456680, 0.980972223951097620, 0.980981930131307970, 0.980991633859063520, 0.981001335134339850, +0.981011033957112980, 0.981020730327358700, 0.981030424245052380, 0.981040115710170020, 0.981049804722687320, 0.981059491282580080, 0.981069175389824190, 0.981078857044395350, +0.981088536246269350, 0.981098212995422210, 0.981107887291829410, 0.981117559135466830, 0.981127228526310290, 0.981136895464335800, 0.981146559949519050, 0.981156221981835830, +0.981165881561262050, 0.981175538687773850, 0.981185193361346570, 0.981194845581956240, 0.981204495349578880, 0.981214142664190270, 0.981223787525766330, 0.981233429934282860, +0.981243069889715990, 0.981252707392041290, 0.981262342441234890, 0.981271975037272480, 0.981281605180130300, 0.981291232869784040, 0.981300858106209710, 0.981310480889383220, +0.981320101219280700, 0.981329719095877740, 0.981339334519150450, 0.981348947489074860, 0.981358558005626990, 0.981368166068782630, 0.981377771678517810, 0.981387374834808650, +0.981396975537631170, 0.981406573786961170, 0.981416169582774670, 0.981425762925047680, 0.981435353813756460, 0.981444942248876680, 0.981454528230384590, 0.981464111758256430, +0.981473692832467770, 0.981483271452994850, 0.981492847619813810, 0.981502421332900670, 0.981511992592231320, 0.981521561397782130, 0.981531127749529000, 0.981540691647448280, +0.981550253091515560, 0.981559812081707280, 0.981569368617999370, 0.981578922700368170, 0.981588474328789600, 0.981598023503239880, 0.981607570223695160, 0.981617114490131450, +0.981626656302524990, 0.981636195660851810, 0.981645732565088140, 0.981655267015210220, 0.981664799011194080, 0.981674328553015840, 0.981683855640652080, 0.981693380274078490, +0.981702902453271410, 0.981712422178207090, 0.981721939448861770, 0.981731454265211580, 0.981740966627232760, 0.981750476534901440, 0.981759983988194200, 0.981769488987086710, +0.981778991531555680, 0.981788491621577000, 0.981797989257127130, 0.981807484438182330, 0.981816977164718830, 0.981826467436713090, 0.981835955254140910, 0.981845440616978870, +0.981854923525203320, 0.981864403978790380, 0.981873881977716410, 0.981883357521957770, 0.981892830611490690, 0.981902301246291740, 0.981911769426336840, 0.981921235151602570, +0.981930698422065260, 0.981940159237701060, 0.981949617598486530, 0.981959073504398040, 0.981968526955411810, 0.981977977951504430, 0.981987426492651920, 0.981996872578830840, +0.982006316210017550, 0.982015757386188510, 0.982025196107320090, 0.982034632373388620, 0.982044066184370790, 0.982053497540242630, 0.982062926440980700, 0.982072352886561470, +0.982081776876961410, 0.982091198412156750, 0.982100617492124290, 0.982110034116840170, 0.982119448286281170, 0.982128860000423320, 0.982138269259243410, 0.982147676062717800, +0.982157080410822950, 0.982166482303535430, 0.982175881740831700, 0.982185278722688460, 0.982194673249081830, 0.982204065319988610, 0.982213454935385140, 0.982222842095248020, +0.982232226799553800, 0.982241609048279060, 0.982250988841400270, 0.982260366178894120, 0.982269741060736950, 0.982279113486905440, 0.982288483457376180, 0.982297850972125630, +0.982307216031130470, 0.982316578634367280, 0.982325938781812620, 0.982335296473443310, 0.982344651709235570, 0.982354004489166210, 0.982363354813211910, 0.982372702681349130, +0.982382048093554670, 0.982391391049805000, 0.982400731550077120, 0.982410069594347180, 0.982419405182592080, 0.982428738314788390, 0.982438068990913020, 0.982447397210942320, +0.982456722974853200, 0.982466046282622240, 0.982475367134226450, 0.982484685529641970, 0.982494001468845800, 0.982503314951814530, 0.982512625978525070, 0.982521934548954090, +0.982531240663078180, 0.982540544320874450, 0.982549845522319050, 0.982559144267389110, 0.982568440556061300, 0.982577734388312420, 0.982587025764119160, 0.982596314683458430, +0.982605601146306800, 0.982614885152641390, 0.982624166702438570, 0.982633445795675350, 0.982642722432328530, 0.982651996612374900, 0.982661268335791260, 0.982670537602554410, +0.982679804412641240, 0.982689068766028790, 0.982698330662693520, 0.982707590102612330, 0.982716847085762240, 0.982726101612119930, 0.982735353681662430, 0.982744603294366530, +0.982753850450209350, 0.982763095149167380, 0.982772337391217610, 0.982781577176336960, 0.982790814504502450, 0.982800049375690880, 0.982809281789879140, 0.982818511747044270, +0.982827739247163270, 0.982836964290212720, 0.982846186876169760, 0.982855407005011390, 0.982864624676714540, 0.982873839891255980, 0.982883052648612980, 0.982892262948762200, +0.982901470791681000, 0.982910676177345950, 0.982919879105734200, 0.982929079576822740, 0.982938277590588600, 0.982947473147008810, 0.982956666246060370, 0.982965856887720310, +0.982975045071965540, 0.982984230798773060, 0.982993414068120130, 0.983002594879983540, 0.983011773234340520, 0.983020949131168110, 0.983030122570443200, 0.983039293552143260, +0.983048462076244860, 0.983057628142725350, 0.983066791751561750, 0.983075952902731200, 0.983085111596210700, 0.983094267831977510, 0.983103421610008740, 0.983112572930281310, +0.983121721792772460, 0.983130868197459210, 0.983140012144318900, 0.983149153633328550, 0.983158292664465190, 0.983167429237706280, 0.983176563353028830, 0.983185695010409870, +0.983194824209826620, 0.983203950951256340, 0.983213075234676160, 0.983222197060063310, 0.983231316427395030, 0.983240433336648350, 0.983249547787800830, 0.983258659780829270, +0.983267769315711030, 0.983276876392423340, 0.983285981010943550, 0.983295083171248700, 0.983304182873316220, 0.983313280117123380, 0.983322374902647290, 0.983331467229865200, +0.983340557098754340, 0.983349644509292190, 0.983358729461455970, 0.983367811955222940, 0.983376891990570320, 0.983385969567475590, 0.983395044685915760, 0.983404117345868410, +0.983413187547310770, 0.983422255290220090, 0.983431320574573830, 0.983440383400349230, 0.983449443767523750, 0.983458501676074740, 0.983467557125979330, 0.983476610117214990, +0.983485660649759170, 0.983494708723589240, 0.983503754338682530, 0.983512797495016410, 0.983521838192568440, 0.983530876431315650, 0.983539912211235820, 0.983548945532306100, +0.983557976394504040, 0.983567004797807010, 0.983576030742192580, 0.983585054227637980, 0.983594075254120900, 0.983603093821618480, 0.983612109930108390, 0.983621123579567990, +0.983630134769974740, 0.983639143501306210, 0.983648149773539760, 0.983657153586653180, 0.983666154940623480, 0.983675153835428470, 0.983684150271045500, 0.983693144247452130, +0.983702135764626060, 0.983711124822544520, 0.983720111421185210, 0.983729095560525680, 0.983738077240543410, 0.983747056461215850, 0.983756033222520700, 0.983765007524435410, +0.983773979366937670, 0.983782948750004940, 0.983791915673614790, 0.983800880137745140, 0.983809842142372990, 0.983818801687476370, 0.983827758773032630, 0.983836713399019570, +0.983845665565414640, 0.983854615272195640, 0.983863562519340260, 0.983872507306825740, 0.983881449634629980, 0.983890389502730670, 0.983899326911105270, 0.983908261859731570, +0.983917194348587270, 0.983926124377650040, 0.983935051946897570, 0.983943977056307320, 0.983952899705857090, 0.983961819895524670, 0.983970737625287750, 0.983979652895123900, +0.983988565705010920, 0.983997476054926600, 0.984006383944848630, 0.984015289374754690, 0.984024192344622460, 0.984033092854429750, 0.984041990904154230, 0.984050886493773810, +0.984059779623266180, 0.984068670292609250, 0.984077558501780470, 0.984086444250757750, 0.984095327539519000, 0.984104208368041910, 0.984113086736304380, 0.984121962644283980, +0.984130836091958730, 0.984139707079306540, 0.984148575606304980, 0.984157441672931950, 0.984166305279165380, 0.984175166424982930, 0.984184025110362630, 0.984192881335282270, +0.984201735099719870, 0.984210586403652890, 0.984219435247059570, 0.984228281629917600, 0.984237125552204880, 0.984245967013899440, 0.984254806014979060, 0.984263642555421540, +0.984272476635205230, 0.984281308254307490, 0.984290137412706550, 0.984298964110380200, 0.984307788347306480, 0.984316610123463280, 0.984325429438828500, 0.984334246293380180, +0.984343060687096430, 0.984351872619954940, 0.984360682091933610, 0.984369489103010700, 0.984378293653163980, 0.984387095742371600, 0.984395895370611450, 0.984404692537861670, +0.984413487244100050, 0.984422279489304720, 0.984431069273453700, 0.984439856596525000, 0.984448641458496640, 0.984457423859346650, 0.984466203799053140, 0.984474981277594360, +0.984483756294947890, 0.984492528851091950, 0.984501298946004800, 0.984510066579664330, 0.984518831752048800, 0.984527594463136090, 0.984536354712904460, 0.984545112501332030, +0.984553867828396710, 0.984562620694076740, 0.984571371098350130, 0.984580119041195130, 0.984588864522589870, 0.984597607542512470, 0.984606348100941160, 0.984615086197853870, +0.984623821833228830, 0.984632555007044160, 0.984641285719278230, 0.984650013969909030, 0.984658739758914820, 0.984667463086273730, 0.984676183951964210, 0.984684902355963950, +0.984693618298251530, 0.984702331778805060, 0.984711042797602690, 0.984719751354622750, 0.984728457449843500, 0.984737161083243160, 0.984745862254799760, 0.984754560964491770, +0.984763257212297400, 0.984771950998194810, 0.984780642322162450, 0.984789331184178440, 0.984798017584221030, 0.984806701522268790, 0.984815382998299630, 0.984824062012292000, +0.984832738564224260, 0.984841412654074650, 0.984850084281821530, 0.984858753447443110, 0.984867420150917880, 0.984876084392224290, 0.984884746171340250, 0.984893405488244330, +0.984902062342915000, 0.984910716735330480, 0.984919368665469140, 0.984928018133309440, 0.984936665138829710, 0.984945309682008330, 0.984953951762823520, 0.984962591381253970, +0.984971228537277920, 0.984979863230873720, 0.984988495462019940, 0.984997125230694830, 0.985005752536877170, 0.985014377380544870, 0.985022999761676730, 0.985031619680250990, +0.985040237136246330, 0.985048852129640990, 0.985057464660413550, 0.985066074728542460, 0.985074682334006300, 0.985083287476783200, 0.985091890156852060, 0.985100490374191120, +0.985109088128778840, 0.985117683420594030, 0.985126276249614910, 0.985134866615820280, 0.985143454519188280, 0.985152039959697690, 0.985160622937326980, 0.985169203452054720, +0.985177781503859480, 0.985186357092719730, 0.985194930218614150, 0.985203500881521420, 0.985212069081419670, 0.985220634818287810, 0.985229198092104410, 0.985237758902847930, +0.985246317250497160, 0.985254873135030460, 0.985263426556426850, 0.985271977514664440, 0.985280526009722160, 0.985289072041578560, 0.985297615610212230, 0.985306156715601840, +0.985314695357726090, 0.985323231536563650, 0.985331765252093210, 0.985340296504293220, 0.985348825293142490, 0.985357351618619810, 0.985365875480703650, 0.985374396879372780, +0.985382915814605910, 0.985391432286381820, 0.985399946294679310, 0.985408457839476730, 0.985416966920752980, 0.985425473538486860, 0.985433977692657060, 0.985442479383242250, +0.985450978610221350, 0.985459475373573150, 0.985467969673275990, 0.985476461509309010, 0.985484950881650890, 0.985493437790280310, 0.985501922235176190, 0.985510404216317190, +0.985518883733682240, 0.985527360787250230, 0.985535835376999740, 0.985544307502909560, 0.985552777164958590, 0.985561244363125750, 0.985569709097389830, 0.985578171367729630, +0.985586631174124040, 0.985595088516551860, 0.985603543394991900, 0.985611995809423050, 0.985620445759824220, 0.985628893246174310, 0.985637338268452120, 0.985645780826636560, +0.985654220920706760, 0.985662658550641280, 0.985671093716419140, 0.985679526418019260, 0.985687956655420530, 0.985696384428601970, 0.985704809737542380, 0.985713232582220880, +0.985721652962616270, 0.985730070878707560, 0.985738486330473560, 0.985746899317893390, 0.985755309840945950, 0.985763717899610260, 0.985772123493865230, 0.985780526623690090, +0.985788927289063420, 0.985797325489964460, 0.985805721226372220, 0.985814114498265730, 0.985822505305623880, 0.985830893648425690, 0.985839279526650400, 0.985847662940277040, +0.985856043889284270, 0.985864422373651460, 0.985872798393357620, 0.985881171948381760, 0.985889543038703020, 0.985897911664300410, 0.985906277825152940, 0.985914641521239980, +0.985923002752540300, 0.985931361519033040, 0.985939717820697450, 0.985948071657512530, 0.985956423029457410, 0.985964771936511220, 0.985973118378653310, 0.985981462355862370, +0.985989803868117850, 0.985998142915398890, 0.986006479497684380, 0.986014813614953800, 0.986023145267186150, 0.986031474454360680, 0.986039801176456620, 0.986048125433452990, +0.986056447225329040, 0.986064766552063880, 0.986073083413636860, 0.986081397810027130, 0.986089709741213900, 0.986098019207176550, 0.986106326207893960, 0.986114630743345600, +0.986122932813510600, 0.986131232418368310, 0.986139529557897960, 0.986147824232078810, 0.986156116440890070, 0.986164406184311230, 0.986172693462321170, 0.986180978274899370, +0.986189260622025170, 0.986197540503677690, 0.986205817919836520, 0.986214092870480790, 0.986222365355589710, 0.986230635375142990, 0.986238902929119420, 0.986247168017498680, +0.986255430640260000, 0.986263690797382740, 0.986271948488846250, 0.986280203714629990, 0.986288456474713190, 0.986296706769075220, 0.986304954597695400, 0.986313199960553330, +0.986321442857628130, 0.986329683288899360, 0.986337921254346380, 0.986346156753948660, 0.986354389787685640, 0.986362620355536460, 0.986370848457480800, 0.986379074093498010, +0.986387297263567440, 0.986395517967668780, 0.986403736205781260, 0.986411951977884340, 0.986420165283957710, 0.986428376123980600, 0.986436584497932480, 0.986444790405792920, +0.986452993847541370, 0.986461194823157310, 0.986469393332620400, 0.986477589375910010, 0.986485782953005490, 0.986493974063886610, 0.986502162708532750, 0.986510348886923460, +0.986518532599038320, 0.986526713844856910, 0.986534892624358670, 0.986543068937523300, 0.986551242784330150, 0.986559414164758900, 0.986567583078789110, 0.986575749526400370, +0.986583913507572240, 0.986592075022284300, 0.986600234070516340, 0.986608390652247700, 0.986616544767458080, 0.986624696416127040, 0.986632845598234280, 0.986640992313759460, +0.986649136562682050, 0.986657278344981850, 0.986665417660638640, 0.986673554509631680, 0.986681688891940860, 0.986689820807545860, 0.986697950256426260, 0.986706077238561740, +0.986714201753932100, 0.986722323802517010, 0.986730443384296160, 0.986738560499249020, 0.986746675147355590, 0.986754787328595450, 0.986762897042948280, 0.986771004290393880, +0.986779109070912040, 0.986787211384482550, 0.986795311231084770, 0.986803408610698820, 0.986811503523304380, 0.986819595968881140, 0.986827685947408880, 0.986835773458867420, +0.986843858503236530, 0.986851941080496230, 0.986860021190625770, 0.986868098833605380, 0.986876174009414740, 0.986884246718033540, 0.986892316959441910, 0.986900384733619300, +0.986908450040545840, 0.986916512880201440, 0.986924573252565550, 0.986932631157618200, 0.986940686595339290, 0.986948739565708720, 0.986956790068706180, 0.986964838104311790, +0.986972883672505350, 0.986980926773266650, 0.986988967406575600, 0.986997005572412100, 0.987005041270756170, 0.987013074501587600, 0.987021105264886290, 0.987029133560632270, +0.987037159388805540, 0.987045182749385690, 0.987053203642353050, 0.987061222067687320, 0.987069238025368500, 0.987077251515376620, 0.987085262537691580, 0.987093271092293610, +0.987101277179162180, 0.987109280798277640, 0.987117281949619900, 0.987125280633168960, 0.987133276848904840, 0.987141270596807560, 0.987149261876857030, 0.987157250689033480, +0.987165237033316710, 0.987173220909686840, 0.987181202318123900, 0.987189181258607880, 0.987197157731119050, 0.987205131735637290, 0.987213103272142620, 0.987221072340615400, +0.987229038941035310, 0.987237003073382690, 0.987244964737637560, 0.987252923933779950, 0.987260880661790070, 0.987268834921647960, 0.987276786713333960, 0.987284736036827870, +0.987292682892109920, 0.987300627279160240, 0.987308569197958950, 0.987316508648486300, 0.987324445630722300, 0.987332380144647300, 0.987340312190241430, 0.987348241767484590, +0.987356168876357240, 0.987364093516839400, 0.987372015688911420, 0.987379935392553310, 0.987387852627745420, 0.987395767394467880, 0.987403679692701040, 0.987411589522424800, +0.987419496883619740, 0.987427401776265870, 0.987435304200343420, 0.987443204155832750, 0.987451101642714100, 0.987458996660967810, 0.987466889210573910, 0.987474779291512840, +0.987482666903764740, 0.987490552047310070, 0.987498434722128950, 0.987506314928201730, 0.987514192665508660, 0.987522067934030410, 0.987529940733746780, 0.987537811064638230, +0.987545678926685210, 0.987553544319867970, 0.987561407244166970, 0.987569267699562330, 0.987577125686034730, 0.987584981203564080, 0.987592834252131070, 0.987600684831716040, +0.987608532942299110, 0.987616378583860980, 0.987624221756381870, 0.987632062459842250, 0.987639900694222580, 0.987647736459502990, 0.987655569755664150, 0.987663400582686310, +0.987671228940549930, 0.987679054829235570, 0.987686878248723480, 0.987694699198994220, 0.987702517680028480, 0.987710333691806160, 0.987718147234308060, 0.987725958307514530, +0.987733766911406240, 0.987741573045963440, 0.987749376711166690, 0.987757177906996690, 0.987764976633433540, 0.987772772890458060, 0.987780566678050590, 0.987788357996191690, +0.987796146844861830, 0.987803933224041700, 0.987811717133711740, 0.987819498573852540, 0.987827277544444550, 0.987835054045468340, 0.987842828076904490, 0.987850599638733560, +0.987858368730936130, 0.987866135353492770, 0.987873899506384270, 0.987881661189590750, 0.987889420403093240, 0.987897177146872090, 0.987904931420908070, 0.987912683225181660, +0.987920432559673540, 0.987928179424364280, 0.987935923819234780, 0.987943665744265400, 0.987951405199436690, 0.987959142184729580, 0.987966876700124620, 0.987974608745602500, +0.987982338321143790, 0.987990065426729290, 0.987997790062339680, 0.988005512227955520, 0.988013231923557500, 0.988020949149126530, 0.988028663904643060, 0.988036376190087990, +0.988044086005442020, 0.988051793350685940, 0.988059498225800190, 0.988067200630765810, 0.988074900565563350, 0.988082598030173620, 0.988090293024577400, 0.988097985548755500, +0.988105675602688580, 0.988113363186357670, 0.988121048299743230, 0.988128730942826050, 0.988136411115587140, 0.988144088818007190, 0.988151764050066990, 0.988159436811747450, +0.988167107103029240, 0.988174774923893380, 0.988182440274320560, 0.988190103154291570, 0.988197763563787300, 0.988205421502788670, 0.988213076971276470, 0.988220729969231600, +0.988228380496634970, 0.988236028553467260, 0.988243674139709590, 0.988251317255342650, 0.988258957900347350, 0.988266596074704800, 0.988274231778395680, 0.988281865011401030, +0.988289495773701730, 0.988297124065278700, 0.988304749886112830, 0.988312373236185040, 0.988319994115476330, 0.988327612523967610, 0.988335228461639900, 0.988342841928474210, +0.988350452924451340, 0.988358061449552410, 0.988365667503758210, 0.988373271087049870, 0.988380872199408290, 0.988388470840814600, 0.988396067011249710, 0.988403660710694850, +0.988411251939130600, 0.988418840696538290, 0.988426426982898840, 0.988434010798193370, 0.988441592142402790, 0.988449171015508330, 0.988456747417490900, 0.988464321348331730, +0.988471892808011620, 0.988479461796511800, 0.988487028313813300, 0.988494592359897230, 0.988502153934744720, 0.988509713038336790, 0.988517269670654790, 0.988524823831679390, +0.988532375521391950, 0.988539924739773590, 0.988547471486805440, 0.988555015762468510, 0.988562557566744160, 0.988570096899613280, 0.988577633761057450, 0.988585168151057350, +0.988592700069594210, 0.988600229516649500, 0.988607756492204110, 0.988615280996239410, 0.988622803028736400, 0.988630322589676420, 0.988637839679040840, 0.988645354296810440, +0.988652866442966680, 0.988660376117490800, 0.988667883320363930, 0.988675388051567290, 0.988682890311082250, 0.988690390098890150, 0.988697887414971890, 0.988705382259309040, +0.988712874631882620, 0.988720364532673980, 0.988727851961664460, 0.988735336918835310, 0.988742819404167860, 0.988750299417643470, 0.988757776959243160, 0.988765252028948490, +0.988772724626740600, 0.988780194752601040, 0.988787662406510840, 0.988795127588451560, 0.988802590298404560, 0.988810050536350960, 0.988817508302272220, 0.988824963596149800, +0.988832416417964930, 0.988839866767698970, 0.988847314645333380, 0.988854760050849490, 0.988862202984228780, 0.988869643445452470, 0.988877081434502150, 0.988884516951359040, +0.988891949996004600, 0.988899380568420310, 0.988906808668587600, 0.988914234296487840, 0.988921657452102700, 0.988929078135413200, 0.988936496346401020, 0.988943912085047620, +0.988951325351334450, 0.988958736145242880, 0.988966144466754570, 0.988973550315850990, 0.988980953692513490, 0.988988354596723520, 0.988995753028462650, 0.989003148987712350, +0.989010542474454300, 0.989017933488669840, 0.989025322030340550, 0.989032708099448100, 0.989040091695973730, 0.989047472819899130, 0.989054851471205860, 0.989062227649875500, +0.989069601355889510, 0.989076972589229550, 0.989084341349877110, 0.989091707637813950, 0.989099071453021450, 0.989106432795481270, 0.989113791665174990, 0.989121148062084180, +0.989128501986190620, 0.989135853437475680, 0.989143202415921350, 0.989150548921508780, 0.989157892954219850, 0.989165234514036260, 0.989172573600939580, 0.989179910214911360, +0.989187244355933410, 0.989194576023987420, 0.989201905219055040, 0.989209231941117870, 0.989216556190157580, 0.989223877966155850, 0.989231197269094480, 0.989238514098955020, +0.989245828455719400, 0.989253140339369290, 0.989260449749886140, 0.989267756687251980, 0.989275061151448360, 0.989282363142456990, 0.989289662660259860, 0.989296959704838550, +0.989304254276174850, 0.989311546374250560, 0.989318835999047350, 0.989326123150547020, 0.989333407828731360, 0.989340690033582270, 0.989347969765081440, 0.989355247023210650, +0.989362521807951700, 0.989369794119286610, 0.989377063957196930, 0.989384331321664590, 0.989391596212671360, 0.989398858630199160, 0.989406118574229890, 0.989413376044745220, +0.989420631041727280, 0.989427883565157650, 0.989435133615018340, 0.989442381191291130, 0.989449626293958050, 0.989456868923000890, 0.989464109078401430, 0.989471346760141810, +0.989478581968203930, 0.989485814702569470, 0.989493044963220550, 0.989500272750138850, 0.989507498063306620, 0.989514720902705540, 0.989521941268317720, 0.989529159160125070, +0.989536374578109610, 0.989543587522253130, 0.989550797992537650, 0.989558005988945060, 0.989565211511457600, 0.989572414560057070, 0.989579615134725480, 0.989586813235445060, +0.989594008862197390, 0.989601202014964710, 0.989608392693729130, 0.989615580898472460, 0.989622766629176920, 0.989629949885824420, 0.989637130668396980, 0.989644308976876940, +0.989651484811245870, 0.989658658171486240, 0.989665829057579940, 0.989672997469508990, 0.989680163407255620, 0.989687326870801740, 0.989694487860129810, 0.989701646375221400, +0.989708802416058960, 0.989715955982624520, 0.989723107074900190, 0.989730255692867990, 0.989737401836510270, 0.989744545505809040, 0.989751686700746540, 0.989758825421304670, +0.989765961667465780, 0.989773095439211990, 0.989780226736525440, 0.989787355559388240, 0.989794481907782740, 0.989801605781691070, 0.989808727181095470, 0.989815846105977950, +0.989822962556320740, 0.989830076532106200, 0.989837188033316440, 0.989844297059933710, 0.989851403611940240, 0.989858507689318490, 0.989865609292050250, 0.989872708420117990, +0.989879805073503930, 0.989886899252190310, 0.989893990956159600, 0.989901080185393800, 0.989908166939875380, 0.989915251219586570, 0.989922333024509600, 0.989929412354626730, +0.989936489209920280, 0.989943563590372720, 0.989950635495966180, 0.989957704926683110, 0.989964771882505870, 0.989971836363416570, 0.989978898369397790, 0.989985957900431650, +0.989993014956500610, 0.990000069537587010, 0.990007121643673330, 0.990014171274741780, 0.990021218430774950, 0.990028263111754960, 0.990035305317664260, 0.990042345048485320, +0.990049382304200590, 0.990056417084792310, 0.990063449390243040, 0.990070479220535150, 0.990077506575651190, 0.990084531455573290, 0.990091553860284130, 0.990098573789766070, +0.990105591244001550, 0.990112606222973040, 0.990119618726662990, 0.990126628755054080, 0.990133636308128450, 0.990140641385868770, 0.990147643988257390, 0.990154644115276980, +0.990161641766909910, 0.990168636943138840, 0.990175629643946010, 0.990182619869314330, 0.990189607619226030, 0.990196592893663690, 0.990203575692609750, 0.990210556016047020, +0.990217533863957830, 0.990224509236324770, 0.990231482133130500, 0.990238452554357610, 0.990245420499988540, 0.990252385970005870, 0.990259348964392160, 0.990266309483130100, +0.990273267526202370, 0.990280223093591430, 0.990287176185280060, 0.990294126801250620, 0.990301074941485780, 0.990308020605968340, 0.990314963794680870, 0.990321904507605930, +0.990328842744726210, 0.990335778506024500, 0.990342711791483370, 0.990349642601085380, 0.990356570934813220, 0.990363496792649680, 0.990370420174577440, 0.990377341080579070, +0.990384259510637350, 0.990391175464735210, 0.990398088942854860, 0.990404999944979440, 0.990411908471091400, 0.990418814521173640, 0.990425718095208850, 0.990432619193179710, +0.990439517815069110, 0.990446413960859750, 0.990453307630534300, 0.990460198824075540, 0.990467087541466400, 0.990473973782689420, 0.990480857547727520, 0.990487738836563490, +0.990494617649180120, 0.990501493985560310, 0.990508367845686630, 0.990515239229542100, 0.990522108137109390, 0.990528974568371520, 0.990535838523311060, 0.990542700001911140, +0.990549559004154530, 0.990556415530023940, 0.990563269579502250, 0.990570121152572370, 0.990576970249217310, 0.990583816869419760, 0.990590661013162620, 0.990597502680428900, +0.990604341871201500, 0.990611178585463100, 0.990618012823196840, 0.990624844584385490, 0.990631673869011960, 0.990638500677059390, 0.990645325008510550, 0.990652146863348350, +0.990658966241555810, 0.990665783143115930, 0.990672597568011400, 0.990679409516225460, 0.990686218987741010, 0.990693025982541050, 0.990699830500608500, 0.990706632541926480, +0.990713432106477780, 0.990720229194245410, 0.990727023805212600, 0.990733815939362160, 0.990740605596677200, 0.990747392777140630, 0.990754177480735690, 0.990760959707445380, +0.990767739457252610, 0.990774516730140500, 0.990781291526091960, 0.990788063845090330, 0.990794833687118510, 0.990801601052159530, 0.990808365940196720, 0.990815128351212880, +0.990821888285191240, 0.990828645742114930, 0.990835400721966850, 0.990842153224730460, 0.990848903250388550, 0.990855650798924460, 0.990862395870321320, 0.990869138464562040, +0.990875878581629950, 0.990882616221508080, 0.990889351384179770, 0.990896084069628150, 0.990902814277836220, 0.990909542008787230, 0.990916267262464510, 0.990922990038851090, +0.990929710337930090, 0.990936428159684860, 0.990943143504098620, 0.990949856371154400, 0.990956566760835660, 0.990963274673125620, 0.990969980108007190, 0.990976683065463830, +0.990983383545478770, 0.990990081548035250, 0.990996777073116510, 0.991003470120705890, 0.991010160690786510, 0.991016848783341950, 0.991023534398355110, 0.991030217535809440, +0.991036898195688190, 0.991043576377974690, 0.991050252082652290, 0.991056925309704240, 0.991063596059113870, 0.991070264330864650, 0.991076930124939580, 0.991083593441322240, +0.991090254279995970, 0.991096912640944020, 0.991103568524149820, 0.991110221929596640, 0.991116872857268020, 0.991123521307147200, 0.991130167279217430, 0.991136810773462380, +0.991143451789865180, 0.991150090328409390, 0.991156726389078480, 0.991163359971855670, 0.991169991076724540, 0.991176619703668330, 0.991183245852670590, 0.991189869523714790, +0.991196490716784280, 0.991203109431862520, 0.991209725668933060, 0.991216339427979260, 0.991222950708984580, 0.991229559511932590, 0.991236165836806630, 0.991242769683590260, +0.991249371052266960, 0.991255969942820170, 0.991262566355233580, 0.991269160289490640, 0.991275751745574700, 0.991282340723469320, 0.991288927223158090, 0.991295511244624670, +0.991302092787852310, 0.991308671852824790, 0.991315248439525680, 0.991321822547938440, 0.991328394178046520, 0.991334963329833730, 0.991341530003283400, 0.991348094198379330, +0.991354655915104970, 0.991361215153444110, 0.991367771913380210, 0.991374326194896740, 0.991380877997977470, 0.991387427322606100, 0.991393974168766070, 0.991400518536441070, +0.991407060425614880, 0.991413599836270980, 0.991420136768393250, 0.991426671221964930, 0.991433203196970040, 0.991439732693392140, 0.991446259711214920, 0.991452784250422050, +0.991459306310997100, 0.991465825892924090, 0.991472342996186470, 0.991478857620767930, 0.991485369766652250, 0.991491879433823110, 0.991498386622264300, 0.991504891331959510, +0.991511393562892530, 0.991517893315047140, 0.991524390588407020, 0.991530885382955750, 0.991537377698677340, 0.991543867535555570, 0.991550354893574020, 0.991556839772716580, +0.991563322172967050, 0.991569802094309450, 0.991576279536727110, 0.991582754500204060, 0.991589226984724180, 0.991595696990271170, 0.991602164516829030, 0.991608629564381450, +0.991615092132912320, 0.991621552222405440, 0.991628009832844600, 0.991634464964213810, 0.991640917616496750, 0.991647367789677550, 0.991653815483739760, 0.991660260698667530, +0.991666703434444850, 0.991673143691055190, 0.991679581468482670, 0.991686016766711200, 0.991692449585724670, 0.991698879925507090, 0.991705307786042270, 0.991711733167314200, +0.991718156069306910, 0.991724576492004070, 0.991730994435389810, 0.991737409899448030, 0.991743822884162740, 0.991750233389517950, 0.991756641415497580, 0.991763046962085730, +0.991769450029266090, 0.991775850617022780, 0.991782248725339930, 0.991788644354201440, 0.991795037503591330, 0.991801428173493590, 0.991807816363892370, 0.991814202074771670, +0.991820585306115390, 0.991826966057907540, 0.991833344330132370, 0.991839720122773880, 0.991846093435815980, 0.991852464269242890, 0.991858832623038760, 0.991865198497187460, +0.991871561891673140, 0.991877922806479910, 0.991884281241591890, 0.991890637196993110, 0.991896990672667790, 0.991903341668600060, 0.991909690184773930, 0.991916036221173640, +0.991922379777783080, 0.991928720854586720, 0.991935059451568460, 0.991941395568712640, 0.991947729206003270, 0.991954060363424590, 0.991960389040960840, 0.991966715238596030, +0.991973038956314500, 0.991979360194100270, 0.991985678951937680, 0.991991995229810850, 0.991998309027704140, 0.992004620345601660, 0.992010929183487540, 0.992017235541346130, +0.992023539419161660, 0.992029840816918360, 0.992036139734600360, 0.992042436172192010, 0.992048730129677650, 0.992055021607041620, 0.992061310604267830, 0.992067597121340740, +0.992073881158244690, 0.992080162714964020, 0.992086441791482860, 0.992092718387785570, 0.992098992503856470, 0.992105264139680140, 0.992111533295240380, 0.992117799970521850, +0.992124064165508910, 0.992130325880185680, 0.992136585114536730, 0.992142841868546290, 0.992149096142198820, 0.992155347935478440, 0.992161597248369830, 0.992167844080857120, +0.992174088432924870, 0.992180330304557430, 0.992186569695739040, 0.992192806606454370, 0.992199041036687660, 0.992205272986423360, 0.992211502455645820, 0.992217729444339500, +0.992223953952488860, 0.992230175980078340, 0.992236395527092420, 0.992242612593515540, 0.992248827179332160, 0.992255039284526630, 0.992261248909083520, 0.992267456052987160, +0.992273660716222360, 0.992279862898773240, 0.992286062600624570, 0.992292259821760840, 0.992298454562166370, 0.992304646821825730, 0.992310836600723390, 0.992317023898844130, +0.992323208716172190, 0.992329391052692240, 0.992335570908388860, 0.992341748283246620, 0.992347923177249960, 0.992354095590383460, 0.992360265522631680, 0.992366432973979310, +0.992372597944410790, 0.992378760433910820, 0.992384920442463960, 0.992391077970054770, 0.992397233016667930, 0.992403385582288020, 0.992409535666899600, 0.992415683270487240, +0.992421828393035830, 0.992427971034529730, 0.992434111194953950, 0.992440248874292610, 0.992446384072530830, 0.992452516789652960, 0.992458647025643790, 0.992464774780488110, +0.992470900054170380, 0.992477022846675490, 0.992483143157988130, 0.992489260988092760, 0.992495376336974270, 0.992501489204617340, 0.992507599591006760, 0.992513707496127110, +0.992519812919963160, 0.992525915862499830, 0.992532016323721570, 0.992538114303613270, 0.992544209802159740, 0.992550302819345640, 0.992556393355155770, 0.992562481409574930, +0.992568566982587890, 0.992574650074179550, 0.992580730684334500, 0.992586808813037620, 0.992592884460273720, 0.992598957626027570, 0.992605028310283970, 0.992611096513027920, +0.992617162234244230, 0.992623225473917460, 0.992629286232032610, 0.992635344508574600, 0.992641400303528210, 0.992647453616878340, 0.992653504448609780, 0.992659552798707550, +0.992665598667156530, 0.992671642053941320, 0.992677682959047130, 0.992683721382458640, 0.992689757324160870, 0.992695790784138720, 0.992701821762377090, 0.992707850258860880, +0.992713876273575210, 0.992719899806504660, 0.992725920857634450, 0.992731939426949370, 0.992737955514434440, 0.992743969120074680, 0.992749980243854970, 0.992755988885760330, +0.992761995045775780, 0.992767998723886100, 0.992773999920076530, 0.992779998634331860, 0.992785994866637210, 0.992791988616977710, 0.992797979885338130, 0.992803968671703620, +0.992809954976059170, 0.992815938798389920, 0.992821920138680760, 0.992827898996916700, 0.992833875373082990, 0.992839849267164620, 0.992845820679146620, 0.992851789609014100, +0.992857756056751970, 0.992863720022345570, 0.992869681505779810, 0.992875640507039910, 0.992881597026110780, 0.992887551062977770, 0.992893502617625990, 0.992899451690040240, +0.992905398280205960, 0.992911342388108190, 0.992917284013732030, 0.992923223157062610, 0.992929159818085270, 0.992935093996784920, 0.992941025693146910, 0.992946954907156340, +0.992952881638798360, 0.992958805888058070, 0.992964727654920940, 0.992970646939371870, 0.992976563741396200, 0.992982478060979170, 0.992988389898106010, 0.992994299252761730, +0.993000206124931780, 0.993006110514601190, 0.993012012421755410, 0.993017911846379660, 0.993023808788459080, 0.993029703247979010, 0.993035595224924680, 0.993041484719281330, +0.993047371731034300, 0.993053256260168830, 0.993059138306670140, 0.993065017870523700, 0.993070894951714630, 0.993076769550228500, 0.993082641666050310, 0.993088511299165530, +0.993094378449559500, 0.993100243117217450, 0.993106105302124840, 0.993111965004266910, 0.993117822223629210, 0.993123676960196880, 0.993129529213955360, 0.993135378984890020, +0.993141226272986180, 0.993147071078229300, 0.993152913400604740, 0.993158753240097950, 0.993164590596694370, 0.993170425470379150, 0.993176257861137830, 0.993182087768956000, +0.993187915193818880, 0.993193740135711930, 0.993199562594620720, 0.993205382570530590, 0.993211200063427000, 0.993217015073295410, 0.993222827600121260, 0.993228637643890020, +0.993234445204587260, 0.993240250282198310, 0.993246052876708750, 0.993251852988104140, 0.993257650616369840, 0.993263445761491390, 0.993269238423454380, 0.993275028602244150, +0.993280816297846480, 0.993286601510246720, 0.993292384239430450, 0.993298164485383330, 0.993303942248090710, 0.993309717527538160, 0.993315490323711360, 0.993321260636595870, +0.993327028466177260, 0.993332793812441000, 0.993338556675372850, 0.993344317054958290, 0.993350074951182880, 0.993355830364032300, 0.993361583293492110, 0.993367333739548000, +0.993373081702185520, 0.993378827181390370, 0.993384570177148210, 0.993390310689444610, 0.993396048718265150, 0.993401784263595600, 0.993407517325421650, 0.993413247903728760, +0.993418975998502930, 0.993424701609729510, 0.993430424737394510, 0.993436145381483390, 0.993441863541981830, 0.993447579218875610, 0.993453292412150410, 0.993459003121792140, +0.993464711347786240, 0.993470417090118630, 0.993476120348774970, 0.993481821123740950, 0.993487519415002350, 0.993493215222545080, 0.993498908546354700, 0.993504599386417000, +0.993510287742717880, 0.993515973615243020, 0.993521657003978210, 0.993527337908909350, 0.993533016330022000, 0.993538692267302180, 0.993544365720735570, 0.993550036690308170, +0.993555705176005550, 0.993561371177813850, 0.993567034695718500, 0.993572695729705750, 0.993578354279761160, 0.993584010345870630, 0.993589663928020170, 0.993595315026195470, +0.993600963640382640, 0.993606609770567250, 0.993612253416735420, 0.993617894578872950, 0.993623533256965620, 0.993629169450999550, 0.993634803160960530, 0.993640434386834580, +0.993646063128607590, 0.993651689386265360, 0.993657313159793890, 0.993662934449179080, 0.993668553254406950, 0.993674169575463510, 0.993679783412334650, 0.993685394765006390, +0.993691003633464520, 0.993696610017695160, 0.993702213917684320, 0.993707815333417900, 0.993713414264881910, 0.993719010712062480, 0.993724604674945500, 0.993730196153516990, +0.993735785147763060, 0.993741371657669510, 0.993746955683222690, 0.993752537224408370, 0.993758116281212690, 0.993763692853621760, 0.993769266941621600, 0.993774838545198440, +0.993780407664338060, 0.993785974299026600, 0.993791538449250170, 0.993797100114995000, 0.993802659296247000, 0.993808215992992410, 0.993813770205217330, 0.993819321932907780, +0.993824871176049900, 0.993830417934629780, 0.993835962208633680, 0.993841503998047720, 0.993847043302858000, 0.993852580123050560, 0.993858114458611830, 0.993863646309527730, +0.993869175675784480, 0.993874702557368320, 0.993880226954265370, 0.993885748866461970, 0.993891268293944030, 0.993896785236698110, 0.993902299694710110, 0.993907811667966380, +0.993913321156453140, 0.993918828160156530, 0.993924332679062880, 0.993929834713158430, 0.993935334262429420, 0.993940831326862060, 0.993946325906442610, 0.993951818001157280, +0.993957307610992550, 0.993962794735934410, 0.993968279375969320, 0.993973761531083520, 0.993979241201263350, 0.993984718386495160, 0.993990193086765060, 0.993995665302059520, +0.994001135032364760, 0.994006602277667240, 0.994012067037953080, 0.994017529313208860, 0.994022989103420910, 0.994028446408575350, 0.994033901228658760, 0.994039353563657360, +0.994044803413557500, 0.994050250778345750, 0.994055695658008330, 0.994061138052531710, 0.994066577961902230, 0.994072015386106340, 0.994077450325130290, 0.994082882778960730, +0.994088312747583910, 0.994093740230986290, 0.994099165229154310, 0.994104587742074440, 0.994110007769733240, 0.994115425312116940, 0.994120840369212000, 0.994126252941004980, +0.994131663027482350, 0.994137070628630550, 0.994142475744436040, 0.994147878374885500, 0.994153278519965160, 0.994158676179661580, 0.994164071353961340, 0.994169464042850890, +0.994174854246316800, 0.994180241964345620, 0.994185627196923720, 0.994191009944037970, 0.994196390205674520, 0.994201767981820140, 0.994207143272461290, 0.994212516077584650, +0.994217886397176680, 0.994223254231224040, 0.994228619579713310, 0.994233982442630950, 0.994239342819963620, 0.994244700711698020, 0.994250056117820580, 0.994255409038317990, +0.994260759473176940, 0.994266107422383970, 0.994271452885925780, 0.994276795863788920, 0.994282136355960080, 0.994287474362425820, 0.994292809883172920, 0.994298142918188080, +0.994303473467457730, 0.994308801530968790, 0.994314127108707920, 0.994319450200661590, 0.994324770806816690, 0.994330088927159910, 0.994335404561677900, 0.994340717710357260, +0.994346028373184980, 0.994351336550147620, 0.994356642241231770, 0.994361945446424420, 0.994367246165712260, 0.994372544399081850, 0.994377840146520200, 0.994383133408013880, +0.994388424183549670, 0.994393712473114590, 0.994398998276695090, 0.994404281594278070, 0.994409562425850440, 0.994414840771398860, 0.994420116630910120, 0.994425390004371130, +0.994430660891768680, 0.994435929293089660, 0.994441195208320750, 0.994446458637448850, 0.994451719580460750, 0.994456978037343450, 0.994462234008083650, 0.994467487492668220, +0.994472738491084200, 0.994477987003318240, 0.994483233029357370, 0.994488476569188260, 0.994493717622798150, 0.994498956190173590, 0.994504192271301710, 0.994509425866169420, +0.994514656974763600, 0.994519885597070940, 0.994525111733078670, 0.994530335382773690, 0.994535556546142780, 0.994540775223172970, 0.994545991413851250, 0.994551205118164640, +0.994556416336099920, 0.994561625067644120, 0.994566831312784340, 0.994572035071507490, 0.994577236343800460, 0.994582435129650390, 0.994587631429044270, 0.994592825241969130, +0.994598016568411850, 0.994603205408359450, 0.994608391761799050, 0.994613575628717770, 0.994618757009102520, 0.994623935902940290, 0.994629112310218330, 0.994634286230923650, +0.994639457665043140, 0.994644626612564030, 0.994649793073473230, 0.994654957047758080, 0.994660118535405480, 0.994665277536402660, 0.994670434050736630, 0.994675588078394510, +0.994680739619363320, 0.994685888673630390, 0.994691035241182740, 0.994696179322007380, 0.994701320916091650, 0.994706460023422670, 0.994711596643987560, 0.994716730777773340, +0.994721862424767340, 0.994726991584956700, 0.994732118258328630, 0.994737242444870160, 0.994742364144568620, 0.994747483357411140, 0.994752600083385170, 0.994757714322477500, +0.994762826074675590, 0.994767935339966550, 0.994773042118337720, 0.994778146409776240, 0.994783248214269440, 0.994788347531804560, 0.994793444362368830, 0.994798538705949360, +0.994803630562533630, 0.994808719932108840, 0.994813806814662250, 0.994818891210181080, 0.994823973118652670, 0.994829052540064480, 0.994834129474403530, 0.994839203921657260, +0.994844275881813010, 0.994849345354858030, 0.994854412340779760, 0.994859476839565330, 0.994864538851202410, 0.994869598375678010, 0.994874655412979590, 0.994879709963094610, +0.994884762026010280, 0.994889811601714080, 0.994894858690193340, 0.994899903291435520, 0.994904945405427950, 0.994909985032158000, 0.994915022171612980, 0.994920056823780490, +0.994925088988647840, 0.994930118666202400, 0.994935145856431720, 0.994940170559323270, 0.994945192774864370, 0.994950212503042390, 0.994955229743844980, 0.994960244497259390, +0.994965256763273190, 0.994970266541873930, 0.994975273833048960, 0.994980278636785840, 0.994985280953072040, 0.994990280781895000, 0.994995278123242290, 0.995000272977101250, +0.995005265343459680, 0.995010255222304910, 0.995015242613624510, 0.995020227517406040, 0.995025209933636860, 0.995030189862304740, 0.995035167303397140, 0.995040142256901630, +0.995045114722805770, 0.995050084701097130, 0.995055052191763270, 0.995060017194791870, 0.995064979710170270, 0.995069939737886270, 0.995074897277927420, 0.995079852330281400, +0.995084804894935670, 0.995089754971877900, 0.995094702561095890, 0.995099647662577080, 0.995104590276309040, 0.995109530402279560, 0.995114468040476320, 0.995119403190886880, +0.995124335853498910, 0.995129266028300100, 0.995134193715278230, 0.995139118914420750, 0.995144041625715460, 0.995148961849150140, 0.995153879584712350, 0.995158794832389890, +0.995163707592170430, 0.995168617864041870, 0.995173525647991550, 0.995178430944007490, 0.995183333752077350, 0.995188234072188930, 0.995193131904329900, 0.995198027248487940, +0.995202920104650950, 0.995207810472806820, 0.995212698352943010, 0.995217583745047540, 0.995222466649107960, 0.995227347065112400, 0.995232224993048310, 0.995237100432903700, +0.995241973384666360, 0.995246843848324180, 0.995251711823864850, 0.995256577311276150, 0.995261440310546090, 0.995266300821662340, 0.995271158844612920, 0.995276014379385620, +0.995280867425968330, 0.995285717984348730, 0.995290566054514940, 0.995295411636454630, 0.995300254730155820, 0.995305095335606400, 0.995309933452794280, 0.995314769081707240, +0.995319602222333400, 0.995324432874660550, 0.995329261038676470, 0.995334086714369290, 0.995338909901727020, 0.995343730600737330, 0.995348548811388350, 0.995353364533668070, +0.995358177767564300, 0.995362988513065150, 0.995367796770158410, 0.995372602538832310, 0.995377405819074630, 0.995382206610873400, 0.995387004914216720, 0.995391800729092610, +0.995396594055488970, 0.995401384893393690, 0.995406173242795010, 0.995410959103680940, 0.995415742476039480, 0.995420523359858640, 0.995425301755126450, 0.995430077661831230, +0.995434851079960550, 0.995439622009502870, 0.995444390450446080, 0.995449156402778310, 0.995453919866487680, 0.995458680841562190, 0.995463439327990200, 0.995468195325759360, +0.995472948834858150, 0.995477699855274570, 0.995482448386996730, 0.995487194430012770, 0.995491937984310790, 0.995496679049879040, 0.995501417626705520, 0.995506153714778570, +0.995510887314086100, 0.995515618424616440, 0.995520347046357720, 0.995525073179298170, 0.995529796823426020, 0.995534517978729270, 0.995539236645196280, 0.995543952822815160, +0.995548666511574140, 0.995553377711461460, 0.995558086422465350, 0.995562792644574030, 0.995567496377775750, 0.995572197622058840, 0.995576896377411310, 0.995581592643821510, +0.995586286421277780, 0.995590977709768230, 0.995595666509281330, 0.995600352819805190, 0.995605036641328270, 0.995609717973838790, 0.995614396817325000, 0.995619073171775120, +0.995623747037177600, 0.995628418413520680, 0.995633087300792700, 0.995637753698982110, 0.995642417608077150, 0.995647079028066040, 0.995651737958937240, 0.995656394400679100, +0.995661048353280060, 0.995665699816728260, 0.995670348791012350, 0.995674995276120470, 0.995679639272041170, 0.995684280778762810, 0.995688919796273610, 0.995693556324562130, +0.995698190363616840, 0.995702821913426070, 0.995707450973978170, 0.995712077545261700, 0.995716701627265110, 0.995721323219976640, 0.995725942323384960, 0.995730558937478310, +0.995735173062245350, 0.995739784697674430, 0.995744393843754020, 0.995749000500472770, 0.995753604667818930, 0.995758206345781050, 0.995762805534347590, 0.995767402233507240, +0.995771996443248320, 0.995776588163559410, 0.995781177394429060, 0.995785764135845740, 0.995790348387798010, 0.995794930150274430, 0.995799509423263560, 0.995804086206753870, +0.995808660500733910, 0.995813232305192360, 0.995817801620117680, 0.995822368445498650, 0.995826932781323610, 0.995831494627581250, 0.995836053984260120, 0.995840610851348780, +0.995845165228836040, 0.995849717116710330, 0.995854266514960340, 0.995858813423574740, 0.995863357842541990, 0.995867899771850970, 0.995872439211490050, 0.995876976161448100, +0.995881510621713820, 0.995886042592275640, 0.995890572073122480, 0.995895099064242780, 0.995899623565625340, 0.995904145577258810, 0.995908665099132010, 0.995913182131233480, +0.995917696673551900, 0.995922208726076290, 0.995926718288795090, 0.995931225361697090, 0.995935729944770980, 0.995940232038005520, 0.995944731641389520, 0.995949228754911650, +0.995953723378560810, 0.995958215512325660, 0.995962705156194890, 0.995967192310157400, 0.995971676974201970, 0.995976159148317270, 0.995980638832492220, 0.995985116026715470, +0.995989590730976040, 0.995994062945262710, 0.995998532669564060, 0.996002999903869090, 0.996007464648166700, 0.996011926902445670, 0.996016386666694680, 0.996020843940902840, +0.996025298725058960, 0.996029751019151700, 0.996034200823170070, 0.996038648137102970, 0.996043092960939290, 0.996047535294667830, 0.996051975138277480, 0.996056412491757250, +0.996060847355096150, 0.996065279728282740, 0.996069709611306140, 0.996074137004155260, 0.996078561906819090, 0.996082984319286550, 0.996087404241546400, 0.996091821673587900, +0.996096236615399810, 0.996100649066971160, 0.996105059028290720, 0.996109466499347730, 0.996113871480131090, 0.996118273970629800, 0.996122673970832760, 0.996127071480729210, +0.996131466500307820, 0.996135859029557810, 0.996140249068468100, 0.996144636617027790, 0.996149021675225900, 0.996153404243051430, 0.996157784320493400, 0.996162161907541140, +0.996166537004183230, 0.996170909610409110, 0.996175279726207670, 0.996179647351568050, 0.996184012486479250, 0.996188375130930500, 0.996192735284910810, 0.996197092948409190, +0.996201448121414980, 0.996205800803916960, 0.996210150995904600, 0.996214498697366780, 0.996218843908292740, 0.996223186628671600, 0.996227526858492580, 0.996231864597744600, +0.996236199846416980, 0.996240532604498960, 0.996244862871979550, 0.996249190648847870, 0.996253515935093370, 0.996257838730705060, 0.996262159035672170, 0.996266476849983820, +0.996270792173629240, 0.996275105006597770, 0.996279415348878540, 0.996283723200460660, 0.996288028561333580, 0.996292331431486430, 0.996296631810908440, 0.996300929699588830, +0.996305225097516840, 0.996309518004681930, 0.996313808421073090, 0.996318096346679780, 0.996322381781491240, 0.996326664725496910, 0.996330945178685700, 0.996335223141047170, +0.996339498612570650, 0.996343771593245280, 0.996348042083060600, 0.996352310082005750, 0.996356575590070070, 0.996360838607243120, 0.996365099133513900, 0.996369357168871980, +0.996373612713306710, 0.996377865766807420, 0.996382116329363350, 0.996386364400964060, 0.996390609981599010, 0.996394853071257190, 0.996399093669928400, 0.996403331777601760, +0.996407567394266840, 0.996411800519913070, 0.996416031154529700, 0.996420259298106290, 0.996424484950632290, 0.996428708112097050, 0.996432928782490010, 0.996437146961800630, +0.996441362650018370, 0.996445575847132780, 0.996449786553133210, 0.996453994768009220, 0.996458200491750160, 0.996462403724345690, 0.996466604465785170, 0.996470802716058040, +0.996474998475153970, 0.996479191743062430, 0.996483382519772980, 0.996487570805275060, 0.996491756599558130, 0.996495939902611760, 0.996500120714425620, 0.996504299034989160, +0.996508474864291950, 0.996512648202323660, 0.996516819049073630, 0.996520987404531660, 0.996525153268687070, 0.996529316641529660, 0.996533477523048990, 0.996537635913234630, +0.996541791812076140, 0.996545945219563190, 0.996550096135685460, 0.996554244560432400, 0.996558390493793690, 0.996562533935759000, 0.996566674886318120, 0.996570813345460380, +0.996574949313175700, 0.996579082789453620, 0.996583213774283940, 0.996587342267656110, 0.996591468269559910, 0.996595591779985130, 0.996599712798921230, 0.996603831326358210, +0.996607947362285530, 0.996612060906693080, 0.996616171959570310, 0.996620280520907230, 0.996624386590693410, 0.996628490168918630, 0.996632591255572580, 0.996636689850645130, +0.996640785954125860, 0.996644879566004780, 0.996648970686271340, 0.996653059314915550, 0.996657145451927070, 0.996661229097295820, 0.996665310251011350, 0.996669388913063670, +0.996673465083442570, 0.996677538762137830, 0.996681609949139240, 0.996685678644436580, 0.996689744848019640, 0.996693808559878440, 0.996697869780002740, 0.996701928508382240, +0.996705984745007050, 0.996710038489866830, 0.996714089742951610, 0.996718138504251060, 0.996722184773755180, 0.996726228551453870, 0.996730269837336920, 0.996734308631394340, +0.996738344933616130, 0.996742378743991850, 0.996746410062511750, 0.996750438889165590, 0.996754465223943290, 0.996758489066834840, 0.996762510417830150, 0.996766529276919220, +0.996770545644092070, 0.996774559519338470, 0.996778570902648430, 0.996782579794011970, 0.996786586193419090, 0.996790590100859690, 0.996794591516323880, 0.996798590439801570, +0.996802586871282760, 0.996806580810757570, 0.996810572258215900, 0.996814561213647750, 0.996818547677043140, 0.996822531648392300, 0.996826513127685000, 0.996830492114911590, +0.996834468610061750, 0.996838442613125930, 0.996842414124093800, 0.996846383142955820, 0.996850349669701760, 0.996854313704321870, 0.996858275246806260, 0.996862234297144930, +0.996866190855327900, 0.996870144921345510, 0.996874096495187770, 0.996878045576844670, 0.996881992166306570, 0.996885936263563480, 0.996889877868605500, 0.996893816981422880, +0.996897753602005720, 0.996901687730344150, 0.996905619366428300, 0.996909548510248490, 0.996913475161794740, 0.996917399321057270, 0.996921320988026440, 0.996925240162692240, +0.996929156845045020, 0.996933071035074780, 0.996936982732771870, 0.996940891938126520, 0.996944798651128950, 0.996948702871769510, 0.996952604600038210, 0.996956503835925380, +0.996960400579421260, 0.996964294830516180, 0.996968186589200390, 0.996972075855464100, 0.996975962629297660, 0.996979846910691300, 0.996983728699635250, 0.996987607996119960, +0.996991484800135660, 0.996995359111672590, 0.996999230930721180, 0.997003100257271570, 0.997006967091314310, 0.997010831432839750, 0.997014693281837890, 0.997018552638299420, +0.997022409502214550, 0.997026263873573630, 0.997030115752367110, 0.997033965138585220, 0.997037812032218530, 0.997041656433257260, 0.997045498341691760, 0.997049337757512590, +0.997053174680710090, 0.997057009111274590, 0.997060841049196570, 0.997064670494466570, 0.997068497447074820, 0.997072321907011780, 0.997076143874268020, 0.997079963348833860, +0.997083780330699780, 0.997087594819856200, 0.997091406816293710, 0.997095216320002750, 0.997099023330973670, 0.997102827849197020, 0.997106629874663360, 0.997110429407363050, +0.997114226447286760, 0.997118020994424810, 0.997121813048767790, 0.997125602610306360, 0.997129389679030860, 0.997133174254931980, 0.997136956338000040, 0.997140735928225720, +0.997144513025599590, 0.997148287630112210, 0.997152059741754030, 0.997155829360515830, 0.997159596486387970, 0.997163361119361100, 0.997167123259425800, 0.997170882906572740, +0.997174640060792480, 0.997178394722075590, 0.997182146890412850, 0.997185896565794590, 0.997189643748211620, 0.997193388437654590, 0.997197130634113970, 0.997200870337580650, +0.997204607548045070, 0.997208342265498040, 0.997212074489930210, 0.997215804221332050, 0.997219531459694440, 0.997223256205008070, 0.997226978457263490, 0.997230698216451380, +0.997234415482562640, 0.997238130255587830, 0.997241842535517730, 0.997245552322343020, 0.997249259616054370, 0.997252964416642680, 0.997256666724098410, 0.997260366538412660, +0.997264063859575890, 0.997267758687579000, 0.997271451022412660, 0.997275140864067770, 0.997278828212534880, 0.997282513067805020, 0.997286195429868960, 0.997289875298717270, +0.997293552674340940, 0.997297227556730780, 0.997300899945877560, 0.997304569841771960, 0.997308237244405090, 0.997311902153767530, 0.997315564569850270, 0.997319224492643990, +0.997322881922139800, 0.997326536858328390, 0.997330189301200540, 0.997333839250747260, 0.997337486706959320, 0.997341131669827740, 0.997344774139343300, 0.997348414115497020, +0.997352051598279670, 0.997355686587682140, 0.997359319083695350, 0.997362949086310290, 0.997366576595517970, 0.997370201611309070, 0.997373824133674700, 0.997377444162605760, +0.997381061698093370, 0.997384676740128210, 0.997388289288701270, 0.997391899343803680, 0.997395506905426330, 0.997399111973560240, 0.997402714548196400, 0.997406314629325720, +0.997409912216939310, 0.997413507311028070, 0.997417099911583000, 0.997420690018595240, 0.997424277632055770, 0.997427862751955610, 0.997431445378285760, 0.997435025511037470, +0.997438603150201390, 0.997442178295768870, 0.997445750947730910, 0.997449321106078650, 0.997452888770802960, 0.997456453941895080, 0.997460016619346130, 0.997463576803147120, +0.997467134493289160, 0.997470689689763380, 0.997474242392560770, 0.997477792601672690, 0.997481340317090020, 0.997484885538804100, 0.997488428266805950, 0.997491968501086680, +0.997495506241637520, 0.997499041488449590, 0.997502574241514010, 0.997506104500822000, 0.997509632266364800, 0.997513157538133520, 0.997516680316119290, 0.997520200600313430, +0.997523718390706970, 0.997527233687291350, 0.997530746490057460, 0.997534256798996880, 0.997537764614100490, 0.997541269935359850, 0.997544772762765990, 0.997548273096310220, +0.997551770935983680, 0.997555266281777710, 0.997558759133683640, 0.997562249491692700, 0.997565737355796010, 0.997569222725985140, 0.997572705602251200, 0.997576185984585420, +0.997579663872979140, 0.997583139267423700, 0.997586612167910450, 0.997590082574430710, 0.997593550486975730, 0.997597015905536950, 0.997600478830105500, 0.997603939260672920, +0.997607397197230460, 0.997610852639769560, 0.997614305588281460, 0.997617756042757710, 0.997621204003189540, 0.997624649469568300, 0.997628092441885440, 0.997631532920132290, +0.997634970904300420, 0.997638406394381060, 0.997641839390365770, 0.997645269892245780, 0.997648697900012760, 0.997652123413657830, 0.997655546433172670, 0.997658966958548610, +0.997662384989777110, 0.997665800526849720, 0.997669213569757800, 0.997672624118492890, 0.997676032173046350, 0.997679437733409720, 0.997682840799574590, 0.997686241371532280, +0.997689639449274360, 0.997693035032792390, 0.997696428122077820, 0.997699818717122210, 0.997703206817917020, 0.997706592424453810, 0.997709975536724140, 0.997713356154719460, +0.997716734278431440, 0.997720109907851650, 0.997723483042971430, 0.997726853683782670, 0.997730221830276710, 0.997733587482445230, 0.997736950640279670, 0.997740311303771830, +0.997743669472913150, 0.997747025147695310, 0.997750378328109980, 0.997753729014148720, 0.997757077205803090, 0.997760422903064660, 0.997763766105925320, 0.997767106814376530, +0.997770445028409950, 0.997773780748017150, 0.997777113973190130, 0.997780444703920130, 0.997783772940199150, 0.997787098682018650, 0.997790421929370400, 0.997793742682246190, +0.997797060940637580, 0.997800376704536250, 0.997803689973934090, 0.997807000748822670, 0.997810309029193650, 0.997813614815038940, 0.997816918106350200, 0.997820218903119120, +0.997823517205337570, 0.997826813012997250, 0.997830106326089820, 0.997833397144607170, 0.997836685468540980, 0.997839971297883040, 0.997843254632625240, 0.997846535472759260, +0.997849813818276980, 0.997853089669170190, 0.997856363025430680, 0.997859633887050120, 0.997862902254020630, 0.997866168126333890, 0.997869431503981660, 0.997872692386955860, +0.997875950775248380, 0.997879206668850880, 0.997882460067755490, 0.997885710971953890, 0.997888959381438070, 0.997892205296199820, 0.997895448716231040, 0.997898689641523730, +0.997901928072069680, 0.997905164007860780, 0.997908397448888930, 0.997911628395146130, 0.997914856846624180, 0.997918082803315180, 0.997921306265210920, 0.997924527232303400, +0.997927745704584650, 0.997930961682046420, 0.997934175164680860, 0.997937386152479840, 0.997940594645435270, 0.997943800643539380, 0.997947004146783830, 0.997950205155160860, +0.997953403668662360, 0.997956599687280340, 0.997959793211006920, 0.997962984239833870, 0.997966172773753430, 0.997969358812757500, 0.997972542356838300, 0.997975723405987610, +0.997978901960197670, 0.997982078019460480, 0.997985251583768160, 0.997988422653112610, 0.997991591227486040, 0.997994757306880480, 0.997997920891288030, 0.998001081980700810, +0.998004240575110830, 0.998007396674510330, 0.998010550278891300, 0.998013701388245860, 0.998016850002566120, 0.998019996121844330, 0.998023139746072600, 0.998026280875242920, +0.998029419509347650, 0.998032555648378780, 0.998035689292328440, 0.998038820441188970, 0.998041949094952360, 0.998045075253610970, 0.998048198917156900, 0.998051320085582280, +0.998054438758879450, 0.998057554937040400, 0.998060668620057490, 0.998063779807922940, 0.998066888500628970, 0.998069994698167710, 0.998073098400531490, 0.998076199607712540, +0.998079298319703100, 0.998082394536495390, 0.998085488258081740, 0.998088579484454290, 0.998091668215605470, 0.998094754451527510, 0.998097838192212540, 0.998100919437653000, +0.998103998187841230, 0.998107074442769360, 0.998110148202429940, 0.998113219466815080, 0.998116288235917140, 0.998119354509728550, 0.998122418288241550, 0.998125479571448480, +0.998128538359341790, 0.998131594651913590, 0.998134648449156560, 0.998137699751062810, 0.998140748557624910, 0.998143794868835090, 0.998146838684685790, 0.998149880005169350, +0.998152918830278240, 0.998155955160004880, 0.998158988994341520, 0.998162020333280830, 0.998165049176815030, 0.998168075524936580, 0.998171099377637930, 0.998174120734911520, +0.998177139596749920, 0.998180155963145350, 0.998183169834090500, 0.998186181209577580, 0.998189190089599390, 0.998192196474148140, 0.998195200363216300, 0.998198201756796630, +0.998201200654881270, 0.998204197057463110, 0.998207190964534250, 0.998210182376087610, 0.998213171292115400, 0.998216157712610300, 0.998219141637564760, 0.998222123066971450, +0.998225102000822820, 0.998228078439111320, 0.998231052381829740, 0.998234023828970530, 0.998236992780526240, 0.998239959236489450, 0.998242923196852710, 0.998245884661608680, +0.998248843630750060, 0.998251800104269170, 0.998254754082158910, 0.998257705564411730, 0.998260654551020310, 0.998263601041977200, 0.998266545037275080, 0.998269486536906610, +0.998272425540864480, 0.998275362049141250, 0.998278296061729580, 0.998281227578622250, 0.998284156599811730, 0.998287083125290910, 0.998290007155052340, 0.998292928689088810, +0.998295847727392880, 0.998298764269957340, 0.998301678316774970, 0.998304589867838430, 0.998307498923140300, 0.998310405482673470, 0.998313309546430610, 0.998316211114404490, +0.998319110186587810, 0.998322006762973450, 0.998324900843554080, 0.998327792428322370, 0.998330681517271110, 0.998333568110393310, 0.998336452207681520, 0.998339333809128540, +0.998342212914727250, 0.998345089524470540, 0.998347963638350990, 0.998350835256361590, 0.998353704378495130, 0.998356571004744290, 0.998359435135102060, 0.998362296769561340, +0.998365155908114810, 0.998368012550755470, 0.998370866697475990, 0.998373718348269380, 0.998376567503128420, 0.998379414162046120, 0.998382258325015260, 0.998385099992028740, +0.998387939163079550, 0.998390775838160380, 0.998393610017264340, 0.998396441700384330, 0.998399270887513120, 0.998402097578643840, 0.998404921773769160, 0.998407743472882300, +0.998410562675976050, 0.998413379383043420, 0.998416193594077290, 0.998419005309070680, 0.998421814528016590, 0.998424621250908030, 0.998427425477737770, 0.998430227208499050, +0.998433026443184770, 0.998435823181787920, 0.998438617424301400, 0.998441409170718440, 0.998444198421031940, 0.998446985175234890, 0.998449769433320420, 0.998452551195281530, +0.998455330461111350, 0.998458107230802750, 0.998460881504348860, 0.998463653281742800, 0.998466422562977570, 0.998469189348046290, 0.998471953636942080, 0.998474715429658040, +0.998477474726187090, 0.998480231526522540, 0.998482985830657420, 0.998485737638584720, 0.998488486950297790, 0.998491233765789630, 0.998493978085053360, 0.998496719908082090, +0.998499459234869160, 0.998502196065407470, 0.998504930399690350, 0.998507662237710810, 0.998510391579462200, 0.998513118424937620, 0.998515842774130190, 0.998518564627033140, +0.998521283983639710, 0.998524000843943100, 0.998526715207936450, 0.998529427075613100, 0.998532136446966030, 0.998534843321988720, 0.998537547700674380, 0.998540249583016020, +0.998542948969007080, 0.998545645858640810, 0.998548340251910420, 0.998551032148809140, 0.998553721549330200, 0.998556408453467160, 0.998559092861213030, 0.998561774772561030, +0.998564454187504720, 0.998567131106037230, 0.998569805528152000, 0.998572477453842140, 0.998575146883101120, 0.998577813815922260, 0.998580478252298900, 0.998583140192224270, +0.998585799635691830, 0.998588456582694910, 0.998591111033226730, 0.998593762987280860, 0.998596412444850650, 0.998599059405929300, 0.998601703870510390, 0.998604345838587150, +0.998606985310153130, 0.998609622285201560, 0.998612256763726000, 0.998614888745719690, 0.998617518231176280, 0.998620145220089020, 0.998622769712451450, 0.998625391708256930, +0.998628011207498890, 0.998630628210170790, 0.998633242716266190, 0.998635854725778430, 0.998638464238701170, 0.998641071255027660, 0.998643675774751440, 0.998646277797866080, +0.998648877324364910, 0.998651474354241620, 0.998654068887489750, 0.998656660924102660, 0.998659250464073890, 0.998661837507396900, 0.998664422054065470, 0.998667004104072830, +0.998669583657412760, 0.998672160714078830, 0.998674735274064360, 0.998677307337363150, 0.998679876903968640, 0.998682443973874400, 0.998685008547074090, 0.998687570623561170, +0.998690130203329420, 0.998692687286372280, 0.998695241872683550, 0.998697793962256550, 0.998700343555085190, 0.998702890651162910, 0.998705435250483390, 0.998707977353040290, +0.998710516958827290, 0.998713054067837950, 0.998715588680066050, 0.998718120795505150, 0.998720650414148920, 0.998723177535991050, 0.998725702161025300, 0.998728224289245240, +0.998730743920644650, 0.998733261055217200, 0.998735775692956570, 0.998738287833856540, 0.998740797477910780, 0.998743304625112960, 0.998745809275456970, 0.998748311428936390, +0.998750811085545090, 0.998753308245276750, 0.998755802908125050, 0.998758295074083980, 0.998760784743147110, 0.998763271915308230, 0.998765756590561220, 0.998768238768899860, +0.998770718450317840, 0.998773195634809040, 0.998775670322367250, 0.998778142512986360, 0.998780612206660030, 0.998783079403382180, 0.998785544103146570, 0.998788006305947220, +0.998790466011777790, 0.998792923220632180, 0.998795377932504280, 0.998797830147387990, 0.998800279865277090, 0.998802727086165460, 0.998805171810047020, 0.998807614036915650, +0.998810053766765350, 0.998812490999589800, 0.998814925735383110, 0.998817357974138950, 0.998819787715851560, 0.998822214960514600, 0.998824639708122080, 0.998827061958668110, +0.998829481712146360, 0.998831898968550960, 0.998834313727875790, 0.998836725990114860, 0.998839135755262060, 0.998841543023311410, 0.998843947794257000, 0.998846350068092750, +0.998848749844812530, 0.998851147124410370, 0.998853541906880470, 0.998855934192216630, 0.998858323980412970, 0.998860711271463590, 0.998863096065362390, 0.998865478362103380, +0.998867858161680780, 0.998870235464088490, 0.998872610269320500, 0.998874982577371170, 0.998877352388234270, 0.998879719701904030, 0.998882084518374460, 0.998884446837639770, +0.998886806659693870, 0.998889163984530980, 0.998891518812145110, 0.998893871142530590, 0.998896220975681200, 0.998898568311591410, 0.998900913150255200, 0.998903255491666700, +0.998905595335820020, 0.998907932682709390, 0.998910267532328810, 0.998912599884672740, 0.998914929739735060, 0.998917257097510000, 0.998919581957991910, 0.998921904321174890, +0.998924224187053070, 0.998926541555620660, 0.998928856426871900, 0.998931168800801020, 0.998933478677402120, 0.998935786056669660, 0.998938090938597760, 0.998940393323180520, +0.998942693210412290, 0.998944990600287410, 0.998947285492799990, 0.998949577887944360, 0.998951867785714880, 0.998954155186105640, 0.998956440089111110, 0.998958722494725390, +0.998961002402942830, 0.998963279813757770, 0.998965554727164640, 0.998967827143157460, 0.998970097061730790, 0.998972364482878960, 0.998974629406596090, 0.998976891832876750, +0.998979151761715150, 0.998981409193105630, 0.998983664127042540, 0.998985916563520430, 0.998988166502533410, 0.998990413944076060, 0.998992658888142590, 0.998994901334727570, +0.998997141283825220, 0.998999378735429990, 0.999001613689536440, 0.999003846146138690, 0.999006076105231510, 0.999008303566809030, 0.999010528530865800, 0.999012750997396280, +0.999014970966394800, 0.999017188437856030, 0.999019403411774200, 0.999021615888143870, 0.999023825866959480, 0.999026033348215600, 0.999028238331906570, 0.999030440818026940, +0.999032640806571280, 0.999034838297533920, 0.999037033290909540, 0.999039225786692580, 0.999041415784877480, 0.999043603285458940, 0.999045788288431270, 0.999047970793789260, +0.999050150801527260, 0.999052328311639930, 0.999054503324121710, 0.999056675838967290, 0.999058845856171110, 0.999061013375727840, 0.999063178397632030, 0.999065340921878380, +0.999067500948461310, 0.999069658477375390, 0.999071813508615400, 0.999073966042176020, 0.999076116078051580, 0.999078263616236860, 0.999080408656726430, 0.999082551199515060, +0.999084691244597310, 0.999086828791967750, 0.999088963841621270, 0.999091096393552200, 0.999093226447755560, 0.999095354004225670, 0.999097479062957540, 0.999099601623945620, +0.999101721687184810, 0.999103839252669660, 0.999105954320394840, 0.999108066890355250, 0.999110176962545340, 0.999112284536960100, 0.999114389613594110, 0.999116492192442140, +0.999118592273498970, 0.999120689856759390, 0.999122784942217960, 0.999124877529869560, 0.999126967619709090, 0.999129055211731120, 0.999131140305930530, 0.999133222902302000, +0.999135303000840520, 0.999137380601540780, 0.999139455704397550, 0.999141528309405720, 0.999143598416560090, 0.999145666025855420, 0.999147731137286500, 0.999149793750848340, +0.999151853866535710, 0.999153911484343520, 0.999155966604266420, 0.999158019226299430, 0.999160069350437440, 0.999162116976675230, 0.999164162105007800, 0.999166204735429830, +0.999168244867936540, 0.999170282502522490, 0.999172317639182790, 0.999174350277912240, 0.999176380418705820, 0.999178408061558550, 0.999180433206465100, 0.999182455853420690, +0.999184476002420220, 0.999186493653458350, 0.999188508806530430, 0.999190521461631120, 0.999192531618755540, 0.999194539277898590, 0.999196544439055370, 0.999198547102220780, +0.999200547267389830, 0.999202544934557510, 0.999204540103718730, 0.999206532774868710, 0.999208522948002330, 0.999210510623114610, 0.999212495800200660, 0.999214478479255490, +0.999216458660273980, 0.999218436343251470, 0.999220411528182860, 0.999222384215063150, 0.999224354403887460, 0.999226322094651010, 0.999228287287348690, 0.999230249981975630, +0.999232210178526930, 0.999234167876997810, 0.999236123077383190, 0.999238075779678270, 0.999240025983878180, 0.999241973689978020, 0.999243918897972930, 0.999245861607858000, +0.999247801819628470, 0.999249739533279340, 0.999251674748805940, 0.999253607466203400, 0.999255537685466710, 0.999257465406591330, 0.999259390629572250, 0.999261313354404600, +0.999263233581083710, 0.999265151309604800, 0.999267066539962890, 0.999268979272153410, 0.999270889506171490, 0.999272797242012350, 0.999274702479671210, 0.999276605219143190, +0.999278505460423850, 0.999280403203508080, 0.999282298448391450, 0.999284191195068950, 0.999286081443536030, 0.999287969193787930, 0.999289854445819860, 0.999291737199627160, +0.999293617455205170, 0.999295495212549010, 0.999297370471654230, 0.999299243232515950, 0.999301113495129620, 0.999302981259490570, 0.999304846525593930, 0.999306709293435240, +0.999308569563009730, 0.999310427334312860, 0.999312282607339950, 0.999314135382086240, 0.999315985658547290, 0.999317833436718320, 0.999319678716594770, 0.999321521498171990, +0.999323361781445430, 0.999325199566410530, 0.999327034853062510, 0.999328867641396950, 0.999330697931409270, 0.999332525723094830, 0.999334351016449070, 0.999336173811467440, +0.999337994108145390, 0.999339811906478250, 0.999341627206461690, 0.999343440008091060, 0.999345250311361790, 0.999347058116269450, 0.999348863422809370, 0.999350666230977240, +0.999352466540768370, 0.999354264352178330, 0.999356059665202580, 0.999357852479836880, 0.999359642796076360, 0.999361430613916800, 0.999363215933353640, 0.999364998754382450, +0.999366779076998780, 0.999368556901198190, 0.999370332226976130, 0.999372105054328390, 0.999373875383250180, 0.999375643213737400, 0.999377408545785490, 0.999379171379390140, +0.999380931714546780, 0.999382689551251090, 0.999384444889498620, 0.999386197729285160, 0.999387948070606160, 0.999389695913457280, 0.999391441257834190, 0.999393184103732460, +0.999394924451147750, 0.999396662300075730, 0.999398397650512080, 0.999400130502452470, 0.999401860855892550, 0.999403588710827910, 0.999405314067254300, 0.999407036925167410, +0.999408757284563020, 0.999410475145436570, 0.999412190507784070, 0.999413903371601080, 0.999415613736883260, 0.999417321603626510, 0.999419026971826390, 0.999420729841478670, +0.999422430212579150, 0.999424128085123600, 0.999425823459107690, 0.999427516334527200, 0.999429206711378030, 0.999430894589655730, 0.999432579969356190, 0.999434262850475210, +0.999435943233008660, 0.999437621116952220, 0.999439296502301680, 0.999440969389052910, 0.999442639777201710, 0.999444307666743970, 0.999445973057675460, 0.999447635949991970, +0.999449296343689400, 0.999450954238763620, 0.999452609635210320, 0.999454262533025610, 0.999455912932205260, 0.999457560832745060, 0.999459206234641020, 0.999460849137889020, +0.999462489542484840, 0.999464127448424390, 0.999465762855703650, 0.999467395764318530, 0.999469026174264810, 0.999470654085538700, 0.999472279498135770, 0.999473902412052250, +0.999475522827284020, 0.999477140743826990, 0.999478756161677030, 0.999480369080830160, 0.999481979501282370, 0.999483587423029670, 0.999485192846067960, 0.999486795770393340, +0.999488396196001720, 0.999489994122889080, 0.999491589551051440, 0.999493182480484910, 0.999494772911185380, 0.999496360843148860, 0.999497946276371450, 0.999499529210849280, +0.999501109646578230, 0.999502687583554320, 0.999504263021773750, 0.999505835961232550, 0.999507406401926700, 0.999508974343852440, 0.999510539787005660, 0.999512102731382580, +0.999513663176979210, 0.999515221123791650, 0.999516776571816150, 0.999518329521048580, 0.999519879971485280, 0.999521427923122260, 0.999522973375955640, 0.999524516329981630, +0.999526056785196240, 0.999527594741595800, 0.999529130199176330, 0.999530663157934040, 0.999532193617865160, 0.999533721578965690, 0.999535247041231980, 0.999536770004660120, +0.999538290469246360, 0.999539808434986910, 0.999541323901877890, 0.999542836869915520, 0.999544347339096140, 0.999545855309415860, 0.999547360780870920, 0.999548863753457640, +0.999550364227172140, 0.999551862202010750, 0.999553357677969710, 0.999554850655045240, 0.999556341133233660, 0.999557829112531330, 0.999559314592934340, 0.999560797574439050, +0.999562278057041790, 0.999563756040738770, 0.999565231525526450, 0.999566704511401060, 0.999568174998358820, 0.999569642986396170, 0.999571108475509450, 0.999572571465695000, +0.999574031956949050, 0.999575489949268040, 0.999576945442648300, 0.999578398437086180, 0.999579848932578120, 0.999581296929120340, 0.999582742426709410, 0.999584185425341550, +0.999585625925013320, 0.999587063925720940, 0.999588499427460970, 0.999589932430229760, 0.999591362934023620, 0.999592790938839130, 0.999594216444672720, 0.999595639451520630, +0.999597059959379530, 0.999598477968245860, 0.999599893478115840, 0.999601306488986150, 0.999602717000853240, 0.999604125013713540, 0.999605530527563510, 0.999606933542399600, +0.999608334058218360, 0.999609732075016360, 0.999611127592789920, 0.999612520611535830, 0.999613911131250310, 0.999615299151930040, 0.999616684673571450, 0.999618067696171230, +0.999619448219725930, 0.999620826244231870, 0.999622201769685750, 0.999623574796084210, 0.999624945323423720, 0.999626313351700820, 0.999627678880912090, 0.999629041911054280, +0.999630402442123760, 0.999631760474117280, 0.999633116007031420, 0.999634469040862840, 0.999635819575607990, 0.999637167611263530, 0.999638513147826260, 0.999639856185292610, +0.999641196723659480, 0.999642534762923200, 0.999643870303080660, 0.999645203344128430, 0.999646533886063170, 0.999647861928881660, 0.999649187472580360, 0.999650510517156250, +0.999651831062605690, 0.999653149108925660, 0.999654464656112740, 0.999655777704163690, 0.999657088253075200, 0.999658396302843920, 0.999659701853466750, 0.999661004904940250, +0.999662305457261200, 0.999663603510426490, 0.999664899064432680, 0.999666192119276650, 0.999667482674955200, 0.999668770731464980, 0.999670056288802790, 0.999671339346965500, +0.999672619905949910, 0.999673897965752790, 0.999675173526370920, 0.999676446587800970, 0.999677717150040060, 0.999678985213084850, 0.999680250776932120, 0.999681513841578770, +0.999682774407021580, 0.999684032473257540, 0.999685288040283450, 0.999686541108096070, 0.999687791676692310, 0.999689039746069150, 0.999690285316223390, 0.999691528387151810, +0.999692768958851510, 0.999694007031319280, 0.999695242604552000, 0.999696475678546690, 0.999697706253300120, 0.999698934328809300, 0.999700159905071110, 0.999701382982082550, +0.999702603559840530, 0.999703821638342040, 0.999705037217583970, 0.999706250297563210, 0.999707460878277000, 0.999708668959721990, 0.999709874541895420, 0.999711077624794050, +0.999712278208415130, 0.999713476292755420, 0.999714671877812040, 0.999715864963582000, 0.999717055550062180, 0.999718243637249810, 0.999719429225141900, 0.999720612313735320, +0.999721792903027320, 0.999722970993014770, 0.999724146583694680, 0.999725319675064390, 0.999726490267120680, 0.999727658359860880, 0.999728823953281890, 0.999729987047380810, +0.999731147642154760, 0.999732305737600860, 0.999733461333716100, 0.999734614430497830, 0.999735765027942920, 0.999736913126048620, 0.999738058724812140, 0.999739201824230370, +0.999740342424300650, 0.999741480525020100, 0.999742616126385820, 0.999743749228395040, 0.999744879831044870, 0.999746007934332440, 0.999747133538255060, 0.999748256642809860, +0.999749377247993950, 0.999750495353804670, 0.999751610960239120, 0.999752724067294540, 0.999753834674968140, 0.999754942783257160, 0.999756048392158920, 0.999757151501670440, +0.999758252111789040, 0.999759350222512170, 0.999760445833836830, 0.999761538945760360, 0.999762629558279990, 0.999763717671393160, 0.999764803285096980, 0.999765886399388900, +0.999766967014265930, 0.999768045129725610, 0.999769120745765290, 0.999770193862381970, 0.999771264479573320, 0.999772332597336440, 0.999773398215668800, 0.999774461334567600, +0.999775521954030300, 0.999776580074054120, 0.999777635694636510, 0.999778688815774810, 0.999779739437466450, 0.999780787559708670, 0.999781833182498910, 0.999782876305834620, +0.999783916929713130, 0.999784955054131900, 0.999785990679088240, 0.999787023804579510, 0.999788054430603370, 0.999789082557157040, 0.999790108184237970, 0.999791131311843610, +0.999792151939971510, 0.999793170068619010, 0.999794185697783560, 0.999795198827462590, 0.999796209457653680, 0.999797217588354270, 0.999798223219561800, 0.999799226351273720, +0.999800226983487580, 0.999801225116200950, 0.999802220749411270, 0.999803213883115990, 0.999804204517312670, 0.999805192651998850, 0.999806178287172000, 0.999807161422829770, +0.999808142058969620, 0.999809120195589100, 0.999810095832685760, 0.999811068970257290, 0.999812039608301010, 0.999813007746814700, 0.999813973385795920, 0.999814936525242120, +0.999815897165150960, 0.999816855305520110, 0.999817810946347140, 0.999818764087629600, 0.999819714729365150, 0.999820662871551470, 0.999821608514186110, 0.999822551657266740, +0.999823492300790930, 0.999824430444756440, 0.999825366089160840, 0.999826299234001900, 0.999827229879277190, 0.999828158024984370, 0.999829083671121110, 0.999830006817685190, +0.999830927464674280, 0.999831845612086050, 0.999832761259918160, 0.999833674408168390, 0.999834585056834420, 0.999835493205914030, 0.999836398855404870, 0.999837302005304740, +0.999838202655611300, 0.999839100806322430, 0.999839996457435820, 0.999840889608949120, 0.999841780260860240, 0.999842668413166940, 0.999843554065866890, 0.999844437218958100, +0.999845317872438130, 0.999846196026304870, 0.999847071680556090, 0.999847944835189680, 0.999848815490203320, 0.999849683645595010, 0.999850549301362520, 0.999851412457503530, +0.999852273114016140, 0.999853131270898030, 0.999853986928147090, 0.999854840085761200, 0.999855690743738150, 0.999856538902075930, 0.999857384560772330, 0.999858227719825240, +0.999859068379232660, 0.999859906538992370, 0.999860742199102260, 0.999861575359560330, 0.999862406020364470, 0.999863234181512680, 0.999864059843002640, 0.999864883004832560, +0.999865703667000340, 0.999866521829503750, 0.999867337492340910, 0.999868150655509600, 0.999868961319008040, 0.999869769482834010, 0.999870575146985630, 0.999871378311460780, +0.999872178976257460, 0.999872977141373800, 0.999873772806807560, 0.999874565972556970, 0.999875356638619930, 0.999876144804994540, 0.999876930471678690, 0.999877713638670620, +0.999878494305968200, 0.999879272473569560, 0.999880048141472800, 0.999880821309675820, 0.999881591978176830, 0.999882360146973960, 0.999883125816065090, 0.999883888985448440, +0.999884649655122030, 0.999885407825083950, 0.999886163495332440, 0.999886916665865490, 0.999887667336681220, 0.999888415507777850, 0.999889161179153390, 0.999889904350806050, +0.999890645022733950, 0.999891383194935200, 0.999892118867408030, 0.999892852040150550, 0.999893582713160980, 0.999894310886437430, 0.999895036559978020, 0.999895759733781090, +0.999896480407844850, 0.999897198582167300, 0.999897914256746790, 0.999898627431581420, 0.999899338106669530, 0.999900046282009350, 0.999900751957598980, 0.999901455133436760, +0.999902155809520910, 0.999902853985849660, 0.999903549662421340, 0.999904242839234070, 0.999904933516286180, 0.999905621693576000, 0.999906307371101750, 0.999906990548861780, +0.999907671226854310, 0.999908349405077670, 0.999909025083530080, 0.999909698262209990, 0.999910368941115620, 0.999911037120245430, 0.999911702799597510, 0.999912365979170440, +0.999913026658962420, 0.999913684838971810, 0.999914340519197030, 0.999914993699636320, 0.999915644380288130, 0.999916292561150890, 0.999916938242222940, 0.999917581423502620, +0.999918222104988370, 0.999918860286678530, 0.999919495968571550, 0.999920129150665750, 0.999920759832959800, 0.999921388015451830, 0.999922013698140380, 0.999922636881023900, +0.999923257564100940, 0.999923875747369740, 0.999924491430828840, 0.999925104614476700, 0.999925715298311870, 0.999926323482332680, 0.999926929166537800, 0.999927532350925460, +0.999928133035494330, 0.999928731220242950, 0.999929326905169670, 0.999929920090273040, 0.999930510775551620, 0.999931098961003960, 0.999931684646628630, 0.999932267832423950, +0.999932848518388710, 0.999933426704521230, 0.999934002390820310, 0.999934575577284270, 0.999935146263911890, 0.999935714450701620, 0.999936280137652010, 0.999936843324761740, +0.999937404012029350, 0.999937962199453520, 0.999938517887032700, 0.999939071074765650, 0.999939621762650830, 0.999940169950687020, 0.999940715638872770, 0.999941258827206750, +0.999941799515687510, 0.999942337704313840, 0.999942873393084410, 0.999943406581997650, 0.999943937271052460, 0.999944465460247400, 0.999944991149581130, 0.999945514339052430, +0.999946035028659970, 0.999946553218402310, 0.999947068908278450, 0.999947582098286820, 0.999948092788426220, 0.999948600978695420, 0.999949106669093090, 0.999949609859618000, +0.999950110550268830, 0.999950608741044470, 0.999951104431943570, 0.999951597622964930, 0.999952088314107200, 0.999952576505369390, 0.999953062196750060, 0.999953545388248100, +0.999954026079862280, 0.999954504271591380, 0.999954979963434190, 0.999955453155389580, 0.999955923847456350, 0.999956392039633270, 0.999956857731919220, 0.999957320924313000, +0.999957781616813590, 0.999958239809419670, 0.999958695502130120, 0.999959148694943840, 0.999959599387859720, 0.999960047580876530, 0.999960493273993280, 0.999960936467208740, +0.999961377160521910, 0.999961815353931690, 0.999962251047436860, 0.999962684241036400, 0.999963114934729220, 0.999963543128514320, 0.999963968822390580, 0.999964392016356780, +0.999964812710412150, 0.999965230904555470, 0.999965646598785620, 0.999966059793101710, 0.999966470487502650, 0.999966878681987410, 0.999967284376554910, 0.999967687571204240, +0.999968088265934420, 0.999968486460744320, 0.999968882155633070, 0.999969275350599540, 0.999969666045642860, 0.999970054240762020, 0.999970439935956020, 0.999970823131223870, +0.999971203826564680, 0.999971582021977560, 0.999971957717461500, 0.999972330913015410, 0.999972701608638600, 0.999973069804329980, 0.999973435500088770, 0.999973798695913850, +0.999974159391804560, 0.999974517587759790, 0.999974873283778760, 0.999975226479860590, 0.999975577176004270, 0.999975925372209030, 0.999976271068473980, 0.999976614264798220, +0.999976954961181000, 0.999977293157621410, 0.999977628854118450, 0.999977962050671580, 0.999978292747279670, 0.999978620943942080, 0.999978946640658010, 0.999979269837426470, +0.999979590534246790, 0.999979908731118080, 0.999980224428039690, 0.999980537625010710, 0.999980848322030380, 0.999981156519097910, 0.999981462216212650, 0.999981765413373580, +0.999982066110580270, 0.999982364307831610, 0.999982660005127140, 0.999982953202466000, 0.999983243899847500, 0.999983532097270870, 0.999983817794735440, 0.999984100992240440, +0.999984381689785210, 0.999984659887369070, 0.999984935584991130, 0.999985208782650960, 0.999985479480347770, 0.999985747678080910, 0.999986013375849580, 0.999986276573653240, +0.999986537271491230, 0.999986795469362980, 0.999987051167267600, 0.999987304365204670, 0.999987555063173380, 0.999987803261173310, 0.999988048959203680, 0.999988292157263920, +0.999988532855353500, 0.999988771053471730, 0.999989006751617950, 0.999989239949791720, 0.999989470647992370, 0.999989698846219350, 0.999989924544472110, 0.999990147742750080, +0.999990368441052600, 0.999990586639379230, 0.999990802337729410, 0.999991015536102590, 0.999991226234498210, 0.999991434432915720, 0.999991640131354780, 0.999991843329814610, +0.999992044028294890, 0.999992242226795060, 0.999992437925314560, 0.999992631123853060, 0.999992821822409890, 0.999993010020984730, 0.999993195719577120, 0.999993378918186400, +0.999993559616812240, 0.999993737815454200, 0.999993913514111820, 0.999994086712784670, 0.999994257411472300, 0.999994425610174260, 0.999994591308890230, 0.999994754507619650, +0.999994915206362190, 0.999995073405117510, 0.999995229103885050, 0.999995382302664600, 0.999995533001455610, 0.999995681200257840, 0.999995826899070850, 0.999995970097894320, +0.999996110796727900, 0.999996248995571160, 0.999996384694423760, 0.999996517893285470, 0.999996648592155870, 0.999996776791034600, 0.999996902489921460, 0.999997025688815990, +0.999997146387717970, 0.999997264586627080, 0.999997380285543080, 0.999997493484465540, 0.999997604183394340, 0.999997712382329150, 0.999997818081269640, 0.999997921280215580, +0.999998021979166760, 0.999998120178122840, 0.999998215877083600, 0.999998309076048920, 0.999998399775018370, 0.999998487973991820, 0.999998573672969180, 0.999998656871950000, +0.999998737570934160, 0.999998815769921560, 0.999998891468911850, 0.999998964667904940, 0.999999035366900600, 0.999999103565898610, 0.999999169264898960, 0.999999232463901320, +0.999999293162905700, 0.999999351361911760, 0.999999407060919500, 0.999999460259928700, 0.999999510958939240, 0.999999559157951020, 0.999999604856963820, 0.999999648055977740, +0.999999688754992460, 0.999999726954007960, 0.999999762653024150, 0.999999795852040910, 0.999999826551058240, 0.999999854750076020, 0.999999880449094050, 0.999999903648112530, +0.999999924347131140, 0.999999942546149990, 0.999999958245168960, 0.999999971444187950, 0.999999982143207180, 0.999999990342226310, 0.999999996041245560, 0.999999999240264840, +0.999999999939284010, 0.999999998138303310, 0.999999993837322520, 0.999999987036341740, 0.999999977735361090, 0.999999965934380450, 0.999999951633399830, 0.999999934832419330, +0.999999915531439080, 0.999999893730459060, 0.999999869429479270, 0.999999842628499720, 0.999999813327520640, 0.999999781526542010, 0.999999747225563950, 0.999999710424586570, +0.999999671123609770, 0.999999629322633980, 0.999999585021658980, 0.999999538220684990, 0.999999488919712240, 0.999999437118740730, 0.999999382817770680, 0.999999326016802190, +0.999999266715835280, 0.999999204914870270, 0.999999140613907270, 0.999999073812946390, 0.999999004511987750, 0.999998932711031690, 0.999998858410078300, 0.999998781609127700, +0.999998702308180220, 0.999998620507235980, 0.999998536206295090, 0.999998449405357980, 0.999998360104424670, 0.999998268303495470, 0.999998174002570630, 0.999998077201650350, +0.999997977900734860, 0.999997876099824490, 0.999997771798919350, 0.999997664998019790, 0.999997555697126120, 0.999997443896238570, 0.999997329595357360, 0.999997212794482840, +0.999997093493615210, 0.999996971692754920, 0.999996847391902310, 0.999996720591057380, 0.999996591290220780, 0.999996459489392640, 0.999996325188573400, 0.999996188387763390, +0.999996049086962820, 0.999995907286172160, 0.999995762985391720, 0.999995616184621850, 0.999995466883862980, 0.999995315083115450, 0.999995160782379600, 0.999995003981655860, +0.999994844680944570, 0.999994682880246290, 0.999994518579561230, 0.999994351778889850, 0.999994182478232570, 0.999994010677589860, 0.999993836376962150, 0.999993659576349890, +0.999993480275753410, 0.999993298475173260, 0.999993114174609790, 0.999992927374063640, 0.999992738073535170, 0.999992546273024810, 0.999992351972533110, 0.999992155172060530, +0.999991955871607500, 0.999991754071174580, 0.999991549770762320, 0.999991342970371180, 0.999991133670001700, 0.999990921869654440, 0.999990707569329840, 0.999990490769028350, +0.999990271468750750, 0.999990049668497470, 0.999989825368269080, 0.999989598568066020, 0.999989369267889060, 0.999989137467738650, 0.999988903167615460, 0.999988666367519930, +0.999988427067452720, 0.999988185267414510, 0.999987940967405840, 0.999987694167427280, 0.999987444867479480, 0.999987193067563120, 0.999986938767678750, 0.999986681967826920, +0.999986422668008520, 0.999986160868224010, 0.999985896568474140, 0.999985629768759490, 0.999985360469080820, 0.999985088669438690, 0.999984814369833890, 0.999984537570267060, +0.999984258270738780, 0.999983976471249920, 0.999983692171801160, 0.999983405372393160, 0.999983116073026590, 0.999982824273702330, 0.999982529974420940, 0.999982233175183200, +0.999981933875989880, 0.999981632076841760, 0.999981327777739630, 0.999981020978684020, 0.999980711679675950, 0.999980399880716190, 0.999980085581805290, 0.999979768782944260, +0.999979449484133750, 0.999979127685374560, 0.999978803386667670, 0.999978476588013750, 0.999978147289413590, 0.999977815490868170, 0.999977481192378060, 0.999977144393944360, +0.999976805095567740, 0.999976463297249100, 0.999976118998989420, 0.999975772200789260, 0.999975422902649850, 0.999975071104571730, 0.999974716806556030, 0.999974360008603510, +0.999974000710715070, 0.999973638912891700, 0.999973274615134190, 0.999972907817443410, 0.999972538519820490, 0.999972166722266190, 0.999971792424781400, 0.999971415627367240, +0.999971036330024490, 0.999970654532754130, 0.999970270235557180, 0.999969883438434510, 0.999969494141387140, 0.999969102344416050, 0.999968708047522140, 0.999968311250706510, +0.999967911953970170, 0.999967510157314000, 0.999967105860739000, 0.999966699064246290, 0.999966289767836860, 0.999965877971511600, 0.999965463675271730, 0.999965046879118250, +0.999964627583052050, 0.999964205787074350, 0.999963781491186030, 0.999963354695388440, 0.999962925399682350, 0.999962493604068970, 0.999962059308549310, 0.999961622513124480, +0.999961183217795700, 0.999960741422563860, 0.999960297127430290, 0.999959850332395870, 0.999959401037461840, 0.999958949242629290, 0.999958494947899460, 0.999958038153273330, +0.999957578858752140, 0.999957117064336990, 0.999956652770028990, 0.999956185975829470, 0.999955716681739330, 0.999955244887760000, 0.999954770593892590, 0.999954293800138230, +0.999953814506498120, 0.999953332712973490, 0.999952848419565440, 0.999952361626275320, 0.999951872333104340, 0.999951380540053610, 0.999950886247124470, 0.999950389454318130, +0.999949890161635820, 0.999949388369078760, 0.999948884076648280, 0.999948377284345600, 0.999947867992171830, 0.999947356200128530, 0.999946841908216810, 0.999946325116438000, +0.999945805824793310, 0.999945284033284200, 0.999944759741911770, 0.999944232950677580, 0.999943703659582630, 0.999943171868628580, 0.999942637577816540, 0.999942100787147850, +0.999941561496624050, 0.999941019706246270, 0.999940475416015940, 0.999939928625934390, 0.999939379336002960, 0.999938827546223210, 0.999938273256596340, 0.999937716467123820, +0.999937157177806960, 0.999936595388647210, 0.999936031099646020, 0.999935464310804710, 0.999934895022124850, 0.999934323233607650, 0.999933748945254660, 0.999933172157067230, +0.999932592869046900, 0.999932011081195120, 0.999931426793513320, 0.999930840006002960, 0.999930250718665480, 0.999929658931502430, 0.999929064644515140, 0.999928467857705280, +0.999927868571074190, 0.999927266784623400, 0.999926662498354490, 0.999926055712268890, 0.999925446426368270, 0.999924834640653960, 0.999924220355127510, 0.999923603569790490, +0.999922984284644540, 0.999922362499691130, 0.999921738214931800, 0.999921111430368100, 0.999920482146001710, 0.999919850361833950, 0.999919216077866710, 0.999918579294101440, +0.999917940010539570, 0.999917298227183000, 0.999916653944033060, 0.999916007161091640, 0.999915357878360060, 0.999914706095840210, 0.999914051813533540, 0.999913395031441720, +0.999912735749566410, 0.999912073967909270, 0.999911409686471960, 0.999910742905256060, 0.999910073624263430, 0.999909401843495530, 0.999908727562954120, 0.999908050782640890, +0.999907371502557600, 0.999906689722705800, 0.999906005443087280, 0.999905318663703800, 0.999904629384557040, 0.999903937605648660, 0.999903243326980440, 0.999902546548554150, +0.999901847270371460, 0.999901145492434140, 0.999900441214743970, 0.999899734437302730, 0.999899025160112090, 0.999898313383173920, 0.999897599106490010, 0.999896882330062020, +0.999896163053891950, 0.999895441277981360, 0.999894717002332230, 0.999893990226946250, 0.999893260951825290, 0.999892529176971250, 0.999891794902385780, 0.999891058128070890, +0.999890318854028350, 0.999889577080260050, 0.999888832806767770, 0.999888086033553390, 0.999887336760618920, 0.999886584987966010, 0.999885830715596560, 0.999885073943512670, +0.999884314671716010, 0.999883552900208580, 0.999882788628992270, 0.999882021858069070, 0.999881252587440650, 0.999880480817109230, 0.999879706547076590, 0.999878929777344600, +0.999878150507915400, 0.999877368738790740, 0.999876584469972740, 0.999875797701463180, 0.999875008433264270, 0.999874216665377680, 0.999873422397805630, 0.999872625630550020, +0.999871826363612830, 0.999871024596996060, 0.999870220330701830, 0.999869413564731910, 0.999868604299088530, 0.999867792533773670, 0.999866978268789230, 0.999866161504137430, +0.999865342239820270, 0.999864520475839620, 0.999863696212197730, 0.999862869448896570, 0.999862040185938270, 0.999861208423324930, 0.999860374161058550, 0.999859537399141130, +0.999858698137575000, 0.999857856376362040, 0.999857012115504480, 0.999856165355004320, 0.999855316094863780, 0.999854464335084960, 0.999853610075669970, 0.999852753316621050, +0.999851894057940170, 0.999851032299629460, 0.999850168041691360, 0.999849301284127740, 0.999848432026940850, 0.999847560270132880, 0.999846686013705970, 0.999845809257662420, +0.999844930002004360, 0.999844048246734010, 0.999843163991853470, 0.999842277237364960, 0.999841387983270820, 0.999840496229573270, 0.999839601976274420, 0.999838705223376590, +0.999837805970882010, 0.999836904218792790, 0.999835999967111480, 0.999835093215840080, 0.999834183964980920, 0.999833272214536330, 0.999832357964508640, 0.999831441214899970, +0.999830521965712760, 0.999829600216949220, 0.999828675968611580, 0.999827749220702390, 0.999826819973223760, 0.999825888226178020, 0.999824953979567720, 0.999824017233394870, +0.999823077987662120, 0.999822136242371600, 0.999821191997525730, 0.999820245253126960, 0.999819296009177520, 0.999818344265679840, 0.999817390022636250, 0.999816433280049210, +0.999815474037921150, 0.999814512296254400, 0.999813548055051290, 0.999812581314314390, 0.999811612074046010, 0.999810640334248600, 0.999809666094924500, 0.999808689356076360, +0.999807710117706420, 0.999806728379817320, 0.999805744142411300, 0.999804757405490910, 0.999803768169058690, 0.999802776433116990, 0.999801782197668350, 0.999800785462715340, +0.999799786228260270, 0.999798784494305810, 0.999797780260854310, 0.999796773527908410, 0.999795764295470570, 0.999794752563543330, 0.999793738332129260, 0.999792721601230780, +0.999791702370850470, 0.999790680640990970, 0.999789656411654740, 0.999788629682844320, 0.999787600454562390, 0.999786568726811380, 0.999785534499594060, 0.999784497772912890, +0.999783458546770420, 0.999782416821169310, 0.999781372596112110, 0.999780325871601590, 0.999779276647640210, 0.999778224924230630, 0.999777170701375510, 0.999776113979077400, +0.999775054757339080, 0.999773993036163100, 0.999772928815552130, 0.999771862095508830, 0.999770792876035870, 0.999769721157136030, 0.999768646938811730, 0.999767570221065880, +0.999766491003901140, 0.999765409287320160, 0.999764325071325620, 0.999763238355920290, 0.999762149141106840, 0.999761057426888140, 0.999759963213266660, 0.999758866500245260, +0.999757767287826840, 0.999756665576013840, 0.999755561364809250, 0.999754454654215750, 0.999753345444236110, 0.999752233734873100, 0.999751119526129610, 0.999750002818008190, +0.999748883610511840, 0.999747761903643230, 0.999746637697405240, 0.999745510991800650, 0.999744381786832230, 0.999743250082502980, 0.999742115878815450, 0.999740979175772760, +0.999739839973377560, 0.999738698271632750, 0.999737554070541210, 0.999736407370105830, 0.999735258170329380, 0.999734106471214860, 0.999732952272764930, 0.999731795574982820, +0.999730636377871070, 0.999729474681432690, 0.999728310485670790, 0.999727143790588020, 0.999725974596187390, 0.999724802902471790, 0.999723628709444310, 0.999722452017107630, +0.999721272825464860, 0.999720091134518870, 0.999718906944272680, 0.999717720254729270, 0.999716531065891530, 0.999715339377762470, 0.999714145190345070, 0.999712948503642230, +0.999711749317657160, 0.999710547632392640, 0.999709343447851780, 0.999708136764037470, 0.999706927580952920, 0.999705715898601020, 0.999704501716984770, 0.999703285036107280, +0.999702065855971660, 0.999700844176580890, 0.999699619997937880, 0.999698393320045950, 0.999697164142907990, 0.999695932466527100, 0.999694698290906400, 0.999693461616048880, +0.999692222441957770, 0.999690980768636160, 0.999689736596087060, 0.999688489924313580, 0.999687240753318940, 0.999685989083106130, 0.999684734913678370, 0.999683478245038780, +0.999682219077190460, 0.999680957410136630, 0.999679693243880400, 0.999678426578424980, 0.999677157413773390, 0.999675885749929050, 0.999674611586894860, 0.999673334924674250, +0.999672055763270230, 0.999670774102686120, 0.999669489942925040, 0.999668203283990200, 0.999666914125884930, 0.999665622468612350, 0.999664328312175670, 0.999663031656578220, +0.999661732501823220, 0.999660430847913780, 0.999659126694853350, 0.999657820042645140, 0.999656510891292260, 0.999655199240798150, 0.999653885091166040, 0.999652568442399250, +0.999651249294501110, 0.999649927647474730, 0.999648603501323560, 0.999647276856050930, 0.999645947711660040, 0.999644616068154250, 0.999643281925536980, 0.999641945283811560, +0.999640606142981230, 0.999639264503049300, 0.999637920364019330, 0.999636573725894540, 0.999635224588678260, 0.999633872952373940, 0.999632518816985010, 0.999631162182514690, +0.999629803048966540, 0.999628441416343770, 0.999627077284649950, 0.999625710653888500, 0.999624341524062650, 0.999622969895176070, 0.999621595767232090, 0.999620219140234020, +0.999618840014185440, 0.999617458389089770, 0.999616074264950360, 0.999614687641770860, 0.999613298519554610, 0.999611906898305150, 0.999610512778025930, 0.999609116158720390, +0.999607717040392090, 0.999606315423044460, 0.999604911306681050, 0.999603504691305430, 0.999602095576920920, 0.999600683963531300, 0.999599269851139890, 0.999597853239750370, +0.999596434129366160, 0.999595012519990830, 0.999593588411628040, 0.999592161804281230, 0.999590732697954070, 0.999589301092650100, 0.999587866988372880, 0.999586430385125850, +0.999584991282912890, 0.999583549681737460, 0.999582105581602990, 0.999580658982513360, 0.999579209884472130, 0.999577758287482850, 0.999576304191549190, 0.999574847596674700, +0.999573388502863150, 0.999571926910118090, 0.999570462818443200, 0.999568996227842230, 0.999567527138318760, 0.999566055549876430, 0.999564581462518920, 0.999563104876250110, +0.999561625791073440, 0.999560144206992680, 0.999558660124011510, 0.999557173542133800, 0.999555684461363110, 0.999554192881703220, 0.999552698803157890, 0.999551202225730790, +0.999549703149425590, 0.999548201574246290, 0.999546697500196310, 0.999545190927279780, 0.999543681855500130, 0.999542170284861360, 0.999540656215367140, 0.999539139647021240, +0.999537620579827530, 0.999536099013789700, 0.999534574948911740, 0.999533048385197300, 0.999531519322650160, 0.999529987761274330, 0.999528453701073460, 0.999526917142051440, +0.999525378084212270, 0.999523836527559490, 0.999522292472097230, 0.999520745917829130, 0.999519196864759210, 0.999517645312891330, 0.999516091262229400, 0.999514534712777180, +0.999512975664538560, 0.999511414117517540, 0.999509850071718000, 0.999508283527143830, 0.999506714483799020, 0.999505142941687350, 0.999503568900812820, 0.999501992361179430, +0.999500413322790940, 0.999498831785651460, 0.999497247749765010, 0.999495661215135330, 0.999494072181766560, 0.999492480649662560, 0.999490886618827350, 0.999489290089264900, +0.999487691060979340, 0.999486089533974440, 0.999484485508254420, 0.999482878983823150, 0.999481269960684650, 0.999479658438843010, 0.999478044418302130, 0.999476427899066210, +0.999474808881139270, 0.999473187364525280, 0.999471563349228260, 0.999469936835252430, 0.999468307822601650, 0.999466676311280170, 0.999465042301291960, 0.999463405792641150, +0.999461766785331940, 0.999460125279368230, 0.999458481274754120, 0.999456834771493940, 0.999455185769591580, 0.999453534269051370, 0.999451880269877190, 0.999450223772073380, +0.999448564775644030, 0.999446903280593270, 0.999445239286925190, 0.999443572794644020, 0.999441903803753970, 0.999440232314259160, 0.999438558326163680, 0.999436881839471880, +0.999435202854187850, 0.999433521370315820, 0.999431837387860010, 0.999430150906824630, 0.999428461927213800, 0.999426770449031830, 0.999425076472282960, 0.999423379996971390, +0.999421681023101360, 0.999419979550677180, 0.999418275579703090, 0.999416569110183170, 0.999414860142121890, 0.999413148675523440, 0.999411434710392180, 0.999409718246732300, +0.999407999284548150, 0.999406277823843950, 0.999404553864624120, 0.999402827406892790, 0.999401098450654500, 0.999399366995913470, 0.999397633042673930, 0.999395896590940410, +0.999394157640717040, 0.999392416192008360, 0.999390672244818590, 0.999388925799152170, 0.999387176855013440, 0.999385425412406820, 0.999383671471336550, 0.999381915031807180, +0.999380156093822910, 0.999378394657388310, 0.999376630722507820, 0.999374864289185650, 0.999373095357426240, 0.999371323927234270, 0.999369549998613830, 0.999367773571569580, +0.999365994646105980, 0.999364213222227350, 0.999362429299938130, 0.999360642879242870, 0.999358853960146010, 0.999357062542652000, 0.999355268626765270, 0.999353472212490490, +0.999351673299831990, 0.999349871888794320, 0.999348067979381920, 0.999346261571599340, 0.999344452665451130, 0.999342641260941860, 0.999340827358075940, 0.999339010956857950, +0.999337192057292430, 0.999335370659383940, 0.999333546763137020, 0.999331720368556110, 0.999329891475646100, 0.999328060084411220, 0.999326226194856230, 0.999324389806985680, +0.999322550920804240, 0.999320709536316350, 0.999318865653526680, 0.999317019272439770, 0.999315170393060390, 0.999313319015393110, 0.999311465139442580, 0.999309608765213350, +0.999307749892709980, 0.999305888521937360, 0.999304024652899910, 0.999302158285602540, 0.999300289420049670, 0.999298418056246200, 0.999296544194196560, 0.999294667833905640, +0.999292788975377990, 0.999290907618618380, 0.999289023763631490, 0.999287137410422080, 0.999285248558994810, 0.999283357209354350, 0.999281463361505580, 0.999279567015453170, +0.999277668171201780, 0.999275766828756300, 0.999273862988121380, 0.999271956649301680, 0.999270047812302220, 0.999268136477127640, 0.999266222643782620, 0.999264306312272140, +0.999262387482600880, 0.999260466154773600, 0.999258542328795190, 0.999256616004670420, 0.999254687182404180, 0.999252755862001130, 0.999250822043466270, 0.999248885726804260, +0.999246946912020100, 0.999245005599118550, 0.999243061788104510, 0.999241115478982760, 0.999239166671758270, 0.999237215366435840, 0.999235261563020450, 0.999233305261516770, +0.999231346461929900, 0.999229385164264630, 0.999227421368525940, 0.999225455074718720, 0.999223486282847850, 0.999221514992918220, 0.999219541204934840, 0.999217564918902570, +0.999215586134826420, 0.999213604852711270, 0.999211621072562230, 0.999209634794383960, 0.999207646018181790, 0.999205654743960390, 0.999203660971724860, 0.999201664701480200, +0.999199665933231280, 0.999197664666983340, 0.999195660902741150, 0.999193654640509910, 0.999191645880294410, 0.999189634622099860, 0.999187620865931270, 0.999185604611793510, +0.999183585859691800, 0.999181564609631150, 0.999179540861616530, 0.999177514615653070, 0.999175485871745870, 0.999173454629899930, 0.999171420890120340, 0.999169384652412230, +0.999167345916780690, 0.999165304683230730, 0.999163260951767440, 0.999161214722396160, 0.999159165995121780, 0.999157114769949390, 0.999155061046884340, 0.999153004825931500, +0.999150946107096320, 0.999148884890383670, 0.999146821175798780, 0.999144754963346980, 0.999142686253033150, 0.999140615044862620, 0.999138541338840610, 0.999136465134972230, +0.999134386433262690, 0.999132305233717210, 0.999130221536340900, 0.999128135341139090, 0.999126046648116880, 0.999123955457279610, 0.999121861768632380, 0.999119765582180630, +0.999117666897929360, 0.999115565715884000, 0.999113462036049670, 0.999111355858431690, 0.999109247183035290, 0.999107136009865780, 0.999105022338928510, 0.999102906170228680, +0.999100787503771510, 0.999098666339562350, 0.999096542677606610, 0.999094416517909530, 0.999092287860476320, 0.999090156705312430, 0.999088023052423170, 0.999085886901813770, +0.999083748253489780, 0.999081607107456300, 0.999079463463718900, 0.999077317322282780, 0.999075168683153380, 0.999073017546336040, 0.999070863911836190, 0.999068707779659170, +0.999066549149810410, 0.999064388022295250, 0.999062224397119110, 0.999060058274287450, 0.999057889653805600, 0.999055718535679090, 0.999053544919913160, 0.999051368806513460, +0.999049190195485330, 0.999047009086834300, 0.999044825480565610, 0.999042639376684920, 0.999040450775197650, 0.999038259676109150, 0.999036066079425080, 0.999033869985150870, +0.999031671393291960, 0.999029470303853920, 0.999027266716842170, 0.999025060632262150, 0.999022852050119650, 0.999020640970419870, 0.999018427393168600, 0.999016211318371260, +0.999013992746033310, 0.999011771676160510, 0.999009548108758190, 0.999007322043831910, 0.999005093481387440, 0.999002862421430220, 0.999000628863965900, 0.998998392808999940, +0.998996154256537980, 0.998993913206585700, 0.998991669659148540, 0.998989423614232260, 0.998987175071842430, 0.998984924031984690, 0.998982670494664600, 0.998980414459887830, +0.998978155927660040, 0.998975894897986880, 0.998973631370873920, 0.998971365346326910, 0.998969096824351530, 0.998966825804953440, 0.998964552288138190, 0.998962276273911650, +0.998959997762279280, 0.998957716753247070, 0.998955433246820460, 0.998953147243005320, 0.998950858741807330, 0.998948567743232150, 0.998946274247285550, 0.998943978253973300, +0.998941679763301060, 0.998939378775274610, 0.998937075289899830, 0.998934769307182280, 0.998932460827127830, 0.998930149849742150, 0.998927836375031130, 0.998925520403000640, +0.998923201933656250, 0.998920880967003820, 0.998918557503049250, 0.998916231541798210, 0.998913903083256670, 0.998911572127430310, 0.998909238674325130, 0.998906902723946780, +0.998904564276301140, 0.998902223331394110, 0.998899879889231570, 0.998897533949819280, 0.998895185513163140, 0.998892834579269140, 0.998890481148142940, 0.998888125219790650, +0.998885766794217920, 0.998883405871430870, 0.998881042451435270, 0.998878676534237010, 0.998876308119842180, 0.998873937208256460, 0.998871563799486050, 0.998869187893536630, +0.998866809490414180, 0.998864428590124810, 0.998862045192674300, 0.998859659298068750, 0.998857270906313930, 0.998854880017416070, 0.998852486631380930, 0.998850090748214630, +0.998847692367923030, 0.998845291490512270, 0.998842888115988200, 0.998840482244356950, 0.998838073875624510, 0.998835663009796980, 0.998833249646880140, 0.998830833786880200, +0.998828415429803270, 0.998825994575655240, 0.998823571224442210, 0.998821145376170280, 0.998818717030845460, 0.998816286188473850, 0.998813852849061550, 0.998811417012614560, +0.998808978679139090, 0.998806537848641150, 0.998804094521126840, 0.998801648696602370, 0.998799200375073750, 0.998796749556547180, 0.998794296241028560, 0.998791840428524310, +0.998789382119040450, 0.998786921312583180, 0.998784458009158600, 0.998781992208772840, 0.998779523911432100, 0.998777053117142600, 0.998774579825910340, 0.998772104037741750, +0.998769625752642940, 0.998767144970619910, 0.998764661691679210, 0.998762175915826720, 0.998759687643068770, 0.998757196873411690, 0.998754703606861580, 0.998752207843424670, +0.998749709583107270, 0.998747208825915610, 0.998744705571856020, 0.998742199820934600, 0.998739691573157560, 0.998737180828531360, 0.998734667587062310, 0.998732151848756520, +0.998729633613620330, 0.998727112881660050, 0.998724589652882020, 0.998722063927292570, 0.998719535704897910, 0.998717004985704370, 0.998714471769718280, 0.998711936056946080, +0.998709397847394100, 0.998706857141068550, 0.998704313937975870, 0.998701768238122400, 0.998699220041514570, 0.998696669348158590, 0.998694116158061030, 0.998691560471228090, +0.998689002287666330, 0.998686441607382070, 0.998683878430381640, 0.998681312756671490, 0.998678744586258160, 0.998676173919147870, 0.998673600755347170, 0.998671025094862500, +0.998668446937700290, 0.998665866283867000, 0.998663283133368940, 0.998660697486212780, 0.998658109342404730, 0.998655518701951460, 0.998652925564859410, 0.998650329931135120, +0.998647731800784920, 0.998645131173815480, 0.998642528050233120, 0.998639922430044400, 0.998637314313255970, 0.998634703699874170, 0.998632090589905760, 0.998629474983356970, +0.998626856880234560, 0.998624236280545090, 0.998621613184294880, 0.998618987591490700, 0.998616359502139010, 0.998613728916246560, 0.998611095833819680, 0.998608460254865050, +0.998605822179389310, 0.998603181607399030, 0.998600538538900740, 0.998597892973901110, 0.998595244912406700, 0.998592594354424270, 0.998589941299960370, 0.998587285749021560, +0.998584627701614600, 0.998581967157745940, 0.998579304117422460, 0.998576638580650710, 0.998573970547437350, 0.998571300017789150, 0.998568626991712560, 0.998565951469214450, +0.998563273450301490, 0.998560592934980340, 0.998557909923257770, 0.998555224415140330, 0.998552536410634790, 0.998549845909748050, 0.998547152912486640, 0.998544457418857330, +0.998541759428866920, 0.998539058942522040, 0.998536355959829480, 0.998533650480796120, 0.998530942505428620, 0.998528232033733750, 0.998525519065718290, 0.998522803601389120, +0.998520085640752900, 0.998517365183816400, 0.998514642230586500, 0.998511916781069990, 0.998509188835273730, 0.998506458393204510, 0.998503725454869100, 0.998500990020274480, +0.998498252089427220, 0.998495511662334410, 0.998492768739002830, 0.998490023319439370, 0.998487275403650790, 0.998484524991643970, 0.998481772083425920, 0.998479016679003520, +0.998476258778383420, 0.998473498381572730, 0.998470735488578340, 0.998467970099407020, 0.998465202214065870, 0.998462431832561670, 0.998459658954901410, 0.998456883581091970, +0.998454105711140350, 0.998451325345053430, 0.998448542482838210, 0.998445757124501680, 0.998442969270050720, 0.998440178919492330, 0.998437386072833500, 0.998434590730081230, +0.998431792891242510, 0.998428992556324220, 0.998426189725333480, 0.998423384398277270, 0.998420576575162700, 0.998417766255996540, 0.998414953440786010, 0.998412138129538110, +0.998409320322259820, 0.998406500018958360, 0.998403677219640520, 0.998400851924313600, 0.998398024132984400, 0.998395193845660330, 0.998392361062348080, 0.998389525783055070, +0.998386688007788180, 0.998383847736554530, 0.998381004969361330, 0.998378159706215680, 0.998375311947124480, 0.998372461692095150, 0.998369608941134470, 0.998366753694249990, +0.998363895951448480, 0.998361035712737270, 0.998358172978123460, 0.998355307747614270, 0.998352440021216810, 0.998349569798938190, 0.998346697080785610, 0.998343821866766400, +0.998340944156887570, 0.998338063951156430, 0.998335181249580090, 0.998332296052165780, 0.998329408358920810, 0.998326518169852290, 0.998323625484967340, 0.998320730304273480, +0.998317832627777730, 0.998314932455487410, 0.998312029787409850, 0.998309124623552150, 0.998306216963921630, 0.998303306808525530, 0.998300394157371150, 0.998297479010465840, +0.998294561367816800, 0.998291641229431480, 0.998288718595316870, 0.998285793465480630, 0.998282865839929870, 0.998279935718671800, 0.998277003101713970, 0.998274067989063710, +0.998271130380728230, 0.998268190276714980, 0.998265247677031180, 0.998262302581684250, 0.998259354990681640, 0.998256404904030560, 0.998253452321738450, 0.998250497243812870, +0.998247539670260920, 0.998244579601090140, 0.998241617036307870, 0.998238651975921650, 0.998235684419938710, 0.998232714368366580, 0.998229741821212710, 0.998226766778484540, +0.998223789240189400, 0.998220809206334710, 0.998217826676928040, 0.998214841651976830, 0.998211854131488500, 0.998208864115470500, 0.998205871603930370, 0.998202876596875680, +0.998199879094313620, 0.998196879096251990, 0.998193876602698090, 0.998190871613659490, 0.998187864129143730, 0.998184854149158360, 0.998181841673710820, 0.998178826702808660, +0.998175809236459430, 0.998172789274670680, 0.998169766817449950, 0.998166741864804810, 0.998163714416742790, 0.998160684473271550, 0.998157652034398550, 0.998154617100131540, +0.998151579670477850, 0.998148539745445260, 0.998145497325041320, 0.998142452409273570, 0.998139404998149790, 0.998136355091677420, 0.998133302689864220, 0.998130247792717750, +0.998127190400245670, 0.998124130512455630, 0.998121068129355080, 0.998118003250952120, 0.998114935877253970, 0.998111866008268620, 0.998108793644003510, 0.998105718784466520, +0.998102641429665090, 0.998099561579607110, 0.998096479234300230, 0.998093394393752220, 0.998090307057970640, 0.998087217226963360, 0.998084124900737950, 0.998081030079302380, +0.998077932762664100, 0.998074832950830990, 0.998071730643810830, 0.998068625841611380, 0.998065518544240300, 0.998062408751705490, 0.998059296464014590, 0.998056181681175490, +0.998053064403195970, 0.998049944630083670, 0.998046822361846610, 0.998043697598492430, 0.998040570340029130, 0.998037440586464260, 0.998034308337805930, 0.998031173594061680, +0.998028036355239620, 0.998024896621347410, 0.998021754392392930, 0.998018609668384070, 0.998015462449328820, 0.998012312735234830, 0.998009160526110000, 0.998006005821962310, +0.998002848622799530, 0.997999688928629780, 0.997996526739460710, 0.997993362055300310, 0.997990194876156590, 0.997987025202037300, 0.997983853032950560, 0.997980678368904140, +0.997977501209905920, 0.997974321555963990, 0.997971139407086370, 0.997967954763280820, 0.997964767624555330, 0.997961577990918000, 0.997958385862376730, 0.997955191238939500, +0.997951994120614190, 0.997948794507409030, 0.997945592399331780, 0.997942387796390550, 0.997939180698593440, 0.997935971105948340, 0.997932759018463340, 0.997929544436146340, +0.997926327359005550, 0.997923107787048960, 0.997919885720284560, 0.997916661158720460, 0.997913434102364770, 0.997910204551225370, 0.997906972505310570, 0.997903737964628280, +0.997900500929186700, 0.997897261398993820, 0.997894019374057750, 0.997890774854386710, 0.997887527839988690, 0.997884278330871900, 0.997881026327044340, 0.997877771828514230, +0.997874514835289770, 0.997871255347378970, 0.997867993364790040, 0.997864728887531080, 0.997861461915610310, 0.997858192449035950, 0.997854920487815990, 0.997851646031958860, +0.997848369081472560, 0.997845089636365310, 0.997841807696645430, 0.997838523262320920, 0.997835236333400210, 0.997831946909891410, 0.997828654991802620, 0.997825360579142170, +0.997822063671918500, 0.997818764270139600, 0.997815462373813690, 0.997812157982949310, 0.997808851097554350, 0.997805541717637360, 0.997802229843206430, 0.997798915474270020, +0.997795598610836330, 0.997792279252913580, 0.997788957400510210, 0.997785633053634440, 0.997782306212294470, 0.997778976876498860, 0.997775645046255710, 0.997772310721573460, +0.997768973902460550, 0.997765634588925090, 0.997762292780975610, 0.997758948478620340, 0.997755601681867830, 0.997752252390726070, 0.997748900605203830, 0.997745546325309430, +0.997742189551050980, 0.997738830282437260, 0.997735468519476370, 0.997732104262176730, 0.997728737510546800, 0.997725368264595120, 0.997721996524330020, 0.997718622289759940, +0.997715245560893300, 0.997711866337738560, 0.997708484620304150, 0.997705100408598500, 0.997701713702630060, 0.997698324502407470, 0.997694932807938970, 0.997691538619233100, +0.997688141936298510, 0.997684742759143540, 0.997681341087776620, 0.997677936922206410, 0.997674530262441240, 0.997671121108489880, 0.997667709460360760, 0.997664295318062220, +0.997660878681603020, 0.997657459550991720, 0.997654037926236640, 0.997650613807346430, 0.997647187194329770, 0.997643758087195080, 0.997640326485951130, 0.997636892390606270, +0.997633455801169130, 0.997630016717648390, 0.997626575140052710, 0.997623131068390400, 0.997619684502670360, 0.997616235442901120, 0.997612783889091360, 0.997609329841249610, +0.997605873299384440, 0.997602414263504710, 0.997598952733618760, 0.997595488709735580, 0.997592022191863710, 0.997588553180011720, 0.997585081674188360, 0.997581607674402290, +0.997578131180662190, 0.997574652192976810, 0.997571170711354700, 0.997567686735804650, 0.997564200266335520, 0.997560711302955870, 0.997557219845674360, 0.997553725894499870, +0.997550229449441050, 0.997546730510506570, 0.997543229077705320, 0.997539725151046050, 0.997536218730537440, 0.997532709816188250, 0.997529198408007360, 0.997525684506003430, +0.997522168110185240, 0.997518649220561660, 0.997515127837141470, 0.997511603959933430, 0.997508077588946440, 0.997504548724189260, 0.997501017365670760, 0.997497483513399620, +0.997493947167384820, 0.997490408327635030, 0.997486866994159340, 0.997483323166966420, 0.997479776846065260, 0.997476228031464630, 0.997472676723173410, 0.997469122921200490, +0.997465566625554740, 0.997462007836245170, 0.997458446553280530, 0.997454882776669830, 0.997451316506421830, 0.997447747742545630, 0.997444176485050020, 0.997440602733943970, +0.997437026489236380, 0.997433447750936230, 0.997429866519052410, 0.997426282793594020, 0.997422696574569940, 0.997419107861989060, 0.997415516655860480, 0.997411922956193080, +0.997408326762995730, 0.997404728076277670, 0.997401126896047870, 0.997397523222315230, 0.997393917055088730, 0.997390308394377480, 0.997386697240190360, 0.997383083592536580, +0.997379467451425030, 0.997375848816864920, 0.997372227688865130, 0.997368604067434770, 0.997364977952582830, 0.997361349344318530, 0.997357718242650850, 0.997354084647588790, +0.997350448559141680, 0.997346809977318280, 0.997343168902128040, 0.997339525333579720, 0.997335879271682660, 0.997332230716445940, 0.997328579667878580, 0.997324926125989660, +0.997321270090788640, 0.997317611562284380, 0.997313950540485990, 0.997310287025402810, 0.997306621017043930, 0.997302952515418450, 0.997299281520535600, 0.997295608032404580, +0.997291932051034500, 0.997288253576434580, 0.997284572608614140, 0.997280889147582170, 0.997277203193348010, 0.997273514745920740, 0.997269823805309710, 0.997266130371524230, +0.997262434444573410, 0.997258736024466460, 0.997255035111212720, 0.997251331704821280, 0.997247625805301570, 0.997243917412662830, 0.997240206526914250, 0.997236493148065170, +0.997232777276124920, 0.997229058911102580, 0.997225338053007730, 0.997221614701849560, 0.997217888857637290, 0.997214160520380140, 0.997210429690087770, 0.997206696366769400, +0.997202960550434110, 0.997199222241091590, 0.997195481438750920, 0.997191738143421550, 0.997187992355112800, 0.997184244073834100, 0.997180493299594790, 0.997176740032404200, +0.997172984272271860, 0.997169226019206990, 0.997165465273219140, 0.997161702034317530, 0.997157936302511590, 0.997154168077810990, 0.997150397360224930, 0.997146624149762850, +0.997142848446434190, 0.997139070250248390, 0.997135289561215000, 0.997131506379343340, 0.997127720704642840, 0.997123932537123170, 0.997120141876793540, 0.997116348723663730, +0.997112553077742940, 0.997108754939040720, 0.997104954307566740, 0.997101151183330310, 0.997097345566340890, 0.997093537456608230, 0.997089726854141660, 0.997085913758950840, +0.997082098171045320, 0.997078280090434420, 0.997074459517127810, 0.997070636451135030, 0.997066810892465740, 0.997062982841129490, 0.997059152297135710, 0.997055319260493960, +0.997051483731213990, 0.997047645709305370, 0.997043805194777530, 0.997039962187640240, 0.997036116687903040, 0.997032268695575490, 0.997028418210667340, 0.997024565233188160, +0.997020709763147490, 0.997016851800555100, 0.997012991345420540, 0.997009128397753570, 0.997005262957563750, 0.997001395024860740, 0.996997524599654290, 0.996993651681953970, +0.996989776271769660, 0.996985898369110780, 0.996982017973987110, 0.996978135086408420, 0.996974249706384490, 0.996970361833924960, 0.996966471469039380, 0.996962578611737760, +0.996958683262029630, 0.996954785419924770, 0.996950885085432950, 0.996946982258563930, 0.996943076939327490, 0.996939169127733280, 0.996935258823791190, 0.996931346027510990, +0.996927430738902440, 0.996923512957975210, 0.996919592684739180, 0.996915669919204330, 0.996911744661380220, 0.996907816911276720, 0.996903886668903730, 0.996899953934271000, +0.996896018707388420, 0.996892080988265650, 0.996888140776912790, 0.996884198073339610, 0.996880252877555990, 0.996876305189571600, 0.996872355009396530, 0.996868402337040550, +0.996864447172513550, 0.996860489515825400, 0.996856529366986100, 0.996852566726005420, 0.996848601592893350, 0.996844633967659770, 0.996840663850314670, 0.996836691240867820, +0.996832716139329220, 0.996828738545708860, 0.996824758460016720, 0.996820775882262590, 0.996816790812456670, 0.996812803250608610, 0.996808813196728650, 0.996804820650826650, +0.996800825612912500, 0.996796828082996300, 0.996792828061088150, 0.996788825547197830, 0.996784820541335550, 0.996780813043511070, 0.996776803053734730, 0.996772790572016180, +0.996768775598365740, 0.996764758132793420, 0.996760738175309190, 0.996756715725923060, 0.996752690784645230, 0.996748663351485600, 0.996744633426454360, 0.996740601009561410, +0.996736566100817070, 0.996732528700231320, 0.996728488807814280, 0.996724446423575940, 0.996720401547526500, 0.996716354179676080, 0.996712304320034770, 0.996708251968612680, +0.996704197125419910, 0.996700139790466790, 0.996696079963763190, 0.996692017645319450, 0.996687952835145660, 0.996683885533252050, 0.996679815739648590, 0.996675743454345730, +0.996671668677353460, 0.996667591408682000, 0.996663511648341550, 0.996659429396342330, 0.996655344652694560, 0.996651257417408450, 0.996647167690494110, 0.996643075471961850, +0.996638980761822000, 0.996634883560084670, 0.996630783866760180, 0.996626681681858640, 0.996622577005390480, 0.996618469837365790, 0.996614360177794920, 0.996610248026688180, +0.996606133384055790, 0.996602016249908180, 0.996597896624255460, 0.996593774507107950, 0.996589649898476090, 0.996585522798369980, 0.996581393206800170, 0.996577261123776870, +0.996573126549310410, 0.996568989483411110, 0.996564849926089400, 0.996560707877355510, 0.996556563337219870, 0.996552416305692800, 0.996548266782784630, 0.996544114768505910, +0.996539960262866840, 0.996535803265877980, 0.996531643777549440, 0.996527481797891970, 0.996523317326915570, 0.996519150364631010, 0.996514980911048620, 0.996510808966178720, +0.996506634530031850, 0.996502457602618350, 0.996498278183948650, 0.996494096274033400, 0.996489911872882720, 0.996485724980507360, 0.996481535596917770, 0.996477343722124260, +0.996473149356137400, 0.996468952498967610, 0.996464753150625550, 0.996460551311121550, 0.996456346980466150, 0.996452140158669900, 0.996447930845743230, 0.996443719041696820, +0.996439504746541190, 0.996435287960286690, 0.996431068682943950, 0.996426846914523550, 0.996422622655036120, 0.996418395904491990, 0.996414166662902060, 0.996409934930276520, +0.996405700706626260, 0.996401463991961720, 0.996397224786293560, 0.996392983089632200, 0.996388738901988540, 0.996384492223373000, 0.996380243053796240, 0.996375991393268820, +0.996371737241801500, 0.996367480599404720, 0.996363221466089240, 0.996358959841865840, 0.996354695726744950, 0.996350429120737350, 0.996346160023853680, 0.996341888436104610, +0.996337614357500790, 0.996333337788053000, 0.996329058727771670, 0.996324777176667900, 0.996320493134752130, 0.996316206602035130, 0.996311917578527550, 0.996307626064240280, +0.996303332059183980, 0.996299035563369180, 0.996294736576806890, 0.996290435099507770, 0.996286131131482570, 0.996281824672741960, 0.996277515723296920, 0.996273204283158020, +0.996268890352336120, 0.996264573930841890, 0.996260255018686310, 0.996255933615880160, 0.996251609722434090, 0.996247283338358990, 0.996242954463665730, 0.996238623098365080, +0.996234289242467930, 0.996229952895984930, 0.996225614058927070, 0.996221272731305230, 0.996216928913130180, 0.996212582604412810, 0.996208233805164100, 0.996203882515394710, +0.996199528735115520, 0.996195172464337530, 0.996190813703071720, 0.996186452451328860, 0.996182088709119840, 0.996177722476455640, 0.996173353753347040, 0.996168982539805130, +0.996164608835840680, 0.996160232641464800, 0.996155853956688260, 0.996151472781522160, 0.996147089115977380, 0.996142702960064910, 0.996138314313795630, 0.996133923177180520, +0.996129529550230600, 0.996125133432956830, 0.996120734825370340, 0.996116333727481980, 0.996111930139302770, 0.996107524060843800, 0.996103115492115940, 0.996098704433130310, +0.996094290883897890, 0.996089874844429790, 0.996085456314736990, 0.996081035294830500, 0.996076611784721510, 0.996072185784421030, 0.996067757293939930, 0.996063326313289530, +0.996058892842480730, 0.996054456881524830, 0.996050018430432730, 0.996045577489215630, 0.996041134057884530, 0.996036688136450630, 0.996032239724924940, 0.996027788823318660, +0.996023335431642900, 0.996018879549908860, 0.996014421178127660, 0.996009960316310280, 0.996005496964468160, 0.996001031122612180, 0.995996562790753550, 0.995992091968903700, +0.995987618657073530, 0.995983142855274340, 0.995978664563517250, 0.995974183781813570, 0.995969700510174420, 0.995965214748610990, 0.995960726497134410, 0.995956235755756090, +0.995951742524487260, 0.995947246803339010, 0.995942748592322680, 0.995938247891449470, 0.995933744700730710, 0.995929239020177490, 0.995924730849801150, 0.995920220189613010, +0.995915707039624400, 0.995911191399846410, 0.995906673270290480, 0.995902152650967930, 0.995897629541889980, 0.995893103943067850, 0.995888575854513070, 0.995884045276236750, +0.995879512208250440, 0.995874976650565240, 0.995870438603192690, 0.995865898066144010, 0.995861355039430630, 0.995856809523063770, 0.995852261517054860, 0.995847711021415450, +0.995843158036156640, 0.995838602561289980, 0.995834044596826900, 0.995829484142778610, 0.995824921199156550, 0.995820355765972280, 0.995815787843237100, 0.995811217430962460, +0.995806644529159790, 0.995802069137840420, 0.995797491257016000, 0.995792910886697750, 0.995788328026897210, 0.995783742677625930, 0.995779154838895340, 0.995774564510716780, +0.995769971693101770, 0.995765376386062000, 0.995760778589608650, 0.995756178303753400, 0.995751575528507570, 0.995746970263882920, 0.995742362509890900, 0.995737752266542930, +0.995733139533850560, 0.995728524311825350, 0.995723906600478830, 0.995719286399822430, 0.995714663709867940, 0.995710038530626780, 0.995705410862110620, 0.995700780704330770, +0.995696148057299110, 0.995691512921026980, 0.995686875295526130, 0.995682235180808010, 0.995677592576884260, 0.995672947483766670, 0.995668299901466660, 0.995663649829995890, +0.995658997269366020, 0.995654342219588710, 0.995649684680675500, 0.995645024652637930, 0.995640362135487900, 0.995635697129237050, 0.995631029633896940, 0.995626359649479210, +0.995621687175995530, 0.995617012213457770, 0.995612334761877270, 0.995607654821266120, 0.995602972391635750, 0.995598287472997940, 0.995593600065364570, 0.995588910168747070, +0.995584217783157310, 0.995579522908606960, 0.995574825545107790, 0.995570125692671560, 0.995565423351310150, 0.995560718521035120, 0.995556011201858220, 0.995551301393791330, +0.995546589096846240, 0.995541874311034580, 0.995537157036368360, 0.995532437272859120, 0.995527715020518840, 0.995522990279359310, 0.995518263049392280, 0.995513533330629640, +0.995508801123083150, 0.995504066426764480, 0.995499329241685830, 0.995494589567858860, 0.995489847405295340, 0.995485102754007260, 0.995480355614006380, 0.995475605985304600, +0.995470853867913900, 0.995466099261845930, 0.995461342167112790, 0.995456582583726270, 0.995451820511698340, 0.995447055951040880, 0.995442288901765670, 0.995437519363884800, +0.995432747337410160, 0.995427972822353620, 0.995423195818727180, 0.995418416326542710, 0.995413634345812200, 0.995408849876547650, 0.995404062918760930, 0.995399273472464040, +0.995394481537668960, 0.995389687114387690, 0.995384890202632320, 0.995380090802414630, 0.995375288913746710, 0.995370484536640570, 0.995365677671108170, 0.995360868317161640, +0.995356056474812840, 0.995351242144074000, 0.995346425324957100, 0.995341606017474120, 0.995336784221637070, 0.995331959937458040, 0.995327133164949140, 0.995322303904122350, +0.995317472154989890, 0.995312637917563750, 0.995307801191856020, 0.995302961977878710, 0.995298120275644130, 0.995293276085164160, 0.995288429406451010, 0.995283580239516690, +0.995278728584373500, 0.995273874441033550, 0.995269017809508830, 0.995264158689811550, 0.995259297081953930, 0.995254432985948070, 0.995249566401806060, 0.995244697329540240, +0.995239825769162590, 0.995234951720685430, 0.995230075184120880, 0.995225196159481240, 0.995220314646778510, 0.995215430646025020, 0.995210544157232760, 0.995205655180414370, +0.995200763715581750, 0.995195869762747320, 0.995190973321923080, 0.995186074393121570, 0.995181172976354780, 0.995176269071635030, 0.995171362678974550, 0.995166453798385750, +0.995161542429880860, 0.995156628573472090, 0.995151712229171760, 0.995146793396992080, 0.995141872076945490, 0.995136948269044090, 0.995132021973300420, 0.995127093189726700, +0.995122161918335250, 0.995117228159138390, 0.995112291912148450, 0.995107353177377860, 0.995102411954838730, 0.995097468244543590, 0.995092522046504890, 0.995087573360734830, +0.995082622187245860, 0.995077668526050400, 0.995072712377160660, 0.995067753740589200, 0.995062792616348220, 0.995057829004450390, 0.995052862904907910, 0.995047894317733330, +0.995042923242939080, 0.995037949680537490, 0.995032973630541000, 0.995027995092962030, 0.995023014067813020, 0.995018030555106630, 0.995013044554855060, 0.995008056067070880, +0.995003065091766610, 0.994998071628954710, 0.994993075678647590, 0.994988077240857800, 0.994983076315597680, 0.994978072902880100, 0.994973067002717150, 0.994968058615121610, +0.994963047740106020, 0.994958034377682710, 0.994953018527864330, 0.994948000190663320, 0.994942979366092330, 0.994937956054163910, 0.994932930254890710, 0.994927901968285070, +0.994922871194359740, 0.994917837933127270, 0.994912802184600100, 0.994907763948790880, 0.994902723225712380, 0.994897680015377040, 0.994892634317797510, 0.994887586132986330, +0.994882535460956290, 0.994877482301719910, 0.994872426655289740, 0.994867368521678450, 0.994862307900898800, 0.994857244792963450, 0.994852179197884930, 0.994847111115675920, +0.994842040546349280, 0.994836967489917460, 0.994831891946393100, 0.994826813915789090, 0.994821733398118080, 0.994816650393392730, 0.994811564901625810, 0.994806476922829970, +0.994801386457017880, 0.994796293504202290, 0.994791198064395980, 0.994786100137611710, 0.994780999723862140, 0.994775896823160140, 0.994770791435518390, 0.994765683560949630, +0.994760573199466760, 0.994755460351082310, 0.994750345015809280, 0.994745227193660430, 0.994740106884648420, 0.994734984088786240, 0.994729858806086550, 0.994724731036562230, +0.994719600780226030, 0.994714468037090850, 0.994709332807169440, 0.994704195090474810, 0.994699054887019710, 0.994693912196816910, 0.994688767019879410, 0.994683619356219850, +0.994678469205851350, 0.994673316568786550, 0.994668161445038560, 0.994663003834620140, 0.994657843737544290, 0.994652681153823770, 0.994647516083471570, 0.994642348526500570, +0.994637178482923660, 0.994632005952753810, 0.994626830936004010, 0.994621653432687050, 0.994616473442816010, 0.994611290966403770, 0.994606106003463330, 0.994600918554007670, +0.994595728618049570, 0.994590536195602230, 0.994585341286678530, 0.994580143891291460, 0.994574944009454120, 0.994569741641179390, 0.994564536786480270, 0.994559329445369840, +0.994554119617861000, 0.994548907303966940, 0.994543692503700560, 0.994538475217075060, 0.994533255444103310, 0.994528033184798430, 0.994522808439173400, 0.994517581207241320, +0.994512351489015400, 0.994507119284508630, 0.994501884593734010, 0.994496647416704630, 0.994491407753433700, 0.994486165603934210, 0.994480920968219380, 0.994475673846302090, +0.994470424238195760, 0.994465172143913280, 0.994459917563467970, 0.994454660496872810, 0.994449400944141030, 0.994444138905285710, 0.994438874380319970, 0.994433607369257120, +0.994428337872110270, 0.994423065888892620, 0.994417791419617280, 0.994412514464297460, 0.994407235022946260, 0.994401953095577110, 0.994396668682202890, 0.994391381782837150, +0.994386092397492980, 0.994380800526183490, 0.994375506168922010, 0.994370209325721840, 0.994364909996596100, 0.994359608181558110, 0.994354303880620960, 0.994348997093798200, +0.994343687821102940, 0.994338376062548380, 0.994333061818147960, 0.994327745087914880, 0.994322425871862480, 0.994317104170003850, 0.994311779982352540, 0.994306453308921760, +0.994301124149724940, 0.994295792504775290, 0.994290458374086140, 0.994285121757670810, 0.994279782655542730, 0.994274441067715120, 0.994269096994201410, 0.994263750435015030, +0.994258401390169190, 0.994253049859677440, 0.994247695843553100, 0.994242339341809390, 0.994236980354459950, 0.994231618881517900, 0.994226254922996880, 0.994220888478910330, +0.994215519549271450, 0.994210148134093810, 0.994204774233390820, 0.994199397847175810, 0.994194018975462330, 0.994188637618263820, 0.994183253775593690, 0.994177867447465500, +0.994172478633892580, 0.994167087334888570, 0.994161693550466800, 0.994156297280640700, 0.994150898525423820, 0.994145497284829820, 0.994140093558872010, 0.994134687347564050, +0.994129278650919380, 0.994123867468951430, 0.994118453801673850, 0.994113037649100080, 0.994107619011243780, 0.994102197888118380, 0.994096774279737530, 0.994091348186114780, +0.994085919607263560, 0.994080488543197640, 0.994075054993930450, 0.994069618959475540, 0.994064180439846680, 0.994058739435057400, 0.994053295945121260, 0.994047849970051910, +0.994042401509862890, 0.994036950564567870, 0.994031497134180490, 0.994026041218714180, 0.994020582818182950, 0.994015121932600220, 0.994009658561979760, 0.994004192706335110, +0.993998724365679930, 0.993993253540027990, 0.993987780229392830, 0.993982304433788320, 0.993976826153228020, 0.993971345387725690, 0.993965862137294990, 0.993960376401949670, +0.993954888181703300, 0.993949397476569850, 0.993943904286562650, 0.993938408611695910, 0.993932910451983060, 0.993927409807437990, 0.993921906678074450, 0.993916401063906110, +0.993910892964946720, 0.993905382381210070, 0.993899869312709900, 0.993894353759460230, 0.993888835721474570, 0.993883315198766940, 0.993877792191350860, 0.993872266699240450, +0.993866738722449240, 0.993861208260991220, 0.993855675314880170, 0.993850139884130070, 0.993844601968754460, 0.993839061568767450, 0.993833518684182790, 0.993827973315014270, +0.993822425461275860, 0.993816875122981220, 0.993811322300144570, 0.993805766992779560, 0.993800209200900180, 0.993794648924520300, 0.993789086163653690, 0.993783520918314460, +0.993777953188516250, 0.993772382974273390, 0.993766810275599430, 0.993761235092508580, 0.993755657425014480, 0.993750077273131360, 0.993744494636872980, 0.993738909516253430, +0.993733321911286490, 0.993727731821986370, 0.993722139248366830, 0.993716544190441970, 0.993710946648225790, 0.993705346621732270, 0.993699744110975280, 0.993694139115969040, +0.993688531636727320, 0.993682921673264330, 0.993677309225594050, 0.993671694293730480, 0.993666076877687710, 0.993660456977479730, 0.993654834593120650, 0.993649209724624340, +0.993643582372005120, 0.993637952535276980, 0.993632320214453910, 0.993626685409550010, 0.993621048120579500, 0.993615408347556350, 0.993609766090494560, 0.993604121349408340, +0.993598474124311900, 0.993592824415219340, 0.993587172222144650, 0.993581517545102040, 0.993575860384105610, 0.993570200739169570, 0.993564538610307910, 0.993558873997535060, +0.993553206900865020, 0.993547537320311870, 0.993541865255889940, 0.993536190707613340, 0.993530513675496270, 0.993524834159552950, 0.993519152159797360, 0.993513467676244040, +0.993507780708907110, 0.993502091257800650, 0.993496399322938980, 0.993490704904336330, 0.993485008002006900, 0.993479308615964900, 0.993473606746224540, 0.993467902392800360, +0.993462195555706360, 0.993456486234956860, 0.993450774430566170, 0.993445060142548520, 0.993439343370918220, 0.993433624115689470, 0.993427902376876840, 0.993422178154494410, +0.993416451448556500, 0.993410722259077450, 0.993404990586071570, 0.993399256429553290, 0.993393519789536830, 0.993387780666036500, 0.993382039059066750, 0.993376294968641990, +0.993370548394776450, 0.993364799337484560, 0.993359047796780640, 0.993353293772679110, 0.993347537265194420, 0.993341778274340670, 0.993336016800132620, 0.993330252842584580, +0.993324486401710780, 0.993318717477525870, 0.993312946070044170, 0.993307172179280110, 0.993301395805248010, 0.993295616947962420, 0.993289835607437890, 0.993284051783688730, +0.993278265476729480, 0.993272476686574590, 0.993266685413238480, 0.993260891656735590, 0.993255095417080460, 0.993249296694287630, 0.993243495488371650, 0.993237691799346840, +0.993231885627227860, 0.993226076972029140, 0.993220265833765210, 0.993214452212450530, 0.993208636108099730, 0.993202817520727480, 0.993196996450348090, 0.993191172896976340, +0.993185346860626540, 0.993179518341313460, 0.993173687339051540, 0.993167853853855200, 0.993162017885739430, 0.993156179434718680, 0.993150338500807360, 0.993144495084020250, +0.993138649184371890, 0.993132800801876940, 0.993126949936549930, 0.993121096588405530, 0.993115240757458380, 0.993109382443723150, 0.993103521647214490, 0.993097658367947060, +0.993091792605935500, 0.993085924361194360, 0.993080053633738410, 0.993074180423582420, 0.993068304730740930, 0.993062426555228690, 0.993056545897060380, 0.993050662756250760, +0.993044777132814360, 0.993038889026766180, 0.993032998438120540, 0.993027105366892540, 0.993021209813096830, 0.993015311776748070, 0.993009411257861020, 0.993003508256450450, +0.992997602772531020, 0.992991694806117710, 0.992985784357225070, 0.992979871425867970, 0.992973956012061290, 0.992968038115819680, 0.992962117737157920, 0.992956194876090880, +0.992950269532633430, 0.992944341706800130, 0.992938411398606170, 0.992932478608066100, 0.992926543335194810, 0.992920605580007280, 0.992914665342518150, 0.992908722622742320, +0.992902777420694770, 0.992896829736390150, 0.992890879569843570, 0.992884926921069780, 0.992878971790083660, 0.992873014176900100, 0.992867054081533970, 0.992861091504000260, +0.992855126444313730, 0.992849158902489480, 0.992843188878542280, 0.992837216372487230, 0.992831241384339090, 0.992825263914112740, 0.992819283961823280, 0.992813301527485700, +0.992807316611114650, 0.992801329212725570, 0.992795339332332990, 0.992789346969952140, 0.992783352125597980, 0.992777354799285310, 0.992771354991029310, 0.992765352700844980, +0.992759347928747090, 0.992753340674750960, 0.992747330938871570, 0.992741318721123700, 0.992735304021522660, 0.992729286840083320, 0.992723267176820690, 0.992717245031749850, +0.992711220404886020, 0.992705193296244070, 0.992699163705839220, 0.992693131633686440, 0.992687097079800850, 0.992681060044197430, 0.992675020526891380, 0.992668978527897710, +0.992662934047231720, 0.992656887084908400, 0.992650837640942860, 0.992644785715350200, 0.992638731308145510, 0.992632674419344110, 0.992626615048960990, 0.992620553197011150, +0.992614488863510110, 0.992608422048472880, 0.992602352751914550, 0.992596280973850330, 0.992590206714295430, 0.992584129973264950, 0.992578050750774100, 0.992571969046838200, +0.992565884861472460, 0.992559798194691870, 0.992553709046511860, 0.992547617416947640, 0.992541523306014310, 0.992535426713727190, 0.992529327640101380, 0.992523226085152310, +0.992517122048895310, 0.992511015531345350, 0.992504906532517990, 0.992498795052428220, 0.992492681091091570, 0.992486564648523140, 0.992480445724738260, 0.992474324319752350, +0.992468200433580640, 0.992462074066238430, 0.992455945217741050, 0.992449813888103830, 0.992443680077341960, 0.992437543785470890, 0.992431405012506040, 0.992425263758462740, +0.992419120023356190, 0.992412973807201840, 0.992406825110015100, 0.992400673931811310, 0.992394520272605770, 0.992388364132413820, 0.992382205511251110, 0.992376044409132850, +0.992369880826074580, 0.992363714762091510, 0.992357546217199180, 0.992351375191413030, 0.992345201684748270, 0.992339025697220660, 0.992332847228845400, 0.992326666279638060, +0.992320482849614160, 0.992314296938788920, 0.992308108547177990, 0.992301917674796810, 0.992295724321660690, 0.992289528487785400, 0.992283330173186260, 0.992277129377878820, +0.992270926101878500, 0.992264720345200970, 0.992258512107861530, 0.992252301389875860, 0.992246088191259370, 0.992239872512027720, 0.992233654352196460, 0.992227433711781020, +0.992221210590796930, 0.992214984989259860, 0.992208756907185350, 0.992202526344588830, 0.992196293301486070, 0.992190057777892600, 0.992183819773823970, 0.992177579289295840, +0.992171336324323750, 0.992165090878923240, 0.992158842953110080, 0.992152592546899690, 0.992146339660307960, 0.992140084293350320, 0.992133826446042530, 0.992127566118400140, +0.992121303310438800, 0.992115038022174270, 0.992108770253621990, 0.992102500004797940, 0.992096227275717560, 0.992089952066396720, 0.992083674376850970, 0.992077394207095950, +0.992071111557147560, 0.992064826427021320, 0.992058538816732890, 0.992052248726298270, 0.992045956155732990, 0.992039661105052820, 0.992033363574273520, 0.992027063563410860, +0.992020761072480490, 0.992014456101498190, 0.992008148650479700, 0.992001838719440920, 0.991995526308397490, 0.991989211417365290, 0.991982894046360090, 0.991976574195397640, +0.991970251864493720, 0.991963927053664100, 0.991957599762924750, 0.991951269992291440, 0.991944937741779940, 0.991938603011406130, 0.991932265801185760, 0.991925926111134730, +0.991919583941268890, 0.991913239291604020, 0.991906892162156110, 0.991900542552940910, 0.991894190463974420, 0.991887835895272520, 0.991881478846850960, 0.991875119318725740, +0.991868757310912730, 0.991862392823427590, 0.991856025856286740, 0.991849656409505730, 0.991843284483100660, 0.991836910077087300, 0.991830533191481730, 0.991824153826299740, +0.991817771981557290, 0.991811387657270620, 0.991805000853455350, 0.991798611570127610, 0.991792219807303370, 0.991785825564998610, 0.991779428843229230, 0.991773029642011310, +0.991766627961360610, 0.991760223801293580, 0.991753817161825980, 0.991747408042973790, 0.991740996444753110, 0.991734582367179930, 0.991728165810270230, 0.991721746774040120, +0.991715325258505700, 0.991708901263682940, 0.991702474789587950, 0.991696045836236720, 0.991689614403645450, 0.991683180491830130, 0.991676744100806860, 0.991670305230591630, +0.991663863881200760, 0.991657420052650120, 0.991650973744956030, 0.991644524958134490, 0.991638073692201690, 0.991631619947173640, 0.991625163723066530, 0.991618705019896460, +0.991612243837679650, 0.991605780176432310, 0.991599314036170520, 0.991592845416910400, 0.991586374318668140, 0.991579900741460070, 0.991573424685302070, 0.991566946150210570, +0.991560465136201770, 0.991553981643291780, 0.991547495671496800, 0.991541007220833160, 0.991534516291316950, 0.991528022882964490, 0.991521526995791770, 0.991515028629815440, +0.991508527785051500, 0.991502024461516250, 0.991495518659225920, 0.991489010378196810, 0.991482499618445150, 0.991475986379987240, 0.991469470662839300, 0.991462952467017880, +0.991456431792538950, 0.991449908639418950, 0.991443383007674210, 0.991436854897320920, 0.991430324308375630, 0.991423791240854340, 0.991417255694773680, 0.991410717670149990, +0.991404177166999360, 0.991397634185338330, 0.991391088725183220, 0.991384540786550470, 0.991377990369456290, 0.991371437473916980, 0.991364882099949330, 0.991358324247569310, +0.991351763916793580, 0.991345201107638460, 0.991338635820120270, 0.991332068054255560, 0.991325497810060520, 0.991318925087551820, 0.991312349886745880, 0.991305772207659030, +0.991299192050307700, 0.991292609414708430, 0.991286024300877640, 0.991279436708831780, 0.991272846638587280, 0.991266254090160670, 0.991259659063568500, 0.991253061558827200, +0.991246461575953200, 0.991239859114963040, 0.991233254175873270, 0.991226646758700310, 0.991220036863460720, 0.991213424490171020, 0.991206809638847890, 0.991200192309507620, +0.991193572502167000, 0.991186950216842330, 0.991180325453550280, 0.991173698212307390, 0.991167068493130300, 0.991160436296035560, 0.991153801621039830, 0.991147164468159430, +0.991140524837411220, 0.991133882728811640, 0.991127238142377460, 0.991120591078125000, 0.991113941536071130, 0.991107289516232500, 0.991100635018625550, 0.991093978043267040, +0.991087318590173630, 0.991080656659361960, 0.991073992250848470, 0.991067325364650030, 0.991060656000783410, 0.991053984159265160, 0.991047309840111800, 0.991040633043340340, +0.991033953768967190, 0.991027272017009240, 0.991020587787482920, 0.991013901080405210, 0.991007211895792880, 0.991000520233662360, 0.990993826094030640, 0.990987129476914360, +0.990980430382330300, 0.990973728810295110, 0.990967024760825430, 0.990960318233938380, 0.990953609229650480, 0.990946897747978620, 0.990940183788939440, 0.990933467352549830, +0.990926748438826550, 0.990920027047786370, 0.990913303179446150, 0.990906576833822660, 0.990899848010932780, 0.990893116710793280, 0.990886382933420910, 0.990879646678832660, +0.990872907947045300, 0.990866166738075480, 0.990859423051940410, 0.990852676888656750, 0.990845928248241470, 0.990839177130711350, 0.990832423536083250, 0.990825667464374060, +0.990818908915600760, 0.990812147889780110, 0.990805384386929110, 0.990798618407064740, 0.990791849950203750, 0.990785079016363150, 0.990778305605559910, 0.990771529717810790, +0.990764751353132910, 0.990757970511543130, 0.990751187193058440, 0.990744401397695820, 0.990737613125472150, 0.990730822376404530, 0.990724029150509720, 0.990717233447804930, +0.990710435268306930, 0.990703634612033040, 0.990696831478999900, 0.990690025869224830, 0.990683217782724610, 0.990676407219516330, 0.990669594179617090, 0.990662778663043750, +0.990655960669813540, 0.990649140199943430, 0.990642317253450530, 0.990635491830351820, 0.990628663930664290, 0.990621833554405140, 0.990615000701591470, 0.990608165372240170, +0.990601327566368540, 0.990594487283993570, 0.990587644525132480, 0.990580799289802140, 0.990573951578019860, 0.990567101389802750, 0.990560248725167900, 0.990553393584132190, +0.990546535966713270, 0.990539675872927900, 0.990532813302793300, 0.990525948256326780, 0.990519080733545330, 0.990512210734466160, 0.990505338259106470, 0.990498463307483480, +0.990491585879614280, 0.990484705975516190, 0.990477823595206200, 0.990470938738701840, 0.990464051406020010, 0.990457161597178120, 0.990450269312193150, 0.990443374551082670, +0.990436477313863640, 0.990429577600553500, 0.990422675411169460, 0.990415770745728730, 0.990408863604248510, 0.990401953986746130, 0.990395041893238790, 0.990388127323744040, +0.990381210278278860, 0.990374290756860680, 0.990367368759506710, 0.990360444286234380, 0.990353517337061010, 0.990346587912003700, 0.990339656011079980, 0.990332721634307080, +0.990325784781702410, 0.990318845453283410, 0.990311903649067180, 0.990304959369071150, 0.990298012613312850, 0.990291063381809280, 0.990284111674578190, 0.990277157491636920, +0.990270200833002660, 0.990263241698692950, 0.990256280088725130, 0.990249316003116500, 0.990242349441884610, 0.990235380405046880, 0.990228408892620760, 0.990221434904623550, +0.990214458441072810, 0.990207479501985840, 0.990200498087380310, 0.990193514197273420, 0.990186527831682710, 0.990179538990625720, 0.990172547674119890, 0.990165553882182750, +0.990158557614831740, 0.990151558872084280, 0.990144557653957920, 0.990137553960470210, 0.990130547791638450, 0.990123539147480410, 0.990116528028013640, 0.990109514433255460, +0.990102498363223500, 0.990095479817935330, 0.990088458797408480, 0.990081435301660260, 0.990074409330708670, 0.990067380884571020, 0.990060349963264970, 0.990053316566807950, +0.990046280695217720, 0.990039242348511710, 0.990032201526707680, 0.990025158229822950, 0.990018112457875520, 0.990011064210882810, 0.990004013488862360, 0.989996960291831930, +0.989989904619809070, 0.989982846472811540, 0.989975785850856770, 0.989968722753962530, 0.989961657182146460, 0.989954589135426330, 0.989947518613819800, 0.989940445617344400, +0.989933370146017900, 0.989926292199857950, 0.989919211778882090, 0.989912128883108420, 0.989905043512554370, 0.989897955667237820, 0.989890865347176300, 0.989883772552387580, +0.989876677282889530, 0.989869579538699700, 0.989862479319835840, 0.989855376626315840, 0.989848271458157460, 0.989841163815378460, 0.989834053697996490, 0.989826941106029310, +0.989819826039494920, 0.989812708498410740, 0.989805588482794980, 0.989798465992665190, 0.989791341028039230, 0.989784213588934980, 0.989777083675370210, 0.989769951287362670, +0.989762816424930250, 0.989755679088090700, 0.989748539276862020, 0.989741396991262070, 0.989734252231308620, 0.989727104997019440, 0.989719955288412610, 0.989712803105505800, +0.989705648448317100, 0.989698491316864050, 0.989691331711164970, 0.989684169631237510, 0.989677005077099660, 0.989669838048769290, 0.989662668546264280, 0.989655496569602610, +0.989648322118802160, 0.989641145193880910, 0.989633965794856850, 0.989626783921747850, 0.989619599574572020, 0.989612412753347100, 0.989605223458091100, 0.989598031688822100, +0.989590837445557870, 0.989583640728316730, 0.989576441537116440, 0.989569239871974980, 0.989562035732910570, 0.989554829119940970, 0.989547620033084270, 0.989540408472358470, +0.989533194437781760, 0.989525977929372020, 0.989518758947147360, 0.989511537491125860, 0.989504313561325400, 0.989497087157764300, 0.989489858280460430, 0.989482626929431670, +0.989475393104696680, 0.989468156806273090, 0.989460918034179020, 0.989453676788432770, 0.989446433069052330, 0.989439186876055810, 0.989431938209461290, 0.989424687069286770, +0.989417433455550670, 0.989410177368271080, 0.989402918807466000, 0.989395657773153530, 0.989388394265351970, 0.989381128284079540, 0.989373859829354000, 0.989366588901194000, +0.989359315499617530, 0.989352039624642800, 0.989344761276287900, 0.989337480454571150, 0.989330197159510760, 0.989322911391124830, 0.989315623149431440, 0.989308332434449160, +0.989301039246196060, 0.989293743584690350, 0.989286445449950260, 0.989279144841994080, 0.989271841760840040, 0.989264536206506340, 0.989257228179011290, 0.989249917678373230, +0.989242604704610340, 0.989235289257740960, 0.989227971337783400, 0.989220650944755860, 0.989213328078676790, 0.989206002739564160, 0.989198674927436630, 0.989191344642312510, +0.989184011884210010, 0.989176676653147460, 0.989169338949143270, 0.989161998772215670, 0.989154656122383070, 0.989147310999663690, 0.989139963404076280, 0.989132613335638840, +0.989125260794369910, 0.989117905780287800, 0.989110548293410940, 0.989103188333757770, 0.989095825901346370, 0.989088460996195630, 0.989081093618323750, 0.989073723767749050, +0.989066351444490180, 0.989058976648565350, 0.989051599379993100, 0.989044219638791740, 0.989036837424979830, 0.989029452738575900, 0.989022065579598380, 0.989014675948065690, +0.989007283843996280, 0.988999889267408670, 0.988992492218321310, 0.988985092696752830, 0.988977690702721350, 0.988970286236245830, 0.988962879297344610, 0.988955469886036220, +0.988948058002339090, 0.988940643646271880, 0.988933226817853010, 0.988925807517101020, 0.988918385744034570, 0.988910961498672080, 0.988903534781032320, 0.988896105591133720, +0.988888673928994820, 0.988881239794634160, 0.988873803188070500, 0.988866364109322160, 0.988858922558408130, 0.988851478535346610, 0.988844032040156580, 0.988836583072856380, +0.988829131633464750, 0.988821677722000250, 0.988814221338481620, 0.988806762482927200, 0.988799301155356080, 0.988791837355786680, 0.988784371084237780, 0.988776902340727900, +0.988769431125275710, 0.988761957437899960, 0.988754481278619200, 0.988747002647452410, 0.988739521544418020, 0.988732037969534900, 0.988724551922821710, 0.988717063404297100, +0.988709572413979830, 0.988702078951888660, 0.988694583018042140, 0.988687084612459240, 0.988679583735158740, 0.988672080386159170, 0.988664574565479400, 0.988657066273138320, +0.988649555509154450, 0.988642042273546680, 0.988634526566333770, 0.988627008387534700, 0.988619487737168010, 0.988611964615252690, 0.988604439021807390, 0.988596910956850980, +0.988589380420402340, 0.988581847412480120, 0.988574311933103410, 0.988566773982290870, 0.988559233560061480, 0.988551690666433890, 0.988544145301427200, 0.988536597465060060, +0.988529047157351460, 0.988521494378320150, 0.988513939127985130, 0.988506381406365380, 0.988498821213479540, 0.988491258549346830, 0.988483693413985790, 0.988476125807415620, +0.988468555729654970, 0.988460983180723060, 0.988453408160638760, 0.988445830669420930, 0.988438250707088460, 0.988430668273660440, 0.988423083369155630, 0.988415495993593240, +0.988407906146991920, 0.988400313829370880, 0.988392719040749210, 0.988385121781145680, 0.988377522050579270, 0.988369919849069190, 0.988362315176634200, 0.988354708033293510, +0.988347098419065870, 0.988339486333970620, 0.988331871778026620, 0.988324254751253070, 0.988316635253668750, 0.988309013285292860, 0.988301388846144490, 0.988293761936242520, +0.988286132555606270, 0.988278500704254600, 0.988270866382206740, 0.988263229589481760, 0.988255590326098670, 0.988247948592076540, 0.988240304387434710, 0.988232657712191820, +0.988225008566367520, 0.988217356949980590, 0.988209702863050320, 0.988202046305595830, 0.988194387277636200, 0.988186725779190640, 0.988179061810278040, 0.988171395370918030, +0.988163726461129490, 0.988156055080931630, 0.988148381230343650, 0.988140704909384660, 0.988133026118073960, 0.988125344856430670, 0.988117661124473860, 0.988109974922223080, +0.988102286249697310, 0.988094595106915890, 0.988086901493898000, 0.988079205410662740, 0.988071506857229550, 0.988063805833617640, 0.988056102339845980, 0.988048396375934220, +0.988040687941901470, 0.988032977037767050, 0.988025263663550150, 0.988017547819270090, 0.988009829504946200, 0.988002108720597570, 0.987994385466243850, 0.987986659741904140, +0.987978931547597750, 0.987971200883344000, 0.987963467749162330, 0.987955732145071930, 0.987947994071092240, 0.987940253527242460, 0.987932510513542140, 0.987924765030010480, +0.987917017076667010, 0.987909266653530960, 0.987901513760621740, 0.987893758397958680, 0.987886000565561310, 0.987878240263448840, 0.987870477491640810, 0.987862712250156650, +0.987854944539015680, 0.987847174358237320, 0.987839401707841010, 0.987831626587846290, 0.987823848998272360, 0.987816068939138870, 0.987808286410465250, 0.987800501412270830, +0.987792713944575240, 0.987784924007397920, 0.987777131600758200, 0.987769336724675710, 0.987761539379169660, 0.987753739564259940, 0.987745937279965960, 0.987738132526307040, +0.987730325303302740, 0.987722515610972680, 0.987714703449336430, 0.987706888818413180, 0.987699071718222910, 0.987691252148784840, 0.987683430110118720, 0.987675605602244100, +0.987667778625180290, 0.987659949178947170, 0.987652117263564170, 0.987644282879050710, 0.987636446025426660, 0.987628606702711580, 0.987620764910924880, 0.987612920650086320, +0.987605073920215460, 0.987597224721331820, 0.987589373053455290, 0.987581518916605060, 0.987573662310801240, 0.987565803236063240, 0.987557941692410730, 0.987550077679863360, +0.987542211198440770, 0.987534342248162720, 0.987526470829048650, 0.987518596941118540, 0.987510720584391930, 0.987502841758888470, 0.987494960464628040, 0.987487076701630050, +0.987479190469914500, 0.987471301769500930, 0.987463410600408990, 0.987455516962658540, 0.987447620856269470, 0.987439722281261200, 0.987431821237653720, 0.987423917725466670, +0.987416011744719820, 0.987408103295432830, 0.987400192377625660, 0.987392278991317980, 0.987384363136529660, 0.987376444813280460, 0.987368524021590140, 0.987360600761478470, +0.987352675032965310, 0.987344746836070320, 0.987336816170813700, 0.987328883037214890, 0.987320947435293970, 0.987313009365070720, 0.987305068826564880, 0.987297125819796340, +0.987289180344784970, 0.987281232401550520, 0.987273281990113220, 0.987265329110492700, 0.987257373762708830, 0.987249415946781510, 0.987241455662730580, 0.987233492910576160, +0.987225527690337780, 0.987217560002035750, 0.987209589845689740, 0.987201617221319830, 0.987193642128945890, 0.987185664568587810, 0.987177684540265550, 0.987169702043999120, +0.987161717079808270, 0.987153729647713310, 0.987145739747734010, 0.987137747379890350, 0.987129752544202320, 0.987121755240689900, 0.987113755469373190, 0.987105753230271940, +0.987097748523406260, 0.987089741348796350, 0.987081731706462070, 0.987073719596423430, 0.987065705018700500, 0.987057687973313280, 0.987049668460281970, 0.987041646479626220, +0.987033622031366580, 0.987025595115522790, 0.987017565732115080, 0.987009533881163410, 0.987001499562688010, 0.986993462776708740, 0.986985423523245920, 0.986977381802319310, +0.986969337613949450, 0.986961290958156210, 0.986953241834959690, 0.986945190244380210, 0.986937136186437640, 0.986929079661152290, 0.986921020668544040, 0.986912959208633420, +0.986904895281440320, 0.986896828886985160, 0.986888760025287800, 0.986880688696368580, 0.986872614900247580, 0.986864538636945120, 0.986856459906481080, 0.986848378708876100, +0.986840295044150160, 0.986832208912323480, 0.986824120313416380, 0.986816029247448820, 0.986807935714441250, 0.986799839714413870, 0.986791741247386670, 0.986783640313380390, +0.986775536912414930, 0.986767431044510590, 0.986759322709687690, 0.986751211907966550, 0.986743098639367380, 0.986734982903910260, 0.986726864701615860, 0.986718744032504260, +0.986710620896595780, 0.986702495293910850, 0.986694367224469570, 0.986686236688292470, 0.986678103685399770, 0.986669968215811540, 0.986661830279548680, 0.986653689876631160, +0.986645547007079520, 0.986637401670913960, 0.986629253868154810, 0.986621103598822600, 0.986612950862937650, 0.986604795660520170, 0.986596637991590810, 0.986588477856169880, +0.986580315254277700, 0.986572150185934800, 0.986563982651161520, 0.986555812649978270, 0.986547640182405370, 0.986539465248463480, 0.986531287848172900, 0.986523107981554180, +0.986514925648627640, 0.986506740849413810, 0.986498553583933120, 0.986490363852206010, 0.986482171654252890, 0.986473976990094540, 0.986465779859751150, 0.986457580263243370, +0.986449378200591640, 0.986441173671816380, 0.986432966676938250, 0.986424757215977550, 0.986416545288955060, 0.986408330895891310, 0.986400114036806720, 0.986391894711721730, +0.986383672920657100, 0.986375448663633250, 0.986367221940670840, 0.986358992751790180, 0.986350761097012140, 0.986342526976357270, 0.986334290389846100, 0.986326051337499180, +0.986317809819337030, 0.986309565835380430, 0.986301319385650020, 0.986293070470166010, 0.986284819088949490, 0.986276565242021010, 0.986268308929401090, 0.986260050151110400, +0.986251788907169580, 0.986243525197599280, 0.986235259022419930, 0.986226990381652730, 0.986218719275318010, 0.986210445703436410, 0.986202169666028810, 0.986193891163115730, +0.986185610194717950, 0.986177326760856120, 0.986169040861550770, 0.986160752496823000, 0.986152461666693460, 0.986144168371182680, 0.986135872610311440, 0.986127574384100590, +0.986119273692570800, 0.986110970535742700, 0.986102664913637180, 0.986094356826275110, 0.986086046273677130, 0.986077733255864010, 0.986069417772856620, 0.986061099824675600, +0.986052779411341840, 0.986044456532876090, 0.986036131189299230, 0.986027803380632120, 0.986019473106895530, 0.986011140368110220, 0.986002805164296950, 0.985994467495476810, +0.985986127361670460, 0.985977784762898660, 0.985969439699182490, 0.985961092170542730, 0.985952742177000240, 0.985944389718576010, 0.985936034795290680, 0.985927677407165250, +0.985919317554220580, 0.985910955236477650, 0.985902590453957450, 0.985894223206680740, 0.985885853494668400, 0.985877481317941510, 0.985869106676520830, 0.985860729570427470, +0.985852349999682190, 0.985843967964306070, 0.985835583464319990, 0.985827196499745040, 0.985818807070602100, 0.985810415176912150, 0.985802020818696170, 0.985793623995975030, +0.985785224708769840, 0.985776822957101670, 0.985768418740991410, 0.985760012060460040, 0.985751602915528770, 0.985743191306218460, 0.985734777232550210, 0.985726360694544780, +0.985717941692223600, 0.985709520225607650, 0.985701096294717800, 0.985692669899575270, 0.985684241040201140, 0.985675809716616280, 0.985667375928841900, 0.985658939676898990, +0.985650500960808860, 0.985642059780592490, 0.985633616136270980, 0.985625170027865430, 0.985616721455396920, 0.985608270418886660, 0.985599816918355630, 0.985591360953824940, +0.985582902525316110, 0.985574441632849910, 0.985565978276447650, 0.985557512456130440, 0.985549044171919460, 0.985540573423835830, 0.985532100211900630, 0.985523624536135290, +0.985515146396561010, 0.985506665793198790, 0.985498182726069930, 0.985489697195195520, 0.985481209200597010, 0.985472718742295360, 0.985464225820311790, 0.985455730434667830, +0.985447232585384580, 0.985438732272483130, 0.985430229495985020, 0.985421724255911240, 0.985413216552283090, 0.985404706385121900, 0.985396193754448980, 0.985387678660285650, +0.985379161102653000, 0.985370641081572570, 0.985362118597065460, 0.985353593649153090, 0.985345066237856780, 0.985336536363197620, 0.985328004025197270, 0.985319469223876810, +0.985310931959257790, 0.985302392231361400, 0.985293850040209080, 0.985285305385822150, 0.985276758268221920, 0.985268208687429590, 0.985259656643466930, 0.985251102136355140, +0.985242545166115650, 0.985233985732769660, 0.985225423836338820, 0.985216859476844340, 0.985208292654307650, 0.985199723368750280, 0.985191151620193660, 0.985182577408659220, +0.985174000734168280, 0.985165421596742360, 0.985156839996402800, 0.985148255933171240, 0.985139669407068870, 0.985131080418117370, 0.985122488966338250, 0.985113895051752950, +0.985105298674382900, 0.985096699834249630, 0.985088098531374470, 0.985079494765779050, 0.985070888537485030, 0.985062279846513730, 0.985053668692886800, 0.985045055076625650, +0.985036438997751840, 0.985027820456287010, 0.985019199452252580, 0.985010575985669990, 0.985001950056561100, 0.984993321664947350, 0.984984690810850380, 0.984976057494291620, +0.984967421715292720, 0.984958783473875220, 0.984950142770060770, 0.984941499603870900, 0.984932853975327370, 0.984924205884451620, 0.984915555331265510, 0.984906902315790480, +0.984898246838048160, 0.984889588898060220, 0.984880928495848070, 0.984872265631433930, 0.984863600304838990, 0.984854932516085140, 0.984846262265193890, 0.984837589552187030, +0.984828914377086200, 0.984820236739913040, 0.984811556640689200, 0.984802874079436560, 0.984794189056176770, 0.984785501570931480, 0.984776811623722440, 0.984768119214571410, +0.984759424343500060, 0.984750727010530120, 0.984742027215683270, 0.984733324958981470, 0.984724620240446270, 0.984715913060099650, 0.984707203417963250, 0.984698491314058730, +0.984689776748408070, 0.984681059721032810, 0.984672340231955050, 0.984663618281196420, 0.984654893868778800, 0.984646166994723850, 0.984637437659053540, 0.984628705861789630, +0.984619971602954000, 0.984611234882568190, 0.984602495700654500, 0.984593754057234590, 0.984585009952330230, 0.984576263385963490, 0.984567514358155930, 0.984558762868929630, +0.984550008918306350, 0.984541252506308080, 0.984532493632956810, 0.984523732298274170, 0.984514968502282260, 0.984506202245002960, 0.984497433526458130, 0.984488662346669760, +0.984479888705659500, 0.984471112603449770, 0.984462334040062110, 0.984453553015518730, 0.984444769529841500, 0.984435983583052290, 0.984427195175173080, 0.984418404306225960, +0.984409610976232590, 0.984400815185215380, 0.984392016933196220, 0.984383216220196980, 0.984374413046239630, 0.984365607411346270, 0.984356799315538880, 0.984347988758839440, +0.984339175741270060, 0.984330360262852810, 0.984321542323609580, 0.984312721923562560, 0.984303899062733740, 0.984295073741145220, 0.984286245958818970, 0.984277415715776870, +0.984268583012041450, 0.984259747847634590, 0.984250910222578380, 0.984242070136894910, 0.984233227590606160, 0.984224382583734460, 0.984215535116301670, 0.984206685188329990, +0.984197832799841740, 0.984188977950858910, 0.984180120641403590, 0.984171260871497980, 0.984162398641164280, 0.984153533950424600, 0.984144666799300790, 0.984135797187815520, +0.984126925115990870, 0.984118050583848820, 0.984109173591411590, 0.984100294138701480, 0.984091412225740700, 0.984082527852551350, 0.984073641019155510, 0.984064751725575730, +0.984055859971833980, 0.984046965757952700, 0.984038069083953970, 0.984029169949860120, 0.984020268355693230, 0.984011364301475620, 0.984002457787229720, 0.983993548812977630, +0.983984637378741760, 0.983975723484544210, 0.983966807130407410, 0.983957888316353560, 0.983948967042404980, 0.983940043308583870, 0.983931117114912770, 0.983922188461413880, +0.983913257348109530, 0.983904323775022020, 0.983895387742173670, 0.983886449249586900, 0.983877508297284040, 0.983868564885287180, 0.983859619013619180, 0.983850670682302030, +0.983841719891358270, 0.983832766640810100, 0.983823810930680160, 0.983814852760990570, 0.983805892131763730, 0.983796929043022290, 0.983787963494788590, 0.983778995487085030, +0.983770025019933820, 0.983761052093357740, 0.983752076707378850, 0.983743098862019830, 0.983734118557302970, 0.983725135793250940, 0.983716150569886040, 0.983707162887230810, +0.983698172745307580, 0.983689180144138970, 0.983680185083747440, 0.983671187564155500, 0.983662187585385260, 0.983653185147459920, 0.983644180250401460, 0.983635172894232630, +0.983626163078975770, 0.983617150804653620, 0.983608136071288500, 0.983599118878902940, 0.983590099227519720, 0.983581077117161250, 0.983572052547850180, 0.983563025519608840, +0.983553996032459970, 0.983544964086426220, 0.983535929681529920, 0.983526892817793710, 0.983517853495240350, 0.983508811713892480, 0.983499767473772550, 0.983490720774903070, +0.983481671617306930, 0.983472620001006550, 0.983463565926024460, 0.983454509392383660, 0.983445450400106560, 0.983436388949215920, 0.983427325039734180, 0.983418258671684200, +0.983409189845088520, 0.983400118559969890, 0.983391044816350760, 0.983381968614254310, 0.983372889953702870, 0.983363808834719190, 0.983354725257325920, 0.983345639221545940, +0.983336550727401780, 0.983327459774916310, 0.983318366364112070, 0.983309270495011930, 0.983300172167638760, 0.983291071382015100, 0.983281968138163710, 0.983272862436107450, +0.983263754275869100, 0.983254643657471170, 0.983245530580936780, 0.983236415046288450, 0.983227297053549280, 0.983218176602741690, 0.983209053693888780, 0.983199928327013200, +0.983190800502137810, 0.983181670219285260, 0.983172537478478660, 0.983163402279740750, 0.983154264623094300, 0.983145124508562170, 0.983135981936167250, 0.983126836905932390, +0.983117689417880470, 0.983108539472034140, 0.983099387068416600, 0.983090232207050610, 0.983081074887959040, 0.983071915111164870, 0.983062752876690760, 0.983053588184559900, +0.983044421034794840, 0.983035251427418880, 0.983026079362454790, 0.983016904839925540, 0.983007727859854020, 0.982998548422263200, 0.982989366527175950, 0.982980182174615360, +0.982970995364604080, 0.982961806097165440, 0.982952614372322400, 0.982943420190097730, 0.982934223550514630, 0.982925024453595860, 0.982915822899364520, 0.982906618887843480, +0.982897412419056150, 0.982888203493025190, 0.982878992109773810, 0.982869778269324870, 0.982860561971701460, 0.982851343216926690, 0.982842122005023630, 0.982832898336014950, +0.982823672209924280, 0.982814443626774500, 0.982805212586588480, 0.982795979089389540, 0.982786743135200540, 0.982777504724044790, 0.982768263855945180, 0.982759020530924790, +0.982749774749007040, 0.982740526510214820, 0.982731275814571310, 0.982722022662099630, 0.982712767052822840, 0.982703508986764170, 0.982694248463946480, 0.982684985484393430, +0.982675720048127870, 0.982666452155173010, 0.982657181805552060, 0.982647908999288110, 0.982638633736404480, 0.982629356016924140, 0.982620075840870300, 0.982610793208266500, +0.982601508119135600, 0.982592220573501040, 0.982582930571385900, 0.982573638112813400, 0.982564343197806830, 0.982555045826389310, 0.982545745998584130, 0.982536443714414730, +0.982527138973904200, 0.982517831777075860, 0.982508522123952900, 0.982499210014558640, 0.982489895448916290, 0.982480578427049170, 0.982471258948980690, 0.982461937014734050, +0.982452612624332590, 0.982443285777799600, 0.982433956475158410, 0.982424624716432330, 0.982415290501644670, 0.982405953830818630, 0.982396614703977880, 0.982387273121145600, +0.982377929082345110, 0.982368582587599740, 0.982359233636933000, 0.982349882230368120, 0.982340528367928400, 0.982331172049637600, 0.982321813275518820, 0.982312452045595470, +0.982303088359891000, 0.982293722218428810, 0.982284353621232340, 0.982274982568324910, 0.982265609059729930, 0.982256233095471170, 0.982246854675571710, 0.982237473800055110, +0.982228090468944880, 0.982218704682264350, 0.982209316440037170, 0.982199925742286650, 0.982190532589036100, 0.982181136980309510, 0.982171738916129970, 0.982162338396521120, +0.982152935421506390, 0.982143529991109320, 0.982134122105353450, 0.982124711764262080, 0.982115298967859210, 0.982105883716168030, 0.982096466009212080, 0.982087045847015010, +0.982077623229600350, 0.982068198156991530, 0.982058770629212320, 0.982049340646286020, 0.982039908208236500, 0.982030473315087190, 0.982021035966861740, 0.982011596163583690, +0.982002153905276560, 0.981992709191964240, 0.981983262023669810, 0.981973812400417480, 0.981964360322230560, 0.981954905789132800, 0.981945448801147760, 0.981935989358299070, +0.981926527460610380, 0.981917063108105450, 0.981907596300807590, 0.981898127038741020, 0.981888655321929040, 0.981879181150395520, 0.981869704524164000, 0.981860225443258240, +0.981850743907701880, 0.981841259917518690, 0.981831773472732210, 0.981822284573366400, 0.981812793219444810, 0.981803299410991430, 0.981793803148029660, 0.981784304430583400, +0.981774803258676390, 0.981765299632332280, 0.981755793551575050, 0.981746285016428240, 0.981736774026915840, 0.981727260583061480, 0.981717744684888930, 0.981708226332422050, +0.981698705525684500, 0.981689182264700140, 0.981679656549492960, 0.981670128380086600, 0.981660597756505050, 0.981651064678771830, 0.981641529146911050, 0.981631991160946460, +0.981622450720901930, 0.981612907826801000, 0.981603362478667970, 0.981593814676526620, 0.981584264420400700, 0.981574711710314070, 0.981565156546290730, 0.981555598928354420, +0.981546038856529020, 0.981536476330838630, 0.981526911351307100, 0.981517343917958310, 0.981507774030816130, 0.981498201689904540, 0.981488626895247410, 0.981479049646868720, +0.981469469944792230, 0.981459887789042250, 0.981450303179642550, 0.981440716116617100, 0.981431126599989770, 0.981421534629784760, 0.981411940206025850, 0.981402343328736880, +0.981392743997942300, 0.981383142213665850, 0.981373537975931520, 0.981363931284763290, 0.981354322140185360, 0.981344710542221500, 0.981335096490896010, 0.981325479986232430, +0.981315861028255410, 0.981306239616988820, 0.981296615752456520, 0.981286989434682730, 0.981277360663691420, 0.981267729439506690, 0.981258095762152730, 0.981248459631653300, +0.981238821048032950, 0.981229180011315430, 0.981219536521525050, 0.981209890578685790, 0.981200242182821870, 0.981190591333957360, 0.981180938032116150, 0.981171282277322750, +0.981161624069601170, 0.981151963408975480, 0.981142300295469890, 0.981132634729108610, 0.981122966709915720, 0.981113296237915430, 0.981103623313131610, 0.981093947935589020, +0.981084270105311520, 0.981074589822323430, 0.981064907086648730, 0.981055221898311850, 0.981045534257336980, 0.981035844163748120, 0.981026151617569560, 0.981016456618825750, +0.981006759167540880, 0.980997059263739040, 0.980987356907444650, 0.980977652098681710, 0.980967944837474740, 0.980958235123847720, 0.980948522957825310, 0.980938808339431590, +0.980929091268690770, 0.980919371745627380, 0.980909649770265400, 0.980899925342629380, 0.980890198462743500, 0.980880469130631980, 0.980870737346319470, 0.980861003109830150, +0.980851266421188250, 0.980841527280418180, 0.980831785687544370, 0.980822041642591010, 0.980812295145582440, 0.980802546196543280, 0.980792794795497750, 0.980783040942470260, +0.980773284637485140, 0.980763525880566810, 0.980753764671739690, 0.980744001011028100, 0.980734234898456460, 0.980724466334049310, 0.980714695317830950, 0.980704921849825940, +0.980695145930058580, 0.980685367558553400, 0.980675586735334730, 0.980665803460427200, 0.980656017733854910, 0.980646229555642730, 0.980636438925815090, 0.980626645844396180, +0.980616850311410770, 0.980607052326883280, 0.980597251890838020, 0.980587449003299530, 0.980577643664292680, 0.980567835873841550, 0.980558025631970920, 0.980548212938705310, +0.980538397794069040, 0.980528580198086750, 0.980518760150783100, 0.980508937652182390, 0.980499112702309490, 0.980489285301188730, 0.980479455448844850, 0.980469623145302280, +0.980459788390585670, 0.980449951184719670, 0.980440111527728700, 0.980430269419637290, 0.980420424860470320, 0.980410577850252430, 0.980400728389007940, 0.980390876476761710, +0.980381022113538390, 0.980371165299362410, 0.980361306034258310, 0.980351444318251160, 0.980341580151365410, 0.980331713533625690, 0.980321844465056660, 0.980311972945683060, +0.980302098975529560, 0.980292222554620780, 0.980282343682981170, 0.980272462360636030, 0.980262578587609680, 0.980252692363926870, 0.980242803689612360, 0.980232912564690810, +0.980223018989186960, 0.980213122963125460, 0.980203224486531190, 0.980193323559429010, 0.980183420181843460, 0.980173514353799400, 0.980163606075321490, 0.980153695346434590, +0.980143782167163470, 0.980133866537532650, 0.980123948457567450, 0.980114027927292300, 0.980104104946732060, 0.980094179515911600, 0.980084251634855800, 0.980074321303589180, +0.980064388522136840, 0.980054453290523430, 0.980044515608773930, 0.980034575476913190, 0.980024632894966110, 0.980014687862957310, 0.980004740380911900, 0.979994790448854510, +0.979984838066810030, 0.979974883234803640, 0.979964925952860110, 0.979954966221004200, 0.979945004039260880, 0.979935039407655030, 0.979925072326211620, 0.979915102794955530, +0.979905130813911400, 0.979895156383104760, 0.979885179502560160, 0.979875200172302560, 0.979865218392357070, 0.979855234162748450, 0.979845247483501880, 0.979835258354642020, +0.979825266776193970, 0.979815272748182810, 0.979805276270633630, 0.979795277343571080, 0.979785275967020470, 0.979775272141006570, 0.979765265865554570, 0.979755257140689230, +0.979745245966435860, 0.979735232342819450, 0.979725216269864860, 0.979715197747597300, 0.979705176776041740, 0.979695153355223280, 0.979685127485166900, 0.979675099165897460, +0.979665068397440500, 0.979655035179820890, 0.979644999513063720, 0.979634961397193970, 0.979624920832236850, 0.979614877818217430, 0.979604832355160720, 0.979594784443092000, +0.979584734082036390, 0.979574681272018850, 0.979564626013064710, 0.979554568305198940, 0.979544508148446740, 0.979534445542833310, 0.979524380488383640, 0.979514312985123040, +0.979504243033076820, 0.979494170632269960, 0.979484095782727550, 0.979474018484475020, 0.979463938737537450, 0.979453856541939950, 0.979443771897707700, 0.979433684804866140, +0.979423595263440470, 0.979413503273455780, 0.979403408834937260, 0.979393311947910240, 0.979383212612400020, 0.979373110828431480, 0.979363006596030370, 0.979352899915221790, +0.979342790786030930, 0.979332679208483100, 0.979322565182603630, 0.979312448708417600, 0.979302329785950550, 0.979292208415227570, 0.979282084596274080, 0.979271958329115510, +0.979261829613777060, 0.979251698450283930, 0.979241564838661650, 0.979231428778935320, 0.979221290271130360, 0.979211149315272310, 0.979201005911386370, 0.979190860059497960, +0.979180711759632390, 0.979170561011815100, 0.979160407816071280, 0.979150252172426570, 0.979140094080905960, 0.979129933541535320, 0.979119770554339850, 0.979109605119344970, +0.979099437236576000, 0.979089266906058580, 0.979079094127817910, 0.979068918901879410, 0.979058741228268530, 0.979048561107011000, 0.979038378538132030, 0.979028193521657150, +0.979018006057611800, 0.979007816146021390, 0.978997623786911460, 0.978987428980307330, 0.978977231726234740, 0.978967032024719020, 0.978956829875785810, 0.978946625279460520, +0.978936418235768710, 0.978926208744735790, 0.978915996806387300, 0.978905782420748770, 0.978895565587845850, 0.978885346307704070, 0.978875124580348870, 0.978864900405805870, +0.978854673784100740, 0.978844444715258780, 0.978834213199305750, 0.978823979236267070, 0.978813742826168510, 0.978803503969035700, 0.978793262664894080, 0.978783018913769290, +0.978772772715687080, 0.978762524070672770, 0.978752272978752000, 0.978742019439950760, 0.978731763454294580, 0.978721505021808880, 0.978711244142519420, 0.978700980816451850, +0.978690715043631810, 0.978680446824084950, 0.978670176157836910, 0.978659903044913570, 0.978649627485340460, 0.978639349479143220, 0.978629069026347720, 0.978618786126979500, +0.978608500781064210, 0.978598212988627590, 0.978587922749695640, 0.978577630064293880, 0.978567334932447960, 0.978557037354183870, 0.978546737329527020, 0.978536434858503390, +0.978526129941138630, 0.978515822577458510, 0.978505512767488870, 0.978495200511255490, 0.978484885808784120, 0.978474568660100520, 0.978464249065230440, 0.978453927024199870, +0.978443602537034440, 0.978433275603759700, 0.978422946224402070, 0.978412614398987080, 0.978402280127540490, 0.978391943410088280, 0.978381604246656210, 0.978371262637270030, +0.978360918581955620, 0.978350572080739060, 0.978340223133645990, 0.978329871740702520, 0.978319517901934280, 0.978309161617367250, 0.978298802887027310, 0.978288441710940320, +0.978278078089132140, 0.978267712021628880, 0.978257343508456390, 0.978246972549640550, 0.978236599145207220, 0.978226223295182380, 0.978215844999592020, 0.978205464258462000, +0.978195081071818180, 0.978184695439686890, 0.978174307362093880, 0.978163916839065010, 0.978153523870626370, 0.978143128456803960, 0.978132730597623620, 0.978122330293111350, +0.978111927543293460, 0.978101522348195700, 0.978091114707844160, 0.978080704622264820, 0.978070292091483770, 0.978059877115527000, 0.978049459694420480, 0.978039039828190070, +0.978028617516862320, 0.978018192760463090, 0.978007765559018250, 0.977997335912554110, 0.977986903821096540, 0.977976469284671750, 0.977966032303305590, 0.977955592877024600, +0.977945151005854550, 0.977934706689821630, 0.977924259928951930, 0.977913810723271660, 0.977903359072806790, 0.977892904977583520, 0.977882448437627840, 0.977871989452966270, +0.977861528023624690, 0.977851064149629190, 0.977840597831006190, 0.977830129067781550, 0.977819657859981710, 0.977809184207632630, 0.977798708110760420, 0.977788229569391710, +0.977777748583552380, 0.977767265153268620, 0.977756779278566750, 0.977746290959472960, 0.977735800196013360, 0.977725306988214140, 0.977714811336101830, 0.977704313239702530, +0.977693812699042430, 0.977683309714147740, 0.977672804285044770, 0.977662296411759830, 0.977651786094319130, 0.977641273332748860, 0.977630758127075560, 0.977620240477325320, +0.977609720383524450, 0.977599197845699370, 0.977588672863876180, 0.977578145438081410, 0.977567615568341260, 0.977557083254681820, 0.977546548497129960, 0.977536011295711660, +0.977525471650453340, 0.977514929561381420, 0.977504385028522100, 0.977493838051901820, 0.977483288631546770, 0.977472736767483700, 0.977462182459738700, 0.977451625708338320, +0.977441066513308860, 0.977430504874676750, 0.977419940792468410, 0.977409374266710150, 0.977398805297428290, 0.977388233884649680, 0.977377660028400430, 0.977367083728706950, +0.977356504985595900, 0.977345923799093460, 0.977335340169226300, 0.977324754096020600, 0.977314165579503120, 0.977303574619700300, 0.977292981216638550, 0.977282385370344290, +0.977271787080844170, 0.977261186348164500, 0.977250583172331820, 0.977239977553372550, 0.977229369491313560, 0.977218758986181160, 0.977208146038001770, 0.977197530646802040, +0.977186912812608500, 0.977176292535447690, 0.977165669815346140, 0.977155044652330270, 0.977144417046426960, 0.977133786997662510, 0.977123154506063680, 0.977112519571657010, +0.977101882194468920, 0.977091242374526270, 0.977080600111855270, 0.977069955406482890, 0.977059308258435680, 0.977048658667740160, 0.977038006634422970, 0.977027352158510890, +0.977016695240030320, 0.977006035879008030, 0.976995374075470550, 0.976984709829444740, 0.976974043140957150, 0.976963374010034520, 0.976952702436703400, 0.976942028420990540, +0.976931351962922580, 0.976920673062526280, 0.976909991719828060, 0.976899307934855130, 0.976888621707633800, 0.976877933038191040, 0.976867241926553390, 0.976856548372747710, +0.976845852376800550, 0.976835153938738650, 0.976824453058589000, 0.976813749736378250, 0.976803043972133130, 0.976792335765880430, 0.976781625117646770, 0.976770912027459140, +0.976760196495344290, 0.976749478521328650, 0.976738758105439530, 0.976728035247703570, 0.976717309948147430, 0.976706582206798070, 0.976695852023682250, 0.976685119398826850, +0.976674384332258390, 0.976663646824004190, 0.976652906874090900, 0.976642164482545260, 0.976631419649394260, 0.976620672374664770, 0.976609922658383530, 0.976599170500577430, +0.976588415901273320, 0.976577658860498300, 0.976566899378279230, 0.976556137454642760, 0.976545373089616090, 0.976534606283225860, 0.976523837035499160, 0.976513065346462870, +0.976502291216143850, 0.976491514644569180, 0.976480735631765630, 0.976469954177760390, 0.976459170282580220, 0.976448383946252110, 0.976437595168803020, 0.976426803950259830, +0.976416010290649730, 0.976405214189999700, 0.976394415648336510, 0.976383614665687350, 0.976372811242079200, 0.976362005377539030, 0.976351197072093720, 0.976340386325770360, +0.976329573138596140, 0.976318757510598050, 0.976307939441803050, 0.976297118932238140, 0.976286295981930510, 0.976275470590907140, 0.976264642759194780, 0.976253812486821080, +0.976242979773812910, 0.976232144620197250, 0.976221307026001180, 0.976210466991251910, 0.976199624515976530, 0.976188779600202010, 0.976177932243955330, 0.976167082447264020, +0.976156230210154960, 0.976145375532655460, 0.976134518414792370, 0.976123658856593130, 0.976112796858084610, 0.976101932419294220, 0.976091065540248710, 0.976080196220975750, +0.976069324461502410, 0.976058450261855560, 0.976047573622062740, 0.976036694542150920, 0.976025813022147410, 0.976014929062079100, 0.976004042661973710, 0.975993153821858250, +0.975982262541759900, 0.975971368821705880, 0.975960472661723370, 0.975949574061839690, 0.975938673022082150, 0.975927769542477730, 0.975916863623053970, 0.975905955263838170, +0.975895044464857420, 0.975884131226139150, 0.975873215547710450, 0.975862297429598740, 0.975851376871831320, 0.975840453874435190, 0.975829528437438200, 0.975818600560867330, +0.975807670244750010, 0.975796737489113440, 0.975785802293985150, 0.975774864659392230, 0.975763924585361990, 0.975752982071922180, 0.975742037119099900, 0.975731089726922460, +0.975720139895417390, 0.975709187624611900, 0.975698232914533500, 0.975687275765209530, 0.975676316176667060, 0.975665354148934070, 0.975654389682037770, 0.975643422776005350, +0.975632453430864470, 0.975621481646642420, 0.975610507423366750, 0.975599530761064540, 0.975588551659763660, 0.975577570119491420, 0.975566586140275360, 0.975555599722142670, +0.975544610865121120, 0.975533619569238010, 0.975522625834520760, 0.975511629660996920, 0.975500631048694110, 0.975489629997639660, 0.975478626507861210, 0.975467620579386190, +0.975456612212242110, 0.975445601406456530, 0.975434588162056860, 0.975423572479070630, 0.975412554357525610, 0.975401533797449210, 0.975390510798868960, 0.975379485361812400, +0.975368457486307180, 0.975357427172380830, 0.975346394420060660, 0.975335359229374750, 0.975324321600350430, 0.975313281533015330, 0.975302239027396990, 0.975291194083523050, +0.975280146701421160, 0.975269096881118850, 0.975258044622643650, 0.975246989926023540, 0.975235932791285950, 0.975224873218458520, 0.975213811207568890, 0.975202746758644820, +0.975191679871713730, 0.975180610546803490, 0.975169538783941640, 0.975158464583156030, 0.975147387944474310, 0.975136308867924130, 0.975125227353533130, 0.975114143401329070, +0.975103057011339700, 0.975091968183592450, 0.975080876918115400, 0.975069783214936310, 0.975058687074082610, 0.975047588495582260, 0.975036487479463030, 0.975025384025752450, +0.975014278134478500, 0.975003169805668590, 0.974992059039351040, 0.974980945835553280, 0.974969830194303170, 0.974958712115628460, 0.974947591599557020, 0.974936468646116490, +0.974925343255334750, 0.974914215427239770, 0.974903085161859200, 0.974891952459221000, 0.974880817319352940, 0.974869679742282780, 0.974858539728038380, 0.974847397276647710, +0.974836252388138310, 0.974825105062538500, 0.974813955299875910, 0.974802803100178420, 0.974791648463473990, 0.974780491389790390, 0.974769331879155490, 0.974758169931597360, +0.974747005547143550, 0.974735838725822480, 0.974724669467661790, 0.974713497772689450, 0.974702323640933340, 0.974691147072421440, 0.974679968067181600, 0.974668786625241700, +0.974657602746630050, 0.974646416431374400, 0.974635227679502720, 0.974624036491042900, 0.974612842866023010, 0.974601646804471030, 0.974590448306414950, 0.974579247371882510, +0.974568044000902130, 0.974556838193501700, 0.974545629949709170, 0.974534419269552530, 0.974523206153059870, 0.974511990600259280, 0.974500772611178620, 0.974489552185845760, +0.974478329324289350, 0.974467104026537020, 0.974455876292616980, 0.974444646122557210, 0.974433413516385900, 0.974422178474131040, 0.974410940995820480, 0.974399701081482770, +0.974388458731145880, 0.974377213944837780, 0.974365966722586680, 0.974354717064420670, 0.974343464970367830, 0.974332210440456370, 0.974320953474714150, 0.974309694073169700, +0.974298432235851110, 0.974287167962786360, 0.974275901254003760, 0.974264632109531400, 0.974253360529397370, 0.974242086513629870, 0.974230810062257310, 0.974219531175307680, +0.974208249852809290, 0.974196966094790230, 0.974185679901278690, 0.974174391272303100, 0.974163100207891430, 0.974151806708071780, 0.974140510772872890, 0.974129212402322750, +0.974117911596449450, 0.974106608355281510, 0.974095302678846920, 0.974083994567174210, 0.974072684020291460, 0.974061371038226760, 0.974050055621008880, 0.974038737768665790, +0.974027417481225900, 0.974016094758717530, 0.974004769601168880, 0.973993442008608270, 0.973982111981063880, 0.973970779518564480, 0.973959444621138040, 0.973948107288812980, +0.973936767521617730, 0.973925425319580480, 0.973914080682729670, 0.973902733611093700, 0.973891384104700770, 0.973880032163579430, 0.973868677787758100, 0.973857320977265070, +0.973845961732128670, 0.973834600052377430, 0.973823235938039770, 0.973811869389143880, 0.973800500405718190, 0.973789128987791460, 0.973777755135391890, 0.973766378848547890, +0.973755000127288000, 0.973743618971640520, 0.973732235381634110, 0.973720849357296860, 0.973709460898657620, 0.973698070005744820, 0.973686676678586770, 0.973675280917212120, +0.973663882721649280, 0.973652482091926670, 0.973641079028072840, 0.973629673530116090, 0.973618265598085400, 0.973606855232009070, 0.973595442431915650, 0.973584027197833550, +0.973572609529791300, 0.973561189427817660, 0.973549766891940840, 0.973538341922189690, 0.973526914518592860, 0.973515484681178660, 0.973504052409975620, 0.973492617705012610, +0.973481180566318050, 0.973469740993920470, 0.973458298987848410, 0.973446854548130740, 0.973435407674795970, 0.973423958367872650, 0.973412506627389430, 0.973401052453374940, +0.973389595845857940, 0.973378136804866840, 0.973366675330430200, 0.973355211422577080, 0.973343745081335920, 0.973332276306735470, 0.973320805098804250, 0.973309331457571040, +0.973297855383064460, 0.973286376875313050, 0.973274895934346020, 0.973263412560191670, 0.973251926752878750, 0.973240438512436020, 0.973228947838892240, 0.973217454732276050, +0.973205959192616320, 0.973194461219941350, 0.973182960814280570, 0.973171457975662290, 0.973159952704115370, 0.973148444999668570, 0.973136934862350760, 0.973125422292190460, +0.973113907289216540, 0.973102389853457980, 0.973090869984943430, 0.973079347683701750, 0.973067822949761680, 0.973056295783152110, 0.973044766183901680, 0.973033234152039460, +0.973021699687593890, 0.973010162790594270, 0.972998623461069250, 0.972987081699047680, 0.972975537504558340, 0.972963990877630190, 0.972952441818292100, 0.972940890326572940, +0.972929336402501340, 0.972917780046106520, 0.972906221257417330, 0.972894660036462520, 0.972883096383271080, 0.972871530297871990, 0.972859961780293990, 0.972848390830565850, +0.972836817448716970, 0.972825241634776130, 0.972813663388772070, 0.972802082710733870, 0.972790499600690530, 0.972778914058670900, 0.972767326084703950, 0.972755735678818570, +0.972744142841044050, 0.972732547571409030, 0.972720949869942840, 0.972709349736674110, 0.972697747171632040, 0.972686142174845720, 0.972674534746343910, 0.972662924886155580, +0.972651312594310260, 0.972639697870836480, 0.972628080715763570, 0.972616461129120480, 0.972604839110936200, 0.972593214661239820, 0.972581587780060210, 0.972569958467426780, +0.972558326723368500, 0.972546692547914370, 0.972535055941093570, 0.972523416902935090, 0.972511775433468120, 0.972500131532721630, 0.972488485200724620, 0.972476836437506600, +0.972465185243096550, 0.972453531617523570, 0.972441875560816630, 0.972430217073005030, 0.972418556154117990, 0.972406892804184240, 0.972395227023233550, 0.972383558811294790, +0.972371888168397040, 0.972360215094569710, 0.972348539589841690, 0.972336861654242380, 0.972325181287800990, 0.972313498490546380, 0.972301813262508200, 0.972290125603715530, +0.972278435514197570, 0.972266742993983520, 0.972255048043102480, 0.972243350661583960, 0.972231650849457060, 0.972219948606750760, 0.972208243933494810, 0.972196536829718290, +0.972184827295450420, 0.972173115330720480, 0.972161400935557700, 0.972149684109991470, 0.972137964854050800, 0.972126243167765520, 0.972114519051164530, 0.972102792504277220, +0.972091063527133040, 0.972079332119761050, 0.972067598282190800, 0.972055862014451600, 0.972044123316572530, 0.972032382188583340, 0.972020638630513130, 0.972008892642391430, +0.971997144224247430, 0.971985393376110670, 0.971973640098010350, 0.971961884389975880, 0.971950126252036580, 0.971938365684222090, 0.971926602686561720, 0.971914837259084900, +0.971903069401820920, 0.971891299114799320, 0.971879526398049420, 0.971867751251600520, 0.971855973675482490, 0.971844193669724520, 0.971832411234356040, 0.971820626369406470, +0.971808839074905450, 0.971797049350882180, 0.971785257197366410, 0.971773462614387240, 0.971761665601974630, 0.971749866160157900, 0.971738064288966470, 0.971726259988429870, +0.971714453258577640, 0.971702644099439290, 0.971690832511044160, 0.971679018493422090, 0.971667202046602510, 0.971655383170614840, 0.971643561865488840, 0.971631738131253810, +0.971619911967939510, 0.971608083375575360, 0.971596252354190890, 0.971584418903815970, 0.971572583024480020, 0.971560744716212570, 0.971548903979043250, 0.971537060813001730, +0.971525215218117520, 0.971513367194420270, 0.971501516741939410, 0.971489663860704900, 0.971477808550746280, 0.971465950812093190, 0.971454090644775170, 0.971442228048821850, +0.971430363024263110, 0.971418495571128140, 0.971406625689447250, 0.971394753379249740, 0.971382878640565270, 0.971371001473423700, 0.971359121877854560, 0.971347239853887710, +0.971335355401552690, 0.971323468520879140, 0.971311579211897040, 0.971299687474636020, 0.971287793309125850, 0.971275896715396050, 0.971263997693476600, 0.971252096243397260, +0.971240192365187550, 0.971228286058877120, 0.971216377324496280, 0.971204466162074450, 0.971192552571641500, 0.971180636553227060, 0.971168718106861120, 0.971156797232573420, +0.971144873930393390, 0.971132948200351450, 0.971121020042477130, 0.971109089456800300, 0.971097156443350820, 0.971085221002158330, 0.971073283133252810, 0.971061342836664010, +0.971049400112421800, 0.971037454960556160, 0.971025507381096940, 0.971013557374074020, 0.971001604939517150, 0.970989650077456190, 0.970977692787921230, 0.970965733070941810, +0.970953770926548220, 0.970941806354770120, 0.970929839355637700, 0.970917869929180500, 0.970905898075428710, 0.970893923794412190, 0.970881947086160820, 0.970869967950704460, +0.970857986388073300, 0.970846002398297210, 0.970834015981406060, 0.970822027137429930, 0.970810035866398800, 0.970798042168342420, 0.970786046043291000, 0.970774047491274270, +0.970762046512322670, 0.970750043106465950, 0.970738037273734090, 0.970726029014157170, 0.970714018327765050, 0.970702005214588050, 0.970689989674655700, 0.970677971707998630, +0.970665951314646720, 0.970653928494629840, 0.970641903247978170, 0.970629875574721690, 0.970617845474890610, 0.970605812948514780, 0.970593777995624300, 0.970581740616249580, +0.970569700810420600, 0.970557658578167230, 0.970545613919519770, 0.970533566834508310, 0.970521517323162830, 0.970509465385513640, 0.970497411021590590, 0.970485354231424120, +0.970473295015044310, 0.970461233372481360, 0.970449169303765240, 0.970437102808926260, 0.970425033887994390, 0.970412962540999850, 0.970400888767973040, 0.970388812568944050, +0.970376733943943080, 0.970364652893000220, 0.970352569416145670, 0.970340483513409740, 0.970328395184822610, 0.970316304430414280, 0.970304211250215490, 0.970292115644255990, +0.970280017612566330, 0.970267917155176570, 0.970255814272117050, 0.970243708963418050, 0.970231601229109450, 0.970219491069222120, 0.970207378483786130, 0.970195263472831580, +0.970183146036388890, 0.970171026174488360, 0.970158903887160310, 0.970146779174434930, 0.970134652036342420, 0.970122522472913530, 0.970110390484178240, 0.970098256070167090, +0.970086119230910150, 0.970073979966438070, 0.970061838276780940, 0.970049694161969290, 0.970037547622033090, 0.970025398657003320, 0.970013247266909960, 0.970001093451783650, +0.969988937211654470, 0.969976778546552950, 0.969964617456509530, 0.969952453941554380, 0.969940288001718280, 0.969928119637031410, 0.969915948847524300, 0.969903775633227270, +0.969891599994170850, 0.969879421930385340, 0.969867241441901400, 0.969855058528749090, 0.969842873190959300, 0.969830685428562430, 0.969818495241588810, 0.969806302630068950, +0.969794107594033280, 0.969781910133512340, 0.969769710248536750, 0.969757507939136510, 0.969745303205342800, 0.969733096047185830, 0.969720886464696120, 0.969708674457904210, +0.969696460026840620, 0.969684243171535790, 0.969672023892020230, 0.969659802188324820, 0.969647578060479850, 0.969635351508515990, 0.969623122532463740, 0.969610891132353660, +0.969598657308216370, 0.969586421060082420, 0.969574182387982210, 0.969561941291946730, 0.969549697772006500, 0.969537451828191950, 0.969525203460533720, 0.969512952669062570, +0.969500699453809010, 0.969488443814803480, 0.969476185752077060, 0.969463925265660160, 0.969451662355583550, 0.969439397021877650, 0.969427129264573310, 0.969414859083701170, +0.969402586479291890, 0.969390311451375890, 0.969378033999984230, 0.969365754125147690, 0.969353471826896570, 0.969341187105261960, 0.969328899960274270, 0.969316610391964370, +0.969304318400362910, 0.969292023985500410, 0.969279727147408180, 0.969267427886116530, 0.969255126201656330, 0.969242822094058320, 0.969230515563353270, 0.969218206609571920, +0.969205895232744810, 0.969193581432903240, 0.969181265210077750, 0.969168946564298970, 0.969156625495597890, 0.969144302004005250, 0.969131976089551820, 0.969119647752268550, +0.969107316992185890, 0.969094983809335120, 0.969082648203746900, 0.969070310175452090, 0.969057969724481440, 0.969045626850865930, 0.969033281554636310, 0.969020933835823330, +0.969008583694458190, 0.968996231130571650, 0.968983876144194460, 0.968971518735357580, 0.968959158904091900, 0.968946796650428380, 0.968934431974397880, 0.968922064876031050, +0.968909695355359200, 0.968897323412413190, 0.968884949047223890, 0.968872572259822150, 0.968860193050239070, 0.968847811418505510, 0.968835427364652340, 0.968823040888710410, +0.968810651990711040, 0.968798260670685200, 0.968785866928663530, 0.968773470764677350, 0.968761072178757400, 0.968748671170934770, 0.968736267741240220, 0.968723861889705270, +0.968711453616360680, 0.968699042921237430, 0.968686629804366590, 0.968674214265779150, 0.968661796305506200, 0.968649375923578690, 0.968636953120027620, 0.968624527894884400, +0.968612100248179790, 0.968599670179944860, 0.968587237690210930, 0.968574802779008760, 0.968562365446369640, 0.968549925692324680, 0.968537483516904610, 0.968525038920140970, +0.968512591902064850, 0.968500142462707210, 0.968487690602099270, 0.968475236320271990, 0.968462779617256690, 0.968450320493084220, 0.968437858947786220, 0.968425394981393460, +0.968412928593937350, 0.968400459785448860, 0.968387988555959200, 0.968375514905499560, 0.968363038834101130, 0.968350560341794900, 0.968338079428612500, 0.968325596094584910, +0.968313110339743320, 0.968300622164118940, 0.968288131567742960, 0.968275638550646690, 0.968263143112861210, 0.968250645254417950, 0.968238144975348100, 0.968225642275682970, +0.968213137155453650, 0.968200629614691550, 0.968188119653427880, 0.968175607271693830, 0.968163092469520590, 0.968150575246939820, 0.968138055603982580, 0.968125533540680320, +0.968113009057064100, 0.968100482153165460, 0.968087952829015610, 0.968075421084645840, 0.968062886920087240, 0.968050350335371680, 0.968037811330530350, 0.968025269905594340, +0.968012726060595300, 0.968000179795564300, 0.967987631110532990, 0.967975080005532230, 0.967962526480594110, 0.967949970535749600, 0.967937412171030240, 0.967924851386467330, +0.967912288182092300, 0.967899722557936440, 0.967887154514031400, 0.967874584050408160, 0.967862011167098800, 0.967849435864134300, 0.967836858141546300, 0.967824277999366100, +0.967811695437625240, 0.967799110456355140, 0.967786523055587210, 0.967773933235352770, 0.967761340995683780, 0.967748746336611340, 0.967736149258167090, 0.967723549760382440, +0.967710947843288930, 0.967698343506918080, 0.967685736751301100, 0.967673127576470060, 0.967660515982456170, 0.967647901969290960, 0.967635285537006060, 0.967622666685632900, +0.967610045415203120, 0.967597421725748250, 0.967584795617299490, 0.967572167089889020, 0.967559536143548170, 0.967546902778308460, 0.967534266994201420, 0.967521628791258800, +0.967508988169512140, 0.967496345128992630, 0.967483699669732580, 0.967471051791763290, 0.967458401495116420, 0.967445748779823480, 0.967433093645916120, 0.967420436093426090, +0.967407776122385040, 0.967395113732824160, 0.967382448924775870, 0.967369781698271370, 0.967357112053342520, 0.967344439990020730, 0.967331765508337990, 0.967319088608325720, +0.967306409290015770, 0.967293727553439680, 0.967281043398629300, 0.967268356825616400, 0.967255667834432620, 0.967242976425109700, 0.967230282597679290, 0.967217586352173250, +0.967204887688623010, 0.967192186607060630, 0.967179483107517890, 0.967166777190026530, 0.967154068854618080, 0.967141358101324510, 0.967128644930177580, 0.967115929341208940, +0.967103211334450320, 0.967090490909933930, 0.967077768067691300, 0.967065042807754180, 0.967052315130154550, 0.967039585034924040, 0.967026852522094640, 0.967014117591698090, +0.967001380243766030, 0.966988640478330770, 0.966975898295423850, 0.966963153695077130, 0.966950406677322680, 0.966937657242192160, 0.966924905389717430, 0.966912151119930230, +0.966899394432862880, 0.966886635328547130, 0.966873873807014730, 0.966861109868297650, 0.966848343512427770, 0.966835574739437040, 0.966822803549357350, 0.966810029942220430, +0.966797253918058710, 0.966784475476903940, 0.966771694618787870, 0.966758911343742480, 0.966746125651799960, 0.966733337542992070, 0.966720547017350550, 0.966707754074908050, +0.966694958715696000, 0.966682160939746680, 0.966669360747091870, 0.966656558137763740, 0.966643753111794070, 0.966630945669215150, 0.966618135810058620, 0.966605323534356910, +0.966592508842141980, 0.966579691733445710, 0.966566872208300290, 0.966554050266737570, 0.966541225908789880, 0.966528399134488960, 0.966515569943866890, 0.966502738336956210, +0.966489904313788560, 0.966477067874396130, 0.966464229018811130, 0.966451387747065520, 0.966438544059191500, 0.966425697955220820, 0.966412849435186130, 0.966399998499119280, +0.966387145147052480, 0.966374289379017810, 0.966361431195047470, 0.966348570595173540, 0.966335707579428100, 0.966322842147843250, 0.966309974300451510, 0.966297104037284750, +0.966284231358375270, 0.966271356263755270, 0.966258478753456830, 0.966245598827512260, 0.966232716485953660, 0.966219831728812980, 0.966206944556122990, 0.966194054967915660, +0.966181162964223180, 0.966168268545077760, 0.966155371710511690, 0.966142472460557180, 0.966129570795246310, 0.966116666714611720, 0.966103760218685490, 0.966090851307499830, +0.966077939981087040, 0.966065026239479320, 0.966052110082709080, 0.966039191510808640, 0.966026270523809960, 0.966013347121745800, 0.966000421304648360, 0.965987493072549720, +0.965974562425482520, 0.965961629363478740, 0.965948693886571010, 0.965935755994791310, 0.965922815688172400, 0.965909872966746460, 0.965896927830545820, 0.965883980279602870, +0.965871030313950050, 0.965858077933619550, 0.965845123138643900, 0.965832165929055300, 0.965819206304886380, 0.965806244266169460, 0.965793279812936940, 0.965780312945221260, +0.965767343663054830, 0.965754371966469960, 0.965741397855499170, 0.965728421330174780, 0.965715442390529420, 0.965702461036595520, 0.965689477268405480, 0.965676491085991630, +0.965663502489386700, 0.965650511478622910, 0.965637518053732660, 0.965624522214748810, 0.965611523961703690, 0.965598523294629810, 0.965585520213559590, 0.965572514718525570, +0.965559506809560150, 0.965546496486696100, 0.965533483749965500, 0.965520468599401440, 0.965507451035036320, 0.965494431056902470, 0.965481408665032510, 0.965468383859459100, +0.965455356640214650, 0.965442327007331680, 0.965429294960843070, 0.965416260500781220, 0.965403223627178670, 0.965390184340068180, 0.965377142639482160, 0.965364098525453240, +0.965351051998014190, 0.965338003057197190, 0.965324951703035450, 0.965311897935561270, 0.965298841754807400, 0.965285783160806490, 0.965272722153591060, 0.965259658733193750, +0.965246592899647430, 0.965233524652984290, 0.965220453993237640, 0.965207380920439780, 0.965194305434623480, 0.965181227535821470, 0.965168147224066410, 0.965155064499390920, +0.965141979361827550, 0.965128891811409480, 0.965115801848169140, 0.965102709472139390, 0.965089614683352750, 0.965076517481842200, 0.965063417867640270, 0.965050315840779830, +0.965037211401293280, 0.965024104549214060, 0.965010995284574570, 0.964997883607407460, 0.964984769517745810, 0.964971653015622160, 0.964958534101069350, 0.964945412774120270, +0.964932289034807320, 0.964919162883163930, 0.964906034319222730, 0.964892903343016360, 0.964879769954577690, 0.964866634153939700, 0.964853495941135010, 0.964840355316196390, +0.964827212279157130, 0.964814066830049890, 0.964800918968907410, 0.964787768695762660, 0.964774616010648510, 0.964761460913597820, 0.964748303404643460, 0.964735143483818060, +0.964721981151155040, 0.964708816406687150, 0.964695649250447150, 0.964682479682468120, 0.964669307702782810, 0.964656133311424190, 0.964642956508425130, 0.964629777293818820, +0.964616595667638020, 0.964603411629915810, 0.964590225180685160, 0.964577036319978820, 0.964563845047829880, 0.964550651364271430, 0.964537455269335990, 0.964524256763057200, +0.964511055845467810, 0.964497852516600810, 0.964484646776489040, 0.964471438625165820, 0.964458228062663900, 0.964445015089016370, 0.964431799704256190, 0.964418581908416670, +0.964405361701530680, 0.964392139083631310, 0.964378914054751620, 0.964365686614924610, 0.964352456764183350, 0.964339224502560820, 0.964325989830090440, 0.964312752746805060, +0.964299513252737770, 0.964286271347921660, 0.964273027032389930, 0.964259780306175650, 0.964246531169311920, 0.964233279621831580, 0.964220025663768300, 0.964206769295155030, +0.964193510516024750, 0.964180249326410670, 0.964166985726346070, 0.964153719715863940, 0.964140451294997480, 0.964127180463779650, 0.964113907222244220, 0.964100631570423920, +0.964087353508352060, 0.964074073036061850, 0.964060790153586480, 0.964047504860959030, 0.964034217158212690, 0.964020927045381000, 0.964007634522496940, 0.963994339589593910, +0.963981042246704890, 0.963967742493863410, 0.963954440331102450, 0.963941135758455530, 0.963927828775955400, 0.963914519383636040, 0.963901207581530310, 0.963887893369671510, +0.963874576748093070, 0.963861257716828180, 0.963847936275910140, 0.963834612425372050, 0.963821286165247650, 0.963807957495570020, 0.963794626416372480, 0.963781292927688330, +0.963767957029550980, 0.963754618721993860, 0.963741278005050050, 0.963727934878752860, 0.963714589343136030, 0.963701241398232770, 0.963687891044076480, 0.963674538280700380, +0.963661183108137860, 0.963647825526422470, 0.963634465535587510, 0.963621103135666180, 0.963607738326692330, 0.963594371108699050, 0.963581001481719880, 0.963567629445788220, +0.963554255000937500, 0.963540878147201130, 0.963527498884612310, 0.963514117213205010, 0.963500733133012430, 0.963487346644067990, 0.963473957746405210, 0.963460566440057510, +0.963447172725058420, 0.963433776601441360, 0.963420378069239640, 0.963406977128487220, 0.963393573779217300, 0.963380168021463530, 0.963366759855259320, 0.963353349280638200, +0.963339936297633700, 0.963326520906279350, 0.963313103106608450, 0.963299682898655090, 0.963286260282452460, 0.963272835258034200, 0.963259407825433840, 0.963245977984685030, +0.963232545735821180, 0.963219111078875810, 0.963205674013882910, 0.963192234540875770, 0.963178792659888040, 0.963165348370953360, 0.963151901674105250, 0.963138452569377470, +0.963125001056803540, 0.963111547136416780, 0.963098090808251480, 0.963084632072340960, 0.963071170928718860, 0.963057707377418800, 0.963044241418474440, 0.963030773051919530, +0.963017302277787480, 0.963003829096112260, 0.962990353506927630, 0.962976875510267120, 0.962963395106164350, 0.962949912294653100, 0.962936427075767100, 0.962922939449539990, +0.962909449416005310, 0.962895956975197250, 0.962882462127149230, 0.962868964871895110, 0.962855465209468630, 0.962841963139903450, 0.962828458663233410, 0.962814951779492170, +0.962801442488713240, 0.962787930790931060, 0.962774416686179020, 0.962760900174490900, 0.962747381255900650, 0.962733859930441800, 0.962720336198148340, 0.962706810059053900, +0.962693281513192560, 0.962679750560598070, 0.962666217201304190, 0.962652681435344770, 0.962639143262753570, 0.962625602683564670, 0.962612059697811610, 0.962598514305528230, +0.962584966506748850, 0.962571416301507000, 0.962557863689836650, 0.962544308671771540, 0.962530751247345770, 0.962517191416593090, 0.962503629179547350, 0.962490064536242420, +0.962476497486712490, 0.962462928030991320, 0.962449356169112870, 0.962435781901111010, 0.962422205227019710, 0.962408626146872950, 0.962395044660704250, 0.962381460768548250, +0.962367874470438590, 0.962354285766409360, 0.962340694656494300, 0.962327101140727500, 0.962313505219142940, 0.962299906891774580, 0.962286306158656290, 0.962272703019822480, +0.962259097475306910, 0.962245489525143550, 0.962231879169366480, 0.962218266408009780, 0.962204651241107320, 0.962191033668693070, 0.962177413690801450, 0.962163791307466320, +0.962150166518721650, 0.962136539324601640, 0.962122909725140140, 0.962109277720371470, 0.962095643310329600, 0.962082006495048380, 0.962068367274562460, 0.962054725648905480, +0.962041081618111750, 0.962027435182215340, 0.962013786341250340, 0.962000135095250840, 0.961986481444251030, 0.961972825388284770, 0.961959166927386700, 0.961945506061590680, +0.961931842790930910, 0.961918177115441590, 0.961904509035156790, 0.961890838550110590, 0.961877165660337210, 0.961863490365871150, 0.961849812666746300, 0.961836132562996940, +0.961822450054657270, 0.961808765141761500, 0.961795077824343700, 0.961781388102438290, 0.961767695976079250, 0.961754001445301100, 0.961740304510137920, 0.961726605170624030, +0.961712903426793610, 0.961699199278680970, 0.961685492726320310, 0.961671783769745710, 0.961658072408991820, 0.961644358644092810, 0.961630642475082900, 0.961616923901996380, +0.961603202924867560, 0.961589479543730750, 0.961575753758620140, 0.961562025569569930, 0.961548294976614980, 0.961534561979789260, 0.961520826579127070, 0.961507088774662950, +0.961493348566430980, 0.961479605954465690, 0.961465860938801380, 0.961452113519472240, 0.961438363696512920, 0.961424611469957830, 0.961410856839841180, 0.961397099806197360, +0.961383340369060810, 0.961369578528465830, 0.961355814284446720, 0.961342047637038340, 0.961328278586274790, 0.961314507132190580, 0.961300733274820130, 0.961286957014197860, +0.961273178350358080, 0.961259397283335430, 0.961245613813164090, 0.961231827939878940, 0.961218039663514160, 0.961204248984104280, 0.961190455901683840, 0.961176660416287240, +0.961162862527948910, 0.961149062236703600, 0.961135259542585270, 0.961121454445629020, 0.961107646945869140, 0.961093837043340170, 0.961080024738076630, 0.961066210030113060, +0.961052392919483860, 0.961038573406223450, 0.961024751490366920, 0.961010927171948470, 0.960997100451002730, 0.960983271327564230, 0.960969439801667490, 0.960955605873347270, +0.960941769542637990, 0.960927930809573950, 0.960914089674190450, 0.960900246136521700, 0.960886400196602320, 0.960872551854466850, 0.960858701110150150, 0.960844847963686630, +0.960830992415110720, 0.960817134464457600, 0.960803274111761700, 0.960789411357057530, 0.960775546200379860, 0.960761678641763320, 0.960747808681242540, 0.960733936318852290, +0.960720061554626970, 0.960706184388601780, 0.960692304820811030, 0.960678422851289570, 0.960664538480072050, 0.960650651707193210, 0.960636762532687700, 0.960622870956590270, +0.960608976978935440, 0.960595080599758510, 0.960581181819093690, 0.960567280636976050, 0.960553377053440240, 0.960539471068520890, 0.960525562682252860, 0.960511651894670690, +0.960497738705809680, 0.960483823115704350, 0.960469905124389340, 0.960455984731899640, 0.960442061938269980, 0.960428136743535220, 0.960414209147730010, 0.960400279150889100, +0.960386346753047790, 0.960372411954240500, 0.960358474754502200, 0.960344535153867750, 0.960330593152372010, 0.960316648750049740, 0.960302701946935790, 0.960288752743064910, +0.960274801138472410, 0.960260847133192820, 0.960246890727261220, 0.960232931920712350, 0.960218970713581090, 0.960205007105902510, 0.960191041097711030, 0.960177072689042290, +0.960163101879930920, 0.960149128670411690, 0.960135153060519660, 0.960121175050289820, 0.960107194639756910, 0.960093211828956130, 0.960079226617922000, 0.960065239006690160, +0.960051248995295150, 0.960037256583772040, 0.960023261772155690, 0.960009264560481300, 0.959995264948783730, 0.959981262937097730, 0.959967258525458830, 0.959953251713901780, +0.959939242502461540, 0.959925230891173320, 0.959911216880071970, 0.959897200469192580, 0.959883181658570120, 0.959869160448239560, 0.959855136838236200, 0.959841110828595130, +0.959827082419351330, 0.959813051610539650, 0.959799018402195500, 0.959784982794353760, 0.959770944787049500, 0.959756904380317690, 0.959742861574193860, 0.959728816368712880, +0.959714768763909820, 0.959700718759819880, 0.959686666356478150, 0.959672611553919700, 0.959658554352179500, 0.959644494751293210, 0.959630432751295670, 0.959616368352221970, +0.959602301554107420, 0.959588232356987090, 0.959574160760896190, 0.959560086765869900, 0.959546010371943200, 0.959531931579151620, 0.959517850387530240, 0.959503766797114240, +0.959489680807938840, 0.959475592420039210, 0.959461501633450680, 0.959447408448208310, 0.959433312864347190, 0.959419214881903070, 0.959405114500910820, 0.959391011721405840, +0.959376906543423340, 0.959362798966998610, 0.959348688992166850, 0.959334576618963150, 0.959320461847423140, 0.959306344677582130, 0.959292225109475210, 0.959278103143137660, +0.959263978778604920, 0.959249852015912170, 0.959235722855094840, 0.959221591296188000, 0.959207457339227300, 0.959193320984248030, 0.959179182231285510, 0.959165041080375040, +0.959150897531551920, 0.959136751584851450, 0.959122603240309070, 0.959108452497960280, 0.959094299357840410, 0.959080143819984740, 0.959065985884428710, 0.959051825551207830, +0.959037662820357300, 0.959023497691912640, 0.959009330165908950, 0.958995160242382180, 0.958980987921367540, 0.958966813202900450, 0.958952636087016310, 0.958938456573750540, +0.958924274663138680, 0.958910090355216130, 0.958895903650018090, 0.958881714547580530, 0.958867523047938650, 0.958853329151128090, 0.958839132857184140, 0.958824934166142340, +0.958810733078038210, 0.958796529592906950, 0.958782323710784650, 0.958768115431706590, 0.958753904755708210, 0.958739691682825020, 0.958725476213092680, 0.958711258346546690, +0.958697038083222490, 0.958682815423155370, 0.958668590366381520, 0.958654362912936260, 0.958640133062855000, 0.958625900816173490, 0.958611666172927150, 0.958597429133151710, +0.958583189696882610, 0.958568947864155360, 0.958554703635005940, 0.958540457009469880, 0.958526207987582590, 0.958511956569379820, 0.958497702754897100, 0.958483446544170170, +0.958469187937234350, 0.958454926934125710, 0.958440663534879890, 0.958426397739532420, 0.958412129548118940, 0.958397858960675090, 0.958383585977236610, 0.958369310597839140, +0.958355032822518220, 0.958340752651309910, 0.958326470084249650, 0.958312185121373390, 0.958297897762716570, 0.958283608008315020, 0.958269315858204410, 0.958255021312420240, +0.958240724370998830, 0.958226425033975590, 0.958212123301386280, 0.958197819173266740, 0.958183512649652510, 0.958169203730579680, 0.958154892416083650, 0.958140578706200290, +0.958126262600965670, 0.958111944100415340, 0.958097623204585250, 0.958083299913511040, 0.958068974227228590, 0.958054646145773740, 0.958040315669182240, 0.958025982797489740, +0.958011647530732540, 0.957997309868946160, 0.957982969812166460, 0.957968627360429430, 0.957954282513770790, 0.957939935272226540, 0.957925585635832080, 0.957911233604623940, +0.957896879178637750, 0.957882522357909380, 0.957868163142474690, 0.957853801532369540, 0.957839437527629900, 0.957825071128291740, 0.957810702334390580, 0.957796331145962850, +0.957781957563044410, 0.957767581585671100, 0.957753203213878690, 0.957738822447703360, 0.957724439287180980, 0.957710053732347300, 0.957695665783238730, 0.957681275439890900, +0.957666882702339910, 0.957652487570621710, 0.957638090044772290, 0.957623690124827730, 0.957609287810823880, 0.957594883102796610, 0.957580476000782330, 0.957566066504816790, +0.957551654614936190, 0.957537240331176490, 0.957522823653573550, 0.957508404582163690, 0.957493983116982750, 0.957479559258066600, 0.957465133005451770, 0.957450704359174230, +0.957436273319269840, 0.957421839885774780, 0.957407404058725040, 0.957392965838156920, 0.957378525224106050, 0.957364082216609180, 0.957349636815702070, 0.957335189021420900, +0.957320738833801750, 0.957306286252880720, 0.957291831278693990, 0.957277373911277650, 0.957262914150667670, 0.957248451996900670, 0.957233987450012540, 0.957219520510039450, +0.957205051177017490, 0.957190579450982960, 0.957176105331971950, 0.957161628820020650, 0.957147149915165030, 0.957132668617441840, 0.957118184926887050, 0.957103698843536630, +0.957089210367427110, 0.957074719498594460, 0.957060226237075100, 0.957045730582904870, 0.957031232536120550, 0.957016732096758190, 0.957002229264853900, 0.956987724040444190, +0.956973216423565030, 0.956958706414252960, 0.956944194012544050, 0.956929679218474380, 0.956915162032080820, 0.956900642453399340, 0.956886120482466240, 0.956871596119317820, +0.956857069363990400, 0.956842540216520380, 0.956828008676943730, 0.956813474745297320, 0.956798938421617230, 0.956784399705939760, 0.956769858598301330, 0.956755315098738120, +0.956740769207286790, 0.956726220923983520, 0.956711670248864390, 0.956697117181966260, 0.956682561723325440, 0.956668003872978230, 0.956653443630961050, 0.956638880997310090, +0.956624315972062100, 0.956609748555253270, 0.956595178746919790, 0.956580606547098640, 0.956566031955825900, 0.956551454973138200, 0.956536875599071750, 0.956522293833663160, +0.956507709676948870, 0.956493123128965060, 0.956478534189748600, 0.956463942859335890, 0.956449349137763250, 0.956434753025067310, 0.956420154521284480, 0.956405553626451300, +0.956390950340604170, 0.956376344663779410, 0.956361736596014090, 0.956347126137344410, 0.956332513287806880, 0.956317898047438050, 0.956303280416274550, 0.956288660394352790, +0.956274037981709400, 0.956259413178380700, 0.956244785984403660, 0.956230156399814680, 0.956215524424650300, 0.956200890058947150, 0.956186253302741760, 0.956171614156070770, +0.956156972618970370, 0.956142328691477860, 0.956127682373629550, 0.956113033665462080, 0.956098382567011960, 0.956083729078315850, 0.956069073199410480, 0.956054414930332390, +0.956039754271118090, 0.956025091221804570, 0.956010425782428340, 0.955995757953026050, 0.955981087733634330, 0.955966415124289930, 0.955951740125029590, 0.955937062735889520, +0.955922382956907010, 0.955907700788118710, 0.955893016229561020, 0.955878329281270810, 0.955863639943284830, 0.955848948215639700, 0.955834254098372190, 0.955819557591518820, +0.955804858695116890, 0.955790157409202700, 0.955775453733813120, 0.955760747668984890, 0.955746039214754870, 0.955731328371159710, 0.955716615138236250, 0.955701899516021030, +0.955687181504551230, 0.955672461103863500, 0.955657738313994700, 0.955643013134981460, 0.955628285566860750, 0.955613555609669320, 0.955598823263443700, 0.955584088528221300, +0.955569351404038650, 0.955554611890932710, 0.955539869988940140, 0.955525125698098000, 0.955510379018442930, 0.955495629950012030, 0.955480878492841690, 0.955466124646969450, +0.955451368412431950, 0.955436609789265920, 0.955421848777508460, 0.955407085377196320, 0.955392319588366570, 0.955377551411055960, 0.955362780845301130, 0.955348007891139720, +0.955333232548608250, 0.955318454817743690, 0.955303674698583020, 0.955288892191163090, 0.955274107295520980, 0.955259320011693450, 0.955244530339717680, 0.955229738279630760, +0.955214943831469430, 0.955200146995270670, 0.955185347771071670, 0.955170546158909170, 0.955155742158820380, 0.955140935770842030, 0.955126126995011540, 0.955111315831365660, +0.955096502279941580, 0.955081686340776170, 0.955066868013906610, 0.955052047299369880, 0.955037224197202830, 0.955022398707442880, 0.955007570830126990, 0.954992740565292150, +0.954977907912975430, 0.954963072873213910, 0.954948235446044790, 0.954933395631505140, 0.954918553429631610, 0.954903708840462050, 0.954888861864033100, 0.954874012500382060, +0.954859160749546020, 0.954844306611562050, 0.954829450086467360, 0.954814591174299010, 0.954799729875093870, 0.954784866188889800, 0.954770000115723440, 0.954755131655632190, +0.954740260808653040, 0.954725387574823170, 0.954710511954179890, 0.954695633946760160, 0.954680753552601510, 0.954665870771741030, 0.954650985604215800, 0.954636098050063110, +0.954621208109320270, 0.954606315782024370, 0.954591421068212600, 0.954576523967922140, 0.954561624481190530, 0.954546722608054950, 0.954531818348552500, 0.954516911702720460, +0.954502002670596260, 0.954487091252216980, 0.954472177447620030, 0.954457261256842270, 0.954442342679921670, 0.954427421716895210, 0.954412498367800290, 0.954397572632674000, +0.954382644511553860, 0.954367714004477060, 0.954352781111480700, 0.954337845832602730, 0.954322908167880010, 0.954307968117350190, 0.954293025681050340, 0.954278080859017890, +0.954263133651290340, 0.954248184057904900, 0.954233232078898760, 0.954218277714309780, 0.954203320964175150, 0.954188361828532170, 0.954173400307418370, 0.954158436400870950, +0.954143470108927530, 0.954128501431625090, 0.954113530369001710, 0.954098556921094580, 0.954083581087940890, 0.954068602869578400, 0.954053622266044290, 0.954038639277376200, +0.954023653903611550, 0.954008666144787410, 0.953993676000941870, 0.953978683472112120, 0.953963688558335800, 0.953948691259650090, 0.953933691576092760, 0.953918689507701200, +0.953903685054512840, 0.953888678216565090, 0.953873668993895920, 0.953858657386542520, 0.953843643394542420, 0.953828627017933360, 0.953813608256752650, 0.953798587111037930, +0.953783563580826390, 0.953768537666156320, 0.953753509367064930, 0.953738478683589630, 0.953723445615768270, 0.953708410163638280, 0.953693372327237170, 0.953678332106602690, +0.953663289501772150, 0.953648244512783630, 0.953633197139674430, 0.953618147382482300, 0.953603095241244760, 0.953588040715999560, 0.953572983806784240, 0.953557924513636410, +0.953542862836593510, 0.953527798775693710, 0.953512732330974440, 0.953497663502473340, 0.953482592290228140, 0.953467518694276370, 0.953452442714655790, 0.953437364351403920, +0.953422283604558940, 0.953407200474158170, 0.953392114960239350, 0.953377027062840330, 0.953361936781998760, 0.953346844117752280, 0.953331749070138730, 0.953316651639195540, +0.953301551824960900, 0.953286449627472440, 0.953271345046767920, 0.953256238082884950, 0.953241128735861420, 0.953226017005735060, 0.953210902892543400, 0.953195786396324850, +0.953180667517116720, 0.953165546254956860, 0.953150422609883250, 0.953135296581933520, 0.953120168171145640, 0.953105037377557250, 0.953089904201206100, 0.953074768642130370, +0.953059630700367700, 0.953044490375955950, 0.953029347668933100, 0.953014202579336780, 0.952999055107204950, 0.952983905252575480, 0.952968753015486000, 0.952953598395974930, +0.952938441394079790, 0.952923282009838670, 0.952908120243289190, 0.952892956094469560, 0.952877789563417510, 0.952862620650170580, 0.952847449354767510, 0.952832275677245820, +0.952817099617643380, 0.952801921175998160, 0.952786740352348230, 0.952771557146731340, 0.952756371559185690, 0.952741183589748800, 0.952725993238459190, 0.952710800505354620, +0.952695605390473040, 0.952680407893852440, 0.952665208015530780, 0.952650005755546150, 0.952634801113936170, 0.952619594090739600, 0.952604384685993950, 0.952589172899737320, +0.952573958732007790, 0.952558742182843420, 0.952543523252282090, 0.952528301940361980, 0.952513078247120840, 0.952497852172597300, 0.952482623716829120, 0.952467392879854380, +0.952452159661711260, 0.952436924062437630, 0.952421686082071670, 0.952406445720651580, 0.952391202978215000, 0.952375957854800780, 0.952360710350446670, 0.952345460465190750, +0.952330208199071100, 0.952314953552126030, 0.952299696524393610, 0.952284437115911600, 0.952269175326718730, 0.952253911156852980, 0.952238644606352550, 0.952223375675255390, +0.952208104363599820, 0.952192830671423910, 0.952177554598766070, 0.952162276145663950, 0.952146995312156520, 0.952131712098281510, 0.952116426504077240, 0.952101138529581890, +0.952085848174833770, 0.952070555439870960, 0.952055260324731760, 0.952039962829454240, 0.952024662954076950, 0.952009360698638060, 0.951994056063175780, 0.951978749047728390, +0.951963439652334100, 0.951948127877031200, 0.951932813721857670, 0.951917497186852370, 0.951902178272053370, 0.951886856977498970, 0.951871533303227380, 0.951856207249277000, +0.951840878815686020, 0.951825548002492860, 0.951810214809735600, 0.951794879237453100, 0.951779541285683320, 0.951764200954464790, 0.951748858243835700, 0.951733513153834480, +0.951718165684499410, 0.951702815835868800, 0.951687463607981290, 0.951672109000875180, 0.951656752014588770, 0.951641392649160480, 0.951626030904628720, 0.951610666781031900, +0.951595300278408330, 0.951579931396796310, 0.951564560136234800, 0.951549186496761790, 0.951533810478415790, 0.951518432081235320, 0.951503051305258810, 0.951487668150524660, +0.951472282617071290, 0.951456894704937000, 0.951441504414160640, 0.951426111744780640, 0.951410716696835300, 0.951395319270363140, 0.951379919465402680, 0.951364517281992560, +0.951349112720170750, 0.951333705779976450, 0.951318296461447830, 0.951302884764623550, 0.951287470689542110, 0.951272054236241840, 0.951256635404761570, 0.951241214195139630, +0.951225790607414410, 0.951210364641625010, 0.951194936297809710, 0.951179505576007060, 0.951164072476255560, 0.951148636998593980, 0.951133199143060830, 0.951117758909694520, +0.951102316298533700, 0.951086871309617330, 0.951071423942983720, 0.951055974198671610, 0.951040522076719520, 0.951025067577166210, 0.951009610700050190, 0.950994151445409770, +0.950978689813284370, 0.950963225803712180, 0.950947759416731930, 0.950932290652382380, 0.950916819510701950, 0.950901345991729600, 0.950885870095503850, 0.950870391822063120, +0.950854911171446720, 0.950839428143693040, 0.950823942738840740, 0.950808454956928560, 0.950792964797995350, 0.950777472262079650, 0.950761977349220080, 0.950746480059455720, +0.950730980392825220, 0.950715478349367320, 0.950699973929120650, 0.950684467132124070, 0.950668957958416330, 0.950653446408036170, 0.950637932481022240, 0.950622416177413610, +0.950606897497249030, 0.950591376440567130, 0.950575853007406880, 0.950560327197806920, 0.950544799011806110, 0.950529268449443410, 0.950513735510757130, 0.950498200195786900, +0.950482662504571140, 0.950467122437148700, 0.950451579993558560, 0.950436035173839340, 0.950420487978030140, 0.950404938406169350, 0.950389386458296510, 0.950373832134450260, +0.950358275434669330, 0.950342716358992810, 0.950327154907459450, 0.950311591080108210, 0.950296024876977950, 0.950280456298107420, 0.950264885343536040, 0.950249312013302430, +0.950233736307445450, 0.950218158226004190, 0.950202577769017620, 0.950186994936524480, 0.950171409728563950, 0.950155822145174580, 0.950140232186395870, 0.950124639852266690, +0.950109045142825900, 0.950093448058112470, 0.950077848598165350, 0.950062246763023640, 0.950046642552726080, 0.950031035967312200, 0.950015427006820730, 0.949999815671290660, +0.949984201960761050, 0.949968585875270890, 0.949952967414859350, 0.949937346579565410, 0.949921723369427710, 0.949906097784486090, 0.949890469824779200, 0.949874839490346120, +0.949859206781225930, 0.949843571697457700, 0.949827934239080630, 0.949812294406133350, 0.949796652198655610, 0.949781007616686380, 0.949765360660264510, 0.949749711329429200, +0.949734059624219750, 0.949718405544675020, 0.949702749090834410, 0.949687090262736570, 0.949671429060421230, 0.949655765483927380, 0.949640099533294200, 0.949624431208560660, +0.949608760509766060, 0.949593087436949590, 0.949577411990150330, 0.949561734169407370, 0.949546053974760220, 0.949530371406248070, 0.949514686463909910, 0.949498999147785020, +0.949483309457912710, 0.949467617394332050, 0.949451922957082140, 0.949436226146202600, 0.949420526961732620, 0.949404825403711290, 0.949389121472177800, 0.949373415167171660, +0.949357706488731860, 0.949341995436897790, 0.949326282011708540, 0.949310566213203870, 0.949294848041422720, 0.949279127496404420, 0.949263404578188360, 0.949247679286813750, +0.949231951622319990, 0.949216221584746390, 0.949200489174131910, 0.949184754390516420, 0.949169017233939090, 0.949153277704439250, 0.949137535802056180, 0.949121791526829290, +0.949106044878797910, 0.949090295858001200, 0.949074544464478920, 0.949058790698270370, 0.949043034559414860, 0.949027276047951670, 0.949011515163920350, 0.948995751907360190, +0.948979986278310710, 0.948964218276810990, 0.948948447902900890, 0.948932675156619830, 0.948916900038006990, 0.948901122547101910, 0.948885342683944090, 0.948869560448572850, +0.948853775841027370, 0.948837988861347850, 0.948822199509573250, 0.948806407785743210, 0.948790613689897140, 0.948774817222074570, 0.948759018382314910, 0.948743217170657790, +0.948727413587142300, 0.948711607631808510, 0.948695799304695720, 0.948679988605843460, 0.948664175535291250, 0.948648360093078510, 0.948632542279244980, 0.948616722093829970, +0.948600899536872990, 0.948585074608414010, 0.948569247308492350, 0.948553417637147510, 0.948537585594419250, 0.948521751180346870, 0.948505914394970230, 0.948490075238328510, +0.948474233710461800, 0.948458389811409620, 0.948442543541211380, 0.948426694899906830, 0.948410843887535490, 0.948394990504137110, 0.948379134749751220, 0.948363276624417220, +0.948347416128175300, 0.948331553261064770, 0.948315688023125490, 0.948299820414396870, 0.948283950434918750, 0.948268078084730790, 0.948252203363872390, 0.948236326272383630, +0.948220446810304150, 0.948204564977673580, 0.948188680774531560, 0.948172794200917820, 0.948156905256872020, 0.948141013942434110, 0.948125120257643280, 0.948109224202539960, +0.948093325777163540, 0.948077424981553900, 0.948061521815750650, 0.948045616279793560, 0.948029708373722470, 0.948013798097577130, 0.947997885451396960, 0.947981970435222370, +0.947966053049092870, 0.947950133293048340, 0.947934211167128280, 0.947918286671372790, 0.947902359805821600, 0.947886430570514250, 0.947870498965491030, 0.947854564990791570, +0.947838628646455740, 0.947822689932523390, 0.947806748849034260, 0.947790805396028220, 0.947774859573545240, 0.947758911381624710, 0.947742960820307290, 0.947727007889632490, +0.947711052589640060, 0.947695094920370070, 0.947679134881862280, 0.947663172474156770, 0.947647207697293270, 0.947631240551311430, 0.947615271036251870, 0.947599299152154020, +0.947583324899057940, 0.947567348277003620, 0.947551369286030900, 0.947535387926179750, 0.947519404197489810, 0.947503418100001720, 0.947487429633754990, 0.947471438798789810, +0.947455445595145940, 0.947439450022863450, 0.947423452081982420, 0.947407451772542710, 0.947391449094584060, 0.947375444048147110, 0.947359436633271490, 0.947343426849997280, +0.947327414698364570, 0.947311400178413310, 0.947295383290183590, 0.947279364033715040, 0.947263342409048410, 0.947247318416223450, 0.947231292055280120, 0.947215263326258610, +0.947199232229198880, 0.947183198764141140, 0.947167162931125460, 0.947151124730191470, 0.947135084161380040, 0.947119041224730780, 0.947102995920284020, 0.947086948248079820, +0.947070898208158150, 0.947054845800559210, 0.947038791025323290, 0.947022733882490030, 0.947006674372100180, 0.946990612494193700, 0.946974548248810670, 0.946958481635991280, +0.946942412655775610, 0.946926341308203970, 0.946910267593316200, 0.946894191511153060, 0.946878113061754400, 0.946862032245160520, 0.946845949061411510, 0.946829863510547650, +0.946813775592609150, 0.946797685307636190, 0.946781592655668750, 0.946765497636747550, 0.946749400250912700, 0.946733300498204260, 0.946717198378662640, 0.946701093892327930, +0.946684987039240530, 0.946668877819440760, 0.946652766232968460, 0.946636652279864490, 0.946620535960168820, 0.946604417273921970, 0.946588296221163920, 0.946572172801935290, +0.946556047016276050, 0.946539918864226500, 0.946523788345827510, 0.946507655461118920, 0.946491520210141270, 0.946475382592934840, 0.946459242609539950, 0.946443100259996890, +0.946426955544346080, 0.946410808462627710, 0.946394659014882510, 0.946378507201150690, 0.946362353021472540, 0.946346196475888580, 0.946330037564439120, 0.946313876287164570, +0.946297712644105000, 0.946281546635301400, 0.946265378260794040, 0.946249207520623250, 0.946233034414829310, 0.946216858943452870, 0.946200681106534320, 0.946184500904113990, +0.946168318336232160, 0.946152133402929810, 0.946135946104247120, 0.946119756440224500, 0.946103564410902600, 0.946087370016321820, 0.946071173256522460, 0.946054974131545270, +0.946038772641430330, 0.946022568786218820, 0.946006362565950830, 0.945990153980666880, 0.945973943030407600, 0.945957729715213520, 0.945941514035125050, 0.945925295990182490, +0.945909075580427030, 0.945892852805898850, 0.945876627666638490, 0.945860400162686690, 0.945844170294083740, 0.945827938060870510, 0.945811703463087290, 0.945795466500774620, +0.945779227173973560, 0.945762985482724420, 0.945746741427067830, 0.945730495007044310, 0.945714246222694620, 0.945697995074059380, 0.945681741561179010, 0.945665485684094140, +0.945649227442845740, 0.945632966837474330, 0.945616703868020550, 0.945600438534524910, 0.945584170837028170, 0.945567900775571070, 0.945551628350193910, 0.945535353560937990, +0.945519076407843610, 0.945502796890951620, 0.945486515010302560, 0.945470230765937280, 0.945453944157896410, 0.945437655186220690, 0.945421363850950550, 0.945405070152127270, +0.945388774089791270, 0.945372475663983410, 0.945356174874744330, 0.945339871722114760, 0.945323566206135560, 0.945307258326847140, 0.945290948084290930, 0.945274635478507320, +0.945258320509537060, 0.945242003177421020, 0.945225683482200040, 0.945209361423914760, 0.945193037002606150, 0.945176710218314620, 0.945160381071081580, 0.945144049560947660, +0.945127715687953620, 0.945111379452140190, 0.945095040853548450, 0.945078699892219040, 0.945062356568192820, 0.945046010881510520, 0.945029662832213460, 0.945013312420342140, +0.944996959645937660, 0.944980604509040760, 0.944964247009692280, 0.944947887147933210, 0.944931524923804170, 0.944915160337346570, 0.944898793388601170, 0.944882424077608700, +0.944866052404410130, 0.944849678369046540, 0.944833301971558680, 0.944816923211987510, 0.944800542090373900, 0.944784158606759130, 0.944767772761183950, 0.944751384553689340, +0.944734993984316260, 0.944718601053105790, 0.944702205760098780, 0.944685808105336200, 0.944669408088858800, 0.944653005710708200, 0.944636600970925170, 0.944620193869550540, +0.944603784406625400, 0.944587372582190940, 0.944570958396287910, 0.944554541848957260, 0.944538122940240530, 0.944521701670178460, 0.944505278038812120, 0.944488852046182710, +0.944472423692331090, 0.944455992977298430, 0.944439559901125710, 0.944423124463853900, 0.944406686665524520, 0.944390246506178420, 0.944373803985856800, 0.944357359104600500, +0.944340911862450950, 0.944324462259449100, 0.944308010295635710, 0.944291555971052630, 0.944275099285740720, 0.944258640239741040, 0.944242178833094690, 0.944225715065842960, +0.944209248938026930, 0.944192780449687800, 0.944176309600866400, 0.944159836391604500, 0.944143360821942950, 0.944126882891923150, 0.944110402601586070, 0.944093919950972920, +0.944077434940125080, 0.944060947569083650, 0.944044457837889480, 0.944027965746584430, 0.944011471295209570, 0.943994974483805980, 0.943978475312414970, 0.943961973781077820, +0.943945469889835630, 0.943928963638729580, 0.943912455027801300, 0.943895944057091980, 0.943879430726642820, 0.943862915036495000, 0.943846396986689930, 0.943829876577268800, +0.943813353808273030, 0.943796828679743680, 0.943780301191722400, 0.943763771344250490, 0.943747239137369020, 0.943730704571119520, 0.943714167645543280, 0.943697628360681610, +0.943681086716575580, 0.943664542713267160, 0.943647996350797320, 0.943631447629207480, 0.943614896548539140, 0.943598343108833390, 0.943581787310131870, 0.943565229152475870, +0.943548668635906580, 0.943532105760465870, 0.943515540526194800, 0.943498972933135010, 0.943482402981327680, 0.943465830670814460, 0.943449256001636540, 0.943432678973835540, +0.943416099587452540, 0.943399517842529620, 0.943382933739107870, 0.943366347277228790, 0.943349758456933810, 0.943333167278264550, 0.943316573741262210, 0.943299977845968310, +0.943283379592424590, 0.943266778980672570, 0.943250176010753560, 0.943233570682709080, 0.943216962996580640, 0.943200352952409890, 0.943183740550238130, 0.943167125790106860, +0.943150508672057960, 0.943133889196132840, 0.943117267362373000, 0.943100643170819990, 0.943084016621515420, 0.943067387714500720, 0.943050756449817620, 0.943034122827507320, +0.943017486847612000, 0.943000848510172850, 0.942984207815231730, 0.942967564762830060, 0.942950919353009450, 0.942934271585811560, 0.942917621461277670, 0.942900968979450080, +0.942884314140369990, 0.942867656944079150, 0.942850997390619170, 0.942834335480031700, 0.942817671212358490, 0.942801004587640930, 0.942784335605920680, 0.942767664267239900, +0.942750990571639910, 0.942734314519162450, 0.942717636109849160, 0.942700955343741760, 0.942684272220882020, 0.942667586741311350, 0.942650898905072030, 0.942634208712205380, +0.942617516162753240, 0.942600821256757260, 0.942584123994259280, 0.942567424375301060, 0.942550722399924100, 0.942534018068170170, 0.942517311380081440, 0.942500602335699540, +0.942483890935066020, 0.942467177178222810, 0.942450461065211580, 0.942433742596074260, 0.942417021770852630, 0.942400298589588070, 0.942383573052323120, 0.942366845159099300, +0.942350114909958240, 0.942333382304941900, 0.942316647344092150, 0.942299910027450840, 0.942283170355059370, 0.942266428326960280, 0.942249683943195190, 0.942232937203805850, +0.942216188108834120, 0.942199436658321950, 0.942182682852311220, 0.942165926690843760, 0.942149168173961100, 0.942132407301706000, 0.942115644074119740, 0.942098878491244410, +0.942082110553121850, 0.942065340259794050, 0.942048567611302960, 0.942031792607690430, 0.942015015248998000, 0.941998235535268400, 0.941981453466543270, 0.941964669042864470, +0.941947882264273950, 0.941931093130813800, 0.941914301642525880, 0.941897507799451920, 0.941880711601634450, 0.941863913049115320, 0.941847112141936280, 0.941830308880139520, +0.941813503263766890, 0.941796695292860590, 0.941779884967462570, 0.941763072287614580, 0.941746257253359140, 0.941729439864738000, 0.941712620121793350, 0.941695798024567150, +0.941678973573101370, 0.941662146767438200, 0.941645317607619380, 0.941628486093687540, 0.941611652225684550, 0.941594816003652360, 0.941577977427633160, 0.941561136497669040, +0.941544293213802060, 0.941527447576074320, 0.941510599584527650, 0.941493749239204810, 0.941476896540147660, 0.941460041487398150, 0.941443184080998700, 0.941426324320991160, +0.941409462207417840, 0.941392597740320800, 0.941375730919742030, 0.941358861745724250, 0.941341990218309330, 0.941325116337539350, 0.941308240103456710, 0.941291361516103380, +0.941274480575521650, 0.941257597281753400, 0.941240711634841460, 0.941223823634827820, 0.941206933281754530, 0.941190040575664020, 0.941173145516598250, 0.941156248104599750, +0.941139348339710580, 0.941122446221972720, 0.941105541751429130, 0.941088634928121560, 0.941071725752092520, 0.941054814223384110, 0.941037900342038600, 0.941020984108098420, +0.941004065521605760, 0.940987144582602690, 0.940970221291131950, 0.940953295647235730, 0.940936367650956340, 0.940919437302335960, 0.940902504601416890, 0.940885569548241650, +0.940868632142852210, 0.940851692385291430, 0.940834750275601480, 0.940817805813824680, 0.940800859000003320, 0.940783909834179810, 0.940766958316396450, 0.940750004446695760, +0.940733048225119830, 0.940716089651711500, 0.940699128726512960, 0.940682165449566620, 0.940665199820914900, 0.940648231840600090, 0.940631261508664720, 0.940614288825150970, +0.940597313790101700, 0.940580336403559200, 0.940563356665565900, 0.940546374576164080, 0.940529390135396490, 0.940512403343305330, 0.940495414199933100, 0.940478422705322110, +0.940461428859515450, 0.940444432662555060, 0.940427434114483710, 0.940410433215343680, 0.940393429965177610, 0.940376424364028020, 0.940359416411937320, 0.940342406108947700, +0.940325393455102470, 0.940308378450443790, 0.940291361095014100, 0.940274341388856020, 0.940257319332012060, 0.940240294924524770, 0.940223268166436530, 0.940206239057790330, +0.940189207598628670, 0.940172173788993870, 0.940155137628928660, 0.940138099118475570, 0.940121058257677330, 0.940104015046576370, 0.940086969485215080, 0.940069921573636780, +0.940052871311883530, 0.940035818699998190, 0.940018763738023290, 0.940001706426001450, 0.939984646763975310, 0.939967584751987610, 0.939950520390080650, 0.939933453678297610, +0.939916384616681030, 0.939899313205273530, 0.939882239444117640, 0.939865163333256200, 0.939848084872731860, 0.939831004062587020, 0.939813920902864860, 0.939796835393608030, +0.939779747534859040, 0.939762657326660760, 0.939745564769055690, 0.939728469862086800, 0.939711372605796740, 0.939694273000228010, 0.939677171045423810, 0.939660066741426660, +0.939642960088279410, 0.939625851086024810, 0.939608739734705490, 0.939591626034364300, 0.939574509985043770, 0.939557391586787300, 0.939540270839637310, 0.939523147743636770, +0.939506022298828180, 0.939488894505254630, 0.939471764362958870, 0.939454631871983640, 0.939437497032371560, 0.939420359844166050, 0.939403220307409530, 0.939386078422145050, +0.939368934188415380, 0.939351787606263370, 0.939334638675731970, 0.939317487396863830, 0.939300333769701790, 0.939283177794289160, 0.939266019470668570, 0.939248858798882870, +0.939231695778975140, 0.939214530410988120, 0.939197362694964790, 0.939180192630947760, 0.939163020218980570, 0.939145845459105840, 0.939128668351366440, 0.939111488895805310, +0.939094307092465550, 0.939077122941390010, 0.939059936442621650, 0.939042747596203210, 0.939025556402178110, 0.939008362860589200, 0.938991166971479330, 0.938973968734891580, +0.938956768150868930, 0.938939565219454210, 0.938922359940690400, 0.938905152314621020, 0.938887942341288690, 0.938870730020736510, 0.938853515353007540, 0.938836298338144750, +0.938819078976191210, 0.938801857267190010, 0.938784633211183880, 0.938767406808216460, 0.938750178058330500, 0.938732946961569060, 0.938715713517975340, 0.938698477727592300, +0.938681239590463010, 0.938663999106630680, 0.938646756276138030, 0.938629511099028810, 0.938612263575345770, 0.938595013705132100, 0.938577761488430970, 0.938560506925285360, +0.938543250015738460, 0.938525990759833120, 0.938508729157613190, 0.938491465209121410, 0.938474198914400980, 0.938456930273494970, 0.938439659286446680, 0.938422385953299300, +0.938405110274095900, 0.938387832248879450, 0.938370551877693690, 0.938353269160581480, 0.938335984097586230, 0.938318696688751010, 0.938301406934119010, 0.938284114833733420, +0.938266820387637650, 0.938249523595874550, 0.938232224458487860, 0.938214922975520560, 0.938197619147016050, 0.938180312973017520, 0.938163004453568150, 0.938145693588711250, +0.938128380378489890, 0.938111064822947820, 0.938093746922128100, 0.938076426676074050, 0.938059104084828840, 0.938041779148436010, 0.938024451866938610, 0.938007122240380190, +0.937989790268803580, 0.937972455952252760, 0.937955119290770910, 0.937937780284401220, 0.937920438933187000, 0.937903095237171750, 0.937885749196398780, 0.937868400810911160, +0.937851050080752760, 0.937833697005966750, 0.937816341586596550, 0.937798983822685450, 0.937781623714276980, 0.937764261261414320, 0.937746896464141110, 0.937729529322500310, +0.937712159836536000, 0.937694788006291250, 0.937677413831809580, 0.937660037313134410, 0.937642658450309030, 0.937625277243377080, 0.937607893692381960, 0.937590507797366750, +0.937573119558375630, 0.937555728975451700, 0.937538336048638450, 0.937520940777979320, 0.937503543163517810, 0.937486143205297550, 0.937468740903361520, 0.937451336257754010, +0.937433929268518100, 0.937416519935697410, 0.937399108259335480, 0.937381694239475700, 0.937364277876161720, 0.937346859169436940, 0.937329438119344880, 0.937312014725929400, +0.937294588989233900, 0.937277160909302020, 0.937259730486177170, 0.937242297719902970, 0.937224862610523070, 0.937207425158080980, 0.937189985362620100, 0.937172543224184530, +0.937155098742817550, 0.937137651918562800, 0.937120202751464020, 0.937102751241564720, 0.937085297388908440, 0.937067841193538700, 0.937050382655499670, 0.937032921774834660, +0.937015458551587300, 0.936997992985801330, 0.936980525077520390, 0.936963054826788210, 0.936945582233648320, 0.936928107298144130, 0.936910630020320050, 0.936893150400219250, +0.936875668437885720, 0.936858184133362970, 0.936840697486694850, 0.936823208497924890, 0.936805717167096600, 0.936788223494254390, 0.936770727479441570, 0.936753229122701870, +0.936735728424079150, 0.936718225383617150, 0.936700720001359620, 0.936683212277350190, 0.936665702211632480, 0.936648189804250800, 0.936630675055248660, 0.936613157964669820, +0.936595638532558120, 0.936578116758957300, 0.936560592643911230, 0.936543066187463640, 0.936525537389658050, 0.936508006250538980, 0.936490472770149850, 0.936472936948534510, +0.936455398785736910, 0.936437858281800710, 0.936420315436769960, 0.936402770250688080, 0.936385222723599590, 0.936367672855548010, 0.936350120646577300, 0.936332566096731210, +0.936315009206053820, 0.936297449974588860, 0.936279888402380190, 0.936262324489471660, 0.936244758235907470, 0.936227189641731460, 0.936209618706987490, 0.936192045431719410, +0.936174469815971300, 0.936156891859786900, 0.936139311563210400, 0.936121728926285200, 0.936104143949056060, 0.936086556631566590, 0.936068966973860660, 0.936051374975982340, +0.936033780637975600, 0.936016183959884400, 0.935998584941752370, 0.935980983583624250, 0.935963379885543680, 0.935945773847554620, 0.935928165469701150, 0.935910554752027220, +0.935892941694576930, 0.935875326297394340, 0.935857708560523080, 0.935840088484007900, 0.935822466067892430, 0.935804841312220860, 0.935787214217037140, 0.935769584782385370, +0.935751953008309710, 0.935734318894853810, 0.935716682442062410, 0.935699043649979360, 0.935681402518648620, 0.935663759048114390, 0.935646113238420840, 0.935628465089611950, +0.935610814601731900, 0.935593161774824540, 0.935575506608934520, 0.935557849104105780, 0.935540189260382400, 0.935522527077808590, 0.935504862556428400, 0.935487195696286130, +0.935469526497425760, 0.935451854959891360, 0.935434181083727560, 0.935416504868978430, 0.935398826315687940, 0.935381145423900380, 0.935363462193659960, 0.935345776625010950, +0.935328088717997110, 0.935310398472663400, 0.935292705889053670, 0.935275010967212220, 0.935257313707183240, 0.935239614109010910, 0.935221912172739640, 0.935204207898413520, +0.935186501286076610, 0.935168792335773660, 0.935151081047548850, 0.935133367421446260, 0.935115651457510300, 0.935097933155785150, 0.935080212516315230, 0.935062489539144840, +0.935044764224317810, 0.935027036571879240, 0.935009306581872980, 0.934991574254343540, 0.934973839589335110, 0.934956102586892210, 0.934938363247058920, 0.934920621569879430, +0.934902877555398800, 0.934885131203660900, 0.934867382514710130, 0.934849631488590900, 0.934831878125347630, 0.934814122425024710, 0.934796364387666450, 0.934778604013317030, +0.934760841302021310, 0.934743076253823470, 0.934725308868768030, 0.934707539146899300, 0.934689767088261680, 0.934671992692899690, 0.934654215960857400, 0.934636436892179790, +0.934618655486911250, 0.934600871745095980, 0.934583085666778500, 0.934565297252003320, 0.934547506500814970, 0.934529713413257750, 0.934511917989376050, 0.934494120229214740, +0.934476320132818230, 0.934458517700230920, 0.934440712931497220, 0.934422905826661880, 0.934405096385769180, 0.934387284608863780, 0.934369470495989840, 0.934351654047192560, +0.934333835262516010, 0.934316014142005050, 0.934298190685703970, 0.934280364893657400, 0.934262536765909980, 0.934244706302505890, 0.934226873503490320, 0.934209038368907560, +0.934191200898802250, 0.934173361093218910, 0.934155518952202170, 0.934137674475796650, 0.934119827664046890, 0.934101978516997280, 0.934084127034693010, 0.934066273217178500, +0.934048417064498260, 0.934030558576696920, 0.934012697753819230, 0.933994834595909820, 0.933976969103013310, 0.933959101275174120, 0.933941231112437430, 0.933923358614847650, +0.933905483782449530, 0.933887606615287690, 0.933869727113406770, 0.933851845276851610, 0.933833961105666410, 0.933816074599896680, 0.933798185759586840, 0.933780294584781510, +0.933762401075525330, 0.933744505231863250, 0.933726607053839920, 0.933708706541500070, 0.933690803694888110, 0.933672898514049440, 0.933654990999028490, 0.933637081149870100, +0.933619168966619010, 0.933601254449320070, 0.933583337598017930, 0.933565418412757090, 0.933547496893583070, 0.933529573040540290, 0.933511646853673600, 0.933493718333027860, +0.933475787478647680, 0.933457854290578150, 0.933439918768863900, 0.933421980913549550, 0.933404040724680640, 0.933386098202301560, 0.933368153346457290, 0.933350206157192550, +0.933332256634552330, 0.933314304778581460, 0.933296350589324810, 0.933278394066827110, 0.933260435211133550, 0.933242474022288990, 0.933224510500338280, 0.933206544645326260, +0.933188576457297910, 0.933170605936298080, 0.933152633082371400, 0.933134657895563490, 0.933116680375918990, 0.933098700523482650, 0.933080718338299640, 0.933062733820414820, +0.933044746969873160, 0.933026757786719730, 0.933008766270998930, 0.932990772422756630, 0.932972776242037450, 0.932954777728886240, 0.932936776883348080, 0.932918773705468050, +0.932900768195291000, 0.932882760352861770, 0.932864750178225900, 0.932846737671428230, 0.932828722832513720, 0.932810705661527350, 0.932792686158514180, 0.932774664323519410, +0.932756640156587880, 0.932738613657764450, 0.932720584827094860, 0.932702553664623730, 0.932684520170396270, 0.932666484344457540, 0.932648446186852500, 0.932630405697626450, +0.932612362876824360, 0.932594317724490970, 0.932576270240672130, 0.932558220425412700, 0.932540168278757630, 0.932522113800752230, 0.932504056991441450, 0.932485997850870610, +0.932467936379084430, 0.932449872576128660, 0.932431806442048260, 0.932413737976888310, 0.932395667180694110, 0.932377594053510620, 0.932359518595383240, 0.932341440806357060, +0.932323360686476920, 0.932305278235788680, 0.932287193454337300, 0.932269106342167860, 0.932251016899325770, 0.932232925125856090, 0.932214831021804020, 0.932196734587214970, +0.932178635822133780, 0.932160534726606200, 0.932142431300677420, 0.932124325544392510, 0.932106217457796760, 0.932088107040935480, 0.932069994293853840, 0.932051879216597050, +0.932033761809210830, 0.932015642071740150, 0.931997520004230420, 0.931979395606726930, 0.931961268879274880, 0.931943139821919670, 0.931925008434706600, 0.931906874717680740, +0.931888738670887950, 0.931870600294373410, 0.931852459588182300, 0.931834316552360040, 0.931816171186952040, 0.931798023492003580, 0.931779873467559640, 0.931761721113666510, +0.931743566430368930, 0.931725409417712540, 0.931707250075742620, 0.931689088404504480, 0.931670924404043750, 0.931652758074405620, 0.931634589415635260, 0.931616418427778760, +0.931598245110881300, 0.931580069464988170, 0.931561891490144900, 0.931543711186396780, 0.931525528553789560, 0.931507343592368420, 0.931489156302178540, 0.931470966683266230, +0.931452774735676340, 0.931434580459454710, 0.931416383854646420, 0.931398184921297330, 0.931379983659452740, 0.931361780069157820, 0.931343574150458870, 0.931325365903400870, +0.931307155328029550, 0.931288942424390310, 0.931270727192528680, 0.931252509632490290, 0.931234289744320540, 0.931216067528064850, 0.931197842983769180, 0.931179616111479040, +0.931161386911239840, 0.931143155383097110, 0.931124921527096470, 0.931106685343283560, 0.931088446831704000, 0.931070205992402980, 0.931051962825426680, 0.931033717330820520, +0.931015469508630120, 0.930997219358901010, 0.930978966881678920, 0.930960712077009260, 0.930942454944937660, 0.930924195485510090, 0.930905933698772170, 0.930887669584769320, +0.930869403143547380, 0.930851134375151880, 0.930832863279628550, 0.930814589857023030, 0.930796314107380730, 0.930778036030748050, 0.930759755627170170, 0.930741472896692960, +0.930723187839362030, 0.930704900455223140, 0.930686610744322020, 0.930668318706704080, 0.930650024342415620, 0.930631727651502150, 0.930613428634009310, 0.930595127289982840, +0.930576823619468700, 0.930558517622512400, 0.930540209299159820, 0.930521898649456450, 0.930503585673448600, 0.930485270371181780, 0.930466952742701860, 0.930448632788054450, +0.930430310507285530, 0.930411985900440830, 0.930393658967566100, 0.930375329708706960, 0.930356998123909820, 0.930338664213220200, 0.930320327976683850, 0.930301989414346720, +0.930283648526254670, 0.930265305312453440, 0.930246959772988660, 0.930228611907906730, 0.930210261717253300, 0.930191909201074310, 0.930173554359415400, 0.930155197192322760, +0.930136837699842010, 0.930118475882019120, 0.930100111738899840, 0.930081745270530560, 0.930063376476956920, 0.930045005358224870, 0.930026631914380290, 0.930008256145469110, +0.929989878051537320, 0.929971497632630760, 0.929953114888795170, 0.929934729820077190, 0.929916342426522320, 0.929897952708176660, 0.929879560665086040, 0.929861166297296540, +0.929842769604854120, 0.929824370587804430, 0.929805969246194190, 0.929787565580069030, 0.929769159589474930, 0.929750751274457940, 0.929732340635064050, 0.929713927671339310, +0.929695512383329810, 0.929677094771081070, 0.929658674834640040, 0.929640252574052250, 0.929621827989363880, 0.929603401080621010, 0.929584971847869480, 0.929566540291155600, +0.929548106410525100, 0.929529670206024620, 0.929511231677699890, 0.929492790825597210, 0.929474347649762440, 0.929455902150241870, 0.929437454327081470, 0.929419004180327520, +0.929400551710025670, 0.929382096916222870, 0.929363639798964750, 0.929345180358297500, 0.929326718594267300, 0.929308254506920340, 0.929289788096302800, 0.929271319362460660, +0.929252848305439970, 0.929234374925287490, 0.929215899222049170, 0.929197421195770980, 0.929178940846499210, 0.929160458174280170, 0.929141973179159920, 0.929123485861184430, +0.929104996220400550, 0.929086504256854240, 0.929068009970591580, 0.929049513361658970, 0.929031014430102610, 0.929012513175968560, 0.928994009599303340, 0.928975503700152800, +0.928956995478563700, 0.928938484934582200, 0.928919972068254500, 0.928901456879626890, 0.928882939368745550, 0.928864419535656900, 0.928845897380407240, 0.928827372903042510, +0.928808846103609590, 0.928790316982154640, 0.928771785538723860, 0.928753251773363650, 0.928734715686120320, 0.928716177277040140, 0.928697636546169210, 0.928679093493554490, +0.928660548119242040, 0.928642000423278270, 0.928623450405709480, 0.928604898066582090, 0.928586343405942480, 0.928567786423836970, 0.928549227120311630, 0.928530665495413520, +0.928512101549188840, 0.928493535281683880, 0.928474966692945050, 0.928456395783018860, 0.928437822551951620, 0.928419246999789500, 0.928400669126579590, 0.928382088932368070, +0.928363506417201330, 0.928344921581125800, 0.928326334424187880, 0.928307744946434200, 0.928289153147911160, 0.928270559028664950, 0.928251962588742650, 0.928233363828190440, +0.928214762747054720, 0.928196159345382240, 0.928177553623219300, 0.928158945580612400, 0.928140335217608300, 0.928121722534252850, 0.928103107530593550, 0.928084490206676490, +0.928065870562548190, 0.928047248598255160, 0.928028624313844030, 0.928009997709361320, 0.927991368784853330, 0.927972737540367240, 0.927954103975949240, 0.927935468091646070, +0.927916829887504240, 0.927898189363570270, 0.927879546519890800, 0.927860901356512560, 0.927842253873481740, 0.927823604070845520, 0.927804951948650310, 0.927786297506942750, +0.927767640745769450, 0.927748981665177050, 0.927730320265212180, 0.927711656545921250, 0.927692990507351430, 0.927674322149549150, 0.927655651472561020, 0.927636978476433890, +0.927618303161214190, 0.927599625526948750, 0.927580945573684310, 0.927562263301467180, 0.927543578710344650, 0.927524891800363240, 0.927506202571569570, 0.927487511024010390, +0.927468817157732440, 0.927450120972782450, 0.927431422469207070, 0.927412721647052910, 0.927394018506367270, 0.927375313047196560, 0.927356605269587630, 0.927337895173587110, +0.927319182759241860, 0.927300468026598600, 0.927281750975703980, 0.927263031606605170, 0.927244309919348920, 0.927225585913981850, 0.927206859590550710, 0.927188130949102570, +0.927169399989684060, 0.927150666712342030, 0.927131931117123000, 0.927113193204074370, 0.927094452973242890, 0.927075710424675290, 0.927056965558418320, 0.927038218374519050, +0.927019468873024110, 0.927000717053980570, 0.926981962917434950, 0.926963206463434660, 0.926944447692026440, 0.926925686603257030, 0.926906923197173490, 0.926888157473822580, +0.926869389433251260, 0.926850619075506140, 0.926831846400634870, 0.926813071408683960, 0.926794294099700270, 0.926775514473730970, 0.926756732530822800, 0.926737948271022850, +0.926719161694378070, 0.926700372800934980, 0.926681581590741320, 0.926662788063843720, 0.926643992220289150, 0.926625194060124560, 0.926606393583397030, 0.926587590790153400, +0.926568785680440540, 0.926549978254306070, 0.926531168511796730, 0.926512356452959370, 0.926493542077841070, 0.926474725386489010, 0.926455906378950140, 0.926437085055271450, +0.926418261415499770, 0.926399435459682730, 0.926380607187867080, 0.926361776600100000, 0.926342943696428330, 0.926324108476899390, 0.926305270941560230, 0.926286431090457830, +0.926267588923639030, 0.926248744441151570, 0.926229897643042310, 0.926211048529358320, 0.926192197100146660, 0.926173343355454430, 0.926154487295328900, 0.926135628919816930, +0.926116768228966050, 0.926097905222823310, 0.926079039901435920, 0.926060172264850820, 0.926041302313115320, 0.926022430046276490, 0.926003555464381730, 0.925984678567477680, +0.925965799355612180, 0.925946917828832320, 0.925928033987185040, 0.925909147830717760, 0.925890259359477550, 0.925871368573511820, 0.925852475472867530, 0.925833580057591750, +0.925814682327732340, 0.925795782283336250, 0.925776879924450790, 0.925757975251123020, 0.925739068263400360, 0.925720158961329980, 0.925701247344958960, 0.925682333414335030, +0.925663417169505400, 0.925644498610517120, 0.925625577737417600, 0.925606654550254260, 0.925587729049074160, 0.925568801233924820, 0.925549871104853090, 0.925530938661907050, +0.925512003905133550, 0.925493066834580210, 0.925474127450294120, 0.925455185752322660, 0.925436241740713370, 0.925417295415512990, 0.925398346776769800, 0.925379395824530770, +0.925360442558843200, 0.925341486979754490, 0.925322529087312050, 0.925303568881563400, 0.925284606362555720, 0.925265641530336300, 0.925246674384953010, 0.925227704926453120, +0.925208733154883830, 0.925189759070292880, 0.925170782672727450, 0.925151803962235060, 0.925132822938863120, 0.925113839602658920, 0.925094853953670300, 0.925075865991944580, +0.925056875717529260, 0.925037883130471750, 0.925018888230819460, 0.924999891018620010, 0.924980891493920490, 0.924961889656769070, 0.924942885507212930, 0.924923879045299600, +0.924904870271076600, 0.924885859184591320, 0.924866845785891400, 0.924847830075024470, 0.924828812052037600, 0.924809791716978970, 0.924790769069895880, 0.924771744110835850, +0.924752716839846500, 0.924733687256975360, 0.924714655362270040, 0.924695621155777970, 0.924676584637546650, 0.924657545807624160, 0.924638504666057680, 0.924619461212895070, +0.924600415448183830, 0.924581367371971500, 0.924562316984305690, 0.924543264285233810, 0.924524209274804170, 0.924505151953063930, 0.924486092320060850, 0.924467030375842440, +0.924447966120456540, 0.924428899553950690, 0.924409830676372610, 0.924390759487769720, 0.924371685988190080, 0.924352610177681330, 0.924333532056291100, 0.924314451624067000, +0.924295368881056680, 0.924276283827308090, 0.924257196462868300, 0.924238106787785950, 0.924219014802108330, 0.924199920505883180, 0.924180823899158230, 0.924161724981981240, +0.924142623754399820, 0.924123520216461940, 0.924104414368214890, 0.924085306209707190, 0.924066195740986140, 0.924047082962099700, 0.924027967873095490, 0.924008850474021370, +0.923989730764925080, 0.923970608745854570, 0.923951484416857150, 0.923932357777981330, 0.923913228829274620, 0.923894097570784890, 0.923874964002559860, 0.923855828124647390, +0.923836689937095450, 0.923817549439951420, 0.923798406633263850, 0.923779261517080230, 0.923760114091448430, 0.923740964356416390, 0.923721812312031990, 0.923702657958342940, +0.923683501295397340, 0.923664342323242680, 0.923645181041927390, 0.923626017451499190, 0.923606851552005950, 0.923587683343495610, 0.923568512826016040, 0.923549339999615190, +0.923530164864341030, 0.923510987420241070, 0.923491807667364050, 0.923472625605757380, 0.923453441235469240, 0.923434254556547480, 0.923415065569040070, 0.923395874272995080, +0.923376680668460010, 0.923357484755483520, 0.923338286534113320, 0.923319086004397490, 0.923299883166383890, 0.923280678020120590, 0.923261470565655660, 0.923242260803036950, +0.923223048732312310, 0.923203834353530370, 0.923184617666738870, 0.923165398671985770, 0.923146177369319140, 0.923126953758787170, 0.923107727840437820, 0.923088499614318710, +0.923069269080478820, 0.923050036238965640, 0.923030801089827490, 0.923011563633112210, 0.922992323868868090, 0.922973081797143100, 0.922953837417985530, 0.922934590731442910, +0.922915341737564180, 0.922896090436397200, 0.922876836827989820, 0.922857580912390450, 0.922838322689647160, 0.922819062159808020, 0.922799799322921220, 0.922780534179034610, +0.922761266728196920, 0.922741996970456110, 0.922722724905860380, 0.922703450534457680, 0.922684173856296530, 0.922664894871424890, 0.922645613579890610, 0.922626329981742650, +0.922607044077028870, 0.922587755865797550, 0.922568465348096780, 0.922549172523974840, 0.922529877393480020, 0.922510579956660530, 0.922491280213564190, 0.922471978164239980, +0.922452673808735860, 0.922433367147100000, 0.922414058179380820, 0.922394746905626390, 0.922375433325885120, 0.922356117440204960, 0.922336799248634880, 0.922317478751222720, +0.922298155948016900, 0.922278830839065700, 0.922259503424417430, 0.922240173704120370, 0.922220841678222940, 0.922201507346772980, 0.922182170709819670, 0.922162831767410870, +0.922143490519594990, 0.922124146966420420, 0.922104801107935470, 0.922085452944188530, 0.922066102475227910, 0.922046749701101790, 0.922027394621859120, 0.922008037237547870, +0.921988677548216560, 0.921969315553913590, 0.921949951254687370, 0.921930584650586190, 0.921911215741658240, 0.921891844527952590, 0.921872471009517300, 0.921853095186400910, +0.921833717058651690, 0.921814336626318290, 0.921794953889448990, 0.921775568848092200, 0.921756181502296320, 0.921736791852110220, 0.921717399897582170, 0.921698005638760700, +0.921678609075694100, 0.921659210208431000, 0.921639809037019920, 0.921620405561509260, 0.921600999781947320, 0.921581591698383160, 0.921562181310865090, 0.921542768619441510, +0.921523353624160930, 0.921503936325072100, 0.921484516722223420, 0.921465094815663080, 0.921445670605440250, 0.921426244091603340, 0.921406815274200870, 0.921387384153281250, +0.921367950728893210, 0.921348515001085390, 0.921329076969906180, 0.921309636635403880, 0.921290193997627900, 0.921270749056626540, 0.921251301812448190, 0.921231852265141590, +0.921212400414755380, 0.921192946261338190, 0.921173489804938180, 0.921154031045604890, 0.921134569983386500, 0.921115106618331740, 0.921095640950489130, 0.921076172979907510, +0.921056702706635420, 0.921037230130721470, 0.921017755252214300, 0.920998278071162970, 0.920978798587615890, 0.920959316801621910, 0.920939832713229540, 0.920920346322487650, +0.920900857629444960, 0.920881366634150100, 0.920861873336651370, 0.920842377736998400, 0.920822879835239470, 0.920803379631423340, 0.920783877125598730, 0.920764372317814490, +0.920744865208119270, 0.920725355796561560, 0.920705844083190780, 0.920686330068055340, 0.920666813751204180, 0.920647295132685950, 0.920627774212549490, 0.920608250990843540, +0.920588725467617050, 0.920569197642918340, 0.920549667516797010, 0.920530135089301590, 0.920510600360480710, 0.920491063330383330, 0.920471523999058410, 0.920451982366554570, +0.920432438432920770, 0.920412892198205550, 0.920393343662458510, 0.920373792825728070, 0.920354239688063070, 0.920334684249512590, 0.920315126510125370, 0.920295566469950250, +0.920276004129035980, 0.920256439487431970, 0.920236872545186930, 0.920217303302349630, 0.920197731758969130, 0.920178157915094270, 0.920158581770774030, 0.920139003326057360, +0.920119422580992770, 0.920099839535630020, 0.920080254190017710, 0.920060666544204710, 0.920041076598240080, 0.920021484352172680, 0.920001889806051580, 0.919982292959925510, +0.919962693813843990, 0.919943092367855760, 0.919923488622009790, 0.919903882576355030, 0.919884274230940660, 0.919864663585815530, 0.919845050641028840, 0.919825435396629090, +0.919805817852666130, 0.919786198009188590, 0.919766575866245550, 0.919746951423886180, 0.919727324682159340, 0.919707695641114210, 0.919688064300799860, 0.919668430661264910, +0.919648794722559340, 0.919629156484731760, 0.919609515947831250, 0.919589873111906990, 0.919570227977008050, 0.919550580543183500, 0.919530930810482210, 0.919511278778953890, +0.919491624448647400, 0.919471967819611820, 0.919452308891896330, 0.919432647665550110, 0.919412984140622220, 0.919393318317161980, 0.919373650195218000, 0.919353979774840240, +0.919334307056077550, 0.919314632038979010, 0.919294954723594020, 0.919275275109971530, 0.919255593198160970, 0.919235908988211390, 0.919216222480171650, 0.919196533674091710, +0.919176842570020410, 0.919157149168007060, 0.919137453468100830, 0.919117755470350910, 0.919098055174806690, 0.919078352581516930, 0.919058647690531690, 0.919038940501899710, +0.919019231015670510, 0.918999519231893160, 0.918979805150617060, 0.918960088771891390, 0.918940370095765570, 0.918920649122288440, 0.918900925851510060, 0.918881200283479300, +0.918861472418245560, 0.918841742255858240, 0.918822009796366410, 0.918802275039819700, 0.918782537986266860, 0.918762798635758050, 0.918743056988342240, 0.918723313044068730, +0.918703566802987040, 0.918683818265146450, 0.918664067430596250, 0.918644314299385870, 0.918624558871564360, 0.918604801147181790, 0.918585041126287250, 0.918565278808930130, +0.918545514195159730, 0.918525747285025670, 0.918505978078577150, 0.918486206575863660, 0.918466432776934400, 0.918446656681839340, 0.918426878290627640, 0.918407097603348820, +0.918387314620052190, 0.918367529340787250, 0.918347741765603520, 0.918327951894550080, 0.918308159727677100, 0.918288365265033770, 0.918268568506669490, 0.918248769452633780, +0.918228968102976160, 0.918209164457746140, 0.918189358516993240, 0.918169550280766520, 0.918149739749116290, 0.918129926922091720, 0.918110111799742330, 0.918090294382117640, +0.918070474669267280, 0.918050652661240750, 0.918030828358087470, 0.918011001759856840, 0.917991172866599040, 0.917971341678363360, 0.917951508195199220, 0.917931672417156450, +0.917911834344284360, 0.917891993976632790, 0.917872151314250820, 0.917852306357188840, 0.917832459105496160, 0.917812609559222280, 0.917792757718416840, 0.917772903583129570, +0.917753047153410000, 0.917733188429307840, 0.917713327410872300, 0.917693464098153780, 0.917673598491201670, 0.917653730590065610, 0.917633860394795110, 0.917613987905440020, +0.917594113122049970, 0.917574236044674250, 0.917554356673363270, 0.917534475008166430, 0.917514591049133470, 0.917494704796314010, 0.917474816249757690, 0.917454925409514340, +0.917435032275633830, 0.917415136848165220, 0.917395239127159260, 0.917375339112665110, 0.917355436804732640, 0.917335532203411570, 0.917315625308751660, 0.917295716120802630, +0.917275804639614440, 0.917255890865236290, 0.917235974797718790, 0.917216056437111350, 0.917196135783463820, 0.917176212836825930, 0.917156287597247430, 0.917136360064778280, +0.917116430239467870, 0.917096498121366730, 0.917076563710524370, 0.917056627006990640, 0.917036688010815280, 0.917016746722048250, 0.916996803140739280, 0.916976857266938340, +0.916956909100694830, 0.916936958642059490, 0.916917005891081720, 0.916897050847811480, 0.916877093512298620, 0.916857133884593000, 0.916837171964744460, 0.916817207752802730, +0.916797241248818340, 0.916777272452840800, 0.916757301364920170, 0.916737327985106210, 0.916717352313448970, 0.916697374349998320, 0.916677394094804200, 0.916657411547916250, +0.916637426709385190, 0.916617439579260450, 0.916597450157592200, 0.916577458444430390, 0.916557464439824780, 0.916537468143825640, 0.916517469556482720, 0.916497468677845870, +0.916477465507965720, 0.916457460046891770, 0.916437452294674330, 0.916417442251363120, 0.916397429917008340, 0.916377415291660060, 0.916357398375367780, 0.916337379168182480, +0.916317357670153650, 0.916297333881331390, 0.916277307801765860, 0.916257279431507140, 0.916237248770605080, 0.916217215819109980, 0.916197180577071450, 0.916177143044540340, +0.916157103221566290, 0.916137061108199590, 0.916117016704490190, 0.916096970010488290, 0.916076921026243940, 0.916056869751807330, 0.916036816187228100, 0.916016760332557300, +0.915996702187844460, 0.915976641753139980, 0.915956579028493810, 0.915936514013956260, 0.915916446709577390, 0.915896377115407060, 0.915876305231496210, 0.915856231057894490, +0.915836154594652290, 0.915816075841819570, 0.915795994799446730, 0.915775911467583970, 0.915755825846281350, 0.915735737935588820, 0.915715647735557360, 0.915695555246236690, +0.915675460467677230, 0.915655363399929030, 0.915635264043042520, 0.915615162397067750, 0.915595058462054800, 0.915574952238054520, 0.915554843725116860, 0.915534732923292020, +0.915514619832630490, 0.915494504453182260, 0.915474386784997930, 0.915454266828127470, 0.915434144582621070, 0.915414020048529680, 0.915393893225903250, 0.915373764114792100, +0.915353632715246500, 0.915333499027316750, 0.915313363051053370, 0.915293224786506540, 0.915273084233726330, 0.915252941392763700, 0.915232796263668710, 0.915212648846491780, +0.915192499141283200, 0.915172347148093370, 0.915152192866972690, 0.915132036297971240, 0.915111877441139980, 0.915091716296528970, 0.915071552864188730, 0.915051387144169670, +0.915031219136522080, 0.915011048841296470, 0.914990876258543140, 0.914970701388312380, 0.914950524230655150, 0.914930344785621630, 0.914910163053262340, 0.914889979033627570, +0.914869792726767830, 0.914849604132733530, 0.914829413251575410, 0.914809220083343200, 0.914789024628088420, 0.914768826885861140, 0.914748626856711660, 0.914728424540690700, +0.914708219937848680, 0.914688013048235990, 0.914667803871903050, 0.914647592408900920, 0.914627378659279790, 0.914607162623090160, 0.914586944300382680, 0.914566723691207840, +0.914546500795616170, 0.914526275613658290, 0.914506048145384390, 0.914485818390845640, 0.914465586350092450, 0.914445352023175230, 0.914425115410144600, 0.914404876511051180, +0.914384635325945610, 0.914364391854878170, 0.914344146097899930, 0.914323898055061420, 0.914303647726413260, 0.914283395112005850, 0.914263140211890040, 0.914242883026116230, +0.914222623554735380, 0.914202361797797570, 0.914182097755354190, 0.914161831427455550, 0.914141562814152380, 0.914121291915495180, 0.914101018731534930, 0.914080743262322030, +0.914060465507907200, 0.914040185468340980, 0.914019903143674650, 0.913999618533958500, 0.913979331639243390, 0.913959042459579820, 0.913938750995018760, 0.913918457245610720, +0.913898161211406320, 0.913877862892456760, 0.913857562288812540, 0.913837259400524520, 0.913816954227643200, 0.913796646770219660, 0.913776337028304410, 0.913756025001948300, +0.913735710691201850, 0.913715394096116350, 0.913695075216742540, 0.913674754053130920, 0.913654430605332470, 0.913634104873397910, 0.913613776857378100, 0.913593446557323770, +0.913573113973285560, 0.913552779105314960, 0.913532441953462280, 0.913512102517778590, 0.913491760798314620, 0.913471416795121230, 0.913451070508249360, 0.913430721937749430, +0.913410371083673070, 0.913390017946070780, 0.913369662524993410, 0.913349304820491930, 0.913328944832617060, 0.913308582561420000, 0.913288218006951370, 0.913267851169261900, +0.913247482048403110, 0.913227110644425630, 0.913206736957380420, 0.913186360987318310, 0.913165982734290280, 0.913145602198347390, 0.913125219379540050, 0.913104834277920110, +0.913084446893537960, 0.913064057226444790, 0.913043665276691450, 0.913023271044328900, 0.913002874529408310, 0.912982475731980440, 0.912962074652096000, 0.912941671289806740, +0.912921265645163290, 0.912900857718216720, 0.912880447509017980, 0.912860035017618140, 0.912839620244068170, 0.912819203188419250, 0.912798783850721880, 0.912778362231027930, +0.912757938329388120, 0.912737512145853410, 0.912717083680474880, 0.912696652933303710, 0.912676219904390850, 0.912655784593787160, 0.912635347001544360, 0.912614907127713090, +0.912594464972344640, 0.912574020535489970, 0.912553573817200370, 0.912533124817526690, 0.912512673536520320, 0.912492219974231800, 0.912471764130713180, 0.912451306006015090, +0.912430845600188830, 0.912410382913285360, 0.912389917945355950, 0.912369450696451700, 0.912348981166623880, 0.912328509355923250, 0.912308035264401740, 0.912287558892110110, +0.912267080239099530, 0.912246599305421290, 0.912226116091126580, 0.912205630596266580, 0.912185142820892140, 0.912164652765055210, 0.912144160428806640, 0.912123665812197610, +0.912103168915279430, 0.912082669738103370, 0.912062168280720620, 0.912041664543182470, 0.912021158525539780, 0.912000650227844600, 0.911980139650147680, 0.911959626792500530, +0.911939111654954230, 0.911918594237560280, 0.911898074540369750, 0.911877552563433610, 0.911857028306804040, 0.911836501770531880, 0.911815972954668430, 0.911795441859265090, +0.911774908484373150, 0.911754372830043900, 0.911733834896328750, 0.911713294683278660, 0.911692752190945700, 0.911672207419380820, 0.911651660368635430, 0.911631111038760930, +0.911610559429808620, 0.911590005541829900, 0.911569449374876270, 0.911548890928998490, 0.911528330204248950, 0.911507767200678610, 0.911487201918338760, 0.911466634357280920, +0.911446064517556500, 0.911425492399217000, 0.911404918002313380, 0.911384341326897720, 0.911363762373021300, 0.911343181140735430, 0.911322597630091710, 0.911302011841141350, +0.911281423773936060, 0.911260833428527260, 0.911240240804965910, 0.911219645903304290, 0.911199048723593700, 0.911178449265885320, 0.911157847530230990, 0.911137243516681910, +0.911116637225289790, 0.911096028656106060, 0.911075417809181890, 0.911054804684569450, 0.911034189282320160, 0.911013571602485310, 0.910992951645116510, 0.910972329410265400, +0.910951704897983380, 0.910931078108321860, 0.910910449041332890, 0.910889817697067890, 0.910869184075578260, 0.910848548176915740, 0.910827910001131840, 0.910807269548278060, +0.910786626818406280, 0.910765981811567430, 0.910745334527814030, 0.910724684967197380, 0.910704033129768890, 0.910683379015580390, 0.910662722624683400, 0.910642063957129650, +0.910621403012970340, 0.910600739792257970, 0.910580074295043620, 0.910559406521379120, 0.910538736471316220, 0.910518064144906330, 0.910497389542201390, 0.910476712663252920, +0.910456033508112330, 0.910435352076832020, 0.910414668369463280, 0.910393982386057840, 0.910373294126667560, 0.910352603591343960, 0.910331910780138860, 0.910311215693104030, +0.910290518330290840, 0.910269818691751610, 0.910249116777537840, 0.910228412587701370, 0.910207706122293850, 0.910186997381366990, 0.910166286364972650, 0.910145573073162240, +0.910124857505988370, 0.910104139663502230, 0.910083419545755780, 0.910062697152800750, 0.910041972484688990, 0.910021245541472350, 0.910000516323202560, 0.909979784829931140, +0.909959051061710600, 0.909938315018592460, 0.909917576700628450, 0.909896836107870530, 0.909876093240370660, 0.909855348098180360, 0.909834600681351470, 0.909813850989936390, +0.909793099023986640, 0.909772344783554180, 0.909751588268690850, 0.909730829479448610, 0.909710068415879200, 0.909689305078034690, 0.909668539465966490, 0.909647771579727320, +0.909627001419368810, 0.909606228984942700, 0.909585454276501060, 0.909564677294095740, 0.909543898037778800, 0.909523116507602090, 0.909502332703617130, 0.909481546625876880, +0.909460758274432620, 0.909439967649336540, 0.909419174750640490, 0.909398379578396530, 0.909377582132656630, 0.909356782413472400, 0.909335980420896580, 0.909315176154980810, +0.909294369615777140, 0.909273560803337430, 0.909252749717713860, 0.909231936358958490, 0.909211120727123290, 0.909190302822259880, 0.909169482644420990, 0.909148660193658480, +0.909127835470024290, 0.909107008473570620, 0.909086179204349310, 0.909065347662412650, 0.909044513847812490, 0.909023677760600780, 0.909002839400830150, 0.908981998768552570, +0.908961155863819870, 0.908940310686684350, 0.908919463237197970, 0.908898613515413010, 0.908877761521381110, 0.908856907255155220, 0.908836050716786970, 0.908815191906328760, +0.908794330823832430, 0.908773467469350280, 0.908752601842934490, 0.908731733944637240, 0.908710863774510160, 0.908689991332606420, 0.908669116618977650, 0.908648239633676140, +0.908627360376753960, 0.908606478848263400, 0.908585595048256640, 0.908564708976785540, 0.908543820633903040, 0.908522930019661000, 0.908502037134111600, 0.908481141977307120, +0.908460244549299740, 0.908439344850141770, 0.908418442879885490, 0.908397538638582750, 0.908376632126286500, 0.908355723343048590, 0.908334812288921540, 0.908313898963957310, +0.908292983368208410, 0.908272065501727010, 0.908251145364565420, 0.908230222956775690, 0.908209298278410680, 0.908188371329522460, 0.908167442110163430, 0.908146510620385650, +0.908125576860241650, 0.908104640829783700, 0.908083702529063790, 0.908062761958134960, 0.908041819117049180, 0.908020874005858960, 0.907999926624616480, 0.907978976973374150, +0.907958025052184480, 0.907937070861099760, 0.907916114400171840, 0.907895155669454110, 0.907874194668998550, 0.907853231398857430, 0.907832265859083280, 0.907811298049728380, +0.907790327970845250, 0.907769355622486400, 0.907748381004703670, 0.907727404117550370, 0.907706424961078670, 0.907685443535340860, 0.907664459840389350, 0.907643473876276750, +0.907622485643055590, 0.907601495140777700, 0.907580502369496500, 0.907559507329263940, 0.907538510020132750, 0.907517510442155230, 0.907496508595383890, 0.907475504479871350, +0.907454498095670030, 0.907433489442832090, 0.907412478521410830, 0.907391465331458310, 0.907370449873027170, 0.907349432146169810, 0.907328412150938960, 0.907307389887387130, +0.907286365355566390, 0.907265338555530150, 0.907244309487330480, 0.907223278151020110, 0.907202244546651440, 0.907181208674277320, 0.907160170533950040, 0.907139130125722450, +0.907118087449646620, 0.907097042505775830, 0.907075995294162610, 0.907054945814859350, 0.907033894067918680, 0.907012840053393220, 0.906991783771335820, 0.906970725221798890, +0.906949664404834710, 0.906928601320496800, 0.906907535968837440, 0.906886468349909160, 0.906865398463764680, 0.906844326310456750, 0.906823251890038100, 0.906802175202560790, +0.906781096248078460, 0.906760015026643500, 0.906738931538308420, 0.906717845783125980, 0.906696757761149000, 0.906675667472430000, 0.906654574917021950, 0.906633480094977020, +0.906612383006348830, 0.906591283651189680, 0.906570182029552310, 0.906549078141489440, 0.906527971987053930, 0.906506863566298390, 0.906485752879275800, 0.906464639926038430, +0.906443524706639800, 0.906422407221132430, 0.906401287469568940, 0.906380165452002280, 0.906359041168485200, 0.906337914619070540, 0.906316785803810700, 0.906295654722759300, +0.906274521375968760, 0.906253385763491900, 0.906232247885381590, 0.906211107741690670, 0.906189965332471870, 0.906168820657778260, 0.906147673717662250, 0.906126524512177340, +0.906105373041376170, 0.906084219305311580, 0.906063063304036410, 0.906041905037603620, 0.906020744506066070, 0.905999581709476250, 0.905978416647887920, 0.905957249321353460, +0.905936079729925960, 0.905914907873658140, 0.905893733752603180, 0.905872557366813820, 0.905851378716343030, 0.905830197801243520, 0.905809014621568820, 0.905787829177371550, +0.905766641468704780, 0.905745451495621360, 0.905724259258174350, 0.905703064756416710, 0.905681867990401400, 0.905660668960181050, 0.905639467665809380, 0.905618264107339030, +0.905597058284822950, 0.905575850198314320, 0.905554639847866110, 0.905533427233531140, 0.905512212355362390, 0.905490995213413360, 0.905469775807736910, 0.905448554138386100, +0.905427330205413770, 0.905406104008873220, 0.905384875548817300, 0.905363644825299300, 0.905342411838371720, 0.905321176588088530, 0.905299939074502350, 0.905278699297666360, +0.905257457257633620, 0.905236212954457330, 0.905214966388190430, 0.905193717558886110, 0.905172466466597100, 0.905151213111377250, 0.905129957493279510, 0.905108699612356740, +0.905087439468662320, 0.905066177062249230, 0.905044912393170750, 0.905023645461479620, 0.905002376267229680, 0.904981104810473890, 0.904959831091265320, 0.904938555109657150, +0.904917276865702560, 0.904895996359454840, 0.904874713590967160, 0.904853428560292270, 0.904832141267484120, 0.904810851712595680, 0.904789559895680110, 0.904768265816790600, +0.904746969475980540, 0.904725670873302910, 0.904704370008810880, 0.904683066882558170, 0.904661761494597870, 0.904640453844983150, 0.904619143933767190, 0.904597831761003500, +0.904576517326745270, 0.904555200631045660, 0.904533881673957650, 0.904512560455535300, 0.904491236975831670, 0.904469911234899840, 0.904448583232793310, 0.904427252969565280, +0.904405920445269130, 0.904384585659958160, 0.904363248613685330, 0.904341909306504820, 0.904320567738469470, 0.904299223909632690, 0.904277877820047980, 0.904256529469768420, +0.904235178858847630, 0.904213825987338460, 0.904192470855295190, 0.904171113462770680, 0.904149753809818320, 0.904128391896491750, 0.904107027722844010, 0.904085661288928870, +0.904064292594799480, 0.904042921640509030, 0.904021548426111600, 0.904000172951660350, 0.903978795217208590, 0.903957415222809920, 0.903936032968517660, 0.903914648454385410, +0.903893261680466020, 0.903871872646814010, 0.903850481353482230, 0.903829087800524180, 0.903807691987993490, 0.903786293915943670, 0.903764893584427910, 0.903743490993500040, +0.903722086143213030, 0.903700679033621280, 0.903679269664777740, 0.903657858036736040, 0.903636444149549690, 0.903615028003272200, 0.903593609597957200, 0.903572188933658090, +0.903550766010428270, 0.903529340828321810, 0.903507913387392000, 0.903486483687692470, 0.903465051729276710, 0.903443617512198260, 0.903422181036510840, 0.903400742302267520, +0.903379301309522820, 0.903357858058329800, 0.903336412548742080, 0.903314964780813410, 0.903293514754597290, 0.903272062470147460, 0.903250607927517430, 0.903229151126760500, +0.903207692067931060, 0.903186230751082400, 0.903164767176268150, 0.903143301343541930, 0.903121833252957580, 0.903100362904568520, 0.903078890298428690, 0.903057415434591170, +0.903035938313110460, 0.903014458934039980, 0.902992977297433330, 0.902971493403344150, 0.902950007251826390, 0.902928518842933460, 0.902907028176718970, 0.902885535253237230, +0.902864040072541730, 0.902842542634686000, 0.902821042939723980, 0.902799540987709430, 0.902778036778695950, 0.902756530312737390, 0.902735021589887170, 0.902713510610199670, +0.902691997373728410, 0.902670481880527230, 0.902648964130649880, 0.902627444124149970, 0.902605921861081570, 0.902584397341497980, 0.902562870565453700, 0.902541341533002360, +0.902519810244197580, 0.902498276699093220, 0.902476740897743320, 0.902455202840201420, 0.902433662526521680, 0.902412119956757300, 0.902390575130962990, 0.902369028049192280, +0.902347478711498900, 0.902325927117936910, 0.902304373268560170, 0.902282817163422400, 0.902261258802577570, 0.902239698186079300, 0.902218135313982090, 0.902196570186339590, +0.902175002803205620, 0.902153433164634260, 0.902131861270679240, 0.902110287121394520, 0.902088710716833720, 0.902067132057051580, 0.902045551142101500, 0.902023967972037650, +0.902002382546913890, 0.901980794866784060, 0.901959204931702340, 0.901937612741722570, 0.901916018296898380, 0.901894421597284610, 0.901872822642934670, 0.901851221433902730, +0.901829617970242750, 0.901808012252008680, 0.901786404279254720, 0.901764794052034580, 0.901743181570402120, 0.901721566834412070, 0.901699949844118160, 0.901678330599574360, +0.901656709100834730, 0.901635085347953340, 0.901613459340984250, 0.901591831079981090, 0.901570200564998700, 0.901548567796090830, 0.901526932773311640, 0.901505295496714990, +0.901483655966355160, 0.901462014182286220, 0.901440370144562130, 0.901418723853236850, 0.901397075308365100, 0.901375424510000630, 0.901353771458197730, 0.901332116153010230, +0.901310458594492550, 0.901288798782698740, 0.901267136717682440, 0.901245472399498810, 0.901223805828201390, 0.901202137003844550, 0.901180465926482270, 0.901158792596168820, +0.901137117012958510, 0.901115439176905290, 0.901093759088063220, 0.901072076746487040, 0.901050392152230710, 0.901028705305348290, 0.901007016205894180, 0.900985324853922580, +0.900963631249487640, 0.900941935392643670, 0.900920237283444390, 0.900898536921944880, 0.900876834308199090, 0.900855129442261200, 0.900833422324185510, 0.900811712954026290, +0.900790001331837730, 0.900768287457673790, 0.900746571331589530, 0.900724852953638800, 0.900703132323876000, 0.900681409442355310, 0.900659684309131130, 0.900637956924257740, +0.900616227287789450, 0.900594495399780200, 0.900572761260285180, 0.900551024869358120, 0.900529286227053640, 0.900507545333425810, 0.900485802188529250, 0.900464056792418140, +0.900442309145146780, 0.900420559246769340, 0.900398807097340990, 0.900377052696915480, 0.900355296045547430, 0.900333537143291010, 0.900311775990200850, 0.900290012586331230, +0.900268246931736240, 0.900246479026470920, 0.900224708870589470, 0.900202936464146290, 0.900181161807195650, 0.900159384899792190, 0.900137605741990310, 0.900115824333844290, +0.900094040675408440, 0.900072254766737800, 0.900050466607886570, 0.900028676198909140, 0.900006883539860030, 0.899985088630793740, 0.899963291471764680, 0.899941492062827030, +0.899919690404036080, 0.899897886495445780, 0.899876080337110860, 0.899854271929085740, 0.899832461271424910, 0.899810648364183010, 0.899788833207414320, 0.899767015801173350, +0.899745196145515070, 0.899723374240493870, 0.899701550086164260, 0.899679723682580760, 0.899657895029797980, 0.899636064127870340, 0.899614230976852670, 0.899592395576798930, +0.899570557927764750, 0.899548718029804070, 0.899526875882971530, 0.899505031487321860, 0.899483184842909680, 0.899461335949789500, 0.899439484808015500, 0.899417631417643300, +0.899395775778726980, 0.899373917891321150, 0.899352057755480660, 0.899330195371259910, 0.899308330738713750, 0.899286463857896680, 0.899264594728863110, 0.899242723351668440, +0.899220849726366960, 0.899198973853013390, 0.899177095731662380, 0.899155215362368640, 0.899133332745186810, 0.899111447880171610, 0.899089560767377560, 0.899067671406859840, +0.899045779798673060, 0.899023885942871750, 0.899001989839510740, 0.898980091488644770, 0.898958190890328580, 0.898936288044616450, 0.898914382951564120, 0.898892475611225760, +0.898870566023656110, 0.898848654188910250, 0.898826740107042670, 0.898804823778108220, 0.898782905202161640, 0.898760984379257550, 0.898739061309451250, 0.898717135992797460, +0.898695208429350690, 0.898673278619165910, 0.898651346562298060, 0.898629412258801660, 0.898607475708731450, 0.898585536912142930, 0.898563595869090630, 0.898541652579629260, +0.898519707043813790, 0.898497759261699060, 0.898475809233339920, 0.898453856958791210, 0.898431902438107550, 0.898409945671344470, 0.898387986658556460, 0.898366025399798600, +0.898344061895125610, 0.898322096144592570, 0.898300128148254220, 0.898278157906165500, 0.898256185418381040, 0.898234210684956460, 0.898212233705946490, 0.898190254481405770, +0.898168273011389570, 0.898146289295952530, 0.898124303335149920, 0.898102315129036040, 0.898080324677666850, 0.898058331981096750, 0.898036337039380910, 0.898014339852574170, +0.897992340420731620, 0.897970338743908190, 0.897948334822158970, 0.897926328655538450, 0.897904320244102610, 0.897882309587905820, 0.897860296687003400, 0.897838281541450180, +0.897816264151301220, 0.897794244516611610, 0.897772222637436060, 0.897750198513830310, 0.897728172145848990, 0.897706143533547270, 0.897684112676980340, 0.897662079576202920, +0.897640044231270420, 0.897618006642237790, 0.897595966809159760, 0.897573924732092190, 0.897551880411089800, 0.897529833846207770, 0.897507785037501060, 0.897485733985024960, +0.897463680688834530, 0.897441625148984850, 0.897419567365530750, 0.897397507338528080, 0.897375445068031690, 0.897353380554096640, 0.897331313796778220, 0.897309244796131390, +0.897287173552211550, 0.897265100065073320, 0.897243024334772770, 0.897220946361364740, 0.897198866144904180, 0.897176783685446620, 0.897154698983047010, 0.897132612037760620, +0.897110522849642770, 0.897088431418748170, 0.897066337745132890, 0.897044241828851780, 0.897022143669960140, 0.897000043268513010, 0.896977940624565930, 0.896955835738173830, +0.896933728609392240, 0.896911619238275890, 0.896889507624880960, 0.896867393769262170, 0.896845277671474930, 0.896823159331574530, 0.896801038749616140, 0.896778915925655280, +0.896756790859746690, 0.896734663551946420, 0.896712534002309550, 0.896690402210891470, 0.896668268177747250, 0.896646131902932410, 0.896623993386502230, 0.896601852628512000, +0.896579709629016790, 0.896557564388072770, 0.896535416905734790, 0.896513267182058260, 0.896491115217098570, 0.896468961010911000, 0.896446804563551190, 0.896424645875073870, +0.896402484945535320, 0.896380321774990610, 0.896358156363495140, 0.896335988711104200, 0.896313818817873310, 0.896291646683857860, 0.896269472309113360, 0.896247295693694660, +0.896225116837658260, 0.896202935741059030, 0.896180752403952340, 0.896158566826393940, 0.896136379008439010, 0.896114188950143160, 0.896091996651561810, 0.896069802112750110, +0.896047605333764370, 0.896025406314659540, 0.896003205055491140, 0.895981001556314770, 0.895958795817185960, 0.895936587838160100, 0.895914377619292380, 0.895892165160639190, +0.895869950462255480, 0.895847733524196890, 0.895825514346519030, 0.895803292929277410, 0.895781069272527430, 0.895758843376324940, 0.895736615240724790, 0.895714384865783590, +0.895692152251556410, 0.895669917398098870, 0.895647680305466600, 0.895625440973714990, 0.895603199402899900, 0.895580955593076710, 0.895558709544300720, 0.895536461256628450, +0.895514210730114950, 0.895491957964815950, 0.895469702960787100, 0.895447445718083990, 0.895425186236762260, 0.895402924516877090, 0.895380660558485090, 0.895358394361641330, +0.895336125926401660, 0.895313855252821700, 0.895291582340957070, 0.895269307190863510, 0.895247029802596740, 0.895224750176211840, 0.895202468311765640, 0.895180184209313110, +0.895157897868910200, 0.895135609290612530, 0.895113318474475840, 0.895091025420555850, 0.895068730128907860, 0.895046432599588600, 0.895024132832653140, 0.895001830828157320, +0.894979526586156980, 0.894957220106707750, 0.894934911389865580, 0.894912600435685990, 0.894890287244224590, 0.894867971815537900, 0.894845654149681200, 0.894823334246710460, +0.894801012106681390, 0.894778687729649750, 0.894756361115671360, 0.894734032264802080, 0.894711701177097310, 0.894689367852613660, 0.894667032291406650, 0.894644694493532010, +0.894622354459045700, 0.894600012188003450, 0.894577667680461210, 0.894555320936474390, 0.894532971956099710, 0.894510620739392470, 0.894488267286408840, 0.894465911597204450, +0.894443553671835260, 0.894421193510357200, 0.894398831112826250, 0.894376466479297690, 0.894354099609828480, 0.894331730504473900, 0.894309359163290130, 0.894286985586332910, +0.894264609773658180, 0.894242231725321910, 0.894219851441380160, 0.894197468921888340, 0.894175084166903170, 0.894152697176480380, 0.894130307950675830, 0.894107916489545460, +0.894085522793145350, 0.894063126861531440, 0.894040728694759370, 0.894018328292885740, 0.893995925655966420, 0.893973520784057230, 0.893951113677214140, 0.893928704335493430, +0.893906292758950840, 0.893883878947642540, 0.893861462901624270, 0.893839044620952650, 0.893816624105683410, 0.893794201355872620, 0.893771776371576230, 0.893749349152850540, +0.893726919699751380, 0.893704488012334600, 0.893682054090656930, 0.893659617934774220, 0.893637179544742420, 0.893614738920617710, 0.893592296062456050, 0.893569850970313720, +0.893547403644246670, 0.893524954084310870, 0.893502502290562940, 0.893480048263058820, 0.893457592001854590, 0.893435133507006430, 0.893412672778570390, 0.893390209816602670, +0.893367744621159420, 0.893345277192296390, 0.893322807530070540, 0.893300335634537700, 0.893277861505754060, 0.893255385143775670, 0.893232906548658940, 0.893210425720459830, +0.893187942659234400, 0.893165457365039380, 0.893142969837930730, 0.893120480077964740, 0.893097988085197470, 0.893075493859685320, 0.893052997401484360, 0.893030498710650880, +0.893007997787240830, 0.892985494631311160, 0.892962989242917730, 0.892940481622116920, 0.892917971768964810, 0.892895459683517800, 0.892872945365832060, 0.892850428815964100, +0.892827910033969550, 0.892805389019905690, 0.892782865773828370, 0.892760340295793870, 0.892737812585858490, 0.892715282644078620, 0.892692750470510550, 0.892670216065210130, +0.892647679428234640, 0.892625140559639930, 0.892602599459482390, 0.892580056127818320, 0.892557510564704120, 0.892534962770196060, 0.892512412744350670, 0.892489860487223900, +0.892467305998872810, 0.892444749279353470, 0.892422190328722280, 0.892399629147035630, 0.892377065734349940, 0.892354500090721480, 0.892331932216206440, 0.892309362110861870, +0.892286789774744070, 0.892264215207909110, 0.892241638410413710, 0.892219059382314270, 0.892196478123667090, 0.892173894634528790, 0.892151308914955310, 0.892128720965003950, +0.892106130784730780, 0.892083538374192300, 0.892060943733444910, 0.892038346862545240, 0.892015747761549680, 0.891993146430514750, 0.891970542869496620, 0.891947937078552470, +0.891925329057738470, 0.891902718807111140, 0.891880106326726980, 0.891857491616642630, 0.891834874676914580, 0.891812255507598910, 0.891789634108752890, 0.891767010480432940, +0.891744384622695340, 0.891721756535596930, 0.891699126219194000, 0.891676493673543290, 0.891653858898701300, 0.891631221894724320, 0.891608582661669760, 0.891585941199593670, +0.891563297508552680, 0.891540651588603520, 0.891518003439802700, 0.891495353062206840, 0.891472700455872240, 0.891450045620856280, 0.891427388557215260, 0.891404729265005690, +0.891382067744284300, 0.891359403995107710, 0.891336738017532770, 0.891314069811615870, 0.891291399377413310, 0.891268726714982810, 0.891246051824380440, 0.891223374705662930, +0.891200695358887020, 0.891178013784109320, 0.891155329981386580, 0.891132643950775520, 0.891109955692332530, 0.891087265206114920, 0.891064572492179190, 0.891041877550582060, +0.891019180381380280, 0.890996480984630470, 0.890973779360389570, 0.890951075508713660, 0.890928369429660580, 0.890905661123286510, 0.890882950589648390, 0.890860237828802860, +0.890837522840806640, 0.890814805625716690, 0.890792086183589740, 0.890769364514482080, 0.890746640618451550, 0.890723914495554330, 0.890701186145847260, 0.890678455569387300, +0.890655722766231280, 0.890632987736435840, 0.890610250480057930, 0.890587510997154050, 0.890564769287781830, 0.890542025351997560, 0.890519279189858290, 0.890496530801420880, +0.890473780186742060, 0.890451027345878890, 0.890428272278887660, 0.890405514985826210, 0.890382755466750940, 0.890359993721718810, 0.890337229750786660, 0.890314463554011450, +0.890291695131450010, 0.890268924483159420, 0.890246151609196070, 0.890223376509617800, 0.890200599184481020, 0.890177819633842790, 0.890155037857760070, 0.890132253856289690, +0.890109467629488620, 0.890086679177413580, 0.890063888500122190, 0.890041095597671080, 0.890018300470117210, 0.889995503117517630, 0.889972703539929300, 0.889949901737409180, +0.889927097710014330, 0.889904291457801370, 0.889881482980828030, 0.889858672279150940, 0.889835859352827270, 0.889813044201913870, 0.889790226826467910, 0.889767407226546350, +0.889744585402206250, 0.889721761353504340, 0.889698935080498470, 0.889676106583245140, 0.889653275861801650, 0.889630442916224950, 0.889607607746572100, 0.889584770352900290, +0.889561930735266020, 0.889539088893727460, 0.889516244828341130, 0.889493398539164200, 0.889470550026253750, 0.889447699289666940, 0.889424846329460950, 0.889401991145692740, +0.889379133738419260, 0.889356274107698240, 0.889333412253586640, 0.889310548176141410, 0.889287681875419840, 0.889264813351479110, 0.889241942604376280, 0.889219069634168640, +0.889196194440912910, 0.889173317024667060, 0.889150437385487940, 0.889127555523432810, 0.889104671438558650, 0.889081785130922950, 0.889058896600582680, 0.889036005847594790, +0.889013112872017340, 0.888990217673907070, 0.888967320253321260, 0.888944420610317200, 0.888921518744951960, 0.888898614657283040, 0.888875708347367510, 0.888852799815262440, +0.888829889061025670, 0.888806976084714150, 0.888784060886385170, 0.888761143466096140, 0.888738223823904220, 0.888715301959866700, 0.888692377874040540, 0.888669451566483910, +0.888646523037253560, 0.888623592286406970, 0.888600659314001340, 0.888577724120094060, 0.888554786704742530, 0.888531847068004030, 0.888508905209935420, 0.888485961130594970, +0.888463014830039750, 0.888440066308326840, 0.888417115565513840, 0.888394162601658040, 0.888371207416816850, 0.888348250011047560, 0.888325290384407330, 0.888302328536954230, +0.888279364468745340, 0.888256398179838040, 0.888233429670289730, 0.888210458940157930, 0.888187485989499810, 0.888164510818372670, 0.888141533426834660, 0.888118553814942870, +0.888095571982754570, 0.888072587930327510, 0.888049601657718850, 0.888026613164986210, 0.888003622452187000, 0.887980629519378390, 0.887957634366618560, 0.887934636993964690, +0.887911637401474270, 0.887888635589204720, 0.887865631557213540, 0.887842625305558240, 0.887819616834296440, 0.887796606143485210, 0.887773593233182940, 0.887750578103446600, +0.887727560754333790, 0.887704541185902140, 0.887681519398209050, 0.887658495391312250, 0.887635469165268810, 0.887612440720137010, 0.887589410055974140, 0.887566377172837820, +0.887543342070785450, 0.887520304749874870, 0.887497265210163370, 0.887474223451708790, 0.887451179474568310, 0.887428133278800100, 0.887405084864461680, 0.887382034231610550, +0.887358981380304330, 0.887335926310600650, 0.887312869022557240, 0.887289809516231150, 0.887266747791680910, 0.887243683848963900, 0.887220617688137540, 0.887197549309259760, +0.887174478712388080, 0.887151405897580240, 0.887128330864893840, 0.887105253614386190, 0.887082174146115790, 0.887059092460140030, 0.887036008556516540, 0.887012922435302940, +0.886989834096557180, 0.886966743540336670, 0.886943650766699450, 0.886920555775702610, 0.886897458567404760, 0.886874359141863300, 0.886851257499135960, 0.886828153639280470, +0.886805047562354680, 0.886781939268416090, 0.886758828757522320, 0.886735716029732000, 0.886712601085102300, 0.886689483923691070, 0.886666364545556140, 0.886643242950755360, +0.886620119139346350, 0.886596993111387180, 0.886573864866935010, 0.886550734406048590, 0.886527601728785420, 0.886504466835203230, 0.886481329725359870, 0.886458190399313170, +0.886435048857120990, 0.886411905098841160, 0.886388759124531190, 0.886365610934249700, 0.886342460528054210, 0.886319307906002550, 0.886296153068152680, 0.886272996014562440, +0.886249836745289680, 0.886226675260391890, 0.886203511559927830, 0.886180345643954980, 0.886157177512531200, 0.886134007165714550, 0.886110834603562990, 0.886087659826134240, +0.886064482833486270, 0.886041303625676790, 0.886018122202764440, 0.885994938564806710, 0.885971752711861790, 0.885948564643987300, 0.885925374361241520, 0.885902181863682300, +0.885878987151367260, 0.885855790224355010, 0.885832591082703400, 0.885809389726470280, 0.885786186155713700, 0.885762980370491610, 0.885739772370862100, 0.885716562156883210, +0.885693349728612470, 0.885670135086108700, 0.885646918229429650, 0.885623699158633370, 0.885600477873777710, 0.885577254374920960, 0.885554028662121070, 0.885530800735436000, +0.885507570594923690, 0.885484338240642770, 0.885461103672650960, 0.885437866891006450, 0.885414627895767190, 0.885391386686991470, 0.885368143264737230, 0.885344897629062210, +0.885321649780025480, 0.885298399717684430, 0.885275147442097570, 0.885251892953322740, 0.885228636251418120, 0.885205377336442000, 0.885182116208452440, 0.885158852867507170, +0.885135587313665150, 0.885112319546984220, 0.885089049567522430, 0.885065777375337980, 0.885042502970489140, 0.885019226353034090, 0.884995947523030900, 0.884972666480537410, +0.884949383225612780, 0.884926097758314660, 0.884902810078701200, 0.884879520186830800, 0.884856228082761540, 0.884832933766551810, 0.884809637238259230, 0.884786338497942970, +0.884763037545660990, 0.884739734381471240, 0.884716429005432350, 0.884693121417602260, 0.884669811618039370, 0.884646499606801970, 0.884623185383947910, 0.884599868949536350, +0.884576550303625030, 0.884553229446272350, 0.884529906377536700, 0.884506581097476150, 0.884483253606149210, 0.884459923903613720, 0.884436591989928860, 0.884413257865152460, +0.884389921529342930, 0.884366582982558660, 0.884343242224857830, 0.884319899256298950, 0.884296554076940410, 0.884273206686839950, 0.884249857086056860, 0.884226505274649190, +0.884203151252675350, 0.884179795020193500, 0.884156436577262170, 0.884133075923939860, 0.884109713060284740, 0.884086347986354990, 0.884062980702209790, 0.884039611207907080, +0.884016239503505390, 0.883992865589063090, 0.883969489464638600, 0.883946111130290420, 0.883922730586076510, 0.883899347832056260, 0.883875962868287510, 0.883852575694829000, +0.883829186311739010, 0.883805794719075940, 0.883782400916898530, 0.883759004905265040, 0.883735606684233680, 0.883712206253863710, 0.883688803614213200, 0.883665398765340670, +0.883641991707304620, 0.883618582440163670, 0.883595170963976220, 0.883571757278800440, 0.883548341384695620, 0.883524923281720050, 0.883501502969932130, 0.883478080449390470, +0.883454655720153580, 0.883431228782279980, 0.883407799635828380, 0.883384368280856870, 0.883360934717424940, 0.883337498945590550, 0.883314060965412430, 0.883290620776949200, +0.883267178380259370, 0.883243733775401660, 0.883220286962434600, 0.883196837941416350, 0.883173386712406530, 0.883149933275463090, 0.883126477630644890, 0.883103019778010530, +0.883079559717618650, 0.883056097449527840, 0.883032632973796310, 0.883009166290483650, 0.882985697399648050, 0.882962226301348240, 0.882938752995642840, 0.882915277482590580, +0.882891799762250180, 0.882868319834680170, 0.882844837699939040, 0.882821353358086200, 0.882797866809179930, 0.882774378053279070, 0.882750887090442250, 0.882727393920728190, +0.882703898544195620, 0.882680400960903280, 0.882656901170909670, 0.882633399174274080, 0.882609894971055020, 0.882586388561311220, 0.882562879945101520, 0.882539369122484540, +0.882515856093519240, 0.882492340858263780, 0.882468823416777900, 0.882445303769120000, 0.882421781915348810, 0.882398257855523170, 0.882374731589701920, 0.882351203117943790, +0.882327672440307630, 0.882304139556851940, 0.882280604467636340, 0.882257067172719120, 0.882233527672159350, 0.882209985966015740, 0.882186442054347150, 0.882162895937212420, +0.882139347614670060, 0.882115797086779670, 0.882092244353599900, 0.882068689415189460, 0.882045132271607300, 0.882021572922912390, 0.881998011369163450, 0.881974447610419540, +0.881950881646739070, 0.881927313478181870, 0.881903743104806240, 0.881880170526671340, 0.881856595743836010, 0.881833018756359220, 0.881809439564299910, 0.881785858167716930, +0.881762274566668890, 0.881738688761215640, 0.881715100751415680, 0.881691510537327860, 0.881667918119011350, 0.881644323496525000, 0.881620726669927860, 0.881597127639278550, +0.881573526404636710, 0.881549922966061160, 0.881526317323610750, 0.881502709477344550, 0.881479099427321610, 0.881455487173600890, 0.881431872716241460, 0.881408256055301930, +0.881384637190842150, 0.881361016122920840, 0.881337392851596960, 0.881313767376929570, 0.881290139698977850, 0.881266509817800750, 0.881242877733457330, 0.881219243446006330, +0.881195606955507580, 0.881171968262019820, 0.881148327365602220, 0.881124684266313740, 0.881101038964213660, 0.881077391459360810, 0.881053741751814170, 0.881030089841633560, +0.881006435728877710, 0.880982779413605810, 0.880959120895877020, 0.880935460175750310, 0.880911797253285060, 0.880888132128540220, 0.880864464801574650, 0.880840795272448410, +0.880817123541220100, 0.880793449607949030, 0.880769773472694250, 0.880746095135515160, 0.880722414596470720, 0.880698731855619870, 0.880675046913022670, 0.880651359768737760, +0.880627670422824530, 0.880603978875342030, 0.880580285126349670, 0.880556589175906620, 0.880532891024072060, 0.880509190670904830, 0.880485488116464990, 0.880461783360811490, +0.880438076404003510, 0.880414367246100450, 0.880390655887161370, 0.880366942327245660, 0.880343226566412620, 0.880319508604721080, 0.880295788442231110, 0.880272066079001770, +0.880248341515092240, 0.880224614750561910, 0.880200885785469960, 0.880177154619875780, 0.880153421253838330, 0.880129685687417780, 0.880105947920672980, 0.880082207953663430, +0.880058465786448200, 0.880034721419086900, 0.880010974851638710, 0.879987226084163130, 0.879963475116719020, 0.879939721949366760, 0.879915966582165090, 0.879892209015173510, +0.879868449248451530, 0.879844687282058340, 0.879820923116053420, 0.879797156750496190, 0.879773388185445590, 0.879749617420962030, 0.879725844457104440, 0.879702069293932130, +0.879678291931504820, 0.879654512369881680, 0.879630730609122220, 0.879606946649285510, 0.879583160490431950, 0.879559372132620480, 0.879535581575910500, 0.879511788820361630, +0.879487993866033270, 0.879464196712984920, 0.879440397361275990, 0.879416595810965760, 0.879392792062114400, 0.879368986114781090, 0.879345177969025340, 0.879321367624906650, +0.879297555082484530, 0.879273740341818490, 0.879249923402967700, 0.879226104265992570, 0.879202282930952150, 0.879178459397905950, 0.879154633666913710, 0.879130805738034820, +0.879106975611328890, 0.879083143286855550, 0.879059308764673970, 0.879035472044844560, 0.879011633127426360, 0.878987792012479120, 0.878963948700062450, 0.878940103190235860, +0.878916255483059070, 0.878892405578591610, 0.878868553476892630, 0.878844699178022770, 0.878820842682041190, 0.878796983989007520, 0.878773123098981370, 0.878749260012022360, +0.878725394728190220, 0.878701527247544130, 0.878677657570144710, 0.878653785696051130, 0.878629911625323110, 0.878606035358020290, 0.878582156894202380, 0.878558276233929010, +0.878534393377260030, 0.878510508324254700, 0.878486621074973440, 0.878462731629475630, 0.878438839987821020, 0.878414946150069320, 0.878391050116280160, 0.878367151886513490, +0.878343251460828920, 0.878319348839285750, 0.878295444021944590, 0.878271537008864960, 0.878247627800106350, 0.878223716395728720, 0.878199802795791800, 0.878175887000355430, +0.878151969009478890, 0.878128048823222820, 0.878104126441646700, 0.878080201864810170, 0.878056275092773180, 0.878032346125595440, 0.878008414963336930, 0.877984481606057350, +0.877960546053816130, 0.877936608306673970, 0.877912668364690290, 0.877888726227925020, 0.877864781896437800, 0.877840835370288670, 0.877816886649537500, 0.877792935734243660, +0.877768982624467900, 0.877745027320269710, 0.877721069821708940, 0.877697110128845550, 0.877673148241739250, 0.877649184160450120, 0.877625217885038110, 0.877601249415562610, +0.877577278752084360, 0.877553305894662960, 0.877529330843358270, 0.877505353598230230, 0.877481374159338800, 0.877457392526744040, 0.877433408700505680, 0.877409422680683450, +0.877385434467338080, 0.877361444060529070, 0.877337451460316500, 0.877313456666760310, 0.877289459679920450, 0.877265460499856990, 0.877241459126629320, 0.877217455560298510, +0.877193449800924060, 0.877169441848566040, 0.877145431703284410, 0.877121419365139100, 0.877097404834190300, 0.877073388110498060, 0.877049369194121800, 0.877025348085122670, +0.877001324783560080, 0.876977299289494190, 0.876953271602985080, 0.876929241724092810, 0.876905209652877330, 0.876881175389398470, 0.876857138933717200, 0.876833100285892900, +0.876809059445985970, 0.876785016414056370, 0.876760971190164160, 0.876736923774369630, 0.876712874166732710, 0.876688822367313160, 0.876664768376172020, 0.876640712193369030, +0.876616653818964140, 0.876592593253017750, 0.876568530495589690, 0.876544465546740480, 0.876520398406530070, 0.876496329075018180, 0.876472257552265880, 0.876448183838333010, +0.876424107933279630, 0.876400029837166030, 0.876375949550052380, 0.876351867071998750, 0.876327782403065080, 0.876303695543312440, 0.876279606492800460, 0.876255515251589510, +0.876231421819739790, 0.876207326197311450, 0.876183228384364800, 0.876159128380960220, 0.876135026187157220, 0.876110921803017200, 0.876086815228599770, 0.876062706463965330, +0.876038595509174180, 0.876014482364286580, 0.875990367029362730, 0.875966249504462890, 0.875942129789647030, 0.875918007884976310, 0.875893883790510590, 0.875869757506310130, +0.875845629032435240, 0.875821498368946290, 0.875797365515903700, 0.875773230473367190, 0.875749093241398050, 0.875724953820056110, 0.875700812209401770, 0.875676668409495540, +0.875652522420397480, 0.875628374242168220, 0.875604223874868030, 0.875580071318556860, 0.875555916573295900, 0.875531759639145090, 0.875507600516164940, 0.875483439204415850, +0.875459275703958100, 0.875435110014852190, 0.875410942137157980, 0.875386772070936960, 0.875362599816248980, 0.875338425373154540, 0.875314248741713930, 0.875290069921987770, +0.875265888914036450, 0.875241705717920370, 0.875217520333699590, 0.875193332761435410, 0.875169143001187980, 0.875144951053017710, 0.875120756916984990, 0.875096560593150330, +0.875072362081574350, 0.875048161382317450, 0.875023958495439680, 0.874999753421002560, 0.874975546159065920, 0.874951336709690500, 0.874927125072936680, 0.874902911248865100, +0.874878695237536250, 0.874854477039010200, 0.874830256653348350, 0.874806034080610970, 0.874781809320858360, 0.874757582374151350, 0.874733353240550350, 0.874709121920115960, +0.874684888412908700, 0.874660652718988850, 0.874636414838417810, 0.874612174771255750, 0.874587932517563280, 0.874563688077400920, 0.874539441450829290, 0.874515192637909110, +0.874490941638701000, 0.874466688453265030, 0.874442433081662810, 0.874418175523954510, 0.874393915780200760, 0.874369653850462170, 0.874345389734799580, 0.874321123433273390, +0.874296854945944000, 0.874272584272872910, 0.874248311414120290, 0.874224036369746990, 0.874199759139813630, 0.874175479724380810, 0.874151198123509280, 0.874126914337259750, +0.874102628365692520, 0.874078340208869100, 0.874054049866849870, 0.874029757339695570, 0.874005462627466810, 0.873981165730224440, 0.873956866648029180, 0.873932565380941220, +0.873908261929022380, 0.873883956292332840, 0.873859648470933340, 0.873835338464884810, 0.873811026274247890, 0.873786711899083410, 0.873762395339452210, 0.873738076595414580, +0.873713755667032130, 0.873689432554365260, 0.873665107257474930, 0.873640779776421740, 0.873616450111266650, 0.873592118262070390, 0.873567784228893920, 0.873543448011797510, +0.873519109610842890, 0.873494769026090470, 0.873470426257601180, 0.873446081305435880, 0.873421734169655290, 0.873397384850320370, 0.873373033347491500, 0.873348679661230640, +0.873324323791597970, 0.873299965738654540, 0.873275605502461080, 0.873251243083078780, 0.873226878480568240, 0.873202511694990520, 0.873178142726406150, 0.873153771574876840, +0.873129398240463090, 0.873105022723225880, 0.873080645023226020, 0.873056265140524590, 0.873031883075182540, 0.873007498827260810, 0.872983112396819800, 0.872958723783921480, +0.872934332988626330, 0.872909940010995420, 0.872885544851089600, 0.872861147508969930, 0.872836747984697460, 0.872812346278332600, 0.872787942389937290, 0.872763536319572150, +0.872739128067298250, 0.872714717633176430, 0.872690305017267850, 0.872665890219633480, 0.872641473240334480, 0.872617054079431240, 0.872592632736985950, 0.872568209213059000, +0.872543783507711450, 0.872519355621004580, 0.872494925552999230, 0.872470493303756590, 0.872446058873337260, 0.872421622261803200, 0.872397183469215130, 0.872372742495634120, +0.872348299341121240, 0.872323854005737530, 0.872299406489544290, 0.872274956792602470, 0.872250504914972910, 0.872226050856717450, 0.872201594617896810, 0.872177136198572290, +0.872152675598804940, 0.872128212818655820, 0.872103747858186230, 0.872079280717457220, 0.872054811396529630, 0.872030339895465410, 0.872005866214325300, 0.871981390353170570, +0.871956912312062400, 0.871932432091061860, 0.871907949690230330, 0.871883465109628440, 0.871858978349318360, 0.871834489409360810, 0.871809998289816980, 0.871785504990748250, +0.871761009512215690, 0.871736511854280690, 0.871712012017004320, 0.871687510000447530, 0.871663005804672380, 0.871638499429739700, 0.871613990875710900, 0.871589480142646920, +0.871564967230609390, 0.871540452139659360, 0.871515934869858230, 0.871491415421266850, 0.871466893793947370, 0.871442369987960650, 0.871417844003367970, 0.871393315840230720, +0.871368785498610190, 0.871344252978567660, 0.871319718280164080, 0.871295181403461630, 0.871270642348521250, 0.871246101115404240, 0.871221557704171980, 0.871197012114885870, +0.871172464347607200, 0.871147914402397360, 0.871123362279317300, 0.871098807978429200, 0.871074251499794230, 0.871049692843473560, 0.871025132009528580, 0.871000568998020810, +0.870976003809011750, 0.870951436442562120, 0.870926866898734330, 0.870902295177589440, 0.870877721279188720, 0.870853145203593800, 0.870828566950865970, 0.870803986521066720, +0.870779403914257450, 0.870754819130499350, 0.870730232169854570, 0.870705643032384180, 0.870681051718149690, 0.870656458227212600, 0.870631862559634430, 0.870607264715476560, +0.870582664694800500, 0.870558062497667320, 0.870533458124139510, 0.870508851574277930, 0.870484242848144300, 0.870459631945800120, 0.870435018867306790, 0.870410403612725920, +0.870385786182118590, 0.870361166575547300, 0.870336544793072990, 0.870311920834757390, 0.870287294700661910, 0.870262666390848260, 0.870238035905377960, 0.870213403244312510, +0.870188768407713200, 0.870164131395642300, 0.870139492208161110, 0.870114850845331240, 0.870090207307214200, 0.870065561593871720, 0.870040913705365180, 0.870016263641756100, +0.869991611403106660, 0.869966956989478240, 0.869942300400932460, 0.869917641637530940, 0.869892980699335180, 0.869868317586407150, 0.869843652298808220, 0.869818984836599700, +0.869794315199844180, 0.869769643388602850, 0.869744969402937550, 0.869720293242909670, 0.869695614908581160, 0.869670934400013530, 0.869646251717268610, 0.869621566860407590, +0.869596879829493190, 0.869572190624586460, 0.869547499245749370, 0.869522805693043410, 0.869498109966530540, 0.869473412066272380, 0.869448711992330200, 0.869424009744766750, +0.869399305323643180, 0.869374598729021450, 0.869349889960963180, 0.869325179019530100, 0.869300465904784160, 0.869275750616787080, 0.869251033155600150, 0.869226313521286100, +0.869201591713906210, 0.869176867733522430, 0.869152141580196380, 0.869127413253990010, 0.869102682754965160, 0.869077950083183560, 0.869053215238706710, 0.869028478221597120, +0.869003739031916410, 0.868978997669726420, 0.868954254135088870, 0.868929508428065710, 0.868904760548718790, 0.868880010497109500, 0.868855258273300570, 0.868830503877353610, +0.868805747309330250, 0.868780988569292640, 0.868756227657302540, 0.868731464573421870, 0.868706699317712490, 0.868681931890236010, 0.868657162291055050, 0.868632390520231220, +0.868607616577826370, 0.868582840463902550, 0.868558062178521610, 0.868533281721745490, 0.868508499093635700, 0.868483714294255190, 0.868458927323665360, 0.868434138181928270, +0.868409346869105760, 0.868384553385259880, 0.868359757730452600, 0.868334959904745960, 0.868310159908201480, 0.868285357740882000, 0.868260553402849130, 0.868235746894164940, +0.868210938214891370, 0.868186127365090490, 0.868161314344824240, 0.868136499154154690, 0.868111681793143460, 0.868086862261853500, 0.868062040560346300, 0.868037216688684050, +0.868012390646928810, 0.867987562435142520, 0.867962732053387360, 0.867937899501724950, 0.867913064780218240, 0.867888227888928830, 0.867863388827918800, 0.867838547597250320, +0.867813704196985560, 0.867788858627186470, 0.867764010887915220, 0.867739160979233540, 0.867714308901204380, 0.867689454653889470, 0.867664598237350980, 0.867639739651650870, +0.867614878896851520, 0.867590015973014880, 0.867565150880203250, 0.867540283618478240, 0.867515414187903120, 0.867490542588539300, 0.867465668820449180, 0.867440792883694910, +0.867415914778338680, 0.867391034504442550, 0.867366152062068460, 0.867341267451279490, 0.867316380672137340, 0.867291491724704100, 0.867266600609042260, 0.867241707325213880, +0.867216811873281260, 0.867191914253306660, 0.867167014465351720, 0.867142112509479700, 0.867117208385752460, 0.867092302094232160, 0.867067393634981200, 0.867042483008061640, +0.867017570213535870, 0.866992655251465740, 0.866967738121914520, 0.866942818824943840, 0.866917897360616200, 0.866892973728993770, 0.866868047930138830, 0.866843119964113900, +0.866818189830981130, 0.866793257530802390, 0.866768323063641040, 0.866743386429558840, 0.866718447628618160, 0.866693506660881300, 0.866668563526410750, 0.866643618225268810, +0.866618670757517750, 0.866593721123219640, 0.866568769322437650, 0.866543815355233730, 0.866518859221670270, 0.866493900921809670, 0.866468940455714320, 0.866443977823446620, +0.866419013025068520, 0.866394046060643410, 0.866369076930233130, 0.866344105633900070, 0.866319132171706860, 0.866294156543715780, 0.866269178749989320, 0.866244198790589890, +0.866219216665579550, 0.866194232375021580, 0.866169245918978040, 0.866144257297511430, 0.866119266510684160, 0.866094273558558610, 0.866069278441197520, 0.866044281158663170, +0.866019281711017720, 0.865994280098324460, 0.865969276320645580, 0.865944270378043450, 0.865919262270580580, 0.865894251998319600, 0.865869239561323000, 0.865844224959652850, +0.865819208193372660, 0.865794189262544370, 0.865769168167230600, 0.865744144907493960, 0.865719119483396970, 0.865694091895002130, 0.865669062142372050, 0.865644030225568910, +0.865618996144656090, 0.865593959899695900, 0.865568921490750710, 0.865543880917883150, 0.865518838181156050, 0.865493793280631700, 0.865468746216372490, 0.865443696988441920, +0.865418645596902070, 0.865393592041815540, 0.865368536323245170, 0.865343478441253370, 0.865318418395902840, 0.865293356187256220, 0.865268291815375900, 0.865243225280325270, +0.865218156582166500, 0.865193085720962430, 0.865168012696775570, 0.865142937509668750, 0.865117860159704600, 0.865092780646945720, 0.865067698971454410, 0.865042615133294390, +0.865017529132527830, 0.864992440969217460, 0.864967350643425890, 0.864942258155215970, 0.864917163504650530, 0.864892066691791640, 0.864866967716703020, 0.864841866579446950, +0.864816763280086280, 0.864791657818683720, 0.864766550195301910, 0.864741440410003780, 0.864716328462852070, 0.864691214353909170, 0.864666098083238580, 0.864640979650902700, +0.864615859056964480, 0.864590736301486530, 0.864565611384531810, 0.864540484306163040, 0.864515355066443060, 0.864490223665434150, 0.864465090103200270, 0.864439954379803590, +0.864414816495307050, 0.864389676449773490, 0.864364534243265650, 0.864339389875846580, 0.864314243347578560, 0.864289094658525330, 0.864263943808749380, 0.864238790798313560, +0.864213635627280820, 0.864188478295713990, 0.864163318803675920, 0.864138157151229550, 0.864112993338437390, 0.864087827365363160, 0.864062659232069370, 0.864037488938618870, +0.864012316485074710, 0.863987141871499830, 0.863961965097956970, 0.863936786164508860, 0.863911605071219110, 0.863886421818150450, 0.863861236405365720, 0.863836048832927860, +0.863810859100899940, 0.863785667209344800, 0.863760473158325490, 0.863735276947904640, 0.863710078578145970, 0.863684878049112090, 0.863659675360866070, 0.863634470513470860, +0.863609263506989410, 0.863584054341484890, 0.863558843017020130, 0.863533629533657860, 0.863508413891462050, 0.863483196090495060, 0.863457976130820200, 0.863432754012500300, +0.863407529735598640, 0.863382303300178070, 0.863357074706301300, 0.863331843954032290, 0.863306611043433650, 0.863281375974568550, 0.863256138747499960, 0.863230899362291030, +0.863205657819004930, 0.863180414117704630, 0.863155168258452840, 0.863129920241313520, 0.863104670066349500, 0.863079417733623730, 0.863054163243199390, 0.863028906595139760, +0.863003647789507780, 0.862978386826366290, 0.862953123705779260, 0.862927858427809390, 0.862902590992519870, 0.862877321399973860, 0.862852049650234540, 0.862826775743365190, +0.862801499679428870, 0.862776221458488310, 0.862750941080607680, 0.862725658545849710, 0.862700373854277560, 0.862675087005954410, 0.862649798000943660, 0.862624506839308360, +0.862599213521111800, 0.862573918046416810, 0.862548620415287350, 0.862523320627786470, 0.862498018683977240, 0.862472714583922940, 0.862447408327686850, 0.862422099915332250, +0.862396789346921990, 0.862371476622520230, 0.862346161742189700, 0.862320844705993790, 0.862295525513995800, 0.862270204166258880, 0.862244880662846550, 0.862219555003822080, +0.862194227189248210, 0.862168897219189210, 0.862143565093707930, 0.862118230812867760, 0.862092894376732090, 0.862067555785364090, 0.862042215038827280, 0.862016872137184920, +0.861991527080499860, 0.861966179868836500, 0.861940830502257670, 0.861915478980826770, 0.861890125304607070, 0.861864769473662200, 0.861839411488055320, 0.861814051347849500, +0.861788689053109010, 0.861763324603896820, 0.861737958000276310, 0.861712589242310870, 0.861687218330063900, 0.861661845263599010, 0.861636470042979500, 0.861611092668268300, +0.861585713139529810, 0.861560331456827090, 0.861534947620223530, 0.861509561629782540, 0.861484173485567720, 0.861458783187642460, 0.861433390736069730, 0.861407996130914010, +0.861382599372238270, 0.861357200460106110, 0.861331799394580930, 0.861306396175726240, 0.861280990803605540, 0.861255583278282330, 0.861230173599819790, 0.861204761768282200, +0.861179347783732730, 0.861153931646234880, 0.861128513355852280, 0.861103092912648300, 0.861077670316686690, 0.861052245568030840, 0.861026818666743910, 0.861001389612890410, +0.860975958406533400, 0.860950525047736500, 0.860925089536563330, 0.860899651873077380, 0.860874212057342380, 0.860848770089421400, 0.860823325969378830, 0.860797879697278060, +0.860772431273182480, 0.860746980697155940, 0.860721527969261930, 0.860696073089563970, 0.860670616058126000, 0.860645156875010970, 0.860619695540283500, 0.860594232054006760, +0.860568766416244470, 0.860543298627060250, 0.860517828686517830, 0.860492356594680820, 0.860466882351612840, 0.860441405957377280, 0.860415927412038650, 0.860390446715660230, +0.860364963868305630, 0.860339478870038700, 0.860313991720923040, 0.860288502421022280, 0.860263010970399920, 0.860237517369120570, 0.860212021617247300, 0.860186523714844050, +0.860161023661974440, 0.860135521458702310, 0.860110017105091270, 0.860084510601205390, 0.860059001947107600, 0.860033491142862760, 0.860007978188534360, 0.859982463084185910, +0.859956945829881250, 0.859931426425684320, 0.859905904871658740, 0.859880381167868020, 0.859854855314376780, 0.859829327311248390, 0.859803797158546710, 0.859778264856335460, +0.859752730404678590, 0.859727193803639930, 0.859701655053283220, 0.859676114153671960, 0.859650571104870860, 0.859625025906943340, 0.859599478559953330, 0.859573929063964460, +0.859548377419040890, 0.859522823625246350, 0.859497267682644780, 0.859471709591299480, 0.859446149351275500, 0.859420586962636010, 0.859395022425445190, 0.859369455739766750, +0.859343886905664660, 0.859318315923202850, 0.859292742792444830, 0.859267167513455330, 0.859241590086297970, 0.859216010511036690, 0.859190428787735330, 0.859164844916457840, +0.859139258897268280, 0.859113670730230710, 0.859088080415408300, 0.859062487952866220, 0.859036893342667970, 0.859011296584877400, 0.858985697679558680, 0.858960096626775640, +0.858934493426592450, 0.858908888079072950, 0.858883280584280760, 0.858857670942280940, 0.858832059153136760, 0.858806445216912630, 0.858780829133672260, 0.858755210903479840, +0.858729590526399410, 0.858703968002494490, 0.858678343331830240, 0.858652716514469950, 0.858627087550478010, 0.858601456439918360, 0.858575823182854970, 0.858550187779352100, +0.858524550229473720, 0.858498910533283530, 0.858473268690846500, 0.858447624702226350, 0.858421978567487030, 0.858396330286692820, 0.858370679859907890, 0.858345027287196080, +0.858319372568621340, 0.858293715704248620, 0.858268056694141630, 0.858242395538364460, 0.858216732236981360, 0.858191066790056410, 0.858165399197653780, 0.858139729459837630, +0.858114057576671700, 0.858088383548221150, 0.858062707374549590, 0.858037029055721210, 0.858011348591800390, 0.857985665982851090, 0.857959981228937680, 0.857934294330124250, +0.857908605286474720, 0.857882914098054060, 0.857857220764926100, 0.857831525287155120, 0.857805827664805400, 0.857780127897941000, 0.857754425986626320, 0.857728721930925090, +0.857703015730902570, 0.857677307386622510, 0.857651596898149180, 0.857625884265546870, 0.857600169488879850, 0.857574452568212300, 0.857548733503608720, 0.857523012295132840, +0.857497288942849820, 0.857471563446823630, 0.857445835807118530, 0.857420106023798920, 0.857394374096928980, 0.857368640026573090, 0.857342903812795540, 0.857317165455660390, +0.857291424955232690, 0.857265682311576520, 0.857239937524756020, 0.857214190594835830, 0.857188441521880010, 0.857162690305953160, 0.857136936947119120, 0.857111181445443290, +0.857085423800989400, 0.857059664013821940, 0.857033902084005430, 0.857008138011604030, 0.856982371796682350, 0.856956603439304800, 0.856930832939535200, 0.856905060297438960, +0.856879285513080120, 0.856853508586522980, 0.856827729517832150, 0.856801948307072010, 0.856776164954306970, 0.856750379459601090, 0.856724591823019740, 0.856698802044626780, +0.856673010124486930, 0.856647216062664580, 0.856621419859224130, 0.856595621514230080, 0.856569821027747040, 0.856544018399839070, 0.856518213630571350, 0.856492406720008260, +0.856466597668213980, 0.856440786475253350, 0.856414973141190640, 0.856389157666090580, 0.856363340050017570, 0.856337520293035780, 0.856311698395210710, 0.856285874356606300, +0.856260048177287290, 0.856234219857318070, 0.856208389396763360, 0.856182556795687670, 0.856156722054155160, 0.856130885172231240, 0.856105046149980060, 0.856079204987466370, +0.856053361684754650, 0.856027516241909540, 0.856001668658995520, 0.855975818936077440, 0.855949967073219350, 0.855924113070486770, 0.855898256927943970, 0.855872398645655450, +0.855846538223685950, 0.855820675662100180, 0.855794810960962660, 0.855768944120338100, 0.855743075140290690, 0.855717204020886140, 0.855691330762188510, 0.855665455364262640, +0.855639577827173040, 0.855613698150984540, 0.855587816335761750, 0.855561932381568970, 0.855536046288471910, 0.855510158056534630, 0.855484267685821980, 0.855458375176398670, +0.855432480528329430, 0.855406583741678990, 0.855380684816512080, 0.855354783752893090, 0.855328880550887400, 0.855302975210559650, 0.855277067731974430, 0.855251158115196590, +0.855225246360290850, 0.855199332467321940, 0.855173416436354250, 0.855147498267453510, 0.855121577960684000, 0.855095655516110550, 0.855069730933797900, 0.855043804213810990, +0.855017875356214540, 0.854991944361073510, 0.854966011228452060, 0.854940075958416030, 0.854914138551029820, 0.854888199006358260, 0.854862257324466300, 0.854836313505418550, +0.854810367549280080, 0.854784419456115720, 0.854758469225989860, 0.854732516858968230, 0.854706562355115330, 0.854680605714496000, 0.854654646937175190, 0.854628686023217840, +0.854602722972688690, 0.854576757785652230, 0.854550790462174410, 0.854524821002319630, 0.854498849406152730, 0.854472875673738750, 0.854446899805142550, 0.854420921800429060, +0.854394941659663340, 0.854368959382909800, 0.854342974970234260, 0.854316988421701340, 0.854290999737375990, 0.854265008917323150, 0.854239015961607670, 0.854213020870294710, +0.854187023643448780, 0.854161024281135720, 0.854135022783420020, 0.854109019150366850, 0.854083013382041180, 0.854057005478507820, 0.854030995439832070, 0.854004983266078880, +0.853978968957312620, 0.853952952513599480, 0.853926933935003960, 0.853900913221591120, 0.853874890373426010, 0.853848865390573590, 0.853822838273099020, 0.853796809021067470, +0.853770777634543340, 0.853744744113592690, 0.853718708458280240, 0.853692670668671050, 0.853666630744830180, 0.853640588686822690, 0.853614544494713750, 0.853588498168567970, +0.853562449708451410, 0.853536399114428690, 0.853510346386565090, 0.853484291524925550, 0.853458234529575250, 0.853432175400579360, 0.853406114138003160, 0.853380050741911030, +0.853353985212369380, 0.853327917549442700, 0.853301847753196290, 0.853275775823695180, 0.853249701761004680, 0.853223625565189820, 0.853197547236316020, 0.853171466774447880, +0.853145384179651470, 0.853119299451991610, 0.853093212591533590, 0.853067123598342470, 0.853041032472483530, 0.853014939214022050, 0.852988843823022760, 0.852962746299551820, +0.852936646643673970, 0.852910544855454590, 0.852884440934958740, 0.852858334882251820, 0.852832226697399110, 0.852806116380465770, 0.852780003931516760, 0.852753889350618130, +0.852727772637834840, 0.852701653793232040, 0.852675532816875140, 0.852649409708829410, 0.852623284469160250, 0.852597157097932270, 0.852571027595211970, 0.852544895961063980, +0.852518762195553890, 0.852492626298746780, 0.852466488270708140, 0.852440348111503270, 0.852414205821197650, 0.852388061399855900, 0.852361914847544530, 0.852335766164328380, +0.852309615350272720, 0.852283462405443170, 0.852257307329904900, 0.852231150123723300, 0.852204990786963880, 0.852178829319691580, 0.852152665721972570, 0.852126499993871910, +0.852100332135455000, 0.852074162146787330, 0.852047990027934190, 0.852021815778961080, 0.851995639399932950, 0.851969460890916300, 0.851943280251975850, 0.851917097483177340, +0.851890912584585940, 0.851864725556267350, 0.851838536398286990, 0.851812345110710250, 0.851786151693602060, 0.851759956147029150, 0.851733758471056150, 0.851707558665748880, +0.851681356731172730, 0.851655152667393220, 0.851628946474475730, 0.851602738152485880, 0.851576527701488730, 0.851550315121550770, 0.851524100412736960, 0.851497883575113020, +0.851471664608744240, 0.851445443513696330, 0.851419220290034810, 0.851392994937824830, 0.851366767457132800, 0.851340537848023770, 0.851314306110563470, 0.851288072244817400, +0.851261836250851170, 0.851235598128730400, 0.851209357878520480, 0.851183115500286800, 0.851156870994095870, 0.851130624360012630, 0.851104375598102810, 0.851078124708432140, +0.851051871691066220, 0.851025616546070450, 0.850999359273510340, 0.850973099873452150, 0.850946838345961300, 0.850920574691103380, 0.850894308908944020, 0.850868040999548820, +0.850841770962983520, 0.850815498799313840, 0.850789224508604840, 0.850762948090923340, 0.850736669546334530, 0.850710388874903910, 0.850684106076697420, 0.850657821151780680, +0.850631534100219300, 0.850605244922079120, 0.850578953617425300, 0.850552660186324690, 0.850526364628842350, 0.850500066945044100, 0.850473767134995780, 0.850447465198762910, +0.850421161136411420, 0.850394854948006600, 0.850368546633615050, 0.850342236193302180, 0.850315923627133710, 0.850289608935175470, 0.850263292117493190, 0.850236973174152590, +0.850210652105219620, 0.850184328910759570, 0.850158003590839150, 0.850131676145523760, 0.850105346574879130, 0.850079014878971080, 0.850052681057865580, 0.850026345111628330, +0.850000007040325300, 0.849973666844021760, 0.849947324522784430, 0.849920980076678930, 0.849894633505770880, 0.849868284810126220, 0.849841933989810890, 0.849815581044890740, +0.849789225975431160, 0.849762868781498980, 0.849736509463159590, 0.849710148020479060, 0.849683784453522990, 0.849657418762357560, 0.849631050947048600, 0.849604681007661950, +0.849578308944263120, 0.849551934756919040, 0.849525558445695110, 0.849499180010657270, 0.849472799451871490, 0.849446416769403800, 0.849420031963319940, 0.849393645033685530, +0.849367255980567610, 0.849340864804031370, 0.849314471504143080, 0.849288076080968570, 0.849261678534573900, 0.849235278865025030, 0.849208877072388010, 0.849182473156728230, +0.849156067118112760, 0.849129658956607190, 0.849103248672277380, 0.849076836265189480, 0.849050421735409570, 0.849024005083003570, 0.848997586308037460, 0.848971165410577040, +0.848944742390689070, 0.848918317248439360, 0.848891889983893750, 0.848865460597118540, 0.848839029088179540, 0.848812595457143050, 0.848786159704074560, 0.848759721829041140, +0.848733281832108500, 0.848706839713342600, 0.848680395472809490, 0.848653949110575570, 0.848627500626706670, 0.848601050021269070, 0.848574597294328380, 0.848548142445951560, +0.848521685476204550, 0.848495226385153180, 0.848468765172863850, 0.848442301839402500, 0.848415836384835530, 0.848389368809228880, 0.848362899112648390, 0.848336427295161010, +0.848309953356832680, 0.848283477297729460, 0.848256999117917520, 0.848230518817463030, 0.848204036396432380, 0.848177551854891080, 0.848151065192906390, 0.848124576410543950, +0.848098085507870140, 0.848071592484951120, 0.848045097341853180, 0.848018600078642380, 0.847992100695385110, 0.847965599192147200, 0.847939095568995720, 0.847912589825996490, +0.847886081963215800, 0.847859571980719820, 0.847833059878575050, 0.847806545656847540, 0.847780029315603150, 0.847753510854909240, 0.847726990274831560, 0.847700467575436380, +0.847673942756790090, 0.847647415818958860, 0.847620886762009080, 0.847594355586007150, 0.847567822291018790, 0.847541286877111390, 0.847514749344350780, 0.847488209692803360, +0.847461667922535300, 0.847435124033613100, 0.847408578026103140, 0.847382029900071720, 0.847355479655584660, 0.847328927292709480, 0.847302372811511990, 0.847275816212058500, +0.847249257494415490, 0.847222696658649350, 0.847196133704826490, 0.847169568633012740, 0.847143001443275590, 0.847116432135681000, 0.847089860710295240, 0.847063287167184930, +0.847036711506416240, 0.847010133728055890, 0.846983553832170280, 0.846956971818825120, 0.846930387688088150, 0.846903801440025190, 0.846877213074702650, 0.846850622592187130, +0.846824029992545020, 0.846797435275842950, 0.846770838442146730, 0.846744239491523890, 0.846717638424040460, 0.846691035239762860, 0.846664429938757790, 0.846637822521091540, +0.846611212986830840, 0.846584601336042080, 0.846557987568791300, 0.846531371685146030, 0.846504753685172420, 0.846478133568936860, 0.846451511336505870, 0.846424886987946270, +0.846398260523324340, 0.846371631942706810, 0.846345001246159740, 0.846318368433750630, 0.846291733505545540, 0.846265096461611190, 0.846238457302014080, 0.846211816026820830, +0.846185172636097940, 0.846158527129911800, 0.846131879508329690, 0.846105229771418000, 0.846078577919243120, 0.846051923951871900, 0.846025267869370820, 0.845998609671806510, +0.845971949359245800, 0.845945286931754640, 0.845918622389400850, 0.845891955732250400, 0.845865286960370110, 0.845838616073826600, 0.845811943072686480, 0.845785267957016580, +0.845758590726883530, 0.845731911382353490, 0.845705229923494060, 0.845678546350371760, 0.845651860663052870, 0.845625172861604430, 0.845598482946093190, 0.845571790916585520, +0.845545096773148040, 0.845518400515848260, 0.845491702144752440, 0.845465001659927440, 0.845438299061439860, 0.845411594349356530, 0.845384887523744300, 0.845358178584669770, +0.845331467532199340, 0.845304754366400730, 0.845278039087340230, 0.845251321695084660, 0.845224602189700750, 0.845197880571255330, 0.845171156839815250, 0.845144430995446780, +0.845117703038217650, 0.845090972968194350, 0.845064240785443620, 0.845037506490032180, 0.845010770082027070, 0.844984031561495040, 0.844957290928502910, 0.844930548183117080, +0.844903803325405380, 0.844877056355434090, 0.844850307273270260, 0.844823556078980520, 0.844796802772632030, 0.844770047354291510, 0.844743289824025800, 0.844716530181901510, +0.844689768427986270, 0.844663004562346660, 0.844636238585049440, 0.844609470496161750, 0.844582700295750330, 0.844555927983882130, 0.844529153560623640, 0.844502377026042810, +0.844475598380206030, 0.844448817623180140, 0.844422034755032300, 0.844395249775829470, 0.844368462685638370, 0.844341673484526160, 0.844314882172559230, 0.844288088749805650, +0.844261293216331810, 0.844234495572204760, 0.844207695817491440, 0.844180893952258930, 0.844154089976574150, 0.844127283890504180, 0.844100475694115500, 0.844073665387476080, +0.844046852970652520, 0.844020038443711870, 0.843993221806721090, 0.843966403059747240, 0.843939582202857360, 0.843912759236118080, 0.843885934159597450, 0.843859106973361860, +0.843832277677478590, 0.843805446272014590, 0.843778612757037030, 0.843751777132612850, 0.843724939398809210, 0.843698099555692860, 0.843671257603331610, 0.843644413541792320, +0.843617567371142020, 0.843590719091447780, 0.843563868702776660, 0.843537016205195940, 0.843510161598772120, 0.843483304883573480, 0.843456446059666520, 0.843429585127118410, +0.843402722085996430, 0.843375856936367630, 0.843348989678299080, 0.843322120311858160, 0.843295248837111490, 0.843268375254127120, 0.843241499562971790, 0.843214621763712760, +0.843187741856417090, 0.843160859841152190, 0.843133975717984980, 0.843107089486982990, 0.843080201148212800, 0.843053310701742500, 0.843026418147638900, 0.842999523485969290, +0.842972626716800950, 0.842945727840200940, 0.842918826856236650, 0.842891923764974790, 0.842865018566483660, 0.842838111260829970, 0.842811201848081000, 0.842784290328303930, +0.842757376701566250, 0.842730460967935020, 0.842703543127477750, 0.842676623180261150, 0.842649701126353400, 0.842622776965821440, 0.842595850698732440, 0.842568922325153900, +0.842541991845153100, 0.842515059258797220, 0.842488124566153740, 0.842461187767289510, 0.842434248862272690, 0.842407307851170350, 0.842380364734049760, 0.842353419510978090, +0.842326472182023060, 0.842299522747251730, 0.842272571206731160, 0.842245617560529620, 0.842218661808714080, 0.842191703951351900, 0.842164743988510380, 0.842137781920257010, +0.842110817746659190, 0.842083851467784420, 0.842056883083699410, 0.842029912594472800, 0.842002940000171280, 0.841975965300862490, 0.841948988496613810, 0.841922009587492640, +0.841895028573566350, 0.841868045454902130, 0.841841060231568240, 0.841814072903631640, 0.841787083471159940, 0.841760091934220520, 0.841733098292880790, 0.841706102547208460, +0.841679104697270810, 0.841652104743134900, 0.841625102684869120, 0.841598098522540750, 0.841571092256217070, 0.841544083885965580, 0.841517073411854000, 0.841490060833949620, +0.841463046152320150, 0.841436029367032660, 0.841409010478155420, 0.841381989485755820, 0.841354966389901150, 0.841327941190659010, 0.841300913888097130, 0.841273884482282910, +0.841246852973283500, 0.841219819361167520, 0.841192783646001920, 0.841165745827854310, 0.841138705906792410, 0.841111663882883720, 0.841084619756195860, 0.841057573526796440, +0.841030525194752740, 0.841003474760133040, 0.840976422223004730, 0.840949367583435300, 0.840922310841492490, 0.840895251997244020, 0.840868191050757270, 0.840841128002100090, +0.840814062851339640, 0.840786995598544420, 0.840759926243781820, 0.840732854787119340, 0.840705781228624720, 0.840678705568365660, 0.840651627806409900, 0.840624547942824480, +0.840597465977678260, 0.840570381911038390, 0.840543295742972480, 0.840516207473548380, 0.840489117102833690, 0.840462024630896360, 0.840434930057803790, 0.840407833383623570, +0.840380734608424110, 0.840353633732272900, 0.840326530755237560, 0.840299425677386020, 0.840272318498785810, 0.840245209219504740, 0.840218097839610320, 0.840190984359171060, +0.840163868778254330, 0.840136751096927870, 0.840109631315259620, 0.840082509433317300, 0.840055385451168650, 0.840028259368881590, 0.840001131186523310, 0.839974000904162740, +0.839946868521867170, 0.839919734039704440, 0.839892597457742470, 0.839865458776048900, 0.839838317994691660, 0.839811175113738590, 0.839784030133257200, 0.839756883053316190, +0.839729733873982980, 0.839702582595325380, 0.839675429217411450, 0.839648273740308810, 0.839621116164085520, 0.839593956488808970, 0.839566794714548090, 0.839539630841370070, +0.839512464869343060, 0.839485296798534900, 0.839458126629013530, 0.839430954360846800, 0.839403779994102650, 0.839376603528848570, 0.839349424965153520, 0.839322244303084890, +0.839295061542710610, 0.839267876684098750, 0.839240689727317140, 0.839213500672433830, 0.839186309519516340, 0.839159116268633490, 0.839131920919852780, 0.839104723473242390, +0.839077523928870140, 0.839050322286804100, 0.839023118547112200, 0.838995912709862620, 0.838968704775122640, 0.838941494742961420, 0.838914282613446580, 0.838887068386645950, +0.838859852062627590, 0.838832633641459660, 0.838805413123210110, 0.838778190507947110, 0.838750965795738050, 0.838723738986652090, 0.838696510080756850, 0.838669279078120280, +0.838642045978810540, 0.838614810782895680, 0.838587573490443770, 0.838560334101522420, 0.838533092616200680, 0.838505849034546280, 0.838478603356627270, 0.838451355582511830, +0.838424105712267890, 0.838396853745963620, 0.838369599683667310, 0.838342343525446560, 0.838315085271370330, 0.838287824921506440, 0.838260562475923070, 0.838233297934688150, +0.838206031297870080, 0.838178762565536920, 0.838151491737756830, 0.838124218814597530, 0.838096943796128090, 0.838069666682416450, 0.838042387473530550, 0.838015106169538670, +0.837987822770509090, 0.837960537276509880, 0.837933249687608850, 0.837905960003875180, 0.837878668225376710, 0.837851374352181490, 0.837824078384357800, 0.837796780321974020, +0.837769480165098220, 0.837742177913798680, 0.837714873568143230, 0.837687567128201140, 0.837660258594040140, 0.837632947965728400, 0.837605635243334420, 0.837578320426926260, +0.837551003516572300, 0.837523684512340380, 0.837496363414299670, 0.837469040222518110, 0.837441714937063990, 0.837414387558005460, 0.837387058085411030, 0.837359726519348980, +0.837332392859887590, 0.837305057107094800, 0.837277719261039780, 0.837250379321790470, 0.837223037289415160, 0.837195693163982350, 0.837168346945560300, 0.837140998634217310, +0.837113648230021880, 0.837086295733041830, 0.837058941143346560, 0.837031584461003900, 0.837004225686082240, 0.836976864818650080, 0.836949501858775700, 0.836922136806527610, +0.836894769661973740, 0.836867400425183370, 0.836840029096224460, 0.836812655675165610, 0.836785280162074980, 0.836757902557021200, 0.836730522860072660, 0.836703141071297840, +0.836675757190764700, 0.836648371218542630, 0.836620983154699570, 0.836593592999304140, 0.836566200752424720, 0.836538806414129700, 0.836511409984487810, 0.836484011463567320, +0.836456610851436300, 0.836429208148164240, 0.836401803353819200, 0.836374396468469560, 0.836346987492184060, 0.836319576425031070, 0.836292163267079000, 0.836264748018396230, +0.836237330679051930, 0.836209911249114370, 0.836182489728652060, 0.836155066117733490, 0.836127640416427180, 0.836100212624801830, 0.836072782742925960, 0.836045350770867610, +0.836017916708696410, 0.835990480556480400, 0.835963042314288310, 0.835935601982188410, 0.835908159560249660, 0.835880715048540450, 0.835853268447128930, 0.835825819756084830, +0.835798368975476100, 0.835770916105371460, 0.835743461145839530, 0.835716004096948910, 0.835688544958768320, 0.835661083731366380, 0.835633620414811260, 0.835606155009172570, +0.835578687514518470, 0.835551217930917690, 0.835523746258438840, 0.835496272497150530, 0.835468796647121700, 0.835441318708420750, 0.835413838681116070, 0.835386356565277270, +0.835358872360972620, 0.835331386068270730, 0.835303897687240450, 0.835276407217950380, 0.835248914660469240, 0.835221420014865430, 0.835193923281208450, 0.835166424459566790, +0.835138923550008960, 0.835111420552603900, 0.835083915467420220, 0.835056408294526760, 0.835028899033992360, 0.835001387685885170, 0.834973874250275030, 0.834946358727230110, +0.834918841116819350, 0.834891321419111490, 0.834863799634175340, 0.834836275762079640, 0.834808749802893320, 0.834781221756684570, 0.834753691623523310, 0.834726159403477830, +0.834698625096616960, 0.834671088703009430, 0.834643550222724300, 0.834616009655830270, 0.834588467002395640, 0.834560922262490460, 0.834533375436182890, 0.834505826523541880, +0.834478275524636270, 0.834450722439535000, 0.834423167268307010, 0.834395610011021030, 0.834368050667745550, 0.834340489238550420, 0.834312925723504020, 0.834285360122675400, +0.834257792436133290, 0.834230222663946750, 0.834202650806184720, 0.834175076862915480, 0.834147500834209080, 0.834119922720133910, 0.834092342520758920, 0.834064760236153060, +0.834037175866385370, 0.834009589411524700, 0.833982000871639980, 0.833954410246799950, 0.833926817537074210, 0.833899222742531480, 0.833871625863240820, 0.833844026899270950, +0.833816425850691050, 0.833788822717570040, 0.833761217499977000, 0.833733610197980420, 0.833706000811650360, 0.833678389341055310, 0.833650775786264230, 0.833623160147346280, +0.833595542424370280, 0.833567922617405640, 0.833540300726520520, 0.833512676751785200, 0.833485050693268170, 0.833457422551038610, 0.833429792325165340, 0.833402160015717760, +0.833374525622764590, 0.833346889146375220, 0.833319250586618150, 0.833291609943563440, 0.833263967217279690, 0.833236322407835960, 0.833208675515301530, 0.833181026539745350, +0.833153375481236580, 0.833125722339844500, 0.833098067115637500, 0.833070409808685850, 0.833042750419058180, 0.833015088946823630, 0.832987425392051390, 0.832959759754810510, +0.832932092035170270, 0.832904422233199380, 0.832876750348967800, 0.832849076382544460, 0.832821400333998430, 0.832793722203398760, 0.832766041990814940, 0.832738359696315930, +0.832710675319971010, 0.832682988861848990, 0.832655300322019950, 0.832627609700552610, 0.832599916997516340, 0.832572222212980220, 0.832544525347013510, 0.832516826399685490, +0.832489125371065010, 0.832461422261222110, 0.832433717070225730, 0.832406009798145050, 0.832378300445049350, 0.832350589011007780, 0.832322875496089850, 0.832295159900364730, +0.832267442223901140, 0.832239722466769580, 0.832212000629038550, 0.832184276710777660, 0.832156550712055960, 0.832128822632942970, 0.832101092473507940, 0.832073360233820060, +0.832045625913948370, 0.832017889513963160, 0.831990151033933150, 0.831962410473927720, 0.831934667834016370, 0.831906923114268280, 0.831879176314752940, 0.831851427435539080, +0.831823676476697190, 0.831795923438296110, 0.831768168320405230, 0.831740411123093940, 0.831712651846431620, 0.831684890490487660, 0.831657127055331460, 0.831629361541031950, +0.831601593947659530, 0.831573824275283150, 0.831546052523972290, 0.831518278693796130, 0.831490502784824390, 0.831462724797126350, 0.831434944730770950, 0.831407162585828810, +0.831379378362368640, 0.831351592060460170, 0.831323803680172560, 0.831296013221575540, 0.831268220684738490, 0.831240426069730810, 0.831212629376621660, 0.831184830605481430, +0.831157029756379060, 0.831129226829384060, 0.831101421824566140, 0.831073614741994590, 0.831045805581739020, 0.831017994343868920, 0.830990181028453350, 0.830962365635562810, +0.830934548165266350, 0.830906728617633590, 0.830878906992733920, 0.830851083290637060, 0.830823257511412390, 0.830795429655129200, 0.830767599721857870, 0.830739767711667580, +0.830711933624627810, 0.830684097460808180, 0.830656259220278410, 0.830628418903107900, 0.830600576509366470, 0.830572732039122960, 0.830544885492448200, 0.830517036869411250, +0.830489186170081610, 0.830461333394529100, 0.830433478542823120, 0.830405621615033620, 0.830377762611229970, 0.830349901531481470, 0.830322038375858610, 0.830294173144430770, +0.830266305837267460, 0.830238436454438290, 0.830210564996013090, 0.830182691462061580, 0.830154815852652720, 0.830126938167857430, 0.830099058407744670, 0.830071176572384380, +0.830043292661846070, 0.830015406676199550, 0.829987518615514450, 0.829959628479860710, 0.829931736269307270, 0.829903841983924970, 0.829875945623783200, 0.829848047188951440, +0.829820146679499660, 0.829792244095497460, 0.829764339437014660, 0.829736432704120450, 0.829708523896885760, 0.829680613015379650, 0.829652700059672070, 0.829624785029832830, +0.829596867925931460, 0.829568948748037990, 0.829541027496222160, 0.829513104170553350, 0.829485178771102170, 0.829457251297938010, 0.829429321751130820, 0.829401390130750320, +0.829373456436866330, 0.829345520669548590, 0.829317582828867140, 0.829289642914891270, 0.829261700927691800, 0.829233756867338020, 0.829205810733899870, 0.829177862527447180, +0.829149912248049790, 0.829121959895777750, 0.829094005470700220, 0.829066048972888160, 0.829038090402410940, 0.829010129759338630, 0.828982167043740840, 0.828954202255687720, +0.828926235395249120, 0.828898266462494980, 0.828870295457494580, 0.828842322380318960, 0.828814347231037530, 0.828786370009720220, 0.828758390716436980, 0.828730409351257750, +0.828702425914252580, 0.828674440405491320, 0.828646452825043460, 0.828618463172979940, 0.828590471449370260, 0.828562477654284370, 0.828534481787792320, 0.828506483849964060, +0.828478483840869640, 0.828450481760578450, 0.828422477609161540, 0.828394471386688540, 0.828366463093229250, 0.828338452728853870, 0.828310440293632320, 0.828282425787634780, +0.828254409210931080, 0.828226390563590820, 0.828198369845685180, 0.828170347057283540, 0.828142322198456070, 0.828114295269272720, 0.828086266269803750, 0.828058235200119010, +0.828030202060288210, 0.828002166850382420, 0.827974129570471230, 0.827946090220624710, 0.827918048800913020, 0.827890005311406110, 0.827861959752174250, 0.827833912123287500, +0.827805862424815350, 0.827777810656829200, 0.827749756819398440, 0.827721700912593230, 0.827693642936483950, 0.827665582891140450, 0.827637520776632880, 0.827609456593031640, +0.827581390340406340, 0.827553322018827920, 0.827525251628366210, 0.827497179169091490, 0.827469104641073700, 0.827441028044383240, 0.827412949379090160, 0.827384868645264170, +0.827356785842976560, 0.827328700972296940, 0.827300614033295580, 0.827272525026042760, 0.827244433950608540, 0.827216340807063300, 0.827188245595477100, 0.827160148315919890, +0.827132048968462820, 0.827103947553175510, 0.827075844070128460, 0.827047738519391730, 0.827019630901035700, 0.826991521215130530, 0.826963409461746620, 0.826935295640953690, +0.826907179752823020, 0.826879061797424320, 0.826850941774827990, 0.826822819685104400, 0.826794695528323630, 0.826766569304556280, 0.826738441013871840, 0.826710310656341930, +0.826682178232036160, 0.826654043741025020, 0.826625907183378690, 0.826597768559167670, 0.826569627868462110, 0.826541485111332630, 0.826513340287848840, 0.826485193398082240, +0.826457044442102660, 0.826428893419980380, 0.826400740331786010, 0.826372585177589710, 0.826344427957461880, 0.826316268671472560, 0.826288107319693040, 0.826259943902193370, +0.826231778419043720, 0.826203610870314690, 0.826175441256076560, 0.826147269576399830, 0.826119095831355010, 0.826090920021011810, 0.826062742145441950, 0.826034562204715160, +0.826006380198902050, 0.825978196128072880, 0.825950009992298280, 0.825921821791648640, 0.825893631526194440, 0.825865439196005640, 0.825837244801153840, 0.825809048341708870, +0.825780849817741250, 0.825752649229321570, 0.825724446576520220, 0.825696241859407710, 0.825668035078054200, 0.825639826232530960, 0.825611615322908280, 0.825583402349256530, +0.825555187311646230, 0.825526970210148090, 0.825498751044832390, 0.825470529815769850, 0.825442306523030520, 0.825414081166685910, 0.825385853746806060, 0.825357624263461600, +0.825329392716723120, 0.825301159106661130, 0.825272923433346240, 0.825244685696848950, 0.825216445897239640, 0.825188204034589590, 0.825159960108968970, 0.825131714120448610, +0.825103466069098790, 0.825075215954990450, 0.825046963778193980, 0.825018709538779650, 0.824990453236819080, 0.824962194872382320, 0.824933934445540080, 0.824905671956363000, +0.824877407404921770, 0.824849140791287020, 0.824820872115529350, 0.824792601377719150, 0.824764328577927810, 0.824736053716225710, 0.824707776792683370, 0.824679497807371710, +0.824651216760361240, 0.824622933651722790, 0.824594648481526530, 0.824566361249844060, 0.824538071956745780, 0.824509780602302180, 0.824481487186584210, 0.824453191709662580, +0.824424894171607910, 0.824396594572490930, 0.824368292912382120, 0.824339989191352980, 0.824311683409473920, 0.824283375566815520, 0.824255065663448860, 0.824226753699444430, +0.824198439674873160, 0.824170123589805790, 0.824141805444312590, 0.824113485238465390, 0.824085162972334470, 0.824056838645990660, 0.824028512259504690, 0.824000183812947480, +0.823971853306389890, 0.823943520739902070, 0.823915186113555960, 0.823886849427421850, 0.823858510681570680, 0.823830169876073270, 0.823801827011000350, 0.823773482086422870, +0.823745135102411760, 0.823716786059037310, 0.823688434956371340, 0.823660081794484240, 0.823631726573446970, 0.823603369293330450, 0.823575009954205410, 0.823546648556142900, +0.823518285099213760, 0.823489919583488490, 0.823461552009038810, 0.823433182375935320, 0.823404810684248870, 0.823376436934050270, 0.823348061125410700, 0.823319683258400990, +0.823291303333091530, 0.823262921349554260, 0.823234537307859780, 0.823206151208078940, 0.823177763050282670, 0.823149372834542040, 0.823120980560927970, 0.823092586229511420, +0.823064189840363000, 0.823035791393554430, 0.823007390889156530, 0.822978988327240150, 0.822950583707876220, 0.822922177031135900, 0.822893768297090040, 0.822865357505809360, +0.822836944657365790, 0.822808529751829720, 0.822780112789272540, 0.822751693769764870, 0.822723272693378080, 0.822694849560183130, 0.822666424370250950, 0.822637997123652260, +0.822609567820459130, 0.822581136460742050, 0.822552703044572180, 0.822524267572020460, 0.822495830043158070, 0.822467390458056170, 0.822438948816785810, 0.822410505119417490, +0.822382059366023490, 0.822353611556674300, 0.822325161691441100, 0.822296709770394930, 0.822268255793607070, 0.822239799761148580, 0.822211341673090070, 0.822182881529503580, +0.822154419330460070, 0.822125955076030370, 0.822097488766285970, 0.822069020401297700, 0.822040549981136850, 0.822012077505874680, 0.821983602975581820, 0.821955126390330530, +0.821926647750191310, 0.821898167055235440, 0.821869684305534310, 0.821841199501158860, 0.821812712642180370, 0.821784223728669660, 0.821755732760698910, 0.821727239738338830, +0.821698744661660600, 0.821670247530735590, 0.821641748345634860, 0.821613247106429910, 0.821584743813191690, 0.821556238465991130, 0.821527731064900510, 0.821499221609990560, +0.821470710101332550, 0.821442196538997860, 0.821413680923057550, 0.821385163253583130, 0.821356643530645750, 0.821328121754316240, 0.821299597924666890, 0.821271072041768630, +0.821242544105692640, 0.821214014116510400, 0.821185482074292980, 0.821156947979111980, 0.821128411831038020, 0.821099873630143580, 0.821071333376499400, 0.821042791070176970, +0.821014246711247450, 0.820985700299782460, 0.820957151835853050, 0.820928601319530940, 0.820900048750886620, 0.820871494129992830, 0.820842937456920270, 0.820814378731740350, +0.820785817954524540, 0.820757255125344140, 0.820728690244270640, 0.820700123311375320, 0.820671554326729340, 0.820642983290404860, 0.820614410202472940, 0.820585835063004980, +0.820557257872072450, 0.820528678629746770, 0.820500097336099410, 0.820471513991201330, 0.820442928595124910, 0.820414341147941210, 0.820385751649721720, 0.820357160100537720, +0.820328566500460930, 0.820299970849562630, 0.820271373147914430, 0.820242773395587380, 0.820214171592653860, 0.820185567739184830, 0.820156961835252000, 0.820128353880926640, +0.820099743876280480, 0.820071131821384910, 0.820042517716311090, 0.820013901561131410, 0.819985283355916920, 0.819956663100739340, 0.819928040795670050, 0.819899416440780680, +0.819870790036142720, 0.819842161581827880, 0.819813531077907000, 0.819784898524452910, 0.819756263921536550, 0.819727627269229430, 0.819698988567603370, 0.819670347816729760, +0.819641705016680320, 0.819613060167526660, 0.819584413269339840, 0.819555764322192350, 0.819527113326155580, 0.819498460281301020, 0.819469805187700300, 0.819441148045425010, +0.819412488854546870, 0.819383827615137060, 0.819355164327268180, 0.819326498991011400, 0.819297831606438320, 0.819269162173620670, 0.819240490692630050, 0.819211817163538300, +0.819183141586417030, 0.819154463961337290, 0.819125784288372020, 0.819097102567592160, 0.819068418799069660, 0.819039732982876020, 0.819011045119083180, 0.818982355207762640, +0.818953663248986220, 0.818924969242825100, 0.818896273189352100, 0.818867575088638390, 0.818838874940755800, 0.818810172745775940, 0.818781468503770760, 0.818752762214811860, +0.818724053878970510, 0.818695343496319560, 0.818666631066930270, 0.818637916590874370, 0.818609200068223690, 0.818580481499050050, 0.818551760883425070, 0.818523038221420810, +0.818494313513108420, 0.818465586758560740, 0.818436857957849150, 0.818408127111045380, 0.818379394218221260, 0.818350659279448720, 0.818321922294799500, 0.818293183264344970, +0.818264442188157970, 0.818235699066309890, 0.818206953898872550, 0.818178206685917790, 0.818149457427517550, 0.818120706123743660, 0.818091952774668060, 0.818063197380362040, +0.818034439940898530, 0.818005680456348920, 0.817976918926785030, 0.817948155352278940, 0.817919389732902460, 0.817890622068727420, 0.817861852359825890, 0.817833080606269250, +0.817804306808130320, 0.817775530965480720, 0.817746753078392290, 0.817717973146936950, 0.817689191171186660, 0.817660407151213350, 0.817631621087088640, 0.817602832978885250, +0.817574042826674900, 0.817545250630529410, 0.817516456390520730, 0.817487660106720910, 0.817458861779202020, 0.817430061408035980, 0.817401258993294190, 0.817372454535049810, +0.817343648033374340, 0.817314839488339720, 0.817286028900017890, 0.817257216268481130, 0.817228401593801280, 0.817199584876050490, 0.817170766115300150, 0.817141945311623430, +0.817113122465091820, 0.817084297575777390, 0.817055470643752280, 0.817026641669088450, 0.816997810651858060, 0.816968977592132610, 0.816940142489985140, 0.816911305345487390, +0.816882466158711410, 0.816853624929729240, 0.816824781658613050, 0.816795936345434790, 0.816767088990266840, 0.816738239593180590, 0.816709388154249210, 0.816680534673544400, +0.816651679151138230, 0.816622821587102870, 0.816593961981510460, 0.816565100334433190, 0.816536236645942550, 0.816507370916111920, 0.816478503145012800, 0.816449633332717470, +0.816420761479298100, 0.816391887584826730, 0.816363011649375750, 0.816334133673017100, 0.816305253655822740, 0.816276371597865700, 0.816247487499217720, 0.816218601359951060, +0.816189713180137890, 0.816160822959850370, 0.816131930699160900, 0.816103036398141520, 0.816074140056864070, 0.816045241675401710, 0.816016341253826380, 0.815987438792210140, +0.815958534290625260, 0.815929627749144130, 0.815900719167838790, 0.815871808546781320, 0.815842895886044750, 0.815813981185700920, 0.815785064445822110, 0.815756145666480690, +0.815727224847748960, 0.815698301989699060, 0.815669377092403500, 0.815640450155933890, 0.815611521180363730, 0.815582590165764730, 0.815553657112209280, 0.815524722019769670, +0.815495784888518370, 0.815466845718527460, 0.815437904509869530, 0.815408961262616310, 0.815380015976841070, 0.815351068652615970, 0.815322119290013080, 0.815293167889105000, +0.815264214449963890, 0.815235258972662360, 0.815206301457272020, 0.815177341903866590, 0.815148380312517680, 0.815119416683297900, 0.815090451016279530, 0.815061483311535050, +0.815032513569136860, 0.815003541789157460, 0.814974567971668560, 0.814945592116743890, 0.814916614224455160, 0.814887634294874870, 0.814858652328075530, 0.814829668324129620, +0.814800682283109530, 0.814771694205087100, 0.814742704090136050, 0.814713711938328200, 0.814684717749736160, 0.814655721524432220, 0.814626723262488970, 0.814597722963978920, +0.814568720628974670, 0.814539716257547950, 0.814510709849772590, 0.814481701405720400, 0.814452690925463910, 0.814423678409075810, 0.814394663856628400, 0.814365647268194380, +0.814336628643846260, 0.814307607983655980, 0.814278585287697250, 0.814249560556042030, 0.814220533788762910, 0.814191504985932510, 0.814162474147623330, 0.814133441273907970, +0.814104406364858480, 0.814075369420548480, 0.814046330441050010, 0.814017289426435810, 0.813988246376778360, 0.813959201292150160, 0.813930154172624150, 0.813901105018272620, +0.813872053829167940, 0.813843000605383500, 0.813813945346991700, 0.813784888054064900, 0.813755828726675960, 0.813726767364897460, 0.813697703968802030, 0.813668638538461720, +0.813639571073950460, 0.813610501575340320, 0.813581430042703780, 0.813552356476113680, 0.813523280875642740, 0.813494203241363680, 0.813465123573348990, 0.813436041871670960, +0.813406958136403400, 0.813377872367618490, 0.813348784565388840, 0.813319694729787270, 0.813290602860886390, 0.813261508958759040, 0.813232413023477930, 0.813203315055115230, +0.813174215053744760, 0.813145113019438810, 0.813116008952270100, 0.813086902852311330, 0.813057794719635240, 0.813028684554314760, 0.812999572356421950, 0.812970458126030860, +0.812941341863213540, 0.812912223568042820, 0.812883103240591650, 0.812853980880932640, 0.812824856489138710, 0.812795730065282610, 0.812766601609436700, 0.812737471121674830, +0.812708338602069260, 0.812679204050692830, 0.812650067467618360, 0.812620928852918810, 0.812591788206666890, 0.812562645528935420, 0.812533500819796920, 0.812504354079325200, +0.812475205307592540, 0.812446054504671890, 0.812416901670636070, 0.812387746805558030, 0.812358589909510600, 0.812329430982566160, 0.812300270024798770, 0.812271107036280580, +0.812241942017084770, 0.812212774967283950, 0.812183605886951270, 0.812154434776159560, 0.812125261634981780, 0.812096086463490300, 0.812066909261759060, 0.812037730029860680, +0.812008548767867880, 0.811979365475853810, 0.811950180153891200, 0.811920992802053210, 0.811891803420412230, 0.811862612009042190, 0.811833418568015720, 0.811804223097405630, +0.811775025597284980, 0.811745826067726830, 0.811716624508804110, 0.811687420920589760, 0.811658215303156410, 0.811629007656577970, 0.811599797980927070, 0.811570586276276650, +0.811541372542699760, 0.811512156780269440, 0.811482938989058770, 0.811453719169140770, 0.811424497320587860, 0.811395273443474290, 0.811366047537872560, 0.811336819603855620, +0.811307589641496630, 0.811278357650868750, 0.811249123632044930, 0.811219887585097780, 0.811190649510101450, 0.811161409407128550, 0.811132167276252040, 0.811102923117545170, +0.811073676931080900, 0.811044428716932500, 0.811015178475173130, 0.810985926205875170, 0.810956671909112910, 0.810927415584958950, 0.810898157233486570, 0.810868896854768710, +0.810839634448878630, 0.810810370015889510, 0.810781103555874410, 0.810751835068906020, 0.810722564555058530, 0.810693292014404760, 0.810664017447017660, 0.810634740852970490, +0.810605462232336540, 0.810576181585188960, 0.810546898911600370, 0.810517614211644920, 0.810488327485395570, 0.810459038732925460, 0.810429747954307670, 0.810400455149615560, +0.810371160318922200, 0.810341863462300970, 0.810312564579824700, 0.810283263671567440, 0.810253960737602030, 0.810224655778001730, 0.810195348792839720, 0.810166039782189370, +0.810136728746123970, 0.810107415684716230, 0.810078100598040420, 0.810048783486169380, 0.810019464349176380, 0.809990143187134690, 0.809960820000117710, 0.809931494788198700, +0.809902167551450840, 0.809872838289947160, 0.809843507003761840, 0.809814173692967710, 0.809784838357638260, 0.809755500997846660, 0.809726161613666280, 0.809696820205170530, +0.809667476772432670, 0.809638131315525640, 0.809608783834523840, 0.809579434329499970, 0.809550082800527650, 0.809520729247680040, 0.809491373671030630, 0.809462016070652820, +0.809432656446619440, 0.809403294799004860, 0.809373931127882140, 0.809344565433324560, 0.809315197715405500, 0.809285827974198570, 0.809256456209776930, 0.809227082422214310, +0.809197706611583300, 0.809168328777958630, 0.809138948921413140, 0.809109567042020310, 0.809080183139853530, 0.809050797214986290, 0.809021409267492110, 0.808992019297444240, +0.808962627304915970, 0.808933233289981570, 0.808903837252714200, 0.808874439193187130, 0.808845039111473980, 0.808815637007648250, 0.808786232881783420, 0.808756826733952440, +0.808727418564229920, 0.808698008372688900, 0.808668596159402900, 0.808639181924445280, 0.808609765667889780, 0.808580347389809880, 0.808550927090279090, 0.808521504769370570, +0.808492080427158700, 0.808462654063716650, 0.808433225679117910, 0.808403795273436200, 0.808374362846744910, 0.808344928399117760, 0.808315491930627790, 0.808286053441349630, +0.808256612931356200, 0.808227170400721340, 0.808197725849518540, 0.808168279277821530, 0.808138830685703690, 0.808109380073238850, 0.808079927440499950, 0.808050472787561810, +0.808021016114497500, 0.807991557421380620, 0.807962096708284890, 0.807932633975283810, 0.807903169222451310, 0.807873702449860790, 0.807844233657585510, 0.807814762845700200, +0.807785290014277900, 0.807755815163392340, 0.807726338293117350, 0.807696859403526530, 0.807667378494693500, 0.807637895566691520, 0.807608410619595320, 0.807578923653478050, +0.807549434668413560, 0.807519943664475440, 0.807490450641737520, 0.807460955600273420, 0.807431458540156850, 0.807401959461461200, 0.807372458364261190, 0.807342955248629980, +0.807313450114641510, 0.807283942962369270, 0.807254433791887220, 0.807224922603269060, 0.807195409396588630, 0.807165894171919200, 0.807136376929335490, 0.807106857668910880, +0.807077336390719100, 0.807047813094833980, 0.807018287781329220, 0.806988760450278900, 0.806959231101756050, 0.806929699735835730, 0.806900166352591100, 0.806870630952096100, +0.806841093534424570, 0.806811554099650220, 0.806782012647846990, 0.806752469179088720, 0.806722923693448780, 0.806693376191002120, 0.806663826671821900, 0.806634275135982180, +0.806604721583556780, 0.806575166014619540, 0.806545608429244390, 0.806516048827504720, 0.806486487209475470, 0.806456923575229910, 0.806427357924842100, 0.806397790258385980, +0.806368220575935270, 0.806338648877564010, 0.806309075163346160, 0.806279499433355080, 0.806249921687665850, 0.806220341926351840, 0.806190760149486870, 0.806161176357145020, +0.806131590549400200, 0.806102002726326480, 0.806072412887997690, 0.806042821034487320, 0.806013227165870540, 0.805983631282220610, 0.805954033383611600, 0.805924433470117550, +0.805894831541812410, 0.805865227598770110, 0.805835621641064370, 0.805806013668769920, 0.805776403681960570, 0.805746791680710170, 0.805717177665092770, 0.805687561635182400, +0.805657943591053250, 0.805628323532779130, 0.805598701460433770, 0.805569077374092110, 0.805539451273827760, 0.805509823159714760, 0.805480193031827160, 0.805450560890239250, +0.805420926735024860, 0.805391290566257580, 0.805361652384012580, 0.805332012188363480, 0.805302369979384420, 0.805272725757149370, 0.805243079521732460, 0.805213431273207990, +0.805183781011649780, 0.805154128737131770, 0.805124474449728790, 0.805094818149514780, 0.805065159836563570, 0.805035499510949550, 0.805005837172746760, 0.804976172822029380, +0.804946506458871560, 0.804916838083347020, 0.804887167695530810, 0.804857495295496770, 0.804827820883318950, 0.804798144459071610, 0.804768466022828810, 0.804738785574664940, +0.804709103114653600, 0.804679418642869960, 0.804649732159387730, 0.804620043664281300, 0.804590353157624620, 0.804560660639492160, 0.804530966109958000, 0.804501269569096510, +0.804471571016981190, 0.804441870453687540, 0.804412167879289260, 0.804382463293860540, 0.804352756697475630, 0.804323048090208830, 0.804293337472134380, 0.804263624843326590, +0.804233910203859260, 0.804204193553807680, 0.804174474893245560, 0.804144754222247290, 0.804115031540887150, 0.804085306849239400, 0.804055580147378430, 0.804025851435377970, +0.803996120713313390, 0.803966387981258520, 0.803936653239287650, 0.803906916487475140, 0.803877177725895400, 0.803847436954622680, 0.803817694173731390, 0.803787949383295340, +0.803758202583389920, 0.803728453774088970, 0.803698702955466970, 0.803668950127598090, 0.803639195290556940, 0.803609438444417790, 0.803579679589254470, 0.803549918725142480, +0.803520155852155750, 0.803490390970368560, 0.803460624079855410, 0.803430855180690790, 0.803401084272948870, 0.803371311356704370, 0.803341536432031100, 0.803311759499004350, +0.803281980557698280, 0.803252199608187280, 0.803222416650545830, 0.803192631684848220, 0.803162844711169170, 0.803133055729582930, 0.803103264740163470, 0.803073471742986490, +0.803043676738125710, 0.803013879725655850, 0.802984080705651190, 0.802954279678186440, 0.802924476643335880, 0.802894671601173670, 0.802864864551775300, 0.802835055495214830, +0.802805244431566640, 0.802775431360905340, 0.802745616283305430, 0.802715799198841510, 0.802685980107588180, 0.802656159009619290, 0.802626335905010540, 0.802596510793835980, +0.802566683676170120, 0.802536854552087450, 0.802507023421662800, 0.802477190284970550, 0.802447355142085320, 0.802417517993081140, 0.802387678838033750, 0.802357837677017070, +0.802327994510105840, 0.802298149337374640, 0.802268302158898110, 0.802238452974750720, 0.802208601785006750, 0.802178748589741810, 0.802148893389029950, 0.802119036182945890, +0.802089176971564230, 0.802059315754959590, 0.802029452533206790, 0.801999587306380210, 0.801969720074554250, 0.801939850837804390, 0.801909979596205020, 0.801880106349830650, +0.801850231098755970, 0.801820353843055830, 0.801790474582804720, 0.801760593318076920, 0.801730710048948140, 0.801700824775492650, 0.801670937497785060, 0.801641048215900100, +0.801611156929912580, 0.801581263639897120, 0.801551368345928440, 0.801521471048080910, 0.801491571746430150, 0.801461670441050540, 0.801431767132016800, 0.801401861819403540, +0.801371954503285580, 0.801342045183737860, 0.801312133860835000, 0.801282220534651260, 0.801252305205262470, 0.801222387872742910, 0.801192468537167410, 0.801162547198610800, +0.801132623857147670, 0.801102698512853100, 0.801072771165801220, 0.801042841816068000, 0.801012910463727580, 0.800982977108855020, 0.800953041751524930, 0.800923104391812140, +0.800893165029791690, 0.800863223665538300, 0.800833280299126370, 0.800803334930631720, 0.800773387560128840, 0.800743438187692340, 0.800713486813397380, 0.800683533437318570, +0.800653578059530970, 0.800623620680109500, 0.800593661299128350, 0.800563699916663650, 0.800533736532789700, 0.800503771147581420, 0.800473803761113660, 0.800443834373461340, +0.800413862984699520, 0.800383889594902480, 0.800353914204146260, 0.800323936812505240, 0.800293957420054380, 0.800263976026868720, 0.800233992633022970, 0.800204007238592310, +0.800174019843651660, 0.800144030448275420, 0.800114039052539640, 0.800084045656518690, 0.800054050260287640, 0.800024052863921530, 0.799994053467495300, 0.799964052071083900, +0.799934048674761810, 0.799904043278605200, 0.799874035882688350, 0.799844026487086520, 0.799814015091874660, 0.799784001697127600, 0.799753986302920720, 0.799723968909328730, +0.799693949516426360, 0.799663928124289660, 0.799633904732993120, 0.799603879342611790, 0.799573851953220840, 0.799543822564895200, 0.799513791177710040, 0.799483757791740410, +0.799453722407060810, 0.799423685023747390, 0.799393645641874870, 0.799363604261518200, 0.799333560882752430, 0.799303515505652820, 0.799273468130294430, 0.799243418756751870, +0.799213367385101290, 0.799183314015417200, 0.799153258647774980, 0.799123201282249450, 0.799093141918916010, 0.799063080557849690, 0.799033017199125670, 0.799002951842818670, +0.798972884489004720, 0.798942815137758560, 0.798912743789155330, 0.798882670443270330, 0.798852595100178590, 0.798822517759955390, 0.798792438422675890, 0.798762357088414810, +0.798732273757248310, 0.798702188429251110, 0.798672101104498490, 0.798642011783065600, 0.798611920465027710, 0.798581827150460000, 0.798551731839437170, 0.798521634532035510, +0.798491535228329830, 0.798461433928395300, 0.798431330632307090, 0.798401225340140690, 0.798371118051971140, 0.798341008767873840, 0.798310897487923500, 0.798280784212196390, +0.798250668940767350, 0.798220551673711640, 0.798190432411104540, 0.798160311153021440, 0.798130187899537490, 0.798100062650727530, 0.798069935406667930, 0.798039806167433530, +0.798009674933099600, 0.797979541703741520, 0.797949406479434580, 0.797919269260254030, 0.797889130046275490, 0.797858988837573450, 0.797828845634224510, 0.797798700436303410, +0.797768553243885630, 0.797738404057046440, 0.797708252875861220, 0.797678099700405370, 0.797647944530754270, 0.797617787366982740, 0.797587628209167400, 0.797557467057382840, +0.797527303911704790, 0.797497138772208290, 0.797466971638969070, 0.797436802512062390, 0.797406631391563200, 0.797376458277547880, 0.797346283170091490, 0.797316106069269390, +0.797285926975156990, 0.797255745887829770, 0.797225562807363230, 0.797195377733832760, 0.797165190667313280, 0.797135001607881420, 0.797104810555612000, 0.797074617510580510, +0.797044422472862560, 0.797014225442533530, 0.796984026419668920, 0.796953825404343790, 0.796923622396634500, 0.796893417396616230, 0.796863210404364470, 0.796833001419954610, +0.796802790443462250, 0.796772577474963000, 0.796742362514532230, 0.796712145562245010, 0.796681926618177940, 0.796651705682406060, 0.796621482755004990, 0.796591257836050120, +0.796561030925617250, 0.796530802023781680, 0.796500571130619120, 0.796470338246204610, 0.796440103370614770, 0.796409866503924760, 0.796379627646209950, 0.796349386797546190, +0.796319143958008850, 0.796288899127673750, 0.796258652306615860, 0.796228403494911860, 0.796198152692636830, 0.796167899899866470, 0.796137645116676280, 0.796107388343141990, +0.796077129579339290, 0.796046868825343700, 0.796016606081230480, 0.795986341347076130, 0.795956074622956140, 0.795925805908945790, 0.795895535205121020, 0.795865262511557310, +0.795834987828330620, 0.795804711155516320, 0.795774432493189690, 0.795744151841427660, 0.795713869200305180, 0.795683584569897960, 0.795653297950281830, 0.795623009341532410, +0.795592718743725500, 0.795562426156936290, 0.795532131581241590, 0.795501835016716450, 0.795471536463436820, 0.795441235921478310, 0.795410933390916620, 0.795380628871827700, +0.795350322364287270, 0.795320013868370370, 0.795289703384154060, 0.795259390911713380, 0.795229076451124280, 0.795198760002462590, 0.795168441565803910, 0.795138121141224060, +0.795107798728798440, 0.795077474328603870, 0.795047147940715630, 0.795016819565209420, 0.794986489202161310, 0.794956156851646890, 0.794925822513742110, 0.794895486188522790, +0.794865147876064100, 0.794834807576443200, 0.794804465289735250, 0.794774121016016080, 0.794743774755361730, 0.794713426507847820, 0.794683076273550390, 0.794652724052545280, +0.794622369844907860, 0.794592013650714970, 0.794561655470042090, 0.794531295302965070, 0.794500933149559830, 0.794470569009902320, 0.794440202884068250, 0.794409834772133230, +0.794379464674174090, 0.794349092590266310, 0.794318718520485860, 0.794288342464908540, 0.794257964423610410, 0.794227584396667300, 0.794197202384155250, 0.794166818386149780, +0.794136432402727690, 0.794106044433964490, 0.794075654479936220, 0.794045262540718830, 0.794014868616388260, 0.793984472707020550, 0.793954074812691650, 0.793923674933477040, +0.793893273069453790, 0.793862869220697260, 0.793832463387283640, 0.793802055569288840, 0.793771645766788940, 0.793741233979859960, 0.793710820208577190, 0.793680404453018020, +0.793649986713257930, 0.793619566989372750, 0.793589145281438650, 0.793558721589531670, 0.793528295913727980, 0.793497868254103510, 0.793467438610733770, 0.793437006983696010, +0.793406573373065750, 0.793376137778919130, 0.793345700201332100, 0.793315260640380830, 0.793284819096141350, 0.793254375568689270, 0.793223930058101880, 0.793193482564454650, +0.793163033087823650, 0.793132581628285150, 0.793102128185915080, 0.793071672760789830, 0.793041215352985330, 0.793010755962577200, 0.792980294589642810, 0.792949831234257660, +0.792919365896497920, 0.792888898576439740, 0.792858429274159390, 0.792827957989732930, 0.792797484723236520, 0.792767009474745880, 0.792736532244338270, 0.792706053032089410, +0.792675571838075350, 0.792645088662372380, 0.792614603505056640, 0.792584116366204410, 0.792553627245891400, 0.792523136144194780, 0.792492643061190380, 0.792462147996954360, +0.792431650951562980, 0.792401151925092420, 0.792370650917619050, 0.792340147929219030, 0.792309642959968090, 0.792279136009943600, 0.792248627079221170, 0.792218116167877300, +0.792187603275988140, 0.792157088403629860, 0.792126571550878960, 0.792096052717811580, 0.792065531904503570, 0.792035009111032310, 0.792004484337473390, 0.791973957583903320, +0.791943428850398480, 0.791912898137034920, 0.791882365443889120, 0.791851830771036940, 0.791821294118555730, 0.791790755486521220, 0.791760214875009800, 0.791729672284097850, +0.791699127713861860, 0.791668581164377880, 0.791638032635722520, 0.791607482127971610, 0.791576929641202410, 0.791546375175490980, 0.791515818730913480, 0.791485260307546510, +0.791454699905466460, 0.791424137524749600, 0.791393573165471880, 0.791363006827710660, 0.791332438511542110, 0.791301868217042290, 0.791271295944287910, 0.791240721693355240, +0.791210145464320780, 0.791179567257261020, 0.791148987072251670, 0.791118404909370470, 0.791087820768693330, 0.791057234650296540, 0.791026646554256700, 0.790996056480650190, +0.790965464429553620, 0.790934870401043270, 0.790904274395195280, 0.790873676412087170, 0.790843076451794860, 0.790812474514394850, 0.790781870599963630, 0.790751264708577710, +0.790720656840313670, 0.790690046995247480, 0.790659435173456710, 0.790628821375017330, 0.790598205600005820, 0.790567587848498900, 0.790536968120572950, 0.790506346416304680, +0.790475722735770380, 0.790445097079046420, 0.790414469446210080, 0.790383839837337730, 0.790353208252505660, 0.790322574691790570, 0.790291939155269190, 0.790261301643017780, +0.790230662155113170, 0.790200020691631420, 0.790169377252650130, 0.790138731838245460, 0.790108084448493790, 0.790077435083472060, 0.790046783743256650, 0.790016130427924400, +0.789985475137551240, 0.789954817872214890, 0.789924158631991500, 0.789893497416957690, 0.789862834227190170, 0.789832169062765540, 0.789801501923760530, 0.789770832810251730, +0.789740161722315430, 0.789709488660029100, 0.789678813623469140, 0.789648136612712160, 0.789617457627834750, 0.789586776668913750, 0.789556093736025750, 0.789525408829247040, +0.789494721948655330, 0.789464033094326890, 0.789433342266338320, 0.789402649464766350, 0.789371954689687790, 0.789341257941179380, 0.789310559219317700, 0.789279858524179150, +0.789249155855841540, 0.789218451214381060, 0.789187744599874400, 0.789157036012398390, 0.789126325452029760, 0.789095612918845330, 0.789064898412921820, 0.789034181934335610, +0.789003463483164410, 0.788972743059484620, 0.788942020663372930, 0.788911296294906310, 0.788880569954161340, 0.788849841641214860, 0.788819111356143350, 0.788788379099024660, +0.788757644869934940, 0.788726908668951120, 0.788696170496149930, 0.788665430351608520, 0.788634688235403390, 0.788603944147611590, 0.788573198088309280, 0.788542450057574620, +0.788511700055483880, 0.788480948082113780, 0.788450194137541360, 0.788419438221843460, 0.788388680335097010, 0.788357920477378740, 0.788327158648765240, 0.788296394849334340, +0.788265629079162420, 0.788234861338326540, 0.788204091626903410, 0.788173319944970090, 0.788142546292603500, 0.788111770669879920, 0.788080993076877510, 0.788050213513672550, +0.788019431980342080, 0.787988648476963040, 0.787957863003612480, 0.787927075560367120, 0.787896286147304230, 0.787865494764499960, 0.787834701412032490, 0.787803906089978300, +0.787773108798414330, 0.787742309537417640, 0.787711508307065040, 0.787680705107433820, 0.787649899938600240, 0.787619092800642460, 0.787588283693636980, 0.787557472617660740, +0.787526659572790780, 0.787495844559104260, 0.787465027576678130, 0.787434208625589330, 0.787403387705914560, 0.787372564817731880, 0.787341739961117670, 0.787310913136149200, +0.787280084342903420, 0.787249253581457480, 0.787218420851888310, 0.787187586154273200, 0.787156749488688520, 0.787125910855212440, 0.787095070253921670, 0.787064227684893260, +0.787033383148204260, 0.787002536643931830, 0.786971688172152910, 0.786940837732944320, 0.786909985326384230, 0.786879130952549130, 0.786848274611516190, 0.786817416303362550, +0.786786556028165500, 0.786755693786001850, 0.786724829576949110, 0.786693963401083770, 0.786663095258483990, 0.786632225149226480, 0.786601353073388410, 0.786570479031047040, +0.786539603022279320, 0.786508725047162740, 0.786477845105773680, 0.786446963198190630, 0.786416079324490200, 0.786385193484749450, 0.786354305679045850, 0.786323415907456360, +0.786292524170058460, 0.786261630466929210, 0.786230734798145310, 0.786199837163785050, 0.786168937563925360, 0.786138035998643180, 0.786107132468016000, 0.786076226972120980, +0.786045319511035400, 0.786014410084836410, 0.785983498693600960, 0.785952585337407310, 0.785921670016332170, 0.785890752730452840, 0.785859833479846670, 0.785828912264590950, +0.785797989084762840, 0.785767063940439270, 0.785736136831698520, 0.785705207758617520, 0.785674276721273430, 0.785643343719743760, 0.785612408754105650, 0.785581471824436490, +0.785550532930813670, 0.785519592073314010, 0.785488649252015890, 0.785457704466996140, 0.785426757718332260, 0.785395809006101290, 0.785364858330380830, 0.785333905691248390, +0.785302951088781010, 0.785271994523055740, 0.785241035994151070, 0.785210075502143830, 0.785179113047111300, 0.785148148629131070, 0.785117182248280530, 0.785086213904636950, +0.785055243598277270, 0.785024271329279990, 0.784993297097722140, 0.784962320903681010, 0.784931342747234080, 0.784900362628458750, 0.784869380547432600, 0.784838396504232930, +0.784807410498936760, 0.784776422531622610, 0.784745432602367400, 0.784714440711248520, 0.784683446858343680, 0.784652451043730160, 0.784621453267485450, 0.784590453529686700, +0.784559451830412200, 0.784528448169739210, 0.784497442547745010, 0.784466434964507300, 0.784435425420103360, 0.784404413914611020, 0.784373400448107550, 0.784342385020670000, +0.784311367632377080, 0.784280348283305730, 0.784249326973533560, 0.784218303703138050, 0.784187278472196710, 0.784156251280787250, 0.784125222128987160, 0.784094191016873500, +0.784063157944524860, 0.784032122912018290, 0.784001085919431520, 0.783970046966841920, 0.783939006054327200, 0.783907963181965100, 0.783876918349832420, 0.783845871558008000, +0.783814822806569000, 0.783783772095592800, 0.783752719425157230, 0.783721664795339890, 0.783690608206218390, 0.783659549657870440, 0.783628489150372980, 0.783597426683804830, +0.783566362258243050, 0.783535295873765470, 0.783504227530449680, 0.783473157228373300, 0.783442084967613920, 0.783411010748249480, 0.783379934570356820, 0.783348856434014970, +0.783317776339301000, 0.783286694286292500, 0.783255610275067290, 0.783224524305703110, 0.783193436378277540, 0.783162346492867870, 0.783131254649552910, 0.783100160848409830, +0.783069065089516240, 0.783037967372950060, 0.783006867698789020, 0.782975766067110720, 0.782944662477992990, 0.782913556931513100, 0.782882449427749870, 0.782851339966780580, +0.782820228548682830, 0.782789115173534560, 0.782757999841413480, 0.782726882552397420, 0.782695763306563650, 0.782664642103991000, 0.782633518944756630, 0.782602393828938590, +0.782571266756614480, 0.782540137727862350, 0.782509006742759690, 0.782477873801384670, 0.782446738903814330, 0.782415602050127720, 0.782384463240402010, 0.782353322474715230, +0.782322179753145220, 0.782291035075769690, 0.782259888442666470, 0.782228739853913610, 0.782197589309588380, 0.782166436809769720, 0.782135282354535000, 0.782104125943962060, +0.782072967578128720, 0.782041807257113030, 0.782010644980992820, 0.781979480749845470, 0.781948314563749910, 0.781917146422783650, 0.781885976327024390, 0.781854804276550300, +0.781823630271439200, 0.781792454311769030, 0.781761276397617610, 0.781730096529062560, 0.781698914706182800, 0.781667730929055730, 0.781636545197759270, 0.781605357512371590, +0.781574167872970400, 0.781542976279633870, 0.781511782732439820, 0.781480587231465850, 0.781449389776790900, 0.781418190368492470, 0.781386989006648710, 0.781355785691337350, +0.781324580422636530, 0.781293373200624200, 0.781262164025377960, 0.781230952896976860, 0.781199739815498400, 0.781168524781020500, 0.781137307793621450, 0.781106088853378950, +0.781074867960371400, 0.781043645114676500, 0.781012420316372080, 0.780981193565537080, 0.780949964862249100, 0.780918734206586310, 0.780887501598626520, 0.780856267038448130, +0.780825030526128950, 0.780793792061746710, 0.780762551645380550, 0.780731309277107990, 0.780700064957007170, 0.780668818685156250, 0.780637570461633180, 0.780606320286516220, +0.780575068159883420, 0.780543814081812390, 0.780512558052382510, 0.780481300071671160, 0.780450040139756500, 0.780418778256716790, 0.780387514422630100, 0.780356248637574690, +0.780324980901628610, 0.780293711214869570, 0.780262439577376730, 0.780231165989227820, 0.780199890450501090, 0.780168612961274490, 0.780137333521626400, 0.780106052131635090, +0.780074768791377940, 0.780043483500934550, 0.780012196260382320, 0.779980907069799720, 0.779949615929264820, 0.779918322838855870, 0.779887027798651040, 0.779855730808728720, +0.779824431869166500, 0.779793130980043770, 0.779761828141438240, 0.779730523353428070, 0.779699216616091650, 0.779667907929507240, 0.779636597293752900, 0.779605284708907220, +0.779573970175047700, 0.779542653692253840, 0.779511335260603230, 0.779480014880174380, 0.779448692551045540, 0.779417368273294890, 0.779386042047000900, 0.779354713872241200, +0.779323383749095270, 0.779292051677640820, 0.779260717657956350, 0.779229381690120020, 0.779198043774210310, 0.779166703910305400, 0.779135362098483770, 0.779104018338823150, +0.779072672631403120, 0.779041324976301300, 0.779009975373596290, 0.778978623823366250, 0.778947270325689670, 0.778915914880644930, 0.778884557488309760, 0.778853198148763860, +0.778821836862084950, 0.778790473628351410, 0.778759108447641730, 0.778727741320034310, 0.778696372245607390, 0.778665001224439710, 0.778633628256608870, 0.778602253342194570, +0.778570876481274540, 0.778539497673927490, 0.778508116920231590, 0.778476734220265420, 0.778445349574107380, 0.778413962981835960, 0.778382574443529100, 0.778351183959266390, +0.778319791529125670, 0.778288397153185430, 0.778257000831524270, 0.778225602564220690, 0.778194202351352950, 0.778162800192999220, 0.778131396089239090, 0.778099990040150400, +0.778068582045811750, 0.778037172106301630, 0.778005760221698540, 0.777974346392081180, 0.777942930617527840, 0.777911512898116660, 0.777880093233927260, 0.777848671625037680, +0.777817248071526300, 0.777785822573471840, 0.777754395130952900, 0.777722965744047980, 0.777691534412835010, 0.777660101137393700, 0.777628665917802220, 0.777597228754139060, +0.777565789646482930, 0.777534348594912220, 0.777502905599505630, 0.777471460660341900, 0.777440013777498830, 0.777408564951056260, 0.777377114181092340, 0.777345661467685690, +0.777314206810914790, 0.777282750210858460, 0.777251291667595210, 0.777219831181203750, 0.777188368751762120, 0.777156904379350140, 0.777125438064045880, 0.777093969805928040, +0.777062499605075230, 0.777031027461566270, 0.776999553375479660, 0.776968077346893660, 0.776936599375887990, 0.776905119462540820, 0.776873637606930960, 0.776842153809136900, +0.776810668069237490, 0.776779180387311310, 0.776747690763437300, 0.776716199197693520, 0.776684705690159680, 0.776653210240914160, 0.776621712850035560, 0.776590213517602820, +0.776558712243694440, 0.776527209028389230, 0.776495703871766030, 0.776464196773903100, 0.776432687734880170, 0.776401176754775490, 0.776369663833667900, 0.776338148971636110, +0.776306632168759060, 0.776275113425115350, 0.776243592740783250, 0.776212070115842810, 0.776180545550372190, 0.776149019044450220, 0.776117490598155600, 0.776085960211567390, +0.776054427884764200, 0.776022893617824950, 0.775991357410827920, 0.775959819263853050, 0.775928279176978600, 0.775896737150283510, 0.775865193183846500, 0.775833647277746620, +0.775802099432062580, 0.775770549646872640, 0.775738997922256980, 0.775707444258293850, 0.775675888655061980, 0.775644331112640530, 0.775612771631108200, 0.775581210210543940, +0.775549646851026670, 0.775518081552634690, 0.775486514315448020, 0.775454945139545160, 0.775423374025004940, 0.775391800971906190, 0.775360225980328050, 0.775328649050349260, +0.775297070182048850, 0.775265489375505210, 0.775233906630798500, 0.775202321948006980, 0.775170735327209590, 0.775139146768485390, 0.775107556271913300, 0.775075963837572380, +0.775044369465541010, 0.775012773155899230, 0.774981174908725530, 0.774949574724098870, 0.774917972602098270, 0.774886368542802790, 0.774854762546291380, 0.774823154612642950, +0.774791544741936230, 0.774759932934251160, 0.774728319189666230, 0.774696703508260480, 0.774665085890112960, 0.774633466335302830, 0.774601844843908930, 0.774570221416010510, +0.774538596051685960, 0.774506968751015430, 0.774475339514077430, 0.774443708340951220, 0.774412075231715620, 0.774380440186449910, 0.774348803205233030, 0.774317164288143680, +0.774285523435261910, 0.774253880646666340, 0.774222235922436110, 0.774190589262650270, 0.774158940667387880, 0.774127290136728210, 0.774095637670750290, 0.774063983269532740, +0.774032326933155820, 0.774000668661698030, 0.773969008455238640, 0.773937346313856580, 0.773905682237631340, 0.773874016226641760, 0.773842348280966650, 0.773810678400686180, +0.773779006585879060, 0.773747332836624450, 0.773715657153001390, 0.773683979535089270, 0.773652299982967250, 0.773620618496714370, 0.773588935076409470, 0.773557249722132690, +0.773525562433962870, 0.773493873211979150, 0.773462182056260720, 0.773430488966886820, 0.773398793943936740, 0.773367096987489620, 0.773335398097624300, 0.773303697274420940, +0.773271994517958360, 0.773240289828315830, 0.773208583205572510, 0.773176874649807780, 0.773145164161100910, 0.773113451739530500, 0.773081737385177050, 0.773050021098119270, +0.773018302878436430, 0.772986582726207790, 0.772954860641512750, 0.772923136624430570, 0.772891410675040410, 0.772859682793421320, 0.772827952979653570, 0.772796221233815860, +0.772764487555987590, 0.772732751946248130, 0.772701014404676870, 0.772669274931352960, 0.772637533526356000, 0.772605790189764500, 0.772574044921659150, 0.772542297722118690, +0.772510548591222480, 0.772478797529049910, 0.772447044535680360, 0.772415289611193100, 0.772383532755667180, 0.772351773969182980, 0.772320013251819200, 0.772288250603655580, +0.772256486024771150, 0.772224719515245630, 0.772192951075158280, 0.772161180704588610, 0.772129408403615320, 0.772097634172319140, 0.772065858010778870, 0.772034079919073910, +0.772002299897283860, 0.771970517945487880, 0.771938734063765790, 0.771906948252196190, 0.771875160510859800, 0.771843370839835560, 0.771811579239202850, 0.771779785709041160, +0.771747990249430080, 0.771716192860449010, 0.771684393542177440, 0.771652592294694300, 0.771620789118080300, 0.771588984012414270, 0.771557176977775820, 0.771525368014244430, +0.771493557121899600, 0.771461744300820820, 0.771429929551087800, 0.771398112872779260, 0.771366294265976140, 0.771334473730757140, 0.771302651267202100, 0.771270826875390390, +0.771239000555401510, 0.771207172307315280, 0.771175342131210420, 0.771143510027167860, 0.771111675995266530, 0.771079840035585940, 0.771048002148205790, 0.771016162333205690, +0.770984320590665130, 0.770952476920663710, 0.770920631323280590, 0.770888783798596490, 0.770856934346690450, 0.770825082967641960, 0.770793229661530850, 0.770761374428436620, +0.770729517268438970, 0.770697658181617510, 0.770665797168051390, 0.770633934227821340, 0.770602069361006390, 0.770570202567686380, 0.770538333847940790, 0.770506463201849350, +0.770474590629491750, 0.770442716130947170, 0.770410839706296310, 0.770378961355618340, 0.770347081078992970, 0.770315198876499910, 0.770283314748218870, 0.770251428694229580, +0.770219540714611630, 0.770187650809444290, 0.770155758978808500, 0.770123865222783200, 0.770091969541448210, 0.770060071934883350, 0.770028172403168340, 0.769996270946382790, +0.769964367564606180, 0.769932462257919110, 0.769900555026400870, 0.769868645870131260, 0.769836734789190010, 0.769804821783656950, 0.769772906853611880, 0.769740989999134430, +0.769709071220303960, 0.769677150517201540, 0.769645227889906080, 0.769613303338497530, 0.769581376863055830, 0.769549448463660690, 0.769517518140391930, 0.769485585893329270, +0.769453651722552090, 0.769421715628141430, 0.769389777610176460, 0.769357837668737000, 0.769325895803902980, 0.769293952015754230, 0.769262006304370580, 0.769230058669831410, +0.769198109112217640, 0.769166157631608560, 0.769134204228084100, 0.769102248901724070, 0.769070291652608540, 0.769038332480817210, 0.769006371386430020, 0.768974408369526460, +0.768942443430187250, 0.768910476568492100, 0.768878507784520710, 0.768846537078353040, 0.768814564450069020, 0.768782589899748570, 0.768750613427471090, 0.768718635033317720, +0.768686654717367630, 0.768654672479700980, 0.768622688320397710, 0.768590702239537630, 0.768558714237200790, 0.768526724313467250, 0.768494732468416260, 0.768462738702129000, +0.768430743014684950, 0.768398745406163930, 0.768366745876646220, 0.768334744426211520, 0.768302741054940010, 0.768270735762911610, 0.768238728550205810, 0.768206719416903770, +0.768174708363084880, 0.768142695388829290, 0.768110680494216940, 0.768078663679327870, 0.768046644944242240, 0.768014624289039330, 0.767982601713800390, 0.767950577218605050, +0.767918550803533220, 0.767886522468665070, 0.767854492214080530, 0.767822460039859770, 0.767790425946082930, 0.767758389932829300, 0.767726352000180470, 0.767694312148215600, +0.767662270377015070, 0.767630226686658810, 0.767598181077226990, 0.767566133548799660, 0.767534084101457070, 0.767502032735278620, 0.767469979450345790, 0.767437924246737960, +0.767405867124535180, 0.767373808083817940, 0.767341747124666070, 0.767309684247159840, 0.767277619451378850, 0.767245552737404360, 0.767213484105315980, 0.767181413555193980, +0.767149341087118300, 0.767117266701169420, 0.767085190397427290, 0.767053112175972160, 0.767021032036883770, 0.766988949980243250, 0.766956866006130440, 0.766924780114625390, +0.766892692305808480, 0.766860602579759850, 0.766828510936559680, 0.766796417376287560, 0.766764321899025100, 0.766732224504851790, 0.766700125193847890, 0.766668023966093680, +0.766635920821669540, 0.766603815760655500, 0.766571708783131860, 0.766539599889178410, 0.766507489078876560, 0.766475376352306000, 0.766443261709547020, 0.766411145150679870, +0.766379026675784840, 0.766346906284942180, 0.766314783978232380, 0.766282659755734950, 0.766250533617531480, 0.766218405563701690, 0.766186275594325950, 0.766154143709484430, +0.766122009909257500, 0.766089874193725650, 0.766057736562968490, 0.766025597017067630, 0.765993455556102650, 0.765961312180154060, 0.765929166889302240, 0.765897019683627560, +0.765864870563210290, 0.765832719528130810, 0.765800566578468960, 0.765768411714306320, 0.765736254935722620, 0.765704096242798230, 0.765671935635613640, 0.765639773114249240, +0.765607608678785300, 0.765575442329302520, 0.765543274065880410, 0.765511103888600770, 0.765478931797543340, 0.765446757792788590, 0.765414581874416910, 0.765382404042508790, +0.765350224297144610, 0.765318042638404420, 0.765285859066369590, 0.765253673581120180, 0.765221486182736670, 0.765189296871299220, 0.765157105646888660, 0.765124912509585360, +0.765092717459469720, 0.765060520496621770, 0.765028321621123110, 0.764996120833053570, 0.764963918132493760, 0.764931713519524160, 0.764899506994225260, 0.764867298556677570, +0.764835088206961110, 0.764802875945157500, 0.764770661771346670, 0.764738445685609220, 0.764706227688025650, 0.764674007778676450, 0.764641785957642320, 0.764609562225003650, +0.764577336580840480, 0.764545109025234650, 0.764512879558265970, 0.764480648180015150, 0.764448414890562700, 0.764416179689989210, 0.764383942578375160, 0.764351703555801400, +0.764319462622347730, 0.764287219778095990, 0.764254975023126230, 0.764222728357519030, 0.764190479781355010, 0.764158229294714770, 0.764125976897678920, 0.764093722590327600, +0.764061466372742530, 0.764029208245003870, 0.763996948207192110, 0.763964686259387960, 0.763932422401672140, 0.763900156634125250, 0.763867888956828000, 0.763835619369860440, +0.763803347873304390, 0.763771074467239910, 0.763738799151747920, 0.763706521926908800, 0.763674242792803380, 0.763641961749512380, 0.763609678797116500, 0.763577393935695790, +0.763545107165332190, 0.763512818486105860, 0.763480527898097390, 0.763448235401387730, 0.763415940996057360, 0.763383644682187220, 0.763351346459857360, 0.763319046329149710, +0.763286744290144540, 0.763254440342922340, 0.763222134487564150, 0.763189826724150590, 0.763157517052762470, 0.763125205473480510, 0.763092891986385080, 0.763060576591557900, +0.763028259289079360, 0.762995940079030040, 0.762963618961490900, 0.762931295936542850, 0.762898971004266400, 0.762866644164742040, 0.762834315418051690, 0.762801984764275410, +0.762769652203494240, 0.762737317735789010, 0.762704981361240320, 0.762672643079929320, 0.762640302891936630, 0.762607960797342720, 0.762575616796229430, 0.762543270888677020, +0.762510923074766530, 0.762478573354578690, 0.762446221728194430, 0.762413868195694570, 0.762381512757160040, 0.762349155412671230, 0.762316796162310070, 0.762284435006156950, +0.762252071944292680, 0.762219706976798190, 0.762187340103754550, 0.762154971325242570, 0.762122600641342520, 0.762090228052136550, 0.762057853557704950, 0.762025477158128850, +0.761993098853488980, 0.761960718643866390, 0.761928336529342000, 0.761895952509996640, 0.761863566585911030, 0.761831178757166990, 0.761798789023845010, 0.761766397386026030, +0.761734003843791090, 0.761701608397221120, 0.761669211046397180, 0.761636811791400080, 0.761604410632310550, 0.761572007569210400, 0.761539602602180340, 0.761507195731301320, +0.761474786956654160, 0.761442376278320120, 0.761409963696380140, 0.761377549210914720, 0.761345132822005890, 0.761312714529734260, 0.761280294334180980, 0.761247872235426780, +0.761215448233553030, 0.761183022328640550, 0.761150594520770610, 0.761118164810023590, 0.761085733196481650, 0.761053299680225500, 0.761020864261336080, 0.760988426939894440, +0.760955987715981720, 0.760923546589679090, 0.760891103561067040, 0.760858658630227720, 0.760826211797241750, 0.760793763062190380, 0.760761312425154430, 0.760728859886215300, +0.760696405445454030, 0.760663949102951760, 0.760631490858789010, 0.760599030713048130, 0.760566568665809630, 0.760534104717154770, 0.760501638867164600, 0.760469171115920270, +0.760436701463503170, 0.760404229909994230, 0.760371756455474060, 0.760339281100025130, 0.760306803843728060, 0.760274324686664000, 0.760241843628914000, 0.760209360670559550, +0.760176875811681580, 0.760144389052360920, 0.760111900392679730, 0.760079409832718930, 0.760046917372559580, 0.760014423012282950, 0.759981926751970180, 0.759949428591702670, +0.759916928531561560, 0.759884426571627470, 0.759851922711982990, 0.759819416952708710, 0.759786909293885810, 0.759754399735595780, 0.759721888277919640, 0.759689374920938800, +0.759656859664733950, 0.759624342509387480, 0.759591823454980220, 0.759559302501593430, 0.759526779649308370, 0.759494254898206210, 0.759461728248368550, 0.759429199699876540, +0.759396669252811020, 0.759364136907254350, 0.759331602663287360, 0.759299066520991330, 0.759266528480447620, 0.759233988541737630, 0.759201446704942610, 0.759168902970144050, +0.759136357337422680, 0.759103809806860870, 0.759071260378539670, 0.759038709052540230, 0.759006155828944040, 0.758973600707832490, 0.758941043689286830, 0.758908484773388130, +0.758875923960218750, 0.758843361249859520, 0.758810796642391930, 0.758778230137897250, 0.758745661736457080, 0.758713091438152800, 0.758680519243065680, 0.758647945151276760, +0.758615369162868540, 0.758582791277921940, 0.758550211496518360, 0.758517629818739160, 0.758485046244665950, 0.758452460774380110, 0.758419873407963130, 0.758387284145495830, +0.758354692987060930, 0.758322099932739360, 0.758289504982612490, 0.758256908136761830, 0.758224309395268970, 0.758191708758215290, 0.758159106225681720, 0.758126501797750980, +0.758093895474504120, 0.758061287256022400, 0.758028677142387530, 0.757996065133680900, 0.757963451229984100, 0.757930835431378740, 0.757898217737945630, 0.757865598149767620, +0.757832976666925620, 0.757800353289501130, 0.757767728017575750, 0.757735100851231080, 0.757702471790548620, 0.757669840835609510, 0.757637207986496250, 0.757604573243290110, +0.757571936606072470, 0.757539298074924930, 0.757506657649929190, 0.757474015331166760, 0.757441371118719340, 0.757408725012667980, 0.757376077013095280, 0.757343427120082400, +0.757310775333711050, 0.757278121654062720, 0.757245466081219010, 0.757212808615261630, 0.757180149256272310, 0.757147488004331960, 0.757114824859523640, 0.757082159821928060, +0.757049492891627150, 0.757016824068702520, 0.756984153353235770, 0.756951480745308710, 0.756918806245002410, 0.756886129852399670, 0.756853451567581550, 0.756820771390629750, +0.756788089321626110, 0.756755405360652110, 0.756722719507789470, 0.756690031763120220, 0.756657342126725970, 0.756624650598688330, 0.756591957179088780, 0.756559261868009590, +0.756526564665532360, 0.756493865571738590, 0.756461164586709870, 0.756428461710528580, 0.756395756943276100, 0.756363050285034030, 0.756330341735884540, 0.756297631295909210, +0.756264918965189770, 0.756232204743807810, 0.756199488631845610, 0.756166770629384640, 0.756134050736506860, 0.756101328953293520, 0.756068605279827220, 0.756035879716189460, +0.756003152262461840, 0.755970422918726180, 0.755937691685064750, 0.755904958561559040, 0.755872223548290980, 0.755839486645341950, 0.755806747852794670, 0.755774007170730400, +0.755741264599231190, 0.755708520138378530, 0.755675773788254790, 0.755643025548941690, 0.755610275420520620, 0.755577523403074270, 0.755544769496684140, 0.755512013701431950, +0.755479256017399510, 0.755446496444669210, 0.755413734983322760, 0.755380971633441870, 0.755348206395108250, 0.755315439268404390, 0.755282670253412000, 0.755249899350212920, +0.755217126558888730, 0.755184351879522150, 0.755151575312194570, 0.755118796856988130, 0.755086016513984330, 0.755053234283265870, 0.755020450164914260, 0.754987664159011200, +0.754954876265639400, 0.754922086484880350, 0.754889294816815990, 0.754856501261528260, 0.754823705819099410, 0.754790908489611390, 0.754758109273146130, 0.754725308169785230, +0.754692505179611390, 0.754659700302706240, 0.754626893539151910, 0.754594084889030010, 0.754561274352423260, 0.754528461929413250, 0.754495647620082140, 0.754462831424511540, +0.754430013342784140, 0.754397193374981790, 0.754364371521186180, 0.754331547781479930, 0.754298722155944730, 0.754265894644662760, 0.754233065247715830, 0.754200233965186430, +0.754167400797156500, 0.754134565743708070, 0.754101728804922880, 0.754068889980883730, 0.754036049271672340, 0.754003206677370750, 0.753970362198060910, 0.753937515833825510, +0.753904667584746280, 0.753871817450905370, 0.753838965432384600, 0.753806111529266690, 0.753773255741633560, 0.753740398069567270, 0.753707538513149760, 0.753674677072463610, +0.753641813747590760, 0.753608948538613150, 0.753576081445613500, 0.753543212468673510, 0.753510341607875560, 0.753477468863301470, 0.753444594235033960, 0.753411717723155070, +0.753378839327746740, 0.753345959048891120, 0.753313076886670820, 0.753280192841167870, 0.753247306912464440, 0.753214419100642460, 0.753181529405784760, 0.753148637827973140, +0.753115744367290010, 0.753082849023817280, 0.753049951797637560, 0.753017052688833120, 0.752984151697485670, 0.752951248823678140, 0.752918344067492470, 0.752885437429010930, +0.752852528908315550, 0.752819618505489060, 0.752786706220613610, 0.752753792053771350, 0.752720876005044340, 0.752687958074515500, 0.752655038262266650, 0.752622116568380290, +0.752589192992938250, 0.752556267536023670, 0.752523340197718270, 0.752490410978104650, 0.752457479877264630, 0.752424546895281150, 0.752391612032236370, 0.752358675288212320, +0.752325736663291830, 0.752292796157556950, 0.752259853771090060, 0.752226909503973310, 0.752193963356289630, 0.752161015328120960, 0.752128065419549800, 0.752095113630658170, +0.752062159961529030, 0.752029204412244520, 0.751996246982886920, 0.751963287673538480, 0.751930326484282150, 0.751897363415199970, 0.751864398466374320, 0.751831431637887460, +0.751798462929822220, 0.751765492342260980, 0.751732519875285550, 0.751699545528979220, 0.751666569303424010, 0.751633591198702320, 0.751600611214896410, 0.751567629352089320, +0.751534645610363090, 0.751501659989800120, 0.751468672490482880, 0.751435683112494200, 0.751402691855916350, 0.751369698720831810, 0.751336703707322640, 0.751303706815471980, +0.751270708045362110, 0.751237707397075520, 0.751204704870694240, 0.751171700466301660, 0.751138694183979600, 0.751105686023811000, 0.751072675985877790, 0.751039664070263240, +0.751006650277049490, 0.750973634606318940, 0.750940617058154510, 0.750907597632638480, 0.750874576329853440, 0.750841553149881770, 0.750808528092806520, 0.750775501158709830, +0.750742472347674550, 0.750709441659782590, 0.750676409095117460, 0.750643374653761300, 0.750610338335796710, 0.750577300141305860, 0.750544260070372230, 0.750511218123077860, +0.750478174299505470, 0.750445128599737330, 0.750412081023856700, 0.750379031571945740, 0.750345980244087050, 0.750312927040363680, 0.750279871960857990, 0.750246815005652600, +0.750213756174829880, 0.750180695468473100, 0.750147632886664530, 0.750114568429486870, 0.750081502097022510, 0.750048433889354720, 0.750015363806565860, 0.749982291848738440, +0.749949218015955150, 0.749916142308299060, 0.749883064725852640, 0.749849985268698500, 0.749816903936919240, 0.749783820730597910, 0.749750735649816980, 0.749717648694659070, +0.749684559865207210, 0.749651469161543900, 0.749618376583752080, 0.749585282131914000, 0.749552185806112830, 0.749519087606431380, 0.749485987532952150, 0.749452885585757620, +0.749419781764931290, 0.749386676070555310, 0.749353568502712840, 0.749320459061486030, 0.749287347746958490, 0.749254234559212470, 0.749221119498330920, 0.749188002564396220, +0.749154883757491840, 0.749121763077700180, 0.749088640525104270, 0.749055516099786270, 0.749022389801830000, 0.748989261631317630, 0.748956131588331740, 0.748922999672955950, +0.748889865885272510, 0.748856730225364590, 0.748823592693314440, 0.748790453289205570, 0.748757312013120680, 0.748724168865142480, 0.748691023845353460, 0.748657876953837230, +0.748624728190676380, 0.748591577555953620, 0.748558425049751670, 0.748525270672153910, 0.748492114423243040, 0.748458956303101890, 0.748425796311813050, 0.748392634449459910, +0.748359470716125300, 0.748326305111891690, 0.748293137636842580, 0.748259968291060670, 0.748226797074628800, 0.748193623987629670, 0.748160449030146670, 0.748127272202262720, +0.748094093504060530, 0.748060912935622710, 0.748027730497032970, 0.747994546188373910, 0.747961360009728570, 0.747928171961179440, 0.747894982042810240, 0.747861790254703450, +0.747828596596942340, 0.747795401069609290, 0.747762203672788120, 0.747729004406561430, 0.747695803271012040, 0.747662600266223330, 0.747629395392278130, 0.747596188649259360, +0.747562980037249970, 0.747529769556333320, 0.747496557206592360, 0.747463342988109900, 0.747430126900968880, 0.747396908945252790, 0.747363689121044340, 0.747330467428426680, +0.747297243867482750, 0.747264018438295820, 0.747230791140948920, 0.747197561975525000, 0.747164330942106880, 0.747131098040778370, 0.747097863271621980, 0.747064626634720620, +0.747031388130158010, 0.746998147758016980, 0.746964905518380570, 0.746931661411331490, 0.746898415436953680, 0.746865167595329730, 0.746831917886543020, 0.746798666310676150, +0.746765412867812840, 0.746732157558036120, 0.746698900381428830, 0.746665641338074120, 0.746632380428055580, 0.746599117651456030, 0.746565853008358760, 0.746532586498846570, +0.746499318123003190, 0.746466047880911530, 0.746432775772654770, 0.746399501798315710, 0.746366225957978190, 0.746332948251725140, 0.746299668679639370, 0.746266387241804830, +0.746233103938304220, 0.746199818769220920, 0.746166531734637760, 0.746133242834638550, 0.746099952069306240, 0.746066659438724080, 0.746033364942974900, 0.746000068582142630, +0.745966770356310200, 0.745933470265560890, 0.745900168309977630, 0.745866864489644120, 0.745833558804643530, 0.745800251255059000, 0.745766941840973590, 0.745733630562471110, +0.745700317419634610, 0.745667002412546910, 0.745633685541292060, 0.745600366805952990, 0.745567046206613070, 0.745533723743355140, 0.745500399416263230, 0.745467073225420270, +0.745433745170909770, 0.745400415252814420, 0.745367083471218490, 0.745333749826204710, 0.745300414317856760, 0.745267076946257270, 0.745233737711490480, 0.745200396613639350, +0.745167053652787240, 0.745133708829017190, 0.745100362142413150, 0.745067013593058160, 0.745033663181035370, 0.745000310906428710, 0.744966956769321340, 0.744933600769796530, +0.744900242907937440, 0.744866883183827990, 0.744833521597551450, 0.744800158149190980, 0.744766792838829850, 0.744733425666552100, 0.744700056632440770, 0.744666685736579240, +0.744633312979050670, 0.744599938359939210, 0.744566561879327790, 0.744533183537300140, 0.744499803333939060, 0.744466421269328830, 0.744433037343552590, 0.744399651556693740, +0.744366263908835420, 0.744332874400061790, 0.744299483030455900, 0.744266089800101120, 0.744232694709081380, 0.744199297757479840, 0.744165898945380100, 0.744132498272865320, +0.744099095740019530, 0.744065691346926020, 0.744032285093668370, 0.743998876980329630, 0.743965467006994060, 0.743932055173744720, 0.743898641480665310, 0.743865225927838990, +0.743831808515349910, 0.743798389243281340, 0.743764968111716660, 0.743731545120739470, 0.743698120270433580, 0.743664693560882380, 0.743631264992169250, 0.743597834564378110, +0.743564402277592570, 0.743530968131895900, 0.743497532127371570, 0.743464094264103540, 0.743430654542175500, 0.743397212961670720, 0.743363769522672580, 0.743330324225265350, +0.743296877069532290, 0.743263428055557120, 0.743229977183422990, 0.743196524453214270, 0.743163069865014240, 0.743129613418906490, 0.743096155114974510, 0.743062694953302350, +0.743029232933973380, 0.742995769057071210, 0.742962303322679760, 0.742928835730882640, 0.742895366281763340, 0.742861894975405450, 0.742828421811893010, 0.742794946791309640, +0.742761469913738810, 0.742727991179264020, 0.742694510587969540, 0.742661028139938840, 0.742627543835255530, 0.742594057674003110, 0.742560569656265710, 0.742527079782127060, +0.742493588051670650, 0.742460094464979850, 0.742426599022139260, 0.742393101723232140, 0.742359602568341990, 0.742326101557553080, 0.742292598690948880, 0.742259093968613340, +0.742225587390629600, 0.742192078957082280, 0.742158568668054740, 0.742125056523630810, 0.742091542523893870, 0.742058026668928390, 0.742024508958817890, 0.741990989393646050, +0.741957467973496490, 0.741923944698453570, 0.741890419568600800, 0.741856892584021880, 0.741823363744800510, 0.741789833051020970, 0.741756300502766970, 0.741722766100122110, +0.741689229843170090, 0.741655691731995300, 0.741622151766681230, 0.741588609947311460, 0.741555066273970610, 0.741521520746741940, 0.741487973365709600, 0.741454424130956860, +0.741420873042568430, 0.741387320100627910, 0.741353765305219010, 0.741320208656425450, 0.741286650154331590, 0.741253089799021160, 0.741219527590577960, 0.741185963529085720, +0.741152397614628810, 0.741118829847290940, 0.741085260227155930, 0.741051688754307490, 0.741018115428830230, 0.740984540250807620, 0.740950963220323280, 0.740917384337461900, +0.740883803602307100, 0.740850221014942690, 0.740816636575452490, 0.740783050283921000, 0.740749462140431910, 0.740715872145069070, 0.740682280297916380, 0.740648686599058250, +0.740615091048578260, 0.740581493646560670, 0.740547894393089100, 0.740514293288248030, 0.740480690332121270, 0.740447085524792660, 0.740413478866346120, 0.740379870356866250, +0.740346259996436550, 0.740312647785141050, 0.740279033723064140, 0.740245417810289740, 0.740211800046901680, 0.740178180432983890, 0.740144558968620970, 0.740110935653896520, +0.740077310488894910, 0.740043683473699640, 0.740010054608395420, 0.739976423893066060, 0.739942791327795720, 0.739909156912668120, 0.739875520647767850, 0.739841882533178730, +0.739808242568985030, 0.739774600755270350, 0.739740957092119510, 0.739707311579616220, 0.739673664217844750, 0.739640015006888700, 0.739606363946832990, 0.739572711037761340, +0.739539056279757690, 0.739505399672906630, 0.739471741217291980, 0.739438080912998120, 0.739404418760108760, 0.739370754758708500, 0.739337088908881500, 0.739303421210711800, +0.739269751664283100, 0.739236080269680460, 0.739202407026987580, 0.739168731936288630, 0.739135054997667630, 0.739101376211209190, 0.739067695576997470, 0.739034013095116290, +0.739000328765649920, 0.738966642588683050, 0.738932954564299530, 0.738899264692583270, 0.738865572973619210, 0.738831879407491290, 0.738798183994283540, 0.738764486734080130, +0.738730787626965760, 0.738697086673024470, 0.738663383872340320, 0.738629679224997560, 0.738595972731080800, 0.738562264390674180, 0.738528554203861880, 0.738494842170727810, +0.738461128291357130, 0.738427412565833440, 0.738393694994241350, 0.738359975576664660, 0.738326254313188320, 0.738292531203896370, 0.738258806248872750, 0.738225079448202480, +0.738191350801969510, 0.738157620310258110, 0.738123887973152430, 0.738090153790737280, 0.738056417763096720, 0.738022679890315110, 0.737988940172476520, 0.737955198609665960, +0.737921455201967280, 0.737887709949465060, 0.737853962852243250, 0.737820213910386770, 0.737786463123979770, 0.737752710493106640, 0.737718956017851420, 0.737685199698299150, +0.737651441534533880, 0.737617681526639650, 0.737583919674701600, 0.737550155978803690, 0.737516390439030390, 0.737482623055465860, 0.737448853828195030, 0.737415082757302050, +0.737381309842871420, 0.737347535084987180, 0.737313758483734370, 0.737279980039197150, 0.737246199751460110, 0.737212417620607190, 0.737178633646723420, 0.737144847829893310, +0.737111060170200890, 0.737077270667730540, 0.737043479322567420, 0.737009686134795450, 0.736975891104499350, 0.736942094231763270, 0.736908295516672250, 0.736874494959310460, +0.736840692559762030, 0.736806888318112250, 0.736773082234445260, 0.736739274308845560, 0.736705464541397400, 0.736671652932185840, 0.736637839481295130, 0.736604024188809880, +0.736570207054814240, 0.736536388079393370, 0.736502567262631520, 0.736468744604613420, 0.736434920105423000, 0.736401093765145510, 0.736367265583865450, 0.736333435561667080, +0.736299603698634900, 0.736265769994854050, 0.736231934450408690, 0.736198097065383190, 0.736164257839862830, 0.736130416773931760, 0.736096573867674690, 0.736062729121175870, +0.736028882534520480, 0.735995034107792990, 0.735961183841077780, 0.735927331734459460, 0.735893477788023050, 0.735859622001852950, 0.735825764376033750, 0.735791904910649830, +0.735758043605786560, 0.735724180461528100, 0.735690315477959160, 0.735656448655164220, 0.735622579993228440, 0.735588709492236090, 0.735554837152271770, 0.735520962973420730, +0.735487086955767140, 0.735453209099395930, 0.735419329404391360, 0.735385447870838700, 0.735351564498822440, 0.735317679288427390, 0.735283792239737720, 0.735249903352839020, +0.735216012627815330, 0.735182120064751810, 0.735148225663732610, 0.735114329424843120, 0.735080431348167920, 0.735046531433791510, 0.735012629681798480, 0.734978726092274210, +0.734944820665303090, 0.734910913400970030, 0.734877004299359320, 0.734843093360556420, 0.734809180584645730, 0.734775265971711830, 0.734741349521840110, 0.734707431235114950, +0.734673511111621160, 0.734639589151443450, 0.734605665354666980, 0.734571739721376350, 0.734537812251656370, 0.734503882945591550, 0.734469951803267350, 0.734436018824768280, +0.734402084010179150, 0.734368147359584440, 0.734334208873069770, 0.734300268550719500, 0.734266326392618570, 0.734232382398851470, 0.734198436569503790, 0.734164488904660130, +0.734130539404404760, 0.734096588068823390, 0.734062634898000610, 0.734028679892021140, 0.733994723050969800, 0.733960764374931850, 0.733926803863992010, 0.733892841518235190, +0.733858877337746020, 0.733824911322609850, 0.733790943472911410, 0.733756973788735720, 0.733723002270167180, 0.733689028917291490, 0.733655053730193240, 0.733621076708957260, +0.733587097853668380, 0.733553117164412070, 0.733519134641272940, 0.733485150284335700, 0.733451164093685830, 0.733417176069408040, 0.733383186211587380, 0.733349194520308330, +0.733315200995656720, 0.733281205637717040, 0.733247208446574430, 0.733213209422313380, 0.733179208565019720, 0.733145205874777940, 0.733111201351673290, 0.733077194995790160, +0.733043186807214480, 0.733009176786030730, 0.732975164932324060, 0.732941151246179310, 0.732907135727681850, 0.732873118376916600, 0.732839099193968170, 0.732805078178922380, +0.732771055331863820, 0.732737030652877760, 0.732703004142048700, 0.732668975799462440, 0.732634945625203820, 0.732600913619357750, 0.732566879782009180, 0.732532844113243600, +0.732498806613146040, 0.732464767281801320, 0.732430726119294500, 0.732396683125711160, 0.732362638301136020, 0.732328591645654340, 0.732294543159350830, 0.732260492842311430, +0.732226440694620620, 0.732192386716363770, 0.732158330907625610, 0.732124273268492050, 0.732090213799047710, 0.732056152499377500, 0.732022089369567250, 0.731988024409701900, +0.731953957619866370, 0.731919889000145600, 0.731885818550625510, 0.731851746271390710, 0.731817672162526690, 0.731783596224118150, 0.731749518456251020, 0.731715438859009910, +0.731681357432480310, 0.731647274176747020, 0.731613189091895770, 0.731579102178011700, 0.731545013435179750, 0.731510922863484960, 0.731476830463013260, 0.731442736233849370, +0.731408640176078430, 0.731374542289786160, 0.731340442575057480, 0.731306341031977780, 0.731272237660631870, 0.731238132461105690, 0.731204025433484170, 0.731169916577852570, +0.731135805894295940, 0.731101693382900100, 0.731067579043749970, 0.731033462876930830, 0.730999344882527820, 0.730965225060626780, 0.730931103411312620, 0.730896979934670730, +0.730862854630786040, 0.730828727499744590, 0.730794598541631310, 0.730760467756531140, 0.730726335144530230, 0.730692200705713390, 0.730658064440166120, 0.730623926347973350, +0.730589786429221010, 0.730555644683994250, 0.730521501112378460, 0.730487355714458550, 0.730453208490320470, 0.730419059440049480, 0.730384908563730840, 0.730350755861449600, +0.730316601333291790, 0.730282444979342360, 0.730248286799686900, 0.730214126794410450, 0.730179964963598940, 0.730145801307337640, 0.730111635825711700, 0.730077468518806390, +0.730043299386707760, 0.730009128429500830, 0.729974955647270880, 0.729940781040103740, 0.729906604608084650, 0.729872426351299010, 0.729838246269832180, 0.729804064363769880, +0.729769880633197480, 0.729735695078200350, 0.729701507698863660, 0.729667318495273550, 0.729633127467515070, 0.729598934615673930, 0.729564739939835060, 0.729530543440084610, +0.729496345116507740, 0.729462144969190150, 0.729427942998216890, 0.729393739203674010, 0.729359533585646760, 0.729325326144220410, 0.729291116879481120, 0.729256905791513920, +0.729222692880404530, 0.729188478146237990, 0.729154261589100680, 0.729120043209077640, 0.729085823006254570, 0.729051600980716640, 0.729017377132549880, 0.728983151461839900, +0.728948923968671840, 0.728914694653131300, 0.728880463515304220, 0.728846230555276090, 0.728811995773132270, 0.728777759168958150, 0.728743520742840100, 0.728709280494863050, +0.728675038425112610, 0.728640794533674920, 0.728606548820635140, 0.728572301286078970, 0.728538051930091910, 0.728503800752759890, 0.728469547754168390, 0.728435292934403010, +0.728401036293549130, 0.728366777831693010, 0.728332517548919810, 0.728298255445315460, 0.728263991520964990, 0.728229725775955020, 0.728195458210370680, 0.728161188824297700, +0.728126917617821330, 0.728092644591028180, 0.728058369744003290, 0.728024093076832470, 0.727989814589601100, 0.727955534282395570, 0.727921252155301120, 0.727886968208403370, +0.727852682441788360, 0.727818394855541670, 0.727784105449749030, 0.727749814224495920, 0.727715521179868490, 0.727681226315952220, 0.727646929632832840, 0.727612631130595930, +0.727578330809327770, 0.727544028669113720, 0.727509724710039610, 0.727475418932190920, 0.727441111335653920, 0.727406801920514210, 0.727372490686857390, 0.727338177634769160, +0.727303862764335670, 0.727269546075642650, 0.727235227568775460, 0.727200907243820360, 0.727166585100863070, 0.727132261139989410, 0.727097935361284640, 0.727063607764835470, +0.727029278350727170, 0.726994947119045780, 0.726960614069876660, 0.726926279203306320, 0.726891942519420240, 0.726857604018304350, 0.726823263700044130, 0.726788921564726080, +0.726754577612435670, 0.726720231843258850, 0.726685884257281200, 0.726651534854589000, 0.726617183635268060, 0.726582830599403980, 0.726548475747082920, 0.726514119078390700, +0.726479760593413350, 0.726445400292236140, 0.726411038174945790, 0.726376674241627770, 0.726342308492368140, 0.726307940927252480, 0.726273571546367180, 0.726239200349797940, +0.726204827337630810, 0.726170452509951270, 0.726136075866845810, 0.726101697408400250, 0.726067317134700410, 0.726032935045832000, 0.725998551141881610, 0.725964165422934740, +0.725929777889077200, 0.725895388540395480, 0.725860997376975290, 0.725826604398902680, 0.725792209606263120, 0.725757812999143440, 0.725723414577629230, 0.725689014341806440, +0.725654612291760870, 0.725620208427579020, 0.725585802749346700, 0.725551395257149840, 0.725516985951074170, 0.725482574831206370, 0.725448161897632170, 0.725413747150437490, +0.725379330589708160, 0.725344912215530880, 0.725310492027991250, 0.725276070027175420, 0.725241646213169110, 0.725207220586058910, 0.725172793145930750, 0.725138363892870230, +0.725103932826964170, 0.725069499948298280, 0.725035065256958600, 0.725000628753030950, 0.724966190436602040, 0.724931750307757690, 0.724897308366583950, 0.724862864613166620, +0.724828419047592430, 0.724793971669947190, 0.724759522480317050, 0.724725071478787840, 0.724690618665446150, 0.724656164040377910, 0.724621707603669400, 0.724587249355406190, +0.724552789295675240, 0.724518327424562240, 0.724483863742153120, 0.724449398248534710, 0.724414930943792830, 0.724380461828013520, 0.724345990901282820, 0.724311518163687440, +0.724277043615313310, 0.724242567256246470, 0.724208089086572970, 0.724173609106379510, 0.724139127315752030, 0.724104643714776790, 0.724070158303539600, 0.724035671082127300, +0.724001182050625800, 0.723966691209121490, 0.723932198557699970, 0.723897704096448380, 0.723863207825452550, 0.723828709744798290, 0.723794209854572550, 0.723759708154861350, +0.723725204645750850, 0.723690699327327100, 0.723656192199676810, 0.723621683262886120, 0.723587172517041190, 0.723552659962227950, 0.723518145598533560, 0.723483629426043610, +0.723449111444844690, 0.723414591655022640, 0.723380070056664380, 0.723345546649856060, 0.723311021434683840, 0.723276494411233760, 0.723241965579592640, 0.723207434939846740, +0.723172902492082210, 0.723138368236385110, 0.723103832172842460, 0.723069294301540100, 0.723034754622564280, 0.723000213136001820, 0.722965669841938880, 0.722931124740461840, +0.722896577831656620, 0.722862029115610150, 0.722827478592408700, 0.722792926262138650, 0.722758372124885810, 0.722723816180737440, 0.722689258429779490, 0.722654698872098430, +0.722620137507780310, 0.722585574336912170, 0.722551009359580050, 0.722516442575870440, 0.722481873985869380, 0.722447303589664020, 0.722412731387340300, 0.722378157378984480, +0.722343581564683590, 0.722309003944523800, 0.722274424518591470, 0.722239843286972660, 0.722205260249754620, 0.722170675407023510, 0.722136088758865590, 0.722101500305367240, +0.722066910046615380, 0.722032317982696290, 0.721997724113696340, 0.721963128439701900, 0.721928530960799790, 0.721893931677076490, 0.721859330588618290, 0.721824727695511430, +0.721790122997843180, 0.721755516495699470, 0.721720908189166680, 0.721686298078332070, 0.721651686163281570, 0.721617072444102000, 0.721582456920879300, 0.721547839593700830, +0.721513220462652760, 0.721478599527821560, 0.721443976789293620, 0.721409352247156080, 0.721374725901495100, 0.721340097752397380, 0.721305467799948970, 0.721270836044237360, +0.721236202485348590, 0.721201567123369250, 0.721166929958385830, 0.721132290990485260, 0.721097650219754030, 0.721063007646278290, 0.721028363270145410, 0.720993717091441550, +0.720959069110253540, 0.720924419326667510, 0.720889767740770630, 0.720855114352649370, 0.720820459162390460, 0.720785802170079930, 0.720751143375805260, 0.720716482779652720, +0.720681820381709030, 0.720647156182060430, 0.720612490180794210, 0.720577822377996840, 0.720543152773754910, 0.720508481368154820, 0.720473808161283700, 0.720439133153228160, +0.720404456344074800, 0.720369777733909870, 0.720335097322820970, 0.720300415110894270, 0.720265731098216120, 0.720231045284874140, 0.720196357670954360, 0.720161668256543820, +0.720126977041728680, 0.720092284026596530, 0.720057589211233640, 0.720022892595726720, 0.719988194180162240, 0.719953493964627710, 0.719918791949209380, 0.719884088133994070, +0.719849382519068160, 0.719814675104519130, 0.719779965890433580, 0.719745254876897890, 0.719710542063998870, 0.719675827451823790, 0.719641111040459140, 0.719606392829991390, +0.719571672820508050, 0.719536951012095470, 0.719502227404840490, 0.719467501998829580, 0.719432774794150240, 0.719398045790889060, 0.719363314989132750, 0.719328582388967800, +0.719293847990481680, 0.719259111793761010, 0.719224373798892480, 0.719189634005962810, 0.719154892415059250, 0.719120149026268530, 0.719085403839677450, 0.719050656855372510, +0.719015908073441290, 0.718981157493970180, 0.718946405117045990, 0.718911650942756110, 0.718876894971187010, 0.718842137202425730, 0.718807377636558780, 0.718772616273673610, +0.718737853113857070, 0.718703088157195750, 0.718668321403776460, 0.718633552853686690, 0.718598782507013030, 0.718564010363842430, 0.718529236424261470, 0.718494460688357760, +0.718459683156217890, 0.718424903827928780, 0.718390122703577050, 0.718355339783250500, 0.718320555067035400, 0.718285768555019020, 0.718250980247287950, 0.718216190143929680, +0.718181398245030910, 0.718146604550678360, 0.718111809060959620, 0.718077011775961390, 0.718042212695770620, 0.718007411820473900, 0.717972609150159040, 0.717937804684912750, +0.717902998424821750, 0.717868190369973070, 0.717833380520454200, 0.717798568876351960, 0.717763755437753170, 0.717728940204744760, 0.717694123177414320, 0.717659304355848460, +0.717624483740134430, 0.717589661330358840, 0.717554837126609500, 0.717520011128973010, 0.717485183337536190, 0.717450353752386640, 0.717415522373611280, 0.717380689201297050, +0.717345854235530880, 0.717311017476400360, 0.717276178923992310, 0.717241338578393780, 0.717206496439691590, 0.717171652507973540, 0.717136806783326250, 0.717101959265836970, +0.717067109955592530, 0.717032258852680630, 0.716997405957188080, 0.716962551269201940, 0.716927694788809130, 0.716892836516097480, 0.716857976451153680, 0.716823114594064670, +0.716788250944918160, 0.716753385503800970, 0.716718518270800350, 0.716683649246003140, 0.716648778429497150, 0.716613905821369190, 0.716579031421706420, 0.716544155230595780, +0.716509277248125080, 0.716474397474381130, 0.716439515909451210, 0.716404632553422350, 0.716369747406382040, 0.716334860468417430, 0.716299971739615680, 0.716265081220063600, +0.716230188909849240, 0.716195294809059300, 0.716160398917780940, 0.716125501236101750, 0.716090601764108880, 0.716055700501889490, 0.716020797449530620, 0.715985892607119980, +0.715950985974744600, 0.715916077552491760, 0.715881167340448490, 0.715846255338702610, 0.715811341547341050, 0.715776425966451080, 0.715741508596119740, 0.715706589436435060, +0.715671668487483760, 0.715636745749353430, 0.715601821222130900, 0.715566894905903970, 0.715531966800759920, 0.715497036906786010, 0.715462105224069170, 0.715427171752697320, +0.715392236492757630, 0.715357299444336900, 0.715322360607523300, 0.715287419982403860, 0.715252477569065850, 0.715217533367596300, 0.715182587378083160, 0.715147639600613670, +0.715112690035275000, 0.715077738682154410, 0.715042785541339710, 0.715007830612917950, 0.714972873896976720, 0.714937915393603070, 0.714902955102884820, 0.714867993024909220, +0.714833029159763540, 0.714798063507535050, 0.714763096068311790, 0.714728126842180790, 0.714693155829229100, 0.714658183029544760, 0.714623208443215030, 0.714588232070327400, +0.714553253910968690, 0.714518273965227270, 0.714483292233190070, 0.714448308714944800, 0.714413323410578280, 0.714378336320178890, 0.714343347443833540, 0.714308356781629960, +0.714273364333655070, 0.714238370099997130, 0.714203374080743190, 0.714168376275980840, 0.714133376685797350, 0.714098375310280640, 0.714063372149517980, 0.714028367203596640, +0.713993360472604640, 0.713958351956629160, 0.713923341655757990, 0.713888329570077970, 0.713853315699677580, 0.713818300044643860, 0.713783282605064410, 0.713748263381026370, +0.713713242372618020, 0.713678219579926610, 0.713643195003039520, 0.713608168642044240, 0.713573140497028800, 0.713538110568080590, 0.713503078855287080, 0.713468045358735540, +0.713433010078514120, 0.713397973014710310, 0.713362934167411480, 0.713327893536705000, 0.713292851122679150, 0.713257806925421180, 0.713222760945018350, 0.713187713181558940, +0.713152663635130190, 0.713117612305819830, 0.713082559193715100, 0.713047504298904400, 0.713012447621474750, 0.712977389161514100, 0.712942328919109690, 0.712907266894349690, +0.712872203087321580, 0.712837137498112950, 0.712802070126811180, 0.712767000973504540, 0.712731930038280390, 0.712696857321226340, 0.712661782822429980, 0.712626706541979350, +0.712591628479962050, 0.712556548636465340, 0.712521467011577480, 0.712486383605386080, 0.712451298417978610, 0.712416211449442670, 0.712381122699866530, 0.712346032169337450, +0.712310939857943470, 0.712275845765771630, 0.712240749892910640, 0.712205652239447760, 0.712170552805470700, 0.712135451591066950, 0.712100348596324870, 0.712065243821331960, +0.712030137266175920, 0.711995028930944240, 0.711959918815725290, 0.711924806920606560, 0.711889693245675530, 0.711854577791020460, 0.711819460556729070, 0.711784341542888940, +0.711749220749587690, 0.711714098176913670, 0.711678973824954490, 0.711643847693797850, 0.711608719783531240, 0.711573590094243150, 0.711538458626021050, 0.711503325378952890, +0.711468190353126030, 0.711433053548629070, 0.711397914965549380, 0.711362774603975010, 0.711327632463993330, 0.711292488545692820, 0.711257342849161200, 0.711222195374485830, +0.711187046121755320, 0.711151895091057250, 0.711116742282479340, 0.711081587696109410, 0.711046431332035710, 0.711011273190345960, 0.710976113271127970, 0.710940951574469460, +0.710905788100458900, 0.710870622849183790, 0.710835455820732150, 0.710800287015191600, 0.710765116432650500, 0.710729944073196780, 0.710694769936918160, 0.710659594023902330, +0.710624416334237790, 0.710589236868012120, 0.710554055625313490, 0.710518872606229370, 0.710483687810848360, 0.710448501239258180, 0.710413312891546410, 0.710378122767801660, +0.710342930868111510, 0.710307737192564130, 0.710272541741247100, 0.710237344514249140, 0.710202145511657610, 0.710166944733560790, 0.710131742180046380, 0.710096537851202750, +0.710061331747117940, 0.710026123867879780, 0.709990914213575960, 0.709955702784295210, 0.709920489580125100, 0.709885274601153800, 0.709850057847469020, 0.709814839319159450, +0.709779619016312810, 0.709744396939016700, 0.709709173087359920, 0.709673947461430310, 0.709638720061315790, 0.709603490887104060, 0.709568259938884060, 0.709533027216743380, +0.709497792720770070, 0.709462556451051940, 0.709427318407677810, 0.709392078590735390, 0.709356837000312710, 0.709321593636497720, 0.709286348499378990, 0.709251101589044360, +0.709215852905581980, 0.709180602449079770, 0.709145350219626320, 0.709110096217309360, 0.709074840442217020, 0.709039582894437800, 0.709004323574059630, 0.708969062481170640, +0.708933799615858780, 0.708898534978212650, 0.708863268568320160, 0.708828000386269590, 0.708792730432148630, 0.708757458706046120, 0.708722185208050080, 0.708686909938248450, +0.708651632896729280, 0.708616354083581370, 0.708581073498892660, 0.708545791142751070, 0.708510507015244870, 0.708475221116462550, 0.708439933446492360, 0.708404644005422250, +0.708369352793340120, 0.708334059810335040, 0.708298765056494810, 0.708263468531907250, 0.708228170236661400, 0.708192870170845200, 0.708157568334546790, 0.708122264727854110, +0.708086959350856080, 0.708051652203640640, 0.708016343286296150, 0.707981032598910430, 0.707945720141572420, 0.707910405914370040, 0.707875089917391790, 0.707839772150725470, +0.707804452614460010, 0.707769131308683350, 0.707733808233483970, 0.707698483388949700, 0.707663156775169560, 0.707627828392231480, 0.707592498240223630, 0.707557166319234820, +0.707521832629352980, 0.707486497170666690, 0.707451159943263800, 0.707415820947233210, 0.707380480182663200, 0.707345137649641910, 0.707309793348257500, 0.707274447278599010, +0.707239099440754250, 0.707203749834811820, 0.707168398460859770, 0.707133045318986910, 0.707097690409281500, 0.707062333731831800, 0.707026975286726090, 0.706991615074053170, +0.706956253093901200, 0.706920889346358330, 0.706885523831513480, 0.706850156549454820, 0.706814787500270820, 0.706779416684049530, 0.706744044100880100, 0.706708669750850450, +0.706673293634049070, 0.706637915750564230, 0.706602536100484960, 0.706567154683899300, 0.706531771500895630, 0.706496386551562440, 0.706460999835988420, 0.706425611354261960, +0.706390221106471540, 0.706354829092705190, 0.706319435313052080, 0.706284039767600460, 0.706248642456438260, 0.706213243379654960, 0.706177842537338400, 0.706142439929577260, +0.706107035556459820, 0.706071629418075000, 0.706036221514511180, 0.706000811845856720, 0.705965400412199910, 0.705929987213629980, 0.705894572250235110, 0.705859155522103770, +0.705823737029324220, 0.705788316771985610, 0.705752894750176220, 0.705717470963984630, 0.705682045413498990, 0.705646618098808580, 0.705611189020001640, 0.705575758177166780, +0.705540325570392150, 0.705504891199767000, 0.705469455065379720, 0.705434017167318350, 0.705398577505672360, 0.705363136080529920, 0.705327692891979500, 0.705292247940109700, +0.705256801225009560, 0.705221352746767340, 0.705185902505471750, 0.705150450501211170, 0.705114996734074740, 0.705079541204150840, 0.705044083911528060, 0.705008624856294790, +0.704973164038540160, 0.704937701458352770, 0.704902237115821010, 0.704866771011033450, 0.704831303144079160, 0.704795833515046710, 0.704760362124024380, 0.704724888971101300, +0.704689414056366200, 0.704653937379907450, 0.704618458941813520, 0.704582978742173790, 0.704547496781076640, 0.704512013058610660, 0.704476527574864450, 0.704441040329927160, +0.704405551323887380, 0.704370060556833600, 0.704334568028854410, 0.704299073740039080, 0.704263577690476090, 0.704228079880254150, 0.704192580309461750, 0.704157078978188130, +0.704121575886521800, 0.704086071034551340, 0.704050564422365910, 0.704015056050054100, 0.703979545917704620, 0.703944034025405950, 0.703908520373247580, 0.703873004961317880, +0.703837487789705670, 0.703801968858499440, 0.703766448167788550, 0.703730925717661600, 0.703695401508207310, 0.703659875539514260, 0.703624347811671710, 0.703588818324768380, +0.703553287078892970, 0.703517754074134080, 0.703482219310581080, 0.703446682788322560, 0.703411144507447240, 0.703375604468043810, 0.703340062670201660, 0.703304519114009490, +0.703268973799555550, 0.703233426726929570, 0.703197877896220010, 0.703162327307515710, 0.703126774960905250, 0.703091220856478240, 0.703055664994323150, 0.703020107374528910, +0.702984547997184130, 0.702948986862378280, 0.702913423970199850, 0.702877859320737990, 0.702842292914081180, 0.702806724750318800, 0.702771154829539670, 0.702735583151832710, +0.702700009717286520, 0.702664434525990590, 0.702628857578033510, 0.702593278873503980, 0.702557698412491600, 0.702522116195084980, 0.702486532221373030, 0.702450946491444460, +0.702415359005388870, 0.702379769763294860, 0.702344178765251350, 0.702308586011347160, 0.702272991501671770, 0.702237395236314010, 0.702201797215362690, 0.702166197438906510, +0.702130595907035190, 0.702094992619837430, 0.702059387577402160, 0.702023780779818090, 0.701988172227174910, 0.701952561919561240, 0.701916949857065870, 0.701881336039778540, +0.701845720467787700, 0.701810103141182750, 0.701774484060052050, 0.701738863224485640, 0.701703240634571900, 0.701667616290400090, 0.701631990192059020, 0.701596362339638180, +0.701560732733226500, 0.701525101372913020, 0.701489468258786440, 0.701453833390936480, 0.701418196769451940, 0.701382558394421870, 0.701346918265935200, 0.701311276384081420, +0.701275632748949550, 0.701239987360628200, 0.701204340219207300, 0.701168691324775440, 0.701133040677421990, 0.701097388277235560, 0.701061734124305950, 0.701026078218721980, +0.700990420560572810, 0.700954761149947370, 0.700919099986935250, 0.700883437071625370, 0.700847772404107010, 0.700812105984468750, 0.700776437812800630, 0.700740767889191480, +0.700705096213730340, 0.700669422786506120, 0.700633747607608660, 0.700598070677126870, 0.700562391995149910, 0.700526711561766600, 0.700491029377066870, 0.700455345441139520, +0.700419659754073610, 0.700383972315958720, 0.700348283126884020, 0.700312592186938530, 0.700276899496211300, 0.700241205054792150, 0.700205508862769890, 0.700169810920233890, +0.700134111227273090, 0.700098409783977300, 0.700062706590435460, 0.700027001646736920, 0.699991294952970520, 0.699955586509226290, 0.699919876315592940, 0.699884164372160060, +0.699848450679016350, 0.699812735236251760, 0.699777018043955420, 0.699741299102216270, 0.699705578411124130, 0.699669855970768030, 0.699634131781237350, 0.699598405842621010, +0.699562678155008940, 0.699526948718490190, 0.699491217533154020, 0.699455484599089570, 0.699419749916386670, 0.699384013485134350, 0.699348275305422100, 0.699312535377338840, +0.699276793700974510, 0.699241050276418140, 0.699205305103759220, 0.699169558183086790, 0.699133809514490670, 0.699098059098060110, 0.699062306933884050, 0.699026553022052520, +0.698990797362654570, 0.698955039955779680, 0.698919280801516880, 0.698883519899956230, 0.698847757251186640, 0.698811992855297830, 0.698776226712378600, 0.698740458822519230, +0.698704689185808640, 0.698668917802336310, 0.698633144672191400, 0.698597369795463940, 0.698561593172242980, 0.698525814802618110, 0.698490034686678470, 0.698454252824513900, +0.698418469216213870, 0.698382683861867530, 0.698346896761564250, 0.698311107915393970, 0.698275317323445940, 0.698239524985809320, 0.698203730902574150, 0.698167935073829680, +0.698132137499665410, 0.698096338180170470, 0.698060537115435030, 0.698024734305548230, 0.697988929750599560, 0.697953123450678280, 0.697917315405874430, 0.697881505616277380, +0.697845694081976610, 0.697809880803061170, 0.697774065779621420, 0.697738249011746530, 0.697702430499525960, 0.697666610243048990, 0.697630788242405760, 0.697594964497685650, +0.697559139008977810, 0.697523311776372390, 0.697487482799958760, 0.697451652079826400, 0.697415819616064580, 0.697379985408763560, 0.697344149458012490, 0.697308311763901180, +0.697272472326518680, 0.697236631145955240, 0.697200788222300360, 0.697164943555643510, 0.697129097146073850, 0.697093248993681860, 0.697057399098556800, 0.697021547460788150, +0.696985694080465400, 0.696949838957678590, 0.696913982092517310, 0.696878123485070720, 0.696842263135429190, 0.696806401043681970, 0.696770537209918660, 0.696734671634228750, +0.696698804316702500, 0.696662935257429280, 0.696627064456498690, 0.696591191913999990, 0.696555317630023760, 0.696519441604659280, 0.696483563837996140, 0.696447684330123720, +0.696411803081132490, 0.696375920091111710, 0.696340035360151100, 0.696304148888340140, 0.696268260675769080, 0.696232370722527420, 0.696196479028704520, 0.696160585594390650, +0.696124690419675400, 0.696088793504648470, 0.696052894849399140, 0.696016994454017880, 0.695981092318594170, 0.695945188443217730, 0.695909282827978040, 0.695873375472965460, +0.695837466378269380, 0.695801555543979710, 0.695765642970185730, 0.695729728656978020, 0.695693812604445960, 0.695657894812679480, 0.695621975281767830, 0.695586054011801620, +0.695550131002870220, 0.695514206255063550, 0.695478279768470990, 0.695442351543183120, 0.695406421579289220, 0.695370489876879110, 0.695334556436043030, 0.695298621256870590, +0.695262684339451600, 0.695226745683875550, 0.695190805290232920, 0.695154863158613300, 0.695118919289106520, 0.695082973681802160, 0.695047026336790720, 0.695011077254161670, +0.694975126434004940, 0.694939173876410020, 0.694903219581467500, 0.694867263549266980, 0.694831305779898270, 0.694795346273450960, 0.694759385030015660, 0.694723422049681850, +0.694687457332539230, 0.694651490878678170, 0.694615522688188490, 0.694579552761159900, 0.694543581097682220, 0.694507607697845810, 0.694471632561740490, 0.694435655689455980, +0.694399677081082080, 0.694363696736709280, 0.694327714656427290, 0.694291730840325920, 0.694255745288494990, 0.694219758001024980, 0.694183768978005490, 0.694147778219526670, +0.694111785725678110, 0.694075791496550410, 0.694039795532233160, 0.694003797832816180, 0.693967798398389960, 0.693931797229044300, 0.693895794324869030, 0.693859789685954080, +0.693823783312389920, 0.693787775204266380, 0.693751765361673380, 0.693715753784700520, 0.693679740473438720, 0.693643725427977480, 0.693607708648407040, 0.693571690134816900, +0.693535669887297870, 0.693499647905939760, 0.693463624190832410, 0.693427598742065830, 0.693391571559730410, 0.693355542643916190, 0.693319511994712980, 0.693283479612210820, +0.693247445496500190, 0.693211409647670920, 0.693175372065812920, 0.693139332751016690, 0.693103291703372150, 0.693067248922969450, 0.693031204409898290, 0.692995158164249390, +0.692959110186112670, 0.692923060475578060, 0.692887009032735590, 0.692850955857675870, 0.692814900950488810, 0.692778844311264350, 0.692742785940092640, 0.692706725837064160, +0.692670664002268950, 0.692634600435797050, 0.692598535137738390, 0.692562468108183560, 0.692526399347222710, 0.692490328854945440, 0.692454256631442670, 0.692418182676804330, +0.692382106991120460, 0.692346029574481100, 0.692309950426976960, 0.692273869548697850, 0.692237786939734150, 0.692201702600175660, 0.692165616530113210, 0.692129528729636730, +0.692093439198836370, 0.692057347937802160, 0.692021254946624920, 0.691985160225394470, 0.691949063774201180, 0.691912965593134870, 0.691876865682286570, 0.691840764041745990, +0.691804660671603180, 0.691768555571949050, 0.691732448742873540, 0.691696340184467020, 0.691660229896819190, 0.691624117880021090, 0.691588004134162770, 0.691551888659334480, +0.691515771455626040, 0.691479652523128600, 0.691443531861931970, 0.691407409472126530, 0.691371285353802210, 0.691335159507050050, 0.691299031931959960, 0.691262902628622220, +0.691226771597126980, 0.691190638837565150, 0.691154504350026680, 0.691118368134601700, 0.691082230191381040, 0.691046090520454850, 0.691009949121913380, 0.690973805995846790, +0.690937661142345890, 0.690901514561500950, 0.690865366253402220, 0.690829216218139750, 0.690793064455804460, 0.690756910966486610, 0.690720755750276470, 0.690684598807264070, +0.690648440137540560, 0.690612279741195990, 0.690576117618320610, 0.690539953769004680, 0.690503788193339130, 0.690467620891414220, 0.690431451863320110, 0.690395281109147160, +0.690359108628986310, 0.690322934422927580, 0.690286758491061360, 0.690250580833478460, 0.690214401450269130, 0.690178220341523870, 0.690142037507332610, 0.690105852947786590, +0.690069666662976090, 0.690033478652991250, 0.689997288917922450, 0.689961097457860830, 0.689924904272896430, 0.689888709363119630, 0.689852512728620910, 0.689816314369491200, +0.689780114285820640, 0.689743912477699840, 0.689707708945218930, 0.689671503688469080, 0.689635296707540420, 0.689599088002523230, 0.689562877573508650, 0.689526665420586830, +0.689490451543848470, 0.689454235943383510, 0.689418018619283310, 0.689381799571638140, 0.689345578800538480, 0.689309356306074480, 0.689273132088337400, 0.689236906147417510, +0.689200678483405380, 0.689164449096391300, 0.689128217986466280, 0.689091985153720720, 0.689055750598245310, 0.689019514320130200, 0.688983276319466540, 0.688947036596344710, +0.688910795150854960, 0.688874551983088560, 0.688838307093135760, 0.688802060481087270, 0.688765812147033250, 0.688729562091065060, 0.688693310313272860, 0.688657056813747560, +0.688620801592579100, 0.688584544649859080, 0.688548285985677630, 0.688512025600125590, 0.688475763493292980, 0.688439499665271400, 0.688403234116151120, 0.688366966846022610, +0.688330697854976470, 0.688294427143103850, 0.688258154710495230, 0.688221880557241210, 0.688185604683432150, 0.688149327089159320, 0.688113047774513320, 0.688076766739584290, +0.688040483984463710, 0.688004199509241850, 0.687967913314009530, 0.687931625398857110, 0.687895335763875960, 0.687859044409156460, 0.687822751334789320, 0.687786456540865010, +0.687750160027474910, 0.687713861794709390, 0.687677561842659160, 0.687641260171414800, 0.687604956781067480, 0.687568651671707890, 0.687532344843426620, 0.687496036296314170, +0.687459726030461900, 0.687423414045960410, 0.687387100342900070, 0.687350784921372250, 0.687314467781467430, 0.687278148923276540, 0.687241828346889850, 0.687205506052398940, +0.687169182039894300, 0.687132856309466740, 0.687096528861206650, 0.687060199695205600, 0.687023868811553970, 0.686987536210342810, 0.686951201891662370, 0.686914865855604240, +0.686878528102259020, 0.686842188631717420, 0.686805847444070140, 0.686769504539408440, 0.686733159917823020, 0.686696813579404370, 0.686660465524244090, 0.686624115752432540, +0.686587764264060760, 0.686551411059219240, 0.686515056137999460, 0.686478699500492010, 0.686442341146787930, 0.686405981076977590, 0.686369619291152700, 0.686333255789403740, +0.686296890571821640, 0.686260523638496880, 0.686224154989521270, 0.686187784624985200, 0.686151412544979690, 0.686115038749595340, 0.686078663238923750, 0.686042286013055390, +0.686005907072081420, 0.685969526416092320, 0.685933144045179690, 0.685896759959434330, 0.685860374158946630, 0.685823986643808280, 0.685787597414110110, 0.685751206469942810, +0.685714813811397320, 0.685678419438565000, 0.685642023351536570, 0.685605625550403270, 0.685569226035255500, 0.685532824806184940, 0.685496421863282300, 0.685460017206638740, +0.685423610836344730, 0.685387202752491990, 0.685350792955171210, 0.685314381444473540, 0.685277968220489590, 0.685241553283310930, 0.685205136633028510, 0.685168718269732910, +0.685132298193515840, 0.685095876404468010, 0.685059452902680440, 0.685023027688243970, 0.684986600761250290, 0.684950172121789990, 0.684913741769954340, 0.684877309705834050, +0.684840875929520700, 0.684804440441105220, 0.684768003240678660, 0.684731564328331820, 0.684695123704156310, 0.684658681368242930, 0.684622237320682950, 0.684585791561566960, +0.684549344090986890, 0.684512894909033550, 0.684476444015797550, 0.684439991411370690, 0.684403537095843890, 0.684367081069308330, 0.684330623331854680, 0.684294163883574890, +0.684257702724559550, 0.684221239854900020, 0.684184775274687020, 0.684148308984012470, 0.684111840982967180, 0.684075371271642200, 0.684038899850128560, 0.684002426718517850, +0.683965951876901230, 0.683929475325369630, 0.683892997064014070, 0.683856517092926270, 0.683820035412197270, 0.683783552021917760, 0.683747066922179790, 0.683710580113074170, +0.683674091594691950, 0.683637601367124370, 0.683601109430462930, 0.683564615784798880, 0.683528120430223150, 0.683491623366826890, 0.683455124594701810, 0.683418624113939050, +0.683382121924629660, 0.683345618026864550, 0.683309112420735780, 0.683272605106334250, 0.683236096083751240, 0.683199585353077680, 0.683163072914405370, 0.683126558767825460, +0.683090042913429120, 0.683053525351307370, 0.683017006081552140, 0.682980485104254350, 0.682943962419505060, 0.682907438027396290, 0.682870911928018740, 0.682834384121464020, +0.682797854607822940, 0.682761323387187650, 0.682724790459648960, 0.682688255825298350, 0.682651719484226760, 0.682615181436526220, 0.682578641682287660, 0.682542100221602550, +0.682505557054561840, 0.682469012181257550, 0.682432465601780840, 0.682395917316222840, 0.682359367324674730, 0.682322815627228520, 0.682286262223975370, 0.682249707115006210, +0.682213150300412960, 0.682176591780287000, 0.682140031554719580, 0.682103469623801640, 0.682066905987625430, 0.682030340646281870, 0.681993773599862570, 0.681957204848458450, +0.681920634392161660, 0.681884062231063240, 0.681847488365254770, 0.681810912794827080, 0.681774335519872540, 0.681737756540482190, 0.681701175856747390, 0.681664593468759410, +0.681628009376610170, 0.681591423580390930, 0.681554836080192850, 0.681518246876107960, 0.681481655968227520, 0.681445063356642900, 0.681408469041445250, 0.681371873022726840, +0.681335275300578690, 0.681298675875092410, 0.681262074746359030, 0.681225471914470800, 0.681188867379519000, 0.681152261141594880, 0.681115653200789820, 0.681079043557196060, +0.681042432210904660, 0.681005819162007090, 0.680969204410594720, 0.680932587956759590, 0.680895969800593080, 0.680859349942186550, 0.680822728381631380, 0.680786105119019710, +0.680749480154442810, 0.680712853487991820, 0.680676225119759120, 0.680639595049835730, 0.680602963278313490, 0.680566329805283420, 0.680529694630837900, 0.680493057755068080, +0.680456419178065650, 0.680419778899921890, 0.680383136920728940, 0.680346493240578170, 0.680309847859561170, 0.680273200777769200, 0.680236551995294650, 0.680199901512228640, +0.680163249328662900, 0.680126595444688680, 0.680089939860398340, 0.680053282575883160, 0.680016623591234380, 0.679979962906544390, 0.679943300521904550, 0.679906636437406340, +0.679869970653141360, 0.679833303169201650, 0.679796633985678800, 0.679759963102664290, 0.679723290520249600, 0.679686616238526890, 0.679649940257587740, 0.679613262577523750, +0.679576583198426290, 0.679539902120387620, 0.679503219343499220, 0.679466534867852800, 0.679429848693539730, 0.679393160820652380, 0.679356471249282000, 0.679319779979520200, +0.679283087011459340, 0.679246392345190690, 0.679209695980806050, 0.679172997918396910, 0.679136298158055540, 0.679099596699873410, 0.679062893543942340, 0.679026188690353690, +0.678989482139199960, 0.678952773890572400, 0.678916063944562940, 0.678879352301263060, 0.678842638960765130, 0.678805923923160530, 0.678769207188541170, 0.678732488756998430, +0.678695768628624800, 0.678659046803511750, 0.678622323281750760, 0.678585598063434330, 0.678548871148653810, 0.678512142537501250, 0.678475412230067910, 0.678438680226446380, +0.678401946526728140, 0.678365211131005120, 0.678328474039368690, 0.678291735251911330, 0.678254994768724640, 0.678218252589900540, 0.678181508715530510, 0.678144763145706930, +0.678108015880521500, 0.678071266920066030, 0.678034516264432120, 0.677997763913712140, 0.677961009867997790, 0.677924254127381000, 0.677887496691953140, 0.677850737561806920, +0.677813976737033810, 0.677777214217725410, 0.677740450003974430, 0.677703684095872230, 0.677666916493510850, 0.677630147196981780, 0.677593376206377720, 0.677556603521790260, +0.677519829143311210, 0.677483053071032290, 0.677446275305046090, 0.677409495845444190, 0.677372714692318630, 0.677335931845760800, 0.677299147305863600, 0.677262361072718530, +0.677225573146417400, 0.677188783527052250, 0.677151992214715340, 0.677115199209498360, 0.677078404511493150, 0.677041608120792280, 0.677004810037487360, 0.676968010261670420, +0.676931208793433160, 0.676894405632868070, 0.676857600780067070, 0.676820794235122090, 0.676783985998124840, 0.676747176069167790, 0.676710364448342980, 0.676673551135742120, +0.676636736131457140, 0.676599919435580620, 0.676563101048204270, 0.676526280969420140, 0.676489459199320020, 0.676452635737996630, 0.676415810585541680, 0.676378983742046750, +0.676342155207604770, 0.676305324982307330, 0.676268493066246700, 0.676231659459514470, 0.676194824162203330, 0.676157987174405230, 0.676121148496212080, 0.676084308127715810, +0.676047466069009010, 0.676010622320183610, 0.675973776881331640, 0.675936929752544930, 0.675900080933916180, 0.675863230425537200, 0.675826378227500250, 0.675789524339896920, +0.675752668762820140, 0.675715811496361730, 0.675678952540613830, 0.675642091895668040, 0.675605229561617500, 0.675568365538553820, 0.675531499826569020, 0.675494632425755690, +0.675457763336205770, 0.675420892558011410, 0.675384020091264640, 0.675347145936058050, 0.675310270092483570, 0.675273392560633460, 0.675236513340599530, 0.675199632432474610, +0.675162749836350720, 0.675125865552319790, 0.675088979580473980, 0.675052091920905980, 0.675015202573707840, 0.674978311538971700, 0.674941418816789370, 0.674904524407253790, +0.674867628310456990, 0.674830730526490790, 0.674793831055448100, 0.674756929897420750, 0.674720027052501110, 0.674683122520781110, 0.674646216302353660, 0.674609308397310590, +0.674572398805744270, 0.674535487527746720, 0.674498574563410670, 0.674461659912828140, 0.674424743576091500, 0.674387825553292800, 0.674350905844524730, 0.674313984449879440, +0.674277061369449200, 0.674240136603325930, 0.674203210151602670, 0.674166282014371450, 0.674129352191724100, 0.674092420683753750, 0.674055487490552330, 0.674018552612212220, +0.673981616048825340, 0.673944677800484840, 0.673907737867282640, 0.673870796249311010, 0.673833852946662090, 0.673796907959428930, 0.673759961287703430, 0.673723012931577990, +0.673686062891144740, 0.673649111166496730, 0.673612157757725870, 0.673575202664924650, 0.673538245888185010, 0.673501287427600180, 0.673464327283262110, 0.673427365455262830, +0.673390401943695590, 0.673353436748652220, 0.673316469870225310, 0.673279501308506890, 0.673242531063590110, 0.673205559135566900, 0.673168585524529850, 0.673131610230571000, +0.673094633253783380, 0.673057654594259260, 0.673020674252091000, 0.672983692227370760, 0.672946708520191560, 0.672909723130645570, 0.672872736058825360, 0.672835747304822870, +0.672798756868731470, 0.672761764750643090, 0.672724770950650310, 0.672687775468845280, 0.672650778305321160, 0.672613779460170090, 0.672576778933484220, 0.672539776725356700, +0.672502772835879780, 0.672465767265145950, 0.672428760013247250, 0.672391751080277160, 0.672354740466327590, 0.672317728171491160, 0.672280714195860110, 0.672243698539527590, +0.672206681202585870, 0.672169662185127410, 0.672132641487244500, 0.672095619109030260, 0.672058595050576970, 0.672021569311977320, 0.671984541893323240, 0.671947512794708210, +0.671910482016224500, 0.671873449557964130, 0.671836415420020480, 0.671799379602485810, 0.671762342105452710, 0.671725302929013330, 0.671688262073261160, 0.671651219538288210, +0.671614175324187320, 0.671577129431050630, 0.671540081858971400, 0.671503032608042010, 0.671465981678355030, 0.671428929070002730, 0.671391874783078490, 0.671354818817674560, +0.671317761173883530, 0.671280701851797890, 0.671243640851510670, 0.671206578173114470, 0.671169513816701420, 0.671132447782364920, 0.671095380070197310, 0.671058310680291310, +0.671021239612739070, 0.670984166867634180, 0.670947092445068890, 0.670910016345135810, 0.670872938567927400, 0.670835859113536940, 0.670798777982056780, 0.670761695173579750, +0.670724610688198110, 0.670687524526005330, 0.670650436687093680, 0.670613347171555960, 0.670576255979484560, 0.670539163110972840, 0.670502068566113160, 0.670464972344998470, +0.670427874447720900, 0.670390774874373930, 0.670353673625050050, 0.670316570699841740, 0.670279466098842260, 0.670242359822144080, 0.670205251869840040, 0.670168142242022590, +0.670131030938785120, 0.670093917960220000, 0.670056803306420150, 0.670019686977477820, 0.669982568973486740, 0.669945449294539250, 0.669908327940728080, 0.669871204912145800, +0.669834080208885800, 0.669796953831040650, 0.669759825778703080, 0.669722696051965550, 0.669685564650921660, 0.669648431575663890, 0.669611296826284730, 0.669574160402877540, +0.669537022305535130, 0.669499882534350000, 0.669462741089414950, 0.669425597970823350, 0.669388453178667690, 0.669351306713040990, 0.669314158574035640, 0.669277008761745230, +0.669239857276262230, 0.669202704117679680, 0.669165549286090070, 0.669128392781586760, 0.669091234604262670, 0.669054074754210410, 0.669016913231522570, 0.668979750036292840, +0.668942585168613710, 0.668905418628577770, 0.668868250416278620, 0.668831080531808840, 0.668793908975261480, 0.668756735746728890, 0.668719560846304790, 0.668682384274081890, +0.668645206030152870, 0.668608026114610680, 0.668570844527548670, 0.668533661269059550, 0.668496476339236260, 0.668459289738171480, 0.668422101465958820, 0.668384911522690860, +0.668347719908460650, 0.668310526623360770, 0.668273331667484930, 0.668236135040925830, 0.668198936743775950, 0.668161736776129110, 0.668124535138077900, 0.668087331829715360, +0.668050126851134190, 0.668012920202428080, 0.667975711883689540, 0.667938501895011800, 0.667901290236487480, 0.667864076908210260, 0.667826861910272850, 0.667789645242768290, +0.667752426905789290, 0.667715206899429540, 0.667677985223781740, 0.667640761878939060, 0.667603536864994070, 0.667566310182040600, 0.667529081830171340, 0.667491851809479340, +0.667454620120057520, 0.667417386761999350, 0.667380151735397660, 0.667342915040345370, 0.667305676676936080, 0.667268436645262700, 0.667231194945418160, 0.667193951577495280, +0.667156706541587870, 0.667119459837788640, 0.667082211466190840, 0.667044961426887180, 0.667007709719971360, 0.666970456345536310, 0.666933201303675170, 0.666895944594480650, +0.666858686218046560, 0.666821426174465830, 0.666784164463831490, 0.666746901086236470, 0.666709636041774470, 0.666672369330538420, 0.666635100952621020, 0.666597830908116310, +0.666560559197116990, 0.666523285819716320, 0.666486010776007000, 0.666448734066083070, 0.666411455690037240, 0.666374175647962750, 0.666336893939952550, 0.666299610566100430, +0.666262325526499330, 0.666225038821242400, 0.666187750450422560, 0.666150460414133620, 0.666113168712468510, 0.666075875345520490, 0.666038580313382480, 0.666001283616148300, +0.665963985253910980, 0.665926685226763350, 0.665889383534799320, 0.665852080178111820, 0.665814775156794210, 0.665777468470939220, 0.665740160120640970, 0.665702850105992280, +0.665665538427086420, 0.665628225084016420, 0.665590910076876210, 0.665553593405758810, 0.665516275070757280, 0.665478955071964750, 0.665441633409475260, 0.665404310083381630, +0.665366985093777230, 0.665329658440754980, 0.665292330124408910, 0.665255000144832080, 0.665217668502117830, 0.665180335196358890, 0.665143000227649610, 0.665105663596082700, +0.665068325301751420, 0.665030985344749580, 0.664993643725170220, 0.664956300443106940, 0.664918955498652430, 0.664881608891900840, 0.664844260622945330, 0.664806910691879140, +0.664769559098795320, 0.664732205843787890, 0.664694850926950020, 0.664657494348374960, 0.664620136108155850, 0.664582776206386840, 0.664545414643160750, 0.664508051418571170, +0.664470686532711130, 0.664433319985674790, 0.664395951777555060, 0.664358581908445100, 0.664321210378439050, 0.664283837187629960, 0.664246462336111290, 0.664209085823976090, +0.664171707651318610, 0.664134327818231780, 0.664096946324809200, 0.664059563171143900, 0.664022178357329910, 0.663984791883460600, 0.663947403749629240, 0.663910013955929080, +0.663872622502454270, 0.663835229389297840, 0.663797834616553280, 0.663760438184313850, 0.663723040092673690, 0.663685640341725950, 0.663648238931563660, 0.663610835862281200, +0.663573431133971710, 0.663536024746728570, 0.663498616700645030, 0.663461206995815230, 0.663423795632332450, 0.663386382610290260, 0.663348967929781710, 0.663311551590901050, +0.663274133593741540, 0.663236713938396670, 0.663199292624959800, 0.663161869653524970, 0.663124445024185330, 0.663087018737034790, 0.663049590792166190, 0.663012161189674100, +0.662974729929651450, 0.662937297012191730, 0.662899862437389080, 0.662862426205336860, 0.662824988316128460, 0.662787548769857350, 0.662750107566617560, 0.662712664706502700, +0.662675220189606010, 0.662637774016020980, 0.662600326185841860, 0.662562876699162030, 0.662525425556074850, 0.662487972756673820, 0.662450518301053280, 0.662413062189306290, +0.662375604421526760, 0.662338144997807850, 0.662300683918243930, 0.662263221182928240, 0.662225756791954610, 0.662188290745416190, 0.662150823043407330, 0.662113353686021420, +0.662075882673351820, 0.662038410005492910, 0.662000935682537930, 0.661963459704580590, 0.661925982071714270, 0.661888502784033330, 0.661851021841631140, 0.661813539244601400, +0.661776054993037490, 0.661738569087033770, 0.661701081526683610, 0.661663592312080720, 0.661626101443318570, 0.661588608920491540, 0.661551114743692880, 0.661513618913016520, +0.661476121428555720, 0.661438622290404950, 0.661401121498657710, 0.661363619053407240, 0.661326114954748020, 0.661288609202773660, 0.661251101797577730, 0.661213592739253620, +0.661176082027895910, 0.661138569663597960, 0.661101055646453720, 0.661063539976556420, 0.661026022654000570, 0.660988503678879740, 0.660950983051287630, 0.660913460771317630, +0.660875936839064430, 0.660838411254621390, 0.660800884018082240, 0.660763355129540650, 0.660725824589090900, 0.660688292396826580, 0.660650758552841280, 0.660613223057229360, +0.660575685910084420, 0.660538147111500270, 0.660500606661570400, 0.660463064560389390, 0.660425520808050610, 0.660387975404648110, 0.660350428350275350, 0.660312879645026830, +0.660275329288996130, 0.660237777282277060, 0.660200223624963220, 0.660162668317149200, 0.660125111358928480, 0.660087552750394990, 0.660049992491642310, 0.660012430582764930, +0.659974867023856550, 0.659937301815010980, 0.659899734956321820, 0.659862166447883540, 0.659824596289789960, 0.659787024482134550, 0.659749451025011920, 0.659711875918515540, +0.659674299162739560, 0.659636720757777570, 0.659599140703724050, 0.659561559000672700, 0.659523975648717450, 0.659486390647951890, 0.659448803998470720, 0.659411215700367540, +0.659373625753736260, 0.659336034158670590, 0.659298440915265240, 0.659260846023613790, 0.659223249483810170, 0.659185651295948080, 0.659148051460122230, 0.659110449976426320, +0.659072846844953820, 0.659035242065799660, 0.658997635639057330, 0.658960027564820860, 0.658922417843184060, 0.658884806474241520, 0.658847193458086950, 0.658809578794814500, +0.658771962484517640, 0.658734344527291290, 0.658696724923229060, 0.658659103672424970, 0.658621480774972850, 0.658583856230967380, 0.658546230040502170, 0.658508602203671470, +0.658470972720568870, 0.658433341591289190, 0.658395708815926240, 0.658358074394573610, 0.658320438327326120, 0.658282800614277570, 0.658245161255522020, 0.658207520251153140, +0.658169877601265880, 0.658132233305953940, 0.658094587365311350, 0.658056939779432030, 0.658019290548410680, 0.657981639672341020, 0.657943987151317410, 0.657906332985433330, +0.657868677174783920, 0.657831019719462670, 0.657793360619563950, 0.657755699875181450, 0.657718037486410110, 0.657680373453343630, 0.657642707776075920, 0.657605040454701690, +0.657567371489314880, 0.657529700880009730, 0.657492028626879940, 0.657454354730020450, 0.657416679189524960, 0.657379002005487820, 0.657341323178002870, 0.657303642707165010, +0.657265960593067970, 0.657228276835805980, 0.657190591435473090, 0.657152904392163890, 0.657115215705972530, 0.657077525376993150, 0.657039833405319570, 0.657002139791046820, +0.656964444534268610, 0.656926747635079410, 0.656889049093572930, 0.656851348909844200, 0.656813647083987040, 0.656775943616095480, 0.656738238506264340, 0.656700531754587650, +0.656662823361159660, 0.656625113326074210, 0.656587401649426420, 0.656549688331310000, 0.656511973371819440, 0.656474256771048540, 0.656436538529092340, 0.656398818646044880, +0.656361097122000300, 0.656323373957052650, 0.656285649151296950, 0.656247922704827120, 0.656210194617737440, 0.656172464890121930, 0.656134733522075630, 0.656097000513692460, +0.656059265865066470, 0.656021529576292670, 0.655983791647465010, 0.655946052078677950, 0.655908310870025320, 0.655870568021602370, 0.655832823533502920, 0.655795077405821440, +0.655757329638651850, 0.655719580232089320, 0.655681829186227860, 0.655644076501161850, 0.655606322176985330, 0.655568566213793220, 0.655530808611679780, 0.655493049370739380, +0.655455288491065930, 0.655417525972754600, 0.655379761815899520, 0.655341996020594620, 0.655304228586935040, 0.655266459515014940, 0.655228688804928790, 0.655190916456770410, +0.655153142470635160, 0.655115366846617090, 0.655077589584810550, 0.655039810685309700, 0.655002030148209680, 0.654964247973604640, 0.654926464161588840, 0.654888678712256640, +0.654850891625703090, 0.654813102902022210, 0.654775312541308720, 0.654737520543656530, 0.654699726909160900, 0.654661931637915860, 0.654624134730016130, 0.654586336185555620, +0.654548536004629700, 0.654510734187332410, 0.654472930733757900, 0.654435125644001410, 0.654397318918157110, 0.654359510556319580, 0.654321700558582850, 0.654283888925042300, +0.654246075655791960, 0.654208260750926420, 0.654170444210539940, 0.654132626034727660, 0.654094806223583850, 0.654056984777202980, 0.654019161695679310, 0.653981336979108100, +0.653943510627583490, 0.653905682641200190, 0.653867853020052240, 0.653830021764235100, 0.653792188873842830, 0.653754354348969780, 0.653716518189711220, 0.653678680396161280, +0.653640840968414680, 0.653602999906565670, 0.653565157210709510, 0.653527312880940460, 0.653489466917352990, 0.653451619320041700, 0.653413770089101620, 0.653375919224627120, +0.653338066726712800, 0.653300212595453010, 0.653262356830943030, 0.653224499433277090, 0.653186640402549920, 0.653148779738855880, 0.653110917442290220, 0.653073053512947200, +0.653035187950921300, 0.652997320756307680, 0.652959451929200800, 0.652921581469695260, 0.652883709377885420, 0.652845835653866670, 0.652807960297733360, 0.652770083309580080, +0.652732204689501330, 0.652694324437592450, 0.652656442553947610, 0.652618559038661730, 0.652580673891829170, 0.652542787113545190, 0.652504898703904270, 0.652467008663001110, +0.652429116990930090, 0.652391223687786680, 0.652353328753665140, 0.652315432188659950, 0.652277533992866480, 0.652239634166379200, 0.652201732709292830, 0.652163829621701830, +0.652125924903701580, 0.652088018555386450, 0.652050110576851360, 0.652012200968190570, 0.651974289729499670, 0.651936376860873130, 0.651898462362405560, 0.651860546234191430, +0.651822628476326440, 0.651784709088904730, 0.651746788072021350, 0.651708865425770560, 0.651670941150248040, 0.651633015245548060, 0.651595087711765660, 0.651557158548995100, +0.651519227757332060, 0.651481295336870940, 0.651443361287706190, 0.651405425609933420, 0.651367488303647100, 0.651329549368942050, 0.651291608805912750, 0.651253666614654780, +0.651215722795262630, 0.651177777347831220, 0.651139830272455030, 0.651101881569229550, 0.651063931238249460, 0.651025979279609480, 0.650988025693404190, 0.650950070479729190, +0.650912113638679070, 0.650874155170348630, 0.650836195074832480, 0.650798233352226090, 0.650760270002624150, 0.650722305026121270, 0.650684338422812920, 0.650646370192793700, +0.650608400336158630, 0.650570428853002090, 0.650532455743420000, 0.650494481007506620, 0.650456504645357090, 0.650418526657066010, 0.650380547042728850, 0.650342565802440430, +0.650304582936295450, 0.650266598444388830, 0.650228612326815950, 0.650190624583671610, 0.650152635215050620, 0.650114644221047810, 0.650076651601758650, 0.650038657357277950, +0.650000661487700190, 0.649962663993121080, 0.649924664873635430, 0.649886664129338040, 0.649848661760323630, 0.649810657766688000, 0.649772652148525640, 0.649734644905931690, +0.649696636039000740, 0.649658625547828610, 0.649620613432509870, 0.649582599693139580, 0.649544584329812550, 0.649506567342624240, 0.649468548731669590, 0.649430528497043640, +0.649392506638840960, 0.649354483157157380, 0.649316458052087600, 0.649278431323726530, 0.649240402972169230, 0.649202372997511160, 0.649164341399847240, 0.649126308179272080, +0.649088273335881480, 0.649050236869770150, 0.649012198781033330, 0.648974159069765630, 0.648936117736062860, 0.648898074780019820, 0.648860030201731550, 0.648821984001292870, +0.648783936178799590, 0.648745886734346520, 0.648707835668028700, 0.648669782979940930, 0.648631728670179040, 0.648593672738837830, 0.648555615186012460, 0.648517556011797720, +0.648479495216289340, 0.648441432799582330, 0.648403368761771400, 0.648365303102952370, 0.648327235823220050, 0.648289166922669580, 0.648251096401396000, 0.648213024259494900, +0.648174950497061310, 0.648136875114190270, 0.648098798110976810, 0.648060719487516650, 0.648022639243904690, 0.647984557380236080, 0.647946473896605760, 0.647908388793109640, +0.647870302069842530, 0.647832213726899590, 0.647794123764375840, 0.647756032182367210, 0.647717938980968410, 0.647679844160274350, 0.647641747720381080, 0.647603649661383510, +0.647565549983376790, 0.647527448686455840, 0.647489345770716600, 0.647451241236253970, 0.647413135083163230, 0.647375027311539400, 0.647336917921478290, 0.647298806913074840, +0.647260694286424410, 0.647222580041621920, 0.647184464178763300, 0.647146346697943580, 0.647108227599257900, 0.647070106882801310, 0.647031984548669840, 0.646993860596958400, +0.646955735027762050, 0.646917607841176580, 0.646879479037297140, 0.646841348616219000, 0.646803216578037190, 0.646765082922847620, 0.646726947650745340, 0.646688810761825720, +0.646650672256183780, 0.646612532133915340, 0.646574390395115770, 0.646536247039880110, 0.646498102068303490, 0.646459955480481960, 0.646421807276510550, 0.646383657456484630, +0.646345506020499230, 0.646307352968650490, 0.646269198301033240, 0.646231042017743060, 0.646192884118874880, 0.646154724604524830, 0.646116563474788070, 0.646078400729759420, +0.646040236369535230, 0.646002070394210430, 0.645963902803880390, 0.645925733598640250, 0.645887562778586170, 0.645849390343813170, 0.645811216294416730, 0.645773040630491790, +0.645734863352134700, 0.645696684459440400, 0.645658503952504460, 0.645620321831421820, 0.645582138096288840, 0.645543952747200440, 0.645505765784252120, 0.645467577207539110, +0.645429387017157460, 0.645391195213202320, 0.645353001795768930, 0.645314806764953340, 0.645276610120850690, 0.645238411863556570, 0.645200211993166130, 0.645162010509775400, +0.645123807413479630, 0.645085602704374430, 0.645047396382554820, 0.645009188448117170, 0.644970978901156400, 0.644932767741768220, 0.644894554970047880, 0.644856340586091430, +0.644818124589994100, 0.644779906981851390, 0.644741687761758660, 0.644703466929812060, 0.644665244486106850, 0.644627020430738050, 0.644588794763802150, 0.644550567485394190, +0.644512338595609860, 0.644474108094544420, 0.644435875982293900, 0.644397642258953800, 0.644359406924619460, 0.644321169979386380, 0.644282931423350690, 0.644244691256607660, +0.644206449479252980, 0.644168206091381700, 0.644129961093090400, 0.644091714484474000, 0.644053466265628430, 0.644015216436648830, 0.643976964997631570, 0.643938711948671920, +0.643900457289865450, 0.643862201021307420, 0.643823943143094320, 0.643785683655321410, 0.643747422558083810, 0.643709159851478140, 0.643670895535599420, 0.643632629610543570, +0.643594362076405750, 0.643556092933282420, 0.643517822181268850, 0.643479549820460740, 0.643441275850953340, 0.643403000272843140, 0.643364723086225390, 0.643326444291195900, +0.643288163887849930, 0.643249881876283850, 0.643211598256593130, 0.643173313028873370, 0.643135026193220050, 0.643096737749729530, 0.643058447698497070, 0.643020156039618150, +0.642981862773189250, 0.642943567899305620, 0.642905271418063080, 0.642866973329557110, 0.642828673633883960, 0.642790372331139110, 0.642752069421418380, 0.642713764904817130, +0.642675458781431840, 0.642637151051357880, 0.642598841714691060, 0.642560530771526750, 0.642522218221961430, 0.642483904066090680, 0.642445588304010110, 0.642407270935815180, +0.642368951961602490, 0.642330631381467290, 0.642292309195505280, 0.642253985403812840, 0.642215660006485440, 0.642177333003618900, 0.642139004395308580, 0.642100674181651180, +0.642062342362742070, 0.642024008938677060, 0.641985673909551750, 0.641947337275462600, 0.641908999036505110, 0.641870659192775080, 0.641832317744368110, 0.641793974691380660, +0.641755630033908340, 0.641717283772046840, 0.641678935905891870, 0.641640586435539890, 0.641602235361086400, 0.641563882682627320, 0.641525528400258230, 0.641487172514075610, +0.641448815024175060, 0.641410455930652160, 0.641372095233603500, 0.641333732933124570, 0.641295369029311280, 0.641257003522259340, 0.641218636412065110, 0.641180267698824300, +0.641141897382632830, 0.641103525463586290, 0.641065151941781370, 0.641026776817313460, 0.640988400090278580, 0.640950021760772430, 0.640911641828891600, 0.640873260294731570, +0.640834877158388380, 0.640796492419957730, 0.640758106079536200, 0.640719718137219400, 0.640681328593102890, 0.640642937447283400, 0.640604544699856620, 0.640566150350918460, +0.640527754400564640, 0.640489356848891740, 0.640450957695995470, 0.640412556941971740, 0.640374154586916270, 0.640335750630925850, 0.640297345074095970, 0.640258937916522770, +0.640220529158301850, 0.640182118799530020, 0.640143706840302860, 0.640105293280716410, 0.640066878120866380, 0.640028461360849450, 0.639990043000761450, 0.639951623040697970, +0.639913201480755810, 0.639874778321030570, 0.639836353561618500, 0.639797927202615080, 0.639759499244117350, 0.639721069686220670, 0.639682638529021410, 0.639644205772615270, +0.639605771417098850, 0.639567335462568050, 0.639528897909118930, 0.639490458756847180, 0.639452018005849720, 0.639413575656222140, 0.639375131708060600, 0.639336686161460890, +0.639298239016519830, 0.639259790273333240, 0.639221339931996700, 0.639182887992607250, 0.639144434455260590, 0.639105979320052750, 0.639067522587079660, 0.639029064256438240, +0.638990604328223970, 0.638952142802533320, 0.638913679679461890, 0.638875214959106600, 0.638836748641563370, 0.638798280726928120, 0.638759811215296900, 0.638721340106766510, +0.638682867401432760, 0.638644393099391920, 0.638605917200739670, 0.638567439705572950, 0.638528960613987670, 0.638490479926079990, 0.638451997641945710, 0.638413513761681870, +0.638375028285384170, 0.638336541213148530, 0.638298052545071990, 0.638259562281250250, 0.638221070421779670, 0.638182576966755950, 0.638144081916276250, 0.638105585270436260, +0.638067087029332350, 0.638028587193060440, 0.637990085761717340, 0.637951582735398980, 0.637913078114201730, 0.637874571898221390, 0.637836064087555000, 0.637797554682298480, +0.637759043682547990, 0.637720531088399660, 0.637682016899950190, 0.637643501117295840, 0.637604983740532320, 0.637566464769756650, 0.637527944205064870, 0.637489422046553230, +0.637450898294317670, 0.637412372948455210, 0.637373846009061880, 0.637335317476233840, 0.637296787350067230, 0.637258255630658970, 0.637219722318105090, 0.637181187412501850, +0.637142650913945290, 0.637104112822532540, 0.637065573138359430, 0.637027031861522430, 0.636988488992117460, 0.636949944530241670, 0.636911398475990990, 0.636872850829461430, +0.636834301590750160, 0.636795750759953090, 0.636757198337166710, 0.636718644322486930, 0.636680088716010890, 0.636641531517834650, 0.636602972728054550, 0.636564412346766640, +0.636525850374068170, 0.636487286810054950, 0.636448721654823580, 0.636410154908470080, 0.636371586571091500, 0.636333016642783970, 0.636294445123643860, 0.636255872013767320, +0.636217297313251380, 0.636178721022192310, 0.636140143140686340, 0.636101563668829750, 0.636062982606719560, 0.636024399954451920, 0.635985815712122870, 0.635947229879829660, +0.635908642457668430, 0.635870053445735550, 0.635831462844127280, 0.635792870652940540, 0.635754276872271710, 0.635715681502217240, 0.635677084542873190, 0.635638485994336700, +0.635599885856704020, 0.635561284130071740, 0.635522680814535780, 0.635484075910193510, 0.635445469417140970, 0.635406861335474860, 0.635368251665291210, 0.635329640406687270, +0.635291027559759300, 0.635252413124603340, 0.635213797101316760, 0.635175179489995580, 0.635136560290736510, 0.635097939503635690, 0.635059317128790380, 0.635020693166296830, +0.634982067616251420, 0.634943440478750620, 0.634904811753891460, 0.634866181441770430, 0.634827549542483770, 0.634788916056127970, 0.634750280982800170, 0.634711644322596750, +0.634673006075614170, 0.634634366241948800, 0.634595724821697790, 0.634557081814957400, 0.634518437221824110, 0.634479791042394940, 0.634441143276766370, 0.634402493925035000, +0.634363842987296980, 0.634325190463649660, 0.634286536354189410, 0.634247880659012830, 0.634209223378216170, 0.634170564511896790, 0.634131904060150960, 0.634093242023075490, +0.634054578400766510, 0.634015913193321400, 0.633977246400836520, 0.633938578023408580, 0.633899908061133830, 0.633861236514109640, 0.633822563382432370, 0.633783888666198280, +0.633745212365504850, 0.633706534480448450, 0.633667855011125660, 0.633629173957632850, 0.633590491320067510, 0.633551807098525990, 0.633513121293104890, 0.633474433903900680, +0.633435744931010620, 0.633397054374531310, 0.633358362234559320, 0.633319668511191040, 0.633280973204524030, 0.633242276314654570, 0.633203577841679350, 0.633164877785694860, +0.633126176146798560, 0.633087472925086820, 0.633048768120656360, 0.633010061733603640, 0.632971353764026130, 0.632932644212020220, 0.632893933077682380, 0.632855220361109970, +0.632816506062399590, 0.632777790181648040, 0.632739072718951470, 0.632700353674407690, 0.632661633048112960, 0.632622910840164200, 0.632584187050657780, 0.632545461679691280, +0.632506734727361080, 0.632468006193764090, 0.632429276078996680, 0.632390544383156450, 0.632351811106339870, 0.632313076248643750, 0.632274339810164680, 0.632235601791000020, +0.632196862191246380, 0.632158121011000220, 0.632119378250359130, 0.632080633909419490, 0.632041887988278430, 0.632003140487032210, 0.631964391405778540, 0.631925640744613770, +0.631886888503635060, 0.631848134682938660, 0.631809379282622260, 0.631770622302782470, 0.631731863743516200, 0.631693103604919810, 0.631654341887091020, 0.631615578590126400, +0.631576813714122890, 0.631538047259176950, 0.631499279225386180, 0.631460509612847280, 0.631421738421656720, 0.631382965651912210, 0.631344191303710220, 0.631305415377147790, +0.631266637872321510, 0.631227858789328970, 0.631189078128266750, 0.631150295889231770, 0.631111512072320860, 0.631072726677631370, 0.631033939705260230, 0.630995151155304130, +0.630956361027859790, 0.630917569323024900, 0.630878776040896150, 0.630839981181570360, 0.630801184745144350, 0.630762386731715700, 0.630723587141381100, 0.630684785974237490, +0.630645983230381680, 0.630607178909911140, 0.630568373012922680, 0.630529565539513000, 0.630490756489779700, 0.630451945863819470, 0.630413133661729460, 0.630374319883606260, +0.630335504529547560, 0.630296687599650070, 0.630257869094010940, 0.630219049012726740, 0.630180227355895290, 0.630141404123613300, 0.630102579315977680, 0.630063752933085360, +0.630024924975034040, 0.629986095441920410, 0.629947264333841410, 0.629908431650894050, 0.629869597393175830, 0.629830761560783770, 0.629791924153814350, 0.629753085172365500, +0.629714244616533910, 0.629675402486416740, 0.629636558782110670, 0.629597713503713630, 0.629558866651322210, 0.629520018225033670, 0.629481168224944710, 0.629442316651153240, +0.629403463503755980, 0.629364608782850050, 0.629325752488532180, 0.629286894620900370, 0.629248035180051240, 0.629209174166082020, 0.629170311579089650, 0.629131447419171710, +0.629092581686425230, 0.629053714380946930, 0.629014845502834600, 0.628975975052185280, 0.628937103029096000, 0.628898229433663580, 0.628859354265985940, 0.628820477526159880, +0.628781599214282670, 0.628742719330451120, 0.628703837874763140, 0.628664954847315550, 0.628626070248205600, 0.628587184077530110, 0.628548296335387000, 0.628509407021873080, +0.628470516137085710, 0.628431623681121710, 0.628392729654079000, 0.628353834056054380, 0.628314936887144900, 0.628276038147448480, 0.628237137837061920, 0.628198235956082480, +0.628159332504607090, 0.628120427482733780, 0.628081520890559350, 0.628042612728181180, 0.628003702995696080, 0.627964791693202070, 0.627925878820796090, 0.627886964378575390, +0.627848048366636990, 0.627809130785078830, 0.627770211633997710, 0.627731290913491220, 0.627692368623656070, 0.627653444764590400, 0.627614519336391010, 0.627575592339155390, +0.627536663772980450, 0.627497733637964240, 0.627458801934203670, 0.627419868661795670, 0.627380933820838370, 0.627341997411428820, 0.627303059433664270, 0.627264119887641640, +0.627225178773459070, 0.627186236091213600, 0.627147291841002490, 0.627108346022922870, 0.627069398637072670, 0.627030449683549040, 0.626991499162449230, 0.626952547073870380, +0.626913593417910420, 0.626874638194666600, 0.626835681404236070, 0.626796723046716080, 0.626757763122204550, 0.626718801630798630, 0.626679838572595350, 0.626640873947692860, +0.626601907756188180, 0.626562939998178690, 0.626523970673761530, 0.626484999783034850, 0.626446027326095670, 0.626407053303041360, 0.626368077713969070, 0.626329100558976950, +0.626290121838162020, 0.626251141551621870, 0.626212159699453430, 0.626173176281755060, 0.626134191298623690, 0.626095204750156790, 0.626056216636451610, 0.626017226957606200, +0.625978235713717690, 0.625939242904883340, 0.625900248531201080, 0.625861252592768370, 0.625822255089682480, 0.625783256022040550, 0.625744255389940830, 0.625705253193480470, +0.625666249432757060, 0.625627244107867630, 0.625588237218910330, 0.625549228765982620, 0.625510218749181670, 0.625471207168604940, 0.625432194024350570, 0.625393179316515610, +0.625354163045197750, 0.625315145210494140, 0.625276125812503030, 0.625237104851321560, 0.625198082327047320, 0.625159058239777580, 0.625120032589610460, 0.625081005376643350, +0.625041976600973380, 0.625002946262698810, 0.624963914361916780, 0.624924880898725110, 0.624885845873220820, 0.624846809285502180, 0.624807771135666660, 0.624768731423811620, +0.624729690150034430, 0.624690647314433360, 0.624651602917105640, 0.624612556958148990, 0.624573509437660550, 0.624534460355738670, 0.624495409712480740, 0.624456357507984120, +0.624417303742346390, 0.624378248415665690, 0.624339191528039410, 0.624300133079564780, 0.624261073070340180, 0.624222011500462860, 0.624182948370030520, 0.624143883679140530, +0.624104817427891030, 0.624065749616379620, 0.624026680244703760, 0.623987609312960930, 0.623948536821249400, 0.623909462769666520, 0.623870387158310000, 0.623831309987277090, +0.623792231256666270, 0.623753150966574910, 0.623714069117100700, 0.623674985708340900, 0.623635900740394100, 0.623596814213357440, 0.623557726127328400, 0.623518636482405460, +0.623479545278685880, 0.623440452516267450, 0.623401358195247560, 0.623362262315724560, 0.623323164877795930, 0.623284065881559490, 0.623244965327112380, 0.623205863214553290, +0.623166759543979490, 0.623127654315488890, 0.623088547529178750, 0.623049439185147550, 0.623010329283492760, 0.622971217824312200, 0.622932104807703220, 0.622892990233764320, +0.622853874102592960, 0.622814756414286630, 0.622775637168943690, 0.622736516366661610, 0.622697394007538320, 0.622658270091671180, 0.622619144619158680, 0.622580017590098290, +0.622540889004587930, 0.622501758862724960, 0.622462627164607980, 0.622423493910334360, 0.622384359100002120, 0.622345222733708510, 0.622306084811552250, 0.622266945333630810, +0.622227804300041990, 0.622188661710883270, 0.622149517566253250, 0.622110371866249400, 0.622071224610969750, 0.622032075800511560, 0.621992925434973640, 0.621953773514453360, +0.621914620039048180, 0.621875465008856930, 0.621836308423977080, 0.621797150284506330, 0.621757990590542380, 0.621718829342183810, 0.621679666539528220, 0.621640502182673420, +0.621601336271716990, 0.621562168806757630, 0.621522999787892830, 0.621483829215220500, 0.621444657088838230, 0.621405483408844720, 0.621366308175337560, 0.621327131388414560, +0.621287953048173300, 0.621248773154712610, 0.621209591708129950, 0.621170408708523030, 0.621131224155990310, 0.621092038050629620, 0.621052850392538770, 0.621013661181815560, +0.620974470418558470, 0.620935278102865200, 0.620896084234833780, 0.620856888814561690, 0.620817691842147860, 0.620778493317689750, 0.620739293241285410, 0.620700091613032410, +0.620660888433029690, 0.620621683701374600, 0.620582477418165410, 0.620543269583499590, 0.620504060197475950, 0.620464849260192190, 0.620425636771746000, 0.620386422732235990, +0.620347207141759950, 0.620307990000415920, 0.620268771308301600, 0.620229551065515690, 0.620190329272155780, 0.620151105928320230, 0.620111881034106420, 0.620072654589613360, +0.620033426594938540, 0.619994197050180220, 0.619954965955436090, 0.619915733310804850, 0.619876499116384320, 0.619837263372272520, 0.619798026078567150, 0.619758787235367150, +0.619719546842770200, 0.619680304900874330, 0.619641061409777370, 0.619601816369578120, 0.619562569780374270, 0.619523321642263650, 0.619484071955345160, 0.619444820719716400, +0.619405567935475630, 0.619366313602720540, 0.619327057721550060, 0.619287800292061990, 0.619248541314354360, 0.619209280788525000, 0.619170018714672810, 0.619130755092895610, +0.619091489923291550, 0.619052223205958320, 0.619012954940994950, 0.618973685128499150, 0.618934413768569170, 0.618895140861302820, 0.618855866406798900, 0.618816590405155350, +0.618777312856469970, 0.618738033760841690, 0.618698753118368310, 0.618659470929148080, 0.618620187193278710, 0.618580901910859350, 0.618541615081987680, 0.618502326706761970, +0.618463036785280140, 0.618423745317640990, 0.618384452303942460, 0.618345157744282890, 0.618305861638760000, 0.618266563987472930, 0.618227264790519370, 0.618187964047997580, +0.618148661760005600, 0.618109357926642340, 0.618070052548005620, 0.618030745624193470, 0.617991437155304800, 0.617952127141437550, 0.617912815582689960, 0.617873502479159950, +0.617834187830946570, 0.617794871638147720, 0.617755553900861680, 0.617716234619186460, 0.617676913793220870, 0.617637591423063180, 0.617598267508811420, 0.617558942050563610, +0.617519615048418790, 0.617480286502475000, 0.617440956412830480, 0.617401624779583160, 0.617362291602832180, 0.617322956882675470, 0.617283620619210940, 0.617244282812537850, +0.617204943462753900, 0.617165602569957670, 0.617126260134247100, 0.617086916155721200, 0.617047570634478020, 0.617008223570615910, 0.616968874964232920, 0.616929524815428070, +0.616890173124299390, 0.616850819890945370, 0.616811465115463810, 0.616772108797954080, 0.616732750938513980, 0.616693391537242010, 0.616654030594236290, 0.616614668109595750, +0.616575304083418540, 0.616535938515803130, 0.616496571406847440, 0.616457202756650720, 0.616417832565311020, 0.616378460832926360, 0.616339087559595990, 0.616299712745417730, +0.616260336390490380, 0.616220958494911650, 0.616181579058781010, 0.616142198082196390, 0.616102815565256260, 0.616063431508058650, 0.616024045910702920, 0.615984658773287120, +0.615945270095909600, 0.615905879878668520, 0.615866488121663220, 0.615827094824991540, 0.615787699988752270, 0.615748303613043340, 0.615708905697963990, 0.615669506243612390, +0.615630105250086660, 0.615590702717485950, 0.615551298645908630, 0.615511893035452950, 0.615472485886217170, 0.615433077198300650, 0.615393666971801310, 0.615354255206817860, +0.615314841903448430, 0.615275427061792280, 0.615236010681947550, 0.615196592764012730, 0.615157173308086060, 0.615117752314266910, 0.615078329782653310, 0.615038905713343960, +0.614999480106436900, 0.614960052962031490, 0.614920624280226090, 0.614881194061118630, 0.614841762304808580, 0.614802329011394090, 0.614762894180973850, 0.614723457813646010, +0.614684019909509830, 0.614644580468663660, 0.614605139491205990, 0.614565696977235180, 0.614526252926850370, 0.614486807340150040, 0.614447360217232670, 0.614407911558196520, +0.614368461363140940, 0.614329009632164190, 0.614289556365364970, 0.614250101562841430, 0.614210645224693040, 0.614171187351018060, 0.614131727941915060, 0.614092266997482430, +0.614052804517819520, 0.614013340503024470, 0.613973874953195890, 0.613934407868432790, 0.613894939248833760, 0.613855469094497400, 0.613815997405522060, 0.613776524182007010, +0.613737049424050610, 0.613697573131751660, 0.613658095305208430, 0.613618615944520270, 0.613579135049785560, 0.613539652621102990, 0.613500168658571040, 0.613460683162288970, +0.613421196132355240, 0.613381707568868450, 0.613342217471926960, 0.613302725841630480, 0.613263232678077030, 0.613223737981365200, 0.613184241751594360, 0.613144743988862980, +0.613105244693269660, 0.613065743864912970, 0.613026241503892180, 0.612986737610305750, 0.612947232184252620, 0.612907725225830920, 0.612868216735140360, 0.612828706712279180, +0.612789195157346310, 0.612749682070440000, 0.612710167451659960, 0.612670651301104430, 0.612631133618872340, 0.612591614405061930, 0.612552093659772920, 0.612512571383103670, +0.612473047575152640, 0.612433522236019320, 0.612393995365802300, 0.612354466964600160, 0.612314937032511610, 0.612275405569636000, 0.612235872576071930, 0.612196338051918090, +0.612156801997273070, 0.612117264412236460, 0.612077725296906630, 0.612038184651382490, 0.611998642475762630, 0.611959098770146430, 0.611919553534632450, 0.611880006769319640, +0.611840458474306460, 0.611800908649692500, 0.611761357295576240, 0.611721804412056260, 0.611682249999232150, 0.611642694057202400, 0.611603136586065800, 0.611563577585921170, +0.611524017056867870, 0.611484454999004500, 0.611444891412429970, 0.611405326297242980, 0.611365759653542900, 0.611326191481428530, 0.611286621780998680, 0.611247050552351840, +0.611207477795587710, 0.611167903510804970, 0.611128327698102440, 0.611088750357578810, 0.611049171489333580, 0.611009591093465420, 0.610970009170073270, 0.610930425719255710, +0.610890840741112550, 0.610851254235742270, 0.610811666203243450, 0.610772076643715800, 0.610732485557258010, 0.610692892943969000, 0.610653298803947360, 0.610613703137292910, +0.610574105944104110, 0.610534507224480110, 0.610494906978519490, 0.610455305206321850, 0.610415701907986110, 0.610376097083610960, 0.610336490733295320, 0.610296882857138790, +0.610257273455240060, 0.610217662527698050, 0.610178050074611680, 0.610138436096080430, 0.610098820592203110, 0.610059203563078410, 0.610019585008806040, 0.609979964929484700, +0.609940343325213520, 0.609900720196091100, 0.609861095542217120, 0.609821469363690530, 0.609781841660610220, 0.609742212433074910, 0.609702581681184520, 0.609662949405037620, +0.609623315604733370, 0.609583680280370470, 0.609544043432048600, 0.609504405059866810, 0.609464765163923890, 0.609425123744318790, 0.609385480801151180, 0.609345836334519890, +0.609306190344523600, 0.609266542831262250, 0.609226893794834520, 0.609187243235339570, 0.609147591152876090, 0.609107937547544110, 0.609068282419442220, 0.609028625768669560, +0.608988967595325060, 0.608949307899508520, 0.608909646681318640, 0.608869983940854680, 0.608830319678215440, 0.608790653893500730, 0.608750986586809370, 0.608711317758240500, +0.608671647407893040, 0.608631975535866790, 0.608592302142260680, 0.608552627227173740, 0.608512950790704890, 0.608473272832954050, 0.608433593354019920, 0.608393912354001530, +0.608354229832998690, 0.608314545791110330, 0.608274860228435580, 0.608235173145073360, 0.608195484541123490, 0.608155794416684990, 0.608116102771856900, 0.608076409606738260, +0.608036714921428970, 0.607997018716027850, 0.607957320990634150, 0.607917621745346910, 0.607877920980265940, 0.607838218695490040, 0.607798514891118690, 0.607758809567250700, +0.607719102723986100, 0.607679394361423600, 0.607639684479662430, 0.607599973078802310, 0.607560260158942270, 0.607520545720181550, 0.607480829762619080, 0.607441112286355000, +0.607401393291488010, 0.607361672778117590, 0.607321950746342760, 0.607282227196263240, 0.607242502127978260, 0.607202775541586970, 0.607163047437188410, 0.607123317814882490, +0.607083586674768360, 0.607043854016945270, 0.607004119841512150, 0.606964384148569120, 0.606924646938215130, 0.606884908210549190, 0.606845167965671340, 0.606805426203680500, +0.606765682924676140, 0.606725938128757190, 0.606686191816023790, 0.606646443986574970, 0.606606694640509870, 0.606566943777927860, 0.606527191398928740, 0.606487437503611670, +0.606447682092076000, 0.606407925164420770, 0.606368166720746000, 0.606328406761150960, 0.606288645285734780, 0.606248882294596720, 0.606209117787836820, 0.606169351765553980, +0.606129584227847570, 0.606089815174817530, 0.606050044606562870, 0.606010272523183180, 0.605970498924777390, 0.605930723811445750, 0.605890947183287290, 0.605851169040401480, +0.605811389382887370, 0.605771608210845080, 0.605731825524373880, 0.605692041323573020, 0.605652255608541750, 0.605612468379380210, 0.605572679636187550, 0.605532889379063130, +0.605493097608106100, 0.605453304323416710, 0.605413509525094100, 0.605373713213237630, 0.605333915387946560, 0.605294116049321040, 0.605254315197460310, 0.605214512832463410, +0.605174708954430600, 0.605134903563460890, 0.605095096659654000, 0.605055288243109060, 0.605015478313926210, 0.604975666872204720, 0.604935853918043940, 0.604896039451543240, +0.604856223472802880, 0.604816405981921880, 0.604776586978999830, 0.604736766464135990, 0.604696944437430610, 0.604657120898982820, 0.604617295848892340, 0.604577469287258200, +0.604537641214180630, 0.604497811629759130, 0.604457980534092610, 0.604418147927281660, 0.604378313809425190, 0.604338478180622920, 0.604298641040974190, 0.604258802390579160, +0.604218962229537190, 0.604179120557947760, 0.604139277375910220, 0.604099432683524840, 0.604059586480890860, 0.604019738768107880, 0.603979889545275260, 0.603940038812493140, +0.603900186569861110, 0.603860332817478530, 0.603820477555444660, 0.603780620783860080, 0.603740762502823940, 0.603700902712435480, 0.603661041412795200, 0.603621178604002220, +0.603581314286156360, 0.603541448459356870, 0.603501581123704110, 0.603461712279297350, 0.603421841926236270, 0.603381970064620350, 0.603342096694549750, 0.603302221816124030, +0.603262345429442680, 0.603222467534605070, 0.603182588131711770, 0.603142707220861940, 0.603102824802155270, 0.603062940875691230, 0.603023055441570200, 0.602983168499891530, +0.602943280050754930, 0.602903390094259860, 0.602863498630506590, 0.602823605659594590, 0.602783711181623220, 0.602743815196692960, 0.602703917704903060, 0.602664018706353440, +0.602624118201143370, 0.602584216189373410, 0.602544312671142950, 0.602504407646551670, 0.602464501115698940, 0.602424593078685460, 0.602384683535610370, 0.602344772486573590, +0.602304859931674600, 0.602264945871013760, 0.602225030304690550, 0.602185113232804770, 0.602145194655455910, 0.602105274572744320, 0.602065352984769600, 0.602025429891631100, +0.601985505293429420, 0.601945579190264040, 0.601905651582234640, 0.601865722469440700, 0.601825791851982930, 0.601785859729960570, 0.601745926103473660, 0.601705990972621560, +0.601666054337504750, 0.601626116198222820, 0.601586176554875670, 0.601546235407562690, 0.601506292756384560, 0.601466348601440550, 0.601426402942830780, 0.601386455780654640, +0.601346507115012700, 0.601306556946004430, 0.601266605273729440, 0.601226652098288290, 0.601186697419780590, 0.601146741238306030, 0.601106783553964410, 0.601066824366856100, +0.601026863677080690, 0.600986901484738210, 0.600946937789928030, 0.600906972592750940, 0.600867005893306330, 0.600827037691694210, 0.600787067988014290, 0.600747096782366930, +0.600707124074851830, 0.600667149865568910, 0.600627174154617860, 0.600587196942099170, 0.600547218228112410, 0.600507238012757290, 0.600467256296134510, 0.600427273078343540, +0.600387288359484410, 0.600347302139656700, 0.600307314418961010, 0.600267325197497150, 0.600227334475364920, 0.600187342252664010, 0.600147348529495030, 0.600107353305957770, +0.600067356582152040, 0.600027358358177660, 0.599987358634135210, 0.599947357410124390, 0.599907354686245120, 0.599867350462597090, 0.599827344739281120, 0.599787337516396680, +0.599747328794044020, 0.599707318572322620, 0.599667306851333290, 0.599627293631175730, 0.599587278911949520, 0.599547262693755470, 0.599507244976693280, 0.599467225760862980, +0.599427205046364260, 0.599387182833297840, 0.599347159121763510, 0.599307133911861300, 0.599267107203690920, 0.599227078997353060, 0.599187049292947530, 0.599147018090574360, +0.599106985390333360, 0.599066951192325230, 0.599026915496649660, 0.598986878303406800, 0.598946839612696460, 0.598906799424619330, 0.598866757739275220, 0.598826714556763840, +0.598786669877185980, 0.598746623700641580, 0.598706576027230540, 0.598666526857052680, 0.598626476190208920, 0.598586424026798960, 0.598546370366922930, 0.598506315210680540, +0.598466258558172810, 0.598426200409499450, 0.598386140764760490, 0.598346079624055950, 0.598306016987486420, 0.598265952855151940, 0.598225887227152640, 0.598185820103588120, +0.598145751484559510, 0.598105681370166510, 0.598065609760508930, 0.598025536655687700, 0.597985462055802610, 0.597945385960953810, 0.597905308371241230, 0.597865229286765780, +0.597825148707627260, 0.597785066633925830, 0.597744983065761400, 0.597704898003234790, 0.597664811446446010, 0.597624723395495220, 0.597584633850482220, 0.597544542811508040, +0.597504450278672490, 0.597464356252075720, 0.597424260731817870, 0.597384163717999630, 0.597344065210720920, 0.597303965210082110, 0.597263863716183120, 0.597223760729124640, +0.597183656249006930, 0.597143550275929580, 0.597103442809993830, 0.597063333851299390, 0.597023223399946730, 0.596983111456035550, 0.596942998019666990, 0.596902883090940860, +0.596862766669957630, 0.596822648756817120, 0.596782529351620240, 0.596742408454467130, 0.596702286065457940, 0.596662162184692700, 0.596622036812272440, 0.596581909948297070, +0.596541781592866970, 0.596501651746081940, 0.596461520408043230, 0.596421387578850770, 0.596381253258604360, 0.596341117447405260, 0.596300980145353380, 0.596260841352548980, +0.596220701069092080, 0.596180559295083960, 0.596140416030624290, 0.596100271275813660, 0.596060125030751900, 0.596019977295540240, 0.595979828070278720, 0.595939677355067480, +0.595899525150006770, 0.595859371455197630, 0.595819216270739970, 0.595779059596734380, 0.595738901433280680, 0.595698741780480210, 0.595658580638432800, 0.595618418007238580, +0.595578253886998700, 0.595538088277813180, 0.595497921179782400, 0.595457752593006480, 0.595417582517586590, 0.595377410953622620, 0.595337237901215290, 0.595297063360464400, +0.595256887331471200, 0.595216709814335830, 0.595176530809158670, 0.595136350316039840, 0.595096168335080500, 0.595055984866380670, 0.595015799910040940, 0.594975613466161350, +0.594935425534843020, 0.594895236116186220, 0.594855045210291310, 0.594814852817258320, 0.594774658937188730, 0.594734463570182340, 0.594694266716339510, 0.594654068375761400, +0.594613868548548030, 0.594573667234800100, 0.594533464434617520, 0.594493260148101780, 0.594453054375352790, 0.594412847116471130, 0.594372638371557070, 0.594332428140711740, +0.594292216424035400, 0.594252003221628520, 0.594211788533591130, 0.594171572360024710, 0.594131354701029400, 0.594091135556705670, 0.594050914927153780, 0.594010692812474980, +0.593970469212769410, 0.593930244128137220, 0.593890017558679870, 0.593849789504497520, 0.593809559965690630, 0.593769328942359450, 0.593729096434605360, 0.593688862442528500, +0.593648626966229550, 0.593608390005808560, 0.593568151561367000, 0.593527911633005110, 0.593487670220823380, 0.593447427324922170, 0.593407182945402730, 0.593366937082365320, +0.593326689735910630, 0.593286440906138800, 0.593246190593151200, 0.593205938797048190, 0.593165685517929920, 0.593125430755897850, 0.593085174511052140, 0.593044916783493580, +0.593004657573322320, 0.592964396880639730, 0.592924134705546170, 0.592883871048142330, 0.592843605908528360, 0.592803339286805840, 0.592763071183074920, 0.592722801597436290, +0.592682530529990310, 0.592642257980838360, 0.592601983950080900, 0.592561708437818300, 0.592521431444151150, 0.592481152969180800, 0.592440873013007520, 0.592400591575731660, +0.592360308657454810, 0.592320024258277120, 0.592279738378299390, 0.592239451017621880, 0.592199162176346160, 0.592158871854572500, 0.592118580052401700, 0.592078286769934130, +0.592037992007271140, 0.591997695764513110, 0.591957398041760950, 0.591917098839114920, 0.591876798156676490, 0.591836495994546020, 0.591796192352824320, 0.591755887231611880, +0.591715580631009930, 0.591675272551119180, 0.591634962992040100, 0.591594651953873400, 0.591554339436720310, 0.591514025440681430, 0.591473709965857130, 0.591433393012348870, +0.591393074580257250, 0.591352754669682850, 0.591312433280726140, 0.591272110413488820, 0.591231786068071140, 0.591191460244574030, 0.591151132943097960, 0.591110804163744400, +0.591070473906613710, 0.591030142171806940, 0.590989808959424550, 0.590949474269567790, 0.590909138102337470, 0.590868800457834300, 0.590828461336158740, 0.590788120737412380, +0.590747778661695810, 0.590707435109109280, 0.590667090079754600, 0.590626743573732240, 0.590586395591143010, 0.590546046132087390, 0.590505695196666960, 0.590465342784982420, +0.590424988897134460, 0.590384633533223680, 0.590344276693351660, 0.590303918377618860, 0.590263558586126450, 0.590223197318974660, 0.590182834576265300, 0.590142470358098750, +0.590102104664576130, 0.590061737495797820, 0.590021368851865620, 0.589980998732879900, 0.589940627138941350, 0.589900254070151680, 0.589859879526611230, 0.589819503508421160, +0.589779126015681940, 0.589738747048495380, 0.589698366606961840, 0.589657984691182360, 0.589617601301257620, 0.589577216437289220, 0.589536830099377740, 0.589496442287624320, +0.589456053002129330, 0.589415662242994580, 0.589375270010320640, 0.589334876304208550, 0.589294481124758910, 0.589254084472073500, 0.589213686346252820, 0.589173286747397880, +0.589132885675609400, 0.589092483130989050, 0.589052079113637550, 0.589011673623655470, 0.588971266661144520, 0.588930858226205390, 0.588890448318939220, 0.588850036939446490, +0.588809624087829000, 0.588769209764187560, 0.588728793968622990, 0.588688376701236080, 0.588647957962128650, 0.588607537751401290, 0.588567116069155130, 0.588526692915490760, +0.588486268290510100, 0.588445842194313730, 0.588405414627002690, 0.588364985588677780, 0.588324555079440810, 0.588284123099392490, 0.588243689648633380, 0.588203254727265530, +0.588162818335389410, 0.588122380473106390, 0.588081941140516930, 0.588041500337723070, 0.588001058064825390, 0.587960614321925150, 0.587920169109122930, 0.587879722426520650, +0.587839274274219110, 0.587798824652319360, 0.587758373560922200, 0.587717921000129540, 0.587677466970041970, 0.587637011470760750, 0.587596554502386680, 0.587556096065021570, +0.587515636158766230, 0.587475174783721350, 0.587434711939988970, 0.587394247627669900, 0.587353781846865040, 0.587313314597675440, 0.587272845880202900, 0.587232375694548340, +0.587191904040812670, 0.587151430919097050, 0.587110956329503160, 0.587070480272131820, 0.587030002747084280, 0.586989523754461450, 0.586949043294365150, 0.586908561366896180, +0.586868077972155900, 0.586827593110245020, 0.586787106781265440, 0.586746618985318210, 0.586706129722504020, 0.586665638992924900, 0.586625146796681650, 0.586584653133875530, +0.586544158004607460, 0.586503661408979250, 0.586463163347092030, 0.586422663819046840, 0.586382162824944600, 0.586341660364887330, 0.586301156438975850, 0.586260651047311620, +0.586220144189995240, 0.586179635867128960, 0.586139126078813580, 0.586098614825150470, 0.586058102106240320, 0.586017587922185390, 0.585977072273086370, 0.585936555159044750, +0.585896036580161320, 0.585855516536538220, 0.585814995028276390, 0.585774472055476610, 0.585733947618241050, 0.585693421716670600, 0.585652894350866540, 0.585612365520929990, +0.585571835226962770, 0.585531303469066120, 0.585490770247341090, 0.585450235561888800, 0.585409699412811290, 0.585369161800209590, 0.585328622724184840, 0.585288082184838300, +0.585247540182271870, 0.585206996716586600, 0.585166451787883850, 0.585125905396264630, 0.585085357541831000, 0.585044808224683850, 0.585004257444924460, 0.584963705202654730, +0.584923151497975800, 0.584882596330988940, 0.584842039701795270, 0.584801481610496720, 0.584760922057194650, 0.584720361041990210, 0.584679798564984420, 0.584639234626279650, +0.584598669225976700, 0.584558102364177050, 0.584517534040981830, 0.584476964256493090, 0.584436393010812070, 0.584395820304039910, 0.584355246136277980, 0.584314670507628200, +0.584274093418191810, 0.584233514868069740, 0.584192934857364230, 0.584152353386176440, 0.584111770454607830, 0.584071186062759320, 0.584030600210733280, 0.583990012898630730, +0.583949424126553150, 0.583908833894601580, 0.583868242202878360, 0.583827649051484540, 0.583787054440521590, 0.583746458370090540, 0.583705860840293860, 0.583665261851232460, +0.583624661403007840, 0.583584059495721340, 0.583543456129475000, 0.583502851304369960, 0.583462245020507810, 0.583421637277989680, 0.583381028076917940, 0.583340417417393510, +0.583299805299517750, 0.583259191723392690, 0.583218576689119810, 0.583177960196800460, 0.583137342246535790, 0.583096722838428170, 0.583056101972578730, 0.583015479649089060, +0.582974855868060300, 0.582934230629594710, 0.582893603933793640, 0.582852975780758560, 0.582812346170590630, 0.582771715103392210, 0.582731082579264430, 0.582690448598309100, +0.582649813160627140, 0.582609176266321030, 0.582568537915492010, 0.582527898108241350, 0.582487256844671290, 0.582446614124882970, 0.582405969948978200, 0.582365324317058120, +0.582324677229225210, 0.582284028685580490, 0.582243378686225670, 0.582202727231262100, 0.582162074320792030, 0.582121419954916840, 0.582080764133738100, 0.582040106857356960, +0.581999448125876010, 0.581958787939396480, 0.581918126298019980, 0.581877463201847740, 0.581836798650982260, 0.581796132645524660, 0.581755465185576530, 0.581714796271240010, +0.581674125902616470, 0.581633454079807710, 0.581592780802914880, 0.581552106072040440, 0.581511429887285880, 0.581470752248752550, 0.581430073156542160, 0.581389392610756840, +0.581348710611498070, 0.581308027158867540, 0.581267342252966500, 0.581226655893897550, 0.581185968081761930, 0.581145278816661340, 0.581104588098697250, 0.581063895927972030, +0.581023202304587150, 0.580982507228643860, 0.580941810700244640, 0.580901112719490850, 0.580860413286484300, 0.580819712401326350, 0.580779010064119580, 0.580738306274965250, +0.580697601033965060, 0.580656894341220590, 0.580616186196834190, 0.580575476600907360, 0.580534765553541890, 0.580494053054839030, 0.580453339104901490, 0.580412623703830620, +0.580371906851728130, 0.580331188548695480, 0.580290468794835260, 0.580249747590248940, 0.580209024935038120, 0.580168300829304480, 0.580127575273150400, 0.580086848266677450, +0.580046119809986880, 0.580005389903181510, 0.579964658546362590, 0.579923925739632030, 0.579883191483091310, 0.579842455776843010, 0.579801718620988500, 0.579760980015629700, +0.579720239960868080, 0.579679498456806330, 0.579638755503545710, 0.579598011101188250, 0.579557265249835420, 0.579516517949589800, 0.579475769200552880, 0.579435019002826460, +0.579394267356512230, 0.579353514261712670, 0.579312759718529250, 0.579272003727063670, 0.579231246287418400, 0.579190487399695030, 0.579149727063995370, 0.579108965280421110, +0.579068202049074720, 0.579027437370057910, 0.578986671243472470, 0.578945903669420000, 0.578905134648003080, 0.578864364179323410, 0.578823592263482790, 0.578782818900582810, +0.578742044090726160, 0.578701267834014430, 0.578660490130549540, 0.578619710980432970, 0.578578930383767620, 0.578538148340654870, 0.578497364851196290, 0.578456579915494820, +0.578415793533651800, 0.578375005705769380, 0.578334216431949040, 0.578293425712293470, 0.578252633546904370, 0.578211839935883760, 0.578171044879333130, 0.578130248377355160, +0.578089450430051670, 0.578048651037524560, 0.578007850199875440, 0.577967047917207100, 0.577926244189621130, 0.577885439017219450, 0.577844632400103860, 0.577803824338377070, +0.577763014832140760, 0.577722203881496870, 0.577681391486547180, 0.577640577647394290, 0.577599762364139900, 0.577558945636885810, 0.577518127465734830, 0.577477307850788320, +0.577436486792148650, 0.577395664289917400, 0.577354840344197370, 0.577314014955090270, 0.577273188122698010, 0.577232359847122510, 0.577191530128466470, 0.577150698966831580, +0.577109866362319980, 0.577069032315033260, 0.577028196825074450, 0.576987359892545020, 0.576946521517547330, 0.576905681700182860, 0.576864840440554530, 0.576823997738764250, +0.576783153594913500, 0.576742308009105200, 0.576701460981441150, 0.576660612512023500, 0.576619762600953930, 0.576578911248335380, 0.576538058454269420, 0.576497204218858420, +0.576456348542203960, 0.576415491424409070, 0.576374632865575440, 0.576333772865805230, 0.576292911425200230, 0.576252048543863250, 0.576211184221896210, 0.576170318459401140, +0.576129451256479960, 0.576088582613235590, 0.576047712529769610, 0.576006841006184160, 0.575965968042581820, 0.575925093639064630, 0.575884217795734730, 0.575843340512693810, +0.575802461790045020, 0.575761581627890040, 0.575720700026331130, 0.575679816985469990, 0.575638932505409760, 0.575598046586252240, 0.575557159228099580, 0.575516270431053580, +0.575475380195217380, 0.575434488520692680, 0.575393595407581730, 0.575352700855986440, 0.575311804866009860, 0.575270907437753660, 0.575230008571319780, 0.575189108266811360, +0.575148206524330070, 0.575107303343978420, 0.575066398725857960, 0.575025492670071970, 0.574984585176722240, 0.574943676245911030, 0.574902765877740360, 0.574861854072313050, +0.574820940829731120, 0.574780026150096820, 0.574739110033512080, 0.574698192480079920, 0.574657273489902360, 0.574616353063081560, 0.574575431199719540, 0.574534507899919220, +0.574493583163782740, 0.574452656991412240, 0.574411729382909740, 0.574370800338378280, 0.574329869857919890, 0.574288937941636380, 0.574248004589630880, 0.574207069802005420, +0.574166133578862260, 0.574125195920303420, 0.574084256826431940, 0.574043316297349840, 0.574002374333159480, 0.573961430933962680, 0.573920486099862790, 0.573879539830961630, +0.573838592127361660, 0.573797642989164910, 0.573756692416474310, 0.573715740409391990, 0.573674786968020320, 0.573633832092461330, 0.573592875782818150, 0.573551918039192810, +0.573510958861687240, 0.573469998250404680, 0.573429036205447050, 0.573388072726916940, 0.573347107814916160, 0.573306141469548060, 0.573265173690914560, 0.573224204479118150, +0.573183233834260950, 0.573142261756445890, 0.573101288245775220, 0.573060313302351410, 0.573019336926276380, 0.572978359117653380, 0.572937379876584440, 0.572896399203172150, +0.572855417097518420, 0.572814433559726500, 0.572773448589898540, 0.572732462188136560, 0.572691474354543820, 0.572650485089222450, 0.572609494392274820, 0.572568502263803070, +0.572527508703910450, 0.572486513712698990, 0.572445517290271270, 0.572404519436729430, 0.572363520152176730, 0.572322519436715080, 0.572281517290447180, 0.572240513713475170, +0.572199508705902190, 0.572158502267830490, 0.572117494399362550, 0.572076485100600380, 0.572035474371647480, 0.571994462212605860, 0.571953448623578110, 0.571912433604666370, +0.571871417155973890, 0.571830399277602820, 0.571789379969655510, 0.571748359232234990, 0.571707337065443630, 0.571666313469383900, 0.571625288444158050, 0.571584261989869340, +0.571543234106620000, 0.571502204794512520, 0.571461174053649270, 0.571420141884133370, 0.571379108286067080, 0.571338073259553100, 0.571297036804693460, 0.571255998921591730, +0.571214959610349850, 0.571173918871070720, 0.571132876703856370, 0.571091833108810180, 0.571050788086034380, 0.571009741635631340, 0.570968693757704200, 0.570927644452355440, +0.570886593719687420, 0.570845541559802720, 0.570804487972804480, 0.570763432958794950, 0.570722376517876830, 0.570681318650152480, 0.570640259355725150, 0.570599198634697210, +0.570558136487171240, 0.570517072913249600, 0.570476007913035650, 0.570434941486631650, 0.570393873634140290, 0.570352804355663820, 0.570311733651305830, 0.570270661521168450, +0.570229587965354060, 0.570188512983966110, 0.570147436577106760, 0.570106358744878920, 0.570065279487384720, 0.570024198804727770, 0.569983116697010290, 0.569942033164335120, +0.569900948206804370, 0.569859861824521640, 0.569818774017589290, 0.569777684786110020, 0.569736594130186180, 0.569695502049921140, 0.569654408545417380, 0.569613313616777580, +0.569572217264104230, 0.569531119487500570, 0.569490020287069190, 0.569448919662912330, 0.569407817615133590, 0.569366714143835330, 0.569325609249120230, 0.569284502931090790, +0.569243395189850450, 0.569202286025501600, 0.569161175438147040, 0.569120063427889230, 0.569078949994831550, 0.569037835139076580, 0.568996718860726890, 0.568955601159885080, +0.568914482036654730, 0.568873361491138100, 0.568832239523438090, 0.568791116133657070, 0.568749991321898630, 0.568708865088265240, 0.568667737432859700, 0.568626608355784490, +0.568585477857143080, 0.568544345937037950, 0.568503212595571570, 0.568462077832847630, 0.568420941648968390, 0.568379804044036870, 0.568338665018155440, 0.568297524571427680, +0.568256382703956180, 0.568215239415843620, 0.568174094707192710, 0.568132948578106810, 0.568091801028688610, 0.568050652059040930, 0.568009501669266230, 0.567968349859468200, +0.567927196629749220, 0.567886041980212310, 0.567844885910959830, 0.567803728422095590, 0.567762569513721950, 0.567721409185941610, 0.567680247438858030, 0.567639084272573920, +0.567597919687192090, 0.567556753682815000, 0.567515586259546460, 0.567474417417488940, 0.567433247156745370, 0.567392075477418320, 0.567350902379611500, 0.567309727863427370, +0.567268551928968970, 0.567227374576338760, 0.567186195805640450, 0.567145015616976720, 0.567103834010450500, 0.567062650986164260, 0.567021466544221700, 0.566980280684725610, +0.566939093407778370, 0.566897904713483780, 0.566856714601944420, 0.566815523073263220, 0.566774330127542970, 0.566733135764887150, 0.566691939985398570, 0.566650742789180040, +0.566609544176334360, 0.566568344146965220, 0.566527142701175210, 0.566485939839067250, 0.566444735560744150, 0.566403529866309600, 0.566362322755866180, 0.566321114229517030, +0.566279904287364630, 0.566238692929512900, 0.566197480156064300, 0.566156265967122210, 0.566115050362788970, 0.566073833343168410, 0.566032614908363430, 0.565991395058476400, +0.565950173793611340, 0.565908951113870850, 0.565867727019357950, 0.565826501510175330, 0.565785274586426800, 0.565744046248215170, 0.565702816495643360, 0.565661585328814280, +0.565620352747831400, 0.565579118752797760, 0.565537883343816270, 0.565496646520989740, 0.565455408284421980, 0.565414168634215670, 0.565372927570473970, 0.565331685093299560, +0.565290441202796370, 0.565249195899066970, 0.565207949182214290, 0.565166701052342010, 0.565125451509553070, 0.565084200553950480, 0.565042948185636940, 0.565001694404716480, +0.564960439211291800, 0.564919182605466030, 0.564877924587341870, 0.564836665157023350, 0.564795404314613060, 0.564754142060214350, 0.564712878393929920, 0.564671613315863570, +0.564630346826118230, 0.564589078924797040, 0.564547809612002790, 0.564506538887839420, 0.564465266752409600, 0.564423993205816270, 0.564382718248163440, 0.564341441879553710, +0.564300164100090430, 0.564258884909876300, 0.564217604309015350, 0.564176322297610390, 0.564135038875764660, 0.564093754043580970, 0.564052467801163250, 0.564011180148614290, +0.563969891086037460, 0.563928600613535560, 0.563887308731212400, 0.563846015439171120, 0.563804720737514750, 0.563763424626346100, 0.563722127105769410, 0.563680828175887380, +0.563639527836802820, 0.563598226088619870, 0.563556922931441330, 0.563515618365370560, 0.563474312390510270, 0.563433005006964580, 0.563391696214836420, 0.563350386014229040, +0.563309074405245250, 0.563267761387989290, 0.563226446962563740, 0.563185131129072200, 0.563143813887617360, 0.563102495238303470, 0.563061175181233330, 0.563019853716510200, +0.562978530844237100, 0.562937206564517960, 0.562895880877455900, 0.562854553783154080, 0.562813225281715510, 0.562771895373244350, 0.562730564057843270, 0.562689231335615550, +0.562647897206665080, 0.562606561671094910, 0.562565224729008270, 0.562523886380508210, 0.562482546625698850, 0.562441205464683010, 0.562399862897564270, 0.562358518924445440, +0.562317173545430760, 0.562275826760623150, 0.562234478570125870, 0.562193128974042060, 0.562151777972475840, 0.562110425565530150, 0.562069071753308340, 0.562027716535913550, +0.561986359913449920, 0.561945001886020260, 0.561903642453727700, 0.561862281616676510, 0.561820919374969590, 0.561779555728710300, 0.561738190678001900, 0.561696824222948200, +0.561655456363652550, 0.561614087100218320, 0.561572716432748420, 0.561531344361347110, 0.561489970886117410, 0.561448596007162790, 0.561407219724586400, 0.561365842038492270, +0.561324462948983530, 0.561283082456163650, 0.561241700560135670, 0.561200317261003720, 0.561158932558871170, 0.561117546453840820, 0.561076158946016920, 0.561034770035502730, +0.560993379722401490, 0.560951988006816560, 0.560910594888851980, 0.560869200368610880, 0.560827804446196840, 0.560786407121712790, 0.560745008395263200, 0.560703608266951090, +0.560662206736879940, 0.560620803805153000, 0.560579399471874300, 0.560537993737147080, 0.560496586601074930, 0.560455178063760990, 0.560413768125309410, 0.560372356785823420, +0.560330944045406620, 0.560289529904161920, 0.560248114362193910, 0.560206697419605600, 0.560165279076500160, 0.560123859332981810, 0.560082438189153930, 0.560041015645119880, +0.559999591700982900, 0.559958166356847360, 0.559916739612816410, 0.559875311468993610, 0.559833881925482220, 0.559792450982386390, 0.559751018639809470, 0.559709584897855050, +0.559668149756626150, 0.559626713216227370, 0.559585275276761830, 0.559543835938333010, 0.559502395201044280, 0.559460953064999990, 0.559419509530303170, 0.559378064597057410, +0.559336618265366740, 0.559295170535334510, 0.559253721407064310, 0.559212270880659500, 0.559170818956224450, 0.559129365633862290, 0.559087910913676710, 0.559046454795770980, +0.559004997280249440, 0.558963538367215460, 0.558922078056772630, 0.558880616349024200, 0.558839153244074630, 0.558797688742027180, 0.558756222842985540, 0.558714755547052970, +0.558673286854333820, 0.558631816764931450, 0.558590345278949240, 0.558548872396491540, 0.558507398117661590, 0.558465922442563210, 0.558424445371299650, 0.558382966903975260, +0.558341487040693530, 0.558300005781558030, 0.558258523126672230, 0.558217039076140400, 0.558175553630065990, 0.558134066788552820, 0.558092578551703910, 0.558051088919624070, +0.558009597892416440, 0.557968105470184830, 0.557926611653032590, 0.557885116441064310, 0.557843619834383020, 0.557802121833092410, 0.557760622437296960, 0.557719121647099800, +0.557677619462604970, 0.557636115883915600, 0.557594610911136380, 0.557553104544370680, 0.557511596783722090, 0.557470087629294290, 0.557428577081191530, 0.557387065139517300, +0.557345551804375510, 0.557304037075869400, 0.557262520954103560, 0.557221003439181460, 0.557179484531206910, 0.557137964230283170, 0.557096442536514910, 0.557054919450005630, +0.557013394970858890, 0.556971869099178510, 0.556930341835068620, 0.556888813178633040, 0.556847283129974890, 0.556805751689198990, 0.556764218856408810, 0.556722684631707930, +0.556681149015200050, 0.556639612006989640, 0.556598073607180170, 0.556556533815875550, 0.556514992633179270, 0.556473450059195800, 0.556431906094028710, 0.556390360737781920, +0.556348813990558800, 0.556307265852464040, 0.556265716323601110, 0.556224165404073930, 0.556182613093985870, 0.556141059393441720, 0.556099504302544960, 0.556057947821398950, +0.556016389950108600, 0.555974830688777180, 0.555933270037508700, 0.555891707996406640, 0.555850144565575690, 0.555808579745119320, 0.555767013535141690, 0.555725445935746020, +0.555683876947037140, 0.555642306569118500, 0.555600734802094150, 0.555559161646067560, 0.555517587101143520, 0.555476011167425400, 0.555434433845017340, 0.555392855134022810, +0.555351275034546510, 0.555309693546692020, 0.555268110670562920, 0.555226526406263910, 0.555184940753898570, 0.555143353713570930, 0.555101765285384460, 0.555060175469443970, +0.555018584265853040, 0.554976991674715700, 0.554935397696135540, 0.554893802330217120, 0.554852205577064270, 0.554810607436780900, 0.554769007909470700, 0.554727406995238260, +0.554685804694187380, 0.554644201006421980, 0.554602595932045640, 0.554560989471163170, 0.554519381623878370, 0.554477772390294940, 0.554436161770516800, 0.554394549764648640, +0.554352936372794040, 0.554311321595056810, 0.554269705431541640, 0.554228087882352120, 0.554186468947592490, 0.554144848627366240, 0.554103226921778270, 0.554061603830932280, +0.554019979354932190, 0.553978353493881800, 0.553936726247885920, 0.553895097617048250, 0.553853467601472800, 0.553811836201263290, 0.553770203416524610, 0.553728569247360360, +0.553686933693874780, 0.553645296756171360, 0.553603658434355220, 0.553562018728529840, 0.553520377638799020, 0.553478735165267690, 0.553437091308039530, 0.553395446067218580, +0.553353799442908740, 0.553312151435214730, 0.553270502044240330, 0.553228851270089580, 0.553187199112866510, 0.553145545572675700, 0.553103890649621070, 0.553062234343806640, +0.553020576655336330, 0.552978917584314940, 0.552937257130846290, 0.552895595295034400, 0.552853932076983190, 0.552812267476797570, 0.552770601494581240, 0.552728934130438110, +0.552687265384472880, 0.552645595256789580, 0.552603923747492230, 0.552562250856684760, 0.552520576584472070, 0.552478900930957860, 0.552437223896246390, 0.552395545480441560, +0.552353865683648190, 0.552312184505970080, 0.552270501947511590, 0.552228818008376530, 0.552187132688669700, 0.552145445988495130, 0.552103757907956850, 0.552062068447158880, +0.552020377606206040, 0.551978685385202340, 0.551936991784251480, 0.551895296803458610, 0.551853600442927420, 0.551811902702762260, 0.551770203583066940, 0.551728503083946500, +0.551686801205504730, 0.551645097947846110, 0.551603393311074220, 0.551561687295294310, 0.551519979900610190, 0.551478271127126110, 0.551436560974945980, 0.551394849444174720, +0.551353136534916470, 0.551311422247275250, 0.551269706581355210, 0.551227989537261260, 0.551186271115097330, 0.551144551314967760, 0.551102830136976360, 0.551061107581228280, +0.551019383647827430, 0.550977658336877730, 0.550935931648484310, 0.550894203582751100, 0.550852474139782330, 0.550810743319681940, 0.550769011122555160, 0.550727277548505810, +0.550685542597638240, 0.550643806270056490, 0.550602068565865580, 0.550560329485169530, 0.550518589028072600, 0.550476847194678820, 0.550435103985093320, 0.550393359399420020, +0.550351613437763400, 0.550309866100227360, 0.550268117386916940, 0.550226367297936390, 0.550184615833389400, 0.550142862993381330, 0.550101108778015990, 0.550059353187397960, +0.550017596221631160, 0.549975837880820830, 0.549934078165070780, 0.549892317074485600, 0.549850554609169210, 0.549808790769226840, 0.549767025554762530, 0.549725258965880650, +0.549683491002685210, 0.549641721665281360, 0.549599950953773230, 0.549558178868265300, 0.549516405408861490, 0.549474630575667140, 0.549432854368786080, 0.549391076788322550, +0.549349297834381690, 0.549307517507067630, 0.549265735806484750, 0.549223952732737160, 0.549182168285930140, 0.549140382466167590, 0.549098595273554090, 0.549056806708193790, +0.549015016770191820, 0.548973225459652330, 0.548931432776679770, 0.548889638721378190, 0.548847843293852940, 0.548806046494208060, 0.548764248322548110, 0.548722448778977130, +0.548680647863600380, 0.548638845576522090, 0.548597041917846640, 0.548555236887678150, 0.548513430486122000, 0.548471622713282310, 0.548429813569263120, 0.548388003054169790, +0.548346191168106460, 0.548304377911177700, 0.548262563283487550, 0.548220747285141470, 0.548178929916243400, 0.548137111176898010, 0.548095291067209560, 0.548053469587283180, +0.548011646737223130, 0.547969822517134000, 0.547927996927119910, 0.547886169967286230, 0.547844341637737100, 0.547802511938577210, 0.547760680869910590, 0.547718848431842600, +0.547677014624477490, 0.547635179447919510, 0.547593342902274020, 0.547551504987645040, 0.547509665704137390, 0.547467825051855210, 0.547425983030903840, 0.547384139641387430, +0.547342294883410680, 0.547300448757077950, 0.547258601262494370, 0.547216752399764310, 0.547174902168992340, 0.547133050570282720, 0.547091197603740920, 0.547049343269471080, +0.547007487567577890, 0.546965630498165600, 0.546923772061339690, 0.546881912257204280, 0.546840051085863640, 0.546798188547423350, 0.546756324641987530, 0.546714459369661010, +0.546672592730547910, 0.546630724724753600, 0.546588855352382550, 0.546546984613539450, 0.546505112508328450, 0.546463239036855010, 0.546421364199223490, 0.546379487995538590, +0.546337610425904560, 0.546295731490426870, 0.546253851189209880, 0.546211969522358180, 0.546170086489976340, 0.546128202092169500, 0.546086316329042250, 0.546044429200699180, +0.546002540707244630, 0.545960650848784200, 0.545918759625422020, 0.545876867037262680, 0.545834973084411530, 0.545793077766972940, 0.545751181085051610, 0.545709283038751990, +0.545667383628179460, 0.545625482853438590, 0.545583580714633980, 0.545541677211869970, 0.545499772345252150, 0.545457866114885000, 0.545415958520873100, 0.545374049563321030, +0.545332139242334040, 0.545290227558016820, 0.545248314510474060, 0.545206400099810030, 0.545164484326130520, 0.545122567189539660, 0.545080648690142060, 0.545038728828043270, +0.544996807603347570, 0.544954885016159850, 0.544912961066584600, 0.544871035754727280, 0.544829109080692490, 0.544787181044584790, 0.544745251646508780, 0.544703320886570030, +0.544661388764873020, 0.544619455281522450, 0.544577520436623000, 0.544535584230280030, 0.544493646662598030, 0.544451707733682010, 0.544409767443636340, 0.544367825792566710, +0.544325882780577360, 0.544283938407773000, 0.544241992674259210, 0.544200045580140350, 0.544158097125521430, 0.544116147310506950, 0.544074196135202360, 0.544032243599712360, +0.543990289704141650, 0.543948334448594920, 0.543906377833177750, 0.543864419857994610, 0.543822460523150420, 0.543780499828749650, 0.543738537774898110, 0.543696574361700160, +0.543654609589260820, 0.543612643457684560, 0.543570675967076980, 0.543528707117542860, 0.543486736909186470, 0.543444765342113720, 0.543402792416428970, 0.543360818132237240, +0.543318842489643130, 0.543276865488752310, 0.543234887129669270, 0.543192907412499040, 0.543150926337346180, 0.543108943904316410, 0.543066960113514190, 0.543024974965044650, +0.542982988459012270, 0.542941000595522750, 0.542899011374680770, 0.542857020796591260, 0.542815028861358790, 0.542773035569089180, 0.542731040919887000, 0.542689044913857170, +0.542647047551104380, 0.542605048831734330, 0.542563048755851600, 0.542521047323560990, 0.542479044534968090, 0.542437040390177480, 0.542395034889294410, 0.542353028032423250, +0.542311019819670000, 0.542269010251139160, 0.542226999326935850, 0.542184987047164560, 0.542142973411931290, 0.542100958421340540, 0.542058942075497320, 0.542016924374506440, +0.541974905318473700, 0.541932884907503580, 0.541890863141701320, 0.541848840021171400, 0.541806815546019840, 0.541764789716351340, 0.541722762532270360, 0.541680733993882950, +0.541638704101293560, 0.541596672854607550, 0.541554640253929410, 0.541512606299365040, 0.541470570991019140, 0.541428534328996850, 0.541386496313402850, 0.541344456944343080, +0.541302416221921990, 0.541260374146244950, 0.541218330717416650, 0.541176285935542790, 0.541134239800728280, 0.541092192313078150, 0.541050143472697200, 0.541008093279691240, +0.540966041734165070, 0.540923988836223390, 0.540881934585972110, 0.540839878983515930, 0.540797822028960210, 0.540755763722409410, 0.540713704063969680, 0.540671643053745600, +0.540629580691842530, 0.540587516978365050, 0.540545451913419180, 0.540503385497109630, 0.540461317729541650, 0.540419248610820020, 0.540377178141050680, 0.540335106320338320, +0.540293033148788180, 0.540250958626505180, 0.540208882753595130, 0.540166805530162830, 0.540124726956313530, 0.540082647032152030, 0.540040565757784250, 0.539998483133315110, +0.539956399158849410, 0.539914313834493060, 0.539872227160350880, 0.539830139136528220, 0.539788049763129770, 0.539745959040261680, 0.539703866968028520, 0.539661773546535770, +0.539619678775888230, 0.539577582656191930, 0.539535485187551570, 0.539493386370072490, 0.539451286203859630, 0.539409184689018990, 0.539367081825655290, 0.539324977613873880, +0.539282872053779670, 0.539240765145478700, 0.539198656889075760, 0.539156547284675770, 0.539114436332384870, 0.539072324032307870, 0.539030210384550010, 0.538988095389216330, +0.538945979046412730, 0.538903861356244130, 0.538861742318816010, 0.538819621934233050, 0.538777500202601400, 0.538735377124026080, 0.538693252698612230, 0.538651126926465000, +0.538608999807690280, 0.538566871342393010, 0.538524741530678530, 0.538482610372651880, 0.538440477868419090, 0.538398344018085060, 0.538356208821754830, 0.538314072279534540, +0.538271934391528980, 0.538229795157843530, 0.538187654578583310, 0.538145512653854240, 0.538103369383761470, 0.538061224768410230, 0.538019078807905560, 0.537976931502353590, +0.537934782851859250, 0.537892632856528000, 0.537850481516464750, 0.537808328831775760, 0.537766174802565830, 0.537724019428940550, 0.537681862711004820, 0.537639704648864790, +0.537597545242625490, 0.537555384492392040, 0.537513222398270370, 0.537471058960365730, 0.537428894178783480, 0.537386728053628530, 0.537344560585007120, 0.537302391773024410, +0.537260221617785640, 0.537218050119396050, 0.537175877277961570, 0.537133703093587430, 0.537091527566379120, 0.537049350696441550, 0.537007172483880970, 0.536964992928802510, +0.536922812031311540, 0.536880629791513190, 0.536838446209513600, 0.536796261285417910, 0.536754075019331480, 0.536711887411359560, 0.536669698461608390, 0.536627508170182900, +0.536585316537188220, 0.536543123562730600, 0.536500929246915280, 0.536458733589847530, 0.536416536591632690, 0.536374338252376790, 0.536332138572185090, 0.536289937551163050, +0.536247735189415710, 0.536205531487049520, 0.536163326444169420, 0.536121120060881080, 0.536078912337289550, 0.536036703273501060, 0.535994492869620860, 0.535952281125754330, +0.535910068042006800, 0.535867853618484550, 0.535825637855292580, 0.535783420752536150, 0.535741202310321520, 0.535698982528753920, 0.535656761407938830, 0.535614538947981500, +0.535572315148988180, 0.535530090011064000, 0.535487863534314770, 0.535445635718845400, 0.535403406564762260, 0.535361176072170710, 0.535318944241176100, 0.535276711071883900, +0.535234476564400150, 0.535192240718830310, 0.535150003535279860, 0.535107765013854040, 0.535065525154659110, 0.535023283957800410, 0.534981041423383210, 0.534938797551513630, +0.534896552342297160, 0.534854305795839260, 0.534812057912245290, 0.534769808691621380, 0.534727558134073130, 0.534685306239705890, 0.534643053008625020, 0.534600798440937000, +0.534558542536746840, 0.534516285296160350, 0.534474026719282790, 0.534431766806220620, 0.534389505557078980, 0.534347242971963570, 0.534304979050979620, 0.534262713794233620, +0.534220447201830930, 0.534178179273877010, 0.534135910010477330, 0.534093639411738260, 0.534051367477765050, 0.534009094208663050, 0.533966819604538620, 0.533924543665497240, +0.533882266391644490, 0.533839987783085720, 0.533797707839927300, 0.533755426562274700, 0.533713143950233390, 0.533670860003908950, 0.533628574723407740, 0.533586288108835020, +0.533544000160296680, 0.533501710877897880, 0.533459420261745200, 0.533417128311943990, 0.533374835028599950, 0.533332540411818430, 0.533290244461705920, 0.533247947178367880, +0.533205648561909550, 0.533163348612437420, 0.533121047330057050, 0.533078744714873930, 0.533036440766993640, 0.532994135486522640, 0.532951828873566180, 0.532909520928230300, +0.532867211650620120, 0.532824901040842350, 0.532782589099002330, 0.532740275825205890, 0.532697961219558260, 0.532655645282166250, 0.532613328013134990, 0.532571009412570520, +0.532528689480578080, 0.532486368217264250, 0.532444045622734620, 0.532401721697094430, 0.532359396440450270, 0.532317069852907720, 0.532274741934572470, 0.532232412685549880, +0.532190082105946760, 0.532147750195868460, 0.532105416955420680, 0.532063082384709010, 0.532020746483840010, 0.531978409252919170, 0.531936070692052290, 0.531893730801344830, +0.531851389580903500, 0.531809047030833650, 0.531766703151241190, 0.531724357942231500, 0.531682011403911470, 0.531639663536386250, 0.531597314339761540, 0.531554963814144020, +0.531512611959638950, 0.531470258776352460, 0.531427904264389910, 0.531385548423857990, 0.531343191254862180, 0.531300832757508390, 0.531258472931902090, 0.531216111778150090, +0.531173749296357740, 0.531131385486631080, 0.531089020349075460, 0.531046653883797790, 0.531004286090903440, 0.530961916970498330, 0.530919546522688130, 0.530877174747579340, +0.530834801645277740, 0.530792427215889040, 0.530750051459518920, 0.530707674376274090, 0.530665295966260000, 0.530622916229582350, 0.530580535166347730, 0.530538152776661830, +0.530495769060630560, 0.530453384018359510, 0.530410997649955250, 0.530368609955523600, 0.530326220935170460, 0.530283830589001300, 0.530241438917122940, 0.530199045919641070, +0.530156651596661480, 0.530114255948289980, 0.530071858974633160, 0.530029460675796700, 0.529987061051886530, 0.529944660103008450, 0.529902257829269030, 0.529859854230773970, +0.529817449307628970, 0.529775043059940610, 0.529732635487814680, 0.529690226591357230, 0.529647816370673710, 0.529605404825871150, 0.529562991957055030, 0.529520577764331370, +0.529478162247805970, 0.529435745407585530, 0.529393327243775750, 0.529350907756482520, 0.529308486945811780, 0.529266064811870220, 0.529223641354763410, 0.529181216574597490, +0.529138790471478160, 0.529096363045512330, 0.529053934296805470, 0.529011504225463500, 0.528969072831593000, 0.528926640115300000, 0.528884206076690290, 0.528841770715869690, +0.528799334032945100, 0.528756896028022120, 0.528714456701206870, 0.528672016052605160, 0.528629574082323810, 0.528587130790468480, 0.528544686177145340, 0.528502240242460060, +0.528459792986519570, 0.528417344409429670, 0.528374894511296380, 0.528332443292225510, 0.528289990752323750, 0.528247536891697230, 0.528205081710451660, 0.528162625208693170, +0.528120167386528450, 0.528077708244063300, 0.528035247781403430, 0.527992785998655960, 0.527950322895926470, 0.527907858473321110, 0.527865392730945790, 0.527822925668907320, +0.527780457287311600, 0.527737987586264670, 0.527695516565872440, 0.527653044226241820, 0.527610570567478510, 0.527568095589688870, 0.527525619292978480, 0.527483141677454470, +0.527440662743222650, 0.527398182490389170, 0.527355700919059810, 0.527313218029341610, 0.527270733821340380, 0.527228248295162020, 0.527185761450913230, 0.527143273288700140, +0.527100783808628900, 0.527058293010805310, 0.527015800895336280, 0.526973307462327840, 0.526930812711886020, 0.526888316644116950, 0.526845819259127320, 0.526803320557023170, +0.526760820537910850, 0.526718319201895930, 0.526675816549085680, 0.526633312579585900, 0.526590807293502830, 0.526548300690942270, 0.526505792772011480, 0.526463283536816040, +0.526420772985462190, 0.526378261118056630, 0.526335747934705500, 0.526293233435515040, 0.526250717620591060, 0.526208200490040690, 0.526165682043969850, 0.526123162282484680, +0.526080641205691310, 0.526038118813696780, 0.525995595106606870, 0.525953070084527960, 0.525910543747566070, 0.525868016095828120, 0.525825487129420230, 0.525782956848448560, +0.525740425253019120, 0.525697892343238940, 0.525655358119214040, 0.525612822581050470, 0.525570285728855110, 0.525527747562734130, 0.525485208082793750, 0.525442667289140020, +0.525400125181879840, 0.525357581761119460, 0.525315037026965140, 0.525272490979522780, 0.525229943618899630, 0.525187394945201610, 0.525144844958535080, 0.525102293659006180, +0.525059741046721820, 0.525017187121788020, 0.524974631884311370, 0.524932075334397790, 0.524889517472154290, 0.524846958297687130, 0.524804397811102440, 0.524761836012506480, +0.524719272902006260, 0.524676708479707820, 0.524634142745717290, 0.524591575700141810, 0.524549007343087290, 0.524506437674660320, 0.524463866694966810, 0.524421294404114110, +0.524378720802208150, 0.524336145889355400, 0.524293569665661870, 0.524250992131234720, 0.524208413286180170, 0.524165833130604610, 0.524123251664614040, 0.524080668888315840, +0.524038084801815800, 0.523995499405220610, 0.523952912698636310, 0.523910324682170140, 0.523867735355928120, 0.523825144720016400, 0.523782552774542220, 0.523739959519611610, +0.523697364955331040, 0.523654769081806750, 0.523612171899146000, 0.523569573407454690, 0.523526973606839530, 0.523484372497406540, 0.523441770079262960, 0.523399166352514930, +0.523356561317269040, 0.523313954973631310, 0.523271347321709210, 0.523228738361608660, 0.523186128093436230, 0.523143516517298070, 0.523100903633301640, 0.523058289441552860, +0.523015673942157980, 0.522973057135224240, 0.522930439020857900, 0.522887819599165530, 0.522845198870253160, 0.522802576834228150, 0.522759953491196750, 0.522717328841265540, +0.522674702884540540, 0.522632075621129120, 0.522589447051137520, 0.522546817174672330, 0.522504185991839790, 0.522461553502747140, 0.522418919707500540, 0.522376284606206660, +0.522333648198971660, 0.522291010485902980, 0.522248371467106790, 0.522205731142689640, 0.522163089512757810, 0.522120446577418520, 0.522077802336778250, 0.522035156790943030, +0.521992509940020330, 0.521949861784116290, 0.521907212323337700, 0.521864561557790600, 0.521821909487582560, 0.521779256112819720, 0.521736601433608670, 0.521693945450055870, +0.521651288162268470, 0.521608629570352920, 0.521565969674415710, 0.521523308474563300, 0.521480645970902930, 0.521437982163540980, 0.521395317052584020, 0.521352650638138400, +0.521309982920311610, 0.521267313899209770, 0.521224643574939360, 0.521181971947607630, 0.521139299017321030, 0.521096624784186170, 0.521053949248309390, 0.521011272409798050, +0.520968594268758630, 0.520925914825297600, 0.520883234079521530, 0.520840552031537670, 0.520797868681452500, 0.520755184029372600, 0.520712498075404320, 0.520669810819655240, +0.520627122262231620, 0.520584432403240150, 0.520541741242787290, 0.520499048780980410, 0.520456355017925980, 0.520413659953730230, 0.520370963588500660, 0.520328265922343820, +0.520285566955366210, 0.520242866687674280, 0.520200165119375610, 0.520157462250576570, 0.520114758081383740, 0.520072052611903810, 0.520029345842244030, 0.519986637772510860, +0.519943928402811120, 0.519901217733251260, 0.519858505763938660, 0.519815792494979780, 0.519773077926481420, 0.519730362058550050, 0.519687644891293040, 0.519644926424817080, +0.519602206659228290, 0.519559485594634380, 0.519516763231141820, 0.519474039568857290, 0.519431314607887380, 0.519388588348339450, 0.519345860790320080, 0.519303131933936070, +0.519260401779293890, 0.519217670326501010, 0.519174937575664020, 0.519132203526889600, 0.519089468180284340, 0.519046731535955820, 0.519003993594010500, 0.518961254354555090, +0.518918513817696270, 0.518875771983541510, 0.518833028852197290, 0.518790284423770510, 0.518747538698367650, 0.518704791676096290, 0.518662043357063010, 0.518619293741374170, +0.518576542829137570, 0.518533790620459570, 0.518491037115447080, 0.518448282314206590, 0.518405526216845770, 0.518362768823471210, 0.518320010134189710, 0.518277250149107750, +0.518234488868333120, 0.518191726291972190, 0.518148962420131980, 0.518106197252918950, 0.518063430790440930, 0.518020663032804250, 0.517977893980115840, 0.517935123632482400, +0.517892351990011490, 0.517849579052809820, 0.517806804820983620, 0.517764029294640940, 0.517721252473888120, 0.517678474358832190, 0.517635694949579730, 0.517592914246238430, +0.517550132248914770, 0.517507348957715770, 0.517464564372748010, 0.517421778494119300, 0.517378991321936100, 0.517336202856305440, 0.517293413097333900, 0.517250622045129170, +0.517207829699797950, 0.517165036061447040, 0.517122241130183240, 0.517079444906114240, 0.517036647389346630, 0.516993848579986980, 0.516951048478143100, 0.516908247083921580, +0.516865444397429430, 0.516822640418773350, 0.516779835148061030, 0.516737028585399050, 0.516694220730894550, 0.516651411584654110, 0.516608601146785530, 0.516565789417395500, +0.516522976396590950, 0.516480162084478560, 0.516437346481166130, 0.516394529586760460, 0.516351711401368370, 0.516308891925096550, 0.516266071158053010, 0.516223249100344230, +0.516180425752077340, 0.516137601113358930, 0.516094775184297030, 0.516051947964998090, 0.516009119455569040, 0.515966289656117460, 0.515923458566750150, 0.515880626187574240, +0.515837792518696330, 0.515794957560224310, 0.515752121312265000, 0.515709283774925310, 0.515666444948312040, 0.515623604832533000, 0.515580763427694990, 0.515537920733905140, +0.515495076751270040, 0.515452231479897600, 0.515409384919894630, 0.515366537071368150, 0.515323687934424960, 0.515280837509172970, 0.515237985795718890, 0.515195132794169400, +0.515152278504632520, 0.515109422927214840, 0.515066566062023720, 0.515023707909165740, 0.514980848468748920, 0.514937987740879950, 0.514895125725665980, 0.514852262423213910, +0.514809397833631550, 0.514766531957025600, 0.514723664793503400, 0.514680796343171650, 0.514637926606138270, 0.514595055582510060, 0.514552183272394270, 0.514509309675897590, +0.514466434793128040, 0.514423558624192310, 0.514380681169197440, 0.514337802428251110, 0.514294922401460350, 0.514252041088932300, 0.514209158490773750, 0.514166274607092740, +0.514123389437995960, 0.514080502983590760, 0.514037615243983950, 0.513994726219283440, 0.513951835909596030, 0.513908944315029090, 0.513866051435689530, 0.513823157271685040, +0.513780261823122750, 0.513737365090109810, 0.513694467072753010, 0.513651567771160500, 0.513608667185439070, 0.513565765315695530, 0.513522862162038020, 0.513479957724573330, +0.513437052003408720, 0.513394144998651210, 0.513351236710408610, 0.513308327138787930, 0.513265416283896440, 0.513222504145841030, 0.513179590724729740, 0.513136676020669480, +0.513093760033767500, 0.513050842764130820, 0.513007924211867360, 0.512965004377084030, 0.512922083259888310, 0.512879160860386870, 0.512836237178687980, 0.512793312214898540, +0.512750385969125810, 0.512707458441476690, 0.512664529632059330, 0.512621599540980630, 0.512578668168347520, 0.512535735514268120, 0.512492801578849470, 0.512449866362198800, +0.512406929864423040, 0.512363992085630330, 0.512321053025927680, 0.512278112685422340, 0.512235171064221340, 0.512192228162432820, 0.512149283980163790, 0.512106338517521410, +0.512063391774612910, 0.512020443751546320, 0.511977494448428550, 0.511934543865367080, 0.511891592002468920, 0.511848638859842110, 0.511805684437593670, 0.511762728735830730, +0.511719771754661210, 0.511676813494192360, 0.511633853954531430, 0.511590893135785540, 0.511547931038062840, 0.511504967661470240, 0.511462003006115220, 0.511419037072104790, +0.511376069859547200, 0.511333101368549370, 0.511290131599218880, 0.511247160551662640, 0.511204188225988790, 0.511161214622304570, 0.511118239740717350, 0.511075263581334040, +0.511032286144262990, 0.510989307429611240, 0.510946327437485910, 0.510903346167995040, 0.510860363621245870, 0.510817379797345760, 0.510774394696401730, 0.510731408318522260, +0.510688420663814150, 0.510645431732385080, 0.510602441524341980, 0.510559450039793190, 0.510516457278845760, 0.510473463241607140, 0.510430467928184580, 0.510387471338686230, +0.510344473473219100, 0.510301474331890880, 0.510258473914808500, 0.510215472222080410, 0.510172469253813540, 0.510129465010115580, 0.510086459491093550, 0.510043452696855800, +0.510000444627509380, 0.509957435283161510, 0.509914424663920340, 0.509871412769893120, 0.509828399601187420, 0.509785385157910390, 0.509742369440170150, 0.509699352448074070, +0.509656334181729620, 0.509613314641243930, 0.509570293826725250, 0.509527271738280940, 0.509484248376018470, 0.509441223740044970, 0.509398197830468690, 0.509355170647396990, +0.509312142190937460, 0.509269112461197100, 0.509226081458284300, 0.509183049182306390, 0.509140015633370410, 0.509096980811584830, 0.509053944717056670, 0.509010907349893740, +0.508967868710203160, 0.508924828798093310, 0.508881787613671420, 0.508838745157044970, 0.508795701428321310, 0.508752656427608810, 0.508709610155014590, 0.508666562610646470, +0.508623513794611460, 0.508580463707018040, 0.508537412347973560, 0.508494359717585500, 0.508451305815961100, 0.508408250643208940, 0.508365194199436040, 0.508322136484749780, +0.508279077499258600, 0.508236017243069770, 0.508192955716290750, 0.508149892919029120, 0.508106828851393020, 0.508063763513489920, 0.508020696905427390, 0.507977629027312800, +0.507934559879254400, 0.507891489461359650, 0.507848417773736240, 0.507805344816491310, 0.507762270589733440, 0.507719195093569890, 0.507676118328108440, 0.507633040293456240, +0.507589960989721760, 0.507546880417012460, 0.507503798575435480, 0.507460715465099520, 0.507417631086111710, 0.507374545438579740, 0.507331458522611190, 0.507288370338314200, +0.507245280885796460, 0.507202190165165430, 0.507159098176528490, 0.507116004919994200, 0.507072910395669930, 0.507029814603663480, 0.506986717544081980, 0.506943619217034120, +0.506900519622627170, 0.506857418760969010, 0.506814316632166810, 0.506771213236329340, 0.506728108573563760, 0.506685002643977870, 0.506641895447679120, 0.506598786984776010, +0.506555677255375980, 0.506512566259586290, 0.506469453997515640, 0.506426340469271260, 0.506383225674961190, 0.506340109614692560, 0.506296992288574050, 0.506253873696713040, +0.506210753839217430, 0.506167632716194470, 0.506124510327752850, 0.506081386673999930, 0.506038261755043520, 0.505995135570991180, 0.505952008121951290, 0.505908879408031420, +0.505865749429339260, 0.505822618185982510, 0.505779485678069520, 0.505736351905707760, 0.505693216869004810, 0.505650080568069150, 0.505606943003008350, 0.505563804173930100, +0.505520664080941980, 0.505477522724152690, 0.505434380103669480, 0.505391236219600360, 0.505348091072052810, 0.505304944661135290, 0.505261796986955500, 0.505218648049621240, +0.505175497849239990, 0.505132346385920310, 0.505089193659769790, 0.505046039670896230, 0.505002884419407220, 0.504959727905411440, 0.504916570129016250, 0.504873411090329350, +0.504830250789459310, 0.504787089226513610, 0.504743926401600150, 0.504700762314826520, 0.504657596966301300, 0.504614430356132180, 0.504571262484426960, 0.504528093351293230, +0.504484922956839550, 0.504441751301173640, 0.504398578384403380, 0.504355404206636160, 0.504312228767980990, 0.504269052068545110, 0.504225874108436670, 0.504182694887763130, +0.504139514406633290, 0.504096332665154630, 0.504053149663435060, 0.504009965401582380, 0.503966779879705060, 0.503923593097910790, 0.503880405056307160, 0.503837215755002950, +0.503794025194105770, 0.503750833373723390, 0.503707640293963530, 0.503664445954935090, 0.503621250356745430, 0.503578053499502690, 0.503534855383314440, 0.503491656008289380, +0.503448455374535200, 0.503405253482159920, 0.503362050331271130, 0.503318845921977510, 0.503275640254386870, 0.503232433328607120, 0.503189225144745840, 0.503146015702911840, +0.503102805003212920, 0.503059593045756540, 0.503016379830651620, 0.502973165358005740, 0.502929949627926920, 0.502886732640522860, 0.502843514395902250, 0.502800294894172990, +0.502757074135442910, 0.502713852119819780, 0.502670628847412430, 0.502627404318328530, 0.502584178532676010, 0.502540951490562770, 0.502497723192097510, 0.502454493637387920, +0.502411262826542140, 0.502368030759667740, 0.502324797436873750, 0.502281562858267750, 0.502238327023957320, 0.502195089934051600, 0.502151851588658160, 0.502108611987885030, +0.502065371131839910, 0.502022129020631920, 0.501978885654368550, 0.501935641033157910, 0.501892395157107820, 0.501849148026327070, 0.501805899640923480, 0.501762650001005170, +0.501719399106679840, 0.501676146958056400, 0.501632893555242650, 0.501589638898346620, 0.501546382987476110, 0.501503125822739930, 0.501459867404246080, 0.501416607732102060, +0.501373346806416990, 0.501330084627298560, 0.501286821194854900, 0.501243556509193720, 0.501200290570424150, 0.501157023378653750, 0.501113754933990910, 0.501070485236543180, +0.501027214286419720, 0.500983942083728210, 0.500940668628576780, 0.500897393921073350, 0.500854117961326840, 0.500810840749444930, 0.500767562285535980, 0.500724282569707800, +0.500681001602069190, 0.500637719382728160, 0.500594435911792760, 0.500551151189370990, 0.500507865215571670, 0.500464577990502590, 0.500421289514271780, 0.500377999786988160, +0.500334708808759520, 0.500291416579694110, 0.500248123099899740, 0.500204828369485430, 0.500161532388559090, 0.500118235157228860, 0.500074936675602770, 0.500031636943789600, +0.499988335961897460, 0.499945033730034400, 0.499901730248308420, 0.499858425516828460, 0.499815119535702460, 0.499771812305038640, 0.499728503824944940, 0.499685194095530310, +0.499641883116902720, 0.499598570889170030, 0.499555257412441330, 0.499511942686824470, 0.499468626712427750, 0.499425309489359090, 0.499381991017727510, 0.499338671297640980, +0.499295350329207800, 0.499252028112535770, 0.499208704647734150, 0.499165379934910720, 0.499122053974173860, 0.499078726765631480, 0.499035398309392640, 0.498992068605565330, +0.498948737654257850, 0.498905405455578100, 0.498862072009635280, 0.498818737316537250, 0.498775401376391980, 0.498732064189308600, 0.498688725755395080, 0.498645386074759720, +0.498602045147510550, 0.498558702973756600, 0.498515359553605930, 0.498472014887166860, 0.498428668974547350, 0.498385321815856540, 0.498341973411202450, 0.498298623760693450, +0.498255272864437440, 0.498211920722543720, 0.498168567335120100, 0.498125212702275110, 0.498081856824116710, 0.498038499700754090, 0.497995141332295170, 0.497951781718848410, +0.497908420860521780, 0.497865058757424540, 0.497821695409664590, 0.497778330817350070, 0.497734964980590110, 0.497691597899492690, 0.497648229574166320, 0.497604860004718990, +0.497561489191259860, 0.497518117133897040, 0.497474743832738870, 0.497431369287893550, 0.497387993499470100, 0.497344616467576720, 0.497301238192321800, 0.497257858673813390, +0.497214477912160720, 0.497171095907471830, 0.497127712659855230, 0.497084328169418940, 0.497040942436272230, 0.496997555460523210, 0.496954167242279870, 0.496910777781651490, +0.496867387078746170, 0.496823995133672370, 0.496780601946538230, 0.496737207517452930, 0.496693811846524670, 0.496650414933861810, 0.496607016779572590, 0.496563617383766200, +0.496520216746550720, 0.496476814868034740, 0.496433411748326340, 0.496390007387534800, 0.496346601785768230, 0.496303194943135130, 0.496259786859743700, 0.496216377535703130, +0.496172966971121680, 0.496129555166107410, 0.496086142120769620, 0.496042727835216520, 0.495999312309556570, 0.495955895543897910, 0.495912477538349940, 0.495869058293020800, +0.495825637808018970, 0.495782216083452690, 0.495738793119431250, 0.495695368916062810, 0.495651943473455980, 0.495608516791718860, 0.495565088870960900, 0.495521659711290140, +0.495478229312815270, 0.495434797675644470, 0.495391364799886990, 0.495347930685651190, 0.495304495333045490, 0.495261058742178180, 0.495217620913158630, 0.495174181846095020, +0.495130741541095600, 0.495087299998269670, 0.495043857217725480, 0.495000413199571660, 0.494956967943916410, 0.494913521450869200, 0.494870073720538100, 0.494826624753031850, +0.494783174548458660, 0.494739723106927930, 0.494696270428547860, 0.494652816513427130, 0.494609361361673940, 0.494565904973397750, 0.494522447348706820, 0.494478988487709770, +0.494435528390514860, 0.494392067057231540, 0.494348604487968020, 0.494305140682832600, 0.494261675641934680, 0.494218209365382630, 0.494174741853285030, 0.494131273105750220, +0.494087803122887580, 0.494044331904805460, 0.494000859451612480, 0.493957385763416970, 0.493913910840328430, 0.493870434682455060, 0.493826957289905610, 0.493783478662788380, +0.493739998801212890, 0.493696517705287330, 0.493653035375120510, 0.493609551810820720, 0.493566067012497440, 0.493522580980258970, 0.493479093714213670, 0.493435605214471050, +0.493392115481139370, 0.493348624514327430, 0.493305132314143520, 0.493261638880697240, 0.493218144214096770, 0.493174648314451010, 0.493131151181868180, 0.493087652816457890, +0.493044153218328510, 0.493000652387588670, 0.492957150324346840, 0.492913647028712540, 0.492870142500794140, 0.492826636740700320, 0.492783129748539550, 0.492739621524421360, +0.492696112068454100, 0.492652601380746180, 0.492609089461407130, 0.492565576310545430, 0.492522061928269690, 0.492478546314688460, 0.492435029469911250, 0.492391511394046470, +0.492347992087202870, 0.492304471549488920, 0.492260949781014200, 0.492217426781887070, 0.492173902552216440, 0.492130377092110600, 0.492086850401679210, 0.492043322481030720, +0.491999793330273940, 0.491956262949517280, 0.491912731338870310, 0.491869198498441570, 0.491825664428339800, 0.491782129128673470, 0.491738592599552220, 0.491695054841084500, +0.491651515853378740, 0.491607975636544570, 0.491564434190690510, 0.491520891515925320, 0.491477347612357510, 0.491433802480096720, 0.491390256119251470, 0.491346708529930510, +0.491303159712242420, 0.491259609666296840, 0.491216058392202230, 0.491172505890067450, 0.491128952160001080, 0.491085397202112640, 0.491041841016510720, 0.490998283603304220, +0.490954724962601620, 0.490911165094512600, 0.490867603999145700, 0.490824041676609310, 0.490780478127013310, 0.490736913350466040, 0.490693347347076540, 0.490649780116953260, +0.490606211660205900, 0.490562641976942990, 0.490519071067273550, 0.490475498931305990, 0.490431925569150050, 0.490388350980914380, 0.490344775166707770, 0.490301198126638860, +0.490257619860817280, 0.490214040369351730, 0.490170459652351060, 0.490126877709923860, 0.490083294542179800, 0.490039710149227540, 0.489996124531175640, 0.489952537688133790, +0.489908949620210590, 0.489865360327515040, 0.489821769810155680, 0.489778178068242310, 0.489734585101883500, 0.489690990911188170, 0.489647395496265010, 0.489603798857223770, +0.489560200994173020, 0.489516601907221740, 0.489473001596478610, 0.489429400062053320, 0.489385797304054570, 0.489342193322591320, 0.489298588117772160, 0.489254981689706940, +0.489211374038504290, 0.489167765164273180, 0.489124155067122310, 0.489080543747161370, 0.489036931204499150, 0.488993317439244120, 0.488949702451506260, 0.488906086241394140, +0.488862468809016790, 0.488818850154482840, 0.488775230277902210, 0.488731609179383520, 0.488687986859035750, 0.488644363316967640, 0.488600738553289000, 0.488557112568108520, +0.488513485361535270, 0.488469856933677950, 0.488426227284646350, 0.488382596414549170, 0.488338964323495490, 0.488295331011594060, 0.488251696478954610, 0.488208060725686010, +0.488164423751896840, 0.488120785557696950, 0.488077146143195140, 0.488033505508500440, 0.487989863653721660, 0.487946220578968530, 0.487902576284349850, 0.487858930769974770, +0.487815284035951980, 0.487771636082391320, 0.487727986909401610, 0.487684336517091920, 0.487640684905571000, 0.487597032074948760, 0.487553378025333940, 0.487509722756835680, +0.487466066269562680, 0.487422408563624950, 0.487378749639131190, 0.487335089496190140, 0.487291428134911830, 0.487247765555404890, 0.487204101757778560, 0.487160436742141540, +0.487116770508603860, 0.487073103057274250, 0.487029434388261910, 0.486985764501675520, 0.486942093397625180, 0.486898421076219560, 0.486854747537567910, 0.486811072781778990, +0.486767396808962800, 0.486723719619228110, 0.486680041212684100, 0.486636361589439630, 0.486592680749604660, 0.486548998693287940, 0.486505315420598330, 0.486461630931645850, +0.486417945226539310, 0.486374258305387890, 0.486330570168300390, 0.486286880815386900, 0.486243190246756220, 0.486199498462517530, 0.486155805462779700, 0.486112111247652800, +0.486068415817245580, 0.486024719171667340, 0.485981021311026880, 0.485937322235434290, 0.485893621944998360, 0.485849920439828390, 0.485806217720033240, 0.485762513785722940, +0.485718808637006340, 0.485675102273992740, 0.485631394696791010, 0.485587685905511160, 0.485543975900262050, 0.485500264681152650, 0.485456552248292980, 0.485412838601791960, +0.485369123741758830, 0.485325407668302460, 0.485281690381533020, 0.485237971881559260, 0.485194252168490660, 0.485150531242436010, 0.485106809103505400, 0.485063085751807790, +0.485019361187452480, 0.484975635410548390, 0.484931908421205540, 0.484888180219532950, 0.484844450805639930, 0.484800720179635380, 0.484756988341629450, 0.484713255291730980, +0.484669521030049010, 0.484625785556693670, 0.484582048871773810, 0.484538310975398840, 0.484494571867677750, 0.484450831548720540, 0.484407090018636300, 0.484363347277534330, +0.484319603325523600, 0.484275858162714290, 0.484232111789215270, 0.484188364205136000, 0.484144615410585450, 0.484100865405673710, 0.484057114190509840, 0.484013361765203150, +0.483969608129862730, 0.483925853284598640, 0.483882097229519910, 0.483838339964735520, 0.483794581490355700, 0.483750821806489480, 0.483707060913246110, 0.483663298810734780, +0.483619535499065560, 0.483575770978347470, 0.483532005248690000, 0.483488238310202100, 0.483444470162994020, 0.483400700807174730, 0.483356930242853700, 0.483313158470139950, +0.483269385489143720, 0.483225611299973990, 0.483181835902740280, 0.483138059297551550, 0.483094281484518110, 0.483050502463748920, 0.483006722235353460, 0.482962940799440850, +0.482919158156121240, 0.482875374305503760, 0.482831589247697480, 0.482787802982812540, 0.482744015510958190, 0.482700226832243730, 0.482656436946778340, 0.482612645854672230, +0.482568853556034520, 0.482525060050974670, 0.482481265339601780, 0.482437469422026140, 0.482393672298356780, 0.482349873968703270, 0.482306074433174690, 0.482262273691881290, +0.482218471744932260, 0.482174668592436960, 0.482130864234504690, 0.482087058671245570, 0.482043251902768870, 0.481999443929183650, 0.481955634750600160, 0.481911824367127590, +0.481868012778875480, 0.481824199985952940, 0.481780385988470340, 0.481736570786536700, 0.481692754380261660, 0.481648936769754400, 0.481605117955125120, 0.481561297936483060, +0.481517476713937740, 0.481473654287598360, 0.481429830657575220, 0.481386005823977560, 0.481342179786914850, 0.481298352546496280, 0.481254524102832200, 0.481210694456031870, +0.481166863606204360, 0.481123031553460090, 0.481079198297908290, 0.481035363839658450, 0.480991528178819850, 0.480947691315502750, 0.480903853249816490, 0.480860013981870560, +0.480816173511774190, 0.480772331839637860, 0.480728488965570630, 0.480684644889682160, 0.480640799612081730, 0.480596953132879700, 0.480553105452185270, 0.480509256570108070, +0.480465406486757340, 0.480421555202243500, 0.480377702716675740, 0.480333849030163350, 0.480289994142816760, 0.480246138054745140, 0.480202280766058200, 0.480158422276865170, +0.480114562587276470, 0.480070701697401350, 0.480026839607349490, 0.479982976317230140, 0.479939111827153710, 0.479895246137229500, 0.479851379247567210, 0.479807511158276080, +0.479763641869466570, 0.479719771381247940, 0.479675899693729870, 0.479632026807021660, 0.479588152721233780, 0.479544277436475540, 0.479500400952856620, 0.479456523270486270, +0.479412644389475010, 0.479368764309932140, 0.479324883031966960, 0.479281000555689950, 0.479237116881210510, 0.479193232008638230, 0.479149345938082450, 0.479105458669653710, +0.479061570203461350, 0.479017680539615080, 0.478973789678224180, 0.478929897619399190, 0.478886004363249460, 0.478842109909884740, 0.478798214259414380, 0.478754317411948850, +0.478710419367597510, 0.478666520126470150, 0.478622619688676090, 0.478578718054325840, 0.478534815223528810, 0.478490911196394360, 0.478447005973033020, 0.478403099553554200, +0.478359191938067580, 0.478315283126682590, 0.478271373119509850, 0.478227461916658600, 0.478183549518238720, 0.478139635924359600, 0.478095721135131770, 0.478051805150664590, +0.478007887971067970, 0.477963969596451210, 0.477920050026924890, 0.477876129262598480, 0.477832207303581720, 0.477788284149984090, 0.477744359801916100, 0.477700434259487270, +0.477656507522806920, 0.477612579591985660, 0.477568650467132980, 0.477524720148358670, 0.477480788635772200, 0.477436855929484150, 0.477392922029603930, 0.477348986936241390, +0.477305050649506010, 0.477261113169508420, 0.477217174496358030, 0.477173234630164700, 0.477129293571037890, 0.477085351319088250, 0.477041407874425230, 0.476997463237158690, +0.476953517407398110, 0.476909570385254110, 0.476865622170836170, 0.476821672764254190, 0.476777722165617650, 0.476733770375037170, 0.476689817392622280, 0.476645863218482460, +0.476601907852728380, 0.476557951295469520, 0.476513993546815780, 0.476470034606876650, 0.476426074475762850, 0.476382113153583860, 0.476338150640449600, 0.476294186936469580, +0.476250222041754430, 0.476206255956413750, 0.476162288680557430, 0.476118320214295010, 0.476074350557737170, 0.476030379710993490, 0.475986407674173830, 0.475942434447387760, +0.475898460030745980, 0.475854484424358070, 0.475810507628333550, 0.475766529642783150, 0.475722550467816420, 0.475678570103543310, 0.475634588550073400, 0.475590605807517440, +0.475546621875984900, 0.475502636755585850, 0.475458650446429820, 0.475414662948627550, 0.475370674262288630, 0.475326684387523010, 0.475282693324440290, 0.475238701073151190, +0.475194707633765370, 0.475150713006392780, 0.475106717191143060, 0.475062720188126900, 0.475018721997453930, 0.474974722619233790, 0.474930722053577170, 0.474886720300593810, +0.474842717360393630, 0.474798713233086260, 0.474754707918782550, 0.474710701417591970, 0.474666693729624720, 0.474622684854990320, 0.474578674793799620, 0.474534663546162190, +0.474490651112188130, 0.474446637491987070, 0.474402622685669740, 0.474358606693345900, 0.474314589515125560, 0.474270571151118310, 0.474226551601435060, 0.474182530866185450, +0.474138508945479040, 0.474094485839426820, 0.474050461548138350, 0.474006436071723770, 0.473962409410292660, 0.473918381563955940, 0.473874352532823280, 0.473830322317004730, +0.473786290916609950, 0.473742258331749880, 0.473698224562534130, 0.473654189609072850, 0.473610153471475670, 0.473566116149853560, 0.473522077644316090, 0.473478037954973450, +0.473433997081935340, 0.473389955025312610, 0.473345911785215010, 0.473301867361752620, 0.473257821755035170, 0.473213774965173530, 0.473169726992277500, 0.473125677836456760, +0.473081627497822180, 0.473037575976483550, 0.472993523272551010, 0.472949469386134190, 0.472905414317344170, 0.472861358066290590, 0.472817300633083580, 0.472773242017833000, +0.472729182220649640, 0.472685121241643360, 0.472641059080924240, 0.472596995738602140, 0.472552931214787860, 0.472508865509591310, 0.472464798623122630, 0.472420730555491500, +0.472376661306808940, 0.472332590877184770, 0.472288519266728660, 0.472244446475551690, 0.472200372503763620, 0.472156297351474570, 0.472112221018794460, 0.472068143505834150, +0.472024064812703480, 0.471979984939512600, 0.471935903886371410, 0.471891821653390890, 0.471847738240680770, 0.471803653648351310, 0.471759567876512300, 0.471715480925274820, +0.471671392794748620, 0.471627303485043890, 0.471583212996270540, 0.471539121328539590, 0.471495028481960790, 0.471450934456644040, 0.471406839252700330, 0.471362742870239550, +0.471318645309371900, 0.471274546570207230, 0.471230446652856630, 0.471186345557429890, 0.471142243284037250, 0.471098139832788640, 0.471054035203795070, 0.471009929397166460, +0.470965822413012990, 0.470921714251444520, 0.470877604912572250, 0.470833494396505900, 0.470789382703355800, 0.470745269833231890, 0.470701155786245220, 0.470657040562505620, +0.470612924162123410, 0.470568806585208550, 0.470524687831872070, 0.470480567902223810, 0.470436446796373750, 0.470392324514432970, 0.470348201056511430, 0.470304076422719320, +0.470259950613166670, 0.470215823627964550, 0.470171695467222820, 0.470127566131051890, 0.470083435619561620, 0.470039303932863140, 0.469995171071066480, 0.469951037034281820, +0.469906901822619180, 0.469862765436189710, 0.469818627875103310, 0.469774489139470340, 0.469730349229400770, 0.469686208145005670, 0.469642065886395120, 0.469597922453678980, +0.469553777846968450, 0.469509632066373420, 0.469465485112004370, 0.469421336983971150, 0.469377187682385010, 0.469333037207355920, 0.469288885558994230, 0.469244732737409960, +0.469200578742714200, 0.469156423575017020, 0.469112267234428780, 0.469068109721059450, 0.469023951035020260, 0.468979791176421190, 0.468935630145372650, 0.468891467941984660, +0.468847304566368360, 0.468803140018633820, 0.468758974298891020, 0.468714807407251190, 0.468670639343824360, 0.468626470108720940, 0.468582299702050900, 0.468538128123925530, +0.468493955374454820, 0.468449781453749270, 0.468405606361918800, 0.468361430099074770, 0.468317252665327140, 0.468273074060786390, 0.468228894285562580, 0.468184713339766860, +0.468140531223509400, 0.468096347936900640, 0.468052163480050580, 0.468007977853070520, 0.467963791056070500, 0.467919603089160640, 0.467875413952452130, 0.467831223646055120, +0.467787032170080000, 0.467742839524636970, 0.467698645709837210, 0.467654450725790820, 0.467610254572608300, 0.467566057250399740, 0.467521858759276490, 0.467477659099348520, +0.467433458270726470, 0.467389256273520350, 0.467345053107841470, 0.467300848773799960, 0.467256643271506340, 0.467212436601070700, 0.467168228762604390, 0.467124019756217530, +0.467079809582020560, 0.467035598240123690, 0.466991385730638250, 0.466947172053674310, 0.466902957209342110, 0.466858741197752840, 0.466814524019016740, 0.466770305673244350, +0.466726086160545780, 0.466681865481032350, 0.466637643634814300, 0.466593420622002150, 0.466549196442706040, 0.466504971097037370, 0.466460744585106220, 0.466416516907023240, +0.466372288062898540, 0.466328058052843550, 0.466283826876968400, 0.466239594535383660, 0.466195361028199580, 0.466151126355527470, 0.466106890517477560, 0.466062653514160040, +0.466018415345686220, 0.465974176012166450, 0.465929935513711200, 0.465885693850430660, 0.465841451022436350, 0.465797207029838400, 0.465752961872747400, 0.465708715551273630, +0.465664468065528470, 0.465620219415622150, 0.465575969601665250, 0.465531718623768080, 0.465487466482041980, 0.465443213176597200, 0.465398958707544390, 0.465354703074993770, +0.465310446279056820, 0.465266188319843730, 0.465221929197464800, 0.465177668912031440, 0.465133407463653890, 0.465089144852442850, 0.465044881078508550, 0.465000616141962420, +0.464956350042914750, 0.464912082781476220, 0.464867814357757090, 0.464823544771868770, 0.464779274023921660, 0.464735002114026300, 0.464690729042293080, 0.464646454808833430, +0.464602179413757640, 0.464557902857176410, 0.464513625139200030, 0.464469346259939960, 0.464425066219506520, 0.464380785018010440, 0.464336502655562030, 0.464292219132272700, +0.464247934448252850, 0.464203648603612740, 0.464159361598463940, 0.464115073432916750, 0.464070784107081860, 0.464026493621069570, 0.463982201974991510, 0.463937909168957880, +0.463893615203079530, 0.463849320077466710, 0.463805023792230990, 0.463760726347482780, 0.463716427743332660, 0.463672127979891100, 0.463627827057269630, 0.463583524975578590, +0.463539221734928730, 0.463494917335430470, 0.463450611777195260, 0.463406305060333530, 0.463361997184955630, 0.463317688151173190, 0.463273377959096460, 0.463229066608836340, +0.463184754100503080, 0.463140440434208430, 0.463096125610062580, 0.463051809628176490, 0.463007492488660470, 0.462963174191626080, 0.462918854737183800, 0.462874534125444330, +0.462830212356518170, 0.462785889430516850, 0.462741565347550840, 0.462697240107730890, 0.462652913711167460, 0.462608586157972120, 0.462564257448255360, 0.462519927582127510, +0.462475596559700270, 0.462431264381084010, 0.462386931046389620, 0.462342596555727510, 0.462298260909209280, 0.462253924106945380, 0.462209586149046730, 0.462165247035623670, +0.462120906766787910, 0.462076565342649850, 0.462032222763320400, 0.461987879028910030, 0.461943534139530320, 0.461899188095291740, 0.461854840896305240, 0.461810492542681250, +0.461766143034531400, 0.461721792371966200, 0.461677440555096130, 0.461633087584032880, 0.461588733458886850, 0.461544378179769010, 0.461500021746789830, 0.461455664160061010, +0.461411305419693050, 0.461366945525796770, 0.461322584478482790, 0.461278222277862690, 0.461233858924047060, 0.461189494417146790, 0.461145128757272370, 0.461100761944535530, +0.461056393979046800, 0.461012024860917020, 0.460967654590256850, 0.460923283167177960, 0.460878910591790810, 0.460834536864206390, 0.460790161984535260, 0.460745785952889060, +0.460701408769378480, 0.460657030434113930, 0.460612650947207210, 0.460568270308768850, 0.460523888518909850, 0.460479505577740700, 0.460435121485373190, 0.460390736241917900, +0.460346349847485740, 0.460301962302187340, 0.460257573606134400, 0.460213183759437540, 0.460168792762207680, 0.460124400614555510, 0.460080007316592710, 0.460035612868429870, +0.459991217270178000, 0.459946820521947740, 0.459902422623850780, 0.459858023575997750, 0.459813623378499290, 0.459769222031467200, 0.459724819535011990, 0.459680415889244800, +0.459636011094276100, 0.459591605150217800, 0.459547198057180530, 0.459502789815275200, 0.459458380424612510, 0.459413969885304310, 0.459369558197461170, 0.459325145361194120, +0.459280731376613790, 0.459236316243832100, 0.459191899962959560, 0.459147482534107250, 0.459103063957385870, 0.459058644232907260, 0.459014223360782010, 0.458969801341120750, +0.458925378174035450, 0.458880953859636730, 0.458836528398035570, 0.458792101789342710, 0.458747674033670010, 0.458703245131128090, 0.458658815081828040, 0.458614383885880610, +0.458569951543397580, 0.458525518054489710, 0.458481083419268020, 0.458436647637843200, 0.458392210710327210, 0.458347772636830690, 0.458303333417464710, 0.458258893052340020, +0.458214451541568480, 0.458170008885260770, 0.458125565083528090, 0.458081120136481110, 0.458036674044231710, 0.457992226806890610, 0.457947778424568570, 0.457903328897377450, +0.457858878225428030, 0.457814426408831410, 0.457769973447698380, 0.457725519342140730, 0.457681064092269330, 0.457636607698195250, 0.457592150160029240, 0.457547691477883320, +0.457503231651868130, 0.457458770682094840, 0.457414308568674210, 0.457369845311718260, 0.457325380911337680, 0.457280915367643650, 0.457236448680746920, 0.457191980850759460, +0.457147511877792070, 0.457103041761955490, 0.457058570503361740, 0.457014098102121510, 0.456969624558346050, 0.456925149872146160, 0.456880674043633750, 0.456836197072919670, +0.456791718960115110, 0.456747239705330820, 0.456702759308678870, 0.456658277770270020, 0.456613795090215490, 0.456569311268626040, 0.456524826305613700, 0.456480340201289300, +0.456435852955764110, 0.456391364569148810, 0.456346875041555520, 0.456302384373095060, 0.456257892563878280, 0.456213399614017080, 0.456168905523622440, 0.456124410292805480, +0.456079913921677180, 0.456035416410349450, 0.455990917758933190, 0.455946417967539600, 0.455901917036279580, 0.455857414965265220, 0.455812911754607250, 0.455768407404417040, +0.455723901914805380, 0.455679395285884410, 0.455634887517764930, 0.455590378610558230, 0.455545868564375180, 0.455501357379327840, 0.455456845055527140, 0.455412331593083920, +0.455367816992110260, 0.455323301252717080, 0.455278784375015620, 0.455234266359116850, 0.455189747205132780, 0.455145226913174330, 0.455100705483352850, 0.455056182915779150, +0.455011659210565410, 0.454967134367822550, 0.454922608387661850, 0.454878081270194250, 0.454833553015531800, 0.454789023623785480, 0.454744493095066590, 0.454699961429486100, +0.454655428627156080, 0.454610894688187490, 0.454566359612691650, 0.454521823400779570, 0.454477286052563270, 0.454432747568153770, 0.454388207947662050, 0.454343667191200170, +0.454299125298879110, 0.454254582270810230, 0.454210038107104530, 0.454165492807874100, 0.454120946373229970, 0.454076398803283490, 0.454031850098145560, 0.453987300257928440, +0.453942749282743030, 0.453898197172700800, 0.453853643927912660, 0.453809089548490810, 0.453764534034546250, 0.453719977386190300, 0.453675419603534080, 0.453630860686689670, +0.453586300635768100, 0.453541739450880390, 0.453497177132138720, 0.453452613679654120, 0.453408049093537990, 0.453363483373901370, 0.453318916520856370, 0.453274348534514090, +0.453229779414985990, 0.453185209162383030, 0.453140637776817400, 0.453096065258400240, 0.453051491607242900, 0.453006916823456400, 0.452962340907153040, 0.452917763858443790, +0.452873185677440170, 0.452828606364253150, 0.452784025918995030, 0.452739444341776880, 0.452694861632709670, 0.452650277791905750, 0.452605692819476100, 0.452561106715532240, +0.452516519480185180, 0.452471931113547220, 0.452427341615729510, 0.452382750986843380, 0.452338159226999990, 0.452293566336311570, 0.452248972314889250, 0.452204377162844510, +0.452159780880288460, 0.452115183467333310, 0.452070584924090250, 0.452025985250670670, 0.451981384447185770, 0.451936782513747800, 0.451892179450467830, 0.451847575257457450, +0.451802969934827710, 0.451758363482690990, 0.451713755901158360, 0.451669147190340900, 0.451624537350351020, 0.451579926381299730, 0.451535314283298680, 0.451490701056458940, +0.451446086700892810, 0.451401471216711480, 0.451356854604026470, 0.451312236862948970, 0.451267617993591220, 0.451222997996064470, 0.451178376870480180, 0.451133754616949540, +0.451089131235584970, 0.451044506726497540, 0.450999881089798830, 0.450955254325600070, 0.450910626434013530, 0.450865997415150430, 0.450821367269121920, 0.450776735996040460, +0.450732103596017120, 0.450687470069163490, 0.450642835415590800, 0.450598199635411420, 0.450553562728736590, 0.450508924695677770, 0.450464285536346320, 0.450419645250854540, +0.450375003839313610, 0.450330361301835180, 0.450285717638530420, 0.450241072849511810, 0.450196426934890540, 0.450151779894778170, 0.450107131729285960, 0.450062482438526310, +0.450017832022610480, 0.449973180481649640, 0.449928527815756260, 0.449883874025041540, 0.449839219109617160, 0.449794563069594310, 0.449749905905085460, 0.449705247616201900, +0.449660588203055160, 0.449615927665756530, 0.449571266004418550, 0.449526603219152390, 0.449481939310069690, 0.449437274277281750, 0.449392608120901040, 0.449347940841038800, +0.449303272437806660, 0.449258602911316030, 0.449213932261679220, 0.449169260489007630, 0.449124587593412450, 0.449079913575006210, 0.449035238433900200, 0.448990562170206110, +0.448945884784035190, 0.448901206275499950, 0.448856526644711710, 0.448811845891782140, 0.448767164016822600, 0.448722481019945500, 0.448677796901262250, 0.448633111660884430, +0.448588425298923510, 0.448543737815491890, 0.448499049210700880, 0.448454359484662330, 0.448409668637487440, 0.448364976669288760, 0.448320283580177670, 0.448275589370265900, +0.448230894039664710, 0.448186197588486710, 0.448141500016843160, 0.448096801324845530, 0.448052101512606270, 0.448007400580236750, 0.447962698527848760, 0.447917995355553540, +0.447873291063463800, 0.447828585651690810, 0.447783879120346400, 0.447739171469541840, 0.447694462699389780, 0.447649752810001580, 0.447605041801488970, 0.447560329673963360, +0.447515616427537340, 0.447470902062322260, 0.447426186578429920, 0.447381469975971720, 0.447336752255060250, 0.447292033415806920, 0.447247313458323080, 0.447202592382721360, +0.447157870189113130, 0.447113146877610280, 0.447068422448324120, 0.447023696901367340, 0.446978970236851290, 0.446934242454887830, 0.446889513555588370, 0.446844783539065540, +0.446800052405430690, 0.446755320154795740, 0.446710586787272100, 0.446665852302972400, 0.446621116702008050, 0.446576379984490960, 0.446531642150532480, 0.446486903200245260, +0.446442163133740800, 0.446397421951130580, 0.446352679652527170, 0.446307936238042050, 0.446263191707787110, 0.446218446061873770, 0.446173699300414730, 0.446128951423521490, +0.446084202431305810, 0.446039452323879200, 0.445994701101354420, 0.445949948763842860, 0.445905195311456450, 0.445860440744306640, 0.445815685062506130, 0.445770928266166380, +0.445726170355399350, 0.445681411330316470, 0.445636651191030460, 0.445591889937652810, 0.445547127570295460, 0.445502364089069900, 0.445457599494088810, 0.445412833785463700, +0.445368066963306160, 0.445323299027728830, 0.445278529978843260, 0.445233759816761330, 0.445188988541594610, 0.445144216153455840, 0.445099442652456550, 0.445054668038708630, +0.445009892312323630, 0.444965115473414330, 0.444920337522092200, 0.444875558458469210, 0.444830778282656990, 0.444785996994768170, 0.444741214594914390, 0.444696431083207560, +0.444651646459759300, 0.444606860724682250, 0.444562073878088100, 0.444517285920088320, 0.444472496850795760, 0.444427706670321940, 0.444382915378778890, 0.444338122976278120, +0.444293329462932430, 0.444248534838853460, 0.444203739104153120, 0.444158942258943030, 0.444114144303335960, 0.444069345237443570, 0.444024545061377840, 0.443979743775250290, +0.443934941379173830, 0.443890137873259980, 0.443845333257620820, 0.443800527532367930, 0.443755720697614040, 0.443710912753470970, 0.443666103700050110, 0.443621293537464430, +0.443576482265825580, 0.443531669885245450, 0.443486856395835740, 0.443442041797709300, 0.443397226090977810, 0.443352409275753200, 0.443307591352147200, 0.443262772320272560, +0.443217952180241070, 0.443173130932164650, 0.443128308576155040, 0.443083485112324980, 0.443038660540786280, 0.442993834861650890, 0.442949008075030570, 0.442904180181038050, +0.442859351179785140, 0.442814521071383860, 0.442769689855945840, 0.442724857533583980, 0.442680024104410040, 0.442635189568535590, 0.442590353926073600, 0.442545517177135690, +0.442500679321834010, 0.442455840360280240, 0.442411000292587230, 0.442366159118866730, 0.442321316839230870, 0.442276473453791290, 0.442231628962660940, 0.442186783365951520, +0.442141936663775100, 0.442097088856243490, 0.442052239943469540, 0.442007389925564990, 0.441962538802641970, 0.441917686574812170, 0.441872833242188620, 0.441827978804882950, +0.441783123263006890, 0.441738266616673480, 0.441693408865994400, 0.441648550011081780, 0.441603690052047360, 0.441558828989004170, 0.441513966822063900, 0.441469103551338670, +0.441424239176940290, 0.441379373698981730, 0.441334507117574770, 0.441289639432831500, 0.441244770644863730, 0.441199900753784460, 0.441155029759705390, 0.441110157662738810, +0.441065284462996370, 0.441020410160591180, 0.440975534755634950, 0.440930658248239460, 0.440885780638517740, 0.440840901926581540, 0.440796022112543100, 0.440751141196514260, +0.440706259178607900, 0.440661376058935910, 0.440616491837610480, 0.440571606514743420, 0.440526720090447740, 0.440481832564835310, 0.440436943938018240, 0.440392054210108410, +0.440347163381218880, 0.440302271451461450, 0.440257378420948310, 0.440212484289791320, 0.440167589058103490, 0.440122692725996740, 0.440077795293582870, 0.440032896760974900, +0.439987997128284620, 0.439943096395624460, 0.439898194563106080, 0.439853291630842640, 0.439808387598945970, 0.439763482467528330, 0.439718576236701570, 0.439673668906578770, +0.439628760477271840, 0.439583850948892960, 0.439538940321554050, 0.439494028595368240, 0.439449115770447320, 0.439404201846903650, 0.439359286824849040, 0.439314370704396610, +0.439269453485658270, 0.439224535168746270, 0.439179615753772570, 0.439134695240850190, 0.439089773630091110, 0.439044850921607170, 0.438999927115511560, 0.438955002211916080, +0.438910076210933090, 0.438865149112674490, 0.438820220917253480, 0.438775291624781900, 0.438730361235372070, 0.438685429749135940, 0.438640497166186640, 0.438595563486636090, +0.438550628710596630, 0.438505692838180190, 0.438460755869499950, 0.438415817804667820, 0.438370878643796150, 0.438325938386996850, 0.438280997034383110, 0.438236054586066900, +0.438191111042160130, 0.438146166402775980, 0.438101220668026430, 0.438056273838023870, 0.438011325912880170, 0.437966376892708560, 0.437921426777621030, 0.437876475567729910, +0.437831523263147230, 0.437786569863986120, 0.437741615370358550, 0.437696659782376980, 0.437651703100153390, 0.437606745323800890, 0.437561786453431580, 0.437516826489157740, +0.437471865431091510, 0.437426903279345970, 0.437381940034033130, 0.437336975695265140, 0.437292010263155060, 0.437247043737814920, 0.437202076119357190, 0.437157107407893930, +0.437112137603538230, 0.437067166706402220, 0.437022194716598260, 0.436977221634238470, 0.436932247459435990, 0.436887272192302890, 0.436842295832951640, 0.436797318381494220, +0.436752339838043900, 0.436707360202712720, 0.436662379475613150, 0.436617397656857250, 0.436572414746558280, 0.436527430744828250, 0.436482445651779630, 0.436437459467524490, +0.436392472192176080, 0.436347483825846540, 0.436302494368647880, 0.436257503820693390, 0.436212512182095110, 0.436167519452965560, 0.436122525633416860, 0.436077530723562200, +0.436032534723513720, 0.435987537633383880, 0.435942539453284820, 0.435897540183329820, 0.435852539823630980, 0.435807538374300750, 0.435762535835451330, 0.435717532207195890, +0.435672527489646690, 0.435627521682916130, 0.435582514787116400, 0.435537506802360750, 0.435492497728761360, 0.435447487566430310, 0.435402476315480960, 0.435357463976025370, +0.435312450548176190, 0.435267436032045430, 0.435222420427746500, 0.435177403735391540, 0.435132385955093070, 0.435087367086963220, 0.435042347131115340, 0.434997326087661560, +0.434952303956714530, 0.434907280738386300, 0.434862256432790310, 0.434817231040038670, 0.434772204560243900, 0.434727176993518260, 0.434682148339975090, 0.434637118599726540, +0.434592087772884770, 0.434547055859563210, 0.434502022859873990, 0.434456988773929690, 0.434411953601842590, 0.434366917343725960, 0.434321879999692020, 0.434276841569853410, +0.434231802054322270, 0.434186761453212060, 0.434141719766634960, 0.434096676994703500, 0.434051633137529980, 0.434006588195227800, 0.433961542167909110, 0.433916495055686580, +0.433871446858672400, 0.433826397576980050, 0.433781347210721650, 0.433736295760009490, 0.433691243224957000, 0.433646189605676410, 0.433601134902280360, 0.433556079114881090, +0.433511022243591950, 0.433465964288525300, 0.433420905249793760, 0.433375845127509480, 0.433330783921786090, 0.433285721632735650, 0.433240658260470980, 0.433195593805104200, +0.433150528266748880, 0.433105461645517220, 0.433060393941521900, 0.433015325154875230, 0.432970255285690610, 0.432925184334080390, 0.432880112300157160, 0.432835039184033270, +0.432789964985822170, 0.432744889705636180, 0.432699813343587590, 0.432654735899789810, 0.432609657374355250, 0.432564577767396490, 0.432519497079025930, 0.432474415309356990, +0.432429332458502010, 0.432384248526573760, 0.432339163513684450, 0.432294077419947630, 0.432248990245475580, 0.432203901990381110, 0.432158812654776460, 0.432113722238775200, +0.432068630742489630, 0.432023538166032450, 0.431978444509516060, 0.431933349773053920, 0.431888253956758450, 0.431843157060741940, 0.431798059085117920, 0.431752960029998740, +0.431707859895497200, 0.431662758681725540, 0.431617656388797450, 0.431572553016825230, 0.431527448565921570, 0.431482343036198920, 0.431437236427770820, 0.431392128740749610, +0.431347019975248100, 0.431301910131378640, 0.431256799209254750, 0.431211687208988950, 0.431166574130693870, 0.431121459974481980, 0.431076344740466800, 0.431031228428760790, +0.430986111039476320, 0.430940992572726940, 0.430895873028625140, 0.430850752407283600, 0.430805630708814780, 0.430760507933332320, 0.430715384080948560, 0.430670259151776370, +0.430625133145928100, 0.430580006063517430, 0.430534877904656720, 0.430489748669458830, 0.430444618358036160, 0.430399486970502340, 0.430354354506969790, 0.430309220967551360, +0.430264086352359520, 0.430218950661507840, 0.430173813895108780, 0.430128676053275150, 0.430083537136119460, 0.430038397143755360, 0.429993256076295240, 0.429948113933851570, +0.429902970716538050, 0.429857826424467070, 0.429812681057751500, 0.429767534616503850, 0.429722387100837770, 0.429677238510865760, 0.429632088846700620, 0.429586938108454830, +0.429541786296242120, 0.429496633410174970, 0.429451479450366210, 0.429406324416928330, 0.429361168309975060, 0.429316011129618870, 0.429270852875972660, 0.429225693549148910, +0.429180533149261360, 0.429135371676422460, 0.429090209130744690, 0.429045045512341850, 0.428999880821326340, 0.428954715057811190, 0.428909548221908800, 0.428864380313732970, +0.428819211333396180, 0.428774041281011380, 0.428728870156691030, 0.428683697960548950, 0.428638524692697590, 0.428593350353249970, 0.428548174942318560, 0.428502998460017050, +0.428457820906458120, 0.428412642281754570, 0.428367462586019100, 0.428322281819365320, 0.428277099981905830, 0.428231917073753190, 0.428186733095021200, 0.428141548045822330, +0.428096361926269600, 0.428051174736475580, 0.428005986476554020, 0.427960797146617500, 0.427915606746778980, 0.427870415277151030, 0.427825222737847450, 0.427780029128980830, +0.427734834450664130, 0.427689638703009910, 0.427644441886132040, 0.427599244000143040, 0.427554045045155930, 0.427508845021283330, 0.427463643928639000, 0.427418441767335570, +0.427373238537485600, 0.427328034239202960, 0.427282828872600270, 0.427237622437790450, 0.427192414934886190, 0.427147206364001330, 0.427101996725248400, 0.427056786018740530, +0.427011574244590240, 0.426966361402911500, 0.426921147493816770, 0.426875932517419230, 0.426830716473831420, 0.426785499363167230, 0.426740281185539310, 0.426695061941060660, +0.426649841629843930, 0.426604620252003080, 0.426559397807650620, 0.426514174296899640, 0.426468949719862880, 0.426423724076654130, 0.426378497367386090, 0.426333269592171380, +0.426288040751123860, 0.426242810844356280, 0.426197579871981700, 0.426152347834112710, 0.426107114730863320, 0.426061880562346120, 0.426016645328674170, 0.425971409029960280, +0.425926171666318190, 0.425880933237860750, 0.425835693744700930, 0.425790453186951470, 0.425745211564726280, 0.425699968878138100, 0.425654725127299960, 0.425609480312324600, +0.425564234433325970, 0.425518987490416720, 0.425473739483709650, 0.425428490413318590, 0.425383240279356310, 0.425337989081935930, 0.425292736821170190, 0.425247483497173010, +0.425202229110057120, 0.425156973659935660, 0.425111717146921360, 0.425066459571128150, 0.425021200932668820, 0.424975941231656500, 0.424930680468203870, 0.424885418642424960, +0.424840155754432570, 0.424794891804339710, 0.424749626792259250, 0.424704360718305090, 0.424659093582590070, 0.424613825385226910, 0.424568556126329600, 0.424523285806010840, +0.424478014424383930, 0.424432741981561560, 0.424387468477657740, 0.424342193912785270, 0.424296918287057290, 0.424251641600586590, 0.424206363853487200, 0.424161085045871910, +0.424115805177853910, 0.424070524249546000, 0.424025242261062200, 0.423979959212515240, 0.423934675104018440, 0.423889389935684540, 0.423844103707627540, 0.423798816419960310, +0.423753528072795980, 0.423708238666247520, 0.423662948200428770, 0.423617656675452700, 0.423572364091432120, 0.423527070448480980, 0.423481775746712140, 0.423436479986238900, +0.423391183167174060, 0.423345885289631680, 0.423300586353724580, 0.423255286359566000, 0.423209985307268780, 0.423164683196947060, 0.423119380028713580, 0.423074075802681690, +0.423028770518964150, 0.422983464177675130, 0.422938156778927430, 0.422892848322834360, 0.422847538809508760, 0.422802228239064710, 0.422756916611615070, 0.422711603927272810, +0.422666290186151870, 0.422620975388365240, 0.422575659534026150, 0.422530342623247510, 0.422485024656143400, 0.422439705632826790, 0.422394385553410860, 0.422349064418008570, +0.422303742226734060, 0.422258418979700120, 0.422213094677020230, 0.422167769318807120, 0.422122442905175030, 0.422077115436236830, 0.422031786912105800, 0.421986457332894970, +0.421941126698718360, 0.421895795009688930, 0.421850462265919600, 0.421805128467524550, 0.421759793614616680, 0.421714457707309310, 0.421669120745715390, 0.421623782729949050, +0.421578443660123310, 0.421533103536351430, 0.421487762358746350, 0.421442420127422330, 0.421397076842492220, 0.421351732504069430, 0.421306387112266920, 0.421261040667198830, +0.421215693168978170, 0.421170344617718240, 0.421124995013532070, 0.421079644356533780, 0.421034292646836390, 0.420988939884552880, 0.420943586069797430, 0.420898231202682990, +0.420852875283322990, 0.420807518311830390, 0.420762160288319420, 0.420716801212903060, 0.420671441085694650, 0.420626079906807230, 0.420580717676355080, 0.420535354394451060, +0.420489990061208680, 0.420444624676740930, 0.420399258241162030, 0.420353890754585010, 0.420308522217123230, 0.420263152628889750, 0.420217781989998760, 0.420172410300563350, +0.420127037560696910, 0.420081663770512430, 0.420036288930124240, 0.419990913039645310, 0.419945536099188720, 0.419900158108868660, 0.419854779068798260, 0.419809398979090860, +0.419764017839859560, 0.419718635651218640, 0.419673252413281130, 0.419627868126160490, 0.419582482789969740, 0.419537096404823230, 0.419491708970833990, 0.419446320488115420, +0.419400930956780660, 0.419355540376944000, 0.419310148748718530, 0.419264756072217640, 0.419219362347554410, 0.419173967574843260, 0.419128571754197150, 0.419083174885729210, +0.419037776969553740, 0.418992378005783820, 0.418946977994532950, 0.418901576935914290, 0.418856174830042010, 0.418810771677029350, 0.418765367476989720, 0.418719962230036320, +0.418674555936283390, 0.418629148595844050, 0.418583740208831880, 0.418538330775359900, 0.418492920295542530, 0.418447508769492880, 0.418402096197324440, 0.418356682579150370, +0.418311267915084940, 0.418265852205241370, 0.418220435449732810, 0.418175017648673540, 0.418129598802176710, 0.418084178910355870, 0.418038757973324240, 0.417993335991196040, +0.417947912964084570, 0.417902488892103300, 0.417857063775365360, 0.417811637613985210, 0.417766210408075930, 0.417720782157751160, 0.417675352863124020, 0.417629922524308920, +0.417584491141418990, 0.417539058714567810, 0.417493625243868630, 0.417448190729435790, 0.417402755171382420, 0.417357318569822220, 0.417311880924868260, 0.417266442236635060, +0.417221002505235690, 0.417175561730783460, 0.417130119913392720, 0.417084677053176700, 0.417039233150248990, 0.416993788204722770, 0.416948342216712450, 0.416902895186331330, +0.416857447113692940, 0.416811997998910560, 0.416766547842098540, 0.416721096643370200, 0.416675644402839110, 0.416630191120618500, 0.416584736796822790, 0.416539281431565270, +0.416493825024959520, 0.416448367577118840, 0.416402909088157580, 0.416357449558189100, 0.416311988987326580, 0.416266527375684480, 0.416221064723376110, 0.416175601030515040, +0.416130136297214570, 0.416084670523589160, 0.416039203709752060, 0.415993735855817000, 0.415948266961897130, 0.415902797028107060, 0.415857326054559940, 0.415811854041369560, +0.415766380988649100, 0.415720906896513090, 0.415675431765074880, 0.415629955594448040, 0.415584478384745880, 0.415539000136082970, 0.415493520848572550, 0.415448040522327920, +0.415402559157463550, 0.415357076754092840, 0.415311593312329420, 0.415266108832286650, 0.415220623314078940, 0.415175136757819700, 0.415129649163622660, 0.415084160531601080, +0.415038670861869460, 0.414993180154541170, 0.414947688409729950, 0.414902195627549100, 0.414856701808113180, 0.414811206951535500, 0.414765711057929810, 0.414720214127409390, +0.414674716160088890, 0.414629217156081590, 0.414583717115500850, 0.414538216038461190, 0.414492713925076030, 0.414447210775459040, 0.414401706589723640, 0.414356201367984400, +0.414310695110354620, 0.414265187816948100, 0.414219679487878250, 0.414174170123259580, 0.414128659723205510, 0.414083148287829770, 0.414037635817245730, 0.413992122311568010, +0.413946607770910020, 0.413901092195385510, 0.413855575585107830, 0.413810057940191660, 0.413764539260750300, 0.413719019546897600, 0.413673498798746990, 0.413627977016413020, +0.413582454200009050, 0.413536930349648610, 0.413491405465446220, 0.413445879547515330, 0.413400352595969740, 0.413354824610922820, 0.413309295592489300, 0.413263765540782540, +0.413218234455916320, 0.413172702338004130, 0.413127169187160580, 0.413081635003499150, 0.413036099787133570, 0.412990563538177420, 0.412945026256745170, 0.412899487942950450, +0.412853948596906940, 0.412808408218728160, 0.412762866808528810, 0.412717324366422220, 0.412671780892521990, 0.412626236386942680, 0.412580690849797760, 0.412535144281201140, +0.412489596681266280, 0.412444048050107760, 0.412398498387839150, 0.412352947694574310, 0.412307395970426700, 0.412261843215511010, 0.412216289429940710, 0.412170734613829690, +0.412125178767291380, 0.412079621890440560, 0.412034063983390710, 0.411988505046255670, 0.411942945079148970, 0.411897384082185290, 0.411851822055478210, 0.411806258999141140, +0.411760694913288820, 0.411715129798034760, 0.411669563653492890, 0.411623996479776650, 0.411578428277000920, 0.411532859045279030, 0.411487288784725070, 0.411441717495452440, +0.411396145177575890, 0.411350571831209040, 0.411304997456465700, 0.411259422053459500, 0.411213845622305170, 0.411168268163116190, 0.411122689676006570, 0.411077110161089780, +0.411031529618480660, 0.410985948048292690, 0.410940365450639890, 0.410894781825635710, 0.410849197173395020, 0.410803611494031330, 0.410758024787658220, 0.410712437054390420, +0.410666848294341520, 0.410621258507625540, 0.410575667694355990, 0.410530075854647680, 0.410484482988614170, 0.410438889096369500, 0.410393294178027170, 0.410347698233701990, +0.410302101263507580, 0.410256503267557910, 0.410210904245966620, 0.410165304198848450, 0.410119703126316960, 0.410074101028486290, 0.410028497905469910, 0.409982893757382730, +0.409937288584338310, 0.409891682386450240, 0.409846075163833370, 0.409800466916601320, 0.409754857644868130, 0.409709247348747360, 0.409663636028353870, 0.409618023683801350, +0.409572410315203690, 0.409526795922674660, 0.409481180506329030, 0.409435564066280460, 0.409389946602642940, 0.409344328115530180, 0.409298708605056960, 0.409253088071337030, +0.409207466514484360, 0.409161843934612630, 0.409116220331836640, 0.409070595706270130, 0.409024970058026740, 0.408979343387221360, 0.408933715693967580, 0.408888086978379530, +0.408842457240570830, 0.408796826480656410, 0.408751194698749880, 0.408705561894965430, 0.408659928069416640, 0.408614293222218430, 0.408568657353484520, 0.408523020463328950, +0.408477382551865390, 0.408431743619208810, 0.408386103665472840, 0.408340462690771680, 0.408294820695218890, 0.408249177678929490, 0.408203533642017170, 0.408157888584595560, +0.408112242506779630, 0.408066595408683120, 0.408020947290420100, 0.407975298152104370, 0.407929647993850730, 0.407883996815772980, 0.407838344617985290, 0.407792691400601260, +0.407747037163735950, 0.407701381907503050, 0.407655725632016690, 0.407610068337390610, 0.407564410023739780, 0.407518750691177880, 0.407473090339819100, 0.407427428969777240, +0.407381766581167200, 0.407336103174102740, 0.407290438748698020, 0.407244773305066810, 0.407199106843324050, 0.407153439363583500, 0.407107770865959010, 0.407062101350565420, +0.407016430817516650, 0.406970759266926770, 0.406925086698909590, 0.406879413113580110, 0.406833738511052090, 0.406788062891439710, 0.406742386254856810, 0.406696708601418320, +0.406651029931238030, 0.406605350244430230, 0.406559669541108560, 0.406513987821388200, 0.406468305085382840, 0.406422621333206720, 0.406376936564973650, 0.406331250780798630, +0.406285563980795520, 0.406239876165078060, 0.406194187333761340, 0.406148497486959140, 0.406102806624785650, 0.406057114747354790, 0.406011421854781560, 0.405965727947179720, +0.405920033024663620, 0.405874337087346990, 0.405828640135344920, 0.405782942168771310, 0.405737243187740290, 0.405691543192365780, 0.405645842182762780, 0.405600140159045220, +0.405554437121327270, 0.405508733069722850, 0.405463028004347030, 0.405417321925313600, 0.405371614832736480, 0.405325906726730690, 0.405280197607410190, 0.405234487474889160, +0.405188776329281520, 0.405143064170702340, 0.405097350999265470, 0.405051636815085270, 0.405005921618275530, 0.404960205408951390, 0.404914488187226810, 0.404868769953215910, +0.404823050707032730, 0.404777330448792330, 0.404731609178608620, 0.404685886896595900, 0.404640163602868030, 0.404594439297540130, 0.404548713980726170, 0.404502987652540390, +0.404457260313096760, 0.404411531962510400, 0.404365802600895160, 0.404320072228365080, 0.404274340845035160, 0.404228608451019430, 0.404182875046432130, 0.404137140631387280, +0.404091405206000010, 0.404045668770384170, 0.403999931324654170, 0.403954192868923980, 0.403908453403308660, 0.403862712927922200, 0.403816971442878980, 0.403771228948292980, +0.403725485444279220, 0.403679740930951820, 0.403633995408425040, 0.403588248876812830, 0.403542501336230490, 0.403496752786791810, 0.403451003228610880, 0.403405252661802830, +0.403359501086481660, 0.403313748502761750, 0.403267994910757040, 0.403222240310582790, 0.403176484702352900, 0.403130728086181830, 0.403084970462183500, 0.403039211830473200, +0.402993452191164780, 0.402947691544372820, 0.402901929890211170, 0.402856167228795140, 0.402810403560238670, 0.402764638884656190, 0.402718873202161710, 0.402673106512870470, +0.402627338816896440, 0.402581570114353690, 0.402535800405357360, 0.402490029690021570, 0.402444257968460730, 0.402398485240788810, 0.402352711507121100, 0.402306936767571570, +0.402261161022254730, 0.402215384271284560, 0.402169606514776400, 0.402123827752844170, 0.402078047985602370, 0.402032267213165040, 0.401986485435647470, 0.401940702653163670, +0.401894918865828120, 0.401849134073754890, 0.401803348277059160, 0.401757561475855120, 0.401711773670256790, 0.401665984860379350, 0.401620195046337000, 0.401574404228244200, +0.401528612406214900, 0.401482819580364520, 0.401437025750807140, 0.401391230917657100, 0.401345435081028660, 0.401299638241036980, 0.401253840397796210, 0.401208041551420870, +0.401162241702025020, 0.401116440849723980, 0.401070638994631800, 0.401024836136863020, 0.400979032276531750, 0.400933227413753370, 0.400887421548641820, 0.400841614681311800, +0.400795806811877320, 0.400749997940453680, 0.400704188067155080, 0.400658377192095630, 0.400612565315390580, 0.400566752437154170, 0.400520938557500870, 0.400475123676544810, +0.400429307794401330, 0.400383490911184580, 0.400337673027009120, 0.400291854141989090, 0.400246034256239840, 0.400200213369875430, 0.400154391483010570, 0.400108568595759270, +0.400062744708236990, 0.400016919820557810, 0.399971093932836360, 0.399925267045186770, 0.399879439157724390, 0.399833610270563470, 0.399787780383818070, 0.399741949497603610, +0.399696117612034330, 0.399650284727224750, 0.399604450843288990, 0.399558615960342590, 0.399512780078499610, 0.399466943197874680, 0.399421105318581990, 0.399375266440736900, +0.399329426564453690, 0.399283585689846950, 0.399237743817030750, 0.399191900946120670, 0.399146057077230830, 0.399100212210475810, 0.399054366345969860, 0.399008519483828430, +0.398962671624165710, 0.398916822767095840, 0.398870972912734380, 0.398825122061195470, 0.398779270212593740, 0.398733417367043490, 0.398687563524660000, 0.398641708685557710, +0.398595852849851050, 0.398549996017654400, 0.398504138189083200, 0.398458279364251600, 0.398412419543274330, 0.398366558726265580, 0.398320696913340880, 0.398274834104614390, +0.398228970300200820, 0.398183105500214460, 0.398137239704770720, 0.398091372913983890, 0.398045505127968600, 0.397999636346839160, 0.397953766570711020, 0.397907895799698490, +0.397862024033915800, 0.397816151273478470, 0.397770277518500750, 0.397724402769097320, 0.397678527025382480, 0.397632650287471750, 0.397586772555479420, 0.397540893829520130, +0.397495014109708170, 0.397449133396159120, 0.397403251688987210, 0.397357368988307200, 0.397311485294233320, 0.397265600606881150, 0.397219714926364990, 0.397173828252799570, +0.397127940586299130, 0.397082051926979260, 0.397036162274954250, 0.396990271630338450, 0.396944379993247390, 0.396898487363795350, 0.396852593742097080, 0.396806699128266940, +0.396760803522420440, 0.396714906924671980, 0.396669009335136210, 0.396623110753927530, 0.396577211181161460, 0.396531310616952350, 0.396485409061415000, 0.396439506514663700, +0.396393602976814030, 0.396347698447980400, 0.396301792928277500, 0.396255886417819670, 0.396209978916722600, 0.396164070425100550, 0.396118160943067900, 0.396072250470740290, +0.396026339008232030, 0.395980426555657910, 0.395934513113132320, 0.395888598680770920, 0.395842683258687930, 0.395796766846998270, 0.395750849445816290, 0.395704931055257610, +0.395659011675436600, 0.395613091306468050, 0.395567169948466360, 0.395521247601547170, 0.395475324265824820, 0.395429399941414180, 0.395383474628429650, 0.395337548326986870, +0.395291621037200170, 0.395245692759183980, 0.395199763493054020, 0.395153833238924670, 0.395107901996910650, 0.395061969767126540, 0.395016036549687920, 0.394970102344709200, +0.394924167152305160, 0.394878230972590340, 0.394832293805680360, 0.394786355651689620, 0.394740416510733050, 0.394694476382924990, 0.394648535268381120, 0.394602593167215960, +0.394556650079544320, 0.394510706005480600, 0.394464760945140550, 0.394418814898638610, 0.394372867866089600, 0.394326919847608040, 0.394280970843309600, 0.394235020853308690, +0.394189069877719840, 0.394143117916658740, 0.394097164970239830, 0.394051211038577990, 0.394005256121787770, 0.393959300219984760, 0.393913343333283540, 0.393867385461798950, +0.393821426605645450, 0.393775466764938850, 0.393729505939793560, 0.393683544130324470, 0.393637581336646170, 0.393591617558874280, 0.393545652797123390, 0.393499687051508340, +0.393453720322143650, 0.393407752609145070, 0.393361783912627160, 0.393315814232704340, 0.393269843569492410, 0.393223871923105870, 0.393177899293659590, 0.393131925681268260, +0.393085951086047440, 0.393039975508111760, 0.392993998947576200, 0.392948021404555150, 0.392902042879164530, 0.392856063371518740, 0.392810082881732800, 0.392764101409921300, +0.392718118956199900, 0.392672135520683200, 0.392626151103486200, 0.392580165704723370, 0.392534179324510570, 0.392488191962962310, 0.392442203620193160, 0.392396214296318930, +0.392350223991454140, 0.392304232705713800, 0.392258240439212480, 0.392212247192065930, 0.392166252964388780, 0.392120257756296050, 0.392074261567902200, 0.392028264399323150, +0.391982266250673390, 0.391936267122068030, 0.391890267013621510, 0.391844265925449800, 0.391798263857667420, 0.391752260810389330, 0.391706256783730220, 0.391660251777805890, +0.391614245792730910, 0.391568238828620300, 0.391522230885588680, 0.391476221963751920, 0.391430212063224590, 0.391384201184121370, 0.391338189326558010, 0.391292176490649180, +0.391246162676509910, 0.391200147884254830, 0.391154132113999740, 0.391108115365859380, 0.391062097639948700, 0.391016078936382410, 0.390970059255276280, 0.390924038596745070, +0.390878016960903680, 0.390831994347866920, 0.390785970757750510, 0.390739946190669210, 0.390693920646738020, 0.390647894126071650, 0.390601866628785930, 0.390555838154995620, +0.390509808704815220, 0.390463778278360710, 0.390417746875746760, 0.390371714497088520, 0.390325681142500490, 0.390279646812098700, 0.390233611505997780, 0.390187575224312850, +0.390141537967158560, 0.390095499734650850, 0.390049460526904370, 0.390003420344034290, 0.389957379186155200, 0.389911337053383100, 0.389865293945832640, 0.389819249863618930, +0.389773204806856680, 0.389727158775661890, 0.389681111770149140, 0.389635063790433220, 0.389589014836630050, 0.389542964908854370, 0.389496914007221250, 0.389450862131845430, +0.389404809282842880, 0.389358755460328330, 0.389312700664416870, 0.389266644895223220, 0.389220588152863370, 0.389174530437452090, 0.389128471749104480, 0.389082412087935260, +0.389036351454060400, 0.388990289847594710, 0.388944227268653300, 0.388898163717350860, 0.388852099193803420, 0.388806033698125770, 0.388759967230433050, 0.388713899790839980, +0.388667831379462540, 0.388621761996415570, 0.388575691641813770, 0.388529620315773150, 0.388483548018408450, 0.388437474749834920, 0.388391400510167240, 0.388345325299521540, +0.388299249118012500, 0.388253171965755320, 0.388207093842864780, 0.388161014749456970, 0.388114934685646620, 0.388068853651548920, 0.388022771647278660, 0.387976688672951870, +0.387930604728683400, 0.387884519814588380, 0.387838433930781660, 0.387792347077379310, 0.387746259254496020, 0.387700170462246750, 0.387654080700747420, 0.387607989970112870, +0.387561898270458390, 0.387515805601898690, 0.387469711964549930, 0.387423617358526930, 0.387377521783944800, 0.387331425240918510, 0.387285327729564090, 0.387239229249996320, +0.387193129802330450, 0.387147029386681380, 0.387100928003165150, 0.387054825651896580, 0.387008722332990940, 0.386962618046563070, 0.386916512792729090, 0.386870406571603880, +0.386824299383302150, 0.386778191227940160, 0.386732082105632650, 0.386685972016494960, 0.386639860960641900, 0.386593748938189600, 0.386547635949252950, 0.386501521993947220, +0.386455407072387240, 0.386409291184689140, 0.386363174330967840, 0.386317056511338630, 0.386270937725916360, 0.386224817974817110, 0.386178697258155850, 0.386132575576047850, +0.386086452928607990, 0.386040329315952390, 0.385994204738196010, 0.385948079195453710, 0.385901952687841550, 0.385855825215474570, 0.385809696778468050, 0.385763567376936840, +0.385717437010997090, 0.385671305680763800, 0.385625173386352220, 0.385579040127877300, 0.385532905905455190, 0.385486770719200840, 0.385440634569229560, 0.385394497455656240, +0.385348359378597130, 0.385302220338167080, 0.385256080334481500, 0.385209939367655350, 0.385163797437804710, 0.385117654545044600, 0.385071510689490300, 0.385025365871256910, +0.384979220090460430, 0.384933073347215940, 0.384886925641638340, 0.384840776973843890, 0.384794627343947430, 0.384748476752064420, 0.384702325198309820, 0.384656172682799840, +0.384610019205649410, 0.384563864766973910, 0.384517709366888340, 0.384471553005508950, 0.384425395682950640, 0.384379237399328830, 0.384333078154758530, 0.384286917949355930, +0.384240756783236050, 0.384194594656514290, 0.384148431569305670, 0.384102267521726330, 0.384056102513891330, 0.384009936545915640, 0.383963769617915560, 0.383917601730006000, +0.383871432882302520, 0.383825263074919990, 0.383779092307974690, 0.383732920581581700, 0.383686747895856440, 0.383640574250913860, 0.383594399646870250, 0.383548224083840650, +0.383502047561940450, 0.383455870081284790, 0.383409691641989850, 0.383363512244170650, 0.383317331887942700, 0.383271150573420980, 0.383224968300721780, 0.383178785069960230, +0.383132600881251230, 0.383086415734711190, 0.383040229630455090, 0.382994042568598430, 0.382947854549256230, 0.382901665572544850, 0.382855475638579250, 0.382809284747475000, +0.382763092899347120, 0.382716900094311920, 0.382670706332484460, 0.382624511613980260, 0.382578315938914340, 0.382532119307403050, 0.382485921719561420, 0.382439723175505060, +0.382393523675348960, 0.382347323219209450, 0.382301121807201600, 0.382254919439441010, 0.382208716116042620, 0.382162511837122960, 0.382116306602796940, 0.382070100413179790, +0.382023893268387760, 0.381977685168536030, 0.381931476113740060, 0.381885266104115050, 0.381839055139777230, 0.381792843220841780, 0.381746630347424230, 0.381700416519639710, +0.381654201737604500, 0.381607986001433860, 0.381561769311243190, 0.381515551667147730, 0.381469333069263780, 0.381423113517706520, 0.381376893012591480, 0.381330671554033770, +0.381284449142149760, 0.381238225777054680, 0.381192001458863620, 0.381145776187692960, 0.381099549963657860, 0.381053322786873870, 0.381007094657456190, 0.380960865575521170, +0.380914635541183990, 0.380868404554560220, 0.380822172615765060, 0.380775939724914860, 0.380729705882124790, 0.380683471087510440, 0.380637235341187040, 0.380590998643270950, +0.380544760993877350, 0.380498522393121870, 0.380452282841119650, 0.380406042337987140, 0.380359800883839530, 0.380313558478792000, 0.380267315122961020, 0.380221070816461730, +0.380174825559409730, 0.380128579351920290, 0.380082332194109810, 0.380036084086093520, 0.379989835027987000, 0.379943585019905490, 0.379897334061965410, 0.379851082154281980, +0.379804829296970900, 0.379758575490147300, 0.379712320733927690, 0.379666065028427260, 0.379619808373761640, 0.379573550770046120, 0.379527292217397120, 0.379481032715929920, +0.379434772265759720, 0.379388510867002980, 0.379342248519774990, 0.379295985224191330, 0.379249720980367360, 0.379203455788419460, 0.379157189648462960, 0.379110922560613410, +0.379064654524986220, 0.379018385541697760, 0.378972115610863360, 0.378925844732598660, 0.378879572907018960, 0.378833300134240710, 0.378787026414379220, 0.378740751747550120, +0.378694476133868810, 0.378648199573451640, 0.378601922066414020, 0.378555643612871580, 0.378509364212939680, 0.378463083866734720, 0.378416802574372050, 0.378370520335966960, +0.378324237151635990, 0.378277953021494420, 0.378231667945657990, 0.378185381924241950, 0.378139094957362920, 0.378092807045136090, 0.378046518187677260, 0.378000228385101720, +0.377953937637526050, 0.377907645945065540, 0.377861353307835880, 0.377815059725952420, 0.377768765199531790, 0.377722469728689170, 0.377676173313540420, 0.377629875954200780, +0.377583577650786930, 0.377537278403414060, 0.377490978212197630, 0.377444677077254150, 0.377398374998698990, 0.377352071976647880, 0.377305768011216180, 0.377259463102520510, +0.377213157250676170, 0.377166850455798900, 0.377120542718004100, 0.377074234037408360, 0.377027924414127020, 0.376981613848275890, 0.376935302339970360, 0.376888989889326900, +0.376842676496461030, 0.376796362161488430, 0.376750046884524510, 0.376703730665685910, 0.376657413505087970, 0.376611095402846100, 0.376564776359076920, 0.376518456373895750, +0.376472135447418480, 0.376425813579760400, 0.376379490771038270, 0.376333167021367380, 0.376286842330863570, 0.376240516699642260, 0.376194190127820070, 0.376147862615512360, +0.376101534162835040, 0.376055204769903450, 0.376008874436834280, 0.375962543163742890, 0.375916210950745180, 0.375869877797956550, 0.375823543705493590, 0.375777208673471750, +0.375730872702006950, 0.375684535791214520, 0.375638197941211170, 0.375591859152112350, 0.375545519424033410, 0.375499178757091160, 0.375452837151400930, 0.375406494607078590, +0.375360151124239590, 0.375313806703000690, 0.375267461343477220, 0.375221115045785090, 0.375174767810039780, 0.375128419636357960, 0.375082070524855090, 0.375035720475647090, +0.374989369488849310, 0.374943017564578540, 0.374896664702950240, 0.374850310904080270, 0.374803956168084100, 0.374757600495078450, 0.374711243885178850, 0.374664886338500650, +0.374618527855160700, 0.374572168435274410, 0.374525808078957690, 0.374479446786326050, 0.374433084557496240, 0.374386721392583670, 0.374340357291704340, 0.374293992254973670, +0.374247626282508410, 0.374201259374424110, 0.374154891530836700, 0.374108522751861570, 0.374062153037615640, 0.374015782388214260, 0.373969410803773440, 0.373923038284408700, +0.373876664830236740, 0.373830290441373110, 0.373783915117933410, 0.373737538860034300, 0.373691161667791320, 0.373644783541320470, 0.373598404480737220, 0.373552024486158370, +0.373505643557699500, 0.373459261695476500, 0.373412878899604890, 0.373366495170201540, 0.373320110507381950, 0.373273724911262090, 0.373227338381957490, 0.373180950919584980, +0.373134562524260030, 0.373088173196098720, 0.373041782935216560, 0.372995391741730350, 0.372948999615755670, 0.372902606557408090, 0.372856212566804400, 0.372809817644060180, +0.372763421789291390, 0.372717025002613670, 0.372670627284143800, 0.372624228633997360, 0.372577829052290310, 0.372531428539138290, 0.372485027094658140, 0.372438624718965380, +0.372392221412176090, 0.372345817174405850, 0.372299412005771440, 0.372253005906388490, 0.372206598876373080, 0.372160190915840680, 0.372113782024908300, 0.372067372203691400, +0.372020961452306120, 0.371974549770868020, 0.371928137159493910, 0.371881723618299520, 0.371835309147400370, 0.371788893746913370, 0.371742477416954150, 0.371696060157638730, +0.371649641969082730, 0.371603222851403010, 0.371556802804715260, 0.371510381829135540, 0.371463959924779430, 0.371417537091763840, 0.371371113330204390, 0.371324688640217170, +0.371278263021917800, 0.371231836475423180, 0.371185409000849010, 0.371138980598311240, 0.371092551267925670, 0.371046121009809160, 0.370999689824077270, 0.370953257710845810, +0.370906824670231560, 0.370860390702350270, 0.370813955807318020, 0.370767519985250480, 0.370721083236264510, 0.370674645560475860, 0.370628206958000580, 0.370581767428954430, +0.370535326973454200, 0.370488885591615690, 0.370442443283554970, 0.370396000049387720, 0.370349555889230850, 0.370303110803200110, 0.370256664791411620, 0.370210217853981010, +0.370163769991025290, 0.370117321202660170, 0.370070871489001310, 0.370024420850165680, 0.369977969286269030, 0.369931516797427420, 0.369885063383756650, 0.369838609045373580, +0.369792153782394000, 0.369745697594934030, 0.369699240483109430, 0.369652782447037140, 0.369606323486832920, 0.369559863602612840, 0.369513402794492680, 0.369466941062589480, +0.369420478407018920, 0.369374014827897110, 0.369327550325339870, 0.369281084899464210, 0.369234618550385810, 0.369188151278220860, 0.369141683083085090, 0.369095213965095590, +0.369048743924368040, 0.369002272961018170, 0.368955801075163070, 0.368909328266918470, 0.368862854536400550, 0.368816379883725070, 0.368769904309009020, 0.368723427812368220, +0.368676950393918900, 0.368630472053776750, 0.368583992792058830, 0.368537512608880960, 0.368491031504359300, 0.368444549478609660, 0.368398066531749060, 0.368351582663893230, +0.368305097875158530, 0.368258612165660580, 0.368212125535516580, 0.368165637984842250, 0.368119149513753410, 0.368072660122367110, 0.368026169810799160, 0.367979678579165800, +0.367933186427582830, 0.367886693356167300, 0.367840199365035040, 0.367793704454302260, 0.367747208624084830, 0.367700711874499760, 0.367654214205662970, 0.367607715617690570, +0.367561216110698530, 0.367514715684803820, 0.367468214340122330, 0.367421712076770320, 0.367375208894863640, 0.367328704794519290, 0.367282199775853190, 0.367235693838981250, +0.367189186984020420, 0.367142679211086620, 0.367096170520296140, 0.367049660911764830, 0.367003150385609770, 0.366956638941946860, 0.366910126580892280, 0.366863613302562060, +0.366817099107073160, 0.366770583994541540, 0.366724067965083440, 0.366677551018814770, 0.366631033155852660, 0.366584514376312950, 0.366537994680311950, 0.366491474067965510, +0.366444952539390860, 0.366398430094703800, 0.366351906734020240, 0.366305382457457360, 0.366258857265131020, 0.366212331157157510, 0.366165804133652790, 0.366119276194733940, +0.366072747340516920, 0.366026217571118030, 0.365979686886653170, 0.365933155287239520, 0.365886622772993000, 0.365840089344029900, 0.365793555000466180, 0.365747019742418970, +0.365700483570004180, 0.365653946483338210, 0.365607408482536980, 0.365560869567717610, 0.365514329738996110, 0.365467788996488740, 0.365421247340311510, 0.365374704770581590, +0.365328161287414850, 0.365281616890927360, 0.365235071581236190, 0.365188525358457360, 0.365141978222707220, 0.365095430174101730, 0.365048881212758080, 0.365002331338792230, +0.364955780552320530, 0.364909228853458940, 0.364862676242324770, 0.364816122719033850, 0.364769568283702610, 0.364723012936447100, 0.364676456677384410, 0.364629899506630610, +0.364583341424302040, 0.364536782430514740, 0.364490222525385880, 0.364443661709031470, 0.364397099981567440, 0.364350537343111120, 0.364303973793778490, 0.364257409333685890, +0.364210843962949340, 0.364164277681686080, 0.364117710490012180, 0.364071142388043940, 0.364024573375897500, 0.363978003453690020, 0.363931432621537490, 0.363884860879556400, +0.363838288227862790, 0.363791714666573780, 0.363745140195805560, 0.363698564815674470, 0.363651988526296540, 0.363605411327789060, 0.363558833220268110, 0.363512254203849580, +0.363465674278650840, 0.363419093444787960, 0.363372511702377330, 0.363325929051534990, 0.363279345492378230, 0.363232761025023110, 0.363186175649586110, 0.363139589366183290, +0.363093002174931840, 0.363046414075947900, 0.362999825069347970, 0.362953235155248020, 0.362906644333765400, 0.362860052605016190, 0.362813459969116850, 0.362766866426183440, +0.362720271976333270, 0.362673676619682420, 0.362627080356347390, 0.362580483186444200, 0.362533885110090270, 0.362487286127401610, 0.362440686238494290, 0.362394085443485730, +0.362347483742491930, 0.362300881135629420, 0.362254277623014260, 0.362207673204763880, 0.362161067880994280, 0.362114461651822040, 0.362067854517363170, 0.362021246477735150, +0.361974637533053980, 0.361928027683436180, 0.361881416928997950, 0.361834805269856560, 0.361788192706128220, 0.361741579237929320, 0.361694964865376110, 0.361648349588585880, +0.361601733407674760, 0.361555116322758940, 0.361508498333955710, 0.361461879441381250, 0.361415259645152090, 0.361368638945384350, 0.361322017342195430, 0.361275394835701480, +0.361228771426019000, 0.361182147113264240, 0.361135521897554490, 0.361088895779005940, 0.361042268757735150, 0.360995640833858270, 0.360949012007492740, 0.360902382278754650, +0.360855751647760570, 0.360809120114626740, 0.360762487679470560, 0.360715854342408100, 0.360669220103555620, 0.360622584963030460, 0.360575948920948850, 0.360529311977427440, +0.360482674132582280, 0.360436035386530850, 0.360389395739389330, 0.360342755191274290, 0.360296113742302030, 0.360249471392589840, 0.360202828142253960, 0.360156183991411030, +0.360109538940177280, 0.360062892988670000, 0.360016246137005560, 0.359969598385300460, 0.359922949733671000, 0.359876300182234540, 0.359829649731107310, 0.359782998380405620, +0.359736346130246800, 0.359689692980747100, 0.359643038932023210, 0.359596383984191250, 0.359549728137368800, 0.359503071391671980, 0.359456413747217540, 0.359409755204121610, +0.359363095762501690, 0.359316435422474050, 0.359269774184155340, 0.359223112047661770, 0.359176449013110850, 0.359129785080618770, 0.359083120250302260, 0.359036454522277500, +0.358989787896662080, 0.358943120373572120, 0.358896451953124420, 0.358849782635435150, 0.358803112420621790, 0.358756441308800740, 0.358709769300088130, 0.358663096394601480, +0.358616422592457130, 0.358569747893771720, 0.358523072298661480, 0.358476395807244050, 0.358429718419635560, 0.358383040135952850, 0.358336360956312050, 0.358289680880830800, +0.358242999909625330, 0.358196318042812380, 0.358149635280508190, 0.358102951622830350, 0.358056267069895130, 0.358009581621819280, 0.357962895278719000, 0.357916208040711950, +0.357869519907914320, 0.357822830880442530, 0.357776140958414040, 0.357729450141945240, 0.357682758431152770, 0.357636065826152980, 0.357589372327063500, 0.357542677934000520, +0.357495982647080880, 0.357449286466420880, 0.357402589392138090, 0.357355891424348810, 0.357309192563169790, 0.357262492808717360, 0.357215792161109160, 0.357169090620461430, +0.357122388186891020, 0.357075684860514220, 0.357028980641448560, 0.356982275529810540, 0.356935569525716370, 0.356888862629283650, 0.356842154840628810, 0.356795446159868630, +0.356748736587119360, 0.356702026122498680, 0.356655314766122940, 0.356608602518108890, 0.356561889378572970, 0.356515175347632720, 0.356468460425404480, 0.356421744612005150, +0.356375027907551050, 0.356328310312159720, 0.356281591825947710, 0.356234872449031680, 0.356188152181528050, 0.356141431023554440, 0.356094708975227270, 0.356047986036663320, +0.356001262207979010, 0.355954537489291960, 0.355907811880718520, 0.355861085382375150, 0.355814357994379490, 0.355767629716847940, 0.355720900549897360, 0.355674170493644080, +0.355627439548205750, 0.355580707713698870, 0.355533974990240200, 0.355487241377946180, 0.355440506876934460, 0.355393771487321490, 0.355347035209224120, 0.355300298042758700, +0.355253559988042980, 0.355206821045193350, 0.355160081214326630, 0.355113340495559320, 0.355066598889009100, 0.355019856394792390, 0.354973113013025590, 0.354926368743826440, +0.354879623587311340, 0.354832877543597160, 0.354786130612800450, 0.354739382795038750, 0.354692634090428670, 0.354645884499086960, 0.354599134021130140, 0.354552382656675880, +0.354505630405840650, 0.354458877268741370, 0.354412123245494480, 0.354365368336217730, 0.354318612541027530, 0.354271855860040790, 0.354225098293374010, 0.354178339841144880, +0.354131580503469930, 0.354084820280465560, 0.354038059172249620, 0.353991297178938460, 0.353944534300649150, 0.353897770537497990, 0.353851005889602890, 0.353804240357080250, +0.353757473940047030, 0.353710706638619700, 0.353663938452915990, 0.353617169383052430, 0.353570399429145980, 0.353523628591313140, 0.353476856869671620, 0.353430084264337920, +0.353383310775429060, 0.353336536403061510, 0.353289761147353000, 0.353242985008420110, 0.353196207986379300, 0.353149430081348410, 0.353102651293443980, 0.353055871622782900, +0.353009091069481700, 0.352962309633658210, 0.352915527315428970, 0.352868744114910870, 0.352821960032220490, 0.352775175067475630, 0.352728389220792860, 0.352681602492289140, +0.352634814882080930, 0.352588026390286140, 0.352541237017021280, 0.352494446762403320, 0.352447655626548840, 0.352400863609575620, 0.352354070711600240, 0.352307276932739720, +0.352260482273110580, 0.352213686732830600, 0.352166890312016480, 0.352120093010784670, 0.352073294829253040, 0.352026495767538190, 0.351979695825757110, 0.351932895004026360, +0.351886093302463790, 0.351839290721185970, 0.351792487260309930, 0.351745682919952280, 0.351698877700230840, 0.351652071601262160, 0.351605264623163330, 0.351558456766050910, +0.351511648030042810, 0.351464838415255550, 0.351418027921806210, 0.351371216549811350, 0.351324404299388880, 0.351277591170655430, 0.351230777163727580, 0.351183962278723170, +0.351137146515758890, 0.351090329874951760, 0.351043512356418340, 0.350996693960276550, 0.350949874686643070, 0.350903054535634860, 0.350856233507368610, 0.350809411601962220, +0.350762588819532320, 0.350715765160195870, 0.350668940624069670, 0.350622115211271460, 0.350575288921918030, 0.350528461756126340, 0.350481633714013090, 0.350434804795696160, +0.350387975001292210, 0.350341144330917950, 0.350294312784691200, 0.350247480362728680, 0.350200647065147470, 0.350153812892064260, 0.350106977843596900, 0.350060141919862070, +0.350013305120976890, 0.349966467447058060, 0.349919628898223480, 0.349872789474589830, 0.349825949176274190, 0.349779108003393240, 0.349732265956064990, 0.349685423034406030, +0.349638579238533530, 0.349591734568564180, 0.349544889024615890, 0.349498042606805340, 0.349451195315249760, 0.349404347150065740, 0.349357498111371230, 0.349310648199283040, +0.349263797413917780, 0.349216945755393470, 0.349170093223826750, 0.349123239819334850, 0.349076385542034410, 0.349029530392043430, 0.348982674369478610, 0.348935817474457070, +0.348888959707095600, 0.348842101067512180, 0.348795241555823480, 0.348748381172146680, 0.348701519916598530, 0.348654657789296940, 0.348607794790358750, 0.348560930919901090, +0.348514066178040650, 0.348467200564895500, 0.348420334080582320, 0.348373466725217850, 0.348326598498920170, 0.348279729401806020, 0.348232859433992510, 0.348185988595596460, +0.348139116886735820, 0.348092244307527440, 0.348045370858088400, 0.347998496538535540, 0.347951621348986880, 0.347904745289559110, 0.347857868360369530, 0.347810990561534810, +0.347764111893173080, 0.347717232355401030, 0.347670351948335900, 0.347623470672094540, 0.347576588526794850, 0.347529705512553690, 0.347482821629487900, 0.347435936877715460, +0.347389051257353140, 0.347342164768518200, 0.347295277411327430, 0.347248389185898900, 0.347201500092349400, 0.347154610130796130, 0.347107719301355980, 0.347060827604146860, +0.347013935039285740, 0.346967041606889740, 0.346920147307075770, 0.346873252139961790, 0.346826356105664700, 0.346779459204301700, 0.346732561435989680, 0.346685662800846670, +0.346638763298989460, 0.346591862930534960, 0.346544961695601230, 0.346498059594305070, 0.346451156626763730, 0.346404252793094170, 0.346357348093414340, 0.346310442527841100, +0.346263536096491800, 0.346216628799483280, 0.346169720636933520, 0.346122811608959520, 0.346075901715678480, 0.346028990957207290, 0.345982079333663980, 0.345935166845165510, +0.345888253491829110, 0.345841339273771700, 0.345794424191111340, 0.345747508243964890, 0.345700591432449690, 0.345653673756682600, 0.345606755216781750, 0.345559835812863980, +0.345512915545046210, 0.345465994413446550, 0.345419072418181980, 0.345372149559369680, 0.345325225837126550, 0.345278301251570830, 0.345231375802819370, 0.345184449490989420, +0.345137522316197930, 0.345090594278563090, 0.345043665378201750, 0.344996735615231250, 0.344949804989768460, 0.344902873501931610, 0.344855941151837600, 0.344809007939603670, +0.344762073865346850, 0.344715138929185260, 0.344668203131235810, 0.344621266471615450, 0.344574328950442320, 0.344527390567833380, 0.344480451323905980, 0.344433511218777020, +0.344386570252564690, 0.344339628425385960, 0.344292685737358110, 0.344245742188598160, 0.344198797779224300, 0.344151852509353370, 0.344104906379102900, 0.344057959388589680, +0.344011011537932010, 0.343964062827246790, 0.343917113256651420, 0.343870162826262870, 0.343823211536199320, 0.343776259386577740, 0.343729306377515090, 0.343682352509129600, +0.343635397781538230, 0.343588442194858350, 0.343541485749206950, 0.343494528444702240, 0.343447570281461220, 0.343400611259601310, 0.343353651379239400, 0.343306690640493850, +0.343259729043481510, 0.343212766588319840, 0.343165803275125860, 0.343118839104017800, 0.343071874075112640, 0.343024908188527820, 0.342977941444380260, 0.342930973842788310, +0.342884005383868870, 0.342837036067739460, 0.342790065894517050, 0.342743094864319860, 0.342696122977264930, 0.342649150233469310, 0.342602176633051200, 0.342555202176127670, +0.342508226862816120, 0.342461250693233630, 0.342414273667498380, 0.342367295785727440, 0.342320317048038280, 0.342273337454547910, 0.342226357005374630, 0.342179375700635450, +0.342132393540447830, 0.342085410524928800, 0.342038426654196650, 0.341991441928368440, 0.341944456347561650, 0.341897469911893290, 0.341850482621481650, 0.341803494476443810, +0.341756505476896840, 0.341709515622959040, 0.341662524914747410, 0.341615533352379490, 0.341568540935972280, 0.341521547665644190, 0.341474553541512180, 0.341427558563693830, +0.341380562732306160, 0.341333566047467450, 0.341286568509294900, 0.341239570117905900, 0.341192570873417530, 0.341145570775948200, 0.341098569825614870, 0.341051568022535170, +0.341004565366826160, 0.340957561858606100, 0.340910557497992150, 0.340863552285101400, 0.340816546220052140, 0.340769539302961550, 0.340722531533947160, 0.340675522913125970, +0.340628513440616400, 0.340581503116535570, 0.340534491941000940, 0.340487479914129700, 0.340440467036040140, 0.340393453306849450, 0.340346438726675080, 0.340299423295634230, +0.340252407013845240, 0.340205389881425240, 0.340158371898491740, 0.340111353065161880, 0.340064333381554120, 0.340017312847785470, 0.339970291463973120, 0.339923269230235470, +0.339876246146689650, 0.339829222213453240, 0.339782197430643310, 0.339735171798378370, 0.339688145316775440, 0.339641117985952150, 0.339594089806025680, 0.339547060777114380, +0.339500030899335450, 0.339453000172806440, 0.339405968597644490, 0.339358936173968060, 0.339311902901894280, 0.339264868781540720, 0.339217833813024620, 0.339170797996464320, +0.339123761331977020, 0.339076723819680290, 0.339029685459691420, 0.338982646252128710, 0.338935606197109330, 0.338888565294750590, 0.338841523545170830, 0.338794480948487240, +0.338747437504817510, 0.338700393214278690, 0.338653348076989320, 0.338606302093066640, 0.338559255262628140, 0.338512207585791150, 0.338465159062673990, 0.338418109693393980, +0.338371059478068670, 0.338324008416815310, 0.338276956509752310, 0.338229903756996960, 0.338182850158666840, 0.338135795714879170, 0.338088740425752430, 0.338041684291403850, +0.337994627311950680, 0.337947569487511310, 0.337900510818202990, 0.337853451304143460, 0.337806390945449840, 0.337759329742240650, 0.337712267694633140, 0.337665204802744980, +0.337618141066693410, 0.337571076486596900, 0.337524011062572680, 0.337476944794738390, 0.337429877683211370, 0.337382809728110080, 0.337335740929551760, 0.337288671287654050, +0.337241600802534290, 0.337194529474310940, 0.337147457303101250, 0.337100384289022500, 0.337053310432193220, 0.337006235732730700, 0.336959160190752500, 0.336912083806376050, +0.336865006579719790, 0.336817928510901030, 0.336770849600037450, 0.336723769847246280, 0.336676689252646160, 0.336629607816354260, 0.336582525538488390, 0.336535442419165780, +0.336488358458504940, 0.336441273656623240, 0.336394188013638350, 0.336347101529667570, 0.336300014204829470, 0.336252926039241340, 0.336205837033020870, 0.336158747186285410, +0.336111656499153480, 0.336064564971742420, 0.336017472604169530, 0.335970379396553390, 0.335923285349011280, 0.335876190461660950, 0.335829094734619750, 0.335781998168006190, +0.335734900761937680, 0.335687802516531910, 0.335640703431906220, 0.335593603508179130, 0.335546502745468100, 0.335499401143890820, 0.335452298703564580, 0.335405195424608000, +0.335358091307138450, 0.335310986351273710, 0.335263880557131020, 0.335216773924829070, 0.335169666454485200, 0.335122558146216780, 0.335075449000142300, 0.335028339016379240, +0.334981228195045390, 0.334934116536257990, 0.334887004040135720, 0.334839890706795930, 0.334792776536356420, 0.334745661528934530, 0.334698545684648960, 0.334651429003617000, +0.334604311485956480, 0.334557193131784720, 0.334510073941220450, 0.334462953914380970, 0.334415833051384110, 0.334368711352347250, 0.334321588817388990, 0.334274465446626810, +0.334227341240178000, 0.334180216198161300, 0.334133090320694050, 0.334085963607894050, 0.334038836059878770, 0.333991707676766780, 0.333944578458675530, 0.333897448405722830, +0.333850317518026130, 0.333803185795704000, 0.333756053238873920, 0.333708919847653720, 0.333661785622160810, 0.333614650562513830, 0.333567514668830220, 0.333520377941227850, +0.333473240379824120, 0.333426101984737710, 0.333378962756086030, 0.333331822693986920, 0.333284681798557860, 0.333237540069917510, 0.333190397508183300, 0.333143254113472680, +0.333096109885904380, 0.333048964825595760, 0.333001818932664730, 0.332954672207228800, 0.332907524649406540, 0.332860376259315470, 0.332813227037073500, 0.332766076982798030, +0.332718926096607750, 0.332671774378620170, 0.332624621828953190, 0.332577468447724180, 0.332530314235051970, 0.332483159191053980, 0.332436003315848050, 0.332388846609551700, +0.332341689072283670, 0.332294530704161430, 0.332247371505302420, 0.332200211475825400, 0.332153050615847820, 0.332105888925487650, 0.332058726404862340, 0.332011563054090630, +0.331964398873290050, 0.331917233862578430, 0.331870068022073310, 0.331822901351893460, 0.331775733852156310, 0.331728565522979860, 0.331681396364481570, 0.331634226376780250, +0.331587055559993290, 0.331539883914238720, 0.331492711439634050, 0.331445538136298010, 0.331398364004348080, 0.331351189043901870, 0.331304013255078080, 0.331256836637994270, +0.331209659192768400, 0.331162480919517890, 0.331115301818361680, 0.331068121889417140, 0.331020941132802340, 0.330973759548634730, 0.330926577137033220, 0.330879393898115160, +0.330832209831998680, 0.330785024938801240, 0.330737839218641690, 0.330690652671637500, 0.330643465297906720, 0.330596277097566840, 0.330549088070736630, 0.330501898217533780, +0.330454707538075710, 0.330407516032481310, 0.330360323700868150, 0.330313130543354150, 0.330265936560056930, 0.330218741751095220, 0.330171546116586720, 0.330124349656649330, +0.330077152371400670, 0.330029954260959550, 0.329982755325443520, 0.329935555564970620, 0.329888354979658400, 0.329841153569625680, 0.329793951334990120, 0.329746748275869690, +0.329699544392381970, 0.329652339684645750, 0.329605134152778760, 0.329557927796898850, 0.329510720617123780, 0.329463512613572260, 0.329416303786362000, 0.329369094135610550, +0.329321883661436830, 0.329274672363958350, 0.329227460243293190, 0.329180247299558970, 0.329133033532874540, 0.329085818943357530, 0.329038603531126020, 0.328991387296297510, +0.328944170238991030, 0.328896952359324040, 0.328849733657414710, 0.328802514133380630, 0.328755293787340700, 0.328708072619412480, 0.328660850629714120, 0.328613627818363230, +0.328566404185478670, 0.328519179731178060, 0.328471954455579140, 0.328424728358800710, 0.328377501440960510, 0.328330273702176540, 0.328283045142566450, 0.328235815762249140, +0.328188585561342340, 0.328141354539964070, 0.328094122698231960, 0.328046890036264970, 0.327999656554180790, 0.327952422252097480, 0.327905187130132610, 0.327857951188405270, +0.327810714427033020, 0.327763476846133990, 0.327716238445825870, 0.327668999226227550, 0.327621759187456730, 0.327574518329631080, 0.327527276652869630, 0.327480034157289880, +0.327432790843010140, 0.327385546710147970, 0.327338301758822340, 0.327291055989150930, 0.327243809401251920, 0.327196561995242940, 0.327149313771243010, 0.327102064729369760, +0.327054814869741360, 0.327007564192475510, 0.326960312697691160, 0.326913060385506050, 0.326865807256038250, 0.326818553309405570, 0.326771298545726900, 0.326724042965119980, +0.326676786567702940, 0.326629529353593520, 0.326582271322910680, 0.326535012475772210, 0.326487752812295750, 0.326440492332600360, 0.326393231036803730, 0.326345968925023990, +0.326298705997378920, 0.326251442253987500, 0.326204177694967510, 0.326156912320437090, 0.326109646130513910, 0.326062379125317050, 0.326015111304964240, 0.325967842669573680, +0.325920573219263100, 0.325873302954151460, 0.325826031874356600, 0.325778759979996610, 0.325731487271189390, 0.325684213748053790, 0.325636939410707700, 0.325589664259268830, +0.325542388293856230, 0.325495111514587600, 0.325447833921581280, 0.325400555514954890, 0.325353276294827580, 0.325305996261317010, 0.325258715414541540, 0.325211433754618810, +0.325164151281667920, 0.325116867995806640, 0.325069583897153180, 0.325022298985825410, 0.324975013261942220, 0.324927726725621590, 0.324880439376981580, 0.324833151216140040, +0.324785862243216090, 0.324738572458327490, 0.324691281861592020, 0.324643990453128750, 0.324596698233055480, 0.324549405201490500, 0.324502111358551610, 0.324454816704357830, +0.324407521239027000, 0.324360224962677410, 0.324312927875426820, 0.324265629977394280, 0.324218331268697700, 0.324171031749455330, 0.324123731419784900, 0.324076430279805590, +0.324029128329635210, 0.323981825569392030, 0.323934521999193810, 0.323887217619159780, 0.323839912429407630, 0.323792606430055310, 0.323745299621221890, 0.323697992003025240, +0.323650683575583580, 0.323603374339014820, 0.323556064293438030, 0.323508753438971060, 0.323461441775732270, 0.323414129303839390, 0.323366816023411660, 0.323319501934566820, +0.323272187037423280, 0.323224871332098870, 0.323177554818712630, 0.323130237497382570, 0.323082919368226860, 0.323035600431363480, 0.322988280686911490, 0.322940960134988850, +0.322893638775713750, 0.322846316609204150, 0.322798993635579180, 0.322751669854956740, 0.322704345267454670, 0.322657019873192170, 0.322609693672287150, 0.322562366664857880, +0.322515038851022280, 0.322467710230899480, 0.322420380804607390, 0.322373050572264400, 0.322325719533988360, 0.322278387689898420, 0.322231055040112510, 0.322183721584748950, +0.322136387323925690, 0.322089052257761850, 0.322041716386375410, 0.321994379709884650, 0.321947042228407590, 0.321899703942063240, 0.321852364850969740, 0.321805024955244820, +0.321757684255007780, 0.321710342750376580, 0.321663000441469450, 0.321615657328404470, 0.321568313411300710, 0.321520968690276190, 0.321473623165449250, 0.321426276836937810, +0.321378929704861150, 0.321331581769337130, 0.321284233030484150, 0.321236883488420170, 0.321189533143264430, 0.321142181995134830, 0.321094830044149740, 0.321047477290427210, +0.321000123734086370, 0.320952769375245250, 0.320905414214021800, 0.320858058250535210, 0.320810701484903480, 0.320763343917244980, 0.320715985547677720, 0.320668626376320930, +0.320621266403292530, 0.320573905628711020, 0.320526544052694260, 0.320479181675361600, 0.320431818496831000, 0.320384454517220860, 0.320337089736649090, 0.320289724155235100, +0.320242357773096790, 0.320194990590352560, 0.320147622607120430, 0.320100253823519640, 0.320052884239668270, 0.320005513855684650, 0.319958142671686820, 0.319910770687794110, +0.319863397904124440, 0.319816024320795810, 0.319768649937927580, 0.319721274755637720, 0.319673898774044730, 0.319626521993266470, 0.319579144413422390, 0.319531766034630460, +0.319484386857009080, 0.319437006880676330, 0.319389626105751500, 0.319342244532352550, 0.319294862160598050, 0.319247478990605900, 0.319200095022495520, 0.319152710256384920, +0.319105324692392560, 0.319057938330636390, 0.319010551171235830, 0.318963163214308950, 0.318915774459973660, 0.318868384908349400, 0.318820994559554150, 0.318773603413706470, +0.318726211470924280, 0.318678818731327030, 0.318631425195032740, 0.318584030862159860, 0.318536635732826480, 0.318489239807151990, 0.318441843085254360, 0.318394445567252100, +0.318347047253263350, 0.318299648143407330, 0.318252248237802240, 0.318204847536566530, 0.318157446039818330, 0.318110043747676870, 0.318062640660260300, 0.318015236777686730, +0.317967832100075450, 0.317920426627544660, 0.317873020360212750, 0.317825613298197860, 0.317778205441619390, 0.317730796790595400, 0.317683387345244430, 0.317635977105684530, +0.317588566072035170, 0.317541154244414370, 0.317493741622940640, 0.317446328207732160, 0.317398913998908290, 0.317351498996587160, 0.317304083200887270, 0.317256666611926750, +0.317209249229824960, 0.317161831054700080, 0.317114412086670180, 0.317066992325854670, 0.317019571772371670, 0.316972150426339750, 0.316924728287877040, 0.316877305357102900, +0.316829881634135560, 0.316782457119093470, 0.316735031812094840, 0.316687605713259050, 0.316640178822704230, 0.316592751140548970, 0.316545322666911380, 0.316497893401910920, +0.316450463345665730, 0.316403032498294430, 0.316355600859915100, 0.316308168430647190, 0.316260735210608820, 0.316213301199918640, 0.316165866398694760, 0.316118430807056710, +0.316070994425122490, 0.316023557253010400, 0.315976119290839850, 0.315928680538729020, 0.315881240996796490, 0.315833800665160370, 0.315786359543940240, 0.315738917633254180, +0.315691474933220810, 0.315644031443958360, 0.315596587165586250, 0.315549142098222660, 0.315501696241986210, 0.315454249596995140, 0.315406802163368800, 0.315359353941225500, +0.315311904930683840, 0.315264455131861960, 0.315217004544879330, 0.315169553169854230, 0.315122101006904850, 0.315074648056150600, 0.315027194317709760, 0.314979739791700910, +0.314932284478242290, 0.314884828377453410, 0.314837371489452400, 0.314789913814358000, 0.314742455352288400, 0.314694996103363040, 0.314647536067700240, 0.314600075245418610, +0.314552613636636340, 0.314505151241472940, 0.314457688060046700, 0.314410224092476210, 0.314362759338879750, 0.314315293799376840, 0.314267827474085660, 0.314220360363124510, +0.314172892466612840, 0.314125423784669010, 0.314077954317411530, 0.314030484064958810, 0.313983013027430310, 0.313935541204944210, 0.313888068597619310, 0.313840595205573840, +0.313793121028927260, 0.313745646067797870, 0.313698170322304400, 0.313650693792565050, 0.313603216478699430, 0.313555738380825730, 0.313508259499062690, 0.313460779833528600, +0.313413299384342980, 0.313365818151624060, 0.313318336135490650, 0.313270853336060970, 0.313223369753454550, 0.313175885387789730, 0.313128400239184810, 0.313080914307759250, +0.313033427593631450, 0.312985940096920050, 0.312938451817743380, 0.312890962756221020, 0.312843472912471220, 0.312795982286612760, 0.312748490878763940, 0.312700998689044330, +0.312653505717572170, 0.312606011964466250, 0.312558517429844920, 0.312511022113827700, 0.312463526016532930, 0.312416029138079310, 0.312368531478585230, 0.312321033038170210, +0.312273533816952660, 0.312226033815050820, 0.312178533032584300, 0.312131031469671470, 0.312083529126431060, 0.312036026002981410, 0.311988522099442110, 0.311941017415931550, +0.311893511952568370, 0.311846005709471020, 0.311798498686759130, 0.311750990884550940, 0.311703482302965240, 0.311655972942120440, 0.311608462802136170, 0.311560951883130710, +0.311513440185222870, 0.311465927708531040, 0.311418414453174750, 0.311370900419272460, 0.311323385606942500, 0.311275870016304520, 0.311228353647476810, 0.311180836500578260, +0.311133318575727180, 0.311085799873043240, 0.311038280392644750, 0.310990760134650600, 0.310943239099179150, 0.310895717286350020, 0.310848194696281550, 0.310800671329092610, +0.310753147184901600, 0.310705622263828140, 0.310658096565990580, 0.310610570091507830, 0.310563042840498180, 0.310515514813081370, 0.310467986009375810, 0.310420456429499840, +0.310372926073573140, 0.310325394941714130, 0.310277863034041590, 0.310230330350674040, 0.310182796891731060, 0.310135262657331050, 0.310087727647592960, 0.310040191862635090, +0.309992655302577140, 0.309945117967537600, 0.309897579857635220, 0.309850040972988460, 0.309802501313717060, 0.309754960879939370, 0.309707419671774340, 0.309659877689340280, +0.309612334932756970, 0.309564791402142820, 0.309517247097616690, 0.309469702019297020, 0.309422156167303510, 0.309374609541754660, 0.309327062142768780, 0.309279513970465710, +0.309231965024963860, 0.309184415306382130, 0.309136864814838870, 0.309089313550453940, 0.309041761513345670, 0.308994208703633030, 0.308946655121434430, 0.308899100766869610, +0.308851545640057010, 0.308803989741115610, 0.308756433070163760, 0.308708875627321300, 0.308661317412706640, 0.308613758426438680, 0.308566198668635880, 0.308518638139417990, +0.308471076838903570, 0.308423514767210970, 0.308375951924460050, 0.308328388310769250, 0.308280823926257440, 0.308233258771043180, 0.308185692845246220, 0.308138126148984950, +0.308090558682378450, 0.308042990445545060, 0.307995421438604640, 0.307947851661675710, 0.307900281114877110, 0.307852709798327410, 0.307805137712146290, 0.307757564856452390, +0.307709991231364550, 0.307662416837001350, 0.307614841673482520, 0.307567265740926580, 0.307519689039452040, 0.307472111569178700, 0.307424533330225070, 0.307376954322710120, +0.307329374546752350, 0.307281794002471580, 0.307234212689986350, 0.307186630609415530, 0.307139047760877750, 0.307091464144492790, 0.307043879760379110, 0.306996294608655800, +0.306948708689441300, 0.306901122002855460, 0.306853534549016820, 0.306805946328044310, 0.306758357340056520, 0.306710767585173290, 0.306663177063513090, 0.306615585775194990, +0.306567993720337490, 0.306520400899060460, 0.306472807311482350, 0.306425212957721850, 0.306377617837898740, 0.306330021952131600, 0.306282425300539400, 0.306234827883240690, +0.306187229700355330, 0.306139630752001960, 0.306092031038299460, 0.306044430559366420, 0.305996829315322790, 0.305949227306287100, 0.305901624532378290, 0.305854020993715000, +0.305806416690417140, 0.305758811622603150, 0.305711205790392180, 0.305663599193902790, 0.305615991833254770, 0.305568383708566820, 0.305520774819957490, 0.305473165167546630, +0.305425554751452830, 0.305377943571795210, 0.305330331628692280, 0.305282718922263880, 0.305235105452628770, 0.305187491219905850, 0.305139876224213790, 0.305092260465672450, +0.305044643944400510, 0.304997026660516920, 0.304949408614140330, 0.304901789805390620, 0.304854170234386490, 0.304806549901246950, 0.304758928806090570, 0.304711306949037250, +0.304663684330205740, 0.304616060949714550, 0.304568436807683640, 0.304520811904231690, 0.304473186239477670, 0.304425559813540250, 0.304377932626539340, 0.304330304678593620, +0.304282675969822170, 0.304235046500343550, 0.304187416270277790, 0.304139785279743450, 0.304092153528859650, 0.304044521017745040, 0.303996887746519560, 0.303949253715301900, +0.303901618924211080, 0.303853983373365780, 0.303806347062885900, 0.303758709992890230, 0.303711072163497300, 0.303663433574827170, 0.303615794226998410, 0.303568154120130160, +0.303520513254341150, 0.303472871629751280, 0.303425229246479190, 0.303377586104644050, 0.303329942204364490, 0.303282297545760530, 0.303234652128950840, 0.303187005954054460, +0.303139359021190210, 0.303091711330477960, 0.303044062882036450, 0.302996413675984730, 0.302948763712441560, 0.302901112991526940, 0.302853461513359570, 0.302805809278058450, +0.302758156285742490, 0.302710502536531480, 0.302662848030544220, 0.302615192767899440, 0.302567536748717110, 0.302519879973115910, 0.302472222441215080, 0.302424564153133180, +0.302376905108990350, 0.302329245308905260, 0.302281584752997050, 0.302233923441384390, 0.302186261374187410, 0.302138598551524750, 0.302090934973515630, 0.302043270640278750, +0.301995605551934050, 0.301947939708600400, 0.301900273110396910, 0.301852605757442270, 0.301804937649856550, 0.301757268787758490, 0.301709599171266830, 0.301661928800501580, +0.301614257675581530, 0.301566585796625870, 0.301518913163753290, 0.301471239777083840, 0.301423565636736280, 0.301375890742829830, 0.301328215095483240, 0.301280538694816520, +0.301232861540948470, 0.301185183633998210, 0.301137504974084650, 0.301089825561327680, 0.301042145395846170, 0.300994464477759290, 0.300946782807185840, 0.300899100384245890, +0.300851417209058110, 0.300803733281741430, 0.300756048602415840, 0.300708363171200090, 0.300660676988213470, 0.300612990053574670, 0.300565302367403860, 0.300517613929819790, +0.300469924740941700, 0.300422234800888370, 0.300374544109779870, 0.300326852667735010, 0.300279160474873020, 0.300231467531312750, 0.300183773837174150, 0.300136079392576140, +0.300088384197637950, 0.300040688252478370, 0.299992991557217540, 0.299945294111974180, 0.299897595916867600, 0.299849896972016580, 0.299802197277541260, 0.299754496833560480, +0.299706795640192980, 0.299659093697558940, 0.299611391005777160, 0.299563687564966930, 0.299515983375246990, 0.299468278436737570, 0.299420572749557470, 0.299372866313825870, +0.299325159129661730, 0.299277451197185130, 0.299229742516514850, 0.299182033087770250, 0.299134322911070170, 0.299086611986534630, 0.299038900314282650, 0.298991187894433350, +0.298943474727105700, 0.298895760812419750, 0.298848046150494430, 0.298800330741448570, 0.298752614585402250, 0.298704897682474440, 0.298657180032784410, 0.298609461636450970, +0.298561742493594300, 0.298514022604333300, 0.298466301968787210, 0.298418580587074990, 0.298370858459316710, 0.298323135585631280, 0.298275411966137990, 0.298227687600955800, +0.298179962490204790, 0.298132236634003840, 0.298084510032472330, 0.298036782685729140, 0.297989054593894410, 0.297941325757087040, 0.297893596175425880, 0.297845865849031220, +0.297798134778021860, 0.297750402962517200, 0.297702670402636090, 0.297654937098498720, 0.297607203050223980, 0.297559468257931280, 0.297511732721739470, 0.297463996441768740, +0.297416259418138040, 0.297368521650966670, 0.297320783140373580, 0.297273043886478960, 0.297225303889401770, 0.297177563149261250, 0.297129821666176460, 0.297082079440267490, +0.297034336471653340, 0.296986592760452920, 0.296938848306786460, 0.296891103110772880, 0.296843357172531520, 0.296795610492181340, 0.296747863069842580, 0.296700114905634140, +0.296652365999675430, 0.296604616352085400, 0.296556865962984200, 0.296509114832490870, 0.296461362960724780, 0.296413610347804830, 0.296365856993851260, 0.296318102898983080, +0.296270348063319590, 0.296222592486979850, 0.296174836170084050, 0.296127079112751160, 0.296079321315100560, 0.296031562777251230, 0.295983803499323460, 0.295936043481436150, +0.295888282723708320, 0.295840521226260200, 0.295792758989210760, 0.295744996012679400, 0.295697232296785180, 0.295649467841648310, 0.295601702647387720, 0.295553936714122890, +0.295506170041972830, 0.295458402631057710, 0.295410634481496630, 0.295362865593408960, 0.295315095966913690, 0.295267325602131090, 0.295219554499180190, 0.295171782658180390, +0.295124010079250760, 0.295076236762511490, 0.295028462708081640, 0.294980687916080180, 0.294932912386627440, 0.294885136119842410, 0.294837359115844580, 0.294789581374752920, +0.294741802896687670, 0.294694023681768000, 0.294646243730113220, 0.294598463041842400, 0.294550681617075870, 0.294502899455932610, 0.294455116558532130, 0.294407332924993440, +0.294359548555436780, 0.294311763449981330, 0.294263977608746400, 0.294216191031851150, 0.294168403719415830, 0.294120615671559500, 0.294072826888401250, 0.294025037370061300, +0.293977247116658790, 0.293929456128313120, 0.293881664405143410, 0.293833871947270010, 0.293786078754811890, 0.293738284827888550, 0.293690490166619080, 0.293642694771123810, +0.293594898641521830, 0.293547101777932580, 0.293499304180475150, 0.293451505849269930, 0.293403706784435890, 0.293355906986092600, 0.293308106454359120, 0.293260305189355810, +0.293212503191201730, 0.293164700460016410, 0.293116896995918860, 0.293069092799029540, 0.293021287869467460, 0.292973482207351750, 0.292925675812802770, 0.292877868685939620, +0.292830060826881730, 0.292782252235748330, 0.292734442912659710, 0.292686632857734940, 0.292638822071093650, 0.292591010552854860, 0.292543198303138910, 0.292495385322065040, +0.292447571609752650, 0.292399757166320940, 0.292351941991890300, 0.292304126086579740, 0.292256309450508900, 0.292208492083796840, 0.292160673986563980, 0.292112855158929430, +0.292065035601012320, 0.292017215312933060, 0.291969394294810720, 0.291921572546764980, 0.291873750068914810, 0.291825926861380700, 0.291778102924281800, 0.291730278257737620, +0.291682452861867340, 0.291634626736791300, 0.291586799882628760, 0.291538972299499210, 0.291491143987521790, 0.291443314946816910, 0.291395485177503800, 0.291347654679701920, +0.291299823453530500, 0.291251991499109960, 0.291204158816559420, 0.291156325405998060, 0.291108491267546340, 0.291060656401323340, 0.291012820807448720, 0.290964984486041690, +0.290917147437222520, 0.290869309661110520, 0.290821471157825310, 0.290773631927485900, 0.290725791970212870, 0.290677951286125390, 0.290630109875342990, 0.290582267737984960, +0.290534424874171580, 0.290486581284022220, 0.290438736967656370, 0.290390891925193300, 0.290343046156753380, 0.290295199662455820, 0.290247352442419890, 0.290199504496765960, +0.290151655825613310, 0.290103806429081510, 0.290055956307289750, 0.290008105460358550, 0.289960253888407070, 0.289912401591554960, 0.289864548569921440, 0.289816694823626930, +0.289768840352790710, 0.289720985157532360, 0.289673129237971170, 0.289625272594227550, 0.289577415226420780, 0.289529557134670430, 0.289481698319095810, 0.289433838779817320, +0.289385978516954250, 0.289338117530626270, 0.289290255820952520, 0.289242393388053580, 0.289194530232048660, 0.289146666353056970, 0.289098801751199060, 0.289050936426594130, +0.289003070379361900, 0.288955203609621510, 0.288907336117493590, 0.288859467903097300, 0.288811598966552340, 0.288763729307977950, 0.288715858927494680, 0.288667987825221740, +0.288620116001278850, 0.288572243455785250, 0.288524370188861460, 0.288476496200626710, 0.288428621491200800, 0.288380746060702850, 0.288332869909253440, 0.288284993036971910, +0.288237115443977450, 0.288189237130390630, 0.288141358096330740, 0.288093478341917400, 0.288045597867269960, 0.287997716672508950, 0.287949834757753650, 0.287901952123123810, +0.287854068768738590, 0.287806184694718690, 0.287758299901183290, 0.287710414388252180, 0.287662528156044540, 0.287614641204681050, 0.287566753534280960, 0.287518865144963940, +0.287470976036849400, 0.287423086210057800, 0.287375195664708480, 0.287327304400920800, 0.287279412418815220, 0.287231519718511130, 0.287183626300128280, 0.287135732163785910, +0.287087837309604630, 0.287039941737703750, 0.286992045448203000, 0.286944148441221740, 0.286896250716880570, 0.286848352275298700, 0.286800453116596020, 0.286752553240891720, +0.286704652648306470, 0.286656751338959630, 0.286608849312970870, 0.286560946570459610, 0.286513043111546350, 0.286465138936350510, 0.286417234044991860, 0.286369328437589670, +0.286321422114264530, 0.286273515075135880, 0.286225607320323040, 0.286177698849946590, 0.286129789664125890, 0.286081879762980720, 0.286033969146630430, 0.285986057815195590, +0.285938145768795670, 0.285890233007550400, 0.285842319531579070, 0.285794405341002370, 0.285746490435939690, 0.285698574816510730, 0.285650658482834940, 0.285602741435032950, +0.285554823673224100, 0.285506905197528190, 0.285458986008064570, 0.285411066104953930, 0.285363145488315590, 0.285315224158268990, 0.285267302114934780, 0.285219379358432280, +0.285171455888881320, 0.285123531706401310, 0.285075606811112940, 0.285027681203135490, 0.284979754882588860, 0.284931827849592420, 0.284883900104266840, 0.284835971646731520, +0.284788042477106260, 0.284740112595510460, 0.284692182002064810, 0.284644250696888700, 0.284596318680101930, 0.284548385951823970, 0.284500452512175480, 0.284452518361275890, +0.284404583499244520, 0.284356647926202130, 0.284308711642268120, 0.284260774647562390, 0.284212836942204230, 0.284164898526314440, 0.284116959400012360, 0.284069019563417900, +0.284021079016650470, 0.283973137759830800, 0.283925195793078230, 0.283877253116512740, 0.283829309730253610, 0.283781365634421690, 0.283733420829136330, 0.283685475314517430, +0.283637529090684400, 0.283589582157757980, 0.283541634515857620, 0.283493686165102730, 0.283445737105614050, 0.283397787337511090, 0.283349836860913580, 0.283301885675941060, +0.283253933782714300, 0.283205981181352650, 0.283158027871976080, 0.283110073854704050, 0.283062119129657170, 0.283014163696955090, 0.282966207556717530, 0.282918250709064070, +0.282870293154115380, 0.282822334891990930, 0.282774375922810680, 0.282726416246694090, 0.282678455863761830, 0.282630494774133490, 0.282582532977928850, 0.282534570475267530, +0.282486607266270120, 0.282438643351056230, 0.282390678729745330, 0.282342713402458150, 0.282294747369314150, 0.282246780630433350, 0.282198813185935090, 0.282150845035940290, +0.282102876180568340, 0.282054906619939210, 0.282006936354172400, 0.281958965383388660, 0.281910993707707500, 0.281863021327248890, 0.281815048242132270, 0.281767074452478450, +0.281719099958406990, 0.281671124760037750, 0.281623148857490240, 0.281575172250885350, 0.281527194940342450, 0.281479216925981210, 0.281431238207922320, 0.281383258786285340, +0.281335278661190240, 0.281287297832756470, 0.281239316301104880, 0.281191334066355050, 0.281143351128626820, 0.281095367488039870, 0.281047383144714840, 0.280999398098771390, +0.280951412350329440, 0.280903425899508560, 0.280855438746429540, 0.280807450891211900, 0.280759462333975640, 0.280711473074840290, 0.280663483113926690, 0.280615492451354360, +0.280567501087242930, 0.280519509021713130, 0.280471516254884530, 0.280423522786877210, 0.280375528617810620, 0.280327533747805610, 0.280279538176981810, 0.280231541905459130, +0.280183544933357230, 0.280135547260796810, 0.280087548887897550, 0.280039549814779460, 0.279991550041562070, 0.279943549568366150, 0.279895548395311440, 0.279847546522517810, +0.279799543950104920, 0.279751540678193580, 0.279703536706903400, 0.279655532036354350, 0.279607526666666050, 0.279559520597959410, 0.279511513830353890, 0.279463506363969220, +0.279415498198926190, 0.279367489335344390, 0.279319479773343930, 0.279271469513044270, 0.279223458554566430, 0.279175446898029870, 0.279127434543554760, 0.279079421491260640, +0.279031407741268330, 0.278983393293697530, 0.278935378148668260, 0.278887362306300120, 0.278839345766713990, 0.278791328530029470, 0.278743310596366700, 0.278695291965845190, +0.278647272638585850, 0.278599252614708360, 0.278551231894332290, 0.278503210477578590, 0.278455188364566840, 0.278407165555417110, 0.278359142050249090, 0.278311117849183610, +0.278263092952340310, 0.278215067359839310, 0.278167041071800240, 0.278119014088343940, 0.278070986409590160, 0.278022958035658850, 0.277974928966669750, 0.277926899202743770, +0.277878868744000530, 0.277830837590560100, 0.277782805742542220, 0.277734773200067670, 0.277686739963256210, 0.277638706032227510, 0.277590671407102420, 0.277542636088000670, +0.277494600075042340, 0.277446563368347050, 0.277398525968035830, 0.277350487874228280, 0.277302449087044490, 0.277254409606604140, 0.277206369433028230, 0.277158328566436410, +0.277110287006948730, 0.277062244754684880, 0.277014201809765880, 0.276966158172311410, 0.276918113842441470, 0.276870068820275870, 0.276822023105935510, 0.276773976699540130, +0.276725929601209790, 0.276677881811064170, 0.276629833329224250, 0.276581784155809810, 0.276533734290940470, 0.276485683734737200, 0.276437632487319730, 0.276389580548808190, +0.276341527919322260, 0.276293474598982900, 0.276245420587909910, 0.276197365886223340, 0.276149310494042950, 0.276101254411489690, 0.276053197638683300, 0.276005140175743900, +0.275957082022791230, 0.275909023179946310, 0.275860963647328820, 0.275812903425058930, 0.275764842513256340, 0.275716780912042050, 0.275668718621535860, 0.275620655641857390, +0.275572591973127780, 0.275524527615466640, 0.275476462568994160, 0.275428396833830140, 0.275380330410095520, 0.275332263297910110, 0.275284195497394020, 0.275236127008667010, +0.275188057831850130, 0.275139987967063070, 0.275091917414426070, 0.275043846174058860, 0.274995774246082400, 0.274947701630616600, 0.274899628327781480, 0.274851554337696870, +0.274803479660483800, 0.274755404296262050, 0.274707328245151370, 0.274659251507272770, 0.274611174082746050, 0.274563095971691370, 0.274515017174228550, 0.274466937690478640, +0.274418857520561330, 0.274370776664596920, 0.274322695122705130, 0.274274612895007040, 0.274226529981622390, 0.274178446382671410, 0.274130362098273910, 0.274082277128550930, +0.274034191473622290, 0.273986105133608100, 0.273938018108628280, 0.273889930398803830, 0.273841842004254540, 0.273793752925100220, 0.273745663161461930, 0.273697572713459510, +0.273649481581213110, 0.273601389764842660, 0.273553297264469090, 0.273505204080212340, 0.273457110212192540, 0.273409015660529500, 0.273360920425344430, 0.273312824506756980, +0.273264727904887540, 0.273216630619855790, 0.273168532651782920, 0.273120434000788730, 0.273072334666993490, 0.273024234650516890, 0.272976133951480240, 0.272928032570003140, +0.272879930506206070, 0.272831827760208650, 0.272783724332132160, 0.272735620222096350, 0.272687515430221020, 0.272639409956627330, 0.272591303801435150, 0.272543196964764700, +0.272495089446735840, 0.272446981247469690, 0.272398872367086040, 0.272350762805705250, 0.272302652563447100, 0.272254541640432780, 0.272206430036782080, 0.272158317752615340, +0.272110204788052310, 0.272062091143214280, 0.272013976818220930, 0.271965861813192710, 0.271917746128249370, 0.271869629763512140, 0.271821512719100770, 0.271773394995135250, +0.271725276591736620, 0.271677157509024820, 0.271629037747120160, 0.271580917306142420, 0.271532796186212840, 0.271484674387451270, 0.271436551909978010, 0.271388428753912950, +0.271340304919377270, 0.271292180406490780, 0.271244055215373870, 0.271195929346146390, 0.271147802798929530, 0.271099675573843120, 0.271051547671007530, 0.271003419090542650, +0.270955289832569670, 0.270907159897208480, 0.270859029284578890, 0.270810897994802240, 0.270762766027998310, 0.270714633384287420, 0.270666500063789560, 0.270618366066625870, +0.270570231392916300, 0.270522096042781100, 0.270473960016340280, 0.270425823313714950, 0.270377685935025090, 0.270329547880390990, 0.270281409149932590, 0.270233269743771150, +0.270185129662026460, 0.270136988904819020, 0.270088847472268630, 0.270040705364496540, 0.269992562581622740, 0.269944419123767490, 0.269896274991050730, 0.269848130183593770, +0.269799984701516500, 0.269751838544938780, 0.269703691713981950, 0.269655544208765860, 0.269607396029410920, 0.269559247176037020, 0.269511097648765460, 0.269462947447716210, +0.269414796573009540, 0.269366645024765430, 0.269318492803105160, 0.269270339908148640, 0.269222186340016320, 0.269174032098828060, 0.269125877184705150, 0.269077721597767550, +0.269029565338135660, 0.268981408405929430, 0.268933250801270120, 0.268885092524277670, 0.268836933575072050, 0.268788773953774540, 0.268740613660505060, 0.268692452695384050, +0.268644291058531490, 0.268596128750068660, 0.268547965770115530, 0.268499802118792430, 0.268451637796219390, 0.268403472802517700, 0.268355307137807360, 0.268307140802208690, +0.268258973795841790, 0.268210806118827860, 0.268162637771286960, 0.268114468753339390, 0.268066299065105260, 0.268018128706705830, 0.267969957678261040, 0.267921785979890970, +0.267873613611716850, 0.267825440573858650, 0.267777266866436940, 0.267729092489571550, 0.267680917443383900, 0.267632741727993950, 0.267584565343522150, 0.267536388290088470, +0.267488210567814300, 0.267440032176819550, 0.267391853117224740, 0.267343673389149880, 0.267295492992716270, 0.267247311928043910, 0.267199130195253320, 0.267150947794464410, +0.267102764725798580, 0.267054580989375840, 0.267006396585316220, 0.266958211513741050, 0.266910025774770350, 0.266861839368524590, 0.266813652295123770, 0.266765464554689300, +0.266717276147341140, 0.266669087073199750, 0.266620897332385250, 0.266572706925018940, 0.266524515851220890, 0.266476324111111500, 0.266428131704810890, 0.266379938632440420, +0.266331744894120040, 0.266283550489970320, 0.266235355420111290, 0.266187159684664330, 0.266138963283749420, 0.266090766217487170, 0.266042568485997500, 0.265994370089401910, +0.265946171027820370, 0.265897971301372940, 0.265849770910181030, 0.265801569854364710, 0.265753368134044430, 0.265705165749340330, 0.265656962700373760, 0.265608758987264770, +0.265560554610133840, 0.265512349569101140, 0.265464143864287960, 0.265415937495814490, 0.265367730463801130, 0.265319522768368010, 0.265271314409636530, 0.265223105387726700, +0.265174895702759210, 0.265126685354853950, 0.265078474344132450, 0.265030262670714780, 0.264982050334721050, 0.264933837336272570, 0.264885623675489510, 0.264837409352492390, +0.264789194367401340, 0.264740978720337690, 0.264692762411421640, 0.264644545440773650, 0.264596327808513890, 0.264548109514763760, 0.264499890559643290, 0.264451670943273150, +0.264403450665773370, 0.264355229727265440, 0.264307008127869390, 0.264258785867705850, 0.264210562946894880, 0.264162339365557940, 0.264114115123815160, 0.264065890221786670, +0.264017664659593920, 0.263969438437356930, 0.263921211555196380, 0.263872984013232390, 0.263824755811586380, 0.263776526950378450, 0.263728297429729200, 0.263680067249758790, +0.263631836410588630, 0.263583604912338900, 0.263535372755130120, 0.263487139939082520, 0.263438906464317450, 0.263390672330955140, 0.263342437539116180, 0.263294202088920680, +0.263245965980490100, 0.263197729213944580, 0.263149491789404780, 0.263101253706990780, 0.263053014966824090, 0.263004775569024910, 0.262956535513713290, 0.262908294801010800, +0.262860053431037580, 0.262811811403914190, 0.262763568719760860, 0.262715325378699070, 0.262667081380848930, 0.262618836726331070, 0.262570591415265730, 0.262522345447774310, +0.262474098823977040, 0.262425851543994500, 0.262377603607946930, 0.262329355015955780, 0.262281105768141230, 0.262232855864623970, 0.262184605305524070, 0.262136354090963140, +0.262088102221061270, 0.262039849695938740, 0.261991596515717020, 0.261943342680516330, 0.261895088190457260, 0.261846833045660030, 0.261798577246246170, 0.261750320792335840, +0.261702063684049690, 0.261653805921508000, 0.261605547504832230, 0.261557288434142550, 0.261509028709559670, 0.261460768331203800, 0.261412507299196410, 0.261364245613657790, +0.261315983274708510, 0.261267720282468860, 0.261219456637060370, 0.261171192338603200, 0.261122927387217650, 0.261074661783025190, 0.261026395526146040, 0.260978128616700940, +0.260929861054810090, 0.260881592840595030, 0.260833323974175970, 0.260785054455673630, 0.260736784285208190, 0.260688513462901230, 0.260640241988872980, 0.260591969863244120, +0.260543697086134950, 0.260495423657666920, 0.260447149577960340, 0.260398874847135920, 0.260350599465313800, 0.260302323432615720, 0.260254046749161750, 0.260205769415072290, +0.260157491430468790, 0.260109212795471560, 0.260060933510201320, 0.260012653574778320, 0.259964372989324120, 0.259916091753958970, 0.259867809868803590, 0.259819527333978280, +0.259771244149604560, 0.259722960315802720, 0.259674675832693490, 0.259626390700397170, 0.259578104919035270, 0.259529818488728140, 0.259481531409596400, 0.259433243681760460, +0.259384955305341840, 0.259336666280460810, 0.259288376607238080, 0.259240086285794040, 0.259191795316250200, 0.259143503698726850, 0.259095211433344350, 0.259046918520224210, +0.258998624959486780, 0.258950330751252790, 0.258902035895642530, 0.258853740392777640, 0.258805444242778400, 0.258757147445765560, 0.258708850001859390, 0.258660551911181540, +0.258612253173852280, 0.258563953789992420, 0.258515653759722240, 0.258467353083163380, 0.258419051760436110, 0.258370749791661190, 0.258322447176959010, 0.258274143916451150, +0.258225840010257890, 0.258177535458499590, 0.258129230261297920, 0.258080924418773170, 0.258032617931046090, 0.257984310798237030, 0.257936003020467650, 0.257887694597858210, +0.257839385530529600, 0.257791075818602060, 0.257742765462197270, 0.257694454461435570, 0.257646142816437720, 0.257597830527324100, 0.257549517594216350, 0.257501204017234750, +0.257452889796500160, 0.257404574932132920, 0.257356259424254720, 0.257307943272985840, 0.257259626478446630, 0.257211309040758840, 0.257162990960042750, 0.257114672236419210, +0.257066352870008510, 0.257018032860932390, 0.256969712209311200, 0.256921390915265670, 0.256873068978916320, 0.256824746400384660, 0.256776423179791160, 0.256728099317256600, +0.256679774812901380, 0.256631449666847140, 0.256583123879214230, 0.256534797450123590, 0.256486470379695460, 0.256438142668051650, 0.256389814315312440, 0.256341485321598670, +0.256293155687030820, 0.256244825411730440, 0.256196494495818050, 0.256148162939414000, 0.256099830742639920, 0.256051497905616320, 0.256003164428463940, 0.255954830311303230, +0.255906495554255880, 0.255858160157442280, 0.255809824120983300, 0.255761487444999270, 0.255713150129611990, 0.255664812174941860, 0.255616473581109670, 0.255568134348235890, +0.255519794476442190, 0.255471453965849030, 0.255423112816577200, 0.255374771028747170, 0.255326428602480620, 0.255278085537898050, 0.255229741835119760, 0.255181397494267600, +0.255133052515461920, 0.255084706898823680, 0.255036360644473160, 0.254988013752532220, 0.254939666223121200, 0.254891318056361060, 0.254842969252372150, 0.254794619811276270, +0.254746269733193860, 0.254697919018245730, 0.254649567666552390, 0.254601215678235570, 0.254552863053415730, 0.254504509792213730, 0.254456155894750010, 0.254407801361146320, +0.254359446191523120, 0.254311090386000920, 0.254262733944701390, 0.254214376867745010, 0.254166019155252720, 0.254117660807344940, 0.254069301824143450, 0.254020942205768650, +0.253972581952341570, 0.253924221063982550, 0.253875859540813430, 0.253827497382954680, 0.253779134590527140, 0.253730771163651390, 0.253682407102449100, 0.253634042407040850, +0.253585677077547420, 0.253537311114089390, 0.253488944516788550, 0.253440577285765300, 0.253392209421140210, 0.253343840923035020, 0.253295471791570190, 0.253247102026866730, +0.253198731629045050, 0.253150360598226990, 0.253101988934533060, 0.253053616638084120, 0.253005243709000680, 0.252956870147404640, 0.252908495953416360, 0.252860121127156830, +0.252811745668746650, 0.252763369578307470, 0.252714992855959890, 0.252666615501824790, 0.252618237516022750, 0.252569858898675560, 0.252521479649903680, 0.252473099769828120, +0.252424719258569410, 0.252376338116249320, 0.252327956342988380, 0.252279573938907100, 0.252231190904127320, 0.252182807238769570, 0.252134422942954790, 0.252086038016803570, +0.252037652460437630, 0.251989266273977610, 0.251940879457544400, 0.251892492011258520, 0.251844103935241930, 0.251795715229615020, 0.251747325894498830, 0.251698935930013860, +0.251650545336282060, 0.251602154113423850, 0.251553762261560230, 0.251505369780811780, 0.251456976671300400, 0.251408582933146500, 0.251360188566470740, 0.251311793571394990, +0.251263397948039700, 0.251215001696525940, 0.251166604816974230, 0.251118207309506460, 0.251069809174243150, 0.251021410411305320, 0.250973011020813540, 0.250924611002889650, +0.250876210357654230, 0.250827809085228280, 0.250779407185732440, 0.250731004659288440, 0.250682601506016960, 0.250634197726038950, 0.250585793319475060, 0.250537388286447060, +0.250488982627075640, 0.250440576341481310, 0.250392169429785980, 0.250343761892110220, 0.250295353728575090, 0.250246944939301110, 0.250198535524410180, 0.250150125484022930, +0.250101714818260380, 0.250053303527243090, 0.250004891611092960, 0.249956479069930650, 0.249908065903877120, 0.249859652113053000, 0.249811237697580150, 0.249762822657579240, +0.249714406993171270, 0.249665990704476840, 0.249617573791617860, 0.249569156254714960, 0.249520738093889170, 0.249472319309261090, 0.249423899900952650, 0.249375479869084450, +0.249327059213777120, 0.249278637935152590, 0.249230216033331450, 0.249181793508434780, 0.249133370360583200, 0.249084946589898630, 0.249036522196501660, 0.248988097180513430, +0.248939671542054490, 0.248891245281246810, 0.248842818398211040, 0.248794390893068210, 0.248745962765938940, 0.248697534016945220, 0.248649104646207680, 0.248600674653847360, +0.248552244039984940, 0.248503812804742320, 0.248455380948240180, 0.248406948470599160, 0.248358515371941200, 0.248310081652386940, 0.248261647312057470, 0.248213212351073460, +0.248164776769556870, 0.248116340567628320, 0.248067903745408910, 0.248019466303019330, 0.247971028240581510, 0.247922589558216110, 0.247874150256044230, 0.247825710334186540, +0.247777269792765040, 0.247728828631900350, 0.247680386851713560, 0.247631944452325420, 0.247583501433857820, 0.247535057796431480, 0.247486613540167040, 0.247438168665186530, +0.247389723171610560, 0.247341277059560330, 0.247292830329156440, 0.247244382980520930, 0.247195935013774430, 0.247147486429038110, 0.247099037226432640, 0.247050587406080020, +0.247002136968100920, 0.246953685912616490, 0.246905234239747420, 0.246856781949615660, 0.246808329042341980, 0.246759875518047460, 0.246711421376852810, 0.246662966618880070, +0.246614511244249910, 0.246566055253083010, 0.246517598645501430, 0.246469141421625850, 0.246420683581577400, 0.246372225125476820, 0.246323766053446110, 0.246275306365605990, +0.246226846062077590, 0.246178385142981650, 0.246129923608440190, 0.246081461458573900, 0.246032998693503980, 0.245984535313351130, 0.245936071318237360, 0.245887606708283410, +0.245839141483610440, 0.245790675644339210, 0.245742209190591700, 0.245693742122488650, 0.245645274440151270, 0.245596806143700270, 0.245548337233257700, 0.245499867708944270, +0.245451397570880750, 0.245402926819189150, 0.245354455453990260, 0.245305983475405220, 0.245257510883554770, 0.245209037678561000, 0.245160563860544630, 0.245112089429626840, +0.245063614385928390, 0.245015138729571340, 0.244966662460676470, 0.244918185579364930, 0.244869708085757480, 0.244821229979976180, 0.244772751262141850, 0.244724271932375610, +0.244675791990798280, 0.244627311437531890, 0.244578830272697200, 0.244530348496415030, 0.244481866108807400, 0.244433383109995130, 0.244384899500099400, 0.244336415279240960, +0.244287930447541930, 0.244239445005123100, 0.244190958952105630, 0.244142472288610330, 0.244093985014759290, 0.244045497130673280, 0.243997008636473530, 0.243948519532280830, +0.243900029818217260, 0.243851539494403640, 0.243803048560961130, 0.243754557018010580, 0.243706064865674090, 0.243657572104072410, 0.243609078733326380, 0.243560584753558100, +0.243512090164888340, 0.243463594967438360, 0.243415099161328970, 0.243366602746682230, 0.243318105723619030, 0.243269608092260530, 0.243221109852727600, 0.243172611005142310, +0.243124111549625520, 0.243075611486298420, 0.243027110815281860, 0.242978609536697980, 0.242930107650667550, 0.242881605157311890, 0.242833102056751740, 0.242784598349109290, +0.242736094034505360, 0.242687589113061150, 0.242639083584897580, 0.242590577450136710, 0.242542070708899380, 0.242493563361306480, 0.242445055407480100, 0.242396546847541060, +0.242348037681610650, 0.242299527909809710, 0.242251017532260420, 0.242202506549083570, 0.242153994960400440, 0.242105482766331900, 0.242056969967000070, 0.242008456562525840, +0.241959942553030440, 0.241911427938634790, 0.241862912719460980, 0.241814396895629890, 0.241765880467262800, 0.241717363434480580, 0.241668845797405380, 0.241620327556158090, +0.241571808710859540, 0.241523289261631880, 0.241474769208596010, 0.241426248551873220, 0.241377727291584350, 0.241329205427851630, 0.241280682960795880, 0.241232159890538420, +0.241183636217200150, 0.241135111940903200, 0.241086587061768500, 0.241038061579917310, 0.240989535495470530, 0.240941008808550320, 0.240892481519277640, 0.240843953627773720, +0.240795425134159500, 0.240746896038557150, 0.240698366341087540, 0.240649836041871600, 0.240601305141031510, 0.240552773638688130, 0.240504241534962830, 0.240455708829976520, +0.240407175523851320, 0.240358641616708220, 0.240310107108668510, 0.240261571999853100, 0.240213036290384180, 0.240164499980382670, 0.240115963069969930, 0.240067425559266830, +0.240018887448395610, 0.239970348737477160, 0.239921809426632850, 0.239873269515983560, 0.239824729005651550, 0.239776187895757720, 0.239727646186423000, 0.239679103877769580, +0.239630560969918390, 0.239582017462990820, 0.239533473357107760, 0.239484928652391430, 0.239436383348962810, 0.239387837446943220, 0.239339290946453620, 0.239290743847616200, +0.239242196150551920, 0.239193647855382160, 0.239145098962227850, 0.239096549471211230, 0.239047999382453250, 0.238999448696075260, 0.238950897412198190, 0.238902345530944330, +0.238853793052434590, 0.238805239976790400, 0.238756686304132660, 0.238708132034583630, 0.238659577168264280, 0.238611021705295550, 0.238562465645799690, 0.238513908989897690, +0.238465351737710880, 0.238416793889360300, 0.238368235444968160, 0.238319676404655400, 0.238271116768543480, 0.238222556536753340, 0.238173995709407200, 0.238125434286626110, +0.238076872268531410, 0.238028309655244130, 0.237979746446886460, 0.237931182643579460, 0.237882618245444520, 0.237834053252602570, 0.237785487665175900, 0.237736921483285540, +0.237688354707052460, 0.237639787336598910, 0.237591219372045890, 0.237542650813514810, 0.237494081661126680, 0.237445511915003790, 0.237396941575267110, 0.237348370642038060, +0.237299799115437670, 0.237251226995588200, 0.237202654282610700, 0.237154080976626520, 0.237105507077756740, 0.237056932586123590, 0.237008357501848150, 0.236959781825051790, +0.236911205555855540, 0.236862628694381710, 0.236814051240751330, 0.236765473195085370, 0.236716894557506160, 0.236668315328134730, 0.236619735507092480, 0.236571155094500500, +0.236522574090481020, 0.236473992495155130, 0.236425410308644250, 0.236376827531069420, 0.236328244162552960, 0.236279660203215890, 0.236231075653179660, 0.236182490512565320, +0.236133904781495180, 0.236085318460090260, 0.236036731548472050, 0.235988144046761610, 0.235939555955081200, 0.235890967273551940, 0.235842378002295240, 0.235793788141432150, +0.235745197691085040, 0.235696606651374930, 0.235648015022422890, 0.235599422804351230, 0.235550829997281000, 0.235502236601333710, 0.235453642616630380, 0.235405048043293400, +0.235356452881443800, 0.235307857131203060, 0.235259260792692220, 0.235210663866033680, 0.235162066351348480, 0.235113468248758120, 0.235064869558383650, 0.235016270280347470, +0.234967670414770570, 0.234919069961774530, 0.234870468921480360, 0.234821867294010440, 0.234773265079485870, 0.234724662278027710, 0.234676058889758320, 0.234627454914798780, +0.234578850353270580, 0.234530245205294860, 0.234481639470993960, 0.234433033150488940, 0.234384426243901350, 0.234335818751352260, 0.234287210672964040, 0.234238602008857790, +0.234189992759155060, 0.234141382923976900, 0.234092772503445730, 0.234044161497682620, 0.233995549906809100, 0.233946937730946300, 0.233898324970216560, 0.233849711624741020, +0.233801097694640750, 0.233752483180038190, 0.233703868081054420, 0.233655252397810960, 0.233606636130428950, 0.233558019279030800, 0.233509401843737590, 0.233460783824670860, +0.233412165221951740, 0.233363546035702670, 0.233314926266044690, 0.233266305913099440, 0.233217684976987970, 0.233169063457832700, 0.233120441355754800, 0.233071818670875790, +0.233023195403316810, 0.232974571553200250, 0.232925947120647290, 0.232877322105779020, 0.232828696508717880, 0.232780070329584980, 0.232731443568501920, 0.232682816225589810, +0.232634188300971100, 0.232585559794766920, 0.232536930707098830, 0.232488301038087990, 0.232439670787856820, 0.232391039956526490, 0.232342408544218530, 0.232293776551054150, +0.232245143977155730, 0.232196510822644480, 0.232147877087641950, 0.232099242772269290, 0.232050607876648940, 0.232001972400902090, 0.231953336345150310, 0.231904699709514740, +0.231856062494117860, 0.231807424699080830, 0.231758786324524790, 0.231710147370572240, 0.231661507837344290, 0.231612867724962620, 0.231564227033548310, 0.231515585763223870, +0.231466943914110460, 0.231418301486329720, 0.231369658480002770, 0.231321014895252110, 0.231272370732198920, 0.231223725990964770, 0.231175080671670920, 0.231126434774439780, +0.231077788299392540, 0.231029141246650860, 0.230980493616335880, 0.230931845408570090, 0.230883196623474670, 0.230834547261170860, 0.230785897321781120, 0.230737246805426620, +0.230688595712228990, 0.230639944042309450, 0.230591291795790490, 0.230542638972793280, 0.230493985573439500, 0.230445331597850300, 0.230396677046148220, 0.230348021918454440, +0.230299366214890610, 0.230250709935577920, 0.230202053080638900, 0.230153395650194740, 0.230104737644367120, 0.230056079063277190, 0.230007419907047510, 0.229958760175799280, +0.229910099869653690, 0.229861438988733320, 0.229812777533159320, 0.229764115503053400, 0.229715452898536760, 0.229666789719731900, 0.229618125966760090, 0.229569461639742960, +0.229520796738801710, 0.229472131264058940, 0.229423465215635840, 0.229374798593654060, 0.229326131398234850, 0.229277463629500770, 0.229228795287573010, 0.229180126372573260, +0.229131456884622780, 0.229082786823844060, 0.229034116190358410, 0.228985444984287440, 0.228936773205752430, 0.228888100854875930, 0.228839427931779170, 0.228790754436583420, +0.228742080369411180, 0.228693405730383770, 0.228644730519622860, 0.228596054737249670, 0.228547378383386760, 0.228498701458155430, 0.228450023961677350, 0.228401345894073770, +0.228352667255467240, 0.228303988045979070, 0.228255308265730930, 0.228206627914844060, 0.228157946993441080, 0.228109265501643200, 0.228060583439572200, 0.228011900807349260, +0.227963217605097020, 0.227914533832936750, 0.227865849490989700, 0.227817164579378480, 0.227768479098224340, 0.227719793047648970, 0.227671106427773720, 0.227622419238721120, +0.227573731480612500, 0.227525043153569530, 0.227476354257713510, 0.227427664793167030, 0.227378974760051420, 0.227330284158488350, 0.227281592988599150, 0.227232901250506410, +0.227184208944331390, 0.227135516070195860, 0.227086822628221110, 0.227038128618529730, 0.226989434041243030, 0.226940738896482310, 0.226892043184370170, 0.226843346905027940, +0.226794650058577350, 0.226745952645139690, 0.226697254664837560, 0.226648556117792330, 0.226599857004125690, 0.226551157323958970, 0.226502457077414790, 0.226453756264614480, +0.226405054885679770, 0.226356352940732000, 0.226307650429893760, 0.226258947353286420, 0.226210243711031680, 0.226161539503250940, 0.226112834730066740, 0.226064129391600480, +0.226015423487973460, 0.225966717019308320, 0.225918009985726390, 0.225869302387349420, 0.225820594224298760, 0.225771885496697050, 0.225723176204665640, 0.225674466348326270, +0.225625755927800320, 0.225577044943210400, 0.225528333394677870, 0.225479621282324520, 0.225430908606271680, 0.225382195366642000, 0.225333481563556810, 0.225284767197137940, +0.225236052267506700, 0.225187336774785780, 0.225138620719096520, 0.225089904100560710, 0.225041186919299700, 0.224992469175436140, 0.224943750869091410, 0.224895032000386880, +0.224846312569445210, 0.224797592576387760, 0.224748872021336310, 0.224700150904412250, 0.224651429225738270, 0.224602706985435690, 0.224553984183626380, 0.224505260820431650, +0.224456536895974200, 0.224407812410375410, 0.224359087363757060, 0.224310361756240610, 0.224261635587948650, 0.224212908859002640, 0.224164181569524330, 0.224115453719635120, +0.224066725309457730, 0.224017996339113540, 0.223969266808723890, 0.223920536718411530, 0.223871806068297850, 0.223823074858504610, 0.223774343089153280, 0.223725610760366510, +0.223676877872265730, 0.223628144424972720, 0.223579410418608960, 0.223530675853297080, 0.223481940729158500, 0.223433205046315090, 0.223384468804888240, 0.223335732005000650, +0.223286994646773710, 0.223238256730329290, 0.223189518255788810, 0.223140779223274970, 0.223092039632909160, 0.223043299484812830, 0.222994558779108680, 0.222945817515918130, +0.222897075695363040, 0.222848333317564820, 0.222799590382646210, 0.222750846890728630, 0.222702102841933920, 0.222653358236383550, 0.222604613074200180, 0.222555867355505280, +0.222507121080420730, 0.222458374249067950, 0.222409626861569650, 0.222360878918047290, 0.222312130418622720, 0.222263381363417420, 0.222214631752554070, 0.222165881586154160, +0.222117130864339540, 0.222068379587231630, 0.222019627754953240, 0.221970875367625780, 0.221922122425370680, 0.221873368928310720, 0.221824614876567350, 0.221775860270262410, +0.221727105109517430, 0.221678349394455080, 0.221629593125196890, 0.221580836301864700, 0.221532078924579990, 0.221483320993465520, 0.221434562508642710, 0.221385803470233540, +0.221337043878359400, 0.221288283733143100, 0.221239523034706090, 0.221190761783170260, 0.221141999978657110, 0.221093237621289380, 0.221044474711188570, 0.220995711248476140, +0.220946947233274850, 0.220898182665706180, 0.220849417545892070, 0.220800651873954010, 0.220751885650014720, 0.220703118874195720, 0.220654351546618940, 0.220605583667405820, +0.220556815236679190, 0.220508046254560520, 0.220459276721171740, 0.220410506636634330, 0.220361736001071090, 0.220312964814603520, 0.220264193077353510, 0.220215420789442620, +0.220166647950993580, 0.220117874562127950, 0.220069100622967170, 0.220020326133634090, 0.219971551094250180, 0.219922775504937410, 0.219873999365817250, 0.219825222677012540, +0.219776445438644770, 0.219727667650835870, 0.219678889313707380, 0.219630110427382120, 0.219581330991981540, 0.219532551007627670, 0.219483770474441980, 0.219434989392547300, +0.219386207762065130, 0.219337425583117470, 0.219288642855825780, 0.219239859580312950, 0.219191075756700440, 0.219142291385110270, 0.219093506465663920, 0.219044720998484240, +0.218995934983692740, 0.218947148421411000, 0.218898361311761800, 0.218849573654866710, 0.218800785450847690, 0.218751996699826260, 0.218703207401925280, 0.218654417557266280, +0.218605627165971230, 0.218556836228161690, 0.218508044743960460, 0.218459252713489150, 0.218410460136869710, 0.218361667014223690, 0.218312873345673920, 0.218264079131341960, +0.218215284371349820, 0.218166489065819040, 0.218117693214872450, 0.218068896818631650, 0.218020099877218150, 0.217971302390754850, 0.217922504359363280, 0.217873705783165480, +0.217824906662282940, 0.217776106996838610, 0.217727306786953980, 0.217678506032751100, 0.217629704734351500, 0.217580902891878090, 0.217532100505452440, 0.217483297575196490, +0.217434494101231920, 0.217385690083681500, 0.217336885522666890, 0.217288080418310050, 0.217239274770732570, 0.217190468580057330, 0.217141661846405960, 0.217092854569899960, +0.217044046750662270, 0.216995238388814460, 0.216946429484478560, 0.216897620037776160, 0.216848810048830140, 0.216799999517762080, 0.216751188444694040, 0.216702376829747580, +0.216653564673045640, 0.216604751974709740, 0.216555938734862010, 0.216507124953623980, 0.216458310631118560, 0.216409495767467370, 0.216360680362792430, 0.216311864417215390, +0.216263047930859100, 0.216214230903845170, 0.216165413336295270, 0.216116595228332240, 0.216067776580077730, 0.216018957391653780, 0.215970137663182020, 0.215921317394785320, +0.215872496586585360, 0.215823675238704130, 0.215774853351263280, 0.215726030924385750, 0.215677207958193120, 0.215628384452807490, 0.215579560408350470, 0.215530735824944950, +0.215481910702712610, 0.215433085041775500, 0.215384258842255230, 0.215335432104274750, 0.215286604827955700, 0.215237777013420150, 0.215188948660789690, 0.215140119770187320, +0.215091290341734630, 0.215042460375553270, 0.214993629871766230, 0.214944798830495080, 0.214895967251861970, 0.214847135135988490, 0.214798302482997610, 0.214749469293010950, +0.214700635566150650, 0.214651801302538300, 0.214602966502296900, 0.214554131165548080, 0.214505295292413940, 0.214456458883016090, 0.214407621937477560, 0.214358784455919970, +0.214309946438465430, 0.214261107885235590, 0.214212268796353380, 0.214163429171940530, 0.214114589012118660, 0.214065748317010750, 0.214016907086738480, 0.213968065321423960, +0.213919223021188790, 0.213870380186156030, 0.213821536816447330, 0.213772692912184760, 0.213723848473490050, 0.213675003500486150, 0.213626157993294740, 0.213577311952037910, +0.213528465376837400, 0.213479618267816140, 0.213430770625095830, 0.213381922448798610, 0.213333073739046140, 0.213284224495961410, 0.213235374719666140, 0.213186524410281990, +0.213137673567931950, 0.213088822192737750, 0.213039970284821490, 0.212991117844304860, 0.212942264871310880, 0.212893411365961240, 0.212844557328378060, 0.212795702758683060, +0.212746847656999220, 0.212697992023448270, 0.212649135858152370, 0.212600279161233170, 0.212551421932813710, 0.212502564173015690, 0.212453705881961250, 0.212404847059772140, +0.212355987706571330, 0.212307127822480540, 0.212258267407621940, 0.212209406462117250, 0.212160544986089470, 0.212111682979660320, 0.212062820442951520, 0.212013957376086140, +0.211965093779185820, 0.211916229652372810, 0.211867364995768750, 0.211818499809496740, 0.211769634093678470, 0.211720767848436130, 0.211671901073891420, 0.211623033770167390, +0.211574165937385790, 0.211525297575668760, 0.211476428685138080, 0.211427559265916720, 0.211378689318126480, 0.211329818841889530, 0.211280947837327590, 0.211232076304563730, +0.211183204243719640, 0.211134331654917130, 0.211085458538279230, 0.211036584893927680, 0.210987710721984660, 0.210938836022571930, 0.210889960795812570, 0.210841085041828270, +0.210792208760741280, 0.210743331952673340, 0.210694454617747500, 0.210645576756085500, 0.210596698367809590, 0.210547819453041460, 0.210498940011904250, 0.210450060044519690, +0.210401179551009950, 0.210352298531496870, 0.210303416986103440, 0.210254534914951500, 0.210205652318162770, 0.210156769195860320, 0.210107885548165980, 0.210059001375201920, +0.210010116677089940, 0.209961231453953070, 0.209912345705913130, 0.209863459433092340, 0.209814572635612460, 0.209765685313596570, 0.209716797467166480, 0.209667909096444390, +0.209619020201552100, 0.209570130782612690, 0.209521240839747960, 0.209472350373080120, 0.209423459382730990, 0.209374567868823610, 0.209325675831479850, 0.209276783270821440, +0.209227890186971490, 0.209178996580051850, 0.209130102450184710, 0.209081207797491870, 0.209032312622096460, 0.208983416924120260, 0.208934520703685510, 0.208885623960914010, +0.208836726695928930, 0.208787828908852000, 0.208738930599805500, 0.208690031768911240, 0.208641132416292340, 0.208592232542070600, 0.208543332146368300, 0.208494431229307220, +0.208445529791010500, 0.208396627831599960, 0.208347725351197830, 0.208298822349925970, 0.208249918827907500, 0.208201014785264200, 0.208152110222117960, 0.208103205138591870, +0.208054299534807750, 0.208005393410887920, 0.207956486766954140, 0.207907579603129580, 0.207858671919536080, 0.207809763716295890, 0.207760854993530860, 0.207711945751364150, +0.207663035989917530, 0.207614125709313370, 0.207565214909673420, 0.207516303591120890, 0.207467391753777600, 0.207418479397765840, 0.207369566523207430, 0.207320653130225550, +0.207271739218942010, 0.207222824789478700, 0.207173909841958770, 0.207124994376504080, 0.207076078393236880, 0.207027161892279070, 0.206978244873753770, 0.206929327337782850, +0.206880409284488640, 0.206831490713992950, 0.206782571626419000, 0.206733652021888590, 0.206684731900524050, 0.206635811262447260, 0.206586890107781390, 0.206537968436648260, +0.206489046249170250, 0.206440123545469150, 0.206391200325668180, 0.206342276589889240, 0.206293352338254160, 0.206244427570886120, 0.206195502287907010, 0.206146576489439150, +0.206097650175604440, 0.206048723346526020, 0.205999796002325790, 0.205950868143126050, 0.205901939769048750, 0.205853010880216990, 0.205804081476752720, 0.205755151558778240, +0.205706221126415480, 0.205657290179787570, 0.205608358719016450, 0.205559426744224420, 0.205510494255533390, 0.205461561253066580, 0.205412627736945850, 0.205363693707293540, +0.205314759164231590, 0.205265824107883130, 0.205216888538370140, 0.205167952455814510, 0.205119015860339430, 0.205070078752066790, 0.205021141131118940, 0.204972202997617840, +0.204923264351686650, 0.204874325193447280, 0.204825385523022120, 0.204776445340533080, 0.204727504646103340, 0.204678563439854830, 0.204629621721909930, 0.204580679492390530, +0.204531736751419860, 0.204482793499119850, 0.204433849735612880, 0.204384905461020810, 0.204335960675466940, 0.204287015379073180, 0.204238069571961420, 0.204189123254254920, +0.204140176426075630, 0.204091229087545900, 0.204042281238787650, 0.203993332879924130, 0.203944384011077280, 0.203895434632369480, 0.203846484743922640, 0.203797534345860040, +0.203748583438303600, 0.203699632021375700, 0.203650680095198290, 0.203601727659894620, 0.203552774715586610, 0.203503821262396690, 0.203454867300446760, 0.203405912829860090, +0.203356957850758660, 0.203308002363264410, 0.203259046367500560, 0.203210089863589100, 0.203161132851652440, 0.203112175331812470, 0.203063217304192520, 0.203014258768914550, +0.202965299726100920, 0.202916340175873590, 0.202867380118355840, 0.202818419553669670, 0.202769458481937420, 0.202720496903281090, 0.202671534817823960, 0.202622572225688020, +0.202573609126995620, 0.202524645521868770, 0.202475681410430740, 0.202426716792803500, 0.202377751669109040, 0.202328786039470660, 0.202279819904010280, 0.202230853262850370, +0.202181886116112870, 0.202132918463921120, 0.202083950306397030, 0.202034981643663100, 0.201986012475841280, 0.201937042803054860, 0.201888072625425820, 0.201839101943076610, +0.201790130756129230, 0.201741159064706910, 0.201692186868931730, 0.201643214168926080, 0.201594240964811930, 0.201545267256712650, 0.201496293044750200, 0.201447318329047000, +0.201398343109725070, 0.201349367386907700, 0.201300391160716930, 0.201251414431274760, 0.201202437198704480, 0.201153459463128100, 0.201104481224668090, 0.201055502483446420, +0.201006523239586450, 0.200957543493210160, 0.200908563244440010, 0.200859582493398030, 0.200810601240207500, 0.200761619484990490, 0.200712637227869420, 0.200663654468966330, +0.200614671208404540, 0.200565687446306070, 0.200516703182793380, 0.200467718417988490, 0.200418733152014750, 0.200369747384994160, 0.200320761117048800, 0.200271774348301960, +0.200222787078875670, 0.200173799308892430, 0.200124811038474240, 0.200075822267744450, 0.200026832996825110, 0.199977843225838700, 0.199928852954907250, 0.199879862184154100, +0.199830870913701280, 0.199781879143671290, 0.199732886874186170, 0.199683894105369270, 0.199634900837342640, 0.199585907070228750, 0.199536912804149650, 0.199487918039228720, +0.199438922775588000, 0.199389927013349510, 0.199340930752636650, 0.199291933993571480, 0.199242936736276440, 0.199193938980873650, 0.199144940727486450, 0.199095941976236900, +0.199046942727247460, 0.198997942980640270, 0.198948942736538630, 0.198899941995064640, 0.198850940756340800, 0.198801939020489180, 0.198752936787633140, 0.198703934057894770, +0.198654930831396540, 0.198605927108260550, 0.198556922888610210, 0.198507918172567520, 0.198458912960255060, 0.198409907251794890, 0.198360901047310380, 0.198311894346923620, +0.198262887150756660, 0.198213879458932960, 0.198164871271574530, 0.198115862588803930, 0.198066853410743230, 0.198017843737515850, 0.197968833569243860, 0.197919822906049790, +0.197870811748055710, 0.197821800095385050, 0.197772787948159890, 0.197723775306502730, 0.197674762170535730, 0.197625748540382260, 0.197576734416164410, 0.197527719798004710, +0.197478704686025300, 0.197429689080349550, 0.197380672981099570, 0.197331656388397480, 0.197282639302366700, 0.197233621723129300, 0.197184603650807870, 0.197135585085524480, +0.197086566027402540, 0.197037546476564210, 0.196988526433132030, 0.196939505897228060, 0.196890484868975780, 0.196841463348497310, 0.196792441335915140, 0.196743418831351460, +0.196694395834929650, 0.196645372346771870, 0.196596348367000660, 0.196547323895738120, 0.196498298933107720, 0.196449273479231580, 0.196400247534231800, 0.196351221098231860, +0.196302194171353860, 0.196253166753720370, 0.196204138845453540, 0.196155110446676770, 0.196106081557512250, 0.196057052178082500, 0.196008022308509720, 0.195958991948917300, +0.195909961099427400, 0.195860929760162620, 0.195811897931245040, 0.195762865612798180, 0.195713832804944140, 0.195664799507805520, 0.195615765721504490, 0.195566731446164460, +0.195517696681907600, 0.195468661428856050, 0.195419625687133310, 0.195370589456861500, 0.195321552738163210, 0.195272515531160600, 0.195223477835977130, 0.195174439652734980, +0.195125400981556730, 0.195076361822564550, 0.195027322175881900, 0.194978282041630920, 0.194929241419934260, 0.194880200310914050, 0.194831158714693750, 0.194782116631395580, +0.194733074061142130, 0.194684031004055540, 0.194634987460259310, 0.194585943429875620, 0.194536898913027080, 0.194487853909835830, 0.194438808420425410, 0.194389762444917960, +0.194340715983435660, 0.194291669036102010, 0.194242621603039180, 0.194193573684369820, 0.194144525280216060, 0.194095476390701430, 0.194046427015948130, 0.193997377156078730, +0.193948326811215490, 0.193899275981481850, 0.193850224667000000, 0.193801172867892610, 0.193752120584281850, 0.193703067816291240, 0.193654014564042940, 0.193604960827659600, +0.193555906607263430, 0.193506851902977920, 0.193457796714925300, 0.193408741043227720, 0.193359684888008750, 0.193310628249390580, 0.193261571127495810, 0.193212513522446700, +0.193163455434366720, 0.193114396863378110, 0.193065337809603530, 0.193016278273165140, 0.192967218254186500, 0.192918157752789810, 0.192869096769097720, 0.192820035303232470, +0.192770973355317570, 0.192721910925475220, 0.192672848013828110, 0.192623784620498420, 0.192574720745609720, 0.192525656389284230, 0.192476591551644150, 0.192427526232813030, +0.192378460432913100, 0.192329394152066980, 0.192280327390396990, 0.192231260148026580, 0.192182192425078060, 0.192133124221674030, 0.192084055537936750, 0.192034986373989770, +0.191985916729955350, 0.191936846605956110, 0.191887776002114320, 0.191838704918553540, 0.191789633355396010, 0.191740561312764350, 0.191691488790780880, 0.191642415789569140, +0.191593342309251350, 0.191544268349950170, 0.191495193911787930, 0.191446118994888110, 0.191397043599373010, 0.191347967725364860, 0.191298891372987220, 0.191249814542362370, +0.191200737233612970, 0.191151659446861300, 0.191102581182230890, 0.191053502439844060, 0.191004423219823440, 0.190955343522291380, 0.190906263347371350, 0.190857182695185670, +0.190808101565857040, 0.190759019959507730, 0.190709937876261280, 0.190660855316240020, 0.190611772279566600, 0.190562688766363310, 0.190513604776753750, 0.190464520310860170, +0.190415435368804840, 0.190366349950711390, 0.190317264056702020, 0.190268177686899520, 0.190219090841426130, 0.190170003520405470, 0.190120915723959780, 0.190071827452211820, +0.190022738705283830, 0.189973649483299450, 0.189924559786380930, 0.189875469614651020, 0.189826378968231980, 0.189777287847247460, 0.189728196251819720, 0.189679104182071460, +0.189630011638125040, 0.189580918620103980, 0.189531825128130660, 0.189482731162327330, 0.189433636722817630, 0.189384541809723810, 0.189335446423168630, 0.189286350563274420, +0.189237254230164770, 0.189188157423961970, 0.189139060144788790, 0.189089962392767510, 0.189040864168021770, 0.188991765470673870, 0.188942666300846550, 0.188893566658662140, +0.188844466544244220, 0.188795365957715180, 0.188746264899197690, 0.188697163368814120, 0.188648061366688050, 0.188598958892941840, 0.188549855947697830, 0.188500752531079590, +0.188451648643209460, 0.188402544284210220, 0.188353439454204190, 0.188304334153314960, 0.188255228381664920, 0.188206122139376820, 0.188157015426572980, 0.188107908243377030, +0.188058800589911280, 0.188009692466298560, 0.187960583872661180, 0.187911474809122760, 0.187862365275805660, 0.187813255272832660, 0.187764144800326050, 0.187715033858409540, +0.187665922447205450, 0.187616810566836540, 0.187567698217425170, 0.187518585399094990, 0.187469472111968350, 0.187420358356167600, 0.187371244131816380, 0.187322129439037060, +0.187273014277952400, 0.187223898648684770, 0.187174782551357860, 0.187125665986093950, 0.187076548953015900, 0.187027431452246040, 0.186978313483908030, 0.186929195048124250, +0.186880076145017480, 0.186830956774710070, 0.186781836937325720, 0.186732716632986770, 0.186683595861816020, 0.186634474623935870, 0.186585352919469930, 0.186536230748540640, +0.186487108111270340, 0.186437985007782690, 0.186388861438200080, 0.186339737402645310, 0.186290612901240770, 0.186241487934110130, 0.186192362501375770, 0.186143236603160510, +0.186094110239586720, 0.186044983410778080, 0.185995856116856980, 0.185946728357946260, 0.185897600134168280, 0.185848471445646730, 0.185799342292504000, 0.185750212674862910, +0.185701082592845870, 0.185651952046576530, 0.185602821036177340, 0.185553689561770650, 0.185504557623480170, 0.185455425221428300, 0.185406292355737860, 0.185357159026531240, +0.185308025233932190, 0.185258890978063060, 0.185209756259046700, 0.185160621077005540, 0.185111485432063240, 0.185062349324342210, 0.185013212753965340, 0.184964075721054970, +0.184914938225734880, 0.184865800268127430, 0.184816661848355460, 0.184767522966541420, 0.184718383622809010, 0.184669243817280640, 0.184620103550079160, 0.184570962821326980, +0.184521821631147830, 0.184472679979664130, 0.184423537866998300, 0.184374395293274040, 0.184325252258613820, 0.184276108763140460, 0.184226964806976370, 0.184177820390245330, +0.184128675513069750, 0.184079530175572440, 0.184030384377875890, 0.183981238120103830, 0.183932091402378650, 0.183882944224823260, 0.183833796587560050, 0.183784648490712800, +0.183735499934403940, 0.183686350918756320, 0.183637201443892390, 0.183588051509935870, 0.183538901117009270, 0.183489750265234920, 0.183440598954736690, 0.183391447185636940, +0.183342294958058540, 0.183293142272124010, 0.183243989127957030, 0.183194835525680110, 0.183145681465416070, 0.183096526947287400, 0.183047371971417850, 0.182998216537929890, +0.182949060646946350, 0.182899904298589740, 0.182850747492983830, 0.182801590230251030, 0.182752432510514230, 0.182703274333895940, 0.182654115700519900, 0.182604956610508570, +0.182555797063984420, 0.182506637061071200, 0.182457476601891410, 0.182408315686567900, 0.182359154315223180, 0.182309992487980990, 0.182260830204963840, 0.182211667466294610, +0.182162504272095770, 0.182113340622491100, 0.182064176517603090, 0.182015011957554650, 0.181965846942468230, 0.181916681472467620, 0.181867515547675330, 0.181818349168214240, +0.181769182334206830, 0.181720015045776890, 0.181670847303046950, 0.181621679106139440, 0.181572510455178170, 0.181523341350285610, 0.181474171791584700, 0.181425001779197930, +0.181375831313249110, 0.181326660393860690, 0.181277489021155620, 0.181228317195256390, 0.181179144916286810, 0.181129972184369380, 0.181080798999627010, 0.181031625362182170, +0.180982451272158760, 0.180933276729679180, 0.180884101734866440, 0.180834926287842980, 0.180785750388732650, 0.180736574037657970, 0.180687397234741840, 0.180638219980106760, +0.180589042273876590, 0.180539864116173790, 0.180490685507120910, 0.180441506446841760, 0.180392326935458840, 0.180343146973095090, 0.180293966559873040, 0.180244785695916540, +0.180195604381348050, 0.180146422616290550, 0.180097240400866550, 0.180048057735199880, 0.179998874619413080, 0.179949691053629100, 0.179900507037970450, 0.179851322572560950, +0.179802137657523180, 0.179752952292980050, 0.179703766479054090, 0.179654580215869160, 0.179605393503547790, 0.179556206342212480, 0.179507018731987100, 0.179457830672994170, +0.179408642165356680, 0.179359453209197130, 0.179310263804639380, 0.179261073951805990, 0.179211883650819890, 0.179162692901803670, 0.179113501704881130, 0.179064310060174870, +0.179015117967807810, 0.178965925427902520, 0.178916732440582840, 0.178867539005971350, 0.178818345124191010, 0.178769150795364370, 0.178719956019615290, 0.178670760797066310, +0.178621565127840000, 0.178572369012060220, 0.178523172449849500, 0.178473975441330870, 0.178424777986626840, 0.178375580085861320, 0.178326381739156850, 0.178277182946636410, +0.178227983708422600, 0.178178784024639270, 0.178129583895408950, 0.178080383320854680, 0.178031182301099020, 0.177981980836265850, 0.177932778926477710, 0.177883576571857630, +0.177834373772528200, 0.177785170528613230, 0.177735966840235350, 0.177686762707517570, 0.177637558130582430, 0.177588353109553810, 0.177539147644554330, 0.177489941735706560, +0.177440735383134350, 0.177391528586960310, 0.177342321347307460, 0.177293113664298340, 0.177243905538056880, 0.177194696968705680, 0.177145487956367730, 0.177096278501165600, +0.177047068603223220, 0.176997858262663180, 0.176948647479608510, 0.176899436254181750, 0.176850224586506840, 0.176801012476706400, 0.176751799924903390, 0.176702586931220460, +0.176653373495781500, 0.176604159618709120, 0.176554945300125890, 0.176505730540155730, 0.176456515338921260, 0.176407299696545480, 0.176358083613151030, 0.176308867088861810, +0.176259650123800400, 0.176210432718089890, 0.176161214871852850, 0.176111996585213200, 0.176062777858293580, 0.176013558691217010, 0.175964339084106110, 0.175915119037084790, +0.175865898550275650, 0.175816677623801790, 0.175767456257785810, 0.175718234452351600, 0.175669012207621820, 0.175619789523719070, 0.175570566400767290, 0.175521342838889090, +0.175472118838207510, 0.175422894398845230, 0.175373669520926150, 0.175324444204572880, 0.175275218449908480, 0.175225992257055620, 0.175176765626138240, 0.175127538557278920, +0.175078311050600760, 0.175029083106226360, 0.174979854724279710, 0.174930625904883420, 0.174881396648160580, 0.174832166954233810, 0.174782936823227040, 0.174733706255262940, +0.174684475250464130, 0.174635243808954590, 0.174586011930856900, 0.174536779616294210, 0.174487546865389140, 0.174438313678265620, 0.174389080055046330, 0.174339845995854340, +0.174290611500812290, 0.174241376570044150, 0.174192141203672570, 0.174142905401820650, 0.174093669164611030, 0.174044432492167640, 0.173995195384613190, 0.173945957842070760, +0.173896719864662990, 0.173847481452513860, 0.173798242605746030, 0.173749003324482560, 0.173699763608846200, 0.173650523458960840, 0.173601282874949160, 0.173552041856933850, +0.173502800405038880, 0.173453558519386900, 0.173404316200101020, 0.173355073447303910, 0.173305830261119560, 0.173256586641670620, 0.173207342589080240, 0.173158098103471050, +0.173108853184967050, 0.173059607833690930, 0.173010362049765780, 0.172961115833314310, 0.172911869184460470, 0.172862622103326950, 0.172813374590036870, 0.172764126644712940, +0.172714878267479110, 0.172665629458458090, 0.172616380217772560, 0.172567130545546510, 0.172517880441902670, 0.172468629906964100, 0.172419378940853520, 0.172370127543694910, +0.172320875715611000, 0.172271623456724890, 0.172222370767159320, 0.172173117647038220, 0.172123864096484340, 0.172074610115620810, 0.172025355704570310, 0.171976100863456850, +0.171926845592403150, 0.171877589891532350, 0.171828333760967090, 0.171779077200831460, 0.171729820211248160, 0.171680562792339840, 0.171631304944230570, 0.171582046667043020, +0.171532787960900380, 0.171483528825925300, 0.171434269262241870, 0.171385009269972740, 0.171335748849241100, 0.171286488000169630, 0.171237226722882410, 0.171187965017502110, +0.171138702884151890, 0.171089440322954480, 0.171040177334033900, 0.170990913917512890, 0.170941650073514580, 0.170892385802161710, 0.170843121103578330, 0.170793855977887130, +0.170744590425211310, 0.170695324445673560, 0.170646058039397950, 0.170596791206507170, 0.170547523947124000, 0.170498256261372440, 0.170448988149375230, 0.170399719611255580, +0.170350450647136160, 0.170301181257141080, 0.170251911441393040, 0.170202641200015210, 0.170153370533130370, 0.170104099440862520, 0.170054827923334400, 0.170005555980669240, +0.169956283612989760, 0.169907010820419980, 0.169857737603082680, 0.169808463961101050, 0.169759189894597820, 0.169709915403697040, 0.169660640488521470, 0.169611365149193870, +0.169562089385838300, 0.169512813198577500, 0.169463536587534690, 0.169414259552832570, 0.169364982094595250, 0.169315704212945480, 0.169266425908006420, 0.169217147179900880, +0.169167868028752920, 0.169118588454685280, 0.169069308457821170, 0.169020028038283340, 0.168970747196195900, 0.168921465931681590, 0.168872184244863580, 0.168822902135864710, +0.168773619604809020, 0.168724336651819270, 0.168675053277018230, 0.168625769480530010, 0.168576485262477370, 0.168527200622983510, 0.168477915562171200, 0.168428630080164570, +0.168379344177086330, 0.168330057853059740, 0.168280771108207580, 0.168231483942653910, 0.168182196356521540, 0.168132908349933690, 0.168083619923013130, 0.168034331075883950, +0.167985041808668940, 0.167935752121491310, 0.167886462014473880, 0.167837171487740740, 0.167787880541414660, 0.167738589175618460, 0.167689297390476220, 0.167640005186110720, +0.167590712562645210, 0.167541419520202490, 0.167492126058906650, 0.167442832178880510, 0.167393537880247270, 0.167344243163129760, 0.167294948027652070, 0.167245652473937020, +0.167196356502107850, 0.167147060112287330, 0.167097763304599610, 0.167048466079167460, 0.166999168436114150, 0.166949870375562500, 0.166900571897636600, 0.166851273002459280, +0.166801973690153760, 0.166752673960842900, 0.166703373814650780, 0.166654073251700200, 0.166604772272114010, 0.166555470876016350, 0.166506169063530000, 0.166456866834778230, +0.166407564189883840, 0.166358261128970980, 0.166308957652162470, 0.166259653759581570, 0.166210349451351100, 0.166161044727595210, 0.166111739588436700, 0.166062434033998810, +0.166013128064404440, 0.165963821679777660, 0.165914514880241340, 0.165865207665918720, 0.165815900036932640, 0.165766591993407260, 0.165717283535465390, 0.165667974663229880, +0.165618665376824880, 0.165569355676373210, 0.165520045561998150, 0.165470735033822540, 0.165421424091970530, 0.165372112736564960, 0.165322800967729110, 0.165273488785585810, +0.165224176190259230, 0.165174863181872220, 0.165125549760548020, 0.165076235926409550, 0.165026921679580910, 0.164977607020184960, 0.164928291948344990, 0.164878976464183870, +0.164829660567825750, 0.164780344259393450, 0.164731027539009870, 0.164681710406799160, 0.164632392862884170, 0.164583074907388190, 0.164533756540434090, 0.164484437762146050, +0.164435118572646920, 0.164385798972059960, 0.164336478960508100, 0.164287158538115460, 0.164237837705004910, 0.164188516461299810, 0.164139194807122940, 0.164089872742598540, +0.164040550267849440, 0.163991227382998980, 0.163941904088170030, 0.163892580383486720, 0.163843256269072010, 0.163793931745049110, 0.163744606811540960, 0.163695281468671740, +0.163645955716564320, 0.163596629555341540, 0.163547302985127650, 0.163497976006045510, 0.163448648618218420, 0.163399320821769280, 0.163349992616822260, 0.163300664003500270, +0.163251334981926590, 0.163202005552224170, 0.163152675714517160, 0.163103345468928460, 0.163054014815581410, 0.163004683754598870, 0.162955352286105050, 0.162906020410222870, +0.162856688127075660, 0.162807355436786260, 0.162758022339478890, 0.162708688835276500, 0.162659354924301950, 0.162610020606679420, 0.162560685882531860, 0.162511350751982590, +0.162462015215154490, 0.162412679272171790, 0.162363342923157410, 0.162314006168234660, 0.162264669007526450, 0.162215331441157020, 0.162165993469249260, 0.162116655091926520, +0.162067316309311700, 0.162017977121529020, 0.161968637528701390, 0.161919297530952190, 0.161869957128404300, 0.161820616321181940, 0.161771275109408060, 0.161721933493205540, +0.161672591472698630, 0.161623249048010230, 0.161573906219263740, 0.161524562986582020, 0.161475219350089320, 0.161425875309908600, 0.161376530866163190, 0.161327186018976000, +0.161277840768471260, 0.161228495114771970, 0.161179149058001400, 0.161129802598282550, 0.161080455735739620, 0.161031108470495540, 0.160981760802673710, 0.160932412732397030, +0.160883064259789740, 0.160833715384974820, 0.160784366108075590, 0.160735016429215010, 0.160685666348517330, 0.160636315866105470, 0.160586964982102400, 0.160537613696632360, +0.160488262009818280, 0.160438909921783530, 0.160389557432651100, 0.160340204542545190, 0.160290851251588760, 0.160241497559905220, 0.160192143467617480, 0.160142788974849850, +0.160093434081725220, 0.160044078788367020, 0.159994723094898180, 0.159945367001442960, 0.159896010508124350, 0.159846653615065700, 0.159797296322389950, 0.159747938630221440, +0.159698580538683050, 0.159649222047897800, 0.159599863157989910, 0.159550503869082370, 0.159501144181298570, 0.159451784094761490, 0.159402423609595360, 0.159353062725923200, +0.159303701443868350, 0.159254339763553830, 0.159204977685103890, 0.159155615208641520, 0.159106252334290100, 0.159056889062172610, 0.159007525392413330, 0.158958161325135240, +0.158908796860461750, 0.158859431998515820, 0.158810066739421770, 0.158760701083302540, 0.158711335030281120, 0.158661968580481820, 0.158612601734027580, 0.158563234491041820, +0.158513866851647560, 0.158464498815969050, 0.158415130384129330, 0.158365761556251760, 0.158316392332459340, 0.158267022712876380, 0.158217652697625860, 0.158168282286831220, +0.158118911480615440, 0.158069540279102800, 0.158020168682416330, 0.157970796690679430, 0.157921424304015120, 0.157872051522547660, 0.157822678346400070, 0.157773304775695370, +0.157723930810557830, 0.157674556451110480, 0.157625181697476720, 0.157575806549779570, 0.157526431008143340, 0.157477055072691020, 0.157427678743546100, 0.157378302020831500, +0.157328924904671620, 0.157279547395189400, 0.157230169492508340, 0.157180791196751410, 0.157131412508042940, 0.157082033426505920, 0.157032653952263850, 0.156983274085439660, +0.156933893826157770, 0.156884513174541110, 0.156835132130713180, 0.156785750694797000, 0.156736368866916860, 0.156686986647195800, 0.156637604035756860, 0.156588221032724320, +0.156538837638221240, 0.156489453852371040, 0.156440069675296810, 0.156390685107122810, 0.156341300147972100, 0.156291914797968170, 0.156242529057233990, 0.156193142925893920, +0.156143756404070990, 0.156094369491888710, 0.156044982189470020, 0.155995594496939340, 0.155946206414419670, 0.155896817942034470, 0.155847429079906810, 0.155798039828160980, +0.155748650186920080, 0.155699260156307110, 0.155649869736446430, 0.155600478927461090, 0.155551087729474540, 0.155501696142609810, 0.155452304166991300, 0.155402911802742040, +0.155353519049985480, 0.155304125908844680, 0.155254732379444040, 0.155205338461906540, 0.155155944156355700, 0.155106549462914550, 0.155057154381707470, 0.155007758912857510, +0.154958363056488160, 0.154908966812722450, 0.154859570181684750, 0.154810173163498150, 0.154760775758285670, 0.154711377966171680, 0.154661979787279270, 0.154612581221731880, +0.154563182269652630, 0.154513782931165830, 0.154464383206394610, 0.154414983095462390, 0.154365582598492310, 0.154316181715608680, 0.154266780446934620, 0.154217378792593620, +0.154167976752708710, 0.154118574327404310, 0.154069171516803470, 0.154019768321029680, 0.153970364740206060, 0.153920960774456940, 0.153871556423905430, 0.153822151688675050, +0.153772746568888840, 0.153723341064671200, 0.153673935176145190, 0.153624528903433920, 0.153575122246661780, 0.153525715205951820, 0.153476307781427570, 0.153426899973212100, +0.153377491781429840, 0.153328083206203840, 0.153278674247657650, 0.153229264905914320, 0.153179855181098250, 0.153130445073332570, 0.153081034582740750, 0.153031623709445920, +0.152982212453572490, 0.152932800815243490, 0.152883388794582520, 0.152833976391712620, 0.152784563606758240, 0.152735150439842430, 0.152685736891088300, 0.152636322960620300, +0.152586908648561480, 0.152537493955035350, 0.152488078880165080, 0.152438663424075050, 0.152389247586888380, 0.152339831368728560, 0.152290414769718720, 0.152240997789983320, +0.152191580429645400, 0.152142162688828520, 0.152092744567655810, 0.152043326066251680, 0.151993907184739210, 0.151944487923242000, 0.151895068281883120, 0.151845648260787000, +0.151796227860076770, 0.151746807079875530, 0.151697385920307710, 0.151647964381496410, 0.151598542463565220, 0.151549120166637240, 0.151499697490836890, 0.151450274436287280, +0.151400851003112010, 0.151351427191434160, 0.151302003001378190, 0.151252578433067190, 0.151203153486624780, 0.151153728162174010, 0.151104302459839380, 0.151054876379743990, +0.151005449922011430, 0.150956023086764780, 0.150906595874128520, 0.150857168284225770, 0.150807740317179640, 0.150758311973114620, 0.150708883252153810, 0.150659454154420810, +0.150610024680038730, 0.150560594829132010, 0.150511164601823820, 0.150461733998237700, 0.150412303018496840, 0.150362871662725630, 0.150313439931047260, 0.150264007823585260, +0.150214575340462840, 0.150165142481804400, 0.150115709247733100, 0.150066275638372550, 0.150016841653845850, 0.149967407294277490, 0.149917972559790610, 0.149868537450508820, +0.149819101966555210, 0.149769666108054310, 0.149720229875129230, 0.149670793267903170, 0.149621356286500530, 0.149571918931044520, 0.149522481201658700, 0.149473043098466240, +0.149423604621591600, 0.149374165771157970, 0.149324726547288900, 0.149275286950107610, 0.149225846979738510, 0.149176406636304800, 0.149126965919930080, 0.149077524830737520, +0.149028083368851570, 0.148978641534395410, 0.148929199327492660, 0.148879756748266450, 0.148830313796841310, 0.148780870473340380, 0.148731426777886810, 0.148681982710605150, +0.148632538271618510, 0.148583093461050530, 0.148533648279024380, 0.148484202725664540, 0.148434756801094190, 0.148385310505436960, 0.148335863838816030, 0.148286416801355850, +0.148236969393179650, 0.148187521614411010, 0.148138073465173130, 0.148088624945590520, 0.148039176055786340, 0.147989726795884210, 0.147940277166007330, 0.147890827166280190, +0.147841376796825990, 0.147791926057767920, 0.147742474949230460, 0.147693023471336810, 0.147643571624210600, 0.147594119407975040, 0.147544666822754610, 0.147495213868672510, +0.147445760545852370, 0.147396306854417400, 0.147346852794492110, 0.147297398366199680, 0.147247943569663750, 0.147198488405007520, 0.147149032872355510, 0.147099576971830900, +0.147050120703557390, 0.147000664067658100, 0.146951207064257630, 0.146901749693479110, 0.146852291955446220, 0.146802833850282170, 0.146753375378111450, 0.146703916539057320, +0.146654457333242950, 0.146604997760792890, 0.146555537821830310, 0.146506077516478900, 0.146456616844861860, 0.146407155807103700, 0.146357694403327660, 0.146308232633657390, +0.146258770498216090, 0.146209307997128310, 0.146159845130517270, 0.146110381898506610, 0.146060918301219530, 0.146011454338780630, 0.145961990011313080, 0.145912525318940560, +0.145863060261786280, 0.145813594839974770, 0.145764129053629320, 0.145714662902873080, 0.145665196387830630, 0.145615729508625170, 0.145566262265380410, 0.145516794658219540, +0.145467326687267110, 0.145417858352646400, 0.145368389654481010, 0.145318920592894220, 0.145269451168010570, 0.145219981379953320, 0.145170511228846080, 0.145121040714812130, +0.145071569837976010, 0.145022098598460990, 0.144972626996390690, 0.144923155031888410, 0.144873682705078670, 0.144824210016084730, 0.144774736965029820, 0.144725263552038520, +0.144675789777234030, 0.144626315640740110, 0.144576841142679910, 0.144527366283178080, 0.144477891062357840, 0.144428415480342850, 0.144378939537256390, 0.144329463233223040, +0.144279986568365990, 0.144230509542809030, 0.144181032156675300, 0.144131554410089460, 0.144082076303174740, 0.144032597836054820, 0.143983119008852970, 0.143933639821693740, +0.143884160274700440, 0.143834680367996260, 0.143785200101705870, 0.143735719475952460, 0.143686238490859740, 0.143636757146551000, 0.143587275443150780, 0.143537793380782400, +0.143488310959569510, 0.143438828179635440, 0.143389345041104700, 0.143339861544100610, 0.143290377688746890, 0.143240893475166750, 0.143191408903484830, 0.143141923973824410, +0.143092438686309160, 0.143042953041062380, 0.142993467038208640, 0.142943980677871260, 0.142894493960173900, 0.142845006885239880, 0.142795519453193800, 0.142746031664158890, +0.142696543518258470, 0.142647055015617140, 0.142597566156358160, 0.142548076940605280, 0.142498587368481760, 0.142449097440112220, 0.142399607155619920, 0.142350116515128610, +0.142300625518761580, 0.142251134166643390, 0.142201642458897410, 0.142152150395647300, 0.142102657977016380, 0.142053165203129240, 0.142003672074109220, 0.141954178590080000, +0.141904684751164880, 0.141855190557488520, 0.141805696009174170, 0.141756201106345130, 0.141706705849126040, 0.141657210237640160, 0.141607714272011270, 0.141558217952362670, +0.141508721278818940, 0.141459224251503420, 0.141409726870539850, 0.141360229136051510, 0.141310731048163050, 0.141261232606997740, 0.141211733812679370, 0.141162234665331200, +0.141112735165077910, 0.141063235312042760, 0.141013735106349540, 0.140964234548121540, 0.140914733637483390, 0.140865232374558390, 0.140815730759469900, 0.140766228792342520, +0.140716726473299550, 0.140667223802464770, 0.140617720779961490, 0.140568217405914350, 0.140518713680446660, 0.140469209603682200, 0.140419705175744260, 0.140370200396757490, +0.140320695266845240, 0.140271189786131230, 0.140221683954738830, 0.140172177772792640, 0.140122671240416020, 0.140073164357732730, 0.140023657124866090, 0.139974149541940730, +0.139924641609080000, 0.139875133326407660, 0.139825624694047050, 0.139776115712122840, 0.139726606380758320, 0.139677096700076830, 0.139627586670203060, 0.139578076291260320, +0.139528565563372400, 0.139479054486662590, 0.139429543061255630, 0.139380031287274770, 0.139330519164843870, 0.139281006694086220, 0.139231493875126480, 0.139181980708088020, +0.139132467193094580, 0.139082953330269570, 0.139033439119737590, 0.138983924561622040, 0.138934409656046640, 0.138884894403134810, 0.138835378803011170, 0.138785862855799080, +0.138736346561621900, 0.138686829920604300, 0.138637312932869600, 0.138587795598541650, 0.138538277917743760, 0.138488759890600580, 0.138439241517235550, 0.138389722797772400, +0.138340203732334490, 0.138290684321046520, 0.138241164564031850, 0.138191644461414240, 0.138142124013317100, 0.138092603219865110, 0.138043082081181570, 0.137993560597390350, +0.137944038768614770, 0.137894516594979560, 0.137844994076608050, 0.137795471213623590, 0.137745948006150920, 0.137696424454313380, 0.137646900558234780, 0.137597376318038480, +0.137547851733849170, 0.137498326805790240, 0.137448801533985500, 0.137399275918558300, 0.137349749959633370, 0.137300223657334050, 0.137250697011784160, 0.137201170023107110, +0.137151642691427570, 0.137102115016868920, 0.137052586999554970, 0.137003058639609130, 0.136953529937156090, 0.136904000892319220, 0.136854471505221900, 0.136804941775988840, +0.136755411704743420, 0.136705881291609490, 0.136656350536710410, 0.136606819440170890, 0.136557288002114310, 0.136507756222664530, 0.136458224101944910, 0.136408691640080180, +0.136359158837193710, 0.136309625693409350, 0.136260092208850490, 0.136210558383641820, 0.136161024217906770, 0.136111489711769150, 0.136061954865352360, 0.136012419678781140, +0.135962884152178860, 0.135913348285669390, 0.135863812079376090, 0.135814275533423710, 0.135764738647935620, 0.135715201423035250, 0.135665663858847350, 0.135616125955495240, +0.135566587713102840, 0.135517049131793550, 0.135467510211692040, 0.135417970952921800, 0.135368431355606580, 0.135318891419869890, 0.135269351145836380, 0.135219810533629500, +0.135170269583373080, 0.135120728295190560, 0.135071186669206670, 0.135021644705544810, 0.134972102404328830, 0.134922559765682150, 0.134873016789729520, 0.134823473476594350, +0.134773929826400050, 0.134724385839271350, 0.134674841515331710, 0.134625296854704950, 0.134575751857514530, 0.134526206523885140, 0.134476660853940250, 0.134427114847803730, +0.134377568505598950, 0.134328021827450710, 0.134278474813482400, 0.134228927463817900, 0.134179379778580660, 0.134129831757895390, 0.134080283401885550, 0.134030734710675000, +0.133981185684387190, 0.133931636323146840, 0.133882086627077400, 0.133832536596302320, 0.133782986230946310, 0.133733435531132840, 0.133683884496985790, 0.133634333128628600, +0.133584781426185990, 0.133535229389781460, 0.133485677019538840, 0.133436124315581580, 0.133386571278034440, 0.133337017907020900, 0.133287464202664800, 0.133237910165089600, +0.133188355794420070, 0.133138801090779630, 0.133089246054292200, 0.133039690685081230, 0.132990134983271470, 0.132940578948986370, 0.132891022582349800, 0.132841465883485250, +0.132791908852517490, 0.132742351489569950, 0.132692793794766090, 0.132643235768230670, 0.132593677410087180, 0.132544118720459490, 0.132494559699471050, 0.132445000347246660, +0.132395440663909790, 0.132345880649584300, 0.132296320304393670, 0.132246759628462660, 0.132197198621914790, 0.132147637284873890, 0.132098075617463480, 0.132048513619808290, +0.131998951292031850, 0.131949388634258010, 0.131899825646610260, 0.131850262329213400, 0.131800698682190880, 0.131751134705666180, 0.131701570399764070, 0.131652005764608030, +0.131602440800321990, 0.131552875507029400, 0.131503309884855060, 0.131453743933922450, 0.131404177654355470, 0.131354611046277630, 0.131305044109813700, 0.131255476845087120, +0.131205909252221890, 0.131156341331341440, 0.131106773082570540, 0.131057204506032750, 0.131007635601851940, 0.130958066370151590, 0.130908496811056510, 0.130858926924690200, +0.130809356711176130, 0.130759786170639130, 0.130710215303202620, 0.130660644108990610, 0.130611072588126540, 0.130561500740735220, 0.130511928566940160, 0.130462356066865260, +0.130412783240634040, 0.130363210088371290, 0.130313636610200540, 0.130264062806245700, 0.130214488676630240, 0.130164914221478990, 0.130115339440915500, 0.130065764335063620, +0.130016188904046900, 0.129966613147990160, 0.129917037067016880, 0.129867460661250540, 0.129817883930816030, 0.129768306875836790, 0.129718729496436790, 0.129669151792739520, +0.129619573764869820, 0.129569995412951170, 0.129520416737107540, 0.129470837737462430, 0.129421258414140680, 0.129371678767265770, 0.129322098796961660, 0.129272518503351860, +0.129222937886561200, 0.129173356946713200, 0.129123775683931820, 0.129074194098340560, 0.129024612190064230, 0.128975029959226380, 0.128925447405950970, 0.128875864530361510, +0.128826281332582810, 0.128776697812738400, 0.128727113970951820, 0.128677529807347900, 0.128627945322050130, 0.128578360515182510, 0.128528775386868550, 0.128479189937233090, +0.128429604166399670, 0.128380018074492230, 0.128330431661634300, 0.128280844927950720, 0.128231257873565040, 0.128181670498601210, 0.128132082803182780, 0.128082494787434580, +0.128032906451480130, 0.127983317795443420, 0.127933728819447980, 0.127884139523618660, 0.127834549908078960, 0.127784959972952500, 0.127735369718364050, 0.127685779144437160, +0.127636188251295830, 0.127586597039063610, 0.127537005507865310, 0.127487413657824540, 0.127437821489065180, 0.127388229001710870, 0.127338636195886420, 0.127289043071715370, +0.127239449629321710, 0.127189855868828970, 0.127140261790362060, 0.127090667394044480, 0.127041072680000260, 0.126991477648352890, 0.126941882299227260, 0.126892286632746930, +0.126842690649035440, 0.126793094348217700, 0.126743497730417180, 0.126693900795757930, 0.126644303544363510, 0.126594705976358750, 0.126545108091867230, 0.126495509891012940, +0.126445911373919420, 0.126396312540711570, 0.126346713391512930, 0.126297113926447550, 0.126247514145638890, 0.126197914049211910, 0.126148313637290150, 0.126098712909997610, +0.126049111867457820, 0.125999510509795710, 0.125949908837134830, 0.125900306849599160, 0.125850704547312290, 0.125801101930399120, 0.125751498998983160, 0.125701895753188050, +0.125652292193138610, 0.125602688318958460, 0.125553084130771570, 0.125503479628701540, 0.125453874812873230, 0.125404269683410260, 0.125354664240436620, 0.125305058484075860, +0.125255452414452910, 0.125205846031691330, 0.125156239335915100, 0.125106632327247860, 0.125057025005814480, 0.125007417371738540, 0.124957809425144050, 0.124908201166154600, +0.124858592594895080, 0.124808983711489090, 0.124759374516060190, 0.124709765008733290, 0.124660155189632000, 0.124610545058880310, 0.124560934616601810, 0.124511323862921410, +0.124461712797962710, 0.124412101421849730, 0.124362489734706050, 0.124312877736656590, 0.124263265427824940, 0.124213652808335110, 0.124164039878310720, 0.124114426637876680, +0.124064813087156560, 0.124015199226274410, 0.123965585055353820, 0.123915970574519710, 0.123866355783895680, 0.123816740683605310, 0.123767125273773540, 0.123717509554523940, +0.123667893525980580, 0.123618277188267040, 0.123568660541508250, 0.123519043585827810, 0.123469426321349760, 0.123419808748197690, 0.123370190866496560, 0.123320572676369940, +0.123270954177941900, 0.123221335371336020, 0.123171716256677250, 0.123122096834089190, 0.123072477103695880, 0.123022857065620950, 0.122973236719989300, 0.122923616066924580, +0.122873995106550370, 0.122824373838991610, 0.122774752264371910, 0.122725130382815340, 0.122675508194445500, 0.122625885699387330, 0.122576262897764450, 0.122526639789700910, +0.122477016375320320, 0.122427392654747640, 0.122377768628106480, 0.122328144295520900, 0.122278519657114500, 0.122228894713012260, 0.122179269463337780, 0.122129643908215120, +0.122080018047767930, 0.122030391882121110, 0.121980765411398320, 0.121931138635723620, 0.121881511555220630, 0.121831884170014300, 0.121782256480228270, 0.121732628485986150, +0.121683000187412890, 0.121633371584632140, 0.121583742677767960, 0.121534113466943980, 0.121484483952285160, 0.121434854133915140, 0.121385224011957960, 0.121335593586537300, +0.121285962857778100, 0.121236331825803980, 0.121186700490739030, 0.121137068852706890, 0.121087436911832520, 0.121037804668239560, 0.120988172122052100, 0.120938539273393750, +0.120888906122389490, 0.120839272669162970, 0.120789638913837840, 0.120740004856539050, 0.120690370497390230, 0.120640735836515510, 0.120591100874038490, 0.120541465610084160, +0.120491830044776180, 0.120442194178238610, 0.120392558010595120, 0.120342921541970680, 0.120293284772488930, 0.120243647702273970, 0.120194010331449460, 0.120144372660140340, +0.120094734688470300, 0.120045096416563440, 0.119995457844543380, 0.119945818972535120, 0.119896179800662320, 0.119846540329048620, 0.119796900557819010, 0.119747260487097150, +0.119697620117007140, 0.119647979447672640, 0.119598338479218640, 0.119548697211768780, 0.119499055645447190, 0.119449413780377500, 0.119399771616684730, 0.119350129154492540, +0.119300486393925010, 0.119250843335105840, 0.119201199978159990, 0.119151556323211140, 0.119101912370383410, 0.119052268119800450, 0.119002623571587270, 0.118952978725867520, +0.118903333582765320, 0.118853688142404350, 0.118804042404909600, 0.118754396370404750, 0.118704750039013470, 0.118655103410860750, 0.118605456486070270, 0.118555809264766150, +0.118506161747072070, 0.118456513933113020, 0.118406865823012690, 0.118357217416895190, 0.118307568714884210, 0.118257919717104750, 0.118208270423680480, 0.118158620834735550, +0.118108970950393620, 0.118059320770779710, 0.118009670296017490, 0.117960019526231100, 0.117910368461544220, 0.117860717102081850, 0.117811065447967700, 0.117761413499325440, +0.117711761256280080, 0.117662108718955330, 0.117612455887475290, 0.117562802761963690, 0.117513149342545520, 0.117463495629344470, 0.117413841622484680, 0.117364187322089850, +0.117314532728284990, 0.117264877841193800, 0.117215222660940420, 0.117165567187648530, 0.117115911421443180, 0.117066255362448040, 0.117016599010787260, 0.116966942366584540, +0.116917285429964910, 0.116867628201052070, 0.116817970679969710, 0.116768312866842870, 0.116718654761795260, 0.116668996364951000, 0.116619337676433800, 0.116569678696368710, +0.116520019424879410, 0.116470359862090080, 0.116420700008124390, 0.116371039863107400, 0.116321379427162820, 0.116271718700414780, 0.116222057682987000, 0.116172396375004520, +0.116122734776591060, 0.116073072887870750, 0.116023410708967320, 0.115973748240005810, 0.115924085481109930, 0.115874422432403380, 0.115824759094011230, 0.115775095466057170, +0.115725431548665380, 0.115675767341959570, 0.115626102846064780, 0.115576438061104740, 0.115526772987203600, 0.115477107624485080, 0.115427441973074240, 0.115377776033094790, +0.115328109804670910, 0.115278443287926300, 0.115228776482986050, 0.115179109389973830, 0.115129442009013840, 0.115079774340229810, 0.115030106383746790, 0.114980438139688500, +0.114930769608179120, 0.114881100789342370, 0.114831431683303300, 0.114781762290185660, 0.114732092610113180, 0.114682422643210890, 0.114632752389602560, 0.114583081849412350, +0.114533411022763990, 0.114483739909782540, 0.114434068510591740, 0.114384396825315770, 0.114334724854078380, 0.114285052597004600, 0.114235380054218200, 0.114185707225843340, +0.114136034112003780, 0.114086360712824570, 0.114036687028429460, 0.113987013058942630, 0.113937338804487840, 0.113887664265190130, 0.113837989441173270, 0.113788314332560980, +0.113738638939478360, 0.113688963262049140, 0.113639287300397500, 0.113589611054647210, 0.113539934524923340, 0.113490257711349620, 0.113440580614050250, 0.113390903233149020, +0.113341225568770940, 0.113291547621039810, 0.113241869390079810, 0.113192190876014700, 0.113142512078969550, 0.113092832999068110, 0.113043153636434610, 0.112993473991192760, +0.112943794063467690, 0.112894113853383120, 0.112844433361062830, 0.112794752586631890, 0.112745071530214070, 0.112695390191933570, 0.112645708571914170, 0.112596026670280930, +0.112546344487157610, 0.112496662022668450, 0.112446979276937180, 0.112397296250088900, 0.112347612942247390, 0.112297929353536840, 0.112248245484081040, 0.112198561334005050, +0.112148876903432670, 0.112099192192488100, 0.112049507201295080, 0.111999821929978760, 0.111950136378662880, 0.111900450547471660, 0.111850764436528870, 0.111801078045959610, +0.111751391375887660, 0.111701704426436790, 0.111652017197732090, 0.111602329689897350, 0.111552641903056790, 0.111502953837334190, 0.111453265492854630, 0.111403576869741920, +0.111353887968120260, 0.111304198788113440, 0.111254509329846570, 0.111204819593443430, 0.111155129579028230, 0.111105439286724770, 0.111055748716658160, 0.111006057868952170, +0.110956366743731040, 0.110906675341118550, 0.110856983661239810, 0.110807291704218600, 0.110757599470178740, 0.110707906959245320, 0.110658214171542120, 0.110608521107193390, +0.110558827766322920, 0.110509134149055820, 0.110459440255515880, 0.110409746085827350, 0.110360051640114000, 0.110310356918500970, 0.110260661921112040, 0.110210966648071480, +0.110161271099503040, 0.110111575275531860, 0.110061879176281750, 0.110012182801876950, 0.109962486152441240, 0.109912789228099760, 0.109863092028976300, 0.109813394555194690, +0.109763696806880020, 0.109713998784156110, 0.109664300487147200, 0.109614601915977090, 0.109564903070770940, 0.109515203951652510, 0.109465504558746080, 0.109415804892175450, +0.109366104952065740, 0.109316404738540780, 0.109266704251724800, 0.109217003491741610, 0.109167302458716360, 0.109117601152772860, 0.109067899574035360, 0.109018197722627650, +0.108968495598674900, 0.108918793202300910, 0.108869090533629500, 0.108819387592785810, 0.108769684379893640, 0.108719980895077260, 0.108670277138460490, 0.108620573110168470, +0.108570868810325000, 0.108521164239054380, 0.108471459396480400, 0.108421754282728210, 0.108372048897921640, 0.108322343242184940, 0.108272637315641950, 0.108222931118417810, +0.108173224650636330, 0.108123517912421790, 0.108073810903898020, 0.108024103625190170, 0.107974396076422050, 0.107924688257717950, 0.107874980169201680, 0.107825271810998390, +0.107775563183231950, 0.107725854286026130, 0.107676145119506140, 0.107626435683795780, 0.107576725979019320, 0.107527016005300610, 0.107477305762764800, 0.107427595251535740, +0.107377884471737670, 0.107328173423494460, 0.107278462106931260, 0.107228750522171900, 0.107179038669340660, 0.107129326548561390, 0.107079614159959240, 0.107029901503658060, +0.106980188579782120, 0.106930475388455270, 0.106880761929802670, 0.106831048203948160, 0.106781334211015600, 0.106731619951130150, 0.106681905424415640, 0.106632190630996370, +0.106582475570996180, 0.106532760244540240, 0.106483044651752400, 0.106433328792756950, 0.106383612667677730, 0.106333896276639940, 0.106284179619767400, 0.106234462697184410, +0.106184745509014810, 0.106135028055383800, 0.106085310336415220, 0.106035592352233370, 0.105985874102962080, 0.105936155588726560, 0.105886436809650640, 0.105836717765858190, +0.105786998457474400, 0.105737278884623100, 0.105687559047428600, 0.105637838946014780, 0.105588118580506790, 0.105538397951028500, 0.105488677057704220, 0.105438955900657810, +0.105389234480014440, 0.105339512795898000, 0.105289790848432780, 0.105240068637742630, 0.105190346163952740, 0.105140623427187000, 0.105090900427569700, 0.105041177165224710, +0.104991453640277200, 0.104941729852851080, 0.104892005803070620, 0.104842281491059720, 0.104792556916943540, 0.104742832080845980, 0.104693106982890890, 0.104643381623203480, +0.104593656001907610, 0.104543930119127600, 0.104494203974987330, 0.104444477569611990, 0.104394750903125460, 0.104345023975652040, 0.104295296787315630, 0.104245569338241420, +0.104195841628553280, 0.104146113658375530, 0.104096385427832070, 0.104046656937048080, 0.103996928186147450, 0.103947199175254500, 0.103897469904493110, 0.103847740373988490, +0.103798010583864510, 0.103748280534245060, 0.103698550225255360, 0.103648819657019280, 0.103599088829661150, 0.103549357743304860, 0.103499626398075630, 0.103449894794097300, +0.103400162931494260, 0.103350430810390370, 0.103300698430910830, 0.103250965793179560, 0.103201232897320860, 0.103151499743458650, 0.103101766331718120, 0.103052032662223190, +0.103002298735098170, 0.102952564550466960, 0.102902830108454790, 0.102853095409185520, 0.102803360452783100, 0.102753625239372700, 0.102703889769078250, 0.102654154042024060, +0.102604418058334060, 0.102554681818133440, 0.102504945321546140, 0.102455208568696460, 0.102405471559708310, 0.102355734294706930, 0.102305996773816220, 0.102256258997160510, +0.102206520964863710, 0.102156782677051060, 0.102107044133846440, 0.102057305335374230, 0.102007566281758290, 0.101957826973123890, 0.101908087409594920, 0.101858347591295740, +0.101808607518350230, 0.101758867190883660, 0.101709126609019910, 0.101659385772882920, 0.101609644682597890, 0.101559903338288770, 0.101510161740079860, 0.101460419888095120, +0.101410677782459780, 0.101360935423297730, 0.101311192810733350, 0.101261449944890540, 0.101211706825894560, 0.101161963453869310, 0.101112219828939140, 0.101062475951227980, +0.101012731820861080, 0.100962987437962350, 0.100913242802656150, 0.100863497915066410, 0.100813752775318340, 0.100764007383535910, 0.100714261739843020, 0.100664515844364910, +0.100614769697225520, 0.100565023298549190, 0.100515276648459870, 0.100465529747082810, 0.100415782594541910, 0.100366035190961560, 0.100316287536465680, 0.100266539631179510, +0.100216791475227010, 0.100167043068732530, 0.100117294411819990, 0.100067545504614660, 0.100017796347240460, 0.099968046939821781, 0.099918297282482541, 0.099868547375348005, +0.099818797218542088, 0.099769046812188733, 0.099719296156413215, 0.099669545251339448, 0.099619794097091832, 0.099570042693794270, 0.099520291041572048, 0.099470539140549111, +0.099420786990849816, 0.099371034592598120, 0.099321281945919271, 0.099271529050937210, 0.099221775907776338, 0.099172022516560585, 0.099122268877415209, 0.099072514990464169, +0.099022760855831837, 0.098973006473642169, 0.098923251844020413, 0.098873496967090538, 0.098823741842976473, 0.098773986471803507, 0.098724230853695569, 0.098674474988777044, +0.098624718877171905, 0.098574962519005396, 0.098525205914401490, 0.098475449063484558, 0.098425691966378570, 0.098375934623208802, 0.098326177034099183, 0.098276419199174125, +0.098226661118557587, 0.098176902792374829, 0.098127144220749821, 0.098077385403806949, 0.098027626341670171, 0.097977867034464761, 0.097928107482314689, 0.097878347685344355, +0.097828587643677703, 0.097778827357440035, 0.097729066826755279, 0.097679306051747433, 0.097629545032541759, 0.097579783769262213, 0.097530022262033209, 0.097480260510978717, +0.097430498516224012, 0.097380736277893065, 0.097330973796110262, 0.097281211070999601, 0.097231448102686344, 0.097181684891294473, 0.097131921436948376, 0.097082157739772051, +0.097032393799890759, 0.096982629617428498, 0.096932865192509654, 0.096883100525258198, 0.096833335615799446, 0.096783570464257340, 0.096733805070755879, 0.096684039435420352, +0.096634273558374714, 0.096584507439743394, 0.096534741079650363, 0.096484974478220922, 0.096435207635579057, 0.096385440551849152, 0.096335673227155222, 0.096285905661622539, +0.096236137855375103, 0.096186369808537314, 0.096136601521233156, 0.096086832993587945, 0.096037064225725638, 0.095987295217770691, 0.095937525969847046, 0.095887756482080033, +0.095837986754593638, 0.095788216787511829, 0.095738446580959910, 0.095688676135061879, 0.095638905449942163, 0.095589134525724748, 0.095539363362534921, 0.095489591960496695, +0.095439820319734497, 0.095390048440372299, 0.095340276322535417, 0.095290503966347848, 0.095240731371934020, 0.095190958539417919, 0.095141185468924860, 0.095091412160578856, +0.095041638614504306, 0.094991864830825223, 0.094942090809666910, 0.094892316551153377, 0.094842542055409054, 0.094792767322557939, 0.094742992352725333, 0.094693217146035263, +0.094643441702611700, 0.094593666022579972, 0.094543890106064080, 0.094494113953188463, 0.094444337564077122, 0.094394560938855385, 0.094344784077647237, 0.094295006980577134, +0.094245229647769060, 0.094195452079348360, 0.094145674275439031, 0.094095896236165516, 0.094046117961651826, 0.093996339452023278, 0.093946560707403884, 0.093896781727918086, +0.093847002513689881, 0.093797223064844629, 0.093747443381506312, 0.093697663463798944, 0.093647883311847854, 0.093598102925777069, 0.093548322305711015, 0.093498541451773720, +0.093448760364090500, 0.093398979042785393, 0.093349197487982843, 0.093299415699806848, 0.093249633678382751, 0.093199851423834579, 0.093150068936286773, 0.093100286215863359, +0.093050503262689668, 0.093000720076889712, 0.092950936658587974, 0.092901153007908438, 0.092851369124976463, 0.092801585009916060, 0.092751800662851269, 0.092702016083907407, +0.092652231273208499, 0.092602446230879029, 0.092552660957042995, 0.092502875451825742, 0.092453089715351308, 0.092403303747744150, 0.092353517549128294, 0.092303731119629071, +0.092253944459370532, 0.092204157568477135, 0.092154370447072892, 0.092104583095283174, 0.092054795513231993, 0.092005007701043834, 0.091955219658842707, 0.091905431386753972, +0.091855642884901653, 0.091805854153409791, 0.091756065192403730, 0.091706276002007509, 0.091656486582345598, 0.091606696933542037, 0.091556907055722170, 0.091507116949010023, +0.091457326613530107, 0.091407536049406421, 0.091357745256764336, 0.091307954235727878, 0.091258162986421545, 0.091208371508969363, 0.091158579803496689, 0.091108787870127578, +0.091058995708986484, 0.091009203320197463, 0.090959410703885885, 0.090909617860175762, 0.090859824789191607, 0.090810031491057444, 0.090760237965898646, 0.090710444213839253, +0.090660650235003318, 0.090610856029516185, 0.090561061597501921, 0.090511266939084997, 0.090461472054389466, 0.090411676943540686, 0.090361881606662725, 0.090312086043880066, +0.090262290255316735, 0.090212494241098132, 0.090162698001348282, 0.090112901536191697, 0.090063104845752417, 0.090013307930155814, 0.089963510789525941, 0.089913713423987282, +0.089863915833663918, 0.089814118018681194, 0.089764319979163176, 0.089714521715233905, 0.089664723227018781, 0.089614924514641855, 0.089565125578227614, 0.089515326417900110, +0.089465527033784742, 0.089415727426005551, 0.089365927594687047, 0.089316127539953286, 0.089266327261929637, 0.089216526760740170, 0.089166726036509394, 0.089116925089361351, +0.089067123919421440, 0.089017322526813727, 0.088967520911662698, 0.088917719074092433, 0.088867917014228304, 0.088818114732194392, 0.088768312228114751, 0.088718509502114767, +0.088668706554318508, 0.088618903384850484, 0.088569099993834763, 0.088519296381396731, 0.088469492547660455, 0.088419688492750448, 0.088369884216790776, 0.088320079719906838, +0.088270275002222703, 0.088220470063862882, 0.088170664904951443, 0.088120859525613784, 0.088071053925973974, 0.088021248106156524, 0.087971442066285530, 0.087921635806486362, +0.087871829326883102, 0.087822022627600263, 0.087772215708761939, 0.087722408570493501, 0.087672601212919060, 0.087622793636162669, 0.087572985840349726, 0.087523177825604329, +0.087473369592050987, 0.087423561139813769, 0.087373752469018101, 0.087323943579788052, 0.087274134472248133, 0.087224325146522438, 0.087174515602736383, 0.087124705841014033, +0.087074895861479915, 0.087025085664258123, 0.086975275249474057, 0.086925464617251799, 0.086875653767715888, 0.086825842700990391, 0.086776031417200722, 0.086726219916470990, +0.086676408198925262, 0.086626596264688951, 0.086576784113886154, 0.086526971746641396, 0.086477159163078771, 0.086427346363323679, 0.086377533347500229, 0.086327720115732948, +0.086277906668145915, 0.086228093004864573, 0.086178279126012988, 0.086128465031715701, 0.086078650722096819, 0.086028836197281744, 0.085979021457394583, 0.085929206502559863, +0.085879391332901692, 0.085829575948545483, 0.085779760349615333, 0.085729944536235350, 0.085680128508530934, 0.085630312266626193, 0.085580495810645682, 0.085530679140713495, +0.085480862256955045, 0.085431045159494429, 0.085381227848456212, 0.085331410323964491, 0.085281592586144664, 0.085231774635120869, 0.085181956471017645, 0.085132138093959073, +0.085082319504070608, 0.085032500701476346, 0.084982681686300826, 0.084932862458668157, 0.084883043018703780, 0.084833223366531790, 0.084783403502276297, 0.084733583426062742, +0.084683763138015233, 0.084633942638258311, 0.084584121926916098, 0.084534301004114007, 0.084484479869976176, 0.084434658524627143, 0.084384836968191018, 0.084335015200793256, +0.084285193222557939, 0.084235371033609646, 0.084185548634072488, 0.084135726024071891, 0.084085903203731979, 0.084036080173177319, 0.083986256932532005, 0.083936433481921507, +0.083886609821469907, 0.083836785951301798, 0.083786961871541277, 0.083737137582313784, 0.083687313083743456, 0.083637488375954402, 0.083587663459072065, 0.083537838333220579, +0.083488012998524486, 0.083438187455107921, 0.083388361703096339, 0.083338535742613851, 0.083288709573785008, 0.083238883196733962, 0.083189056611586154, 0.083139229818465693, +0.083089402817497160, 0.083039575608804692, 0.082989748192513715, 0.082939920568748368, 0.082890092737633217, 0.082840264699292399, 0.082790436453851354, 0.082740608001434221, +0.082690779342165122, 0.082640950476169525, 0.082591121403571541, 0.082541292124495763, 0.082491462639066315, 0.082441632947408652, 0.082391803049646897, 0.082341972945905645, +0.082292142636309004, 0.082242312120982458, 0.082192481400050130, 0.082142650473636614, 0.082092819341866005, 0.082042988004863801, 0.081993156462754124, 0.081943324715661570, +0.081893492763710246, 0.081843660607025637, 0.081793828245731878, 0.081743995679953108, 0.081694162909814780, 0.081644329935441060, 0.081594496756956500, 0.081544663374485266, +0.081494829788152812, 0.081444995998083289, 0.081395162004401278, 0.081345327807230916, 0.081295493406697672, 0.081245658802925697, 0.081195823996039571, 0.081145988986163445, +0.081096153773422788, 0.081046318357941752, 0.080996482739844916, 0.080946646919256432, 0.080896810896301782, 0.080846974671105090, 0.080797138243790978, 0.080747301614483569, +0.080697464783308345, 0.080647627750389458, 0.080597790515851059, 0.080547953079818629, 0.080498115442416321, 0.080448277603768728, 0.080398439563999988, 0.080348601323235597, +0.080298762881599692, 0.080248924239216896, 0.080199085396211331, 0.080149246352708509, 0.080099407108832565, 0.080049567664708110, 0.079999728020459279, 0.079949888176211584, +0.079900048132089160, 0.079850207888216618, 0.079800367444718120, 0.079750526801719138, 0.079700685959343848, 0.079650844917716387, 0.079601003676962268, 0.079551162237205639, +0.079501320598571096, 0.079451478761182817, 0.079401636725166272, 0.079351794490645652, 0.079301952057745539, 0.079252109426590098, 0.079202266597304824, 0.079152423570013897, +0.079102580344841897, 0.079052736921913017, 0.079002893301352725, 0.078953049483285215, 0.078903205467835066, 0.078853361255126472, 0.078803516845284902, 0.078753672238434561, +0.078703827434699586, 0.078653982434205474, 0.078604137237076419, 0.078554291843437027, 0.078504446253411450, 0.078454600467125199, 0.078404754484702452, 0.078354908306267831, +0.078305061931945474, 0.078255215361860919, 0.078205368596138330, 0.078155521634902303, 0.078105674478277043, 0.078055827126388033, 0.078005979579359452, 0.077956131837315937, +0.077906283900381637, 0.077856435768682078, 0.077806587442341424, 0.077756738921483853, 0.077706890206234891, 0.077657041296718687, 0.077607192193059893, 0.077557342895382672, +0.077507493403812536, 0.077457643718473662, 0.077407793839490688, 0.077357943766987777, 0.077308093501090455, 0.077258243041922900, 0.077208392389609748, 0.077158541544275150, +0.077108690506044658, 0.077058839275042437, 0.077008987851393110, 0.076959136235220882, 0.076909284426651237, 0.076859432425808394, 0.076809580232816976, 0.076759727847801162, +0.076709875270886463, 0.076660022502197084, 0.076610169541857190, 0.076560316389992333, 0.076510463046726679, 0.076460609512184863, 0.076410755786491091, 0.076360901869770861, +0.076311047762148379, 0.076261193463748281, 0.076211338974694759, 0.076161484295113338, 0.076111629425128197, 0.076061774364863971, 0.076011919114444881, 0.075962063673996438, +0.075912208043642834, 0.075862352223508706, 0.075812496213718258, 0.075762640014397004, 0.075712783625669161, 0.075662927047658909, 0.075613070280491787, 0.075563213324291986, +0.075513356179184157, 0.075463498845292479, 0.075413641322742517, 0.075363783611658436, 0.075313925712164900, 0.075264067624386116, 0.075214209348447594, 0.075164350884473555, +0.075114492232588648, 0.075064633392917052, 0.075014774365584319, 0.074964915150714656, 0.074915055748432699, 0.074865196158862668, 0.074815336382130074, 0.074765476418359150, +0.074715616267674090, 0.074665755930200445, 0.074615895406062394, 0.074566034695384600, 0.074516173798291299, 0.074466312714907987, 0.074416451445358897, 0.074366589989768681, +0.074316728348261543, 0.074266866520963037, 0.074217004507997356, 0.074167142309489162, 0.074117279925562676, 0.074067417356343437, 0.074017554601955651, 0.073967691662523968, +0.073917828538172622, 0.073867965229027152, 0.073818101735211764, 0.073768238056851121, 0.073718374194069430, 0.073668510146992258, 0.073618645915743811, 0.073568781500448308, +0.073518916901231288, 0.073469052118216985, 0.073419187151530035, 0.073369322001294687, 0.073319456667636479, 0.073269591150679617, 0.073219725450548792, 0.073169859567368198, +0.073119993501263414, 0.073070127252358633, 0.073020260820778532, 0.072970394206647346, 0.072920527410090613, 0.072870660431232553, 0.072820793270197859, 0.072770925927110722, +0.072721058402096722, 0.072671190695280080, 0.072621322806785016, 0.072571454736737082, 0.072521586485260511, 0.072471718052479983, 0.072421849438519703, 0.072371980643505252, +0.072322111667560848, 0.072272242510811172, 0.072222373173380428, 0.072172503655394210, 0.072122633956976726, 0.072072764078252666, 0.072022894019346237, 0.071973023780383033, +0.071923153361487260, 0.071873282762783611, 0.071823411984396304, 0.071773541026450907, 0.071723669889071667, 0.071673798572382805, 0.071623927076509900, 0.071574055401577158, +0.071524183547709286, 0.071474311515030517, 0.071424439303666404, 0.071374566913741208, 0.071324694345379580, 0.071274821598705781, 0.071224948673845365, 0.071175075570922577, +0.071125202290062098, 0.071075328831388188, 0.071025455195026385, 0.070975581381100938, 0.070925707389736553, 0.070875833221057435, 0.070825958875189193, 0.070776084352256061, +0.070726209652382258, 0.070676334775693378, 0.070626459722313670, 0.070576584492367811, 0.070526709085980036, 0.070476833503275937, 0.070426957744379765, 0.070377081809416195, +0.070327205698509462, 0.070277329411785175, 0.070227452949367553, 0.070177576311381301, 0.070127699497950668, 0.070077822509201235, 0.070027945345257234, 0.069978068006243385, +0.069928190492283909, 0.069878312803504400, 0.069828434940029119, 0.069778556901982744, 0.069728678689489537, 0.069678800302675079, 0.069628921741663616, 0.069579043006579397, +0.069529164097548030, 0.069479285014693734, 0.069429405758141244, 0.069379526328014779, 0.069329646724439961, 0.069279766947541011, 0.069229886997442647, 0.069180006874269132, +0.069130126578146031, 0.069080246109197621, 0.069030365467548593, 0.068980484653323210, 0.068930603666647050, 0.068880722507644390, 0.068830841176439922, 0.068780959673157907, +0.068731077997923939, 0.068681196150862267, 0.068631314132097165, 0.068581431941754228, 0.068531549579957704, 0.068481667046832312, 0.068431784342502300, 0.068381901467093276, +0.068332018420729501, 0.068282135203535682, 0.068232251815636080, 0.068182368257156289, 0.068132484528220572, 0.068082600628953646, 0.068032716559479775, 0.067982832319924566, +0.067932947910412267, 0.067883063331067597, 0.067833178582014833, 0.067783293663379568, 0.067733408575286064, 0.067683523317858596, 0.067633637891222759, 0.067583752295502827, +0.067533866530823522, 0.067483980597309090, 0.067434094495085167, 0.067384208224276002, 0.067334321785006326, 0.067284435177400390, 0.067234548401583813, 0.067184661457680858, +0.067134774345816259, 0.067084887066114277, 0.067034999618700519, 0.066985112003699276, 0.066935224221235240, 0.066885336271432699, 0.066835448154417262, 0.066785559870313205, +0.066735671419245260, 0.066685782801337676, 0.066635894016716088, 0.066586005065504758, 0.066536115947827976, 0.066486226663811349, 0.066436337213579152, 0.066386447597256121, +0.066336557814966515, 0.066286667866835972, 0.066236777752988751, 0.066186887473549588, 0.066136997028642758, 0.066087106418393882, 0.066037215642927236, 0.065987324702367553, +0.065937433596839123, 0.065887542326467541, 0.065837650891377109, 0.065787759291692546, 0.065737867527538144, 0.065687975599039522, 0.065638083506320957, 0.065588191249506739, +0.065538298828722488, 0.065488406244092481, 0.065438513495741465, 0.065388620583793730, 0.065338727508374883, 0.065288834269609214, 0.065238940867621456, 0.065189047302535899, +0.065139153574478179, 0.065089259683572570, 0.065039365629943807, 0.064989471413716193, 0.064939577035015350, 0.064889682493965553, 0.064839787790691550, 0.064789892925317644, +0.064739997897969442, 0.064690102708771235, 0.064640207357847340, 0.064590311845323378, 0.064540416171323625, 0.064490520335972829, 0.064440624339395292, 0.064390728181716650, +0.064340831863061165, 0.064290935383553613, 0.064241038743318282, 0.064191141942480795, 0.064141244981165454, 0.064091347859496994, 0.064041450577599732, 0.063991553135599274, +0.063941655533619940, 0.063891757771786475, 0.063841859850223157, 0.063791961769055647, 0.063742063528408222, 0.063692165128405198, 0.063642266569172212, 0.063592367850833553, +0.063542468973513969, 0.063492569937337776, 0.063442670742430596, 0.063392771388916747, 0.063342871876920961, 0.063292972206567558, 0.063243072377982171, 0.063193172391289090, +0.063143272246613091, 0.063093371944078463, 0.063043471483810856, 0.062993570865934559, 0.062943670090574347, 0.062893769157854496, 0.062843868067900682, 0.062793966820837196, +0.062744065416788786, 0.062694163855879781, 0.062644262138235804, 0.062594360263981172, 0.062544458233240188, 0.062494556046138516, 0.062444653702800446, 0.062394751203350737, +0.062344848547913716, 0.062294945736615009, 0.062245042769578943, 0.062195139646930270, 0.062145236368793301, 0.062095332935293693, 0.062045429346555742, 0.061995525602704223, +0.061945621703863446, 0.061895717650159061, 0.061845813441715379, 0.061795909078657160, 0.061746004561108729, 0.061696099889195728, 0.061646195063042482, 0.061596290082773300, +0.061546384948513840, 0.061496479660388410, 0.061446574218521788, 0.061396668623038289, 0.061346762874063557, 0.061296856971721922, 0.061246950916138139, 0.061197044707436539, +0.061147138345742771, 0.061097231831181154, 0.061047325163876461, 0.060997418343953010, 0.060947511371536457, 0.060897604246751121, 0.060847696969721782, 0.060797789540572751, +0.060747881959429692, 0.060697974226416929, 0.060648066341658792, 0.060598158305280925, 0.060548250117407665, 0.060498341778163781, 0.060448433287673596, 0.060398524646062775, +0.060348615853455634, 0.060298706909976962, 0.060248797815751078, 0.060198888570903643, 0.060148979175558982, 0.060099069629841878, 0.060049159933876654, 0.059999250087788975, +0.059949340091703170, 0.059899429945744015, 0.059849519650035841, 0.059799609204704313, 0.059749698609873760, 0.059699787865668964, 0.059649876972214251, 0.059599965929635290, +0.059550054738056420, 0.059500143397601964, 0.059450231908397592, 0.059400320270567644, 0.059350408484236894, 0.059300496549529680, 0.059250584466571665, 0.059200672235487188, +0.059150759856401038, 0.059100847329437538, 0.059050934654722366, 0.059001021832379853, 0.058951108862534789, 0.058901195745311510, 0.058851282480835689, 0.058801369069231654, +0.058751455510624204, 0.058701541805137661, 0.058651627952897717, 0.058601713954028696, 0.058551799808654957, 0.058501885516902150, 0.058451971078894639, 0.058402056494757194, +0.058352141764614167, 0.058302226888591227, 0.058252311866812720, 0.058202396699403434, 0.058152481386487716, 0.058102565928191234, 0.058052650324638341, 0.058002734575953820, +0.057952818682262014, 0.057902902643688615, 0.057852986460357955, 0.057803070132394822, 0.057753153659923583, 0.057703237043069892, 0.057653320281958118, 0.057603403376712589, +0.057553486327459005, 0.057503569134321697, 0.057453651797425474, 0.057403734316894675, 0.057353816692854984, 0.057303898925430745, 0.057253981014746769, 0.057204062960927393, +0.057154144764098302, 0.057104226424383848, 0.057054307941908827, 0.057004389316797598, 0.056954470549175837, 0.056904551639167897, 0.056854632586898581, 0.056804713392492240, +0.056754794056074552, 0.056704874577769890, 0.056654954957702591, 0.056605035195998347, 0.056555115292781524, 0.056505195248176904, 0.056455275062308859, 0.056405354735303059, +0.056355434267283885, 0.056305513658376119, 0.056255592908704126, 0.056205672018393590, 0.056155750987568885, 0.056105829816354792, 0.056055908504875684, 0.056005987053257253, +0.055956065461623850, 0.055906143730100284, 0.055856221858810916, 0.055806299847881435, 0.055756377697436202, 0.055706455407600032, 0.055656532978497278, 0.055606610410253630, +0.055556687702993462, 0.055506764856841126, 0.055456841871922326, 0.055406918748361414, 0.055356995486283214, 0.055307072085812078, 0.055257148547073705, 0.055207224870192459, +0.055157301055293158, 0.055107377102500153, 0.055057453011939150, 0.055007528783734522, 0.054957604418011063, 0.054907679914893155, 0.054857755274506488, 0.054807830496975435, +0.054757905582424805, 0.054707980530978965, 0.054658055342763620, 0.054608130017903135, 0.054558204556521883, 0.054508278958745562, 0.054458353224698539, 0.054408427354505642, +0.054358501348291226, 0.054308575206181008, 0.054258648928299347, 0.054208722514771060, 0.054158795965720527, 0.054108869281273446, 0.054058942461554196, 0.054009015506687588, +0.053959088416797994, 0.053909161192011126, 0.053859233832451357, 0.053809306338243504, 0.053759378709511939, 0.053709450946382367, 0.053659523048979176, 0.053609595017426730, +0.053559666851850735, 0.053509738552375577, 0.053459810119126074, 0.053409881552226597, 0.053359952851802867, 0.053310024017979254, 0.053260095050880578, 0.053210165950631216, +0.053160236717356889, 0.053110307351181975, 0.053060377852231284, 0.053010448220629211, 0.052960518456501453, 0.052910588559972403, 0.052860658531166886, 0.052810728370209274, +0.052760798077225286, 0.052710867652339302, 0.052660937095676152, 0.052611006407360210, 0.052561075587517200, 0.052511144636271503, 0.052461213553747499, 0.052411282340070905, +0.052361350995366103, 0.052311419519757922, 0.052261487913370749, 0.052211556176330304, 0.052161624308760965, 0.052111692310787570, 0.052061760182534500, 0.052011827924127466, +0.051961895535690868, 0.051911963017349530, 0.051862030369227839, 0.051812097591451521, 0.051762164684144955, 0.051712231647432980, 0.051662298481439980, 0.051612365186291677, +0.051562431762112462, 0.051512498209026723, 0.051462564527160186, 0.051412630716637230, 0.051362696777582706, 0.051312762710120988, 0.051262828514377815, 0.051212894190477566, +0.051162959738545080, 0.051113025158704757, 0.051063090451082309, 0.051013155615802136, 0.050963220652989076, 0.050913285562767523, 0.050863350345263195, 0.050813415000600493, +0.050763479528904254, 0.050713543930298872, 0.050663608204910074, 0.050613672352862252, 0.050563736374279813, 0.050513800269288471, 0.050463864038012632, 0.050413927680577127, +0.050363991197106363, 0.050314054587726066, 0.050264117852560630, 0.050214180991734900, 0.050164244005373275, 0.050114306893601482, 0.050064369656543928, 0.050014432294325444, +0.049964494807070436, 0.049914557194904632, 0.049864619457952439, 0.049814681596338700, 0.049764743610187810, 0.049714805499625501, 0.049664867264776182, 0.049614928905764251, +0.049564990422715442, 0.049515051815754156, 0.049465113085005244, 0.049415174230593099, 0.049365235252643469, 0.049315296151280746, 0.049265356926629783, 0.049215417578814986, +0.049165478107962089, 0.049115538514195499, 0.049065598797640060, 0.049015658958420180, 0.048965718996661592, 0.048915778912488717, 0.048865838706026385, 0.048815898377399018, +0.048765957926732342, 0.048716017354150778, 0.048666076659779171, 0.048616135843741928, 0.048566194906164782, 0.048516253847172154, 0.048466312666888452, 0.048416371365439408, +0.048366429942949436, 0.048316488399543389, 0.048266546735345674, 0.048216604950482043, 0.048166663045076892, 0.048116721019255092, 0.048066778873141036, 0.048016836606860486, +0.047966894220537841, 0.047916951714297953, 0.047867009088265251, 0.047817066342565467, 0.047767123477323016, 0.047717180492662763, 0.047667237388709108, 0.047617294165587805, +0.047567350823423268, 0.047517407362339906, 0.047467463782463477, 0.047417520083918384, 0.047367576266829491, 0.047317632331321212, 0.047267688277519294, 0.047217744105548159, +0.047167799815532666, 0.047117855407597227, 0.047067910881867597, 0.047017966238468184, 0.046968021477523859, 0.046918076599159031, 0.046868131603499459, 0.046818186490669565, +0.046768241260794194, 0.046718295913997780, 0.046668350450406071, 0.046618404870143487, 0.046568459173334444, 0.046518513360104700, 0.046468567430578672, 0.046418621384881224, +0.046368675223136778, 0.046318728945471087, 0.046268782552008579, 0.046218836042874113, 0.046168889418192111, 0.046118942678088332, 0.046068995822687191, 0.046019048852113560, +0.045969101766491868, 0.045919154565947869, 0.045869207250605976, 0.045819259820591068, 0.045769312276027561, 0.045719364617041229, 0.045669416843756479, 0.045619468956298183, +0.045569520954790776, 0.045519572839360006, 0.045469624610130308, 0.045419676267226108, 0.045369727810773156, 0.045319779240895884, 0.045269830557719166, 0.045219881761367424, +0.045169932851966424, 0.045119983829640595, 0.045070034694514802, 0.045020085446713480, 0.044970136086362390, 0.044920186613585961, 0.044870237028509057, 0.044820287331256127, +0.044770337521952919, 0.044720387600723860, 0.044670437567693844, 0.044620487422987284, 0.044570537166729950, 0.044520586799046268, 0.044470636320060680, 0.044420685729898948, +0.044370735028685500, 0.044320784216545214, 0.044270833293602520, 0.044220882259983191, 0.044170931115811655, 0.044120979861212793, 0.044071028496311032, 0.044021077021232147, +0.043971125436100572, 0.043921173741041181, 0.043871221936178414, 0.043821270021638034, 0.043771317997544475, 0.043721365864022629, 0.043671413621196919, 0.043621461269193119, +0.043571508808135664, 0.043521556238149003, 0.043471603559358883, 0.043421650771889760, 0.043371697875866512, 0.043321744871413576, 0.043271791758656718, 0.043221838537720381, +0.043171885208729451, 0.043121931771808356, 0.043071978227082884, 0.043022024574677464, 0.042972070814716982, 0.042922116947325881, 0.042872162972629926, 0.042822208890753569, +0.042772254701821687, 0.042722300405958723, 0.042672346003290458, 0.042622391493941321, 0.042572436878036211, 0.042522482155699565, 0.042472527327057155, 0.042422572392233425, +0.042372617351352823, 0.042322662204541117, 0.042272706951922763, 0.042222751593622633, 0.042172796129765183, 0.042122840560476195, 0.042072884885880096, 0.042022929106101788, +0.041972973221265711, 0.041923017231497647, 0.041873061136922039, 0.041823104937663780, 0.041773148633847318, 0.041723192225598421, 0.041673235713041545, 0.041623279096301584, +0.041573322375502979, 0.041523365550771511, 0.041473408622231631, 0.041423451590007786, 0.041373494454225751, 0.041323537215009983, 0.041273579872485373, 0.041223622426776373, +0.041173664878008755, 0.041123707226306976, 0.041073749471795928, 0.041023791614600062, 0.040973833654845165, 0.040923875592655680, 0.040873917428156506, 0.040823959161472100, +0.040774000792728235, 0.040724042322049368, 0.040674083749560400, 0.040624125075385771, 0.040574166299651278, 0.040524207422481369, 0.040474248444000500, 0.040424289364334454, +0.040374330183607678, 0.040324370901945079, 0.040274411519471115, 0.040224452036311559, 0.040174492452590874, 0.040124532768433960, 0.040074572983965266, 0.040024613099310588, +0.039974653114594375, 0.039924693029941533, 0.039874732845476511, 0.039824772561325099, 0.039774812177611758, 0.039724851694461390, 0.039674891111998449, 0.039624930430348718, +0.039574969649636665, 0.039525008769986741, 0.039475047791524741, 0.039425086714375120, 0.039375125538662785, 0.039325164264512193, 0.039275202892049131, 0.039225241421398063, +0.039175279852683889, 0.039125318186031072, 0.039075356421565406, 0.039025394559411349, 0.038975432599693806, 0.038925470542537234, 0.038875508388067435, 0.038825546136408859, +0.038775583787686425, 0.038725621342024584, 0.038675658799549130, 0.038625696160384533, 0.038575733424655693, 0.038525770592487081, 0.038475807664004477, 0.038425844639332365, +0.038375881518595188, 0.038325918301918754, 0.038275954989427527, 0.038225991581246413, 0.038176028077499875, 0.038126064478313709, 0.038076100783812385, 0.038026136994120802, +0.037976173109363437, 0.037926209129666086, 0.037876245055153211, 0.037826280885949720, 0.037776316622180083, 0.037726352263970100, 0.037676387811444237, 0.037626423264727406, +0.037576458623944070, 0.037526493889220032, 0.037476529060679761, 0.037426564138447721, 0.037376599122649720, 0.037326634013410215, 0.037276668810854126, 0.037226703515105923, +0.037176738126291402, 0.037126772644535039, 0.037076807069961748, 0.037026841402695986, 0.036976875642863574, 0.036926909790588963, 0.036876943845997087, 0.036826977809212402, +0.036777011680360717, 0.036727045459566503, 0.036677079146954679, 0.036627112742649709, 0.036577146246777402, 0.036527179659462228, 0.036477212980828663, 0.036427246211002511, +0.036377279350108239, 0.036327312398270771, 0.036277345355614575, 0.036227378222265468, 0.036177410998347904, 0.036127443683986821, 0.036077476279306686, 0.036027508784433296, +0.035977541199491141, 0.035927573524605134, 0.035877605759899747, 0.035827637905500788, 0.035777669961532733, 0.035727701928120505, 0.035677733805388578, 0.035627765593462764, +0.035577797292467531, 0.035527828902527807, 0.035477860423768062, 0.035427891856314120, 0.035377923200290443, 0.035327954455821514, 0.035277985623033137, 0.035228016702049801, +0.035178047692996428, 0.035128078595997488, 0.035078109411178796, 0.035028140138664829, 0.034978170778580508, 0.034928201331050325, 0.034878231796200074, 0.034828262174154252, +0.034778292465037768, 0.034728322668975110, 0.034678352786092090, 0.034628382816513190, 0.034578412760363331, 0.034528442617766997, 0.034478472388850004, 0.034428502073736822, +0.034378531672551949, 0.034328561185421186, 0.034278590612469018, 0.034228619953820379, 0.034178649209599739, 0.034128678379932928, 0.034078707464944416, 0.034028736464759138, +0.033978765379501570, 0.033928794209297543, 0.033878822954271519, 0.033828851614548447, 0.033778880190252797, 0.033728908681510385, 0.033678937088445708, 0.033628965411183688, +0.033578993649848815, 0.033529021804566891, 0.033479049875462422, 0.033429077862659883, 0.033379105766285090, 0.033329133586462535, 0.033279161323317138, 0.033229188976973405, +0.033179216547557136, 0.033129244035192830, 0.033079271440005414, 0.033029298762119373, 0.032979326001660529, 0.032929353158753373, 0.032879380233522833, 0.032829407226093399, +0.032779434136590888, 0.032729460965139796, 0.032679487711865046, 0.032629514376891135, 0.032579540960343885, 0.032529567462347780, 0.032479593883027312, 0.032429620222508303, +0.032379646480915243, 0.032329672658373068, 0.032279698755006268, 0.032229724770940667, 0.032179750706300754, 0.032129776561211458, 0.032079802335797283, 0.032029828030184046, +0.031979853644496237, 0.031929879178858790, 0.031879904633396204, 0.031829930008234301, 0.031779955303497580, 0.031729980519310960, 0.031680005655798947, 0.031630030713087370, +0.031580055691300707, 0.031530080590563912, 0.031480105411001470, 0.031430130152739211, 0.031380154815901617, 0.031330179400613202, 0.031280203906999780, 0.031230228335185847, +0.031180252685296343, 0.031130276957455762, 0.031080301151789936, 0.031030325268423354, 0.030980349307480962, 0.030930373269087250, 0.030880397153368048, 0.030830420960447857, +0.030780444690451610, 0.030730468343503809, 0.030680491919730282, 0.030630515419255523, 0.030580538842204477, 0.030530562188701638, 0.030480585458872840, 0.030430608652842576, +0.030380631770735349, 0.030330654812676987, 0.030280677778791985, 0.030230700669205291, 0.030180723484041400, 0.030130746223426146, 0.030080768887484025, 0.030030791476339982, +0.029980813990118517, 0.029930836428945458, 0.029880858792945310, 0.029830881082243015, 0.029780903296963073, 0.029730925437231319, 0.029680947503172250, 0.029630969494910810, +0.029580991412571506, 0.029531013256280166, 0.029481035026161291, 0.029431056722339387, 0.029381078344940286, 0.029331099894088487, 0.029281121369908937, 0.029231142772526142, +0.029181164102065935, 0.029131185358652816, 0.029081206542411732, 0.029031227653467190, 0.028981248691945023, 0.028931269657969733, 0.028881290551666269, 0.028831311373159137, +0.028781332122574169, 0.028731352800035869, 0.028681373405669189, 0.028631393939598630, 0.028581414401950032, 0.028531434792847896, 0.028481455112417176, 0.028431475360782370, +0.028381495538069325, 0.028331515644402536, 0.028281535679906517, 0.028231555644707102, 0.028181575538928798, 0.028131595362696556, 0.028081615116134880, 0.028031634799369608, +0.027981654412525252, 0.027931673955726762, 0.027881693429098641, 0.027831712832766729, 0.027781732166855536, 0.027731751431490013, 0.027681770626794666, 0.027631789752895340, +0.027581808809916536, 0.027531827797983213, 0.027481846717219875, 0.027431865567752362, 0.027381884349705187, 0.027331903063202857, 0.027281921708371216, 0.027231940285334769, +0.027181958794218471, 0.027131977235146831, 0.027081995608245691, 0.027032013913639564, 0.026982032151453401, 0.026932050321811715, 0.026882068424840349, 0.026832086460663811, +0.026782104429407053, 0.026732122331194593, 0.026682140166152273, 0.026632157934404599, 0.026582175636076531, 0.026532193271292581, 0.026482210840178589, 0.026432228342859073, +0.026382245779458541, 0.026332263150102841, 0.026282280454916481, 0.026232297694024419, 0.026182314867551168, 0.026132331975622577, 0.026082349018363156, 0.026032365995897859, +0.025982382908351205, 0.025932399755849038, 0.025882416538515873, 0.025832433256476665, 0.025782449909855929, 0.025732466498779513, 0.025682483023371932, 0.025632499483758141, +0.025582515880062658, 0.025532532212411332, 0.025482548480928673, 0.025432564685739199, 0.025382580826968759, 0.025332596904741864, 0.025282612919183479, 0.025232628870418116, +0.025182644758571626, 0.025132660583768524, 0.025082676346133773, 0.025032692045791883, 0.024982707682868709, 0.024932723257488767, 0.024882738769777014, 0.024832754219857971, +0.024782769607857486, 0.024732784933900080, 0.024682800198110710, 0.024632815400613895, 0.024582830541535483, 0.024532845620999999, 0.024482860639132398, 0.024432875596057203, +0.024382890491900264, 0.024332905326786097, 0.024282920100839222, 0.024232934814185494, 0.024182949466949426, 0.024132964059255985, 0.024082978591229692, 0.024032993062996392, +0.023983007474680611, 0.023933021826407313, 0.023883036118301018, 0.023833050350487574, 0.023783064523091504, 0.023733078636237772, 0.023683092690050901, 0.023633106684656742, +0.023583120620179816, 0.023533134496745090, 0.023483148314477082, 0.023433162073501646, 0.023383175773943308, 0.023333189415926586, 0.023283202999577333, 0.023233216525020074, +0.023183229992379772, 0.023133243401780954, 0.023083256753349466, 0.023033270047209842, 0.022983283283487040, 0.022933296462305585, 0.022883309583791336, 0.022833322648068810, +0.022783335655262978, 0.022733348605498364, 0.022683361498900823, 0.022633374335594876, 0.022583387115705494, 0.022533399839357201, 0.022483412506675852, 0.022433425117785972, +0.022383437672812083, 0.022333450171880046, 0.022283462615114383, 0.022233475002640064, 0.022183487334581614, 0.022133499611064887, 0.022083511832214416, 0.022033523998155162, +0.021983536109011652, 0.021933548164909750, 0.021883560165973974, 0.021833572112329301, 0.021783584004100253, 0.021733595841412687, 0.021683607624391133, 0.021633619353160560, +0.021583631027845492, 0.021533642648571792, 0.021483654215463988, 0.021433665728647047, 0.021383677188245496, 0.021333688594385197, 0.021283699947190676, 0.021233711246786462, +0.021183722493298415, 0.021133733686851060, 0.021083744827569369, 0.021033755915577875, 0.020983766951002434, 0.020933777933967578, 0.020883788864598275, 0.020833799743019056, +0.020783810569355781, 0.020733821343732979, 0.020683832066275627, 0.020633842737108249, 0.020583853356356707, 0.020533863924145534, 0.020483874440599698, 0.020433884905843733, +0.020383895320003502, 0.020333905683203531, 0.020283915995568353, 0.020233926257223825, 0.020183936468294486, 0.020133946628905303, 0.020083956739180810, 0.020033966799246870, +0.019983976809228015, 0.019933986769249214, 0.019883996679435006, 0.019834006539911245, 0.019784016350802472, 0.019734026112233658, 0.019684035824329333, 0.019634045487215365, +0.019584055101016278, 0.019534064665857057, 0.019484074181862231, 0.019434083649157663, 0.019384093067867886, 0.019334102438117430, 0.019284111760032165, 0.019234121033736621, +0.019184130259355770, 0.019134139437014152, 0.019084148566837631, 0.019034157648950736, 0.018984166683478448, 0.018934175670545301, 0.018884184610277157, 0.018834193502798552, +0.018784202348234462, 0.018734211146709423, 0.018684219898349300, 0.018634228603278628, 0.018584237261622383, 0.018534245873505103, 0.018484254439052650, 0.018434262958389562, +0.018384271431640373, 0.018334279858930949, 0.018284288240385825, 0.018234296576129981, 0.018184304866287953, 0.018134313110985605, 0.018084321310347474, 0.018034329464498539, +0.017984337573563339, 0.017934345637667739, 0.017884353656936271, 0.017834361631493923, 0.017784369561465226, 0.017734377446976046, 0.017684385288150927, 0.017634393085114840, +0.017584400837992332, 0.017534408546909262, 0.017484416211990171, 0.017434423833360042, 0.017384431411143406, 0.017334438945466137, 0.017284446436452772, 0.017234453884227844, +0.017184461288917225, 0.017134468650645454, 0.017084475969537515, 0.017034483245717939, 0.016984490479312598, 0.016934497670446032, 0.016884504819243220, 0.016834511925828705, +0.016784518990328352, 0.016734526012866704, 0.016684532993568736, 0.016634539932558996, 0.016584546829963350, 0.016534553685906336, 0.016484560500512935, 0.016434567273907692, +0.016384574006216474, 0.016334580697563824, 0.016284587348074274, 0.016234593957873703, 0.016184600527086642, 0.016134607055838083, 0.016084613544252564, 0.016034619992455954, +0.015984626400572792, 0.015934632768728065, 0.015884639097046314, 0.015834645385653406, 0.015784651634673887, 0.015734657844232738, 0.015684664014454501, 0.015634670145465050, +0.015584676237388920, 0.015534682290351100, 0.015484688304476132, 0.015434694279889886, 0.015384700216716904, 0.015334706115081729, 0.015284711975110232, 0.015234717796926953, +0.015184723580656883, 0.015134729326424557, 0.015084735034355853, 0.015034740704575313, 0.014984746337207918, 0.014934751932378216, 0.014884757490212076, 0.014834763010834045, +0.014784768494369103, 0.014734773940941798, 0.014684779350678002, 0.014634784723702257, 0.014584790060139552, 0.014534795360114426, 0.014484800623752755, 0.014434805851179084, +0.014384811042518398, 0.014334816197895240, 0.014284821317435487, 0.014234826401263679, 0.014184831449504361, 0.014134836462283409, 0.014084841439725366, 0.014034846381955219, +0.013984851289097513, 0.013934856161278122, 0.013884860998621591, 0.013834865801252906, 0.013784870569296614, 0.013734875302878589, 0.013684880002123376, 0.013634884667155962, +0.013584889298100894, 0.013534893895084046, 0.013484898458229963, 0.013434902987663635, 0.013384907483509605, 0.013334911945893750, 0.013284916374940616, 0.013234920770774745, +0.013184925133522018, 0.013134929463306978, 0.013084933760254613, 0.013034938024489471, 0.012984942256137427, 0.012934946455323027, 0.012884950622171262, 0.012834954756806675, +0.012784958859355147, 0.012734962929941222, 0.012684966968689888, 0.012634970975725694, 0.012584974951174515, 0.012534978895160901, 0.012484982807809837, 0.012434986689245874, +0.012384990539594886, 0.012334994358981425, 0.012284998147530032, 0.012235001905366588, 0.012185005632615639, 0.012135009329402176, 0.012085012995850746, 0.012035016632087227, +0.011985020238236168, 0.011935023814422557, 0.011885027360770942, 0.011835030877407202, 0.011785034364455887, 0.011735037822041985, 0.011685041250290044, 0.011635044649325946, +0.011585048019274234, 0.011535051360259903, 0.011485054672407499, 0.011435057955842903, 0.011385061210690661, 0.011335064437075324, 0.011285067635122768, 0.011235070804957545, +0.011185073946704644, 0.011135077060488613, 0.011085080146435333, 0.011035083204669355, 0.010985086235315668, 0.010935089238498820, 0.010885092214344695, 0.010835095162977839, +0.010785098084523244, 0.010735100979105461, 0.010685103846850369, 0.010635106687882517, 0.010585109502326899, 0.010535112290308063, 0.010485115051951890, 0.010435117787382930, +0.010385120496726175, 0.010335123180106175, 0.010285125837648811, 0.010235128469478633, 0.010185131075720189, 0.010135133656499361, 0.010085136211940699, 0.010035138742169197, +0.009985141247309405, 0.009935143727487203, 0.009885146182827142, 0.009835148613454215, 0.009785151019492972, 0.009735153401069296, 0.009685155758307737, 0.009635158091333288, +0.009585160400270500, 0.009535162685245254, 0.009485164946382102, 0.009435167183806039, 0.009385169397641613, 0.009335171588014706, 0.009285173755049872, 0.009235175898871659, +0.009185178019605951, 0.009135180117377297, 0.009085182192310694, 0.009035184244530689, 0.008985186274163171, 0.008935188281332685, 0.008885190266164227, 0.008835192228782351, +0.008785194169312938, 0.008735196087880540, 0.008685197984610153, 0.008635199859626325, 0.008585201713054942, 0.008535203545020555, 0.008485205355648159, 0.008435207145062306, +0.008385208913388878, 0.008335210660752429, 0.008285212387277509, 0.008235214093090002, 0.008185215778314459, 0.008135217443075878, 0.008085219087498808, 0.008035220711709135, +0.007985222315831410, 0.007935223899990629, 0.007885225464311346, 0.007835227008919440, 0.007785228533939469, 0.007735230039496426, 0.007685231525714864, 0.007635232992720667, +0.007585234440638388, 0.007535235869593022, 0.007485237279709124, 0.007435238671112575, 0.007385240043927930, 0.007335241398280185, 0.007285242734293892, 0.007235244052094937, +0.007185245351807872, 0.007135246633557249, 0.007085247897468953, 0.007035249143667537, 0.006985250372277999, 0.006935251583424892, 0.006885252777234099, 0.006835253953830174, +0.006785255113338114, 0.006735256255882473, 0.006685257381589134, 0.006635258490582652, 0.006585259582988025, 0.006535260658929804, 0.006485261718533876, 0.006435262761924793, +0.006385263789227553, 0.006335264800566710, 0.006285265796068149, 0.006235266775856423, 0.006185267740056086, 0.006135268688793025, 0.006085269622191791, 0.006035270540377383, +0.005985271443474355, 0.005935272331608592, 0.005885273204904649, 0.005835274063487523, 0.005785274907481767, 0.005735275737013268, 0.005685276552206580, 0.005635277353186701, +0.005585278140078183, 0.005535278913006915, 0.005485279672097450, 0.005435280417474785, 0.005385281149263474, 0.005335281867589406, 0.005285282572577133, 0.005235283264351209, +0.005185283943037521, 0.005135284608760623, 0.005085285261645514, 0.005035285901816748, 0.004985286529400210, 0.004935287144520456, 0.004885287747302485, 0.004835288337870850, +0.004785288916351439, 0.004735289482868805, 0.004685290037547947, 0.004635290580513421, 0.004585291111891111, 0.004535291631805574, 0.004485292140381809, 0.004435292637744368, +0.004385293124019140, 0.004335293599330679, 0.004285294063803541, 0.004235294517563611, 0.004185294960735444, 0.004135295393444041, 0.004085295815813955, 0.004035296227971073, +0.003985296630039951, 0.003935297022145587, 0.003885297404412537, 0.003835297776966687, 0.003785298139932593, 0.003735298493435253, 0.003685298837599223, 0.003635299172550391, +0.003585299498413309, 0.003535299815312980, 0.003485300123373957, 0.003435300422722127, 0.003385300713482047, 0.003335300995778715, 0.003285301269736686, 0.003235301535481848, +0.003185301793138756, 0.003135302042831966, 0.003085302284687364, 0.003035302518829507, 0.002985302745383394, 0.002935302964473579, 0.002885303176225952, 0.002835303380765067, +0.002785303578215922, 0.002735303768703075, 0.002685303952352413, 0.002635304129288491, 0.002585304299636308, 0.002535304463520421, 0.002485304621066716, 0.002435304772399750, +0.002385304917644522, 0.002335305056925588, 0.002285305190368835, 0.002235305318098819, 0.002185305440240096, 0.002135305556918553, 0.002085305668258747, 0.002035305774385676, +0.001985305875423896, 0.001935305971499296, 0.001885306062736431, 0.001835306149260301, 0.001785306231195462, 0.001735306308667801, 0.001685306381801874, 0.001635306450722681, +0.001585306515554778, 0.001535306576424053, 0.001485306633455062, 0.001435306686772804, 0.001385306736501835, 0.001335306782768043, 0.001285306825695984, 0.001235306865410214, +0.001185306902036622, 0.001135306935699761, 0.001085306966524634, 0.001035306994635795, 0.000985307020159133, 0.000935307043219203, 0.000885307063941005, 0.000835307082449096, +0.000785307098869363, 0.000735307113326362, 0.000685307125945094, 0.000635307136850113, 0.000585307146167309, 0.000535307154021237, 0.000485307160536898, 0.000435307165838846, +0.000385307170052970, 0.000335307173303827, 0.000285307175716415, 0.000235307177415291, 0.000185307178526344, 0.000135307179174129, 0.000085307179483201, 0.000035307179579450, +-0.000014692820412569, -0.000064692820367856, -0.000114692820161855, -0.000164692819668678, -0.000214692818763769, -0.000264692817322128, -0.000314692815219199, -0.000364692812329094, +-0.000414692808527257, -0.000464692803688688, -0.000514692797688831, -0.000564692790401798, -0.000614692781703032, -0.000664692771467535, -0.000714692759570750, -0.000764692745886789, +-0.000814692730291096, -0.000864692712659116, -0.000914692692864960, -0.000964692670784071, -0.001014692646291452, -0.001064692619262544, -0.001114692589571461, -0.001164692557093647, +-0.001214692521704101, -0.001264692483278268, -0.001314692441690259, -0.001364692396815520, -0.001414692348529050, -0.001464692296706292, -0.001514692241221360, -0.001564692181949697, +-0.001614692118766304, -0.001664692051546625, -0.001714691980164771, -0.001764691904496188, -0.001814691824416319, -0.001864691739799276, -0.001914691650520504, -0.001964691556455003, +-0.002014691457478216, -0.002064691353464257, -0.002114691244288570, -0.002164691129826155, -0.002214691009952456, -0.002264690884541585, -0.002314690753468987, -0.002364690616609663, +-0.002414690473839055, -0.002464690325031278, -0.002514690170061775, -0.002564690008805546, -0.002614689841138036, -0.002664689666933358, -0.002714689486066956, -0.002764689298414273, +-0.002814689103849424, -0.002864688902247852, -0.002914688693484557, -0.002964688477434985, -0.003014688253973248, -0.003064688022974790, -0.003114687784314611, -0.003164687537868158, +-0.003214687283509542, -0.003264687021114207, -0.003314686750557155, -0.003364686471713830, -0.003414686184458345, -0.003464685888666144, -0.003514685584212229, -0.003564685270972043, +-0.003614684948819701, -0.003664684617630646, -0.003714684277279879, -0.003764683927642846, -0.003814683568593659, -0.003864683200007764, -0.003914682821760604, -0.003964682433726293, +-0.004014682035780276, -0.004064681627797554, -0.004114681209653572, -0.004164680781222442, -0.004214680342379612, -0.004264679893000080, -0.004314679432959292, -0.004364678962131362, +-0.004414678480391734, -0.004464677987615410, -0.004514677483677836, -0.004564676968453123, -0.004614676441816718, -0.004664675903643622, -0.004714675353809280, -0.004764674792187806, +-0.004814674218654644, -0.004864673633085242, -0.004914673035353711, -0.004964672425335498, -0.005014671802905603, -0.005064671167939473, -0.005114670520311221, -0.005164669859896293, +-0.005214669186569690, -0.005264668500206859, -0.005314667800681912, -0.005364667087870295, -0.005414666361647010, -0.005464665621887505, -0.005514664868465890, -0.005564664101257614, +-0.005614663320137677, -0.005664662524981526, -0.005714661715663275, -0.005764660892058370, -0.005814660054042256, -0.005864659201489048, -0.005914658334274192, -0.005964657452272691, +-0.006014656555359989, -0.006064655643410202, -0.006114654716298777, -0.006164653773900714, -0.006214652816091461, -0.006264651842745132, -0.006314650853737174, -0.006364649848942587, +-0.006414648828236821, -0.006464647791493989, -0.006514646738589537, -0.006564645669398468, -0.006614644583796229, -0.006664643481656934, -0.006714642362856032, -0.006764641227268523, +-0.006814640074769854, -0.006864638905234142, -0.006914637718536832, -0.006964636514553373, -0.007014635293157877, -0.007064634054225794, -0.007114632797632125, -0.007164631523252319, +-0.007214630230960490, -0.007264628920632085, -0.007314627592142108, -0.007364626245366005, -0.007414624880177894, -0.007464623496453220, -0.007514622094066987, -0.007564620672894643, +-0.007614619232810304, -0.007664617773689416, -0.007714616295406984, -0.007764614797838455, -0.007814613280857946, -0.007864611744340902, -0.007914610188162774, -0.007964608612197676, +-0.008014607016321057, -0.008064605400407919, -0.008114603764333714, -0.008164602107972555, -0.008214600431199889, -0.008264598733890722, -0.008314597015920503, -0.008364595277163349, +-0.008414593517494705, -0.008464591736789576, -0.008514589934923414, -0.008564588111770332, -0.008614586267205781, -0.008664584401104764, -0.008714582513342728, -0.008764580603793794, +-0.008814578672333408, -0.008864576718837018, -0.008914574743178742, -0.008964572745234031, -0.009014570724877888, -0.009064568681985762, -0.009114566616431770, -0.009164564528091361, +-0.009214562416839541, -0.009264560282551760, -0.009314558125102132, -0.009364555944366110, -0.009414553740218698, -0.009464551512535346, -0.009514549261190171, -0.009564546986058624, +-0.009614544687015707, -0.009664542363936874, -0.009714540016696241, -0.009764537645169259, -0.009814535249231374, -0.009864532828756710, -0.009914530383620711, -0.009964527913698389, +-0.010014525418865189, -0.010064522898995232, -0.010114520353963968, -0.010164517783646403, -0.010214515187917989, -0.010264512566652841, -0.010314509919726413, -0.010364507247013708, +-0.010414504548390180, -0.010464501823729948, -0.010514499072908461, -0.010564496295800726, -0.010614493492282193, -0.010664490662226984, -0.010714487805510547, -0.010764484922007891, +-0.010814482011594467, -0.010864479074144394, -0.010914476109533123, -0.010964473117636106, -0.011014470098327463, -0.011064467051482643, -0.011114463976976656, -0.011164460874684954, +-0.011214457744481654, -0.011264454586242211, -0.011314451399841632, -0.011364448185155368, -0.011414444942057539, -0.011464441670423597, -0.011514438370128553, -0.011564435041047856, +-0.011614431683055627, -0.011664428296027318, -0.011714424879837940, -0.011764421434362944, -0.011814417959476449, -0.011864414455053910, -0.011914410920970779, -0.011964407357101177, +-0.012014403763320554, -0.012064400139503923, -0.012114396485526738, -0.012164392801263114, -0.012214389086588512, -0.012264385341377934, -0.012314381565506839, -0.012364377758849344, +-0.012414373921280905, -0.012464370052676532, -0.012514366152911679, -0.012564362221860465, -0.012614358259398346, -0.012664354265400331, -0.012714350239741875, -0.012764346182297099, +-0.012814342092941456, -0.012864337971550404, -0.012914333817998062, -0.012964329632159885, -0.013014325413910885, -0.013064321163126516, -0.013114316879680898, -0.013164312563449489, +-0.013214308214307299, -0.013264303832129782, -0.013314299416791062, -0.013364294968166593, -0.013414290486131386, -0.013464285970560898, -0.013514281421329251, -0.013564276838311899, +-0.013614272221383856, -0.013664267570420576, -0.013714262885296183, -0.013764258165886134, -0.013814253412065438, -0.013864248623709554, -0.013914243800692604, -0.013964238942890044, +-0.014014234050177330, -0.014064229122428587, -0.014114224159519273, -0.014164219161324397, -0.014214214127719418, -0.014264209058578460, -0.014314203953776979, -0.014364198813189987, +-0.014414193636692942, -0.014464188424159970, -0.014514183175466527, -0.014564177890487626, -0.014614172569098723, -0.014664167211173945, -0.014714161816588750, -0.014764156385218151, +-0.014814150916937604, -0.014864145411621236, -0.014914139869144503, -0.014964134289382865, -0.015014128672210449, -0.015064123017502710, -0.015114117325134664, -0.015164111594981768, +-0.015214105826918149, -0.015264100020819266, -0.015314094176560133, -0.015364088294016209, -0.015414082373061619, -0.015464076413571823, -0.015514070415421837, -0.015564064378487119, +-0.015614058302641795, -0.015664052187761325, -0.015714046033720726, -0.015764039840395455, -0.015814033607659643, -0.015864027335388744, -0.015914021023458222, -0.015964014671742202, +-0.016014008280116145, -0.016064001848455071, -0.016113995376634434, -0.016163988864528363, -0.016213982312012321, -0.016263975718961324, -0.016313969085250832, -0.016363962410754971, +-0.016413955695349206, -0.016463948938908551, -0.016513942141308469, -0.016563935302423088, -0.016613928422127867, -0.016663921500297826, -0.016713914536808424, -0.016763907531533791, +-0.016813900484349390, -0.016863893395130239, -0.016913886263751798, -0.016963879090088198, -0.017013871874014899, -0.017063864615407365, -0.017113857314139724, -0.017163849970087443, +-0.017213842583125534, -0.017263835153129462, -0.017313827679973359, -0.017363820163532689, -0.017413812603682466, -0.017463805000298160, -0.017513797353253893, -0.017563789662425132, +-0.017613781927686898, -0.017663774148914655, -0.017713766325982531, -0.017763758458765991, -0.017813750547140055, -0.017863742590980190, -0.017913734590160522, -0.017963726544556517, +-0.018013718454043638, -0.018063710318496021, -0.018113702137789130, -0.018163693911797979, -0.018213685640398040, -0.018263677323463443, -0.018313668960869653, -0.018363660552491688, +-0.018413652098205020, -0.018463643597883776, -0.018513635051403420, -0.018563626458638981, -0.018613617819465918, -0.018663609133758367, -0.018713600401391792, -0.018763591622241213, +-0.018813582796182105, -0.018863573923088593, -0.018913565002836145, -0.018963556035300231, -0.019013547020354980, -0.019063537957875864, -0.019113528847737902, -0.019163519689816565, +-0.019213510483985979, -0.019263501230121622, -0.019313491928098510, -0.019363482577792111, -0.019413473179076563, -0.019463463731827332, -0.019513454235919443, -0.019563444691228359, +-0.019613435097628223, -0.019663425454994495, -0.019713415763202208, -0.019763406022126822, -0.019813396231642480, -0.019863386391624643, -0.019913376501948788, -0.019963366562489048, +-0.020013356573120887, -0.020063346533719339, -0.020113336444159868, -0.020163326304316612, -0.020213316114065037, -0.020263305873280176, -0.020313295581837493, -0.020363285239611124, +-0.020413274846476547, -0.020463264402308778, -0.020513253906983296, -0.020563243360374236, -0.020613232762357065, -0.020663222112806811, -0.020713211411598948, -0.020763200658607612, +-0.020813189853708274, -0.020863178996775960, -0.020913168087686142, -0.020963157126312963, -0.021013146112531890, -0.021063135046218397, -0.021113123927246621, -0.021163112755492035, +-0.021213101530829667, -0.021263090253134991, -0.021313078922282142, -0.021363067538146596, -0.021413056100603383, -0.021463044609527974, -0.021513033064794511, -0.021563021466278462, +-0.021613009813854861, -0.021662998107399179, -0.021712986346785559, -0.021762974531889471, -0.021812962662585946, -0.021862950738750463, -0.021912938760257156, -0.021962926726981500, +-0.022012914638798974, -0.022062902495583719, -0.022112890297211203, -0.022162878043556464, -0.022212865734494977, -0.022262853369900876, -0.022312840949649644, -0.022362828473616311, +-0.022412815941676351, -0.022462803353703903, -0.022512790709574453, -0.022562778009163020, -0.022612765252345089, -0.022662752438994800, -0.022712739568987630, -0.022762726642198614, +-0.022812713658503223, -0.022862700617775601, -0.022912687519891232, -0.022962674364725585, -0.023012661152152811, -0.023062647882048381, -0.023112634554287335, -0.023162621168745144, +-0.023212607725295958, -0.023262594223815249, -0.023312580664178059, -0.023362567046259858, -0.023412553369934797, -0.023462539635078352, -0.023512525841565560, -0.023562511989271895, +-0.023612498078071507, -0.023662484107839873, -0.023712470078452029, -0.023762455989783451, -0.023812441841708294, -0.023862427634102030, -0.023912413366839698, -0.023962399039796776, +-0.024012384652847413, -0.024062370205867087, -0.024112355698731280, -0.024162341131314140, -0.024212326503491147, -0.024262311815137338, -0.024312297066128193, -0.024362282256337863, +-0.024412267385641825, -0.024462252453915121, -0.024512237461033228, -0.024562222406870299, -0.024612207291301813, -0.024662192114202806, -0.024712176875448768, -0.024762161574913840, +-0.024812146212473508, -0.024862130788002812, -0.024912115301377234, -0.024962099752470924, -0.025012084141159362, -0.025062068467318035, -0.025112052730821094, -0.025162036931544018, +-0.025212021069361851, -0.025262005144150078, -0.025311989155782845, -0.025361973104135641, -0.025411956989083502, -0.025461940810501918, -0.025511924568265034, -0.025561908262248342, +-0.025611891892326877, -0.025661875458376129, -0.025711858960270246, -0.025761842397884715, -0.025811825771094581, -0.025861809079775325, -0.025911792323801100, -0.025961775503047398, +-0.026011758617389698, -0.026061741666702158, -0.026111724650860268, -0.026161707569739061, -0.026211690423214033, -0.026261673211159332, -0.026311655933450449, -0.026361638589962429, +-0.026411621180570753, -0.026461603705149581, -0.026511586163574401, -0.026561568555720252, -0.026611550881462630, -0.026661533140675684, -0.026711515333234907, -0.026761497459015342, +-0.026811479517892475, -0.026861461509740465, -0.026911443434434804, -0.026961425291850975, -0.027011407081863142, -0.027061388804346789, -0.027111370459176967, -0.027161352046229159, +-0.027211333565377530, -0.027261315016497565, -0.027311296399464315, -0.027361277714153264, -0.027411258960438580, -0.027461240138195744, -0.027511221247299811, -0.027561202287626266, +-0.027611183259049273, -0.027661164161444322, -0.027711144994686462, -0.027761125758651181, -0.027811106453212640, -0.027861087078246336, -0.027911067633627315, -0.027961048119231065, +-0.028011028534931755, -0.028061008880604872, -0.028110989156125910, -0.028160969361369033, -0.028210949496209729, -0.028260929560523056, -0.028310909554184499, -0.028360889477068225, +-0.028410869329049730, -0.028460849110004058, -0.028510828819806711, -0.028560808458331845, -0.028610788025454959, -0.028660767521051102, -0.028710746944995771, -0.028760726297163131, +-0.028810705577428673, -0.028860684785667449, -0.028910663921754960, -0.028960642985565367, -0.029010621976974165, -0.029060600895856853, -0.029110579742087594, -0.029160558515541887, +-0.029210537216094783, -0.029260515843621781, -0.029310494397997044, -0.029360472879096072, -0.029410451286793919, -0.029460429620966080, -0.029510407881486723, -0.029560386068231345, +-0.029610364181075002, -0.029660342219893197, -0.029710320184560088, -0.029760298074951178, -0.029810275890941526, -0.029860253632406627, -0.029910231299220651, -0.029960208891259096, +-0.030010186408397463, -0.030060163850509917, -0.030110141217471964, -0.030160118509158659, -0.030210095725445502, -0.030260072866206657, -0.030310049931317636, -0.030360026920653486, +-0.030410003834089715, -0.030459980671500488, -0.030509957432761310, -0.030559934117747239, -0.030609910726333778, -0.030659887258395097, -0.030709863713806695, -0.030759840092443636, +-0.030809816394181417, -0.030859792618894218, -0.030909768766457534, -0.030959744836746430, -0.031009720829636406, -0.031059696745001638, -0.031109672582717626, -0.031159648342659878, +-0.031209624024702565, -0.031259599628721192, -0.031309575154590819, -0.031359550602186953, -0.031409525971383766, -0.031459501262056766, -0.031509476474081012, -0.031559451607332006, +-0.031609426661683933, -0.031659401637012294, -0.031709376533192148, -0.031759351350099004, -0.031809326087607039, -0.031859300745591762, -0.031909275323928225, -0.031959249822491952, +-0.032009224241157104, -0.032059198579799199, -0.032109172838293738, -0.032159147016514907, -0.032209121114338206, -0.032259095131638701, -0.032309069068291903, -0.032359042924171987, +-0.032409016699154469, -0.032458990393114402, -0.032508964005927309, -0.032558937537467358, -0.032608910987610061, -0.032658884356230489, -0.032708857643204151, -0.032758830848405224, +-0.032808803971709224, -0.032858777012991211, -0.032908749972126700, -0.032958722848989867, -0.033008695643456230, -0.033058668355401298, -0.033108640984699247, -0.033158613531225602, +-0.033208585994855419, -0.033258558375464209, -0.033308530672926169, -0.033358502887116795, -0.033408475017911166, -0.033458447065184797, -0.033508419028811860, -0.033558390908667877, +-0.033608362704627921, -0.033658334416567501, -0.033708306044360800, -0.033758277587883329, -0.033808249047010172, -0.033858220421616833, -0.033908191711577496, -0.033958162916767683, +-0.034008134037062911, -0.034058105072337350, -0.034108076022466537, -0.034158046887325523, -0.034208017666789846, -0.034257988360733675, -0.034307958969032534, -0.034357929491561495, +-0.034407899928196074, -0.034457870278810462, -0.034507840543280176, -0.034557810721480287, -0.034607780813286318, -0.034657750818572454, -0.034707720737214204, -0.034757690569086661, +-0.034807660314065333, -0.034857629972024406, -0.034907599542839410, -0.034957569026385416, -0.035007538422537940, -0.035057507731171174, -0.035107476952160634, -0.035157446085381849, +-0.035207415130709012, -0.035257384088017631, -0.035307352957182792, -0.035357321738080011, -0.035407290430583480, -0.035457259034568728, -0.035507227549910828, -0.035557195976485302, +-0.035607164314166342, -0.035657132562829472, -0.035707100722349769, -0.035757068792602757, -0.035807036773462635, -0.035857004664804917, -0.035906972466504691, -0.035956940178437473, +-0.036006907800477460, -0.036056875332500182, -0.036106842774381157, -0.036156810125994580, -0.036206777387215977, -0.036256744557920433, -0.036306711637983477, -0.036356678627279287, +-0.036406645525683408, -0.036456612333070910, -0.036506579049317332, -0.036556545674296857, -0.036606512207885022, -0.036656478649956900, -0.036706445000388034, -0.036756411259052602, +-0.036806377425826146, -0.036856343500583748, -0.036906309483200936, -0.036956275373551908, -0.037006241171512189, -0.037056206876957307, -0.037106172489761467, -0.037156138009800194, +-0.037206103436948579, -0.037256068771082153, -0.037306034012075107, -0.037355999159802970, -0.037405964214140844, -0.037455929174964243, -0.037505894042147381, -0.037555858815565786, +-0.037605823495094538, -0.037655788080609182, -0.037705752571983907, -0.037755716969094251, -0.037805681271815307, -0.037855645480022598, -0.037905609593590336, -0.037955573612394045, +-0.038005537536308823, -0.038055501365210201, -0.038105465098972384, -0.038155428737470895, -0.038205392280581285, -0.038255355728177752, -0.038305319080135826, -0.038355282336330607, +-0.038405245496637624, -0.038455208560931084, -0.038505171529086522, -0.038555134400979026, -0.038605097176484145, -0.038655059855476070, -0.038705022437830354, -0.038754984923422074, +-0.038804947312126782, -0.038854909603818676, -0.038904871798373299, -0.038954833895665737, -0.039004795895571535, -0.039054757797964898, -0.039104719602721369, -0.039154681309716485, +-0.039204642918824452, -0.039254604429920813, -0.039304565842880668, -0.039354527157579547, -0.039404488373891662, -0.039454449491692564, -0.039504410510857332, -0.039554371431261524, +-0.039604332252779345, -0.039654292975286332, -0.039704253598657584, -0.039754214122768652, -0.039804174547493736, -0.039854134872708391, -0.039904095098287698, -0.039954055224107221, +-0.040004015250041158, -0.040053975175965054, -0.040103935001754458, -0.040153894727283583, -0.040203854352427973, -0.040253813877062720, -0.040303773301063384, -0.040353732624304160, +-0.040403691846660615, -0.040453650968007834, -0.040503609988221376, -0.040553568907175444, -0.040603527724745590, -0.040653486440806921, -0.040703445055234974, -0.040753403567903974, +-0.040803361978689466, -0.040853320287466549, -0.040903278494110774, -0.040953236598496368, -0.041003194600498866, -0.041053152499993820, -0.041103110296855448, -0.041153067990959302, +-0.041203025582180482, -0.041252983070394544, -0.041302940455475709, -0.041352897737299520, -0.041402854915741083, -0.041452811990675957, -0.041502768961978360, -0.041552725829523837, +-0.041602682593187494, -0.041652639252844896, -0.041702595808370255, -0.041752552259639121, -0.041802508606526609, -0.041852464848908269, -0.041902420986658327, -0.041952377019652327, +-0.042002332947765383, -0.042052288770873053, -0.042102244488849562, -0.042152200101570454, -0.042202155608911295, -0.042252111010746295, -0.042302066306951019, -0.042352021497400583, +-0.042401976581970535, -0.042451931560535103, -0.042501886432969836, -0.042551841199149856, -0.042601795858950721, -0.042651750412246649, -0.042701704858913204, -0.042751659198825495, +-0.042801613431859079, -0.042851567557888187, -0.042901521576788379, -0.042951475488434761, -0.043001429292702904, -0.043051382989467028, -0.043101336578602698, -0.043151290059985463, +-0.043201243433489564, -0.043251196698990552, -0.043301149856363554, -0.043351102905484121, -0.043401055846226493, -0.043451008678466220, -0.043500961402078424, -0.043550914016938676, +-0.043600866522921194, -0.043650818919901545, -0.043700771207754847, -0.043750723386356667, -0.043800675455581237, -0.043850627415304114, -0.043900579265400426, -0.043950531005745731, +-0.044000482636214269, -0.044050434156681598, -0.044100385567023288, -0.044150336867113567, -0.044200288056828005, -0.044250239136041723, -0.044300190104630280, -0.044350140962467928, +-0.044400091709430219, -0.044450042345392279, -0.044499992870229682, -0.044549943283816659, -0.044599893586028776, -0.044649843776741159, -0.044699793855829374, -0.044749743823167661, +-0.044799693678631590, -0.044849643422096283, -0.044899593053437312, -0.044949542572528915, -0.044999491979246665, -0.045049441273465683, -0.045099390455061540, -0.045149339523908476, +-0.045199288479882069, -0.045249237322857877, -0.045299186052710154, -0.045349134669314464, -0.045399083172545936, -0.045449031562280147, -0.045498979838391330, -0.045548928000755072, +-0.045598876049246485, -0.045648823983741156, -0.045698771804113324, -0.045748719510238560, -0.045798667101991999, -0.045848614579249214, -0.045898561941884450, -0.045948509189773279, +-0.045998456322790836, -0.046048403340812692, -0.046098350243713102, -0.046148297031367629, -0.046198243703651866, -0.046248190260440046, -0.046298136701607748, -0.046348083027030113, +-0.046398029236582712, -0.046447975330139793, -0.046497921307576934, -0.046547867168769276, -0.046597812913592392, -0.046647758541920534, -0.046697704053629274, -0.046747649448593762, +-0.046797594726689568, -0.046847539887790939, -0.046897484931773460, -0.046947429858512274, -0.046997374667882952, -0.047047319359759754, -0.047097263934018259, -0.047147208390534039, +-0.047197152729181360, -0.047247096949835803, -0.047297041052372500, -0.047346985036667039, -0.047396928902593671, -0.047446872650027977, -0.047496816278845104, -0.047546759788920638, +-0.047596703180128826, -0.047646646452345252, -0.047696589605445067, -0.047746532639303854, -0.047796475553795861, -0.047846418348796681, -0.047896361024181454, -0.047946303579825766, +-0.047996246015603879, -0.048046188331391376, -0.048096130527063845, -0.048146072602495545, -0.048196014557562068, -0.048245956392138550, -0.048295898106100583, -0.048345839699322428, +-0.048395781171679676, -0.048445722523047470, -0.048495663753301402, -0.048545604862315725, -0.048595545849966046, -0.048645486716127492, -0.048695427460675671, -0.048745368083484841, +-0.048795308584430583, -0.048845248963388058, -0.048895189220232858, -0.048945129354839231, -0.048995069367082790, -0.049045009256838669, -0.049094949023982475, -0.049144888668388460, +-0.049194828189932226, -0.049244767588489363, -0.049294706863934140, -0.049344646016142149, -0.049394585044988538, -0.049444523950348915, -0.049494462732097538, -0.049544401390110002, +-0.049594339924261460, -0.049644278334427513, -0.049694216620482429, -0.049744154782301805, -0.049794092819760792, -0.049844030732734988, -0.049893968521098668, -0.049943906184727424, +-0.049993843723496419, -0.050043781137281237, -0.050093718425956169, -0.050143655589396804, -0.050193592627478738, -0.050243529540076250, -0.050293466327064940, -0.050343402988319963, +-0.050393339523716926, -0.050443275933130090, -0.050493212216435067, -0.050543148373507013, -0.050593084404221535, -0.050643020308452899, -0.050692956086076713, -0.050742891736968131, +-0.050792827261002774, -0.050842762658054895, -0.050892697928000115, -0.050942633070713589, -0.050992568086070930, -0.051042502973946399, -0.051092437734215616, -0.051142372366754174, +-0.051192306871436367, -0.051242241248137789, -0.051292175496733608, -0.051342109617099431, -0.051392043609109539, -0.051441977472639532, -0.051491911207564592, -0.051541844813760306, +-0.051591778291100975, -0.051641711639462191, -0.051691644858719125, -0.051741577948747397, -0.051791510909421280, -0.051841443740616382, -0.051891376442207877, -0.051941309014071381, +-0.051991241456081159, -0.052041173768112840, -0.052091105950041579, -0.052141038001743002, -0.052190969923091385, -0.052240901713962347, -0.052290833374231495, -0.052340764903773117, +-0.052390696302462826, -0.052440627570175792, -0.052490558706787635, -0.052540489712172643, -0.052590420586206416, -0.052640351328764143, -0.052690281939721438, -0.052740212418952583, +-0.052790142766333197, -0.052840072981738449, -0.052890003065043968, -0.052939933016124034, -0.052989862834854268, -0.053039792521109845, -0.053089722074766380, -0.053139651495698173, +-0.053189580783780832, -0.053239509938889984, -0.053289438960899924, -0.053339367849686257, -0.053389296605124176, -0.053439225227089299, -0.053489153715455907, -0.053539082070099636, +-0.053589010290895661, -0.053638938377719603, -0.053688866330445756, -0.053738794148949741, -0.053788721833106741, -0.053838649382792383, -0.053888576797880956, -0.053938504078248087, +-0.053988431223768958, -0.054038358234319191, -0.054088285109773093, -0.054138211850006272, -0.054188138454894376, -0.054238064924311685, -0.054287991258133828, -0.054337917456236000, +-0.054387843518493816, -0.054437769444781584, -0.054487695234974924, -0.054537620888949027, -0.054587546406579521, -0.054637471787740713, -0.054687397032308217, -0.054737322140157231, +-0.054787247111163381, -0.054837171945200977, -0.054887096642145639, -0.054937021201872556, -0.054986945624257363, -0.055036869909174370, -0.055086794056499196, -0.055136718066107482, +-0.055186641937873530, -0.055236565671672976, -0.055286489267381000, -0.055336412724873253, -0.055386336044024022, -0.055436259224708954, -0.055486182266803241, -0.055536105170182516, +-0.055586027934721081, -0.055635950560294578, -0.055685873046778203, -0.055735795394047584, -0.055785717601977036, -0.055835639670442187, -0.055885561599318248, -0.055935483388480846, +-0.055985405037804289, -0.056035326547164220, -0.056085247916435835, -0.056135169145494775, -0.056185090234215349, -0.056235011182473198, -0.056284931990143956, -0.056334852657101947, +-0.056384773183222804, -0.056434693568381732, -0.056484613812454364, -0.056534533915315023, -0.056584453876839344, -0.056634373696902530, -0.056684293375380224, -0.056734212912146746, +-0.056784132307077732, -0.056834051560048386, -0.056883970670934363, -0.056933889639609964, -0.056983808465950837, -0.057033727149832195, -0.057083645691129677, -0.057133564089717599, +-0.057183482345471610, -0.057233400458267365, -0.057283318427979173, -0.057333236254482681, -0.057383153937653100, -0.057433071477366079, -0.057482988873495934, -0.057532906125918319, +-0.057582823234508439, -0.057632740199141941, -0.057682657019693155, -0.057732573696037723, -0.057782490228050855, -0.057832406615608206, -0.057882322858584100, -0.057932238956854183, +-0.057982154910293668, -0.058032070718778216, -0.058081986382182135, -0.058131901900381096, -0.058181817273250738, -0.058231732500665399, -0.058281647582500727, -0.058331562518631939, +-0.058381477308934684, -0.058431391953283292, -0.058481306451553423, -0.058531220803620290, -0.058581135009359540, -0.058631049068645517, -0.058680962981353869, -0.058730876747359814, +-0.058780790366539007, -0.058830703838765784, -0.058880617163915801, -0.058930530341864275, -0.058980443372486868, -0.059030356255657911, -0.059080268991253057, -0.059130181579147532, +-0.059180094019216999, -0.059230006311335792, -0.059279918455379561, -0.059329830451223982, -0.059379742298743383, -0.059429653997813428, -0.059479565548309334, -0.059529476950106776, +-0.059579388203080078, -0.059629299307104908, -0.059679210262056491, -0.059729121067810496, -0.059779031724241254, -0.059828942231224432, -0.059878852588635248, -0.059928762796349386, +-0.059978672854241168, -0.060028582762186269, -0.060078492520059909, -0.060128402127737769, -0.060178311585094173, -0.060228220892004802, -0.060278130048345320, -0.060328039053990076, +-0.060377947908814726, -0.060427856612694508, -0.060477765165505099, -0.060527673567120827, -0.060577581817417368, -0.060627489916269962, -0.060677397863554271, -0.060727305659144644, +-0.060777213302916751, -0.060827120794745823, -0.060877028134507544, -0.060926935322076242, -0.060976842357327608, -0.061026749240136867, -0.061076655970379694, -0.061126562547930439, +-0.061176468972664780, -0.061226375244458384, -0.061276281363185615, -0.061326187328722137, -0.061376093140943194, -0.061425998799724463, -0.061475904304940286, -0.061525809656466354, +-0.061575714854177899, -0.061625619897950595, -0.061675524787658802, -0.061725429523178194, -0.061775334104384010, -0.061825238531151940, -0.061875142803356327, -0.061925046920872862, +-0.061974950883576775, -0.062024854691343750, -0.062074758344048152, -0.062124661841565655, -0.062174565183771950, -0.062224468370541387, -0.062274371401749649, -0.062324274277271989, +-0.062374176996984082, -0.062424079560760293, -0.062473981968476297, -0.062523884220007361, -0.062573786315229141, -0.062623688254016027, -0.062673590036243676, -0.062723491661787367, +-0.062773393130522756, -0.062823294442324235, -0.062873195597067472, -0.062923096594627720, -0.062972997434880662, -0.063022898117700676, -0.063072798642963432, -0.063122699010544209, +-0.063172599220318676, -0.063222499272161198, -0.063272399165947471, -0.063322298901553192, -0.063372198478852726, -0.063422097897721755, -0.063471997158035545, -0.063521896259669794, +-0.063571795202498851, -0.063621693986398414, -0.063671592611243749, -0.063721491076910539, -0.063771389383273161, -0.063821287530207313, -0.063871185517588247, -0.063921083345291660, +-0.063970981013191916, -0.064020878521164726, -0.064070775869085342, -0.064120673056829447, -0.064170570084271447, -0.064220466951287011, -0.064270363657751850, -0.064320260203540328, +-0.064370156588528168, -0.064420052812590611, -0.064469948875603367, -0.064519844777440813, -0.064569740517978647, -0.064619636097092120, -0.064669531514656958, -0.064719426770547511, +-0.064769321864639504, -0.064819216796808188, -0.064869111566929274, -0.064919006174877142, -0.064968900620527500, -0.065018794903755603, -0.065068689024437160, -0.065118582982446549, +-0.065168476777659481, -0.065218370409951654, -0.065268263879197472, -0.065318157185272632, -0.065368050328052388, -0.065417943307412477, -0.065467836123227249, -0.065517728775372430, +-0.065567621263723300, -0.065617513588155554, -0.065667405748543586, -0.065717297744763106, -0.065767189576689367, -0.065817081244198106, -0.065866972747163702, -0.065916864085461865, +-0.065966755258967863, -0.066016646267557419, -0.066066537111104925, -0.066116427789486079, -0.066166318302576160, -0.066216208650250893, -0.066266098832384657, -0.066315988848853188, +-0.066365878699532171, -0.066415768384296026, -0.066465657903020461, -0.066515547255580745, -0.066565436441852602, -0.066615325461710437, -0.066665214315029947, -0.066715103001686427, +-0.066764991521555586, -0.066814879874511832, -0.066864768060430874, -0.066914656079187992, -0.066964543930658912, -0.067014431614718040, -0.067064319131241085, -0.067114206480103328, +-0.067164093661180507, -0.067213980674347001, -0.067263867519478535, -0.067313754196450859, -0.067363640705138353, -0.067413527045416727, -0.067463413217161303, -0.067513299220247777, +-0.067563185054550570, -0.067613070719945392, -0.067662956216307552, -0.067712841543512745, -0.067762726701435405, -0.067812611689951244, -0.067862496508935555, -0.067912381158264062, +-0.067962265637811173, -0.068012149947452624, -0.068062034087063711, -0.068111918056520143, -0.068161801855696341, -0.068211685484468029, -0.068261568942710946, -0.068311452230299496, +-0.068361335347109420, -0.068411218293016010, -0.068461101067894992, -0.068510983671620784, -0.068560866104069113, -0.068610748365115271, -0.068660630454635010, -0.068710512372502724, +-0.068760394118594165, -0.068810275692784612, -0.068860157094949817, -0.068910038324964187, -0.068959919382703461, -0.069009800268042931, -0.069059680980858351, -0.069109561521024127, +-0.069159441888415996, -0.069209322082909697, -0.069259202104379650, -0.069309081952701607, -0.069358961627750862, -0.069408841129403140, -0.069458720457532888, -0.069508599612015817, +-0.069558478592727263, -0.069608357399542950, -0.069658236032337298, -0.069708114490986059, -0.069757992775364541, -0.069807870885348469, -0.069857748820812290, -0.069907626581631729, +-0.069957504167682108, -0.070007381578839165, -0.070057258814977333, -0.070107135875972351, -0.070157012761699528, -0.070206889472034614, -0.070256766006852031, -0.070306642366027544, +-0.070356518549436878, -0.070406394556954480, -0.070456270388456102, -0.070506146043817039, -0.070556021522913057, -0.070605896825618589, -0.070655771951809360, -0.070705646901360719, +-0.070755521674148392, -0.070805396270046825, -0.070855270688931757, -0.070905144930678524, -0.070955018995162863, -0.071004892882259210, -0.071054766591843330, -0.071104640123790544, +-0.071154513477976578, -0.071204386654275906, -0.071254259652564253, -0.071304132472717399, -0.071354005114609778, -0.071403877578117142, -0.071453749863114799, -0.071503621969478542, +-0.071553493897082779, -0.071603365645803274, -0.071653237215515364, -0.071703108606094801, -0.071752979817416018, -0.071802850849354796, -0.071852721701786443, -0.071902592374586724, +-0.071952462867630088, -0.072002333180792299, -0.072052203313948668, -0.072102073266974973, -0.072151943039745647, -0.072201812632136472, -0.072251682044023213, -0.072301551275280290, +-0.072351420325783497, -0.072401289195408156, -0.072451157884030032, -0.072501026391523574, -0.072550894717764547, -0.072600762862628287, -0.072650630825990561, -0.072700498607725816, +-0.072750366207709818, -0.072800233625817903, -0.072850100861925851, -0.072899967915908109, -0.072949834787640444, -0.072999701476998191, -0.073049567983857130, -0.073099434308091710, +-0.073149300449577695, -0.073199166408190436, -0.073249032183805698, -0.073298897776297930, -0.073348763185542940, -0.073398628411416464, -0.073448493453792979, -0.073498358312548265, +-0.073548222987557657, -0.073598087478696936, -0.073647951785840535, -0.073697815908864275, -0.073747679847643466, -0.073797543602053900, -0.073847407171970039, -0.073897270557267650, +-0.073947133757822095, -0.073996996773509141, -0.074046859604203263, -0.074096722249780228, -0.074146584710115385, -0.074196446985084527, -0.074246309074562103, -0.074296170978423906, +-0.074346032696545730, -0.074395894228802037, -0.074445755575068592, -0.074495616735220774, -0.074545477709134347, -0.074595338496683788, -0.074645199097744877, -0.074695059512192963, +-0.074744919739903853, -0.074794779780751997, -0.074844639634613200, -0.074894499301362799, -0.074944358780876588, -0.074994218073029043, -0.075044077177695956, -0.075093936094752664, +-0.075143794824074975, -0.075193653365537363, -0.075243511719015624, -0.075293369884385536, -0.075343227861521589, -0.075393085650299577, -0.075442943250594835, -0.075492800662283185, +-0.075542657885239090, -0.075592514919338355, -0.075642371764456331, -0.075692228420468813, -0.075742084887250288, -0.075791941164676552, -0.075841797252622967, -0.075891653150965327, +-0.075941508859578108, -0.075991364378337117, -0.076041219707117719, -0.076091074845795706, -0.076140929794245582, -0.076190784552343113, -0.076240639119963691, -0.076290493496983122, +-0.076340347683275869, -0.076390201678717740, -0.076440055483184555, -0.076489909096550790, -0.076539762518692253, -0.076589615749484308, -0.076639468788802775, -0.076689321636522118, +-0.076739174292518156, -0.076789026756666254, -0.076838879028842233, -0.076888731108920583, -0.076938582996777097, -0.076988434692287153, -0.077038286195326558, -0.077088137505769816, +-0.077137988623492720, -0.077187839548370663, -0.077237690280279436, -0.077287540819093559, -0.077337391164688810, -0.077387241316941038, -0.077437091275724720, -0.077486941040915677, +-0.077536790612389273, -0.077586639990021342, -0.077636489173686360, -0.077686338163260163, -0.077736186958618114, -0.077786035559636049, -0.077835883966188443, -0.077885732178151132, +-0.077935580195399493, -0.077985428017809347, -0.078035275645255184, -0.078085123077612825, -0.078134970314757676, -0.078184817356565531, -0.078234664202910906, -0.078284510853669609, +-0.078334357308717489, -0.078384203567929037, -0.078434049631180058, -0.078483895498345974, -0.078533741169302590, -0.078583586643924397, -0.078633431922087257, -0.078683277003666521, +-0.078733121888538038, -0.078782966576576310, -0.078832811067657174, -0.078882655361656007, -0.078932499458448629, -0.078982343357909574, -0.079032187059914660, -0.079082030564339281, +-0.079131873871059258, -0.079181716979949121, -0.079231559890884679, -0.079281402603741780, -0.079331245118394941, -0.079381087434719985, -0.079430929552592316, -0.079480771471887757, +-0.079530613192480823, -0.079580454714247365, -0.079630296037062773, -0.079680137160802883, -0.079729978085342199, -0.079779818810556569, -0.079829659336321399, -0.079879499662512524, +-0.079929339789004461, -0.079979179715673032, -0.080029019442393670, -0.080078858969042196, -0.080128698295493128, -0.080178537421622315, -0.080228376347305161, -0.080278215072417516, +-0.080328053596833884, -0.080377891920430114, -0.080427730043082069, -0.080477567964664251, -0.080527405685052511, -0.080577243204122254, -0.080627080521749328, -0.080676917637808265, +-0.080726754552174915, -0.080776591264724668, -0.080826427775333387, -0.080876264083875590, -0.080926100190227140, -0.080975936094263443, -0.081025771795860346, -0.081075607294892368, +-0.081125442591235386, -0.081175277684764791, -0.081225112575356431, -0.081274947262884867, -0.081324781747225919, -0.081374616028255478, -0.081424450105848034, -0.081474283979879478, +-0.081524117650225214, -0.081573951116761093, -0.081623784379361644, -0.081673617437902746, -0.081723450292259803, -0.081773282942308678, -0.081823115387923889, -0.081872947628981327, +-0.081922779665356396, -0.081972611496924946, -0.082022443123561536, -0.082072274545142015, -0.082122105761541803, -0.082171936772636775, -0.082221767578301463, -0.082271598178411731, +-0.082321428572843441, -0.082371258761471139, -0.082421088744170687, -0.082470918520817518, -0.082520748091287496, -0.082570577455455166, -0.082620406613196390, -0.082670235564386588, +-0.082720064308901650, -0.082769892846616108, -0.082819721177405825, -0.082869549301146248, -0.082919377217713239, -0.082969204926981344, -0.083019032428826439, -0.083068859723123945, +-0.083118686809749751, -0.083168513688578388, -0.083218340359485748, -0.083268166822347264, -0.083317993077038799, -0.083367819123434911, -0.083417644961411463, -0.083467470590844361, +-0.083517296011608136, -0.083567121223578664, -0.083616946226631392, -0.083666771020642211, -0.083716595605485639, -0.083766419981037593, -0.083816244147173494, -0.083866068103769217, +-0.083915891850699337, -0.083965715387839729, -0.084015538715065827, -0.084065361832253521, -0.084115184739277371, -0.084165007436013253, -0.084214829922336629, -0.084264652198123360, +-0.084314474263248021, -0.084364296117586501, -0.084414117761014679, -0.084463939193407125, -0.084513760414639719, -0.084563581424587905, -0.084613402223127590, -0.084663222810133332, +-0.084713043185481007, -0.084762863349046078, -0.084812683300704433, -0.084862503040330634, -0.084912322567800583, -0.084962141882989714, -0.085011960985773946, -0.085061779876027824, +-0.085111598553627252, -0.085161417018447691, -0.085211235270365032, -0.085261053309253834, -0.085310871134990002, -0.085360688747449440, -0.085410506146506721, -0.085460323332037721, +-0.085510140303917931, -0.085559957062023212, -0.085609773606228165, -0.085659589936408695, -0.085709406052440235, -0.085759221954198717, -0.085809037641558686, -0.085858853114396075, +-0.085908668372586330, -0.085958483416005343, -0.086008298244527714, -0.086058112858029348, -0.086107927256385691, -0.086157741439472649, -0.086207555407164821, -0.086257369159338113, +-0.086307182695868415, -0.086356996016630314, -0.086406809121499728, -0.086456622010352119, -0.086506434683063405, -0.086556247139508144, -0.086606059379562284, -0.086655871403101256, +-0.086705683210001008, -0.086755494800136099, -0.086805306173382460, -0.086855117329615553, -0.086904928268711296, -0.086954738990544289, -0.087004549494990410, -0.087054359781925175, +-0.087104169851224475, -0.087153979702762910, -0.087203789336416399, -0.087253598752060416, -0.087303407949570866, -0.087353216928822364, -0.087403025689690814, -0.087452834232052148, +-0.087502642555780955, -0.087552450660753151, -0.087602258546844225, -0.087652066213930097, -0.087701873661885352, -0.087751680890585923, -0.087801487899907299, -0.087851294689725398, +-0.087901101259914807, -0.087950907610351473, -0.088000713740910869, -0.088050519651468928, -0.088100325341900237, -0.088150130812080729, -0.088199936061885906, -0.088249741091191672, +-0.088299545899872656, -0.088349350487804762, -0.088399154854863951, -0.088448959000924796, -0.088498762925863242, -0.088548566629554792, -0.088598370111875366, -0.088648173372699562, +-0.088697976411903343, -0.088747779229362167, -0.088797581824951996, -0.088847384198547416, -0.088897186350024388, -0.088946988279258385, -0.088996789986125355, -0.089046591470499911, +-0.089096392732257987, -0.089146193771275084, -0.089195994587427135, -0.089245795180588755, -0.089295595550635889, -0.089345395697444485, -0.089395195620889142, -0.089444995320845808, +-0.089494794797189997, -0.089544594049797629, -0.089594393078543333, -0.089644191883303068, -0.089693990463952308, -0.089743788820367015, -0.089793586952421817, -0.089843384859992645, +-0.089893182542955016, -0.089942980001184877, -0.089992777234556828, -0.090042574242946857, -0.090092371026230439, -0.090142167584283533, -0.090191963916980769, -0.090241760024198106, +-0.090291555905811033, -0.090341351561695510, -0.090391146991726165, -0.090440942195778959, -0.090490737173729838, -0.090540531925453430, -0.090590326450825695, -0.090640120749722136, +-0.090689914822018727, -0.090739708667590083, -0.090789502286312176, -0.090839295678060511, -0.090889088842711033, -0.090938881780138411, -0.090988674490218580, -0.091038466972827053, +-0.091088259227839807, -0.091138051255131469, -0.091187843054578013, -0.091237634626054942, -0.091287425969438216, -0.091337217084602504, -0.091387007971423725, -0.091436798629777882, +-0.091486589059539603, -0.091536379260584846, -0.091586169232789144, -0.091635958976028470, -0.091685748490177438, -0.091735537775112050, -0.091785326830707809, -0.091835115656840702, +-0.091884904253385344, -0.091934692620217751, -0.091984480757213410, -0.092034268664248312, -0.092084056341197096, -0.092133843787935751, -0.092183631004339794, -0.092233417990285199, +-0.092283204745646608, -0.092332991270300008, -0.092382777564121388, -0.092432563626985362, -0.092482349458767946, -0.092532135059344642, -0.092581920428591452, -0.092631705566383005, +-0.092681490472595301, -0.092731275147103873, -0.092781059589784706, -0.092830843800512444, -0.092880627779163061, -0.092930411525612128, -0.092980195039735591, -0.093029978321408135, +-0.093079761370505720, -0.093129544186903918, -0.093179326770478688, -0.093229109121104700, -0.093278891238657943, -0.093328673123014391, -0.093378454774048728, -0.093428236191636926, +-0.093478017375654518, -0.093527798325977518, -0.093577579042480583, -0.093627359525039699, -0.093677139773530427, -0.093726919787828725, -0.093776699567809305, -0.093826479113348113, +-0.093876258424320735, -0.093926037500603160, -0.093975816342070043, -0.094025594948597385, -0.094075373320060732, -0.094125151456336098, -0.094174929357298140, -0.094224707022822859, +-0.094274484452785814, -0.094324261647062993, -0.094374038605529079, -0.094423815328060073, -0.094473591814531965, -0.094523368064819438, -0.094573144078798480, -0.094622919856344676, +-0.094672695397334014, -0.094722470701641165, -0.094772245769142144, -0.094822020599712509, -0.094871795193228262, -0.094921569549564086, -0.094971343668595984, -0.095021117550199527, +-0.095070891194250703, -0.095120664600624225, -0.095170437769196078, -0.095220210699841851, -0.095269983392437529, -0.095319755846857798, -0.095369528062978687, -0.095419300040676197, +-0.095469071779825013, -0.095518843280301149, -0.095568614541980179, -0.095618385564738118, -0.095668156348449648, -0.095717926892990787, -0.095767697198237120, -0.095817467264064635, +-0.095867237090348043, -0.095917006676963359, -0.095966776023786171, -0.096016545130692466, -0.096066313997556968, -0.096116082624255680, -0.096165851010664188, -0.096215619156658508, +-0.096265387062113336, -0.096315154726904703, -0.096364922150908625, -0.096414689333999798, -0.096464456276054253, -0.096514222976947561, -0.096563989436555753, -0.096613755654753525, +-0.096663521631416921, -0.096713287366421499, -0.096763052859643303, -0.096812818110957044, -0.096862583120238738, -0.096912347887363956, -0.096962112412208770, -0.097011876694647850, +-0.097061640734557239, -0.097111404531812523, -0.097161168086289745, -0.097210931397863590, -0.097260694466410128, -0.097310457291804917, -0.097360219873924000, -0.097409982212642104, +-0.097459744307835244, -0.097509506159379464, -0.097559267767149488, -0.097609029131021333, -0.097658790250870597, -0.097708551126573340, -0.097758311758004271, -0.097808072145039407, +-0.097857832287554375, -0.097907592185425191, -0.097957351838526593, -0.098007111246734613, -0.098056870409924848, -0.098106629327973358, -0.098156388000754852, -0.098206146428145374, +-0.098255904610020539, -0.098305662546256375, -0.098355420236727623, -0.098405177681310310, -0.098454934879880496, -0.098504691832312904, -0.098554448538483580, -0.098604204998268136, +-0.098653961211542615, -0.098703717178181757, -0.098753472898061606, -0.098803228371057775, -0.098852983597046321, -0.098902738575901955, -0.098952493307500750, -0.099002247791718304, +-0.099052002028430675, -0.099101756017512616, -0.099151509758840156, -0.099201263252288924, -0.099251016497734976, -0.099300769495053037, -0.099350522244119194, -0.099400274744809475, +-0.099450026996998619, -0.099499779000562713, -0.099549530755377341, -0.099599282261318603, -0.099649033518261210, -0.099698784526081233, -0.099748535284654286, -0.099798285793856453, +-0.099848036053562461, -0.099897786063648381, -0.099947535823989839, -0.099997285334462893, -0.100047034594942280, -0.100096783605304110, -0.100146532365423950, -0.100196280875177910, +-0.100246029134440740, -0.100295777143088490, -0.100345524900997240, -0.100395272408041730, -0.100445019664098050, -0.100494766669041810, -0.100544513422749100, -0.100594259925094660, +-0.100644006175954580, -0.100693752175204470, -0.100743497922720430, -0.100793243418377210, -0.100842988662050880, -0.100892733653617060, -0.100942478392951870, -0.100992222879930040, +-0.101041967114427640, -0.101091711096320330, -0.101141454825484170, -0.101191198301793950, -0.101240941525125740, -0.101290684495355150, -0.101340427212358310, -0.101390169676009960, +-0.101439911886186170, -0.101489653842763050, -0.101539395545615360, -0.101589136994619190, -0.101638878189650160, -0.101688619130584380, -0.101738359817296620, -0.101788100249662950, +-0.101837840427559030, -0.101887580350860960, -0.101937320019443490, -0.101987059433182720, -0.102036798591954290, -0.102086537495634320, -0.102136276144097570, -0.102186014537220120, +-0.102235752674877630, -0.102285490556946200, -0.102335228183300610, -0.102384965553816950, -0.102434702668371320, -0.102484439526838490, -0.102534176129094550, -0.102583912475015180, +-0.102633648564476460, -0.102683384397353190, -0.102733119973521460, -0.102782855292856910, -0.102832590355235690, -0.102882325160532530, -0.102932059708623570, -0.102981793999384450, +-0.103031528032691310, -0.103081261808418880, -0.103130995326443320, -0.103180728586640250, -0.103230461588885810, -0.103280194333054780, -0.103329926819023250, -0.103379659046667360, +-0.103429391015861880, -0.103479122726482910, -0.103528854178406140, -0.103578585371507690, -0.103628316305662310, -0.103678046980746160, -0.103727777396634880, -0.103777507553204600, +-0.103827237450330110, -0.103876967087887530, -0.103926696465752530, -0.103976425583801230, -0.104026154441908420, -0.104075883039950230, -0.104125611377802340, -0.104175339455340850, +-0.104225067272440570, -0.104274794828977630, -0.104324522124827690, -0.104374249159866900, -0.104423975933970040, -0.104473702447013250, -0.104523428698872630, -0.104573154689423010, +-0.104622880418540500, -0.104672605886100780, -0.104722331091979990, -0.104772056036052940, -0.104821780718195740, -0.104871505138284100, -0.104921229296194130, -0.104970953191800640, +-0.105020676824979770, -0.105070400195607220, -0.105120123303559090, -0.105169846148710220, -0.105219568730936740, -0.105269291050114340, -0.105319013106119140, -0.105368734898825980, +-0.105418456428110980, -0.105468177693850280, -0.105517898695918700, -0.105567619434192360, -0.105617339908546980, -0.105667060118858680, -0.105716780065002310, -0.105766499746853970, +-0.105816219164289390, -0.105865938317184700, -0.105915657205414720, -0.105965375828855610, -0.106015094187383040, -0.106064812280873190, -0.106114530109200870, -0.106164247672242220, +-0.106213964969872950, -0.106263682001969210, -0.106313398768405830, -0.106363115269058950, -0.106412831503804720, -0.106462547472517960, -0.106512263175074850, -0.106561978611351070, +-0.106611693781222790, -0.106661408684564830, -0.106711123321253350, -0.106760837691164070, -0.106810551794173130, -0.106860265630155370, -0.106909979198986940, -0.106959692500543570, +-0.107009405534701410, -0.107059118301335300, -0.107108830800321380, -0.107158543031535390, -0.107208254994853480, -0.107257966690150500, -0.107307678117302600, -0.107357389276185950, +-0.107407100166675370, -0.107456810788647050, -0.107506521141976700, -0.107556231226540500, -0.107605941042213270, -0.107655650588871180, -0.107705359866389970, -0.107755068874645810, +-0.107804777613513540, -0.107854486082869310, -0.107904194282588880, -0.107953902212548390, -0.108003609872622710, -0.108053317262688010, -0.108103024382620010, -0.108152731232294890, +-0.108202437811587520, -0.108252144120374020, -0.108301850158530190, -0.108351555925932170, -0.108401261422454810, -0.108450966647974300, -0.108500671602366820, -0.108550376285507220, +-0.108600080697271670, -0.108649784837535910, -0.108699488706176160, -0.108749192303067220, -0.108798895628085310, -0.108848598681106160, -0.108898301462005950, -0.108948003970659550, +-0.108997706206943140, -0.109047408170732470, -0.109097109861903710, -0.109146811280331740, -0.109196512425892750, -0.109246213298462470, -0.109295913897917100, -0.109345614224131500, +-0.109395314276981860, -0.109445014056344380, -0.109494713562093930, -0.109544412794106690, -0.109594111752258420, -0.109643810436425320, -0.109693508846482240, -0.109743206982305390, +-0.109792904843770520, -0.109842602430753850, -0.109892299743130210, -0.109941996780775830, -0.109991693543566460, -0.110041390031378290, -0.110091086244086200, -0.110140782181566410, +-0.110190477843694650, -0.110240173230347140, -0.110289868341398770, -0.110339563176725720, -0.110389257736204200, -0.110438952019709090, -0.110488646027116610, -0.110538339758302500, +-0.110588033213143010, -0.110637726391512970, -0.110687419293288620, -0.110737111918345720, -0.110786804266560480, -0.110836496337807800, -0.110886188131963880, -0.110935879648904490, +-0.110985570888505830, -0.111035261850642800, -0.111084952535191630, -0.111134642942028070, -0.111184333071028350, -0.111234022922067340, -0.111283712495021280, -0.111333401789765950, +-0.111383090806177550, -0.111432779544130970, -0.111482468003502460, -0.111532156184168220, -0.111581844086003130, -0.111631531708883440, -0.111681219052684920, -0.111730906117283810, +-0.111780592902554970, -0.111830279408374660, -0.111879965634618650, -0.111929651581163160, -0.111979337247883120, -0.112029022634654720, -0.112078707741353770, -0.112128392567856490, +-0.112178077114037780, -0.112227761379773890, -0.112277445364940580, -0.112327129069414110, -0.112376812493069370, -0.112426495635782610, -0.112476178497430040, -0.112525861077886590, +-0.112575543377028490, -0.112625225394731520, -0.112674907130871940, -0.112724588585324640, -0.112774269757965880, -0.112823950648671440, -0.112873631257317560, -0.112923311583779160, +-0.112972991627932490, -0.113022671389653340, -0.113072350868817950, -0.113122030065301240, -0.113171708978979460, -0.113221387609728400, -0.113271065957424310, -0.113320744021942130, +-0.113370421803158080, -0.113420099300948420, -0.113469776515188070, -0.113519453445753270, -0.113569130092519840, -0.113618806455364030, -0.113668482534160760, -0.113718158328786290, +-0.113767833839116410, -0.113817509065027400, -0.113867184006394170, -0.113916858663092990, -0.113966533034999650, -0.114016207121990430, -0.114065880923940240, -0.114115554440725350, +-0.114165227672221580, -0.114214900618305180, -0.114264573278851090, -0.114314245653735560, -0.114363917742834860, -0.114413589546023930, -0.114463261063179010, -0.114512932294175960, +-0.114562603238891000, -0.114612273897199110, -0.114661944268976520, -0.114711614354099070, -0.114761284152443040, -0.114810953663883340, -0.114860622888296270, -0.114910291825557630, +-0.114959960475543720, -0.115009628838129460, -0.115059296913191130, -0.115108964700604540, -0.115158632200246000, -0.115208299411990430, -0.115257966335714100, -0.115307632971292870, +-0.115357299318603000, -0.115406965377519430, -0.115456631147918460, -0.115506296629676330, -0.115555961822668040, -0.115605626726769840, -0.115655291341857580, -0.115704955667807520, +-0.115754619704494630, -0.115804283451795190, -0.115853946909585050, -0.115903610077740480, -0.115953272956136440, -0.116002935544649230, -0.116052597843154660, -0.116102259851529050, +-0.116151921569647360, -0.116201582997385850, -0.116251244134620390, -0.116300904981227260, -0.116350565537081420, -0.116400225802059180, -0.116449885776036810, -0.116499545458889270, +-0.116549204850492890, -0.116598863950723480, -0.116648522759457360, -0.116698181276569490, -0.116747839501936170, -0.116797497435433250, -0.116847155076937020, -0.116896812426322470, +-0.116946469483465880, -0.116996126248243130, -0.117045782720530480, -0.117095438900202960, -0.117145094787136830, -0.117194750381207970, -0.117244405682292660, -0.117294060690265920, +-0.117343715405004000, -0.117393369826383250, -0.117443023954278640, -0.117492677788566450, -0.117542331329122590, -0.117591984575823330, -0.117641637528543660, -0.117691290187159900, +-0.117740942551547920, -0.117790594621584030, -0.117840246397143200, -0.117889897878101770, -0.117939549064335570, -0.117989199955720960, -0.118038850552132900, -0.118088500853447710, +-0.118138150859541280, -0.118187800570289910, -0.118237449985568590, -0.118287099105253660, -0.118336747929220970, -0.118386396457346850, -0.118436044689506300, -0.118485692625575650, +-0.118535340265431190, -0.118584987608947950, -0.118634634656002240, -0.118684281406469940, -0.118733927860227390, -0.118783574017149560, -0.118833219877112820, -0.118882865439993000, +-0.118932510705666470, -0.118982155674008230, -0.119031800344894590, -0.119081444718201470, -0.119131088793805160, -0.119180732571580680, -0.119230376051404390, -0.119280019233152150, +-0.119329662116700310, -0.119379304701923860, -0.119428946988699160, -0.119478588976902530, -0.119528230666408980, -0.119577872057094860, -0.119627513148836060, -0.119677153941508910, +-0.119726794434988450, -0.119776434629150980, -0.119826074523872450, -0.119875714119029160, -0.119925353414496140, -0.119974992410149750, -0.120024631105865860, -0.120074269501520850, +-0.120123907596989720, -0.120173545392148830, -0.120223182886874070, -0.120272820081041790, -0.120322456974527020, -0.120372093567206110, -0.120421729858955410, -0.120471365849649930, +-0.120521001539166050, -0.120570636927379670, -0.120620272014167130, -0.120669906799403470, -0.120719541282965040, -0.120769175464727760, -0.120818809344567980, -0.120868442922360740, +-0.120918076197982390, -0.120967709171308850, -0.121017341842216480, -0.121066974210580310, -0.121116606276276710, -0.121166238039181580, -0.121215869499171320, -0.121265500656120930, +-0.121315131509906790, -0.121364762060405270, -0.121414392307491390, -0.121464022251041540, -0.121513651890931630, -0.121563281227038040, -0.121612910259235790, -0.121662538987401270, +-0.121712167411410420, -0.121761795531139570, -0.121811423346463800, -0.121861050857259470, -0.121910678063402510, -0.121960304964769300, -0.122009931561234890, -0.122059557852675640, +-0.122109183838967500, -0.122158809519986850, -0.122208434895608730, -0.122258059965709510, -0.122307684730165160, -0.122357309188852030, -0.122406933341645190, -0.122456557188421020, +-0.122506180729055890, -0.122555803963424870, -0.122605426891404340, -0.122655049512870230, -0.122704671827698950, -0.122754293835765550, -0.122803915536946420, -0.122853536931117500, +-0.122903158018155170, -0.122952778797934510, -0.123002399270331910, -0.123052019435223300, -0.123101639292485080, -0.123151258841992340, -0.123200878083621430, -0.123250497017248330, +-0.123300115642749440, -0.123349733959999800, -0.123399351968875850, -0.123448969669253950, -0.123498587061009180, -0.123548204144017950, -0.123597820918156200, -0.123647437383300350, +-0.123697053539325460, -0.123746669386107940, -0.123796284923523740, -0.123845900151449280, -0.123895515069759610, -0.123945129678331170, -0.123994743977039900, -0.124044357965762210, +-0.124093971644373190, -0.124143585012749230, -0.124193198070766310, -0.124242810818300840, -0.124292423255227910, -0.124342035381423910, -0.124391647196765260, -0.124441258701127060, +-0.124490869894385710, -0.124540480776417190, -0.124590091347097890, -0.124639701606302940, -0.124689311553908740, -0.124738921189791240, -0.124788530513826890, -0.124838139525890780, +-0.124887748225859310, -0.124937356613608480, -0.124986964689014700, -0.125036572451953040, -0.125086179902299980, -0.125135787039931470, -0.125185393864723910, -0.125235000376552440, +-0.125284606575293470, -0.125334212460822990, -0.125383818033017400, -0.125433423291751830, -0.125483028236902720, -0.125532632868346460, -0.125582237185958180, -0.125631841189614320, +-0.125681444879190830, -0.125731048254564190, -0.125780651315609500, -0.125830254062203160, -0.125879856494221200, -0.125929458611540030, -0.125979060414034780, -0.126028661901581850, +-0.126078263074057310, -0.126127863931337510, -0.126177464473297640, -0.126227064699814100, -0.126276664610762900, -0.126326264206020470, -0.126375863485461950, -0.126425462448963770, +-0.126475061096402390, -0.126524659427652900, -0.126574257442591740, -0.126623855141094980, -0.126673452523038990, -0.126723049588298940, -0.126772646336751250, -0.126822242768271980, +-0.126871838882737510, -0.126921434680023010, -0.126971030160004940, -0.127020625322559280, -0.127070220167562500, -0.127119814694889730, -0.127169408904417410, -0.127219002796021580, +-0.127268596369578680, -0.127318189624963860, -0.127367782562053560, -0.127417375180724240, -0.127466967480851040, -0.127516559462310440, -0.127566151124978430, -0.127615742468731470, +-0.127665333493444720, -0.127714924198994630, -0.127764514585257260, -0.127814104652109020, -0.127863694399425080, -0.127913283827081890, -0.127962872934955510, -0.128012461722922380, +-0.128062050190857670, -0.128111638338637810, -0.128161226166138870, -0.128210813673237310, -0.128260400859808280, -0.128309987725728240, -0.128359574270873660, -0.128409160495119720, +-0.128458746398342870, -0.128508331980419140, -0.128557917241225030, -0.128607502180635690, -0.128657086798527610, -0.128706671094776790, -0.128756255069259750, -0.128805838721851610, +-0.128855422052428890, -0.128905005060867610, -0.128954587747044270, -0.129004170110834010, -0.129053752152113320, -0.129103333870758260, -0.129152915266645300, -0.129202496339649610, +-0.129252077089647670, -0.129301657516515570, -0.129351237620129730, -0.129400817400365380, -0.129450396857098970, -0.129499975990207020, -0.129549554799564680, -0.129599133285048460, +-0.129648711446534420, -0.129698289283899010, -0.129747866797017470, -0.129797443985766230, -0.129847020850021390, -0.129896597389659450, -0.129946173604555570, -0.129995749494586250, +-0.130045325059627570, -0.130094900299556030, -0.130144475214246770, -0.130194049803576320, -0.130243624067420770, -0.130293198005656590, -0.130342771618158960, -0.130392344904804420, +-0.130441917865469460, -0.130491490500029260, -0.130541062808360340, -0.130590634790338750, -0.130640206445841010, -0.130689777774742330, -0.130739348776919200, -0.130788919452247690, +-0.130838489800604340, -0.130888059821864300, -0.130937629515904120, -0.130987198882599850, -0.131036767921828060, -0.131086336633463890, -0.131135905017383870, -0.131185473073464120, +-0.131235040801581100, -0.131284608201610030, -0.131334175273427470, -0.131383742016909890, -0.131433308431932520, -0.131482874518371870, -0.131532440276104060, -0.131582005705005560, +-0.131631570804951610, -0.131681135575818760, -0.131730700017483050, -0.131780264129821020, -0.131829827912707890, -0.131879391366020230, -0.131928954489634040, -0.131978517283425940, +-0.132028079747271100, -0.132077641881046040, -0.132127203684626880, -0.132176765157890170, -0.132226326300711100, -0.132275887112966230, -0.132325447594531600, -0.132375007745283820, +-0.132424567565098100, -0.132474127053850920, -0.132523686211418880, -0.132573245037677200, -0.132622803532502390, -0.132672361695770570, -0.132721919527358290, -0.132771477027140760, +-0.132821034194994550, -0.132870591030795760, -0.132920147534420910, -0.132969703705745290, -0.133019259544645390, -0.133068815050997320, -0.133118370224677680, -0.133167925065561660, +-0.133217479573525840, -0.133267033748446310, -0.133316587590199650, -0.133366141098661070, -0.133415694273707140, -0.133465247115214400, -0.133514799623058120, -0.133564351797114840, +-0.133613903637260670, -0.133663455143372190, -0.133713006315324620, -0.133762557152994540, -0.133812107656258090, -0.133861657824991790, -0.133911207659070910, -0.133960757158372000, +-0.134010306322771190, -0.134059855152145080, -0.134109403646368890, -0.134158951805319170, -0.134208499628872100, -0.134258047116904200, -0.134307594269290760, -0.134357141085908320, +-0.134406687566633460, -0.134456233711341440, -0.134505779519908860, -0.134555324992211820, -0.134604870128126890, -0.134654414927529360, -0.134703959390295810, -0.134753503516302330, +-0.134803047305425560, -0.134852590757540690, -0.134902133872524390, -0.134951676650252730, -0.135001219090602310, -0.135050761193448420, -0.135100302958667620, -0.135149844386136090, +-0.135199385475730350, -0.135248926227325730, -0.135298466640798780, -0.135348006716025680, -0.135397546452882990, -0.135447085851245990, -0.135496624910991260, -0.135546163631995450, +-0.135595702014133760, -0.135645240057282850, -0.135694777761318800, -0.135744315126118260, -0.135793852151556480, -0.135843388837510100, -0.135892925183855230, -0.135942461190468490, +-0.135991996857225160, -0.136041532184001830, -0.136091067170674680, -0.136140601817120290, -0.136190136123213960, -0.136239670088832280, -0.136289203713851450, -0.136338736998148020, +-0.136388269941597330, -0.136437802544075950, -0.136487334805460520, -0.136536866725626320, -0.136586398304449940, -0.136635929541807560, -0.136685460437575790, -0.136734990991629950, +-0.136784521203846600, -0.136834051074101990, -0.136883580602272650, -0.136933109788233950, -0.136982638631862470, -0.137032167133034370, -0.137081695291626310, -0.137131223107513580, +-0.137180750580572770, -0.137230277710680110, -0.137279804497712180, -0.137329330941544310, -0.137378857042053100, -0.137428382799115210, -0.137477908212605890, -0.137527433282401830, +-0.137576958008379160, -0.137626482390414560, -0.137676006428383290, -0.137725530122162020, -0.137775053471626910, -0.137824576476654640, -0.137874099137120450, -0.137923621452901020, +-0.137973143423872540, -0.138022665049911650, -0.138072186330893660, -0.138121707266695200, -0.138171227857192460, -0.138220748102262120, -0.138270268001779440, -0.138319787555621100, +-0.138369306763663710, -0.138418825625782640, -0.138468344141854520, -0.138517862311755500, -0.138567380135362290, -0.138616897612550190, -0.138666414743195830, -0.138715931527175460, +-0.138765447964365680, -0.138814964054641830, -0.138864479797880610, -0.138913995193958140, -0.138963510242751160, -0.139013024944134950, -0.139062539297986180, -0.139112053304181050, +-0.139161566962596240, -0.139211080273107080, -0.139260593235590200, -0.139310105849921840, -0.139359618115978660, -0.139409130033636000, -0.139458641602770520, -0.139508152823258870, +-0.139557663694976410, -0.139607174217799780, -0.139656684391605200, -0.139706194216269370, -0.139755703691667590, -0.139805212817676580, -0.139854721594172500, -0.139904230021032080, +-0.139953738098130660, -0.140003245825344870, -0.140052753202550980, -0.140102260229625660, -0.140151766906444210, -0.140201273232883370, -0.140250779208819340, -0.140300284834128820, +-0.140349790108687120, -0.140399295032370950, -0.140448799605056990, -0.140498303826620600, -0.140547807696938450, -0.140597311215886760, -0.140646814383342260, -0.140696317199180240, +-0.140745819663277450, -0.140795321775510130, -0.140844823535754920, -0.140894324943887230, -0.140943825999783720, -0.140993326703320650, -0.141042827054374710, -0.141092327052821240, +-0.141141826698536980, -0.141191325991398110, -0.141240824931281400, -0.141290323518062170, -0.141339821751617160, -0.141389319631823020, -0.141438817158555140, -0.141488314331690210, +-0.141537811151104500, -0.141587307616674710, -0.141636803728276190, -0.141686299485785680, -0.141735794889079390, -0.141785289938034100, -0.141834784632525110, -0.141884278972429170, +-0.141933772957622550, -0.141983266587981910, -0.142032759863382680, -0.142082252783701540, -0.142131745348814790, -0.142181237558599070, -0.142230729412929860, -0.142280220911683820, +-0.142329712054737210, -0.142379202841966780, -0.142428693273247890, -0.142478183348457270, -0.142527673067471630, -0.142577162430166380, -0.142626651436418200, -0.142676140086103410, +-0.142725628379098720, -0.142775116315279480, -0.142824603894522480, -0.142874091116703960, -0.142923577981700660, -0.142973064489387990, -0.143022550639642610, -0.143072036432340900, +-0.143121521867359520, -0.143171006944573910, -0.143220491663860750, -0.143269976025096390, -0.143319460028157510, -0.143368943672919550, -0.143418426959259240, -0.143467909887053300, +-0.143517392456177150, -0.143566874666507500, -0.143616356517920680, -0.143665838010293400, -0.143715319143501080, -0.143764799917420470, -0.143814280331927860, -0.143863760386899990, +-0.143913240082212260, -0.143962719417741470, -0.144012198393363850, -0.144061677008956200, -0.144111155264393890, -0.144160633159553690, -0.144210110694311920, -0.144259587868545310, +-0.144309064682129310, -0.144358541134940620, -0.144408017226856030, -0.144457492957750950, -0.144506968327502150, -0.144556443335985910, -0.144605917983079040, -0.144655392268656900, +-0.144704866192596290, -0.144754339754773500, -0.144803812955065340, -0.144853285793347160, -0.144902758269495810, -0.144952230383387530, -0.145001702134899130, -0.145051173523906040, +-0.145100644550284990, -0.145150115213912360, -0.145199585514664860, -0.145249055452417950, -0.145298525027048430, -0.145347994238433030, -0.145397463086447190, -0.145446931570967690, +-0.145496399691870890, -0.145545867449033500, -0.145595334842331000, -0.145644801871640190, -0.145694268536837370, -0.145743734837799320, -0.145793200774401470, -0.145842666346520630, +-0.145892131554033130, -0.145941596396815730, -0.145991060874743890, -0.146040524987694430, -0.146089988735543630, -0.146139452118168310, -0.146188915135443940, -0.146238377787247240, +-0.146287840073454630, -0.146337301993942850, -0.146386763548587370, -0.146436224737264980, -0.146485685559852470, -0.146535146016225300, -0.146584606106260280, -0.146634065829833740, +-0.146683525186822480, -0.146732984177101950, -0.146782442800548970, -0.146831901057039890, -0.146881358946451490, -0.146930816468659270, -0.146980273623539990, -0.147029730410970030, +-0.147079186830826160, -0.147128642882983910, -0.147178098567320060, -0.147227553883710950, -0.147277008832033400, -0.147326463412162880, -0.147375917623976200, -0.147425371467350190, +-0.147474824942160270, -0.147524278048283330, -0.147573730785595690, -0.147623183153974130, -0.147672635153294210, -0.147722086783432680, -0.147771538044265930, -0.147820988935670780, +-0.147870439457522730, -0.147919889609698570, -0.147969339392074680, -0.148018788804527900, -0.148068237846933680, -0.148117686519168900, -0.148167134821109880, -0.148216582752633470, +-0.148266030313615150, -0.148315477503931790, -0.148364924323460130, -0.148414370772075750, -0.148463816849655430, -0.148513262556075580, -0.148562707891213010, -0.148612152854943220, +-0.148661597447143050, -0.148711041667688920, -0.148760485516457600, -0.148809928993324600, -0.148859372098166800, -0.148908814830860580, -0.148958257191282750, -0.149007699179308840, +-0.149057140794815690, -0.149106582037679680, -0.149156022907777660, -0.149205463404985140, -0.149254903529178970, -0.149304343280235540, -0.149353782658031680, -0.149403221662442910, +-0.149452660293346110, -0.149502098550618110, -0.149551536434134410, -0.149600973943771860, -0.149650411079406880, -0.149699847840916310, -0.149749284228175680, -0.149798720241061830, +-0.149848155879451220, -0.149897591143220630, -0.149947026032245610, -0.149996460546403060, -0.150045894685569340, -0.150095328449621310, -0.150144761838434530, -0.150194194851885840, +-0.150243627489851680, -0.150293059752208890, -0.150342491638832980, -0.150391923149600870, -0.150441354284389400, -0.150490785043074090, -0.150540215425531810, -0.150589645431639000, +-0.150639075061272530, -0.150688504314307910, -0.150737933190622040, -0.150787361690091330, -0.150836789812592660, -0.150886217558001580, -0.150935644926194930, -0.150985071917049210, +-0.151034498530441210, -0.151083924766246550, -0.151133350624342080, -0.151182776104604230, -0.151232201206909860, -0.151281625931134560, -0.151331050277155210, -0.151380474244848660, +-0.151429897834090470, -0.151479321044757560, -0.151528743876726350, -0.151578166329873700, -0.151627588404075200, -0.151677010099207730, -0.151726431415147740, -0.151775852351772130, +-0.151825272908956420, -0.151874693086577530, -0.151924112884511910, -0.151973532302636470, -0.152022951340826720, -0.152072369998959620, -0.152121788276911580, -0.152171206174559540, +-0.152220623691778990, -0.152270040828446920, -0.152319457584440180, -0.152368873959634360, -0.152418289953906360, -0.152467705567132630, -0.152517120799190080, -0.152566535649954260, +-0.152615950119302120, -0.152665364207110130, -0.152714777913255130, -0.152764191237612760, -0.152813604180059930, -0.152863016740473060, -0.152912428918729110, -0.152961840714703650, +-0.153011252128273570, -0.153060663159315350, -0.153110073807705940, -0.153159484073320890, -0.153208893956037150, -0.153258303455731160, -0.153307712572279850, -0.153357121305558810, +-0.153406529655444990, -0.153455937621815250, -0.153505345204545260, -0.153554752403511910, -0.153604159218591660, -0.153653565649661460, -0.153702971696596890, -0.153752377359274910, +-0.153801782637571990, -0.153851187531365040, -0.153900592040529690, -0.153949996164942840, -0.153999399904481030, -0.154048803259021150, -0.154098206228438810, -0.154147608812610970, +-0.154197011011414090, -0.154246412824725120, -0.154295814252419700, -0.154345215294374730, -0.154394615950467160, -0.154444016220572630, -0.154493416104568040, -0.154542815602329940, +-0.154592214713735190, -0.154641613438659510, -0.154691011776979780, -0.154740409728572500, -0.154789807293314650, -0.154839204471081850, -0.154888601261751050, -0.154937997665198720, +-0.154987393681301850, -0.155036789309936060, -0.155086184550978280, -0.155135579404305060, -0.155184973869793300, -0.155234367947318710, -0.155283761636758170, -0.155333154937988660, +-0.155382547850885840, -0.155431940375326650, -0.155481332511187590, -0.155530724258345660, -0.155580115616676480, -0.155629506586057010, -0.155678897166363770, -0.155728287357473710, +-0.155777677159262500, -0.155827066571607110, -0.155876455594384040, -0.155925844227470270, -0.155975232470741470, -0.156024620324074580, -0.156074007787346120, -0.156123394860433110, +-0.156172781543211150, -0.156222167835557260, -0.156271553737347940, -0.156320939248460160, -0.156370324368769600, -0.156419709098153230, -0.156469093436488040, -0.156518477383649660, +-0.156567860939515110, -0.156617244103960880, -0.156666626876863970, -0.156716009258100090, -0.156765391247546180, -0.156814772845078780, -0.156864154050574880, -0.156913534863910160, +-0.156962915284961620, -0.157012295313605780, -0.157061674949719650, -0.157111054193178860, -0.157160433043860490, -0.157209811501640980, -0.157259189566397420, -0.157308567238005430, +-0.157357944516342020, -0.157407321401284220, -0.157456697892707640, -0.157506073990489330, -0.157555449694505830, -0.157604825004634130, -0.157654199920749970, -0.157703574442730280, +-0.157752948570451660, -0.157802322303791100, -0.157851695642624300, -0.157901068586828260, -0.157950441136279570, -0.157999813290855190, -0.158049185050430830, -0.158098556414883550, +-0.158147927384089840, -0.158197297957926780, -0.158246668136270000, -0.158296037918996570, -0.158345407305983480, -0.158394776297106440, -0.158444144892242460, -0.158493513091268110, +-0.158542880894060430, -0.158592248300495090, -0.158641615310449150, -0.158690981923799160, -0.158740348140422150, -0.158789713960193840, -0.158839079382991240, -0.158888444408690930, +-0.158937809037169970, -0.158987173268304030, -0.159036537101970190, -0.159085900538044970, -0.159135263576405450, -0.159184626216927330, -0.159233988459487660, -0.159283350303963430, +-0.159332711750230390, -0.159382072798165600, -0.159431433447645600, -0.159480793698547480, -0.159530153550746900, -0.159579513004120960, -0.159628872058546260, -0.159678230713899780, +-0.159727588970057290, -0.159776946826895830, -0.159826304284292040, -0.159875661342122890, -0.159925018000264150, -0.159974374258592870, -0.160023730116985650, -0.160073085575319550, +-0.160122440633470310, -0.160171795291314950, -0.160221149548730100, -0.160270503405592820, -0.160319856861778850, -0.160369209917165220, -0.160418562571629040, -0.160467914825045970, +-0.160517266677293130, -0.160566618128247130, -0.160615969177785030, -0.160665319825782550, -0.160714670072116790, -0.160764019916664340, -0.160813369359302290, -0.160862718399906370, +-0.160912067038353650, -0.160961415274520760, -0.161010763108284800, -0.161060110539521460, -0.161109457568107850, -0.161158804193920620, -0.161208150416836780, -0.161257496236732160, +-0.161306841653483770, -0.161356186666968740, -0.161405531277062810, -0.161454875483643040, -0.161504219286586060, -0.161553562685768980, -0.161602905681067580, -0.161652248272358880, +-0.161701590459519600, -0.161750932242426760, -0.161800273620956140, -0.161849614594984870, -0.161898955164389540, -0.161948295329047250, -0.161997635088833800, -0.162046974443626260, +-0.162096313393301270, -0.162145651937735950, -0.162194990076806070, -0.162244327810388690, -0.162293665138360940, -0.162343002060598600, -0.162392338576978740, -0.162441674687378050, +-0.162491010391673600, -0.162540345689741180, -0.162589680581457920, -0.162639015066700450, -0.162688349145345860, -0.162737682817269970, -0.162787016082349880, -0.162836348940462230, +-0.162885681391484180, -0.162935013435291460, -0.162984345071761210, -0.163033676300770120, -0.163083007122195260, -0.163132337535912440, -0.163181667541798770, -0.163230997139730940, +-0.163280326329586060, -0.163329655111239920, -0.163378983484569670, -0.163428311449452360, -0.163477639005763840, -0.163526966153381250, -0.163576292892181230, -0.163625619222040890, +-0.163674945142836090, -0.163724270654443920, -0.163773595756741080, -0.163822920449604700, -0.163872244732910570, -0.163921568606535810, -0.163970892070357140, -0.164020215124251690, +-0.164069537768095240, -0.164118860001764980, -0.164168181825137540, -0.164217503238090090, -0.164266824240498460, -0.164316144832239750, -0.164365465013191130, -0.164414784783228410, +-0.164464104142228700, -0.164513423090068780, -0.164562741626625710, -0.164612059751775340, -0.164661377465394830, -0.164710694767360890, -0.164760011657550610, -0.164809328135839900, +-0.164858644202105860, -0.164907959856225220, -0.164957275098075120, -0.165006589927531370, -0.165055904344471150, -0.165105218348771180, -0.165154531940308600, -0.165203845118959250, +-0.165253157884600290, -0.165302470237108870, -0.165351782176360850, -0.165401093702233350, -0.165450404814603130, -0.165499715513347360, -0.165549025798341830, -0.165598335669463750, +-0.165647645126589800, -0.165696954169597200, -0.165746262798361800, -0.165795571012760710, -0.165844878812670710, -0.165894186197968950, -0.165943493168531270, -0.165992799724234860, +-0.166042105864956460, -0.166091411590573250, -0.166140716900961050, -0.166190021795997070, -0.166239326275558460, -0.166288630339521100, -0.166337933987762170, -0.166387237220158410, +-0.166436540036586980, -0.166485842436923770, -0.166535144421045940, -0.166584445988830270, -0.166633747140153910, -0.166683047874892770, -0.166732348192923980, -0.166781648094124320, +-0.166830947578371000, -0.166880246645539850, -0.166929545295508100, -0.166978843528152480, -0.167028141343350200, -0.167077438740977110, -0.167126735720910440, -0.167176032283026910, +-0.167225328427203750, -0.167274624153316840, -0.167323919461243360, -0.167373214350860530, -0.167422508822044210, -0.167471802874671620, -0.167521096508619540, -0.167570389723765150, +-0.167619682519984330, -0.167668974897154320, -0.167718266855151870, -0.167767558393854180, -0.167816849513137190, -0.167866140212878050, -0.167915430492953540, -0.167964720353240920, +-0.168014009793616050, -0.168063298813956180, -0.168112587414138040, -0.168161875594038860, -0.168211163353534590, -0.168260450692502370, -0.168309737610819490, -0.168359024108361820, +-0.168408310185006570, -0.168457595840630580, -0.168506881075111000, -0.168556165888323810, -0.168605450280146200, -0.168654734250454960, -0.168704017799127300, -0.168753300926039180, +-0.168802583631067820, -0.168851865914089990, -0.168901147774982940, -0.168950429213622580, -0.168999710229886140, -0.169048990823650410, -0.169098270994792660, -0.169147550743188800, +-0.169196830068716050, -0.169246108971251670, -0.169295387450671580, -0.169344665506853010, -0.169393943139672790, -0.169443220349008130, -0.169492497134735020, -0.169541773496730640, +-0.169591049434871830, -0.169640324949035830, -0.169689600039098580, -0.169738874704937340, -0.169788148946428910, -0.169837422763450540, -0.169886696155878180, -0.169935969123589080, +-0.169985241666460060, -0.170034513784368370, -0.170083785477189940, -0.170133056744802090, -0.170182327587081540, -0.170231598003905670, -0.170280867995150330, -0.170330137560692820, +-0.170379406700410410, -0.170428675414179050, -0.170477943701875990, -0.170527211563378110, -0.170576478998562600, -0.170625746007305460, -0.170675012589483950, -0.170724278744974920, +-0.170773544473655640, -0.170822809775402040, -0.170872074650091440, -0.170921339097600630, -0.170970603117806930, -0.171019866710586250, -0.171069129875815930, -0.171118392613372780, +-0.171167654923134100, -0.171216916804975830, -0.171266178258775270, -0.171315439284409700, -0.171364699881755090, -0.171413960050688760, -0.171463219791087500, -0.171512479102828630, +-0.171561737985788140, -0.171610996439843290, -0.171660254464870960, -0.171709512060748410, -0.171758769227351670, -0.171808025964557990, -0.171857282272244260, -0.171906538150287750, +-0.171955793598564470, -0.172005048616951710, -0.172054303205326300, -0.172103557363565580, -0.172152811091545540, -0.172202064389143460, -0.172251317256236660, -0.172300569692701130, +-0.172349821698414200, -0.172399073273252680, -0.172448324417093930, -0.172497575129813920, -0.172546825411289990, -0.172596075261399000, -0.172645324680018250, -0.172694573667023730, +-0.172743822222292810, -0.172793070345702320, -0.172842318037129600, -0.172891565296450640, -0.172940812123542760, -0.172990058518282840, -0.173039304480548240, -0.173088550010214920, +-0.173137795107160240, -0.173187039771261510, -0.173236284002394710, -0.173285527800437240, -0.173334771165265940, -0.173384014096758160, -0.173433256594789890, -0.173482498659238480, +-0.173531740289980810, -0.173580981486894240, -0.173630222249854800, -0.173679462578739780, -0.173728702473426120, -0.173777941933791120, -0.173827180959710840, -0.173876419551062620, +-0.173925657707723340, -0.173974895429570340, -0.174024132716479680, -0.174073369568328670, -0.174122605984994270, -0.174171841966353770, -0.174221077512283220, -0.174270312622659990, +-0.174319547297361400, -0.174368781536263530, -0.174418015339243700, -0.174467248706178800, -0.174516481636946250, -0.174565714131422050, -0.174614946189483560, -0.174664177811007710, +-0.174713408995871840, -0.174762639743952040, -0.174811870055125610, -0.174861099929269510, -0.174910329366261110, -0.174959558365976460, -0.175008786928292890, -0.175058015053087380, +-0.175107242740237230, -0.175156469989618560, -0.175205696801108730, -0.175254923174585080, -0.175304149109923670, -0.175353374607001900, -0.175402599665696680, -0.175451824285885430, +-0.175501048467444160, -0.175550272210250270, -0.175599495514180690, -0.175648718379112830, -0.175697940804922740, -0.175747162791487780, -0.175796384338684910, -0.175845605446391520, +-0.175894826114483680, -0.175944046342838780, -0.175993266131333760, -0.176042485479846020, -0.176091704388251640, -0.176140922856427990, -0.176190140884252440, -0.176239358471601130, +-0.176288575618351430, -0.176337792324380270, -0.176387008589565080, -0.176436224413781930, -0.176485439796908200, -0.176534654738820910, -0.176583869239397400, -0.176633083298513770, +-0.176682296916047420, -0.176731510091875350, -0.176780722825874950, -0.176829935117922300, -0.176879146967894810, -0.176928358375669450, -0.176977569341123630, -0.177026779864133450, +-0.177075989944576320, -0.177125199582329220, -0.177174408777269530, -0.177223617529273430, -0.177272825838218240, -0.177322033703981450, -0.177371241126439150, -0.177420448105468730, +-0.177469654640947190, -0.177518860732751940, -0.177568066380759120, -0.177617271584846110, -0.177666476344889940, -0.177715680660768010, -0.177764884532356450, -0.177814087959532690, +-0.177863290942173680, -0.177912493480156890, -0.177961695573358450, -0.178010897221655750, -0.178060098424925820, -0.178109299183046050, -0.178158499495892630, -0.178207699363342940, +-0.178256898785274450, -0.178306097761563280, -0.178355296292086850, -0.178404494376722210, -0.178453692015346750, -0.178502889207836610, -0.178552085954069270, -0.178601282253921690, +-0.178650478107271360, -0.178699673513994410, -0.178748868473968260, -0.178798062987069930, -0.178847257053176890, -0.178896450672165250, -0.178945643843912510, -0.178994836568295650, +-0.179044028845192160, -0.179093220674478140, -0.179142412056031070, -0.179191602989728390, -0.179240793475446280, -0.179289983513062190, -0.179339173102453150, -0.179388362243496610, +-0.179437550936068700, -0.179486739180046930, -0.179535926975308320, -0.179585114321730330, -0.179634301219189110, -0.179683487667562150, -0.179732673666726460, -0.179781859216559510, +-0.179831044316937500, -0.179880228967737870, -0.179929413168837650, -0.179978596920114360, -0.180027780221444140, -0.180076963072704460, -0.180126145473772810, -0.180175327424525360, +-0.180224508924839570, -0.180273689974592530, -0.180322870573661700, -0.180372050721923280, -0.180421230419254700, -0.180470409665533040, -0.180519588460635820, -0.180568766804439170, +-0.180617944696820630, -0.180667122137657200, -0.180716299126826410, -0.180765475664204450, -0.180814651749668790, -0.180863827383096500, -0.180913002564365070, -0.180962177293350710, +-0.181011351569930900, -0.181060525393982710, -0.181109698765383630, -0.181158871684009900, -0.181208044149738980, -0.181257216162448360, -0.181306387722014290, -0.181355558828314250, +-0.181404729481225300, -0.181453899680624970, -0.181503069426389470, -0.181552238718396260, -0.181601407556522490, -0.181650575940645630, -0.181699743870641860, -0.181748911346388760, +-0.181798078367763380, -0.181847244934643240, -0.181896411046904540, -0.181945576704424820, -0.181994741907081180, -0.182043906654751090, -0.182093070947310810, -0.182142234784637870, +-0.182191398166609760, -0.182240561093102720, -0.182289723563994250, -0.182338885579161500, -0.182388047138481970, -0.182437208241831910, -0.182486368889088780, -0.182535529080129770, +-0.182584688814832360, -0.182633848093072790, -0.182683006914728610, -0.182732165279676890, -0.182781323187795190, -0.182830480638959760, -0.182879637633048150, -0.182928794169937430, +-0.182977950249505140, -0.183027105871627570, -0.183076261036182210, -0.183125415743046640, -0.183174569992097110, -0.183223723783211140, -0.183272877116265860, -0.183322029991138840, +-0.183371182407706280, -0.183420334365845790, -0.183469485865434460, -0.183518636906349840, -0.183567787488468190, -0.183616937611667090, -0.183666087275823620, -0.183715236480815390, +-0.183764385226518640, -0.183813533512810910, -0.183862681339569340, -0.183911828706671530, -0.183960975613993690, -0.184010122061413400, -0.184059268048807820, -0.184108413576054510, +-0.184157558643029740, -0.184206703249611050, -0.184255847395676050, -0.184304991081100990, -0.184354134305763470, -0.184403277069540600, -0.184452419372309970, -0.184501561213947870, +-0.184550702594331840, -0.184599843513339080, -0.184648983970847140, -0.184698123966732300, -0.184747263500872140, -0.184796402573143840, -0.184845541183424970, -0.184894679331591790, +-0.184943817017521940, -0.184992954241092520, -0.185042091002181160, -0.185091227300664160, -0.185140363136419070, -0.185189498509323510, -0.185238633419253760, -0.185287767866087440, +-0.185336901849701700, -0.185386035369974140, -0.185435168426781040, -0.185484301020000050, -0.185533433149508260, -0.185582564815183370, -0.185631696016901600, -0.185680826754540620, +-0.185729957027977570, -0.185779086837090050, -0.185828216181754350, -0.185877345061848160, -0.185926473477248580, -0.185975601427833260, -0.186024728913478490, -0.186073855934061920, +-0.186122982489461130, -0.186172108579552440, -0.186221234204213490, -0.186270359363321450, -0.186319484056753970, -0.186368608284387310, -0.186417732046099150, -0.186466855341766660, +-0.186515978171267440, -0.186565100534477860, -0.186614222431275540, -0.186663343861537660, -0.186712464825141840, -0.186761585321964440, -0.186810705351883070, -0.186859824914774930, +-0.186908944010517660, -0.186958062638987620, -0.187007180800062400, -0.187056298493619680, -0.187105415719535760, -0.187154532477688320, -0.187203648767954530, -0.187252764590212060, +-0.187301879944337250, -0.187350994830207730, -0.187400109247700730, -0.187449223196693910, -0.187498336677063560, -0.187547449688687390, -0.187596562231442610, -0.187645674305206840, +-0.187694785909856440, -0.187743897045269090, -0.187793007711321990, -0.187842117907892820, -0.187891227634857910, -0.187940336892094940, -0.187989445679481120, -0.188038553996894090, +-0.188087661844210270, -0.188136769221307320, -0.188185876128062840, -0.188234982564353250, -0.188284088530056210, -0.188333194025048940, -0.188382299049209140, -0.188431403602413140, +-0.188480507684538640, -0.188529611295462860, -0.188578714435063490, -0.188627817103216910, -0.188676919299800770, -0.188726021024692330, -0.188775122277769300, -0.188824223058908000, +-0.188873323367986150, -0.188922423204881010, -0.188971522569470220, -0.189020621461630210, -0.189069719881238630, -0.189118817828173190, -0.189167915302310280, -0.189217012303527580, +-0.189266108831702330, -0.189315204886712270, -0.189364300468433750, -0.189413395576744470, -0.189462490211521730, -0.189511584372643180, -0.189560678059985220, -0.189609771273425570, +-0.189658864012841520, -0.189707956278110710, -0.189757048069109590, -0.189806139385715860, -0.189855230227806790, -0.189904320595260050, -0.189953410487952080, -0.190002499905760600, +-0.190051588848563300, -0.190100677316236590, -0.190149765308658180, -0.190198852825705370, -0.190247939867255830, -0.190297026433186050, -0.190346112523373660, -0.190395198137696040, +-0.190444283276030830, -0.190493367938254470, -0.190542452124244700, -0.190591535833878810, -0.190640619067034500, -0.190689701823588210, -0.190738784103417660, -0.190787865906400150, +-0.190836947232413430, -0.190886028081333900, -0.190935108453039290, -0.190984188347406910, -0.191033267764314510, -0.191082346703638490, -0.191131425165256610, -0.191180503149046580, +-0.191229580654884880, -0.191278657682649230, -0.191327734232216940, -0.191376810303465730, -0.191425885896272070, -0.191474961010513700, -0.191524035646067930, -0.191573109802812500, +-0.191622183480623850, -0.191671256679379760, -0.191720329398957500, -0.191769401639234890, -0.191818473400088310, -0.191867544681395550, -0.191916615483033960, -0.191965685804881240, +-0.192014755646813860, -0.192063825008709610, -0.192112893890446220, -0.192161962291900160, -0.192211030212949220, -0.192260097653470690, -0.192309164613342350, -0.192358231092440660, +-0.192407297090643390, -0.192456362607827890, -0.192505427643871910, -0.192554492198651920, -0.192603556272045700, -0.192652619863930590, -0.192701682974184390, -0.192750745602683520, +-0.192799807749305770, -0.192848869413928540, -0.192897930596429570, -0.192946991296685300, -0.192996051514573580, -0.193045111249972170, -0.193094170502757540, -0.193143229272807470, +-0.193192287559999340, -0.193241345364210950, -0.193290402685318720, -0.193339459523200500, -0.193388515877733650, -0.193437571748795920, -0.193486627136263830, -0.193535682040015170, +-0.193584736459927330, -0.193633790395878050, -0.193682843847743900, -0.193731896815402590, -0.193780949298731580, -0.193830001297608610, -0.193879052811910200, -0.193928103841514180, +-0.193977154386297870, -0.194026204446139130, -0.194075254020914440, -0.194124303110501610, -0.194173351714778450, -0.194222399833621500, -0.194271447466908530, -0.194320494614516950, +-0.194369541276324580, -0.194418587452207910, -0.194467633142044770, -0.194516678345712540, -0.194565723063089060, -0.194614767294050830, -0.194663811038475690, -0.194712854296241020, +-0.194761897067224660, -0.194810939351303090, -0.194859981148354210, -0.194909022458255340, -0.194958063280884390, -0.195007103616117810, -0.195056143463833490, -0.195105182823909230, +-0.195154221696221600, -0.195203260080648420, -0.195252297977067060, -0.195301335385355410, -0.195350372305389990, -0.195399408737048640, -0.195448444680208750, -0.195497480134748190, +-0.195546515100543490, -0.195595549577472520, -0.195644583565412670, -0.195693617064241790, -0.195742650073836450, -0.195791682594074480, -0.195840714624833300, -0.195889746165990750, +-0.195938777217423420, -0.195987807779009120, -0.196036837850625760, -0.196085867432149870, -0.196134896523459310, -0.196183925124431500, -0.196232953234944330, -0.196281980854874330, +-0.196331007984099390, -0.196380034622496900, -0.196429060769944790, -0.196478086426319590, -0.196527111591499160, -0.196576136265360940, -0.196625160447782830, -0.196674184138641380, +-0.196723207337814480, -0.196772230045179570, -0.196821252260614500, -0.196870273983995870, -0.196919295215201550, -0.196968315954109440, -0.197017336200596080, -0.197066355954539420, +-0.197115375215816850, -0.197164393984306270, -0.197213412259884260, -0.197262430042428740, -0.197311447331817130, -0.197360464127927350, -0.197409480430635970, -0.197458496239820900, +-0.197507511555359590, -0.197556526377129920, -0.197605540705008490, -0.197654554538873230, -0.197703567878601580, -0.197752580724071450, -0.197801593075159430, -0.197850604931743420, +-0.197899616293700900, -0.197948627160909770, -0.197997637533246650, -0.198046647410589420, -0.198095656792816020, -0.198144665679803040, -0.198193674071428380, -0.198242681967569560, +-0.198291689368104460, -0.198340696272909710, -0.198389702681863210, -0.198438708594842440, -0.198487714011725350, -0.198536718932388530, -0.198585723356709930, -0.198634727284567020, +-0.198683730715837700, -0.198732733650398650, -0.198781736088127740, -0.198830738028902500, -0.198879739472600870, -0.198928740419099440, -0.198977740868276160, -0.199026740820008960, +-0.199075740274174460, -0.199124739230650630, -0.199173737689314960, -0.199222735650045360, -0.199271733112718480, -0.199320730077212290, -0.199369726543404260, -0.199418722511172350, +-0.199467717980393200, -0.199516712950944780, -0.199565707422704550, -0.199614701395550490, -0.199663694869359230, -0.199712687844008750, -0.199761680319376550, -0.199810672295340580, +-0.199859663771777500, -0.199908654748565260, -0.199957645225581820, -0.200006635202703810, -0.200055624679809220, -0.200104613656775590, -0.200153602133480850, -0.200202590109801680, +-0.200251577585616010, -0.200300564560801420, -0.200349551035235830, -0.200398537008795950, -0.200447522481359720, -0.200496507452804670, -0.200545491923008800, -0.200594475891848760, +-0.200643459359202550, -0.200692442324947680, -0.200741424788962120, -0.200790406751122590, -0.200839388211307040, -0.200888369169392980, -0.200937349625258470, -0.200986329578780150, +-0.201035309029835990, -0.201084287978304020, -0.201133266424060870, -0.201182244366984560, -0.201231221806952630, -0.201280198743843090, -0.201329175177532630, -0.201378151107899220, +-0.201427126534820450, -0.201476101458174270, -0.201525075877837410, -0.201574049793687870, -0.201623023205603210, -0.201671996113461400, -0.201720968517139190, -0.201769940416514550, +-0.201818911811465080, -0.201867882701868730, -0.201916853087602270, -0.201965822968543650, -0.202014792344570930, -0.202063761215560770, -0.202112729581391230, -0.202161697441939850, +-0.202210664797084660, -0.202259631646702380, -0.202308597990671020, -0.202357563828868190, -0.202406529161171860, -0.202455493987458770, -0.202504458307606940, -0.202553422121493990, +-0.202602385428997890, -0.202651348229995420, -0.202700310524364570, -0.202749272311982920, -0.202798233592728560, -0.202847194366478160, -0.202896154633109780, -0.202945114392501460, +-0.202994073644529900, -0.203043032389073150, -0.203091990626008830, -0.203140948355214980, -0.203189905576568320, -0.203238862289946890, -0.203287818495228310, -0.203336774192290600, +-0.203385729381010540, -0.203434684061266140, -0.203483638232935050, -0.203532591895895290, -0.203581545050023600, -0.203630497695198090, -0.203679449831296290, -0.203728401458196320, +-0.203777352575774920, -0.203826303183910120, -0.203875253282480020, -0.203924202871361320, -0.203973151950432140, -0.204022100519570070, -0.204071048578653190, -0.204119996127558240, +-0.204168943166163320, -0.204217889694346010, -0.204266835711984450, -0.204315781218955360, -0.204364726215136790, -0.204413670700406420, -0.204462614674642300, -0.204511558137721230, +-0.204560501089521230, -0.204609443529920000, -0.204658385458795610, -0.204707326876024800, -0.204756267781485670, -0.204805208175055880, -0.204854148056613510, -0.204903087426035330, +-0.204952026283199450, -0.205000964627983890, -0.205049902460265530, -0.205098839779922380, -0.205147776586832170, -0.205196712880872930, -0.205245648661921460, -0.205294583929855890, +-0.205343518684553860, -0.205392452925893450, -0.205441386653751500, -0.205490319868006060, -0.205539252568534840, -0.205588184755215900, -0.205637116427926060, -0.205686047586543460, +-0.205734978230945720, -0.205783908361010990, -0.205832837976616030, -0.205881767077638970, -0.205930695663957970, -0.205979623735449760, -0.206028551291992490, -0.206077478333463850, +-0.206126404859741960, -0.206175330870703610, -0.206224256366226930, -0.206273181346189600, -0.206322105810469780, -0.206371029758944250, -0.206419953191491150, -0.206468876107988140, +-0.206517798508313420, -0.206566720392343720, -0.206615641759957250, -0.206664562611031670, -0.206713482945445120, -0.206762402763074420, -0.206811322063797740, -0.206860240847493160, +-0.206909159114037540, -0.206958076863309030, -0.207006994095185330, -0.207055910809544580, -0.207104827006263620, -0.207153742685220600, -0.207202657846293210, -0.207251572489359630, +-0.207300486614296650, -0.207349400220982470, -0.207398313309294810, -0.207447225879111770, -0.207496137930310240, -0.207545049462768390, -0.207593960476363890, -0.207642870970974950, +-0.207691780946478360, -0.207740690402752340, -0.207789599339674590, -0.207838507757123290, -0.207887415654975260, -0.207936323033108690, -0.207985229891401780, -0.208034136229731330, +-0.208083042047975560, -0.208131947346012170, -0.208180852123719340, -0.208229756380973960, -0.208278660117654200, -0.208327563333637780, -0.208376466028802890, -0.208425368203026370, +-0.208474269856186470, -0.208523170988160870, -0.208572071598827790, -0.208620971688064090, -0.208669871255747960, -0.208718770301757170, -0.208767668825969870, -0.208816566828262970, +-0.208865464308514630, -0.208914361266603090, -0.208963257702405200, -0.209012153615799200, -0.209061049006662780, -0.209109943874874170, -0.209158838220310280, -0.209207732042849290, +-0.209256625342368970, -0.209305518118747540, -0.209354410371861840, -0.209403302101590140, -0.209452193307810200, -0.209501083990400180, -0.209549974149237040, -0.209598863784198950, +-0.209647752895163710, -0.209696641482009500, -0.209745529544613290, -0.209794417082853210, -0.209843304096607560, -0.209892190585753200, -0.209941076550168360, -0.209989961989730830, +-0.210038846904318840, -0.210087731293809280, -0.210136615158080410, -0.210185498497010010, -0.210234381310476280, -0.210283263598356170, -0.210332145360527910, -0.210381026596869270, +-0.210429907307258500, -0.210478787491572530, -0.210527667149689600, -0.210576546281487480, -0.210625424886844440, -0.210674302965637410, -0.210723180517744630, -0.210772057543044320, +-0.210820934041413420, -0.210869810012730200, -0.210918685456872450, -0.210967560373718440, -0.211016434763145080, -0.211065308625030620, -0.211114181959252910, -0.211163054765690170, +-0.211211927044219370, -0.211260798794718730, -0.211309670017066100, -0.211358540711139740, -0.211407410876816610, -0.211456280513974910, -0.211505149622492530, -0.211554018202247730, +-0.211602886253117430, -0.211651753774979910, -0.211700620767713010, -0.211749487231194990, -0.211798353165302820, -0.211847218569914790, -0.211896083444909120, -0.211944947790162820, +-0.211993811605554140, -0.212042674890960930, -0.212091537646261460, -0.212140399871332740, -0.212189261566053000, -0.212238122730300100, -0.212286983363952350, -0.212335843466886690, +-0.212384703038981440, -0.212433562080114410, -0.212482420590163920, -0.212531278569006940, -0.212580136016521790, -0.212628992932586270, -0.212677849317078700, -0.212726705169876100, +-0.212775560490856720, -0.212824415279898870, -0.212873269536879540, -0.212922123261677060, -0.212970976454169240, -0.213019829114234450, -0.213068681241749630, -0.213117532836593100, +-0.213166383898642760, -0.213215234427776870, -0.213264084423872490, -0.213312933886807890, -0.213361782816460930, -0.213410631212709980, -0.213459479075432000, -0.213508326404505320, +-0.213557173199807830, -0.213606019461217850, -0.213654865188612380, -0.213703710381869750, -0.213752555040868260, -0.213801399165484960, -0.213850242755598160, -0.213899085811085770, +-0.213947928331826100, -0.213996770317696150, -0.214045611768574280, -0.214094452684338410, -0.214143293064866820, -0.214192132910036550, -0.214240972219725960, -0.214289810993812950, +-0.214338649232175830, -0.214387486934691670, -0.214436324101238780, -0.214485160731695070, -0.214533996825938930, -0.214582832383847340, -0.214631667405298650, -0.214680501890170820, +-0.214729335838342170, -0.214778169249689730, -0.214827002124091860, -0.214875834461426940, -0.214924666261572000, -0.214973497524405390, -0.215022328249805020, -0.215071158437649290, +-0.215119988087815210, -0.215168817200181160, -0.215217645774625070, -0.215266473811025320, -0.215315301309258940, -0.215364128269204290, -0.215412954690739340, -0.215461780573742430, +-0.215510605918090630, -0.215559430723662320, -0.215608254990335420, -0.215657078717988340, -0.215705901906498100, -0.215754724555743130, -0.215803546665601780, -0.215852368235951140, +-0.215901189266669540, -0.215950009757635010, -0.215998829708725860, -0.216047649119819220, -0.216096467990793460, -0.216145286321526520, -0.216194104111896800, -0.216242921361781390, +-0.216291738071058670, -0.216340554239606600, -0.216389369867303590, -0.216438184954026700, -0.216486999499654360, -0.216535813504064530, -0.216584626967135600, -0.216633439888744670, +-0.216682252268770140, -0.216731064107090390, -0.216779875403582570, -0.216828686158125060, -0.216877496370595830, -0.216926306040873290, -0.216975115168834550, -0.217023923754358030, +-0.217072731797321700, -0.217121539297603970, -0.217170346255081970, -0.217219152669634100, -0.217267958541138340, -0.217316763869473130, -0.217365568654515560, -0.217414372896144070, +-0.217463176594236670, -0.217511979748671730, -0.217560782359326440, -0.217609584426079170, -0.217658385948808370, -0.217707186927391190, -0.217755987361706040, -0.217804787251630910, +-0.217853586597044240, -0.217902385397823200, -0.217951183653846160, -0.217999981364991190, -0.218048778531136690, -0.218097575152159800, -0.218146371227938980, -0.218195166758352240, +-0.218243961743278010, -0.218292756182593440, -0.218341550076177000, -0.218390343423906670, -0.218439136225660910, -0.218487928481316870, -0.218536720190753010, -0.218585511353847380, +-0.218634301970478370, -0.218683092040523190, -0.218731881563860280, -0.218780670540368090, -0.218829458969923780, -0.218878246852405840, -0.218927034187692300, -0.218975820975661570, +-0.219024607216190880, -0.219073392909158670, -0.219122178054442950, -0.219170962651922260, -0.219219746701473710, -0.219268530202975790, -0.219317313156306540, -0.219366095561344450, +-0.219414877417966700, -0.219463658726051750, -0.219512439485477630, -0.219561219696122860, -0.219609999357864630, -0.219658778470581380, -0.219707557034151600, -0.219756335048452520, +-0.219805112513362600, -0.219853889428759890, -0.219902665794522890, -0.219951441610528790, -0.220000216876656110, -0.220048991592782850, -0.220097765758787590, -0.220146539374547450, +-0.220195312439940950, -0.220244084954846210, -0.220292856919141660, -0.220341628332704540, -0.220390399195413370, -0.220439169507146180, -0.220487939267781490, -0.220536708477196530, +-0.220585477135269800, -0.220634245241879830, -0.220683012796903780, -0.220731779800220210, -0.220780546251707200, -0.220829312151243270, -0.220878077498705580, -0.220926842293972750, +-0.220975606536922780, -0.221024370227434240, -0.221073133365384340, -0.221121895950651600, -0.221170657983114140, -0.221219419462650450, -0.221268180389137760, -0.221316940762454640, +-0.221365700582479170, -0.221414459849089890, -0.221463218562164030, -0.221511976721580100, -0.221560734327216240, -0.221609491378950970, -0.221658247876661550, -0.221707003820226510, +-0.221755759209524390, -0.221804514044432440, -0.221853268324829210, -0.221902022050592810, -0.221950775221601780, -0.221999527837733380, -0.222048279898866160, -0.222097031404878240, +-0.222145782355648160, -0.222194532751053220, -0.222243282590971920, -0.222292031875282460, -0.222340780603863310, -0.222389528776591790, -0.222438276393346460, -0.222487023454005420, +-0.222535769958447260, -0.222584515906549240, -0.222633261298189920, -0.222682006133247900, -0.222730750411600430, -0.222779494133126060, -0.222828237297702990, -0.222876979905209740, +-0.222925721955523600, -0.222974463448523170, -0.223023204384086570, -0.223071944762092410, -0.223120684582417930, -0.223169423844941760, -0.223218162549542020, -0.223266900696097310, +-0.223315638284484920, -0.223364375314583450, -0.223413111786271020, -0.223461847699426230, -0.223510583053926400, -0.223559317849650140, -0.223608052086475970, -0.223656785764281270, +-0.223705518882944600, -0.223754251442344120, -0.223802983442358470, -0.223851714882864900, -0.223900445763742070, -0.223949176084868110, -0.223997905846121640, -0.224046635047379980, +-0.224095363688521730, -0.224144091769425070, -0.224192819289968620, -0.224241546250029680, -0.224290272649486870, -0.224338998488218390, -0.224387723766102830, -0.224436448483017550, +-0.224485172638841130, -0.224533896233452240, -0.224582619266728150, -0.224631341738547510, -0.224680063648788540, -0.224728784997329820, -0.224777505784048700, -0.224826226008823850, +-0.224874945671533400, -0.224923664772056050, -0.224972383310269090, -0.225021101286051160, -0.225069818699280500, -0.225118535549835710, -0.225167251837594150, -0.225215967562434450, +-0.225264682724234860, -0.225313397322873980, -0.225362111358229170, -0.225410824830179070, -0.225459537738601950, -0.225508250083376380, -0.225556961864379760, -0.225605673081490740, +-0.225654383734587990, -0.225703093823548810, -0.225751803348251930, -0.225800512308575510, -0.225849220704398250, -0.225897928535597540, -0.225946635802051960, -0.225995342503639810, +-0.226044048640239750, -0.226092754211729110, -0.226141459217986620, -0.226190163658890440, -0.226238867534319320, -0.226287570844150580, -0.226336273588262920, -0.226384975766534570, +-0.226433677378844210, -0.226482378425069240, -0.226531078905088310, -0.226579778818780140, -0.226628478166022050, -0.226677176946692790, -0.226725875160670580, -0.226774572807834110, +-0.226823269888060790, -0.226871966401229280, -0.226920662347217890, -0.226969357725905240, -0.227018052537168780, -0.227066746780887170, -0.227115440456938710, -0.227164133565202070, +-0.227212826105554680, -0.227261518077875200, -0.227310209482041950, -0.227358900317933600, -0.227407590585427560, -0.227456280284402540, -0.227504969414737270, -0.227553657976309140, +-0.227602345968996870, -0.227651033392678700, -0.227699720247233420, -0.227748406532538390, -0.227797092248472330, -0.227845777394913570, -0.227894461971740790, -0.227943145978831420, +-0.227991829416064160, -0.228040512283317370, -0.228089194580469700, -0.228137876307398620, -0.228186557463982860, -0.228235238050100680, -0.228283918065630860, -0.228332597510450820, +-0.228381276384439250, -0.228429954687474540, -0.228478632419435330, -0.228527309580199120, -0.228575986169644640, -0.228624662187650650, -0.228673337634094530, -0.228722012508855100, +-0.228770686811810620, -0.228819360542839860, -0.228868033701820270, -0.228916706288630590, -0.228965378303149140, -0.229014049745254690, -0.229062720614824690, -0.229111390911737880, +-0.229160060635872580, -0.229208729787107570, -0.229257398365320300, -0.229306066370389560, -0.229354733802193620, -0.229403400660611300, -0.229452066945520030, -0.229500732656798600, +-0.229549397794325760, -0.229598062357979000, -0.229646726347637080, -0.229695389763178350, -0.229744052604481580, -0.229792714871424250, -0.229841376563885150, -0.229890037681742570, +-0.229938698224875340, -0.229987358193160930, -0.230036017586478150, -0.230084676404705310, -0.230133334647721200, -0.230181992315403340, -0.230230649407630490, -0.230279305924281000, +-0.230327961865233720, -0.230376617230366070, -0.230425272019556870, -0.230473926232684950, -0.230522579869627760, -0.230571232930264130, -0.230619885414472430, -0.230668537322131440, +-0.230717188653118660, -0.230765839407312930, -0.230814489584592580, -0.230863139184836450, -0.230911788207922050, -0.230960436653728170, -0.231009084522133200, -0.231057731813015950, +-0.231106378526253930, -0.231155024661725970, -0.231203670219310460, -0.231252315198886200, -0.231300959600330700, -0.231349603423522810, -0.231398246668341360, -0.231446889334663840, +-0.231495531422369120, -0.231544172931335560, -0.231592813861442010, -0.231641454212565990, -0.231690093984586310, -0.231738733177381420, -0.231787371790830120, -0.231836009824809950, +-0.231884647279199770, -0.231933284153877980, -0.231981920448723400, -0.232030556163613590, -0.232079191298427380, -0.232127825853043200, -0.232176459827339890, -0.232225093221195000, +-0.232273726034487370, -0.232322358267095440, -0.232370989918898010, -0.232419620989772700, -0.232468251479598350, -0.232516881388253770, -0.232565510715616600, -0.232614139461565620, +-0.232662767625979290, -0.232711395208736490, -0.232760022209714760, -0.232808648628792970, -0.232857274465849560, -0.232905899720763390, -0.232954524393412050, -0.233003148483674400, +-0.233051771991428870, -0.233100394916554350, -0.233149017258928420, -0.233197639018429940, -0.233246260194937350, -0.233294880788329550, -0.233343500798484120, -0.233392120225279940, +-0.233440739068595890, -0.233489357328309550, -0.233537975004299820, -0.233586592096445170, -0.233635208604624440, -0.233683824528715280, -0.233732439868596570, -0.233781054624146750, +-0.233829668795244690, -0.233878282381768080, -0.233926895383595730, -0.233975507800606160, -0.234024119632678250, -0.234072730879689610, -0.234121341541519120, -0.234169951618045300, +-0.234218561109147020, -0.234267170014701900, -0.234315778334588890, -0.234364386068686840, -0.234412993216873390, -0.234461599779027450, -0.234510205755027540, -0.234558811144752520, +-0.234607415948080040, -0.234656020164889040, -0.234704623795057990, -0.234753226838465810, -0.234801829294990110, -0.234850431164509850, -0.234899032446903520, -0.234947633142050030, +-0.234996233249827050, -0.235044832770113450, -0.235093431702787790, -0.235142030047728990, -0.235190627804814640, -0.235239224973923770, -0.235287821554934830, -0.235336417547726750, +-0.235385012952177200, -0.235433607768165130, -0.235482201995569460, -0.235530795634267850, -0.235579388684139250, -0.235627981145062200, -0.235676573016915610, -0.235725164299577160, +-0.235773754992925800, -0.235822345096840050, -0.235870934611198870, -0.235919523535879920, -0.235968111870762160, -0.236016699615724130, -0.236065286770644780, -0.236113873335401760, +-0.236162459309874090, -0.236211044693940250, -0.236259629487479250, -0.236308213690368720, -0.236356797302487680, -0.236405380323715050, -0.236453962753928580, -0.236502544593007180, +-0.236551125840829410, -0.236599706497274270, -0.236648286562219420, -0.236696866035543850, -0.236745444917126120, -0.236794023206845230, -0.236842600904578810, -0.236891178010205930, +-0.236939754523605080, -0.236988330444655280, -0.237036905773234250, -0.237085480509220900, -0.237134054652493900, -0.237182628202932180, -0.237231201160413440, -0.237279773524816720, +-0.237328345296020980, -0.237376916473903960, -0.237425487058344630, -0.237474057049221620, -0.237522626446413860, -0.237571195249799110, -0.237619763459256390, -0.237668331074664230, +-0.237716898095901710, -0.237765464522846500, -0.237814030355377630, -0.237862595593373670, -0.237911160236713660, -0.237959724285275310, -0.238008287738937670, -0.238056850597579310, +-0.238105412861079250, -0.238153974529315220, -0.238202535602166250, -0.238251096079511370, -0.238299655961228350, -0.238348215247196150, -0.238396773937293440, -0.238445332031399200, +-0.238493889529391210, -0.238542446431148520, -0.238591002736549710, -0.238639558445473800, -0.238688113557798560, -0.238736668073403050, -0.238785221992165870, -0.238833775313966070, +-0.238882328038681400, -0.238930880166190910, -0.238979431696373200, -0.239027982629107380, -0.239076532964271140, -0.239125082701743570, -0.239173631841403310, -0.239222180383129400, +-0.239270728326799580, -0.239319275672292970, -0.239367822419488590, -0.239416368568264230, -0.239464914118498930, -0.239513459070071380, -0.239562003422860580, -0.239610547176744350, +-0.239659090331601770, -0.239707632887311450, -0.239756174843752470, -0.239804716200802630, -0.239853256958341000, -0.239901797116246230, -0.239950336674397390, -0.239998875632672280, +-0.240047413990949980, -0.240095951749109170, -0.240144488907028890, -0.240193025464586960, -0.240241561421662450, -0.240290096778134480, -0.240338631533880850, -0.240387165688780630, +-0.240435699242712490, -0.240484232195555540, -0.240532764547187580, -0.240581296297487700, -0.240629827446334600, -0.240678357993607340, -0.240726887939183760, -0.240775417282942970, +-0.240823946024763620, -0.240872474164524840, -0.240921001702104450, -0.240969528637381580, -0.241018054970234850, -0.241066580700543430, -0.241115105828185130, -0.241163630353039060, +-0.241212154274984350, -0.241260677593898830, -0.241309200309661580, -0.241357722422151370, -0.241406243931247270, -0.241454764836827120, -0.241503285138770060, -0.241551804836954820, +-0.241600323931260460, -0.241648842421564870, -0.241697360307747190, -0.241745877589686080, -0.241794394267260740, -0.241842910340348970, -0.241891425808829910, -0.241939940672582290, +-0.241988454931485270, -0.242036968585416650, -0.242085481634255640, -0.242133994077880920, -0.242182505916171630, -0.242231017149005660, -0.242279527776262130, -0.242328037797820220, +-0.242376547213557810, -0.242425056023353990, -0.242473564227087550, -0.242522071824637640, -0.242570578815882090, -0.242619085200700140, -0.242667590978970420, -0.242716096150572190, +-0.242764600715383280, -0.242813104673282880, -0.242861608024149720, -0.242910110767862950, -0.242958612904300490, -0.243007114433341470, -0.243055615354864700, -0.243104115668749290, +-0.243152615374873180, -0.243201114473115540, -0.243249612963355540, -0.243298110845471070, -0.243346608119341310, -0.243395104784845050, -0.243443600841861450, -0.243492096290268410, +-0.243540591129945140, -0.243589085360770400, -0.243637578982623370, -0.243686071995381950, -0.243734564398925350, -0.243783056193132370, -0.243831547377882150, -0.243880037953052630, +-0.243928527918523040, -0.243977017274172120, -0.244025506019879070, -0.244073994155521830, -0.244122481680979640, -0.244170968596131630, -0.244219454900855780, -0.244267940595031320, +-0.244316425678536980, -0.244364910151252030, -0.244413394013054340, -0.244461877263823210, -0.244510359903437340, -0.244558841931776020, -0.244607323348717180, -0.244655804154140010, +-0.244704284347923350, -0.244752763929946380, -0.244801242900087090, -0.244849721258224710, -0.244898199004238010, -0.244946676138006250, -0.244995152659407360, -0.245043628568320570, +-0.245092103864625150, -0.245140578548199070, -0.245189052618921520, -0.245237526076671350, -0.245285998921327770, -0.245334471152768770, -0.245382942770873610, -0.245431413775521080, +-0.245479884166590450, -0.245528353943959690, -0.245576823107508030, -0.245625291657114300, -0.245673759592657800, -0.245722226914016460, -0.245770693621069540, -0.245819159713695920, +-0.245867625191774800, -0.245916090055184190, -0.245964554303803370, -0.246013017937511150, -0.246061480956186820, -0.246109943359708370, -0.246158405147955030, -0.246206866320806160, +-0.246255326878139640, -0.246303786819834840, -0.246352246145770560, -0.246400704855826070, -0.246449162949879420, -0.246497620427809840, -0.246546077289496230, -0.246594533534817860, +-0.246642989163652710, -0.246691444175880100, -0.246739898571378870, -0.246788352350028330, -0.246836805511706480, -0.246885258056292610, -0.246933709983665590, -0.246982161293704730, +-0.247030611986288030, -0.247079062061294820, -0.247127511518604380, -0.247175960358094720, -0.247224408579645170, -0.247272856183134580, -0.247321303168442310, -0.247369749535446330, +-0.247418195284025980, -0.247466640414060140, -0.247515084925428120, -0.247563528818007970, -0.247611972091679010, -0.247660414746320110, -0.247708856781810590, -0.247757298198028520, +-0.247805738994853200, -0.247854179172163510, -0.247902618729838820, -0.247951057667757160, -0.247999495985797850, -0.248047933683840230, -0.248096370761762360, -0.248144807219443540, +-0.248193243056762710, -0.248241678273599190, -0.248290112869831050, -0.248338546845337650, -0.248386980199997860, -0.248435412933691060, -0.248483845046295310, -0.248532276537689920, +-0.248580707407753840, -0.248629137656366430, -0.248677567283405760, -0.248725996288751170, -0.248774424672281590, -0.248822852433876360, -0.248871279573413570, -0.248919706090772600, +-0.248968131985832340, -0.249016557258472190, -0.249064981908570240, -0.249113405936005810, -0.249161829340658310, -0.249210252122405800, -0.249258674281127630, -0.249307095816702820, +-0.249355516729010680, -0.249403937017929320, -0.249452356683338120, -0.249500775725116030, -0.249549194143142420, -0.249597611937295400, -0.249646029107454370, -0.249694445653498240, +-0.249742861575306450, -0.249791276872757070, -0.249839691545729490, -0.249888105594102680, -0.249936519017756040, -0.249984931816567670, -0.250033343990416990, -0.250081755539183330, +-0.250130166462744890, -0.250178576760981040, -0.250226986433770730, -0.250275395480993370, -0.250323803902527120, -0.250372211698251360, -0.250420618868045060, -0.250469025411787620, +-0.250517431329357220, -0.250565836620633250, -0.250614241285494640, -0.250662645323820930, -0.250711048735490110, -0.250759451520381700, -0.250807853678374660, -0.250856255209348400, +-0.250904656113181080, -0.250953056389752130, -0.251001456038940970, -0.251049855060625720, -0.251098253454685840, -0.251146651221000330, -0.251195048359448670, -0.251243444869908910, +-0.251291840752260520, -0.251340236006382560, -0.251388630632154440, -0.251437024629454280, -0.251485417998161600, -0.251533810738155340, -0.251582202849314980, -0.251630594331518740, +-0.251678985184645930, -0.251727375408575700, -0.251775765003187490, -0.251824153968359440, -0.251872542303970940, -0.251920930009901120, -0.251969317086029430, -0.252017703532234020, +-0.252066089348394310, -0.252114474534389790, -0.252162859090098720, -0.252211243015400430, -0.252259626310174120, -0.252308008974299110, -0.252356391007653670, -0.252404772410117220, +-0.252453153181568910, -0.252501533321888070, -0.252549912830953020, -0.252598291708643170, -0.252646669954837590, -0.252695047569415740, -0.252743424552255900, -0.252791800903237440, +-0.252840176622239510, -0.252888551709141540, -0.252936926163821800, -0.252985299986159710, -0.253033673176034810, -0.253082045733325320, -0.253130417657910720, -0.253178788949670050, +-0.253227159608482850, -0.253275529634227280, -0.253323899026782930, -0.253372267786028840, -0.253420635911844490, -0.253469003404108110, -0.253517370262699220, -0.253565736487496920, +-0.253614102078380750, -0.253662467035228820, -0.253710831357920770, -0.253759195046335650, -0.253807558100352940, -0.253855920519850900, -0.253904282304709070, -0.253952643454806950, +-0.254001003970022840, -0.254049363850236190, -0.254097723095326130, -0.254146081705172170, -0.254194439679652610, -0.254242797018646940, -0.254291153722034310, -0.254339509789694160, +-0.254387865221504860, -0.254436220017345840, -0.254484574177096360, -0.254532927700635790, -0.254581280587842520, -0.254629632838596020, -0.254677984452775450, -0.254726335430260350, +-0.254774685770928990, -0.254823035474660900, -0.254871384541335620, -0.254919732970831480, -0.254968080763028020, -0.255016427917804380, -0.255064774435040050, -0.255113120314613360, +-0.255161465556403900, -0.255209810160290760, -0.255258154126153550, -0.255306497453870460, -0.255354840143321220, -0.255403182194384790, -0.255451523606940900, -0.255499864380867750, +-0.255548204516044930, -0.255596544012351600, -0.255644882869667300, -0.255693221087870400, -0.255741558666840450, -0.255789895606456650, -0.255838231906598490, -0.255886567567144290, +-0.255934902587973740, -0.255983236968966300, -0.256031570710000380, -0.256079903810955520, -0.256128236271710890, -0.256176568092146120, -0.256224899272139480, -0.256273229811570640, +-0.256321559710318670, -0.256369888968263240, -0.256418217585282720, -0.256466545561256590, -0.256514872896064120, -0.256563199589584840, -0.256611525641697200, -0.256659851052280730, +-0.256708175821214630, -0.256756499948378510, -0.256804823433650740, -0.256853146276910860, -0.256901468478038570, -0.256949790036912210, -0.256998110953411350, -0.257046431227415220, +-0.257094750858803400, -0.257143069847454330, -0.257191388193247550, -0.257239705896062320, -0.257288022955778240, -0.257336339372273680, -0.257384655145428300, -0.257432970275121240, +-0.257481284761232170, -0.257529598603639500, -0.257577911802222840, -0.257626224356861390, -0.257674536267434750, -0.257722847533821410, -0.257771158155900960, -0.257819468133553000, +-0.257867777466655960, -0.257916086155089490, -0.257964394198732740, -0.258012701597465480, -0.258061008351166080, -0.258109314459714080, -0.258157619922988860, -0.258205924740869950, +-0.258254228913235850, -0.258302532439966200, -0.258350835320940160, -0.258399137556037490, -0.258447439145136570, -0.258495740088116990, -0.258544040384858120, -0.258592340035239570, +-0.258640639039139700, -0.258688937396438280, -0.258737235107014460, -0.258785532170748010, -0.258833828587517360, -0.258882124357202040, -0.258930419479681870, -0.258978713954835240, +-0.259027007782541840, -0.259075300962680890, -0.259123593495132140, -0.259171885379773980, -0.259220176616486110, -0.259268467205147730, -0.259316757145638680, -0.259365046437837310, +-0.259413335081623290, -0.259461623076875980, -0.259509910423474990, -0.259558197121298790, -0.259606483170227160, -0.259654768570139250, -0.259703053320914920, -0.259751337422432450, +-0.259799620874571700, -0.259847903677212280, -0.259896185830232720, -0.259944467333512670, -0.259992748186931470, -0.260041028390368800, -0.260089307943703110, -0.260137586846814210, +-0.260185865099581300, -0.260234142701884160, -0.260282419653601270, -0.260330695954612280, -0.260378971604796560, -0.260427246604033880, -0.260475520952202610, -0.260523794649182570, +-0.260572067694853030, -0.260620340089093790, -0.260668611831783190, -0.260716882922801150, -0.260765153362027270, -0.260813423149340080, -0.260861692284619360, -0.260909960767744360, +-0.260958228598594970, -0.261006495777049490, -0.261054762302987850, -0.261103028176289220, -0.261151293396833520, -0.261199557964499120, -0.261247821879165840, -0.261296085140713010, +-0.261344347749020380, -0.261392609703966490, -0.261440871005431060, -0.261489131653293410, -0.261537391647433390, -0.261585650987729460, -0.261633909674061420, -0.261682167706309030, +-0.261730425084350790, -0.261778681808066460, -0.261826937877335460, -0.261875193292037510, -0.261923448052051140, -0.261971702157256180, -0.262019955607532000, -0.262068208402758300, +-0.262116460542813680, -0.262164712027577910, -0.262212962856930350, -0.262261213030750780, -0.262309462548917790, -0.262357711411311150, -0.262405959617810210, -0.262454207168294820, +-0.262502454062643440, -0.262550700300735960, -0.262598945882451750, -0.262647190807670570, -0.262695435076271020, -0.262743678688132860, -0.262791921643135920, -0.262840163941158720, +-0.262888405582081150, -0.262936646565782580, -0.262984886892142780, -0.263033126561040390, -0.263081365572355120, -0.263129603925966520, -0.263177841621754280, -0.263226078659597020, +-0.263274315039374540, -0.263322550760966280, -0.263370785824252110, -0.263419020229110510, -0.263467253975421370, -0.263515487063064100, -0.263563719491918540, -0.263611951261863210, +-0.263660182372778050, -0.263708412824542830, -0.263756642617036190, -0.263804871750137950, -0.263853100223727490, -0.263901328037684730, -0.263949555191888230, -0.263997781686217790, +-0.264046007520552960, -0.264094232694773500, -0.264142457208758060, -0.264190681062386470, -0.264238904255538140, -0.264287126788093020, -0.264335348659929640, -0.264383569870927870, +-0.264431790420967210, -0.264480010309927520, -0.264528229537687340, -0.264576448104126560, -0.264624666009125150, -0.264672883252561610, -0.264721099834315850, -0.264769315754267380, +-0.264817531012295990, -0.264865745608280410, -0.264913959542100400, -0.264962172813635540, -0.265010385422765670, -0.265058597369369430, -0.265106808653326640, -0.265155019274516850, +-0.265203229232819970, -0.265251438528114560, -0.265299647160280590, -0.265347855129197450, -0.265396062434745120, -0.265444269076802240, -0.265492475055248640, -0.265540680369963870, +-0.265588885020827840, -0.265637089007719150, -0.265685292330517740, -0.265733494989103540, -0.265781696983355130, -0.265829898313152510, -0.265878098978375170, -0.265926298978902960, +-0.265974498314614620, -0.266022696985390050, -0.266070894991108700, -0.266119092331650540, -0.266167289006894240, -0.266215485016719710, -0.266263680361006450, -0.266311875039634440, +-0.266360069052482270, -0.266408262399430000, -0.266456455080357040, -0.266504647095143320, -0.266552838443667620, -0.266601029125809800, -0.266649219141449840, -0.266697408490466410, +-0.266745597172739430, -0.266793785188148500, -0.266841972536573550, -0.266890159217893160, -0.266938345231987450, -0.266986530578735840, -0.267034715258018310, -0.267082899269713630, +-0.267131082613701660, -0.267179265289861970, -0.267227447298074570, -0.267275628638218130, -0.267323809310172580, -0.267371989313817560, -0.267420168649032950, -0.267468347315697520, +-0.267516525313691190, -0.267564702642894000, -0.267612879303184610, -0.267661055294443060, -0.267709230616548830, -0.267757405269381970, -0.267805579252821170, -0.267853752566746370, +-0.267901925211037280, -0.267950097185573720, -0.267998268490234560, -0.268046439124899670, -0.268094609089448710, -0.268142778383761660, -0.268190947007717230, -0.268239114961195460, +-0.268287282244075890, -0.268335448856238500, -0.268383614797562060, -0.268431780067926620, -0.268479944667212140, -0.268528108595297410, -0.268576271852062400, -0.268624434437386650, +-0.268672596351150320, -0.268720757593232000, -0.268768918163511840, -0.268817078061869390, -0.268865237288184620, -0.268913395842336370, -0.268961553724204610, -0.269009710933668990, +-0.269057867470609500, -0.269106023334904910, -0.269154178526435250, -0.269202333045080180, -0.269250486890719680, -0.269298640063232560, -0.269346792562498830, -0.269394944388398060, +-0.269443095540810420, -0.269491246019614610, -0.269539395824690660, -0.269587544955918690, -0.269635693413177390, -0.269683841196346860, -0.269731988305306760, -0.269780134739937120, +-0.269828280500116650, -0.269876425585725550, -0.269924569996643330, -0.269972713732750170, -0.270020856793924740, -0.270068999180047230, -0.270117140890997140, -0.270165281926654680, +-0.270213422286898600, -0.270261561971608940, -0.270309700980665370, -0.270357839313948020, -0.270405976971335620, -0.270454113952708240, -0.270502250257946050, -0.270550385886927760, +-0.270598520839533560, -0.270646655115643010, -0.270694788715136300, -0.270742921637892150, -0.270791053883790710, -0.270839185452711630, -0.270887316344535000, -0.270935446559139700, +-0.270983576096405720, -0.271031704956212870, -0.271079833138441140, -0.271127960642969400, -0.271176087469677750, -0.271224213618445900, -0.271272339089153940, -0.271320463881680740, +-0.271368587995906350, -0.271416711431710920, -0.271464834188973270, -0.271512956267573550, -0.271561077667391400, -0.271609198388307050, -0.271657318430199250, -0.271705437792948150, +-0.271753556476433400, -0.271801674480535270, -0.271849791805132470, -0.271897908450105250, -0.271946024415333220, -0.271994139700696580, -0.272042254306074090, -0.272090368231346020, +-0.272138481476392080, -0.272186594041092300, -0.272234705925325620, -0.272282817128972180, -0.272330927651911690, -0.272379037494024310, -0.272427146655188910, -0.272475255135285640, +-0.272523362934194660, -0.272571470051794830, -0.272619576487966360, -0.272667682242588970, -0.272715787315542750, -0.272763891706706620, -0.272811995415960800, -0.272860098443184980, +-0.272908200788259340, -0.272956302451062780, -0.273004403431475470, -0.273052503729377120, -0.273100603344647970, -0.273148702277166870, -0.273196800526814050, -0.273244898093469190, +-0.273292994977012480, -0.273341091177322910, -0.273389186694280580, -0.273437281527765750, -0.273485375677657240, -0.273533469143835360, -0.273581561926179770, -0.273629654024570680, +-0.273677745438887070, -0.273725836169009030, -0.273773926214816440, -0.273822015576189460, -0.273870104253007010, -0.273918192245149350, -0.273966279552496140, -0.274014366174927690, +-0.274062452112322890, -0.274110537364561980, -0.274158621931524680, -0.274206705813091310, -0.274254789009140690, -0.274302871519553130, -0.274350953344208840, -0.274399034482986690, +-0.274447114935766960, -0.274495194702429500, -0.274543273782854420, -0.274591352176920770, -0.274639429884508680, -0.274687506905498090, -0.274735583239769100, -0.274783658887200740, +-0.274831733847673290, -0.274879808121066440, -0.274927881707260510, -0.274975954606134440, -0.275024026817568550, -0.275072098341442530, -0.275120169177636710, -0.275168239326030020, +-0.275216308786502720, -0.275264377558935120, -0.275312445643206120, -0.275360513039196010, -0.275408579746784620, -0.275456645765852210, -0.275504711096277780, -0.275552775737941570, +-0.275600839690723350, -0.275648902954503560, -0.275696965529161010, -0.275745027414576070, -0.275793088610628570, -0.275841149117198760, -0.275889208934165690, -0.275937268061409560, +-0.275985326498810250, -0.276033384246248070, -0.276081441303602020, -0.276129497670752340, -0.276177553347578930, -0.276225608333962040, -0.276273662629780700, -0.276321716234915250, +-0.276369769149245880, -0.276417821372651700, -0.276465872905012950, -0.276513923746209530, -0.276561973896121750, -0.276610023354628590, -0.276658072121610370, -0.276706120196946960, +-0.276754167580518680, -0.276802214272204530, -0.276850260271884860, -0.276898305579439560, -0.276946350194748890, -0.276994394117691940, -0.277042437348149040, -0.277090479886000000, +-0.277138521731125190, -0.277186562883403650, -0.277234603342715710, -0.277282643108941680, -0.277330682181960660, -0.277378720561652860, -0.277426758247898310, -0.277474795240577280, +-0.277522831539568860, -0.277570867144753320, -0.277618902056010640, -0.277666936273221090, -0.277714969796263810, -0.277763002625019070, -0.277811034759366860, -0.277859066199187490, +-0.277907096944360050, -0.277955126994764820, -0.278003156350281780, -0.278051185010791290, -0.278099212976172410, -0.278147240246305490, -0.278195266821070930, -0.278243292700347700, +-0.278291317884016290, -0.278339342371956620, -0.278387366164048970, -0.278435389260172470, -0.278483411660207510, -0.278531433364034020, -0.278579454371532420, -0.278627474682581700, +-0.278675494297062290, -0.278723513214854170, -0.278771531435837720, -0.278819548959891970, -0.278867565786897360, -0.278915581916733820, -0.278963597349281780, -0.279011612084420320, +-0.279059626122029840, -0.279107639461990240, -0.279155652104182030, -0.279203664048484230, -0.279251675294777290, -0.279299685842941570, -0.279347695692856220, -0.279395704844401630, +-0.279443713297457760, -0.279491721051905060, -0.279539728107622620, -0.279587734464490810, -0.279635740122389730, -0.279683745081199700, -0.279731749340799920, -0.279779752901070710, +-0.279827755761892170, -0.279875757923144620, -0.279923759384707260, -0.279971760146460520, -0.280019760208284400, -0.280067759570059250, -0.280115758231664290, -0.280163756192979950, +-0.280211753453886660, -0.280259750014263510, -0.280307745873991040, -0.280355741032949190, -0.280403735491018380, -0.280451729248077870, -0.280499722304007990, -0.280547714658688830, +-0.280595706312000760, -0.280643697263823040, -0.280691687514036060, -0.280739677062519900, -0.280787665909154940, -0.280835654053820380, -0.280883641496396660, -0.280931628236763880, +-0.280979614274802450, -0.281027599610391590, -0.281075584243411670, -0.281123568173743290, -0.281171551401265480, -0.281219533925858860, -0.281267515747403330, -0.281315496865779500, +-0.281363477280866470, -0.281411456992544770, -0.281459436000694450, -0.281507414305195940, -0.281555391905928430, -0.281603368802772480, -0.281651344995608120, -0.281699320484315780, +-0.281747295268774730, -0.281795269348865450, -0.281843242724468030, -0.281891215395462860, -0.281939187361729290, -0.281987158623147720, -0.282035129179598660, -0.282083099030961400, +-0.282131068177116360, -0.282179036617943630, -0.282227004353323820, -0.282274971383136010, -0.282322937707260750, -0.282370903325578180, -0.282418868237968750, -0.282466832444311760, +-0.282514795944487700, -0.282562758738376610, -0.282610720825859030, -0.282658682206814280, -0.282706642881122790, -0.282754602848664720, -0.282802562109320530, -0.282850520662969510, +-0.282898478509492230, -0.282946435648768760, -0.282994392080679560, -0.283042347805104010, -0.283090302821922550, -0.283138257131015810, -0.283186210732262970, -0.283234163625544600, +-0.283282115810740810, -0.283330067287732190, -0.283378018056397950, -0.283425968116618690, -0.283473917468274490, -0.283521866111245970, -0.283569814045412320, -0.283617761270654080, +-0.283665707786851520, -0.283713653593885060, -0.283761598691634090, -0.283809543079979080, -0.283857486758800240, -0.283905429727978110, -0.283953371987391960, -0.284001313536922370, +-0.284049254376449960, -0.284097194505853970, -0.284145133925015000, -0.284193072633813220, -0.284241010632129140, -0.284288947919842110, -0.284336884496832750, -0.284384820362981130, +-0.284432755518167930, -0.284480689962272380, -0.284528623695175120, -0.284576556716756300, -0.284624489026896520, -0.284672420625475100, -0.284720351512372570, -0.284768281687469200, +-0.284816211150645590, -0.284864139901781000, -0.284912067940756020, -0.284959995267451360, -0.285007921881746230, -0.285055847783521330, -0.285103772972656820, -0.285151697449033290, +-0.285199621212530060, -0.285247544263027790, -0.285295466600406720, -0.285343388224547360, -0.285391309135329060, -0.285439229332632550, -0.285487148816337970, -0.285535067586325910, +-0.285582985642475750, -0.285630902984668140, -0.285678819612783300, -0.285726735526701800, -0.285774650726303090, -0.285822565211467710, -0.285870478982075900, -0.285918392038008340, +-0.285966304379144390, -0.286014216005364640, -0.286062126916549810, -0.286110037112579210, -0.286157946593333550, -0.286205855358693030, -0.286253763408538250, -0.286301670742748650, +-0.286349577361204920, -0.286397483263787170, -0.286445388450376200, -0.286493292920851290, -0.286541196675093200, -0.286589099712982080, -0.286637002034398620, -0.286684903639222280, +-0.286732804527333630, -0.286780704698613000, -0.286828604152941040, -0.286876502890197120, -0.286924400910261950, -0.286972298213016230, -0.287020194798339350, -0.287068090666111940, +-0.287115985816214280, -0.287163880248527130, -0.287211773962929850, -0.287259666959303110, -0.287307559237527210, -0.287355450797482870, -0.287403341639049460, -0.287451231762107680, +-0.287499121166537810, -0.287547009852220590, -0.287594897819035410, -0.287642785066862970, -0.287690671595583590, -0.287738557405077980, -0.287786442495225500, -0.287834326865906930, +-0.287882210517002970, -0.287930093448393100, -0.287977975659957920, -0.288025857151577860, -0.288073737923133570, -0.288121617974504530, -0.288169497305571400, -0.288217375916214550, +-0.288265253806314680, -0.288313130975751230, -0.288361007424404960, -0.288408883152156240, -0.288456758158885660, -0.288504632444472770, -0.288552506008798340, -0.288600378851742610, +-0.288648250973186360, -0.288696122373009070, -0.288743993051091440, -0.288791863007314300, -0.288839732241557070, -0.288887600753700460, -0.288935468543624900, -0.288983335611211090, +-0.289031201956338520, -0.289079067578887900, -0.289126932478739660, -0.289174796655774500, -0.289222660109871910, -0.289270522840912700, -0.289318384848777140, -0.289366246133346050, +-0.289414106694498960, -0.289461966532116590, -0.289509825646079240, -0.289557684036267860, -0.289605541702561750, -0.289653398644841850, -0.289701254862988420, -0.289749110356882280, +-0.289796965126402960, -0.289844819171431180, -0.289892672491847800, -0.289940525087532370, -0.289988376958365550, -0.290036228104227860, -0.290084078524999960, -0.290131928220561440, +-0.290179777190793130, -0.290227625435575400, -0.290275472954789000, -0.290323319748313490, -0.290371165816029670, -0.290419011157817930, -0.290466855773559130, -0.290514699663132760, +-0.290562542826419580, -0.290610385263300130, -0.290658226973655060, -0.290706067957364030, -0.290753908214307850, -0.290801747744367340, -0.290849586547421990, -0.290897424623352660, +-0.290945261972039850, -0.290993098593364250, -0.291040934487205470, -0.291088769653444380, -0.291136604091961350, -0.291184437802637250, -0.291232270785351630, -0.291280103039985310, +-0.291327934566418760, -0.291375765364532800, -0.291423595434206980, -0.291471424775322170, -0.291519253387758800, -0.291567081271397740, -0.291614908426118590, -0.291662734851802110, +-0.291710560548329220, -0.291758385515579530, -0.291806209753433850, -0.291854033261772670, -0.291901856040476800, -0.291949678089425900, -0.291997499408500780, -0.292045319997581930, +-0.292093139856550170, -0.292140958985285190, -0.292188777383667770, -0.292236595051578400, -0.292284411988897990, -0.292332228195506140, -0.292380043671283670, -0.292427858416111130, +-0.292475672429869380, -0.292523485712438020, -0.292571298263697930, -0.292619110083529590, -0.292666921171813920, -0.292714731528430470, -0.292762541153260280, -0.292810350046184110, +-0.292858158207081610, -0.292905965635833760, -0.292953772332321010, -0.293001578296424200, -0.293049383528023070, -0.293097188026998470, -0.293144991793230840, -0.293192794826601210, +-0.293240597126989190, -0.293288398694275640, -0.293336199528341110, -0.293383999629066470, -0.293431798996331480, -0.293479597630016910, -0.293527395530003400, -0.293575192696171830, +-0.293622989128401790, -0.293670784826574330, -0.293718579790570370, -0.293766374020269450, -0.293814167515552670, -0.293861960276300400, -0.293909752302393690, -0.293957543593712180, +-0.294005334150136800, -0.294053123971548090, -0.294100913057827040, -0.294148701408853240, -0.294196489024507680, -0.294244275904670890, -0.294292062049223870, -0.294339847458046260, +-0.294387632131018980, -0.294435416068022650, -0.294483199268938230, -0.294530981733645390, -0.294578763462025050, -0.294626544453958250, -0.294674324709324700, -0.294722104228005320, +-0.294769883009880660, -0.294817661054831700, -0.294865438362738210, -0.294913214933481100, -0.294960990766940930, -0.295008765862998730, -0.295056540221534210, -0.295104313842428300, +-0.295152086725561650, -0.295199858870815180, -0.295247630278068660, -0.295295400947203020, -0.295343170878098920, -0.295390940070637320, -0.295438708524697890, -0.295486476240161780, +-0.295534243216909850, -0.295582009454821880, -0.295629774953778900, -0.295677539713661450, -0.295725303734350630, -0.295773067015726090, -0.295820829557668920, -0.295868591360059610, +-0.295916352422779310, -0.295964112745707660, -0.296011872328725780, -0.296059631171714190, -0.296107389274553930, -0.296155146637124780, -0.296202903259307760, -0.296250659140983530, +-0.296298414282033020, -0.296346168682336040, -0.296393922341773700, -0.296441675260226520, -0.296489427437575560, -0.296537178873700620, -0.296584929568482760, -0.296632679521803000, +-0.296680428733541060, -0.296728177203578080, -0.296775924931794670, -0.296823671918071850, -0.296871418162289460, -0.296919163664328520, -0.296966908424069640, -0.297014652441393910, +-0.297062395716181150, -0.297110138248312390, -0.297157880037668300, -0.297205621084129960, -0.297253361387577080, -0.297301100947890810, -0.297348839764951800, -0.297396577838641150, +-0.297444315168838570, -0.297492051755425260, -0.297539787598282200, -0.297587522697289280, -0.297635257052327520, -0.297682990663277640, -0.297730723530020670, -0.297778455652436550, +-0.297826187030406200, -0.297873917663810440, -0.297921647552530310, -0.297969376696445580, -0.298017105095437440, -0.298064832749386550, -0.298112559658174010, -0.298160285821679640, +-0.298208011239784580, -0.298255735912369420, -0.298303459839315390, -0.298351183020502290, -0.298398905455811210, -0.298446627145123320, -0.298494348088318430, -0.298542068285277680, +-0.298589787735881740, -0.298637506440011750, -0.298685224397547580, -0.298732941608370330, -0.298780658072360760, -0.298828373789399910, -0.298876088759367780, -0.298923802982145380, +-0.298971516457613500, -0.299019229185653210, -0.299066941166144460, -0.299114652398968340, -0.299162362884005610, -0.299210072621137410, -0.299257781610243580, -0.299305489851205250, +-0.299353197343903250, -0.299400904088218680, -0.299448610084031450, -0.299496315331222620, -0.299544019829673490, -0.299591723579263890, -0.299639426579874910, -0.299687128831387430, +-0.299734830333682530, -0.299782531086640160, -0.299830231090141400, -0.299877930344067120, -0.299925628848298430, -0.299973326602715200, -0.300021023607198680, -0.300068719861629580, +-0.300116415365889180, -0.300164110119857220, -0.300211804123415080, -0.300259497376443360, -0.300307189878823320, -0.300354881630434940, -0.300402572631159330, -0.300450262880877670, +-0.300497952379469970, -0.300545641126817360, -0.300593329122800680, -0.300641016367301120, -0.300688702860198550, -0.300736388601374250, -0.300784073590708970, -0.300831757828083910, +-0.300879441313379010, -0.300927124046475590, -0.300974806027254290, -0.301022487255596440, -0.301070167731381900, -0.301117847454491990, -0.301165526424807430, -0.301213204642209520, +-0.301260882106578140, -0.301308558817794560, -0.301356234775740030, -0.301403909980294430, -0.301451584431339130, -0.301499258128754830, -0.301546931072422810, -0.301594603262223040, +-0.301642274698036730, -0.301689945379744750, -0.301737615307228370, -0.301785284480367510, -0.301832952899043440, -0.301880620563136970, -0.301928287472529370, -0.301975953627100670, +-0.302023619026732030, -0.302071283671304370, -0.302118947560698900, -0.302166610694795670, -0.302214273073475930, -0.302261934696620880, -0.302309595564110630, -0.302357255675826330, +-0.302404915031648960, -0.302452573631459660, -0.302500231475138550, -0.302547888562566810, -0.302595544893625390, -0.302643200468195480, -0.302690855286157190, -0.302738509347391770, +-0.302786162651780040, -0.302833815199203380, -0.302881466989541710, -0.302929118022676410, -0.302976768298488300, -0.303024417816858680, -0.303072066577667610, -0.303119714580796340, +-0.303167361826125860, -0.303215008313537320, -0.303262654042910860, -0.303310299014127760, -0.303357943227069380, -0.303405586681615660, -0.303453229377648010, -0.303500871315047270, +-0.303548512493694740, -0.303596152913470580, -0.303643792574256000, -0.303691431475931920, -0.303739069618379710, -0.303786707001479420, -0.303834343625112360, -0.303881979489159400, +-0.303929614593501930, -0.303977248938020030, -0.304024882522594960, -0.304072515347107720, -0.304120147411439610, -0.304167778715470680, -0.304215409259082360, -0.304263039042155900, +-0.304310668064571410, -0.304358296326210250, -0.304405923826953360, -0.304453550566682110, -0.304501176545276530, -0.304548801762618000, -0.304596426218587510, -0.304644049913066370, +-0.304691672845934620, -0.304739295017073750, -0.304786916426364630, -0.304834537073688630, -0.304882156958925900, -0.304929776081957700, -0.304977394442665140, -0.305025012040929470, +-0.305072628876630890, -0.305120244949650680, -0.305167860259870300, -0.305215474807169870, -0.305263088591430750, -0.305310701612533930, -0.305358313870360720, -0.305405925364791330, +-0.305453536095707130, -0.305501146062989120, -0.305548755266518590, -0.305596363706175820, -0.305643971381842130, -0.305691578293398490, -0.305739184440726340, -0.305786789823705770, +-0.305834394442218270, -0.305881998296144760, -0.305929601385366680, -0.305977203709764220, -0.306024805269218710, -0.306072406063611190, -0.306120006092823080, -0.306167605356734480, +-0.306215203855226940, -0.306262801588181810, -0.306310398555479200, -0.306357994757000650, -0.306405590192627090, -0.306453184862239990, -0.306500778765719460, -0.306548371902947040, +-0.306595964273803650, -0.306643555878170770, -0.306691146715928620, -0.306738736786958570, -0.306786326091141700, -0.306833914628359410, -0.306881502398491930, -0.306929089401420720, +-0.306976675637026740, -0.307024261105191540, -0.307071845805795220, -0.307119429738719310, -0.307167012903845240, -0.307214595301053220, -0.307262176930224670, -0.307309757791240760, +-0.307357337883982780, -0.307404917208331130, -0.307452495764167110, -0.307500073551371880, -0.307547650569826910, -0.307595226819412370, -0.307642802300009790, -0.307690377011500150, +-0.307737950953765050, -0.307785524126684580, -0.307833096530140350, -0.307880668164013380, -0.307928239028185170, -0.307975809122535920, -0.308023378446947160, -0.308070947001300330, +-0.308118514785475750, -0.308166081799354900, -0.308213648042818810, -0.308261213515749030, -0.308308778218025830, -0.308356342149530670, -0.308403905310144610, -0.308451467699749240, +-0.308499029318224820, -0.308546590165452770, -0.308594150241314260, -0.308641709545690810, -0.308689268078462640, -0.308736825839511290, -0.308784382828717900, -0.308831939045964010, +-0.308879494491129780, -0.308927049164096860, -0.308974603064746280, -0.309022156192959640, -0.309069708548617210, -0.309117260131600460, -0.309164810941791050, -0.309212360979069120, +-0.309259910243316340, -0.309307458734413730, -0.309355006452242950, -0.309402553396684210, -0.309450099567619100, -0.309497644964928710, -0.309545189588494640, -0.309592733438197150, +-0.309640276513917900, -0.309687818815537920, -0.309735360342938800, -0.309782901096000870, -0.309830441074605670, -0.309877980278634390, -0.309925518707968580, -0.309973056362488510, +-0.310020593242075870, -0.310068129346612100, -0.310115664675977620, -0.310163199230053980, -0.310210733008722370, -0.310258266011864290, -0.310305798239360160, -0.310353329691091530, +-0.310400860366939590, -0.310448390266785890, -0.310495919390510800, -0.310543447737995910, -0.310590975309122440, -0.310638502103771920, -0.310686028121824720, -0.310733553363162440, +-0.310781077827666290, -0.310828601515217850, -0.310876124425697510, -0.310923646558986850, -0.310971167914967540, -0.311018688493519820, -0.311066208294525410, -0.311113727317865460, +-0.311161245563421670, -0.311208763031074250, -0.311256279720705020, -0.311303795632195010, -0.311351310765425990, -0.311398825120278280, -0.311446338696633460, -0.311493851494372810, +-0.311541363513377970, -0.311588874753529250, -0.311636385214708380, -0.311683894896796540, -0.311731403799675400, -0.311778911923225320, -0.311826419267327960, -0.311873925831864960, +-0.311921431616716760, -0.311968936621764950, -0.312016440846890840, -0.312063944291975980, -0.312111446956900910, -0.312158948841547160, -0.312206449945796050, -0.312253950269529290, +-0.312301449812627200, -0.312348948574971470, -0.312396446556443390, -0.312443943756924580, -0.312491440176295490, -0.312538935814437870, -0.312586430671232820, -0.312633924746562150, +-0.312681418040306300, -0.312728910552346860, -0.312776402282565150, -0.312823893230842810, -0.312871383397060390, -0.312918872781099480, -0.312966361382841780, -0.313013849202167790, +-0.313061336238959150, -0.313108822493097240, -0.313156307964463640, -0.313203792652938850, -0.313251276558404570, -0.313298759680742110, -0.313346242019833190, -0.313393723575558230, +-0.313441204347798930, -0.313488684336436670, -0.313536163541353050, -0.313583641962428660, -0.313631119599545150, -0.313678596452583890, -0.313726072521426480, -0.313773547805953510, +-0.313821022306046690, -0.313868496021587670, -0.313915968952457050, -0.313963441098536470, -0.314010912459707300, -0.314058383035851260, -0.314105852826848890, -0.314153321832581820, +-0.314200790052931500, -0.314248257487779630, -0.314295724137006630, -0.314343190000494380, -0.314390655078124140, -0.314438119369777670, -0.314485582875335510, -0.314533045594679370, +-0.314580507527690620, -0.314627968674251020, -0.314675429034241060, -0.314722888607542550, -0.314770347394037200, -0.314817805393605600, -0.314865262606129510, -0.314912719031490210, +-0.314960174669569600, -0.315007629520248080, -0.315055083583407500, -0.315102536858929190, -0.315149989346694970, -0.315197441046585370, -0.315244891958482150, -0.315292342082266750, +-0.315339791417820870, -0.315387239965025100, -0.315434687723761210, -0.315482134693910620, -0.315529580875355150, -0.315577026267975240, -0.315624470871652800, -0.315671914686269210, +-0.315719357711706230, -0.315766799947844400, -0.315814241394565600, -0.315861682051751640, -0.315909121919283000, -0.315956560997041610, -0.316003999284908800, -0.316051436782766370, +-0.316098873490494980, -0.316146309407976390, -0.316193744535092030, -0.316241178871723700, -0.316288612417752020, -0.316336045173058860, -0.316383477137525520, -0.316430908311033930, +-0.316478338693464640, -0.316525768284699530, -0.316573197084620010, -0.316620625093107900, -0.316668052310043750, -0.316715478735309530, -0.316762904368787010, -0.316810329210356840, +-0.316857753259900840, -0.316905176517300440, -0.316952598982437550, -0.317000020655192670, -0.317047441535447780, -0.317094861623084310, -0.317142280917984080, -0.317189699420027730, +-0.317237117129097130, -0.317284534045073780, -0.317331950167839490, -0.317379365497274860, -0.317426780033261860, -0.317474193775681920, -0.317521606724416870, -0.317569018879347410, +-0.317616430240355410, -0.317663840807322740, -0.317711250580130060, -0.317758659558659280, -0.317806067742791800, -0.317853475132409580, -0.317900881727393280, -0.317948287527624770, +-0.317995692532985540, -0.318043096743357460, -0.318090500158621280, -0.318137902778658780, -0.318185304603351590, -0.318232705632581550, -0.318280105866229290, -0.318327505304176750, +-0.318374903946305520, -0.318422301792497360, -0.318469698842633100, -0.318517095096594590, -0.318564490554263720, -0.318611885215521250, -0.318659279080249050, -0.318706672148328600, +-0.318754064419641940, -0.318801455894069720, -0.318848846571493820, -0.318896236451795820, -0.318943625534857610, -0.318991013820560000, -0.319038401308784800, -0.319085787999413560, +-0.319133173892328310, -0.319180558987409770, -0.319227943284539740, -0.319275326783599880, -0.319322709484472110, -0.319370091387037200, -0.319417472491177020, -0.319464852796773170, +-0.319512232303707620, -0.319559611011861030, -0.319606988921115440, -0.319654366031352780, -0.319701742342453800, -0.319749117854300490, -0.319796492566774340, -0.319843866479757380, +-0.319891239593130370, -0.319938611906775250, -0.319985983420573550, -0.320033354134407370, -0.320080724048157410, -0.320128093161705600, -0.320175461474933530, -0.320222828987723250, +-0.320270195699955460, -0.320317561611512200, -0.320364926722275070, -0.320412291032125980, -0.320459654540945770, -0.320507017248616470, -0.320554379155020000, -0.320601740260037130, +-0.320649100563549950, -0.320696460065440000, -0.320743818765589380, -0.320791176663878740, -0.320838533760190170, -0.320885890054405270, -0.320933245546406010, -0.320980600236073280, +-0.321027954123289050, -0.321075307207934920, -0.321122659489892940, -0.321170010969043910, -0.321217361645269820, -0.321264711518452320, -0.321312060588473500, -0.321359408855214080, +-0.321406756318556140, -0.321454102978381730, -0.321501448834571660, -0.321548793887007970, -0.321596138135572310, -0.321643481580146660, -0.321690824220611960, -0.321738166056850130, +-0.321785507088742930, -0.321832847316172340, -0.321880186739019300, -0.321927525357165730, -0.321974863170493340, -0.322022200178884220, -0.322069536382219190, -0.322116871780380290, +-0.322164206373249270, -0.322211540160708130, -0.322258873142637680, -0.322306205318920070, -0.322353536689436950, -0.322400867254070410, -0.322448197012701330, -0.322495525965211690, +-0.322542854111483700, -0.322590181451398120, -0.322637507984837090, -0.322684833711682330, -0.322732158631815870, -0.322779482745118580, -0.322826806051472630, -0.322874128550759590, +-0.322921450242861730, -0.322968771127659760, -0.323016091205035880, -0.323063410474871800, -0.323110728937049620, -0.323158046591450140, -0.323205363437955580, -0.323252679476447650, +-0.323299994706808370, -0.323347309128918740, -0.323394622742660790, -0.323441935547916730, -0.323489247544567430, -0.323536558732494980, -0.323583869111581160, -0.323631178681708040, +-0.323678487442756620, -0.323725795394608940, -0.323773102537146750, -0.323820408870252260, -0.323867714393806350, -0.323915019107691100, -0.323962323011788340, -0.324009626105980160, +-0.324056928390147550, -0.324104229864172530, -0.324151530527936990, -0.324198830381323080, -0.324246129424211600, -0.324293427656484830, -0.324340725078024920, -0.324388021688712780, +-0.324435317488430570, -0.324482612477060120, -0.324529906654483500, -0.324577200020581710, -0.324624492575236900, -0.324671784318330880, -0.324719075249745800, -0.324766365369362650, +-0.324813654677063520, -0.324860943172730340, -0.324908230856245150, -0.324955517727488990, -0.325002803786344050, -0.325050089032692110, -0.325097373466415320, -0.325144657087394710, +-0.325191939895512430, -0.325239221890650740, -0.325286503072690580, -0.325333783441514200, -0.325381062997003310, -0.325428341739040170, -0.325475619667505770, -0.325522896782282360, +-0.325570173083251650, -0.325617448570295950, -0.325664723243296260, -0.325711997102134660, -0.325759270146693150, -0.325806542376853860, -0.325853813792497780, -0.325901084393507180, +-0.325948354179763870, -0.325995623151150100, -0.326042891307546820, -0.326090158648836340, -0.326137425174900460, -0.326184690885621460, -0.326231955780880270, -0.326279219860559240, +-0.326326483124540550, -0.326373745572705210, -0.326421007204935550, -0.326468268021113340, -0.326515528021120880, -0.326562787204839220, -0.326610045572150560, -0.326657303122936780, +-0.326704559857080190, -0.326751815774461770, -0.326799070874963790, -0.326846325158468120, -0.326893578624857130, -0.326940831274011690, -0.326988083105814230, -0.327035334120146510, +-0.327082584316890910, -0.327129833695928460, -0.327177082257141370, -0.327224330000412010, -0.327271576925621420, -0.327318823032651920, -0.327366068321385320, -0.327413312791703940, +-0.327460556443488930, -0.327507799276622490, -0.327555041290986500, -0.327602282486463390, -0.327649522862934140, -0.327696762420281120, -0.327744001158386140, -0.327791239077131590, +-0.327838476176398550, -0.327885712456069290, -0.327932947916025730, -0.327980182556150250, -0.328027416376323930, -0.328074649376429000, -0.328121881556347920, -0.328169112915961680, +-0.328216343455152660, -0.328263573173802840, -0.328310802071794420, -0.328358030149008610, -0.328405257405327780, -0.328452483840633750, -0.328499709454808940, -0.328546934247734400, +-0.328594158219292550, -0.328641381369365330, -0.328688603697835090, -0.328735825204582890, -0.328783045889491090, -0.328830265752441730, -0.328877484793317130, -0.328924703011998330, +-0.328971920408367870, -0.329019136982307560, -0.329066352733699830, -0.329113567662425780, -0.329160781768367830, -0.329207995051408350, -0.329255207511428450, -0.329302419148310540, +-0.329349629961936560, -0.329396839952188940, -0.329444049118948810, -0.329491257462098560, -0.329538464981520170, -0.329585671677096010, -0.329632877548707240, -0.329680082596236320, +-0.329727286819565200, -0.329774490218576240, -0.329821692793150660, -0.329868894543170870, -0.329916095468518800, -0.329963295569076940, -0.330010494844726390, -0.330057693295349620, +-0.330104890920829060, -0.330152087721045820, -0.330199283695882360, -0.330246478845220740, -0.330293673168943260, -0.330340866666931240, -0.330388059339067060, -0.330435251185232700, +-0.330482442205310640, -0.330529632399182040, -0.330576821766729370, -0.330624010307834670, -0.330671198022380320, -0.330718384910247630, -0.330765570971318920, -0.330812756205476290, +-0.330859940612602150, -0.330907124192577780, -0.330954306945285600, -0.331001488870608100, -0.331048669968426410, -0.331095850238623090, -0.331143029681080110, -0.331190208295679970, +-0.331237386082303910, -0.331284563040834420, -0.331331739171153440, -0.331378914473143600, -0.331426088946686010, -0.331473262591663210, -0.331520435407957280, -0.331567607395450660, +-0.331614778554024600, -0.331661948883561600, -0.331709118383943740, -0.331756287055053500, -0.331803454896772100, -0.331850621908982070, -0.331897788091565890, -0.331944953444404890, +-0.331992117967381430, -0.332039281660377720, -0.332086444523276180, -0.332133606555958140, -0.332180767758306070, -0.332227928130202130, -0.332275087671528750, -0.332322246382167230, +-0.332369404262000070, -0.332416561310909460, -0.332463717528777850, -0.332510872915486480, -0.332558027470917950, -0.332605181194954360, -0.332652334087478240, -0.332699486148370860, +-0.332746637377514750, -0.332793787774792070, -0.332840937340085350, -0.332888086073275860, -0.332935233974246130, -0.332982381042878750, -0.333029527279054990, -0.333076672682657450, +-0.333123817253568210, -0.333170960991669820, -0.333218103896843640, -0.333265245968972170, -0.333312387207937600, -0.333359527613622470, -0.333406667185908110, -0.333453805924677100, +-0.333500943829811550, -0.333548080901194090, -0.333595217138705990, -0.333642352542229850, -0.333689487111647810, -0.333736620846842470, -0.333783753747695200, -0.333830885814088480, +-0.333878017045905030, -0.333925147443026090, -0.333972277005334270, -0.334019405732711830, -0.334066533625041180, -0.334113660682203880, -0.334160786904082350, -0.334207912290558910, +-0.334255036841516080, -0.334302160556835260, -0.334349283436399030, -0.334396405480089590, -0.334443526687789540, -0.334490647059380250, -0.334537766594744380, -0.334584885293764070, +-0.334632003156321970, -0.334679120182299390, -0.334726236371579110, -0.334773351724043600, -0.334820466239574290, -0.334867579918053830, -0.334914692759364420, -0.334961804763388660, +-0.335008915930008030, -0.335056026259105080, -0.335103135750562050, -0.335150244404261610, -0.335197352220085180, -0.335244459197915350, -0.335291565337634320, -0.335338670639124870, +-0.335385775102268250, -0.335432878726947270, -0.335479981513044030, -0.335527083460441300, -0.335574184569020380, -0.335621284838664050, -0.335668384269254490, -0.335715482860674430, +-0.335762580612805230, -0.335809677525529540, -0.335856773598730120, -0.335903868832288290, -0.335950963226086810, -0.335998056780007940, -0.336045149493934380, -0.336092241367747460, +-0.336139332401329980, -0.336186422594564160, -0.336233511947332700, -0.336280600459517020, -0.336327688130999840, -0.336374774961663460, -0.336421860951390590, -0.336468946100062620, +-0.336516030407562280, -0.336563113873771860, -0.336610196498574040, -0.336657278281850380, -0.336704359223483520, -0.336751439323356110, -0.336798518581349740, -0.336845596997347060, +-0.336892674571230400, -0.336939751302882450, -0.336986827192184760, -0.337033902239019910, -0.337080976443270400, -0.337128049804818810, -0.337175122323546680, -0.337222193999336730, +-0.337269264832071310, -0.337316334821633200, -0.337363403967903760, -0.337410472270765820, -0.337457539730101730, -0.337504606345794210, -0.337551672117724740, -0.337598737045776090, +-0.337645801129831000, -0.337692864369771030, -0.337739926765478870, -0.337786988316836900, -0.337834049023727880, -0.337881108886033340, -0.337928167903636000, -0.337975226076418220, +-0.338022283404262820, -0.338069339887051350, -0.338116395524666440, -0.338163450316990580, -0.338210504263906530, -0.338257557365295780, -0.338304609621041090, -0.338351661031024930, +-0.338398711595130020, -0.338445761313237950, -0.338492810185231420, -0.338539858210993310, -0.338586905390405150, -0.338633951723349700, -0.338680997209709400, -0.338728041849367000, +-0.338775085642204100, -0.338822128588103460, -0.338869170686947550, -0.338916211938619090, -0.338963252342999680, -0.339010291899972120, -0.339057330609418840, -0.339104368471222720, +-0.339151405485265180, -0.339198441651429150, -0.339245476969597000, -0.339292511439651610, -0.339339545061474510, -0.339386577834948580, -0.339433609759956180, -0.339480640836380130, +-0.339527671064102090, -0.339574700443004920, -0.339621728972971330, -0.339668756653883070, -0.339715783485622870, -0.339762809468073250, -0.339809834601117020, -0.339856858884635790, +-0.339903882318512370, -0.339950904902629300, -0.339997926636869340, -0.340044947521114190, -0.340091967555246620, -0.340138986739149160, -0.340186005072704630, -0.340233022555794740, +-0.340280039188302240, -0.340327054970109620, -0.340374069901099810, -0.340421083981154390, -0.340468097210156310, -0.340515109587988360, -0.340562121114532210, -0.340609131789670780, +-0.340656141613286500, -0.340703150585262290, -0.340750158705479810, -0.340797165973821930, -0.340844172390171120, -0.340891177954410320, -0.340938182666421120, -0.340985186526086450, +-0.341032189533288840, -0.341079191687911230, -0.341126192989835150, -0.341173193438943590, -0.341220193035119080, -0.341267191778244490, -0.341314189668201540, -0.341361186704873030, +-0.341408182888142060, -0.341455178217890180, -0.341502172694000350, -0.341549166316355070, -0.341596159084837310, -0.341643150999328740, -0.341690142059712320, -0.341737132265870490, +-0.341784121617686290, -0.341831110115041360, -0.341878097757818630, -0.341925084545900650, -0.341972070479170390, -0.342019055557509550, -0.342066039780801080, -0.342113023148927500, +-0.342160005661771790, -0.342206987319215620, -0.342253968121142000, -0.342300948067433440, -0.342347927157972960, -0.342394905392642220, -0.342441882771324200, -0.342488859293901940, +-0.342535834960257080, -0.342582809770272670, -0.342629783723831180, -0.342676756820815720, -0.342723729061107870, -0.342770700444590740, -0.342817670971146850, -0.342864640640659190, +-0.342911609453009580, -0.342958577408080890, -0.343005544505755710, -0.343052510745917140, -0.343099476128446880, -0.343146440653227910, -0.343193404320142890, -0.343240367129074740, +-0.343287329079905220, -0.343334290172517430, -0.343381250406794290, -0.343428209782617620, -0.343475168299870460, -0.343522125958435340, -0.343569082758195370, -0.343616038699032230, +-0.343662993780828980, -0.343709948003468270, -0.343756901366833120, -0.343803853870805310, -0.343850805515267810, -0.343897756300103330, -0.343944706225194910, -0.343991655290424250, +-0.344038603495674500, -0.344085550840828200, -0.344132497325768450, -0.344179442950377060, -0.344226387714537060, -0.344273331618131450, -0.344320274661042150, -0.344367216843152190, +-0.344414158164344120, -0.344461098624501140, -0.344508038223504950, -0.344554976961238660, -0.344601914837584960, -0.344648851852426890, -0.344695788005646210, -0.344742723297126130, +-0.344789657726749240, -0.344836591294398590, -0.344883523999956030, -0.344930455843304730, -0.344977386824327210, -0.345024316942906690, -0.345071246198924930, -0.345118174592265130, +-0.345165102122810210, -0.345212028790442160, -0.345258954595044080, -0.345305879536498550, -0.345352803614688790, -0.345399726829496550, -0.345446649180805030, -0.345493570668496900, +-0.345540491292455230, -0.345587411052561910, -0.345634329948700080, -0.345681247980752390, -0.345728165148602050, -0.345775081452130870, -0.345821996891221950, -0.345868911465758100, +-0.345915825175622300, -0.345962738020696600, -0.346009650000864030, -0.346056561116007360, -0.346103471366009660, -0.346150380750752880, -0.346197289270120110, -0.346244196923994610, +-0.346291103712258130, -0.346338009634793940, -0.346384914691484750, -0.346431818882213640, -0.346478722206862540, -0.346525624665314670, -0.346572526257452770, -0.346619426983159950, +-0.346666326842318130, -0.346713225834810510, -0.346760123960519810, -0.346807021219329210, -0.346853917611120670, -0.346900813135777310, -0.346947707793181900, -0.346994601583217710, +-0.347041494505766550, -0.347088386560711670, -0.347135277747936180, -0.347182168067322160, -0.347229057518752660, -0.347275946102110540, -0.347322833817279020, -0.347369720664139960, +-0.347416606642576560, -0.347463491752471710, -0.347510375993708490, -0.347557259366168940, -0.347604141869736260, -0.347651023504293170, -0.347697904269722970, -0.347744784165907590, +-0.347791663192730300, -0.347838541350073800, -0.347885418637821350, -0.347932295055854990, -0.347979170604057860, -0.348026045282313180, -0.348072919090503030, -0.348119792028510570, +-0.348166664096218600, -0.348213535293510460, -0.348260405620268000, -0.348307275076374550, -0.348354143661712910, -0.348401011376166300, -0.348447878219616760, -0.348494744191947540, +-0.348541609293041450, -0.348588473522781770, -0.348635336881050470, -0.348682199367730820, -0.348729060982705670, -0.348775921725858310, -0.348822781597070750, -0.348869640596226220, +-0.348916498723207570, -0.348963355977898070, -0.349010212360179760, -0.349057067869935960, -0.349103922507049910, -0.349150776271403620, -0.349197629162880390, -0.349244481181363090, +-0.349291332326734980, -0.349338182598878170, -0.349385031997675840, -0.349431880523011000, -0.349478728174766830, -0.349525574952825440, -0.349572420857070130, -0.349619265887383730, +-0.349666110043649610, -0.349712953325749810, -0.349759795733567580, -0.349806637266985910, -0.349853477925888000, -0.349900317710156060, -0.349947156619673240, -0.349993994654323020, +-0.350040831813987370, -0.350087668098549630, -0.350134503507892710, -0.350181338041899990, -0.350228171700453450, -0.350275004483436510, -0.350321836390732110, -0.350368667422223450, +-0.350415497577792780, -0.350462326857323310, -0.350509155260698040, -0.350555982787800310, -0.350602809438512190, -0.350649635212717080, -0.350696460110297810, -0.350743284131137870, +-0.350790107275119280, -0.350836929542125420, -0.350883750932039720, -0.350930571444744150, -0.350977391080122160, -0.351024209838056710, -0.351071027718431130, -0.351117844721127560, +-0.351164660846029430, -0.351211476093019610, -0.351258290461981540, -0.351305103952797290, -0.351351916565350310, -0.351398728299523510, -0.351445539155200330, -0.351492349132262900, +-0.351539158230594560, -0.351585966450078340, -0.351632773790597650, -0.351679580252034550, -0.351726385834272510, -0.351773190537194970, -0.351819994360684010, -0.351866797304623060, +-0.351913599368895100, -0.351960400553383620, -0.352007200857970660, -0.352054000282539750, -0.352100798826973820, -0.352147596491156290, -0.352194393274969320, -0.352241189178296440, +-0.352287984201020530, -0.352334778343025120, -0.352381571604192310, -0.352428363984405630, -0.352475155483548020, -0.352521946101502890, -0.352568735838152510, -0.352615524693380310, +-0.352662312667069270, -0.352709099759102860, -0.352755885969363300, -0.352802671297734020, -0.352849455744098480, -0.352896239308338850, -0.352943021990338670, -0.352989803789980960, +-0.353036584707149100, -0.353083364741725360, -0.353130143893593260, -0.353176922162635740, -0.353223699548736390, -0.353270476051777360, -0.353317251671642070, -0.353364026408213740, +-0.353410800261375720, -0.353457573231010290, -0.353504345317000920, -0.353551116519230710, -0.353597886837583090, -0.353644656271940360, -0.353691424822186020, -0.353738192488203480, +-0.353784959269875080, -0.353831725167084280, -0.353878490179714120, -0.353925254307648210, -0.353972017550768680, -0.354018779908959190, -0.354065541382102670, -0.354112301970082750, +-0.354159061672781660, -0.354205820490082920, -0.354252578421869630, -0.354299335468025330, -0.354346091628432220, -0.354392846902973900, -0.354439601291533510, -0.354486354793994480, +-0.354533107410239190, -0.354579859140151110, -0.354626609983613780, -0.354673359940509520, -0.354720109010721870, -0.354766857194133920, -0.354813604490629260, -0.354860350900090220, +-0.354907096422400260, -0.354953841057442540, -0.355000584805100660, -0.355047327665256870, -0.355094069637794830, -0.355140810722597570, -0.355187550919548680, -0.355234290228530540, +-0.355281028649426620, -0.355327766182120200, -0.355374502826494740, -0.355421238582432570, -0.355467973449817400, -0.355514707428532200, -0.355561440518460730, -0.355608172719485190, +-0.355654904031489190, -0.355701634454356430, -0.355748363987969110, -0.355795092632210870, -0.355841820386964940, -0.355888547252114880, -0.355935273227542980, -0.355981998313132930, +-0.356028722508767880, -0.356075445814331480, -0.356122168229705990, -0.356168889754775120, -0.356215610389422010, -0.356262330133530310, -0.356309048986982350, -0.356355766949661760, +-0.356402484021451750, -0.356449200202235970, -0.356495915491896740, -0.356542629890317760, -0.356589343397382570, -0.356636056012973660, -0.356682767736974600, -0.356729478569268620, +-0.356776188509739360, -0.356822897558269180, -0.356869605714741740, -0.356916312979040360, -0.356963019351048570, -0.357009724830648860, -0.357056429417724750, -0.357103133112159630, +-0.357149835913837090, -0.357196537822639550, -0.357243238838450660, -0.357289938961153630, -0.357336638190632220, -0.357383336526768790, -0.357430033969447000, -0.357476730518550560, +-0.357523426173961880, -0.357570120935564620, -0.357616814803242030, -0.357663507776877890, -0.357710199856354490, -0.357756891041555670, -0.357803581332364560, -0.357850270728664930, +-0.357896959230339210, -0.357943646837271090, -0.357990333549343840, -0.358037019366441220, -0.358083704288445600, -0.358130388315240740, -0.358177071446709900, -0.358223753682736790, +-0.358270435023203880, -0.358317115467994880, -0.358363795016993500, -0.358410473670082220, -0.358457151427144740, -0.358503828288064430, -0.358550504252724940, -0.358597179321008760, +-0.358643853492799650, -0.358690526767980910, -0.358737199146436260, -0.358783870628048170, -0.358830541212700470, -0.358877210900276360, -0.358923879690659640, -0.358970547583732870, +-0.359017214579379680, -0.359063880677483460, -0.359110545877927960, -0.359157210180595650, -0.359203873585370310, -0.359250536092135310, -0.359297197700774400, -0.359343858411170060, +-0.359390518223206110, -0.359437177136766260, -0.359483835151733040, -0.359530492267990220, -0.359577148485421220, -0.359623803803909680, -0.359670458223338320, -0.359717111743590720, +-0.359763764364550380, -0.359810416086101040, -0.359857066908125240, -0.359903716830506810, -0.359950365853129060, -0.359997013975875800, -0.360043661198629630, -0.360090307521274240, +-0.360136952943693130, -0.360183597465770060, -0.360230241087387550, -0.360276883808429480, -0.360323525628779560, -0.360370166548320490, -0.360416806566935920, -0.360463445684509390, +-0.360510083900924650, -0.360556721216064250, -0.360603357629812050, -0.360649993142051480, -0.360696627752666370, -0.360743261461539230, -0.360789894268553960, -0.360836526173593960, +-0.360883157176543010, -0.360929787277283810, -0.360976416475700110, -0.361023044771675410, -0.361069672165093450, -0.361116298655836940, -0.361162924243789650, -0.361209548928835500, +-0.361256172710857030, -0.361302795589738160, -0.361349417565362320, -0.361396038637613270, -0.361442658806373770, -0.361489278071527640, -0.361535896432958250, -0.361582513890549570, +-0.361629130444184210, -0.361675746093746030, -0.361722360839118460, -0.361768974680185370, -0.361815587616829470, -0.361862199648934570, -0.361908810776384200, -0.361955420999062250, +-0.362002030316851300, -0.362048638729635220, -0.362095246237297610, -0.362141852839722280, -0.362188458536791940, -0.362235063328390390, -0.362281667214401640, -0.362328270194708260, +-0.362374872269194240, -0.362421473437743060, -0.362468073700238590, -0.362514673056563490, -0.362561271506601780, -0.362607869050236840, -0.362654465687352660, -0.362701061417831870, +-0.362747656241558470, -0.362794250158415880, -0.362840843168288130, -0.362887435271057820, -0.362934026466608940, -0.362980616754824960, -0.363027206135589920, -0.363073794608786420, +-0.363120382174298430, -0.363166968832009880, -0.363213554581803490, -0.363260139423563280, -0.363306723357172680, -0.363353306382515670, -0.363399888499474970, -0.363446469707934590, +-0.363493050007777980, -0.363539629398889230, -0.363586207881150920, -0.363632785454447160, -0.363679362118661420, -0.363725937873677680, -0.363772512719378660, -0.363819086655648380, +-0.363865659682370390, -0.363912231799428660, -0.363958803006705910, -0.364005373304086170, -0.364051942691453410, -0.364098511168690410, -0.364145078735681080, -0.364191645392309080, +-0.364238211138458390, -0.364284775974011770, -0.364331339898853130, -0.364377902912866200, -0.364424465015934950, -0.364471026207942080, -0.364517586488771690, -0.364564145858307320, +-0.364610704316433000, -0.364657261863031490, -0.364703818497986830, -0.364750374221182620, -0.364796929032502880, -0.364843482931830390, -0.364890035919049230, -0.364936587994042990, +-0.364983139156695670, -0.365029689406890070, -0.365076238744510280, -0.365122787169440300, -0.365169334681562930, -0.365215881280762210, -0.365262426966921790, -0.365308971739925770, +-0.365355515599656840, -0.365402058545999160, -0.365448600578836320, -0.365495141698052360, -0.365541681903530200, -0.365588221195153770, -0.365634759572806830, -0.365681297036373420, +-0.365727833585736290, -0.365774369220779660, -0.365820903941387050, -0.365867437747442570, -0.365913970638829130, -0.365960502615430780, -0.366007033677131550, -0.366053563823814320, +-0.366100093055363170, -0.366146621371661820, -0.366193148772594350, -0.366239675258043570, -0.366286200827893590, -0.366332725482028110, -0.366379249220331220, -0.366425772042685840, +-0.366472293948975960, -0.366518814939085390, -0.366565335012898170, -0.366611854170297240, -0.366658372411166670, -0.366704889735390120, -0.366751406142851790, -0.366797921633434550, +-0.366844436207022510, -0.366890949863499740, -0.366937462602749230, -0.366983974424655020, -0.367030485329100930, -0.367076995315971040, -0.367123504385148180, -0.367170012536516600, +-0.367216519769960000, -0.367263026085362490, -0.367309531482607030, -0.367356035961577730, -0.367402539522158340, -0.367449042164233020, -0.367495543887684680, -0.367542044692397480, +-0.367588544578255130, -0.367635043545141870, -0.367681541592940590, -0.367728038721535420, -0.367774534930810640, -0.367821030220649050, -0.367867524590934910, -0.367914018041551940, +-0.367960510572384330, -0.368007002183315060, -0.368053492874228280, -0.368099982645007760, -0.368146471495537700, -0.368192959425701020, -0.368239446435381980, -0.368285932524464290, +-0.368332417692832200, -0.368378901940368650, -0.368425385266957890, -0.368471867672483630, -0.368518349156830070, -0.368564829719880300, -0.368611309361518420, -0.368657788081628250, +-0.368704265880094030, -0.368750742756798760, -0.368797218711626630, -0.368843693744461850, -0.368890167855187410, -0.368936641043687560, -0.368983113309846120, -0.369029584653547290, +-0.369076055074674110, -0.369122524573110790, -0.369168993148741190, -0.369215460801449460, -0.369261927531118690, -0.369308393337633100, -0.369354858220876490, -0.369401322180733180, +-0.369447785217086160, -0.369494247329819670, -0.369540708518817600, -0.369587168783964140, -0.369633628125142330, -0.369680086542236440, -0.369726544035130780, -0.369773000603708320, +-0.369819456247853400, -0.369865910967449810, -0.369912364762381870, -0.369958817632532580, -0.370005269577786230, -0.370051720598026770, -0.370098170693138380, -0.370144619863004180, +-0.370191068107508400, -0.370237515426534940, -0.370283961819968140, -0.370330407287691010, -0.370376851829587850, -0.370423295445542530, -0.370469738135439430, -0.370516179899161580, +-0.370562620736593300, -0.370609060647618840, -0.370655499632121300, -0.370701937689985050, -0.370748374821093910, -0.370794811025332290, -0.370841246302583190, -0.370887680652731030, +-0.370934114075659630, -0.370980546571253400, -0.371026978139395340, -0.371073408779969860, -0.371119838492860840, -0.371166267277952660, -0.371212695135128390, -0.371259122064272360, +-0.371305548065268550, -0.371351973138001280, -0.371398397282353630, -0.371444820498210040, -0.371491242785454370, -0.371537664143970990, -0.371584084573643060, -0.371630504074354940, +-0.371676922645990950, -0.371723340288434230, -0.371769757001569170, -0.371816172785279730, -0.371862587639450290, -0.371909001563963890, -0.371955414558705070, -0.372001826623557690, +-0.372048237758406120, -0.372094647963133570, -0.372141057237624420, -0.372187465581762580, -0.372233872995432540, -0.372280279478517380, -0.372326685030901490, -0.372373089652468960, +-0.372419493343104040, -0.372465896102690040, -0.372512297931111240, -0.372558698828252150, -0.372605098793995890, -0.372651497828226870, -0.372697895930829140, -0.372744293101687050, +-0.372790689340683820, -0.372837084647703880, -0.372883479022631250, -0.372929872465350310, -0.372976264975744260, -0.373022656553697540, -0.373069047199094230, -0.373115436911818640, +-0.373161825691754100, -0.373208213538785030, -0.373254600452795350, -0.373300986433669600, -0.373347371481290990, -0.373393755595543940, -0.373440138776312940, -0.373486521023481180, +-0.373532902336933090, -0.373579282716552770, -0.373625662162224650, -0.373672040673831920, -0.373718418251259120, -0.373764794894390300, -0.373811170603109870, -0.373857545377301090, +-0.373903919216848510, -0.373950292121636050, -0.373996664091548300, -0.374043035126468530, -0.374089405226281150, -0.374135774390870200, -0.374182142620120280, -0.374228509913914600, +-0.374274876272137620, -0.374321241694673850, -0.374367606181406580, -0.374413969732220300, -0.374460332346999100, -0.374506694025627470, -0.374553054767988670, -0.374599414573967280, +-0.374645773443447290, -0.374692131376313350, -0.374738488372448610, -0.374784844431737710, -0.374831199554064630, -0.374877553739314030, -0.374923906987369100, -0.374970259298114390, +-0.375016610671434050, -0.375062961107212600, -0.375109310605333370, -0.375155659165680780, -0.375202006788139090, -0.375248353472592830, -0.375294699218925220, -0.375341044027020900, +-0.375387387896764350, -0.375433730828038940, -0.375480072820729150, -0.375526413874719240, -0.375572753989893700, -0.375619093166135840, -0.375665431403330250, -0.375711768701361080, +-0.375758105060112920, -0.375804440479469090, -0.375850774959314130, -0.375897108499532230, -0.375943441100007990, -0.375989772760624790, -0.376036103481267090, -0.376082433261819120, +-0.376128762102165500, -0.376175090002189570, -0.376221416961775910, -0.376267742980809120, -0.376314068059172560, -0.376360392196750830, -0.376406715393428130, -0.376453037649089050, +-0.376499358963616970, -0.376545679336896480, -0.376591998768811780, -0.376638317259247510, -0.376684634808087060, -0.376730951415214950, -0.376777267080515510, -0.376823581803873320, +-0.376869895585171750, -0.376916208424295460, -0.376962520321128650, -0.377008831275555960, -0.377055141287460760, -0.377101450356727710, -0.377147758483241390, -0.377194065666885350, +-0.377240371907544110, -0.377286677205101950, -0.377332981559443500, -0.377379284970452140, -0.377425587438012630, -0.377471888962009120, -0.377518189542326350, -0.377564489178847660, +-0.377610787871457740, -0.377657085620040860, -0.377703382424481650, -0.377749678284663600, -0.377795973200471370, -0.377842267171789150, -0.377888560198501760, -0.377934852280492510, +-0.377981143417646100, -0.378027433609846860, -0.378073722856979430, -0.378120011158927290, -0.378166298515575150, -0.378212584926807650, -0.378258870392508330, -0.378305154912561780, +-0.378351438486852320, -0.378397721115264710, -0.378444002797682370, -0.378490283533990060, -0.378536563324072040, -0.378582842167812960, -0.378629120065096410, -0.378675397015807050, +-0.378721673019829230, -0.378767948077047610, -0.378814222187345670, -0.378860495350608230, -0.378906767566719540, -0.378953038835564360, -0.378999309157026120, -0.379045578530989640, +-0.379091846957339660, -0.379138114435959570, -0.379184380966734240, -0.379230646549547970, -0.379276911184285470, -0.379323174870830280, -0.379369437609067160, -0.379415699398880480, +-0.379461960240154940, -0.379508220132774080, -0.379554479076622650, -0.379600737071585040, -0.379646994117546040, -0.379693250214389100, -0.379739505361999020, -0.379785759560260230, +-0.379832012809057430, -0.379878265108274160, -0.379924516457795240, -0.379970766857505470, -0.380017016307288350, -0.380063264807028680, -0.380109512356610830, -0.380155758955919630, +-0.380202004604838660, -0.380248249303252630, -0.380294493051046010, -0.380340735848103520, -0.380386977694308850, -0.380433218589546650, -0.380479458533701460, -0.380525697526658050, +-0.380571935568299930, -0.380618172658512000, -0.380664408797178670, -0.380710643984184690, -0.380756878219413730, -0.380803111502750540, -0.380849343834079980, -0.380895575213285650, +-0.380941805640252370, -0.380988035114864620, -0.381034263637007150, -0.381080491206563620, -0.381126717823418890, -0.381172943487457340, -0.381219168198563830, -0.381265391956622010, +-0.381311614761516700, -0.381357836613132380, -0.381404057511353870, -0.381450277456064800, -0.381496496447150000, -0.381542714484494010, -0.381588931567981630, -0.381635147697496510, +-0.381681362872923540, -0.381727577094147120, -0.381773790361052190, -0.381820002673522340, -0.381866214031442550, -0.381912424434697580, -0.381958633883171190, -0.382004842376748140, +-0.382051049915313080, -0.382097256498750760, -0.382143462126944830, -0.382189666799780340, -0.382235870517141640, -0.382282073278913670, -0.382328275084980130, -0.382374475935225890, +-0.382420675829535430, -0.382466874767793730, -0.382513072749884390, -0.382559269775692430, -0.382605465845102240, -0.382651660957998850, -0.382697855114265850, -0.382744048313788220, +-0.382790240556450890, -0.382836431842137560, -0.382882622170733160, -0.382928811542122160, -0.382974999956189550, -0.383021187412819040, -0.383067373911895600, -0.383113559453303660, +-0.383159744036928260, -0.383205927662653100, -0.383252110330363160, -0.383298292039942870, -0.383344472791277310, -0.383390652584250150, -0.383436831418746290, -0.383483009294650460, +-0.383529186211847450, -0.383575362170221090, -0.383621537169656300, -0.383667711210038060, -0.383713884291250200, -0.383760056413177560, -0.383806227575704820, -0.383852397778716940, +-0.383898567022097630, -0.383944735305731920, -0.383990902629504300, -0.384037068993299920, -0.384083234397002430, -0.384129398840496850, -0.384175562323667790, -0.384221724846400210, +-0.384267886408577900, -0.384314047010085870, -0.384360206650808780, -0.384406365330631550, -0.384452523049437940, -0.384498679807113110, -0.384544835603541520, -0.384590990438608280, +-0.384637144312197140, -0.384683297224193200, -0.384729449174481370, -0.384775600162945490, -0.384821750189470620, -0.384867899253941440, -0.384914047356242850, -0.384960194496258730, +-0.385006340673874180, -0.385052485888973730, -0.385098630141442520, -0.385144773431164270, -0.385190915758024110, -0.385237057121906650, -0.385283197522697020, -0.385329336960278930, +-0.385375475434537480, -0.385421612945357370, -0.385467749492623630, -0.385513885076220140, -0.385560019696031870, -0.385606153351944040, -0.385652286043840330, -0.385698417771605960, +-0.385744548535125580, -0.385790678334284150, -0.385836807168965680, -0.385882935039055190, -0.385929061944437320, -0.385975187884997240, -0.386021312860618750, -0.386067436871187000, +-0.386113559916586690, -0.386159681996702860, -0.386205803111419390, -0.386251923260621470, -0.386298042444193690, -0.386344160662021210, -0.386390277913987950, -0.386436394199978990, +-0.386482509519879450, -0.386528623873573230, -0.386574737260945430, -0.386620849681880820, -0.386666961136264480, -0.386713071623980330, -0.386759181144913480, -0.386805289698948730, +-0.386851397285971120, -0.386897503905864640, -0.386943609558514370, -0.386989714243805070, -0.387035817961621900, -0.387081920711848770, -0.387128022494370890, -0.387174123309072920, +-0.387220223155840040, -0.387266322034556190, -0.387312419945106570, -0.387358516887376270, -0.387404612861249280, -0.387450707866610790, -0.387496801903345510, -0.387542894971338590, +-0.387588987070474070, -0.387635078200637080, -0.387681168361712400, -0.387727257553585170, -0.387773345776139420, -0.387819433029260310, -0.387865519312832640, -0.387911604626741510, +-0.387957688970871020, -0.388003772345106300, -0.388049854749332120, -0.388095936183433740, -0.388142016647295090, -0.388188096140801410, -0.388234174663837470, -0.388280252216288540, +-0.388326328798038580, -0.388372404408972750, -0.388418479048976310, -0.388464552717933290, -0.388510625415728890, -0.388556697142247940, -0.388602767897375630, -0.388648837680996010, +-0.388694906492994320, -0.388740974333255330, -0.388787041201664300, -0.388833107098105260, -0.388879172022463470, -0.388925235974623750, -0.388971298954471360, -0.389017360961890320, +-0.389063421996765860, -0.389109482058982830, -0.389155541148426540, -0.389201599264980940, -0.389247656408531370, -0.389293712578963060, -0.389339767776160080, -0.389385822000007650, +-0.389431875250390690, -0.389477927527194460, -0.389523978830302990, -0.389570029159601540, -0.389616078514975040, -0.389662126896308800, -0.389708174303486750, -0.389754220736394320, +-0.389800266194916370, -0.389846310678938100, -0.389892354188343670, -0.389938396723018330, -0.389984438282847010, -0.390030478867715020, -0.390076518477506410, -0.390122557112106530, +-0.390168594771400650, -0.390214631455272850, -0.390260667163608520, -0.390306701896292460, -0.390352735653210100, -0.390398768434245480, -0.390444800239283960, -0.390490831068210420, +-0.390536860920910170, -0.390582889797267410, -0.390628917697167450, -0.390674944620495120, -0.390720970567135890, -0.390766995536973800, -0.390813019529894280, -0.390859042545782130, +-0.390905064584522840, -0.390951085646000450, -0.390997105730100380, -0.391043124836707500, -0.391089142965707240, -0.391135160116983680, -0.391181176290422260, -0.391227191485908340, +-0.391273205703325970, -0.391319218942560610, -0.391365231203497200, -0.391411242486021100, -0.391457252790016530, -0.391503262115368790, -0.391549270461962920, -0.391595277829684290, +-0.391641284218417040, -0.391687289628046550, -0.391733294058457910, -0.391779297509536380, -0.391825299981166220, -0.391871301473232790, -0.391917301985621140, -0.391963301518216620, +-0.392009300070903450, -0.392055297643567060, -0.392101294236092750, -0.392147289848364890, -0.392193284480268740, -0.392239278131689410, -0.392285270802512300, -0.392331262492621570, +-0.392377253201902700, -0.392423242930240720, -0.392469231677521010, -0.392515219443627830, -0.392561206228446590, -0.392607192031862340, -0.392653176853760500, -0.392699160694025330, +-0.392745143552542250, -0.392791125429196360, -0.392837106323873030, -0.392883086236456510, -0.392929065166832290, -0.392975043114885790, -0.393021020080501330, -0.393066996063564270, +-0.393112971063959700, -0.393158945081573170, -0.393204918116288830, -0.393250890167992200, -0.393296861236568370, -0.393342831321902790, -0.393388800423879690, -0.393434768542384630, +-0.393480735677302630, -0.393526701828519180, -0.393572666995918590, -0.393618631179386340, -0.393664594378807520, -0.393710556594067620, -0.393756517825050890, -0.393802478071642870, +-0.393848437333729100, -0.393894395611193770, -0.393940352903922490, -0.393986309211800330, -0.394032264534712800, -0.394078218872544180, -0.394124172225180040, -0.394170124592505440, +-0.394216075974406000, -0.394262026370765910, -0.394307975781470750, -0.394353924206405690, -0.394399871645456200, -0.394445818098506600, -0.394491763565442520, -0.394537708046148960, +-0.394583651540511560, -0.394629594048414630, -0.394675535569743720, -0.394721476104384020, -0.394767415652220950, -0.394813354213138960, -0.394859291787023610, -0.394905228373760410, +-0.394951163973233770, -0.394997098585329160, -0.395043032209931870, -0.395088964846927400, -0.395134896496200040, -0.395180827157635530, -0.395226756831118910, -0.395272685516535770, +-0.395318613213770540, -0.395364539922708810, -0.395410465643235680, -0.395456390375236830, -0.395502314118596600, -0.395548236873200560, -0.395594158638933930, -0.395640079415682300, +-0.395685999203330090, -0.395731918001762880, -0.395777835810866290, -0.395823752630524660, -0.395869668460623660, -0.395915583301048530, -0.395961497151684830, -0.396007410012416960, +-0.396053321883130580, -0.396099232763710900, -0.396145142654043550, -0.396191051554012910, -0.396236959463504680, -0.396282866382404010, -0.396328772310596600, -0.396374677247966880, +-0.396420581194400430, -0.396466484149782530, -0.396512386113998860, -0.396558287086933750, -0.396604187068473000, -0.396650086058502160, -0.396695984056905650, -0.396741881063569220, +-0.396787777078378090, -0.396833672101217950, -0.396879566131973170, -0.396925459170529520, -0.396971351216772240, -0.397017242270586930, -0.397063132331858140, -0.397109021400471500, +-0.397154909476312320, -0.397200796559266270, -0.397246682649217810, -0.397292567746052700, -0.397338451849656100, -0.397384334959913820, -0.397430217076710280, -0.397476098199931180, +-0.397521978329461840, -0.397567857465188020, -0.397613735606994090, -0.397659612754765800, -0.397705488908388970, -0.397751364067747910, -0.397797238232728500, -0.397843111403215990, +-0.397888983579096130, -0.397934854760253360, -0.397980724946573490, -0.398026594137941780, -0.398072462334244040, -0.398118329535364690, -0.398164195741189500, -0.398210060951603830, +-0.398255925166493440, -0.398301788385742820, -0.398347650609237770, -0.398393511836863560, -0.398439372068505940, -0.398485231304049500, -0.398531089543380010, -0.398576946786383220, +-0.398622803032943620, -0.398668658282947010, -0.398714512536278760, -0.398760365792824640, -0.398806218052469190, -0.398852069315098200, -0.398897919580597060, -0.398943768848851520, +-0.398989617119746120, -0.399035464393166730, -0.399081310668998600, -0.399127155947127670, -0.399173000227438400, -0.399218843509816680, -0.399264685794147810, -0.399310527080317670, +-0.399356367368210790, -0.399402206657712980, -0.399448044948710060, -0.399493882241086620, -0.399539718534728470, -0.399585553829520990, -0.399631388125350100, -0.399677221422100330, +-0.399723053719657440, -0.399768885017906970, -0.399814715316734680, -0.399860544616025220, -0.399906372915664390, -0.399952200215537620, -0.399998026515530740, -0.400043851815528370, +-0.400089676115416400, -0.400135499415080250, -0.400181321714405790, -0.400227143013277550, -0.400272963311581460, -0.400318782609203390, -0.400364600906027990, -0.400410418201941070, +-0.400456234496828050, -0.400502049790574910, -0.400547864083066200, -0.400593677374187880, -0.400639489663825340, -0.400685300951864440, -0.400731111238189940, -0.400776920522687650, +-0.400822728805243060, -0.400868536085742020, -0.400914342364069250, -0.400960147640110620, -0.401005951913751660, -0.401051755184878180, -0.401097557453374940, -0.401143358719127820, +-0.401189158982022230, -0.401234958241944220, -0.401280756498778370, -0.401326553752410660, -0.401372350002726970, -0.401418145249611950, -0.401463939492951620, -0.401509732732631410, +-0.401555524968537300, -0.401601316200553950, -0.401647106428567320, -0.401692895652462910, -0.401738683872126690, -0.401784471087443360, -0.401830257298298800, -0.401876042504578650, +-0.401921826706168770, -0.401967609902953940, -0.402013392094820070, -0.402059173281652750, -0.402104953463337860, -0.402150732639760200, -0.402196510810805710, -0.402242287976360360, +-0.402288064136308850, -0.402333839290537230, -0.402379613438930970, -0.402425386581376110, -0.402471158717757350, -0.402516929847960720, -0.402562699971871770, -0.402608469089376420, +-0.402654237200359530, -0.402700004304707090, -0.402745770402304580, -0.402791535493038090, -0.402837299576792320, -0.402883062653453310, -0.402928824722906640, -0.402974585785038310, +-0.403020345839733120, -0.403066104886877110, -0.403111862926356200, -0.403157619958055210, -0.403203375981860180, -0.403249130997656750, -0.403294885005330840, -0.403340638004767330, +-0.403386389995852250, -0.403432140978471190, -0.403477890952510190, -0.403523639917854000, -0.403569387874388790, -0.403615134822000070, -0.403660880760573880, -0.403706625689995160, +-0.403752369610149820, -0.403798112520923570, -0.403843854422202440, -0.403889595313871310, -0.403935335195816150, -0.403981074067922660, -0.404026811930076890, -0.404072548782163700, +-0.404118284624069120, -0.404164019455679260, -0.404209753276878910, -0.404255486087554180, -0.404301217887590770, -0.404346948676874710, -0.404392678455290870, -0.404438407222725280, +-0.404484134979063710, -0.404529861724192250, -0.404575587457995710, -0.404621312180360180, -0.404667035891171370, -0.404712758590315410, -0.404758480277677080, -0.404804200953142620, +-0.404849920616597640, -0.404895639267928260, -0.404941356907019380, -0.404987073533757070, -0.405032789148027540, -0.405078503749715550, -0.405124217338707400, -0.405169929914888650, +-0.405215641478145480, -0.405261352028362830, -0.405307061565426780, -0.405352770089223050, -0.405398477599637820, -0.405444184096556030, -0.405489889579863760, -0.405535594049446720, +-0.405581297505191170, -0.405626999946981930, -0.405672701374705180, -0.405718401788246700, -0.405764101187492620, -0.405809799572327880, -0.405855496942638620, -0.405901193298311090, +-0.405946888639230120, -0.405992582965281900, -0.406038276276352250, -0.406083968572327310, -0.406129659853092070, -0.406175350118532670, -0.406221039368534880, -0.406266727602984930, +-0.406312414821767720, -0.406358101024769490, -0.406403786211876010, -0.406449470382973470, -0.406495153537946850, -0.406540835676682310, -0.406586516799065710, -0.406632196904983260, +-0.406677875994319870, -0.406723554066961760, -0.406769231122795230, -0.406814907161705210, -0.406860582183577900, -0.406906256188299120, -0.406951929175755120, -0.406997601145830890, +-0.407043272098412680, -0.407088942033386250, -0.407134610950637910, -0.407180278850052650, -0.407225945731516660, -0.407271611594915820, -0.407317276440136320, -0.407362940267063270, +-0.407408603075582850, -0.407454264865580900, -0.407499925636943710, -0.407545585389556320, -0.407591244123304940, -0.407636901838075490, -0.407682558533754180, -0.407728214210226040, +-0.407773868867377380, -0.407819522505094460, -0.407865175123262310, -0.407910826721767260, -0.407956477300495110, -0.408002126859332180, -0.408047775398163500, -0.408093422916875390, +-0.408139069415353770, -0.408184714893484850, -0.408230359351153760, -0.408276002788246720, -0.408321645204649750, -0.408367286600249010, -0.408412926974929650, -0.408458566328578020, +-0.408504204661079950, -0.408549841972321750, -0.408595478262188560, -0.408641113530566650, -0.408686747777342370, -0.408732381002400840, -0.408778013205628340, -0.408823644386910820, +-0.408869274546134590, -0.408914903683184780, -0.408960531797947720, -0.409006158890309280, -0.409051784960155870, -0.409097410007372650, -0.409143034031845820, -0.409188657033461470, +-0.409234279012105850, -0.409279899967664120, -0.409325519900022640, -0.409371138809067390, -0.409416756694684690, -0.409462373556759680, -0.409507989395178740, -0.409553604209828230, +-0.409599218000593290, -0.409644830767360300, -0.409690442510015300, -0.409736053228444530, -0.409781662922533260, -0.409827271592167810, -0.409872879237234200, -0.409918485857618750, +-0.409964091453206720, -0.410009696023884480, -0.410055299569538010, -0.410100902090053620, -0.410146503585316620, -0.410192104055213390, -0.410237703499629850, -0.410283301918452470, +-0.410328899311566410, -0.410374495678858140, -0.410420091020213650, -0.410465685335519300, -0.410511278624660300, -0.410556870887523180, -0.410602462123994210, -0.410648052333958740, +-0.410693641517303090, -0.410739229673913410, -0.410784816803676010, -0.410830402906476160, -0.410875987982200320, -0.410921572030734480, -0.410967155051965130, -0.411012737045777510, +-0.411058318012058000, -0.411103897950692740, -0.411149476861568160, -0.411195054744569410, -0.411240631599583070, -0.411286207426495130, -0.411331782225192120, -0.411377355995559250, +-0.411422928737482930, -0.411468500450849710, -0.411514071135544890, -0.411559640791454850, -0.411605209418465680, -0.411650777016463910, -0.411696343585334800, -0.411741909124964830, +-0.411787473635240100, -0.411833037116047070, -0.411878599567271080, -0.411924160988798580, -0.411969721380515690, -0.412015280742308860, -0.412060839074063430, -0.412106396375665930, +-0.412151952647002380, -0.412197507887959390, -0.412243062098422260, -0.412288615278277430, -0.412334167427411470, -0.412379718545709710, -0.412425268633058670, -0.412470817689344400, +-0.412516365714453550, -0.412561912708271360, -0.412607458670684380, -0.412653003601578750, -0.412698547500841010, -0.412744090368356520, -0.412789632204011770, -0.412835173007693010, +-0.412880712779286670, -0.412926251518678120, -0.412971789225753950, -0.413017325900400360, -0.413062861542503820, -0.413108396151949720, -0.413153929728624640, -0.413199462272415160, +-0.413244993783206560, -0.413290524260885530, -0.413336053705338210, -0.413381582116451100, -0.413427109494109660, -0.413472635838200430, -0.413518161148609620, -0.413563685425223810, +-0.413609208667928390, -0.413654730876609980, -0.413700252051154680, -0.413745772191449200, -0.413791291297378850, -0.413836809368830330, -0.413882326405689730, -0.413927842407843750, +-0.413973357375177710, -0.414018871307578310, -0.414064384204931750, -0.414109896067124620, -0.414155406894042340, -0.414200916685571520, -0.414246425441598840, -0.414291933162009740, +-0.414337439846690750, -0.414382945495528180, -0.414428450108408620, -0.414473953685217560, -0.414519456225841580, -0.414564957730166990, -0.414610458198080400, -0.414655957629467280, +-0.414701456024214270, -0.414746953382207570, -0.414792449703333950, -0.414837944987478780, -0.414883439234528750, -0.414928932444370120, -0.414974424616889550, -0.415019915751972500, +-0.415065405849505690, -0.415110894909375750, -0.415156382931468230, -0.415201869915669710, -0.415247355861866510, -0.415292840769945330, -0.415338324639791590, -0.415383807471292110, +-0.415429289264333090, -0.415474770018801230, -0.415520249734582070, -0.415565728411562310, -0.415611206049628200, -0.415656682648666450, -0.415702158208562660, -0.415747632729203400, +-0.415793106210475110, -0.415838578652264420, -0.415884050054456890, -0.415929520416939260, -0.415974989739598230, -0.416020458022319290, -0.416065925264989200, -0.416111391467494320, +-0.416156856629721410, -0.416202320751555890, -0.416247783832884580, -0.416293245873593840, -0.416338706873570330, -0.416384166832699740, -0.416429625750868670, -0.416475083627963540, +-0.416520540463871100, -0.416565996258476900, -0.416611451011667740, -0.416656904723329950, -0.416702357393350320, -0.416747809021614350, -0.416793259608008840, -0.416838709152420220, +-0.416884157654735240, -0.416929605114839450, -0.416975051532619660, -0.417020496907962610, -0.417065941240753910, -0.417111384530880420, -0.417156826778228410, -0.417202267982684780, +-0.417247708144135030, -0.417293147262466020, -0.417338585337564180, -0.417384022369316270, -0.417429458357607860, -0.417474893302325840, -0.417520327203356580, -0.417565760060586880, +-0.417611191873902440, -0.417656622643189980, -0.417702052368335960, -0.417747481049227210, -0.417792908685749360, -0.417838335277789240, -0.417883760825233710, -0.417929185327968300, +-0.417974608785880000, -0.418020031198855170, -0.418065452566780630, -0.418110872889542070, -0.418156292167026320, -0.418201710399119910, -0.418247127585709530, -0.418292543726680950, +-0.418337958821921040, -0.418383372871316220, -0.418428785874753410, -0.418474197832118200, -0.418519608743297470, -0.418565018608177740, -0.418610427426645890, -0.418655835198587510, +-0.418701241923889580, -0.418746647602438960, -0.418792052234121300, -0.418837455818823530, -0.418882858356432130, -0.418928259846833960, -0.418973660289914730, -0.419019059685561360, +-0.419064458033660330, -0.419109855334098560, -0.419155251586761760, -0.419200646791536850, -0.419246040948310310, -0.419291434056969060, -0.419336826117398810, -0.419382217129486530, +-0.419427607093118660, -0.419472996008182220, -0.419518383874562860, -0.419563770692147560, -0.419609156460822810, -0.419654541180475570, -0.419699924850991610, -0.419745307472257800, +-0.419790689044161170, -0.419836069566587370, -0.419881449039423430, -0.419926827462555830, -0.419972204835871610, -0.420017581159256470, -0.420062956432597330, -0.420108330655780850, +-0.420153703828693940, -0.420199075951222300, -0.420244447023253030, -0.420289817044672660, -0.420335186015368120, -0.420380553935225220, -0.420425920804130940, -0.420471286621971860, +-0.420516651388634920, -0.420562015104005980, -0.420607377767972020, -0.420652739380420030, -0.420698099941235750, -0.420743459450306220, -0.420788817907518100, -0.420834175312758300, +-0.420879531665912630, -0.420924886966868190, -0.420970241215511460, -0.421015594411729590, -0.421060946555408320, -0.421106297646434700, -0.421151647684695260, -0.421196996670077210, +-0.421242344602466180, -0.421287691481749330, -0.421333037307813240, -0.421378382080544960, -0.421423725799830340, -0.421469068465556370, -0.421514410077610150, -0.421559750635877530, +-0.421605090140245500, -0.421650428590600760, -0.421695765986830340, -0.421741102328820060, -0.421786437616457070, -0.421831771849628000, -0.421877105028219900, -0.421922437152118630, +-0.421967768221211240, -0.422013098235384470, -0.422058427194525350, -0.422103755098519720, -0.422149081947254760, -0.422194407740617060, -0.422239732478493720, -0.422285056160770720, +-0.422330378787335040, -0.422375700358073760, -0.422421020872872920, -0.422466340331619450, -0.422511658734200160, -0.422556976080502130, -0.422602292370411300, -0.422647607603814700, +-0.422692921780599080, -0.422738234900651540, -0.422783546963858000, -0.422828857970105660, -0.422874167919281120, -0.422919476811271570, -0.422964784645962930, -0.423010091423242360, +-0.423055397142996560, -0.423100701805112610, -0.423146005409476560, -0.423191307955975480, -0.423236609444496090, -0.423281909874925640, -0.423327209247150000, -0.423372507561056320, +-0.423417804816531800, -0.423463101013462300, -0.423508396151735080, -0.423553690231236900, -0.423598983251854910, -0.423644275213475030, -0.423689566115984460, -0.423734855959269960, +-0.423780144743218730, -0.423825432467716760, -0.423870719132651170, -0.423916004737908800, -0.423961289283376840, -0.424006572768941270, -0.424051855194489240, -0.424097136559907550, +-0.424142416865083470, -0.424187696109902870, -0.424232974294253110, -0.424278251418021280, -0.424323527481093420, -0.424368802483356730, -0.424414076424698080, -0.424459349305004620, +-0.424504621124162370, -0.424549891882058550, -0.424595161578580020, -0.424640430213614030, -0.424685697787046510, -0.424730964298764780, -0.424776229748655590, -0.424821494136606250, +-0.424866757462502800, -0.424912019726232440, -0.424957280927682040, -0.425002541066738790, -0.425047800143288860, -0.425093058157219370, -0.425138315108417650, -0.425183570996769790, +-0.425228825822162930, -0.425274079584484040, -0.425319332283620400, -0.425364583919457970, -0.425409834491884080, -0.425455084000785630, -0.425500332446049840, -0.425545579827562860, +-0.425590826145211880, -0.425636071398883880, -0.425681315588466060, -0.425726558713844570, -0.425771800774906670, -0.425817041771539280, -0.425862281703629720, -0.425907520571064010, +-0.425952758373729530, -0.425997995111513150, -0.426043230784302170, -0.426088465391982700, -0.426133698934442080, -0.426178931411567650, -0.426224162823245430, -0.426269393169362850, +-0.426314622449806780, -0.426359850664464520, -0.426405077813222230, -0.426450303895967280, -0.426495528912586570, -0.426540752862967440, -0.426585975746996030, -0.426631197564559640, +-0.426676418315545310, -0.426721637999840310, -0.426766856617330830, -0.426812074167904180, -0.426857290651447340, -0.426902506067847690, -0.426947720416991360, -0.426992933698765790, +-0.427038145913058220, -0.427083357059754920, -0.427128567138743200, -0.427173776149910090, -0.427218984093142910, -0.427264190968327910, -0.427309396775352400, -0.427354601514103370, +-0.427399805184468300, -0.427445007786333320, -0.427490209319585760, -0.427535409784112700, -0.427580609179801560, -0.427625807506538450, -0.427671004764210830, -0.427716200952705680, +-0.427761396071910490, -0.427806590121711350, -0.427851783101995730, -0.427896975012651120, -0.427942165853563590, -0.427987355624620700, -0.428032544325709420, -0.428077731956717170, +-0.428122918517530150, -0.428168104008035900, -0.428213288428121340, -0.428258471777674010, -0.428303654056580050, -0.428348835264727000, -0.428394015402001840, -0.428439194468292040, +-0.428484372463483810, -0.428529549387464740, -0.428574725240121750, -0.428619900021342310, -0.428665073731012760, -0.428710246369020550, -0.428755417935253070, -0.428800588429596670, +-0.428845757851938790, -0.428890926202166570, -0.428936093480167370, -0.428981259685827570, -0.429026424819034580, -0.429071588879675560, -0.429116751867637980, -0.429161913782808100, +-0.429207074625073460, -0.429252234394321090, -0.429297393090438570, -0.429342550713312180, -0.429387707262829380, -0.429432862738877320, -0.429478017141343480, -0.429523170470114240, +-0.429568322725077060, -0.429613473906119090, -0.429658624013127820, -0.429703773045989560, -0.429748921004591890, -0.429794067888822350, -0.429839213698567200, -0.429884358433714030, +-0.429929502094149930, -0.429974644679762540, -0.430019786190438070, -0.430064926626064210, -0.430110065986527960, -0.430155204271717000, -0.430200341481517590, -0.430245477615817380, +-0.430290612674503410, -0.430335746657463380, -0.430380879564583540, -0.430426011395751480, -0.430471142150854410, -0.430516271829779920, -0.430561400432414310, -0.430606527958645240, +-0.430651654408360170, -0.430696779781445660, -0.430741904077789120, -0.430787027297277860, -0.430832149439799420, -0.430877270505240220, -0.430922390493487850, -0.430967509404429520, +-0.431012627237952750, -0.431057743993944090, -0.431102859672291010, -0.431147974272880820, -0.431193087795601060, -0.431238200240338210, -0.431283311606979860, -0.431328421895413210, +-0.431373531105525900, -0.431418639237204420, -0.431463746290336290, -0.431508852264809170, -0.431553957160509590, -0.431599060977325030, -0.431644163715142910, -0.431689265373850720, +-0.431734365953334980, -0.431779465453483340, -0.431824563874183050, -0.431869661215321720, -0.431914757476785820, -0.431959852658463090, -0.432004946760240700, -0.432050039782006290, +-0.432095131723646440, -0.432140222585048750, -0.432185312366100530, -0.432230401066689360, -0.432275488686701850, -0.432320575226025570, -0.432365660684547900, -0.432410745062156430, +-0.432455828358737750, -0.432500910574179440, -0.432545991708369330, -0.432591071761193770, -0.432636150732540580, -0.432681228622296970, -0.432726305430350730, -0.432771381156588310, +-0.432816455800897450, -0.432861529363165410, -0.432906601843280000, -0.432951673241127650, -0.432996743556596120, -0.433041812789572710, -0.433086880939945180, -0.433131948007600080, +-0.433177013992425090, -0.433222078894307580, -0.433267142713135270, -0.433312205448794670, -0.433357267101173620, -0.433402327670159740, -0.433447387155639690, -0.433492445557501100, +-0.433537502875631480, -0.433582559109918440, -0.433627614260248650, -0.433672668326509800, -0.433717721308589270, -0.433762773206374850, -0.433807824019753100, -0.433852873748611810, +-0.433897922392838310, -0.433942969952320400, -0.433988016426944680, -0.434033061816598900, -0.434078106121170480, -0.434123149340547190, -0.434168191474615610, -0.434213232523263600, +-0.434258272486378880, -0.434303311363848090, -0.434348349155558980, -0.434393385861399030, -0.434438421481256000, -0.434483456015016530, -0.434528489462568450, -0.434573521823799100, +-0.434618553098596370, -0.434663583286846840, -0.434708612388438390, -0.434753640403258370, -0.434798667331194650, -0.434843693172133890, -0.434888717925963840, -0.434933741592572090, +-0.434978764171846280, -0.435023785663673220, -0.435068806067940680, -0.435113825384536580, -0.435158843613347450, -0.435203860754261210, -0.435248876807165340, -0.435293891771947660, +-0.435338905648494870, -0.435383918436694830, -0.435428930136434970, -0.435473940747603210, -0.435518950270086190, -0.435563958703771790, -0.435608966048547490, -0.435653972304301140, +-0.435698977470919510, -0.435743981548290420, -0.435788984536301380, -0.435833986434840280, -0.435878987243793810, -0.435923986963049850, -0.435968985592495970, -0.436013983132020000, +-0.436058979581508630, -0.436103974940849900, -0.436148969209931570, -0.436193962388640440, -0.436238954476864390, -0.436283945474490950, -0.436328935381408100, -0.436373924197502430, +-0.436418911922662020, -0.436463898556774310, -0.436508884099727210, -0.436553868551407540, -0.436598851911703220, -0.436643834180501730, -0.436688815357691050, -0.436733795443157990, +-0.436778774436790360, -0.436823752338475870, -0.436868729148102370, -0.436913704865556640, -0.436958679490726640, -0.437003653023500360, -0.437048625463764550, -0.437093596811407140, +-0.437138567066315760, -0.437183536228378360, -0.437228504297481720, -0.437273471273513850, -0.437318437156362260, -0.437363401945915000, -0.437408365642058870, -0.437453328244681750, +-0.437498289753671390, -0.437543250168915650, -0.437588209490301420, -0.437633167717716600, -0.437678124851048900, -0.437723080890186300, -0.437768035835015610, -0.437812989685424810, +-0.437857942441301940, -0.437902894102533800, -0.437947844669008430, -0.437992794140613480, -0.438037742517236930, -0.438082689798765580, -0.438127635985087580, -0.438172581076090420, +-0.438217525071662230, -0.438262467971689830, -0.438307409776061310, -0.438352350484664200, -0.438397290097386650, -0.438442228614115470, -0.438487166034738700, -0.438532102359144030, +-0.438577037587219500, -0.438621971718851980, -0.438666904753929500, -0.438711836692339760, -0.438756767533970860, -0.438801697278709660, -0.438846625926444190, -0.438891553477062550, +-0.438936479930451650, -0.438981405286499540, -0.439026329545093910, -0.439071252706122850, -0.439116174769473230, -0.439161095735033260, -0.439206015602690460, -0.439250934372333090, +-0.439295852043847970, -0.439340768617123180, -0.439385684092046480, -0.439430598468506020, -0.439475511746388600, -0.439520423925582440, -0.439565335005975220, -0.439610244987455050, +-0.439655153869908830, -0.439700061653224780, -0.439744968337290990, -0.439789873921994310, -0.439834778407223010, -0.439879681792864740, -0.439924584078807690, -0.439969485264938730, +-0.440014385351146060, -0.440059284337317500, -0.440104182223341080, -0.440149079009103770, -0.440193974694493840, -0.440238869279398930, -0.440283762763707230, -0.440328655147305740, +-0.440373546430082590, -0.440418436611925590, -0.440463325692722950, -0.440508213672361540, -0.440553100550729600, -0.440597986327715300, -0.440642871003205650, -0.440687754577088860, +-0.440732637049252640, -0.440777518419585230, -0.440822398687973630, -0.440867277854306020, -0.440912155918470220, -0.440957032880354480, -0.441001908739845680, -0.441046783496832180, +-0.441091657151201690, -0.441136529702842450, -0.441181401151641450, -0.441226271497487000, -0.441271140740266850, -0.441316008879869270, -0.441360875916181280, -0.441405741849091090, +-0.441450606678486900, -0.441495470404255850, -0.441540333026286090, -0.441585194544465490, -0.441630054958682350, -0.441674914268823600, -0.441719772474777620, -0.441764629576432200, +-0.441809485573675610, -0.441854340466394880, -0.441899194254478320, -0.441944046937813810, -0.441988898516289530, -0.442033748989792640, -0.442078598358211340, -0.442123446621433550, +-0.442168293779347580, -0.442213139831840460, -0.442257984778800460, -0.442302828620115550, -0.442347671355673930, -0.442392512985362750, -0.442437353509070260, -0.442482192926684780, +-0.442527031238093450, -0.442571868443184580, -0.442616704541845980, -0.442661539533966030, -0.442706373419431810, -0.442751206198131690, -0.442796037869953580, -0.442840868434785710, +-0.442885697892515310, -0.442930526243030640, -0.442975353486219690, -0.443020179621970770, -0.443065004650170960, -0.443109828570708630, -0.443154651383471760, -0.443199473088348620, +-0.443244293685226440, -0.443289113173993500, -0.443333931554538210, -0.443378748826747660, -0.443423564990510280, -0.443468380045713930, -0.443513193992247030, -0.443558006829996800, +-0.443602818558851530, -0.443647629178699210, -0.443692438689428200, -0.443737247090925710, -0.443782054383080100, -0.443826860565779360, -0.443871665638911890, -0.443916469602364800, +-0.443961272456026570, -0.444006074199785160, -0.444050874833528950, -0.444095674357145200, -0.444140472770522210, -0.444185270073548470, -0.444230066266111110, -0.444274861348098630, +-0.444319655319398990, -0.444364448179900620, -0.444409239929490720, -0.444454030568057710, -0.444498820095489630, -0.444543608511674900, -0.444588395816500730, -0.444633182009855580, +-0.444677967091627490, -0.444722751061704890, -0.444767533919974980, -0.444812315666326290, -0.444857096300646740, -0.444901875822824920, -0.444946654232747980, -0.444991431530304400, +-0.445036207715382210, -0.445080982787869950, -0.445125756747654810, -0.445170529594625270, -0.445215301328669820, -0.445260071949675760, -0.445304841457531460, -0.445349609852125070, +-0.445394377133345070, -0.445439143301078700, -0.445483908355214510, -0.445528672295640530, -0.445573435122245230, -0.445618196834915990, -0.445662957433541280, -0.445707716918009140, +-0.445752475288208110, -0.445797232544025480, -0.445841988685349800, -0.445886743712069160, -0.445931497624072030, -0.445976250421245720, -0.446021002103478840, -0.446065752670659840, +-0.446110502122676060, -0.446155250459416010, -0.446199997680767850, -0.446244743786620100, -0.446289488776860090, -0.446334232651376340, -0.446378975410057060, -0.446423717052790660, +-0.446468457579464630, -0.446513196989967440, -0.446557935284187250, -0.446602672462012630, -0.446647408523330900, -0.446692143468030710, -0.446736877296000090, -0.446781610007127740, +-0.446826341601300910, -0.446871072078408260, -0.446915801438338310, -0.446960529680978490, -0.447005256806217330, -0.447049982813943040, -0.447094707704044190, -0.447139431476408170, +-0.447184154130923550, -0.447228875667478540, -0.447273596085961730, -0.447318315386260600, -0.447363033568263620, -0.447407750631859060, -0.447452466576935550, -0.447497181403380460, +-0.447541895111082440, -0.447586607699929640, -0.447631319169810750, -0.447676029520613140, -0.447720738752225510, -0.447765446864536340, -0.447810153857433220, -0.447854859730804740, +-0.447899564484539050, -0.447944268118524890, -0.447988970632649640, -0.448033672026801940, -0.448078372300870110, -0.448123071454742730, -0.448167769488307280, -0.448212466401452400, +-0.448257162194066310, -0.448301856866037800, -0.448346550417254190, -0.448391242847604180, -0.448435934156976130, -0.448480624345258590, -0.448525313412339140, -0.448570001358106370, +-0.448614688182448600, -0.448659373885254510, -0.448704058466411590, -0.448748741925808550, -0.448793424263334020, -0.448838105478875540, -0.448882785572321810, -0.448927464543561080, +-0.448972142392482120, -0.449016819118972400, -0.449061494722920620, -0.449106169204215140, -0.449150842562744570, -0.449195514798396590, -0.449240185911059740, -0.449284855900622450, +-0.449329524766973410, -0.449374192510000160, -0.449418859129591450, -0.449463524625635600, -0.449508188998021310, -0.449552852246636160, -0.449597514371368910, -0.449642175372108210, +-0.449686835248741700, -0.449731494001158140, -0.449776151629245780, -0.449820808132893490, -0.449865463511988750, -0.449910117766420370, -0.449954770896076720, -0.449999422900846490, +-0.450044073780617340, -0.450088723535277960, -0.450133372164716830, -0.450178019668822650, -0.450222666047483010, -0.450267311300586730, -0.450311955428022100, -0.450356598429678070, +-0.450401240305442100, -0.450445881055203000, -0.450490520678849650, -0.450535159176269630, -0.450579796547351640, -0.450624432791984160, -0.450669067910056060, -0.450713701901454820, +-0.450758334766069360, -0.450802966503788090, -0.450847597114499730, -0.450892226598092080, -0.450936854954453790, -0.450981482183473390, -0.451026108285039640, -0.451070733259040290, +-0.451115357105364050, -0.451159979823899440, -0.451204601414535280, -0.451249221877159210, -0.451293841211660110, -0.451338459417926390, -0.451383076495846910, -0.451427692445309340, +-0.451472307266202580, -0.451516920958415390, -0.451561533521835530, -0.451606144956351820, -0.451650755261852780, -0.451695364438227220, -0.451739972485362910, -0.451784579403148590, +-0.451829185191472860, -0.451873789850224580, -0.451918393379291410, -0.451962995778562250, -0.452007597047925590, -0.452052197187270350, -0.452096796196484240, -0.452141394075456120, +-0.452185990824074510, -0.452230586442228300, -0.452275180929805290, -0.452319774286694290, -0.452364366512784220, -0.452408957607962900, -0.452453547572119140, -0.452498136405141530, +-0.452542724106918980, -0.452587310677339210, -0.452631896116291180, -0.452676480423663370, -0.452721063599344830, -0.452765645643223190, -0.452810226555187430, -0.452854806335126090, +-0.452899384982928140, -0.452943962498481350, -0.452988538881674670, -0.453033114132396610, -0.453077688250536180, -0.453122261235981090, -0.453166833088620380, -0.453211403808343020, +-0.453255973395036700, -0.453300541848590480, -0.453345109168892870, -0.453389675355832910, -0.453434240409298360, -0.453478804329178200, -0.453523367115361060, -0.453567928767735880, +-0.453612489286190470, -0.453657048670613850, -0.453701606920894620, -0.453746164036921750, -0.453790720018583060, -0.453835274865767580, -0.453879828578363950, -0.453924381156261100, +-0.453968932599346900, -0.454013482907510420, -0.454058032080640610, -0.454102580118625310, -0.454147127021353510, -0.454191672788713970, -0.454236217420595610, -0.454280760916886350, +-0.454325303277475110, -0.454369844502250650, -0.454414384591102010, -0.454458923543916980, -0.454503461360584670, -0.454547998040993660, -0.454592533585033100, -0.454637067992590740, +-0.454681601263555780, -0.454726133397816810, -0.454770664395262870, -0.454815194255781870, -0.454859722979262910, -0.454904250565594640, -0.454948777014666130, -0.454993302326365310, +-0.455037826500581220, -0.455082349537202950, -0.455126871436118410, -0.455171392197216700, -0.455215911820386450, -0.455260430305516880, -0.455304947652495850, -0.455349463861212440, +-0.455393978931555370, -0.455438492863413700, -0.455483005656675430, -0.455527517311229700, -0.455572027826965150, -0.455616537203770880, -0.455661045441534910, -0.455705552540146330, +-0.455750058499493850, -0.455794563319466610, -0.455839066999952580, -0.455883569540840920, -0.455928070942020700, -0.455972571203379860, -0.456017070324807650, -0.456061568306192770, +-0.456106065147424360, -0.456150560848390340, -0.456195055408979980, -0.456239548829081960, -0.456284041108585450, -0.456328532247378460, -0.456373022245350150, -0.456417511102389260, +-0.456461998818385010, -0.456506485393225360, -0.456550970826799460, -0.456595455118996190, -0.456639938269704610, -0.456684420278812840, -0.456728901146210010, -0.456773380871785370, +-0.456817859455426800, -0.456862336897023660, -0.456906813196464590, -0.456951288353638960, -0.456995762368434700, -0.457040235240741000, -0.457084706970446730, -0.457129177557441090, +-0.457173647001612120, -0.457218115302849000, -0.457262582461040620, -0.457307048476076170, -0.457351513347843690, -0.457395977076232470, -0.457440439661131240, -0.457484901102429340, +-0.457529361400014820, -0.457573820553776880, -0.457618278563604370, -0.457662735429386620, -0.457707191151011550, -0.457751645728368570, -0.457796099161346840, -0.457840551449834490, +-0.457885002593720720, -0.457929452592894470, -0.457973901447244980, -0.458018349156660340, -0.458062795721029810, -0.458107241140242320, -0.458151685414187100, -0.458196128542752320, +-0.458240570525827170, -0.458285011363300580, -0.458329451055061900, -0.458373889600999170, -0.458418327001001770, -0.458462763254958490, -0.458507198362758720, -0.458551632324290530, +-0.458596065139443290, -0.458640496808106310, -0.458684927330167640, -0.458729356705516680, -0.458773784934042310, -0.458818212015633890, -0.458862637950179560, -0.458907062737568590, +-0.458951486377690010, -0.458995908870433070, -0.459040330215686020, -0.459084750413338070, -0.459129169463278310, -0.459173587365395990, -0.459218004119579300, -0.459262419725717570, +-0.459306834183699890, -0.459351247493415440, -0.459395659654752490, -0.459440070667600400, -0.459484480531848540, -0.459528889247385050, -0.459573296814099360, -0.459617703231880390, +-0.459662108500617620, -0.459706512620199130, -0.459750915590514400, -0.459795317411452350, -0.459839718082902470, -0.459884117604752840, -0.459928515976892880, -0.459972913199211690, +-0.460017309271598620, -0.460061704193941820, -0.460106097966130830, -0.460150490588054570, -0.460194882059602460, -0.460239272380662760, -0.460283661551124880, -0.460328049570878250, +-0.460372436439811070, -0.460416822157812820, -0.460461206724772530, -0.460505590140579620, -0.460549972405122300, -0.460594353518290090, -0.460638733479971970, -0.460683112290057430, +-0.460727489948434710, -0.460771866454993300, -0.460816241809622160, -0.460860616012210840, -0.460904989062647600, -0.460949360960821840, -0.460993731706622720, -0.461038101299939660, +-0.461082469740660970, -0.461126837028676070, -0.461171203163874110, -0.461215568146144510, -0.461259931975375570, -0.461304294651456840, -0.461348656174277780, -0.461393016543726660, +-0.461437375759693010, -0.461481733822065920, -0.461526090730734860, -0.461570446485588200, -0.461614801086515480, -0.461659154533405670, -0.461703506826148410, -0.461747857964632020, +-0.461792207948745930, -0.461836556778379310, -0.461880904453421730, -0.461925250973761530, -0.461969596339288140, -0.462013940549890760, -0.462058283605458970, -0.462102625505881050, +-0.462146966251046560, -0.462191305840845060, -0.462235644275164890, -0.462279981553895600, -0.462324317676926390, -0.462368652644146780, -0.462412986455445100, -0.462457319110710970, +-0.462501650609833560, -0.462545980952702440, -0.462590310139205930, -0.462634638169233670, -0.462678965042674810, -0.462723290759418930, -0.462767615319354400, -0.462811938722370860, +-0.462856260968357470, -0.462900582057203800, -0.462944901988798340, -0.462989220763030560, -0.463033538379790170, -0.463077854838965520, -0.463122170140446210, -0.463166484284121550, +-0.463210797269881010, -0.463255109097613080, -0.463299419767207400, -0.463343729278553160, -0.463388037631540020, -0.463432344826056330, -0.463476650861991860, -0.463520955739235680, +-0.463565259457677570, -0.463609562017205880, -0.463653863417710310, -0.463698163659080060, -0.463742462741204790, -0.463786760663973010, -0.463831057427274320, -0.463875353030997920, +-0.463919647475033610, -0.463963940759269720, -0.464008232883596050, -0.464052523847902130, -0.464096813652076560, -0.464141102296008910, -0.464185389779588560, -0.464229676102705100, +-0.464273961265247060, -0.464318245267104080, -0.464362528108165530, -0.464406809788321050, -0.464451090307459120, -0.464495369665469500, -0.464539647862241440, -0.464583924897664650, +-0.464628200771627640, -0.464672475484020130, -0.464716749034731480, -0.464761021423651330, -0.464805292650668220, -0.464849562715671900, -0.464893831618552020, -0.464938099359197220, +-0.464982365937497140, -0.465026631353341160, -0.465070895606618960, -0.465115158697219200, -0.465159420625031460, -0.465203681389945220, -0.465247940991850180, -0.465292199430634880, +-0.465336456706189060, -0.465380712818402100, -0.465424967767163800, -0.465469221552362640, -0.465513474173888440, -0.465557725631630560, -0.465601975925478750, -0.465646225055321610, +-0.465690473021048930, -0.465734719822550440, -0.465778965459714760, -0.465823209932431650, -0.465867453240590530, -0.465911695384081170, -0.465955936362792200, -0.466000176176613320, +-0.466044414825434070, -0.466088652309144150, -0.466132888627632250, -0.466177123780788070, -0.466221357768501100, -0.466265590590661140, -0.466309822247156780, -0.466354052737877890, +-0.466398282062713830, -0.466442510221554530, -0.466486737214288520, -0.466530963040805660, -0.466575187700995820, -0.466619411194747590, -0.466663633521950840, -0.466707854682494980, +-0.466752074676269890, -0.466796293503164210, -0.466840511163067850, -0.466884727655870190, -0.466928942981461090, -0.466973157139729200, -0.467017370130564490, -0.467061581953856330, +-0.467105792609494590, -0.467150002097368010, -0.467194210417366360, -0.467238417569379230, -0.467282623553296470, -0.467326828369006740, -0.467371032016399900, -0.467415234495365540, +-0.467459435805793470, -0.467503635947572380, -0.467547834920592260, -0.467592032724742920, -0.467636229359913110, -0.467680424825992700, -0.467724619122871220, -0.467768812250438650, +-0.467813004208583630, -0.467857194997196080, -0.467901384616165540, -0.467945573065381930, -0.467989760344734000, -0.468033946454111670, -0.468078131393404480, -0.468122315162502360, +-0.468166497761294040, -0.468210679189669520, -0.468254859447518270, -0.468299038534730260, -0.468343216451194260, -0.468387393196800230, -0.468431568771438100, -0.468475743174996680, +-0.468519916407365900, -0.468564088468435280, -0.468608259358094910, -0.468652429076233450, -0.468696597622740910, -0.468740764997506890, -0.468784931200421360, -0.468829096231373090, +-0.468873260090252100, -0.468917422776947920, -0.468961584291350600, -0.469005744633348930, -0.469049903802832900, -0.469094061799692150, -0.469138218623816610, -0.469182374275095070, +-0.469226528753417640, -0.469270682058674340, -0.469314834190753870, -0.469358985149546330, -0.469403134934941350, -0.469447283546828910, -0.469491430985097820, -0.469535577249638240, +-0.469579722340339620, -0.469623866257092180, -0.469668008999784610, -0.469712150568307060, -0.469756290962549120, -0.469800430182400860, -0.469844568227751110, -0.469888705098489960, +-0.469932840794507030, -0.469976975315692440, -0.470021108661934970, -0.470065240833124730, -0.470109371829151410, -0.470153501649905050, -0.470197630295274500, -0.470241757765149930, +-0.470285884059421340, -0.470330009177977630, -0.470374133120708910, -0.470418255887504850, -0.470462377478255590, -0.470506497892849930, -0.470550617131178070, -0.470594735193129670, +-0.470638852078594790, -0.470682967787462380, -0.470727082319622570, -0.470771195674965060, -0.470815307853379940, -0.470859418854756180, -0.470903528678983880, -0.470947637325952740, +-0.470991744795552890, -0.471035851087673320, -0.471079956202204050, -0.471124060139035350, -0.471168162898056080, -0.471212264479156430, -0.471256364882226110, -0.471300464107155260, +-0.471344562153832860, -0.471388659022149050, -0.471432754711993580, -0.471476849223256610, -0.471520942555827160, -0.471565034709595320, -0.471609125684450960, -0.471653215480284100, +-0.471697304096983850, -0.471741391534440340, -0.471785477792543320, -0.471829562871183050, -0.471873646770248460, -0.471917729489629730, -0.471961811029217080, -0.472005891388899480, +-0.472049970568567230, -0.472094048568109990, -0.472138125387418010, -0.472182201026380370, -0.472226275484887210, -0.472270348762828360, -0.472314420860094060, -0.472358491776573300, +-0.472402561512156260, -0.472446630066732880, -0.472490697440193290, -0.472534763632426580, -0.472578828643322960, -0.472622892472772230, -0.472666955120664700, -0.472711016586889410, +-0.472755076871336500, -0.472799135973895950, -0.472843193894457950, -0.472887250632911590, -0.472931306189147080, -0.472975360563054730, -0.473019413754523550, -0.473063465763443820, +-0.473107516589705460, -0.473151566233198710, -0.473195614693812660, -0.473239661971437520, -0.473283708065963260, -0.473327752977280140, -0.473371796705277180, -0.473415839249844760, +-0.473459880610872800, -0.473503920788251490, -0.473547959781869980, -0.473591997591618520, -0.473636034217387150, -0.473680069659066060, -0.473724103916544400, -0.473768136989712490, +-0.473812168878460560, -0.473856199582677880, -0.473900229102254710, -0.473944257437080960, -0.473988284587046950, -0.474032310552041870, -0.474076335331955980, -0.474120358926679250, +-0.474164381336102000, -0.474208402560113430, -0.474252422598603840, -0.474296441451463210, -0.474340459118581860, -0.474384475599848980, -0.474428490895154880, -0.474472505004389590, +-0.474516517927443430, -0.474560529664205530, -0.474604540214566380, -0.474648549578416230, -0.474692557755644280, -0.474736564746141010, -0.474780570549796280, -0.474824575166500560, +-0.474868578596142950, -0.474912580838613930, -0.474956581893803460, -0.475000581761601930, -0.475044580441898510, -0.475088577934583700, -0.475132574239547410, -0.475176569356680070, +-0.475220563285870920, -0.475264556027010400, -0.475308547579988470, -0.475352537944695560, -0.475396527121020870, -0.475440515108854930, -0.475484501908088050, -0.475528487518609540, +-0.475572471940309830, -0.475616455173078930, -0.475660437216807230, -0.475704418071384140, -0.475748397736699910, -0.475792376212644750, -0.475836353499109020, -0.475880329595982030, +-0.475924304503154210, -0.475968278220515630, -0.476012250747956720, -0.476056222085366800, -0.476100192232636330, -0.476144161189655410, -0.476188128956314460, -0.476232095532502790, +-0.476276060918110870, -0.476320025113028790, -0.476363988117147090, -0.476407949930355010, -0.476451910552543050, -0.476495869983601660, -0.476539828223420280, -0.476583785271889270, +-0.476627741128898830, -0.476671695794339430, -0.476715649268100390, -0.476759601550072190, -0.476803552640145010, -0.476847502538209340, -0.476891451244154550, -0.476935398757871110, +-0.476979345079249220, -0.477023290208179300, -0.477067234144550770, -0.477111176888254160, -0.477155118439179630, -0.477199058797217690, -0.477242997962257660, -0.477286935934190190, +-0.477330872712905750, -0.477374808298293760, -0.477418742690244760, -0.477462675888648880, -0.477506607893396660, -0.477550538704377580, -0.477594468321482170, -0.477638396744600570, +-0.477682323973623370, -0.477726250008439930, -0.477770174848940910, -0.477814098495016440, -0.477858020946557100, -0.477901942203452330, -0.477945862265592710, -0.477989781132868440, +-0.478033698805170100, -0.478077615282387130, -0.478121530564410090, -0.478165444651129650, -0.478209357542435210, -0.478253269238217370, -0.478297179738366330, -0.478341089042772730, +-0.478384997151326040, -0.478428904063916860, -0.478472809780435440, -0.478516714300772360, -0.478560617624817110, -0.478604519752460320, -0.478648420683592200, -0.478692320418103450, +-0.478736218955883470, -0.478780116296822990, -0.478824012440812240, -0.478867907387741760, -0.478911801137501200, -0.478955693689981140, -0.478999585045071790, -0.479043475202663880, +-0.479087364162646910, -0.479131251924911570, -0.479175138489348450, -0.479219023855847080, -0.479262908024298160, -0.479306790994591950, -0.479350672766619190, -0.479394553340269370, +-0.479438432715433130, -0.479482310892000830, -0.479526187869863120, -0.479570063648909530, -0.479613938229030810, -0.479657811610117280, -0.479701683792059570, -0.479745554774747280, +-0.479789424558071110, -0.479833293141921360, -0.479877160526188730, -0.479921026710762870, -0.479964891695534410, -0.480008755480394120, -0.480052618065231580, -0.480096479449937440, +-0.480140339634402170, -0.480184198618516360, -0.480228056402169760, -0.480271912985252960, -0.480315768367656380, -0.480359622549270780, -0.480403475529985690, -0.480447327309691970, +-0.480491177888279890, -0.480535027265640290, -0.480578875441662720, -0.480622722416237940, -0.480666568189256400, -0.480710412760608770, -0.480754256130184800, -0.480798098297875120, +-0.480841939263570610, -0.480885779027160840, -0.480929617588536640, -0.480973454947588420, -0.481017291104206930, -0.481061126058281830, -0.481104959809703910, -0.481148792358363550, +-0.481192623704151670, -0.481236453846957790, -0.481280282786672790, -0.481324110523187130, -0.481367937056391530, -0.481411762386175670, -0.481455586512430480, -0.481499409435046270, +-0.481543231153913950, -0.481587051668923130, -0.481630870979964710, -0.481674689086929510, -0.481718505989707220, -0.481762321688188610, -0.481806136182264200, -0.481849949471824910, +-0.481893761556760280, -0.481937572436961280, -0.481981382112318340, -0.482025190582722360, -0.482068997848062950, -0.482112803908231080, -0.482156608763117220, -0.482200412412612240, +-0.482244214856605790, -0.482288016094988840, -0.482331816127651860, -0.482375614954485670, -0.482419412575380120, -0.482463208990225990, -0.482507004198913850, -0.482550798201334620, +-0.482594590997377950, -0.482638382586934870, -0.482682172969896180, -0.482725962146151650, -0.482769750115592260, -0.482813536878108460, -0.482857322433591250, -0.482901106781930320, +-0.482944889923016600, -0.482988671856740660, -0.483032452582993430, -0.483076232101664730, -0.483120010412645410, -0.483163787515826060, -0.483207563411097660, -0.483251338098349910, +-0.483295111577473850, -0.483338883848360050, -0.483382654910899380, -0.483426424764981710, -0.483470193410497960, -0.483513960847339110, -0.483557727075394960, -0.483601492094556500, +-0.483645255904714300, -0.483689018505759400, -0.483732779897581510, -0.483776540080071700, -0.483820299053120520, -0.483864056816619040, -0.483907813370456960, -0.483951568714525380, +-0.483995322848714880, -0.484039075772916440, -0.484082827487019920, -0.484126577990916350, -0.484170327284496330, -0.484214075367650880, -0.484257822240269860, -0.484301567902244270, +-0.484345312353465170, -0.484389055593822390, -0.484432797623206960, -0.484476538441509560, -0.484520278048621190, -0.484564016444431760, -0.484607753628832240, -0.484651489601713340, +-0.484695224362966140, -0.484738957912480510, -0.484782690250147420, -0.484826421375857630, -0.484870151289502230, -0.484913879990970960, -0.484957607480155100, -0.485001333756945150, +-0.485045058821232280, -0.485088782672906340, -0.485132505311858480, -0.485176226737979330, -0.485219946951160050, -0.485263665951290450, -0.485307383738261770, -0.485351100311964930, +-0.485394815672289980, -0.485438529819128000, -0.485482242752369730, -0.485525954471906160, -0.485569664977627380, -0.485613374269424410, -0.485657082347188070, -0.485700789210809340, +-0.485744494860178290, -0.485788199295185960, -0.485831902515723170, -0.485875604521680990, -0.485919305312949410, -0.485963004889419570, -0.486006703250982220, -0.486050400397528500, +-0.486094096328948400, -0.486137791045133050, -0.486181484545973600, -0.486225176831360070, -0.486268867901183570, -0.486312557755334940, -0.486356246393705280, -0.486399933816184630, +-0.486443620022664110, -0.486487305013034610, -0.486530988787187150, -0.486574671345011870, -0.486618352686399910, -0.486662032811242100, -0.486705711719429560, -0.486749389410852380, +-0.486793065885401720, -0.486836741142968380, -0.486880415183443550, -0.486924088006717330, -0.486967759612680910, -0.487011430001225430, -0.487055099172241050, -0.487098767125618890, +-0.487142433861249780, -0.487186099379025020, -0.487229763678834580, -0.487273426760569780, -0.487317088624121380, -0.487360749269380670, -0.487404408696237690, -0.487448066904583640, +-0.487491723894309500, -0.487535379665306410, -0.487579034217464460, -0.487622687550674950, -0.487666339664828700, -0.487709990559817010, -0.487753640235529920, -0.487797288691858790, +-0.487840935928694760, -0.487884581945928040, -0.487928226743449880, -0.487971870321151140, -0.488015512678923120, -0.488059153816655930, -0.488102793734240810, -0.488146432431568740, +-0.488190069908530980, -0.488233706165017660, -0.488277341200920090, -0.488320975016129140, -0.488364607610536130, -0.488408238984031240, -0.488451869136505730, -0.488495498067850590, +-0.488539125777957050, -0.488582752266715330, -0.488626377534016720, -0.488670001579752160, -0.488713624403813000, -0.488757246006089390, -0.488800866386472630, -0.488844485544854160, +-0.488888103481124050, -0.488931720195173670, -0.488975335686894000, -0.489018949956176400, -0.489062563002911010, -0.489106174826989200, -0.489149785428302010, -0.489193394806740680, +-0.489237002962195520, -0.489280609894557790, -0.489324215603718640, -0.489367820089569250, -0.489411423351999940, -0.489455025390902130, -0.489498626206166690, -0.489542225797685080, +-0.489585824165347520, -0.489629421309045410, -0.489673017228670180, -0.489716611924111980, -0.489760205395262220, -0.489803797642011980, -0.489847388664252650, -0.489890978461874400, +-0.489934567034768730, -0.489978154382826660, -0.490021740505939610, -0.490065325403997780, -0.490108909076892640, -0.490152491524515290, -0.490196072746757030, -0.490239652743508230, +-0.490283231514660300, -0.490326809060104290, -0.490370385379731600, -0.490413960473432610, -0.490457534341098730, -0.490501106982621340, -0.490544678397890840, -0.490588248586798670, +-0.490631817549235850, -0.490675385285093860, -0.490718951794263000, -0.490762517076634820, -0.490806081132100340, -0.490849643960550970, -0.490893205561877160, -0.490936765935970350, +-0.490980325082721600, -0.491023883002022430, -0.491067439693763150, -0.491110995157835300, -0.491154549394129950, -0.491198102402538640, -0.491241654182951630, -0.491285204735260550, +-0.491328754059356390, -0.491372302155130780, -0.491415849022474040, -0.491459394661277640, -0.491502939071433160, -0.491546482252830930, -0.491590024205362520, -0.491633564928919020, +-0.491677104423392020, -0.491720642688671830, -0.491764179724650090, -0.491807715531217880, -0.491851250108266750, -0.491894783455687100, -0.491938315573370530, -0.491981846461208180, +-0.492025376119091580, -0.492068904546911160, -0.492112431744558430, -0.492155957711924660, -0.492199482448901380, -0.492243005955379010, -0.492286528231249130, -0.492330049276403340, +-0.492373569090731990, -0.492417087674126730, -0.492460605026478760, -0.492504121147679660, -0.492547636037619860, -0.492591149696191000, -0.492634662123284270, -0.492678173318791210, +-0.492721683282602410, -0.492765192014609330, -0.492808699514703350, -0.492852205782775940, -0.492895710818717640, -0.492939214622420070, -0.492982717193774510, -0.493026218532672480, +-0.493069718639004560, -0.493113217512662290, -0.493156715153537430, -0.493200211561520330, -0.493243706736502750, -0.493287200678375890, -0.493330693387031390, -0.493374184862359840, +-0.493417675104252770, -0.493461164112601490, -0.493504651887297750, -0.493548138428231980, -0.493591623735295800, -0.493635107808380660, -0.493678590647378070, -0.493722072252178620, +-0.493765552622674020, -0.493809031758755510, -0.493852509660314800, -0.493895986327242460, -0.493939461759430150, -0.493982935956769560, -0.494026408919151280, -0.494069880646466950, +-0.494113351138607880, -0.494156820395465880, -0.494200288416931420, -0.494243755202896210, -0.494287220753251650, -0.494330685067889410, -0.494374148146700050, -0.494417609989575350, +-0.494461070596406650, -0.494504529967085600, -0.494547988101502910, -0.494591444999550210, -0.494634900661118870, -0.494678355086100700, -0.494721808274386280, -0.494765260225867310, +-0.494808710940435160, -0.494852160417981630, -0.494895608658397320, -0.494939055661574030, -0.494982501427403470, -0.495025945955776260, -0.495069389246584170, -0.495112831299718610, +-0.495156272115071350, -0.495199711692533070, -0.495243150031995480, -0.495286587133350000, -0.495330022996488480, -0.495373457621301470, -0.495416891007680830, -0.495460323155517970, +-0.495503754064704700, -0.495547183735131620, -0.495590612166690650, -0.495634039359273080, -0.495677465312770850, -0.495720890027074530, -0.495764313502076000, -0.495807735737667070, +-0.495851156733738420, -0.495894576490181930, -0.495937995006888900, -0.495981412283751370, -0.496024828320659860, -0.496068243117506250, -0.496111656674182110, -0.496155068990579150, +-0.496198480066588180, -0.496241889902101000, -0.496285298497009090, -0.496328705851204310, -0.496372111964577370, -0.496415516837020180, -0.496458920468424160, -0.496502322858681230, +-0.496545724007682150, -0.496589123915318730, -0.496632522581482880, -0.496675920006065360, -0.496719316188958040, -0.496762711130052380, -0.496806104829240370, -0.496849497286412760, +-0.496892888501461350, -0.496936278474277680, -0.496979667204753780, -0.497023054692780300, -0.497066440938249140, -0.497109825941051960, -0.497153209701080510, -0.497196592218225710, +-0.497239973492379420, -0.497283353523433220, -0.497326732311278940, -0.497370109855807540, -0.497413486156910830, -0.497456861214480350, -0.497500235028408180, -0.497543607598585010, +-0.497586978924902830, -0.497630349007253560, -0.497673717845528050, -0.497717085439618230, -0.497760451789415750, -0.497803816894812460, -0.497847180755699280, -0.497890543371968140, +-0.497933904743510620, -0.497977264870218760, -0.498020623751983360, -0.498063981388696340, -0.498107337780249400, -0.498150692926534520, -0.498194046827442500, -0.498237399482865380, +-0.498280750892694750, -0.498324101056822680, -0.498367449975139880, -0.498410797647538540, -0.498454144073910530, -0.498497489254146780, -0.498540833188139350, -0.498584175875779800, +-0.498627517316960200, -0.498670857511571420, -0.498714196459505540, -0.498757534160654100, -0.498800870614909240, -0.498844205822161820, -0.498887539782303880, -0.498930872495227110, +-0.498974203960823540, -0.499017534178984090, -0.499060863149600740, -0.499104190872565300, -0.499147517347769740, -0.499190842575104990, -0.499234166554463180, -0.499277489285736290, +-0.499320810768815290, -0.499364131003592340, -0.499407449989958950, -0.499450767727807390, -0.499494084217028510, -0.499537399457514460, -0.499580713449156830, -0.499624026191847870, +-0.499667337685478440, -0.499710647929940630, -0.499753956925126250, -0.499797264670927330, -0.499840571167234900, -0.499883876413941000, -0.499927180410937420, -0.499970483158116320, +-0.500013784655368610, -0.500057084902586380, -0.500100383899661830, -0.500143681646486040, -0.500186978142950990, -0.500230273388948430, -0.500273567384370680, -0.500316860129108480, +-0.500360151623054250, -0.500403441866099640, -0.500446730858136730, -0.500490018599056730, -0.500533305088751600, -0.500576590327113210, -0.500619874314033760, -0.500663157049404230, +-0.500706438533116690, -0.500749718765063250, -0.500792997745135750, -0.500836275473225400, -0.500879551949224400, -0.500922827173024500, -0.500966101144518010, -0.501009373863595790, +-0.501052645330150150, -0.501095915544073290, -0.501139184505256190, -0.501182452213591150, -0.501225718668970030, -0.501268983871285050, -0.501312247820427160, -0.501355510516288570, +-0.501398771958761370, -0.501442032147737530, -0.501485291083108240, -0.501528548764765710, -0.501571805192601810, -0.501615060366508710, -0.501658314286377640, -0.501701566952100890, +-0.501744818363570100, -0.501788068520677700, -0.501831317423314660, -0.501874565071373400, -0.501917811464746120, -0.501961056603323910, -0.502004300486999070, -0.502047543115663460, +-0.502090784489209300, -0.502134024607527870, -0.502177263470511390, -0.502220501078051830, -0.502263737430041270, -0.502306972526371020, -0.502350206366933390, -0.502393438951620140, +-0.502436670280323790, -0.502479900352935330, -0.502523129169347160, -0.502566356729451050, -0.502609583033139520, -0.502652808080303660, -0.502696031870835780, -0.502739254404628190, +-0.502782475681572080, -0.502825695701559770, -0.502868914464483230, -0.502912131970234770, -0.502955348218705580, -0.502998563209788090, -0.503041776943374150, -0.503084989419356200, +-0.503128200637625310, -0.503171410598073910, -0.503214619300594080, -0.503257826745078020, -0.503301032931417040, -0.503344237859503440, -0.503387441529229320, -0.503430643940486870, +-0.503473845093167500, -0.503517044987163540, -0.503560243622366840, -0.503603440998670050, -0.503646637115964250, -0.503689831974141860, -0.503733025573095180, -0.503776217912715650, +-0.503819408992895570, -0.503862598813526910, -0.503905787374502200, -0.503948974675712650, -0.503992160717050550, -0.504035345498408120, -0.504078529019677760, -0.504121711280750670, +-0.504164892281519280, -0.504208072021875680, -0.504251250501712270, -0.504294427720920260, -0.504337603679392290, -0.504380778377020330, -0.504423951813696700, -0.504467123989312930, +-0.504510294903761310, -0.504553464556934280, -0.504596632948723260, -0.504639800079020650, -0.504682965947718550, -0.504726130554709380, -0.504769293899884450, -0.504812455983136400, +-0.504855616804357200, -0.504898776363439270, -0.504941934660274040, -0.504985091694754030, -0.505028247466771220, -0.505071401976218250, -0.505114555222986320, -0.505157707206968070, +-0.505200857928055470, -0.505244007386141170, -0.505287155581116370, -0.505330302512873810, -0.505373448181305810, -0.505416592586303780, -0.505459735727760370, -0.505502877605567560, +-0.505546018219617980, -0.505589157569802940, -0.505632295656014970, -0.505675432478146280, -0.505718568036089390, -0.505761702329735720, -0.505804835358977800, -0.505847967123707720, +-0.505891097623818230, -0.505934226859200530, -0.505977354829747260, -0.506020481535350620, -0.506063606975903140, -0.506106731151296340, -0.506149854061422650, -0.506192975706174720, +-0.506236096085443950, -0.506279215199122890, -0.506322333047103830, -0.506365449629279430, -0.506408564945540870, -0.506451678995781030, -0.506494791779891870, -0.506537903297766160, +-0.506581013549295300, -0.506624122534371950, -0.506667230252888290, -0.506710336704736970, -0.506753441889809310, -0.506796545807998160, -0.506839648459195600, -0.506882749843294290, +-0.506925849960185640, -0.506968948809762510, -0.507012046391916990, -0.507055142706541620, -0.507098237753528140, -0.507141331532768970, -0.507184424044156980, -0.507227515287583360, +-0.507270605262941100, -0.507313693970122270, -0.507356781409019630, -0.507399867579524600, -0.507442952481529930, -0.507486036114927930, -0.507529118479611130, -0.507572199575471170, +-0.507615279402400810, -0.507658357960292130, -0.507701435249037990, -0.507744511268529930, -0.507787586018660480, -0.507830659499322160, -0.507873731710407510, -0.507916802651808160, +-0.507959872323416880, -0.508002940725126200, -0.508046007856827850, -0.508089073718414390, -0.508132138309778330, -0.508175201630812310, -0.508218263681407880, -0.508261324461457780, +-0.508304383970854420, -0.508347442209490460, -0.508390499177257430, -0.508433554874048290, -0.508476609299755130, -0.508519662454270940, -0.508562714337487120, -0.508605764949296550, +-0.508648814289591630, -0.508691862358265020, -0.508734909155208360, -0.508777954680314390, -0.508820998933475880, -0.508864041914584560, -0.508907083623533210, -0.508950124060214000, +-0.508993163224519930, -0.509036201116342620, -0.509079237735574730, -0.509122273082108780, -0.509165307155837520, -0.509208339956652710, -0.509251371484446880, -0.509294401739112780, +-0.509337430720542940, -0.509380458428629220, -0.509423484863264280, -0.509466510024340740, -0.509509533911751130, -0.509552556525387450, -0.509595577865142310, -0.509638597930908270, +-0.509681616722578060, -0.509724634240043550, -0.509767650483197280, -0.509810665451932430, -0.509853679146140440, -0.509896691565714270, -0.509939702710546340, -0.509982712580529630, +-0.510025721175555670, -0.510068728495517430, -0.510111734540307340, -0.510154739309818360, -0.510197742803942140, -0.510240745022571550, -0.510283745965599110, -0.510326745632917580, +-0.510369744024418930, -0.510412741139995910, -0.510455736979540940, -0.510498731542947120, -0.510541724830106070, -0.510584716840910670, -0.510627707575253890, -0.510670697033027480, +-0.510713685214124190, -0.510756672118436780, -0.510799657745858120, -0.510842642096279940, -0.510885625169595130, -0.510928606965696200, -0.510971587484476130, -0.511014566725826790, +-0.511057544689641040, -0.511100521375811300, -0.511143496784230770, -0.511186470914791080, -0.511229443767385220, -0.511272415341905710, -0.511315385638245520, -0.511358354656296530, +-0.511401322395951710, -0.511444288857103910, -0.511487254039645010, -0.511530217943467980, -0.511573180568465350, -0.511616141914530200, -0.511659101981554290, -0.511702060769430700, +-0.511745018278051860, -0.511787974507310950, -0.511830929457099630, -0.511873883127311080, -0.511916835517837730, -0.511959786628572780, -0.512002736459407860, -0.512045685010236170, +-0.512088632280950250, -0.512131578271443180, -0.512174522981606710, -0.512217466411333920, -0.512260408560517910, -0.512303349429050540, -0.512346289016824660, -0.512389227323733150, +-0.512432164349668980, -0.512475100094523910, -0.512518034558191230, -0.512560967740563370, -0.512603899641533410, -0.512646830260993450, -0.512689759598836340, -0.512732687654954830, +-0.512775614429242020, -0.512818539921589770, -0.512861464131891260, -0.512904387060038940, -0.512947308705926090, -0.512990229069444690, -0.513033148150487620, -0.513076065948947610, +-0.513118982464717990, -0.513161897697690380, -0.513204811647758110, -0.513247724314814140, -0.513290635698750550, -0.513333545799460330, -0.513376454616836230, -0.513419362150771330, +-0.513462268401157720, -0.513505173367888370, -0.513548077050856140, -0.513590979449954130, -0.513633880565074310, -0.513676780396109640, -0.513719678942953120, -0.513762576205497810, +-0.513805472183635700, -0.513848366877259770, -0.513891260286263090, -0.513934152410538530, -0.513977043249978170, -0.514019932804475330, -0.514062821073922980, -0.514105708058213210, +-0.514148593757239090, -0.514191478170893610, -0.514234361299069740, -0.514277243141659570, -0.514320123698556400, -0.514363002969652870, -0.514405880954842190, -0.514448757654016430, +-0.514491633067068690, -0.514534507193891930, -0.514577380034379360, -0.514620251588422950, -0.514663121855915780, -0.514705990836750950, -0.514748858530821420, -0.514791724938019390, +-0.514834590058238060, -0.514877453891370740, -0.514920316437309290, -0.514963177695947020, -0.515006037667176900, -0.515048896350892020, -0.515091753746984460, -0.515134609855347540, +-0.515177464675874220, -0.515220318208457480, -0.515263170452989640, -0.515306021409363880, -0.515348871077472960, -0.515391719457210300, -0.515434566548467980, -0.515477412351139310, +-0.515520256865117040, -0.515563100090294490, -0.515605942026563850, -0.515648782673818310, -0.515691622031950850, -0.515734460100854660, -0.515777296880421950, -0.515820132370546030, +-0.515862966571120190, -0.515905799482036520, -0.515948631103188340, -0.515991461434468610, -0.516034290475770650, -0.516077118226986540, -0.516119944688009590, -0.516162769858732770, +-0.516205593739049510, -0.516248416328851770, -0.516291237628033080, -0.516334057636486210, -0.516376876354104670, -0.516419693780780560, -0.516462509916407080, -0.516505324760877520, +-0.516548138314084860, -0.516590950575921530, -0.516633761546280820, -0.516676571225056170, -0.516719379612139650, -0.516762186707424580, -0.516804992510804140, -0.516847797022171650, +-0.516890600241419200, -0.516933402168440300, -0.516976202803127840, -0.517019002145375330, -0.517061800195074860, -0.517104596952119970, -0.517147392416403510, -0.517190186587819010, +-0.517232979466258680, -0.517275771051615820, -0.517318561343783510, -0.517361350342655290, -0.517404138048123240, -0.517446924460080890, -0.517489709578421550, -0.517532493403037640, +-0.517575275933822470, -0.517618057170669000, -0.517660837113470880, -0.517703615762120320, -0.517746393116510610, -0.517789169176534950, -0.517831943942086870, -0.517874717413058460, +-0.517917489589343140, -0.517960260470834210, -0.518003030057425100, -0.518045798349007880, -0.518088565345476200, -0.518131331046723150, -0.518174095452642150, -0.518216858563125490, +-0.518259620378066720, -0.518302380897359250, -0.518345140120895500, -0.518387898048568880, -0.518430654680272500, -0.518473410015899860, -0.518516164055343290, -0.518558916798496310, +-0.518601668245252110, -0.518644418395504010, -0.518687167249144650, -0.518729914806067230, -0.518772661066165040, -0.518815406029331630, -0.518858149695459290, -0.518900892064441570, +-0.518943633136171640, -0.518986372910543060, -0.519029111387448120, -0.519071848566780350, -0.519114584448432950, -0.519157319032299560, -0.519200052318272490, -0.519242784306245260, +-0.519285514996111420, -0.519328244387763370, -0.519370972481094870, -0.519413699275998790, -0.519456424772368860, -0.519499148970097520, -0.519541871869078300, -0.519584593469204490, +-0.519627313770369530, -0.519670032772465820, -0.519712750475387120, -0.519755466879026520, -0.519798181983277540, -0.519840895788032830, -0.519883608293185920, -0.519926319498629890, +-0.519969029404258490, -0.520011738009964030, -0.520054445315640380, -0.520097151321180950, -0.520139856026478280, -0.520182559431425880, -0.520225261535917190, -0.520267962339845620, +-0.520310661843103820, -0.520353360045585410, -0.520396056947183490, -0.520438752547791930, -0.520481446847303020, -0.520524139845610520, -0.520566831542607740, -0.520609521938188210, +-0.520652211032244460, -0.520694898824670240, -0.520737585315358630, -0.520780270504203610, -0.520822954391097490, -0.520865636975933910, -0.520908318258606730, -0.520950998239008260, +-0.520993676917032360, -0.521036354292572330, -0.521079030365521720, -0.521121705135773160, -0.521164378603220290, -0.521207050767756530, -0.521249721629275520, -0.521292391187669790, +-0.521335059442833090, -0.521377726394658850, -0.521420392043040580, -0.521463056387870940, -0.521505719429043670, -0.521548381166452080, -0.521591041599989920, -0.521633700729549840, +-0.521676358555025480, -0.521719015076310240, -0.521761670293297790, -0.521804324205880850, -0.521846976813952980, -0.521889628117408130, -0.521932278116138850, -0.521974926810038880, +-0.522017574199001630, -0.522060220282920760, -0.522102865061688900, -0.522145508535199920, -0.522188150703347230, -0.522230791566024480, -0.522273431123124410, -0.522316069374540780, +-0.522358706320166900, -0.522401341959896740, -0.522443976293622710, -0.522486609321238800, -0.522529241042638430, -0.522571871457715330, -0.522614500566362050, -0.522657128368472670, +-0.522699754863940710, -0.522742380052659050, -0.522785003934521430, -0.522827626509421380, -0.522870247777252550, -0.522912867737907790, -0.522955486391280750, -0.522998103737265070, +-0.523040719775754500, -0.523083334506641790, -0.523125947929820700, -0.523168560045184750, -0.523211170852627800, -0.523253780352042510, -0.523296388543322720, -0.523338995426362090, +-0.523381601001054240, -0.523424205267292050, -0.523466808224969380, -0.523509409873979980, -0.523552010214216710, -0.523594609245573440, -0.523637206967943690, -0.523679803381221220, +-0.523722398485298890, -0.523764992280070560, -0.523807584765429770, -0.523850175941270480, -0.523892765807485230, -0.523935354363968100, -0.523977941610612620, -0.524020527547312650, +-0.524063112173960950, -0.524105695490451500, -0.524148277496677810, -0.524190858192533860, -0.524233437577912300, -0.524276015652707210, -0.524318592416812000, -0.524361167870120770, +-0.524403742012526150, -0.524446314843922230, -0.524488886364202990, -0.524531456573261060, -0.524574025470990520, -0.524616593057284810, -0.524659159332038110, -0.524701724295143060, +-0.524744287946493750, -0.524786850285983820, -0.524829411313507020, -0.524871971028956330, -0.524914529432225720, -0.524957086523208720, -0.524999642301799520, -0.525042196767890660, +-0.525084749921376440, -0.525127301762150280, -0.525169852290106380, -0.525212401505137370, -0.525254949407137350, -0.525297495996000290, -0.525340041271619150, -0.525382585233887920, +-0.525425127882700240, -0.525467669217950070, -0.525510209239530400, -0.525552747947335200, -0.525595285341258100, -0.525637821421193200, -0.525680356187033350, -0.525722889638672640, +-0.525765421776004720, -0.525807952598923540, -0.525850482107322210, -0.525893010301094590, -0.525935537180134420, -0.525978062744335890, -0.526020586993591780, -0.526063109927796150, +-0.526105631546843200, -0.526148151850625690, -0.526190670839037920, -0.526233188511973430, -0.526275704869326290, -0.526318219910989590, -0.526360733636857310, -0.526403246046823200, +-0.526445757140781350, -0.526488266918624710, -0.526530775380247400, -0.526573282525543140, -0.526615788354406140, -0.526658292866729270, -0.526700796062406610, -0.526743297941332010, +-0.526785798503399460, -0.526828297748502150, -0.526870795676534050, -0.526913292287389260, -0.526955787580960950, -0.526998281557143120, -0.527040774215829620, -0.527083265556914650, +-0.527125755580290960, -0.527168244285852960, -0.527210731673494410, -0.527253217743109290, -0.527295702494590900, -0.527338185927833100, -0.527380668042729980, -0.527423148839175520, +-0.527465628317062670, -0.527508106476285880, -0.527550583316738870, -0.527593058838315640, -0.527635533040909490, -0.527678005924414490, -0.527720477488724530, -0.527762947733733670, +-0.527805416659335110, -0.527847884265422950, -0.527890350551891490, -0.527932815518633800, -0.527975279165543990, -0.528017741492516010, -0.528060202499444190, -0.528102662186221370, +-0.528145120552741880, -0.528187577598899560, -0.528230033324588730, -0.528272487729702480, -0.528314940814134990, -0.528357392577780140, -0.528399843020532110, -0.528442292142284220, +-0.528484739942930550, -0.528527186422364960, -0.528569631580481870, -0.528612075417174250, -0.528654517932336530, -0.528696959125862790, -0.528739398997646330, -0.528781837547581460, +-0.528824274775561820, -0.528866710681482060, -0.528909145265235030, -0.528951578526715150, -0.528994010465816290, -0.529036441082432860, -0.529078870376457840, -0.529121298347785760, +-0.529163724996310370, -0.529206150321926080, -0.529248574324525990, -0.529290997004004500, -0.529333418360255600, -0.529375838393173370, -0.529418257102651340, -0.529460674488583470, +-0.529503090550864420, -0.529545505289387260, -0.529587918704046310, -0.529630330794735540, -0.529672741561349360, -0.529715151003780970, -0.529757559121924680, -0.529799965915674460, +-0.529842371384924740, -0.529884775529568700, -0.529927178349500760, -0.529969579844614790, -0.530011980014805320, -0.530054378859965540, -0.530096776379989750, -0.530139172574772060, +-0.530181567444206750, -0.530223960988187250, -0.530266353206607750, -0.530308744099362350, -0.530351133666345560, -0.530393521907450480, -0.530435908822571740, -0.530478294411603430, +-0.530520678674439080, -0.530563061610973110, -0.530605443221099370, -0.530647823504712400, -0.530690202461705620, -0.530732580091973220, -0.530774956395409390, -0.530817331371908560, +-0.530859705021364040, -0.530902077343670230, -0.530944448338721230, -0.530986818006411450, -0.531029186346634320, -0.531071553359284240, -0.531113919044255200, -0.531156283401441720, +-0.531198646430737220, -0.531241008132036120, -0.531283368505232830, -0.531325727550220780, -0.531368085266894390, -0.531410441655147730, -0.531452796714875440, -0.531495150445970730, +-0.531537502848328130, -0.531579853921841820, -0.531622203666406220, -0.531664552081914770, -0.531706899168261860, -0.531749244925341810, -0.531791589353048930, -0.531833932451276750, +-0.531876274219919790, -0.531918614658872020, -0.531960953768028210, -0.532003291547281540, -0.532045627996526770, -0.532087963115658200, -0.532130296904569370, -0.532172629363154790, +-0.532214960491308680, -0.532257290288925430, -0.532299618755898710, -0.532341945892122910, -0.532384271697492250, -0.532426596171901250, -0.532468919315243320, -0.532511241127413220, +-0.532553561608305030, -0.532595880757813170, -0.532638198575831390, -0.532680515062254000, -0.532722830216975310, -0.532765144039889950, -0.532807456530891450, -0.532849767689874240, +-0.532892077516732950, -0.532934386011361120, -0.532976693173653370, -0.533018999003503800, -0.533061303500807160, -0.533103606665456860, -0.533145908497347550, -0.533188208996373540, +-0.533230508162429340, -0.533272805995408380, -0.533315102495205530, -0.533357397661714970, -0.533399691494831130, -0.533441983994447870, -0.533484275160459490, -0.533526564992760520, +-0.533568853491245500, -0.533611140655807950, -0.533653426486342510, -0.533695710982743600, -0.533737994144905640, -0.533780275972722480, -0.533822556466088560, -0.533864835624898610, +-0.533907113449046180, -0.533949389938426000, -0.533991665092932390, -0.534033938912459980, -0.534076211396902310, -0.534118482546154130, -0.534160752360109740, -0.534203020838663780, +-0.534245287981709890, -0.534287553789142940, -0.534329818260857010, -0.534372081396746860, -0.534414343196706220, -0.534456603660629640, -0.534498862788411630, -0.534541120579946740, +-0.534583377035128700, -0.534625632153852280, -0.534667885936012110, -0.534710138381501940, -0.534752389490216310, -0.534794639262049730, -0.534836887696896970, -0.534879134794651550, +-0.534921380555208330, -0.534963624978461730, -0.535005868064306390, -0.535048109812635950, -0.535090350223345280, -0.535132589296328680, -0.535174827031481120, -0.535217063428696020, +-0.535259298487868240, -0.535301532208892210, -0.535343764591662770, -0.535385995636073590, -0.535428225342019280, -0.535470453709394940, -0.535512680738093990, -0.535554906428011400, +-0.535597130779041470, -0.535639353791079190, -0.535681575464018070, -0.535723795797752980, -0.535766014792178450, -0.535808232447189340, -0.535850448762679180, -0.535892663738542830, +-0.535934877374674930, -0.535977089670970240, -0.536019300627322390, -0.536061510243626250, -0.536103718519776340, -0.536145925455667640, -0.536188131051193670, -0.536230335306249310, +-0.536272538220729180, -0.536314739794528040, -0.536356940027539750, -0.536399138919659070, -0.536441336470780850, -0.536483532680798960, -0.536525727549608260, -0.536567921077103270, +-0.536610113263178870, -0.536652304107728680, -0.536694493610647800, -0.536736681771830760, -0.536778868591172300, -0.536821054068566280, -0.536863238203907690, -0.536905420997090930, +-0.536947602448011100, -0.536989782556561820, -0.537031961322638090, -0.537074138746134520, -0.537116314826945880, -0.537158489564966150, -0.537200662960090170, -0.537242835012212820, +-0.537285005721228170, -0.537327175087030870, -0.537369343109515670, -0.537411509788577550, -0.537453675124110240, -0.537495839116008730, -0.537538001764167660, -0.537580163068481890, +-0.537622323028845380, -0.537664481645153130, -0.537706638917299530, -0.537748794845179790, -0.537790949428687770, -0.537833102667718220, -0.537875254562166010, -0.537917405111925980, +-0.537959554316892130, -0.538001702176959420, -0.538043848692022710, -0.538085993861976090, -0.538128137686714410, -0.538170280166132440, -0.538212421300125140, -0.538254561088586490, +-0.538296699531411350, -0.538338836628494470, -0.538380972379730820, -0.538423106785014480, -0.538465239844240330, -0.538507371557302990, -0.538549501924097670, -0.538591630944518230, +-0.538633758618459750, -0.538675884945816860, -0.538718009926484550, -0.538760133560356900, -0.538802255847328880, -0.538844376787295690, -0.538886496380151070, -0.538928614625790230, +-0.538970731524107900, -0.539012847074999080, -0.539054961278357840, -0.539097074134079150, -0.539139185642057760, -0.539181295802188760, -0.539223404614366130, -0.539265512078485050, +-0.539307618194440170, -0.539349722962126690, -0.539391826381438460, -0.539433928452270670, -0.539476029174517980, -0.539518128548075680, -0.539560226572837640, -0.539602323248699060, +-0.539644418575554670, -0.539686512553299690, -0.539728605181827970, -0.539770696461034700, -0.539812786390815090, -0.539854874971063210, -0.539896962201674050, -0.539939048082542560, +-0.539981132613563840, -0.540023215794631860, -0.540065297625641820, -0.540107378106488570, -0.540149457237067200, -0.540191535017271910, -0.540233611446997660, -0.540275686526139440, +-0.540317760254592440, -0.540359832632250630, -0.540401903659009200, -0.540443973334763020, -0.540486041659407280, -0.540528108632836070, -0.540570174254944690, -0.540612238525628120, +-0.540654301444780550, -0.540696363012297290, -0.540738423228073200, -0.540780482092003360, -0.540822539603981860, -0.540864595763904110, -0.540906650571664870, -0.540948704027159330, +-0.540990756130281690, -0.541032806880927140, -0.541074856278990550, -0.541116904324367210, -0.541158951016951220, -0.541200996356637990, -0.541243040343322160, -0.541285082976899030, +-0.541327124257262930, -0.541369164184308920, -0.541411202757932530, -0.541453239978027630, -0.541495275844489640, -0.541537310357213530, -0.541579343516094490, -0.541621375321026610, +-0.541663405771905420, -0.541705434868625660, -0.541747462611082750, -0.541789488999170790, -0.541831514032785070, -0.541873537711820560, -0.541915560036172580, -0.541957581005735320, +-0.541999600620404200, -0.542041618880073960, -0.542083635784640140, -0.542125651333996820, -0.542167665528039410, -0.542209678366662780, -0.542251689849762350, -0.542293699977232310, +-0.542335708748967970, -0.542377716164864850, -0.542419722224816940, -0.542461726928719860, -0.542503730276468370, -0.542545732267957880, -0.542587732903082820, -0.542629732181738380, +-0.542671730103819530, -0.542713726669221800, -0.542755721877839380, -0.542797715729567700, -0.542839708224301610, -0.542881699361936750, -0.542923689142367220, -0.542965677565488410, +-0.543007664631195430, -0.543049650339383680, -0.543091634689947480, -0.543133617682782120, -0.543175599317783140, -0.543217579594844730, -0.543259558513862430, -0.543301536074731310, +-0.543343512277346560, -0.543385487121602730, -0.543427460607395220, -0.543469432734619010, -0.543511403503169510, -0.543553372912941260, -0.543595340963829550, -0.543637307655729480, +-0.543679272988536470, -0.543721236962144920, -0.543763199576450360, -0.543805160831347670, -0.543847120726732580, -0.543889079262499300, -0.543931036438543240, -0.543972992254760030, +-0.544014946711043890, -0.544056899807290440, -0.544098851543394770, -0.544140801919252290, -0.544182750934757430, -0.544224698589805710, -0.544266644884292220, -0.544308589818112590, +-0.544350533391161020, -0.544392475603333150, -0.544434416454524060, -0.544476355944629290, -0.544518294073543240, -0.544560230841161560, -0.544602166247379230, -0.544644100292091870, +-0.544686032975193910, -0.544727964296580770, -0.544769894256148190, -0.544811822853790480, -0.544853750089403290, -0.544895675962881580, -0.544937600474121100, -0.544979523623016270, +-0.545021445409462620, -0.545063365833355460, -0.545105284894590090, -0.545147202593061260, -0.545189118928664400, -0.545231033901294680, -0.545272947510847760, -0.545314859757218160, +-0.545356770640301410, -0.545398680159992600, -0.545440588316187580, -0.545482495108780770, -0.545524400537667600, -0.545566304602743470, -0.545608207303904020, -0.545650108641043570, +-0.545692008614057980, -0.545733907222842650, -0.545775804467292120, -0.545817700347302150, -0.545859594862767920, -0.545901488013585070, -0.545943379799648240, -0.545985270220852860, +-0.546027159277094220, -0.546069046968268190, -0.546110933294269070, -0.546152818254992730, -0.546194701850334250, -0.546236584080189490, -0.546278464944452760, -0.546320344443019910, +-0.546362222575786260, -0.546404099342647440, -0.546445974743497880, -0.546487848778233530, -0.546529721446749830, -0.546571592748941510, -0.546613462684704120, -0.546655331253933170, +-0.546697198456524200, -0.546739064292371960, -0.546780928761371960, -0.546822791863419640, -0.546864653598410740, -0.546906513966239790, -0.546948372966802650, -0.546990230599994520, +-0.547032086865711250, -0.547073941763847270, -0.547115795294298550, -0.547157647456960270, -0.547199498251728310, -0.547241347678497190, -0.547283195737162660, -0.547325042427620590, +-0.547366887749765500, -0.547408731703493130, -0.547450574288699030, -0.547492415505278830, -0.547534255353127270, -0.547576093832140010, -0.547617930942212450, -0.547659766683240570, +-0.547701601055118890, -0.547743434057743170, -0.547785265691008830, -0.547827095954811720, -0.547868924849046480, -0.547910752373608980, -0.547952578528394520, -0.547994403313299070, +-0.548036226728217170, -0.548078048773044780, -0.548119869447677210, -0.548161688752010430, -0.548203506685938980, -0.548245323249358710, -0.548287138442165590, -0.548328952264254270, +-0.548370764715520490, -0.548412575795859890, -0.548454385505168120, -0.548496193843340030, -0.548538000810271490, -0.548579806405858020, -0.548621610629995260, -0.548663413482578190, +-0.548705214963502550, -0.548747015072663880, -0.548788813809958140, -0.548830611175279870, -0.548872407168525140, -0.548914201789589380, -0.548955995038368450, -0.548997786914757200, +-0.549039577418651390, -0.549081366549947100, -0.549123154308539090, -0.549164940694323090, -0.549206725707194750, -0.549248509347049940, -0.549290291613783620, -0.549332072507291440, +-0.549373852027469130, -0.549415630174212470, -0.549457406947416520, -0.549499182346976920, -0.549540956372789440, -0.549582729024749920, -0.549624500302753230, -0.549666270206695230, +-0.549708038736471560, -0.549749805891978190, -0.549791571673109990, -0.549833336079762810, -0.549875099111832630, -0.549916860769214420, -0.549958621051803930, -0.550000379959497020, +-0.550042137492189440, -0.550083893649776170, -0.550125648432153170, -0.550167401839216090, -0.550209153870860780, -0.550250904526982330, -0.550292653807476500, -0.550334401712239130, +-0.550376148241166100, -0.550417893394152260, -0.550459637171093810, -0.550501379571886160, -0.550543120596425520, -0.550584860244606620, -0.550626598516325670, -0.550668335411478530, +-0.550710070929960160, -0.550751805071666660, -0.550793537836493650, -0.550835269224337120, -0.550876999235092150, -0.550918727868654590, -0.550960455124920200, -0.551002181003785060, +-0.551043905505144150, -0.551085628628893430, -0.551127350374928550, -0.551169070743145810, -0.551210789733439950, -0.551252507345707190, -0.551294223579843030, -0.551335938435743800, +-0.551377651913304350, -0.551419364012420750, -0.551461074732988670, -0.551502784074904380, -0.551544492038062660, -0.551586198622359800, -0.551627903827691780, -0.551669607653953560, +-0.551711310101041460, -0.551753011168851000, -0.551794710857278380, -0.551836409166218570, -0.551878106095567870, -0.551919801645221810, -0.551961495815076590, -0.552003188605027280, +-0.552044880014970100, -0.552086570044800660, -0.552128258694415060, -0.552169945963708610, -0.552211631852577160, -0.552253316360916680, -0.552294999488623370, -0.552336681235592100, +-0.552378361601719160, -0.552420040586900640, -0.552461718191031630, -0.552503394414008420, -0.552545069255726660, -0.552586742716082550, -0.552628414794971270, -0.552670085492289020, +-0.552711754807931440, -0.552753422741794950, -0.552795089293774410, -0.552836754463766230, -0.552878418251666170, -0.552920080657370420, -0.552961741680774050, -0.553003401321773390, +-0.553045059580264180, -0.553086716456142710, -0.553128371949304090, -0.553170026059644600, -0.553211678787060350, -0.553253330131446510, -0.553294980092699400, -0.553336628670714760, +-0.553378275865389010, -0.553419921676617130, -0.553461566104295530, -0.553503209148319960, -0.553544850808586730, -0.553586491084991030, -0.553628129977429050, -0.553669767485796770, +-0.553711403609990490, -0.553753038349905190, -0.553794671705437500, -0.553836303676482960, -0.553877934262938080, -0.553919563464698060, -0.553961191281659100, -0.554002817713717070, +-0.554044442760768470, -0.554086066422708410, -0.554127688699433070, -0.554169309590838990, -0.554210929096821240, -0.554252547217276130, -0.554294163952099740, -0.554335779301188160, +-0.554377393264436910, -0.554419005841742090, -0.554460617032999760, -0.554502226838106350, -0.554543835256956940, -0.554585442289447840, -0.554627047935475240, -0.554668652194935440, +-0.554710255067723530, -0.554751856553736040, -0.554793456652868940, -0.554835055365018540, -0.554876652690080130, -0.554918248627950030, -0.554959843178524760, -0.555001436341699410, +-0.555043028117370610, -0.555084618505434110, -0.555126207505786560, -0.555167795118323040, -0.555209381342940070, -0.555250966179533620, -0.555292549628000120, -0.555334131688234870, +-0.555375712360134280, -0.555417291643594440, -0.555458869538511760, -0.555500446044781440, -0.555542021162300110, -0.555583594890963760, -0.555625167230668680, -0.555666738181310400, +-0.555708307742785230, -0.555749875914989700, -0.555791442697818990, -0.555833008091169760, -0.555874572094938070, -0.555916134709020240, -0.555957695933311680, -0.555999255767708920, +-0.556040814212108050, -0.556082371266405470, -0.556123926930496610, -0.556165481204278000, -0.556207034087645600, -0.556248585580496060, -0.556290135682724560, -0.556331684394227870, +-0.556373231714901830, -0.556414777644643200, -0.556456322183347170, -0.556497865330910390, -0.556539407087229270, -0.556580947452199330, -0.556622486425716990, -0.556664024007678340, +-0.556705560197980120, -0.556747094996517530, -0.556788628403187320, -0.556830160417885470, -0.556871691040508600, -0.556913220270952140, -0.556954748109112610, -0.556996274554886210, +-0.557037799608169570, -0.557079323268858010, -0.557120845536848150, -0.557162366412036090, -0.557203885894318570, -0.557245403983591010, -0.557286920679749830, -0.557328435982691440, +-0.557369949892312260, -0.557411462408507810, -0.557452973531174840, -0.557494483260209670, -0.557535991595508040, -0.557577498536966360, -0.557619004084480950, -0.557660508237948330, +-0.557702010997264130, -0.557743512362324890, -0.557785012333026910, -0.557826510909266830, -0.557868008090939950, -0.557909503877943140, -0.557950998270172470, -0.557992491267524810, +-0.558033982869895470, -0.558075473077181190, -0.558116961889278280, -0.558158449306083270, -0.558199935327491790, -0.558241419953400490, -0.558282903183705990, -0.558324385018303840, +-0.558365865457090770, -0.558407344499962990, -0.558448822146817240, -0.558490298397549050, -0.558531773252055160, -0.558573246710231790, -0.558614718771975770, -0.558656189437182430, +-0.558697658705748720, -0.558739126577570850, -0.558780593052545570, -0.558822058130568400, -0.558863521811536090, -0.558904984095344950, -0.558946444981891720, -0.558987904471071940, +-0.559029362562782570, -0.559070819256920040, -0.559112274553380080, -0.559153728452059460, -0.559195180952854590, -0.559236632055662100, -0.559278081760377630, -0.559319530066897940, +-0.559360976975119550, -0.559402422484938990, -0.559443866596252000, -0.559485309308955350, -0.559526750622945430, -0.559568190538118900, -0.559609629054371730, -0.559651066171600320, +-0.559692501889701320, -0.559733936208571480, -0.559775369128106330, -0.559816800648202830, -0.559858230768757290, -0.559899659489666580, -0.559941086810826330, -0.559982512732133290, +-0.560023937253484430, -0.560065360374775390, -0.560106782095902810, -0.560148202416763440, -0.560189621337253810, -0.560231038857269770, -0.560272454976708190, -0.560313869695465480, +-0.560355283013438400, -0.560396694930522800, -0.560438105446615430, -0.560479514561612820, -0.560520922275411730, -0.560562328587908000, -0.560603733498998500, -0.560645137008579650, +-0.560686539116548310, -0.560727939822800230, -0.560769339127232260, -0.560810737029741380, -0.560852133530223340, -0.560893528628574890, -0.560934922324692660, -0.560976314618473420, +-0.561017705509813110, -0.561059094998608510, -0.561100483084756130, -0.561141869768152950, -0.561183255048694710, -0.561224638926278390, -0.561266021400800400, -0.561307402472157820, +-0.561348782140246190, -0.561390160404962810, -0.561431537266203870, -0.561472912723866570, -0.561514286777846540, -0.561555659428040870, -0.561597030674346300, -0.561638400516658920, +-0.561679768954875370, -0.561721135988892510, -0.561762501618607190, -0.561803865843915280, -0.561845228664713650, -0.561886590080898920, -0.561927950092368180, -0.561969308699017070, +-0.562010665900742780, -0.562052021697441840, -0.562093376089011110, -0.562134729075346670, -0.562176080656345390, -0.562217430831903900, -0.562258779601919170, -0.562300126966287170, +-0.562341472924904770, -0.562382817477669160, -0.562424160624476090, -0.562465502365222640, -0.562506842699805330, -0.562548181628121370, -0.562589519150066610, -0.562630855265538020, +-0.562672189974432360, -0.562713523276646480, -0.562754855172076460, -0.562796185660619400, -0.562837514742171810, -0.562878842416630780, -0.562920168683892270, -0.562961493543853390, +-0.563002816996410640, -0.563044139041461330, -0.563085459678901330, -0.563126778908627610, -0.563168096730537030, -0.563209413144526440, -0.563250728150492040, -0.563292041748330810, +-0.563333353937939930, -0.563374664719215160, -0.563415974092053800, -0.563457282056352480, -0.563498588612008300, -0.563539893758917330, -0.563581197496976550, -0.563622499826082920, +-0.563663800746133310, -0.563705100257023810, -0.563746398358651590, -0.563787695050913420, -0.563828990333706260, -0.563870284206926310, -0.563911576670470760, -0.563952867724236140, +-0.563994157368119750, -0.564035445602017570, -0.564076732425826900, -0.564118017839444600, -0.564159301842766970, -0.564200584435691100, -0.564241865618113740, -0.564283145389932180, +-0.564324423751042300, -0.564365700701341290, -0.564406976240726110, -0.564448250369093850, -0.564489523086340590, -0.564530794392363640, -0.564572064287059530, -0.564613332770325660, +-0.564654599842058120, -0.564695865502154120, -0.564737129750510490, -0.564778392587024340, -0.564819654011591730, -0.564860914024110090, -0.564902172624476620, -0.564943429812587270, +-0.564984685588339360, -0.565025939951629640, -0.565067192902355520, -0.565108444440413080, -0.565149694565699520, -0.565190943278111700, -0.565232190577546810, -0.565273436463901160, +-0.565314680937071930, -0.565355923996956000, -0.565397165643450660, -0.565438405876452000, -0.565479644695857320, -0.565520882101563480, -0.565562118093467790, -0.565603352671466550, +-0.565644585835456850, -0.565685817585335760, -0.565727047921000370, -0.565768276842347100, -0.565809504349273130, -0.565850730441675780, -0.565891955119451120, -0.565933178382496680, +-0.565974400230709220, -0.566015620663986250, -0.566056839682223760, -0.566098057285319150, -0.566139273473169500, -0.566180488245671910, -0.566221701602722780, -0.566262913544219430, +-0.566304124070058810, -0.566345333180138240, -0.566386540874353920, -0.566427747152603240, -0.566468952014783200, -0.566510155460791200, -0.566551357490523430, -0.566592558103877320, +-0.566633757300750050, -0.566674955081038160, -0.566716151444638830, -0.566757346391449040, -0.566798539921366310, -0.566839732034286840, -0.566880922730108150, -0.566922112008727000, +-0.566963299870041020, -0.567004486313946400, -0.567045671340340560, -0.567086854949120590, -0.567128037140183780, -0.567169217913426560, -0.567210397268746340, -0.567251575206040080, +-0.567292751725205210, -0.567333926826138150, -0.567375100508736190, -0.567416272772896970, -0.567457443618516580, -0.567498613045492650, -0.567539781053722160, -0.567580947643102630, +-0.567622112813530370, -0.567663276564902790, -0.567704438897116970, -0.567745599810070440, -0.567786759303659630, -0.567827917377781820, -0.567869074032334330, -0.567910229267214460, +-0.567951383082318630, -0.567992535477544360, -0.568033686452788730, -0.568074836007949280, -0.568115984142922300, -0.568157130857605440, -0.568198276151896110, -0.568239420025690720, +-0.568280562478886810, -0.568321703511381450, -0.568362843123072170, -0.568403981313855500, -0.568445118083628850, -0.568486253432289310, -0.568527387359734630, -0.568568519865861100, +-0.568609650950566260, -0.568650780613747190, -0.568691908855301630, -0.568733035675125900, -0.568774161073117620, -0.568815285049173890, -0.568856407603192340, -0.568897528735069380, +-0.568938648444702650, -0.568979766731989240, -0.569020883596826900, -0.569061999039111810, -0.569103113058741840, -0.569144225655614400, -0.569185336829626130, -0.569226446580674450, +-0.569267554908656550, -0.569308661813470280, -0.569349767295011970, -0.569390871353179120, -0.569431973987869270, -0.569473075198979720, -0.569514174986407110, -0.569555273350049180, +-0.569596370289802920, -0.569637465805566180, -0.569678559897235480, -0.569719652564708250, -0.569760743807882000, -0.569801833626654150, -0.569842922020921460, -0.569884008990581340, +-0.569925094535531640, -0.569966178655668900, -0.570007261350890640, -0.570048342621094160, -0.570089422466177220, -0.570130500886036450, -0.570171577880569380, -0.570212653449673310, +-0.570253727593246110, -0.570294800311184070, -0.570335871603385170, -0.570376941469746490, -0.570418009910165890, -0.570459076924539790, -0.570500142512766150, -0.570541206674742060, +-0.570582269410365270, -0.570623330719532530, -0.570664390602141470, -0.570705449058089730, -0.570746506087274060, -0.570787561689592100, -0.570828615864941270, -0.570869668613219190, +-0.570910719934322630, -0.570951769828149210, -0.570992818294596470, -0.571033865333562040, -0.571074910944942450, -0.571115955128635670, -0.571156997884539000, -0.571198039212550190, +-0.571239079112566000, -0.571280117584484050, -0.571321154628201770, -0.571362190243617010, -0.571403224430626410, -0.571444257189127720, -0.571485288519018360, -0.571526318420196300, +-0.571567346892557950, -0.571608373936001170, -0.571649399550423930, -0.571690423735722760, -0.571731446491795640, -0.571772467818539850, -0.571813487715853160, -0.571854506183632540, +-0.571895523221775500, -0.571936538830179810, -0.571977553008742980, -0.572018565757361990, -0.572059577075934580, -0.572100586964358280, -0.572141595422530850, -0.572182602450349020, +-0.572223608047710660, -0.572264612214513410, -0.572305614950654910, -0.572346616256032000, -0.572387616130542560, -0.572428614574084450, -0.572469611586554410, -0.572510607167850290, +-0.572551601317869750, -0.572592594036510530, -0.572633585323669480, -0.572674575179244470, -0.572715563603133030, -0.572756550595233000, -0.572797536155441380, -0.572838520283655780, +-0.572879502979773860, -0.572920484243693570, -0.572961464075311790, -0.573002442474526250, -0.573043419441234600, -0.573084394975334810, -0.573125369076723730, -0.573166341745299120, +-0.573207312980959060, -0.573248282783600400, -0.573289251153120900, -0.573330218089418420, -0.573371183592390700, -0.573412147661934600, -0.573453110297948210, -0.573494071500329050, +-0.573535031268975090, -0.573575989603783090, -0.573616946504651230, -0.573657901971476920, -0.573698856004158260, -0.573739808602591990, -0.573780759766676310, -0.573821709496308730, +-0.573862657791387230, -0.573903604651808670, -0.573944550077471140, -0.573985494068272260, -0.574026436624110010, -0.574067377744881260, -0.574108317430484070, -0.574149255680816540, +-0.574190192495775410, -0.574231127875258870, -0.574272061819164460, -0.574312994327390250, -0.574353925399833210, -0.574394855036391320, -0.574435783236962320, -0.574476710001444290, +-0.574517635329733990, -0.574558559221729710, -0.574599481677328990, -0.574640402696429910, -0.574681322278929540, -0.574722240424725750, -0.574763157133716400, -0.574804072405799560, +-0.574844986240872210, -0.574885898638832330, -0.574926809599578090, -0.574967719123006480, -0.575008627209015470, -0.575049533857503010, -0.575090439068366990, -0.575131342841504580, +-0.575172245176813760, -0.575213146074192380, -0.575254045533538430, -0.575294943554749080, -0.575335840137722320, -0.575376735282356000, -0.575417628988548200, -0.575458521256195900, +-0.575499412085197390, -0.575540301475450320, -0.575581189426852880, -0.575622075939302040, -0.575662961012695980, -0.575703844646933030, -0.575744726841910030, -0.575785607597525170, +-0.575826486913676330, -0.575867364790261570, -0.575908241227178100, -0.575949116224323990, -0.575989989781597100, -0.576030861898895630, -0.576071732576116660, -0.576112601813158380, +-0.576153469609918530, -0.576194335966295320, -0.576235200882186050, -0.576276064357488680, -0.576316926392101190, -0.576357786985921660, -0.576398646138847390, -0.576439503850776470, +-0.576480360121607190, -0.576521214951236650, -0.576562068339563030, -0.576602920286484190, -0.576643770791898550, -0.576684619855702960, -0.576725467477795960, -0.576766313658075180, +-0.576807158396439150, -0.576848001692784720, -0.576888843547010310, -0.576929683959013780, -0.576970522928693440, -0.577011360455946360, -0.577052196540670970, -0.577093031182765000, +-0.577133864382126880, -0.577174696138653800, -0.577215526452243830, -0.577256355322795180, -0.577297182750205920, -0.577338008734373350, -0.577378833275195790, -0.577419656372571420, +-0.577460478026397660, -0.577501298236572590, -0.577542117002994400, -0.577582934325561180, -0.577623750204170340, -0.577664564638720070, -0.577705377629108450, -0.577746189175233680, +-0.577786999276993170, -0.577827807934285010, -0.577868615147007490, -0.577909420915058700, -0.577950225238336060, -0.577991028116737750, -0.578031829550161970, -0.578072629538506910, +-0.578113428081669990, -0.578154225179549400, -0.578195020832043660, -0.578235815039050080, -0.578276607800466860, -0.578317399116192180, -0.578358188986124340, -0.578398977410160660, +-0.578439764388199550, -0.578480549920138980, -0.578521334005877460, -0.578562116645312210, -0.578602897838341730, -0.578643677584863900, -0.578684455884777350, -0.578725232737979270, +-0.578766008144368070, -0.578806782103841840, -0.578847554616299000, -0.578888325681636950, -0.578929095299754120, -0.578969863470548910, -0.579010630193918630, -0.579051395469761810, +-0.579092159297976530, -0.579132921678461090, -0.579173682611113130, -0.579214442095830840, -0.579255200132512530, -0.579295956721056600, -0.579336711861360380, -0.579377465553322370, +-0.579418217796840660, -0.579458968591813780, -0.579499717938139150, -0.579540465835715280, -0.579581212284440150, -0.579621957284212400, -0.579662700834929320, -0.579703442936489570, +-0.579744183588791210, -0.579784922791732770, -0.579825660545211670, -0.579866396849126330, -0.579907131703375380, -0.579947865107856340, -0.579988597062467530, -0.580029327567107230, +-0.580070056621673990, -0.580110784226065320, -0.580151510380179650, -0.580192235083915150, -0.580232958337170480, -0.580273680139843040, -0.580314400491831360, -0.580355119393033750, +-0.580395836843348610, -0.580436552842673590, -0.580477267390907210, -0.580517980487947560, -0.580558692133693380, -0.580599402328042190, -0.580640111070892420, -0.580680818362142690, +-0.580721524201690650, -0.580762228589434710, -0.580802931525273180, -0.580843633009104800, -0.580884333040826870, -0.580925031620338150, -0.580965728747536820, -0.581006424422321640, +-0.581047118644589910, -0.581087811414240480, -0.581128502731171450, -0.581169192595281550, -0.581209881006468310, -0.581250567964630370, -0.581291253469665930, -0.581331937521473830, +-0.581372620119951500, -0.581413301264997570, -0.581453980956510800, -0.581494659194388700, -0.581535335978530020, -0.581576011308832850, -0.581616685185196160, -0.581657357607517360, +-0.581698028575695080, -0.581738698089627860, -0.581779366149214110, -0.581820032754351680, -0.581860697904939220, -0.581901361600874910, -0.581942023842057620, -0.581982684628384870, +-0.582023343959755410, -0.582064001836067550, -0.582104658257220130, -0.582145313223110690, -0.582185966733637870, -0.582226618788700630, -0.582267269388196400, -0.582307918532024020, +-0.582348566220081910, -0.582389212452268600, -0.582429857228482060, -0.582470500548620710, -0.582511142412583280, -0.582551782820268200, -0.582592421771573440, -0.582633059266397520, +-0.582673695304638970, -0.582714329886196540, -0.582754963010967960, -0.582795594678852000, -0.582836224889746960, -0.582876853643551800, -0.582917480940164160, -0.582958106779482790, +-0.582998731161406100, -0.583039354085832960, -0.583079975552661110, -0.583120595561789300, -0.583161214113116390, -0.583201831206540120, -0.583242446841959140, -0.583283061019272190, +-0.583323673738377790, -0.583364284999174030, -0.583404894801559440, -0.583445503145432640, -0.583486110030692400, -0.583526715457236560, -0.583567319424963980, -0.583607921933773090, +-0.583648522983562620, -0.583689122574230670, -0.583729720705675750, -0.583770317377796610, -0.583810912590492110, -0.583851506343659900, -0.583892098637198930, -0.583932689471007960, +-0.583973278844985070, -0.584013866759028890, -0.584054453213038060, -0.584095038206911440, -0.584135621740547010, -0.584176203813843390, -0.584216784426699220, -0.584257363579013590, +-0.584297941270684130, -0.584338517501609700, -0.584379092271689160, -0.584419665580821150, -0.584460237428903630, -0.584500807815835470, -0.584541376741515410, -0.584581944205842200, +-0.584622510208713700, -0.584663074750028990, -0.584703637829687040, -0.584744199447585490, -0.584784759603623530, -0.584825318297699680, -0.584865875529712810, -0.584906431299560990, +-0.584946985607142980, -0.584987538452357620, -0.585028089835103680, -0.585068639755279230, -0.585109188212783130, -0.585149735207514120, -0.585190280739371070, -0.585230824808252060, +-0.585271367414055830, -0.585311908556681250, -0.585352448236027280, -0.585392986451991890, -0.585433523204473950, -0.585474058493372200, -0.585514592318585710, -0.585555124680012360, +-0.585595655577551110, -0.585636185011101150, -0.585676712980560450, -0.585717239485827880, -0.585757764526802170, -0.585798288103382530, -0.585838810215466690, -0.585879330862953960, +-0.585919850045742760, -0.585960367763732390, -0.586000884016820710, -0.586041398804906800, -0.586081912127889400, -0.586122423985667610, -0.586162934378139380, -0.586203443305203910, +-0.586243950766759720, -0.586284456762706020, -0.586324961292940870, -0.586365464357363250, -0.586405965955872350, -0.586446466088366150, -0.586486964754743820, -0.586527461954904130, +-0.586567957688746030, -0.586608451956167730, -0.586648944757068300, -0.586689436091346610, -0.586729925958901610, -0.586770414359631400, -0.586810901293435160, -0.586851386760211650, +-0.586891870759860160, -0.586932353292278440, -0.586972834357366020, -0.587013313955021430, -0.587053792085143860, -0.587094268747631600, -0.587134743942383520, -0.587175217669299030, +-0.587215689928276110, -0.587256160719213940, -0.587296630042011380, -0.587337097896567630, -0.587377564282780760, -0.587418029200549970, -0.587458492649774120, -0.587498954630352400, +-0.587539415142182890, -0.587579874185164890, -0.587620331759197260, -0.587660787864179080, -0.587701242500008550, -0.587741695666584960, -0.587782147363807070, -0.587822597591574290, +-0.587863046349784590, -0.587903493638337270, -0.587943939457131530, -0.587984383806065660, -0.588024826685038860, -0.588065268093949880, -0.588105708032698130, -0.588146146501181800, +-0.588186583499300090, -0.588227019026951850, -0.588267453084036500, -0.588307885670452110, -0.588348316786098110, -0.588388746430873240, -0.588429174604676810, -0.588469601307407110, +-0.588510026538963450, -0.588550450299244690, -0.588590872588150240, -0.588631293405578180, -0.588671712751427930, -0.588712130625598350, -0.588752547027988850, -0.588792961958497510, +-0.588833375417023850, -0.588873787403467190, -0.588914197917725590, -0.588954606959698480, -0.588995014529284930, -0.589035420626384140, -0.589075825250894520, -0.589116228402715270, +-0.589156630081745460, -0.589197030287884500, -0.589237429021030490, -0.589277826281083050, -0.589318222067940930, -0.589358616381503660, -0.589399009221669430, -0.589439400588337770, +-0.589479790481407530, -0.589520178900778240, -0.589560565846348080, -0.589600951318016490, -0.589641335315682970, -0.589681717839245720, -0.589722098888604160, -0.589762478463657370, +-0.589802856564304760, -0.589843233190444630, -0.589883608341976400, -0.589923982018799140, -0.589964354220812280, -0.590004724947914230, -0.590045094200004280, -0.590085461976981640, +-0.590125828278745710, -0.590166193105194910, -0.590206556456228550, -0.590246918331745810, -0.590287278731646210, -0.590327637655827960, -0.590367995104190690, -0.590408351076633700, +-0.590448705573055510, -0.590489058593355540, -0.590529410137432990, -0.590569760205187260, -0.590610108796516650, -0.590650455911320930, -0.590690801549499040, -0.590731145710950420, +-0.590771488395573700, -0.590811829603268170, -0.590852169333933030, -0.590892507587467920, -0.590932844363771140, -0.590973179662742210, -0.591013513484280440, -0.591053845828285130, +-0.591094176694654920, -0.591134506083289210, -0.591174833994087320, -0.591215160426948550, -0.591255485381771640, -0.591295808858456010, -0.591336130856901180, -0.591376451377005790, +-0.591416770418669140, -0.591457087981790530, -0.591497404066269720, -0.591537718672004890, -0.591578031798895900, -0.591618343446841720, -0.591658653615741990, -0.591698962305495460, +-0.591739269516001310, -0.591779575247159180, -0.591819879498868380, -0.591860182271027440, -0.591900483563536190, -0.591940783376293630, -0.591981081709199500, -0.592021378562152420, +-0.592061673935051710, -0.592101967827797340, -0.592142260240287600, -0.592182551172422130, -0.592222840624100360, -0.592263128595221900, -0.592303415085685180, -0.592343700095390060, +-0.592383983624235500, -0.592424265672121480, -0.592464546238946400, -0.592504825324609910, -0.592545102929011410, -0.592585379052050440, -0.592625653693625740, -0.592665926853636950, +-0.592706198531983250, -0.592746468728564400, -0.592786737443279140, -0.592827004676026890, -0.592867270426707500, -0.592907534695219730, -0.592947797481462980, -0.592988058785336780, +-0.593028318606740770, -0.593068576945573690, -0.593108833801735070, -0.593149089175124430, -0.593189343065641310, -0.593229595473184550, -0.593269846397653900, -0.593310095838948450, +-0.593350343796968270, -0.593390590271611780, -0.593430835262778840, -0.593471078770368870, -0.593511320794281480, -0.593551561334415450, -0.593591800390670610, -0.593632037962946500, +-0.593672274051141980, -0.593712508655156790, -0.593752741774890350, -0.593792973410242400, -0.593833203561111580, -0.593873432227397860, -0.593913659409000540, -0.593953885105819370, +-0.593994109317753200, -0.594034332044701690, -0.594074553286564330, -0.594114773043241010, -0.594154991314630450, -0.594195208100632310, -0.594235423401146210, -0.594275637216071910, +-0.594315849545308140, -0.594356060388754660, -0.594396269746311100, -0.594436477617877320, -0.594476684003351850, -0.594516888902634770, -0.594557092315625700, -0.594597294242223630, +-0.594637494682328400, -0.594677693635839330, -0.594717891102656380, -0.594758087082678410, -0.594798281575805170, -0.594838474581936170, -0.594878666100971510, -0.594918856132809700, +-0.594959044677350720, -0.594999231734494200, -0.595039417304140010, -0.595079601386186760, -0.595119783980534670, -0.595159965087083020, -0.595200144705731900, -0.595240322836379950, +-0.595280499478927250, -0.595320674633273650, -0.595360848299318010, -0.595401020476960310, -0.595441191166099950, -0.595481360366637010, -0.595521528078470360, -0.595561694301499860, +-0.595601859035625130, -0.595642022280746140, -0.595682184036761650, -0.595722344303571740, -0.595762503081076030, -0.595802660369174290, -0.595842816167765690, -0.595882970476749980, +-0.595923123296026810, -0.595963274625496250, -0.596003424465057160, -0.596043572814609400, -0.596083719674053160, -0.596123865043287180, -0.596164008922211660, -0.596204151310726020, +-0.596244292208730430, -0.596284431616123660, -0.596324569532805880, -0.596364705958676740, -0.596404840893636100, -0.596444974337583030, -0.596485106290417510, -0.596525236752039170, +-0.596565365722348200, -0.596605493201243340, -0.596645619188624910, -0.596685743684392310, -0.596725866688445740, -0.596765988200684160, -0.596806108221007550, -0.596846226749315760, +-0.596886343785508640, -0.596926459329485400, -0.596966573381146000, -0.597006685940390520, -0.597046797007117940, -0.597086906581228430, -0.597127014662621640, -0.597167121251197640, +-0.597207226346855410, -0.597247329949495250, -0.597287432059016690, -0.597327532675319910, -0.597367631798303990, -0.597407729427868910, -0.597447825563914630, -0.597487920206341010, +-0.597528013355047350, -0.597568105009933510, -0.597608195170899580, -0.597648283837845410, -0.597688371010670180, -0.597728456689273990, -0.597768540873557130, -0.597808623563418460, +-0.597848704758758290, -0.597888784459476350, -0.597928862665472740, -0.597968939376646750, -0.598009014592898240, -0.598049088314127290, -0.598089160540233980, -0.598129231271117390, +-0.598169300506677710, -0.598209368246814810, -0.598249434491428870, -0.598289499240418960, -0.598329562493685300, -0.598369624251127720, -0.598409684512646530, -0.598449743278140600, +-0.598489800547510440, -0.598529856320656140, -0.598569910597476770, -0.598609963377872640, -0.598650014661743610, -0.598690064448989980, -0.598730112739510710, -0.598770159533206230, +-0.598810204829976270, -0.598850248629721250, -0.598890290932340250, -0.598930331737733470, -0.598970371045800860, -0.599010408856442740, -0.599050445169558190, -0.599090479985047500, +-0.599130513302810640, -0.599170545122747920, -0.599210575444758420, -0.599250604268742440, -0.599290631594600390, -0.599330657422231350, -0.599370681751535740, -0.599410704582413300, +-0.599450725914764560, -0.599490745748488600, -0.599530764083485820, -0.599570780919656100, -0.599610796256899840, -0.599650810095116120, -0.599690822434205460, -0.599730833274067730, +-0.599770842614603230, -0.599810850455711250, -0.599850856797292220, -0.599890861639246100, -0.599930864981473080, -0.599970866823872570, -0.600010867166344890, -0.600050866008789980, +-0.600090863351108390, -0.600130859193199200, -0.600170853534962910, -0.600210846376299730, -0.600250837717109190, -0.600290827557291570, -0.600330815896746860, -0.600370802735375350, +-0.600410788073076570, -0.600450771909750820, -0.600490754245298190, -0.600530735079618960, -0.600570714412612560, -0.600610692244179400, -0.600650668574219450, -0.600690643402633230, +-0.600730616729320040, -0.600770588554180310, -0.600810558877114100, -0.600850527698021940, -0.600890495016802920, -0.600930460833357770, -0.600970425147586810, -0.601010387959389440, +-0.601050349268666180, -0.601090309075316910, -0.601130267379242240, -0.601170224180341610, -0.601210179478515410, -0.601250133273663720, -0.601290085565687080, -0.601330036354484900, +-0.601369985639957580, -0.601409933422005330, -0.601449879700528540, -0.601489824475426760, -0.601529767746600390, -0.601569709513949610, -0.601609649777374970, -0.601649588536775750, +-0.601689525792052590, -0.601729461543106030, -0.601769395789835460, -0.601809328532141310, -0.601849259769923870, -0.601889189503083680, -0.601929117731520140, -0.601969044455133770, +-0.602008969673824890, -0.602048893387493790, -0.602088815596040220, -0.602128736299364590, -0.602168655497367090, -0.602208573189948250, -0.602248489377007700, -0.602288404058445970, +-0.602328317234163140, -0.602368228904059940, -0.602408139068035810, -0.602448047725991250, -0.602487954877826690, -0.602527860523442540, -0.602567764662738310, -0.602607667295614770, +-0.602647568421972420, -0.602687468041710690, -0.602727366154730440, -0.602767262760931620, -0.602807157860215100, -0.602847051452480300, -0.602886943537627840, -0.602926834115558140, +-0.602966723186171620, -0.603006610749367900, -0.603046496805047740, -0.603086381353111210, -0.603126264393459180, -0.603166145925991160, -0.603206025950607790, -0.603245904467209270, +-0.603285781475696340, -0.603325656975968630, -0.603365530967926780, -0.603405403451471530, -0.603445274426502310, -0.603485143892919960, -0.603525011850624680, -0.603564878299517330, +-0.603604743239497420, -0.603644606670465600, -0.603684468592322280, -0.603724329004968090, -0.603764187908302770, -0.603804045302226980, -0.603843901186641110, -0.603883755561445800, +-0.603923608426540800, -0.603963459781826750, -0.604003309627203940, -0.604043157962573350, -0.604083004787834500, -0.604122850102888130, -0.604162693907635000, -0.604202536201974730, +-0.604242376985808070, -0.604282216259035550, -0.604322054021557810, -0.604361890273274690, -0.604401725014086730, -0.604441558243894450, -0.604481389962598700, -0.604521220170099130, +-0.604561048866296470, -0.604600876051091140, -0.604640701724384000, -0.604680525886074790, -0.604720348536064270, -0.604760169674252830, -0.604799989300541350, -0.604839807414829570, +-0.604879624017018220, -0.604919439107008180, -0.604959252684699190, -0.604999064749992100, -0.605038875302787220, -0.605078684342985620, -0.605118491870486940, -0.605158297885192040, +-0.605198102387001450, -0.605237905375815900, -0.605277706851535150, -0.605317506814060270, -0.605357305263291570, -0.605397102199129900, -0.605436897621475230, -0.605476691530228210, +-0.605516483925289560, -0.605556274806560050, -0.605596064173939410, -0.605635852027328610, -0.605675638366628300, -0.605715423191739100, -0.605755206502561090, -0.605794988298995030, +-0.605834768580941870, -0.605874547348301480, -0.605914324600974610, -0.605954100338861990, -0.605993874561864490, -0.606033647269881960, -0.606073418462815260, -0.606113188140565030, +-0.606152956303032230, -0.606192722950116610, -0.606232488081719260, -0.606272251697740680, -0.606312013798081750, -0.606351774382642540, -0.606391533451323790, -0.606431291004026260, +-0.606471047040650800, -0.606510801561097380, -0.606550554565267070, -0.606590306053060630, -0.606630056024378140, -0.606669804479120440, -0.606709551417188190, -0.606749296838482550, +-0.606789040742903190, -0.606828783130351270, -0.606868524000727440, -0.606908263353932550, -0.606948001189866690, -0.606987737508430940, -0.607027472309525700, -0.607067205593052270, +-0.607106937358910300, -0.607146667607001090, -0.607186396337225260, -0.607226123549483690, -0.607265849243676550, -0.607305573419704700, -0.607345296077469340, -0.607385017216870330, +-0.607424736837808840, -0.607464454940185420, -0.607504171523901240, -0.607543886588856390, -0.607583600134951720, -0.607623312162088090, -0.607663022670166470, -0.607702731659086950, +-0.607742439128750700, -0.607782145079058260, -0.607821849509910810, -0.607861552421208430, -0.607901253812852090, -0.607940953684742770, -0.607980652036781310, -0.608020348868867910, +-0.608060044180903540, -0.608099737972789160, -0.608139430244425740, -0.608179120995713470, -0.608218810226553330, -0.608258497936846500, -0.608298184126493060, -0.608337868795394200, +-0.608377551943450670, -0.608417233570563650, -0.608456913676633130, -0.608496592261560390, -0.608536269325246070, -0.608575944867591480, -0.608615618888496690, -0.608655291387862900, +-0.608694962365590840, -0.608734631821581720, -0.608774299755735600, -0.608813966167953800, -0.608853631058137170, -0.608893294426186670, -0.608932956272002610, -0.608972616595486180, +-0.609012275396538570, -0.609051932675059970, -0.609091588430951460, -0.609131242664114000, -0.609170895374448800, -0.609210546561856030, -0.609250196226236880, -0.609289844367492230, +-0.609329490985523250, -0.609369136080230240, -0.609408779651514410, -0.609448421699276710, -0.609488062223418230, -0.609527701223839150, -0.609567338700441000, -0.609606974653124410, +-0.609646609081790690, -0.609686241986340140, -0.609725873366673940, -0.609765503222693520, -0.609805131554298940, -0.609844758361391510, -0.609884383643872210, -0.609924007401642210, +-0.609963629634601930, -0.610003250342652570, -0.610042869525695090, -0.610082487183630780, -0.610122103316359850, -0.610161717923783710, -0.610201331005803320, -0.610240942562319870, +-0.610280552593233770, -0.610320161098446220, -0.610359768077858410, -0.610399373531371410, -0.610438977458885650, -0.610478579860302410, -0.610518180735523110, -0.610557780084448050, +-0.610597377906978430, -0.610636974203015440, -0.610676568972460370, -0.610716162215213520, -0.610755753931176320, -0.610795344120249610, -0.610834932782335030, -0.610874519917332660, +-0.610914105525144020, -0.610953689605670090, -0.610993272158812380, -0.611032853184471090, -0.611072432682547630, -0.611112010652943070, -0.611151587095558950, -0.611191162010295440, +-0.611230735397053970, -0.611270307255735720, -0.611309877586242110, -0.611349446388473330, -0.611389013662331000, -0.611428579407716550, -0.611468143624530170, -0.611507706312673480, +-0.611547267472047570, -0.611586827102553850, -0.611626385204092630, -0.611665941776565520, -0.611705496819873520, -0.611745050333918130, -0.611784602318599770, -0.611824152773819960, +-0.611863701699479680, -0.611903249095480550, -0.611942794961722990, -0.611982339298108300, -0.612021882104537900, -0.612061423380913070, -0.612100963127134360, -0.612140501343103270, +-0.612180038028721230, -0.612219573183888750, -0.612259106808507370, -0.612298638902478150, -0.612338169465702740, -0.612377698498081550, -0.612417225999516090, -0.612456751969907560, +-0.612496276409157600, -0.612535799317166510, -0.612575320693835910, -0.612614840539067010, -0.612654358852761430, -0.612693875634819580, -0.612733390885143000, -0.612772904603632980, +-0.612812416790191050, -0.612851927444717730, -0.612891436567114530, -0.612930944157283110, -0.612970450215124090, -0.613009954740538760, -0.613049457733428670, -0.613088959193695220, +-0.613128459121239140, -0.613167957515961760, -0.613207454377764580, -0.613246949706549140, -0.613286443502215840, -0.613325935764666540, -0.613365426493802430, -0.613404915689525040, +-0.613444403351735000, -0.613483889480333940, -0.613523374075223280, -0.613562857136304430, -0.613602338663478130, -0.613641818656645910, -0.613681297115709180, -0.613720774040569570, +-0.613760249431127720, -0.613799723287285160, -0.613839195608943730, -0.613878666396003860, -0.613918135648367390, -0.613957603365935630, -0.613997069548610110, -0.614036534196291670, +-0.614075997308881850, -0.614115458886281940, -0.614154918928393910, -0.614194377435118070, -0.614233834406356370, -0.614273289842010020, -0.614312743741980860, -0.614352196106169530, +-0.614391646934477680, -0.614431096226806690, -0.614470543983058230, -0.614509990203133130, -0.614549434886933140, -0.614588878034359800, -0.614628319645313950, -0.614667759719697340, +-0.614707198257411270, -0.614746635258357600, -0.614786070722436960, -0.614825504649551100, -0.614864937039601540, -0.614904367892490030, -0.614943797208117200, -0.614983224986384910, +-0.615022651227194460, -0.615062075930447820, -0.615101499096045610, -0.615140920723889710, -0.615180340813881400, -0.615219759365922660, -0.615259176379914230, -0.615298591855757750, +-0.615338005793355180, -0.615377418192607270, -0.615416829053415770, -0.615456238375682200, -0.615495646159308410, -0.615535052404195150, -0.615574457110244280, -0.615613860277357210, +-0.615653261905435900, -0.615692661994381110, -0.615732060544094570, -0.615771457554477930, -0.615810853025433040, -0.615850246956860640, -0.615889639348662590, -0.615929030200740410, +-0.615968419512996080, -0.616007807285330330, -0.616047193517645030, -0.616086578209842140, -0.616125961361822410, -0.616165342973487800, -0.616204723044739830, -0.616244101575480370, +-0.616283478565610390, -0.616322854015031620, -0.616362227923645810, -0.616401600291354710, -0.616440971118059290, -0.616480340403661400, -0.616519708148062670, -0.616559074351165080, +-0.616598439012869480, -0.616637802133077730, -0.616677163711691460, -0.616716523748612630, -0.616755882243742120, -0.616795239196981980, -0.616834594608233640, -0.616873948477399180, +-0.616913300804379560, -0.616952651589076750, -0.616992000831392500, -0.617031348531227990, -0.617070694688485080, -0.617110039303065520, -0.617149382374871050, -0.617188723903802970, +-0.617228063889762920, -0.617267402332652760, -0.617306739232374450, -0.617346074588828950, -0.617385408401918250, -0.617424740671544070, -0.617464071397608280, -0.617503400580012070, +-0.617542728218657300, -0.617582054313445820, -0.617621378864279480, -0.617660701871059260, -0.617700023333687340, -0.617739343252065810, -0.617778661626095520, -0.617817978455678540, +-0.617857293740716630, -0.617896607481111750, -0.617935919676765090, -0.617975230327578620, -0.618014539433454080, -0.618053846994293550, -0.618093153009998010, -0.618132457480469630, +-0.618171760405610170, -0.618211061785321590, -0.618250361619504970, -0.618289659908062510, -0.618328956650895820, -0.618368251847907110, -0.618407545498997460, -0.618446837604068930, +-0.618486128163023620, -0.618525417175762700, -0.618564704642188270, -0.618603990562202060, -0.618643274935706140, -0.618682557762601730, -0.618721839042790990, -0.618761118776175570, +-0.618800396962657650, -0.618839673602138540, -0.618878948694520090, -0.618918222239704390, -0.618957494237593500, -0.618996764688088400, -0.619036033591091490, -0.619075300946504430, +-0.619114566754229490, -0.619153831014167770, -0.619193093726221560, -0.619232354890292490, -0.619271614506282990, -0.619310872574094120, -0.619350129093627970, -0.619389384064786830, +-0.619428637487472010, -0.619467889361585480, -0.619507139687029310, -0.619546388463705580, -0.619585635691515590, -0.619624881370361420, -0.619664125500145160, -0.619703368080768870, +-0.619742609112133750, -0.619781848594142200, -0.619821086526695990, -0.619860322909697390, -0.619899557743047720, -0.619938791026649060, -0.619978022760403480, -0.620017252944213170, +-0.620056481577979430, -0.620095708661604460, -0.620134934194990550, -0.620174158178038890, -0.620213380610651900, -0.620252601492731540, -0.620291820824179880, -0.620331038604898470, +-0.620370254834789360, -0.620409469513754640, -0.620448682641696610, -0.620487894218516470, -0.620527104244116610, -0.620566312718399020, -0.620605519641265980, -0.620644725012618800, +-0.620683928832359790, -0.620723131100391010, -0.620762331816614670, -0.620801530980932270, -0.620840728593245910, -0.620879924653458200, -0.620919119161470250, -0.620958312117184440, +-0.620997503520502980, -0.621036693371328050, -0.621075881669561070, -0.621115068415104330, -0.621154253607860030, -0.621193437247730350, -0.621232619334616710, -0.621271799868421630, +-0.621310978849046960, -0.621350156276395230, -0.621389332150367730, -0.621428506470866890, -0.621467679237794780, -0.621506850451053920, -0.621546020110545490, -0.621585188216172040, +-0.621624354767835620, -0.621663519765438650, -0.621702683208882560, -0.621741845098069730, -0.621781005432902600, -0.621820164213282680, -0.621859321439112270, -0.621898477110293670, +-0.621937631226729180, -0.621976783788320220, -0.622015934794969310, -0.622055084246578630, -0.622094232143050490, -0.622133378484286510, -0.622172523270189020, -0.622211666500660290, +-0.622250808175602630, -0.622289948294917680, -0.622329086858507850, -0.622368223866275330, -0.622407359318122630, -0.622446493213951070, -0.622485625553663380, -0.622524756337161980, +-0.622563885564348270, -0.622603013235124900, -0.622642139349393940, -0.622681263907058020, -0.622720386908018560, -0.622759508352178190, -0.622798628239438990, -0.622837746569703590, +-0.622876863342873400, -0.622915978558851170, -0.622955092217538970, -0.622994204318839340, -0.623033314862653900, -0.623072423848885170, -0.623111531277435350, -0.623150637148207060, +-0.623189741461101840, -0.623228844216022320, -0.623267945412870890, -0.623307045051549440, -0.623346143131960240, -0.623385239654005720, -0.623424334617588390, -0.623463428022610010, +-0.623502519868972980, -0.623541610156579610, -0.623580698885332630, -0.623619786055133570, -0.623658871665884960, -0.623697955717489210, -0.623737038209848940, -0.623776119142865680, +-0.623815198516442180, -0.623854276330480630, -0.623893352584883760, -0.623932427279553230, -0.623971500414391530, -0.624010571989301540, -0.624049642004184670, -0.624088710458943760, +-0.624127777353481020, -0.624166842687699170, -0.624205906461499980, -0.624244968674785850, -0.624284029327459410, -0.624323088419423300, -0.624362145950579040, -0.624401201920829370, +-0.624440256330076720, -0.624479309178223810, -0.624518360465172280, -0.624557410190824890, -0.624596458355083930, -0.624635504957852140, -0.624674549999031270, -0.624713593478524070, +-0.624752635396232820, -0.624791675752060400, -0.624830714545908440, -0.624869751777679560, -0.624908787447276740, -0.624947821554601600, -0.624986854099557010, -0.625025885082045150, +-0.625064914501968990, -0.625103942359230170, -0.625142968653731420, -0.625181993385375390, -0.625221016554064590, -0.625260038159700990, -0.625299058202187340, -0.625338076681425940, +-0.625377093597319740, -0.625416108949770400, -0.625455122738680870, -0.625494134963953560, -0.625533145625491120, -0.625572154723195610, -0.625611162256969670, -0.625650168226716150, +-0.625689172632336810, -0.625728175473734600, -0.625767176750811950, -0.625806176463471700, -0.625845174611615710, -0.625884171195146720, -0.625923166213967370, -0.625962159667980410, +-0.626001151557087690, -0.626040141881192060, -0.626079130640196160, -0.626118117834002730, -0.626157103462513740, -0.626196087525631830, -0.626235070023259840, -0.626274050955300420, +-0.626313030321655640, -0.626352008122228240, -0.626390984356921090, -0.626429959025636250, -0.626468932128276480, -0.626507903664744290, -0.626546873634942770, -0.626585842038773650, +-0.626624808876140030, -0.626663774146944300, -0.626702737851089540, -0.626741699988477620, -0.626780660559011380, -0.626819619562593470, -0.626858576999126950, -0.626897532868513570, +-0.626936487170656310, -0.626975439905457900, -0.627014391072821310, -0.627053340672648290, -0.627092288704841900, -0.627131235169304910, -0.627170180065940050, -0.627209123394649510, +-0.627248065155336040, -0.627287005347902830, -0.627325943972251830, -0.627364881028285800, -0.627403816515907710, -0.627442750435020400, -0.627481682785525740, -0.627520613567327020, +-0.627559542780326660, -0.627598470424427850, -0.627637396499532540, -0.627676321005543710, -0.627715243942364110, -0.627754165309896690, -0.627793085108043550, -0.627832003336707740, +-0.627870919995791810, -0.627909835085199040, -0.627948748604831300, -0.627987660554591650, -0.628026570934383190, -0.628065479744107980, -0.628104386983669110, -0.628143292652969200, +-0.628182196751911450, -0.628221099280397820, -0.628260000238331510, -0.628298899625615140, -0.628337797442151900, -0.628376693687843880, -0.628415588362594040, -0.628454481466305230, +-0.628493372998880530, -0.628532262960222130, -0.628571151350233110, -0.628610038168816110, -0.628648923415874420, -0.628687807091310000, -0.628726689195026170, -0.628765569726925880, +-0.628804448686911320, -0.628843326074885690, -0.628882201890751720, -0.628921076134412620, -0.628959948805770440, -0.628998819904728390, -0.629037689431189320, -0.629076557385056410, +-0.629115423766231750, -0.629154288574618410, -0.629193151810119480, -0.629232013472637910, -0.629270873562076120, -0.629309732078336960, -0.629348589021323620, -0.629387444390939080, +-0.629426298187085620, -0.629465150409666330, -0.629504001058584620, -0.629542850133742450, -0.629581697635043240, -0.629620543562389720, -0.629659387915685320, -0.629698230694832000, +-0.629737071899733050, -0.629775911530291550, -0.629814749586410480, -0.629853586067992350, -0.629892420974940140, -0.629931254307156910, -0.629970086064545850, -0.630008916247009280, +-0.630047744854450480, -0.630086571886772200, -0.630125397343877850, -0.630164221225669730, -0.630203043532051030, -0.630241864262924720, -0.630280683418194100, -0.630319500997761350, +-0.630358317001530000, -0.630397131429403120, -0.630435944281283020, -0.630474755557073110, -0.630513565256676230, -0.630552373379995920, -0.630591179926934250, -0.630629984897394640, +-0.630668788291280150, -0.630707590108493870, -0.630746390348938420, -0.630785189012516900, -0.630823986099132480, -0.630862781608688360, -0.630901575541087060, -0.630940367896231650, +-0.630979158674025430, -0.631017947874371710, -0.631056735497172670, -0.631095521542331840, -0.631134306009752510, -0.631173088899337100, -0.631211870210989010, -0.631250649944611220, +-0.631289428100107130, -0.631328204677379160, -0.631366979676330600, -0.631405753096864640, -0.631444524938884700, -0.631483295202293070, -0.631522063886993170, -0.631560830992888070, +-0.631599596519881290, -0.631638360467875140, -0.631677122836773130, -0.631715883626478350, -0.631754642836894090, -0.631793400467922980, -0.631832156519468340, -0.631870910991433670, +-0.631909663883721380, -0.631948415196234900, -0.631987164928877410, -0.632025913081552320, -0.632064659654162140, -0.632103404646610300, -0.632142148058799870, -0.632180889890634480, +-0.632219630142016540, -0.632258368812849580, -0.632297105903036560, -0.632335841412481230, -0.632374575341085880, -0.632413307688754140, -0.632452038455389110, -0.632490767640894290, +-0.632529495245172320, -0.632568221268126510, -0.632606945709660140, -0.632645668569676860, -0.632684389848078950, -0.632723109544770180, -0.632761827659653830, -0.632800544192632650, +-0.632839259143610170, -0.632877972512489450, -0.632916684299174140, -0.632955394503566860, -0.632994103125571030, -0.633032810165089940, -0.633071515622027240, -0.633110219496285320, +-0.633148921787767830, -0.633187622496378170, -0.633226321622019640, -0.633265019164595100, -0.633303715124007960, -0.633342409500161520, -0.633381102292959410, -0.633419793502304150, +-0.633458483128099490, -0.633497171170248840, -0.633535857628655050, -0.633574542503221540, -0.633613225793851710, -0.633651907500449200, -0.633690587622916520, -0.633729266161157430, +-0.633767943115075120, -0.633806618484573310, -0.633845292269554550, -0.633883964469922680, -0.633922635085580780, -0.633961304116432700, -0.633999971562380970, -0.634038637423329440, +-0.634077301699181200, -0.634115964389840080, -0.634154625495208730, -0.634193285015190790, -0.634231942949689990, -0.634270599298608960, -0.634309254061851460, -0.634347907239320770, +-0.634386558830920650, -0.634425208836553840, -0.634463857256124090, -0.634502504089534570, -0.634541149336689150, -0.634579792997490570, -0.634618435071842460, -0.634657075559648340, +-0.634695714460811860, -0.634734351775235630, -0.634772987502823630, -0.634811621643479150, -0.634850254197105950, -0.634888885163606750, -0.634927514542885320, -0.634966142334845500, +-0.635004768539390030, -0.635043393156422550, -0.635082016185846590, -0.635120637627565990, -0.635159257481483390, -0.635197875747502640, -0.635236492425527270, -0.635275107515460900, +-0.635313721017206510, -0.635352332930667840, -0.635390943255748300, -0.635429551992351740, -0.635468159140380910, -0.635506764699739770, -0.635545368670331620, -0.635583971052060440, +-0.635622571844829070, -0.635661171048541140, -0.635699768663100410, -0.635738364688410500, -0.635776959124374370, -0.635815551970895900, -0.635854143227878810, -0.635892732895226080, +-0.635931320972841440, -0.635969907460628540, -0.636008492358491220, -0.636047075666332340, -0.636085657384055760, -0.636124237511564990, -0.636162816048764010, -0.636201392995555670, +-0.636239968351843820, -0.636278542117532100, -0.636317114292524360, -0.636355684876723450, -0.636394253870033340, -0.636432821272357560, -0.636471387083600070, -0.636509951303663830, +-0.636548513932452710, -0.636587074969870550, -0.636625634415820430, -0.636664192270206210, -0.636702748532931520, -0.636741303203900320, -0.636779856283015590, -0.636818407770181060, +-0.636856957665300590, -0.636895505968278040, -0.636934052679016480, -0.636972597797419660, -0.637011141323391430, -0.637049683256835640, -0.637088223597655380, -0.637126762345754490, +-0.637165299501036730, -0.637203835063406050, -0.637242369032765430, -0.637280901409018830, -0.637319432192070430, -0.637357961381822990, -0.637396488978180800, -0.637435014981047270, +-0.637473539390326580, -0.637512062205921710, -0.637550583427736630, -0.637589103055675180, -0.637627621089641220, -0.637666137529537940, -0.637704652375269300, -0.637743165626738940, +-0.637781677283851160, -0.637820187346508800, -0.637858695814615850, -0.637897202688076260, -0.637935707966794000, -0.637974211650672140, -0.638012713739614770, -0.638051214233525620, +-0.638089713132308670, -0.638128210435867200, -0.638166706144105200, -0.638205200256926730, -0.638243692774234980, -0.638282183695933920, -0.638320673021927410, -0.638359160752119630, +-0.638397646886413540, -0.638436131424713340, -0.638474614366922880, -0.638513095712946120, -0.638551575462686370, -0.638590053616047590, -0.638628530172933750, -0.638667005133248920, +-0.638705478496896180, -0.638743950263779840, -0.638782420433803510, -0.638820889006871620, -0.638859355982887010, -0.638897821361754100, -0.638936285143376970, -0.638974747327658800, +-0.639013207914503670, -0.639051666903815650, -0.639090124295498720, -0.639128580089456170, -0.639167034285592180, -0.639205486883810510, -0.639243937884015570, -0.639282387286110420, +-0.639320835089999260, -0.639359281295586060, -0.639397725902774990, -0.639436168911469260, -0.639474610321573160, -0.639513050132990420, -0.639551488345625470, -0.639589924959381500, +-0.639628359974162670, -0.639666793389873310, -0.639705225206416590, -0.639743655423696820, -0.639782084041617850, -0.639820511060084090, -0.639858936478998610, -0.639897360298265940, +-0.639935782517789820, -0.639974203137474550, -0.640012622157223430, -0.640051039576940760, -0.640089455396530500, -0.640127869615896960, -0.640166282234943320, -0.640204693253574100, +-0.640243102671693040, -0.640281510489204560, -0.640319916706012070, -0.640358321322019750, -0.640396724337131910, -0.640435125751251940, -0.640473525564284160, -0.640511923776132640, +-0.640550320386701570, -0.640588715395894460, -0.640627108803615400, -0.640665500609768680, -0.640703890814258490, -0.640742279416988250, -0.640780666417862350, -0.640819051816784780, +-0.640857435613659930, -0.640895817808391110, -0.640934198400882730, -0.640972577391038860, -0.641010954778763910, -0.641049330563961290, -0.641087704746535310, -0.641126077326390040, +-0.641164448303429890, -0.641202817677558270, -0.641241185448679700, -0.641279551616698470, -0.641317916181518010, -0.641356279143042720, -0.641394640501176780, -0.641433000255824610, +-0.641471358406889510, -0.641509714954276110, -0.641548069897888370, -0.641586423237630710, -0.641624774973406750, -0.641663125105120910, -0.641701473632677160, -0.641739820555980110, +-0.641778165874933190, -0.641816509589440810, -0.641854851699407150, -0.641893192204736730, -0.641931531105332960, -0.641969868401100370, -0.642008204091943480, -0.642046538177765690, +-0.642084870658471640, -0.642123201533965400, -0.642161530804151390, -0.642199858468933350, -0.642238184528215570, -0.642276508981902360, -0.642314831829898240, -0.642353153072106610, +-0.642391472708432220, -0.642429790738779040, -0.642468107163051800, -0.642506421981153930, -0.642544735192989940, -0.642583046798464230, -0.642621356797481220, -0.642659665189944440, +-0.642697971975758400, -0.642736277154827950, -0.642774580727056400, -0.642812882692348380, -0.642851183050608180, -0.642889481801740330, -0.642927778945648450, -0.642966074482237080, +-0.643004368411410620, -0.643042660733073480, -0.643080951447129400, -0.643119240553482910, -0.643157528052038410, -0.643195813942700310, -0.643234098225372470, -0.643272380899959310, +-0.643310661966365100, -0.643348941424494720, -0.643387219274251580, -0.643425495515540400, -0.643463770148265500, -0.643502043172331510, -0.643540314587642050, -0.643578584394101870, +-0.643616852591615500, -0.643655119180086670, -0.643693384159420120, -0.643731647529519950, -0.643769909290291100, -0.643808169441637210, -0.643846427983462810, -0.643884684915672300, +-0.643922940238170540, -0.643961193950860930, -0.643999446053648450, -0.644037696546437390, -0.644075945429132270, -0.644114192701637060, -0.644152438363856380, -0.644190682415694550, +-0.644228924857056410, -0.644267165687845590, -0.644305404907966840, -0.644343642517324900, -0.644381878515823630, -0.644420112903367540, -0.644458345679861160, -0.644496576845209330, +-0.644534806399315710, -0.644573034342085020, -0.644611260673421780, -0.644649485393230750, -0.644687708501415660, -0.644725929997881250, -0.644764149882532060, -0.644802368155272810, +-0.644840584816007370, -0.644878799864640360, -0.644917013301076420, -0.644955225125220300, -0.644993435336975730, -0.645031643936247570, -0.645069850922940670, -0.645108056296958890, +-0.645146260058206860, -0.645184462206589200, -0.645222662742010680, -0.645260861664375240, -0.645299058973587520, -0.645337254669552270, -0.645375448752174230, -0.645413641221357140, +-0.645451832077006070, -0.645490021319025330, -0.645528208947319880, -0.645566394961793580, -0.645604579362351380, -0.645642762148897600, -0.645680943321337300, -0.645719122879574340, +-0.645757300823513570, -0.645795477153059850, -0.645833651868117030, -0.645871824968590190, -0.645909996454383740, -0.645948166325402640, -0.645986334581550860, -0.646024501222733140, +-0.646062666248854220, -0.646100829659818960, -0.646138991455531330, -0.646177151635896170, -0.646215310200818130, -0.646253467150202150, -0.646291622483952220, -0.646329776201973180, +-0.646367928304169780, -0.646406078790446760, -0.646444227660708300, -0.646482374914859270, -0.646520520552804290, -0.646558664574448330, -0.646596806979695350, -0.646634947768450430, +-0.646673086940618420, -0.646711224496103410, -0.646749360434810240, -0.646787494756643770, -0.646825627461508850, -0.646863758549309550, -0.646901888019950850, -0.646940015873337380, +-0.646978142109374320, -0.647016266727965420, -0.647054389729015970, -0.647092511112430490, -0.647130630878114070, -0.647168749025970770, -0.647206865555905560, -0.647244980467823190, +-0.647283093761628740, -0.647321205437226150, -0.647359315494520640, -0.647397423933417150, -0.647435530753819770, -0.647473635955633450, -0.647511739538763180, -0.647549841503113790, +-0.647587941848589590, -0.647626040575095430, -0.647664137682536280, -0.647702233170816990, -0.647740327039841860, -0.647778419289515850, -0.647816509919743820, -0.647854598930430850, +-0.647892686321481110, -0.647930772092799590, -0.647968856244291120, -0.648006938775860910, -0.648045019687413020, -0.648083098978852520, -0.648121176650084620, -0.648159252701013490, +-0.648197327131544210, -0.648235399941581640, -0.648273471131030840, -0.648311540699796020, -0.648349608647782350, -0.648387674974894690, -0.648425739681038230, -0.648463802766117040, +-0.648501864230036310, -0.648539924072701000, -0.648577982294016090, -0.648616038893885970, -0.648654093872215840, -0.648692147228910330, -0.648730198963874850, -0.648768249077013470, +-0.648806297568231600, -0.648844344437433880, -0.648882389684525720, -0.648920433309411180, -0.648958475311995580, -0.648996515692184080, -0.649034554449881010, -0.649072591584991530, +-0.649110627097420620, -0.649148660987073470, -0.649186693253854250, -0.649224723897668390, -0.649262752918420620, -0.649300780316016350, -0.649338806090359880, -0.649376830241356280, +-0.649414852768910640, -0.649452873672928250, -0.649490892953313300, -0.649528910609971090, -0.649566926642806690, -0.649604941051725170, -0.649642953836631070, -0.649680964997429560, +-0.649718974534026050, -0.649756982446324630, -0.649794988734230810, -0.649832993397649550, -0.649870996436486160, -0.649908997850644820, -0.649946997640031170, -0.649984995804549830, +-0.650022992344106540, -0.650060987258605280, -0.650098980547951570, -0.650136972212050470, -0.650174962250807290, -0.650212950664126210, -0.650250937451912980, -0.650288922614072230, +-0.650326906150509590, -0.650364888061129350, -0.650402868345836830, -0.650440847004537530, -0.650478824037135750, -0.650516799443536910, -0.650554773223646080, -0.650592745377368660, +-0.650630715904609080, -0.650668684805272620, -0.650706652079264480, -0.650744617726490060, -0.650782581746853770, -0.650820544140261030, -0.650858504906616900, -0.650896464045826910, +-0.650934421557795350, -0.650972377442427750, -0.651010331699629300, -0.651048284329305280, -0.651086235331360230, -0.651124184705699550, -0.651162132452228760, -0.651200078570852270, +-0.651238023061475600, -0.651275965924003940, -0.651313907158342700, -0.651351846764396280, -0.651389784742070320, -0.651427721091269780, -0.651465655811900410, -0.651503588903866500, +-0.651541520367073580, -0.651579450201426940, -0.651617378406831980, -0.651655304983193240, -0.651693229930416230, -0.651731153248406140, -0.651769074937068480, -0.651806994996307900, +-0.651844913426029680, -0.651882830226139350, -0.651920745396542100, -0.651958658937142780, -0.651996570847846790, -0.652034481128559660, -0.652072389779186020, -0.652110296799631390, +-0.652148202189801070, -0.652186105949600580, -0.652224008078934440, -0.652261908577708270, -0.652299807445827380, -0.652337704683197290, -0.652375600289722520, -0.652413494265308920, +-0.652451386609861460, -0.652489277323285880, -0.652527166405486800, -0.652565053856369760, -0.652602939675840150, -0.652640823863803510, -0.652678706420164460, -0.652716587344828620, +-0.652754466637701650, -0.652792344298688270, -0.652830220327694000, -0.652868094724624040, -0.652905967489384340, -0.652943838621879320, -0.652981708122014730, -0.653019575989695840, +-0.653057442224828310, -0.653095306827316870, -0.653133169797067260, -0.653171031133984670, -0.653208890837974730, -0.653246748908942300, -0.653284605346793110, -0.653322460151432250, +-0.653360313322765670, -0.653398164860697910, -0.653436014765134800, -0.653473863035981870, -0.653511709673144090, -0.653549554676526980, -0.653587398046035940, -0.653625239781576830, +-0.653663079883054170, -0.653700918350373920, -0.653738755183441270, -0.653776590382162180, -0.653814423946441180, -0.653852255876184230, -0.653890086171296510, -0.653927914831684000, +-0.653965741857251310, -0.654003567247904320, -0.654041391003548410, -0.654079213124089340, -0.654117033609431850, -0.654154852459481910, -0.654192669674144690, -0.654230485253326280, +-0.654268299196931190, -0.654306111504865400, -0.654343922177034740, -0.654381731213343860, -0.654419538613698610, -0.654457344378004620, -0.654495148506167520, -0.654532950998092280, +-0.654570751853684630, -0.654608551072850100, -0.654646348655494540, -0.654684144601522690, -0.654721938910840520, -0.654759731583353540, -0.654797522618967620, -0.654835312017587490, +-0.654873099779119120, -0.654910885903467910, -0.654948670390539830, -0.654986453240239850, -0.655024234452473710, -0.655062014027147250, -0.655099791964165460, -0.655137568263434170, +-0.655175342924859020, -0.655213115948345750, -0.655250887333799440, -0.655288657081125820, -0.655326425190230650, -0.655364191661019780, -0.655401956493397940, -0.655439719687271330, +-0.655477481242545460, -0.655515241159126180, -0.655552999436918360, -0.655590756075828170, -0.655628511075761030, -0.655666264436623010, -0.655704016158318860, -0.655741766240754750, +-0.655779514683836550, -0.655817261487469330, -0.655855006651558830, -0.655892750176010900, -0.655930492060731400, -0.655968232305625290, -0.656005970910598650, -0.656043707875556990, +-0.656081443200406510, -0.656119176885052060, -0.656156908929399600, -0.656194639333354980, -0.656232368096824060, -0.656270095219711800, -0.656307820701924390, -0.656345544543367350, +-0.656383266743946870, -0.656420987303567900, -0.656458706222136420, -0.656496423499558500, -0.656534139135739210, -0.656571853130584530, -0.656609565484000290, -0.656647276195892360, +-0.656684985266166030, -0.656722692694727160, -0.656760398481481600, -0.656798102626335310, -0.656835805129193480, -0.656873505989962080, -0.656911205208547070, -0.656948902784854180, +-0.656986598718788840, -0.657024293010257000, -0.657061985659164400, -0.657099676665417130, -0.657137366028920370, -0.657175053749580180, -0.657212739827302330, -0.657250424261993090, +-0.657288107053557340, -0.657325788201901350, -0.657363467706931210, -0.657401145568552110, -0.657438821786670120, -0.657476496361190990, -0.657514169292021110, -0.657551840579065350, +-0.657589510222230000, -0.657627178221420920, -0.657664844576544280, -0.657702509287505180, -0.657740172354209670, -0.657777833776563850, -0.657815493554473770, -0.657853151687844640, +-0.657890808176582630, -0.657928463020593490, -0.657966116219783630, -0.658003767774058110, -0.658041417683323140, -0.658079065947485000, -0.658116712566448880, -0.658154357540120970, +-0.658192000868407120, -0.658229642551213740, -0.658267282588445800, -0.658304920980009700, -0.658342557725811180, -0.658380192825756770, -0.658417826279751430, -0.658455458087701560, +-0.658493088249513030, -0.658530716765092120, -0.658568343634344130, -0.658605968857175260, -0.658643592433491460, -0.658681214363198930, -0.658718834646203180, -0.658756453282410280, +-0.658794070271726540, -0.658831685614057360, -0.658869299309308930, -0.658906911357387210, -0.658944521758198620, -0.658982130511648330, -0.659019737617642760, -0.659057343076087760, +-0.659094946886889850, -0.659132549049954220, -0.659170149565187160, -0.659207748432494740, -0.659245345651783390, -0.659282941222958160, -0.659320535145925700, -0.659358127420591860, +-0.659395718046863030, -0.659433307024644640, -0.659470894353842870, -0.659508480034364020, -0.659546064066114160, -0.659583646448998810, -0.659621227182924490, -0.659658806267797270, +-0.659696383703522790, -0.659733959490007350, -0.659771533627157010, -0.659809106114878090, -0.659846676953076190, -0.659884246141657530, -0.659921813680528270, -0.659959379569594830, +-0.659996943808762620, -0.660034506397937930, -0.660072067337027060, -0.660109626625936420, -0.660147184264571310, -0.660184740252838240, -0.660222294590643300, -0.660259847277893000, +-0.660297398314492750, -0.660334947700348950, -0.660372495435368130, -0.660410041519455810, -0.660447585952518290, -0.660485128734461860, -0.660522669865192920, -0.660560209344617010, +-0.660597747172640530, -0.660635283349169770, -0.660672817874111030, -0.660710350747369950, -0.660747881968853030, -0.660785411538466370, -0.660822939456116480, -0.660860465721708980, +-0.660897990335150290, -0.660935513296346590, -0.660973034605204400, -0.661010554261629360, -0.661048072265527980, -0.661085588616806660, -0.661123103315371050, -0.661160616361127770, +-0.661198127753982900, -0.661235637493843060, -0.661273145580613790, -0.661310652014201580, -0.661348156794512750, -0.661385659921453930, -0.661423161394930630, -0.661460661214849370, +-0.661498159381116560, -0.661535655893638500, -0.661573150752321150, -0.661610643957070810, -0.661648135507793890, -0.661685625404397020, -0.661723113646785710, -0.661760600234866600, +-0.661798085168546320, -0.661835568447730620, -0.661873050072325890, -0.661910530042238540, -0.661948008357375110, -0.661985485017641430, -0.662022960022944030, -0.662060433373189210, +-0.662097905068283700, -0.662135375108133030, -0.662172843492643940, -0.662210310221722720, -0.662247775295276120, -0.662285238713209660, -0.662322700475430180, -0.662360160581843880, +-0.662397619032357610, -0.662435075826876880, -0.662472530965308450, -0.662509984447558820, -0.662547436273534410, -0.662584886443141170, -0.662622334956285640, -0.662659781812874660, +-0.662697227012813860, -0.662734670556009990, -0.662772112442369550, -0.662809552671799080, -0.662846991244204320, -0.662884428159492220, -0.662921863417568980, -0.662959297018341440, +-0.662996728961715240, -0.663034159247597340, -0.663071587875893930, -0.663109014846511970, -0.663146440159357090, -0.663183863814336140, -0.663221285811355530, -0.663258706150322010, +-0.663296124831141420, -0.663333541853720510, -0.663370957217966020, -0.663408370923783910, -0.663445782971080810, -0.663483193359763250, -0.663520602089738070, -0.663558009160911120, +-0.663595414573189050, -0.663632818326478470, -0.663670220420686130, -0.663707620855717990, -0.663745019631480690, -0.663782416747880970, -0.663819812204825440, -0.663857206002220090, +-0.663894598139971650, -0.663931988617986860, -0.663969377436172350, -0.664006764594434080, -0.664044150092678810, -0.664081533930813590, -0.664118916108744180, -0.664156296626377540, +-0.664193675483620070, -0.664231052680378850, -0.664268428216559510, -0.664305802092069240, -0.664343174306814440, -0.664380544860701970, -0.664417913753637790, -0.664455280985528970, +-0.664492646556281820, -0.664530010465803400, -0.664567372713999680, -0.664604733300777520, -0.664642092226043420, -0.664679449489704590, -0.664716805091666750, -0.664754159031836770, +-0.664791511310121490, -0.664828861926427760, -0.664866210880661560, -0.664903558172729840, -0.664940903802539560, -0.664978247769996700, -0.665015590075008100, -0.665052930717480620, +-0.665090269697321210, -0.665127607014435630, -0.665164942668731160, -0.665202276660114330, -0.665239608988492100, -0.665276939653770550, -0.665314268655856630, -0.665351595994656990, +-0.665388921670078790, -0.665426245682027910, -0.665463568030411400, -0.665500888715135910, -0.665538207736108610, -0.665575525093235480, -0.665612840786423470, -0.665650154815579760, +-0.665687467180610340, -0.665724777881422150, -0.665762086917922160, -0.665799394290017110, -0.665836699997613300, -0.665874004040617810, -0.665911306418937250, -0.665948607132478830, +-0.665985906181148500, -0.666023203564853450, -0.666060499283500310, -0.666097793336996260, -0.666135085725247490, -0.666172376448160960, -0.666209665505643420, -0.666246952897602160, +-0.666284238623943150, -0.666321522684573560, -0.666358805079400370, -0.666396085808329990, -0.666433364871269360, -0.666470642268125250, -0.666507917998804930, -0.666545192063214500, +-0.666582464461261020, -0.666619735192851450, -0.666657004257892760, -0.666694271656291360, -0.666731537387954210, -0.666768801452788270, -0.666806063850700510, -0.666843324581597450, +-0.666880583645385940, -0.666917841041973050, -0.666955096771265850, -0.666992350833170660, -0.667029603227594530, -0.667066853954444430, -0.667104103013627440, -0.667141350405049960, +-0.667178596128618960, -0.667215840184241960, -0.667253082571824920, -0.667290323291275240, -0.667327562342499790, -0.667364799725405630, -0.667402035439899290, -0.667439269485887720, +-0.667476501863278120, -0.667513732571977550, -0.667550961611892200, -0.667588188982929600, -0.667625414684996480, -0.667662638718000130, -0.667699861081846870, -0.667737081776443860, +-0.667774300801698310, -0.667811518157517270, -0.667848733843807050, -0.667885947860475060, -0.667923160207428480, -0.667960370884573720, -0.667997579891818070, -0.668034787229068390, +-0.668071992896232090, -0.668109196893215460, -0.668146399219925910, -0.668183599876270300, -0.668220798862156020, -0.668257996177489490, -0.668295191822177890, -0.668332385796128300, +-0.668369578099248130, -0.668406768731443670, -0.668443957692622330, -0.668481144982691070, -0.668518330601557190, -0.668555514549127210, -0.668592696825308530, -0.668629877430008350, +-0.668667056363133170, -0.668704233624590310, -0.668741409214286930, -0.668778583132130230, -0.668815755378026840, -0.668852925951884060, -0.668890094853608950, -0.668927262083109040, +-0.668964427640290520, -0.669001591525061000, -0.669038753737327460, -0.669075914276997310, -0.669113073143977170, -0.669150230338174220, -0.669187385859495780, -0.669224539707849230, +-0.669261691883140890, -0.669298842385278370, -0.669335991214169090, -0.669373138369719570, -0.669410283851837100, -0.669447427660428970, -0.669484569795402610, -0.669521710256664400, +-0.669558849044122000, -0.669595986157682450, -0.669633121597253300, -0.669670255362741050, -0.669707387454053120, -0.669744517871096680, -0.669781646613779370, -0.669818773682007480, +-0.669855899075688770, -0.669893022794730290, -0.669930144839039570, -0.669967265208523120, -0.670004383903088470, -0.670041500922643030, -0.670078616267093970, -0.670115729936348160, +-0.670152841930312990, -0.670189952248896100, -0.670227060892003900, -0.670264167859544120, -0.670301273151423960, -0.670338376767550810, -0.670375478707831540, -0.670412578972173550, +-0.670449677560484010, -0.670486774472670690, -0.670523869708640090, -0.670560963268299730, -0.670598055151557130, -0.670635145358319580, -0.670672233888493840, -0.670709320741987640, +-0.670746405918708040, -0.670783489418562810, -0.670820571241458440, -0.670857651387302690, -0.670894729856003180, -0.670931806647466430, -0.670968881761600300, -0.671005955198311850, +-0.671043026957508840, -0.671080097039097990, -0.671117165442986830, -0.671154232169082880, -0.671191297217293540, -0.671228360587525770, -0.671265422279687000, -0.671302482293684720, +-0.671339540629426470, -0.671376597286819090, -0.671413652265770320, -0.671450705566187360, -0.671487757187977820, -0.671524807131048780, -0.671561855395307550, -0.671598901980662080, +-0.671635946887019000, -0.671672990114286160, -0.671710031662370750, -0.671747071531180630, -0.671784109720622410, -0.671821146230604070, -0.671858181061032680, -0.671895214211816310, +-0.671932245682861580, -0.671969275474076140, -0.672006303585367610, -0.672043330016643510, -0.672080354767810920, -0.672117377838777340, -0.672154399229450310, -0.672191418939737660, +-0.672228436969546150, -0.672265453318783510, -0.672302467987357270, -0.672339480975175150, -0.672376492282144020, -0.672413501908171620, -0.672450509853165900, -0.672487516117033500, +-0.672524520699682270, -0.672561523601019840, -0.672598524820953840, -0.672635524359391220, -0.672672522216239740, -0.672709518391407140, -0.672746512884800920, -0.672783505696328050, +-0.672820496825896510, -0.672857486273413690, -0.672894474038787550, -0.672931460121924840, -0.672968444522733520, -0.673005427241121000, -0.673042408276995350, -0.673079387630263200, +-0.673116365300832740, -0.673153341288611600, -0.673190315593506840, -0.673227288215426210, -0.673264259154277460, -0.673301228409968310, -0.673338195982405850, -0.673375161871497820, +-0.673412126077151950, -0.673449088599275990, -0.673486049437777010, -0.673523008592562980, -0.673559966063541400, -0.673596921850620260, -0.673633875953706380, -0.673670828372707970, +-0.673707779107532320, -0.673744728158087720, -0.673781675524280810, -0.673818621206019760, -0.673855565203212550, -0.673892507515766010, -0.673929448143588350, -0.673966387086586960, +-0.674003324344669920, -0.674040259917744300, -0.674077193805717960, -0.674114126008498630, -0.674151056525994390, -0.674187985358112090, -0.674224912504759910, -0.674261837965845380, +-0.674298761741276680, -0.674335683830960650, -0.674372604234805490, -0.674409522952718720, -0.674446439984608630, -0.674483355330381950, -0.674520268989946990, -0.674557180963211600, +-0.674594091250082960, -0.674630999850469150, -0.674667906764277790, -0.674704811991416960, -0.674741715531793850, -0.674778617385316410, -0.674815517551892400, -0.674852416031429980, +-0.674889312823836130, -0.674926207929019030, -0.674963101346886420, -0.674999993077346480, -0.675036883120306070, -0.675073771475673490, -0.675110658143356580, -0.675147543123263190, +-0.675184426415300740, -0.675221308019377190, -0.675258187935400380, -0.675295066163278390, -0.675331942702918410, -0.675368817554228620, -0.675405690717117090, -0.675442562191491010, +-0.675479431977258460, -0.675516300074327390, -0.675553166482605880, -0.675590031202001230, -0.675626894232421390, -0.675663755573774340, -0.675700615225968250, -0.675737473188910310, +-0.675774329462508590, -0.675811184046671180, -0.675848036941306020, -0.675884888146320420, -0.675921737661622670, -0.675958585487120620, -0.675995431622722350, -0.676032276068335270, +-0.676069118823867440, -0.676105959889227170, -0.676142799264321640, -0.676179636949059030, -0.676216472943347520, -0.676253307247094980, -0.676290139860208920, -0.676326970782597510, +-0.676363800014168740, -0.676400627554830660, -0.676437453404490800, -0.676474277563057220, -0.676511100030438020, -0.676547920806541360, -0.676584739891274540, -0.676621557284545870, +-0.676658372986263410, -0.676695186996335240, -0.676731999314668760, -0.676768809941172390, -0.676805618875754300, -0.676842426118321790, -0.676879231668783170, -0.676916035527046600, +-0.676952837693020170, -0.676989638166611290, -0.677026436947728350, -0.677063234036279440, -0.677100029432172620, -0.677136823135315420, -0.677173615145616250, -0.677210405462982950, +-0.677247194087324030, -0.677283981018546700, -0.677320766256559570, -0.677357549801270390, -0.677394331652587780, -0.677431111810418930, -0.677467890274672250, -0.677504667045256030, +-0.677541442122078340, -0.677578215505046710, -0.677614987194069540, -0.677651757189055240, -0.677688525489911210, -0.677725292096545970, -0.677762057008867380, -0.677798820226783950, +-0.677835581750203310, -0.677872341579033530, -0.677909099713183030, -0.677945856152559980, -0.677982610897072120, -0.678019363946627650, -0.678056115301134740, -0.678092864960501920, +-0.678129612924636580, -0.678166359193447250, -0.678203103766842010, -0.678239846644729250, -0.678276587827016720, -0.678313327313612600, -0.678350065104425410, -0.678386801199362900, +-0.678423535598333350, -0.678460268301244840, -0.678496999308006110, -0.678533728618524570, -0.678570456232708620, -0.678607182150466560, -0.678643906371706910, -0.678680628896337180, +-0.678717349724265780, -0.678754068855401020, -0.678790786289651500, -0.678827502026924660, -0.678864216067128990, -0.678900928410172910, -0.678937639055964710, -0.678974348004412140, +-0.679011055255423710, -0.679047760808907940, -0.679084464664772460, -0.679121166822925890, -0.679157867283276320, -0.679194566045732360, -0.679231263110201770, -0.679267958476593050, +-0.679304652144814280, -0.679341344114774310, -0.679378034386380670, -0.679414722959541860, -0.679451409834166300, -0.679488095010162500, -0.679524778487438200, -0.679561460265901920, +-0.679598140345461950, -0.679634818726027050, -0.679671495407504710, -0.679708170389803580, -0.679744843672832500, -0.679781515256498880, -0.679818185140711460, -0.679854853325378650, +-0.679891519810408960, -0.679928184595710140, -0.679964847681190920, -0.680001509066759600, -0.680038168752324810, -0.680074826737794180, -0.680111483023076560, -0.680148137608080240, +-0.680184790492713850, -0.680221441676885250, -0.680258091160502950, -0.680294738943475470, -0.680331385025711550, -0.680368029407118710, -0.680404672087605910, -0.680441313067081330, +-0.680477952345453830, -0.680514589922631140, -0.680551225798522010, -0.680587859973035060, -0.680624492446078140, -0.680661123217560000, -0.680697752287389050, -0.680734379655474120, +-0.680771005321722860, -0.680807629286044100, -0.680844251548346160, -0.680880872108538090, -0.680917490966527430, -0.680954108122223010, -0.680990723575533360, -0.681027337326367220, +-0.681063949374632440, -0.681100559720237750, -0.681137168363091680, -0.681173775303102970, -0.681210380540179570, -0.681246984074230230, -0.681283585905163690, -0.681320186032887800, +-0.681356784457311630, -0.681393381178343360, -0.681429976195891960, -0.681466569509865390, -0.681503161120172280, -0.681539751026721370, -0.681576339229421290, -0.681612925728180220, +-0.681649510522906680, -0.681686093613509400, -0.681722674999897250, -0.681759254681978070, -0.681795832659660710, -0.681832408932853800, -0.681868983501466190, -0.681905556365405840, +-0.681942127524581500, -0.681978696978902230, -0.682015264728275890, -0.682051830772611440, -0.682088395111817290, -0.682124957745802620, -0.682161518674475160, -0.682198077897743890, +-0.682234635415517430, -0.682271191227704740, -0.682307745334213680, -0.682344297734953310, -0.682380848429832270, -0.682417397418759290, -0.682453944701642560, -0.682490490278390930, +-0.682527034148913140, -0.682563576313118040, -0.682600116770913700, -0.682636655522209090, -0.682673192566912720, -0.682709727904933890, -0.682746261536180340, -0.682782793460561030, +-0.682819323677985150, -0.682855852188360650, -0.682892378991596490, -0.682928904087601430, -0.682965427476284300, -0.683001949157553410, -0.683038469131317600, -0.683074987397485620, +-0.683111503955966540, -0.683148018806668310, -0.683184531949500020, -0.683221043384370510, -0.683257553111188630, -0.683294061129862570, -0.683330567440301300, -0.683367072042413650, +-0.683403574936108700, -0.683440076121294430, -0.683476575597880000, -0.683513073365774490, -0.683549569424885870, -0.683586063775123430, -0.683622556416395800, -0.683659047348612050, +-0.683695536571680360, -0.683732024085509820, -0.683768509890009260, -0.683804993985087760, -0.683841476370653510, -0.683877957046615470, -0.683914436012882600, -0.683950913269363860, +-0.683987388815967660, -0.684023862652602840, -0.684060334779178490, -0.684096805195603560, -0.684133273901786240, -0.684169740897635830, -0.684206206183061380, -0.684242669757971100, +-0.684279131622274160, -0.684315591775879310, -0.684352050218695830, -0.684388506950631910, -0.684424961971596750, -0.684461415281499170, -0.684497866880248380, -0.684534316767752670, +-0.684570764943921000, -0.684607211408662540, -0.684643656161886380, -0.684680099203500700, -0.684716540533414800, -0.684752980151537520, -0.684789418057778150, -0.684825854252044900, +-0.684862288734247040, -0.684898721504293760, -0.684935152562093250, -0.684971581907555030, -0.685008009540587710, -0.685044435461100830, -0.685080859669002450, -0.685117282164201980, +-0.685153702946608270, -0.685190122016130610, -0.685226539372677300, -0.685262955016157750, -0.685299368946480690, -0.685335781163555650, -0.685372191667290690, -0.685408600457595330, +-0.685445007534378540, -0.685481412897549380, -0.685517816547016490, -0.685554218482689050, -0.685590618704476020, -0.685627017212286800, -0.685663414006029700, -0.685699809085614120, +-0.685736202450949350, -0.685772594101943690, -0.685808984038506540, -0.685845372260546870, -0.685881758767974190, -0.685918143560696800, -0.685954526638624000, -0.685990908001664960, +-0.686027287649728870, -0.686063665582724250, -0.686100041800560500, -0.686136416303146700, -0.686172789090392140, -0.686209160162205230, -0.686245529518495490, -0.686281897159171870, +-0.686318263084143900, -0.686354627293319860, -0.686390989786609280, -0.686427350563921570, -0.686463709625165230, -0.686500066970249570, -0.686536422599083650, -0.686572776511577110, +-0.686609128707638240, -0.686645479187176560, -0.686681827950101240, -0.686718174996321600, -0.686754520325746240, -0.686790863938284480, -0.686827205833845710, -0.686863546012339230, +-0.686899884473673450, -0.686936221217758100, -0.686972556244502040, -0.687008889553815010, -0.687045221145605400, -0.687081551019782850, -0.687117879176256660, -0.687154205614935340, +-0.687190530335728630, -0.687226853338545610, -0.687263174623295780, -0.687299494189887670, -0.687335812038230800, -0.687372128168234340, -0.687408442579807930, -0.687444755272860200, +-0.687481066247300430, -0.687517375503038150, -0.687553683039982650, -0.687589988858042570, -0.687626292957127630, -0.687662595337146910, -0.687698895998010040, -0.687735194939625540, +-0.687771492161903140, -0.687807787664752040, -0.687844081448081730, -0.687880373511800870, -0.687916663855819070, -0.687952952480045950, -0.687989239384390160, -0.688025524568761200, +-0.688061808033068490, -0.688098089777221640, -0.688134369801129190, -0.688170648104700740, -0.688206924687845720, -0.688243199550473750, -0.688279472692493450, -0.688315744113814460, +-0.688352013814346080, -0.688388281793998020, -0.688424548052678940, -0.688460812590298450, -0.688497075406765970, -0.688533336501991110, -0.688569595875882620, -0.688605853528350130, +-0.688642109459303260, -0.688678363668650870, -0.688714616156302470, -0.688750866922167690, -0.688787115966155940, -0.688823363288176060, -0.688859608888137910, -0.688895852765950670, +-0.688932094921524070, -0.688968335354766980, -0.689004574065589010, -0.689040811053899580, -0.689077046319608420, -0.689113279862624490, -0.689149511682857210, -0.689185741780216190, +-0.689221970154611170, -0.689258196805950800, -0.689294421734145010, -0.689330644939103570, -0.689366866420735080, -0.689403086178949410, -0.689439304213656180, -0.689475520524764800, +-0.689511735112184440, -0.689547947975824750, -0.689584159115595120, -0.689620368531405400, -0.689656576223164560, -0.689692782190782120, -0.689728986434167800, -0.689765188953231360, +-0.689801389747881630, -0.689837588818028370, -0.689873786163581190, -0.689909981784449840, -0.689946175680543170, -0.689982367851771140, -0.690018558298043480, -0.690054747019269170, +-0.690090934015357930, -0.690127119286219280, -0.690163302831763300, -0.690199484651898620, -0.690235664746535300, -0.690271843115582760, -0.690308019758951060, -0.690344194676548840, +-0.690380367868286270, -0.690416539334072650, -0.690452709073818060, -0.690488877087431340, -0.690525043374822460, -0.690561207935901030, -0.690597370770576810, -0.690633531878758870, +-0.690669691260357150, -0.690705848915281080, -0.690742004843440840, -0.690778159044745270, -0.690814311519104220, -0.690850462266427770, -0.690886611286624760, -0.690922758579605280, +-0.690958904145278940, -0.690995047983555600, -0.691031190094344330, -0.691067330477555200, -0.691103469133097610, -0.691139606060881650, -0.691175741260816380, -0.691211874732811760, +-0.691248006476777530, -0.691284136492623550, -0.691320264780258990, -0.691356391339593590, -0.691392516170537320, -0.691428639273000130, -0.691464760646890890, -0.691500880292119870, +-0.691536998208596930, -0.691573114396231150, -0.691609228854932590, -0.691645341584611000, -0.691681452585176330, -0.691717561856537650, -0.691753669398605160, -0.691789775211288480, +-0.691825879294497680, -0.691861981648141940, -0.691898082272131120, -0.691934181166375170, -0.691970278330784060, -0.692006373765266860, -0.692042467469733860, -0.692078559444094580, +-0.692114649688259310, -0.692150738202137020, -0.692186824985637990, -0.692222910038672090, -0.692258993361148710, -0.692295074952977710, -0.692331154814069150, -0.692367232944333000, +-0.692403309343678440, -0.692439384012015550, -0.692475456949254280, -0.692511528155304700, -0.692547597630075900, -0.692583665373478150, -0.692619731385421210, -0.692655795665815250, +-0.692691858214569580, -0.692727919031594140, -0.692763978116798910, -0.692800035470094170, -0.692836091091388880, -0.692872144980593460, -0.692908197137617750, -0.692944247562371720, +-0.692980296254764870, -0.693016343214707180, -0.693052388442108920, -0.693088431936879410, -0.693124473698928930, -0.693160513728167120, -0.693196552024504480, -0.693232588587850080, +-0.693268623418114130, -0.693304656515206670, -0.693340687879037910, -0.693376717509517130, -0.693412745406554620, -0.693448771570060130, -0.693484795999944060, -0.693520818696115700, +-0.693556839658485250, -0.693592858886962650, -0.693628876381458430, -0.693664892141881540, -0.693700906168142390, -0.693736918460151400, -0.693772929017817730, -0.693808937841051800, +-0.693844944929763450, -0.693880950283863100, -0.693916953903260030, -0.693952955787864530, -0.693988955937586800, -0.694024954352336910, -0.694060951032024250, -0.694096945976559350, +-0.694132939185851950, -0.694168930659812560, -0.694204920398350580, -0.694240908401376200, -0.694276894668799600, -0.694312879200531090, -0.694348861996480160, -0.694384843056556900, +-0.694420822380672040, -0.694456799968734660, -0.694492775820655270, -0.694528749936344060, -0.694564722315711200, -0.694600692958666220, -0.694636661865119520, -0.694672629034981170, +-0.694708594468161580, -0.694744558164570150, -0.694780520124117400, -0.694816480346713280, -0.694852438832268330, -0.694888395580691930, -0.694924350591894500, -0.694960303865786330, +-0.694996255402277610, -0.695032205201277950, -0.695068153262697770, -0.695104099586447480, -0.695140044172436690, -0.695175987020575810, -0.695211928130774930, -0.695247867502944540, +-0.695283805136994170, -0.695319741032834340, -0.695355675190375110, -0.695391607609527010, -0.695427538290199540, -0.695463467232303230, -0.695499394435748260, -0.695535319900445150, +-0.695571243626303510, -0.695607165613233660, -0.695643085861145870, -0.695679004369950670, -0.695714921139557680, -0.695750836169877430, -0.695786749460820090, -0.695822661012296170, +-0.695858570824215210, -0.695894478896487920, -0.695930385229024730, -0.695966289821735140, -0.696002192674530010, -0.696038093787319290, -0.696073993160013730, -0.696109890792522720, +-0.696145786684757130, -0.696181680836627010, -0.696217573248043010, -0.696253463918914850, -0.696289352849152940, -0.696325240038667690, -0.696361125487369610, -0.696397009195168340, +-0.696432891161974710, -0.696468771387698690, -0.696504649872251140, -0.696540526615541670, -0.696576401617480910, -0.696612274877979390, -0.696648146396946940, -0.696684016174293990, +-0.696719884209931140, -0.696755750503768810, -0.696791615055716850, -0.696827477865685770, -0.696863338933586100, -0.696899198259328330, -0.696935055842822230, -0.696970911683978510, +-0.697006765782707590, -0.697042618138919990, -0.697078468752525550, -0.697114317623434900, -0.697150164751558550, -0.697186010136807030, -0.697221853779090180, -0.697257695678318630, +-0.697293535834403230, -0.697329374247253720, -0.697365210916780720, -0.697401045842894750, -0.697436879025506440, -0.697472710464525520, -0.697508540159862970, -0.697544368111429060, +-0.697580194319134430, -0.697616018782889040, -0.697651841502603730, -0.697687662478188700, -0.697723481709554780, -0.697759299196611950, -0.697795114939270820, -0.697830928937441920, +-0.697866741191035980, -0.697902551699962960, -0.697938360464133490, -0.697974167483458090, -0.698009972757847600, -0.698045776287211980, -0.698081578071461760, -0.698117378110508000, +-0.698153176404260440, -0.698188972952630050, -0.698224767755527110, -0.698260560812862590, -0.698296352124546330, -0.698332141690489180, -0.698367929510601780, -0.698403715584794750, +-0.698439499912978160, -0.698475282495062850, -0.698511063330959360, -0.698546842420578410, -0.698582619763830180, -0.698618395360625310, -0.698654169210874420, -0.698689941314488470, +-0.698725711671377430, -0.698761480281452020, -0.698797247144623210, -0.698833012260801080, -0.698868775629896350, -0.698904537251819670, -0.698940297126481980, -0.698976055253793140, +-0.699011811633664220, -0.699047566266005840, -0.699083319150728850, -0.699119070287743230, -0.699154819676959920, -0.699190567318289440, -0.699226313211642970, -0.699262057356930480, +-0.699297799754062810, -0.699333540402950590, -0.699369279303504790, -0.699405016455635580, -0.699440751859253810, -0.699476485514270330, -0.699512217420595440, -0.699547947578140090, +-0.699583675986814700, -0.699619402646530550, -0.699655127557197610, -0.699690850718726720, -0.699726572131028850, -0.699762291794014720, -0.699798009707594650, -0.699833725871679580, +-0.699869440286180140, -0.699905152951007410, -0.699940863866071460, -0.699976573031283360, -0.700012280446553840, -0.700047986111793970, -0.700083690026913840, -0.700119392191824400, +-0.700155092606436820, -0.700190791270661190, -0.700226488184408580, -0.700262183347589830, -0.700297876760115790, -0.700333568421896870, -0.700369258332844020, -0.700404946492868000, +-0.700440632901879860, -0.700476317559789900, -0.700512000466509080, -0.700547681621948360, -0.700583361026018700, -0.700619038678630290, -0.700654714579694420, -0.700690388729121590, +-0.700726061126823120, -0.700761731772709280, -0.700797400666691050, -0.700833067808679380, -0.700868733198585340, -0.700904396836319110, -0.700940058721791880, -0.700975718854914830, +-0.701011377235598250, -0.701047033863753110, -0.701082688739290470, -0.701118341862121410, -0.701153993232156100, -0.701189642849305850, -0.701225290713481500, -0.701260936824594230, +-0.701296581182554330, -0.701332223787273000, -0.701367864638661080, -0.701403503736629740, -0.701439141081089400, -0.701474776671951240, -0.701510410509126100, -0.701546042592525290, +-0.701581672922058970, -0.701617301497638570, -0.701652928319175140, -0.701688553386579090, -0.701724176699761730, -0.701759798258633880, -0.701795418063106860, -0.701831036113090940, +-0.701866652408497550, -0.701902266949237410, -0.701937879735221930, -0.701973490766361510, -0.702009100042567220, -0.702044707563750260, -0.702080313329821900, -0.702115917340692340, +-0.702151519596273090, -0.702187120096474990, -0.702222718841209460, -0.702258315830386780, -0.702293911063918250, -0.702329504541715280, -0.702365096263688260, -0.702400686229748490, +-0.702436274439807050, -0.702471860893775220, -0.702507445591563420, -0.702543028533083040, -0.702578609718244930, -0.702614189146960830, -0.702649766819140820, -0.702685342734696410, +-0.702720916893538660, -0.702756489295578880, -0.702792059940727580, -0.702827628828896160, -0.702863195959995690, -0.702898761333937470, -0.702934324950632130, -0.702969886809990840, +-0.703005446911924900, -0.703041005256345720, -0.703076561843163690, -0.703112116672290230, -0.703147669743636740, -0.703183221057113840, -0.703218770612632940, -0.703254318410104990, +-0.703289864449441640, -0.703325408730553270, -0.703360951253351410, -0.703396492017747120, -0.703432031023651930, -0.703467568270976340, -0.703503103759631880, -0.703538637489529610, +-0.703574169460581160, -0.703609699672696930, -0.703645228125788340, -0.703680754819766770, -0.703716279754543650, -0.703751802930029480, -0.703787324346135890, -0.703822844002774170, +-0.703858361899855070, -0.703893878037290090, -0.703929392414990420, -0.703964905032867570, -0.704000415890832070, -0.704035924988795640, -0.704071432326669360, -0.704106937904364740, +-0.704142441721792520, -0.704177943778864220, -0.704213444075491140, -0.704248942611584660, -0.704284439387055540, -0.704319934401815280, -0.704355427655775190, -0.704390919148846880, +-0.704426408880940880, -0.704461896851968920, -0.704497383061842620, -0.704532867510472390, -0.704568350197770090, -0.704603831123646880, -0.704639310288014410, -0.704674787690783400, +-0.704710263331865370, -0.704745737211171620, -0.704781209328613990, -0.704816679684102890, -0.704852148277550160, -0.704887615108866990, -0.704923080177965230, -0.704958543484755400, +-0.704994005029149110, -0.705029464811057880, -0.705064922830393350, -0.705100379087066130, -0.705135833580987970, -0.705171286312070600, -0.705206737280224650, -0.705242186485361850, +-0.705277633927393620, -0.705313079606231570, -0.705348523521786560, -0.705383965673970210, -0.705419406062694040, -0.705454844687869560, -0.705490281549407630, -0.705525716647220080, +-0.705561149981218220, -0.705596581551313770, -0.705632011357417600, -0.705667439399441320, -0.705702865677296560, -0.705738290190894850, -0.705773712940147120, -0.705809133924965140, +-0.705844553145260290, -0.705879970600944430, -0.705915386291928290, -0.705950800218123620, -0.705986212379442370, -0.706021622775795170, -0.706057031407093970, -0.706092438273250190, +-0.706127843374175670, -0.706163246709781140, -0.706198648279978580, -0.706234048084679380, -0.706269446123795390, -0.706304842397237450, -0.706340236904917430, -0.706375629646746720, +-0.706411020622637280, -0.706446409832500070, -0.706481797276246710, -0.706517182953788960, -0.706552566865038530, -0.706587949009906400, -0.706623329388304300, -0.706658708000144300, +-0.706694084845337130, -0.706729459923794880, -0.706764833235428820, -0.706800204780151150, -0.706835574557872490, -0.706870942568505020, -0.706906308811960150, -0.706941673288149830, +-0.706977035996984910, -0.707012396938377590, -0.707047756112239130, -0.707083113518481630, -0.707118469157016040, -0.707153823027754310, -0.707189175130607970, -0.707224525465489080, +-0.707259874032308500, -0.707295220830978180, -0.707330565861410300, -0.707365909123515490, -0.707401250617206050, -0.707436590342393480, -0.707471928298989640, -0.707507264486905710, +-0.707542598906053750, -0.707577931556345190, -0.707613262437692070, -0.707648591550005480, -0.707683918893197480, -0.707719244467179600, -0.707754568271864000, -0.707789890307161660, +-0.707825210572984640, -0.707860529069244460, -0.707895845795853410, -0.707931160752722330, -0.707966473939763310, -0.708001785356888180, -0.708037095004008910, -0.708072402881036570, +-0.708107708987883220, -0.708143013324460950, -0.708178315890680810, -0.708213616686454880, -0.708248915711694900, -0.708284212966312940, -0.708319508450220180, -0.708354802163328690, +-0.708390094105549980, -0.708425384276796580, -0.708460672676979320, -0.708495959306010390, -0.708531244163801530, -0.708566527250264810, -0.708601808565311520, -0.708637088108853730, +-0.708672365880803290, -0.708707641881072160, -0.708742916109571630, -0.708778188566213770, -0.708813459250910880, -0.708848728163573920, -0.708883995304115170, -0.708919260672446370, +-0.708954524268479820, -0.708989786092126590, -0.709025046143298980, -0.709060304421908590, -0.709095560927867850, -0.709130815661087930, -0.709166068621480910, -0.709201319808958730, +-0.709236569223433590, -0.709271816864816770, -0.709307062733020350, -0.709342306827956180, -0.709377549149536660, -0.709412789697672960, -0.709448028472277280, -0.709483265473261790, +-0.709518500700537900, -0.709553734154017680, -0.709588965833613190, -0.709624195739236630, -0.709659423870799170, -0.709694650228213210, -0.709729874811390600, -0.709765097620243650, +-0.709800318654683520, -0.709835537914622730, -0.709870755399973020, -0.709905971110646790, -0.709941185046555350, -0.709976397207610850, -0.710011607593725390, -0.710046816204811250, +-0.710082023040779720, -0.710117228101543210, -0.710152431387013560, -0.710187632897103180, -0.710222832631723370, -0.710258030590786520, -0.710293226774204920, -0.710328421181889880, +-0.710363613813753790, -0.710398804669708730, -0.710433993749666870, -0.710469181053539730, -0.710504366581239720, -0.710539550332678790, -0.710574732307769240, -0.710609912506422580, +-0.710645090928551100, -0.710680267574066880, -0.710715442442882430, -0.710750615534908920, -0.710785786850059000, -0.710820956388244500, -0.710856124149377930, -0.710891290133370820, +-0.710926454340135350, -0.710961616769584140, -0.710996777421628590, -0.711031936296181110, -0.711067093393153770, -0.711102248712458970, -0.711137402254008340, -0.711172554017714060, +-0.711207704003488540, -0.711242852211243950, -0.711277998640892030, -0.711313143292345070, -0.711348286165515260, -0.711383427260315000, -0.711418566576655920, -0.711453704114450300, +-0.711488839873610560, -0.711523973854048860, -0.711559106055677180, -0.711594236478407580, -0.711629365122152690, -0.711664491986824020, -0.711699617072334200, -0.711734740378595410, +-0.711769861905519940, -0.711804981653019640, -0.711840099621006810, -0.711875215809393720, -0.711910330218092910, -0.711945442847016000, -0.711980553696075490, -0.712015662765183470, +-0.712050770054252660, -0.712085875563194690, -0.712120979291921970, -0.712156081240346910, -0.712191181408381780, -0.712226279795938550, -0.712261376402929520, -0.712296471229267420, +-0.712331564274863770, -0.712366655539631300, -0.712401745023482080, -0.712436832726328850, -0.712471918648083240, -0.712507002788657860, -0.712542085147964910, -0.712577165725917120, +-0.712612244522426110, -0.712647321537404400, -0.712682396770764500, -0.712717470222418830, -0.712752541892279210, -0.712787611780258290, -0.712822679886268240, -0.712857746210221800, +-0.712892810752030700, -0.712927873511607690, -0.712962934488864830, -0.712997993683715080, -0.713033051096069960, -0.713068106725842200, -0.713103160572944540, -0.713138212637288720, +-0.713173262918787240, -0.713208311417352640, -0.713243358132897630, -0.713278403065333850, -0.713313446214574150, -0.713348487580530710, -0.713383527163116480, -0.713418564962243100, +-0.713453600977823180, -0.713488635209769350, -0.713523667657994240, -0.713558698322409700, -0.713593727202928350, -0.713628754299462710, -0.713663779611925510, -0.713698803140228490, +-0.713733824884284500, -0.713768844844006270, -0.713803863019305540, -0.713838879410095270, -0.713873894016287760, -0.713908906837795840, -0.713943917874531260, -0.713978927126406980, +-0.714013934593335400, -0.714048940275229250, -0.714083944172000380, -0.714118946283561760, -0.714153946609825670, -0.714188945150705080, -0.714223941906111830, -0.714258936875958650, +-0.714293930060158290, -0.714328921458623260, -0.714363911071265620, -0.714398898897998240, -0.714433884938733940, -0.714468869193384590, -0.714503851661863140, -0.714538832344082000, +-0.714573811239954000, -0.714608788349391340, -0.714643763672306640, -0.714678737208612520, -0.714713708958221840, -0.714748678921046650, -0.714783647096999710, -0.714818613485993630, +-0.714853578087941370, -0.714888540902754780, -0.714923501930346930, -0.714958461170630330, -0.714993418623517840, -0.715028374288921520, -0.715063328166754220, -0.715098280256928680, +-0.715133230559357620, -0.715168179073953250, -0.715203125800628500, -0.715238070739296240, -0.715273013889868410, -0.715307955252257990, -0.715342894826377810, -0.715377832612140610, +-0.715412768609458680, -0.715447702818244660, -0.715482635238411380, -0.715517565869871920, -0.715552494712538230, -0.715587421766323280, -0.715622347031139800, -0.715657270506900640, +-0.715692192193518100, -0.715727112090905120, -0.715762030198974220, -0.715796946517638700, -0.715831861046810400, -0.715866773786402510, -0.715901684736327980, -0.715936593896499000, +-0.715971501266828400, -0.716006406847229160, -0.716041310637614110, -0.716076212637895450, -0.716111112847986450, -0.716146011267799530, -0.716180907897247860, -0.716215802736243630, +-0.716250695784700020, -0.716285587042529540, -0.716320476509645370, -0.716355364185959800, -0.716390250071385900, -0.716425134165836200, -0.716460016469224080, -0.716494896981461520, +-0.716529775702461790, -0.716564652632137870, -0.716599527770402030, -0.716634401117167470, -0.716669272672346810, -0.716704142435853230, -0.716739010407599130, -0.716773876587497360, +-0.716808740975460990, -0.716843603571403090, -0.716878464375235720, -0.716913323386872410, -0.716948180606225670, -0.716983036033208790, -0.717017889667734050, -0.717052741509714540, +-0.717087591559063210, -0.717122439815693240, -0.717157286279516800, -0.717192130950447090, -0.717226973828397400, -0.717261814913280120, -0.717296654205008100, -0.717331491703494530, +-0.717366327408652580, -0.717401161320394440, -0.717435993438633400, -0.717470823763282420, -0.717505652294254670, -0.717540479031462560, -0.717575303974819170, -0.717610127124237440, +-0.717644948479630780, -0.717679768040911490, -0.717714585807992740, -0.717749401780787500, -0.717784215959209050, -0.717819028343169800, -0.717853838932582920, -0.717888647727361500, +-0.717923454727418810, -0.717958259932667040, -0.717993063343019710, -0.718027864958390110, -0.718062664778690410, -0.718097462803834130, -0.718132259033734120, -0.718167053468303780, +-0.718201846107455520, -0.718236636951102620, -0.718271425999158280, -0.718306213251535430, -0.718340998708146940, -0.718375782368905870, -0.718410564233725400, -0.718445344302518720, +-0.718480122575198440, -0.718514899051677870, -0.718549673731870060, -0.718584446615688320, -0.718619217703045150, -0.718653986993853970, -0.718688754488028160, -0.718723520185480140, +-0.718758284086123300, -0.718793046189870720, -0.718827806496635910, -0.718862565006331280, -0.718897321718870110, -0.718932076634165810, -0.718966829752131440, -0.719001581072679860, +-0.719036330595724250, -0.719071078321177780, -0.719105824248953970, -0.719140568378965230, -0.719175310711125170, -0.719210051245346760, -0.719244789981543620, -0.719279526919628040, +-0.719314262059513760, -0.719348995401114080, -0.719383726944341720, -0.719418456689109980, -0.719453184635332030, -0.719487910782921510, -0.719522635131790820, -0.719557357681853580, +-0.719592078433022970, -0.719626797385212400, -0.719661514538334600, -0.719696229892303090, -0.719730943447030810, -0.719765655202431630, -0.719800365158417940, -0.719835073314903370, +-0.719869779671801100, -0.719904484229024640, -0.719939186986486730, -0.719973887944100890, -0.720008587101780280, -0.720043284459438440, -0.720077980016988200, -0.720112673774342960, +-0.720147365731416360, -0.720182055888121010, -0.720216744244370540, -0.720251430800078250, -0.720286115555157650, -0.720320798509521350, -0.720355479663083220, -0.720390159015756320, +-0.720424836567454370, -0.720459512318089910, -0.720494186267576770, -0.720528858415828140, -0.720563528762757640, -0.720598197308278010, -0.720632864052302980, -0.720667528994745730, +-0.720702192135519890, -0.720736853474538420, -0.720771513011714720, -0.720806170746962520, -0.720840826680194670, -0.720875480811324690, -0.720910133140266090, -0.720944783666932270, +-0.720979432391236410, -0.721014079313091800, -0.721048724432412080, -0.721083367749110860, -0.721118009263100880, -0.721152648974295980, -0.721187286882609250, -0.721221922987954840, +-0.721256557290245180, -0.721291189789394100, -0.721325820485315130, -0.721360449377921880, -0.721395076467127190, -0.721429701752844820, -0.721464325234988600, -0.721498946913471160, +-0.721533566788206350, -0.721568184859107680, -0.721602801126088770, -0.721637415589062580, -0.721672028247942850, -0.721706639102643100, -0.721741248153076940, -0.721775855399157450, +-0.721810460840798360, -0.721845064477913080, -0.721879666310415450, -0.721914266338218310, -0.721948864561235530, -0.721983460979380600, -0.722018055592567260, -0.722052648400708490, +-0.722087239403718220, -0.722121828601509970, -0.722156415993997050, -0.722191001581092950, -0.722225585362711420, -0.722260167338766190, -0.722294747509170220, -0.722329325873837360, +-0.722363902432681230, -0.722398477185615670, -0.722433050132553540, -0.722467621273408910, -0.722502190608095060, -0.722536758136526180, -0.722571323858615000, -0.722605887774275590, +-0.722640449883421470, -0.722675010185966470, -0.722709568681823680, -0.722744125370906930, -0.722778680253129860, -0.722813233328406410, -0.722847784596649670, -0.722882334057773360, +-0.722916881711691550, -0.722951427558317210, -0.722985971597564390, -0.723020513829346510, -0.723055054253577740, -0.723089592870170940, -0.723124129679040270, -0.723158664680099150, +-0.723193197873261750, -0.723227729258441140, -0.723262258835551060, -0.723296786604505360, -0.723331312565218100, -0.723365836717602130, -0.723400359061571630, -0.723434879597040230, +-0.723469398323921880, -0.723503915242129870, -0.723538430351577940, -0.723572943652180280, -0.723607455143849940, -0.723641964826500890, -0.723676472700047090, -0.723710978764402270, +-0.723745483019479830, -0.723779985465193620, -0.723814486101457490, -0.723848984928185390, -0.723883481945290510, -0.723917977152686910, -0.723952470550288440, -0.723986962138009170, +-0.724021451915762060, -0.724055939883461290, -0.724090426041020810, -0.724124910388354470, -0.724159392925375570, -0.724193873651998170, -0.724228352568136450, -0.724262829673703480, +-0.724297304968613440, -0.724331778452780180, -0.724366250126117770, -0.724400719988539390, -0.724435188039959320, -0.724469654280291200, -0.724504118709449200, -0.724538581327346610, +-0.724573042133897620, -0.724607501129016060, -0.724641958312616020, -0.724676413684610780, -0.724710867244914510, -0.724745318993440970, -0.724779768930104540, -0.724814217054818410, +-0.724848663367496650, -0.724883107868053320, -0.724917550556402390, -0.724951991432457370, -0.724986430496132430, -0.725020867747341650, -0.725055303185998420, -0.725089736812016940, +-0.725124168625311040, -0.725158598625795130, -0.725193026813382380, -0.725227453187986980, -0.725261877749523000, -0.725296300497904720, -0.725330721433045330, -0.725365140554859120, +-0.725399557863260050, -0.725433973358162400, -0.725468387039479470, -0.725502798907125660, -0.725537208961014810, -0.725571617201061230, -0.725606023627178300, -0.725640428239280320, +-0.725674831037281590, -0.725709232021095390, -0.725743631190636230, -0.725778028545817970, -0.725812424086554890, -0.725846817812760500, -0.725881209724349000, -0.725915599821234550, +-0.725949988103331450, -0.725984374570552980, -0.726018759222813560, -0.726053142060027360, -0.726087523082108440, -0.726121902288970440, -0.726156279680527870, -0.726190655256694460, +-0.726225029017384730, -0.726259400962512070, -0.726293771091991000, -0.726328139405735710, -0.726362505903659810, -0.726396870585677700, -0.726431233451703350, -0.726465594501651270, +-0.726499953735434860, -0.726534311152968630, -0.726568666754166540, -0.726603020538943100, -0.726637372507211830, -0.726671722658887130, -0.726706070993883180, -0.726740417512114270, +-0.726774762213494020, -0.726809105097936840, -0.726843446165357010, -0.726877785415668830, -0.726912122848785810, -0.726946458464622580, -0.726980792263093420, -0.727015124244111970, +-0.727049454407592830, -0.727083782753449980, -0.727118109281597920, -0.727152433991950400, -0.727186756884421690, -0.727221077958926100, -0.727255397215378130, -0.727289714653691410, +-0.727324030273780340, -0.727358344075559220, -0.727392656058942540, -0.727426966223843950, -0.727461274570177950, -0.727495581097858720, -0.727529885806800890, -0.727564188696917970, +-0.727598489768124690, -0.727632789020335120, -0.727667086453463900, -0.727701382067424630, -0.727735675862131840, -0.727769967837500250, -0.727804257993443390, -0.727838546329875990, +-0.727872832846712110, -0.727907117543866500, -0.727941400421252770, -0.727975681478785660, -0.728009960716379250, -0.728044238133948250, -0.728078513731406310, -0.728112787508668150, +-0.728147059465647950, -0.728181329602260450, -0.728215597918419280, -0.728249864414039160, -0.728284129089034390, -0.728318391943319600, -0.728352652976808510, -0.728386912189415760, +-0.728421169581056070, -0.728455425151643080, -0.728489678901091620, -0.728523930829315880, -0.728558180936230810, -0.728592429221749830, -0.728626675685787760, -0.728660920328259020, +-0.728695163149078340, -0.728729404148159340, -0.728763643325416990, -0.728797880680765340, -0.728832116214119360, -0.728866349925392900, -0.728900581814500460, -0.728934811881356560, +-0.728969040125875930, -0.729003266547972430, -0.729037491147560780, -0.729071713924555720, -0.729105934878871100, -0.729140154010421540, -0.729174371319121660, -0.729208586804886090, +-0.729242800467628790, -0.729277012307264490, -0.729311222323707710, -0.729345430516873170, -0.729379636886674730, -0.729413841433027120, -0.729448044155844970, -0.729482245055043000, +-0.729516444130535180, -0.729550641382236130, -0.729584836810060590, -0.729619030413923180, -0.729653222193737960, -0.729687412149419680, -0.729721600280882840, -0.729755786588042300, +-0.729789971070812000, -0.729824153729106690, -0.729858334562841440, -0.729892513571929970, -0.729926690756287240, -0.729960866115827670, -0.729995039650466420, -0.730029211360117230, +-0.730063381244694940, -0.730097549304114190, -0.730131715538289930, -0.730165879947136110, -0.730200042530567470, -0.730234203288498860, -0.730268362220845010, -0.730302519327519880, +-0.730336674608438540, -0.730370828063515390, -0.730404979692665600, -0.730439129495803030, -0.730473277472842520, -0.730507423623699250, -0.730541567948287060, -0.730575710446521030, +-0.730609851118315670, -0.730643989963585930, -0.730678126982245990, -0.730712262174210700, -0.730746395539394800, -0.730780527077713130, -0.730814656789079970, -0.730848784673409970, +-0.730882910730618170, -0.730917034960619330, -0.730951157363327610, -0.730985277938658080, -0.731019396686525270, -0.731053513606844340, -0.731087628699529260, -0.731121741964495090, +-0.731155853401656900, -0.731189963010928760, -0.731224070792225730, -0.731258176745462450, -0.731292280870554200, -0.731326383167414830, -0.731360483635959510, -0.731394582276102990, +-0.731428679087760330, -0.731462774070845700, -0.731496867225273960, -0.731530958550960290, -0.731565048047819410, -0.731599135715765620, -0.731633221554713890, -0.731667305564579260, +-0.731701387745276600, -0.731735468096720190, -0.731769546618825100, -0.731803623311506500, -0.731837698174678470, -0.731871771208256190, -0.731905842412154510, -0.731939911786288590, +-0.731973979330572510, -0.732008045044921450, -0.732042108929250370, -0.732076170983474220, -0.732110231207507400, -0.732144289601264990, -0.732178346164661820, -0.732212400897613190, +-0.732246453800033170, -0.732280504871837050, -0.732314554112939660, -0.732348601523256200, -0.732382647102700850, -0.732416690851188990, -0.732450732768635370, -0.732484772854955170, +-0.732518811110062900, -0.732552847533873400, -0.732586882126302190, -0.732620914887263440, -0.732654945816672450, -0.732688974914444070, -0.732723002180493470, -0.732757027614735160, +-0.732791051217084210, -0.732825072987455690, -0.732859092925764790, -0.732893111031925890, -0.732927127305854190, -0.732961141747464630, -0.732995154356672510, -0.733029165133392220, +-0.733063174077539070, -0.733097181189027890, -0.733131186467774200, -0.733165189913692170, -0.733199191526697100, -0.733233191306704390, -0.733267189253628440, -0.733301185367384530, +-0.733335179647887640, -0.733369172095053030, -0.733403162708795240, -0.733437151489029550, -0.733471138435671020, -0.733505123548634840, -0.733539106827835630, -0.733573088273188680, +-0.733607067884608940, -0.733641045662011830, -0.733675021605311840, -0.733708995714424270, -0.733742967989264310, -0.733776938429747120, -0.733810907035787330, -0.733844873807300240, +-0.733878838744201230, -0.733912801846404950, -0.733946763113826560, -0.733980722546381250, -0.734014680143984520, -0.734048635906550780, -0.734082589833995440, -0.734116541926233550, +-0.734150492183180740, -0.734184440604751300, -0.734218387190860740, -0.734252331941424250, -0.734286274856357220, -0.734320215935574280, -0.734354155178990720, -0.734388092586521820, +-0.734422028158082880, -0.734455961893588750, -0.734489893792954600, -0.734523823856095710, -0.734557752082927620, -0.734591678473364710, -0.734625603027322830, -0.734659525744717050, +-0.734693446625462210, -0.734727365669473830, -0.734761282876666980, -0.734795198246957160, -0.734829111780259110, -0.734863023476488240, -0.734896933335559940, -0.734930841357389510, +-0.734964747541891560, -0.734998651888981950, -0.735032554398575620, -0.735066455070588210, -0.735100353904934330, -0.735134250901529620, -0.735168146060289240, -0.735202039381128820, +-0.735235930863962990, -0.735269820508707370, -0.735303708315277470, -0.735337594283587910, -0.735371478413554550, -0.735405360705092330, -0.735439241158117100, -0.735473119772543370, +-0.735506996548287000, -0.735540871485263040, -0.735574744583387230, -0.735608615842574200, -0.735642485262739680, -0.735676352843798950, -0.735710218585667650, -0.735744082488260510, +-0.735777944551493150, -0.735811804775280850, -0.735845663159539360, -0.735879519704183530, -0.735913374409128850, -0.735947227274290960, -0.735981078299584810, -0.736014927484925810, +-0.736048774830229680, -0.736082620335411830, -0.736116464000387110, -0.736150305825071240, -0.736184145809379630, -0.736217983953227910, -0.736251820256530910, -0.736285654719204370, +-0.736319487341163810, -0.736353318122324740, -0.736387147062602110, -0.736420974161911550, -0.736454799420168560, -0.736488622837289000, -0.736522444413187480, -0.736556264147779860, +-0.736590082040981860, -0.736623898092708340, -0.736657712302875130, -0.736691524671397650, -0.736725335198191610, -0.736759143883171990, -0.736792950726254390, -0.736826755727354570, +-0.736860558886388020, -0.736894360203269820, -0.736928159677915810, -0.736961957310241280, -0.736995753100162190, -0.737029547047593490, -0.737063339152450810, -0.737097129414649890, +-0.737130917834106340, -0.737164704410735340, -0.737198489144452410, -0.737232272035173390, -0.737266053082813900, -0.737299832287289010, -0.737333609648514580, -0.737367385166406430, +-0.737401158840879420, -0.737434930671849620, -0.737468700659232420, -0.737502468802943790, -0.737536235102898670, -0.737569999559013030, -0.737603762171202380, -0.737637522939382560, +-0.737671281863468640, -0.737705038943376580, -0.737738794179021880, -0.737772547570320510, -0.737806299117187430, -0.737840048819538690, -0.737873796677289700, -0.737907542690356630, +-0.737941286858654340, -0.737975029182098900, -0.738008769660606130, -0.738042508294091130, -0.738076245082469830, -0.738109980025658090, -0.738143713123571520, -0.738177444376125420, +-0.738211173783235750, -0.738244901344818130, -0.738278627060788510, -0.738312350931062070, -0.738346072955554660, -0.738379793134182230, -0.738413511466860520, -0.738447227953504700, +-0.738480942594030850, -0.738514655388354700, -0.738548366336392090, -0.738582075438058430, -0.738615782693269440, -0.738649488101941310, -0.738683191663989210, -0.738716893379329110, +-0.738750593247876840, -0.738784291269548250, -0.738817987444258750, -0.738851681771924170, -0.738885374252460480, -0.738919064885783630, -0.738952753671808790, -0.738986440610452160, +-0.739020125701629340, -0.739053808945256520, -0.739087490341248880, -0.739121169889522590, -0.739154847589993280, -0.739188523442577130, -0.739222197447189420, -0.739255869603746230, +-0.739289539912163400, -0.739323208372356880, -0.739356874984242190, -0.739390539747735280, -0.739424202662752330, -0.739457863729208520, -0.739491522947020030, -0.739525180316102810, +-0.739558835836372830, -0.739592489507745590, -0.739626141330137040, -0.739659791303463150, -0.739693439427640210, -0.739727085702583160, -0.739760730128208530, -0.739794372704432050, +-0.739828013431170000, -0.739861652308337450, -0.739895289335850910, -0.739928924513626130, -0.739962557841579270, -0.739996189319625740, -0.740029818947681830, -0.740063446725663600, +-0.740097072653486450, -0.740130696731066570, -0.740164318958320020, -0.740197939335162980, -0.740231557861510740, -0.740265174537279690, -0.740298789362385580, -0.740332402336744910, +-0.740366013460272860, -0.740399622732885840, -0.740433230154499690, -0.740466835725030800, -0.740500439444394480, -0.740534041312507220, -0.740567641329284650, -0.740601239494643400, +-0.740634835808498760, -0.740668430270766900, -0.740702022881364440, -0.740735613640206570, -0.740769202547209570, -0.740802789602289740, -0.740836374805363020, -0.740869958156345270, +-0.740903539655152430, -0.740937119301700810, -0.740970697095906790, -0.741004273037685680, -0.741037847126953860, -0.741071419363627410, -0.741104989747622730, -0.741138558278855220, +-0.741172124957241380, -0.741205689782697300, -0.741239252755139240, -0.741272813874482630, -0.741306373140644070, -0.741339930553539860, -0.741373486113085620, -0.741407039819197640, +-0.741440591671791990, -0.741474141670785180, -0.741507689816092720, -0.741541236107631010, -0.741574780545316230, -0.741608323129064770, -0.741641863858792270, -0.741675402734415120, +-0.741708939755849390, -0.741742474923011710, -0.741776008235817350, -0.741809539694183170, -0.741843069298025130, -0.741876597047259610, -0.741910122941802360, -0.741943646981569780, +-0.741977169166478050, -0.742010689496443780, -0.742044207971382490, -0.742077724591210570, -0.742111239355844780, -0.742144752265200490, -0.742178263319194340, -0.742211772517742510, +-0.742245279860761610, -0.742278785348167160, -0.742312288979875780, -0.742345790755803650, -0.742379290675867280, -0.742412788739982510, -0.742446284948065750, -0.742479779300033170, +-0.742513271795801620, -0.742546762435286390, -0.742580251218404430, -0.742613738145071810, -0.742647223215205040, -0.742680706428719970, -0.742714187785533220, -0.742747667285561190, +-0.742781144928719610, -0.742814620714925320, -0.742848094644094510, -0.742881566716143580, -0.742915036930988590, -0.742948505288545950, -0.742981971788732040, -0.743015436431463620, +-0.743048899216656180, -0.743082360144226460, -0.743115819214090980, -0.743149276426166130, -0.743182731780367870, -0.743216185276612710, -0.743249636914817160, -0.743283086694897730, +-0.743316534616770390, -0.743349980680351630, -0.743383424885558310, -0.743416867232306040, -0.743450307720511570, -0.743483746350091400, -0.743517183120962160, -0.743550618033039680, +-0.743584051086240590, -0.743617482280481410, -0.743650911615678870, -0.743684339091748690, -0.743717764708607730, -0.743751188466172270, -0.743784610364359170, -0.743818030403084250, +-0.743851448582264260, -0.743884864901815710, -0.743918279361655220, -0.743951691961698750, -0.743985102701863020, -0.744018511582064560, -0.744051918602220090, -0.744085323762245570, +-0.744118727062057730, -0.744152128501573420, -0.744185528080708480, -0.744218925799379650, -0.744252321657503440, -0.744285715654996900, -0.744319107791775680, -0.744352498067756720, +-0.744385886482856530, -0.744419273036991850, -0.744452657730078740, -0.744486040562033930, -0.744519421532774170, -0.744552800642215960, -0.744586177890275590, -0.744619553276869680, +-0.744652926801914970, -0.744686298465328190, -0.744719668267025400, -0.744753036206923460, -0.744786402284939200, -0.744819766500988580, -0.744853128854988670, -0.744886489346855860, +-0.744919847976507010, -0.744953204743858400, -0.744986559648826760, -0.745019912691328720, -0.745053263871281120, -0.745086613188600140, -0.745119960643202630, -0.745153306235005200, +-0.745186649963924810, -0.745219991829877420, -0.745253331832780200, -0.745286669972549440, -0.745320006249102550, -0.745353340662355150, -0.745386673212224520, -0.745420003898627390, +-0.745453332721480070, -0.745486659680699380, -0.745519984776202070, -0.745553308007904980, -0.745586629375724400, -0.745619948879577280, -0.745653266519380240, -0.745686582295050360, +-0.745719896206503700, -0.745753208253657320, -0.745786518436427960, -0.745819826754732460, -0.745853133208487230, -0.745886437797609100, -0.745919740522014930, -0.745953041381621770, +-0.745986340376345590, -0.746019637506103560, -0.746052932770812750, -0.746086226170389330, -0.746119517704750380, -0.746152807373812510, -0.746186095177493120, -0.746219381115708070, +-0.746252665188374520, -0.746285947395409320, -0.746319227736729650, -0.746352506212251580, -0.746385782821892270, -0.746419057565568370, -0.746452330443197250, -0.746485601454695000, +-0.746518870599978680, -0.746552137878965240, -0.746585403291571750, -0.746618666837714380, -0.746651928517310440, -0.746685188330276640, -0.746718446276530170, -0.746751702355987200, +-0.746784956568565140, -0.746818208914180940, -0.746851459392750770, -0.746884708004192150, -0.746917954748421600, -0.746951199625356610, -0.746984442634913260, -0.747017683777008830, +-0.747050923051560070, -0.747084160458484470, -0.747117395997698000, -0.747150629669118160, -0.747183861472661690, -0.747217091408245880, -0.747250319475787130, -0.747283545675202500, +-0.747316770006408950, -0.747349992469323880, -0.747383213063863460, -0.747416431789944990, -0.747449648647485860, -0.747482863636402150, -0.747516076756611470, -0.747549288008030440, +-0.747582497390576470, -0.747615704904166070, -0.747648910548716410, -0.747682114324144440, -0.747715316230367470, -0.747748516267301880, -0.747781714434865070, -0.747814910732973900, +-0.747848105161545870, -0.747881297720497160, -0.747914488409745280, -0.747947677229207190, -0.747980864178800160, -0.748014049258440620, -0.748047232468046050, -0.748080413807533650, +-0.748113593276819920, -0.748146770875822260, -0.748179946604457520, -0.748213120462643320, -0.748246292450296060, -0.748279462567333020, -0.748312630813671390, -0.748345797189228450, +-0.748378961693920600, -0.748412124327665460, -0.748445285090380000, -0.748478443981981600, -0.748511601002386780, -0.748544756151513060, -0.748577909429277380, -0.748611060835597140, +-0.748644210370389080, -0.748677358033570490, -0.748710503825058440, -0.748743647744770420, -0.748776789792623080, -0.748809929968533570, -0.748843068272419750, -0.748876204704197910, +-0.748909339263785560, -0.748942471951099750, -0.748975602766058120, -0.749008731708577180, -0.749041858778574430, -0.749074983975967060, -0.749108107300672450, -0.749141228752607360, +-0.749174348331689170, -0.749207466037835170, -0.749240581870962650, -0.749273695830988460, -0.749306807917830110, -0.749339918131404660, -0.749373026471629730, -0.749406132938421950, +-0.749439237531698720, -0.749472340251377770, -0.749505441097375710, -0.749538540069610070, -0.749571637167998130, -0.749604732392457280, -0.749637825742904270, -0.749670917219256720, +-0.749704006821431900, -0.749737094549347340, -0.749770180402919870, -0.749803264382066900, -0.749836346486705720, -0.749869426716753940, -0.749902505072128300, -0.749935581552746420, +-0.749968656158525590, -0.750001728889383430, -0.750034799745236680, -0.750067868726002950, -0.750100935831599760, -0.750134001061943940, -0.750167064416953130, -0.750200125896544720, +-0.750233185500636220, -0.750266243229144480, -0.750299299081987110, -0.750332353059081520, -0.750365405160345330, -0.750398455385695380, -0.750431503735049300, -0.750464550208324370, +-0.750497594805438430, -0.750530637526308220, -0.750563678370851360, -0.750596717338985360, -0.750629754430627740, -0.750662789645695550, -0.750695822984106420, -0.750728854445777640, +-0.750761884030627050, -0.750794911738571490, -0.750827937569528590, -0.750860961523416190, -0.750893983600151140, -0.750927003799651050, -0.750960022121833440, -0.750993038566616030, +-0.751026053133915910, -0.751059065823650450, -0.751092076635737520, -0.751125085570094500, -0.751158092626638570, -0.751191097805287370, -0.751224101105958500, -0.751257102528569700, +-0.751290102073037810, -0.751323099739280580, -0.751356095527215610, -0.751389089436760750, -0.751422081467832960, -0.751455071620349860, -0.751488059894229400, -0.751521046289388430, +-0.751554030805744900, -0.751587013443216320, -0.751619994201720430, -0.751652973081174290, -0.751685950081495750, -0.751718925202602420, -0.751751898444411930, -0.751784869806841450, +-0.751817839289808720, -0.751850806893231470, -0.751883772617027550, -0.751916736461113900, -0.751949698425408260, -0.751982658509828480, -0.752015616714292400, -0.752048573038716860, +-0.752081527483019930, -0.752114480047119560, -0.752147430730932600, -0.752180379534377110, -0.752213326457370600, -0.752246271499831140, -0.752279214661675690, -0.752312155942822190, +-0.752345095343188270, -0.752378032862692000, -0.752410968501250330, -0.752443902258781220, -0.752476834135202280, -0.752509764130431690, -0.752542692244386300, -0.752575618476984180, +-0.752608542828143050, -0.752641465297780870, -0.752674385885814700, -0.752707304592162620, -0.752740221416742460, -0.752773136359471520, -0.752806049420267740, -0.752838960599048760, +-0.752871869895732740, -0.752904777310236860, -0.752937682842478970, -0.752970586492376800, -0.753003488259848420, -0.753036388144811110, -0.753069286147182830, -0.753102182266881300, +-0.753135076503824720, -0.753167968857930030, -0.753200859329115510, -0.753233747917298800, -0.753266634622397960, -0.753299519444330270, -0.753332402383013800, -0.753365283438366400, +-0.753398162610305900, -0.753431039898749820, -0.753463915303616230, -0.753496788824822960, -0.753529660462287530, -0.753562530215928010, -0.753595398085662000, -0.753628264071407930, +-0.753661128173082840, -0.753693990390604920, -0.753726850723892010, -0.753759709172862280, -0.753792565737433030, -0.753825420417522320, -0.753858273213048100, -0.753891124123928450, +-0.753923973150080750, -0.753956820291423080, -0.753989665547873390, -0.754022508919349850, -0.754055350405769650, -0.754088190007051180, -0.754121027723112400, -0.754153863553870930, +-0.754186697499244610, -0.754219529559151610, -0.754252359733510120, -0.754285188022237430, -0.754318014425251810, -0.754350838942471120, -0.754383661573813540, -0.754416482319196670, +-0.754449301178538480, -0.754482118151757030, -0.754514933238770610, -0.754547746439496620, -0.754580557753853240, -0.754613367181758420, -0.754646174723130560, -0.754678980377886830, +-0.754711784145945750, -0.754744586027225490, -0.754777386021643460, -0.754810184129117930, -0.754842980349567090, -0.754875774682908900, -0.754908567129061070, -0.754941357687941910, +-0.754974146359469240, -0.755006933143561490, -0.755039718040136140, -0.755072501049111500, -0.755105282170405620, -0.755138061403936800, -0.755170838749622540, -0.755203614207381250, +-0.755236387777130870, -0.755269159458789810, -0.755301929252275570, -0.755334697157506450, -0.755367463174400620, -0.755400227302876480, -0.755432989542851430, -0.755465749894243870, +-0.755498508356972300, -0.755531264930954130, -0.755564019616107860, -0.755596772412351460, -0.755629523319603540, -0.755662272337781380, -0.755695019466803620, -0.755727764706588310, +-0.755760508057053750, -0.755793249518117770, -0.755825989089698670, -0.755858726771714510, -0.755891462564083900, -0.755924196466724260, -0.755956928479554200, -0.755989658602491790, +-0.756022386835455640, -0.756055113178363050, -0.756087837631132850, -0.756120560193683120, -0.756153280865931920, -0.756185999647797420, -0.756218716539197920, -0.756251431540051920, +-0.756284144650277050, -0.756316855869791920, -0.756349565198514600, -0.756382272636363600, -0.756414978183256650, -0.756447681839112260, -0.756480383603848620, -0.756513083477384330, +-0.756545781459637130, -0.756578477550525320, -0.756611171749967500, -0.756643864057881870, -0.756676554474186360, -0.756709242998799600, -0.756741929631639780, -0.756774614372625050, +-0.756807297221673610, -0.756839978178704080, -0.756872657243635060, -0.756905334416383860, -0.756938009696869420, -0.756970683085009810, -0.757003354580723540, -0.757036024183928900, +-0.757068691894544290, -0.757101357712487880, -0.757134021637678070, -0.757166683670033150, -0.757199343809471510, -0.757232002055911680, -0.757264658409272260, -0.757297312869470660, +-0.757329965436425830, -0.757362616110056620, -0.757395264890280310, -0.757427911777015740, -0.757460556770181540, -0.757493199869695880, -0.757525841075477160, -0.757558480387443890, +-0.757591117805514470, -0.757623753329607190, -0.757656386959640660, -0.757689018695532960, -0.757721648537202810, -0.757754276484569170, -0.757786902537549210, -0.757819526696062010, +-0.757852148960025950, -0.757884769329360110, -0.757917387803981770, -0.757950004383809990, -0.757982619068763190, -0.758015231858759850, -0.758047842753718390, -0.758080451753557320, +-0.758113058858195130, -0.758145664067550350, -0.758178267381541370, -0.758210868800086700, -0.758243468323105410, -0.758276065950515000, -0.758308661682234320, -0.758341255518181990, +-0.758373847458277180, -0.758406437502437080, -0.758439025650580970, -0.758471611902627240, -0.758504196258494520, -0.758536778718101210, -0.758569359281366040, -0.758601937948207410, +-0.758634514718544040, -0.758667089592294340, -0.758699662569376930, -0.758732233649710870, -0.758764802833213680, -0.758797370119804530, -0.758829935509401920, -0.758862499001925040, +-0.758895060597291280, -0.758927620295420050, -0.758960178096229620, -0.758992733999638740, -0.759025288005566120, -0.759057840113930180, -0.759090390324649640, -0.759122938637643240, +-0.759155485052829370, -0.759188029570126880, -0.759220572189454270, -0.759253112910730830, -0.759285651733873970, -0.759318188658803070, -0.759350723685437210, -0.759383256813694010, +-0.759415788043492630, -0.759448317374751820, -0.759480844807390200, -0.759513370341326380, -0.759545893976479310, -0.759578415712767410, -0.759610935550109390, -0.759643453488424210, +-0.759675969527630280, -0.759708483667646430, -0.759740995908391950, -0.759773506249784350, -0.759806014691743140, -0.759838521234186710, -0.759871025877034700, -0.759903528620204490, +-0.759936029463615490, -0.759968528407186430, -0.760001025450835920, -0.760033520594483040, -0.760066013838046170, -0.760098505181444390, -0.760130994624596320, -0.760163482167420800, +-0.760195967809836450, -0.760228451551762880, -0.760260933393117620, -0.760293413333819950, -0.760325891373788700, -0.760358367512943390, -0.760390841751201530, -0.760423314088482630, +-0.760455784524705410, -0.760488253059788730, -0.760520719693651430, -0.760553184426212340, -0.760585647257390310, -0.760618108187104070, -0.760650567215272580, -0.760683024341814780, +-0.760715479566649870, -0.760747932889695780, -0.760780384310871800, -0.760812833830096900, -0.760845281447290470, -0.760877727162370230, -0.760910170975255710, -0.760942612885865730, +-0.760975052894119260, -0.761007490999935140, -0.761039927203232210, -0.761072361503929650, -0.761104793901946080, -0.761137224397200440, -0.761169652989611810, -0.761202079679099140, +-0.761234504465581720, -0.761266927348977500, -0.761299348329205980, -0.761331767406186690, -0.761364184579837340, -0.761396599850077680, -0.761429013216826320, -0.761461424680002550, +-0.761493834239525210, -0.761526241895313260, -0.761558647647285650, -0.761591051495361440, -0.761623453439459700, -0.761655853479499270, -0.761688251615399210, -0.761720647847079050, +-0.761753042174456720, -0.761785434597451850, -0.761817825115983280, -0.761850213729970860, -0.761882600439332200, -0.761914985243987150, -0.761947368143854550, -0.761979749138853580, +-0.762012128228903180, -0.762044505413922550, -0.762076880693830620, -0.762109254068546460, -0.762141625537989140, -0.762173995102077840, -0.762206362760732060, -0.762238728513869760, +-0.762271092361410770, -0.762303454303273950, -0.762335814339379140, -0.762368172469644170, -0.762400528693988780, -0.762432883012332030, -0.762465235424593100, -0.762497585930691060, +-0.762529934530545180, -0.762562281224074320, -0.762594626011197760, -0.762626968891834790, -0.762659309865904240, -0.762691648933326080, -0.762723986094018150, -0.762756321347900280, +-0.762788654694891650, -0.762820986134911890, -0.762853315667879170, -0.762885643293713110, -0.762917969012332890, -0.762950292823657890, -0.762982614727607090, -0.763014934724099760, +-0.763047252813054970, -0.763079568994392220, -0.763111883268030480, -0.763144195633889020, -0.763176506091887140, -0.763208814641944460, -0.763241121283979250, -0.763273426017911150, +-0.763305728843660100, -0.763338029761144290, -0.763370328770283210, -0.763402625870996390, -0.763434921063202990, -0.763467214346822300, -0.763499505721773610, -0.763531795187976090, +-0.763564082745349150, -0.763596368393811950, -0.763628652133283900, -0.763660933963684170, -0.763693213884932610, -0.763725491896947610, -0.763757767999648670, -0.763790042192955430, +-0.763822314476787720, -0.763854584851063500, -0.763886853315702940, -0.763919119870625220, -0.763951384515749620, -0.763983647250995660, -0.764015908076282610, -0.764048166991529660, +-0.764080423996656320, -0.764112679091581980, -0.764144932276225930, -0.764177183550508120, -0.764209432914346840, -0.764241680367661820, -0.764273925910372800, -0.764306169542399380, +-0.764338411263659980, -0.764370651074074650, -0.764402888973562570, -0.764435124962043360, -0.764467359039436300, -0.764499591205660910, -0.764531821460636470, -0.764564049804282500, +-0.764596276236518380, -0.764628500757263520, -0.764660723366438090, -0.764692944063960270, -0.764725162849750010, -0.764757379723726820, -0.764789594685810870, -0.764821807735920340, +-0.764854018873975190, -0.764886228099895150, -0.764918435413599380, -0.764950640815007630, -0.764982844304039290, -0.765015045880613750, -0.765047245544650640, -0.765079443296069470, +-0.765111639134789630, -0.765143833060730640, -0.765176025073812770, -0.765208215173954210, -0.765240403361075020, -0.765272589635095480, -0.765304773995933880, -0.765336956443510410, +-0.765369136977744450, -0.765401315598555730, -0.765433492305863660, -0.765465667099587850, -0.765497839979647930, -0.765530010945963400, -0.765562179998453880, -0.765594347137038780, +-0.765626512361637920, -0.765658675672171380, -0.765690837068557450, -0.765722996550716520, -0.765755154118568090, -0.765787309772032350, -0.765819463511027700, -0.765851615335474520, +-0.765883765245292230, -0.765915913240400540, -0.765948059320718970, -0.765980203486167350, -0.766012345736665210, -0.766044486072132160, -0.766076624492487920, -0.766108760997652240, +-0.766140895587545060, -0.766173028262085110, -0.766205159021192680, -0.766237287864787180, -0.766269414792789210, -0.766301539805117060, -0.766333662901691030, -0.766365784082430830, +-0.766397903347256330, -0.766430020696086900, -0.766462136128842510, -0.766494249645442660, -0.766526361245807310, -0.766558470929856070, -0.766590578697508570, -0.766622684548685210, +-0.766654788483304590, -0.766686890501287020, -0.766718990602552110, -0.766751088787020470, -0.766783185054610410, -0.766815279405242410, -0.766847371838836220, -0.766879462355311680, +-0.766911550954588410, -0.766943637636586240, -0.766975722401225020, -0.767007805248424490, -0.767039886178104370, -0.767071965190184610, -0.767104042284584950, -0.767136117461225790, +-0.767168190720025620, -0.767200262060905080, -0.767232331483784450, -0.767264398988582450, -0.767296464575219380, -0.767328528243615190, -0.767360589993689720, -0.767392649825362700, +-0.767424707738554090, -0.767456763733183720, -0.767488817809171330, -0.767520869966437090, -0.767552920204900510, -0.767584968524481660, -0.767617014925101040, -0.767649059406677270, +-0.767681101969130860, -0.767713142612381660, -0.767745181336350170, -0.767777218140955230, -0.767809253026117130, -0.767841285991756050, -0.767873317037791710, -0.767905346164143960, +-0.767937373370732980, -0.767969398657478490, -0.768001422024300550, -0.768033443471119020, -0.768065462997853940, -0.768097480604425730, -0.768129496290753220, -0.768161510056757040, +-0.768193521902357010, -0.768225531827473770, -0.768257539832026160, -0.768289545915934680, -0.768321550079119290, -0.768353552321500040, -0.768385552642997020, -0.768417551043530040, +-0.768449547523019080, -0.768481542081384420, -0.768513534718545890, -0.768545525434423450, -0.768577514228937720, -0.768609501102007760, -0.768641486053553980, -0.768673469083496430, +-0.768705450191755850, -0.768737429378251180, -0.768769406642902720, -0.768801381985630860, -0.768833355406355560, -0.768865326904996870, -0.768897296481474870, -0.768929264135709610, +-0.768961229867621170, -0.768993193677129590, -0.769025155564155070, -0.769057115528617770, -0.769089073570438100, -0.769121029689535330, -0.769152983885829870, -0.769184936159242550, +-0.769216886509692330, -0.769248834937099950, -0.769280781441385340, -0.769312726022468920, -0.769344668680270630, -0.769376609414710640, -0.769408548225709140, -0.769440485113186300, +-0.769472420077062290, -0.769504353117257180, -0.769536284233691140, -0.769568213426285010, -0.769600140694957750, -0.769632066039630190, -0.769663989460222410, -0.769695910956655240, +-0.769727830528847750, -0.769759748176720660, -0.769791663900194160, -0.769823577699188520, -0.769855489573623930, -0.769887399523420670, -0.769919307548498910, -0.769951213648778830, +-0.769983117824180830, -0.770015020074624860, -0.770046920400032090, -0.770078818800321250, -0.770110715275413530, -0.770142609825228970, -0.770174502449688440, -0.770206393148711090, +-0.770238281922217770, -0.770270168770128770, -0.770302053692364260, -0.770333936688844760, -0.770365817759490310, -0.770397696904221330, -0.770429574122958090, -0.770461449415621000, +-0.770493322782130230, -0.770525194222406730, -0.770557063736369560, -0.770588931323939910, -0.770620796985037830, -0.770652660719584380, -0.770684522527498640, -0.770716382408701660, +-0.770748240363113730, -0.770780096390655150, -0.770811950491246400, -0.770843802664807680, -0.770875652911259480, -0.770907501230522210, -0.770939347622516150, -0.770971192087161690, +-0.771003034624379910, -0.771034875234089870, -0.771066713916212730, -0.771098550670668680, -0.771130385497379000, -0.771162218396262640, -0.771194049367240790, -0.771225878410233820, +-0.771257705525162150, -0.771289530711946170, -0.771321353970506380, -0.771353175300763310, -0.771384994702637220, -0.771416812176048630, -0.771448627720918050, -0.771480441337165870, +-0.771512253024713160, -0.771544062783479310, -0.771575870613385170, -0.771607676514351470, -0.771639480486299160, -0.771671282529147520, -0.771703082642817620, -0.771734880827230070, +-0.771766677082305290, -0.771798471407963870, -0.771830263804126340, -0.771862054270713080, -0.771893842807644610, -0.771925629414841550, -0.771957414092224510, -0.771989196839714450, +-0.772020977657230880, -0.772052756544694740, -0.772084533502026770, -0.772116308529148140, -0.772148081625978030, -0.772179852792437840, -0.772211622028447950, -0.772243389333929000, +-0.772275154708801590, -0.772306918152986240, -0.772338679666403680, -0.772370439248974420, -0.772402196900618950, -0.772433952621258140, -0.772465706410812910, -0.772497458269202800, +-0.772529208196349180, -0.772560956192172470, -0.772592702256593930, -0.772624446389533090, -0.772656188590911120, -0.772687928860648740, -0.772719667198666470, -0.772751403604885030, +-0.772783138079225160, -0.772814870621607360, -0.772846601231952370, -0.772878329910180910, -0.772910056656213710, -0.772941781469971830, -0.772973504351374910, -0.773005225300344320, +-0.773036944316800590, -0.773068661400665100, -0.773100376551857480, -0.773132089770298790, -0.773163801055909870, -0.773195510408611560, -0.773227217828324380, -0.773258923314969150, +-0.773290626868466720, -0.773322328488737610, -0.773354028175702760, -0.773385725929282790, -0.773417421749398540, -0.773449115635971300, -0.773480807588920680, -0.773512497608167980, +-0.773544185693634150, -0.773575871845240350, -0.773607556062906320, -0.773639238346553460, -0.773670918696102380, -0.773702597111474160, -0.773734273592589280, -0.773765948139368830, +-0.773797620751733420, -0.773829291429604100, -0.773860960172901400, -0.773892626981546370, -0.773924291855460410, -0.773955954794563030, -0.773987615798775840, -0.774019274868019580, +-0.774050932002215750, -0.774082587201283980, -0.774114240465145760, -0.774145891793721840, -0.774177541186933380, -0.774209188644700900, -0.774240834166945560, -0.774272477753587980, +-0.774304119404549350, -0.774335759119750390, -0.774367396899112050, -0.774399032742555730, -0.774430666650001380, -0.774462298621370170, -0.774493928656583400, -0.774525556755562230, +-0.774557182918226730, -0.774588807144498180, -0.774620429434297650, -0.774652049787545980, -0.774683668204164340, -0.774715284684073360, -0.774746899227194310, -0.774778511833447920, +-0.774810122502755270, -0.774841731235037300, -0.774873338030215630, -0.774904942888209990, -0.774936545808942000, -0.774968146792332720, -0.774999745838303560, -0.775031342946774450, +-0.775062938117667020, -0.775094531350902340, -0.775126122646401130, -0.775157712004084790, -0.775189299423874050, -0.775220884905690190, -0.775252468449453950, -0.775284050055086720, +-0.775315629722509230, -0.775347207451642760, -0.775378783242408720, -0.775410357094727280, -0.775441929008519830, -0.775473498983708210, -0.775505067020212270, -0.775536633117953620, +-0.775568197276853440, -0.775599759496832800, -0.775631319777812630, -0.775662878119714240, -0.775694434522458680, -0.775725988985967010, -0.775757541510160410, -0.775789092094959830, +-0.775820640740286670, -0.775852187446062440, -0.775883732212207080, -0.775915275038642440, -0.775946815925289690, -0.775978354872070340, -0.776009891878904570, -0.776041426945714100, +-0.776072960072420100, -0.776104491258943650, -0.776136020505206030, -0.776167547811128290, -0.776199073176631730, -0.776230596601637400, -0.776262118086066710, -0.776293637629840600, +-0.776325155232881040, -0.776356670895107960, -0.776388184616443320, -0.776419696396808080, -0.776451206236124290, -0.776482714134311800, -0.776514220091292560, -0.776545724106987860, +-0.776577226181318750, -0.776608726314206630, -0.776640224505572680, -0.776671720755338190, -0.776703215063424320, -0.776734707429752480, -0.776766197854243830, -0.776797686336820340, +-0.776829172877401940, -0.776860657475910710, -0.776892140132267820, -0.776923620846395100, -0.776955099618212850, -0.776986576447642690, -0.777018051334606220, -0.777049524279024630, +-0.777080995280819200, -0.777112464339911210, -0.777143931456222180, -0.777175396629673280, -0.777206859860185890, -0.777238321147681320, -0.777269780492080950, -0.777301237893306740, +-0.777332693351278750, -0.777364146865919150, -0.777395598437149670, -0.777427048064890710, -0.777458495749064120, -0.777489941489591270, -0.777521385286393580, -0.777552827139392330, +-0.777584267048509140, -0.777615705013665280, -0.777647141034782050, -0.777678575111781070, -0.777710007244583610, -0.777741437433111080, -0.777772865677285650, -0.777804291977027380, +-0.777835716332258450, -0.777867138742900140, -0.777898559208874630, -0.777929977730102200, -0.777961394306504680, -0.777992808938003820, -0.778024221624520780, -0.778055632365977300, +-0.778087041162294770, -0.778118448013394580, -0.778149852919198250, -0.778181255879627280, -0.778212656894603280, -0.778244055964048110, -0.778275453087882260, -0.778306848266027700, +-0.778338241498406140, -0.778369632784939420, -0.778401022125548180, -0.778432409520154360, -0.778463794968679460, -0.778495178471045100, -0.778526560027172800, -0.778557939636984050, +-0.778589317300400600, -0.778620693017343710, -0.778652066787735130, -0.778683438611496360, -0.778714808488549570, -0.778746176418815270, -0.778777542402215420, -0.778808906438671840, +-0.778840268528106390, -0.778871628670439800, -0.778902986865594120, -0.778934343113490970, -0.778965697414052080, -0.778997049767198860, -0.779028400172852910, -0.779059748630936080, +-0.779091095141369870, -0.779122439704075910, -0.779153782318975810, -0.779185122985991300, -0.779216461705044550, -0.779247798476056070, -0.779279133298948050, -0.779310466173642860, +-0.779341797100060910, -0.779373126078124370, -0.779404453107755080, -0.779435778188874770, -0.779467101321404840, -0.779498422505267240, -0.779529741740383590, -0.779561059026675610, +-0.779592374364064920, -0.779623687752473260, -0.779654999191822460, -0.779686308682034700, -0.779717616223030600, -0.779748921814732430, -0.779780225457062050, -0.779811527149941620, +-0.779842826893291760, -0.779874124687034880, -0.779905420531092690, -0.779936714425386920, -0.779968006369839430, -0.779999296364371930, -0.780030584408906050, -0.780061870503363840, +-0.780093154647666930, -0.780124436841737160, -0.780155717085496800, -0.780186995378866600, -0.780218271721768940, -0.780249546114125560, -0.780280818555858850, -0.780312089046889530, +-0.780343357587140130, -0.780374624176532250, -0.780405888814987740, -0.780437151502428650, -0.780468412238776500, -0.780499671023953460, -0.780530927857881250, -0.780562182740481610, +-0.780593435671676610, -0.780624686651388510, -0.780655935679538170, -0.780687182756048090, -0.780718427880839890, -0.780749671053836300, -0.780780912274957830, -0.780812151544127200, +-0.780843388861266250, -0.780874624226296720, -0.780905857639140550, -0.780937089099719930, -0.780968318607956460, -0.780999546163772210, -0.781030771767089130, -0.781061995417829170, +-0.781093217115914060, -0.781124436861266650, -0.781155654653807430, -0.781186870493459140, -0.781218084380144280, -0.781249296313783590, -0.781280506294299680, -0.781311714321614500, +-0.781342920395650120, -0.781374124516328370, -0.781405326683571210, -0.781436526897300810, -0.781467725157439120, -0.781498921463908090, -0.781530115816629790, -0.781561308215526160, +-0.781592498660519830, -0.781623687151531740, -0.781654873688484410, -0.781686058271299890, -0.781717240899900800, -0.781748421574207990, -0.781779600294144170, -0.781810777059631310, +-0.781841951870591580, -0.781873124726946920, -0.781904295628619410, -0.781935464575531200, -0.781966631567604380, -0.781997796604760990, -0.782028959686922990, -0.782060120814013220, +-0.782091279985952630, -0.782122437202663830, -0.782153592464068900, -0.782184745770090560, -0.782215897120649760, -0.782247046515669230, -0.782278193955071140, -0.782309339438777560, +-0.782340482966710550, -0.782371624538792390, -0.782402764154945140, -0.782433901815090980, -0.782465037519152080, -0.782496171267050620, -0.782527303058709320, -0.782558432894049140, +-0.782589560772992910, -0.782620686695462700, -0.782651810661381450, -0.782682932670670020, -0.782714052723251230, -0.782745170819047380, -0.782776286957980630, -0.782807401139973160, +-0.782838513364947140, -0.782869623632824860, -0.782900731943528490, -0.782931838296980320, -0.782962942693102630, -0.782994045131817470, -0.783025145613047700, -0.783056244136714600, +-0.783087340702741000, -0.783118435311049410, -0.783149527961561230, -0.783180618654199300, -0.783211707388885790, -0.783242794165542990, -0.783273878984093170, -0.783304961844458750, +-0.783336042746561880, -0.783367121690324960, -0.783398198675670180, -0.783429273702519910, -0.783460346770796350, -0.783491417880422650, -0.783522487031319770, -0.783553554223410660, +-0.783584619456617730, -0.783615682730863680, -0.783646744046070040, -0.783677803402159420, -0.783708860799054330, -0.783739916236677050, -0.783770969714949970, -0.783802021233795500, +-0.783833070793136020, -0.783864118392893830, -0.783895164032991310, -0.783926207713350980, -0.783957249433895550, -0.783988289194546550, -0.784019326995226810, -0.784050362835858720, +-0.784081396716365230, -0.784112428636667750, -0.784143458596689210, -0.784174486596352030, -0.784205512635578690, -0.784236536714291500, -0.784267558832412950, -0.784298578989865440, +-0.784329597186571580, -0.784360613422453780, -0.784391627697434310, -0.784422640011436470, -0.784453650364381310, -0.784484658756192220, -0.784515665186791280, -0.784546669656101870, +-0.784577672164045170, -0.784608672710544350, -0.784639671295521810, -0.784670667918900060, -0.784701662580601700, -0.784732655280549140, -0.784763646018665000, -0.784794634794871660, +-0.784825621609091750, -0.784856606461247890, -0.784887589351262350, -0.784918570279058540, -0.784949549244557620, -0.784980526247682890, -0.785011501288357390, -0.785042474366502650, +-0.785073445482041720, -0.785104414634897110, -0.785135381824991430, -0.785166347052247420, -0.785197310316587460, -0.785228271617934180, -0.785259230956210310, -0.785290188331338350, +-0.785321143743240910, -0.785352097191840630, -0.785383048677060550, -0.785413998198822410, -0.785444945757049260, -0.785475891351663740, -0.785506834982589000, -0.785537776649746670, +-0.785568716353059910, -0.785599654092451250, -0.785630589867843620, -0.785661523679159420, -0.785692455526321390, -0.785723385409252240, -0.785754313327874710, -0.785785239282111300, +-0.785816163271884860, -0.785847085297118440, -0.785878005357733890, -0.785908923453654260, -0.785939839584802400, -0.785970753751101370, -0.786001665952473010, -0.786032576188840370, +-0.786063484460126420, -0.786094390766253650, -0.786125295107145020, -0.786156197482723030, -0.786187097892910640, -0.786217996337630450, -0.786248892816805320, -0.786279787330357970, +-0.786310679878211570, -0.786341570460288080, -0.786372459076510540, -0.786403345726801930, -0.786434230411085510, -0.786465113129282910, -0.786495993881317630, -0.786526872667112300, +-0.786557749486589740, -0.786588624339672800, -0.786619497226284330, -0.786650368146347150, -0.786681237099784100, -0.786712104086517930, -0.786742969106471460, -0.786773832159567530, +-0.786804693245729550, -0.786835552364879340, -0.786866409516940310, -0.786897264701835740, -0.786928117919487470, -0.786958969169818890, -0.786989818452752950, -0.787020665768212390, +-0.787051511116120260, -0.787082354496399290, -0.787113195908972330, -0.787144035353762540, -0.787174872830692650, -0.787205708339685510, -0.787236541880664050, -0.787267373453551910, +-0.787298203058270700, -0.787329030694744030, -0.787359856362894740, -0.787390680062646450, -0.787421501793920900, -0.787452321556641470, -0.787483139350731330, -0.787513955176113330, +-0.787544769032710420, -0.787575580920445660, -0.787606390839241890, -0.787637198789022160, -0.787668004769709440, -0.787698808781226670, -0.787729610823497460, -0.787760410896443660, +-0.787791208999988780, -0.787822005134055980, -0.787852799298568660, -0.787883591493448780, -0.787914381718619940, -0.787945169974005210, -0.787975956259527430, -0.788006740575109890, +-0.788037522920675420, -0.788068303296147190, -0.788099081701448160, -0.788129858136501380, -0.788160632601230040, -0.788191405095557630, -0.788222175619406110, -0.788252944172699310, +-0.788283710755359970, -0.788314475367312030, -0.788345238008477330, -0.788375998678779500, -0.788406757378141700, -0.788437514106486990, -0.788468268863738440, -0.788499021649819330, +-0.788529772464652610, -0.788560521308161460, -0.788591268180268920, -0.788622013080898300, -0.788652756009972760, -0.788683496967415690, -0.788714235953149380, -0.788744972967097560, +-0.788775708009183730, -0.788806441079330180, -0.788837172177460520, -0.788867901303497930, -0.788898628457365580, -0.788929353638986640, -0.788960076848284290, -0.788990798085181800, +-0.789021517349602240, -0.789052234641469010, -0.789082949960705050, -0.789113663307233870, -0.789144374680978980, -0.789175084081862650, -0.789205791509808520, -0.789236496964740080, +-0.789267200446580830, -0.789297901955253070, -0.789328601490680510, -0.789359299052786460, -0.789389994641494170, -0.789420688256726840, -0.789451379898407860, -0.789482069566460390, +-0.789512757260807830, -0.789543442981373360, -0.789574126728080250, -0.789604808500852350, -0.789635488299611830, -0.789666166124282640, -0.789696841974788070, -0.789727515851051940, +-0.789758187752996440, -0.789788857680545520, -0.789819525633622450, -0.789850191612150530, -0.789880855616053150, -0.789911517645253580, -0.789942177699675230, -0.789972835779241490, +-0.790003491883875640, -0.790034146013501080, -0.790064798168041650, -0.790095448347419740, -0.790126096551559190, -0.790156742780383390, -0.790187387033816190, -0.790218029311780090, +-0.790248669614198930, -0.790279307940995990, -0.790309944292094890, -0.790340578667418910, -0.790371211066891450, -0.790401841490436020, -0.790432469937975890, -0.790463096409434680, +-0.790493720904735690, -0.790524343423802960, -0.790554963966558780, -0.790585582532927210, -0.790616199122831650, -0.790646813736196160, -0.790677426372943140, -0.790708037032996520, +-0.790738645716279830, -0.790769252422716450, -0.790799857152230000, -0.790830459904743990, -0.790861060680181690, -0.790891659478466850, -0.790922256299522730, -0.790952851143273070, +-0.790983444009641270, -0.791014034898551380, -0.791044623809925910, -0.791075210743688810, -0.791105795699763690, -0.791136378678074630, -0.791166959678544110, -0.791197538701096210, +-0.791228115745654440, -0.791258690812142400, -0.791289263900483600, -0.791319835010601660, -0.791350404142420080, -0.791380971295862600, -0.791411536470852610, -0.791442099667313710, +-0.791472660885170210, -0.791503220124344490, -0.791533777384760720, -0.791564332666342520, -0.791594885969014060, -0.791625437292697740, -0.791655986637317950, -0.791686534002798090, +-0.791717079389062000, -0.791747622796033170, -0.791778164223635230, -0.791808703671791900, -0.791839241140426810, -0.791869776629463670, -0.791900310138826000, -0.791930841668438190, +-0.791961371218222740, -0.791991898788103830, -0.792022424378005190, -0.792052947987850970, -0.792083469617563820, -0.792113989267068110, -0.792144506936287350, -0.792175022625145390, +-0.792205536333565720, -0.792236048061472300, -0.792266557808788850, -0.792297065575438890, -0.792327571361346350, -0.792358075166434750, -0.792388576990628700, -0.792419076833850490, +-0.792449574696024620, -0.792480070577074920, -0.792510564476925470, -0.792541056395499100, -0.792571546332720090, -0.792602034288512280, -0.792632520262799290, -0.792663004255505070, +-0.792693486266553340, -0.792723966295867830, -0.792754444343372390, -0.792784920408990960, -0.792815394492647150, -0.792845866594264810, -0.792876336713768450, -0.792906804851080670, +-0.792937271006125880, -0.792967735178827900, -0.792998197369111040, -0.793028657576898220, -0.793059115802113860, -0.793089572044681560, -0.793120026304525380, -0.793150478581569170, +-0.793180928875736660, -0.793211377186952000, -0.793241823515138720, -0.793272267860220980, -0.793302710222122510, -0.793333150600767920, -0.793363588996079840, -0.793394025407982760, +-0.793424459836400640, -0.793454892281257870, -0.793485322742477410, -0.793515751219983630, -0.793546177713700400, -0.793576602223551860, -0.793607024749461650, -0.793637445291353940, +-0.793667863849152670, -0.793698280422781680, -0.793728695012165030, -0.793759107617226680, -0.793789518237891010, -0.793819926874081090, -0.793850333525721320, -0.793880738192735750, +-0.793911140875048770, -0.793941541572583450, -0.793971940285264300, -0.794002337013015260, -0.794032731755760390, -0.794063124513423760, -0.794093515285929200, -0.794123904073200990, +-0.794154290875162870, -0.794184675691739120, -0.794215058522853680, -0.794245439368431170, -0.794275818228394440, -0.794306195102668200, -0.794336569991176410, -0.794366942893843800, +-0.794397313810593310, -0.794427682741349450, -0.794458049686036500, -0.794488414644578310, -0.794518777616899150, -0.794549138602923090, -0.794579497602574070, -0.794609854615776490, +-0.794640209642454080, -0.794670562682531220, -0.794700913735931990, -0.794731262802581000, -0.794761609882401190, -0.794791954975317520, -0.794822298081254490, -0.794852639200135050, +-0.794882978331884040, -0.794913315476425630, -0.794943650633684000, -0.794973983803583200, -0.795004314986047400, -0.795034644181000780, -0.795064971388367630, -0.795095296608072100, +-0.795125619840038270, -0.795155941084190300, -0.795186260340453140, -0.795216577608749750, -0.795246892889004850, -0.795277206181142840, -0.795307517485088210, -0.795337826800764370, +-0.795368134128095930, -0.795398439467007170, -0.795428742817422260, -0.795459044179265500, -0.795489343552461150, -0.795519640936933390, -0.795549936332606620, -0.795580229739405010, +-0.795610521157252730, -0.795640810586074720, -0.795671098025794280, -0.795701383476335900, -0.795731666937624200, -0.795761948409583810, -0.795792227892137990, -0.795822505385211710, +-0.795852780888729020, -0.795883054402614420, -0.795913325926792200, -0.795943595461186650, -0.795973863005722150, -0.796004128560322990, -0.796034392124913560, -0.796064653699418030, +-0.796094913283761470, -0.796125170877867160, -0.796155426481659820, -0.796185680095063850, -0.796215931718004310, -0.796246181350404480, -0.796276428992189090, -0.796306674643282640, +-0.796336918303609530, -0.796367159973094150, -0.796397399651660790, -0.796427637339233940, -0.796457873035738120, -0.796488106741097490, -0.796518338455236560, -0.796548568178079950, +-0.796578795909552270, -0.796609021649577250, -0.796639245398079510, -0.796669467154984320, -0.796699686920214870, -0.796729904693696200, -0.796760120475352830, -0.796790334265109030, +-0.796820546062889430, -0.796850755868618530, -0.796880963682220720, -0.796911169503620510, -0.796941373332742400, -0.796971575169510780, -0.797001775013850280, -0.797031972865685830, +-0.797062168724940960, -0.797092362591540700, -0.797122554465409470, -0.797152744346472430, -0.797182932234652970, -0.797213118129876160, -0.797243302032066610, -0.797273483941148720, +-0.797303663857047210, -0.797333841779686470, -0.797364017708991120, -0.797394191644885790, -0.797424363587294960, -0.797454533536143260, -0.797484701491355640, -0.797514867452855820, +-0.797545031420568870, -0.797575193394419290, -0.797605353374332250, -0.797635511360231360, -0.797665667352041590, -0.797695821349687750, -0.797725973353094250, -0.797756123362185930, +-0.797786271376887180, -0.797816417397122830, -0.797846561422817510, -0.797876703453895610, -0.797906843490282070, -0.797936981531901960, -0.797967117578678890, -0.797997251630537920, +-0.798027383687403890, -0.798057513749201860, -0.798087641815855560, -0.798117767887290160, -0.798147891963430390, -0.798178014044200860, -0.798208134129526290, -0.798238252219331420, +-0.798268368313540870, -0.798298482412079350, -0.798328594514871700, -0.798358704621842550, -0.798388812732916620, -0.798418918848019190, -0.798449022967073980, -0.798479125090006180, +-0.798509225216741060, -0.798539323347202350, -0.798569419481315430, -0.798599513619004830, -0.798629605760195590, -0.798659695904812230, -0.798689784052779680, -0.798719870204022690, +-0.798749954358465960, -0.798780036516034350, -0.798810116676652690, -0.798840194840245710, -0.798870271006738800, -0.798900345176055680, -0.798930417348121650, -0.798960487522861530, +-0.798990555700200830, -0.799020621880063290, -0.799050686062374060, -0.799080748247058100, -0.799110808434040370, -0.799140866623245460, -0.799170922814598560, -0.799200977008024280, +-0.799231029203447570, -0.799261079400793270, -0.799291127599986220, -0.799321173800952020, -0.799351218003614190, -0.799381260207898460, -0.799411300413729430, -0.799441338621032840, +-0.799471374829732300, -0.799501409039753310, -0.799531441251020820, -0.799561471463459680, -0.799591499676994940, -0.799621525891551440, -0.799651550107054020, -0.799681572323427850, +-0.799711592540597760, -0.799741610758488600, -0.799771626977025970, -0.799801641196133730, -0.799831653415737480, -0.799861663635761940, -0.799891671856132860, -0.799921678076774060, +-0.799951682297611040, -0.799981684518568880, -0.800011684739572520, -0.800041682960546900, -0.800071679181417080, -0.800101673402108030, -0.800131665622544790, -0.800161655842652530, +-0.800191644062355990, -0.800221630281580330, -0.800251614500251170, -0.800281596718292470, -0.800311576935629710, -0.800341555152188630, -0.800371531367893070, -0.800401505582668650, +-0.800431477796440530, -0.800461448009133660, -0.800491416220673210, -0.800521382430984250, -0.800551346639991830, -0.800581308847621020, -0.800611269053796870, -0.800641227258444670, +-0.800671183461489360, -0.800701137662856550, -0.800731089862470440, -0.800761040060256610, -0.800790988256140150, -0.800820934450046760, -0.800850878641900520, -0.800880820831627040, +-0.800910761019151480, -0.800940699204399140, -0.800970635387294960, -0.801000569567764220, -0.801030501745731980, -0.801060431921123640, -0.801090360093864140, -0.801120286263878660, +-0.801150210431093130, -0.801180132595431530, -0.801210052756819560, -0.801239970915182400, -0.801269887070445890, -0.801299801222534190, -0.801329713371372930, -0.801359623516887390, +-0.801389531659002840, -0.801419437797644350, -0.801449341932737310, -0.801479244064207010, -0.801509144191978500, -0.801539042315977170, -0.801568938436128200, -0.801598832552357420, +-0.801628724664589120, -0.801658614772748910, -0.801688502876762190, -0.801718388976554670, -0.801748273072050770, -0.801778155163176190, -0.801808035249856110, -0.801837913332016040, +-0.801867789409581140, -0.801897663482476820, -0.801927535550628230, -0.801957405613960890, -0.801987273672400080, -0.802017139725870960, -0.802047003774299050, -0.802076865817610170, +-0.802106725855728620, -0.802136583888580220, -0.802166439916090930, -0.802196293938184920, -0.802226145954788250, -0.802255995965826200, -0.802285843971224160, -0.802315689970907520, +-0.802345533964801680, -0.802375375952831930, -0.802405215934923750, -0.802435053911002670, -0.802464889880993740, -0.802494723844822790, -0.802524555802415440, -0.802554385753696200, +-0.802584213698591010, -0.802614039637025160, -0.802643863568924920, -0.802673685494214470, -0.802703505412819650, -0.802733323324666290, -0.802763139229679460, -0.802792953127784870, +-0.802822765018907810, -0.802852574902973900, -0.802882382779908530, -0.802912188649637200, -0.802941992512085420, -0.802971794367179140, -0.803001594214842960, -0.803031392055002740, +-0.803061187887583960, -0.803090981712512810, -0.803120773529713670, -0.803150563339112610, -0.803180351140635130, -0.803210136934206730, -0.803239920719753030, -0.803269702497199530, +-0.803299482266471740, -0.803329260027495270, -0.803359035780195630, -0.803388809524498430, -0.803418581260329720, -0.803448350987614020, -0.803478118706277500, -0.803507884416245650, +-0.803537648117444660, -0.803567409809798900, -0.803597169493234680, -0.803626927167677580, -0.803656682833053140, -0.803686436489286950, -0.803716188136304740, -0.803745937774032030, +-0.803775685402394410, -0.803805431021317630, -0.803835174630727290, -0.803864916230549010, -0.803894655820708960, -0.803924393401131750, -0.803954128971743560, -0.803983862532470560, +-0.804013594083237470, -0.804043323623970240, -0.804073051154594820, -0.804102776675036710, -0.804132500185221640, -0.804162221685075340, -0.804191941174523530, -0.804221658653491820, +-0.804251374121905950, -0.804281087579691630, -0.804310799026774710, -0.804340508463081250, -0.804370215888535970, -0.804399921303065150, -0.804429624706594510, -0.804459326099050460, +-0.804489025480357390, -0.804518722850441900, -0.804548418209229510, -0.804578111556646160, -0.804607802892617460, -0.804637492217069260, -0.804667179529927390, -0.804696864831117460, +-0.804726548120565430, -0.804756229398197020, -0.804785908663938620, -0.804815585917714850, -0.804845261159452210, -0.804874934389076310, -0.804904605606513670, -0.804934274811689000, +-0.804963942004528590, -0.804993607184958380, -0.805023270352904110, -0.805052931508291600, -0.805082590651046930, -0.805112247781095690, -0.805141902898363740, -0.805171556002777120, +-0.805201207094261680, -0.805230856172743700, -0.805260503238148020, -0.805290148290401020, -0.805319791329428770, -0.805349432355157550, -0.805379071367512190, -0.805408708366419090, +-0.805438343351804310, -0.805467976323593680, -0.805497607281713050, -0.805527236226088460, -0.805556863156645760, -0.805586488073310900, -0.805616110976009820, -0.805645731864668480, +-0.805675350739212700, -0.805704967599569220, -0.805734582445662760, -0.805764195277419830, -0.805793806094766920, -0.805823414897628990, -0.805853021685932420, -0.805882626459603400, +-0.805912229218567870, -0.805941829962751650, -0.805971428692080940, -0.806001025406481550, -0.806030620105879780, -0.806060212790201350, -0.806089803459372310, -0.806119392113318840, +-0.806148978751967450, -0.806178563375243070, -0.806208145983072220, -0.806237726575381060, -0.806267305152096100, -0.806296881713142400, -0.806326456258446460, -0.806356028787934330, +-0.806385599301532200, -0.806415167799166000, -0.806444734280761910, -0.806474298746245990, -0.806503861195544290, -0.806533421628582990, -0.806562980045288150, -0.806592536445586370, +-0.806622090829402730, -0.806651643196663830, -0.806681193547295840, -0.806710741881225380, -0.806740288198377510, -0.806769832498678950, -0.806799374782055880, -0.806828915048434350, +-0.806858453297740420, -0.806887989529900480, -0.806917523744840490, -0.806947055942486720, -0.806976586122765350, -0.807006114285602430, -0.807035640430924790, -0.807065164558657510, +-0.807094686668727410, -0.807124206761060450, -0.807153724835583560, -0.807183240892221930, -0.807212754930902050, -0.807242266951550320, -0.807271776954093020, -0.807301284938456210, +-0.807330790904566160, -0.807360294852349170, -0.807389796781731390, -0.807419296692639230, -0.807448794584998740, -0.807478290458736760, -0.807507784313778560, -0.807537276150051000, +-0.807566765967480120, -0.807596253765992870, -0.807625739545514530, -0.807655223305971840, -0.807684705047290950, -0.807714184769398490, -0.807743662472220400, -0.807773138155683300, +-0.807802611819713250, -0.807832083464236740, -0.807861553089179950, -0.807891020694469390, -0.807920486280031100, -0.807949949845792270, -0.807979411391677950, -0.808008870917615200, +-0.808038328423530180, -0.808067783909349970, -0.808097237374999720, -0.808126688820406280, -0.808156138245496260, -0.808185585650195830, -0.808215031034431490, -0.808244474398129520, +-0.808273915741216320, -0.808303355063618390, -0.808332792365262120, -0.808362227646073790, -0.808391660905980470, -0.808421092144907430, -0.808450521362781730, -0.808479948559529650, +-0.808509373735078250, -0.808538796889352820, -0.808568218022280520, -0.808597637133787630, -0.808627054223800660, -0.808656469292245990, -0.808685882339050250, -0.808715293364139720, +-0.808744702367441000, -0.808774109348880500, -0.808803514308384710, -0.808832917245880690, -0.808862318161293840, -0.808891717054551210, -0.808921113925579300, -0.808950508774305080, +-0.808979901600654140, -0.809009292404553330, -0.809038681185929360, -0.809068067944708760, -0.809097452680817900, -0.809126835394183400, -0.809156216084731870, -0.809185594752389710, +-0.809214971397083650, -0.809244346018740180, -0.809273718617286250, -0.809303089192647600, -0.809332457744751270, -0.809361824273523660, -0.809391188778892160, -0.809420551260782050, +-0.809449911719120620, -0.809479270153834360, -0.809508626564849900, -0.809537980952093950, -0.809567333315493020, -0.809596683654973840, -0.809626031970462790, -0.809655378261886830, +-0.809684722529172340, -0.809714064772246060, -0.809743404991035030, -0.809772743185465100, -0.809802079355463220, -0.809831413500956220, -0.809860745621871160, -0.809890075718133760, +-0.809919403789671200, -0.809948729836410090, -0.809978053858277150, -0.810007375855199110, -0.810036695827102580, -0.810066013773914300, -0.810095329695560970, -0.810124643591969340, +-0.810153955463066120, -0.810183265308778600, -0.810212573129032280, -0.810241878923754540, -0.810271182692872240, -0.810300484436312420, -0.810329784154000810, -0.810359081845864800, +-0.810388377511831020, -0.810417671151826280, -0.810446962765777430, -0.810476252353611200, -0.810505539915254310, -0.810534825450633600, -0.810564108959675790, -0.810593390442307720, +-0.810622669898456660, -0.810651947328048460, -0.810681222731010400, -0.810710496107269200, -0.810739767456752360, -0.810769036779385500, -0.810798304075096120, -0.810827569343810950, +-0.810856832585456930, -0.810886093799960680, -0.810915352987249370, -0.810944610147249500, -0.810973865279888240, -0.811003118385092310, -0.811032369462788560, -0.811061618512904370, +-0.811090865535365690, -0.811120110530099690, -0.811149353497033540, -0.811178594436094520, -0.811207833347208470, -0.811237070230302890, -0.811266305085304620, -0.811295537912140490, +-0.811324768710737660, -0.811353997481022770, -0.811383224222922970, -0.811412448936365100, -0.811441671621276120, -0.811470892277582840, -0.811500110905212460, -0.811529327504092350, +-0.811558542074148350, -0.811587754615307970, -0.811616965127498700, -0.811646173610646620, -0.811675380064678990, -0.811704584489522870, -0.811733786885105450, -0.811762987251353430, +-0.811792185588193990, -0.811821381895554080, -0.811850576173360760, -0.811879768421540970, -0.811908958640021770, -0.811938146828730110, -0.811967332987593720, -0.811996517116538420, +-0.812025699215491730, -0.812054879284380910, -0.812084057323133380, -0.812113233331675180, -0.812142407309933920, -0.812171579257836670, -0.812200749175310380, -0.812229917062282310, +-0.812259082918679320, -0.812288246744428790, -0.812317408539457550, -0.812346568303692780, -0.812375726037061650, -0.812404881739491660, -0.812434035410908970, -0.812463187051241210, +-0.812492336660415430, -0.812521484238359350, -0.812550629784999030, -0.812579773300262210, -0.812608914784075930, -0.812638054236367370, -0.812667191657063580, -0.812696327046091960, +-0.812725460403379340, -0.812754591728853230, -0.812783721022440560, -0.812812848284068630, -0.812841973513665050, -0.812871096711156090, -0.812900217876469270, -0.812929337009532070, +-0.812958454110271900, -0.812987569178615140, -0.813016682214489420, -0.813045793217822110, -0.813074902188540170, -0.813104009126571100, -0.813133114031841850, -0.813162216904279920, +-0.813191317743812480, -0.813220416550366700, -0.813249513323869850, -0.813278608064249340, -0.813307700771432660, -0.813336791445346320, -0.813365880085918040, -0.813394966693075430, +-0.813424051266745000, -0.813453133806854360, -0.813482214313331010, -0.813511292786102010, -0.813540369225094870, -0.813569443630236640, -0.813598516001454940, -0.813627586338676930, +-0.813656654641830010, -0.813685720910841350, -0.813714785145638440, -0.813743847346149130, -0.813772907512299580, -0.813801965644017860, -0.813831021741231120, -0.813860075803867430, +-0.813889127831852970, -0.813918177825115770, -0.813947225783583030, -0.813976271707182340, -0.814005315595840880, -0.814034357449486160, -0.814063397268045550, -0.814092435051446460, +-0.814121470799616280, -0.814150504512482390, -0.814179536189972850, -0.814208565832013840, -0.814237593438533410, -0.814266619009459070, -0.814295642544718650, -0.814324664044238640, +-0.814353683507947010, -0.814382700935771140, -0.814411716327638420, -0.814440729683476580, -0.814469741003212790, -0.814498750286774650, -0.814527757534089680, -0.814556762745085370, +-0.814585765919689010, -0.814614767057828870, -0.814643766159431240, -0.814672763224424280, -0.814701758252735280, -0.814730751244292510, -0.814759742199022250, -0.814788731116852680, +-0.814817717997711300, -0.814846702841525610, -0.814875685648223210, -0.814904666417731520, -0.814933645149978240, -0.814962621844890770, -0.814991596502396830, -0.815020569122423820, +-0.815049539704899460, -0.815078508249751700, -0.815107474756907150, -0.815136439226293970, -0.815165401657840240, -0.815194362051472330, -0.815223320407118650, -0.815252276724706680, +-0.815281231004163940, -0.815310183245418150, -0.815339133448396920, -0.815368081613027870, -0.815397027739238610, -0.815425971826956750, -0.815454913876110020, -0.815483853886625920, +-0.815512791858432730, -0.815541727791457060, -0.815570661685627090, -0.815599593540870420, -0.815628523357115330, -0.815657451134288450, -0.815686376872317820, -0.815715300571131290, +-0.815744222230656570, -0.815773141850821280, -0.815802059431553150, -0.815830974972779790, -0.815859888474429030, -0.815888799936428600, -0.815917709358706110, -0.815946616741189960, +-0.815975522083806640, -0.816004425386484540, -0.816033326649151400, -0.816062225871735380, -0.816091123054163430, -0.816120018196363590, -0.816148911298263610, -0.816177802359791540, +-0.816206691380874870, -0.816235578361441450, -0.816264463301419110, -0.816293346200735570, -0.816322227059318670, -0.816351105877096250, -0.816379982653996580, -0.816408857389946510, +-0.816437730084874190, -0.816466600738707580, -0.816495469351374960, -0.816524335922803160, -0.816553200452920570, -0.816582062941654920, -0.816610923388934150, -0.816639781794685990, +-0.816668638158838500, -0.816697492481319290, -0.816726344762056410, -0.816755195000977710, -0.816784043198010900, -0.816812889353084160, -0.816841733466125540, -0.816870575537062220, +-0.816899415565822350, -0.816928253552334450, -0.816957089496525460, -0.816985923398323770, -0.817014755257657210, -0.817043585074453850, -0.817072412848641410, -0.817101238580148050, +-0.817130062268901500, -0.817158883914829830, -0.817187703517860960, -0.817216521077922860, -0.817245336594943360, -0.817274150068851180, -0.817302961499573040, -0.817331770887037460, +-0.817360578231172470, -0.817389383531906490, -0.817418186789166670, -0.817446988002881290, -0.817475787172978420, -0.817504584299386220, -0.817533379382032410, -0.817562172420845280, +-0.817590963415752660, -0.817619752366682610, -0.817648539273563180, -0.817677324136322440, -0.817706106954888880, -0.817734887729189450, -0.817763666459152990, -0.817792443144707230, +-0.817821217785780870, -0.817849990382301000, -0.817878760934196200, -0.817907529441394440, -0.817936295903823880, -0.817965060321412470, -0.817993822694088600, -0.818022583021779990, +-0.818051341304415040, -0.818080097541921680, -0.818108851734228090, -0.818137603881262890, -0.818166353982953230, -0.818195102039227630, -0.818223848050014250, -0.818252592015241810, +-0.818281333934837370, -0.818310073808729550, -0.818338811636846630, -0.818367547419116550, -0.818396281155467700, -0.818425012845828140, -0.818453742490126030, -0.818482470088289560, +-0.818511195640246990, -0.818539919145926390, -0.818568640605255910, -0.818597360018164410, -0.818626077384579040, -0.818654792704428420, -0.818683505977641280, -0.818712217204144890, +-0.818740926383868080, -0.818769633516738820, -0.818798338602685470, -0.818827041641636330, -0.818855742633519570, -0.818884441578263570, -0.818913138475796280, -0.818941833326046200, +-0.818970526128941610, -0.818999216884410690, -0.819027905592382140, -0.819056592252783380, -0.819085276865543220, -0.819113959430589730, -0.819142639947851970, -0.819171318417256990, +-0.819199994838733740, -0.819228669212210600, -0.819257341537615650, -0.819286011814877480, -0.819314680043924160, -0.819343346224684190, -0.819372010357085840, -0.819400672441057520, +-0.819429332476527490, -0.819457990463424600, -0.819486646401676230, -0.819515300291211330, -0.819543952131958080, -0.819572601923845510, -0.819601249666800920, -0.819629895360753260, +-0.819658539005630790, -0.819687180601361920, -0.819715820147875250, -0.819744457645098960, -0.819773093092961420, -0.819801726491391270, -0.819830357840316770, -0.819858987139666430, +-0.819887614389369080, -0.819916239589352110, -0.819944862739544700, -0.819973483839875010, -0.820002102890272200, -0.820030719890663560, -0.820059334840978150, -0.820087947741144460, +-0.820116558591090780, -0.820145167390745830, -0.820173774140037890, -0.820202378838895460, -0.820230981487247160, -0.820259582085021370, -0.820288180632146700, -0.820316777128551440, +-0.820345371574164870, -0.820373963968914380, -0.820402554312728900, -0.820431142605537620, -0.820459728847267920, -0.820488313037848860, -0.820516895177209050, -0.820545475265276990, +-0.820574053301981300, -0.820602629287250470, -0.820631203221013020, -0.820659775103197540, -0.820688344933732660, -0.820716912712546990, -0.820745478439568910, -0.820774042114727710, +-0.820802603737950890, -0.820831163309167610, -0.820859720828306380, -0.820888276295296370, -0.820916829710065080, -0.820945381072541780, -0.820973930382655090, -0.821002477640333520, +-0.821031022845505660, -0.821059565998100370, -0.821088107098046140, -0.821116646145271580, -0.821145183139705530, -0.821173718081276370, -0.821202250969913510, -0.821230781805544540, +-0.821259310588098530, -0.821287837317504320, -0.821316361993691070, -0.821344884616586280, -0.821373405186119340, -0.821401923702218870, -0.821430440164813590, -0.821458954573832220, +-0.821487466929203490, -0.821515977230856120, -0.821544485478718720, -0.821572991672720130, -0.821601495812789070, -0.821629997898854820, -0.821658497930845000, -0.821686995908688990, +-0.821715491832315510, -0.821743985701653750, -0.821772477516631520, -0.821800967277178110, -0.821829454983222350, -0.821857940634692860, -0.821886424231518590, -0.821914905773628130, +-0.821943385260950570, -0.821971862693414490, -0.822000338070948740, -0.822028811393482050, -0.822057282660943470, -0.822085751873262160, -0.822114219030365860, -0.822142684132184160, +-0.822171147178646140, -0.822199608169679850, -0.822228067105214460, -0.822256523985179010, -0.822284978809502130, -0.822313431578112870, -0.822341882290939960, -0.822370330947912450, +-0.822398777548959070, -0.822427222094008650, -0.822455664582990350, -0.822484105015832800, -0.822512543392465490, -0.822540979712816260, -0.822569413976814710, -0.822597846184389470, +-0.822626276335470250, -0.822654704429984780, -0.822683130467862570, -0.822711554449032540, -0.822739976373423550, -0.822768396240964760, -0.822796814051584890, -0.822825229805213000, +-0.822853643501778030, -0.822882055141208930, -0.822910464723434650, -0.822938872248384800, -0.822967277715987210, -0.822995681126171500, -0.823024082478866600, -0.823052481774001920, +-0.823080879011505510, -0.823109274191306970, -0.823137667313335260, -0.823166058377519330, -0.823194447383788220, -0.823222834332071110, -0.823251219222296830, -0.823279602054394430, +-0.823307982828293210, -0.823336361543921870, -0.823364738201210260, -0.823393112800086200, -0.823421485340479430, -0.823449855822318890, -0.823478224245534300, -0.823506590610053490, +-0.823534954915806310, -0.823563317162721800, -0.823591677350728910, -0.823620035479756820, -0.823648391549734680, -0.823676745560591560, -0.823705097512256510, -0.823733447404658810, +-0.823761795237727410, -0.823790141011391590, -0.823818484725580950, -0.823846826380223550, -0.823875165975249010, -0.823903503510587170, -0.823931838986166070, -0.823960172401915330, +-0.823988503757764110, -0.824016833053641710, -0.824045160289477160, -0.824073485465199760, -0.824101808580738670, -0.824130129636022950, -0.824158448630981980, -0.824186765565544930, +-0.824215080439640870, -0.824243393253199730, -0.824271704006149460, -0.824300012698420130, -0.824328319329940550, -0.824356623900640790, -0.824384926410449030, -0.824413226859294860, +-0.824441525247107570, -0.824469821573816540, -0.824498115839350950, -0.824526408043640080, -0.824554698186613200, -0.824582986268199590, -0.824611272288328420, -0.824639556246929200, +-0.824667838143931520, -0.824696117979263790, -0.824724395752855610, -0.824752671464636600, -0.824780945114536370, -0.824809216702483310, -0.824837486228407140, -0.824865753692237360, +-0.824894019093903030, -0.824922282433333760, -0.824950543710458840, -0.824978802925207420, -0.825007060077509120, -0.825035315167293120, -0.825063568194488780, -0.825091819159026070, +-0.825120068060833380, -0.825148314899840420, -0.825176559675976700, -0.825204802389172040, -0.825233043039354960, -0.825261281626455290, -0.825289518150402300, -0.825317752611125610, +-0.825345985008554490, -0.825374215342618460, -0.825402443613246770, -0.825430669820369060, -0.825458893963914700, -0.825487116043813090, -0.825515336059994160, -0.825543554012386440, +-0.825571769900919740, -0.825599983725523790, -0.825628195486128200, -0.825656405182661700, -0.825684612815054230, -0.825712818383235180, -0.825741021887134050, -0.825769223326680350, +-0.825797422701803670, -0.825825620012433430, -0.825853815258499100, -0.825882008439930200, -0.825910199556656340, -0.825938388608607020, -0.825966575595712180, -0.825994760517900330, +-0.826022943375101630, -0.826051124167245580, -0.826079302894262350, -0.826107479556080220, -0.826135654152629350, -0.826163826683839480, -0.826191997149639870, -0.826220165549960360, +-0.826248331884730460, -0.826276496153879770, -0.826304658357337800, -0.826332818495034150, -0.826360976566898440, -0.826389132572860840, -0.826417286512849960, -0.826445438386795740, +-0.826473588194628020, -0.826501735936276740, -0.826529881611670740, -0.826558025220739960, -0.826586166763414120, -0.826614306239622840, -0.826642443649295840, -0.826670578992362740, +-0.826698712268753130, -0.826726843478396760, -0.826754972621223330, -0.826783099697162460, -0.826811224706144320, -0.826839347648097630, -0.826867468522952560, -0.826895587330638840, +-0.826923704071086620, -0.826951818744224630, -0.826979931349983160, -0.827008041888291800, -0.827036150359080290, -0.827064256762278460, -0.827092361097816030, -0.827120463365622620, +-0.827148563565628160, -0.827176661697762160, -0.827204757761954570, -0.827232851758135660, -0.827260943686234040, -0.827289033546180110, -0.827317121337903470, -0.827345207061334630, +-0.827373290716402310, -0.827401372303036680, -0.827429451821167670, -0.827457529270725020, -0.827485604651638560, -0.827513677963838010, -0.827541749207253320, -0.827569818381814310, +-0.827597885487450720, -0.827625950524092380, -0.827654013491669230, -0.827682074390111430, -0.827710133219348050, -0.827738189979309260, -0.827766244669925100, -0.827794297291125750, +-0.827822347842840140, -0.827850396324998680, -0.827878442737531310, -0.827906487080367740, -0.827934529353438030, -0.827962569556671910, -0.827990607689999440, -0.828018643753350440, +-0.828046677746654750, -0.828074709669842420, -0.828102739522843860, -0.828130767305587880, -0.828158793018004990, -0.828186816660025250, -0.828214838231578820, -0.828242857732594870, +-0.828270875163003680, -0.828298890522735420, -0.828326903811719810, -0.828354915029887010, -0.828382924177166970, -0.828410931253489520, -0.828438936258784840, -0.828466939192982750, +-0.828494940056013430, -0.828522938847807140, -0.828550935568292960, -0.828578930217401590, -0.828606922795062760, -0.828634913301207200, -0.828662901735763850, -0.828690888098663200, +-0.828718872389835440, -0.828746854609210380, -0.828774834756718200, -0.828802812832288960, -0.828830788835852710, -0.828858762767339500, -0.828886734626679390, -0.828914704413802330, +-0.828942672128639150, -0.828970637771118680, -0.828998601341171650, -0.829026562838728110, -0.829054522263718670, -0.829082479616072510, -0.829110434895720010, -0.829138388102591550, +-0.829166339236617090, -0.829194288297726680, -0.829222235285850710, -0.829250180200919010, -0.829278123042861970, -0.829306063811609540, -0.829334002507091990, -0.829361939129239390, +-0.829389873677982450, -0.829417806153250340, -0.829445736554973780, -0.829473664883083270, -0.829501591137508210, -0.829529515318179090, -0.829557437425026190, -0.829585357457979790, +-0.829613275416969940, -0.829641191301926820, -0.829669105112780800, -0.829697016849461950, -0.829724926511900660, -0.829752834100026980, -0.829780739613771300, -0.829808643053064230, +-0.829836544417835050, -0.829864443708014490, -0.829892340923532810, -0.829920236064320750, -0.829948129130307690, -0.829976020121424240, -0.830003909037600800, -0.830031795878767520, +-0.830059680644854800, -0.830087563335792810, -0.830115443951511930, -0.830143322491942560, -0.830171198957014740, -0.830199073346658990, -0.830226945660806010, -0.830254815899385320, +-0.830282684062327410, -0.830310550149562900, -0.830338414161022390, -0.830366276096635490, -0.830394135956332820, -0.830421993740044770, -0.830449849447701840, -0.830477703079234300, +-0.830505554634572430, -0.830533404113646620, -0.830561251516387380, -0.830589096842724970, -0.830616940092589910, -0.830644781265912900, -0.830672620362623460, -0.830700457382652520, +-0.830728292325930370, -0.830756125192388060, -0.830783955981954870, -0.830811784694561850, -0.830839611330139280, -0.830867435888617780, -0.830895258369927610, -0.830923078773999400, +-0.830950897100763420, -0.830978713350150170, -0.831006527522090140, -0.831034339616513850, -0.831062149633351680, -0.831089957572534680, -0.831117763433992240, -0.831145567217655420, +-0.831173368923455060, -0.831201168551320870, -0.831228966101183800, -0.831256761572974350, -0.831284554966622900, -0.831312346282060080, -0.831340135519216370, -0.831367922678022400, +-0.831395707758408540, -0.831423490760305530, -0.831451271683643740, -0.831479050528353690, -0.831506827294366650, -0.831534601981611890, -0.831562374590020690, -0.831590145119523560, +-0.831617913570051550, -0.831645679941534380, -0.831673444233902880, -0.831701206447087780, -0.831728966581019690, -0.831756724635629220, -0.831784480610846870, -0.831812234506603350, +-0.831839986322829180, -0.831867736059455190, -0.831895483716411750, -0.831923229293630050, -0.831950972791039910, -0.831978714208572280, -0.832006453546157880, -0.832034190803727870, +-0.832061925981211760, -0.832089659078540930, -0.832117390095646000, -0.832145119032457470, -0.832172845888906280, -0.832200570664922920, -0.832228293360438130, -0.832256013975382510, +-0.832283732509687010, -0.832311448963282130, -0.832339163336099030, -0.832366875628067660, -0.832394585839119070, -0.832422293969183990, -0.832450000018193690, -0.832477703986077790, +-0.832505405872767780, -0.832533105678194160, -0.832560803402287770, -0.832588499044979450, -0.832616192606199900, -0.832643884085879750, -0.832671573483949930, -0.832699260800341290, +-0.832726946034984430, -0.832754629187810070, -0.832782310258749820, -0.832809989247733200, -0.832837666154691680, -0.832865340979556450, -0.832893013722257320, -0.832920684382725710, +-0.832948352960892310, -0.832976019456688200, -0.833003683870043870, -0.833031346200890480, -0.833059006449158650, -0.833086664614779320, -0.833114320697683210, -0.833141974697801490, +-0.833169626615064660, -0.833197276449404440, -0.833224924200750340, -0.833252569869034070, -0.833280213454186350, -0.833307854956138570, -0.833335494374820680, -0.833363131710163960, +-0.833390766962099570, -0.833418400130558120, -0.833446031215470780, -0.833473660216768280, -0.833501287134381650, -0.833528911968241860, -0.833556534718279730, -0.833584155384426320, +-0.833611773966612900, -0.833639390464769650, -0.833667004878827940, -0.833694617208718620, -0.833722227454373300, -0.833749835615722020, -0.833777441692696080, -0.833805045685226400, +-0.833832647593244270, -0.833860247416680520, -0.833887845155466100, -0.833915440809532060, -0.833943034378809460, -0.833970625863229230, -0.833998215262722440, -0.834025802577220590, +-0.834053387806653830, -0.834080970950953460, -0.834108552010050850, -0.834136130983877180, -0.834163707872362710, -0.834191282675439070, -0.834218855393037200, -0.834246426025088140, +-0.834273994571523070, -0.834301561032272930, -0.834329125407269000, -0.834356687696442110, -0.834384247899723650, -0.834411806017044460, -0.834439362048335910, -0.834466915993529290, +-0.834494467852554990, -0.834522017625344390, -0.834549565311829330, -0.834577110911939870, -0.834604654425607610, -0.834632195852763710, -0.834659735193339360, -0.834687272447265590, +-0.834714807614473700, -0.834742340694894840, -0.834769871688460060, -0.834797400595100660, -0.834824927414747680, -0.834852452147332390, -0.834879974792786530, -0.834907495351040140, +-0.834935013822025060, -0.834962530205672460, -0.834990044501914050, -0.835017556710680010, -0.835045066831902050, -0.835072574865511560, -0.835100080811439490, -0.835127584669617230, +-0.835155086439976050, -0.835182586122447110, -0.835210083716961820, -0.835237579223451210, -0.835265072641846680, -0.835292563972079960, -0.835320053214081320, -0.835347540367782580, +-0.835375025433114930, -0.835402508410010290, -0.835429989298398850, -0.835457468098212420, -0.835484944809382400, -0.835512419431839850, -0.835539891965516370, -0.835567362410343240, +-0.835594830766251520, -0.835622297033172920, -0.835649761211038400, -0.835677223299779560, -0.835704683299328120, -0.835732141209614590, -0.835759597030570570, -0.835787050762127670, +-0.835814502404217510, -0.835841951956770690, -0.835869399419718940, -0.835896844792993750, -0.835924288076526410, -0.835951729270248410, -0.835979168374091030, -0.836006605387985660, +-0.836034040311863900, -0.836061473145657040, -0.836088903889296350, -0.836116332542713560, -0.836143759105840380, -0.836171183578607310, -0.836198605960946310, -0.836226026252789190, +-0.836253444454066570, -0.836280860564710400, -0.836308274584651960, -0.836335686513822950, -0.836363096352154670, -0.836390504099578600, -0.836417909756026370, -0.836445313321429350, +-0.836472714795718940, -0.836500114178826860, -0.836527511470684490, -0.836554906671223790, -0.836582299780375350, -0.836609690798071130, -0.836637079724242730, -0.836664466558821980, +-0.836691851301739730, -0.836719233952927800, -0.836746614512317800, -0.836773992979841230, -0.836801369355429810, -0.836828743639014830, -0.836856115830527990, -0.836883485929900920, +-0.836910853937065100, -0.836938219851952160, -0.836965583674494140, -0.836992945404621770, -0.837020305042266880, -0.837047662587361410, -0.837075018039837080, -0.837102371399624840, +-0.837129722666656640, -0.837157071840864080, -0.837184418922178990, -0.837211763910532760, -0.837239106805857110, -0.837266447608083660, -0.837293786317144130, -0.837321122932970120, +-0.837348457455493360, -0.837375789884645890, -0.837403120220358450, -0.837430448462563200, -0.837457774611191860, -0.837485098666176600, -0.837512420627448130, -0.837539740494938510, +-0.837567058268579580, -0.837594373948303050, -0.837621687534040540, -0.837648999025723760, -0.837676308423284550, -0.837703615726654640, -0.837730920935765510, -0.837758224050549230, +-0.837785525070937400, -0.837812823996862190, -0.837840120828254320, -0.837867415565046290, -0.837894708207170160, -0.837921998754556860, -0.837949287207138460, -0.837976573564846890, +-0.838003857827613880, -0.838031139995371150, -0.838058420068050650, -0.838085698045584080, -0.838112973927903290, -0.838140247714940110, -0.838167519406626260, -0.838194789002893570, +-0.838222056503674430, -0.838249321908899670, -0.838276585218501570, -0.838303846432411960, -0.838331105550563340, -0.838358362572886430, -0.838385617499313620, -0.838412870329776740, +-0.838440121064207730, -0.838467369702538320, -0.838494616244700560, -0.838521860690626290, -0.838549103040247320, -0.838576343293495620, -0.838603581450303000, -0.838630817510601980, +-0.838658051474323370, -0.838685283341399690, -0.838712513111762760, -0.838739740785345080, -0.838766966362077590, -0.838794189841892580, -0.838821411224722200, -0.838848630510498180, +-0.838875847699152690, -0.838903062790617550, -0.838930275784824710, -0.838957486681706220, -0.838984695481194030, -0.839011902183220080, -0.839039106787716870, -0.839066309294615340, +-0.839093509703848110, -0.839120708015347110, -0.839147904229044730, -0.839175098344872250, -0.839202290362761950, -0.839229480282645880, -0.839256668104456200, -0.839283853828124760, +-0.839311037453583710, -0.839338218980765110, -0.839365398409601000, -0.839392575740023350, -0.839419750971964200, -0.839446924105355710, -0.839474095140130490, -0.839501264076219390, +-0.839528430913555220, -0.839555595652070500, -0.839582758291696150, -0.839609918832365020, -0.839637077274009160, -0.839664233616560510, -0.839691387859951230, -0.839718540004113610, +-0.839745690048979480, -0.839772837994481320, -0.839799983840550990, -0.839827127587120640, -0.839854269234122430, -0.839881408781489200, -0.839908546229151790, -0.839935681577043130, +-0.839962814825095270, -0.839989945973240730, -0.840017075021410990, -0.840044201969538550, -0.840071326817555470, -0.840098449565394260, -0.840125570212986730, -0.840152688760265390, +-0.840179805207162400, -0.840206919553609710, -0.840234031799539820, -0.840261141944884880, -0.840288249989577520, -0.840315355933549110, -0.840342459776732280, -0.840369561519059280, +-0.840396661160462850, -0.840423758700874380, -0.840450854140226470, -0.840477947478451390, -0.840505038715481430, -0.840532127851248870, -0.840559214885685970, -0.840586299818725120, +-0.840613382650298500, -0.840640463380338380, -0.840667542008777140, -0.840694618535547500, -0.840721692960580860, -0.840748765283809930, -0.840775835505167100, -0.840802903624585210, +-0.840829969641995630, -0.840857033557331100, -0.840884095370523890, -0.840911155081506490, -0.840938212690211180, -0.840965268196570470, -0.840992321600516400, -0.841019372901981700, +-0.841046422100898420, -0.841073469197199160, -0.841100514190816660, -0.841127557081682520, -0.841154597869729350, -0.841181636554889760, -0.841208673137096460, -0.841235707616281080, +-0.841262739992376440, -0.841289770265314930, -0.841316798435029050, -0.841343824501451070, -0.841370848464513600, -0.841397870324149030, -0.841424890080289760, -0.841451907732868270, +-0.841478923281816950, -0.841505936727068300, -0.841532948068555390, -0.841559957306209580, -0.841586964439963950, -0.841613969469750870, -0.841640972395503280, -0.841667973217152810, +-0.841694971934632390, -0.841721968547874620, -0.841748963056811910, -0.841775955461376730, -0.841802945761501720, -0.841829933957119360, -0.841856920048162150, -0.841883904034562590, +-0.841910885916253290, -0.841937865693167200, -0.841964843365236030, -0.841991818932392830, -0.842018792394570000, -0.842045763751700700, -0.842072733003716430, -0.842099700150550360, +-0.842126665192135080, -0.842153628128403110, -0.842180588959287160, -0.842207547684719620, -0.842234504304633200, -0.842261458818960640, -0.842288411227634310, -0.842315361530587060, +-0.842342309727751810, -0.842369255819060300, -0.842396199804445690, -0.842423141683840580, -0.842450081457178150, -0.842477019124389990, -0.842503954685409280, -0.842530888140168630, +-0.842557819488600760, -0.842584748730638380, -0.842611675866214100, -0.842638600895260770, -0.842665523817710760, -0.842692444633497020, -0.842719363342552150, -0.842746279944809440, +-0.842773194440200380, -0.842800106828658470, -0.842827017110116320, -0.842853925284506980, -0.842880831351762390, -0.842907735311815730, -0.842934637164599710, -0.842961536910047160, +-0.842988434548090800, -0.843015330078663250, -0.843042223501697440, -0.843069114817125990, -0.843096004024881830, -0.843122891124897690, -0.843149776117106290, -0.843176659001440900, +-0.843203539777833360, -0.843230418446217040, -0.843257295006524580, -0.843284169458689450, -0.843311041802643380, -0.843337912038319760, -0.843364780165651310, -0.843391646184570850, +-0.843418510095011340, -0.843445371896905600, -0.843472231590186470, -0.843499089174786660, -0.843525944650639130, -0.843552798017676690, -0.843579649275832840, -0.843606498425039320, +-0.843633345465229610, -0.843660190396336550, -0.843687033218293410, -0.843713873931032250, -0.843740712534486460, -0.843767549028588860, -0.843794383413272290, -0.843821215688469910, +-0.843848045854114330, -0.843874873910138820, -0.843901699856476010, -0.843928523693058930, -0.843955345419820650, -0.843982165036694320, -0.844008982543612230, -0.844035797940507650, +-0.844062611227313520, -0.844089422403963450, -0.844116231470389280, -0.844143038426524610, -0.844169843272302270, -0.844196646007655320, -0.844223446632516690, -0.844250245146819570, +-0.844277041550496770, -0.844303835843481450, -0.844330628025706460, -0.844357418097104850, -0.844384206057610330, -0.844410991907154630, -0.844437775645671570, -0.844464557273094110, +-0.844491336789355620, -0.844518114194388380, -0.844544889488125890, -0.844571662670501100, -0.844598433741447160, -0.844625202700897140, -0.844651969548784190, -0.844678734285041250, +-0.844705496909601390, -0.844732257422397880, -0.844759015823363770, -0.844785772112432110, -0.844812526289536400, -0.844839278354609040, -0.844866028307583390, -0.844892776148393090, +-0.844919521876970500, -0.844946265493249030, -0.844973006997161940, -0.844999746388642280, -0.845026483667623340, -0.845053218834038060, -0.845079951887819810, -0.845106682828901780, +-0.845133411657216890, -0.845160138372698540, -0.845186862975279780, -0.845213585464894450, -0.845240305841474580, -0.845267024104954020, -0.845293740255265820, -0.845320454292343810, +-0.845347166216120160, -0.845373876026528690, -0.845400583723502350, -0.845427289306974640, -0.845453992776878720, -0.845480694133147860, -0.845507393375715230, -0.845534090504514110, +-0.845560785519477780, -0.845587478420539380, -0.845614169207632880, -0.845640857880690430, -0.845667544439645870, -0.845694228884432460, -0.845720911214983940, -0.845747591431232570, +-0.845774269533112300, -0.845800945520556400, -0.845827619393498150, -0.845854291151870720, -0.845880960795607710, -0.845907628324642280, -0.845934293738907720, -0.845960957038337400, +-0.845987618222864720, -0.846014277292423510, -0.846040934246946040, -0.846067589086366260, -0.846094241810617540, -0.846120892419633730, -0.846147540913347210, -0.846174187291691800, +-0.846200831554600910, -0.846227473702007900, -0.846254113733846290, -0.846280751650049350, -0.846307387450550560, -0.846334021135283330, -0.846360652704181040, -0.846387282157177070, +-0.846413909494204920, -0.846440534715198420, -0.846467157820090190, -0.846493778808814050, -0.846520397681303830, -0.846547014437492250, -0.846573629077313150, -0.846600241600699910, +-0.846626852007586140, -0.846653460297905220, -0.846680066471590660, -0.846706670528575840, -0.846733272468794370, -0.846759872292179750, -0.846786469998665470, -0.846813065588185030, +-0.846839659060672380, -0.846866250416060120, -0.846892839654282190, -0.846919426775272210, -0.846946011778964110, -0.846972594665290510, -0.846999175434185460, -0.847025754085582340, +-0.847052330619414980, -0.847078905035616780, -0.847105477334121230, -0.847132047514862040, -0.847158615577772720, -0.847185181522786880, -0.847211745349838120, -0.847238307058860380, +-0.847264866649786510, -0.847291424122550430, -0.847317979477085760, -0.847344532713326550, -0.847371083831205630, -0.847397632830657050, -0.847424179711614320, -0.847450724474011150, +-0.847477267117781150, -0.847503807642857930, -0.847530346049175320, -0.847556882336666820, -0.847583416505266030, -0.847609948554906790, -0.847636478485523040, -0.847663006297047720, +-0.847689531989414880, -0.847716055562558140, -0.847742577016411760, -0.847769096350908580, -0.847795613565982540, -0.847822128661567480, -0.847848641637597100, -0.847875152494005140, +-0.847901661230725300, -0.847928167847691320, -0.847954672344836790, -0.847981174722095780, -0.848007674979401660, -0.848034173116688490, -0.848060669133890220, -0.848087163030939890, +-0.848113654807771680, -0.848140144464319730, -0.848166632000517010, -0.848193117416297770, -0.848219600711595630, -0.848246081886344540, -0.848272560940478200, -0.848299037873930460, +-0.848325512686635140, -0.848351985378526070, -0.848378455949536980, -0.848404924399601800, -0.848431390728654260, -0.848457854936628840, -0.848484317023458170, -0.848510776989076730, +-0.848537234833418360, -0.848563690556417450, -0.848590144158006820, -0.848616595638120750, -0.848643044996693190, -0.848669492233658060, -0.848695937348949210, -0.848722380342500580, +-0.848748821214245890, -0.848775259964119180, -0.848801696592054290, -0.848828131097985270, -0.848854563481846290, -0.848880993743570400, -0.848907421883092090, -0.848933847900345210, +-0.848960271795264230, -0.848986693567782110, -0.849013113217833130, -0.849039530745351430, -0.849065946150270980, -0.849092359432525590, -0.849118770592049320, -0.849145179628776110, +-0.849171586542640020, -0.849197991333574880, -0.849224394001514840, -0.849250794546394180, -0.849277192968146080, -0.849303589266705130, -0.849329983442005050, -0.849356375493980580, +-0.849382765422564630, -0.849409153227691840, -0.849435538909296130, -0.849461922467311560, -0.849488303901672180, -0.849514683212312050, -0.849541060399165220, -0.849567435462165730, +-0.849593808401247650, -0.849620179216345140, -0.849646547907392140, -0.849672914474323140, -0.849699278917071420, -0.849725641235571590, -0.849752001429758040, -0.849778359499564040, +-0.849804715444924200, -0.849831069265772450, -0.849857420962043200, -0.849883770533670260, -0.849910117980587910, -0.849936463302730320, -0.849962806500031530, -0.849989147572425720, +-0.850015486519847040, -0.850041823342229660, -0.850068158039508190, -0.850094490611615900, -0.850120821058487300, -0.850147149380056640, -0.850173475576258660, -0.850199799647026520, +-0.850226121592294830, -0.850252441411997850, -0.850278759106069760, -0.850305074674444830, -0.850331388117057110, -0.850357699433840990, -0.850384008624730630, -0.850410315689660190, +-0.850436620628564070, -0.850462923441376750, -0.850489224128031740, -0.850515522688463530, -0.850541819122606620, -0.850568113430395620, -0.850594405611763920, -0.850620695666646220, +-0.850646983594976700, -0.850673269396689750, -0.850699553071719630, -0.850725834620000620, -0.850752114041467000, -0.850778391336053040, -0.850804666503693240, -0.850830939544321760, +-0.850857210457873330, -0.850883479244281430, -0.850909745903480790, -0.850936010435405790, -0.850962272839991370, -0.850988533117170600, -0.851014791266878620, -0.851041047289049610, +-0.851067301183618060, -0.851093552950518250, -0.851119802589684450, -0.851146050101051270, -0.851172295484552870, -0.851198538740123740, -0.851224779867698290, -0.851251018867210880, +-0.851277255738596470, -0.851303490481788330, -0.851329723096721500, -0.851355953583330940, -0.851382181941549910, -0.851408408171313470, -0.851434632272556000, -0.851460854245211900, +-0.851487074089215760, -0.851513291804501860, -0.851539507391004700, -0.851565720848658890, -0.851591932177398700, -0.851618141377158740, -0.851644348447873400, -0.851670553389477610, +-0.851696756201904990, -0.851722956885090480, -0.851749155438968560, -0.851775351863474310, -0.851801546158541090, -0.851827738324104080, -0.851853928360097770, -0.851880116266456540, +-0.851906302043115020, -0.851932485690007790, -0.851958667207069360, -0.851984846594234240, -0.852011023851437010, -0.852037198978612300, -0.852063371975694930, -0.852089542842618730, +-0.852115711579318650, -0.852141878185729280, -0.852168042661785700, -0.852194205007421490, -0.852220365222571830, -0.852246523307171320, -0.852272679261154460, -0.852298833084455860, +-0.852324984777010130, -0.852351134338751980, -0.852377281769616020, -0.852403427069536870, -0.852429570238449120, -0.852455711276287940, -0.852481850182987060, -0.852507986958481510, +-0.852534121602705920, -0.852560254115595550, -0.852586384497084130, -0.852612512747106700, -0.852638638865597990, -0.852664762852492600, -0.852690884707725470, -0.852717004431231000, +-0.852743122022944110, -0.852769237482799310, -0.852795350810731550, -0.852821462006675300, -0.852847571070565410, -0.852873678002337150, -0.852899782801924130, -0.852925885469261620, +-0.852951986004285010, -0.852978084406927910, -0.853004180677125580, -0.853030274814812750, -0.853056366819924250, -0.853082456692394910, -0.853108544432159440, -0.853134630039152460, +-0.853160713513309020, -0.853186794854563830, -0.853212874062851510, -0.853238951138107100, -0.853265026080265780, -0.853291098889261470, -0.853317169565029340, -0.853343238107504340, +-0.853369304516621630, -0.853395368792315260, -0.853421430934520500, -0.853447490943172070, -0.853473548818205030, -0.853499604559553980, -0.853525658167153980, -0.853551709640939850, +-0.853577758980846420, -0.853603806186808640, -0.853629851258761340, -0.853655894196639790, -0.853681935000378140, -0.853707973669911580, -0.853734010205175140, -0.853760044606104110, +-0.853786076872632530, -0.853812107004695790, -0.853838135002228720, -0.853864160865166370, -0.853890184593443570, -0.853916206186995260, -0.853942225645756500, -0.853968242969662230, +-0.853994258158647270, -0.854020271212646680, -0.854046282131595840, -0.854072290915428910, -0.854098297564081180, -0.854124302077487800, -0.854150304455584040, -0.854176304698304080, +-0.854202302805583400, -0.854228298777356950, -0.854254292613559670, -0.854280284314126730, -0.854306273878993160, -0.854332261308093810, -0.854358246601363720, -0.854384229758738180, +-0.854410210780152000, -0.854436189665540250, -0.854462166414838520, -0.854488141027980990, -0.854514113504903030, -0.854540083845540250, -0.854566052049826830, -0.854592018117698250, +-0.854617982049089560, -0.854643943843936050, -0.854669903502172530, -0.854695861023734400, -0.854721816408556600, -0.854747769656574170, -0.854773720767722400, -0.854799669741936220, +-0.854825616579151020, -0.854851561279302170, -0.854877503842323860, -0.854903444268151900, -0.854929382556721350, -0.854955318707967700, -0.854981252721825350, -0.855007184598229890, +-0.855033114337116480, -0.855059041938420190, -0.855084967402076400, -0.855110890728020160, -0.855136811916186730, -0.855162730966511190, -0.855188647878928900, -0.855214562653374920, +-0.855240475289784970, -0.855266385788093440, -0.855292294148235930, -0.855318200370147720, -0.855344104453764410, -0.855370006399020390, -0.855395906205851380, -0.855421803874192640, +-0.855447699403979360, -0.855473592795146790, -0.855499484047630320, -0.855525373161365010, -0.855551260136286350, -0.855577144972329510, -0.855603027669429860, -0.855628908227523130, +-0.855654786646543600, -0.855680662926427080, -0.855706537067108970, -0.855732409068524990, -0.855758278930609410, -0.855784146653298270, -0.855810012236526640, -0.855835875680230120, +-0.855861736984343760, -0.855887596148803160, -0.855913453173543500, -0.855939308058500270, -0.855965160803608740, -0.855991011408804290, -0.856016859874022430, -0.856042706199198760, +-0.856068550384267880, -0.856094392429165630, -0.856120232333827950, -0.856146070098189100, -0.856171905722185160, -0.856197739205751370, -0.856223570548823250, -0.856249399751336290, +-0.856275226813225760, -0.856301051734427170, -0.856326874514875990, -0.856352695154507630, -0.856378513653257460, -0.856404330011061090, -0.856430144227854240, -0.856455956303571740, +-0.856481766238149200, -0.856507574031522330, -0.856533379683626970, -0.856559183194397610, -0.856584984563770410, -0.856610783791680650, -0.856636580878064050, -0.856662375822855870, +-0.856688168625991840, -0.856713959287407350, -0.856739747807037990, -0.856765534184819270, -0.856791318420686680, -0.856817100514576270, -0.856842880466422650, -0.856868658276161770, +-0.856894433943729330, -0.856920207469061280, -0.856945978852092230, -0.856971748092758110, -0.856997515190994760, -0.857023280146737560, -0.857049042959922240, -0.857074803630484270, +-0.857100562158359280, -0.857126318543482870, -0.857152072785790640, -0.857177824885218320, -0.857203574841701840, -0.857229322655175930, -0.857255068325576740, -0.857280811852839890, +-0.857306553236901410, -0.857332292477696160, -0.857358029575160160, -0.857383764529229150, -0.857409497339838620, -0.857435228006924510, -0.857460956530422200, -0.857486682910267530, +-0.857512407146396090, -0.857538129238743730, -0.857563849187245930, -0.857589566991839080, -0.857615282652457790, -0.857640996169038330, -0.857666707541516420, -0.857692416769828100, +-0.857718123853908330, -0.857743828793693260, -0.857769531589118620, -0.857795232240120110, -0.857820930746633570, -0.857846627108594720, -0.857872321325939160, -0.857898013398602940, +-0.857923703326521680, -0.857949391109631090, -0.857975076747867100, -0.858000760241165780, -0.858026441589462170, -0.858052120792692440, -0.858077797850792410, -0.858103472763698360, +-0.858129145531345230, -0.858154816153669180, -0.858180484630606030, -0.858206150962091740, -0.858231815148062020, -0.858257477188452800, -0.858283137083199920, -0.858308794832239100, +-0.858334450435506380, -0.858360103892937490, -0.858385755204468800, -0.858411404370035270, -0.858437051389573270, -0.858462696263018630, -0.858488338990307630, -0.858513979571375430, +-0.858539618006158190, -0.858565254294591960, -0.858590888436612580, -0.858616520432155970, -0.858642150281158090, -0.858667777983554870, -0.858693403539282140, -0.858719026948275840, +-0.858744648210472140, -0.858770267325807080, -0.858795884294216050, -0.858821499115635210, -0.858847111790000730, -0.858872722317248870, -0.858898330697314690, -0.858923936930134800, +-0.858949541015645020, -0.858975142953781300, -0.859000742744479910, -0.859026340387676560, -0.859051935883307300, -0.859077529231308310, -0.859103120431615410, -0.859128709484164750, +-0.859154296388892740, -0.859179881145734510, -0.859205463754626700, -0.859231044215505110, -0.859256622528306370, -0.859282198692965740, -0.859307772709419490, -0.859333344577603910, +-0.859358914297454810, -0.859384481868908590, -0.859410047291901070, -0.859435610566368520, -0.859461171692246890, -0.859486730669472340, -0.859512287497980920, -0.859537842177708790, +-0.859563394708592550, -0.859588945090567380, -0.859614493323569760, -0.859640039407535970, -0.859665583342402620, -0.859691125128104750, -0.859716664764579090, -0.859742202251761790, +-0.859767737589588910, -0.859793270777996720, -0.859818801816921390, -0.859844330706299060, -0.859869857446065920, -0.859895382036158120, -0.859920904476511820, -0.859946424767063730, +-0.859971942907749140, -0.859997458898504650, -0.860022972739266530, -0.860048484429971500, -0.860073993970554730, -0.860099501360953030, -0.860125006601102580, -0.860150509690939540, +-0.860176010630400280, -0.860201509419420970, -0.860227006057937890, -0.860252500545887310, -0.860277992883205500, -0.860303483069828620, -0.860328971105693620, -0.860354456990735650, +-0.860379940724891550, -0.860405422308097580, -0.860430901740290580, -0.860456379021405810, -0.860481854151380120, -0.860507327130149770, -0.860532797957651140, -0.860558266633820510, +-0.860583733158594160, -0.860609197531908450, -0.860634659753699900, -0.860660119823904560, -0.860685577742459020, -0.860711033509299890, -0.860736487124362790, -0.860761938587584540, +-0.860787387898901300, -0.860812835058250130, -0.860838280065566400, -0.860863722920786940, -0.860889163623848150, -0.860914602174686520, -0.860940038573238420, -0.860965472819440140, +-0.860990904913228160, -0.861016334854538990, -0.861041762643309010, -0.861067188279474590, -0.861092611762972140, -0.861118033093738690, -0.861143452271709630, -0.861168869296822010, +-0.861194284169012670, -0.861219696888217090, -0.861245107454372330, -0.861270515867414770, -0.861295922127280900, -0.861321326233907340, -0.861346728187230350, -0.861372127987186540, +-0.861397525633712520, -0.861422921126744570, -0.861448314466219390, -0.861473705652073370, -0.861499094684243570, -0.861524481562665590, -0.861549866287276480, -0.861575248858012510, +-0.861600629274811070, -0.861626007537607430, -0.861651383646338860, -0.861676757600941870, -0.861702129401352930, -0.861727499047508670, -0.861752866539345690, -0.861778231876800580, +-0.861803595059809750, -0.861828956088310120, -0.861854314962237970, -0.861879671681530460, -0.861905026246123420, -0.861930378655953790, -0.861955728910958170, -0.861981077011073740, +-0.862006422956236080, -0.862031766746382490, -0.862057108381449330, -0.862082447861373560, -0.862107785186091550, -0.862133120355540130, -0.862158453369655910, -0.862183784228375490, +-0.862209112931635600, -0.862234439479373060, -0.862259763871524810, -0.862285086108026680, -0.862310406188815830, -0.862335724113828970, -0.862361039883003280, -0.862386353496274570, +-0.862411664953579900, -0.862436974254856100, -0.862462281400039890, -0.862487586389067970, -0.862512889221876970, -0.862538189898403920, -0.862563488418585320, -0.862588784782358010, +-0.862614078989658690, -0.862639371040424210, -0.862664660934591710, -0.862689948672097140, -0.862715234252877770, -0.862740517676870660, -0.862765798944011840, -0.862791078054238600, +-0.862816355007487550, -0.862841629803695720, -0.862866902442799730, -0.862892172924736520, -0.862917441249442810, -0.862942707416855640, -0.862967971426911620, -0.862993233279547580, +-0.863018492974700570, -0.863043750512307750, -0.863069005892305170, -0.863094259114630000, -0.863119510179219170, -0.863144759086010070, -0.863170005834938640, -0.863195250425942140, +-0.863220492858957520, -0.863245733133921610, -0.863270971250771460, -0.863296207209443890, -0.863321441009875730, -0.863346672652004040, -0.863371902135765650, -0.863397129461097480, +-0.863422354627936930, -0.863447577636220040, -0.863472798485884210, -0.863498017176866470, -0.863523233709104000, -0.863548448082533060, -0.863573660297091040, -0.863598870352714760, +-0.863624078249341400, -0.863649283986907880, -0.863674487565351030, -0.863699688984608030, -0.863724888244615910, -0.863750085345311390, -0.863775280286631750, -0.863800473068514370, +-0.863825663690895310, -0.863850852153712050, -0.863876038456901750, -0.863901222600401810, -0.863926404584148270, -0.863951584408078840, -0.863976762072130370, -0.864001937576240000, +-0.864027110920344790, -0.864052282104381790, -0.864077451128288150, -0.864102617992000830, -0.864127782695456980, -0.864152945238593650, -0.864178105621348000, -0.864203263843657530, +-0.864228419905458400, -0.864253573806688210, -0.864278725547284580, -0.864303875127183760, -0.864329022546323160, -0.864354167804640030, -0.864379310902071430, -0.864404451838554630, +-0.864429590614026690, -0.864454727228424760, -0.864479861681686000, -0.864504993973747580, -0.864530124104546660, -0.864555252074020400, -0.864580377882106510, -0.864605501528741270, +-0.864630623013862290, -0.864655742337406720, -0.864680859499312170, -0.864705974499515030, -0.864731087337953010, -0.864756198014563270, -0.864781306529283090, -0.864806412882049620, +-0.864831517072800040, -0.864856619101471710, -0.864881718968001810, -0.864906816672327610, -0.864931912214386480, -0.864957005594115810, -0.864982096811452330, -0.865007185866333630, +-0.865032272758696870, -0.865057357488479890, -0.865082440055619180, -0.865107520460052240, -0.865132598701716550, -0.865157674780549390, -0.865182748696488040, -0.865207820449469760, +-0.865232890039431930, -0.865257957466311960, -0.865283022730047090, -0.865308085830574610, -0.865333146767832350, -0.865358205541756800, -0.865383262152285780, -0.865408316599356460, +-0.865433368882906890, -0.865458419002873570, -0.865483466959194090, -0.865508512751805850, -0.865533556380646440, -0.865558597845653140, -0.865583637146763340, -0.865608674283914410, +-0.865633709257043860, -0.865658742066088950, -0.865683772710987290, -0.865708801191676150, -0.865733827508093470, -0.865758851660175740, -0.865783873647860800, -0.865808893471086800, +-0.865833911129790020, -0.865858926623908510, -0.865883939953379640, -0.865908951118140920, -0.865933960118129840, -0.865958966953283780, -0.865983971623540460, -0.866008974128837150, +-0.866033974469111350, -0.866058972644300650, -0.866083968654342560, -0.866108962499174910, -0.866133954178734400, -0.866158943692959090, -0.866183931041786370, -0.866208916225154280, +-0.866233899242999540, -0.866258880095259980, -0.866283858781873200, -0.866308835302776800, -0.866333809657908290, -0.866358781847205270, -0.866383751870605230, -0.866408719728045900, +-0.866433685419464750, -0.866458648944799400, -0.866483610303987790, -0.866508569496966750, -0.866533526523674320, -0.866558481384048120, -0.866583434078026070, -0.866608384605545010, +-0.866633332966542990, -0.866658279160957720, -0.866683223188726700, -0.866708165049787540, -0.866733104744078050, -0.866758042271535860, -0.866782977632098440, -0.866807910825703630, +-0.866832841852289040, -0.866857770711792820, -0.866882697404151690, -0.866907621929303820, -0.866932544287186910, -0.866957464477739030, -0.866982382500897100, -0.867007298356599180, +-0.867032212044783090, -0.867057123565386330, -0.867082032918346960, -0.867106940103602340, -0.867131845121090430, -0.867156747970748930, -0.867181648652515570, -0.867206547166328060, +-0.867231443512124110, -0.867256337689842120, -0.867281229699418790, -0.867306119540792400, -0.867331007213901110, -0.867355892718681850, -0.867380776055072910, -0.867405657223011990, +-0.867430536222436930, -0.867455413053285550, -0.867480287715495680, -0.867505160209005030, -0.867530030533751550, -0.867554898689672950, -0.867579764676707050, -0.867604628494791810, +-0.867629490143865480, -0.867654349623864900, -0.867679206934728440, -0.867704062076393940, -0.867728915048799790, -0.867753765851882910, -0.867778614485581690, -0.867803460949833850, +-0.867828305244577320, -0.867853147369750060, -0.867877987325289980, -0.867902825111134810, -0.867927660727222720, -0.867952494173491410, -0.867977325449878820, -0.868002154556323460, +-0.868026981492762250, -0.868051806259133470, -0.868076628855375290, -0.868101449281425960, -0.868126267537222550, -0.868151083622703550, -0.868175897537806770, -0.868200709282470170, +-0.868225518856631910, -0.868250326260229800, -0.868275131493201900, -0.868299934555486150, -0.868324735447020600, -0.868349534167743190, -0.868374330717592400, -0.868399125096505300, +-0.868423917304420480, -0.868448707341275770, -0.868473495207009780, -0.868498280901559670, -0.868523064424863710, -0.868547845776860170, -0.868572624957486990, -0.868597401966682340, +-0.868622176804384140, -0.868646949470530450, -0.868671719965059430, -0.868696488287909020, -0.868721254439017490, -0.868746018418322770, -0.868770780225763480, -0.868795539861276780, +-0.868820297324801260, -0.868845052616275430, -0.868869805735636550, -0.868894556682823120, -0.868919305457773290, -0.868944052060425240, -0.868968796490717010, -0.868993538748586760, +-0.869018278833972760, -0.869043016746813060, -0.869067752487045710, -0.869092486054609090, -0.869117217449441150, -0.869141946671480700, -0.869166673720664920, -0.869191398596932400, +-0.869216121300221410, -0.869240841830470680, -0.869265560187617250, -0.869290276371599950, -0.869314990382357040, -0.869339702219826590, -0.869364411883946860, -0.869389119374656130, +-0.869413824691892660, -0.869438527835594500, -0.869463228805700150, -0.869487927602147660, -0.869512624224875850, -0.869537318673822000, -0.869562010948924820, -0.869586701050122590, +-0.869611388977354130, -0.869636074730556710, -0.869660758309669160, -0.869685439714629640, -0.869710118945376530, -0.869734796001848220, -0.869759470883982870, -0.869784143591718740, +-0.869808814124994330, -0.869833482483747920, -0.869858148667917770, -0.869882812677442720, -0.869907474512260140, -0.869932134172308970, -0.869956791657527370, -0.869981446967854290, +-0.870006100103227100, -0.870030751063584630, -0.870055399848865370, -0.870080046459007610, -0.870104690893949710, -0.870129333153630060, -0.870153973237987040, -0.870178611146959160, +-0.870203246880484780, -0.870227880438502190, -0.870252511820949980, -0.870277141027766880, -0.870301768058890480, -0.870326392914259730, -0.870351015593813450, -0.870375636097489020, +-0.870400254425225730, -0.870424870576961610, -0.870449484552635380, -0.870474096352185530, -0.870498705975550350, -0.870523313422668420, -0.870547918693478140, -0.870572521787918220, +-0.870597122705926820, -0.870621721447442760, -0.870646318012404770, -0.870670912400750560, -0.870695504612419070, -0.870720094647348790, -0.870744682505478760, -0.870769268186746490, +-0.870793851691091140, -0.870818433018451190, -0.870843012168765030, -0.870867589141971490, -0.870892163938008830, -0.870916736556815900, -0.870941306998331060, -0.870965875262492920, +-0.870990441349240090, -0.871015005258511720, -0.871039566990245320, -0.871064126544379920, -0.871088683920854370, -0.871113239119607360, -0.871137792140576960, -0.871162342983702100, +-0.871186891648921270, -0.871211438136173190, -0.871235982445396570, -0.871260524576530030, -0.871285064529512270, -0.871309602304281670, -0.871334137900777070, -0.871358671318937290, +-0.871383202558701160, -0.871407731620006510, -0.871432258502792710, -0.871456783206998150, -0.871481305732562110, -0.871505826079422290, -0.871530344247517960, -0.871554860236787740, +-0.871579374047170450, -0.871603885678604700, -0.871628395131029190, -0.871652902404382760, -0.871677407498604010, -0.871701910413631760, -0.871726411149404750, -0.871750909705862110, +-0.871775406082941800, -0.871799900280582960, -0.871824392298724330, -0.871848882137305160, -0.871873369796263400, -0.871897855275538200, -0.871922338575068400, -0.871946819694792710, +-0.871971298634649950, -0.871995775394579060, -0.872020249974518660, -0.872044722374407550, -0.872069192594184690, -0.872093660633788900, -0.872118126493158900, -0.872142590172234060, +-0.872167051670952320, -0.872191510989252850, -0.872215968127074690, -0.872240423084357120, -0.872264875861037960, -0.872289326457056590, -0.872313774872351950, -0.872338221106862880, +-0.872362665160528180, -0.872387107033286920, -0.872411546725077810, -0.872435984235839900, -0.872460419565512010, -0.872484852714032980, -0.872509283681342400, -0.872533712467378100, +-0.872558139072079460, -0.872582563495385540, -0.872606985737235720, -0.872631405797567930, -0.872655823676321660, -0.872680239373435750, -0.872704652888849240, -0.872729064222501180, +-0.872753473374330400, -0.872777880344276060, -0.872802285132276870, -0.872826687738271990, -0.872851088162200470, -0.872875486404001590, -0.872899882463613610, -0.872924276340975910, +-0.872948668036027550, -0.872973057548707910, -0.872997444878955140, -0.873021830026708860, -0.873046212991907990, -0.873070593774491480, -0.873094972374398590, -0.873119348791568270, +-0.873143723025939570, -0.873168095077451520, -0.873192464946043300, -0.873216832631653840, -0.873241198134222740, -0.873265561453688280, -0.873289922589989830, -0.873314281543066670, +-0.873338638312858180, -0.873362992899302640, -0.873387345302339630, -0.873411695521908340, -0.873436043557947790, -0.873460389410397050, -0.873484733079195390, -0.873509074564281840, +-0.873533413865595690, -0.873557750983075980, -0.873582085916661870, -0.873606418666292520, -0.873630749231907640, -0.873655077613445410, -0.873679403810845520, -0.873703727824047040, +-0.873728049652989670, -0.873752369297611910, -0.873776686757853030, -0.873801002033652520, -0.873825315124949540, -0.873849626031683150, -0.873873934753792820, -0.873898241291217630, +-0.873922545643896820, -0.873946847811769680, -0.873971147794775360, -0.873995445592853580, -0.874019741205942840, -0.874044034633982720, -0.874068325876912410, -0.874092614934671830, +-0.874116901807199250, -0.874141186494434510, -0.874165468996316640, -0.874189749312785260, -0.874214027443779410, -0.874238303389238470, -0.874262577149101830, -0.874286848723308750, +-0.874311118111798510, -0.874335385314510490, -0.874359650331384410, -0.874383913162358860, -0.874408173807373460, -0.874432432266367580, -0.874456688539281160, -0.874480942626052580, +-0.874505194526621570, -0.874529444240927600, -0.874553691768910070, -0.874577937110508240, -0.874602180265661610, -0.874626421234309450, -0.874650660016391360, -0.874674896611846500, +-0.874699131020614470, -0.874723363242635000, -0.874747593277846790, -0.874771821126189560, -0.874796046787602700, -0.874820270262026240, -0.874844491549398580, -0.874868710649659760, +-0.874892927562749170, -0.874917142288606290, -0.874941354827170500, -0.874965565178381310, -0.874989773342178200, -0.875013979318500670, -0.875038183107288200, -0.875062384708480300, +-0.875086584122016450, -0.875110781347836600, -0.875134976385879230, -0.875159169236084500, -0.875183359898392350, -0.875207548372741280, -0.875231734659071340, -0.875255918757322120, +-0.875280100667433000, -0.875304280389343710, -0.875328457922993740, -0.875352633268322580, -0.875376806425269830, -0.875400977393775090, -0.875425146173777870, -0.875449312765217760, +-0.875473477168034920, -0.875497639382167850, -0.875521799407556700, -0.875545957244141080, -0.875570112891861040, -0.875594266350655180, -0.875618417620463770, -0.875642566701226200, +-0.875666713592882280, -0.875690858295371630, -0.875715000808633740, -0.875739141132608420, -0.875763279267235180, -0.875787415212453730, -0.875811548968203790, -0.875835680534425400, +-0.875859809911057390, -0.875883937098039800, -0.875908062095312470, -0.875932184902815330, -0.875956305520487310, -0.875980423948268580, -0.876004540186098750, -0.876028654233917630, +-0.876052766091664830, -0.876076875759280060, -0.876100983236703160, -0.876125088523873720, -0.876149191620731680, -0.876173292527216650, -0.876197391243268680, -0.876221487768826910, +-0.876245582103831410, -0.876269674248222000, -0.876293764201938830, -0.876317851964920740, -0.876341937537108100, -0.876366020918440510, -0.876390102108857930, -0.876414181108300160, +-0.876438257916706820, -0.876462332534017950, -0.876486404960173160, -0.876510475195112380, -0.876534543238775440, -0.876558609091102170, -0.876582672752032720, -0.876606734221506260, +-0.876630793499462820, -0.876654850585842920, -0.876678905480585470, -0.876702958183630750, -0.876727008694918710, -0.876751057014389050, -0.876775103141981700, -0.876799147077636730, +-0.876823188821293730, -0.876847228372892860, -0.876871265732373950, -0.876895300899676820, -0.876919333874741520, -0.876943364657508220, -0.876967393247916060, -0.876991419645905550, +-0.877015443851416390, -0.877039465864389080, -0.877063485684762670, -0.877087503312477530, -0.877111518747473620, -0.877135531989690960, -0.877159543039069400, -0.877183551895549090, +-0.877207558559069840, -0.877231563029571610, -0.877255565306994560, -0.877279565391278600, -0.877303563282364140, -0.877327558980190440, -0.877351552484697760, -0.877375543795826160, +-0.877399532913516130, -0.877423519837706940, -0.877447504568338870, -0.877471487105352050, -0.877495467448686560, -0.877519445598282320, -0.877543421554079490, -0.877567395316018130, +-0.877591366884038270, -0.877615336258079970, -0.877639303438083380, -0.877663268423989010, -0.877687231215735890, -0.877711191813264850, -0.877735150216515710, -0.877759106425429200, +-0.877783060439944360, -0.877807012260002020, -0.877830961885542100, -0.877854909316504780, -0.877878854552830210, -0.877902797594458440, -0.877926738441329730, -0.877950677093384150, +-0.877974613550561940, -0.877998547812803070, -0.878022479880047890, -0.878046409752237020, -0.878070337429309620, -0.878094262911206400, -0.878118186197867970, -0.878142107289233590, +-0.878166026185243980, -0.878189942885839290, -0.878213857390959700, -0.878237769700545570, -0.878261679814536960, -0.878285587732874130, -0.878309493455497360, -0.878333396982346800, +-0.878357298313362840, -0.878381197448485530, -0.878405094387655790, -0.878428989130812800, -0.878452881677897370, -0.878476772028849660, -0.878500660183610500, -0.878524546142119280, +-0.878548429904316700, -0.878572311470143030, -0.878596190839538550, -0.878620068012443630, -0.878643942988798550, -0.878667815768543580, -0.878691686351619090, -0.878715554737965370, +-0.878739420927522770, -0.878763284920232150, -0.878787146716032750, -0.878811006314865530, -0.878834863716670740, -0.878858718921389340, -0.878882571928960580, -0.878906422739325510, +-0.878930271352424300, -0.878954117768197430, -0.878977961986585290, -0.879001804007528250, -0.879025643830966710, -0.879049481456841030, -0.879073316885091600, -0.879097150115658920, +-0.879120981148483800, -0.879144809983505860, -0.879168636620665800, -0.879192461059904230, -0.879216283301161860, -0.879240103344378410, -0.879263921189494590, -0.879287736836451120, +-0.879311550285188260, -0.879335361535646510, -0.879359170587766360, -0.879382977441488300, -0.879406782096752710, -0.879430584553500210, -0.879454384811671260, -0.879478182871206380, +-0.879501978732046500, -0.879525772394131210, -0.879549563857401460, -0.879573353121798180, -0.879597140187261210, -0.879620925053731350, -0.879644707721149110, -0.879668488189455200, +-0.879692266458590000, -0.879716042528494110, -0.879739816399108250, -0.879763588070372690, -0.879787357542228250, -0.879811124814615430, -0.879834889887474710, -0.879858652760747260, +-0.879882413434372790, -0.879906171908292230, -0.879929928182446200, -0.879953682256775840, -0.879977434131220870, -0.880001183805722230, -0.880024931280220750, -0.880048676554656790, +-0.880072419628971310, -0.880096160503104690, -0.880119899176997620, -0.880143635650590840, -0.880167369923825050, -0.880191101996640750, -0.880214831868979090, -0.880238559540780010, +-0.880262285011984450, -0.880286008282533230, -0.880309729352367400, -0.880333448221426900, -0.880357164889652650, -0.880380879356985610, -0.880404591623366260, -0.880428301688735540, +-0.880452009553034040, -0.880475715216202490, -0.880499418678181600, -0.880523119938912190, -0.880546818998335090, -0.880570515856391230, -0.880594210513020670, -0.880617902968164670, +-0.880641593221763830, -0.880665281273759540, -0.880688967124091500, -0.880712650772701110, -0.880736332219529070, -0.880760011464516210, -0.880783688507603360, -0.880807363348731220, +-0.880831035987840630, -0.880854706424872510, -0.880878374659767700, -0.880902040692466910, -0.880925704522910970, -0.880949366151041250, -0.880973025576797570, -0.880996682800121440, +-0.881020337820954010, -0.881043990639235330, -0.881067641254906660, -0.881091289667908840, -0.881114935878182900, -0.881138579885669570, -0.881162221690309780, -0.881185861292044350, +-0.881209498690814330, -0.881233133886560660, -0.881256766879224050, -0.881280397668745550, -0.881304026255066430, -0.881327652638126960, -0.881351276817868290, -0.881374898794231370, +-0.881398518567157670, -0.881422136136587260, -0.881445751502461520, -0.881469364664721370, -0.881492975623307750, -0.881516584378161830, -0.881540190929224310, -0.881563795276436470, +-0.881587397419739020, -0.881610997359073110, -0.881634595094379690, -0.881658190625600250, -0.881681783952674820, -0.881705375075545030, -0.881728963994151790, -0.881752550708436500, +-0.881776135218339530, -0.881799717523802150, -0.881823297624765410, -0.881846875521170470, -0.881870451212958370, -0.881894024700070170, -0.881917595982446900, -0.881941165060029620, +-0.881964731932759370, -0.881988296600577320, -0.882011859063425050, -0.882035419321242630, -0.882058977373971650, -0.882082533221553170, -0.882106086863928880, -0.882129638301038970, +-0.882153187532824900, -0.882176734559227850, -0.882200279380188970, -0.882223821995649420, -0.882247362405550350, -0.882270900609832820, -0.882294436608438090, -0.882317970401307220, +-0.882341501988381460, -0.882365031369601870, -0.882388558544910160, -0.882412083514246710, -0.882435606277552910, -0.882459126834770680, -0.882482645185840080, -0.882506161330702920, +-0.882529675269300370, -0.882553187001573590, -0.882576696527463840, -0.882600203846912400, -0.882623708959860420, -0.882647211866249170, -0.882670712566019920, -0.882694211059113830, +-0.882717707345472280, -0.882741201425036870, -0.882764693297747980, -0.882788182963547440, -0.882811670422376400, -0.882835155674176590, -0.882858638718888480, -0.882882119556453790, +-0.882905598186813800, -0.882929074609909770, -0.882952548825683080, -0.882976020834075000, -0.882999490635026920, -0.883022958228480090, -0.883046423614375910, -0.883069886792655630, +-0.883093347763260980, -0.883116806526132670, -0.883140263081212300, -0.883163717428441240, -0.883187169567761330, -0.883210619499113060, -0.883234067222438250, -0.883257512737678270, +-0.883280956044774520, -0.883304397143668370, -0.883327836034301210, -0.883351272716614510, -0.883374707190549560, -0.883398139456047950, -0.883421569513050840, -0.883444997361500390, +-0.883468423001336880, -0.883491846432502450, -0.883515267654938260, -0.883538686668586480, -0.883562103473387370, -0.883585518069283200, -0.883608930456215140, -0.883632340634124770, +-0.883655748602953480, -0.883679154362642880, -0.883702557913134460, -0.883725959254369590, -0.883749358386289760, -0.883772755308836590, -0.883796150021951550, -0.883819542525576480, +-0.883842932819652210, -0.883866320904120650, -0.883889706778923650, -0.883913090444001900, -0.883936471899297470, -0.883959851144751840, -0.883983228180306720, -0.884006603005903390, +-0.884029975621483550, -0.884053346026988820, -0.884076714222360780, -0.884100080207540830, -0.884123443982470780, -0.884146805547092020, -0.884170164901346810, -0.884193522045175650, +-0.884216876978520690, -0.884240229701323540, -0.884263580213526360, -0.884286928515069630, -0.884310274605895730, -0.884333618485946050, -0.884356960155162410, -0.884380299613486300, +-0.884403636860859430, -0.884426971897223520, -0.884450304722520060, -0.884473635336690990, -0.884496963739677790, -0.884520289931422620, -0.884543613911866200, -0.884566935680950790, +-0.884590255238618120, -0.884613572584810210, -0.884636887719467910, -0.884660200642533370, -0.884683511353948400, -0.884706819853654510, -0.884730126141593740, -0.884753430217707580, +-0.884776732081937860, -0.884800031734226280, -0.884823329174514670, -0.884846624402744750, -0.884869917418858560, -0.884893208222797270, -0.884916496814502910, -0.884939783193917420, +-0.884963067360982740, -0.884986349315640020, -0.885009629057831540, -0.885032906587498890, -0.885056181904583910, -0.885079455009028630, -0.885102725900774550, -0.885125994579763820, +-0.885149261045937940, -0.885172525299238950, -0.885195787339608800, -0.885219047166988960, -0.885242304781322040, -0.885265560182548980, -0.885288813370611940, -0.885312064345453290, +-0.885335313107014080, -0.885358559655236580, -0.885381803990062720, -0.885405046111434340, -0.885428286019293350, -0.885451523713581600, -0.885474759194241010, -0.885497992461213630, +-0.885521223514441180, -0.885544452353865700, -0.885567678979429120, -0.885590903391073710, -0.885614125588740640, -0.885637345572372280, -0.885660563341910570, -0.885683778897297880, +-0.885706992238475270, -0.885730203365385220, -0.885753412277969670, -0.885776618976170550, -0.885799823459929910, -0.885823025729189690, -0.885846225783891830, -0.885869423623978580, +-0.885892619249391670, -0.885915812660073240, -0.885939003855965580, -0.885962192837010170, -0.885985379603149160, -0.886008564154324720, -0.886031746490479330, -0.886054926611554160, +-0.886078104517491690, -0.886101280208233870, -0.886124453683722950, -0.886147624943900760, -0.886170793988709680, -0.886193960818091430, -0.886217125431988380, -0.886240287830342590, +-0.886263448013095980, -0.886286605980191160, -0.886309761731569500, -0.886332915267173390, -0.886356066586944990, -0.886379215690826780, -0.886402362578760150, -0.886425507250687580, +-0.886448649706551350, -0.886471789946293390, -0.886494927969856070, -0.886518063777181340, -0.886541197368211460, -0.886564328742888600, -0.886587457901155010, -0.886610584842952630, +-0.886633709568224290, -0.886656832076911150, -0.886679952368956030, -0.886703070444301080, -0.886726186302888800, -0.886749299944660560, -0.886772411369559200, -0.886795520577526750, +-0.886818627568505490, -0.886841732342437680, -0.886864834899265600, -0.886887935238931390, -0.886911033361377330, -0.886934129266545690, -0.886957222954378730, -0.886980314424818620, +-0.887003403677808280, -0.887026490713288980, -0.887049575531203450, -0.887072658131493940, -0.887095738514103170, -0.887118816678972740, -0.887141892626045260, -0.887164966355262980, +-0.887188037866568300, -0.887211107159903590, -0.887234174235211000, -0.887257239092433040, -0.887280301731512070, -0.887303362152390250, -0.887326420355009970, -0.887349476339314160, +-0.887372530105244190, -0.887395581652742900, -0.887418630981752670, -0.887441678092216300, -0.887464722984075300, -0.887487765657272500, -0.887510806111750260, -0.887533844347450970, +-0.887556880364317120, -0.887579914162291090, -0.887602945741315260, -0.887625975101332010, -0.887649002242283940, -0.887672027164113310, -0.887695049866762950, -0.887718070350174690, +-0.887741088614291130, -0.887764104659054860, -0.887787118484408830, -0.887810130090294520, -0.887833139476654990, -0.887856146643432490, -0.887879151590569630, -0.887902154318008900, +-0.887925154825692900, -0.887948153113563900, -0.887971149181564500, -0.887994143029637310, -0.888017134657724690, -0.888040124065769710, -0.888063111253713950, -0.888086096221500480, +-0.888109078969071650, -0.888132059496370640, -0.888155037803339040, -0.888178013889919900, -0.888200987756055600, -0.888223959401688970, -0.888246928826762370, -0.888269896031218420, +-0.888292861014999820, -0.888315823778048960, -0.888338784320308660, -0.888361742641721300, -0.888384698742229580, -0.888407652621776570, -0.888430604280304070, -0.888453553717754920, +-0.888476500934072040, -0.888499445929198160, -0.888522388703075430, -0.888545329255646550, -0.888568267586854480, -0.888591203696641680, -0.888614137584950890, -0.888637069251724810, +-0.888659998696905930, -0.888682925920437180, -0.888705850922261060, -0.888728773702320280, -0.888751694260558000, -0.888774612596916150, -0.888797528711337660, -0.888820442603765470, +-0.888843354274142410, -0.888866263722410730, -0.888889170948513270, -0.888912075952392970, -0.888934978733992410, -0.888957879293254430, -0.888980777630121730, -0.889003673744537150, +-0.889026567636443280, -0.889049459305783160, -0.889072348752499190, -0.889095235976534950, -0.889118120977832050, -0.889141003756333980, -0.889163884311983340, -0.889186762644723410, +-0.889209638754496100, -0.889232512641244700, -0.889255384304912130, -0.889278253745441010, -0.889301120962774250, -0.889323985956854690, -0.889346848727625260, -0.889369709275028670, +-0.889392567599007760, -0.889415423699505440, -0.889438277576464990, -0.889461129229828450, -0.889483978659538990, -0.889506825865539750, -0.889529670847773680, -0.889552513606183150, +-0.889575354140711320, -0.889598192451301010, -0.889621028537895380, -0.889643862400437020, -0.889666694038869110, -0.889689523453134460, -0.889712350643175890, -0.889735175608936560, +-0.889757998350359290, -0.889780818867386910, -0.889803637159963020, -0.889826453228029560, -0.889849267071530000, -0.889872078690407630, -0.889894888084604710, -0.889917695254064610, +-0.889940500198730170, -0.889963302918544530, -0.889986103413450640, -0.890008901683391530, -0.890031697728310140, -0.890054491548149420, -0.890077283142852500, -0.890100072512362450, +-0.890122859656622190, -0.890145644575575210, -0.890168427269163680, -0.890191207737331070, -0.890213985980020440, -0.890236761997175270, -0.890259535788737730, -0.890282307354651410, +-0.890305076694859370, -0.890327843809304520, -0.890350608697930150, -0.890373371360679290, -0.890396131797494880, -0.890418890008320310, -0.890441645993098390, -0.890464399751772380, +-0.890487151284285790, -0.890509900590580880, -0.890532647670601250, -0.890555392524289950, -0.890578135151590680, -0.890600875552445600, -0.890623613726798320, -0.890646349674592000, +-0.890669083395769780, -0.890691814890274940, -0.890714544158050510, -0.890737271199039780, -0.890759996013185780, -0.890782718600431900, -0.890805438960721170, -0.890828157093997210, +-0.890850873000202490, -0.890873586679280520, -0.890896298131174660, -0.890919007355828410, -0.890941714353184370, -0.890964419123185910, -0.890987121665776430, -0.891009821980899170, +-0.891032520068497310, -0.891055215928514220, -0.891077909560893060, -0.891100600965577080, -0.891123290142509570, -0.891145977091633900, -0.891168661812893340, -0.891191344306231480, +-0.891214024571590820, -0.891236702608915190, -0.891259378418148170, -0.891282051999232270, -0.891304723352111190, -0.891327392476728430, -0.891350059373027140, -0.891372724040950580, +-0.891395386480442360, -0.891418046691445640, -0.891440704673903790, -0.891463360427760200, -0.891486013952958230, -0.891508665249441170, -0.891531314317152820, -0.891553961156035800, +-0.891576605766033920, -0.891599248147090570, -0.891621888299149460, -0.891644526222153180, -0.891667161916045670, -0.891689795380770090, -0.891712426616270150, -0.891735055622489230, +-0.891757682399370480, -0.891780306946857610, -0.891802929264894020, -0.891825549353423060, -0.891848167212388240, -0.891870782841733380, -0.891893396241401180, -0.891916007411335480, +-0.891938616351479750, -0.891961223061777940, -0.891983827542172650, -0.892006429792607800, -0.892029029813026790, -0.892051627603373310, -0.892074223163590750, -0.892096816493622600, +-0.892119407593412350, -0.892141996462903710, -0.892164583102039940, -0.892187167510764770, -0.892209749689022110, -0.892232329636754700, -0.892254907353906450, -0.892277482840420850, +-0.892300056096241970, -0.892322627121312610, -0.892345195915576710, -0.892367762478977760, -0.892390326811459360, -0.892412888912965220, -0.892435448783438830, -0.892458006422823800, +-0.892480561831063830, -0.892503115008102420, -0.892525665953883160, -0.892548214668349770, -0.892570761151446290, -0.892593305403115430, -0.892615847423301360, -0.892638387211948100, +-0.892660924768998390, -0.892683460094396360, -0.892705993188085740, -0.892728524050010130, -0.892751052680113230, -0.892773579078338650, -0.892796103244630210, -0.892818625178931400, +-0.892841144881186160, -0.892863662351337960, -0.892886177589330640, -0.892908690595108250, -0.892931201368613700, -0.892953709909791170, -0.892976216218584470, -0.892998720294937540, +-0.893021222138793420, -0.893043721750096160, -0.893066219128789700, -0.893088714274817730, -0.893111207188123870, -0.893133697868652040, -0.893156186316345970, -0.893178672531149460, +-0.893201156513006240, -0.893223638261860130, -0.893246117777655280, -0.893268595060334740, -0.893291070109842770, -0.893313542926123080, -0.893336013509119950, -0.893358481858776420, +-0.893380947975036640, -0.893403411857844550, -0.893425873507143860, -0.893448332922878510, -0.893470790104992420, -0.893493245053429200, -0.893515697768133000, -0.893538148249047430, +-0.893560596496116630, -0.893583042509284660, -0.893605486288494680, -0.893627927833690940, -0.893650367144817490, -0.893672804221818500, -0.893695239064636990, -0.893717671673217470, +-0.893740102047503760, -0.893762530187439790, -0.893784956092969480, -0.893807379764036900, -0.893829801200585750, -0.893852220402560070, -0.893874637369903910, -0.893897052102561100, +-0.893919464600475780, -0.893941874863592110, -0.893964282891853370, -0.893986688685203920, -0.894009092243588040, -0.894031493566949220, -0.894053892655231500, -0.894076289508379140, +-0.894098684126336090, -0.894121076509046260, -0.894143466656453720, -0.894165854568502620, -0.894188240245136770, -0.894210623686300440, -0.894233004891937470, -0.894255383861991990, +-0.894277760596408400, -0.894300135095130070, -0.894322507358101480, -0.894344877385266470, -0.894367245176569740, -0.894389610731954550, -0.894411974051365300, -0.894434335134746130, +-0.894456693982041080, -0.894479050593194210, -0.894501404968149890, -0.894523757106851950, -0.894546107009244640, -0.894568454675272130, -0.894590800104878350, -0.894613143298008120, +-0.894635484254604480, -0.894657822974612270, -0.894680159457975410, -0.894702493704638610, -0.894724825714545150, -0.894747155487639610, -0.894769483023866160, -0.894791808323169070, +-0.894814131385492370, -0.894836452210780450, -0.894858770798977350, -0.894881087150027340, -0.894903401263874580, -0.894925713140463320, -0.894948022779738170, -0.894970330181642630, +-0.894992635346121170, -0.895014938273118180, -0.895037238962578250, -0.895059537414444770, -0.895081833628662450, -0.895104127605175660, -0.895126419343928450, -0.895148708844865190, +-0.895170996107930160, -0.895193281133067730, -0.895215563920222060, -0.895237844469337410, -0.895260122780358160, -0.895282398853228690, -0.895304672687893490, -0.895326944284296270, +-0.895349213642381740, -0.895371480762094610, -0.895393745643378260, -0.895416008286177620, -0.895438268690436970, -0.895460526856100560, -0.895482782783112890, -0.895505036471418210, +-0.895527287920961030, -0.895549537131685610, -0.895571784103536330, -0.895594028836457560, -0.895616271330393790, -0.895638511585289730, -0.895660749601088880, -0.895682985377736270, +-0.895705218915176180, -0.895727450213353430, -0.895749679272211610, -0.895771906091695660, -0.895794130671749960, -0.895816353012318880, -0.895838573113346910, -0.895860790974778550, +-0.895883006596558170, -0.895905219978630370, -0.895927431120939420, -0.895949640023429920, -0.895971846686046680, -0.895994051108733540, -0.896016253291435190, -0.896038453234096140, +-0.896060650936661430, -0.896082846399074760, -0.896105039621280850, -0.896127230603224410, -0.896149419344849930, -0.896171605846101890, -0.896193790106924790, -0.896215972127263230, +-0.896238151907061690, -0.896260329446264880, -0.896282504744817190, -0.896304677802663540, -0.896326848619747980, -0.896349017196015230, -0.896371183531409880, -0.896393347625876970, +-0.896415509479360330, -0.896437669091804890, -0.896459826463155360, -0.896481981593356240, -0.896504134482352110, -0.896526285130087700, -0.896548433536507480, -0.896570579701556290, +-0.896592723625178610, -0.896614865307319150, -0.896637004747922410, -0.896659141946933640, -0.896681276904296660, -0.896703409619956430, -0.896725540093858080, -0.896747668325945550, +-0.896769794316163770, -0.896791918064457460, -0.896814039570771440, -0.896836158835050300, -0.896858275857238760, -0.896880390637281640, -0.896902503175123430, -0.896924613470708950, +-0.896946721523982910, -0.896968827334890140, -0.896990930903375670, -0.897013032229383560, -0.897035131312858720, -0.897057228153746110, -0.897079322751990870, -0.897101415107536940, +-0.897123505220329460, -0.897145593090313160, -0.897167678717432860, -0.897189762101633480, -0.897211843242859630, -0.897233922141056130, -0.897255998796167910, -0.897278073208139570, +-0.897300145376916160, -0.897322215302442720, -0.897344282984663400, -0.897366348423523360, -0.897388411618967430, -0.897410472570940860, -0.897432531279387710, -0.897454587744253240, +-0.897476641965482380, -0.897498693943019840, -0.897520743676810560, -0.897542791166799470, -0.897564836412931280, -0.897586879415151140, -0.897608920173403770, -0.897630958687634100, +-0.897652994957787390, -0.897675028983807800, -0.897697060765640600, -0.897719090303230830, -0.897741117596523750, -0.897763142645463420, -0.897785165449995200, -0.897807186010064150, +-0.897829204325615080, -0.897851220396593040, -0.897873234222942850, -0.897895245804609670, -0.897917255141538420, -0.897939262233673930, -0.897961267080961360, -0.897983269683345520, +-0.898005270040772020, -0.898027268153184900, -0.898049264020529540, -0.898071257642751530, -0.898093249019794930, -0.898115238151605210, -0.898137225038127430, -0.898159209679306510, +-0.898181192075087620, -0.898203172225415790, -0.898225150130235960, -0.898247125789493280, -0.898269099203132800, -0.898291070371099560, -0.898313039293338610, -0.898335005969795540, +-0.898356970400414510, -0.898378932585141010, -0.898400892523920300, -0.898422850216697650, -0.898444805663417450, -0.898466758864025380, -0.898488709818466290, -0.898510658526685440, +-0.898532604988627970, -0.898554549204238940, -0.898576491173463610, -0.898598430896247020, -0.898620368372534340, -0.898642303602270820, -0.898664236585401840, -0.898686167321871900, +-0.898708095811626580, -0.898730022054610940, -0.898751946050770690, -0.898773867800050200, -0.898795787302395070, -0.898817704557750450, -0.898839619566061510, -0.898861532327273500, +-0.898883442841331810, -0.898905351108181370, -0.898927257127767660, -0.898949160900035740, -0.898971062424930860, -0.898992961702398840, -0.899014858732383960, -0.899036753514831920, +-0.899058646049687990, -0.899080536336897880, -0.899102424376406080, -0.899124310168158080, -0.899146193712099470, -0.899168075008175300, -0.899189954056330840, -0.899211830856511680, +-0.899233705408662880, -0.899255577712729790, -0.899277447768657700, -0.899299315576392090, -0.899321181135878560, -0.899343044447061590, -0.899364905509887120, -0.899386764324300310, +-0.899408620890247090, -0.899430475207671830, -0.899452327276520470, -0.899474177096738160, -0.899496024668270500, -0.899517869991062760, -0.899539713065060420, -0.899561553890208640, +-0.899583392466453140, -0.899605228793739050, -0.899627062872012000, -0.899648894701217120, -0.899670724281300570, -0.899692551612206740, -0.899714376693881430, -0.899736199526270370, +-0.899758020109319050, -0.899779838442972380, -0.899801654527176090, -0.899823468361875660, -0.899845279947016570, -0.899867089282544220, -0.899888896368404190, -0.899910701204541970, +-0.899932503790902950, -0.899954304127432710, -0.899976102214076650, -0.899997898050780790, -0.900019691637489740, -0.900041482974149430, -0.900063272060705470, -0.900085058897103660, +-0.900106843483288950, -0.900128625819207050, -0.900150405904803550, -0.900172183740024060, -0.900193959324814160, -0.900215732659119250, -0.900237503742885140, -0.900259272576057200, +-0.900281039158581040, -0.900302803490402370, -0.900324565571467010, -0.900346325401719880, -0.900368082981106930, -0.900389838309573750, -0.900411591387066500, -0.900433342213529660, +-0.900455090788909620, -0.900476837113151850, -0.900498581186201960, -0.900520323008005550, -0.900542062578508440, -0.900563799897656110, -0.900585534965394290, -0.900607267781668660, +-0.900628998346424850, -0.900650726659608880, -0.900672452721165810, -0.900694176531041560, -0.900715898089181840, -0.900737617395532820, -0.900759334450039310, -0.900781049252647460, +-0.900802761803302990, -0.900824472101951600, -0.900846180148539120, -0.900867885943011150, -0.900889589485313500, -0.900911290775391780, -0.900932989813191920, -0.900954686598659520, +-0.900976381131740390, -0.900998073412380810, -0.901019763440525590, -0.901041451216120890, -0.901063136739112650, -0.901084820009446900, -0.901106501027068800, -0.901128179791924390, +-0.901149856303959500, -0.901171530563120050, -0.901193202569351760, -0.901214872322600450, -0.901236539822811930, -0.901258205069932040, -0.901279868063906700, -0.901301528804681730, +-0.901323187292203180, -0.901344843526416420, -0.901366497507267490, -0.901388149234702340, -0.901409798708667110, -0.901431445929107070, -0.901453090895968480, -0.901474733609197050, +-0.901496374068738840, -0.901518012274539650, -0.901539648226545530, -0.901561281924702200, -0.901582913368955690, -0.901604542559251930, -0.901626169495536760, -0.901647794177756530, +-0.901669416605856530, -0.901691036779782910, -0.901712654699481810, -0.901734270364899280, -0.901755883775980820, -0.901777494932672560, -0.901799103834920680, -0.901820710482670980, +-0.901842314875869520, -0.901863917014462220, -0.901885516898395130, -0.901907114527614300, -0.901928709902065640, -0.901950303021695320, -0.901971893886449490, -0.901993482496273650, +-0.902015068851113930, -0.902036652950916730, -0.902058234795628190, -0.902079814385193690, -0.902101391719559610, -0.902122966798672100, -0.902144539622477200, -0.902166110190920970, +-0.902187678503949430, -0.902209244561508640, -0.902230808363544750, -0.902252369910003900, -0.902273929200832160, -0.902295486235975440, -0.902317041015380570, -0.902338593538992590, +-0.902360143806758220, -0.902381691818623820, -0.902403237574534780, -0.902424781074437690, -0.902446322318278590, -0.902467861306003760, -0.902489398037559230, -0.902510932512891160, +-0.902532464731945820, -0.902553994694669350, -0.902575522401007910, -0.902597047850907550, -0.902618571044314640, -0.902640091981175670, -0.902661610661436130, -0.902683127085042500, +-0.902704641251941160, -0.902726153162078490, -0.902747662815400090, -0.902769170211852550, -0.902790675351382020, -0.902812178233934890, -0.902833678859457310, -0.902855177227895430, +-0.902876673339195630, -0.902898167193304290, -0.902919658790167450, -0.902941148129731360, -0.902962635211942870, -0.902984120036747440, -0.903005602604091680, -0.903027082913921970, +-0.903048560966184800, -0.903070036760825980, -0.903091510297792000, -0.903112981577029240, -0.903134450598484070, -0.903155917362102770, -0.903177381867831700, -0.903198844115617130, +-0.903220304105405440, -0.903241761837143000, -0.903263217310776190, -0.903284670526251610, -0.903306121483515080, -0.903327570182513200, -0.903349016623192450, -0.903370460805499540, +-0.903391902729379970, -0.903413342394780770, -0.903434779801648210, -0.903456214949928670, -0.903477647839568520, -0.903499078470514360, -0.903520506842712460, -0.903541932956109290, +-0.903563356810651360, -0.903584778406284930, -0.903606197742956590, -0.903627614820613160, -0.903649029639200350, -0.903670442198664880, -0.903691852498953780, -0.903713260540012550, +-0.903734666321788230, -0.903756069844227290, -0.903777471107276130, -0.903798870110881340, -0.903820266854989280, -0.903841661339546580, -0.903863053564499810, -0.903884443529795360, +-0.903905831235379710, -0.903927216681199570, -0.903948599867201770, -0.903969980793332130, -0.903991359459537460, -0.904012735865764470, -0.904034110011959880, -0.904055481898069720, +-0.904076851524040940, -0.904098218889819890, -0.904119583995353420, -0.904140946840587880, -0.904162307425470100, -0.904183665749946460, -0.904205021813963670, -0.904226375617468330, +-0.904247727160407020, -0.904269076442726800, -0.904290423464373490, -0.904311768225294130, -0.904333110725435430, -0.904354450964744210, -0.904375788943166500, -0.904397124660649370, +-0.904418458117139500, -0.904439789312583400, -0.904461118246927760, -0.904482444920119420, -0.904503769332104970, -0.904525091482831000, -0.904546411372244450, -0.904567729000291700, +-0.904589044366920110, -0.904610357472075520, -0.904631668315705070, -0.904652976897755370, -0.904674283218173670, -0.904695587276905910, -0.904716889073899130, -0.904738188609100160, +-0.904759485882455690, -0.904780780893912450, -0.904802073643417360, -0.904823364130917020, -0.904844652356358360, -0.904865938319687980, -0.904887222020852810, -0.904908503459799560, +-0.904929782636475390, -0.904951059550826440, -0.904972334202799770, -0.904993606592342740, -0.905014876719401280, -0.905036144583922560, -0.905057410185853620, -0.905078673525141040, +-0.905099934601731770, -0.905121193415572730, -0.905142449966610640, -0.905163704254792530, -0.905184956280065120, -0.905206206042375230, -0.905227453541669890, -0.905248698777896380, +-0.905269941751000620, -0.905291182460929990, -0.905312420907631530, -0.905333657091052290, -0.905354891011138640, -0.905376122667837620, -0.905397352061096390, -0.905418579190861770, +-0.905439804057080690, -0.905461026659700070, -0.905482246998666970, -0.905503465073928200, -0.905524680885430700, -0.905545894433121610, -0.905567105716948100, -0.905588314736856410, +-0.905609521492794060, -0.905630725984707840, -0.905651928212545140, -0.905673128176252230, -0.905694325875776580, -0.905715521311065140, -0.905736714482064830, -0.905757905388722690, +-0.905779094030985890, -0.905800280408801230, -0.905821464522115980, -0.905842646370877080, -0.905863825955031450, -0.905885003274526810, -0.905906178329309090, -0.905927351119326100, +-0.905948521644524550, -0.905969689904852160, -0.905990855900255190, -0.906012019630681120, -0.906033181096076890, -0.906054340296389870, -0.906075497231566880, -0.906096651901555190, +-0.906117804306301840, -0.906138954445753990, -0.906160102319858660, -0.906181247928563250, -0.906202391271814570, -0.906223532349560320, -0.906244671161746900, -0.906265807708321880, +-0.906286941989232650, -0.906308074004425590, -0.906329203753848510, -0.906350331237448350, -0.906371456455172360, -0.906392579406967710, -0.906413700092781550, -0.906434818512561250, +-0.906455934666253850, -0.906477048553806620, -0.906498160175166820, -0.906519269530281610, -0.906540376619098590, -0.906561481441564230, -0.906582583997626150, -0.906603684287231700, +-0.906624782310328280, -0.906645878066862590, -0.906666971556782220, -0.906688062780034440, -0.906709151736566520, -0.906730238426325720, -0.906751322849259190, -0.906772405005314530, +-0.906793484894438780, -0.906814562516579330, -0.906835637871683420, -0.906856710959698780, -0.906877781780572100, -0.906898850334250880, -0.906919916620682610, -0.906940980639814880, +-0.906962042391594280, -0.906983101875968640, -0.907004159092885230, -0.907025214042291420, -0.907046266724134460, -0.907067317138361970, -0.907088365284921210, -0.907109411163759430, +-0.907130454774824240, -0.907151496118062780, -0.907172535193423110, -0.907193572000851600, -0.907214606540296180, -0.907235638811704330, -0.907256668815023650, -0.907277696550200960, +-0.907298722017184090, -0.907319745215920290, -0.907340766146357280, -0.907361784808442320, -0.907382801202122780, -0.907403815327346370, -0.907424827184060370, -0.907445836772212240, +-0.907466844091749600, -0.907487849142619820, -0.907508851924770820, -0.907529852438149320, -0.907550850682703140, -0.907571846658380200, -0.907592840365127330, -0.907613831802892350, +-0.907634820971622740, -0.907655807871266100, -0.907676792501770020, -0.907697774863081900, -0.907718754955149310, -0.907739732777919860, -0.907760708331341040, -0.907781681615360550, +-0.907802652629925770, -0.907823621374984730, -0.907844587850484270, -0.907865552056372320, -0.907886513992596570, -0.907907473659104850, -0.907928431055844090, -0.907949386182762330, +-0.907970339039806950, -0.907991289626925880, -0.908012237944066490, -0.908033183991176500, -0.908054127768203600, -0.908075069275095290, -0.908096008511799390, -0.908116945478263490, +-0.908137880174435530, -0.908158812600262540, -0.908179742755692470, -0.908200670640673110, -0.908221596255152420, -0.908242519599077420, -0.908263440672396060, -0.908284359475056040, +-0.908305276007005170, -0.908326190268191170, -0.908347102258561630, -0.908368011978064380, -0.908388919426647120, -0.908409824604257450, -0.908430727510843310, -0.908451628146352720, +-0.908472526510732630, -0.908493422603931290, -0.908514316425896420, -0.908535207976576050, -0.908556097255917350, -0.908576984263868350, -0.908597869000376870, -0.908618751465390840, +-0.908639631658857860, -0.908660509580725750, -0.908681385230942440, -0.908702258609455640, -0.908723129716213160, -0.908743998551162950, -0.908764865114252700, -0.908785729405430560, +-0.908806591424643820, -0.908827451171840610, -0.908848308646969080, -0.908869163849976510, -0.908890016780810940, -0.908910867439420400, -0.908931715825752610, -0.908952561939755600, +-0.908973405781377200, -0.908994247350565220, -0.909015086647267600, -0.909035923671432380, -0.909056758423007260, -0.909077590901940290, -0.909098421108179620, -0.909119249041672630, +-0.909140074702367570, -0.909160898090212170, -0.909181719205155000, -0.909202538047143130, -0.909223354616124910, -0.909244168912048290, -0.909264980934861300, -0.909285790684511760, +-0.909306598160947830, -0.909327403364117440, -0.909348206293968400, -0.909369006950448980, -0.909389805333507330, -0.909410601443090830, -0.909431395279147850, -0.909452186841626430, +-0.909472976130474400, -0.909493763145640010, -0.909514547887071530, -0.909535330354716450, -0.909556110548522920, -0.909576888468439090, -0.909597664114413120, -0.909618437486393040, +-0.909639208584326790, -0.909659977408162510, -0.909680743957848260, -0.909701508233332510, -0.909722270234562760, -0.909743029961487260, -0.909763787414054060, -0.909784542592211530, +-0.909805295495907610, -0.909826046125090880, -0.909846794479708620, -0.909867540559709310, -0.909888284365041210, -0.909909025895652370, -0.909929765151491040, -0.909950502132505280, +-0.909971236838643230, -0.909991969269853040, -0.910012699426082980, -0.910033427307281540, -0.910054152913396200, -0.910074876244375440, -0.910095597300167420, -0.910116316080720520, +-0.910137032585983220, -0.910157746815902890, -0.910178458770428130, -0.910199168449507320, -0.910219875853088610, -0.910240580981120150, -0.910261283833550320, -0.910281984410327150, +-0.910302682711399140, -0.910323378736714320, -0.910344072486221510, -0.910364763959868100, -0.910385453157602890, -0.910406140079373930, -0.910426824725129590, -0.910447507094818250, +-0.910468187188388510, -0.910488865005787960, -0.910509540546965200, -0.910530213811868610, -0.910550884800446550, -0.910571553512647180, -0.910592219948418990, -0.910612884107710130, +-0.910633545990469200, -0.910654205596644670, -0.910674862926184380, -0.910695517979036810, -0.910716170755150540, -0.910736821254473750, -0.910757469476955020, -0.910778115422542940, +-0.910798759091185130, -0.910819400482830500, -0.910840039597427430, -0.910860676434924190, -0.910881310995269140, -0.910901943278411010, -0.910922573284297930, -0.910943201012878400, +-0.910963826464101230, -0.910984449637914250, -0.911005070534266050, -0.911025689153105110, -0.911046305494380040, -0.911066919558039200, -0.911087531344031420, -0.911108140852304400, +-0.911128748082807080, -0.911149353035487830, -0.911169955710295240, -0.911190556107177810, -0.911211154226084010, -0.911231750066962220, -0.911252343629761040, -0.911272934914429070, +-0.911293523920915120, -0.911314110649167010, -0.911334695099133670, -0.911355277270763490, -0.911375857164005150, -0.911396434778807500, -0.911417010115118440, -0.911437583172886920, +-0.911458153952061310, -0.911478722452590430, -0.911499288674422650, -0.911519852617506680, -0.911540414281791110, -0.911560973667224550, -0.911581530773755480, -0.911602085601332930, +-0.911622638149904850, -0.911643188419420160, -0.911663736409827450, -0.911684282121075440, -0.911704825553112720, -0.911725366705888330, -0.911745905579350200, -0.911766442173447270, +-0.911786976488128120, -0.911807508523341690, -0.911828038279036360, -0.911848565755161040, -0.911869090951664240, -0.911889613868494760, -0.911910134505601540, -0.911930652862932730, +-0.911951168940437150, -0.911971682738063730, -0.911992194255761170, -0.912012703493477960, -0.912033210451163480, -0.912053715128765650, -0.912074217526233410, -0.912094717643515680, +-0.912115215480561180, -0.912135711037318610, -0.912156204313736780, -0.912176695309764420, -0.912197184025350330, -0.912217670460443660, -0.912238154614992360, -0.912258636488945780, +-0.912279116082252540, -0.912299593394861550, -0.912320068426721640, -0.912340541177781850, -0.912361011647990330, -0.912381479837296340, -0.912401945745648590, -0.912422409372996010, +-0.912442870719287420, -0.912463329784471530, -0.912483786568497490, -0.912504241071313890, -0.912524693292869670, -0.912545143233114200, -0.912565590891995400, -0.912586036269462660, +-0.912606479365464800, -0.912626920179950730, -0.912647358712869840, -0.912667794964170050, -0.912688228933800860, -0.912708660621711080, -0.912729090027849630, -0.912749517152165460, +-0.912769941994607480, -0.912790364555124630, -0.912810784833665960, -0.912831202830180270, -0.912851618544616940, -0.912872031976924240, -0.912892443127051310, -0.912912851994947430, +-0.912933258580561400, -0.912953662883842500, -0.912974064904739200, -0.912994464643200660, -0.913014862099176040, -0.913035257272614140, -0.913055650163464130, -0.913076040771675030, +-0.913096429097195910, -0.913116815139975560, -0.913137198899963250, -0.913157580377108370, -0.913177959571359050, -0.913198336482664910, -0.913218711110974860, -0.913239083456238170, +-0.913259453518403650, -0.913279821297420910, -0.913300186793238210, -0.913320550005805030, -0.913340910935070530, -0.913361269580983740, -0.913381625943493810, -0.913401980022549800, +-0.913422331818100840, -0.913442681330095980, -0.913463028558484820, -0.913483373503215730, -0.913503716164238200, -0.913524056541501480, -0.913544394634954520, -0.913564730444546560, +-0.913585063970227210, -0.913605395211944730, -0.913625724169648820, -0.913646050843288650, -0.913666375232813240, -0.913686697338171980, -0.913707017159314020, -0.913727334696188390, +-0.913747649948744580, -0.913767962916931850, -0.913788273600698920, -0.913808581999995370, -0.913828888114770250, -0.913849191944972940, -0.913869493490552690, -0.913889792751459100, +-0.913910089727640540, -0.913930384419046840, -0.913950676825627250, -0.913970966947330820, -0.913991254784107030, -0.914011540335905150, -0.914031823602674430, -0.914052104584364030, +-0.914072383280923550, -0.914092659692302360, -0.914112933818449160, -0.914133205659313660, -0.914153475214845020, -0.914173742484992840, -0.914194007469706580, -0.914214270168935080, +-0.914234530582627710, -0.914254788710734180, -0.914275044553203630, -0.914295298109985440, -0.914315549381028990, -0.914335798366283650, -0.914356045065698900, -0.914376289479224000, +-0.914396531606808670, -0.914416771448401720, -0.914437009003952860, -0.914457244273411460, -0.914477477256727010, -0.914497707953848770, -0.914517936364726670, -0.914538162489309300, +-0.914558386327546600, -0.914578607879387940, -0.914598827144782690, -0.914619044123680450, -0.914639258816030480, -0.914659471221782480, -0.914679681340885730, -0.914699889173290260, +-0.914720094718944550, -0.914740297977798660, -0.914760498949802050, -0.914780697634904220, -0.914800894033054650, -0.914821088144203150, -0.914841279968298560, -0.914861469505290790, +-0.914881656755129340, -0.914901841717763790, -0.914922024393143630, -0.914942204781218350, -0.914962382881937650, -0.914982558695250910, -0.915002732221108170, -0.915022903459458250, +-0.915043072410251070, -0.915063239073436120, -0.915083403448963220, -0.915103565536781740, -0.915123725336841720, -0.915143882849091980, -0.915164038073482570, -0.915184191009963070, +-0.915204341658483080, -0.915224490018992200, -0.915244636091440130, -0.915264779875776480, -0.915284921371950940, -0.915305060579913010, -0.915325197499612830, -0.915345332130999220, +-0.915365464474022340, -0.915385594528631770, -0.915405722294777350, -0.915425847772408870, -0.915445970961475400, -0.915466091861926960, -0.915486210473713370, -0.915506326796784230, +-0.915526440831089360, -0.915546552576578240, -0.915566662033200810, -0.915586769200906760, -0.915606874079645690, -0.915626976669367880, -0.915647076970022230, -0.915667174981558920, +-0.915687270703927750, -0.915707364137078210, -0.915727455280960450, -0.915747544135524280, -0.915767630700718980, -0.915787714976494470, -0.915807796962800790, -0.915827876659587650, +-0.915847954066804750, -0.915868029184401910, -0.915888102012329060, -0.915908172550535920, -0.915928240798972840, -0.915948306757588650, -0.915968370426333720, -0.915988431805157880, +-0.916008490894011040, -0.916028547692842920, -0.916048602201603780, -0.916068654420242770, -0.916088704348710040, -0.916108751986955740, -0.916128797334929360, -0.916148840392581150, +-0.916168881159860730, -0.916188919636718110, -0.916208955823103240, -0.916228989718966380, -0.916249021324256670, -0.916269050638924390, -0.916289077662919450, -0.916309102396191790, +-0.916329124838691440, -0.916349144990368570, -0.916369162851172540, -0.916389178421053610, -0.916409191699961710, -0.916429202687846890, -0.916449211384658960, -0.916469217790348070, +-0.916489221904864150, -0.916509223728157130, -0.916529223260177050, -0.916549220500874280, -0.916569215450198090, -0.916589208108098850, -0.916609198474526710, -0.916629186549431480, +-0.916649172332763660, -0.916669155824472500, -0.916689137024508490, -0.916709115932821560, -0.916729092549361970, -0.916749066874079640, -0.916769038906924520, -0.916789008647846960, +-0.916808976096796790, -0.916828941253724160, -0.916848904118579560, -0.916868864691312350, -0.916888822971873020, -0.916908778960211500, -0.916928732656278170, -0.916948684060022940, +-0.916968633171396430, -0.916988579990347890, -0.917008524516827910, -0.917028466750786640, -0.917048406692174240, -0.917068344340940870, -0.917088279697036550, -0.917108212760411550, +-0.917128143531016020, -0.917148072008800440, -0.917167998193714420, -0.917187922085708320, -0.917207843684732400, -0.917227762990736940, -0.917247680003672070, -0.917267594723488290, +-0.917287507150135300, -0.917307417283563460, -0.917327325123723060, -0.917347230670564340, -0.917367133924037570, -0.917387034884093010, -0.917406933550680810, -0.917426829923751240, +-0.917446724003255000, -0.917466615789141570, -0.917486505281361660, -0.917506392479865430, -0.917526277384603240, -0.917546159995525360, -0.917566040312582490, -0.917585918335724000, +-0.917605794064900840, -0.917625667500063250, -0.917645538641161380, -0.917665407488145730, -0.917685274040966450, -0.917705138299574120, -0.917725000263918900, -0.917744859933951160, +-0.917764717309621610, -0.917784572390879960, -0.917804425177676910, -0.917824275669962720, -0.917844123867687880, -0.917863969770803090, -0.917883813379257950, -0.917903654693003390, +-0.917923493711989560, -0.917943330436167160, -0.917963164865486240, -0.917982996999897600, -0.918002826839351300, -0.918022654383798040, -0.918042479633188190, -0.918062302587472350, +-0.918082123246600550, -0.918101941610523280, -0.918121757679191350, -0.918141571452554820, -0.918161382930564480, -0.918181192113171060, -0.918200999000324260, -0.918220803591975000, +-0.918240605888073660, -0.918260405888570830, -0.918280203593417000, -0.918299999002562650, -0.918319792115958380, -0.918339582933554550, -0.918359371455302110, -0.918379157681150970, +-0.918398941611051840, -0.918418723244955440, -0.918438502582812120, -0.918458279624572600, -0.918478054370187810, -0.918497826819607450, -0.918517596972782570, -0.918537364829663640, +-0.918557130390201370, -0.918576893654346140, -0.918596654622048760, -0.918616413293259830, -0.918636169667929710, -0.918655923746009680, -0.918675675527449330, -0.918695425012199920, +-0.918715172200211930, -0.918734917091435950, -0.918754659685822710, -0.918774399983323110, -0.918794137983887320, -0.918813873687466030, -0.918833607094010070, -0.918853338203470150, +-0.918873067015796850, -0.918892793530940890, -0.918912517748852960, -0.918932239669483790, -0.918951959292783950, -0.918971676618704600, -0.918991391647195680, -0.919011104378208210, +-0.919030814811693130, -0.919050522947600920, -0.919070228785882740, -0.919089932326488720, -0.919109633569369810, -0.919129332514476820, -0.919149029161760440, -0.919168723511171630, +-0.919188415562660950, -0.919208105316179140, -0.919227792771677210, -0.919247477929105660, -0.919267160788415860, -0.919286841349557850, -0.919306519612482660, -0.919326195577141130, +-0.919345869243484160, -0.919365540611462580, -0.919385209681027440, -0.919404876452128870, -0.919424540924718260, -0.919444203098746190, -0.919463862974163600, -0.919483520550921420, +-0.919503175828970340, -0.919522828808261420, -0.919542479488745350, -0.919562127870373500, -0.919581773953095930, -0.919601417736863990, -0.919621059221628400, -0.919640698407340310, +-0.919660335293950300, -0.919679969881409990, -0.919699602169669280, -0.919719232158679570, -0.919738859848391770, -0.919758485238756920, -0.919778108329725730, -0.919797729121249350, +-0.919817347613278710, -0.919836963805764520, -0.919856577698658470, -0.919876189291910510, -0.919895798585472100, -0.919915405579294190, -0.919935010273327690, -0.919954612667523760, +-0.919974212761833670, -0.919993810556207660, -0.920013406050597120, -0.920032999244953080, -0.920052590139226470, -0.920072178733368440, -0.920091765027330030, -0.920111349021062170, +-0.920130930714515900, -0.920150510107642260, -0.920170087200392840, -0.920189661992717680, -0.920209234484568480, -0.920228804675896180, -0.920248372566651820, -0.920267938156786980, +-0.920287501446251820, -0.920307062434998050, -0.920326621122976470, -0.920346177510138470, -0.920365731596434870, -0.920385283381817130, -0.920404832866236090, -0.920424380049642890, +-0.920443924931988900, -0.920463467513225280, -0.920483007793302720, -0.920502545772172720, -0.920522081449786310, -0.920541614826094650, -0.920561145901048980, -0.920580674674600810, +-0.920600201146700490, -0.920619725317299850, -0.920639247186349710, -0.920658766753801650, -0.920678284019606500, -0.920697798983715730, -0.920717311646080510, -0.920736822006651860, +-0.920756330065381600, -0.920775835822220220, -0.920795339277119210, -0.920814840430029810, -0.920834339280903300, -0.920853835829691050, -0.920873330076344420, -0.920892822020814240, +-0.920912311663051870, -0.920931799003008810, -0.920951284040636310, -0.920970766775885520, -0.920990247208707810, -0.921009725339054450, -0.921029201166876810, -0.921048674692126590, +-0.921068145914754280, -0.921087614834711580, -0.921107081451949860, -0.921126545766420500, -0.921146007778074650, -0.921165467486864230, -0.921184924892739730, -0.921204379995652970, +-0.921223832795555200, -0.921243283292397910, -0.921262731486132360, -0.921282177376710030, -0.921301620964082300, -0.921321062248200430, -0.921340501229015900, -0.921359937906480520, +-0.921379372280544890, -0.921398804351160950, -0.921418234118279940, -0.921437661581853250, -0.921457086741832800, -0.921476509598169400, -0.921495930150814550, -0.921515348399720050, +-0.921534764344837050, -0.921554177986117160, -0.921573589323511850, -0.921592998356972610, -0.921612405086450810, -0.921631809511898050, -0.921651211633266020, -0.921670611450505660, +-0.921690008963568790, -0.921709404172406880, -0.921728797076971530, -0.921748187677214110, -0.921767575973086560, -0.921786961964539800, -0.921806345651525530, -0.921825727033995460, +-0.921845106111901070, -0.921864482885193960, -0.921883857353825610, -0.921903229517747610, -0.921922599376911460, -0.921941966931269290, -0.921961332180771810, -0.921980695125370950, +-0.922000055765018420, -0.922019414099665700, -0.922038770129264500, -0.922058123853766620, -0.922077475273123230, -0.922096824387286020, -0.922116171196206810, -0.922135515699837200, +-0.922154857898128680, -0.922174197791033160, -0.922193535378502130, -0.922212870660487180, -0.922232203636940470, -0.922251534307812810, -0.922270862673056360, -0.922290188732622810, +-0.922309512486463760, -0.922328833934530910, -0.922348153076776310, -0.922367469913150990, -0.922386784443607110, -0.922406096668096140, -0.922425406586569910, -0.922444714198980220, +-0.922464019505278790, -0.922483322505417200, -0.922502623199347390, -0.922521921587021070, -0.922541217668390150, -0.922560511443405900, -0.922579802912020460, -0.922599092074185330, +-0.922618378929852660, -0.922637663478974250, -0.922656945721501360, -0.922676225657386160, -0.922695503286580450, -0.922714778609035840, -0.922734051624704340, -0.922753322333537800, +-0.922772590735487790, -0.922791856830506460, -0.922811120618545420, -0.922830382099556920, -0.922849641273492120, -0.922868898140303150, -0.922888152699942070, -0.922907404952360570, +-0.922926654897510470, -0.922945902535344140, -0.922965147865812740, -0.922984390888868410, -0.923003631604463080, -0.923022870012548790, -0.923042106113077240, -0.923061339906000480, +-0.923080571391270310, -0.923099800568838780, -0.923119027438658040, -0.923138252000679340, -0.923157474254855060, -0.923176694201137130, -0.923195911839477470, -0.923215127169828010, +-0.923234340192141010, -0.923253550906367850, -0.923272759312460890, -0.923291965410371950, -0.923311169200053180, -0.923330370681456400, -0.923349569854533760, -0.923368766719237070, +-0.923387961275518590, -0.923407153523330470, -0.923426343462624200, -0.923445531093352030, -0.923464716415466010, -0.923483899428918290, -0.923503080133660780, -0.923522258529645870, +-0.923541434616825030, -0.923560608395150530, -0.923579779864574620, -0.923598949025049130, -0.923618115876526310, -0.923637280418958320, -0.923656442652296960, -0.923675602576494610, +-0.923694760191503210, -0.923713915497275220, -0.923733068493762130, -0.923752219180916430, -0.923771367558690050, -0.923790513627035350, -0.923809657385904700, -0.923828798835249490, +-0.923847937975022400, -0.923867074805175380, -0.923886209325660680, -0.923905341536430560, -0.923924471437436940, -0.923943599028632210, -0.923962724309968510, -0.923981847281397980, +-0.924000967942873120, -0.924020086294345510, -0.924039202335767750, -0.924058316067091990, -0.924077427488270380, -0.924096536599255500, -0.924115643399999080, -0.924134747890453470, +-0.924153850070570940, -0.924172949940303860, -0.924192047499604370, -0.924211142748424860, -0.924230235686717360, -0.924249326314434350, -0.924268414631527980, -0.924287500637950950, +-0.924306584333654760, -0.924325665718592200, -0.924344744792715440, -0.924363821555976850, -0.924382896008328570, -0.924401968149723530, -0.924421037980113210, -0.924440105499450330, +-0.924459170707687020, -0.924478233604775990, -0.924497294190669280, -0.924516352465319270, -0.924535408428678540, -0.924554462080699140, -0.924573513421333980, -0.924592562450534670, +-0.924611609168254020, -0.924630653574444290, -0.924649695669057970, -0.924668735452047420, -0.924687772923365350, -0.924706808082963460, -0.924725840930794570, -0.924744871466811170, +-0.924763899690965510, -0.924782925603210070, -0.924801949203497340, -0.924820970491779800, -0.924839989468009720, -0.924859006132139780, -0.924878020484122600, -0.924897032523910090, +-0.924916042251454960, -0.924935049666709700, -0.924954054769626890, -0.924973057560159240, -0.924992058038258570, -0.925011056203877800, -0.925030052056969310, -0.925049045597485800, +-0.925068036825379640, -0.925087025740603420, -0.925106012343109520, -0.925124996632850750, -0.925143978609779370, -0.925162958273848420, -0.925181935625009720, -0.925200910663216190, +-0.925219883388420430, -0.925238853800574910, -0.925257821899632570, -0.925276787685545440, -0.925295751158266230, -0.925314712317747650, -0.925333671163942380, -0.925352627696802930, +-0.925371581916281770, -0.925390533822331830, -0.925409483414905480, -0.925428430693955310, -0.925447375659434580, -0.925466318311295000, -0.925485258649489610, -0.925504196673971100, +-0.925523132384692080, -0.925542065781605250, -0.925560996864663530, -0.925579925633819080, -0.925598852089024700, -0.925617776230233340, -0.925636698057397460, -0.925655617570469770, +-0.925674534769403090, -0.925693449654150120, -0.925712362224663470, -0.925731272480896260, -0.925750180422800550, -0.925769086050329370, -0.925787989363435540, -0.925806890362071640, +-0.925825789046190620, -0.925844685415745380, -0.925863579470688090, -0.925882471210971890, -0.925901360636549490, -0.925920247747373690, -0.925939132543397330, -0.925958015024573090, +-0.925976895190853800, -0.925995773042192270, -0.926014648578541650, -0.926033521799854100, -0.926052392706082750, -0.926071261297180430, -0.926090127573099830, -0.926108991533794110, +-0.926127853179216090, -0.926146712509318130, -0.926165569524053380, -0.926184424223374770, -0.926203276607235120, -0.926222126675587230, -0.926240974428383930, -0.926259819865578370, +-0.926278662987123140, -0.926297503792971270, -0.926316342283076020, -0.926335178457389550, -0.926354012315865120, -0.926372843858455750, -0.926391673085114160, -0.926410499995793830, +-0.926429324590446800, -0.926448146869026550, -0.926466966831485880, -0.926485784477777740, -0.926504599807855270, -0.926523412821671170, -0.926542223519178700, -0.926561031900330570, +-0.926579837965079810, -0.926598641713379800, -0.926617443145182910, -0.926636242260442500, -0.926655039059111290, -0.926673833541142630, -0.926692625706489360, -0.926711415555104830, +-0.926730203086941430, -0.926748988301952510, -0.926767771200091130, -0.926786551781310310, -0.926805330045563200, -0.926824105992802630, -0.926842879622981840, -0.926861650936053880, +-0.926880419931972120, -0.926899186610689040, -0.926917950972157900, -0.926936713016331960, -0.926955472743164140, -0.926974230152607710, -0.926992985244616040, -0.927011738019141500, +-0.927030488476137670, -0.927049236615557600, -0.927067982437354440, -0.927086725941481340, -0.927105467127891440, -0.927124205996537890, -0.927142942547373840, -0.927161676780352660, +-0.927180408695427060, -0.927199138292550410, -0.927217865571675850, -0.927236590532756640, -0.927255313175746050, -0.927274033500597450, -0.927292751507263420, -0.927311467195697570, +-0.927330180565852920, -0.927348891617682970, -0.927367600351140740, -0.927386306766179500, -0.927405010862752510, -0.927423712640812910, -0.927442412100314080, -0.927461109241209610, +-0.927479804063451980, -0.927498496566994790, -0.927517186751791510, -0.927535874617795190, -0.927554560164959520, -0.927573243393236990, -0.927591924302581530, -0.927610602892946170, +-0.927629279164284280, -0.927647953116549240, -0.927666624749694300, -0.927685294063672840, -0.927703961058438110, -0.927722625733943480, -0.927741288090142670, -0.927759948126988250, +-0.927778605844433950, -0.927797261242433220, -0.927815914320939240, -0.927834565079905470, -0.927853213519285740, -0.927871859639032510, -0.927890503439099730, -0.927909144919440650, +-0.927927784080008640, -0.927946420920757300, -0.927965055441639870, -0.927983687642609740, -0.928002317523620390, -0.928020945084625630, -0.928039570325578160, -0.928058193246431800, +-0.928076813847139910, -0.928095432127655990, -0.928114048087933520, -0.928132661727926300, -0.928151273047587040, -0.928169882046869570, -0.928188488725727460, -0.928207093084113980, +-0.928225695121982940, -0.928244294839287610, -0.928262892235981460, -0.928281487312018210, -0.928300080067351540, -0.928318670501934280, -0.928337258615720360, -0.928355844408663370, +-0.928374427880716670, -0.928393009031833970, -0.928411587861969090, -0.928430164371074840, -0.928448738559105150, -0.928467310426013710, -0.928485879971754020, -0.928504447196279560, +-0.928523012099544020, -0.928541574681500890, -0.928560134942103880, -0.928578692881306460, -0.928597248499062670, -0.928615801795325440, -0.928634352770048800, -0.928652901423186130, +-0.928671447754691240, -0.928689991764518160, -0.928708533452619720, -0.928727072818949950, -0.928745609863462440, -0.928764144586110900, -0.928782676986849020, -0.928801207065630520, +-0.928819734822408980, -0.928838260257138000, -0.928856783369771510, -0.928875304160263320, -0.928893822628566570, -0.928912338774635190, -0.928930852598423010, -0.928949364099883710, +-0.928967873278971010, -0.928986380135638940, -0.929004884669840660, -0.929023386881530080, -0.929041886770661020, -0.929060384337187290, -0.929078879581062610, -0.929097372502240670, +-0.929115863100675400, -0.929134351376320390, -0.929152837329129790, -0.929171320959056860, -0.929189802266055630, -0.929208281250079820, -0.929226757911083330, -0.929245232249020000, +-0.929263704263843860, -0.929282173955508160, -0.929300641323967060, -0.929319106369174360, -0.929337569091083780, -0.929356029489649350, -0.929374487564824880, -0.929392943316564190, +-0.929411396744821090, -0.929429847849549850, -0.929448296630703720, -0.929466743088236740, -0.929485187222102940, -0.929503629032256140, -0.929522068518650380, -0.929540505681239690, +-0.929558940519977450, -0.929577373034817800, -0.929595803225714780, -0.929614231092622200, -0.929632656635494100, -0.929651079854284300, -0.929669500748946830, -0.929687919319435620, +-0.929706335565704590, -0.929724749487708110, -0.929743161085399340, -0.929761570358732750, -0.929779977307662150, -0.929798381932141700, -0.929816784232125550, -0.929835184207567170, +-0.929853581858420820, -0.929871977184640430, -0.929890370186180150, -0.929908760862994010, -0.929927149215035830, -0.929945535242259870, -0.929963918944620050, -0.929982300322070520, +-0.930000679374565430, -0.930019056102058370, -0.930037430504503710, -0.930055802581855500, -0.930074172334067640, -0.930092539761094520, -0.930110904862890280, -0.930129267639408400, +-0.930147628090603470, -0.930165986216429430, -0.930184342016840420, -0.930202695491790470, -0.930221046641233950, -0.930239395465124690, -0.930257741963416930, -0.930276086136065160, +-0.930294427983022980, -0.930312767504244520, -0.930331104699684270, -0.930349439569296280, -0.930367772113034670, -0.930386102330853950, -0.930404430222707580, -0.930422755788550160, +-0.930441079028335950, -0.930459399942018980, -0.930477718529553410, -0.930496034790893710, -0.930514348725993810, -0.930532660334808080, -0.930550969617291000, -0.930569276573396280, +-0.930587581203078270, -0.930605883506291250, -0.930624183482989590, -0.930642481133127530, -0.930660776456659570, -0.930679069453539290, -0.930697360123721280, -0.930715648467160040, +-0.930733934483809590, -0.930752218173624300, -0.930770499536558440, -0.930788778572566370, -0.930807055281602350, -0.930825329663620640, -0.930843601718575940, -0.930861871446421960, +-0.930880138847113290, -0.930898403920604300, -0.930916666666849250, -0.930934927085802940, -0.930953185177418870, -0.930971440941651960, -0.930989694378456360, -0.931007945487786540, +-0.931026194269596870, -0.931044440723841740, -0.931062684850475500, -0.931080926649452520, -0.931099166120727180, -0.931117403264254300, -0.931135638079987670, -0.931153870567881790, +-0.931172100727891360, -0.931190328559970640, -0.931208554064074100, -0.931226777240156460, -0.931244998088171520, -0.931263216608074210, -0.931281432799818790, -0.931299646663359740, +-0.931317858198651650, -0.931336067405648890, -0.931354274284305950, -0.931372478834577410, -0.931390681056417870, -0.931408880949781360, -0.931427078514622700, -0.931445273750896250, +-0.931463466658556620, -0.931481657237558380, -0.931499845487856360, -0.931518031409404370, -0.931536215002157220, -0.931554396266069620, -0.931572575201095930, -0.931590751807190980, +-0.931608926084309010, -0.931627098032404730, -0.931645267651432740, -0.931663434941347960, -0.931681599902104200, -0.931699762533656380, -0.931717922835959220, -0.931736080808967300, +-0.931754236452635110, -0.931772389766917670, -0.931790540751768930, -0.931808689407143900, -0.931826835732997070, -0.931844979729283150, -0.931863121395956840, -0.931881260732972730, +-0.931899397740285410, -0.931917532417849580, -0.931935664765620060, -0.931953794783551560, -0.931971922471598320, -0.931990047829715170, -0.932008170857857030, -0.932026291555978380, +-0.932044409924034370, -0.932062525961979030, -0.932080639669767290, -0.932098751047354070, -0.932116860094693860, -0.932134966811741570, -0.932153071198451810, -0.932171173254779490, +-0.932189272980679110, -0.932207370376105570, -0.932225465441013920, -0.932243558175358310, -0.932261648579093880, -0.932279736652175230, -0.932297822394557270, -0.932315905806194720, +-0.932333986887042830, -0.932352065637055530, -0.932370142056188070, -0.932388216144395380, -0.932406287901632050, -0.932424357327853000, -0.932442424423013060, -0.932460489187067140, +-0.932478551619969950, -0.932496611721676640, -0.932514669492141570, -0.932532724931319780, -0.932550778039166190, -0.932568828815635630, -0.932586877260683010, -0.932604923374263480, +-0.932622967156331420, -0.932641008606841850, -0.932659047725749810, -0.932677084513010120, -0.932695118968577710, -0.932713151092407600, -0.932731180884454500, -0.932749208344673560, +-0.932767233473019820, -0.932785256269447640, -0.932803276733912390, -0.932821294866369000, -0.932839310666772280, -0.932857324135077380, -0.932875335271239450, -0.932893344075212850, +-0.932911350546952840, -0.932929354686414470, -0.932947356493552760, -0.932965355968322640, -0.932983353110679150, -0.933001347920577320, -0.933019340397972070, -0.933037330542818450, +-0.933055318355071830, -0.933073303834686560, -0.933091286981618140, -0.933109267795821370, -0.933127246277251520, -0.933145222425863840, -0.933163196241612810, -0.933181167724453810, +-0.933199136874341860, -0.933217103691232010, -0.933235068175079510, -0.933253030325839280, -0.933270990143466480, -0.933288947627916140, -0.933306902779143520, -0.933324855597103990, +-0.933342806081751910, -0.933360754233042880, -0.933378700050931930, -0.933396643535374220, -0.933414584686324990, -0.933432523503739510, -0.933450459987572480, -0.933468394137779270, +-0.933486325954315020, -0.933504255437135000, -0.933522182586194350, -0.933540107401448220, -0.933558029882851860, -0.933575950030360420, -0.933593867843929390, -0.933611783323513470, +-0.933629696469068020, -0.933647607280548300, -0.933665515757909570, -0.933683421901107090, -0.933701325710096340, -0.933719227184832020, -0.933737126325269510, -0.933755023131364270, +-0.933772917603071460, -0.933790809740346450, -0.933808699543144270, -0.933826587011420410, -0.933844472145130110, -0.933862354944228870, -0.933880235408671490, -0.933898113538413450, +-0.933915989333410130, -0.933933862793616900, -0.933951733918989000, -0.933969602709482150, -0.933987469165050820, -0.934005333285650940, -0.934023195071237660, -0.934041054521766450, +-0.934058911637192570, -0.934076766417471390, -0.934094618862558290, -0.934112468972408740, -0.934130316746977880, -0.934148162186221650, -0.934166005290094640, -0.934183846058552650, +-0.934201684491551050, -0.934219520589045230, -0.934237354350990980, -0.934255185777342900, -0.934273014868056920, -0.934290841623088510, -0.934308666042392820, -0.934326488125925560, +-0.934344307873642090, -0.934362125285497780, -0.934379940361448220, -0.934397753101448790, -0.934415563505455290, -0.934433371573422540, -0.934451177305306470, -0.934468980701062320, +-0.934486781760645810, -0.934504580484012300, -0.934522376871117610, -0.934540170921916770, -0.934557962636365480, -0.934575752014419230, -0.934593539056033600, -0.934611323761164180, +-0.934629106129766460, -0.934646886161795920, -0.934664663857208140, -0.934682439215959060, -0.934700212238003590, -0.934717982923297550, -0.934735751271796640, -0.934753517283456240, +-0.934771280958232030, -0.934789042296080060, -0.934806801296955040, -0.934824557960813100, -0.934842312287609720, -0.934860064277300620, -0.934877813929841370, -0.934895561245187470, +-0.934913306223294830, -0.934931048864118820, -0.934948789167615480, -0.934966527133739840, -0.934984262762447950, -0.935001996053695380, -0.935019727007437850, -0.935037455623630940, +-0.935055181902230800, -0.935072905843192360, -0.935090627446471530, -0.935108346712024250, -0.935126063639806100, -0.935143778229772790, -0.935161490481880020, -0.935179200396083490, +-0.935196907972339010, -0.935214613210602290, -0.935232316110829240, -0.935250016672975250, -0.935267714896996120, -0.935285410782847660, -0.935303104330485690, -0.935320795539866360, +-0.935338484410944690, -0.935356170943676730, -0.935373855138018410, -0.935391536993925520, -0.935409216511353670, -0.935426893690258780, -0.935444568530596770, -0.935462241032323230, +-0.935479911195394090, -0.935497579019765600, -0.935515244505392700, -0.935532907652231850, -0.935550568460238540, -0.935568226929368920, -0.935585883059579130, -0.935603536850824200, +-0.935621188303060400, -0.935638837416243760, -0.935656484190329870, -0.935674128625274880, -0.935691770721034600, -0.935709410477564840, -0.935727047894821530, -0.935744682972760590, +-0.935762315711338280, -0.935779946110509850, -0.935797574170231570, -0.935815199890459470, -0.935832823271149250, -0.935850444312256950, -0.935868063013738930, -0.935885679375550340, +-0.935903293397647660, -0.935920905079986710, -0.935938514422523400, -0.935956121425214000, -0.935973726088014100, -0.935991328410880060, -0.936008928393767590, -0.936026526036633170, +-0.936044121339432040, -0.936061714302120600, -0.936079304924654960, -0.936096893206991080, -0.936114479149084850, -0.936132062750892890, -0.936149644012370330, -0.936167222933473650, +-0.936184799514159010, -0.936202373754382310, -0.936219945654099720, -0.936237515213267260, -0.936255082431840970, -0.936272647309777000, -0.936290209847031710, -0.936307770043560580, +-0.936325327899320100, -0.936342883414266190, -0.936360436588355110, -0.936377987421542990, -0.936395535913786210, -0.936413082065040260, -0.936430625875261490, -0.936448167344406280, +-0.936465706472430660, -0.936483243259290780, -0.936500777704942670, -0.936518309809342700, -0.936535839572447020, -0.936553366994211660, -0.936570892074593210, -0.936588414813547270, +-0.936605935211030190, -0.936623453266998360, -0.936640968981407810, -0.936658482354215230, -0.936675993385376100, -0.936693502074847030, -0.936711008422584150, -0.936728512428543820, +-0.936746014092682100, -0.936763513414955450, -0.936781010395319910, -0.936798505033731970, -0.936815997330147640, -0.936833487284523760, -0.936850974896815790, -0.936868460166980330, +-0.936885943094973750, -0.936903423680752300, -0.936920901924272350, -0.936938377825490500, -0.936955851384362330, -0.936973322600844430, -0.936990791474893390, -0.937008258006465260, +-0.937025722195516500, -0.937043184042003490, -0.937060643545882480, -0.937078100707109840, -0.937095555525642390, -0.937113008001435600, -0.937130458134446290, -0.937147905924630930, +-0.937165351371945790, -0.937182794476347230, -0.937200235237791950, -0.937217673656235870, -0.937235109731635490, -0.937252543463947490, -0.937269974853128020, -0.937287403899133560, +-0.937304830601920710, -0.937322254961445720, -0.937339676977665180, -0.937357096650535680, -0.937374513980013150, -0.937391928966054390, -0.937409341608615660, -0.937426751907653680, +-0.937444159863124790, -0.937461565474985830, -0.937478968743192700, -0.937496369667702110, -0.937513768248470550, -0.937531164485454590, -0.937548558378610730, -0.937565949927895440, +-0.937583339133265300, -0.937600725994676810, -0.937618110512086540, -0.937635492685451320, -0.937652872514727060, -0.937670249999870480, -0.937687625140838370, -0.937704997937587210, +-0.937722368390073950, -0.937739736498254260, -0.937757102262085420, -0.937774465681523670, -0.937791826756525840, -0.937809185487048500, -0.937826541873048150, -0.937843895914481360, +-0.937861247611304850, -0.937878596963475310, -0.937895943970949550, -0.937913288633683620, -0.937930630951634430, -0.937947970924758680, -0.937965308553013080, -0.937982643836354100, +-0.937999976774738900, -0.938017307368123390, -0.938034635616464720, -0.938051961519719370, -0.938069285077844040, -0.938086606290795650, -0.938103925158530690, -0.938121241681005860, +-0.938138555858177960, -0.938155867690004030, -0.938173177176440110, -0.938190484317443230, -0.938207789112970090, -0.938225091562977510, -0.938242391667422290, -0.938259689426261260, +-0.938276984839450770, -0.938294277906947860, -0.938311568628709130, -0.938328857004691600, -0.938346143034851870, -0.938363426719146850, -0.938380708057533150, -0.938397987049967800, +-0.938415263696407710, -0.938432537996809150, -0.938449809951129250, -0.938467079559324850, -0.938484346821352730, -0.938501611737169840, -0.938518874306733090, -0.938536134529998960, +-0.938553392406924370, -0.938570647937466360, -0.938587901121581750, -0.938605151959227450, -0.938622400450360160, -0.938639646594936930, -0.938656890392914560, -0.938674131844249970, +-0.938691370948900320, -0.938708607706821960, -0.938725842117972160, -0.938743074182307620, -0.938760303899785490, -0.938777531270362900, -0.938794756293996110, -0.938811978970642500, +-0.938829199300258880, -0.938846417282802380, -0.938863632918229720, -0.938880846206498030, -0.938898057147564140, -0.938915265741385170, -0.938932471987918070, -0.938949675887120080, +-0.938966877438947580, -0.938984076643357920, -0.939001273500308040, -0.939018468009754970, -0.939035660171655740, -0.939052849985967720, -0.939070037452647170, -0.939087222571651560, +-0.939104405342937930, -0.939121585766463210, -0.939138763842184640, -0.939155939570059050, -0.939173112950043690, -0.939190283982095480, -0.939207452666171890, -0.939224619002229420, +-0.939241782990225320, -0.939258944630116830, -0.939276103921861010, -0.939293260865414870, -0.939310415460735900, -0.939327567707780590, -0.939344717606506290, -0.939361865156870260, +-0.939379010358829540, -0.939396153212341380, -0.939413293717362710, -0.939430431873850890, -0.939447567681762960, -0.939464701141056400, -0.939481832251687800, -0.939498961013614630, +-0.939516087426794040, -0.939533211491183300, -0.939550333206739420, -0.939567452573420110, -0.939584569591181860, -0.939601684259982140, -0.939618796579778200, -0.939635906550527310, +-0.939653014172186610, -0.939670119444713460, -0.939687222368064900, -0.939704322942198300, -0.939721421167071020, -0.939738517042640330, -0.939755610568863140, -0.939772701745696940, +-0.939789790573098860, -0.939806877051026390, -0.939823961179437120, -0.939841042958287520, -0.939858122387535300, -0.939875199467137820, -0.939892274197052350, -0.939909346577236240, +-0.939926416607646640, -0.939943484288241150, -0.939960549618976900, -0.939977612599811160, -0.939994673230701850, -0.940011731511605440, -0.940028787442479750, -0.940045841023282150, +-0.940062892253969880, -0.940079941134500330, -0.940096987664831300, -0.940114031844919480, -0.940131073674722590, -0.940148113154198000, -0.940165150283303160, -0.940182185061995470, +-0.940199217490232280, -0.940216247567970950, -0.940233275295169090, -0.940250300671784390, -0.940267323697773550, -0.940284344373094490, -0.940301362697704480, -0.940318378671561090, +-0.940335392294621820, -0.940352403566844350, -0.940369412488185510, -0.940386419058603210, -0.940403423278054820, -0.940420425146497820, -0.940437424663889800, -0.940454421830188240, +-0.940471416645350610, -0.940488409109334510, -0.940505399222097640, -0.940522386983596910, -0.940539372393790260, -0.940556355452635160, -0.940573336160089200, -0.940590314516109970, +-0.940607290520655170, -0.940624264173681830, -0.940641235475147890, -0.940658204425010800, -0.940675171023228170, -0.940692135269757700, -0.940709097164556860, -0.940726056707583250, +-0.940743013898794560, -0.940759968738148270, -0.940776921225602410, -0.940793871361113920, -0.940810819144640710, -0.940827764576140590, -0.940844707655570930, -0.940861648382889770, +-0.940878586758054360, -0.940895522781022290, -0.940912456451751590, -0.940929387770199630, -0.940946316736324230, -0.940963243350083080, -0.940980167611433770, -0.940997089520334010, +-0.941014009076741600, -0.941030926280614470, -0.941047841131909650, -0.941064753630585280, -0.941081663776599080, -0.941098571569908620, -0.941115477010471820, -0.941132380098246620, +-0.941149280833190050, -0.941166179215260360, -0.941183075244415250, -0.941199968920612420, -0.941216860243809680, -0.941233749213964850, -0.941250635831035520, -0.941267520094979710, +-0.941284402005755360, -0.941301281563319710, -0.941318158767630810, -0.941335033618646570, -0.941351906116324690, -0.941368776260623100, -0.941385644051499830, -0.941402509488912240, +-0.941419372572818270, -0.941436233303175940, -0.941453091679942950, -0.941469947703077240, -0.941486801372536710, -0.941503652688279180, -0.941520501650262460, -0.941537348258444930, +-0.941554192512783610, -0.941571034413236750, -0.941587873959762400, -0.941604711152318360, -0.941621545990862560, -0.941638378475353140, -0.941655208605747470, -0.941672036382003810, +-0.941688861804080070, -0.941705684871934180, -0.941722505585524060, -0.941739323944807750, -0.941756139949743050, -0.941772953600288010, -0.941789764896400540, -0.941806573838039010, +-0.941823380425160780, -0.941840184657724010, -0.941856986535686840, -0.941873786059007180, -0.941890583227643410, -0.941907378041552890, -0.941924170500693880, -0.941940960605024410, +-0.941957748354502520, -0.941974533749086350, -0.941991316788733820, -0.942008097473402970, -0.942024875803051940, -0.942041651777638660, -0.942058425397121480, -0.942075196661458110, +-0.942091965570606590, -0.942108732124525280, -0.942125496323172110, -0.942142258166505100, -0.942159017654482840, -0.942175774787062710, -0.942192529564203190, -0.942209281985862290, +-0.942226032051998170, -0.942242779762568980, -0.942259525117532970, -0.942276268116847950, -0.942293008760472390, -0.942309747048364570, -0.942326482980482050, -0.942343216556783440, +-0.942359947777226650, -0.942376676641770050, -0.942393403150371790, -0.942410127302990230, -0.942426849099583190, -0.942443568540108910, -0.942460285624525770, -0.942477000352791920, +-0.942493712724865480, -0.942510422740704850, -0.942527130400268140, -0.942543835703513630, -0.942560538650399790, -0.942577239240884320, -0.942593937474925700, -0.942610633352482300, +-0.942627326873512250, -0.942644018037974040, -0.942660706845825920, -0.942677393297025820, -0.942694077391532210, -0.942710759129303360, -0.942727438510297720, -0.942744115534473350, +-0.942760790201788820, -0.942777462512202290, -0.942794132465672010, -0.942810800062156450, -0.942827465301614210, -0.942844128184003090, -0.942860788709281470, -0.942877446877408040, +-0.942894102688340950, -0.942910756142038790, -0.942927407238459580, -0.942944055977561810, -0.942960702359303850, -0.942977346383644170, -0.942993988050541130, -0.943010627359953110, +-0.943027264311838590, -0.943043898906155810, -0.943060531142863370, -0.943077161021919850, -0.943093788543283180, -0.943110413706911950, -0.943127036512764750, -0.943143656960799940, +-0.943160275050975990, -0.943176890783251620, -0.943193504157584740, -0.943210115173934160, -0.943226723832258250, -0.943243330132515490, -0.943259934074664460, -0.943276535658663650, +-0.943293134884471420, -0.943309731752046350, -0.943326326261347270, -0.943342918412332090, -0.943359508204959510, -0.943376095639188340, -0.943392680714976840, -0.943409263432283600, +-0.943425843791067530, -0.943442421791286570, -0.943458997432899520, -0.943475570715864960, -0.943492141640141500, -0.943508710205687720, -0.943525276412462200, -0.943541840260423430, +-0.943558401749530100, -0.943574960879741020, -0.943591517651014230, -0.943608072063308660, -0.943624624116582880, -0.943641173810795600, -0.943657721145905400, -0.943674266121871110, +-0.943690808738650970, -0.943707348996203680, -0.943723886894488160, -0.943740422433462790, -0.943756955613086370, -0.943773486433317710, -0.943790014894115180, -0.943806540995437700, +-0.943823064737243870, -0.943839586119492590, -0.943856105142142130, -0.943872621805151300, -0.943889136108479020, -0.943905648052083880, -0.943922157635924910, -0.943938664859960250, +-0.943955169724148950, -0.943971672228449690, -0.943988172372821290, -0.944004670157222450, -0.944021165581611870, -0.944037658645948460, -0.944054149350190830, -0.944070637694297890, +-0.944087123678228670, -0.944103607301941320, -0.944120088565394870, -0.944136567468548350, -0.944153044011360240, -0.944169518193789690, -0.944185990015795510, -0.944202459477336160, +-0.944218926578370590, -0.944235391318857700, -0.944251853698756420, -0.944268313718025440, -0.944284771376623590, -0.944301226674510000, -0.944317679611643260, -0.944334130187982510, +-0.944350578403486240, -0.944367024258113590, -0.944383467751823250, -0.944399908884574370, -0.944416347656325540, -0.944432784067036350, -0.944449218116664710, -0.944465649805170120, +-0.944482079132511480, -0.944498506098647490, -0.944514930703537310, -0.944531352947139860, -0.944547772829413930, -0.944564190350318580, -0.944580605509813150, -0.944597018307855810, +-0.944613428744405900, -0.944629836819422470, -0.944646242532864440, -0.944662645884690840, -0.944679046874860930, -0.944695445503333060, -0.944711841770066620, -0.944728235675020510, +-0.944744627218153890, -0.944761016399425670, -0.944777403218794890, -0.944793787676220580, -0.944810169771661880, -0.944826549505077720, -0.944842926876427460, -0.944859301885669580, +-0.944875674532763440, -0.944892044817668200, -0.944908412740342760, -0.944924778300746620, -0.944941141498838230, -0.944957502334576980, -0.944973860807922010, -0.944990216918832340, +-0.945006570667267120, -0.945022922053185500, -0.945039271076546620, -0.945055617737309510, -0.945071962035433310, -0.945088303970877620, -0.945104643543600800, -0.945120980753562430, +-0.945137315600721560, -0.945153648085037320, -0.945169978206469420, -0.945186305964976210, -0.945202631360517190, -0.945218954393051590, -0.945235275062538680, -0.945251593368937600, +-0.945267909312207390, -0.945284222892307510, -0.945300534109197120, -0.945316842962835360, -0.945333149453181700, -0.945349453580194950, -0.945365755343834600, -0.945382054744059790, +-0.945398351780829870, -0.945414646454104110, -0.945430938763841990, -0.945447228710002200, -0.945463516292544330, -0.945479801511427740, -0.945496084366611590, -0.945512364858055230, +-0.945528642985718040, -0.945544918749559150, -0.945561192149538040, -0.945577463185614200, -0.945593731857746420, -0.945609998165894310, -0.945626262110017210, -0.945642523690074400, +-0.945658782906025340, -0.945675039757829630, -0.945691294245445960, -0.945707546368834140, -0.945723796127953430, -0.945740043522763200, -0.945756288553222800, -0.945772531219291720, +-0.945788771520929440, -0.945805009458095090, -0.945821245030748270, -0.945837478238848560, -0.945853709082355000, -0.945869937561227060, -0.945886163675424330, -0.945902387424906180, +-0.945918608809632300, -0.945934827829561620, -0.945951044484653950, -0.945967258774868650, -0.945983470700165200, -0.945999680260502960, -0.946015887455841640, -0.946032092286140600, +-0.946048294751359320, -0.946064494851457270, -0.946080692586394270, -0.946096887956129230, -0.946113080960622080, -0.946129271599832070, -0.946145459873719010, -0.946161645782242490, +-0.946177829325361650, -0.946194010503036200, -0.946210189315225710, -0.946226365761889790, -0.946242539842988010, -0.946258711558479740, -0.946274880908324790, -0.946291047892482640, +-0.946307212510912770, -0.946323374763575310, -0.946339534650428970, -0.946355692171433890, -0.946371847326549550, -0.946388000115735650, -0.946404150538951660, -0.946420298596157620, +-0.946436444287312550, -0.946452587612376380, -0.946468728571308700, -0.946484867164069210, -0.946501003390617600, -0.946517137250913470, -0.946533268744916390, -0.946549397872586300, +-0.946565524633882880, -0.946581649028765400, -0.946597771057193890, -0.946613890719127830, -0.946630008014527120, -0.946646122943351380, -0.946662235505560500, -0.946678345701113870, +-0.946694453529971390, -0.946710558992092670, -0.946726662087437610, -0.946742762815965920, -0.946758861177637300, -0.946774957172411560, -0.946791050800248390, -0.946807142061107940, +-0.946823230954949250, -0.946839317481732560, -0.946855401641417570, -0.946871483433963990, -0.946887562859331840, -0.946903639917480940, -0.946919714608370770, -0.946935786931961230, +-0.946951856888212260, -0.946967924477083670, -0.946983989698535140, -0.947000052552526840, -0.947016113039018230, -0.947032171157969450, -0.947048226909340210, -0.947064280293090640, +-0.947080331309180120, -0.947096379957568790, -0.947112426238216560, -0.947128470151083150, -0.947144511696128900, -0.947160550873313080, -0.947176587682595940, -0.947192622123937290, +-0.947208654197297050, -0.947224683902635260, -0.947240711239911600, -0.947256736209086350, -0.947272758810119190, -0.947288779042970040, -0.947304796907599390, -0.947320812403966370, +-0.947336825532031360, -0.947352836291754150, -0.947368844683095010, -0.947384850706013750, -0.947400854360470610, -0.947416855646424970, -0.947432854563837300, -0.947448851112667410, +-0.947464845292875450, -0.947480837104421440, -0.947496826547265190, -0.947512813621366970, -0.947528798326686680, -0.947544780663184700, -0.947560760630820510, -0.947576738229554460, +-0.947592713459346480, -0.947608686320156710, -0.947624656811945300, -0.947640624934672380, -0.947656590688297770, -0.947672554072781610, -0.947688515088084050, -0.947704473734165330, +-0.947720430010985270, -0.947736383918504230, -0.947752335456682140, -0.947768284625479350, -0.947784231424856020, -0.947800175854771830, -0.947816117915187270, -0.947832057606062370, +-0.947847994927357380, -0.947863929879032340, -0.947879862461047720, -0.947895792673363210, -0.947911720515939300, -0.947927645988736020, -0.947943569091713620, -0.947959489824832250, +-0.947975408188052260, -0.947991324181333690, -0.948007237804636800, -0.948023149057921840, -0.948039057941149290, -0.948054964454278840, -0.948070868597270850, -0.948086770370085820, +-0.948102669772683870, -0.948118566805025490, -0.948134461467070370, -0.948150353758779100, -0.948166243680112040, -0.948182131231029230, -0.948198016411491260, -0.948213899221458160, +-0.948229779660890280, -0.948245657729748000, -0.948261533427991580, -0.948277406755581590, -0.948293277712477730, -0.948309146298640830, -0.948325012514031010, -0.948340876358608640, +-0.948356737832333980, -0.948372596935167960, -0.948388453667070030, -0.948404308028000910, -0.948420160017921180, -0.948436009636790980, -0.948451856884570680, -0.948467701761220860, +-0.948483544266701670, -0.948499384400973700, -0.948515222163997640, -0.948531057555733080, -0.948546890576140940, -0.948562721225181590, -0.948578549502815390, -0.948594375409002820, +-0.948610198943704690, -0.948626020106880690, -0.948641838898491630, -0.948657655318497990, -0.948673469366860260, -0.948689281043538780, -0.948705090348494150, -0.948720897281686850, +-0.948736701843077230, -0.948752504032626120, -0.948768303850293540, -0.948784101296040180, -0.948799896369826530, -0.948815689071613180, -0.948831479401360590, -0.948847267359029580, +-0.948863052944580070, -0.948878836157972970, -0.948894616999168770, -0.948910395468128050, -0.948926171564811400, -0.948941945289179190, -0.948957716641192220, -0.948973485620810960, +-0.948989252227995910, -0.949005016462708070, -0.949020778324907390, -0.949036537814554770, -0.949052294931610810, -0.949068049676036090, -0.949083802047791520, -0.949099552046837160, +-0.949115299673134020, -0.949131044926642460, -0.949146787807323420, -0.949162528315137370, -0.949178266450044990, -0.949194002212007000, -0.949209735600983980, -0.949225466616936630, +-0.949241195259825870, -0.949256921529611830, -0.949272645426255450, -0.949288366949717520, -0.949304086099958640, -0.949319802876939620, -0.949335517280621270, -0.949351229310963940, +-0.949366938967928450, -0.949382646251475730, -0.949398351161566230, -0.949414053698161010, -0.949429753861220640, -0.949445451650705820, -0.949461147066577360, -0.949476840108796290, +-0.949492530777322870, -0.949508219072118240, -0.949523904993142990, -0.949539588540357920, -0.949555269713723840, -0.949570948513202010, -0.949586624938752450, -0.949602298990336320, +-0.949617970667914420, -0.949633639971447670, -0.949649306900896770, -0.949664971456222640, -0.949680633637386080, -0.949696293444347920, -0.949711950877069280, -0.949727605935510530, +-0.949743258619632710, -0.949758908929396740, -0.949774556864763640, -0.949790202425694010, -0.949805845612149200, -0.949821486424089480, -0.949837124861475980, -0.949852760924269730, +-0.949868394612431670, -0.949884025925922470, -0.949899654864703290, -0.949915281428734940, -0.949930905617978440, -0.949946527432394610, -0.949962146871944800, -0.949977763936589280, +-0.949993378626289410, -0.950008990941006100, -0.950024600880700290, -0.950040208445333210, -0.950055813634865350, -0.950071416449258080, -0.950087016888472080, -0.950102614952468620, +-0.950118210641208720, -0.950133803954653190, -0.950149394892763180, -0.950164983455499600, -0.950180569642823600, -0.950196153454696550, -0.950211734891078800, -0.950227313951931610, +-0.950242890637216230, -0.950258464946893590, -0.950274036880924820, -0.950289606439271180, -0.950305173621893370, -0.950320738428752530, -0.950336300859809800, -0.950351860915026440, +-0.950367418594363360, -0.950382973897781700, -0.950398526825242620, -0.950414077376707240, -0.950429625552136950, -0.950445171351492310, -0.950460714774734820, -0.950476255821825490, +-0.950491794492725470, -0.950507330787396020, -0.950522864705798500, -0.950538396247893490, -0.950553925413642590, -0.950569452203006810, -0.950584976615947430, -0.950600498652425570, +-0.950616018312402500, -0.950631535595839460, -0.950647050502697490, -0.950662563032938170, -0.950678073186522090, -0.950693580963410940, -0.950709086363565880, -0.950724589386948040, +-0.950740090033518670, -0.950755588303239360, -0.950771084196070930, -0.950786577711974720, -0.950802068850912010, -0.950817557612844140, -0.950833043997732500, -0.950848528005538100, +-0.950864009636222420, -0.950879488889746720, -0.950894965766072350, -0.950910440265160810, -0.950925912386972880, -0.950941382131470170, -0.950956849498614030, -0.950972314488365720, +-0.950987777100686940, -0.951003237335538490, -0.951018695192881850, -0.951034150672678600, -0.951049603774889900, -0.951065054499477090, -0.951080502846401780, -0.951095948815625200, +-0.951111392407108620, -0.951126833620813740, -0.951142272456701910, -0.951157708914734170, -0.951173142994872210, -0.951188574697077290, -0.951204004021311000, -0.951219430967534700, +-0.951234855535710190, -0.951250277725798070, -0.951265697537760360, -0.951281114971558430, -0.951296530027153750, -0.951311942704507580, -0.951327353003581730, -0.951342760924337450, +-0.951358166466736210, -0.951373569630739820, -0.951388970416309320, -0.951404368823406290, -0.951419764851992420, -0.951435158502029090, -0.951450549773477980, -0.951465938666300690, +-0.951481325180458250, -0.951496709315912460, -0.951512091072625020, -0.951527470450557190, -0.951542847449670880, -0.951558222069927350, -0.951573594311288180, -0.951588964173715190, +-0.951604331657169960, -0.951619696761613620, -0.951635059487008110, -0.951650419833314890, -0.951665777800495660, -0.951681133388512010, -0.951696486597325750, -0.951711837426898020, +-0.951727185877190630, -0.951742531948165380, -0.951757875639783760, -0.951773216952007450, -0.951788555884798050, -0.951803892438117360, -0.951819226611926860, -0.951834558406188360, +-0.951849887820863660, -0.951865214855914020, -0.951880539511301250, -0.951895861786987260, -0.951911181682933540, -0.951926499199102220, -0.951941814335454330, -0.951957127091951900, +-0.951972437468556640, -0.951987745465230240, -0.952003051081934610, -0.952018354318631240, -0.952033655175282050, -0.952048953651848720, -0.952064249748292960, -0.952079543464576790, +-0.952094834800661590, -0.952110123756509270, -0.952125410332081650, -0.952140694527340510, -0.952155976342247690, -0.952171255776765090, -0.952186532830854190, -0.952201807504476920, +-0.952217079797595070, -0.952232349710170570, -0.952247617242165220, -0.952262882393540840, -0.952278145164259130, -0.952293405554282210, -0.952308663563571910, -0.952323919192089810, +-0.952339172439797820, -0.952354423306657980, -0.952369671792631990, -0.952384917897681870, -0.952400161621769660, -0.952415402964856940, -0.952430641926905520, -0.952445878507877650, +-0.952461112707735040, -0.952476344526439590, -0.952491573963953340, -0.952506801020238100, -0.952522025695255900, -0.952537247988968880, -0.952552467901338520, -0.952567685432326950, +-0.952582900581896210, -0.952598113350008100, -0.952613323736624880, -0.952628531741708470, -0.952643737365220570, -0.952658940607123310, -0.952674141467378610, -0.952689339945948620, +-0.952704536042795260, -0.952719729757880550, -0.952734921091166640, -0.952750110042615340, -0.952765296612188670, -0.952780480799849120, -0.952795662605558150, -0.952810842029277900, +-0.952826019070970640, -0.952841193730598280, -0.952856366008123290, -0.952871535903507040, -0.952886703416712000, -0.952901868547700200, -0.952917031296433680, -0.952932191662874570, +-0.952947349646985020, -0.952962505248727050, -0.952977658468062930, -0.952992809304954560, -0.953007957759364420, -0.953023103831254210, -0.953038247520586190, -0.953053388827322600, +-0.953068527751425480, -0.953083664292857070, -0.953098798451579740, -0.953113930227555190, -0.953129059620745790, -0.953144186631113670, -0.953159311258621190, -0.953174433503230390, +-0.953189553364903520, -0.953204670843602720, -0.953219785939290350, -0.953234898651928670, -0.953250008981479490, -0.953265116927905390, -0.953280222491168390, -0.953295325671230880, +-0.953310426468055080, -0.953325524881603380, -0.953340620911837690, -0.953355714558720480, -0.953370805822213900, -0.953385894702280300, -0.953400981198882060, -0.953416065311981310, +-0.953431147041540420, -0.953446226387521630, -0.953461303349887550, -0.953476377928599960, -0.953491450123621350, -0.953506519934914200, -0.953521587362440750, -0.953536652406163250, +-0.953551715066044530, -0.953566775342046150, -0.953581833234130820, -0.953596888742261010, -0.953611941866398860, -0.953626992606506960, -0.953642040962547450, -0.953657086934482920, +-0.953672130522275730, -0.953687171725888130, -0.953702210545282920, -0.953717246980421820, -0.953732281031267730, -0.953747312697782900, -0.953762341979929710, -0.953777368877670950, +-0.953792393390968550, -0.953807415519785210, -0.953822435264083280, -0.953837452623825240, -0.953852467598973570, -0.953867480189490750, -0.953882490395339230, -0.953897498216481510, +-0.953912503652880050, -0.953927506704497550, -0.953942507371296040, -0.953957505653238220, -0.953972501550286680, -0.953987495062403880, -0.954002486189552410, -0.954017474931694860, +-0.954032461288793490, -0.954047445260810870, -0.954062426847709700, -0.954077406049452350, -0.954092382866001620, -0.954107357297319880, -0.954122329343369710, -0.954137299004113810, +-0.954152266279514880, -0.954167231169534950, -0.954182193674137040, -0.954197153793283630, -0.954212111526937300, -0.954227066875060650, -0.954242019837616700, -0.954256970414567360, +-0.954271918605875680, -0.954286864411504120, -0.954301807831415490, -0.954316748865572270, -0.954331687513937150, -0.954346623776472840, -0.954361557653142010, -0.954376489143907490, +-0.954391418248731530, -0.954406344967577040, -0.954421269300406610, -0.954436191247183040, -0.954451110807869040, -0.954466027982427520, -0.954480942770820630, -0.954495855173011390, +-0.954510765188962500, -0.954525672818636760, -0.954540578061996770, -0.954555480919005330, -0.954570381389625240, -0.954585279473819210, -0.954600175171549940, -0.954615068482780550, +-0.954629959407473190, -0.954644847945590900, -0.954659734097096480, -0.954674617861952730, -0.954689499240122810, -0.954704378231568730, -0.954719254836253750, -0.954734129054140680, +-0.954749000885192320, -0.954763870329371380, -0.954778737386640760, -0.954793602056963290, -0.954808464340301870, -0.954823324236619310, -0.954838181745878640, -0.954853036868042240, +-0.954867889603073340, -0.954882739950934640, -0.954897587911589070, -0.954912433484999880, -0.954927276671129310, -0.954942117469940510, -0.954956955881396400, -0.954971791905460000, +-0.954986625542094010, -0.955001456791261580, -0.955016285652925400, -0.955031112127048500, -0.955045936213593900, -0.955060757912524650, -0.955075577223803320, -0.955090394147393050, +-0.955105208683256770, -0.955120020831357390, -0.955134830591658050, -0.955149637964121890, -0.955164442948711280, -0.955179245545389690, -0.955194045754119920, -0.955208843574865020, +-0.955223639007588000, -0.955238432052252010, -0.955253222708819850, -0.955268010977254560, -0.955282796857519600, -0.955297580349577350, -0.955312361453391160, -0.955327140168924060, +-0.955341916496139200, -0.955356690434999490, -0.955371461985468300, -0.955386231147508090, -0.955400997921082460, -0.955415762306154330, -0.955430524302686710, -0.955445283910642760, +-0.955460041129985730, -0.955474795960678520, -0.955489548402684300, -0.955504298455966520, -0.955519046120487660, -0.955533791396211200, -0.955548534283100380, -0.955563274781118130, +-0.955578012890227700, -0.955592748610392450, -0.955607481941575190, -0.955622212883739160, -0.955636941436847520, -0.955651667600863620, -0.955666391375750490, -0.955681112761471500, +-0.955695831757989670, -0.955710548365268250, -0.955725262583270400, -0.955739974411959680, -0.955754683851298800, -0.955769390901251240, -0.955784095561780120, -0.955798797832848820, +-0.955813497714420810, -0.955828195206458790, -0.955842890308926220, -0.955857583021786470, -0.955872273345002690, -0.955886961278538340, -0.955901646822356570, -0.955916329976420620, +-0.955931010740693870, -0.955945689115139550, -0.955960365099721380, -0.955975038694401920, -0.955989709899145000, -0.956004378713913640, -0.956019045138671420, -0.956033709173381600, +-0.956048370818007750, -0.956063030072512700, -0.956077686936860130, -0.956092341411013290, -0.956106993494935660, -0.956121643188590500, -0.956136290491941150, -0.956150935404951220, +-0.956165577927583830, -0.956180218059802800, -0.956194855801571040, -0.956209491152852030, -0.956224124113609350, -0.956238754683806370, -0.956253382863406440, -0.956268008652373380, +-0.956282632050669990, -0.956297253058260080, -0.956311871675107010, -0.956326487901174250, -0.956341101736425280, -0.956355713180823570, -0.956370322234332600, -0.956384928896915730, +-0.956399533168536880, -0.956414135049158840, -0.956428734538745550, -0.956443331637260470, -0.956457926344666980, -0.956472518660928750, -0.956487108586009380, -0.956501696119872010, +-0.956516281262480450, -0.956530864013798170, -0.956545444373788630, -0.956560022342415660, -0.956574597919642500, -0.956589171105432850, -0.956603741899750390, -0.956618310302558510, +-0.956632876313820990, -0.956647439933501210, -0.956662001161562750, -0.956676559997969300, -0.956691116442684340, -0.956705670495672010, -0.956720222156895120, -0.956734771426317800, +-0.956749318303903530, -0.956763862789615890, -0.956778404883418590, -0.956792944585275310, -0.956807481895149750, -0.956822016813005380, -0.956836549338806020, -0.956851079472515460, +-0.956865607214096970, -0.956880132563514560, -0.956894655520731720, -0.956909176085712350, -0.956923694258419940, -0.956938210038818630, -0.956952723426871430, -0.956967234422542500, +-0.956981743025795420, -0.956996249236594100, -0.957010753054902020, -0.957025254480683210, -0.957039753513901140, -0.957054250154519730, -0.957068744402502890, -0.957083236257814000, +-0.957097725720417070, -0.957112212790275700, -0.957126697467353900, -0.957141179751615280, -0.957155659643024070, -0.957170137141543420, -0.957184612247137360, -0.957199084959769800, +-0.957213555279404550, -0.957228023206005420, -0.957242488739536210, -0.957256951879960740, -0.957271412627243020, -0.957285870981346880, -0.957300326942235880, -0.957314780509874060, +-0.957329231684225230, -0.957343680465253420, -0.957358126852922320, -0.957372570847196290, -0.957387012448038480, -0.957401451655413130, -0.957415888469284160, -0.957430322889615490, +-0.957444754916370930, -0.957459184549514620, -0.957473611789010250, -0.957488036634821850, -0.957502459086913450, -0.957516879145249080, -0.957531296809792320, -0.957545712080507210, +-0.957560124957357870, -0.957574535440308240, -0.957588943529322560, -0.957603349224364190, -0.957617752525397490, -0.957632153432386390, -0.957646551945295020, -0.957660948064087080, +-0.957675341788726930, -0.957689733119178380, -0.957704122055405450, -0.957718508597372180, -0.957732892745043030, -0.957747274498381260, -0.957761653857351350, -0.957776030821917310, +-0.957790405392043300, -0.957804777567693110, -0.957819147348831330, -0.957833514735421440, -0.957847879727427690, -0.957862242324814210, -0.957876602527545250, -0.957890960335584740, +-0.957905315748896810, -0.957919668767445610, -0.957934019391195160, -0.957948367620110040, -0.957962713454153620, -0.957977056893290490, -0.957991397937484780, -0.958005736586700410, +-0.958020072840901850, -0.958034406700053240, -0.958048738164118510, -0.958063067233061780, -0.958077393906847540, -0.958091718185439700, -0.958106040068802620, -0.958120359556900340, +-0.958134676649697310, -0.958148991347157470, -0.958163303649245510, -0.958177613555924900, -0.958191921067160330, -0.958206226182916070, -0.958220528903156120, -0.958234829227844860, +-0.958249127156946770, -0.958263422690425640, -0.958277715828245950, -0.958292006570371950, -0.958306294916767890, -0.958320580867398240, -0.958334864422227040, -0.958349145581218640, +-0.958363424344337410, -0.958377700711547710, -0.958391974682813900, -0.958406246258099890, -0.958420515437370390, -0.958434782220589530, -0.958449046607721680, -0.958463308598731520, +-0.958477568193582760, -0.958491825392240090, -0.958506080194667990, -0.958520332600830580, -0.958534582610692350, -0.958548830224217660, -0.958563075441370870, -0.958577318262116450, +-0.958591558686418770, -0.958605796714242290, -0.958620032345551150, -0.958634265580309950, -0.958648496418483150, -0.958662724860035010, -0.958676950904930100, -0.958691174553133020, +-0.958705395804607790, -0.958719614659319100, -0.958733831117231320, -0.958748045178309030, -0.958762256842516590, -0.958776466109818480, -0.958790672980179170, -0.958804877453563240, +-0.958819079529935390, -0.958833279209259540, -0.958847476491500590, -0.958861671376622820, -0.958875863864590890, -0.958890053955369410, -0.958904241648922960, -0.958918426945215670, +-0.958932609844212360, -0.958946790345877380, -0.958960968450175530, -0.958975144157071300, -0.958989317466529160, -0.959003488378513680, -0.959017656892989570, -0.959031823009921510, +-0.959045986729273660, -0.959060148051010810, -0.959074306975097660, -0.959088463501498680, -0.959102617630178570, -0.959116769361102240, -0.959130918694233610, -0.959145065629537720, +-0.959159210166979250, -0.959173352306522680, -0.959187492048132690, -0.959201629391774000, -0.959215764337411290, -0.959229896885009150, -0.959244027034532270, -0.959258154785945560, +-0.959272280139213170, -0.959286403094300130, -0.959300523651171020, -0.959314641809790650, -0.959328757570123920, -0.959342870932135110, -0.959356981895789110, -0.959371090461050620, +-0.959385196627884350, -0.959399300396255090, -0.959413401766127660, -0.959427500737466740, -0.959441597310237040, -0.959455691484403240, -0.959469783259930600, -0.959483872636783250, +-0.959497959614926120, -0.959512044194324120, -0.959526126374942060, -0.959540206156744620, -0.959554283539696960, -0.959568358523763320, -0.959582431108908840, -0.959596501295098210, +-0.959610569082296360, -0.959624634470468090, -0.959638697459578300, -0.959652758049591710, -0.959666816240473230, -0.959680872032187880, -0.959694925424700140, -0.959708976417975150, +-0.959723025011977700, -0.959737071206672620, -0.959751115002024920, -0.959765156397999640, -0.959779195394561360, -0.959793231991674880, -0.959807266189305450, -0.959821297987417890, +-0.959835327385976990, -0.959849354384947780, -0.959863378984295300, -0.959877401183984240, -0.959891420983979950, -0.959905438384246910, -0.959919453384750270, -0.959933465985454930, +-0.959947476186326030, -0.959961483987328280, -0.959975489388427250, -0.959989492389587080, -0.960003492990773370, -0.960017491191950790, -0.960031486993084490, -0.960045480394139510, +-0.960059471395080850, -0.960073459995873460, -0.960087446196482450, -0.960101429996872760, -0.960115411397009840, -0.960129390396858070, -0.960143366996382920, -0.960157341195549300, +-0.960171312994322350, -0.960185282392667320, -0.960199249390548790, -0.960213213987932250, -0.960227176184782590, -0.960241135981064970, -0.960255093376744640, -0.960269048371786500, +-0.960283000966155710, -0.960296951159817500, -0.960310898952736800, -0.960324844344879190, -0.960338787336209250, -0.960352727926692240, -0.960366666116293400, -0.960380601904977980, +-0.960394535292711020, -0.960408466279457970, -0.960422394865183550, -0.960436321049853100, -0.960450244833431890, -0.960464166215885040, -0.960478085197177700, -0.960492001777275230, +-0.960505915956142760, -0.960519827733745560, -0.960533737110048860, -0.960547644085017690, -0.960561548658617430, -0.960575450830813300, -0.960589350601570470, -0.960603247970854280, +-0.960617142938630320, -0.960631035504863060, -0.960644925669518420, -0.960658813432561320, -0.960672698793957220, -0.960686581753671390, -0.960700462311669170, -0.960714340467915710, +-0.960728216222376470, -0.960742089575016830, -0.960755960525801810, -0.960769829074696880, -0.960783695221667290, -0.960797558966678510, -0.960811420309695910, -0.960825279250684950, +-0.960839135789610550, -0.960852989926438310, -0.960866841661133560, -0.960880690993661690, -0.960894537923988160, -0.960908382452078320, -0.960922224577897440, -0.960936064301410990, +-0.960949901622584420, -0.960963736541383340, -0.960977569057772760, -0.960991399171718160, -0.961005226883185020, -0.961019052192138900, -0.961032875098545400, -0.961046695602369440, +-0.961060513703576700, -0.961074329402132670, -0.961088142698002910, -0.961101953591152690, -0.961115762081547700, -0.961129568169153180, -0.961143371853934840, -0.961157173135858020, +-0.961170972014888550, -0.961184768490991330, -0.961198562564132280, -0.961212354234276760, -0.961226143501390350, -0.961239930365438640, -0.961253714826387330, -0.961267496884201430, +-0.961281276538846870, -0.961295053790289120, -0.961308828638493650, -0.961322601083426150, -0.961336371125052210, -0.961350138763337300, -0.961363903998247000, -0.961377666829747230, +-0.961391427257803020, -0.961405185282380280, -0.961418940903444600, -0.961432694120961440, -0.961446444934896730, -0.961460193345216040, -0.961473939351884630, -0.961487682954868310, +-0.961501424154132870, -0.961515162949643900, -0.961528899341366980, -0.961542633329267820, -0.961556364913312090, -0.961570094093465390, -0.961583820869693740, -0.961597545241962280, +-0.961611267210236930, -0.961624986774483490, -0.961638703934667550, -0.961652418690754800, -0.961666131042711260, -0.961679840990502190, -0.961693548534093500, -0.961707253673451000, +-0.961720956408540270, -0.961734656739327230, -0.961748354665777460, -0.961762050187856880, -0.961775743305531170, -0.961789434018766040, -0.961803122327527630, -0.961816808231781170, +-0.961830491731492600, -0.961844172826627930, -0.961857851517152750, -0.961871527803033200, -0.961885201684234640, -0.961898873160722980, -0.961912542232464250, -0.961926208899424040, +-0.961939873161568370, -0.961953535018863050, -0.961967194471273880, -0.961980851518766670, -0.961994506161307330, -0.962008158398862000, -0.962021808231396050, -0.962035455658875600, +-0.962049100681266480, -0.962062743298534580, -0.962076383510645840, -0.962090021317566380, -0.962103656719261680, -0.962117289715697770, -0.962130920306840660, -0.962144548492656290, +-0.962158174273110460, -0.962171797648169290, -0.962185418617798600, -0.962199037181964310, -0.962212653340632770, -0.962226267093769240, -0.962239878441340070, -0.962253487383311290, +-0.962267093919648710, -0.962280698050318460, -0.962294299775286580, -0.962307899094518860, -0.962321496007981340, -0.962335090515640030, -0.962348682617460980, -0.962362272313410320, +-0.962375859603453950, -0.962389444487557920, -0.962403026965688250, -0.962416607037811290, -0.962430184703892520, -0.962443759963898420, -0.962457332817794780, -0.962470903265547850, +-0.962484471307123670, -0.962498036942488590, -0.962511600171608080, -0.962525160994448630, -0.962538719410976350, -0.962552275421157180, -0.962565829024957350, -0.962579380222342910, +-0.962592929013280090, -0.962606475397734920, -0.962620019375673540, -0.962633560947062320, -0.962647100111867050, -0.962660636870053990, -0.962674171221589270, -0.962687703166439150, +-0.962701232704570090, -0.962714759835947680, -0.962728284560538380, -0.962741806878308350, -0.962755326789223710, -0.962768844293250940, -0.962782359390355950, -0.962795872080504990, +-0.962809382363664420, -0.962822890239800500, -0.962836395708879470, -0.962849898770867240, -0.962863399425730290, -0.962876897673434760, -0.962890393513947120, -0.962903886947233610, +-0.962917377973260160, -0.962930866591993340, -0.962944352803399290, -0.962957836607444380, -0.962971318004094970, -0.962984796993317070, -0.962998273575077390, -0.963011747749341840, +-0.963025219516077000, -0.963038688875249350, -0.963052155826824800, -0.963065620370769810, -0.963079082507050770, -0.963092542235634010, -0.963105999556485900, -0.963119454469573030, +-0.963132906974861310, -0.963146357072317330, -0.963159804761907430, -0.963173250043597990, -0.963186692917355480, -0.963200133383146140, -0.963213571440936560, -0.963227007090692980, +-0.963240440332382210, -0.963253871165970050, -0.963267299591423210, -0.963280725608708140, -0.963294149217791330, -0.963307570418639010, -0.963320989211218110, -0.963334405595494440, +-0.963347819571434780, -0.963361231139005510, -0.963374640298173210, -0.963388047048904350, -0.963401451391165400, -0.963414853324922720, -0.963428252850142890, -0.963441649966792490, +-0.963455044674838220, -0.963468436974246110, -0.963481826864982850, -0.963495214347015020, -0.963508599420309200, -0.963521982084832200, -0.963535362340549820, -0.963548740187429200, +-0.963562115625436590, -0.963575488654538790, -0.963588859274702280, -0.963602227485893530, -0.963615593288079220, -0.963628956681226060, -0.963642317665300400, -0.963655676240269150, +-0.963669032406098580, -0.963682386162755370, -0.963695737510206210, -0.963709086448417680, -0.963722432977356600, -0.963735777096989320, -0.963749118807282650, -0.963762458108203050, +-0.963775794999717330, -0.963789129481792180, -0.963802461554394200, -0.963815791217490060, -0.963829118471046350, -0.963842443315029880, -0.963855765749407680, -0.963869085774145650, +-0.963882403389211050, -0.963895718594570350, -0.963909031390190350, -0.963922341776037860, -0.963935649752079680, -0.963948955318282060, -0.963962258474612140, -0.963975559221036620, +-0.963988857557522170, -0.964002153484035620, -0.964015447000543650, -0.964028738107012950, -0.964042026803410560, -0.964055313089703270, -0.964068596965857450, -0.964081878431840230, +-0.964095157487618200, -0.964108434133158280, -0.964121708368427370, -0.964134980193392390, -0.964148249608019700, -0.964161516612276340, -0.964174781206129320, -0.964188043389545220, +-0.964201303162491090, -0.964214560524933710, -0.964227815476839890, -0.964241068018176550, -0.964254318148910720, -0.964267565869008860, -0.964280811178438110, -0.964294054077165400, +-0.964307294565157510, -0.964320532642381380, -0.964333768308804130, -0.964347001564392240, -0.964360232409112840, -0.964373460842932960, -0.964386686865819300, -0.964399910477738990, +-0.964413131678658830, -0.964426350468545970, -0.964439566847367090, -0.964452780815089340, -0.964465992371679960, -0.964479201517105310, -0.964492408251332640, -0.964505612574328870, +-0.964518814486061250, -0.964532013986496680, -0.964545211075601870, -0.964558405753344060, -0.964571598019690280, -0.964584787874607440, -0.964597975318062680, -0.964611160350022920, +-0.964624342970455300, -0.964637523179326830, -0.964650700976604550, -0.964663876362255700, -0.964677049336246980, -0.964690219898545640, -0.964703388049118700, -0.964716553787933310, +-0.964729717114956590, -0.964742878030155790, -0.964756036533497510, -0.964769192624949200, -0.964782346304477790, -0.964795497572050630, -0.964808646427634750, -0.964821792871197180, +-0.964834936902705160, -0.964848078522125840, -0.964861217729426460, -0.964874354524573820, -0.964887488907535400, -0.964900620878278100, -0.964913750436769410, -0.964926877582976240, +-0.964940002316866160, -0.964953124638405770, -0.964966244547562630, -0.964979362044303900, -0.964992477128596700, -0.965005589800408290, -0.965018700059706020, -0.965031807906456930, +-0.965044913340628360, -0.965058016362187690, -0.965071116971101710, -0.965084215167338000, -0.965097310950863820, -0.965110404321646190, -0.965123495279652690, -0.965136583824850680, +-0.965149669957206860, -0.965162753676689020, -0.965175834983264200, -0.965188913876899870, -0.965201990357563160, -0.965215064425221540, -0.965228136079842150, -0.965241205321392570, +-0.965254272149839940, -0.965267336565151850, -0.965280398567295080, -0.965293458156237460, -0.965306515331946110, -0.965319570094388510, -0.965332622443532240, -0.965345672379344100, +-0.965358719901791900, -0.965371765010842760, -0.965384807706464290, -0.965397847988623830, -0.965410885857288740, -0.965423921312426380, -0.965436954354004230, -0.965449984981989750, +-0.965463013196350420, -0.965476038997053480, -0.965489062384066400, -0.965502083357356540, -0.965515101916891600, -0.965528118062638830, -0.965541131794566130, -0.965554143112640210, +-0.965567152016829080, -0.965580158507099990, -0.965593162583420430, -0.965606164245758070, -0.965619163494080280, -0.965632160328354530, -0.965645154748548510, -0.965658146754629690, +-0.965671136346565320, -0.965684123524323090, -0.965697108287870590, -0.965710090637175280, -0.965723070572204860, -0.965736048092926900, -0.965749023199308550, -0.965761995891317730, +-0.965774966168921890, -0.965787934032088620, -0.965800899480785510, -0.965813862514980140, -0.965826823134640190, -0.965839781339733140, -0.965852737130226790, -0.965865690506088500, +-0.965878641467285860, -0.965891590013786660, -0.965904536145558490, -0.965917479862569040, -0.965930421164786110, -0.965943360052176850, -0.965956296524709160, -0.965969230582350740, +-0.965982162225069270, -0.965995091452832470, -0.966008018265607890, -0.966020942663363250, -0.966033864646066220, -0.966046784213684510, -0.966059701366186130, -0.966072616103538230, +-0.966085528425708830, -0.966098438332665620, -0.966111345824376300, -0.966124250900808780, -0.966137153561930530, -0.966150053807709350, -0.966162951638112940, -0.966175847053109220, +-0.966188740052665860, -0.966201630636750690, -0.966214518805331490, -0.966227404558375860, -0.966240287895851810, -0.966253168817727270, -0.966266047323969590, -0.966278923414546800, +-0.966291797089426590, -0.966304668348576980, -0.966317537191965670, -0.966330403619560800, -0.966343267631329610, -0.966356129227240350, -0.966368988407260710, -0.966381845171358610, +-0.966394699519501850, -0.966407551451658350, -0.966420400967796020, -0.966433248067882670, -0.966446092751886420, -0.966458935019774760, -0.966471774871515700, -0.966484612307077270, +-0.966497447326427280, -0.966510279929533640, -0.966523110116364490, -0.966535937886887410, -0.966548763241070530, -0.966561586178881660, -0.966574406700288820, -0.966587224805259940, +-0.966600040493763140, -0.966612853765766110, -0.966625664621237000, -0.966638473060143940, -0.966651279082454410, -0.966664082688136750, -0.966676883877158890, -0.966689682649488850, +-0.966702479005094540, -0.966715272943944330, -0.966728064466005680, -0.966740853571246840, -0.966753640259635840, -0.966766424531140810, -0.966779206385729670, -0.966791985823370560, +-0.966804762844031380, -0.966817537447680400, -0.966830309634285510, -0.966843079403815200, -0.966855846756236810, -0.966868611691518940, -0.966881374209629390, -0.966894134310536500, +-0.966906891994208540, -0.966919647260613080, -0.966932400109718480, -0.966945150541492880, -0.966957898555904420, -0.966970644152921220, -0.966983387332511430, -0.966996128094643080, +-0.967008866439284520, -0.967021602366403780, -0.967034335875969210, -0.967047066967948620, -0.967059795642310260, -0.967072521899022490, -0.967085245738053430, -0.967097967159371240, +-0.967110686162944380, -0.967123402748740530, -0.967136116916728290, -0.967148828666875680, -0.967161537999150940, -0.967174244913522440, -0.967186949409958310, -0.967199651488426790, +-0.967212351148896140, -0.967225048391334830, -0.967237743215710650, -0.967250435621992200, -0.967263125610147600, -0.967275813180145110, -0.967288498331953180, -0.967301181065540310, +-0.967313861380874160, -0.967326539277923340, -0.967339214756656180, -0.967351887817041070, -0.967364558459046120, -0.967377226682639810, -0.967389892487790500, -0.967402555874466440, +-0.967415216842636210, -0.967427875392267710, -0.967440531523329430, -0.967453185235789940, -0.967465836529617480, -0.967478485404780320, -0.967491131861247240, -0.967503775898986170, +-0.967516417517965580, -0.967529056718154030, -0.967541693499519790, -0.967554327862031220, -0.967566959805656990, -0.967579589330365250, -0.967592216436124590, -0.967604841122903350, +-0.967617463390670230, -0.967630083239393370, -0.967642700669041120, -0.967655315679582180, -0.967667928270985020, -0.967680538443218110, -0.967693146196249800, -0.967705751530048560, +-0.967718354444582870, -0.967730954939821420, -0.967743553015732450, -0.967756148672284660, -0.967768741909446510, -0.967781332727186470, -0.967793921125473130, -0.967806507104275290, +-0.967819090663560870, -0.967831671803298770, -0.967844250523457350, -0.967856826824005420, -0.967869400704911450, -0.967881972166144130, -0.967894541207671710, -0.967907107829462990, +-0.967919672031486320, -0.967932233813710630, -0.967944793176104270, -0.967957350118636040, -0.967969904641274300, -0.967982456743987860, -0.967995006426745520, -0.968007553689515410, +-0.968020098532266450, -0.968032640954967220, -0.968045180957586400, -0.968057718540092590, -0.968070253702454700, -0.968082786444640960, -0.968095316766620310, -0.968107844668361310, +-0.968120370149832770, -0.968132893211003260, -0.968145413851841500, -0.968157932072316260, -0.968170447872396140, -0.968182961252050170, -0.968195472211246580, -0.968207980749954180, +-0.968220486868141990, -0.968232990565778500, -0.968245491842832600, -0.968257990699273100, -0.968270487135068470, -0.968282981150187630, -0.968295472744599260, -0.968307961918272290, +-0.968320448671175390, -0.968332933003277270, -0.968345414914546950, -0.968357894404953010, -0.968370371474464360, -0.968382846123050030, -0.968395318350678380, -0.968407788157318430, +-0.968420255542938980, -0.968432720507508950, -0.968445183050997250, -0.968457643173372460, -0.968470100874603500, -0.968482556154659280, -0.968495009013508710, -0.968507459451120600, +-0.968519907467463750, -0.968532353062507290, -0.968544796236219920, -0.968557236988570440, -0.968569675319528200, -0.968582111229061570, -0.968594544717139570, -0.968606975783731230, +-0.968619404428805450, -0.968631830652331270, -0.968644254454277600, -0.968656675834613120, -0.968669094793306980, -0.968681511330328090, -0.968693925445645370, -0.968706337139227940, +-0.968718746411044500, -0.968731153261064290, -0.968743557689256240, -0.968755959695589470, -0.968768359280032580, -0.968780756442554900, -0.968793151183125150, -0.968805543501712660, +-0.968817933398286260, -0.968830320872815180, -0.968842705925268220, -0.968855088555614420, -0.968867468763822900, -0.968879846549862700, -0.968892221913702830, -0.968904594855312550, +-0.968916965374660650, -0.968929333471716390, -0.968941699146449010, -0.968954062398827200, -0.968966423228820210, -0.968978781636397170, -0.968991137621527110, -0.969003491184179280, +-0.969015842324322920, -0.969028191041926720, -0.969040537336960050, -0.969052881209392040, -0.969065222659191820, -0.969077561686328530, -0.969089898290771410, -0.969102232472489500, +-0.969114564231452040, -0.969126893567628040, -0.969139220480987220, -0.969151544971498020, -0.969163867039129930, -0.969176186683852190, -0.969188503905634050, -0.969200818704444860, +-0.969213131080253310, -0.969225441033028990, -0.969237748562741140, -0.969250053669358790, -0.969262356352851410, -0.969274656613188010, -0.969286954450338080, -0.969299249864270740, +-0.969311542854955350, -0.969323833422361170, -0.969336121566457320, -0.969348407287213050, -0.969360690584597840, -0.969372971458580920, -0.969385249909131550, -0.969397525936219310, +-0.969409799539812990, -0.969422070719882180, -0.969434339476396120, -0.969446605809324290, -0.969458869718635930, -0.969471131204300400, -0.969483390266287050, -0.969495646904565240, +-0.969507901119104450, -0.969520152909873810, -0.969532402276842680, -0.969544649219980630, -0.969556893739256910, -0.969569135834640990, -0.969581375506102460, -0.969593612753610220, +-0.969605847577133970, -0.969618079976643070, -0.969630309952106970, -0.969642537503495160, -0.969654762630776990, -0.969666985333921930, -0.969679205612899330, -0.969691423467679000, +-0.969703638898229860, -0.969715851904521590, -0.969728062486523770, -0.969740270644205760, -0.969752476377537030, -0.969764679686487390, -0.969776880571025850, -0.969789079031122100, +-0.969801275066745630, -0.969813468677865890, -0.969825659864452570, -0.969837848626475150, -0.969850034963902980, -0.969862218876705870, -0.969874400364853060, -0.969886579428314580, +-0.969898756067059330, -0.969910930281057350, -0.969923102070277880, -0.969935271434690720, -0.969947438374265670, -0.969959602888971760, -0.969971764978778790, -0.969983924643656460, +-0.969996081883574330, -0.970008236698501890, -0.970020389088408930, -0.970032539053265030, -0.970044686593039770, -0.970056831707702850, -0.970068974397223950, -0.970081114661572430, +-0.970093252500718210, -0.970105387914630750, -0.970117520903279850, -0.970129651466635210, -0.970141779604666520, -0.970153905317343360, -0.970166028604635300, -0.970178149466512150, +-0.970190267902943710, -0.970202383913899570, -0.970214497499349400, -0.970226608659263130, -0.970238717393610230, -0.970250823702360820, -0.970262927585484050, -0.970275029042950040, +-0.970287128074728500, -0.970299224680789000, -0.970311318861101560, -0.970323410615635980, -0.970335499944361630, -0.970347586847248640, -0.970359671324266590, -0.970371753375385390, +-0.970383833000574740, -0.970395910199804650, -0.970407984973044700, -0.970420057320264710, -0.970432127241434910, -0.970444194736524550, -0.970456259805503650, -0.970468322448342140, +-0.970480382665009910, -0.970492440455476670, -0.970504495819712430, -0.970516548757686890, -0.970528599269369850, -0.970540647354731440, -0.970552693013741360, -0.970564736246369520, +-0.970576777052585830, -0.970588815432360200, -0.970600851385662540, -0.970612884912462780, -0.970624916012731040, -0.970636944686436800, -0.970648970933550180, -0.970660994754041110, +-0.970673016147879490, -0.970685035115035680, -0.970697051655479040, -0.970709065769179700, -0.970721077456107690, -0.970733086716233040, -0.970745093549525650, -0.970757097955955550, +-0.970769099935492760, -0.970781099488107090, -0.970793096613768780, -0.970805091312447850, -0.970817083584114120, -0.970829073428737590, -0.970841060846288300, -0.970853045836736480, +-0.970865028400052180, -0.970877008536205180, -0.970888986245165620, -0.970900961526903530, -0.970912934381389150, -0.970924904808592390, -0.970936872808483290, -0.970948838381032080, +-0.970960801526208780, -0.970972762243983430, -0.970984720534326500, -0.970996676397207440, -0.971008629832596730, -0.971020580840464500, -0.971032529420780670, -0.971044475573515700, +-0.971056419298639620, -0.971068360596122340, -0.971080299465934100, -0.971092235908045160, -0.971104169922425650, -0.971116101509045700, -0.971128030667875450, -0.971139957398885150, +-0.971151881702045030, -0.971163803577325350, -0.971175723024695900, -0.971187640044127280, -0.971199554635589490, -0.971211466799052790, -0.971223376534487430, -0.971235283841863860, +-0.971247188721151790, -0.971259091172321900, -0.971270991195344210, -0.971282888790188980, -0.971294783956826560, -0.971306676695227190, -0.971318567005361120, -0.971330454887198710, +-0.971342340340710320, -0.971354223365865850, -0.971366103962635900, -0.971377982130990580, -0.971389857870900380, -0.971401731182335530, -0.971413602065266500, -0.971425470519663330, +-0.971437336545496470, -0.971449200142736170, -0.971461061311353010, -0.971472920051317130, -0.971484776362598890, -0.971496630245168860, -0.971508481698997170, -0.971520330724054190, +-0.971532177320310720, -0.971544021487736550, -0.971555863226302390, -0.971567702535978460, -0.971579539416735360, -0.971591373868543660, -0.971603205891373170, -0.971615035485194790, +-0.971626862649978770, -0.971638687385695590, -0.971650509692315700, -0.971662329569809580, -0.971674147018147580, -0.971685962037300180, -0.971697774627237940, -0.971709584787931460, +-0.971721392519350860, -0.971733197821466720, -0.971745000694249630, -0.971756801137669930, -0.971768599151698330, -0.971780394736305400, -0.971792187891461270, -0.971803978617136740, +-0.971815766913302180, -0.971827552779928270, -0.971839336216985370, -0.971851117224444280, -0.971862895802275250, -0.971874671950449080, -0.971886445668936450, -0.971898216957707390, +-0.971909985816732940, -0.971921752245983430, -0.971933516245429560, -0.971945277815041810, -0.971957036954791190, -0.971968793664647720, -0.971980547944582330, -0.971992299794565470, +-0.972004049214567960, -0.972015796204560250, -0.972027540764513140, -0.972039282894397120, -0.972051022594182860, -0.972062759863841270, -0.972074494703342620, -0.972086227112657690, +-0.972097957091757170, -0.972109684640611870, -0.972121409759192260, -0.972133132447469350, -0.972144852705413400, -0.972156570532995310, -0.972168285930185780, -0.972179998896955610, +-0.972191709433275380, -0.972203417539115880, -0.972215123214447920, -0.972226826459242080, -0.972238527273469160, -0.972250225657100180, -0.972261921610105380, -0.972273615132455800, +-0.972285306224122130, -0.972296994885075260, -0.972308681115286120, -0.972320364914725070, -0.972332046283363010, -0.972343725221170960, -0.972355401728119520, -0.972367075804179580, +-0.972378747449321960, -0.972390416663517550, -0.972402083446736950, -0.972413747798951290, -0.972425409720131360, -0.972437069210247750, -0.972448726269271480, -0.972460380897173350, +-0.972472033093924270, -0.972483682859495160, -0.972495330193857030, -0.972506975096980360, -0.972518617568836290, -0.972530257609395600, -0.972541895218629330, -0.972553530396508270, +-0.972565163143003450, -0.972576793458085680, -0.972588421341725850, -0.972600046793895330, -0.972611669814564370, -0.972623290403704320, -0.972634908561285980, -0.972646524287280380, +-0.972658137581658530, -0.972669748444391470, -0.972681356875449880, -0.972692962874804780, -0.972704566442427420, -0.972716167578288600, -0.972727766282359350, -0.972739362554610690, +-0.972750956395013630, -0.972762547803539210, -0.972774136780158560, -0.972785723324842370, -0.972797307437561880, -0.972808889118288110, -0.972820468366992210, -0.972832045183645080, +-0.972843619568217970, -0.972855191520681670, -0.972866761041007440, -0.972878328129166300, -0.972889892785129270, -0.972901455008867490, -0.972913014800352190, -0.972924572159554300, +-0.972936127086444950, -0.972947679580995260, -0.972959229643176600, -0.972970777272959660, -0.972982322470315800, -0.972993865235216140, -0.973005405567631820, -0.973016943467534200, +-0.973028478934893970, -0.973040011969682590, -0.973051542571871210, -0.973063070741430950, -0.973074596478332940, -0.973086119782548440, -0.973097640654048690, -0.973109159092804820, +-0.973120675098788080, -0.973132188671969930, -0.973143699812320960, -0.973155208519812850, -0.973166714794416630, -0.973178218636103650, -0.973189720044845160, -0.973201219020612520, +-0.973212715563376740, -0.973224209673109080, -0.973235701349780880, -0.973247190593363510, -0.973258677403828100, -0.973270161781146000, -0.973281643725288470, -0.973293123236226850, +-0.973304600313932620, -0.973316074958376800, -0.973327547169530630, -0.973339016947365690, -0.973350484291853220, -0.973361949202964480, -0.973373411680671040, -0.973384871724943920, +-0.973396329335754600, -0.973407784513074530, -0.973419237256874960, -0.973430687567127250, -0.973442135443802870, -0.973453580886873170, -0.973465023896309510, -0.973476464472083470, +-0.973487902614166070, -0.973499338322528880, -0.973510771597143390, -0.973522202437980930, -0.973533630845012990, -0.973545056818211130, -0.973556480357546490, -0.973567901462990660, +-0.973579320134515090, -0.973590736372091150, -0.973602150175690410, -0.973613561545284220, -0.973624970480844290, -0.973636376982341730, -0.973647781049748360, -0.973659182683035750, +-0.973670581882174920, -0.973681978647137680, -0.973693372977895490, -0.973704764874419810, -0.973716154336682460, -0.973727541364654560, -0.973738925958307800, -0.973750308117613650, +-0.973761687842543800, -0.973773065133069720, -0.973784439989162980, -0.973795812410795160, -0.973807182397937730, -0.973818549950562380, -0.973829915068640920, -0.973841277752144350, +-0.973852638001044710, -0.973863995815313350, -0.973875351194922080, -0.973886704139842460, -0.973898054650046310, -0.973909402725504750, -0.973920748366189690, -0.973932091572072720, +-0.973943432343125530, -0.973954770679319790, -0.973966106580627210, -0.973977440047019250, -0.973988771078467710, -0.974000099674944500, -0.974011425836420750, -0.974022749562868500, +-0.974034070854259300, -0.974045389710565090, -0.974056706131757210, -0.974068020117807910, -0.974079331668688320, -0.974090640784370350, -0.974101947464825810, -0.974113251710026380, +-0.974124553519943870, -0.974135852894549960, -0.974147149833816450, -0.974158444337715030, -0.974169736406217620, -0.974181026039295790, -0.974192313236921350, -0.974203597999066080, +-0.974214880325701920, -0.974226160216800530, -0.974237437672333950, -0.974248712692273530, -0.974259985276591300, -0.974271255425259160, -0.974282523138248810, -0.974293788415532270, +-0.974305051257081220, -0.974316311662867470, -0.974327569632863040, -0.974338825167039620, -0.974350078265369350, -0.974361328927823680, -0.974372577154374750, -0.974383822944994260, +-0.974395066299654330, -0.974406307218326880, -0.974417545700983490, -0.974428781747596170, -0.974440015358136960, -0.974451246532577750, -0.974462475270890360, -0.974473701573046800, +-0.974484925439018990, -0.974496146868778830, -0.974507365862298360, -0.974518582419549580, -0.974529796540504200, -0.974541008225134340, -0.974552217473412030, -0.974563424285309070, +-0.974574628660797580, -0.974585830599849710, -0.974597030102437030, -0.974608227168531900, -0.974619421798106120, -0.974630613991131820, -0.974641803747580910, -0.974652991067425530, +-0.974664175950637700, -0.974675358397189440, -0.974686538407052880, -0.974697715980199940, -0.974708891116602530, -0.974720063816233000, -0.974731234079063370, -0.974742401905065560, +-0.974753567294211920, -0.974764730246474250, -0.974775890761824690, -0.974787048840235480, -0.974798204481678530, -0.974809357686126200, -0.974820508453550390, -0.974831656783923250, +-0.974842802677217120, -0.974853946133404040, -0.974865087152456010, -0.974876225734345180, -0.974887361879043900, -0.974898495586524080, -0.974909626856758080, -0.974920755689718250, +-0.974931882085376290, -0.974943006043704650, -0.974954127564675480, -0.974965246648261010, -0.974976363294433380, -0.974987477503164830, -0.974998589274427620, -0.975009698608193980, +-0.975020805504436040, -0.975031909963126280, -0.975043011984236600, -0.975054111567739360, -0.975065208713606800, -0.975076303421811290, -0.975087395692325170, -0.975098485525120460, +-0.975109572920169420, -0.975120657877444510, -0.975131740396917860, -0.975142820478561930, -0.975153898122348980, -0.975164973328251250, -0.975176046096241090, -0.975187116426290860, +-0.975198184318373020, -0.975209249772459490, -0.975220312788522840, -0.975231373366535430, -0.975242431506469500, -0.975253487208297630, -0.975264540471992180, -0.975275591297525170, +-0.975286639684869170, -0.975297685633996550, -0.975308729144879760, -0.975319770217491170, -0.975330808851803120, -0.975341845047787980, -0.975352878805418320, -0.975363910124666720, +-0.975374939005504980, -0.975385965447906010, -0.975396989451842170, -0.975408011017285690, -0.975419030144209280, -0.975430046832585500, -0.975441061082386480, -0.975452072893584710, +-0.975463082266152750, -0.975474089200063070, -0.975485093695288240, -0.975496095751800630, -0.975507095369572810, -0.975518092548577240, -0.975529087288786620, -0.975540079590173080, +-0.975551069452709420, -0.975562056876367990, -0.975573041861121480, -0.975584024406942360, -0.975595004513803320, -0.975605982181676600, -0.975616957410535000, -0.975627930200350880, +-0.975638900551097030, -0.975649868462745930, -0.975660833935270030, -0.975671796968642150, -0.975682757562834850, -0.975693715717820490, -0.975704671433572200, -0.975715624710061900, +-0.975726575547262610, -0.975737523945146900, -0.975748469903687350, -0.975759413422856770, -0.975770354502627500, -0.975781293142972350, -0.975792229343864000, -0.975803163105275040, +-0.975814094427178260, -0.975825023309546120, -0.975835949752351440, -0.975846873755567000, -0.975857795319165280, -0.975868714443119290, -0.975879631127401280, -0.975890545371984160, +-0.975901457176840850, -0.975912366541943690, -0.975923273467265710, -0.975934177952779810, -0.975945079998458140, -0.975955979604273830, -0.975966876770199670, -0.975977771496208120, +-0.975988663782272340, -0.975999553628364770, -0.976010441034458330, -0.976021326000525820, -0.976032208526540160, -0.976043088612473800, -0.976053966258299770, -0.976064841463990750, +-0.976075714229519660, -0.976086584554859300, -0.976097452439982690, -0.976108317884862190, -0.976119180889470920, -0.976130041453781680, -0.976140899577767400, -0.976151755261400860, +-0.976162608504654860, -0.976173459307502430, -0.976184307669916260, -0.976195153591869590, -0.976205997073334770, -0.976216838114285060, -0.976227676714693240, -0.976238512874532120, +-0.976249346593774820, -0.976260177872394270, -0.976271006710363150, -0.976281833107654480, -0.976292657064241290, -0.976303478580096360, -0.976314297655192730, -0.976325114289503420, +-0.976335928483001330, -0.976346740235659370, -0.976357549547450580, -0.976368356418348180, -0.976379160848324660, -0.976389962837353130, -0.976400762385406850, -0.976411559492458610, +-0.976422354158481550, -0.976433146383448580, -0.976443936167332600, -0.976454723510106870, -0.976465508411744400, -0.976476290872217990, -0.976487070891501000, -0.976497848469566220, +-0.976508623606386910, -0.976519396301935960, -0.976530166556186740, -0.976540934369111930, -0.976551699740684790, -0.976562462670878430, -0.976573223159665880, -0.976583981207020280, +-0.976594736812914870, -0.976605489977322440, -0.976616240700216350, -0.976626988981569630, -0.976637734821355410, -0.976648478219546810, -0.976659219176117090, -0.976669957691039370, +-0.976680693764286680, -0.976691427395832480, -0.976702158585649460, -0.976712887333711090, -0.976723613639990500, -0.976734337504460930, -0.976745058927095400, -0.976755777907867500, +-0.976766494446749900, -0.976777208543716080, -0.976787920198739280, -0.976798629411792740, -0.976809336182849490, -0.976820040511882980, -0.976830742398866360, -0.976841441843772860, +-0.976852138846575960, -0.976862833407248550, -0.976873525525764010, -0.976884215202095670, -0.976894902436216790, -0.976905587228100720, -0.976916269577720820, -0.976926949485049990, +-0.976937626950061920, -0.976948301972729640, -0.976958974553026720, -0.976969644690926290, -0.976980312386401820, -0.976990977639426550, -0.977001640449973730, -0.977012300818016930, +-0.977022958743529510, -0.977033614226484600, -0.977044267266855560, -0.977054917864615850, -0.977065566019738930, -0.977076211732198160, -0.977086855001966790, -0.977097495829018170, +-0.977108134213325870, -0.977118770154863260, -0.977129403653603680, -0.977140034709520710, -0.977150663322587490, -0.977161289492777700, -0.977171913220064690, -0.977182534504422050, +-0.977193153345822910, -0.977203769744240840, -0.977214383699649410, -0.977224995212022000, -0.977235604281332270, -0.977246210907553370, -0.977256815090658870, -0.977267416830622460, +-0.977278016127417380, -0.977288612981017320, -0.977299207391395750, -0.977309799358526130, -0.977320388882382040, -0.977330975962936940, -0.977341560600164640, -0.977352142794038260, +-0.977362722544531380, -0.977373299851617800, -0.977383874715270990, -0.977394447135464530, -0.977405017112172090, -0.977415584645366930, -0.977426149735022730, -0.977436712381113180, +-0.977447272583611970, -0.977457830342492450, -0.977468385657728420, -0.977478938529293460, -0.977489488957161030, -0.977500036941305160, -0.977510582481698980, -0.977521125578316390, +-0.977531666231130970, -0.977542204440116300, -0.977552740205246180, -0.977563273526494410, -0.977573804403834230, -0.977584332837239560, -0.977594858826684070, -0.977605382372141450, +-0.977615903473585400, -0.977626422130989490, -0.977636938344327630, -0.977647452113573400, -0.977657963438700480, -0.977668472319682900, -0.977678978756493900, -0.977689482749107500, +-0.977699984297497380, -0.977710483401637240, -0.977720980061501210, -0.977731474277062420, -0.977741966048295000, -0.977752455375172640, -0.977762942257669240, -0.977773426695758400, +-0.977783908689414010, -0.977794388238609760, -0.977804865343319670, -0.977815340003517330, -0.977825812219176860, -0.977836281990271730, -0.977846749316775840, -0.977857214198663010, +-0.977867676635907230, -0.977878136628482440, -0.977888594176362090, -0.977899049279520320, -0.977909501937930910, -0.977919952151567680, -0.977930399920404650, -0.977940845244415600, +-0.977951288123574350, -0.977961728557855010, -0.977972166547231290, -0.977982602091677310, -0.977993035191166650, -0.978003465845673440, -0.978013894055171580, -0.978024319819634890, +-0.978034743139037490, -0.978045164013353400, -0.978055582442556190, -0.978065998426620010, -0.978076411965518870, -0.978086823059226670, -0.978097231707717450, -0.978107637910965220, +-0.978118041668943780, -0.978128442981627270, -0.978138841848989800, -0.978149238271005080, -0.978159632247647350, -0.978170023778890400, -0.978180412864708470, -0.978190799505075480, +-0.978201183699965670, -0.978211565449352730, -0.978221944753210890, -0.978232321611514190, -0.978242696024236640, -0.978253067991352370, -0.978263437512835400, -0.978273804588659870, +-0.978284169218799900, -0.978294531403229640, -0.978304891141922760, -0.978315248434853850, -0.978325603281996690, -0.978335955683325540, -0.978346305638814530, -0.978356653148437890, +-0.978366998212169440, -0.978377340829983510, -0.978387681001854250, -0.978398018727755780, -0.978408354007662240, -0.978418686841547870, -0.978429017229386800, -0.978439345171153050, +-0.978449670666821090, -0.978459993716365050, -0.978470314319758840, -0.978480632476976920, -0.978490948187993310, -0.978501261452782380, -0.978511572271318570, -0.978521880643575480, +-0.978532186569527780, -0.978542490049149620, -0.978552791082415220, -0.978563089669298840, -0.978573385809774820, -0.978583679503817190, -0.978593970751400420, -0.978604259552498750, +-0.978614545907086630, -0.978624829815137880, -0.978635111276627170, -0.978645390291528640, -0.978655666859816530, -0.978665940981465420, -0.978676212656449550, -0.978686481884742940, +-0.978696748666320170, -0.978707013001155480, -0.978717274889223330, -0.978727534330497970, -0.978737791324953750, -0.978748045872565030, -0.978758297973306270, -0.978768547627151930, +-0.978778794834076040, -0.978789039594053060, -0.978799281907057670, -0.978809521773063910, -0.978819759192046450, -0.978829994163979640, -0.978840226688837860, -0.978850456766595320, +-0.978860684397226730, -0.978870909580706440, -0.978881132317008910, -0.978891352606108490, -0.978901570447979650, -0.978911785842596970, -0.978921998789935020, -0.978932209289967830, +-0.978942417342670070, -0.978952622948016330, -0.978962826105981070, -0.978973026816538750, -0.978983225079663950, -0.978993420895331030, -0.979003614263514450, -0.979013805184188900, +-0.979023993657328730, -0.979034179682908730, -0.979044363260903160, -0.979054544391286700, -0.979064723074033920, -0.979074899309119400, -0.979085073096517710, -0.979095244436203220, +-0.979105413328150490, -0.979115579772334320, -0.979125743768729300, -0.979135905317309980, -0.979146064418050740, -0.979156221070926260, -0.979166375275911330, -0.979176527032980410, +-0.979186676342108210, -0.979196823203269400, -0.979206967616438440, -0.979217109581590030, -0.979227249098698850, -0.979237386167739810, -0.979247520788687040, -0.979257652961515570, +-0.979267782686199850, -0.979277909962714690, -0.979288034791034880, -0.979298157171135000, -0.979308277102989620, -0.979318394586573550, -0.979328509621861460, -0.979338622208828170, +-0.979348732347448350, -0.979358840037696580, -0.979368945279547760, -0.979379048072976600, -0.979389148417957990, -0.979399246314466290, -0.979409341762476520, -0.979419434761963360, +-0.979429525312901620, -0.979439613415266090, -0.979449699069031790, -0.979459782274172960, -0.979469863030664630, -0.979479941338481710, -0.979490017197598980, -0.979500090607991150, +-0.979510161569633110, -0.979520230082499670, -0.979530296146565620, -0.979540359761805980, -0.979550420928195330, -0.979560479645708580, -0.979570535914320750, -0.979580589734006410, +-0.979590641104740700, -0.979600690026498520, -0.979610736499254450, -0.979620780522983630, -0.979630822097660730, -0.979640861223260880, -0.979650897899758790, -0.979660932127129460, +-0.979670963905347910, -0.979680993234388840, -0.979691020114227260, -0.979701044544838420, -0.979711066526196770, -0.979721086058277350, -0.979731103141055270, -0.979741117774505450, +-0.979751129958603030, -0.979761139693322680, -0.979771146978639320, -0.979781151814528180, -0.979791154200964190, -0.979801154137922240, -0.979811151625377460, -0.979821146663304780, +-0.979831139251679200, -0.979841129390475850, -0.979851117079669760, -0.979861102319235730, -0.979871085109149000, -0.979881065449384470, -0.979891043339917390, -0.979901018780722670, +-0.979910991771775540, -0.979920962313050700, -0.979930930404523610, -0.979940896046169070, -0.979950859237962320, -0.979960819979878380, -0.979970778271892500, -0.979980734113979570, +-0.979990687506114840, -0.980000638448273560, -0.980010586940430530, -0.980020532982561090, -0.980030476574640260, -0.980040417716643190, -0.980050356408545100, -0.980060292650321350, +-0.980070226441946630, -0.980080157783396410, -0.980090086674645810, -0.980100013115669850, -0.980109937106444010, -0.980119858646943290, -0.980129777737142830, -0.980139694377018090, +-0.980149608566544210, -0.980159520305696090, -0.980169429594449190, -0.980179336432778770, -0.980189240820659950, -0.980199142758068080, -0.980209042244978400, -0.980218939281366050, +-0.980228833867206380, -0.980238726002474530, -0.980248615687145940, -0.980258502921195760, -0.980268387704599450, -0.980278270037332030, -0.980288149919368970, -0.980298027350685610, +-0.980307902331257200, -0.980317774861058980, -0.980327644940066300, -0.980337512568254520, -0.980347377745598990, -0.980357240472075060, -0.980367100747657980, -0.980376958572323100, +-0.980386813946045880, -0.980396666868801560, -0.980406517340565610, -0.980416365361313270, -0.980426210931020110, -0.980436054049661390, -0.980445894717212550, -0.980455732933649180, +-0.980465568698946300, -0.980475402013079480, -0.980485232876024180, -0.980495061287755760, -0.980504887248249690, -0.980514710757481530, -0.980524531815426540, -0.980534350422060160, +-0.980544166577357880, -0.980553980281295150, -0.980563791533847540, -0.980573600334990410, -0.980583406684699340, -0.980593210582949680, -0.980603012029717220, -0.980612811024977100, +-0.980622607568704900, -0.980632401660876170, -0.980642193301466400, -0.980651982490451160, -0.980661769227806230, -0.980671553513506660, -0.980681335347528100, -0.980691114729846270, +-0.980700891660436720, -0.980710666139274930, -0.980720438166336360, -0.980730207741596800, -0.980739974865031730, -0.980749739536616820, -0.980759501756327420, -0.980769261524139350, +-0.980779018840028050, -0.980788773703969220, -0.980798526115938430, -0.980808276075911480, -0.980818023583863720, -0.980827768639770840, -0.980837511243608630, -0.980847251395352560, +-0.980856989094978430, -0.980866724342461800, -0.980876457137778380, -0.980886187480903730, -0.980895915371813640, -0.980905640810484040, -0.980915363796890040, -0.980925084331007670, +-0.980934802412812610, -0.980944518042280560, -0.980954231219387410, -0.980963941944108410, -0.980973650216419580, -0.980983356036296720, -0.980993059403715400, -0.981002760318651410, +-0.981012458781080570, -0.981022154790978540, -0.981031848348321130, -0.981041539453084140, -0.981051228105243480, -0.981060914304774490, -0.981070598051653310, -0.981080279345855620, +-0.981089958187357110, -0.981099634576133920, -0.981109308512161600, -0.981118979995415970, -0.981128649025872820, -0.981138315603508170, -0.981147979728297590, -0.981157641400217110, +-0.981167300619242510, -0.981176957385349710, -0.981186611698514510, -0.981196263558712920, -0.981205912965920520, -0.981215559920113330, -0.981225204421267260, -0.981234846469358210, +-0.981244486064361990, -0.981254123206254710, -0.981263757895011970, -0.981273390130609880, -0.981283019913024250, -0.981292647242231090, -0.981302272118206310, -0.981311894540925820, +-0.981321514510365640, -0.981331132026501680, -0.981340747089310070, -0.981350359698766380, -0.981359969854846860, -0.981369577557527300, -0.981379182806783930, -0.981388785602592460, +-0.981398385944929340, -0.981407983833770040, -0.981417579269090680, -0.981427172250867510, -0.981436762779076320, -0.981446350853693250, -0.981455936474694310, -0.981465519642055530, +-0.981475100355753030, -0.981484678615762610, -0.981494254422060840, -0.981503827774623080, -0.981513398673425910, -0.981522967118445220, -0.981532533109657050, -0.981542096647037730, +-0.981551657730562970, -0.981561216360209210, -0.981570772535952260, -0.981580326257768480, -0.981589877525633760, -0.981599426339524460, -0.981608972699416490, -0.981618516605286210, +-0.981628058057109620, -0.981637597054862980, -0.981647133598522180, -0.981656667688063590, -0.981666199323463330, -0.981675728504697530, -0.981685255231742440, -0.981694779504574400, +-0.981704301323169220, -0.981713820687503350, -0.981723337597552810, -0.981732852053294080, -0.981742364054703050, -0.981751873601756200, -0.981761380694429750, -0.981770885332699740, +-0.981780387516542730, -0.981789887245934520, -0.981799384520851580, -0.981808879341270260, -0.981818371707166680, -0.981827861618517210, -0.981837349075298290, -0.981846834077485740, +-0.981856316625056120, -0.981865796717985790, -0.981875274356250880, -0.981884749539827850, -0.981894222268692940, -0.981903692542822500, -0.981913160362192780, -0.981922625726780240, +-0.981932088636561120, -0.981941549091511660, -0.981951007091608430, -0.981960462636827680, -0.981969915727145760, -0.981979366362539130, -0.981988814542984030, -0.981998260268456820, +-0.982007703538933960, -0.982017144354391910, -0.982026582714806920, -0.982036018620155550, -0.982045452070414050, -0.982054883065558990, -0.982064311605566620, -0.982073737690413730, +-0.982083161320076340, -0.982092582494531020, -0.982102001213754240, -0.982111417477722460, -0.982120831286412370, -0.982130242639799870, -0.982139651537861870, -0.982149057980574720, +-0.982158461967915010, -0.982167863499859070, -0.982177262576383490, -0.982186659197464730, -0.982196053363079360, -0.982205445073203840, -0.982214834327814870, -0.982224221126888560, +-0.982233605470401840, -0.982242987358331040, -0.982252366790652750, -0.982261743767343650, -0.982271118288380210, -0.982280490353738880, -0.982289859963396350, -0.982299227117329200, +-0.982308591815513890, -0.982317954057927100, -0.982327313844545520, -0.982336671175345620, -0.982346026050303970, -0.982355378469397470, -0.982364728432602360, -0.982374075939895450, +-0.982383420991253420, -0.982392763586652730, -0.982402103726070170, -0.982411441409482440, -0.982420776636866000, -0.982430109408197640, -0.982439439723454040, -0.982448767582611790, +-0.982458092985647570, -0.982467415932538170, -0.982476736423260280, -0.982486054457790470, -0.982495370036105650, -0.982504683158182400, -0.982513993823997290, -0.982523302033527330, +-0.982532607786749000, -0.982541911083639200, -0.982551211924174830, -0.982560510308332140, -0.982569806236088250, -0.982579099707419860, -0.982588390722303750, -0.982597679280716620, +-0.982606965382635260, -0.982616249028036570, -0.982625530216897140, -0.982634808949193970, -0.982644085224903980, -0.982653359044003530, -0.982662630406469730, -0.982671899312279270, +-0.982681165761409180, -0.982690429753836250, -0.982699691289537160, -0.982708950368488820, -0.982718206990668030, -0.982727461156051810, -0.982736712864616950, -0.982745962116340240, +-0.982755208911198610, -0.982764453249169060, -0.982773695130228280, -0.982782934554353500, -0.982792171521521210, -0.982801406031708400, -0.982810638084892220, -0.982819867681049340, +-0.982829094820156790, -0.982838319502191690, -0.982847541727130620, -0.982856761494950710, -0.982865978805628980, -0.982875193659142220, -0.982884406055467450, -0.982893615994581690, +-0.982902823476461850, -0.982912028501085060, -0.982921231068428320, -0.982930431178468230, -0.982939628831182240, -0.982948824026547040, -0.982958016764539870, -0.982967207045137630, +-0.982976394868317450, -0.982985580234056240, -0.982994763142331030, -0.983003943593118930, -0.983013121586396980, -0.983022297122142170, -0.983031470200331660, -0.983040640820942450, +-0.983049808983951670, -0.983058974689336450, -0.983068137937073700, -0.983077298727140670, -0.983086457059514360, -0.983095612934171800, -0.983104766351090340, -0.983113917310247000, +-0.983123065811618790, -0.983132211855182960, -0.983141355440916520, -0.983150496568796720, -0.983159635238800680, -0.983168771450905530, -0.983177905205088410, -0.983187036501326660, +-0.983196165339597190, -0.983205291719877580, -0.983214415642144510, -0.983223537106375440, -0.983232656112547510, -0.983241772660637840, -0.983250886750624000, -0.983259998382482790, +-0.983269107556191570, -0.983278214271727570, -0.983287318529068030, -0.983296420328190200, -0.983305519669071430, -0.983314616551688720, -0.983323710976019450, -0.983332802942041060, +-0.983341892449730690, -0.983350979499065470, -0.983360064090022750, -0.983369146222579980, -0.983378225896714310, -0.983387303112403190, -0.983396377869623640, -0.983405450168353120, +-0.983414520008569100, -0.983423587390248710, -0.983432652313369290, -0.983441714777908320, -0.983450774783843130, -0.983459832331150860, -0.983468887419809090, -0.983477940049795270, +-0.983486990221086430, -0.983496037933660030, -0.983505083187493630, -0.983514125982564490, -0.983523166318850060, -0.983532204196327810, -0.983541239614974970, -0.983550272574769010, +-0.983559303075687290, -0.983568331117707470, -0.983577356700806700, -0.983586379824962550, -0.983595400490152480, -0.983604418696353950, -0.983613434443544430, -0.983622447731701270, +-0.983631458560801920, -0.983640466930823960, -0.983649472841744750, -0.983658476293541970, -0.983667477286193080, -0.983676475819675430, -0.983685471893966490, -0.983694465509043940, +-0.983703456664885230, -0.983712445361467850, -0.983721431598769350, -0.983730415376767310, -0.983739396695439190, -0.983748375554762690, -0.983757351954715140, -0.983766325895274240, +-0.983775297376417560, -0.983784266398122550, -0.983793232960366910, -0.983802197063128330, -0.983811158706384140, -0.983820117890112030, -0.983829074614289590, -0.983838028878894600, +-0.983846980683904420, -0.983855930029296720, -0.983864876915049310, -0.983873821341139650, -0.983882763307545540, -0.983891702814244540, -0.983900639861214230, -0.983909574448432300, +-0.983918506575876430, -0.983927436243524300, -0.983936363451353710, -0.983945288199342020, -0.983954210487467230, -0.983963130315706810, -0.983972047684038560, -0.983980962592440280, +-0.983989875040889530, -0.983998785029364110, -0.984007692557841710, -0.984016597626300120, -0.984025500234717130, -0.984034400383070220, -0.984043298071337390, -0.984052193299496230, +-0.984061086067524630, -0.984069976375400390, -0.984078864223101310, -0.984087749610604860, -0.984096632537889040, -0.984105513004931760, -0.984114391011710610, -0.984123266558203480, +-0.984132139644388170, -0.984141010270242590, -0.984149878435744420, -0.984158744140871680, -0.984167607385601940, -0.984176468169913220, -0.984185326493783320, -0.984194182357190140, +-0.984203035760111480, -0.984211886702525350, -0.984220735184409330, -0.984229581205741550, -0.984238424766499810, -0.984247265866661890, -0.984256104506205930, -0.984264940685109720, +-0.984273774403351060, -0.984282605660908080, -0.984291434457758680, -0.984300260793880550, -0.984309084669251710, -0.984317906083850170, -0.984326725037653950, -0.984335541530640850, +-0.984344355562789100, -0.984353167134076280, -0.984361976244480520, -0.984370782893979830, -0.984379587082552240, -0.984388388810175540, -0.984397188076827970, -0.984405984882487430, +-0.984414779227131940, -0.984423571110739530, -0.984432360533288310, -0.984441147494755970, -0.984449931995120870, -0.984458714034360920, -0.984467493612454110, -0.984476270729378710, +-0.984485045385112610, -0.984493817579633830, -0.984502587312920510, -0.984511354584950650, -0.984520119395702500, -0.984528881745153960, -0.984537641633283280, -0.984546399060068580, +-0.984555154025487770, -0.984563906529519190, -0.984572656572140770, -0.984581404153330730, -0.984590149273067090, -0.984598891931328210, -0.984607632128091990, -0.984616369863336890, +-0.984625105137040710, -0.984633837949181690, -0.984642568299738170, -0.984651296188688190, -0.984660021616009960, -0.984668744581681740, -0.984677465085681550, -0.984686183127987840, +-0.984694898708578740, -0.984703611827432160, -0.984712322484526670, -0.984721030679840400, -0.984729736413351490, -0.984738439685038270, -0.984747140494878990, -0.984755838842851780, +-0.984764534728935100, -0.984773228153106970, -0.984781919115345740, -0.984790607615629750, -0.984799293653937260, -0.984807977230246490, -0.984816658344535800, -0.984825336996783650, +-0.984834013186967950, -0.984842686915067270, -0.984851358181059840, -0.984860026984924030, -0.984868693326638070, -0.984877357206180640, -0.984886018623529650, -0.984894677578663560, +-0.984903334071560830, -0.984911988102199710, -0.984920639670558650, -0.984929288776616010, -0.984937935420350130, -0.984946579601739480, -0.984955221320762300, -0.984963860577397270, +-0.984972497371622400, -0.984981131703416280, -0.984989763572757360, -0.984998392979623990, -0.985007019923994750, -0.985015644405847880, -0.985024266425161940, -0.985032885981915300, +-0.985041503076086400, -0.985050117707653830, -0.985058729876595930, -0.985067339582891170, -0.985075946826518000, -0.985084551607455120, -0.985093153925680860, -0.985101753781173710, +-0.985110351173912100, -0.985118946103874630, -0.985127538571039740, -0.985136128575386020, -0.985144716116892250, -0.985153301195536350, -0.985161883811297320, -0.985170463964153530, +-0.985179041654083650, -0.985187616881066150, -0.985196189645079600, -0.985204759946102570, -0.985213327784113630, -0.985221893159091480, -0.985230456071014450, -0.985239016519861340, +-0.985247574505610620, -0.985256130028241080, -0.985264683087731190, -0.985273233684059610, -0.985281781817204940, -0.985290327487145730, -0.985298870693860800, -0.985307411437328580, +-0.985315949717527890, -0.985324485534437300, -0.985333018888035480, -0.985341549778301130, -0.985350078205213140, -0.985358604168749760, -0.985367127668889790, -0.985375648705612120, +-0.985384167278895220, -0.985392683388717990, -0.985401197035059130, -0.985409708217897200, -0.985418216937210880, -0.985426723192979080, -0.985435226985180490, -0.985443728313793900, +-0.985452227178797880, -0.985460723580171340, -0.985469217517892960, -0.985477708991941650, -0.985486198002296090, -0.985494684548934960, -0.985503168631837070, -0.985511650250981310, +-0.985520129406346370, -0.985528606097911260, -0.985537080325654460, -0.985545552089555080, -0.985554021389591690, -0.985562488225743330, -0.985570952597988660, -0.985579414506306710, +-0.985587873950676150, -0.985596330931075900, -0.985604785447484870, -0.985613237499882060, -0.985621687088245930, -0.985630134212555630, -0.985638578872790050, -0.985647021068927880, +-0.985655460800948240, -0.985663898068830150, -0.985672332872552070, -0.985680765212093250, -0.985689195087432470, -0.985697622498548640, -0.985706047445420790, -0.985714469928027910, +-0.985722889946348710, -0.985731307500362420, -0.985739722590047940, -0.985748135215384070, -0.985756545376349710, -0.985764953072924110, -0.985773358305086170, -0.985781761072814790, +-0.985790161376089100, -0.985798559214887900, -0.985806954589190320, -0.985815347498975260, -0.985823737944221960, -0.985832125924909210, -0.985840511441016250, -0.985848894492521890, +-0.985857275079405460, -0.985865653201645880, -0.985874028859222040, -0.985882402052113080, -0.985890772780298130, -0.985899141043756310, -0.985907506842466640, -0.985915870176408250, +-0.985924231045560150, -0.985932589449901360, -0.985940945389411240, -0.985949298864068680, -0.985957649873852810, -0.985965998418742880, -0.985974344498718010, -0.985982688113757220, +-0.985991029263839640, -0.985999367948944720, -0.986007704169051260, -0.986016037924138500, -0.986024369214185680, -0.986032698039171820, -0.986041024399076480, -0.986049348293878360, +-0.986057669723556910, -0.986065988688091370, -0.986074305187460750, -0.986082619221644310, -0.986090930790621490, -0.986099239894371200, -0.986107546532872910, -0.986115850706105630, +-0.986124152414049050, -0.986132451656681840, -0.986140748433983470, -0.986149042745933290, -0.986157334592510430, -0.986165623973694340, -0.986173910889464270, -0.986182195339799230, +-0.986190477324678790, -0.986198756844082090, -0.986207033897988580, -0.986215308486377400, -0.986223580609227990, -0.986231850266519720, -0.986240117458231700, -0.986248382184343520, +-0.986256644444834300, -0.986264904239683490, -0.986273161568870350, -0.986281416432374320, -0.986289668830174770, -0.986297918762251260, -0.986306166228582690, -0.986314411229148760, +-0.986322653763928800, -0.986330893832902180, -0.986339131436048460, -0.986347366573346760, -0.986355599244776670, -0.986363829450317640, -0.986372057189949140, -0.986380282463650280, +-0.986388505271400870, -0.986396725613180040, -0.986404943488967570, -0.986413158898742590, -0.986421371842484910, -0.986429582320173640, -0.986437790331788470, -0.986445995877308750, +-0.986454198956714160, -0.986462399569983940, -0.986470597717097770, -0.986478793398035130, -0.986486986612775450, -0.986495177361298330, -0.986503365643583430, -0.986511551459610000, +-0.986519734809357620, -0.986527915692805960, -0.986536094109934480, -0.986544270060722980, -0.986552443545150590, -0.986560614563197100, -0.986568783114842080, -0.986576949200065110, +-0.986585112818845760, -0.986593273971163590, -0.986601432656998290, -0.986609588876329440, -0.986617742629136480, -0.986625893915399450, -0.986634042735097470, -0.986642189088210440, +-0.986650332974717830, -0.986658474394599530, -0.986666613347834900, -0.986674749834403950, -0.986682883854286040, -0.986691015407460850, -0.986699144493908160, -0.986707271113607560, +-0.986715395266538840, -0.986723516952681570, -0.986731636172015540, -0.986739752924520430, -0.986747867210176040, -0.986755979028961950, -0.986764088380857830, -0.986772195265843480, +-0.986780299683898690, -0.986788401635003030, -0.986796501119136640, -0.986804598136278850, -0.986812692686409480, -0.986820784769508410, -0.986828874385555440, -0.986836961534530270, +-0.986845046216412670, -0.986853128431182450, -0.986861208178819390, -0.986869285459303410, -0.986877360272614190, -0.986885432618731520, -0.986893502497635300, -0.986901569909305220, +-0.986909634853721300, -0.986917697330863430, -0.986925757340711200, -0.986933814883244500, -0.986941869958443350, -0.986949922566287440, -0.986957972706756780, -0.986966020379831170, +-0.986974065585490500, -0.986982108323714690, -0.986990148594483640, -0.986998186397777370, -0.987006221733575440, -0.987014254601857880, -0.987022285002604800, -0.987030312935796020, +-0.987038338401411530, -0.987046361399431030, -0.987054381929834750, -0.987062399992602370, -0.987070415587714130, -0.987078428715149720, -0.987086439374889270, -0.987094447566912780, +-0.987102453291200170, -0.987110456547731440, -0.987118457336486620, -0.987126455657445610, -0.987134451510588430, -0.987142444895895090, -0.987150435813345610, -0.987158424262920110, +-0.987166410244598720, -0.987174393758361020, -0.987182374804187470, -0.987190353382057960, -0.987198329491952520, -0.987206303133851270, -0.987214274307734340, -0.987222243013581640, +-0.987230209251373390, -0.987238173021089740, -0.987246134322710470, -0.987254093156215930, -0.987262049521586140, -0.987270003418801220, -0.987277954847841200, -0.987285903808686530, +-0.987293850301317000, -0.987301794325712740, -0.987309735881854110, -0.987317674969721120, -0.987325611589293880, -0.987333545740552540, -0.987341477423477440, -0.987349406638048710, +-0.987357333384246470, -0.987365257662050850, -0.987373179471442100, -0.987381098812400330, -0.987389015684905780, -0.987396930088938810, -0.987404842024479650, -0.987412751491508090, +-0.987420658490004820, -0.987428563019949860, -0.987436465081323430, -0.987444364674105900, -0.987452261798277390, -0.987460156453818350, -0.987468048640708810, -0.987475938358929220, +-0.987483825608459820, -0.987491710389280850, -0.987499592701372440, -0.987507472544715160, -0.987515349919289240, -0.987523224825075040, -0.987531097262052570, -0.987538967230202400, +-0.987546834729504890, -0.987554699759940260, -0.987562562321488870, -0.987570422414130960, -0.987578280037847090, -0.987586135192617620, -0.987593987878422670, -0.987601838095242930, +-0.987609685843058530, -0.987617531121849800, -0.987625373931597330, -0.987633214272281350, -0.987641052143882310, -0.987648887546380920, -0.987656720479757060, -0.987664550943991420, +-0.987672378939064450, -0.987680204464956520, -0.987688027521648080, -0.987695848109119480, -0.987703666227351400, -0.987711481876324070, -0.987719295056018190, -0.987727105766413870, +-0.987734914007491920, -0.987742719779232560, -0.987750523081616480, -0.987758323914624040, -0.987766122278236010, -0.987773918172432430, -0.987781711597194190, -0.987789502552501530, +-0.987797291038335250, -0.987805077054675570, -0.987812860601503310, -0.987820641678798910, -0.987828420286542940, -0.987836196424715980, -0.987843970093298380, -0.987851741292270940, +-0.987859510021614100, -0.987867276281308440, -0.987875040071334640, -0.987882801391673390, -0.987890560242304930, -0.987898316623210150, -0.987906070534369520, -0.987913821975763720, +-0.987921570947373430, -0.987929317449179110, -0.987937061481161560, -0.987944803043301350, -0.987952542135579150, -0.987960278757975760, -0.987968012910471430, -0.987975744593047160, +-0.987983473805683520, -0.987991200548361200, -0.987998924821061000, -0.988006646623763360, -0.988014365956449090, -0.988022082819098870, -0.988029797211693480, -0.988037509134213620, +-0.988045218586639960, -0.988052925568953190, -0.988060630081134210, -0.988068332123163580, -0.988076031695022340, -0.988083728796690820, -0.988091423428150040, -0.988099115589380680, +-0.988106805280363430, -0.988114492501079410, -0.988122177251508970, -0.988129859531633130, -0.988137539341432670, -0.988145216680888280, -0.988152891549980870, -0.988160563948691340, +-0.988168233877000260, -0.988175901334888640, -0.988183566322337280, -0.988191228839327200, -0.988198888885838840, -0.988206546461853240, -0.988214201567351290, -0.988221854202313900, +-0.988229504366721740, -0.988237152060556070, -0.988244797283797330, -0.988252440036426650, -0.988260080318424830, -0.988267718129772880, -0.988275353470451480, -0.988282986340441870, +-0.988290616739724630, -0.988298244668280980, -0.988305870126091830, -0.988313493113137880, -0.988321113629400120, -0.988328731674859570, -0.988336347249497260, -0.988343960353294080, +-0.988351570986231160, -0.988359179148289080, -0.988366784839449180, -0.988374388059692240, -0.988381988808999300, -0.988389587087351470, -0.988397182894729660, -0.988404776231114780, +-0.988412367096488050, -0.988419955490830390, -0.988427541414123030, -0.988435124866346660, -0.988442705847482390, -0.988450284357511480, -0.988457860396414810, -0.988465433964173630, +-0.988473005060768740, -0.988480573686181250, -0.988488139840392410, -0.988495703523383230, -0.988503264735134720, -0.988510823475628130, -0.988518379744844470, -0.988525933542764750, +-0.988533484869370320, -0.988541033724642300, -0.988548580108561500, -0.988556124021109260, -0.988563665462266820, -0.988571204432015070, -0.988578740930335490, -0.988586274957208970, +-0.988593806512616750, -0.988601335596539950, -0.988608862208959940, -0.988616386349857600, -0.988623908019214400, -0.988631427217011470, -0.988638943943229930, -0.988646458197851020, +-0.988653969980856080, -0.988661479292226140, -0.988668986131942430, -0.988676490499986290, -0.988683992396338970, -0.988691491820981590, -0.988698988773895620, -0.988706483255062160, +-0.988713975264462360, -0.988721464802077680, -0.988728951867889340, -0.988736436461878590, -0.988743918584026770, -0.988751398234315130, -0.988758875412725000, -0.988766350119237860, +-0.988773822353834710, -0.988781292116497010, -0.988788759407206010, -0.988796224225943150, -0.988803686572689690, -0.988811146447427180, -0.988818603850136760, -0.988826058780799770, +-0.988833511239397560, -0.988840961225911590, -0.988848408740323310, -0.988855853782613980, -0.988863296352764930, -0.988870736450757740, -0.988878174076573750, -0.988885609230194310, +-0.988893041911600770, -0.988900472120774590, -0.988907899857697340, -0.988915325122350250, -0.988922747914715020, -0.988930168234772760, -0.988937586082505040, -0.988945001457893440, +-0.988952414360919300, -0.988959824791564190, -0.988967232749809470, -0.988974638235636580, -0.988982041249027220, -0.988989441789962730, -0.988996839858424680, -0.989004235454394530, +-0.989011628577853740, -0.989019019228783880, -0.989026407407166410, -0.989033793112983120, -0.989041176346215250, -0.989048557106844360, -0.989055935394852150, -0.989063311210219950, +-0.989070684552929680, -0.989078055422962570, -0.989085423820300400, -0.989092789744924540, -0.989100153196816880, -0.989107514175958880, -0.989114872682331890, -0.989122228715917820, +-0.989129582276698120, -0.989136933364654580, -0.989144281979768560, -0.989151628122022060, -0.989158971791396340, -0.989166312987873160, -0.989173651711434230, -0.989180987962061110, +-0.989188321739735590, -0.989195653044439240, -0.989202981876153850, -0.989210308234860890, -0.989217632120542260, -0.989224953533179520, -0.989232272472754360, -0.989239588939248570, +-0.989246902932643720, -0.989254214452921610, -0.989261523500064130, -0.989268830074052750, -0.989276134174869260, -0.989283435802495450, -0.989290734956913000, -0.989298031638103810, +-0.989305325846049470, -0.989312617580731750, -0.989319906842132560, -0.989327193630233800, -0.989334477945016830, -0.989341759786463770, -0.989349039154556190, -0.989356316049276100, +-0.989363590470605180, -0.989370862418525340, -0.989378131893018380, -0.989385398894065960, -0.989392663421650110, -0.989399925475752510, -0.989407185056355170, -0.989414442163439880, +-0.989421696796988440, -0.989428948956982860, -0.989436198643404820, -0.989443445856236450, -0.989450690595459310, -0.989457932861055430, -0.989465172653006710, -0.989472409971295150, +-0.989479644815902560, -0.989486877186810830, -0.989494107084001870, -0.989501334507457700, -0.989508559457160100, -0.989515781933091090, -0.989523001935232680, -0.989530219463566780, +-0.989537434518075410, -0.989544647098740350, -0.989551857205543730, -0.989559064838467450, -0.989566269997493530, -0.989573472682603870, -0.989580672893780490, -0.989587870631005510, +-0.989595065894260940, -0.989602258683528580, -0.989609448998790660, -0.989616636840028980, -0.989623822207225780, -0.989631005100363060, -0.989638185519422840, -0.989645363464387030, +-0.989652538935237860, -0.989659711931957560, -0.989666882454527830, -0.989674050502930780, -0.989681216077148650, -0.989688379177163570, -0.989695539802957440, -0.989702697954512710, +-0.989709853631810970, -0.989717006834834660, -0.989724157563565800, -0.989731305817986630, -0.989738451598079160, -0.989745594903825520, -0.989752735735207940, -0.989759874092208450, +-0.989767009974809490, -0.989774143382992850, -0.989781274316740790, -0.989788402776035640, -0.989795528760859410, -0.989802652271194350, -0.989809773307022800, -0.989816891868326780, +-0.989824007955088400, -0.989831121567290140, -0.989838232704914000, -0.989845341367942220, -0.989852447556357150, -0.989859551270141020, -0.989866652509275970, -0.989873751273744220, +-0.989880847563528230, -0.989887941378610030, -0.989895032718972060, -0.989902121584596450, -0.989909207975465440, -0.989916291891561610, -0.989923373332866950, -0.989930452299363830, +-0.989937528791034580, -0.989944602807861560, -0.989951674349827000, -0.989958743416913260, -0.989965810009102550, -0.989972874126377470, -0.989979935768720120, -0.989986994936113080, +-0.989994051628538490, -0.990001105845978670, -0.990008157588416090, -0.990015206855833220, -0.990022253648212280, -0.990029297965535740, -0.990036339807785940, -0.990043379174945230, +-0.990050416066996180, -0.990057450483920910, -0.990064482425702220, -0.990071511892322120, -0.990078538883763400, -0.990085563400008310, -0.990092585441039400, -0.990099605006838910, +-0.990106622097389310, -0.990113636712673270, -0.990120648852673150, -0.990127658517371390, -0.990134665706750570, -0.990141670420792930, -0.990148672659481250, -0.990155672422797780, +-0.990162669710725200, -0.990169664523245840, -0.990176656860342400, -0.990183646721997320, -0.990190634108193080, -0.990197619018912460, -0.990204601454137580, -0.990211581413851240, +-0.990218558898035890, -0.990225533906674230, -0.990232506439748690, -0.990239476497241980, -0.990246444079136530, -0.990253409185414930, -0.990260371816059860, -0.990267331971053770, +-0.990274289650379340, -0.990281244854019250, -0.990288197581956080, -0.990295147834172380, -0.990302095610650750, -0.990309040911374060, -0.990315983736324680, -0.990322924085485280, +-0.990329861958838540, -0.990336797356367260, -0.990343730278054000, -0.990350660723881340, -0.990357588693832060, -0.990364514187888840, -0.990371437206034270, -0.990378357748251110, +-0.990385275814521960, -0.990392191404829810, -0.990399104519157030, -0.990406015157486610, -0.990412923319801130, -0.990419829006083390, -0.990426732216315940, -0.990433632950481700, +-0.990440531208563460, -0.990447426990543780, -0.990454320296405680, -0.990461211126131720, -0.990468099479704710, -0.990474985357107430, -0.990481868758322670, -0.990488749683333220, +-0.990495628132121890, -0.990502504104671560, -0.990509377600964910, -0.990516248620984970, -0.990523117164714310, -0.990529983232135920, -0.990536846823232400, -0.990543707937986850, +-0.990550566576382070, -0.990557422738400970, -0.990564276424026220, -0.990571127633240730, -0.990577976366027400, -0.990584822622369130, -0.990591666402248830, -0.990598507705649390, +-0.990605346532553720, -0.990612182882944610, -0.990619016756805190, -0.990625848154118030, -0.990632677074866350, -0.990639503519032960, -0.990646327486600750, -0.990653148977552740, +-0.990659967991872060, -0.990666784529541270, -0.990673598590543490, -0.990680410174861860, -0.990687219282479050, -0.990694025913378300, -0.990700830067542390, -0.990707631744954460, +-0.990714430945597410, -0.990721227669454360, -0.990728021916508330, -0.990734813686742100, -0.990741602980138800, -0.990748389796681560, -0.990755174136353280, -0.990761955999137300, +-0.990768735385016200, -0.990775512293973320, -0.990782286725991670, -0.990789058681054270, -0.990795828159144240, -0.990802595160244600, -0.990809359684338480, -0.990816121731408980, +-0.990822881301439250, -0.990829638394412290, -0.990836393010311230, -0.990843145149119200, -0.990849894810819200, -0.990856641995394470, -0.990863386702828250, -0.990870128933103670, +-0.990876868686203500, -0.990883605962111340, -0.990890340760810060, -0.990897073082282920, -0.990903802926513140, -0.990910530293483860, -0.990917255183178190, -0.990923977595579490, +-0.990930697530670870, -0.990937414988435460, -0.990944129968856500, -0.990950842471917110, -0.990957552497600760, -0.990964260045890440, -0.990970965116769630, -0.990977667710221220, +-0.990984367826228780, -0.990991065464775330, -0.990997760625844220, -0.991004453309418660, -0.991011143515482030, -0.991017831244017540, -0.991024516495008450, -0.991031199268438190, +-0.991037879564289790, -0.991044557382546820, -0.991051232723192290, -0.991057905586209760, -0.991064575971582480, -0.991071243879293910, -0.991077909309327040, -0.991084572261665350, +-0.991091232736292290, -0.991097890733191210, -0.991104546252345340, -0.991111199293738140, -0.991117849857352850, -0.991124497943173030, -0.991131143551181930, -0.991137786681363100, +-0.991144427333699670, -0.991151065508175220, -0.991157701204773090, -0.991164334423476730, -0.991170965164269610, -0.991177593427134960, -0.991184219212056240, -0.991190842519017120, +-0.991197463348000850, -0.991204081698990880, -0.991210697571970780, -0.991217310966923890, -0.991223921883833680, -0.991230530322683710, -0.991237136283457550, -0.991243739766138440, +-0.991250340770709950, -0.991256939297155640, -0.991263535345458860, -0.991270128915603400, -0.991276720007572610, -0.991283308621350060, -0.991289894756919090, -0.991296478414263490, +-0.991303059593366620, -0.991309638294212150, -0.991316214516783530, -0.991322788261064350, -0.991329359527038270, -0.991335928314688970, -0.991342494623999590, -0.991349058454954020, +-0.991355619807535840, -0.991362178681728600, -0.991368735077515880, -0.991375288994881480, -0.991381840433808730, -0.991388389394281420, -0.991394935876283130, -0.991401479879797430, +-0.991408021404808100, -0.991414560451298720, -0.991421097019252850, -0.991427631108654280, -0.991434162719486810, -0.991440691851733780, -0.991447218505378980, -0.991453742680406200, +-0.991460264376799020, -0.991466783594541100, -0.991473300333616470, -0.991479814594008470, -0.991486326375700890, -0.991492835678677520, -0.991499342502921930, -0.991505846848418140, +-0.991512348715149710, -0.991518848103100430, -0.991525345012253980, -0.991531839442594150, -0.991538331394104850, -0.991544820866769650, -0.991551307860572330, -0.991557792375496790, +-0.991564274411526720, -0.991570753968646130, -0.991577231046838480, -0.991583705646087890, -0.991590177766377920, -0.991596647407692490, -0.991603114570015490, -0.991609579253330710, +-0.991616041457621940, -0.991622501182873100, -0.991628958429068060, -0.991635413196190640, -0.991641865484224620, -0.991648315293154000, -0.991654762622962480, -0.991661207473634070, +-0.991667649845152650, -0.991674089737502260, -0.991680527150666570, -0.991686962084629480, -0.991693394539374990, -0.991699824514887030, -0.991706252011149590, -0.991712677028146360, +-0.991719099565861570, -0.991725519624279020, -0.991731937203382710, -0.991738352303156550, -0.991744764923584430, -0.991751175064650380, -0.991757582726338400, -0.991763987908632520, +-0.991770390611516730, -0.991776790834974830, -0.991783188578991060, -0.991789583843549210, -0.991795976628633500, -0.991802366934227740, -0.991808754760316160, -0.991815140106882650, +-0.991821522973911350, -0.991827903361386260, -0.991834281269291300, -0.991840656697610680, -0.991847029646328430, -0.991853400115428550, -0.991859768104895290, -0.991866133614712650, +-0.991872496644864540, -0.991878857195335200, -0.991885215266108730, -0.991891570857169170, -0.991897923968500740, -0.991904274600087570, -0.991910622751913550, -0.991916968423963040, +-0.991923311616220160, -0.991929652328669140, -0.991935990561293780, -0.991942326314078530, -0.991948659587007400, -0.991954990380064630, -0.991961318693234450, -0.991967644526500990, +-0.991973967879848260, -0.991980288753260720, -0.991986607146722490, -0.991992923060217690, -0.991999236493730560, -0.992005547447245340, -0.992011855920746250, -0.992018161914217540, +-0.992024465427643550, -0.992030766461008300, -0.992037065014296120, -0.992043361087491250, -0.992049654680578040, -0.992055945793540620, -0.992062234426363540, -0.992068520579030610, +-0.992074804251526500, -0.992081085443835330, -0.992087364155941450, -0.992093640387829210, -0.992099914139482840, -0.992106185410886690, -0.992112454202025100, -0.992118720512882410, +-0.992124984343442870, -0.992131245693690820, -0.992137504563610720, -0.992143760953186790, -0.992150014862403510, -0.992156266291245310, -0.992162515239696340, -0.992168761707741040, +-0.992175005695363880, -0.992181247202549190, -0.992187486229281320, -0.992193722775544850, -0.992199956841324000, -0.992206188426603240, -0.992212417531367130, -0.992218644155599900, +-0.992224868299286020, -0.992231089962410050, -0.992237309144956230, -0.992243525846909220, -0.992249740068253510, -0.992255951808973300, -0.992262161069053290, -0.992268367848477830, +-0.992274572147231470, -0.992280773965298570, -0.992286973302663910, -0.992293170159311620, -0.992299364535226600, -0.992305556430393090, -0.992311745844795760, -0.992317932778418950, +-0.992324117231247360, -0.992330299203265430, -0.992336478694457850, -0.992342655704809060, -0.992348830234303650, -0.992355002282926060, -0.992361171850660970, -0.992367338937493070, +-0.992373503543406700, -0.992379665668386530, -0.992385825312417370, -0.992391982475483550, -0.992398137157569750, -0.992404289358660760, -0.992410439078740940, -0.992416586317794950, +-0.992422731075807580, -0.992428873352763310, -0.992435013148647020, -0.992441150463443060, -0.992447285297136220, -0.992453417649711180, -0.992459547521152620, -0.992465674911445220, +-0.992471799820573540, -0.992477922248522380, -0.992484042195276530, -0.992490159660820440, -0.992496274645139120, -0.992502387148216920, -0.992508497170038860, -0.992514604710589500, +-0.992520709769853740, -0.992526812347816030, -0.992532912444461510, -0.992539010059774630, -0.992545105193740170, -0.992551197846342940, -0.992557288017567710, -0.992563375707399280, +-0.992569460915822430, -0.992575543642821860, -0.992581623888382450, -0.992587701652489220, -0.992593776935126510, -0.992599849736279350, -0.992605920055932620, -0.992611987894071010, +-0.992618053250679530, -0.992624116125742970, -0.992630176519246010, -0.992636234431173550, -0.992642289861510600, -0.992648342810241950, -0.992654393277352390, -0.992660441262826820, +-0.992666486766650150, -0.992672529788807270, -0.992678570329283190, -0.992684608388062610, -0.992690643965130510, -0.992696677060471710, -0.992702707674071320, -0.992708735805914120, +-0.992714761455985140, -0.992720784624269270, -0.992726805310751300, -0.992732823515416360, -0.992738839238249460, -0.992744852479235380, -0.992750863238359150, -0.992756871515605770, +-0.992762877310960250, -0.992768880624407490, -0.992774881455932730, -0.992780879805520540, -0.992786875673156270, -0.992792869058824690, -0.992798859962511050, -0.992804848384200240, +-0.992810834323877290, -0.992816817781527310, -0.992822798757135190, -0.992828777250686080, -0.992834753262165080, -0.992840726791557100, -0.992846697838847380, -0.992852666404020920, +-0.992858632487062740, -0.992864596087958180, -0.992870557206691930, -0.992876515843249320, -0.992882471997615480, -0.992888425669775420, -0.992894376859714270, -0.992900325567417250, +-0.992906271792869390, -0.992912215536055800, -0.992918156796961720, -0.992924095575572150, -0.992930031871872450, -0.992935965685847630, -0.992941897017482920, -0.992947825866763440, +-0.992953752233674440, -0.992959676118201020, -0.992965597520328420, -0.992971516440041890, -0.992977432877326430, -0.992983346832167490, -0.992989258304550200, -0.992995167294459800, +-0.993001073801881410, -0.993006977826800250, -0.993012879369201800, -0.993018778429071050, -0.993024675006393350, -0.993030569101153950, -0.993036460713338180, -0.993042349842931380, +-0.993048236489918580, -0.993054120654285110, -0.993060002336016430, -0.993065881535097780, -0.993071758251514390, -0.993077632485251600, -0.993083504236294770, -0.993089373504629110, +-0.993095240290239990, -0.993101104593112850, -0.993106966413232930, -0.993112825750585570, -0.993118682605156120, -0.993124536976930040, -0.993130388865892550, -0.993136238272029240, +-0.993142085195325210, -0.993147929635765920, -0.993153771593336840, -0.993159611068023310, -0.993165448059810880, -0.993171282568684810, -0.993177114594630430, -0.993182944137633310, +-0.993188771197678790, -0.993194595774752330, -0.993200417868839500, -0.993206237479925540, -0.993212054607996000, -0.993217869253036230, -0.993223681415032030, -0.993229491093968410, +-0.993235298289831150, -0.993241103002605600, -0.993246905232277320, -0.993252704978831780, -0.993258502242254540, -0.993264297022531050, -0.993270089319646670, -0.993275879133587170, +-0.993281666464337910, -0.993287451311884560, -0.993293233676212470, -0.993299013557307430, -0.993304790955154780, -0.993310565869740200, -0.993316338301049150, -0.993322108249067300, +-0.993327875713780120, -0.993333640695173270, -0.993339403193232330, -0.993345163207942970, -0.993350920739290650, -0.993356675787261060, -0.993362428351839630, -0.993368178433012280, +-0.993373926030764350, -0.993379671145081740, -0.993385413775949910, -0.993391153923354420, -0.993396891587281280, -0.993402626767715850, -0.993408359464643790, -0.993414089678050780, +-0.993419817407922620, -0.993425542654244880, -0.993431265417003330, -0.993436985696183660, -0.993442703491771440, -0.993448418803752450, -0.993454131632112380, -0.993459841976837010, +-0.993465549837912130, -0.993471255215323310, -0.993476958109056340, -0.993482658519097010, -0.993488356445431100, -0.993494051888044180, -0.993499744846922160, -0.993505435322050710, +-0.993511123313415730, -0.993516808821003130, -0.993522491844798350, -0.993528172384787300, -0.993533850440955770, -0.993539526013289760, -0.993545199101774860, -0.993550869706396940, +-0.993556537827141820, -0.993562203463995490, -0.993567866616943520, -0.993573527285972040, -0.993579185471066610, -0.993584841172213240, -0.993590494389397730, -0.993596145122606080, +-0.993601793371823970, -0.993607439137037530, -0.993613082418232430, -0.993618723215394570, -0.993624361528509860, -0.993629997357564300, -0.993635630702543680, -0.993641261563434130, +-0.993646889940221320, -0.993652515832891270, -0.993658139241430090, -0.993663760165823470, -0.993669378606057420, -0.993674994562117830, -0.993680608033990830, -0.993686219021662430, +-0.993691827525118420, -0.993697433544344810, -0.993703037079327610, -0.993708638130052830, -0.993714236696506380, -0.993719832778674480, -0.993725426376542930, -0.993731017490097730, +-0.993736606119325130, -0.993742192264211010, -0.993747775924741280, -0.993753357100902180, -0.993758935792679710, -0.993764512000059890, -0.993770085723028830, -0.993775656961572550, +-0.993781225715677060, -0.993786791985328600, -0.993792355770513060, -0.993797917071216670, -0.993803475887425460, -0.993809032219125530, -0.993814586066303130, -0.993820137428944150, +-0.993825686307034940, -0.993831232700561510, -0.993836776609509980, -0.993842318033866470, -0.993847856973617110, -0.993853393428748120, -0.993858927399245860, -0.993864458885096110, +-0.993869987886285220, -0.993875514402799310, -0.993881038434624720, -0.993886559981747460, -0.993892079044153780, -0.993897595621830000, -0.993903109714762150, -0.993908621322936560, +-0.993914130446339470, -0.993919637084957010, -0.993925141238775400, -0.993930642907780990, -0.993936142091959910, -0.993941638791298600, -0.993947133005783190, -0.993952624735399910, +-0.993958113980135010, -0.993963600739974810, -0.993969085014905660, -0.993974566804913810, -0.993980046109985470, -0.993985522930107110, -0.993990997265264850, -0.993996469115445260, +-0.994001938480634450, -0.994007405360818660, -0.994012869755984460, -0.994018331666118080, -0.994023791091205760, -0.994029248031234160, -0.994034702486189300, -0.994040154456057760, +-0.994045603940825750, -0.994051050940479740, -0.994056495455006180, -0.994061937484391310, -0.994067377028621580, -0.994072814087683440, -0.994078248661563360, -0.994083680750247670, +-0.994089110353722600, -0.994094537471974850, -0.994099962104990740, -0.994105384252756740, -0.994110803915259300, -0.994116221092484880, -0.994121635784419810, -0.994127047991050670, +-0.994132457712363920, -0.994137864948346110, -0.994143269698983480, -0.994148671964262820, -0.994154071744170360, -0.994159469038692790, -0.994164863847816660, -0.994170256171528210, +-0.994175646009814120, -0.994181033362660950, -0.994186418230055270, -0.994191800611983530, -0.994197180508432200, -0.994202557919387940, -0.994207932844837330, -0.994213305284766810, +-0.994218675239163070, -0.994224042708012680, -0.994229407691302190, -0.994234770189018070, -0.994240130201147100, -0.994245487727675960, -0.994250842768590880, -0.994256195323878770, +-0.994261545393526180, -0.994266892977519690, -0.994272238075845970, -0.994277580688491810, -0.994282920815443560, -0.994288258456688000, -0.994293593612211810, -0.994298926282001560, +-0.994304256466044030, -0.994309584164325910, -0.994314909376833870, -0.994320232103554470, -0.994325552344474620, -0.994330870099580770, -0.994336185368859820, -0.994341498152298330, +-0.994346808449883100, -0.994352116261600800, -0.994357421587438450, -0.994362724427382380, -0.994368024781419390, -0.994373322649536480, -0.994378618031720230, -0.994383910927957420, +-0.994389201338234830, -0.994394489262539260, -0.994399774700857500, -0.994405057653176330, -0.994410338119482430, -0.994415616099762700, -0.994420891594003930, -0.994426164602192910, +-0.994431435124316530, -0.994436703160361590, -0.994441968710314870, -0.994447231774163170, -0.994452492351893480, -0.994457750443492490, -0.994463006048947110, -0.994468259168244220, +-0.994473509801370730, -0.994478757948313420, -0.994484003609059200, -0.994489246783595070, -0.994494487471907830, -0.994499725673984260, -0.994504961389811370, -0.994510194619376180, +-0.994515425362665570, -0.994520653619666240, -0.994525879390365300, -0.994531102674749650, -0.994536323472806290, -0.994541541784522030, -0.994546757609883980, -0.994551970948879040, +-0.994557181801494220, -0.994562390167716410, -0.994567596047532640, -0.994572799440929910, -0.994578000347895120, -0.994583198768415280, -0.994588394702477510, -0.994593588150068820, +-0.994598779111176110, -0.994603967585786400, -0.994609153573886800, -0.994614337075464320, -0.994619518090505970, -0.994624696618998880, -0.994629872660930060, -0.994635046216286510, +-0.994640217285055360, -0.994645385867223730, -0.994650551962778520, -0.994655715571706960, -0.994660876693996170, -0.994666035329633160, -0.994671191478605050, -0.994676345140898980, +-0.994681496316502050, -0.994686645005401380, -0.994691791207584110, -0.994696934923037230, -0.994702076151748100, -0.994707214893703840, -0.994712351148891450, -0.994717484917298280, +-0.994722616198911450, -0.994727744993717970, -0.994732871301705070, -0.994737995122860100, -0.994743116457170060, -0.994748235304622310, -0.994753351665203960, -0.994758465538902240, +-0.994763576925704270, -0.994768685825597410, -0.994773792238568880, -0.994778896164605800, -0.994783997603695510, -0.994789096555825260, -0.994794193020982150, -0.994799286999153650, +-0.994804378490326990, -0.994809467494489290, -0.994814554011627990, -0.994819638041730240, -0.994824719584783470, -0.994829798640774920, -0.994834875209691720, -0.994839949291521420, +-0.994845020886251260, -0.994850089993868590, -0.994855156614360640, -0.994860220747714740, -0.994865282393918360, -0.994870341552958730, -0.994875398224823290, -0.994880452409499410, +-0.994885504106974290, -0.994890553317235530, -0.994895600040270220, -0.994900644276066060, -0.994905686024610160, -0.994910725285890200, -0.994915762059893400, -0.994920796346607130, +-0.994925828146018820, -0.994930857458116050, -0.994935884282886040, -0.994940908620316370, -0.994945930470394370, -0.994950949833107610, -0.994955966708443550, -0.994960981096389530, +-0.994965992996933000, -0.994971002410061420, -0.994976009335762470, -0.994981013774023370, -0.994986015724831920, -0.994991015188175340, -0.994996012164041210, -0.995001006652416970, +-0.995005998653290310, -0.995010988166648680, -0.995015975192479530, -0.995020959730770430, -0.995025941781508940, -0.995030921344682630, -0.995035898420279060, -0.995040873008285590, +-0.995045845108690100, -0.995050814721479830, -0.995055781846642670, -0.995060746484166090, -0.995065708634037540, -0.995070668296244690, -0.995075625470775220, -0.995080580157616690, +-0.995085532356756670, -0.995090482068182850, -0.995095429291882770, -0.995100374027844240, -0.995105316276054700, -0.995110256036501940, -0.995115193309173420, -0.995120128094057030, +-0.995125060391140240, -0.995129990200410820, -0.995134917521856450, -0.995139842355464820, -0.995144764701223480, -0.995149684559120340, -0.995154601929142850, -0.995159516811279010, +-0.995164429205516290, -0.995169339111842470, -0.995174246530245330, -0.995179151460712560, -0.995184053903232060, -0.995188953857791270, -0.995193851324378100, -0.995198746302980330, +-0.995203638793585750, -0.995208528796181930, -0.995213416310756990, -0.995218301337298380, -0.995223183875794120, -0.995228063926231750, -0.995232941488599310, -0.995237816562884460, +-0.995242689149075100, -0.995247559247159020, -0.995252426857124010, -0.995257291978958070, -0.995262154612648780, -0.995267014758184130, -0.995271872415551930, -0.995276727584740060, +-0.995281580265736320, -0.995286430458528830, -0.995291278163105030, -0.995296123379453170, -0.995300966107560910, -0.995305806347416280, -0.995310644099007160, -0.995315479362321340, +-0.995320312137346840, -0.995325142424071660, -0.995329970222483600, -0.995334795532570650, -0.995339618354320610, -0.995344438687721490, -0.995349256532761410, -0.995354071889428040, +-0.995358884757709730, -0.995363695137594040, -0.995368503029069100, -0.995373308432122910, -0.995378111346743480, -0.995382911772918710, -0.995387709710636730, -0.995392505159885420, +-0.995397298120652920, -0.995402088592927110, -0.995406876576696130, -0.995411662071947980, -0.995416445078670550, -0.995421225596852090, -0.995426003626480590, -0.995430779167544190, +-0.995435552220030660, -0.995440322783928240, -0.995445090859225060, -0.995449856445909220, -0.995454619543968630, -0.995459380153391530, -0.995464138274166020, -0.995468893906280130, +-0.995473647049722080, -0.995478397704479880, -0.995483145870541650, -0.995487891547895520, -0.995492634736529710, -0.995497375436432350, -0.995502113647591560, -0.995506849369995450, +-0.995511582603632150, -0.995516313348490000, -0.995521041604557010, -0.995525767371821410, -0.995530490650271330, -0.995535211439895100, -0.995539929740680840, -0.995544645552616790, +-0.995549358875691180, -0.995554069709892020, -0.995558778055207760, -0.995563483911626520, -0.995568187279136650, -0.995572888157726270, -0.995577586547383710, -0.995582282448097100, +-0.995586975859854780, -0.995591666782645100, -0.995596355216456170, -0.995601041161276460, -0.995605724617094070, -0.995610405583897350, -0.995615084061674650, -0.995619760050414300, +-0.995624433550104440, -0.995629104560733610, -0.995633773082289950, -0.995638439114761800, -0.995643102658137600, -0.995647763712405710, -0.995652422277554460, -0.995657078353571980, +-0.995661731940446940, -0.995666383038167460, -0.995671031646722100, -0.995675677766099110, -0.995680321396286930, -0.995684962537274010, -0.995689601189048590, -0.995694237351599340, +-0.995698871024914280, -0.995703502208982180, -0.995708130903791290, -0.995712757109330050, -0.995717380825587030, -0.995722002052550460, -0.995726620790208910, -0.995731237038550710, +-0.995735850797564550, -0.995740462067238650, -0.995745070847561700, -0.995749677138522030, -0.995754280940108090, -0.995758882252308570, -0.995763481075111810, -0.995768077408506370, +-0.995772671252480700, -0.995777262607023370, -0.995781851472122840, -0.995786437847767770, -0.995791021733946510, -0.995795603130647740, -0.995800182037860030, -0.995804758455571700, +-0.995809332383771560, -0.995813903822448170, -0.995818472771589860, -0.995823039231185540, -0.995827603201223430, -0.995832164681692560, -0.995836723672581140, -0.995841280173877850, +-0.995845834185571490, -0.995850385707650390, -0.995854934740103450, -0.995859481282919230, -0.995864025336086200, -0.995868566899593130, -0.995873105973428600, -0.995877642557581380, +-0.995882176652039930, -0.995886708256793150, -0.995891237371829610, -0.995895763997137860, -0.995900288132706920, -0.995904809778525020, -0.995909328934581280, -0.995913845600864040, +-0.995918359777362320, -0.995922871464064660, -0.995927380660959870, -0.995931887368036620, -0.995936391585283580, -0.995940893312689650, -0.995945392550243390, -0.995949889297933710, +-0.995954383555749280, -0.995958875323678880, -0.995963364601711310, -0.995967851389835350, -0.995972335688039780, -0.995976817496313280, -0.995981296814644870, -0.995985773643023100, +-0.995990247981436980, -0.995994719829875200, -0.995999189188326640, -0.996003656056780100, -0.996008120435224350, -0.996012582323648420, -0.996017041722040970, -0.996021498630390910, +-0.996025953048687020, -0.996030404976918420, -0.996034854415073670, -0.996039301363141890, -0.996043745821111880, -0.996048187788972420, -0.996052627266712510, -0.996057064254320950, +-0.996061498751786960, -0.996065930759098990, -0.996070360276246290, -0.996074787303217630, -0.996079211840002140, -0.996083633886588490, -0.996088053442965800, -0.996092470509122970, +-0.996096885085048900, -0.996101297170732700, -0.996105706766163280, -0.996110113871329640, -0.996114518486220570, -0.996118920610825300, -0.996123320245132620, -0.996127717389131750, +-0.996132112042811600, -0.996136504206161180, -0.996140893879169380, -0.996145281061825430, -0.996149665754118230, -0.996154047956036900, -0.996158427667570460, -0.996162804888707900, +-0.996167179619438350, -0.996171551859750930, -0.996175921609634530, -0.996180288869078390, -0.996184653638071520, -0.996189015916602920, -0.996193375704661820, -0.996197733002237460, +-0.996202087809318630, -0.996206440125894540, -0.996210789951954330, -0.996215137287487230, -0.996219482132482240, -0.996223824486928590, -0.996228164350815290, -0.996232501724131690, +-0.996236836606866900, -0.996241168999009830, -0.996245498900549920, -0.996249826311476290, -0.996254151231778070, -0.996258473661444490, -0.996262793600464770, -0.996267111048827920, +-0.996271426006523410, -0.996275738473540230, -0.996280048449867840, -0.996284355935495250, -0.996288660930411800, -0.996292963434606600, -0.996297263448069130, -0.996301560970788370, +-0.996305856002753900, -0.996310148543954610, -0.996314438594380070, -0.996318726154019400, -0.996323011222861820, -0.996327293800896910, -0.996331573888113550, -0.996335851484501430, +-0.996340126590049560, -0.996344399204747380, -0.996348669328584240, -0.996352936961549470, -0.996357202103632210, -0.996361464754822120, -0.996365724915108220, -0.996369982584480170, +-0.996374237762927110, -0.996378490450438360, -0.996382740647003500, -0.996386988352611750, -0.996391233567252450, -0.996395476290915180, -0.996399716523589160, -0.996403954265263850, +-0.996408189515928690, -0.996412422275573030, -0.996416652544186320, -0.996420880321758020, -0.996425105608277460, -0.996429328403734100, -0.996433548708117510, -0.996437766521417020, +-0.996441981843622090, -0.996446194674722290, -0.996450405014706830, -0.996454612863565510, -0.996458818221287680, -0.996463021087862780, -0.996467221463280260, -0.996471419347529700, +-0.996475614740600530, -0.996479807642482450, -0.996483998053164790, -0.996488185972637110, -0.996492371400888980, -0.996496554337910070, -0.996500734783689610, -0.996504912738217290, +-0.996509088201482760, -0.996513261173475500, -0.996517431654185050, -0.996521599643601210, -0.996525765141713200, -0.996529928148510710, -0.996534088663983520, -0.996538246688121080, +-0.996542402220913060, -0.996546555262348920, -0.996550705812418450, -0.996554853871111310, -0.996558999438416860, -0.996563142514325100, -0.996567283098825360, -0.996571421191907450, +-0.996575556793561020, -0.996579689903775660, -0.996583820522541130, -0.996587948649847010, -0.996592074285682970, -0.996596197430038800, -0.996600318082904170, -0.996604436244268640, +-0.996608551914122010, -0.996612665092454160, -0.996616775779254450, -0.996620883974512980, -0.996624989678219220, -0.996629092890363060, -0.996633193610934050, -0.996637291839922110, +-0.996641387577316910, -0.996645480823108220, -0.996649571577285950, -0.996653659839839670, -0.996657745610759260, -0.996661828890034520, -0.996665909677655120, -0.996669987973610950, +-0.996674063777891920, -0.996678137090487580, -0.996682207911388060, -0.996686276240582920, -0.996690342078062170, -0.996694405423815490, -0.996698466277832760, -0.996702524640104000, +-0.996706580510618780, -0.996710633889367200, -0.996714684776339070, -0.996718733171524150, -0.996722779074912470, -0.996726822486493690, -0.996730863406257940, -0.996734901834195110, +-0.996738937770294990, -0.996742971214547470, -0.996747002166942560, -0.996751030627470170, -0.996755056596120180, -0.996759080072882500, -0.996763101057747130, -0.996767119550704070, +-0.996771135551743240, -0.996775149060854520, -0.996779160078027910, -0.996783168603253330, -0.996787174636521000, -0.996791178177820590, -0.996795179227142230, -0.996799177784476020, +-0.996803173849811870, -0.996807167423139680, -0.996811158504449680, -0.996815147093731760, -0.996819133190975930, -0.996823116796172300, -0.996827097909310900, -0.996831076530381720, +-0.996835052659374890, -0.996839026296280410, -0.996842997441088290, -0.996846966093788760, -0.996850932254371710, -0.996854895922827390, -0.996858857099145900, -0.996862815783317150, +-0.996866771975331470, -0.996870725675178870, -0.996874676882849360, -0.996878625598333290, -0.996882571821620540, -0.996886515552701360, -0.996890456791565960, -0.996894395538204360, +-0.996898331792606780, -0.996902265554763470, -0.996906196824664300, -0.996910125602299750, -0.996914051887659910, -0.996917975680734920, -0.996921896981515010, -0.996925815789990290, +-0.996929732106151100, -0.996933645929987570, -0.996937557261489920, -0.996941466100648380, -0.996945372447453180, -0.996949276301894450, -0.996953177663962740, -0.996957076533647960, +-0.996960972910940440, -0.996964866795830520, -0.996968758188308430, -0.996972647088364530, -0.996976533495988910, -0.996980417411172050, -0.996984298833904050, -0.996988177764175370, +-0.996992054201976230, -0.996995928147296980, -0.996999799600127860, -0.997003668560459190, -0.997007535028281430, -0.997011399003584930, -0.997015260486359800, -0.997019119476596490, +-0.997022975974285460, -0.997026829979416940, -0.997030681491981370, -0.997034530511969110, -0.997038377039370480, -0.997042221074175950, -0.997046062616375850, -0.997049901665960640, +-0.997053738222920650, -0.997057572287246340, -0.997061403858928050, -0.997065232937956240, -0.997069059524321450, -0.997072883618013940, -0.997076705219024140, -0.997080524327342730, +-0.997084340942959830, -0.997088155065866230, -0.997091966696052160, -0.997095775833508170, -0.997099582478224830, -0.997103386630192490, -0.997107188289401700, -0.997110987455842920, +-0.997114784129506710, -0.997118578310383420, -0.997122369998463820, -0.997126159193738150, -0.997129945896197300, -0.997133730105831400, -0.997137511822631220, -0.997141291046587330, +-0.997145067777690080, -0.997148842015930240, -0.997152613761298270, -0.997156383013784840, -0.997160149773380410, -0.997163914040075650, -0.997167675813861010, -0.997171435094727280, +-0.997175191882664900, -0.997178946177664450, -0.997182697979716810, -0.997186447288812340, -0.997190194104941810, -0.997193938428095670, -0.997197680258264830, -0.997201419595439730, +-0.997205156439611050, -0.997208890790769460, -0.997212622648905640, -0.997216352014010380, -0.997220078886074220, -0.997223803265087750, -0.997227525151041850, -0.997231244543927090, +-0.997234961443734250, -0.997238675850454000, -0.997242387764077140, -0.997246097184594230, -0.997249804111996150, -0.997253508546273480, -0.997257210487417000, -0.997260909935417610, +-0.997264606890265860, -0.997268301351952550, -0.997271993320468560, -0.997275682795804590, -0.997279369777951510, -0.997283054266899890, -0.997286736262640640, -0.997290415765164530, +-0.997294092774462460, -0.997297767290525110, -0.997301439313343360, -0.997305108842908020, -0.997308775879209850, -0.997312440422239770, -0.997316102471988540, -0.997319762028447190, +-0.997323419091606270, -0.997327073661456900, -0.997330725737989860, -0.997334375321195950, -0.997338022411066170, -0.997341667007591300, -0.997345309110762250, -0.997348948720569890, +-0.997352585837005260, -0.997356220460059120, -0.997359852589722480, -0.997363482225986140, -0.997367109368841100, -0.997370734018278250, -0.997374356174288600, -0.997377975836863050, +-0.997381593005992610, -0.997385207681668050, -0.997388819863880730, -0.997392429552621200, -0.997396036747880580, -0.997399641449649880, -0.997403243657920100, -0.997406843372682150, +-0.997410440593927250, -0.997414035321646080, -0.997417627555829860, -0.997421217296469600, -0.997424804543556310, -0.997428389297081000, -0.997431971557034670, -0.997435551323408440, +-0.997439128596193330, -0.997442703375380550, -0.997446275660960780, -0.997449845452925480, -0.997453412751265420, -0.997456977555971960, -0.997460539867035980, -0.997464099684448710, +-0.997467657008201170, -0.997471211838284470, -0.997474764174689720, -0.997478314017408160, -0.997481861366430690, -0.997485406221748640, -0.997488948583353020, -0.997492488451235060, +-0.997496025825385880, -0.997499560705796710, -0.997503093092458550, -0.997506622985362630, -0.997510150384500300, -0.997513675289862460, -0.997517197701440540, -0.997520717619225560, +-0.997524235043208750, -0.997527749973381340, -0.997531262409734550, -0.997534772352259740, -0.997538279800947890, -0.997541784755790360, -0.997545287216778380, -0.997548787183903160, +-0.997552284657156060, -0.997555779636528080, -0.997559272122010790, -0.997562762113595290, -0.997566249611272830, -0.997569734615034840, -0.997573217124872460, -0.997576697140777010, +-0.997580174662739850, -0.997583649690752310, -0.997587122224805610, -0.997590592264891000, -0.997594059811000020, -0.997597524863123810, -0.997600987421253920, -0.997604447485381460, +-0.997607905055497900, -0.997611360131594570, -0.997614812713662920, -0.997618262801694190, -0.997621710395679710, -0.997625155495611150, -0.997628598101479520, -0.997632038213276510, +-0.997635475830993320, -0.997638910954621430, -0.997642343584152380, -0.997645773719577300, -0.997649201360887970, -0.997652626508075510, -0.997656049161131600, -0.997659469320047450, +-0.997662886984814650, -0.997666302155424730, -0.997669714831868950, -0.997673125014138850, -0.997676532702226120, -0.997679937896121860, -0.997683340595817870, -0.997686740801305480, +-0.997690138512576260, -0.997693533729621660, -0.997696926452433240, -0.997700316681002560, -0.997703704415321080, -0.997707089655380240, -0.997710472401171830, -0.997713852652687080, +-0.997717230409917780, -0.997720605672855370, -0.997723978441491520, -0.997727348715817700, -0.997730716495825450, -0.997734081781506470, -0.997737444572852290, -0.997740804869854500, +-0.997744162672504650, -0.997747517980794420, -0.997750870794715360, -0.997754221114259150, -0.997757568939417360, -0.997760914270181760, -0.997764257106543710, -0.997767597448495080, +-0.997770935296027560, -0.997774270649132600, -0.997777603507801980, -0.997780933872027380, -0.997784261741800460, -0.997787587117112800, -0.997790909997956170, -0.997794230384322360, +-0.997797548276202930, -0.997800863673589560, -0.997804176576474130, -0.997807486984848220, -0.997810794898703720, -0.997814100318032080, -0.997817403242825200, -0.997820703673074850, +-0.997824001608772710, -0.997827297049910580, -0.997830589996480220, -0.997833880448473430, -0.997837168405881880, -0.997840453868697460, -0.997843736836911850, -0.997847017310516840, +-0.997850295289504420, -0.997853570773866160, -0.997856843763593960, -0.997860114258679820, -0.997863382259115310, -0.997866647764892310, -0.997869910776002620, -0.997873171292438240, +-0.997876429314190960, -0.997879684841252560, -0.997882937873615040, -0.997886188411270080, -0.997889436454209580, -0.997892682002425650, -0.997895925055909850, -0.997899165614654300, +-0.997902403678650910, -0.997905639247891440, -0.997908872322367910, -0.997912102902072220, -0.997915330986996250, -0.997918556577131910, -0.997921779672471200, -0.997925000273006120, +-0.997928218378728470, -0.997931433989630360, -0.997934647105703570, -0.997937857726940100, -0.997941065853332090, -0.997944271484871410, -0.997947474621549980, -0.997950675263359900, +-0.997953873410293180, -0.997957069062341720, -0.997960262219497630, -0.997963452881752920, -0.997966641049099490, -0.997969826721529450, -0.997973009899034920, -0.997976190581607910, +-0.997979368769240320, -0.997982544461924360, -0.997985717659651940, -0.997988888362415280, -0.997992056570206510, -0.997995222283017510, -0.997998385500840410, -0.998001546223667320, +-0.998004704451490480, -0.998007860184301880, -0.998011013422093640, -0.998014164164857780, -0.998017312412586510, -0.998020458165271960, -0.998023601422906360, -0.998026742185481710, +-0.998029880452990240, -0.998033016225423950, -0.998036149502775190, -0.998039280285036080, -0.998042408572198720, -0.998045534364255360, -0.998048657661198100, -0.998051778463019290, +-0.998054896769711040, -0.998058012581265590, -0.998061125897675040, -0.998064236718931630, -0.998067345045027700, -0.998070450875955360, -0.998073554211706960, -0.998076655052274610, +-0.998079753397650650, -0.998082849247827310, -0.998085942602796820, -0.998089033462551510, -0.998092121827083510, -0.998095207696385270, -0.998098291070449120, -0.998101371949267180, +-0.998104450332831790, -0.998107526221135190, -0.998110599614169920, -0.998113670511928010, -0.998116738914402000, -0.998119804821584240, -0.998122868233466850, -0.998125929150042280, +-0.998128987571302970, -0.998132043497241160, -0.998135096927849190, -0.998138147863119500, -0.998141196303044430, -0.998144242247616440, -0.998147285696827760, -0.998150326650670940, +-0.998153365109138320, -0.998156401072222250, -0.998159434539915070, -0.998162465512209440, -0.998165493989097710, -0.998168519970572100, -0.998171543456625180, -0.998174564447249500, +-0.998177582942437300, -0.998180598942181250, -0.998183612446473690, -0.998186623455306950, -0.998189631968673830, -0.998192637986566540, -0.998195641508977770, -0.998198642535899740, +-0.998201641067325230, -0.998204637103246580, -0.998207630643656250, -0.998210621688546910, -0.998213610237911110, -0.998216596291741200, -0.998219579850029850, -0.998222560912769400, +-0.998225539479952630, -0.998228515551572100, -0.998231489127620160, -0.998234460208089590, -0.998237428792972840, -0.998240394882262460, -0.998243358475951140, -0.998246319574031430, +-0.998249278176496000, -0.998252234283337200, -0.998255187894547920, -0.998258139010120730, -0.998261087630048060, -0.998264033754322820, -0.998266977382937350, -0.998269918515884540, +-0.998272857153156830, -0.998275793294747030, -0.998278726940647790, -0.998281658090851680, -0.998284586745351480, -0.998287512904139750, -0.998290436567209280, -0.998293357734552630, +-0.998296276406162700, -0.998299192582032040, -0.998302106262153430, -0.998305017446519560, -0.998307926135123090, -0.998310832327956810, -0.998313736025013500, -0.998316637226285720, +-0.998319535931766480, -0.998322432141448330, -0.998325325855324190, -0.998328217073386700, -0.998331105795628670, -0.998333992022042870, -0.998336875752621980, -0.998339756987358990, +-0.998342635726246600, -0.998345511969277680, -0.998348385716445020, -0.998351256967741300, -0.998354125723159400, -0.998356991982692230, -0.998359855746332570, -0.998362717014073310, +-0.998365575785907230, -0.998368432061827240, -0.998371285841826110, -0.998374137125896840, -0.998376985914032230, -0.998379832206225060, -0.998382676002468330, -0.998385517302754930, +-0.998388356107077770, -0.998391192415429730, -0.998394026227803710, -0.998396857544192610, -0.998399686364589310, -0.998402512688986830, -0.998405336517378060, -0.998408157849756010, +-0.998410976686113560, -0.998413793026443620, -0.998416606870739190, -0.998419418218993270, -0.998422227071198880, -0.998425033427348780, -0.998427837287436120, -0.998430638651453980, +-0.998433437519395170, -0.998436233891252800, -0.998439027767019760, -0.998441819146689170, -0.998444608030254140, -0.998447394417707470, -0.998450178309042370, -0.998452959704251740, +-0.998455738603328810, -0.998458515006266590, -0.998461288913057960, -0.998464060323696170, -0.998466829238174200, -0.998469595656485190, -0.998472359578622130, -0.998475121004578250, +-0.998477879934346560, -0.998480636367920170, -0.998483390305292100, -0.998486141746455670, -0.998488890691403790, -0.998491637140129670, -0.998494381092626560, -0.998497122548887450, +-0.998499861508905460, -0.998502597972674040, -0.998505331940185870, -0.998508063411434500, -0.998510792386412940, -0.998513518865114410, -0.998516242847532150, -0.998518964333659160, +-0.998521683323488900, -0.998524399817014350, -0.998527113814228760, -0.998529825315125460, -0.998532534319697460, -0.998535240827938320, -0.998537944839840930, -0.998540646355398740, +-0.998543345374604980, -0.998546041897452770, -0.998548735923935450, -0.998551427454046350, -0.998554116487778700, -0.998556803025125730, -0.998559487066080780, -0.998562168610637070, +-0.998564847658787950, -0.998567524210526640, -0.998570198265846590, -0.998572869824741030, -0.998575538887203410, -0.998578205453226730, -0.998580869522804670, -0.998583531095930450, +-0.998586190172597420, -0.998588846752798800, -0.998591500836528150, -0.998594152423778690, -0.998596801514543890, -0.998599448108817180, -0.998602092206591680, -0.998604733807861080, +-0.998607372912618580, -0.998610009520857660, -0.998612643632571740, -0.998615275247754170, -0.998617904366398410, -0.998620530988497900, -0.998623155114046090, -0.998625776743036430, +-0.998628395875462260, -0.998631012511317030, -0.998633626650594410, -0.998636238293287630, -0.998638847439390350, -0.998641454088895930, -0.998644058241797810, -0.998646659898089540, +-0.998649259057764690, -0.998651855720816610, -0.998654449887238950, -0.998657041557025170, -0.998659630730168720, -0.998662217406663280, -0.998664801586502280, -0.998667383269679300, +-0.998669962456187780, -0.998672539146021390, -0.998675113339173580, -0.998677685035638140, -0.998680254235408400, -0.998682820938478040, -0.998685385144840620, -0.998687946854489810, +-0.998690506067419050, -0.998693062783622020, -0.998695617003092280, -0.998698168725823620, -0.998700717951809480, -0.998703264681043650, -0.998705808913519570, -0.998708350649230910, +-0.998710889888171470, -0.998713426630334690, -0.998715960875714460, -0.998718492624304340, -0.998721021876097900, -0.998723548631088920, -0.998726072889271070, -0.998728594650638120, +-0.998731113915183540, -0.998733630682901330, -0.998736144953784930, -0.998738656727828240, -0.998741166005024830, -0.998743672785368570, -0.998746177068853160, -0.998748678855472250, +-0.998751178145219630, -0.998753674938089090, -0.998756169234074400, -0.998758661033169240, -0.998761150335367500, -0.998763637140662740, -0.998766121449048970, -0.998768603260519860, +-0.998771082575069300, -0.998773559392691080, -0.998776033713378860, -0.998778505537126660, -0.998780974863928140, -0.998783441693777090, -0.998785906026667500, -0.998788367862593170, +-0.998790827201547880, -0.998793284043525630, -0.998795738388520090, -0.998798190236525270, -0.998800639587534840, -0.998803086441542920, -0.998805530798543280, -0.998807972658529720, +-0.998810412021496340, -0.998812848887436820, -0.998815283256345280, -0.998817715128215490, -0.998820144503041460, -0.998822571380816980, -0.998824995761536160, -0.998827417645192780, +-0.998829837031780960, -0.998832253921294490, -0.998834668313727360, -0.998837080209073580, -0.998839489607327050, -0.998841896508481870, -0.998844300912531850, -0.998846702819471190, +-0.998849102229293680, -0.998851499141993450, -0.998853893557564600, -0.998856285476000920, -0.998858674897296410, -0.998861061821445410, -0.998863446248441590, -0.998865828178279180, +-0.998868207610952300, -0.998870584546454830, -0.998872958984780900, -0.998875330925924620, -0.998877700369880000, -0.998880067316641140, -0.998882431766202060, -0.998884793718556870, +-0.998887153173699800, -0.998889510131624860, -0.998891864592326040, -0.998894216555797580, -0.998896566022033580, -0.998898912991028180, -0.998901257462775580, -0.998903599437269700, +-0.998905938914504960, -0.998908275894475280, -0.998910610377174880, -0.998912942362597980, -0.998915271850738810, -0.998917598841591370, -0.998919923335150010, -0.998922245331408720, +-0.998924564830361960, -0.998926881832003730, -0.998929196336328260, -0.998931508343329780, -0.998933817853002610, -0.998936124865340890, -0.998938429380338830, -0.998940731397990670, +-0.998943030918290730, -0.998945327941233140, -0.998947622466812350, -0.998949914495022350, -0.998952204025857720, -0.998954491059312440, -0.998956775595380990, -0.998959057634057680, +-0.998961337175336640, -0.998963614219212310, -0.998965888765678930, -0.998968160814730830, -0.998970430366362240, -0.998972697420567710, -0.998974961977341370, -0.998977224036677660, +-0.998979483598570810, -0.998981740663015260, -0.998983995230005470, -0.998986247299535560, -0.998988496871600070, -0.998990743946193360, -0.998992988523309870, -0.998995230602943820, +-0.998997470185089660, -0.998999707269741970, -0.999001941856894840, -0.999004173946542950, -0.999006403538680640, -0.999008630633302250, -0.999010855230402340, -0.999013077329975240, +-0.999015296932015520, -0.999017514036517510, -0.999019728643475660, -0.999021940752884640, -0.999024150364738680, -0.999026357479032350, -0.999028562095760080, -0.999030764214916430, +-0.999032963836495980, -0.999035160960492940, -0.999037355586902100, -0.999039547715717900, -0.999041737346934800, -0.999043924480547350, -0.999046109116550120, -0.999048291254937550, +-0.999050470895704310, -0.999052648038844860, -0.999054822684353750, -0.999056994832225650, -0.999059164482455020, -0.999061331635036520, -0.999063496289964710, -0.999065658447234160, +-0.999067818106839420, -0.999069975268775060, -0.999072129933035850, -0.999074282099616350, -0.999076431768511130, -0.999078578939714860, -0.999080723613222090, -0.999082865789027500, +-0.999085005467125750, -0.999087142647511530, -0.999089277330179380, -0.999091409515124100, -0.999093539202340230, -0.999095666391822570, -0.999097791083565780, -0.999099913277564420, +-0.999102032973813390, -0.999104150172307140, -0.999106264873040660, -0.999108377076008410, -0.999110486781205290, -0.999112593988625950, -0.999114698698265080, -0.999116800910117450, +-0.999118900624177850, -0.999120997840440950, -0.999123092558901640, -0.999125184779554590, -0.999127274502394580, -0.999129361727416290, -0.999131446454614710, -0.999133528683984420, +-0.999135608415520290, -0.999137685649217230, -0.999139760385070020, -0.999141832623073320, -0.999143902363222040, -0.999145969605510940, -0.999148034349934930, -0.999150096596488900, +-0.999152156345167630, -0.999154213595965900, -0.999156268348878720, -0.999158320603900860, -0.999160370361027230, -0.999162417620252600, -0.999164462381571970, -0.999166504644980140, +-0.999168544410471980, -0.999170581678042620, -0.999172616447686730, -0.999174648719399320, -0.999176678493175260, -0.999178705769009470, -0.999180730546897040, -0.999182752826832670, +-0.999184772608811440, -0.999186789892828280, -0.999188804678878270, -0.999190816966956110, -0.999192826757056900, -0.999194834049175640, -0.999196838843307340, -0.999198841139446900, +-0.999200840937589430, -0.999202838237729820, -0.999204833039863070, -0.999206825343984310, -0.999208815150088410, -0.999210802458170510, -0.999212787268225600, -0.999214769580248690, +-0.999216749394234880, -0.999218726710179310, -0.999220701528076850, -0.999222673847922520, -0.999224643669711640, -0.999226610993439120, -0.999228575819100070, -0.999230538146689610, +-0.999232497976202730, -0.999234455307634660, -0.999236410140980410, -0.999238362476235100, -0.999240312313393940, -0.999242259652452060, -0.999244204493404450, -0.999246146836246350, +-0.999248086680972870, -0.999250024027579230, -0.999251958876060550, -0.999253891226411840, -0.999255821078628540, -0.999257748432705540, -0.999259673288638290, -0.999261595646421920, +-0.999263515506051410, -0.999265432867522120, -0.999267347730829370, -0.999269260095968170, -0.999271169962933750, -0.999273077331721550, -0.999274982202326580, -0.999276884574744170, +-0.999278784448969560, -0.999280681824997960, -0.999282576702824610, -0.999284469082444950, -0.999286358963853980, -0.999288246347047160, -0.999290131232019820, -0.999292013618767070, +-0.999293893507284260, -0.999295770897566720, -0.999297645789609780, -0.999299518183408790, -0.999301388078958960, -0.999303255476255540, -0.999305120375294180, -0.999306982776069890, +-0.999308842678578220, -0.999310700082814420, -0.999312554988773800, -0.999314407396451830, -0.999316257305843840, -0.999318104716945270, -0.999319949629751350, -0.999321792044257640, +-0.999323631960459370, -0.999325469378352090, -0.999327304297931150, -0.999329136719191880, -0.999330966642129730, -0.999332794066740250, -0.999334618993018790, -0.999336441420960790, +-0.999338261350561700, -0.999340078781816850, -0.999341893714721820, -0.999343706149272150, -0.999345516085463180, -0.999347323523290370, -0.999349128462749370, -0.999350930903835420, +-0.999352730846544190, -0.999354528290871120, -0.999356323236811780, -0.999358115684361610, -0.999359905633516070, -0.999361693084270810, -0.999363478036621400, -0.999365260490563290, +-0.999367040446091930, -0.999368817903202980, -0.999370592861892120, -0.999372365322154680, -0.999374135283986330, -0.999375902747382640, -0.999377667712339160, -0.999379430178851560, +-0.999381190146915400, -0.999382947616526130, -0.999384702587679640, -0.999386455060371380, -0.999388205034596910, -0.999389952510352010, -0.999391697487632240, -0.999393439966433150, +-0.999395179946750420, -0.999396917428579830, -0.999398652411916940, -0.999400384896757420, -0.999402114883096940, -0.999403842370931160, -0.999405567360255760, -0.999407289851066420, +-0.999409009843358900, -0.999410727337128880, -0.999412442332372030, -0.999414154829084020, -0.999415864827260640, -0.999417572326897650, -0.999419277327990740, -0.999420979830535570, +-0.999422679834527930, -0.999424377339963590, -0.999426072346838450, -0.999427764855148060, -0.999429454864888210, -0.999431142376054680, -0.999432827388643360, -0.999434509902650040, +-0.999436189918070260, -0.999437867434900150, -0.999439542453135380, -0.999441214972771720, -0.999442884993805070, -0.999444552516231100, -0.999446217540045810, -0.999447880065244990, +-0.999449540091824410, -0.999451197619780070, -0.999452852649107660, -0.999454505179803170, -0.999456155211862370, -0.999457802745281290, -0.999459447780055580, -0.999461090316181240, +-0.999462730353654290, -0.999464367892470400, -0.999466002932625660, -0.999467635474115990, -0.999469265516937040, -0.999470893061085050, -0.999472518106555800, -0.999474140653345280, +-0.999475760701449390, -0.999477378250864130, -0.999478993301585410, -0.999480605853609210, -0.999482215906931430, -0.999483823461548180, -0.999485428517455250, -0.999487031074648870, +-0.999488631133124920, -0.999490228692879400, -0.999491823753908220, -0.999493416316207580, -0.999495006379773290, -0.999496593944601550, -0.999498179010688380, -0.999499761578029670, +-0.999501341646621630, -0.999502919216460170, -0.999504494287541510, -0.999506066859861540, -0.999507636933416380, -0.999509204508202130, -0.999510769584214920, -0.999512332161450750, +-0.999513892239905720, -0.999515449819576070, -0.999517004900457700, -0.999518557482546810, -0.999520107565839640, -0.999521655150332090, -0.999523200236020480, -0.999524742822900820, +-0.999526282910969340, -0.999527820500222040, -0.999529355590655370, -0.999530888182265210, -0.999532418275047800, -0.999533945868999350, -0.999535470964116100, -0.999536993560394160, +-0.999538513657829750, -0.999540031256418990, -0.999541546356158220, -0.999543058957043540, -0.999544569059071190, -0.999546076662237380, -0.999547581766538570, -0.999549084371970650, +-0.999550584478530070, -0.999552082086212930, -0.999553577195015700, -0.999555069804934470, -0.999556559915965590, -0.999558047528105400, -0.999559532641350000, -0.999561015255695740, +-0.999562495371138950, -0.999563972987675960, -0.999565448105303010, -0.999566920724016540, -0.999568390843812660, -0.999569858464687820, -0.999571323586638360, -0.999572786209660610, +-0.999574246333750800, -0.999575703958905490, -0.999577159085120790, -0.999578611712393260, -0.999580061840719240, -0.999581509470095050, -0.999582954600517050, -0.999584397231981780, +-0.999585837364485360, -0.999587274998024470, -0.999588710132595320, -0.999590142768194360, -0.999591572904818150, -0.999593000542462920, -0.999594425681125220, -0.999595848320801510, +-0.999597268461488110, -0.999598686103181480, -0.999600101245878280, -0.999601513889574740, -0.999602924034267430, -0.999604331679952770, -0.999605736826627340, -0.999607139474287590, +-0.999608539622929950, -0.999609937272550990, -0.999611332423147150, -0.999612725074714990, -0.999614115227251080, -0.999615502880751740, -0.999616888035213760, -0.999618270690633580, +-0.999619650847007660, -0.999621028504332540, -0.999622403662605020, -0.999623776321821420, -0.999625146481978310, -0.999626514143072460, -0.999627879305100220, -0.999629241968058360, +-0.999630602131943320, -0.999631959796751790, -0.999633314962480420, -0.999634667629125670, -0.999636017796684320, -0.999637365465152920, -0.999638710634528140, -0.999640053304806540, +-0.999641393475984800, -0.999642731148059570, -0.999644066321027540, -0.999645398994885250, -0.999646729169629600, -0.999648056845257040, -0.999649382021764450, -0.999650704699148300, +-0.999652024877405340, -0.999653342556532490, -0.999654657736526180, -0.999655970417383190, -0.999657280599100310, -0.999658588281674310, -0.999659893465101760, -0.999661196149379430, +-0.999662496334504210, -0.999663794020472670, -0.999665089207281700, -0.999666381894927960, -0.999667672083408340, -0.999668959772719520, -0.999670244962858280, -0.999671527653821390, +-0.999672807845605750, -0.999674085538208020, -0.999675360731625110, -0.999676633425853780, -0.999677903620890930, -0.999679171316733230, -0.999680436513377680, -0.999681699210820950, +-0.999682959409060050, -0.999684217108091740, -0.999685472307912940, -0.999686725008520400, -0.999687975209911040, -0.999689222912081730, -0.999690468115029370, -0.999691710818750860, +-0.999692951023243070, -0.999694188728502910, -0.999695423934527260, -0.999696656641313130, -0.999697886848857300, -0.999699114557156760, -0.999700339766208420, -0.999701562476009160, +-0.999702782686556100, -0.999704000397846020, -0.999705215609876020, -0.999706428322642890, -0.999707638536143750, -0.999708846250375480, -0.999710051465335090, -0.999711254181019580, +-0.999712454397425950, -0.999713652114551210, -0.999714847332392350, -0.999716040050946280, -0.999717230270210200, -0.999718417990181020, -0.999719603210855730, -0.999720785932231460, +-0.999721966154305310, -0.999723143877074170, -0.999724319100535160, -0.999725491824685400, -0.999726662049521870, -0.999727829775041710, -0.999728995001242020, -0.999730157728119790, +-0.999731317955672160, -0.999732475683896230, -0.999733630912789110, -0.999734783642347910, -0.999735933872569870, -0.999737081603451870, -0.999738226834991140, -0.999739369567184900, +-0.999740509800030260, -0.999741647533524350, -0.999742782767664260, -0.999743915502447230, -0.999745045737870490, -0.999746173473931020, -0.999747298710626180, -0.999748421447953170, +-0.999749541685909020, -0.999750659424490930, -0.999751774663696360, -0.999752887403522190, -0.999753997643965890, -0.999755105385024660, -0.999756210626695620, -0.999757313368976000, +-0.999758413611863130, -0.999759511355354240, -0.999760606599446540, -0.999761699344137390, -0.999762789589423880, -0.999763877335303470, -0.999764962581773390, -0.999766045328830840, +-0.999767125576473180, -0.999768203324697740, -0.999769278573501840, -0.999770351322882720, -0.999771421572837720, -0.999772489323364040, -0.999773554574459270, -0.999774617326120610, +-0.999775677578345400, -0.999776735331130980, -0.999777790584474690, -0.999778843338373970, -0.999779893592826150, -0.999780941347828580, -0.999781986603378580, -0.999783029359473720, +-0.999784069616111220, -0.999785107373288630, -0.999786142631003180, -0.999787175389252440, -0.999788205648033720, -0.999789233407344490, -0.999790258667182190, -0.999791281427544250, +-0.999792301688428140, -0.999793319449831190, -0.999794334711750940, -0.999795347474184970, -0.999796357737130600, -0.999797365500585290, -0.999798370764546580, -0.999799373529011940, +-0.999800373793978790, -0.999801371559444820, -0.999802366825407350, -0.999803359591864060, -0.999804349858812280, -0.999805337626249680, -0.999806322894173700, -0.999807305662581910, +-0.999808285931471860, -0.999809263700841110, -0.999810238970687220, -0.999811211741007730, -0.999812182011800220, -0.999813149783062240, -0.999814115054791340, -0.999815077826985200, +-0.999816038099641370, -0.999816995872757410, -0.999817951146330990, -0.999818903920359660, -0.999819854194841100, -0.999820801969772850, -0.999821747245152710, -0.999822690020978120, +-0.999823630297246750, -0.999824568073956370, -0.999825503351104650, -0.999826436128689040, -0.999827366406707440, -0.999828294185157400, -0.999829219464036580, -0.999830142243342770, +-0.999831062523073520, -0.999831980303226730, -0.999832895583799840, -0.999833808364790850, -0.999834718646197330, -0.999835626428016930, -0.999836531710247560, -0.999837434492886760, +-0.999838334775932420, -0.999839232559382230, -0.999840127843234060, -0.999841020627485480, -0.999841910912134260, -0.999842798697178400, -0.999843683982615470, -0.999844566768443350, +-0.999845447054659830, -0.999846324841262790, -0.999847200128249790, -0.999848072915618840, -0.999848943203367700, -0.999849810991494170, -0.999850676279996240, -0.999851539068871480, +-0.999852399358117980, -0.999853257147733430, -0.999854112437715710, -0.999854965228062720, -0.999855815518772340, -0.999856663309842460, -0.999857508601270870, -0.999858351393055460, +-0.999859191685194220, -0.999860029477685040, -0.999860864770525710, -0.999861697563714350, -0.999862527857248610, -0.999863355651126610, -0.999864180945346240, -0.999865003739905390, +-0.999865824034801950, -0.999866641830034040, -0.999867457125599550, -0.999868269921496360, -0.999869080217722580, -0.999869888014276010, -0.999870693311154750, -0.999871496108356790, +-0.999872296405880050, -0.999873094203722610, -0.999873889501882380, -0.999874682300357480, -0.999875472599145780, -0.999876260398245510, -0.999877045697654570, -0.999877828497370950, +-0.999878608797392760, -0.999879386597718130, -0.999880161898344940, -0.999880934699271420, -0.999881705000495560, -0.999882472802015480, -0.999883238103829060, -0.999884000905934660, +-0.999884761208330250, -0.999885519011013970, -0.999886274313983800, -0.999887027117238090, -0.999887777420774610, -0.999888525224591820, -0.999889270528687700, -0.999890013333060490, +-0.999890753637708070, -0.999891491442628900, -0.999892226747820970, -0.999892959553282390, -0.999893689859011500, -0.999894417665006420, -0.999895142971265140, -0.999895865777786110, +-0.999896586084567440, -0.999897303891607360, -0.999898019198903860, -0.999898732006455400, -0.999899442314260090, -0.999900150122316260, -0.999900855430621900, -0.999901558239175480, +-0.999902258547975210, -0.999902956357019200, -0.999903651666305900, -0.999904344475833430, -0.999905034785600110, -0.999905722595604170, -0.999906407905843950, -0.999907090716317670, +-0.999907771027023660, -0.999908448837960260, -0.999909124149125810, -0.999909796960518400, -0.999910467272136620, -0.999911135083978550, -0.999911800396042770, -0.999912463208327500, +-0.999913123520830950, -0.999913781333551690, -0.999914436646487940, -0.999915089459638030, -0.999915739773000520, -0.999916387586573530, -0.999917032900355720, -0.999917675714345200, +-0.999918316028540640, -0.999918953842940160, -0.999919589157542310, -0.999920221972345540, -0.999920852287348170, -0.999921480102548670, -0.999922105417945460, -0.999922728233537010, +-0.999923348549321740, -0.999923966365298120, -0.999924581681464590, -0.999925194497819580, -0.999925804814361550, -0.999926412631089060, -0.999927017948000540, -0.999927620765094450, +-0.999928221082369340, -0.999928818899823660, -0.999929414217455960, -0.999930007035264690, -0.999930597353248410, -0.999931185171405670, -0.999931770489734920, -0.999932353308234710, +-0.999932933626903720, -0.999933511445740280, -0.999934086764743160, -0.999934659583910810, -0.999935229903241800, -0.999935797722734660, -0.999936363042388090, -0.999936925862200620, +-0.999937486182170820, -0.999938044002297240, -0.999938599322578560, -0.999939152143013430, -0.999939702463600420, -0.999940250284338190, -0.999940795605225310, -0.999941338426260430, +-0.999941878747442230, -0.999942416568769250, -0.999942951890240290, -0.999943484711853900, -0.999944015033608860, -0.999944542855503830, -0.999945068177537370, -0.999945590999708260, +-0.999946111322015160, -0.999946629144456760, -0.999947144467031810, -0.999947657289739000, -0.999948167612577100, -0.999948675435544660, -0.999949180758640700, -0.999949683581863650, +-0.999950183905212400, -0.999950681728685730, -0.999951177052282420, -0.999951669876001040, -0.999952160199840570, -0.999952648023799680, -0.999953133347877170, -0.999953616172071790, +-0.999954096496382450, -0.999954574320807810, -0.999955049645346760, -0.999955522469998080, -0.999955992794760550, -0.999956460619633060, -0.999956925944614490, -0.999957388769703530, +-0.999957849094899150, -0.999958306920200050, -0.999958762245605310, -0.999959215071113520, -0.999959665396723870, -0.999960113222434940, -0.999960558548245730, -0.999961001374155110, +-0.999961441700162100, -0.999961879526265360, -0.999962314852464010, -0.999962747678756810, -0.999963178005142780, -0.999963605831620810, -0.999964031158189770, -0.999964453984848680, +-0.999964874311596530, -0.999965292138432100, -0.999965707465354400, -0.999966120292362540, -0.999966530619455400, -0.999966938446631870, -0.999967343773890960, -0.999967746601231780, +-0.999968146928653100, -0.999968544756154150, -0.999968940083733830, -0.999969332911391230, -0.999969723239125140, -0.999970111066934900, -0.999970496394819270, -0.999970879222777500, +-0.999971259550808460, -0.999971637378911260, -0.999972012707085020, -0.999972385535328740, -0.999972755863641430, -0.999973123692022290, -0.999973489020470340, -0.999973851848984690, +-0.999974212177564330, -0.999974570006208490, -0.999974925334916280, -0.999975278163686700, -0.999975628492518860, -0.999975976321412000, -0.999976321650365210, -0.999976664479377610, +-0.999977004808448420, -0.999977342637576650, -0.999977677966761510, -0.999978010796002240, -0.999978341125297930, -0.999978668954647710, -0.999978994284050790, -0.999979317113506520, +-0.999979637443013880, -0.999979955272572110, -0.999980270602180530, -0.999980583431838270, -0.999980893761544420, -0.999981201591298440, -0.999981506921099440, -0.999981809750946750, +-0.999982110080839480, -0.999982407910776860, -0.999982703240758330, -0.999982996070783000, -0.999983286400850100, -0.999983574230959070, -0.999983859561109130, -0.999984142391299510, +-0.999984422721529540, -0.999984700551798560, -0.999984975882105780, -0.999985248712450540, -0.999985519042832170, -0.999985786873250020, -0.999986052203703400, -0.999986315034191660, +-0.999986575364714140, -0.999986833195270150, -0.999987088525859160, -0.999987341356480370, -0.999987591687133250, -0.999987839517817110, -0.999988084848531520, -0.999988327679275590, +-0.999988568010048870, -0.999988805840850700, -0.999989041171680530, -0.999989274002537790, -0.999989504333421820, -0.999989732164332070, -0.999989957495268090, -0.999990180326229110, +-0.999990400657214780, -0.999990618488224350, -0.999990833819257460, -0.999991046650313460, -0.999991256981391800, -0.999991464812492010, -0.999991670143613560, -0.999991872974756000, +-0.999992073305918770, -0.999992271137101210, -0.999992466468303090, -0.999992659299523750, -0.999992849630762850, -0.999993037462019730, -0.999993222793294060, -0.999993405624585390, +-0.999993585955893050, -0.999993763787216830, -0.999993939118556270, -0.999994111949910840, -0.999994282281280070, -0.999994450112663640, -0.999994615444060990, -0.999994778275471900, +-0.999994938606895810, -0.999995096438332400, -0.999995251769781320, -0.999995404601242030, -0.999995554932714190, -0.999995702764197580, -0.999995848095691640, -0.999995990927196040, +-0.999996131258710560, -0.999996269090234650, -0.999996404421768180, -0.999996537253310610, -0.999996667584861720, -0.999996795416421170, -0.999996920747988630, -0.999997043579563760, +-0.999997163911146350, -0.999997281742736050, -0.999997397074332440, -0.999997509905935390, -0.999997620237544570, -0.999997728069159650, -0.999997833400780520, -0.999997936232406740, +-0.999998036564038070, -0.999998134395674420, -0.999998229727315340, -0.999998322558960710, -0.999998412890610310, -0.999998500722263820, -0.999998586053921110, -0.999998668885581980, +-0.999998749217246070, -0.999998827048913410, -0.999998902380583640, -0.999998975212256560, -0.999999045543932150, -0.999999113375609980, -0.999999178707290160, -0.999999241538972350, +-0.999999301870656440, -0.999999359702342220, -0.999999415034029670, -0.999999467865718580, -0.999999518197408730, -0.999999566029100230, -0.999999611360792740, -0.999999654192486150, +-0.999999694524180470, -0.999999732355875580, -0.999999767687571370, -0.999999800519267730, -0.999999830850964670, -0.999999858682661950, -0.999999884014359570, -0.999999906846057440, +-0.999999927177755650, -0.999999945009453990, -0.999999960341152460, -0.999999973172851050, -0.999999983504549660, -0.999999991336248390, -0.999999996667947140, -0.999999999499645800, +-0.999999999831344580, -0.999999997663043260, -0.999999992994741960, -0.999999985826440780, -0.999999976158139510, -0.999999963989838370, -0.999999949321537350, -0.999999932153236350, +-0.999999912484935580, -0.999999890316635050, -0.999999865648334760, -0.999999838480034820, -0.999999808811735340, -0.999999776643436310, -0.999999741975137750, -0.999999704806839970, +-0.999999665138542880, -0.999999622970246580, -0.999999578301951190, -0.999999531133656920, -0.999999481465363880, -0.999999429297072080, -0.999999374628781630, -0.999999317460492860, +-0.999999257792205780, -0.999999195623920480, -0.999999130955637310, -0.999999063787356150, -0.999998994119077440, -0.999998921950801200, -0.999998847282527750, -0.999998770114257090, +-0.999998690445989550, -0.999998608277725240, -0.999998523609464510, -0.999998436441207340, -0.999998346772954180, -0.999998254604705040, -0.999998159936460350, -0.999998062768220230, +-0.999997963099985010, -0.999997860931754800, -0.999997756263530050, -0.999997649095310860, -0.999997539427097460, -0.999997427258890290, -0.999997312590689580, -0.999997195422495540, +-0.999997075754308520, -0.999996953586128830, -0.999996828917956710, -0.999996701749792600, -0.999996572081636610, -0.999996439913489300, -0.999996305245350880, -0.999996168077221690, +-0.999996028409102070, -0.999995886240992340, -0.999995741572892950, -0.999995594404804120, -0.999995444736726410, -0.999995292568660040, -0.999995137900605460, -0.999994980732562990, +-0.999994821064533080, -0.999994658896516180, -0.999994494228512610, -0.999994327060522830, -0.999994157392547160, -0.999993985224586160, -0.999993810556640160, -0.999993633388709610, +-0.999993453720794960, -0.999993271552896750, -0.999993086885015310, -0.999992899717151220, -0.999992710049304790, -0.999992517881476690, -0.999992323213667270, -0.999992126045876950, +-0.999991926378106410, -0.999991724210355980, -0.999991519542626330, -0.999991312374917780, -0.999991102707231020, -0.999990890539566470, -0.999990675871924810, -0.999990458704306360, +-0.999990239036711690, -0.999990016869141570, -0.999989792201596340, -0.999989565034076540, -0.999989335366582970, -0.999989103199116050, -0.999988868531676230, -0.999988631364264410, +-0.999988391696880920, -0.999988149529526530, -0.999987904862201680, -0.999987657694907050, -0.999987408027643300, -0.999987155860411090, -0.999986901193210990, -0.999986644026043540, +-0.999986384358909630, -0.999986122191809600, -0.999985857524744340, -0.999985590357714500, -0.999985320690720550, -0.999985048523763350, -0.999984773856843590, -0.999984496689961920, +-0.999984217023118900, -0.999983934856315430, -0.999983650189552040, -0.999983363022829530, -0.999983073356148670, -0.999982781189510120, -0.999982486522914550, -0.999982189356362850, +-0.999981889689855570, -0.999981587523393720, -0.999981282856977740, -0.999980975690608620, -0.999980666024287150, -0.999980353858013870, -0.999980039191789790, -0.999979722025615580, +-0.999979402359492120, -0.999979080193420080, -0.999978755527400340, -0.999978428361433800, -0.999978098695521120, -0.999977766529663190, -0.999977431863860900, -0.999977094698115020, +-0.999976755032426330, -0.999976412866795840, -0.999976068201224310, -0.999975721035712530, -0.999975371370261490, -0.999975019204872080, -0.999974664539545090, -0.999974307374281390, +-0.999973947709081880, -0.999973585543947660, -0.999973220878879410, -0.999972853713878010, -0.999972484048944570, -0.999972111884079970, -0.999971737219285010, -0.999971360054560670, +-0.999970980389908060, -0.999970598225327860, -0.999970213560821270, -0.999969826396389090, -0.999969436732032310, -0.999969044567752040, -0.999968649903549060, -0.999968252739424580, +-0.999967853075379390, -0.999967450911414590, -0.999967046247531080, -0.999966639083730070, -0.999966229420012340, -0.999965817256379120, -0.999965402592831400, -0.999964985429370070, +-0.999964565765996350, -0.999964143602711240, -0.999963718939515630, -0.999963291776410860, -0.999962862113397800, -0.999962429950477680, -0.999961995287651400, -0.999961558124920160, +-0.999961118462284970, -0.999960676299747050, -0.999960231637307410, -0.999959784474967140, -0.999959334812727470, -0.999958882650589410, -0.999958427988554280, -0.999957970826622970, +-0.999957511164796700, -0.999957049003076690, -0.999956584341464170, -0.999956117179960020, -0.999955647518565690, -0.999955175357282180, -0.999954700696110810, -0.999954223535052590, +-0.999953743874108850, -0.999953261713280810, -0.999952777052569460, -0.999952289891976380, -0.999951800231502430, -0.999951308071148960, -0.999950813410917290, -0.999950316250808660, +-0.999949816590824050, -0.999949314430965020, -0.999948809771232680, -0.999948302611628370, -0.999947792952153300, -0.999947280792808700, -0.999946766133595900, -0.999946248974516120, +-0.999945729315570800, -0.999945207156761160, -0.999944682498088430, -0.999944155339554160, -0.999943625681159350, -0.999943093522905560, -0.999942558864794000, -0.999942021706826000, +-0.999941482049003020, -0.999940939891326260, -0.999940395233797190, -0.999939848076417110, -0.999939298419187490, -0.999938746262109550, -0.999938191605184710, -0.999937634448414550, +-0.999937074791800160, -0.999936512635343110, -0.999935947979044840, -0.999935380822906560, -0.999934811166929950, -0.999934239011116330, -0.999933664355467040, -0.999933087199983640, +-0.999932507544667450, -0.999931925389520030, -0.999931340734542820, -0.999930753579737260, -0.999930163925104810, -0.999929571770646900, -0.999928977116365190, -0.999928379962260920, +-0.999927780308335730, -0.999927178154591090, -0.999926573501028540, -0.999925966347649520, -0.999925356694455590, -0.999924744541448310, -0.999924129888629110, -0.999923512735999550, +-0.999922893083561300, -0.999922270931315800, -0.999921646279264610, -0.999921019127409270, -0.999920389475751350, -0.999919757324292610, -0.999919122673034290, -0.999918485521978260, +-0.999917845871126090, -0.999917203720479210, -0.999916559070039290, -0.999915911919808110, -0.999915262269787000, -0.999914610119977840, -0.999913955470382090, -0.999913298321001510, +-0.999912638671837660, -0.999911976522892210, -0.999911311874166820, -0.999910644725663160, -0.999909975077382880, -0.999909302929327670, -0.999908628281499180, -0.999907951133899080, +-0.999907271486529140, -0.999906589339391030, -0.999905904692486520, -0.999905217545817180, -0.999904527899384780, -0.999903835753191080, -0.999903141107237770, -0.999902443961526610, +-0.999901744316059380, -0.999901042170837750, -0.999900337525863600, -0.999899630381138490, -0.999898920736664310, -0.999898208592442940, -0.999897493948475930, -0.999896776804765300, +-0.999896057161312690, -0.999895335018119890, -0.999894610375188790, -0.999893883232521150, -0.999893153590118770, -0.999892421447983510, -0.999891686806117290, -0.999890949664521740, +-0.999890210023198890, -0.999889467882150500, -0.999888723241378450, -0.999887976100884530, -0.999887226460670740, -0.999886474320738850, -0.999885719681090860, -0.999884962541728430, +-0.999884202902653670, -0.999883440763868370, -0.999882676125374510, -0.999881908987174000, -0.999881139349268590, -0.999880367211660400, -0.999879592574351330, -0.999878815437343250, +-0.999878035800638170, -0.999877253664237850, -0.999876469028144530, -0.999875681892360090, -0.999874892256886310, -0.999874100121725400, -0.999873305486879140, -0.999872508352349750, +-0.999871708718139020, -0.999870906584248930, -0.999870101950681710, -0.999869294817439140, -0.999868485184523430, -0.999867673051936470, -0.999866858419680260, -0.999866041287757020, +-0.999865221656168530, -0.999864399524917120, -0.999863574894004680, -0.999862747763433200, -0.999861918133205020, -0.999861086003321910, -0.999860251373786200, -0.999859414244599790, +-0.999858574615764770, -0.999857732487283490, -0.999856887859157720, -0.999856040731389780, -0.999855191103981800, -0.999854338976935760, -0.999853484350254010, -0.999852627223938420, +-0.999851767597991210, -0.999850905472414730, -0.999850040847210960, -0.999849173722382020, -0.999848304097930130, -0.999847431973857610, -0.999846557350166370, -0.999845680226858820, +-0.999844800603937100, -0.999843918481403300, -0.999843033859259660, -0.999842146737508490, -0.999841257116152020, -0.999840364995192350, -0.999839470374631830, -0.999838573254472560, +-0.999837673634716870, -0.999836771515366980, -0.999835866896425230, -0.999834959777893720, -0.999834050159774890, -0.999833138042070860, -0.999832223424784060, -0.999831306307916610, +-0.999830386691470950, -0.999829464575449410, -0.999828539959854100, -0.999827612844687460, -0.999826683229951830, -0.999825751115649420, -0.999824816501782680, -0.999823879388353930, +-0.999822939775365400, -0.999821997662819540, -0.999821053050718780, -0.999820105939065340, -0.999819156327861560, -0.999818204217109980, -0.999817249606812840, -0.999816292496972570, +-0.999815332887591610, -0.999814370778672300, -0.999813406170217080, -0.999812439062228280, -0.999811469454708450, -0.999810497347659920, -0.999809522741085140, -0.999808545634986560, +-0.999807566029366710, -0.999806583924227830, -0.999805599319572470, -0.999804612215403180, -0.999803622611722400, -0.999802630508532460, -0.999801635905836040, -0.999800638803635460, +-0.999799639201933270, -0.999798637100732020, -0.999797632500034170, -0.999796625399842260, -0.999795615800158740, -0.999794603700986270, -0.999793589102327180, -0.999792572004184250, +-0.999791552406559810, -0.999790530309456420, -0.999789505712876840, -0.999788478616823410, -0.999787449021298790, -0.999786416926305650, -0.999785382331846330, -0.999784345237923590, +-0.999783305644539990, -0.999782263551698190, -0.999781218959400640, -0.999780171867650110, -0.999779122276449160, -0.999778070185800340, -0.999777015595706420, -0.999775958506169850, +-0.999774898917193510, -0.999773836828779850, -0.999772772240931640, -0.999771705153651440, -0.999770635566942010, -0.999769563480806030, -0.999768488895246050, -0.999767411810264960, +-0.999766332225865310, -0.999765250142049760, -0.999764165558821080, -0.999763078476182070, -0.999761988894135370, -0.999760896812683650, -0.999759802231829700, -0.999758705151576280, +-0.999757605571926060, -0.999756503492881810, -0.999755398914446310, -0.999754291836622340, -0.999753182259412570, -0.999752070182819860, -0.999750955606847010, -0.999749838531496790, +-0.999748718956771980, -0.999747596882675340, -0.999746472309209770, -0.999745345236377920, -0.999744215664182810, -0.999743083592627090, -0.999741949021713650, -0.999740811951445370, +-0.999739672381825040, -0.999738530312855640, -0.999737385744539740, -0.999736238676880550, -0.999735089109880630, -0.999733937043542960, -0.999732782477870560, -0.999731625412866200, +-0.999730465848532760, -0.999729303784873120, -0.999728139221890190, -0.999726972159586950, -0.999725802597966280, -0.999724630537031200, -0.999723455976784470, -0.999722278917229090, +-0.999721099358367950, -0.999719917300204150, -0.999718732742740480, -0.999717545685980040, -0.999716356129925710, -0.999715164074580500, -0.999713969519947400, -0.999712772466029410, +-0.999711572912829420, -0.999710370860350530, -0.999709166308595740, -0.999707959257567950, -0.999706749707270360, -0.999705537657705870, -0.999704323108877470, -0.999703106060788270, +-0.999701886513441380, -0.999700664466839690, -0.999699439920986420, -0.999698212875884560, -0.999696983331537110, -0.999695751287947190, -0.999694516745117890, -0.999693279703052330, +-0.999692040161753610, -0.999690798121224740, -0.999689553581468940, -0.999688306542489190, -0.999687057004288620, -0.999685804966870540, -0.999684550430237850, -0.999683293394393770, +-0.999682033859341510, -0.999680771825084190, -0.999679507291624910, -0.999678240258966900, -0.999676970727113260, -0.999675698696067090, -0.999674424165831850, -0.999673147136410420, +-0.999671867607806240, -0.999670585580022310, -0.999669301053061950, -0.999668014026928290, -0.999666724501624640, -0.999665432477154110, -0.999664137953520050, -0.999662840930725660, +-0.999661541408774170, -0.999660239387668790, -0.999658934867412860, -0.999657627848009600, -0.999656318329462220, -0.999655006311774060, -0.999653691794948340, -0.999652374778988500, +-0.999651055263897640, -0.999649733249679210, -0.999648408736336310, -0.999647081723872510, -0.999645752212291020, -0.999644420201595050, -0.999643085691788170, -0.999641748682873480, +-0.999640409174854420, -0.999639067167734320, -0.999637722661516630, -0.999636375656204560, -0.999635026151801550, -0.999633674148311060, -0.999632319645736290, -0.999630962644080800, +-0.999629603143347810, -0.999628241143540870, -0.999626876644663320, -0.999625509646718590, -0.999624140149710130, -0.999622768153641260, -0.999621393658515430, -0.999620016664336200, +-0.999618637171106880, -0.999617255178831040, -0.999615870687512010, -0.999614483697153220, -0.999613094207758350, -0.999611702219330710, -0.999610307731873760, -0.999608910745391040, +-0.999607511259886120, -0.999606109275362420, -0.999604704791823400, -0.999603297809272600, -0.999601888327713680, -0.999600476347149880, -0.999599061867584960, -0.999597644889022360, +-0.999596225411465760, -0.999594803434918470, -0.999593378959384160, -0.999591951984866500, -0.999590522511368930, -0.999589090538895000, -0.999587656067448370, -0.999586219097032710, +-0.999584779627651350, -0.999583337659308070, -0.999581893192006520, -0.999580446225750150, -0.999578996760542740, -0.999577544796387830, -0.999576090333288980, -0.999574633371249970, +-0.999573173910274450, -0.999571711950365870, -0.999570247491528010, -0.999568780533764630, -0.999567311077079190, -0.999565839121475560, -0.999564364666957310, -0.999562887713528080, +-0.999561408261191780, -0.999559926309951830, -0.999558441859812130, -0.999556954910776230, -0.999555465462848130, -0.999553973516031150, -0.999552479070329400, -0.999550982125746330, +-0.999549482682285940, -0.999547980739951770, -0.999546476298747600, -0.999544969358677320, -0.999543459919744580, -0.999541947981953170, -0.999540433545306860, -0.999538916609809540, +-0.999537397175464970, -0.999535875242276830, -0.999534350810248990, -0.999532823879385360, -0.999531294449689580, -0.999529762521165650, -0.999528228093817250, -0.999526691167648250, +-0.999525151742662540, -0.999523609818864010, -0.999522065396256430, -0.999520518474843690, -0.999518969054629670, -0.999517417135618150, -0.999515862717813120, -0.999514305801218470, +-0.999512746385838090, -0.999511184471675750, -0.999509620058735560, -0.999508053147021180, -0.999506483736536830, -0.999504911827286180, -0.999503337419273220, -0.999501760512501950, +-0.999500181106976250, -0.999498599202700120, -0.999497014799677560, -0.999495427897912350, -0.999493838497408690, -0.999492246598170380, -0.999490652200201390, -0.999489055303505850, +-0.999487455908087630, -0.999485854013950850, -0.999484249621099270, -0.999482642729537240, -0.999481033339268520, -0.999479421450297220, -0.999477807062627340, -0.999476190176262990, +-0.999474570791208160, -0.999472948907466960, -0.999471324525043280, -0.999469697643941330, -0.999468068264165120, -0.999466436385718750, -0.999464802008606320, -0.999463165132831950, +-0.999461525758399530, -0.999459883885313370, -0.999458239513577480, -0.999456592643195970, -0.999454943274173060, -0.999453291406512730, -0.999451637040219110, -0.999449980175296520, +-0.999448320811748840, -0.999446658949580510, -0.999444994588795430, -0.999443327729397920, -0.999441658371392090, -0.999439986514782050, -0.999438312159572130, -0.999436635305766430, +-0.999434955953369060, -0.999433274102384360, -0.999431589752816430, -0.999429902904669600, -0.999428213557947980, -0.999426521712655780, -0.999424827368797340, -0.999423130526376770, +-0.999421431185398390, -0.999419729345866430, -0.999418025007785200, -0.999416318171158840, -0.999414608835991760, -0.999412897002288080, -0.999411182670052240, -0.999409465839288360, +-0.999407746510000860, -0.999406024682193970, -0.999404300355872130, -0.999402573531039450, -0.999400844207700260, -0.999399112385859100, -0.999397378065520090, -0.999395641246687560, +-0.999393901929366060, -0.999392160113559800, -0.999390415799273010, -0.999388668986510350, -0.999386919675275930, -0.999385167865574190, -0.999383413557409560, -0.999381656750786380, +-0.999379897445709100, -0.999378135642182030, -0.999376371340209620, -0.999374604539796320, -0.999372835240946440, -0.999371063443664550, -0.999369289147954980, -0.999367512353822150, +-0.999365733061270630, -0.999363951270304750, -0.999362166980928950, -0.999360380193147770, -0.999358590906965550, -0.999356799122386950, -0.999355004839416310, -0.999353208058058160, +-0.999351408778316960, -0.999349607000197260, -0.999347802723703600, -0.999345995948840440, -0.999344186675612200, -0.999342374904023560, -0.999340560634078940, -0.999338743865782920, +-0.999336924599140140, -0.999335102834154940, -0.999333278570831980, -0.999331451809175930, -0.999329622549191110, -0.999327790790882410, -0.999325956534254050, -0.999324119779310900, +-0.999322280526057430, -0.999320438774498280, -0.999318594524638000, -0.999316747776481270, -0.999314898530032520, -0.999313046785296750, -0.999311192542278180, -0.999309335800981800, +-0.999307476561411940, -0.999305614823573500, -0.999303750587470900, -0.999301883853109030, -0.999300014620492450, -0.999298142889625710, -0.999296268660513690, -0.999294391933161050, +-0.999292512707572360, -0.999290630983752480, -0.999288746761705980, -0.999286860041437520, -0.999284970822951980, -0.999283079106254020, -0.999281184891348430, -0.999279288178239740, +-0.999277388966932970, -0.999275487257432650, -0.999273583049743560, -0.999271676343870600, -0.999269767139818410, -0.999267855437591780, -0.999265941237195590, -0.999264024538634500, +-0.999262105341913400, -0.999260183647036950, -0.999258259454010030, -0.999256332762837540, -0.999254403573524240, -0.999252471886074910, -0.999250537700494320, -0.999248601016787470, +-0.999246661834959140, -0.999244720155014090, -0.999242775976957210, -0.999240829300793500, -0.999238880126527620, -0.999236928454164560, -0.999234974283709220, -0.999233017615166360, +-0.999231058448540990, -0.999229096783837980, -0.999227132621062330, -0.999225165960218710, -0.999223196801312220, -0.999221225144347750, -0.999219250989330290, -0.999217274336264620, +-0.999215295185155730, -0.999213313536008730, -0.999211329388828280, -0.999209342743619610, -0.999207353600387590, -0.999205361959137120, -0.999203367819873290, -0.999201371182601110, +-0.999199372047325340, -0.999197370414051210, -0.999195366282783710, -0.999193359653527740, -0.999191350526288380, -0.999189338901070760, -0.999187324777879640, -0.999185308156720240, +-0.999183289037597680, -0.999181267420516720, -0.999179243305482690, -0.999177216692500590, -0.999175187581575310, -0.999173155972712170, -0.999171121865916170, -0.999169085261192300, +-0.999167046158545680, -0.999165004557981520, -0.999162960459504810, -0.999160913863120780, -0.999158864768834420, -0.999156813176650840, -0.999154759086575250, -0.999152702498612880, +-0.999150643412768600, -0.999148581829047750, -0.999146517747455440, -0.999144451167996880, -0.999142382090677180, -0.999140310515501560, -0.999138236442475130, -0.999136159871603090, +-0.999134080802890680, -0.999131999236342990, -0.999129915171965370, -0.999127828609763010, -0.999125739549741040, -0.999123647991904670, -0.999121553936259230, -0.999119457382809940, +-0.999117358331561900, -0.999115256782520560, -0.999113152735691010, -0.999111046191078600, -0.999108937148688650, -0.999106825608526260, -0.999104711570596770, -0.999102595034905620, +-0.999100476001457900, -0.999098354470259080, -0.999096230441314350, -0.999094103914628940, -0.999091974890208400, -0.999089843368057840, -0.999087709348182700, -0.999085572830588300, +-0.999083433815279980, -0.999081292302263060, -0.999079148291542870, -0.999077001783124860, -0.999074852777014350, -0.999072701273216680, -0.999070547271737270, -0.999068390772581470, +-0.999066231775754710, -0.999064070281262430, -0.999061906289109850, -0.999059739799302630, -0.999057570811845990, -0.999055399326745470, -0.999053225344006420, -0.999051048863634270, +-0.999048869885634460, -0.999046688410012650, -0.999044504436773950, -0.999042317965924130, -0.999040128997468410, -0.999037937531412350, -0.999035743567761480, -0.999033547106521370, +-0.999031348147697230, -0.999029146691294830, -0.999026942737319510, -0.999024736285776820, -0.999022527336672290, -0.999020315890011500, -0.999018101945799870, -0.999015885504042970, +-0.999013666564746440, -0.999011445127915620, -0.999009221193556280, -0.999006994761673870, -0.999004765832273930, -0.999002534405362130, -0.999000300480944010, -0.998998064059025140, +-0.998995825139611050, -0.998993583722707410, -0.998991339808319890, -0.998989093396453920, -0.998986844487115280, -0.998984593080309510, -0.998982339176042180, -0.998980082774319160, +-0.998977823875145780, -0.998975562478527920, -0.998973298584471150, -0.998971032192981110, -0.998968763304063590, -0.998966491917724020, -0.998964218033968290, -0.998961941652802050, +-0.998959662774230870, -0.998957381398260620, -0.998955097524896860, -0.998952811154145360, -0.998950522286011890, -0.998948230920502000, -0.998945937057621580, -0.998943640697376400, +-0.998941341839772010, -0.998939040484814410, -0.998936736632509040, -0.998934430282861880, -0.998932121435878730, -0.998929810091565230, -0.998927496249927160, -0.998925179910970410, +-0.998922861074700630, -0.998920539741123830, -0.998918215910245540, -0.998915889582071780, -0.998913560756608310, -0.998911229433860900, -0.998908895613835450, -0.998906559296537710, +-0.998904220481973580, -0.998901879170148940, -0.998899535361069570, -0.998897189054741340, -0.998894840251170260, -0.998892488950361980, -0.998890135152322500, -0.998887778857057710, +-0.998885420064573370, -0.998883058774875600, -0.998880694987970160, -0.998878328703862950, -0.998875959922559840, -0.998873588644066950, -0.998871214868390030, -0.998868838595535210, +-0.998866459825508150, -0.998864078558314940, -0.998861694793961590, -0.998859308532453970, -0.998856919773798090, -0.998854528517999940, -0.998852134765065400, -0.998849738515000580, +-0.998847339767811480, -0.998844938523503870, -0.998842534782084070, -0.998840128543557750, -0.998837719807931230, -0.998835308575210410, -0.998832894845401390, -0.998830478618510040, +-0.998828059894542490, -0.998825638673504710, -0.998823214955402940, -0.998820788740243160, -0.998818360028031370, -0.998815928818773680, -0.998813495112476190, -0.998811058909145010, +-0.998808620208786140, -0.998806179011405670, -0.998803735317009720, -0.998801289125604510, -0.998798840437196020, -0.998796389251790480, -0.998793935569394000, -0.998791479390012670, +-0.998789020713652500, -0.998786559540319920, -0.998784095870020930, -0.998781629702761740, -0.998779161038548360, -0.998776689877387210, -0.998774216219284190, -0.998771740064245740, +-0.998769261412277950, -0.998766780263386830, -0.998764296617578930, -0.998761810474860230, -0.998759321835237080, -0.998756830698715570, -0.998754337065302030, -0.998751840935002470, +-0.998749342307823530, -0.998746841183771110, -0.998744337562851640, -0.998741831445071340, -0.998739322830436430, -0.998736811718953230, -0.998734298110627970, -0.998731782005466970, +-0.998729263403476450, -0.998726742304662850, -0.998724218709032390, -0.998721692616591380, -0.998719164027346170, -0.998716632941303080, -0.998714099358468330, -0.998711563278848360, +-0.998709024702449490, -0.998706483629278050, -0.998703940059340380, -0.998701393992642910, -0.998698845429191850, -0.998696294368993760, -0.998693740812054980, -0.998691184758381810, +-0.998688626207980600, -0.998686065160857890, -0.998683501617020020, -0.998680935576473420, -0.998678367039224410, -0.998675796005279450, -0.998673222474645180, -0.998670646447327730, +-0.998668067923333620, -0.998665486902669430, -0.998662903385341580, -0.998660317371356410, -0.998657728860720350, -0.998655137853440070, -0.998652544349521890, -0.998649948348972360, +-0.998647349851798040, -0.998644748858005250, -0.998642145367600650, -0.998639539380590690, -0.998636930896981800, -0.998634319916780640, -0.998631706439993660, -0.998629090466627510, +-0.998626471996688530, -0.998623851030183360, -0.998621227567118690, -0.998618601607500820, -0.998615973151336540, -0.998613342198632290, -0.998610708749394620, -0.998608072803630180, +-0.998605434361345630, -0.998602793422547430, -0.998600149987242340, -0.998597504055436790, -0.998594855627137570, -0.998592204702351110, -0.998589551281084180, -0.998586895363343440, +-0.998584236949135340, -0.998581576038466760, -0.998578912631344240, -0.998576246727774340, -0.998573578327763830, -0.998570907431319490, -0.998568234038447740, -0.998565558149155490, +-0.998562879763449370, -0.998560198881335960, -0.998557515502822120, -0.998554829627914420, -0.998552141256619730, -0.998549450388944710, -0.998546757024896040, -0.998544061164480360, +-0.998541362807704670, -0.998538661954575520, -0.998535958605099690, -0.998533252759284060, -0.998530544417135180, -0.998527833578660040, -0.998525120243865190, -0.998522404412757640, +-0.998519686085344140, -0.998516965261631250, -0.998514241941626080, -0.998511516125335290, -0.998508787812765640, -0.998506057003924030, -0.998503323698817340, -0.998500587897452330, +-0.998497849599835900, -0.998495108805974700, -0.998492365515875830, -0.998489619729546090, -0.998486871446992220, -0.998484120668221120, -0.998481367393239780, -0.998478611622055090, +-0.998475853354673810, -0.998473092591102840, -0.998470329331349270, -0.998467563575419770, -0.998464795323321440, -0.998462024575061060, -0.998459251330645610, -0.998456475590082100, +-0.998453697353377410, -0.998450916620538420, -0.998448133391572120, -0.998445347666485520, -0.998442559445285480, -0.998439768727979130, -0.998436975514573330, -0.998434179805075210, +-0.998431381599491520, -0.998428580897829270, -0.998425777700095770, -0.998422972006297700, -0.998420163816442270, -0.998417353130536370, -0.998414539948587200, -0.998411724270601540, +-0.998408906096586720, -0.998406085426549520, -0.998403262260497140, -0.998400436598436580, -0.998397608440374950, -0.998394777786319240, -0.998391944636276670, -0.998389108990254240, +-0.998386270848258930, -0.998383430210298070, -0.998380587076378560, -0.998377741446507700, -0.998374893320692400, -0.998372042698939870, -0.998369189581257200, -0.998366333967651620, +-0.998363475858130120, -0.998360615252699920, -0.998357752151368350, -0.998354886554142280, -0.998352018461028940, -0.998349147872035660, -0.998346274787169530, -0.998343399206437550, +-0.998340521129847280, -0.998337640557405590, -0.998334757489119820, -0.998331871924997170, -0.998328983865044760, -0.998326093309270020, -0.998323200257679950, -0.998320304710281990, +-0.998317406667083130, -0.998314506128090810, -0.998311603093312240, -0.998308697562754640, -0.998305789536425350, -0.998302879014331570, -0.998299965996480520, -0.998297050482879530, +-0.998294132473536040, -0.998291211968457160, -0.998288288967650320, -0.998285363471122620, -0.998282435478881620, -0.998279504990934540, -0.998276572007288700, -0.998273636527951310, +-0.998270698552929940, -0.998267758082231780, -0.998264815115864290, -0.998261869653834680, -0.998258921696150380, -0.998255971242818840, -0.998253018293847380, -0.998250062849243340, +-0.998247104909014140, -0.998244144473167230, -0.998241181541709930, -0.998238216114649690, -0.998235248191993830, -0.998232277773749900, -0.998229304859925340, -0.998226329450527360, +-0.998223351545563740, -0.998220371145041700, -0.998217388248968660, -0.998214402857352190, -0.998211414970199720, -0.998208424587518680, -0.998205431709316530, -0.998202436335600910, +-0.998199438466379150, -0.998196438101658810, -0.998193435241447440, -0.998190429885752350, -0.998187422034581330, -0.998184411687941700, -0.998181398845840890, -0.998178383508286800, +-0.998175365675286640, -0.998172345346848070, -0.998169322522978630, -0.998166297203685990, -0.998163269388977480, -0.998160239078860760, -0.998157206273343590, -0.998154170972433310, +-0.998151133176137680, -0.998148092884464160, -0.998145050097420490, -0.998142004815014030, -0.998138957037252750, -0.998135906764143990, -0.998132853995695400, -0.998129798731914760, +-0.998126740972809510, -0.998123680718387530, -0.998120617968656370, -0.998117552723623570, -0.998114484983296910, -0.998111414747684060, -0.998108342016792660, -0.998105266790630390, +-0.998102189069205000, -0.998099108852524180, -0.998096026140595450, -0.998092940933426710, -0.998089853231025730, -0.998086763033399940, -0.998083670340557340, -0.998080575152505590, +-0.998077477469252350, -0.998074377290805390, -0.998071274617172600, -0.998068169448361520, -0.998065061784380040, -0.998061951625235920, -0.998058838970936950, -0.998055723821490770, +-0.998052606176905390, -0.998049486037188460, -0.998046363402347870, -0.998043238272391280, -0.998040110647326560, -0.998036980527161720, -0.998033847911904300, -0.998030712801562410, +-0.998027575196143600, -0.998024435095655860, -0.998021292500107070, -0.998018147409505010, -0.998014999823857660, -0.998011849743172810, -0.998008697167458210, -0.998005542096721990, +-0.998002384530971900, -0.997999224470215830, -0.997996061914461660, -0.997992896863717390, -0.997989729317990790, -0.997986559277289960, -0.997983386741622790, -0.997980211710997040, +-0.997977034185420830, -0.997973854164901920, -0.997970671649448420, -0.997967486639068310, -0.997964299133769490, -0.997961109133559840, -0.997957916638447460, -0.997954721648440350, +-0.997951524163546380, -0.997948324183773550, -0.997945121709129970, -0.997941916739623510, -0.997938709275262400, -0.997935499316054410, -0.997932286862007740, -0.997929071913130290, +-0.997925854469430160, -0.997922634530915450, -0.997919412097594050, -0.997916187169474280, -0.997912959746563910, -0.997909729828871160, -0.997906497416404140, -0.997903262509170830, +-0.997900025107179460, -0.997896785210437900, -0.997893542818954370, -0.997890297932737090, -0.997887050551794050, -0.997883800676133360, -0.997880548305763120, -0.997877293440691650, +-0.997874036080926730, -0.997870776226476910, -0.997867513877350070, -0.997864249033554420, -0.997860981695098180, -0.997857711861989460, -0.997854439534236580, -0.997851164711847430, +-0.997847887394830550, -0.997844607583193710, -0.997841325276945580, -0.997838040476094030, -0.997834753180647400, -0.997831463390613900, -0.997828171106001750, -0.997824876326819040, +-0.997821579053074340, -0.997818279284775620, -0.997814977021931120, -0.997811672264549250, -0.997808365012638250, -0.997805055266206330, -0.997801743025261700, -0.997798428289812690, +-0.997795111059867620, -0.997791791335434830, -0.997788469116522530, -0.997785144403139150, -0.997781817195292800, -0.997778487492991920, -0.997775155296244830, -0.997771820605059870, +-0.997768483419445350, -0.997765143739409610, -0.997761801564961080, -0.997758456896107980, -0.997755109732858750, -0.997751760075221710, -0.997748407923205290, -0.997745053276817950, +-0.997741696136067780, -0.997738336500963550, -0.997734974371513370, -0.997731609747725790, -0.997728242629609240, -0.997724873017171940, -0.997721500910422550, -0.997718126309369510, +-0.997714749214021030, -0.997711369624385670, -0.997707987540471960, -0.997704602962288250, -0.997701215889843060, -0.997697826323144850, -0.997694434262201950, -0.997691039707023000, +-0.997687642657616560, -0.997684243113990950, -0.997680841076154730, -0.997677436544116340, -0.997674029517884420, -0.997670619997467420, -0.997667207982873890, -0.997663793474112380, +-0.997660376471191320, -0.997656956974119270, -0.997653534982904990, -0.997650110497556700, -0.997646683518083280, -0.997643254044493060, -0.997639822076794690, -0.997636387614996840, +-0.997632950659107950, -0.997629511209136790, -0.997626069265091790, -0.997622624826981610, -0.997619177894814800, -0.997615728468600140, -0.997612276548346060, -0.997608822134061430, +-0.997605365225754710, -0.997601905823434550, -0.997598443927109610, -0.997594979536788550, -0.997591512652480030, -0.997588043274192700, -0.997584571401935350, -0.997581097035716620, +-0.997577620175545080, -0.997574140821429480, -0.997570658973378490, -0.997567174631400880, -0.997563687795505310, -0.997560198465700650, -0.997556706641995360, -0.997553212324398420, +-0.997549715512918380, -0.997546216207564010, -0.997542714408344190, -0.997539210115267470, -0.997535703328342850, -0.997532194047578870, -0.997528682272984410, -0.997525168004568360, +-0.997521651242339270, -0.997518131986306120, -0.997514610236477580, -0.997511085992862530, -0.997507559255469740, -0.997504030024308210, -0.997500498299386470, -0.997496964080713530, +-0.997493427368298160, -0.997489888162149230, -0.997486346462275520, -0.997482802268686020, -0.997479255581389500, -0.997475706400394850, -0.997472154725710820, -0.997468600557346540, +-0.997465043895310770, -0.997461484739612380, -0.997457923090260160, -0.997454358947263200, -0.997450792310630390, -0.997447223180370490, -0.997443651556492620, -0.997440077439005650, +-0.997436500827918460, -0.997432921723240050, -0.997429340124979300, -0.997425756033145090, -0.997422169447746640, -0.997418580368792720, -0.997414988796292310, -0.997411394730254530, +-0.997407798170688140, -0.997404199117602250, -0.997400597571005960, -0.997396993530908160, -0.997393386997317940, -0.997389777970244080, -0.997386166449695910, -0.997382552435682300, +-0.997378935928212360, -0.997375316927294970, -0.997371695432939240, -0.997368071445154380, -0.997364444963949380, -0.997360815989333240, -0.997357184521315050, -0.997353550559903820, +-0.997349914105108760, -0.997346275156938970, -0.997342633715403440, -0.997338989780511390, -0.997335343352271810, -0.997331694430693920, -0.997328043015786700, -0.997324389107559490, +-0.997320732706021170, -0.997317073811181180, -0.997313412423048270, -0.997309748541632010, -0.997306082166941390, -0.997302413298985500, -0.997298741937773680, -0.997295068083314810, +-0.997291391735618430, -0.997287712894693530, -0.997284031560549340, -0.997280347733195070, -0.997276661412639930, -0.997272972598893250, -0.997269281291964020, -0.997265587491861560, +-0.997261891198595210, -0.997258192412174060, -0.997254491132607450, -0.997250787359904690, -0.997247081094074890, -0.997243372335127390, -0.997239661083071490, -0.997235947337916320, +-0.997232231099671410, -0.997228512368345870, -0.997224791143949130, -0.997221067426490300, -0.997217341215978940, -0.997213612512424130, -0.997209881315835320, -0.997206147626221840, +-0.997202411443592780, -0.997198672767957930, -0.997194931599326260, -0.997191187937707340, -0.997187441783110470, -0.997183693135545000, -0.997179941995020140, -0.997176188361545650, +-0.997172432235130520, -0.997168673615784430, -0.997164912503516580, -0.997161148898336510, -0.997157382800253460, -0.997153614209277060, -0.997149843125416660, -0.997146069548681460, +-0.997142293479081230, -0.997138514916625200, -0.997134733861323010, -0.997130950313183880, -0.997127164272217370, -0.997123375738432900, -0.997119584711840150, -0.997115791192448310, +-0.997111995180267050, -0.997108196675305810, -0.997104395677574030, -0.997100592187081360, -0.997096786203837130, -0.997092977727850990, -0.997089166759132390, -0.997085353297690770, +-0.997081537343535770, -0.997077718896677070, -0.997073897957123980, -0.997070074524886160, -0.997066248599973170, -0.997062420182394550, -0.997058589272159850, -0.997054755869278720, +-0.997050919973760720, -0.997047081585615390, -0.997043240704852400, -0.997039397331481280, -0.997035551465511590, -0.997031703106953100, -0.997027852255815360, -0.997023998912107910, +-0.997020143075840530, -0.997016284747022860, -0.997012423925664360, -0.997008560611774900, -0.997004694805363910, -0.997000826506441280, -0.996996955715016560, -0.996993082431099410, +-0.996989206654699590, -0.996985328385826760, -0.996981447624490700, -0.996977564370700950, -0.996973678624467290, -0.996969790385799250, -0.996965899654706940, -0.996962006431199920, +-0.996958110715287730, -0.996954212506980350, -0.996950311806287460, -0.996946408613218700, -0.996942502927783970, -0.996938594749993020, -0.996934684079855530, -0.996930770917381360, +-0.996926855262580290, -0.996922937115462090, -0.996919016476036530, -0.996915093344313390, -0.996911167720302530, -0.996907239604013730, -0.996903308995456870, -0.996899375894641730, +-0.996895440301578170, -0.996891502216275980, -0.996887561638744920, -0.996883618568995100, -0.996879673007036280, -0.996875724952878130, -0.996871774406530850, -0.996867821368004000, +-0.996863865837307680, -0.996859907814451660, -0.996855947299445820, -0.996851984292300150, -0.996848018793024430, -0.996844050801628740, -0.996840080318122990, -0.996836107342517040, +-0.996832131874820780, -0.996828153915044090, -0.996824173463197070, -0.996820190519289720, -0.996816205083331800, -0.996812217155333410, -0.996808226735304450, -0.996804233823255000, +-0.996800238419194850, -0.996796240523134200, -0.996792240135082940, -0.996788237255050950, -0.996784231883048430, -0.996780224019085390, -0.996776213663171820, -0.996772200815317590, +-0.996768185475532920, -0.996764167643827800, -0.996760147320212230, -0.996756124504696310, -0.996752099197290130, -0.996748071398003700, -0.996744041106847000, -0.996740008323830250, +-0.996735973048963550, -0.996731935282256790, -0.996727895023720280, -0.996723852273363910, -0.996719807031198110, -0.996715759297232660, -0.996711709071477880, -0.996707656353943760, +-0.996703601144640410, -0.996699543443578250, -0.996695483250767180, -0.996691420566217290, -0.996687355389939020, -0.996683287721942260, -0.996679217562237320, -0.996675144910834310, +-0.996671069767743440, -0.996666992132974830, -0.996662912006538890, -0.996658829388445520, -0.996654744278705150, -0.996650656677328000, -0.996646566584324160, -0.996642473999703740, +-0.996638378923477290, -0.996634281355654910, -0.996630181296246810, -0.996626078745263210, -0.996621973702714440, -0.996617866168610700, -0.996613756142962330, -0.996609643625779640, +-0.996605528617072740, -0.996601411116851970, -0.996597291125127850, -0.996593168641910390, -0.996589043667210020, -0.996584916201037060, -0.996580786243401740, -0.996576653794314480, +-0.996572518853785620, -0.996568381421825470, -0.996564241498444360, -0.996560099083652620, -0.996555954177460680, -0.996551806779878870, -0.996547656890917510, -0.996543504510587040, +-0.996539349638897680, -0.996535192275860070, -0.996531032421484440, -0.996526870075781220, -0.996522705238760850, -0.996518537910433650, -0.996514368090810180, -0.996510195779900850, +-0.996506020977715900, -0.996501843684265980, -0.996497663899561400, -0.996493481623612730, -0.996489296856430400, -0.996485109598024720, -0.996480919848406250, -0.996476727607585430, +-0.996472532875572910, -0.996468335652379020, -0.996464135938014310, -0.996459933732489310, -0.996455729035814470, -0.996451521848000120, -0.996447312169057130, -0.996443099998995830, +-0.996438885337826760, -0.996434668185560590, -0.996430448542207640, -0.996426226407778560, -0.996422001782284020, -0.996417774665734330, -0.996413545058140280, -0.996409312959512410, +-0.996405078369861140, -0.996400841289197260, -0.996396601717531310, -0.996392359654873830, -0.996388115101235370, -0.996383868056626600, -0.996379618521058270, -0.996375366494540950, +-0.996371111977085060, -0.996366854968701480, -0.996362595469400760, -0.996358333479193560, -0.996354068998090540, -0.996349802026102350, -0.996345532563239540, -0.996341260609512890, +-0.996336986164933270, -0.996332709229511120, -0.996328429803257090, -0.996324147886182070, -0.996319863478296600, -0.996315576579611560, -0.996311287190137620, -0.996306995309885420, +-0.996302700938865750, -0.996298404077089250, -0.996294104724566810, -0.996289802881309080, -0.996285498547326840, -0.996281191722630850, -0.996276882407231890, -0.996272570601140720, +-0.996268256304368220, -0.996263939516924930, -0.996259620238821860, -0.996255298470069660, -0.996250974210679320, -0.996246647460661490, -0.996242318220027180, -0.996237986488786920, +-0.996233652266951710, -0.996229315554532420, -0.996224976351539840, -0.996220634657984830, -0.996216290473878160, -0.996211943799230730, -0.996207594634053620, -0.996203242978357380, +-0.996198888832153130, -0.996194532195451510, -0.996190173068263630, -0.996185811450600370, -0.996181447342472600, -0.996177080743891110, -0.996172711654866980, -0.996168340075411110, +-0.996163966005534360, -0.996159589445247630, -0.996155210394562010, -0.996150828853488270, -0.996146444822037510, -0.996142058300220620, -0.996137669288048700, -0.996133277785532510, +-0.996128883792683160, -0.996124487309511530, -0.996120088336028720, -0.996115686872245720, -0.996111282918173410, -0.996106876473823010, -0.996102467539205390, -0.996098056114331550, +-0.996093642199212700, -0.996089225793859610, -0.996084806898283490, -0.996080385512495340, -0.996075961636506250, -0.996071535270327210, -0.996067106413969450, -0.996062675067443840, +-0.996058241230761480, -0.996053804903933580, -0.996049366086971260, -0.996044924779885380, -0.996040480982687270, -0.996036034695388040, -0.996031585917998560, -0.996027134650530170, +-0.996022680892994060, -0.996018224645401130, -0.996013765907762580, -0.996009304680089640, -0.996004840962393500, -0.996000374754685280, -0.995995906056976080, -0.995991434869277100, +-0.995986961191599570, -0.995982485023954590, -0.995978006366353470, -0.995973525218807330, -0.995969041581327370, -0.995964555453924700, -0.995960066836610760, -0.995955575729396640, +-0.995951082132293550, -0.995946586045312720, -0.995942087468465460, -0.995937586401763000, -0.995933082845216640, -0.995928576798837510, -0.995924068262636910, -0.995919557236626060, +-0.995915043720816410, -0.995910527715219150, -0.995906009219845620, -0.995901488234707030, -0.995896964759814710, -0.995892438795179970, -0.995887910340814140, -0.995883379396728550, +-0.995878845962934520, -0.995874310039443380, -0.995869771626266440, -0.995865230723415040, -0.995860687330900610, -0.995856141448734470, -0.995851593076927940, -0.995847042215492360, +-0.995842488864439270, -0.995837933023779990, -0.995833374693525840, -0.995828813873688270, -0.995824250564278700, -0.995819684765308470, -0.995815116476789000, -0.995810545698731620, +-0.995805972431148100, -0.995801396674049540, -0.995796818427447490, -0.995792237691353390, -0.995787654465778770, -0.995783068750734860, -0.995778480546233410, -0.995773889852285770, +-0.995769296668903350, -0.995764700996097710, -0.995760102833880280, -0.995755502182262610, -0.995750899041256240, -0.995746293410872620, -0.995741685291123170, -0.995737074682019550, +-0.995732461583573200, -0.995727845995795780, -0.995723227918698830, -0.995718607352293670, -0.995713984296591970, -0.995709358751605380, -0.995704730717345330, -0.995700100193823490, +-0.995695467181051510, -0.995690831679040710, -0.995686193687802870, -0.995681553207349630, -0.995676910237692450, -0.995672264778842960, -0.995667616830812730, -0.995662966393613620, +-0.995658313467257080, -0.995653658051754650, -0.995649000147118210, -0.995644339753359200, -0.995639676870489270, -0.995635011498520180, -0.995630343637463610, -0.995625673287331200, +-0.995621000448134620, -0.995616325119885510, -0.995611647302595550, -0.995606966996276490, -0.995602284200939990, -0.995597598916597830, -0.995592911143261650, -0.995588220880943230, +-0.995583528129654230, -0.995578832889406410, -0.995574135160211430, -0.995569434942081170, -0.995564732235027280, -0.995560027039061660, -0.995555319354195940, -0.995550609180441910, +-0.995545896517811450, -0.995541181366316090, -0.995536463725967940, -0.995531743596778540, -0.995527020978759670, -0.995522295871923310, -0.995517568276281350, -0.995512838191845330, +-0.995508105618627350, -0.995503370556638960, -0.995498633005892140, -0.995493892966398790, -0.995489150438170770, -0.995484405421219850, -0.995479657915557930, -0.995474907921196750, +-0.995470155438148430, -0.995465400466424730, -0.995460643006037430, -0.995455883056998610, -0.995451120619319950, -0.995446355693013540, -0.995441588278091260, -0.995436818374565100, +-0.995432045982446830, -0.995427271101748330, -0.995422493732481820, -0.995417713874658940, -0.995412931528291910, -0.995408146693392500, -0.995403359369972710, -0.995398569558044510, +-0.995393777257619910, -0.995388982468710880, -0.995384185191329430, -0.995379385425487430, -0.995374583171196980, -0.995369778428470080, -0.995364971197318820, -0.995360161477754970, +-0.995355349269790860, -0.995350534573438250, -0.995345717388709360, -0.995340897715616290, -0.995336075554170810, -0.995331250904385230, -0.995326423766271560, -0.995321594139841780, +-0.995316762025107990, -0.995311927422082410, -0.995307090330776800, -0.995302250751203600, -0.995297408683374800, -0.995292564127302380, -0.995287717082998680, -0.995282867550475570, +-0.995278015529745260, -0.995273161020819970, -0.995268304023711800, -0.995263444538432960, -0.995258582564995440, -0.995253718103411460, -0.995248851153693100, -0.995243981715852710, +-0.995239109789902380, -0.995234235375854090, -0.995229358473720400, -0.995224479083513300, -0.995219597205245000, -0.995214712838927600, -0.995209825984573530, -0.995204936642194780, +-0.995200044811803800, -0.995195150493412670, -0.995190253687033730, -0.995185354392679080, -0.995180452610361140, -0.995175548340091920, -0.995170641581883950, -0.995165732335749340, +-0.995160820601700410, -0.995155906379749270, -0.995150989669908560, -0.995146070472190280, -0.995141148786606980, -0.995136224613170640, -0.995131297951893700, -0.995126368802788600, +-0.995121437165867650, -0.995116503041143070, -0.995111566428627190, -0.995106627328332440, -0.995101685740271020, -0.995096741664455500, -0.995091795100898070, -0.995086846049611170, +-0.995081894510607130, -0.995076940483898390, -0.995071983969497250, -0.995067024967416280, -0.995062063477667680, -0.995057099500263890, -0.995052133035217220, -0.995047164082540350, +-0.995042192642245580, -0.995037218714345360, -0.995032242298852120, -0.995027263395778180, -0.995022282005136200, -0.995017298126938400, -0.995012311761197420, -0.995007322907925480, +-0.995002331567135470, -0.994997337738839470, -0.994992341423050260, -0.994987342619780170, -0.994982341329041730, -0.994977337550847270, -0.994972331285209570, -0.994967322532141150, +-0.994962311291654360, -0.994957297563761720, -0.994952281348475910, -0.994947262645809350, -0.994942241455774700, -0.994937217778384400, -0.994932191613650980, -0.994927162961587230, +-0.994922131822205460, -0.994917098195518430, -0.994912062081538710, -0.994907023480278710, -0.994901982391751090, -0.994896938815968750, -0.994891892752943870, -0.994886844202689360, +-0.994881793165217740, -0.994876739640541570, -0.994871683628673620, -0.994866625129626430, -0.994861564143412650, -0.994856500670045050, -0.994851434709536080, -0.994846366261898600, +-0.994841295327145160, -0.994836221905288530, -0.994831145996341370, -0.994826067600316110, -0.994820986717225960, -0.994815903347083250, -0.994810817489900740, -0.994805729145691320, +-0.994800638314467410, -0.994795544996242010, -0.994790449191027770, -0.994785350898837350, -0.994780250119683630, -0.994775146853579150, -0.994770041100536790, -0.994764932860569440, +-0.994759822133689740, -0.994754708919910470, -0.994749593219244500, -0.994744475031704380, -0.994739354357303210, -0.994734231196053640, -0.994729105547968450, -0.994723977413060510, +-0.994718846791342590, -0.994713713682827680, -0.994708578087528440, -0.994703440005457630, -0.994698299436628240, -0.994693156381053270, -0.994688010838745250, -0.994682862809717290, +-0.994677712293982160, -0.994672559291552740, -0.994667403802441790, -0.994662245826662520, -0.994657085364227590, -0.994651922415149990, -0.994646756979442490, -0.994641589057118190, +-0.994636418648189860, -0.994631245752670480, -0.994626070370572930, -0.994620892501910210, -0.994615712146695310, -0.994610529304941200, -0.994605343976660670, -0.994600156161866920, +-0.994594965860572610, -0.994589773072790840, -0.994584577798534820, -0.994579380037817320, -0.994574179790651320, -0.994568977057049940, -0.994563771837026040, -0.994558564130592740, +-0.994553353937763010, -0.994548141258549960, -0.994542926092966460, -0.994537708441025630, -0.994532488302740660, -0.994527265678124330, -0.994522040567189960, -0.994516812969950430, +-0.994511582886418830, -0.994506350316608280, -0.994501115260531980, -0.994495877718202800, -0.994490637689633970, -0.994485395174838470, -0.994480150173829510, -0.994474902686620200, +-0.994469652713223630, -0.994464400253652900, -0.994459145307921120, -0.994453887876041610, -0.994448627958027350, -0.994443365553891460, -0.994438100663647240, -0.994432833287307690, +-0.994427563424886030, -0.994422291076395460, -0.994417016241849310, -0.994411738921260450, -0.994406459114642320, -0.994401176822008130, -0.994395892043370870, -0.994390604778743970, +-0.994385315028140540, -0.994380022791573670, -0.994374728069056910, -0.994369430860603250, -0.994364131166226020, -0.994358828985938530, -0.994353524319753990, -0.994348217167685510, +-0.994342907529746520, -0.994337595405950350, -0.994332280796310090, -0.994326963700839170, -0.994321644119550930, -0.994316322052458460, -0.994310997499575300, -0.994305670460914560, +-0.994300340936489560, -0.994295008926313840, -0.994289674430400510, -0.994284337448763100, -0.994278997981414840, -0.994273656028369040, -0.994268311589639020, -0.994262964665238340, +-0.994257615255180190, -0.994252263359478030, -0.994246908978145160, -0.994241552111195140, -0.994236192758641170, -0.994230830920496690, -0.994225466596775130, -0.994220099787490040, +-0.994214730492654410, -0.994209358712282220, -0.994203984446386580, -0.994198607694980920, -0.994193228458078780, -0.994187846735693490, -0.994182462527838600, -0.994177075834527630, +-0.994171686655773930, -0.994166294991591150, -0.994160900841992490, -0.994155504206991610, -0.994150105086601950, -0.994144703480837060, -0.994139299389710460, -0.994133892813235390, +-0.994128483751425820, -0.994123072204294970, -0.994117658171856380, -0.994112241654123710, -0.994106822651110500, -0.994101401162830080, -0.994095977189296210, -0.994090550730522440, +-0.994085121786522310, -0.994079690357309360, -0.994074256442897150, -0.994068820043299330, -0.994063381158529440, -0.994057939788601130, -0.994052495933527850, -0.994047049593323460, +-0.994041600768001410, -0.994036149457575350, -0.994030695662058930, -0.994025239381465810, -0.994019780615809530, -0.994014319365103760, -0.994008855629362250, -0.994003389408598670, +-0.993997920702826550, -0.993992449512059670, -0.993986975836311680, -0.993981499675596130, -0.993976021029926990, -0.993970539899317610, -0.993965056283781960, -0.993959570183333700, +-0.993954081597986480, -0.993948590527754080, -0.993943096972650260, -0.993937600932688570, -0.993932102407882990, -0.993926601398247070, -0.993921097903794680, -0.993915591924539600, +-0.993910083460495470, -0.993904572511676190, -0.993899059078095500, -0.993893543159767080, -0.993888024756704900, -0.993882503868922520, -0.993876980496433910, -0.993871454639252970, +-0.993865926297393340, -0.993860395470868910, -0.993854862159693320, -0.993849326363880680, -0.993843788083444760, -0.993838247318399430, -0.993832704068758450, -0.993827158334535610, +-0.993821610115744990, -0.993816059412400370, -0.993810506224515500, -0.993804950552104380, -0.993799392395180780, -0.993793831753758910, -0.993788268627852300, -0.993782703017475180, +-0.993777134922641190, -0.993771564343364440, -0.993765991279658590, -0.993760415731537950, -0.993754837699016180, -0.993749257182107380, -0.993743674180825430, -0.993738088695184320, +-0.993732500725197920, -0.993726910270880340, -0.993721317332245450, -0.993715721909307130, -0.993710124002079700, -0.993704523610576820, -0.993698920734812810, -0.993693315374801320, +-0.993687707530556690, -0.993682097202092550, -0.993676484389423350, -0.993670869092562970, -0.993665251311525390, -0.993659631046324710, -0.993654008296974920, -0.993648383063490130, +-0.993642755345884310, -0.993637125144171680, -0.993631492458366130, -0.993625857288481850, -0.993620219634533060, -0.993614579496533650, -0.993608936874497810, -0.993603291768439640, +-0.993597644178373150, -0.993591994104312650, -0.993586341546272120, -0.993580686504265790, -0.993575028978307630, -0.993569368968411970, -0.993563706474592910, -0.993558041496864660, +-0.993552374035241210, -0.993546704089736780, -0.993541031660365560, -0.993535356747141880, -0.993529679350079740, -0.993523999469193450, -0.993518317104497120, -0.993512632256004950, +-0.993506944923731260, -0.993501255107690270, -0.993495562807896080, -0.993489868024363010, -0.993484170757105270, -0.993478471006137180, -0.993472768771472730, -0.993467064053126460, +-0.993461356851112590, -0.993455647165445210, -0.993449934996138760, -0.993444220343207450, -0.993438503206665600, -0.993432783586527530, -0.993427061482807350, -0.993421336895519700, +-0.993415609824678690, -0.993409880270298640, -0.993404148232393870, -0.993398413710978700, -0.993392676706067570, -0.993386937217674680, -0.993381195245814470, -0.993375450790501270, +-0.993369703851749390, -0.993363954429573370, -0.993358202523987430, -0.993352448135005890, -0.993346691262643300, -0.993340931906914080, -0.993335170067832340, -0.993329405745412730, +-0.993323638939669680, -0.993317869650617520, -0.993312097878270570, -0.993306323622643480, -0.993300546883750690, -0.993294767661606400, -0.993288985956225170, -0.993283201767621420, +-0.993277415095809800, -0.993271625940804540, -0.993265834302620390, -0.993260040181271450, -0.993254243576772500, -0.993248444489137850, -0.993242642918382270, -0.993236838864519970, +-0.993231032327565600, -0.993225223307533710, -0.993219411804438620, -0.993213597818295100, -0.993207781349117580, -0.993201962396920600, -0.993196140961718600, -0.993190317043526450, +-0.993184490642358360, -0.993178661758229110, -0.993172830391153230, -0.993166996541145260, -0.993161160208219650, -0.993155321392391270, -0.993149480093674650, -0.993143636312084240, +-0.993137790047634810, -0.993131941300340880, -0.993126090070217020, -0.993120236357278090, -0.993114380161538410, -0.993108521483012870, -0.993102660321715900, -0.993096796677662370, +-0.993090930550866950, -0.993085061941344050, -0.993079190849108560, -0.993073317274175030, -0.993067441216558320, -0.993061562676272880, -0.993055681653333690, -0.993049798147755180, +-0.993043912159552230, -0.993038023688739500, -0.993032132735331640, -0.993026239299343530, -0.993020343380789820, -0.993014444979685160, -0.993008544096044440, -0.993002640729882420, +-0.992996734881213760, -0.992990826550053220, -0.992984915736415670, -0.992979002440315780, -0.992973086661768420, -0.992967168400788360, -0.992961247657390360, -0.992955324431589180, +-0.992949398723399820, -0.992943470532836820, -0.992937539859915290, -0.992931606704649860, -0.992925671067055320, -0.992919732947146640, -0.992913792344938710, -0.992907849260446280, +-0.992901903693684140, -0.992895955644667370, -0.992890005113410520, -0.992884052099928800, -0.992878096604236870, -0.992872138626349820, -0.992866178166282420, -0.992860215224049440, +-0.992854249799666080, -0.992848281893147000, -0.992842311504507300, -0.992836338633761640, -0.992830363280925220, -0.992824385446012920, -0.992818405129039740, -0.992812422330020430, +-0.992806437048970090, -0.992800449285903610, -0.992794459040836070, -0.992788466313782370, -0.992782471104757480, -0.992776473413776510, -0.992770473240854320, -0.992764470586005920, +-0.992758465449246400, -0.992752457830590630, -0.992746447730053720, -0.992740435147650650, -0.992734420083396520, -0.992728402537306430, -0.992722382509395260, -0.992716359999678220, +-0.992710335008170070, -0.992704307534886250, -0.992698277579841750, -0.992692245143051430, -0.992686210224530520, -0.992680172824294100, -0.992674132942357180, -0.992668090578735060, +-0.992662045733442630, -0.992655998406495100, -0.992649948597907450, -0.992643896307695120, -0.992637841535872980, -0.992631784282456240, -0.992625724547460010, -0.992619662330899490, +-0.992613597632789670, -0.992607530453146090, -0.992601460791983640, -0.992595388649317400, -0.992589314025162820, -0.992583236919534980, -0.992577157332449000, -0.992571075263920080, +-0.992564990713963540, -0.992558903682594360, -0.992552814169828100, -0.992546722175679740, -0.992540627700164600, -0.992534530743297890, -0.992528431305094830, -0.992522329385570610, +-0.992516224984740680, -0.992510118102620240, -0.992504008739224400, -0.992497896894568580, -0.992491782568668100, -0.992485665761538070, -0.992479546473193920, -0.992473424703650850, +-0.992467300452924190, -0.992461173721029270, -0.992455044507981500, -0.992448912813796100, -0.992442778638488400, -0.992436641982073820, -0.992430502844567460, -0.992424361225984990, +-0.992418217126341600, -0.992412070545652720, -0.992405921483933580, -0.992399769941199720, -0.992393615917466330, -0.992387459412748970, -0.992381300427062960, -0.992375138960423620, +-0.992368975012846490, -0.992362808584346890, -0.992356639674940370, -0.992350468284642130, -0.992344294413467830, -0.992338118061432570, -0.992331939228552230, -0.992325757914842010, +-0.992319574120317460, -0.992313387844993900, -0.992307199088886870, -0.992301007852011810, -0.992294814134384250, -0.992288617936019750, -0.992282419256933610, -0.992276218097141280, +-0.992270014456658630, -0.992263808335500870, -0.992257599733683660, -0.992251388651222310, -0.992245175088132590, -0.992238959044429820, -0.992232740520129770, -0.992226519515247870, +-0.992220296029799660, -0.992214070063800690, -0.992207841617266610, -0.992201610690212840, -0.992195377282655060, -0.992189141394608900, -0.992182903026089690, -0.992176662177113420, +-0.992170418847695410, -0.992164173037851430, -0.992157924747596900, -0.992151673976947700, -0.992145420725919160, -0.992139164994527150, -0.992132906782787210, -0.992126646090715100, +-0.992120382918326270, -0.992114117265636590, -0.992107849132661480, -0.992101578519416830, -0.992095305425918280, -0.992089029852181280, -0.992082751798221810, -0.992076471264055510, +-0.992070188249697950, -0.992063902755164980, -0.992057614780472270, -0.992051324325635480, -0.992045031390670350, -0.992038735975592670, -0.992032438080418190, -0.992026137705162680, +-0.992019834849841690, -0.992013529514471190, -0.992007221699066850, -0.992000911403644440, -0.991994598628219810, -0.991988283372808530, -0.991981965637426690, -0.991975645422089820, +-0.991969322726813930, -0.991962997551614770, -0.991956669896507990, -0.991950339761509590, -0.991944007146635330, -0.991937672051901090, -0.991931334477322730, -0.991924994422915930, +-0.991918651888696770, -0.991912306874680790, -0.991905959380884220, -0.991899609407322690, -0.991893256954011980, -0.991886902020968300, -0.991880544608207400, -0.991874184715745070, +-0.991867822343597270, -0.991861457491779900, -0.991855090160308820, -0.991848720349200130, -0.991842348058469600, -0.991835973288133330, -0.991829596038206970, -0.991823216308706730, +-0.991816834099648380, -0.991810449411047900, -0.991804062242921390, -0.991797672595284620, -0.991791280468153680, -0.991784885861544670, -0.991778488775473370, -0.991772089209955850, +-0.991765687165008130, -0.991759282640646060, -0.991752875636885860, -0.991746466153743510, -0.991740054191235010, -0.991733639749376340, -0.991727222828183600, -0.991720803427672880, +-0.991714381547860070, -0.991707957188761260, -0.991701530350392550, -0.991695101032770030, -0.991688669235909810, -0.991682234959827880, -0.991675798204540440, -0.991669358970063360, +-0.991662917256412870, -0.991656473063605270, -0.991650026391656340, -0.991643577240582500, -0.991637125610399630, -0.991630671501123940, -0.991624214912771530, -0.991617755845358610, +-0.991611294298901380, -0.991604830273415840, -0.991598363768918190, -0.991591894785424640, -0.991585423322951410, -0.991578949381514580, -0.991572472961130380, -0.991565994061815000, +-0.991559512683584670, -0.991553028826455460, -0.991546542490443830, -0.991540053675565750, -0.991533562381837650, -0.991527068609275530, -0.991520572357895810, -0.991514073627714600, +-0.991507572418748210, -0.991501068731012740, -0.991494562564524840, -0.991488053919300390, -0.991481542795355940, -0.991475029192707580, -0.991468513111371630, -0.991461994551364300, +-0.991455473512702020, -0.991448949995401230, -0.991442423999477910, -0.991435895524948600, -0.991429364571829510, -0.991422831140137070, -0.991416295229887500, -0.991409756841097220, +-0.991403215973782450, -0.991396672627959720, -0.991390126803645240, -0.991383578500855570, -0.991377027719606900, -0.991370474459915660, -0.991363918721798190, -0.991357360505270900, +-0.991350799810350350, -0.991344236637052730, -0.991337670985394490, -0.991331102855392170, -0.991324532247061960, -0.991317959160420540, -0.991311383595484100, -0.991304805552269190, +-0.991298225030792350, -0.991291642031070010, -0.991285056553118490, -0.991278468596954340, -0.991271878162593990, -0.991265285250053860, -0.991258689859350620, -0.991252091990500680, +-0.991245491643520490, -0.991238888818426590, -0.991232283515235510, -0.991225675733963700, -0.991219065474627570, -0.991212452737243900, -0.991205837521829110, -0.991199219828399540, +-0.991192599656972150, -0.991185977007563170, -0.991179351880189240, -0.991172724274867020, -0.991166094191612720, -0.991159461630443440, -0.991152826591375490, -0.991146189074425420, +-0.991139549079609880, -0.991132906606945530, -0.991126261656448790, -0.991119614228136550, -0.991112964322025220, -0.991106311938131480, -0.991099657076471740, -0.991092999737063110, +-0.991086339919921900, -0.991079677625064880, -0.991073012852508710, -0.991066345602269920, -0.991059675874365160, -0.991053003668811440, -0.991046328985625060, -0.991039651824823010, +-0.991032972186421720, -0.991026290070437970, -0.991019605476888610, -0.991012918405790200, -0.991006228857159390, -0.990999536831013050, -0.990992842327367840, -0.990986145346240630, +-0.990979445887647970, -0.990972743951606840, -0.990966039538133670, -0.990959332647245450, -0.990952623278958940, -0.990945911433290800, -0.990939197110258020, -0.990932480309877130, +-0.990925761032165120, -0.990919039277138650, -0.990912315044814700, -0.990905588335209810, -0.990898859148340860, -0.990892127484224950, -0.990885393342878730, -0.990878656724318960, +-0.990871917628562530, -0.990865176055626410, -0.990858432005527150, -0.990851685478281950, -0.990844936473907590, -0.990838184992420820, -0.990831431033838640, -0.990824674598177800, +-0.990817915685455300, -0.990811154295688000, -0.990804390428892900, -0.990797624085086760, -0.990790855264286450, -0.990784083966509190, -0.990777310191771620, -0.990770533940090850, +-0.990763755211483630, -0.990756974005966960, -0.990750190323558040, -0.990743404164273640, -0.990736615528130640, -0.990729824415146120, -0.990723030825337080, -0.990716234758720500, +-0.990709436215313270, -0.990702635195132460, -0.990695831698195080, -0.990689025724518000, -0.990682217274118430, -0.990675406347013450, -0.990668592943219850, -0.990661777062754710, +-0.990654958705635250, -0.990648137871878220, -0.990641314561500950, -0.990634488774520430, -0.990627660510953630, -0.990620829770817780, -0.990613996554129740, -0.990607160860906830, +-0.990600322691165940, -0.990593482044924260, -0.990586638922198670, -0.990579793323006720, -0.990572945247365280, -0.990566094695291440, -0.990559241666802310, -0.990552386161915210, +-0.990545528180646890, -0.990538667723015020, -0.990531804789036350, -0.990524939378728210, -0.990518071492107690, -0.990511201129192110, -0.990504328289998460, -0.990497452974543950, +-0.990490575182845780, -0.990483694914921160, -0.990476812170787310, -0.990469926950461540, -0.990463039253960840, -0.990456149081302640, -0.990449256432504030, -0.990442361307582120, +-0.990435463706554550, -0.990428563629438210, -0.990421661076250510, -0.990414756047008570, -0.990407848541729810, -0.990400938560431430, -0.990394026103130760, -0.990387111169845010, +-0.990380193760591390, -0.990373273875387210, -0.990366351514250010, -0.990359426677196900, -0.990352499364245190, -0.990345569575412310, -0.990338637310715250, -0.990331702570171890, +-0.990324765353799100, -0.990317825661614530, -0.990310883493635390, -0.990303938849879000, -0.990296991730362790, -0.990290042135104080, -0.990283090064120190, -0.990276135517428660, +-0.990269178495046700, -0.990262218996991850, -0.990255257023281430, -0.990248292573932990, -0.990241325648963720, -0.990234356248391180, -0.990227384372232570, -0.990220410020505650, +-0.990213433193227740, -0.990206453890416280, -0.990199472112088590, -0.990192487858262300, -0.990185501128954650, -0.990178511924183380, -0.990171520243965820, -0.990164526088319290, +-0.990157529457261650, -0.990150530350810130, -0.990143528768982260, -0.990136524711795580, -0.990129518179267640, -0.990122509171415750, -0.990115497688257680, -0.990108483729810860, +-0.990101467296092940, -0.990094448387121240, -0.990087427002913410, -0.990080403143487110, -0.990073376808859760, -0.990066347999048910, -0.990059316714072100, -0.990052282953947200, +-0.990045246718691540, -0.990038208008322760, -0.990031166822858410, -0.990024123162316250, -0.990017077026713600, -0.990010028416068330, -0.990002977330398100, -0.989995923769720340, +-0.989988867734052810, -0.989981809223413060, -0.989974748237818840, -0.989967684777287690, -0.989960618841837390, -0.989953550431485580, -0.989946479546249700, -0.989939406186147730, +-0.989932330351197320, -0.989925252041416020, -0.989918171256821690, -0.989911087997431660, -0.989904002263264140, -0.989896914054336550, -0.989889823370666780, -0.989882730212272350, +-0.989875634579171160, -0.989868536471380840, -0.989861435888919170, -0.989854332831803910, -0.989847227300052810, -0.989840119293683540, -0.989833008812714190, -0.989825895857162190, +-0.989818780427045520, -0.989811662522381840, -0.989804542143188910, -0.989797419289484730, -0.989790293961287040, -0.989783166158613610, -0.989776035881482220, -0.989768903129910840, +-0.989761767903917120, -0.989754630203518950, -0.989747490028734300, -0.989740347379580830, -0.989733202256076420, -0.989726054658239150, -0.989718904586086690, -0.989711752039637020, +-0.989704597018908010, -0.989697439523917420, -0.989690279554683140, -0.989683117111223250, -0.989675952193555640, -0.989668784801698060, -0.989661614935668620, -0.989654442595485070, +-0.989647267781165410, -0.989640090492727610, -0.989632910730189550, -0.989625728493569110, -0.989618543782884500, -0.989611356598153470, -0.989604166939394130, -0.989596974806624340, +-0.989589780199862100, -0.989582583119125280, -0.989575383564432200, -0.989568181535800620, -0.989560977033248520, -0.989553770056794010, -0.989546560606455070, -0.989539348682249800, +-0.989532134284196060, -0.989524917412312080, -0.989517698066615830, -0.989510476247125070, -0.989503251953858350, -0.989496025186833440, -0.989488795946068530, -0.989481564231581620, +-0.989474330043390580, -0.989467093381513950, -0.989459854245969490, -0.989452612636775530, -0.989445368553949930, -0.989438121997510910, -0.989430872967476670, -0.989423621463865200, +-0.989416367486694700, -0.989409111035983170, -0.989401852111748800, -0.989394590714010040, -0.989387326842784630, -0.989380060498091020, -0.989372791679947180, -0.989365520388371330, +-0.989358246623381790, -0.989350970384996530, -0.989343691673233990, -0.989336410488112160, -0.989329126829649240, -0.989321840697863550, -0.989314552092773300, -0.989307261014396590, +-0.989299967462751730, -0.989292671437856930, -0.989285372939730510, -0.989278071968390680, -0.989270768523855650, -0.989263462606143620, -0.989256154215273020, -0.989248843351261950, +-0.989241530014128840, -0.989234214203891900, -0.989226895920569450, -0.989219575164179800, -0.989212251934741160, -0.989204926232271850, -0.989197598056790310, -0.989190267408314730, +-0.989182934286863320, -0.989175598692454750, -0.989168260625107210, -0.989160920084839020, -0.989153577071668510, -0.989146231585613990, -0.989138883626693890, -0.989131533194926640, +-0.989124180290330450, -0.989116824912923960, -0.989109467062725400, -0.989102106739753070, -0.989094743944025520, -0.989087378675561180, -0.989080010934378360, -0.989072640720495390, +-0.989065268033930910, -0.989057892874703250, -0.989050515242830940, -0.989043135138332200, -0.989035752561225780, -0.989028367511529780, -0.989020979989262970, -0.989013589994443780, +-0.989006197527090510, -0.988998802587221840, -0.988991405174856060, -0.988984005290011850, -0.988976602932707620, -0.988969198102961910, -0.988961790800793160, -0.988954381026219800, +-0.988946968779260690, -0.988939554059934060, -0.988932136868258540, -0.988924717204252790, -0.988917295067935020, -0.988909870459324210, -0.988902443378438690, -0.988895013825297100, +-0.988887581799917870, -0.988880147302319770, -0.988872710332521330, -0.988865270890540990, -0.988857828976397620, -0.988850384590109540, -0.988842937731695510, -0.988835488401174190, +-0.988828036598564110, -0.988820582323884030, -0.988813125577152400, -0.988805666358388070, -0.988798204667609370, -0.988790740504835290, -0.988783273870084360, -0.988775804763375230, +-0.988768333184726680, -0.988760859134157230, -0.988753382611685660, -0.988745903617330610, -0.988738422151110740, -0.988730938213044810, -0.988723451803151580, -0.988715962921449700, +-0.988708471567957940, -0.988700977742695050, -0.988693481445679700, -0.988685982676930420, -0.988678481436466420, -0.988670977724306230, -0.988663471540468520, -0.988655962884972150, +-0.988648451757835890, -0.988640938159078500, -0.988633422088718850, -0.988625903546775490, -0.988618382533267390, -0.988610859048213330, -0.988603333091632170, -0.988595804663542690, +-0.988588273763963740, -0.988580740392914100, -0.988573204550412420, -0.988565666236477900, -0.988558125451129200, -0.988550582194385190, -0.988543036466264620, -0.988535488266786610, +-0.988527937595969800, -0.988520384453833170, -0.988512828840395600, -0.988505270755675960, -0.988497710199693010, -0.988490147172465860, -0.988482581674013370, -0.988475013704354530, +-0.988467443263507990, -0.988459870351492850, -0.988452294968328090, -0.988444717114032590, -0.988437136788625330, -0.988429553992125180, -0.988421968724551240, -0.988414380985922270, +-0.988406790776257370, -0.988399198095575530, -0.988391602943895720, -0.988384005321236710, -0.988376405227617830, -0.988368802663058040, -0.988361197627576130, -0.988353590121191280, +-0.988345980143922390, -0.988338367695788420, -0.988330752776808710, -0.988323135387002120, -0.988315515526387630, -0.988307893194984470, -0.988300268392811490, -0.988292641119887900, +-0.988285011376232590, -0.988277379161864870, -0.988269744476803490, -0.988262107321068010, -0.988254467694677170, -0.988246825597650090, -0.988239181030006080, -0.988231533991764000, +-0.988223884482943070, -0.988216232503562500, -0.988208578053641370, -0.988200921133198680, -0.988193261742253860, -0.988185599880825770, -0.988177935548933740, -0.988170268746596860, +-0.988162599473834340, -0.988154927730665160, -0.988147253517108750, -0.988139576833184210, -0.988131897678910740, -0.988124216054307560, -0.988116531959393860, -0.988108845394188640, +-0.988101156358711540, -0.988093464852981440, -0.988085770877017660, -0.988078074430839500, -0.988070375514466190, -0.988062674127916930, -0.988054970271211030, -0.988047263944367590, +-0.988039555147406050, -0.988031843880345480, -0.988024130143205450, -0.988016413936005030, -0.988008695258763670, -0.988000974111500560, -0.987993250494234810, -0.987985524406986170, +-0.987977795849773630, -0.987970064822616620, -0.987962331325534460, -0.987954595358546460, -0.987946856921671950, -0.987939116014930340, -0.987931372638340970, -0.987923626791923140, +-0.987915878475696060, -0.987908127689679500, -0.987900374433892560, -0.987892618708354650, -0.987884860513085330, -0.987877099848103790, -0.987869336713429360, -0.987861571109081680, +-0.987853803035080080, -0.987846032491443980, -0.987838259478192810, -0.987830483995346010, -0.987822706042922990, -0.987814925620943310, -0.987807142729426160, -0.987799357368391080, +-0.987791569537857740, -0.987783779237845440, -0.987775986468373720, -0.987768191229462130, -0.987760393521129880, -0.987752593343396600, -0.987744790696282070, -0.987736985579805380, +-0.987729177993986410, -0.987721367938844350, -0.987713555414398980, -0.987705740420669610, -0.987697922957676000, -0.987690103025437470, -0.987682280623973670, -0.987674455753304150, +-0.987666628413448660, -0.987658798604426510, -0.987650966326257370, -0.987643131578960780, -0.987635294362556260, -0.987627454677063700, -0.987619612522502410, -0.987611767898892160, +-0.987603920806252480, -0.987596071244602910, -0.987588219213963230, -0.987580364714353070, -0.987572507745791860, -0.987564648308299490, -0.987556786401895370, -0.987548922026599390, +-0.987541055182431070, -0.987533185869410080, -0.987525314087556170, -0.987517439836888890, -0.987509563117428100, -0.987501683929193350, -0.987493802272204510, -0.987485918146481120, +-0.987478031552042950, -0.987470142488909630, -0.987462250957100940, -0.987454356956636750, -0.987446460487536590, -0.987438561549820130, -0.987430660143507440, -0.987422756268618080, +-0.987414849925171810, -0.987406941113188500, -0.987399029832687790, -0.987391116083689350, -0.987383199866213260, -0.987375281180279170, -0.987367360025906860, -0.987359436403116190, +-0.987351510311926920, -0.987343581752358810, -0.987335650724431860, -0.987327717228165700, -0.987319781263580110, -0.987311842830695290, -0.987303901929530770, -0.987295958560106550, +-0.987288012722442380, -0.987280064416558250, -0.987272113642473690, -0.987264160400209150, -0.987256204689784140, -0.987248246511218560, -0.987240285864532500, -0.987232322749745590, +-0.987224357166877950, -0.987216389115949440, -0.987208418596979830, -0.987200445609989210, -0.987192470154997450, -0.987184492232024650, -0.987176511841090560, -0.987168528982215190, +-0.987160543655418500, -0.987152555860720260, -0.987144565598140900, -0.987136572867700070, -0.987128577669417750, -0.987120580003314040, -0.987112579869408810, -0.987104577267722160, +-0.987096572198274180, -0.987088564661084630, -0.987080554656173730, -0.987072542183561330, -0.987064527243267650, -0.987056509835312680, -0.987048489959716500, -0.987040467616499000, +-0.987032442805680250, -0.987024415527280490, -0.987016385781319670, -0.987008353567817910, -0.987000318886795290, -0.986992281738271910, -0.986984242122267760, -0.986976200038803040, +-0.986968155487897850, -0.986960108469572160, -0.986952058983846190, -0.986944007030740140, -0.986935952610274110, -0.986927895722468200, -0.986919836367342480, -0.986911774544917190, +-0.986903710255212400, -0.986895643498248430, -0.986887574274045280, -0.986879502582623250, -0.986871428424002550, -0.986863351798203170, -0.986855272705245420, -0.986847191145149520, +-0.986839107117935650, -0.986831020623623820, -0.986822931662234670, -0.986814840233788180, -0.986806746338304560, -0.986798649975804020, -0.986790551146306870, -0.986782449849833320, +-0.986774346086403690, -0.986766239856038170, -0.986758131158757100, -0.986750019994580670, -0.986741906363529210, -0.986733790265623020, -0.986725671700882320, -0.986717550669327430, +-0.986709427170978540, -0.986701301205856200, -0.986693172773980610, -0.986685041875372090, -0.986676908510050970, -0.986668772678037650, -0.986660634379352140, -0.986652493614015300, +-0.986644350382047120, -0.986636204683468130, -0.986628056518298550, -0.986619905886558900, -0.986611752788269510, -0.986603597223450700, -0.986595439192122890, -0.986587278694306510, +-0.986579115730021770, -0.986570950299289430, -0.986562782402129690, -0.986554612038562870, -0.986546439208609740, -0.986538263912290160, -0.986530086149625230, -0.986521905920635040, +-0.986513723225340030, -0.986505538063760730, -0.986497350435917570, -0.986489160341831100, -0.986480967781521720, -0.986472772755009890, -0.986464575262316120, -0.986456375303460750, +-0.986448172878464650, -0.986439967987348120, -0.986431760630131600, -0.986423550806835750, -0.986415338517480980, -0.986407123762087720, -0.986398906540676860, -0.986390686853268580, +-0.986382464699883780, -0.986374240080542640, -0.986366012995266050, -0.986357783444074320, -0.986349551426988210, -0.986341316944028160, -0.986333079995214690, -0.986324840580568680, +-0.986316598700110570, -0.986308354353860990, -0.986300107541840500, -0.986291858264069620, -0.986283606520569120, -0.986275352311359650, -0.986267095636461870, -0.986258836495896300, +-0.986250574889683710, -0.986242310817844640, -0.986234044280399740, -0.986225775277369760, -0.986217503808775380, -0.986209229874637110, -0.986200953474975830, -0.986192674609812300, +-0.986184393279166960, -0.986176109483060670, -0.986167823221514080, -0.986159534494547850, -0.986151243302182960, -0.986142949644439830, -0.986134653521339440, -0.986126354932902350, +-0.986118053879149410, -0.986109750360101290, -0.986101444375778850, -0.986093135926202740, -0.986084825011393830, -0.986076511631372780, -0.986068195786160450, -0.986059877475777720, +-0.986051556700245360, -0.986043233459584000, -0.986034907753814420, -0.986026579582957810, -0.986018248947034600, -0.986009915846065900, -0.986001580280072340, -0.985993242249074920, +-0.985984901753094280, -0.985976558792151400, -0.985968213366267170, -0.985959865475462440, -0.985951515119757870, -0.985943162299174560, -0.985934807013733480, -0.985926449263455300, +-0.985918089048361090, -0.985909726368471520, -0.985901361223807670, -0.985892993614390420, -0.985884623540240760, -0.985876251001379430, -0.985867875997827550, -0.985859498529605970, +-0.985851118596735690, -0.985842736199237570, -0.985834351337132600, -0.985825964010441650, -0.985817574219185920, -0.985809181963386290, -0.985800787243063640, -0.985792390058239040, +-0.985783990408933500, -0.985775588295167760, -0.985767183716963260, -0.985758776674340750, -0.985750367167321340, -0.985741955195926000, -0.985733540760175830, -0.985725123860091700, +-0.985716704495694820, -0.985708282667006270, -0.985699858374046720, -0.985691431616837700, -0.985683002395400190, -0.985674570709755060, -0.985666136559923630, -0.985657699945926780, +-0.985649260867785480, -0.985640819325521280, -0.985632375319154930, -0.985623928848707750, -0.985615479914200730, -0.985607028515654960, -0.985598574653091640, -0.985590118326531870, +-0.985581659535996750, -0.985573198281507580, -0.985564734563085240, -0.985556268380751170, -0.985547799734526550, -0.985539328624432280, -0.985530855050489760, -0.985522379012720000, +-0.985513900511144400, -0.985505419545783970, -0.985496936116660120, -0.985488450223793830, -0.985479961867206540, -0.985471471046919230, -0.985462977762953220, -0.985454482015329810, +-0.985445983804070220, -0.985437483129195550, -0.985428979990727320, -0.985420474388686520, -0.985411966323094690, -0.985403455793972820, -0.985394942801342430, -0.985386427345224410, +-0.985377909425640520, -0.985369389042611950, -0.985360866196159810, -0.985352340886305520, -0.985343813113070290, -0.985335282876475650, -0.985326750176542810, -0.985318215013293090, +-0.985309677386747570, -0.985301137296928140, -0.985292594743855780, -0.985284049727552010, -0.985275502248038060, -0.985266952305335340, -0.985258399899465060, -0.985249845030448990, +-0.985241287698308320, -0.985232727903064490, -0.985224165644738690, -0.985215600923352590, -0.985207033738927480, -0.985198464091484700, -0.985189891981045780, -0.985181317407632040, +-0.985172740371265120, -0.985164160871966450, -0.985155578909757250, -0.985146994484659140, -0.985138407596693580, -0.985129818245881750, -0.985121226432245640, -0.985112632155806470, +-0.985104035416585640, -0.985095436214604710, -0.985086834549885220, -0.985078230422448690, -0.985069623832316550, -0.985061014779510360, -0.985052403264051630, -0.985043789285961700, +-0.985035172845262540, -0.985026553941975360, -0.985017932576121910, -0.985009308747723520, -0.985000682456801720, -0.984992053703378390, -0.984983422487474950, -0.984974788809112930, +-0.984966152668313890, -0.984957514065099460, -0.984948872999491300, -0.984940229471510940, -0.984931583481180040, -0.984922935028520240, -0.984914284113552860, -0.984905630736299890, +-0.984896974896782850, -0.984888316595023520, -0.984879655831043200, -0.984870992604863660, -0.984862326916506880, -0.984853658765994180, -0.984844988153347420, -0.984836315078588150, +-0.984827639541738020, -0.984818961542818890, -0.984810281081852310, -0.984801598158860040, -0.984792912773863720, -0.984784224926885110, -0.984775534617945980, -0.984766841847067980, +-0.984758146614272970, -0.984749448919582490, -0.984740748763018540, -0.984732046144602410, -0.984723341064356440, -0.984714633522302040, -0.984705923518461090, -0.984697211052855350, +-0.984688496125506460, -0.984679778736436530, -0.984671058885666970, -0.984662336573219890, -0.984653611799116700, -0.984644884563379730, -0.984636154866030510, -0.984627422707090920, +-0.984618688086582820, -0.984609951004527860, -0.984601211460948030, -0.984592469455865200, -0.984583724989301250, -0.984574978061278030, -0.984566228671817310, -0.984557476820941080, +-0.984548722508671090, -0.984539965735029330, -0.984531206500037560, -0.984522444803717760, -0.984513680646091900, -0.984504914027181880, -0.984496144947009650, -0.984487373405597000, +-0.984478599402965890, -0.984469822939138100, -0.984461044014135920, -0.984452262627981130, -0.984443478780695820, -0.984434692472301640, -0.984425903702820790, -0.984417112472275260, +-0.984408318780686800, -0.984399522628077620, -0.984390724014469700, -0.984381922939884690, -0.984373119404345130, -0.984364313407872670, -0.984355504950489510, -0.984346694032217530, +-0.984337880653078700, -0.984329064813095340, -0.984320246512289330, -0.984311425750682640, -0.984302602528297490, -0.984293776845155730, -0.984284948701279580, -0.984276118096691020, +-0.984267285031412140, -0.984258449505465150, -0.984249611518871800, -0.984240771071654640, -0.984231928163835420, -0.984223082795436580, -0.984214234966479860, -0.984205384676987590, +-0.984196531926981750, -0.984187676716484770, -0.984178819045518520, -0.984169958914105300, -0.984161096322267110, -0.984152231270026160, -0.984143363757404740, -0.984134493784424860, +-0.984125621351108700, -0.984116746457478380, -0.984107869103556300, -0.984098989289364570, -0.984090107014925390, -0.984081222280260960, -0.984072335085393490, -0.984063445430344960, +-0.984054553315137910, -0.984045658739794660, -0.984036761704337180, -0.984027862208787680, -0.984018960253168710, -0.984010055837502230, -0.984001148961810680, -0.983992239626116150, +-0.983983327830440960, -0.983974413574807640, -0.983965496859238180, -0.983956577683755000, -0.983947656048380410, -0.983938731953136750, -0.983929805398045980, -0.983920876383130860, +-0.983911944908413600, -0.983903010973916530, -0.983894074579661830, -0.983885135725672040, -0.983876194411969270, -0.983867250638576160, -0.983858304405514810, -0.983849355712807850, +-0.983840404560477170, -0.983831450948545740, -0.983822494877035660, -0.983813536345969350, -0.983804575355369140, -0.983795611905257440, -0.983786645995656790, -0.983777677626589520, +-0.983768706798078150, -0.983759733510144900, -0.983750757762812400, -0.983741779556102980, -0.983732798890039060, -0.983723815764643180, -0.983714830179937770, -0.983705842135945140, +-0.983696851632688050, -0.983687858670188820, -0.983678863248469980, -0.983669865367553960, -0.983660865027463300, -0.983651862228220320, -0.983642856969847770, -0.983633849252368190, +-0.983624839075803890, -0.983615826440177530, -0.983606811345511530, -0.983597793791828660, -0.983588773779151220, -0.983579751307501750, -0.983570726376902900, -0.983561698987377330, +-0.983552669138947460, -0.983543636831636040, -0.983534602065465390, -0.983525564840458390, -0.983516525156637230, -0.983507483014024910, -0.983498438412643840, -0.983489391352516780, +-0.983480341833666170, -0.983471289856114760, -0.983462235419885090, -0.983453178524999800, -0.983444119171481560, -0.983435057359352880, -0.983425993088636760, -0.983416926359355630, +-0.983407857171532230, -0.983398785525189110, -0.983389711420349140, -0.983380634857034640, -0.983371555835268700, -0.983362474355073960, -0.983353390416472960, -0.983344304019488470, +-0.983335215164143240, -0.983326123850460030, -0.983317030078461380, -0.983307933848170280, -0.983298835159609360, -0.983289734012801060, -0.983280630407768700, -0.983271524344534690, +-0.983262415823121900, -0.983253304843553110, -0.983244191405850840, -0.983235075510038300, -0.983225957156138030, -0.983216836344172900, -0.983207713074165660, -0.983198587346139190, +-0.983189459160116240, -0.983180328516119580, -0.983171195414172080, -0.983162059854296720, -0.983152921836515930, -0.983143781360853010, -0.983134638427330730, -0.983125493035971740, +-0.983116345186799130, -0.983107194879835560, -0.983098042115103880, -0.983088886892627300, -0.983079729212428370, -0.983070569074530280, -0.983061406478955680, -0.983052241425727560, +-0.983043073914868890, -0.983033903946402440, -0.983024731520351300, -0.983015556636738230, -0.983006379295586320, -0.982997199496918440, -0.982988017240757680, -0.982978832527126810, +-0.982969645356048920, -0.982960455727546640, -0.982951263641643540, -0.982942069098362130, -0.982932872097725620, -0.982923672639756880, -0.982914470724479020, -0.982905266351915000, +-0.982896059522087810, -0.982886850235020430, -0.982877638490735730, -0.982868424289257140, -0.982859207630607520, -0.982849988514809760, -0.982840766941887160, -0.982831542911862590, +-0.982822316424759030, -0.982813087480599810, -0.982803856079407900, -0.982794622221206390, -0.982785385906018270, -0.982776147133866630, -0.982766905904774670, -0.982757662218765480, +-0.982748416075862160, -0.982739167476087690, -0.982729916419465170, -0.982720662906018120, -0.982711406935769300, -0.982702148508742050, -0.982692887624959320, -0.982683624284444330, +-0.982674358487220400, -0.982665090233310500, -0.982655819522737950, -0.982646546355525840, -0.982637270731697380, -0.982627992651275760, -0.982618712114284090, -0.982609429120745670, +-0.982600143670683710, -0.982590855764121200, -0.982581565401081770, -0.982572272581588300, -0.982562977305664220, -0.982553679573332730, -0.982544379384617030, -0.982535076739540210, +-0.982525771638125820, -0.982516464080397060, -0.982507154066377120, -0.982497841596089330, -0.982488526669556880, -0.982479209286803100, -0.982469889447851300, -0.982460567152724780, +-0.982451242401446770, -0.982441915194040780, -0.982432585530529920, -0.982423253410937610, -0.982413918835287280, -0.982404581803602020, -0.982395242315905250, -0.982385900372220510, +-0.982376555972571010, -0.982367209116980060, -0.982357859805471190, -0.982348508038067610, -0.982339153814792750, -0.982329797135670040, -0.982320438000722880, -0.982311076409974390, +-0.982301712363448320, -0.982292345861168090, -0.982282976903156910, -0.982273605489438320, -0.982264231620035730, -0.982254855294972360, -0.982245476514272080, -0.982236095277958080, +-0.982226711586053790, -0.982217325438582870, -0.982207936835568510, -0.982198545777034360, -0.982189152263003740, -0.982179756293500410, -0.982170357868547560, -0.982160956988168630, +-0.982151553652387600, -0.982142147861227550, -0.982132739614712260, -0.982123328912865020, -0.982113915755709390, -0.982104500143269000, -0.982095082075567500, -0.982085661552628220, +-0.982076238574474790, -0.982066813141130760, -0.982057385252619760, -0.982047954908965240, -0.982038522110190830, -0.982029086856320180, -0.982019649147376610, -0.982010208983383980, +-0.982000766364365950, -0.981991321290345940, -0.981981873761347710, -0.981972423777394800, -0.981962971338510520, -0.981953516444719070, -0.981944059096043880, -0.981934599292508480, +-0.981925137034136640, -0.981915672320951890, -0.981906205152978000, -0.981896735530238600, -0.981887263452757340, -0.981877788920557770, -0.981868311933663860, -0.981858832492099150, +-0.981849350595887400, -0.981839866245052260, -0.981830379439617480, -0.981820890179606610, -0.981811398465043620, -0.981801904295952150, -0.981792407672355980, -0.981782908594278750, +-0.981773407061744210, -0.981763903074776230, -0.981754396633398470, -0.981744887737634690, -0.981735376387508520, -0.981725862583044060, -0.981716346324264970, -0.981706827611194990, +-0.981697306443858000, -0.981687782822277750, -0.981678256746477800, -0.981668728216482430, -0.981659197232315210, -0.981649663793999980, -0.981640127901560630, -0.981630589555021030, +-0.981621048754404810, -0.981611505499736080, -0.981601959791038480, -0.981592411628336100, -0.981582861011652490, -0.981573307941011830, -0.981563752416438010, -0.981554194437954660, +-0.981544634005586000, -0.981535071119355450, -0.981525505779287430, -0.981515937985405710, -0.981506367737734030, -0.981496795036296500, -0.981487219881116980, -0.981477642272219450, +-0.981468062209627790, -0.981458479693365860, -0.981448894723457870, -0.981439307299927450, -0.981429717422798940, -0.981420125092096090, -0.981410530307842980, -0.981400933070063490, +-0.981391333378781710, -0.981381731234021390, -0.981372126635806860, -0.981362519584162100, -0.981352910079111070, -0.981343298120677670, -0.981333683708886070, -0.981324066843760280, +-0.981314447525324370, -0.981304825753602230, -0.981295201528617930, -0.981285574850395800, -0.981275945718959710, -0.981266314134333740, -0.981256680096541990, -0.981247043605608550, +-0.981237404661557290, -0.981227763264412740, -0.981218119414198790, -0.981208473110939510, -0.981198824354659100, -0.981189173145381570, -0.981179519483131200, -0.981169863367931880, +-0.981160204799808030, -0.981150543778783410, -0.981140880304882670, -0.981131214378129670, -0.981121545998548730, -0.981111875166163830, -0.981102201880999280, -0.981092526143079070, +-0.981082847952427730, -0.981073167309069240, -0.981063484213027800, -0.981053798664327630, -0.981044110662993020, -0.981034420209048190, -0.981024727302517220, -0.981015031943424430, +-0.981005334131794140, -0.980995633867650320, -0.980985931151017510, -0.980976225981919910, -0.980966518360381730, -0.980956808286427280, -0.980947095760080660, -0.980937380781366500, +-0.980927663350308790, -0.980917943466932060, -0.980908221131260310, -0.980898496343318160, -0.980888769103129610, -0.980879039410719300, -0.980869307266111320, -0.980859572669329990, +-0.980849835620399620, -0.980840096119344860, -0.980830354166189910, -0.980820609760958970, -0.980810862903676580, -0.980801113594367060, -0.980791361833054490, -0.980781607619763740, +-0.980771850954518910, -0.980762091837344530, -0.980752330268264920, -0.980742566247304380, -0.980732799774487570, -0.980723030849838700, -0.980713259473382170, -0.980703485645142430, +-0.980693709365144110, -0.980683930633411530, -0.980674149449969110, -0.980664365814841290, -0.980654579728052590, -0.980644791189627330, -0.980635000199590160, -0.980625206757965500, +-0.980615410864777880, -0.980605612520051740, -0.980595811723811490, -0.980586008476081790, -0.980576202776887060, -0.980566394626251720, -0.980556584024200320, -0.980546770970757600, +-0.980536955465947990, -0.980527137509796030, -0.980517317102326150, -0.980507494243562980, -0.980497668933530850, -0.980487841172254850, -0.980478010959759170, -0.980468178296068470, +-0.980458343181207390, -0.980448505615200360, -0.980438665598072130, -0.980428823129847140, -0.980418978210550240, -0.980409130840205760, -0.980399281018838330, -0.980389428746472950, +-0.980379574023133920, -0.980369716848845880, -0.980359857223633610, -0.980349995147521640, -0.980340130620534710, -0.980330263642697490, -0.980320394214034610, -0.980310522334570830, +-0.980300648004330590, -0.980290771223338850, -0.980280891991620160, -0.980271010309199280, -0.980261126176100730, -0.980251239592349390, -0.980241350557970010, -0.980231459072987250, +-0.980221565137425870, -0.980211668751310490, -0.980201769914666010, -0.980191868627516950, -0.980181964889888400, -0.980172058701804900, -0.980162150063291330, -0.980152238974372310, +-0.980142325435072740, -0.980132409445417240, -0.980122491005430810, -0.980112570115138190, -0.980102646774563930, -0.980092720983733230, -0.980082792742670740, -0.980072862051401210, +-0.980062928909949620, -0.980052993318340620, -0.980043055276598960, -0.980033114784749860, -0.980023171842818060, -0.980013226450828220, -0.980003278608805320, -0.979993328316774330, +-0.979983375574759900, -0.979973420382787120, -0.979963462740880750, -0.979953502649065560, -0.979943540107366730, -0.979933575115809140, -0.979923607674417550, -0.979913637783216940, +-0.979903665442232290, -0.979893690651488240, -0.979883713411010100, -0.979873733720822760, -0.979863751580951070, -0.979853766991420020, -0.979843779952254580, -0.979833790463479630, +-0.979823798525120250, -0.979813804137201320, -0.979803807299747920, -0.979793808012784820, -0.979783806276337320, -0.979773802090430300, -0.979763795455088850, -0.979753786370337940, +-0.979743774836202340, -0.979733760852707470, -0.979723744419878200, -0.979713725537739500, -0.979703704206316580, -0.979693680425634430, -0.979683654195718010, -0.979673625516592540, +-0.979663594388282880, -0.979653560810814340, -0.979643524784211680, -0.979633486308500330, -0.979623445383705380, -0.979613402009851700, -0.979603356186964590, -0.979593307915068930, +-0.979583257194190150, -0.979573204024353220, -0.979563148405583230, -0.979553090337905390, -0.979543029821344890, -0.979532966855926720, -0.979522901441676200, -0.979512833578618510, +-0.979502763266778650, -0.979492690506181710, -0.979482615296853210, -0.979472537638818140, -0.979462457532101700, -0.979452374976729210, -0.979442289972725750, -0.979432202520116420, +-0.979422112618926750, -0.979412020269181730, -0.979401925470906760, -0.979391828224126960, -0.979381728528867510, -0.979371626385153740, -0.979361521793010950, -0.979351414752464340, +-0.979341305263539130, -0.979331193326260730, -0.979321078940654340, -0.979310962106745290, -0.979300842824558760, -0.979290721094120190, -0.979280596915454660, -0.979270470288587710, +-0.979260341213544660, -0.979250209690350810, -0.979240075719031380, -0.979229939299611770, -0.979219800432117320, -0.979209659116573320, -0.979199515353005200, -0.979189369141438280, +-0.979179220481897760, -0.979169069374409400, -0.979158915818998390, -0.979148759815690050, -0.979138601364509810, -0.979128440465482860, -0.979118277118635080, -0.979108111323991560, +-0.979097943081577720, -0.979087772391419090, -0.979077599253540990, -0.979067423667968840, -0.979057245634728180, -0.979047065153844430, -0.979036882225343020, -0.979026696849249260, +-0.979016509025588900, -0.979006318754387150, -0.978996126035669770, -0.978985930869461950, -0.978975733255789240, -0.978965533194677270, -0.978955330686151590, -0.978945125730237510, +-0.978934918326960560, -0.978924708476346380, -0.978914496178420410, -0.978904281433208290, -0.978894064240735330, -0.978883844601027290, -0.978873622514109480, -0.978863397980007770, +-0.978853170998747470, -0.978842941570354340, -0.978832709694853920, -0.978822475372271630, -0.978812238602633000, -0.978801999385963910, -0.978791757722289880, -0.978781513611636340, +-0.978771267054029170, -0.978761018049493780, -0.978750766598055820, -0.978740512699740940, -0.978730256354574780, -0.978719997562582880, -0.978709736323791100, -0.978699472638224990, +-0.978689206505910180, -0.978678937926872330, -0.978668666901137190, -0.978658393428730180, -0.978648117509677400, -0.978637839144004260, -0.978627558331736540, -0.978617275072899970, +-0.978606989367520220, -0.978596701215622920, -0.978586410617233950, -0.978576117572378950, -0.978565822081083450, -0.978555524143373550, -0.978545223759274880, -0.978534920928813110, +-0.978524615652014100, -0.978514307928903480, -0.978503997759506920, -0.978493685143850600, -0.978483370081959960, -0.978473052573861080, -0.978462732619579390, -0.978452410219140980, +-0.978442085372571490, -0.978431758079896800, -0.978421428341142760, -0.978411096156335040, -0.978400761525499480, -0.978390424448662200, -0.978380084925848830, -0.978369742957085230, +-0.978359398542397280, -0.978349051681810740, -0.978338702375351700, -0.978328350623045910, -0.978317996424919230, -0.978307639780997550, -0.978297280691306730, -0.978286919155872740, +-0.978276555174721450, -0.978266188747878850, -0.978255819875370690, -0.978245448557222840, -0.978235074793461610, -0.978224698584112540, -0.978214319929201830, -0.978203938828755340, +-0.978193555282798940, -0.978183169291358510, -0.978172780854460240, -0.978162389972130120, -0.978151996644394010, -0.978141600871277990, -0.978131202652807840, -0.978120801989009750, +-0.978110398879909580, -0.978099993325533430, -0.978089585325907170, -0.978079174881057110, -0.978068761991009120, -0.978058346655789280, -0.978047928875423470, -0.978037508649937880, +-0.978027085979358390, -0.978016660863711310, -0.978006233303022610, -0.977995803297318280, -0.977985370846624400, -0.977974935950967180, -0.977964498610372600, -0.977954058824866750, +-0.977943616594475820, -0.977933171919225570, -0.977922724799142660, -0.977912275234252950, -0.977901823224582410, -0.977891368770157480, -0.977880911871004010, -0.977870452527148100, +-0.977859990738616290, -0.977849526505434550, -0.977839059827628860, -0.977828590705225650, -0.977818119138250900, -0.977807645126730800, -0.977797168670691660, -0.977786689770159590, +-0.977776208425160780, -0.977765724635721310, -0.977755238401867620, -0.977744749723625910, -0.977734258601022250, -0.977723765034083090, -0.977713269022834170, -0.977702770567302370, +-0.977692269667513550, -0.977681766323494130, -0.977671260535270310, -0.977660752302868310, -0.977650241626314420, -0.977639728505634960, -0.977629212940856140, -0.977618694932004260, +-0.977608174479105530, -0.977597651582186480, -0.977587126241273420, -0.977576598456392440, -0.977566068227569970, -0.977555535554832320, -0.977545000438205690, -0.977534462877716730, +-0.977523922873391630, -0.977513380425256710, -0.977502835533338390, -0.977492288197662870, -0.977481738418256700, -0.977471186195146170, -0.977460631528357720, -0.977450074417917420, +-0.977439514863852170, -0.977428952866188140, -0.977418388424951770, -0.977407821540169360, -0.977397252211867350, -0.977386680440072150, -0.977376106224810300, -0.977365529566108340, +-0.977354950463992460, -0.977344368918489190, -0.977333784929625080, -0.977323198497426440, -0.977312609621919790, -0.977302018303131680, -0.977291424541088300, -0.977280828335816530, +-0.977270229687342670, -0.977259628595693260, -0.977249025060894840, -0.977238419082973820, -0.977227810661956520, -0.977217199797869920, -0.977206586490740330, -0.977195970740594280, +-0.977185352547458310, -0.977174731911358950, -0.977164108832322740, -0.977153483310376210, -0.977142855345546010, -0.977132224937858670, -0.977121592087340620, -0.977110956794018830, +-0.977100319057919500, -0.977089678879069500, -0.977079036257495260, -0.977068391193223200, -0.977057743686280400, -0.977047093736693180, -0.977036441344488300, -0.977025786509692300, +-0.977015129232331800, -0.977004469512433580, -0.976993807350024060, -0.976983142745130100, -0.976972475697778230, -0.976961806207995000, -0.976951134275807490, -0.976940459901242120, +-0.976929783084325540, -0.976919103825084620, -0.976908422123545780, -0.976897737979735780, -0.976887051393681700, -0.976876362365409870, -0.976865670894947250, -0.976854976982320380, +-0.976844280627556020, -0.976833581830681030, -0.976822880591722060, -0.976812176910705990, -0.976801470787659110, -0.976790762222608850, -0.976780051215581760, -0.976769337766604350, +-0.976758621875703730, -0.976747903542906530, -0.976737182768239400, -0.976726459551729430, -0.976715733893403380, -0.976705005793288010, -0.976694275251410060, -0.976683542267796520, +-0.976672806842474040, -0.976662068975469590, -0.976651328666809930, -0.976640585916521700, -0.976629840724632330, -0.976619093091168230, -0.976608343016156510, -0.976597590499623910, +-0.976586835541597310, -0.976576078142103340, -0.976565318301169550, -0.976554556018822350, -0.976543791295088730, -0.976533024129995760, -0.976522254523570110, -0.976511482475838850, +-0.976500707986828980, -0.976489931056567230, -0.976479151685080700, -0.976468369872396050, -0.976457585618540680, -0.976446798923541360, -0.976436009787425060, -0.976425218210218770, +-0.976414424191949240, -0.976403627732643780, -0.976392828832329250, -0.976382027491032640, -0.976371223708781040, -0.976360417485601320, -0.976349608821520550, -0.976338797716565840, +-0.976327984170764050, -0.976317168184142380, -0.976306349756727480, -0.976295528888546980, -0.976284705579627650, -0.976273879829996580, -0.976263051639680750, -0.976252221008707340, +-0.976241387937103130, -0.976230552424895650, -0.976219714472111870, -0.976208874078778770, -0.976198031244923440, -0.976187185970573080, -0.976176338255754780, -0.976165488100495530, +-0.976154635504822620, -0.976143780468762930, -0.976132922992344000, -0.976122063075592790, -0.976111200718536300, -0.976100335921201930, -0.976089468683616680, -0.976078599005807510, +-0.976067726887802190, -0.976056852329627360, -0.976045975331310540, -0.976035095892878730, -0.976024214014359240, -0.976013329695779140, -0.976002442937165760, -0.975991553738546180, +-0.975980662099947600, -0.975969768021397570, -0.975958871502923150, -0.975947972544551460, -0.975937071146309900, -0.975926167308225680, -0.975915261030325780, -0.975904352312637950, +-0.975893441155189280, -0.975882527558006970, -0.975871611521118340, -0.975860693044550700, -0.975849772128331240, -0.975838848772487500, -0.975827922977046570, -0.975816994742035760, +-0.975806064067482380, -0.975795130953413970, -0.975784195399857720, -0.975773257406841070, -0.975762316974391200, -0.975751374102535430, -0.975740428791301300, -0.975729481040716220, +-0.975718530850807290, -0.975707578221602150, -0.975696623153128000, -0.975685665645412370, -0.975674705698482580, -0.975663743312365940, -0.975652778487089980, -0.975641811222681900, +-0.975630841519169460, -0.975619869376579850, -0.975608894794940730, -0.975597917774279290, -0.975586938314622950, -0.975575956415999260, -0.975564972078435730, -0.975553985301959800, +-0.975542996086599000, -0.975532004432380640, -0.975521010339332250, -0.975510013807481370, -0.975499014836855420, -0.975488013427481930, -0.975477009579388320, -0.975466003292602250, +-0.975454994567151230, -0.975443983403062710, -0.975432969800364200, -0.975421953759083360, -0.975410935279247380, -0.975399914360884250, -0.975388891004021370, -0.975377865208686190, +-0.975366836974906450, -0.975355806302709570, -0.975344773192123090, -0.975333737643174770, -0.975322699655892130, -0.975311659230302500, -0.975300616366433950, -0.975289571064313800, +-0.975278523323969800, -0.975267473145429390, -0.975256420528720410, -0.975245365473870090, -0.975234307980906600, -0.975223248049857380, -0.975212185680749970, -0.975201120873612100, +-0.975190053628471440, -0.975178983945355740, -0.975167911824292410, -0.975156837265309440, -0.975145760268434360, -0.975134680833694590, -0.975123598961118440, -0.975112514650733230, +-0.975101427902566710, -0.975090338716646630, -0.975079247093000530, -0.975068153031656500, -0.975057056532642070, -0.975045957595985000, -0.975034856221713040, -0.975023752409853950, +-0.975012646160435480, -0.975001537473485390, -0.974990426349031550, -0.974979312787101480, -0.974968196787723060, -0.974957078350924270, -0.974945957476732850, -0.974934834165176460, +-0.974923708416283060, -0.974912580230080320, -0.974901449606595970, -0.974890316545858230, -0.974879181047894620, -0.974868043112733120, -0.974856902740401490, -0.974845759930927590, +-0.974834614684339300, -0.974823467000664470, -0.974812316879930970, -0.974801164322166460, -0.974790009327399340, -0.974778851895657050, -0.974767692026967780, -0.974756529721359180, +-0.974745364978859330, -0.974734197799495770, -0.974723028183296920, -0.974711856130290540, -0.974700681640504610, -0.974689504713966870, -0.974678325350705420, -0.974667143550748130, +-0.974655959314122970, -0.974644772640857910, -0.974633583530980730, -0.974622391984519830, -0.974611198001502870, -0.974600001581957920, -0.974588802725913080, -0.974577601433396110, +-0.974566397704434980, -0.974555191539058120, -0.974543982937293160, -0.974532771899168320, -0.974521558424711550, -0.974510342513950860, -0.974499124166914310, -0.974487903383630010, +-0.974476680164125920, -0.974465454508430140, -0.974454226416570420, -0.974442995888575410, -0.974431762924472980, -0.974420527524291090, -0.974409289688057840, -0.974398049415801220, +-0.974386806707549620, -0.974375561563331050, -0.974364313983173580, -0.974353063967105300, -0.974341811515154420, -0.974330556627348910, -0.974319299303717080, -0.974308039544287020, +-0.974296777349086820, -0.974285512718144450, -0.974274245651488570, -0.974262976149147030, -0.974251704211148040, -0.974240429837519790, -0.974229153028290500, -0.974217873783488120, +-0.974206592103141310, -0.974195307987277940, -0.974184021435926310, -0.974172732449114620, -0.974161441026871190, -0.974150147169223990, -0.974138850876201560, -0.974127552147831980, +-0.974116250984143340, -0.974104947385164180, -0.974093641350922690, -0.974082332881447190, -0.974071021976765760, -0.974059708636906720, -0.974048392861898370, -0.974037074651769140, +-0.974025754006547230, -0.974014430926260940, -0.974003105410938600, -0.973991777460608390, -0.973980447075298850, -0.973969114255038180, -0.973957778999854700, -0.973946441309776590, +-0.973935101184832620, -0.973923758625050760, -0.973912413630459660, -0.973901066201087410, -0.973889716336962530, -0.973878364038113230, -0.973867009304568150, -0.973855652136355500, +-0.973844292533503800, -0.973832930496041360, -0.973821566023996610, -0.973810199117397860, -0.973798829776273740, -0.973787458000652470, -0.973776083790562570, -0.973764707146032250, +-0.973753328067090360, -0.973741946553765110, -0.973730562606085040, -0.973719176224078550, -0.973707787407773970, -0.973696396157200050, -0.973685002472385210, -0.973673606353357870, +-0.973662207800146450, -0.973650806812779600, -0.973639403391285630, -0.973627997535693180, -0.973616589246030780, -0.973605178522326860, -0.973593765364609840, -0.973582349772908580, +-0.973570931747251400, -0.973559511287666930, -0.973548088394183720, -0.973536663066830180, -0.973525235305634950, -0.973513805110626680, -0.973502372481834020, -0.973490937419285270, +-0.973479499923009310, -0.973468059993034540, -0.973456617629389730, -0.973445172832103300, -0.973433725601203890, -0.973422275936720040, -0.973410823838680610, -0.973399369307114240, +-0.973387912342049360, -0.973376452943514710, -0.973364991111538960, -0.973353526846150510, -0.973342060147378450, -0.973330591015251210, -0.973319119449797540, -0.973307645451046090, +-0.973296169019025490, -0.973284690153764510, -0.973273208855291670, -0.973261725123635960, -0.973250238958825680, -0.973238750360890030, -0.973227259329857430, -0.973215765865756750, +-0.973204269968616640, -0.973192771638465850, -0.973181270875332900, -0.973169767679247010, -0.973158262050236700, -0.973146753988330730, -0.973135243493557960, -0.973123730565946920, +-0.973112215205526710, -0.973100697412325850, -0.973089177186373330, -0.973077654527697790, -0.973066129436327980, -0.973054601912292980, -0.973043071955621560, -0.973031539566342360, +-0.973020004744484360, -0.973008467490076190, -0.972996927803146950, -0.972985385683725500, -0.972973841131840490, -0.972962294147521000, -0.972950744730795680, -0.972939192881693500, +-0.972927638600243340, -0.972916081886474160, -0.972904522740414720, -0.972892961162093780, -0.972881397151540650, -0.972869830708783970, -0.972858261833852710, -0.972846690526775860, +-0.972835116787582050, -0.972823540616300720, -0.972811962012960500, -0.972800380977590250, -0.972788797510219180, -0.972777211610876160, -0.972765623279590040, -0.972754032516389810, +-0.972742439321304550, -0.972730843694363250, -0.972719245635594530, -0.972707645145027940, -0.972696042222692240, -0.972684436868616500, -0.972672829082829590, -0.972661218865360610, +-0.972649606216238420, -0.972637991135492430, -0.972626373623151410, -0.972614753679244440, -0.972603131303800720, -0.972591506496849000, -0.972579879258418600, -0.972568249588538490, +-0.972556617487237760, -0.972544982954545280, -0.972533345990490570, -0.972521706595102510, -0.972510064768410180, -0.972498420510442660, -0.972486773821229060, -0.972475124700798330, +-0.972463473149180020, -0.972451819166403000, -0.972440162752496450, -0.972428503907489470, -0.972416842631411260, -0.972405178924291010, -0.972393512786157710, -0.972381844217040660, +-0.972370173216968840, -0.972358499785971770, -0.972346823924078340, -0.972335145631317950, -0.972323464907719700, -0.972311781753312790, -0.972300096168126180, -0.972288408152189640, +-0.972276717705532030, -0.972265024828182560, -0.972253329520170520, -0.972241631781525230, -0.972229931612275890, -0.972218229012451580, -0.972206523982081850, -0.972194816521195770, +-0.972183106629822320, -0.972171394307991490, -0.972159679555732130, -0.972147962373073440, -0.972136242760044960, -0.972124520716675660, -0.972112796242995290, -0.972101069339032840, +-0.972089340004817840, -0.972077608240379360, -0.972065874045746960, -0.972054137420949820, -0.972042398366017360, -0.972030656880978890, -0.972018912965863740, -0.972007166620701190, +-0.971995417845520900, -0.971983666640352070, -0.971971913005224010, -0.971960156940166240, -0.971948398445208080, -0.971936637520378620, -0.971924874165707830, -0.971913108381224910, +-0.971901340166959170, -0.971889569522940140, -0.971877796449197140, -0.971866020945759580, -0.971854243012657100, -0.971842462649918910, -0.971830679857574430, -0.971818894635653410, +-0.971807106984185150, -0.971795316903199090, -0.971783524392724860, -0.971771729452791670, -0.971759932083429030, -0.971748132284666830, -0.971736330056534260, -0.971724525399060850, +-0.971712718312276010, -0.971700908796209520, -0.971689096850890780, -0.971677282476349210, -0.971665465672614470, -0.971653646439715860, -0.971641824777683240, -0.971630000686546150, +-0.971618174166334110, -0.971606345217076560, -0.971594513838803240, -0.971582680031543360, -0.971570843795326990, -0.971559005130183450, -0.971547164036142500, -0.971535320513233550, +-0.971523474561486360, -0.971511626180930450, -0.971499775371595490, -0.971487922133511090, -0.971476066466706920, -0.971464208371212390, -0.971452347847057470, -0.971440484894271710, +-0.971428619512884730, -0.971416751702926300, -0.971404881464425610, -0.971393008797413080, -0.971381133701917920, -0.971369256177969990, -0.971357376225598920, -0.971345493844834370, +-0.971333609035706090, -0.971321721798243830, -0.971309832132477240, -0.971297940038436060, -0.971286045516149830, -0.971274148565648750, -0.971262249186962250, -0.971250347380120060, +-0.971238443145152060, -0.971226536482088010, -0.971214627390957320, -0.971202715871790300, -0.971190801924616600, -0.971178885549465740, -0.971166966746367710, -0.971155045515352260, +-0.971143121856449240, -0.971131195769688430, -0.971119267255099560, -0.971107336312712400, -0.971095402942557030, -0.971083467144663090, -0.971071528919060680, -0.971059588265779320, +-0.971047645184848980, -0.971035699676299320, -0.971023751740160650, -0.971011801376462590, -0.970999848585235030, -0.970987893366507930, -0.970975935720310930, -0.970963975646674250, +-0.970952013145627510, -0.970940048217200810, -0.970928080861423790, -0.970916111078326760, -0.970904138867939360, -0.970892164230291790, -0.970880187165413690, -0.970868207673335150, +-0.970856225754085810, -0.970844241407696210, -0.970832254634195980, -0.970820265433615100, -0.970808273805983670, -0.970796279751331430, -0.970784283269688460, -0.970772284361084870, +-0.970760283025550510, -0.970748279263115470, -0.970736273073809610, -0.970724264457663130, -0.970712253414706130, -0.970700239944968350, -0.970688224048480100, -0.970676205725271020, +-0.970664184975371660, -0.970652161798811750, -0.970640136195621510, -0.970628108165830890, -0.970616077709470120, -0.970604044826569030, -0.970592009517157850, -0.970579971781266650, +-0.970567931618925520, -0.970555889030164430, -0.970543844015013700, -0.970531796573503520, -0.970519746705663660, -0.970507694411524620, -0.970495639691116190, -0.970483582544468540, +-0.970471522971612100, -0.970459460972576850, -0.970447396547392980, -0.970435329696090590, -0.970423260418699970, -0.970411188715251120, -0.970399114585774330, -0.970387038030299690, +-0.970374959048857290, -0.970362877641477660, -0.970350793808190890, -0.970338707549027070, -0.970326618864016610, -0.970314527753189490, -0.970302434216575800, -0.970290338254206410, +-0.970278239866111060, -0.970266139052320060, -0.970254035812863850, -0.970241930147772490, -0.970229822057076200, -0.970217711540805490, -0.970205598598990470, -0.970193483231661210, +-0.970181365438848480, -0.970169245220582340, -0.970157122576893130, -0.970144997507811020, -0.970132870013366460, -0.970120740093589510, -0.970108607748510930, -0.970096472978160820, +-0.970084335782569580, -0.970072196161767430, -0.970060054115784780, -0.970047909644652040, -0.970035762748399530, -0.970023613427057670, -0.970011461680656660, -0.969999307509226800, +-0.969987150912798970, -0.969974991891403240, -0.969962830445069920, -0.969950666573829670, -0.969938500277712450, -0.969926331556749230, -0.969914160410970230, -0.969901986840405740, +-0.969889810845086300, -0.969877632425042320, -0.969865451580304350, -0.969853268310902680, -0.969841082616867860, -0.969828894498230290, -0.969816703955020290, -0.969804510987268830, +-0.969792315595006000, -0.969780117778262340, -0.969767917537068480, -0.969755714871454840, -0.969743509781451630, -0.969731302267089810, -0.969719092328399810, -0.969706879965412160, +-0.969694665178157170, -0.969682447966665580, -0.969670228330967940, -0.969658006271094660, -0.969645781787076280, -0.969633554878943320, -0.969621325546726750, -0.969609093790456790, +-0.969596859610164060, -0.969584623005879220, -0.969572383977632900, -0.969560142525455300, -0.969547898649377630, -0.969535652349430180, -0.969523403625643600, -0.969511152478048420, +-0.969498898906675510, -0.969486642911555290, -0.969474384492718500, -0.969462123650195680, -0.969449860384017370, -0.969437594694214640, -0.969425326580817930, -0.969413056043857860, +-0.969400783083365190, -0.969388507699370460, -0.969376229891904420, -0.969363949660997930, -0.969351667006681520, -0.969339381928985940, -0.969327094427942070, -0.969314804503580320, +-0.969302512155931550, -0.969290217385026520, -0.969277920190895980, -0.969265620573570690, -0.969253318533081050, -0.969241014069458400, -0.969228707182733130, -0.969216397872936120, +-0.969204086140098120, -0.969191771984249660, -0.969179455405422050, -0.969167136403645820, -0.969154814978951620, -0.969142491131370520, -0.969130164860933170, -0.969117836167670330, +-0.969105505051612970, -0.969093171512791840, -0.969080835551237700, -0.969068497166981400, -0.969056156360053930, -0.969043813130486150, -0.969031467478308820, -0.969019119403552900, +-0.969006768906249040, -0.968994415986428100, -0.968982060644121400, -0.968969702879359460, -0.968957342692173260, -0.968944980082593780, -0.968932615050651870, -0.968920247596378290, +-0.968907877719804240, -0.968895505420960370, -0.968883130699877530, -0.968870753556587140, -0.968858373991119850, -0.968845992003506630, -0.968833607593778460, -0.968821220761966200, +-0.968808831508100710, -0.968796439832213420, -0.968784045734334960, -0.968771649214496430, -0.968759250272728690, -0.968746848909062930, -0.968734445123529910, -0.968722038916160930, +-0.968709630286986760, -0.968697219236038350, -0.968684805763347030, -0.968672389868943770, -0.968659971552859540, -0.968647550815125320, -0.968635127655772310, -0.968622702074831140, +-0.968610274072333580, -0.968597843648310250, -0.968585410802792260, -0.968572975535810900, -0.968560537847396930, -0.968548097737581770, -0.968535655206396280, -0.968523210253871670, +-0.968510762880039010, -0.968498313084929290, -0.968485860868573910, -0.968473406231003970, -0.968460949172250450, -0.968448489692344540, -0.968436027791317210, -0.968423563469200110, +-0.968411096726023990, -0.968398627561820160, -0.968386155976619810, -0.968373681970454040, -0.968361205543354140, -0.968348726695351100, -0.968336245426476340, -0.968323761736760940, +-0.968311275626235870, -0.968298787094932890, -0.968286296142882860, -0.968273802770117210, -0.968261306976666900, -0.968248808762563470, -0.968236308127837670, -0.968223805072521370, +-0.968211299596645650, -0.968198791700241590, -0.968186281383340620, -0.968173768645973820, -0.968161253488172720, -0.968148735909968420, -0.968136215911392320, -0.968123693492475400, +-0.968111168653249530, -0.968098641393745800, -0.968086111713995390, -0.968073579614029620, -0.968061045093880020, -0.968048508153577570, -0.968035968793154010, -0.968023427012640550, +-0.968010882812068600, -0.967998336191469360, -0.967985787150874240, -0.967973235690314790, -0.967960681809822200, -0.967948125509427880, -0.967935566789163040, -0.967923005649059420, +-0.967910442089148340, -0.967897876109461210, -0.967885307710029340, -0.967872736890884270, -0.967860163652057070, -0.967847587993579730, -0.967835009915483320, -0.967822429417799500, +-0.967809846500559570, -0.967797261163794940, -0.967784673407537270, -0.967772083231817850, -0.967759490636668220, -0.967746895622119910, -0.967734298188204110, -0.967721698334952810, +-0.967709096062397300, -0.967696491370569010, -0.967683884259499470, -0.967671274729219990, -0.967658662779762650, -0.967646048411158530, -0.967633431623439400, -0.967620812416636560, +-0.967608190790781750, -0.967595566745906520, -0.967582940282042280, -0.967570311399220780, -0.967557680097473450, -0.967545046376831700, -0.967532410237327500, -0.967519771678992390, +-0.967507130701857790, -0.967494487305955330, -0.967481841491316660, -0.967469193257973200, -0.967456542605957040, -0.967443889535299470, -0.967431234046032150, -0.967418576138186710, +-0.967405915811794910, -0.967393253066888280, -0.967380587903498570, -0.967367920321657300, -0.967355250321396130, -0.967342577902746910, -0.967329903065741400, -0.967317225810411020, +-0.967304546136787620, -0.967291864044902860, -0.967279179534788150, -0.967266492606475790, -0.967253803259997210, -0.967241111495384050, -0.967228417312668180, -0.967215720711881220, +-0.967203021693054940, -0.967190320256221200, -0.967177616401411640, -0.967164910128657680, -0.967152201437991850, -0.967139490329445460, -0.967126776803050260, -0.967114060858838220, +-0.967101342496840990, -0.967088621717090090, -0.967075898519617950, -0.967063172904456090, -0.967050444871636270, -0.967037714421190350, -0.967024981553150200, -0.967012246267547450, +-0.966999508564414190, -0.966986768443782170, -0.966974025905683150, -0.966961280950148880, -0.966948533577211670, -0.966935783786903040, -0.966923031579255080, -0.966910276954299430, +-0.966897519912067850, -0.966884760452592750, -0.966871998575905780, -0.966859234282038790, -0.966846467571023660, -0.966833698442892460, -0.966820926897676960, -0.966808152935409120, +-0.966795376556120910, -0.966782597759844320, -0.966769816546610870, -0.966757032916453210, -0.966744246869402970, -0.966731458405492130, -0.966718667524752550, -0.966705874227216430, +-0.966693078512915300, -0.966680280381881700, -0.966667479834147470, -0.966654676869744490, -0.966641871488704840, -0.966629063691060500, -0.966616253476843430, -0.966603440846085850, +-0.966590625798819600, -0.966577808335076560, -0.966564988454889250, -0.966552166158289540, -0.966539341445309290, -0.966526514315980690, -0.966513684770335950, -0.966500852808406590, +-0.966488018430225470, -0.966475181635824240, -0.966462342425234990, -0.966449500798490010, -0.966436656755621180, -0.966423810296660800, -0.966410961421640850, -0.966398110130593510, +-0.966385256423550660, -0.966372400300544830, -0.966359541761608100, -0.966346680806772440, -0.966333817436070050, -0.966320951649533240, -0.966308083447193770, -0.966295212829084260, +-0.966282339795236810, -0.966269464345683500, -0.966256586480456430, -0.966243706199587990, -0.966230823503110290, -0.966217938391055520, -0.966205050863455870, -0.966192160920343550, +-0.966179268561750740, -0.966166373787709860, -0.966153476598253120, -0.966140576993412600, -0.966127674973220720, -0.966114770537709440, -0.966101863686911420, -0.966088954420858740, +-0.966076042739583700, -0.966063128643118500, -0.966050212131495560, -0.966037293204746960, -0.966024371862905240, -0.966011448106002590, -0.965998521934071320, -0.965985593347143400, +-0.965972662345251810, -0.965959728928428630, -0.965946793096706060, -0.965933854850116510, -0.965920914188692080, -0.965907971112465620, -0.965895025621469230, -0.965882077715735310, +-0.965869127395296180, -0.965856174660184140, -0.965843219510431730, -0.965830261946071360, -0.965817301967135220, -0.965804339573655860, -0.965791374765665460, -0.965778407543196770, +-0.965765437906282110, -0.965752465854953890, -0.965739491389244420, -0.965726514509186230, -0.965713535214811620, -0.965700553506153360, -0.965687569383243740, -0.965674582846115070, +-0.965661593894800110, -0.965648602529331050, -0.965635608749740530, -0.965622612556060970, -0.965609613948324900, -0.965596612926564510, -0.965583609490812900, -0.965570603641102250, +-0.965557595377465110, -0.965544584699933870, -0.965531571608541310, -0.965518556103319490, -0.965505538184301510, -0.965492517851519790, -0.965479495105006640, -0.965466469944794900, +-0.965453442370916900, -0.965440412383405280, -0.965427379982292670, -0.965414345167611600, -0.965401307939394600, -0.965388268297674210, -0.965375226242483290, -0.965362181773854360, +-0.965349134891819950, -0.965336085596412710, -0.965323033887665050, -0.965309979765609950, -0.965296923230280050, -0.965283864281707760, -0.965270802919925730, -0.965257739144966820, +-0.965244672956863450, -0.965231604355648480, -0.965218533341354550, -0.965205459914014190, -0.965192384073659930, -0.965179305820325070, -0.965166225154041820, -0.965153142074843040, +-0.965140056582761470, -0.965126968677829430, -0.965113878360080220, -0.965100785629546380, -0.965087690486260530, -0.965074592930255440, -0.965061492961563960, -0.965048390580218630, +-0.965035285786252420, -0.965022178579697850, -0.965009068960588020, -0.964995956928955120, -0.964982842484832680, -0.964969725628253120, -0.964956606359249180, -0.964943484677853740, +-0.964930360584099640, -0.964917234078019440, -0.964904105159646310, -0.964890973829012900, -0.964877840086152070, -0.964864703931096690, -0.964851565363879500, -0.964838424384533490, +-0.964825280993091280, -0.964812135189585970, -0.964798986974050090, -0.964785836346516930, -0.964772683307019150, -0.964759527855589720, -0.964746369992261490, -0.964733209717067220, +-0.964720047030039770, -0.964706881931212460, -0.964693714420617910, -0.964680544498289110, -0.964667372164258910, -0.964654197418560290, -0.964641020261226220, -0.964627840692289570, +-0.964614658711783310, -0.964601474319740190, -0.964588287516193630, -0.964575098301176270, -0.964561906674721190, -0.964548712636861370, -0.964535516187629780, -0.964522317327059180, +-0.964509116055182970, -0.964495912372034030, -0.964482706277645320, -0.964469497772049820, -0.964456286855280510, -0.964443073527370580, -0.964429857788352880, -0.964416639638260630, +-0.964403419077126680, -0.964390196104984000, -0.964376970721866010, -0.964363742927805690, -0.964350512722836010, -0.964337280106989940, -0.964324045080300560, -0.964310807642801190, +-0.964297567794524910, -0.964284325535504580, -0.964271080865773510, -0.964257833785364780, -0.964244584294311480, -0.964231332392646580, -0.964218078080403500, -0.964204821357615090, +-0.964191562224314570, -0.964178300680535230, -0.964165036726310150, -0.964151770361672540, -0.964138501586655480, -0.964125230401292170, -0.964111956805615570, -0.964098680799659210, +-0.964085402383456300, -0.964072121557039810, -0.964058838320442920, -0.964045552673699070, -0.964032264616841330, -0.964018974149902900, -0.964005681272916970, -0.963992385985916740, +-0.963979088288935640, -0.963965788182006960, -0.963952485665163670, -0.963939180738439320, -0.963925873401866860, -0.963912563655479620, -0.963899251499311100, -0.963885936933394530, +-0.963872619957763080, -0.963859300572450060, -0.963845978777488790, -0.963832654572912560, -0.963819327958754800, -0.963805998935048590, -0.963792667501827240, -0.963779333659124380, +-0.963765997406973220, -0.963752658745407050, -0.963739317674459310, -0.963725974194163280, -0.963712628304551950, -0.963699280005659410, -0.963685929297518620, -0.963672576180163000, +-0.963659220653625970, -0.963645862717940840, -0.963632502373141020, -0.963619139619260050, -0.963605774456331220, -0.963592406884387850, -0.963579036903463360, -0.963565664513591490, +-0.963552289714805330, -0.963538912507138520, -0.963525532890624480, -0.963512150865296400, -0.963498766431188040, -0.963485379588332910, -0.963471990336764230, -0.963458598676515620, +-0.963445204607620510, -0.963431808130112420, -0.963418409244024780, -0.963405007949391100, -0.963391604246244930, -0.963378198134619450, -0.963364789614548740, -0.963351378686066130, +-0.963337965349204910, -0.963324549603998940, -0.963311131450481530, -0.963297710888686100, -0.963284287918646510, -0.963270862540396290, -0.963257434753968970, -0.963244004559397960, +-0.963230571956717020, -0.963217136945959560, -0.963203699527159340, -0.963190259700349880, -0.963176817465564490, -0.963163372822837260, -0.963149925772201710, -0.963136476313691260, +-0.963123024447339660, -0.963109570173180440, -0.963096113491247020, -0.963082654401573700, -0.963069192904193680, -0.963055728999140600, -0.963042262686448320, -0.963028793966150260, +-0.963015322838280290, -0.963001849302872030, -0.962988373359959130, -0.962974895009575120, -0.962961414251753970, -0.962947931086529430, -0.962934445513934920, -0.962920957534004420, +-0.962907467146771450, -0.962893974352269640, -0.962880479150533100, -0.962866981541595330, -0.962853481525490110, -0.962839979102251280, -0.962826474271912370, -0.962812967034507360, +-0.962799457390069890, -0.962785945338633820, -0.962772430880232900, -0.962758914014900660, -0.962745394742671290, -0.962731873063578550, -0.962718348977656070, -0.962704822484937720, +-0.962691293585457020, -0.962677762279248390, -0.962664228566345370, -0.962650692446781700, -0.962637153920591350, -0.962623612987808070, -0.962610069648465850, -0.962596523902598420, +-0.962582975750239660, -0.962569425191423410, -0.962555872226183440, -0.962542316854554050, -0.962528759076568760, -0.962515198892261670, -0.962501636301666630, -0.962488071304817390, +-0.962474503901747710, -0.962460934092492120, -0.962447361877084130, -0.962433787255557730, -0.962420210227946880, -0.962406630794285570, -0.962393048954607530, -0.962379464708946970, +-0.962365878057337750, -0.962352288999813620, -0.962338697536408880, -0.962325103667157510, -0.962311507392093370, -0.962297908711250430, -0.962284307624662770, -0.962270704132364040, +-0.962257098234388870, -0.962243489930770910, -0.962229879221544240, -0.962216266106742820, -0.962202650586400750, -0.962189032660552000, -0.962175412329230760, -0.962161789592471010, +-0.962148164450306490, -0.962134536902771840, -0.962120906949900820, -0.962107274591727510, -0.962093639828286110, -0.962080002659610470, -0.962066363085734680, -0.962052721106693150, +-0.962039076722519870, -0.962025429933248910, -0.962011780738914360, -0.961998129139550410, -0.961984475135191030, -0.961970818725870540, -0.961957159911623010, -0.961943498692482520, +-0.961929835068483060, -0.961916169039659260, -0.961902500606045100, -0.961888829767674650, -0.961875156524582110, -0.961861480876801460, -0.961847802824367330, -0.961834122367313690, +-0.961820439505674750, -0.961806754239484700, -0.961793066568777720, -0.961779376493588130, -0.961765684013950130, -0.961751989129897900, -0.961738291841465640, -0.961724592148687440, +-0.961710890051598040, -0.961697185550231430, -0.961683478644621780, -0.961669769334803530, -0.961656057620810740, -0.961642343502677630, -0.961628626980438940, -0.961614908054128640, +-0.961601186723781030, -0.961587462989430540, -0.961573736851111360, -0.961560008308857790, -0.961546277362704260, -0.961532544012684950, -0.961518808258834180, -0.961505070101186580, +-0.961491329539776230, -0.961477586574637550, -0.961463841205804970, -0.961450093433312780, -0.961436343257195180, -0.961422590677486920, -0.961408835694222090, -0.961395078307435310, +-0.961381318517160690, -0.961367556323432850, -0.961353791726286210, -0.961340024725754970, -0.961326255321873660, -0.961312483514676570, -0.961298709304198360, -0.961284932690473550, +-0.961271153673536330, -0.961257372253421230, -0.961243588430162670, -0.961229802203794950, -0.961216013574352930, -0.961202222541870820, -0.961188429106383250, -0.961174633267924630, +-0.961160835026529380, -0.961147034382232040, -0.961133231335067120, -0.961119425885069050, -0.961105618032272570, -0.961091807776711660, -0.961077995118421510, -0.961064180057436430, +-0.961050362593790840, -0.961036542727519370, -0.961022720458656330, -0.961008895787236690, -0.960995068713294760, -0.960981239236865290, -0.960967407357982580, -0.960953573076681500, +-0.960939736392996350, -0.960925897306961980, -0.960912055818612830, -0.960898211927983410, -0.960884365635108370, -0.960870516940022680, -0.960856665842760640, -0.960842812343356890, +-0.960828956441846180, -0.960815098138263050, -0.960801237432641900, -0.960787374325017930, -0.960773508815425560, -0.960759640903899310, -0.960745770590474060, -0.960731897875184320, +-0.960718022758064950, -0.960704145239150380, -0.960690265318475570, -0.960676382996074720, -0.960662498271983250, -0.960648611146235560, -0.960634721618866320, -0.960620829689910250, +-0.960606935359402110, -0.960593038627376330, -0.960579139493868310, -0.960565237958912350, -0.960551334022543330, -0.960537427684796000, -0.960523518945705090, -0.960509607805305370, +-0.960495694263631680, -0.960481778320718680, -0.960467859976601000, -0.960453939231313950, -0.960440016084892050, -0.960426090537370160, -0.960412162588782920, -0.960398232239165320, +-0.960384299488551970, -0.960370364336978090, -0.960356426784478190, -0.960342486831087360, -0.960328544476840240, -0.960314599721771800, -0.960300652565916790, -0.960286703009310180, +-0.960272751051986840, -0.960258796693981620, -0.960244839935329160, -0.960230880776064890, -0.960216919216223320, -0.960202955255839540, -0.960188988894948300, -0.960175020133584360, +-0.960161048971783230, -0.960147075409579330, -0.960133099447007870, -0.960119121084103580, -0.960105140320901440, -0.960091157157436540, -0.960077171593743730, -0.960063183629857870, +-0.960049193265814170, -0.960035200501647260, -0.960021205337392550, -0.960007207773084790, -0.959993207808759070, -0.959979205444450370, -0.959965200680193640, -0.959951193516023650, +-0.959937183951975800, -0.959923171988085190, -0.959909157624386560, -0.959895140860914990, -0.959881121697705560, -0.959867100134793370, -0.959853076172213490, -0.959839049810000900, +-0.959825021048190340, -0.959810989886817570, -0.959796956325917330, -0.959782920365524590, -0.959768882005674670, -0.959754841246402530, -0.959740798087742930, -0.959726752529731720, +-0.959712704572403540, -0.959698654215793590, -0.959684601459937060, -0.959670546304869030, -0.959656488750624590, -0.959642428797238930, -0.959628366444747250, -0.959614301693184400, +-0.959600234542586030, -0.959586164992987100, -0.959572093044422700, -0.959558018696928140, -0.959543941950538490, -0.959529862805288740, -0.959515781261214510, -0.959501697318350890, +-0.959487610976733070, -0.959473522236396150, -0.959459431097375530, -0.959445337559706180, -0.959431241623423640, -0.959417143288562870, -0.959403042555159290, -0.959388939423247880, +-0.959374833892864380, -0.959360725964043760, -0.959346615636821330, -0.959332502911232400, -0.959318387787311930, -0.959304270265095680, -0.959290150344618840, -0.959276028025916610, +-0.959261903309024280, -0.959247776193977280, -0.959233646680810790, -0.959219514769560130, -0.959205380460260710, -0.959191243752947840, -0.959177104647656600, -0.959162963144422950, +-0.959148819243281770, -0.959134672944268570, -0.959120524247418670, -0.959106373152767590, -0.959092219660350190, -0.959078063770202550, -0.959063905482359760, -0.959049744796857120, +-0.959035581713730160, -0.959021416233014290, -0.959007248354744820, -0.958993078078957280, -0.958978905405687090, -0.958964730334969320, -0.958950552866839940, -0.958936373001334270, +-0.958922190738487610, -0.958908006078335480, -0.958893819020913310, -0.958879629566256390, -0.958865437714400580, -0.958851243465381310, -0.958837046819233760, -0.958822847775993690, +-0.958808646335696510, -0.958794442498377640, -0.958780236264072720, -0.958766027632817260, -0.958751816604646480, -0.958737603179596330, -0.958723387357702130, -0.958709169138999620, +-0.958694948523524100, -0.958680725511311230, -0.958666500102396180, -0.958652272296815270, -0.958638042094603680, -0.958623809495796840, -0.958609574500430610, -0.958595337108540390, +-0.958581097320161950, -0.958566855135330580, -0.958552610554082140, -0.958538363576452280, -0.958524114202476190, -0.958509862432190050, -0.958495608265629180, -0.958481351702829440, +-0.958467092743826240, -0.958452831388655000, -0.958438567637352020, -0.958424301489952610, -0.958410032946492410, -0.958395762007007160, -0.958381488671532500, -0.958367212940104190, +-0.958352934812757740, -0.958338654289528910, -0.958324371370453560, -0.958310086055567000, -0.958295798344905530, -0.958281508238504440, -0.958267215736399610, -0.958252920838626790, +-0.958238623545221710, -0.958224323856219810, -0.958210021771657260, -0.958195717291569720, -0.958181410415992810, -0.958167101144962510, -0.958152789478514340, -0.958138475416684290, +-0.958124158959507980, -0.958109840107021270, -0.958095518859259700, -0.958081195216259670, -0.958066869178056610, -0.958052540744686380, -0.958038209916184820, -0.958023876692587710, +-0.958009541073930550, -0.957995203060249880, -0.957980862651581220, -0.957966519847960440, -0.957952174649423280, -0.957937827056005720, -0.957923477067743610, -0.957909124684672820, +-0.957894769906829200, -0.957880412734248400, -0.957866053166966820, -0.957851691205020120, -0.957837326848444140, -0.957822960097274860, -0.957808590951548240, -0.957794219411299830, +-0.957779845476566140, -0.957765469147382810, -0.957751090423785920, -0.957736709305811230, -0.957722325793494700, -0.957707939886872420, -0.957693551585980350, -0.957679160890854250, +-0.957664767801530430, -0.957650372318044290, -0.957635974440432580, -0.957621574168730840, -0.957607171502975250, -0.957592766443201680, -0.957578358989445880, -0.957563949141744590, +-0.957549536900133340, -0.957535122264648210, -0.957520705235325290, -0.957506285812200650, -0.957491863995310280, -0.957477439784690240, -0.957463013180376630, -0.957448584182405420, +-0.957434152790812560, -0.957419719005634610, -0.957405282826907290, -0.957390844254666810, -0.957376403288949130, -0.957361959929790340, -0.957347514177226740, -0.957333066031294420, +-0.957318615492029460, -0.957304162559468040, -0.957289707233646040, -0.957275249514599860, -0.957260789402365590, -0.957246326896979300, -0.957231861998477210, -0.957217394706895150, +-0.957202925022270000, -0.957188452944637390, -0.957173978474033740, -0.957159501610495120, -0.957145022354057740, -0.957130540704757560, -0.957116056662631220, -0.957101570227714800, +-0.957087081400044500, -0.957072590179656400, -0.957058096566586910, -0.957043600560872120, -0.957029102162548330, -0.957014601371651840, -0.957000098188218520, -0.956985592612285220, +-0.956971084643888030, -0.956956574283063020, -0.956942061529846620, -0.956927546384275020, -0.956913028846384410, -0.956898508916211420, -0.956883986593792150, -0.956869461879162890, +-0.956854934772360060, -0.956840405273419850, -0.956825873382378570, -0.956811339099272630, -0.956796802424138340, -0.956782263357011890, -0.956767721897929910, -0.956753178046928720, +-0.956738631804044500, -0.956724083169313790, -0.956709532142772770, -0.956694978724457750, -0.956680422914405470, -0.956665864712652250, -0.956651304119234270, -0.956636741134188060, +-0.956622175757549930, -0.956607607989356400, -0.956593037829643890, -0.956578465278448810, -0.956563890335807580, -0.956549313001756270, -0.956534733276331980, -0.956520151159570790, +-0.956505566651509320, -0.956490979752183890, -0.956476390461630800, -0.956461798779886910, -0.956447204706988630, -0.956432608242972270, -0.956418009387874360, -0.956403408141731530, +-0.956388804504580080, -0.956374198476456660, -0.956359590057397790, -0.956344979247439890, -0.956330366046619250, -0.956315750454972970, -0.956301132472537340, -0.956286512099348900, +-0.956271889335444160, -0.956257264180859660, -0.956242636635631800, -0.956228006699797570, -0.956213374373393380, -0.956198739656455740, -0.956184102549021200, -0.956169463051126380, +-0.956154821162807920, -0.956140176884102470, -0.956125530215046540, -0.956110881155676550, -0.956096229706029590, -0.956081575866142060, -0.956066919636050620, -0.956052261015791880, +-0.956037600005402390, -0.956022936604918770, -0.956008270814378000, -0.955993602633816610, -0.955978932063271110, -0.955964259102778380, -0.955949583752374930, -0.955934906012097630, +-0.955920225881982890, -0.955905543362067790, -0.955890858452388410, -0.955876171152982180, -0.955861481463885610, -0.955846789385135230, -0.955832094916767900, -0.955817398058820380, +-0.955802698811329070, -0.955787997174331270, -0.955773293147863520, -0.955758586731962460, -0.955743877926665040, -0.955729166732007810, -0.955714453148027720, -0.955699737174761530, +-0.955685018812245990, -0.955670298060517840, -0.955655574919613730, -0.955640849389570950, -0.955626121470426030, -0.955611391162215830, -0.955596658464977100, -0.955581923378746480, +-0.955567185903561380, -0.955552446039458210, -0.955537703786474070, -0.955522959144645580, -0.955508212114009710, -0.955493462694603220, -0.955478710886463190, -0.955463956689626360, +-0.955449200104129590, -0.955434441130009640, -0.955419679767303800, -0.955404916016048710, -0.955390149876281350, -0.955375381348038680, -0.955360610431357560, -0.955345837126274630, +-0.955331061432827310, -0.955316283351052340, -0.955301502880986700, -0.955286720022667350, -0.955271934776131150, -0.955257147141415190, -0.955242357118556210, -0.955227564707591400, +-0.955212769908557520, -0.955197972721491870, -0.955183173146431310, -0.955168371183412800, -0.955153566832473430, -0.955138760093650060, -0.955123950966979550, -0.955109139452499530, +-0.955094325550246540, -0.955079509260257750, -0.955064690582570260, -0.955049869517220930, -0.955035046064247050, -0.955020220223685490, -0.955005391995573330, -0.954990561379947530, +-0.954975728376845520, -0.954960892986304270, -0.954946055208360620, -0.954931215043052010, -0.954916372490415280, -0.954901527550487410, -0.954886680223305920, -0.954871830508907780, +-0.954856978407329970, -0.954842123918609790, -0.954827267042784310, -0.954812407779890630, -0.954797546129966030, -0.954782682093047400, -0.954767815669172240, -0.954752946858377080, +-0.954738075660700010, -0.954723202076177670, -0.954708326104847350, -0.954693447746746140, -0.954678567001911120, -0.954663683870379920, -0.954648798352189520, -0.954633910447377110, +-0.954619020155979880, -0.954604127478035140, -0.954589232413580070, -0.954574334962651980, -0.954559435125288070, -0.954544532901525520, -0.954529628291401310, -0.954514721294953410, +-0.954499811912218550, -0.954484900143234280, -0.954469985988037780, -0.954455069446666250, -0.954440150519156870, -0.954425229205547290, -0.954410305505874690, -0.954395379420176270, +-0.954380450948489440, -0.954365520090851520, -0.954350586847299790, -0.954335651217871560, -0.954320713202604140, -0.954305772801534720, -0.954290830014701160, -0.954275884842140540, +-0.954260937283890160, -0.954245987339987560, -0.954231035010469800, -0.954216080295374300, -0.954201123194738820, -0.954186163708600650, -0.954171201836997000, -0.954156237579965260, +-0.954141270937542970, -0.954126301909767550, -0.954111330496676400, -0.954096356698306840, -0.954081380514696150, -0.954066401945882330, -0.954051420991902430, -0.954036437652794000, +-0.954021451928594440, -0.954006463819341400, -0.953991473325071840, -0.953976480445823840, -0.953961485181634590, -0.953946487532541740, -0.953931487498582590, -0.953916485079794760, +-0.953901480276215690, -0.953886473087882990, -0.953871463514833980, -0.953856451557106410, -0.953841437214737460, -0.953826420487765110, -0.953811401376226780, -0.953796379880159970, +-0.953781355999602120, -0.953766329734590630, -0.953751301085163590, -0.953736270051358300, -0.953721236633212400, -0.953706200830763410, -0.953691162644048850, -0.953676122073106370, +-0.953661079117973600, -0.953646033778688170, -0.953630986055287620, -0.953615935947809360, -0.953600883456291460, -0.953585828580771460, -0.953570771321286870, -0.953555711677875340, +-0.953540649650574500, -0.953525585239421770, -0.953510518444455340, -0.953495449265712610, -0.953480377703231240, -0.953465303757048970, -0.953450227427203530, -0.953435148713732360, +-0.953420067616673420, -0.953404984136064230, -0.953389898271942430, -0.953374810024346100, -0.953359719393312650, -0.953344626378880070, -0.953329530981085750, -0.953314433199967670, +-0.953299333035563360, -0.953284230487910780, -0.953269125557047790, -0.953254018243011920, -0.953238908545841030, -0.953223796465572870, -0.953208682002245180, -0.953193565155895820, +-0.953178445926562530, -0.953163324314282860, -0.953148200319095080, -0.953133073941036860, -0.953117945180146030, -0.953102814036460240, -0.953087680510017470, -0.953072544600855220, +-0.953057406309011810, -0.953042265634524990, -0.953027122577432380, -0.953011977137772080, -0.952996829315581830, -0.952981679110899370, -0.952966526523762900, -0.952951371554210060, +-0.952936214202278700, -0.952921054468006570, -0.952905892351432190, -0.952890727852592880, -0.952875560971526920, -0.952860391708271970, -0.952845220062865870, -0.952830046035346930, +-0.952814869625752790, -0.952799690834121530, -0.952784509660491110, -0.952769326104899390, -0.952754140167384360, -0.952738951847983960, -0.952723761146736180, -0.952708568063678980, +-0.952693372598850120, -0.952678174752288110, -0.952662974524030590, -0.952647771914115650, -0.952632566922581360, -0.952617359549465580, -0.952602149794806170, -0.952586937658641660, +-0.952571723141009800, -0.952556506241948650, -0.952541286961496200, -0.952526065299690530, -0.952510841256569710, -0.952495614832171710, -0.952480386026534840, -0.952465154839696630, +-0.952449921271695810, -0.952434685322570140, -0.952419446992357810, -0.952404206281096900, -0.952388963188825490, -0.952373717715581320, -0.952358469861403160, -0.952343219626328840, +-0.952327967010396460, -0.952312712013644200, -0.952297454636110040, -0.952282194877832390, -0.952266932738849100, -0.952251668219198600, -0.952236401318918620, -0.952221132038047920, +-0.952205860376624360, -0.952190586334686230, -0.952175309912271620, -0.952160031109418600, -0.952144749926165380, -0.952129466362550470, -0.952114180418611960, -0.952098892094387920, +-0.952083601389916770, -0.952068308305236480, -0.952053012840385460, -0.952037714995402020, -0.952022414770324230, -0.952007112165190290, -0.951991807180038400, -0.951976499814907280, +-0.951961190069834930, -0.951945877944859520, -0.951930563440019470, -0.951915246555352650, -0.951899927290898120, -0.951884605646693750, -0.951869281622777730, -0.951853955219188700, +-0.951838626435964620, -0.951823295273144020, -0.951807961730765210, -0.951792625808866480, -0.951777287507486250, -0.951761946826662490, -0.951746603766434050, -0.951731258326839250, +-0.951715910507916150, -0.951700560309703400, -0.951685207732239190, -0.951669852775561710, -0.951654495439709810, -0.951639135724721810, -0.951623773630635880, -0.951608409157490450, +-0.951593042305324150, -0.951577673074175070, -0.951562301464081940, -0.951546927475083070, -0.951531551107216540, -0.951516172360521440, -0.951500791235035840, -0.951485407730798370, +-0.951470021847847240, -0.951454633586221180, -0.951439242945958160, -0.951423849927097390, -0.951408454529677040, -0.951393056753735420, -0.951377656599311280, -0.951362254066442930, +-0.951346849155168980, -0.951331441865527870, -0.951316032197558230, -0.951300620151298130, -0.951285205726786880, -0.951269788924062440, -0.951254369743163690, -0.951238948184128910, +-0.951223524246996850, -0.951208097931805610, -0.951192669238594470, -0.951177238167401630, -0.951161804718265720, -0.951146368891225280, -0.951130930686318930, -0.951115490103585310, +-0.951100047143062840, -0.951084601804790370, -0.951069154088806320, -0.951053703995149100, -0.951038251523857900, -0.951022796674971140, -0.951007339448527330, -0.950991879844565240, +-0.950976417863123040, -0.950960953504240260, -0.950945486767954980, -0.950930017654305960, -0.950914546163331930, -0.950899072295071530, -0.950883596049563410, -0.950868117426846400, +-0.950852636426959050, -0.950837153049940100, -0.950821667295827950, -0.950806179164662040, -0.950790688656480530, -0.950775195771322410, -0.950759700509226200, -0.950744202870230870, +-0.950728702854374610, -0.950713200461696940, -0.950697695692236280, -0.950682188546031370, -0.950666679023121080, -0.950651167123543920, -0.950635652847338970, -0.950620136194544880, +-0.950604617165200390, -0.950589095759344140, -0.950573571977015310, -0.950558045818252650, -0.950542517283094910, -0.950526986371580840, -0.950511453083749290, -0.950495917419638790, +-0.950480379379288860, -0.950464838962737920, -0.950449296170024830, -0.950433751001188650, -0.950418203456268040, -0.950402653535301840, -0.950387101238329040, -0.950371546565388580, +-0.950355989516518900, -0.950340430091759500, -0.950324868291149040, -0.950309304114726470, -0.950293737562530550, -0.950278168634600350, -0.950262597330974400, -0.950247023651692340, +-0.950231447596792680, -0.950215869166314290, -0.950200288360296350, -0.950184705178777620, -0.950169119621797180, -0.950153531689393870, -0.950137941381606790, -0.950122348698474890, +-0.950106753640036830, -0.950091156206332110, -0.950075556397399490, -0.950059954213278050, -0.950044349654006640, -0.950028742719624120, -0.950013133410170020, -0.949997521725683190, +-0.949981907666202390, -0.949966291231766900, -0.949950672422415710, -0.949935051238187780, -0.949919427679122300, -0.949903801745258130, -0.949888173436634560, -0.949872542753290250, +-0.949856909695264820, -0.949841274262597120, -0.949825636455326360, -0.949809996273491390, -0.949794353717131390, -0.949778708786285340, -0.949763061480992770, -0.949747411801292520, +-0.949731759747223680, -0.949716105318825550, -0.949700448516137110, -0.949684789339197530, -0.949669127788046020, -0.949653463862721650, -0.949637797563263390, -0.949622128889710870, +-0.949606457842103070, -0.949590784420479170, -0.949575108624878150, -0.949559430455339530, -0.949543749911901940, -0.949528066994605350, -0.949512381703488510, -0.949496694038590720, +-0.949481003999951170, -0.949465311587609160, -0.949449616801603890, -0.949433919641974540, -0.949418220108760420, -0.949402518202000500, -0.949386813921734520, -0.949371107268001560, +-0.949355398240840700, -0.949339686840291460, -0.949323973066392930, -0.949308256919184300, -0.949292538398705200, -0.949276817504994820, -0.949261094238092350, -0.949245368598037210, +-0.949229640584868580, -0.949213910198625890, -0.949198177439348310, -0.949182442307075380, -0.949166704801846390, -0.949150964923700320, -0.949135222672677140, -0.949119478048815910, +-0.949103731052155950, -0.949087981682736670, -0.949072229940597150, -0.949056475825777350, -0.949040719338316240, -0.949024960478253470, -0.949009199245628320, -0.948993435640480110, +-0.948977669662848360, -0.948961901312772360, -0.948946130590291650, -0.948930357495445630, -0.948914582028273390, -0.948898804188815000, -0.948883023977109660, -0.948867241393196670, +-0.948851456437115550, -0.948835669108905600, -0.948819879408606790, -0.948804087336258210, -0.948788292891899370, -0.948772496075569900, -0.948756696887309130, -0.948740895327156660, +-0.948725091395151930, -0.948709285091334450, -0.948693476415743750, -0.948677665368419130, -0.948661851949400560, -0.948646036158727450, -0.948630217996439100, -0.948614397462575360, +-0.948598574557175560, -0.948582749280279080, -0.948566921631925910, -0.948551091612155560, -0.948535259221007450, -0.948519424458521110, -0.948503587324736270, -0.948487747819692470, +-0.948471905943429340, -0.948456061695986400, -0.948440215077403060, -0.948424366087719410, -0.948408514726974850, -0.948392660995209020, -0.948376804892461570, -0.948360946418772110, +-0.948345085574179960, -0.948329222358725300, -0.948313356772447660, -0.948297488815386670, -0.948281618487581970, -0.948265745789073190, -0.948249870719899970, -0.948233993280102160, +-0.948218113469719400, -0.948202231288791330, -0.948186346737357360, -0.948170459815457780, -0.948154570523132120, -0.948138678860420030, -0.948122784827361230, -0.948106888423995150, +-0.948090989650362090, -0.948075088506501680, -0.948059184992453450, -0.948043279108257360, -0.948027370853953060, -0.948011460229580270, -0.947995547235178760, -0.947979631870788490, +-0.947963714136449200, -0.947947794032200200, -0.947931871558082120, -0.947915946714134260, -0.947900019500396600, -0.947884089916908870, -0.947868157963710600, -0.947852223640842210, +-0.947836286948343320, -0.947820347886253690, -0.947804406454613280, -0.947788462653461730, -0.947772516482839110, -0.947756567942785070, -0.947740617033339780, -0.947724663754542780, +-0.947708708106433930, -0.947692750089053630, -0.947676789702441400, -0.947660826946637220, -0.947644861821680950, -0.947628894327612550, -0.947612924464471540, -0.947596952232298670, +-0.947580977631133250, -0.947565000661015460, -0.947549021321985150, -0.947533039614082420, -0.947517055537346890, -0.947501069091818860, -0.947485080277538080, -0.947469089094544410, +-0.947453095542878150, -0.947437099622579270, -0.947421101333687620, -0.947405100676243170, -0.947389097650286120, -0.947373092255855860, -0.947357084492993270, -0.947341074361737870, +-0.947325061862129840, -0.947309046994209150, -0.947293029758015880, -0.947277010153590000, -0.947260988180971600, -0.947244963840200740, -0.947228937131317170, -0.947212908054361540, +-0.947196876609373680, -0.947180842796393590, -0.947164806615461320, -0.947148768066617190, -0.947132727149900710, -0.947116683865352860, -0.947100638213013160, -0.947084590192921900, +-0.947068539805119180, -0.947052487049645060, -0.947036431926539860, -0.947020374435843420, -0.947004314577596150, -0.946988252351838030, -0.946972187758609030, -0.946956120797949890, +-0.946940051469900350, -0.946923979774500710, -0.946907905711791180, -0.946891829281811590, -0.946875750484602710, -0.946859669320204380, -0.946843585788656910, -0.946827499890000480, +-0.946811411624275400, -0.946795320991521640, -0.946779227991779710, -0.946763132625089600, -0.946747034891491700, -0.946730934791025990, -0.946714832323733100, -0.946698727489653220, +-0.946682620288826550, -0.946666510721293260, -0.946650398787093670, -0.946634284486267850, -0.946618167818856660, -0.946602048784899950, -0.946585927384438140, -0.946569803617511530, +-0.946553677484160420, -0.946537548984425100, -0.946521418118345890, -0.946505284885963190, -0.946489149287316980, -0.946473011322448100, -0.946456870991396860, -0.946440728294203340, +-0.946424583230907950, -0.946408435801551210, -0.946392286006172980, -0.946376133844814340, -0.946359979317515480, -0.946343822424316580, -0.946327663165258180, -0.946311501540380570, +-0.946295337549724170, -0.946279171193329490, -0.946263002471236850, -0.946246831383486420, -0.946230657930119290, -0.946214482111175430, -0.946198303926695350, -0.946182123376719590, +-0.946165940461288430, -0.946149755180442200, -0.946133567534221840, -0.946117377522667560, -0.946101185145819870, -0.946084990403719180, -0.946068793296406030, -0.946052593823920820, +-0.946036391986304180, -0.946020187783596640, -0.946003981215838510, -0.945987772283070290, -0.945971560985332750, -0.945955347322666400, -0.945939131295111760, -0.945922912902709130, +-0.945906692145499050, -0.945890469023522470, -0.945874243536819700, -0.945858015685431370, -0.945841785469398010, -0.945825552888760130, -0.945809317943558490, -0.945793080633833380, +-0.945776840959625660, -0.945760598920975860, -0.945744354517924270, -0.945728107750512080, -0.945711858618779600, -0.945695607122767460, -0.945679353262516290, -0.945663097038066840, +-0.945646838449459180, -0.945630577496734850, -0.945614314179934020, -0.945598048499097450, -0.945581780454265770, -0.945565510045479620, -0.945549237272779730, -0.945532962136206630, +-0.945516684635801190, -0.945500404771603800, -0.945484122543655660, -0.945467837951997180, -0.945451550996669110, -0.945435261677712190, -0.945418969995167170, -0.945402675949074340, +-0.945386379539475130, -0.945370080766409940, -0.945353779629919620, -0.945337476130044820, -0.945321170266826380, -0.945304862040304950, -0.945288551450521370, -0.945272238497516400, +-0.945255923181330560, -0.945239605502005250, -0.945223285459580900, -0.945206963054098240, -0.945190638285598350, -0.945174311154121760, -0.945157981659709100, -0.945141649802401780, +-0.945125315582240330, -0.945108978999265600, -0.945092640053518450, -0.945076298745039730, -0.945059955073870190, -0.945043609040050800, -0.945027260643622300, -0.945010909884625770, +-0.944994556763101620, -0.944978201279091380, -0.944961843432635670, -0.944945483223775360, -0.944929120652551300, -0.944912755719004130, -0.944896388423175360, -0.944880018765105630, +-0.944863646744835920, -0.944847272362406950, -0.944830895617859930, -0.944814516511235600, -0.944798135042575040, -0.944781751211919100, -0.944765365019308860, -0.944748976464784840, +-0.944732585548388680, -0.944716192270161010, -0.944699796630142920, -0.944683398628375360, -0.944666998264899190, -0.944650595539755390, -0.944634190452985250, -0.944617783004629730, +-0.944601373194729700, -0.944584961023326340, -0.944568546490460400, -0.944552129596173300, -0.944535710340505760, -0.944519288723498880, -0.944502864745193630, -0.944486438405631400, +-0.944470009704853180, -0.944453578642899800, -0.944437145219812590, -0.944420709435632500, -0.944404271290400280, -0.944387830784157670, -0.944371387916945530, -0.944354942688804930, +-0.944338495099776960, -0.944322045149902810, -0.944305592839223440, -0.944289138167780150, -0.944272681135614020, -0.944256221742765910, -0.944239759989277450, -0.944223295875189720, +-0.944206829400543680, -0.944190360565380530, -0.944173889369741560, -0.944157415813667520, -0.944140939897200270, -0.944124461620380550, -0.944107980983249770, -0.944091497985849130, +-0.944075012628219580, -0.944058524910402650, -0.944042034832439310, -0.944025542394370860, -0.944009047596238600, -0.943992550438083500, -0.943976050919947180, -0.943959549041870850, +-0.943943044803895570, -0.943926538206062760, -0.943910029248413160, -0.943893517930988970, -0.943877004253830810, -0.943860488216980320, -0.943843969820478470, -0.943827449064366770, +-0.943810925948686430, -0.943794400473478730, -0.943777872638785100, -0.943761342444646710, -0.943744809891104650, -0.943728274978201000, -0.943711737705976610, -0.943695198074472770, +-0.943678656083731030, -0.943662111733792660, -0.943645565024698650, -0.943629015956491070, -0.943612464529210990, -0.943595910742899720, -0.943579354597598670, -0.943562796093349140, +-0.943546235230192760, -0.943529672008170730, -0.943513106427324550, -0.943496538487695210, -0.943479968189325000, -0.943463395532254670, -0.943446820516525950, -0.943430243142180270, +-0.943413663409258810, -0.943397081317802980, -0.943380496867854750, -0.943363910059455300, -0.943347320892646060, -0.943330729367468420, -0.943314135483964030, -0.943297539242174410, +-0.943280940642140740, -0.943264339683904880, -0.943247736367507810, -0.943231130692991690, -0.943214522660397740, -0.943197912269767570, -0.943181299521142490, -0.943164684414564250, +-0.943148066950073920, -0.943131447127713800, -0.943114824947525080, -0.943098200409549170, -0.943081573513827930, -0.943064944260402660, -0.943048312649314990, -0.943031678680606560, +-0.943015042354318990, -0.942998403670493810, -0.942981762629172330, -0.942965119230396720, -0.942948473474208290, -0.942931825360648680, -0.942915174889759510, -0.942898522061582090, +-0.942881866876158710, -0.942865209333530680, -0.942848549433739520, -0.942831887176827090, -0.942815222562834900, -0.942798555591804700, -0.942781886263778010, -0.942765214578796700, +-0.942748540536902270, -0.942731864138136260, -0.942715185382540950, -0.942698504270157560, -0.942681820801027910, -0.942665134975193770, -0.942648446792696770, -0.942631756253578310, +-0.942615063357880810, -0.942598368105645680, -0.942581670496914550, -0.942564970531729380, -0.942548268210131600, -0.942531563532163270, -0.942514856497866040, -0.942498147107281640, +-0.942481435360451590, -0.942464721257418200, -0.942448004798222990, -0.942431285982907820, -0.942414564811514420, -0.942397841284084660, -0.942381115400659940, -0.942364387161282790, +-0.942347656565994620, -0.942330923614837280, -0.942314188307852740, -0.942297450645082630, -0.942280710626568930, -0.942263968252353480, -0.942247223522478030, -0.942230476436984320, +-0.942213726995914660, -0.942196975199310670, -0.942180221047214330, -0.942163464539667260, -0.942146705676711660, -0.942129944458389050, -0.942113180884741830, -0.942096414955811530, +-0.942079646671640350, -0.942062876032270010, -0.942046103037742500, -0.942029327688099660, -0.942012549983383570, -0.941995769923636090, -0.941978987508899190, -0.941962202739214490, +-0.941945415614624640, -0.941928626135171140, -0.941911834300896200, -0.941895040111841660, -0.941878243568049170, -0.941861444669561340, -0.941844643416419940, -0.941827839808666910, +-0.941811033846344350, -0.941794225529494210, -0.941777414858158470, -0.941760601832379200, -0.941743786452198360, -0.941726968717658150, -0.941710148628800090, -0.941693326185667030, +-0.941676501388300720, -0.941659674236743130, -0.941642844731036320, -0.941626012871222380, -0.941609178657343170, -0.941592342089441310, -0.941575503167558560, -0.941558661891736980, +-0.941541818262018880, -0.941524972278446230, -0.941508123941060980, -0.941491273249905560, -0.941474420205022030, -0.941457564806452040, -0.941440707054238430, -0.941423846948423070, +-0.941406984489048140, -0.941390119676155710, -0.941373252509787980, -0.941356382989986810, -0.941339511116794920, -0.941322636890254420, -0.941305760310407250, -0.941288881377295610, +-0.941272000090961790, -0.941255116451447990, -0.941238230458796400, -0.941221342113049310, -0.941204451414248470, -0.941187558362436840, -0.941170662957656280, -0.941153765199949090, +-0.941136865089357570, -0.941119962625923790, -0.941103057809689840, -0.941086150640698450, -0.941069241118991820, -0.941052329244612020, -0.941035415017601350, -0.941018498438002230, +-0.941001579505856830, -0.940984658221207470, -0.940967734584096550, -0.940950808594566150, -0.940933880252658560, -0.940916949558416540, -0.940900016511882040, -0.940883081113097600, +-0.940866143362105390, -0.940849203258947610, -0.940832260803667110, -0.940815315996305860, -0.940798368836906370, -0.940781419325511070, -0.940764467462162140, -0.940747513246901980, +-0.940730556679773120, -0.940713597760817870, -0.940696636490078510, -0.940679672867597350, -0.940662706893417360, -0.940645738567580490, -0.940628767890129390, -0.940611794861106240, +-0.940594819480553680, -0.940577841748513780, -0.940560861665029610, -0.940543879230143150, -0.940526894443897140, -0.940509907306333770, -0.940492917817495780, -0.940475925977425350, +-0.940458931786165240, -0.940441935243757630, -0.940424936350245040, -0.940407935105670330, -0.940390931510075800, -0.940373925563503970, -0.940356917265997350, -0.940339906617598360, +-0.940322893618349310, -0.940305878268293370, -0.940288860567472740, -0.940271840515929940, -0.940254818113707480, -0.940237793360848010, -0.940220766257394040, -0.940203736803388200, +-0.940186704998873020, -0.940169670843890800, -0.940152634338484620, -0.940135595482696980, -0.940118554276570210, -0.940101510720147140, -0.940084464813470300, -0.940067416556581990, +-0.940050365949525400, -0.940033312992342940, -0.940016257685077130, -0.939999200027770710, -0.939982140020466320, -0.939965077663206580, -0.939948012956034140, -0.939930945898991620, +-0.939913876492121770, -0.939896804735467000, -0.939879730629070380, -0.939862654172974540, -0.939845575367222020, -0.939828494211855550, -0.939811410706917540, -0.939794324852451400, +-0.939777236648499330, -0.939760146095104280, -0.939743053192308770, -0.939725957940155680, -0.939708860338687610, -0.939691760387947550, -0.939674658087977900, -0.939657553438821740, +-0.939640446440521360, -0.939623337093120180, -0.939606225396660610, -0.939589111351185500, -0.939571994956737600, -0.939554876213359760, -0.939537755121094390, -0.939520631679985010, +-0.939503505890073920, -0.939486377751404200, -0.939469247264018370, -0.939452114427959620, -0.939434979243270460, -0.939417841709993870, -0.939400701828172700, -0.939383559597849470, +-0.939366415019067590, -0.939349268091869690, -0.939332118816298630, -0.939314967192397270, -0.939297813220208560, -0.939280656899774910, -0.939263498231139970, -0.939246337214346360, +-0.939229173849436830, -0.939212008136454330, -0.939194840075441850, -0.939177669666442340, -0.939160496909498540, -0.939143321804653540, -0.939126144351949970, -0.939108964551431340, +-0.939091782403140280, -0.939074597907119780, -0.939057411063412670, -0.939040221872062150, -0.939023030333110740, -0.939005836446602070, -0.938988640212578880, -0.938971441631083930, +-0.938954240702160490, -0.938937037425851440, -0.938919831802199730, -0.938902623831248560, -0.938885413513040780, -0.938868200847619460, -0.938850985835027240, -0.938833768475307970, +-0.938816548768504290, -0.938799326714659150, -0.938782102313815760, -0.938764875566016730, -0.938747646471305930, -0.938730415029725980, -0.938713181241319970, -0.938695945106130970, +-0.938678706624202160, -0.938661465795576630, -0.938644222620297340, -0.938626977098407590, -0.938609729229950340, -0.938592479014968450, -0.938575226453505660, -0.938557971545604830, +-0.938540714291309030, -0.938523454690661560, -0.938506192743705060, -0.938488928450483370, -0.938471661811039360, -0.938454392825416210, -0.938437121493657100, -0.938419847815805230, +-0.938402571791903670, -0.938385293421995730, -0.938368012706124470, -0.938350729644333300, -0.938333444236664870, -0.938316156483163240, -0.938298866383871170, -0.938281573938831940, +-0.938264279148088740, -0.938246982011684880, -0.938229682529663320, -0.938212380702067810, -0.938195076528941300, -0.938177770010327210, -0.938160461146268610, -0.938143149936808810, +-0.938125836381991210, -0.938108520481859000, -0.938091202236455590, -0.938073881645823730, -0.938056558710007480, -0.938039233429049930, -0.938021905802994160, -0.938004575831883790, +-0.937987243515761900, -0.937969908854671570, -0.937952571848656770, -0.937935232497760560, -0.937917890802026260, -0.937900546761497260, -0.937883200376216970, -0.937865851646228600, +-0.937848500571575540, -0.937831147152301310, -0.937813791388448890, -0.937796433280062240, -0.937779072827184530, -0.937761710029859200, -0.937744344888129520, -0.937726977402039030, +-0.937709607571630800, -0.937692235396948790, -0.937674860878036310, -0.937657484014936650, -0.937640104807693220, -0.937622723256349540, -0.937605339360949030, -0.937587953121535200, +-0.937570564538151460, -0.937553173610841340, -0.937535780339648020, -0.937518384724615460, -0.937500986765787080, -0.937483586463206060, -0.937466183816916150, -0.937448778826960540, +-0.937431371493383180, -0.937413961816227490, -0.937396549795536880, -0.937379135431354870, -0.937361718723724980, -0.937344299672690840, -0.937326878278295970, -0.937309454540583900, +-0.937292028459598140, -0.937274600035381990, -0.937257169267979750, -0.937239736157434500, -0.937222300703789980, -0.937204862907089600, -0.937187422767377210, -0.937169980284695890, +-0.937152535459089830, -0.937135088290602550, -0.937117638779277560, -0.937100186925158400, -0.937082732728288790, -0.937065276188712380, -0.937047817306472800, -0.937030356081613560, +-0.937012892514178300, -0.936995426604210980, -0.936977958351755120, -0.936960487756854370, -0.936943014819552440, -0.936925539539892880, -0.936908061917919310, -0.936890581953675810, +-0.936873099647205780, -0.936855614998553080, -0.936838128007761340, -0.936820638674874310, -0.936803146999935720, -0.936785652982989100, -0.936768156624078530, -0.936750657923247190, +-0.936733156880539490, -0.936715653495998830, -0.936698147769669200, -0.936680639701594100, -0.936663129291817390, -0.936645616540382590, -0.936628101447333990, -0.936610584012715240, +-0.936593064236569960, -0.936575542118942010, -0.936558017659875230, -0.936540490859413490, -0.936522961717600410, -0.936505430234479960, -0.936487896410096000, -0.936470360244491930, +-0.936452821737712270, -0.936435280889800550, -0.936417737700800610, -0.936400192170756320, -0.936382644299711300, -0.936365094087709960, -0.936347541534795820, -0.936329986641012860, +-0.936312429406405020, -0.936294869831016060, -0.936277307914889830, -0.936259743658070410, -0.936242177060601640, -0.936224608122527390, -0.936207036843891390, -0.936189463224738060, +-0.936171887265111020, -0.936154308965054360, -0.936136728324611810, -0.936119145343827560, -0.936101560022745030, -0.936083972361409060, -0.936066382359863060, -0.936048790018151110, +-0.936031195336317180, -0.936013598314405230, -0.935995998952459330, -0.935978397250523450, -0.935960793208641560, -0.935943186826857290, -0.935925578105215480, -0.935907967043759670, +-0.935890353642533920, -0.935872737901582430, -0.935855119820948930, -0.935837499400677400, -0.935819876640812450, -0.935802251541397730, -0.935784624102477420, -0.935766994324095600, +-0.935749362206296230, -0.935731727749123500, -0.935714090952621370, -0.935696451816834140, -0.935678810341805330, -0.935661166527579910, -0.935643520374201510, -0.935625871881714310, +-0.935608221050162500, -0.935590567879590160, -0.935572912370041030, -0.935555254521559850, -0.935537594334190590, -0.935519931807977430, -0.935502266942964340, -0.935484599739195620, +-0.935466930196715450, -0.935449258315567910, -0.935431584095797190, -0.935413907537447580, -0.935396228640562820, -0.935378547405187890, -0.935360863831366520, -0.935343177919143010, +-0.935325489668561550, -0.935307799079665990, -0.935290106152501300, -0.935272410887111440, -0.935254713283540480, -0.935237013341832730, -0.935219311062032380, -0.935201606444183820, +-0.935183899488331250, -0.935166190194518960, -0.935148478562791150, -0.935130764593191780, -0.935113048285765910, -0.935095329640557420, -0.935077608657610470, -0.935059885336969600, +-0.935042159678679100, -0.935024431682782710, -0.935006701349325730, -0.934988968678351910, -0.934971233669905640, -0.934953496324031350, -0.934935756640773220, -0.934918014620175760, +-0.934900270262283280, -0.934882523567140190, -0.934864774534790330, -0.934847023165279010, -0.934829269458649970, -0.934811513414947840, -0.934793755034216910, -0.934775994316501600, +-0.934758231261845980, -0.934740465870295130, -0.934722698141893130, -0.934704928076684370, -0.934687155674713280, -0.934669380936024250, -0.934651603860661820, -0.934633824448670380, +-0.934616042700094350, -0.934598258614977920, -0.934580472193366150, -0.934562683435303130, -0.934544892340833490, -0.934527098910001630, -0.934509303142852080, -0.934491505039428790, +-0.934473704599777190, -0.934455901823941230, -0.934438096711965650, -0.934420289263894750, -0.934402479479773060, -0.934384667359645200, -0.934366852903555810, -0.934349036111549180, +-0.934331216983669940, -0.934313395519962290, -0.934295571720471620, -0.934277745585241900, -0.934259917114317880, -0.934242086307744080, -0.934224253165564680, -0.934206417687824970, +-0.934188579874569270, -0.934170739725842080, -0.934152897241688150, -0.934135052422151890, -0.934117205267277930, -0.934099355777111010, -0.934081503951695760, -0.934063649791076700, +-0.934045793295298240, -0.934027934464405570, -0.934010073298443100, -0.933992209797455340, -0.933974343961487150, -0.933956475790583050, -0.933938605284787560, -0.933920732444145750, +-0.933902857268702150, -0.933884979758501490, -0.933867099913588290, -0.933849217734007310, -0.933831333219803380, -0.933813446371021040, -0.933795557187705130, -0.933777665669899950, +-0.933759771817651020, -0.933741875631002530, -0.933723977109999440, -0.933706076254686380, -0.933688173065108210, -0.933670267541309220, -0.933652359683334820, -0.933634449491229650, +-0.933616536965038320, -0.933598622104805600, -0.933580704910576320, -0.933562785382395340, -0.933544863520307300, -0.933526939324357260, -0.933509012794589420, -0.933491083931049400, +-0.933473152733781620, -0.933455219202831030, -0.933437283338242390, -0.933419345140060530, -0.933401404608329990, -0.933383461743096280, -0.933365516544403920, -0.933347569012297650, +-0.933329619146822550, -0.933311666948023480, -0.933293712415945160, -0.933275755550632580, -0.933257796352130580, -0.933239834820484120, -0.933221870955737720, -0.933203904757937020, +-0.933185936227126420, -0.933167965363351120, -0.933149992166655840, -0.933132016637085340, -0.933114038774685020, -0.933096058579499730, -0.933078076051574110, -0.933060091190953460, +-0.933042103997682500, -0.933024114471806330, -0.933006122613369900, -0.932988128422418070, -0.932970131898996020, -0.932952133043148170, -0.932934131854920470, -0.932916128334357330, +-0.932898122481503940, -0.932880114296405160, -0.932862103779106170, -0.932844090929651590, -0.932826075748087180, -0.932808058234457450, -0.932790038388807590, -0.932772016211182660, +-0.932753991701627760, -0.932735964860187840, -0.932717935686907970, -0.932699904181833240, -0.932681870345008490, -0.932663834176479360, -0.932645795676290690, -0.932627754844487460, +-0.932609711681114840, -0.932591666186218030, -0.932573618359841650, -0.932555568202031560, -0.932537515712832610, -0.932519460892289760, -0.932501403740448320, -0.932483344257353460, +-0.932465282443050160, -0.932447218297583590, -0.932429151820999060, -0.932411083013341300, -0.932393011874656170, -0.932374938404988420, -0.932356862604383440, -0.932338784472886320, +-0.932320704010542120, -0.932302621217395930, -0.932284536093493490, -0.932266448638879750, -0.932248358853599800, -0.932230266737699040, -0.932212172291222550, -0.932194075514215630, +-0.932175976406723560, -0.932157874968791540, -0.932139771200464760, -0.932121665101788290, -0.932103556672807980, -0.932085445913568790, -0.932067332824116020, -0.932049217404494870, +-0.932031099654750390, -0.932012979574928460, -0.931994857165074020, -0.931976732425232490, -0.931958605355449170, -0.931940475955769340, -0.931922344226238210, -0.931904210166901280, +-0.931886073777803860, -0.931867935058991240, -0.931849794010508490, -0.931831650632401480, -0.931813504924715490, -0.931795356887495600, -0.931777206520787330, -0.931759053824636090, +-0.931740898799086950, -0.931722741444185760, -0.931704581759977830, -0.931686419746508340, -0.931668255403822920, -0.931650088731966750, -0.931631919730985470, -0.931613748400924370, +-0.931595574741828860, -0.931577398753744010, -0.931559220436716130, -0.931541039790790060, -0.931522856816011550, -0.931504671512425770, -0.931486483880078380, -0.931468293919014420, +-0.931450101629280100, -0.931431907010920490, -0.931413710063981100, -0.931395510788507460, -0.931377309184544980, -0.931359105252139270, -0.931340898991335870, -0.931322690402180190, +-0.931304479484717400, -0.931286266238993800, -0.931268050665054470, -0.931249832762945040, -0.931231612532711030, -0.931213389974397950, -0.931195165088051110, -0.931176937873716690, +-0.931158708331439990, -0.931140476461266410, -0.931122242263241700, -0.931104005737411370, -0.931085766883821050, -0.931067525702516270, -0.931049282193542660, -0.931031036356945950, +-0.931012788192771220, -0.930994537701064880, -0.930976284881872120, -0.930958029735238780, -0.930939772261210270, -0.930921512459832120, -0.930903250331150400, -0.930884985875210620, +-0.930866719092058310, -0.930848449981739210, -0.930830178544299060, -0.930811904779783370, -0.930793628688238010, -0.930775350269708590, -0.930757069524240640, -0.930738786451879800, +-0.930720501052672340, -0.930702213326663590, -0.930683923273899370, -0.930665630894425220, -0.930647336188287100, -0.930629039155530300, -0.930610739796201240, -0.930592438110345200, +-0.930574134098008270, -0.930555827759235840, -0.930537519094073890, -0.930519208102568160, -0.930500894784764390, -0.930482579140708420, -0.930464261170445670, -0.930445940874022550, +-0.930427618251484570, -0.930409293302877580, -0.930390966028247330, -0.930372636427639790, -0.930354304501100240, -0.930335970248675200, -0.930317633670410320, -0.930299294766351310, +-0.930280953536544050, -0.930262609981034380, -0.930244264099868270, -0.930225915893091450, -0.930207565360749890, -0.930189212502889110, -0.930170857319555510, -0.930152499810794840, +-0.930134139976652950, -0.930115777817175690, -0.930097413332408920, -0.930079046522398370, -0.930060677387190450, -0.930042305926830900, -0.930023932141365580, -0.930005556030840450, +-0.929987177595301360, -0.929968796834794390, -0.929950413749365380, -0.929932028339060410, -0.929913640603925340, -0.929895250544005790, -0.929876858159348510, -0.929858463449999010, +-0.929840066416003360, -0.929821667057407650, -0.929803265374257390, -0.929784861366599210, -0.929766455034478970, -0.929748046377942620, -0.929729635397036120, -0.929711222091805460, +-0.929692806462296790, -0.929674388508556100, -0.929655968230629460, -0.929637545628562930, -0.929619120702402160, -0.929600693452193870, -0.929582263877983930, -0.929563831979818290, +-0.929545397757743140, -0.929526961211804450, -0.929508522342048060, -0.929490081148520610, -0.929471637631267940, -0.929453191790336250, -0.929434743625771610, -0.929416293137620090, +-0.929397840325927760, -0.929379385190740930, -0.929360927732105660, -0.929342467950067590, -0.929324005844673780, -0.929305541415969990, -0.929287074664002290, -0.929268605588816850, +-0.929250134190459990, -0.929231660468977430, -0.929213184424416140, -0.929194706056821750, -0.929176225366240670, -0.929157742352718970, -0.929139257016302960, -0.929120769357038800, +-0.929102279374972690, -0.929083787070150930, -0.929065292442619370, -0.929046795492424860, -0.929028296219613470, -0.929009794624231280, -0.928991290706324580, -0.928972784465939670, +-0.928954275903122410, -0.928935765017919860, -0.928917251810377880, -0.928898736280542760, -0.928880218428460800, -0.928861698254178300, -0.928843175757741560, -0.928824650939196860, +-0.928806123798590620, -0.928787594335968910, -0.928769062551378030, -0.928750528444864720, -0.928731992016475160, -0.928713453266255650, -0.928694912194252490, -0.928676368800511630, +-0.928657823085080270, -0.928639275048004360, -0.928620724689330210, -0.928602172009104220, -0.928583617007372910, -0.928565059684182460, -0.928546500039579390, -0.928527938073610000, +-0.928509373786320920, -0.928490807177758000, -0.928472238247968320, -0.928453666996998160, -0.928435093424893720, -0.928416517531701620, -0.928397939317467950, -0.928379358782239650, +-0.928360775926063030, -0.928342190748984500, -0.928323603251050340, -0.928305013432307310, -0.928286421292801700, -0.928267826832580020, -0.928249230051688800, -0.928230630950174550, +-0.928212029528083350, -0.928193425785462380, -0.928174819722357940, -0.928156211338816320, -0.928137600634884260, -0.928118987610608180, -0.928100372266034260, -0.928081754601209790, +-0.928063134616180950, -0.928044512310994160, -0.928025887685696160, -0.928007260740333460, -0.927988631474952700, -0.927969999889600160, -0.927951365984322820, -0.927932729759166630, +-0.927914091214178890, -0.927895450349406010, -0.927876807164894510, -0.927858161660690910, -0.927839513836841930, -0.927820863693393890, -0.927802211230394080, -0.927783556447888570, +-0.927764899345924320, -0.927746239924547740, -0.927727578183805580, -0.927708914123744450, -0.927690247744411110, -0.927671579045852070, -0.927652908028114180, -0.927634234691243620, +-0.927615559035287810, -0.927596881060293030, -0.927578200766306150, -0.927559518153373790, -0.927540833221542240, -0.927522145970858910, -0.927503456401370220, -0.927484764513123010, +-0.927466070306163790, -0.927447373780539430, -0.927428674936296550, -0.927409973773482110, -0.927391270292142630, -0.927372564492325080, -0.927353856374075750, -0.927335145937442040, +-0.927316433182470480, -0.927297718109207910, -0.927279000717700970, -0.927260281007996290, -0.927241558980141160, -0.927222834634182200, -0.927204107970166060, -0.927185378988139690, +-0.927166647688149940, -0.927147914070243550, -0.927129178134467270, -0.927110439880868160, -0.927091699309492870, -0.927072956420388120, -0.927054211213601210, -0.927035463689178770, +-0.927016713847167660, -0.926997961687614840, -0.926979207210567040, -0.926960450416070890, -0.926941691304174030, -0.926922929874922860, -0.926904166128364460, -0.926885400064545560, +-0.926866631683513240, -0.926847860985314240, -0.926829087969995640, -0.926810312637604270, -0.926791534988186890, -0.926772755021790910, -0.926753972738463050, -0.926735188138250400, +-0.926716401221199580, -0.926697611987357890, -0.926678820436771740, -0.926660026569488980, -0.926641230385556120, -0.926622431885020140, -0.926603631067928090, -0.926584827934326950, +-0.926566022484263780, -0.926547214717785560, -0.926528404634939350, -0.926509592235771670, -0.926490777520330380, -0.926471960488662210, -0.926453141140814120, -0.926434319476833190, +-0.926415495496766380, -0.926396669200660550, -0.926377840588563430, -0.926359009660521650, -0.926340176416582390, -0.926321340856792630, -0.926302502981199540, -0.926283662789850190, +-0.926264820282791670, -0.926245975460071150, -0.926227128321735590, -0.926208278867831970, -0.926189427098408010, -0.926170573013510470, -0.926151716613186400, -0.926132857897483120, +-0.926113996866447350, -0.926095133520126960, -0.926076267858568670, -0.926057399881819790, -0.926038529589927270, -0.926019656982938530, -0.926000782060900640, -0.925981904823860780, +-0.925963025271866140, -0.925944143404964000, -0.925925259223201120, -0.925906372726625460, -0.925887483915283860, -0.925868592789223510, -0.925849699348491710, -0.925830803593135630, +-0.925811905523202250, -0.925793005138739410, -0.925774102439794080, -0.925755197426413550, -0.925736290098645000, -0.925717380456535620, -0.925698468500132820, -0.925679554229483890, +-0.925660637644636130, -0.925641718745636390, -0.925622797532532630, -0.925603874005371920, -0.925584948164201560, -0.925566020009068850, -0.925547089540021070, -0.925528156757105200, +-0.925509221660369310, -0.925490284249860240, -0.925471344525625630, -0.925452402487712540, -0.925433458136168510, -0.925414511471040810, -0.925395562492376870, -0.925376611200223960, +-0.925357657594629180, -0.925338701675640700, -0.925319743443305360, -0.925300782897670700, -0.925281820038784120, -0.925262854866692910, -0.925243887381444250, -0.925224917583086230, +-0.925205945471666010, -0.925186971047230800, -0.925167994309828210, -0.925149015259505550, -0.925130033896310430, -0.925111050220290280, -0.925092064231492370, -0.925073075929964350, +-0.925054085315753390, -0.925035092388907470, -0.925016097149473860, -0.924997099597499980, -0.924978099733033350, -0.924959097556121160, -0.924940093066811580, -0.924921086265151680, +-0.924902077151189110, -0.924883065724971360, -0.924864051986545980, -0.924845035935960460, -0.924826017573262330, -0.924806996898499100, -0.924787973911718410, -0.924768948612967550, +-0.924749921002294470, -0.924730891079746710, -0.924711858845371770, -0.924692824299217060, -0.924673787441330330, -0.924654748271758860, -0.924635706790550850, -0.924616662997753470, +-0.924597616893414460, -0.924578568477581460, -0.924559517750302100, -0.924540464711623880, -0.924521409361594440, -0.924502351700261520, -0.924483291727672410, -0.924464229443875410, +-0.924445164848917810, -0.924426097942847250, -0.924407028725711570, -0.924387957197558170, -0.924368883358434700, -0.924349807208389220, -0.924330728747469240, -0.924311647975722520, +-0.924292564893196670, -0.924273479499939320, -0.924254391795998330, -0.924235301781421440, -0.924216209456256150, -0.924197114820550110, -0.924178017874351500, -0.924158918617707940, +-0.924139817050667060, -0.924120713173276710, -0.924101606985584520, -0.924082498487637900, -0.924063387679485480, -0.924044274561174550, -0.924025159132752960, -0.924006041394268450, +-0.923986921345768760, -0.923967798987301860, -0.923948674318915470, -0.923929547340657350, -0.923910418052575340, -0.923891286454717080, -0.923872152547130840, -0.923853016329864160, +-0.923833877802965000, -0.923814736966481200, -0.923795593820460170, -0.923776448364950430, -0.923757300599999720, -0.923738150525655670, -0.923718998141966230, -0.923699843448979370, +-0.923680686446742840, -0.923661527135304580, -0.923642365514712460, -0.923623201585014540, -0.923604035346258230, -0.923584866798492170, -0.923565695941763960, -0.923546522776121480, +-0.923527347301612680, -0.923508169518285630, -0.923488989426187620, -0.923469807025367630, -0.923450622315873050, -0.923431435297751960, -0.923412245971052310, -0.923393054335821970, +-0.923373860392109000, -0.923354664139961480, -0.923335465579427140, -0.923316264710553950, -0.923297061533390310, -0.923277856047984070, -0.923258648254383200, -0.923239438152635760, +-0.923220225742789610, -0.923201011024892600, -0.923181793998993470, -0.923162574665139850, -0.923143353023379690, -0.923124129073761180, -0.923104902816332400, -0.923085674251141410, +-0.923066443378236070, -0.923047210197664780, -0.923027974709475060, -0.923008736913715770, -0.922989496810434520, -0.922970254399679720, -0.922951009681499120, -0.922931762655941120, +-0.922912513323053240, -0.922893261682884550, -0.922874007735482670, -0.922854751480895690, -0.922835492919171880, -0.922816232050359340, -0.922796968874506240, -0.922777703391660760, +-0.922758435601870990, -0.922739165505185090, -0.922719893101650920, -0.922700618391317450, -0.922681341374232300, -0.922662062050443880, -0.922642780420000360, -0.922623496482949500, +-0.922604210239340250, -0.922584921689220460, -0.922565630832638320, -0.922546337669642110, -0.922527042200280150, -0.922507744424600480, -0.922488444342651540, -0.922469141954481490, +-0.922449837260138520, -0.922430530259670590, -0.922411220953126780, -0.922391909340554820, -0.922372595422003120, -0.922353279197519970, -0.922333960667153560, -0.922314639830951970, +-0.922295316688964140, -0.922275991241237940, -0.922256663487821760, -0.922237333428764020, -0.922218001064112890, -0.922198666393916680, -0.922179329418223890, -0.922159990137082830, +-0.922140648550541340, -0.922121304658648610, -0.922101958461452600, -0.922082609959001710, -0.922063259151344350, -0.922043906038528820, -0.922024550620603180, -0.922005192897616510, +-0.921985832869616770, -0.921966470536652480, -0.921947105898772050, -0.921927738956023870, -0.921908369708456350, -0.921888998156117910, -0.921869624299056940, -0.921850248137321530, +-0.921830869670960950, -0.921811488900023070, -0.921792105824556620, -0.921772720444609780, -0.921753332760231190, -0.921733942771468920, -0.921714550478372140, -0.921695155880988940, +-0.921675758979367930, -0.921656359773557420, -0.921636958263606140, -0.921617554449562390, -0.921598148331474690, -0.921578739909391760, -0.921559329183361920, -0.921539916153433340, +-0.921520500819655420, -0.921501083182076130, -0.921481663240744210, -0.921462240995708170, -0.921442816447016200, -0.921423389594717480, -0.921403960438860190, -0.921384528979493190, +-0.921365095216664760, -0.921345659150423550, -0.921326220780818270, -0.921306780107897460, -0.921287337131709630, -0.921267891852303510, -0.921248444269727180, -0.921228994384030280, +-0.921209542195260740, -0.921190087703467440, -0.921170630908698880, -0.921151171811003810, -0.921131710410430400, -0.921112246707028070, -0.921092780700845100, -0.921073312391930240, +-0.921053841780332010, -0.921034368866099240, -0.921014893649280570, -0.920995416129924640, -0.920975936308080170, -0.920956454183795570, -0.920936969757120030, -0.920917483028102170, +-0.920897993996790620, -0.920878502663234010, -0.920859009027481190, -0.920839513089580560, -0.920820014849581430, -0.920800514307532290, -0.920781011463481790, -0.920761506317478880, +-0.920741998869572090, -0.920722489119810360, -0.920702977068242450, -0.920683462714916970, -0.920663946059882670, -0.920644427103188720, -0.920624905844883660, -0.920605382285016430, +-0.920585856423635770, -0.920566328260790430, -0.920546797796528820, -0.920527265030900650, -0.920507729963954360, -0.920488192595738770, -0.920468652926302640, -0.920449110955694820, +-0.920429566683964250, -0.920410020111159800, -0.920390471237330310, -0.920370920062524630, -0.920351366586791290, -0.920331810810179900, -0.920312252732738980, -0.920292692354517490, +-0.920273129675564180, -0.920253564695927670, -0.920233997415657700, -0.920214427834802670, -0.920194855953411550, -0.920175281771533400, -0.920155705289216860, -0.920136126506511220, +-0.920116545423465220, -0.920096962040127810, -0.920077376356548070, -0.920057788372774520, -0.920038198088856780, -0.920018605504843600, -0.919999010620783930, -0.919979413436726730, +-0.919959813952720970, -0.919940212168815390, -0.919920608085059490, -0.919901001701502240, -0.919881393018192380, -0.919861782035178990, -0.919842168752511240, -0.919822553170238090, +-0.919802935288408510, -0.919783315107071560, -0.919763692626276000, -0.919744067846071540, -0.919724440766506950, -0.919704811387631270, -0.919685179709493590, -0.919665545732142880, +-0.919645909455627960, -0.919626270879998600, -0.919606630005303630, -0.919586986831592120, -0.919567341358913050, -0.919547693587315700, -0.919528043516849030, -0.919508391147562330, +-0.919488736479504580, -0.919469079512724720, -0.919449420247272390, -0.919429758683196650, -0.919410094820546480, -0.919390428659371040, -0.919370760199719530, -0.919351089441640790, +-0.919331416385184560, -0.919311741030399920, -0.919292063377335930, -0.919272383426041780, -0.919252701176566660, -0.919233016628959730, -0.919213329783270310, -0.919193640639547560, +-0.919173949197840680, -0.919154255458198620, -0.919134559420671240, -0.919114861085307490, -0.919095160452156560, -0.919075457521267740, -0.919055752292689990, -0.919036044766473160, +-0.919016334942666100, -0.918996622821318330, -0.918976908402479030, -0.918957191686197380, -0.918937472672522790, -0.918917751361504550, -0.918898027753191850, -0.918878301847634190, +-0.918858573644880330, -0.918838843144980430, -0.918819110347983470, -0.918799375253938620, -0.918779637862895400, -0.918759898174903110, -0.918740156190010590, -0.918720411908268140, +-0.918700665329724720, -0.918680916454429510, -0.918661165282432140, -0.918641411813781780, -0.918621656048527860, -0.918601897986719870, -0.918582137628407120, -0.918562374973638570, +-0.918542610022464620, -0.918522842774934010, -0.918503073231096370, -0.918483301391000980, -0.918463527254697380, -0.918443750822234620, -0.918423972093662780, -0.918404191069031040, +-0.918384407748388810, -0.918364622131785600, -0.918344834219270820, -0.918325044010893880, -0.918305251506704390, -0.918285456706751770, -0.918265659611085190, -0.918245860219754850, +-0.918226058532809700, -0.918206254550299580, -0.918186448272273690, -0.918166639698781760, -0.918146828829872860, -0.918127015665597180, -0.918107200206004110, -0.918087382451142850, +-0.918067562401063240, -0.918047740055814800, -0.918027915415446930, -0.918008088480009250, -0.917988259249551300, -0.917968427724122790, -0.917948593903772810, -0.917928757788551760, +-0.917908919378508830, -0.917889078673693510, -0.917869235674155570, -0.917849390379944170, -0.917829542791109620, -0.917809692907701200, -0.917789840729768550, -0.917769986257361390, +-0.917750129490529140, -0.917730270429321650, -0.917710409073788420, -0.917690545423979210, -0.917670679479943740, -0.917650811241731090, -0.917630940709391770, -0.917611067882975080, +-0.917591192762530760, -0.917571315348108430, -0.917551435639757940, -0.917531553637528360, -0.917511669341470330, -0.917491782751633010, -0.917471893868066380, -0.917452002690819950, +-0.917432109219943560, -0.917412213455486850, -0.917392315397499550, -0.917372415046031510, -0.917352512401132140, -0.917332607462851830, -0.917312700231239900, -0.917292790706346280, +-0.917272878888220730, -0.917252964776912980, -0.917233048372472440, -0.917213129674949610, -0.917193208684393910, -0.917173285400855300, -0.917153359824383400, -0.917133431955028170, +-0.917113501792839240, -0.917093569337866680, -0.917073634590160110, -0.917053697549769180, -0.917033758216744270, -0.917013816591135010, -0.916993872672991260, -0.916973926462362750, +-0.916953977959299450, -0.916934027163850860, -0.916914074076067620, -0.916894118695999130, -0.916874161023695340, -0.916854201059206120, -0.916834238802581410, -0.916814274253871190, +-0.916794307413125180, -0.916774338280393450, -0.916754366855725870, -0.916734393139172040, -0.916714417130782500, -0.916694438830606970, -0.916674458238695310, -0.916654475355097590, +-0.916634490179863310, -0.916614502713043120, -0.916594512954686640, -0.916574520904843930, -0.916554526563564950, -0.916534529930899570, -0.916514531006897950, -0.916494529791609950, +-0.916474526285085630, -0.916454520487374970, -0.916434512398527690, -0.916414502018594530, -0.916394489347625020, -0.916374474385669320, -0.916354457132777520, -0.916334437588999130, +-0.916314415754384990, -0.916294391628984850, -0.916274365212848770, -0.916254336506026720, -0.916234305508568880, -0.916214272220525210, -0.916194236641945880, -0.916174198772880980, +-0.916154158613380560, -0.916134116163494380, -0.916114071423273280, -0.916094024392766990, -0.916073975072025700, -0.916053923461099480, -0.916033869560038290, -0.916013813368892200, +-0.915993754887711950, -0.915973694116547280, -0.915953631055448360, -0.915933565704465380, -0.915913498063648520, -0.915893428133047860, -0.915873355912713680, -0.915853281402696060, +-0.915833204603044850, -0.915813125513811110, -0.915793044135044480, -0.915772960466795240, -0.915752874509113580, -0.915732786262049680, -0.915712695725653610, -0.915692602899976120, +-0.915672507785067040, -0.915652410380976670, -0.915632310687755410, -0.915612208705453230, -0.915592104434120650, -0.915571997873807720, -0.915551889024564860, -0.915531777886441910, +-0.915511664459489840, -0.915491548743758710, -0.915471430739298600, -0.915451310446159900, -0.915431187864393040, -0.915411062994047730, -0.915390935835175170, -0.915370806387825310, +-0.915350674652048340, -0.915330540627894760, -0.915310404315414770, -0.915290265714658880, -0.915270124825677270, -0.915249981648520340, -0.915229836183238390, -0.915209688429881600, +-0.915189538388500810, -0.915169386059146330, -0.915149231441868330, -0.915129074536717210, -0.915108915343743060, -0.915088753862997040, -0.915068590094529120, -0.915048424038389600, +-0.915028255694629200, -0.915008085063298000, -0.914987912144446750, -0.914967736938125610, -0.914947559444385110, -0.914927379663275750, -0.914907197594847620, -0.914887013239151890, +-0.914866826596238520, -0.914846637666158150, -0.914826446448961160, -0.914806252944698080, -0.914786057153418990, -0.914765859075175050, -0.914745658710016560, -0.914725456057993820, +-0.914705251119157570, -0.914685043893558090, -0.914664834381246130, -0.914644622582271970, -0.914624408496686250, -0.914604192124539140, -0.914583973465882050, -0.914563752520764830, +-0.914543529289238430, -0.914523303771353050, -0.914503075967159520, -0.914482845876707810, -0.914462613500049430, -0.914442378837234560, -0.914422141888313610, -0.914401902653337430, +-0.914381661132356420, -0.914361417325421310, -0.914341171232582630, -0.914320922853891100, -0.914300672189396810, -0.914280419239151150, -0.914260164003204530, -0.914239906481607580, +-0.914219646674410690, -0.914199384581664830, -0.914179120203420070, -0.914158853539727810, -0.914138584590638570, -0.914118313356202750, -0.914098039836471200, -0.914077764031494540, +-0.914057485941323410, -0.914037205566008650, -0.914016922905600880, -0.913996637960150740, -0.913976350729708730, -0.913956061214326150, -0.913935769414053410, -0.913915475328941240, +-0.913895178959040380, -0.913874880304401230, -0.913854579365075190, -0.913834276141112790, -0.913813970632564640, -0.913793662839481600, -0.913773352761914400, -0.913753040399913790, +-0.913732725753530590, -0.913712408822815680, -0.913692089607819560, -0.913671768108592960, -0.913651444325187300, -0.913631118257653090, -0.913610789906040940, -0.913590459270401940, +-0.913570126350786720, -0.913549791147245880, -0.913529453659830850, -0.913509113888592240, -0.913488771833580790, -0.913468427494847470, -0.913448080872443110, -0.913427731966418470, +-0.913407380776824480, -0.913387027303712130, -0.913366671547131800, -0.913346313507135240, -0.913325953183772740, -0.913305590577095480, -0.913285225687154200, -0.913264858513999860, +-0.913244489057682960, -0.913224117318255260, -0.913203743295767260, -0.913183366990269920, -0.913162988401814200, -0.913142607530450960, -0.913122224376231140, -0.913101838939205820, +-0.913081451219425850, -0.913061061216941970, -0.913040668931805800, -0.913020274364067850, -0.912999877513779310, -0.912979478380991140, -0.912959076965754180, -0.912938673268119170, +-0.912918267288137850, -0.912897859025860850, -0.912877448481339230, -0.912857035654623950, -0.912836620545766090, -0.912816203154816710, -0.912795783481826770, -0.912775361526847460, +-0.912754937289929620, -0.912734510771124220, -0.912714081970482760, -0.912693650888056210, -0.912673217523895520, -0.912652781878051770, -0.912632343950575690, -0.912611903741519130, +-0.912591461250932710, -0.912571016478867740, -0.912550569425375270, -0.912530120090506270, -0.912509668474312030, -0.912489214576843620, -0.912468758398152110, -0.912448299938288800, +-0.912427839197304300, -0.912407376175250700, -0.912386910872178490, -0.912366443288139100, -0.912345973423183580, -0.912325501277363120, -0.912305026850728560, -0.912284550143331760, +-0.912264071155223570, -0.912243589886455260, -0.912223106337078040, -0.912202620507142960, -0.912182132396701320, -0.912161642005804410, -0.912141149334503300, -0.912120654382849060, +-0.912100157150893430, -0.912079657638687480, -0.912059155846282390, -0.912038651773729450, -0.912018145421079840, -0.911997636788384410, -0.911977125875695350, -0.911956612683063490, +-0.911936097210540030, -0.911915579458176470, -0.911895059426023780, -0.911874537114133580, -0.911854012522556930, -0.911833485651345370, -0.911812956500549610, -0.911792425070221960, +-0.911771891360413140, -0.911751355371174580, -0.911730817102557660, -0.911710276554613670, -0.911689733727393700, -0.911669188620949700, -0.911648641235332850, -0.911628091570594210, +-0.911607539626785420, -0.911586985403957770, -0.911566428902162770, -0.911545870121451610, -0.911525309061875790, -0.911504745723486610, -0.911484180106335250, -0.911463612210473890, +-0.911443042035953390, -0.911422469582825360, -0.911401894851141090, -0.911381317840951780, -0.911360738552309590, -0.911340156985265380, -0.911319573139870890, -0.911298987016177510, +-0.911278398614236540, -0.911257807934099720, -0.911237214975818330, -0.911216619739443790, -0.911196022225027820, -0.911175422432621400, -0.911154820362276800, -0.911134216014045210, +-0.911113609387977920, -0.911093000484126670, -0.911072389302542970, -0.911051775843277900, -0.911031160106383740, -0.911010542091911790, -0.910989921799913340, -0.910969299230440120, +-0.910948674383543770, -0.910928047259275560, -0.910907417857687360, -0.910886786178830570, -0.910866152222756460, -0.910845515989517350, -0.910824877479164410, -0.910804236691749260, +-0.910783593627323530, -0.910762948285938840, -0.910742300667646390, -0.910721650772498670, -0.910700998600546650, -0.910680344151842290, -0.910659687426436990, -0.910639028424382380, +-0.910618367145730300, -0.910597703590532380, -0.910577037758840020, -0.910556369650704860, -0.910535699266179050, -0.910515026605314030, -0.910494351668161510, -0.910473674454773010, +-0.910452994965200380, -0.910432313199494800, -0.910411629157708900, -0.910390942839893860, -0.910370254246101520, -0.910349563376383510, -0.910328870230791680, -0.910308174809377530, +-0.910287477112193040, -0.910266777139289830, -0.910246074890719740, -0.910225370366534060, -0.910204663566785310, -0.910183954491524890, -0.910163243140804550, -0.910142529514676110, +-0.910121813613191000, -0.910101095436401720, -0.910080374984359790, -0.910059652257116820, -0.910038927254724790, -0.910018199977235430, -0.909997470424700470, -0.909976738597171870, +-0.909956004494701490, -0.909935268117341050, -0.909914529465142170, -0.909893788538157170, -0.909873045336437870, -0.909852299860035800, -0.909831552109003130, -0.909810802083391490, +-0.909790049783252510, -0.909769295208638700, -0.909748538359601680, -0.909727779236193410, -0.909707017838465640, -0.909686254166470310, -0.909665488220259280, -0.909644719999884610, +-0.909623949505398150, -0.909603176736851430, -0.909582401694297160, -0.909561624377786760, -0.909540844787372400, -0.909520062923105940, -0.909499278785039330, -0.909478492373224200, +-0.909457703687713060, -0.909436912728557760, -0.909416119495810140, -0.909395323989522280, -0.909374526209746130, -0.909353726156533540, -0.909332923829936690, -0.909312119230007540, +-0.909291312356797720, -0.909270503210360070, -0.909249691790746110, -0.909228878098007900, -0.909208062132197400, -0.909187243893366910, -0.909166423381567830, -0.909145600596853120, +-0.909124775539274400, -0.909103948208883740, -0.909083118605733210, -0.909062286729874880, -0.909041452581360820, -0.909020616160243100, -0.908999777466573900, -0.908978936500405290, +-0.908958093261788890, -0.908937247750777670, -0.908916399967423350, -0.908895549911777900, -0.908874697583893720, -0.908853842983822440, -0.908832986111616780, -0.908812126967328720, +-0.908791265551010420, -0.908770401862713850, -0.908749535902491300, -0.908728667670394950, -0.908707797166476980, -0.908686924390789460, -0.908666049343384570, -0.908645172024314270, +-0.908624292433631300, -0.908603410571387720, -0.908582526437635600, -0.908561640032427120, -0.908540751355814580, -0.908519860407849710, -0.908498967188585690, -0.908478071698074150, +-0.908457173936367490, -0.908436273903517890, -0.908415371599577530, -0.908394467024598810, -0.908373560178633910, -0.908352651061735130, -0.908331739673954310, -0.908310826015344520, +-0.908289910085957720, -0.908268991885846090, -0.908248071415061920, -0.908227148673657720, -0.908206223661685130, -0.908185296379197430, -0.908164366826246460, -0.908143435002884640, +-0.908122500909164240, -0.908101564545137460, -0.908080625910856920, -0.908059685006374680, -0.908038741831743380, -0.908017796387014740, -0.907996848672241950, -0.907975898687477190, +-0.907954946432772530, -0.907933991908180580, -0.907913035113753650, -0.907892076049543690, -0.907871114715604000, -0.907850151111986530, -0.907829185238743560, -0.907808217095927740, +-0.907787246683591340, -0.907766274001786890, -0.907745299050566670, -0.907724321829983190, -0.907703342340088980, -0.907682360580935990, -0.907661376552577500, -0.907640390255065600, +-0.907619401688452680, -0.907598410852791250, -0.907577417748133390, -0.907556422374532490, -0.907535424732040410, -0.907514424820709760, -0.907493422640593180, -0.907472418191742960, +-0.907451411474211600, -0.907430402488051850, -0.907409391233316100, -0.907388377710056760, -0.907367361918326120, -0.907346343858177580, -0.907325323529663110, -0.907304300932835210, +-0.907283276067746720, -0.907262248934449960, -0.907241219532997300, -0.907220187863441830, -0.907199153925835940, -0.907178117720232160, -0.907157079246683210, -0.907136038505241380, +-0.907114995495959530, -0.907093950218890170, -0.907072902674086020, -0.907051852861599170, -0.907030800781483020, -0.907009746433789950, -0.906988689818572500, -0.906967630935883280, +-0.906946569785775040, -0.906925506368299940, -0.906904440683511500, -0.906883372731461910, -0.906862302512204010, -0.906841230025790200, -0.906820155272273440, -0.906799078251706250, +-0.906777998964141350, -0.906756917409631380, -0.906735833588228850, -0.906714747499987040, -0.906693659144958470, -0.906672568523195670, -0.906651475634751460, -0.906630380479678480, +-0.906609283058029240, -0.906588183369857250, -0.906567081415214690, -0.906545977194154530, -0.906524870706729380, -0.906503761952991980, -0.906482650932995290, -0.906461537646791830, +-0.906440422094434650, -0.906419304275976390, -0.906398184191469450, -0.906377061840967560, -0.906355937224522900, -0.906334810342188430, -0.906313681194016900, -0.906292549780060800, +-0.906271416100373650, -0.906250280155008080, -0.906229141944016710, -0.906208001467452510, -0.906186858725368420, -0.906165713717817070, -0.906144566444851420, -0.906123416906524430, +-0.906102265102888830, -0.906081111033997240, -0.906059954699903190, -0.906038796100659290, -0.906017635236318400, -0.905996472106933460, -0.905975306712557330, -0.905954139053242510, +-0.905932969129042750, -0.905911796940010560, -0.905890622486198890, -0.905869445767660600, -0.905848266784448740, -0.905827085536616280, -0.905805902024216070, -0.905784716247301060, +-0.905763528205923870, -0.905742337900138250, -0.905721145329996810, -0.905699950495552520, -0.905678753396858330, -0.905657554033967300, -0.905636352406931970, -0.905615148515806160, +-0.905593942360642390, -0.905572733941493850, -0.905551523258413480, -0.905530310311454260, -0.905509095100669350, -0.905487877626111600, -0.905466657887834200, -0.905445435885889770, +-0.905424211620332150, -0.905402985091213970, -0.905381756298588410, -0.905360525242508320, -0.905339291923027090, -0.905318056340197130, -0.905296818494072400, -0.905275578384705630, +-0.905254336012150000, -0.905233091376458470, -0.905211844477684210, -0.905190595315880310, -0.905169343891099930, -0.905148090203396260, -0.905126834252822250, -0.905105576039430870, +-0.905084315563275950, -0.905063052824410130, -0.905041787822886800, -0.905020520558758920, -0.904999251032079450, -0.904977979242902130, -0.904956705191279910, -0.904935428877265860, +-0.904914150300913380, -0.904892869462275430, -0.904871586361405300, -0.904850300998356170, -0.904829013373181330, -0.904807723485933970, -0.904786431336666920, -0.904765136925434250, +-0.904743840252288600, -0.904722541317283470, -0.904701240120471930, -0.904679936661906830, -0.904658630941642340, -0.904637322959731320, -0.904616012716226940, -0.904594700211182600, +-0.904573385444651380, -0.904552068416686780, -0.904530749127341990, -0.904509427576670300, -0.904488103764725100, -0.904466777691559250, -0.904445449357226820, -0.904424118761780750, +-0.904402785905274450, -0.904381450787761110, -0.904360113409294230, -0.904338773769926550, -0.904317431869712470, -0.904296087708704730, -0.904274741286956730, -0.904253392604521980, +-0.904232041661453660, -0.904210688457805280, -0.904189332993630130, -0.904167975268981740, -0.904146615283912940, -0.904125253038478020, -0.904103888532729940, -0.904082521766722210, +-0.904061152740508130, -0.904039781454141210, -0.904018407907674400, -0.903997032101162000, -0.903975654034656960, -0.903954273708212800, -0.903932891121883020, -0.903911506275720920, +-0.903890119169780130, -0.903868729804114030, -0.903847338178776050, -0.903825944293819790, -0.903804548149298230, -0.903783149745265750, -0.903761749081775310, -0.903740346158880550, +-0.903718940976634970, -0.903697533535091630, -0.903676123834304730, -0.903654711874327670, -0.903633297655213720, -0.903611881177016630, -0.903590462439789800, -0.903569041443586740, +-0.903547618188461190, -0.903526192674466540, -0.903504764901656430, -0.903483334870083920, -0.903461902579803520, -0.903440468030868420, -0.903419031223332110, -0.903397592157248240, +-0.903376150832669980, -0.903354707249651720, -0.903333261408246770, -0.903311813308508630, -0.903290362950490920, -0.903268910334247280, -0.903247455459831430, -0.903225998327296890, +-0.903204538936697390, -0.903183077288086560, -0.903161613381517570, -0.903140147217045050, -0.903118678794722070, -0.903097208114602480, -0.903075735176739780, -0.903054259981187820, +-0.903032782527999680, -0.903011302817230080, -0.902989820848932200, -0.902968336623159900, -0.902946850139966560, -0.902925361399406160, -0.902903870401532420, -0.902882377146398960, +-0.902860881634059530, -0.902839383864567520, -0.902817883837977450, -0.902796381554342720, -0.902774877013716950, -0.902753370216154090, -0.902731861161707670, -0.902710349850431300, +-0.902688836282379500, -0.902667320457605560, -0.902645802376163210, -0.902624282038106520, -0.902602759443489000, -0.902581234592364610, -0.902559707484787200, -0.902538178120810500, +-0.902516646500487910, -0.902495112623874050, -0.902473576491022560, -0.902452038101987040, -0.902430497456821470, -0.902408954555579570, -0.902387409398314970, -0.902365861985082170, +-0.902344312315934820, -0.902322760390926630, -0.902301206210111560, -0.902279649773543470, -0.902258091081276190, -0.902236530133363690, -0.902214966929859920, -0.902193401470818720, +-0.902171833756293620, -0.902150263786339330, -0.902128691561009390, -0.902107117080357730, -0.902085540344438330, -0.902063961353304580, -0.902042380107011430, -0.902020796605612190, +-0.901999210849161010, -0.901977622837711880, -0.901956032571318620, -0.901934440050035310, -0.901912845273915910, -0.901891248243014370, -0.901869648957384640, -0.901848047417080580, +-0.901826443622156580, -0.901804837572666610, -0.901783229268664500, -0.901761618710204330, -0.901740005897340160, -0.901718390830125500, -0.901696773508615320, -0.901675153932863130, +-0.901653532102923090, -0.901631908018849290, -0.901610281680695680, -0.901588653088516320, -0.901567022242365400, -0.901545389142296870, -0.901523753788364470, -0.901502116180623150, +-0.901480476319126420, -0.901458834203928580, -0.901437189835083700, -0.901415543212645720, -0.901393894336668610, -0.901372243207207100, -0.901350589824314930, -0.901328934188046380, +-0.901307276298455420, -0.901285616155596330, -0.901263953759523170, -0.901242289110290140, -0.901220622207951410, -0.901198953052560700, -0.901177281644172990, -0.901155607982842110, +-0.901133932068622250, -0.901112253901567460, -0.901090573481732050, -0.901068890809169850, -0.901047205883935830, -0.901025518706083720, -0.901003829275667910, -0.900982137592742480, +-0.900960443657361720, -0.900938747469579800, -0.900917049029451130, -0.900895348337029780, -0.900873645392370030, -0.900851940195525720, -0.900830232746552050, -0.900808523045502740, +-0.900786811092432190, -0.900765096887394590, -0.900743380430443770, -0.900721661721635040, -0.900699940761022110, -0.900678217548659290, -0.900656492084600860, -0.900634764368901330, +-0.900613034401614780, -0.900591302182795710, -0.900569567712498410, -0.900547830990777070, -0.900526092017685850, -0.900504350793279840, -0.900482607317612870, -0.900460861590739460, +-0.900439113612713780, -0.900417363383590460, -0.900395610903423240, -0.900373856172267390, -0.900352099190176890, -0.900330339957206240, -0.900308578473409620, -0.900286814738841650, +-0.900265048753556620, -0.900243280517608930, -0.900221510031053000, -0.900199737293942980, -0.900177962306334070, -0.900156185068280100, -0.900134405579835820, -0.900112623841055390, +-0.900090839851993450, -0.900069053612704060, -0.900047265123242400, -0.900025474383662540, -0.900003681394019090, -0.899981886154366360, -0.899960088664758960, -0.899938288925251300, +-0.899916486935897870, -0.899894682696753320, -0.899872876207871600, -0.899851067469308210, -0.899829256481117000, -0.899807443243352710, -0.899785627756069850, -0.899763810019322820, +-0.899741990033166020, -0.899720167797654510, -0.899698343312842600, -0.899676516578784890, -0.899654687595535800, -0.899632856363150050, -0.899611022881682150, -0.899589187151186740, +-0.899567349171718320, -0.899545508943331520, -0.899523666466080620, -0.899501821740020800, -0.899479974765206580, -0.899458125541692350, -0.899436274069532750, -0.899414420348782160, +-0.899392564379495880, -0.899370706161728210, -0.899348845695533860, -0.899326982980967250, -0.899305118018083220, -0.899283250806936390, -0.899261381347581490, -0.899239509640073150, +-0.899217635684465890, -0.899195759480814320, -0.899173881029173620, -0.899152000329598300, -0.899130117382142990, -0.899108232186862310, -0.899086344743811110, -0.899064455053043550, +-0.899042563114615390, -0.899020668928580790, -0.898998772494994490, -0.898976873813911230, -0.898954972885385840, -0.898933069709472950, -0.898911164286227420, -0.898889256615703960, +-0.898867346697957090, -0.898845434533042110, -0.898823520121013520, -0.898801603461926280, -0.898779684555834900, -0.898757763402794340, -0.898735840002859000, -0.898713914356084500, +-0.898691986462525130, -0.898670056322235840, -0.898648123935271380, -0.898626189301686700, -0.898604252421536410, -0.898582313294875590, -0.898560371921758970, -0.898538428302240950, +-0.898516482436377270, -0.898494534324222440, -0.898472583965831300, -0.898450631361258690, -0.898428676510559470, -0.898406719413788140, -0.898384760071000430, -0.898362798482250870, +-0.898340834647594180, -0.898318868567085540, -0.898296900240779680, -0.898274929668731570, -0.898252956850996150, -0.898230981787628280, -0.898209004478683020, -0.898187024924214870, +-0.898165043124279470, -0.898143059078931550, -0.898121072788225950, -0.898099084252217630, -0.898077093470961320, -0.898055100444512530, -0.898033105172926120, -0.898011107656256800, +-0.897989107894559770, -0.897967105887890080, -0.897945101636302480, -0.897923095139852250, -0.897901086398594120, -0.897879075412583380, -0.897857062181874550, -0.897835046706523480, +-0.897813028986584770, -0.897791009022113510, -0.897768986813164640, -0.897746962359793450, -0.897724935662054360, -0.897702906720003300, -0.897680875533695020, -0.897658842103184580, +-0.897636806428526950, -0.897614768509777390, -0.897592728346990890, -0.897570685940222600, -0.897548641289527490, -0.897526594394960520, -0.897504545256577300, -0.897482493874432800, +-0.897460440248582070, -0.897438384379080300, -0.897416326265982440, -0.897394265909343460, -0.897372203309219190, -0.897350138465664470, -0.897328071378734270, -0.897306002048483990, +-0.897283930474968680, -0.897261856658243540, -0.897239780598363850, -0.897217702295384560, -0.897195621749360740, -0.897173538960348130, -0.897151453928401790, -0.897129366653576790, +-0.897107277135928300, -0.897085185375511740, -0.897063091372381720, -0.897040995126594410, -0.897018896638204670, -0.896996795907267550, -0.896974692933838580, -0.896952587717972820, +-0.896930480259725550, -0.896908370559152070, -0.896886258616307770, -0.896864144431247730, -0.896842028004027010, -0.896819909334701570, -0.896797788423326360, -0.896775665269956670, +-0.896753539874647790, -0.896731412237454670, -0.896709282358433500, -0.896687150237639120, -0.896665015875126810, -0.896642879270951880, -0.896620740425169930, -0.896598599337836030, +-0.896576456009005600, -0.896554310438734130, -0.896532162627076800, -0.896510012574088690, -0.896487860279825970, -0.896465705744343590, -0.896443548967696850, -0.896421389949941360, +-0.896399228691132420, -0.896377065191324870, -0.896354899450575230, -0.896332731468938220, -0.896310561246469350, -0.896288388783224140, -0.896266214079257990, -0.896244037134626300, +-0.896221857949384470, -0.896199676523588010, -0.896177492857291980, -0.896155306950552570, -0.896133118803424940, -0.896110928415964510, -0.896088735788226680, -0.896066540920267160, +-0.896044343812140820, -0.896022144463903940, -0.895999942875611800, -0.895977739047319810, -0.895955532979083370, -0.895933324670958210, -0.895911114122999620, -0.895888901335263330, +-0.895866686307804750, -0.895844469040679160, -0.895822249533942740, -0.895800027787650550, -0.895777803801858450, -0.895755577576621830, -0.895733349111996200, -0.895711118408036850, +-0.895688885464800080, -0.895666650282341160, -0.895644412860715500, -0.895622173199978940, -0.895599931300186890, -0.895577687161394960, -0.895555440783658900, -0.895533192167034200, +-0.895510941311576490, -0.895488688217341070, -0.895466432884384320, -0.895444175312761440, -0.895421915502528140, -0.895399653453740060, -0.895377389166452490, -0.895355122640721810, +-0.895332853876603330, -0.895310582874152770, -0.895288309633425650, -0.895266034154477810, -0.895243756437364870, -0.895221476482142560, -0.895199194288866520, -0.895176909857592570, +-0.895154623188375910, -0.895132334281273030, -0.895110043136339350, -0.895087749753630590, -0.895065454133202490, -0.895043156275110660, -0.895020856179410630, -0.894998553846158780, +-0.894976249275410640, -0.894953942467221820, -0.894931633421648160, -0.894909322138745410, -0.894887008618569290, -0.894864692861175760, -0.894842374866620440, -0.894820054634958840, +-0.894797732166247360, -0.894775407460541740, -0.894753080517897480, -0.894730751338370540, -0.894708419922016770, -0.894686086268891460, -0.894663750379051440, -0.894641412252551890, +-0.894619071889449000, -0.894596729289798280, -0.894574384453655780, -0.894552037381077360, -0.894529688072118860, -0.894507336526836120, -0.894484982745284540, -0.894462626727520970, +-0.894440268473600920, -0.894417907983580120, -0.894395545257514520, -0.894373180295460090, -0.894350813097472330, -0.894328443663607970, -0.894306071993922420, -0.894283698088471750, +-0.894261321947311780, -0.894238943570498600, -0.894216562958087930, -0.894194180110135960, -0.894171795026698520, -0.894149407707831580, -0.894127018153590640, -0.894104626364032650, +-0.894082232339213020, -0.894059836079187930, -0.894037437584013220, -0.894015036853744390, -0.893992633888438530, -0.893970228688151010, -0.893947821252937920, -0.893925411582855320, +-0.893902999677959050, -0.893880585538305410, -0.893858169163950330, -0.893835750554949790, -0.893813329711359850, -0.893790906633236130, -0.893768481320635690, -0.893746053773613940, +-0.893723623992227050, -0.893701191976531200, -0.893678757726582340, -0.893656321242436100, -0.893633882524149550, -0.893611441571778190, -0.893588998385378310, -0.893566552965005870, +-0.893544105310717150, -0.893521655422568120, -0.893499203300614940, -0.893476748944913690, -0.893454292355520320, -0.893431833532491450, -0.893409372475883150, -0.893386909185751370, +-0.893364443662152290, -0.893341975905142080, -0.893319505914776490, -0.893297033691112690, -0.893274559234206180, -0.893252082544113370, -0.893229603620890210, -0.893207122464593220, +-0.893184639075278230, -0.893162153453001760, -0.893139665597819880, -0.893117175509788530, -0.893094683188964570, -0.893072188635403830, -0.893049691849162720, -0.893027192830297300, +-0.893004691578863970, -0.892982188094918470, -0.892959682378517860, -0.892937174429718090, -0.892914664248575460, -0.892892151835146030, -0.892869637189486310, -0.892847120311652480, +-0.892824601201700930, -0.892802079859687740, -0.892779556285669410, -0.892757030479701790, -0.892734502441842050, -0.892711972172145930, -0.892689439670669940, -0.892666904937470360, +-0.892644367972603160, -0.892621828776125390, -0.892599287348093020, -0.892576743688562440, -0.892554197797590040, -0.892531649675232130, -0.892509099321545100, -0.892486546736585340, +-0.892463991920409260, -0.892441434873073040, -0.892418875594632950, -0.892396314085146080, -0.892373750344668370, -0.892351184373256330, -0.892328616170966260, -0.892306045737854770, +-0.892283473073977710, -0.892260898179392360, -0.892238321054154680, -0.892215741698321300, -0.892193160111948600, -0.892170576295092890, -0.892147990247810770, -0.892125401970158770, +-0.892102811462193170, -0.892080218723970140, -0.892057623755546980, -0.892035026556979750, -0.892012427128325070, -0.891989825469639230, -0.891967221580978740, -0.891944615462399890, +-0.891922007113959970, -0.891899396535714930, -0.891876783727721390, -0.891854168690035980, -0.891831551422715090, -0.891808931925815230, -0.891786310199393140, -0.891763686243505330, +-0.891741060058207860, -0.891718431643558130, -0.891695800999612320, -0.891673168126426940, -0.891650533024058720, -0.891627895692564180, -0.891605256131999480, -0.891582614342422030, +-0.891559970323888010, -0.891537324076454140, -0.891514675600176940, -0.891492024895113030, -0.891469371961319030, -0.891446716798851680, -0.891424059407767480, -0.891401399788123160, +-0.891378737939974910, -0.891356073863380230, -0.891333407558395410, -0.891310739025076960, -0.891288068263481730, -0.891265395273665990, -0.891242720055687050, -0.891220042609601410, +-0.891197362935465590, -0.891174681033336410, -0.891151996903270520, -0.891129310545324630, -0.891106621959555480, -0.891083931146019690, -0.891061238104774110, -0.891038542835875140, +-0.891015845339380160, -0.890993145615345480, -0.890970443663828050, -0.890947739484884480, -0.890925033078571070, -0.890902324444945550, -0.890879613584064200, -0.890856900495983870, +-0.890834185180761300, -0.890811467638453200, -0.890788747869116440, -0.890766025872807840, -0.890743301649584150, -0.890720575199502210, -0.890697846522618520, -0.890675115618990490, +-0.890652382488674730, -0.890629647131727990, -0.890606909548207200, -0.890584169738169010, -0.890561427701670130, -0.890538683438767960, -0.890515936949519140, -0.890493188233980490, +-0.890470437292208870, -0.890447684124261120, -0.890424928730194190, -0.890402171110064920, -0.890379411263930280, -0.890356649191846650, -0.890333884893871890, -0.890311118370062270, +-0.890288349620474980, -0.890265578645166760, -0.890242805444194540, -0.890220030017614960, -0.890197252365485750, -0.890174472487863410, -0.890151690384804790, -0.890128906056367080, +-0.890106119502606980, -0.890083330723581590, -0.890060539719347950, -0.890037746489962920, -0.890014951035483120, -0.889992153355966380, -0.889969353451469210, -0.889946551322048700, +-0.889923746967761780, -0.889900940388665520, -0.889878131584816430, -0.889855320556272590, -0.889832507303090270, -0.889809691825326770, -0.889786874123039030, -0.889764054196284020, +-0.889741232045119010, -0.889718407669600860, -0.889695581069786630, -0.889672752245733500, -0.889649921197498080, -0.889627087925138340, -0.889604252428710770, -0.889581414708272680, +-0.889558574763881000, -0.889535732595592380, -0.889512888203464970, -0.889490041587555290, -0.889467192747920520, -0.889444341684617720, -0.889421488397704070, -0.889398632887236750, +-0.889375775153272820, -0.889352915195869560, -0.889330053015083830, -0.889307188610972690, -0.889284321983593970, -0.889261453133004420, -0.889238582059261210, -0.889215708762421510, +-0.889192833242542610, -0.889169955499681250, -0.889147075533895380, -0.889124193345241840, -0.889101308933777700, -0.889078422299560360, -0.889055533442647090, -0.889032642363094870, +-0.889009749060960970, -0.888986853536302800, -0.888963955789177080, -0.888941055819641890, -0.888918153627754060, -0.888895249213570770, -0.888872342577149420, -0.888849433718547190, +-0.888826522637821030, -0.888803609335028890, -0.888780693810227730, -0.888757776063474950, -0.888734856094827610, -0.888711933904343110, -0.888689009492078850, -0.888666082858092120, +-0.888643154002440090, -0.888620222925179730, -0.888597289626369300, -0.888574354106065670, -0.888551416364326110, -0.888528476401208020, -0.888505534216768700, -0.888482589811065200, +-0.888459643184155600, -0.888436694336096840, -0.888413743266946440, -0.888390789976761690, -0.888367834465599860, -0.888344876733518580, -0.888321916780575040, -0.888298954606826620, +-0.888275990212330950, -0.888253023597144860, -0.888230054761326550, -0.888207083704933180, -0.888184110428022030, -0.888161134930650630, -0.888138157212876030, -0.888115177274756420, +-0.888092195116348960, -0.888069210737710830, -0.888046224138899780, -0.888023235319973180, -0.888000244280988450, -0.887977251022003090, -0.887954255543074720, -0.887931257844260640, +-0.887908257925618010, -0.887885255787205120, -0.887862251429079040, -0.887839244851297390, -0.887816236053917680, -0.887793225036997310, -0.887770211800593460, -0.887747196344764620, +-0.887724178669567650, -0.887701158775060280, -0.887678136661300020, -0.887655112328344380, -0.887632085776250970, -0.887609057005077420, -0.887586026014881120, -0.887562992805719380, +-0.887539957377650680, -0.887516919730731990, -0.887493879865020930, -0.887470837780575230, -0.887447793477452510, -0.887424746955709830, -0.887401698215405710, -0.887378647256597320, +-0.887355594079342280, -0.887332538683698320, -0.887309481069723070, -0.887286421237474030, -0.887263359187008940, -0.887240294918385410, -0.887217228431660840, -0.887194159726893530, +-0.887171088804140860, -0.887148015663460470, -0.887124940304910070, -0.887101862728547190, -0.887078782934429320, -0.887055700922614990, -0.887032616693161360, -0.887009530246126050, +-0.886986441581567140, -0.886963350699542020, -0.886940257600108420, -0.886917162283324290, -0.886894064749247260, -0.886870964997935050, -0.886847863029444960, -0.886824758843835710, +-0.886801652441164600, -0.886778543821489240, -0.886755432984867590, -0.886732319931356930, -0.886709204661015880, -0.886686087173901850, -0.886662967470072560, -0.886639845549585860, +-0.886616721412499480, -0.886593595058871360, -0.886570466488759260, -0.886547335702221000, -0.886524202699314420, -0.886501067480096940, -0.886477930044627160, -0.886454790392962490, +-0.886431648525160990, -0.886408504441280280, -0.886385358141378310, -0.886362209625512490, -0.886339058893741650, -0.886315905946123080, -0.886292750782714860, -0.886269593403574700, +-0.886246433808760560, -0.886223271998330290, -0.886200107972341830, -0.886176941730853150, -0.886153773273921750, -0.886130602601606250, -0.886107429713964280, -0.886084254611053780, +-0.886061077292932600, -0.886037897759658690, -0.886014716011289670, -0.885991532047884170, -0.885968345869500020, -0.885945157476194840, -0.885921966868026930, -0.885898774045054020, +-0.885875579007334160, -0.885852381754925310, -0.885829182287885540, -0.885805980606272470, -0.885782776710144830, -0.885759570599560230, -0.885736362274576640, -0.885713151735252220, +-0.885689938981644940, -0.885666724013812300, -0.885643506831813370, -0.885620287435705640, -0.885597065825547200, -0.885573842001396110, -0.885550615963310420, -0.885527387711348090, +-0.885504157245567410, -0.885480924566026230, -0.885457689672782820, -0.885434452565894810, -0.885411213245420940, -0.885387971711419140, -0.885364727963947380, -0.885341482003063840, +-0.885318233828826130, -0.885294983441293310, -0.885271730840523020, -0.885248476026573310, -0.885225218999502570, -0.885201959759368660, -0.885178698306229860, -0.885155434640144350, +-0.885132168761170290, -0.885108900669365760, -0.885085630364788490, -0.885062357847497650, -0.885039083117550970, -0.885015806175006410, -0.884992527019922480, -0.884969245652357240, +-0.884945962072368420, -0.884922676280015090, -0.884899388275355080, -0.884876098058446580, -0.884852805629347870, -0.884829510988117240, -0.884806214134812640, -0.884782915069492690, +-0.884759613792215350, -0.884736310303038560, -0.884713004602021400, -0.884689696689221820, -0.884666386564697870, -0.884643074228508080, -0.884619759680710490, -0.884596442921363190, +-0.884573123950525120, -0.884549802768254230, -0.884526479374608930, -0.884503153769647280, -0.884479825953427890, -0.884456495926008830, -0.884433163687448620, -0.884409829237805530, +-0.884386492577137310, -0.884363153705503340, -0.884339812622961570, -0.884316469329570200, -0.884293123825387610, -0.884269776110472310, -0.884246426184882030, -0.884223074048676170, +-0.884199719701912690, -0.884176363144649870, -0.884153004376946110, -0.884129643398859800, -0.884106280210449460, -0.884082914811773370, -0.884059547202890040, -0.884036177383857760, +-0.884012805354734700, -0.883989431115580040, -0.883966054666451840, -0.883942676007408390, -0.883919295138508310, -0.883895912059809550, -0.883872526771371510, -0.883849139273252040, +-0.883825749565509860, -0.883802357648203140, -0.883778963521390630, -0.883755567185130710, -0.883732168639481900, -0.883708767884502590, -0.883685364920251400, -0.883661959746786410, +-0.883638552364166880, -0.883615142772451010, -0.883591730971697190, -0.883568316961964140, -0.883544900743310270, -0.883521482315793750, -0.883498061679473980, -0.883474638834409020, +-0.883451213780657390, -0.883427786518277800, -0.883404357047328780, -0.883380925367868720, -0.883357491479956460, -0.883334055383650510, -0.883310617079008930, -0.883287176566091240, +-0.883263733844955600, -0.883240288915660640, -0.883216841778264980, -0.883193392432827240, -0.883169940879405480, -0.883146487118059430, -0.883123031148847050, -0.883099572971827170, +-0.883076112587058320, -0.883052649994599200, -0.883029185194508460, -0.883005718186844700, -0.882982248971666770, -0.882958777549032740, -0.882935303919002100, -0.882911828081633270, +-0.882888350036984850, -0.882864869785115580, -0.882841387326084190, -0.882817902659948860, -0.882794415786769200, -0.882770926706603400, -0.882747435419510400, -0.882723941925548820, +-0.882700446224777390, -0.882676948317254740, -0.882653448203039810, -0.882629945882191240, -0.882606441354767730, -0.882582934620827820, -0.882559425680430890, -0.882535914533635450, +-0.882512401180500230, -0.882488885621084070, -0.882465367855445160, -0.882441847883643330, -0.882418325705736860, -0.882394801321784490, -0.882371274731845180, -0.882347745935977760, +-0.882324214934240850, -0.882300681726693510, -0.882277146313394380, -0.882253608694402500, -0.882230068869776060, -0.882206526839574900, -0.882182982603857410, -0.882159436162682550, +-0.882135887516109050, -0.882112336664195750, -0.882088783607001270, -0.882065228344585230, -0.882041670877006130, -0.882018111204322830, -0.881994549326594270, -0.881970985243879400, +-0.881947418956236960, -0.881923850463726010, -0.881900279766405500, -0.881876706864333840, -0.881853131757570740, -0.881829554446174950, -0.881805974930205180, -0.881782393209720520, +-0.881758809284779900, -0.881735223155441730, -0.881711634821765950, -0.881688044283811200, -0.881664451541636200, -0.881640856595300230, -0.881617259444861910, -0.881593660090380650, +-0.881570058531915060, -0.881546454769524420, -0.881522848803267260, -0.881499240633203280, -0.881475630259391350, -0.881452017681890190, -0.881428402900759080, -0.881404785916056980, +-0.881381166727842390, -0.881357545336175390, -0.881333921741114580, -0.881310295942718810, -0.881286667941047370, -0.881263037736159330, -0.881239405328113620, -0.881215770716969440, +-0.881192133902785830, -0.881168494885621880, -0.881144853665536190, -0.881121210242588940, -0.881097564616838520, -0.881073916788344240, -0.881050266757165250, -0.881026614523360060, +-0.881002960086988860, -0.880979303448110150, -0.880955644606783220, -0.880931983563067230, -0.880908320317021150, -0.880884654868704380, -0.880860987218175960, -0.880837317365495090, +-0.880813645310720930, -0.880789971053912210, -0.880766294595129010, -0.880742615934430040, -0.880718935071874490, -0.880695252007521630, -0.880671566741430660, -0.880647879273660390, +-0.880624189604270800, -0.880600497733320720, -0.880576803660869430, -0.880553107386976120, -0.880529408911700060, -0.880505708235100440, -0.880482005357236530, -0.880458300278167740, +-0.880434592997952680, -0.880410883516651530, -0.880387171834323250, -0.880363457951027000, -0.880339741866822070, -0.880316023581767860, -0.880292303095923100, -0.880268580409347970, +-0.880244855522101520, -0.880221128434242830, -0.880197399145831390, -0.880173667656926400, -0.880149933967587230, -0.880126198077873290, -0.880102459987843750, -0.880078719697557800, +-0.880054977207075370, -0.880031232516455430, -0.880007485625757590, -0.879983736535040920, -0.879959985244364920, -0.879936231753788540, -0.879912476063371970, -0.879888718173174270, +-0.879864958083254710, -0.879841195793672810, -0.879817431304487860, -0.879793664615759360, -0.879769895727546710, -0.879746124639909420, -0.879722351352906660, -0.879698575866597720, +-0.879674798181042660, -0.879651018296300660, -0.879627236212431110, -0.879603451929493520, -0.879579665447546730, -0.879555876766651370, -0.879532085886866270, -0.879508292808250820, +-0.879484497530864770, -0.879460700054767510, -0.879436900380018430, -0.879413098506677150, -0.879389294434803070, -0.879365488164455700, -0.879341679695694320, -0.879317869028579110, +-0.879294056163169140, -0.879270241099524120, -0.879246423837703570, -0.879222604377766780, -0.879198782719773250, -0.879174958863783050, -0.879151132809855460, -0.879127304558050100, +-0.879103474108426490, -0.879079641461044110, -0.879055806615962720, -0.879031969573241700, -0.879008130332940900, -0.878984288895119260, -0.878960445259837300, -0.878936599427154300, +-0.878912751397129770, -0.878888901169823320, -0.878865048745294700, -0.878841194123602950, -0.878817337304808710, -0.878793478288971140, -0.878769617076149760, -0.878745753666404510, +-0.878721888059794680, -0.878698020256380220, -0.878674150256220750, -0.878650278059375900, -0.878626403665904940, -0.878602527075868280, -0.878578648289325410, -0.878554767306335860, +-0.878530884126959450, -0.878506998751255820, -0.878483111179284240, -0.878459221411105330, -0.878435329446778380, -0.878411435286363120, -0.878387538929919160, -0.878363640377506470, +-0.878339739629184660, -0.878315836685013450, -0.878291931545052700, -0.878268024209362010, -0.878244114678001010, -0.878220202951029980, -0.878196289028508550, -0.878172372910496430, +-0.878148454597053260, -0.878124534088238650, -0.878100611384112990, -0.878076686484735910, -0.878052759390167140, -0.878028830100466400, -0.878004898615693640, -0.877980964935908600, +-0.877957029061171120, -0.877933090991541040, -0.877909150727078310, -0.877885208267842330, -0.877861263613893610, -0.877837316765291860, -0.877813367722096730, -0.877789416484368260, +-0.877765463052165740, -0.877741507425550020, -0.877717549604580590, -0.877693589589317200, -0.877669627379819910, -0.877645662976148430, -0.877621696378362850, -0.877597727586523100, +-0.877573756600689040, -0.877549783420920490, -0.877525808047277090, -0.877501830479819670, -0.877477850718607620, -0.877453868763700910, -0.877429884615159580, -0.877405898273043490, +-0.877381909737412150, -0.877357919008326600, -0.877333926085846260, -0.877309930970031070, -0.877285933660940990, -0.877261934158636180, -0.877237932463176500, -0.877213928574621990, +-0.877189922493032630, -0.877165914218468010, -0.877141903750989100, -0.877117891090655410, -0.877093876237526990, -0.877069859191663910, -0.877045839953126130, -0.877021818521973360, +-0.876997794898266460, -0.876973769082065040, -0.876949741073429160, -0.876925710872419000, -0.876901678479094620, -0.876877643893515970, -0.876853607115743230, -0.876829568145836460, +-0.876805526983855720, -0.876781483629860860, -0.876757438083912600, -0.876733390346070780, -0.876709340416395480, -0.876685288294946850, -0.876661233981784640, -0.876637177476969680, +-0.876613118780561810, -0.876589057892621090, -0.876564994813207820, -0.876540929542382050, -0.876516862080203850, -0.876492792426733610, -0.876468720582031290, -0.876444646546157280, +-0.876420570319171200, -0.876396491901134000, -0.876372411292105640, -0.876348328492146390, -0.876324243501316100, -0.876300156319674950, -0.876276066947283770, -0.876251975384202410, +-0.876227881630491150, -0.876203785686210160, -0.876179687551419620, -0.876155587226180030, -0.876131484710551360, -0.876107380004593980, -0.876083273108368200, -0.876059164021933730, +-0.876035052745351870, -0.876010939278682340, -0.875986823621985430, -0.875962705775321540, -0.875938585738750830, -0.875914463512333260, -0.875890339096129900, -0.875866212490200690, +-0.875842083694606030, -0.875817952709406100, -0.875793819534661290, -0.875769684170431990, -0.875745546616778500, -0.875721406873761100, -0.875697264941439730, -0.875673120819875580, +-0.875648974509128710, -0.875624826009259390, -0.875600675320328040, -0.875576522442394920, -0.875552367375520110, -0.875528210119764780, -0.875504050675188990, -0.875479889041853030, +-0.875455725219817290, -0.875431559209142400, -0.875407391009888510, -0.875383220622116040, -0.875359048045885710, -0.875334873281257250, -0.875310696328291950, -0.875286517187050080, +-0.875262335857591830, -0.875238152339977700, -0.875213966634268200, -0.875189778740523390, -0.875165588658804560, -0.875141396389171770, -0.875117201931685520, -0.875093005286406210, +-0.875068806453394350, -0.875044605432710560, -0.875020402224415240, -0.874996196828568880, -0.874971989245232010, -0.874947779474464780, -0.874923567516328490, -0.874899353370883310, +-0.874875137038189750, -0.874850918518308430, -0.874826697811299290, -0.874802474917223850, -0.874778249836142160, -0.874754022568114960, -0.874729793113202650, -0.874705561471465830, +-0.874681327642965130, -0.874657091627761170, -0.874632853425914350, -0.874608613037485490, -0.874584370462534680, -0.874560125701123400, -0.874535878753311740, -0.874511629619160290, +-0.874487378298729910, -0.874463124792081100, -0.874438869099273930, -0.874414611220370120, -0.874390351155429730, -0.874366088904513510, -0.874341824467682050, -0.874317557844995990, +-0.874293289036516040, -0.874269018042302950, -0.874244744862417210, -0.874220469496919230, -0.874196191945870500, -0.874171912209331330, -0.874147630287362310, -0.874123346180024300, +-0.874099059887377790, -0.874074771409483310, -0.874050480746402350, -0.874026187898195080, -0.874001892864922470, -0.873977595646645010, -0.873953296243423660, -0.873928994655319040, +-0.873904690882391870, -0.873880384924702990, -0.873856076782312810, -0.873831766455282820, -0.873807453943673320, -0.873783139247545250, -0.873758822366959450, -0.873734503301976440, +-0.873710182052656830, -0.873685858619062120, -0.873661533001252820, -0.873637205199289670, -0.873612875213233500, -0.873588543043145150, -0.873564208689085460, -0.873539872151115280, +-0.873515533429295330, -0.873491192523686570, -0.873466849434349380, -0.873442504161345610, -0.873418156704735550, -0.873393807064580030, -0.873369455240940010, -0.873345101233875880, +-0.873320745043449480, -0.873296386669721310, -0.873272026112752010, -0.873247663372602730, -0.873223298449334330, -0.873198931343007630, -0.873174562053683600, -0.873150190581423070, +-0.873125816926287210, -0.873101441088336320, -0.873077063067632330, -0.873052682864235540, -0.873028300478207120, -0.873003915909608020, -0.872979529158499080, -0.872955140224940810, +-0.872930749108995260, -0.872906355810722730, -0.872881960330184280, -0.872857562667441080, -0.872833162822553850, -0.872808760795583780, -0.872784356586591700, -0.872759950195638790, +-0.872735541622785660, -0.872711130868094040, -0.872686717931624560, -0.872662302813438260, -0.872637885513596330, -0.872613466032159610, -0.872589044369188830, -0.872564620524745820, +-0.872540194498891310, -0.872515766291686260, -0.872491335903191830, -0.872466903333468990, -0.872442468582579010, -0.872418031650582740, -0.872393592537541450, -0.872369151243515770, +-0.872344707768567650, -0.872320262112757700, -0.872295814276147110, -0.872271364258797030, -0.872246912060768540, -0.872222457682122250, -0.872198001122920340, -0.872173542383223420, +-0.872149081463092560, -0.872124618362589140, -0.872100153081774130, -0.872075685620708580, -0.872051215979454010, -0.872026744158071350, -0.872002270156621790, -0.871977793975166170, +-0.871953315613766430, -0.871928835072483420, -0.871904352351378310, -0.871879867450512380, -0.871855380369946360, -0.871830891109742210, -0.871806399669960990, -0.871781906050663640, +-0.871757410251911560, -0.871732912273766040, -0.871708412116288130, -0.871683909779539250, -0.871659405263580540, -0.871634898568473430, -0.871610389694278510, -0.871585878641058080, +-0.871561365408872970, -0.871536849997784470, -0.871512332407853860, -0.871487812639142320, -0.871463290691710910, -0.871438766565621690, -0.871414240260935610, -0.871389711777713850, +-0.871365181116017800, -0.871340648275908850, -0.871316113257448180, -0.871291576060697290, -0.871267036685717480, -0.871242495132569680, -0.871217951401315970, -0.871193405492017510, +-0.871168857404735490, -0.871144307139531280, -0.871119754696466300, -0.871095200075601590, -0.871070643276999230, -0.871046084300720280, -0.871021523146826130, -0.870996959815378170, +-0.870972394306437800, -0.870947826620066420, -0.870923256756325540, -0.870898684715276540, -0.870874110496980270, -0.870849534101499230, -0.870824955528894380, -0.870800374779227120, +-0.870775791852558930, -0.870751206748951230, -0.870726619468465080, -0.870702030011162860, -0.870677438377105540, -0.870652844566354610, -0.870628248578971590, -0.870603650415017970, +-0.870579050074555270, -0.870554447557644770, -0.870529842864348310, -0.870505235994727180, -0.870480626948842540, -0.870456015726756790, -0.870431402328530890, -0.870406786754226670, +-0.870382169003905300, -0.870357549077628190, -0.870332926975457610, -0.870308302697454740, -0.870283676243681080, -0.870259047614198140, -0.870234416809067770, -0.870209783828351240, +-0.870185148672110280, -0.870160511340406400, -0.870135871833301320, -0.870111230150856120, -0.870086586293133180, -0.870061940260193900, -0.870037292052099680, -0.870012641668912350, +-0.869987989110693300, -0.869963334377503840, -0.869938677469406560, -0.869914018386462540, -0.869889357128733390, -0.869864693696280940, -0.869840028089166830, -0.869815360307452550, +-0.869790690351199820, -0.869766018220470500, -0.869741343915325650, -0.869716667435827870, -0.869691988782038350, -0.869667307954018920, -0.869642624951831200, -0.869617939775537030, +-0.869593252425197470, -0.869568562900875140, -0.869543871202631550, -0.869519177330528190, -0.869494481284626920, -0.869469783064989450, -0.869445082671677530, -0.869420380104752980, +-0.869395675364277310, -0.869370968450312140, -0.869346259362919980, -0.869321548102162110, -0.869296834668100370, -0.869272119060796600, -0.869247401280312530, -0.869222681326709430, +-0.869197959200050160, -0.869173234900396000, -0.869148508427808660, -0.869123779782350110, -0.869099048964082190, -0.869074315973066500, -0.869049580809365120, -0.869024843473039770, +-0.869000103964152280, -0.868975362282764060, -0.868950618428937950, -0.868925872402735220, -0.868901124204217950, -0.868876373833447730, -0.868851621290486210, -0.868826866575395980, +-0.868802109688238680, -0.868777350629076130, -0.868752589397970070, -0.868727825994982660, -0.868703060420175640, -0.868678292673610960, -0.868653522755350570, -0.868628750665456420, +-0.868603976403989900, -0.868579199971013850, -0.868554421366589780, -0.868529640590779750, -0.868504857643645600, -0.868480072525249280, -0.868455285235652300, -0.868430495774917600, +-0.868405704143106690, -0.868380910340281420, -0.868356114366503950, -0.868331316221836240, -0.868306515906340120, -0.868281713420077760, -0.868256908763111120, -0.868232101935501820, +-0.868207292937312690, -0.868182481768605240, -0.868157668429441640, -0.868132852919883960, -0.868108035239994020, -0.868083215389833570, -0.868058393369465550, -0.868033569178951580, +-0.868008742818353610, -0.867983914287733800, -0.867959083587154230, -0.867934250716676960, -0.867909415676364150, -0.867884578466277650, -0.867859739086479290, -0.867834897537032130, +-0.867810053817997580, -0.867785207929438030, -0.867760359871415310, -0.867735509643991820, -0.867710657247229070, -0.867685802681190110, -0.867660945945936680, -0.867636087041530830, +-0.867611225968034860, -0.867586362725510710, -0.867561497314020660, -0.867536629733627000, -0.867511759984391670, -0.867486888066376970, -0.867462013979644510, -0.867437137724257570, +-0.867412259300277770, -0.867387378707767280, -0.867362495946788380, -0.867337611017402700, -0.867312723919673510, -0.867287834653662550, -0.867262943219431980, -0.867238049617044090, +-0.867213153846561060, -0.867188255908045050, -0.867163355801558460, -0.867138453527163460, -0.867113549084922440, -0.867088642474897030, -0.867063733697150400, -0.867038822751744490, +-0.867013909638741480, -0.866988994358203760, -0.866964076910193500, -0.866939157294772670, -0.866914235512004310, -0.866889311561950480, -0.866864385444673260, -0.866839457160235140, +-0.866814526708698300, -0.866789594090125240, -0.866764659304578130, -0.866739722352119380, -0.866714783232810930, -0.866689841946715940, -0.866664898493896270, -0.866639952874414420, +-0.866615005088332670, -0.866590055135713410, -0.866565103016618600, -0.866540148731111510, -0.866515192279254000, -0.866490233661108440, -0.866465272876737470, -0.866440309926203130, +-0.866415344809568170, -0.866390377526894740, -0.866365408078245470, -0.866340436463682080, -0.866315462683268200, -0.866290486737065550, -0.866265508625136740, -0.866240528347544170, +-0.866215545904350240, -0.866190561295617000, -0.866165574521407860, -0.866140585581784750, -0.866115594476810190, -0.866090601206546570, -0.866065605771056510, -0.866040608170402510, +-0.866015608404646860, -0.865990606473852290, -0.865965602378081070, -0.865940596117395490, -0.865915587691858830, -0.865890577101533280, -0.865865564346481210, -0.865840549426765250, +-0.865815532342447570, -0.865790513093591340, -0.865765491680258960, -0.865740468102512820, -0.865715442360415420, -0.865690414454029500, -0.865665384383417560, -0.865640352148642100, +-0.865615317749765740, -0.865590281186851110, -0.865565242459960360, -0.865540201569157010, -0.865515158514503000, -0.865490113296061180, -0.865465065913894160, -0.865440016368064340, +-0.865414964658634100, -0.865389910785666850, -0.865364854749224870, -0.865339796549370770, -0.865314736186167170, -0.865289673659676680, -0.865264608969962050, -0.865239542117085870, +-0.865214473101110880, -0.865189401922099140, -0.865164328580114490, -0.865139253075218880, -0.865114175407475260, -0.865089095576946130, -0.865064013583694340, -0.865038929427782040, +-0.865013843109272870, -0.864988754628229000, -0.864963663984713360, -0.864938571178788470, -0.864913476210517170, -0.864888379079962190, -0.864863279787186360, -0.864838178332252180, +-0.864813074715222170, -0.864787968936159950, -0.864762860995127780, -0.864737750892188520, -0.864712638627404770, -0.864687524200839500, -0.864662407612554970, -0.864637288862614820, +-0.864612167951081420, -0.864587044878017740, -0.864561919643486390, -0.864536792247550200, -0.864511662690272020, -0.864486530971714680, -0.864461397091941030, -0.864436261051014010, +-0.864411122848995680, -0.864385982485950110, -0.864360839961939580, -0.864335695277026920, -0.864310548431275080, -0.864285399424746360, -0.864260248257504580, -0.864235094929612260, +-0.864209939441132110, -0.864184781792127210, -0.864159621982660280, -0.864134460012794370, -0.864109295882592220, -0.864084129592116890, -0.864058961141431210, -0.864033790530597700, +-0.864008617759680080, -0.863983442828741070, -0.863958265737843400, -0.863933086487050030, -0.863907905076423900, -0.863882721506027630, -0.863857535775924950, -0.863832347886178460, +-0.863807157836851140, -0.863781965628005910, -0.863756771259705740, -0.863731574732013560, -0.863706376044992560, -0.863681175198705580, -0.863655972193215330, -0.863630767028585430, +-0.863605559704878620, -0.863580350222158070, -0.863555138580486490, -0.863529924779927180, -0.863504708820542530, -0.863479490702396490, -0.863454270425551900, -0.863429047990071470, +-0.863403823396018510, -0.863378596643455950, -0.863353367732446970, -0.863328136663054520, -0.863302903435341770, -0.863277668049371230, -0.863252430505207060, -0.863227190802911770, +-0.863201948942548420, -0.863176704924180300, -0.863151458747870470, -0.863126210413681430, -0.863100959921677350, -0.863075707271920840, -0.863050452464475200, -0.863025195499403260, +-0.862999936376768420, -0.862974675096633730, -0.862949411659062360, -0.862924146064117490, -0.862898878311862180, -0.862873608402359270, -0.862848336335672710, -0.862823062111865440, +-0.862797785731000410, -0.862772507193140910, -0.862747226498349780, -0.862721943646690970, -0.862696658638227310, -0.862671371473022090, -0.862646082151138360, -0.862620790672639410, +-0.862595497037588530, -0.862570201246048880, -0.862544903298083750, -0.862519603193756310, -0.862494300933129510, -0.862468996516267290, -0.862443689943232620, -0.862418381214088760, +-0.862393070328899000, -0.862367757287725970, -0.862342442090634040, -0.862317124737686070, -0.862291805228945330, -0.862266483564474990, -0.862241159744338460, -0.862215833768599000, +-0.862190505637319910, -0.862165175350564690, -0.862139842908396400, -0.862114508310878210, -0.862089171558074070, -0.862063832650047050, -0.862038491586860410, -0.862013148368577560, +-0.861987802995261900, -0.861962455466976250, -0.861937105783784910, -0.861911753945750810, -0.861886399952937250, -0.861861043805407730, -0.861835685503225650, -0.861810325046454380, +-0.861784962435157230, -0.861759597669397690, -0.861734230749238720, -0.861708861674744590, -0.861683490445978250, -0.861658117063003330, -0.861632741525882980, -0.861607363834680950, +-0.861581983989459840, -0.861556601990284390, -0.861531217837217420, -0.861505831530322340, -0.861480443069662760, -0.861455052455301960, -0.861429659687303560, -0.861404264765731060, +-0.861378867690647860, -0.861353468462117130, -0.861328067080203040, -0.861302663544968870, -0.861277257856478020, -0.861251850014794100, -0.861226440019980500, -0.861201027872100290, +-0.861175613571218080, -0.861150197117396710, -0.861124778510699910, -0.861099357751191170, -0.861073934838934020, -0.861048509773992050, -0.861023082556428790, -0.860997653186307830, +-0.860972221663692690, -0.860946787988646540, -0.860921352161234000, -0.860895914181518010, -0.860870474049562180, -0.860845031765430260, -0.860819587329185180, -0.860794140740891670, +-0.860768692000612900, -0.860743241108412270, -0.860717788064353510, -0.860692332868500330, -0.860666875520916360, -0.860641416021665220, -0.860615954370810510, -0.860590490568415860, +-0.860565024614544540, -0.860539556509261170, -0.860514086252628820, -0.860488613844711310, -0.860463139285572280, -0.860437662575275430, -0.860412183713883950, -0.860386702701462450, +-0.860361219538074210, -0.860335734223782840, -0.860310246758652200, -0.860284757142745990, -0.860259265376127850, -0.860233771458861480, -0.860208275391010750, -0.860182777172638800, +-0.860157276803810490, -0.860131774284588870, -0.860106269615037890, -0.860080762795221280, -0.860055253825202650, -0.860029742705045510, -0.860004229434814470, -0.859978714014572820, +-0.859953196444384280, -0.859927676724312920, -0.859902154854422340, -0.859876630834776280, -0.859851104665438680, -0.859825576346473390, -0.859800045877943670, -0.859774513259914270, +-0.859748978492448580, -0.859723441575610540, -0.859697902509463760, -0.859672361294072320, -0.859646817929499480, -0.859621272415809990, -0.859595724753067450, -0.859570174941335470, +-0.859544622980678130, -0.859519068871159250, -0.859493512612842680, -0.859467954205792360, -0.859442393650072020, -0.859416830945745840, -0.859391266092877080, -0.859365699091530600, +-0.859340129941769890, -0.859314558643658800, -0.859288985197261380, -0.859263409602641030, -0.859237831859862580, -0.859212251968989540, -0.859186669930085970, -0.859161085743215590, +-0.859135499408442580, -0.859109910925830890, -0.859084320295444240, -0.859058727517346910, -0.859033132591602740, -0.859007535518275240, -0.858981936297429470, -0.858956334929128820, +-0.858930731413437230, -0.858905125750419000, -0.858879517940137730, -0.858853907982657370, -0.858828295878042660, -0.858802681626357200, -0.858777065227665060, -0.858751446682030180, +-0.858725825989516740, -0.858700203150188690, -0.858674578164110190, -0.858648951031345310, -0.858623321751957440, -0.858597690326011850, -0.858572056753571950, -0.858546421034701910, +-0.858520783169465900, -0.858495143157927850, -0.858469501000151510, -0.858443856696201930, -0.858418210246142620, -0.858392561650037860, -0.858366910907951700, -0.858341258019948210, +-0.858315602986091550, -0.858289945806445910, -0.858264286481075440, -0.858238625010043780, -0.858212961393416070, -0.858187295631255840, -0.858161627723627470, -0.858135957670595030, +-0.858110285472222570, -0.858084611128574040, -0.858058934639714500, -0.858033256005707570, -0.858007575226617410, -0.857981892302508430, -0.857956207233444680, -0.857930520019490330, +-0.857904830660709770, -0.857879139157167180, -0.857853445508926620, -0.857827749716052130, -0.857802051778608580, -0.857776351696660000, -0.857750649470270470, -0.857724945099504370, +-0.857699238584425430, -0.857673529925098930, -0.857647819121588490, -0.857622106173958510, -0.857596391082273260, -0.857570673846597130, -0.857544954466994300, -0.857519232943528940, +-0.857493509276265660, -0.857467783465268530, -0.857442055510601490, -0.857416325412329820, -0.857390593170517250, -0.857364858785228280, -0.857339122256527200, -0.857313383584478170, +-0.857287642769145370, -0.857261899810593750, -0.857236154708887480, -0.857210407464090830, -0.857184658076268200, -0.857158906545483880, -0.857133152871802250, -0.857107397055287820, +-0.857081639096004880, -0.857055878994017360, -0.857030116749390560, -0.857004352362188530, -0.856978585832475660, -0.856952817160316240, -0.856927046345774770, -0.856901273388915310, +-0.856875498289803140, -0.856849721048502100, -0.856823941665076800, -0.856798160139591650, -0.856772376472111130, -0.856746590662699650, -0.856720802711421700, -0.856695012618341800, +-0.856669220383523890, -0.856643426007033360, -0.856617629488934160, -0.856591830829291020, -0.856566030028168330, -0.856540227085630490, -0.856514422001741660, -0.856488614776567130, +-0.856462805410171170, -0.856436993902618180, -0.856411180253972670, -0.856385364464299250, -0.856359546533662420, -0.856333726462126690, -0.856307904249756670, -0.856282079896616980, +-0.856256253402771450, -0.856230424768285920, -0.856204593993224240, -0.856178761077651010, -0.856152926021630960, -0.856127088825228140, -0.856101249488508080, -0.856075408011534810, +-0.856049564394373070, -0.856023718637087370, -0.855997870739742430, -0.855972020702402860, -0.855946168525133170, -0.855920314207998080, -0.855894457751062210, -0.855868599154389730, +-0.855842738418046150, -0.855816875542095850, -0.855791010526603220, -0.855765143371633120, -0.855739274077250260, -0.855713402643518580, -0.855687529070504050, -0.855661653358270600, +-0.855635775506882970, -0.855609895516405980, -0.855584013386904150, -0.855558129118442310, -0.855532242711085190, -0.855506354164897510, -0.855480463479943440, -0.855454570656288720, +-0.855428675693997500, -0.855402778593134630, -0.855376879353764720, -0.855350977975952720, -0.855325074459762800, -0.855299168805260690, -0.855273261012510560, -0.855247351081577340, +-0.855221439012525670, -0.855195524805420490, -0.855169608460326520, -0.855143689977308500, -0.855117769356431250, -0.855091846597759050, -0.855065921701357760, -0.855039994667291640, +-0.855014065495625530, -0.854988134186424280, -0.854962200739752710, -0.854936265155675110, -0.854910327434257430, -0.854884387575563840, -0.854858445579659290, -0.854832501446608610, +-0.854806555176476750, -0.854780606769328430, -0.854754656225228620, -0.854728703544242130, -0.854702748726433930, -0.854676791771868390, -0.854650832680611370, -0.854624871452727140, +-0.854598908088280870, -0.854572942587337290, -0.854546974949960900, -0.854521005176217540, -0.854495033266171600, -0.854469059219888140, -0.854443083037431990, -0.854417104718868110, +-0.854391124264261560, -0.854365141673677160, -0.854339156947179880, -0.854313170084834760, -0.854287181086706200, -0.854261189952860160, -0.854235196683361230, -0.854209201278274160, +-0.854183203737664210, -0.854157204061596230, -0.854131202250134720, -0.854105198303345750, -0.854079192221293690, -0.854053184004043730, -0.854027173651660700, -0.854001161164209880, +-0.853975146541756100, -0.853949129784364440, -0.853923110892099930, -0.853897089865027210, -0.853871066703212220, -0.853845041406719570, -0.853819013975614330, -0.853792984409961540, +-0.853766952709826280, -0.853740918875273260, -0.853714882906368320, -0.853688844803176190, -0.853662804565761930, -0.853636762194190600, -0.853610717688527480, -0.853584671048837510, +-0.853558622275185860, -0.853532571367637720, -0.853506518326257680, -0.853480463151111700, -0.853454405842264730, -0.853428346399781600, -0.853402284823727600, -0.853376221114168000, +-0.853350155271167310, -0.853324087294791700, -0.853298017185105890, -0.853271944942175060, -0.853245870566064380, -0.853219794056838900, -0.853193715414564010, -0.853167634639304890, +-0.853141551731126600, -0.853115466690094530, -0.853089379516273280, -0.853063290209729040, -0.853037198770526530, -0.853011105198731020, -0.852985009494407810, -0.852958911657621610, +-0.852932811688438600, -0.852906709586923490, -0.852880605353141700, -0.852854498987158370, -0.852828390489038690, -0.852802279858848160, -0.852776167096651940, -0.852750052202515210, +-0.852723935176503360, -0.852697816018681220, -0.852671694729115080, -0.852645571307869670, -0.852619445755010250, -0.852593318070602350, -0.852567188254711010, -0.852541056307401290, +-0.852514922228739480, -0.852488786018790300, -0.852462647677619150, -0.852436507205291400, -0.852410364601872360, -0.852384219867427410, -0.852358073002021930, -0.852331924005721220, +-0.852305772878590220, -0.852279619620695320, -0.852253464232101350, -0.852227306712873720, -0.852201147063077810, -0.852174985282779130, -0.852148821372042400, -0.852122655330934120, +-0.852096487159519240, -0.852070316857863050, -0.852044144426031160, -0.852017969864088840, -0.851991793172101610, -0.851965614350134960, -0.851939433398254290, -0.851913250316524430, +-0.851887065105012000, -0.851860877763781940, -0.851834688292899660, -0.851808496692430640, -0.851782302962440400, -0.851756107102993880, -0.851729909114157690, -0.851703708995996570, +-0.851677506748576230, -0.851651302371962180, -0.851625095866219820, -0.851598887231414750, -0.851572676467612480, -0.851546463574878510, -0.851520248553278350, -0.851494031402877050, +-0.851467812123741230, -0.851441590715935840, -0.851415367179526480, -0.851389141514578780, -0.851362913721157690, -0.851336683799329700, -0.851310451749160090, -0.851284217570714370, +-0.851257981264058050, -0.851231742829256840, -0.851205502266376260, -0.851179259575481910, -0.851153014756639400, -0.851126767809914360, -0.851100518735371960, -0.851074267533078690, +-0.851048014203099720, -0.851021758745500790, -0.850995501160347390, -0.850969241447705360, -0.850942979607639650, -0.850916715640216980, -0.850890449545502530, -0.850864181323562010, +-0.850837910974460930, -0.850811638498265130, -0.850785363895040230, -0.850759087164851930, -0.850732808307765880, -0.850706527323847440, -0.850680244213163020, -0.850653958975778110, +-0.850627671611758230, -0.850601382121169090, -0.850575090504076650, -0.850548796760545960, -0.850522500890643740, -0.850496202894435280, -0.850469902771986310, -0.850443600523362540, +-0.850417296148629820, -0.850390989647853870, -0.850364681021100410, -0.850338370268435280, -0.850312057389923660, -0.850285742385632480, -0.850259425255626920, -0.850233105999972700, +-0.850206784618735890, -0.850180461111981980, -0.850154135479776470, -0.850127807722186210, -0.850101477839276250, -0.850075145831112770, -0.850048811697761250, -0.850022475439287880, +-0.849996137055758160, -0.849969796547238250, -0.849943453913793780, -0.849917109155490570, -0.849890762272394240, -0.849864413264571410, -0.849838062132087570, -0.849811708875008680, +-0.849785353493400450, -0.849758995987328290, -0.849732636356859140, -0.849706274602058500, -0.849679910722992090, -0.849653544719725870, -0.849627176592325890, -0.849600806340857880, +-0.849574433965387900, -0.849548059465981780, -0.849521682842705570, -0.849495304095624680, -0.849468923224805940, -0.849442540230314960, -0.849416155112217570, -0.849389767870579850, +-0.849363378505467730, -0.849336987016946600, -0.849310593405083520, -0.849284197669944010, -0.849257799811593990, -0.849231399830099430, -0.849204997725526380, -0.849178593497940780, +-0.849152187147408810, -0.849125778673996300, -0.849099368077768870, -0.849072955358793570, -0.849046540517135790, -0.849020123552861720, -0.848993704466037280, -0.848967283256728660, +-0.848940859925001230, -0.848914434470922300, -0.848888006894557120, -0.848861577195971990, -0.848835145375232970, -0.848808711432405990, -0.848782275367557350, -0.848755837180752870, +-0.848729396872058950, -0.848702954441540980, -0.848676509889266130, -0.848650063215300010, -0.848623614419708680, -0.848597163502558320, -0.848570710463915080, -0.848544255303844590, +-0.848517798022413890, -0.848491338619688840, -0.848464877095735260, -0.848438413450619660, -0.848411947684407860, -0.848385479797166280, -0.848359009788961060, -0.848332537659858170, +-0.848306063409923980, -0.848279587039224240, -0.848253108547825980, -0.848226627935794950, -0.848200145203197310, -0.848173660350099330, -0.848147173376566640, -0.848120684282666630, +-0.848094193068464790, -0.848067699734027620, -0.848041204279421090, -0.848014706704711570, -0.847988207009965240, -0.847961705195248490, -0.847935201260627380, -0.847908695206168290, +-0.847882187031937070, -0.847855676738000770, -0.847829164324425340, -0.847802649791276950, -0.847776133138621880, -0.847749614366526070, -0.847723093475056700, -0.847696570464279710, +-0.847670045334261160, -0.847643518085067550, -0.847616988716765050, -0.847590457229420170, -0.847563923623099070, -0.847537387897868260, -0.847510850053793900, -0.847484310090942050, +-0.847457768009379770, -0.847431223809173130, -0.847404677490388390, -0.847378129053091960, -0.847351578497350320, -0.847325025823229220, -0.847298471030795920, -0.847271914120116490, +-0.847245355091257310, -0.847218793944284790, -0.847192230679265190, -0.847165665296265020, -0.847139097795350790, -0.847112528176588660, -0.847085956440044920, -0.847059382585786610, +-0.847032806613879920, -0.847006228524391220, -0.846979648317386810, -0.846953065992933410, -0.846926481551096840, -0.846899894991944620, -0.846873306315542580, -0.846846715521957340, +-0.846820122611255170, -0.846793527583502790, -0.846766930438766610, -0.846740331177113110, -0.846713729798608710, -0.846687126303319990, -0.846660520691313030, -0.846633912962655220, +-0.846607303117412720, -0.846580691155651820, -0.846554077077439240, -0.846527460882841030, -0.846500842571924710, -0.846474222144756210, -0.846447599601402030, -0.846420974941929030, +-0.846394348166403470, -0.846367719274892070, -0.846341088267461460, -0.846314455144178020, -0.846287819905108480, -0.846261182550319010, -0.846234543079876890, -0.846207901493848500, +-0.846181257792300360, -0.846154611975299060, -0.846127964042910800, -0.846101313995203050, -0.846074661832242110, -0.846048007554094370, -0.846021351160826660, -0.845994692652505710, +-0.845968032029197900, -0.845941369290969970, -0.845914704437888740, -0.845888037470020620, -0.845861368387431980, -0.845834697190190440, -0.845808023878362070, -0.845781348452013690, +-0.845754670911212040, -0.845727991256023600, -0.845701309486514670, -0.845674625602753080, -0.845647939604804780, -0.845621251492736700, -0.845594561266615470, -0.845567868926507930, +-0.845541174472480560, -0.845514477904600440, -0.845487779222933940, -0.845461078427547590, -0.845434375518509080, -0.845407670495884610, -0.845380963359740890, -0.845354254110144750, +-0.845327542747163040, -0.845300829270862030, -0.845274113681309450, -0.845247395978571460, -0.845220676162715010, -0.845193954233806940, -0.845167230191913980, -0.845140504037102840, +-0.845113775769440580, -0.845087045388993820, -0.845060312895828950, -0.845033578290013800, -0.845006841571614650, -0.844980102740698460, -0.844953361797331940, -0.844926618741582150, +-0.844899873573515150, -0.844873126293199110, -0.844846376900700190, -0.844819625396085350, -0.844792871779421420, -0.844766116050775340, -0.844739358210213950, -0.844712598257804090, +-0.844685836193612820, -0.844659072017706960, -0.844632305730152910, -0.844605537331018620, -0.844578766820370470, -0.844551994198275420, -0.844525219464800300, -0.844498442620011720, +-0.844471663663977520, -0.844444882596764200, -0.844418099418438590, -0.844391314129067760, -0.844364526728718650, -0.844337737217458200, -0.844310945595353470, -0.844284151862471300, +-0.844257356018878860, -0.844230558064642420, -0.844203757999830160, -0.844176955824508470, -0.844150151538744400, -0.844123345142604900, -0.844096536636157020, -0.844069726019467390, +-0.844042913292603950, -0.844016098455633190, -0.843989281508622180, -0.843962462451637970, -0.843935641284747630, -0.843908818008018090, -0.843881992621516640, -0.843855165125310110, +-0.843828335519465230, -0.843801503804050060, -0.843774669979130980, -0.843747834044775270, -0.843720996001050110, -0.843694155848022320, -0.843667313585758750, -0.843640469214327230, +-0.843613622733794700, -0.843586774144228000, -0.843559923445694420, -0.843533070638261000, -0.843506215721994910, -0.843479358696963330, -0.843452499563233320, -0.843425638320871580, +-0.843398774969946310, -0.843371909510523990, -0.843345041942671900, -0.843318172266457220, -0.843291300481947110, -0.843264426589208300, -0.843237550588308960, -0.843210672479315580, +-0.843183792262295670, -0.843156909937316180, -0.843130025504444490, -0.843103138963747670, -0.843076250315292990, -0.843049359559147730, -0.843022466695379060, -0.842995571724053820, +-0.842968674645240060, -0.842941775459004620, -0.842914874165414770, -0.842887970764537700, -0.842861065256440220, -0.842834157641190520, -0.842807247918855530, -0.842780336089502310, +-0.842753422153198370, -0.842726506110010760, -0.842699587960006990, -0.842672667703254110, -0.842645745339819730, -0.842618820869770910, -0.842591894293174490, -0.842564965610098860, +-0.842538034820610850, -0.842511101924777740, -0.842484166922666920, -0.842457229814345570, -0.842430290599880730, -0.842403349279340690, -0.842376405852792160, -0.842349460320302780, +-0.842322512681939580, -0.842295562937770190, -0.842268611087861880, -0.842241657132282050, -0.842214701071098080, -0.842187742904376920, -0.842160782632186740, -0.842133820254594710, +-0.842106855771668110, -0.842079889183474430, -0.842052920490080960, -0.842025949691554750, -0.841998976787964090, -0.841972001779376030, -0.841945024665857970, -0.841918045447477280, +-0.841891064124301590, -0.841864080696398060, -0.841837095163834540, -0.841810107526678180, -0.841783117784996040, -0.841756125938856630, -0.841729131988326880, -0.841702135933474320, +-0.841675137774366420, -0.841648137511070700, -0.841621135143654220, -0.841594130672185250, -0.841567124096730960, -0.841540115417358960, -0.841513104634136640, -0.841486091747131510, +-0.841459076756411180, -0.841432059662043150, -0.841405040464094920, -0.841378019162633660, -0.841350995757727870, -0.841323970249444610, -0.841296942637851260, -0.841269912923015670, +-0.841242881105005340, -0.841215847183887750, -0.841188811159730100, -0.841161773032600870, -0.841134732802567230, -0.841107690469696690, -0.841080646034056970, -0.841053599495715680, +-0.841026550854740430, -0.840999500111198620, -0.840972447265157740, -0.840945392316686190, -0.840918335265851140, -0.840891276112720190, -0.840864214857361180, -0.840837151499841510, +-0.840810086040229000, -0.840783018478590830, -0.840755948814995600, -0.840728877049510490, -0.840701803182203110, -0.840674727213141290, -0.840647649142392650, -0.840620568970024910, +-0.840593486696105780, -0.840566402320702790, -0.840539315843883420, -0.840512227265716280, -0.840485136586268440, -0.840458043805607850, -0.840430948923802210, -0.840403851940919040, +-0.840376752857025840, -0.840349651672191330, -0.840322548386482570, -0.840295442999967500, -0.840268335512713740, -0.840241225924789230, -0.840214114236261580, -0.840187000447198740, +-0.840159884557668320, -0.840132766567737720, -0.840105646477475650, -0.840078524286949620, -0.840051399996227130, -0.840024273605376240, -0.839997145114464550, -0.839970014523560020, +-0.839942881832730030, -0.839915747042043300, -0.839888610151567240, -0.839861471161369670, -0.839834330071518310, -0.839807186882081220, -0.839780041593126140, -0.839752894204720880, +-0.839725744716932950, -0.839698593129831190, -0.839671439443482880, -0.839644283657956070, -0.839617125773318480, -0.839589965789638070, -0.839562803706982770, -0.839535639525419990, +-0.839508473245018540, -0.839481304865845930, -0.839454134387970120, -0.839426961811458930, -0.839399787136380300, -0.839372610362802200, -0.839345431490792660, -0.839318250520418970, +-0.839291067451750190, -0.839263882284853710, -0.839236695019797590, -0.839209505656649650, -0.839182314195477950, -0.839155120636350560, -0.839127924979334750, -0.839100727224499690, +-0.839073527371912760, -0.839046325421642040, -0.839019121373755560, -0.838991915228321280, -0.838964706985407150, -0.838937496645081220, -0.838910284207411650, -0.838883069672465840, +-0.838855853040312850, -0.838828634311020170, -0.838801413484655980, -0.838774190561288210, -0.838746965540985050, -0.838719738423813870, -0.838692509209843840, -0.838665277899142580, +-0.838638044491778150, -0.838610808987818590, -0.838583571387331970, -0.838556331690386460, -0.838529089897050110, -0.838501846007391080, -0.838474600021476890, -0.838447351939376690, +-0.838420101761158220, -0.838392849486889410, -0.838365595116638440, -0.838338338650473470, -0.838311080088462780, -0.838283819430673760, -0.838256556677175800, -0.838229291828036290, +-0.838202024883323740, -0.838174755843105970, -0.838147484707451370, -0.838120211476428120, -0.838092936150104270, -0.838065658728547660, -0.838038379211827330, -0.838011097600011020, +-0.837983813893167010, -0.837956528091363450, -0.837929240194668630, -0.837901950203150610, -0.837874658116877340, -0.837847363935917850, -0.837820067660339900, -0.837792769290211960, +-0.837765468825601880, -0.837738166266578270, -0.837710861613209180, -0.837683554865563010, -0.837656246023707360, -0.837628935087711630, -0.837601622057643550, -0.837574306933571490, +-0.837546989715563630, -0.837519670403688240, -0.837492348998013720, -0.837465025498607800, -0.837437699905539850, -0.837410372218877600, -0.837383042438689440, -0.837355710565043650, +-0.837328376598008630, -0.837301040537652640, -0.837273702384044080, -0.837246362137251340, -0.837219019797342030, -0.837191675364385770, -0.837164328838450380, -0.837136980219604030, +-0.837109629507915340, -0.837082276703452480, -0.837054921806283490, -0.837027564816477660, -0.837000205734102940, -0.836972844559227710, -0.836945481291920370, -0.836918115932249300, +-0.836890748480283000, -0.836863378936089750, -0.836836007299738170, -0.836808633571295980, -0.836781257750832670, -0.836753879838416310, -0.836726499834115180, -0.836699117737997880, +-0.836671733550132690, -0.836644347270588230, -0.836616958899432440, -0.836589568436734710, -0.836562175882562990, -0.836534781236985880, -0.836507384500071890, -0.836479985671889300, +-0.836452584752506830, -0.836425181741992870, -0.836397776640415590, -0.836370369447844150, -0.836342960164346950, -0.836315548789992260, -0.836288135324848800, -0.836260719768984860, +-0.836233302122469160, -0.836205882385369750, -0.836178460557756130, -0.836151036639696370, -0.836123610631259060, -0.836096182532512610, -0.836068752343525730, -0.836041320064367040, +-0.836013885695105040, -0.835986449235807780, -0.835959010686544880, -0.835931570047384500, -0.835904127318395250, -0.835876682499645530, -0.835849235591204160, -0.835821786593139770, +-0.835794335505520400, -0.835766882328415670, -0.835739427061893750, -0.835711969706023240, -0.835684510260872760, -0.835657048726511140, -0.835629585103006780, -0.835602119390428500, +-0.835574651588844920, -0.835547181698324200, -0.835519709718935970, -0.835492235650748590, -0.835464759493830480, -0.835437281248250560, -0.835409800914077460, -0.835382318491379340, +-0.835354833980225920, -0.835327347380685370, -0.835299858692826520, -0.835272367916717990, -0.835244875052428500, -0.835217380100026880, -0.835189883059581750, -0.835162383931162040, +-0.835134882714835710, -0.835107379410672810, -0.835079874018741400, -0.835052366539110300, -0.835024856971848250, -0.834997345317024080, -0.834969831574706610, -0.834942315744964030, +-0.834914797827866150, -0.834887277823481270, -0.834859755731878210, -0.834832231553125800, -0.834804705287292670, -0.834777176934447970, -0.834749646494660210, -0.834722113967997890, +-0.834694579354530730, -0.834667042654327120, -0.834639503867455890, -0.834611962993985990, -0.834584420033986140, -0.834556874987525180, -0.834529327854671600, -0.834501778635495130, +-0.834474227330064270, -0.834446673938447850, -0.834419118460714700, -0.834391560896933780, -0.834364001247174030, -0.834336439511504270, -0.834308875689992790, -0.834281309782709650, +-0.834253741789723340, -0.834226171711102580, -0.834198599546916440, -0.834171025297233750, -0.834143448962123560, -0.834115870541654260, -0.834088290035895690, -0.834060707444916450, +-0.834033122768785380, -0.834005536007571660, -0.833977947161343990, -0.833950356230171440, -0.833922763214123060, -0.833895168113267690, -0.833867570927673940, -0.833839971657411750, +-0.833812370302549730, -0.833784766863156720, -0.833757161339301780, -0.833729553731053840, -0.833701944038481630, -0.833674332261655100, -0.833646718400642640, -0.833619102455513410, +-0.833591484426336460, -0.833563864313180860, -0.833536242116115430, -0.833508617835209460, -0.833480991470532010, -0.833453363022151560, -0.833425732490138180, -0.833398099874560480, +-0.833370465175487520, -0.833342828392988340, -0.833315189527132240, -0.833287548577987590, -0.833259905545624570, -0.833232260430111780, -0.833204613231518290, -0.833176963949913360, +-0.833149312585365950, -0.833121659137945230, -0.833094003607720460, -0.833066345994760590, -0.833038686299134470, -0.833011024520912020, -0.832983360660162100, -0.832955694716953630, +-0.832928026691356130, -0.832900356583438420, -0.832872684393269890, -0.832845010120919050, -0.832817333766456280, -0.832789655329950200, -0.832761974811469850, -0.832734292211084750, +-0.832706607528863720, -0.832678920764876370, -0.832651231919191550, -0.832623540991878190, -0.832595847983006570, -0.832568152892645190, -0.832540455720863550, -0.832512756467730710, +-0.832485055133316050, -0.832457351717688640, -0.832429646220917420, -0.832401938643072550, -0.832374228984222860, -0.832346517244437640, -0.832318803423786060, -0.832291087522337490, +-0.832263369540161220, -0.832235649477326530, -0.832207927333902700, -0.832180203109958550, -0.832152476805564370, -0.832124748420788980, -0.832097017955701790, -0.832069285410372060, +-0.832041550784869080, -0.832013814079261670, -0.831986075293620340, -0.831958334428013700, -0.831930591482511360, -0.831902846457182490, -0.831875099352096470, -0.831847350167322700, +-0.831819598902930560, -0.831791845558989440, -0.831764090135568180, -0.831736332632737270, -0.831708573050565450, -0.831680811389122200, -0.831653047648476920, -0.831625281828699100, +-0.831597513929857480, -0.831569743952022660, -0.831541971895263470, -0.831514197759649300, -0.831486421545249650, -0.831458643252133920, -0.831430862880371600, -0.831403080430032190, +-0.831375295901184970, -0.831347509293899110, -0.831319720608244880, -0.831291929844291460, -0.831264137002108110, -0.831236342081764450, -0.831208545083329970, -0.831180746006874080, +-0.831152944852465940, -0.831125141620175810, -0.831097336310072880, -0.831069528922226630, -0.831041719456706460, -0.831013907913582090, -0.830986094292922920, -0.830958278594798540, +-0.830930460819277910, -0.830902640966431630, -0.830874819036328870, -0.830846995029038910, -0.830819168944631480, -0.830791340783176180, -0.830763510544742510, -0.830735678229399640, +-0.830707843837217960, -0.830680007368266750, -0.830652168822615500, -0.830624328200333830, -0.830596485501491340, -0.830568640726157550, -0.830540793874402270, -0.830512944946295020, +-0.830485093941904840, -0.830457240861302460, -0.830429385704556930, -0.830401528471737980, -0.830373669162915220, -0.830345807778158250, -0.830317944317536250, -0.830290078781119930, +-0.830262211168978360, -0.830234341481181250, -0.830206469717798430, -0.830178595878899310, -0.830150719964553700, -0.830122841974831330, -0.830094961909801920, -0.830067079769534530, +-0.830039195554099880, -0.830011309263567370, -0.829983420898006470, -0.829955530457487160, -0.829927637942078910, -0.829899743351851020, -0.829871846686874410, -0.829843947947218050, +-0.829816047132951980, -0.829788144244145710, -0.829760239280869060, -0.829732332243191760, -0.829704423131183750, -0.829676511944914650, -0.829648598684453730, -0.829620683349871820, +-0.829592765941238210, -0.829564846458622720, -0.829536924902095070, -0.829509001271725110, -0.829481075567582660, -0.829453147789737000, -0.829425217938258960, -0.829397286013217940, +-0.829369352014683650, -0.829341415942726030, -0.829313477797414820, -0.829285537578819950, -0.829257595287011260, -0.829229650922058030, -0.829201704484031190, -0.829173755973000140, +-0.829145805389034600, -0.829117852732204620, -0.829089898002579930, -0.829061941200230580, -0.829033982325225850, -0.829006021377636680, -0.828978058357532350, -0.828950093264983030, +-0.828922126100058440, -0.828894156862828520, -0.828866185553363110, -0.828838212171732370, -0.828810236718006020, -0.828782259192253680, -0.828754279594546060, -0.828726297924952780, +-0.828698314183543780, -0.828670328370389010, -0.828642340485558400, -0.828614350529121470, -0.828586358501149150, -0.828558364401710930, -0.828530368230876780, -0.828502369988716740, +-0.828474369675300750, -0.828446367290698870, -0.828418362834981050, -0.828390356308217330, -0.828362347710477120, -0.828334337041831680, -0.828306324302350290, -0.828278309492103240, +-0.828250292611160340, -0.828222273659591670, -0.828194252637466820, -0.828166229544856860, -0.828138204381831280, -0.828110177148460250, -0.828082147844813820, -0.828054116470961940, +-0.828026083026974780, -0.827998047512922390, -0.827970009928874930, -0.827941970274901910, -0.827913928551074490, -0.827885884757462280, -0.827857838894135330, -0.827829790961163710, +-0.827801740958617690, -0.827773688886567330, -0.827745634745082230, -0.827717578534233560, -0.827689520254090930, -0.827661459904724510, -0.827633397486204460, -0.827605332998600840, +-0.827577266441983930, -0.827549197816423890, -0.827521127121990330, -0.827493054358754420, -0.827464979526785880, -0.827436902626154880, -0.827408823656931690, -0.827380742619186370, +-0.827352659512989200, -0.827324574338409890, -0.827296487095519730, -0.827268397784388210, -0.827240306405085830, -0.827212212957682660, -0.827184117442248850, -0.827156019858854900, +-0.827127920207570750, -0.827099818488466370, -0.827071714701613000, -0.827043608847080280, -0.827015500924938580, -0.826987390935258080, -0.826959278878109050, -0.826931164753561990, +-0.826903048561686390, -0.826874930302553660, -0.826846809976233720, -0.826818687582796640, -0.826790563122312920, -0.826762436594852710, -0.826734308000486420, -0.826706177339284420, +-0.826678044611317000, -0.826649909816653870, -0.826621772955366540, -0.826593634027524730, -0.826565493033198930, -0.826537349972459310, -0.826509204845376270, -0.826481057652019850, +-0.826452908392461220, -0.826424757066770320, -0.826396603675017440, -0.826368448217273180, -0.826340290693607700, -0.826312131104091630, -0.826283969448795120, -0.826255805727788780, +-0.826227639941142340, -0.826199472088927300, -0.826171302171213600, -0.826143130188071620, -0.826114956139571870, -0.826086780025784730, -0.826058601846780590, -0.826030421602629520, +-0.826002239293402770, -0.825974054919170530, -0.825945868480003180, -0.825917679975971100, -0.825889489407144790, -0.825861296773594770, -0.825833102075391510, -0.825804905312605090, +-0.825776706485306770, -0.825748505593566720, -0.825720302637455440, -0.825692097617043430, -0.825663890532401190, -0.825635681383599110, -0.825607470170707460, -0.825579256893797520, +-0.825551041552939460, -0.825522824148203880, -0.825494604679661180, -0.825466383147381970, -0.825438159551436850, -0.825409933891896210, -0.825381706168830330, -0.825353476382310710, +-0.825325244532407300, -0.825297010619190810, -0.825268774642731850, -0.825240536603100930, -0.825212296500368650, -0.825184054334605180, -0.825155810105882010, -0.825127563814269330, +-0.825099315459837720, -0.825071065042657930, -0.825042812562800320, -0.825014558020335850, -0.824986301415334910, -0.824958042747868100, -0.824929782018005820, -0.824901519225819560, +-0.824873254371379480, -0.824844987454756320, -0.824816718476020670, -0.824788447435243150, -0.824760174332494040, -0.824731899167845060, -0.824703621941366260, -0.824675342653128470, +-0.824647061303202310, -0.824618777891658490, -0.824590492418567740, -0.824562204884000670, -0.824533915288028220, -0.824505623630720330, -0.824477329912148950, -0.824449034132384350, +-0.824420736291497040, -0.824392436389557950, -0.824364134426637700, -0.824335830402807220, -0.824307524318136590, -0.824279216172697620, -0.824250905966560700, -0.824222593699796450, +-0.824194279372475690, -0.824165962984669380, -0.824137644536448000, -0.824109324027882620, -0.824081001459043390, -0.824052676830002050, -0.824024350140829200, -0.823996021391595330, +-0.823967690582371510, -0.823939357713228350, -0.823911022784236890, -0.823882685795467420, -0.823854346746991650, -0.823826005638879980, -0.823797662471203340, -0.823769317244032570, +-0.823740969957438510, -0.823712620611491970, -0.823684269206264030, -0.823655915741824730, -0.823627560218246240, -0.823599202635598830, -0.823570842993953330, -0.823542481293380810, +-0.823514117533952090, -0.823485751715738120, -0.823457383838809180, -0.823429013903237310, -0.823400641909092900, -0.823372267856446900, -0.823343891745370260, -0.823315513575933800, +-0.823287133348208690, -0.823258751062265650, -0.823230366718175730, -0.823201980316009440, -0.823173591855838720, -0.823145201337733940, -0.823116808761766180, -0.823088414128006370, +-0.823060017436525570, -0.823031618687394270, -0.823003217880684420, -0.822974815016466410, -0.822946410094811510, -0.822918003115790440, -0.822889594079474480, -0.822861182985934470, +-0.822832769835241560, -0.822804354627466710, -0.822775937362680400, -0.822747518040954810, -0.822719096662360430, -0.822690673226968320, -0.822662247734849420, -0.822633820186075000, +-0.822605390580716020, -0.822576958918843080, -0.822548525200528240, -0.822520089425842090, -0.822491651594855710, -0.822463211707640140, -0.822434769764266550, -0.822406325764806100, +-0.822377879709329850, -0.822349431597908300, -0.822320981430613720, -0.822292529207516720, -0.822264074928688360, -0.822235618594199910, -0.822207160204122320, -0.822178699758526750, +-0.822150237257484040, -0.822121772701066230, -0.822093306089344060, -0.822064837422388450, -0.822036366700270920, -0.822007893923062390, -0.821979419090834160, -0.821950942203657280, +-0.821922463261602680, -0.821893982264742310, -0.821865499213147110, -0.821837014106888030, -0.821808526946036460, -0.821780037730663550, -0.821751546460840700, -0.821723053136638290, +-0.821694557758128830, -0.821666060325383030, -0.821637560838471950, -0.821609059297467080, -0.821580555702439490, -0.821552050053460550, -0.821523542350601430, -0.821495032593933530, +-0.821466520783527550, -0.821438006919455790, -0.821409491001788950, -0.821380973030598320, -0.821352453005955390, -0.821323930927931210, -0.821295406796596850, -0.821266880612024350, +-0.821238352374284660, -0.821209822083449170, -0.821181289739589040, -0.821152755342775760, -0.821124218893080520, -0.821095680390574790, -0.821067139835329750, -0.821038597227416460, +-0.821010052566907180, -0.820981505853872750, -0.820952957088384560, -0.820924406270514000, -0.820895853400332330, -0.820867298477911180, -0.820838741503321150, -0.820810182476634840, +-0.820781621397922990, -0.820753058267257200, -0.820724493084708740, -0.820695925850349010, -0.820667356564249490, -0.820638785226481480, -0.820610211837116130, -0.820581636396225720, +-0.820553058903881190, -0.820524479360154050, -0.820495897765115670, -0.820467314118837550, -0.820438728421391210, -0.820410140672847450, -0.820381550873279020, -0.820352959022756510, +-0.820324365121351650, -0.820295769169135940, -0.820267171166180750, -0.820238571112557710, -0.820209969008338200, -0.820181364853593280, -0.820152758648395430, -0.820124150392815610, +-0.820095540086925530, -0.820066927730796590, -0.820038313324500280, -0.820009696868108210, -0.819981078361691430, -0.819952457805322330, -0.819923835199072190, -0.819895210543012510, +-0.819866583837214670, -0.819837955081750500, -0.819809324276691400, -0.819780691422108960, -0.819752056518074810, -0.819723419564659990, -0.819694780561937120, -0.819666139509977350, +-0.819637496408852200, -0.819608851258633360, -0.819580204059392250, -0.819551554811200230, -0.819522903514129820, -0.819494250168252170, -0.819465594773638890, -0.819436937330361600, +-0.819408277838492020, -0.819379616298101740, -0.819350952709262390, -0.819322287072045690, -0.819293619386522680, -0.819264949652766190, -0.819236277870847300, -0.819207604040837700, +-0.819178928162809130, -0.819150250236833190, -0.819121570262981710, -0.819092888241325760, -0.819064204171938040, -0.819035518054889940, -0.819006829890252970, -0.818978139678098960, +-0.818949447418499510, -0.818920753111526460, -0.818892056757251630, -0.818863358355746080, -0.818834657907082650, -0.818805955411332500, -0.818777250868567560, -0.818748544278859460, +-0.818719835642280010, -0.818691124958900950, -0.818662412228793660, -0.818633697452030740, -0.818604980628683590, -0.818576261758824030, -0.818547540842523790, -0.818518817879854700, +-0.818490092870888590, -0.818461365815697170, -0.818432636714351960, -0.818403905566925550, -0.818375172373489450, -0.818346437134115370, -0.818317699848875260, -0.818288960517840840, +-0.818260219141084040, -0.818231475718676160, -0.818202730250690120, -0.818173982737197210, -0.818145233178269480, -0.818116481573978540, -0.818087727924396440, -0.818058972229595010, +-0.818030214489646190, -0.818001454704621820, -0.817972692874593290, -0.817943928999633530, -0.817915163079813930, -0.817886395115206440, -0.817857625105882890, -0.817828853051915440, +-0.817800078953375250, -0.817771302810335390, -0.817742524622867230, -0.817713744391042830, -0.817684962114934020, -0.817656177794612750, -0.817627391430151170, -0.817598603021621020, +-0.817569812569094450, -0.817541020072642730, -0.817512225532339040, -0.817483428948254760, -0.817454630320461950, -0.817425829649032430, -0.817397026934038480, -0.817368222175551940, +-0.817339415373644300, -0.817310606528388610, -0.817281795639856480, -0.817252982708119860, -0.817224167733250680, -0.817195350715321120, -0.817166531654403230, -0.817137710550569050, +-0.817108887403889980, -0.817080062214439180, -0.817051234982288380, -0.817022405707509390, -0.816993574390174390, -0.816964741030355430, -0.816935905628124680, -0.816907068183553630, +-0.816878228696715450, -0.816849387167681630, -0.816820543596524340, -0.816791697983315750, -0.816762850328127900, -0.816734000631032960, -0.816705148892102990, -0.816676295111409600, +-0.816647439289026060, -0.816618581425023860, -0.816589721519475180, -0.816560859572452280, -0.816531995584027230, -0.816503129554272070, -0.816474261483258630, -0.816445391371060090, +-0.816416519217748050, -0.816387645023394780, -0.816358768788072340, -0.816329890511852900, -0.816301010194808830, -0.816272127837012200, -0.816243243438535270, -0.816214356999449770, +-0.816185468519828870, -0.816156577999744170, -0.816127685439268170, -0.816098790838472920, -0.816069894197430590, -0.816040995516213120, -0.816012094794893670, -0.815983192033543970, +-0.815954287232236290, -0.815925380391042900, -0.815896471510036080, -0.815867560589288000, -0.815838647628871150, -0.815809732628857590, -0.815780815589319140, -0.815751896510329200, +-0.815722975391959590, -0.815694052234282490, -0.815665127037370260, -0.815636199801295200, -0.815607270526129140, -0.815578339211945450, -0.815549405858815860, -0.815520470466812860, +-0.815491533036008520, -0.815462593566475440, -0.815433652058285880, -0.815404708511512140, -0.815375762926226710, -0.815346815302501300, -0.815317865640409420, -0.815288913940022790, +-0.815259960201414000, -0.815231004424655240, -0.815202046609818880, -0.815173086756977530, -0.815144124866202910, -0.815115160937568530, -0.815086194971146210, -0.815057226967008330, +-0.815028256925227510, -0.814999284845875920, -0.814970310729026260, -0.814941334574750710, -0.814912356383121320, -0.814883376154211690, -0.814854393888093440, -0.814825409584839290, +-0.814796423244521620, -0.814767434867212930, -0.814738444452985600, -0.814709452001911580, -0.814680457514064590, -0.814651460989516350, -0.814622462428339470, -0.814593461830606440, +-0.814564459196389870, -0.814535454525762040, -0.814506447818795550, -0.814477439075562910, -0.814448428296136280, -0.814419415480589050, -0.814390400628993260, -0.814361383741421530, +-0.814332364817946240, -0.814303343858640120, -0.814274320863575100, -0.814245295832824790, -0.814216268766461250, -0.814187239664556970, -0.814158208527184680, -0.814129175354416870, +-0.814100140146326030, -0.814071102902984900, -0.814042063624466070, -0.814013022310841490, -0.813983978962184880, -0.813954933578568300, -0.813925886160064450, -0.813896836706745840, +-0.813867785218685190, -0.813838731695954550, -0.813809676138627540, -0.813780618546776410, -0.813751558920473680, -0.813722497259792070, -0.813693433564804170, -0.813664367835582710, +-0.813635300072200420, -0.813606230274729780, -0.813577158443243080, -0.813548084577814020, -0.813519008678514680, -0.813489930745417980, -0.813460850778596310, -0.813431768778122510, +-0.813402684744069290, -0.813373598676508940, -0.813344510575515050, -0.813315420441159900, -0.813286328273516100, -0.813257234072656600, -0.813228137838654000, -0.813199039571581020, +-0.813169939271510490, -0.813140836938514580, -0.813111732572667000, -0.813082626174040150, -0.813053517742706840, -0.813024407278739590, -0.812995294782211440, -0.812966180253194890, +-0.812937063691762550, -0.812907945097987920, -0.812878824471943600, -0.812849701813702090, -0.812820577123336330, -0.812791450400919160, -0.812762321646523400, -0.812733190860221780, +-0.812704058042087120, -0.812674923192191920, -0.812645786310609910, -0.812616647397413350, -0.812587506452675300, -0.812558363476468370, -0.812529218468865610, -0.812500071429939190, +-0.812470922359763150, -0.812441771258409880, -0.812412618125952110, -0.812383462962462780, -0.812354305768014820, -0.812325146542681180, -0.812295985286534570, -0.812266821999648060, +-0.812237656682093910, -0.812208489333946180, -0.812179319955277260, -0.812150148546159970, -0.812120975106667250, -0.812091799636872170, -0.812062622136847100, -0.812033442606665990, +-0.812004261046401330, -0.811975077456125850, -0.811945891835912810, -0.811916704185835060, -0.811887514505965410, -0.811858322796377040, -0.811829129057143000, -0.811799933288335440, +-0.811770735490028650, -0.811741535662295010, -0.811712333805207460, -0.811683129918839170, -0.811653924003262970, -0.811624716058552020, -0.811595506084778820, -0.811566294082017300, +-0.811537080050340090, -0.811507863989820110, -0.811478645900530430, -0.811449425782544310, -0.811420203635934480, -0.811390979460774210, -0.811361753257135890, -0.811332525025093790, +-0.811303294764720410, -0.811274062476088690, -0.811244828159271790, -0.811215591814342880, -0.811186353441375130, -0.811157113040440800, -0.811127870611614290, -0.811098626154968080, +-0.811069379670575240, -0.811040131158509040, -0.811010880618842410, -0.810981628051648640, -0.810952373457000890, -0.810923116834971540, -0.810893858185635090, -0.810864597509063810, +-0.810835334805331100, -0.810806070074510110, -0.810776803316673900, -0.810747534531895630, -0.810718263720248130, -0.810688990881805350, -0.810659716016640220, -0.810630439124825690, +-0.810601160206435130, -0.810571879261541730, -0.810542596290218520, -0.810513311292538900, -0.810484024268575910, -0.810454735218402390, -0.810425444142092610, -0.810396151039719070, +-0.810366855911355270, -0.810337558757074360, -0.810308259576949520, -0.810278958371053460, -0.810249655139460570, -0.810220349882243450, -0.810191042599475610, -0.810161733291230090, +-0.810132421957580170, -0.810103108598599240, -0.810073793214360570, -0.810044475804937440, -0.810015156370402560, -0.809985834910830320, -0.809956511426293550, -0.809927185916865410, +-0.809897858382619300, -0.809868528823628590, -0.809839197239966560, -0.809809863631706040, -0.809780527998921310, -0.809751190341685300, -0.809721850660071300, -0.809692508954152790, +-0.809663165224002830, -0.809633819469695040, -0.809604471691302670, -0.809575121888898690, -0.809545770062557350, -0.809516416212351600, -0.809487060338354820, -0.809457702440640410, +-0.809428342519281640, -0.809398980574352110, -0.809369616605924550, -0.809340250614073550, -0.809310882598871850, -0.809281512560392930, -0.809252140498710300, -0.809222766413897340, +-0.809193390306027440, -0.809164012175173970, -0.809134632021410010, -0.809105249844810030, -0.809075865645446870, -0.809046479423394030, -0.809017091178725110, -0.808987700911513400, +-0.808958308621832380, -0.808928914309755110, -0.808899517975356090, -0.808870119618708250, -0.808840719239885100, -0.808811316838960240, -0.808781912416006940, -0.808752505971099040, +-0.808723097504309710, -0.808693687015712760, -0.808664274505381030, -0.808634859973389130, -0.808605443419810000, -0.808576024844717360, -0.808546604248184700, -0.808517181630285410, +-0.808487756991092650, -0.808458330330681150, -0.808428901649123730, -0.808399470946494000, -0.808370038222865680, -0.808340603478312270, -0.808311166712907370, -0.808281727926724480, +-0.808252287119837320, -0.808222844292318940, -0.808193399444243840, -0.808163952575685410, -0.808134503686717020, -0.808105052777412400, -0.808075599847845050, -0.808046144898088790, +-0.808016687928216680, -0.807987228938303330, -0.807957767928421890, -0.807928304898646090, -0.807898839849049420, -0.807869372779705720, -0.807839903690688590, -0.807810432582071640, +-0.807780959453928250, -0.807751484306332810, -0.807722007139358710, -0.807692527953079660, -0.807663046747569170, -0.807633563522901170, -0.807604078279149150, -0.807574591016386510, +-0.807545101734687960, -0.807515610434126560, -0.807486117114776140, -0.807456621776710400, -0.807427124420003190, -0.807397625044728120, -0.807368123650959000, -0.807338620238769120, +-0.807309114808233090, -0.807279607359424390, -0.807250097892416530, -0.807220586407283560, -0.807191072904098970, -0.807161557382936820, -0.807132039843870270, -0.807102520286974160, +-0.807072998712321630, -0.807043475119986640, -0.807013949510043020, -0.806984421882564470, -0.806954892237624950, -0.806925360575298070, -0.806895826895657860, -0.806866291198777620, +-0.806836753484732050, -0.806807213753594770, -0.806777672005439260, -0.806748128240339700, -0.806718582458369800, -0.806689034659602840, -0.806659484844113870, -0.806629933011976270, +-0.806600379163263770, -0.806570823298050300, -0.806541265416409690, -0.806511705518416110, -0.806482143604143160, -0.806452579673664790, -0.806423013727054610, -0.806393445764387320, +-0.806363875785736430, -0.806334303791175770, -0.806304729780779490, -0.806275153754621330, -0.806245575712775220, -0.806215995655314770, -0.806186413582314800, -0.806156829493848810, +-0.806127243389990640, -0.806097655270814450, -0.806068065136394170, -0.806038472986803640, -0.806008878822117030, -0.805979282642407590, -0.805949684447750500, -0.805920084238219260, +-0.805890482013887690, -0.805860877774830060, -0.805831271521120110, -0.805801663252832090, -0.805772052970039290, -0.805742440672816970, -0.805712826361238420, -0.805683210035377910, +-0.805653591695309370, -0.805623971341106860, -0.805594348972844430, -0.805564724590596030, -0.805535098194435360, -0.805505469784437490, -0.805475839360675900, -0.805446206923224770, +-0.805416572472158030, -0.805386936007549960, -0.805357297529474490, -0.805327657038005350, -0.805298014533217480, -0.805268370015184590, -0.805238723483980840, -0.805209074939680190, +-0.805179424382356900, -0.805149771812085020, -0.805120117228938730, -0.805090460632992170, -0.805060802024318960, -0.805031141402994250, -0.805001478769091670, -0.804971814122685370, +-0.804942147463849510, -0.804912478792658370, -0.804882808109185440, -0.804853135413506000, -0.804823460705693880, -0.804793783985822910, -0.804764105253967580, -0.804734424510201940, +-0.804704741754600270, -0.804675056987236740, -0.804645370208185610, -0.804615681417520490, -0.804585990615316660, -0.804556297801647950, -0.804526602976588400, -0.804496906140212410, +-0.804467207292594130, -0.804437506433807850, -0.804407803563927160, -0.804378098683027560, -0.804348391791182780, -0.804318682888466970, -0.804288971974954530, -0.804259259050719490, +-0.804229544115836470, -0.804199827170379520, -0.804170108214422470, -0.804140387248040710, -0.804110664271307950, -0.804080939284298470, -0.804051212287086760, -0.804021483279746980, +-0.803991752262353420, -0.803962019234980010, -0.803932284197702130, -0.803902547150593500, -0.803872808093728410, -0.803843067027181450, -0.803813323951026780, -0.803783578865338690, +-0.803753831770191770, -0.803724082665659760, -0.803694331551818020, -0.803664578428740390, -0.803634823296501380, -0.803605066155175350, -0.803575307004836590, -0.803545545845559590, +-0.803515782677418300, -0.803486017500487870, -0.803456250314842580, -0.803426481120556590, -0.803396709917704400, -0.803366936706360390, -0.803337161486599170, -0.803307384258494910, +-0.803277605022122200, -0.803247823777555100, -0.803218040524868780, -0.803188255264137400, -0.803158467995435440, -0.803128678718837310, -0.803098887434417490, -0.803069094142249920, +-0.803039298842410100, -0.803009501534972080, -0.802979702220010250, -0.802949900897599210, -0.802920097567813460, -0.802890292230727390, -0.802860484886415590, -0.802830675534952580, +-0.802800864176412390, -0.802771050810870520, -0.802741235438401040, -0.802711418059078530, -0.802681598672977390, -0.802651777280172340, -0.802621953880737760, -0.802592128474747810, +-0.802562301062278110, -0.802532471643402580, -0.802502640218195950, -0.802472806786732720, -0.802442971349087380, -0.802413133905334640, -0.802383294455549120, -0.802353452999804760, +-0.802323609538177380, -0.802293764070740930, -0.802263916597570130, -0.802234067118739460, -0.802204215634323650, -0.802174362144397300, -0.802144506649034470, -0.802114649148310990, +-0.802084789642300790, -0.802054928131078700, -0.802025064614719340, -0.801995199093297200, -0.801965331566887100, -0.801935462035563650, -0.801905590499401020, -0.801875716958475040, +-0.801845841412859640, -0.801815963862629650, -0.801786084307859800, -0.801756202748624800, -0.801726319184999260, -0.801696433617057340, -0.801666546044874860, -0.801636656468526000, +-0.801606764888085580, -0.801576871303628200, -0.801546975715228700, -0.801517078122961690, -0.801487178526901990, -0.801457276927124320, -0.801427373323702950, -0.801397467716713720, +-0.801367560106230780, -0.801337650492328970, -0.801307738875083000, -0.801277825254567700, -0.801247909630857350, -0.801217992004027660, -0.801188072374153130, -0.801158150741308250, +-0.801128227105568080, -0.801098301467007450, -0.801068373825700950, -0.801038444181723430, -0.801008512535149930, -0.800978578886054620, -0.800948643234513310, -0.800918705580600410, +-0.800888765924390840, -0.800858824265959330, -0.800828880605380710, -0.800798934942729800, -0.800768987278081210, -0.800739037611510550, -0.800709085943092310, -0.800679132272901440, +-0.800649176601012650, -0.800619218927500990, -0.800589259252441290, -0.800559297575908380, -0.800529333897976650, -0.800499368218722250, -0.800469400538219360, -0.800439430856543010, +-0.800409459173768050, -0.800379485489969400, -0.800349509805222010, -0.800319532119600390, -0.800289552433180450, -0.800259570746036710, -0.800229587058243990, -0.800199601369877220, +-0.800169613681011470, -0.800139623991721780, -0.800109632302082980, -0.800079638612169570, -0.800049642922057600, -0.800019645231821560, -0.799989645541536290, -0.799959643851277050, +-0.799929640161118670, -0.799899634471136100, -0.799869626781403940, -0.799839617091998250, -0.799809605402993620, -0.799779591714464890, -0.799749576026487110, -0.799719558339135550, +-0.799689538652484930, -0.799659516966610530, -0.799629493281587390, -0.799599467597489900, -0.799569439914394330, -0.799539410232375180, -0.799509378551507500, -0.799479344871866340, +-0.799449309193526860, -0.799419271516563560, -0.799389231841052590, -0.799359190167068470, -0.799329146494686450, -0.799299100823981590, -0.799269053155028940, -0.799239003487903670, +-0.799208951822680920, -0.799178898159435770, -0.799148842498242810, -0.799118784839178310, -0.799088725182316880, -0.799058663527733580, -0.799028599875503680, -0.798998534225702220, +-0.798968466578403920, -0.798938396933684960, -0.798908325291620040, -0.798878251652284320, -0.798848176015752980, -0.798818098382101160, -0.798788018751404040, -0.798757937123736990, +-0.798727853499175080, -0.798697767877792900, -0.798667680259666950, -0.798637590644871720, -0.798607499033482600, -0.798577405425574650, -0.798547309821223240, -0.798517212220503540, +-0.798487112623490260, -0.798457011030259680, -0.798426907440886620, -0.798396801855446370, -0.798366694274013970, -0.798336584696664910, -0.798306473123474470, -0.798276359554517700, +-0.798246243989869650, -0.798216126429606380, -0.798186006873802920, -0.798155885322534340, -0.798125761775876130, -0.798095636233903450, -0.798065508696691680, -0.798035379164315660, +-0.798005247636851660, -0.797975114114374610, -0.797944978596959680, -0.797914841084682360, -0.797884701577618040, -0.797854560075841770, -0.797824416579429260, -0.797794271088455690, +-0.797764123602995760, -0.797733974123126190, -0.797703822648921700, -0.797673669180457570, -0.797643513717809280, -0.797613356261052340, -0.797583196810261350, -0.797553035365512920, +-0.797522871926881870, -0.797492706494443700, -0.797462539068273690, -0.797432369648447440, -0.797402198235040220, -0.797372024828127410, -0.797341849427784630, -0.797311672034086700, +-0.797281492647110120, -0.797251311266929830, -0.797221127893621210, -0.797190942527259860, -0.797160755167921060, -0.797130565815679870, -0.797100374470612770, -0.797070181132794710, +-0.797039985802301290, -0.797009788479207890, -0.796979589163589910, -0.796949387855523160, -0.796919184555082700, -0.796888979262344480, -0.796858771977383200, -0.796828562700275470, +-0.796798351431096450, -0.796768138169921420, -0.796737922916826100, -0.796707705671885980, -0.796677486435176660, -0.796647265206772980, -0.796617041986751760, -0.796586816775187940, +-0.796556589572157030, -0.796526360377734610, -0.796496129191996300, -0.796465896015017720, -0.796435660846874340, -0.796405423687641330, -0.796375184537395310, -0.796344943396211310, +-0.796314700264164950, -0.796284455141331840, -0.796254208027787570, -0.796223958923607760, -0.796193707828867560, -0.796163454743643690, -0.796133199668011100, -0.796102942602045500, +-0.796072683545822500, -0.796042422499417920, -0.796012159462907260, -0.795981894436366130, -0.795951627419870240, -0.795921358413494870, -0.795891087417316510, -0.795860814431410550, +-0.795830539455852470, -0.795800262490718110, -0.795769983536083080, -0.795739702592022540, -0.795709419658613190, -0.795679134735930440, -0.795648847824049770, -0.795618558923047000, +-0.795588268032997760, -0.795557975153977970, -0.795527680286063130, -0.795497383429329190, -0.795467084583851290, -0.795436783749706060, -0.795406480926968970, -0.795376176115715650, +-0.795345869316021910, -0.795315560527963480, -0.795285249751615630, -0.795254936987055180, -0.795224622234357410, -0.795194305493598150, -0.795163986764853000, -0.795133666048197910, +-0.795103343343708690, -0.795073018651461070, -0.795042691971530990, -0.795012363303993610, -0.794982032648925750, -0.794951700006402920, -0.794921365376500820, -0.794891028759295290, +-0.794860690154862160, -0.794830349563277360, -0.794800006984616170, -0.794769662418955410, -0.794739315866370590, -0.794708967326937410, -0.794678616800731820, -0.794648264287829750, +-0.794617909788306930, -0.794587553302239400, -0.794557194829702440, -0.794526834370772980, -0.794496471925526530, -0.794466107494038900, -0.794435741076385930, -0.794405372672643550, +-0.794375002282887820, -0.794344629907194120, -0.794314255545639280, -0.794283879198298790, -0.794253500865248710, -0.794223120546564740, -0.794192738242323060, -0.794162353952599490, +-0.794131967677470070, -0.794101579417010760, -0.794071189171296930, -0.794040796940405640, -0.794010402724412370, -0.793980006523393070, -0.793949608337423780, -0.793919208166580570, +-0.793888806010938700, -0.793858401870575330, -0.793827995745565950, -0.793797587635986620, -0.793767177541913280, -0.793736765463422090, -0.793706351400588870, -0.793675935353489900, +-0.793645517322201010, -0.793615097306797800, -0.793584675307357430, -0.793554251323955300, -0.793523825356667540, -0.793493397405570230, -0.793462967470739520, -0.793432535552250790, +-0.793402101650181210, -0.793371665764606380, -0.793341227895602460, -0.793310788043245510, -0.793280346207611450, -0.793249902388776570, -0.793219456586817030, -0.793189008801808760, +-0.793158559033827370, -0.793128107282950250, -0.793097653549252770, -0.793067197832811210, -0.793036740133701620, -0.793006280452000170, -0.792975818787783120, -0.792945355141125850, +-0.792914889512105870, -0.792884421900798550, -0.792853952307280290, -0.792823480731627010, -0.792793007173915100, -0.792762531634220720, -0.792732054112619930, -0.792701574609188440, +-0.792671093124003630, -0.792640609657141120, -0.792610124208676940, -0.792579636778687590, -0.792549147367249130, -0.792518655974437710, -0.792488162600329170, -0.792457667245000770, +-0.792427169908528240, -0.792396670590987730, -0.792366169292455510, -0.792335666013007980, -0.792305160752721170, -0.792274653511671590, -0.792244144289934730, -0.792213633087588080, +-0.792183119904707360, -0.792152604741368730, -0.792122087597648680, -0.792091568473623500, -0.792061047369369220, -0.792030524284961900, -0.791999999220478810, -0.791969472175995670, +-0.791938943151588860, -0.791908412147334760, -0.791877879163309650, -0.791847344199589690, -0.791816807256251480, -0.791786268333371180, -0.791755727431024740, -0.791725184549289530, +-0.791694639688241280, -0.791664092847956470, -0.791633544028511490, -0.791602993229982620, -0.791572440452445680, -0.791541885695978160, -0.791511328960656010, -0.791480770246555500, +-0.791450209553753000, -0.791419646882325020, -0.791389082232347940, -0.791358515603898250, -0.791327946997052110, -0.791297376411885580, -0.791266803848476250, -0.791236229306899850, +-0.791205652787232870, -0.791175074289551810, -0.791144493813933040, -0.791113911360453060, -0.791083326929187700, -0.791052740520214570, -0.791022152133609600, -0.790991561769449290, +-0.790960969427810020, -0.790930375108768400, -0.790899778812400810, -0.790869180538783740, -0.790838580287993140, -0.790807978060106720, -0.790777373855200310, -0.790746767673350500, +-0.790716159514633700, -0.790685549379126610, -0.790654937266905500, -0.790624323178046650, -0.790593707112627440, -0.790563089070724030, -0.790532469052412920, -0.790501847057770490, +-0.790471223086873560, -0.790440597139798640, -0.790409969216622100, -0.790379339317420100, -0.790348707442270370, -0.790318073591248840, -0.790287437764432110, -0.790256799961896790, +-0.790226160183719490, -0.790195518429976710, -0.790164874700744700, -0.790134228996100970, -0.790103581316121680, -0.790072931660883440, -0.790042280030462950, -0.790011626424936720, +-0.789980970844381350, -0.789950313288873660, -0.789919653758490050, -0.789888992253306890, -0.789858328773401790, -0.789827663318850790, -0.789796995889730620, -0.789766326486118110, +-0.789735655108089630, -0.789704981755721570, -0.789674306429091530, -0.789643629128275680, -0.789612949853350840, -0.789582268604393620, -0.789551585381480740, -0.789520900184688900, +-0.789490213014094720, -0.789459523869775140, -0.789428832751806090, -0.789398139660265620, -0.789367444595229670, -0.789336747556775190, -0.789306048544978880, -0.789275347559917350, +-0.789244644601667540, -0.789213939670305510, -0.789183232765909180, -0.789152523888554840, -0.789121813038319080, -0.789091100215278840, -0.789060385419510850, -0.789029668651091920, +-0.788998949910098780, -0.788968229196607810, -0.788937506510696720, -0.788906781852441900, -0.788876055221920060, -0.788845326619208140, -0.788814596044382870, -0.788783863497521160, +-0.788753128978699200, -0.788722392487995030, -0.788691654025484800, -0.788660913591245460, -0.788630171185353830, -0.788599426807886860, -0.788568680458921260, -0.788537932138533960, +-0.788507181846801240, -0.788476429583801150, -0.788445675349609960, -0.788414919144304620, -0.788384160967962040, -0.788353400820658970, -0.788322638702472430, -0.788291874613478720, +-0.788261108553755860, -0.788230340523380260, -0.788199570522428840, -0.788168798550978430, -0.788138024609106090, -0.788107248696888640, -0.788076470814403020, -0.788045690961726280, +-0.788014909138934790, -0.787984125346106510, -0.787953339583318040, -0.787922551850646080, -0.787891762148167810, -0.787860970475960150, -0.787830176834099500, -0.787799381222663910, +-0.787768583641729970, -0.787737784091374520, -0.787706982571674600, -0.787676179082707150, -0.787645373624549340, -0.787614566197278100, -0.787583756800970370, -0.787552945435702870, +-0.787522132101553420, -0.787491316798598630, -0.787460499526915550, -0.787429680286581220, -0.787398859077672820, -0.787368035900267160, -0.787337210754440850, -0.787306383640272060, +-0.787275554557837380, -0.787244723507213750, -0.787213890488478340, -0.787183055501708200, -0.787152218546980360, -0.787121379624372120, -0.787090538733959840, -0.787059695875821700, +-0.787028851050034280, -0.786998004256674880, -0.786967155495820300, -0.786936304767547950, -0.786905452071934740, -0.786874597409057520, -0.786843740778994220, -0.786812882181821550, +-0.786782021617616790, -0.786751159086456870, -0.786720294588419080, -0.786689428123580560, -0.786658559692018480, -0.786627689293809440, -0.786596816929031830, -0.786565942597762020, +-0.786535066300077410, -0.786504188036055150, -0.786473307805772400, -0.786442425609306440, -0.786411541446733750, -0.786380655318132840, -0.786349767223580300, -0.786318877163153300, +-0.786287985136929100, -0.786257091144984990, -0.786226195187398110, -0.786195297264245860, -0.786164397375605170, -0.786133495521553090, -0.786102591702167790, -0.786071685917525960, +-0.786040778167705010, -0.786009868452781980, -0.785978956772834360, -0.785948043127938760, -0.785917127518173660, -0.785886209943615690, -0.785855290404342210, -0.785824368900430500, +-0.785793445431957950, -0.785762519999001710, -0.785731592601639160, -0.785700663239947580, -0.785669731914003910, -0.785638798623886410, -0.785607863369671920, -0.785576926151437700, +-0.785545986969261260, -0.785515045823219850, -0.785484102713390750, -0.785453157639850910, -0.785422210602678690, -0.785391261601951050, -0.785360310637745140, -0.785329357710138450, +-0.785298402819208490, -0.785267445965032400, -0.785236487147687680, -0.785205526367251270, -0.785174563623801560, -0.785143598917415480, -0.785112632248170290, -0.785081663616143620, +-0.785050693021412730, -0.785019720464055220, -0.784988745944147800, -0.784957769461768980, -0.784926791016995810, -0.784895810609905650, -0.784864828240576020, -0.784833843909084280, +-0.784802857615507940, -0.784771869359924380, -0.784740879142410640, -0.784709886963045330, -0.784678892821905280, -0.784647896719067980, -0.784616898654610820, -0.784585898628611610, +-0.784554896641147530, -0.784523892692295720, -0.784492886782134690, -0.784461878910741480, -0.784430869078193480, -0.784399857284568400, -0.784368843529943630, -0.784337827814396760, +-0.784306810138005290, -0.784275790500846840, -0.784244768902998430, -0.784213745344538580, -0.784182719825544330, -0.784151692346093280, -0.784120662906263030, -0.784089631506131200, +-0.784058598145774610, -0.784027562825272200, -0.783996525544700780, -0.783965486304138090, -0.783934445103661730, -0.783903401943349180, -0.783872356823278160, -0.783841309743526170, +-0.783810260704171040, -0.783779209705289580, -0.783748156746960740, -0.783717101829261580, -0.783686044952269570, -0.783654986116062440, -0.783623925320717780, -0.783592862566313440, +-0.783561797852926230, -0.783530731180635210, -0.783499662549517310, -0.783468591959650350, -0.783437519411111840, -0.783406444903979480, -0.783375368438331110, -0.783344290014244220, +-0.783313209631796070, -0.783282127291065500, -0.783251042992129550, -0.783219956735066060, -0.783188868519952620, -0.783157778346867060, -0.783126686215886990, -0.783095592127089790, +-0.783064496080554060, -0.783033398076357080, -0.783002298114576560, -0.782971196195290430, -0.782940092318576200, -0.782908986484511790, -0.782877878693174930, -0.782846768944642780, +-0.782815657238994270, -0.782784543576306670, -0.782753427956657590, -0.782722310380125070, -0.782691190846786730, -0.782660069356720390, -0.782628945910003320, -0.782597820506714450, +-0.782566693146931060, -0.782535563830730860, -0.782504432558191800, -0.782473299329391690, -0.782442164144408260, -0.782411027003319440, -0.782379887906203160, -0.782348746853136490, +-0.782317603844198570, -0.782286458879466570, -0.782255311959018430, -0.782224163082932080, -0.782193012251285350, -0.782161859464155400, -0.782130704721621490, -0.782099548023760690, +-0.782068389370651150, -0.782037228762370470, -0.782006066198996930, -0.781974901680608010, -0.781943735207282000, -0.781912566779096600, -0.781881396396129190, -0.781850224058458940, +-0.781819049766163010, -0.781787873519319550, -0.781756695318006400, -0.781725515162301490, -0.781694333052282750, -0.781663148988027690, -0.781631962969615230, -0.781600774997122880, +-0.781569585070628680, -0.781538393190210460, -0.781507199355946260, -0.781476003567914130, -0.781444805826191800, -0.781413606130857090, -0.781382404481988810, -0.781351200879664590, +-0.781319995323962350, -0.781288787814960140, -0.781257578352735900, -0.781226366937367800, -0.781195153568933210, -0.781163938247511180, -0.781132720973179430, -0.781101501746015890, +-0.781070280566098510, -0.781039057433505430, -0.781007832348314720, -0.780976605310604530, -0.780945376320452130, -0.780914145377936910, -0.780882912483136350, -0.780851677636128510, +-0.780820440836991430, -0.780789202085803270, -0.780757961382642090, -0.780726718727585480, -0.780695474120712610, -0.780664227562100970, -0.780632979051828820, -0.780601728589974340, +-0.780570476176615460, -0.780539221811830330, -0.780507965495697230, -0.780476707228294100, -0.780445447009698760, -0.780414184839990370, -0.780382920719246420, -0.780351654647545300, +-0.780320386624964950, -0.780289116651583630, -0.780257844727478940, -0.780226570852730280, -0.780195295027415140, -0.780164017251611770, -0.780132737525398360, -0.780101455848853150, +-0.780070172222054210, -0.780038886645079920, -0.780007599118008320, -0.779976309640917240, -0.779945018213885950, -0.779913724836992060, -0.779882429510313950, -0.779851132233929660, +-0.779819833007917570, -0.779788531832355410, -0.779757228707322450, -0.779725923632896390, -0.779694616609155510, -0.779663307636178080, -0.779631996714042490, -0.779600683842826770, +-0.779569369022609430, -0.779538052253468620, -0.779506733535482170, -0.779475412868729340, -0.779444090253288090, -0.779412765689236560, -0.779381439176653150, -0.779350110715616110, +-0.779318780306203830, -0.779287447948494030, -0.779256113642566190, -0.779224777388497940, -0.779193439186367850, -0.779162099036254220, -0.779130756938235300, -0.779099412892389380, +-0.779068066898795040, -0.779036718957530020, -0.779005369068673680, -0.778974017232303860, -0.778942663448499050, -0.778911307717337630, -0.778879950038897870, -0.778848590413258270, +-0.778817228840496640, -0.778785865320692490, -0.778754499853923750, -0.778723132440268690, -0.778691763079805810, -0.778660391772613480, -0.778629018518770200, -0.778597643318354460, +-0.778566266171444420, -0.778534887078118350, -0.778503506038455530, -0.778472123052533990, -0.778440738120432020, -0.778409351242228320, -0.778377962418001280, -0.778346571647828610, +-0.778315178931790250, -0.778283784269963810, -0.778252387662427990, -0.778220989109261190, -0.778189588610541880, -0.778158186166348690, -0.778126781776759870, -0.778095375441854250, +-0.778063967161709560, -0.778032556936405490, -0.778001144766020110, -0.777969730650631800, -0.777938314590319150, -0.777906896585160770, -0.777875476635234600, -0.777844054740620240, +-0.777812630901395850, -0.777781205117639820, -0.777749777389430740, -0.777718347716847220, -0.777686916099967870, -0.777655482538871180, -0.777624047033635860, -0.777592609584339840, +-0.777561170191062740, -0.777529728853882830, -0.777498285572878590, -0.777466840348128630, -0.777435393179711550, -0.777403944067706080, -0.777372493012190020, -0.777341040013243450, +-0.777309585070944160, -0.777278128185371010, -0.777246669356602470, -0.777215208584717270, -0.777183745869794000, -0.777152281211911490, -0.777120814611147680, -0.777089346067582290, +-0.777057875581293580, -0.777026403152360270, -0.776994928780860850, -0.776963452466874150, -0.776931974210478880, -0.776900494011752980, -0.776869011870776500, -0.776837527787627490, +-0.776806041762384660, -0.776774553795126720, -0.776743063885932280, -0.776711572034880280, -0.776680078242049430, -0.776648582507518340, -0.776617084831365160, -0.776585585213669830, +-0.776554083654510620, -0.776522580153966140, -0.776491074712115200, -0.776459567329036650, -0.776428058004808520, -0.776396546739510860, -0.776365033533221840, -0.776333518386020270, +-0.776302001297984880, -0.776270482269194480, -0.776238961299727800, -0.776207438389663770, -0.776175913539081220, -0.776144386748058190, -0.776112858016674840, -0.776081327345009340, +-0.776049794733140510, -0.776018260181147280, -0.775986723689108260, -0.775955185257101940, -0.775923644885208260, -0.775892102573505380, -0.775860558322072240, -0.775829012130987760, +-0.775797464000330780, -0.775765913930180020, -0.775734361920614620, -0.775702807971713200, -0.775671252083554250, -0.775639694256217820, -0.775608134489782050, -0.775576572784325900, +-0.775545009139928410, -0.775513443556668290, -0.775481876034624710, -0.775450306573875700, -0.775418735174501660, -0.775387161836580740, -0.775355586560191880, -0.775324009345414010, +-0.775292430192326190, -0.775260849101007230, -0.775229266071536190, -0.775197681103991450, -0.775166094198453060, -0.775134505354999390, -0.775102914573709500, -0.775071321854662320, +-0.775039727197936790, -0.775008130603611960, -0.774976532071766310, -0.774944931602479790, -0.774913329195831000, -0.774881724851898880, -0.774850118570762470, -0.774818510352500710, +-0.774786900197192760, -0.774755288104917560, -0.774723674075753490, -0.774692058109780810, -0.774660440207078030, -0.774628820367724070, -0.774597198591798100, -0.774565574879379160, +-0.774533949230546300, -0.774502321645378020, -0.774470692123954470, -0.774439060666354150, -0.774407427272656210, -0.774375791942939710, -0.774344154677283680, -0.774312515475767290, +-0.774280874338469590, -0.774249231265469740, -0.774217586256846340, -0.774185939312679430, -0.774154290433047620, -0.774122639618030180, -0.774090986867706050, -0.774059332182154610, +-0.774027675561454130, -0.773996017005685100, -0.773964356514926010, -0.773932694089256020, -0.773901029728754300, -0.773869363433499990, -0.773837695203572260, -0.773806025039050380, +-0.773774352940013400, -0.773742678906539920, -0.773711002938710310, -0.773679325036603190, -0.773647645200297830, -0.773615963429873380, -0.773584279725408890, -0.773552594086983850, +-0.773520906514676640, -0.773489217008567760, -0.773457525568735820, -0.773425832195260180, -0.773394136888219790, -0.773362439647694130, -0.773330740473762380, -0.773299039366503790, +-0.773267336325997090, -0.773235631352322540, -0.773203924445558850, -0.773172215605785530, -0.773140504833081500, -0.773108792127526370, -0.773077077489199070, -0.773045360918178660, +-0.773013642414545290, -0.772981921978377890, -0.772950199609755750, -0.772918475308758010, -0.772886749075464060, -0.772855020909953390, -0.772823290812305050, -0.772791558782597980, +-0.772759824820912430, -0.772728088927327470, -0.772696351101922250, -0.772664611344776150, -0.772632869655968560, -0.772601126035578730, -0.772569380483685510, -0.772537633000369480, +-0.772505883585709260, -0.772474132239784450, -0.772442378962674200, -0.772410623754458130, -0.772378866615215380, -0.772347107545025560, -0.772315346543967940, -0.772283583612121350, +-0.772251818749566390, -0.772220051956381880, -0.772188283232647210, -0.772156512578441870, -0.772124739993845230, -0.772092965478936240, -0.772061189033795390, -0.772029410658501500, +-0.771997630353134180, -0.771965848117772690, -0.771934063952496640, -0.771902277857385410, -0.771870489832518380, -0.771838699877975270, -0.771806907993834780, -0.771775114180177630, +-0.771743318437082660, -0.771711520764629340, -0.771679721162897290, -0.771647919631966000, -0.771616116171914830, -0.771584310782822860, -0.771552503464770560, -0.771520694217837090, +-0.771488883042101840, -0.771457069937644400, -0.771425254904544390, -0.771393437942881070, -0.771361619052734260, -0.771329798234182800, -0.771297975487307500, -0.771266150812187190, +-0.771234324208901480, -0.771202495677529960, -0.771170665218152250, -0.771138832830847830, -0.771106998515695750, -0.771075162272776840, -0.771043324102169910, -0.771011484003954690, +-0.770979641978210780, -0.770947798025017780, -0.770915952144455300, -0.770884104336602930, -0.770852254601539720, -0.770820402939346390, -0.770788549350102100, -0.770756693833886450, +-0.770724836390779040, -0.770692977020859590, -0.770661115724207700, -0.770629252500902420, -0.770597387351024570, -0.770565520274653190, -0.770533651271868130, -0.770501780342748850, +-0.770469907487375210, -0.770438032705826780, -0.770406155998183180, -0.770374277364524240, -0.770342396804929000, -0.770310514319478390, -0.770278629908251580, -0.770246743571328050, +-0.770214855308787750, -0.770182965120710270, -0.770151073007174780, -0.770119178968262210, -0.770087283004051710, -0.770055385114623010, -0.770023485300055820, -0.769991583560429960, +-0.769959679895825030, -0.769927774306321090, -0.769895866791997510, -0.769863957352933780, -0.769832045989210730, -0.769800132700907640, -0.769768217488104090, -0.769736300350880030, +-0.769704381289315290, -0.769672460303489570, -0.769640537393482040, -0.769608612559373850, -0.769576685801244050, -0.769544757119172580, -0.769512826513239270, -0.769480893983523820, +-0.769448959530106170, -0.769417023153066040, -0.769385084852482800, -0.769353144628437510, -0.769321202481009330, -0.769289258410278070, -0.769257312416323780, -0.769225364499226070, +-0.769193414659065100, -0.769161462895919910, -0.769129509209871660, -0.769097553600999630, -0.769065596069383740, -0.769033636615103930, -0.769001675238239920, -0.768969711938871760, +-0.768937746717079370, -0.768905779572941930, -0.768873810506540690, -0.768841839517954930, -0.768809866607264470, -0.768777891774549470, -0.768745915019889760, -0.768713936343365160, +-0.768681955745055160, -0.768649973225040920, -0.768617988783401710, -0.768586002420217460, -0.768554014135568230, -0.768522023929534060, -0.768490031802194770, -0.768458037753630310, +-0.768426041783920820, -0.768394043893145700, -0.768362044081386090, -0.768330042348721260, -0.768298038695231390, -0.768266033120996390, -0.768234025626096330, -0.768202016210610570, +-0.768170004874620390, -0.768137991618205170, -0.768105976441445070, -0.768073959344419910, -0.768041940327209960, -0.768009919389895050, -0.767977896532555440, -0.767945871755270960, +-0.767913845058121320, -0.767881816441187690, -0.767849785904549440, -0.767817753448286730, -0.767785719072479610, -0.767753682777208240, -0.767721644562552760, -0.767689604428592460, +-0.767657562375408720, -0.767625518403081130, -0.767593472511689750, -0.767561424701314610, -0.767529374972035990, -0.767497323323933940, -0.767465269757088510, -0.767433214271579400, +-0.767401156867487780, -0.767369097544893240, -0.767337036303876060, -0.767304973144516180, -0.767272908066893970, -0.767240841071089360, -0.767208772157182190, -0.767176701325253620, +-0.767144628575383350, -0.767112553907651430, -0.767080477322138130, -0.767048398818923730, -0.767016318398088260, -0.766984236059712000, -0.766952151803874550, -0.766920065630657400, +-0.766887977540139930, -0.766855887532402640, -0.766823795607525560, -0.766791701765589080, -0.766759606006673260, -0.766727508330857900, -0.766695408738224280, -0.766663307228852230, +-0.766631203802821790, -0.766599098460213460, -0.766566991201107380, -0.766534882025583730, -0.766502770933722990, -0.766470657925605200, -0.766438543001310310, -0.766406426160919580, +-0.766374307404512730, -0.766342186732170140, -0.766310064143972180, -0.766277939639998910, -0.766245813220330360, -0.766213684885047820, -0.766181554634230990, -0.766149422467960360, +-0.766117288386316100, -0.766085152389378690, -0.766053014477228290, -0.766020874649945500, -0.765988732907610380, -0.765956589250302970, -0.765924443678104530, -0.765892296191095110, +-0.765860146789354880, -0.765827995472964320, -0.765795842242003810, -0.765763687096553620, -0.765731530036693700, -0.765699371062505520, -0.765667210174068800, -0.765635047371464150, +-0.765602882654771940, -0.765570716024072450, -0.765538547479446160, -0.765506377020973570, -0.765474204648734390, -0.765442030362810220, -0.765409854163281110, -0.765377676050227330, +-0.765345496023729370, -0.765313314083867600, -0.765281130230722530, -0.765248944464374190, -0.765216756784903970, -0.765184567192391810, -0.765152375686918300, -0.765120182268563930, +-0.765087986937408980, -0.765055789693534050, -0.765023590537019740, -0.764991389467945870, -0.764959186486394050, -0.764926981592444320, -0.764894774786177070, -0.764862566067672890, +-0.764830355437012390, -0.764798142894275950, -0.764765928439543500, -0.764733712072896870, -0.764701493794415990, -0.764669273604181350, -0.764637051502273460, -0.764604827488773010, +-0.764572601563760500, -0.764540373727316420, -0.764508143979521490, -0.764475912320455640, -0.764443678750200470, -0.764411443268836250, -0.764379205876443260, -0.764346966573102420, +-0.764314725358894000, -0.764282482233898270, -0.764250237198196960, -0.764217990251869980, -0.764185741394998060, -0.764153490627661800, -0.764121237949941800, -0.764088983361918660, +-0.764056726863673100, -0.764024468455285710, -0.763992208136836660, -0.763959945908407550, -0.763927681770078640, -0.763895415721930540, -0.763863147764043850, -0.763830877896499280, +-0.763798606119377550, -0.763766332432758710, -0.763734056836724680, -0.763701779331355410, -0.763669499916731830, -0.763637218592934320, -0.763604935360043920, -0.763572650218141140, +-0.763540363167306670, -0.763508074207620790, -0.763475783339165210, -0.763443490562020210, -0.763411195876266600, -0.763378899281984880, -0.763346600779255870, -0.763314300368160500, +-0.763281998048778720, -0.763249693821192570, -0.763217387685482080, -0.763185079641728210, -0.763152769690011560, -0.763120457830413050, -0.763088144063013400, -0.763055828387893430, +-0.763023510805133200, -0.762991191314814850, -0.762958869917018560, -0.762926546611825020, -0.762894221399315060, -0.762861894279569630, -0.762829565252669540, -0.762797234318694840, +-0.762764901477727690, -0.762732566729848240, -0.762700230075137430, -0.762667891513675980, -0.762635551045544810, -0.762603208670824760, -0.762570864389596760, -0.762538518201941630, +-0.762506170107939530, -0.762473820107672620, -0.762441468201221160, -0.762409114388665990, -0.762376758670088030, -0.762344401045568220, -0.762312041515186830, -0.762279680079025910, +-0.762247316737165730, -0.762214951489687320, -0.762182584336671520, -0.762150215278199260, -0.762117844314351480, -0.762085471445209110, -0.762053096670852970, -0.762020719991363560, +-0.761988341406822920, -0.761955960917311440, -0.761923578522910150, -0.761891194223699770, -0.761858808019761470, -0.761826419911175500, -0.761794029898024140, -0.761761637980387650, +-0.761729244158347200, -0.761696848431983490, -0.761664450801377680, -0.761632051266610820, -0.761599649827763740, -0.761567246484917580, -0.761534841238152740, -0.761502434087551360, +-0.761470025033193940, -0.761437614075161310, -0.761405201213534830, -0.761372786448395230, -0.761340369779823670, -0.761307951207900620, -0.761275530732708370, -0.761243108354327180, +-0.761210684072838320, -0.761178257888322610, -0.761145829800861320, -0.761113399810535500, -0.761080967917426190, -0.761048534121613770, -0.761016098423180630, -0.760983660822207360, +-0.760951221318774800, -0.760918779912964300, -0.760886336604856720, -0.760853891394533410, -0.760821444282074770, -0.760788995267563050, -0.760756544351078870, -0.760724091532703370, +-0.760691636812517610, -0.760659180190602750, -0.760626721667039930, -0.760594261241910320, -0.760561798915295070, -0.760529334687274680, -0.760496868557931640, -0.760464400527346320, +-0.760431930595600100, -0.760399458762773930, -0.760366985028949280, -0.760334509394206440, -0.760302031858627990, -0.760269552422294440, -0.760237071085286930, -0.760204587847686850, +-0.760172102709575250, -0.760139615671033500, -0.760107126732142650, -0.760074635892983850, -0.760042143153638050, -0.760009648514187400, -0.759977151974712610, -0.759944653535294950, +-0.759912153196015680, -0.759879650956956090, -0.759847146818196650, -0.759814640779819970, -0.759782132841906770, -0.759749623004538190, -0.759717111267795510, -0.759684597631760110, +-0.759652082096513140, -0.759619564662136090, -0.759587045328710020, -0.759554524096315850, -0.759522000965035860, -0.759489475934950970, -0.759456949006142250, -0.759424420178691270, +-0.759391889452679210, -0.759359356828187450, -0.759326822305296690, -0.759294285884089430, -0.759261747564646480, -0.759229207347049240, -0.759196665231378850, -0.759164121217716810, +-0.759131575306144500, -0.759099027496743290, -0.759066477789593910, -0.759033926184778940, -0.759001372682378990, -0.758968817282475780, -0.758936259985150570, -0.758903700790484640, +-0.758871139698559350, -0.758838576709455760, -0.758806011823256240, -0.758773445040041740, -0.758740876359893620, -0.758708305782893390, -0.758675733309122300, -0.758643158938661850, +-0.758610582671593540, -0.758578004507998840, -0.758545424447958470, -0.758512842491555040, -0.758480258638869590, -0.758447672889983600, -0.758415085244978250, -0.758382495703935230, +-0.758349904266935490, -0.758317310934061520, -0.758284715705394240, -0.758252118581015160, -0.758219519561005860, -0.758186918645447740, -0.758154315834422280, -0.758121711128011080, +-0.758089104526295520, -0.758056496029356650, -0.758023885637277180, -0.757991273350137940, -0.757958659168020520, -0.757926043091006530, -0.757893425119177340, -0.757860805252614120, +-0.757828183491399350, -0.757795559835614090, -0.757762934285340030, -0.757730306840658670, -0.757697677501651400, -0.757665046268400030, -0.757632413140986060, -0.757599778119490970, +-0.757567141203995930, -0.757534502394583640, -0.757501861691335040, -0.757469219094331740, -0.757436574603655540, -0.757403928219387730, -0.757371279941610240, -0.757338629770403890, +-0.757305977705851620, -0.757273323748034350, -0.757240667897033810, -0.757208010152931490, -0.757175350515809310, -0.757142688985748660, -0.757110025562831250, -0.757077360247138230, +-0.757044693038752440, -0.757012023937754910, -0.756979352944227250, -0.756946680058251280, -0.756914005279908600, -0.756881328609280810, -0.756848650046449190, -0.756815969591496550, +-0.756783287244503940, -0.756750603005553190, -0.756717916874725890, -0.756685228852103760, -0.756652538937768630, -0.756619847131802080, -0.756587153434285950, -0.756554457845301400, +-0.756521760364931240, -0.756489060993256630, -0.756456359730359410, -0.756423656576321270, -0.756390951531224040, -0.756358244595148890, -0.756325535768178630, -0.756292825050394520, +-0.756260112441878410, -0.756227397942711880, -0.756194681552976980, -0.756161963272755420, -0.756129243102128920, -0.756096521041179190, -0.756063797089987720, -0.756031071248637330, +-0.755998343517209180, -0.755965613895785200, -0.755932882384447110, -0.755900148983276950, -0.755867413692355880, -0.755834676511766720, -0.755801937441590970, -0.755769196481910210, +-0.755736453632806620, -0.755703708894361890, -0.755670962266657750, -0.755638213749776360, -0.755605463343799300, -0.755572711048808190, -0.755539956864885730, -0.755507200792113420, +-0.755474442830573080, -0.755441682980346640, -0.755408921241516040, -0.755376157614163100, -0.755343392098369200, -0.755310624694217390, -0.755277855401789040, -0.755245084221165990, +-0.755212311152430260, -0.755179536195663800, -0.755146759350948440, -0.755113980618366210, -0.755081199997998500, -0.755048417489928350, -0.755015633094237030, -0.754982846811006800, +-0.754950058640319390, -0.754917268582256830, -0.754884476636901060, -0.754851682804333570, -0.754818887084637400, -0.754786089477894050, -0.754753289984185450, -0.754720488603593750, +-0.754687685336200680, -0.754654880182088480, -0.754622073141339000, -0.754589264214033720, -0.754556453400256010, -0.754523640700087040, -0.754490826113609070, -0.754458009640903930, +-0.754425191282053880, -0.754392371037140850, -0.754359548906246240, -0.754326724889453290, -0.754293898986843630, -0.754261071198499170, -0.754228241524502070, -0.754195409964934390, +-0.754162576519878170, -0.754129741189415450, -0.754096903973628390, -0.754064064872598580, -0.754031223886409090, -0.753998381015141610, -0.753965536258878080, -0.753932689617700770, +-0.753899841091691720, -0.753866990680932550, -0.753834138385506390, -0.753801284205494970, -0.753768428140980330, -0.753735570192044510, -0.753702710358769900, -0.753669848641238540, +-0.753636985039532360, -0.753604119553733850, -0.753571252183924510, -0.753538382930187490, -0.753505511792604610, -0.753472638771257920, -0.753439763866229680, -0.753406887077601950, +-0.753374008405457100, -0.753341127849876500, -0.753308245410943770, -0.753275361088740380, -0.753242474883348720, -0.753209586794850730, -0.753176696823328770, -0.753143804968865130, +-0.753110911231541950, -0.753078015611440940, -0.753045118108645490, -0.753012218723237200, -0.752979317455298340, -0.752946414304911270, -0.752913509272158050, -0.752880602357121060, +-0.752847693559882130, -0.752814782880524390, -0.752781870319129800, -0.752748955875780500, -0.752716039550558770, -0.752683121343546980, -0.752650201254827400, -0.752617279284482300, +-0.752584355432593500, -0.752551429699244270, -0.752518502084516540, -0.752485572588492470, -0.752452641211254550, -0.752419707952885040, -0.752386772813466220, -0.752353835793079910, +-0.752320896891809590, -0.752287956109736980, -0.752255013446944450, -0.752222068903514510, -0.752189122479529400, -0.752156174175071410, -0.752123223990222910, -0.752090271925066500, +-0.752057317979683780, -0.752024362154158240, -0.751991404448571930, -0.751958444863007110, -0.751925483397546170, -0.751892520052271470, -0.751859554827264850, -0.751826587722610020, +-0.751793618738388680, -0.751760647874683220, -0.751727675131576230, -0.751694700509150100, -0.751661724007487100, -0.751628745626669930, -0.751595765366780850, -0.751562783227901710, +-0.751529799210116200, -0.751496813313506260, -0.751463825538154270, -0.751430835884142610, -0.751397844351553990, -0.751364850940470670, -0.751331855650974710, -0.751298858483149590, +-0.751265859437077470, -0.751232858512840610, -0.751199855710521610, -0.751166851030202980, -0.751133844471967290, -0.751100836035896950, -0.751067825722073870, -0.751034813530581880, +-0.751001799461502810, -0.750968783514919250, -0.750935765690913690, -0.750902745989568850, -0.750869724410967000, -0.750836700955190390, -0.750803675622322530, -0.750770648412445450, +-0.750737619325641870, -0.750704588361994160, -0.750671555521584930, -0.750638520804496890, -0.750605484210812520, -0.750572445740613880, -0.750539405393984670, -0.750506363171007050, +-0.750473319071763400, -0.750440273096336430, -0.750407225244808960, -0.750374175517263260, -0.750341123913781600, -0.750308070434447690, -0.750275015079343580, -0.750241957848551970, +-0.750208898742155460, -0.750175837760236770, -0.750142774902878400, -0.750109710170163150, -0.750076643562173520, -0.750043575078991780, -0.750010504720701740, -0.749977432487385350, +-0.749944358379125430, -0.749911282396004570, -0.749878204538105500, -0.749845124805510350, -0.749812043198302970, -0.749778959716565500, -0.749745874360380650, -0.749712787129831030, +-0.749679698024999560, -0.749646607045968750, -0.749613514192821520, -0.749580419465640360, -0.749547322864507760, -0.749514224389507210, -0.749481124040721310, -0.749448021818232450, +-0.749414917722123650, -0.749381811752477420, -0.749348703909376800, -0.749315594192903720, -0.749282482603142340, -0.749249369140174700, -0.749216253804083630, -0.749183136594951950, +-0.749150017512862480, -0.749116896557897930, -0.749083773730141010, -0.749050649029674220, -0.749017522456581370, -0.748984394010944740, -0.748951263692847040, -0.748918131502371190, +-0.748884997439600130, -0.748851861504616470, -0.748818723697502580, -0.748785584018342500, -0.748752442467218390, -0.748719299044213300, -0.748686153749409830, -0.748653006582891020, +-0.748619857544739810, -0.748586706635038790, -0.748553553853870460, -0.748520399201318850, -0.748487242677466250, -0.748454084282395570, -0.748420924016189650, -0.748387761878931410, +-0.748354597870703800, -0.748321431991589070, -0.748288264241671270, -0.748255094621032900, -0.748221923129756880, -0.748188749767925930, -0.748155574535623200, -0.748122397432931410, +-0.748089218459933700, -0.748056037616713020, -0.748022854903351520, -0.747989670319933580, -0.747956483866541340, -0.747923295543257980, -0.747890105350166310, -0.747856913287349490, +-0.747823719354889780, -0.747790523552871340, -0.747757325881376560, -0.747724126340488460, -0.747690924930290100, -0.747657721650864300, -0.747624516502294330, -0.747591309484663010, +-0.747558100598053390, -0.747524889842548060, -0.747491677218230950, -0.747458462725184790, -0.747425246363492390, -0.747392028133236800, -0.747358808034501280, -0.747325586067368650, +-0.747292362231921410, -0.747259136528243940, -0.747225908956418610, -0.747192679516528570, -0.747159448208656760, -0.747126215032886340, -0.747092979989300470, -0.747059743077982060, +-0.747026504299013740, -0.746993263652479640, -0.746960021138462490, -0.746926776757045330, -0.746893530508311200, -0.746860282392343140, -0.746827032409224430, -0.746793780559037670, +-0.746760526841866890, -0.746727271257794810, -0.746694013806904590, -0.746660754489279380, -0.746627493305002220, -0.746594230254156390, -0.746560965336824920, -0.746527698553090420, +-0.746494429903037270, -0.746461159386748060, -0.746427887004306070, -0.746394612755794330, -0.746361336641295890, -0.746328058660894240, -0.746294778814671880, -0.746261497102713060, +-0.746228213525100600, -0.746194928081917560, -0.746161640773247200, -0.746128351599172680, -0.746095060559777370, -0.746061767655144430, -0.746028472885357010, -0.745995176250497830, +-0.745961877750651260, -0.745928577385900020, -0.745895275156327360, -0.745861971062016460, -0.745828665103050680, -0.745795357279512630, -0.745762047591486900, -0.745728736039055870, +-0.745695422622303040, -0.745662107341311780, -0.745628790196165130, -0.745595471186946470, -0.745562150313739290, -0.745528827576626530, -0.745495502975691340, -0.745462176511017870, +-0.745428848182688840, -0.745395517990787850, -0.745362185935398050, -0.745328852016602820, -0.745295516234485310, -0.745262178589128470, -0.745228839080616880, -0.745195497709033150, +-0.745162154474460550, -0.745128809376982670, -0.745095462416682790, -0.745062113593644270, -0.745028762907950390, -0.744995410359683970, -0.744962055948929720, -0.744928699675770360, +-0.744895341540289140, -0.744861981542569660, -0.744828619682695200, -0.744795255960749140, -0.744761890376814390, -0.744728522930975470, -0.744695153623315290, -0.744661782453917230, +-0.744628409422864680, -0.744595034530241120, -0.744561657776129930, -0.744528279160614700, -0.744494898683778050, -0.744461516345704900, -0.744428132146477850, -0.744394746086180500, +-0.744361358164896240, -0.744327968382708650, -0.744294576739701120, -0.744261183235956580, -0.744227787871559630, -0.744194390646593210, -0.744160991561140790, -0.744127590615285990, +-0.744094187809112070, -0.744060783142702850, -0.744027376616141490, -0.743993968229511800, -0.743960557982896620, -0.743927145876380650, -0.743893731910046710, -0.743860316083978510, +-0.743826898398259550, -0.743793478852973310, -0.743760057448202730, -0.743726634184032620, -0.743693209060545920, -0.743659782077826350, -0.743626353235957160, -0.743592922535022070, +-0.743559489975104790, -0.743526055556288700, -0.743492619278657510, -0.743459181142294150, -0.743425741147283440, -0.743392299293708430, -0.743358855581652600, -0.743325410011199670, +-0.743291962582433240, -0.743258513295436800, -0.743225062150293600, -0.743191609147088260, -0.743158154285903930, -0.743124697566824200, -0.743091238989932790, -0.743057778555313190, +-0.743024316263049210, -0.742990852113224460, -0.742957386105921880, -0.742923918241226500, -0.742890448519221370, -0.742856976939989980, -0.742823503503616370, -0.742790028210183810, +-0.742756551059776230, -0.742723072052476670, -0.742689591188369970, -0.742656108467539380, -0.742622623890068610, -0.742589137456041160, -0.742555649165540840, -0.742522159018651370, +-0.742488667015456680, -0.742455173156039590, -0.742421677440485150, -0.742388179868876510, -0.742354680441297490, -0.742321179157831800, -0.742287676018563050, -0.742254171023575160, +-0.742220664172951290, -0.742187155466776270, -0.742153644905133470, -0.742120132488106490, -0.742086618215779260, -0.742053102088235380, -0.742019584105558790, -0.741986064267833200, +-0.741952542575142540, -0.741919019027569850, -0.741885493625200180, -0.741851966368116790, -0.741818437256403510, -0.741784906290144150, -0.741751373469422550, -0.741717838794321960, +-0.741684302264927210, -0.741650763881321890, -0.741617223643589510, -0.741583681551814090, -0.741550137606079570, -0.741516591806469670, -0.741483044153068200, -0.741449494645959110, +-0.741415943285225860, -0.741382390070953190, -0.741348835003224680, -0.741315278082123940, -0.741281719307735120, -0.741248158680141930, -0.741214596199427760, -0.741181031865677630, +-0.741147465678975050, -0.741113897639403720, -0.741080327747047680, -0.741046756001990880, -0.741013182404317130, -0.740979606954110360, -0.740946029651454730, -0.740912450496433280, +-0.740878869489131290, -0.740845286629632230, -0.740811701918019930, -0.740778115354378430, -0.740744526938791560, -0.740710936671343360, -0.740677344552117200, -0.740643750581198360, +-0.740610154758670090, -0.740576557084616560, -0.740542957559121470, -0.740509356182269100, -0.740475752954143250, -0.740442147874827980, -0.740408540944406890, -0.740374932162964900, +-0.740341321530585740, -0.740307709047353210, -0.740274094713351370, -0.740240478528664260, -0.740206860493376030, -0.740173240607570060, -0.740139618871331510, -0.740105995284743970, +-0.740072369847891490, -0.740038742560858000, -0.740005113423727660, -0.739971482436584620, -0.739937849599512810, -0.739904214912596280, -0.739870578375918740, -0.739836939989565350, +-0.739803299753619580, -0.739769657668165600, -0.739736013733287460, -0.739702367949069180, -0.739668720315594500, -0.739635070832948660, -0.739601419501215050, -0.739567766320477830, +-0.739534111290821360, -0.739500454412329480, -0.739466795685086550, -0.739433135109176520, -0.739399472684683760, -0.739365808411691640, -0.739332142290285650, -0.739298474320549400, +-0.739264804502566820, -0.739231132836422280, -0.739197459322199930, -0.739163783959983280, -0.739130106749857800, -0.739096427691907090, -0.739062746786215200, -0.739029064032866610, +-0.738995379431945270, -0.738961692983535420, -0.738928004687721350, -0.738894314544587320, -0.738860622554216920, -0.738826928716695530, -0.738793233032106870, -0.738759535500535080, +-0.738725836122064440, -0.738692134896779210, -0.738658431824763650, -0.738624726906101480, -0.738591020140878070, -0.738557311529177030, -0.738523601071082720, -0.738489888766679540, +-0.738456174616051400, -0.738422458619283020, -0.738388740776458440, -0.738355021087661490, -0.738321299552977430, -0.738287576172490190, -0.738253850946284040, -0.738220123874443250, +-0.738186394957052070, -0.738152664194195120, -0.738118931585955760, -0.738085197132419600, -0.738051460833670570, -0.738017722689792820, -0.737983982700870730, -0.737950240866988790, +-0.737916497188231160, -0.737882751664682310, -0.737849004296426640, -0.737815255083547840, -0.737781504026131520, -0.737747751124261390, -0.737713996378021820, -0.737680239787497300, +-0.737646481352772220, -0.737612721073930390, -0.737578958951057300, -0.737545194984236760, -0.737511429173553280, -0.737477661519091220, -0.737443892020935080, -0.737410120679169110, +-0.737376347493877930, -0.737342572465145780, -0.737308795593056620, -0.737275016877696140, -0.737241236319148060, -0.737207453917496870, -0.737173669672827160, -0.737139883585223200, +-0.737106095654768920, -0.737072305881550040, -0.737038514265650260, -0.737004720807154400, -0.736970925506146620, -0.736937128362711520, -0.736903329376933700, -0.736869528548897420, +-0.736835725878687400, -0.736801921366387450, -0.736768115012083280, -0.736734306815858830, -0.736700496777798590, -0.736666684897987150, -0.736632871176509000, -0.736599055613448740, +-0.736565238208890080, -0.736531418962918960, -0.736497597875619410, -0.736463774947075820, -0.736429950177372780, -0.736396123566594780, -0.736362295114826540, -0.736328464822152640, +-0.736294632688656910, -0.736260798714425180, -0.736226962899541370, -0.736193125244090310, -0.736159285748156370, -0.736125444411824260, -0.736091601235178470, -0.736057756218303160, +-0.736023909361283920, -0.735990060664205030, -0.735956210127150960, -0.735922357750206310, -0.735888503533455920, -0.735854647476984150, -0.735820789580875710, -0.735786929845214770, +-0.735753068270087130, -0.735719204855576850, -0.735685339601768410, -0.735651472508746740, -0.735617603576596450, -0.735583732805402010, -0.735549860195247710, -0.735515985746219240, +-0.735482109458400980, -0.735448231331877310, -0.735414351366733170, -0.735380469563053140, -0.735346585920921840, -0.735312700440424180, -0.735278813121644780, -0.735244923964667670, +-0.735211032969578790, -0.735177140136462510, -0.735143245465403220, -0.735109348956485940, -0.735075450609795180, -0.735041550425415300, -0.735007648403432020, -0.734973744543929720, +-0.734939838846992990, -0.734905931312706760, -0.734872021941155640, -0.734838110732424440, -0.734804197686597990, -0.734770282803761110, -0.734736366083997840, -0.734702447527394220, +-0.734668527134034520, -0.734634604904003560, -0.734600680837386060, -0.734566754934266820, -0.734532827194730680, -0.734498897618862000, -0.734464966206746510, -0.734431032958468680, +-0.734397097874113220, -0.734363160953765080, -0.734329222197509070, -0.734295281605430010, -0.734261339177612600, -0.734227394914141350, -0.734193448815102290, -0.734159500880579460, +-0.734125551110657910, -0.734091599505422580, -0.734057646064958160, -0.734023690789349590, -0.733989733678681370, -0.733955774733039190, -0.733921813952507660, -0.733887851337171710, +-0.733853886887116060, -0.733819920602425620, -0.733785952483185460, -0.733751982529480370, -0.733718010741394750, -0.733684037119014640, -0.733650061662424520, -0.733616084371709220, +-0.733582105246953780, -0.733548124288242900, -0.733514141495661850, -0.733480156869294800, -0.733446170409227990, -0.733412182115545710, -0.733378191988332980, -0.733344200027674860, +-0.733310206233656170, -0.733276210606361940, -0.733242213145877230, -0.733208213852286960, -0.733174212725675620, -0.733140209766129260, -0.733106204973732360, -0.733072198348569960, +-0.733038189890727110, -0.733004179600288850, -0.732970167477339450, -0.732936153521965170, -0.732902137734250610, -0.732868120114280710, -0.732834100662140500, -0.732800079377915030, +-0.732766056261689340, -0.732732031313548470, -0.732698004533577580, -0.732663975921861050, -0.732629945478485260, -0.732595913203534570, -0.732561879097094140, -0.732527843159248900, +-0.732493805390084130, -0.732459765789684750, -0.732425724358135470, -0.732391681095522440, -0.732357636001930160, -0.732323589077443880, -0.732289540322148550, -0.732255489736129420, +-0.732221437319471540, -0.732187383072260060, -0.732153326994579580, -0.732119269086516260, -0.732085209348154910, -0.732051147779580470, -0.732017084380878090, -0.731983019152133150, +-0.731948952093430580, -0.731914883204854980, -0.731880812486492840, -0.731846739938428750, -0.731812665560747640, -0.731778589353535010, -0.731744511316875790, -0.731710431450855350, +-0.731676349755558840, -0.731642266231070870, -0.731608180877477810, -0.731574093694864260, -0.731540004683315480, -0.731505913842916740, -0.731471821173753200, -0.731437726675910120, +-0.731403630349472090, -0.731369532194525610, -0.731335432211155270, -0.731301330399446450, -0.731267226759484190, -0.731233121291353870, -0.731199013995140760, -0.731164904870930110, +-0.731130793918807200, -0.731096681138856840, -0.731062566531165190, -0.731028450095817290, -0.730994331832898080, -0.730960211742493150, -0.730926089824687650, -0.730891966079566410, +-0.730857840507215810, -0.730823713107720540, -0.730789583881166100, -0.730755452827637540, -0.730721319947220560, -0.730687185240000090, -0.730653048706061740, -0.730618910345490760, +-0.730584770158371980, -0.730550628144791770, -0.730516484304835070, -0.730482338638587030, -0.730448191146133240, -0.730414041827558980, -0.730379890682949620, -0.730345737712389860, +-0.730311582915966430, -0.730277426293764020, -0.730243267845868130, -0.730209107572363900, -0.730174945473337060, -0.730140781548872740, -0.730106615799056560, -0.730072448223973100, +-0.730038278823709310, -0.730004107598349660, -0.729969934547979870, -0.729935759672685200, -0.729901582972551030, -0.729867404447662960, -0.729833224098105800, -0.729799041923966160, +-0.729764857925328970, -0.729730672102279600, -0.729696484454903540, -0.729662294983286270, -0.729628103687513410, -0.729593910567670090, -0.729559715623841480, -0.729525518856114160, +-0.729491320264572970, -0.729457119849303610, -0.729422917610391460, -0.729388713547921900, -0.729354507661980620, -0.729320299952652460, -0.729286090420024240, -0.729251879064180650, +-0.729217665885207420, -0.729183450883190030, -0.729149234058213970, -0.729115015410364940, -0.729080794939728220, -0.729046572646389610, -0.729012348530433950, -0.728978122591948050, +-0.728943894831016740, -0.728909665247725820, -0.728875433842160580, -0.728841200614406940, -0.728806965564549600, -0.728772728692675400, -0.728738489998869480, -0.728704249483217330, +-0.728670007145804540, -0.728635762986716730, -0.728601517006039480, -0.728567269203858390, -0.728533019580259290, -0.728498768135326880, -0.728464514869148210, -0.728430259781808310, +-0.728396002873392680, -0.728361744143987020, -0.728327483593677050, -0.728293221222548360, -0.728258957030686100, -0.728224691018176990, -0.728190423185106070, -0.728156153531559270, +-0.728121882057621850, -0.728087608763379970, -0.728053333648918890, -0.728019056714324540, -0.727984777959681970, -0.727950497385078000, -0.727916214990597890, -0.727881930776327120, +-0.727847644742351640, -0.727813356888756920, -0.727779067215628910, -0.727744775723052630, -0.727710482411114910, -0.727676187279901020, -0.727641890329496780, -0.727607591559987780, +-0.727573290971459730, -0.727538988563998460, -0.727504684337689670, -0.727470378292618620, -0.727436070428872260, -0.727401760746535730, -0.727367449245694740, -0.727333135926435110, +-0.727298820788842670, -0.727264503833003230, -0.727230185059001940, -0.727195864466925750, -0.727161542056859900, -0.727127217828890120, -0.727092891783102440, -0.727058563919582460, +-0.727024234238416000, -0.726989902739689110, -0.726955569423487270, -0.726921234289896080, -0.726886897339002250, -0.726852558570891370, -0.726818217985648940, -0.726783875583360990, +-0.726749531364113350, -0.726715185327991400, -0.726680837475081940, -0.726646487805470480, -0.726612136319242710, -0.726577783016484680, -0.726543427897282100, -0.726509070961721020, +-0.726474712209887240, -0.726440351641866710, -0.726405989257744690, -0.726371625057608330, -0.726337259041542890, -0.726302891209634320, -0.726268521561968420, -0.726234150098631240, +-0.726199776819708820, -0.726165401725286320, -0.726131024815450780, -0.726096646090287790, -0.726062265549883180, -0.726027883194322880, -0.725993499023692810, -0.725959113038079030, +-0.725924725237567570, -0.725890335622243590, -0.725855944192194460, -0.725821550947505330, -0.725787155888262480, -0.725752759014551610, -0.725718360326458980, -0.725683959824070300, +-0.725649557507471180, -0.725615153376748760, -0.725580747431988530, -0.725546339673276420, -0.725511930100698370, -0.725477518714340520, -0.725443105514288920, -0.725408690500629500, +-0.725374273673447760, -0.725339855032831050, -0.725305434578864540, -0.725271012311634600, -0.725236588231227050, -0.725202162337728050, -0.725167734631223640, -0.725133305111799190, +-0.725098873779542190, -0.725064440634538010, -0.725030005676872700, -0.724995568906632410, -0.724961130323903080, -0.724926689928771070, -0.724892247721322210, -0.724857803701642770, +-0.724823357869818330, -0.724788910225935950, -0.724754460770081320, -0.724720009502340720, -0.724685556422799860, -0.724651101531545220, -0.724616644828662170, -0.724582186314238210, +-0.724547725988358700, -0.724513263851109920, -0.724478799902577910, -0.724444334142848920, -0.724409866572009120, -0.724375397190144770, -0.724340925997341790, -0.724306452993685900, +-0.724271978179264480, -0.724237501554163110, -0.724203023118467960, -0.724168542872265400, -0.724134060815641360, -0.724099576948682210, -0.724065091271473450, -0.724030603784102670, +-0.723996114486655350, -0.723961623379217660, -0.723927130461875960, -0.723892635734716410, -0.723858139197825380, -0.723823640851288920, -0.723789140695192730, -0.723754638729624310, +-0.723720134954669360, -0.723685629370414030, -0.723651121976944590, -0.723616612774347410, -0.723582101762708650, -0.723547588942114020, -0.723513074312651110, -0.723478557874405400, +-0.723444039627463400, -0.723409519571911240, -0.723374997707835200, -0.723340474035321760, -0.723305948554457180, -0.723271421265327060, -0.723236892168019010, -0.723202361262618720, +-0.723167828549212580, -0.723133294027886840, -0.723098757698727780, -0.723064219561821990, -0.723029679617254840, -0.722995137865114270, -0.722960594305485760, -0.722926048938455800, +-0.722891501764110770, -0.722856952782536920, -0.722822401993820640, -0.722787849398048520, -0.722753294995306610, -0.722718738785680940, -0.722684180769259000, -0.722649620946126610, +-0.722615059316370160, -0.722580495880076110, -0.722545930637330750, -0.722511363588219990, -0.722476794732831440, -0.722442224071250920, -0.722407651603564900, -0.722373077329859560, +-0.722338501250221700, -0.722303923364737480, -0.722269343673493490, -0.722234762176576120, -0.722200178874071290, -0.722165593766066590, -0.722131006852647970, -0.722096418133901690, +-0.722061827609914550, -0.722027235280772730, -0.721992641146562140, -0.721958045207370720, -0.721923447463284070, -0.721888847914388790, -0.721854246560771460, -0.721819643402518580, +-0.721785038439716420, -0.721750431672451790, -0.721715823100811060, -0.721681212724880170, -0.721646600544746830, -0.721611986560496970, -0.721577370772217170, -0.721542753179993950, +-0.721508133783913760, -0.721473512584063340, -0.721438889580528490, -0.721404264773397140, -0.721369638162754900, -0.721335009748688690, -0.721300379531285010, -0.721265747510630330, +-0.721231113686811250, -0.721196478059914490, -0.721161840630025750, -0.721127201397233190, -0.721092560361622500, -0.721057917523280520, -0.721023272882293620, -0.720988626438748610, +-0.720953978192732100, -0.720919328144330020, -0.720884676293630070, -0.720850022640718620, -0.720815367185681950, -0.720780709928606990, -0.720746050869580210, -0.720711390008688340, +-0.720676727346017950, -0.720642062881655780, -0.720607396615687850, -0.720572728548201980, -0.720538058679284330, -0.720503387009021500, -0.720468713537500190, -0.720434038264807120, +-0.720399361191028320, -0.720364682316251840, -0.720330001640563600, -0.720295319164050210, -0.720260634886798700, -0.720225948808895570, -0.720191260930427510, -0.720156571251481360, +-0.720121879772143700, -0.720087186492500810, -0.720052491412640490, -0.720017794532649020, -0.719983095852613110, -0.719948395372619340, -0.719913693092754660, -0.719878989013105100, +-0.719844283133758700, -0.719809575454801510, -0.719774865976320450, -0.719740154698402250, -0.719705441621133590, -0.719670726744601420, -0.719636010068892330, -0.719601291594093360, +-0.719566571320290450, -0.719531849247571740, -0.719497125376023390, -0.719462399705732230, -0.719427672236785050, -0.719392942969268700, -0.719358211903270100, -0.719323479038875170, +-0.719288744376172300, -0.719254007915247520, -0.719219269656187770, -0.719184529599079750, -0.719149787744010500, -0.719115044091066750, -0.719080298640335400, -0.719045551391902630, +-0.719010802345856680, -0.718976051502283610, -0.718941298861270560, -0.718906544422904140, -0.718871788187271380, -0.718837030154459210, -0.718802270324553790, -0.718767508697643390, +-0.718732745273814140, -0.718697980053153000, -0.718663213035746980, -0.718628444221682930, -0.718593673611047760, -0.718558901203928400, -0.718524127000411790, -0.718489351000584200, +-0.718454573204533880, -0.718419793612347200, -0.718385012224110890, -0.718350229039912190, -0.718315444059837830, -0.718280657283974280, -0.718245868712409700, -0.718211078345230460, +-0.718176286182523490, -0.718141492224375840, -0.718106696470874440, -0.718071898922106320, -0.718037099578158420, -0.718002298439117780, -0.717967495505070770, -0.717932690776105660, +-0.717897884252308830, -0.717863075933767300, -0.717828265820568020, -0.717793453912798140, -0.717758640210544030, -0.717723824713893840, -0.717689007422934180, -0.717654188337751850, +-0.717619367458434240, -0.717584544785068170, -0.717549720317740670, -0.717514894056538900, -0.717480066001549900, -0.717445236152860040, -0.717410404510557820, -0.717375571074729490, +-0.717340735845462320, -0.717305898822843350, -0.717271060006959500, -0.717236219397898060, -0.717201376995745490, -0.717166532800590060, -0.717131686812518270, -0.717096839031617360, +-0.717061989457974280, -0.717027138091676170, -0.716992284932810310, -0.716957429981463720, -0.716922573237723020, -0.716887714701676340, -0.716852854373410510, -0.716817992253012460, +-0.716783128340569450, -0.716748262636168530, -0.716713395139897070, -0.716678525851841550, -0.716643654772090240, -0.716608781900729740, -0.716573907237847420, -0.716539030783530210, +-0.716504152537865590, -0.716469272500940390, -0.716434390672842090, -0.716399507053657960, -0.716364621643474250, -0.716329734442379680, -0.716294845450460740, -0.716259954667804680, +-0.716225062094498770, -0.716190167730630270, -0.716155271576285560, -0.716120373631553450, -0.716085473896520330, -0.716050572371273560, -0.716015669055900310, -0.715980763950487930, +-0.715945857055123700, -0.715910948369894660, -0.715876037894888410, -0.715841125630191310, -0.715806211575892190, -0.715771295732077430, -0.715736378098834390, -0.715701458676250460, +-0.715666537464412890, -0.715631614463408390, -0.715596689673325350, -0.715561763094250790, -0.715526834726271650, -0.715491904569475420, -0.715456972623949470, -0.715422038889781180, +-0.715387103367057690, -0.715352166055866380, -0.715317226956294180, -0.715282286068429470, -0.715247343392359070, -0.715212398928170230, -0.715177452675950560, -0.715142504635787100, +-0.715107554807767440, -0.715072603191978300, -0.715037649788508150, -0.715002694597444030, -0.714967737618873110, -0.714932778852882870, -0.714897818299560560, -0.714862855958993900, +-0.714827891831269930, -0.714792925916475700, -0.714757958214699780, -0.714722988726028910, -0.714688017450550660, -0.714653044388352310, -0.714618069539521340, -0.714583092904145230, +-0.714548114482310700, -0.714513134274106560, -0.714478152279619530, -0.714443168498937190, -0.714408182932146920, -0.714373195579336210, -0.714338206440592430, -0.714303215516003180, +-0.714268222805655270, -0.714233228309637420, -0.714198232028036450, -0.714163233960940060, -0.714128234108435400, -0.714093232470610180, -0.714058229047552010, -0.714023223839347580, +-0.713988216846085710, -0.713953208067853230, -0.713918197504737840, -0.713883185156826920, -0.713848171024207940, -0.713813155106968630, -0.713778137405196470, -0.713743117918978930, +-0.713708096648402960, -0.713673073593557360, -0.713638048754529080, -0.713603022131405700, -0.713567993724274820, -0.713532963533223820, -0.713497931558339850, -0.713462897799711730, +-0.713427862257426270, -0.713392824931571190, -0.713357785822234080, -0.713322744929502540, -0.713287702253464050, -0.713252657794206320, -0.713217611551816950, -0.713182563526382980, +-0.713147513717993120, -0.713112462126734630, -0.713077408752694870, -0.713042353595961580, -0.713007296656622440, -0.712972237934765160, -0.712937177430476470, -0.712902115143845600, +-0.712867051074959400, -0.712831985223905560, -0.712796917590771790, -0.712761848175645700, -0.712726776978614970, -0.712691703999767330, -0.712656629239189820, -0.712621552696971360, +-0.712586474373199000, -0.712551394267960330, -0.712516312381343390, -0.712481228713435550, -0.712446143264324650, -0.712411056034097820, -0.712375967022843890, -0.712340876230650120, +-0.712305783657604110, -0.712270689303793670, -0.712235593169306510, -0.712200495254230350, -0.712165395558652990, -0.712130294082661490, -0.712095190826344870, -0.712060085789790300, +-0.712024978973085480, -0.711989870376318220, -0.711954759999576250, -0.711919647842947370, -0.711884533906518850, -0.711849418190379610, -0.711814300694616710, -0.711779181419318170, +-0.711744060364571610, -0.711708937530464940, -0.711673812917085980, -0.711638686524522330, -0.711603558352862150, -0.711568428402192250, -0.711533296672602010, -0.711498163164178580, +-0.711463027877009770, -0.711427890811183290, -0.711392751966787080, -0.711357611343908400, -0.711322468942636290, -0.711287324763058000, -0.711252178805261480, -0.711217031069334430, +-0.711181881555364770, -0.711146730263440550, -0.711111577193649370, -0.711076422346079370, -0.711041265720817610, -0.711006107317953220, -0.710970947137573690, -0.710935785179766740, +-0.710900621444620410, -0.710865455932222500, -0.710830288642660850, -0.710795119576022930, -0.710759948732397890, -0.710724776111872900, -0.710689601714535990, -0.710654425540475090, +-0.710619247589778010, -0.710584067862533030, -0.710548886358827740, -0.710513703078749610, -0.710478518022387820, -0.710443331189829830, -0.710408142581163470, -0.710372952196476780, +-0.710337760035857580, -0.710302566099394130, -0.710267370387173580, -0.710232172899285310, -0.710196973635816460, -0.710161772596855310, -0.710126569782489670, -0.710091365192807580, +-0.710056158827897080, -0.710020950687846210, -0.709985740772742350, -0.709950529082674750, -0.709915315617730910, -0.709880100377998650, -0.709844883363566210, -0.709809664574521550, +-0.709774444010952690, -0.709739221672947120, -0.709703997560594100, -0.709668771673981120, -0.709633544013196230, -0.709598314578327450, -0.709563083369462940, -0.709527850386690640, +-0.709492615630098800, -0.709457379099775350, -0.709422140795807790, -0.709386900718285580, -0.709351658867296120, -0.709316415242927430, -0.709281169845267790, -0.709245922674405230, +-0.709210673730427230, -0.709175423013423180, -0.709140170523480440, -0.709104916260687390, -0.709069660225132070, -0.709034402416902520, -0.708999142836087000, -0.708963881482773670, +-0.708928618357050570, -0.708893353459005390, -0.708858086788727420, -0.708822818346304120, -0.708787548131823870, -0.708752276145374730, -0.708717002387044940, -0.708681726856922540, +-0.708646449555095370, -0.708611170481652560, -0.708575889636681830, -0.708540607020271440, -0.708505322632509540, -0.708470036473484280, -0.708434748543284030, -0.708399458841996730, +-0.708364167369710310, -0.708328874126514020, -0.708293579112495570, -0.708258282327743130, -0.708222983772345050, -0.708187683446389490, -0.708152381349964720, -0.708117077483158330, +-0.708081771846059920, -0.708046464438757070, -0.708011155261338070, -0.707975844313891270, -0.707940531596504720, -0.707905217109266900, -0.707869900852265980, -0.707834582825589750, +-0.707799263029327720, -0.707763941463567360, -0.707728618128397270, -0.707693293023905600, -0.707657966150180840, -0.707622637507311030, -0.707587307095383980, -0.707551974914489400, +-0.707516640964714780, -0.707481305246148610, -0.707445967758879140, -0.707410628502994740, -0.707375287478583800, -0.707339944685734690, -0.707304600124535670, -0.707269253795074440, +-0.707233905697440820, -0.707198555831722420, -0.707163204198007600, -0.707127850796384740, -0.707092495626942320, -0.707057138689768050, -0.707021779984951530, -0.706986419512580570, +-0.706951057272743540, -0.706915693265528830, -0.706880327491024920, -0.706844959949320170, -0.706809590640503080, -0.706774219564662020, -0.706738846721884690, -0.706703472112260920, +-0.706668095735878520, -0.706632717592825870, -0.706597337683191330, -0.706561956007063510, -0.706526572564530890, -0.706491187355681060, -0.706455800380603960, -0.706420411639387400, +-0.706385021132119760, -0.706349628858889520, -0.706314234819785280, -0.706278839014895410, -0.706243441444308510, -0.706208042108112280, -0.706172641006396650, -0.706137238139249450, +-0.706101833506759040, -0.706066427109014130, -0.706031018946103090, -0.705995609018114530, -0.705960197325136370, -0.705924783867258320, -0.705889368644568300, -0.705853951657154810, +-0.705818532905106540, -0.705783112388511880, -0.705747690107459410, -0.705712266062037740, -0.705676840252334790, -0.705641412678440380, -0.705605983340442440, -0.705570552238429460, +-0.705535119372490250, -0.705499684742713180, -0.705464248349186860, -0.705428810191999320, -0.705393370271240380, -0.705357928586997970, -0.705322485139360800, -0.705287039928417350, +-0.705251592954256320, -0.705216144216966320, -0.705180693716636050, -0.705145241453353890, -0.705109787427208090, -0.705074331638288480, -0.705038874086682980, -0.705003414772480300, +-0.704967953695769150, -0.704932490856638010, -0.704897026255175030, -0.704861559891470150, -0.704826091765611400, -0.704790621877687370, -0.704755150227786790, -0.704719676815998340, +-0.704684201642410750, -0.704648724707112590, -0.704613246010192710, -0.704577765551739010, -0.704542283331841550, -0.704506799350588350, -0.704471313608068140, -0.704435826104369720, +-0.704400336839581700, -0.704364845813792770, -0.704329353027091210, -0.704293858479566830, -0.704258362171307770, -0.704222864102402870, -0.704187364272940820, -0.704151862683010330, +-0.704116359332700230, -0.704080854222099100, -0.704045347351295310, -0.704009838720378810, -0.703974328329437630, -0.703938816178560690, -0.703903302267836710, -0.703867786597354380, +-0.703832269167202760, -0.703796749977469660, -0.703761229028245340, -0.703725706319618060, -0.703690181851676420, -0.703654655624509350, -0.703619127638205670, -0.703583597892854180, +-0.703548066388543610, -0.703512533125362330, -0.703476998103400360, -0.703441461322745760, -0.703405922783487680, -0.703370382485714710, -0.703334840429515770, -0.703299296614979810, +-0.703263751042194850, -0.703228203711251170, -0.703192654622237120, -0.703157103775241320, -0.703121551170352800, -0.703085996807660370, -0.703050440687252860, -0.703014882809219420, +-0.702979323173648640, -0.702943761780629010, -0.702908198630250560, -0.702872633722601670, -0.702837067057771160, -0.702801498635847950, -0.702765928456920990, -0.702730356521078630, +-0.702694782828411020, -0.702659207379006330, -0.702623630172953820, -0.702588051210342070, -0.702552470491260240, -0.702516888015797260, -0.702481303784042050, -0.702445717796083560, +-0.702410130052010250, -0.702374540551912060, -0.702338949295877700, -0.702303356283995870, -0.702267761516355620, -0.702232164993046080, -0.702196566714155980, -0.702160966679773900, +-0.702125364889990110, -0.702089761344892870, -0.702054156044571220, -0.702018548989114090, -0.701982940178610630, -0.701947329613149870, -0.701911717292820760, -0.701876103217711770, +-0.701840487387913160, -0.701804869803513200, -0.701769250464601150, -0.701733629371266040, -0.701698006523596820, -0.701662381921682510, -0.701626755565611600, -0.701591127455474580, +-0.701555497591359600, -0.701519865973355920, -0.701484232601552680, -0.701448597476038720, -0.701412960596903280, -0.701377321964235520, -0.701341681578123710, -0.701306039438658440, +-0.701270395545928070, -0.701234749900021660, -0.701199102501028350, -0.701163453349037290, -0.701127802444137640, -0.701092149786417870, -0.701056495375968370, -0.701020839212877610, +-0.700985181297234640, -0.700949521629128820, -0.700913860208649210, -0.700878197035884940, -0.700842532110925060, -0.700806865433859060, -0.700771197004775080, -0.700735526823763830, +-0.700699854890913800, -0.700664181206314020, -0.700628505770053870, -0.700592828582222490, -0.700557149642908270, -0.700521468952201910, -0.700485786510191890, -0.700450102316967360, +-0.700414416372617590, -0.700378728677231830, -0.700343039230899130, -0.700307348033708870, -0.700271655085750290, -0.700235960387112000, -0.700200263937884260, -0.700164565738156000, +-0.700128865788016250, -0.700093164087554400, -0.700057460636859590, -0.700021755436020520, -0.699986048485127690, -0.699950339784269790, -0.699914629333535990, -0.699878917133015640, +-0.699843203182797910, -0.699807487482972280, -0.699771770033627890, -0.699736050834854020, -0.699700329886739470, -0.699664607189374730, -0.699628882742848400, -0.699593156547249960, +-0.699557428602668560, -0.699521698909193690, -0.699485967466914490, -0.699450234275919680, -0.699414499336299960, -0.699378762648144030, -0.699343024211541150, -0.699307284026580820, +-0.699271542093352180, -0.699235798411944610, -0.699200052982447700, -0.699164305804949930, -0.699128556879542120, -0.699092806206312870, -0.699057053785351550, -0.699021299616747640, +-0.698985543700590520, -0.698949786036969440, -0.698914026625973350, -0.698878265467692830, -0.698842502562216580, -0.698806737909634100, -0.698770971510034760, -0.698735203363508030, +-0.698699433470143290, -0.698663661830029930, -0.698627888443257520, -0.698592113309914660, -0.698556336430092180, -0.698520557803878780, -0.698484777431364060, -0.698448995312637380, +-0.698413211447788230, -0.698377425836905430, -0.698341638480079690, -0.698305849377399810, -0.698270058528955300, -0.698234265934835730, -0.698198471595130490, -0.698162675509928940, +-0.698126877679320800, -0.698091078103395550, -0.698055276782241880, -0.698019473715950630, -0.697983668904610720, -0.697947862348311630, -0.697912054047142850, -0.697876244001193970, +-0.697840432210553920, -0.697804618675313290, -0.697768803395561240, -0.697732986371387030, -0.697697167602880470, -0.697661347090130950, -0.697625524833228150, -0.697589700832261460, +-0.697553875087320470, -0.697518047598494230, -0.697482218365873540, -0.697446387389547230, -0.697410554669605000, -0.697374720206136330, -0.697338883999230940, -0.697303046048978300, +-0.697267206355467350, -0.697231364918789120, -0.697195521739032430, -0.697159676816286880, -0.697123830150642170, -0.697087981742188000, -0.697052131591013760, -0.697016279697209250, +-0.696980426060863300, -0.696944570682067050, -0.696908713560909330, -0.696872854697479730, -0.696836994091868060, -0.696801131744164030, -0.696765267654457010, -0.696729401822836270, +-0.696693534249392620, -0.696657664934215100, -0.696621793877393540, -0.696585921079017400, -0.696550046539176400, -0.696514170257960360, -0.696478292235458870, -0.696442412471761750, +-0.696406530966957820, -0.696370647721138330, -0.696334762734392100, -0.696298876006809060, -0.696262987538478820, -0.696227097329491060, -0.696191205379934950, -0.696155311689901410, +-0.696119416259479710, -0.696083519088759320, -0.696047620177830280, -0.696011719526782090, -0.695975817135704670, -0.695939913004687600, -0.695904007133820830, -0.695868099523193400, +-0.695832190172896330, -0.695796279083018780, -0.695760366253650560, -0.695724451684881510, -0.695688535376801200, -0.695652617329499010, -0.695616697543065770, -0.695580776017590940, +-0.695544852753164130, -0.695508927749875160, -0.695473001007813840, -0.695437072527070100, -0.695401142307733640, -0.695365210349894290, -0.695329276653641300, -0.695293341219065830, +-0.695257404046256910, -0.695221465135304470, -0.695185524486298450, -0.695149582099328530, -0.695113637974484780, -0.695077692111856220, -0.695041744511534000, -0.695005795173607500, +-0.694969844098166530, -0.694933891285300920, -0.694897936735100590, -0.694861980447655350, -0.694826022423055250, -0.694790062661389430, -0.694754101162749160, -0.694718137927223480, +-0.694682172954902530, -0.694646206245876140, -0.694610237800234340, -0.694574267618066840, -0.694538295699463020, -0.694502322044514120, -0.694466346653309420, -0.694430369525938950, +-0.694394390662492420, -0.694358410063059980, -0.694322427727731450, -0.694286443656596970, -0.694250457849745590, -0.694214470307268790, -0.694178481029255830, -0.694142490015796640, +-0.694106497266981260, -0.694070502782899610, -0.694034506563641740, -0.693998508609296900, -0.693962508919956480, -0.693926507495709720, -0.693890504336646790, -0.693854499442857490, +-0.693818492814431980, -0.693782484451460290, -0.693746474354032360, -0.693710462522238220, -0.693674448956167370, -0.693638433655910940, -0.693602416621558420, -0.693566397853199960, +-0.693530377350925380, -0.693494355114824930, -0.693458331144988000, -0.693422305441505740, -0.693386278004467840, -0.693350248833964230, -0.693314217930084960, -0.693278185292920180, +-0.693242150922559920, -0.693206114819094220, -0.693170076982613350, -0.693134037413206560, -0.693097996110965340, -0.693061953075979180, -0.693025908308338100, -0.692989861808132270, +-0.692953813575451720, -0.692917763610386710, -0.692881711913026610, -0.692845658483462800, -0.692809603321784980, -0.692773546428083090, -0.692737487802447370, -0.692701427444967880, +-0.692665365355734860, -0.692629301534838370, -0.692593235982367990, -0.692557168698415220, -0.692521099683069520, -0.692485028936421050, -0.692448956458560080, -0.692412882249576640, +-0.692376806309561000, -0.692340728638602740, -0.692304649236793250, -0.692268568104222100, -0.692232485240979580, -0.692196400647155930, -0.692160314322841200, -0.692124226268125640, +-0.692088136483099640, -0.692052044967852550, -0.692015951722475990, -0.691979856747059640, -0.691943760041693560, -0.691907661606468110, -0.691871561441473440, -0.691835459546800040, +-0.691799355922537160, -0.691763250568776630, -0.691727143485608040, -0.691691034673121430, -0.691654924131407390, -0.691618811860555960, -0.691582697860657510, -0.691546582131802310, +-0.691510464674080620, -0.691474345487582130, -0.691438224572398450, -0.691402101928619280, -0.691365977556334780, -0.691329851455635300, -0.691293723626611230, -0.691257594069352280, +-0.691221462783949910, -0.691185329770493850, -0.691149195029074570, -0.691113058559782220, -0.691076920362707290, -0.691040780437939930, -0.691004638785570720, -0.690968495405689940, +-0.690932350298387290, -0.690896203463754240, -0.690860054901880850, -0.690823904612857250, -0.690787752596773940, -0.690751598853721170, -0.690715443383789540, -0.690679286187068530, +-0.690643127263649960, -0.690606966613623640, -0.690570804237079840, -0.690534640134109030, -0.690498474304801710, -0.690462306749248130, -0.690426137467538780, -0.690389966459763470, +-0.690353793726013910, -0.690317619266379800, -0.690281443080951630, -0.690245265169819880, -0.690209085533075030, -0.690172904170807460, -0.690136721083106860, -0.690100536270065180, +-0.690064349731772220, -0.690028161468318360, -0.689991971479794080, -0.689955779766289860, -0.689919586327896180, -0.689883391164703540, -0.689847194276801750, -0.689810995664282610, +-0.689774795327236070, -0.689738593265752490, -0.689702389479922460, -0.689666183969836480, -0.689629976735584900, -0.689593767777257890, -0.689557557094947040, -0.689521344688742270, +-0.689485130558734170, -0.689448914705013240, -0.689412697127670060, -0.689376477826795010, -0.689340256802478900, -0.689304034054812110, -0.689267809583884670, -0.689231583389788180, +-0.689195355472612900, -0.689159125832449090, -0.689122894469387570, -0.689086661383518710, -0.689050426574932650, -0.689014190043721110, -0.688977951789974120, -0.688941711813782280, +-0.688905470115236060, -0.688869226694426300, -0.688832981551443350, -0.688796734686378030, -0.688760486099320830, -0.688724235790361790, -0.688687983759592840, -0.688651730007103890, +-0.688615474532985660, -0.688579217337328630, -0.688542958420223620, -0.688506697781761320, -0.688470435422031460, -0.688434171341126280, -0.688397905539135600, -0.688361638016150130, +-0.688325368772260690, -0.688289097807557760, -0.688252825122132040, -0.688216550716074350, -0.688180274589474510, -0.688143996742424770, -0.688107717175014950, -0.688071435887335880, +-0.688035152879478140, -0.687998868151532660, -0.687962581703589930, -0.687926293535740090, -0.687890003648075180, -0.687853712040685240, -0.687817418713660980, -0.687781123667093320, +-0.687744826901072750, -0.687708528415690080, -0.687672228211036130, -0.687635926287200940, -0.687599622644276650, -0.687563317282353200, -0.687527010201521630, -0.687490701401872410, +-0.687454390883496470, -0.687418078646484520, -0.687381764690926710, -0.687345449016915190, -0.687309131624539990, -0.687272812513892050, -0.687236491685061960, -0.687200169138140750, +-0.687163844873219020, -0.687127518890387810, -0.687091191189737720, -0.687054861771358990, -0.687018530635343680, -0.686982197781782160, -0.686945863210765120, -0.686909526922383500, +-0.686873188916727880, -0.686836849193888770, -0.686800507753958180, -0.686764164597026380, -0.686727819723184090, -0.686691473132522210, -0.686655124825131690, -0.686618774801103340, +-0.686582423060528080, -0.686546069603496730, -0.686509714430099560, -0.686473357540428820, -0.686436998934574660, -0.686400638612628010, -0.686364276574679690, -0.686327912820820730, +-0.686291547351141950, -0.686255180165733720, -0.686218811264688200, -0.686182440648095640, -0.686146068316046960, -0.686109694268633000, -0.686073318505944880, -0.686036941028073550, +-0.686000561835109820, -0.685964180927144060, -0.685927798304268420, -0.685891413966573270, -0.685855027914149650, -0.685818640147088490, -0.685782250665480710, -0.685745859469417240, +-0.685709466558988570, -0.685673071934286840, -0.685636675595402420, -0.685600277542426250, -0.685563877775449470, -0.685527476294562900, -0.685491073099857800, -0.685454668191424870, +-0.685418261569354700, -0.685381853233739570, -0.685345443184669720, -0.685309031422236310, -0.685272617946530270, -0.685236202757642740, -0.685199785855664660, -0.685163367240686490, +-0.685126946912800520, -0.685090524872097210, -0.685054101118667600, -0.685017675652602740, -0.684981248473993660, -0.684944819582931410, -0.684908388979507230, -0.684871956663812060, +-0.684835522635936280, -0.684799086895972350, -0.684762649444010770, -0.684726210280142470, -0.684689769404458690, -0.684653326817050490, -0.684616882518008340, -0.684580436507424730, +-0.684543988785389910, -0.684507539351995040, -0.684471088207331490, -0.684434635351490070, -0.684398180784562160, -0.684361724506638790, -0.684325266517811110, -0.684288806818169610, +-0.684252345407806770, -0.684215882286812960, -0.684179417455279550, -0.684142950913297580, -0.684106482660958190, -0.684070012698352550, -0.684033541025571350, -0.683997067642706850, +-0.683960592549849760, -0.683924115747091220, -0.683887637234522280, -0.683851157012234310, -0.683814675080318460, -0.683778191438865870, -0.683741706087967140, -0.683705219027714860, +-0.683668730258199410, -0.683632239779512260, -0.683595747591744460, -0.683559253694987380, -0.683522758089332050, -0.683486260774869180, -0.683449761751691360, -0.683413261019889200, +-0.683376758579553820, -0.683340254430776510, -0.683303748573648620, -0.683267241008261310, -0.683230731734705830, -0.683194220753073010, -0.683157708063455220, -0.683121193665943150, +-0.683084677560628180, -0.683048159747601470, -0.683011640226954380, -0.682975118998778160, -0.682938596063163430, -0.682902071420202980, -0.682865545069987200, -0.682829017012607680, +-0.682792487248155670, -0.682755955776722320, -0.682719422598399130, -0.682682887713277340, -0.682646351121448450, -0.682609812823002930, -0.682573272818033480, -0.682536731106630930, +-0.682500187688886540, -0.682463642564891670, -0.682427095734737700, -0.682390547198515440, -0.682353996956317270, -0.682317445008234210, -0.682280891354357540, -0.682244335994778630, +-0.682207778929588950, -0.682171220158879770, -0.682134659682742450, -0.682098097501268600, -0.682061533614548800, -0.682024968022675870, -0.681988400725740520, -0.681951831723834110, +-0.681915261017048140, -0.681878688605473960, -0.681842114489203180, -0.681805538668326380, -0.681768961142936390, -0.681732381913124020, -0.681695800978980750, -0.681659218340597840, +-0.681622633998067000, -0.681586047951479590, -0.681549460200926990, -0.681512870746500130, -0.681476279588291710, -0.681439686726392550, -0.681403092160894230, -0.681366495891888140, +-0.681329897919465970, -0.681293298243718870, -0.681256696864738000, -0.681220093782615940, -0.681183488997443630, -0.681146882509312660, -0.681110274318314500, -0.681073664424540650, +-0.681037052828082580, -0.681000439529031890, -0.680963824527479500, -0.680927207823518230, -0.680890589417238790, -0.680853969308732990, -0.680817347498092310, -0.680780723985408230, +-0.680744098770772240, -0.680707471854275490, -0.680670843236010570, -0.680634212916068740, -0.680597580894541140, -0.680560947171519710, -0.680524311747095930, -0.680487674621361390, +-0.680451035794407580, -0.680414395266326300, -0.680377753037208270, -0.680341109107146510, -0.680304463476232080, -0.680267816144556340, -0.680231167112211210, -0.680194516379288070, +-0.680157863945878070, -0.680121209812073910, -0.680084553977966850, -0.680047896443648380, -0.680011237209210200, -0.679974576274743890, -0.679937913640341170, -0.679901249306093640, +-0.679864583272092980, -0.679827915538430140, -0.679791246105198250, -0.679754574972488260, -0.679717902140391850, -0.679681227609000630, -0.679644551378406400, -0.679607873448700110, +-0.679571193819974660, -0.679534512492321440, -0.679497829465831820, -0.679461144740597600, -0.679424458316710610, -0.679387770194262440, -0.679351080373344800, -0.679314388854049490, +-0.679277695636467560, -0.679241000720692050, -0.679204304106813980, -0.679167605794925300, -0.679130905785117480, -0.679094204077482440, -0.679057500672111790, -0.679020795569096890, +-0.678984088768530560, -0.678947380270504050, -0.678910670075109080, -0.678873958182437450, -0.678837244592580880, -0.678800529305631170, -0.678763812321680260, -0.678727093640819070, +-0.678690373263140740, -0.678653651188736660, -0.678616927417698300, -0.678580201950117700, -0.678543474786086560, -0.678506745925696710, -0.678470015369039390, -0.678433283116207650, +-0.678396549167292750, -0.678359813522386500, -0.678323076181580610, -0.678286337144967110, -0.678249596412637710, -0.678212853984684340, -0.678176109861198920, -0.678139364042272490, +-0.678102616527998300, -0.678065867318467630, -0.678029116413772170, -0.677992363814004070, -0.677955609519254930, -0.677918853529616230, -0.677882095845181000, -0.677845336466040500, +-0.677808575392286670, -0.677771812624011430, -0.677735048161306590, -0.677698282004264190, -0.677661514152976040, -0.677624744607534190, -0.677587973368029780, -0.677551200434556080, +-0.677514425807204330, -0.677477649486066590, -0.677440871471234770, -0.677404091762800700, -0.677367310360855730, -0.677330527265493140, -0.677293742476804290, -0.677256955994881120, +-0.677220167819815420, -0.677183377951699360, -0.677146586390624860, -0.677109793136683960, -0.677072998189968470, -0.677036201550569870, -0.676999403218581430, -0.676962603194094510, +-0.676925801477201050, -0.676888998067993080, -0.676852192966562630, -0.676815386173001740, -0.676778577687401680, -0.676741767509855820, -0.676704955640455630, -0.676668142079292930, +-0.676631326826459880, -0.676594509882048610, -0.676557691246150950, -0.676520870918859150, -0.676484048900264480, -0.676447225190460410, -0.676410399789538210, -0.676373572697590020, +-0.676336743914707880, -0.676299913440983950, -0.676263081276510250, -0.676226247421378050, -0.676189411875681050, -0.676152574639510400, -0.676115735712958350, -0.676078895096116960, +-0.676042052789078360, -0.676005208791934600, -0.675968363104777810, -0.675931515727700160, -0.675894666660793010, -0.675857815904149840, -0.675820963457862130, -0.675784109322022040, +-0.675747253496721710, -0.675710395982053290, -0.675673536778108150, -0.675636675884979780, -0.675599813302759760, -0.675562949031540240, -0.675526083071413370, -0.675489215422471200, +-0.675452346084806090, -0.675415475058509960, -0.675378602343675300, -0.675341727940393380, -0.675304851848757880, -0.675267974068860190, -0.675231094600792560, -0.675194213444647250, +-0.675157330600516410, -0.675120446068491530, -0.675083559848666190, -0.675046671941131990, -0.675009782345981080, -0.674972891063305820, -0.674935998093198150, -0.674899103435750660, +-0.674862207091055270, -0.674825309059204460, -0.674788409340289720, -0.674751507934404530, -0.674714604841640590, -0.674677700062090270, -0.674640793595845500, -0.674603885442998870, +-0.674566975603642540, -0.674530064077868090, -0.674493150865769110, -0.674456235967437310, -0.674419319382964840, -0.674382401112444070, -0.674345481155967370, -0.674308559513626890, +-0.674271636185515110, -0.674234711171723510, -0.674197784472345800, -0.674160856087473670, -0.674123926017199280, -0.674086994261615220, -0.674050060820813530, -0.674013125694886810, +-0.673976188883926630, -0.673939250388026600, -0.673902310207278420, -0.673865368341774460, -0.673828424791607090, -0.673791479556868690, -0.673754532637651500, -0.673717584034048130, +-0.673680633746150730, -0.673643681774050980, -0.673606728117842830, -0.673569772777617870, -0.673532815753468350, -0.673495857045486870, -0.673458896653765680, -0.673421934578396720, +-0.673384970819473460, -0.673348005377087830, -0.673311038251332210, -0.673274069442298950, -0.673237098950080550, -0.673200126774769370, -0.673163152916457900, -0.673126177375238500, +-0.673089200151202990, -0.673052221244445190, -0.673015240655056910, -0.672978258383130410, -0.672941274428758280, -0.672904288792033010, -0.672867301473046410, -0.672830312471892070, +-0.672793321788662020, -0.672756329423448650, -0.672719335376344540, -0.672682339647441950, -0.672645342236833590, -0.672608343144611930, -0.672571342370869350, -0.672534339915697780, +-0.672497335779191020, -0.672460329961440890, -0.672423322462539890, -0.672386313282580690, -0.672349302421655580, -0.672312289879857250, -0.672275275657277630, -0.672238259754010410, +-0.672201242170147540, -0.672164222905781590, -0.672127201961005170, -0.672090179335910640, -0.672053155030590600, -0.672016129045137740, -0.671979101379643890, -0.671942072034202980, +-0.671905041008906910, -0.671868008303848190, -0.671830973919119500, -0.671793937854813340, -0.671756900111022290, -0.671719860687838400, -0.671682819585355470, -0.671645776803665550, +-0.671608732342861110, -0.671571686203034870, -0.671534638384279400, -0.671497588886687420, -0.671460537710351410, -0.671423484855363300, -0.671386430321817330, -0.671349374109805110, +-0.671312316219419560, -0.671275256650753160, -0.671238195403898620, -0.671201132478948640, -0.671164067875995140, -0.671127001595132170, -0.671089933636451640, -0.671052864000046380, +-0.671015792686008860, -0.670978719694431900, -0.670941645025408100, -0.670904568679030140, -0.670867490655390860, -0.670830410954582180, -0.670793329576698130, -0.670756246521830750, +-0.670719161790072740, -0.670682075381516810, -0.670644987296255660, -0.670607897534381440, -0.670570806095988180, -0.670533712981167820, -0.670496618190013270, -0.670459521722617140, +-0.670422423579072110, -0.670385323759471130, -0.670348222263906780, -0.670311119092471990, -0.670274014245258560, -0.670236907722360890, -0.670199799523870880, -0.670162689649881460, +-0.670125578100485230, -0.670088464875775110, -0.670051349975843810, -0.670014233400783480, -0.669977115150688140, -0.669939995225650180, -0.669902873625762060, -0.669865750351116840, +-0.669828625401807320, -0.669791498777926100, -0.669754370479566210, -0.669717240506819690, -0.669680108859780800, -0.669642975538541570, -0.669605840543194940, -0.669568703873833710, +-0.669531565530550710, -0.669494425513438740, -0.669457283822590070, -0.669420140458098940, -0.669382995420057410, -0.669345848708558290, -0.669308700323694720, -0.669271550265559290, +-0.669234398534245050, -0.669197245129844690, -0.669160090052450700, -0.669122933302157110, -0.669085774879056070, -0.669048614783240740, -0.669011453014803800, -0.668974289573838200, +-0.668937124460436960, -0.668899957674692240, -0.668862789216698280, -0.668825619086547360, -0.668788447284332290, -0.668751273810146210, -0.668714098664081820, -0.668676921846232290, +-0.668639743356690520, -0.668602563195549230, -0.668565381362901000, -0.668528197858839990, -0.668491012683458340, -0.668453825836849310, -0.668416637319105610, -0.668379447130320380, +-0.668342255270585770, -0.668305061739996380, -0.668267866538644120, -0.668230669666622370, -0.668193471124023830, -0.668156270910941650, -0.668119069027468760, -0.668081865473698300, +-0.668044660249723090, -0.668007453355635490, -0.667970244791530110, -0.667933034557498970, -0.667895822653635340, -0.667858609080032140, -0.667821393836782300, -0.667784176923979070, +-0.667746958341714820, -0.667709738090083720, -0.667672516169178330, -0.667635292579091600, -0.667598067319916670, -0.667560840391746570, -0.667523611794674340, -0.667486381528793030, +-0.667449149594195210, -0.667411915990975160, -0.667374680719225340, -0.667337443779038700, -0.667300205170508590, -0.667262964893727940, -0.667225722948789790, -0.667188479335786730, +-0.667151234054813140, -0.667113987105961480, -0.667076738489324810, -0.667039488204996370, -0.667002236253069090, -0.666964982633636350, -0.666927727346791070, -0.666890470392625830, +-0.666853211771235130, -0.666815951482711330, -0.666778689527147690, -0.666741425904637250, -0.666704160615273270, -0.666666893659149000, -0.666629625036356700, -0.666592354746991080, +-0.666555082791144500, -0.666517809168910350, -0.666480533880381530, -0.666443256925651430, -0.666405978304813180, -0.666368698017960060, -0.666331416065185090, -0.666294132446580980, +-0.666256847162242210, -0.666219560212261250, -0.666182271596731490, -0.666144981315745950, -0.666107689369398010, -0.666070395757780150, -0.666033100480986960, -0.665995803539111140, +-0.665958504932245620, -0.665921204660483990, -0.665883902723919290, -0.665846599122644880, -0.665809293856753910, -0.665771986926339760, -0.665734678331494910, -0.665697368072314060, +-0.665660056148889790, -0.665622742561315480, -0.665585427309684170, -0.665548110394089340, -0.665510791814624250, -0.665473471571381480, -0.665436149664455740, -0.665398826093939630, +-0.665361500859926400, -0.665324173962509420, -0.665286845401782070, -0.665249515177837590, -0.665212183290769250, -0.665174849740669870, -0.665137514527634030, -0.665100177651754330, +-0.665062839113124250, -0.665025498911837040, -0.664988157047986080, -0.664950813521664740, -0.664913468332965720, -0.664876121481983720, -0.664838772968811330, -0.664801422793542150, +-0.664764070956269220, -0.664726717457086220, -0.664689362296086440, -0.664652005473363230, -0.664614646989009410, -0.664577286843119560, -0.664539925035786520, -0.664502561567103630, +-0.664465196437164400, -0.664427829646062060, -0.664390461193890220, -0.664353091080741590, -0.664315719306710850, -0.664278345871890830, -0.664240970776375010, -0.664203594020256750, +-0.664166215603629430, -0.664128835526586640, -0.664091453789221630, -0.664054070391628120, -0.664016685333898790, -0.663979298616128370, -0.663941910238409650, -0.663904520200836230, +-0.663867128503501380, -0.663829735146498790, -0.663792340129921280, -0.663754943453863430, -0.663717545118418410, -0.663680145123679340, -0.663642743469740060, -0.663605340156693810, +-0.663567935184634310, -0.663530528553654910, -0.663493120263849210, -0.663455710315309920, -0.663418298708132180, -0.663380885442408590, -0.663343470518232840, -0.663306053935698410, +-0.663268635694898910, -0.663231215795927700, -0.663193794238877920, -0.663156371023844170, -0.663118946150919600, -0.663081519620197680, -0.663044091431771900, -0.663006661585735850, +-0.662969230082183230, -0.662931796921207520, -0.662894362102901650, -0.662856925627360540, -0.662819487494677120, -0.662782047704944980, -0.662744606258257600, -0.662707163154708900, +-0.662669718394392150, -0.662632271977400490, -0.662594823903828840, -0.662557374173770140, -0.662519922787317970, -0.662482469744565930, -0.662445015045607820, -0.662407558690537130, +-0.662370100679447570, -0.662332641012432060, -0.662295179689585620, -0.662257716711001310, -0.662220252076772600, -0.662182785786993300, -0.662145317841757010, -0.662107848241157430, +-0.662070376985287590, -0.662032904074242530, -0.661995429508115070, -0.661957953286999130, -0.661920475410988310, -0.661882995880176290, -0.661845514694656800, -0.661808031854523530, +-0.661770547359870060, -0.661733061210789670, -0.661695573407377280, -0.661658083949725920, -0.661620592837929400, -0.661583100072081320, -0.661545605652275600, -0.661508109578605170, +-0.661470611851165070, -0.661433112470048550, -0.661395611435349080, -0.661358108747160720, -0.661320604405577050, -0.661283098410691880, -0.661245590762598920, -0.661208081461391980, +-0.661170570507164210, -0.661133057900010760, -0.661095543640024540, -0.661058027727299490, -0.661020510161929420, -0.660982990944008030, -0.660945470073629140, -0.660907947550885890, +-0.660870423375873540, -0.660832897548685020, -0.660795370069414360, -0.660757840938155260, -0.660720310155001430, -0.660682777720047020, -0.660645243633385500, -0.660607707895110360, +-0.660570170505316520, -0.660532631464097240, -0.660495090771546330, -0.660457548427757830, -0.660420004432825450, -0.660382458786842990, -0.660344911489903710, -0.660307362542102870, +-0.660269811943533510, -0.660232259694289780, -0.660194705794465260, -0.660157150244154110, -0.660119593043450030, -0.660082034192446930, -0.660044473691238090, -0.660006911539918750, +-0.659969347738582180, -0.659931782287322190, -0.659894215186232700, -0.659856646435407760, -0.659819076034941170, -0.659781503984926190, -0.659743930285458080, -0.659706354936630210, +-0.659668777938536510, -0.659631199291270790, -0.659593618994927080, -0.659556037049599310, -0.659518453455381510, -0.659480868212367510, -0.659443281320650660, -0.659405692780326350, +-0.659368102591487810, -0.659330510754228990, -0.659292917268643810, -0.659255322134826400, -0.659217725352870040, -0.659180126922870090, -0.659142526844919700, -0.659104925119113010, +-0.659067321745544050, -0.659029716724306770, -0.658992110055495180, -0.658954501739203340, -0.658916891775525260, -0.658879280164554330, -0.658841666906385790, -0.658804052001113140, +-0.658766435448830290, -0.658728817249631390, -0.658691197403610370, -0.658653575910861490, -0.658615952771477890, -0.658578327985555160, -0.658540701553186560, -0.658503073474466240, +-0.658465443749488230, -0.658427812378346580, -0.658390179361135420, -0.658352544697948790, -0.658314908388880180, -0.658277270434024950, -0.658239630833476470, -0.658201989587329010, +-0.658164346695676580, -0.658126702158613240, -0.658089055976233130, -0.658051408148629720, -0.658013758675898510, -0.657976107558132850, -0.657938454795426900, -0.657900800387874910, +-0.657863144335570800, -0.657825486638608960, -0.657787827297083290, -0.657750166311087400, -0.657712503680716880, -0.657674839406064970, -0.657637173487225950, -0.657599505924294060, +-0.657561836717363460, -0.657524165866528180, -0.657486493371881810, -0.657448819233519940, -0.657411143451535950, -0.657373466026024200, -0.657335786957078730, -0.657298106244793790, +-0.657260423889263530, -0.657222739890582330, -0.657185054248844210, -0.657147366964142780, -0.657109678036573610, -0.657071987466230190, -0.657034295253206890, -0.656996601397597860, +-0.656958905899497240, -0.656921208758998730, -0.656883509976197820, -0.656845809551188210, -0.656808107484064040, -0.656770403774919690, -0.656732698423849180, -0.656694991430947010, +-0.656657282796307420, -0.656619572520024560, -0.656581860602192040, -0.656544147042905650, -0.656506431842258760, -0.656468715000345870, -0.656430996517261220, -0.656393276393099080, +-0.656355554627953030, -0.656317831221918780, -0.656280106175089920, -0.656242379487560920, -0.656204651159425830, -0.656166921190779130, -0.656129189581715180, -0.656091456332328240, +-0.656053721442712680, -0.656015984912962090, -0.655978246743172290, -0.655940506933436750, -0.655902765483850070, -0.655865022394506390, -0.655827277665500200, -0.655789531296925850, +-0.655751783288876950, -0.655714033641449310, -0.655676282354736520, -0.655638529428833050, -0.655600774863833280, -0.655563018659831460, -0.655525260816922200, -0.655487501335199840, +-0.655449740214757990, -0.655411977455692460, -0.655374213058096950, -0.655336447022065950, -0.655298679347693810, -0.655260910035075030, -0.655223139084303850, -0.655185366495474320, +-0.655147592268681910, -0.655109816404020550, -0.655072038901584720, -0.655034259761468670, -0.654996478983767120, -0.654958696568574310, -0.654920912515984720, -0.654883126826092840, +-0.654845339498992480, -0.654807550534779460, -0.654769759933547580, -0.654731967695391330, -0.654694173820405180, -0.654656378308683510, -0.654618581160320230, -0.654580782375411170, +-0.654542981954050250, -0.654505179896331720, -0.654467376202350400, -0.654429570872200550, -0.654391763905976750, -0.654353955303773600, -0.654316145065685580, -0.654278333191806390, +-0.654240519682232180, -0.654202704537056650, -0.654164887756374270, -0.654127069340279750, -0.654089249288867580, -0.654051427602231560, -0.654013604280467620, -0.653975779323669790, +-0.653937952731932450, -0.653900124505350180, -0.653862294644017570, -0.653824463148029330, -0.653786630017479830, -0.653748795252463880, -0.653710958853075170, -0.653673120819409760, +-0.653635281151561550, -0.653597439849625150, -0.653559596913695140, -0.653521752343866110, -0.653483906140232770, -0.653446058302888930, -0.653408208831930630, -0.653370357727451890, +-0.653332504989547090, -0.653294650618311160, -0.653256794613838570, -0.653218936976224020, -0.653181077705562110, -0.653143216801946870, -0.653105354265474110, -0.653067490096238100, +-0.653029624294333310, -0.652991756859854560, -0.652953887792896310, -0.652916017093553290, -0.652878144761919630, -0.652840270798091370, -0.652802395202162320, -0.652764517974227300, +-0.652726639114381000, -0.652688758622718130, -0.652650876499333290, -0.652612992744321390, -0.652575107357776910, -0.652537220339794000, -0.652499331690468700, -0.652461441409895040, +-0.652423549498167830, -0.652385655955381780, -0.652347760781631480, -0.652309863977011180, -0.652271965541616930, -0.652234065475542750, -0.652196163778883340, -0.652158260451733530, +-0.652120355494188120, -0.652082448906341820, -0.652044540688289320, -0.652006630840125560, -0.651968719361944560, -0.651930806253842370, -0.651892891515913230, -0.651854975148251750, +-0.651817057150952950, -0.651779137524111430, -0.651741216267821440, -0.651703293382179030, -0.651665368867278440, -0.651627442723214380, -0.651589514950081770, -0.651551585547975320, +-0.651513654516989950, -0.651475721857220470, -0.651437787568761580, -0.651399851651707660, -0.651361914106154740, -0.651323974932197070, -0.651286034129929360, -0.651248091699446640, +-0.651210147640843730, -0.651172201954215320, -0.651134254639655910, -0.651096305697261400, -0.651058355127126180, -0.651020402929345040, -0.650982449104012930, -0.650944493651224640, +-0.650906536571075220, -0.650868577863659370, -0.650830617529071450, -0.650792655567407620, -0.650754691978762120, -0.650716726763230000, -0.650678759920905960, -0.650640791451885030, +-0.650602821356262240, -0.650564849634131640, -0.650526876285589580, -0.650488901310730340, -0.650450924709648830, -0.650412946482439970, -0.650374966629198800, -0.650336985150020250, +-0.650299002044999240, -0.650261017314230030, -0.650223030957808870, -0.650185042975830240, -0.650147053368388850, -0.650109062135579950, -0.650071069277498470, -0.650033074794239220, +-0.649995078685896570, -0.649957080952566990, -0.649919081594344640, -0.649881080611324550, -0.649843078003601860, -0.649805073771271390, -0.649767067914428290, -0.649729060433167470, +-0.649691051327584090, -0.649653040597772400, -0.649615028243828660, -0.649577014265847460, -0.649538998663923730, -0.649500981438152380, -0.649462962588628680, -0.649424942115446880, +-0.649386920018703460, -0.649348896298492680, -0.649310870954909580, -0.649272843988049410, -0.649234815398007200, -0.649196785184877780, -0.649158753348756500, -0.649120719889738300, +-0.649082684807917640, -0.649044648103390910, -0.649006609776252570, -0.648968569826597790, -0.648930528254521470, -0.648892485060118980, -0.648854440243485150, -0.648816393804714560, +-0.648778345743903690, -0.648740296061146910, -0.648702244756539370, -0.648664191830176320, -0.648626137282152790, -0.648588081112563830, -0.648550023321504690, -0.648511963909069840, +-0.648473902875355780, -0.648435840220456860, -0.648397775944468460, -0.648359710047485600, -0.648321642529603450, -0.648283573390917130, -0.648245502631521250, -0.648207430251512280, +-0.648169356250984710, -0.648131280630033780, -0.648093203388754760, -0.648055124527242570, -0.648017044045592570, -0.647978961943900030, -0.647940878222259430, -0.647902792880767240, +-0.647864705919518170, -0.647826617338607250, -0.647788527138129840, -0.647750435318180990, -0.647712341878856180, -0.647674246820249770, -0.647636150142458460, -0.647598051845576840, +-0.647559951929699950, -0.647521850394923270, -0.647483747241341940, -0.647445642469051230, -0.647407536078146490, -0.647369428068722770, -0.647331318440874880, -0.647293207194699400, +-0.647255094330290830, -0.647216979847744620, -0.647178863747155940, -0.647140746028620040, -0.647102626692231620, -0.647064505738087270, -0.647026383166281800, -0.646988258976910260, +-0.646950133170068110, -0.646912005745850620, -0.646873876704353030, -0.646835746045670850, -0.646797613769899300, -0.646759479877133000, -0.646721344367468640, -0.646683207241001030, +-0.646645068497825330, -0.646606928138037000, -0.646568786161731300, -0.646530642569003610, -0.646492497359948740, -0.646454350534663270, -0.646416202093241910, -0.646378052035780030, +-0.646339900362372990, -0.646301747073116270, -0.646263592168105140, -0.646225435647435060, -0.646187277511200640, -0.646149117759498790, -0.646110956392424110, -0.646072793410072070, +-0.646034628812538040, -0.645996462599917390, -0.645958294772305600, -0.645920125329797370, -0.645881954272489620, -0.645843781600476840, -0.645805607313854720, -0.645767431412718530, +-0.645729253897163740, -0.645691074767285930, -0.645652894023180270, -0.645614711664941780, -0.645576527692667160, -0.645538342106451330, -0.645500154906389570, -0.645461966092577330, +-0.645423775665110330, -0.645385583624083830, -0.645347389969592620, -0.645309194701733650, -0.645270997820601710, -0.645232799326292290, -0.645194599218900880, -0.645156397498523050, +-0.645118194165254070, -0.645079989219189630, -0.645041782660425330, -0.645003574489055760, -0.644965364705178070, -0.644927153308886840, -0.644888940300277770, -0.644850725679446460, +-0.644812509446488160, -0.644774291601498020, -0.644736072144572740, -0.644697851075807350, -0.644659628395297330, -0.644621404103138280, -0.644583178199425680, -0.644544950684255100, +-0.644506721557722150, -0.644468490819922410, -0.644430258470950810, -0.644392024510904160, -0.644353788939877490, -0.644315551757966400, -0.644277312965266360, -0.644239072561873070, +-0.644200830547882020, -0.644162586923388350, -0.644124341688488760, -0.644086094843278390, -0.644047846387852730, -0.644009596322307590, -0.643971344646738330, -0.643933091361240770, +-0.643894836465910390, -0.643856579960842330, -0.643818321846133520, -0.643780062121878880, -0.643741800788174000, -0.643703537845114690, -0.643665273292796550, -0.643627007131315270, +-0.643588739360765660, -0.643550469981244990, -0.643512198992848060, -0.643473926395670690, -0.643435652189808470, -0.643397376375357210, -0.643359098952412390, -0.643320819921069930, +-0.643282539281424650, -0.643244257033573800, -0.643205973177612190, -0.643167687713635750, -0.643129400641740070, -0.643091111962020840, -0.643052821674573780, -0.643014529779494140, +-0.642976236276878720, -0.642937941166822790, -0.642899644449421940, -0.642861346124772080, -0.642823046192968820, -0.642784744654107840, -0.642746441508285080, -0.642708136755596240, +-0.642669830396136450, -0.642631522430002660, -0.642593212857289990, -0.642554901678094370, -0.642516588892511510, -0.642478274500637210, -0.642439958502566520, -0.642401640898396580, +-0.642363321688222520, -0.642325000872140170, -0.642286678450245450, -0.642248354422633840, -0.642210028789401480, -0.642171701550643960, -0.642133372706457210, -0.642095042256936370, +-0.642056710202178580, -0.642018376542279110, -0.641980041277333550, -0.641941704407437920, -0.641903365932688150, -0.641865025853179840, -0.641826684169008340, -0.641788340880270810, +-0.641749995987062390, -0.641711649489479010, -0.641673301387616470, -0.641634951681570700, -0.641596600371437620, -0.641558247457312940, -0.641519892939292010, -0.641481536817472000, +-0.641443179091948150, -0.641404819762816380, -0.641366458830172630, -0.641328096294112580, -0.641289732154732390, -0.641251366412127210, -0.641212999066394170, -0.641174630117628760, +-0.641136259565926680, -0.641097887411384070, -0.641059513654096640, -0.641021138294160410, -0.640982761331671420, -0.640944382766724830, -0.640906002599417880, -0.640867620829846050, +-0.640829237458105050, -0.640790852484291020, -0.640752465908499880, -0.640714077730827560, -0.640675687951369310, -0.640637296570222610, -0.640598903587482620, -0.640560509003245350, +-0.640522112817606850, -0.640483715030663040, -0.640445315642509950, -0.640406914653243510, -0.640368512062959860, -0.640330107871754260, -0.640291702079724080, -0.640253294686964570, +-0.640214885693571880, -0.640176475099641930, -0.640138062905270870, -0.640099649110553950, -0.640061233715588540, -0.640022816720470010, -0.639984398125294510, -0.639945977930157950, +-0.639907556135156600, -0.639869132740386260, -0.639830707745943080, -0.639792281151923100, -0.639753852958421800, -0.639715423165536530, -0.639676991773362680, -0.639638558781996380, +-0.639600124191533670, -0.639561688002070580, -0.639523250213703380, -0.639484810826527310, -0.639446369840639960, -0.639407927256136600, -0.639369483073113480, -0.639331037291666630, +-0.639292589911892200, -0.639254140933886330, -0.639215690357745060, -0.639177238183563870, -0.639138784411440340, -0.639100329041469740, -0.639061872073748430, -0.639023413508372330, +-0.638984953345437810, -0.638946491585040800, -0.638908028227276990, -0.638869563272243650, -0.638831096720036570, -0.638792628570751590, -0.638754158824485160, -0.638715687481333230, +-0.638677214541392150, -0.638638740004758070, -0.638600263871526350, -0.638561786141794710, -0.638523306815658610, -0.638484825893214200, -0.638446343374557860, -0.638407859259785490, +-0.638369373548993590, -0.638330886242277520, -0.638292397339734970, -0.638253906841461330, -0.638215414747552940, -0.638176921058106080, -0.638138425773216890, -0.638099928892981620, +-0.638061430417496630, -0.638022930346857970, -0.637984428681161340, -0.637945925420504210, -0.637907420564982400, -0.637868914114691930, -0.637830406069729290, -0.637791896430190520, +-0.637753385196171420, -0.637714872367769470, -0.637676357945080370, -0.637637841928200390, -0.637599324317225770, -0.637560805112252880, -0.637522284313377980, -0.637483761920697330, +-0.637445237934307300, -0.637406712354303570, -0.637368185180783640, -0.637329656413843200, -0.637291126053578740, -0.637252594100086390, -0.637214060553462640, -0.637175525413803620, +-0.637136988681205160, -0.637098450355764960, -0.637059910437578590, -0.637021368926742440, -0.636982825823352860, -0.636944281127506230, -0.636905734839298910, -0.636867186958827160, +-0.636828637486186900, -0.636790086421475610, -0.636751533764789210, -0.636712979516223960, -0.636674423675876230, -0.636635866243842390, -0.636597307220218900, -0.636558746605101480, +-0.636520184398587930, -0.636481620600773850, -0.636443055211755810, -0.636404488231630090, -0.636365919660493050, -0.636327349498441390, -0.636288777745571240, -0.636250204401978440, +-0.636211629467760890, -0.636173052943014180, -0.636134474827834920, -0.636095895122319450, -0.636057313826564160, -0.636018730940665740, -0.635980146464719680, -0.635941560398823990, +-0.635902972743074390, -0.635864383497567350, -0.635825792662399360, -0.635787200237666880, -0.635748606223466520, -0.635710010619894520, -0.635671413427047470, -0.635632814645021300, +-0.635594214273913720, -0.635555612313820630, -0.635517008764838410, -0.635478403627063760, -0.635439796900593050, -0.635401188585522190, -0.635362578681949120, -0.635323967189969530, +-0.635285354109680010, -0.635246739441177160, -0.635208123184557440, -0.635169505339917340, -0.635130885907353560, -0.635092264886962580, -0.635053642278840200, -0.635015018083084360, +-0.634976392299791080, -0.634937764929056740, -0.634899135970978020, -0.634860505425651530, -0.634821873293172970, -0.634783239573640470, -0.634744604267149850, -0.634705967373797700, +-0.634667328893680720, -0.634628688826895380, -0.634590047173538290, -0.634551403933706020, -0.634512759107495380, -0.634474112695002090, -0.634435464696324170, -0.634396815111557650, +-0.634358163940799020, -0.634319511184145090, -0.634280856841692330, -0.634242200913537340, -0.634203543399776250, -0.634164884300506990, -0.634126223615825490, -0.634087561345828440, +-0.634048897490612550, -0.634010232050274290, -0.633971565024910590, -0.633932896414617920, -0.633894226219492320, -0.633855554439631820, -0.633816881075132450, -0.633778206126090820, +-0.633739529592603820, -0.633700851474767850, -0.633662171772679810, -0.633623490486435630, -0.633584807616133450, -0.633546123161869310, -0.633507437123739690, -0.633468749501841620, +-0.633430060296271690, -0.633391369507126490, -0.633352677134502940, -0.633313983178497630, -0.633275287639206820, -0.633236590516728310, -0.633197891811158490, -0.633159191522593810, +-0.633120489651131210, -0.633081786196867390, -0.633043081159898380, -0.633004374540322320, -0.632965666338235370, -0.632926956553734320, -0.632888245186915780, -0.632849532237876660, +-0.632810817706713770, -0.632772101593523820, -0.632733383898403500, -0.632694664621449190, -0.632655943762758800, -0.632617221322428590, -0.632578497300555260, -0.632539771697235740, +-0.632501044512566830, -0.632462315746644580, -0.632423585399567220, -0.632384853471430920, -0.632346119962332480, -0.632307384872368820, -0.632268648201636530, -0.632229909950232760, +-0.632191170118254100, -0.632152428705797580, -0.632113685712959340, -0.632074941139837530, -0.632036194986528410, -0.631997447253128670, -0.631958697939735470, -0.631919947046445500, +-0.631881194573355560, -0.631842440520562040, -0.631803684888163080, -0.631764927676254920, -0.631726168884934380, -0.631687408514298500, -0.631648646564444080, -0.631609883035467940, +-0.631571117927467230, -0.631532351240537970, -0.631493582974778530, -0.631454813130285180, -0.631416041707154710, -0.631377268705484270, -0.631338494125370580, -0.631299717966910650, +-0.631260940230200740, -0.631222160915339110, -0.631183380022422140, -0.631144597551546730, -0.631105813502809810, -0.631067027876308310, -0.631028240672139250, -0.630989451890399680, +-0.630950661531186400, -0.630911869594595780, -0.630873076080726180, -0.630834280989673980, -0.630795484321535980, -0.630756686076409330, -0.630717886254390960, -0.630679084855577110, +-0.630640281880066270, -0.630601477327954680, -0.630562671199339510, -0.630523863494317660, -0.630485054212986060, -0.630446243355441860, -0.630407430921782090, -0.630368616912103660, +-0.630329801326503070, -0.630290984165078670, -0.630252165427926720, -0.630213345115144490, -0.630174523226828760, -0.630135699763076820, -0.630096874723984900, -0.630058048109651490, +-0.630019219920172960, -0.629980390155646440, -0.629941558816168870, -0.629902725901837380, -0.629863891412749120, -0.629825055349001130, -0.629786217710690540, -0.629747378497913730, +-0.629708537710769070, -0.629669695349353130, -0.629630851413762960, -0.629592005904095590, -0.629553158820448270, -0.629514310162918030, -0.629475459931601260, -0.629436608126596630, +-0.629397754748000420, -0.629358899795909870, -0.629320043270422010, -0.629281185171634120, -0.629242325499643210, -0.629203464254546540, -0.629164601436440480, -0.629125737045423630, +-0.629086871081592450, -0.629048003545044090, -0.629009134435875690, -0.628970263754184410, -0.628931391500067490, -0.628892517673621420, -0.628853642274944780, -0.628814765304134050, +-0.628775886761286370, -0.628737006646499010, -0.628698124959869100, -0.628659241701493790, -0.628620356871470550, -0.628581470469896320, -0.628542582496867670, -0.628503692952483320, +-0.628464801836839730, -0.628425909150034160, -0.628387014892163860, -0.628348119063325880, -0.628309221663617020, -0.628270322693135760, -0.628231422151978690, -0.628192520040243170, +-0.628153616358026250, -0.628114711105425270, -0.628075804282537510, -0.628036895889460320, -0.627997985926290860, -0.627959074393125700, -0.627920161290063560, -0.627881246617201020, +-0.627842330374635330, -0.627803412562463970, -0.627764493180783870, -0.627725572229691940, -0.627686649709286780, -0.627647725619664980, -0.627608799960923890, -0.627569872733160780, +-0.627530943936473020, -0.627492013570957850, -0.627453081636712760, -0.627414148133834780, -0.627375213062420830, -0.627336276422569620, -0.627297338214377610, -0.627258398437942290, +-0.627219457093361020, -0.627180514180731060, -0.627141569700149780, -0.627102623651713880, -0.627063676035522160, -0.627024726851671320, -0.626985776100258520, -0.626946823781381330, +-0.626907869895137140, -0.626868914441623290, -0.626829957420937060, -0.626790998833175240, -0.626752038678436650, -0.626713076956817990, -0.626674113668416630, -0.626635148813330050, +-0.626596182391655490, -0.626557214403490550, -0.626518244848931820, -0.626479273728078100, -0.626440301041026330, -0.626401326787873750, -0.626362350968717950, -0.626323373583656200, +-0.626284394632785960, -0.626245414116204820, -0.626206432034009390, -0.626167448386298560, -0.626128463173169170, -0.626089476394718570, -0.626050488051044350, -0.626011498142243770, +-0.625972506668414640, -0.625933513629653440, -0.625894519026059190, -0.625855522857728610, -0.625816525124759160, -0.625777525827248440, -0.625738524965294030, -0.625699522538993190, +-0.625660518548443510, -0.625621512993742580, -0.625582505874987200, -0.625543497192276200, -0.625504486945706590, -0.625465475135375650, -0.625426461761380950, -0.625387446823820190, +-0.625348430322790190, -0.625309412258389650, -0.625270392630715710, -0.625231371439865740, -0.625192348685937320, -0.625153324369028040, -0.625114298489235500, -0.625075271046657170, +-0.625036242041390630, -0.624997211473532820, -0.624958179343182650, -0.624919145650437050, -0.624880110395393600, -0.624841073578149890, -0.624802035198803510, -0.624762995257452050, +-0.624723953754192320, -0.624684910689123460, -0.624645866062342290, -0.624606819873946510, -0.624567772124033580, -0.624528722812701330, -0.624489671940047230, -0.624450619506168980, +-0.624411565511163390, -0.624372509955129720, -0.624333452838164660, -0.624294394160366030, -0.624255333921831410, -0.624216272122658400, -0.624177208762944800, -0.624138143842787430, +-0.624099077362285430, -0.624060009321535710, -0.624020939720635990, -0.623981868559683850, -0.623942795838777100, -0.623903721558013320, -0.623864645717490340, -0.623825568317304960, +-0.623786489357556320, -0.623747408838341570, -0.623708326759758180, -0.623669243121904080, -0.623630157924876750, -0.623591071168774100, -0.623551982853693070, -0.623512892979732780, +-0.623473801546990280, -0.623434708555563270, -0.623395614005549440, -0.623356517897046600, -0.623317420230152570, -0.623278321004964830, -0.623239220221581400, -0.623200117880099100, +-0.623161013980617300, -0.623121908523233010, -0.623082801508043850, -0.623043692935147720, -0.623004582804642330, -0.622965471116624810, -0.622926357871194320, -0.622887243068448000, +-0.622848126708483440, -0.622809008791398670, -0.622769889317291270, -0.622730768286259280, -0.622691645698400300, -0.622652521553812230, -0.622613395852592120, -0.622574268594839220, +-0.622535139780650670, -0.622496009410124280, -0.622456877483357870, -0.622417744000449250, -0.622378608961496220, -0.622339472366596040, -0.622300334215847850, -0.622261194509348800, +-0.622222053247196820, -0.622182910429489700, -0.622143766056325260, -0.622104620127801430, -0.622065472644016020, -0.622026323605066270, -0.621987173011051440, -0.621948020862068570, +-0.621908867158215810, -0.621869711899590730, -0.621830555086291480, -0.621791396718415770, -0.621752236796060840, -0.621713075319326070, -0.621673912288308710, -0.621634747703106450, +-0.621595581563817330, -0.621556413870539280, -0.621517244623370100, -0.621478073822407940, -0.621438901467749830, -0.621399727559495240, -0.621360552097741210, -0.621321375082585890, +-0.621282196514127080, -0.621243016392462820, -0.621203834717691030, -0.621164651489908960, -0.621125466709215980, -0.621086280375709230, -0.621047092489486860, -0.621007903050646680, +-0.620968712059286830, -0.620929519515505120, -0.620890325419399700, -0.620851129771068490, -0.620811932570608630, -0.620772733818119700, -0.620733533513698980, -0.620694331657444360, +-0.620655128249453900, -0.620615923289825620, -0.620576716778656890, -0.620537508716047070, -0.620498299102093420, -0.620459087936894080, -0.620419875220546980, -0.620380660953150250, +-0.620341445134801830, -0.620302227765599850, -0.620263008845642230, -0.620223788375026340, -0.620184566353851770, -0.620145342782215780, -0.620106117660216390, -0.620066890987951760, +-0.620027662765519790, -0.619988432993018760, -0.619949201670545900, -0.619909968798200820, -0.619870734376080760, -0.619831498404283860, -0.619792260882908290, -0.619753021812051940, +-0.619713781191813080, -0.619674539022289860, -0.619635295303579530, -0.619596050035781550, -0.619556803218993650, -0.619517554853313610, -0.619478304938839710, -0.619439053475670080, +-0.619399800463902750, -0.619360545903635210, -0.619321289794967030, -0.619282032137995710, -0.619242772932819260, -0.619203512179535840, -0.619164249878243700, -0.619124986029040870, +-0.619085720632025600, -0.619046453687295270, -0.619007185194949570, -0.618967915155085980, -0.618928643567802530, -0.618889370433197470, -0.618850095751368960, -0.618810819522415230, +-0.618771541746433780, -0.618732262423524080, -0.618692981553783830, -0.618653699137311160, -0.618614415174204120, -0.618575129664561070, -0.618535842608480270, -0.618496554006059850, +-0.618457263857397970, -0.618417972162592310, -0.618378678921742360, -0.618339384134945710, -0.618300087802300610, -0.618260789923905320, -0.618221490499858080, -0.618182189530256390, +-0.618142887015199930, -0.618103582954786180, -0.618064277349113620, -0.618024970198280290, -0.617985661502384430, -0.617946351261524530, -0.617907039475798730, -0.617867726145305380, +-0.617828411270141990, -0.617789094850408230, -0.617749776886201700, -0.617710457377620760, -0.617671136324763780, -0.617631813727728800, -0.617592489586614390, -0.617553163901518040, +-0.617513836672539450, -0.617474507899776310, -0.617435177583326890, -0.617395845723289540, -0.617356512319762520, -0.617317177372844190, -0.617277840882633040, -0.617238502849226540, +-0.617199163272724500, -0.617159822153224510, -0.617120479490824940, -0.617081135285624250, -0.617041789537720600, -0.617002442247212570, -0.616963093414197750, -0.616923743038775840, +-0.616884391121044650, -0.616845037661102440, -0.616805682659047560, -0.616766326114978610, -0.616726968028993740, -0.616687608401191520, -0.616648247231669560, -0.616608884520527640, +-0.616569520267863490, -0.616530154473775680, -0.616490787138362360, -0.616451418261722120, -0.616412047843953310, -0.616372675885153650, -0.616333302385423050, -0.616293927344859220, +-0.616254550763560500, -0.616215172641625510, -0.616175792979152480, -0.616136411776240010, -0.616097029032986470, -0.616057644749490430, -0.616018258925849490, -0.615978871562163690, +-0.615939482658530710, -0.615900092215049040, -0.615860700231817050, -0.615821306708933310, -0.615781911646495650, -0.615742515044603980, -0.615703116903355880, -0.615663717222850070, +-0.615624316003185010, -0.615584913244459080, -0.615545508946770850, -0.615506103110218920, -0.615466695734901760, -0.615427286820917070, -0.615387876368364890, -0.615348464377343030, +-0.615309050847949960, -0.615269635780284370, -0.615230219174444650, -0.615190801030529370, -0.615151381348636340, -0.615111960128865600, -0.615072537371314950, -0.615033113076082990, +-0.614993687243268190, -0.614954259872969260, -0.614914830965284540, -0.614875400520312860, -0.614835968538151920, -0.614796535018901860, -0.614757099962660370, -0.614717663369526160, +-0.614678225239597700, -0.614638785572973800, -0.614599344369752940, -0.614559901630032930, -0.614520457353913920, -0.614481011541493700, -0.614441564192871100, -0.614402115308144480, +-0.614362664887412540, -0.614323212930773970, -0.614283759438327470, -0.614244304410170750, -0.614204847846404060, -0.614165389747125090, -0.614125930112432770, -0.614086468942425690, +-0.614047006237202320, -0.614007541996861470, -0.613968076221501070, -0.613928608911221140, -0.613889140066119720, -0.613849669686295510, -0.613810197771847090, -0.613770724322873160, +-0.613731249339472430, -0.613691772821743480, -0.613652294769785220, -0.613612815183695480, -0.613573334063574390, -0.613533851409519990, -0.613494367221630980, -0.613454881500006040, +-0.613415394244743890, -0.613375905455942560, -0.613336415133702070, -0.613296923278120690, -0.613257429889296880, -0.613217934967329570, -0.613178438512317460, -0.613138940524359130, +-0.613099441003553510, -0.613059939949999410, -0.613020437363794630, -0.612980933245039440, -0.612941427593831970, -0.612901920410270920, -0.612862411694455100, -0.612822901446483210, +-0.612783389666454070, -0.612743876354465700, -0.612704361510618360, -0.612664845135010180, -0.612625327227739880, -0.612585807788906260, -0.612546286818608120, -0.612506764316944170, +-0.612467240284013450, -0.612427714719913860, -0.612388187624745670, -0.612348658998607020, -0.612309128841596720, -0.612269597153813680, -0.612230063935356620, -0.612190529186324330, +-0.612150992906814960, -0.612111455096928990, -0.612071915756764230, -0.612032374886419820, -0.611992832485994340, -0.611953288555586840, -0.611913743095296110, -0.611874196105220980, +-0.611834647585459690, -0.611795097536112500, -0.611755545957277660, -0.611715992849053760, -0.611676438211540050, -0.611636882044835130, -0.611597324349038020, -0.611557765124246980, +-0.611518204370562150, -0.611478642088081780, -0.611439078276904910, -0.611399512937130240, -0.611359946068856910, -0.611320377672183610, -0.611280807747209390, -0.611241236294033150, +-0.611201663312753160, -0.611162088803469670, -0.611122512766280930, -0.611082935201285980, -0.611043356108583740, -0.611003775488273000, -0.610964193340452160, -0.610924609665221550, +-0.610885024462679340, -0.610845437732924660, -0.610805849476056320, -0.610766259692173350, -0.610726668381374790, -0.610687075543759560, -0.610647481179426690, -0.610607885288474320, +-0.610568287871002920, -0.610528688927110870, -0.610489088456897090, -0.610449486460460490, -0.610409882937900330, -0.610370277889314640, -0.610330671314804010, -0.610291063214466690, +-0.610251453588401720, -0.610211842436708120, -0.610172229759484930, -0.610132615556831180, -0.610092999828845790, -0.610053382575628020, -0.610013763797276010, -0.609974143493890340, +-0.609934521665569270, -0.609894898312411950, -0.609855273434517400, -0.609815647031984540, -0.609776019104912640, -0.609736389653400050, -0.609696758677547130, -0.609657126177452270, +-0.609617492153214700, -0.609577856604933350, -0.609538219532707370, -0.609498580936635780, -0.609458940816817840, -0.609419299173351690, -0.609379656006338140, -0.609340011315875340, +-0.609300365102062650, -0.609260717364998980, -0.609221068104783490, -0.609181417321515320, -0.609141765015292940, -0.609102111186216820, -0.609062455834385450, -0.609022798959897970, +-0.608983140562853410, -0.608943480643351130, -0.608903819201490060, -0.608864156237369450, -0.608824491751088440, -0.608784825742745510, -0.608745158212441240, -0.608705489160274000, +-0.608665818586343050, -0.608626146490747640, -0.608586472873586800, -0.608546797734959120, -0.608507121074965070, -0.608467442893703250, -0.608427763191272900, -0.608388081967773050, +-0.608348399223303080, -0.608308714957962020, -0.608269029171849220, -0.608229341865063830, -0.608189653037704450, -0.608149962689871540, -0.608110270821663800, -0.608070577433180270, +-0.608030882524520420, -0.607991186095783290, -0.607951488147067560, -0.607911788678473730, -0.607872087690100480, -0.607832385182047070, -0.607792681154412650, -0.607752975607296460, +-0.607713268540797880, -0.607673559955016150, -0.607633849850050530, -0.607594138225999500, -0.607554425082963870, -0.607514710421042210, -0.607474994240333800, -0.607435276540937870, +-0.607395557322953690, -0.607355836586480620, -0.607316114331617360, -0.607276390558464390, -0.607236665267120610, -0.607196938457685080, -0.607157210130257140, -0.607117480284936170, +-0.607077748921821650, -0.607038016041012600, -0.606998281642607940, -0.606958545726708150, -0.606918808293412050, -0.606879069342818990, -0.606839328875028230, -0.606799586890139130, +-0.606759843388251060, -0.606720098369462610, -0.606680351833874700, -0.606640603781585910, -0.606600854212695610, -0.606561103127303160, -0.606521350525507930, -0.606481596407409280, +-0.606441840773106810, -0.606402083622699540, -0.606362324956286500, -0.606322564773968290, -0.606282803075843700, -0.606243039862012110, -0.606203275132572880, -0.606163508887625490, +-0.606123741127268520, -0.606083971851603010, -0.606044201060727540, -0.606004428754741590, -0.605964654933744630, -0.605924879597835920, -0.605885102747115050, -0.605845324381681480, +-0.605805544501634490, -0.605765763107072970, -0.605725980198097760, -0.605686195774807650, -0.605646409837302000, -0.605606622385680300, -0.605566833420042140, -0.605527042940486090, +-0.605487250947113200, -0.605447457440022150, -0.605407662419312540, -0.605367865885083620, -0.605328067837435090, -0.605288268276466420, -0.605248467202277100, -0.605208664614966580, +-0.605168860514633700, -0.605129054901379470, -0.605089247775302490, -0.605049439136502440, -0.605009628985078710, -0.604969817321130980, -0.604930004144758730, -0.604890189456060660, +-0.604850373255137910, -0.604810555542089180, -0.604770736317014060, -0.604730915580012130, -0.604691093331182870, -0.604651269570625980, -0.604611444298440830, -0.604571617514726430, +-0.604531789219583620, -0.604491959413111400, -0.604452128095409160, -0.604412295266576690, -0.604372460926713480, -0.604332625075919120, -0.604292787714292510, -0.604252948841934590, +-0.604213108458944380, -0.604173266565421360, -0.604133423161465120, -0.604093578247175360, -0.604053731822651650, -0.604013883887993600, -0.603974034443300110, -0.603934183488672340, +-0.603894331024208970, -0.603854477050009940, -0.603814621566174600, -0.603774764572802770, -0.603734906069993920, -0.603695046057847180, -0.603655184536463500, -0.603615321505941880, +-0.603575456966382040, -0.603535590917883450, -0.603495723360545910, -0.603455854294469020, -0.603415983719752580, -0.603376111636496180, -0.603336238044798740, -0.603296362944761410, +-0.603256486336483210, -0.603216608220063730, -0.603176728595602780, -0.603136847463200070, -0.603096964822954380, -0.603057080674967110, -0.603017195019337040, -0.602977307856164100, +-0.602937419185547770, -0.602897529007587970, -0.602857637322384400, -0.602817744130036640, -0.602777849430644610, -0.602737953224307120, -0.602698055511125540, -0.602658156291198790, +-0.602618255564626670, -0.602578353331508890, -0.602538449591945250, -0.602498544346035560, -0.602458637593878630, -0.602418729335575940, -0.602378819571226410, -0.602338908300929840, +-0.602298995524785940, -0.602259081242894620, -0.602219165455355480, -0.602179248162268530, -0.602139329363732710, -0.602099409059849380, -0.602059487250717450, -0.602019563936436740, +-0.601979639117107170, -0.601939712792828540, -0.601899784963700560, -0.601859855629822470, -0.601819924791295420, -0.601779992448218560, -0.601740058600691800, -0.601700123248814720, +-0.601660186392687480, -0.601620248032409770, -0.601580308168081280, -0.601540366799801500, -0.601500423927671450, -0.601460479551790270, -0.601420533672258010, -0.601380586289174350, +-0.601340637402639210, -0.601300687012752520, -0.601260735119613310, -0.601220781723323050, -0.601180826823980890, -0.601140870421686620, -0.601100912516540080, -0.601060953108641380, +-0.601020992198090240, -0.600981029784986690, -0.600941065869430410, -0.600901100451520900, -0.600861133531359280, -0.600821165109044930, -0.600781195184677540, -0.600741223758357150, +-0.600701250830183770, -0.600661276400256570, -0.600621300468676900, -0.600581323035543900, -0.600541344100957610, -0.600501363665018050, -0.600461381727825040, -0.600421398289478490, +-0.600381413350078550, -0.600341426909725030, -0.600301438968517180, -0.600261449526556580, -0.600221458583942270, -0.600181466140774280, -0.600141472197152640, -0.600101476753177380, +-0.600061479808948420, -0.600021481364565010, -0.599981481420128640, -0.599941479975738550, -0.599901477031494770, -0.599861472587497220, -0.599821466643846060, -0.599781459200641190, +-0.599741450257982760, -0.599701439815969910, -0.599661427874704220, -0.599621414434284960, -0.599581399494812150, -0.599541383056385820, -0.599501365119106120, -0.599461345683072970, +-0.599421324748385720, -0.599381302315145860, -0.599341278383452750, -0.599301252953406420, -0.599261226025107010, -0.599221197598654440, -0.599181167674148970, -0.599141136251690520, +-0.599101103331378560, -0.599061068913314560, -0.599021032997597900, -0.598980995584328600, -0.598940956673606920, -0.598900916265532770, -0.598860874360206300, -0.598820830957726980, +-0.598780786058196290, -0.598740739661713590, -0.598700691768379150, -0.598660642378292860, -0.598620591491555000, -0.598580539108265700, -0.598540485228524990, -0.598500429852433120, +-0.598460372980089470, -0.598420314611595620, -0.598380254747050920, -0.598340193386555530, -0.598300130530209810, -0.598260066178113670, -0.598220000330366600, -0.598179932987070400, +-0.598139864148324210, -0.598099793814228510, -0.598059721984883220, -0.598019648660388590, -0.597979573840844880, -0.597939497526352340, -0.597899419717010880, -0.597859340412920330, +-0.597819259614182030, -0.597779177320895580, -0.597739093533161240, -0.597699008251079130, -0.597658921474749530, -0.597618833204272670, -0.597578743439747930, -0.597538652181277110, +-0.597498559428959570, -0.597458465182895690, -0.597418369443185600, -0.597378272209929670, -0.597338173483228040, -0.597298073263180960, -0.597257971549887910, -0.597217868343450700, +-0.597177763643968910, -0.597137657451542570, -0.597097549766272160, -0.597057440588257830, -0.597017329917600040, -0.596977217754398050, -0.596937104098753780, -0.596896988950766700, +-0.596856872310537300, -0.596816754178165600, -0.596776634553751960, -0.596736513437396860, -0.596696390829200450, -0.596656266729262310, -0.596616141137684240, -0.596576014054565840, +-0.596535885480007360, -0.596495755414109150, -0.596455623856971600, -0.596415490808694940, -0.596375356269378880, -0.596335220239125220, -0.596295082718033440, -0.596254943706203910, +-0.596214803203736990, -0.596174661210733150, -0.596134517727292650, -0.596094372753515840, -0.596054226289503110, -0.596014078335354030, -0.595973928891170620, -0.595933777957052270, +-0.595893625533099440, -0.595853471619412600, -0.595813316216092130, -0.595773159323237600, -0.595733000940950940, -0.595692841069331740, -0.595652679708480460, -0.595612516858497370, +-0.595572352519483150, -0.595532186691537960, -0.595492019374762260, -0.595451850569256650, -0.595411680275120590, -0.595371508492456010, -0.595331335221362720, -0.595291160461941190, +-0.595250984214291570, -0.595210806478514650, -0.595170627254710590, -0.595130446542979310, -0.595090264343422600, -0.595050080656140290, -0.595009895481232730, -0.594969708818800510, +-0.594929520668943890, -0.594889331031763560, -0.594849139907359880, -0.594808947295832670, -0.594768753197283730, -0.594728557611812870, -0.594688360539520790, -0.594648161980507630, +-0.594607961934874200, -0.594567760402720750, -0.594527557384147310, -0.594487352879255580, -0.594447146888145480, -0.594406939410917600, -0.594366730447672300, -0.594326519998510160, +-0.594286308063531780, -0.594246094642837620, -0.594205879736527500, -0.594165663344703330, -0.594125445467465150, -0.594085226104913210, -0.594045005257148320, -0.594004782924270840, +-0.593964559106381350, -0.593924333803579900, -0.593884107015968170, -0.593843878743646300, -0.593803648986714670, -0.593763417745273970, -0.593723185019424670, -0.593682950809267470, +-0.593642715114902850, -0.593602477936431390, -0.593562239273953020, -0.593521999127569870, -0.593481757497381630, -0.593441514383489130, -0.593401269785992720, -0.593361023704993110, +-0.593320776140590310, -0.593280527092886260, -0.593240276561980970, -0.593200024547974820, -0.593159771050968730, -0.593119516071063170, -0.593079259608358830, -0.593039001662956420, +-0.592998742234956410, -0.592958481324458830, -0.592918218931565820, -0.592877955056377190, -0.592837689698993750, -0.592797422859515980, -0.592757154538044780, -0.592716884734680650, +-0.592676613449523490, -0.592636340682675680, -0.592596066434236900, -0.592555790704307970, -0.592515513492989590, -0.592475234800382440, -0.592434954626587130, -0.592394672971704560, +-0.592354389835834440, -0.592314105219079230, -0.592273819121538650, -0.592233531543313490, -0.592193242484504560, -0.592152951945212560, -0.592112659925538080, -0.592072366425581360, +-0.592032071445444340, -0.591991774985227150, -0.591951477045030590, -0.591911177624955260, -0.591870876725101970, -0.591830574345571630, -0.591790270486464710, -0.591749965147881470, +-0.591709658329923950, -0.591669350032692390, -0.591629040256287380, -0.591588729000809830, -0.591548416266360460, -0.591508102053040050, -0.591467786360948540, -0.591427469190188400, +-0.591387150540859660, -0.591346830413062910, -0.591306508806899170, -0.591266185722469030, -0.591225861159873520, -0.591185535119213350, -0.591145207600589420, -0.591104878604101660, +-0.591064548129852430, -0.591024216177941760, -0.590983882748470690, -0.590943547841539800, -0.590903211457250110, -0.590862873595701670, -0.590822534256996710, -0.590782193441235500, +-0.590741851148518740, -0.590701507378947330, -0.590661162132622210, -0.590620815409644170, -0.590580467210114150, -0.590540117534132820, -0.590499766381800570, -0.590459413753219640, +-0.590419059648490170, -0.590378704067712980, -0.590338347010989080, -0.590297988478419410, -0.590257628470104660, -0.590217266986145070, -0.590176904026643130, -0.590136539591698870, +-0.590096173681413320, -0.590055806295887280, -0.590015437435221780, -0.589975067099517640, -0.589934695288875880, -0.589894322003396530, -0.589853947243182300, -0.589813571008332980, +-0.589773193298949950, -0.589732814115133790, -0.589692433456985630, -0.589652051324606410, -0.589611667718096370, -0.589571282637557760, -0.589530896083091060, -0.589490508054797080, +-0.589450118552776850, -0.589409727577131280, -0.589369335127961410, -0.589328941205368270, -0.589288545809452000, -0.589248148940315080, -0.589207750598057740, -0.589167350782781150, +-0.589126949494586110, -0.589086546733573630, -0.589046142499844880, -0.589005736793499990, -0.588965329614641540, -0.588924920963369790, -0.588884510839785660, -0.588844099243990280, +-0.588803686176084580, -0.588763271636169820, -0.588722855624346790, -0.588682438140716640, -0.588642019185379620, -0.588601598758438320, -0.588561176859992980, -0.588520753490144770, +-0.588480328648994690, -0.588439902336643670, -0.588399474553192300, -0.588359045298742940, -0.588318614573395960, -0.588278182377252380, -0.588237748710413340, -0.588197313572980000, +-0.588156876965053370, -0.588116438886734480, -0.588075999338124600, -0.588035558319323970, -0.587995115830435070, -0.587954671871558480, -0.587914226442795230, -0.587873779544246360, +-0.587833331176013000, -0.587792881338195630, -0.587752430030896830, -0.587711977254216870, -0.587671523008256980, -0.587631067293118310, -0.587590610108902010, -0.587550151455709100, +-0.587509691333640950, -0.587469229742798470, -0.587428766683282140, -0.587388302155194770, -0.587347836158636500, -0.587307368693708700, -0.587266899760512500, -0.587226429359149040, +-0.587185957489719470, -0.587145484152324260, -0.587105009347066110, -0.587064533074045490, -0.587024055333363440, -0.586983576125121310, -0.586943095449420250, -0.586902613306361400, +-0.586862129696046120, -0.586821644618574670, -0.586781158074049850, -0.586740670062572240, -0.586700180584242890, -0.586659689639163040, -0.586619197227433940, -0.586578703349156960, +-0.586538208004432460, -0.586497711193363140, -0.586457212916049580, -0.586416713172592920, -0.586376211963094530, -0.586335709287655660, -0.586295205146377450, -0.586254699539361160, +-0.586214192466708250, -0.586173683928519100, -0.586133173924896390, -0.586092662455940830, -0.586052149521753550, -0.586011635122436040, -0.585971119258089310, -0.585930601928814080, +-0.585890083134713020, -0.585849562875886850, -0.585809041152436700, -0.585768517964464050, -0.585727993312070040, -0.585687467195356030, -0.585646939614423270, -0.585606410569373350, +-0.585565880060306520, -0.585525348087325810, -0.585484814650531700, -0.585444279750025550, -0.585403743385908730, -0.585363205558282470, -0.585322666267247490, -0.585282125512906700, +-0.585241583295360470, -0.585201039614710260, -0.585160494471057560, -0.585119947864503500, -0.585079399795149670, -0.585038850263097320, -0.584998299268447820, -0.584957746811301860, +-0.584917192891762250, -0.584876637509929690, -0.584836080665905530, -0.584795522359791150, -0.584754962591688020, -0.584714401361697390, -0.584673838669920070, -0.584633274516458860, +-0.584592708901414570, -0.584552141824888350, -0.584511573286981890, -0.584471003287796440, -0.584430431827433480, -0.584389858905994490, -0.584349284523580040, -0.584308708680293170, +-0.584268131376234570, -0.584227552611505610, -0.584186972386207760, -0.584146390700442500, -0.584105807554311180, -0.584065222947914630, -0.584024636881355860, -0.583984049354735360, +-0.583943460368154810, -0.583902869921715690, -0.583862278015519260, -0.583821684649667220, -0.583781089824260910, -0.583740493539401830, -0.583699895795190880, -0.583659296591730880, +-0.583618695929122740, -0.583578093807467720, -0.583537490226867520, -0.583496885187423600, -0.583456278689236770, -0.583415670732409960, -0.583375061317043860, -0.583334450443240280, +-0.583293838111100470, -0.583253224320726130, -0.583212609072218610, -0.583171992365679630, -0.583131374201210750, -0.583090754578912570, -0.583050133498888350, -0.583009510961238760, +-0.582968886966065410, -0.582928261513469770, -0.582887634603553530, -0.582847006236417500, -0.582806376412164600, -0.582765745130895850, -0.582725112392712630, -0.582684478197716740, +-0.582643842546009650, -0.582603205437692840, -0.582562566872868120, -0.582521926851636950, -0.582481285374100270, -0.582440642440361090, -0.582399998050520230, -0.582359352204679490, +-0.582318704902940240, -0.582278056145404290, -0.582237405932173210, -0.582196754263347940, -0.582156101139031490, -0.582115446559324680, -0.582074790524329310, -0.582034133034147080, +-0.581993474088879360, -0.581952813688628060, -0.581912151833494650, -0.581871488523580170, -0.581830823758987760, -0.581790157539818220, -0.581749489866173250, -0.581708820738154660, +-0.581668150155863930, -0.581627478119402850, -0.581586804628872360, -0.581546129684375580, -0.581505453286013440, -0.581464775433887750, -0.581424096128099980, -0.581383415368752040, +-0.581342733155945650, -0.581302049489782370, -0.581261364370363910, -0.581220677797791410, -0.581179989772167890, -0.581139300293594400, -0.581098609362172610, -0.581057916978004350, +-0.581017223141191310, -0.580976527851834510, -0.580935831110036990, -0.580895132915900000, -0.580854433269525130, -0.580813732171014290, -0.580773029620468950, -0.580732325617991150, +-0.580691620163682480, -0.580650913257644840, -0.580610204899979050, -0.580569495090788590, -0.580528783830174370, -0.580488071118238190, -0.580447356955081870, -0.580406641340807110, +-0.580365924275515030, -0.580325205759308790, -0.580284485792289640, -0.580243764374559270, -0.580203041506219370, -0.580162317187371990, -0.580121591418118810, -0.580080864198561640, +-0.580040135528802290, -0.579999405408941900, -0.579958673839083730, -0.579917940819328790, -0.579877206349779020, -0.579836470430536320, -0.579795733061702400, -0.579754994243379170, +-0.579714253975667670, -0.579673512258671360, -0.579632769092491170, -0.579592024477229020, -0.579551278412986930, -0.579510530899866590, -0.579469781937969940, -0.579429031527398770, +-0.579388279668254460, -0.579347526360640020, -0.579306771604656820, -0.579266015400406680, -0.579225257747991500, -0.579184498647513200, -0.579143738099073600, -0.579102976102773950, +-0.579062212658717600, -0.579021447767005700, -0.578980681427740280, -0.578939913641023040, -0.578899144406956000, -0.578858373725641200, -0.578817601597180430, -0.578776828021674850, +-0.578736052999228030, -0.578695276529941020, -0.578654498613915820, -0.578613719251254490, -0.578572938442058700, -0.578532156186430610, -0.578491372484471470, -0.578450587336284630, +-0.578409800741971240, -0.578369012701633320, -0.578328223215372920, -0.578287432283292050, -0.578246639905492520, -0.578205846082076370, -0.578165050813145620, -0.578124254098801530, +-0.578083455939147450, -0.578042656334284870, -0.578001855284315580, -0.577961052789341620, -0.577920248849465130, -0.577879443464787150, -0.577838636635411350, -0.577797828361439000, +-0.577757018642972130, -0.577716207480112540, -0.577675394872962600, -0.577634580821624110, -0.577593765326199100, -0.577552948386789720, -0.577512130003497330, -0.577471310176425280, +-0.577430488905674940, -0.577389666191348350, -0.577348842033547640, -0.577308016432374840, -0.577267189387931980, -0.577226360900320310, -0.577185530969643650, -0.577144699596003010, +-0.577103866779500760, -0.577063032520238720, -0.577022196818319230, -0.576981359673844120, -0.576940521086915630, -0.576899681057635230, -0.576858839586106180, -0.576817996672430170, +-0.576777152316709120, -0.576736306519045170, -0.576695459279540470, -0.576654610598297150, -0.576613760475416570, -0.576572908911002320, -0.576532055905155770, -0.576491201457979050, +-0.576450345569574310, -0.576409488240043790, -0.576368629469489520, -0.576327769258013660, -0.576286907605717660, -0.576246044512705110, -0.576205179979077500, -0.576164314004936950, +-0.576123446590385500, -0.576082577735525510, -0.576041707440459130, -0.576000835705287710, -0.575959962530114830, -0.575919087915042090, -0.575878211860171740, -0.575837334365605800, +-0.575796455431446530, -0.575755575057796070, -0.575714693244756660, -0.575673809992430560, -0.575632925300919250, -0.575592039170326310, -0.575551151600753210, -0.575510262592302310, +-0.575469372145075760, -0.575428480259175810, -0.575387586934703820, -0.575346692171763710, -0.575305795970456830, -0.575264898330885450, -0.575223999253151820, -0.575183098737358180, +-0.575142196783606790, -0.575101293391999890, -0.575060388562639860, -0.575019482295628050, -0.574978574591068270, -0.574937665449062000, -0.574896754869711700, -0.574855842853119410, +-0.574814929399387500, -0.574774014508618310, -0.574733098180913340, -0.574692180416376370, -0.574651261215109010, -0.574610340577213390, -0.574569418502791970, -0.574528494991947030, +-0.574487570044780790, -0.574446643661395640, -0.574405715841893150, -0.574364786586377130, -0.574323855894949160, -0.574282923767711510, -0.574241990204766520, -0.574201055206216670, +-0.574160118772164110, -0.574119180902710410, -0.574078241597959620, -0.574037300858013190, -0.573996358682973610, -0.573955415072943010, -0.573914470028023870, -0.573873523548318660, +-0.573832575633929530, -0.573791626284958280, -0.573750675501508710, -0.573709723283682420, -0.573668769631581870, -0.573627814545309310, -0.573586858024967340, -0.573545900070658090, +-0.573504940682483480, -0.573463979860547200, -0.573423017604950850, -0.573382053915797110, -0.573341088793188240, -0.573300122237226590, -0.573259154248014660, -0.573218184825654790, +-0.573177213970249460, -0.573136241681900470, -0.573095267960711530, -0.573054292806784440, -0.573013316220221560, -0.572972338201125480, -0.572931358749598550, -0.572890377865742370, +-0.572849395549661080, -0.572808411801456250, -0.572767426621230480, -0.572726440009086120, -0.572685451965125550, -0.572644462489451440, -0.572603471582166180, -0.572562479243372220, +-0.572521485473171390, -0.572480490271667470, -0.572439493638962400, -0.572398495575158540, -0.572357496080358460, -0.572316495154664650, -0.572275492798179690, -0.572234489011005150, +-0.572193483793245190, -0.572152477145001500, -0.572111469066376550, -0.572070459557472930, -0.572029448618393220, -0.571988436249239900, -0.571947422450115540, -0.571906407221121740, +-0.571865390562362740, -0.571824372473940250, -0.571783352955956840, -0.571742332008515100, -0.571701309631717500, -0.571660285825666530, -0.571619260590464200, -0.571578233926214430, +-0.571537205833019150, -0.571496176310980710, -0.571455145360201920, -0.571414112980785260, -0.571373079172833310, -0.571332043936448650, -0.571291007271733210, -0.571249969178790900, +-0.571208929657723740, -0.571167888708634220, -0.571126846331625030, -0.571085802526798640, -0.571044757294257740, -0.571003710634104270, -0.570962662546442230, -0.570921613031373560, +-0.570880562089000840, -0.570839509719426760, -0.570798455922753800, -0.570757400699084760, -0.570716344048522230, -0.570675285971168900, -0.570634226467126470, -0.570593165536499300, +-0.570552103179389200, -0.570511039395898870, -0.570469974186130990, -0.570428907550188050, -0.570387839488172180, -0.570346770000187410, -0.570305699086335770, -0.570264626746719850, +-0.570223552981442340, -0.570182477790605930, -0.570141401174313440, -0.570100323132667340, -0.570059243665770430, -0.570018162773724750, -0.569977080456634310, -0.569935996714601270, +-0.569894911547728200, -0.569853824956117800, -0.569812736939872890, -0.569771647499096150, -0.569730556633889500, -0.569689464344357190, -0.569648370630601250, -0.569607275492724390, +-0.569566178930829390, -0.569525080945018860, -0.569483981535395700, -0.569442880702062500, -0.569401778445121410, -0.569360674764676670, -0.569319569660830190, -0.569278463133684800, +-0.569237355183343170, -0.569196245809908240, -0.569155135013482690, -0.569114022794168450, -0.569072909152070090, -0.569031794087289320, -0.568990677599929050, -0.568949559690092200, +-0.568908440357881350, -0.568867319603399420, -0.568826197426749220, -0.568785073828032780, -0.568743948807354350, -0.568702822364816170, -0.568661694500520840, -0.568620565214571270, +-0.568579434507070270, -0.568538302378120750, -0.568497168827824640, -0.568456033856286510, -0.568414897463608180, -0.568373759649892560, -0.568332620415242570, -0.568291479759761130, +-0.568250337683550930, -0.568209194186714890, -0.568168049269355820, -0.568126902931575970, -0.568085755173479480, -0.568044605995168710, -0.568003455396746350, -0.567962303378315440, +-0.567921149939978780, -0.567879995081838400, -0.567838838803998770, -0.567797681106562150, -0.567756521989631220, -0.567715361453309030, -0.567674199497698480, -0.567633036122902390, +-0.567591871329023780, -0.567550705116165450, -0.567509537484429560, -0.567468368433920570, -0.567427197964740730, -0.567386026076992840, -0.567344852770779950, -0.567303678046204850, +-0.567262501903370580, -0.567221324342379370, -0.567180145363335500, -0.567138964966341310, -0.567097783151499720, -0.567056599918913660, -0.567015415268686040, -0.566974229200920000, +-0.566933041715718340, -0.566891852813183330, -0.566850662493419420, -0.566809470756528770, -0.566768277602614610, -0.566727083031779650, -0.566685887044127030, -0.566644689639759670, +-0.566603490818779810, -0.566562290581292040, -0.566521088927398500, -0.566479885857202210, -0.566438681370806220, -0.566397475468313650, -0.566356268149827200, -0.566315059415450240, +-0.566273849265284790, -0.566232637699435440, -0.566191424718004540, -0.566150210321095140, -0.566108994508810140, -0.566067777281252680, -0.566026558638525800, -0.565985338580731740, +-0.565944117107975100, -0.565902894220358110, -0.565861669917983920, -0.565820444200955560, -0.565779217069376060, -0.565737988523348560, -0.565696758562976080, -0.565655527188361760, +-0.565614294399607750, -0.565573060196818860, -0.565531824580097320, -0.565490587549546180, -0.565449349105268560, -0.565408109247367510, -0.565366867975945600, -0.565325625291107080, +-0.565284381192954650, -0.565243135681591240, -0.565201888757119960, -0.565160640419643870, -0.565119390669266310, -0.565078139506090200, -0.565036886930218810, -0.564995632941754480, +-0.564954377540801690, -0.564913120727463030, -0.564871862501841520, -0.564830602864040410, -0.564789341814162740, -0.564748079352311860, -0.564706815478589920, -0.564665550193101720, +-0.564624283495949510, -0.564583015387236760, -0.564541745867066400, -0.564500474935541670, -0.564459202592765830, -0.564417928838841900, -0.564376653673872460, -0.564335377097962110, +-0.564294099111213310, -0.564252819713729200, -0.564211538905613150, -0.564170256686968190, -0.564128973057897550, -0.564087688018503840, -0.564046401568891630, -0.564005113709163290, +-0.563963824439422280, -0.563922533759771750, -0.563881241670314840, -0.563839948171154790, -0.563798653262394870, -0.563757356944137640, -0.563716059216487710, -0.563674760079547640, +-0.563633459533420700, -0.563592157578210020, -0.563550854214019070, -0.563509549440950890, -0.563468243259108160, -0.563426935668595470, -0.563385626669515530, -0.563344316261971460, +-0.563303004446066620, -0.563261691221904390, -0.563220376589587790, -0.563179060549220290, -0.563137743100905140, -0.563096424244744820, -0.563055103980844350, -0.563013782309305990, +-0.562972459230233200, -0.562931134743729240, -0.562889808849897480, -0.562848481548840480, -0.562807152840662960, -0.562765822725467600, -0.562724491203357660, -0.562683158274436490, +-0.562641823938807460, -0.562600488196573820, -0.562559151047838930, -0.562517812492706270, -0.562476472531278300, -0.562435131163659840, -0.562393788389953580, -0.562352444210262870, +-0.562311098624690970, -0.562269751633341470, -0.562228403236316730, -0.562187053433721770, -0.562145702225659180, -0.562104349612232320, -0.562062995593544560, -0.562021640169699350, +-0.561980283340800080, -0.561938925106949980, -0.561897565468252650, -0.561856204424810660, -0.561814841976728930, -0.561773478124110050, -0.561732112867057490, -0.561690746205674610, +-0.561649378140064880, -0.561608008670331780, -0.561566637796577890, -0.561525265518908130, -0.561483891837425200, -0.561442516752232450, -0.561401140263433570, -0.561359762371131720, +-0.561318383075430470, -0.561277002376433300, -0.561235620274242900, -0.561194236768964180, -0.561152851860699850, -0.561111465549553490, -0.561070077835628340, -0.561028688719028000, +-0.560987298199856040, -0.560945906278214950, -0.560904512954209960, -0.560863118227943660, -0.560821722099519530, -0.560780324569041140, -0.560738925636611870, -0.560697525302335300, +-0.560656123566315000, -0.560614720428654350, -0.560573315889456140, -0.560531909948825290, -0.560490502606864840, -0.560449093863678030, -0.560407683719368550, -0.560366272174039780, +-0.560324859227794620, -0.560283444880738110, -0.560242029132972940, -0.560200611984602690, -0.560159193435730840, -0.560117773486461080, -0.560076352136896990, -0.560034929387141830, +-0.559993505237299520, -0.559952079687472630, -0.559910652737766190, -0.559869224388283240, -0.559827794639127240, -0.559786363490401670, -0.559744930942210230, -0.559703496994655710, +-0.559662061647843270, -0.559620624901875590, -0.559579186756856360, -0.559537747212889180, -0.559496306270077630, -0.559454863928525280, -0.559413420188335730, -0.559371975049612780, +-0.559330528512459010, -0.559289080576979680, -0.559247631243277700, -0.559206180511456650, -0.559164728381620120, -0.559123274853871810, -0.559081819928315290, -0.559040363605053490, +-0.558998905884191430, -0.558957446765832260, -0.558915986250079320, -0.558874524337036550, -0.558833061026807410, -0.558791596319495600, -0.558750130215204810, -0.558708662714037960, +-0.558667193816100190, -0.558625723521494420, -0.558584251830324340, -0.558542778742693650, -0.558501304258706030, -0.558459828378465080, -0.558418351102073940, -0.558376872429637520, +-0.558335392361259060, -0.558293910897042060, -0.558252428037090190, -0.558210943781507370, -0.558169458130397200, -0.558127971083863360, -0.558086482642009550, -0.558044992804938800, +-0.558003501572756360, -0.557962008945565020, -0.557920514923468840, -0.557879019506571260, -0.557837522694976220, -0.557796024488786510, -0.557754524888107620, -0.557713023893042340, +-0.557671521503694480, -0.557630017720167850, -0.557588512542566250, -0.557547005970993270, -0.557505498005552820, -0.557463988646348610, -0.557422477893483650, -0.557380965747063310, +-0.557339452207190500, -0.557297937273969040, -0.557256420947502830, -0.557214903227895460, -0.557173384115250190, -0.557131863609672150, -0.557090341711264480, -0.557048818420130880, +-0.557007293736375250, -0.556965767660101420, -0.556924240191413180, -0.556882711330414340, -0.556841181077208700, -0.556799649431899410, -0.556758116394591720, -0.556716581965388760, +-0.556675046144394340, -0.556633508931712260, -0.556591970327446450, -0.556550430331700600, -0.556508888944578060, -0.556467346166183980, -0.556425801996621620, -0.556384256435994650, +-0.556342709484407120, -0.556301161141962710, -0.556259611408765450, -0.556218060284919270, -0.556176507770527070, -0.556134953865694340, -0.556093398570524310, -0.556051841885120690, +-0.556010283809587610, -0.555968724344028660, -0.555927163488547980, -0.555885601243248590, -0.555844037608235970, -0.555802472583613370, -0.555760906169484480, -0.555719338365953330, +-0.555677769173123840, -0.555636198591099920, -0.555594626619985490, -0.555553053259883800, -0.555511478510900100, -0.555469902373137870, -0.555428324846700790, -0.555386745931692900, +-0.555345165628218230, -0.555303583936380570, -0.555262000856283190, -0.555220416388031550, -0.555178830531728900, -0.555137243287479150, -0.555095654655386350, -0.555054064635554400, +-0.555012473228087220, -0.554970880433088950, -0.554929286250663400, -0.554887690680913930, -0.554846093723946000, -0.554804495379862760, -0.554762895648768350, -0.554721294530766680, +-0.554679692025961790, -0.554638088134456810, -0.554596482856357540, -0.554554876191766910, -0.554513268140789160, -0.554471658703528210, -0.554430047880088210, -0.554388435670572940, +-0.554346822075086680, -0.554305207093733320, -0.554263590726616240, -0.554221972973840900, -0.554180353835510680, -0.554138733311729580, -0.554097111402601540, -0.554055488108230800, +-0.554013863428721390, -0.553972237364176450, -0.553930609914701780, -0.553888981080400520, -0.553847350861376820, -0.553805719257734700, -0.553764086269578290, -0.553722451897011750, +-0.553680816140138980, -0.553639178999063450, -0.553597540473890760, -0.553555900564724260, -0.553514259271667860, -0.553472616594825940, -0.553430972534302400, -0.553389327090201500, +-0.553347680262626480, -0.553306032051683050, -0.553264382457474560, -0.553222731480105030, -0.553181079119678730, -0.553139425376299680, -0.553097770250072120, -0.553056113741100090, +-0.553014455849487160, -0.552972796575338710, -0.552931135918758310, -0.552889473879849990, -0.552847810458718110, -0.552806145655466600, -0.552764479470199800, -0.552722811903020970, +-0.552681142954035920, -0.552639472623348000, -0.552597800911061480, -0.552556127817280360, -0.552514453342108910, -0.552472777485651380, -0.552431100248011900, -0.552389421629294610, +-0.552347741629603100, -0.552306060249042940, -0.552264377487717620, -0.552222693345731370, -0.552181007823188460, -0.552139320920192910, -0.552097632636848410, -0.552055942973260550, +-0.552014251929532800, -0.551972559505769400, -0.551930865702074610, -0.551889170518552690, -0.551847473955307870, -0.551805776012444290, -0.551764076690066330, -0.551722375988277450, +-0.551680673907183340, -0.551638970446887480, -0.551597265607494340, -0.551555559389107940, -0.551513851791832650, -0.551472142815772730, -0.551430432461031740, -0.551388720727715280, +-0.551347007615927140, -0.551305293125771480, -0.551263577257352640, -0.551221860010774780, -0.551180141386142240, -0.551138421383559400, -0.551096700003129710, -0.551054977244959110, +-0.551013253109151060, -0.550971527595809810, -0.550929800705039720, -0.550888072436945150, -0.550846342791630470, -0.550804611769199150, -0.550762879369756990, -0.550721145593407680, +-0.550679410440255590, -0.550637673910404860, -0.550595936003959950, -0.550554196721025240, -0.550512456061704960, -0.550470714026102930, -0.550428970614324720, -0.550387225826474150, +-0.550345479662655570, -0.550303732122973230, -0.550261983207531610, -0.550220232916434960, -0.550178481249786970, -0.550136728207693660, -0.550094973790258400, -0.550053217997585660, +-0.550011460829780030, -0.549969702286945640, -0.549927942369187070, -0.549886181076608580, -0.549844418409314640, -0.549802654367408940, -0.549760888950997400, -0.549719122160183590, +-0.549677353995071890, -0.549635584455766880, -0.549593813542372910, -0.549552041254993680, -0.549510267593735110, -0.549468492558700780, -0.549426716149995280, -0.549384938367722950, +-0.549343159211988400, -0.549301378682895750, -0.549259596780549810, -0.549217813505054830, -0.549176028856514620, -0.549134242835034980, -0.549092455440719830, -0.549050666673673420, +-0.549008876534000430, -0.548967085021805250, -0.548925292137192320, -0.548883497880265470, -0.548841702251130600, -0.548799905249891530, -0.548758106876652610, -0.548716307131518420, +-0.548674506014593550, -0.548632703525982370, -0.548590899665789330, -0.548549094434118480, -0.548507287831075500, -0.548465479856764300, -0.548423670511289480, -0.548381859794755400, +-0.548340047707266740, -0.548298234248927980, -0.548256419419842820, -0.548214603220117390, -0.548172785649855500, -0.548130966709161620, -0.548089146398140210, -0.548047324716896100, +-0.548005501665533520, -0.547963677244157290, -0.547921851452871090, -0.547880024291781060, -0.547838195760990910, -0.547796365860605320, -0.547754534590728760, -0.547712701951465930, +-0.547670867942921300, -0.547629032565198680, -0.547587195818404320, -0.547545357702642010, -0.547503518218016240, -0.547461677364631690, -0.547419835142592960, -0.547377991552004620, +-0.547336146592971250, -0.547294300265597560, -0.547252452569987450, -0.547210603506246840, -0.547168753074479760, -0.547126901274790800, -0.547085048107284640, -0.547043193572065770, +-0.547001337669238200, -0.546959480398908070, -0.546917621761179200, -0.546875761756156260, -0.546833900383943970, -0.546792037644646900, -0.546750173538369740, -0.546708308065217200, +-0.546666441225293840, -0.546624573018703600, -0.546582703445552710, -0.546540832505945100, -0.546498960199985340, -0.546457086527778250, -0.546415211489428290, -0.546373335085040490, +-0.546331457314718550, -0.546289578178568600, -0.546247697676694790, -0.546205815809201800, -0.546163932576194220, -0.546122047977776750, -0.546080162014054180, -0.546038274685131330, +-0.545996385991111890, -0.545954495932102320, -0.545912604508206440, -0.545870711719529170, -0.545828817566174960, -0.545786922048248860, -0.545745025165855320, -0.545703126919098610, +-0.545661227308084750, -0.545619326332917760, -0.545577423993702570, -0.545535520290543750, -0.545493615223546220, -0.545451708792814570, -0.545409800998453600, -0.545367891840567440, +-0.545325981319262350, -0.545284069434642250, -0.545242156186811930, -0.545200241575876320, -0.545158325601940110, -0.545116408265107990, -0.545074489565484210, -0.545032569503174800, +-0.544990648078284120, -0.544948725290916760, -0.544906801141177620, -0.544864875629171410, -0.544822948755003030, -0.544781020518777300, -0.544739090920599020, -0.544697159960572220, +-0.544655227638803360, -0.544613293955396370, -0.544571358910456160, -0.544529422504087530, -0.544487484736395410, -0.544445545607483710, -0.544403605117459000, -0.544361663266425210, +-0.544319720054487370, -0.544277775481750160, -0.544235829548318510, -0.544193882254297210, -0.544151933599791300, -0.544109983584905480, -0.544068032209744090, -0.544026079474413280, +-0.543984125379017300, -0.543942169923660960, -0.543900213108449160, -0.543858254933486940, -0.543816295398878990, -0.543774334504729670, -0.543732372251145120, -0.543690408638229710, +-0.543648443666088330, -0.543606477334825700, -0.543564509644546940, -0.543522540595356980, -0.543480570187360620, -0.543438598420662110, -0.543396625295367810, -0.543354650811581960, +-0.543312674969409490, -0.543270697768955310, -0.543228719210324450, -0.543186739293621710, -0.543144758018951460, -0.543102775386419930, -0.543060791396131610, -0.543018806048191190, +-0.542976819342703810, -0.542934831279774380, -0.542892841859507920, -0.542850851082009370, -0.542808858947382840, -0.542766865455734940, -0.542724870607169900, -0.542682874401792640, +-0.542640876839708300, -0.542598877921021680, -0.542556877645837930, -0.542514876014261180, -0.542472873026398020, -0.542430868682352570, -0.542388862982230100, -0.542346855926135410, +-0.542304847514173630, -0.542262837746449570, -0.542220826623068590, -0.542178814144135490, -0.542136800309754640, -0.542094785120032400, -0.542052768575073340, -0.542010750674982280, +-0.541968731419864460, -0.541926710809824690, -0.541884688844967430, -0.541842665525399170, -0.541800640851224370, -0.541758614822547830, -0.541716587439474820, -0.541674558702110340, +-0.541632528610559440, -0.541590497164927130, -0.541548464365318670, -0.541506430211838310, -0.541464394704592620, -0.541422357843685980, -0.541380319629223390, -0.541338280061310020, +-0.541296239140050980, -0.541254196865551320, -0.541212153237915380, -0.541170108257249870, -0.541128061923659030, -0.541086014237248000, -0.541043965198122030, -0.541001914806386150, +-0.540959863062145390, -0.540917809965504980, -0.540875755516569410, -0.540833699715445150, -0.540791642562236550, -0.540749584057048980, -0.540707524199987350, -0.540665462991156920, +-0.540623400430662930, -0.540581336518609620, -0.540539271255103700, -0.540497204640249640, -0.540455136674152570, -0.540413067356917630, -0.540370996688649960, -0.540328924669454920, +-0.540286851299437540, -0.540244776578702180, -0.540202700507355750, -0.540160623085502500, -0.540118544313247790, -0.540076464190696660, -0.540034382717954340, -0.539992299895126090, +-0.539950215722316270, -0.539908130199631800, -0.539866043327176910, -0.539823955105056870, -0.539781865533377040, -0.539739774612242540, -0.539697682341758520, -0.539655588722030340, +-0.539613493753163250, -0.539571397435261610, -0.539529299768432220, -0.539487200752779560, -0.539445100388408980, -0.539402998675425630, -0.539360895613934740, -0.539318791204040910, +-0.539276685445850830, -0.539234578339468970, -0.539192469885000800, -0.539150360082551350, -0.539108248932226090, -0.539066136434130040, -0.539024022588368790, -0.538981907395047480, +-0.538939790854270570, -0.538897672966144990, -0.538855553730775320, -0.538813433148266570, -0.538771311218724350, -0.538729187942253880, -0.538687063318959660, -0.538644937348948470, +-0.538602810032325020, -0.538560681369194550, -0.538518551359662310, -0.538476420003833780, -0.538434287301814090, -0.538392153253708710, -0.538350017859623000, -0.538307881119661440, +-0.538265743033931040, -0.538223603602536180, -0.538181462825582320, -0.538139320703174830, -0.538097177235418940, -0.538055032422420250, -0.538012886264283120, -0.537970738761114560, +-0.537928589913019170, -0.537886439720102310, -0.537844288182469430, -0.537802135300225690, -0.537759981073476670, -0.537717825502327720, -0.537675668586883430, -0.537633510327250710, +-0.537591350723534260, -0.537549189775839320, -0.537507027484271480, -0.537464863848936100, -0.537422698869938540, -0.537380532547383490, -0.537338364881377870, -0.537296195872026260, +-0.537254025519434240, -0.537211853823707170, -0.537169680784950420, -0.537127506403269450, -0.537085330678769730, -0.537043153611556630, -0.537000975201735060, -0.536958795449411610, +-0.536916614354691290, -0.536874431917679470, -0.536832248138481520, -0.536790063017202890, -0.536747876553948400, -0.536705688748824960, -0.536663499601937270, -0.536621309113390900, +-0.536579117283291220, -0.536536924111743810, -0.536494729598854030, -0.536452533744727460, -0.536410336549469460, -0.536368138013184950, -0.536325938135980840, -0.536283736917961830, +-0.536241534359233610, -0.536199330459901420, -0.536157125220070970, -0.536114918639846950, -0.536072710719336380, -0.536030501458643950, -0.535988290857875360, -0.535946078917136080, +-0.535903865636531470, -0.535861651016167340, -0.535819435056149040, -0.535777217756582050, -0.535734999117571390, -0.535692779139223970, -0.535650557821644500, -0.535608335164938780, +-0.535566111169212160, -0.535523885834570220, -0.535481659161118560, -0.535439431148962090, -0.535397201798207710, -0.535354971108960350, -0.535312739081325590, -0.535270505715408910, +-0.535228271011316090, -0.535186034969152510, -0.535143797589023860, -0.535101558871034940, -0.535059318815292890, -0.535017077421902520, -0.534974834690969510, -0.534932590622599350, +-0.534890345216897820, -0.534848098473970300, -0.534805850393921920, -0.534763600976859490, -0.534721350222888250, -0.534679098132113450, -0.534636844704641010, -0.534594589940576510, +-0.534552333840025430, -0.534510076403093560, -0.534467817629886490, -0.534425557520509130, -0.534383296075068630, -0.534341033293669890, -0.534298769176418500, -0.534256503723420260, +-0.534214236934780760, -0.534171968810604910, -0.534129699350999960, -0.534087428556070610, -0.534045156425922760, -0.534002882960662120, -0.533960608160394150, -0.533918332025224650, +-0.533876054555259440, -0.533833775750603980, -0.533791495611363410, -0.533749214137644760, -0.533706931329553160, -0.533664647187194200, -0.533622361710673570, -0.533580074900097070, +-0.533537786755569620, -0.533495497277198470, -0.533453206465088650, -0.533410914319345730, -0.533368620840075520, -0.533326326027383830, -0.533284029881376240, -0.533241732402158660, +-0.533199433589836680, -0.533157133444515320, -0.533114831966301940, -0.533072529155301570, -0.533030225011619780, -0.532987919535362400, -0.532945612726635320, -0.532903304585544140, +-0.532860995112193980, -0.532818684306691990, -0.532776372169143420, -0.532734058699653850, -0.532691743898329070, -0.532649427765275020, -0.532607110300597380, -0.532564791504402060, +-0.532522471376793870, -0.532480149917880290, -0.532437827127766330, -0.532395503006557910, -0.532353177554360620, -0.532310850771280370, -0.532268522657423080, -0.532226193212893660, +-0.532183862437799580, -0.532141530332245760, -0.532099196896338110, -0.532056862130182550, -0.532014526033884770, -0.531972188607550690, -0.531929849851286220, -0.531887509765197050, +-0.531845168349388330, -0.531802825603967520, -0.531760481529039540, -0.531718136124710420, -0.531675789391085950, -0.531633441328272060, -0.531591091936373770, -0.531548741215498440, +-0.531506389165751330, -0.531464035787238220, -0.531421681080065040, -0.531379325044337710, -0.531336967680162030, -0.531294608987643910, -0.531252248966889270, -0.531209887618003250, +-0.531167524941093210, -0.531125160936264380, -0.531082795603622700, -0.531040428943274080, -0.530998060955324310, -0.530955691639878660, -0.530913320997044470, -0.530870949026927110, +-0.530828575729632270, -0.530786201105265980, -0.530743825153934260, -0.530701447875742920, -0.530659069270797980, -0.530616689339205360, -0.530574308081070310, -0.530531925496500190, +-0.530489541585600240, -0.530447156348476500, -0.530404769785234880, -0.530362381895981280, -0.530319992680821750, -0.530277602139861410, -0.530235210273207970, -0.530192817080966330, +-0.530150422563242740, -0.530108026720143120, -0.530065629551773390, -0.530023231058239670, -0.529980831239647790, -0.529938430096103090, -0.529896027627713040, -0.529853623834583010, +-0.529811218716818800, -0.529768812274526660, -0.529726404507812390, -0.529683995416782130, -0.529641585001541130, -0.529599173262196960, -0.529556760198854890, -0.529514345811620820, +-0.529471930100601010, -0.529429513065901250, -0.529387094707627790, -0.529344675025886560, -0.529302254020782900, -0.529259831692424300, -0.529217408040916220, -0.529174983066364570, +-0.529132556768875490, -0.529090129148554910, -0.529047700205509170, -0.529005269939843310, -0.528962838351665020, -0.528920405441079770, -0.528877971208193350, -0.528835535653112140, +-0.528793098775941940, -0.528750660576789100, -0.528708221055759650, -0.528665780212959510, -0.528623338048494260, -0.528580894562471370, -0.528538449754996310, -0.528496003626175100, +-0.528453556176113780, -0.528411107404918700, -0.528368657312695110, -0.528326205899550480, -0.528283753165590510, -0.528241299110920990, -0.528198843735648400, -0.528156387039878550, +-0.528113929023717790, -0.528071469687272250, -0.528029009030647980, -0.527986547053950430, -0.527944083757287300, -0.527901619140763940, -0.527859153204486510, -0.527816685948561240, +-0.527774217373094270, -0.527731747478191740, -0.527689276263959120, -0.527646803730503990, -0.527604329877931930, -0.527561854706348980, -0.527519378215861370, -0.527476900406575360, +-0.527434421278597080, -0.527391940832032780, -0.527349459066987820, -0.527306975983570010, -0.527264491581884820, -0.527222005862038270, -0.527179518824136830, -0.527137030468286530, +-0.527094540794593610, -0.527052049803163670, -0.527009557494104270, -0.526967063867521120, -0.526924568923520130, -0.526882072662207880, -0.526839575083690390, -0.526797076188073920, +-0.526754575975464820, -0.526712074445968460, -0.526669571599692740, -0.526627067436743030, -0.526584561957225690, -0.526542055161246860, -0.526499547048913000, -0.526457037620330250, +-0.526414526875604080, -0.526372014814842410, -0.526329501438150720, -0.526286986745635230, -0.526244470737402330, -0.526201953413558240, -0.526159434774209230, -0.526116914819461660, +-0.526074393549421760, -0.526031870964195240, -0.525989347063889670, -0.525946821848610750, -0.525904295318464830, -0.525861767473558170, -0.525819238313997020, -0.525776707839887060, +-0.525734176051336100, -0.525691642948449720, -0.525649108531334170, -0.525606572800095930, -0.525564035754841230, -0.525521497395676440, -0.525478957722707810, -0.525436416736041910, +-0.525393874435784110, -0.525351330822042440, -0.525308785894922470, -0.525266239654530560, -0.525223692100972970, -0.525181143234356160, -0.525138593054786500, -0.525096041562369660, +-0.525053488757213360, -0.525010934639423500, -0.524968379209106110, -0.524925822466367880, -0.524883264411315160, -0.524840705044054110, -0.524798144364691410, -0.524755582373332640, +-0.524713019070085610, -0.524670454455056000, -0.524627888528350290, -0.524585321290074850, -0.524542752740336130, -0.524500182879240500, -0.524457611706893640, -0.524415039223403490, +-0.524372465428875830, -0.524329890323416930, -0.524287313907133350, -0.524244736180131450, -0.524202157142517720, -0.524159576794398620, -0.524116995135879840, -0.524074412167069290, +-0.524031827888072680, -0.523989242298996570, -0.523946655399947340, -0.523904067191031440, -0.523861477672355360, -0.523818886844024890, -0.523776294706147840, -0.523733701258830120, +-0.523691106502178210, -0.523648510436298450, -0.523605913061297560, -0.523563314377281760, -0.523520714384357650, -0.523478113082631810, -0.523435510472209930, -0.523392906553200030, +-0.523350301325707810, -0.523307694789839850, -0.523265086945702730, -0.523222477793402810, -0.523179867333046000, -0.523137255564740220, -0.523094642488591390, -0.523052028104705860, +-0.523009412413190320, -0.522966795414151250, -0.522924177107695230, -0.522881557493928620, -0.522838936572958210, -0.522796314344889710, -0.522753690809831140, -0.522711065967888410, +-0.522668439819168000, -0.522625812363776480, -0.522583183601820430, -0.522540553533406340, -0.522497922158640220, -0.522455289477629980, -0.522412655490481550, -0.522370020197301500, +-0.522327383598196420, -0.522284745693272770, -0.522242106482637360, -0.522199465966396660, -0.522156824144656470, -0.522114181017525050, -0.522071536585108190, -0.522028890847512470, +-0.521986243804844490, -0.521943595457210920, -0.521900945804718350, -0.521858294847472700, -0.521815642585582110, -0.521772989019152370, -0.521730334148290060, -0.521687677973102000, +-0.521645020493694770, -0.521602361710174930, -0.521559701622649200, -0.521517040231223470, -0.521474377536005900, -0.521431713537102380, -0.521389048234619620, -0.521346381628664200, +-0.521303713719342810, -0.521261044506762140, -0.521218373991028110, -0.521175702172248960, -0.521133029050530490, -0.521090354625979410, -0.521047678898702520, -0.521005001868806380, +-0.520962323536397820, -0.520919643901583410, -0.520876962964469840, -0.520834280725163130, -0.520791597183771550, -0.520748912340400880, -0.520706226195157940, -0.520663538748149520, +-0.520620849999482100, -0.520578159949261930, -0.520535468597597030, -0.520492775944593530, -0.520450081990358140, -0.520407386734997420, -0.520364690178618310, -0.520321992321327480, +-0.520279293163231630, -0.520236592704437560, -0.520193890945051200, -0.520151187885180890, -0.520108483524932660, -0.520065777864413210, -0.520023070903729350, -0.519980362642987750, +-0.519937653082295230, -0.519894942221757810, -0.519852230061483840, -0.519809516601579370, -0.519766801842150960, -0.519724085783305640, -0.519681368425150110, -0.519638649767791060, +-0.519595929811335510, -0.519553208555889270, -0.519510486001560910, -0.519467762148456250, -0.519425036996682080, -0.519382310546345430, -0.519339582797552990, -0.519296853750411680, +-0.519254123405027300, -0.519211391761508540, -0.519168658819961220, -0.519125924580492230, -0.519083189043208490, -0.519040452208216710, -0.518997714075623780, -0.518954974645536640, +-0.518912233918061290, -0.518869491893306110, -0.518826748571377230, -0.518784003952381450, -0.518741258036425680, -0.518698510823616730, -0.518655762314061520, -0.518613012507866070, +-0.518570261405138950, -0.518527509005986100, -0.518484755310514520, -0.518442000318831140, -0.518399244031042650, -0.518356486447256070, -0.518313727567578320, -0.518270967392116200, +-0.518228205920975850, -0.518185443154265850, -0.518142679092092220, -0.518099913734561880, -0.518057147081781740, -0.518014379133858730, -0.517971609890898970, -0.517928839353011040, +-0.517886067520300970, -0.517843294392875690, -0.517800519970842200, -0.517757744254307430, -0.517714967243378290, -0.517672188938161800, -0.517629409338764780, -0.517586628445293460, +-0.517543846257856320, -0.517501062776559610, -0.517458278001510230, -0.517415491932815110, -0.517372704570581380, -0.517329915914915730, -0.517287125965924630, -0.517244334723716450, +-0.517201542188397420, -0.517158748360074580, -0.517115953238854840, -0.517073156824845230, -0.517030359118152650, -0.516987560118884250, -0.516944759827146160, -0.516901958243046970, +-0.516859155366692910, -0.516816351198190920, -0.516773545737648000, -0.516730738985171300, -0.516687930940867620, -0.516645121604843550, -0.516602310977207320, -0.516559499058065310, +-0.516516685847524530, -0.516473871345692110, -0.516431055552674990, -0.516388238468580170, -0.516345420093514810, -0.516302600427585130, -0.516259779470899740, -0.516216957223564870, +-0.516174133685687650, -0.516131308857375020, -0.516088482738734200, -0.516045655329872120, -0.516002826630895140, -0.515959996641911830, -0.515917165363028560, -0.515874332794352350, +-0.515831498935990340, -0.515788663788049660, -0.515745827350637230, -0.515702989623860190, -0.515660150607825770, -0.515617310302640130, -0.515574468708412060, -0.515531625825247810, +-0.515488781653254400, -0.515445936192539090, -0.515403089443209010, -0.515360241405370290, -0.515317392079131850, -0.515274541464599940, -0.515231689561881590, -0.515188836371084040, +-0.515145981892314530, -0.515103126125679880, -0.515060269071287550, -0.515017410729244450, -0.514974551099657060, -0.514931690182634180, -0.514888827978281950, -0.514845964486707720, +-0.514803099708018520, -0.514760233642321600, -0.514717366289724090, -0.514674497650332460, -0.514631627724255300, -0.514588756511599080, -0.514545884012470920, -0.514503010226978090, +-0.514460135155227700, -0.514417258797327030, -0.514374381153383190, -0.514331502223502660, -0.514288622007794130, -0.514245740506364070, -0.514202857719319620, -0.514159973646767910, +-0.514117088288816420, -0.514074201645572160, -0.514031313717141720, -0.513988424503633580, -0.513945534005154530, -0.513902642221811590, -0.513859749153712020, -0.513816854800963170, +-0.513773959163672080, -0.513731062241946090, -0.513688164035891790, -0.513645264545617760, -0.513602363771230590, -0.513559461712837510, -0.513516558370545770, -0.513473653744462630, +-0.513430747834695330, -0.513387840641350460, -0.513344932164536690, -0.513302022404360620, -0.513259111360929500, -0.513216199034350670, -0.513173285424731280, -0.513130370532178580, +-0.513087454356800140, -0.513044536898702890, -0.513001618157993610, -0.512958698134781120, -0.512915776829171780, -0.512872854241273050, -0.512829930371192180, -0.512787005219036420, +-0.512744078784912460, -0.512701151068929000, -0.512658222071192720, -0.512615291791810870, -0.512572360230890810, -0.512529427388539790, -0.512486493264865280, -0.512443557859974530, +-0.512400621173974890, -0.512357683206972840, -0.512314743959077390, -0.512271803430395130, -0.512228861621033320, -0.512185918531099290, -0.512142974160700650, -0.512100028509943630, +-0.512057081578937370, -0.512014133367788450, -0.511971183876604120, -0.511928233105491850, -0.511885281054558990, -0.511842327723913030, -0.511799373113661080, -0.511756417223910850, +-0.511713460054768700, -0.511670501606343750, -0.511627541878742490, -0.511584580872072480, -0.511541618586440870, -0.511498655021955240, -0.511455690178723050, -0.511412724056850900, +-0.511369756656447570, -0.511326787977619880, -0.511283818020475290, -0.511240846785121160, -0.511197874271664850, -0.511154900480213840, -0.511111925410875690, -0.511068949063756880, +-0.511025971438966440, -0.510982992536611170, -0.510940012356798310, -0.510897030899635450, -0.510854048165230060, -0.510811064153689490, -0.510768078865120550, -0.510725092299632140, +-0.510682104457330980, -0.510639115338324620, -0.510596124942720440, -0.510553133270625900, -0.510510140322148590, -0.510467146097395850, -0.510424150596475390, -0.510381153819493670, +-0.510338155766559830, -0.510295156437780670, -0.510252155833263550, -0.510209153953116170, -0.510166150797445760, -0.510123146366359250, -0.510080140659965650, -0.510037133678371780, +-0.509994125421684990, -0.509951115890012850, -0.509908105083462960, -0.509865093002142780, -0.509822079646159890, -0.509779065015621870, -0.509736049110635300, -0.509693031931309440, +-0.509650013477751070, -0.509606993750067570, -0.509563972748366620, -0.509520950472755700, -0.509477926923341710, -0.509434902100233570, -0.509391876003538190, -0.509348848633363160, +-0.509305819989816060, -0.509262790073004350, -0.509219758883035610, -0.509176726420017540, -0.509133692684057730, -0.509090657675262850, -0.509047621393742040, -0.509004583839602230, +-0.508961545012950990, -0.508918504913895790, -0.508875463542544430, -0.508832420899004380, -0.508789376983382450, -0.508746331795787880, -0.508703285336327580, -0.508660237605108920, +-0.508617188602239700, -0.508574138327827610, -0.508531086781980110, -0.508488033964804800, -0.508444979876408800, -0.508401924516901030, -0.508358867886388400, -0.508315809984978720, +-0.508272750812779450, -0.508229690369898290, -0.508186628656442930, -0.508143565672520280, -0.508100501418239370, -0.508057435893707330, -0.508014369099031530, -0.507971301034319980, +-0.507928231699680040, -0.507885161095219640, -0.507842089221046340, -0.507799016077267740, -0.507755941663990850, -0.507712865981324920, -0.507669789029376760, -0.507626710808254170, +-0.507583631318064720, -0.507540550558916340, -0.507497468530915710, -0.507454385234172190, -0.507411300668792700, -0.507368214834885030, -0.507325127732556780, -0.507282039361915630, +-0.507238949723069490, -0.507195858816125940, -0.507152766641192800, -0.507109673198376850, -0.507066578487787580, -0.507023482509531890, -0.506980385263717360, -0.506937286750452020, +-0.506894186969843340, -0.506851085921998460, -0.506807983607026720, -0.506764880025034950, -0.506721775176130930, -0.506678669060422580, -0.506635561678017490, -0.506592453029023560, +-0.506549343113548380, -0.506506231931699970, -0.506463119483585130, -0.506420005769313230, -0.506376890788991400, -0.506333774542727320, -0.506290657030628810, -0.506247538252803660, +-0.506204418209359570, -0.506161296900403790, -0.506118174326045440, -0.506075050486391790, -0.506031925381550400, -0.505988799011629190, -0.505945671376736070, -0.505902542476978630, +-0.505859412312465010, -0.505816280883301990, -0.505773148189599060, -0.505730014231463240, -0.505686879009002330, -0.505643742522324360, -0.505600604771536900, -0.505557465756748090, +-0.505514325478064740, -0.505471183935596310, -0.505428041129449950, -0.505384897059733550, -0.505341751726554820, -0.505298605130021780, -0.505255457270242130, -0.505212308147323990, +-0.505169157761374170, -0.505126006112502360, -0.505082853200815360, -0.505039699026421320, -0.504996543589428140, -0.504953386889943400, -0.504910228928075360, -0.504867069703930920, +-0.504823909217619550, -0.504780747469248390, -0.504737584458925360, -0.504694420186758470, -0.504651254652855430, -0.504608087857324250, -0.504564919800272960, -0.504521750481809250, +-0.504478579902040480, -0.504435408061076010, -0.504392234959022970, -0.504349060595989380, -0.504305884972083060, -0.504262708087412140, -0.504219529942083630, -0.504176350536207130, +-0.504133169869889650, -0.504089987943239340, -0.504046804756363990, -0.504003620309371620, -0.503960434602370280, -0.503917247635467750, -0.503874059408772170, -0.503830869922390680, +-0.503787679176432750, -0.503744487171005730, -0.503701293906217320, -0.503658099382175760, -0.503614903598988970, -0.503571706556764860, -0.503528508255610800, -0.503485308695636240, +-0.503442107876948320, -0.503398905799655180, -0.503355702463864740, -0.503312497869685130, -0.503269292017224150, -0.503226084906590040, -0.503182876537889840, -0.503139666911233350, +-0.503096456026727700, -0.503053243884480810, -0.503010030484600800, -0.502966815827195820, -0.502923599912373680, -0.502880382740241830, -0.502837164310909860, -0.502793944624484900, +-0.502750723681075100, -0.502707501480788470, -0.502664278023733150, -0.502621053310017050, -0.502577827339748320, -0.502534600113034300, -0.502491371629984580, -0.502448141890706410, +-0.502404910895307810, -0.502361678643897020, -0.502318445136581970, -0.502275210373470890, -0.502231974354670930, -0.502188737080291770, -0.502145498550440880, -0.502102258765226180, +-0.502059017724755920, -0.502015775429138000, -0.501972531878480680, -0.501929287072892080, -0.501886041012480240, -0.501842793697352410, -0.501799545127618480, -0.501756295303385720, +-0.501713044224762150, -0.501669791891856010, -0.501626538304775330, -0.501583283463627570, -0.501540027368522430, -0.501496770019567160, -0.501453511416870000, -0.501410251560539090, +-0.501366990450682450, -0.501323728087408440, -0.501280464470824970, -0.501237199601040410, -0.501193933478162100, -0.501150666102299750, -0.501107397473560700, -0.501064127592053210, +-0.501020856457885300, -0.500977584071165330, -0.500934310432001430, -0.500891035540500850, -0.500847759396773620, -0.500804482000926860, -0.500761203353068950, -0.500717923453308010, +-0.500674642301752290, -0.500631359898509930, -0.500588076243689170, -0.500544791337397490, -0.500501505179744570, -0.500458217770837880, -0.500414929110785670, -0.500371639199696070, +-0.500328348037677450, -0.500285055624837940, -0.500241761961285000, -0.500198467047128450, -0.500155170882475740, -0.500111873467435130, -0.500068574802114750, -0.500025274886623070, +-0.499981973721068060, -0.499938671305558190, -0.499895367640200870, -0.499852062725105850, -0.499808756560380710, -0.499765449146133690, -0.499722140482473040, -0.499678830569507020, +-0.499635519407343960, -0.499592206996091300, -0.499548893335858890, -0.499505578426754250, -0.499462262268885680, -0.499418944862361490, -0.499375626207289870, -0.499332306303779230, +-0.499288985151937760, -0.499245662751873880, -0.499202339103695100, -0.499159014207511190, -0.499115688063429760, -0.499072360671559130, -0.499029032032007550, -0.498985702144883470, +-0.498942371010294260, -0.498899038628350000, -0.498855704999158100, -0.498812370122826920, -0.498769033999464820, -0.498725696629180150, -0.498682358012081220, -0.498639018148276380, +-0.498595677037874050, -0.498552334680981700, -0.498508991077709300, -0.498465646228164470, -0.498422300132455480, -0.498378952790690780, -0.498335604202978620, -0.498292254369427530, +-0.498248903290144980, -0.498205550965240940, -0.498162197394823090, -0.498118842578999690, -0.498075486517879200, -0.498032129211569970, -0.497988770660180440, -0.497945410863818990, +-0.497902049822593230, -0.497858687536613110, -0.497815324005986270, -0.497771959230821180, -0.497728593211226090, -0.497685225947309570, -0.497641857439179990, -0.497598487686945030, +-0.497555116690714560, -0.497511744450596320, -0.497468370966698710, -0.497424996239130220, -0.497381620267999200, -0.497338243053414120, -0.497294864595483440, -0.497251484894314870, +-0.497208103950018300, -0.497164721762701490, -0.497121338332472910, -0.497077953659440910, -0.497034567743714070, -0.496991180585400820, -0.496947792184608830, -0.496904402541448190, +-0.496861011656026470, -0.496817619528452270, -0.496774226158833990, -0.496730831547280150, -0.496687435693899230, -0.496644038598799690, -0.496600640262090110, -0.496557240683878130, +-0.496513839864273830, -0.496470437803384900, -0.496427034501319920, -0.496383629958187360, -0.496340224174095680, -0.496296817149152690, -0.496253408883468420, -0.496209999377150660, +-0.496166588630307880, -0.496123176643048610, -0.496079763415481430, -0.496036348947714810, -0.495992933239857330, -0.495949516292017560, -0.495906098104303140, -0.495862678676824320, +-0.495819258009688790, -0.495775836103005070, -0.495732412956881810, -0.495688988571427510, -0.495645562946750720, -0.495602136082959280, -0.495558707980163270, -0.495515278638470450, +-0.495471848057989490, -0.495428416238828830, -0.495384983181097190, -0.495341548884903120, -0.495298113350355120, -0.495254676577561060, -0.495211238566631130, -0.495167799317673070, +-0.495124358830795530, -0.495080917106107080, -0.495037474143716350, -0.494994029943731930, -0.494950584506261670, -0.494907137831415710, -0.494863689919301910, -0.494820240770028840, +-0.494776790383705200, -0.494733338760439620, -0.494689885900340690, -0.494646431803517030, -0.494602976470076510, -0.494559519900129310, -0.494516062093783290, -0.494472603051147150, +-0.494429142772329520, -0.494385681257439040, -0.494342218506584330, -0.494298754519873260, -0.494255289297416130, -0.494211822839320800, -0.494168355145695850, -0.494124886216650070, +-0.494081416052292060, -0.494037944652730490, -0.493994472018074060, -0.493950998148431460, -0.493907523043910560, -0.493864046704621640, -0.493820569130672630, -0.493777090322172210, +-0.493733610279229020, -0.493690129001951810, -0.493646646490448540, -0.493603162744829400, -0.493559677765202380, -0.493516191551676140, -0.493472704104359390, -0.493429215423360930, +-0.493385725508789450, -0.493342234360753580, -0.493298741979362190, -0.493255248364723120, -0.493211753516946740, -0.493168257436141010, -0.493124760122414570, -0.493081261575876280, +-0.493037761796634780, -0.492994260784798910, -0.492950758540476650, -0.492907255063778190, -0.492863750354811670, -0.492820244413685720, -0.492776737240509190, -0.492733228835390780, +-0.492689719198439350, -0.492646208329763580, -0.492602696229471500, -0.492559182897673530, -0.492515668334477520, -0.492472152539992380, -0.492428635514326860, -0.492385117257589770, +-0.492341597769889840, -0.492298077051335160, -0.492254555102036080, -0.492211031922100580, -0.492167507511637570, -0.492123981870755730, -0.492080454999563930, -0.492036926898171020, +-0.491993397566685750, -0.491949867005216260, -0.491906335213872890, -0.491862802192763630, -0.491819267941997370, -0.491775732461682990, -0.491732195751929220, -0.491688657812844990, +-0.491645118644538360, -0.491601578247119700, -0.491558036620697080, -0.491514493765379370, -0.491470949681275420, -0.491427404368494140, -0.491383857827144280, -0.491340310057334810, +-0.491296761059174580, -0.491253210832771630, -0.491209659378236460, -0.491166106695677170, -0.491122552785202560, -0.491078997646921590, -0.491035441280943120, -0.490991883687375290, +-0.490948324866328500, -0.490904764817910900, -0.490861203542231390, -0.490817641039398900, -0.490774077309522270, -0.490730512352710480, -0.490686946169072380, -0.490643378758716940, +-0.490599810121752240, -0.490556240258288870, -0.490512669168434830, -0.490469096852299110, -0.490425523309990670, -0.490381948541618430, -0.490338372547291350, -0.490294795327117510, +-0.490251216881207490, -0.490207637209669420, -0.490164056312612230, -0.490120474190144930, -0.490076890842376430, -0.490033306269415710, -0.489989720471371740, -0.489946133448352640, +-0.489902545200469050, -0.489858955727829060, -0.489815365030541680, -0.489771773108715890, -0.489728179962460650, -0.489684585591884990, -0.489640989997097100, -0.489597393178207500, +-0.489553795135324380, -0.489510195868556820, -0.489466595378013740, -0.489422993663804210, -0.489379390726037140, -0.489335786564821630, -0.489292181180265850, -0.489248574572480440, +-0.489204966741573540, -0.489161357687654290, -0.489117747410831580, -0.489074135911214570, -0.489030523188912160, -0.488986909244032710, -0.488943294076686740, -0.488899677686982500, +-0.488856060075029130, -0.488812441240935590, -0.488768821184810910, -0.488725199906764220, -0.488681577406904490, -0.488637953685340850, -0.488594328742181560, -0.488550702577537190, +-0.488507075191516090, -0.488463446584227300, -0.488419816755779890, -0.488376185706282940, -0.488332553435844750, -0.488288919944575960, -0.488245285232584810, -0.488201649299980560, +-0.488158012146872100, -0.488114373773368640, -0.488070734179579250, -0.488027093365613010, -0.487983451331579000, -0.487939808077585640, -0.487896163603743550, -0.487852517910160990, +-0.487808870996947200, -0.487765222864211200, -0.487721573512062130, -0.487677922940608350, -0.487634271149960550, -0.487590618140227080, -0.487546963911517080, -0.487503308463939630, +-0.487459651797603980, -0.487415993912619140, -0.487372334809094310, -0.487328674487138680, -0.487285012946860550, -0.487241350188370670, -0.487197686211777450, -0.487154021017189960, +-0.487110354604717470, -0.487066686974469090, -0.487023018126553960, -0.486979348061080510, -0.486935676778159520, -0.486892004277899300, -0.486848330560409050, -0.486804655625798000, +-0.486760979474175290, -0.486717302105650120, -0.486673623520331780, -0.486629943718328520, -0.486586262699751190, -0.486542580464708220, -0.486498897013308780, -0.486455212345662140, +-0.486411526461877460, -0.486367839362063960, -0.486324151046330030, -0.486280461514786540, -0.486236770767541900, -0.486193078804705360, -0.486149385626386100, -0.486105691232693370, +-0.486061995623736420, -0.486018298799624440, -0.485974600760466780, -0.485930901506371800, -0.485887201037450370, -0.485843499353810880, -0.485799796455562700, -0.485756092342815030, +-0.485712387015677090, -0.485668680474257430, -0.485624972718666840, -0.485581263749013840, -0.485537553565407620, -0.485493842167957550, -0.485450129556772910, -0.485406415731962910, +-0.485362700693636910, -0.485318984441904130, -0.485275266976873070, -0.485231548298654670, -0.485187828407357410, -0.485144107303090540, -0.485100384985963420, -0.485056661456085340, +-0.485012936713564820, -0.484969210758512740, -0.484925483591037650, -0.484881755211248820, -0.484838025619255650, -0.484794294815167390, -0.484750562799093400, -0.484706829571142970, +-0.484663095131425470, -0.484619359480049530, -0.484575622617125890, -0.484531884542763190, -0.484488145257070850, -0.484444404760158100, -0.484400663052134310, -0.484356920133108940, +-0.484313176003190400, -0.484269430662489790, -0.484225684111115550, -0.484181936349177110, -0.484138187376783820, -0.484094437194045050, -0.484050685801070250, -0.484006933197968670, +-0.483963179384849010, -0.483919424361822170, -0.483875668128996740, -0.483831910686482180, -0.483788152034387850, -0.483744392172823110, -0.483700631101897430, -0.483656868821719380, +-0.483613105332399870, -0.483569340634047660, -0.483525574726772100, -0.483481807610682600, -0.483438039285888580, -0.483394269752499440, -0.483350499010624660, -0.483306727060373640, +-0.483262953901854970, -0.483219179535179730, -0.483175403960456550, -0.483131627177794840, -0.483087849187304070, -0.483044069989093660, -0.483000289583272350, -0.482956507969951040, +-0.482912725149238440, -0.482868941121244120, -0.482825155886077380, -0.482781369443847750, -0.482737581794664690, -0.482693792938637730, -0.482650002875876230, -0.482606211606488980, +-0.482562419130586950, -0.482518625448278890, -0.482474830559674270, -0.482431034464882560, -0.482387237164013270, -0.482343438657175160, -0.482299638944479140, -0.482255838026034110, +-0.482212035901949440, -0.482168232572334650, -0.482124428037299320, -0.482080622296952920, -0.482036815351404970, -0.481993007200764990, -0.481949197845141670, -0.481905387284646160, +-0.481861575519387190, -0.481817762549474280, -0.481773948375016910, -0.481730132996124720, -0.481686316412907210, -0.481642498625473090, -0.481598679633933550, -0.481554859438397260, +-0.481511038038973880, -0.481467215435772870, -0.481423391628903800, -0.481379566618476310, -0.481335740404599870, -0.481291912987383270, -0.481248084366937720, -0.481204254543371900, +-0.481160423516795500, -0.481116591287318040, -0.481072757855049050, -0.481028923220098210, -0.480985087382574280, -0.480941250342588390, -0.480897412100249390, -0.480853572655666860, +-0.480809732008950390, -0.480765890160209600, -0.480722047109554070, -0.480678202857093450, -0.480634357402937310, -0.480590510747194500, -0.480546662889976160, -0.480502813831391210, +-0.480458963571549210, -0.480415112110559760, -0.480371259448532590, -0.480327405585576460, -0.480283550521802600, -0.480239694257319880, -0.480195836792237930, -0.480151978126666380, +-0.480108118260714870, -0.480064257194493080, -0.480020394928110610, -0.479976531461677180, -0.479932666795301670, -0.479888800929095250, -0.479844933863166790, -0.479801065597626030, +-0.479757196132582610, -0.479713325468146210, -0.479669453604425700, -0.479625580541532310, -0.479581706279575030, -0.479537830818663410, -0.479493954158907280, -0.479450076300416250, +-0.479406197243300030, -0.479362316987668290, -0.479318435533630790, -0.479274552881296390, -0.479230669030776380, -0.479186783982179730, -0.479142897735616140, -0.479099010291195280, +-0.479055121649026860, -0.479011231809220670, -0.478967340771885630, -0.478923448537133030, -0.478879555105071740, -0.478835660475811660, -0.478791764649462380, -0.478747867626133640, +-0.478703969405935290, -0.478660069988977030, -0.478616169375367770, -0.478572267565218870, -0.478528364558639340, -0.478484460355738880, -0.478440554956627240, -0.478396648361414270, +-0.478352740570209660, -0.478308831583122370, -0.478264921400263830, -0.478221010021743000, -0.478177097447669620, -0.478133183678153490, -0.478089268713304370, -0.478045352553232160, +-0.478001435198046500, -0.477957516647856520, -0.477913596902773520, -0.477869675962906470, -0.477825753828365280, -0.477781830499259710, -0.477737905975699540, -0.477693980257794640, +-0.477650053345653970, -0.477606125239389000, -0.477562195939108650, -0.477518265444922870, -0.477474333756941370, -0.477430400875274110, -0.477386466800030770, -0.477342531531321280, +-0.477298595069254710, -0.477254657413942460, -0.477210718565493520, -0.477166778524017790, -0.477122837289625120, -0.477078894862425330, -0.477034951242528320, -0.476991006430043940, +-0.476947060425081280, -0.476903113227751700, -0.476859164838164370, -0.476815215256429170, -0.476771264482655890, -0.476727312516954440, -0.476683359359434680, -0.476639405010206570, +-0.476595449469379150, -0.476551492737063930, -0.476507534813369940, -0.476463575698407080, -0.476419615392285330, -0.476375653895114550, -0.476331691207004580, -0.476287727328064630, +-0.476243762258406140, -0.476199795998138280, -0.476155828547370870, -0.476111859906213960, -0.476067890074777340, -0.476023919053171040, -0.475979946841504910, -0.475935973439888140, +-0.475891998848432200, -0.475848023067246270, -0.475804046096440340, -0.475760067936124240, -0.475716088586407960, -0.475672108047401510, -0.475628126319213970, -0.475584143401956870, +-0.475540159295739450, -0.475496174000671620, -0.475452187516863410, -0.475408199844424670, -0.475364210983465430, -0.475320220934095710, -0.475276229696424580, -0.475232237270563740, +-0.475188243656622270, -0.475144248854710180, -0.475100252864937460, -0.475056255687414110, -0.475012257322250160, -0.474968257769554760, -0.474924257029439520, -0.474880255102013590, +-0.474836251987387050, -0.474792247685669910, -0.474748242196972090, -0.474704235521403730, -0.474660227659074730, -0.474616218610094400, -0.474572208374574310, -0.474528196952623660, +-0.474484184344352580, -0.474440170549870980, -0.474396155569288990, -0.474352139402716590, -0.474308122050263850, -0.474264103512040070, -0.474220083788156780, -0.474176062878723270, +-0.474132040783849570, -0.474088017503645820, -0.474043993038221980, -0.473999967387688240, -0.473955940552154510, -0.473911912531730150, -0.473867883326526800, -0.473823852936653740, +-0.473779821362221080, -0.473735788603338870, -0.473691754660117150, -0.473647719532666040, -0.473603683221094860, -0.473559645725515290, -0.473515607046036570, -0.473471567182768840, +-0.473427526135822170, -0.473383483905306710, -0.473339440491332530, -0.473295395894009760, -0.473251350113447710, -0.473207303149758060, -0.473163255003050180, -0.473119205673434130, +-0.473075155161020110, -0.473031103465918200, -0.472987050588238480, -0.472942996528090350, -0.472898941285585570, -0.472854884860833380, -0.472810827253944020, -0.472766768465027580, +-0.472722708494194230, -0.472678647341554070, -0.472634585007217330, -0.472590521491293320, -0.472546456793893840, -0.472502390915128130, -0.472458323855106500, -0.472414255613939070, +-0.472370186191735990, -0.472326115588607430, -0.472282043804662820, -0.472237970840013840, -0.472193896694769970, -0.472149821369041380, -0.472105744862938210, -0.472061667176570670, +-0.472017588310048970, -0.471973508263483280, -0.471929427036983040, -0.471885344630660060, -0.471841261044623710, -0.471797176278984150, -0.471753090333851710, -0.471709003209336510, +-0.471664914905548790, -0.471620825422598810, -0.471576734760596030, -0.471532642919652130, -0.471488549899876650, -0.471444455701379770, -0.471400360324271740, -0.471356263768662850, +-0.471312166034663300, -0.471268067122383340, -0.471223967031932370, -0.471179865763422300, -0.471135763316962610, -0.471091659692663480, -0.471047554890635160, -0.471003448910988000, +-0.470959341753832190, -0.470915233419277270, -0.470871123907435020, -0.470827013218415020, -0.470782901352327420, -0.470738788309282620, -0.470694674089390810, -0.470650558692762340, +-0.470606442119507420, -0.470562324369735660, -0.470518205443558880, -0.470474085341086590, -0.470429964062429040, -0.470385841607696640, -0.470341717976999580, -0.470297593170448280, +-0.470253467188152140, -0.470209340030223190, -0.470165211696770840, -0.470121082187905490, -0.470076951503737460, -0.470032819644376990, -0.469988686609934480, -0.469944552400520300, +-0.469900417016243910, -0.469856280457217280, -0.469812142723549990, -0.469768003815352280, -0.469723863732734560, -0.469679722475807250, -0.469635580044680530, -0.469591436439464160, +-0.469547291660269980, -0.469503145707207530, -0.469458998580387250, -0.469414850279919470, -0.469370700805914530, -0.469326550158482850, -0.469282398337734830, -0.469238245343780000, +-0.469194091176730330, -0.469149935836695450, -0.469105779323785720, -0.469061621638111550, -0.469017462779783350, -0.468973302748911470, -0.468929141545606330, -0.468884979169977570, +-0.468840815622137140, -0.468796650902194630, -0.468752485010260570, -0.468708317946445240, -0.468664149710859120, -0.468619980303612630, -0.468575809724816220, -0.468531637974579470, +-0.468487465053014420, -0.468443290960230680, -0.468399115696338740, -0.468354939261449000, -0.468310761655671930, -0.468266582879117930, -0.468222402931896760, -0.468178221814120280, +-0.468134039525898270, -0.468089856067341210, -0.468045671438559460, -0.468001485639663540, -0.467957298670763910, -0.467913110531971040, -0.467868921223394570, -0.467824730745146630, +-0.467780539097336860, -0.467736346280075710, -0.467692152293473720, -0.467647957137641350, -0.467603760812689060, -0.467559563318726610, -0.467515364655866020, -0.467471164824217020, +-0.467426963823890150, -0.467382761654995820, -0.467338558317644590, -0.467294353811947010, -0.467250148138013520, -0.467205941295953830, -0.467161733285880120, -0.467117524107902080, +-0.467073313762130240, -0.467029102248675050, -0.466984889567647170, -0.466940675719157040, -0.466896460703314420, -0.466852244520231500, -0.466808027170017900, -0.466763808652784270, +-0.466719588968641070, -0.466675368117698940, -0.466631146100068390, -0.466586922915859960, -0.466542698565183430, -0.466498473048150950, -0.466454246364872320, -0.466410018515458050, +-0.466365789500018720, -0.466321559318664920, -0.466277327971507230, -0.466233095458656210, -0.466188861780221670, -0.466144626936315810, -0.466100390927048300, -0.466056153752529840, +-0.466011915412871010, -0.465967675908182390, -0.465923435238574600, -0.465879193404158180, -0.465834950405043020, -0.465790706241341280, -0.465746460913162740, -0.465702214420618100, +-0.465657966763817880, -0.465613717942872760, -0.465569467957893330, -0.465525216808989450, -0.465480964496273300, -0.465436711019854790, -0.465392456379844440, -0.465348200576353010, +-0.465303943609491010, -0.465259685479369190, -0.465215426186098180, -0.465171165729787780, -0.465126904110550240, -0.465082641328495470, -0.465038377383734100, -0.464994112276376770, +-0.464949846006534220, -0.464905578574316970, -0.464861309979835050, -0.464817040223200580, -0.464772769304523550, -0.464728497223914570, -0.464684223981484400, -0.464639949577343610, +-0.464595674011603010, -0.464551397284373170, -0.464507119395764060, -0.464462840345887920, -0.464418560134854720, -0.464374278762775150, -0.464329996229759790, -0.464285712535919490, +-0.464241427681364950, -0.464197141666206010, -0.464152854490554990, -0.464108566154521840, -0.464064276658217310, -0.464019986001752040, -0.463975694185236820, -0.463931401208782400, +-0.463887107072499420, -0.463842811776497940, -0.463798515320890170, -0.463754217705786180, -0.463709918931296590, -0.463665618997532230, -0.463621317904603760, -0.463577015652622050, +-0.463532712241697790, -0.463488407671940990, -0.463444101943463920, -0.463399795056376630, -0.463355487010789820, -0.463311177806814300, -0.463266867444560860, -0.463222555924140190, +-0.463178243245663200, -0.463133929409239810, -0.463089614414982310, -0.463045298263000840, -0.463000980953406140, -0.462956662486308960, -0.462912342861820090, -0.462868022080050400, +-0.462823700141109850, -0.462779377045110850, -0.462735052792163430, -0.462690727382378380, -0.462646400815866440, -0.462602073092738600, -0.462557744213105470, -0.462513414177078030, +-0.462469082984766300, -0.462424750636282630, -0.462380417131737050, -0.462336082471240470, -0.462291746654903690, -0.462247409682837510, -0.462203071555152780, -0.462158732271959640, +-0.462114391833370440, -0.462070050239495270, -0.462025707490444970, -0.461981363586330350, -0.461937018527262380, -0.461892672313351850, -0.461848324944709620, -0.461803976421445830, +-0.461759626743672880, -0.461715275911500860, -0.461670923925040610, -0.461626570784403110, -0.461582216489699100, -0.461537861041039610, -0.461493504438534710, -0.461449146682296810, +-0.461404787772435990, -0.461360427709063270, -0.461316066492289460, -0.461271704122225460, -0.461227340598982240, -0.461182975922670600, -0.461138610093400790, -0.461094243111285220, +-0.461049874976434070, -0.461005505688958210, -0.460961135248968590, -0.460916763656576130, -0.460872390911891800, -0.460828017015025680, -0.460783641966090280, -0.460739265765195800, +-0.460694888412453150, -0.460650509907973290, -0.460606130251867140, -0.460561749444245660, -0.460517367485219820, -0.460472984374900530, -0.460428600113398030, -0.460384214700824800, +-0.460339828137291020, -0.460295440422907710, -0.460251051557785780, -0.460206661542036210, -0.460162270375770010, -0.460117878059097320, -0.460073484592130770, -0.460029089974980430, +-0.459984694207757450, -0.459940297290572670, -0.459895899223537190, -0.459851500006761950, -0.459807099640357930, -0.459762698124435380, -0.459718295459106920, -0.459673891644482690, +-0.459629486680673720, -0.459585080567791020, -0.459540673305945670, -0.459496264895248590, -0.459451855335810120, -0.459407444627742740, -0.459363032771156750, -0.459318619766163230, +-0.459274205612873130, -0.459229790311397490, -0.459185373861847430, -0.459140956264333880, -0.459096537518967170, -0.459052117625859900, -0.459007696585122360, -0.458963274396865570, +-0.458918851061200620, -0.458874426578238510, -0.458830000948090340, -0.458785574170866350, -0.458741146246679220, -0.458696717175639260, -0.458652286957857480, -0.458607855593445020, +-0.458563423082512910, -0.458518989425172220, -0.458474554621534080, -0.458430118671708740, -0.458385681575808890, -0.458341243333944830, -0.458296803946227680, -0.458252363412768540, +-0.458207921733678470, -0.458163478909068610, -0.458119034939049260, -0.458074589823733060, -0.458030143563230460, -0.457985696157652440, -0.457941247607110250, -0.457896797911714890, +-0.457852347071577510, -0.457807895086809360, -0.457763441957521390, -0.457718987683824020, -0.457674532265830050, -0.457630075703649660, -0.457585617997394110, -0.457541159147174530, +-0.457496699153102090, -0.457452238015287840, -0.457407775733842230, -0.457363312308877950, -0.457318847740505410, -0.457274382028835750, -0.457229915173980150, -0.457185447176049700, +-0.457140978035155690, -0.457096507751409250, -0.457052036324920700, -0.457007563755802870, -0.456963090044166130, -0.456918615190121670, -0.456874139193780670, -0.456829662055254330, +-0.456785183774653820, -0.456740704352089580, -0.456696223787674330, -0.456651742081518540, -0.456607259233733410, -0.456562775244430120, -0.456518290113719920, -0.456473803841713990, +-0.456429316428523520, -0.456384827874258990, -0.456340338179033130, -0.456295847342956470, -0.456251355366140200, -0.456206862248695550, -0.456162367990733730, -0.456117872592365970, +-0.456073376053702790, -0.456028878374856890, -0.455984379555938850, -0.455939879597059840, -0.455895378498331120, -0.455850876259863980, -0.455806372881769620, -0.455761868364159330, +-0.455717362707143580, -0.455672855910835280, -0.455628347975344740, -0.455583838900783410, -0.455539328687262430, -0.455494817334893170, -0.455450304843786850, -0.455405791214053950, +-0.455361276445807370, -0.455316760539157650, -0.455272243494215970, -0.455227725311093730, -0.455183205989902140, -0.455138685530752540, -0.455094163933756230, -0.455049641199024520, +-0.455005117326667930, -0.454960592316799310, -0.454916066169529230, -0.454871538884968950, -0.454827010463229870, -0.454782480904423190, -0.454737950208660370, -0.454693418376051870, +-0.454648885406710610, -0.454604351300747170, -0.454559816058272840, -0.454515279679398920, -0.454470742164236830, -0.454426203512897920, -0.454381663725493490, -0.454337122802134060, +-0.454292580742932660, -0.454248037547999810, -0.454203493217446850, -0.454158947751385160, -0.454114401149926070, -0.454069853413181010, -0.454025304541260550, -0.453980754534277550, +-0.453936203392342750, -0.453891651115567400, -0.453847097704062900, -0.453802543157940660, -0.453757987477312110, -0.453713430662288530, -0.453668872712980620, -0.453624313629501340, +-0.453579753411961220, -0.453535192060471770, -0.453490629575144300, -0.453446065956090270, -0.453401501203421100, -0.453356935317247360, -0.453312368297682070, -0.453267800144835860, +-0.453223230858820160, -0.453178660439746360, -0.453134088887725940, -0.453089516202870300, -0.453044942385290860, -0.453000367435098250, -0.452955791352405550, -0.452911214137323330, +-0.452866635789963110, -0.452822056310436320, -0.452777475698854350, -0.452732893955328670, -0.452688311079969980, -0.452643727072891360, -0.452599141934203360, -0.452554555664017530, +-0.452509968262445330, -0.452465379729598160, -0.452420790065587550, -0.452376199270525030, -0.452331607344521160, -0.452287014287689080, -0.452242420100139430, -0.452197824781983780, +-0.452153228333333550, -0.452108630754300240, -0.452064032044995350, -0.452019432205530420, -0.451974831236016060, -0.451930229136565440, -0.451885625907289260, -0.451841021548299030, +-0.451796416059706220, -0.451751809441622350, -0.451707201694159010, -0.451662592817427600, -0.451617982811538980, -0.451573371676606160, -0.451528759412739900, -0.451484146020051770, +-0.451439531498653290, -0.451394915848655930, -0.451350299070171320, -0.451305681163310160, -0.451261062128185560, -0.451216441964908340, -0.451171820673590020, -0.451127198254342110, +-0.451082574707276250, -0.451037950032503960, -0.450993324230136770, -0.450948697300285470, -0.450904069243063200, -0.450859440058580810, -0.450814809746949760, -0.450770178308281750, +-0.450725545742688250, -0.450680912050280880, -0.450636277231170500, -0.450591641285470130, -0.450547004213290750, -0.450502366014743800, -0.450457726689940940, -0.450413086238993790, +-0.450368444662013870, -0.450323801959112870, -0.450279158130401590, -0.450234513175993220, -0.450189867095998510, -0.450145219890529190, -0.450100571559696790, -0.450055922103612950, +-0.450011271522389340, -0.449966619816136730, -0.449921966984968390, -0.449877313028995090, -0.449832657948328550, -0.449788001743080370, -0.449743344413362170, -0.449698685959285580, +-0.449654026380962300, -0.449609365678503180, -0.449564703852021410, -0.449520040901627890, -0.449475376827434270, -0.449430711629552230, -0.449386045308093340, -0.449341377863169410, +-0.449296709294892020, -0.449252039603372070, -0.449207368788722810, -0.449162696851055090, -0.449118023790480660, -0.449073349607111150, -0.449028674301058310, -0.448983997872433760, +-0.448939320321349200, -0.448894641647915540, -0.448849961852246130, -0.448805280934451770, -0.448760598894644200, -0.448715915732935120, -0.448671231449436270, -0.448626546044259390, +-0.448581859517515280, -0.448537171869317350, -0.448492483099776460, -0.448447793209004410, -0.448403102197112880, -0.448358410064213560, -0.448313716810418210, -0.448269022435838600, +-0.448224326940585620, -0.448179630324772590, -0.448134932588510500, -0.448090233731911090, -0.448045533755086100, -0.448000832658147270, -0.447956130441206410, -0.447911427104374370, +-0.447866722647764560, -0.447822017071487940, -0.447777310375656320, -0.447732602560381390, -0.447687893625774940, -0.447643183571948770, -0.447598472399014680, -0.447553760107083590, +-0.447509046696268840, -0.447464332166681520, -0.447419616518433370, -0.447374899751636190, -0.447330181866401780, -0.447285462862841880, -0.447240742741067510, -0.447196021501192090, +-0.447151299143326630, -0.447106575667582940, -0.447061851074072760, -0.447017125362908000, -0.446972398534200400, -0.446927670588061820, -0.446882941524603280, -0.446838211343938140, +-0.446793480046177530, -0.446748747631433190, -0.446704014099816970, -0.446659279451440680, -0.446614543686416230, -0.446569806804855470, -0.446525068806869320, -0.446480329692571340, +-0.446435589462072510, -0.446390848115484740, -0.446346105652919820, -0.446301362074489670, -0.446256617380306090, -0.446211871570480920, -0.446167124645125370, -0.446122376604352720, +-0.446077627448274170, -0.446032877177001570, -0.445988125790646730, -0.445943373289321600, -0.445898619673138040, -0.445853864942207130, -0.445809109096642340, -0.445764352136554800, +-0.445719594062056410, -0.445674834873258980, -0.445630074570274480, -0.445585313153214810, -0.445540550622191830, -0.445495786977316680, -0.445451022218702860, -0.445406256346461530, +-0.445361489360704520, -0.445316721261543760, -0.445271952049091260, -0.445227181723458820, -0.445182410284757690, -0.445137637733101280, -0.445092864068600770, -0.445048089291368130, +-0.445003313401515280, -0.444958536399154110, -0.444913758284396610, -0.444868979057354730, -0.444824198718139610, -0.444779417266864760, -0.444734634703641380, -0.444689851028581440, +-0.444645066241796840, -0.444600280343399600, -0.444555493333501640, -0.444510705212214140, -0.444465915979650680, -0.444421125635922450, -0.444376334181141420, -0.444331541615419550, +-0.444286747938868800, -0.444241953151601140, -0.444197157253728660, -0.444152360245362480, -0.444107562126616170, -0.444062762897600990, -0.444017962558428900, -0.443973161109211870, +-0.443928358550061960, -0.443883554881091160, -0.443838750102411470, -0.443793944214134100, -0.443749137216372660, -0.443704329109238400, -0.443659519892843300, -0.443614709567299430, +-0.443569898132718740, -0.443525085589213330, -0.443480271936895210, -0.443435457175875620, -0.443390641306268150, -0.443345824328184090, -0.443301006241735520, -0.443256187047034340, +-0.443211366744192760, -0.443166545333322780, -0.443121722814535600, -0.443076899187944910, -0.443032074453661990, -0.442987248611798890, -0.442942421662467610, -0.442897593605780350, +-0.442852764441849070, -0.442807934170785900, -0.442763102792702030, -0.442718270307711270, -0.442673436715924850, -0.442628602017454800, -0.442583766212413240, -0.442538929300912260, +-0.442494091283063990, -0.442449252158979680, -0.442404411928773060, -0.442359570592555370, -0.442314728150438760, -0.442269884602535360, -0.442225039948957180, -0.442180194189816470, +-0.442135347325225250, -0.442090499355294870, -0.442045650280139040, -0.442000800099869080, -0.441955948814597100, -0.441911096424435270, -0.441866242929495720, -0.441821388329890540, +-0.441776532625731080, -0.441731675817131130, -0.441686817904201940, -0.441641958887055710, -0.441597098765804610, -0.441552237540560780, -0.441507375211436290, -0.441462511778543400, +-0.441417647241993450, -0.441372781601900190, -0.441327914858374910, -0.441283047011529870, -0.441238178061477250, -0.441193308008329180, -0.441148436852197790, -0.441103564593195330, +-0.441058691231433210, -0.441013816767025110, -0.440968941200082450, -0.440924064530717470, -0.440879186759042360, -0.440834307885169200, -0.440789427909210330, -0.440744546831277890, +-0.440699664651483250, -0.440654781369940300, -0.440609896986760340, -0.440565011502055680, -0.440520124915938500, -0.440475237228520940, -0.440430348439915350, -0.440385458550233090, +-0.440340567559587950, -0.440295675468091400, -0.440250782275855680, -0.440205887982992980, -0.440160992589615610, -0.440116096095835680, -0.440071198501765570, -0.440026299807516620, +-0.439981400013202740, -0.439936499118935400, -0.439891597124826780, -0.439846694030989140, -0.439801789837534820, -0.439756884544575950, -0.439711978152224130, -0.439667070660593180, +-0.439622162069794490, -0.439577252379940440, -0.439532341591143240, -0.439487429703515230, -0.439442516717168610, -0.439397602632215670, -0.439352687448767990, -0.439307771166939310, +-0.439262853786841270, -0.439217935308586050, -0.439173015732286010, -0.439128095058053450, -0.439083173286000660, -0.439038250416239120, -0.438993326448882730, -0.438948401384043010, +-0.438903475221832320, -0.438858547962362950, -0.438813619605747220, -0.438768690152097410, -0.438723759601525880, -0.438678827954144200, -0.438633895210066180, -0.438588961369403450, +-0.438544026432268310, -0.438499090398773110, -0.438454153269030200, -0.438409215043151890, -0.438364275721250580, -0.438319335303437750, -0.438274393789827350, -0.438229451180531030, +-0.438184507475661010, -0.438139562675329770, -0.438094616779649610, -0.438049669788732890, -0.438004721702692060, -0.437959772521638540, -0.437914822245686450, -0.437869870874947280, +-0.437824918409533470, -0.437779964849557330, -0.437735010195131280, -0.437690054446367720, -0.437645097603378160, -0.437600139666276760, -0.437555180635174960, -0.437510220510185180, +-0.437465259291419880, -0.437420296978991430, -0.437375333573012230, -0.437330369073594680, -0.437285403480850430, -0.437240436794893490, -0.437195469015835450, -0.437150500143788700, +-0.437105530178865720, -0.437060559121178920, -0.437015586970840750, -0.436970613727962750, -0.436925639392659100, -0.436880663965041270, -0.436835687445221830, -0.436790709833313140, +-0.436745731129427720, -0.436700751333677920, -0.436655770446176260, -0.436610788467034380, -0.436565805396366360, -0.436520821234283760, -0.436475835980899170, -0.436430849636324950, +-0.436385862200673600, -0.436340873674057660, -0.436295884056588650, -0.436250893348380800, -0.436205901549545690, -0.436160908660195800, -0.436115914680443690, -0.436070919610401730, +-0.436025923450182540, -0.435980926199898480, -0.435935927859661340, -0.435890928429585160, -0.435845927909781720, -0.435800926300363380, -0.435755923601442770, -0.435710919813132310, +-0.435665914935544630, -0.435620908968791300, -0.435575901912986510, -0.435530893768241940, -0.435485884534670190, -0.435440874212383700, -0.435395862801495000, -0.435350850302116680, +-0.435305836714361240, -0.435260822038341160, -0.435215806274168280, -0.435170789421956640, -0.435125771481818080, -0.435080752453865020, -0.435035732338210130, -0.434990711134965900, +-0.434945688844244890, -0.434900665466158850, -0.434855641000821970, -0.434810615448345980, -0.434765588808843420, -0.434720561082426900, -0.434675532269209020, -0.434630502369302290, +-0.434585471382819280, -0.434540439309871800, -0.434495406150574030, -0.434450371905037710, -0.434405336573375540, -0.434360300155699990, -0.434315262652123670, -0.434270224062759170, +-0.434225184387718340, -0.434180143627115380, -0.434135101781062020, -0.434090058849670950, -0.434045014833054690, -0.433999969731325930, -0.433954923544597190, -0.433909876272981170, +-0.433864827916589700, -0.433819778475536880, -0.433774727949934660, -0.433729676339895620, -0.433684623645532400, -0.433639569866957620, -0.433594515004283920, -0.433549459057623100, +-0.433504402027089450, -0.433459343912794780, -0.433414284714851770, -0.433369224433373060, -0.433324163068471270, -0.433279100620259090, -0.433234037088849110, -0.433188972474353280, +-0.433143906776885800, -0.433098839996558570, -0.433053772133484280, -0.433008703187775510, -0.432963633159544950, -0.432918562048905330, -0.432873489855968570, -0.432828416580848810, +-0.432783342223658050, -0.432738266784508880, -0.432693190263514100, -0.432648112660786340, -0.432603033976438290, -0.432557954210582630, -0.432512873363332110, -0.432467791434798630, +-0.432422708425096390, -0.432377624334337460, -0.432332539162634420, -0.432287452910100070, -0.432242365576847090, -0.432197277162988170, -0.432152187668635280, -0.432107097093902710, +-0.432062005438902390, -0.432016912703747040, -0.431971818888549410, -0.431926723993422300, -0.431881628018478290, -0.431836530963830290, -0.431791432829590090, -0.431746333615872170, +-0.431701233322788370, -0.431656131950451490, -0.431611029498974340, -0.431565925968469540, -0.431520821359049960, -0.431475715670827540, -0.431430608903916600, -0.431385501058429150, +-0.431340392134478000, -0.431295282132175770, -0.431250171051635430, -0.431205058892969620, -0.431159945656291120, -0.431114831341712020, -0.431069715949346620, -0.431024599479306940, +-0.430979481931705770, -0.430934363306655850, -0.430889243604270060, -0.430844122824661170, -0.430799000967941160, -0.430753878034224440, -0.430708754023623020, -0.430663628936249710, +-0.430618502772217360, -0.430573375531638710, -0.430528247214626620, -0.430483117821293950, -0.430437987351752700, -0.430392855806117250, -0.430347723184499650, -0.430302589487012780, +-0.430257454713769420, -0.430212318864882370, -0.430167181940464600, -0.430122043940628030, -0.430076904865487160, -0.430031764715154030, -0.429986623489741540, -0.429941481189362430, +-0.429896337814129610, -0.429851193364156000, -0.429806047839554340, -0.429760901240437590, -0.429715753566917820, -0.429670604819109400, -0.429625454997124510, -0.429580304101076000, +-0.429535152131076740, -0.429489999087239560, -0.429444844969677390, -0.429399689778502290, -0.429354533513828800, -0.429309376175768980, -0.429264217764435680, -0.429219058279941830, +-0.429173897722400390, -0.429128736091924150, -0.429083573388626130, -0.429038409612618300, -0.428993244764015290, -0.428948078842929180, -0.428902911849472880, -0.428857743783759290, +-0.428812574645901330, -0.428767404436011910, -0.428722233154203210, -0.428677060800589760, -0.428631887375283630, -0.428586712878397720, -0.428541537310045130, -0.428496360670338640, +-0.428451182959391220, -0.428406004177315890, -0.428360824324224730, -0.428315643400232320, -0.428270461405450830, -0.428225278339993130, -0.428180094203972290, -0.428134908997501170, +-0.428089722720692790, -0.428044535373659330, -0.427999346956515310, -0.427954157469372930, -0.427908966912345150, -0.427863775285544920, -0.427818582589085280, -0.427773388823079190, +-0.427728193987639620, -0.427682998082878800, -0.427637801108911250, -0.427592603065849170, -0.427547403953805640, -0.427502203772893610, -0.427457002523225990, -0.427411800204915930, +-0.427366596818075540, -0.427321392362819460, -0.427276186839259940, -0.427230980247509880, -0.427185772587682420, -0.427140563859890520, -0.427095354064247200, -0.427050143200865540, +-0.427004931269858500, -0.426959718271338270, -0.426914504205419600, -0.426869289072214660, -0.426824072871836550, -0.426778855604398210, -0.426733637270012680, -0.426688417868793140, +-0.426643197400851710, -0.426597975866303100, -0.426552753265259540, -0.426507529597834110, -0.426462304864139890, -0.426417079064289830, -0.426371852198397130, -0.426326624266574810, +-0.426281395268935100, -0.426236165205592710, -0.426190934076659870, -0.426145701882249760, -0.426100468622475360, -0.426055234297449790, -0.426009998907286140, -0.425964762452096690, +-0.425919524931996140, -0.425874286347096730, -0.425829046697511650, -0.425783805983353970, -0.425738564204736770, -0.425693321361773120, -0.425648077454576170, -0.425602832483258250, +-0.425557586447934070, -0.425512339348715910, -0.425467091185716910, -0.425421841959050140, -0.425376591668828800, -0.425331340315165950, -0.425286087898173960, -0.425240834417967560, +-0.425195579874659110, -0.425150324268361630, -0.425105067599188420, -0.425059809867252500, -0.425014551072667060, -0.424969291215545280, -0.424924030295999400, -0.424878768314144280, +-0.424833505270092230, -0.424788241163956470, -0.424742975995850040, -0.424697709765886220, -0.424652442474178100, -0.424607174120838040, -0.424561904705980870, -0.424516634229718970, +-0.424471362692165450, -0.424426090093433570, -0.424380816433636400, -0.424335541712887230, -0.424290265931299200, -0.424244989088984730, -0.424199711186058540, -0.424154432222633100, +-0.424109152198821560, -0.424063871114737150, -0.424018588970493050, -0.423973305766202510, -0.423928021501978670, -0.423882736177933980, -0.423837449794183310, -0.423792162350838940, +-0.423746873848014180, -0.423701584285822270, -0.423656293664376400, -0.423611001983789760, -0.423565709244175640, -0.423520415445646450, -0.423475120588316990, -0.423429824672299730, +-0.423384527697707960, -0.423339229664654810, -0.423293930573253600, -0.423248630423617600, -0.423203329215859180, -0.423158026950093250, -0.423112723626432260, -0.423067419244989470, +-0.423022113805878120, -0.422976807309211500, -0.422931499755102860, -0.422886191143665490, -0.422840881475011810, -0.422795570749256720, -0.422750258966512690, -0.422704946126893080, +-0.422659632230511060, -0.422614317277479950, -0.422569001267913080, -0.422523684201922880, -0.422478366079624250, -0.422433046901129760, -0.422387726666552610, -0.422342405376006150, +-0.422297083029603670, -0.422251759627458530, -0.422206435169683920, -0.422161109656392470, -0.422115783087699040, -0.422070455463716130, -0.422025126784557110, -0.421979797050335280, +-0.421934466261163930, -0.421889134417156420, -0.421843801518425320, -0.421798467565085430, -0.421753132557249440, -0.421707796495030600, -0.421662459378542300, -0.421617121207897790, +-0.421571781983210490, -0.421526441704593750, -0.421481100372160130, -0.421435757986024510, -0.421390414546299550, -0.421345070053098510, -0.421299724506534800, -0.421254377906721820, +-0.421209030253772820, -0.421163681547801320, -0.421118331788919780, -0.421072980977243220, -0.421027629112884220, -0.420982276195956130, -0.420936922226572310, -0.420891567204846220, +-0.420846211130891270, -0.420800854004820700, -0.420755495826747260, -0.420710136596785860, -0.420664776315049120, -0.420619414981650400, -0.420574052596703160, -0.420528689160320820, +-0.420483324672616730, -0.420437959133703580, -0.420392592543696260, -0.420347224902707480, -0.420301856210850700, -0.420256486468239210, -0.420211115674986540, -0.420165743831206030, +-0.420120370937011210, -0.420074996992514660, -0.420029621997831390, -0.419984245953074100, -0.419938868858356180, -0.419893490713791060, -0.419848111519492250, -0.419802731275573160, +-0.419757349982146420, -0.419711967639327110, -0.419666584247227910, -0.419621199805962240, -0.419575814315643560, -0.419530427776385330, -0.419485040188301020, -0.419439651551504140, +-0.419394261866107340, -0.419348871132225690, -0.419303479349971810, -0.419258086519459280, -0.419212692640801520, -0.419167297714112040, -0.419121901739504310, -0.419076504717091010, +-0.419031106646987230, -0.418985707529305750, -0.418940307364159940, -0.418894906151663360, -0.418849503891929540, -0.418804100585072000, -0.418758696231204150, -0.418713290830438790, +-0.418667884382890990, -0.418622476888673490, -0.418577068347899760, -0.418531658760683380, -0.418486248127137860, -0.418440836447376730, -0.418395423721513500, -0.418350009949660930, +-0.418304595131934080, -0.418259179268445800, -0.418213762359309570, -0.418168344404638900, -0.418122925404547370, -0.418077505359148560, -0.418032084268555980, -0.417986662132882380, +-0.417941238952242890, -0.417895814726750360, -0.417850389456518260, -0.417804963141660210, -0.417759535782289750, -0.417714107378520440, -0.417668677930465030, -0.417623247438238750, +-0.417577815901954360, -0.417532383321725430, -0.417486949697665530, -0.417441515029888300, -0.417396079318507250, -0.417350642563635970, -0.417305204765387290, -0.417259765923876420, +-0.417214326039216150, -0.417168885111520060, -0.417123443140901770, -0.417078000127474870, -0.417032556071352920, -0.416987110972648790, -0.416941664831477710, -0.416896217647952480, +-0.416850769422186680, -0.416805320154294000, -0.416759869844387950, -0.416714418492582280, -0.416668966098990570, -0.416623512663725600, -0.416578058186902630, -0.416532602668634570, +-0.416487146109034980, -0.416441688508217560, -0.416396229866295870, -0.416350770183383620, -0.416305309459593650, -0.416259847695041210, -0.416214384889839200, -0.416168921044101140, +-0.416123456157940830, -0.416077990231471850, -0.416032523264807940, -0.415987055258062680, -0.415941586211348970, -0.415896116124782110, -0.415850644998474960, -0.415805172832541260, +-0.415759699627094530, -0.415714225382248610, -0.415668750098117100, -0.415623273774813730, -0.415577796412451410, -0.415532318011145320, -0.415486838571008490, -0.415441358092154540, +-0.415395876574697230, -0.415350394018750180, -0.415304910424427190, -0.415259425791841890, -0.415213940121107240, -0.415168453412338550, -0.415122965665648710, -0.415077476881151490, +-0.415031987058960550, -0.414986496199189590, -0.414941004301952470, -0.414895511367362020, -0.414850017395533570, -0.414804522386580110, -0.414759026340615290, -0.414713529257752960, +-0.414668031138106800, -0.414622531981790550, -0.414577031788917970, -0.414531530559602010, -0.414486028293957980, -0.414440524992098940, -0.414395020654138580, -0.414349515280190650, +-0.414304008870368940, -0.414258501424787210, -0.414212992943558400, -0.414167483426797990, -0.414121972874618770, -0.414076461287134660, -0.414030948664459440, -0.413985435006706810, +-0.413939920313990570, -0.413894404586424570, -0.413848887824121710, -0.413803370027197470, -0.413757851195764800, -0.413712331329937510, -0.413666810429829390, -0.413621288495554240, +-0.413575765527225860, -0.413530241524957260, -0.413484716488863870, -0.413439190419058630, -0.413393663315655520, -0.413348135178768170, -0.413302606008510540, -0.413257075804996380, +-0.413211544568339470, -0.413166012298652960, -0.413120478996052200, -0.413074944660650260, -0.413029409292560930, -0.412983872891898140, -0.412938335458775620, -0.412892796993307280, +-0.412847257495606910, -0.412801716965787600, -0.412756175403964810, -0.412710632810251610, -0.412665089184761800, -0.412619544527609290, -0.412573998838907880, -0.412528452118771480, +-0.412482904367314000, -0.412437355584648390, -0.412391805770890240, -0.412346254926152570, -0.412300703050549280, -0.412255150144194170, -0.412209596207201270, -0.412164041239684310, +-0.412118485241756480, -0.412072928213533200, -0.412027370155127640, -0.411981811066653660, -0.411936250948225110, -0.411890689799955970, -0.411845127621960070, -0.411799564414351390, +-0.411754000177242950, -0.411708434910750380, -0.411662868614986690, -0.411617301290065800, -0.411571732936101660, -0.411526163553208260, -0.411480593141499370, -0.411435021701088250, +-0.411389449232090310, -0.411343875734618840, -0.411298301208787630, -0.411252725654710660, -0.411207149072501890, -0.411161571462275220, -0.411115992824144630, -0.411070413158223290, +-0.411024832464626680, -0.410979250743468030, -0.410933667994861250, -0.410888084218920260, -0.410842499415759070, -0.410796913585491640, -0.410751326728231110, -0.410705738844093120, +-0.410660149933190720, -0.410614559995638010, -0.410568969031548820, -0.410523377041037250, -0.410477784024217250, -0.410432189981202790, -0.410386594912107050, -0.410340998817045610, +-0.410295401696131660, -0.410249803549479260, -0.410204204377202290, -0.410158604179414850, -0.410113002956230880, -0.410067400707764430, -0.410021797434128640, -0.409976193135439150, +-0.409930587811809190, -0.409884981463352780, -0.409839374090183890, -0.409793765692416600, -0.409748156270164920, -0.409702545823542760, -0.409656934352663480, -0.409611321857642710, +-0.409565708338593570, -0.409520093795630200, -0.409474478228866570, -0.409428861638416740, -0.409383244024394800, -0.409337625386913870, -0.409292005726089760, -0.409246385042035590, +-0.409200763334865490, -0.409155140604693430, -0.409109516851633550, -0.409063892075799910, -0.409018266277306470, -0.408972639456266610, -0.408927011612795930, -0.408881382747007750, +-0.408835752859016130, -0.408790121948935100, -0.408744490016878740, -0.408698857062961160, -0.408653223087295680, -0.408607588089997920, -0.408561952071181180, -0.408516315030959590, +-0.408470676969447170, -0.408425037886758100, -0.408379397783006410, -0.408333756658306240, -0.408288114512770810, -0.408242471346515980, -0.408196827159654940, -0.408151181952301820, +-0.408105535724570760, -0.408059888476575870, -0.408014240208431240, -0.407968590920250230, -0.407922940612148510, -0.407877289284239500, -0.407831636936637210, -0.407785983569455830, +-0.407740329182809560, -0.407694673776812400, -0.407649017351578550, -0.407603359907221410, -0.407557701443856610, -0.407512041961597570, -0.407466381460558470, -0.407420719940853380, +-0.407375057402596500, -0.407329393845902000, -0.407283729270883190, -0.407238063677655860, -0.407192397066333370, -0.407146729437029840, -0.407101060789859530, -0.407055391124936610, +-0.407009720442375160, -0.406964048742289420, -0.406918376024793580, -0.406872702290000940, -0.406827027538027410, -0.406781351768986280, -0.406735674982991790, -0.406689997180158080, +-0.406644318360599390, -0.406598638524429900, -0.406552957671763030, -0.406507275802714560, -0.406461592917397920, -0.406415909015927280, -0.406370224098416890, -0.406324538164980880, +-0.406278851215733590, -0.406233163250789120, -0.406187474270260970, -0.406141784274264950, -0.406096093262914460, -0.406050401236323690, -0.406004708194606990, -0.405959014137878490, +-0.405913319066252440, -0.405867622979842300, -0.405821925878763870, -0.405776227763130660, -0.405730528633056920, -0.405684828488656830, -0.405639127330044650, -0.405593425157334650, +-0.405547721970641100, -0.405502017770077440, -0.405456312555759530, -0.405410606327800850, -0.405364899086315680, -0.405319190831418210, -0.405273481563222790, -0.405227771281843670, +-0.405182059987394320, -0.405136347679990630, -0.405090634359746020, -0.405044920026774890, -0.404999204681191440, -0.404953488323109960, -0.404907770952644740, -0.404862052569910150, +-0.404816333175019580, -0.404770612768089010, -0.404724891349231900, -0.404679168918562540, -0.404633445476195290, -0.404587721022244440, -0.404541995556824240, -0.404496269080048270, +-0.404450541592032420, -0.404404813092890230, -0.404359083582735980, -0.404313353061684090, -0.404267621529848740, -0.404221888987344400, -0.404176155434285310, -0.404130420870785820, +-0.404084685296959460, -0.404038948712922230, -0.403993211118787610, -0.403947472514669950, -0.403901732900683650, -0.403855992276942970, -0.403810250643562350, -0.403764508000655280, +-0.403718764348337760, -0.403673019686723310, -0.403627274015926300, -0.403581527336061120, -0.403535779647242130, -0.403490030949583690, -0.403444281243200140, -0.403398530528205120, +-0.403352778804714540, -0.403307026072842080, -0.403261272332701980, -0.403215517584408770, -0.403169761828076730, -0.403124005063820290, -0.403078247291753010, -0.403032488511990920, +-0.402986728724647640, -0.402940967929837520, -0.402895206127674990, -0.402849443318274440, -0.402803679501750280, -0.402757914678216920, -0.402712148847787940, -0.402666382010579470, +-0.402620614166704970, -0.402574845316278960, -0.402529075459415850, -0.402483304596230050, -0.402437532726835970, -0.402391759851347290, -0.402345985969879970, -0.402300211082547710, +-0.402254435189464910, -0.402208658290746040, -0.402162880386505490, -0.402117101476857750, -0.402071321561917270, -0.402025540641797690, -0.401979758716615070, -0.401933975786483040, +-0.401888191851516090, -0.401842406911828600, -0.401796620967535160, -0.401750834018750110, -0.401705046065587210, -0.401659257108162530, -0.401613467146589630, -0.401567676180983100, +-0.401521884211457400, -0.401476091238126940, -0.401430297261106290, -0.401384502280509920, -0.401338706296452240, -0.401292909309047040, -0.401247111318410340, -0.401201312324655830, +-0.401155512327898090, -0.401109711328251570, -0.401063909325830750, -0.401018106320750190, -0.400972302313123530, -0.400926497303066900, -0.400880691290694040, -0.400834884276119460, +-0.400789076259457700, -0.400743267240823210, -0.400697457220330570, -0.400651646198094290, -0.400605834174228070, -0.400560021148848090, -0.400514207122068030, -0.400468392094002480, +-0.400422576064765940, -0.400376759034472950, -0.400330941003238070, -0.400285121971175050, -0.400239301938400020, -0.400193480905026710, -0.400147658871169710, -0.400101835836943590, +-0.400056011802462860, -0.400010186767842110, -0.399964360733195860, -0.399918533698637950, -0.399872705664284460, -0.399826876630249240, -0.399781046596646820, -0.399735215563591820, +-0.399689383531198760, -0.399643550499582220, -0.399597716468856000, -0.399551881439136280, -0.399506045410536910, -0.399460208383172420, -0.399414370357157380, -0.399368531332606410, +-0.399322691309634100, -0.399276850288355130, -0.399231008268883140, -0.399185165251334520, -0.399139321235822910, -0.399093476222463050, -0.399047630211369460, -0.399001783202656830, +-0.398955935196439740, -0.398910086192831970, -0.398864236191949830, -0.398818385193907110, -0.398772533198818390, -0.398726680206798360, -0.398680826217961640, -0.398634971232422810, +-0.398589115250296610, -0.398543258271696730, -0.398497400296739580, -0.398451541325538890, -0.398405681358209420, -0.398359820394865670, -0.398313958435622400, -0.398268095480594220, +-0.398222231529895830, -0.398176366583641030, -0.398130500641946110, -0.398084633704924970, -0.398038765772692260, -0.397992896845362600, -0.397947026923050730, -0.397901156005871230, +-0.397855284093938890, -0.397809411187367510, -0.397763537286273450, -0.397717662390770500, -0.397671786500973400, -0.397625909616996840, -0.397580031738955510, -0.397534152866964140, +-0.397488273001136540, -0.397442392141589050, -0.397396510288435590, -0.397350627441790890, -0.397304743601769590, -0.397258858768486430, -0.397212972942056150, -0.397167086122593380, +-0.397121198310212140, -0.397075309505028730, -0.397029419707156990, -0.396983528916711740, -0.396937637133807640, -0.396891744358559450, -0.396845850591081910, -0.396799955831488920, +-0.396754060079896890, -0.396708163336419670, -0.396662265601172070, -0.396616366874268770, -0.396570467155824560, -0.396524566445954240, -0.396478664744772450, -0.396432762052393190, +-0.396386858368932840, -0.396340953694505340, -0.396295048029225490, -0.396249141373207990, -0.396203233726567630, -0.396157325089419200, -0.396111415461876670, -0.396065504844056340, +-0.396019593236072330, -0.395973680638039280, -0.395927767050072040, -0.395881852472285410, -0.395835936904794130, -0.395790020347713050, -0.395744102801156020, -0.395698184265239620, +-0.395652264740077700, -0.395606344225785170, -0.395560422722476770, -0.395514500230267300, -0.395468576749271610, -0.395422652279604440, -0.395376726821379810, -0.395330800374714240, +-0.395284872939721590, -0.395238944516516810, -0.395193015105214650, -0.395147084705929960, -0.395101153318777600, -0.395055220943872300, -0.395009287581328140, -0.394963353231261580, +-0.394917417893786650, -0.394871481569018190, -0.394825544257071000, -0.394779605958059940, -0.394733666672099910, -0.394687726399304880, -0.394641785139791310, -0.394595842893673330, +-0.394549899661065680, -0.394503955442083330, -0.394458010236841130, -0.394412064045453810, -0.394366116868036410, -0.394320168704702880, -0.394274219555569740, -0.394228269420751010, +-0.394182318300361660, -0.394136366194516470, -0.394090413103330430, -0.394044459026918310, -0.393998503965394210, -0.393952547918874680, -0.393906590887473820, -0.393860632871306460, +-0.393814673870487520, -0.393768713885131850, -0.393722752915354470, -0.393676790961270170, -0.393630828022993040, -0.393584864100639700, -0.393538899194324220, -0.393492933304161460, +-0.393446966430266390, -0.393400998572753850, -0.393355029731738860, -0.393309059907335500, -0.393263089099660230, -0.393217117308827300, -0.393171144534951560, -0.393125170778147960, +-0.393079196038531480, -0.393033220316216960, -0.392987243611319370, -0.392941265923952900, -0.392895287254234060, -0.392849307602276990, -0.392803326968196640, -0.392757345352107990, +-0.392711362754125990, -0.392665379174365610, -0.392619394612941710, -0.392573409069968570, -0.392527422545562670, -0.392481435039838290, -0.392435446552910240, -0.392389457084893640, +-0.392343466635903360, -0.392297475206054400, -0.392251482795461790, -0.392205489404239660, -0.392159495032504580, -0.392113499680370790, -0.392067503347953260, -0.392021506035366950, +-0.391975507742726880, -0.391929508470148070, -0.391883508217744590, -0.391837506985633240, -0.391791504773928100, -0.391745501582744180, -0.391699497412196560, -0.391653492262400150, +-0.391607486133470020, -0.391561479025521130, -0.391515470938667790, -0.391469461873026560, -0.391423451828711690, -0.391377440805838190, -0.391331428804521100, -0.391285415824875420, +-0.391239401867016170, -0.391193386931057650, -0.391147371017116440, -0.391101354125306830, -0.391055336255743850, -0.391009317408542500, -0.390963297583817810, -0.390917276781684970, +-0.390871255002258890, -0.390825232245653850, -0.390779208511986550, -0.390733183801371290, -0.390687158113922960, -0.390641131449756820, -0.390595103808987820, -0.390549075191731100, +-0.390503045598100840, -0.390457015028213780, -0.390410983482184170, -0.390364950960127130, -0.390318917462157690, -0.390272882988390970, -0.390226847538942050, -0.390180811113926000, +-0.390134773713457120, -0.390088735337652090, -0.390042695986625220, -0.389996655660491690, -0.389950614359366450, -0.389904572083364650, -0.389858528832601470, -0.389812484607191980, +-0.389766439407250420, -0.389720393232893590, -0.389674346084235790, -0.389628297961392140, -0.389582248864477730, -0.389536198793607680, -0.389490147748897120, -0.389444095730461240, +-0.389398042738414270, -0.389351988772873030, -0.389305933833951790, -0.389259877921765750, -0.389213821036429990, -0.389167763178059680, -0.389121704346769960, -0.389075644542675180, +-0.389029583765892140, -0.388983522016535080, -0.388937459294719230, -0.388891395600559740, -0.388845330934171730, -0.388799265295670440, -0.388753198685170940, -0.388707131102787650, +-0.388661062548637360, -0.388614993022834420, -0.388568922525493960, -0.388522851056731230, -0.388476778616661360, -0.388430705205399570, -0.388384630823060180, -0.388338555469760040, +-0.388292479145613490, -0.388246401850735720, -0.388200323585241980, -0.388154244349247450, -0.388108164142867250, -0.388062082966216690, -0.388016000819410070, -0.387969917702564280, +-0.387923833615793750, -0.387877748559213590, -0.387831662532939050, -0.387785575537085310, -0.387739487571767680, -0.387693398637100560, -0.387647308733200690, -0.387601217860182590, +-0.387555126018161440, -0.387509033207252440, -0.387462939427570870, -0.387416844679231990, -0.387370748962350960, -0.387324652277042270, -0.387278554623422750, -0.387232456001606830, +-0.387186356411709790, -0.387140255853846870, -0.387094154328133270, -0.387048051834684330, -0.387001948373615230, -0.386955843945040460, -0.386909738549076900, -0.386863632185838970, +-0.386817524855441960, -0.386771416558001120, -0.386725307293631800, -0.386679197062449190, -0.386633085864568570, -0.386586973700104420, -0.386540860569173640, -0.386494746471890750, +-0.386448631408370990, -0.386402515378729610, -0.386356398383082000, -0.386310280421543360, -0.386264161494228150, -0.386218041601253450, -0.386171920742733600, -0.386125798918783960, +-0.386079676129519770, -0.386033552375056430, -0.385987427655509250, -0.385941301970993470, -0.385895175321623600, -0.385849047707516600, -0.385802919128787000, -0.385756789585550100, +-0.385710659077921240, -0.385664527606015720, -0.385618395169948890, -0.385572261769835280, -0.385526127405791790, -0.385479992077932990, -0.385433855786374180, -0.385387718531230770, +-0.385341580312618060, -0.385295441130651390, -0.385249300985446130, -0.385203159877116840, -0.385157017805780380, -0.385110874771551430, -0.385064730774545280, -0.385018585814877300, +-0.384972439892662890, -0.384926293008017340, -0.384880145161055230, -0.384833996351893640, -0.384787846580647020, -0.384741695847430730, -0.384695544152360290, -0.384649391495550940, +-0.384603237877118140, -0.384557083297177190, -0.384510927755842780, -0.384464771253231810, -0.384418613789458960, -0.384372455364639540, -0.384326295978889010, -0.384280135632322720, +-0.384233974325056130, -0.384187812057204540, -0.384141648828882630, -0.384095484640207430, -0.384049319491293510, -0.384003153382256320, -0.383956986313211230, -0.383910818284273650, +-0.383864649295559020, -0.383818479347182830, -0.383772308439259580, -0.383726136571906350, -0.383679963745237830, -0.383633789959369360, -0.383587615214416420, -0.383541439510494460, +-0.383495262847718900, -0.383449085226204360, -0.383402906646067910, -0.383356727107424240, -0.383310546610388710, -0.383264365155076840, -0.383218182741604020, -0.383171999370085780, +-0.383125815040637530, -0.383079629753373900, -0.383033443508412060, -0.382987256305866550, -0.382941068145852940, -0.382894879028486680, -0.382848688953883190, -0.382802497922157980, +-0.382756305933425740, -0.382710112987803500, -0.382663919085406030, -0.382617724226348770, -0.382571528410747150, -0.382525331638716710, -0.382479133910372970, -0.382432935225831380, +-0.382386735585206640, -0.382340534988615870, -0.382294333436173750, -0.382248130927995810, -0.382201927464197570, -0.382155723044894480, -0.382109517670202130, -0.382063311340235130, +-0.382017104055110630, -0.381970895814943420, -0.381924686619848960, -0.381878476469942830, -0.381832265365340430, -0.381786053306157390, -0.381739840292509240, -0.381693626324510650, +-0.381647411402278810, -0.381601195525928470, -0.381554978695575140, -0.381508760911334340, -0.381462542173321650, -0.381416322481652580, -0.381370101836441930, -0.381323880237806830, +-0.381277657685862030, -0.381231434180723080, -0.381185209722505520, -0.381138984311324980, -0.381092757947296970, -0.381046530630537010, -0.381000302361160780, -0.380954073139282980, +-0.380907842965020780, -0.380861611838488990, -0.380815379759803170, -0.380769146729078910, -0.380722912746431770, -0.380676677811977340, -0.380630441925830400, -0.380584205088108200, +-0.380537967298925470, -0.380491728558397860, -0.380445488866640870, -0.380399248223770190, -0.380353006629901350, -0.380306764085150020, -0.380260520589631000, -0.380214276143461430, +-0.380168030746756200, -0.380121784399630900, -0.380075537102201160, -0.380029288854582540, -0.379983039656890730, -0.379936789509240480, -0.379890538411749080, -0.379844286364531320, +-0.379798033367702850, -0.379751779421379330, -0.379705524525676300, -0.379659268680709480, -0.379613011886594520, -0.379566754143446210, -0.379520495451381780, -0.379474235810516200, +-0.379427975220964940, -0.379381713682843790, -0.379335451196268380, -0.379289187761354290, -0.379242923378216410, -0.379196658046972060, -0.379150391767736070, -0.379104124540624140, +-0.379057856365751840, -0.379011587243234920, -0.378965317173189040, -0.378919046155729860, -0.378872774190972210, -0.378826501279033500, -0.378780227420028480, -0.378733952614072940, +-0.378687676861282520, -0.378641400161772890, -0.378595122515659740, -0.378548843923057990, -0.378502564384084970, -0.378456283898855490, -0.378410002467485350, -0.378363720090090170, +-0.378317436766785700, -0.378271152497687610, -0.378224867282911660, -0.378178581122573580, -0.378132294016788160, -0.378086005965672880, -0.378039716969342580, -0.377993427027912940, +-0.377947136141499770, -0.377900844310218750, -0.377854551534185680, -0.377808257813515350, -0.377761963148325160, -0.377715667538730150, -0.377669370984845930, -0.377623073486788250, +-0.377576775044672910, -0.377530475658615640, -0.377484175328732190, -0.377437874055137460, -0.377391571837948860, -0.377345268677281350, -0.377298964573250680, -0.377252659525972590, +-0.377206353535562870, -0.377160046602137200, -0.377113738725810670, -0.377067429906700560, -0.377021120144921900, -0.376974809440590420, -0.376928497793821930, -0.376882185204732210, +-0.376835871673437020, -0.376789557200052140, -0.376743241784692540, -0.376696925427475680, -0.376650608128516470, -0.376604289887930770, -0.376557970705834360, -0.376511650582342980, +-0.376465329517572500, -0.376419007511637870, -0.376372684564656560, -0.376326360676743520, -0.376280035848014560, -0.376233710078585580, -0.376187383368572270, -0.376141055718090480, +-0.376094727127256110, -0.376048397596184080, -0.376002067124991850, -0.375955735713794480, -0.375909403362707730, -0.375863070071847550, -0.375816735841329630, -0.375770400671269880, +-0.375724064561783310, -0.375677727512987390, -0.375631389524997190, -0.375585050597928520, -0.375538710731897150, -0.375492369927019070, -0.375446028183410050, -0.375399685501185960, +-0.375353341880462650, -0.375306997321355200, -0.375260651823981000, -0.375214305388455240, -0.375167958014893670, -0.375121609703412240, -0.375075260454126760, -0.375028910267153180, +-0.374982559142606480, -0.374936207080604160, -0.374889854081261350, -0.374843500144693920, -0.374797145271017710, -0.374750789460348680, -0.374704432712802630, -0.374658075028495520, +-0.374611716407542430, -0.374565356850060820, -0.374518996356165810, -0.374472634925973380, -0.374426272559599320, -0.374379909257159580, -0.374333545018770030, -0.374287179844545850, +-0.374240813734604550, -0.374194446689061160, -0.374148078708031680, -0.374101709791632040, -0.374055339939978080, -0.374008969153185770, -0.373962597431371060, -0.373916224774649030, +-0.373869851183137260, -0.373823476656950870, -0.373777101196205770, -0.373730724801017930, -0.373684347471503250, -0.373637969207777750, -0.373591590009956450, -0.373545209878157040, +-0.373498828812494580, -0.373452446813085090, -0.373406063880044440, -0.373359680013488630, -0.373313295213533620, -0.373266909480295390, -0.373220522813889070, -0.373174135214432270, +-0.373127746682040130, -0.373081357216828610, -0.373034966818913680, -0.372988575488411360, -0.372942183225437600, -0.372895790030107530, -0.372849395902538850, -0.372803000842846680, +-0.372756604851146980, -0.372710207927555770, -0.372663810072189020, -0.372617411285162790, -0.372571011566593000, -0.372524610916595720, -0.372478209335286080, -0.372431806822781710, +-0.372385403379197840, -0.372338999004650450, -0.372292593699255600, -0.372246187463129210, -0.372199780296387390, -0.372153372199145290, -0.372106963171520590, -0.372060553213628460, +-0.372014142325584940, -0.371967730507506090, -0.371921317759507930, -0.371874904081706430, -0.371828489474217700, -0.371782073937156900, -0.371735657470641740, -0.371689240074787490, +-0.371642821749710080, -0.371596402495525670, -0.371549982312350200, -0.371503561200299810, -0.371457139159489690, -0.371410716190037520, -0.371364292292058580, -0.371317867465668920, +-0.371271441710984530, -0.371225015028121610, -0.371178587417196120, -0.371132158878324180, -0.371085729411620990, -0.371039299017204340, -0.370992867695189410, -0.370946435445692280, +-0.370900002268829130, -0.370853568164715930, -0.370807133133468860, -0.370760697175203100, -0.370714260290036400, -0.370667822478084050, -0.370621383739462180, -0.370574944074286820, +-0.370528503482674130, -0.370482061964740150, -0.370435619520601060, -0.370389176150372030, -0.370342731854170940, -0.370296286632113000, -0.370249840484314360, -0.370203393410891090, +-0.370156945411959370, -0.370110496487635280, -0.370064046638034110, -0.370017595863273650, -0.369971144163469210, -0.369924691538736860, -0.369878237989192840, -0.369831783514953220, +-0.369785328116134130, -0.369738871792851700, -0.369692414545221280, -0.369645956373360670, -0.369599497277385170, -0.369553037257410900, -0.369506576313554050, -0.369460114445930740, +-0.369413651654657170, -0.369367187939849460, -0.369320723301622970, -0.369274257740095480, -0.369227791255382350, -0.369181323847599720, -0.369134855516863810, -0.369088386263290770, +-0.369041916086996770, -0.368995444988097940, -0.368948972966709700, -0.368902500022949830, -0.368856026156933750, -0.368809551368777580, -0.368763075658597510, -0.368716599026509770, +-0.368670121472630560, -0.368623642997075170, -0.368577163599961510, -0.368530683281404980, -0.368484202041521710, -0.368437719880427950, -0.368391236798239870, -0.368344752795073730, +-0.368298267871045690, -0.368251782026271120, -0.368205295260867980, -0.368158807574951560, -0.368112318968638160, -0.368065829442043910, -0.368019338995285160, -0.367972847628477980, +-0.367926355341737900, -0.367879862135182760, -0.367833368008927960, -0.367786872963089760, -0.367740376997784340, -0.367693880113127980, -0.367647382309236940, -0.367600883586227440, +-0.367554383944214910, -0.367507883383317250, -0.367461381903649850, -0.367414879505329030, -0.367368376188471010, -0.367321871953192050, -0.367275366799608370, -0.367228860727835500, +-0.367182353737991240, -0.367135845830191150, -0.367089337004551430, -0.367042827261188360, -0.366996316600218250, -0.366949805021757340, -0.366903292525921910, -0.366856779112827380, +-0.366810264782591770, -0.366763749535330530, -0.366717233371159860, -0.366670716290196150, -0.366624198292555600, -0.366577679378354620, -0.366531159547709370, -0.366484638800735450, +-0.366438117137550760, -0.366391594558270750, -0.366345071063011730, -0.366298546651890100, -0.366252021325022050, -0.366205495082523980, -0.366158967924512140, -0.366112439851102090, +-0.366065910862411750, -0.366019380958556630, -0.365972850139653030, -0.365926318405817350, -0.365879785757165840, -0.365833252193814910, -0.365786717715880010, -0.365740182323479100, +-0.365693646016727770, -0.365647108795742300, -0.365600570660639110, -0.365554031611534440, -0.365507491648544740, -0.365460950771786250, -0.365414408981374620, -0.365367866277427730, +-0.365321322660061230, -0.365274778129391410, -0.365228232685534620, -0.365181686328607260, -0.365135139058725690, -0.365088590876005430, -0.365042041780564540, -0.364995491772518550, +-0.364948940851983820, -0.364902389019076730, -0.364855836273913710, -0.364809282616611050, -0.364762728047285210, -0.364716172566051710, -0.364669616173028620, -0.364623058868331460, +-0.364576500652076640, -0.364529941524380620, -0.364483381485359750, -0.364436820535130380, -0.364390258673808140, -0.364343695901511110, -0.364297132218354860, -0.364250567624455730, +-0.364204002119930200, -0.364157435704894670, -0.364110868379465550, -0.364064300143759230, -0.364017730997891360, -0.363971160941979950, -0.363924589976140690, -0.363878018100489920, +-0.363831445315144160, -0.363784871620219720, -0.363738297015833160, -0.363691721502100830, -0.363645145079138370, -0.363598567747063840, -0.363551989505992930, -0.363505410356042060, +-0.363458830297327620, -0.363412249329966130, -0.363365667454074000, -0.363319084669767760, -0.363272500977162900, -0.363225916376377690, -0.363179330867527630, -0.363132744450729240, +-0.363086157126099040, -0.363039568893753440, -0.362992979753808900, -0.362946389706381050, -0.362899798751588120, -0.362853206889545640, -0.362806614120370190, -0.362760020444178160, +-0.362713425861086070, -0.362666830371210450, -0.362620233974667750, -0.362573636671573660, -0.362527038462046260, -0.362480439346201280, -0.362433839324155180, -0.362387238396024550, +-0.362340636561925780, -0.362294033821975390, -0.362247430176289130, -0.362200825624985120, -0.362154220168179050, -0.362107613805987380, -0.362061006538526740, -0.362014398365913540, +-0.361967789288264400, -0.361921179305695730, -0.361874568418323270, -0.361827956626265270, -0.361781343929637340, -0.361734730328556080, -0.361688115823137980, -0.361641500413499630, +-0.361594884099757490, -0.361548266882027290, -0.361501648760427290, -0.361455029735073150, -0.361408409806081410, -0.361361788973568690, -0.361315167237651500, -0.361268544598446370, +-0.361221921056069870, -0.361175296610637740, -0.361128671262268220, -0.361082045011076990, -0.361035417857180680, -0.360988789800695820, -0.360942160841738970, -0.360895530980426760, +-0.360848900216875660, -0.360802268551201510, -0.360755635983522560, -0.360709002513954440, -0.360662368142613880, -0.360615732869617340, -0.360569096695081530, -0.360522459619122940, +-0.360475821641858210, -0.360429182763403130, -0.360382542983875900, -0.360335902303392300, -0.360289260722068900, -0.360242618240022410, -0.360195974857369370, -0.360149330574226380, +-0.360102685390709220, -0.360056039306936190, -0.360009392323023090, -0.359962744439086490, -0.359916095655243020, -0.359869445971609300, -0.359822795388301970, -0.359776143905437720, +-0.359729491523132220, -0.359682838241503820, -0.359636184060668330, -0.359589528980742370, -0.359542873001842570, -0.359496216124085610, -0.359449558347588130, -0.359402899672465910, +-0.359356240098837270, -0.359309579626818030, -0.359262918256524840, -0.359216255988074380, -0.359169592821583230, -0.359122928757168110, -0.359076263794945730, -0.359029597935031810, +-0.358982931177544710, -0.358936263522600270, -0.358889594970315250, -0.358842925520806160, -0.358796255174189780, -0.358749583930582820, -0.358702911790101000, -0.358656238752862730, +-0.358609564818983930, -0.358562889988581160, -0.358516214261771160, -0.358469537638670680, -0.358422860119396280, -0.358376181704064820, -0.358329502392791990, -0.358282822185696290, +-0.358236141082893530, -0.358189459084500390, -0.358142776190633620, -0.358096092401409880, -0.358049407716945930, -0.358002722137358510, -0.357956035662763410, -0.357909348293279030, +-0.357862660029021280, -0.357815970870106910, -0.357769280816652600, -0.357722589868775090, -0.357675898026591110, -0.357629205290217410, -0.357582511659769840, -0.357535817135366810, +-0.357489121717124270, -0.357442425405158910, -0.357395728199587480, -0.357349030100526710, -0.357302331108093400, -0.357255631222403390, -0.357208930443575160, -0.357162228771724600, +-0.357115526206968510, -0.357068822749423530, -0.357022118399206560, -0.356975413156434270, -0.356928707021223420, -0.356881999993690020, -0.356835292073952430, -0.356788583262126590, +-0.356741873558329310, -0.356695162962677340, -0.356648451475287450, -0.356601739096276460, -0.356555025825760260, -0.356508311663857380, -0.356461596610683660, -0.356414880666355960, +-0.356368163830991120, -0.356321446104705790, -0.356274727487616900, -0.356228007979841170, -0.356181287581494590, -0.356134566292695630, -0.356087844113560260, -0.356041121044205270, +-0.355994397084747450, -0.355947672235303660, -0.355900946495990690, -0.355854219866924500, -0.355807492348223620, -0.355760763940004000, -0.355714034642382490, -0.355667304455475900, +-0.355620573379401010, -0.355573841414274730, -0.355527108560213800, -0.355480374817334300, -0.355433640185754680, -0.355386904665590970, -0.355340168256959970, -0.355293430959978560, +-0.355246692774763620, -0.355199953701431930, -0.355153213740100340, -0.355106472890884870, -0.355059731153904050, -0.355012988529273930, -0.354966245017111330, -0.354919500617533080, +-0.354872755330656100, -0.354826009156597230, -0.354779262095473390, -0.354732514147400480, -0.354685765312497180, -0.354639015590879460, -0.354592264982664160, -0.354545513487968260, +-0.354498761106908530, -0.354452007839601900, -0.354405253686164430, -0.354358498646714650, -0.354311742721368620, -0.354264985910243250, -0.354218228213455390, -0.354171469631122000, +-0.354124710163359890, -0.354077949810286060, -0.354031188572016490, -0.353984426448669790, -0.353937663440361980, -0.353890899547210090, -0.353844134769330910, -0.353797369106841340, +-0.353750602559858410, -0.353703835128498120, -0.353657066812879120, -0.353610297613117410, -0.353563527529329960, -0.353516756561633730, -0.353469984710145570, -0.353423211974982440, +-0.353376438356261310, -0.353329663854098200, -0.353282888468611830, -0.353236112199918180, -0.353189335048134270, -0.353142557013377050, -0.353095778095763420, -0.353048998295410370, +-0.353002217612433940, -0.352955436046952840, -0.352908653599083130, -0.352861870268941780, -0.352815086056645740, -0.352768300962312040, -0.352721514986057530, -0.352674728127999270, +-0.352627940388253350, -0.352581151766938440, -0.352534362264170560, -0.352487571880066850, -0.352440780614744210, -0.352393988468319600, -0.352347195440910030, -0.352300401532631650, +-0.352253606743603060, -0.352206811073940470, -0.352160014523760830, -0.352113217093181220, -0.352066418782318540, -0.352019619591289750, -0.351972819520211980, -0.351926018569202140, +-0.351879216738376410, -0.351832414027853540, -0.351785610437749530, -0.351738805968181580, -0.351692000619266590, -0.351645194391121570, -0.351598387283863560, -0.351551579297608770, +-0.351504770432475850, -0.351457960688581040, -0.351411150066041340, -0.351364338564973730, -0.351317526185495280, -0.351270712927722990, -0.351223898791773960, -0.351177083777764300, +-0.351130267885812810, -0.351083451116035620, -0.351036633468549850, -0.350989814943472420, -0.350942995540920510, -0.350896175261011130, -0.350849354103860420, -0.350802532069587170, +-0.350755709158307620, -0.350708885370138780, -0.350662060705197730, -0.350615235163601550, -0.350568408745467240, -0.350521581450911950, -0.350474753280051840, -0.350427924233005670, +-0.350381094309889730, -0.350334263510821030, -0.350287431835916710, -0.350240599285293770, -0.350193765859069310, -0.350146931557359650, -0.350100096380283440, -0.350053260327957030, +-0.350006423400497480, -0.349959585598021870, -0.349912746920647280, -0.349865907368490820, -0.349819066941669590, -0.349772225640299860, -0.349725383464500440, -0.349678540414387510, +-0.349631696490078250, -0.349584851691689740, -0.349538006019339100, -0.349491159473143460, -0.349444312053219070, -0.349397463759684780, -0.349350614592656760, -0.349303764552252260, +-0.349256913638588300, -0.349210061851782110, -0.349163209191950710, -0.349116355659211340, -0.349069501253681020, -0.349022645975476160, -0.348975789824715550, -0.348928932801515380, +-0.348882074905992930, -0.348835216138265290, -0.348788356498449640, -0.348741495986663040, -0.348694634603021910, -0.348647772347644990, -0.348600909220648680, -0.348554045222150060, +-0.348507180352266350, -0.348460314611114650, -0.348413447998812190, -0.348366580515476140, -0.348319712161222760, -0.348272842936171000, -0.348225972840437050, -0.348179101874138200, +-0.348132230037391630, -0.348085357330314430, -0.348038483753023880, -0.347991609305636270, -0.347944733988270470, -0.347897857801042820, -0.347850980744070560, -0.347804102817470820, +-0.347757224021360830, -0.347710344355857790, -0.347663463821078880, -0.347616582417140500, -0.347569700144161440, -0.347522817002258180, -0.347475932991547890, -0.347429048112147700, +-0.347382162364174960, -0.347335275747746750, -0.347288388262979590, -0.347241499909992260, -0.347194610688901170, -0.347147720599823570, -0.347100829642876640, -0.347053937818177670, +-0.347007045125843790, -0.346960151565992360, -0.346913257138739720, -0.346866361844204770, -0.346819465682503880, -0.346772568653754390, -0.346725670758073420, -0.346678771995578280, +-0.346631872366386210, -0.346584971870613660, -0.346538070508379480, -0.346491168279800140, -0.346444265184992830, -0.346397361224074940, -0.346350456397163610, -0.346303550704376130, +-0.346256644145829800, -0.346209736721641790, -0.346162828431928690, -0.346115919276809290, -0.346069009256400110, -0.346022098370818430, -0.345975186620181510, -0.345928274004606570, +-0.345881360524210980, -0.345834446179111190, -0.345787530969426050, -0.345740614895272140, -0.345693697956766690, -0.345646780154026940, -0.345599861487170260, -0.345552941956313970, +-0.345506021561575280, -0.345459100303070750, -0.345412178180919240, -0.345365255195237310, -0.345318331346142260, -0.345271406633751390, -0.345224481058181990, -0.345177554619551350, +-0.345130627317976000, -0.345083699153574950, -0.345036770126464660, -0.344989840236762440, -0.344942909484585560, -0.344895977870051500, -0.344849045393277430, -0.344802112054380770, +-0.344755177853477980, -0.344708242790688070, -0.344661306866127560, -0.344614370079913800, -0.344567432432164140, -0.344520493922995830, -0.344473554552526320, -0.344426614320872130, +-0.344379673228152160, -0.344332731274483050, -0.344285788459982140, -0.344238844784766740, -0.344191900248954190, -0.344144954852661940, -0.344098008596007250, -0.344051061479106750, +-0.344004113502079430, -0.343957164665041780, -0.343910214968111250, -0.343863264411405190, -0.343816312995041010, -0.343769360719136000, -0.343722407583806730, -0.343675453589172290, +-0.343628498735349230, -0.343581543022454920, -0.343534586450606750, -0.343487629019922140, -0.343440670730518430, -0.343393711582513030, -0.343346751576022510, -0.343299790711166010, +-0.343252828988059980, -0.343205866406821880, -0.343158902967569120, -0.343111938670419110, -0.343064973515489260, -0.343018007502896960, -0.342971040632758790, -0.342924072905193890, +-0.342877104320318820, -0.342830134878250980, -0.342783164579107790, -0.342736193423006650, -0.342689221410065080, -0.342642248540400430, -0.342595274814129320, -0.342548300231370890, +-0.342501324792241710, -0.342454348496859180, -0.342407371345340830, -0.342360393337803990, -0.342313414474366200, -0.342266434755144010, -0.342219454180256620, -0.342172472749820540, +-0.342125490463953350, -0.342078507322772400, -0.342031523326395140, -0.341984538474939090, -0.341937552768521720, -0.341890566207259660, -0.341843578791271970, -0.341796590520675350, +-0.341749601395587240, -0.341702611416125120, -0.341655620582406510, -0.341608628894548790, -0.341561636352668730, -0.341514642956885380, -0.341467648707315440, -0.341420653604076360, +-0.341373657647285670, -0.341326660837060760, -0.341279663173519270, -0.341232664656778590, -0.341185665286955490, -0.341138665064168960, -0.341091663988535800, -0.341044662060173530, +-0.340997659279199560, -0.340950655645731460, -0.340903651159886690, -0.340856645821781990, -0.340809639631536490, -0.340762632589266870, -0.340715624695090700, -0.340668615949125450, +-0.340621606351488690, -0.340574595902297880, -0.340527584601670650, -0.340480572449723570, -0.340433559446575880, -0.340386545592344330, -0.340339530887146360, -0.340292515331099610, +-0.340245498924321540, -0.340198481666929790, -0.340151463559041740, -0.340104444600774270, -0.340057424792246490, -0.340010404133575140, -0.339963382624877800, -0.339916360266272030, +-0.339869337057875310, -0.339822312999805250, -0.339775288092179440, -0.339728262335114550, -0.339681235728729880, -0.339634208273142060, -0.339587179968468770, -0.339540150814827520, +-0.339493120812335900, -0.339446089961111420, -0.339399058261270930, -0.339352025712933660, -0.339304992316216250, -0.339257958071236430, -0.339210922978111670, -0.339163887036959600, +-0.339116850247897840, -0.339069812611043910, -0.339022774126514660, -0.338975734794429330, -0.338928694614904600, -0.338881653588058160, -0.338834611714007580, -0.338787568992870490, +-0.338740525424764460, -0.338693481009806290, -0.338646435748115260, -0.338599389639808120, -0.338552342685002510, -0.338505294883816090, -0.338458246236366390, -0.338411196742771040, +-0.338364146403147770, -0.338317095217613270, -0.338270043186286840, -0.338222990309285320, -0.338175936586726340, -0.338128882018727480, -0.338081826605406480, -0.338034770346880840, +-0.337987713243267480, -0.337940655294685700, -0.337893596501252220, -0.337846536863084800, -0.337799476380301000, -0.337752415053018560, -0.337705352881355060, -0.337658289865428120, +-0.337611226005354700, -0.337564161301254000, -0.337517095753242900, -0.337470029361439110, -0.337422962125960180, -0.337375894046923920, -0.337328825124447840, -0.337281755358649740, +-0.337234684749646460, -0.337187613297557250, -0.337140541002499020, -0.337093467864589440, -0.337046393883946190, -0.336999319060686920, -0.336952243394929410, -0.336905166886791230, +-0.336858089536389350, -0.336811011343843060, -0.336763932309269260, -0.336716852432785600, -0.336669771714509850, -0.336622690154559650, -0.336575607753052670, -0.336528524510105900, +-0.336481440425838660, -0.336434355500367770, -0.336387269733811060, -0.336340183126286110, -0.336293095677910710, -0.336246007388802610, -0.336198918259079490, -0.336151828288858200, +-0.336104737478258200, -0.336057645827396330, -0.336010553336390410, -0.335963460005358040, -0.335916365834417030, -0.335869270823685120, -0.335822174973279210, -0.335775078283318710, +-0.335727980753920460, -0.335680882385202270, -0.335633783177281930, -0.335586683130277060, -0.335539582244305520, -0.335492480519485050, -0.335445377955932490, -0.335398274553767360, +-0.335351170313106520, -0.335304065234067750, -0.335256959316768850, -0.335209852561327510, -0.335162744967861580, -0.335115636536487960, -0.335068527267326060, -0.335021417160492830, +-0.334974306216106080, -0.334927194434283540, -0.334880081815143000, -0.334832968358802330, -0.334785854065379140, -0.334738738934990570, -0.334691622967755950, -0.334644506163792270, +-0.334597388523217300, -0.334550270046148900, -0.334503150732704810, -0.334456030583002830, -0.334408909597160800, -0.334361787775295630, -0.334314665117526890, -0.334267541623971430, +-0.334220417294747110, -0.334173292129971770, -0.334126166129763200, -0.334079039294239210, -0.334031911623517640, -0.333984783117715400, -0.333937653776952110, -0.333890523601344640, +-0.333843392591010870, -0.333796260746068610, -0.333749128066635700, -0.333701994552830010, -0.333654860204768420, -0.333607725022570580, -0.333560589006353440, -0.333513452156234790, +-0.333466314472332490, -0.333419175954764450, -0.333372036603648450, -0.333324896419102350, -0.333277755401243210, -0.333230613550190460, -0.333183470866061200, -0.333136327348973300, +-0.333089182999044550, -0.333042037816392860, -0.332994891801136060, -0.332947744953391190, -0.332900597273277810, -0.332853448760912880, -0.332806299416414380, -0.332759149239900130, +-0.332711998231488000, -0.332664846391295900, -0.332617693719441660, -0.332570540216042380, -0.332523385881217550, -0.332476230715084250, -0.332429074717760400, -0.332381917889363830, +-0.332334760230012460, -0.332287601739824250, -0.332240442418916150, -0.332193282267407800, -0.332146121285416260, -0.332098959473059400, -0.332051796830455100, -0.332004633357721350, +-0.331957469054976030, -0.331910303922337000, -0.331863137959921390, -0.331815971167848780, -0.331768803546236220, -0.331721635095201690, -0.331674465814863040, -0.331627295705338280, +-0.331580124766745200, -0.331532952999201880, -0.331485780402825280, -0.331438606977735080, -0.331391432724048420, -0.331344257641883130, -0.331297081731357190, -0.331249904992588550, +-0.331202727425695180, -0.331155549030794920, -0.331108369808005010, -0.331061189757445030, -0.331014008879232050, -0.330966827173484020, -0.330919644640318920, -0.330872461279854760, +-0.330825277092209440, -0.330778092077500030, -0.330730906235846280, -0.330683719567365250, -0.330636532072174920, -0.330589343750393280, -0.330542154602138260, -0.330494964627527870, +-0.330447773826680060, -0.330400582199711970, -0.330353389746743280, -0.330306196467891060, -0.330259002363273440, -0.330211807433008260, -0.330164611677213560, -0.330117415096007340, +-0.330070217689506730, -0.330023019457831410, -0.329975820401098570, -0.329928620519426170, -0.329881419812932230, -0.329834218281734700, -0.329787015925951670, -0.329739812745701080, +-0.329692608741100120, -0.329645403912268490, -0.329598198259323350, -0.329550991782382670, -0.329503784481564590, -0.329456576356987000, -0.329409367408767970, -0.329362157637024640, +-0.329314947041876800, -0.329267735623441640, -0.329220523381837050, -0.329173310317181220, -0.329126096429592120, -0.329078881719187700, -0.329031666186086150, -0.328984449830404590, +-0.328937232652262710, -0.328890014651777750, -0.328842795829067780, -0.328795576184250820, -0.328748355717444870, -0.328701134428768080, -0.328653912318338460, -0.328606689386273190, +-0.328559465632692060, -0.328512241057712260, -0.328465015661451860, -0.328417789444028880, -0.328370562405561510, -0.328323334546167630, -0.328276105865965510, -0.328228876365072250, +-0.328181646043607610, -0.328134414901688880, -0.328087182939434120, -0.328039950156961410, -0.327992716554388770, -0.327945482131834390, -0.327898246889415430, -0.327851010827251770, +-0.327803773945460510, -0.327756536244159850, -0.327709297723467800, -0.327662058383502540, -0.327614818224382150, -0.327567577246224710, -0.327520335449147440, -0.327473092833270200, +-0.327425849398710280, -0.327378605145585640, -0.327331360074014590, -0.327284114184115070, -0.327236867476005280, -0.327189619949802500, -0.327142371605626480, -0.327095122443594570, +-0.327047872463824830, -0.327000621666435400, -0.326953370051544400, -0.326906117619270020, -0.326858864369730330, -0.326811610303042620, -0.326764355419326750, -0.326717099718700000, +-0.326669843201280450, -0.326622585867186340, -0.326575327716535750, -0.326528068749446840, -0.326480808966036930, -0.326433548366425800, -0.326386286950730850, -0.326339024719070170, +-0.326291761671561880, -0.326244497808324260, -0.326197233129475350, -0.326149967635133380, -0.326102701325415630, -0.326055434200441970, -0.326008166260329750, -0.325960897505197080, +-0.325913627935162150, -0.325866357550343210, -0.325819086350858320, -0.325771814336824890, -0.325724541508362770, -0.325677267865589310, -0.325629993408622700, -0.325582718137581050, +-0.325535442052582670, -0.325488165153745620, -0.325440887441188210, -0.325393608915028550, -0.325346329575384060, -0.325299049422374530, -0.325251768456117420, -0.325204486676730850, +-0.325157204084333130, -0.325109920679042370, -0.325062636460976770, -0.325015351430253780, -0.324968065586993260, -0.324920778931312550, -0.324873491463329890, -0.324826203183163520, +-0.324778914090931630, -0.324731624186752440, -0.324684333470744210, -0.324637041943024280, -0.324589749603712620, -0.324542456452926560, -0.324495162490784420, -0.324447867717404300, +-0.324400572132904570, -0.324353275737403360, -0.324305978531018170, -0.324258680513868800, -0.324211381686072770, -0.324164082047748330, -0.324116781599013640, -0.324069480339987000, +-0.324022178270786660, -0.323974875391530860, -0.323927571702337050, -0.323880267203325130, -0.323832961894612580, -0.323785655776317570, -0.323738348848558450, -0.323691041111453470, +-0.323643732565120910, -0.323596423209678130, -0.323549113045245140, -0.323501802071939400, -0.323454490289879100, -0.323407177699182650, -0.323359864299968210, -0.323312550092354100, +-0.323265235076458660, -0.323217919252399230, -0.323170602620295900, -0.323123285180266010, -0.323075966932427960, -0.323028647876899940, -0.322981328013800310, -0.322934007343247400, +-0.322886685865358620, -0.322839363580253950, -0.322792040488050880, -0.322744716588867660, -0.322697391882822700, -0.322650066370034290, -0.322602740050620670, -0.322555412924700190, +-0.322508084992391200, -0.322460756253811150, -0.322413426709080080, -0.322366096358315420, -0.322318765201635490, -0.322271433239158690, -0.322224100471003310, -0.322176766897287640, +-0.322129432518129200, -0.322082097333648070, -0.322034761343961700, -0.321987424549188380, -0.321940086949446540, -0.321892748544854450, -0.321845409335530520, -0.321798069321593050, +-0.321750728503159560, -0.321703386880350110, -0.321656044453282160, -0.321608701222074130, -0.321561357186844310, -0.321514012347711150, -0.321466666704792960, -0.321419320258207190, +-0.321371973008074020, -0.321324624954510920, -0.321277276097636230, -0.321229926437568370, -0.321182575974425680, -0.321135224708326560, -0.321087872639389370, -0.321040519767731680, +-0.320993166093473500, -0.320945811616732410, -0.320898456337626810, -0.320851100256275060, -0.320803743372795550, -0.320756385687306690, -0.320709027199926000, -0.320661667910773610, +-0.320614307819967080, -0.320566946927624720, -0.320519585233865030, -0.320472222738806380, -0.320424859442567160, -0.320377495345265770, -0.320330130447019860, -0.320282764747949420, +-0.320235398248172100, -0.320188030947806230, -0.320140662846970350, -0.320093293945782730, -0.320045924244361960, -0.319998553742825490, -0.319951182441293500, -0.319903810339883520, +-0.319856437438714060, -0.319809063737903470, -0.319761689237570260, -0.319714313937832780, -0.319666937838809560, -0.319619560940618940, -0.319572183243378600, -0.319524804747208680, +-0.319477425452226740, -0.319430045358551180, -0.319382664466300540, -0.319335282775593250, -0.319287900286547740, -0.319240516999281690, -0.319193132913915100, -0.319145748030565720, +-0.319098362349352020, -0.319050975870392330, -0.319003588593805230, -0.318956200519709190, -0.318908811648222600, -0.318861421979463160, -0.318814031513551030, -0.318766640250603810, +-0.318719248190739990, -0.318671855334078050, -0.318624461680736440, -0.318577067230833680, -0.318529671984487450, -0.318482275941817830, -0.318434879102942550, -0.318387481467980070, +-0.318340083037048920, -0.318292683810267540, -0.318245283787754460, -0.318197882969628140, -0.318150481356006260, -0.318103078947009070, -0.318055675742754170, -0.318008271743360050, +-0.317960866948945260, -0.317913461359628340, -0.317866054975527720, -0.317818647796761110, -0.317771239823448790, -0.317723831055708340, -0.317676421493658270, -0.317629011137417210, +-0.317581599987103560, -0.317534188042835950, -0.317486775304732850, -0.317439361772911990, -0.317391947447493550, -0.317344532328595270, -0.317297116416335620, -0.317249699710833220, +-0.317202282212206590, -0.317154863920574180, -0.317107444836053800, -0.317060024958765670, -0.317012604288827440, -0.316965182826357720, -0.316917760571475080, -0.316870337524298000, +-0.316822913684945080, -0.316775489053534860, -0.316728063630185960, -0.316680637415016010, -0.316633210408145350, -0.316585782609691610, -0.316538354019773480, -0.316490924638509420, +-0.316443494466018050, -0.316396063502418000, -0.316348631747826900, -0.316301199202365050, -0.316253765866150230, -0.316206331739300960, -0.316158896821935930, -0.316111461114173600, +-0.316064024616132640, -0.316016587327931590, -0.315969149249688270, -0.315921710381522890, -0.315874270723553230, -0.315826830275897920, -0.315779389038675530, -0.315731947012004630, +-0.315684504196003910, -0.315637060590791050, -0.315589616196486460, -0.315542171013207750, -0.315494725041073620, -0.315447278280202690, -0.315399830730713590, -0.315352382392724890, +-0.315304933266355230, -0.315257483351722380, -0.315210032648946700, -0.315162581158145880, -0.315115128879438660, -0.315067675812943590, -0.315020221958779380, -0.314972767317064580, +-0.314925311887917000, -0.314877855671457040, -0.314830398667802380, -0.314782940877071760, -0.314735482299383750, -0.314688022934857090, -0.314640562783610360, -0.314593101845762170, +-0.314545640121430440, -0.314498177610735450, -0.314450714313794950, -0.314403250230727740, -0.314355785361652370, -0.314308319706687540, -0.314260853265951930, -0.314213386039563340, +-0.314165918027642100, -0.314118449230306070, -0.314070979647673940, -0.314023509279864330, -0.313976038126995980, -0.313928566189187520, -0.313881093466557680, -0.313833619959224210, +-0.313786145667307560, -0.313738670590925530, -0.313691194730196850, -0.313643718085240160, -0.313596240656174200, -0.313548762443117580, -0.313501283446189110, -0.313453803665506570, +-0.313406323101190380, -0.313358841753358370, -0.313311359622129250, -0.313263876707621740, -0.313216393009954520, -0.313168908529246340, -0.313121423265615870, -0.313073937219181030, +-0.313026450390062160, -0.312978962778377170, -0.312931474384244790, -0.312883985207783710, -0.312836495249112670, -0.312789004508350400, -0.312741512985614760, -0.312694020681026200, +-0.312646527594702570, -0.312599033726762620, -0.312551539077325080, -0.312504043646508690, -0.312456547434432240, -0.312409050441214360, -0.312361552666973070, -0.312314054111828670, +-0.312266554775899210, -0.312219054659303330, -0.312171553762159770, -0.312124052084587380, -0.312076549626704840, -0.312029046388630100, -0.311981542370483590, -0.311934037572383190, +-0.311886531994447770, -0.311839025636795940, -0.311791518499546560, -0.311744010582818420, -0.311696501886730200, -0.311648992411399930, -0.311601482156948000, -0.311553971123492370, +-0.311506459311151840, -0.311458946720045150, -0.311411433350291090, -0.311363919202008400, -0.311316404275315100, -0.311268888570331640, -0.311221372087175980, -0.311173854825966880, +-0.311126336786823110, -0.311078817969863530, -0.311031298375206880, -0.310983778002972000, -0.310936256853276800, -0.310888734926241860, -0.310841212221985020, -0.310793688740625180, +-0.310746164482281150, -0.310698639447071660, -0.310651113635115610, -0.310603587046531740, -0.310556059681438120, -0.310508531539955110, -0.310461002622200830, -0.310413472928294020, +-0.310365942458353530, -0.310318411212498200, -0.310270879190846840, -0.310223346393518280, -0.310175812820630500, -0.310128278472304010, -0.310080743348656870, -0.310033207449807830, +-0.309985670775875800, -0.309938133326979610, -0.309890595103238020, -0.309843056104769140, -0.309795516331693500, -0.309747975784129050, -0.309700434462194640, -0.309652892366009120, +-0.309605349495691410, -0.309557805851360280, -0.309510261433134700, -0.309462716241132580, -0.309415170275474550, -0.309367623536278560, -0.309320076023663510, -0.309272527737748270, +-0.309224978678651730, -0.309177428846492740, -0.309129878241389320, -0.309082326863462100, -0.309034774712828970, -0.308987221789608970, -0.308939668093920930, -0.308892113625883650, +-0.308844558385616140, -0.308797002373237210, -0.308749445588864970, -0.308701888032619940, -0.308654329704620150, -0.308606770604984590, -0.308559210733832080, -0.308511650091281560, +-0.308464088677451900, -0.308416526492461150, -0.308368963536429950, -0.308321399809476370, -0.308273835311719260, -0.308226270043277570, -0.308178704004270170, -0.308131137194816050, +-0.308083569615034080, -0.308036001265042330, -0.307988432144961410, -0.307940862254909460, -0.307893291595005340, -0.307845720165367990, -0.307798147966116320, -0.307750574997369240, +-0.307703001259245770, -0.307655426751863970, -0.307607851475344420, -0.307560275429805240, -0.307512698615365400, -0.307465121032143800, -0.307417542680259390, -0.307369963559831150, +-0.307322383670977970, -0.307274803013817990, -0.307227221588471880, -0.307179639395057660, -0.307132056433694340, -0.307084472704500950, -0.307036888207596340, -0.306989302943099510, +-0.306941716911128540, -0.306894130111804160, -0.306846542545244460, -0.306798954211568390, -0.306751365110894960, -0.306703775243343080, -0.306656184609031820, -0.306608593208080040, +-0.306561001040605960, -0.306513408106730220, -0.306465814406570950, -0.306418219940247150, -0.306370624707877790, -0.306323028709581890, -0.306275431945478400, -0.306227834415685460, +-0.306180236120323800, -0.306132637059511600, -0.306085037233367770, -0.306037436642011330, -0.305989835285561280, -0.305942233164136710, -0.305894630277856520, -0.305847026626838880, +-0.305799422211204600, -0.305751817031071680, -0.305704211086559260, -0.305656604377786300, -0.305608996904871810, -0.305561388667934860, -0.305513779667093590, -0.305466169902468720, +-0.305418559374178440, -0.305370948082341720, -0.305323336027077620, -0.305275723208505210, -0.305228109626743520, -0.305180495281911550, -0.305132880174127430, -0.305085264303512020, +-0.305037647670183430, -0.304990030274260690, -0.304942412115862930, -0.304894793195109090, -0.304847173512118320, -0.304799553067009570, -0.304751931859901130, -0.304704309890913680, +-0.304656687160165420, -0.304609063667775510, -0.304561439413862930, -0.304513814398546690, -0.304466188621945970, -0.304418562084179780, -0.304370934785366310, -0.304323306725626410, +-0.304275677905078150, -0.304228048323840760, -0.304180417982033210, -0.304132786879774690, -0.304085155017184140, -0.304037522394379870, -0.303989889011482610, -0.303942254868610650, +-0.303894619965883070, -0.303846984303418940, -0.303799347881337330, -0.303751710699757370, -0.303704072758798130, -0.303656434058577840, -0.303608794599217360, -0.303561154380834810, +-0.303513513403549430, -0.303465871667480290, -0.303418229172746410, -0.303370585919467030, -0.303322941907760270, -0.303275297137747040, -0.303227651609545570, -0.303180005323274940, +-0.303132358279054330, -0.303084710477002810, -0.303037061917239500, -0.302989412599883550, -0.302941762525053230, -0.302894111692869340, -0.302846460103450180, -0.302798807756914870, +-0.302751154653382480, -0.302703500792972260, -0.302655846175803320, -0.302608190801993860, -0.302560534671664830, -0.302512877784934410, -0.302465220141921790, -0.302417561742746140, +-0.302369902587526610, -0.302322242676382300, -0.302274582009432360, -0.302226920586795180, -0.302179258408591500, -0.302131595474939670, -0.302083931785958880, -0.302036267341768250, +-0.301988602142486910, -0.301940936188234090, -0.301893269479128980, -0.301845602015289820, -0.301797933796837450, -0.301750264823890280, -0.301702595096567490, -0.301654924614988160, +-0.301607253379271520, -0.301559581389536810, -0.301511908645903100, -0.301464235148488750, -0.301416560897414700, -0.301368885892799200, -0.301321210134761540, -0.301273533623420800, +-0.301225856358896260, -0.301178178341307110, -0.301130499570771590, -0.301082820047410720, -0.301035139771342830, -0.300987458742687010, -0.300939776961562600, -0.300892094428088730, +-0.300844411142384640, -0.300796727104569510, -0.300749042314761680, -0.300701356773082130, -0.300653670479649190, -0.300605983434582060, -0.300558295638000020, -0.300510607090022200, +-0.300462917790767840, -0.300415227740355340, -0.300367536938905670, -0.300319845386537110, -0.300272153083368960, -0.300224460029520410, -0.300176766225110750, -0.300129071670259150, +-0.300081376365084860, -0.300033680309706290, -0.299985983504244320, -0.299938285948817440, -0.299890587643544870, -0.299842888588545800, -0.299795188783939510, -0.299747488229845260, +-0.299699786926381440, -0.299652084873668960, -0.299604382071826330, -0.299556678520972730, -0.299508974221227410, -0.299461269172709650, -0.299413563375538700, -0.299365856829833910, +-0.299318149535713560, -0.299270441493298730, -0.299222732702707770, -0.299175023164060030, -0.299127312877474680, -0.299079601843071090, -0.299031890060968420, -0.298984177531286090, +-0.298936464254142440, -0.298888750229658500, -0.298841035457952650, -0.298793319939144260, -0.298745603673352570, -0.298697886660696800, -0.298650168901296360, -0.298602450395270500, +-0.298554731142737670, -0.298507011143818890, -0.298459290398632500, -0.298411568907297970, -0.298363846669934480, -0.298316123686661380, -0.298268399957597960, -0.298220675482862680, +-0.298172950262576560, -0.298125224296858060, -0.298077497585826520, -0.298029770129601250, -0.297982041928301580, -0.297934312982046760, -0.297886583290956130, -0.297838852855148220, +-0.297791121674744030, -0.297743389749862030, -0.297695657080621570, -0.297647923667141990, -0.297600189509542590, -0.297552454607942660, -0.297504718962460780, -0.297456982573217950, +-0.297409245440332700, -0.297361507563924320, -0.297313768944112160, -0.297266029581015560, -0.297218289474753870, -0.297170548625446510, -0.297122807033211920, -0.297075064698171130, +-0.297027321620442710, -0.296979577800145940, -0.296931833237400300, -0.296884087932325010, -0.296836341885039550, -0.296788595095662360, -0.296740847564314510, -0.296693099291114590, +-0.296645350276181890, -0.296597600519635800, -0.296549850021595730, -0.296502098782181030, -0.296454346801511110, -0.296406594079704430, -0.296358840616882170, -0.296311086413162780, +-0.296263331468665680, -0.296215575783510210, -0.296167819357815830, -0.296120062191701890, -0.296072304285286970, -0.296024545638692130, -0.295976786252035940, -0.295929026125437760, +-0.295881265259017030, -0.295833503652893130, -0.295785741307185490, -0.295737978222013480, -0.295690214397496490, -0.295642449833753150, -0.295594684530904540, -0.295546918489069220, +-0.295499151708366600, -0.295451384188916090, -0.295403615930837140, -0.295355846934249100, -0.295308077199270660, -0.295260306726022830, -0.295212535514624230, -0.295164763565194330, +-0.295116990877852480, -0.295069217452718190, -0.295021443289910870, -0.294973668389549860, -0.294925892751753900, -0.294878116376644070, -0.294830339264338880, -0.294782561414957900, +-0.294734782828620480, -0.294687003505446130, -0.294639223445554270, -0.294591442649063510, -0.294543661116094980, -0.294495878846767310, -0.294448095841199910, -0.294400312099512280, +-0.294352527621823900, -0.294304742408254160, -0.294256956458922580, -0.294209169773947790, -0.294161382353450910, -0.294113594197550510, -0.294065805306366220, -0.294018015680017340, +-0.293970225318623490, -0.293922434222304020, -0.293874642391177670, -0.293826849825365500, -0.293779056524986260, -0.293731262490159350, -0.293683467721004290, -0.293635672217640530, +-0.293587875980187650, -0.293540079008765050, -0.293492281303491360, -0.293444482864487880, -0.293396683691873160, -0.293348883785766790, -0.293301083146288170, -0.293253281773556810, +-0.293205479667692280, -0.293157676828813160, -0.293109873257040740, -0.293062068952493650, -0.293014263915291340, -0.292966458145553440, -0.292918651643399310, -0.292870844408948620, +-0.292823036442320770, -0.292775227743635350, -0.292727418313011020, -0.292679608150568980, -0.292631797256427960, -0.292583985630707370, -0.292536173273526880, -0.292488360185005960, +-0.292440546365264060, -0.292392731814420050, -0.292344916532594980, -0.292297100519907650, -0.292249283776477580, -0.292201466302424270, -0.292153648097867310, -0.292105829162926270, +-0.292058009497720590, -0.292010189102369090, -0.291962367976992930, -0.291914546121710860, -0.291866723536642450, -0.291818900221907210, -0.291771076177624710, -0.291723251403914530, +-0.291675425900895350, -0.291627599668688510, -0.291579772707412640, -0.291531945017187320, -0.291484116598132170, -0.291436287450366700, -0.291388457574010500, -0.291340626969183230, +-0.291292795636003470, -0.291244963574592560, -0.291197130785069310, -0.291149297267553180, -0.291101463022163830, -0.291053628049020850, -0.291005792348243750, -0.290957955919951330, +-0.290910118764264870, -0.290862280881303110, -0.290814442271185690, -0.290766602934032110, -0.290718762869962070, -0.290670922079095060, -0.290623080561550780, -0.290575238317447970, +-0.290527395346907910, -0.290479551650049350, -0.290431707226991910, -0.290383862077855210, -0.290336016202758840, -0.290288169601822410, -0.290240322275164770, -0.290192474222907120, +-0.290144625445168280, -0.290096775942067950, -0.290048925713725590, -0.290001074760260990, -0.289953223081793670, -0.289905370678443240, -0.289857517550329460, -0.289809663697571000, +-0.289761809120289260, -0.289713953818602990, -0.289666097792631800, -0.289618241042495390, -0.289570383568313380, -0.289522525370205400, -0.289474666448290290, -0.289426806802689340, +-0.289378946433521360, -0.289331085340906010, -0.289283223524963000, -0.289235360985811870, -0.289187497723572380, -0.289139633738364100, -0.289091769030305920, -0.289043903599519150, +-0.288996037446122620, -0.288948170570236030, -0.288900302971979000, -0.288852434651471200, -0.288804565608832330, -0.288756695844181180, -0.288708825357639140, -0.288660954149325020, +-0.288613082219358550, -0.288565209567859360, -0.288517336194947180, -0.288469462100741590, -0.288421587285362380, -0.288373711748928400, -0.288325835491560930, -0.288277958513378900, +-0.288230080814501970, -0.288182202395049820, -0.288134323255142160, -0.288086443394898690, -0.288038562814438290, -0.287990681513882300, -0.287942799493349670, -0.287894916752959970, +-0.287847033292833010, -0.287799149113088460, -0.287751264213846060, -0.287703378595225430, -0.287655492257345600, -0.287607605200327800, -0.287559717424291040, -0.287511828929355010, +-0.287463939715639330, -0.287416049783263850, -0.287368159132348260, -0.287320267763011390, -0.287272375675374720, -0.287224482869557100, -0.287176589345678300, -0.287128695103857970, +-0.287080800144215940, -0.287032904466871910, -0.286985008071945660, -0.286937110959555990, -0.286889213129824350, -0.286841314582869770, -0.286793415318811860, -0.286745515337770370, +-0.286697614639865150, -0.286649713225215870, -0.286601811093942340, -0.286553908246163390, -0.286506004682000550, -0.286458100401572660, -0.286410195404999570, -0.286362289692400960, +-0.286314383263896630, -0.286266476119606320, -0.286218568259649860, -0.286170659684146120, -0.286122750393216550, -0.286074840386980170, -0.286026929665556600, -0.285979018229065800, +-0.285931106077627390, -0.285883193211361240, -0.285835279630386240, -0.285787365334823910, -0.285739450324793140, -0.285691534600413740, -0.285643618161805560, -0.285595701009088270, +-0.285547783142381770, -0.285499864561805820, -0.285451945267479300, -0.285404025259523800, -0.285356104538058260, -0.285308183103202440, -0.285260260955076170, -0.285212338093799260, +-0.285164414519491480, -0.285116490232271810, -0.285068565232261760, -0.285020639519580340, -0.284972713094347300, -0.284924785956682470, -0.284876858106705650, -0.284828929544536700, +-0.284781000270295460, -0.284733070284100830, -0.284685139586074390, -0.284637208176335090, -0.284589276055002780, -0.284541343222197320, -0.284493409678038430, -0.284445475422646090, +-0.284397540456139130, -0.284349604778639240, -0.284301668390265270, -0.284253731291137180, -0.284205793481374760, -0.284157854961097860, -0.284109915730426320, -0.284061975789479950, +-0.284014035138377810, -0.283966093777241470, -0.283918151706189840, -0.283870208925342870, -0.283822265434820360, -0.283774321234742220, -0.283726376325228240, -0.283678430706398310, +-0.283630484378371520, -0.283582537341269310, -0.283534589595210770, -0.283486641140315740, -0.283438691976704130, -0.283390742104495770, -0.283342791523810590, -0.283294840234768420, +-0.283246888237488280, -0.283198935532091740, -0.283150982118697940, -0.283103027997426650, -0.283055073168397790, -0.283007117631731200, -0.282959161387546900, -0.282911204435963790, +-0.282863246777103510, -0.282815288411085160, -0.282767329338028560, -0.282719369558053660, -0.282671409071280300, -0.282623447877828450, -0.282575485977817950, -0.282527523371367880, +-0.282479560058599920, -0.282431596039632970, -0.282383631314587100, -0.282335665883582110, -0.282287699746738010, -0.282239732904174590, -0.282191765356011040, -0.282143797102368920, +-0.282095828143367260, -0.282047858479126060, -0.281999888109765230, -0.281951917035404680, -0.281903945256164300, -0.281855972772164120, -0.281807999583523090, -0.281760025690362960, +-0.281712051092802730, -0.281664075790962420, -0.281616099784961880, -0.281568123074921070, -0.281520145660960010, -0.281472167543197700, -0.281424188721755840, -0.281376209196753490, +-0.281328228968310610, -0.281280248036547220, -0.281232266401583160, -0.281184284063538400, -0.281136301022533010, -0.281088317278685940, -0.281040332832118990, -0.280992347682951170, +-0.280944361831302500, -0.280896375277292890, -0.280848388021042390, -0.280800400062670870, -0.280752411402298400, -0.280704422040044030, -0.280656431976029460, -0.280608441210373820, +-0.280560449743197050, -0.280512457574619180, -0.280464464704760160, -0.280416471133739960, -0.280368476861678590, -0.280320481888695180, -0.280272486214911410, -0.280224489840446460, +-0.280176492765420280, -0.280128494989952850, -0.280080496514164170, -0.280032497338174260, -0.279984497462102240, -0.279936496886069860, -0.279888495610196190, -0.279840493634601340, +-0.279792490959405230, -0.279744487584727860, -0.279696483510689320, -0.279648478737409560, -0.279600473265007750, -0.279552467093605590, -0.279504460223322260, -0.279456452654277820, +-0.279408444386592240, -0.279360435420385520, -0.279312425755777750, -0.279264415392887990, -0.279216404331838140, -0.279168392572747230, -0.279120380115735310, -0.279072366960922470, +-0.279024353108428710, -0.278976338558374060, -0.278928323310878580, -0.278880307366061450, -0.278832290724044420, -0.278784273384946600, -0.278736255348888130, -0.278688236615989020, +-0.278640217186369330, -0.278592197060149090, -0.278544176237447480, -0.278496154718386290, -0.278448132503084760, -0.278400109591662840, -0.278352085984240660, -0.278304061680938300, +-0.278256036681875760, -0.278208010987173130, -0.278159984596949630, -0.278111957511327000, -0.278063929730424490, -0.278015901254362150, -0.277967872083260070, -0.277919842217238310, +-0.277871811656416940, -0.277823780400916040, -0.277775748450854840, -0.277727715806355080, -0.277679682467536050, -0.277631648434517870, -0.277583613707420520, -0.277535578286364160, +-0.277487542171468820, -0.277439505362854670, -0.277391467860640840, -0.277343429664949240, -0.277295390775899040, -0.277247351193610380, -0.277199310918203380, -0.277151269949798050, +-0.277103228288514580, -0.277055185934472150, -0.277007142887792600, -0.276959099148595230, -0.276911054717000120, -0.276863009593127320, -0.276814963777097020, -0.276766917269029360, +-0.276718870069044330, -0.276670822177261360, -0.276622773593802110, -0.276574724318785940, -0.276526674352332970, -0.276478623694563330, -0.276430572345597150, -0.276382520305554490, +-0.276334467574554710, -0.276286414152719590, -0.276238360040168440, -0.276190305237021370, -0.276142249743398570, -0.276094193559420110, -0.276046136685206220, -0.275998079120876980, +-0.275950020866551630, -0.275901961922352110, -0.275853902288397730, -0.275805841964808560, -0.275757780951704780, -0.275709719249206560, -0.275661656857434050, -0.275613593776506520, +-0.275565530006545880, -0.275517465547671370, -0.275469400400003230, -0.275421334563661580, -0.275373268038766610, -0.275325200825438490, -0.275277132923797350, -0.275229064333962490, +-0.275180995056055870, -0.275132925090196710, -0.275084854436505270, -0.275036783095101710, -0.274988711066106170, -0.274940638349638830, -0.274892564945819930, -0.274844490854768750, +-0.274796416076607210, -0.274748340611454640, -0.274700264459431190, -0.274652187620657070, -0.274604110095252540, -0.274556031883337660, -0.274507952985032780, -0.274459873400457080, +-0.274411793129732630, -0.274363712172978670, -0.274315630530315380, -0.274267548201863050, -0.274219465187741870, -0.274171381488072020, -0.274123297102972840, -0.274075212032566300, +-0.274027126276971680, -0.273979039836309280, -0.273930952710699280, -0.273882864900261920, -0.273834776405117330, -0.273786687225385850, -0.273738597361186830, -0.273690506812642120, +-0.273642415579871120, -0.273594323662994130, -0.273546231062131330, -0.273498137777402950, -0.273450043808929180, -0.273401949156829530, -0.273353853821225790, -0.273305757802237430, +-0.273257661099984670, -0.273209563714587770, -0.273161465646167000, -0.273113366894842500, -0.273065267460734620, -0.273017167343962700, -0.272969066544648750, -0.272920965062912080, +-0.272872862898873030, -0.272824760052651830, -0.272776656524368720, -0.272728552314143950, -0.272680447422096960, -0.272632341848349720, -0.272584235593021640, -0.272536128656232950, +-0.272488021038103880, -0.272439912738754840, -0.272391803758305960, -0.272343694096877640, -0.272295583754589180, -0.272247472731562630, -0.272199361027917360, -0.272151248643773770, +-0.272103135579251980, -0.272055021834472390, -0.272006907409555240, -0.271958792304620830, -0.271910676519788560, -0.271862560055180450, -0.271814442910916000, -0.271766325087115400, +-0.271718206583898950, -0.271670087401387040, -0.271621967539699860, -0.271573846998957810, -0.271525725779280300, -0.271477603880789290, -0.271429481303604280, -0.271381358047845580, +-0.271333234113633470, -0.271285109501088250, -0.271236984210330320, -0.271188858241479040, -0.271140731594656460, -0.271092604269982050, -0.271044476267576160, -0.270996347587559030, +-0.270948218230051110, -0.270900088195172580, -0.270851957483043860, -0.270803826093784340, -0.270755694027516150, -0.270707561284358740, -0.270659427864432420, -0.270611293767857470, +-0.270563158994754360, -0.270515023545243320, -0.270466887419443860, -0.270418750617478050, -0.270370613139465370, -0.270322474985526200, -0.270274336155780780, -0.270226196650349530, +-0.270178056469352780, -0.270129915612910890, -0.270081774081143370, -0.270033631874172290, -0.269985488992117110, -0.269937345435098170, -0.269889201203235900, -0.269841056296650670, +-0.269792910715462740, -0.269744764459791670, -0.269696617529759600, -0.269648469925485970, -0.269600321647091130, -0.269552172694695500, -0.269504023068419470, -0.269455872768383340, +-0.269407721794707570, -0.269359570147511610, -0.269311417826917590, -0.269263264833045020, -0.269215111166014320, -0.269166956825945770, -0.269118801812959880, -0.269070646127176960, +-0.269022489768716620, -0.268974332737700880, -0.268926175034249320, -0.268878016658482270, -0.268829857610520250, -0.268781697890483560, -0.268733537498492600, -0.268685376434667830, +-0.268637214699129600, -0.268589052291997480, -0.268540889213393590, -0.268492725463437440, -0.268444561042249560, -0.268396395949950180, -0.268348230186659880, -0.268300063752498990, +-0.268251896647587080, -0.268203728872046300, -0.268155560425996140, -0.268107391309557130, -0.268059221522849670, -0.268011051065994100, -0.267962879939110890, -0.267914708142320550, +-0.267866535675742530, -0.267818362539499030, -0.267770188733709670, -0.267722014258494790, -0.267673839113974850, -0.267625663300270380, -0.267577486817501710, -0.267529309665788470, +-0.267481131845252850, -0.267432953356014360, -0.267384774198193510, -0.267336594371910710, -0.267288413877286410, -0.267240232714441080, -0.267192050883495180, -0.267143868384568330, +-0.267095685217782650, -0.267047501383257720, -0.266999316881114060, -0.266951131711472110, -0.266902945874452290, -0.266854759370175170, -0.266806572198760250, -0.266758384360329780, +-0.266710195855003330, -0.266662006682901410, -0.266613816844144480, -0.266565626338853000, -0.266517435167147430, -0.266469243329148290, -0.266421050824975190, -0.266372857654750330, +-0.266324663818593320, -0.266276469316624630, -0.266228274148964770, -0.266180078315734260, -0.266131881817053490, -0.266083684653042220, -0.266035486823822550, -0.265987288329514180, +-0.265939089170237620, -0.265890889346113320, -0.265842688857261760, -0.265794487703803540, -0.265746285885859020, -0.265698083403548890, -0.265649880256992600, -0.265601676446312500, +-0.265553471971628210, -0.265505266833060250, -0.265457061030729140, -0.265408854564755330, -0.265360647435259440, -0.265312439642361010, -0.265264231186182360, -0.265216022066843190, +-0.265167812284463900, -0.265119601839165110, -0.265071390731067280, -0.265023178960290980, -0.264974966526956790, -0.264926753431184270, -0.264878539673095710, -0.264830325252810860, +-0.264782110170450170, -0.264733894426134210, -0.264685678019983490, -0.264637460952118600, -0.264589243222659200, -0.264541024831727530, -0.264492805779443290, -0.264444586065927080, +-0.264396365691299370, -0.264348144655680740, -0.264299922959191750, -0.264251700601952970, -0.264203477584084080, -0.264155253905707380, -0.264107029566942490, -0.264058804567910090, +-0.264010578908730590, -0.263962352589524720, -0.263914125610412940, -0.263865897971515000, -0.263817669672953170, -0.263769440714847150, -0.263721211097317550, -0.263672980820484900, +-0.263624749884469820, -0.263576518289392820, -0.263528286035374590, -0.263480053122534750, -0.263431819550995650, -0.263383585320876970, -0.263335350432299390, -0.263287114885383370, +-0.263238878680249590, -0.263190641817018620, -0.263142404295810150, -0.263094166116746580, -0.263045927279947580, -0.262997687785533730, -0.262949447633625650, -0.262901206824344040, +-0.262852965357809330, -0.262804723234142220, -0.262756480453463340, -0.262708237015892350, -0.262659992921551680, -0.262611748170560990, -0.262563502763040910, -0.262515256699112130, +-0.262467009978895160, -0.262418762602510680, -0.262370514570078480, -0.262322265881720810, -0.262274016537557440, -0.262225766537709070, -0.262177515882296320, -0.262129264571439700, +-0.262081012605260010, -0.262032759983877710, -0.261984506707412690, -0.261936252775987250, -0.261887998189721190, -0.261839742948735130, -0.261791487053149700, -0.261743230503085570, +-0.261694973298663370, -0.261646715440002840, -0.261598456927226390, -0.261550197760453850, -0.261501937939805750, -0.261453677465402820, -0.261405416337365750, -0.261357154555815100, +-0.261308892120871550, -0.261260629032654900, -0.261212365291287550, -0.261164100896889300, -0.261115835849580810, -0.261067570149482730, -0.261019303796715670, -0.260971036791400430, +-0.260922769133656700, -0.260874500823606860, -0.260826231861370830, -0.260777962247069230, -0.260729691980822690, -0.260681421062751940, -0.260633149492977610, -0.260584877271620440, +-0.260536604398800160, -0.260488330874639300, -0.260440056699257570, -0.260391781872775730, -0.260343506395314390, -0.260295230266994300, -0.260246953487936140, -0.260198676058259750, +-0.260150397978087530, -0.260102119247539290, -0.260053839866735800, -0.260005559835797650, -0.259957279154845620, -0.259908997824000400, -0.259860715843382720, -0.259812433213113200, +-0.259764149933311760, -0.259715866004100790, -0.259667581425600150, -0.259619296197930620, -0.259571010321212770, -0.259522723795567460, -0.259474436621115300, -0.259426148797976150, +-0.259377860326272580, -0.259329571206124270, -0.259281281437652110, -0.259232991020976690, -0.259184699956218790, -0.259136408243499210, -0.259088115882938560, -0.259039822874656770, +-0.258991529218776270, -0.258943234915416930, -0.258894939964699530, -0.258846644366744760, -0.258798348121673400, -0.258750051229606150, -0.258701753690662950, -0.258653455504966210, +-0.258605156672635840, -0.258556857193792570, -0.258508557068557130, -0.258460256297050330, -0.258411954879392840, -0.258363652815705500, -0.258315350106108180, -0.258267046750723320, +-0.258218742749670880, -0.258170438103071550, -0.258122132811046120, -0.258073826873715380, -0.258025520291200070, -0.257977213063620090, -0.257928905191097960, -0.257880596673753570, +-0.257832287511707670, -0.257783977705081050, -0.257735667253994440, -0.257687356158568750, -0.257639044418924600, -0.257590732035182010, -0.257542419007463440, -0.257494105335888850, +-0.257445791020578960, -0.257397476061654640, -0.257349160459236560, -0.257300844213445620, -0.257252527324401740, -0.257204209792227360, -0.257155891617042440, -0.257107572798967840, +-0.257059253338124290, -0.257010933234632590, -0.256962612488613570, -0.256914291100187990, -0.256865969069475840, -0.256817646396599650, -0.256769323081679320, -0.256720999124835700, +-0.256672674526189580, -0.256624349285861750, -0.256576023403973060, -0.256527696880644360, -0.256479369715995500, -0.256431041910149090, -0.256382713463225050, -0.256334384375344280, +-0.256286054646627510, -0.256237724277195660, -0.256189393267169440, -0.256141061616669720, -0.256092729325816560, -0.256044396394732370, -0.255996062823537210, -0.255947728612351880, +-0.255899393761297280, -0.255851058270494150, -0.255802722140063390, -0.255754385370124960, -0.255706047960801430, -0.255657709912212760, -0.255609371224479850, -0.255561031897723500, +-0.255512691932064550, -0.255464351327623910, -0.255416010084522360, -0.255367668202879930, -0.255319325682819180, -0.255270982524460120, -0.255222638727923610, -0.255174294293330490, +-0.255125949220801670, -0.255077603510457940, -0.255029257162419360, -0.254980910176808520, -0.254932562553745360, -0.254884214293350840, -0.254835865395745760, -0.254787515861051030, +-0.254739165689387480, -0.254690814880876030, -0.254642463435636680, -0.254594111353792010, -0.254545758635462140, -0.254497405280767810, -0.254449051289829970, -0.254400696662769490, +-0.254352341399707300, -0.254303985500763390, -0.254255628966060350, -0.254207271795718280, -0.254158913989858020, -0.254110555548600460, -0.254062196472066510, -0.254013836760377090, +-0.253965476413653020, -0.253917115432014450, -0.253868753815583940, -0.253820391564481550, -0.253772028678828200, -0.253723665158744780, -0.253675301004352150, -0.253626936215771310, +-0.253578570793123130, -0.253530204736527600, -0.253481838046107470, -0.253433470721982750, -0.253385102764274340, -0.253336734173103210, -0.253288364948590190, -0.253239995090856260, +-0.253191624600022370, -0.253143253476208530, -0.253094881719537480, -0.253046509330129180, -0.252998136308104580, -0.252949762653584710, -0.252901388366690350, -0.252853013447542570, +-0.252804637896261400, -0.252756261712969500, -0.252707884897786890, -0.252659507450834600, -0.252611129372233570, -0.252562750662104710, -0.252514371320568920, -0.252465991347747280, +-0.252417610743759730, -0.252369229508729090, -0.252320847642775290, -0.252272465146019420, -0.252224082018582370, -0.252175698260585170, -0.252127313872148650, -0.252078928853393000, +-0.252030543204440900, -0.251982156925412480, -0.251933770016428640, -0.251885382477610330, -0.251836994309078630, -0.251788605510954390, -0.251740216083358670, -0.251691826026411550, +-0.251643435340235700, -0.251595044024951310, -0.251546652080679280, -0.251498259507540620, -0.251449866305656300, -0.251401472475147330, -0.251353078016133820, -0.251304682928738480, +-0.251256287213081410, -0.251207890869283630, -0.251159493897466110, -0.251111096297749860, -0.251062698070255890, -0.251014299215105210, -0.250965899732417840, -0.250917499622316630, +-0.250869098884921650, -0.250820697520353960, -0.250772295528734480, -0.250723892910184270, -0.250675489664824340, -0.250627085792775710, -0.250578681294158500, -0.250530276169095400, +-0.250481870417706640, -0.250433464040113190, -0.250385057036436100, -0.250336649406796340, -0.250288241151314980, -0.250239832270113040, -0.250191422763310630, -0.250143012631030500, +-0.250094601873392890, -0.250046190490518740, -0.249997778482529130, -0.249949365849545050, -0.249900952591687600, -0.249852538709076870, -0.249804124201835680, -0.249755709070084150, +-0.249707293313943370, -0.249658876933534330, -0.249610459928978120, -0.249562042300395780, -0.249513624047908310, -0.249465205171635900, -0.249416785671701360, -0.249368365548224860, +-0.249319944801327440, -0.249271523431130150, -0.249223101437754090, -0.249174678821320220, -0.249126255581948840, -0.249077831719762640, -0.249029407234881900, -0.248980982127427610, +-0.248932556397520880, -0.248884130045282760, -0.248835703070834330, -0.248787275474296600, -0.248738847255789850, -0.248690418415436850, -0.248641988953357790, -0.248593558869673770, +-0.248545128164505830, -0.248496696837975100, -0.248448264890202610, -0.248399832321308610, -0.248351399131415850, -0.248302965320644640, -0.248254530889115980, -0.248206095836951020, +-0.248157660164270820, -0.248109223871196470, -0.248060786957849030, -0.248012349424348800, -0.247963911270818540, -0.247915472497378500, -0.247867033104149790, -0.247818593091253480, +-0.247770152458810680, -0.247721711206942530, -0.247673269335770080, -0.247624826845413620, -0.247576383735995910, -0.247527940007637280, -0.247479495660458790, -0.247431050694581570, +-0.247382605110126720, -0.247334158907215330, -0.247285712085968560, -0.247237264646506670, -0.247188816588952450, -0.247140367913426200, -0.247091918620049030, -0.247043468708942060, +-0.246995018180226430, -0.246946567034023230, -0.246898115270452770, -0.246849662889637890, -0.246801209891698850, -0.246752756276756770, -0.246704302044932820, -0.246655847196348120, +-0.246607391731123780, -0.246558935649380940, -0.246510478951239950, -0.246462021636823600, -0.246413563706252200, -0.246365105159646880, -0.246316645997128800, -0.246268186218819130, +-0.246219725824838980, -0.246171264815308630, -0.246122803190350990, -0.246074340950086370, -0.246025878094635860, -0.245977414624120680, -0.245928950538661960, -0.245880485838380850, +-0.245832020523398560, -0.245783554593835330, -0.245735088049814060, -0.245686620891455100, -0.245638153118879570, -0.245589684732208660, -0.245541215731563540, -0.245492746117065400, +-0.245444275888834520, -0.245395805046993790, -0.245347333591663580, -0.245298861522965010, -0.245250388841019300, -0.245201915545947610, -0.245153441637871140, -0.245104967116911070, +-0.245056491983187710, -0.245008016236824000, -0.244959539877940220, -0.244911062906657620, -0.244862585323097350, -0.244814107127380610, -0.244765628319628610, -0.244717148899962540, +-0.244668668868502720, -0.244620188225372100, -0.244571706970691030, -0.244523225104580660, -0.244474742627162260, -0.244426259538556980, -0.244377775838886060, -0.244329291528270680, +-0.244280806606831240, -0.244232321074690640, -0.244183834931969210, -0.244135348178788240, -0.244086860815268870, -0.244038372841532350, -0.243989884257699880, -0.243941395063891870, +-0.243892905260231220, -0.243844414846838300, -0.243795923823834360, -0.243747432191340600, -0.243698939949478280, -0.243650447098368580, -0.243601953638132780, -0.243553459568891210, +-0.243504964890766870, -0.243456469603880120, -0.243407973708352210, -0.243359477204304340, -0.243310980091857780, -0.243262482371133790, -0.243213984042252720, -0.243165485105337560, +-0.243116985560508670, -0.243068485407887340, -0.243019984647594780, -0.242971483279752270, -0.242922981304481030, -0.242874478721902350, -0.242825975532136610, -0.242777471735306780, +-0.242728967331533290, -0.242680462320937370, -0.242631956703640320, -0.242583450479763350, -0.242534943649427760, -0.242486436212753950, -0.242437928169864920, -0.242389419520881080, +-0.242340910265923660, -0.242292400405113990, -0.242243889938573290, -0.242195378866422890, -0.242146867188784030, -0.242098354905777160, -0.242049842017525250, -0.242001328524148740, +-0.241952814425768910, -0.241904299722507040, -0.241855784414484410, -0.241807268501822330, -0.241758751984642080, -0.241710234863064090, -0.241661717137211380, -0.241613198807204360, +-0.241564679873164350, -0.241516160335212640, -0.241467640193470560, -0.241419119448059330, -0.241370598099099470, -0.241322076146713970, -0.241273553591023260, -0.241225030432148680, +-0.241176506670211540, -0.241127982305333140, -0.241079457337634750, -0.241030931767237720, -0.240982405594262540, -0.240933878818832160, -0.240885351441067100, -0.240836823461088670, +-0.240788294879018180, -0.240739765694976960, -0.240691235909086310, -0.240642705521467580, -0.240594174532241220, -0.240545642941530270, -0.240497110749455230, -0.240448577956137420, +-0.240400044561698140, -0.240351510566258780, -0.240302975969940630, -0.240254440772864180, -0.240205904975152480, -0.240157368576926020, -0.240108831578306150, -0.240060293979414200, +-0.240011755780371480, -0.239963216981299410, -0.239914677582319300, -0.239866137583551600, -0.239817596985119450, -0.239769055787143300, -0.239720513989744500, -0.239671971593044430, +-0.239623428597164430, -0.239574885002225850, -0.239526340808349200, -0.239477796015657550, -0.239429250624271420, -0.239380704634312190, -0.239332158045901160, -0.239283610859159750, +-0.239235063074209300, -0.239186514691171190, -0.239137965710165960, -0.239089416131316650, -0.239040865954743830, -0.238992315180568820, -0.238943763808913020, -0.238895211839897810, +-0.238846659273644600, -0.238798106110274720, -0.238749552349908720, -0.238700997992669690, -0.238652443038678160, -0.238603887488055530, -0.238555331340923190, -0.238506774597402520, +-0.238458217257614900, -0.238409659321680900, -0.238361100789723580, -0.238312541661863550, -0.238263981938222120, -0.238215421618920790, -0.238166860704080860, -0.238118299193823800, +-0.238069737088270980, -0.238021174387542940, -0.237972611091762880, -0.237924047201051230, -0.237875482715529500, -0.237826917635319050, -0.237778351960541310, -0.237729785691317700, +-0.237681218827769600, -0.237632651370017630, -0.237584083318184870, -0.237535514672391900, -0.237486945432760140, -0.237438375599411030, -0.237389805172465970, -0.237341234152046390, +-0.237292662538272890, -0.237244090331268590, -0.237195517531154030, -0.237146944138050710, -0.237098370152080020, -0.237049795573363390, -0.237001220402022290, -0.236952644638178140, +-0.236904068281951510, -0.236855491333465590, -0.236806913792840910, -0.236758335660198970, -0.236709756935661180, -0.236661177619348990, -0.236612597711383880, -0.236564017211886380, +-0.236515436120979720, -0.236466854438784490, -0.236418272165422080, -0.236369689301014010, -0.236321105845681720, -0.236272521799546660, -0.236223937162730320, -0.236175351935353240, +-0.236126766117538660, -0.236078179709407170, -0.236029592711080230, -0.235981005122679300, -0.235932416944325850, -0.235883828176141370, -0.235835238818247310, -0.235786648870764310, +-0.235738058333815530, -0.235689467207521620, -0.235640875492004020, -0.235592283187384260, -0.235543690293783780, -0.235495096811324050, -0.235446502740125740, -0.235397908080312050, +-0.235349312832003550, -0.235300716995321820, -0.235252120570388250, -0.235203523557324410, -0.235154925956251730, -0.235106327767291760, -0.235057728990565100, -0.235009129626195000, +-0.234960529674302030, -0.234911929135007770, -0.234863328008433680, -0.234814726294701290, -0.234766123993932070, -0.234717521106247520, -0.234668917631768340, -0.234620313570617690, +-0.234571708922916290, -0.234523103688785590, -0.234474497868347150, -0.234425891461722460, -0.234377284469033050, -0.234328676890399550, -0.234280068725945230, -0.234231459975790730, +-0.234182850640057590, -0.234134240718867320, -0.234085630212341440, -0.234037019120601510, -0.233988407443769000, -0.233939795181964620, -0.233891182335311640, -0.233842568903930680, +-0.233793954887943300, -0.233745340287471020, -0.233696725102635420, -0.233648109333557980, -0.233599492980359420, -0.233550876043162990, -0.233502258522089360, -0.233453640417260080, +-0.233405021728796710, -0.233356402456820790, -0.233307782601453850, -0.233259162162817470, -0.233210541141032320, -0.233161919536221670, -0.233113297348506220, -0.233064674578007530, +-0.233016051224847170, -0.232967427289146660, -0.232918802771027580, -0.232870177670611490, -0.232821551988019130, -0.232772925723373710, -0.232724298876795990, -0.232675671448407530, +-0.232627043438329910, -0.232578414846684650, -0.232529785673593360, -0.232481155919176760, -0.232432525583558120, -0.232383894666858160, -0.232335263169198470, -0.232286631090700610, +-0.232237998431486180, -0.232189365191676770, -0.232140731371393930, -0.232092096970758420, -0.232043461989893510, -0.231994826428919940, -0.231946190287959320, -0.231897553567133210, +-0.231848916266563230, -0.231800278386370960, -0.231751639926677990, -0.231703000887605040, -0.231654361269275470, -0.231605721071809990, -0.231557080295330200, -0.231508438939957730, +-0.231459797005814150, -0.231411154493021080, -0.231362511401699280, -0.231313867731972040, -0.231265223483960140, -0.231216578657785170, -0.231167933253568770, -0.231119287271432520, +-0.231070640711498050, -0.231021993573887000, -0.230973345858720090, -0.230924697566120690, -0.230876048696209530, -0.230827399249108250, -0.230778749224938490, -0.230730098623821820, +-0.230681447445879930, -0.230632795691233570, -0.230584143360006070, -0.230535490452318220, -0.230486836968291610, -0.230438182908047930, -0.230389528271708800, -0.230340873059395850, +-0.230292217271230730, -0.230243560907334170, -0.230194903967829600, -0.230146246452837770, -0.230097588362480290, -0.230048929696878870, -0.230000270456155120, -0.229951610640430680, +-0.229902950249827240, -0.229854289284465520, -0.229805627744468970, -0.229756965629958370, -0.229708302941055320, -0.229659639677881530, -0.229610975840558650, -0.229562311429208300, +-0.229513646443951340, -0.229464980884911100, -0.229416314752208420, -0.229367648045964960, -0.229318980766302360, -0.229270312913342320, -0.229221644487206500, -0.229172975488016570, +-0.229124305915893330, -0.229075635770960210, -0.229026965053338000, -0.228978293763148350, -0.228929621900512970, -0.228880949465553570, -0.228832276458391770, -0.228783602879149260, +-0.228734928727946900, -0.228686254004908080, -0.228637578710153640, -0.228588902843805230, -0.228540226405984560, -0.228491549396813350, -0.228442871816413260, -0.228394193664905130, +-0.228345514942412370, -0.228296835649055810, -0.228248155784957160, -0.228199475350238160, -0.228150794345020450, -0.228102112769425740, -0.228053430623575750, -0.228004747907591340, +-0.227956064621595900, -0.227907380765710320, -0.227858696340056290, -0.227810011344755510, -0.227761325779929690, -0.227712639645700570, -0.227663952942188970, -0.227615265669518370, +-0.227566577827809590, -0.227517889417184400, -0.227469200437764450, -0.227420510889671520, -0.227371820773027310, -0.227323130087953520, -0.227274438834571070, -0.227225747013003380, +-0.227177054623371320, -0.227128361665796640, -0.227079668140401040, -0.227030974047306270, -0.226982279386634070, -0.226933584158505310, -0.226884888363043440, -0.226836192000369360, +-0.226787495070604810, -0.226738797573871500, -0.226690099510291200, -0.226641400879985660, -0.226592701683076630, -0.226544001919684960, -0.226495301589934170, -0.226446600693945090, +-0.226397899231839560, -0.226349197203739250, -0.226300494609765950, -0.226251791450041400, -0.226203087724687390, -0.226154383433824800, -0.226105678577577100, -0.226056973156065210, +-0.226008267169410890, -0.225959560617735920, -0.225910853501162020, -0.225862145819811010, -0.225813437573804620, -0.225764728763263760, -0.225716019388311960, -0.225667309449070120, +-0.225618598945660000, -0.225569887878203370, -0.225521176246822020, -0.225472464051637730, -0.225423751292771420, -0.225375037970346610, -0.225326324084484190, -0.225277609635305960, +-0.225228894622933720, -0.225180179047489240, -0.225131462909094300, -0.225082746207870720, -0.225034028943939400, -0.224985311117423870, -0.224936592728445070, -0.224887873777124770, +-0.224839154263584810, -0.224790434187946950, -0.224741713550333010, -0.224692992350863900, -0.224644270589663210, -0.224595548266851820, -0.224546825382551550, -0.224498101936884240, +-0.224449377929971690, -0.224400653361935650, -0.224351928232898010, -0.224303202542979670, -0.224254476292304190, -0.224205749480992530, -0.224157022109166490, -0.224108294176947890, +-0.224059565684458560, -0.224010836631820310, -0.223962107019154120, -0.223913376846583520, -0.223864646114229460, -0.223815914822213800, -0.223767182970658340, -0.223718450559684950, +-0.223669717589415420, -0.223620984059971580, -0.223572249971474430, -0.223523515324047520, -0.223474780117811830, -0.223426044352889180, -0.223377308029401420, -0.223328571147470400, +-0.223279833707217930, -0.223231095708765900, -0.223182357152235250, -0.223133618037749560, -0.223084878365429840, -0.223036138135397940, -0.222987397347775670, -0.222938656002684920, +-0.222889914100247530, -0.222841171640585340, -0.222792428623819370, -0.222743685050073190, -0.222694940919467820, -0.222646196232125060, -0.222597450988166830, -0.222548705187714970, +-0.222499958830891350, -0.222451211917816970, -0.222402464448615420, -0.222353716423407700, -0.222304967842315710, -0.222256218705461280, -0.222207469012966310, -0.222158718764952660, +-0.222109967961542230, -0.222061216602856020, -0.222012464689017610, -0.221963712220148050, -0.221914959196369220, -0.221866205617802960, -0.221817451484571220, -0.221768696796795840, +-0.221719941554597840, -0.221671185758100880, -0.221622429407425940, -0.221573672502694910, -0.221524915044029710, -0.221476157031552240, -0.221427398465384370, -0.221378639345648000, +-0.221329879672464150, -0.221281119445956490, -0.221232358666246020, -0.221183597333454660, -0.221134835447704290, -0.221086073009116840, -0.221037310017814210, -0.220988546473917440, +-0.220939782377550190, -0.220891017728833460, -0.220842252527889190, -0.220793486774839290, -0.220744720469805670, -0.220695953612910250, -0.220647186204274950, -0.220598418244020820, +-0.220549649732271510, -0.220500880669148050, -0.220452111054772410, -0.220403340889266500, -0.220354570172752230, -0.220305798905351540, -0.220257027087186360, -0.220208254718377740, +-0.220159481799049340, -0.220110708329322220, -0.220061934309318360, -0.220013159739159660, -0.219964384618968060, -0.219915608948865500, -0.219866832728973890, -0.219818055959414370, +-0.219769278640310540, -0.219720500771783540, -0.219671722353955300, -0.219622943386947710, -0.219574163870882800, -0.219525383805882460, -0.219476603192067800, -0.219427822029562510, +-0.219379040318487650, -0.219330258058965190, -0.219281475251117100, -0.219232691895065310, -0.219183907990931790, -0.219135123538838520, -0.219086338538906550, -0.219037552991259600, +-0.218988766896018760, -0.218939980253306020, -0.218891193063243340, -0.218842405325952670, -0.218793617041555980, -0.218744828210174380, -0.218696038831931560, -0.218647248906948670, +-0.218598458435347640, -0.218549667417250490, -0.218500875852779160, -0.218452083742055630, -0.218403291085201900, -0.218354497882339070, -0.218305704133590850, -0.218256909839078390, +-0.218208114998923650, -0.218159319613248640, -0.218110523682175290, -0.218061727205825670, -0.218012930184320830, -0.217964132617784550, -0.217915334506337960, -0.217866535850103020, +-0.217817736649201730, -0.217768936903756090, -0.217720136613888120, -0.217671335779719810, -0.217622534401372300, -0.217573732478969300, -0.217524930012631980, -0.217476127002482340, +-0.217427323448642380, -0.217378519351234120, -0.217329714710379540, -0.217280909526200690, -0.217232103798818720, -0.217183297528357330, -0.217134490714937680, -0.217085683358681840, +-0.217036875459711760, -0.216988067018149520, -0.216939258034117090, -0.216890448507736530, -0.216841638439128960, -0.216792827828418190, -0.216744016675725320, -0.216695204981172450, +-0.216646392744881540, -0.216597579966974650, -0.216548766647573800, -0.216499952786800180, -0.216451138384777560, -0.216402323441627080, -0.216353507957470770, -0.216304691932430710, +-0.216255875366628940, -0.216207058260187430, -0.216158240613228330, -0.216109422425872720, -0.216060603698244450, -0.216011784430464650, -0.215962964622655410, -0.215914144274938740, +-0.215865323387436720, -0.215816501960271380, -0.215767679993563940, -0.215718857487438130, -0.215670034442015210, -0.215621210857417200, -0.215572386733766160, -0.215523562071184140, +-0.215474736869793240, -0.215425911129715460, -0.215377084851072070, -0.215328258033986840, -0.215279430678580940, -0.215230602784976470, -0.215181774353295500, -0.215132945383660070, +-0.215084115876192310, -0.215035285831013360, -0.214986455248247080, -0.214937624128014680, -0.214888792470438210, -0.214839960275639730, -0.214791127543741380, -0.214742294274865210, +-0.214693460469133290, -0.214644626126666850, -0.214595791247589730, -0.214546955832023130, -0.214498119880089130, -0.214449283391909830, -0.214400446367607330, -0.214351608807303700, +-0.214302770711121050, -0.214253932079180640, -0.214205092911606220, -0.214156253208519110, -0.214107412970041350, -0.214058572196295040, -0.214009730887402330, -0.213960889043485260, +-0.213912046664665120, -0.213863203751065710, -0.213814360302808320, -0.213765516320015030, -0.213716671802807930, -0.213667826751309160, -0.213618981165640820, -0.213570135045925010, +-0.213521288392283020, -0.213472441204838690, -0.213423593483713230, -0.213374745229028770, -0.213325896440907490, -0.213277047119471430, -0.213228197264842790, -0.213179346877143630, +-0.213130495956495250, -0.213081644503021470, -0.213032792516843620, -0.212983939998083770, -0.212935086946864060, -0.212886233363306640, -0.212837379247533650, -0.212788524599666320, +-0.212739669419828550, -0.212690813708141640, -0.212641957464727670, -0.212593100689708800, -0.212544243383207180, -0.212495385545344970, -0.212446527176244290, -0.212397668276026410, +-0.212348808844815250, -0.212299948882732040, -0.212251088389898980, -0.212202227366438180, -0.212153365812471820, -0.212104503728122060, -0.212055641113510160, -0.212006777968760020, +-0.211957914293992940, -0.211909050089331090, -0.211860185354896590, -0.211811320090811630, -0.211762454297198390, -0.211713587974179000, -0.211664721121874760, -0.211615853740409620, +-0.211566985829904820, -0.211518117390482540, -0.211469248422265000, -0.211420378925374320, -0.211371508899932700, -0.211322638346062320, -0.211273767263884440, -0.211224895653523040, +-0.211176023515099400, -0.211127150848735710, -0.211078277654554110, -0.211029403932676830, -0.210980529683226060, -0.210931654906323070, -0.210882779602091840, -0.210833903770653640, +-0.210785027412130680, -0.210736150526645160, -0.210687273114319260, -0.210638395175275190, -0.210589516709635110, -0.210540637717520380, -0.210491758199054910, -0.210442878154360080, +-0.210393997583558030, -0.210345116486770980, -0.210296234864121160, -0.210247352715730720, -0.210198470041721930, -0.210149586842216100, -0.210100703117337140, -0.210051818867206450, +-0.210002934091946200, -0.209954048791678620, -0.209905162966525920, -0.209856276616610300, -0.209807389742053120, -0.209758502342978350, -0.209709614419507330, -0.209660725971762250, +-0.209611836999865380, -0.209562947503938890, -0.209514057484105040, -0.209465166940486060, -0.209416275873203300, -0.209367384282380690, -0.209318492168139640, -0.209269599530602340, +-0.209220706369891070, -0.209171812686128030, -0.209122918479435430, -0.209074023749934700, -0.209025128497749760, -0.208976232723002000, -0.208927336425813650, -0.208878439606306980, +-0.208829542264604210, -0.208780644400827550, -0.208731746015099310, -0.208682847107540840, -0.208633947678276120, -0.208585047727426500, -0.208536147255114300, -0.208487246261461700, +-0.208438344746591010, -0.208389442710624430, -0.208340540153684280, -0.208291637075891880, -0.208242733477371270, -0.208193829358243820, -0.208144924718631800, -0.208096019558657470, +-0.208047113878443100, -0.207998207678110920, -0.207949300957782380, -0.207900393717581460, -0.207851485957629530, -0.207802577678048880, -0.207753668878961820, -0.207704759560490560, +-0.207655849722757410, -0.207606939365884650, -0.207558028489993660, -0.207509117095208450, -0.207460205181650480, -0.207411292749441980, -0.207362379798705250, -0.207313466329562570, +-0.207264552342136230, -0.207215637836548480, -0.207166722812920810, -0.207117807271377190, -0.207068891212039030, -0.207019974635028660, -0.206971057540468350, -0.206922139928480380, +-0.206873221799187100, -0.206824303152709860, -0.206775383989172750, -0.206726464308697180, -0.206677544111405430, -0.206628623397419830, -0.206579702166862690, -0.206530780419856290, +-0.206481858156522920, -0.206432935376984040, -0.206384012081363700, -0.206335088269783310, -0.206286163942365240, -0.206237239099231720, -0.206188313740505110, -0.206139387866307730, +-0.206090461476760990, -0.206041534571988980, -0.205992607152113150, -0.205943679217255790, -0.205894750767539210, -0.205845821803085780, -0.205796892324017790, -0.205747962330457560, +-0.205699031822526580, -0.205650100800348870, -0.205601169264045900, -0.205552237213740020, -0.205503304649553550, -0.205454371571608810, -0.205405437980028140, -0.205356503874933870, +-0.205307569256447470, -0.205258634124693030, -0.205209698479792010, -0.205160762321866720, -0.205111825651039550, -0.205062888467432810, -0.205013950771168820, -0.204965012562369130, +-0.204916073841157760, -0.204867134607656180, -0.204818194861986800, -0.204769254604271920, -0.204720313834633900, -0.204671372553195090, -0.204622430760077860, -0.204573488455403660, +-0.204524545639296650, -0.204475602311878250, -0.204426658473270850, -0.204377714123596790, -0.204328769262978470, -0.204279823891538200, -0.204230878009398380, -0.204181931616680500, +-0.204132984713508660, -0.204084037300004350, -0.204035089376289970, -0.203986140942487850, -0.203937191998720370, -0.203888242545109930, -0.203839292581777990, -0.203790342108848720, +-0.203741391126443570, -0.203692439634684950, -0.203643487633695220, -0.203594535123596790, -0.203545582104512010, -0.203496628576563280, -0.203447674539872110, -0.203398719994562600, +-0.203349764940756320, -0.203300809378575610, -0.203251853308142910, -0.203202896729580560, -0.203153939643010960, -0.203104982048555620, -0.203056023946338730, -0.203007065336481750, +-0.202958106219107120, -0.202909146594337230, -0.202860186462294480, -0.202811225823101270, -0.202762264676879970, -0.202713303023752150, -0.202664340863841940, -0.202615378197270880, +-0.202566415024161370, -0.202517451344635830, -0.202468487158816660, -0.202419522466826260, -0.202370557268787080, -0.202321591564820630, -0.202272625355051060, -0.202223658639599930, +-0.202174691418589650, -0.202125723692142630, -0.202076755460381310, -0.202027786723428110, -0.201978817481404590, -0.201929847734434870, -0.201880877482640530, -0.201831906726144010, +-0.201782935465067730, -0.201733963699534090, -0.201684991429665530, -0.201636018655584530, -0.201587045377412590, -0.201538071595273930, -0.201489097309290040, -0.201440122519583460, +-0.201391147226276550, -0.201342171429491760, -0.201293195129351570, -0.201244218325978390, -0.201195241019493760, -0.201146263210021940, -0.201097284897684440, -0.201048306082603740, +-0.200999326764902260, -0.200950346944702460, -0.200901366622126790, -0.200852385797296860, -0.200803404470336820, -0.200754422641368280, -0.200705440310513660, -0.200656457477895460, +-0.200607474143636110, -0.200558490307858080, -0.200509505970683820, -0.200460521132234920, -0.200411535792635570, -0.200362549952007420, -0.200313563610472870, -0.200264576768154400, +-0.200215589425174510, -0.200166601581655640, -0.200117613237719400, -0.200068624393489990, -0.200019635049089040, -0.199970645204638970, -0.199921654860262310, -0.199872664016081500, +-0.199823672672219040, -0.199774680828797400, -0.199725688485938190, -0.199676695643765610, -0.199627702302401320, -0.199578708461967760, -0.199529714122587410, -0.199480719284382800, +-0.199431723947476380, -0.199382728111990650, -0.199333731778047250, -0.199284734945770370, -0.199235737615281660, -0.199186739786703590, -0.199137741460158700, -0.199088742635769420, +-0.199039743313658310, -0.198990743493946960, -0.198941743176759640, -0.198892742362217930, -0.198843741050444390, -0.198794739241561490, -0.198745736935691750, -0.198696734132957660, +-0.198647730833481720, -0.198598727037385600, -0.198549722744793540, -0.198500717955827160, -0.198451712670608990, -0.198402706889261540, -0.198353700611907320, -0.198304693838668860, +-0.198255686569668630, -0.198206678805028350, -0.198157670544872240, -0.198108661789321930, -0.198059652538500000, -0.198010642792528920, -0.197961632551531210, -0.197912621815629460, +-0.197863610584945250, -0.197814598859602900, -0.197765586639724070, -0.197716573925431240, -0.197667560716846990, -0.197618547014093840, -0.197569532817294340, -0.197520518126570980, +-0.197471502942045460, -0.197422487263842070, -0.197373471092082450, -0.197324454426889150, -0.197275437268384730, -0.197226419616691680, -0.197177401471932610, -0.197128382834229180, +-0.197079363703705630, -0.197030344080483700, -0.196981323964685870, -0.196932303356434770, -0.196883282255852890, -0.196834260663062810, -0.196785238578187080, -0.196736216001347390, +-0.196687192932668010, -0.196638169372270660, -0.196589145320277910, -0.196540120776812270, -0.196491095741996330, -0.196442070215952640, -0.196393044198802940, -0.196344017690671470, +-0.196294990691679970, -0.196245963201950980, -0.196196935221607080, -0.196147906750770870, -0.196098877789564860, -0.196049848338111680, -0.196000818396532990, -0.195951787964953130, +-0.195902757043493800, -0.195853725632277600, -0.195804693731427060, -0.195755661341064780, -0.195706628461313370, -0.195657595092295380, -0.195608561234132530, -0.195559526886949160, +-0.195510492050866960, -0.195461456726008510, -0.195412420912496440, -0.195363384610453330, -0.195314347820001730, -0.195265310541264280, -0.195216272774362680, -0.195167234519421280, +-0.195118195776561780, -0.195069156545906790, -0.195020116827578920, -0.194971076621700740, -0.194922035928394880, -0.194872994747783050, -0.194823953079989620, -0.194774910925136300, +-0.194725868283345700, -0.194676825154740440, -0.194627781539443100, -0.194578737437576310, -0.194529692849262690, -0.194480647774623950, -0.194431602213784470, -0.194382556166865980, +-0.194333509633991120, -0.194284462615282450, -0.194235415110862650, -0.194186367120854330, -0.194137318645379170, -0.194088269684561610, -0.194039220238523380, -0.193990170307387110, +-0.193941119891275410, -0.193892068990310890, -0.193843017604616200, -0.193793965734313980, -0.193744913379525980, -0.193695860540376550, -0.193646807216987490, -0.193597753409481380, +-0.193548699117980920, -0.193499644342608690, -0.193450589083487360, -0.193401533340738670, -0.193352477114487050, -0.193303420404854210, -0.193254363211962820, -0.193205305535935540, +-0.193156247376894990, -0.193107188734963800, -0.193058129610264670, -0.193009070002919340, -0.192960009913052180, -0.192910949340785010, -0.192861888286240480, -0.192812826749541200, +-0.192763764730809890, -0.192714702230169150, -0.192665639247741630, -0.192616575783649190, -0.192567511838016150, -0.192518447410964330, -0.192469382502616420, -0.192420317113095010, +-0.192371251242522830, -0.192322184891022540, -0.192273118058716750, -0.192224050745727320, -0.192174982952178640, -0.192125914678192480, -0.192076845923891540, -0.192027776689398490, +-0.191978706974836020, -0.191929636780326730, -0.191880566105992520, -0.191831494951957750, -0.191782423318344250, -0.191733351205274680, -0.191684278612871740, -0.191635205541258120, +-0.191586131990556460, -0.191537057960889490, -0.191487983452379000, -0.191438908465149410, -0.191389832999322550, -0.191340757055021130, -0.191291680632367790, -0.191242603731485240, +-0.191193526352496200, -0.191144448495522480, -0.191095370160688500, -0.191046291348116100, -0.190997212057927970, -0.190948132290246820, -0.190899052045195330, -0.190849971322896220, +-0.190800890123472150, -0.190751808447045010, -0.190702726293739220, -0.190653643663676600, -0.190604560556979890, -0.190555476973771760, -0.190506392914174950, -0.190457308378312150, +-0.190408223366305220, -0.190359137878278600, -0.190310051914354130, -0.190260965474654510, -0.190211878559302490, -0.190162791168420800, -0.190113703302132120, -0.190064614960559150, +-0.190015526143823800, -0.189966436852050500, -0.189917347085361120, -0.189868256843878370, -0.189819166127724980, -0.189770074937023660, -0.189720983271897150, -0.189671891132468180, +-0.189622798518858630, -0.189573705431192950, -0.189524611869592990, -0.189475517834181510, -0.189426423325081250, -0.189377328342414910, -0.189328232886305260, -0.189279136956875040, +-0.189230040554246080, -0.189180943678542910, -0.189131846329887390, -0.189082748508402230, -0.189033650214210200, -0.188984551447434060, -0.188935452208196550, -0.188886352496619500, +-0.188837252312827470, -0.188788151656942290, -0.188739050529086770, -0.188689948929383570, -0.188640846857955540, -0.188591744314925370, -0.188542641300415840, -0.188493537814548860, +-0.188444433857448880, -0.188395329429237810, -0.188346224530038440, -0.188297119159973490, -0.188248013319165770, -0.188198907007738000, -0.188149800225812070, -0.188100692973512530, +-0.188051585250961270, -0.188002477058281050, -0.187953368395594620, -0.187904259263024760, -0.187855149660694280, -0.187806039588725880, -0.187756929047241560, -0.187707818036365770, +-0.187658706556220410, -0.187609594606928330, -0.187560482188612240, -0.187511369301394950, -0.187462255945399230, -0.187413142120747000, -0.187364027827562780, -0.187314913065968510, +-0.187265797836086930, -0.187216682138040880, -0.187167565971953110, -0.187118449337946440, -0.187069332236143640, -0.187020214666666630, -0.186971096629639950, -0.186921978125185550, +-0.186872859153426190, -0.186823739714484680, -0.186774619808483840, -0.186725499435546420, -0.186676378595795280, -0.186627257289352310, -0.186578135516342060, -0.186529013276886480, +-0.186479890571108360, -0.186430767399130530, -0.186381643761075770, -0.186332519657066900, -0.186283395087226740, -0.186234270051677230, -0.186185144550542890, -0.186136018583945680, +-0.186086892152008470, -0.186037765254853990, -0.185988637892605110, -0.185939510065384640, -0.185890381773314520, -0.185841253016519330, -0.185792123795120970, -0.185742994109242330, +-0.185693863959006190, -0.185644733344535410, -0.185595602265952790, -0.185546470723381150, -0.185497338716942490, -0.185448206246761340, -0.185399073312959660, -0.185349939915660320, +-0.185300806054986110, -0.185251671731059890, -0.185202536944004510, -0.185153401693941900, -0.185104265980996660, -0.185055129805290740, -0.185005993166947020, -0.184956856066088300, +-0.184907718502837440, -0.184858580477317290, -0.184809441989650690, -0.184760303039959610, -0.184711163628368650, -0.184662023754999790, -0.184612883419975870, -0.184563742623419710, +-0.184514601365454220, -0.184465459646202230, -0.184416317465785680, -0.184367174824329240, -0.184318031721954880, -0.184268888158785420, -0.184219744134943740, -0.184170599650552690, +-0.184121454705735150, -0.184072309300614000, -0.184023163435311170, -0.183974017109951320, -0.183924870324656400, -0.183875723079549330, -0.183826575374752940, -0.183777427210390140, +-0.183728278586583750, -0.183679129503456660, -0.183629979961130870, -0.183580829959731020, -0.183531679499379100, -0.183482528580197950, -0.183433377202310510, -0.183384225365839590, +-0.183335073070908160, -0.183285920317638130, -0.183236767106154190, -0.183187613436578330, -0.183138459309033440, -0.183089304723642380, -0.183040149680528090, -0.182990994179813400, +-0.182941838221621240, -0.182892681806073630, -0.182843524933295140, -0.182794367603407860, -0.182745209816534690, -0.182696051572798470, -0.182646892872322110, -0.182597733715228530, +-0.182548574101640630, -0.182499414031680410, -0.182450253505472500, -0.182401092523138990, -0.182351931084802740, -0.182302769190586660, -0.182253606840613670, -0.182204444035006660, +-0.182155280773887650, -0.182106117057381330, -0.182056952885609720, -0.182007788258695710, -0.181958623176762230, -0.181909457639932190, -0.181860291648328540, -0.181811125202074130, +-0.181761958301291020, -0.181712790946103930, -0.181663623136634840, -0.181614454873006680, -0.181565286155342400, -0.181516116983764880, -0.181466947358397110, -0.181417777279361060, +-0.181368606746781460, -0.181319435760780330, -0.181270264321480630, -0.181221092429005250, -0.181171920083477160, -0.181122747285019260, -0.181073574033754490, -0.181024400329804910, +-0.180975226173295200, -0.180926051564347430, -0.180876876503084540, -0.180827700989629440, -0.180778525024105100, -0.180729348606634450, -0.180680171737340410, -0.180630994416345090, +-0.180581816643773150, -0.180532638419746650, -0.180483459744388590, -0.180434280617821850, -0.180385101040169420, -0.180335921011554240, -0.180286740532098370, -0.180237559601926530, +-0.180188378221160790, -0.180139196389924120, -0.180090014108339440, -0.180040831376529740, -0.179991648194617960, -0.179942464562727060, -0.179893280480979110, -0.179844095949498850, +-0.179794910968408330, -0.179745725537830550, -0.179696539657888450, -0.179647353328704990, -0.179598166550403170, -0.179548979323105930, -0.179499791646935360, -0.179450603522016170, +-0.179401414948470510, -0.179352225926421280, -0.179303036455991490, -0.179253846537304110, -0.179204656170482120, -0.179155465355647610, -0.179106274092925320, -0.179057082382437340, +-0.179007890224306630, -0.178958697618656240, -0.178909504565609080, -0.178860311065288160, -0.178811117117816470, -0.178761922723316090, -0.178712727881911810, -0.178663532593725690, +-0.178614336858880730, -0.178565140677499960, -0.178515944049706300, -0.178466746975622810, -0.178417549455371580, -0.178368351489077340, -0.178319153076862220, -0.178269954218849200, +-0.178220754915161320, -0.178171555165921540, -0.178122354971252890, -0.178073154331278320, -0.178023953246120030, -0.177974751715902710, -0.177925549740748510, -0.177876347320780420, +-0.177827144456121490, -0.177777941146894690, -0.177728737393223040, -0.177679533195229530, -0.177630328553036340, -0.177581123466768190, -0.177531917936547210, -0.177482711962496460, +-0.177433505544738940, -0.177384298683397640, -0.177335091378595600, -0.177285883630454940, -0.177236675439100460, -0.177187466804654280, -0.177138257727239460, -0.177089048206978960, +-0.177039838243995860, -0.176990627838413160, -0.176941416990353900, -0.176892205699940210, -0.176842993967296890, -0.176793781792546070, -0.176744569175810830, -0.176695356117214130, +-0.176646142616879050, -0.176596928674928630, -0.176547714291485860, -0.176498499466672950, -0.176449284200614680, -0.176400068493433180, -0.176350852345251500, -0.176301635756192700, +-0.176252418726379810, -0.176203201255935860, -0.176153983344983060, -0.176104764993646160, -0.176055546202047330, -0.176006326970309660, -0.175957107298556180, -0.175907887186909920, +-0.175858666635493930, -0.175809445644431290, -0.175760224213844160, -0.175711002343857340, -0.175661780034593010, -0.175612557286174230, -0.175563334098724040, -0.175514110472365560, +-0.175464886407221770, -0.175415661903414900, -0.175366436961069740, -0.175317211580308500, -0.175267985761254240, -0.175218759504029990, -0.175169532808758850, -0.175120305675563890, +-0.175071078104568150, -0.175021850095893860, -0.174972621649665820, -0.174923392766006210, -0.174874163445038120, -0.174824933686884620, -0.174775703491668790, -0.174726472859513700, +-0.174677241790542420, -0.174628010284877180, -0.174578778342642770, -0.174529545963961420, -0.174480313148956210, -0.174431079897750220, -0.174381846210466540, -0.174332612087228220, +-0.174283377528157510, -0.174234142533379240, -0.174184907103015600, -0.174135671237189680, -0.174086434936024600, -0.174037198199643420, -0.173987961028169240, -0.173938723421725170, +-0.173889485380433420, -0.173840246904418850, -0.173791007993803620, -0.173741768648710910, -0.173692528869263760, -0.173643288655585290, -0.173594048007798570, -0.173544806926026780, +-0.173495565410392070, -0.173446323461019320, -0.173397081078030760, -0.173347838261549510, -0.173298595011698640, -0.173249351328601310, -0.173200107212380610, -0.173150862663158740, +-0.173101617681060580, -0.173052372266208400, -0.173003126418725280, -0.172953880138734360, -0.172904633426358730, -0.172855386281721510, -0.172806138704945820, -0.172756890696153940, +-0.172707642255470670, -0.172658393383018300, -0.172609144078919970, -0.172559894343298770, -0.172510644176277820, -0.172461393577980270, -0.172412142548528350, -0.172362891088046980, +-0.172313639196658350, -0.172264386874485640, -0.172215134121651960, -0.172165880938280450, -0.172116627324494200, -0.172067373280416440, -0.172018118806169320, -0.171968863901877820, +-0.171919608567664140, -0.171870352803651430, -0.171821096609962860, -0.171771839986721520, -0.171722582934050600, -0.171673325452073230, -0.171624067540911670, -0.171574809200690790, +-0.171525550431532920, -0.171476291233561150, -0.171427031606898650, -0.171377771551668580, -0.171328511067994100, -0.171279250155997430, -0.171229988815803540, -0.171180727047534680, +-0.171131464851313970, -0.171082202227264640, -0.171032939175509770, -0.170983675696172570, -0.170934411789376180, -0.170885147455242890, -0.170835882693897570, -0.170786617505462590, +-0.170737351890061030, -0.170688085847816110, -0.170638819378850980, -0.170589552483288800, -0.170540285161252720, -0.170491017412865070, -0.170441749238250760, -0.170392480637532070, +-0.170343211610832160, -0.170293942158274230, -0.170244672279981470, -0.170195401976076990, -0.170146131246683150, -0.170096860091924850, -0.170047588511924420, -0.169998316506805000, +-0.169949044076689790, -0.169899771221701970, -0.169850497941964720, -0.169801224237601240, -0.169751950108733810, -0.169702675555487380, -0.169653400577984280, -0.169604125176347650, +-0.169554849350700730, -0.169505573101166680, -0.169456296427868690, -0.169407019330929080, -0.169357741810472810, -0.169308463866622180, -0.169259185499500390, -0.169209906709230640, +-0.169160627495936130, -0.169111347859740050, -0.169062067800765600, -0.169012787319135080, -0.168963506414973490, -0.168914225088403150, -0.168864943339547210, -0.168815661168528950, +-0.168766378575471500, -0.168717095560498130, -0.168667812123731140, -0.168618528265295470, -0.168569243985313500, -0.168519959283908420, -0.168470674161203450, -0.168421388617321780, +-0.168372102652386670, -0.168322816266521260, -0.168273529459847970, -0.168224242232491690, -0.168174954584574850, -0.168125666516220600, -0.168076378027552180, -0.168027089118692820, +-0.167977799789765740, -0.167928510040894150, -0.167879219872200420, -0.167829929283809520, -0.167780638275843800, -0.167731346848426470, -0.167682055001680790, -0.167632762735729970, +-0.167583470050697240, -0.167534176946705800, -0.167484883423878100, -0.167435589482339030, -0.167386295122210980, -0.167337000343617230, -0.167287705146680950, -0.167238409531525410, +-0.167189113498273870, -0.167139817047048640, -0.167090520177974740, -0.167041222891174570, -0.166991925186771330, -0.166942627064888270, -0.166893328525648640, -0.166844029569175710, +-0.166794730195592680, -0.166745430405021960, -0.166696130197588550, -0.166646829573414780, -0.166597528532623970, -0.166548227075339340, -0.166498925201684130, -0.166449622911781610, +-0.166400320205754150, -0.166351017083726770, -0.166301713545821850, -0.166252409592162640, -0.166203105222872430, -0.166153800438074430, -0.166104495237891950, -0.166055189622448220, +-0.166005883591865630, -0.165956577146269210, -0.165907270285781370, -0.165857963010525330, -0.165808655320624390, -0.165759347216201810, -0.165710038697380880, -0.165660729764283950, +-0.165611420417036080, -0.165562110655759650, -0.165512800480577980, -0.165463489891614270, -0.165414178888991850, -0.165364867472833990, -0.165315555643263950, -0.165266243400404160, +-0.165216930744379630, -0.165167617675312770, -0.165118304193326850, -0.165068990298545190, -0.165019675991091050, -0.164970361271087720, -0.164921046138658490, -0.164871730593925760, +-0.164822414637014610, -0.164773098268047400, -0.164723781487147420, -0.164674464294438020, -0.164625146690042440, -0.164575828674084020, -0.164526510246685990, -0.164477191407970850, +-0.164427872158063560, -0.164378552497086630, -0.164329232425163310, -0.164279911942416900, -0.164230591048970730, -0.164181269744948070, -0.164131948030471350, -0.164082625905665640, +-0.164033303370653360, -0.163983980425557840, -0.163934657070502370, -0.163885333305610230, -0.163836009131004770, -0.163786684546809310, -0.163737359553146220, -0.163688034150140630, +-0.163638708337914970, -0.163589382116592520, -0.163540055486296630, -0.163490728447150570, -0.163441400999277730, -0.163392073142800490, -0.163342744877843950, -0.163293416204530530, +-0.163244087122983580, -0.163194757633326410, -0.163145427735682360, -0.163096097430174720, -0.163046766716926860, -0.162997435596061200, -0.162948104067702800, -0.162898772131974180, +-0.162849439788998600, -0.162800107038899440, -0.162750773881800010, -0.162701440317823630, -0.162652106347092790, -0.162602771969732550, -0.162553437185865370, -0.162504101995614630, +-0.162454766399103610, -0.162405430396455660, -0.162356093987794160, -0.162306757173242420, -0.162257419952922920, -0.162208082326960740, -0.162158744295478360, -0.162109405858599090, +-0.162060067016446320, -0.162010727769143410, -0.161961388116813650, -0.161912048059580430, -0.161862707597566210, -0.161813366730896110, -0.161764025459692570, -0.161714683784078990, +-0.161665341704178680, -0.161615999220115020, -0.161566656332011370, -0.161517313039991090, -0.161467969344176620, -0.161418625244693140, -0.161369280741663070, -0.161319935835209820, +-0.161270590525456700, -0.161221244812527110, -0.161171898696544440, -0.161122552177631110, -0.161073205255912290, -0.161023857931510470, -0.160974510204549000, -0.160925162075151230, +-0.160875813543440580, -0.160826464609540390, -0.160777115273574050, -0.160727765535664040, -0.160678415395935470, -0.160629064854510870, -0.160579713911513630, -0.160530362567067100, +-0.160481010821294650, -0.160431658674319660, -0.160382306126264670, -0.160332953177254790, -0.160283599827412530, -0.160234246076861260, -0.160184891925724380, -0.160135537374125250, +-0.160086182422187310, -0.160036827070033890, -0.159987471317787540, -0.159938115165573380, -0.159888758613513950, -0.159839401661732610, -0.159790044310352760, -0.159740686559497800, +-0.159691328409291120, -0.159641969859855270, -0.159592610911315350, -0.159543251563793900, -0.159493891817414330, -0.159444531672300020, -0.159395171128574400, -0.159345810186360850, +-0.159296448845782760, -0.159247087106962670, -0.159197724970025740, -0.159148362435094500, -0.159098999502292370, -0.159049636171742730, -0.159000272443568990, -0.158950908317894570, +-0.158901543794842890, -0.158852178874536480, -0.158802813557100490, -0.158753447842657460, -0.158704081731330830, -0.158654715223243980, -0.158605348318520330, -0.158555981017283330, +-0.158506613319656380, -0.158457245225761990, -0.158407876735725400, -0.158358507849669090, -0.158309138567716530, -0.158259768889991130, -0.158210398816616280, -0.158161028347715450, +-0.158111657483411160, -0.158062286223828620, -0.158012914569090360, -0.157963542519319820, -0.157914170074640430, -0.157864797235175570, -0.157815424001048750, -0.157766050372383390, +-0.157716676349302000, -0.157667301931929790, -0.157617927120389360, -0.157568551914804070, -0.157519176315297410, -0.157469800321992810, -0.157420423935013740, -0.157371047154482720, +-0.157321669980524940, -0.157272292413262990, -0.157222914452820330, -0.157173536099320360, -0.157124157352886540, -0.157074778213642350, -0.157025398681711230, -0.156976018757215700, +-0.156926638440281010, -0.156877257731029730, -0.156827876629585310, -0.156778495136071200, -0.156729113250610840, -0.156679730973327710, -0.156630348304344360, -0.156580965243786040, +-0.156531581791775290, -0.156482197948435570, -0.156432813713890400, -0.156383429088263170, -0.156334044071677340, -0.156284658664256420, -0.156235272866122990, -0.156185886677402240, +-0.156136500098216810, -0.156087113128690090, -0.156037725768945590, -0.155988338019106780, -0.155938949879297130, -0.155889561349640100, -0.155840172430258300, -0.155790783121276950, +-0.155741393422818620, -0.155692003335006820, -0.155642612857965020, -0.155593221991816660, -0.155543830736685260, -0.155494439092693420, -0.155445047059966340, -0.155395654638626670, +-0.155346261828797850, -0.155296868630603350, -0.155247475044166690, -0.155198081069611360, -0.155148686707060830, -0.155099291956637690, -0.155049896818467200, -0.155000501292671980, +-0.154951105379375480, -0.154901709078701240, -0.154852312390772740, -0.154802915315713410, -0.154753517853646830, -0.154704120004695580, -0.154654721768984900, -0.154605323146637410, +-0.154555924137776610, -0.154506524742526020, -0.154457124961009080, -0.154407724793349350, -0.154358324239669440, -0.154308923300094600, -0.154259521974747430, -0.154210120263751470, +-0.154160718167230200, -0.154111315685307140, -0.154061912818105800, -0.154012509565749660, -0.153963105928361380, -0.153913701906066210, -0.153864297498986780, -0.153814892707246630, +-0.153765487530969220, -0.153716081970278080, -0.153666676025296770, -0.153617269696147890, -0.153567862982956690, -0.153518455885845840, -0.153469048404938860, -0.153419640540359250, +-0.153370232292230540, -0.153320823660676260, -0.153271414645819920, -0.153222005247784150, -0.153172595466694260, -0.153123185302672880, -0.153073774755843520, -0.153024363826329750, +-0.152974952514255050, -0.152925540819742970, -0.152876128742917030, -0.152826716283899900, -0.152777303442816870, -0.152727890219790580, -0.152678476614944550, -0.152629062628402340, +-0.152579648260287470, -0.152530233510723480, -0.152480818379833020, -0.152431402867741400, -0.152381986974571280, -0.152332570700446170, -0.152283154045489640, -0.152233737009825230, +-0.152184319593576510, -0.152134901796866950, -0.152085483619819270, -0.152036065062558760, -0.151986646125208070, -0.151937226807890790, -0.151887807110730440, -0.151838387033850550, +-0.151788966577374700, -0.151739545741426450, -0.151690124526128460, -0.151640702931606000, -0.151591280957981830, -0.151541858605379410, -0.151492435873922390, -0.151443012763734260, +-0.151393589274938590, -0.151344165407658080, -0.151294741162018020, -0.151245316538141130, -0.151195891536150930, -0.151146466156171030, -0.151097040398324920, -0.151047614262736250, +-0.150998187749528530, -0.150948760858824440, -0.150899333590749360, -0.150849905945425910, -0.150800477922977740, -0.150751049523528330, -0.150701620747201340, -0.150652191594120270, +-0.150602762064407840, -0.150553332158189390, -0.150503901875587630, -0.150454471216726090, -0.150405040181728370, -0.150355608770718070, -0.150306176983818730, -0.150256744821153950, +-0.150207312282846450, -0.150157879369021530, -0.150108446079801920, -0.150059012415311170, -0.150009578375672910, -0.149960143961010710, -0.149910709171448140, -0.149861274007108800, +-0.149811838468115380, -0.149762402554593280, -0.149712966266665140, -0.149663529604454610, -0.149614092568085220, -0.149564655157680640, -0.149515217373364400, -0.149465779215259250, +-0.149416340683490520, -0.149366901778180930, -0.149317462499454100, -0.149268022847433600, -0.149218582822243070, -0.149169142424006060, -0.149119701652846190, -0.149070260508886190, +-0.149020818992251450, -0.148971377103064630, -0.148921934841449360, -0.148872492207529270, -0.148823049201427940, -0.148773605823269010, -0.148724162073176040, -0.148674717951271800, +-0.148625273457681640, -0.148575828592528300, -0.148526383355935380, -0.148476937748026510, -0.148427491768925310, -0.148378045418755350, -0.148328598697639400, -0.148279151605702850, +-0.148229704143068410, -0.148180256309859730, -0.148130808106200380, -0.148081359532214020, -0.148031910588024260, -0.147982461273754720, -0.147933011589528180, -0.147883561535469940, +-0.147834111111702830, -0.147784660318350440, -0.147735209155536400, -0.147685757623384320, -0.147636305722017860, -0.147586853451559750, -0.147537400812135400, -0.147487947803867540, +-0.147438494426879780, -0.147389040681295820, -0.147339586567239250, -0.147290132084833710, -0.147240677234202870, -0.147191222015469410, -0.147141766428758810, -0.147092310474193770, +-0.147042854151897970, -0.146993397461995020, -0.146943940404608590, -0.146894482979862300, -0.146845025187879810, -0.146795567028783880, -0.146746108502699900, -0.146696649609750650, +-0.146647190350059770, -0.146597730723750930, -0.146548270730947760, -0.146498810371773920, -0.146449349646352170, -0.146399888554807900, -0.146350427097263950, -0.146300965273843900, +-0.146251503084671440, -0.146202040529870240, -0.146152577609563930, -0.146103114323876180, -0.146053650672929770, -0.146004186656850110, -0.145954722275759950, -0.145905257529783030, +-0.145855792419042950, -0.145806326943663380, -0.145756861103768010, -0.145707394899480480, -0.145657928330923560, -0.145608461398222730, -0.145558994101500750, -0.145509526440881250, +-0.145460058416487960, -0.145410590028444530, -0.145361121276874620, -0.145311652161901010, -0.145262182683649150, -0.145212712842241850, -0.145163242637802750, -0.145113772070455560, +-0.145064301140323950, -0.145014829847531560, -0.144965358192202100, -0.144915886174458390, -0.144866413794425830, -0.144816941052227230, -0.144767467947986280, -0.144717994481826650, +-0.144668520653872030, -0.144619046464246140, -0.144569571913071740, -0.144520097000474270, -0.144470621726576600, -0.144421146091502330, -0.144371670095375220, -0.144322193738318920, +-0.144272717020457160, -0.144223239941913580, -0.144173762502811050, -0.144124284703274960, -0.144074806543428190, -0.144025328023394380, -0.143975849143297250, -0.143926369903260520, +-0.143876890303407860, -0.143827410343862950, -0.143777930024748650, -0.143728449346190420, -0.143678968308311030, -0.143629486911234260, -0.143580005155083760, -0.143530523039983230, +-0.143481040566056400, -0.143431557733426080, -0.143382074542217770, -0.143332590992554270, -0.143283107084559270, -0.143233622818356530, -0.143184138194069720, -0.143134653211822560, +-0.143085167871738780, -0.143035682173941190, -0.142986196118555260, -0.142936709705703880, -0.142887222935510680, -0.142837735808099440, -0.142788248323593880, -0.142738760482117670, +-0.142689272283794580, -0.142639783728747440, -0.142590294817101700, -0.142540805548980220, -0.142491315924506730, -0.142441825943804940, -0.142392335606998630, -0.142342844914211420, +-0.142293353865566270, -0.142243862461188590, -0.142194370701201250, -0.142144878585728000, -0.142095386114892530, -0.142045893288818610, -0.141996400107629960, -0.141946906571450320, +-0.141897412680402510, -0.141847918434612060, -0.141798423834201800, -0.141748928879295490, -0.141699433570016850, -0.141649937906489640, -0.141600441888837580, -0.141550945517183530, +-0.141501448791653020, -0.141451951712368850, -0.141402454279454830, -0.141352956493034670, -0.141303458353232100, -0.141253959860170920, -0.141204461013974820, -0.141154961814766670, +-0.141105462262672010, -0.141055962357813700, -0.141006462100315480, -0.140956961490301120, -0.140907460527894320, -0.140857959213218890, -0.140808457546398590, -0.140758955527556240, +-0.140709453156817380, -0.140659950434304880, -0.140610447360142500, -0.140560943934454010, -0.140511440157363170, -0.140461936028993730, -0.140412431549468560, -0.140362926718913180, +-0.140313421537450520, -0.140263916005204270, -0.140214410122298240, -0.140164903888856190, -0.140115397305001890, -0.140065890370859090, -0.140016383086550680, -0.139966875452202180, +-0.139917367467936510, -0.139867859133877420, -0.139818350450148680, -0.139768841416874040, -0.139719332034177330, -0.139669822302182280, -0.139620312221011790, -0.139570801790791400, +-0.139521291011644010, -0.139471779883693390, -0.139422268407063320, -0.139372756581877560, -0.139323244408259940, -0.139273731886333320, -0.139224219016223260, -0.139174705798052630, +-0.139125192231945250, -0.139075678318024860, -0.139026164056415300, -0.138976649447240340, -0.138927134490623740, -0.138877619186688420, -0.138828103535559970, -0.138778587537361220, +-0.138729071192216000, -0.138679554500248130, -0.138630037461581370, -0.138580520076339500, -0.138531002344645440, -0.138481484266624770, -0.138431965842400390, -0.138382447072096100, +-0.138332927955835680, -0.138283408493742960, -0.138233888685941690, -0.138184368532555720, -0.138134848033707960, -0.138085327189523930, -0.138035806000126600, -0.137986284465639760, +-0.137936762586187200, -0.137887240361892730, -0.137837717792880150, -0.137788194879272410, -0.137738671621195070, -0.137689148018771050, -0.137639624072124130, -0.137590099781378180, +-0.137540575146656960, -0.137491050168084330, -0.137441524845784060, -0.137391999179879100, -0.137342473170495030, -0.137292946817754750, -0.137243420121782120, -0.137193893082700940, +-0.137144365700635010, -0.137094837975708210, -0.137045309908044280, -0.136995781497766200, -0.136946252744999550, -0.136896723649867270, -0.136847194212493170, -0.136797664433001090, +-0.136748134311514860, -0.136698603848158300, -0.136649073043055210, -0.136599541896328560, -0.136550010408103940, -0.136500478578504280, -0.136450946407653460, -0.136401413895675230, +-0.136351881042693500, -0.136302347848832050, -0.136252814314213850, -0.136203280438964510, -0.136153746223206950, -0.136104211667065020, -0.136054676770662570, -0.136005141534123440, +-0.135955605957571450, -0.135906070041130450, -0.135856533784923380, -0.135806997189075850, -0.135757460253710850, -0.135707922978952210, -0.135658385364923720, -0.135608847411749310, +-0.135559309119552750, -0.135509770488457050, -0.135460231518587800, -0.135410692210067960, -0.135361152563021420, -0.135311612577571960, -0.135262072253843510, -0.135212531591959840, +-0.135162990592044870, -0.135113449254221530, -0.135063907578615440, -0.135014365565349600, -0.134964823214547840, -0.134915280526334030, -0.134865737500832000, -0.134816194138165650, +-0.134766650438457920, -0.134717106401834430, -0.134667562028418200, -0.134618017318333030, -0.134568472271702850, -0.134518926888651500, -0.134469381169302790, -0.134419835113780670, +-0.134370288722208050, -0.134320741994710590, -0.134271194931411290, -0.134221647532433990, -0.134172099797902590, -0.134122551727940940, -0.134073003322672880, -0.134023454582222340, +-0.133973905506712290, -0.133924356096268320, -0.133874806351013480, -0.133825256271071640, -0.133775705856566650, -0.133726155107622370, -0.133676604024362740, -0.133627052606911570, +-0.133577500855391910, -0.133527948769929380, -0.133478396350646960, -0.133428843597668540, -0.133379290511118050, -0.133329737091119310, -0.133280183337796230, -0.133230629251271800, +-0.133181074831671690, -0.133131520079118880, -0.133081964993737280, -0.133032409575650770, -0.132982853824983230, -0.132933297741858580, -0.132883741326400660, -0.132834184578732500, +-0.132784627498979790, -0.132735070087265480, -0.132685512343713510, -0.132635954268447760, -0.132586395861592130, -0.132536837123270500, -0.132487278053605880, -0.132437718652723970, +-0.132388158920747760, -0.132338598857801140, -0.132289038464008020, -0.132239477739492320, -0.132189916684377930, -0.132140355298788730, -0.132090793582847780, -0.132041231536680710, +-0.131991669160410580, -0.131942106454161270, -0.131892543418056700, -0.131842980052220750, -0.131793416356777350, -0.131743852331849540, -0.131694287977563000, -0.131644723294040730, +-0.131595158281406640, -0.131545592939784660, -0.131496027269298680, -0.131446461270072650, -0.131396894942230450, -0.131347328285895150, -0.131297761301192420, -0.131248193988245250, +-0.131198626347177630, -0.131149058378113440, -0.131099490081176580, -0.131049921456491030, -0.131000352504180660, -0.130950783224368510, -0.130901213617180300, -0.130851643682739050, +-0.130802073421168700, -0.130752502832593150, -0.130702931917136360, -0.130653360674922230, -0.130603789106074700, -0.130554217210716830, -0.130504644988974290, -0.130455072440970130, +-0.130405499566828290, -0.130355926366672700, -0.130306352840627300, -0.130256778988816020, -0.130207204811361920, -0.130157630308390670, -0.130108055480025350, -0.130058480326389890, +-0.130008904847608240, -0.129959329043804310, -0.129909752915102070, -0.129860176461625450, -0.129810599683497510, -0.129761022580843930, -0.129711445153787820, -0.129661867402453080, +-0.129612289326963700, -0.129562710927443560, -0.129513132204016670, -0.129463553156806050, -0.129413973785937410, -0.129364394091533890, -0.129314814073719340, -0.129265233732617780, +-0.129215653068353110, -0.129166072081049330, -0.129116490770830370, -0.129066909137819290, -0.129017327182141820, -0.128967744903921040, -0.128918162303280880, -0.128868579380345320, +-0.128818996135238340, -0.128769412568083830, -0.128719828679004940, -0.128670244468127330, -0.128620659935574140, -0.128571075081469280, -0.128521489905936730, -0.128471904409100470, +-0.128422318591084440, -0.128372732452012610, -0.128323145992008090, -0.128273559211196570, -0.128223972109701130, -0.128174384687645780, -0.128124796945154470, -0.128075208882351160, +-0.128025620499359840, -0.127976031796304480, -0.127926442773308140, -0.127876853430496570, -0.127827263767992890, -0.127777673785921030, -0.127728083484404980, -0.127678492863568720, +-0.127628901923536240, -0.127579310664431510, -0.127529719086377610, -0.127480127189500300, -0.127430534973922680, -0.127380942439768720, -0.127331349587162380, -0.127281756416227710, +-0.127232162927088610, -0.127182569119868250, -0.127132974994692340, -0.127083380551683970, -0.127033785790967160, -0.126984190712665900, -0.126934595316904150, -0.126884999603805920, +-0.126835403573495180, -0.126785807226095060, -0.126736210561731290, -0.126686613580527020, -0.126637016282606210, -0.126587418668092840, -0.126537820737110920, -0.126488222489784470, +-0.126438623926236560, -0.126389025046593000, -0.126339425850976850, -0.126289826339512160, -0.126240226512322890, -0.126190626369533040, -0.126141025911266660, -0.126091425137647680, +-0.126041824048799270, -0.125992222644847190, -0.125942620925914540, -0.125893018892125340, -0.125843416543603620, -0.125793813880473340, -0.125744210902858510, -0.125694607610882280, +-0.125645004004670410, -0.125595400084346030, -0.125545795850033170, -0.125496191301855800, -0.125446586439937950, -0.125396981264403630, -0.125347375775376880, -0.125297769972980780, +-0.125248163857341170, -0.125198557428581130, -0.125148950686824690, -0.125099343632195910, -0.125049736264818720, -0.125000128584817210, -0.124950520592315400, -0.124900912287436380, +-0.124851303670305970, -0.124801694741047310, -0.124752085499784410, -0.124702475946641290, -0.124652866081741980, -0.124603255905210500, -0.124553645417170000, -0.124504034617746270, +-0.124454423507062470, -0.124404812085242590, -0.124355200352410680, -0.124305588308690790, -0.124255975954206910, -0.124206363289083090, -0.124156750313442490, -0.124107137027410900, +-0.124057523431111450, -0.124007909524668210, -0.123958295308205180, -0.123908680781846430, -0.123859065945715950, -0.123809450799937830, -0.123759835344635190, -0.123710219579933850, +-0.123660603505956960, -0.123610987122828560, -0.123561370430672700, -0.123511753429613400, -0.123462136119774720, -0.123412518501279820, -0.123362900574254500, -0.123313282338821940, +-0.123263663795106170, -0.123214044943231240, -0.123164425783321190, -0.123114806315500090, -0.123065186539891970, -0.123015566456620000, -0.122965946065809990, -0.122916325367585120, +-0.122866704362069440, -0.122817083049386990, -0.122767461429661840, -0.122717839503018040, -0.122668217269578740, -0.122618594729469800, -0.122568971882814360, -0.122519348729736510, +-0.122469725270360260, -0.122420101504809710, -0.122370477433208920, -0.122320853055681920, -0.122271228372351910, -0.122221603383344720, -0.122171978088783490, -0.122122352488792340, +-0.122072726583495310, -0.122023100373016460, -0.121973473857479860, -0.121923847037009580, -0.121874219911728800, -0.121824592481763330, -0.121774964747236400, -0.121725336708272060, +-0.121675708364994380, -0.121626079717527410, -0.121576450765995260, -0.121526821510521090, -0.121477191951230750, -0.121427562088247430, -0.121377931921695200, -0.121328301451698150, +-0.121278670678380340, -0.121229039601865860, -0.121179408222278780, -0.121129776539742300, -0.121080144554382250, -0.121030512266321850, -0.120980879675685160, -0.120931246782596270, +-0.120881613587179280, -0.120831980089558240, -0.120782346289857250, -0.120732712188199520, -0.120683077784710880, -0.120633443079514550, -0.120583808072734620, -0.120534172764495170, +-0.120484537154920290, -0.120434901244134060, -0.120385265032259690, -0.120335628519423050, -0.120285991705747330, -0.120236354591356630, -0.120186717176375050, -0.120137079460926680, +-0.120087441445135600, -0.120037803129125930, -0.119988164513020860, -0.119938525596946260, -0.119888886381025350, -0.119839246865382230, -0.119789607050140990, -0.119739966935425730, +-0.119690326521360550, -0.119640685808068680, -0.119591044795675960, -0.119541403484305640, -0.119491761874081820, -0.119442119965128590, -0.119392477757570060, -0.119342835251530330, +-0.119293192447133520, -0.119243549344502830, -0.119193905943764170, -0.119144262245040720, -0.119094618248456640, -0.119044973954136000, -0.118995329362202930, -0.118945684472781530, +-0.118896039285995930, -0.118846393801969350, -0.118796748020827670, -0.118747101942694100, -0.118697455567692790, -0.118647808895947840, -0.118598161927583360, -0.118548514662723480, +-0.118498867101491430, -0.118449219244013110, -0.118399571090411730, -0.118349922640811410, -0.118300273895336300, -0.118250624854110500, -0.118200975517258140, -0.118151325884903350, +-0.118101675957169350, -0.118052025734182040, -0.118002375216064670, -0.117952724402941370, -0.117903073294936250, -0.117853421892173450, -0.117803770194777100, -0.117754118202871310, +-0.117704465916579350, -0.117654813336027110, -0.117605160461337840, -0.117555507292635660, -0.117505853830044720, -0.117456200073689130, -0.117406546023693060, -0.117356891680179740, +-0.117307237043275060, -0.117257582113102300, -0.117207926889785580, -0.117158271373449040, -0.117108615564216830, -0.117058959462213060, -0.117009303067561910, -0.116959646380386630, +-0.116909989400813100, -0.116860332128964600, -0.116810674564965260, -0.116761016708939250, -0.116711358561010680, -0.116661700121303740, -0.116612041389941650, -0.116562382367050340, +-0.116512723052753080, -0.116463063447174000, -0.116413403550437280, -0.116363743362667030, -0.116314082883987440, -0.116264422114522630, -0.116214761054395890, -0.116165099703733120, +-0.116115438062657620, -0.116065776131293500, -0.116016113909764960, -0.115966451398196130, -0.115916788596711170, -0.115867125505434240, -0.115817462124488610, -0.115767798454000200, +-0.115718134494092310, -0.115668470244889080, -0.115618805706514670, -0.115569140879093240, -0.115519475762748970, -0.115469810357605120, -0.115420144663787640, -0.115370478681419780, +-0.115320812410625740, -0.115271145851529660, -0.115221479004255710, -0.115171811868928070, -0.115122144445670900, -0.115072476734607480, -0.115022808735863760, -0.114973140449563010, +-0.114923471875829420, -0.114873803014787140, -0.114824133866560360, -0.114774464431273250, -0.114724794709049960, -0.114675124700013810, -0.114625454404290730, -0.114575783822004020, +-0.114526112953277840, -0.114476441798236390, -0.114426770357003830, -0.114377098629704340, -0.114327426616461230, -0.114277754317400430, -0.114228081732645250, -0.114178408862319860, +-0.114128735706548450, -0.114079062265455190, -0.114029388539164290, -0.113979714527799910, -0.113930040231485370, -0.113880365650346610, -0.113830690784506930, -0.113781015634090530, +-0.113731340199221580, -0.113681664480024290, -0.113631988476622830, -0.113582312189140530, -0.113532635617703310, -0.113482958762434510, -0.113433281623458320, -0.113383604200898940, +-0.113333926494880530, -0.113284248505527300, -0.113234570232963460, -0.113184891677312300, -0.113135212838699800, -0.113085533717249280, -0.113035854313084910, -0.112986174626330910, +-0.112936494657111470, -0.112886814405550790, -0.112837133871773090, -0.112787453055901650, -0.112737771958062480, -0.112688090578378880, -0.112638408916975030, -0.112588726973975180, +-0.112539044749503510, -0.112489362243684220, -0.112439679456640660, -0.112389996388498770, -0.112340313039381880, -0.112290629409414210, -0.112240945498719980, -0.112191261307423380, +-0.112141576835648630, -0.112091892083519940, -0.112042207051160620, -0.111992521738696680, -0.111942836146251430, -0.111893150273949100, -0.111843464121913890, -0.111793777690270020, +-0.111744090979141700, -0.111694403988653160, -0.111644716718927710, -0.111595029170091370, -0.111545341342267440, -0.111495653235580180, -0.111445964850153780, -0.111396276186112450, +-0.111346587243580440, -0.111296898022681080, -0.111247208523540360, -0.111197518746281630, -0.111147828691029090, -0.111098138357906970, -0.111048447747039520, -0.110998756858550940, +-0.110949065692565480, -0.110899374249206460, -0.110849682528599890, -0.110799990530869110, -0.110750298256138370, -0.110700605704531870, -0.110650912876173860, -0.110601219771188570, +-0.110551526389699340, -0.110501832731832190, -0.110452138797710440, -0.110402444587458360, -0.110352750101200160, -0.110303055339060080, -0.110253360301162380, -0.110203664987631260, +-0.110153969398590110, -0.110104273534164910, -0.110054577394479030, -0.110004880979656700, -0.109955184289822180, -0.109905487325099690, -0.109855790085613480, -0.109806092571487800, +-0.109756394782846000, -0.109706696719814100, -0.109656998382515470, -0.109607299771074320, -0.109557600885614950, -0.109507901726261560, -0.109458202293138410, -0.109408502586368870, +-0.109358802606078970, -0.109309102352392070, -0.109259401825432400, -0.109209701025324220, -0.109159999952191790, -0.109110298606159370, -0.109060596987351200, -0.109010895095890650, +-0.108961192931903760, -0.108911490495513870, -0.108861787786845260, -0.108812084806022180, -0.108762381553168890, -0.108712678028409640, -0.108662974231868710, -0.108613270163669450, +-0.108563565823937900, -0.108513861212797440, -0.108464156330372320, -0.108414451176786820, -0.108364745752165180, -0.108315040056631670, -0.108265334090309700, -0.108215627853325250, +-0.108165921345801750, -0.108116214567863440, -0.108066507519634590, -0.108016800201239480, -0.107967092612802370, -0.107917384754447520, -0.107867676626298330, -0.107817968228480830, +-0.107768259561118410, -0.107718550624335340, -0.107668841418255890, -0.107619131943004350, -0.107569422198704970, -0.107519712185481150, -0.107470001903458940, -0.107420291352761710, +-0.107370580533513770, -0.107320869445839360, -0.107271158089862800, -0.107221446465708330, -0.107171734573500250, -0.107122022413361940, -0.107072309985419470, -0.107022597289796210, +-0.106972884326616470, -0.106923171096004520, -0.106873457598084640, -0.106823743832981110, -0.106774029800818220, -0.106724315501719390, -0.106674600935810630, -0.106624886103215380, +-0.106575171004057920, -0.106525455638462520, -0.106475740006553490, -0.106426024108455100, -0.106376307944290770, -0.106326591514186570, -0.106276874818265880, -0.106227157856653000, +-0.106177440629472220, -0.106127723136847850, -0.106078005378904160, -0.106028287355765470, -0.105978569067555180, -0.105928850514399330, -0.105879131696421370, -0.105829412613745580, +-0.105779693266496260, -0.105729973654797690, -0.105680253778774210, -0.105630533638550090, -0.105580813234248740, -0.105531092565996240, -0.105481371633916020, -0.105431650438132370, +-0.105381928978769590, -0.105332207255951990, -0.105282485269803870, -0.105232763020448660, -0.105183040508012420, -0.105133317732618580, -0.105083594694391440, -0.105033871393455320, +-0.104984147829934520, -0.104934424003953350, -0.104884699915636120, -0.104834975565106250, -0.104785250952489830, -0.104735526077910280, -0.104685800941491940, -0.104636075543359060, +-0.104586349883636020, -0.104536623962447090, -0.104486897779915710, -0.104437171336167990, -0.104387444631327330, -0.104337717665518050, -0.104287990438864500, -0.104238262951490950, +-0.104188535203521750, -0.104138807195081210, -0.104089078926292780, -0.104039350397282530, -0.103989621608173900, -0.103939892559091220, -0.103890163250158800, -0.103840433681500990, +-0.103790703853242090, -0.103740973765506410, -0.103691243418417430, -0.103641512812101220, -0.103591781946681240, -0.103542050822281790, -0.103492319439027220, -0.103442587797041850, +-0.103392855896450020, -0.103343123737375160, -0.103293391319943360, -0.103243658644278090, -0.103193925710503680, -0.103144192518744460, -0.103094459069124750, -0.103044725361768900, +-0.102994991396801220, -0.102945257174345190, -0.102895522694526900, -0.102845787957469810, -0.102796052963298230, -0.102746317712136530, -0.102696582204109040, -0.102646846439340090, +-0.102597110417953150, -0.102547374140074300, -0.102497637605827030, -0.102447900815335650, -0.102398163768724530, -0.102348426466118000, -0.102298688907640410, -0.102248951093416090, +-0.102199213023568510, -0.102149474698223770, -0.102099736117505350, -0.102049997281537600, -0.102000258190444850, -0.101950518844351450, -0.101900779243381760, -0.101851039387660120, +-0.101801299277309990, -0.101751558912457500, -0.101701818293226120, -0.101652077419740190, -0.101602336292124060, -0.101552594910502100, -0.101502853274998650, -0.101453111385737180, +-0.101403369242843820, -0.101353626846442030, -0.101303884196656170, -0.101254141293610610, -0.101204398137429690, -0.101154654728237790, -0.101104911066159240, -0.101055167151317530, +-0.101005422983838790, -0.100955678563846480, -0.100905933891464970, -0.100856188966818650, -0.100806443790031840, -0.100756698361228930, -0.100706952680533380, -0.100657206748071340, +-0.100607460563966290, -0.100557714128342570, -0.100507967441324580, -0.100458220503036650, -0.100408473313603200, -0.100358725873148550, -0.100308978181796200, -0.100259230239672290, +-0.100209482046900310, -0.100159733603604610, -0.100109984909909590, -0.100060235965939600, -0.100010486771819030, -0.099960737327672244, -0.099910987633622717, -0.099861237689796614, +-0.099811487496317422, -0.099761737053309499, -0.099711986360897231, -0.099662235419205006, -0.099612484228357195, -0.099562732788477284, -0.099512981099691436, -0.099463229162123121, +-0.099413476975896739, -0.099363724541136664, -0.099313971857967281, -0.099264218926512965, -0.099214465746898101, -0.099164712319246187, -0.099114958643683387, -0.099065204720333172, +-0.099015450549319955, -0.098965696130768124, -0.098915941464802037, -0.098866186551546095, -0.098816431391124698, -0.098766675983661331, -0.098716920329282157, -0.098667164428110687, +-0.098617408280271310, -0.098567651885888397, -0.098517895245086362, -0.098468138357989593, -0.098418381224721602, -0.098368623845408523, -0.098318866220173898, -0.098269108349142098, +-0.098219350232437538, -0.098169591870184592, -0.098119833262507672, -0.098070074409531166, -0.098020315311378586, -0.097970555968176110, -0.097920796380047248, -0.097871036547116388, +-0.097821276469507931, -0.097771516147346291, -0.097721755580755867, -0.097671994769860160, -0.097622233714785345, -0.097572472415654962, -0.097522710872593385, -0.097472949085725027, +-0.097423187055174304, -0.097373424781065615, -0.097323662263523361, -0.097273899502671082, -0.097224136498634914, -0.097174373251538423, -0.097124609761505984, -0.097074846028662037, +-0.097025082053130970, -0.096975317835037184, -0.096925553374505119, -0.096875788671658289, -0.096826023726622856, -0.096776258539522375, -0.096726493110481246, -0.096676727439623883, +-0.096626961527074701, -0.096577195372958113, -0.096527428977397647, -0.096477662340519507, -0.096427895462447205, -0.096378128343305169, -0.096328360983217801, -0.096278593382309541, +-0.096228825540704790, -0.096179057458527978, -0.096129289135902643, -0.096079520572954963, -0.096029751769808491, -0.095979982726587629, -0.095930213443416817, -0.095880443920420458, +-0.095830674157723006, -0.095780904155448862, -0.095731133913721581, -0.095681363432667338, -0.095631592712409688, -0.095581821753073060, -0.095532050554781880, -0.095482279117660565, +-0.095432507441833556, -0.095382735527424392, -0.095332963374559279, -0.095283190983361757, -0.095233418353956253, -0.095183645486467211, -0.095133872381019058, -0.095084099037736208, +-0.095034325456743118, -0.094984551638163342, -0.094934777582123056, -0.094885003288745828, -0.094835228758156101, -0.094785453990478288, -0.094735678985836846, -0.094685903744356217, +-0.094636128266159941, -0.094586352551374223, -0.094536576600122615, -0.094486800412529576, -0.094437023988719532, -0.094387247328816939, -0.094337470432946213, -0.094287693301231823, +-0.094237915933797309, -0.094188138330768889, -0.094138360492270132, -0.094088582418425465, -0.094038804109359345, -0.093989025565196213, -0.093939246786060512, -0.093889467772076698, +-0.093839688523368339, -0.093789909040061625, -0.093740129322280152, -0.093690349370148363, -0.093640569183790684, -0.093590788763331587, -0.093541008108895526, -0.093491227220606057, +-0.093441446098589398, -0.093391664742969130, -0.093341883153869695, -0.093292101331415550, -0.093242319275731164, -0.093192536986940966, -0.093142754465169439, -0.093092971710540137, +-0.093043188723179279, -0.092993405503210461, -0.092943622050758123, -0.092893838365946738, -0.092844054448900759, -0.092794270299744630, -0.092744485918602834, -0.092694701305598939, +-0.092644916460859178, -0.092595131384507118, -0.092545346076667229, -0.092495560537463981, -0.092445774767021829, -0.092395988765465245, -0.092346202532917795, -0.092296416069505727, +-0.092246629375352621, -0.092196842450582947, -0.092147055295321162, -0.092097267909691735, -0.092047480293819137, -0.091997692447827850, -0.091947904371841443, -0.091898116065986149, +-0.091848327530385576, -0.091798538765164181, -0.091748749770446433, -0.091698960546356817, -0.091649171093019802, -0.091599381410558969, -0.091549591499100580, -0.091499801358768201, +-0.091450010989686317, -0.091400220391979412, -0.091350429565771940, -0.091300638511188414, -0.091250847228353291, -0.091201055717390150, -0.091151263978425268, -0.091101472011582224, +-0.091051679816985490, -0.091001887394759562, -0.090952094745028925, -0.090902301867918034, -0.090852508763551401, -0.090802715432052608, -0.090752921873547915, -0.090703128088160917, +-0.090653334076016098, -0.090603539837237942, -0.090553745371950933, -0.090503950680279555, -0.090454155762347430, -0.090404360618280791, -0.090354565248203261, -0.090304769652239311, +-0.090254973830513438, -0.090205177783150126, -0.090155381510273871, -0.090105585012009173, -0.090055788288479613, -0.090005991339811478, -0.089956194166128350, -0.089906396767554755, +-0.089856599144215163, -0.089806801296234057, -0.089757003223735962, -0.089707204926845363, -0.089657406405685855, -0.089607607660383726, -0.089557808691062571, -0.089508009497846902, +-0.089458210080861203, -0.089408410440229985, -0.089358610576077732, -0.089308810488528081, -0.089259010177707279, -0.089209209643738949, -0.089159408886747601, -0.089109607906857721, +-0.089059806704193833, -0.089010005278880422, -0.088960203631041998, -0.088910401760802185, -0.088860599668287257, -0.088810797353620824, -0.088760994816927397, -0.088711192058331473, +-0.088661389077957578, -0.088611585875930210, -0.088561782452372992, -0.088511978807412212, -0.088462174941171479, -0.088412370853775304, -0.088362566545348201, -0.088312762016014679, +-0.088262957265899264, -0.088213152295126454, -0.088163347103819872, -0.088113541692105807, -0.088063736060107894, -0.088013930207950633, -0.087964124135758548, -0.087914317843656165, +-0.087864511331767967, -0.087814704600218507, -0.087764897649131396, -0.087715090478632921, -0.087665283088846732, -0.087615475479897315, -0.087565667651909221, -0.087515859605006963, +-0.087466051339315051, -0.087416242854957124, -0.087366434152059483, -0.087316625230745751, -0.087266816091140453, -0.087217006733368116, -0.087167197157553264, -0.087117387363820423, +-0.087067577352294104, -0.087017767123097972, -0.086967956676358288, -0.086918146012198730, -0.086868335130743796, -0.086818524032118025, -0.086768712716445942, -0.086718901183852087, +-0.086669089434460972, -0.086619277468396247, -0.086569465285784214, -0.086519652886748524, -0.086469840271413703, -0.086420027439904276, -0.086370214392344782, -0.086320401128859747, +-0.086270587649572822, -0.086220773954610322, -0.086170960044095885, -0.086121145918154049, -0.086071331576909341, -0.086021517020486313, -0.085971702249009491, -0.085921887262603414, +-0.085872072061391733, -0.085822256645500750, -0.085772441015054129, -0.085722625170176411, -0.085672809110992121, -0.085622992837625811, -0.085573176350202021, -0.085523359648844402, +-0.085473542733679284, -0.085423725604830289, -0.085373908262421999, -0.085324090706578926, -0.085274272937425621, -0.085224454955086640, -0.085174636759686520, -0.085124818351348927, +-0.085074999730200176, -0.085025180896363919, -0.084975361849964723, -0.084925542591127098, -0.084875723119975641, -0.084825903436634861, -0.084776083541229327, -0.084726263433882704, +-0.084676443114721306, -0.084626622583868785, -0.084576801841449722, -0.084526980887588657, -0.084477159722410128, -0.084427338346038716, -0.084377516758598059, -0.084327694960214500, +-0.084277872951011704, -0.084228050731114223, -0.084178228300646626, -0.084128405659733438, -0.084078582808499253, -0.084028759747068610, -0.083978936475565175, -0.083929112994115290, +-0.083879289302842622, -0.083829465401871722, -0.083779641291327173, -0.083729816971333512, -0.083679992442015308, -0.083630167703497127, -0.083580342755902634, -0.083530517599358173, +-0.083480692233987422, -0.083430866659914935, -0.083381040877265292, -0.083331214886163033, -0.083281388686732738, -0.083231562279098101, -0.083181735663385423, -0.083131908839718424, +-0.083082081808221644, -0.083032254569019665, -0.082982427122237037, -0.082932599467998358, -0.082882771606428166, -0.082832943537650167, -0.082783115261790691, -0.082733286778973431, +-0.082683458089322953, -0.082633629192963826, -0.082583800090020629, -0.082533970780617943, -0.082484141264879435, -0.082434311542931446, -0.082384481614897698, -0.082334651480902743, +-0.082284821141071149, -0.082234990595527510, -0.082185159844396394, -0.082135328887802367, -0.082085497725869150, -0.082035666358723058, -0.081985834786487813, -0.081936003009287980, +-0.081886171027248142, -0.081836338840492864, -0.081786506449146743, -0.081736673853334357, -0.081686841053179401, -0.081637008048808232, -0.081587174840344542, -0.081537341427912913, +-0.081487507811637938, -0.081437673991644186, -0.081387839968056250, -0.081338005740997824, -0.081288171310595264, -0.081238336676972292, -0.081188501840253474, -0.081138666800563392, +-0.081088831558026653, -0.081038996112767839, -0.080989160464911517, -0.080939324614581420, -0.080889488561903894, -0.080839652307002657, -0.080789815850002278, -0.080739979191027364, +-0.080690142330202497, -0.080640305267652285, -0.080590468003501295, -0.080540630537873262, -0.080490792870894529, -0.080440955002688816, -0.080391116933380719, -0.080341278663094831, +-0.080291440191955749, -0.080241601520088052, -0.080191762647615475, -0.080141923574664375, -0.080092084301358474, -0.080042244827822351, -0.079992405154180629, -0.079942565280557876, +-0.079892725207078727, -0.079842884933867764, -0.079793044461048693, -0.079743203788747899, -0.079693362917089103, -0.079643521846196885, -0.079593680576195869, -0.079543839107210662, +-0.079493997439365846, -0.079444155572785155, -0.079394313507594960, -0.079344471243918982, -0.079294628781881829, -0.079244786121608096, -0.079194943263222406, -0.079145100206849353, +-0.079095256952613546, -0.079045413500638720, -0.078995569851051245, -0.078945726003974842, -0.078895881959534120, -0.078846037717853701, -0.078796193279058180, -0.078746348643272179, +-0.078696503810620308, -0.078646658781226286, -0.078596813555216513, -0.078546968132714695, -0.078497122513845469, -0.078447276698733429, -0.078397430687503197, -0.078347584480279384, +-0.078297738077185736, -0.078247891478348625, -0.078198044683891785, -0.078148197693939825, -0.078098350508617381, -0.078048503128049049, -0.077998655552359478, -0.077948807781673249, +-0.077898959816114124, -0.077849111655808489, -0.077799263300880064, -0.077749414751453486, -0.077699566007653376, -0.077649717069604343, -0.077599867937431025, -0.077550018611258043, +-0.077500169091209117, -0.077450319377410648, -0.077400469469986397, -0.077350619369060958, -0.077300769074758982, -0.077250918587205078, -0.077201067906523882, -0.077151217032839128, +-0.077101365966277216, -0.077051514706961879, -0.077001663255017769, -0.076951811610569493, -0.076901959773741702, -0.076852107744658990, -0.076802255523446022, -0.076752403110226533, +-0.076702550505126921, -0.076652697708270920, -0.076602844719783181, -0.076552991539788340, -0.076503138168411006, -0.076453284605775843, -0.076403430852006571, -0.076353576907229603, +-0.076303722771568702, -0.076253868445148490, -0.076204013928093617, -0.076154159220528692, -0.076104304322578378, -0.076054449234367313, -0.076004593956019231, -0.075954738487660545, +-0.075904882829415016, -0.075855026981407281, -0.075805170943761976, -0.075755314716603739, -0.075705458300057232, -0.075655601694247065, -0.075605744899297014, -0.075555887915333478, +-0.075506030742480232, -0.075456173380861899, -0.075406315830603143, -0.075356458091828601, -0.075306600164662910, -0.075256742049229816, -0.075206883745655775, -0.075157025254064508, +-0.075107166574580692, -0.075057307707328949, -0.075007448652433945, -0.074957589410020314, -0.074907729980212709, -0.074857870363134904, -0.074808010558913299, -0.074758150567671669, +-0.074708290389534665, -0.074658430024626923, -0.074608569473073122, -0.074558708734997883, -0.074508847810524997, -0.074458986699780877, -0.074409125402889284, -0.074359263919974883, +-0.074309402251162324, -0.074259540396576257, -0.074209678356341346, -0.074159816130582229, -0.074109953719422680, -0.074060091122989141, -0.074010228341405374, -0.073960365374796042, +-0.073910502223285796, -0.073860638886999286, -0.073810775366061177, -0.073760911660596132, -0.073711047770727928, -0.073661183696582991, -0.073611319438285083, -0.073561454995958897, +-0.073511590369729055, -0.073461725559720248, -0.073411860566057113, -0.073361995388863455, -0.073312130028265685, -0.073262264484387593, -0.073212398757353844, -0.073162532847289102, +-0.073112666754318018, -0.073062800478565268, -0.073012934020155518, -0.072963067379212557, -0.072913200555862798, -0.072863333550230044, -0.072813466362438961, -0.072763598992614212, +-0.072713731440880461, -0.072663863707362372, -0.072613995792183750, -0.072564127695471034, -0.072514259417347987, -0.072464390957939287, -0.072414522317369612, -0.072364653495763639, +-0.072314784493246020, -0.072264915309941447, -0.072215045945973694, -0.072165176401469230, -0.072115306676551805, -0.072065436771346122, -0.072015566685976848, -0.071965696420568659, +-0.071915825975246220, -0.071865955350134222, -0.071816084545356443, -0.071766213561039349, -0.071716342397306718, -0.071666471054283226, -0.071616599532093567, -0.071566727830862403, +-0.071516855950714414, -0.071466983891773403, -0.071417111654165824, -0.071367239238015454, -0.071317366643446997, -0.071267493870585119, -0.071217620919554511, -0.071167747790479852, +-0.071117874483485818, -0.071068000998696201, -0.071018127336237483, -0.070968253496233438, -0.070918379478808774, -0.070868505284088154, -0.070818630912196256, -0.070768756363257801, +-0.070718881637397438, -0.070669006734738998, -0.070619131655408923, -0.070569256399531016, -0.070519380967229969, -0.070469505358630474, -0.070419629573857223, -0.070369753613034880, +-0.070319877476287276, -0.070270001163740867, -0.070220124675519455, -0.070170248011747718, -0.070120371172550378, -0.070070494158052096, -0.070020616968377594, -0.069970739603651536, +-0.069920862063997752, -0.069870984349542697, -0.069821106460410176, -0.069771228396724894, -0.069721350158611542, -0.069671471746194813, -0.069621593159599399, -0.069571714398949117, +-0.069521835464370449, -0.069471956355987172, -0.069422077073924018, -0.069372197618305667, -0.069322317989256824, -0.069272438186902180, -0.069222558211366456, -0.069172678062773441, +-0.069122797741249617, -0.069072917246918789, -0.069023036579905675, -0.068973155740334968, -0.068923274728331374, -0.068873393544019598, -0.068823512187524333, -0.068773630658969409, +-0.068723748958481282, -0.068673867086183796, -0.068623985042201630, -0.068574102826659503, -0.068524220439682121, -0.068474337881394190, -0.068424455151919528, -0.068374572251384616, +-0.068324689179913273, -0.068274805937630204, -0.068224922524660128, -0.068175038941127739, -0.068125155187157754, -0.068075271262874881, -0.068025387168402937, -0.067975502903868418, +-0.067925618469395141, -0.067875733865107812, -0.067825849091131152, -0.067775964147589879, -0.067726079034608686, -0.067676193752312291, -0.067626308300824542, -0.067576422680271891, +-0.067526536890778199, -0.067476650932468157, -0.067426764805466485, -0.067376878509897903, -0.067326992045887130, -0.067277105413557983, -0.067227218613036960, -0.067177331644447891, +-0.067127444507915496, -0.067077557203564481, -0.067027669731519579, -0.066977782091905511, -0.066927894284846981, -0.066878006310467822, -0.066828118168894543, -0.066778229860250962, +-0.066728341384661813, -0.066678452742251801, -0.066628563933145674, -0.066578674957468123, -0.066528785815342995, -0.066478896506896798, -0.066429007032253365, -0.066379117391537401, +-0.066329227584873654, -0.066279337612386829, -0.066229447474201661, -0.066179557170442882, -0.066129666701234324, -0.066079776066702484, -0.066029885266971192, -0.065979994302165196, +-0.065930103172409216, -0.065880211877827985, -0.065830320418546209, -0.065780428794688636, -0.065730537006379111, -0.065680645053744130, -0.065630752936907524, -0.065580860655994055, +-0.065530968211128415, -0.065481075602435365, -0.065431182830039625, -0.065381289894065039, -0.065331396794638119, -0.065281503531882709, -0.065231610105923529, -0.065181716516885341, +-0.065131822764892849, -0.065081928850070803, -0.065032034772543934, -0.064982140532436089, -0.064932246129873777, -0.064882351564980859, -0.064832456837882066, -0.064782561948702119, +-0.064732666897565766, -0.064682771684597754, -0.064632876309922815, -0.064582980773664783, -0.064533085075950208, -0.064483189216902909, -0.064433293196647631, -0.064383397015309124, +-0.064333500673012134, -0.064283604169881381, -0.064233707506040738, -0.064183810681616701, -0.064133913696733144, -0.064084016551514814, -0.064034119246086429, -0.063984221780572753, +-0.063934324155098518, -0.063884426369788472, -0.063834528424766473, -0.063784630320159047, -0.063734732056090038, -0.063684833632684207, -0.063634935050066274, -0.063585036308361029, +-0.063535137407693176, -0.063485238348186590, -0.063435339129967808, -0.063385439753160674, -0.063335540217889938, -0.063285640524280345, -0.063235740672456658, -0.063185840662543624, +-0.063135940494665976, -0.063086040168947602, -0.063036139685515011, -0.062986239044492076, -0.062936338246003531, -0.062886437290174152, -0.062836536177128671, -0.062786634906991851, +-0.062736733479888451, -0.062686831895942319, -0.062636930155280005, -0.062587028258025354, -0.062537126204303142, -0.062487223994238117, -0.062437321627955025, -0.062387419105578629, +-0.062337516427232800, -0.062287613593044071, -0.062237710603136306, -0.062187807457634262, -0.062137904156662697, -0.062088000700346375, -0.062038097088810050, -0.061988193322178489, +-0.061938289400575552, -0.061888385324127777, -0.061838481092959037, -0.061788576707194100, -0.061738672166957720, -0.061688767472374659, -0.061638862623569678, -0.061588957620667538, +-0.061539052463792127, -0.061489147153069960, -0.061439241688624933, -0.061389336070581800, -0.061339430299065328, -0.061289524374200273, -0.061239618296111416, -0.061189712064922623, +-0.061139805680760433, -0.061089899143748738, -0.061039992454012287, -0.060990085611675855, -0.060940178616864217, -0.060890271469702120, -0.060840364170314354, -0.060790456718824791, +-0.060740549115359969, -0.060690641360043776, -0.060640733453000979, -0.060590825394356347, -0.060540917184234655, -0.060491008822760664, -0.060441100310058268, -0.060391191646254012, +-0.060341282831471776, -0.060291373865836329, -0.060241464749472444, -0.060191555482504905, -0.060141646065058472, -0.060091736497257929, -0.060041826779227155, -0.059991916911092701, +-0.059942006892978454, -0.059892096725009190, -0.059842186407309685, -0.059792275940004712, -0.059742365323219054, -0.059692454557077473, -0.059642543641703877, -0.059592632577224809, +-0.059542721363764158, -0.059492810001446704, -0.059442898490397224, -0.059392986830740499, -0.059343075022601305, -0.059293163066103535, -0.059243250961373749, -0.059193338708535832, +-0.059143426307714575, -0.059093513759034745, -0.059043601062621132, -0.058993688218598517, -0.058943775227091683, -0.058893862088224523, -0.058843948802123590, -0.058794035368912791, +-0.058744121788716901, -0.058694208061660709, -0.058644294187868998, -0.058594380167466549, -0.058544466000578145, -0.058494551687327694, -0.058444637227841753, -0.058394722622244218, +-0.058344807870659869, -0.058294892973213511, -0.058244977930029911, -0.058195062741233872, -0.058145147406949288, -0.058095231927302725, -0.058045316302418083, -0.057995400532420145, +-0.057945484617433707, -0.057895568557583557, -0.057845652352994485, -0.057795736003791287, -0.057745819510097857, -0.057695902872040773, -0.057645986089743924, -0.057596069163332111, +-0.057546152092930125, -0.057496234878662761, -0.057446317520654808, -0.057396400019030180, -0.057346482373915431, -0.057296564585434480, -0.057246646653712117, -0.057196728578873139, +-0.057146810361042334, -0.057096892000344505, -0.057046973496904449, -0.056997054850846073, -0.056947136062295942, -0.056897217131377978, -0.056847298058216963, -0.056797378842937708, +-0.056747459485665008, -0.056697539986523653, -0.056647620345638451, -0.056597700563133312, -0.056547780639134806, -0.056497860573766857, -0.056447940367154247, -0.056398020019421791, +-0.056348099530694279, -0.056298178901096528, -0.056248258130752432, -0.056198337219788584, -0.056148416168328892, -0.056098494976498159, -0.056048573644421187, -0.055998652172222788, +-0.055948730560027755, -0.055898808807960894, -0.055848886916146125, -0.055798964884710020, -0.055749042713776509, -0.055699120403470394, -0.055649197953916471, -0.055599275365239557, +-0.055549352637564456, -0.055499429771015969, -0.055449506765718019, -0.055399583621797192, -0.055349660339377410, -0.055299736918583475, -0.055249813359540198, -0.055199889662372388, +-0.055149965827204848, -0.055100041854161515, -0.055050117743368959, -0.055000193494951111, -0.054950269109032779, -0.054900344585738767, -0.054850419925193905, -0.054800495127522983, +-0.054750570192850831, -0.054700645121301364, -0.054650719913001168, -0.054600794568074179, -0.054550869086645200, -0.054500943468839047, -0.054451017714780538, -0.054401091824594482, +-0.054351165798404814, -0.054301239636338115, -0.054251313338518313, -0.054201386905070238, -0.054151460336118687, -0.054101533631788490, -0.054051606792204457, -0.054001679817491405, +-0.053951752707773269, -0.053901825463176636, -0.053851898083825442, -0.053801970569844502, -0.053752042921358635, -0.053702115138492663, -0.053652187221371397, -0.053602259170119668, +-0.053552330984861410, -0.053502402665723203, -0.053452474212828990, -0.053402545626303595, -0.053352616906271834, -0.053302688052858531, -0.053252759066188503, -0.053202829946385699, +-0.053152900693576699, -0.053102971307885452, -0.053053041789436775, -0.053003112138355499, -0.052953182354766440, -0.052903252438794422, -0.052853322390564270, -0.052803392210199931, +-0.052753461897828001, -0.052703531453572407, -0.052653600877557993, -0.052603670169909571, -0.052553739330751977, -0.052503808360210034, -0.052453877258408568, -0.052403946025471528, +-0.052354014661525505, -0.052304083166694444, -0.052254151541103182, -0.052204219784876535, -0.052154287898139341, -0.052104355881016425, -0.052054423733631734, -0.052004491456111870, +-0.051954559048580776, -0.051904626511163288, -0.051854693843984230, -0.051804761047168441, -0.051754828120840750, -0.051704895065125982, -0.051654961880148093, -0.051605028566033689, +-0.051555095122906715, -0.051505161550891999, -0.051455227850114381, -0.051405294020698690, -0.051355360062769764, -0.051305425976451553, -0.051255491761870664, -0.051205557419151046, +-0.051155622948417537, -0.051105688349794967, -0.051055753623408182, -0.051005818769382004, -0.050955883787841286, -0.050905948678909969, -0.050856013442714662, -0.050806078079379327, +-0.050756142589028802, -0.050706206971787911, -0.050656271227781512, -0.050606335357134428, -0.050556399359971506, -0.050506463236416700, -0.050456526986596618, -0.050406590610635224, +-0.050356654108657355, -0.050306717480787848, -0.050256780727151548, -0.050206843847873300, -0.050156906843077047, -0.050106969712889422, -0.050057032457434369, -0.050007095076836733, +-0.049957157571221364, -0.049907219940713100, -0.049857282185436780, -0.049807344305517261, -0.049757406301078493, -0.049707468172247096, -0.049657529919147028, -0.049607591541903133, +-0.049557653040640262, -0.049507714415483260, -0.049457775666556972, -0.049407836793986241, -0.049357897797895033, -0.049307958678409966, -0.049258019435655005, -0.049208080069754995, +-0.049158140580834786, -0.049108200969019224, -0.049058261234433159, -0.049008321377200556, -0.048958381397448035, -0.048908441295299560, -0.048858501070879981, -0.048808560724314151, +-0.048758620255726921, -0.048708679665243136, -0.048658738952987654, -0.048608798119084438, -0.048558857163660110, -0.048508916086838647, -0.048458974888744892, -0.048409033569503691, +-0.048359092129239917, -0.048309150568078406, -0.048259208886143136, -0.048209267083560728, -0.048159325160455152, -0.048109383116951260, -0.048059440953173917, -0.048009498669247967, +-0.047959556265298277, -0.047909613741449690, -0.047859671097826184, -0.047809728334554387, -0.047759785451758269, -0.047709842449562681, -0.047659899328092496, -0.047609956087472559, +-0.047560012727827734, -0.047510069249282874, -0.047460125651961955, -0.047410181935991613, -0.047360238101495811, -0.047310294148599413, -0.047260350077427286, -0.047210405888104275, +-0.047160461580755257, -0.047110517155504197, -0.047060572612477723, -0.047010627951799826, -0.046960683173595356, -0.046910738277989181, -0.046860793265106157, -0.046810848135071151, +-0.046760902888009027, -0.046710957524043757, -0.046661012043301982, -0.046611066445907672, -0.046561120731985699, -0.046511174901660922, -0.046461228955058213, -0.046411282892302425, +-0.046361336713517547, -0.046311390418830214, -0.046261444008364405, -0.046211497482244984, -0.046161550840596824, -0.046111604083544783, -0.046061657211213733, -0.046011710223728540, +-0.045961763121213181, -0.045911815903794305, -0.045861868571595889, -0.045811921124742798, -0.045761973563359912, -0.045712025887572089, -0.045662078097504194, -0.045612130193281114, +-0.045562182175026812, -0.045512234042867951, -0.045462285796928500, -0.045412337437333333, -0.045362388964207329, -0.045312440377675345, -0.045262491677862261, -0.045212542864892062, +-0.045162593938891396, -0.045112644899984240, -0.045062695748295481, -0.045012746483949977, -0.044962797107072607, -0.044912847617788243, -0.044862898016221758, -0.044812948302497144, +-0.044762998476741041, -0.044713048539077448, -0.044663098489631237, -0.044613148328527273, -0.044563198055890436, -0.044513247671845613, -0.044463297176517667, -0.044413346570030585, +-0.044363395852511034, -0.044313445024082986, -0.044263494084871326, -0.044213543035000934, -0.044163591874596682, -0.044113640603783449, -0.044063689222685234, -0.044013737731428679, +-0.043963786130137773, -0.043913834418937411, -0.043863882597952458, -0.043813930667307800, -0.043763978627128317, -0.043714026477538886, -0.043664074218663501, -0.043614121850628823, +-0.043564169373558836, -0.043514216787578421, -0.043464264092812468, -0.043414311289385860, -0.043364358377423466, -0.043314405357049293, -0.043264452228389996, -0.043214498991569567, +-0.043164545646712883, -0.043114592193944846, -0.043064638633390322, -0.043014684965174202, -0.042964731189421367, -0.042914777306255820, -0.042864823315804219, -0.042814869218190561, +-0.042764915013539725, -0.042714960701976605, -0.042665006283626079, -0.042615051758613041, -0.042565097127062371, -0.042515142389098072, -0.042465187544846808, -0.042415232594432570, +-0.042365277537980257, -0.042315322375614743, -0.042265367107460927, -0.042215411733643689, -0.042165456254287040, -0.042115500669517636, -0.042065544979459475, -0.042015589184237458, +-0.041965633283976470, -0.041915677278801390, -0.041865721168837126, -0.041815764954208551, -0.041765808635039682, -0.041715852211457176, -0.041665895683585044, -0.041615939051548166, +-0.041565982315471442, -0.041516025475479765, -0.041466068531698028, -0.041416111484251110, -0.041366154333263030, -0.041316197078860452, -0.041266239721167386, -0.041216282260308712, +-0.041166324696409337, -0.041116367029594154, -0.041066409259988050, -0.041016451387715036, -0.040966493412901775, -0.040916535335672286, -0.040866577156151461, -0.040816618874464188, +-0.040766660490735372, -0.040716702005089901, -0.040666743417652682, -0.040616784728547711, -0.040566825937901667, -0.040516867045838553, -0.040466908052483277, -0.040416948957960733, +-0.040366989762395812, -0.040317030465913416, -0.040267071068637562, -0.040217111570694915, -0.040167151972209485, -0.040117192273306179, -0.040067232474109891, -0.040017272574745529, +-0.039967312575337977, -0.039917352476012143, -0.039867392276892046, -0.039817431978104355, -0.039767471579773082, -0.039717511082023128, -0.039667550484979400, -0.039617589788766797, +-0.039567628993510212, -0.039517668099334560, -0.039467707106363853, -0.039417746014724760, -0.039367784824541306, -0.039317823535938386, -0.039267862149040912, -0.039217900663973779, +-0.039167939080861899, -0.039117977399829279, -0.039068015621002608, -0.039018053744505891, -0.038968091770464043, -0.038918129699001963, -0.038868167530244566, -0.038818205264316744, +-0.038768242901343411, -0.038718280441448587, -0.038668317884758940, -0.038618355231398505, -0.038568392481492179, -0.038518429635164872, -0.038468466692541496, -0.038418503653746952, +-0.038368540518905259, -0.038318577288143099, -0.038268613961584499, -0.038218650539354367, -0.038168687021577601, -0.038118723408379122, -0.038068759699883839, -0.038018795896216651, +-0.037968831997501590, -0.037918868003865333, -0.037868903915431906, -0.037818939732326216, -0.037768975454673184, -0.037719011082597710, -0.037669046616224708, -0.037619082055679091, +-0.037569117401084880, -0.037519152652568763, -0.037469187810254767, -0.037419222874267799, -0.037369257844732773, -0.037319292721774602, -0.037269327505518202, -0.037219362196087596, +-0.037169396793609470, -0.037119431298207849, -0.037069465710007653, -0.037019500029133796, -0.036969534255711187, -0.036919568389864738, -0.036869602431719370, -0.036819636381399110, +-0.036769670239030647, -0.036719704004738007, -0.036669737678646112, -0.036619771260879869, -0.036569804751564197, -0.036519838150824012, -0.036469871458784234, -0.036419904675568888, +-0.036369937801304673, -0.036319970836115607, -0.036270003780126618, -0.036220036633462613, -0.036170069396248526, -0.036120102068609258, -0.036070134650668849, -0.036020167142553995, +-0.035970199544388723, -0.035920231856297946, -0.035870264078406593, -0.035820296210839583, -0.035770328253721825, -0.035720360207178253, -0.035670392071332893, -0.035620423846312435, +-0.035570455532240919, -0.035520487129243265, -0.035470518637444395, -0.035420550056969230, -0.035370581387942683, -0.035320612630488801, -0.035270643784734275, -0.035220674850803137, +-0.035170705828820314, -0.035120736718910722, -0.035070767521199288, -0.035020798235810939, -0.034970828862870597, -0.034920859402502294, -0.034870889854832728, -0.034820920219985937, +-0.034770950498086844, -0.034720980689260376, -0.034671010793631461, -0.034621040811325013, -0.034571070742465966, -0.034521100587178354, -0.034471130345588873, -0.034421160017821577, +-0.034371189604001373, -0.034321219104253196, -0.034271248518701974, -0.034221277847472628, -0.034171307090689197, -0.034121336248478393, -0.034071365320964248, -0.034021394308271682, +-0.033971423210525639, -0.033921452027851032, -0.033871480760372795, -0.033821509408215857, -0.033771537971504263, -0.033721566450364705, -0.033671594844921236, -0.033621623155298777, +-0.033571651381622263, -0.033521679524016613, -0.033471707582606772, -0.033421735557517658, -0.033371763448873319, -0.033321791256800459, -0.033271818981423118, -0.033221846622866237, +-0.033171874181254730, -0.033121901656713547, -0.033071929049367600, -0.033021956359340951, -0.032971983586760296, -0.032922010731749683, -0.032872037794434039, -0.032822064774938306, +-0.032772091673387412, -0.032722118489906284, -0.032672145224619857, -0.032622171877652185, -0.032572198449129973, -0.032522224939177259, -0.032472251347918986, -0.032422277675480081, +-0.032372303921985486, -0.032322330087560129, -0.032272356172328064, -0.032222382176415987, -0.032172408099947959, -0.032122433943048916, -0.032072459705843784, -0.032022485388457499, +-0.031972510991015002, -0.031922536513641235, -0.031872561956460231, -0.031822587319598715, -0.031772612603180726, -0.031722637807331207, -0.031672662932175091, -0.031622687977837322, +-0.031572712944442832, -0.031522737832116558, -0.031472762640982560, -0.031422787371167535, -0.031372812022795543, -0.031322836595991520, -0.031272861090880406, -0.031222885507587138, +-0.031172909846236659, -0.031122934106953017, -0.031072958289862927, -0.031022982395090441, -0.030973006422760501, -0.030923030372998043, -0.030873054245928008, -0.030823078041675341, +-0.030773101760364976, -0.030723125402120969, -0.030673148967070036, -0.030623172455336231, -0.030573195867044496, -0.030523219202319773, -0.030473242461286999, -0.030423265644071117, +-0.030373288750797076, -0.030323311781588921, -0.030273334736573378, -0.030223357615874497, -0.030173380419617219, -0.030123403147926494, -0.030073425800927259, -0.030023448378744461, +-0.029973470881502151, -0.029923493309327056, -0.029873515662343225, -0.029823537940675604, -0.029773560144449141, -0.029723582273788775, -0.029673604328819457, -0.029623626309666126, +-0.029573648216452839, -0.029523670049306321, -0.029473691808350629, -0.029423713493710708, -0.029373735105511504, -0.029323756643877957, -0.029273778108935024, -0.029223799500806755, +-0.029173820819619875, -0.029123842065498444, -0.029073863238567407, -0.029023884338951714, -0.028973905366776308, -0.028923926322166140, -0.028873947205246157, -0.028823968016140417, +-0.028773988754975645, -0.028724009421875901, -0.028674030016966130, -0.028624050540371287, -0.028574070992216320, -0.028524091372626171, -0.028474111681725797, -0.028424131919639255, +-0.028374152086493271, -0.028324172182411907, -0.028274192207520112, -0.028224212161942836, -0.028174232045805030, -0.028124251859231647, -0.028074271602346743, -0.028024291275277047, +-0.027974310878146627, -0.027924330411080427, -0.027874349874203400, -0.027824369267640502, -0.027774388591516676, -0.027724407845956880, -0.027674427031085178, -0.027624446147028296, +-0.027574465193910300, -0.027524484171856139, -0.027474503080990767, -0.027424521921439141, -0.027374540693326205, -0.027324559396776922, -0.027274578031915350, -0.027224596598868223, +-0.027174615097759602, -0.027124633528714442, -0.027074651891857700, -0.027024670187314331, -0.026974688415209284, -0.026924706575666629, -0.026874724668813094, -0.026824742694772748, +-0.026774760653670546, -0.026724778545631440, -0.026674796370780390, -0.026624814129242350, -0.026574831821142272, -0.026524849446604229, -0.026474867005754948, -0.026424884498718500, +-0.026374901925619840, -0.026324919286583929, -0.026274936581735717, -0.026224953811200161, -0.026174970975101339, -0.026124988073565971, -0.026075005106718136, -0.026025022074682790, +-0.025975038977584887, -0.025925055815549384, -0.025875072588701246, -0.025825089297165423, -0.025775105941065992, -0.025725122520529681, -0.025675139035680566, -0.025625155486643601, +-0.025575171873543748, -0.025525188196505968, -0.025475204455655216, -0.025425220651116451, -0.025375236783013750, -0.025325252851473842, -0.025275268856620802, -0.025225284798579592, +-0.025175300677475167, -0.025125316493432494, -0.025075332246576525, -0.025025347937031341, -0.024975363564923674, -0.024925379130377599, -0.024875394633518077, -0.024825410074470068, +-0.024775425453358531, -0.024725440770308433, -0.024675456025444732, -0.024625471218891505, -0.024575486350775486, -0.024525501421220751, -0.024475516430352263, -0.024425531378294982, +-0.024375546265173874, -0.024325561091113904, -0.024275575856240027, -0.024225590560676323, -0.024175605204549529, -0.024125619787983724, -0.024075634311103870, -0.024025648774034930, +-0.023975663176901869, -0.023925677519829647, -0.023875691802942346, -0.023825706026366703, -0.023775720190226796, -0.023725734294647586, -0.023675748339754041, -0.023625762325671127, +-0.023575776252523804, -0.023525790120437044, -0.023475803929534918, -0.023425817679944172, -0.023375831371788881, -0.023325845005194010, -0.023275858580284529, -0.023225872097185400, +-0.023175885556021590, -0.023125898956917180, -0.023075912299998912, -0.023025925585390860, -0.022975938813217994, -0.022925951983605284, -0.022875965096677692, -0.022825978152560187, +-0.022775991151377739, -0.022726004093254423, -0.022676016978316987, -0.022626029806689506, -0.022576042578496949, -0.022526055293864290, -0.022476067952916491, -0.022426080555778521, +-0.022376093102575351, -0.022326105593431057, -0.022276118028472392, -0.022226130407823428, -0.022176142731609141, -0.022126154999954496, -0.022076167212984461, -0.022026179370824010, +-0.021976191473597223, -0.021926203521430845, -0.021876215514448960, -0.021826227452776535, -0.021776239336538539, -0.021726251165859949, -0.021676262940865727, -0.021626274661680850, +-0.021576286328429398, -0.021526297941238118, -0.021476309500231092, -0.021426321005533294, -0.021376332457269692, -0.021326343855565262, -0.021276355200544970, -0.021226366492333788, +-0.021176377731055806, -0.021126388916837765, -0.021076400049803750, -0.021026411130078738, -0.020976422157787698, -0.020926433133055602, -0.020876444056007422, -0.020826454926767247, +-0.020776465745461818, -0.020726476512215229, -0.020676487227152446, -0.020626497890398447, -0.020576508502078202, -0.020526519062316687, -0.020476529571238872, -0.020426540028968848, +-0.020376550435633359, -0.020326560791356498, -0.020276571096263230, -0.020226581350478539, -0.020176591554127390, -0.020126601707334765, -0.020076611810224746, -0.020026621862924088, +-0.019976631865556874, -0.019926641818248082, -0.019876651721122681, -0.019826661574305654, -0.019776671377921974, -0.019726681132096614, -0.019676690836953663, -0.019626700492619872, +-0.019576710099219331, -0.019526719656877016, -0.019476729165717899, -0.019426738625866961, -0.019376748037449178, -0.019326757400589523, -0.019276766715412088, -0.019226775982043622, +-0.019176785200608216, -0.019126794371230847, -0.019076803494036496, -0.019026812569150130, -0.018976821596696739, -0.018926830576800401, -0.018876839509587878, -0.018826848395183254, +-0.018776857233711509, -0.018726866025297623, -0.018676874770066569, -0.018626883468143330, -0.018576892119652882, -0.018526900724719315, -0.018476909283469387, -0.018426917796027183, +-0.018376926262517686, -0.018326934683065871, -0.018276943057796723, -0.018226951386835215, -0.018176959670305439, -0.018126967908334155, -0.018076976101045448, -0.018026984248564304, +-0.017976992351015696, -0.017927000408524612, -0.017877008421216024, -0.017827016389214915, -0.017777024312645377, -0.017727032191634167, -0.017677040026305376, -0.017627047816783984, +-0.017577055563194971, -0.017527063265663324, -0.017477070924314015, -0.017427078539272032, -0.017377086110661463, -0.017327093638609063, -0.017277101123238933, -0.017227108564676050, +-0.017177115963045397, -0.017127123318471951, -0.017077130631080698, -0.017027137900995731, -0.016977145128343803, -0.016927152313249018, -0.016877159455836351, -0.016827166556230785, +-0.016777173614557300, -0.016727180630940884, -0.016677187605506513, -0.016627194538378288, -0.016577201429682966, -0.016527208279544636, -0.016477215088088290, -0.016427221855438903, +-0.016377228581721463, -0.016327235267060949, -0.016277241911582349, -0.016227248515409756, -0.016177255078669930, -0.016127261601486968, -0.016077268083985848, -0.016027274526291560, +-0.015977280928529087, -0.015927287290823409, -0.015877293613298628, -0.015827299896081497, -0.015777306139296118, -0.015727312343067474, -0.015677318507520549, -0.015627324632780330, +-0.015577330718971796, -0.015527336766219937, -0.015477342774648847, -0.015427348744385288, -0.015377354675553359, -0.015327360568278043, -0.015277366422684324, -0.015227372238897190, +-0.015177378017041625, -0.015127383757241725, -0.015077389459624257, -0.015027395124313314, -0.014977400751433882, -0.014927406341110951, -0.014877411893469502, -0.014827417408634523, +-0.014777422886731001, -0.014727428327883034, -0.014677433732217386, -0.014627439099858150, -0.014577444430930319, -0.014527449725558876, -0.014477454983868808, -0.014427460205985104, +-0.014377465392032749, -0.014327470542135842, -0.014277475656421148, -0.014227480735012763, -0.014177485778035678, -0.014127490785614876, -0.014077495757875350, -0.014027500694942083, +-0.013977505596939176, -0.013927510463993393, -0.013877515296228835, -0.013827520093770489, -0.013777524856743341, -0.013727529585272381, -0.013677534279482598, -0.013627538939498980, +-0.013577543565445625, -0.013527548157449300, -0.013477552715634104, -0.013427557240125027, -0.013377561731047058, -0.013327566188525182, -0.013277570612684392, -0.013227575003649676, +-0.013177579361545134, -0.013127583686497531, -0.013077587978630970, -0.013027592238070438, -0.012977596464940925, -0.012927600659367423, -0.012877604821474917, -0.012827608951387511, +-0.012777613049231971, -0.012727617115132400, -0.012677621149213785, -0.012627625151601117, -0.012577629122419387, -0.012527633061793582, -0.012477636969848696, -0.012427640846708830, +-0.012377644692500750, -0.012327648507348557, -0.012277652291377244, -0.012227656044711798, -0.012177659767477214, -0.012127663459798481, -0.012077667121799701, -0.012027670753607641, +-0.011977674355346402, -0.011927677927140980, -0.011877681469116361, -0.011827684981397541, -0.011777688464109506, -0.011727691917377251, -0.011677695341324878, -0.011627698736079155, +-0.011577702101764184, -0.011527705438504959, -0.011477708746426471, -0.011427712025653710, -0.011377715276311668, -0.011327718498525340, -0.011277721692418826, -0.011227724858118897, +-0.011177727995749655, -0.011127731105436094, -0.011077734187303205, -0.011027737241475979, -0.010977740268079411, -0.010927743267237604, -0.010877746239077328, -0.010827749183722686, +-0.010777752101298671, -0.010727754991930275, -0.010677757855742492, -0.010627760692860314, -0.010577763503408734, -0.010527766287511857, -0.010477769045296454, -0.010427771776886627, +-0.010377774482407372, -0.010327777161983680, -0.010277779815740545, -0.010227782443802959, -0.010177785046295918, -0.010127787623343527, -0.010077790175072555, -0.010027792701607108, +-0.009977795203072178, -0.009927797679592761, -0.009877800131293850, -0.009827802558300437, -0.009777804960736630, -0.009727807338729199, -0.009677809692402251, -0.009627812021880778, +-0.009577814327289774, -0.009527816608754234, -0.009477818866399155, -0.009427821100349525, -0.009377823310729457, -0.009327825497665717, -0.009277827661282415, -0.009227829801704543, +-0.009177831919057097, -0.009127834013465071, -0.009077836085053460, -0.009027838133946371, -0.008977840160270574, -0.008927842164150176, -0.008877844145710174, -0.008827846105075561, +-0.008777848042371333, -0.008727849957722486, -0.008677851851254012, -0.008627853723090022, -0.008577855573357284, -0.008527857402179907, -0.008477859209682888, -0.008427860995991221, +-0.008377862761229902, -0.008327864505523924, -0.008277866228998286, -0.008227867931777095, -0.008177869613987121, -0.008127871275752473, -0.008077872917198147, -0.008027874538449140, +-0.007977876139630444, -0.007927877720867060, -0.007877879282283094, -0.007827880824005316, -0.007777882346157837, -0.007727883848865652, -0.007677885332253757, -0.007627886796447149, +-0.007577888241570824, -0.007527889667749779, -0.007477891075108121, -0.007427892463772623, -0.007377893833867394, -0.007327895185517431, -0.007277896518847729, -0.007227897833983287, +-0.007177899131049100, -0.007127900410169277, -0.007077901671470591, -0.007027902915077151, -0.006977904141113954, -0.006927905349705996, -0.006877906540978275, -0.006827907715055787, +-0.006777908872063531, -0.006727910012125614, -0.006677911135368810, -0.006627912241917228, -0.006577913331895865, -0.006527914405429720, -0.006477915462643789, -0.006427916503663068, +-0.006377917528612556, -0.006327918537616363, -0.006277919530801261, -0.006227920508291360, -0.006177921470211658, -0.006127922416687153, -0.006077923347842841, -0.006027924263803722, +-0.005977925164693903, -0.005927926050640159, -0.005877926921766601, -0.005827927778198225, -0.005777928620060029, -0.005727929447477013, -0.005677930260574172, -0.005627931059476505, +-0.005577931844308124, -0.005527932615195800, -0.005477933372263645, -0.005427934115636657, -0.005377934845439833, -0.005327935561798172, -0.005277936264836673, -0.005227936954680332, +-0.005177937631453262, -0.005127938295282235, -0.005077938946291362, -0.005027939584605642, -0.004977940210350073, -0.004927940823649654, -0.004877941424629382, -0.004827942013413369, +-0.004777942590128389, -0.004727943154898552, -0.004677943707848858, -0.004627944249104304, -0.004577944778789890, -0.004527945297030614, -0.004477945803951475, -0.004427946299676583, +-0.004377946784332712, -0.004327947258043976, -0.004277947720935371, -0.004227948173131897, -0.004177948614758552, -0.004127949045940336, -0.004077949466801360, -0.004027949877468397, +-0.003977950278065560, -0.003927950668717847, -0.003877951049550258, -0.003827951420687791, -0.003777951782255445, -0.003727952134378220, -0.003677952477180227, -0.003627952810788240, +-0.003577953135326371, -0.003527953450919620, -0.003477953757692985, -0.003427954055771466, -0.003377954345280061, -0.003327954626343770, -0.003277954899086705, -0.003227955163635641, +-0.003177955420114689, -0.003127955668648848, -0.003077955909363118, -0.003027956142382499, -0.002977956367831988, -0.002927956585835699, -0.002877956796520407, -0.002827957000010223, +-0.002777957196430146, -0.002727957385905176, -0.002677957568560313, -0.002627957744520555, -0.002577957913910904, -0.002527958076855469, -0.002477958233481027, -0.002427958383911690, +-0.002377958528272457, -0.002327958666688328, -0.002277958799284302, -0.002227958926185378, -0.002177959047516558, -0.002127959163401952, -0.002077959273968336, -0.002027959379339822, +-0.001977959479641409, -0.001927959574998098, -0.001877959665534888, -0.001827959751376778, -0.001777959832647881, -0.001727959909474973, -0.001677959981982165, -0.001627960050294457, +-0.001577960114536849, -0.001527960174834340, -0.001477960231311931, -0.001427960284094622, -0.001377960333306523, -0.001327960379074412, -0.001277960421522400, -0.001227960460775487, +-0.001177960496958673, -0.001127960530196958, -0.001077960560615341, -0.001027960588337934, -0.000977960613491515, -0.000927960636200194, -0.000877960656588971, -0.000827960674782847, +-0.000777960690906820, -0.000727960705085893, -0.000677960717445063, -0.000627960728108444, -0.000577960737202810, -0.000527960744852275, -0.000477960751181838, -0.000427960756316500, +-0.000377960760381259, -0.000327960763501117, -0.000277960765801072, -0.000227960767405237, -0.000177960768440389, -0.000127960769030639, -0.000077960769300987 +}; + + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/arm_linear_interp_example_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/arm_linear_interp_example_f32.c new file mode 100644 index 000000000..56f469d15 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/arm_linear_interp_example_f32.c @@ -0,0 +1,182 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 29. November 2010 +* $Revision: V1.0.3 +* +* Project: CMSIS DSP Library +* Title: arm_linear_interp_example_f32.c +* +* Description: Example code demonstrating usage of sin function +* and uses linear interpolation to get higher precision +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.1 2010/10/05 KK +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 KK +* Production release and review comments incorporated. +* ------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup LinearInterpExample Linear Interpolate Example + * + * CMSIS DSP Software Library -- Linear Interpolate Example + * + * Description + * This example demonstrates usage of linear interpolate modules and fast math modules. + * Method 1 uses fast math sine function to calculate sine values using cubic interpolation and method 2 uses + * linear interpolation function and results are compared to reference output. + * Example shows linear interpolation function can be used to get higher precision compared to fast math sin calculation. + * + * \par Block Diagram: + * \par + * \image html linearInterpExampleMethod1.gif "Method 1: Sine caluclation using fast math" + * \par + * \image html linearInterpExampleMethod2.gif "Method 2: Sine caluclation using interpolation function" + * + * \par Variables Description: + * \par + * \li \c testInputSin_f32 points to the input values for sine calculation + * \li \c testRefSinOutput32_f32 points to the reference values caculated from sin() matlab function + * \li \c testOutput points to output buffer calculation from cubic interpolation + * \li \c testLinIntOutput points to output buffer calculation from linear interpolation + * \li \c snr1 Signal to noise ratio for reference and cubic interpolation output + * \li \c snr2 Signal to noise ratio for reference and linear interpolation output + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_sin_f32() + * - arm_linear_interp_f32() + * + * Refer + * \link arm_linear_interp_example_f32.c \endlink + * + */ + + +/** \example arm_linear_interp_example_f32.c + */ + +#include "arm_math.h" +#include "math_helper.h" + +#define SNR_THRESHOLD 90 +#define TEST_LENGTH_SAMPLES 10 +#define XSPACING (0.00005f) + +/* ---------------------------------------------------------------------- +* Test input data for F32 SIN function +* Generated by the MATLAB rand() function +* randn('state', 0) +* xi = (((1/4.18318581819710)* randn(blockSize, 1) * 2* pi)); +* --------------------------------------------------------------------*/ +float32_t testInputSin_f32[TEST_LENGTH_SAMPLES] = +{ + -0.649716504673081170, -2.501723745497831200, 0.188250329003310100, 0.432092748487532540, -1.722010988459680800, 1.788766476323060600, 1.786136060975809500, -0.056525543169408797, + 0.491596272728153760, 0.262309671126153390 +}; + +/*------------------------------------------------------------------------------ +* Reference out of SIN F32 function for Block Size = 10 +* Calculated from sin(testInputSin_f32) +*------------------------------------------------------------------------------*/ +float32_t testRefSinOutput32_f32[TEST_LENGTH_SAMPLES] = +{ + -0.604960695383043530, -0.597090287967934840, 0.187140422442966500, 0.418772124875992690, -0.988588831792106880, 0.976338412038794010, 0.976903856413481100, -0.056495446835214236, + 0.472033731854734240, 0.259311907228582830 +}; + +/*------------------------------------------------------------------------------ +* Method 1: Test out Buffer Calculated from Cubic Interpolation +*------------------------------------------------------------------------------*/ +float32_t testOutput[TEST_LENGTH_SAMPLES]; + +/*------------------------------------------------------------------------------ +* Method 2: Test out buffer Calculated from Linear Interpolation +*------------------------------------------------------------------------------*/ +float32_t testLinIntOutput[TEST_LENGTH_SAMPLES]; + +/*------------------------------------------------------------------------------ +* External table used for linear interpolation +*------------------------------------------------------------------------------*/ +extern float32_t arm_linear_interep_table[188495]; + +/* ---------------------------------------------------------------------- +* Global Variables for caluclating SNR's for Method1 & Method 2 +* ------------------------------------------------------------------- */ +float32_t snr1; +float32_t snr2; + +/* ---------------------------------------------------------------------------- +* Calculation of Sine values from Cubic Interpolation and Linear interpolation +* ---------------------------------------------------------------------------- */ +int32_t main(void) +{ + uint32_t i; + arm_status status; + + arm_linear_interp_instance_f32 S = {188495, -3.141592653589793238, XSPACING, &arm_linear_interep_table[0]}; + + /*------------------------------------------------------------------------------ + * Method 1: Test out Calculated from Cubic Interpolation + *------------------------------------------------------------------------------*/ + for(i=0; i< TEST_LENGTH_SAMPLES; i++) + { + testOutput[i] = arm_sin_f32(testInputSin_f32[i]); + } + + /*------------------------------------------------------------------------------ + * Method 2: Test out Calculated from Cubic Interpolation and Linear interpolation + *------------------------------------------------------------------------------*/ + + for(i=0; i< TEST_LENGTH_SAMPLES; i++) + { + testLinIntOutput[i] = arm_linear_interp_f32(&S, testInputSin_f32[i]); + } + + /*------------------------------------------------------------------------------ + * SNR calculation for method 1 + *------------------------------------------------------------------------------*/ + snr1 = arm_snr_f32(testRefSinOutput32_f32, testOutput, 2); + + /*------------------------------------------------------------------------------ + * SNR calculation for method 2 + *------------------------------------------------------------------------------*/ + snr2 = arm_snr_f32(testRefSinOutput32_f32, testLinIntOutput, 2); + + /*------------------------------------------------------------------------------ + * Initialise status depending on SNR calculations + *------------------------------------------------------------------------------*/ + if( snr2 > snr1) + { + status = ARM_MATH_SUCCESS; + } + else + { + status = ARM_MATH_TEST_FAILURE; + } + + /* ---------------------------------------------------------------------- + ** Loop here if the signals fail the PASS check. + ** This denotes a test failure + ** ------------------------------------------------------------------- */ + if( status != ARM_MATH_SUCCESS) + { + while(1); + } + + while(1); /* main function does not return */ +} + + /** \endlink */ + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/system_ARMCM0.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/system_ARMCM0.c new file mode 100644 index 000000000..ece74d2de --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/system_ARMCM0.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM0.c + * @brief CMSIS Cortex-M0 Device System Source File + * for CM0 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM0.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/system_ARMCM3.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/system_ARMCM3.c new file mode 100644 index 000000000..2f5fa0b93 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/system_ARMCM3.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM3.c + * @brief CMSIS Cortex-M3 Device System Source File + * for CM3 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM3.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/system_ARMCM4.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/system_ARMCM4.c new file mode 100644 index 000000000..beaaf6fb8 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_linear_interp_example/system_ARMCM4.c @@ -0,0 +1,81 @@ +/**************************************************************************//** + * @file system_ARMCM4.c + * @brief CMSIS Cortex-M4 Device System Source File + * for CM4 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM4.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2) | /* set CP10 Full Access */ + (3UL << 11*2) ); /* set CP11 Full Access */ + #endif + + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_cortexM0l_matrix_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_cortexM0l_matrix_example.uvopt new file mode 100644 index 000000000..527f80e53 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_cortexM0l_matrix_example.uvopt @@ -0,0 +1,304 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_matrix_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 211 + 1 +
376
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_matrix_example\../arm_matrix_example_f32.c\211 +
+ + 1 + 0 + 214 + 1 +
378
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_matrix_example\../arm_matrix_example_f32.c\214 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_matrix_example_f32.c + arm_matrix_example_f32.c + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\Common\Source\math_helper.c + math_helper.c + + + + + CMSIS + 1 + 0 + 0 + + 2 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM0.c + system_ARMCM0.c + + + 2 + 5 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM0.s + startup_ARMCM0.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 0 + 1 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + arm_cortexM0l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_matrix_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_cortexM0l_matrix_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_cortexM0l_matrix_example.uvproj new file mode 100644 index 000000000..ed3d98042 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_cortexM0l_matrix_example.uvproj @@ -0,0 +1,430 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M0 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M0") ESEL ELITTLE + + + + 4803 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM0l_matrix_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_matrix_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM0 + + ..\..\..\..\Include;..\..\Common\Include;..\..\..\..\..\Device\ARM\ARMCM0\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_matrix_example_f32.c + 1 + ..\arm_matrix_example_f32.c + + + math_helper.c + 1 + ..\..\Common\Source\math_helper.c + + + + + CMSIS Device + + + system_ARMCM0.c + 1 + ..\system_ARMCM0.c + + + startup_ARMCM0.s + 2 + .\startup_ARMCM0.s + + + + + CMSIS DSP_Library + + + arm_cortexM0l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_cortexM3l_matrix_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_cortexM3l_matrix_example.uvopt new file mode 100644 index 000000000..cef203a1d --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_cortexM3l_matrix_example.uvopt @@ -0,0 +1,304 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_matrix_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 211 + 1 +
372
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_matrix_example\../arm_matrix_example_f32.c\211 +
+ + 1 + 0 + 214 + 1 +
374
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_matrix_example\../arm_matrix_example_f32.c\214 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_matrix_example_f32.c + arm_matrix_example_f32.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\Common\Source\math_helper.c + math_helper.c + + + + + CMSIS DeviceSupport + 1 + 0 + 0 + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM3.c + system_ARMCM3.c + + + 2 + 4 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM3.s + startup_ARMCM3.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 5 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + arm_cortexM3l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_matrix_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_cortexM3l_matrix_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_cortexM3l_matrix_example.uvproj new file mode 100644 index 000000000..d7072dc43 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_cortexM3l_matrix_example.uvproj @@ -0,0 +1,430 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M3 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M3") ESEL ELITTLE + + + + 4349 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM3l_matrix_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_matrix_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM3 + + ..\..\..\..\Include;..\..\Common\Include;..\..\..\..\..\Device\ARM\ARMCM3\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_matrix_example_f32.c + 1 + ..\arm_matrix_example_f32.c + + + math_helper.c + 1 + ..\..\Common\Source\math_helper.c + + + + + CMSIS Device + + + system_ARMCM3.c + 1 + ..\system_ARMCM3.c + + + startup_ARMCM3.s + 2 + .\startup_ARMCM3.s + + + + + CMSIS DSP_Library + + + arm_cortexM3l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_cortexM4lf_matrix_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_cortexM4lf_matrix_example.uvopt new file mode 100644 index 000000000..3fcf3caa6 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_cortexM4lf_matrix_example.uvopt @@ -0,0 +1,304 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_matrix_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 211 + 1 +
378
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_matrix_example\../arm_matrix_example_f32.c\211 +
+ + 1 + 0 + 214 + 1 +
380
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_matrix_example\../arm_matrix_example_f32.c\214 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_matrix_example_f32.c + arm_matrix_example_f32.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\Common\Source\math_helper.c + math_helper.c + + + + + CMSIS DeviceSupport + 1 + 0 + 0 + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM4.c + system_ARMCM4.c + + + 2 + 4 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM4.s + startup_ARMCM4.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 5 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + arm_cortexM4lf_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_matrix_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_cortexM4lf_matrix_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_cortexM4lf_matrix_example.uvproj new file mode 100644 index 000000000..52ae6fb0a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_cortexM4lf_matrix_example.uvproj @@ -0,0 +1,430 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M4 FPU + ARM + CLOCK(12000000) CPUTYPE("Cortex-M4") ESEL ELITTLE FPU2 + + + + 5237 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM4lf_matrix_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_matrix_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM4, __FPU_PRESENT = 1 + + ..\..\..\..\Include;..\..\Common\Include;..\..\..\..\..\Device\ARM\ARMCM4\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_matrix_example_f32.c + 1 + ..\arm_matrix_example_f32.c + + + math_helper.c + 1 + ..\..\Common\Source\math_helper.c + + + + + CMSIS Device + + + system_ARMCM4.c + 1 + ..\system_ARMCM4.c + + + startup_ARMCM4.s + 2 + .\startup_ARMCM4.s + + + + + CMSIS DSP_Library + + + arm_cortexM4lf_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_matrix_example.ini b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_matrix_example.ini new file mode 100644 index 000000000..6d6cba436 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/arm_matrix_example.ini @@ -0,0 +1,14 @@ + +/* This file demonstrates how to Map memory ranges, specify read, write, and execute permissions + + The file can be executed in the following way: + 1) manually from uVision command window (in debug mode) using command: + INCLUIDE arm_matrix_example.ini + +*/ + + +// usual initialisation for target setup +MAP 0x20000000, 0x20008000 READ WRITE // allow R/W access to IO space + + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/startup_ARMCM0.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/startup_ARMCM0.s new file mode 100644 index 000000000..0acd34611 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/startup_ARMCM0.s @@ -0,0 +1,144 @@ +;/**************************************************************************//** +; * @file startup_ARMCM0.s +; * @brief CMSIS Cortex-M0 Core Device Startup File +; * for CM0 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/startup_ARMCM3.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/startup_ARMCM3.s new file mode 100644 index 000000000..5af584bdc --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/startup_ARMCM3.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM3.s +; * @brief CMSIS Cortex-M3 Core Device Startup File +; * for CM3 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/startup_ARMCM4.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/startup_ARMCM4.s new file mode 100644 index 000000000..09fdbd6ed --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/ARM/startup_ARMCM4.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM4.s +; * @brief CMSIS Cortex-M4 Core Device Startup File +; * for CM4 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/arm_matrix_example_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/arm_matrix_example_f32.c new file mode 100644 index 000000000..1fa348b3a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/arm_matrix_example_f32.c @@ -0,0 +1,218 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 29. November 2010 +* $Revision: V1.0.3 +* +* Project: CMSIS DSP Library +* Title: arm_matrix_example_f32.c +* +* Description: Example code demonstrating least square fit to data +* using matrix functions +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.1 2010/10/05 KK +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 KK +* Production release and review comments incorporated. +* ------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup MatrixExample Matrix Example + * + * \par Description: + * \par + * Demonstrates the use of Matrix Transpose, Matrix Muliplication, and Matrix Inverse + * functions to apply least squares fitting to input data. Least squares fitting is + * the procedure for finding the best-fitting curve that minimizes the sum of the + * squares of the offsets (least square error) from a given set of data. + * + * \par Algorithm: + * \par + * The linear combination of parameters considered is as follows: + * \par + * A * X = B, where \c X is the unknown value and can be estimated + * from \c A & \c B. + * \par + * The least squares estimate \c X is given by the following equation: + * \par + * X = Inverse(AT * A) * AT * B + * + * \par Block Diagram: + * \par + * \image html matrixExample.gif + * + * \par Variables Description: + * \par + * \li \c A_f32 input matrix in the linear combination equation + * \li \c B_f32 output matrix in the linear combination equation + * \li \c X_f32 unknown matrix estimated using \c A_f32 & \c B_f32 matrices + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_mat_init_f32() + * - arm_mat_trans_f32() + * - arm_mat_mult_f32() + * - arm_mat_inverse_f32() + * + * Refer + * \link arm_matrix_example_f32.c \endlink + * + */ + + +/** \example arm_matrix_example_f32.c + */ + +#include "arm_math.h" +#include "math_helper.h" + +#define SNR_THRESHOLD 90 + +/* -------------------------------------------------------------------------------- +* Test input data(Cycles) taken from FIR Q15 module for differant cases of blockSize +* and tapSize +* --------------------------------------------------------------------------------- */ + +const float32_t B_f32[4] = +{ + 782.0, 7577.0, 470.0, 4505.0 +}; + +/* -------------------------------------------------------------------------------- +* Formula to fit is C1 + C2 * numTaps + C3 * blockSize + C4 * numTaps * blockSize +* -------------------------------------------------------------------------------- */ + +const float32_t A_f32[16] = +{ + /* Const, numTaps, blockSize, numTaps*blockSize */ + 1.0, 32.0, 4.0, 128.0, + 1.0, 32.0, 64.0, 2048.0, + 1.0, 16.0, 4.0, 64.0, + 1.0, 16.0, 64.0, 1024.0, +}; + + +/* ---------------------------------------------------------------------- +* Temporary buffers for storing intermediate values +* ------------------------------------------------------------------- */ +/* Transpose of A Buffer */ +float32_t AT_f32[16]; +/* (Transpose of A * A) Buffer */ +float32_t ATMA_f32[16]; +/* Inverse(Transpose of A * A) Buffer */ +float32_t ATMAI_f32[16]; +/* Test Output Buffer */ +float32_t X_f32[4]; + +/* ---------------------------------------------------------------------- +* Reference ouput buffer C1, C2, C3 and C4 taken from MATLAB +* ------------------------------------------------------------------- */ +const float32_t xRef_f32[4] = {73.0, 8.0, 21.25, 2.875}; + +float32_t snr; + + +/* ---------------------------------------------------------------------- +* Max magnitude FFT Bin test +* ------------------------------------------------------------------- */ + +int32_t main(void) +{ + + arm_matrix_instance_f32 A; /* Matrix A Instance */ + arm_matrix_instance_f32 AT; /* Matrix AT(A transpose) instance */ + arm_matrix_instance_f32 ATMA; /* Matrix ATMA( AT multiply with A) instance */ + arm_matrix_instance_f32 ATMAI; /* Matrix ATMAI(Inverse of ATMA) instance */ + arm_matrix_instance_f32 B; /* Matrix B instance */ + arm_matrix_instance_f32 X; /* Matrix X(Unknown Matrix) instance */ + + uint32_t srcRows, srcColumns; /* Temporary variables */ + arm_status status; + + /* Initialise A Matrix Instance with numRows, numCols and data array(A_f32) */ + srcRows = 4; + srcColumns = 4; + arm_mat_init_f32(&A, srcRows, srcColumns, (float32_t *)A_f32); + + /* Initialise Matrix Instance AT with numRows, numCols and data array(AT_f32) */ + srcRows = 4; + srcColumns = 4; + arm_mat_init_f32(&AT, srcRows, srcColumns, AT_f32); + + /* calculation of A transpose */ + status = arm_mat_trans_f32(&A, &AT); + + + /* Initialise ATMA Matrix Instance with numRows, numCols and data array(ATMA_f32) */ + srcRows = 4; + srcColumns = 4; + arm_mat_init_f32(&ATMA, srcRows, srcColumns, ATMA_f32); + + /* calculation of AT Multiply with A */ + status = arm_mat_mult_f32(&AT, &A, &ATMA); + + /* Initialise ATMAI Matrix Instance with numRows, numCols and data array(ATMAI_f32) */ + srcRows = 4; + srcColumns = 4; + arm_mat_init_f32(&ATMAI, srcRows, srcColumns, ATMAI_f32); + + /* calculation of Inverse((Transpose(A) * A) */ + status = arm_mat_inverse_f32(&ATMA, &ATMAI); + + /* calculation of (Inverse((Transpose(A) * A)) * Transpose(A)) */ + status = arm_mat_mult_f32(&ATMAI, &AT, &ATMA); + + /* Initialise B Matrix Instance with numRows, numCols and data array(B_f32) */ + srcRows = 4; + srcColumns = 1; + arm_mat_init_f32(&B, srcRows, srcColumns, (float32_t *)B_f32); + + /* Initialise X Matrix Instance with numRows, numCols and data array(X_f32) */ + srcRows = 4; + srcColumns = 1; + arm_mat_init_f32(&X, srcRows, srcColumns, X_f32); + + /* calculation ((Inverse((Transpose(A) * A)) * Transpose(A)) * B) */ + status = arm_mat_mult_f32(&ATMA, &B, &X); + + /* Comparison of reference with test output */ + snr = arm_snr_f32((float32_t *)xRef_f32, X_f32, 4); + + /*------------------------------------------------------------------------------ + * Initialise status depending on SNR calculations + *------------------------------------------------------------------------------*/ + if( snr > SNR_THRESHOLD) + { + status = ARM_MATH_SUCCESS; + } + else + { + status = ARM_MATH_TEST_FAILURE; + } + + + /* ---------------------------------------------------------------------- + ** Loop here if the signals fail the PASS check. + ** This denotes a test failure + ** ------------------------------------------------------------------- */ + if( status != ARM_MATH_SUCCESS) + { + while(1); + } + + while(1); /* main function does not return */ +} + + /** \endlink */ + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/system_ARMCM0.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/system_ARMCM0.c new file mode 100644 index 000000000..ece74d2de --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/system_ARMCM0.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM0.c + * @brief CMSIS Cortex-M0 Device System Source File + * for CM0 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM0.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/system_ARMCM3.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/system_ARMCM3.c new file mode 100644 index 000000000..2f5fa0b93 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/system_ARMCM3.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM3.c + * @brief CMSIS Cortex-M3 Device System Source File + * for CM3 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM3.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/system_ARMCM4.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/system_ARMCM4.c new file mode 100644 index 000000000..beaaf6fb8 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_matrix_example/system_ARMCM4.c @@ -0,0 +1,81 @@ +/**************************************************************************//** + * @file system_ARMCM4.c + * @brief CMSIS Cortex-M4 Device System Source File + * for CM4 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM4.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2) | /* set CP10 Full Access */ + (3UL << 11*2) ); /* set CP11 Full Access */ + #endif + + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_cortexM0l_signal_converge_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_cortexM0l_signal_converge_example.uvopt new file mode 100644 index 000000000..bee0dbd68 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_cortexM0l_signal_converge_example.uvopt @@ -0,0 +1,318 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_cortexM0l_biquad_cascade_df1_coverage.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 237 + 1 +
420
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_signal_converge_example\../arm_signal_converge_example_f32.c\237 +
+ + 1 + 0 + 240 + 1 +
422
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_signal_converge_example\../arm_signal_converge_example_f32.c\240 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_signal_converge_example_f32.c + arm_signal_converge_example_f32.c + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\arm_signal_converge_data.c + arm_signal_converge_data.c + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\Common\Source\math_helper.c + math_helper.c + + + + + CMSIS + 1 + 0 + 0 + + 2 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM0.c + system_ARMCM0.c + + + 2 + 6 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM0.s + startup_ARMCM0.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 0 + 1 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + arm_cortexM0l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_signal_converge_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_cortexM0l_signal_converge_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_cortexM0l_signal_converge_example.uvproj new file mode 100644 index 000000000..0fc9af291 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_cortexM0l_signal_converge_example.uvproj @@ -0,0 +1,435 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M0 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M0") ESEL ELITTLE + + + + 4803 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM0l_signal_converge_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_cortexM0l_biquad_cascade_df1_coverage.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM0 + + ..\..\..\..\Include;..\..\Common\Include;..\..\..\..\..\Device\ARM\ARMCM0\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_signal_converge_example_f32.c + 1 + ..\arm_signal_converge_example_f32.c + + + arm_signal_converge_data.c + 1 + ..\arm_signal_converge_data.c + + + math_helper.c + 1 + ..\..\Common\Source\math_helper.c + + + + + CMSIS Device + + + system_ARMCM0.c + 1 + ..\system_ARMCM0.c + + + startup_ARMCM0.s + 2 + .\startup_ARMCM0.s + + + + + CMSIS DSP_Library + + + arm_cortexM0l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_cortexM3l_signal_converge_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_cortexM3l_signal_converge_example.uvopt new file mode 100644 index 000000000..8ac491b50 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_cortexM3l_signal_converge_example.uvopt @@ -0,0 +1,318 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_signal_converge_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 237 + 1 +
430
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_signal_converge_example\../arm_signal_converge_example_f32.c\237 +
+ + 1 + 0 + 240 + 1 +
432
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_signal_converge_example\../arm_signal_converge_example_f32.c\240 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\arm_signal_converge_data.c + arm_signal_converge_data.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_signal_converge_example_f32.c + arm_signal_converge_example_f32.c + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\Common\Source\math_helper.c + math_helper.c + + + + + CMSIS DeviceSupport + 1 + 0 + 0 + + 2 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM3.c + system_ARMCM3.c + + + 2 + 5 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM3.s + startup_ARMCM3.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 6 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + arm_cortexM3l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_signal_converge_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_cortexM3l_signal_converge_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_cortexM3l_signal_converge_example.uvproj new file mode 100644 index 000000000..0d35a267c --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_cortexM3l_signal_converge_example.uvproj @@ -0,0 +1,435 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M3 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M3") ESEL ELITTLE + + + + 4349 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM3l_signal_converge_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_signal_converge_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM3 + + ..\..\..\..\Include;..\..\Common\Include;..\..\..\..\..\Device\ARM\ARMCM3\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_signal_converge_data.c + 1 + ..\arm_signal_converge_data.c + + + arm_signal_converge_example_f32.c + 1 + ..\arm_signal_converge_example_f32.c + + + math_helper.c + 1 + ..\..\Common\Source\math_helper.c + + + + + CMSIS Device + + + system_ARMCM3.c + 1 + ..\system_ARMCM3.c + + + startup_ARMCM3.s + 2 + .\startup_ARMCM3.s + + + + + CMSIS DSP_Library + + + arm_cortexM3l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_cortexM4lf_signal_converge_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_cortexM4lf_signal_converge_example.uvopt new file mode 100644 index 000000000..c95131087 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_cortexM4lf_signal_converge_example.uvopt @@ -0,0 +1,318 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_signal_converge_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 237 + 1 +
426
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_signal_converge_example\../arm_signal_converge_example_f32.c\237 +
+ + 1 + 0 + 240 + 1 +
428
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_signal_converge_example\../arm_signal_converge_example_f32.c\240 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\arm_signal_converge_data.c + arm_signal_converge_data.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_signal_converge_example_f32.c + arm_signal_converge_example_f32.c + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\Common\Source\math_helper.c + math_helper.c + + + + + CMSIS DeviceSupport + 1 + 0 + 0 + + 2 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM4.c + system_ARMCM4.c + + + 2 + 5 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM4.s + startup_ARMCM4.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 6 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + arm_cortexM4lf_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_signal_converge_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_cortexM4lf_signal_converge_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_cortexM4lf_signal_converge_example.uvproj new file mode 100644 index 000000000..103c61c01 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_cortexM4lf_signal_converge_example.uvproj @@ -0,0 +1,435 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M4 FPU + ARM + CLOCK(12000000) CPUTYPE("Cortex-M4") ESEL ELITTLE FPU2 + + + + 5237 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM4lf_signal_converge_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_signal_converge_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM4, __FPU_PRESENT = 1 + + ..\..\..\..\Include;..\..\Common\Include;..\..\..\..\..\Device\ARM\ARMCM4\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_signal_converge_data.c + 1 + ..\arm_signal_converge_data.c + + + arm_signal_converge_example_f32.c + 1 + ..\arm_signal_converge_example_f32.c + + + math_helper.c + 1 + ..\..\Common\Source\math_helper.c + + + + + CMSIS Device + + + system_ARMCM4.c + 1 + ..\system_ARMCM4.c + + + startup_ARMCM4.s + 2 + .\startup_ARMCM4.s + + + + + CMSIS DSP_Library + + + arm_cortexM4lf_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_signal_converge_example.ini b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_signal_converge_example.ini new file mode 100644 index 000000000..d48a8f2d6 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/arm_signal_converge_example.ini @@ -0,0 +1,14 @@ + +/* This file demonstrates how to Map memory ranges, specify read, write, and execute permissions + + The file can be executed in the following way: + 1) manually from uVision command window (in debug mode) using command: + INCLUIDE arm_signal_converge_example.ini + +*/ + + +// usual initialisation for target setup +MAP 0x20000000, 0x20008000 READ WRITE // allow R/W access to IO space + + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/startup_ARMCM0.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/startup_ARMCM0.s new file mode 100644 index 000000000..0acd34611 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/startup_ARMCM0.s @@ -0,0 +1,144 @@ +;/**************************************************************************//** +; * @file startup_ARMCM0.s +; * @brief CMSIS Cortex-M0 Core Device Startup File +; * for CM0 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/startup_ARMCM3.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/startup_ARMCM3.s new file mode 100644 index 000000000..5af584bdc --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/startup_ARMCM3.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM3.s +; * @brief CMSIS Cortex-M3 Core Device Startup File +; * for CM3 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/startup_ARMCM4.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/startup_ARMCM4.s new file mode 100644 index 000000000..09fdbd6ed --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/ARM/startup_ARMCM4.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM4.s +; * @brief CMSIS Cortex-M4 Core Device Startup File +; * for CM4 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/arm_signal_converge_data.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/arm_signal_converge_data.c new file mode 100644 index 000000000..be64907a7 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/arm_signal_converge_data.c @@ -0,0 +1,229 @@ +#include "arm_math.h" + +/* ---------------------------------------------------------------------- +** Test input data for Floating point LMS Norm FIR filter +** Generated by the MATLAB randn() function +** ------------------------------------------------------------------- */ + +float32_t testInput_f32[1536] = +{ +-0.432565, -1.665584, 0.125332, 0.287676, -1.146471, 1.190915, 1.189164, -0.037633, +0.327292, 0.174639, -0.186709, 0.725791, -0.588317, 2.183186, -0.136396, 0.113931, +1.066768, 0.059281, -0.095648, -0.832349, 0.294411, -1.336182, 0.714325, 1.623562, +-0.691776, 0.857997, 1.254001, -1.593730, -1.440964, 0.571148, -0.399886, 0.689997, +0.815622, 0.711908, 1.290250, 0.668601, 1.190838, -1.202457, -0.019790, -0.156717, +-1.604086, 0.257304, -1.056473, 1.415141, -0.805090, 0.528743, 0.219321, -0.921902, +-2.170674, -0.059188, -1.010634, 0.614463, 0.507741, 1.692430, 0.591283, -0.643595, +0.380337, -1.009116, -0.019511, -0.048221, 0.000043, -0.317859, 1.095004, -1.873990, +0.428183, 0.895638, 0.730957, 0.577857, 0.040314, 0.677089, 0.568900, -0.255645, +-0.377469, -0.295887, -1.475135, -0.234004, 0.118445, 0.314809, 1.443508, -0.350975, +0.623234, 0.799049, 0.940890, -0.992092, 0.212035, 0.237882, -1.007763, -0.742045, +1.082295, -0.131500, 0.389880, 0.087987, -0.635465, -0.559573, 0.443653, -0.949904, +0.781182, 0.568961, -0.821714, -0.265607, -1.187777, -2.202321, 0.986337, -0.518635, +0.327368, 0.234057, 0.021466, -1.003944, -0.947146, -0.374429, -1.185886, -1.055903, +1.472480, 0.055744, -1.217317, -0.041227, -1.128344, -1.349278, -0.261102, 0.953465, +0.128644, 0.656468, -1.167819, -0.460605, -0.262440, -1.213152, -1.319437, 0.931218, +0.011245, -0.645146, 0.805729, 0.231626, -0.989760, 1.339586, 0.289502, 1.478917, +1.138028, -0.684139, -1.291936, -0.072926, -0.330599, -0.843628, 0.497770, 1.488490, +-0.546476, -0.846758, -0.246337, 0.663024, -0.854197, -1.201315, -0.119869, -0.065294, +0.485296, -0.595491, -0.149668, -0.434752, -0.079330, 1.535152, -0.606483, -1.347363, +0.469383, -0.903567, 0.035880, -0.627531, 0.535398, 0.552884, -0.203690, -2.054325, +0.132561, 1.592941, 1.018412, -1.580402, -0.078662, -0.681657, -1.024553, -1.234353, +0.288807, -0.429303, 0.055801, -0.367874, -0.464973, 0.370961, 0.728283, 2.112160, +-1.357298, -1.022610, 1.037834, -0.389800, -1.381266, 0.315543, 1.553243, 0.707894, +1.957385, 0.504542, 1.864529, -0.339812, -1.139779, -0.211123, 1.190245, -1.116209, +0.635274, -0.601412, 0.551185, -1.099840, 0.085991, -2.004563, -0.493088, 0.462048, +-0.321005, 1.236556, -0.631280, -2.325211, -1.231637, 1.055648, -0.113224, 0.379224, +0.944200, -2.120427, -0.644679, -0.704302, -1.018137, -0.182082, 1.521013, -0.038439, +1.227448, -0.696205, 0.007524, -0.782893, 0.586939, -0.251207, 0.480136, 0.668155, +-0.078321, 0.889173, 2.309287, 0.524639, -0.011787, 0.913141, 0.055941, -1.107070, +0.485498, -0.005005, -0.276218, 1.276452, 1.863401, -0.522559, 0.103424, -0.807649, +0.680439, -2.364590, 0.990115, 0.218899, 0.261662, 1.213444, -0.274667, -0.133134, +-1.270500, -1.663606, -0.703554, 0.280880, -0.541209, -1.333531, 1.072686, -0.712085, +-0.011286, -0.000817, -0.249436, 0.396575, -0.264013, -1.664011, -1.028975, 0.243095, +-1.256590, -0.347183, -0.941372, -1.174560, -1.021142, -0.401667, 0.173666, -0.116118, +1.064119, -0.245386, -1.517539, 0.009734, 0.071373, 0.316536, 0.499826, 1.278084, +-0.547816, 0.260808, -0.013177, -0.580264, 2.136308, -0.257617, -1.409528, 1.770101, +0.325546, -1.119040, 0.620350, 1.269782, -0.896043, 0.135175, -0.139040, -1.163395, +1.183720, -0.015430, 0.536219, -0.716429, -0.655559, 0.314363, 0.106814, 1.848216, +-0.275106, 2.212554, 1.508526, -1.945079, -1.680543, -0.573534, -0.185817, 0.008934, +0.836950, -0.722271, -0.721490, -0.201181, -0.020464, 0.278890, 1.058295, 0.621673, +-1.750615, 0.697348, 0.811486, 0.636345, 1.310080, 0.327098, -0.672993, -0.149327, +-2.449018, 0.473286, 0.116946, -0.591104, -0.654708, -1.080662, -0.047731, 0.379345, +-0.330361, -0.499898, -0.035979, -0.174760, -0.957265, 1.292548, 0.440910, 1.280941, +-0.497730, -1.118717, 0.807650, 0.041200, -0.756209, -0.089129, -2.008850, 1.083918, +-0.981191, -0.688489, 1.339479, -0.909243, -0.412858, -0.506163, 1.619748, 0.080901, +-1.081056, -1.124518, 1.735676, 1.937459, 1.635068, -1.255940, -0.213538, -0.198932, +0.307499, -0.572325, -0.977648, -0.446809, 1.082092, 2.372648, 0.229288, -0.266623, +0.701672, -0.487590, 1.862480, 1.106851, -1.227566, -0.669885, 1.340929, 0.388083, +0.393059, -1.707334, 0.227859, 0.685633, -0.636790, -1.002606, -0.185621, -1.054033, +-0.071539, 0.279198, 1.373275, 0.179841, -0.542017, 1.634191, 0.825215, 0.230761, +0.671634, -0.508078, 0.856352, 0.268503, 0.624975, -1.047338, 1.535670, 0.434426, +-1.917136, 0.469940, 1.274351, 0.638542, 1.380782, 1.319843, -0.909429, -2.305605, +1.788730, 0.390798, 0.020324, -0.405977, -1.534895, 0.221373, -1.374479, -0.839286, +-0.208643, 0.755913, 0.375734, -1.345413, 1.481876, 0.032736, 1.870453, -1.208991, +-0.782632, -0.767299, -0.107200, -0.977057, -0.963988, -2.379172, -0.838188, 0.257346, +-0.183834, -0.167615, -0.116989, 0.168488, -0.501206, -0.705076, 0.508165, -0.420922, +0.229133, -0.959497, -0.146043, 0.744538, -0.890496, 0.139062, -0.236144, -0.075459, +-0.358572, -2.077635, -0.143546, 1.393341, 0.651804, -0.377134, -0.661443, 0.248958, +-0.383516, -0.528480, 0.055388, 1.253769, -2.520004, 0.584856, -1.008064, 0.944285, +-2.423957, -0.223831, 0.058070, -0.424614, -0.202918, -1.513077, -1.126352, -0.815002, +0.366614, -0.586107, 1.537409, 0.140072, -1.862767, -0.454193, -0.652074, 0.103318, +-0.220632, -0.279043, -0.733662, -0.064534, -1.444004, 0.612340, -1.323503, -0.661577, +-0.146115, 0.248085, -0.076633, 1.738170, 1.621972, 0.626436, 0.091814, -0.807607, +-0.461337, -1.405969, -0.374530, -0.470911, 1.751296, 0.753225, 0.064989, -0.292764, +0.082823, 0.766191, 2.236850, 0.326887, 0.863304, 0.679387, 0.554758, 1.001630, +1.259365, 0.044151, -0.314138, 0.226708, 0.996692, 1.215912, -0.542702, 0.912228, +-0.172141, -0.335955, 0.541487, 0.932111, -0.570253, -1.498605, -0.050346, 0.553025, +0.083498, 1.577524, -0.330774, 0.795155, -0.784800, -1.263121, 0.666655, -1.392632, +-1.300562, -0.605022, -1.488565, 0.558543, -0.277354, -1.293685, -0.888435, -0.986520, +-0.071618, -2.414591, -0.694349, -1.391389, 0.329648, 0.598544, 0.147175, -0.101439, +-2.634981, 0.028053, -0.876310, -0.265477, -0.327578, -1.158247, 0.580053, 0.239756, +-0.350885, 0.892098, 1.578299, -1.108174, -0.025931, -1.110628, 0.750834, 0.500167, +-0.517261, -0.559209, -0.753371, 0.925813, -0.248520, -0.149835, -1.258415, 0.312620, +2.690277, 0.289696, -1.422803, 0.246786, -1.435773, 0.148573, -1.693073, 0.719188, +1.141773, 1.551936, 1.383630, -0.758092, 0.442663, 0.911098, -1.074086, 0.201762, +0.762863, -1.288187, -0.952962, 0.778175, -0.006331, 0.524487, 1.364272, 0.482039, +-0.787066, 0.751999, -0.166888, -0.816228, 2.094065, 0.080153, -0.937295, 0.635739, +1.682028, 0.593634, 0.790153, 0.105254, -0.158579, 0.870907, -0.194759, 0.075474, +-0.526635, -0.685484, -0.268388, -1.188346, 0.248579, 0.102452, -0.041007, -2.247582, +-0.510776, 0.249243, 0.369197, 0.179197, -0.037283, -1.603310, 0.339372, -0.131135, +0.485190, 0.598751, -0.086031, 0.325292, -0.335143, -0.322449, -0.382374, -0.953371, +0.233576, 1.235245, -0.578532, -0.501537, 0.722864, 0.039498, 1.541279, -1.701053, +-1.033741, -0.763708, 2.176426, 0.431612, -0.443765, 0.029996, -0.315671, 0.977846, +0.018295, 0.817963, 0.702341, -0.231271, -0.113690, 0.127941, -0.799410, -0.238612, +-0.089463, -1.023264, 0.937538, -1.131719, -0.710702, -1.169501, 1.065437, -0.680394, +-1.725773, 0.813200, 1.441867, 0.672272, 0.138665, -0.859534, -0.752251, 1.229615, +1.150754, -0.608025, 0.806158, 0.217133, -0.373461, -0.832030, 0.286866, -1.818892, +-1.573051, 2.015666, -0.071982, 2.628909, -0.243317, 0.173276, 0.923207, -0.178553, +-0.521705, 1.431962, -0.870117, 0.807542, -0.510635, 0.743514, 0.847898, -0.829901, +0.532994, 1.032848, -1.052024, 0.362114, -0.036787, -1.227636, -0.275099, -0.160435, +-1.083575, -1.954213, -0.909487, -0.005579, -1.723490, 1.263077, -0.600433, -2.063925, +0.110911, 1.487614, 0.053002, 0.161981, -0.026878, 0.173576, 0.882168, 0.182294, +0.755295, 0.508035, 0.131880, 0.280104, -0.982848, -0.944087, -0.013058, 0.354345, +-0.894709, 0.812111, 0.109537, 2.731644, 0.411079, -1.306862, 0.383806, 0.499504, +-0.510786, 0.234922, -0.597825, 0.020771, 0.419443, 1.191104, 0.771214, -2.644222, +0.285430, 0.826093, -0.008122, 0.858438, 0.774788, 1.305945, 1.231503, 0.958564, +-1.654548, -0.990396, 0.685236, -0.974870, -0.606726, 0.686794, 0.020049, 1.063801, +-1.341050, 0.479510, -1.633974, -1.442665, 0.293781, -0.140364, -1.130341, -0.292538, +-0.582536, -0.896348, 0.248601, -1.489663, 0.313509, -2.025084, 0.528990, 0.343471, +0.758193, -0.691940, 0.680179, -1.072541, 0.899772, -2.123092, 0.284712, -0.733323, +-0.773376, 0.151842, -0.336843, 0.970761, -0.107236, 1.013492, -0.475347, 0.068948, +0.398592, 1.116326, 0.620451, -0.287674, -1.371773, -0.685868, 0.331685, -0.997722, +0.291418, 1.107078, 0.244959, 0.164976, 0.406231, 1.215981, 1.448424, -1.025137, +0.205418, 0.588882, -0.264024, 2.495318, 0.855948, -0.850954, 0.811879, 0.700242, +0.759938, -1.712909, 1.537021, -1.609847, 1.109526, -1.109704, 0.385469, 0.965231, +0.818297, 0.037049, -0.926012, -0.111919, -0.803030, -1.665006, -0.901401, 0.588350, +0.554159, -0.415173, 0.061795, 0.457432, 0.199014, 0.257558, 2.080730, -2.277237, +0.339022, 0.289894, 0.662261, -0.580860, 0.887752, 0.171871, 0.848821, 0.963769, +1.321918, -0.064345, 1.317053, 0.228017, -1.429637, -0.149701, -0.504968, -1.729141, +-0.417472, -0.614969, 0.720777, 0.339364, 0.882845, 0.284245, -0.145541, -0.089646, +0.289161, 1.164831, 0.805729, -1.355643, 0.120893, -0.222178, 0.571732, -0.300140, +1.134277, -0.179356, -1.467067, 1.395346, 0.440836, 0.565384, -0.693623, 0.833869, +-2.237378, 1.097644, -0.001617, -1.614573, -1.228727, 0.207405, 0.220942, -1.006073, +-0.453067, 1.399453, -0.461964, 0.032716, 0.798783, 0.896816, 0.137892, -1.619146, +-1.646606, 0.428707, -0.737231, 0.564926, -1.384167, 0.460268, 0.629384, 0.379847, +-1.013330, -0.347243, 0.441912, -1.590240, -0.701417, -1.077601, 1.002220, 1.729481, +0.709032, -0.747897, 0.228862, -0.223497, -0.853275, 0.345627, 0.109764, -1.133039, +-0.683124, -0.277856, 0.654790, -1.248394, -0.597539, -0.481813, 0.983372, 1.762121, +1.427402, 0.911763, 0.326823, 0.069619, -1.499763, -0.418223, -0.021037, 0.228425, +-1.008196, -0.664622, 0.558177, -1.188542, -0.775481, 0.271042, 1.534976, -1.052283, +0.625559, -0.797626, -0.313522, -0.602210, 1.259060, 0.858484, -2.105292, -0.360937, +0.553557, -1.556384, -0.206666, -0.425568, 0.493778, -0.870908, 0.079828, -0.521619, +-1.413861, -0.384293, -0.457922, -0.291471, -0.301224, -1.588594, 1.094287, 1.324167, +-0.126480, -0.737164, 0.213719, -0.400529, 0.064938, -1.757996, 1.686748, 0.327400, +0.715967, 1.598648, -2.064741, -0.743632, 0.176185, 0.527839, -0.553153, 0.298280, +-1.226607, -0.189676, -0.301713, 0.956956, -0.533366, -0.901082, -0.892552, 0.278717, +-0.745807, 1.603464, 0.574270, 0.320655, -0.151383, 0.315762, 1.343703, -2.237832, +1.292906, -0.378459, 0.002521, 0.884641, 0.582450, -1.614244, -1.503666, 0.573586, +-0.910537, -1.631277, -0.359138, -0.397616, -1.161307, -1.109838, 0.290672, -1.910239, +1.314768, 0.665319, -0.275115, -0.023022, -0.907976, -1.043657, 0.373516, 0.901532, +1.278539, -0.128456, 0.612821, 1.956518, 2.266326, -0.373959, 2.238039, -0.159580, +-0.703281, 0.563477, -0.050296, 1.163593, 0.658808, -1.550089, -3.029118, 0.540578, +-1.008998, 0.908047, 1.582303, -0.979088, 1.007902, 0.158491, -0.586927, 1.574082, +-0.516649, 1.227800, 1.583876, -2.088950, 2.949545, 1.356125, 1.050068, -0.767170, +-0.257653, -1.371845, -1.267656, -0.894948, 0.589089, 1.842629, 1.347967, -0.491253, +-2.177568, 0.237000, -0.735411, -1.779419, 0.448030, 0.581214, 0.856607, -0.266263, +-0.417470, -0.205806, -0.174323, 0.217577, 1.684295, 0.119528, 0.650667, 2.080061, +-0.339225, 0.730113, 0.293969, -0.849109, -2.533858, -2.378941, -0.346276, -0.610937, +-0.408192, -1.415611, 0.227122, 0.207974, -0.719718, 0.757762, -1.643135, -1.056813, +-0.251662, -1.298441, 1.233255, 1.494625, 0.235938, -1.404359, 0.658791, -2.556613, +-0.534945, 3.202525, 0.439198, -1.149901, 0.886765, -0.283386, 1.035336, -0.364878, +1.341987, 1.008872, 0.213874, -0.299264, 0.255849, -0.190826, -0.079060, 0.699851, +-0.796540, -0.801284, -0.007599, -0.726810, -1.490902, 0.870335, -0.265675, -1.566695, +-0.394636, -0.143855, -2.334247, -1.357539, -1.815689, 1.108422, -0.142115, 1.112757, +0.559264, 0.478370, -0.679385, 0.284967, -1.332935, -0.723980, -0.663600, 0.198443, +-1.794868, -1.387673, 0.197768, 1.469328, 0.366493, -0.442775, -0.048563, 0.077709, +1.957910, -0.072848, 0.938810, -0.079608, -0.800959, 0.309424, 1.051826, -1.664211, +-1.090792, -0.191731, 0.463401, -0.924147, -0.649657, 0.622893, -1.335107, 1.047689, +0.863327, -0.642411, 0.660010, 1.294116, 0.314579, 0.859573, 0.128670, 0.016568, +-0.072801, -0.994310, -0.747358, -0.030814, 0.988355, -0.599017, 1.476644, -0.813801, +0.645040, -1.309919, -0.867425, -0.474233, 0.222417, 1.871323, 0.110001, -0.411341, +0.511242, -1.199117, -0.096361, 0.445817, -0.295825, -0.167996, 0.179543, 0.421118, +1.677678, 1.996949, 0.696964, -1.366382, 0.363045, -0.567044, -1.044154, 0.697139, +0.484026, -0.193751, -0.378095, -0.886374, -1.840197, -1.628195, -1.173789, -0.415411, +0.175088, 0.229433, -1.240889, 0.700004, 0.426877, 1.454803, -0.510186, -0.006657, +-0.525496, 0.717698, 1.088374, 0.500552, 2.771790, -0.160309, 0.429489, -1.966817, +-0.546019, -1.888395, -0.107952, -1.316144, -0.672632, -0.902365, -0.154798, 0.947242, +1.550375, 0.429040, -0.560795, 0.179304, -0.771509, -0.943390, -1.407569, -1.906131, +-0.065293, 0.672149, 0.206147, -0.008124, 0.020042, -0.558447, 1.886079, -0.219975, +-1.414395, -0.302811, -0.569574, -0.121495, -0.390171, -0.844287, -1.737757, -0.449520, +-1.547933, -0.095776, 0.907714, 2.369602, 0.519768, 0.410525, 1.052585, 0.428784, +1.295088, -0.186053, 0.130733, -0.657627, -0.759267, -0.595170, 0.812400, 0.069541, +-1.833687, 1.827363, 0.654075, -1.544769, -0.375109, 0.207688, -0.765615, -0.106355, +0.338769, 1.033461, -1.404822, -1.030570, -0.643372, 0.170787, 1.344839, 1.936273, +0.741336, 0.811980, -0.142808, -0.099858, -0.800131, 0.493249, 1.237574, 1.295951, +-0.278196, 0.217127, 0.630728, -0.548549, 0.229632, 0.355311, 0.521284, -0.615971, +1.345803, 0.974922, -2.377934, -1.092319, -0.325710, -2.012228, 1.567660, 0.233337, +0.646420, -1.129412, 0.197038, 1.696870, 0.726034, 0.792526, 0.603357, -0.058405, +-1.108666, 2.144229, -1.352821, 0.457021, 0.391175, 2.073013, -0.323318, 1.468132, +-0.502399, 0.209593, 0.754800, -0.948189, 0.613157, 1.760503, 0.088762, 2.595570, +-0.675470, 2.786804, -0.016827, 0.271651, -0.914102, -1.951371, -0.317418, 0.588333, +0.828996, -1.674851, -1.922293, -0.436662, 0.044974, 2.416609, -0.309892, 0.187583, +0.947699, -0.525703, -1.115605, -1.592320, 1.174844, 0.485144, 1.645480, -0.454233, +1.008768, 2.049403, 0.602020, 0.017860, -1.610426, 1.238752, 0.683587, -0.780716, +0.530979, 2.134498, 0.354361, 0.231700, 1.287980, -0.013488, -1.333345, -0.556343, +0.755597, -0.911854, 1.371684, 0.245580, 0.118845, 0.384690, -0.070152, -0.578309, +0.469308, 1.299687, 1.634798, -0.702809, 0.807253, -1.027451, 1.294496, 0.014930, +0.218705, 1.713188, -2.078805, 0.112917, -1.086491, -1.558311, 0.637406, -0.404576, +-0.403325, 0.084076, -0.435349, -0.562623, 0.878062, -0.814650, -0.258363, 0.493299, +-0.802694, -0.008329, 0.627571, 0.154382, 2.580735, -1.306246, 1.023526, 0.777795, +-0.833884, -0.586663, 0.065664, -0.012342, -0.076987, -1.558587, 1.702607, -0.468984, +0.094619, 0.287071, 0.919354, 0.510136, 0.245440, -1.400519, 0.969571, 1.593698, +-1.437917, -1.534230, -0.074710, 0.081459, -0.843240, -0.564640, -0.028207, -1.243702, +0.733039, 0.059580, 0.149144, 1.595857, -0.777250, 1.550277, 1.055002, -0.166654, +0.314484, 1.419571, 0.327348, 0.475653, 0.398754, -0.072770, 1.314784, 0.978279, +1.722114, -0.412302, 0.565133, 0.739851, 0.220138, 1.312807, 0.629152, -1.107987, +-0.447001, -0.725993, 0.354045, -0.506772, -2.103747, -0.664684, 1.450110, -0.329805, +2.701872, -1.634939, -0.536325, 0.547223, 1.492603, -0.455243, -0.496416, 1.235260, +0.040926, 0.748467, 1.230764, 0.304903, 1.077771, 0.765151, -1.319580, -0.509191, +0.555116, -1.957625, -0.760453, -2.443886, -0.659366, -0.114779, 0.300079, -0.583996, +-3.073745, 1.551042, -0.407369, 1.428095, -1.353242, 0.903970, 0.541671, -0.465020 +}; + + + +/* ---------------------------------------------------------------------- +** Coefficients for 32-tap filter for Floating point LMS FIR filter +* FIR high pass filter with cutoff freq 9.6kHz (transition 9.6KHz to 11.52KHz) +** ------------------------------------------------------------------- */ +float32_t lmsNormCoeff_f32[32] = { +-0.004240, 0.002301, 0.008860, -0.000000, -0.019782, -0.010543, 0.032881, 0.034736, +-0.037374, -0.069586, 0.022397, 0.102169, 0.014185, -0.115908, -0.061648, 0.101018, +0.101018, -0.061648, -0.115908, 0.014185, 0.102169, 0.022397, -0.069586, -0.037374, +0.034736, 0.032881, -0.010543, -0.019782, -0.000000, 0.008860, 0.002301, -0.004240 + +}; + +/* ---------------------------------------------------------------------- +** Coefficients for 32-tap filter for Floating point FIR filter +* FIR low pass filter with cutoff freq 24Hz (transition 24Hz to 240Hz) +** ------------------------------------------------------------------- */ +const float32_t FIRCoeff_f32[32] = { +0.004502, 0.005074, 0.006707, 0.009356, 0.012933, 0.017303, 0.022298, 0.027717, +0.033338, 0.038930, 0.044258, 0.049098, 0.053243, 0.056519, 0.058784, 0.059941, +0.059941, 0.058784, 0.056519, 0.053243, 0.049098, 0.044258, 0.038930, 0.033338, +0.027717, 0.022298, 0.017303, 0.012933, 0.009356, 0.006707, 0.005074, 0.004502 + +}; + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/arm_signal_converge_example_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/arm_signal_converge_example_f32.c new file mode 100644 index 000000000..34d9c8626 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/arm_signal_converge_example_f32.c @@ -0,0 +1,246 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 29. November 2010 +* $Revision: V1.0.3 +* +* Project: CMSIS DSP Library +* Title: arm_signal_converge_example_f32.c +* +* Description: Example code demonstrating convergence of an adaptive +* filter. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.1 2010/10/05 KK +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 KK +* Production release and review comments incorporated. +* ------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup SignalConvergence Signal Convergence Example + * + * \par Description: + * \par + * Demonstrates the ability of an adaptive filter to "learn" the transfer function of + * a FIR lowpass filter using the Normalized LMS Filter, Finite Impulse + * Response (FIR) Filter, and Basic Math Functions. + * + * \par Algorithm: + * \par + * The figure below illustrates the signal flow in this example. Uniformly distributed white + * noise is passed through an FIR lowpass filter. The output of the FIR filter serves as the + * reference input of the adaptive filter (normalized LMS filter). The white noise is input + * to the adaptive filter. The adaptive filter learns the transfer function of the FIR filter. + * The filter outputs two signals: (1) the output of the internal adaptive FIR filter, and + * (2) the error signal which is the difference between the adaptive filter and the reference + * output of the FIR filter. Over time as the adaptive filter learns the transfer function + * of the FIR filter, the first output approaches the reference output of the FIR filter, + * and the error signal approaches zero. + * \par + * The adaptive filter converges properly even if the input signal has a large dynamic + * range (i.e., varies from small to large values). The coefficients of the adaptive filter + * are initially zero, and then converge over 1536 samples. The internal function test_signal_converge() + * implements the stopping condition. The function checks if all of the values of the error signal have a + * magnitude below a threshold DELTA. + * + * \par Block Diagram: + * \par + * \image html SignalFlow.gif + * + * + * \par Variables Description: + * \par + * \li \c testInput_f32 points to the input data + * \li \c firStateF32 points to FIR state buffer + * \li \c lmsStateF32 points to Normalised Least mean square FIR filter state buffer + * \li \c FIRCoeff_f32 points to coefficient buffer + * \li \c lmsNormCoeff_f32 points to Normalised Least mean square FIR filter coefficient buffer + * \li \c wire1, wir2, wire3 temporary buffers + * \li \c errOutput, err_signal temporary error buffers + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_lms_norm_init_f32() + * - arm_fir_init_f32() + * - arm_fir_f32() + * - arm_lms_norm_f32() + * - arm_scale_f32() + * - arm_abs_f32() + * - arm_sub_f32() + * - arm_min_f32() + * - arm_copy_f32() + * + * Refer + * \link arm_signal_converge_example_f32.c \endlink + * + */ + + +/** \example arm_signal_converge_example_f32.c + */ + +#include "arm_math.h" +#include "math_helper.h" + +/* ---------------------------------------------------------------------- +** Global defines for the simulation +* ------------------------------------------------------------------- */ + +#define TEST_LENGTH_SAMPLES 1536 +#define NUMTAPS 32 +#define BLOCKSIZE 32 +#define DELTA_ERROR 0.000001f +#define DELTA_COEFF 0.0001f +#define MU 0.5f + +#define NUMFRAMES (TEST_LENGTH_SAMPLES / BLOCKSIZE) + +/* ---------------------------------------------------------------------- +* Declare FIR state buffers and structure +* ------------------------------------------------------------------- */ + +float32_t firStateF32[NUMTAPS + BLOCKSIZE]; +arm_fir_instance_f32 LPF_instance; + +/* ---------------------------------------------------------------------- +* Declare LMSNorm state buffers and structure +* ------------------------------------------------------------------- */ + +float32_t lmsStateF32[NUMTAPS + BLOCKSIZE]; +float32_t errOutput[TEST_LENGTH_SAMPLES]; +arm_lms_norm_instance_f32 lmsNorm_instance; + + +/* ---------------------------------------------------------------------- +* Function Declarations for Signal Convergence Example +* ------------------------------------------------------------------- */ + +arm_status test_signal_converge_example( void ); + + +/* ---------------------------------------------------------------------- +* Internal functions +* ------------------------------------------------------------------- */ +arm_status test_signal_converge(float32_t* err_signal, + uint32_t blockSize); + +void getinput(float32_t* input, + uint32_t fr_cnt, + uint32_t blockSize); + +/* ---------------------------------------------------------------------- +* External Declarations for FIR F32 module Test +* ------------------------------------------------------------------- */ +extern float32_t testInput_f32[TEST_LENGTH_SAMPLES]; +extern float32_t lmsNormCoeff_f32[32]; +extern const float32_t FIRCoeff_f32[32]; +extern arm_lms_norm_instance_f32 lmsNorm_instance; + +/* ---------------------------------------------------------------------- +* Declare I/O buffers +* ------------------------------------------------------------------- */ + +float32_t wire1[BLOCKSIZE]; +float32_t wire2[BLOCKSIZE]; +float32_t wire3[BLOCKSIZE]; +float32_t err_signal[BLOCKSIZE]; + +/* ---------------------------------------------------------------------- +* Signal converge test +* ------------------------------------------------------------------- */ + +int32_t main(void) +{ + uint32_t i; + arm_status status; + uint32_t index; + float32_t minValue; + + /* Initialize the LMSNorm data structure */ + arm_lms_norm_init_f32(&lmsNorm_instance, NUMTAPS, lmsNormCoeff_f32, lmsStateF32, MU, BLOCKSIZE); + + /* Initialize the FIR data structure */ + arm_fir_init_f32(&LPF_instance, NUMTAPS, (float32_t *)FIRCoeff_f32, firStateF32, BLOCKSIZE); + + /* ---------------------------------------------------------------------- + * Loop over the frames of data and execute each of the processing + * functions in the system. + * ------------------------------------------------------------------- */ + + for(i=0; i < NUMFRAMES; i++) + { + /* Read the input data - uniformly distributed random noise - into wire1 */ + arm_copy_f32(testInput_f32 + (i * BLOCKSIZE), wire1, BLOCKSIZE); + + /* Execute the FIR processing function. Input wire1 and output wire2 */ + arm_fir_f32(&LPF_instance, wire1, wire2, BLOCKSIZE); + + /* Execute the LMS Norm processing function*/ + + arm_lms_norm_f32(&lmsNorm_instance, /* LMSNorm instance */ + wire1, /* Input signal */ + wire2, /* Reference Signal */ + wire3, /* Converged Signal */ + err_signal, /* Error Signal, this will become small as the signal converges */ + BLOCKSIZE); /* BlockSize */ + + /* apply overall gain */ + arm_scale_f32(wire3, 5, wire3, BLOCKSIZE); /* in-place buffer */ + } + + status = ARM_MATH_SUCCESS; + + /* ------------------------------------------------------------------------------- + * Test whether the error signal has reached towards 0. + * ----------------------------------------------------------------------------- */ + + arm_abs_f32(err_signal, err_signal, BLOCKSIZE); + arm_min_f32(err_signal, BLOCKSIZE, &minValue, &index); + + if (minValue > DELTA_ERROR) + { + status = ARM_MATH_TEST_FAILURE; + } + + /* ---------------------------------------------------------------------- + * Test whether the filter coefficients have converged. + * ------------------------------------------------------------------- */ + + arm_sub_f32((float32_t *)FIRCoeff_f32, lmsNormCoeff_f32, lmsNormCoeff_f32, NUMTAPS); + + arm_abs_f32(lmsNormCoeff_f32, lmsNormCoeff_f32, NUMTAPS); + arm_min_f32(lmsNormCoeff_f32, NUMTAPS, &minValue, &index); + + if (minValue > DELTA_COEFF) + { + status = ARM_MATH_TEST_FAILURE; + } + + /* ---------------------------------------------------------------------- + * Loop here if the signals did not pass the convergence check. + * This denotes a test failure + * ------------------------------------------------------------------- */ + + if( status != ARM_MATH_SUCCESS) + { + while(1); + } + + while(1); /* main function does not return */ +} + + /** \endlink */ + + + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/system_ARMCM0.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/system_ARMCM0.c new file mode 100644 index 000000000..ece74d2de --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/system_ARMCM0.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM0.c + * @brief CMSIS Cortex-M0 Device System Source File + * for CM0 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM0.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/system_ARMCM3.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/system_ARMCM3.c new file mode 100644 index 000000000..2f5fa0b93 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/system_ARMCM3.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM3.c + * @brief CMSIS Cortex-M3 Device System Source File + * for CM3 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM3.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/system_ARMCM4.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/system_ARMCM4.c new file mode 100644 index 000000000..beaaf6fb8 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_signal_converge_example/system_ARMCM4.c @@ -0,0 +1,81 @@ +/**************************************************************************//** + * @file system_ARMCM4.c + * @brief CMSIS Cortex-M4 Device System Source File + * for CM4 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM4.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2) | /* set CP10 Full Access */ + (3UL << 11*2) ); /* set CP11 Full Access */ + #endif + + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_cortexM0l_sin_cos_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_cortexM0l_sin_cos_example.uvopt new file mode 100644 index 000000000..cf1481b0e --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_cortexM0l_sin_cos_example.uvopt @@ -0,0 +1,290 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_sin_cos_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 137 + 1 +
344
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_sin_cos_example\../arm_sin_cos_example_f32.c\137 +
+ + 1 + 0 + 142 + 1 +
342
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_sin_cos_example\../arm_sin_cos_example_f32.c\142 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_sin_cos_example_f32.c + arm_sin_cos_example_f32.c + + + + + CMSIS + 1 + 0 + 0 + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM0.c + system_ARMCM0.c + + + 2 + 4 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM0.s + startup_ARMCM0.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 0 + 1 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + arm_cortexM0l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_sin_cos_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_cortexM0l_sin_cos_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_cortexM0l_sin_cos_example.uvproj new file mode 100644 index 000000000..36d578859 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_cortexM0l_sin_cos_example.uvproj @@ -0,0 +1,425 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M0 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M0") ESEL ELITTLE + + + + 4803 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM0l_sin_cos_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_sin_cos_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM0 + + ..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM0\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_sin_cos_example_f32.c + 1 + ..\arm_sin_cos_example_f32.c + + + + + CMSIS Device + + + system_ARMCM0.c + 1 + ..\system_ARMCM0.c + + + startup_ARMCM0.s + 2 + .\startup_ARMCM0.s + + + + + CMSIS DSP_Library + + + arm_cortexM0l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_cortexM3l_sin_cos_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_cortexM3l_sin_cos_example.uvopt new file mode 100644 index 000000000..94565c87a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_cortexM3l_sin_cos_example.uvopt @@ -0,0 +1,290 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_sin_cos_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 137 + 1 +
348
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_sin_cos_example\../arm_sin_cos_example_f32.c\137 +
+ + 1 + 0 + 142 + 1 +
346
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_sin_cos_example\../arm_sin_cos_example_f32.c\142 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_sin_cos_example_f32.c + arm_sin_cos_example_f32.c + + + + + CMSIS DeviceSupport + 1 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM3.c + system_ARMCM3.c + + + 2 + 3 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM3.s + startup_ARMCM3.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 4 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + arm_cortexM3l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_sin_cos_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_cortexM3l_sin_cos_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_cortexM3l_sin_cos_example.uvproj new file mode 100644 index 000000000..f950fdac2 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_cortexM3l_sin_cos_example.uvproj @@ -0,0 +1,425 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M3 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M3") ESEL ELITTLE + + + + 4349 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM3l_sin_cos_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_sin_cos_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM3 + + ..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM3\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_sin_cos_example_f32.c + 1 + ..\arm_sin_cos_example_f32.c + + + + + CMSIS Device + + + system_ARMCM3.c + 1 + ..\system_ARMCM3.c + + + startup_ARMCM3.s + 2 + .\startup_ARMCM3.s + + + + + CMSIS DSP_Library + + + arm_cortexM3l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_cortexM4lf_sin_cos_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_cortexM4lf_sin_cos_example.uvopt new file mode 100644 index 000000000..06373a079 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_cortexM4lf_sin_cos_example.uvopt @@ -0,0 +1,290 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_sin_cos_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 137 + 1 +
368
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_sin_cos_example\../arm_sin_cos_example_f32.c\137 +
+ + 1 + 0 + 142 + 1 +
366
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_sin_cos_example\../arm_sin_cos_example_f32.c\142 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_sin_cos_example_f32.c + arm_sin_cos_example_f32.c + + + + + CMSIS DeviceSupport + 1 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM4.c + system_ARMCM4.c + + + 2 + 3 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM4.s + startup_ARMCM4.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 4 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + arm_cortexM4lf_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_sin_cos_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_cortexM4lf_sin_cos_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_cortexM4lf_sin_cos_example.uvproj new file mode 100644 index 000000000..9677178d4 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_cortexM4lf_sin_cos_example.uvproj @@ -0,0 +1,425 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M4 FPU + ARM + CLOCK(12000000) CPUTYPE("Cortex-M4") ESEL ELITTLE FPU2 + + + + 5237 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM4lf_sin_cos_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_sin_cos_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM4, __FPU_PRESENT = 1 + + ..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM4\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_sin_cos_example_f32.c + 1 + ..\arm_sin_cos_example_f32.c + + + + + CMSIS Device + + + system_ARMCM4.c + 1 + ..\system_ARMCM4.c + + + startup_ARMCM4.s + 2 + .\startup_ARMCM4.s + + + + + CMSIS DSP_Library + + + arm_cortexM4lf_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_sin_cos_example.ini b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_sin_cos_example.ini new file mode 100644 index 000000000..813fb16fc --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/arm_sin_cos_example.ini @@ -0,0 +1,14 @@ + +/* This file demonstrates how to Map memory ranges, specify read, write, and execute permissions + + The file can be executed in the following way: + 1) manually from uVision command window (in debug mode) using command: + INCLUIDE arm_sin_cos_example.ini + +*/ + + +// usual initialisation for target setup +MAP 0x20000000, 0x20008000 READ WRITE // allow R/W access to IO space + + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/startup_ARMCM0.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/startup_ARMCM0.s new file mode 100644 index 000000000..0acd34611 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/startup_ARMCM0.s @@ -0,0 +1,144 @@ +;/**************************************************************************//** +; * @file startup_ARMCM0.s +; * @brief CMSIS Cortex-M0 Core Device Startup File +; * for CM0 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/startup_ARMCM3.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/startup_ARMCM3.s new file mode 100644 index 000000000..5af584bdc --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/startup_ARMCM3.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM3.s +; * @brief CMSIS Cortex-M3 Core Device Startup File +; * for CM3 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/startup_ARMCM4.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/startup_ARMCM4.s new file mode 100644 index 000000000..09fdbd6ed --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/ARM/startup_ARMCM4.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM4.s +; * @brief CMSIS Cortex-M4 Core Device Startup File +; * for CM4 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/arm_sin_cos_example_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/arm_sin_cos_example_f32.c new file mode 100644 index 000000000..a79d813d3 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/arm_sin_cos_example_f32.c @@ -0,0 +1,146 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 29. November 2010 +* $Revision: V1.0.3 +* +* Project: CMSIS DSP Library +* Title: arm_sin_cos_example_f32.c +* +* Description: Example code demonstrating sin and cos calculation of input signal. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.1 2010/10/05 KK +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 KK +* Production release and review comments incorporated. +* ------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup SinCosExample SineCosine Example + * + * \par Description: + * \par + * Demonstrates the Pythagorean trignometric identity with the use of Cosine, Sine, Vector + * Multiplication, and Vector Addition functions. + * + * \par Algorithm: + * \par + * Mathematically, the Pythagorean trignometric identity is defined by the following equation: + *
sin(x) * sin(x) + cos(x) * cos(x) = 1
+ * where \c x is the angle in radians. + * + * \par Block Diagram: + * \par + * \image html sinCos.gif + * + * \par Variables Description: + * \par + * \li \c testInput_f32 array of input angle in radians + * \li \c testOutput stores sum of the squares of sine and cosine values of input angle + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_cos_f32() + * - arm_sin_f32() + * - arm_mult_f32() + * - arm_add_f32() + * + * Refer + * \link arm_sin_cos_example_f32.c \endlink + * + */ + + +/** \example arm_sin_cos_example_f32.c + */ + +#include +#include "arm_math.h" + +/* ---------------------------------------------------------------------- +* Defines each of the tests performed +* ------------------------------------------------------------------- */ +#define MAX_BLOCKSIZE 32 +#define DELTA (0.000001f) + + +/* ---------------------------------------------------------------------- +* Test input data for Floating point sin_cos example for 32-blockSize +* Generated by the MATLAB randn() function +* ------------------------------------------------------------------- */ + +const float32_t testInput_f32[MAX_BLOCKSIZE] = +{ + -1.244916875853235400, -4.793533929171324800, 0.360705030233248850, 0.827929644170887320, -3.299532218312426900, 3.427441903227623800, 3.422401784294607700, -0.108308165334010680, + 0.941943896490312180, 0.502609575000365850, -0.537345278736373500, 2.088817392965764500, -1.693168684143455700, 6.283185307179590700, -0.392545884746175080, 0.327893095115825040, + 3.070147440456292300, 0.170611405884662230, -0.275275082396073010, -2.395492805446796300, 0.847311163536506600, -3.845517018083148800, 2.055818378415868300, 4.672594161978930800, + -1.990923030266425800, 2.469305197656249500, 3.609002606064021000, -4.586736582331667500, -4.147080139136136300, 1.643756718868359500, -1.150866392366494800, 1.985805026477433800 + + +}; + +const float32_t testRefOutput_f32 = 1.000000000; + +/* ---------------------------------------------------------------------- +* Declare Global variables +* ------------------------------------------------------------------- */ +uint32_t blockSize = 32; +float32_t testOutput; +float32_t cosOutput; +float32_t sinOutput; +float32_t cosSquareOutput; +float32_t sinSquareOutput; + +/* ---------------------------------------------------------------------- +* Max magnitude FFT Bin test +* ------------------------------------------------------------------- */ + +arm_status status; + +int32_t main(void) +{ + float32_t diff; + uint32_t i; + + for(i=0; i< blockSize; i++) + { + cosOutput = arm_cos_f32(testInput_f32[i]); + sinOutput = arm_sin_f32(testInput_f32[i]); + + arm_mult_f32(&cosOutput, &cosOutput, &cosSquareOutput, 1); + arm_mult_f32(&sinOutput, &sinOutput, &sinSquareOutput, 1); + + arm_add_f32(&cosSquareOutput, &sinSquareOutput, &testOutput, 1); + + /* absolute value of difference between ref and test */ + diff = fabsf(testRefOutput_f32 - testOutput); + + /* Comparison of sin_cos value with reference */ + if(diff > DELTA) + { + status = ARM_MATH_TEST_FAILURE; + } + + if( status == ARM_MATH_TEST_FAILURE) + { + while(1); + } + + } + + while(1); /* main function does not return */ +} + + /** \endlink */ + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/system_ARMCM0.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/system_ARMCM0.c new file mode 100644 index 000000000..ece74d2de --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/system_ARMCM0.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM0.c + * @brief CMSIS Cortex-M0 Device System Source File + * for CM0 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM0.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/system_ARMCM3.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/system_ARMCM3.c new file mode 100644 index 000000000..2f5fa0b93 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/system_ARMCM3.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM3.c + * @brief CMSIS Cortex-M3 Device System Source File + * for CM3 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM3.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/system_ARMCM4.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/system_ARMCM4.c new file mode 100644 index 000000000..beaaf6fb8 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_sin_cos_example/system_ARMCM4.c @@ -0,0 +1,81 @@ +/**************************************************************************//** + * @file system_ARMCM4.c + * @brief CMSIS Cortex-M4 Device System Source File + * for CM4 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM4.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2) | /* set CP10 Full Access */ + (3UL << 11*2) ); /* set CP11 Full Access */ + #endif + + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_cortexM0l_variance_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_cortexM0l_variance_example.uvopt new file mode 100644 index 000000000..b2f3f6dc3 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_cortexM0l_variance_example.uvopt @@ -0,0 +1,290 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_variance_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 182 + 1 +
402
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_variance_example\../arm_variance_example_f32.c\182 +
+ + 1 + 0 + 185 + 1 +
404
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM0l_variance_example\../arm_variance_example_f32.c\185 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_variance_example_f32.c + arm_variance_example_f32.c + + + + + CMSIS + 1 + 0 + 0 + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM0.c + system_ARMCM0.c + + + 2 + 4 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM0.s + startup_ARMCM0.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 0 + 1 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + arm_cortexM0l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_variance_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_cortexM0l_variance_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_cortexM0l_variance_example.uvproj new file mode 100644 index 000000000..c5354ea66 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_cortexM0l_variance_example.uvproj @@ -0,0 +1,425 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M0 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M0") ESEL ELITTLE + + + + 4803 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM0l_variance_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_variance_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM0 + + ..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM0\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_variance_example_f32.c + 1 + ..\arm_variance_example_f32.c + + + + + CMSIS Device + + + system_ARMCM0.c + 1 + ..\system_ARMCM0.c + + + startup_ARMCM0.s + 2 + .\startup_ARMCM0.s + + + + + CMSIS DSP_Library + + + arm_cortexM0l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM0l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_cortexM3l_variance_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_cortexM3l_variance_example.uvopt new file mode 100644 index 000000000..37249e05a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_cortexM3l_variance_example.uvopt @@ -0,0 +1,290 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_variance_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 182 + 1 +
404
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_variance_example\../arm_variance_example_f32.c\182 +
+ + 1 + 0 + 185 + 1 +
406
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM3l_variance_example\../arm_variance_example_f32.c\185 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_variance_example_f32.c + arm_variance_example_f32.c + + + + + CMSIS DeviceSupport + 1 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM3.c + system_ARMCM3.c + + + 2 + 3 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\startup_ARMCM3.s + startup_ARMCM3.s + + + + + CMSIS SW_DSP_Library + 1 + 0 + 0 + + 3 + 4 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + arm_cortexM3l_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_variance_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_cortexM3l_variance_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_cortexM3l_variance_example.uvproj new file mode 100644 index 000000000..bd6897509 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_cortexM3l_variance_example.uvproj @@ -0,0 +1,425 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M3 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M3") ESEL ELITTLE + + + + 4349 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM3l_variance_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_variance_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM3 + + ..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM3\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_variance_example_f32.c + 1 + ..\arm_variance_example_f32.c + + + + + CMSIS Device + + + system_ARMCM3.c + 1 + ..\system_ARMCM3.c + + + startup_ARMCM3.s + 2 + .\startup_ARMCM3.s + + + + + CMSIS DSP_Library + + + arm_cortexM3l_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM3l_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_cortexM4lf_variance_example.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_cortexM4lf_variance_example.uvopt new file mode 100644 index 000000000..7cd95d321 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_cortexM4lf_variance_example.uvopt @@ -0,0 +1,290 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\debug\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\arm_variance_example.ini + + + + + + + + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + 0 + 182 + 1 +
432
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_variance_example\../arm_variance_example_f32.c\182 +
+ + 1 + 0 + 185 + 1 +
434
+ 0 + 0 + 0 + 0 + 1 + + + \\arm_cortexM4lf_variance_example\../arm_variance_example_f32.c\185 +
+
+ + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + +
+
+ + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\arm_variance_example_f32.c + arm_variance_example_f32.c + + + + + CMSIS Device + 1 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\system_ARMCM4.c + system_ARMCM4.c + + + 2 + 3 + 2 + 0 + 0 + 0 + 0 + 78 + 78 + 0 + .\startup_ARMCM4.s + startup_ARMCM4.s + + + + + CMSIS DSP_Library + 1 + 0 + 0 + + 3 + 4 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + arm_cortexM4lf_math.lib + + + + + 1 + 0 + + 100 + 0 + + + ..\arm_variance_example_f32.c + 0 + 1 + 1 + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_cortexM4lf_variance_example.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_cortexM4lf_variance_example.uvproj new file mode 100644 index 000000000..42eace15c --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_cortexM4lf_variance_example.uvproj @@ -0,0 +1,425 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + + + Cortex-M4 FPU + ARM + CLOCK(12000000) CPUTYPE("Cortex-M4") ESEL ELITTLE FPU2 + + + + 5237 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\debug\ + arm_cortexM4lf_variance_example + 1 + 0 + 0 + 1 + 1 + .\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\arm_variance_example.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + + + ARM_MATH_CM4, __FPU_PRESENT = 1 + + ..\..\..\..\Include;..\..\..\..\..\Device\ARM\ARMCM4\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + Source Group 1 + + + arm_variance_example_f32.c + 1 + ..\arm_variance_example_f32.c + + + + + CMSIS Device + + + system_ARMCM4.c + 1 + ..\system_ARMCM4.c + + + startup_ARMCM4.s + 2 + .\startup_ARMCM4.s + + + + + CMSIS DSP_Library + + + arm_cortexM4lf_math.lib + 4 + ..\..\..\..\Lib\ARM\arm_cortexM4lf_math.lib + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_variance_example.ini b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_variance_example.ini new file mode 100644 index 000000000..0aab2ea8e --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/arm_variance_example.ini @@ -0,0 +1,14 @@ + +/* This file demonstrates how to Map memory ranges, specify read, write, and execute permissions + + The file can be executed in the following way: + 1) manually from uVision command window (in debug mode) using command: + INCLUIDE arm_variance_example.ini + +*/ + + +// usual initialisation for target setup +MAP 0x20000000, 0x20008000 READ WRITE // allow R/W access to IO space + + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/startup_ARMCM0.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/startup_ARMCM0.s new file mode 100644 index 000000000..0acd34611 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/startup_ARMCM0.s @@ -0,0 +1,144 @@ +;/**************************************************************************//** +; * @file startup_ARMCM0.s +; * @brief CMSIS Cortex-M0 Core Device Startup File +; * for CM0 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/startup_ARMCM3.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/startup_ARMCM3.s new file mode 100644 index 000000000..5af584bdc --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/startup_ARMCM3.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM3.s +; * @brief CMSIS Cortex-M3 Core Device Startup File +; * for CM3 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/startup_ARMCM4.s b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/startup_ARMCM4.s new file mode 100644 index 000000000..09fdbd6ed --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/ARM/startup_ARMCM4.s @@ -0,0 +1,164 @@ +;/**************************************************************************//** +; * @file startup_ARMCM4.s +; * @brief CMSIS Cortex-M4 Core Device Startup File +; * for CM4 Device Series +; * @version V1.04 +; * @date 14. January 2011 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; ******************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD DEF_IRQHandler ; 0: Default +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT DEF_IRQHandler [WEAK] +DEF_IRQHandler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/arm_variance_example_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/arm_variance_example_f32.c new file mode 100644 index 000000000..a163302f5 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/arm_variance_example_f32.c @@ -0,0 +1,189 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 29. November 2010 +* $Revision: V1.0.3 +* +* Project: CMSIS DSP Library +* Title: arm_variance_example_f32.c +* +* Description: Example code demonstrating variance calculation of input sequence. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.1 2010/10/05 KK +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 KK +* Production release and review comments incorporated. +* ------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup VarianceExample Variance Example + * + * \par Description: + * \par + * Demonstrates the use of Basic Math and Support Functions to calculate the variance of an + * input sequence with N samples. Uniformly distributed white noise is taken as input. + * + * \par Algorithm: + * \par + * The variance of a sequence is the mean of the squared deviation of the sequence from its mean. + * \par + * This is denoted by the following equation: + *
 variance = ((x[0] - x') * (x[0] - x') + (x[1] - x') * (x[1] - x') + ... + * (x[n-1] - x') * (x[n-1] - x')) / (N-1)
+ * where, x[n] is the input sequence, N is the number of input samples, and + * x' is the mean value of the input sequence, x[n]. + * \par + * The mean value x' is defined as: + *
 x' = (x[0] + x[1] + ... + x[n-1]) / N
+ * + * \par Block Diagram: + * \par + * \image html Variance.gif + * + * + * \par Variables Description: + * \par + * \li \c testInput_f32 points to the input data + * \li \c wire1, \c wir2, \c wire3 temporary buffers + * \li \c blockSize number of samples processed at a time + * \li \c refVarianceOut reference variance value + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_dot_prod_f32() + * - arm_mult_f32() + * - arm_sub_f32() + * - arm_fill_f32() + * - arm_copy_f32() + * + * Refer + * \link arm_variance_example_f32.c \endlink + * + */ + + +/** \example arm_variance_example_f32.c + */ +#include +#include "arm_math.h" + +/* ---------------------------------------------------------------------- +* Defines each of the tests performed +* ------------------------------------------------------------------- */ +#define MAX_BLOCKSIZE 32 +#define DELTA (0.000001f) + + +/* ---------------------------------------------------------------------- +* Declare I/O buffers +* ------------------------------------------------------------------- */ +float32_t wire1[MAX_BLOCKSIZE]; +float32_t wire2[MAX_BLOCKSIZE]; +float32_t wire3[MAX_BLOCKSIZE]; + +/* ---------------------------------------------------------------------- +* Test input data for Floating point Variance example for 32-blockSize +* Generated by the MATLAB randn() function +* ------------------------------------------------------------------- */ + +float32_t testInput_f32[32] = +{ +-0.432564811528221, -1.665584378238097, 0.125332306474831, 0.287676420358549, +-1.146471350681464, 1.190915465642999, 1.189164201652103, -0.037633276593318, +0.327292361408654, 0.174639142820925, -0.186708577681439, 0.725790548293303, +-0.588316543014189, 2.183185818197101, -0.136395883086596, 0.113931313520810, +1.066768211359189, 0.059281460523605, -0.095648405483669, -0.832349463650022, +0.294410816392640, -1.336181857937804, 0.714324551818952, 1.623562064446271, +-0.691775701702287, 0.857996672828263, 1.254001421602532, -1.593729576447477, +-1.440964431901020, 0.571147623658178, -0.399885577715363, 0.689997375464345 + +}; + +/* ---------------------------------------------------------------------- +* Declare Global variables +* ------------------------------------------------------------------- */ +uint32_t blockSize = 32; +float32_t refVarianceOut = 0.903941793931839; + +/* ---------------------------------------------------------------------- +* Variance calculation test +* ------------------------------------------------------------------- */ + +int32_t main(void) +{ + arm_status status; + float32_t mean, oneByBlockSize; + float32_t variance; + float32_t diff; + + status = ARM_MATH_SUCCESS; + + /* Calculation of mean value of input */ + + /* x' = 1/blockSize * (x(0)* 1 + x(1) * 1 + ... + x(n-1) * 1) */ + + /* Fill wire1 buffer with 1.0 value */ + arm_fill_f32(1.0, wire1, blockSize); + + /* Calculate the dot product of wire1 and wire2 */ + /* (x(0)* 1 + x(1) * 1 + ...+ x(n-1) * 1) */ + arm_dot_prod_f32(testInput_f32, wire1, blockSize, &mean); + + /* Calculation of 1/blockSize */ + oneByBlockSize = 1.0 / (blockSize); + + /* 1/blockSize * (x(0)* 1 + x(1) * 1 + ... + x(n-1) * 1) */ + arm_mult_f32(&mean, &oneByBlockSize, &mean, 1); + + + /* Calculation of variance value of input */ + + /* (1/blockSize) * (x(0) - x') * (x(0) - x') + (x(1) - x') * (x(1) - x') + ... + (x(n-1) - x') * (x(n-1) - x') */ + + /* Fill wire2 with mean value x' */ + arm_fill_f32(mean, wire2, blockSize); + + /* wire3 contains (x-x') */ + arm_sub_f32(testInput_f32, wire2, wire3, blockSize); + + /* wire2 contains (x-x') */ + arm_copy_f32(wire3, wire2, blockSize); + + /* (x(0) - x') * (x(0) - x') + (x(1) - x') * (x(1) - x') + ... + (x(n-1) - x') * (x(n-1) - x') */ + arm_dot_prod_f32(wire2, wire3, blockSize, &variance); + + /* Calculation of 1/blockSize */ + oneByBlockSize = 1.0 / (blockSize - 1); + + /* Calculation of variance */ + arm_mult_f32(&variance, &oneByBlockSize, &variance, 1); + + /* absolute value of difference between ref and test */ + diff = fabsf(refVarianceOut - variance); + + /* Comparison of variance value with reference */ + if(diff > DELTA) + { + status = ARM_MATH_TEST_FAILURE; + } + + if( status != ARM_MATH_SUCCESS) + { + while(1); + } + + while(1); /* main function does not return */ +} + + /** \endlink */ + diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/system_ARMCM0.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/system_ARMCM0.c new file mode 100644 index 000000000..ece74d2de --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/system_ARMCM0.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM0.c + * @brief CMSIS Cortex-M0 Device System Source File + * for CM0 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM0.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/system_ARMCM3.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/system_ARMCM3.c new file mode 100644 index 000000000..2f5fa0b93 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/system_ARMCM3.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMCM3.c + * @brief CMSIS Cortex-M3 Device System Source File + * for CM3 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM3.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/system_ARMCM4.c b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/system_ARMCM4.c new file mode 100644 index 000000000..beaaf6fb8 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Examples/arm_variance_example/system_ARMCM4.c @@ -0,0 +1,81 @@ +/**************************************************************************//** + * @file system_ARMCM4.c + * @brief CMSIS Cortex-M4 Device System Source File + * for CM4 Device Series + * @version V1.05 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include "ARMCM4.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define __HSI ( 8000000UL) +#define __XTAL (12000000UL) /* Oscillator frequency */ + +#define __SYSTEM_CLOCK (4*__XTAL) + + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + + +/*---------------------------------------------------------------------------- + Clock functions + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */ +{ + SystemCoreClock = __SYSTEM_CLOCK; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System. + */ +void SystemInit (void) +{ + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2) | /* set CP10 Full Access */ + (3UL << 11*2) ); /* set CP11 Full Access */ + #endif + + SystemCoreClock = __SYSTEM_CLOCK; + +#ifdef __USE_GPIO + ARM_GPIO0->DATA[0].WORD = 0; + ARM_GPIO0->IE = 0; + ARM_GPIO0->DIR = 0xff83; + + ARM_GPIO1->DATA[0].WORD = 0; + ARM_GPIO1->IE = 0; + ARM_GPIO1->DIR = 0; + + ARM_GPIO2->DATA[0].WORD = 0; + ARM_GPIO2->IE = 0; + ARM_GPIO2->DIR = 0; +#endif +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexM0x_math.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexM0x_math.uvopt new file mode 100644 index 000000000..ff5038c54 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexM0x_math.uvopt @@ -0,0 +1,3711 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + DSP_Lib CM0 LE + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\intermediateFiles\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + DSP_Lib CM0 BE + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\intermediateFiles\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + BasicMathFunctions + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_abs_f32.c + arm_abs_f32.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_abs_q7.c + arm_abs_q7.c + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_abs_q15.c + arm_abs_q15.c + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_abs_q31.c + arm_abs_q31.c + + + 1 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_add_f32.c + arm_add_f32.c + + + 1 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_add_q7.c + arm_add_q7.c + + + 1 + 7 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_add_q15.c + arm_add_q15.c + + + 1 + 8 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_add_q31.c + arm_add_q31.c + + + 1 + 9 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_dot_prod_f32.c + arm_dot_prod_f32.c + + + 1 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_dot_prod_q7.c + arm_dot_prod_q7.c + + + 1 + 11 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_dot_prod_q15.c + arm_dot_prod_q15.c + + + 1 + 12 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_dot_prod_q31.c + arm_dot_prod_q31.c + + + 1 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_mult_f32.c + arm_mult_f32.c + + + 1 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_mult_q7.c + arm_mult_q7.c + + + 1 + 15 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_mult_q15.c + arm_mult_q15.c + + + 1 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_mult_q31.c + arm_mult_q31.c + + + 1 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_negate_f32.c + arm_negate_f32.c + + + 1 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_negate_q7.c + arm_negate_q7.c + + + 1 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_negate_q15.c + arm_negate_q15.c + + + 1 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_negate_q31.c + arm_negate_q31.c + + + 1 + 21 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_offset_f32.c + arm_offset_f32.c + + + 1 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_offset_q7.c + arm_offset_q7.c + + + 1 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_offset_q15.c + arm_offset_q15.c + + + 1 + 24 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_offset_q31.c + arm_offset_q31.c + + + 1 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_scale_f32.c + arm_scale_f32.c + + + 1 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_scale_q7.c + arm_scale_q7.c + + + 1 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_scale_q15.c + arm_scale_q15.c + + + 1 + 28 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_scale_q31.c + arm_scale_q31.c + + + 1 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_shift_q7.c + arm_shift_q7.c + + + 1 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_shift_q15.c + arm_shift_q15.c + + + 1 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_shift_q31.c + arm_shift_q31.c + + + 1 + 32 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_sub_f32.c + arm_sub_f32.c + + + 1 + 33 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_sub_q7.c + arm_sub_q7.c + + + 1 + 34 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_sub_q15.c + arm_sub_q15.c + + + 1 + 35 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_sub_q31.c + arm_sub_q31.c + + + + + FastMathFunctions + 0 + 0 + 0 + + 2 + 36 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_cos_f32.c + arm_cos_f32.c + + + 2 + 37 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_cos_q15.c + arm_cos_q15.c + + + 2 + 38 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_cos_q31.c + arm_cos_q31.c + + + 2 + 39 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_sin_f32.c + arm_sin_f32.c + + + 2 + 40 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_sin_q15.c + arm_sin_q15.c + + + 2 + 41 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_sin_q31.c + arm_sin_q31.c + + + 2 + 42 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_sqrt_q15.c + arm_sqrt_q15.c + + + 2 + 43 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_sqrt_q31.c + arm_sqrt_q31.c + + + + + ComplexMathFunctions + 0 + 0 + 0 + + 3 + 44 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_conj_f32.c + arm_cmplx_conj_f32.c + + + 3 + 45 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_conj_q15.c + arm_cmplx_conj_q15.c + + + 3 + 46 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_conj_q31.c + arm_cmplx_conj_q31.c + + + 3 + 47 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_f32.c + arm_cmplx_dot_prod_f32.c + + + 3 + 48 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q15.c + arm_cmplx_dot_prod_q15.c + + + 3 + 49 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q31.c + arm_cmplx_dot_prod_q31.c + + + 3 + 50 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mag_f32.c + arm_cmplx_mag_f32.c + + + 3 + 51 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mag_q15.c + arm_cmplx_mag_q15.c + + + 3 + 52 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mag_q31.c + arm_cmplx_mag_q31.c + + + 3 + 53 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_f32.c + arm_cmplx_mag_squared_f32.c + + + 3 + 54 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q15.c + arm_cmplx_mag_squared_q15.c + + + 3 + 55 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q31.c + arm_cmplx_mag_squared_q31.c + + + 3 + 56 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_f32.c + arm_cmplx_mult_cmplx_f32.c + + + 3 + 57 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q15.c + arm_cmplx_mult_cmplx_q15.c + + + 3 + 58 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q31.c + arm_cmplx_mult_cmplx_q31.c + + + 3 + 59 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mult_real_f32.c + arm_cmplx_mult_real_f32.c + + + 3 + 60 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q15.c + arm_cmplx_mult_real_q15.c + + + 3 + 61 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q31.c + arm_cmplx_mult_real_q31.c + + + + + FilteringFunctions + 0 + 0 + 0 + + 4 + 62 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_init_q31.c + arm_biquad_cascade_df1_32x64_init_q31.c + + + 4 + 63 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_q31.c + arm_biquad_cascade_df1_32x64_q31.c + + + 4 + 64 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_f32.c + arm_biquad_cascade_df1_f32.c + + + 4 + 65 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q15.c + arm_biquad_cascade_df1_fast_q15.c + + + 4 + 66 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q31.c + arm_biquad_cascade_df1_fast_q31.c + + + 4 + 67 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_f32.c + arm_biquad_cascade_df1_init_f32.c + + + 4 + 68 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q15.c + arm_biquad_cascade_df1_init_q15.c + + + 4 + 69 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q31.c + arm_biquad_cascade_df1_init_q31.c + + + 4 + 70 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_q15.c + arm_biquad_cascade_df1_q15.c + + + 4 + 71 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_q31.c + arm_biquad_cascade_df1_q31.c + + + 4 + 72 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df2T_f32.c + arm_biquad_cascade_df2T_f32.c + + + 4 + 73 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df2T_init_f32.c + arm_biquad_cascade_df2T_init_f32.c + + + 4 + 74 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_f32.c + arm_conv_f32.c + + + 4 + 75 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_fast_q15.c + arm_conv_fast_q15.c + + + 4 + 76 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_fast_q31.c + arm_conv_fast_q31.c + + + 4 + 77 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_partial_f32.c + arm_conv_partial_f32.c + + + 4 + 78 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_partial_fast_q15.c + arm_conv_partial_fast_q15.c + + + 4 + 79 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_partial_fast_q31.c + arm_conv_partial_fast_q31.c + + + 4 + 80 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_partial_q7.c + arm_conv_partial_q7.c + + + 4 + 81 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_partial_q15.c + arm_conv_partial_q15.c + + + 4 + 82 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_partial_q31.c + arm_conv_partial_q31.c + + + 4 + 83 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_q7.c + arm_conv_q7.c + + + 4 + 84 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_q15.c + arm_conv_q15.c + + + 4 + 85 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_q31.c + arm_conv_q31.c + + + 4 + 86 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_correlate_f32.c + arm_correlate_f32.c + + + 4 + 87 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_correlate_fast_q15.c + arm_correlate_fast_q15.c + + + 4 + 88 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_correlate_fast_q31.c + arm_correlate_fast_q31.c + + + 4 + 89 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_correlate_q7.c + arm_correlate_q7.c + + + 4 + 90 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_correlate_q15.c + arm_correlate_q15.c + + + 4 + 91 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_correlate_q31.c + arm_correlate_q31.c + + + 4 + 92 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_f32.c + arm_fir_decimate_f32.c + + + 4 + 93 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_fast_q15.c + arm_fir_decimate_fast_q15.c + + + 4 + 94 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_fast_q31.c + arm_fir_decimate_fast_q31.c + + + 4 + 95 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_init_f32.c + arm_fir_decimate_init_f32.c + + + 4 + 96 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_init_q15.c + arm_fir_decimate_init_q15.c + + + 4 + 97 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_init_q31.c + arm_fir_decimate_init_q31.c + + + 4 + 98 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_q15.c + arm_fir_decimate_q15.c + + + 4 + 99 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_q31.c + arm_fir_decimate_q31.c + + + 4 + 100 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_f32.c + arm_fir_f32.c + + + 4 + 101 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_fast_q15.c + arm_fir_fast_q15.c + + + 4 + 102 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_fast_q31.c + arm_fir_fast_q31.c + + + 4 + 103 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_init_f32.c + arm_fir_init_f32.c + + + 4 + 104 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_init_q7.c + arm_fir_init_q7.c + + + 4 + 105 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_init_q15.c + arm_fir_init_q15.c + + + 4 + 106 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_init_q31.c + arm_fir_init_q31.c + + + 4 + 107 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_interpolate_f32.c + arm_fir_interpolate_f32.c + + + 4 + 108 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_interpolate_init_f32.c + arm_fir_interpolate_init_f32.c + + + 4 + 109 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_interpolate_init_q15.c + arm_fir_interpolate_init_q15.c + + + 4 + 110 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_interpolate_init_q31.c + arm_fir_interpolate_init_q31.c + + + 4 + 111 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_interpolate_q15.c + arm_fir_interpolate_q15.c + + + 4 + 112 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_interpolate_q31.c + arm_fir_interpolate_q31.c + + + 4 + 113 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_lattice_f32.c + arm_fir_lattice_f32.c + + + 4 + 114 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_lattice_init_f32.c + arm_fir_lattice_init_f32.c + + + 4 + 115 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_lattice_init_q15.c + arm_fir_lattice_init_q15.c + + + 4 + 116 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_lattice_init_q31.c + arm_fir_lattice_init_q31.c + + + 4 + 117 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_lattice_q15.c + arm_fir_lattice_q15.c + + + 4 + 118 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_lattice_q31.c + arm_fir_lattice_q31.c + + + 4 + 119 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_q7.c + arm_fir_q7.c + + + 4 + 120 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_q15.c + arm_fir_q15.c + + + 4 + 121 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_q31.c + arm_fir_q31.c + + + 4 + 122 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_f32.c + arm_fir_sparse_f32.c + + + 4 + 123 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_init_f32.c + arm_fir_sparse_init_f32.c + + + 4 + 124 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_init_q7.c + arm_fir_sparse_init_q7.c + + + 4 + 125 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_init_q15.c + arm_fir_sparse_init_q15.c + + + 4 + 126 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_init_q31.c + arm_fir_sparse_init_q31.c + + + 4 + 127 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_q7.c + arm_fir_sparse_q7.c + + + 4 + 128 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_q15.c + arm_fir_sparse_q15.c + + + 4 + 129 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_q31.c + arm_fir_sparse_q31.c + + + 4 + 130 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_iir_lattice_f32.c + arm_iir_lattice_f32.c + + + 4 + 131 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_iir_lattice_init_f32.c + arm_iir_lattice_init_f32.c + + + 4 + 132 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_iir_lattice_init_q15.c + arm_iir_lattice_init_q15.c + + + 4 + 133 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_iir_lattice_init_q31.c + arm_iir_lattice_init_q31.c + + + 4 + 134 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_iir_lattice_q15.c + arm_iir_lattice_q15.c + + + 4 + 135 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_iir_lattice_q31.c + arm_iir_lattice_q31.c + + + 4 + 136 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_f32.c + arm_lms_f32.c + + + 4 + 137 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_init_f32.c + arm_lms_init_f32.c + + + 4 + 138 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_init_q15.c + arm_lms_init_q15.c + + + 4 + 139 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_init_q31.c + arm_lms_init_q31.c + + + 4 + 140 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_norm_f32.c + arm_lms_norm_f32.c + + + 4 + 141 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_norm_init_f32.c + arm_lms_norm_init_f32.c + + + 4 + 142 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_norm_init_q15.c + arm_lms_norm_init_q15.c + + + 4 + 143 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_norm_init_q31.c + arm_lms_norm_init_q31.c + + + 4 + 144 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_norm_q15.c + arm_lms_norm_q15.c + + + 4 + 145 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_norm_q31.c + arm_lms_norm_q31.c + + + 4 + 146 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_q15.c + arm_lms_q15.c + + + 4 + 147 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_q31.c + arm_lms_q31.c + + + + + MatrixFunctions + 0 + 0 + 0 + + 5 + 148 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_add_f32.c + arm_mat_add_f32.c + + + 5 + 149 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_add_q15.c + arm_mat_add_q15.c + + + 5 + 150 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_add_q31.c + arm_mat_add_q31.c + + + 5 + 151 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_init_f32.c + arm_mat_init_f32.c + + + 5 + 152 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_init_q15.c + arm_mat_init_q15.c + + + 5 + 153 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_init_q31.c + arm_mat_init_q31.c + + + 5 + 154 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_inverse_f32.c + arm_mat_inverse_f32.c + + + 5 + 155 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_mult_f32.c + arm_mat_mult_f32.c + + + 5 + 156 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_mult_fast_q15.c + arm_mat_mult_fast_q15.c + + + 5 + 157 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_mult_fast_q31.c + arm_mat_mult_fast_q31.c + + + 5 + 158 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_mult_q15.c + arm_mat_mult_q15.c + + + 5 + 159 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_mult_q31.c + arm_mat_mult_q31.c + + + 5 + 160 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_scale_f32.c + arm_mat_scale_f32.c + + + 5 + 161 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_scale_q15.c + arm_mat_scale_q15.c + + + 5 + 162 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_scale_q31.c + arm_mat_scale_q31.c + + + 5 + 163 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_sub_f32.c + arm_mat_sub_f32.c + + + 5 + 164 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_sub_q15.c + arm_mat_sub_q15.c + + + 5 + 165 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_sub_q31.c + arm_mat_sub_q31.c + + + 5 + 166 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_trans_f32.c + arm_mat_trans_f32.c + + + 5 + 167 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_trans_q15.c + arm_mat_trans_q15.c + + + 5 + 168 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_trans_q31.c + arm_mat_trans_q31.c + + + + + TransformFunctions + 0 + 0 + 0 + + 6 + 169 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_cfft_radix4_f32.c + arm_cfft_radix4_f32.c + + + 6 + 170 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_cfft_radix4_init_f32.c + arm_cfft_radix4_init_f32.c + + + 6 + 171 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_cfft_radix4_init_q15.c + arm_cfft_radix4_init_q15.c + + + 6 + 172 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_cfft_radix4_init_q31.c + arm_cfft_radix4_init_q31.c + + + 6 + 173 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_cfft_radix4_q15.c + arm_cfft_radix4_q15.c + + + 6 + 174 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_cfft_radix4_q31.c + arm_cfft_radix4_q31.c + + + 6 + 175 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_dct4_f32.c + arm_dct4_f32.c + + + 6 + 176 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_dct4_init_f32.c + arm_dct4_init_f32.c + + + 6 + 177 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_dct4_init_q15.c + arm_dct4_init_q15.c + + + 6 + 178 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_dct4_init_q31.c + arm_dct4_init_q31.c + + + 6 + 179 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_dct4_q15.c + arm_dct4_q15.c + + + 6 + 180 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_dct4_q31.c + arm_dct4_q31.c + + + 6 + 181 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_rfft_f32.c + arm_rfft_f32.c + + + 6 + 182 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_rfft_init_f32.c + arm_rfft_init_f32.c + + + 6 + 183 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_rfft_init_q15.c + arm_rfft_init_q15.c + + + 6 + 184 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_rfft_init_q31.c + arm_rfft_init_q31.c + + + 6 + 185 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_rfft_q15.c + arm_rfft_q15.c + + + 6 + 186 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_rfft_q31.c + arm_rfft_q31.c + + + + + ControllerFunctions + 0 + 0 + 0 + + 7 + 187 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_pid_init_f32.c + arm_pid_init_f32.c + + + 7 + 188 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_pid_init_q15.c + arm_pid_init_q15.c + + + 7 + 189 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_pid_init_q31.c + arm_pid_init_q31.c + + + 7 + 190 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_pid_reset_f32.c + arm_pid_reset_f32.c + + + 7 + 191 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_pid_reset_q15.c + arm_pid_reset_q15.c + + + 7 + 192 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_pid_reset_q31.c + arm_pid_reset_q31.c + + + 7 + 193 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_sin_cos_f32.c + arm_sin_cos_f32.c + + + 7 + 194 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_sin_cos_q31.c + arm_sin_cos_q31.c + + + + + StatisticsFunctions + 0 + 0 + 0 + + 8 + 195 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_max_f32.c + arm_max_f32.c + + + 8 + 196 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_max_q7.c + arm_max_q7.c + + + 8 + 197 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_max_q15.c + arm_max_q15.c + + + 8 + 198 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_max_q31.c + arm_max_q31.c + + + 8 + 199 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_mean_f32.c + arm_mean_f32.c + + + 8 + 200 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_mean_q7.c + arm_mean_q7.c + + + 8 + 201 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_mean_q15.c + arm_mean_q15.c + + + 8 + 202 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_mean_q31.c + arm_mean_q31.c + + + 8 + 203 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_min_f32.c + arm_min_f32.c + + + 8 + 204 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_min_q7.c + arm_min_q7.c + + + 8 + 205 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_min_q15.c + arm_min_q15.c + + + 8 + 206 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_min_q31.c + arm_min_q31.c + + + 8 + 207 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_power_f32.c + arm_power_f32.c + + + 8 + 208 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_power_q7.c + arm_power_q7.c + + + 8 + 209 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_power_q15.c + arm_power_q15.c + + + 8 + 210 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_power_q31.c + arm_power_q31.c + + + 8 + 211 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_rms_f32.c + arm_rms_f32.c + + + 8 + 212 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_rms_q15.c + arm_rms_q15.c + + + 8 + 213 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_rms_q31.c + arm_rms_q31.c + + + 8 + 214 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_std_f32.c + arm_std_f32.c + + + 8 + 215 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_std_q15.c + arm_std_q15.c + + + 8 + 216 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_std_q31.c + arm_std_q31.c + + + 8 + 217 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_var_f32.c + arm_var_f32.c + + + 8 + 218 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_var_q15.c + arm_var_q15.c + + + 8 + 219 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_var_q31.c + arm_var_q31.c + + + + + SupportFunctions + 0 + 0 + 0 + + 9 + 220 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_copy_f32.c + arm_copy_f32.c + + + 9 + 221 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_copy_q7.c + arm_copy_q7.c + + + 9 + 222 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_copy_q15.c + arm_copy_q15.c + + + 9 + 223 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_copy_q31.c + arm_copy_q31.c + + + 9 + 224 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_fill_f32.c + arm_fill_f32.c + + + 9 + 225 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_fill_q7.c + arm_fill_q7.c + + + 9 + 226 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_fill_q15.c + arm_fill_q15.c + + + 9 + 227 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_fill_q31.c + arm_fill_q31.c + + + 9 + 228 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_float_to_q7.c + arm_float_to_q7.c + + + 9 + 229 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_float_to_q15.c + arm_float_to_q15.c + + + 9 + 230 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_float_to_q31.c + arm_float_to_q31.c + + + 9 + 231 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q7_to_float.c + arm_q7_to_float.c + + + 9 + 232 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q7_to_q15.c + arm_q7_to_q15.c + + + 9 + 233 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q7_to_q31.c + arm_q7_to_q31.c + + + 9 + 234 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q15_to_float.c + arm_q15_to_float.c + + + 9 + 235 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q15_to_q7.c + arm_q15_to_q7.c + + + 9 + 236 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q15_to_q31.c + arm_q15_to_q31.c + + + 9 + 237 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q31_to_float.c + arm_q31_to_float.c + + + 9 + 238 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q31_to_q7.c + arm_q31_to_q7.c + + + 9 + 239 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q31_to_q15.c + arm_q31_to_q15.c + + + + + CommonTables + 0 + 0 + 0 + + 10 + 240 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\CommonTables\arm_common_tables.c + arm_common_tables.c + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexM0x_math.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexM0x_math.uvproj new file mode 100644 index 000000000..2bc90b49a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexM0x_math.uvproj @@ -0,0 +1,3269 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + DSP_Lib CM0 LE + 0x4 + ARM-ADS + + + Cortex-M0 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M0") ESEL ELITTLE + + + + 4803 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\intermediateFiles\ + arm_cortexM0l_math + 0 + 1 + 0 + 1 + 1 + .\intermediateFiles\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" "..\..\..\Lib\ARM\" + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM0, ARM_MATH_MATRIX_CHECK, ARM_MATH_ROUNDING + + ..\..\..\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + BasicMathFunctions + + + arm_abs_f32.c + 1 + ..\BasicMathFunctions\arm_abs_f32.c + + + arm_abs_q7.c + 1 + ..\BasicMathFunctions\arm_abs_q7.c + + + arm_abs_q15.c + 1 + ..\BasicMathFunctions\arm_abs_q15.c + + + arm_abs_q31.c + 1 + ..\BasicMathFunctions\arm_abs_q31.c + + + arm_add_f32.c + 1 + ..\BasicMathFunctions\arm_add_f32.c + + + arm_add_q7.c + 1 + ..\BasicMathFunctions\arm_add_q7.c + + + arm_add_q15.c + 1 + ..\BasicMathFunctions\arm_add_q15.c + + + arm_add_q31.c + 1 + ..\BasicMathFunctions\arm_add_q31.c + + + arm_dot_prod_f32.c + 1 + ..\BasicMathFunctions\arm_dot_prod_f32.c + + + arm_dot_prod_q7.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q7.c + + + arm_dot_prod_q15.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q15.c + + + arm_dot_prod_q31.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q31.c + + + arm_mult_f32.c + 1 + ..\BasicMathFunctions\arm_mult_f32.c + + + arm_mult_q7.c + 1 + ..\BasicMathFunctions\arm_mult_q7.c + + + arm_mult_q15.c + 1 + ..\BasicMathFunctions\arm_mult_q15.c + + + arm_mult_q31.c + 1 + ..\BasicMathFunctions\arm_mult_q31.c + + + arm_negate_f32.c + 1 + ..\BasicMathFunctions\arm_negate_f32.c + + + arm_negate_q7.c + 1 + ..\BasicMathFunctions\arm_negate_q7.c + + + arm_negate_q15.c + 1 + ..\BasicMathFunctions\arm_negate_q15.c + + + arm_negate_q31.c + 1 + ..\BasicMathFunctions\arm_negate_q31.c + + + arm_offset_f32.c + 1 + ..\BasicMathFunctions\arm_offset_f32.c + + + arm_offset_q7.c + 1 + ..\BasicMathFunctions\arm_offset_q7.c + + + arm_offset_q15.c + 1 + ..\BasicMathFunctions\arm_offset_q15.c + + + arm_offset_q31.c + 1 + ..\BasicMathFunctions\arm_offset_q31.c + + + arm_scale_f32.c + 1 + ..\BasicMathFunctions\arm_scale_f32.c + + + arm_scale_q7.c + 1 + ..\BasicMathFunctions\arm_scale_q7.c + + + arm_scale_q15.c + 1 + ..\BasicMathFunctions\arm_scale_q15.c + + + arm_scale_q31.c + 1 + ..\BasicMathFunctions\arm_scale_q31.c + + + arm_shift_q7.c + 1 + ..\BasicMathFunctions\arm_shift_q7.c + + + arm_shift_q15.c + 1 + ..\BasicMathFunctions\arm_shift_q15.c + + + arm_shift_q31.c + 1 + ..\BasicMathFunctions\arm_shift_q31.c + + + arm_sub_f32.c + 1 + ..\BasicMathFunctions\arm_sub_f32.c + + + arm_sub_q7.c + 1 + ..\BasicMathFunctions\arm_sub_q7.c + + + arm_sub_q15.c + 1 + ..\BasicMathFunctions\arm_sub_q15.c + + + arm_sub_q31.c + 1 + ..\BasicMathFunctions\arm_sub_q31.c + + + + + FastMathFunctions + + + arm_cos_f32.c + 1 + ..\FastMathFunctions\arm_cos_f32.c + + + arm_cos_q15.c + 1 + ..\FastMathFunctions\arm_cos_q15.c + + + arm_cos_q31.c + 1 + ..\FastMathFunctions\arm_cos_q31.c + + + arm_sin_f32.c + 1 + ..\FastMathFunctions\arm_sin_f32.c + + + arm_sin_q15.c + 1 + ..\FastMathFunctions\arm_sin_q15.c + + + arm_sin_q31.c + 1 + ..\FastMathFunctions\arm_sin_q31.c + + + arm_sqrt_q15.c + 1 + ..\FastMathFunctions\arm_sqrt_q15.c + + + arm_sqrt_q31.c + 1 + ..\FastMathFunctions\arm_sqrt_q31.c + + + + + ComplexMathFunctions + + + arm_cmplx_conj_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_f32.c + + + arm_cmplx_conj_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_q15.c + + + arm_cmplx_conj_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_q31.c + + + arm_cmplx_dot_prod_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_f32.c + + + arm_cmplx_dot_prod_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q15.c + + + arm_cmplx_dot_prod_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q31.c + + + arm_cmplx_mag_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_f32.c + + + arm_cmplx_mag_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_q15.c + + + arm_cmplx_mag_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_q31.c + + + arm_cmplx_mag_squared_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_f32.c + + + arm_cmplx_mag_squared_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q15.c + + + arm_cmplx_mag_squared_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q31.c + + + arm_cmplx_mult_cmplx_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_f32.c + + + arm_cmplx_mult_cmplx_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q15.c + + + arm_cmplx_mult_cmplx_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q31.c + + + arm_cmplx_mult_real_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_f32.c + + + arm_cmplx_mult_real_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q15.c + + + arm_cmplx_mult_real_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q31.c + + + + + FilteringFunctions + + + arm_biquad_cascade_df1_32x64_init_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_init_q31.c + + + arm_biquad_cascade_df1_32x64_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_q31.c + + + arm_biquad_cascade_df1_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_f32.c + + + arm_biquad_cascade_df1_fast_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q15.c + + + arm_biquad_cascade_df1_fast_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q31.c + + + arm_biquad_cascade_df1_init_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_f32.c + + + arm_biquad_cascade_df1_init_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q15.c + + + arm_biquad_cascade_df1_init_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q31.c + + + arm_biquad_cascade_df1_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_q15.c + + + arm_biquad_cascade_df1_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_q31.c + + + arm_biquad_cascade_df2T_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df2T_f32.c + + + arm_biquad_cascade_df2T_init_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df2T_init_f32.c + + + arm_conv_f32.c + 1 + ..\FilteringFunctions\arm_conv_f32.c + + + arm_conv_fast_q15.c + 1 + ..\FilteringFunctions\arm_conv_fast_q15.c + + + arm_conv_fast_q31.c + 1 + ..\FilteringFunctions\arm_conv_fast_q31.c + + + arm_conv_partial_f32.c + 1 + ..\FilteringFunctions\arm_conv_partial_f32.c + + + arm_conv_partial_fast_q15.c + 1 + ..\FilteringFunctions\arm_conv_partial_fast_q15.c + + + arm_conv_partial_fast_q31.c + 1 + ..\FilteringFunctions\arm_conv_partial_fast_q31.c + + + arm_conv_partial_q7.c + 1 + ..\FilteringFunctions\arm_conv_partial_q7.c + + + arm_conv_partial_q15.c + 1 + ..\FilteringFunctions\arm_conv_partial_q15.c + + + arm_conv_partial_q31.c + 1 + ..\FilteringFunctions\arm_conv_partial_q31.c + + + arm_conv_q7.c + 1 + ..\FilteringFunctions\arm_conv_q7.c + + + arm_conv_q15.c + 1 + ..\FilteringFunctions\arm_conv_q15.c + + + arm_conv_q31.c + 1 + ..\FilteringFunctions\arm_conv_q31.c + + + arm_correlate_f32.c + 1 + ..\FilteringFunctions\arm_correlate_f32.c + + + arm_correlate_fast_q15.c + 1 + ..\FilteringFunctions\arm_correlate_fast_q15.c + + + arm_correlate_fast_q31.c + 1 + ..\FilteringFunctions\arm_correlate_fast_q31.c + + + arm_correlate_q7.c + 1 + ..\FilteringFunctions\arm_correlate_q7.c + + + arm_correlate_q15.c + 1 + ..\FilteringFunctions\arm_correlate_q15.c + + + arm_correlate_q31.c + 1 + ..\FilteringFunctions\arm_correlate_q31.c + + + arm_fir_decimate_f32.c + 1 + ..\FilteringFunctions\arm_fir_decimate_f32.c + + + arm_fir_decimate_fast_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_fast_q15.c + + + arm_fir_decimate_fast_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_fast_q31.c + + + arm_fir_decimate_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_f32.c + + + arm_fir_decimate_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_q15.c + + + arm_fir_decimate_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_q31.c + + + arm_fir_decimate_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_q15.c + + + arm_fir_decimate_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_q31.c + + + arm_fir_f32.c + 1 + ..\FilteringFunctions\arm_fir_f32.c + + + arm_fir_fast_q15.c + 1 + ..\FilteringFunctions\arm_fir_fast_q15.c + + + arm_fir_fast_q31.c + 1 + ..\FilteringFunctions\arm_fir_fast_q31.c + + + arm_fir_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_init_f32.c + + + arm_fir_init_q7.c + 1 + ..\FilteringFunctions\arm_fir_init_q7.c + + + arm_fir_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_init_q15.c + + + arm_fir_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_init_q31.c + + + arm_fir_interpolate_f32.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_f32.c + + + arm_fir_interpolate_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_f32.c + + + arm_fir_interpolate_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_q15.c + + + arm_fir_interpolate_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_q31.c + + + arm_fir_interpolate_q15.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_q15.c + + + arm_fir_interpolate_q31.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_q31.c + + + arm_fir_lattice_f32.c + 1 + ..\FilteringFunctions\arm_fir_lattice_f32.c + + + arm_fir_lattice_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_f32.c + + + arm_fir_lattice_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_q15.c + + + arm_fir_lattice_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_q31.c + + + arm_fir_lattice_q15.c + 1 + ..\FilteringFunctions\arm_fir_lattice_q15.c + + + arm_fir_lattice_q31.c + 1 + ..\FilteringFunctions\arm_fir_lattice_q31.c + + + arm_fir_q7.c + 1 + ..\FilteringFunctions\arm_fir_q7.c + + + arm_fir_q15.c + 1 + ..\FilteringFunctions\arm_fir_q15.c + + + arm_fir_q31.c + 1 + ..\FilteringFunctions\arm_fir_q31.c + + + arm_fir_sparse_f32.c + 1 + ..\FilteringFunctions\arm_fir_sparse_f32.c + + + arm_fir_sparse_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_f32.c + + + arm_fir_sparse_init_q7.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q7.c + + + arm_fir_sparse_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q15.c + + + arm_fir_sparse_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q31.c + + + arm_fir_sparse_q7.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q7.c + + + arm_fir_sparse_q15.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q15.c + + + arm_fir_sparse_q31.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q31.c + + + arm_iir_lattice_f32.c + 1 + ..\FilteringFunctions\arm_iir_lattice_f32.c + + + arm_iir_lattice_init_f32.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_f32.c + + + arm_iir_lattice_init_q15.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_q15.c + + + arm_iir_lattice_init_q31.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_q31.c + + + arm_iir_lattice_q15.c + 1 + ..\FilteringFunctions\arm_iir_lattice_q15.c + + + arm_iir_lattice_q31.c + 1 + ..\FilteringFunctions\arm_iir_lattice_q31.c + + + arm_lms_f32.c + 1 + ..\FilteringFunctions\arm_lms_f32.c + + + arm_lms_init_f32.c + 1 + ..\FilteringFunctions\arm_lms_init_f32.c + + + arm_lms_init_q15.c + 1 + ..\FilteringFunctions\arm_lms_init_q15.c + + + arm_lms_init_q31.c + 1 + ..\FilteringFunctions\arm_lms_init_q31.c + + + arm_lms_norm_f32.c + 1 + ..\FilteringFunctions\arm_lms_norm_f32.c + + + arm_lms_norm_init_f32.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_f32.c + + + arm_lms_norm_init_q15.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_q15.c + + + arm_lms_norm_init_q31.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_q31.c + + + arm_lms_norm_q15.c + 1 + ..\FilteringFunctions\arm_lms_norm_q15.c + + + arm_lms_norm_q31.c + 1 + ..\FilteringFunctions\arm_lms_norm_q31.c + + + arm_lms_q15.c + 1 + ..\FilteringFunctions\arm_lms_q15.c + + + arm_lms_q31.c + 1 + ..\FilteringFunctions\arm_lms_q31.c + + + + + MatrixFunctions + + + arm_mat_add_f32.c + 1 + ..\MatrixFunctions\arm_mat_add_f32.c + + + arm_mat_add_q15.c + 1 + ..\MatrixFunctions\arm_mat_add_q15.c + + + arm_mat_add_q31.c + 1 + ..\MatrixFunctions\arm_mat_add_q31.c + + + arm_mat_init_f32.c + 1 + ..\MatrixFunctions\arm_mat_init_f32.c + + + arm_mat_init_q15.c + 1 + ..\MatrixFunctions\arm_mat_init_q15.c + + + arm_mat_init_q31.c + 1 + ..\MatrixFunctions\arm_mat_init_q31.c + + + arm_mat_inverse_f32.c + 1 + ..\MatrixFunctions\arm_mat_inverse_f32.c + + + arm_mat_mult_f32.c + 1 + ..\MatrixFunctions\arm_mat_mult_f32.c + + + arm_mat_mult_fast_q15.c + 1 + ..\MatrixFunctions\arm_mat_mult_fast_q15.c + + + arm_mat_mult_fast_q31.c + 1 + ..\MatrixFunctions\arm_mat_mult_fast_q31.c + + + arm_mat_mult_q15.c + 1 + ..\MatrixFunctions\arm_mat_mult_q15.c + + + arm_mat_mult_q31.c + 1 + ..\MatrixFunctions\arm_mat_mult_q31.c + + + arm_mat_scale_f32.c + 1 + ..\MatrixFunctions\arm_mat_scale_f32.c + + + arm_mat_scale_q15.c + 1 + ..\MatrixFunctions\arm_mat_scale_q15.c + + + arm_mat_scale_q31.c + 1 + ..\MatrixFunctions\arm_mat_scale_q31.c + + + arm_mat_sub_f32.c + 1 + ..\MatrixFunctions\arm_mat_sub_f32.c + + + arm_mat_sub_q15.c + 1 + ..\MatrixFunctions\arm_mat_sub_q15.c + + + arm_mat_sub_q31.c + 1 + ..\MatrixFunctions\arm_mat_sub_q31.c + + + arm_mat_trans_f32.c + 1 + ..\MatrixFunctions\arm_mat_trans_f32.c + + + arm_mat_trans_q15.c + 1 + ..\MatrixFunctions\arm_mat_trans_q15.c + + + arm_mat_trans_q31.c + 1 + ..\MatrixFunctions\arm_mat_trans_q31.c + + + + + TransformFunctions + + + arm_cfft_radix4_f32.c + 1 + ..\TransformFunctions\arm_cfft_radix4_f32.c + + + arm_cfft_radix4_init_f32.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_f32.c + + + arm_cfft_radix4_init_q15.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_q15.c + + + arm_cfft_radix4_init_q31.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_q31.c + + + arm_cfft_radix4_q15.c + 1 + ..\TransformFunctions\arm_cfft_radix4_q15.c + + + arm_cfft_radix4_q31.c + 1 + ..\TransformFunctions\arm_cfft_radix4_q31.c + + + arm_dct4_f32.c + 1 + ..\TransformFunctions\arm_dct4_f32.c + + + arm_dct4_init_f32.c + 1 + ..\TransformFunctions\arm_dct4_init_f32.c + + + arm_dct4_init_q15.c + 1 + ..\TransformFunctions\arm_dct4_init_q15.c + + + arm_dct4_init_q31.c + 1 + ..\TransformFunctions\arm_dct4_init_q31.c + + + arm_dct4_q15.c + 1 + ..\TransformFunctions\arm_dct4_q15.c + + + arm_dct4_q31.c + 1 + ..\TransformFunctions\arm_dct4_q31.c + + + arm_rfft_f32.c + 1 + ..\TransformFunctions\arm_rfft_f32.c + + + arm_rfft_init_f32.c + 1 + ..\TransformFunctions\arm_rfft_init_f32.c + + + arm_rfft_init_q15.c + 1 + ..\TransformFunctions\arm_rfft_init_q15.c + + + arm_rfft_init_q31.c + 1 + ..\TransformFunctions\arm_rfft_init_q31.c + + + arm_rfft_q15.c + 1 + ..\TransformFunctions\arm_rfft_q15.c + + + arm_rfft_q31.c + 1 + ..\TransformFunctions\arm_rfft_q31.c + + + + + ControllerFunctions + + + arm_pid_init_f32.c + 1 + ..\ControllerFunctions\arm_pid_init_f32.c + + + arm_pid_init_q15.c + 1 + ..\ControllerFunctions\arm_pid_init_q15.c + + + arm_pid_init_q31.c + 1 + ..\ControllerFunctions\arm_pid_init_q31.c + + + arm_pid_reset_f32.c + 1 + ..\ControllerFunctions\arm_pid_reset_f32.c + + + arm_pid_reset_q15.c + 1 + ..\ControllerFunctions\arm_pid_reset_q15.c + + + arm_pid_reset_q31.c + 1 + ..\ControllerFunctions\arm_pid_reset_q31.c + + + arm_sin_cos_f32.c + 1 + ..\ControllerFunctions\arm_sin_cos_f32.c + + + arm_sin_cos_q31.c + 1 + ..\ControllerFunctions\arm_sin_cos_q31.c + + + + + StatisticsFunctions + + + arm_max_f32.c + 1 + ..\StatisticsFunctions\arm_max_f32.c + + + arm_max_q7.c + 1 + ..\StatisticsFunctions\arm_max_q7.c + + + arm_max_q15.c + 1 + ..\StatisticsFunctions\arm_max_q15.c + + + arm_max_q31.c + 1 + ..\StatisticsFunctions\arm_max_q31.c + + + arm_mean_f32.c + 1 + ..\StatisticsFunctions\arm_mean_f32.c + + + arm_mean_q7.c + 1 + ..\StatisticsFunctions\arm_mean_q7.c + + + arm_mean_q15.c + 1 + ..\StatisticsFunctions\arm_mean_q15.c + + + arm_mean_q31.c + 1 + ..\StatisticsFunctions\arm_mean_q31.c + + + arm_min_f32.c + 1 + ..\StatisticsFunctions\arm_min_f32.c + + + arm_min_q7.c + 1 + ..\StatisticsFunctions\arm_min_q7.c + + + arm_min_q15.c + 1 + ..\StatisticsFunctions\arm_min_q15.c + + + arm_min_q31.c + 1 + ..\StatisticsFunctions\arm_min_q31.c + + + arm_power_f32.c + 1 + ..\StatisticsFunctions\arm_power_f32.c + + + arm_power_q7.c + 1 + ..\StatisticsFunctions\arm_power_q7.c + + + arm_power_q15.c + 1 + ..\StatisticsFunctions\arm_power_q15.c + + + arm_power_q31.c + 1 + ..\StatisticsFunctions\arm_power_q31.c + + + arm_rms_f32.c + 1 + ..\StatisticsFunctions\arm_rms_f32.c + + + arm_rms_q15.c + 1 + ..\StatisticsFunctions\arm_rms_q15.c + + + arm_rms_q31.c + 1 + ..\StatisticsFunctions\arm_rms_q31.c + + + arm_std_f32.c + 1 + ..\StatisticsFunctions\arm_std_f32.c + + + arm_std_q15.c + 1 + ..\StatisticsFunctions\arm_std_q15.c + + + arm_std_q31.c + 1 + ..\StatisticsFunctions\arm_std_q31.c + + + arm_var_f32.c + 1 + ..\StatisticsFunctions\arm_var_f32.c + + + arm_var_q15.c + 1 + ..\StatisticsFunctions\arm_var_q15.c + + + arm_var_q31.c + 1 + ..\StatisticsFunctions\arm_var_q31.c + + + + + SupportFunctions + + + arm_copy_f32.c + 1 + ..\SupportFunctions\arm_copy_f32.c + + + arm_copy_q7.c + 1 + ..\SupportFunctions\arm_copy_q7.c + + + arm_copy_q15.c + 1 + ..\SupportFunctions\arm_copy_q15.c + + + arm_copy_q31.c + 1 + ..\SupportFunctions\arm_copy_q31.c + + + arm_fill_f32.c + 1 + ..\SupportFunctions\arm_fill_f32.c + + + arm_fill_q7.c + 1 + ..\SupportFunctions\arm_fill_q7.c + + + arm_fill_q15.c + 1 + ..\SupportFunctions\arm_fill_q15.c + + + arm_fill_q31.c + 1 + ..\SupportFunctions\arm_fill_q31.c + + + arm_float_to_q7.c + 1 + ..\SupportFunctions\arm_float_to_q7.c + + + arm_float_to_q15.c + 1 + ..\SupportFunctions\arm_float_to_q15.c + + + arm_float_to_q31.c + 1 + ..\SupportFunctions\arm_float_to_q31.c + + + arm_q7_to_float.c + 1 + ..\SupportFunctions\arm_q7_to_float.c + + + arm_q7_to_q15.c + 1 + ..\SupportFunctions\arm_q7_to_q15.c + + + arm_q7_to_q31.c + 1 + ..\SupportFunctions\arm_q7_to_q31.c + + + arm_q15_to_float.c + 1 + ..\SupportFunctions\arm_q15_to_float.c + + + arm_q15_to_q7.c + 1 + ..\SupportFunctions\arm_q15_to_q7.c + + + arm_q15_to_q31.c + 1 + ..\SupportFunctions\arm_q15_to_q31.c + + + arm_q31_to_float.c + 1 + ..\SupportFunctions\arm_q31_to_float.c + + + arm_q31_to_q7.c + 1 + ..\SupportFunctions\arm_q31_to_q7.c + + + arm_q31_to_q15.c + 1 + ..\SupportFunctions\arm_q31_to_q15.c + + + + + CommonTables + + + arm_common_tables.c + 1 + ..\CommonTables\arm_common_tables.c + + + + + + + DSP_Lib CM0 BE + 0x4 + ARM-ADS + + + Cortex-M0 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M0") ESEL ELITTLE + + + + 4803 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\intermediateFiles\ + arm_cortexM0b_math + 0 + 1 + 0 + 1 + 1 + .\intermediateFiles\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" "..\..\..\Lib\ARM\" + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM0, ARM_MATH_MATRIX_CHECK, ARM_MATH_ROUNDING,ARM_MATH_BIG_ENDIAN + + ..\..\..\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + BasicMathFunctions + + + arm_abs_f32.c + 1 + ..\BasicMathFunctions\arm_abs_f32.c + + + arm_abs_q7.c + 1 + ..\BasicMathFunctions\arm_abs_q7.c + + + arm_abs_q15.c + 1 + ..\BasicMathFunctions\arm_abs_q15.c + + + arm_abs_q31.c + 1 + ..\BasicMathFunctions\arm_abs_q31.c + + + arm_add_f32.c + 1 + ..\BasicMathFunctions\arm_add_f32.c + + + arm_add_q7.c + 1 + ..\BasicMathFunctions\arm_add_q7.c + + + arm_add_q15.c + 1 + ..\BasicMathFunctions\arm_add_q15.c + + + arm_add_q31.c + 1 + ..\BasicMathFunctions\arm_add_q31.c + + + arm_dot_prod_f32.c + 1 + ..\BasicMathFunctions\arm_dot_prod_f32.c + + + arm_dot_prod_q7.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q7.c + + + arm_dot_prod_q15.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q15.c + + + arm_dot_prod_q31.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q31.c + + + arm_mult_f32.c + 1 + ..\BasicMathFunctions\arm_mult_f32.c + + + arm_mult_q7.c + 1 + ..\BasicMathFunctions\arm_mult_q7.c + + + arm_mult_q15.c + 1 + ..\BasicMathFunctions\arm_mult_q15.c + + + arm_mult_q31.c + 1 + ..\BasicMathFunctions\arm_mult_q31.c + + + arm_negate_f32.c + 1 + ..\BasicMathFunctions\arm_negate_f32.c + + + arm_negate_q7.c + 1 + ..\BasicMathFunctions\arm_negate_q7.c + + + arm_negate_q15.c + 1 + ..\BasicMathFunctions\arm_negate_q15.c + + + arm_negate_q31.c + 1 + ..\BasicMathFunctions\arm_negate_q31.c + + + arm_offset_f32.c + 1 + ..\BasicMathFunctions\arm_offset_f32.c + + + arm_offset_q7.c + 1 + ..\BasicMathFunctions\arm_offset_q7.c + + + arm_offset_q15.c + 1 + ..\BasicMathFunctions\arm_offset_q15.c + + + arm_offset_q31.c + 1 + ..\BasicMathFunctions\arm_offset_q31.c + + + arm_scale_f32.c + 1 + ..\BasicMathFunctions\arm_scale_f32.c + + + arm_scale_q7.c + 1 + ..\BasicMathFunctions\arm_scale_q7.c + + + arm_scale_q15.c + 1 + ..\BasicMathFunctions\arm_scale_q15.c + + + arm_scale_q31.c + 1 + ..\BasicMathFunctions\arm_scale_q31.c + + + arm_shift_q7.c + 1 + ..\BasicMathFunctions\arm_shift_q7.c + + + arm_shift_q15.c + 1 + ..\BasicMathFunctions\arm_shift_q15.c + + + arm_shift_q31.c + 1 + ..\BasicMathFunctions\arm_shift_q31.c + + + arm_sub_f32.c + 1 + ..\BasicMathFunctions\arm_sub_f32.c + + + arm_sub_q7.c + 1 + ..\BasicMathFunctions\arm_sub_q7.c + + + arm_sub_q15.c + 1 + ..\BasicMathFunctions\arm_sub_q15.c + + + arm_sub_q31.c + 1 + ..\BasicMathFunctions\arm_sub_q31.c + + + + + FastMathFunctions + + + arm_cos_f32.c + 1 + ..\FastMathFunctions\arm_cos_f32.c + + + arm_cos_q15.c + 1 + ..\FastMathFunctions\arm_cos_q15.c + + + arm_cos_q31.c + 1 + ..\FastMathFunctions\arm_cos_q31.c + + + arm_sin_f32.c + 1 + ..\FastMathFunctions\arm_sin_f32.c + + + arm_sin_q15.c + 1 + ..\FastMathFunctions\arm_sin_q15.c + + + arm_sin_q31.c + 1 + ..\FastMathFunctions\arm_sin_q31.c + + + arm_sqrt_q15.c + 1 + ..\FastMathFunctions\arm_sqrt_q15.c + + + arm_sqrt_q31.c + 1 + ..\FastMathFunctions\arm_sqrt_q31.c + + + + + ComplexMathFunctions + + + arm_cmplx_conj_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_f32.c + + + arm_cmplx_conj_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_q15.c + + + arm_cmplx_conj_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_q31.c + + + arm_cmplx_dot_prod_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_f32.c + + + arm_cmplx_dot_prod_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q15.c + + + arm_cmplx_dot_prod_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q31.c + + + arm_cmplx_mag_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_f32.c + + + arm_cmplx_mag_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_q15.c + + + arm_cmplx_mag_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_q31.c + + + arm_cmplx_mag_squared_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_f32.c + + + arm_cmplx_mag_squared_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q15.c + + + arm_cmplx_mag_squared_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q31.c + + + arm_cmplx_mult_cmplx_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_f32.c + + + arm_cmplx_mult_cmplx_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q15.c + + + arm_cmplx_mult_cmplx_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q31.c + + + arm_cmplx_mult_real_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_f32.c + + + arm_cmplx_mult_real_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q15.c + + + arm_cmplx_mult_real_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q31.c + + + + + FilteringFunctions + + + arm_biquad_cascade_df1_32x64_init_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_init_q31.c + + + arm_biquad_cascade_df1_32x64_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_q31.c + + + arm_biquad_cascade_df1_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_f32.c + + + arm_biquad_cascade_df1_fast_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q15.c + + + arm_biquad_cascade_df1_fast_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q31.c + + + arm_biquad_cascade_df1_init_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_f32.c + + + arm_biquad_cascade_df1_init_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q15.c + + + arm_biquad_cascade_df1_init_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q31.c + + + arm_biquad_cascade_df1_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_q15.c + + + arm_biquad_cascade_df1_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_q31.c + + + arm_biquad_cascade_df2T_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df2T_f32.c + + + arm_biquad_cascade_df2T_init_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df2T_init_f32.c + + + arm_conv_f32.c + 1 + ..\FilteringFunctions\arm_conv_f32.c + + + arm_conv_fast_q15.c + 1 + ..\FilteringFunctions\arm_conv_fast_q15.c + + + arm_conv_fast_q31.c + 1 + ..\FilteringFunctions\arm_conv_fast_q31.c + + + arm_conv_partial_f32.c + 1 + ..\FilteringFunctions\arm_conv_partial_f32.c + + + arm_conv_partial_fast_q15.c + 1 + ..\FilteringFunctions\arm_conv_partial_fast_q15.c + + + arm_conv_partial_fast_q31.c + 1 + ..\FilteringFunctions\arm_conv_partial_fast_q31.c + + + arm_conv_partial_q7.c + 1 + ..\FilteringFunctions\arm_conv_partial_q7.c + + + arm_conv_partial_q15.c + 1 + ..\FilteringFunctions\arm_conv_partial_q15.c + + + arm_conv_partial_q31.c + 1 + ..\FilteringFunctions\arm_conv_partial_q31.c + + + arm_conv_q7.c + 1 + ..\FilteringFunctions\arm_conv_q7.c + + + arm_conv_q15.c + 1 + ..\FilteringFunctions\arm_conv_q15.c + + + arm_conv_q31.c + 1 + ..\FilteringFunctions\arm_conv_q31.c + + + arm_correlate_f32.c + 1 + ..\FilteringFunctions\arm_correlate_f32.c + + + arm_correlate_fast_q15.c + 1 + ..\FilteringFunctions\arm_correlate_fast_q15.c + + + arm_correlate_fast_q31.c + 1 + ..\FilteringFunctions\arm_correlate_fast_q31.c + + + arm_correlate_q7.c + 1 + ..\FilteringFunctions\arm_correlate_q7.c + + + arm_correlate_q15.c + 1 + ..\FilteringFunctions\arm_correlate_q15.c + + + arm_correlate_q31.c + 1 + ..\FilteringFunctions\arm_correlate_q31.c + + + arm_fir_decimate_f32.c + 1 + ..\FilteringFunctions\arm_fir_decimate_f32.c + + + arm_fir_decimate_fast_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_fast_q15.c + + + arm_fir_decimate_fast_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_fast_q31.c + + + arm_fir_decimate_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_f32.c + + + arm_fir_decimate_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_q15.c + + + arm_fir_decimate_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_q31.c + + + arm_fir_decimate_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_q15.c + + + arm_fir_decimate_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_q31.c + + + arm_fir_f32.c + 1 + ..\FilteringFunctions\arm_fir_f32.c + + + arm_fir_fast_q15.c + 1 + ..\FilteringFunctions\arm_fir_fast_q15.c + + + arm_fir_fast_q31.c + 1 + ..\FilteringFunctions\arm_fir_fast_q31.c + + + arm_fir_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_init_f32.c + + + arm_fir_init_q7.c + 1 + ..\FilteringFunctions\arm_fir_init_q7.c + + + arm_fir_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_init_q15.c + + + arm_fir_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_init_q31.c + + + arm_fir_interpolate_f32.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_f32.c + + + arm_fir_interpolate_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_f32.c + + + arm_fir_interpolate_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_q15.c + + + arm_fir_interpolate_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_q31.c + + + arm_fir_interpolate_q15.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_q15.c + + + arm_fir_interpolate_q31.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_q31.c + + + arm_fir_lattice_f32.c + 1 + ..\FilteringFunctions\arm_fir_lattice_f32.c + + + arm_fir_lattice_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_f32.c + + + arm_fir_lattice_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_q15.c + + + arm_fir_lattice_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_q31.c + + + arm_fir_lattice_q15.c + 1 + ..\FilteringFunctions\arm_fir_lattice_q15.c + + + arm_fir_lattice_q31.c + 1 + ..\FilteringFunctions\arm_fir_lattice_q31.c + + + arm_fir_q7.c + 1 + ..\FilteringFunctions\arm_fir_q7.c + + + arm_fir_q15.c + 1 + ..\FilteringFunctions\arm_fir_q15.c + + + arm_fir_q31.c + 1 + ..\FilteringFunctions\arm_fir_q31.c + + + arm_fir_sparse_f32.c + 1 + ..\FilteringFunctions\arm_fir_sparse_f32.c + + + arm_fir_sparse_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_f32.c + + + arm_fir_sparse_init_q7.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q7.c + + + arm_fir_sparse_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q15.c + + + arm_fir_sparse_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q31.c + + + arm_fir_sparse_q7.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q7.c + + + arm_fir_sparse_q15.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q15.c + + + arm_fir_sparse_q31.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q31.c + + + arm_iir_lattice_f32.c + 1 + ..\FilteringFunctions\arm_iir_lattice_f32.c + + + arm_iir_lattice_init_f32.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_f32.c + + + arm_iir_lattice_init_q15.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_q15.c + + + arm_iir_lattice_init_q31.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_q31.c + + + arm_iir_lattice_q15.c + 1 + ..\FilteringFunctions\arm_iir_lattice_q15.c + + + arm_iir_lattice_q31.c + 1 + ..\FilteringFunctions\arm_iir_lattice_q31.c + + + arm_lms_f32.c + 1 + ..\FilteringFunctions\arm_lms_f32.c + + + arm_lms_init_f32.c + 1 + ..\FilteringFunctions\arm_lms_init_f32.c + + + arm_lms_init_q15.c + 1 + ..\FilteringFunctions\arm_lms_init_q15.c + + + arm_lms_init_q31.c + 1 + ..\FilteringFunctions\arm_lms_init_q31.c + + + arm_lms_norm_f32.c + 1 + ..\FilteringFunctions\arm_lms_norm_f32.c + + + arm_lms_norm_init_f32.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_f32.c + + + arm_lms_norm_init_q15.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_q15.c + + + arm_lms_norm_init_q31.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_q31.c + + + arm_lms_norm_q15.c + 1 + ..\FilteringFunctions\arm_lms_norm_q15.c + + + arm_lms_norm_q31.c + 1 + ..\FilteringFunctions\arm_lms_norm_q31.c + + + arm_lms_q15.c + 1 + ..\FilteringFunctions\arm_lms_q15.c + + + arm_lms_q31.c + 1 + ..\FilteringFunctions\arm_lms_q31.c + + + + + MatrixFunctions + + + arm_mat_add_f32.c + 1 + ..\MatrixFunctions\arm_mat_add_f32.c + + + arm_mat_add_q15.c + 1 + ..\MatrixFunctions\arm_mat_add_q15.c + + + arm_mat_add_q31.c + 1 + ..\MatrixFunctions\arm_mat_add_q31.c + + + arm_mat_init_f32.c + 1 + ..\MatrixFunctions\arm_mat_init_f32.c + + + arm_mat_init_q15.c + 1 + ..\MatrixFunctions\arm_mat_init_q15.c + + + arm_mat_init_q31.c + 1 + ..\MatrixFunctions\arm_mat_init_q31.c + + + arm_mat_inverse_f32.c + 1 + ..\MatrixFunctions\arm_mat_inverse_f32.c + + + arm_mat_mult_f32.c + 1 + ..\MatrixFunctions\arm_mat_mult_f32.c + + + arm_mat_mult_fast_q15.c + 1 + ..\MatrixFunctions\arm_mat_mult_fast_q15.c + + + arm_mat_mult_fast_q31.c + 1 + ..\MatrixFunctions\arm_mat_mult_fast_q31.c + + + arm_mat_mult_q15.c + 1 + ..\MatrixFunctions\arm_mat_mult_q15.c + + + arm_mat_mult_q31.c + 1 + ..\MatrixFunctions\arm_mat_mult_q31.c + + + arm_mat_scale_f32.c + 1 + ..\MatrixFunctions\arm_mat_scale_f32.c + + + arm_mat_scale_q15.c + 1 + ..\MatrixFunctions\arm_mat_scale_q15.c + + + arm_mat_scale_q31.c + 1 + ..\MatrixFunctions\arm_mat_scale_q31.c + + + arm_mat_sub_f32.c + 1 + ..\MatrixFunctions\arm_mat_sub_f32.c + + + arm_mat_sub_q15.c + 1 + ..\MatrixFunctions\arm_mat_sub_q15.c + + + arm_mat_sub_q31.c + 1 + ..\MatrixFunctions\arm_mat_sub_q31.c + + + arm_mat_trans_f32.c + 1 + ..\MatrixFunctions\arm_mat_trans_f32.c + + + arm_mat_trans_q15.c + 1 + ..\MatrixFunctions\arm_mat_trans_q15.c + + + arm_mat_trans_q31.c + 1 + ..\MatrixFunctions\arm_mat_trans_q31.c + + + + + TransformFunctions + + + arm_cfft_radix4_f32.c + 1 + ..\TransformFunctions\arm_cfft_radix4_f32.c + + + arm_cfft_radix4_init_f32.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_f32.c + + + arm_cfft_radix4_init_q15.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_q15.c + + + arm_cfft_radix4_init_q31.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_q31.c + + + arm_cfft_radix4_q15.c + 1 + ..\TransformFunctions\arm_cfft_radix4_q15.c + + + arm_cfft_radix4_q31.c + 1 + ..\TransformFunctions\arm_cfft_radix4_q31.c + + + arm_dct4_f32.c + 1 + ..\TransformFunctions\arm_dct4_f32.c + + + arm_dct4_init_f32.c + 1 + ..\TransformFunctions\arm_dct4_init_f32.c + + + arm_dct4_init_q15.c + 1 + ..\TransformFunctions\arm_dct4_init_q15.c + + + arm_dct4_init_q31.c + 1 + ..\TransformFunctions\arm_dct4_init_q31.c + + + arm_dct4_q15.c + 1 + ..\TransformFunctions\arm_dct4_q15.c + + + arm_dct4_q31.c + 1 + ..\TransformFunctions\arm_dct4_q31.c + + + arm_rfft_f32.c + 1 + ..\TransformFunctions\arm_rfft_f32.c + + + arm_rfft_init_f32.c + 1 + ..\TransformFunctions\arm_rfft_init_f32.c + + + arm_rfft_init_q15.c + 1 + ..\TransformFunctions\arm_rfft_init_q15.c + + + arm_rfft_init_q31.c + 1 + ..\TransformFunctions\arm_rfft_init_q31.c + + + arm_rfft_q15.c + 1 + ..\TransformFunctions\arm_rfft_q15.c + + + arm_rfft_q31.c + 1 + ..\TransformFunctions\arm_rfft_q31.c + + + + + ControllerFunctions + + + arm_pid_init_f32.c + 1 + ..\ControllerFunctions\arm_pid_init_f32.c + + + arm_pid_init_q15.c + 1 + ..\ControllerFunctions\arm_pid_init_q15.c + + + arm_pid_init_q31.c + 1 + ..\ControllerFunctions\arm_pid_init_q31.c + + + arm_pid_reset_f32.c + 1 + ..\ControllerFunctions\arm_pid_reset_f32.c + + + arm_pid_reset_q15.c + 1 + ..\ControllerFunctions\arm_pid_reset_q15.c + + + arm_pid_reset_q31.c + 1 + ..\ControllerFunctions\arm_pid_reset_q31.c + + + arm_sin_cos_f32.c + 1 + ..\ControllerFunctions\arm_sin_cos_f32.c + + + arm_sin_cos_q31.c + 1 + ..\ControllerFunctions\arm_sin_cos_q31.c + + + + + StatisticsFunctions + + + arm_max_f32.c + 1 + ..\StatisticsFunctions\arm_max_f32.c + + + arm_max_q7.c + 1 + ..\StatisticsFunctions\arm_max_q7.c + + + arm_max_q15.c + 1 + ..\StatisticsFunctions\arm_max_q15.c + + + arm_max_q31.c + 1 + ..\StatisticsFunctions\arm_max_q31.c + + + arm_mean_f32.c + 1 + ..\StatisticsFunctions\arm_mean_f32.c + + + arm_mean_q7.c + 1 + ..\StatisticsFunctions\arm_mean_q7.c + + + arm_mean_q15.c + 1 + ..\StatisticsFunctions\arm_mean_q15.c + + + arm_mean_q31.c + 1 + ..\StatisticsFunctions\arm_mean_q31.c + + + arm_min_f32.c + 1 + ..\StatisticsFunctions\arm_min_f32.c + + + arm_min_q7.c + 1 + ..\StatisticsFunctions\arm_min_q7.c + + + arm_min_q15.c + 1 + ..\StatisticsFunctions\arm_min_q15.c + + + arm_min_q31.c + 1 + ..\StatisticsFunctions\arm_min_q31.c + + + arm_power_f32.c + 1 + ..\StatisticsFunctions\arm_power_f32.c + + + arm_power_q7.c + 1 + ..\StatisticsFunctions\arm_power_q7.c + + + arm_power_q15.c + 1 + ..\StatisticsFunctions\arm_power_q15.c + + + arm_power_q31.c + 1 + ..\StatisticsFunctions\arm_power_q31.c + + + arm_rms_f32.c + 1 + ..\StatisticsFunctions\arm_rms_f32.c + + + arm_rms_q15.c + 1 + ..\StatisticsFunctions\arm_rms_q15.c + + + arm_rms_q31.c + 1 + ..\StatisticsFunctions\arm_rms_q31.c + + + arm_std_f32.c + 1 + ..\StatisticsFunctions\arm_std_f32.c + + + arm_std_q15.c + 1 + ..\StatisticsFunctions\arm_std_q15.c + + + arm_std_q31.c + 1 + ..\StatisticsFunctions\arm_std_q31.c + + + arm_var_f32.c + 1 + ..\StatisticsFunctions\arm_var_f32.c + + + arm_var_q15.c + 1 + ..\StatisticsFunctions\arm_var_q15.c + + + arm_var_q31.c + 1 + ..\StatisticsFunctions\arm_var_q31.c + + + + + SupportFunctions + + + arm_copy_f32.c + 1 + ..\SupportFunctions\arm_copy_f32.c + + + arm_copy_q7.c + 1 + ..\SupportFunctions\arm_copy_q7.c + + + arm_copy_q15.c + 1 + ..\SupportFunctions\arm_copy_q15.c + + + arm_copy_q31.c + 1 + ..\SupportFunctions\arm_copy_q31.c + + + arm_fill_f32.c + 1 + ..\SupportFunctions\arm_fill_f32.c + + + arm_fill_q7.c + 1 + ..\SupportFunctions\arm_fill_q7.c + + + arm_fill_q15.c + 1 + ..\SupportFunctions\arm_fill_q15.c + + + arm_fill_q31.c + 1 + ..\SupportFunctions\arm_fill_q31.c + + + arm_float_to_q7.c + 1 + ..\SupportFunctions\arm_float_to_q7.c + + + arm_float_to_q15.c + 1 + ..\SupportFunctions\arm_float_to_q15.c + + + arm_float_to_q31.c + 1 + ..\SupportFunctions\arm_float_to_q31.c + + + arm_q7_to_float.c + 1 + ..\SupportFunctions\arm_q7_to_float.c + + + arm_q7_to_q15.c + 1 + ..\SupportFunctions\arm_q7_to_q15.c + + + arm_q7_to_q31.c + 1 + ..\SupportFunctions\arm_q7_to_q31.c + + + arm_q15_to_float.c + 1 + ..\SupportFunctions\arm_q15_to_float.c + + + arm_q15_to_q7.c + 1 + ..\SupportFunctions\arm_q15_to_q7.c + + + arm_q15_to_q31.c + 1 + ..\SupportFunctions\arm_q15_to_q31.c + + + arm_q31_to_float.c + 1 + ..\SupportFunctions\arm_q31_to_float.c + + + arm_q31_to_q7.c + 1 + ..\SupportFunctions\arm_q31_to_q7.c + + + arm_q31_to_q15.c + 1 + ..\SupportFunctions\arm_q31_to_q15.c + + + + + CommonTables + + + arm_common_tables.c + 1 + ..\CommonTables\arm_common_tables.c + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexM3x_math.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexM3x_math.uvopt new file mode 100644 index 000000000..bc07c813e --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexM3x_math.uvopt @@ -0,0 +1,3711 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + DSP_Lib CM3 LE + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\intermediateFiles\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + DSP_Lib CM3 BE + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\intermediateFiles\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + BasicMathFunctions + 0 + 0 + 0 + + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_abs_f32.c + arm_abs_f32.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_abs_q7.c + arm_abs_q7.c + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_abs_q15.c + arm_abs_q15.c + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_abs_q31.c + arm_abs_q31.c + + + 1 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_add_f32.c + arm_add_f32.c + + + 1 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_add_q7.c + arm_add_q7.c + + + 1 + 7 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_add_q15.c + arm_add_q15.c + + + 1 + 8 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_add_q31.c + arm_add_q31.c + + + 1 + 9 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_dot_prod_f32.c + arm_dot_prod_f32.c + + + 1 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_dot_prod_q7.c + arm_dot_prod_q7.c + + + 1 + 11 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_dot_prod_q15.c + arm_dot_prod_q15.c + + + 1 + 12 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_dot_prod_q31.c + arm_dot_prod_q31.c + + + 1 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_mult_f32.c + arm_mult_f32.c + + + 1 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_mult_q7.c + arm_mult_q7.c + + + 1 + 15 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_mult_q15.c + arm_mult_q15.c + + + 1 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_mult_q31.c + arm_mult_q31.c + + + 1 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_negate_f32.c + arm_negate_f32.c + + + 1 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_negate_q7.c + arm_negate_q7.c + + + 1 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_negate_q15.c + arm_negate_q15.c + + + 1 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_negate_q31.c + arm_negate_q31.c + + + 1 + 21 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_offset_f32.c + arm_offset_f32.c + + + 1 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_offset_q7.c + arm_offset_q7.c + + + 1 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_offset_q15.c + arm_offset_q15.c + + + 1 + 24 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_offset_q31.c + arm_offset_q31.c + + + 1 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_scale_f32.c + arm_scale_f32.c + + + 1 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_scale_q7.c + arm_scale_q7.c + + + 1 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_scale_q15.c + arm_scale_q15.c + + + 1 + 28 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_scale_q31.c + arm_scale_q31.c + + + 1 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_shift_q7.c + arm_shift_q7.c + + + 1 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_shift_q15.c + arm_shift_q15.c + + + 1 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_shift_q31.c + arm_shift_q31.c + + + 1 + 32 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_sub_f32.c + arm_sub_f32.c + + + 1 + 33 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_sub_q7.c + arm_sub_q7.c + + + 1 + 34 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_sub_q15.c + arm_sub_q15.c + + + 1 + 35 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_sub_q31.c + arm_sub_q31.c + + + + + FastMathFunctions + 0 + 0 + 0 + + 2 + 36 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_cos_f32.c + arm_cos_f32.c + + + 2 + 37 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_cos_q15.c + arm_cos_q15.c + + + 2 + 38 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_cos_q31.c + arm_cos_q31.c + + + 2 + 39 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_sin_f32.c + arm_sin_f32.c + + + 2 + 40 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_sin_q15.c + arm_sin_q15.c + + + 2 + 41 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_sin_q31.c + arm_sin_q31.c + + + 2 + 42 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_sqrt_q15.c + arm_sqrt_q15.c + + + 2 + 43 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_sqrt_q31.c + arm_sqrt_q31.c + + + + + ComplexMathFunctions + 0 + 0 + 0 + + 3 + 44 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_conj_f32.c + arm_cmplx_conj_f32.c + + + 3 + 45 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_conj_q15.c + arm_cmplx_conj_q15.c + + + 3 + 46 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_conj_q31.c + arm_cmplx_conj_q31.c + + + 3 + 47 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_f32.c + arm_cmplx_dot_prod_f32.c + + + 3 + 48 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q15.c + arm_cmplx_dot_prod_q15.c + + + 3 + 49 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q31.c + arm_cmplx_dot_prod_q31.c + + + 3 + 50 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mag_f32.c + arm_cmplx_mag_f32.c + + + 3 + 51 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mag_q15.c + arm_cmplx_mag_q15.c + + + 3 + 52 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mag_q31.c + arm_cmplx_mag_q31.c + + + 3 + 53 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_f32.c + arm_cmplx_mag_squared_f32.c + + + 3 + 54 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q15.c + arm_cmplx_mag_squared_q15.c + + + 3 + 55 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q31.c + arm_cmplx_mag_squared_q31.c + + + 3 + 56 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_f32.c + arm_cmplx_mult_cmplx_f32.c + + + 3 + 57 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q15.c + arm_cmplx_mult_cmplx_q15.c + + + 3 + 58 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q31.c + arm_cmplx_mult_cmplx_q31.c + + + 3 + 59 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mult_real_f32.c + arm_cmplx_mult_real_f32.c + + + 3 + 60 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q15.c + arm_cmplx_mult_real_q15.c + + + 3 + 61 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q31.c + arm_cmplx_mult_real_q31.c + + + + + FilteringFunctions + 0 + 0 + 0 + + 4 + 62 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_init_q31.c + arm_biquad_cascade_df1_32x64_init_q31.c + + + 4 + 63 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_q31.c + arm_biquad_cascade_df1_32x64_q31.c + + + 4 + 64 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_f32.c + arm_biquad_cascade_df1_f32.c + + + 4 + 65 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q15.c + arm_biquad_cascade_df1_fast_q15.c + + + 4 + 66 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q31.c + arm_biquad_cascade_df1_fast_q31.c + + + 4 + 67 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_f32.c + arm_biquad_cascade_df1_init_f32.c + + + 4 + 68 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q15.c + arm_biquad_cascade_df1_init_q15.c + + + 4 + 69 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q31.c + arm_biquad_cascade_df1_init_q31.c + + + 4 + 70 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_q15.c + arm_biquad_cascade_df1_q15.c + + + 4 + 71 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_q31.c + arm_biquad_cascade_df1_q31.c + + + 4 + 72 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df2T_f32.c + arm_biquad_cascade_df2T_f32.c + + + 4 + 73 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df2T_init_f32.c + arm_biquad_cascade_df2T_init_f32.c + + + 4 + 74 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_f32.c + arm_conv_f32.c + + + 4 + 75 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_fast_q15.c + arm_conv_fast_q15.c + + + 4 + 76 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_fast_q31.c + arm_conv_fast_q31.c + + + 4 + 77 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_partial_f32.c + arm_conv_partial_f32.c + + + 4 + 78 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_partial_fast_q15.c + arm_conv_partial_fast_q15.c + + + 4 + 79 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_partial_fast_q31.c + arm_conv_partial_fast_q31.c + + + 4 + 80 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_partial_q7.c + arm_conv_partial_q7.c + + + 4 + 81 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_partial_q15.c + arm_conv_partial_q15.c + + + 4 + 82 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_partial_q31.c + arm_conv_partial_q31.c + + + 4 + 83 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_q7.c + arm_conv_q7.c + + + 4 + 84 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_q15.c + arm_conv_q15.c + + + 4 + 85 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_q31.c + arm_conv_q31.c + + + 4 + 86 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_correlate_f32.c + arm_correlate_f32.c + + + 4 + 87 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_correlate_fast_q15.c + arm_correlate_fast_q15.c + + + 4 + 88 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_correlate_fast_q31.c + arm_correlate_fast_q31.c + + + 4 + 89 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_correlate_q7.c + arm_correlate_q7.c + + + 4 + 90 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_correlate_q15.c + arm_correlate_q15.c + + + 4 + 91 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_correlate_q31.c + arm_correlate_q31.c + + + 4 + 92 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_f32.c + arm_fir_decimate_f32.c + + + 4 + 93 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_fast_q15.c + arm_fir_decimate_fast_q15.c + + + 4 + 94 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_fast_q31.c + arm_fir_decimate_fast_q31.c + + + 4 + 95 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_init_f32.c + arm_fir_decimate_init_f32.c + + + 4 + 96 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_init_q15.c + arm_fir_decimate_init_q15.c + + + 4 + 97 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_init_q31.c + arm_fir_decimate_init_q31.c + + + 4 + 98 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_q15.c + arm_fir_decimate_q15.c + + + 4 + 99 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_q31.c + arm_fir_decimate_q31.c + + + 4 + 100 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_f32.c + arm_fir_f32.c + + + 4 + 101 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_fast_q15.c + arm_fir_fast_q15.c + + + 4 + 102 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_fast_q31.c + arm_fir_fast_q31.c + + + 4 + 103 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_init_f32.c + arm_fir_init_f32.c + + + 4 + 104 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_init_q7.c + arm_fir_init_q7.c + + + 4 + 105 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_init_q15.c + arm_fir_init_q15.c + + + 4 + 106 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_init_q31.c + arm_fir_init_q31.c + + + 4 + 107 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_interpolate_f32.c + arm_fir_interpolate_f32.c + + + 4 + 108 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_interpolate_init_f32.c + arm_fir_interpolate_init_f32.c + + + 4 + 109 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_interpolate_init_q15.c + arm_fir_interpolate_init_q15.c + + + 4 + 110 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_interpolate_init_q31.c + arm_fir_interpolate_init_q31.c + + + 4 + 111 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_interpolate_q15.c + arm_fir_interpolate_q15.c + + + 4 + 112 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_interpolate_q31.c + arm_fir_interpolate_q31.c + + + 4 + 113 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_lattice_f32.c + arm_fir_lattice_f32.c + + + 4 + 114 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_lattice_init_f32.c + arm_fir_lattice_init_f32.c + + + 4 + 115 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_lattice_init_q15.c + arm_fir_lattice_init_q15.c + + + 4 + 116 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_lattice_init_q31.c + arm_fir_lattice_init_q31.c + + + 4 + 117 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_lattice_q15.c + arm_fir_lattice_q15.c + + + 4 + 118 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_lattice_q31.c + arm_fir_lattice_q31.c + + + 4 + 119 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_q7.c + arm_fir_q7.c + + + 4 + 120 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_q15.c + arm_fir_q15.c + + + 4 + 121 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_q31.c + arm_fir_q31.c + + + 4 + 122 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_f32.c + arm_fir_sparse_f32.c + + + 4 + 123 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_init_f32.c + arm_fir_sparse_init_f32.c + + + 4 + 124 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_init_q7.c + arm_fir_sparse_init_q7.c + + + 4 + 125 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_init_q15.c + arm_fir_sparse_init_q15.c + + + 4 + 126 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_init_q31.c + arm_fir_sparse_init_q31.c + + + 4 + 127 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_q7.c + arm_fir_sparse_q7.c + + + 4 + 128 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_q15.c + arm_fir_sparse_q15.c + + + 4 + 129 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_q31.c + arm_fir_sparse_q31.c + + + 4 + 130 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_iir_lattice_f32.c + arm_iir_lattice_f32.c + + + 4 + 131 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_iir_lattice_init_f32.c + arm_iir_lattice_init_f32.c + + + 4 + 132 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_iir_lattice_init_q15.c + arm_iir_lattice_init_q15.c + + + 4 + 133 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_iir_lattice_init_q31.c + arm_iir_lattice_init_q31.c + + + 4 + 134 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_iir_lattice_q15.c + arm_iir_lattice_q15.c + + + 4 + 135 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_iir_lattice_q31.c + arm_iir_lattice_q31.c + + + 4 + 136 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_f32.c + arm_lms_f32.c + + + 4 + 137 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_init_f32.c + arm_lms_init_f32.c + + + 4 + 138 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_init_q15.c + arm_lms_init_q15.c + + + 4 + 139 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_init_q31.c + arm_lms_init_q31.c + + + 4 + 140 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_norm_f32.c + arm_lms_norm_f32.c + + + 4 + 141 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_norm_init_f32.c + arm_lms_norm_init_f32.c + + + 4 + 142 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_norm_init_q15.c + arm_lms_norm_init_q15.c + + + 4 + 143 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_norm_init_q31.c + arm_lms_norm_init_q31.c + + + 4 + 144 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_norm_q15.c + arm_lms_norm_q15.c + + + 4 + 145 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_norm_q31.c + arm_lms_norm_q31.c + + + 4 + 146 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_q15.c + arm_lms_q15.c + + + 4 + 147 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_q31.c + arm_lms_q31.c + + + + + MatrixFunctions + 0 + 0 + 0 + + 5 + 148 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_add_f32.c + arm_mat_add_f32.c + + + 5 + 149 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_add_q15.c + arm_mat_add_q15.c + + + 5 + 150 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_add_q31.c + arm_mat_add_q31.c + + + 5 + 151 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_init_f32.c + arm_mat_init_f32.c + + + 5 + 152 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_init_q15.c + arm_mat_init_q15.c + + + 5 + 153 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_init_q31.c + arm_mat_init_q31.c + + + 5 + 154 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_inverse_f32.c + arm_mat_inverse_f32.c + + + 5 + 155 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_mult_f32.c + arm_mat_mult_f32.c + + + 5 + 156 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_mult_fast_q15.c + arm_mat_mult_fast_q15.c + + + 5 + 157 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_mult_fast_q31.c + arm_mat_mult_fast_q31.c + + + 5 + 158 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_mult_q15.c + arm_mat_mult_q15.c + + + 5 + 159 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_mult_q31.c + arm_mat_mult_q31.c + + + 5 + 160 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_scale_f32.c + arm_mat_scale_f32.c + + + 5 + 161 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_scale_q15.c + arm_mat_scale_q15.c + + + 5 + 162 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_scale_q31.c + arm_mat_scale_q31.c + + + 5 + 163 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_sub_f32.c + arm_mat_sub_f32.c + + + 5 + 164 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_sub_q15.c + arm_mat_sub_q15.c + + + 5 + 165 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_sub_q31.c + arm_mat_sub_q31.c + + + 5 + 166 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_trans_f32.c + arm_mat_trans_f32.c + + + 5 + 167 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_trans_q15.c + arm_mat_trans_q15.c + + + 5 + 168 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_trans_q31.c + arm_mat_trans_q31.c + + + + + TransformFunctions + 0 + 0 + 0 + + 6 + 169 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_cfft_radix4_f32.c + arm_cfft_radix4_f32.c + + + 6 + 170 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_cfft_radix4_init_f32.c + arm_cfft_radix4_init_f32.c + + + 6 + 171 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_cfft_radix4_init_q15.c + arm_cfft_radix4_init_q15.c + + + 6 + 172 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_cfft_radix4_init_q31.c + arm_cfft_radix4_init_q31.c + + + 6 + 173 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_cfft_radix4_q15.c + arm_cfft_radix4_q15.c + + + 6 + 174 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_cfft_radix4_q31.c + arm_cfft_radix4_q31.c + + + 6 + 175 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_dct4_f32.c + arm_dct4_f32.c + + + 6 + 176 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_dct4_init_f32.c + arm_dct4_init_f32.c + + + 6 + 177 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_dct4_init_q15.c + arm_dct4_init_q15.c + + + 6 + 178 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_dct4_init_q31.c + arm_dct4_init_q31.c + + + 6 + 179 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_dct4_q15.c + arm_dct4_q15.c + + + 6 + 180 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_dct4_q31.c + arm_dct4_q31.c + + + 6 + 181 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_rfft_f32.c + arm_rfft_f32.c + + + 6 + 182 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_rfft_init_f32.c + arm_rfft_init_f32.c + + + 6 + 183 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_rfft_init_q15.c + arm_rfft_init_q15.c + + + 6 + 184 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_rfft_init_q31.c + arm_rfft_init_q31.c + + + 6 + 185 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_rfft_q15.c + arm_rfft_q15.c + + + 6 + 186 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_rfft_q31.c + arm_rfft_q31.c + + + + + ControllerFunctions + 0 + 0 + 0 + + 7 + 187 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_pid_init_f32.c + arm_pid_init_f32.c + + + 7 + 188 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_pid_init_q15.c + arm_pid_init_q15.c + + + 7 + 189 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_pid_init_q31.c + arm_pid_init_q31.c + + + 7 + 190 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_pid_reset_f32.c + arm_pid_reset_f32.c + + + 7 + 191 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_pid_reset_q15.c + arm_pid_reset_q15.c + + + 7 + 192 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_pid_reset_q31.c + arm_pid_reset_q31.c + + + 7 + 193 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_sin_cos_f32.c + arm_sin_cos_f32.c + + + 7 + 194 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_sin_cos_q31.c + arm_sin_cos_q31.c + + + + + StatisticsFunctions + 0 + 0 + 0 + + 8 + 195 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_max_f32.c + arm_max_f32.c + + + 8 + 196 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_max_q7.c + arm_max_q7.c + + + 8 + 197 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_max_q15.c + arm_max_q15.c + + + 8 + 198 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_max_q31.c + arm_max_q31.c + + + 8 + 199 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_mean_f32.c + arm_mean_f32.c + + + 8 + 200 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_mean_q7.c + arm_mean_q7.c + + + 8 + 201 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_mean_q15.c + arm_mean_q15.c + + + 8 + 202 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_mean_q31.c + arm_mean_q31.c + + + 8 + 203 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_min_f32.c + arm_min_f32.c + + + 8 + 204 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_min_q7.c + arm_min_q7.c + + + 8 + 205 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_min_q15.c + arm_min_q15.c + + + 8 + 206 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_min_q31.c + arm_min_q31.c + + + 8 + 207 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_power_f32.c + arm_power_f32.c + + + 8 + 208 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_power_q7.c + arm_power_q7.c + + + 8 + 209 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_power_q15.c + arm_power_q15.c + + + 8 + 210 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_power_q31.c + arm_power_q31.c + + + 8 + 211 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_rms_f32.c + arm_rms_f32.c + + + 8 + 212 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_rms_q15.c + arm_rms_q15.c + + + 8 + 213 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_rms_q31.c + arm_rms_q31.c + + + 8 + 214 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_std_f32.c + arm_std_f32.c + + + 8 + 215 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_std_q15.c + arm_std_q15.c + + + 8 + 216 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_std_q31.c + arm_std_q31.c + + + 8 + 217 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_var_f32.c + arm_var_f32.c + + + 8 + 218 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_var_q15.c + arm_var_q15.c + + + 8 + 219 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_var_q31.c + arm_var_q31.c + + + + + SupportFunctions + 0 + 0 + 0 + + 9 + 220 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_copy_f32.c + arm_copy_f32.c + + + 9 + 221 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_copy_q7.c + arm_copy_q7.c + + + 9 + 222 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_copy_q15.c + arm_copy_q15.c + + + 9 + 223 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_copy_q31.c + arm_copy_q31.c + + + 9 + 224 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_fill_f32.c + arm_fill_f32.c + + + 9 + 225 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_fill_q7.c + arm_fill_q7.c + + + 9 + 226 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_fill_q15.c + arm_fill_q15.c + + + 9 + 227 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_fill_q31.c + arm_fill_q31.c + + + 9 + 228 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_float_to_q7.c + arm_float_to_q7.c + + + 9 + 229 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_float_to_q15.c + arm_float_to_q15.c + + + 9 + 230 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_float_to_q31.c + arm_float_to_q31.c + + + 9 + 231 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q7_to_float.c + arm_q7_to_float.c + + + 9 + 232 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q7_to_q15.c + arm_q7_to_q15.c + + + 9 + 233 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q7_to_q31.c + arm_q7_to_q31.c + + + 9 + 234 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q15_to_float.c + arm_q15_to_float.c + + + 9 + 235 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q15_to_q7.c + arm_q15_to_q7.c + + + 9 + 236 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q15_to_q31.c + arm_q15_to_q31.c + + + 9 + 237 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q31_to_float.c + arm_q31_to_float.c + + + 9 + 238 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q31_to_q7.c + arm_q31_to_q7.c + + + 9 + 239 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q31_to_q15.c + arm_q31_to_q15.c + + + + + CommonTables + 0 + 0 + 0 + + 10 + 240 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\CommonTables\arm_common_tables.c + arm_common_tables.c + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexM3x_math.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexM3x_math.uvproj new file mode 100644 index 000000000..fcbeb096e --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexM3x_math.uvproj @@ -0,0 +1,3269 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + DSP_Lib CM3 LE + 0x4 + ARM-ADS + + + Cortex-M3 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M3") ESEL ELITTLE + + + + 4349 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\intermediateFiles\ + arm_cortexM3l_math + 0 + 1 + 0 + 1 + 1 + .\intermediateFiles\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" "..\..\..\Lib\ARM\" + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM3, ARM_MATH_MATRIX_CHECK, ARM_MATH_ROUNDING + + ..\..\..\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + BasicMathFunctions + + + arm_abs_f32.c + 1 + ..\BasicMathFunctions\arm_abs_f32.c + + + arm_abs_q7.c + 1 + ..\BasicMathFunctions\arm_abs_q7.c + + + arm_abs_q15.c + 1 + ..\BasicMathFunctions\arm_abs_q15.c + + + arm_abs_q31.c + 1 + ..\BasicMathFunctions\arm_abs_q31.c + + + arm_add_f32.c + 1 + ..\BasicMathFunctions\arm_add_f32.c + + + arm_add_q7.c + 1 + ..\BasicMathFunctions\arm_add_q7.c + + + arm_add_q15.c + 1 + ..\BasicMathFunctions\arm_add_q15.c + + + arm_add_q31.c + 1 + ..\BasicMathFunctions\arm_add_q31.c + + + arm_dot_prod_f32.c + 1 + ..\BasicMathFunctions\arm_dot_prod_f32.c + + + arm_dot_prod_q7.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q7.c + + + arm_dot_prod_q15.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q15.c + + + arm_dot_prod_q31.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q31.c + + + arm_mult_f32.c + 1 + ..\BasicMathFunctions\arm_mult_f32.c + + + arm_mult_q7.c + 1 + ..\BasicMathFunctions\arm_mult_q7.c + + + arm_mult_q15.c + 1 + ..\BasicMathFunctions\arm_mult_q15.c + + + arm_mult_q31.c + 1 + ..\BasicMathFunctions\arm_mult_q31.c + + + arm_negate_f32.c + 1 + ..\BasicMathFunctions\arm_negate_f32.c + + + arm_negate_q7.c + 1 + ..\BasicMathFunctions\arm_negate_q7.c + + + arm_negate_q15.c + 1 + ..\BasicMathFunctions\arm_negate_q15.c + + + arm_negate_q31.c + 1 + ..\BasicMathFunctions\arm_negate_q31.c + + + arm_offset_f32.c + 1 + ..\BasicMathFunctions\arm_offset_f32.c + + + arm_offset_q7.c + 1 + ..\BasicMathFunctions\arm_offset_q7.c + + + arm_offset_q15.c + 1 + ..\BasicMathFunctions\arm_offset_q15.c + + + arm_offset_q31.c + 1 + ..\BasicMathFunctions\arm_offset_q31.c + + + arm_scale_f32.c + 1 + ..\BasicMathFunctions\arm_scale_f32.c + + + arm_scale_q7.c + 1 + ..\BasicMathFunctions\arm_scale_q7.c + + + arm_scale_q15.c + 1 + ..\BasicMathFunctions\arm_scale_q15.c + + + arm_scale_q31.c + 1 + ..\BasicMathFunctions\arm_scale_q31.c + + + arm_shift_q7.c + 1 + ..\BasicMathFunctions\arm_shift_q7.c + + + arm_shift_q15.c + 1 + ..\BasicMathFunctions\arm_shift_q15.c + + + arm_shift_q31.c + 1 + ..\BasicMathFunctions\arm_shift_q31.c + + + arm_sub_f32.c + 1 + ..\BasicMathFunctions\arm_sub_f32.c + + + arm_sub_q7.c + 1 + ..\BasicMathFunctions\arm_sub_q7.c + + + arm_sub_q15.c + 1 + ..\BasicMathFunctions\arm_sub_q15.c + + + arm_sub_q31.c + 1 + ..\BasicMathFunctions\arm_sub_q31.c + + + + + FastMathFunctions + + + arm_cos_f32.c + 1 + ..\FastMathFunctions\arm_cos_f32.c + + + arm_cos_q15.c + 1 + ..\FastMathFunctions\arm_cos_q15.c + + + arm_cos_q31.c + 1 + ..\FastMathFunctions\arm_cos_q31.c + + + arm_sin_f32.c + 1 + ..\FastMathFunctions\arm_sin_f32.c + + + arm_sin_q15.c + 1 + ..\FastMathFunctions\arm_sin_q15.c + + + arm_sin_q31.c + 1 + ..\FastMathFunctions\arm_sin_q31.c + + + arm_sqrt_q15.c + 1 + ..\FastMathFunctions\arm_sqrt_q15.c + + + arm_sqrt_q31.c + 1 + ..\FastMathFunctions\arm_sqrt_q31.c + + + + + ComplexMathFunctions + + + arm_cmplx_conj_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_f32.c + + + arm_cmplx_conj_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_q15.c + + + arm_cmplx_conj_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_q31.c + + + arm_cmplx_dot_prod_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_f32.c + + + arm_cmplx_dot_prod_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q15.c + + + arm_cmplx_dot_prod_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q31.c + + + arm_cmplx_mag_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_f32.c + + + arm_cmplx_mag_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_q15.c + + + arm_cmplx_mag_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_q31.c + + + arm_cmplx_mag_squared_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_f32.c + + + arm_cmplx_mag_squared_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q15.c + + + arm_cmplx_mag_squared_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q31.c + + + arm_cmplx_mult_cmplx_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_f32.c + + + arm_cmplx_mult_cmplx_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q15.c + + + arm_cmplx_mult_cmplx_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q31.c + + + arm_cmplx_mult_real_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_f32.c + + + arm_cmplx_mult_real_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q15.c + + + arm_cmplx_mult_real_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q31.c + + + + + FilteringFunctions + + + arm_biquad_cascade_df1_32x64_init_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_init_q31.c + + + arm_biquad_cascade_df1_32x64_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_q31.c + + + arm_biquad_cascade_df1_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_f32.c + + + arm_biquad_cascade_df1_fast_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q15.c + + + arm_biquad_cascade_df1_fast_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q31.c + + + arm_biquad_cascade_df1_init_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_f32.c + + + arm_biquad_cascade_df1_init_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q15.c + + + arm_biquad_cascade_df1_init_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q31.c + + + arm_biquad_cascade_df1_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_q15.c + + + arm_biquad_cascade_df1_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_q31.c + + + arm_biquad_cascade_df2T_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df2T_f32.c + + + arm_biquad_cascade_df2T_init_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df2T_init_f32.c + + + arm_conv_f32.c + 1 + ..\FilteringFunctions\arm_conv_f32.c + + + arm_conv_fast_q15.c + 1 + ..\FilteringFunctions\arm_conv_fast_q15.c + + + arm_conv_fast_q31.c + 1 + ..\FilteringFunctions\arm_conv_fast_q31.c + + + arm_conv_partial_f32.c + 1 + ..\FilteringFunctions\arm_conv_partial_f32.c + + + arm_conv_partial_fast_q15.c + 1 + ..\FilteringFunctions\arm_conv_partial_fast_q15.c + + + arm_conv_partial_fast_q31.c + 1 + ..\FilteringFunctions\arm_conv_partial_fast_q31.c + + + arm_conv_partial_q7.c + 1 + ..\FilteringFunctions\arm_conv_partial_q7.c + + + arm_conv_partial_q15.c + 1 + ..\FilteringFunctions\arm_conv_partial_q15.c + + + arm_conv_partial_q31.c + 1 + ..\FilteringFunctions\arm_conv_partial_q31.c + + + arm_conv_q7.c + 1 + ..\FilteringFunctions\arm_conv_q7.c + + + arm_conv_q15.c + 1 + ..\FilteringFunctions\arm_conv_q15.c + + + arm_conv_q31.c + 1 + ..\FilteringFunctions\arm_conv_q31.c + + + arm_correlate_f32.c + 1 + ..\FilteringFunctions\arm_correlate_f32.c + + + arm_correlate_fast_q15.c + 1 + ..\FilteringFunctions\arm_correlate_fast_q15.c + + + arm_correlate_fast_q31.c + 1 + ..\FilteringFunctions\arm_correlate_fast_q31.c + + + arm_correlate_q7.c + 1 + ..\FilteringFunctions\arm_correlate_q7.c + + + arm_correlate_q15.c + 1 + ..\FilteringFunctions\arm_correlate_q15.c + + + arm_correlate_q31.c + 1 + ..\FilteringFunctions\arm_correlate_q31.c + + + arm_fir_decimate_f32.c + 1 + ..\FilteringFunctions\arm_fir_decimate_f32.c + + + arm_fir_decimate_fast_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_fast_q15.c + + + arm_fir_decimate_fast_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_fast_q31.c + + + arm_fir_decimate_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_f32.c + + + arm_fir_decimate_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_q15.c + + + arm_fir_decimate_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_q31.c + + + arm_fir_decimate_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_q15.c + + + arm_fir_decimate_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_q31.c + + + arm_fir_f32.c + 1 + ..\FilteringFunctions\arm_fir_f32.c + + + arm_fir_fast_q15.c + 1 + ..\FilteringFunctions\arm_fir_fast_q15.c + + + arm_fir_fast_q31.c + 1 + ..\FilteringFunctions\arm_fir_fast_q31.c + + + arm_fir_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_init_f32.c + + + arm_fir_init_q7.c + 1 + ..\FilteringFunctions\arm_fir_init_q7.c + + + arm_fir_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_init_q15.c + + + arm_fir_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_init_q31.c + + + arm_fir_interpolate_f32.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_f32.c + + + arm_fir_interpolate_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_f32.c + + + arm_fir_interpolate_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_q15.c + + + arm_fir_interpolate_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_q31.c + + + arm_fir_interpolate_q15.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_q15.c + + + arm_fir_interpolate_q31.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_q31.c + + + arm_fir_lattice_f32.c + 1 + ..\FilteringFunctions\arm_fir_lattice_f32.c + + + arm_fir_lattice_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_f32.c + + + arm_fir_lattice_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_q15.c + + + arm_fir_lattice_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_q31.c + + + arm_fir_lattice_q15.c + 1 + ..\FilteringFunctions\arm_fir_lattice_q15.c + + + arm_fir_lattice_q31.c + 1 + ..\FilteringFunctions\arm_fir_lattice_q31.c + + + arm_fir_q7.c + 1 + ..\FilteringFunctions\arm_fir_q7.c + + + arm_fir_q15.c + 1 + ..\FilteringFunctions\arm_fir_q15.c + + + arm_fir_q31.c + 1 + ..\FilteringFunctions\arm_fir_q31.c + + + arm_fir_sparse_f32.c + 1 + ..\FilteringFunctions\arm_fir_sparse_f32.c + + + arm_fir_sparse_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_f32.c + + + arm_fir_sparse_init_q7.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q7.c + + + arm_fir_sparse_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q15.c + + + arm_fir_sparse_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q31.c + + + arm_fir_sparse_q7.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q7.c + + + arm_fir_sparse_q15.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q15.c + + + arm_fir_sparse_q31.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q31.c + + + arm_iir_lattice_f32.c + 1 + ..\FilteringFunctions\arm_iir_lattice_f32.c + + + arm_iir_lattice_init_f32.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_f32.c + + + arm_iir_lattice_init_q15.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_q15.c + + + arm_iir_lattice_init_q31.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_q31.c + + + arm_iir_lattice_q15.c + 1 + ..\FilteringFunctions\arm_iir_lattice_q15.c + + + arm_iir_lattice_q31.c + 1 + ..\FilteringFunctions\arm_iir_lattice_q31.c + + + arm_lms_f32.c + 1 + ..\FilteringFunctions\arm_lms_f32.c + + + arm_lms_init_f32.c + 1 + ..\FilteringFunctions\arm_lms_init_f32.c + + + arm_lms_init_q15.c + 1 + ..\FilteringFunctions\arm_lms_init_q15.c + + + arm_lms_init_q31.c + 1 + ..\FilteringFunctions\arm_lms_init_q31.c + + + arm_lms_norm_f32.c + 1 + ..\FilteringFunctions\arm_lms_norm_f32.c + + + arm_lms_norm_init_f32.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_f32.c + + + arm_lms_norm_init_q15.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_q15.c + + + arm_lms_norm_init_q31.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_q31.c + + + arm_lms_norm_q15.c + 1 + ..\FilteringFunctions\arm_lms_norm_q15.c + + + arm_lms_norm_q31.c + 1 + ..\FilteringFunctions\arm_lms_norm_q31.c + + + arm_lms_q15.c + 1 + ..\FilteringFunctions\arm_lms_q15.c + + + arm_lms_q31.c + 1 + ..\FilteringFunctions\arm_lms_q31.c + + + + + MatrixFunctions + + + arm_mat_add_f32.c + 1 + ..\MatrixFunctions\arm_mat_add_f32.c + + + arm_mat_add_q15.c + 1 + ..\MatrixFunctions\arm_mat_add_q15.c + + + arm_mat_add_q31.c + 1 + ..\MatrixFunctions\arm_mat_add_q31.c + + + arm_mat_init_f32.c + 1 + ..\MatrixFunctions\arm_mat_init_f32.c + + + arm_mat_init_q15.c + 1 + ..\MatrixFunctions\arm_mat_init_q15.c + + + arm_mat_init_q31.c + 1 + ..\MatrixFunctions\arm_mat_init_q31.c + + + arm_mat_inverse_f32.c + 1 + ..\MatrixFunctions\arm_mat_inverse_f32.c + + + arm_mat_mult_f32.c + 1 + ..\MatrixFunctions\arm_mat_mult_f32.c + + + arm_mat_mult_fast_q15.c + 1 + ..\MatrixFunctions\arm_mat_mult_fast_q15.c + + + arm_mat_mult_fast_q31.c + 1 + ..\MatrixFunctions\arm_mat_mult_fast_q31.c + + + arm_mat_mult_q15.c + 1 + ..\MatrixFunctions\arm_mat_mult_q15.c + + + arm_mat_mult_q31.c + 1 + ..\MatrixFunctions\arm_mat_mult_q31.c + + + arm_mat_scale_f32.c + 1 + ..\MatrixFunctions\arm_mat_scale_f32.c + + + arm_mat_scale_q15.c + 1 + ..\MatrixFunctions\arm_mat_scale_q15.c + + + arm_mat_scale_q31.c + 1 + ..\MatrixFunctions\arm_mat_scale_q31.c + + + arm_mat_sub_f32.c + 1 + ..\MatrixFunctions\arm_mat_sub_f32.c + + + arm_mat_sub_q15.c + 1 + ..\MatrixFunctions\arm_mat_sub_q15.c + + + arm_mat_sub_q31.c + 1 + ..\MatrixFunctions\arm_mat_sub_q31.c + + + arm_mat_trans_f32.c + 1 + ..\MatrixFunctions\arm_mat_trans_f32.c + + + arm_mat_trans_q15.c + 1 + ..\MatrixFunctions\arm_mat_trans_q15.c + + + arm_mat_trans_q31.c + 1 + ..\MatrixFunctions\arm_mat_trans_q31.c + + + + + TransformFunctions + + + arm_cfft_radix4_f32.c + 1 + ..\TransformFunctions\arm_cfft_radix4_f32.c + + + arm_cfft_radix4_init_f32.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_f32.c + + + arm_cfft_radix4_init_q15.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_q15.c + + + arm_cfft_radix4_init_q31.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_q31.c + + + arm_cfft_radix4_q15.c + 1 + ..\TransformFunctions\arm_cfft_radix4_q15.c + + + arm_cfft_radix4_q31.c + 1 + ..\TransformFunctions\arm_cfft_radix4_q31.c + + + arm_dct4_f32.c + 1 + ..\TransformFunctions\arm_dct4_f32.c + + + arm_dct4_init_f32.c + 1 + ..\TransformFunctions\arm_dct4_init_f32.c + + + arm_dct4_init_q15.c + 1 + ..\TransformFunctions\arm_dct4_init_q15.c + + + arm_dct4_init_q31.c + 1 + ..\TransformFunctions\arm_dct4_init_q31.c + + + arm_dct4_q15.c + 1 + ..\TransformFunctions\arm_dct4_q15.c + + + arm_dct4_q31.c + 1 + ..\TransformFunctions\arm_dct4_q31.c + + + arm_rfft_f32.c + 1 + ..\TransformFunctions\arm_rfft_f32.c + + + arm_rfft_init_f32.c + 1 + ..\TransformFunctions\arm_rfft_init_f32.c + + + arm_rfft_init_q15.c + 1 + ..\TransformFunctions\arm_rfft_init_q15.c + + + arm_rfft_init_q31.c + 1 + ..\TransformFunctions\arm_rfft_init_q31.c + + + arm_rfft_q15.c + 1 + ..\TransformFunctions\arm_rfft_q15.c + + + arm_rfft_q31.c + 1 + ..\TransformFunctions\arm_rfft_q31.c + + + + + ControllerFunctions + + + arm_pid_init_f32.c + 1 + ..\ControllerFunctions\arm_pid_init_f32.c + + + arm_pid_init_q15.c + 1 + ..\ControllerFunctions\arm_pid_init_q15.c + + + arm_pid_init_q31.c + 1 + ..\ControllerFunctions\arm_pid_init_q31.c + + + arm_pid_reset_f32.c + 1 + ..\ControllerFunctions\arm_pid_reset_f32.c + + + arm_pid_reset_q15.c + 1 + ..\ControllerFunctions\arm_pid_reset_q15.c + + + arm_pid_reset_q31.c + 1 + ..\ControllerFunctions\arm_pid_reset_q31.c + + + arm_sin_cos_f32.c + 1 + ..\ControllerFunctions\arm_sin_cos_f32.c + + + arm_sin_cos_q31.c + 1 + ..\ControllerFunctions\arm_sin_cos_q31.c + + + + + StatisticsFunctions + + + arm_max_f32.c + 1 + ..\StatisticsFunctions\arm_max_f32.c + + + arm_max_q7.c + 1 + ..\StatisticsFunctions\arm_max_q7.c + + + arm_max_q15.c + 1 + ..\StatisticsFunctions\arm_max_q15.c + + + arm_max_q31.c + 1 + ..\StatisticsFunctions\arm_max_q31.c + + + arm_mean_f32.c + 1 + ..\StatisticsFunctions\arm_mean_f32.c + + + arm_mean_q7.c + 1 + ..\StatisticsFunctions\arm_mean_q7.c + + + arm_mean_q15.c + 1 + ..\StatisticsFunctions\arm_mean_q15.c + + + arm_mean_q31.c + 1 + ..\StatisticsFunctions\arm_mean_q31.c + + + arm_min_f32.c + 1 + ..\StatisticsFunctions\arm_min_f32.c + + + arm_min_q7.c + 1 + ..\StatisticsFunctions\arm_min_q7.c + + + arm_min_q15.c + 1 + ..\StatisticsFunctions\arm_min_q15.c + + + arm_min_q31.c + 1 + ..\StatisticsFunctions\arm_min_q31.c + + + arm_power_f32.c + 1 + ..\StatisticsFunctions\arm_power_f32.c + + + arm_power_q7.c + 1 + ..\StatisticsFunctions\arm_power_q7.c + + + arm_power_q15.c + 1 + ..\StatisticsFunctions\arm_power_q15.c + + + arm_power_q31.c + 1 + ..\StatisticsFunctions\arm_power_q31.c + + + arm_rms_f32.c + 1 + ..\StatisticsFunctions\arm_rms_f32.c + + + arm_rms_q15.c + 1 + ..\StatisticsFunctions\arm_rms_q15.c + + + arm_rms_q31.c + 1 + ..\StatisticsFunctions\arm_rms_q31.c + + + arm_std_f32.c + 1 + ..\StatisticsFunctions\arm_std_f32.c + + + arm_std_q15.c + 1 + ..\StatisticsFunctions\arm_std_q15.c + + + arm_std_q31.c + 1 + ..\StatisticsFunctions\arm_std_q31.c + + + arm_var_f32.c + 1 + ..\StatisticsFunctions\arm_var_f32.c + + + arm_var_q15.c + 1 + ..\StatisticsFunctions\arm_var_q15.c + + + arm_var_q31.c + 1 + ..\StatisticsFunctions\arm_var_q31.c + + + + + SupportFunctions + + + arm_copy_f32.c + 1 + ..\SupportFunctions\arm_copy_f32.c + + + arm_copy_q7.c + 1 + ..\SupportFunctions\arm_copy_q7.c + + + arm_copy_q15.c + 1 + ..\SupportFunctions\arm_copy_q15.c + + + arm_copy_q31.c + 1 + ..\SupportFunctions\arm_copy_q31.c + + + arm_fill_f32.c + 1 + ..\SupportFunctions\arm_fill_f32.c + + + arm_fill_q7.c + 1 + ..\SupportFunctions\arm_fill_q7.c + + + arm_fill_q15.c + 1 + ..\SupportFunctions\arm_fill_q15.c + + + arm_fill_q31.c + 1 + ..\SupportFunctions\arm_fill_q31.c + + + arm_float_to_q7.c + 1 + ..\SupportFunctions\arm_float_to_q7.c + + + arm_float_to_q15.c + 1 + ..\SupportFunctions\arm_float_to_q15.c + + + arm_float_to_q31.c + 1 + ..\SupportFunctions\arm_float_to_q31.c + + + arm_q7_to_float.c + 1 + ..\SupportFunctions\arm_q7_to_float.c + + + arm_q7_to_q15.c + 1 + ..\SupportFunctions\arm_q7_to_q15.c + + + arm_q7_to_q31.c + 1 + ..\SupportFunctions\arm_q7_to_q31.c + + + arm_q15_to_float.c + 1 + ..\SupportFunctions\arm_q15_to_float.c + + + arm_q15_to_q7.c + 1 + ..\SupportFunctions\arm_q15_to_q7.c + + + arm_q15_to_q31.c + 1 + ..\SupportFunctions\arm_q15_to_q31.c + + + arm_q31_to_float.c + 1 + ..\SupportFunctions\arm_q31_to_float.c + + + arm_q31_to_q7.c + 1 + ..\SupportFunctions\arm_q31_to_q7.c + + + arm_q31_to_q15.c + 1 + ..\SupportFunctions\arm_q31_to_q15.c + + + + + CommonTables + + + arm_common_tables.c + 1 + ..\CommonTables\arm_common_tables.c + + + + + + + DSP_Lib CM3 BE + 0x4 + ARM-ADS + + + Cortex-M3 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M3") ESEL ELITTLE + + + + 4349 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\intermediateFiles\ + arm_cortexM3b_math + 0 + 1 + 0 + 1 + 1 + .\intermediateFiles\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" "..\..\..\Lib\ARM\" + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM3, ARM_MATH_MATRIX_CHECK, ARM_MATH_ROUNDING, ARM_MATH_BIG_ENDIAN + + ..\..\..\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + BasicMathFunctions + + + arm_abs_f32.c + 1 + ..\BasicMathFunctions\arm_abs_f32.c + + + arm_abs_q7.c + 1 + ..\BasicMathFunctions\arm_abs_q7.c + + + arm_abs_q15.c + 1 + ..\BasicMathFunctions\arm_abs_q15.c + + + arm_abs_q31.c + 1 + ..\BasicMathFunctions\arm_abs_q31.c + + + arm_add_f32.c + 1 + ..\BasicMathFunctions\arm_add_f32.c + + + arm_add_q7.c + 1 + ..\BasicMathFunctions\arm_add_q7.c + + + arm_add_q15.c + 1 + ..\BasicMathFunctions\arm_add_q15.c + + + arm_add_q31.c + 1 + ..\BasicMathFunctions\arm_add_q31.c + + + arm_dot_prod_f32.c + 1 + ..\BasicMathFunctions\arm_dot_prod_f32.c + + + arm_dot_prod_q7.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q7.c + + + arm_dot_prod_q15.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q15.c + + + arm_dot_prod_q31.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q31.c + + + arm_mult_f32.c + 1 + ..\BasicMathFunctions\arm_mult_f32.c + + + arm_mult_q7.c + 1 + ..\BasicMathFunctions\arm_mult_q7.c + + + arm_mult_q15.c + 1 + ..\BasicMathFunctions\arm_mult_q15.c + + + arm_mult_q31.c + 1 + ..\BasicMathFunctions\arm_mult_q31.c + + + arm_negate_f32.c + 1 + ..\BasicMathFunctions\arm_negate_f32.c + + + arm_negate_q7.c + 1 + ..\BasicMathFunctions\arm_negate_q7.c + + + arm_negate_q15.c + 1 + ..\BasicMathFunctions\arm_negate_q15.c + + + arm_negate_q31.c + 1 + ..\BasicMathFunctions\arm_negate_q31.c + + + arm_offset_f32.c + 1 + ..\BasicMathFunctions\arm_offset_f32.c + + + arm_offset_q7.c + 1 + ..\BasicMathFunctions\arm_offset_q7.c + + + arm_offset_q15.c + 1 + ..\BasicMathFunctions\arm_offset_q15.c + + + arm_offset_q31.c + 1 + ..\BasicMathFunctions\arm_offset_q31.c + + + arm_scale_f32.c + 1 + ..\BasicMathFunctions\arm_scale_f32.c + + + arm_scale_q7.c + 1 + ..\BasicMathFunctions\arm_scale_q7.c + + + arm_scale_q15.c + 1 + ..\BasicMathFunctions\arm_scale_q15.c + + + arm_scale_q31.c + 1 + ..\BasicMathFunctions\arm_scale_q31.c + + + arm_shift_q7.c + 1 + ..\BasicMathFunctions\arm_shift_q7.c + + + arm_shift_q15.c + 1 + ..\BasicMathFunctions\arm_shift_q15.c + + + arm_shift_q31.c + 1 + ..\BasicMathFunctions\arm_shift_q31.c + + + arm_sub_f32.c + 1 + ..\BasicMathFunctions\arm_sub_f32.c + + + arm_sub_q7.c + 1 + ..\BasicMathFunctions\arm_sub_q7.c + + + arm_sub_q15.c + 1 + ..\BasicMathFunctions\arm_sub_q15.c + + + arm_sub_q31.c + 1 + ..\BasicMathFunctions\arm_sub_q31.c + + + + + FastMathFunctions + + + arm_cos_f32.c + 1 + ..\FastMathFunctions\arm_cos_f32.c + + + arm_cos_q15.c + 1 + ..\FastMathFunctions\arm_cos_q15.c + + + arm_cos_q31.c + 1 + ..\FastMathFunctions\arm_cos_q31.c + + + arm_sin_f32.c + 1 + ..\FastMathFunctions\arm_sin_f32.c + + + arm_sin_q15.c + 1 + ..\FastMathFunctions\arm_sin_q15.c + + + arm_sin_q31.c + 1 + ..\FastMathFunctions\arm_sin_q31.c + + + arm_sqrt_q15.c + 1 + ..\FastMathFunctions\arm_sqrt_q15.c + + + arm_sqrt_q31.c + 1 + ..\FastMathFunctions\arm_sqrt_q31.c + + + + + ComplexMathFunctions + + + arm_cmplx_conj_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_f32.c + + + arm_cmplx_conj_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_q15.c + + + arm_cmplx_conj_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_q31.c + + + arm_cmplx_dot_prod_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_f32.c + + + arm_cmplx_dot_prod_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q15.c + + + arm_cmplx_dot_prod_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q31.c + + + arm_cmplx_mag_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_f32.c + + + arm_cmplx_mag_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_q15.c + + + arm_cmplx_mag_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_q31.c + + + arm_cmplx_mag_squared_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_f32.c + + + arm_cmplx_mag_squared_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q15.c + + + arm_cmplx_mag_squared_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q31.c + + + arm_cmplx_mult_cmplx_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_f32.c + + + arm_cmplx_mult_cmplx_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q15.c + + + arm_cmplx_mult_cmplx_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q31.c + + + arm_cmplx_mult_real_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_f32.c + + + arm_cmplx_mult_real_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q15.c + + + arm_cmplx_mult_real_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q31.c + + + + + FilteringFunctions + + + arm_biquad_cascade_df1_32x64_init_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_init_q31.c + + + arm_biquad_cascade_df1_32x64_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_q31.c + + + arm_biquad_cascade_df1_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_f32.c + + + arm_biquad_cascade_df1_fast_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q15.c + + + arm_biquad_cascade_df1_fast_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q31.c + + + arm_biquad_cascade_df1_init_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_f32.c + + + arm_biquad_cascade_df1_init_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q15.c + + + arm_biquad_cascade_df1_init_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q31.c + + + arm_biquad_cascade_df1_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_q15.c + + + arm_biquad_cascade_df1_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_q31.c + + + arm_biquad_cascade_df2T_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df2T_f32.c + + + arm_biquad_cascade_df2T_init_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df2T_init_f32.c + + + arm_conv_f32.c + 1 + ..\FilteringFunctions\arm_conv_f32.c + + + arm_conv_fast_q15.c + 1 + ..\FilteringFunctions\arm_conv_fast_q15.c + + + arm_conv_fast_q31.c + 1 + ..\FilteringFunctions\arm_conv_fast_q31.c + + + arm_conv_partial_f32.c + 1 + ..\FilteringFunctions\arm_conv_partial_f32.c + + + arm_conv_partial_fast_q15.c + 1 + ..\FilteringFunctions\arm_conv_partial_fast_q15.c + + + arm_conv_partial_fast_q31.c + 1 + ..\FilteringFunctions\arm_conv_partial_fast_q31.c + + + arm_conv_partial_q7.c + 1 + ..\FilteringFunctions\arm_conv_partial_q7.c + + + arm_conv_partial_q15.c + 1 + ..\FilteringFunctions\arm_conv_partial_q15.c + + + arm_conv_partial_q31.c + 1 + ..\FilteringFunctions\arm_conv_partial_q31.c + + + arm_conv_q7.c + 1 + ..\FilteringFunctions\arm_conv_q7.c + + + arm_conv_q15.c + 1 + ..\FilteringFunctions\arm_conv_q15.c + + + arm_conv_q31.c + 1 + ..\FilteringFunctions\arm_conv_q31.c + + + arm_correlate_f32.c + 1 + ..\FilteringFunctions\arm_correlate_f32.c + + + arm_correlate_fast_q15.c + 1 + ..\FilteringFunctions\arm_correlate_fast_q15.c + + + arm_correlate_fast_q31.c + 1 + ..\FilteringFunctions\arm_correlate_fast_q31.c + + + arm_correlate_q7.c + 1 + ..\FilteringFunctions\arm_correlate_q7.c + + + arm_correlate_q15.c + 1 + ..\FilteringFunctions\arm_correlate_q15.c + + + arm_correlate_q31.c + 1 + ..\FilteringFunctions\arm_correlate_q31.c + + + arm_fir_decimate_f32.c + 1 + ..\FilteringFunctions\arm_fir_decimate_f32.c + + + arm_fir_decimate_fast_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_fast_q15.c + + + arm_fir_decimate_fast_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_fast_q31.c + + + arm_fir_decimate_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_f32.c + + + arm_fir_decimate_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_q15.c + + + arm_fir_decimate_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_q31.c + + + arm_fir_decimate_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_q15.c + + + arm_fir_decimate_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_q31.c + + + arm_fir_f32.c + 1 + ..\FilteringFunctions\arm_fir_f32.c + + + arm_fir_fast_q15.c + 1 + ..\FilteringFunctions\arm_fir_fast_q15.c + + + arm_fir_fast_q31.c + 1 + ..\FilteringFunctions\arm_fir_fast_q31.c + + + arm_fir_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_init_f32.c + + + arm_fir_init_q7.c + 1 + ..\FilteringFunctions\arm_fir_init_q7.c + + + arm_fir_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_init_q15.c + + + arm_fir_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_init_q31.c + + + arm_fir_interpolate_f32.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_f32.c + + + arm_fir_interpolate_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_f32.c + + + arm_fir_interpolate_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_q15.c + + + arm_fir_interpolate_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_q31.c + + + arm_fir_interpolate_q15.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_q15.c + + + arm_fir_interpolate_q31.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_q31.c + + + arm_fir_lattice_f32.c + 1 + ..\FilteringFunctions\arm_fir_lattice_f32.c + + + arm_fir_lattice_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_f32.c + + + arm_fir_lattice_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_q15.c + + + arm_fir_lattice_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_q31.c + + + arm_fir_lattice_q15.c + 1 + ..\FilteringFunctions\arm_fir_lattice_q15.c + + + arm_fir_lattice_q31.c + 1 + ..\FilteringFunctions\arm_fir_lattice_q31.c + + + arm_fir_q7.c + 1 + ..\FilteringFunctions\arm_fir_q7.c + + + arm_fir_q15.c + 1 + ..\FilteringFunctions\arm_fir_q15.c + + + arm_fir_q31.c + 1 + ..\FilteringFunctions\arm_fir_q31.c + + + arm_fir_sparse_f32.c + 1 + ..\FilteringFunctions\arm_fir_sparse_f32.c + + + arm_fir_sparse_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_f32.c + + + arm_fir_sparse_init_q7.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q7.c + + + arm_fir_sparse_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q15.c + + + arm_fir_sparse_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q31.c + + + arm_fir_sparse_q7.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q7.c + + + arm_fir_sparse_q15.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q15.c + + + arm_fir_sparse_q31.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q31.c + + + arm_iir_lattice_f32.c + 1 + ..\FilteringFunctions\arm_iir_lattice_f32.c + + + arm_iir_lattice_init_f32.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_f32.c + + + arm_iir_lattice_init_q15.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_q15.c + + + arm_iir_lattice_init_q31.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_q31.c + + + arm_iir_lattice_q15.c + 1 + ..\FilteringFunctions\arm_iir_lattice_q15.c + + + arm_iir_lattice_q31.c + 1 + ..\FilteringFunctions\arm_iir_lattice_q31.c + + + arm_lms_f32.c + 1 + ..\FilteringFunctions\arm_lms_f32.c + + + arm_lms_init_f32.c + 1 + ..\FilteringFunctions\arm_lms_init_f32.c + + + arm_lms_init_q15.c + 1 + ..\FilteringFunctions\arm_lms_init_q15.c + + + arm_lms_init_q31.c + 1 + ..\FilteringFunctions\arm_lms_init_q31.c + + + arm_lms_norm_f32.c + 1 + ..\FilteringFunctions\arm_lms_norm_f32.c + + + arm_lms_norm_init_f32.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_f32.c + + + arm_lms_norm_init_q15.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_q15.c + + + arm_lms_norm_init_q31.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_q31.c + + + arm_lms_norm_q15.c + 1 + ..\FilteringFunctions\arm_lms_norm_q15.c + + + arm_lms_norm_q31.c + 1 + ..\FilteringFunctions\arm_lms_norm_q31.c + + + arm_lms_q15.c + 1 + ..\FilteringFunctions\arm_lms_q15.c + + + arm_lms_q31.c + 1 + ..\FilteringFunctions\arm_lms_q31.c + + + + + MatrixFunctions + + + arm_mat_add_f32.c + 1 + ..\MatrixFunctions\arm_mat_add_f32.c + + + arm_mat_add_q15.c + 1 + ..\MatrixFunctions\arm_mat_add_q15.c + + + arm_mat_add_q31.c + 1 + ..\MatrixFunctions\arm_mat_add_q31.c + + + arm_mat_init_f32.c + 1 + ..\MatrixFunctions\arm_mat_init_f32.c + + + arm_mat_init_q15.c + 1 + ..\MatrixFunctions\arm_mat_init_q15.c + + + arm_mat_init_q31.c + 1 + ..\MatrixFunctions\arm_mat_init_q31.c + + + arm_mat_inverse_f32.c + 1 + ..\MatrixFunctions\arm_mat_inverse_f32.c + + + arm_mat_mult_f32.c + 1 + ..\MatrixFunctions\arm_mat_mult_f32.c + + + arm_mat_mult_fast_q15.c + 1 + ..\MatrixFunctions\arm_mat_mult_fast_q15.c + + + arm_mat_mult_fast_q31.c + 1 + ..\MatrixFunctions\arm_mat_mult_fast_q31.c + + + arm_mat_mult_q15.c + 1 + ..\MatrixFunctions\arm_mat_mult_q15.c + + + arm_mat_mult_q31.c + 1 + ..\MatrixFunctions\arm_mat_mult_q31.c + + + arm_mat_scale_f32.c + 1 + ..\MatrixFunctions\arm_mat_scale_f32.c + + + arm_mat_scale_q15.c + 1 + ..\MatrixFunctions\arm_mat_scale_q15.c + + + arm_mat_scale_q31.c + 1 + ..\MatrixFunctions\arm_mat_scale_q31.c + + + arm_mat_sub_f32.c + 1 + ..\MatrixFunctions\arm_mat_sub_f32.c + + + arm_mat_sub_q15.c + 1 + ..\MatrixFunctions\arm_mat_sub_q15.c + + + arm_mat_sub_q31.c + 1 + ..\MatrixFunctions\arm_mat_sub_q31.c + + + arm_mat_trans_f32.c + 1 + ..\MatrixFunctions\arm_mat_trans_f32.c + + + arm_mat_trans_q15.c + 1 + ..\MatrixFunctions\arm_mat_trans_q15.c + + + arm_mat_trans_q31.c + 1 + ..\MatrixFunctions\arm_mat_trans_q31.c + + + + + TransformFunctions + + + arm_cfft_radix4_f32.c + 1 + ..\TransformFunctions\arm_cfft_radix4_f32.c + + + arm_cfft_radix4_init_f32.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_f32.c + + + arm_cfft_radix4_init_q15.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_q15.c + + + arm_cfft_radix4_init_q31.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_q31.c + + + arm_cfft_radix4_q15.c + 1 + ..\TransformFunctions\arm_cfft_radix4_q15.c + + + arm_cfft_radix4_q31.c + 1 + ..\TransformFunctions\arm_cfft_radix4_q31.c + + + arm_dct4_f32.c + 1 + ..\TransformFunctions\arm_dct4_f32.c + + + arm_dct4_init_f32.c + 1 + ..\TransformFunctions\arm_dct4_init_f32.c + + + arm_dct4_init_q15.c + 1 + ..\TransformFunctions\arm_dct4_init_q15.c + + + arm_dct4_init_q31.c + 1 + ..\TransformFunctions\arm_dct4_init_q31.c + + + arm_dct4_q15.c + 1 + ..\TransformFunctions\arm_dct4_q15.c + + + arm_dct4_q31.c + 1 + ..\TransformFunctions\arm_dct4_q31.c + + + arm_rfft_f32.c + 1 + ..\TransformFunctions\arm_rfft_f32.c + + + arm_rfft_init_f32.c + 1 + ..\TransformFunctions\arm_rfft_init_f32.c + + + arm_rfft_init_q15.c + 1 + ..\TransformFunctions\arm_rfft_init_q15.c + + + arm_rfft_init_q31.c + 1 + ..\TransformFunctions\arm_rfft_init_q31.c + + + arm_rfft_q15.c + 1 + ..\TransformFunctions\arm_rfft_q15.c + + + arm_rfft_q31.c + 1 + ..\TransformFunctions\arm_rfft_q31.c + + + + + ControllerFunctions + + + arm_pid_init_f32.c + 1 + ..\ControllerFunctions\arm_pid_init_f32.c + + + arm_pid_init_q15.c + 1 + ..\ControllerFunctions\arm_pid_init_q15.c + + + arm_pid_init_q31.c + 1 + ..\ControllerFunctions\arm_pid_init_q31.c + + + arm_pid_reset_f32.c + 1 + ..\ControllerFunctions\arm_pid_reset_f32.c + + + arm_pid_reset_q15.c + 1 + ..\ControllerFunctions\arm_pid_reset_q15.c + + + arm_pid_reset_q31.c + 1 + ..\ControllerFunctions\arm_pid_reset_q31.c + + + arm_sin_cos_f32.c + 1 + ..\ControllerFunctions\arm_sin_cos_f32.c + + + arm_sin_cos_q31.c + 1 + ..\ControllerFunctions\arm_sin_cos_q31.c + + + + + StatisticsFunctions + + + arm_max_f32.c + 1 + ..\StatisticsFunctions\arm_max_f32.c + + + arm_max_q7.c + 1 + ..\StatisticsFunctions\arm_max_q7.c + + + arm_max_q15.c + 1 + ..\StatisticsFunctions\arm_max_q15.c + + + arm_max_q31.c + 1 + ..\StatisticsFunctions\arm_max_q31.c + + + arm_mean_f32.c + 1 + ..\StatisticsFunctions\arm_mean_f32.c + + + arm_mean_q7.c + 1 + ..\StatisticsFunctions\arm_mean_q7.c + + + arm_mean_q15.c + 1 + ..\StatisticsFunctions\arm_mean_q15.c + + + arm_mean_q31.c + 1 + ..\StatisticsFunctions\arm_mean_q31.c + + + arm_min_f32.c + 1 + ..\StatisticsFunctions\arm_min_f32.c + + + arm_min_q7.c + 1 + ..\StatisticsFunctions\arm_min_q7.c + + + arm_min_q15.c + 1 + ..\StatisticsFunctions\arm_min_q15.c + + + arm_min_q31.c + 1 + ..\StatisticsFunctions\arm_min_q31.c + + + arm_power_f32.c + 1 + ..\StatisticsFunctions\arm_power_f32.c + + + arm_power_q7.c + 1 + ..\StatisticsFunctions\arm_power_q7.c + + + arm_power_q15.c + 1 + ..\StatisticsFunctions\arm_power_q15.c + + + arm_power_q31.c + 1 + ..\StatisticsFunctions\arm_power_q31.c + + + arm_rms_f32.c + 1 + ..\StatisticsFunctions\arm_rms_f32.c + + + arm_rms_q15.c + 1 + ..\StatisticsFunctions\arm_rms_q15.c + + + arm_rms_q31.c + 1 + ..\StatisticsFunctions\arm_rms_q31.c + + + arm_std_f32.c + 1 + ..\StatisticsFunctions\arm_std_f32.c + + + arm_std_q15.c + 1 + ..\StatisticsFunctions\arm_std_q15.c + + + arm_std_q31.c + 1 + ..\StatisticsFunctions\arm_std_q31.c + + + arm_var_f32.c + 1 + ..\StatisticsFunctions\arm_var_f32.c + + + arm_var_q15.c + 1 + ..\StatisticsFunctions\arm_var_q15.c + + + arm_var_q31.c + 1 + ..\StatisticsFunctions\arm_var_q31.c + + + + + SupportFunctions + + + arm_copy_f32.c + 1 + ..\SupportFunctions\arm_copy_f32.c + + + arm_copy_q7.c + 1 + ..\SupportFunctions\arm_copy_q7.c + + + arm_copy_q15.c + 1 + ..\SupportFunctions\arm_copy_q15.c + + + arm_copy_q31.c + 1 + ..\SupportFunctions\arm_copy_q31.c + + + arm_fill_f32.c + 1 + ..\SupportFunctions\arm_fill_f32.c + + + arm_fill_q7.c + 1 + ..\SupportFunctions\arm_fill_q7.c + + + arm_fill_q15.c + 1 + ..\SupportFunctions\arm_fill_q15.c + + + arm_fill_q31.c + 1 + ..\SupportFunctions\arm_fill_q31.c + + + arm_float_to_q7.c + 1 + ..\SupportFunctions\arm_float_to_q7.c + + + arm_float_to_q15.c + 1 + ..\SupportFunctions\arm_float_to_q15.c + + + arm_float_to_q31.c + 1 + ..\SupportFunctions\arm_float_to_q31.c + + + arm_q7_to_float.c + 1 + ..\SupportFunctions\arm_q7_to_float.c + + + arm_q7_to_q15.c + 1 + ..\SupportFunctions\arm_q7_to_q15.c + + + arm_q7_to_q31.c + 1 + ..\SupportFunctions\arm_q7_to_q31.c + + + arm_q15_to_float.c + 1 + ..\SupportFunctions\arm_q15_to_float.c + + + arm_q15_to_q7.c + 1 + ..\SupportFunctions\arm_q15_to_q7.c + + + arm_q15_to_q31.c + 1 + ..\SupportFunctions\arm_q15_to_q31.c + + + arm_q31_to_float.c + 1 + ..\SupportFunctions\arm_q31_to_float.c + + + arm_q31_to_q7.c + 1 + ..\SupportFunctions\arm_q31_to_q7.c + + + arm_q31_to_q15.c + 1 + ..\SupportFunctions\arm_q31_to_q15.c + + + + + CommonTables + + + arm_common_tables.c + 1 + ..\CommonTables\arm_common_tables.c + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexM4x_math.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexM4x_math.uvopt new file mode 100644 index 000000000..5498da94d --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexM4x_math.uvopt @@ -0,0 +1,3969 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + DSP_Lib CM4 LE + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\intermediateFiles\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + DSP_Lib CM4 LE FPU + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\intermediateFiles\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + DSP_Lib CM4 BE + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\intermediateFiles\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + DSP_Lib CM4 BE FPU + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\intermediateFiles\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + BasicMathFunctions + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 15 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_abs_f32.c + arm_abs_f32.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_abs_q7.c + arm_abs_q7.c + + + 1 + 3 + 1 + 0 + 0 + 13 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_abs_q15.c + arm_abs_q15.c + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_abs_q31.c + arm_abs_q31.c + + + 1 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_add_f32.c + arm_add_f32.c + + + 1 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_add_q7.c + arm_add_q7.c + + + 1 + 7 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_add_q15.c + arm_add_q15.c + + + 1 + 8 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_add_q31.c + arm_add_q31.c + + + 1 + 9 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_dot_prod_f32.c + arm_dot_prod_f32.c + + + 1 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_dot_prod_q7.c + arm_dot_prod_q7.c + + + 1 + 11 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_dot_prod_q15.c + arm_dot_prod_q15.c + + + 1 + 12 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_dot_prod_q31.c + arm_dot_prod_q31.c + + + 1 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_mult_f32.c + arm_mult_f32.c + + + 1 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_mult_q7.c + arm_mult_q7.c + + + 1 + 15 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_mult_q15.c + arm_mult_q15.c + + + 1 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_mult_q31.c + arm_mult_q31.c + + + 1 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_negate_f32.c + arm_negate_f32.c + + + 1 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_negate_q7.c + arm_negate_q7.c + + + 1 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_negate_q15.c + arm_negate_q15.c + + + 1 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_negate_q31.c + arm_negate_q31.c + + + 1 + 21 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_offset_f32.c + arm_offset_f32.c + + + 1 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_offset_q7.c + arm_offset_q7.c + + + 1 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_offset_q15.c + arm_offset_q15.c + + + 1 + 24 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_offset_q31.c + arm_offset_q31.c + + + 1 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_scale_f32.c + arm_scale_f32.c + + + 1 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_scale_q7.c + arm_scale_q7.c + + + 1 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_scale_q15.c + arm_scale_q15.c + + + 1 + 28 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_scale_q31.c + arm_scale_q31.c + + + 1 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_shift_q7.c + arm_shift_q7.c + + + 1 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_shift_q15.c + arm_shift_q15.c + + + 1 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_shift_q31.c + arm_shift_q31.c + + + 1 + 32 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_sub_f32.c + arm_sub_f32.c + + + 1 + 33 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_sub_q7.c + arm_sub_q7.c + + + 1 + 34 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_sub_q15.c + arm_sub_q15.c + + + 1 + 35 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\BasicMathFunctions\arm_sub_q31.c + arm_sub_q31.c + + + + + FastMathFunctions + 0 + 0 + 0 + + 2 + 36 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_cos_f32.c + arm_cos_f32.c + + + 2 + 37 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_cos_q15.c + arm_cos_q15.c + + + 2 + 38 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_cos_q31.c + arm_cos_q31.c + + + 2 + 39 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_sin_f32.c + arm_sin_f32.c + + + 2 + 40 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_sin_q15.c + arm_sin_q15.c + + + 2 + 41 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_sin_q31.c + arm_sin_q31.c + + + 2 + 42 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_sqrt_q15.c + arm_sqrt_q15.c + + + 2 + 43 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FastMathFunctions\arm_sqrt_q31.c + arm_sqrt_q31.c + + + + + ComplexMathFunctions + 0 + 0 + 0 + + 3 + 44 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_conj_f32.c + arm_cmplx_conj_f32.c + + + 3 + 45 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_conj_q15.c + arm_cmplx_conj_q15.c + + + 3 + 46 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_conj_q31.c + arm_cmplx_conj_q31.c + + + 3 + 47 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_f32.c + arm_cmplx_dot_prod_f32.c + + + 3 + 48 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q15.c + arm_cmplx_dot_prod_q15.c + + + 3 + 49 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q31.c + arm_cmplx_dot_prod_q31.c + + + 3 + 50 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mag_f32.c + arm_cmplx_mag_f32.c + + + 3 + 51 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mag_q15.c + arm_cmplx_mag_q15.c + + + 3 + 52 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mag_q31.c + arm_cmplx_mag_q31.c + + + 3 + 53 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_f32.c + arm_cmplx_mag_squared_f32.c + + + 3 + 54 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q15.c + arm_cmplx_mag_squared_q15.c + + + 3 + 55 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q31.c + arm_cmplx_mag_squared_q31.c + + + 3 + 56 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_f32.c + arm_cmplx_mult_cmplx_f32.c + + + 3 + 57 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q15.c + arm_cmplx_mult_cmplx_q15.c + + + 3 + 58 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q31.c + arm_cmplx_mult_cmplx_q31.c + + + 3 + 59 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mult_real_f32.c + arm_cmplx_mult_real_f32.c + + + 3 + 60 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q15.c + arm_cmplx_mult_real_q15.c + + + 3 + 61 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q31.c + arm_cmplx_mult_real_q31.c + + + + + FilteringFunctions + 0 + 0 + 0 + + 4 + 62 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_init_q31.c + arm_biquad_cascade_df1_32x64_init_q31.c + + + 4 + 63 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_q31.c + arm_biquad_cascade_df1_32x64_q31.c + + + 4 + 64 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_f32.c + arm_biquad_cascade_df1_f32.c + + + 4 + 65 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q15.c + arm_biquad_cascade_df1_fast_q15.c + + + 4 + 66 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q31.c + arm_biquad_cascade_df1_fast_q31.c + + + 4 + 67 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_f32.c + arm_biquad_cascade_df1_init_f32.c + + + 4 + 68 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q15.c + arm_biquad_cascade_df1_init_q15.c + + + 4 + 69 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q31.c + arm_biquad_cascade_df1_init_q31.c + + + 4 + 70 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_q15.c + arm_biquad_cascade_df1_q15.c + + + 4 + 71 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df1_q31.c + arm_biquad_cascade_df1_q31.c + + + 4 + 72 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df2T_f32.c + arm_biquad_cascade_df2T_f32.c + + + 4 + 73 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_biquad_cascade_df2T_init_f32.c + arm_biquad_cascade_df2T_init_f32.c + + + 4 + 74 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_f32.c + arm_conv_f32.c + + + 4 + 75 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_fast_q15.c + arm_conv_fast_q15.c + + + 4 + 76 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_fast_q31.c + arm_conv_fast_q31.c + + + 4 + 77 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_partial_f32.c + arm_conv_partial_f32.c + + + 4 + 78 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_partial_fast_q15.c + arm_conv_partial_fast_q15.c + + + 4 + 79 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_partial_fast_q31.c + arm_conv_partial_fast_q31.c + + + 4 + 80 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_partial_q7.c + arm_conv_partial_q7.c + + + 4 + 81 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_partial_q15.c + arm_conv_partial_q15.c + + + 4 + 82 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_partial_q31.c + arm_conv_partial_q31.c + + + 4 + 83 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_q7.c + arm_conv_q7.c + + + 4 + 84 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_q15.c + arm_conv_q15.c + + + 4 + 85 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_conv_q31.c + arm_conv_q31.c + + + 4 + 86 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_correlate_f32.c + arm_correlate_f32.c + + + 4 + 87 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_correlate_fast_q15.c + arm_correlate_fast_q15.c + + + 4 + 88 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_correlate_fast_q31.c + arm_correlate_fast_q31.c + + + 4 + 89 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_correlate_q7.c + arm_correlate_q7.c + + + 4 + 90 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_correlate_q15.c + arm_correlate_q15.c + + + 4 + 91 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_correlate_q31.c + arm_correlate_q31.c + + + 4 + 92 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_f32.c + arm_fir_decimate_f32.c + + + 4 + 93 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_fast_q15.c + arm_fir_decimate_fast_q15.c + + + 4 + 94 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_fast_q31.c + arm_fir_decimate_fast_q31.c + + + 4 + 95 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_init_f32.c + arm_fir_decimate_init_f32.c + + + 4 + 96 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_init_q15.c + arm_fir_decimate_init_q15.c + + + 4 + 97 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_init_q31.c + arm_fir_decimate_init_q31.c + + + 4 + 98 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_q15.c + arm_fir_decimate_q15.c + + + 4 + 99 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_decimate_q31.c + arm_fir_decimate_q31.c + + + 4 + 100 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_f32.c + arm_fir_f32.c + + + 4 + 101 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_fast_q15.c + arm_fir_fast_q15.c + + + 4 + 102 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_fast_q31.c + arm_fir_fast_q31.c + + + 4 + 103 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_init_f32.c + arm_fir_init_f32.c + + + 4 + 104 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_init_q7.c + arm_fir_init_q7.c + + + 4 + 105 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_init_q15.c + arm_fir_init_q15.c + + + 4 + 106 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_init_q31.c + arm_fir_init_q31.c + + + 4 + 107 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_interpolate_f32.c + arm_fir_interpolate_f32.c + + + 4 + 108 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_interpolate_init_f32.c + arm_fir_interpolate_init_f32.c + + + 4 + 109 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_interpolate_init_q15.c + arm_fir_interpolate_init_q15.c + + + 4 + 110 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_interpolate_init_q31.c + arm_fir_interpolate_init_q31.c + + + 4 + 111 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_interpolate_q15.c + arm_fir_interpolate_q15.c + + + 4 + 112 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_interpolate_q31.c + arm_fir_interpolate_q31.c + + + 4 + 113 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_lattice_f32.c + arm_fir_lattice_f32.c + + + 4 + 114 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_lattice_init_f32.c + arm_fir_lattice_init_f32.c + + + 4 + 115 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_lattice_init_q15.c + arm_fir_lattice_init_q15.c + + + 4 + 116 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_lattice_init_q31.c + arm_fir_lattice_init_q31.c + + + 4 + 117 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_lattice_q15.c + arm_fir_lattice_q15.c + + + 4 + 118 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_lattice_q31.c + arm_fir_lattice_q31.c + + + 4 + 119 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_q7.c + arm_fir_q7.c + + + 4 + 120 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_q15.c + arm_fir_q15.c + + + 4 + 121 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_q31.c + arm_fir_q31.c + + + 4 + 122 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_f32.c + arm_fir_sparse_f32.c + + + 4 + 123 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_init_f32.c + arm_fir_sparse_init_f32.c + + + 4 + 124 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_init_q7.c + arm_fir_sparse_init_q7.c + + + 4 + 125 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_init_q15.c + arm_fir_sparse_init_q15.c + + + 4 + 126 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_init_q31.c + arm_fir_sparse_init_q31.c + + + 4 + 127 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_q7.c + arm_fir_sparse_q7.c + + + 4 + 128 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_q15.c + arm_fir_sparse_q15.c + + + 4 + 129 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_fir_sparse_q31.c + arm_fir_sparse_q31.c + + + 4 + 130 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_iir_lattice_f32.c + arm_iir_lattice_f32.c + + + 4 + 131 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_iir_lattice_init_f32.c + arm_iir_lattice_init_f32.c + + + 4 + 132 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_iir_lattice_init_q15.c + arm_iir_lattice_init_q15.c + + + 4 + 133 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_iir_lattice_init_q31.c + arm_iir_lattice_init_q31.c + + + 4 + 134 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_iir_lattice_q15.c + arm_iir_lattice_q15.c + + + 4 + 135 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_iir_lattice_q31.c + arm_iir_lattice_q31.c + + + 4 + 136 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_f32.c + arm_lms_f32.c + + + 4 + 137 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_init_f32.c + arm_lms_init_f32.c + + + 4 + 138 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_init_q15.c + arm_lms_init_q15.c + + + 4 + 139 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_init_q31.c + arm_lms_init_q31.c + + + 4 + 140 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_norm_f32.c + arm_lms_norm_f32.c + + + 4 + 141 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_norm_init_f32.c + arm_lms_norm_init_f32.c + + + 4 + 142 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_norm_init_q15.c + arm_lms_norm_init_q15.c + + + 4 + 143 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_norm_init_q31.c + arm_lms_norm_init_q31.c + + + 4 + 144 + 1 + 0 + 0 + 31 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_norm_q15.c + arm_lms_norm_q15.c + + + 4 + 145 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_norm_q31.c + arm_lms_norm_q31.c + + + 4 + 146 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_q15.c + arm_lms_q15.c + + + 4 + 147 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\FilteringFunctions\arm_lms_q31.c + arm_lms_q31.c + + + + + MatrixFunctions + 0 + 0 + 0 + + 5 + 148 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_add_f32.c + arm_mat_add_f32.c + + + 5 + 149 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_add_q15.c + arm_mat_add_q15.c + + + 5 + 150 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_add_q31.c + arm_mat_add_q31.c + + + 5 + 151 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_init_f32.c + arm_mat_init_f32.c + + + 5 + 152 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_init_q15.c + arm_mat_init_q15.c + + + 5 + 153 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_init_q31.c + arm_mat_init_q31.c + + + 5 + 154 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_inverse_f32.c + arm_mat_inverse_f32.c + + + 5 + 155 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_mult_f32.c + arm_mat_mult_f32.c + + + 5 + 156 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_mult_fast_q15.c + arm_mat_mult_fast_q15.c + + + 5 + 157 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_mult_fast_q31.c + arm_mat_mult_fast_q31.c + + + 5 + 158 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_mult_q15.c + arm_mat_mult_q15.c + + + 5 + 159 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_mult_q31.c + arm_mat_mult_q31.c + + + 5 + 160 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_scale_f32.c + arm_mat_scale_f32.c + + + 5 + 161 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_scale_q15.c + arm_mat_scale_q15.c + + + 5 + 162 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_scale_q31.c + arm_mat_scale_q31.c + + + 5 + 163 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_sub_f32.c + arm_mat_sub_f32.c + + + 5 + 164 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_sub_q15.c + arm_mat_sub_q15.c + + + 5 + 165 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_sub_q31.c + arm_mat_sub_q31.c + + + 5 + 166 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_trans_f32.c + arm_mat_trans_f32.c + + + 5 + 167 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_trans_q15.c + arm_mat_trans_q15.c + + + 5 + 168 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\MatrixFunctions\arm_mat_trans_q31.c + arm_mat_trans_q31.c + + + + + TransformFunctions + 0 + 0 + 0 + + 6 + 169 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_cfft_radix4_f32.c + arm_cfft_radix4_f32.c + + + 6 + 170 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_cfft_radix4_init_f32.c + arm_cfft_radix4_init_f32.c + + + 6 + 171 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_cfft_radix4_init_q15.c + arm_cfft_radix4_init_q15.c + + + 6 + 172 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_cfft_radix4_init_q31.c + arm_cfft_radix4_init_q31.c + + + 6 + 173 + 1 + 0 + 0 + 26 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_cfft_radix4_q15.c + arm_cfft_radix4_q15.c + + + 6 + 174 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_cfft_radix4_q31.c + arm_cfft_radix4_q31.c + + + 6 + 175 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_dct4_f32.c + arm_dct4_f32.c + + + 6 + 176 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_dct4_init_f32.c + arm_dct4_init_f32.c + + + 6 + 177 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_dct4_init_q15.c + arm_dct4_init_q15.c + + + 6 + 178 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_dct4_init_q31.c + arm_dct4_init_q31.c + + + 6 + 179 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_dct4_q15.c + arm_dct4_q15.c + + + 6 + 180 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_dct4_q31.c + arm_dct4_q31.c + + + 6 + 181 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_rfft_f32.c + arm_rfft_f32.c + + + 6 + 182 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_rfft_init_f32.c + arm_rfft_init_f32.c + + + 6 + 183 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_rfft_init_q15.c + arm_rfft_init_q15.c + + + 6 + 184 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_rfft_init_q31.c + arm_rfft_init_q31.c + + + 6 + 185 + 1 + 0 + 0 + 36 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_rfft_q15.c + arm_rfft_q15.c + + + 6 + 186 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\TransformFunctions\arm_rfft_q31.c + arm_rfft_q31.c + + + + + ControllerFunctions + 0 + 0 + 0 + + 7 + 187 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_pid_init_f32.c + arm_pid_init_f32.c + + + 7 + 188 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_pid_init_q15.c + arm_pid_init_q15.c + + + 7 + 189 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_pid_init_q31.c + arm_pid_init_q31.c + + + 7 + 190 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_pid_reset_f32.c + arm_pid_reset_f32.c + + + 7 + 191 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_pid_reset_q15.c + arm_pid_reset_q15.c + + + 7 + 192 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_pid_reset_q31.c + arm_pid_reset_q31.c + + + 7 + 193 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_sin_cos_f32.c + arm_sin_cos_f32.c + + + 7 + 194 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\ControllerFunctions\arm_sin_cos_q31.c + arm_sin_cos_q31.c + + + + + StatisticsFunctions + 0 + 0 + 0 + + 8 + 195 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_max_f32.c + arm_max_f32.c + + + 8 + 196 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_max_q7.c + arm_max_q7.c + + + 8 + 197 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_max_q15.c + arm_max_q15.c + + + 8 + 198 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_max_q31.c + arm_max_q31.c + + + 8 + 199 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_mean_f32.c + arm_mean_f32.c + + + 8 + 200 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_mean_q7.c + arm_mean_q7.c + + + 8 + 201 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_mean_q15.c + arm_mean_q15.c + + + 8 + 202 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_mean_q31.c + arm_mean_q31.c + + + 8 + 203 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_min_f32.c + arm_min_f32.c + + + 8 + 204 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_min_q7.c + arm_min_q7.c + + + 8 + 205 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_min_q15.c + arm_min_q15.c + + + 8 + 206 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_min_q31.c + arm_min_q31.c + + + 8 + 207 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_power_f32.c + arm_power_f32.c + + + 8 + 208 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_power_q7.c + arm_power_q7.c + + + 8 + 209 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_power_q15.c + arm_power_q15.c + + + 8 + 210 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_power_q31.c + arm_power_q31.c + + + 8 + 211 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_rms_f32.c + arm_rms_f32.c + + + 8 + 212 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_rms_q15.c + arm_rms_q15.c + + + 8 + 213 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_rms_q31.c + arm_rms_q31.c + + + 8 + 214 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_std_f32.c + arm_std_f32.c + + + 8 + 215 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_std_q15.c + arm_std_q15.c + + + 8 + 216 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_std_q31.c + arm_std_q31.c + + + 8 + 217 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_var_f32.c + arm_var_f32.c + + + 8 + 218 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_var_q15.c + arm_var_q15.c + + + 8 + 219 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\StatisticsFunctions\arm_var_q31.c + arm_var_q31.c + + + + + SupportFunctions + 0 + 0 + 0 + + 9 + 220 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_copy_f32.c + arm_copy_f32.c + + + 9 + 221 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_copy_q7.c + arm_copy_q7.c + + + 9 + 222 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_copy_q15.c + arm_copy_q15.c + + + 9 + 223 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_copy_q31.c + arm_copy_q31.c + + + 9 + 224 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_fill_f32.c + arm_fill_f32.c + + + 9 + 225 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_fill_q7.c + arm_fill_q7.c + + + 9 + 226 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_fill_q15.c + arm_fill_q15.c + + + 9 + 227 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_fill_q31.c + arm_fill_q31.c + + + 9 + 228 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_float_to_q7.c + arm_float_to_q7.c + + + 9 + 229 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_float_to_q15.c + arm_float_to_q15.c + + + 9 + 230 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_float_to_q31.c + arm_float_to_q31.c + + + 9 + 231 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q7_to_float.c + arm_q7_to_float.c + + + 9 + 232 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q7_to_q15.c + arm_q7_to_q15.c + + + 9 + 233 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q7_to_q31.c + arm_q7_to_q31.c + + + 9 + 234 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q15_to_float.c + arm_q15_to_float.c + + + 9 + 235 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q15_to_q7.c + arm_q15_to_q7.c + + + 9 + 236 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q15_to_q31.c + arm_q15_to_q31.c + + + 9 + 237 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q31_to_float.c + arm_q31_to_float.c + + + 9 + 238 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q31_to_q7.c + arm_q31_to_q7.c + + + 9 + 239 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\SupportFunctions\arm_q31_to_q15.c + arm_q31_to_q15.c + + + + + CommonTables + 0 + 0 + 0 + + 10 + 240 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\CommonTables\arm_common_tables.c + arm_common_tables.c + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexM4x_math.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexM4x_math.uvproj new file mode 100644 index 000000000..8c2c8bb82 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexM4x_math.uvproj @@ -0,0 +1,6527 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + DSP_Lib CM4 LE + 0x4 + ARM-ADS + + + Cortex-M4 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M4") ESEL ELITTLE + + + + 5125 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\intermediateFiles\ + arm_cortexM4l_math + 0 + 1 + 0 + 1 + 1 + .\intermediateFiles\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" "..\..\..\Lib\ARM\" + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM4, ARM_MATH_MATRIX_CHECK, ARM_MATH_ROUNDING + + ..\..\..\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x00000000 + + + + + + + + + + + + BasicMathFunctions + + + arm_abs_f32.c + 1 + ..\BasicMathFunctions\arm_abs_f32.c + + + arm_abs_q7.c + 1 + ..\BasicMathFunctions\arm_abs_q7.c + + + arm_abs_q15.c + 1 + ..\BasicMathFunctions\arm_abs_q15.c + + + arm_abs_q31.c + 1 + ..\BasicMathFunctions\arm_abs_q31.c + + + arm_add_f32.c + 1 + ..\BasicMathFunctions\arm_add_f32.c + + + arm_add_q7.c + 1 + ..\BasicMathFunctions\arm_add_q7.c + + + arm_add_q15.c + 1 + ..\BasicMathFunctions\arm_add_q15.c + + + arm_add_q31.c + 1 + ..\BasicMathFunctions\arm_add_q31.c + + + arm_dot_prod_f32.c + 1 + ..\BasicMathFunctions\arm_dot_prod_f32.c + + + arm_dot_prod_q7.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q7.c + + + arm_dot_prod_q15.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q15.c + + + arm_dot_prod_q31.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q31.c + + + arm_mult_f32.c + 1 + ..\BasicMathFunctions\arm_mult_f32.c + + + arm_mult_q7.c + 1 + ..\BasicMathFunctions\arm_mult_q7.c + + + arm_mult_q15.c + 1 + ..\BasicMathFunctions\arm_mult_q15.c + + + arm_mult_q31.c + 1 + ..\BasicMathFunctions\arm_mult_q31.c + + + arm_negate_f32.c + 1 + ..\BasicMathFunctions\arm_negate_f32.c + + + arm_negate_q7.c + 1 + ..\BasicMathFunctions\arm_negate_q7.c + + + arm_negate_q15.c + 1 + ..\BasicMathFunctions\arm_negate_q15.c + + + arm_negate_q31.c + 1 + ..\BasicMathFunctions\arm_negate_q31.c + + + arm_offset_f32.c + 1 + ..\BasicMathFunctions\arm_offset_f32.c + + + arm_offset_q7.c + 1 + ..\BasicMathFunctions\arm_offset_q7.c + + + arm_offset_q15.c + 1 + ..\BasicMathFunctions\arm_offset_q15.c + + + arm_offset_q31.c + 1 + ..\BasicMathFunctions\arm_offset_q31.c + + + arm_scale_f32.c + 1 + ..\BasicMathFunctions\arm_scale_f32.c + + + arm_scale_q7.c + 1 + ..\BasicMathFunctions\arm_scale_q7.c + + + arm_scale_q15.c + 1 + ..\BasicMathFunctions\arm_scale_q15.c + + + arm_scale_q31.c + 1 + ..\BasicMathFunctions\arm_scale_q31.c + + + arm_shift_q7.c + 1 + ..\BasicMathFunctions\arm_shift_q7.c + + + arm_shift_q15.c + 1 + ..\BasicMathFunctions\arm_shift_q15.c + + + arm_shift_q31.c + 1 + ..\BasicMathFunctions\arm_shift_q31.c + + + arm_sub_f32.c + 1 + ..\BasicMathFunctions\arm_sub_f32.c + + + arm_sub_q7.c + 1 + ..\BasicMathFunctions\arm_sub_q7.c + + + arm_sub_q15.c + 1 + ..\BasicMathFunctions\arm_sub_q15.c + + + arm_sub_q31.c + 1 + ..\BasicMathFunctions\arm_sub_q31.c + + + + + FastMathFunctions + + + arm_cos_f32.c + 1 + ..\FastMathFunctions\arm_cos_f32.c + + + arm_cos_q15.c + 1 + ..\FastMathFunctions\arm_cos_q15.c + + + arm_cos_q31.c + 1 + ..\FastMathFunctions\arm_cos_q31.c + + + arm_sin_f32.c + 1 + ..\FastMathFunctions\arm_sin_f32.c + + + arm_sin_q15.c + 1 + ..\FastMathFunctions\arm_sin_q15.c + + + arm_sin_q31.c + 1 + ..\FastMathFunctions\arm_sin_q31.c + + + arm_sqrt_q15.c + 1 + ..\FastMathFunctions\arm_sqrt_q15.c + + + arm_sqrt_q31.c + 1 + ..\FastMathFunctions\arm_sqrt_q31.c + + + + + ComplexMathFunctions + + + arm_cmplx_conj_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_f32.c + + + arm_cmplx_conj_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_q15.c + + + arm_cmplx_conj_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_q31.c + + + arm_cmplx_dot_prod_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_f32.c + + + arm_cmplx_dot_prod_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q15.c + + + arm_cmplx_dot_prod_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q31.c + + + arm_cmplx_mag_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_f32.c + + + arm_cmplx_mag_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_q15.c + + + arm_cmplx_mag_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_q31.c + + + arm_cmplx_mag_squared_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_f32.c + + + arm_cmplx_mag_squared_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q15.c + + + arm_cmplx_mag_squared_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q31.c + + + arm_cmplx_mult_cmplx_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_f32.c + + + arm_cmplx_mult_cmplx_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q15.c + + + arm_cmplx_mult_cmplx_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q31.c + + + arm_cmplx_mult_real_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_f32.c + + + arm_cmplx_mult_real_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q15.c + + + arm_cmplx_mult_real_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q31.c + + + + + FilteringFunctions + + + arm_biquad_cascade_df1_32x64_init_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_init_q31.c + + + arm_biquad_cascade_df1_32x64_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_q31.c + + + arm_biquad_cascade_df1_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_f32.c + + + arm_biquad_cascade_df1_fast_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q15.c + + + arm_biquad_cascade_df1_fast_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q31.c + + + arm_biquad_cascade_df1_init_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_f32.c + + + arm_biquad_cascade_df1_init_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q15.c + + + arm_biquad_cascade_df1_init_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q31.c + + + arm_biquad_cascade_df1_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_q15.c + + + arm_biquad_cascade_df1_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_q31.c + + + arm_biquad_cascade_df2T_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df2T_f32.c + + + arm_biquad_cascade_df2T_init_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df2T_init_f32.c + + + arm_conv_f32.c + 1 + ..\FilteringFunctions\arm_conv_f32.c + + + arm_conv_fast_q15.c + 1 + ..\FilteringFunctions\arm_conv_fast_q15.c + + + arm_conv_fast_q31.c + 1 + ..\FilteringFunctions\arm_conv_fast_q31.c + + + arm_conv_partial_f32.c + 1 + ..\FilteringFunctions\arm_conv_partial_f32.c + + + arm_conv_partial_fast_q15.c + 1 + ..\FilteringFunctions\arm_conv_partial_fast_q15.c + + + arm_conv_partial_fast_q31.c + 1 + ..\FilteringFunctions\arm_conv_partial_fast_q31.c + + + arm_conv_partial_q7.c + 1 + ..\FilteringFunctions\arm_conv_partial_q7.c + + + arm_conv_partial_q15.c + 1 + ..\FilteringFunctions\arm_conv_partial_q15.c + + + arm_conv_partial_q31.c + 1 + ..\FilteringFunctions\arm_conv_partial_q31.c + + + arm_conv_q7.c + 1 + ..\FilteringFunctions\arm_conv_q7.c + + + arm_conv_q15.c + 1 + ..\FilteringFunctions\arm_conv_q15.c + + + arm_conv_q31.c + 1 + ..\FilteringFunctions\arm_conv_q31.c + + + arm_correlate_f32.c + 1 + ..\FilteringFunctions\arm_correlate_f32.c + + + arm_correlate_fast_q15.c + 1 + ..\FilteringFunctions\arm_correlate_fast_q15.c + + + arm_correlate_fast_q31.c + 1 + ..\FilteringFunctions\arm_correlate_fast_q31.c + + + arm_correlate_q7.c + 1 + ..\FilteringFunctions\arm_correlate_q7.c + + + arm_correlate_q15.c + 1 + ..\FilteringFunctions\arm_correlate_q15.c + + + arm_correlate_q31.c + 1 + ..\FilteringFunctions\arm_correlate_q31.c + + + arm_fir_decimate_f32.c + 1 + ..\FilteringFunctions\arm_fir_decimate_f32.c + + + arm_fir_decimate_fast_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_fast_q15.c + + + arm_fir_decimate_fast_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_fast_q31.c + + + arm_fir_decimate_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_f32.c + + + arm_fir_decimate_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_q15.c + + + arm_fir_decimate_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_q31.c + + + arm_fir_decimate_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_q15.c + + + arm_fir_decimate_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_q31.c + + + arm_fir_f32.c + 1 + ..\FilteringFunctions\arm_fir_f32.c + + + arm_fir_fast_q15.c + 1 + ..\FilteringFunctions\arm_fir_fast_q15.c + + + arm_fir_fast_q31.c + 1 + ..\FilteringFunctions\arm_fir_fast_q31.c + + + arm_fir_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_init_f32.c + + + arm_fir_init_q7.c + 1 + ..\FilteringFunctions\arm_fir_init_q7.c + + + arm_fir_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_init_q15.c + + + arm_fir_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_init_q31.c + + + arm_fir_interpolate_f32.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_f32.c + + + arm_fir_interpolate_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_f32.c + + + arm_fir_interpolate_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_q15.c + + + arm_fir_interpolate_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_q31.c + + + arm_fir_interpolate_q15.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_q15.c + + + arm_fir_interpolate_q31.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_q31.c + + + arm_fir_lattice_f32.c + 1 + ..\FilteringFunctions\arm_fir_lattice_f32.c + + + arm_fir_lattice_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_f32.c + + + arm_fir_lattice_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_q15.c + + + arm_fir_lattice_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_q31.c + + + arm_fir_lattice_q15.c + 1 + ..\FilteringFunctions\arm_fir_lattice_q15.c + + + arm_fir_lattice_q31.c + 1 + ..\FilteringFunctions\arm_fir_lattice_q31.c + + + arm_fir_q7.c + 1 + ..\FilteringFunctions\arm_fir_q7.c + + + arm_fir_q15.c + 1 + ..\FilteringFunctions\arm_fir_q15.c + + + arm_fir_q31.c + 1 + ..\FilteringFunctions\arm_fir_q31.c + + + arm_fir_sparse_f32.c + 1 + ..\FilteringFunctions\arm_fir_sparse_f32.c + + + arm_fir_sparse_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_f32.c + + + arm_fir_sparse_init_q7.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q7.c + + + arm_fir_sparse_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q15.c + + + arm_fir_sparse_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q31.c + + + arm_fir_sparse_q7.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q7.c + + + arm_fir_sparse_q15.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q15.c + + + arm_fir_sparse_q31.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q31.c + + + arm_iir_lattice_f32.c + 1 + ..\FilteringFunctions\arm_iir_lattice_f32.c + + + arm_iir_lattice_init_f32.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_f32.c + + + arm_iir_lattice_init_q15.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_q15.c + + + arm_iir_lattice_init_q31.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_q31.c + + + arm_iir_lattice_q15.c + 1 + ..\FilteringFunctions\arm_iir_lattice_q15.c + + + arm_iir_lattice_q31.c + 1 + ..\FilteringFunctions\arm_iir_lattice_q31.c + + + arm_lms_f32.c + 1 + ..\FilteringFunctions\arm_lms_f32.c + + + arm_lms_init_f32.c + 1 + ..\FilteringFunctions\arm_lms_init_f32.c + + + arm_lms_init_q15.c + 1 + ..\FilteringFunctions\arm_lms_init_q15.c + + + arm_lms_init_q31.c + 1 + ..\FilteringFunctions\arm_lms_init_q31.c + + + arm_lms_norm_f32.c + 1 + ..\FilteringFunctions\arm_lms_norm_f32.c + + + arm_lms_norm_init_f32.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_f32.c + + + arm_lms_norm_init_q15.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_q15.c + + + arm_lms_norm_init_q31.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_q31.c + + + arm_lms_norm_q15.c + 1 + ..\FilteringFunctions\arm_lms_norm_q15.c + + + arm_lms_norm_q31.c + 1 + ..\FilteringFunctions\arm_lms_norm_q31.c + + + arm_lms_q15.c + 1 + ..\FilteringFunctions\arm_lms_q15.c + + + arm_lms_q31.c + 1 + ..\FilteringFunctions\arm_lms_q31.c + + + + + MatrixFunctions + + + arm_mat_add_f32.c + 1 + ..\MatrixFunctions\arm_mat_add_f32.c + + + arm_mat_add_q15.c + 1 + ..\MatrixFunctions\arm_mat_add_q15.c + + + arm_mat_add_q31.c + 1 + ..\MatrixFunctions\arm_mat_add_q31.c + + + arm_mat_init_f32.c + 1 + ..\MatrixFunctions\arm_mat_init_f32.c + + + arm_mat_init_q15.c + 1 + ..\MatrixFunctions\arm_mat_init_q15.c + + + arm_mat_init_q31.c + 1 + ..\MatrixFunctions\arm_mat_init_q31.c + + + arm_mat_inverse_f32.c + 1 + ..\MatrixFunctions\arm_mat_inverse_f32.c + + + arm_mat_mult_f32.c + 1 + ..\MatrixFunctions\arm_mat_mult_f32.c + + + arm_mat_mult_fast_q15.c + 1 + ..\MatrixFunctions\arm_mat_mult_fast_q15.c + + + arm_mat_mult_fast_q31.c + 1 + ..\MatrixFunctions\arm_mat_mult_fast_q31.c + + + arm_mat_mult_q15.c + 1 + ..\MatrixFunctions\arm_mat_mult_q15.c + + + arm_mat_mult_q31.c + 1 + ..\MatrixFunctions\arm_mat_mult_q31.c + + + arm_mat_scale_f32.c + 1 + ..\MatrixFunctions\arm_mat_scale_f32.c + + + arm_mat_scale_q15.c + 1 + ..\MatrixFunctions\arm_mat_scale_q15.c + + + arm_mat_scale_q31.c + 1 + ..\MatrixFunctions\arm_mat_scale_q31.c + + + arm_mat_sub_f32.c + 1 + ..\MatrixFunctions\arm_mat_sub_f32.c + + + arm_mat_sub_q15.c + 1 + ..\MatrixFunctions\arm_mat_sub_q15.c + + + arm_mat_sub_q31.c + 1 + ..\MatrixFunctions\arm_mat_sub_q31.c + + + arm_mat_trans_f32.c + 1 + ..\MatrixFunctions\arm_mat_trans_f32.c + + + arm_mat_trans_q15.c + 1 + ..\MatrixFunctions\arm_mat_trans_q15.c + + + arm_mat_trans_q31.c + 1 + ..\MatrixFunctions\arm_mat_trans_q31.c + + + + + TransformFunctions + + + arm_cfft_radix4_f32.c + 1 + ..\TransformFunctions\arm_cfft_radix4_f32.c + + + arm_cfft_radix4_init_f32.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_f32.c + + + arm_cfft_radix4_init_q15.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_q15.c + + + arm_cfft_radix4_init_q31.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_q31.c + + + arm_cfft_radix4_q15.c + 1 + ..\TransformFunctions\arm_cfft_radix4_q15.c + + + arm_cfft_radix4_q31.c + 1 + ..\TransformFunctions\arm_cfft_radix4_q31.c + + + arm_dct4_f32.c + 1 + ..\TransformFunctions\arm_dct4_f32.c + + + arm_dct4_init_f32.c + 1 + ..\TransformFunctions\arm_dct4_init_f32.c + + + arm_dct4_init_q15.c + 1 + ..\TransformFunctions\arm_dct4_init_q15.c + + + arm_dct4_init_q31.c + 1 + ..\TransformFunctions\arm_dct4_init_q31.c + + + arm_dct4_q15.c + 1 + ..\TransformFunctions\arm_dct4_q15.c + + + arm_dct4_q31.c + 1 + ..\TransformFunctions\arm_dct4_q31.c + + + arm_rfft_f32.c + 1 + ..\TransformFunctions\arm_rfft_f32.c + + + arm_rfft_init_f32.c + 1 + ..\TransformFunctions\arm_rfft_init_f32.c + + + arm_rfft_init_q15.c + 1 + ..\TransformFunctions\arm_rfft_init_q15.c + + + arm_rfft_init_q31.c + 1 + ..\TransformFunctions\arm_rfft_init_q31.c + + + arm_rfft_q15.c + 1 + ..\TransformFunctions\arm_rfft_q15.c + + + arm_rfft_q31.c + 1 + ..\TransformFunctions\arm_rfft_q31.c + + + + + ControllerFunctions + + + arm_pid_init_f32.c + 1 + ..\ControllerFunctions\arm_pid_init_f32.c + + + arm_pid_init_q15.c + 1 + ..\ControllerFunctions\arm_pid_init_q15.c + + + arm_pid_init_q31.c + 1 + ..\ControllerFunctions\arm_pid_init_q31.c + + + arm_pid_reset_f32.c + 1 + ..\ControllerFunctions\arm_pid_reset_f32.c + + + arm_pid_reset_q15.c + 1 + ..\ControllerFunctions\arm_pid_reset_q15.c + + + arm_pid_reset_q31.c + 1 + ..\ControllerFunctions\arm_pid_reset_q31.c + + + arm_sin_cos_f32.c + 1 + ..\ControllerFunctions\arm_sin_cos_f32.c + + + arm_sin_cos_q31.c + 1 + ..\ControllerFunctions\arm_sin_cos_q31.c + + + + + StatisticsFunctions + + + arm_max_f32.c + 1 + ..\StatisticsFunctions\arm_max_f32.c + + + arm_max_q7.c + 1 + ..\StatisticsFunctions\arm_max_q7.c + + + arm_max_q15.c + 1 + ..\StatisticsFunctions\arm_max_q15.c + + + arm_max_q31.c + 1 + ..\StatisticsFunctions\arm_max_q31.c + + + arm_mean_f32.c + 1 + ..\StatisticsFunctions\arm_mean_f32.c + + + arm_mean_q7.c + 1 + ..\StatisticsFunctions\arm_mean_q7.c + + + arm_mean_q15.c + 1 + ..\StatisticsFunctions\arm_mean_q15.c + + + arm_mean_q31.c + 1 + ..\StatisticsFunctions\arm_mean_q31.c + + + arm_min_f32.c + 1 + ..\StatisticsFunctions\arm_min_f32.c + + + arm_min_q7.c + 1 + ..\StatisticsFunctions\arm_min_q7.c + + + arm_min_q15.c + 1 + ..\StatisticsFunctions\arm_min_q15.c + + + arm_min_q31.c + 1 + ..\StatisticsFunctions\arm_min_q31.c + + + arm_power_f32.c + 1 + ..\StatisticsFunctions\arm_power_f32.c + + + arm_power_q7.c + 1 + ..\StatisticsFunctions\arm_power_q7.c + + + arm_power_q15.c + 1 + ..\StatisticsFunctions\arm_power_q15.c + + + arm_power_q31.c + 1 + ..\StatisticsFunctions\arm_power_q31.c + + + arm_rms_f32.c + 1 + ..\StatisticsFunctions\arm_rms_f32.c + + + arm_rms_q15.c + 1 + ..\StatisticsFunctions\arm_rms_q15.c + + + arm_rms_q31.c + 1 + ..\StatisticsFunctions\arm_rms_q31.c + + + arm_std_f32.c + 1 + ..\StatisticsFunctions\arm_std_f32.c + + + arm_std_q15.c + 1 + ..\StatisticsFunctions\arm_std_q15.c + + + arm_std_q31.c + 1 + ..\StatisticsFunctions\arm_std_q31.c + + + arm_var_f32.c + 1 + ..\StatisticsFunctions\arm_var_f32.c + + + arm_var_q15.c + 1 + ..\StatisticsFunctions\arm_var_q15.c + + + arm_var_q31.c + 1 + ..\StatisticsFunctions\arm_var_q31.c + + + + + SupportFunctions + + + arm_copy_f32.c + 1 + ..\SupportFunctions\arm_copy_f32.c + + + arm_copy_q7.c + 1 + ..\SupportFunctions\arm_copy_q7.c + + + arm_copy_q15.c + 1 + ..\SupportFunctions\arm_copy_q15.c + + + arm_copy_q31.c + 1 + ..\SupportFunctions\arm_copy_q31.c + + + arm_fill_f32.c + 1 + ..\SupportFunctions\arm_fill_f32.c + + + arm_fill_q7.c + 1 + ..\SupportFunctions\arm_fill_q7.c + + + arm_fill_q15.c + 1 + ..\SupportFunctions\arm_fill_q15.c + + + arm_fill_q31.c + 1 + ..\SupportFunctions\arm_fill_q31.c + + + arm_float_to_q7.c + 1 + ..\SupportFunctions\arm_float_to_q7.c + + + arm_float_to_q15.c + 1 + ..\SupportFunctions\arm_float_to_q15.c + + + arm_float_to_q31.c + 1 + ..\SupportFunctions\arm_float_to_q31.c + + + arm_q7_to_float.c + 1 + ..\SupportFunctions\arm_q7_to_float.c + + + arm_q7_to_q15.c + 1 + ..\SupportFunctions\arm_q7_to_q15.c + + + arm_q7_to_q31.c + 1 + ..\SupportFunctions\arm_q7_to_q31.c + + + arm_q15_to_float.c + 1 + ..\SupportFunctions\arm_q15_to_float.c + + + arm_q15_to_q7.c + 1 + ..\SupportFunctions\arm_q15_to_q7.c + + + arm_q15_to_q31.c + 1 + ..\SupportFunctions\arm_q15_to_q31.c + + + arm_q31_to_float.c + 1 + ..\SupportFunctions\arm_q31_to_float.c + + + arm_q31_to_q7.c + 1 + ..\SupportFunctions\arm_q31_to_q7.c + + + arm_q31_to_q15.c + 1 + ..\SupportFunctions\arm_q31_to_q15.c + + + + + CommonTables + + + arm_common_tables.c + 1 + ..\CommonTables\arm_common_tables.c + + + + + + + DSP_Lib CM4 LE FPU + 0x4 + ARM-ADS + + + Cortex-M4 FPU + ARM + CLOCK(12000000) CPUTYPE("Cortex-M4") ESEL ELITTLE FPU2 + + + + 5237 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\intermediateFiles\ + arm_cortexM4lf_math + 0 + 1 + 0 + 1 + 1 + .\intermediateFiles\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" "..\..\..\Lib\ARM\" + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM4, ARM_MATH_MATRIX_CHECK, ARM_MATH_ROUNDING, __FPU_PRESENT = 1 + + ..\..\..\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x00000000 + + + + + + + + + + + + BasicMathFunctions + + + arm_abs_f32.c + 1 + ..\BasicMathFunctions\arm_abs_f32.c + + + arm_abs_q7.c + 1 + ..\BasicMathFunctions\arm_abs_q7.c + + + arm_abs_q15.c + 1 + ..\BasicMathFunctions\arm_abs_q15.c + + + arm_abs_q31.c + 1 + ..\BasicMathFunctions\arm_abs_q31.c + + + arm_add_f32.c + 1 + ..\BasicMathFunctions\arm_add_f32.c + + + arm_add_q7.c + 1 + ..\BasicMathFunctions\arm_add_q7.c + + + arm_add_q15.c + 1 + ..\BasicMathFunctions\arm_add_q15.c + + + arm_add_q31.c + 1 + ..\BasicMathFunctions\arm_add_q31.c + + + arm_dot_prod_f32.c + 1 + ..\BasicMathFunctions\arm_dot_prod_f32.c + + + arm_dot_prod_q7.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q7.c + + + arm_dot_prod_q15.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q15.c + + + arm_dot_prod_q31.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q31.c + + + arm_mult_f32.c + 1 + ..\BasicMathFunctions\arm_mult_f32.c + + + arm_mult_q7.c + 1 + ..\BasicMathFunctions\arm_mult_q7.c + + + arm_mult_q15.c + 1 + ..\BasicMathFunctions\arm_mult_q15.c + + + arm_mult_q31.c + 1 + ..\BasicMathFunctions\arm_mult_q31.c + + + arm_negate_f32.c + 1 + ..\BasicMathFunctions\arm_negate_f32.c + + + arm_negate_q7.c + 1 + ..\BasicMathFunctions\arm_negate_q7.c + + + arm_negate_q15.c + 1 + ..\BasicMathFunctions\arm_negate_q15.c + + + arm_negate_q31.c + 1 + ..\BasicMathFunctions\arm_negate_q31.c + + + arm_offset_f32.c + 1 + ..\BasicMathFunctions\arm_offset_f32.c + + + arm_offset_q7.c + 1 + ..\BasicMathFunctions\arm_offset_q7.c + + + arm_offset_q15.c + 1 + ..\BasicMathFunctions\arm_offset_q15.c + + + arm_offset_q31.c + 1 + ..\BasicMathFunctions\arm_offset_q31.c + + + arm_scale_f32.c + 1 + ..\BasicMathFunctions\arm_scale_f32.c + + + arm_scale_q7.c + 1 + ..\BasicMathFunctions\arm_scale_q7.c + + + arm_scale_q15.c + 1 + ..\BasicMathFunctions\arm_scale_q15.c + + + arm_scale_q31.c + 1 + ..\BasicMathFunctions\arm_scale_q31.c + + + arm_shift_q7.c + 1 + ..\BasicMathFunctions\arm_shift_q7.c + + + arm_shift_q15.c + 1 + ..\BasicMathFunctions\arm_shift_q15.c + + + arm_shift_q31.c + 1 + ..\BasicMathFunctions\arm_shift_q31.c + + + arm_sub_f32.c + 1 + ..\BasicMathFunctions\arm_sub_f32.c + + + arm_sub_q7.c + 1 + ..\BasicMathFunctions\arm_sub_q7.c + + + arm_sub_q15.c + 1 + ..\BasicMathFunctions\arm_sub_q15.c + + + arm_sub_q31.c + 1 + ..\BasicMathFunctions\arm_sub_q31.c + + + + + FastMathFunctions + + + arm_cos_f32.c + 1 + ..\FastMathFunctions\arm_cos_f32.c + + + arm_cos_q15.c + 1 + ..\FastMathFunctions\arm_cos_q15.c + + + arm_cos_q31.c + 1 + ..\FastMathFunctions\arm_cos_q31.c + + + arm_sin_f32.c + 1 + ..\FastMathFunctions\arm_sin_f32.c + + + arm_sin_q15.c + 1 + ..\FastMathFunctions\arm_sin_q15.c + + + arm_sin_q31.c + 1 + ..\FastMathFunctions\arm_sin_q31.c + + + arm_sqrt_q15.c + 1 + ..\FastMathFunctions\arm_sqrt_q15.c + + + arm_sqrt_q31.c + 1 + ..\FastMathFunctions\arm_sqrt_q31.c + + + + + ComplexMathFunctions + + + arm_cmplx_conj_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_f32.c + + + arm_cmplx_conj_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_q15.c + + + arm_cmplx_conj_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_q31.c + + + arm_cmplx_dot_prod_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_f32.c + + + arm_cmplx_dot_prod_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q15.c + + + arm_cmplx_dot_prod_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q31.c + + + arm_cmplx_mag_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_f32.c + + + arm_cmplx_mag_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_q15.c + + + arm_cmplx_mag_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_q31.c + + + arm_cmplx_mag_squared_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_f32.c + + + arm_cmplx_mag_squared_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q15.c + + + arm_cmplx_mag_squared_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q31.c + + + arm_cmplx_mult_cmplx_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_f32.c + + + arm_cmplx_mult_cmplx_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q15.c + + + arm_cmplx_mult_cmplx_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q31.c + + + arm_cmplx_mult_real_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_f32.c + + + arm_cmplx_mult_real_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q15.c + + + arm_cmplx_mult_real_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q31.c + + + + + FilteringFunctions + + + arm_biquad_cascade_df1_32x64_init_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_init_q31.c + + + arm_biquad_cascade_df1_32x64_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_q31.c + + + arm_biquad_cascade_df1_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_f32.c + + + arm_biquad_cascade_df1_fast_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q15.c + + + arm_biquad_cascade_df1_fast_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q31.c + + + arm_biquad_cascade_df1_init_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_f32.c + + + arm_biquad_cascade_df1_init_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q15.c + + + arm_biquad_cascade_df1_init_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q31.c + + + arm_biquad_cascade_df1_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_q15.c + + + arm_biquad_cascade_df1_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_q31.c + + + arm_biquad_cascade_df2T_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df2T_f32.c + + + arm_biquad_cascade_df2T_init_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df2T_init_f32.c + + + arm_conv_f32.c + 1 + ..\FilteringFunctions\arm_conv_f32.c + + + arm_conv_fast_q15.c + 1 + ..\FilteringFunctions\arm_conv_fast_q15.c + + + arm_conv_fast_q31.c + 1 + ..\FilteringFunctions\arm_conv_fast_q31.c + + + arm_conv_partial_f32.c + 1 + ..\FilteringFunctions\arm_conv_partial_f32.c + + + arm_conv_partial_fast_q15.c + 1 + ..\FilteringFunctions\arm_conv_partial_fast_q15.c + + + arm_conv_partial_fast_q31.c + 1 + ..\FilteringFunctions\arm_conv_partial_fast_q31.c + + + arm_conv_partial_q7.c + 1 + ..\FilteringFunctions\arm_conv_partial_q7.c + + + arm_conv_partial_q15.c + 1 + ..\FilteringFunctions\arm_conv_partial_q15.c + + + arm_conv_partial_q31.c + 1 + ..\FilteringFunctions\arm_conv_partial_q31.c + + + arm_conv_q7.c + 1 + ..\FilteringFunctions\arm_conv_q7.c + + + arm_conv_q15.c + 1 + ..\FilteringFunctions\arm_conv_q15.c + + + arm_conv_q31.c + 1 + ..\FilteringFunctions\arm_conv_q31.c + + + arm_correlate_f32.c + 1 + ..\FilteringFunctions\arm_correlate_f32.c + + + arm_correlate_fast_q15.c + 1 + ..\FilteringFunctions\arm_correlate_fast_q15.c + + + arm_correlate_fast_q31.c + 1 + ..\FilteringFunctions\arm_correlate_fast_q31.c + + + arm_correlate_q7.c + 1 + ..\FilteringFunctions\arm_correlate_q7.c + + + arm_correlate_q15.c + 1 + ..\FilteringFunctions\arm_correlate_q15.c + + + arm_correlate_q31.c + 1 + ..\FilteringFunctions\arm_correlate_q31.c + + + arm_fir_decimate_f32.c + 1 + ..\FilteringFunctions\arm_fir_decimate_f32.c + + + arm_fir_decimate_fast_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_fast_q15.c + + + arm_fir_decimate_fast_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_fast_q31.c + + + arm_fir_decimate_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_f32.c + + + arm_fir_decimate_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_q15.c + + + arm_fir_decimate_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_q31.c + + + arm_fir_decimate_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_q15.c + + + arm_fir_decimate_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_q31.c + + + arm_fir_f32.c + 1 + ..\FilteringFunctions\arm_fir_f32.c + + + arm_fir_fast_q15.c + 1 + ..\FilteringFunctions\arm_fir_fast_q15.c + + + arm_fir_fast_q31.c + 1 + ..\FilteringFunctions\arm_fir_fast_q31.c + + + arm_fir_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_init_f32.c + + + arm_fir_init_q7.c + 1 + ..\FilteringFunctions\arm_fir_init_q7.c + + + arm_fir_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_init_q15.c + + + arm_fir_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_init_q31.c + + + arm_fir_interpolate_f32.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_f32.c + + + arm_fir_interpolate_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_f32.c + + + arm_fir_interpolate_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_q15.c + + + arm_fir_interpolate_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_q31.c + + + arm_fir_interpolate_q15.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_q15.c + + + arm_fir_interpolate_q31.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_q31.c + + + arm_fir_lattice_f32.c + 1 + ..\FilteringFunctions\arm_fir_lattice_f32.c + + + arm_fir_lattice_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_f32.c + + + arm_fir_lattice_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_q15.c + + + arm_fir_lattice_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_q31.c + + + arm_fir_lattice_q15.c + 1 + ..\FilteringFunctions\arm_fir_lattice_q15.c + + + arm_fir_lattice_q31.c + 1 + ..\FilteringFunctions\arm_fir_lattice_q31.c + + + arm_fir_q7.c + 1 + ..\FilteringFunctions\arm_fir_q7.c + + + arm_fir_q15.c + 1 + ..\FilteringFunctions\arm_fir_q15.c + + + arm_fir_q31.c + 1 + ..\FilteringFunctions\arm_fir_q31.c + + + arm_fir_sparse_f32.c + 1 + ..\FilteringFunctions\arm_fir_sparse_f32.c + + + arm_fir_sparse_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_f32.c + + + arm_fir_sparse_init_q7.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q7.c + + + arm_fir_sparse_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q15.c + + + arm_fir_sparse_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q31.c + + + arm_fir_sparse_q7.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q7.c + + + arm_fir_sparse_q15.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q15.c + + + arm_fir_sparse_q31.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q31.c + + + arm_iir_lattice_f32.c + 1 + ..\FilteringFunctions\arm_iir_lattice_f32.c + + + arm_iir_lattice_init_f32.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_f32.c + + + arm_iir_lattice_init_q15.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_q15.c + + + arm_iir_lattice_init_q31.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_q31.c + + + arm_iir_lattice_q15.c + 1 + ..\FilteringFunctions\arm_iir_lattice_q15.c + + + arm_iir_lattice_q31.c + 1 + ..\FilteringFunctions\arm_iir_lattice_q31.c + + + arm_lms_f32.c + 1 + ..\FilteringFunctions\arm_lms_f32.c + + + arm_lms_init_f32.c + 1 + ..\FilteringFunctions\arm_lms_init_f32.c + + + arm_lms_init_q15.c + 1 + ..\FilteringFunctions\arm_lms_init_q15.c + + + arm_lms_init_q31.c + 1 + ..\FilteringFunctions\arm_lms_init_q31.c + + + arm_lms_norm_f32.c + 1 + ..\FilteringFunctions\arm_lms_norm_f32.c + + + arm_lms_norm_init_f32.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_f32.c + + + arm_lms_norm_init_q15.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_q15.c + + + arm_lms_norm_init_q31.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_q31.c + + + arm_lms_norm_q15.c + 1 + ..\FilteringFunctions\arm_lms_norm_q15.c + + + arm_lms_norm_q31.c + 1 + ..\FilteringFunctions\arm_lms_norm_q31.c + + + arm_lms_q15.c + 1 + ..\FilteringFunctions\arm_lms_q15.c + + + arm_lms_q31.c + 1 + ..\FilteringFunctions\arm_lms_q31.c + + + + + MatrixFunctions + + + arm_mat_add_f32.c + 1 + ..\MatrixFunctions\arm_mat_add_f32.c + + + arm_mat_add_q15.c + 1 + ..\MatrixFunctions\arm_mat_add_q15.c + + + arm_mat_add_q31.c + 1 + ..\MatrixFunctions\arm_mat_add_q31.c + + + arm_mat_init_f32.c + 1 + ..\MatrixFunctions\arm_mat_init_f32.c + + + arm_mat_init_q15.c + 1 + ..\MatrixFunctions\arm_mat_init_q15.c + + + arm_mat_init_q31.c + 1 + ..\MatrixFunctions\arm_mat_init_q31.c + + + arm_mat_inverse_f32.c + 1 + ..\MatrixFunctions\arm_mat_inverse_f32.c + + + arm_mat_mult_f32.c + 1 + ..\MatrixFunctions\arm_mat_mult_f32.c + + + arm_mat_mult_fast_q15.c + 1 + ..\MatrixFunctions\arm_mat_mult_fast_q15.c + + + arm_mat_mult_fast_q31.c + 1 + ..\MatrixFunctions\arm_mat_mult_fast_q31.c + + + arm_mat_mult_q15.c + 1 + ..\MatrixFunctions\arm_mat_mult_q15.c + + + arm_mat_mult_q31.c + 1 + ..\MatrixFunctions\arm_mat_mult_q31.c + + + arm_mat_scale_f32.c + 1 + ..\MatrixFunctions\arm_mat_scale_f32.c + + + arm_mat_scale_q15.c + 1 + ..\MatrixFunctions\arm_mat_scale_q15.c + + + arm_mat_scale_q31.c + 1 + ..\MatrixFunctions\arm_mat_scale_q31.c + + + arm_mat_sub_f32.c + 1 + ..\MatrixFunctions\arm_mat_sub_f32.c + + + arm_mat_sub_q15.c + 1 + ..\MatrixFunctions\arm_mat_sub_q15.c + + + arm_mat_sub_q31.c + 1 + ..\MatrixFunctions\arm_mat_sub_q31.c + + + arm_mat_trans_f32.c + 1 + ..\MatrixFunctions\arm_mat_trans_f32.c + + + arm_mat_trans_q15.c + 1 + ..\MatrixFunctions\arm_mat_trans_q15.c + + + arm_mat_trans_q31.c + 1 + ..\MatrixFunctions\arm_mat_trans_q31.c + + + + + TransformFunctions + + + arm_cfft_radix4_f32.c + 1 + ..\TransformFunctions\arm_cfft_radix4_f32.c + + + arm_cfft_radix4_init_f32.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_f32.c + + + arm_cfft_radix4_init_q15.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_q15.c + + + arm_cfft_radix4_init_q31.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_q31.c + + + arm_cfft_radix4_q15.c + 1 + ..\TransformFunctions\arm_cfft_radix4_q15.c + + + arm_cfft_radix4_q31.c + 1 + ..\TransformFunctions\arm_cfft_radix4_q31.c + + + arm_dct4_f32.c + 1 + ..\TransformFunctions\arm_dct4_f32.c + + + arm_dct4_init_f32.c + 1 + ..\TransformFunctions\arm_dct4_init_f32.c + + + arm_dct4_init_q15.c + 1 + ..\TransformFunctions\arm_dct4_init_q15.c + + + arm_dct4_init_q31.c + 1 + ..\TransformFunctions\arm_dct4_init_q31.c + + + arm_dct4_q15.c + 1 + ..\TransformFunctions\arm_dct4_q15.c + + + arm_dct4_q31.c + 1 + ..\TransformFunctions\arm_dct4_q31.c + + + arm_rfft_f32.c + 1 + ..\TransformFunctions\arm_rfft_f32.c + + + arm_rfft_init_f32.c + 1 + ..\TransformFunctions\arm_rfft_init_f32.c + + + arm_rfft_init_q15.c + 1 + ..\TransformFunctions\arm_rfft_init_q15.c + + + arm_rfft_init_q31.c + 1 + ..\TransformFunctions\arm_rfft_init_q31.c + + + arm_rfft_q15.c + 1 + ..\TransformFunctions\arm_rfft_q15.c + + + arm_rfft_q31.c + 1 + ..\TransformFunctions\arm_rfft_q31.c + + + + + ControllerFunctions + + + arm_pid_init_f32.c + 1 + ..\ControllerFunctions\arm_pid_init_f32.c + + + arm_pid_init_q15.c + 1 + ..\ControllerFunctions\arm_pid_init_q15.c + + + arm_pid_init_q31.c + 1 + ..\ControllerFunctions\arm_pid_init_q31.c + + + arm_pid_reset_f32.c + 1 + ..\ControllerFunctions\arm_pid_reset_f32.c + + + arm_pid_reset_q15.c + 1 + ..\ControllerFunctions\arm_pid_reset_q15.c + + + arm_pid_reset_q31.c + 1 + ..\ControllerFunctions\arm_pid_reset_q31.c + + + arm_sin_cos_f32.c + 1 + ..\ControllerFunctions\arm_sin_cos_f32.c + + + arm_sin_cos_q31.c + 1 + ..\ControllerFunctions\arm_sin_cos_q31.c + + + + + StatisticsFunctions + + + arm_max_f32.c + 1 + ..\StatisticsFunctions\arm_max_f32.c + + + arm_max_q7.c + 1 + ..\StatisticsFunctions\arm_max_q7.c + + + arm_max_q15.c + 1 + ..\StatisticsFunctions\arm_max_q15.c + + + arm_max_q31.c + 1 + ..\StatisticsFunctions\arm_max_q31.c + + + arm_mean_f32.c + 1 + ..\StatisticsFunctions\arm_mean_f32.c + + + arm_mean_q7.c + 1 + ..\StatisticsFunctions\arm_mean_q7.c + + + arm_mean_q15.c + 1 + ..\StatisticsFunctions\arm_mean_q15.c + + + arm_mean_q31.c + 1 + ..\StatisticsFunctions\arm_mean_q31.c + + + arm_min_f32.c + 1 + ..\StatisticsFunctions\arm_min_f32.c + + + arm_min_q7.c + 1 + ..\StatisticsFunctions\arm_min_q7.c + + + arm_min_q15.c + 1 + ..\StatisticsFunctions\arm_min_q15.c + + + arm_min_q31.c + 1 + ..\StatisticsFunctions\arm_min_q31.c + + + arm_power_f32.c + 1 + ..\StatisticsFunctions\arm_power_f32.c + + + arm_power_q7.c + 1 + ..\StatisticsFunctions\arm_power_q7.c + + + arm_power_q15.c + 1 + ..\StatisticsFunctions\arm_power_q15.c + + + arm_power_q31.c + 1 + ..\StatisticsFunctions\arm_power_q31.c + + + arm_rms_f32.c + 1 + ..\StatisticsFunctions\arm_rms_f32.c + + + arm_rms_q15.c + 1 + ..\StatisticsFunctions\arm_rms_q15.c + + + arm_rms_q31.c + 1 + ..\StatisticsFunctions\arm_rms_q31.c + + + arm_std_f32.c + 1 + ..\StatisticsFunctions\arm_std_f32.c + + + arm_std_q15.c + 1 + ..\StatisticsFunctions\arm_std_q15.c + + + arm_std_q31.c + 1 + ..\StatisticsFunctions\arm_std_q31.c + + + arm_var_f32.c + 1 + ..\StatisticsFunctions\arm_var_f32.c + + + arm_var_q15.c + 1 + ..\StatisticsFunctions\arm_var_q15.c + + + arm_var_q31.c + 1 + ..\StatisticsFunctions\arm_var_q31.c + + + + + SupportFunctions + + + arm_copy_f32.c + 1 + ..\SupportFunctions\arm_copy_f32.c + + + arm_copy_q7.c + 1 + ..\SupportFunctions\arm_copy_q7.c + + + arm_copy_q15.c + 1 + ..\SupportFunctions\arm_copy_q15.c + + + arm_copy_q31.c + 1 + ..\SupportFunctions\arm_copy_q31.c + + + arm_fill_f32.c + 1 + ..\SupportFunctions\arm_fill_f32.c + + + arm_fill_q7.c + 1 + ..\SupportFunctions\arm_fill_q7.c + + + arm_fill_q15.c + 1 + ..\SupportFunctions\arm_fill_q15.c + + + arm_fill_q31.c + 1 + ..\SupportFunctions\arm_fill_q31.c + + + arm_float_to_q7.c + 1 + ..\SupportFunctions\arm_float_to_q7.c + + + arm_float_to_q15.c + 1 + ..\SupportFunctions\arm_float_to_q15.c + + + arm_float_to_q31.c + 1 + ..\SupportFunctions\arm_float_to_q31.c + + + arm_q7_to_float.c + 1 + ..\SupportFunctions\arm_q7_to_float.c + + + arm_q7_to_q15.c + 1 + ..\SupportFunctions\arm_q7_to_q15.c + + + arm_q7_to_q31.c + 1 + ..\SupportFunctions\arm_q7_to_q31.c + + + arm_q15_to_float.c + 1 + ..\SupportFunctions\arm_q15_to_float.c + + + arm_q15_to_q7.c + 1 + ..\SupportFunctions\arm_q15_to_q7.c + + + arm_q15_to_q31.c + 1 + ..\SupportFunctions\arm_q15_to_q31.c + + + arm_q31_to_float.c + 1 + ..\SupportFunctions\arm_q31_to_float.c + + + arm_q31_to_q7.c + 1 + ..\SupportFunctions\arm_q31_to_q7.c + + + arm_q31_to_q15.c + 1 + ..\SupportFunctions\arm_q31_to_q15.c + + + + + CommonTables + + + arm_common_tables.c + 1 + ..\CommonTables\arm_common_tables.c + + + + + + + DSP_Lib CM4 BE + 0x4 + ARM-ADS + + + Cortex-M4 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M4") ESEL ELITTLE + + + + 5125 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\intermediateFiles\ + arm_cortexM4b_math + 0 + 1 + 0 + 1 + 1 + .\intermediateFiles\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" "..\..\..\Lib\ARM\" + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM4, ARM_MATH_MATRIX_CHECK, ARM_MATH_ROUNDING,ARM_MATH_BIG_ENDIAN + + ..\..\..\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x00000000 + + + + + + + + + + + + BasicMathFunctions + + + arm_abs_f32.c + 1 + ..\BasicMathFunctions\arm_abs_f32.c + + + arm_abs_q7.c + 1 + ..\BasicMathFunctions\arm_abs_q7.c + + + arm_abs_q15.c + 1 + ..\BasicMathFunctions\arm_abs_q15.c + + + arm_abs_q31.c + 1 + ..\BasicMathFunctions\arm_abs_q31.c + + + arm_add_f32.c + 1 + ..\BasicMathFunctions\arm_add_f32.c + + + arm_add_q7.c + 1 + ..\BasicMathFunctions\arm_add_q7.c + + + arm_add_q15.c + 1 + ..\BasicMathFunctions\arm_add_q15.c + + + arm_add_q31.c + 1 + ..\BasicMathFunctions\arm_add_q31.c + + + arm_dot_prod_f32.c + 1 + ..\BasicMathFunctions\arm_dot_prod_f32.c + + + arm_dot_prod_q7.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q7.c + + + arm_dot_prod_q15.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q15.c + + + arm_dot_prod_q31.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q31.c + + + arm_mult_f32.c + 1 + ..\BasicMathFunctions\arm_mult_f32.c + + + arm_mult_q7.c + 1 + ..\BasicMathFunctions\arm_mult_q7.c + + + arm_mult_q15.c + 1 + ..\BasicMathFunctions\arm_mult_q15.c + + + arm_mult_q31.c + 1 + ..\BasicMathFunctions\arm_mult_q31.c + + + arm_negate_f32.c + 1 + ..\BasicMathFunctions\arm_negate_f32.c + + + arm_negate_q7.c + 1 + ..\BasicMathFunctions\arm_negate_q7.c + + + arm_negate_q15.c + 1 + ..\BasicMathFunctions\arm_negate_q15.c + + + arm_negate_q31.c + 1 + ..\BasicMathFunctions\arm_negate_q31.c + + + arm_offset_f32.c + 1 + ..\BasicMathFunctions\arm_offset_f32.c + + + arm_offset_q7.c + 1 + ..\BasicMathFunctions\arm_offset_q7.c + + + arm_offset_q15.c + 1 + ..\BasicMathFunctions\arm_offset_q15.c + + + arm_offset_q31.c + 1 + ..\BasicMathFunctions\arm_offset_q31.c + + + arm_scale_f32.c + 1 + ..\BasicMathFunctions\arm_scale_f32.c + + + arm_scale_q7.c + 1 + ..\BasicMathFunctions\arm_scale_q7.c + + + arm_scale_q15.c + 1 + ..\BasicMathFunctions\arm_scale_q15.c + + + arm_scale_q31.c + 1 + ..\BasicMathFunctions\arm_scale_q31.c + + + arm_shift_q7.c + 1 + ..\BasicMathFunctions\arm_shift_q7.c + + + arm_shift_q15.c + 1 + ..\BasicMathFunctions\arm_shift_q15.c + + + arm_shift_q31.c + 1 + ..\BasicMathFunctions\arm_shift_q31.c + + + arm_sub_f32.c + 1 + ..\BasicMathFunctions\arm_sub_f32.c + + + arm_sub_q7.c + 1 + ..\BasicMathFunctions\arm_sub_q7.c + + + arm_sub_q15.c + 1 + ..\BasicMathFunctions\arm_sub_q15.c + + + arm_sub_q31.c + 1 + ..\BasicMathFunctions\arm_sub_q31.c + + + + + FastMathFunctions + + + arm_cos_f32.c + 1 + ..\FastMathFunctions\arm_cos_f32.c + + + arm_cos_q15.c + 1 + ..\FastMathFunctions\arm_cos_q15.c + + + arm_cos_q31.c + 1 + ..\FastMathFunctions\arm_cos_q31.c + + + arm_sin_f32.c + 1 + ..\FastMathFunctions\arm_sin_f32.c + + + arm_sin_q15.c + 1 + ..\FastMathFunctions\arm_sin_q15.c + + + arm_sin_q31.c + 1 + ..\FastMathFunctions\arm_sin_q31.c + + + arm_sqrt_q15.c + 1 + ..\FastMathFunctions\arm_sqrt_q15.c + + + arm_sqrt_q31.c + 1 + ..\FastMathFunctions\arm_sqrt_q31.c + + + + + ComplexMathFunctions + + + arm_cmplx_conj_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_f32.c + + + arm_cmplx_conj_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_q15.c + + + arm_cmplx_conj_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_q31.c + + + arm_cmplx_dot_prod_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_f32.c + + + arm_cmplx_dot_prod_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q15.c + + + arm_cmplx_dot_prod_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q31.c + + + arm_cmplx_mag_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_f32.c + + + arm_cmplx_mag_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_q15.c + + + arm_cmplx_mag_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_q31.c + + + arm_cmplx_mag_squared_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_f32.c + + + arm_cmplx_mag_squared_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q15.c + + + arm_cmplx_mag_squared_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q31.c + + + arm_cmplx_mult_cmplx_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_f32.c + + + arm_cmplx_mult_cmplx_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q15.c + + + arm_cmplx_mult_cmplx_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q31.c + + + arm_cmplx_mult_real_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_f32.c + + + arm_cmplx_mult_real_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q15.c + + + arm_cmplx_mult_real_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q31.c + + + + + FilteringFunctions + + + arm_biquad_cascade_df1_32x64_init_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_init_q31.c + + + arm_biquad_cascade_df1_32x64_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_q31.c + + + arm_biquad_cascade_df1_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_f32.c + + + arm_biquad_cascade_df1_fast_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q15.c + + + arm_biquad_cascade_df1_fast_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q31.c + + + arm_biquad_cascade_df1_init_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_f32.c + + + arm_biquad_cascade_df1_init_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q15.c + + + arm_biquad_cascade_df1_init_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q31.c + + + arm_biquad_cascade_df1_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_q15.c + + + arm_biquad_cascade_df1_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_q31.c + + + arm_biquad_cascade_df2T_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df2T_f32.c + + + arm_biquad_cascade_df2T_init_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df2T_init_f32.c + + + arm_conv_f32.c + 1 + ..\FilteringFunctions\arm_conv_f32.c + + + arm_conv_fast_q15.c + 1 + ..\FilteringFunctions\arm_conv_fast_q15.c + + + arm_conv_fast_q31.c + 1 + ..\FilteringFunctions\arm_conv_fast_q31.c + + + arm_conv_partial_f32.c + 1 + ..\FilteringFunctions\arm_conv_partial_f32.c + + + arm_conv_partial_fast_q15.c + 1 + ..\FilteringFunctions\arm_conv_partial_fast_q15.c + + + arm_conv_partial_fast_q31.c + 1 + ..\FilteringFunctions\arm_conv_partial_fast_q31.c + + + arm_conv_partial_q7.c + 1 + ..\FilteringFunctions\arm_conv_partial_q7.c + + + arm_conv_partial_q15.c + 1 + ..\FilteringFunctions\arm_conv_partial_q15.c + + + arm_conv_partial_q31.c + 1 + ..\FilteringFunctions\arm_conv_partial_q31.c + + + arm_conv_q7.c + 1 + ..\FilteringFunctions\arm_conv_q7.c + + + arm_conv_q15.c + 1 + ..\FilteringFunctions\arm_conv_q15.c + + + arm_conv_q31.c + 1 + ..\FilteringFunctions\arm_conv_q31.c + + + arm_correlate_f32.c + 1 + ..\FilteringFunctions\arm_correlate_f32.c + + + arm_correlate_fast_q15.c + 1 + ..\FilteringFunctions\arm_correlate_fast_q15.c + + + arm_correlate_fast_q31.c + 1 + ..\FilteringFunctions\arm_correlate_fast_q31.c + + + arm_correlate_q7.c + 1 + ..\FilteringFunctions\arm_correlate_q7.c + + + arm_correlate_q15.c + 1 + ..\FilteringFunctions\arm_correlate_q15.c + + + arm_correlate_q31.c + 1 + ..\FilteringFunctions\arm_correlate_q31.c + + + arm_fir_decimate_f32.c + 1 + ..\FilteringFunctions\arm_fir_decimate_f32.c + + + arm_fir_decimate_fast_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_fast_q15.c + + + arm_fir_decimate_fast_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_fast_q31.c + + + arm_fir_decimate_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_f32.c + + + arm_fir_decimate_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_q15.c + + + arm_fir_decimate_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_q31.c + + + arm_fir_decimate_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_q15.c + + + arm_fir_decimate_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_q31.c + + + arm_fir_f32.c + 1 + ..\FilteringFunctions\arm_fir_f32.c + + + arm_fir_fast_q15.c + 1 + ..\FilteringFunctions\arm_fir_fast_q15.c + + + arm_fir_fast_q31.c + 1 + ..\FilteringFunctions\arm_fir_fast_q31.c + + + arm_fir_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_init_f32.c + + + arm_fir_init_q7.c + 1 + ..\FilteringFunctions\arm_fir_init_q7.c + + + arm_fir_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_init_q15.c + + + arm_fir_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_init_q31.c + + + arm_fir_interpolate_f32.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_f32.c + + + arm_fir_interpolate_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_f32.c + + + arm_fir_interpolate_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_q15.c + + + arm_fir_interpolate_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_q31.c + + + arm_fir_interpolate_q15.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_q15.c + + + arm_fir_interpolate_q31.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_q31.c + + + arm_fir_lattice_f32.c + 1 + ..\FilteringFunctions\arm_fir_lattice_f32.c + + + arm_fir_lattice_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_f32.c + + + arm_fir_lattice_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_q15.c + + + arm_fir_lattice_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_q31.c + + + arm_fir_lattice_q15.c + 1 + ..\FilteringFunctions\arm_fir_lattice_q15.c + + + arm_fir_lattice_q31.c + 1 + ..\FilteringFunctions\arm_fir_lattice_q31.c + + + arm_fir_q7.c + 1 + ..\FilteringFunctions\arm_fir_q7.c + + + arm_fir_q15.c + 1 + ..\FilteringFunctions\arm_fir_q15.c + + + arm_fir_q31.c + 1 + ..\FilteringFunctions\arm_fir_q31.c + + + arm_fir_sparse_f32.c + 1 + ..\FilteringFunctions\arm_fir_sparse_f32.c + + + arm_fir_sparse_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_f32.c + + + arm_fir_sparse_init_q7.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q7.c + + + arm_fir_sparse_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q15.c + + + arm_fir_sparse_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q31.c + + + arm_fir_sparse_q7.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q7.c + + + arm_fir_sparse_q15.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q15.c + + + arm_fir_sparse_q31.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q31.c + + + arm_iir_lattice_f32.c + 1 + ..\FilteringFunctions\arm_iir_lattice_f32.c + + + arm_iir_lattice_init_f32.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_f32.c + + + arm_iir_lattice_init_q15.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_q15.c + + + arm_iir_lattice_init_q31.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_q31.c + + + arm_iir_lattice_q15.c + 1 + ..\FilteringFunctions\arm_iir_lattice_q15.c + + + arm_iir_lattice_q31.c + 1 + ..\FilteringFunctions\arm_iir_lattice_q31.c + + + arm_lms_f32.c + 1 + ..\FilteringFunctions\arm_lms_f32.c + + + arm_lms_init_f32.c + 1 + ..\FilteringFunctions\arm_lms_init_f32.c + + + arm_lms_init_q15.c + 1 + ..\FilteringFunctions\arm_lms_init_q15.c + + + arm_lms_init_q31.c + 1 + ..\FilteringFunctions\arm_lms_init_q31.c + + + arm_lms_norm_f32.c + 1 + ..\FilteringFunctions\arm_lms_norm_f32.c + + + arm_lms_norm_init_f32.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_f32.c + + + arm_lms_norm_init_q15.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_q15.c + + + arm_lms_norm_init_q31.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_q31.c + + + arm_lms_norm_q15.c + 1 + ..\FilteringFunctions\arm_lms_norm_q15.c + + + arm_lms_norm_q31.c + 1 + ..\FilteringFunctions\arm_lms_norm_q31.c + + + arm_lms_q15.c + 1 + ..\FilteringFunctions\arm_lms_q15.c + + + arm_lms_q31.c + 1 + ..\FilteringFunctions\arm_lms_q31.c + + + + + MatrixFunctions + + + arm_mat_add_f32.c + 1 + ..\MatrixFunctions\arm_mat_add_f32.c + + + arm_mat_add_q15.c + 1 + ..\MatrixFunctions\arm_mat_add_q15.c + + + arm_mat_add_q31.c + 1 + ..\MatrixFunctions\arm_mat_add_q31.c + + + arm_mat_init_f32.c + 1 + ..\MatrixFunctions\arm_mat_init_f32.c + + + arm_mat_init_q15.c + 1 + ..\MatrixFunctions\arm_mat_init_q15.c + + + arm_mat_init_q31.c + 1 + ..\MatrixFunctions\arm_mat_init_q31.c + + + arm_mat_inverse_f32.c + 1 + ..\MatrixFunctions\arm_mat_inverse_f32.c + + + arm_mat_mult_f32.c + 1 + ..\MatrixFunctions\arm_mat_mult_f32.c + + + arm_mat_mult_fast_q15.c + 1 + ..\MatrixFunctions\arm_mat_mult_fast_q15.c + + + arm_mat_mult_fast_q31.c + 1 + ..\MatrixFunctions\arm_mat_mult_fast_q31.c + + + arm_mat_mult_q15.c + 1 + ..\MatrixFunctions\arm_mat_mult_q15.c + + + arm_mat_mult_q31.c + 1 + ..\MatrixFunctions\arm_mat_mult_q31.c + + + arm_mat_scale_f32.c + 1 + ..\MatrixFunctions\arm_mat_scale_f32.c + + + arm_mat_scale_q15.c + 1 + ..\MatrixFunctions\arm_mat_scale_q15.c + + + arm_mat_scale_q31.c + 1 + ..\MatrixFunctions\arm_mat_scale_q31.c + + + arm_mat_sub_f32.c + 1 + ..\MatrixFunctions\arm_mat_sub_f32.c + + + arm_mat_sub_q15.c + 1 + ..\MatrixFunctions\arm_mat_sub_q15.c + + + arm_mat_sub_q31.c + 1 + ..\MatrixFunctions\arm_mat_sub_q31.c + + + arm_mat_trans_f32.c + 1 + ..\MatrixFunctions\arm_mat_trans_f32.c + + + arm_mat_trans_q15.c + 1 + ..\MatrixFunctions\arm_mat_trans_q15.c + + + arm_mat_trans_q31.c + 1 + ..\MatrixFunctions\arm_mat_trans_q31.c + + + + + TransformFunctions + + + arm_cfft_radix4_f32.c + 1 + ..\TransformFunctions\arm_cfft_radix4_f32.c + + + arm_cfft_radix4_init_f32.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_f32.c + + + arm_cfft_radix4_init_q15.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_q15.c + + + arm_cfft_radix4_init_q31.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_q31.c + + + arm_cfft_radix4_q15.c + 1 + ..\TransformFunctions\arm_cfft_radix4_q15.c + + + arm_cfft_radix4_q31.c + 1 + ..\TransformFunctions\arm_cfft_radix4_q31.c + + + arm_dct4_f32.c + 1 + ..\TransformFunctions\arm_dct4_f32.c + + + arm_dct4_init_f32.c + 1 + ..\TransformFunctions\arm_dct4_init_f32.c + + + arm_dct4_init_q15.c + 1 + ..\TransformFunctions\arm_dct4_init_q15.c + + + arm_dct4_init_q31.c + 1 + ..\TransformFunctions\arm_dct4_init_q31.c + + + arm_dct4_q15.c + 1 + ..\TransformFunctions\arm_dct4_q15.c + + + arm_dct4_q31.c + 1 + ..\TransformFunctions\arm_dct4_q31.c + + + arm_rfft_f32.c + 1 + ..\TransformFunctions\arm_rfft_f32.c + + + arm_rfft_init_f32.c + 1 + ..\TransformFunctions\arm_rfft_init_f32.c + + + arm_rfft_init_q15.c + 1 + ..\TransformFunctions\arm_rfft_init_q15.c + + + arm_rfft_init_q31.c + 1 + ..\TransformFunctions\arm_rfft_init_q31.c + + + arm_rfft_q15.c + 1 + ..\TransformFunctions\arm_rfft_q15.c + + + arm_rfft_q31.c + 1 + ..\TransformFunctions\arm_rfft_q31.c + + + + + ControllerFunctions + + + arm_pid_init_f32.c + 1 + ..\ControllerFunctions\arm_pid_init_f32.c + + + arm_pid_init_q15.c + 1 + ..\ControllerFunctions\arm_pid_init_q15.c + + + arm_pid_init_q31.c + 1 + ..\ControllerFunctions\arm_pid_init_q31.c + + + arm_pid_reset_f32.c + 1 + ..\ControllerFunctions\arm_pid_reset_f32.c + + + arm_pid_reset_q15.c + 1 + ..\ControllerFunctions\arm_pid_reset_q15.c + + + arm_pid_reset_q31.c + 1 + ..\ControllerFunctions\arm_pid_reset_q31.c + + + arm_sin_cos_f32.c + 1 + ..\ControllerFunctions\arm_sin_cos_f32.c + + + arm_sin_cos_q31.c + 1 + ..\ControllerFunctions\arm_sin_cos_q31.c + + + + + StatisticsFunctions + + + arm_max_f32.c + 1 + ..\StatisticsFunctions\arm_max_f32.c + + + arm_max_q7.c + 1 + ..\StatisticsFunctions\arm_max_q7.c + + + arm_max_q15.c + 1 + ..\StatisticsFunctions\arm_max_q15.c + + + arm_max_q31.c + 1 + ..\StatisticsFunctions\arm_max_q31.c + + + arm_mean_f32.c + 1 + ..\StatisticsFunctions\arm_mean_f32.c + + + arm_mean_q7.c + 1 + ..\StatisticsFunctions\arm_mean_q7.c + + + arm_mean_q15.c + 1 + ..\StatisticsFunctions\arm_mean_q15.c + + + arm_mean_q31.c + 1 + ..\StatisticsFunctions\arm_mean_q31.c + + + arm_min_f32.c + 1 + ..\StatisticsFunctions\arm_min_f32.c + + + arm_min_q7.c + 1 + ..\StatisticsFunctions\arm_min_q7.c + + + arm_min_q15.c + 1 + ..\StatisticsFunctions\arm_min_q15.c + + + arm_min_q31.c + 1 + ..\StatisticsFunctions\arm_min_q31.c + + + arm_power_f32.c + 1 + ..\StatisticsFunctions\arm_power_f32.c + + + arm_power_q7.c + 1 + ..\StatisticsFunctions\arm_power_q7.c + + + arm_power_q15.c + 1 + ..\StatisticsFunctions\arm_power_q15.c + + + arm_power_q31.c + 1 + ..\StatisticsFunctions\arm_power_q31.c + + + arm_rms_f32.c + 1 + ..\StatisticsFunctions\arm_rms_f32.c + + + arm_rms_q15.c + 1 + ..\StatisticsFunctions\arm_rms_q15.c + + + arm_rms_q31.c + 1 + ..\StatisticsFunctions\arm_rms_q31.c + + + arm_std_f32.c + 1 + ..\StatisticsFunctions\arm_std_f32.c + + + arm_std_q15.c + 1 + ..\StatisticsFunctions\arm_std_q15.c + + + arm_std_q31.c + 1 + ..\StatisticsFunctions\arm_std_q31.c + + + arm_var_f32.c + 1 + ..\StatisticsFunctions\arm_var_f32.c + + + arm_var_q15.c + 1 + ..\StatisticsFunctions\arm_var_q15.c + + + arm_var_q31.c + 1 + ..\StatisticsFunctions\arm_var_q31.c + + + + + SupportFunctions + + + arm_copy_f32.c + 1 + ..\SupportFunctions\arm_copy_f32.c + + + arm_copy_q7.c + 1 + ..\SupportFunctions\arm_copy_q7.c + + + arm_copy_q15.c + 1 + ..\SupportFunctions\arm_copy_q15.c + + + arm_copy_q31.c + 1 + ..\SupportFunctions\arm_copy_q31.c + + + arm_fill_f32.c + 1 + ..\SupportFunctions\arm_fill_f32.c + + + arm_fill_q7.c + 1 + ..\SupportFunctions\arm_fill_q7.c + + + arm_fill_q15.c + 1 + ..\SupportFunctions\arm_fill_q15.c + + + arm_fill_q31.c + 1 + ..\SupportFunctions\arm_fill_q31.c + + + arm_float_to_q7.c + 1 + ..\SupportFunctions\arm_float_to_q7.c + + + arm_float_to_q15.c + 1 + ..\SupportFunctions\arm_float_to_q15.c + + + arm_float_to_q31.c + 1 + ..\SupportFunctions\arm_float_to_q31.c + + + arm_q7_to_float.c + 1 + ..\SupportFunctions\arm_q7_to_float.c + + + arm_q7_to_q15.c + 1 + ..\SupportFunctions\arm_q7_to_q15.c + + + arm_q7_to_q31.c + 1 + ..\SupportFunctions\arm_q7_to_q31.c + + + arm_q15_to_float.c + 1 + ..\SupportFunctions\arm_q15_to_float.c + + + arm_q15_to_q7.c + 1 + ..\SupportFunctions\arm_q15_to_q7.c + + + arm_q15_to_q31.c + 1 + ..\SupportFunctions\arm_q15_to_q31.c + + + arm_q31_to_float.c + 1 + ..\SupportFunctions\arm_q31_to_float.c + + + arm_q31_to_q7.c + 1 + ..\SupportFunctions\arm_q31_to_q7.c + + + arm_q31_to_q15.c + 1 + ..\SupportFunctions\arm_q31_to_q15.c + + + + + CommonTables + + + arm_common_tables.c + 1 + ..\CommonTables\arm_common_tables.c + + + + + + + DSP_Lib CM4 BE FPU + 0x4 + ARM-ADS + + + Cortex-M4 FPU + ARM + CLOCK(12000000) CPUTYPE("Cortex-M4") ESEL ELITTLE FPU2 + + + + 5237 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\intermediateFiles\ + arm_cortexM4bf_math + 0 + 1 + 0 + 1 + 1 + .\intermediateFiles\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" "..\..\..\Lib\ARM\" + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DCM.DLL + -pCM4 + SARMCM3.DLL + + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + ARM_MATH_CM4, ARM_MATH_MATRIX_CHECK, ARM_MATH_ROUNDING, ARM_MATH_BIG_ENDIAN, __FPU_PRESENT = 1 + + ..\..\..\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x00000000 + + + + + + + + + + + + BasicMathFunctions + + + arm_abs_f32.c + 1 + ..\BasicMathFunctions\arm_abs_f32.c + + + arm_abs_q7.c + 1 + ..\BasicMathFunctions\arm_abs_q7.c + + + arm_abs_q15.c + 1 + ..\BasicMathFunctions\arm_abs_q15.c + + + arm_abs_q31.c + 1 + ..\BasicMathFunctions\arm_abs_q31.c + + + arm_add_f32.c + 1 + ..\BasicMathFunctions\arm_add_f32.c + + + arm_add_q7.c + 1 + ..\BasicMathFunctions\arm_add_q7.c + + + arm_add_q15.c + 1 + ..\BasicMathFunctions\arm_add_q15.c + + + arm_add_q31.c + 1 + ..\BasicMathFunctions\arm_add_q31.c + + + arm_dot_prod_f32.c + 1 + ..\BasicMathFunctions\arm_dot_prod_f32.c + + + arm_dot_prod_q7.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q7.c + + + arm_dot_prod_q15.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q15.c + + + arm_dot_prod_q31.c + 1 + ..\BasicMathFunctions\arm_dot_prod_q31.c + + + arm_mult_f32.c + 1 + ..\BasicMathFunctions\arm_mult_f32.c + + + arm_mult_q7.c + 1 + ..\BasicMathFunctions\arm_mult_q7.c + + + arm_mult_q15.c + 1 + ..\BasicMathFunctions\arm_mult_q15.c + + + arm_mult_q31.c + 1 + ..\BasicMathFunctions\arm_mult_q31.c + + + arm_negate_f32.c + 1 + ..\BasicMathFunctions\arm_negate_f32.c + + + arm_negate_q7.c + 1 + ..\BasicMathFunctions\arm_negate_q7.c + + + arm_negate_q15.c + 1 + ..\BasicMathFunctions\arm_negate_q15.c + + + arm_negate_q31.c + 1 + ..\BasicMathFunctions\arm_negate_q31.c + + + arm_offset_f32.c + 1 + ..\BasicMathFunctions\arm_offset_f32.c + + + arm_offset_q7.c + 1 + ..\BasicMathFunctions\arm_offset_q7.c + + + arm_offset_q15.c + 1 + ..\BasicMathFunctions\arm_offset_q15.c + + + arm_offset_q31.c + 1 + ..\BasicMathFunctions\arm_offset_q31.c + + + arm_scale_f32.c + 1 + ..\BasicMathFunctions\arm_scale_f32.c + + + arm_scale_q7.c + 1 + ..\BasicMathFunctions\arm_scale_q7.c + + + arm_scale_q15.c + 1 + ..\BasicMathFunctions\arm_scale_q15.c + + + arm_scale_q31.c + 1 + ..\BasicMathFunctions\arm_scale_q31.c + + + arm_shift_q7.c + 1 + ..\BasicMathFunctions\arm_shift_q7.c + + + arm_shift_q15.c + 1 + ..\BasicMathFunctions\arm_shift_q15.c + + + arm_shift_q31.c + 1 + ..\BasicMathFunctions\arm_shift_q31.c + + + arm_sub_f32.c + 1 + ..\BasicMathFunctions\arm_sub_f32.c + + + arm_sub_q7.c + 1 + ..\BasicMathFunctions\arm_sub_q7.c + + + arm_sub_q15.c + 1 + ..\BasicMathFunctions\arm_sub_q15.c + + + arm_sub_q31.c + 1 + ..\BasicMathFunctions\arm_sub_q31.c + + + + + FastMathFunctions + + + arm_cos_f32.c + 1 + ..\FastMathFunctions\arm_cos_f32.c + + + arm_cos_q15.c + 1 + ..\FastMathFunctions\arm_cos_q15.c + + + arm_cos_q31.c + 1 + ..\FastMathFunctions\arm_cos_q31.c + + + arm_sin_f32.c + 1 + ..\FastMathFunctions\arm_sin_f32.c + + + arm_sin_q15.c + 1 + ..\FastMathFunctions\arm_sin_q15.c + + + arm_sin_q31.c + 1 + ..\FastMathFunctions\arm_sin_q31.c + + + arm_sqrt_q15.c + 1 + ..\FastMathFunctions\arm_sqrt_q15.c + + + arm_sqrt_q31.c + 1 + ..\FastMathFunctions\arm_sqrt_q31.c + + + + + ComplexMathFunctions + + + arm_cmplx_conj_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_f32.c + + + arm_cmplx_conj_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_q15.c + + + arm_cmplx_conj_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_conj_q31.c + + + arm_cmplx_dot_prod_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_f32.c + + + arm_cmplx_dot_prod_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q15.c + + + arm_cmplx_dot_prod_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_dot_prod_q31.c + + + arm_cmplx_mag_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_f32.c + + + arm_cmplx_mag_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_q15.c + + + arm_cmplx_mag_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_q31.c + + + arm_cmplx_mag_squared_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_f32.c + + + arm_cmplx_mag_squared_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q15.c + + + arm_cmplx_mag_squared_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mag_squared_q31.c + + + arm_cmplx_mult_cmplx_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_f32.c + + + arm_cmplx_mult_cmplx_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q15.c + + + arm_cmplx_mult_cmplx_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_cmplx_q31.c + + + arm_cmplx_mult_real_f32.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_f32.c + + + arm_cmplx_mult_real_q15.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q15.c + + + arm_cmplx_mult_real_q31.c + 1 + ..\ComplexMathFunctions\arm_cmplx_mult_real_q31.c + + + + + FilteringFunctions + + + arm_biquad_cascade_df1_32x64_init_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_init_q31.c + + + arm_biquad_cascade_df1_32x64_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_32x64_q31.c + + + arm_biquad_cascade_df1_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_f32.c + + + arm_biquad_cascade_df1_fast_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q15.c + + + arm_biquad_cascade_df1_fast_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_fast_q31.c + + + arm_biquad_cascade_df1_init_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_f32.c + + + arm_biquad_cascade_df1_init_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q15.c + + + arm_biquad_cascade_df1_init_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_init_q31.c + + + arm_biquad_cascade_df1_q15.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_q15.c + + + arm_biquad_cascade_df1_q31.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df1_q31.c + + + arm_biquad_cascade_df2T_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df2T_f32.c + + + arm_biquad_cascade_df2T_init_f32.c + 1 + ..\FilteringFunctions\arm_biquad_cascade_df2T_init_f32.c + + + arm_conv_f32.c + 1 + ..\FilteringFunctions\arm_conv_f32.c + + + arm_conv_fast_q15.c + 1 + ..\FilteringFunctions\arm_conv_fast_q15.c + + + arm_conv_fast_q31.c + 1 + ..\FilteringFunctions\arm_conv_fast_q31.c + + + arm_conv_partial_f32.c + 1 + ..\FilteringFunctions\arm_conv_partial_f32.c + + + arm_conv_partial_fast_q15.c + 1 + ..\FilteringFunctions\arm_conv_partial_fast_q15.c + + + arm_conv_partial_fast_q31.c + 1 + ..\FilteringFunctions\arm_conv_partial_fast_q31.c + + + arm_conv_partial_q7.c + 1 + ..\FilteringFunctions\arm_conv_partial_q7.c + + + arm_conv_partial_q15.c + 1 + ..\FilteringFunctions\arm_conv_partial_q15.c + + + arm_conv_partial_q31.c + 1 + ..\FilteringFunctions\arm_conv_partial_q31.c + + + arm_conv_q7.c + 1 + ..\FilteringFunctions\arm_conv_q7.c + + + arm_conv_q15.c + 1 + ..\FilteringFunctions\arm_conv_q15.c + + + arm_conv_q31.c + 1 + ..\FilteringFunctions\arm_conv_q31.c + + + arm_correlate_f32.c + 1 + ..\FilteringFunctions\arm_correlate_f32.c + + + arm_correlate_fast_q15.c + 1 + ..\FilteringFunctions\arm_correlate_fast_q15.c + + + arm_correlate_fast_q31.c + 1 + ..\FilteringFunctions\arm_correlate_fast_q31.c + + + arm_correlate_q7.c + 1 + ..\FilteringFunctions\arm_correlate_q7.c + + + arm_correlate_q15.c + 1 + ..\FilteringFunctions\arm_correlate_q15.c + + + arm_correlate_q31.c + 1 + ..\FilteringFunctions\arm_correlate_q31.c + + + arm_fir_decimate_f32.c + 1 + ..\FilteringFunctions\arm_fir_decimate_f32.c + + + arm_fir_decimate_fast_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_fast_q15.c + + + arm_fir_decimate_fast_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_fast_q31.c + + + arm_fir_decimate_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_f32.c + + + arm_fir_decimate_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_q15.c + + + arm_fir_decimate_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_init_q31.c + + + arm_fir_decimate_q15.c + 1 + ..\FilteringFunctions\arm_fir_decimate_q15.c + + + arm_fir_decimate_q31.c + 1 + ..\FilteringFunctions\arm_fir_decimate_q31.c + + + arm_fir_f32.c + 1 + ..\FilteringFunctions\arm_fir_f32.c + + + arm_fir_fast_q15.c + 1 + ..\FilteringFunctions\arm_fir_fast_q15.c + + + arm_fir_fast_q31.c + 1 + ..\FilteringFunctions\arm_fir_fast_q31.c + + + arm_fir_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_init_f32.c + + + arm_fir_init_q7.c + 1 + ..\FilteringFunctions\arm_fir_init_q7.c + + + arm_fir_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_init_q15.c + + + arm_fir_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_init_q31.c + + + arm_fir_interpolate_f32.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_f32.c + + + arm_fir_interpolate_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_f32.c + + + arm_fir_interpolate_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_q15.c + + + arm_fir_interpolate_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_init_q31.c + + + arm_fir_interpolate_q15.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_q15.c + + + arm_fir_interpolate_q31.c + 1 + ..\FilteringFunctions\arm_fir_interpolate_q31.c + + + arm_fir_lattice_f32.c + 1 + ..\FilteringFunctions\arm_fir_lattice_f32.c + + + arm_fir_lattice_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_f32.c + + + arm_fir_lattice_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_q15.c + + + arm_fir_lattice_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_lattice_init_q31.c + + + arm_fir_lattice_q15.c + 1 + ..\FilteringFunctions\arm_fir_lattice_q15.c + + + arm_fir_lattice_q31.c + 1 + ..\FilteringFunctions\arm_fir_lattice_q31.c + + + arm_fir_q7.c + 1 + ..\FilteringFunctions\arm_fir_q7.c + + + arm_fir_q15.c + 1 + ..\FilteringFunctions\arm_fir_q15.c + + + arm_fir_q31.c + 1 + ..\FilteringFunctions\arm_fir_q31.c + + + arm_fir_sparse_f32.c + 1 + ..\FilteringFunctions\arm_fir_sparse_f32.c + + + arm_fir_sparse_init_f32.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_f32.c + + + arm_fir_sparse_init_q7.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q7.c + + + arm_fir_sparse_init_q15.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q15.c + + + arm_fir_sparse_init_q31.c + 1 + ..\FilteringFunctions\arm_fir_sparse_init_q31.c + + + arm_fir_sparse_q7.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q7.c + + + arm_fir_sparse_q15.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q15.c + + + arm_fir_sparse_q31.c + 1 + ..\FilteringFunctions\arm_fir_sparse_q31.c + + + arm_iir_lattice_f32.c + 1 + ..\FilteringFunctions\arm_iir_lattice_f32.c + + + arm_iir_lattice_init_f32.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_f32.c + + + arm_iir_lattice_init_q15.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_q15.c + + + arm_iir_lattice_init_q31.c + 1 + ..\FilteringFunctions\arm_iir_lattice_init_q31.c + + + arm_iir_lattice_q15.c + 1 + ..\FilteringFunctions\arm_iir_lattice_q15.c + + + arm_iir_lattice_q31.c + 1 + ..\FilteringFunctions\arm_iir_lattice_q31.c + + + arm_lms_f32.c + 1 + ..\FilteringFunctions\arm_lms_f32.c + + + arm_lms_init_f32.c + 1 + ..\FilteringFunctions\arm_lms_init_f32.c + + + arm_lms_init_q15.c + 1 + ..\FilteringFunctions\arm_lms_init_q15.c + + + arm_lms_init_q31.c + 1 + ..\FilteringFunctions\arm_lms_init_q31.c + + + arm_lms_norm_f32.c + 1 + ..\FilteringFunctions\arm_lms_norm_f32.c + + + arm_lms_norm_init_f32.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_f32.c + + + arm_lms_norm_init_q15.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_q15.c + + + arm_lms_norm_init_q31.c + 1 + ..\FilteringFunctions\arm_lms_norm_init_q31.c + + + arm_lms_norm_q15.c + 1 + ..\FilteringFunctions\arm_lms_norm_q15.c + + + arm_lms_norm_q31.c + 1 + ..\FilteringFunctions\arm_lms_norm_q31.c + + + arm_lms_q15.c + 1 + ..\FilteringFunctions\arm_lms_q15.c + + + arm_lms_q31.c + 1 + ..\FilteringFunctions\arm_lms_q31.c + + + + + MatrixFunctions + + + arm_mat_add_f32.c + 1 + ..\MatrixFunctions\arm_mat_add_f32.c + + + arm_mat_add_q15.c + 1 + ..\MatrixFunctions\arm_mat_add_q15.c + + + arm_mat_add_q31.c + 1 + ..\MatrixFunctions\arm_mat_add_q31.c + + + arm_mat_init_f32.c + 1 + ..\MatrixFunctions\arm_mat_init_f32.c + + + arm_mat_init_q15.c + 1 + ..\MatrixFunctions\arm_mat_init_q15.c + + + arm_mat_init_q31.c + 1 + ..\MatrixFunctions\arm_mat_init_q31.c + + + arm_mat_inverse_f32.c + 1 + ..\MatrixFunctions\arm_mat_inverse_f32.c + + + arm_mat_mult_f32.c + 1 + ..\MatrixFunctions\arm_mat_mult_f32.c + + + arm_mat_mult_fast_q15.c + 1 + ..\MatrixFunctions\arm_mat_mult_fast_q15.c + + + arm_mat_mult_fast_q31.c + 1 + ..\MatrixFunctions\arm_mat_mult_fast_q31.c + + + arm_mat_mult_q15.c + 1 + ..\MatrixFunctions\arm_mat_mult_q15.c + + + arm_mat_mult_q31.c + 1 + ..\MatrixFunctions\arm_mat_mult_q31.c + + + arm_mat_scale_f32.c + 1 + ..\MatrixFunctions\arm_mat_scale_f32.c + + + arm_mat_scale_q15.c + 1 + ..\MatrixFunctions\arm_mat_scale_q15.c + + + arm_mat_scale_q31.c + 1 + ..\MatrixFunctions\arm_mat_scale_q31.c + + + arm_mat_sub_f32.c + 1 + ..\MatrixFunctions\arm_mat_sub_f32.c + + + arm_mat_sub_q15.c + 1 + ..\MatrixFunctions\arm_mat_sub_q15.c + + + arm_mat_sub_q31.c + 1 + ..\MatrixFunctions\arm_mat_sub_q31.c + + + arm_mat_trans_f32.c + 1 + ..\MatrixFunctions\arm_mat_trans_f32.c + + + arm_mat_trans_q15.c + 1 + ..\MatrixFunctions\arm_mat_trans_q15.c + + + arm_mat_trans_q31.c + 1 + ..\MatrixFunctions\arm_mat_trans_q31.c + + + + + TransformFunctions + + + arm_cfft_radix4_f32.c + 1 + ..\TransformFunctions\arm_cfft_radix4_f32.c + + + arm_cfft_radix4_init_f32.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_f32.c + + + arm_cfft_radix4_init_q15.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_q15.c + + + arm_cfft_radix4_init_q31.c + 1 + ..\TransformFunctions\arm_cfft_radix4_init_q31.c + + + arm_cfft_radix4_q15.c + 1 + ..\TransformFunctions\arm_cfft_radix4_q15.c + + + arm_cfft_radix4_q31.c + 1 + ..\TransformFunctions\arm_cfft_radix4_q31.c + + + arm_dct4_f32.c + 1 + ..\TransformFunctions\arm_dct4_f32.c + + + arm_dct4_init_f32.c + 1 + ..\TransformFunctions\arm_dct4_init_f32.c + + + arm_dct4_init_q15.c + 1 + ..\TransformFunctions\arm_dct4_init_q15.c + + + arm_dct4_init_q31.c + 1 + ..\TransformFunctions\arm_dct4_init_q31.c + + + arm_dct4_q15.c + 1 + ..\TransformFunctions\arm_dct4_q15.c + + + arm_dct4_q31.c + 1 + ..\TransformFunctions\arm_dct4_q31.c + + + arm_rfft_f32.c + 1 + ..\TransformFunctions\arm_rfft_f32.c + + + arm_rfft_init_f32.c + 1 + ..\TransformFunctions\arm_rfft_init_f32.c + + + arm_rfft_init_q15.c + 1 + ..\TransformFunctions\arm_rfft_init_q15.c + + + arm_rfft_init_q31.c + 1 + ..\TransformFunctions\arm_rfft_init_q31.c + + + arm_rfft_q15.c + 1 + ..\TransformFunctions\arm_rfft_q15.c + + + arm_rfft_q31.c + 1 + ..\TransformFunctions\arm_rfft_q31.c + + + + + ControllerFunctions + + + arm_pid_init_f32.c + 1 + ..\ControllerFunctions\arm_pid_init_f32.c + + + arm_pid_init_q15.c + 1 + ..\ControllerFunctions\arm_pid_init_q15.c + + + arm_pid_init_q31.c + 1 + ..\ControllerFunctions\arm_pid_init_q31.c + + + arm_pid_reset_f32.c + 1 + ..\ControllerFunctions\arm_pid_reset_f32.c + + + arm_pid_reset_q15.c + 1 + ..\ControllerFunctions\arm_pid_reset_q15.c + + + arm_pid_reset_q31.c + 1 + ..\ControllerFunctions\arm_pid_reset_q31.c + + + arm_sin_cos_f32.c + 1 + ..\ControllerFunctions\arm_sin_cos_f32.c + + + arm_sin_cos_q31.c + 1 + ..\ControllerFunctions\arm_sin_cos_q31.c + + + + + StatisticsFunctions + + + arm_max_f32.c + 1 + ..\StatisticsFunctions\arm_max_f32.c + + + arm_max_q7.c + 1 + ..\StatisticsFunctions\arm_max_q7.c + + + arm_max_q15.c + 1 + ..\StatisticsFunctions\arm_max_q15.c + + + arm_max_q31.c + 1 + ..\StatisticsFunctions\arm_max_q31.c + + + arm_mean_f32.c + 1 + ..\StatisticsFunctions\arm_mean_f32.c + + + arm_mean_q7.c + 1 + ..\StatisticsFunctions\arm_mean_q7.c + + + arm_mean_q15.c + 1 + ..\StatisticsFunctions\arm_mean_q15.c + + + arm_mean_q31.c + 1 + ..\StatisticsFunctions\arm_mean_q31.c + + + arm_min_f32.c + 1 + ..\StatisticsFunctions\arm_min_f32.c + + + arm_min_q7.c + 1 + ..\StatisticsFunctions\arm_min_q7.c + + + arm_min_q15.c + 1 + ..\StatisticsFunctions\arm_min_q15.c + + + arm_min_q31.c + 1 + ..\StatisticsFunctions\arm_min_q31.c + + + arm_power_f32.c + 1 + ..\StatisticsFunctions\arm_power_f32.c + + + arm_power_q7.c + 1 + ..\StatisticsFunctions\arm_power_q7.c + + + arm_power_q15.c + 1 + ..\StatisticsFunctions\arm_power_q15.c + + + arm_power_q31.c + 1 + ..\StatisticsFunctions\arm_power_q31.c + + + arm_rms_f32.c + 1 + ..\StatisticsFunctions\arm_rms_f32.c + + + arm_rms_q15.c + 1 + ..\StatisticsFunctions\arm_rms_q15.c + + + arm_rms_q31.c + 1 + ..\StatisticsFunctions\arm_rms_q31.c + + + arm_std_f32.c + 1 + ..\StatisticsFunctions\arm_std_f32.c + + + arm_std_q15.c + 1 + ..\StatisticsFunctions\arm_std_q15.c + + + arm_std_q31.c + 1 + ..\StatisticsFunctions\arm_std_q31.c + + + arm_var_f32.c + 1 + ..\StatisticsFunctions\arm_var_f32.c + + + arm_var_q15.c + 1 + ..\StatisticsFunctions\arm_var_q15.c + + + arm_var_q31.c + 1 + ..\StatisticsFunctions\arm_var_q31.c + + + + + SupportFunctions + + + arm_copy_f32.c + 1 + ..\SupportFunctions\arm_copy_f32.c + + + arm_copy_q7.c + 1 + ..\SupportFunctions\arm_copy_q7.c + + + arm_copy_q15.c + 1 + ..\SupportFunctions\arm_copy_q15.c + + + arm_copy_q31.c + 1 + ..\SupportFunctions\arm_copy_q31.c + + + arm_fill_f32.c + 1 + ..\SupportFunctions\arm_fill_f32.c + + + arm_fill_q7.c + 1 + ..\SupportFunctions\arm_fill_q7.c + + + arm_fill_q15.c + 1 + ..\SupportFunctions\arm_fill_q15.c + + + arm_fill_q31.c + 1 + ..\SupportFunctions\arm_fill_q31.c + + + arm_float_to_q7.c + 1 + ..\SupportFunctions\arm_float_to_q7.c + + + arm_float_to_q15.c + 1 + ..\SupportFunctions\arm_float_to_q15.c + + + arm_float_to_q31.c + 1 + ..\SupportFunctions\arm_float_to_q31.c + + + arm_q7_to_float.c + 1 + ..\SupportFunctions\arm_q7_to_float.c + + + arm_q7_to_q15.c + 1 + ..\SupportFunctions\arm_q7_to_q15.c + + + arm_q7_to_q31.c + 1 + ..\SupportFunctions\arm_q7_to_q31.c + + + arm_q15_to_float.c + 1 + ..\SupportFunctions\arm_q15_to_float.c + + + arm_q15_to_q7.c + 1 + ..\SupportFunctions\arm_q15_to_q7.c + + + arm_q15_to_q31.c + 1 + ..\SupportFunctions\arm_q15_to_q31.c + + + arm_q31_to_float.c + 1 + ..\SupportFunctions\arm_q31_to_float.c + + + arm_q31_to_q7.c + 1 + ..\SupportFunctions\arm_q31_to_q7.c + + + arm_q31_to_q15.c + 1 + ..\SupportFunctions\arm_q31_to_q15.c + + + + + CommonTables + + + arm_common_tables.c + 1 + ..\CommonTables\arm_common_tables.c + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexMx_math_Build.bat b/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexMx_math_Build.bat new file mode 100644 index 000000000..600ceb55e --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ARM/arm_cortexMx_math_Build.bat @@ -0,0 +1,14 @@ + +SET TMP=C:\Temp +SET TEMP=C:\Temp + +SET UVEXE=C:\Keil\UV4\UV4.EXE + +%UVEXE% -rb arm_cortexM0x_math.uvproj -t"DSP_Lib CM0 LE" -o"DSP_Lib CM0 LE.txt" +%UVEXE% -rb arm_cortexM0x_math.uvproj -t"DSP_Lib CM0 BE" -o"DSP_Lib CM0 BE.txt" +%UVEXE% -rb arm_cortexM3x_math.uvproj -t"DSP_Lib CM3 LE" -o"DSP_Lib CM3 LE.txt" +%UVEXE% -rb arm_cortexM3x_math.uvproj -t"DSP_Lib CM3 BE" -o"DSP_Lib CM3 BE.txt" +%UVEXE% -rb arm_cortexM4x_math.uvproj -t"DSP_Lib CM4 LE" -o"DSP_Lib CM4 LE.txt" +%UVEXE% -rb arm_cortexM4x_math.uvproj -t"DSP_Lib CM4 BE" -o"DSP_Lib CM4 BE.txt" +%UVEXE% -rb arm_cortexM4x_math.uvproj -t"DSP_Lib CM4 LE FPU" -o"DSP_Lib CM4 LE FPU.txt" +%UVEXE% -rb arm_cortexM4x_math.uvproj -t"DSP_Lib CM4 BE FPU" -o"DSP_Lib CM4 BE FPU.txt" \ No newline at end of file diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_f32.c new file mode 100644 index 000000000..2b6bd5389 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_f32.c @@ -0,0 +1,122 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_abs_f32.c +* +* Description: Vector absolute value. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" +#include + +/** + * @ingroup groupMath + */ + +/** + * @defgroup BasicAbs Vector Absolute Value + * + * Computes the absolute value of a vector on an element-by-element basis. + * + *
   
+ *     pDst[n] = abs(pSrcA[n]),   0 <= n < blockSize.   
+ * 
+ * + * The operation can be done in-place by setting the input and output pointers to the same buffer. + * There are separate functions for floating-point, Q7, Q15, and Q31 data types. + */ + +/** + * @addtogroup BasicAbs + * @{ + */ + +/** + * @brief Floating-point vector absolute value. + * @param[in] *pSrc points to the input buffer + * @param[out] *pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + * @return none. + */ + +void arm_abs_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = |A| */ + /* Calculate absolute and then store the results in the destination buffer. */ + *pDst++ = fabsf(*pSrc++); + *pDst++ = fabsf(*pSrc++); + *pDst++ = fabsf(*pSrc++); + *pDst++ = fabsf(*pSrc++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = |A| */ + /* Calculate absolute and then store the results in the destination buffer. */ + *pDst++ = fabsf(*pSrc++); + + /* Decrement the loop counter */ + blkCnt--; + } + +} + +/** + * @} end of BasicAbs group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q15.c new file mode 100644 index 000000000..0a3941bef --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q15.c @@ -0,0 +1,170 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_abs_q15.c +* +* Description: Q15 vector absolute value. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicAbs + * @{ + */ + +/** + * @brief Q15 vector absolute value. + * @param[in] *pSrc points to the input buffer + * @param[out] *pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * The Q15 value -1 (0x8000) will be saturated to the maximum allowable positive value 0x7FFF. + */ + +void arm_abs_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t in1; /* Input value1 */ + q15_t in2; /* Input value2 */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = |A| */ + /* Read two inputs */ + in1 = *pSrc++; + in2 = *pSrc++; + + + /* Store the Absolute result in the destination buffer by packing the two values, in a single cycle */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = + __PKHBT(((in1 > 0) ? in1 : __SSAT(-in1, 16)), + ((in2 > 0) ? in2 : __SSAT(-in2, 16)), 16); + +#else + + + *__SIMD32(pDst)++ = + __PKHBT(((in2 > 0) ? in2 : __SSAT(-in2, 16)), + ((in1 > 0) ? in1 : __SSAT(-in1, 16)), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + in1 = *pSrc++; + in2 = *pSrc++; + + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = + __PKHBT(((in1 > 0) ? in1 : __SSAT(-in1, 16)), + ((in2 > 0) ? in2 : __SSAT(-in2, 16)), 16); + + +#else + + *__SIMD32(pDst)++ = + __PKHBT(((in2 > 0) ? in2 : __SSAT(-in2, 16)), + ((in1 > 0) ? in1 : __SSAT(-in1, 16)), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = |A| */ + /* Read the input */ + in1 = *pSrc++; + + /* Calculate absolute value of input and then store the result in the destination buffer. */ + *pDst++ = (in1 > 0) ? in1 : __SSAT(-in1, 16); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + q15_t in; /* Temporary input variable */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = |A| */ + /* Read the input */ + in = *pSrc++; + + /* Calculate absolute value of input and then store the result in the destination buffer. */ + *pDst++ = (in > 0) ? in : __SSAT(-in, 16); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of BasicAbs group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q31.c new file mode 100644 index 000000000..52d7d3d33 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q31.c @@ -0,0 +1,120 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_abs_q31.c +* +* Description: Q31 vector absolute value. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicAbs + * @{ + */ + + +/** + * @brief Q31 vector absolute value. + * @param[in] *pSrc points to the input buffer + * @param[out] *pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * The Q31 value -1 (0x80000000) will be saturated to the maximum allowable positive value 0x7FFFFFFF. + */ + +void arm_abs_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + q31_t in; /* Input value */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = |A| */ + /* Calculate absolute of input (if -1 then saturated to 0x7fffffff) and then store the results in the destination buffer. */ + in = *pSrc++; + *pDst++ = (in > 0) ? in : ((in == 0x80000000) ? 0x7fffffff : -in); + in = *pSrc++; + *pDst++ = (in > 0) ? in : ((in == 0x80000000) ? 0x7fffffff : -in); + in = *pSrc++; + *pDst++ = (in > 0) ? in : ((in == 0x80000000) ? 0x7fffffff : -in); + in = *pSrc++; + *pDst++ = (in > 0) ? in : ((in == 0x80000000) ? 0x7fffffff : -in); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = |A| */ + /* Calculate absolute value of the input (if -1 then saturated to 0x7fffffff) and then store the results in the destination buffer. */ + in = *pSrc++; + *pDst++ = (in > 0) ? in : ((in == 0x80000000) ? 0x7fffffff : -in); + + /* Decrement the loop counter */ + blkCnt--; + } + +} + +/** + * @} end of BasicAbs group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q7.c new file mode 100644 index 000000000..81019fd90 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q7.c @@ -0,0 +1,143 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_abs_q7.c +* +* Description: Q7 vector absolute value. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicAbs + * @{ + */ + +/** + * @brief Q7 vector absolute value. + * @param[in] *pSrc points to the input buffer + * @param[out] *pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * The Q7 value -1 (0x80) will be saturated to the maximum allowable positive value 0x7F. + */ + +void arm_abs_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + q7_t in1; /* Input value1 */ + q7_t in2; /* Input value2 */ + q7_t in3; /* Input value3 */ + q7_t in4; /* Input value4 */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = |A| */ + /* Read 4 inputs */ + in1 = *pSrc++; + in2 = *pSrc++; + in3 = *pSrc++; + in4 = *pSrc++; + + /* Store the Absolute result in the destination buffer by packing the 4 values in single cycle */ + *__SIMD32(pDst)++ = + __PACKq7(((in1 > 0) ? in1 : __SSAT(-in1, 8)), + ((in2 > 0) ? in2 : __SSAT(-in2, 8)), + ((in3 > 0) ? in3 : __SSAT(-in3, 8)), + ((in4 > 0) ? in4 : __SSAT(-in4, 8))); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = |A| */ + /* Read the input */ + in1 = *pSrc++; + + /* Store the Absolute result in the destination buffer */ + *pDst++ = (in1 > 0) ? in1 : __SSAT(-in1, 8); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + q7_t in; /* Temporary input varible */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = |A| */ + /* Read the input */ + in = *pSrc++; + + /* Store the Absolute result in the destination buffer */ + *pDst++ = (in > 0) ? in : __SSAT(-in, 8); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of BasicAbs group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_f32.c new file mode 100644 index 000000000..d73a6ef68 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_f32.c @@ -0,0 +1,121 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_add_f32.c +* +* Description: Floating-point vector addition. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @defgroup BasicAdd Vector Addition + * + * Element-by-element addition of two vectors. + * + *
   
+ *     pDst[n] = pSrcA[n] + pSrcB[n],   0 <= n < blockSize.   
+ * 
+ * + * There are separate functions for floating-point, Q7, Q15, and Q31 data types. + */ + +/** + * @addtogroup BasicAdd + * @{ + */ + +/** + * @brief Floating-point vector addition. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + +void arm_add_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + *pDst++ = (*pSrcA++) + (*pSrcB++); + *pDst++ = (*pSrcA++) + (*pSrcB++); + *pDst++ = (*pSrcA++) + (*pSrcB++); + *pDst++ = (*pSrcA++) + (*pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + *pDst++ = (*pSrcA++) + (*pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicAdd group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q15.c new file mode 100644 index 000000000..f4ede5325 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q15.c @@ -0,0 +1,127 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_add_q15.c +* +* Description: Q15 vector addition +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicAdd + * @{ + */ + +/** + * @brief Q15 vector addition. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. + */ + +void arm_add_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + *__SIMD32(pDst)++ = __QADD16(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++); + *__SIMD32(pDst)++ = __QADD16(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + *pDst++ = (q15_t) __QADD16(*pSrcA++, *pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + *pDst++ = (q15_t) __SSAT(((q31_t) * pSrcA++ + *pSrcB++), 16); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + +} + +/** + * @} end of BasicAdd group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q31.c new file mode 100644 index 000000000..e33b9e2fd --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q31.c @@ -0,0 +1,129 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_add_q31.c +* +* Description: Q31 vector addition. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicAdd + * @{ + */ + + +/** + * @brief Q31 vector addition. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated. + */ + +void arm_add_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + *pDst++ = __QADD(*pSrcA++, *pSrcB++); + *pDst++ = __QADD(*pSrcA++, *pSrcB++); + *pDst++ = __QADD(*pSrcA++, *pSrcB++); + *pDst++ = __QADD(*pSrcA++, *pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + *pDst++ = __QADD(*pSrcA++, *pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + *pDst++ = (q31_t) clip_q63_to_q31((q63_t) * pSrcA++ + *pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of BasicAdd group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q7.c new file mode 100644 index 000000000..08199c31b --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q7.c @@ -0,0 +1,126 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_add_q7.c +* +* Description: Q7 vector addition. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicAdd + * @{ + */ + +/** + * @brief Q7 vector addition. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated. + */ + +void arm_add_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + *__SIMD32(pDst)++ = __QADD8(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + *pDst++ = (q7_t) __SSAT(*pSrcA++ + *pSrcB++, 8); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + *pDst++ = (q7_t) __SSAT((q15_t) * pSrcA++ + *pSrcB++, 8); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + +} + +/** + * @} end of BasicAdd group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_f32.c new file mode 100644 index 000000000..bc7516e5a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_f32.c @@ -0,0 +1,122 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_dot_prod_f32.c +* +* Description: Floating-point dot product. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @defgroup dot_prod Vector Dot Product + * + * Computes the dot product of two vectors. + * The vectors are multiplied element-by-element and then summed. + * There are separate functions for floating-point, Q7, Q15, and Q31 data types. + */ + +/** + * @addtogroup dot_prod + * @{ + */ + +/** + * @brief Dot product of floating-point vectors. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] *result output result returned here + * @return none. + */ + + +void arm_dot_prod_f32( + float32_t * pSrcA, + float32_t * pSrcB, + uint32_t blockSize, + float32_t * result) +{ + float32_t sum = 0.0f; /* Temporary result storage */ + uint32_t blkCnt; /* loop counter */ + + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Calculate dot product and then store the result in a temporary buffer */ + sum += (*pSrcA++) * (*pSrcB++); + sum += (*pSrcA++) * (*pSrcB++); + sum += (*pSrcA++) * (*pSrcB++); + sum += (*pSrcA++) * (*pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + + while(blkCnt > 0u) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Calculate dot product and then store the result in a temporary buffer. */ + sum += (*pSrcA++) * (*pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + /* Store the result back in the destination buffer */ + *result = sum; +} + +/** + * @} end of dot_prod group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q15.c new file mode 100644 index 000000000..50be68cf9 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q15.c @@ -0,0 +1,132 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_dot_prod_q15.c +* +* Description: Q15 dot product. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup dot_prod + * @{ + */ + +/** + * @brief Dot product of Q15 vectors. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] *result output result returned here + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The intermediate multiplications are in 1.15 x 1.15 = 2.30 format and these + * results are added to a 64-bit accumulator in 34.30 format. + * Nonsaturating additions are used and given that there are 33 guard bits in the accumulator + * there is no risk of overflow. + * The return result is in 34.30 format. + */ + +void arm_dot_prod_q15( + q15_t * pSrcA, + q15_t * pSrcB, + uint32_t blockSize, + q63_t * result) +{ + q63_t sum = 0; /* Temporary result storage */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Calculate dot product and then store the result in a temporary buffer. */ + sum = __SMLALD(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++, sum); + sum = __SMLALD(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Calculate dot product and then store the results in a temporary buffer. */ + sum = __SMLALD(*pSrcA++, *pSrcB++, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Calculate dot product and then store the results in a temporary buffer. */ + sum += (q63_t) ((q31_t) * pSrcA++ * *pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + /* Store the result in the destination buffer in 34.30 format */ + *result = sum; + +} + +/** + * @} end of dot_prod group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q31.c new file mode 100644 index 000000000..eb5f674a7 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q31.c @@ -0,0 +1,124 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_dot_prod_q31.c +* +* Description: Q31 dot product. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup dot_prod + * @{ + */ + +/** + * @brief Dot product of Q31 vectors. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] *result output result returned here + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The intermediate multiplications are in 1.31 x 1.31 = 2.62 format and these + * are truncated to 2.48 format by discarding the lower 14 bits. + * The 2.48 result is then added without saturation to a 64-bit accumulator in 16.48 format. + * There are 15 guard bits in the accumulator and there is no risk of overflow as long as + * the length of the vectors is less than 2^16 elements. + * The return result is in 16.48 format. + */ + +void arm_dot_prod_q31( + q31_t * pSrcA, + q31_t * pSrcB, + uint32_t blockSize, + q63_t * result) +{ + q63_t sum = 0; /* Temporary result storage */ + uint32_t blkCnt; /* loop counter */ + + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Calculate dot product and then store the result in a temporary buffer. */ + sum += ((q63_t) * pSrcA++ * *pSrcB++) >> 14u; + sum += ((q63_t) * pSrcA++ * *pSrcB++) >> 14u; + sum += ((q63_t) * pSrcA++ * *pSrcB++) >> 14u; + sum += ((q63_t) * pSrcA++ * *pSrcB++) >> 14u; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + + while(blkCnt > 0u) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Calculate dot product and then store the result in a temporary buffer. */ + sum += ((q63_t) * pSrcA++ * *pSrcB++) >> 14u; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Store the result in the destination buffer in 16.48 format */ + *result = sum; +} + +/** + * @} end of dot_prod group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q7.c new file mode 100644 index 000000000..cfea032ff --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q7.c @@ -0,0 +1,163 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_dot_prod_q7.c +* +* Description: Q7 dot product. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup dot_prod + * @{ + */ + +/** + * @brief Dot product of Q7 vectors. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] *result output result returned here + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The intermediate multiplications are in 1.7 x 1.7 = 2.14 format and these + * results are added to an accumulator in 18.14 format. + * Nonsaturating additions are used and there is no danger of wrap around as long as + * the vectors are less than 2^18 elements long. + * The return result is in 18.14 format. + */ + +void arm_dot_prod_q7( + q7_t * pSrcA, + q7_t * pSrcB, + uint32_t blockSize, + q31_t * result) +{ + uint32_t blkCnt; /* loop counter */ + + q31_t sum = 0; /* Temporary variables to store output */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t input1, input2; /* Temporary variables to store input */ + q15_t in1, in2; /* Temporary variables to store input */ + + + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* Reading two inputs of SrcA buffer and packing */ + in1 = (q15_t) * pSrcA++; + in2 = (q15_t) * pSrcA++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Reading two inputs of SrcB buffer and packing */ + in1 = (q15_t) * pSrcB++; + in2 = (q15_t) * pSrcB++; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Perform Dot product of 2 packed inputs using SMLALD and store the result in a temporary variable. */ + sum = __SMLAD(input1, input2, sum); + + /* Reading two inputs of SrcA buffer and packing */ + in1 = (q15_t) * pSrcA++; + in2 = (q15_t) * pSrcA++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Reading two inputs of SrcB buffer and packing */ + in1 = (q15_t) * pSrcB++; + in2 = (q15_t) * pSrcB++; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Perform Dot product of 2 packed inputs using SMLALD and store the result in a temporary variable. */ + sum = __SMLAD(input1, input2, sum); + + + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Dot product and then store the results in a temporary buffer. */ + sum = __SMLAD(*pSrcA++, *pSrcB++, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Dot product and then store the results in a temporary buffer. */ + sum += (q31_t) ((q15_t) * pSrcA++ * *pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + + /* Store the result in the destination buffer in 18.14 format */ + *result = sum; +} + +/** + * @} end of dot_prod group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_f32.c new file mode 100644 index 000000000..5c2dac070 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_f32.c @@ -0,0 +1,126 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mult_f32.c +* +* Description: Floating-point vector multiplication. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @defgroup BasicMult Vector Multiplication + * + * Element-by-element multiplication of two vectors. + * + *
   
+ *     pDst[n] = pSrcA[n] * pSrcB[n],   0 <= n < blockSize.   
+ * 
+ * + * There are separate functions for floating-point, Q7, Q15, and Q31 data types. + */ + +/** + * @addtogroup BasicMult + * @{ + */ + +/** + * @brief Floating-point vector multiplication. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + +void arm_mult_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counters */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A * B */ + /* Multiply the inputs and store the results in output buffer */ + *pDst++ = (*pSrcA++) * (*pSrcB++); + *pDst++ = (*pSrcA++) * (*pSrcB++); + *pDst++ = (*pSrcA++) * (*pSrcB++); + *pDst++ = (*pSrcA++) * (*pSrcB++); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + + while(blkCnt > 0u) + { + /* C = A * B */ + /* Multiply the inputs and store the results in output buffer */ + *pDst++ = (*pSrcA++) * (*pSrcB++); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } + +} + +/** + * @} end of BasicMult group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q15.c new file mode 100644 index 000000000..76a3843c4 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q15.c @@ -0,0 +1,119 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mult_q15.c +* +* Description: Q15 vector multiplication. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicMult + * @{ + */ + + +/** + * @brief Q15 vector multiplication + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. + */ + +void arm_mult_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counters */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A * B */ + /* Multiply the inputs and store the result in the destination buffer */ + *pDst++ = (q15_t) __SSAT((((q31_t) (*pSrcA++) * (*pSrcB++)) >> 15), 16); + *pDst++ = (q15_t) __SSAT((((q31_t) (*pSrcA++) * (*pSrcB++)) >> 15), 16); + *pDst++ = (q15_t) __SSAT((((q31_t) (*pSrcA++) * (*pSrcB++)) >> 15), 16); + *pDst++ = (q15_t) __SSAT((((q31_t) (*pSrcA++) * (*pSrcB++)) >> 15), 16); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + + while(blkCnt > 0u) + { + /* C = A * B */ + /* Multiply the inputs and store the result in the destination buffer */ + *pDst++ = (q15_t) __SSAT((((q31_t) (*pSrcA++) * (*pSrcB++)) >> 15), 16); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicMult group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q31.c new file mode 100644 index 000000000..c682c1123 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q31.c @@ -0,0 +1,121 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mult_q31.c +* +* Description: Q31 vector multiplication. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicMult + * @{ + */ + +/** + * @brief Q31 vector multiplication. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated. + */ + +void arm_mult_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counters */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + /* loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A * B */ + /* Multiply the inputs and then store the results in the destination buffer. */ + *pDst++ = + (q31_t) clip_q63_to_q31(((q63_t) (*pSrcA++) * (*pSrcB++)) >> 31); + *pDst++ = + (q31_t) clip_q63_to_q31(((q63_t) (*pSrcA++) * (*pSrcB++)) >> 31); + *pDst++ = + (q31_t) clip_q63_to_q31(((q63_t) (*pSrcA++) * (*pSrcB++)) >> 31); + *pDst++ = + (q31_t) clip_q63_to_q31(((q63_t) (*pSrcA++) * (*pSrcB++)) >> 31); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = A * B */ + /* Multiply the inputs and then store the results in the destination buffer. */ + *pDst++ = + (q31_t) clip_q63_to_q31(((q63_t) (*pSrcA++) * (*pSrcB++)) >> 31); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicMult group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q7.c new file mode 100644 index 000000000..285fc04af --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q7.c @@ -0,0 +1,125 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mult_q7.c +* +* Description: Q7 vector multiplication. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 DP +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicMult + * @{ + */ + +/** + * @brief Q7 vector multiplication + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated. + */ + +void arm_mult_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counters */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q7_t out1, out2, out3, out4; /* Temporary variables to store the product */ + + /* loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A * B */ + /* Multiply the inputs and store the results in temporary variables */ + out1 = (q7_t) (((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7); + out2 = (q7_t) (((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7); + out3 = (q7_t) (((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7); + out4 = (q7_t) (((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7); + + /* Store the results of 4 inputs in the destination buffer in single cycle by packing */ + *__SIMD32(pDst)++ = __PACKq7(out1, out2, out3, out4); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + + while(blkCnt > 0u) + { + /* C = A * B */ + /* Multiply the inputs and store the result in the destination buffer */ + *pDst++ = (q7_t) (((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicMult group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_f32.c new file mode 100644 index 000000000..13deaa919 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_f32.c @@ -0,0 +1,117 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_negate_f32.c +* +* Description: Negates floating-point vectors. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @defgroup negate Vector Negate + * + * Negates the elements of a vector. + * + *
   
+ *     pDst[n] = -pSrc[n],   0 <= n < blockSize.   
+ * 
+ */ + +/** + * @addtogroup negate + * @{ + */ + +/** + * @brief Negates the elements of a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + +void arm_negate_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = -A */ + /* Negate and then store the results in the destination buffer. */ + *pDst++ = -*pSrc++; + *pDst++ = -*pSrc++; + *pDst++ = -*pSrc++; + *pDst++ = -*pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = -A */ + /* Negate and then store the results in the destination buffer. */ + *pDst++ = -*pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of negate group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q15.c new file mode 100644 index 000000000..705143191 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q15.c @@ -0,0 +1,140 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_negate_q15.c +* +* Description: Negates Q15 vectors. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup negate + * @{ + */ + +/** + * @brief Negates the elements of a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * The Q15 value -1 (0x8000) will be saturated to the maximum allowable positive value 0x7FFF. + */ + +void arm_negate_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t in1, in2; /* Temporary variables */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = -A */ + /* Read two inputs */ + in1 = *pSrc++; + in2 = *pSrc++; + /* Negate and then store the results in the destination buffer by packing. */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = __PKHBT(__SSAT(-in1, 16), __SSAT(-in2, 16), 16); + +#else + + *__SIMD32(pDst)++ = __PKHBT(__SSAT(-in2, 16), __SSAT(-in1, 16), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + in1 = *pSrc++; + in2 = *pSrc++; + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = __PKHBT(__SSAT(-in1, 16), __SSAT(-in2, 16), 16); + +#else + + + *__SIMD32(pDst)++ = __PKHBT(__SSAT(-in2, 16), __SSAT(-in1, 16), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = -A */ + /* Negate and then store the result in the destination buffer. */ + *pDst++ = __SSAT(-*pSrc++, 16); + + /* Decrement the loop counter */ + blkCnt--; + } + +} + +/** + * @} end of negate group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q31.c new file mode 100644 index 000000000..c917a84df --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q31.c @@ -0,0 +1,119 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_negate_q31.c +* +* Description: Negates Q31 vectors. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup negate + * @{ + */ + +/** + * @brief Negates the elements of a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * The Q31 value -1 (0x80000000) will be saturated to the maximum allowable positive value 0x7FFFFFFF. + */ + +void arm_negate_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t in; /* Temporary variable */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = -A */ + /* Negate and then store the results in the destination buffer. */ + in = *pSrc++; + *pDst++ = (in == 0x80000000) ? 0x7fffffff : -in; + in = *pSrc++; + *pDst++ = (in == 0x80000000) ? 0x7fffffff : -in; + in = *pSrc++; + *pDst++ = (in == 0x80000000) ? 0x7fffffff : -in; + in = *pSrc++; + *pDst++ = (in == 0x80000000) ? 0x7fffffff : -in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + + while(blkCnt > 0u) + { + /* C = -A */ + /* Negate and then store the result in the destination buffer. */ + in = *pSrc++; + *pDst++ = (in == 0x80000000) ? 0x7fffffff : -in; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of negate group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q7.c new file mode 100644 index 000000000..ec991bd45 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q7.c @@ -0,0 +1,122 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_negate_q7.c +* +* Description: Negates Q7 vectors. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup negate + * @{ + */ + +/** + * @brief Negates the elements of a Q7 vector. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * The Q7 value -1 (0x80) will be saturated to the maximum allowable positive value 0x7F. + */ + +void arm_negate_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q7_t in1; /* Input value1 */ + q7_t in2; /* Input value2 */ + q7_t in3; /* Input value3 */ + q7_t in4; /* Input value4 */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = -A */ + /* Read four inputs */ + in1 = *pSrc++; + in2 = *pSrc++; + in3 = *pSrc++; + in4 = *pSrc++; + + /* Store the Negated results in the destination buffer in a single cycle by packing the results */ + *__SIMD32(pDst)++ = + __PACKq7(__SSAT(-in1, 8), __SSAT(-in2, 8), __SSAT(-in3, 8), + __SSAT(-in4, 8)); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = -A */ + /* Negate and then store the results in the destination buffer. */ + *pDst++ = __SSAT(-*pSrc++, 8); + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of negate group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_f32.c new file mode 100644 index 000000000..4fcbbbe94 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_f32.c @@ -0,0 +1,122 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_offset_f32.c +* +* Description: Floating-point vector offset. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @defgroup offset Vector Offset + * + * Adds a constant offset to each element of a vector. + * + *
   
+ *     pDst[n] = pSrc[n] + offset,   0 <= n < blockSize.   
+ * 
+ * + * There are separate functions for floating-point, Q7, Q15, and Q31 data types. + */ + +/** + * @addtogroup offset + * @{ + */ + +/** + * @brief Adds a constant offset to a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + +void arm_offset_f32( + float32_t * pSrc, + float32_t offset, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A + offset */ + /* Add offset and then store the results in the destination buffer. */ + *pDst++ = (*pSrc++) + offset; + *pDst++ = (*pSrc++) + offset; + *pDst++ = (*pSrc++) + offset; + *pDst++ = (*pSrc++) + offset; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = A + offset */ + /* Add offset and then store the result in the destination buffer. */ + *pDst++ = (*pSrc++) + offset; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of offset group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q15.c new file mode 100644 index 000000000..a6eaa86ed --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q15.c @@ -0,0 +1,128 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_offset_q15.c +* +* Description: Q15 vector offset. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup offset + * @{ + */ + +/** + * @brief Adds a constant offset to a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q15 range [0x8000 0x7FFF] are saturated. + */ + +void arm_offset_q15( + q15_t * pSrc, + q15_t offset, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t offset_packed; /* Offset packed to 32 bit */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* Offset is packed to 32 bit in order to use SIMD32 for addition */ + offset_packed = __PKHBT(offset, offset, 16); + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A + offset */ + /* Add offset and then store the results in the destination buffer, 2 samples at a time. */ + *__SIMD32(pDst)++ = __QADD16(*__SIMD32(pSrc)++, offset_packed); + *__SIMD32(pDst)++ = __QADD16(*__SIMD32(pSrc)++, offset_packed); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = A + offset */ + /* Add offset and then store the results in the destination buffer. */ + *pDst++ = (q15_t) __QADD16(*pSrc++, offset); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = A + offset */ + /* Add offset and then store the results in the destination buffer. */ + *pDst++ = (q15_t) __SSAT(((q31_t) * pSrc++ + offset), 16); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of offset group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q31.c new file mode 100644 index 000000000..dab3a774f --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q31.c @@ -0,0 +1,126 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_offset_q31.c +* +* Description: Q31 vector offset. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup offset + * @{ + */ + +/** + * @brief Adds a constant offset to a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] are saturated. + */ + +void arm_offset_q31( + q31_t * pSrc, + q31_t offset, + q31_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A + offset */ + /* Add offset and then store the results in the destination buffer. */ + *pDst++ = __QADD(*pSrc++, offset); + *pDst++ = __QADD(*pSrc++, offset); + *pDst++ = __QADD(*pSrc++, offset); + *pDst++ = __QADD(*pSrc++, offset); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = A + offset */ + /* Add offset and then store the result in the destination buffer. */ + *pDst++ = __QADD(*pSrc++, offset); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = A + offset */ + /* Add offset and then store the result in the destination buffer. */ + *pDst++ = (q31_t) clip_q63_to_q31((q63_t) * pSrc++ + offset); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of offset group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q7.c new file mode 100644 index 000000000..8ed8ddd7f --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q7.c @@ -0,0 +1,127 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_offset_q7.c +* +* Description: Q7 vector offset. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup offset + * @{ + */ + +/** + * @brief Adds a constant offset to a Q7 vector. + * @param[in] *pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q7 range [0x80 0x7F] are saturated. + */ + +void arm_offset_q7( + q7_t * pSrc, + q7_t offset, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t offset_packed; /* Offset packed to 32 bit */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* Offset is packed to 32 bit in order to use SIMD32 for addition */ + offset_packed = __PACKq7(offset, offset, offset, offset); + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A + offset */ + /* Add offset and then store the results in the destination bufferfor 4 samples at a time. */ + *__SIMD32(pDst)++ = __QADD8(*__SIMD32(pSrc)++, offset_packed); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = A + offset */ + /* Add offset and then store the result in the destination buffer. */ + *pDst++ = (q7_t) __SSAT(*pSrc++ + offset, 8); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = A + offset */ + /* Add offset and then store the result in the destination buffer. */ + *pDst++ = (q7_t) __SSAT((q15_t) * pSrc++ + offset, 8); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of offset group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_f32.c new file mode 100644 index 000000000..f51f78e84 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_f32.c @@ -0,0 +1,133 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_scale_f32.c +* +* Description: Multiplies a floating-point vector by a scalar. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @defgroup scale Vector Scale + * + * Multiply a vector by a scalar value. For floating-point data, the algorithm used is: + * + *
   
+ *     pDst[n] = pSrc[n] * scale,   0 <= n < blockSize.   
+ * 
+ * + * In the fixed-point Q7, Q15, and Q31 functions, scale is represented by + * a fractional multiplication scaleFract and an arithmetic shift shift. + * The shift allows the gain of the scaling operation to exceed 1.0. + * The algorithm used with fixed-point data is: + * + *
   
+ *     pDst[n] = (pSrc[n] * scaleFract) << shift,   0 <= n < blockSize.   
+ * 
+ * + * The overall scale factor applied to the fixed-point data is + *
   
+ *     scale = scaleFract * 2^shift.   
+ * 
+ */ + +/** + * @addtogroup scale + * @{ + */ + +/** + * @brief Multiplies a floating-point vector by a scalar. + * @param[in] *pSrc points to the input vector + * @param[in] scale scale factor to be applied + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + +void arm_scale_f32( + float32_t * pSrc, + float32_t scale, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A * scale */ + /* Scale the input and then store the results in the destination buffer. */ + *pDst++ = (*pSrc++) * scale; + *pDst++ = (*pSrc++) * scale; + *pDst++ = (*pSrc++) * scale; + *pDst++ = (*pSrc++) * scale; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = A * scale */ + /* Scale the input and then store the result in the destination buffer. */ + *pDst++ = (*pSrc++) * scale; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of scale group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q15.c new file mode 100644 index 000000000..5e4615f31 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q15.c @@ -0,0 +1,162 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_scale_q15.c +* +* Description: Multiplies a Q15 vector by a scalar. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup scale + * @{ + */ + +/** + * @brief Multiplies a Q15 vector by a scalar. + * @param[in] *pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The input data *pSrc and scaleFract are in 1.15 format. + * These are multiplied to yield a 2.30 intermediate result and this is shifted with saturation to 1.15 format. + */ + + +void arm_scale_q15( + q15_t * pSrc, + q15_t scaleFract, + int8_t shift, + q15_t * pDst, + uint32_t blockSize) +{ + int8_t kShift = 15 - shift; /* shift to apply after scaling */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t in1, in2; /* Temporary variables */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* Reading 2 inputs from memory */ + in1 = *pSrc++; + in2 = *pSrc++; + /* C = A * scale */ + /* Scale the inputs and then store the 2 results in the destination buffer + * in single cycle by packing the outputs */ +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((in1 * scaleFract) >> kShift, 16), + __SSAT((in2 * scaleFract) >> kShift, 16), 16); + +#else + + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((in2 * scaleFract) >> kShift, 16), + __SSAT((in1 * scaleFract) >> kShift, 16), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + in1 = *pSrc++; + in2 = *pSrc++; + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((in1 * scaleFract) >> kShift, 16), + __SSAT((in2 * scaleFract) >> kShift, 16), 16); + +#else + + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((in2 * scaleFract) >> kShift, 16), + __SSAT((in1 * scaleFract) >> kShift, 16), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = A * scale */ + /* Scale the input and then store the result in the destination buffer. */ + *pDst++ = (q15_t) (__SSAT(((*pSrc++) * scaleFract) >> kShift, 16)); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = A * scale */ + /* Scale the input and then store the result in the destination buffer. */ + *pDst++ = (q15_t) (__SSAT(((q31_t) * pSrc++ * scaleFract) >> kShift, 16)); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of scale group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q31.c new file mode 100644 index 000000000..1b2b7de7f --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q31.c @@ -0,0 +1,117 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_scale_q31.c +* +* Description: Multiplies a Q31 vector by a scalar. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup scale + * @{ + */ + +/** + * @brief Multiplies a Q31 vector by a scalar. + * @param[in] *pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The input data *pSrc and scaleFract are in 1.31 format. + * These are multiplied to yield a 2.62 intermediate result and this is shifted with saturation to 1.31 format. + */ + +void arm_scale_q31( + q31_t * pSrc, + q31_t scaleFract, + int8_t shift, + q31_t * pDst, + uint32_t blockSize) +{ + int8_t kShift = 31 - shift; /* Shift to apply after scaling */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A * scale */ + /* Scale the input and then store the results in the destination buffer. */ + *pDst++ = clip_q63_to_q31(((q63_t) * pSrc++ * scaleFract) >> kShift); + *pDst++ = clip_q63_to_q31(((q63_t) * pSrc++ * scaleFract) >> kShift); + *pDst++ = clip_q63_to_q31(((q63_t) * pSrc++ * scaleFract) >> kShift); + *pDst++ = clip_q63_to_q31(((q63_t) * pSrc++ * scaleFract) >> kShift); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = A * scale */ + /* Scale the input and then store the result in the destination buffer. */ + *pDst++ = clip_q63_to_q31(((q63_t) * pSrc++ * scaleFract) >> kShift); + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of scale group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q7.c new file mode 100644 index 000000000..f058b0e9c --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q7.c @@ -0,0 +1,141 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_scale_q7.c +* +* Description: Multiplies a Q7 vector by a scalar. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup scale + * @{ + */ + +/** + * @brief Multiplies a Q7 vector by a scalar. + * @param[in] *pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The input data *pSrc and scaleFract are in 1.7 format. + * These are multiplied to yield a 2.14 intermediate result and this is shifted with saturation to 1.7 format. + */ + +void arm_scale_q7( + q7_t * pSrc, + q7_t scaleFract, + int8_t shift, + q7_t * pDst, + uint32_t blockSize) +{ + int8_t kShift = 7 - shift; /* shift to apply after scaling */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q7_t in1, in2, in3, in4, out1, out2, out3, out4; /* Temporary variables to store input & output */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* Reading 4 inputs from memory */ + in1 = *pSrc++; + in2 = *pSrc++; + in3 = *pSrc++; + in4 = *pSrc++; + + /* C = A * scale */ + /* Scale the inputs and then store the results in the temporary variables. */ + out1 = (q7_t) (__SSAT(((in1) * scaleFract) >> kShift, 8)); + out2 = (q7_t) (__SSAT(((in2) * scaleFract) >> kShift, 8)); + out3 = (q7_t) (__SSAT(((in3) * scaleFract) >> kShift, 8)); + out4 = (q7_t) (__SSAT(((in4) * scaleFract) >> kShift, 8)); + + /* Packing the individual outputs into 32bit and storing in + * destination buffer in single write */ + *__SIMD32(pDst)++ = __PACKq7(out1, out2, out3, out4); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = A * scale */ + /* Scale the input and then store the result in the destination buffer. */ + *pDst++ = (q7_t) (__SSAT(((*pSrc++) * scaleFract) >> kShift, 8)); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = A * scale */ + /* Scale the input and then store the result in the destination buffer. */ + *pDst++ = (q7_t) (__SSAT((((q15_t) * pSrc++ * scaleFract) >> kShift), 8)); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of scale group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q15.c new file mode 100644 index 000000000..70a80c2f7 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q15.c @@ -0,0 +1,239 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_shift_q15.c +* +* Description: Shifts the elements of a Q15 vector by a specified number of bits. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup shift + * @{ + */ + +/** + * @brief Shifts the elements of a Q15 vector a specified number of bits. + * @param[in] *pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. + */ + +void arm_shift_q15( + q15_t * pSrc, + int8_t shiftBits, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + uint8_t sign; /* Sign of shiftBits */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t in1, in2; /* Temporary variables */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* Getting the sign of shiftBits */ + sign = (shiftBits & 0x80); + + /* If the shift value is positive then do right shift else left shift */ + if(sign == 0u) + { + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* Read 2 inputs */ + in1 = *pSrc++; + in2 = *pSrc++; + /* C = A << shiftBits */ + /* Shift the inputs and then store the results in the destination buffer. */ +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = __PKHBT(__SSAT((in1 << shiftBits), 16), + __SSAT((in2 << shiftBits), 16), 16); + +#else + + *__SIMD32(pDst)++ = __PKHBT(__SSAT((in2 << shiftBits), 16), + __SSAT((in1 << shiftBits), 16), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + in1 = *pSrc++; + in2 = *pSrc++; + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = __PKHBT(__SSAT((in1 << shiftBits), 16), + __SSAT((in2 << shiftBits), 16), 16); + +#else + + *__SIMD32(pDst)++ = __PKHBT(__SSAT((in2 << shiftBits), 16), + __SSAT((in1 << shiftBits), 16), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = A << shiftBits */ + /* Shift and then store the results in the destination buffer. */ + *pDst++ = __SSAT((*pSrc++ << shiftBits), 16); + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* Read 2 inputs */ + in1 = *pSrc++; + in2 = *pSrc++; + /* C = A >> shiftBits */ + /* Shift the inputs and then store the results in the destination buffer. */ +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = __PKHBT((in1 >> -shiftBits), + (in2 >> -shiftBits), 16); + +#else + + *__SIMD32(pDst)++ = __PKHBT((in2 >> -shiftBits), + (in1 >> -shiftBits), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + in1 = *pSrc++; + in2 = *pSrc++; + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = __PKHBT((in1 >> -shiftBits), + (in2 >> -shiftBits), 16); + +#else + + *__SIMD32(pDst)++ = __PKHBT((in2 >> -shiftBits), + (in1 >> -shiftBits), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = A >> shiftBits */ + /* Shift the inputs and then store the results in the destination buffer. */ + *pDst++ = (*pSrc++ >> -shiftBits); + + /* Decrement the loop counter */ + blkCnt--; + } + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Getting the sign of shiftBits */ + sign = (shiftBits & 0x80); + + /* If the shift value is positive then do right shift else left shift */ + if(sign == 0u) + { + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = A << shiftBits */ + /* Shift and then store the results in the destination buffer. */ + *pDst++ = __SSAT(((q31_t) * pSrc++ << shiftBits), 16); + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = A >> shiftBits */ + /* Shift the inputs and then store the results in the destination buffer. */ + *pDst++ = (*pSrc++ >> -shiftBits); + + /* Decrement the loop counter */ + blkCnt--; + } + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of shift group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q31.c new file mode 100644 index 000000000..81f45bd1a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q31.c @@ -0,0 +1,141 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_shift_q31.c +* +* Description: Shifts the elements of a Q31 vector by a specified number of bits. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ +/** + * @defgroup shift Vector Shift + * + * Shifts the elements of a fixed-point vector by a specified number of bits. + * There are separate functions for Q7, Q15, and Q31 data types. + * The underlying algorithm used is: + * + *
   
+ *     pDst[n] = pSrc[n] << shift,   0 <= n < blockSize.   
+ * 
+ * + * If shift is positive then the elements of the vector are shifted to the left. + * If shift is negative then the elements of the vector are shifted to the right. + */ + +/** + * @addtogroup shift + * @{ + */ + +/** + * @brief Shifts the elements of a Q31 vector a specified number of bits. + * @param[in] *pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated. + */ + +void arm_shift_q31( + q31_t * pSrc, + int8_t shiftBits, + q31_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + uint8_t sign; /* Sign of shiftBits */ + /* Getting the sign of shiftBits */ + sign = (shiftBits & 0x80); + + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A (>> or <<) shiftBits */ + /* Shift the input and then store the results in the destination buffer. */ + *pDst++ = (sign == 0u) ? clip_q63_to_q31((q63_t) * pSrc++ << shiftBits) : + (*pSrc++ >> -shiftBits); + *pDst++ = (sign == 0u) ? clip_q63_to_q31((q63_t) * pSrc++ << shiftBits) : + (*pSrc++ >> -shiftBits); + *pDst++ = (sign == 0u) ? clip_q63_to_q31((q63_t) * pSrc++ << shiftBits) : + (*pSrc++ >> -shiftBits); + *pDst++ = (sign == 0u) ? clip_q63_to_q31((q63_t) * pSrc++ << shiftBits) : + (*pSrc++ >> -shiftBits); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + + while(blkCnt > 0u) + { + /* C = A (>> or <<) shiftBits */ + /* Shift the input and then store the result in the destination buffer. */ + *pDst++ = (sign == 0u) ? clip_q63_to_q31((q63_t) * pSrc++ << shiftBits) : + (*pSrc++ >> -shiftBits); + + /* Decrement the loop counter */ + blkCnt--; + } + +} + +/** + * @} end of shift group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q7.c new file mode 100644 index 000000000..cf13ef3ab --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q7.c @@ -0,0 +1,202 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_shift_q7.c +* +* Description: Processing function for the Q7 Shifting +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup shift + * @{ + */ + + +/** + * @brief Shifts the elements of a Q7 vector a specified number of bits. + * @param[in] *pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q7 range [0x8 0x7F] will be saturated. + */ + +void arm_shift_q7( + q7_t * pSrc, + int8_t shiftBits, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + uint8_t sign; /* Sign of shiftBits */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q7_t in1; /* Input value1 */ + q7_t in2; /* Input value2 */ + q7_t in3; /* Input value3 */ + q7_t in4; /* Input value4 */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* Getting the sign of shiftBits */ + sign = (shiftBits & 0x80); + + /* If the shift value is positive then do right shift else left shift */ + if(sign == 0u) + { + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A << shiftBits */ + /* Read 4 inputs */ + in1 = *pSrc++; + in2 = *pSrc++; + in3 = *pSrc++; + in4 = *pSrc++; + + /* Store the Shifted result in the destination buffer in single cycle by packing the outputs */ + *__SIMD32(pDst)++ = __PACKq7(__SSAT((in1 << shiftBits), 8), + __SSAT((in2 << shiftBits), 8), + __SSAT((in3 << shiftBits), 8), + __SSAT((in4 << shiftBits), 8)); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = A << shiftBits */ + /* Shift the input and then store the result in the destination buffer. */ + *pDst++ = (q7_t) __SSAT((*pSrc++ << shiftBits), 8); + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A >> shiftBits */ + /* Read 4 inputs */ + in1 = *pSrc++; + in2 = *pSrc++; + in3 = *pSrc++; + in4 = *pSrc++; + + /* Store the Shifted result in the destination buffer in single cycle by packing the outputs */ + *__SIMD32(pDst)++ = __PACKq7((in1 >> -shiftBits), (in2 >> -shiftBits), + (in3 >> -shiftBits), (in4 >> -shiftBits)); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = A >> shiftBits */ + /* Shift the input and then store the result in the destination buffer. */ + *pDst++ = (*pSrc++ >> -shiftBits); + + /* Decrement the loop counter */ + blkCnt--; + } + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Getting the sign of shiftBits */ + sign = (shiftBits & 0x80); + + /* If the shift value is positive then do right shift else left shift */ + if(sign == 0u) + { + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = A << shiftBits */ + /* Shift the input and then store the result in the destination buffer. */ + *pDst++ = (q7_t) __SSAT(((q15_t) * pSrc++ << shiftBits), 8); + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = A >> shiftBits */ + /* Shift the input and then store the result in the destination buffer. */ + *pDst++ = (*pSrc++ >> -shiftBits); + + /* Decrement the loop counter */ + blkCnt--; + } + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of shift group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_f32.c new file mode 100644 index 000000000..3ec5c7431 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_f32.c @@ -0,0 +1,122 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_sub_f32.c +* +* Description: Floating-point vector subtraction. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @defgroup BasicSub Vector Subtraction + * + * Element-by-element subtraction of two vectors. + * + *
   
+ *     pDst[n] = pSrcA[n] - pSrcB[n],   0 <= n < blockSize.   
+ * 
+ * + * There are separate functions for floating-point, Q7, Q15, and Q31 data types. + */ + +/** + * @addtogroup BasicSub + * @{ + */ + + +/** + * @brief Floating-point vector subtraction. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + +void arm_sub_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A - B */ + /* Subtract and then store the results in the destination buffer. */ + *pDst++ = (*pSrcA++) - (*pSrcB++); + *pDst++ = (*pSrcA++) - (*pSrcB++); + *pDst++ = (*pSrcA++) - (*pSrcB++); + *pDst++ = (*pSrcA++) - (*pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + + while(blkCnt > 0u) + { + /* C = A - B */ + /* Subtract and then store the results in the destination buffer. */ + *pDst++ = (*pSrcA++) - (*pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicSub group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q15.c new file mode 100644 index 000000000..6d170e25d --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q15.c @@ -0,0 +1,124 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_sub_q15.c +* +* Description: Q15 vector subtraction. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicSub + * @{ + */ + +/** + * @brief Q15 vector subtraction. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. + */ + +void arm_sub_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A - B */ + /* Subtract and then store the results in the destination buffer two samples at a time. */ + *__SIMD32(pDst)++ = __QSUB16(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++); + *__SIMD32(pDst)++ = __QSUB16(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = A - B */ + /* Subtract and then store the result in the destination buffer. */ + *pDst++ = (q15_t) __QSUB16(*pSrcA++, *pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = A - B */ + /* Subtract and then store the result in the destination buffer. */ + *pDst++ = (q15_t) __SSAT(((q31_t) * pSrcA++ - *pSrcB++), 16); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + +} + +/** + * @} end of BasicSub group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q31.c new file mode 100644 index 000000000..489a28f3a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q31.c @@ -0,0 +1,125 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_sub_q31.c +* +* Description: Q31 vector subtraction. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicSub + * @{ + */ + +/** + * @brief Q31 vector subtraction. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated. + */ + +void arm_sub_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A - B */ + /* Subtract and then store the results in the destination buffer. */ + *pDst++ = __QSUB(*pSrcA++, *pSrcB++); + *pDst++ = __QSUB(*pSrcA++, *pSrcB++); + *pDst++ = __QSUB(*pSrcA++, *pSrcB++); + *pDst++ = __QSUB(*pSrcA++, *pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = A - B */ + /* Subtract and then store the result in the destination buffer. */ + *pDst++ = __QSUB(*pSrcA++, *pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = A - B */ + /* Subtract and then store the result in the destination buffer. */ + *pDst++ = (q31_t) clip_q63_to_q31((q63_t) * pSrcA++ - *pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of BasicSub group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q7.c new file mode 100644 index 000000000..f1bb2c6fa --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q7.c @@ -0,0 +1,123 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_sub_q7.c +* +* Description: Q7 vector subtraction. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicSub + * @{ + */ + +/** + * @brief Q7 vector subtraction. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated. + */ + +void arm_sub_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A - B */ + /* Subtract and then store the results in the destination buffer 4 samples at a time. */ + *__SIMD32(pDst)++ = __QSUB8(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = A - B */ + /* Subtract and then store the result in the destination buffer. */ + *pDst++ = __SSAT(*pSrcA++ - *pSrcB++, 8); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = A - B */ + /* Subtract and then store the result in the destination buffer. */ + *pDst++ = (q7_t) __SSAT((q15_t) * pSrcA++ - *pSrcB++, 8); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + +} + +/** + * @} end of BasicSub group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/CommonTables/arm_common_tables.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/CommonTables/arm_common_tables.c new file mode 100644 index 000000000..619315848 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/CommonTables/arm_common_tables.c @@ -0,0 +1,257 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2011 ARM Limited. All rights reserved. +* +* $Date: 17. August 2011 +* $Revision: V1.0.11 +* +* Project: CMSIS DSP Library +* Title: arm_common_tables.c +* +* Description: This file has common tables like Bitreverse, reciprocal etc which are used across different functions +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.11 2011/08/17 +* Updated Bit Reversal table to support 4096 CFFT length. +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + + +#include "arm_math.h" + +/** + * @ingroup groupTransforms + */ + +/** + * @addtogroup CFFT_CIFFT + * @{ + */ + +/** +* \par +* Pseudo code for Generation of Bit reversal Table is +* \par +*
for(l=1;l <= N/4;l++)   
+* {   
+*   for(i=0;i> 1;   
+*  } 
+* \par +* where N = 1024 logN2 = 10 +* \par +* N is the maximum FFT Size supported +*/ + +/* +* @brief Table for bit reversal process +*/ +uint16_t armBitRevTable[1024] = { + 0x400, 0x200, 0x600, 0x100, 0x500, 0x300, 0x700, +0x80, 0x480, 0x280, 0x680, 0x180, 0x580, 0x380, +0x780, 0x40, 0x440, 0x240, 0x640, 0x140, 0x540, +0x340, 0x740, 0xc0, 0x4c0, 0x2c0, 0x6c0, 0x1c0, +0x5c0, 0x3c0, 0x7c0, 0x20, 0x420, 0x220, 0x620, +0x120, 0x520, 0x320, 0x720, 0xa0, 0x4a0, 0x2a0, +0x6a0, 0x1a0, 0x5a0, 0x3a0, 0x7a0, 0x60, 0x460, +0x260, 0x660, 0x160, 0x560, 0x360, 0x760, 0xe0, +0x4e0, 0x2e0, 0x6e0, 0x1e0, 0x5e0, 0x3e0, 0x7e0, +0x10, 0x410, 0x210, 0x610, 0x110, 0x510, 0x310, +0x710, 0x90, 0x490, 0x290, 0x690, 0x190, 0x590, +0x390, 0x790, 0x50, 0x450, 0x250, 0x650, 0x150, +0x550, 0x350, 0x750, 0xd0, 0x4d0, 0x2d0, 0x6d0, +0x1d0, 0x5d0, 0x3d0, 0x7d0, 0x30, 0x430, 0x230, +0x630, 0x130, 0x530, 0x330, 0x730, 0xb0, 0x4b0, +0x2b0, 0x6b0, 0x1b0, 0x5b0, 0x3b0, 0x7b0, 0x70, +0x470, 0x270, 0x670, 0x170, 0x570, 0x370, 0x770, +0xf0, 0x4f0, 0x2f0, 0x6f0, 0x1f0, 0x5f0, 0x3f0, +0x7f0, 0x8, 0x408, 0x208, 0x608, 0x108, 0x508, +0x308, 0x708, 0x88, 0x488, 0x288, 0x688, 0x188, +0x588, 0x388, 0x788, 0x48, 0x448, 0x248, 0x648, +0x148, 0x548, 0x348, 0x748, 0xc8, 0x4c8, 0x2c8, +0x6c8, 0x1c8, 0x5c8, 0x3c8, 0x7c8, 0x28, 0x428, +0x228, 0x628, 0x128, 0x528, 0x328, 0x728, 0xa8, +0x4a8, 0x2a8, 0x6a8, 0x1a8, 0x5a8, 0x3a8, 0x7a8, +0x68, 0x468, 0x268, 0x668, 0x168, 0x568, 0x368, +0x768, 0xe8, 0x4e8, 0x2e8, 0x6e8, 0x1e8, 0x5e8, +0x3e8, 0x7e8, 0x18, 0x418, 0x218, 0x618, 0x118, +0x518, 0x318, 0x718, 0x98, 0x498, 0x298, 0x698, +0x198, 0x598, 0x398, 0x798, 0x58, 0x458, 0x258, +0x658, 0x158, 0x558, 0x358, 0x758, 0xd8, 0x4d8, +0x2d8, 0x6d8, 0x1d8, 0x5d8, 0x3d8, 0x7d8, 0x38, +0x438, 0x238, 0x638, 0x138, 0x538, 0x338, 0x738, +0xb8, 0x4b8, 0x2b8, 0x6b8, 0x1b8, 0x5b8, 0x3b8, +0x7b8, 0x78, 0x478, 0x278, 0x678, 0x178, 0x578, +0x378, 0x778, 0xf8, 0x4f8, 0x2f8, 0x6f8, 0x1f8, +0x5f8, 0x3f8, 0x7f8, 0x4, 0x404, 0x204, 0x604, +0x104, 0x504, 0x304, 0x704, 0x84, 0x484, 0x284, +0x684, 0x184, 0x584, 0x384, 0x784, 0x44, 0x444, +0x244, 0x644, 0x144, 0x544, 0x344, 0x744, 0xc4, +0x4c4, 0x2c4, 0x6c4, 0x1c4, 0x5c4, 0x3c4, 0x7c4, +0x24, 0x424, 0x224, 0x624, 0x124, 0x524, 0x324, +0x724, 0xa4, 0x4a4, 0x2a4, 0x6a4, 0x1a4, 0x5a4, +0x3a4, 0x7a4, 0x64, 0x464, 0x264, 0x664, 0x164, +0x564, 0x364, 0x764, 0xe4, 0x4e4, 0x2e4, 0x6e4, +0x1e4, 0x5e4, 0x3e4, 0x7e4, 0x14, 0x414, 0x214, +0x614, 0x114, 0x514, 0x314, 0x714, 0x94, 0x494, +0x294, 0x694, 0x194, 0x594, 0x394, 0x794, 0x54, +0x454, 0x254, 0x654, 0x154, 0x554, 0x354, 0x754, +0xd4, 0x4d4, 0x2d4, 0x6d4, 0x1d4, 0x5d4, 0x3d4, +0x7d4, 0x34, 0x434, 0x234, 0x634, 0x134, 0x534, +0x334, 0x734, 0xb4, 0x4b4, 0x2b4, 0x6b4, 0x1b4, +0x5b4, 0x3b4, 0x7b4, 0x74, 0x474, 0x274, 0x674, +0x174, 0x574, 0x374, 0x774, 0xf4, 0x4f4, 0x2f4, +0x6f4, 0x1f4, 0x5f4, 0x3f4, 0x7f4, 0xc, 0x40c, +0x20c, 0x60c, 0x10c, 0x50c, 0x30c, 0x70c, 0x8c, +0x48c, 0x28c, 0x68c, 0x18c, 0x58c, 0x38c, 0x78c, +0x4c, 0x44c, 0x24c, 0x64c, 0x14c, 0x54c, 0x34c, +0x74c, 0xcc, 0x4cc, 0x2cc, 0x6cc, 0x1cc, 0x5cc, +0x3cc, 0x7cc, 0x2c, 0x42c, 0x22c, 0x62c, 0x12c, +0x52c, 0x32c, 0x72c, 0xac, 0x4ac, 0x2ac, 0x6ac, +0x1ac, 0x5ac, 0x3ac, 0x7ac, 0x6c, 0x46c, 0x26c, +0x66c, 0x16c, 0x56c, 0x36c, 0x76c, 0xec, 0x4ec, +0x2ec, 0x6ec, 0x1ec, 0x5ec, 0x3ec, 0x7ec, 0x1c, +0x41c, 0x21c, 0x61c, 0x11c, 0x51c, 0x31c, 0x71c, +0x9c, 0x49c, 0x29c, 0x69c, 0x19c, 0x59c, 0x39c, +0x79c, 0x5c, 0x45c, 0x25c, 0x65c, 0x15c, 0x55c, +0x35c, 0x75c, 0xdc, 0x4dc, 0x2dc, 0x6dc, 0x1dc, +0x5dc, 0x3dc, 0x7dc, 0x3c, 0x43c, 0x23c, 0x63c, +0x13c, 0x53c, 0x33c, 0x73c, 0xbc, 0x4bc, 0x2bc, +0x6bc, 0x1bc, 0x5bc, 0x3bc, 0x7bc, 0x7c, 0x47c, +0x27c, 0x67c, 0x17c, 0x57c, 0x37c, 0x77c, 0xfc, +0x4fc, 0x2fc, 0x6fc, 0x1fc, 0x5fc, 0x3fc, 0x7fc, +0x2, 0x402, 0x202, 0x602, 0x102, 0x502, 0x302, +0x702, 0x82, 0x482, 0x282, 0x682, 0x182, 0x582, +0x382, 0x782, 0x42, 0x442, 0x242, 0x642, 0x142, +0x542, 0x342, 0x742, 0xc2, 0x4c2, 0x2c2, 0x6c2, +0x1c2, 0x5c2, 0x3c2, 0x7c2, 0x22, 0x422, 0x222, +0x622, 0x122, 0x522, 0x322, 0x722, 0xa2, 0x4a2, +0x2a2, 0x6a2, 0x1a2, 0x5a2, 0x3a2, 0x7a2, 0x62, +0x462, 0x262, 0x662, 0x162, 0x562, 0x362, 0x762, +0xe2, 0x4e2, 0x2e2, 0x6e2, 0x1e2, 0x5e2, 0x3e2, +0x7e2, 0x12, 0x412, 0x212, 0x612, 0x112, 0x512, +0x312, 0x712, 0x92, 0x492, 0x292, 0x692, 0x192, +0x592, 0x392, 0x792, 0x52, 0x452, 0x252, 0x652, +0x152, 0x552, 0x352, 0x752, 0xd2, 0x4d2, 0x2d2, +0x6d2, 0x1d2, 0x5d2, 0x3d2, 0x7d2, 0x32, 0x432, +0x232, 0x632, 0x132, 0x532, 0x332, 0x732, 0xb2, +0x4b2, 0x2b2, 0x6b2, 0x1b2, 0x5b2, 0x3b2, 0x7b2, +0x72, 0x472, 0x272, 0x672, 0x172, 0x572, 0x372, +0x772, 0xf2, 0x4f2, 0x2f2, 0x6f2, 0x1f2, 0x5f2, +0x3f2, 0x7f2, 0xa, 0x40a, 0x20a, 0x60a, 0x10a, +0x50a, 0x30a, 0x70a, 0x8a, 0x48a, 0x28a, 0x68a, +0x18a, 0x58a, 0x38a, 0x78a, 0x4a, 0x44a, 0x24a, +0x64a, 0x14a, 0x54a, 0x34a, 0x74a, 0xca, 0x4ca, +0x2ca, 0x6ca, 0x1ca, 0x5ca, 0x3ca, 0x7ca, 0x2a, +0x42a, 0x22a, 0x62a, 0x12a, 0x52a, 0x32a, 0x72a, +0xaa, 0x4aa, 0x2aa, 0x6aa, 0x1aa, 0x5aa, 0x3aa, +0x7aa, 0x6a, 0x46a, 0x26a, 0x66a, 0x16a, 0x56a, +0x36a, 0x76a, 0xea, 0x4ea, 0x2ea, 0x6ea, 0x1ea, +0x5ea, 0x3ea, 0x7ea, 0x1a, 0x41a, 0x21a, 0x61a, +0x11a, 0x51a, 0x31a, 0x71a, 0x9a, 0x49a, 0x29a, +0x69a, 0x19a, 0x59a, 0x39a, 0x79a, 0x5a, 0x45a, +0x25a, 0x65a, 0x15a, 0x55a, 0x35a, 0x75a, 0xda, +0x4da, 0x2da, 0x6da, 0x1da, 0x5da, 0x3da, 0x7da, +0x3a, 0x43a, 0x23a, 0x63a, 0x13a, 0x53a, 0x33a, +0x73a, 0xba, 0x4ba, 0x2ba, 0x6ba, 0x1ba, 0x5ba, +0x3ba, 0x7ba, 0x7a, 0x47a, 0x27a, 0x67a, 0x17a, +0x57a, 0x37a, 0x77a, 0xfa, 0x4fa, 0x2fa, 0x6fa, +0x1fa, 0x5fa, 0x3fa, 0x7fa, 0x6, 0x406, 0x206, +0x606, 0x106, 0x506, 0x306, 0x706, 0x86, 0x486, +0x286, 0x686, 0x186, 0x586, 0x386, 0x786, 0x46, +0x446, 0x246, 0x646, 0x146, 0x546, 0x346, 0x746, +0xc6, 0x4c6, 0x2c6, 0x6c6, 0x1c6, 0x5c6, 0x3c6, +0x7c6, 0x26, 0x426, 0x226, 0x626, 0x126, 0x526, +0x326, 0x726, 0xa6, 0x4a6, 0x2a6, 0x6a6, 0x1a6, +0x5a6, 0x3a6, 0x7a6, 0x66, 0x466, 0x266, 0x666, +0x166, 0x566, 0x366, 0x766, 0xe6, 0x4e6, 0x2e6, +0x6e6, 0x1e6, 0x5e6, 0x3e6, 0x7e6, 0x16, 0x416, +0x216, 0x616, 0x116, 0x516, 0x316, 0x716, 0x96, +0x496, 0x296, 0x696, 0x196, 0x596, 0x396, 0x796, +0x56, 0x456, 0x256, 0x656, 0x156, 0x556, 0x356, +0x756, 0xd6, 0x4d6, 0x2d6, 0x6d6, 0x1d6, 0x5d6, +0x3d6, 0x7d6, 0x36, 0x436, 0x236, 0x636, 0x136, +0x536, 0x336, 0x736, 0xb6, 0x4b6, 0x2b6, 0x6b6, +0x1b6, 0x5b6, 0x3b6, 0x7b6, 0x76, 0x476, 0x276, +0x676, 0x176, 0x576, 0x376, 0x776, 0xf6, 0x4f6, +0x2f6, 0x6f6, 0x1f6, 0x5f6, 0x3f6, 0x7f6, 0xe, +0x40e, 0x20e, 0x60e, 0x10e, 0x50e, 0x30e, 0x70e, +0x8e, 0x48e, 0x28e, 0x68e, 0x18e, 0x58e, 0x38e, +0x78e, 0x4e, 0x44e, 0x24e, 0x64e, 0x14e, 0x54e, +0x34e, 0x74e, 0xce, 0x4ce, 0x2ce, 0x6ce, 0x1ce, +0x5ce, 0x3ce, 0x7ce, 0x2e, 0x42e, 0x22e, 0x62e, +0x12e, 0x52e, 0x32e, 0x72e, 0xae, 0x4ae, 0x2ae, +0x6ae, 0x1ae, 0x5ae, 0x3ae, 0x7ae, 0x6e, 0x46e, +0x26e, 0x66e, 0x16e, 0x56e, 0x36e, 0x76e, 0xee, +0x4ee, 0x2ee, 0x6ee, 0x1ee, 0x5ee, 0x3ee, 0x7ee, +0x1e, 0x41e, 0x21e, 0x61e, 0x11e, 0x51e, 0x31e, +0x71e, 0x9e, 0x49e, 0x29e, 0x69e, 0x19e, 0x59e, +0x39e, 0x79e, 0x5e, 0x45e, 0x25e, 0x65e, 0x15e, +0x55e, 0x35e, 0x75e, 0xde, 0x4de, 0x2de, 0x6de, +0x1de, 0x5de, 0x3de, 0x7de, 0x3e, 0x43e, 0x23e, +0x63e, 0x13e, 0x53e, 0x33e, 0x73e, 0xbe, 0x4be, +0x2be, 0x6be, 0x1be, 0x5be, 0x3be, 0x7be, 0x7e, +0x47e, 0x27e, 0x67e, 0x17e, 0x57e, 0x37e, 0x77e, +0xfe, 0x4fe, 0x2fe, 0x6fe, 0x1fe, 0x5fe, 0x3fe, +0x7fe, 0x1 +}; + +/** + * @} end of CFFT_CIFFT group + */ + +/* +* @brief Q15 table for reciprocal +*/ +const q15_t armRecipTableQ15[64] = { + 0x7F03, 0x7D13, 0x7B31, 0x795E, 0x7798, 0x75E0, + 0x7434, 0x7294, 0x70FF, 0x6F76, 0x6DF6, 0x6C82, + 0x6B16, 0x69B5, 0x685C, 0x670C, 0x65C4, 0x6484, + 0x634C, 0x621C, 0x60F3, 0x5FD0, 0x5EB5, 0x5DA0, + 0x5C91, 0x5B88, 0x5A85, 0x5988, 0x5890, 0x579E, + 0x56B0, 0x55C8, 0x54E4, 0x5405, 0x532B, 0x5255, + 0x5183, 0x50B6, 0x4FEC, 0x4F26, 0x4E64, 0x4DA6, + 0x4CEC, 0x4C34, 0x4B81, 0x4AD0, 0x4A23, 0x4978, + 0x48D1, 0x482D, 0x478C, 0x46ED, 0x4651, 0x45B8, + 0x4521, 0x448D, 0x43FC, 0x436C, 0x42DF, 0x4255, + 0x41CC, 0x4146, 0x40C2, 0x4040 +}; + +/* +* @brief Q31 table for reciprocal +*/ +const q31_t armRecipTableQ31[64] = { + 0x7F03F03F, 0x7D137420, 0x7B31E739, 0x795E9F94, 0x7798FD29, 0x75E06928, + 0x7434554D, 0x72943B4B, 0x70FF9C40, 0x6F760031, 0x6DF6F593, 0x6C8210E3, + 0x6B16EC3A, 0x69B526F6, 0x685C655F, 0x670C505D, 0x65C4952D, 0x6484E519, + 0x634CF53E, 0x621C7E4F, 0x60F33C61, 0x5FD0EEB3, 0x5EB55785, 0x5DA03BEB, + 0x5C9163A1, 0x5B8898E6, 0x5A85A85A, 0x598860DF, 0x58909373, 0x579E1318, + 0x56B0B4B8, 0x55C84F0B, 0x54E4BA80, 0x5405D124, 0x532B6E8F, 0x52556FD0, + 0x5183B35A, 0x50B618F3, 0x4FEC81A2, 0x4F26CFA2, 0x4E64E64E, 0x4DA6AA1D, + 0x4CEC008B, 0x4C34D010, 0x4B810016, 0x4AD078EF, 0x4A2323C4, 0x4978EA96, + 0x48D1B827, 0x482D77FE, 0x478C1657, 0x46ED801D, 0x4651A2E5, 0x45B86CE2, + 0x4521CCE1, 0x448DB244, 0x43FC0CFA, 0x436CCD78, 0x42DFE4B4, 0x42554426, + 0x41CCDDB6, 0x4146A3C6, 0x40C28923, 0x40408102 +}; diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c new file mode 100644 index 000000000..4623357b7 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c @@ -0,0 +1,141 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_cmplx_conj_f32.c +* +* Description: Floating-point complex conjugate. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupCmplxMath + */ + +/** + * @defgroup cmplx_conj Complex Conjugate + * + * Conjugates the elements of a complex data vector. + * + * The pSrc points to the source data and + * pDst points to the where the result should be written. + * numSamples specifies the number of complex samples + * and the data in each array is stored in an interleaved fashion + * (real, imag, real, imag, ...). + * Each array has a total of 2*numSamples values. + * The underlying algorithm is used: + * + *
   
+ * for(n=0; n   
+ *   
+ * There are separate functions for floating-point, Q15, and Q31 data types.   
+ */
+
+/**   
+ * @addtogroup cmplx_conj   
+ * @{   
+ */
+
+/**   
+ * @brief  Floating-point complex conjugate.   
+ * @param  *pSrc points to the input vector   
+ * @param  *pDst points to the output vector   
+ * @param  numSamples number of complex samples in each vector   
+ * @return none.   
+ */
+
+void arm_cmplx_conj_f32(
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t numSamples)
+{
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.   
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    *pDst++ = *pSrc++;
+    *pDst++ = -*pSrc++;
+    *pDst++ = *pSrc++;
+    *pDst++ = -*pSrc++;
+    *pDst++ = *pSrc++;
+    *pDst++ = -*pSrc++;
+    *pDst++ = *pSrc++;
+    *pDst++ = -*pSrc++;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.   
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    *pDst++ = *pSrc++;
+    *pDst++ = -*pSrc++;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* realOut + j (imagOut) = realIn + j (-1) imagIn */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    *pDst++ = *pSrc++;
+    *pDst++ = -*pSrc++;
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+}
+
+/**   
+ * @} end of cmplx_conj group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c
new file mode 100644
index 000000000..5c4c389f1
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c
@@ -0,0 +1,123 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_cmplx_conj_q15.c   
+*   
+* Description:	Q15 complex conjugate.   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupCmplxMath   
+ */
+
+/**   
+ * @addtogroup cmplx_conj   
+ * @{   
+ */
+
+/**   
+ * @brief  Q15 complex conjugate.   
+ * @param  *pSrc points to the input vector   
+ * @param  *pDst points to the output vector   
+ * @param  numSamples number of complex samples in each vector   
+ * @return none.   
+ *   
+ * Scaling and Overflow Behavior:   
+ * \par   
+ * The function uses saturating arithmetic.   
+ * The Q15 value -1 (0x8000) will be saturated to the maximum allowable positive value 0x7FFF.   
+ */
+
+void arm_cmplx_conj_q15(
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t numSamples)
+{
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.   
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    *pDst++ = *pSrc++;
+    *pDst++ = __SSAT(-*pSrc++, 16);
+    *pDst++ = *pSrc++;
+    *pDst++ = __SSAT(-*pSrc++, 16);
+    *pDst++ = *pSrc++;
+    *pDst++ = __SSAT(-*pSrc++, 16);
+    *pDst++ = *pSrc++;
+    *pDst++ = __SSAT(-*pSrc++, 16);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.   
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    *pDst++ = *pSrc++;
+    *pDst++ = __SSAT(-*pSrc++, 16);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* realOut + j (imagOut) = realIn+ j (-1) imagIn */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    *pDst++ = *pSrc++;
+    *pDst++ = -*pSrc++;
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+}
+
+/**   
+ * @} end of cmplx_conj group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c
new file mode 100644
index 000000000..b139ea25f
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c
@@ -0,0 +1,131 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_cmplx_conj_q31.c   
+*   
+* Description:	Q31 complex conjugate.   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupCmplxMath   
+ */
+
+/**   
+ * @addtogroup cmplx_conj   
+ * @{   
+ */
+
+/**   
+ * @brief  Q31 complex conjugate.   
+ * @param  *pSrc points to the input vector   
+ * @param  *pDst points to the output vector   
+ * @param  numSamples number of complex samples in each vector   
+ * @return none.   
+ *   
+ * Scaling and Overflow Behavior:   
+ * \par   
+ * The function uses saturating arithmetic.   
+ * The Q31 value -1 (0x80000000) will be saturated to the maximum allowable positive value 0x7FFFFFFF.   
+ */
+
+void arm_cmplx_conj_q31(
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t numSamples)
+{
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+  q31_t in;                                      /* Input value */
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.   
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    /* Saturated to 0x7fffffff if the input is -1(0x80000000) */
+    *pDst++ = *pSrc++;
+    in = *pSrc++;
+    *pDst++ = (in == 0x80000000) ? 0x7fffffff : -in;
+    *pDst++ = *pSrc++;
+    in = *pSrc++;
+    *pDst++ = (in == 0x80000000) ? 0x7fffffff : -in;
+    *pDst++ = *pSrc++;
+    in = *pSrc++;
+    *pDst++ = (in == 0x80000000) ? 0x7fffffff : -in;
+    *pDst++ = *pSrc++;
+    in = *pSrc++;
+    *pDst++ = (in == 0x80000000) ? 0x7fffffff : -in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.   
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    /* Saturated to 0x7fffffff if the input is -1(0x80000000) */
+    *pDst++ = *pSrc++;
+    in = *pSrc++;
+    *pDst++ = (in == 0x80000000) ? 0x7fffffff : -in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* realOut + j (imagOut) = realIn+ j (-1) imagIn */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    *pDst++ = *pSrc++;
+    *pDst++ = -*pSrc++;
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+}
+
+/**   
+ * @} end of cmplx_conj group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c
new file mode 100644
index 000000000..90b8a8b34
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c
@@ -0,0 +1,157 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_cmplx_dot_prod_f32.c   
+*   
+* Description:	Floating-point complex dot product   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupCmplxMath   
+ */
+
+/**   
+ * @defgroup cmplx_dot_prod Complex Dot Product   
+ *   
+ * Computes the dot product of two complex vectors.   
+ * The vectors are multiplied element-by-element and then summed.   
+ *  
+ * The pSrcA points to the first complex input vector and   
+ * pSrcB points to the second complex input vector.   
+ * numSamples specifies the number of complex samples   
+ * and the data in each array is stored in an interleaved fashion   
+ * (real, imag, real, imag, ...).   
+ * Each array has a total of 2*numSamples values.   
+ *   
+ * The underlying algorithm is used:   
+ * 
   
+ * realResult=0;   
+ * imagResult=0;   
+ * for(n=0; n   
+ *   
+ * There are separate functions for floating-point, Q15, and Q31 data types.   
+ */
+
+/**   
+ * @addtogroup cmplx_dot_prod   
+ * @{   
+ */
+
+/**   
+ * @brief  Floating-point complex dot product   
+ * @param  *pSrcA points to the first input vector   
+ * @param  *pSrcB points to the second input vector   
+ * @param  numSamples number of complex samples in each vector   
+ * @param  *realResult real part of the result returned here   
+ * @param  *imagResult imaginary part of the result returned here   
+ * @return none.   
+ */
+
+void arm_cmplx_dot_prod_f32(
+  float32_t * pSrcA,
+  float32_t * pSrcB,
+  uint32_t numSamples,
+  float32_t * realResult,
+  float32_t * imagResult)
+{
+  float32_t real_sum = 0.0f, imag_sum = 0.0f;    /* Temporary result storage */
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.   
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* CReal = A[0]* B[0] + A[2]* B[2] + A[4]* B[4] + .....+ A[numSamples-2]* B[numSamples-2] */
+    real_sum += (*pSrcA++) * (*pSrcB++);
+    /* CImag = A[1]* B[1] + A[3]* B[3] + A[5]* B[5] + .....+ A[numSamples-1]* B[numSamples-1] */
+    imag_sum += (*pSrcA++) * (*pSrcB++);
+
+    real_sum += (*pSrcA++) * (*pSrcB++);
+    imag_sum += (*pSrcA++) * (*pSrcB++);
+
+    real_sum += (*pSrcA++) * (*pSrcB++);
+    imag_sum += (*pSrcA++) * (*pSrcB++);
+
+    real_sum += (*pSrcA++) * (*pSrcB++);
+    imag_sum += (*pSrcA++) * (*pSrcB++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.   
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* CReal = A[0]* B[0] + A[2]* B[2] + A[4]* B[4] + .....+ A[numSamples-2]* B[numSamples-2] */
+    real_sum += (*pSrcA++) * (*pSrcB++);
+    /* CImag = A[1]* B[1] + A[3]* B[3] + A[5]* B[5] + .....+ A[numSamples-1]* B[numSamples-1] */
+    imag_sum += (*pSrcA++) * (*pSrcB++);
+
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* CReal = A[0]* B[0] + A[2]* B[2] + A[4]* B[4] + .....+ A[numSamples-2]* B[numSamples-2] */
+    real_sum += (*pSrcA++) * (*pSrcB++);
+    /* CImag = A[1]* B[1] + A[3]* B[3] + A[5]* B[5] + .....+ A[numSamples-1]* B[numSamples-1] */
+    imag_sum += (*pSrcA++) * (*pSrcB++);
+
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+  /* Store the real and imaginary results in the destination buffers */
+  *realResult = real_sum;
+  *imagResult = imag_sum;
+}
+
+/**   
+ * @} end of cmplx_dot_prod group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c
new file mode 100644
index 000000000..2e341bffd
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c
@@ -0,0 +1,141 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_cmplx_dot_prod_q15.c   
+*   
+* Description:	Processing function for the Q15 Complex Dot product   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupCmplxMath   
+ */
+
+/**   
+ * @addtogroup cmplx_dot_prod   
+ * @{   
+ */
+
+/**   
+ * @brief  Q15 complex dot product   
+ * @param  *pSrcA points to the first input vector   
+ * @param  *pSrcB points to the second input vector   
+ * @param  numSamples number of complex samples in each vector   
+ * @param  *realResult real part of the result returned here   
+ * @param  *imagResult imaginary part of the result returned here   
+ * @return none.   
+ *   
+ * Scaling and Overflow Behavior:   
+ * \par   
+ * The function is implemented using an internal 64-bit accumulator.   
+ * The intermediate 1.15 by 1.15 multiplications are performed with full precision and yield a 2.30 result.   
+ * These are accumulated in a 64-bit accumulator with 34.30 precision.   
+ * As a final step, the accumulators are converted to 8.24 format.   
+ * The return results realResult and imagResult are in 8.24 format.   
+ */
+
+void arm_cmplx_dot_prod_q15(
+  q15_t * pSrcA,
+  q15_t * pSrcB,
+  uint32_t numSamples,
+  q31_t * realResult,
+  q31_t * imagResult)
+{
+  q63_t real_sum = 0, imag_sum = 0;              /* Temporary result storage */
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.   
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* CReal = A[0]* B[0] + A[2]* B[2] + A[4]* B[4] + .....+ A[numSamples-2]* B[numSamples-2] */
+    real_sum += ((q31_t) * pSrcA++ * *pSrcB++);
+
+    /* CImag = A[1]* B[1] + A[3]* B[3] + A[5]* B[5] + .....+ A[numSamples-1]* B[numSamples-1] */
+    imag_sum += ((q31_t) * pSrcA++ * *pSrcB++);
+
+    real_sum += ((q31_t) * pSrcA++ * *pSrcB++);
+    imag_sum += ((q31_t) * pSrcA++ * *pSrcB++);
+
+    real_sum += ((q31_t) * pSrcA++ * *pSrcB++);
+    imag_sum += ((q31_t) * pSrcA++ * *pSrcB++);
+
+    real_sum += ((q31_t) * pSrcA++ * *pSrcB++);
+    imag_sum += ((q31_t) * pSrcA++ * *pSrcB++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.   
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* CReal = A[0]* B[0] + A[2]* B[2] + A[4]* B[4] + .....+ A[numSamples-2]* B[numSamples-2] */
+    real_sum += ((q31_t) * pSrcA++ * *pSrcB++);
+    /* CImag = A[1]* B[1] + A[3]* B[3] + A[5]* B[5] + .....+ A[numSamples-1]* B[numSamples-1] */
+    imag_sum += ((q31_t) * pSrcA++ * *pSrcB++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* CReal = A[0]* B[0] + A[2]* B[2] + A[4]* B[4] + .....+ A[numSamples-2]* B[numSamples-2] */
+    real_sum += ((q31_t) * pSrcA++ * *pSrcB++);
+    /* CImag = A[1]* B[1] + A[3]* B[3] + A[5]* B[5] + .....+ A[numSamples-1]* B[numSamples-1] */
+    imag_sum += ((q31_t) * pSrcA++ * *pSrcB++);
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+  /* Store the real and imaginary results in 8.24 format  */
+  /* Convert real data in 34.30 to 8.24 by 6 right shifts */
+  *realResult = (q31_t) (real_sum) >> 6;
+  /* Convert imaginary data in 34.30 to 8.24 by 6 right shifts */
+  *imagResult = (q31_t) (imag_sum) >> 6;
+}
+
+/**   
+ * @} end of cmplx_dot_prod group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c
new file mode 100644
index 000000000..30ee59c7e
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c
@@ -0,0 +1,142 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_cmplx_dot_prod_q31.c   
+*   
+* Description:	Q31 complex dot product   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupCmplxMath   
+ */
+
+/**   
+ * @addtogroup cmplx_dot_prod   
+ * @{   
+ */
+
+/**   
+ * @brief  Q31 complex dot product   
+ * @param  *pSrcA points to the first input vector   
+ * @param  *pSrcB points to the second input vector   
+ * @param  numSamples number of complex samples in each vector   
+ * @param  *realResult real part of the result returned here   
+ * @param  *imagResult imaginary part of the result returned here   
+ * @return none.   
+ *   
+ * Scaling and Overflow Behavior:   
+ * \par   
+ * The function is implemented using an internal 64-bit accumulator.   
+ * The intermediate 1.31 by 1.31 multiplications are performed with 64-bit precision and then shifted to 16.48 format.   
+ * The internal real and imaginary accumulators are in 16.48 format and provide 15 guard bits.   
+ * Additions are nonsaturating and no overflow will occur as long as numSamples is less than 32768.   
+ * The return results realResult and imagResult are in 16.48 format.   
+ * Input down scaling is not required.   
+ */
+
+void arm_cmplx_dot_prod_q31(
+  q31_t * pSrcA,
+  q31_t * pSrcB,
+  uint32_t numSamples,
+  q63_t * realResult,
+  q63_t * imagResult)
+{
+  q63_t real_sum = 0, imag_sum = 0;              /* Temporary result storage */
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.   
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* CReal = A[0]* B[0] + A[2]* B[2] + A[4]* B[4] + .....+ A[numSamples-2]* B[numSamples-2] */
+    /* Convert real data in 2.62 to 16.48 by 14 right shifts */
+    real_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
+    /* CImag = A[1]* B[1] + A[3]* B[3] + A[5]* B[5] + .....+ A[numSamples-1]* B[numSamples-1] */
+    /* Convert imag data in 2.62 to 16.48 by 14 right shifts */
+    imag_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
+
+    real_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
+    imag_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
+
+    real_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
+    imag_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
+
+    real_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
+    imag_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
+
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples  is not a multiple of 4, compute any remaining output samples here.   
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* CReal = A[0]* B[0] + A[2]* B[2] + A[4]* B[4] + .....+ A[numSamples-2]* B[numSamples-2] */
+    real_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
+    /* CImag = A[1]* B[1] + A[3]* B[3] + A[5]* B[5] + .....+ A[numSamples-1]* B[numSamples-1] */
+    imag_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* outReal = realA[0]* realB[0] + realA[2]* realB[2] + realA[4]* realB[4] + .....+ realA[numSamples-2]* realB[numSamples-2] */
+    real_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
+    /* outImag = imagA[1]* imagB[1] + imagA[3]* imagB[3] + imagA[5]* imagB[5] + .....+ imagA[numSamples-1]* imagB[numSamples-1] */
+    imag_sum += (q63_t) * pSrcA++ * (*pSrcB++) >> 14;
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+  /* Store the real and imaginary results in 16.48 format  */
+  *realResult = real_sum;
+  *imagResult = imag_sum;
+}
+
+/**   
+ * @} end of cmplx_dot_prod group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c
new file mode 100644
index 000000000..e84195ec1
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c
@@ -0,0 +1,154 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_cmplx_mag_f32.c   
+*   
+* Description:	Floating-point complex magnitude.   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupCmplxMath   
+ */
+
+/**   
+ * @defgroup cmplx_mag Complex Magnitude   
+ *   
+ * Computes the magnitude of the elements of a complex data vector.   
+ *  
+ * The pSrc points to the source data and   
+ * pDst points to the where the result should be written.   
+ * numSamples specifies the number of complex samples   
+ * in the input array and the data is stored in an interleaved fashion   
+ * (real, imag, real, imag, ...).   
+ * The input array has a total of 2*numSamples values;   
+ * the output array has a total of numSamples values.   
+ * The underlying algorithm is used:   
+ *   
+ * 
   
+ * for(n=0; n   
+ *   
+ * There are separate functions for floating-point, Q15, and Q31 data types.   
+ */
+
+/**   
+ * @addtogroup cmplx_mag   
+ * @{   
+ */
+/**   
+ * @brief Floating-point complex magnitude.   
+ * @param[in]       *pSrc points to complex input buffer   
+ * @param[out]      *pDst points to real output buffer   
+ * @param[in]       numSamples number of complex samples in the input vector   
+ * @return none.   
+ *   
+ */
+
+
+void arm_cmplx_mag_f32(
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t numSamples)
+{
+  float32_t realIn, imagIn;                      /* Temporary variables to hold input values */
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.   
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+
+    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
+    realIn = *pSrc++;
+    imagIn = *pSrc++;
+    /* store the result in the destination buffer. */
+    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
+
+    realIn = *pSrc++;
+    imagIn = *pSrc++;
+    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
+
+    realIn = *pSrc++;
+    imagIn = *pSrc++;
+    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
+
+    realIn = *pSrc++;
+    imagIn = *pSrc++;
+    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
+
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.   
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
+    realIn = *pSrc++;
+    imagIn = *pSrc++;
+    /* store the result in the destination buffer. */
+    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* out = sqrt((real * real) + (imag * imag)) */
+    realIn = *pSrc++;
+    imagIn = *pSrc++;
+    /* store the result in the destination buffer. */
+    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+}
+
+/**   
+ * @} end of cmplx_mag group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c
new file mode 100644
index 000000000..6f5f7e041
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c
@@ -0,0 +1,153 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_cmplx_mag_q15.c   
+*   
+* Description:	Q15 complex magnitude.   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupCmplxMath   
+ */
+
+/**   
+ * @addtogroup cmplx_mag   
+ * @{   
+ */
+
+
+/**   
+ * @brief  Q15 complex magnitude   
+ * @param  *pSrc points to the complex input vector   
+ * @param  *pDst points to the real output vector   
+ * @param  numSamples number of complex samples in the input vector   
+ * @return none.   
+ *   
+ * Scaling and Overflow Behavior:   
+ * \par   
+ * The function implements 1.15 by 1.15 multiplications and finally output is converted into 2.14 format.   
+ */
+
+void arm_cmplx_mag_q15(
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t numSamples)
+{
+  q15_t real, imag;                              /* Temporary variables to hold input values */
+  q31_t acc0, acc1;                              /* Accumulators */
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.   
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+
+    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = __SMUAD(real, real);
+    acc1 = __SMUAD(imag, imag);
+    /* store the result in 2.14 format in the destination buffer. */
+    arm_sqrt_q15((q15_t) (((q63_t) acc0 + acc1) >> 17), pDst++);
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = __SMUAD(real, real);
+    acc1 = __SMUAD(imag, imag);
+    /* store the result in 2.14 format in the destination buffer. */
+    arm_sqrt_q15((q15_t) (((q63_t) acc0 + acc1) >> 17), pDst++);
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = __SMUAD(real, real);
+    acc1 = __SMUAD(imag, imag);
+    /* store the result in 2.14 format in the destination buffer. */
+    arm_sqrt_q15((q15_t) (((q63_t) acc0 + acc1) >> 17), pDst++);
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = __SMUAD(real, real);
+    acc1 = __SMUAD(imag, imag);
+    /* store the result in 2.14 format in the destination buffer. */
+    arm_sqrt_q15((q15_t) (((q63_t) acc0 + acc1) >> 17), pDst++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.   
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = __SMUAD(real, real);
+    acc1 = __SMUAD(imag, imag);
+    /* store the result in 2.14 format in the destination buffer. */
+    arm_sqrt_q15((q15_t) (((q63_t) acc0 + acc1) >> 17), pDst++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* out = sqrt(real * real + imag * imag) */
+    real = *pSrc++;
+    imag = *pSrc++;
+
+    acc0 = (real * real);
+    acc1 = (imag * imag);
+
+    /* store the result in 2.14 format in the destination buffer. */
+    arm_sqrt_q15((q15_t) (((q63_t) acc0 + acc1) >> 17), pDst++);
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+}
+
+/**   
+ * @} end of cmplx_mag group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c
new file mode 100644
index 000000000..07b683dc6
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c
@@ -0,0 +1,151 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_cmplx_mag_q31.c   
+*   
+* Description:	Q31 complex magnitude   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupCmplxMath   
+ */
+
+/**   
+ * @addtogroup cmplx_mag   
+ * @{   
+ */
+
+/**   
+ * @brief  Q31 complex magnitude   
+ * @param  *pSrc points to the complex input vector   
+ * @param  *pDst points to the real output vector   
+ * @param  numSamples number of complex samples in the input vector   
+ * @return none.   
+ *   
+ * Scaling and Overflow Behavior:   
+ * \par   
+ * The function implements 1.31 by 1.31 multiplications and finally output is converted into 2.30 format.   
+ * Input down scaling is not required.   
+ */
+
+void arm_cmplx_mag_q31(
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t numSamples)
+{
+  q31_t real, imag;                              /* Temporary variables to hold input values */
+  q31_t acc0, acc1;                              /* Accumulators */
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.   
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+
+    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 2.30 format in the destination buffer. */
+    arm_sqrt_q31(acc0 + acc1, pDst++);
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 2.30 format in the destination buffer. */
+    arm_sqrt_q31(acc0 + acc1, pDst++);
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 2.30 format in the destination buffer. */
+    arm_sqrt_q31(acc0 + acc1, pDst++);
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 2.30 format in the destination buffer. */
+    arm_sqrt_q31(acc0 + acc1, pDst++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.   
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 2.30 format in the destination buffer. */
+    arm_sqrt_q31(acc0 + acc1, pDst++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* out = sqrt((real * real) + (imag * imag)) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 2.30 format in the destination buffer. */
+    arm_sqrt_q31(acc0 + acc1, pDst++);
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+}
+
+/**   
+ * @} end of cmplx_mag group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c
new file mode 100644
index 000000000..87b89dea1
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c
@@ -0,0 +1,155 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_cmplx_mag_squared_f32.c   
+*   
+* Description:	Floating-point complex magnitude squared.   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupCmplxMath   
+ */
+
+/**   
+ * @defgroup cmplx_mag_squared Complex Magnitude Squared   
+ *   
+ * Computes the magnitude squared of the elements of a complex data vector.   
+ *  
+ * The pSrc points to the source data and   
+ * pDst points to the where the result should be written.   
+ * numSamples specifies the number of complex samples   
+ * in the input array and the data is stored in an interleaved fashion   
+ * (real, imag, real, imag, ...).   
+ * The input array has a total of 2*numSamples values;   
+ * the output array has a total of numSamples values.   
+ *   
+ * The underlying algorithm is used:   
+ *   
+ * 
   
+ * for(n=0; n   
+ *   
+ * There are separate functions for floating-point, Q15, and Q31 data types.   
+ */
+
+/**   
+ * @addtogroup cmplx_mag_squared   
+ * @{   
+ */
+
+
+/**   
+ * @brief  Floating-point complex magnitude squared   
+ * @param[in]  *pSrc points to the complex input vector   
+ * @param[out]  *pDst points to the real output vector   
+ * @param[in]  numSamples number of complex samples in the input vector   
+ * @return none.   
+ */
+
+void arm_cmplx_mag_squared_f32(
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t numSamples)
+{
+  float32_t real, imag;                          /* Temporary variables to store real and imaginary values */
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.   
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    /* store the result in the destination buffer. */
+    *pDst++ = (real * real) + (imag * imag);
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    *pDst++ = (real * real) + (imag * imag);
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    *pDst++ = (real * real) + (imag * imag);
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    *pDst++ = (real * real) + (imag * imag);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.   
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    /* store the result in the destination buffer. */
+    *pDst++ = (real * real) + (imag * imag);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* reading real and imaginary values */
+    real = *pSrc++;
+    imag = *pSrc++;
+
+    /* out = (real * real) + (imag * imag) */
+    /* store the result in the destination buffer. */
+    *pDst++ = (real * real) + (imag * imag);
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+}
+
+/**   
+ * @} end of cmplx_mag_squared group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c
new file mode 100644
index 000000000..31fb79dfc
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c
@@ -0,0 +1,148 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_cmplx_mag_squared_q15.c   
+*   
+* Description:	Q15 complex magnitude squared.   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupCmplxMath   
+ */
+
+/**   
+ * @addtogroup cmplx_mag_squared   
+ * @{   
+ */
+
+/**   
+ * @brief  Q15 complex magnitude squared   
+ * @param  *pSrc points to the complex input vector   
+ * @param  *pDst points to the real output vector   
+ * @param  numSamples number of complex samples in the input vector   
+ * @return none.   
+ *   
+ * Scaling and Overflow Behavior:   
+ * \par   
+ * The function implements 1.15 by 1.15 multiplications and finally output is converted into 3.13 format.   
+ */
+
+void arm_cmplx_mag_squared_q15(
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t numSamples)
+{
+  q15_t real, imag;                              /* Temporary variables to store real and imaginary values */
+  q31_t acc0, acc1;                              /* Accumulators */
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.   
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = __SMUAD(real, real);
+    acc1 = __SMUAD(imag, imag);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ = (q15_t) (((q63_t) acc0 + acc1) >> 17);
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = __SMUAD(real, real);
+    acc1 = __SMUAD(imag, imag);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ = (q15_t) (((q63_t) acc0 + acc1) >> 17);
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = __SMUAD(real, real);
+    acc1 = __SMUAD(imag, imag);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ = (q15_t) (((q63_t) acc0 + acc1) >> 17);
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = __SMUAD(real, real);
+    acc1 = __SMUAD(imag, imag);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ = (q15_t) (((q63_t) acc0 + acc1) >> 17);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.   
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = __SMUAD(real, real);
+    acc1 = __SMUAD(imag, imag);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ = (q15_t) (((q63_t) acc0 + acc1) >> 17);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* out = ((real * real) + (imag * imag)) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (real * real);
+    acc1 = (imag * imag);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ = (q15_t) (((q63_t) acc0 + acc1) >> 17);
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+}
+
+/**   
+ * @} end of cmplx_mag_squared group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c
new file mode 100644
index 000000000..807632e3f
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c
@@ -0,0 +1,150 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_cmplx_mag_squared_q31.c   
+*   
+* Description:	Q31 complex magnitude squared.   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* ---------------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupCmplxMath   
+ */
+
+/**   
+ * @addtogroup cmplx_mag_squared   
+ * @{   
+ */
+
+
+/**   
+ * @brief  Q31 complex magnitude squared   
+ * @param  *pSrc points to the complex input vector   
+ * @param  *pDst points to the real output vector   
+ * @param  numSamples number of complex samples in the input vector   
+ * @return none.   
+ *   
+ * Scaling and Overflow Behavior:   
+ * \par   
+ * The function implements 1.31 by 1.31 multiplications and finally output is converted into 3.29 format.   
+ * Input down scaling is not required.   
+ */
+
+void arm_cmplx_mag_squared_q31(
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t numSamples)
+{
+  q31_t real, imag;                              /* Temporary variables to store real and imaginary values */
+  q31_t acc0, acc1;                              /* Accumulators */
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.   
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = acc0 + acc1;
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = acc0 + acc1;
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = acc0 + acc1;
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = acc0 + acc1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.   
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = acc0 + acc1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* out = ((real * real) + (imag * imag)) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = acc0 + acc1;
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+}
+
+/**   
+ * @} end of cmplx_mag_squared group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c
new file mode 100644
index 000000000..4cdda3273
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c
@@ -0,0 +1,180 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	    arm_cmplx_mult_cmplx_f32.c   
+*   
+* Description:	Floating-point complex-by-complex multiplication   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupCmplxMath   
+ */
+
+/**   
+ * @defgroup CmplxByCmplxMult Complex-by-Complex Multiplication   
+ *   
+ * Multiplies a complex vector by another complex vector and generates a complex result.   
+ * The data in the complex arrays is stored in an interleaved fashion   
+ * (real, imag, real, imag, ...).   
+ * The parameter numSamples represents the number of complex   
+ * samples processed.  The complex arrays have a total of 2*numSamples   
+ * real values.   
+ *   
+ * The underlying algorithm is used:   
+ *   
+ * 
   
+ * for(n=0; n   
+ *   
+ * There are separate functions for floating-point, Q15, and Q31 data types.   
+ */
+
+/**   
+ * @addtogroup CmplxByCmplxMult   
+ * @{   
+ */
+
+
+/**   
+ * @brief  Floating-point complex-by-complex multiplication   
+ * @param[in]  *pSrcA points to the first input vector   
+ * @param[in]  *pSrcB points to the second input vector   
+ * @param[out]  *pDst  points to the output vector   
+ * @param[in]  numSamples number of complex samples in each vector   
+ * @return none.   
+ */
+
+void arm_cmplx_mult_cmplx_f32(
+  float32_t * pSrcA,
+  float32_t * pSrcB,
+  float32_t * pDst,
+  uint32_t numSamples)
+{
+  float32_t a, b, c, d;                          /* Temporary variables to store real and imaginary values */
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counters */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.   
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in the destination buffer. */
+    *pDst++ = (a * c) - (b * d);
+    *pDst++ = (a * d) + (b * c);
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    *pDst++ = (a * c) - (b * d);
+    *pDst++ = (a * d) + (b * c);
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    *pDst++ = (a * c) - (b * d);
+    *pDst++ = (a * d) + (b * c);
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    *pDst++ = (a * c) - (b * d);
+    *pDst++ = (a * d) + (b * c);
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.   
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in the destination buffer. */
+    *pDst++ = (a * c) - (b * d);
+    *pDst++ = (a * d) + (b * c);
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in the destination buffer. */
+    *pDst++ = (a * c) - (b * d);
+    *pDst++ = (a * d) + (b * c);
+
+    /* Decrement the numSamples loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+}
+
+/**   
+ * @} end of CmplxByCmplxMult group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c
new file mode 100644
index 000000000..b31e1bddb
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c
@@ -0,0 +1,182 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	    arm_cmplx_mult_cmplx_q15.c   
+*   
+* Description:	Q15 complex-by-complex multiplication   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupCmplxMath   
+ */
+
+/**   
+ * @addtogroup CmplxByCmplxMult   
+ * @{   
+ */
+
+/**   
+ * @brief  Q15 complex-by-complex multiplication   
+ * @param[in]  *pSrcA points to the first input vector   
+ * @param[in]  *pSrcB points to the second input vector   
+ * @param[out]  *pDst  points to the output vector   
+ * @param[in]  numSamples number of complex samples in each vector   
+ * @return none.   
+ *   
+ * Scaling and Overflow Behavior:   
+ * \par   
+ * The function implements 1.15 by 1.15 multiplications and finally output is converted into 3.13 format.   
+ */
+
+void arm_cmplx_mult_cmplx_q15(
+  q15_t * pSrcA,
+  q15_t * pSrcB,
+  q15_t * pDst,
+  uint32_t numSamples)
+{
+  q15_t a, b, c, d;                              /* Temporary variables to store real and imaginary values */
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counters */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.   
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.   
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
+
+    /* Decrement the blockSize loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+}
+
+/**   
+ * @} end of CmplxByCmplxMult group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c
new file mode 100644
index 000000000..ba8e352fa
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c
@@ -0,0 +1,209 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	    arm_cmplx_mult_cmplx_q31.c   
+*   
+* Description:	Q31 complex-by-complex multiplication   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupCmplxMath   
+ */
+
+/**   
+ * @addtogroup CmplxByCmplxMult   
+ * @{   
+ */
+
+
+/**   
+ * @brief  Q31 complex-by-complex multiplication   
+ * @param[in]  *pSrcA points to the first input vector   
+ * @param[in]  *pSrcB points to the second input vector   
+ * @param[out]  *pDst  points to the output vector   
+ * @param[in]  numSamples number of complex samples in each vector   
+ * @return none.   
+ *   
+ * Scaling and Overflow Behavior:   
+ * \par   
+ * The function implements 1.31 by 1.31 multiplications and finally output is converted into 3.29 format.   
+ * Input down scaling is not required.   
+ */
+
+void arm_cmplx_mult_cmplx_q31(
+  q31_t * pSrcA,
+  q31_t * pSrcB,
+  q31_t * pDst,
+  uint32_t numSamples)
+{
+  q31_t a, b, c, d;                              /* Temporary variables to store real and imaginary values */
+  uint32_t blkCnt;                               /* loop counters */
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.   
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the real result in 3.29 format in the destination buffer. */
+    *pDst++ = (q31_t) ((((q63_t) a * c) >> 33) - (((q63_t) b * d) >> 33));
+    /* store the imag result in 3.29 format in the destination buffer. */
+    *pDst++ = (q31_t) ((((q63_t) a * d) >> 33) + (((q63_t) b * c) >> 33));
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = (q31_t) ((((q63_t) a * c) >> 33) - (((q63_t) b * d) >> 33));
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = (q31_t) ((((q63_t) a * d) >> 33) + (((q63_t) b * c) >> 33));
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = (q31_t) ((((q63_t) a * c) >> 33) - (((q63_t) b * d) >> 33));
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = (q31_t) ((((q63_t) a * d) >> 33) + (((q63_t) b * c) >> 33));
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = (q31_t) ((((q63_t) a * c) >> 33) - (((q63_t) b * d) >> 33));
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = (q31_t) ((((q63_t) a * d) >> 33) + (((q63_t) b * c) >> 33));
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.   
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = (q31_t) ((((q63_t) a * c) >> 33) - (((q63_t) b * d) >> 33));
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = (q31_t) ((((q63_t) a * d) >> 33) + (((q63_t) b * c) >> 33));
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 1u;
+
+  /* First part of the processing with loop unrolling.  Compute 2 outputs at a time.    
+   ** a second loop below computes the remaining 1 sample. */
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the real result in 3.29 format in the destination buffer. */
+    *pDst++ = (q31_t) ((((q63_t) a * c) >> 33) - (((q63_t) b * d) >> 33));
+    /* store the imag result in 3.29 format in the destination buffer. */
+    *pDst++ = (q31_t) ((((q63_t) a * d) >> 33) + (((q63_t) b * c) >> 33));
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = (q31_t) ((((q63_t) a * c) >> 33) - (((q63_t) b * d) >> 33));
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = (q31_t) ((((q63_t) a * d) >> 33) + (((q63_t) b * c) >> 33));
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 2, compute any remaining output samples here.    
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x2u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = (q31_t) ((((q63_t) a * c) >> 33) - (((q63_t) b * d) >> 33));
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = (q31_t) ((((q63_t) a * d) >> 33) + (((q63_t) b * c) >> 33));
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+}
+
+/**   
+ * @} end of CmplxByCmplxMult group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c
new file mode 100644
index 000000000..5d00cdcb1
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c
@@ -0,0 +1,157 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	    arm_cmplx_mult_real_f32.c   
+*   
+* Description:	Floating-point complex by real multiplication   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupCmplxMath   
+ */
+
+/**   
+ * @defgroup CmplxByRealMult Complex-by-Real Multiplication   
+ *   
+ * Multiplies a complex vector by a real vector and generates a complex result.   
+ * The data in the complex arrays is stored in an interleaved fashion   
+ * (real, imag, real, imag, ...).   
+ * The parameter numSamples represents the number of complex   
+ * samples processed.  The complex arrays have a total of 2*numSamples   
+ * real values while the real array has a total of numSamples   
+ * real values.   
+ *   
+ * The underlying algorithm is used:   
+ *   
+ * 
   
+ * for(n=0; n   
+ *   
+ * There are separate functions for floating-point, Q15, and Q31 data types.   
+ */
+
+/**   
+ * @addtogroup CmplxByRealMult   
+ * @{   
+ */
+
+
+/**   
+ * @brief  Floating-point complex-by-real multiplication   
+ * @param[in]  *pSrcCmplx points to the complex input vector   
+ * @param[in]  *pSrcReal points to the real input vector   
+ * @param[out]  *pCmplxDst points to the complex output vector   
+ * @param[in]  numSamples number of samples in each vector   
+ * @return none.   
+ */
+
+void arm_cmplx_mult_real_f32(
+  float32_t * pSrcCmplx,
+  float32_t * pSrcReal,
+  float32_t * pCmplxDst,
+  uint32_t numSamples)
+{
+  float32_t in;                                  /* Temporary variable to store input value */
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counters */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.   
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[i].            */
+    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
+    in = *pSrcReal++;
+    /* store the result in the destination buffer. */
+    *pCmplxDst++ = (*pSrcCmplx++) * (in);
+    *pCmplxDst++ = (*pSrcCmplx++) * (in);
+
+    in = *pSrcReal++;
+    *pCmplxDst++ = (*pSrcCmplx++) * (in);
+    *pCmplxDst++ = (*pSrcCmplx++) * (in);
+
+    in = *pSrcReal++;
+    *pCmplxDst++ = (*pSrcCmplx++) * (in);
+    *pCmplxDst++ = (*pSrcCmplx++) * (in);
+
+    in = *pSrcReal++;
+    *pCmplxDst++ = (*pSrcCmplx++) * (in);
+    *pCmplxDst++ = (*pSrcCmplx++) * (in);
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.   
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[i].            */
+    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
+    in = *pSrcReal++;
+    /* store the result in the destination buffer. */
+    *pCmplxDst++ = (*pSrcCmplx++) * (in);
+    *pCmplxDst++ = (*pSrcCmplx++) * (in);
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* realOut = realA * realB.            */
+    /* imagOut = imagA * realB.                */
+    in = *pSrcReal++;
+    /* store the result in the destination buffer. */
+    *pCmplxDst++ = (*pSrcCmplx++) * (in);
+    *pCmplxDst++ = (*pSrcCmplx++) * (in);
+
+    /* Decrement the numSamples loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+}
+
+/**   
+ * @} end of CmplxByRealMult group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c
new file mode 100644
index 000000000..253fc20e6
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c
@@ -0,0 +1,151 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	    arm_cmplx_mult_real_q15.c   
+*   
+* Description:	Q15 complex by real multiplication   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupCmplxMath   
+ */
+
+/**   
+ * @addtogroup CmplxByRealMult   
+ * @{   
+ */
+
+
+/**   
+ * @brief  Q15 complex-by-real multiplication   
+ * @param[in]  *pSrcCmplx points to the complex input vector   
+ * @param[in]  *pSrcReal points to the real input vector   
+ * @param[out]  *pCmplxDst points to the complex output vector   
+ * @param[in]  numSamples number of samples in each vector   
+ * @return none.   
+ *   
+ * Scaling and Overflow Behavior:   
+ * \par   
+ * The function uses saturating arithmetic.   
+ * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.   
+ */
+
+void arm_cmplx_mult_real_q15(
+  q15_t * pSrcCmplx,
+  q15_t * pSrcReal,
+  q15_t * pCmplxDst,
+  uint32_t numSamples)
+{
+  q15_t in;                                      /* Temporary variable to store input value */
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counters */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.   
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[i].            */
+    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
+    in = *pSrcReal++;
+    /* store the result in the destination buffer. */
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+
+    in = *pSrcReal++;
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+
+    in = *pSrcReal++;
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+
+    in = *pSrcReal++;
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.   
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[i].            */
+    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
+    in = *pSrcReal++;
+    /* store the result in the destination buffer. */
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* realOut = realA * realB.            */
+    /* imagOut = imagA * realB.                */
+    in = *pSrcReal++;
+    /* store the result in the destination buffer. */
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+
+    /* Decrement the numSamples loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+}
+
+/**   
+ * @} end of CmplxByRealMult group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c
new file mode 100644
index 000000000..cb5f9d7d4
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c
@@ -0,0 +1,151 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	    arm_cmplx_mult_real_q31.c   
+*   
+* Description:	Q31 complex by real multiplication   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupCmplxMath   
+ */
+
+/**   
+ * @addtogroup CmplxByRealMult   
+ * @{   
+ */
+
+
+/**   
+ * @brief  Q31 complex-by-real multiplication   
+ * @param[in]  *pSrcCmplx points to the complex input vector   
+ * @param[in]  *pSrcReal points to the real input vector   
+ * @param[out]  *pCmplxDst points to the complex output vector   
+ * @param[in]  numSamples number of samples in each vector   
+ * @return none.   
+ *   
+ * Scaling and Overflow Behavior:   
+ * \par   
+ * The function uses saturating arithmetic.   
+ * Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated.   
+ */
+
+void arm_cmplx_mult_real_q31(
+  q31_t * pSrcCmplx,
+  q31_t * pSrcReal,
+  q31_t * pCmplxDst,
+  uint32_t numSamples)
+{
+  q31_t in;                                      /* Temporary variable to store input value */
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counters */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2u;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.   
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[i].            */
+    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
+    in = *pSrcReal++;
+    /* store the result in the destination buffer. */
+    *pCmplxDst++ =
+      (q31_t) clip_q63_to_q31(((q63_t) * pSrcCmplx++ * in) >> 31);
+    *pCmplxDst++ =
+      (q31_t) clip_q63_to_q31(((q63_t) * pSrcCmplx++ * in) >> 31);
+
+    in = *pSrcReal++;
+    *pCmplxDst++ =
+      (q31_t) clip_q63_to_q31(((q63_t) * pSrcCmplx++ * in) >> 31);
+    *pCmplxDst++ =
+      (q31_t) clip_q63_to_q31(((q63_t) * pSrcCmplx++ * in) >> 31);
+
+    in = *pSrcReal++;
+    *pCmplxDst++ =
+      (q31_t) clip_q63_to_q31(((q63_t) * pSrcCmplx++ * in) >> 31);
+    *pCmplxDst++ =
+      (q31_t) clip_q63_to_q31(((q63_t) * pSrcCmplx++ * in) >> 31);
+
+    in = *pSrcReal++;
+    *pCmplxDst++ =
+      (q31_t) clip_q63_to_q31(((q63_t) * pSrcCmplx++ * in) >> 31);
+    *pCmplxDst++ =
+      (q31_t) clip_q63_to_q31(((q63_t) * pSrcCmplx++ * in) >> 31);
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.   
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4u;
+
+  while(blkCnt > 0u)
+  {
+    /* C[2 * i] = A[2 * i] * B[i].            */
+    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
+    in = *pSrcReal++;
+    /* store the result in the destination buffer. */
+    *pCmplxDst++ =
+      (q31_t) clip_q63_to_q31(((q63_t) * pSrcCmplx++ * in) >> 31);
+    *pCmplxDst++ =
+      (q31_t) clip_q63_to_q31(((q63_t) * pSrcCmplx++ * in) >> 31);
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while(numSamples > 0u)
+  {
+    /* realOut = realA * realB.            */
+    /* imagReal = imagA * realB.               */
+    in = *pSrcReal++;
+    /* store the result in the destination buffer. */
+    *pCmplxDst++ =
+      (q31_t) clip_q63_to_q31(((q63_t) * pSrcCmplx++ * in) >> 31);
+    *pCmplxDst++ =
+      (q31_t) clip_q63_to_q31(((q63_t) * pSrcCmplx++ * in) >> 31);
+
+    /* Decrement the numSamples loop counter */
+    numSamples--;
+  }
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+}
+
+/**   
+ * @} end of CmplxByRealMult group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_f32.c
new file mode 100644
index 000000000..3fd65094c
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_f32.c
@@ -0,0 +1,76 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	    arm_pid_init_f32.c   
+*   
+* Description:	Floating-point PID Control initialization function   
+*				  
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* ------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+ /**   
+ * @addtogroup PID   
+ * @{   
+ */
+
+/**   
+ * @brief  Initialization function for the floating-point PID Control.  
+ * @param[in,out] *S points to an instance of the PID structure.  
+ * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state & 1 = reset the state.  
+ * @return none.  
+ * \par Description:  
+ * \par   
+ * The resetStateFlag specifies whether to set state to zero or not. \n  
+ * The function computes the structure fields: A0, A1 A2   
+ * using the proportional gain( \c Kp), integral gain( \c Ki) and derivative gain( \c Kd)   
+ * also sets the state variables to all zeros.   
+ */
+
+void arm_pid_init_f32(
+  arm_pid_instance_f32 * S,
+  int32_t resetStateFlag)
+{
+
+  /* Derived coefficient A0 */
+  S->A0 = S->Kp + S->Ki + S->Kd;
+
+  /* Derived coefficient A1 */
+  S->A1 = (-S->Kp) - ((float32_t) 2.0 * S->Kd);
+
+  /* Derived coefficient A2 */
+  S->A2 = S->Kd;
+
+  /* Check whether state needs reset or not */
+  if(resetStateFlag)
+  {
+    /* Clear the state buffer.  The size will be always 3 samples */
+    memset(S->state, 0, 3u * sizeof(float32_t));
+  }
+
+}
+
+/**   
+ * @} end of PID group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q15.c
new file mode 100644
index 000000000..c1a09e503
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q15.c
@@ -0,0 +1,111 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	    arm_pid_init_q15.c   
+*   
+* Description:	Q15 PID Control initialization function   
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+ /**   
+ * @addtogroup PID   
+ * @{   
+ */
+
+/**   
+ * @details   
+ * @param[in,out] *S points to an instance of the Q15 PID structure.   
+ * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.   
+ * @return none.   
+ * \par Description:  
+ * \par   
+ * The resetStateFlag specifies whether to set state to zero or not. \n  
+ * The function computes the structure fields: A0, A1 A2   
+ * using the proportional gain( \c Kp), integral gain( \c Ki) and derivative gain( \c Kd)   
+ * also sets the state variables to all zeros.   
+ */
+
+void arm_pid_init_q15(
+  arm_pid_instance_q15 * S,
+  int32_t resetStateFlag)
+{
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /* Derived coefficient A0 */
+  S->A0 = __QADD16(__QADD16(S->Kp, S->Ki), S->Kd);
+
+  /* Derived coefficients and pack into A1 */
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+  S->A1 = __PKHBT(-__QADD16(__QADD16(S->Kd, S->Kd), S->Kp), S->Kd, 16);
+
+#else
+
+  S->A1 = __PKHBT(S->Kd, -__QADD16(__QADD16(S->Kd, S->Kd), S->Kp), 16);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+  /* Check whether state needs reset or not */
+  if(resetStateFlag)
+  {
+    /* Clear the state buffer.  The size will be always 3 samples */
+    memset(S->state, 0, 3u * sizeof(q15_t));
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q31_t temp;                                    /*to store the sum */
+
+  /* Derived coefficient A0 */
+  temp = S->Kp + S->Ki + S->Kd;
+  S->A0 = (q15_t) __SSAT(temp, 16);
+
+  /* Derived coefficients and pack into A1 */
+  temp = -(S->Kd + S->Kd + S->Kp);
+  S->A1 = (q15_t) __SSAT(temp, 16);
+  S->A2 = S->Kd;
+
+
+
+  /* Check whether state needs reset or not */
+  if(resetStateFlag)
+  {
+    /* Clear the state buffer.  The size will be always 3 samples */
+    memset(S->state, 0, 3u * sizeof(q15_t));
+  }
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+}
+
+/**   
+ * @} end of PID group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q31.c
new file mode 100644
index 000000000..78f1d3ef2
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q31.c
@@ -0,0 +1,96 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	    arm_pid_init_q31.c   
+*   
+* Description:	Q31 PID Control initialization function    
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* ------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+ /**   
+ * @addtogroup PID   
+ * @{   
+ */
+
+/**   
+ * @brief  Initialization function for the Q31 PID Control.  
+ * @param[in,out] *S points to an instance of the Q31 PID structure.  
+ * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.  
+ * @return none.   
+ * \par Description:  
+ * \par   
+ * The resetStateFlag specifies whether to set state to zero or not. \n  
+ * The function computes the structure fields: A0, A1 A2   
+ * using the proportional gain( \c Kp), integral gain( \c Ki) and derivative gain( \c Kd)   
+ * also sets the state variables to all zeros.   
+ */
+
+void arm_pid_init_q31(
+  arm_pid_instance_q31 * S,
+  int32_t resetStateFlag)
+{
+
+#ifndef ARM_MATH_CM0
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /* Derived coefficient A0 */
+  S->A0 = __QADD(__QADD(S->Kp, S->Ki), S->Kd);
+
+  /* Derived coefficient A1 */
+  S->A1 = -__QADD(__QADD(S->Kd, S->Kd), S->Kp);
+
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q31_t temp;
+
+  /* Derived coefficient A0 */
+  temp = clip_q63_to_q31((q63_t) S->Kp + S->Ki);
+  S->A0 = clip_q63_to_q31((q63_t) temp + S->Kd);
+
+  /* Derived coefficient A1 */
+  temp = clip_q63_to_q31((q63_t) S->Kd + S->Kd);
+  S->A1 = -clip_q63_to_q31((q63_t) temp + S->Kp);
+
+#endif /* #ifndef ARM_MATH_CM0 */
+
+  /* Derived coefficient A2 */
+  S->A2 = S->Kd;
+
+  /* Check whether state needs reset or not */
+  if(resetStateFlag)
+  {
+    /* Clear the state buffer.  The size will be always 3 samples */
+    memset(S->state, 0, 3u * sizeof(q31_t));
+  }
+
+}
+
+/**   
+ * @} end of PID group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_f32.c
new file mode 100644
index 000000000..4d2feda28
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_f32.c
@@ -0,0 +1,54 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	    arm_pid_reset_f32.c   
+*   
+* Description:	Floating-point PID Control reset function  
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* ------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+ /**   
+ * @addtogroup PID   
+ * @{   
+ */
+
+/**   
+* @brief  Reset function for the floating-point PID Control.  
+* @param[in] *S	Instance pointer of PID control data structure.  
+* @return none.   
+* \par Description:  
+* The function resets the state buffer to zeros.   
+*/
+void arm_pid_reset_f32(
+  arm_pid_instance_f32 * S)
+{
+
+  /* Clear the state buffer.  The size will be always 3 samples */
+  memset(S->state, 0, 3u * sizeof(float32_t));
+}
+
+/**   
+ * @} end of PID group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q15.c
new file mode 100644
index 000000000..b6200f1f8
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q15.c
@@ -0,0 +1,53 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	    arm_pid_reset_q15.c   
+*   
+* Description:	Q15 PID Control reset function  
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+ /**   
+ * @addtogroup PID   
+ * @{   
+ */
+
+/**   
+* @brief  Reset function for the Q15 PID Control.  
+* @param[in] *S		Instance pointer of PID control data structure.  
+* @return none.   
+* \par Description:  
+* The function resets the state buffer to zeros.   
+*/
+void arm_pid_reset_q15(
+  arm_pid_instance_q15 * S)
+{
+  /* Reset state to zero, The size will be always 3 samples */
+  memset(S->state, 0, 3u * sizeof(q15_t));
+}
+
+/**   
+ * @} end of PID group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q31.c
new file mode 100644
index 000000000..0b609a4dc
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q31.c
@@ -0,0 +1,54 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:	    arm_pid_reset_q31.c   
+*   
+* Description:	Q31 PID Control reset function  
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* ------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+ /**   
+ * @addtogroup PID   
+ * @{   
+ */
+
+/**   
+* @brief  Reset function for the Q31 PID Control.  
+* @param[in] *S	Instance pointer of PID control data structure.  
+* @return none.   
+* \par Description:  
+* The function resets the state buffer to zeros.   
+*/
+void arm_pid_reset_q31(
+  arm_pid_instance_q31 * S)
+{
+
+  /* Clear the state buffer.  The size will be always 3 samples */
+  memset(S->state, 0, 3u * sizeof(q31_t));
+}
+
+/**   
+ * @} end of PID group   
+ */
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_f32.c
new file mode 100644
index 000000000..6eded6d6b
--- /dev/null
+++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_f32.c
@@ -0,0 +1,408 @@
+/* ----------------------------------------------------------------------   
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*   
+* $Date:        15. July 2011  
+* $Revision: 	V1.0.10  
+*   
+* Project: 	    CMSIS DSP Library   
+* Title:		arm_sin_cos_f32.c   
+*   
+* Description:	Sine and Cosine calculation for floating-point values.  
+*   
+* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
+*  
+* Version 1.0.10 2011/7/15 
+*    Big Endian support added and Merged M0 and M3/M4 Source code.  
+*   
+* Version 1.0.3 2010/11/29  
+*    Re-organized the CMSIS folders and updated documentation.   
+*    
+* Version 1.0.2 2010/11/11   
+*    Documentation updated.    
+*   
+* Version 1.0.1 2010/10/05    
+*    Production release and review comments incorporated.   
+*   
+* Version 1.0.0 2010/09/20    
+*    Production release and review comments incorporated.   
+* -------------------------------------------------------------------- */
+
+#include "arm_math.h"
+
+/**   
+ * @ingroup groupController   
+ */
+
+/**   
+ * @defgroup SinCos Sine Cosine  
+ *   
+ * Computes the trigonometric sine and cosine values using a combination of table lookup  
+ * and linear interpolation.    
+ * There are separate functions for Q31 and floating-point data types.  
+ * The input to the floating-point version is in degrees while the  
+ * fixed-point Q31 have a scaled input with the range  
+ * [-1 1) mapping to [-180 180) degrees.  
+ *  
+ * The implementation is based on table lookup using 360 values together with linear interpolation.  
+ * The steps used are:  
+ *  -# Calculation of the nearest integer table index.  
+ *  -# Compute the fractional portion (fract) of the input.  
+ *  -# Fetch the value corresponding to \c index from sine table to \c y0 and also value from \c index+1 to \c y1.     
+ *  -# Sine value is computed as  *psinVal = y0 + (fract * (y1 - y0)).   
+ *  -# Fetch the value corresponding to \c index from cosine table to \c y0 and also value from \c index+1 to \c y1.     
+ *  -# Cosine value is computed as  *pcosVal = y0 + (fract * (y1 - y0)).   
+ */
+
+ /**   
+ * @addtogroup SinCos   
+ * @{   
+ */
+
+
+/**   
+* \par   
+* Cosine Table is generated from following loop   
+* 
for(i = 0; i < 360; i++)   
+* {   
+*    cosTable[i]= cos((i-180) * PI/180.0);   
+* } 
+*/ + +static const float32_t cosTable[360] = { + -0.999847695156391270f, -0.999390827019095760f, -0.998629534754573830f, + -0.997564050259824200f, -0.996194698091745550f, -0.994521895368273290f, + -0.992546151641321980f, -0.990268068741570250f, + -0.987688340595137660f, -0.984807753012208020f, -0.981627183447663980f, + -0.978147600733805690f, -0.974370064785235250f, -0.970295726275996470f, + -0.965925826289068200f, -0.961261695938318670f, + -0.956304755963035440f, -0.951056516295153530f, -0.945518575599316740f, + -0.939692620785908320f, -0.933580426497201740f, -0.927183854566787310f, + -0.920504853452440150f, -0.913545457642600760f, + -0.906307787036649940f, -0.898794046299167040f, -0.891006524188367790f, + -0.882947592858926770f, -0.874619707139395740f, -0.866025403784438710f, + -0.857167300702112220f, -0.848048096156425960f, + -0.838670567945424160f, -0.829037572555041620f, -0.819152044288991580f, + -0.809016994374947340f, -0.798635510047292940f, -0.788010753606721900f, + -0.777145961456970680f, -0.766044443118977900f, + -0.754709580222772010f, -0.743144825477394130f, -0.731353701619170460f, + -0.719339800338651300f, -0.707106781186547460f, -0.694658370458997030f, + -0.681998360062498370f, -0.669130606358858240f, + -0.656059028990507500f, -0.642787609686539360f, -0.629320391049837280f, + -0.615661475325658290f, -0.601815023152048380f, -0.587785252292473030f, + -0.573576436351045830f, -0.559192903470746680f, + -0.544639035015027080f, -0.529919264233204790f, -0.515038074910054270f, + -0.499999999999999780f, -0.484809620246337000f, -0.469471562785890530f, + -0.453990499739546750f, -0.438371146789077510f, + -0.422618261740699330f, -0.406736643075800100f, -0.390731128489273600f, + -0.374606593415912070f, -0.358367949545300270f, -0.342020143325668710f, + -0.325568154457156420f, -0.309016994374947340f, + -0.292371704722736660f, -0.275637355816999050f, -0.258819045102520850f, + -0.241921895599667790f, -0.224951054343864810f, -0.207911690817759120f, + -0.190808995376544800f, -0.173648177666930300f, + -0.156434465040231040f, -0.139173100960065350f, -0.121869343405147370f, + -0.104528463267653330f, -0.087155742747658235f, -0.069756473744125330f, + -0.052335956242943620f, -0.034899496702500733f, + -0.017452406437283477f, 0.000000000000000061f, 0.017452406437283376f, + 0.034899496702501080f, 0.052335956242943966f, 0.069756473744125455f, + 0.087155742747658138f, 0.104528463267653460f, + 0.121869343405147490f, 0.139173100960065690f, 0.156434465040230920f, + 0.173648177666930410f, 0.190808995376544920f, 0.207911690817759450f, + 0.224951054343864920f, 0.241921895599667900f, + 0.258819045102520740f, 0.275637355816999160f, 0.292371704722736770f, + 0.309016994374947450f, 0.325568154457156760f, 0.342020143325668820f, + 0.358367949545300380f, 0.374606593415911960f, + 0.390731128489273940f, 0.406736643075800210f, 0.422618261740699440f, + 0.438371146789077460f, 0.453990499739546860f, 0.469471562785890860f, + 0.484809620246337110f, 0.500000000000000110f, + 0.515038074910054380f, 0.529919264233204900f, 0.544639035015027200f, + 0.559192903470746790f, 0.573576436351046050f, 0.587785252292473140f, + 0.601815023152048270f, 0.615661475325658290f, + 0.629320391049837500f, 0.642787609686539360f, 0.656059028990507280f, + 0.669130606358858240f, 0.681998360062498480f, 0.694658370458997370f, + 0.707106781186547570f, 0.719339800338651190f, + 0.731353701619170570f, 0.743144825477394240f, 0.754709580222772010f, + 0.766044443118978010f, 0.777145961456970900f, 0.788010753606722010f, + 0.798635510047292830f, 0.809016994374947450f, + 0.819152044288991800f, 0.829037572555041620f, 0.838670567945424050f, + 0.848048096156425960f, 0.857167300702112330f, 0.866025403784438710f, + 0.874619707139395740f, 0.882947592858926990f, + 0.891006524188367900f, 0.898794046299167040f, 0.906307787036649940f, + 0.913545457642600870f, 0.920504853452440370f, 0.927183854566787420f, + 0.933580426497201740f, 0.939692620785908430f, + 0.945518575599316850f, 0.951056516295153530f, 0.956304755963035440f, + 0.961261695938318890f, 0.965925826289068310f, 0.970295726275996470f, + 0.974370064785235250f, 0.978147600733805690f, + 0.981627183447663980f, 0.984807753012208020f, 0.987688340595137770f, + 0.990268068741570360f, 0.992546151641321980f, 0.994521895368273290f, + 0.996194698091745550f, 0.997564050259824200f, + 0.998629534754573830f, 0.999390827019095760f, 0.999847695156391270f, + 1.000000000000000000f, 0.999847695156391270f, 0.999390827019095760f, + 0.998629534754573830f, 0.997564050259824200f, + 0.996194698091745550f, 0.994521895368273290f, 0.992546151641321980f, + 0.990268068741570360f, 0.987688340595137770f, 0.984807753012208020f, + 0.981627183447663980f, 0.978147600733805690f, + 0.974370064785235250f, 0.970295726275996470f, 0.965925826289068310f, + 0.961261695938318890f, 0.956304755963035440f, 0.951056516295153530f, + 0.945518575599316850f, 0.939692620785908430f, + 0.933580426497201740f, 0.927183854566787420f, 0.920504853452440370f, + 0.913545457642600870f, 0.906307787036649940f, 0.898794046299167040f, + 0.891006524188367900f, 0.882947592858926990f, + 0.874619707139395740f, 0.866025403784438710f, 0.857167300702112330f, + 0.848048096156425960f, 0.838670567945424050f, 0.829037572555041620f, + 0.819152044288991800f, 0.809016994374947450f, + 0.798635510047292830f, 0.788010753606722010f, 0.777145961456970900f, + 0.766044443118978010f, 0.754709580222772010f, 0.743144825477394240f, + 0.731353701619170570f, 0.719339800338651190f, + 0.707106781186547570f, 0.694658370458997370f, 0.681998360062498480f, + 0.669130606358858240f, 0.656059028990507280f, 0.642787609686539360f, + 0.629320391049837500f, 0.615661475325658290f, + 0.601815023152048270f, 0.587785252292473140f, 0.573576436351046050f, + 0.559192903470746790f, 0.544639035015027200f, 0.529919264233204900f, + 0.515038074910054380f, 0.500000000000000110f, + 0.484809620246337110f, 0.469471562785890860f, 0.453990499739546860f, + 0.438371146789077460f, 0.422618261740699440f, 0.406736643075800210f, + 0.390731128489273940f, 0.374606593415911960f, + 0.358367949545300380f, 0.342020143325668820f, 0.325568154457156760f, + 0.309016994374947450f, 0.292371704722736770f, 0.275637355816999160f, + 0.258819045102520740f, 0.241921895599667900f, + 0.224951054343864920f, 0.207911690817759450f, 0.190808995376544920f, + 0.173648177666930410f, 0.156434465040230920f, 0.139173100960065690f, + 0.121869343405147490f, 0.104528463267653460f, + 0.087155742747658138f, 0.069756473744125455f, 0.052335956242943966f, + 0.034899496702501080f, 0.017452406437283376f, 0.000000000000000061f, + -0.017452406437283477f, -0.034899496702500733f, + -0.052335956242943620f, -0.069756473744125330f, -0.087155742747658235f, + -0.104528463267653330f, -0.121869343405147370f, -0.139173100960065350f, + -0.156434465040231040f, -0.173648177666930300f, + -0.190808995376544800f, -0.207911690817759120f, -0.224951054343864810f, + -0.241921895599667790f, -0.258819045102520850f, -0.275637355816999050f, + -0.292371704722736660f, -0.309016994374947340f, + -0.325568154457156420f, -0.342020143325668710f, -0.358367949545300270f, + -0.374606593415912070f, -0.390731128489273600f, -0.406736643075800100f, + -0.422618261740699330f, -0.438371146789077510f, + -0.453990499739546750f, -0.469471562785890530f, -0.484809620246337000f, + -0.499999999999999780f, -0.515038074910054270f, -0.529919264233204790f, + -0.544639035015027080f, -0.559192903470746680f, + -0.573576436351045830f, -0.587785252292473030f, -0.601815023152048380f, + -0.615661475325658290f, -0.629320391049837280f, -0.642787609686539360f, + -0.656059028990507500f, -0.669130606358858240f, + -0.681998360062498370f, -0.694658370458997030f, -0.707106781186547460f, + -0.719339800338651300f, -0.731353701619170460f, -0.743144825477394130f, + -0.754709580222772010f, -0.766044443118977900f, + -0.777145961456970680f, -0.788010753606721900f, -0.798635510047292940f, + -0.809016994374947340f, -0.819152044288991580f, -0.829037572555041620f, + -0.838670567945424160f, -0.848048096156425960f, + -0.857167300702112220f, -0.866025403784438710f, -0.874619707139395740f, + -0.882947592858926770f, -0.891006524188367790f, -0.898794046299167040f, + -0.906307787036649940f, -0.913545457642600760f, + -0.920504853452440150f, -0.927183854566787310f, -0.933580426497201740f, + -0.939692620785908320f, -0.945518575599316740f, -0.951056516295153530f, + -0.956304755963035440f, -0.961261695938318670f, + -0.965925826289068200f, -0.970295726275996470f, -0.974370064785235250f, + -0.978147600733805690f, -0.981627183447663980f, -0.984807753012208020f, + -0.987688340595137660f, -0.990268068741570250f, + -0.992546151641321980f, -0.994521895368273290f, -0.996194698091745550f, + -0.997564050259824200f, -0.998629534754573830f, -0.999390827019095760f, + -0.999847695156391270f, -1.000000000000000000f +}; + +/** +* \par +* Sine Table is generated from following loop +*
for(i = 0; i < 360; i++)   
+* {   
+*    sinTable[i]= sin((i-180) * PI/180.0);   
+* } 
+*/ + + +static const float32_t sinTable[360] = { + -0.017452406437283439f, -0.034899496702500699f, -0.052335956242943807f, + -0.069756473744125524f, -0.087155742747658638f, -0.104528463267653730f, + -0.121869343405147550f, -0.139173100960065740f, + -0.156434465040230980f, -0.173648177666930280f, -0.190808995376544970f, + -0.207911690817759310f, -0.224951054343864780f, -0.241921895599667730f, + -0.258819045102521020f, -0.275637355816999660f, + -0.292371704722737050f, -0.309016994374947510f, -0.325568154457156980f, + -0.342020143325668880f, -0.358367949545300210f, -0.374606593415912240f, + -0.390731128489274160f, -0.406736643075800430f, + -0.422618261740699500f, -0.438371146789077290f, -0.453990499739546860f, + -0.469471562785891080f, -0.484809620246337170f, -0.499999999999999940f, + -0.515038074910054380f, -0.529919264233204900f, + -0.544639035015026860f, -0.559192903470746900f, -0.573576436351046380f, + -0.587785252292473250f, -0.601815023152048160f, -0.615661475325658400f, + -0.629320391049837720f, -0.642787609686539470f, + -0.656059028990507280f, -0.669130606358858350f, -0.681998360062498590f, + -0.694658370458997140f, -0.707106781186547570f, -0.719339800338651410f, + -0.731353701619170570f, -0.743144825477394240f, + -0.754709580222771790f, -0.766044443118978010f, -0.777145961456971010f, + -0.788010753606722010f, -0.798635510047292720f, -0.809016994374947450f, + -0.819152044288992020f, -0.829037572555041740f, + -0.838670567945424050f, -0.848048096156426070f, -0.857167300702112330f, + -0.866025403784438710f, -0.874619707139395850f, -0.882947592858927100f, + -0.891006524188367900f, -0.898794046299166930f, + -0.906307787036650050f, -0.913545457642600980f, -0.920504853452440370f, + -0.927183854566787420f, -0.933580426497201740f, -0.939692620785908430f, + -0.945518575599316850f, -0.951056516295153640f, + -0.956304755963035550f, -0.961261695938318890f, -0.965925826289068310f, + -0.970295726275996470f, -0.974370064785235250f, -0.978147600733805690f, + -0.981627183447663980f, -0.984807753012208020f, + -0.987688340595137660f, -0.990268068741570360f, -0.992546151641322090f, + -0.994521895368273400f, -0.996194698091745550f, -0.997564050259824200f, + -0.998629534754573830f, -0.999390827019095760f, + -0.999847695156391270f, -1.000000000000000000f, -0.999847695156391270f, + -0.999390827019095760f, -0.998629534754573830f, -0.997564050259824200f, + -0.996194698091745550f, -0.994521895368273290f, + -0.992546151641321980f, -0.990268068741570250f, -0.987688340595137770f, + -0.984807753012208020f, -0.981627183447663980f, -0.978147600733805580f, + -0.974370064785235250f, -0.970295726275996470f, + -0.965925826289068310f, -0.961261695938318890f, -0.956304755963035440f, + -0.951056516295153530f, -0.945518575599316740f, -0.939692620785908320f, + -0.933580426497201740f, -0.927183854566787420f, + -0.920504853452440260f, -0.913545457642600870f, -0.906307787036649940f, + -0.898794046299167040f, -0.891006524188367790f, -0.882947592858926880f, + -0.874619707139395740f, -0.866025403784438600f, + -0.857167300702112220f, -0.848048096156426070f, -0.838670567945423940f, + -0.829037572555041740f, -0.819152044288991800f, -0.809016994374947450f, + -0.798635510047292830f, -0.788010753606722010f, + -0.777145961456970790f, -0.766044443118978010f, -0.754709580222772010f, + -0.743144825477394240f, -0.731353701619170460f, -0.719339800338651080f, + -0.707106781186547460f, -0.694658370458997250f, + -0.681998360062498480f, -0.669130606358858240f, -0.656059028990507160f, + -0.642787609686539250f, -0.629320391049837390f, -0.615661475325658180f, + -0.601815023152048270f, -0.587785252292473140f, + -0.573576436351046050f, -0.559192903470746900f, -0.544639035015027080f, + -0.529919264233204900f, -0.515038074910054160f, -0.499999999999999940f, + -0.484809620246337060f, -0.469471562785890810f, + -0.453990499739546750f, -0.438371146789077400f, -0.422618261740699440f, + -0.406736643075800150f, -0.390731128489273720f, -0.374606593415912010f, + -0.358367949545300270f, -0.342020143325668710f, + -0.325568154457156640f, -0.309016994374947400f, -0.292371704722736770f, + -0.275637355816999160f, -0.258819045102520740f, -0.241921895599667730f, + -0.224951054343865000f, -0.207911690817759310f, + -0.190808995376544800f, -0.173648177666930330f, -0.156434465040230870f, + -0.139173100960065440f, -0.121869343405147480f, -0.104528463267653460f, + -0.087155742747658166f, -0.069756473744125302f, + -0.052335956242943828f, -0.034899496702500969f, -0.017452406437283512f, + 0.000000000000000000f, 0.017452406437283512f, 0.034899496702500969f, + 0.052335956242943828f, 0.069756473744125302f, + 0.087155742747658166f, 0.104528463267653460f, 0.121869343405147480f, + 0.139173100960065440f, 0.156434465040230870f, 0.173648177666930330f, + 0.190808995376544800f, 0.207911690817759310f, + 0.224951054343865000f, 0.241921895599667730f, 0.258819045102520740f, + 0.275637355816999160f, 0.292371704722736770f, 0.309016994374947400f, + 0.325568154457156640f, 0.342020143325668710f, + 0.358367949545300270f, 0.374606593415912010f, 0.390731128489273720f, + 0.406736643075800150f, 0.422618261740699440f, 0.438371146789077400f, + 0.453990499739546750f, 0.469471562785890810f, + 0.484809620246337060f, 0.499999999999999940f, 0.515038074910054160f, + 0.529919264233204900f, 0.544639035015027080f, 0.559192903470746900f, + 0.573576436351046050f, 0.587785252292473140f, + 0.601815023152048270f, 0.615661475325658180f, 0.629320391049837390f, + 0.642787609686539250f, 0.656059028990507160f, 0.669130606358858240f, + 0.681998360062498480f, 0.694658370458997250f, + 0.707106781186547460f, 0.719339800338651080f, 0.731353701619170460f, + 0.743144825477394240f, 0.754709580222772010f, 0.766044443118978010f, + 0.777145961456970790f, 0.788010753606722010f, + 0.798635510047292830f, 0.809016994374947450f, 0.819152044288991800f, + 0.829037572555041740f, 0.838670567945423940f, 0.848048096156426070f, + 0.857167300702112220f, 0.866025403784438600f, + 0.874619707139395740f, 0.882947592858926880f, 0.891006524188367790f, + 0.898794046299167040f, 0.906307787036649940f, 0.913545457642600870f, + 0.920504853452440260f, 0.927183854566787420f, + 0.933580426497201740f, 0.939692620785908320f, 0.945518575599316740f, + 0.951056516295153530f, 0.956304755963035440f, 0.961261695938318890f, + 0.965925826289068310f, 0.970295726275996470f, + 0.974370064785235250f, 0.978147600733805580f, 0.981627183447663980f, + 0.984807753012208020f, 0.987688340595137770f, 0.990268068741570250f, + 0.992546151641321980f, 0.994521895368273290f, + 0.996194698091745550f, 0.997564050259824200f, 0.998629534754573830f, + 0.999390827019095760f, 0.999847695156391270f, 1.000000000000000000f, + 0.999847695156391270f, 0.999390827019095760f, + 0.998629534754573830f, 0.997564050259824200f, 0.996194698091745550f, + 0.994521895368273400f, 0.992546151641322090f, 0.990268068741570360f, + 0.987688340595137660f, 0.984807753012208020f, + 0.981627183447663980f, 0.978147600733805690f, 0.974370064785235250f, + 0.970295726275996470f, 0.965925826289068310f, 0.961261695938318890f, + 0.956304755963035550f, 0.951056516295153640f, + 0.945518575599316850f, 0.939692620785908430f, 0.933580426497201740f, + 0.927183854566787420f, 0.920504853452440370f, 0.913545457642600980f, + 0.906307787036650050f, 0.898794046299166930f, + 0.891006524188367900f, 0.882947592858927100f, 0.874619707139395850f, + 0.866025403784438710f, 0.857167300702112330f, 0.848048096156426070f, + 0.838670567945424050f, 0.829037572555041740f, + 0.819152044288992020f, 0.809016994374947450f, 0.798635510047292720f, + 0.788010753606722010f, 0.777145961456971010f, 0.766044443118978010f, + 0.754709580222771790f, 0.743144825477394240f, + 0.731353701619170570f, 0.719339800338651410f, 0.707106781186547570f, + 0.694658370458997140f, 0.681998360062498590f, 0.669130606358858350f, + 0.656059028990507280f, 0.642787609686539470f, + 0.629320391049837720f, 0.615661475325658400f, 0.601815023152048160f, + 0.587785252292473250f, 0.573576436351046380f, 0.559192903470746900f, + 0.544639035015026860f, 0.529919264233204900f, + 0.515038074910054380f, 0.499999999999999940f, 0.484809620246337170f, + 0.469471562785891080f, 0.453990499739546860f, 0.438371146789077290f, + 0.422618261740699500f, 0.406736643075800430f, + 0.390731128489274160f, 0.374606593415912240f, 0.358367949545300210f, + 0.342020143325668880f, 0.325568154457156980f, 0.309016994374947510f, + 0.292371704722737050f, 0.275637355816999660f, + 0.258819045102521020f, 0.241921895599667730f, 0.224951054343864780f, + 0.207911690817759310f, 0.190808995376544970f, 0.173648177666930280f, + 0.156434465040230980f, 0.139173100960065740f, + 0.121869343405147550f, 0.104528463267653730f, 0.087155742747658638f, + 0.069756473744125524f, 0.052335956242943807f, 0.034899496702500699f, + 0.017452406437283439f, 0.000000000000000122f +}; + + +/** + * @brief Floating-point sin_cos function. + * @param[in] theta input value in degrees + * @param[out] *pSinVal points to the processed sine output. + * @param[out] *pCosVal points to the processed cos output. + * @return none. + */ + + +void arm_sin_cos_f32( + float32_t theta, + float32_t * pSinVal, + float32_t * pCosVal) +{ + uint32_t i; /* Index for reading nearwst output values */ + float32_t x1 = -179.0f; /* Initial input value */ + float32_t y0, y1; /* nearest output values */ + float32_t fract; /* fractional part of input */ + + /* Calculation of fractional part */ + if(theta > 0.0f) + { + fract = theta - (float32_t) ((int32_t) theta); + } + else + { + fract = (theta - (float32_t) ((int32_t) theta)) + 1.0f; + } + + /* index calculation for reading nearest output values */ + i = (uint32_t) (theta - x1); + + /* reading nearest sine output values */ + y0 = sinTable[i]; + y1 = sinTable[i + 1u]; + + /* Calculation of sine value */ + *pSinVal = y0 + (fract * (y1 - y0)); + + /* reading nearest cosine output values */ + y0 = cosTable[i]; + y1 = cosTable[i + 1u]; + + /* Calculation of cosine value */ + *pCosVal = y0 + (fract * (y1 - y0)); + +} + +/** + * @} end of SinCos group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_q31.c new file mode 100644 index 000000000..118599475 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_q31.c @@ -0,0 +1,311 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_sin_cos_q31.c +* +* Description: Cosine & Sine calculation for Q31 values. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupController + */ + + /** + * @addtogroup SinCos + * @{ + */ + +/** +* \par +* Sine Table is generated from following loop +*
for(i = 0; i < 360; i++)   
+* {   
+*    sinTable[i]= sin((i-180) * PI/180.0);   
+* } 
+* Convert above coefficients to fixed point 1.31 format. +*/ + +static const int32_t sinTableQ31[360] = { + + 0x0, 0xfdc41e9b, 0xfb8869ce, 0xf94d0e2e, 0xf7123849, 0xf4d814a4, 0xf29ecfb2, + 0xf06695da, + 0xee2f9369, 0xebf9f498, 0xe9c5e582, 0xe7939223, 0xe5632654, 0xe334cdc9, + 0xe108b40d, 0xdedf047d, + 0xdcb7ea46, 0xda939061, 0xd8722192, 0xd653c860, 0xd438af17, 0xd220ffc0, + 0xd00ce422, 0xcdfc85bb, + 0xcbf00dbe, 0xc9e7a512, 0xc7e3744b, 0xc5e3a3a9, 0xc3e85b18, 0xc1f1c224, + 0xc0000000, 0xbe133b7c, + 0xbc2b9b05, 0xba4944a2, 0xb86c5df0, 0xb6950c1e, 0xb4c373ee, 0xb2f7b9af, + 0xb1320139, 0xaf726def, + 0xadb922b7, 0xac0641fb, 0xaa59eda4, 0xa8b4471a, 0xa7156f3c, 0xa57d8666, + 0xa3ecac65, 0xa263007d, + 0xa0e0a15f, 0x9f65ad2d, 0x9df24175, 0x9c867b2c, 0x9b2276b0, 0x99c64fc5, + 0x98722192, 0x9726069c, + 0x95e218c9, 0x94a6715d, 0x937328f5, 0x92485786, 0x9126145f, 0x900c7621, + 0x8efb92c2, 0x8df37f8b, + 0x8cf45113, 0x8bfe1b3f, 0x8b10f144, 0x8a2ce59f, 0x89520a1a, 0x88806fc4, + 0x87b826f7, 0x86f93f50, + 0x8643c7b3, 0x8597ce46, 0x84f56073, 0x845c8ae3, 0x83cd5982, 0x8347d77b, + 0x82cc0f36, 0x825a0a5b, + 0x81f1d1ce, 0x81936daf, 0x813ee55b, 0x80f43f69, 0x80b381ac, 0x807cb130, + 0x804fd23a, 0x802ce84c, + 0x8013f61d, 0x8004fda0, 0x80000000, 0x8004fda0, 0x8013f61d, 0x802ce84c, + 0x804fd23a, 0x807cb130, + 0x80b381ac, 0x80f43f69, 0x813ee55b, 0x81936daf, 0x81f1d1ce, 0x825a0a5b, + 0x82cc0f36, 0x8347d77b, + 0x83cd5982, 0x845c8ae3, 0x84f56073, 0x8597ce46, 0x8643c7b3, 0x86f93f50, + 0x87b826f7, 0x88806fc4, + 0x89520a1a, 0x8a2ce59f, 0x8b10f144, 0x8bfe1b3f, 0x8cf45113, 0x8df37f8b, + 0x8efb92c2, 0x900c7621, + 0x9126145f, 0x92485786, 0x937328f5, 0x94a6715d, 0x95e218c9, 0x9726069c, + 0x98722192, 0x99c64fc5, + 0x9b2276b0, 0x9c867b2c, 0x9df24175, 0x9f65ad2d, 0xa0e0a15f, 0xa263007d, + 0xa3ecac65, 0xa57d8666, + 0xa7156f3c, 0xa8b4471a, 0xaa59eda4, 0xac0641fb, 0xadb922b7, 0xaf726def, + 0xb1320139, 0xb2f7b9af, + 0xb4c373ee, 0xb6950c1e, 0xb86c5df0, 0xba4944a2, 0xbc2b9b05, 0xbe133b7c, + 0xc0000000, 0xc1f1c224, + 0xc3e85b18, 0xc5e3a3a9, 0xc7e3744b, 0xc9e7a512, 0xcbf00dbe, 0xcdfc85bb, + 0xd00ce422, 0xd220ffc0, + 0xd438af17, 0xd653c860, 0xd8722192, 0xda939061, 0xdcb7ea46, 0xdedf047d, + 0xe108b40d, 0xe334cdc9, + 0xe5632654, 0xe7939223, 0xe9c5e582, 0xebf9f498, 0xee2f9369, 0xf06695da, + 0xf29ecfb2, 0xf4d814a4, + 0xf7123849, 0xf94d0e2e, 0xfb8869ce, 0xfdc41e9b, 0x0, 0x23be165, 0x4779632, + 0x6b2f1d2, + 0x8edc7b7, 0xb27eb5c, 0xd61304e, 0xf996a26, 0x11d06c97, 0x14060b68, + 0x163a1a7e, 0x186c6ddd, + 0x1a9cd9ac, 0x1ccb3237, 0x1ef74bf3, 0x2120fb83, 0x234815ba, 0x256c6f9f, + 0x278dde6e, 0x29ac37a0, + 0x2bc750e9, 0x2ddf0040, 0x2ff31bde, 0x32037a45, 0x340ff242, 0x36185aee, + 0x381c8bb5, 0x3a1c5c57, + 0x3c17a4e8, 0x3e0e3ddc, 0x40000000, 0x41ecc484, 0x43d464fb, 0x45b6bb5e, + 0x4793a210, 0x496af3e2, + 0x4b3c8c12, 0x4d084651, 0x4ecdfec7, 0x508d9211, 0x5246dd49, 0x53f9be05, + 0x55a6125c, 0x574bb8e6, + 0x58ea90c4, 0x5a82799a, 0x5c13539b, 0x5d9cff83, 0x5f1f5ea1, 0x609a52d3, + 0x620dbe8b, 0x637984d4, + 0x64dd8950, 0x6639b03b, 0x678dde6e, 0x68d9f964, 0x6a1de737, 0x6b598ea3, + 0x6c8cd70b, 0x6db7a87a, + 0x6ed9eba1, 0x6ff389df, 0x71046d3e, 0x720c8075, 0x730baeed, 0x7401e4c1, + 0x74ef0ebc, 0x75d31a61, + 0x76adf5e6, 0x777f903c, 0x7847d909, 0x7906c0b0, 0x79bc384d, 0x7a6831ba, + 0x7b0a9f8d, 0x7ba3751d, + 0x7c32a67e, 0x7cb82885, 0x7d33f0ca, 0x7da5f5a5, 0x7e0e2e32, 0x7e6c9251, + 0x7ec11aa5, 0x7f0bc097, + 0x7f4c7e54, 0x7f834ed0, 0x7fb02dc6, 0x7fd317b4, 0x7fec09e3, 0x7ffb0260, + 0x7fffffff, 0x7ffb0260, + 0x7fec09e3, 0x7fd317b4, 0x7fb02dc6, 0x7f834ed0, 0x7f4c7e54, 0x7f0bc097, + 0x7ec11aa5, 0x7e6c9251, + 0x7e0e2e32, 0x7da5f5a5, 0x7d33f0ca, 0x7cb82885, 0x7c32a67e, 0x7ba3751d, + 0x7b0a9f8d, 0x7a6831ba, + 0x79bc384d, 0x7906c0b0, 0x7847d909, 0x777f903c, 0x76adf5e6, 0x75d31a61, + 0x74ef0ebc, 0x7401e4c1, + 0x730baeed, 0x720c8075, 0x71046d3e, 0x6ff389df, 0x6ed9eba1, 0x6db7a87a, + 0x6c8cd70b, 0x6b598ea3, + 0x6a1de737, 0x68d9f964, 0x678dde6e, 0x6639b03b, 0x64dd8950, 0x637984d4, + 0x620dbe8b, 0x609a52d3, + 0x5f1f5ea1, 0x5d9cff83, 0x5c13539b, 0x5a82799a, 0x58ea90c4, 0x574bb8e6, + 0x55a6125c, 0x53f9be05, + 0x5246dd49, 0x508d9211, 0x4ecdfec7, 0x4d084651, 0x4b3c8c12, 0x496af3e2, + 0x4793a210, 0x45b6bb5e, + 0x43d464fb, 0x41ecc484, 0x40000000, 0x3e0e3ddc, 0x3c17a4e8, 0x3a1c5c57, + 0x381c8bb5, 0x36185aee, + 0x340ff242, 0x32037a45, 0x2ff31bde, 0x2ddf0040, 0x2bc750e9, 0x29ac37a0, + 0x278dde6e, 0x256c6f9f, + 0x234815ba, 0x2120fb83, 0x1ef74bf3, 0x1ccb3237, 0x1a9cd9ac, 0x186c6ddd, + 0x163a1a7e, 0x14060b68, + 0x11d06c97, 0xf996a26, 0xd61304e, 0xb27eb5c, 0x8edc7b7, 0x6b2f1d2, + 0x4779632, 0x23be165, + + +}; + +/** +* \par +* Cosine Table is generated from following loop +*
for(i = 0; i < 360; i++)   
+* {   
+*    cosTable[i]= cos((i-180) * PI/180.0);   
+* } 
+* \par +* Convert above coefficients to fixed point 1.31 format. +*/ +static const int32_t cosTableQ31[360] = { + 0x80000000, 0x8004fda0, 0x8013f61d, 0x802ce84c, 0x804fd23a, 0x807cb130, + 0x80b381ac, 0x80f43f69, + 0x813ee55b, 0x81936daf, 0x81f1d1ce, 0x825a0a5b, 0x82cc0f36, 0x8347d77b, + 0x83cd5982, 0x845c8ae3, + 0x84f56073, 0x8597ce46, 0x8643c7b3, 0x86f93f50, 0x87b826f7, 0x88806fc4, + 0x89520a1a, 0x8a2ce59f, + 0x8b10f144, 0x8bfe1b3f, 0x8cf45113, 0x8df37f8b, 0x8efb92c2, 0x900c7621, + 0x9126145f, 0x92485786, + 0x937328f5, 0x94a6715d, 0x95e218c9, 0x9726069c, 0x98722192, 0x99c64fc5, + 0x9b2276b0, 0x9c867b2c, + 0x9df24175, 0x9f65ad2d, 0xa0e0a15f, 0xa263007d, 0xa3ecac65, 0xa57d8666, + 0xa7156f3c, 0xa8b4471a, + 0xaa59eda4, 0xac0641fb, 0xadb922b7, 0xaf726def, 0xb1320139, 0xb2f7b9af, + 0xb4c373ee, 0xb6950c1e, + 0xb86c5df0, 0xba4944a2, 0xbc2b9b05, 0xbe133b7c, 0xc0000000, 0xc1f1c224, + 0xc3e85b18, 0xc5e3a3a9, + 0xc7e3744b, 0xc9e7a512, 0xcbf00dbe, 0xcdfc85bb, 0xd00ce422, 0xd220ffc0, + 0xd438af17, 0xd653c860, + 0xd8722192, 0xda939061, 0xdcb7ea46, 0xdedf047d, 0xe108b40d, 0xe334cdc9, + 0xe5632654, 0xe7939223, + 0xe9c5e582, 0xebf9f498, 0xee2f9369, 0xf06695da, 0xf29ecfb2, 0xf4d814a4, + 0xf7123849, 0xf94d0e2e, + 0xfb8869ce, 0xfdc41e9b, 0x0, 0x23be165, 0x4779632, 0x6b2f1d2, 0x8edc7b7, + 0xb27eb5c, + 0xd61304e, 0xf996a26, 0x11d06c97, 0x14060b68, 0x163a1a7e, 0x186c6ddd, + 0x1a9cd9ac, 0x1ccb3237, + 0x1ef74bf3, 0x2120fb83, 0x234815ba, 0x256c6f9f, 0x278dde6e, 0x29ac37a0, + 0x2bc750e9, 0x2ddf0040, + 0x2ff31bde, 0x32037a45, 0x340ff242, 0x36185aee, 0x381c8bb5, 0x3a1c5c57, + 0x3c17a4e8, 0x3e0e3ddc, + 0x40000000, 0x41ecc484, 0x43d464fb, 0x45b6bb5e, 0x4793a210, 0x496af3e2, + 0x4b3c8c12, 0x4d084651, + 0x4ecdfec7, 0x508d9211, 0x5246dd49, 0x53f9be05, 0x55a6125c, 0x574bb8e6, + 0x58ea90c4, 0x5a82799a, + 0x5c13539b, 0x5d9cff83, 0x5f1f5ea1, 0x609a52d3, 0x620dbe8b, 0x637984d4, + 0x64dd8950, 0x6639b03b, + 0x678dde6e, 0x68d9f964, 0x6a1de737, 0x6b598ea3, 0x6c8cd70b, 0x6db7a87a, + 0x6ed9eba1, 0x6ff389df, + 0x71046d3e, 0x720c8075, 0x730baeed, 0x7401e4c1, 0x74ef0ebc, 0x75d31a61, + 0x76adf5e6, 0x777f903c, + 0x7847d909, 0x7906c0b0, 0x79bc384d, 0x7a6831ba, 0x7b0a9f8d, 0x7ba3751d, + 0x7c32a67e, 0x7cb82885, + 0x7d33f0ca, 0x7da5f5a5, 0x7e0e2e32, 0x7e6c9251, 0x7ec11aa5, 0x7f0bc097, + 0x7f4c7e54, 0x7f834ed0, + 0x7fb02dc6, 0x7fd317b4, 0x7fec09e3, 0x7ffb0260, 0x7fffffff, 0x7ffb0260, + 0x7fec09e3, 0x7fd317b4, + 0x7fb02dc6, 0x7f834ed0, 0x7f4c7e54, 0x7f0bc097, 0x7ec11aa5, 0x7e6c9251, + 0x7e0e2e32, 0x7da5f5a5, + 0x7d33f0ca, 0x7cb82885, 0x7c32a67e, 0x7ba3751d, 0x7b0a9f8d, 0x7a6831ba, + 0x79bc384d, 0x7906c0b0, + 0x7847d909, 0x777f903c, 0x76adf5e6, 0x75d31a61, 0x74ef0ebc, 0x7401e4c1, + 0x730baeed, 0x720c8075, + 0x71046d3e, 0x6ff389df, 0x6ed9eba1, 0x6db7a87a, 0x6c8cd70b, 0x6b598ea3, + 0x6a1de737, 0x68d9f964, + 0x678dde6e, 0x6639b03b, 0x64dd8950, 0x637984d4, 0x620dbe8b, 0x609a52d3, + 0x5f1f5ea1, 0x5d9cff83, + 0x5c13539b, 0x5a82799a, 0x58ea90c4, 0x574bb8e6, 0x55a6125c, 0x53f9be05, + 0x5246dd49, 0x508d9211, + 0x4ecdfec7, 0x4d084651, 0x4b3c8c12, 0x496af3e2, 0x4793a210, 0x45b6bb5e, + 0x43d464fb, 0x41ecc484, + 0x40000000, 0x3e0e3ddc, 0x3c17a4e8, 0x3a1c5c57, 0x381c8bb5, 0x36185aee, + 0x340ff242, 0x32037a45, + 0x2ff31bde, 0x2ddf0040, 0x2bc750e9, 0x29ac37a0, 0x278dde6e, 0x256c6f9f, + 0x234815ba, 0x2120fb83, + 0x1ef74bf3, 0x1ccb3237, 0x1a9cd9ac, 0x186c6ddd, 0x163a1a7e, 0x14060b68, + 0x11d06c97, 0xf996a26, + 0xd61304e, 0xb27eb5c, 0x8edc7b7, 0x6b2f1d2, 0x4779632, 0x23be165, 0x0, + 0xfdc41e9b, + 0xfb8869ce, 0xf94d0e2e, 0xf7123849, 0xf4d814a4, 0xf29ecfb2, 0xf06695da, + 0xee2f9369, 0xebf9f498, + 0xe9c5e582, 0xe7939223, 0xe5632654, 0xe334cdc9, 0xe108b40d, 0xdedf047d, + 0xdcb7ea46, 0xda939061, + 0xd8722192, 0xd653c860, 0xd438af17, 0xd220ffc0, 0xd00ce422, 0xcdfc85bb, + 0xcbf00dbe, 0xc9e7a512, + 0xc7e3744b, 0xc5e3a3a9, 0xc3e85b18, 0xc1f1c224, 0xc0000000, 0xbe133b7c, + 0xbc2b9b05, 0xba4944a2, + 0xb86c5df0, 0xb6950c1e, 0xb4c373ee, 0xb2f7b9af, 0xb1320139, 0xaf726def, + 0xadb922b7, 0xac0641fb, + 0xaa59eda4, 0xa8b4471a, 0xa7156f3c, 0xa57d8666, 0xa3ecac65, 0xa263007d, + 0xa0e0a15f, 0x9f65ad2d, + 0x9df24175, 0x9c867b2c, 0x9b2276b0, 0x99c64fc5, 0x98722192, 0x9726069c, + 0x95e218c9, 0x94a6715d, + 0x937328f5, 0x92485786, 0x9126145f, 0x900c7621, 0x8efb92c2, 0x8df37f8b, + 0x8cf45113, 0x8bfe1b3f, + 0x8b10f144, 0x8a2ce59f, 0x89520a1a, 0x88806fc4, 0x87b826f7, 0x86f93f50, + 0x8643c7b3, 0x8597ce46, + 0x84f56073, 0x845c8ae3, 0x83cd5982, 0x8347d77b, 0x82cc0f36, 0x825a0a5b, + 0x81f1d1ce, 0x81936daf, + 0x813ee55b, 0x80f43f69, 0x80b381ac, 0x807cb130, 0x804fd23a, 0x802ce84c, + 0x8013f61d, 0x8004fda0, + +}; + + +/** + * @brief Q31 sin_cos function. + * @param[in] theta scaled input value in degrees + * @param[out] *pSinVal points to the processed sine output. + * @param[out] *pCosVal points to the processed cosine output. + * @return none. + * + * The Q31 input value is in the range [-1 +1) and is mapped to a degree value in the range [-180 180). + * + */ + + +void arm_sin_cos_q31( + q31_t theta, + q31_t * pSinVal, + q31_t * pCosVal) +{ + q31_t x0; /* Nearest input value */ + q31_t y0, y1; /* Nearest output values */ + q31_t xSpacing = INPUT_SPACING; /* Spaing between inputs */ + uint32_t i; /* Index */ + q31_t oneByXSpacing; /* 1/ xSpacing value */ + q31_t out; /* temporary variable */ + uint32_t sign_bits; /* No.of sign bits */ + uint32_t firstX = 0x80000000; /* First X value */ + + /* Calculation of index */ + i = ((uint32_t) theta - firstX) / (uint32_t) xSpacing; + + /* Calculation of first nearest input value */ + x0 = (q31_t) firstX + ((q31_t) i * xSpacing); + + /* Reading nearest sine output values from table */ + y0 = sinTableQ31[i]; + y1 = sinTableQ31[i + 1u]; + + /* Calculation of 1/(x1-x0) */ + /* (x1-x0) is xSpacing which is fixed value */ + sign_bits = 8u; + oneByXSpacing = 0x5A000000; + + /* Calculation of (theta - x0)/(x1-x0) */ + out = + (((q31_t) (((q63_t) (theta - x0) * oneByXSpacing) >> 32)) << sign_bits); + + /* Calculation of y0 + (y1 - y0) * ((theta - x0)/(x1-x0)) */ + *pSinVal = y0 + ((q31_t) (((q63_t) (y1 - y0) * out) >> 30)); + + /* Reading nearest cosine output values from table */ + y0 = cosTableQ31[i]; + y1 = cosTableQ31[i + 1u]; + + /* Calculation of y0 + (y1 - y0) * ((theta - x0)/(x1-x0)) */ + *pCosVal = y0 + ((q31_t) (((q63_t) (y1 - y0) * out) >> 30)); + +} + +/** + * @} end of SinCos group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_f32.c new file mode 100644 index 000000000..59f787732 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_f32.c @@ -0,0 +1,254 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_cos_f32.c +* +* Description: Fast cosine calculation for floating-point values. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" +/** + * @ingroup groupFastMath + */ + +/** + * @defgroup cos Cosine + * + * Computes the trigonometric cosine function using a combination of table lookup + * and cubic interpolation. There are separate functions for + * Q15, Q31, and floating-point data types. + * The input to the floating-point version is in radians while the + * fixed-point Q15 and Q31 have a scaled input with the range + * [0 1) mapping to [0 2*pi). + * + * The implementation is based on table lookup using 256 values together with cubic interpolation. + * The steps used are: + * -# Calculation of the nearest integer table index + * -# Fetch the four table values a, b, c, and d + * -# Compute the fractional portion (fract) of the table index. + * -# Calculation of wa, wb, wc, wd + * -# The final result equals a*wa + b*wb + c*wc + d*wd + * + * where + *
   
+ *    a=Table[index-1];   
+ *    b=Table[index+0];   
+ *    c=Table[index+1];   
+ *    d=Table[index+2];   
+ * 
+ * and + *
   
+ *    wa=-(1/6)*fract.^3 + (1/2)*fract.^2 - (1/3)*fract;   
+ *    wb=(1/2)*fract.^3 - fract.^2 - (1/2)*fract + 1;   
+ *    wc=-(1/2)*fract.^3+(1/2)*fract.^2+fract;   
+ *    wd=(1/6)*fract.^3 - (1/6)*fract;   
+ * 
+ */ + + /** + * @addtogroup cos + * @{ + */ + + +/** +* \par +* Example code for Generation of Cos Table: +* tableSize = 256; +*
for(n = -1; n < (tableSize + 1); n++)   
+* {   
+*	cosTable[n+1]= cos(2*pi*n/tableSize);   
+* } 
+* where pi value is 3.14159265358979 +*/ + +static const float32_t cosTable[259] = { + 0.999698817729949950f, 1.000000000000000000f, 0.999698817729949950f, + 0.998795449733734130f, 0.997290432453155520f, 0.995184719562530520f, + 0.992479562759399410f, 0.989176511764526370f, + 0.985277652740478520f, 0.980785250663757320f, 0.975702106952667240f, + 0.970031261444091800f, 0.963776051998138430f, 0.956940352916717530f, + 0.949528157711029050f, 0.941544055938720700f, + 0.932992815971374510f, 0.923879504203796390f, 0.914209783077239990f, + 0.903989315032958980f, 0.893224298954010010f, 0.881921291351318360f, + 0.870086967945098880f, 0.857728600502014160f, + 0.844853579998016360f, 0.831469595432281490f, 0.817584812641143800f, + 0.803207516670227050f, 0.788346409797668460f, 0.773010432720184330f, + 0.757208824157714840f, 0.740951120853424070f, + 0.724247097969055180f, 0.707106769084930420f, 0.689540565013885500f, + 0.671558976173400880f, 0.653172850608825680f, 0.634393274784088130f, + 0.615231573581695560f, 0.595699310302734380f, + 0.575808167457580570f, 0.555570244789123540f, 0.534997642040252690f, + 0.514102756977081300f, 0.492898195981979370f, 0.471396744251251220f, + 0.449611335992813110f, 0.427555084228515630f, + 0.405241310596466060f, 0.382683426141738890f, 0.359895050525665280f, + 0.336889863014221190f, 0.313681751489639280f, 0.290284663438797000f, + 0.266712754964828490f, 0.242980182170867920f, + 0.219101235270500180f, 0.195090323686599730f, 0.170961886644363400f, + 0.146730467677116390f, 0.122410677373409270f, 0.098017141222953796f, + 0.073564566671848297f, 0.049067676067352295f, + 0.024541229009628296f, 0.000000000000000061f, -0.024541229009628296f, + -0.049067676067352295f, -0.073564566671848297f, -0.098017141222953796f, + -0.122410677373409270f, -0.146730467677116390f, + -0.170961886644363400f, -0.195090323686599730f, -0.219101235270500180f, + -0.242980182170867920f, -0.266712754964828490f, -0.290284663438797000f, + -0.313681751489639280f, -0.336889863014221190f, + -0.359895050525665280f, -0.382683426141738890f, -0.405241310596466060f, + -0.427555084228515630f, -0.449611335992813110f, -0.471396744251251220f, + -0.492898195981979370f, -0.514102756977081300f, + -0.534997642040252690f, -0.555570244789123540f, -0.575808167457580570f, + -0.595699310302734380f, -0.615231573581695560f, -0.634393274784088130f, + -0.653172850608825680f, -0.671558976173400880f, + -0.689540565013885500f, -0.707106769084930420f, -0.724247097969055180f, + -0.740951120853424070f, -0.757208824157714840f, -0.773010432720184330f, + -0.788346409797668460f, -0.803207516670227050f, + -0.817584812641143800f, -0.831469595432281490f, -0.844853579998016360f, + -0.857728600502014160f, -0.870086967945098880f, -0.881921291351318360f, + -0.893224298954010010f, -0.903989315032958980f, + -0.914209783077239990f, -0.923879504203796390f, -0.932992815971374510f, + -0.941544055938720700f, -0.949528157711029050f, -0.956940352916717530f, + -0.963776051998138430f, -0.970031261444091800f, + -0.975702106952667240f, -0.980785250663757320f, -0.985277652740478520f, + -0.989176511764526370f, -0.992479562759399410f, -0.995184719562530520f, + -0.997290432453155520f, -0.998795449733734130f, + -0.999698817729949950f, -1.000000000000000000f, -0.999698817729949950f, + -0.998795449733734130f, -0.997290432453155520f, -0.995184719562530520f, + -0.992479562759399410f, -0.989176511764526370f, + -0.985277652740478520f, -0.980785250663757320f, -0.975702106952667240f, + -0.970031261444091800f, -0.963776051998138430f, -0.956940352916717530f, + -0.949528157711029050f, -0.941544055938720700f, + -0.932992815971374510f, -0.923879504203796390f, -0.914209783077239990f, + -0.903989315032958980f, -0.893224298954010010f, -0.881921291351318360f, + -0.870086967945098880f, -0.857728600502014160f, + -0.844853579998016360f, -0.831469595432281490f, -0.817584812641143800f, + -0.803207516670227050f, -0.788346409797668460f, -0.773010432720184330f, + -0.757208824157714840f, -0.740951120853424070f, + -0.724247097969055180f, -0.707106769084930420f, -0.689540565013885500f, + -0.671558976173400880f, -0.653172850608825680f, -0.634393274784088130f, + -0.615231573581695560f, -0.595699310302734380f, + -0.575808167457580570f, -0.555570244789123540f, -0.534997642040252690f, + -0.514102756977081300f, -0.492898195981979370f, -0.471396744251251220f, + -0.449611335992813110f, -0.427555084228515630f, + -0.405241310596466060f, -0.382683426141738890f, -0.359895050525665280f, + -0.336889863014221190f, -0.313681751489639280f, -0.290284663438797000f, + -0.266712754964828490f, -0.242980182170867920f, + -0.219101235270500180f, -0.195090323686599730f, -0.170961886644363400f, + -0.146730467677116390f, -0.122410677373409270f, -0.098017141222953796f, + -0.073564566671848297f, -0.049067676067352295f, + -0.024541229009628296f, -0.000000000000000184f, 0.024541229009628296f, + 0.049067676067352295f, 0.073564566671848297f, 0.098017141222953796f, + 0.122410677373409270f, 0.146730467677116390f, + 0.170961886644363400f, 0.195090323686599730f, 0.219101235270500180f, + 0.242980182170867920f, 0.266712754964828490f, 0.290284663438797000f, + 0.313681751489639280f, 0.336889863014221190f, + 0.359895050525665280f, 0.382683426141738890f, 0.405241310596466060f, + 0.427555084228515630f, 0.449611335992813110f, 0.471396744251251220f, + 0.492898195981979370f, 0.514102756977081300f, + 0.534997642040252690f, 0.555570244789123540f, 0.575808167457580570f, + 0.595699310302734380f, 0.615231573581695560f, 0.634393274784088130f, + 0.653172850608825680f, 0.671558976173400880f, + 0.689540565013885500f, 0.707106769084930420f, 0.724247097969055180f, + 0.740951120853424070f, 0.757208824157714840f, 0.773010432720184330f, + 0.788346409797668460f, 0.803207516670227050f, + 0.817584812641143800f, 0.831469595432281490f, 0.844853579998016360f, + 0.857728600502014160f, 0.870086967945098880f, 0.881921291351318360f, + 0.893224298954010010f, 0.903989315032958980f, + 0.914209783077239990f, 0.923879504203796390f, 0.932992815971374510f, + 0.941544055938720700f, 0.949528157711029050f, 0.956940352916717530f, + 0.963776051998138430f, 0.970031261444091800f, + 0.975702106952667240f, 0.980785250663757320f, 0.985277652740478520f, + 0.989176511764526370f, 0.992479562759399410f, 0.995184719562530520f, + 0.997290432453155520f, 0.998795449733734130f, + 0.999698817729949950f, 1.000000000000000000f, 0.999698817729949950f +}; + +/** + * @brief Fast approximation to the trigonometric cosine function for floating-point data. + * @param[in] x input value in radians. + * @return cos(x). + */ + +float32_t arm_cos_f32( + float32_t x) +{ + float32_t cosVal, fract, in; + uint32_t index; + uint32_t tableSize = (uint32_t) TABLE_SIZE; + float32_t wa, wb, wc, wd; + float32_t a, b, c, d; + float32_t *tablePtr; + int32_t n; + + /* input x is in radians */ + /* Scale the input to [0 1] range from [0 2*PI] , divide input by 2*pi */ + in = x * 0.159154943092f; + + /* Calculation of floor value of input */ + n = (int32_t) in; + + /* Make negative values towards -infinity */ + if(x < 0.0f) + { + n = n - 1; + } + + /* Map input value to [0 1] */ + in = in - (float32_t) n; + + /* Calculation of index of the table */ + index = (uint32_t) (tableSize * in); + + /* fractional value calculation */ + fract = ((float32_t) tableSize * in) - (float32_t) index; + + /* Initialise table pointer */ + tablePtr = (float32_t *) & cosTable[index]; + + /* Read four nearest values of input value from the cos table */ + a = *tablePtr++; + b = *tablePtr++; + c = *tablePtr++; + d = *tablePtr++; + + /* Cubic interpolation process */ + wa = -(((0.166666667f) * fract) * (fract * fract)) + + (((0.5f) * (fract * fract)) - ((0.3333333333333f) * fract)); + wb = ((((0.5f) * fract) * (fract * fract)) - (fract * fract)) + + (-((0.5f) * fract) + 1.0f); + wc = -(((0.5f) * fract) * (fract * fract)) + + (((0.5f) * (fract * fract)) + fract); + wd = (((0.166666667f) * fract) * (fract * fract)) - + ((0.166666667f) * fract); + + /* Calculate cos value */ + cosVal = ((a * wa) + (b * wb)) + ((c * wc) + (d * wd)); + + /* Return the output value */ + return (cosVal); + +} + +/** + * @} end of cos group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q15.c new file mode 100644 index 000000000..6e804c30e --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q15.c @@ -0,0 +1,189 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_cos_q15.c +* +* Description: Fast cosine calculation for Q15 values. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFastMath + */ + + /** + * @addtogroup cos + * @{ + */ + +/** +* \par +* Table Values are in Q15(1.15 Fixed point format) and generation is done in three steps +* \par +* First Generate cos values in floating point: +* tableSize = 256; +*
for(n = -1; n < (tableSize + 1); n++)   
+* {   
+*	cosTable[n+1]= cos(2*pi*n/tableSize);   
+* }
+* where pi value is 3.14159265358979 +* \par +* Secondly Convert Floating point to Q15(Fixed point): +* (cosTable[i] * pow(2, 15)) +* \par +* Finally Rounding to nearest integer is done +* cosTable[i] += (cosTable[i] > 0 ? 0.5 :-0.5); +*/ + +static const q15_t cosTableQ15[259] = { + 0x7ff6, 0x7fff, 0x7ff6, 0x7fd9, 0x7fa7, 0x7f62, 0x7f0a, 0x7e9d, + 0x7e1e, 0x7d8a, 0x7ce4, 0x7c2a, 0x7b5d, 0x7a7d, 0x798a, 0x7885, + 0x776c, 0x7642, 0x7505, 0x73b6, 0x7255, 0x70e3, 0x6f5f, 0x6dca, + 0x6c24, 0x6a6e, 0x68a7, 0x66d0, 0x64e9, 0x62f2, 0x60ec, 0x5ed7, + 0x5cb4, 0x5a82, 0x5843, 0x55f6, 0x539b, 0x5134, 0x4ec0, 0x4c40, + 0x49b4, 0x471d, 0x447b, 0x41ce, 0x3f17, 0x3c57, 0x398d, 0x36ba, + 0x33df, 0x30fc, 0x2e11, 0x2b1f, 0x2827, 0x2528, 0x2224, 0x1f1a, + 0x1c0c, 0x18f9, 0x15e2, 0x12c8, 0xfab, 0xc8c, 0x96b, 0x648, + 0x324, 0x0, 0xfcdc, 0xf9b8, 0xf695, 0xf374, 0xf055, 0xed38, + 0xea1e, 0xe707, 0xe3f4, 0xe0e6, 0xdddc, 0xdad8, 0xd7d9, 0xd4e1, + 0xd1ef, 0xcf04, 0xcc21, 0xc946, 0xc673, 0xc3a9, 0xc0e9, 0xbe32, + 0xbb85, 0xb8e3, 0xb64c, 0xb3c0, 0xb140, 0xaecc, 0xac65, 0xaa0a, + 0xa7bd, 0xa57e, 0xa34c, 0xa129, 0x9f14, 0x9d0e, 0x9b17, 0x9930, + 0x9759, 0x9592, 0x93dc, 0x9236, 0x90a1, 0x8f1d, 0x8dab, 0x8c4a, + 0x8afb, 0x89be, 0x8894, 0x877b, 0x8676, 0x8583, 0x84a3, 0x83d6, + 0x831c, 0x8276, 0x81e2, 0x8163, 0x80f6, 0x809e, 0x8059, 0x8027, + 0x800a, 0x8000, 0x800a, 0x8027, 0x8059, 0x809e, 0x80f6, 0x8163, + 0x81e2, 0x8276, 0x831c, 0x83d6, 0x84a3, 0x8583, 0x8676, 0x877b, + 0x8894, 0x89be, 0x8afb, 0x8c4a, 0x8dab, 0x8f1d, 0x90a1, 0x9236, + 0x93dc, 0x9592, 0x9759, 0x9930, 0x9b17, 0x9d0e, 0x9f14, 0xa129, + 0xa34c, 0xa57e, 0xa7bd, 0xaa0a, 0xac65, 0xaecc, 0xb140, 0xb3c0, + 0xb64c, 0xb8e3, 0xbb85, 0xbe32, 0xc0e9, 0xc3a9, 0xc673, 0xc946, + 0xcc21, 0xcf04, 0xd1ef, 0xd4e1, 0xd7d9, 0xdad8, 0xdddc, 0xe0e6, + 0xe3f4, 0xe707, 0xea1e, 0xed38, 0xf055, 0xf374, 0xf695, 0xf9b8, + 0xfcdc, 0x0, 0x324, 0x648, 0x96b, 0xc8c, 0xfab, 0x12c8, + 0x15e2, 0x18f9, 0x1c0c, 0x1f1a, 0x2224, 0x2528, 0x2827, 0x2b1f, + 0x2e11, 0x30fc, 0x33df, 0x36ba, 0x398d, 0x3c57, 0x3f17, 0x41ce, + 0x447b, 0x471d, 0x49b4, 0x4c40, 0x4ec0, 0x5134, 0x539b, 0x55f6, + 0x5843, 0x5a82, 0x5cb4, 0x5ed7, 0x60ec, 0x62f2, 0x64e9, 0x66d0, + 0x68a7, 0x6a6e, 0x6c24, 0x6dca, 0x6f5f, 0x70e3, 0x7255, 0x73b6, + 0x7505, 0x7642, 0x776c, 0x7885, 0x798a, 0x7a7d, 0x7b5d, 0x7c2a, + 0x7ce4, 0x7d8a, 0x7e1e, 0x7e9d, 0x7f0a, 0x7f62, 0x7fa7, 0x7fd9, + 0x7ff6, 0x7fff, 0x7ff6 +}; + + +/** + * @brief Fast approximation to the trigonometric cosine function for Q15 data. + * @param[in] x Scaled input value in radians. + * @return cos(x). + * + * The Q15 input value is in the range [0 +1) and is mapped to a radian value in the range [0 2*pi). + */ + +q15_t arm_cos_q15( + q15_t x) +{ + q31_t cosVal; /* Temporary variable for output */ + q15_t *tablePtr; /* Pointer to table */ + q15_t in, in2; /* Temporary variables for input */ + q31_t wa, wb, wc, wd; /* Cubic interpolation coefficients */ + q15_t a, b, c, d; /* Four nearest output values */ + q15_t fract, fractCube, fractSquare; /* Variables for fractional value */ + q15_t oneBy6 = 0x1555; /* Fixed point value of 1/6 */ + q15_t tableSpacing = TABLE_SPACING_Q15; /* Table spacing */ + int32_t index; /* Index variable */ + + in = x; + + /* Calculate the nearest index */ + index = (int32_t) in / tableSpacing; + + /* Calculate the nearest value of input */ + in2 = (q15_t) index *tableSpacing; + + /* Calculation of fractional value */ + fract = (in - in2) << 8; + + /* fractSquare = fract * fract */ + fractSquare = (q15_t) ((fract * fract) >> 15); + + /* fractCube = fract * fract * fract */ + fractCube = (q15_t) ((fractSquare * fract) >> 15); + + /* Initialise table pointer */ + tablePtr = (q15_t *) & cosTableQ15[index]; + + /* Cubic interpolation process */ + /* Calculation of wa */ + /* wa = -(oneBy6)*fractCube + (fractSquare >> 1u) - (0x2AAA)*fract; */ + wa = (q31_t) oneBy6 *fractCube; + wa += (q31_t) 0x2AAA *fract; + wa = -(wa >> 15); + wa += (fractSquare >> 1u); + + /* Read first nearest value of output from the cos table */ + a = *tablePtr++; + + /* cosVal = a * wa */ + cosVal = a * wa; + + /* Calculation of wb */ + wb = (((fractCube >> 1u) - fractSquare) - (fract >> 1u)) + 0x7FFF; + + /* Read second nearest value of output from the cos table */ + b = *tablePtr++; + + /* cosVal += b*wb */ + cosVal += b * wb; + + /* Calculation of wc */ + wc = -(q31_t) fractCube + fractSquare; + wc = (wc >> 1u) + fract; + + /* Read third nearest value of output from the cos table */ + c = *tablePtr++; + + /* cosVal += c*wc */ + cosVal += c * wc; + + /* Calculation of wd */ + /* wd = (oneBy6)*fractCube - (oneBy6)*fract; */ + fractCube = fractCube - fract; + wd = ((q15_t) (((q31_t) oneBy6 * fractCube) >> 15)); + + /* Read fourth nearest value of output from the cos table */ + d = *tablePtr++; + + /* cosVal += d*wd; */ + cosVal += d * wd; + + /* Return the output value in 1.15(q15) format */ + return ((q15_t) (cosVal >> 15u)); + +} + +/** + * @} end of cos group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q31.c new file mode 100644 index 000000000..bcbda5908 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q31.c @@ -0,0 +1,225 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_cos_q31.c +* +* Description: Fast cosine calculation for Q31 values. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFastMath + */ + + /** + * @addtogroup cos + * @{ + */ + +/** + * \par + * Table Values are in Q31(1.31 Fixed point format) and generation is done in three steps + * First Generate cos values in floating point: + * tableSize = 256; + *
for(n = -1; n < (tableSize + 1); n++)   
+ * {   
+ *	cosTable[n+1]= cos(2*pi*n/tableSize);   
+ * } 
+ * where pi value is 3.14159265358979 + * \par + * Secondly Convert Floating point to Q31(Fixed point): + * (cosTable[i] * pow(2, 31)) + * \par + * Finally Rounding to nearest integer is done + * cosTable[i] += (cosTable[i] > 0 ? 0.5 :-0.5); + */ + + +static const q31_t cosTableQ31[259] = { + 0x7ff62182, 0x7fffffff, 0x7ff62182, 0x7fd8878e, 0x7fa736b4, 0x7f62368f, + 0x7f0991c4, 0x7e9d55fc, + 0x7e1d93ea, 0x7d8a5f40, 0x7ce3ceb2, 0x7c29fbee, 0x7b5d039e, 0x7a7d055b, + 0x798a23b1, 0x78848414, + 0x776c4edb, 0x7641af3d, 0x7504d345, 0x73b5ebd1, 0x72552c85, 0x70e2cbc6, + 0x6f5f02b2, 0x6dca0d14, + 0x6c242960, 0x6a6d98a4, 0x68a69e81, 0x66cf8120, 0x64e88926, 0x62f201ac, + 0x60ec3830, 0x5ed77c8a, + 0x5cb420e0, 0x5a82799a, 0x5842dd54, 0x55f5a4d2, 0x539b2af0, 0x5133cc94, + 0x4ebfe8a5, 0x4c3fdff4, + 0x49b41533, 0x471cece7, 0x447acd50, 0x41ce1e65, 0x3f1749b8, 0x3c56ba70, + 0x398cdd32, 0x36ba2014, + 0x33def287, 0x30fbc54d, 0x2e110a62, 0x2b1f34eb, 0x2826b928, 0x25280c5e, + 0x2223a4c5, 0x1f19f97b, + 0x1c0b826a, 0x18f8b83c, 0x15e21445, 0x12c8106f, 0xfab272b, 0xc8bd35e, + 0x96a9049, 0x647d97c, + 0x3242abf, 0x0, 0xfcdbd541, 0xf9b82684, 0xf6956fb7, 0xf3742ca2, 0xf054d8d5, + 0xed37ef91, + 0xea1debbb, 0xe70747c4, 0xe3f47d96, 0xe0e60685, 0xdddc5b3b, 0xdad7f3a2, + 0xd7d946d8, 0xd4e0cb15, + 0xd1eef59e, 0xcf043ab3, 0xcc210d79, 0xc945dfec, 0xc67322ce, 0xc3a94590, + 0xc0e8b648, 0xbe31e19b, + 0xbb8532b0, 0xb8e31319, 0xb64beacd, 0xb3c0200c, 0xb140175b, 0xaecc336c, + 0xac64d510, 0xaa0a5b2e, + 0xa7bd22ac, 0xa57d8666, 0xa34bdf20, 0xa1288376, 0x9f13c7d0, 0x9d0dfe54, + 0x9b1776da, 0x99307ee0, + 0x9759617f, 0x9592675c, 0x93dbd6a0, 0x9235f2ec, 0x90a0fd4e, 0x8f1d343a, + 0x8daad37b, 0x8c4a142f, + 0x8afb2cbb, 0x89be50c3, 0x8893b125, 0x877b7bec, 0x8675dc4f, 0x8582faa5, + 0x84a2fc62, 0x83d60412, + 0x831c314e, 0x8275a0c0, 0x81e26c16, 0x8162aa04, 0x80f66e3c, 0x809dc971, + 0x8058c94c, 0x80277872, + 0x8009de7e, 0x80000000, 0x8009de7e, 0x80277872, 0x8058c94c, 0x809dc971, + 0x80f66e3c, 0x8162aa04, + 0x81e26c16, 0x8275a0c0, 0x831c314e, 0x83d60412, 0x84a2fc62, 0x8582faa5, + 0x8675dc4f, 0x877b7bec, + 0x8893b125, 0x89be50c3, 0x8afb2cbb, 0x8c4a142f, 0x8daad37b, 0x8f1d343a, + 0x90a0fd4e, 0x9235f2ec, + 0x93dbd6a0, 0x9592675c, 0x9759617f, 0x99307ee0, 0x9b1776da, 0x9d0dfe54, + 0x9f13c7d0, 0xa1288376, + 0xa34bdf20, 0xa57d8666, 0xa7bd22ac, 0xaa0a5b2e, 0xac64d510, 0xaecc336c, + 0xb140175b, 0xb3c0200c, + 0xb64beacd, 0xb8e31319, 0xbb8532b0, 0xbe31e19b, 0xc0e8b648, 0xc3a94590, + 0xc67322ce, 0xc945dfec, + 0xcc210d79, 0xcf043ab3, 0xd1eef59e, 0xd4e0cb15, 0xd7d946d8, 0xdad7f3a2, + 0xdddc5b3b, 0xe0e60685, + 0xe3f47d96, 0xe70747c4, 0xea1debbb, 0xed37ef91, 0xf054d8d5, 0xf3742ca2, + 0xf6956fb7, 0xf9b82684, + 0xfcdbd541, 0x0, 0x3242abf, 0x647d97c, 0x96a9049, 0xc8bd35e, 0xfab272b, + 0x12c8106f, + 0x15e21445, 0x18f8b83c, 0x1c0b826a, 0x1f19f97b, 0x2223a4c5, 0x25280c5e, + 0x2826b928, 0x2b1f34eb, + 0x2e110a62, 0x30fbc54d, 0x33def287, 0x36ba2014, 0x398cdd32, 0x3c56ba70, + 0x3f1749b8, 0x41ce1e65, + 0x447acd50, 0x471cece7, 0x49b41533, 0x4c3fdff4, 0x4ebfe8a5, 0x5133cc94, + 0x539b2af0, 0x55f5a4d2, + 0x5842dd54, 0x5a82799a, 0x5cb420e0, 0x5ed77c8a, 0x60ec3830, 0x62f201ac, + 0x64e88926, 0x66cf8120, + 0x68a69e81, 0x6a6d98a4, 0x6c242960, 0x6dca0d14, 0x6f5f02b2, 0x70e2cbc6, + 0x72552c85, 0x73b5ebd1, + 0x7504d345, 0x7641af3d, 0x776c4edb, 0x78848414, 0x798a23b1, 0x7a7d055b, + 0x7b5d039e, 0x7c29fbee, + 0x7ce3ceb2, 0x7d8a5f40, 0x7e1d93ea, 0x7e9d55fc, 0x7f0991c4, 0x7f62368f, + 0x7fa736b4, 0x7fd8878e, + 0x7ff62182, 0x7fffffff, 0x7ff62182 +}; + +/** + * @brief Fast approximation to the trigonometric cosine function for Q31 data. + * @param[in] x Scaled input value in radians. + * @return cos(x). + * + * The Q31 input value is in the range [0 +1) and is mapped to a radian value in the range [0 2*pi). + */ + +q31_t arm_cos_q31( + q31_t x) +{ + q31_t cosVal, in, in2; /* Temporary variables for input, output */ + q31_t wa, wb, wc, wd; /* Cubic interpolation coefficients */ + q31_t a, b, c, d; /* Four nearest output values */ + q31_t *tablePtr; /* Pointer to table */ + q31_t fract, fractCube, fractSquare; /* Temporary values for fractional values */ + q31_t oneBy6 = 0x15555555; /* Fixed point value of 1/6 */ + q31_t tableSpacing = TABLE_SPACING_Q31; /* Table spacing */ + q31_t temp; /* Temporary variable for intermediate process */ + uint32_t index; /* Index variable */ + + in = x; + + /* Calculate the nearest index */ + index = in / tableSpacing; + + /* Calculate the nearest value of input */ + in2 = ((q31_t) index) * tableSpacing; + + /* Calculation of fractional value */ + fract = (in - in2) << 8; + + /* fractSquare = fract * fract */ + fractSquare = ((q31_t) (((q63_t) fract * fract) >> 32)); + fractSquare = fractSquare << 1; + + /* fractCube = fract * fract * fract */ + fractCube = ((q31_t) (((q63_t) fractSquare * fract) >> 32)); + fractCube = fractCube << 1; + + /* Initialise table pointer */ + tablePtr = (q31_t *) & cosTableQ31[index]; + + /* Cubic interpolation process */ + /* Calculation of wa */ + /* wa = -(oneBy6)*fractCube + (fractSquare >> 1u) - (0x2AAAAAAA)*fract; */ + wa = ((q31_t) (((q63_t) oneBy6 * fractCube) >> 32)); + temp = 0x2AAAAAAA; + wa = (q31_t) ((((q63_t) wa << 32) + ((q63_t) temp * fract)) >> 32); + wa = -(wa << 1u); + wa += (fractSquare >> 1u); + + /* Read first nearest value of output from the cos table */ + a = *tablePtr++; + + /* cosVal = a*wa */ + cosVal = ((q31_t) (((q63_t) a * wa) >> 32)); + + /* q31(1.31) Fixed point value of 1 */ + temp = 0x7FFFFFFF; + + /* Calculation of wb */ + wb = ((fractCube >> 1u) - (fractSquare + (fract >> 1u))) + temp; + /* Read second nearest value of output from the cos table */ + b = *tablePtr++; + + /* cosVal += b*wb */ + cosVal = (q31_t) ((((q63_t) cosVal << 32) + ((q63_t) b * (wb))) >> 32); + + /* Calculation of wc */ + wc = -fractCube + fractSquare; + wc = (wc >> 1u) + fract; + /* Read third nearest values of output value from the cos table */ + c = *tablePtr++; + + /* cosVal += c*wc */ + cosVal = (q31_t) ((((q63_t) cosVal << 32) + ((q63_t) c * (wc))) >> 32); + + /* Calculation of wd */ + /* wd = (oneBy6)*fractCube - (oneBy6)*fract; */ + fractCube = fractCube - fract; + wd = ((q31_t) (((q63_t) oneBy6 * fractCube) >> 32)); + wd = (wd << 1u); + + /* Read fourth nearest value of output from the cos table */ + d = *tablePtr++; + + /* cosVal += d*wd; */ + cosVal = (q31_t) ((((q63_t) cosVal << 32) + ((q63_t) d * (wd))) >> 32); + + /* convert cosVal in 2.30 format to 1.31 format */ + return (cosVal << 1u); + +} + +/** + * @} end of cos group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_f32.c new file mode 100644 index 000000000..877cfa422 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_f32.c @@ -0,0 +1,257 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_sin_f32.c +* +* Description: Fast sine calculation for floating-point values. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFastMath + */ + +/** + * @defgroup sin Sine + * + * Computes the trigonometric sine function using a combination of table lookup + * and cubic interpolation. There are separate functions for + * Q15, Q31, and floating-point data types. + * The input to the floating-point version is in radians while the + * fixed-point Q15 and Q31 have a scaled input with the range + * [0 1) mapping to [0 2*pi). + * + * The implementation is based on table lookup using 256 values together with cubic interpolation. + * The steps used are: + * -# Calculation of the nearest integer table index + * -# Fetch the four table values a, b, c, and d + * -# Compute the fractional portion (fract) of the table index. + * -# Calculation of wa, wb, wc, wd + * -# The final result equals a*wa + b*wb + c*wc + d*wd + * + * where + *
   
+ *    a=Table[index-1];   
+ *    b=Table[index+0];   
+ *    c=Table[index+1];   
+ *    d=Table[index+2];   
+ * 
+ * and + *
   
+ *    wa=-(1/6)*fract.^3 + (1/2)*fract.^2 - (1/3)*fract;   
+ *    wb=(1/2)*fract.^3 - fract.^2 - (1/2)*fract + 1;   
+ *    wc=-(1/2)*fract.^3+(1/2)*fract.^2+fract;   
+ *    wd=(1/6)*fract.^3 - (1/6)*fract;   
+ * 
+ */ + +/** + * @addtogroup sin + * @{ + */ + + +/** + * \par + * Example code for Generation of Floating-point Sin Table: + * tableSize = 256; + *
for(n = -1; n < (tableSize + 1); n++)   
+ * {   
+ *	sinTable[n+1]=sin(2*pi*n/tableSize);   
+ * }
+ * \par + * where pi value is 3.14159265358979 + */ + +static const float32_t sinTable[259] = { + -0.024541229009628296f, 0.000000000000000000f, 0.024541229009628296f, + 0.049067676067352295f, 0.073564566671848297f, 0.098017141222953796f, + 0.122410677373409270f, 0.146730467677116390f, + 0.170961886644363400f, 0.195090323686599730f, 0.219101235270500180f, + 0.242980182170867920f, 0.266712754964828490f, 0.290284663438797000f, + 0.313681751489639280f, 0.336889863014221190f, + 0.359895050525665280f, 0.382683426141738890f, 0.405241310596466060f, + 0.427555084228515630f, 0.449611335992813110f, 0.471396744251251220f, + 0.492898195981979370f, 0.514102756977081300f, + 0.534997642040252690f, 0.555570244789123540f, 0.575808167457580570f, + 0.595699310302734380f, 0.615231573581695560f, 0.634393274784088130f, + 0.653172850608825680f, 0.671558976173400880f, + 0.689540565013885500f, 0.707106769084930420f, 0.724247097969055180f, + 0.740951120853424070f, 0.757208824157714840f, 0.773010432720184330f, + 0.788346409797668460f, 0.803207516670227050f, + 0.817584812641143800f, 0.831469595432281490f, 0.844853579998016360f, + 0.857728600502014160f, 0.870086967945098880f, 0.881921291351318360f, + 0.893224298954010010f, 0.903989315032958980f, + 0.914209783077239990f, 0.923879504203796390f, 0.932992815971374510f, + 0.941544055938720700f, 0.949528157711029050f, 0.956940352916717530f, + 0.963776051998138430f, 0.970031261444091800f, + 0.975702106952667240f, 0.980785250663757320f, 0.985277652740478520f, + 0.989176511764526370f, 0.992479562759399410f, 0.995184719562530520f, + 0.997290432453155520f, 0.998795449733734130f, + 0.999698817729949950f, 1.000000000000000000f, 0.999698817729949950f, + 0.998795449733734130f, 0.997290432453155520f, 0.995184719562530520f, + 0.992479562759399410f, 0.989176511764526370f, + 0.985277652740478520f, 0.980785250663757320f, 0.975702106952667240f, + 0.970031261444091800f, 0.963776051998138430f, 0.956940352916717530f, + 0.949528157711029050f, 0.941544055938720700f, + 0.932992815971374510f, 0.923879504203796390f, 0.914209783077239990f, + 0.903989315032958980f, 0.893224298954010010f, 0.881921291351318360f, + 0.870086967945098880f, 0.857728600502014160f, + 0.844853579998016360f, 0.831469595432281490f, 0.817584812641143800f, + 0.803207516670227050f, 0.788346409797668460f, 0.773010432720184330f, + 0.757208824157714840f, 0.740951120853424070f, + 0.724247097969055180f, 0.707106769084930420f, 0.689540565013885500f, + 0.671558976173400880f, 0.653172850608825680f, 0.634393274784088130f, + 0.615231573581695560f, 0.595699310302734380f, + 0.575808167457580570f, 0.555570244789123540f, 0.534997642040252690f, + 0.514102756977081300f, 0.492898195981979370f, 0.471396744251251220f, + 0.449611335992813110f, 0.427555084228515630f, + 0.405241310596466060f, 0.382683426141738890f, 0.359895050525665280f, + 0.336889863014221190f, 0.313681751489639280f, 0.290284663438797000f, + 0.266712754964828490f, 0.242980182170867920f, + 0.219101235270500180f, 0.195090323686599730f, 0.170961886644363400f, + 0.146730467677116390f, 0.122410677373409270f, 0.098017141222953796f, + 0.073564566671848297f, 0.049067676067352295f, + 0.024541229009628296f, 0.000000000000000122f, -0.024541229009628296f, + -0.049067676067352295f, -0.073564566671848297f, -0.098017141222953796f, + -0.122410677373409270f, -0.146730467677116390f, + -0.170961886644363400f, -0.195090323686599730f, -0.219101235270500180f, + -0.242980182170867920f, -0.266712754964828490f, -0.290284663438797000f, + -0.313681751489639280f, -0.336889863014221190f, + -0.359895050525665280f, -0.382683426141738890f, -0.405241310596466060f, + -0.427555084228515630f, -0.449611335992813110f, -0.471396744251251220f, + -0.492898195981979370f, -0.514102756977081300f, + -0.534997642040252690f, -0.555570244789123540f, -0.575808167457580570f, + -0.595699310302734380f, -0.615231573581695560f, -0.634393274784088130f, + -0.653172850608825680f, -0.671558976173400880f, + -0.689540565013885500f, -0.707106769084930420f, -0.724247097969055180f, + -0.740951120853424070f, -0.757208824157714840f, -0.773010432720184330f, + -0.788346409797668460f, -0.803207516670227050f, + -0.817584812641143800f, -0.831469595432281490f, -0.844853579998016360f, + -0.857728600502014160f, -0.870086967945098880f, -0.881921291351318360f, + -0.893224298954010010f, -0.903989315032958980f, + -0.914209783077239990f, -0.923879504203796390f, -0.932992815971374510f, + -0.941544055938720700f, -0.949528157711029050f, -0.956940352916717530f, + -0.963776051998138430f, -0.970031261444091800f, + -0.975702106952667240f, -0.980785250663757320f, -0.985277652740478520f, + -0.989176511764526370f, -0.992479562759399410f, -0.995184719562530520f, + -0.997290432453155520f, -0.998795449733734130f, + -0.999698817729949950f, -1.000000000000000000f, -0.999698817729949950f, + -0.998795449733734130f, -0.997290432453155520f, -0.995184719562530520f, + -0.992479562759399410f, -0.989176511764526370f, + -0.985277652740478520f, -0.980785250663757320f, -0.975702106952667240f, + -0.970031261444091800f, -0.963776051998138430f, -0.956940352916717530f, + -0.949528157711029050f, -0.941544055938720700f, + -0.932992815971374510f, -0.923879504203796390f, -0.914209783077239990f, + -0.903989315032958980f, -0.893224298954010010f, -0.881921291351318360f, + -0.870086967945098880f, -0.857728600502014160f, + -0.844853579998016360f, -0.831469595432281490f, -0.817584812641143800f, + -0.803207516670227050f, -0.788346409797668460f, -0.773010432720184330f, + -0.757208824157714840f, -0.740951120853424070f, + -0.724247097969055180f, -0.707106769084930420f, -0.689540565013885500f, + -0.671558976173400880f, -0.653172850608825680f, -0.634393274784088130f, + -0.615231573581695560f, -0.595699310302734380f, + -0.575808167457580570f, -0.555570244789123540f, -0.534997642040252690f, + -0.514102756977081300f, -0.492898195981979370f, -0.471396744251251220f, + -0.449611335992813110f, -0.427555084228515630f, + -0.405241310596466060f, -0.382683426141738890f, -0.359895050525665280f, + -0.336889863014221190f, -0.313681751489639280f, -0.290284663438797000f, + -0.266712754964828490f, -0.242980182170867920f, + -0.219101235270500180f, -0.195090323686599730f, -0.170961886644363400f, + -0.146730467677116390f, -0.122410677373409270f, -0.098017141222953796f, + -0.073564566671848297f, -0.049067676067352295f, + -0.024541229009628296f, -0.000000000000000245f, 0.024541229009628296f +}; + + +/** + * @brief Fast approximation to the trigonometric sine function for floating-point data. + * @param[in] x input value in radians. + * @return sin(x). + */ + +float32_t arm_sin_f32( + float32_t x) +{ + float32_t sinVal, fract, in; /* Temporary variables for input, output */ + uint32_t index; /* Index variable */ + uint32_t tableSize = (uint32_t) TABLE_SIZE; /* Initialise tablesize */ + float32_t wa, wb, wc, wd; /* Cubic interpolation coefficients */ + float32_t a, b, c, d; /* Four nearest output values */ + float32_t *tablePtr; /* Pointer to table */ + int32_t n; + + /* input x is in radians */ + /* Scale the input to [0 1] range from [0 2*PI] , divide input by 2*pi */ + in = x * 0.159154943092f; + + /* Calculation of floor value of input */ + n = (int32_t) in; + + /* Make negative values towards -infinity */ + if(x < 0.0f) + { + n = n - 1; + } + + /* Map input value to [0 1] */ + in = in - (float32_t) n; + + /* Calculation of index of the table */ + index = (uint32_t) (tableSize * in); + + /* fractional value calculation */ + fract = ((float32_t) tableSize * in) - (float32_t) index; + + /* Initialise table pointer */ + tablePtr = (float32_t *) & sinTable[index]; + + /* Read four nearest values of output value from the sin table */ + a = *tablePtr++; + b = *tablePtr++; + c = *tablePtr++; + d = *tablePtr++; + + /* Cubic interpolation process */ + wa = -(((0.166666667f) * (fract * (fract * fract))) + + ((0.3333333333333f) * fract)) + ((0.5f) * (fract * fract)); + wb = (((0.5f) * (fract * (fract * fract))) - + ((fract * fract) + ((0.5f) * fract))) + 1.0f; + wc = (-((0.5f) * (fract * (fract * fract))) + + ((0.5f) * (fract * fract))) + fract; + wd = ((0.166666667f) * (fract * (fract * fract))) - + ((0.166666667f) * fract); + + /* Calculate sin value */ + sinVal = ((a * wa) + (b * wb)) + ((c * wc) + (d * wd)); + + /* Return the output value */ + return (sinVal); + +} + +/** + * @} end of sin group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q15.c new file mode 100644 index 000000000..8f3f3650b --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q15.c @@ -0,0 +1,192 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_sin_q15.c +* +* Description: Fast sine calculation for Q15 values. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFastMath + */ + + /** + * @addtogroup sin + * @{ + */ + + +/** + * \par + * Example code for Generation of Q15 Sin Table: + * \par + *
tableSize = 256;   
+ * for(n = -1; n < (tableSize + 1); n++)   
+ * {   
+ *	sinTable[n+1]=sin(2*pi*n/tableSize);   
+ * } 
+ * where pi value is 3.14159265358979 + * \par + * Convert Floating point to Q15(Fixed point): + * (sinTable[i] * pow(2, 15)) + * \par + * rounding to nearest integer is done + * sinTable[i] += (sinTable[i] > 0 ? 0.5 :-0.5); + */ + + +static const q15_t sinTableQ15[259] = { + 0xfcdc, 0x0, 0x324, 0x648, 0x96b, 0xc8c, 0xfab, 0x12c8, + 0x15e2, 0x18f9, 0x1c0c, 0x1f1a, 0x2224, 0x2528, 0x2827, 0x2b1f, + 0x2e11, 0x30fc, 0x33df, 0x36ba, 0x398d, 0x3c57, 0x3f17, 0x41ce, + 0x447b, 0x471d, 0x49b4, 0x4c40, 0x4ec0, 0x5134, 0x539b, 0x55f6, + 0x5843, 0x5a82, 0x5cb4, 0x5ed7, 0x60ec, 0x62f2, 0x64e9, 0x66d0, + 0x68a7, 0x6a6e, 0x6c24, 0x6dca, 0x6f5f, 0x70e3, 0x7255, 0x73b6, + 0x7505, 0x7642, 0x776c, 0x7885, 0x798a, 0x7a7d, 0x7b5d, 0x7c2a, + 0x7ce4, 0x7d8a, 0x7e1e, 0x7e9d, 0x7f0a, 0x7f62, 0x7fa7, 0x7fd9, + 0x7ff6, 0x7fff, 0x7ff6, 0x7fd9, 0x7fa7, 0x7f62, 0x7f0a, 0x7e9d, + 0x7e1e, 0x7d8a, 0x7ce4, 0x7c2a, 0x7b5d, 0x7a7d, 0x798a, 0x7885, + 0x776c, 0x7642, 0x7505, 0x73b6, 0x7255, 0x70e3, 0x6f5f, 0x6dca, + 0x6c24, 0x6a6e, 0x68a7, 0x66d0, 0x64e9, 0x62f2, 0x60ec, 0x5ed7, + 0x5cb4, 0x5a82, 0x5843, 0x55f6, 0x539b, 0x5134, 0x4ec0, 0x4c40, + 0x49b4, 0x471d, 0x447b, 0x41ce, 0x3f17, 0x3c57, 0x398d, 0x36ba, + 0x33df, 0x30fc, 0x2e11, 0x2b1f, 0x2827, 0x2528, 0x2224, 0x1f1a, + 0x1c0c, 0x18f9, 0x15e2, 0x12c8, 0xfab, 0xc8c, 0x96b, 0x648, + 0x324, 0x0, 0xfcdc, 0xf9b8, 0xf695, 0xf374, 0xf055, 0xed38, + 0xea1e, 0xe707, 0xe3f4, 0xe0e6, 0xdddc, 0xdad8, 0xd7d9, 0xd4e1, + 0xd1ef, 0xcf04, 0xcc21, 0xc946, 0xc673, 0xc3a9, 0xc0e9, 0xbe32, + 0xbb85, 0xb8e3, 0xb64c, 0xb3c0, 0xb140, 0xaecc, 0xac65, 0xaa0a, + 0xa7bd, 0xa57e, 0xa34c, 0xa129, 0x9f14, 0x9d0e, 0x9b17, 0x9930, + 0x9759, 0x9592, 0x93dc, 0x9236, 0x90a1, 0x8f1d, 0x8dab, 0x8c4a, + 0x8afb, 0x89be, 0x8894, 0x877b, 0x8676, 0x8583, 0x84a3, 0x83d6, + 0x831c, 0x8276, 0x81e2, 0x8163, 0x80f6, 0x809e, 0x8059, 0x8027, + 0x800a, 0x8000, 0x800a, 0x8027, 0x8059, 0x809e, 0x80f6, 0x8163, + 0x81e2, 0x8276, 0x831c, 0x83d6, 0x84a3, 0x8583, 0x8676, 0x877b, + 0x8894, 0x89be, 0x8afb, 0x8c4a, 0x8dab, 0x8f1d, 0x90a1, 0x9236, + 0x93dc, 0x9592, 0x9759, 0x9930, 0x9b17, 0x9d0e, 0x9f14, 0xa129, + 0xa34c, 0xa57e, 0xa7bd, 0xaa0a, 0xac65, 0xaecc, 0xb140, 0xb3c0, + 0xb64c, 0xb8e3, 0xbb85, 0xbe32, 0xc0e9, 0xc3a9, 0xc673, 0xc946, + 0xcc21, 0xcf04, 0xd1ef, 0xd4e1, 0xd7d9, 0xdad8, 0xdddc, 0xe0e6, + 0xe3f4, 0xe707, 0xea1e, 0xed38, 0xf055, 0xf374, 0xf695, 0xf9b8, + 0xfcdc, 0x0, 0x324 +}; + + +/** + * @brief Fast approximation to the trigonometric sine function for Q15 data. + * @param[in] x Scaled input value in radians. + * @return sin(x). + * + * The Q15 input value is in the range [0 +1) and is mapped to a radian value in the range [0 2*pi). + */ + +q15_t arm_sin_q15( + q15_t x) +{ + q31_t sinVal; /* Temporary variables output */ + q15_t *tablePtr; /* Pointer to table */ + q15_t fract, in, in2; /* Temporary variables for input, output */ + q31_t wa, wb, wc, wd; /* Cubic interpolation coefficients */ + q15_t a, b, c, d; /* Four nearest output values */ + q15_t fractCube, fractSquare; /* Temporary values for fractional value */ + q15_t oneBy6 = 0x1555; /* Fixed point value of 1/6 */ + q15_t tableSpacing = TABLE_SPACING_Q15; /* Table spacing */ + int32_t index; /* Index variable */ + + in = x; + + /* Calculate the nearest index */ + index = (int32_t) in / tableSpacing; + + /* Calculate the nearest value of input */ + in2 = (q15_t) ((index) * tableSpacing); + + /* Calculation of fractional value */ + fract = (in - in2) << 8; + + /* fractSquare = fract * fract */ + fractSquare = (q15_t) ((fract * fract) >> 15); + + /* fractCube = fract * fract * fract */ + fractCube = (q15_t) ((fractSquare * fract) >> 15); + + /* Initialise table pointer */ + tablePtr = (q15_t *) & sinTableQ15[index]; + + /* Cubic interpolation process */ + /* Calculation of wa */ + /* wa = -(oneBy6)*fractCube + (fractSquare >> 1u) - (0x2AAA)*fract; */ + wa = (q31_t) oneBy6 *fractCube; + wa += (q31_t) 0x2AAA *fract; + wa = -(wa >> 15); + wa += ((q31_t) fractSquare >> 1u); + + /* Read first nearest value of output from the sin table */ + a = *tablePtr++; + + /* sinVal = a * wa */ + sinVal = a * wa; + + /* Calculation of wb */ + wb = (((q31_t) fractCube >> 1u) - (q31_t) fractSquare) - + (((q31_t) fract >> 1u) - 0x7FFF); + + /* Read second nearest value of output from the sin table */ + b = *tablePtr++; + + /* sinVal += b*wb */ + sinVal += b * wb; + + + /* Calculation of wc */ + wc = -(q31_t) fractCube + fractSquare; + wc = (wc >> 1u) + fract; + + /* Read third nearest value of output from the sin table */ + c = *tablePtr++; + + /* sinVal += c*wc */ + sinVal += c * wc; + + /* Calculation of wd */ + /* wd = (oneBy6)*fractCube - (oneBy6)*fract; */ + fractCube = fractCube - fract; + wd = ((q15_t) (((q31_t) oneBy6 * fractCube) >> 15)); + + /* Read fourth nearest value of output from the sin table */ + d = *tablePtr++; + + /* sinVal += d*wd; */ + sinVal += d * wd; + + /* Return the output value in 1.15(q15) format */ + return ((q15_t) (sinVal >> 15u)); + +} + +/** + * @} end of sin group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q31.c new file mode 100644 index 000000000..28b58ab3d --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q31.c @@ -0,0 +1,227 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_sin_q31.c +* +* Description: Fast sine calculation for Q31 values. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFastMath + */ + + /** + * @addtogroup sin + * @{ + */ + +/** + * \par + * Tables generated are in Q31(1.31 Fixed point format) + * Generation of sin values in floating point: + *
tableSize = 256;     
+ * for(n = -1; n < (tableSize + 1); n++)   
+ * {   
+ *	sinTable[n+1]= sin(2*pi*n/tableSize);   
+ * } 
+ * where pi value is 3.14159265358979 + * \par + * Convert Floating point to Q31(Fixed point): + * (sinTable[i] * pow(2, 31)) + * \par + * rounding to nearest integer is done + * sinTable[i] += (sinTable[i] > 0 ? 0.5 :-0.5); + */ + +static const q31_t sinTableQ31[259] = { + 0xfcdbd541, 0x0, 0x3242abf, 0x647d97c, 0x96a9049, 0xc8bd35e, 0xfab272b, + 0x12c8106f, + 0x15e21445, 0x18f8b83c, 0x1c0b826a, 0x1f19f97b, 0x2223a4c5, 0x25280c5e, + 0x2826b928, 0x2b1f34eb, + 0x2e110a62, 0x30fbc54d, 0x33def287, 0x36ba2014, 0x398cdd32, 0x3c56ba70, + 0x3f1749b8, 0x41ce1e65, + 0x447acd50, 0x471cece7, 0x49b41533, 0x4c3fdff4, 0x4ebfe8a5, 0x5133cc94, + 0x539b2af0, 0x55f5a4d2, + 0x5842dd54, 0x5a82799a, 0x5cb420e0, 0x5ed77c8a, 0x60ec3830, 0x62f201ac, + 0x64e88926, 0x66cf8120, + 0x68a69e81, 0x6a6d98a4, 0x6c242960, 0x6dca0d14, 0x6f5f02b2, 0x70e2cbc6, + 0x72552c85, 0x73b5ebd1, + 0x7504d345, 0x7641af3d, 0x776c4edb, 0x78848414, 0x798a23b1, 0x7a7d055b, + 0x7b5d039e, 0x7c29fbee, + 0x7ce3ceb2, 0x7d8a5f40, 0x7e1d93ea, 0x7e9d55fc, 0x7f0991c4, 0x7f62368f, + 0x7fa736b4, 0x7fd8878e, + 0x7ff62182, 0x7fffffff, 0x7ff62182, 0x7fd8878e, 0x7fa736b4, 0x7f62368f, + 0x7f0991c4, 0x7e9d55fc, + 0x7e1d93ea, 0x7d8a5f40, 0x7ce3ceb2, 0x7c29fbee, 0x7b5d039e, 0x7a7d055b, + 0x798a23b1, 0x78848414, + 0x776c4edb, 0x7641af3d, 0x7504d345, 0x73b5ebd1, 0x72552c85, 0x70e2cbc6, + 0x6f5f02b2, 0x6dca0d14, + 0x6c242960, 0x6a6d98a4, 0x68a69e81, 0x66cf8120, 0x64e88926, 0x62f201ac, + 0x60ec3830, 0x5ed77c8a, + 0x5cb420e0, 0x5a82799a, 0x5842dd54, 0x55f5a4d2, 0x539b2af0, 0x5133cc94, + 0x4ebfe8a5, 0x4c3fdff4, + 0x49b41533, 0x471cece7, 0x447acd50, 0x41ce1e65, 0x3f1749b8, 0x3c56ba70, + 0x398cdd32, 0x36ba2014, + 0x33def287, 0x30fbc54d, 0x2e110a62, 0x2b1f34eb, 0x2826b928, 0x25280c5e, + 0x2223a4c5, 0x1f19f97b, + 0x1c0b826a, 0x18f8b83c, 0x15e21445, 0x12c8106f, 0xfab272b, 0xc8bd35e, + 0x96a9049, 0x647d97c, + 0x3242abf, 0x0, 0xfcdbd541, 0xf9b82684, 0xf6956fb7, 0xf3742ca2, 0xf054d8d5, + 0xed37ef91, + 0xea1debbb, 0xe70747c4, 0xe3f47d96, 0xe0e60685, 0xdddc5b3b, 0xdad7f3a2, + 0xd7d946d8, 0xd4e0cb15, + 0xd1eef59e, 0xcf043ab3, 0xcc210d79, 0xc945dfec, 0xc67322ce, 0xc3a94590, + 0xc0e8b648, 0xbe31e19b, + 0xbb8532b0, 0xb8e31319, 0xb64beacd, 0xb3c0200c, 0xb140175b, 0xaecc336c, + 0xac64d510, 0xaa0a5b2e, + 0xa7bd22ac, 0xa57d8666, 0xa34bdf20, 0xa1288376, 0x9f13c7d0, 0x9d0dfe54, + 0x9b1776da, 0x99307ee0, + 0x9759617f, 0x9592675c, 0x93dbd6a0, 0x9235f2ec, 0x90a0fd4e, 0x8f1d343a, + 0x8daad37b, 0x8c4a142f, + 0x8afb2cbb, 0x89be50c3, 0x8893b125, 0x877b7bec, 0x8675dc4f, 0x8582faa5, + 0x84a2fc62, 0x83d60412, + 0x831c314e, 0x8275a0c0, 0x81e26c16, 0x8162aa04, 0x80f66e3c, 0x809dc971, + 0x8058c94c, 0x80277872, + 0x8009de7e, 0x80000000, 0x8009de7e, 0x80277872, 0x8058c94c, 0x809dc971, + 0x80f66e3c, 0x8162aa04, + 0x81e26c16, 0x8275a0c0, 0x831c314e, 0x83d60412, 0x84a2fc62, 0x8582faa5, + 0x8675dc4f, 0x877b7bec, + 0x8893b125, 0x89be50c3, 0x8afb2cbb, 0x8c4a142f, 0x8daad37b, 0x8f1d343a, + 0x90a0fd4e, 0x9235f2ec, + 0x93dbd6a0, 0x9592675c, 0x9759617f, 0x99307ee0, 0x9b1776da, 0x9d0dfe54, + 0x9f13c7d0, 0xa1288376, + 0xa34bdf20, 0xa57d8666, 0xa7bd22ac, 0xaa0a5b2e, 0xac64d510, 0xaecc336c, + 0xb140175b, 0xb3c0200c, + 0xb64beacd, 0xb8e31319, 0xbb8532b0, 0xbe31e19b, 0xc0e8b648, 0xc3a94590, + 0xc67322ce, 0xc945dfec, + 0xcc210d79, 0xcf043ab3, 0xd1eef59e, 0xd4e0cb15, 0xd7d946d8, 0xdad7f3a2, + 0xdddc5b3b, 0xe0e60685, + 0xe3f47d96, 0xe70747c4, 0xea1debbb, 0xed37ef91, 0xf054d8d5, 0xf3742ca2, + 0xf6956fb7, 0xf9b82684, + 0xfcdbd541, 0x0, 0x3242abf +}; + + +/** + * @brief Fast approximation to the trigonometric sine function for Q31 data. + * @param[in] x Scaled input value in radians. + * @return sin(x). + * + * The Q31 input value is in the range [0 +1) and is mapped to a radian value in the range [0 2*pi). + */ + +q31_t arm_sin_q31( + q31_t x) +{ + q31_t sinVal, in, in2; /* Temporary variables for input, output */ + uint32_t index; /* Index variables */ + q31_t wa, wb, wc, wd; /* Cubic interpolation coefficients */ + q31_t a, b, c, d; /* Four nearest output values */ + q31_t *tablePtr; /* Pointer to table */ + q31_t fract, fractCube, fractSquare; /* Temporary values for fractional values */ + q31_t oneBy6 = 0x15555555; /* Fixed point value of 1/6 */ + q31_t tableSpacing = TABLE_SPACING_Q31; /* Table spacing */ + q31_t temp; /* Temporary variable for intermediate process */ + + in = x; + + /* Calculate the nearest index */ + index = (uint32_t) in / (uint32_t) tableSpacing; + + /* Calculate the nearest value of input */ + in2 = (q31_t) index *tableSpacing; + + /* Calculation of fractional value */ + fract = (in - in2) << 8; + + /* fractSquare = fract * fract */ + fractSquare = ((q31_t) (((q63_t) fract * fract) >> 32)); + fractSquare = fractSquare << 1; + + /* fractCube = fract * fract * fract */ + fractCube = ((q31_t) (((q63_t) fractSquare * fract) >> 32)); + fractCube = fractCube << 1; + + /* Initialise table pointer */ + tablePtr = (q31_t *) & sinTableQ31[index]; + + /* Cubic interpolation process */ + /* Calculation of wa */ + /* wa = -(oneBy6)*fractCube + (fractSquare >> 1u) - (0x2AAAAAAA)*fract; */ + wa = ((q31_t) (((q63_t) oneBy6 * fractCube) >> 32)); + temp = 0x2AAAAAAA; + wa = (q31_t) ((((q63_t) wa << 32) + ((q63_t) temp * fract)) >> 32); + wa = -(wa << 1u); + wa += (fractSquare >> 1u); + + /* Read first nearest value of output from the sin table */ + a = *tablePtr++; + + /* sinVal = a*wa */ + sinVal = ((q31_t) (((q63_t) a * wa) >> 32)); + + /* q31(1.31) Fixed point value of 1 */ + temp = 0x7FFFFFFF; + + /* Calculation of wb */ + wb = ((fractCube >> 1u) - (fractSquare + (fract >> 1u))) + temp; + + /* Read second nearest value of output from the sin table */ + b = *tablePtr++; + + /* sinVal += b*wb */ + sinVal = (q31_t) ((((q63_t) sinVal << 32) + (q63_t) b * (wb)) >> 32); + + /* Calculation of wc */ + wc = -fractCube + fractSquare; + wc = (wc >> 1u) + fract; + + /* Read third nearest value of output from the sin table */ + c = *tablePtr++; + + /* sinVal += c*wc */ + sinVal = (q31_t) ((((q63_t) sinVal << 32) + ((q63_t) c * wc)) >> 32); + + /* Calculation of wd */ + /* wd = (oneBy6) * fractCube - (oneBy6) * fract; */ + fractCube = fractCube - fract; + wd = ((q31_t) (((q63_t) oneBy6 * fractCube) >> 32)); + wd = (wd << 1u); + + /* Read fourth nearest value of output from the sin table */ + d = *tablePtr++; + + /* sinVal += d*wd; */ + sinVal = (q31_t) ((((q63_t) sinVal << 32) + ((q63_t) d * wd)) >> 32); + + /* convert sinVal in 2.30 format to 1.31 format */ + return (sinVal << 1u); + +} + +/** + * @} end of sin group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q15.c new file mode 100644 index 000000000..bcd5287f9 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q15.c @@ -0,0 +1,178 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_sqrt_q15.c +* +* Description: Q15 square root function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_common_tables.h" + + +/** + * @ingroup groupFastMath + */ + +/** + * @addtogroup SQRT + * @{ + */ + + /** + * @brief Q15 square root function. + * @param[in] in input value. The range of the input value is [0 +1) or 0x0000 to 0x7FFF. + * @param[out] *pOut square root of input value. + * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if + * in is negative value and returns zero output for negative values. + */ + +arm_status arm_sqrt_q15( + q15_t in, + q15_t * pOut) +{ + q31_t prevOut; + q15_t oneByOut; + uint32_t sign_bits; + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t out; + + if(in > 0) + { + /* run for ten iterations */ + + /* Take initial guess as half of the input and first iteration */ + out = ((q31_t) in >> 1u) + 0x3FFF; + + /* Calculation of reciprocal of out */ + /* oneByOut contains reciprocal of out which is in 2.14 format + and oneByOut should be upscaled by signBits */ + sign_bits = arm_recip_q15((q15_t) out, &oneByOut, armRecipTableQ15); + + /* 0.5 * (out) */ + out = out >> 1u; + /* prevOut = 0.5 * out + (in * (oneByOut << signBits))) */ + prevOut = out + (((q15_t) (((q31_t) in * oneByOut) >> 16)) << sign_bits); + + /* Third iteration */ + sign_bits = arm_recip_q15((q15_t) prevOut, &oneByOut, armRecipTableQ15); + prevOut = prevOut >> 1u; + out = prevOut + (((q15_t) (((q31_t) in * oneByOut) >> 16)) << sign_bits); + + sign_bits = arm_recip_q15((q15_t) out, &oneByOut, armRecipTableQ15); + out = out >> 1u; + prevOut = out + (((q15_t) (((q31_t) in * oneByOut) >> 16)) << sign_bits); + + /* Fifth iteration */ + sign_bits = arm_recip_q15((q15_t) prevOut, &oneByOut, armRecipTableQ15); + prevOut = prevOut >> 1u; + out = prevOut + (((q15_t) (((q31_t) in * oneByOut) >> 16)) << sign_bits); + + sign_bits = arm_recip_q15((q15_t) out, &oneByOut, armRecipTableQ15); + out = out >> 1u; + prevOut = out + (((q15_t) (((q31_t) in * oneByOut) >> 16)) << sign_bits); + + /* Seventh iteration */ + sign_bits = arm_recip_q15((q15_t) prevOut, &oneByOut, armRecipTableQ15); + prevOut = prevOut >> 1u; + out = prevOut + (((q15_t) (((q31_t) in * oneByOut) >> 16)) << sign_bits); + + sign_bits = arm_recip_q15((q15_t) out, &oneByOut, armRecipTableQ15); + out = out >> 1u; + prevOut = out + (((q15_t) (((q31_t) in * oneByOut) >> 16)) << sign_bits); + + sign_bits = arm_recip_q15((q15_t) prevOut, &oneByOut, armRecipTableQ15); + prevOut = prevOut >> 1u; + out = prevOut + (((q15_t) (((q31_t) in * oneByOut) >> 16)) << sign_bits); + + /* tenth iteration */ + sign_bits = arm_recip_q15((q15_t) out, &oneByOut, armRecipTableQ15); + out = out >> 1u; + *pOut = out + (((q15_t) (((q31_t) in * oneByOut) >> 16)) << sign_bits); + + return (ARM_MATH_SUCCESS); + } + +#else + + /* Run the below code for Cortex-M0 */ + + q31_t out, loopVar; /* Temporary variable for output, loop variable */ + if(in > 0) + { + /* run for ten iterations */ + + /* Take initial guess as half of the input and first iteration */ + out = ((q31_t) in >> 1u) + 0x3FFF; + + /* Calculation of reciprocal of out */ + + /* oneByOut contains reciprocal of out which is in 2.14 format + and oneByOut should be upscaled by sign bits */ + sign_bits = arm_recip_q15((q15_t) out, &oneByOut, armRecipTableQ15); + + /* 0.5 * (out) */ + out = out >> 1u; + /* prevOut = 0.5 * out + (in * oneByOut) << signbits))) */ + prevOut = out + (((q15_t) (((q31_t) in * oneByOut) >> 16)) << sign_bits); + + /* loop for third iteration to tenth iteration */ + + for (loopVar = 1; loopVar <= 8; loopVar++) + { + + sign_bits = arm_recip_q15((q15_t) prevOut, &oneByOut, armRecipTableQ15); + /* 0.5 * (prevOut) */ + prevOut = prevOut >> 1u; + /* prevOut = 0.5 * prevOut+ (in * oneByOut) << signbits))) */ + out = + prevOut + (((q15_t) (((q31_t) in * oneByOut) >> 16)) << sign_bits); + /* prevOut = out */ + prevOut = out; + + } + /* output is moved to pOut pointer */ + *pOut = prevOut; + + return (ARM_MATH_SUCCESS); + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + else + { + + *pOut = 0; + return (ARM_MATH_ARGUMENT_ERROR); + } + +} + +/** + * @} end of SQRT group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q31.c new file mode 100644 index 000000000..043678da3 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q31.c @@ -0,0 +1,199 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_sqrt_q31.c +* +* Description: Q31 square root function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @ingroup groupFastMath + */ + +/** + * @addtogroup SQRT + * @{ + */ + +/** + * @brief Q31 square root function. + * @param[in] in input value. The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF. + * @param[out] *pOut square root of input value. + * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if + * in is negative value and returns zero output for negative values. + */ + +arm_status arm_sqrt_q31( + q31_t in, + q31_t * pOut) +{ + q63_t prevOut; + q31_t oneByOut; + uint32_t signBits; + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q63_t out; + + if(in > 0) + { + + /* run for ten iterations */ + + /* Take initial guess as half of the input and first iteration */ + out = (in >> 1) + 0x3FFFFFFF; + + /* Calculation of reciprocal of out */ + /* oneByOut contains reciprocal of out which is in 2.30 format + and oneByOut should be upscaled by signBits */ + signBits = arm_recip_q31((q31_t) out, &oneByOut, armRecipTableQ31); + + /* 0.5 * (out) */ + out = out >> 1u; + + /* prevOut = 0.5 * out + (in * (oneByOut << signBits))) */ + prevOut = out + (((q31_t) (((q63_t) in * oneByOut) >> 32)) << signBits); + + /* Third iteration */ + signBits = arm_recip_q31((q31_t) prevOut, &oneByOut, armRecipTableQ31); + prevOut = prevOut >> 1u; + out = prevOut + (((q31_t) (((q63_t) in * oneByOut) >> 32)) << signBits); + + signBits = arm_recip_q31((q31_t) out, &oneByOut, armRecipTableQ31); + out = out >> 1u; + prevOut = out + (((q31_t) (((q63_t) in * oneByOut) >> 32)) << signBits); + + /* Fifth iteration */ + signBits = arm_recip_q31((q31_t) prevOut, &oneByOut, armRecipTableQ31); + prevOut = prevOut >> 1u; + out = prevOut + (((q31_t) (((q63_t) in * oneByOut) >> 32)) << signBits); + + signBits = arm_recip_q31((q31_t) out, &oneByOut, armRecipTableQ31); + out = out >> 1u; + prevOut = out + (((q31_t) (((q63_t) in * oneByOut) >> 32)) << signBits); + + /* Seventh iteration */ + signBits = arm_recip_q31((q31_t) prevOut, &oneByOut, armRecipTableQ31); + prevOut = prevOut >> 1u; + out = prevOut + (((q31_t) (((q63_t) in * oneByOut) >> 32)) << signBits); + + signBits = arm_recip_q31((q31_t) out, &oneByOut, armRecipTableQ31); + out = out >> 1u; + prevOut = out + (((q31_t) (((q63_t) in * oneByOut) >> 32)) << signBits); + + signBits = arm_recip_q31((q31_t) prevOut, &oneByOut, armRecipTableQ31); + prevOut = prevOut >> 1u; + out = prevOut + (((q31_t) (((q63_t) in * oneByOut) >> 32)) << signBits); + + signBits = arm_recip_q31((q31_t) out, &oneByOut, armRecipTableQ31); + out = out >> 1u; + prevOut = out + (((q31_t) (((q63_t) in * oneByOut) >> 32)) << signBits); + + signBits = arm_recip_q31((q31_t) prevOut, &oneByOut, armRecipTableQ31); + prevOut = prevOut >> 1u; + out = prevOut + (((q31_t) (((q63_t) in * oneByOut) >> 32)) << signBits); + + signBits = arm_recip_q31((q31_t) out, &oneByOut, armRecipTableQ31); + out = out >> 1u; + prevOut = out + (((q31_t) (((q63_t) in * oneByOut) >> 32)) << signBits); + + signBits = arm_recip_q31((q31_t) prevOut, &oneByOut, armRecipTableQ31); + prevOut = prevOut >> 1u; + out = prevOut + (((q31_t) (((q63_t) in * oneByOut) >> 32)) << signBits); + + signBits = arm_recip_q31((q31_t) out, &oneByOut, armRecipTableQ31); + out = out >> 1u; + prevOut = out + (((q31_t) (((q63_t) in * oneByOut) >> 32)) << signBits); + + signBits = arm_recip_q31((q31_t) prevOut, &oneByOut, armRecipTableQ31); + prevOut = prevOut >> 1u; + out = prevOut + (((q31_t) (((q63_t) in * oneByOut) >> 32)) << signBits); + + /* tenth iteration */ + signBits = arm_recip_q31((q31_t) out, &oneByOut, armRecipTableQ31); + out = out >> 1u; + *pOut = out + (((q31_t) (((q63_t) in * oneByOut) >> 32)) << signBits); + + return (ARM_MATH_SUCCESS); + } + +#else + + /* Run the below code for Cortex-M0 */ + + q63_t out, loopVar; /* Temporary variable for output, loop variable */ + if(in > 0) + { + + /* run for ten iterations */ + + /* Take initial guess as half of the input and first iteration */ + out = (in >> 1) + 0x3FFFFFFF; + + /* Calculation of reciprocal of out */ + /* oneByOut contains reciprocal of out which is in 2.30 format + and oneByOut should be upscaled by sign bits */ + signBits = arm_recip_q31((q31_t) out, &oneByOut, armRecipTableQ31); + + /* 0.5 * (out) */ + out = out >> 1u; + + /* prevOut = 0.5 * out + (in * (oneByOut) << signbits) */ + prevOut = out + (((q31_t) (((q63_t) in * oneByOut) >> 32)) << signBits); + + + /* loop for third iteration to tength iteration */ + + for (loopVar = 1; loopVar <= 14; loopVar++) + { + + signBits = arm_recip_q31((q31_t) prevOut, &oneByOut, armRecipTableQ31); + /* 0.5 * (prevOut) */ + prevOut = prevOut >> 1u; + /* out = 0.5 * prevOut + (in * oneByOut) << signbits))) */ + out = prevOut + (((q31_t) (((q63_t) in * oneByOut) >> 32)) << signBits); + /* prevOut = out */ + prevOut = out; + + } + /* output is moved to pOut pointer */ + *pOut = prevOut; + + return (ARM_MATH_SUCCESS); + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + else + { + *pOut = 0; + return (ARM_MATH_ARGUMENT_ERROR); + } +} + +/** + * @} end of SQRT group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c new file mode 100644 index 000000000..ff6239a9e --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c @@ -0,0 +1,102 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_biquad_cascade_df1_32x64_init_q31.c +* +* Description: High precision Q31 Biquad cascade filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF1_32x64 + * @{ + */ + +/** + * @details + * + * @param[in,out] *S points to an instance of the high precision Q31 Biquad cascade filter structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] postShift Shift to be applied after the accumulator. Varies according to the coefficients format. + * @return none + * + * Coefficient and State Ordering: + * + * \par + * The coefficients are stored in the array pCoeffs in the following order: + *
   
+ *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}   
+ * 
+ * where b1x and a1x are the coefficients for the first stage, + * b2x and a2x are the coefficients for the second stage, + * and so on. The pCoeffs array contains a total of 5*numStages values. + * + * \par + * The pState points to state variables array and size of each state variable is 1.63 format. + * Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. + * The state variables are arranged in the state array as: + *
   
+ *     {x[n-1], x[n-2], y[n-1], y[n-2]}   
+ * 
+ * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. + * The state array has a total length of 4*numStages values. + * The state variables are updated after each block of data is processed; the coefficients are untouched. + */ + +void arm_biquad_cas_df1_32x64_init_q31( + arm_biquad_cas_df1_32x64_ins_q31 * S, + uint8_t numStages, + q31_t * pCoeffs, + q63_t * pState, + uint8_t postShift) +{ + /* Assign filter stages */ + S->numStages = numStages; + + /* Assign postShift to be applied to the output */ + S->postShift = postShift; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always 4 * numStages */ + memset(pState, 0, (4u * (uint32_t) numStages) * sizeof(q63_t)); + + /* Assign state pointer */ + S->pState = pState; +} + +/** + * @} end of BiquadCascadeDF1_32x64 group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c new file mode 100644 index 000000000..73ff8b0d7 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c @@ -0,0 +1,476 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_biquad_cascade_df1_32x64_q31.c +* +* Description: High precision Q31 Biquad cascade filter processing function +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup BiquadCascadeDF1_32x64 High Precision Q31 Biquad Cascade Filter + * + * This function implements a high precision Biquad cascade filter which operates on + * Q31 data values. The filter coefficients are in 1.31 format and the state variables + * are in 1.63 format. The double precision state variables reduce quantization noise + * in the filter and provide a cleaner output. + * These filters are particularly useful when implementing filters in which the + * singularities are close to the unit circle. This is common for low pass or high + * pass filters with very low cutoff frequencies. + * + * The function operates on blocks of input and output data + * and each call to the function processes blockSize samples through + * the filter. pSrc and pDst points to input and output arrays + * containing blockSize Q31 values. + * + * \par Algorithm + * Each Biquad stage implements a second order filter using the difference equation: + *
   
+ *     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]   
+ * 
+ * A Direct Form I algorithm is used with 5 coefficients and 4 state variables per stage. + * \image html Biquad.gif "Single Biquad filter stage" + * Coefficients b0, b1, and b2 multiply the input signal x[n] and are referred to as the feedforward coefficients. + * Coefficients a1 and a2 multiply the output signal y[n] and are referred to as the feedback coefficients. + * Pay careful attention to the sign of the feedback coefficients. + * Some design tools use the difference equation + *
   
+ *     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] - a1 * y[n-1] - a2 * y[n-2]   
+ * 
+ * In this case the feedback coefficients a1 and a2 must be negated when used with the CMSIS DSP Library. + * + * \par + * Higher order filters are realized as a cascade of second order sections. + * numStages refers to the number of second order stages used. + * For example, an 8th order filter would be realized with numStages=4 second order stages. + * \image html BiquadCascade.gif "8th order filter using a cascade of Biquad stages" + * A 9th order filter would be realized with numStages=5 second order stages with the coefficients for one of the stages configured as a first order filter (b2=0 and a2=0). + * + * \par + * The pState points to state variables array . + * Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2] and each state variable in 1.63 format to improve precision. + * The state variables are arranged in the array as: + *
   
+ *     {x[n-1], x[n-2], y[n-1], y[n-2]}   
+ * 
+ * + * \par + * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. + * The state array has a total length of 4*numStages values of data in 1.63 format. + * The state variables are updated after each block of data is processed; the coefficients are untouched. + * + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter. + * Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. + * + * \par Init Function + * There is also an associated initialization function which performs the following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * Set the values in the state buffer to zeros before static initialization. + * For example, to statically initialize the filter instance structure use + *
   
+ *     arm_biquad_cas_df1_32x64_ins_q31 S1 = {numStages, pState, pCoeffs, postShift};   
+ * 
+ * where numStages is the number of Biquad stages in the filter; pState is the address of the state buffer; + * pCoeffs is the address of the coefficient buffer; postShift shift to be applied which is described in detail below. + * \par Fixed-Point Behavior + * Care must be taken while using Biquad Cascade 32x64 filter function. + * Following issues must be considered: + * - Scaling of coefficients + * - Filter gain + * - Overflow and saturation + * + * \par + * Filter coefficients are represented as fractional values and + * restricted to lie in the range [-1 +1). + * The processing function has an additional scaling parameter postShift + * which allows the filter coefficients to exceed the range [+1 -1). + * At the output of the filter's accumulator is a shift register which shifts the result by postShift bits. + * \image html BiquadPostshift.gif "Fixed-point Biquad with shift by postShift bits after accumulator" + * This essentially scales the filter coefficients by 2^postShift. + * For example, to realize the coefficients + *
   
+ *    {1.5, -0.8, 1.2, 1.6, -0.9}   
+ * 
+ * set the Coefficient array to: + *
   
+ *    {0.75, -0.4, 0.6, 0.8, -0.45}   
+ * 
+ * and set postShift=1 + * + * \par + * The second thing to keep in mind is the gain through the filter. + * The frequency response of a Biquad filter is a function of its coefficients. + * It is possible for the gain through the filter to exceed 1.0 meaning that the filter increases the amplitude of certain frequencies. + * This means that an input signal with amplitude < 1.0 may result in an output > 1.0 and these are saturated or overflowed based on the implementation of the filter. + * To avoid this behavior the filter needs to be scaled down such that its peak gain < 1.0 or the input signal must be scaled down so that the combination of input and filter are never overflowed. + * + * \par + * The third item to consider is the overflow and saturation behavior of the fixed-point Q31 version. + * This is described in the function specific documentation below. + */ + +/** + * @addtogroup BiquadCascadeDF1_32x64 + * @{ + */ + +/** + * @details + + * @param[in] *S points to an instance of the high precision Q31 Biquad cascade filter. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + * + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around rather than clip. + * In order to avoid overflows completely the input signal must be scaled down by 2 bits and lie in the range [-0.25 +0.25). + * After all 5 multiply-accumulates are performed, the 2.62 accumulator is shifted by postShift bits and the result truncated to + * 1.31 format by discarding the low 32 bits. + * + * \par + * Two related functions are provided in the CMSIS DSP library. + * arm_biquad_cascade_df1_q31() implements a Biquad cascade with 32-bit coefficients and state variables with a Q63 accumulator. + * arm_biquad_cascade_df1_fast_q31() implements a Biquad cascade with 32-bit coefficients and state variables with a Q31 accumulator. + */ + +void arm_biquad_cas_df1_32x64_q31( + const arm_biquad_cas_df1_32x64_ins_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pIn = pSrc; /* input pointer initialization */ + q31_t *pOut = pDst; /* output pointer initialization */ + q63_t *pState = S->pState; /* state pointer initialization */ + q31_t *pCoeffs = S->pCoeffs; /* coeff pointer initialization */ + q63_t acc; /* accumulator */ + q63_t Xn1, Xn2, Yn1, Yn2; /* Filter state variables */ + q31_t b0, b1, b2, a1, a2; /* Filter coefficients */ + q63_t Xn; /* temporary input */ + int32_t shift = (int32_t) S->postShift + 1; /* Shift to be applied to the output */ + uint32_t sample, stage = S->numStages; /* loop counters */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the state values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + /* Apply loop unrolling and compute 4 output values simultaneously. */ + /* The variable acc hold output value that is being computed and + * stored in the destination buffer + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + + sample = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(sample > 0u) + { + /* Read the input */ + Xn = *pIn++; + + /* The value is shifted to the MSB to perform 32x64 multiplication */ + Xn = Xn << 32; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + + /* acc = b0 * x[n] */ + acc = mult32x64(Xn, b0); + /* acc += b1 * x[n-1] */ + acc += mult32x64(Xn1, b1); + /* acc += b[2] * x[n-2] */ + acc += mult32x64(Xn2, b2); + /* acc += a1 * y[n-1] */ + acc += mult32x64(Yn1, a1); + /* acc += a2 * y[n-2] */ + acc += mult32x64(Yn2, a2); + + /* The result is converted to 1.63 , Yn2 variable is reused */ + Yn2 = acc << shift; + + /* Store the output in the destination buffer in 1.31 format. */ + *pOut++ = (q31_t) (acc >> (32 - shift)); + + /* Read the second input into Xn2, to reuse the value */ + Xn2 = *pIn++; + + /* The value is shifted to the MSB to perform 32x64 multiplication */ + Xn2 = Xn2 << 32; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + + /* acc = b0 * x[n] */ + acc = mult32x64(Xn2, b0); + /* acc += b1 * x[n-1] */ + acc += mult32x64(Xn, b1); + /* acc += b[2] * x[n-2] */ + acc += mult32x64(Xn1, b2); + /* acc += a1 * y[n-1] */ + acc += mult32x64(Yn2, a1); + /* acc += a2 * y[n-2] */ + acc += mult32x64(Yn1, a2); + + /* The result is converted to 1.63, Yn1 variable is reused */ + Yn1 = acc << shift; + + /* The result is converted to 1.31 */ + /* Store the output in the destination buffer. */ + *pOut++ = (q31_t) (acc >> (32 - shift)); + + /* Read the third input into Xn1, to reuse the value */ + Xn1 = *pIn++; + + /* The value is shifted to the MSB to perform 32x64 multiplication */ + Xn1 = Xn1 << 32; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + acc = mult32x64(Xn1, b0); + /* acc += b1 * x[n-1] */ + acc += mult32x64(Xn2, b1); + /* acc += b[2] * x[n-2] */ + acc += mult32x64(Xn, b2); + /* acc += a1 * y[n-1] */ + acc += mult32x64(Yn1, a1); + /* acc += a2 * y[n-2] */ + acc += mult32x64(Yn2, a2); + + /* The result is converted to 1.63, Yn2 variable is reused */ + Yn2 = acc << shift; + + /* Store the output in the destination buffer in 1.31 format. */ + *pOut++ = (q31_t) (acc >> (32 - shift)); + + /* Read the fourth input into Xn, to reuse the value */ + Xn = *pIn++; + + /* The value is shifted to the MSB to perform 32x64 multiplication */ + Xn = Xn << 32; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + acc = mult32x64(Xn, b0); + /* acc += b1 * x[n-1] */ + acc += mult32x64(Xn1, b1); + /* acc += b[2] * x[n-2] */ + acc += mult32x64(Xn2, b2); + /* acc += a1 * y[n-1] */ + acc += mult32x64(Yn2, a1); + /* acc += a2 * y[n-2] */ + acc += mult32x64(Yn1, a2); + + /* The result is converted to 1.63, Yn1 variable is reused */ + Yn1 = acc << shift; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + + /* Store the output in the destination buffer in 1.31 format. */ + *pOut++ = (q31_t) (acc >> (32 - shift)); + + /* decrement the loop counter */ + sample--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + sample = (blockSize & 0x3u); + + while(sample > 0u) + { + /* Read the input */ + Xn = *pIn++; + + /* The value is shifted to the MSB to perform 32x64 multiplication */ + Xn = Xn << 32; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + acc = mult32x64(Xn, b0); + /* acc += b1 * x[n-1] */ + acc += mult32x64(Xn1, b1); + /* acc += b[2] * x[n-2] */ + acc += mult32x64(Xn2, b2); + /* acc += a1 * y[n-1] */ + acc += mult32x64(Yn1, a1); + /* acc += a2 * y[n-2] */ + acc += mult32x64(Yn2, a2); + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + Yn1 = acc << shift; + + /* Store the output in the destination buffer in 1.31 format. */ + *pOut++ = (q31_t) (acc >> (32 - shift)); + + /* decrement the loop counter */ + sample--; + } + + /* The first stage output is given as input to the second stage. */ + pIn = pDst; + + /* Reset to destination buffer working pointer */ + pOut = pDst; + + /* Store the updated state variables back into the pState array */ + *pState++ = Xn1; + *pState++ = Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + } while(--stage); + +#else + + /* Run the below code for Cortex-M0 */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the state values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + /* The variable acc hold output value that is being computed and + * stored in the destination buffer + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + + sample = blockSize; + + while(sample > 0u) + { + /* Read the input */ + Xn = *pIn++; + + /* The value is shifted to the MSB to perform 32x64 multiplication */ + Xn = Xn << 32; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + acc = mult32x64(Xn, b0); + /* acc += b1 * x[n-1] */ + acc += mult32x64(Xn1, b1); + /* acc += b[2] * x[n-2] */ + acc += mult32x64(Xn2, b2); + /* acc += a1 * y[n-1] */ + acc += mult32x64(Yn1, a1); + /* acc += a2 * y[n-2] */ + acc += mult32x64(Yn2, a2); + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + Yn1 = acc << shift; + + /* Store the output in the destination buffer in 1.31 format. */ + *pOut++ = (q31_t) (acc >> (32 - shift)); + + /* decrement the loop counter */ + sample--; + } + + /* The first stage output is given as input to the second stage. */ + pIn = pDst; + + /* Reset to destination buffer working pointer */ + pOut = pDst; + + /* Store the updated state variables back into the pState array */ + *pState++ = Xn1; + *pState++ = Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + } while(--stage); + +#endif /* #ifndef ARM_MATH_CM0 */ +} + + /** + * @} end of BiquadCascadeDF1_32x64 group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c new file mode 100644 index 000000000..bdfbf22fe --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c @@ -0,0 +1,418 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_biquad_cascade_df1_f32.c +* +* Description: Processing function for the +* floating-point Biquad cascade DirectFormI(DF1) filter. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup BiquadCascadeDF1 Biquad Cascade IIR Filters Using Direct Form I Structure + * + * This set of functions implements arbitrary order recursive (IIR) filters. + * The filters are implemented as a cascade of second order Biquad sections. + * The functions support Q15, Q31 and floating-point data types. + * Fast version of Q15 and Q31 also supported on CortexM4 and Cortex-M3. + * + * The functions operate on blocks of input and output data and each call to the function + * processes blockSize samples through the filter. + * pSrc points to the array of input data and + * pDst points to the array of output data. + * Both arrays contain blockSize values. + * + * \par Algorithm + * Each Biquad stage implements a second order filter using the difference equation: + *
   
+ *     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]   
+ * 
+ * A Direct Form I algorithm is used with 5 coefficients and 4 state variables per stage. + * \image html Biquad.gif "Single Biquad filter stage" + * Coefficients b0, b1 and b2 multiply the input signal x[n] and are referred to as the feedforward coefficients. + * Coefficients a1 and a2 multiply the output signal y[n] and are referred to as the feedback coefficients. + * Pay careful attention to the sign of the feedback coefficients. + * Some design tools use the difference equation + *
   
+ *     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] - a1 * y[n-1] - a2 * y[n-2]   
+ * 
+ * In this case the feedback coefficients a1 and a2 must be negated when used with the CMSIS DSP Library. + * + * \par + * Higher order filters are realized as a cascade of second order sections. + * numStages refers to the number of second order stages used. + * For example, an 8th order filter would be realized with numStages=4 second order stages. + * \image html BiquadCascade.gif "8th order filter using a cascade of Biquad stages" + * A 9th order filter would be realized with numStages=5 second order stages with the coefficients for one of the stages configured as a first order filter (b2=0 and a2=0). + * + * \par + * The pState points to state variables array. + * Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. + * The state variables are arranged in the pState array as: + *
   
+ *     {x[n-1], x[n-2], y[n-1], y[n-2]}   
+ * 
+ * + * \par + * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. + * The state array has a total length of 4*numStages values. + * The state variables are updated after each block of data is processed, the coefficients are untouched. + * + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter. + * Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Init Functions + * There is also an associated initialization function for each data type. + * The initialization function performs following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * Set the values in the state buffer to zeros before static initialization. + * The code below statically initializes each of the 3 different data type filter instance structures + *
   
+ *     arm_biquad_casd_df1_inst_f32 S1 = {numStages, pState, pCoeffs};   
+ *     arm_biquad_casd_df1_inst_q15 S2 = {numStages, pState, pCoeffs, postShift};   
+ *     arm_biquad_casd_df1_inst_q31 S3 = {numStages, pState, pCoeffs, postShift};   
+ * 
+ * where numStages is the number of Biquad stages in the filter; pState is the address of the state buffer; + * pCoeffs is the address of the coefficient buffer; postShift shift to be applied. + * + * \par Fixed-Point Behavior + * Care must be taken when using the Q15 and Q31 versions of the Biquad Cascade filter functions. + * Following issues must be considered: + * - Scaling of coefficients + * - Filter gain + * - Overflow and saturation + * + * \par + * Scaling of coefficients: + * Filter coefficients are represented as fractional values and + * coefficients are restricted to lie in the range [-1 +1). + * The fixed-point functions have an additional scaling parameter postShift + * which allow the filter coefficients to exceed the range [+1 -1). + * At the output of the filter's accumulator is a shift register which shifts the result by postShift bits. + * \image html BiquadPostshift.gif "Fixed-point Biquad with shift by postShift bits after accumulator" + * This essentially scales the filter coefficients by 2^postShift. + * For example, to realize the coefficients + *
   
+ *    {1.5, -0.8, 1.2, 1.6, -0.9}   
+ * 
+ * set the pCoeffs array to: + *
   
+ *    {0.75, -0.4, 0.6, 0.8, -0.45}   
+ * 
+ * and set postShift=1 + * + * \par + * Filter gain: + * The frequency response of a Biquad filter is a function of its coefficients. + * It is possible for the gain through the filter to exceed 1.0 meaning that the filter increases the amplitude of certain frequencies. + * This means that an input signal with amplitude < 1.0 may result in an output > 1.0 and these are saturated or overflowed based on the implementation of the filter. + * To avoid this behavior the filter needs to be scaled down such that its peak gain < 1.0 or the input signal must be scaled down so that the combination of input and filter are never overflowed. + * + * \par + * Overflow and saturation: + * For Q15 and Q31 versions, it is described separately as part of the function specific documentation below. + */ + +/** + * @addtogroup BiquadCascadeDF1 + * @{ + */ + +/** + * @param[in] *S points to an instance of the floating-point Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + */ + +void arm_biquad_cascade_df1_f32( + const arm_biquad_casd_df1_inst_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + float32_t *pIn = pSrc; /* source pointer */ + float32_t *pOut = pDst; /* destination pointer */ + float32_t *pState = S->pState; /* pState pointer */ + float32_t *pCoeffs = S->pCoeffs; /* coefficient pointer */ + float32_t acc; /* Simulates the accumulator */ + float32_t b0, b1, b2, a1, a2; /* Filter coefficients */ + float32_t Xn1, Xn2, Yn1, Yn2; /* Filter pState variables */ + float32_t Xn; /* temporary input */ + uint32_t sample, stage = S->numStages; /* loop counters */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the pState values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + /* Apply loop unrolling and compute 4 output values simultaneously. */ + /* The variable acc hold output values that are being computed: + * + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + + sample = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(sample > 0u) + { + /* Read the first input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + Yn2 = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn1) + (a2 * Yn2); + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = Yn2; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + + /* Read the second input */ + Xn2 = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + Yn1 = (b0 * Xn2) + (b1 * Xn) + (b2 * Xn1) + (a1 * Yn2) + (a2 * Yn1); + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = Yn1; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + + /* Read the third input */ + Xn1 = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + Yn2 = (b0 * Xn1) + (b1 * Xn2) + (b2 * Xn) + (a1 * Yn1) + (a2 * Yn2); + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = Yn2; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + + /* Read the forth input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + Yn1 = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn2) + (a2 * Yn1); + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = Yn1; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + + /* decrement the loop counter */ + sample--; + + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + sample = blockSize & 0x3u; + + while(sample > 0u) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + acc = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn1) + (a2 * Yn2); + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + Yn1 = acc; + + /* decrement the loop counter */ + sample--; + + } + + /* Store the updated state variables back into the pState array */ + *pState++ = Xn1; + *pState++ = Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + /* The first stage goes from the input buffer to the output buffer. */ + /* Subsequent numStages occur in-place in the output buffer */ + pIn = pDst; + + /* Reset the output pointer */ + pOut = pDst; + + /* decrement the loop counter */ + stage--; + + } while(stage > 0u); + +#else + + /* Run the below code for Cortex-M0 */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the pState values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + /* The variables acc holds the output value that is computed: + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + + sample = blockSize; + + while(sample > 0u) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + acc = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn1) + (a2 * Yn2); + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + Yn1 = acc; + + /* decrement the loop counter */ + sample--; + } + + /* Store the updated state variables back into the pState array */ + *pState++ = Xn1; + *pState++ = Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + /* The first stage goes from the input buffer to the output buffer. */ + /* Subsequent numStages occur in-place in the output buffer */ + pIn = pDst; + + /* Reset the output pointer */ + pOut = pDst; + + /* decrement the loop counter */ + stage--; + + } while(stage > 0u); + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + + + /** + * @} end of BiquadCascadeDF1 group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c new file mode 100644 index 000000000..c2ac80255 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c @@ -0,0 +1,283 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_biquad_cascade_df1_fast_q15.c +* +* Description: Fast processing function for the +* Q15 Biquad cascade filter. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.9 2010/08/16 +* Initial version +* +* +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF1 + * @{ + */ + +/** + * @details + * @param[in] *S points to an instance of the Q15 Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * This fast version uses a 32-bit accumulator with 2.30 format. + * The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around and distorts the result. + * In order to avoid overflows completely the input signal must be scaled down by two bits and lie in the range [-0.25 +0.25). + * The 2.30 accumulator is then shifted by postShift bits and the result truncated to 1.15 format by discarding the low 16 bits. + * + * \par + * Refer to the function arm_biquad_cascade_df1_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion. Both the slow and the fast versions use the same instance structure. + * Use the function arm_biquad_cascade_df1_init_q15() to initialize the filter structure. + * + */ + +void arm_biquad_cascade_df1_fast_q15( + const arm_biquad_casd_df1_inst_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pIn = pSrc; /* Source pointer */ + q15_t *pOut = pDst; /* Destination pointer */ + q31_t in; /* Temporary variable to hold input value */ + q31_t out; /* Temporary variable to hold output value */ + q31_t b0; /* Temporary variable to hold bo value */ + q31_t b1, a1; /* Filter coefficients */ + q31_t state_in, state_out; /* Filter state variables */ + q31_t acc0; /* Accumulator */ + int32_t shift = (int32_t) (15 - S->postShift); /* Post shift */ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pState_q31; /* 32-bit state pointer for SIMD implementation */ + uint32_t sample, stage = S->numStages; /* Stage loop counter */ + + + + do + { + /* Initialize state pointer of type q31 */ + pState_q31 = (q31_t *) (pState); + + /* Read the b0 and 0 coefficients using SIMD */ + b0 = *__SIMD32(pCoeffs)++; + + /* Read the b1 and b2 coefficients using SIMD */ + b1 = *__SIMD32(pCoeffs)++; + + /* Read the a1 and a2 coefficients using SIMD */ + a1 = *__SIMD32(pCoeffs)++; + + /* Read the input state values from the state buffer: x[n-1], x[n-2] */ + state_in = (q31_t) (*pState_q31++); + + /* Read the output state values from the state buffer: y[n-1], y[n-2] */ + state_out = (q31_t) (*pState_q31); + + /* Apply loop unrolling and compute 2 output values simultaneously. */ + /* The variables acc0 ... acc3 hold output values that are being computed: + * + * acc0 = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + * acc0 = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + sample = blockSize >> 1u; + + /* First part of the processing with loop unrolling. Compute 2 outputs at a time. + ** a second loop below computes the remaining 1 sample. */ + while(sample > 0u) + { + + /* Read the input */ + in = *__SIMD32(pIn)++; + + /* out = b0 * x[n] + 0 * 0 */ + out = __SMUAD(b0, in); + /* acc0 = b1 * x[n-1] + acc0 += b2 * x[n-2] + out */ + acc0 = __SMLAD(b1, state_in, out); + /* acc0 += a1 * y[n-1] + acc0 += a2 * y[n-2] */ + acc0 = __SMLAD(a1, state_out, acc0); + + /* The result is converted from 3.29 to 1.31 and then saturation is applied */ + out = __SSAT((acc0 >> shift), 16); + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc0 */ + /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */ + /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */ + +#ifndef ARM_MATH_BIG_ENDIAN + + state_in = __PKHBT(in, state_in, 16); + state_out = __PKHBT(out, state_out, 16); + +#else + + state_in = __PKHBT(state_in >> 16, (in >> 16), 16); + state_out = __PKHBT(state_out >> 16, (out), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* out = b0 * x[n] + 0 * 0 */ + out = __SMUADX(b0, in); + /* acc0 = b1 * x[n-1] + acc0 += b2 * x[n-2] + out */ + acc0 = __SMLAD(b1, state_in, out); + /* acc0 += a1 * y[n-1] + acc0 += a2 * y[n-2] */ + acc0 = __SMLAD(a1, state_out, acc0); + + /* The result is converted from 3.29 to 1.31 and then saturation is applied */ + out = __SSAT((acc0 >> shift), 16); + + + /* Store the output in the destination buffer. */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = __PKHBT(state_out, out, 16); + +#else + + *__SIMD32(pOut)++ = __PKHBT(out, state_out >> 16, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc0 */ + /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */ + /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */ + +#ifndef ARM_MATH_BIG_ENDIAN + + state_in = __PKHBT(in >> 16, state_in, 16); + state_out = __PKHBT(out, state_out, 16); + +#else + + state_in = __PKHBT(state_in >> 16, in, 16); + state_out = __PKHBT(state_out >> 16, out, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + + /* Decrement the loop counter */ + sample--; + + } + + /* If the blockSize is not a multiple of 2, compute any remaining output samples here. + ** No loop unrolling is used. */ + + if((blockSize & 0x1u) != 0u) + { + /* Read the input */ + in = *pIn++; + + /* out = b0 * x[n] + 0 * 0 */ + +#ifndef ARM_MATH_BIG_ENDIAN + + out = __SMUAD(b0, in); + +#else + + out = __SMUADX(b0, in); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* acc0 = b1 * x[n-1] + acc0 += b2 * x[n-2] + out */ + acc0 = __SMLAD(b1, state_in, out); + /* acc0 += a1 * y[n-1] + acc0 += a2 * y[n-2] */ + acc0 = __SMLAD(a1, state_out, acc0); + + /* The result is converted from 3.29 to 1.31 and then saturation is applied */ + out = __SSAT((acc0 >> shift), 16); + + /* Store the output in the destination buffer. */ + *pOut++ = (q15_t) out; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc0 */ + /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */ + /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */ + +#ifndef ARM_MATH_BIG_ENDIAN + + state_in = __PKHBT(in, state_in, 16); + state_out = __PKHBT(out, state_out, 16); + +#else + + state_in = __PKHBT(state_in >> 16, in, 16); + state_out = __PKHBT(state_out >> 16, out, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + } + + /* The first stage goes from the input buffer to the output buffer. */ + /* Subsequent (numStages - 1) occur in-place in the output buffer */ + pIn = pDst; + + /* Reset the output pointer */ + pOut = pDst; + + /* Store the updated state variables back into the state array */ + *__SIMD32(pState)++ = state_in; + *__SIMD32(pState)++ = state_out; + + + /* Decrement the loop counter */ + stage--; + + } while(stage > 0u); +} + + +/** + * @} end of BiquadCascadeDF1 group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c new file mode 100644 index 000000000..1242ae720 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c @@ -0,0 +1,271 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_biquad_cascade_df1_fast_q31.c +* +* Description: Processing function for the +* Q31 Fast Biquad cascade DirectFormI(DF1) filter. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.9 2010/08/27 +* Initial version +* +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF1 + * @{ + */ + +/** + * @details + * + * @param[in] *S points to an instance of the Q31 Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * This function is optimized for speed at the expense of fixed-point precision and overflow protection. + * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. + * These intermediate results are added to a 2.30 accumulator. + * Finally, the accumulator is saturated and converted to a 1.31 result. + * The fast version has the same overflow behavior as the standard version and provides less precision since it discards the low 32 bits of each multiplication result. + * In order to avoid overflows completely the input signal must be scaled down by two bits and lie in the range [-0.25 +0.25). Use the intialization function + * arm_biquad_cascade_df1_init_q31() to initialize filter structure. + * + * \par + * Refer to the function arm_biquad_cascade_df1_q31() for a slower implementation of this function which uses 64-bit accumulation to provide higher precision. Both the slow and the fast versions use the same instance structure. + * Use the function arm_biquad_cascade_df1_init_q31() to initialize the filter structure. + */ + +void arm_biquad_cascade_df1_fast_q31( + const arm_biquad_casd_df1_inst_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pIn = pSrc; /* input pointer initialization */ + q31_t *pOut = pDst; /* output pointer initialization */ + q31_t *pState = S->pState; /* pState pointer initialization */ + q31_t *pCoeffs = S->pCoeffs; /* coeff pointer initialization */ + q31_t acc; /* accumulator */ + q31_t Xn1, Xn2, Yn1, Yn2; /* Filter state variables */ + q31_t b0, b1, b2, a1, a2; /* Filter coefficients */ + q31_t Xn; /* temporary input */ + int32_t shift = (int32_t) S->postShift + 1; /* Shift to be applied to the output */ + uint32_t sample, stage = S->numStages; /* loop counters */ + + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the state values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + /* Apply loop unrolling and compute 4 output values simultaneously. */ + /* The variables acc ... acc3 hold output values that are being computed: + * + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + + sample = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(sample > 0u) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + acc = (q31_t) (((q63_t) b0 * Xn) >> 32); + /* acc += b1 * x[n-1] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn1))) >> 32); + /* acc += b[2] * x[n-2] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32); + /* acc += a1 * y[n-1] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32); + /* acc += a2 * y[n-2] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32); + + /* The result is converted to 1.31 , Yn2 variable is reused */ + Yn2 = acc << shift; + + /* Store the output in the destination buffer. */ + *pOut++ = Yn2; + + /* Read the second input */ + Xn2 = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + acc = (q31_t) (((q63_t) b0 * (Xn2)) >> 32); + /* acc += b1 * x[n-1] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn))) >> 32); + /* acc += b[2] * x[n-2] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn1))) >> 32); + /* acc += a1 * y[n-1] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn2))) >> 32); + /* acc += a2 * y[n-2] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn1))) >> 32); + + /* The result is converted to 1.31, Yn1 variable is reused */ + Yn1 = acc << shift; + + /* Store the output in the destination buffer. */ + *pOut++ = Yn1; + + /* Read the third input */ + Xn1 = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + acc = (q31_t) (((q63_t) b0 * (Xn1)) >> 32); + /* acc += b1 * x[n-1] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn2))) >> 32); + /* acc += b[2] * x[n-2] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn))) >> 32); + /* acc += a1 * y[n-1] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32); + /* acc += a2 * y[n-2] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32); + + /* The result is converted to 1.31, Yn2 variable is reused */ + Yn2 = acc << shift; + + /* Store the output in the destination buffer. */ + *pOut++ = Yn2; + + /* Read the forth input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + acc = (q31_t) (((q63_t) b0 * (Xn)) >> 32); + /* acc += b1 * x[n-1] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn1))) >> 32); + /* acc += b[2] * x[n-2] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32); + /* acc += a1 * y[n-1] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn2))) >> 32); + /* acc += a2 * y[n-2] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn1))) >> 32); + + /* The result is converted to 1.31, Yn1 variable is reused */ + Yn1 = acc << shift; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + + /* Store the output in the destination buffer. */ + *pOut++ = Yn1; + + /* decrement the loop counter */ + sample--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + sample = (blockSize & 0x3u); + + while(sample > 0u) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + acc = (q31_t) (((q63_t) b0 * (Xn)) >> 32); + /* acc += b1 * x[n-1] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn1))) >> 32); + /* acc += b[2] * x[n-2] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32); + /* acc += a1 * y[n-1] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32); + /* acc += a2 * y[n-2] */ + acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32); + /* The result is converted to 1.31 */ + acc = acc << shift; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + Yn1 = acc; + + /* Store the output in the destination buffer. */ + *pOut++ = acc; + + /* decrement the loop counter */ + sample--; + } + + /* The first stage goes from the input buffer to the output buffer. */ + /* Subsequent stages occur in-place in the output buffer */ + pIn = pDst; + + /* Reset to destination pointer */ + pOut = pDst; + + /* Store the updated state variables back into the pState array */ + *pState++ = Xn1; + *pState++ = Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + } while(--stage); +} + +/** + * @} end of BiquadCascadeDF1 group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c new file mode 100644 index 000000000..e3e5a8540 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c @@ -0,0 +1,104 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_biquad_cascade_df1_init_f32.c +* +* Description: floating-point Biquad cascade DirectFormI(DF1) filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF1 + * @{ + */ + +/** + * @details + * @brief Initialization function for the floating-point Biquad cascade filter. + * @param[in,out] *S points to an instance of the floating-point Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients array. + * @param[in] *pState points to the state array. + * @return none + * + * + * Coefficient and State Ordering: + * + * \par + * The coefficients are stored in the array pCoeffs in the following order: + *
   
+ *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}   
+ * 
+ * + * \par + * where b1x and a1x are the coefficients for the first stage, + * b2x and a2x are the coefficients for the second stage, + * and so on. The pCoeffs array contains a total of 5*numStages values. + * + * \par + * The pState is a pointer to state array. + * Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. + * The state variables are arranged in the pState array as: + *
   
+ *     {x[n-1], x[n-2], y[n-1], y[n-2]}   
+ * 
+ * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. + * The state array has a total length of 4*numStages values. + * The state variables are updated after each block of data is processed; the coefficients are untouched. + * + */ + +void arm_biquad_cascade_df1_init_f32( + arm_biquad_casd_df1_inst_f32 * S, + uint8_t numStages, + float32_t * pCoeffs, + float32_t * pState) +{ + /* Assign filter stages */ + S->numStages = numStages; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always 4 * numStages */ + memset(pState, 0, (4u * (uint32_t) numStages) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; +} + +/** + * @} end of BiquadCascadeDF1 group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c new file mode 100644 index 000000000..42c60fb14 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c @@ -0,0 +1,106 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_biquad_cascade_df1_init_q15.c +* +* Description: Q15 Biquad cascade DirectFormI(DF1) filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF1 + * @{ + */ + +/** + * @details + * + * @param[in,out] *S points to an instance of the Q15 Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] postShift Shift to be applied to the accumulator result. Varies according to the coefficients format + * @return none + * + * Coefficient and State Ordering: + * + * \par + * The coefficients are stored in the array pCoeffs in the following order: + *
   
+ *     {b10, 0, b11, b12, a11, a12, b20, 0, b21, b22, a21, a22, ...}   
+ * 
+ * where b1x and a1x are the coefficients for the first stage, + * b2x and a2x are the coefficients for the second stage, + * and so on. The pCoeffs array contains a total of 6*numStages values. + * The zero coefficient between b1 and b2 facilities use of 16-bit SIMD instructions on the Cortex-M4. + * + * \par + * The state variables are stored in the array pState. + * Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. + * The state variables are arranged in the pState array as: + *
   
+ *     {x[n-1], x[n-2], y[n-1], y[n-2]}   
+ * 
+ * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. + * The state array has a total length of 4*numStages values. + * The state variables are updated after each block of data is processed; the coefficients are untouched. + */ + +void arm_biquad_cascade_df1_init_q15( + arm_biquad_casd_df1_inst_q15 * S, + uint8_t numStages, + q15_t * pCoeffs, + q15_t * pState, + int8_t postShift) +{ + /* Assign filter stages */ + S->numStages = numStages; + + /* Assign postShift to be applied to the output */ + S->postShift = postShift; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always 4 * numStages */ + memset(pState, 0, (4u * (uint32_t) numStages) * sizeof(q15_t)); + + /* Assign state pointer */ + S->pState = pState; +} + +/** + * @} end of BiquadCascadeDF1 group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c new file mode 100644 index 000000000..2e6028e9d --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c @@ -0,0 +1,106 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_biquad_cascade_df1_init_q31.c +* +* Description: Q31 Biquad cascade DirectFormI(DF1) filter initialization function. +* +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF1 + * @{ + */ + +/** + * @details + * + * @param[in,out] *S points to an instance of the Q31 Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients buffer. + * @param[in] *pState points to the state buffer. + * @param[in] postShift Shift to be applied after the accumulator. Varies according to the coefficients format + * @return none + * + * Coefficient and State Ordering: + * + * \par + * The coefficients are stored in the array pCoeffs in the following order: + *
   
+ *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}   
+ * 
+ * where b1x and a1x are the coefficients for the first stage, + * b2x and a2x are the coefficients for the second stage, + * and so on. The pCoeffs array contains a total of 5*numStages values. + * + * \par + * The pState points to state variables array. + * Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. + * The state variables are arranged in the pState array as: + *
   
+ *     {x[n-1], x[n-2], y[n-1], y[n-2]}   
+ * 
+ * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. + * The state array has a total length of 4*numStages values. + * The state variables are updated after each block of data is processed; the coefficients are untouched. + */ + +void arm_biquad_cascade_df1_init_q31( + arm_biquad_casd_df1_inst_q31 * S, + uint8_t numStages, + q31_t * pCoeffs, + q31_t * pState, + int8_t postShift) +{ + /* Assign filter stages */ + S->numStages = numStages; + + /* Assign postShift to be applied to the output */ + S->postShift = postShift; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always 4 * numStages */ + memset(pState, 0, (4u * (uint32_t) numStages) * sizeof(q31_t)); + + /* Assign state pointer */ + S->pState = pState; +} + +/** + * @} end of BiquadCascadeDF1 group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c new file mode 100644 index 000000000..9e7bd011d --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c @@ -0,0 +1,380 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_biquad_cascade_df1_q15.c +* +* Description: Processing function for the +* Q15 Biquad cascade DirectFormI(DF1) filter. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF1 + * @{ + */ + +/** + * @brief Processing function for the Q15 Biquad cascade filter. + * @param[in] *S points to an instance of the Q15 Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the location where the output result is written. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * The accumulator is then shifted by postShift bits to truncate the result to 1.15 format by discarding the low 16 bits. + * Finally, the result is saturated to 1.15 format. + * + * \par + * Refer to the function arm_biquad_cascade_df1_fast_q15() for a faster but less precise implementation of this filter for Cortex-M3 and Cortex-M4. + */ + +void arm_biquad_cascade_df1_q15( + const arm_biquad_casd_df1_inst_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t *pIn = pSrc; /* Source pointer */ + q15_t *pOut = pDst; /* Destination pointer */ + q31_t in; /* Temporary variable to hold input value */ + q31_t out; /* Temporary variable to hold output value */ + q31_t b0; /* Temporary variable to hold bo value */ + q31_t b1, a1; /* Filter coefficients */ + q31_t state_in, state_out; /* Filter state variables */ + q63_t acc; /* Accumulator */ + int32_t shift = (15 - (int32_t) S->postShift); /* Post shift */ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pState_q31; /* 32-bit state pointer for SIMD implementation */ + uint32_t sample, stage = (uint32_t) S->numStages; /* Stage loop counter */ + + do + { + /* Initialize state pointer of type q31 */ + pState_q31 = (q31_t *) (pState); + + /* Read the b0 and 0 coefficients using SIMD */ + b0 = *__SIMD32(pCoeffs)++; + + /* Read the b1 and b2 coefficients using SIMD */ + b1 = *__SIMD32(pCoeffs)++; + + /* Read the a1 and a2 coefficients using SIMD */ + a1 = *__SIMD32(pCoeffs)++; + + /* Read the input state values from the state buffer: x[n-1], x[n-2] */ + state_in = (q31_t) (*pState_q31++); + + /* Read the output state values from the state buffer: y[n-1], y[n-2] */ + state_out = (q31_t) (*pState_q31); + + /* Apply loop unrolling and compute 2 output values simultaneously. */ + /* The variable acc hold output values that are being computed: + * + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + sample = blockSize >> 1u; + + /* First part of the processing with loop unrolling. Compute 2 outputs at a time. + ** a second loop below computes the remaining 1 sample. */ + while(sample > 0u) + { + + /* Read the input */ + in = *__SIMD32(pIn)++; + + /* out = b0 * x[n] + 0 * 0 */ + out = __SMUAD(b0, in); + + /* acc += b1 * x[n-1] + b2 * x[n-2] + out */ + acc = __SMLALD(b1, state_in, out); + /* acc += a1 * y[n-1] + a2 * y[n-2] */ + acc = __SMLALD(a1, state_out, acc); + + /* The result is converted from 3.29 to 1.31 if postShift = 1, and then saturation is applied */ + out = __SSAT((acc >> shift), 16); + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */ + /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */ + +#ifndef ARM_MATH_BIG_ENDIAN + + state_in = __PKHBT(in, state_in, 16); + state_out = __PKHBT(out, state_out, 16); + +#else + + state_in = __PKHBT(state_in >> 16, (in >> 16), 16); + state_out = __PKHBT(state_out >> 16, (out), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* out = b0 * x[n] + 0 * 0 */ + out = __SMUADX(b0, in); + /* acc += b1 * x[n-1] + b2 * x[n-2] + out */ + acc = __SMLALD(b1, state_in, out); + /* acc += a1 * y[n-1] + a2 * y[n-2] */ + acc = __SMLALD(a1, state_out, acc); + + /* The result is converted from 3.29 to 1.31 if postShift = 1, and then saturation is applied */ + out = __SSAT((acc >> shift), 16); + + /* Store the output in the destination buffer. */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = __PKHBT(state_out, out, 16); + +#else + + *__SIMD32(pOut)++ = __PKHBT(out, state_out >> 16, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */ + /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */ +#ifndef ARM_MATH_BIG_ENDIAN + + state_in = __PKHBT(in >> 16, state_in, 16); + state_out = __PKHBT(out, state_out, 16); + +#else + + state_in = __PKHBT(state_in >> 16, in, 16); + state_out = __PKHBT(state_out >> 16, out, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + + /* Decrement the loop counter */ + sample--; + + } + + /* If the blockSize is not a multiple of 2, compute any remaining output samples here. + ** No loop unrolling is used. */ + + if((blockSize & 0x1u) != 0u) + { + /* Read the input */ + in = *pIn++; + + /* out = b0 * x[n] + 0 * 0 */ + +#ifndef ARM_MATH_BIG_ENDIAN + + out = __SMUAD(b0, in); + +#else + + out = __SMUADX(b0, in); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* acc = b1 * x[n-1] + b2 * x[n-2] + out */ + acc = __SMLALD(b1, state_in, out); + /* acc += a1 * y[n-1] + a2 * y[n-2] */ + acc = __SMLALD(a1, state_out, acc); + + /* The result is converted from 3.29 to 1.31 if postShift = 1, and then saturation is applied */ + out = __SSAT((acc >> shift), 16); + + /* Store the output in the destination buffer. */ + *pOut++ = (q15_t) out; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */ + /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */ + +#ifndef ARM_MATH_BIG_ENDIAN + + state_in = __PKHBT(in, state_in, 16); + state_out = __PKHBT(out, state_out, 16); + +#else + + state_in = __PKHBT(state_in >> 16, in, 16); + state_out = __PKHBT(state_out >> 16, out, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + } + + /* The first stage goes from the input wire to the output wire. */ + /* Subsequent numStages occur in-place in the output wire */ + pIn = pDst; + + /* Reset the output pointer */ + pOut = pDst; + + /* Store the updated state variables back into the state array */ + *__SIMD32(pState)++ = state_in; + *__SIMD32(pState)++ = state_out; + + + /* Decrement the loop counter */ + stage--; + + } while(stage > 0u); + +#else + + /* Run the below code for Cortex-M0 */ + + q15_t *pIn = pSrc; /* Source pointer */ + q15_t *pOut = pDst; /* Destination pointer */ + q15_t b0, b1, b2, a1, a2; /* Filter coefficients */ + q15_t Xn1, Xn2, Yn1, Yn2; /* Filter state variables */ + q15_t Xn; /* temporary input */ + q63_t acc; /* Accumulator */ + int32_t shift = (15 - (int32_t) S->postShift); /* Post shift */ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + uint32_t sample, stage = (uint32_t) S->numStages; /* Stage loop counter */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the state values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + /* The variables acc holds the output value that is computed: + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + + sample = blockSize; + + while(sample > 0u) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + acc = (q31_t) b0 *Xn; + + /* acc += b1 * x[n-1] */ + acc += (q31_t) b1 *Xn1; + /* acc += b[2] * x[n-2] */ + acc += (q31_t) b2 *Xn2; + /* acc += a1 * y[n-1] */ + acc += (q31_t) a1 *Yn1; + /* acc += a2 * y[n-2] */ + acc += (q31_t) a2 *Yn2; + + /* The result is converted to 1.31 */ + acc = __SSAT((acc >> shift), 16); + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + Yn1 = (q15_t) acc; + + /* Store the output in the destination buffer. */ + *pOut++ = (q15_t) acc; + + /* decrement the loop counter */ + sample--; + } + + /* The first stage goes from the input buffer to the output buffer. */ + /* Subsequent stages occur in-place in the output buffer */ + pIn = pDst; + + /* Reset to destination pointer */ + pOut = pDst; + + /* Store the updated state variables back into the pState array */ + *pState++ = Xn1; + *pState++ = Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + } while(--stage); + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + + +/** + * @} end of BiquadCascadeDF1 group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c new file mode 100644 index 000000000..068722772 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c @@ -0,0 +1,362 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_biquad_cascade_df1_q31.c +* +* Description: Processing function for the +* Q31 Biquad cascade filter +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF1 + * @{ + */ + +/** + * @brief Processing function for the Q31 Biquad cascade filter. + * @param[in] *S points to an instance of the Q31 Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around rather than clip. + * In order to avoid overflows completely the input signal must be scaled down by 2 bits and lie in the range [-0.25 +0.25). + * After all 5 multiply-accumulates are performed, the 2.62 accumulator is shifted by postShift bits and the result truncated to + * 1.31 format by discarding the low 32 bits. + * + * \par + * Refer to the function arm_biquad_cascade_df1_fast_q31() for a faster but less precise implementation of this filter for Cortex-M3 and Cortex-M4. + */ + +void arm_biquad_cascade_df1_q31( + const arm_biquad_casd_df1_inst_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pIn = pSrc; /* input pointer initialization */ + q31_t *pOut = pDst; /* output pointer initialization */ + q31_t *pState = S->pState; /* pState pointer initialization */ + q31_t *pCoeffs = S->pCoeffs; /* coeff pointer initialization */ + q63_t acc; /* accumulator */ + q31_t Xn1, Xn2, Yn1, Yn2; /* Filter state variables */ + q31_t b0, b1, b2, a1, a2; /* Filter coefficients */ + q31_t Xn; /* temporary input */ + uint32_t shift = 32u - ((uint32_t) S->postShift + 1u); /* Shift to be applied to the output */ + uint32_t sample, stage = S->numStages; /* loop counters */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the state values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + /* Apply loop unrolling and compute 4 output values simultaneously. */ + /* The variable acc hold output values that are being computed: + * + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + + sample = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(sample > 0u) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + + /* acc = b0 * x[n] */ + acc = (q63_t) b0 *Xn; + /* acc += b1 * x[n-1] */ + acc += (q63_t) b1 *Xn1; + /* acc += b[2] * x[n-2] */ + acc += (q63_t) b2 *Xn2; + /* acc += a1 * y[n-1] */ + acc += (q63_t) a1 *Yn1; + /* acc += a2 * y[n-2] */ + acc += (q63_t) a2 *Yn2; + + /* The result is converted to 1.31 , Yn2 variable is reused */ + Yn2 = (q31_t) (acc >> shift); + + /* Store the output in the destination buffer. */ + *pOut++ = Yn2; + + /* Read the second input */ + Xn2 = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + + /* acc = b0 * x[n] */ + acc = (q63_t) b0 *Xn2; + /* acc += b1 * x[n-1] */ + acc += (q63_t) b1 *Xn; + /* acc += b[2] * x[n-2] */ + acc += (q63_t) b2 *Xn1; + /* acc += a1 * y[n-1] */ + acc += (q63_t) a1 *Yn2; + /* acc += a2 * y[n-2] */ + acc += (q63_t) a2 *Yn1; + + + /* The result is converted to 1.31, Yn1 variable is reused */ + Yn1 = (q31_t) (acc >> shift); + + /* Store the output in the destination buffer. */ + *pOut++ = Yn1; + + /* Read the third input */ + Xn1 = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + + /* acc = b0 * x[n] */ + acc = (q63_t) b0 *Xn1; + /* acc += b1 * x[n-1] */ + acc += (q63_t) b1 *Xn2; + /* acc += b[2] * x[n-2] */ + acc += (q63_t) b2 *Xn; + /* acc += a1 * y[n-1] */ + acc += (q63_t) a1 *Yn1; + /* acc += a2 * y[n-2] */ + acc += (q63_t) a2 *Yn2; + + /* The result is converted to 1.31, Yn2 variable is reused */ + Yn2 = (q31_t) (acc >> shift); + + /* Store the output in the destination buffer. */ + *pOut++ = Yn2; + + /* Read the forth input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + + /* acc = b0 * x[n] */ + acc = (q63_t) b0 *Xn; + /* acc += b1 * x[n-1] */ + acc += (q63_t) b1 *Xn1; + /* acc += b[2] * x[n-2] */ + acc += (q63_t) b2 *Xn2; + /* acc += a1 * y[n-1] */ + acc += (q63_t) a1 *Yn2; + /* acc += a2 * y[n-2] */ + acc += (q63_t) a2 *Yn1; + + /* The result is converted to 1.31, Yn1 variable is reused */ + Yn1 = (q31_t) (acc >> shift); + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + + /* Store the output in the destination buffer. */ + *pOut++ = Yn1; + + /* decrement the loop counter */ + sample--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + sample = (blockSize & 0x3u); + + while(sample > 0u) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + + /* acc = b0 * x[n] */ + acc = (q63_t) b0 *Xn; + /* acc += b1 * x[n-1] */ + acc += (q63_t) b1 *Xn1; + /* acc += b[2] * x[n-2] */ + acc += (q63_t) b2 *Xn2; + /* acc += a1 * y[n-1] */ + acc += (q63_t) a1 *Yn1; + /* acc += a2 * y[n-2] */ + acc += (q63_t) a2 *Yn2; + + /* The result is converted to 1.31 */ + acc = acc >> shift; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + Yn1 = (q31_t) acc; + + /* Store the output in the destination buffer. */ + *pOut++ = (q31_t) acc; + + /* decrement the loop counter */ + sample--; + } + + /* The first stage goes from the input buffer to the output buffer. */ + /* Subsequent stages occur in-place in the output buffer */ + pIn = pDst; + + /* Reset to destination pointer */ + pOut = pDst; + + /* Store the updated state variables back into the pState array */ + *pState++ = Xn1; + *pState++ = Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + } while(--stage); + +#else + + /* Run the below code for Cortex-M0 */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the state values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + /* The variables acc holds the output value that is computed: + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + + sample = blockSize; + + while(sample > 0u) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + acc = (q63_t) b0 *Xn; + + /* acc += b1 * x[n-1] */ + acc += (q63_t) b1 *Xn1; + /* acc += b[2] * x[n-2] */ + acc += (q63_t) b2 *Xn2; + /* acc += a1 * y[n-1] */ + acc += (q63_t) a1 *Yn1; + /* acc += a2 * y[n-2] */ + acc += (q63_t) a2 *Yn2; + + /* The result is converted to 1.31 */ + acc = acc >> shift; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + Yn1 = (q31_t) acc; + + /* Store the output in the destination buffer. */ + *pOut++ = (q31_t) acc; + + /* decrement the loop counter */ + sample--; + } + + /* The first stage goes from the input buffer to the output buffer. */ + /* Subsequent stages occur in-place in the output buffer */ + pIn = pDst; + + /* Reset to destination pointer */ + pOut = pDst; + + /* Store the updated state variables back into the pState array */ + *pState++ = Xn1; + *pState++ = Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + } while(--stage); + +#endif /* #ifndef ARM_MATH_CM0 */ +} + +/** + * @} end of BiquadCascadeDF1 group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c new file mode 100644 index 000000000..4cf42173c --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c @@ -0,0 +1,359 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_biquad_cascade_df2T_f32.c +* +* Description: Processing function for the floating-point transposed +* direct form II Biquad cascade filter. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup BiquadCascadeDF2T Biquad Cascade IIR Filters Using a Direct Form II Transposed Structure + * + * This set of functions implements arbitrary order recursive (IIR) filters using a transposed direct form II structure. + * The filters are implemented as a cascade of second order Biquad sections. + * These functions provide a slight memory savings as compared to the direct form I Biquad filter functions. + * Only floating-point data is supported. + * + * This function operate on blocks of input and output data and each call to the function + * processes blockSize samples through the filter. + * pSrc points to the array of input data and + * pDst points to the array of output data. + * Both arrays contain blockSize values. + * + * \par Algorithm + * Each Biquad stage implements a second order filter using the difference equation: + *
   
+ *    y[n] = b0 * x[n] + d1   
+ *    d1 = b1 * x[n] + a1 * y[n] + d2   
+ *    d2 = b2 * x[n] + a2 * y[n]   
+ * 
+ * where d1 and d2 represent the two state values. + * + * \par + * A Biquad filter using a transposed Direct Form II structure is shown below. + * \image html BiquadDF2Transposed.gif "Single transposed Direct Form II Biquad" + * Coefficients b0, b1, and b2 multiply the input signal x[n] and are referred to as the feedforward coefficients. + * Coefficients a1 and a2 multiply the output signal y[n] and are referred to as the feedback coefficients. + * Pay careful attention to the sign of the feedback coefficients. + * Some design tools flip the sign of the feedback coefficients: + *
   
+ *    y[n] = b0 * x[n] + d1;   
+ *    d1 = b1 * x[n] - a1 * y[n] + d2;   
+ *    d2 = b2 * x[n] - a2 * y[n];   
+ * 
+ * In this case the feedback coefficients a1 and a2 must be negated when used with the CMSIS DSP Library. + * + * \par + * Higher order filters are realized as a cascade of second order sections. + * numStages refers to the number of second order stages used. + * For example, an 8th order filter would be realized with numStages=4 second order stages. + * A 9th order filter would be realized with numStages=5 second order stages with the + * coefficients for one of the stages configured as a first order filter (b2=0 and a2=0). + * + * \par + * pState points to the state variable array. + * Each Biquad stage has 2 state variables d1 and d2. + * The state variables are arranged in the pState array as: + *
   
+ *     {d11, d12, d21, d22, ...}   
+ * 
+ * where d1x refers to the state variables for the first Biquad and + * d2x refers to the state variables for the second Biquad. + * The state array has a total length of 2*numStages values. + * The state variables are updated after each block of data is processed; the coefficients are untouched. + * + * \par + * The CMSIS library contains Biquad filters in both Direct Form I and transposed Direct Form II. + * The advantage of the Direct Form I structure is that it is numerically more robust for fixed-point data types. + * That is why the Direct Form I structure supports Q15 and Q31 data types. + * The transposed Direct Form II structure, on the other hand, requires a wide dynamic range for the state variables d1 and d2. + * Because of this, the CMSIS library only has a floating-point version of the Direct Form II Biquad. + * The advantage of the Direct Form II Biquad is that it requires half the number of state variables, 2 rather than 4, per Biquad stage. + * + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter. + * Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. + * + * \par Init Functions + * There is also an associated initialization function. + * The initialization function performs following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * Set the values in the state buffer to zeros before static initialization. + * For example, to statically initialize the instance structure use + *
   
+ *     arm_biquad_cascade_df2T_instance_f32 S1 = {numStages, pState, pCoeffs};   
+ * 
+ * where numStages is the number of Biquad stages in the filter; pState is the address of the state buffer. + * pCoeffs is the address of the coefficient buffer; + * + */ + +/** + * @addtogroup BiquadCascadeDF2T + * @{ + */ + +/** + * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in] *S points to an instance of the filter data structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of samples to process. + * @return none. + */ + +void arm_biquad_cascade_df2T_f32( + const arm_biquad_cascade_df2T_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + + float32_t *pIn = pSrc; /* source pointer */ + float32_t *pOut = pDst; /* destination pointer */ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* coefficient pointer */ + float32_t acc0; /* Simulates the accumulator */ + float32_t b0, b1, b2, a1, a2; /* Filter coefficients */ + float32_t Xn; /* temporary input */ + float32_t d1, d2; /* state variables */ + uint32_t sample, stage = S->numStages; /* loop counters */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /*Reading the state values */ + d1 = pState[0]; + d2 = pState[1]; + + /* Apply loop unrolling and compute 4 output values simultaneously. */ + sample = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(sample > 0u) + { + /* Read the first input */ + Xn = *pIn++; + + /* y[n] = b0 * x[n] + d1 */ + acc0 = (b0 * Xn) + d1; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc0; + + /* Every time after the output is computed state should be updated. */ + /* d1 = b1 * x[n] + a1 * y[n] + d2 */ + d1 = ((b1 * Xn) + (a1 * acc0)) + d2; + + /* d2 = b2 * x[n] + a2 * y[n] */ + d2 = (b2 * Xn) + (a2 * acc0); + + /* Read the second input */ + Xn = *pIn++; + + /* y[n] = b0 * x[n] + d1 */ + acc0 = (b0 * Xn) + d1; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc0; + + /* Every time after the output is computed state should be updated. */ + /* d1 = b1 * x[n] + a1 * y[n] + d2 */ + d1 = ((b1 * Xn) + (a1 * acc0)) + d2; + + /* d2 = b2 * x[n] + a2 * y[n] */ + d2 = (b2 * Xn) + (a2 * acc0); + + /* Read the third input */ + Xn = *pIn++; + + /* y[n] = b0 * x[n] + d1 */ + acc0 = (b0 * Xn) + d1; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc0; + + /* Every time after the output is computed state should be updated. */ + /* d1 = b1 * x[n] + a1 * y[n] + d2 */ + d1 = ((b1 * Xn) + (a1 * acc0)) + d2; + + /* d2 = b2 * x[n] + a2 * y[n] */ + d2 = (b2 * Xn) + (a2 * acc0); + + /* Read the fourth input */ + Xn = *pIn++; + + /* y[n] = b0 * x[n] + d1 */ + acc0 = (b0 * Xn) + d1; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc0; + + /* Every time after the output is computed state should be updated. */ + /* d1 = b1 * x[n] + a1 * y[n] + d2 */ + d1 = (b1 * Xn) + (a1 * acc0) + d2; + + /* d2 = b2 * x[n] + a2 * y[n] */ + d2 = (b2 * Xn) + (a2 * acc0); + + /* decrement the loop counter */ + sample--; + + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + sample = blockSize & 0x3u; + + while(sample > 0u) + { + /* Read the input */ + Xn = *pIn++; + + /* y[n] = b0 * x[n] + d1 */ + acc0 = (b0 * Xn) + d1; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc0; + + /* Every time after the output is computed state should be updated. */ + /* d1 = b1 * x[n] + a1 * y[n] + d2 */ + d1 = ((b1 * Xn) + (a1 * acc0)) + d2; + + /* d2 = b2 * x[n] + a2 * y[n] */ + d2 = (b2 * Xn) + (a2 * acc0); + + /* decrement the loop counter */ + sample--; + } + + /* Store the updated state variables back into the state array */ + *pState++ = d1; + *pState++ = d2; + + /* The current stage input is given as the output to the next stage */ + pIn = pDst; + + /*Reset the output working pointer */ + pOut = pDst; + + /* decrement the loop counter */ + stage--; + + } while(stage > 0u); + +#else + + /* Run the below code for Cortex-M0 */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /*Reading the state values */ + d1 = pState[0]; + d2 = pState[1]; + + + sample = blockSize; + + while(sample > 0u) + { + /* Read the input */ + Xn = *pIn++; + + /* y[n] = b0 * x[n] + d1 */ + acc0 = (b0 * Xn) + d1; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc0; + + /* Every time after the output is computed state should be updated. */ + /* d1 = b1 * x[n] + a1 * y[n] + d2 */ + d1 = ((b1 * Xn) + (a1 * acc0)) + d2; + + /* d2 = b2 * x[n] + a2 * y[n] */ + d2 = (b2 * Xn) + (a2 * acc0); + + /* decrement the loop counter */ + sample--; + } + + /* Store the updated state variables back into the state array */ + *pState++ = d1; + *pState++ = d2; + + /* The current stage input is given as the output to the next stage */ + pIn = pDst; + + /*Reset the output working pointer */ + pOut = pDst; + + /* decrement the loop counter */ + stage--; + + } while(stage > 0u); + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + + + /** + * @} end of BiquadCascadeDF2T group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c new file mode 100644 index 000000000..552778505 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c @@ -0,0 +1,94 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_biquad_cascade_df2T_init_f32.c +* +* Description: Initialization function for the floating-point transposed +* direct form II Biquad cascade filter. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF2T + * @{ + */ + +/** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] *S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @return none + * + * Coefficient and State Ordering: + * \par + * The coefficients are stored in the array pCoeffs in the following order: + *
   
+ *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}   
+ * 
+ * + * \par + * where b1x and a1x are the coefficients for the first stage, + * b2x and a2x are the coefficients for the second stage, + * and so on. The pCoeffs array contains a total of 5*numStages values. + * + * \par + * The pState is a pointer to state array. + * Each Biquad stage has 2 state variables d1, and d2. + * The 2 state variables for stage 1 are first, then the 2 state variables for stage 2, and so on. + * The state array has a total length of 2*numStages values. + * The state variables are updated after each block of data is processed; the coefficients are untouched. + */ + +void arm_biquad_cascade_df2T_init_f32( + arm_biquad_cascade_df2T_instance_f32 * S, + uint8_t numStages, + float32_t * pCoeffs, + float32_t * pState) +{ + /* Assign filter stages */ + S->numStages = numStages; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always 2 * numStages */ + memset(pState, 0, (2u * (uint32_t) numStages) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; +} + +/** + * @} end of BiquadCascadeDF2T group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_f32.c new file mode 100644 index 000000000..db3990c57 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_f32.c @@ -0,0 +1,623 @@ +/* ---------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_conv_f32.c +* +* Description: Convolution of floating-point sequences. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* +* -------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup Conv Convolution + * + * Convolution is a mathematical operation that operates on two finite length vectors to generate a finite length output vector. + * Convolution is similar to correlation and is frequently used in filtering and data analysis. + * The CMSIS DSP library contains functions for convolving Q7, Q15, Q31, and floating-point data types. + * The library also provides fast versions of the Q15 and Q31 functions on Cortex-M4 and Cortex-M3. + * + * \par Algorithm + * Let a[n] and b[n] be sequences of length srcALen and srcBLen samples respectively. + * Then the convolution + * + *
   
+ *                   c[n] = a[n] * b[n]   
+ * 
+ * + * \par + * is defined as + * \image html ConvolutionEquation.gif + * \par + * Note that c[n] is of length srcALen + srcBLen - 1 and is defined over the interval n=0, 1, 2, ..., srcALen + srcBLen - 2. + * pSrcA points to the first input vector of length srcALen and + * pSrcB points to the second input vector of length srcBLen. + * The output result is written to pDst and the calling function must allocate srcALen+srcBLen-1 words for the result. + * + * \par + * Conceptually, when two signals a[n] and b[n] are convolved, + * the signal b[n] slides over a[n]. + * For each offset \c n, the overlapping portions of a[n] and b[n] are multiplied and summed together. + * + * \par + * Note that convolution is a commutative operation: + * + *
   
+ *                   a[n] * b[n] = b[n] * a[n].   
+ * 
+ * + * \par + * This means that switching the A and B arguments to the convolution functions has no effect. + * + * Fixed-Point Behavior + * + * \par + * Convolution requires summing up a large number of intermediate products. + * As such, the Q7, Q15, and Q31 functions run a risk of overflow and saturation. + * Refer to the function specific documentation below for further details of the particular algorithm used. + */ + +/** + * @addtogroup Conv + * @{ + */ + +/** + * @brief Convolution of floating-point sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + * @return none. + */ + +void arm_conv_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst) +{ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float32_t *pIn1; /* inputA pointer */ + float32_t *pIn2; /* inputB pointer */ + float32_t *pOut = pDst; /* output pointer */ + float32_t *px; /* Intermediate inputA pointer */ + float32_t *py; /* Intermediate inputB pointer */ + float32_t *pSrc1, *pSrc2; /* Intermediate pointers */ + float32_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + float32_t x0, x1, x2, x3, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t j, k, count, blkCnt, blockSize1, blockSize2, blockSize3; /* loop counters */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if(srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* The algorithm is implemented in three stages. + The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1u; + blockSize2 = srcALen - (srcBLen - 1u); + blockSize3 = blockSize1; + + /* -------------------------- + * initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1u; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while(blockSize1 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* x[0] * y[srcBLen - 1] */ + sum += *px++ * *py--; + + /* x[1] * y[srcBLen - 2] */ + sum += *px++ * *py--; + + /* x[2] * y[srcBLen - 3] */ + sum += *px++ * *py--; + + /* x[3] * y[srcBLen - 4] */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pIn2 + count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 1u; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if(srcBLen >= 4u) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2u; + + while(blkCnt > 0u) + { + /* Set all accumulators to zero */ + acc0 = 0.0f; + acc1 = 0.0f; + acc2 = 0.0f; + acc3 = 0.0f; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[srcBLen - 1] sample */ + c0 = *(py--); + + /* Read x[3] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[0] * y[srcBLen - 1] */ + acc0 += x0 * c0; + + /* acc1 += x[1] * y[srcBLen - 1] */ + acc1 += x1 * c0; + + /* acc2 += x[2] * y[srcBLen - 1] */ + acc2 += x2 * c0; + + /* acc3 += x[3] * y[srcBLen - 1] */ + acc3 += x3 * c0; + + /* Read y[srcBLen - 2] sample */ + c0 = *(py--); + + /* Read x[4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[1] * y[srcBLen - 2] */ + acc0 += x1 * c0; + /* acc1 += x[2] * y[srcBLen - 2] */ + acc1 += x2 * c0; + /* acc2 += x[3] * y[srcBLen - 2] */ + acc2 += x3 * c0; + /* acc3 += x[4] * y[srcBLen - 2] */ + acc3 += x0 * c0; + + /* Read y[srcBLen - 3] sample */ + c0 = *(py--); + + /* Read x[5] sample */ + x1 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[2] * y[srcBLen - 3] */ + acc0 += x2 * c0; + /* acc1 += x[3] * y[srcBLen - 2] */ + acc1 += x3 * c0; + /* acc2 += x[4] * y[srcBLen - 2] */ + acc2 += x0 * c0; + /* acc3 += x[5] * y[srcBLen - 2] */ + acc3 += x1 * c0; + + /* Read y[srcBLen - 4] sample */ + c0 = *(py--); + + /* Read x[6] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[3] * y[srcBLen - 4] */ + acc0 += x3 * c0; + /* acc1 += x[4] * y[srcBLen - 4] */ + acc1 += x0 * c0; + /* acc2 += x[5] * y[srcBLen - 4] */ + acc2 += x1 * c0; + /* acc3 += x[6] * y[srcBLen - 4] */ + acc3 += x2 * c0; + + + } while(--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Read y[srcBLen - 5] sample */ + c0 = *(py--); + + /* Read x[7] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[srcBLen - 5] */ + acc0 += x0 * c0; + /* acc1 += x[5] * y[srcBLen - 5] */ + acc1 += x1 * c0; + /* acc2 += x[6] * y[srcBLen - 5] */ + acc2 += x2 * c0; + /* acc3 += x[7] * y[srcBLen - 5] */ + acc3 += x3 * c0; + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc0; + *pOut++ = acc1; + *pOut++ = acc2; + *pOut++ = acc3; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + (count * 4u); + py = pSrc2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4u; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += *px++ * *py--; + sum += *px++ * *py--; + sum += *px++ * *py--; + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The blockSize3 variable holds the number of MAC operations performed */ + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while(blockSize3 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = blockSize3 >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ + sum += *px++ * *py--; + + /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ + sum += *px++ * *py--; + + /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ + sum += *px++ * *py--; + + /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = blockSize3 % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen-1] * y[srcBLen-1] */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the loop counter */ + blockSize3--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + float32_t *pIn1 = pSrcA; /* inputA pointer */ + float32_t *pIn2 = pSrcB; /* inputB pointer */ + float32_t sum; /* Accumulator */ + uint32_t i, j; /* loop counters */ + + /* Loop to calculate convolution for output length number of times */ + for (i = 0u; i < ((srcALen + srcBLen) - 1u); i++) + { + /* Initialize sum with zero to carry out MAC operations */ + sum = 0.0f; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0u; j <= i; j++) + { + /* Check the array limitations */ + if((((i - j) < srcBLen) && (j < srcALen))) + { + /* z[i] += x[i-j] * y[j] */ + sum += pIn1[j] * pIn2[i - j]; + } + } + /* Store the output in the destination buffer */ + pDst[i] = sum; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of Conv group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q15.c new file mode 100644 index 000000000..70038f86a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q15.c @@ -0,0 +1,677 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_conv_fast_q15.c +* +* Description: Fast Q15 Convolution. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Conv + * @{ + */ + +/** + * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + * @return none. + * + * Scaling and Overflow Behavior: + * + * \par + * This fast version uses a 32-bit accumulator with 2.30 format. + * The accumulator maintains full precision of the intermediate multiplication results + * but provides only a single guard bit. There is no saturation on intermediate additions. + * Thus, if the accumulator overflows it wraps around and distorts the result. + * The input signals should be scaled down to avoid intermediate overflows. + * Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows, + * as maximum of min(srcALen, srcBLen) number of additions are carried internally. + * The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result. + * + * \par + * See arm_conv_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion. + */ + +void arm_conv_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst) +{ + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *pOut = pDst; /* output pointer */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + q15_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q31_t x0, x1, x2, x3, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t blockSize1, blockSize2, blockSize3, j, k, count, blkCnt; /* loop counter */ + q31_t *pb; /* 32 bit pointer for inputB buffer */ + + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if(srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* The algorithm is implemented in three stages. + The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1u; + blockSize2 = srcALen - (srcBLen - 1u); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1u; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations less than 4 */ + /* Second part of this stage computes the MAC operations greater than or equal to 4 */ + + /* The first part of the stage starts here */ + while((count < 4u) && (blockSize1 > 0u)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over number of MAC operations between + * inputA samples and inputB samples */ + k = count; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum = __SMLAD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pIn2 + count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* The second part of the stage starts here */ + /* The internal loop, over count, is unrolled by 4 */ + /* To, read the last two inputB samples using SIMD: + * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */ + py = py - 1; + + while(blockSize1 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */ + sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */ + sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* For the next MAC operations, the pointer py is used without SIMD + * So, py is incremented by 1 */ + py = py + 1u; + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum = __SMLAD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pIn2 + (count - 1u); + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + /* Initialize inputB pointer of type q31 */ + pb = (q31_t *) (py - 1u); + + /* count is the index by which the pointer pIn1 to be incremented */ + count = 1u; + + + /* -------------------- + * Stage2 process + * -------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if(srcBLen >= 4u) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2u; + + while(blkCnt > 0u) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + + /* read x[0], x[1] samples */ + x0 = *(q31_t *) (px++); + /* read x[1], x[2] samples */ + x1 = *(q31_t *) (px++); + + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read the last two inputB samples using SIMD: + * y[srcBLen - 1] and y[srcBLen - 2] */ + c0 = *(pb--); + + /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ + acc0 = __SMLADX(x0, c0, acc0); + + /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ + acc1 = __SMLADX(x1, c0, acc1); + + /* Read x[2], x[3] */ + x2 = *(q31_t *) (px++); + + /* Read x[3], x[4] */ + x3 = *(q31_t *) (px++); + + /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ + acc2 = __SMLADX(x2, c0, acc2); + + /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ + acc3 = __SMLADX(x3, c0, acc3); + + /* Read y[srcBLen - 3] and y[srcBLen - 4] */ + c0 = *(pb--); + + /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ + acc0 = __SMLADX(x2, c0, acc0); + + /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ + acc1 = __SMLADX(x3, c0, acc1); + + /* Read x[4], x[5] */ + x0 = *(q31_t *) (px++); + + /* Read x[5], x[6] */ + x1 = *(q31_t *) (px++); + + /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ + acc2 = __SMLADX(x0, c0, acc2); + + /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ + acc3 = __SMLADX(x1, c0, acc3); + + } while(--k); + + /* For the next MAC operations, SIMD is not used + * So, the 16 bit pointer if inputB, py is updated */ + py = (q15_t *) pb; + py = py + 1; + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + if(k == 1u) + { + /* Read y[srcBLen - 5] */ + c0 = *(py); +#ifdef ARM_MATH_BIG_ENDIAN + +// c0 = unallign_rev(p, c0); + c0 = c0 << 16; +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[7] */ + x3 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLAD(x0, c0, acc0); + acc1 = __SMLAD(x1, c0, acc1); + acc2 = __SMLADX(x1, c0, acc2); + acc3 = __SMLADX(x3, c0, acc3); + } + + if(k == 2u) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + c0 = *(pb); + + /* Read x[7], x[8] */ + x3 = *(q31_t *) px++; + + /* Read x[9] */ + x2 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x0, c0, acc0); + acc1 = __SMLADX(x1, c0, acc1); + acc2 = __SMLADX(x3, c0, acc2); + acc3 = __SMLADX(x2, c0, acc3); + } + + if(k == 3u) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + c0 = *pb--; + + /* Read x[7], x[8] */ + x3 = *(q31_t *) px++; + + /* Read x[9] */ + x2 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x0, c0, acc0); + acc1 = __SMLADX(x1, c0, acc1); + acc2 = __SMLADX(x3, c0, acc2); + acc3 = __SMLADX(x2, c0, acc3); + + /* Read y[srcBLen - 7] */ +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = (*pb); +// c0 = (c0 & 0x0000FFFF)<<16; + c0 = (c0) << 16; + +#else + + c0 = (q15_t) (*pb >> 16); + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[10] */ + x3 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x1, c0, acc0); + acc1 = __SMLAD(x2, c0, acc1); + acc2 = __SMLADX(x2, c0, acc2); + acc3 = __SMLADX(x3, c0, acc3); + } + + /* Store the results in the accumulators in the destination buffer. */ +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = __PKHBT((acc0 >> 15), (acc1 >> 15), 16); + *__SIMD32(pOut)++ = __PKHBT((acc2 >> 15), (acc3 >> 15), 16); + +#else + + *__SIMD32(pOut)++ = __PKHBT((acc1 >> 15), (acc0 >> 15), 16); + *__SIMD32(pOut)++ = __PKHBT((acc3 >> 15), (acc2 >> 15), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + (count * 4u); + py = pSrc2; + pb = (q31_t *) (py - 1); + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4u; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The blockSize3 variable holds the number of MAC operations performed */ + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + pIn2 = pSrc2 - 1u; + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations greater than 4 */ + /* Second part of this stage computes the MAC operations less than or equal to 4 */ + + /* The first part of the stage starts here */ + j = blockSize3 >> 2u; + + while((j > 0u) && (blockSize3 > 0u)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = blockSize3 >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied + * with y[srcBLen - 1], y[srcBLen - 2] respectively */ + sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied + * with y[srcBLen - 3], y[srcBLen - 4] respectively */ + sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* For the next MAC operations, the pointer py is used without SIMD + * So, py is incremented by 1 */ + py = py + 1u; + + /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = blockSize3 % 0x4u; + + while(k > 0u) + { + /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */ + sum = __SMLAD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the loop counter */ + blockSize3--; + + j--; + } + + /* The second part of the stage starts here */ + /* SIMD is not used for the next MAC operations, + * so pointer py is updated to read only one sample at a time */ + py = py + 1u; + + while(blockSize3 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = blockSize3; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen-1] * y[srcBLen-1] */ + sum = __SMLAD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the loop counter */ + blockSize3--; + } + +} + +/** + * @} end of Conv group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q31.c new file mode 100644 index 000000000..d1eeeaca1 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q31.c @@ -0,0 +1,567 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_conv_fast_q31.c +* +* Description: Q31 Convolution (fast version). +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Conv + * @{ + */ + +/** + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * This function is optimized for speed at the expense of fixed-point precision and overflow protection. + * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. + * These intermediate results are accumulated in a 32-bit register in 2.30 format. + * Finally, the accumulator is saturated and converted to a 1.31 result. + * + * \par + * The fast version has the same overflow behavior as the standard version but provides less precision since it discards the low 32 bits of each multiplication result. + * In order to avoid overflows completely the input signals must be scaled down. + * Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows, + * as maximum of min(srcALen, srcBLen) number of additions are carried internally. + * + * \par + * See arm_conv_q31() for a slower implementation of this function which uses 64-bit accumulation to provide higher precision. + */ + +void arm_conv_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst) +{ + q31_t *pIn1; /* inputA pointer */ + q31_t *pIn2; /* inputB pointer */ + q31_t *pOut = pDst; /* output pointer */ + q31_t *px; /* Intermediate inputA pointer */ + q31_t *py; /* Intermediate inputB pointer */ + q31_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + q31_t x0, x1, x2, x3, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t j, k, count, blkCnt, blockSize1, blockSize2, blockSize3; /* loop counter */ + + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if(srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* The algorithm is implemented in three stages. + The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1u; + blockSize2 = srcALen - (srcBLen - 1u); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1u; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while(blockSize1 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* x[0] * y[srcBLen - 1] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* x[1] * y[srcBLen - 2] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* x[2] * y[srcBLen - 3] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* x[3] * y[srcBLen - 4] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum << 1; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pIn2 + count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 1u; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if(srcBLen >= 4u) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2u; + + while(blkCnt > 0u) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[srcBLen - 1] sample */ + c0 = *(py--); + + /* Read x[3] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[0] * y[srcBLen - 1] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); + + /* acc1 += x[1] * y[srcBLen - 1] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); + + /* acc2 += x[2] * y[srcBLen - 1] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32); + + /* acc3 += x[3] * y[srcBLen - 1] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32); + + /* Read y[srcBLen - 2] sample */ + c0 = *(py--); + + /* Read x[4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[1] * y[srcBLen - 2] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc1 += x[2] * y[srcBLen - 2] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc2 += x[3] * y[srcBLen - 2] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x3 * c0)) >> 32); + /* acc3 += x[4] * y[srcBLen - 2] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x0 * c0)) >> 32); + + /* Read y[srcBLen - 3] sample */ + c0 = *(py--); + + /* Read x[5] sample */ + x1 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[2] * y[srcBLen - 3] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc1 += x[3] * y[srcBLen - 2] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x3 * c0)) >> 32); + /* acc2 += x[4] * y[srcBLen - 2] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc3 += x[5] * y[srcBLen - 2] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x1 * c0)) >> 32); + + /* Read y[srcBLen - 4] sample */ + c0 = *(py--); + + /* Read x[6] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[3] * y[srcBLen - 4] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x3 * c0)) >> 32); + /* acc1 += x[4] * y[srcBLen - 4] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc2 += x[5] * y[srcBLen - 4] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc3 += x[6] * y[srcBLen - 4] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x2 * c0)) >> 32); + + + } while(--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Read y[srcBLen - 5] sample */ + c0 = *(py--); + + /* Read x[7] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[srcBLen - 5] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc1 += x[5] * y[srcBLen - 5] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc2 += x[6] * y[srcBLen - 5] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc3 += x[7] * y[srcBLen - 5] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32); + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + /* Store the results in the accumulators in the destination buffer. */ + *pOut++ = (q31_t) (acc0 << 1); + *pOut++ = (q31_t) (acc1 << 1); + *pOut++ = (q31_t) (acc2 << 1); + *pOut++ = (q31_t) (acc3 << 1); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + (count * 4u); + py = pSrc2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4u; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum << 1; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum << 1; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The blockSize3 variable holds the number of MAC operations performed */ + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while(blockSize3 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = blockSize3 >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = blockSize3 % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum << 1; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the loop counter */ + blockSize3--; + } + +} + +/** + * @} end of Conv group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_f32.c new file mode 100644 index 000000000..74b8c8e4d --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_f32.c @@ -0,0 +1,641 @@ +/* ---------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_conv_partial_f32.c +* +* Description: Partial convolution of floating-point sequences. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* +* -------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup PartialConv Partial Convolution + * + * Partial Convolution is equivalent to Convolution except that a subset of the output samples is generated. + * Each function has two additional arguments. + * firstIndex specifies the starting index of the subset of output samples. + * numPoints is the number of output samples to compute. + * The function computes the output in the range + * [firstIndex, ..., firstIndex+numPoints-1]. + * The output array pDst contains numPoints values. + * + * The allowable range of output indices is [0 srcALen+srcBLen-2]. + * If the requested subset does not fall in this range then the functions return ARM_MATH_ARGUMENT_ERROR. + * Otherwise the functions return ARM_MATH_SUCCESS. + * \note Refer arm_conv_f32() for details on fixed point behavior. + */ + +/** + * @addtogroup PartialConv + * @{ + */ + +/** + * @brief Partial convolution of floating-point sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + +arm_status arm_conv_partial_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst, + uint32_t firstIndex, + uint32_t numPoints) +{ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float32_t *pIn1 = pSrcA; /* inputA pointer */ + float32_t *pIn2 = pSrcB; /* inputB pointer */ + float32_t *pOut = pDst; /* output pointer */ + float32_t *px; /* Intermediate inputA pointer */ + float32_t *py; /* Intermediate inputB pointer */ + float32_t *pSrc1, *pSrc2; /* Intermediate pointers */ + float32_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + float32_t x0, x1, x2, x3, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t j, k, count = 0u, blkCnt, check; + int32_t blockSize1, blockSize2, blockSize3; /* loop counters */ + arm_status status; /* status of Partial convolution */ + + + /* Check for range of output samples to be calculated */ + if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u)))) + { + /* Set status as ARM_MATH_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if(srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* Conditions to check which loopCounter holds + * the first and last indices of the output samples to be calculated. */ + check = firstIndex + numPoints; + blockSize3 = (int32_t) check - (int32_t) srcALen; + blockSize3 = (blockSize3 > 0) ? blockSize3 : 0; + blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex; + blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 : + (int32_t) numPoints) : 0; + blockSize2 = ((int32_t) check - blockSize3) - + (blockSize1 + (int32_t) firstIndex); + blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* Set the output pointer to point to the firstIndex + * of the output sample to be calculated. */ + pOut = pDst + firstIndex; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed. + Since the partial convolution starts from from firstIndex + Number of Macs to be performed is firstIndex + 1 */ + count = 1u + firstIndex; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc1 = pIn2 + firstIndex; + py = pSrc1; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while(blockSize1 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* x[0] * y[srcBLen - 1] */ + sum += *px++ * *py--; + + /* x[1] * y[srcBLen - 2] */ + sum += *px++ * *py--; + + /* x[2] * y[srcBLen - 3] */ + sum += *px++ * *py--; + + /* x[3] * y[srcBLen - 4] */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = ++pSrc1; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 1u; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if(srcBLen >= 4u) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = ((uint32_t) blockSize2 >> 2u); + + while(blkCnt > 0u) + { + /* Set all accumulators to zero */ + acc0 = 0.0f; + acc1 = 0.0f; + acc2 = 0.0f; + acc3 = 0.0f; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[srcBLen - 1] sample */ + c0 = *(py--); + + /* Read x[3] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[0] * y[srcBLen - 1] */ + acc0 += x0 * c0; + + /* acc1 += x[1] * y[srcBLen - 1] */ + acc1 += x1 * c0; + + /* acc2 += x[2] * y[srcBLen - 1] */ + acc2 += x2 * c0; + + /* acc3 += x[3] * y[srcBLen - 1] */ + acc3 += x3 * c0; + + /* Read y[srcBLen - 2] sample */ + c0 = *(py--); + + /* Read x[4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[1] * y[srcBLen - 2] */ + acc0 += x1 * c0; + /* acc1 += x[2] * y[srcBLen - 2] */ + acc1 += x2 * c0; + /* acc2 += x[3] * y[srcBLen - 2] */ + acc2 += x3 * c0; + /* acc3 += x[4] * y[srcBLen - 2] */ + acc3 += x0 * c0; + + /* Read y[srcBLen - 3] sample */ + c0 = *(py--); + + /* Read x[5] sample */ + x1 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[2] * y[srcBLen - 3] */ + acc0 += x2 * c0; + /* acc1 += x[3] * y[srcBLen - 2] */ + acc1 += x3 * c0; + /* acc2 += x[4] * y[srcBLen - 2] */ + acc2 += x0 * c0; + /* acc3 += x[5] * y[srcBLen - 2] */ + acc3 += x1 * c0; + + /* Read y[srcBLen - 4] sample */ + c0 = *(py--); + + /* Read x[6] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[3] * y[srcBLen - 4] */ + acc0 += x3 * c0; + /* acc1 += x[4] * y[srcBLen - 4] */ + acc1 += x0 * c0; + /* acc2 += x[5] * y[srcBLen - 4] */ + acc2 += x1 * c0; + /* acc3 += x[6] * y[srcBLen - 4] */ + acc3 += x2 * c0; + + + } while(--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Read y[srcBLen - 5] sample */ + c0 = *(py--); + + /* Read x[7] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[srcBLen - 5] */ + acc0 += x0 * c0; + /* acc1 += x[5] * y[srcBLen - 5] */ + acc1 += x1 * c0; + /* acc2 += x[6] * y[srcBLen - 5] */ + acc2 += x2 * c0; + /* acc3 += x[7] * y[srcBLen - 5] */ + acc3 += x3 * c0; + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc0; + *pOut++ = acc1; + *pOut++ = acc2; + *pOut++ = acc3; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + (count * 4u); + py = pSrc2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = (uint32_t) blockSize2 % 0x4u; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += *px++ * *py--; + sum += *px++ * *py--; + sum += *px++ * *py--; + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = (uint32_t) blockSize2; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1u; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + while(blockSize3 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ + sum += *px++ * *py--; + + /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ + sum += *px++ * *py--; + + /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ + sum += *px++ * *py--; + + /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen-1] * y[srcBLen-1] */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); + +#else + + /* Run the below code for Cortex-M0 */ + + float32_t *pIn1 = pSrcA; /* inputA pointer */ + float32_t *pIn2 = pSrcB; /* inputB pointer */ + float32_t sum; /* Accumulator */ + uint32_t i, j; /* loop counters */ + arm_status status; /* status of Partial convolution */ + + /* Check for range of output samples to be calculated */ + if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u)))) + { + /* Set status as ARM_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + /* Loop to calculate convolution for output length number of values */ + for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0.0f; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0u; j <= i; j++) + { + /* Check the array limitations for inputs */ + if((((i - j) < srcBLen) && (j < srcALen))) + { + /* z[i] += x[i-j] * y[j] */ + sum += pIn1[j] * pIn2[i - j]; + } + } + /* Store the output in the destination buffer */ + pDst[i] = sum; + } + /* set status as ARM_SUCCESS as there are no argument errors */ + status = ARM_MATH_SUCCESS; + } + return (status); + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of PartialConv group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q15.c new file mode 100644 index 000000000..dcb4ed7b5 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q15.c @@ -0,0 +1,705 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_conv_partial_fast_q15.c +* +* Description: Fast Q15 Partial convolution. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup PartialConv + * @{ + */ + +/** + * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + * + * See arm_conv_partial_q15() for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion. + */ + + +arm_status arm_conv_partial_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints) +{ + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *pOut = pDst; /* output pointer */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + q15_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q31_t x0, x1, x2, x3, c0; + uint32_t j, k, count, check, blkCnt; + int32_t blockSize1, blockSize2, blockSize3; /* loop counters */ + arm_status status; /* status of Partial convolution */ + q31_t *pb; /* 32 bit pointer for inputB buffer */ + + /* Check for range of output samples to be calculated */ + if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u)))) + { + /* Set status as ARM_MATH_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if(srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* Conditions to check which loopCounter holds + * the first and last indices of the output samples to be calculated. */ + check = firstIndex + numPoints; + blockSize3 = ((int32_t) check - (int32_t) srcALen); + blockSize3 = (blockSize3 > 0) ? blockSize3 : 0; + blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex); + blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 : + (int32_t) numPoints) : 0; + blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + + (int32_t) firstIndex); + blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* Set the output pointer to point to the firstIndex + * of the output sample to be calculated. */ + pOut = pDst + firstIndex; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed. + Since the partial convolution starts from firstIndex + Number of Macs to be performed is firstIndex + 1 */ + count = 1u + firstIndex; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + firstIndex; + py = pSrc2; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations less than 4 */ + /* Second part of this stage computes the MAC operations greater than or equal to 4 */ + + /* The first part of the stage starts here */ + while((count < 4u) && (blockSize1 > 0)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over number of MAC operations between + * inputA samples and inputB samples */ + k = count; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum = __SMLAD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = ++pSrc2; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* The second part of the stage starts here */ + /* The internal loop, over count, is unrolled by 4 */ + /* To, read the last two inputB samples using SIMD: + * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */ + py = py - 1; + + while(blockSize1 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */ + sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */ + sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* For the next MAC operations, the pointer py is used without SIMD + * So, py is incremented by 1 */ + py = py + 1u; + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum = __SMLAD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = ++pSrc2 - 1u; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + /* Initialize inputB pointer of type q31 */ + pb = (q31_t *) (py - 1u); + + /* count is the index by which the pointer pIn1 to be incremented */ + count = 1u; + + + /* -------------------- + * Stage2 process + * -------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if(srcBLen >= 4u) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = ((uint32_t) blockSize2 >> 2u); + + while(blkCnt > 0u) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + + /* read x[0], x[1] samples */ + x0 = *(q31_t *) (px++); + /* read x[1], x[2] samples */ + x1 = *(q31_t *) (px++); + + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read the last two inputB samples using SIMD: + * y[srcBLen - 1] and y[srcBLen - 2] */ + c0 = *(pb--); + + /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ + acc0 = __SMLADX(x0, c0, acc0); + + /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ + acc1 = __SMLADX(x1, c0, acc1); + + /* Read x[2], x[3] */ + x2 = *(q31_t *) (px++); + + /* Read x[3], x[4] */ + x3 = *(q31_t *) (px++); + + /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ + acc2 = __SMLADX(x2, c0, acc2); + + /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ + acc3 = __SMLADX(x3, c0, acc3); + + /* Read y[srcBLen - 3] and y[srcBLen - 4] */ + c0 = *(pb--); + + /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ + acc0 = __SMLADX(x2, c0, acc0); + + /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ + acc1 = __SMLADX(x3, c0, acc1); + + /* Read x[4], x[5] */ + x0 = *(q31_t *) (px++); + + /* Read x[5], x[6] */ + x1 = *(q31_t *) (px++); + + /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ + acc2 = __SMLADX(x0, c0, acc2); + + /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ + acc3 = __SMLADX(x1, c0, acc3); + + } while(--k); + + /* For the next MAC operations, SIMD is not used + * So, the 16 bit pointer if inputB, py is updated */ + py = (q15_t *) pb; + py = py + 1; + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + if(k == 1u) + { + /* Read y[srcBLen - 5] */ + c0 = *(py); +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16; + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[7] */ + x3 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLAD(x0, c0, acc0); + acc1 = __SMLAD(x1, c0, acc1); + acc2 = __SMLADX(x1, c0, acc2); + acc3 = __SMLADX(x3, c0, acc3); + } + + if(k == 2u) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + c0 = *(pb); + + /* Read x[7], x[8] */ + x3 = *(q31_t *) px++; + + /* Read x[9] */ + x2 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x0, c0, acc0); + acc1 = __SMLADX(x1, c0, acc1); + acc2 = __SMLADX(x3, c0, acc2); + acc3 = __SMLADX(x2, c0, acc3); + } + + if(k == 3u) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + c0 = *pb--; + + /* Read x[7], x[8] */ + x3 = *(q31_t *) px++; + + /* Read x[9] */ + x2 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x0, c0, acc0); + acc1 = __SMLADX(x1, c0, acc1); + acc2 = __SMLADX(x3, c0, acc2); + acc3 = __SMLADX(x2, c0, acc3); + + /* Read y[srcBLen - 7] */ +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = (*pb); + c0 = (c0) << 16; + +#else + + c0 = (q15_t) (*pb >> 16); + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[10] */ + x3 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x1, c0, acc0); + acc1 = __SMLAD(x2, c0, acc1); + acc2 = __SMLADX(x2, c0, acc2); + acc3 = __SMLADX(x3, c0, acc3); + } + + /* Store the results in the accumulators in the destination buffer. */ +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = __PKHBT(acc0 >> 15, acc1 >> 15, 16); + *__SIMD32(pOut)++ = __PKHBT(acc2 >> 15, acc3 >> 15, 16); + +#else + + *__SIMD32(pOut)++ = __PKHBT(acc1 >> 15, acc0 >> 15, 16); + *__SIMD32(pOut)++ = __PKHBT(acc3 >> 15, acc2 >> 15, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + (count * 4u); + py = pSrc2; + pb = (q31_t *) (py - 1); + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = (uint32_t) blockSize2 % 0x4u; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = (uint32_t) blockSize2; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1u; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + pIn2 = pSrc2 - 1u; + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations greater than 4 */ + /* Second part of this stage computes the MAC operations less than or equal to 4 */ + + /* The first part of the stage starts here */ + j = count >> 2u; + + while((j > 0u) && (blockSize3 > 0)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied + * with y[srcBLen - 1], y[srcBLen - 2] respectively */ + sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied + * with y[srcBLen - 3], y[srcBLen - 4] respectively */ + sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* For the next MAC operations, the pointer py is used without SIMD + * So, py is incremented by 1 */ + py = py + 1u; + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */ + sum = __SMLAD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + + j--; + } + + /* The second part of the stage starts here */ + /* SIMD is not used for the next MAC operations, + * so pointer py is updated to read only one sample at a time */ + py = py + 1u; + + while(blockSize3 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen-1] * y[srcBLen-1] */ + sum = __SMLAD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); + +} + +/** + * @} end of PartialConv group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q31.c new file mode 100644 index 000000000..0b848053d --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q31.c @@ -0,0 +1,593 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_conv_partial_fast_q31.c +* +* Description: Fast Q31 Partial convolution. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup PartialConv + * @{ + */ + +/** + * @brief Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + * + * \par + * See arm_conv_partial_q31() for a slower implementation of this function which uses a 64-bit accumulator to provide higher precision. + */ + +arm_status arm_conv_partial_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints) +{ + q31_t *pIn1; /* inputA pointer */ + q31_t *pIn2; /* inputB pointer */ + q31_t *pOut = pDst; /* output pointer */ + q31_t *px; /* Intermediate inputA pointer */ + q31_t *py; /* Intermediate inputB pointer */ + q31_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ + q31_t x0, x1, x2, x3, c0; + uint32_t j, k, count, check, blkCnt; + int32_t blockSize1, blockSize2, blockSize3; /* loop counters */ + arm_status status; /* status of Partial convolution */ + + + /* Check for range of output samples to be calculated */ + if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u)))) + { + /* Set status as ARM_MATH_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if(srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* Conditions to check which loopCounter holds + * the first and last indices of the output samples to be calculated. */ + check = firstIndex + numPoints; + blockSize3 = ((int32_t) check - (int32_t) srcALen); + blockSize3 = (blockSize3 > 0) ? blockSize3 : 0; + blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex); + blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 : + (int32_t) numPoints) : 0; + blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + + (int32_t) firstIndex); + blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* Set the output pointer to point to the firstIndex + * of the output sample to be calculated. */ + pOut = pDst + firstIndex; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed. + Since the partial convolution starts from firstIndex + Number of Macs to be performed is firstIndex + 1 */ + count = 1u + firstIndex; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + firstIndex; + py = pSrc2; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first loop starts here */ + while(blockSize1 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* x[0] * y[srcBLen - 1] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* x[1] * y[srcBLen - 2] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* x[2] * y[srcBLen - 3] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* x[3] * y[srcBLen - 4] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum << 1; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = ++pSrc2; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 1u; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if(srcBLen >= 4u) + { + /* Loop unroll over blockSize2 */ + blkCnt = ((uint32_t) blockSize2 >> 2u); + + while(blkCnt > 0u) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[srcBLen - 1] sample */ + c0 = *(py--); + + /* Read x[3] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[0] * y[srcBLen - 1] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); + + /* acc1 += x[1] * y[srcBLen - 1] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); + + /* acc2 += x[2] * y[srcBLen - 1] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32); + + /* acc3 += x[3] * y[srcBLen - 1] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32); + + /* Read y[srcBLen - 2] sample */ + c0 = *(py--); + + /* Read x[4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[1] * y[srcBLen - 2] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc1 += x[2] * y[srcBLen - 2] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc2 += x[3] * y[srcBLen - 2] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x3 * c0)) >> 32); + /* acc3 += x[4] * y[srcBLen - 2] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x0 * c0)) >> 32); + + /* Read y[srcBLen - 3] sample */ + c0 = *(py--); + + /* Read x[5] sample */ + x1 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[2] * y[srcBLen - 3] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc1 += x[3] * y[srcBLen - 2] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x3 * c0)) >> 32); + /* acc2 += x[4] * y[srcBLen - 2] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc3 += x[5] * y[srcBLen - 2] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x1 * c0)) >> 32); + + /* Read y[srcBLen - 4] sample */ + c0 = *(py--); + + /* Read x[6] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[3] * y[srcBLen - 4] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x3 * c0)) >> 32); + /* acc1 += x[4] * y[srcBLen - 4] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc2 += x[5] * y[srcBLen - 4] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc3 += x[6] * y[srcBLen - 4] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x2 * c0)) >> 32); + + + } while(--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Read y[srcBLen - 5] sample */ + c0 = *(py--); + + /* Read x[7] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[srcBLen - 5] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc1 += x[5] * y[srcBLen - 5] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc2 += x[6] * y[srcBLen - 5] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc3 += x[7] * y[srcBLen - 5] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32); + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (acc0 << 1); + *pOut++ = (q31_t) (acc1 << 1); + *pOut++ = (q31_t) (acc2 << 1); + *pOut++ = (q31_t) (acc3 << 1); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + (count * 4u); + py = pSrc2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = (uint32_t) blockSize2 % 0x4u; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum << 1; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = (uint32_t) blockSize2; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum << 1; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1u; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while(blockSize3 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen-1] * y[srcBLen-1] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum << 1; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); + +} + +/** + * @} end of PartialConv group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q15.c new file mode 100644 index 000000000..4a74726db --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q15.c @@ -0,0 +1,765 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_conv_partial_q15.c +* +* Description: Partial convolution of Q15 sequences. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup PartialConv + * @{ + */ + +/** + * @brief Partial convolution of Q15 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + * + * Refer to arm_conv_partial_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. + */ + + +arm_status arm_conv_partial_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints) +{ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *pOut = pDst; /* output pointer */ + q63_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + q15_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q31_t x0, x1, x2, x3, c0; /* Temporary input variables */ + uint32_t j, k, count, check, blkCnt; + int32_t blockSize1, blockSize2, blockSize3; /* loop counter */ + arm_status status; /* status of Partial convolution */ + q31_t *pb; /* 32 bit pointer for inputB buffer */ + + /* Check for range of output samples to be calculated */ + if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u)))) + { + /* Set status as ARM_MATH_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if(srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* Conditions to check which loopCounter holds + * the first and last indices of the output samples to be calculated. */ + check = firstIndex + numPoints; + blockSize3 = ((int32_t) check - (int32_t) srcALen); + blockSize3 = (blockSize3 > 0) ? blockSize3 : 0; + blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex); + blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 : + (int32_t) numPoints) : 0; + blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + + (int32_t) firstIndex); + blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* Set the output pointer to point to the firstIndex + * of the output sample to be calculated. */ + pOut = pDst + firstIndex; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed. + Since the partial convolution starts from firstIndex + Number of Macs to be performed is firstIndex + 1 */ + count = 1u + firstIndex; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + firstIndex; + py = pSrc2; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations less than 4 */ + /* Second part of this stage computes the MAC operations greater than or equal to 4 */ + + /* The first part of the stage starts here */ + while((count < 4u) && (blockSize1 > 0)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over number of MAC operations between + * inputA samples and inputB samples */ + k = count; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum = __SMLALD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = ++pSrc2; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* The second part of the stage starts here */ + /* The internal loop, over count, is unrolled by 4 */ + /* To, read the last two inputB samples using SIMD: + * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */ + py = py - 1; + + while(blockSize1 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */ + sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */ + sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* For the next MAC operations, the pointer py is used without SIMD + * So, py is incremented by 1 */ + py = py + 1u; + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum = __SMLALD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = ++pSrc2 - 1u; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + /* Initialize inputB pointer of type q31 */ + pb = (q31_t *) (py - 1u); + + /* count is the index by which the pointer pIn1 to be incremented */ + count = 1u; + + + /* -------------------- + * Stage2 process + * -------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if(srcBLen >= 4u) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = ((uint32_t) blockSize2 >> 2u); + + while(blkCnt > 0u) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + + /* read x[0], x[1] samples */ + x0 = *(q31_t *) (px++); + /* read x[1], x[2] samples */ + x1 = *(q31_t *) (px++); + + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read the last two inputB samples using SIMD: + * y[srcBLen - 1] and y[srcBLen - 2] */ + c0 = *(pb--); + + /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ + acc0 = __SMLALDX(x0, c0, acc0); + + /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ + acc1 = __SMLALDX(x1, c0, acc1); + + /* Read x[2], x[3] */ + x2 = *(q31_t *) (px++); + + /* Read x[3], x[4] */ + x3 = *(q31_t *) (px++); + + /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ + acc2 = __SMLALDX(x2, c0, acc2); + + /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ + acc3 = __SMLALDX(x3, c0, acc3); + + /* Read y[srcBLen - 3] and y[srcBLen - 4] */ + c0 = *(pb--); + + /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ + acc0 = __SMLALDX(x2, c0, acc0); + + /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ + acc1 = __SMLALDX(x3, c0, acc1); + + /* Read x[4], x[5] */ + x0 = *(q31_t *) (px++); + + /* Read x[5], x[6] */ + x1 = *(q31_t *) (px++); + + /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ + acc2 = __SMLALDX(x0, c0, acc2); + + /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ + acc3 = __SMLALDX(x1, c0, acc3); + + } while(--k); + + /* For the next MAC operations, SIMD is not used + * So, the 16 bit pointer if inputB, py is updated */ + py = (q15_t *) pb; + py = py + 1; + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + if(k == 1u) + { + /* Read y[srcBLen - 5] */ + c0 = *(py); + +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16u; + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + /* Read x[7] */ + x3 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALD(x0, c0, acc0); + acc1 = __SMLALD(x1, c0, acc1); + acc2 = __SMLALDX(x1, c0, acc2); + acc3 = __SMLALDX(x3, c0, acc3); + } + + if(k == 2u) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + c0 = *(pb); + + /* Read x[7], x[8] */ + x3 = *(q31_t *) px++; + + /* Read x[9] */ + x2 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALDX(x0, c0, acc0); + acc1 = __SMLALDX(x1, c0, acc1); + acc2 = __SMLALDX(x3, c0, acc2); + acc3 = __SMLALDX(x2, c0, acc3); + } + + if(k == 3u) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + c0 = *pb--; + + /* Read x[7], x[8] */ + x3 = *(q31_t *) px++; + + /* Read x[9] */ + x2 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALDX(x0, c0, acc0); + acc1 = __SMLALDX(x1, c0, acc1); + acc2 = __SMLALDX(x3, c0, acc2); + acc3 = __SMLALDX(x2, c0, acc3); + +#ifdef ARM_MATH_BIG_ENDIAN + + /* Read y[srcBLen - 7] */ + c0 = (*pb); + c0 = (c0) << 16; + +#else + + /* Read y[srcBLen - 7] */ + c0 = (q15_t) (*pb >> 16); + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[10] */ + x3 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALDX(x1, c0, acc0); + acc1 = __SMLALD(x2, c0, acc1); + acc2 = __SMLALDX(x2, c0, acc2); + acc3 = __SMLALDX(x3, c0, acc3); + } + + /* Store the results in the accumulators in the destination buffer. */ +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); + +#else + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + (count * 4u); + py = pSrc2; + pb = (q31_t *) (py - 1); + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = (uint32_t) blockSize2 % 0x4u; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += (q63_t) ((q31_t) * px++ * *py--); + sum += (q63_t) ((q31_t) * px++ * *py--); + sum += (q63_t) ((q31_t) * px++ * *py--); + sum += (q63_t) ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += (q63_t) ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT(sum >> 15, 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = (uint32_t) blockSize2; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT(sum >> 15, 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1u; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + pIn2 = pSrc2 - 1u; + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations greater than 4 */ + /* Second part of this stage computes the MAC operations less than or equal to 4 */ + + /* The first part of the stage starts here */ + j = count >> 2u; + + while((j > 0u) && (blockSize3 > 0)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied + * with y[srcBLen - 1], y[srcBLen - 2] respectively */ + sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied + * with y[srcBLen - 3], y[srcBLen - 4] respectively */ + sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* For the next MAC operations, the pointer py is used without SIMD + * So, py is incremented by 1 */ + py = py + 1u; + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */ + sum = __SMLALD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + + j--; + } + + /* The second part of the stage starts here */ + /* SIMD is not used for the next MAC operations, + * so pointer py is updated to read only one sample at a time */ + py = py + 1u; + + while(blockSize3 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen-1] * y[srcBLen-1] */ + sum = __SMLALD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); + +#else + + /* Run the below code for Cortex-M0 */ + + q15_t *pIn1 = pSrcA; /* inputA pointer */ + q15_t *pIn2 = pSrcB; /* inputB pointer */ + q63_t sum; /* Accumulator */ + uint32_t i, j; /* loop counters */ + arm_status status; /* status of Partial convolution */ + + /* Check for range of output samples to be calculated */ + if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u)))) + { + /* Set status as ARM_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + /* Loop to calculate convolution for output length number of values */ + for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if(((i - j) < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += ((q31_t) pIn1[j] * (pIn2[i - j])); + } + } + + /* Store the output in the destination buffer */ + pDst[i] = (q15_t) __SSAT((sum >> 15u), 16u); + } + /* set status as ARM_SUCCESS as there are no argument errors */ + status = ARM_MATH_SUCCESS; + } + return (status); + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of PartialConv group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q31.c new file mode 100644 index 000000000..a592d74d1 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q31.c @@ -0,0 +1,616 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_conv_partial_q31.c +* +* Description: Partial convolution of Q31 sequences. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup PartialConv + * @{ + */ + +/** + * @brief Partial convolution of Q31 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + * + * See arm_conv_partial_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4. + */ + +arm_status arm_conv_partial_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints) +{ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t *pIn1; /* inputA pointer */ + q31_t *pIn2; /* inputB pointer */ + q31_t *pOut = pDst; /* output pointer */ + q31_t *px; /* Intermediate inputA pointer */ + q31_t *py; /* Intermediate inputB pointer */ + q31_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q63_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + q31_t x0, x1, x2, x3, c0; + uint32_t j, k, count, check, blkCnt; + int32_t blockSize1, blockSize2, blockSize3; /* loop counter */ + arm_status status; /* status of Partial convolution */ + + + /* Check for range of output samples to be calculated */ + if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u)))) + { + /* Set status as ARM_MATH_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if(srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* Conditions to check which loopCounter holds + * the first and last indices of the output samples to be calculated. */ + check = firstIndex + numPoints; + blockSize3 = ((int32_t) check - (int32_t) srcALen); + blockSize3 = (blockSize3 > 0) ? blockSize3 : 0; + blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex); + blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 : + (int32_t) numPoints) : 0; + blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + + (int32_t) firstIndex); + blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* Set the output pointer to point to the firstIndex + * of the output sample to be calculated. */ + pOut = pDst + firstIndex; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed. + Since the partial convolution starts from firstIndex + Number of Macs to be performed is firstIndex + 1 */ + count = 1u + firstIndex; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + firstIndex; + py = pSrc2; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first loop starts here */ + while(blockSize1 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* x[0] * y[srcBLen - 1] */ + sum += (q63_t) * px++ * (*py--); + /* x[1] * y[srcBLen - 2] */ + sum += (q63_t) * px++ * (*py--); + /* x[2] * y[srcBLen - 3] */ + sum += (q63_t) * px++ * (*py--); + /* x[3] * y[srcBLen - 4] */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (sum >> 31); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = ++pSrc2; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 1u; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if(srcBLen >= 4u) + { + /* Loop unroll over blockSize2 */ + blkCnt = ((uint32_t) blockSize2 >> 2u); + + while(blkCnt > 0u) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[srcBLen - 1] sample */ + c0 = *(py--); + + /* Read x[3] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[0] * y[srcBLen - 1] */ + acc0 += (q63_t) x0 *c0; + /* acc1 += x[1] * y[srcBLen - 1] */ + acc1 += (q63_t) x1 *c0; + /* acc2 += x[2] * y[srcBLen - 1] */ + acc2 += (q63_t) x2 *c0; + /* acc3 += x[3] * y[srcBLen - 1] */ + acc3 += (q63_t) x3 *c0; + + /* Read y[srcBLen - 2] sample */ + c0 = *(py--); + + /* Read x[4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[1] * y[srcBLen - 2] */ + acc0 += (q63_t) x1 *c0; + /* acc1 += x[2] * y[srcBLen - 2] */ + acc1 += (q63_t) x2 *c0; + /* acc2 += x[3] * y[srcBLen - 2] */ + acc2 += (q63_t) x3 *c0; + /* acc3 += x[4] * y[srcBLen - 2] */ + acc3 += (q63_t) x0 *c0; + + /* Read y[srcBLen - 3] sample */ + c0 = *(py--); + + /* Read x[5] sample */ + x1 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[2] * y[srcBLen - 3] */ + acc0 += (q63_t) x2 *c0; + /* acc1 += x[3] * y[srcBLen - 2] */ + acc1 += (q63_t) x3 *c0; + /* acc2 += x[4] * y[srcBLen - 2] */ + acc2 += (q63_t) x0 *c0; + /* acc3 += x[5] * y[srcBLen - 2] */ + acc3 += (q63_t) x1 *c0; + + /* Read y[srcBLen - 4] sample */ + c0 = *(py--); + + /* Read x[6] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[3] * y[srcBLen - 4] */ + acc0 += (q63_t) x3 *c0; + /* acc1 += x[4] * y[srcBLen - 4] */ + acc1 += (q63_t) x0 *c0; + /* acc2 += x[5] * y[srcBLen - 4] */ + acc2 += (q63_t) x1 *c0; + /* acc3 += x[6] * y[srcBLen - 4] */ + acc3 += (q63_t) x2 *c0; + + } while(--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Read y[srcBLen - 5] sample */ + c0 = *(py--); + + /* Read x[7] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[srcBLen - 5] */ + acc0 += (q63_t) x0 *c0; + /* acc1 += x[5] * y[srcBLen - 5] */ + acc1 += (q63_t) x1 *c0; + /* acc2 += x[6] * y[srcBLen - 5] */ + acc2 += (q63_t) x2 *c0; + /* acc3 += x[7] * y[srcBLen - 5] */ + acc3 += (q63_t) x3 *c0; + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (acc0 >> 31); + *pOut++ = (q31_t) (acc1 >> 31); + *pOut++ = (q31_t) (acc2 >> 31); + *pOut++ = (q31_t) (acc3 >> 31); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + (count * 4u); + py = pSrc2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = (uint32_t) blockSize2 % 0x4u; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += (q63_t) * px++ * (*py--); + sum += (q63_t) * px++ * (*py--); + sum += (q63_t) * px++ * (*py--); + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (sum >> 31); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = (uint32_t) blockSize2; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (sum >> 31); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The blockSize3 variable holds the number of MAC operations performed */ + count = srcBLen - 1u; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while(blockSize3 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + sum += (q63_t) * px++ * (*py--); + sum += (q63_t) * px++ * (*py--); + sum += (q63_t) * px++ * (*py--); + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (sum >> 31); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); + +#else + + /* Run the below code for Cortex-M0 */ + + q31_t *pIn1 = pSrcA; /* inputA pointer */ + q31_t *pIn2 = pSrcB; /* inputB pointer */ + q63_t sum; /* Accumulator */ + uint32_t i, j; /* loop counters */ + arm_status status; /* status of Partial convolution */ + + /* Check for range of output samples to be calculated */ + if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u)))) + { + /* Set status as ARM_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + /* Loop to calculate convolution for output length number of values */ + for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if(((i - j) < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += ((q63_t) pIn1[j] * (pIn2[i - j])); + } + } + + /* Store the output in the destination buffer */ + pDst[i] = (q31_t) (sum >> 31u); + } + /* set status as ARM_SUCCESS as there are no argument errors */ + status = ARM_MATH_SUCCESS; + } + return (status); + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of PartialConv group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q7.c new file mode 100644 index 000000000..d49903fa5 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q7.c @@ -0,0 +1,723 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_conv_partial_q7.c +* +* Description: Partial convolution of Q7 sequences. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup PartialConv + * @{ + */ + +/** + * @brief Partial convolution of Q7 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + * + */ + +arm_status arm_conv_partial_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + uint32_t firstIndex, + uint32_t numPoints) +{ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q7_t *pIn1; /* inputA pointer */ + q7_t *pIn2; /* inputB pointer */ + q7_t *pOut = pDst; /* output pointer */ + q7_t *px; /* Intermediate inputA pointer */ + q7_t *py; /* Intermediate inputB pointer */ + q7_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + q31_t input1, input2; + q15_t in1, in2; + q7_t x0, x1, x2, x3, c0, c1; + uint32_t j, k, count, check, blkCnt; + int32_t blockSize1, blockSize2, blockSize3; /* loop counter */ + arm_status status; + + + /* Check for range of output samples to be calculated */ + if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u)))) + { + /* Set status as ARM_MATH_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if(srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* Conditions to check which loopCounter holds + * the first and last indices of the output samples to be calculated. */ + check = firstIndex + numPoints; + blockSize3 = ((int32_t) check - (int32_t) srcALen); + blockSize3 = (blockSize3 > 0) ? blockSize3 : 0; + blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex); + blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1u)) ? blockSize1 : + (int32_t) numPoints) : 0; + blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + + (int32_t) firstIndex); + blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* Set the output pointer to point to the firstIndex + * of the output sample to be calculated. */ + pOut = pDst + firstIndex; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed. + Since the partial convolution starts from from firstIndex + Number of Macs to be performed is firstIndex + 1 */ + count = 1u + firstIndex; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + firstIndex; + py = pSrc2; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while(blockSize1 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* x[0] , x[1] */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[srcBLen - 1] , y[srcBLen - 2] */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* x[0] * y[srcBLen - 1] */ + /* x[1] * y[srcBLen - 2] */ + sum = __SMLAD(input1, input2, sum); + + /* x[2] , x[3] */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[srcBLen - 3] , y[srcBLen - 4] */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* x[2] * y[srcBLen - 3] */ + /* x[3] * y[srcBLen - 4] */ + sum = __SMLAD(input1, input2, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(sum >> 7, 8)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = ++pSrc2; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 1u; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if(srcBLen >= 4u) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = ((uint32_t) blockSize2 >> 2u); + + while(blkCnt > 0u) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[srcBLen - 1] sample */ + c0 = *(py--); + /* Read y[srcBLen - 2] sample */ + c1 = *(py--); + + /* Read x[3] sample */ + x3 = *(px++); + + /* x[0] and x[1] are packed */ + in1 = (q15_t) x0; + in2 = (q15_t) x1; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[srcBLen - 1] and y[srcBLen - 2] are packed */ + in1 = (q15_t) c0; + in2 = (q15_t) c1; + + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ + acc0 = __SMLAD(input1, input2, acc0); + + /* x[1] and x[2] are packed */ + in1 = (q15_t) x1; + in2 = (q15_t) x2; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ + acc1 = __SMLAD(input1, input2, acc1); + + /* x[2] and x[3] are packed */ + in1 = (q15_t) x2; + in2 = (q15_t) x3; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ + acc2 = __SMLAD(input1, input2, acc2); + + /* Read x[4] sample */ + x0 = *(px++); + + /* x[3] and x[4] are packed */ + in1 = (q15_t) x3; + in2 = (q15_t) x0; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ + acc3 = __SMLAD(input1, input2, acc3); + + /* Read y[srcBLen - 3] sample */ + c0 = *(py--); + /* Read y[srcBLen - 4] sample */ + c1 = *(py--); + + /* Read x[5] sample */ + x1 = *(px++); + + /* x[2] and x[3] are packed */ + in1 = (q15_t) x2; + in2 = (q15_t) x3; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[srcBLen - 3] and y[srcBLen - 4] are packed */ + in1 = (q15_t) c0; + in2 = (q15_t) c1; + + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ + acc0 = __SMLAD(input1, input2, acc0); + + /* x[3] and x[4] are packed */ + in1 = (q15_t) x3; + in2 = (q15_t) x0; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ + acc1 = __SMLAD(input1, input2, acc1); + + /* x[4] and x[5] are packed */ + in1 = (q15_t) x0; + in2 = (q15_t) x1; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ + acc2 = __SMLAD(input1, input2, acc2); + + /* Read x[6] sample */ + x2 = *(px++); + + /* x[5] and x[6] are packed */ + in1 = (q15_t) x1; + in2 = (q15_t) x2; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ + acc3 = __SMLAD(input1, input2, acc3); + + } while(--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Read y[srcBLen - 5] sample */ + c0 = *(py--); + + /* Read x[7] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[srcBLen - 5] */ + acc0 += ((q31_t) x0 * c0); + /* acc1 += x[5] * y[srcBLen - 5] */ + acc1 += ((q31_t) x1 * c0); + /* acc2 += x[6] * y[srcBLen - 5] */ + acc2 += ((q31_t) x2 * c0); + /* acc3 += x[7] * y[srcBLen - 5] */ + acc3 += ((q31_t) x3 * c0); + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(acc0 >> 7, 8)); + *pOut++ = (q7_t) (__SSAT(acc1 >> 7, 8)); + *pOut++ = (q7_t) (__SSAT(acc2 >> 7, 8)); + *pOut++ = (q7_t) (__SSAT(acc3 >> 7, 8)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count * 4u; + py = pSrc2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = (uint32_t) blockSize2 % 0x4u; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + + /* Reading two inputs of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Reading two inputs of SrcB buffer and packing */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Perform the multiply-accumulates */ + sum = __SMLAD(input1, input2, sum); + + /* Reading two inputs of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Reading two inputs of SrcB buffer and packing */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Perform the multiply-accumulates */ + sum = __SMLAD(input1, input2, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(sum >> 7, 8)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = (uint32_t) blockSize2; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(sum >> 7, 8)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1u; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while(blockSize3 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Reading two inputs, x[srcALen - srcBLen + 1] and x[srcALen - srcBLen + 2] of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Reading two inputs, y[srcBLen - 1] and y[srcBLen - 2] of SrcB buffer and packing */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ + /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ + sum = __SMLAD(input1, input2, sum); + + /* Reading two inputs, x[srcALen - srcBLen + 3] and x[srcALen - srcBLen + 4] of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Reading two inputs, y[srcBLen - 3] and y[srcBLen - 4] of SrcB buffer and packing */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ + /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ + sum = __SMLAD(input1, input2, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen-1] * y[srcBLen-1] */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(sum >> 7, 8)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); + +#else + + /* Run the below code for Cortex-M0 */ + + q7_t *pIn1 = pSrcA; /* inputA pointer */ + q7_t *pIn2 = pSrcB; /* inputB pointer */ + q31_t sum; /* Accumulator */ + uint32_t i, j; /* loop counters */ + arm_status status; /* status of Partial convolution */ + + /* Check for range of output samples to be calculated */ + if((firstIndex + numPoints) > ((srcALen + (srcBLen - 1u)))) + { + /* Set status as ARM_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + /* Loop to calculate convolution for output length number of values */ + for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if(((i - j) < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += ((q15_t) pIn1[j] * (pIn2[i - j])); + } + } + + /* Store the output in the destination buffer */ + pDst[i] = (q7_t) __SSAT((sum >> 7u), 8u); + } + /* set status as ARM_SUCCESS as there are no argument errors */ + status = ARM_MATH_SUCCESS; + } + return (status); + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of PartialConv group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q15.c new file mode 100644 index 000000000..a33a834ff --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q15.c @@ -0,0 +1,727 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_conv_q15.c +* +* Description: Convolution of Q15 sequences. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Conv + * @{ + */ + +/** + * @brief Convolution of Q15 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both inputs are in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * This approach provides 33 guard bits and there is no risk of overflow. + * The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format. + * + * \par + * Refer to arm_conv_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. + */ + +void arm_conv_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst) +{ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *pOut = pDst; /* output pointer */ + q63_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + q15_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q31_t x0, x1, x2, x3, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t blockSize1, blockSize2, blockSize3, j, k, count, blkCnt; /* loop counter */ + q31_t *pb; /* 32 bit pointer for inputB buffer */ + + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if(srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* The algorithm is implemented in three stages. + The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1u; + blockSize2 = srcALen - (srcBLen - 1u); + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1u; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations less than 4 */ + /* Second part of this stage computes the MAC operations greater than or equal to 4 */ + + /* The first part of the stage starts here */ + while((count < 4u) && (blockSize1 > 0u)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over number of MAC operations between + * inputA samples and inputB samples */ + k = count; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum = __SMLALD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pIn2 + count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* The second part of the stage starts here */ + /* The internal loop, over count, is unrolled by 4 */ + /* To, read the last two inputB samples using SIMD: + * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */ + py = py - 1; + + while(blockSize1 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */ + sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */ + sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* For the next MAC operations, the pointer py is used without SIMD + * So, py is incremented by 1 */ + py = py + 1u; + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum = __SMLALD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pIn2 + (count - 1u); + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + /* Initialize inputB pointer of type q31 */ + pb = (q31_t *) (py - 1u); + + /* count is the index by which the pointer pIn1 to be incremented */ + count = 1u; + + + /* -------------------- + * Stage2 process + * -------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if(srcBLen >= 4u) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2u; + + while(blkCnt > 0u) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + + /* read x[0], x[1] samples */ + x0 = *(q31_t *) (px++); + /* read x[1], x[2] samples */ + x1 = *(q31_t *) (px++); + + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read the last two inputB samples using SIMD: + * y[srcBLen - 1] and y[srcBLen - 2] */ + c0 = *(pb--); + + /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ + acc0 = __SMLALDX(x0, c0, acc0); + + /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ + acc1 = __SMLALDX(x1, c0, acc1); + + /* Read x[2], x[3] */ + x2 = *(q31_t *) (px++); + + /* Read x[3], x[4] */ + x3 = *(q31_t *) (px++); + + /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ + acc2 = __SMLALDX(x2, c0, acc2); + + /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ + acc3 = __SMLALDX(x3, c0, acc3); + + /* Read y[srcBLen - 3] and y[srcBLen - 4] */ + c0 = *(pb--); + + /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ + acc0 = __SMLALDX(x2, c0, acc0); + + /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ + acc1 = __SMLALDX(x3, c0, acc1); + + /* Read x[4], x[5] */ + x0 = *(q31_t *) (px++); + + /* Read x[5], x[6] */ + x1 = *(q31_t *) (px++); + + /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ + acc2 = __SMLALDX(x0, c0, acc2); + + /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ + acc3 = __SMLALDX(x1, c0, acc3); + + } while(--k); + + /* For the next MAC operations, SIMD is not used + * So, the 16 bit pointer if inputB, py is updated */ + py = (q15_t *) pb; + py = py + 1; + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + if(k == 1u) + { + /* Read y[srcBLen - 5] */ + c0 = *(py); + +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16u; + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[7] */ + x3 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALD(x0, c0, acc0); + acc1 = __SMLALD(x1, c0, acc1); + acc2 = __SMLALDX(x1, c0, acc2); + acc3 = __SMLALDX(x3, c0, acc3); + } + + if(k == 2u) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + c0 = *(pb); + + /* Read x[7], x[8] */ + x3 = *(q31_t *) px++; + + /* Read x[9] */ + x2 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALDX(x0, c0, acc0); + acc1 = __SMLALDX(x1, c0, acc1); + acc2 = __SMLALDX(x3, c0, acc2); + acc3 = __SMLALDX(x2, c0, acc3); + } + + if(k == 3u) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + c0 = *pb--; + + /* Read x[7], x[8] */ + x3 = *(q31_t *) px++; + + /* Read x[9] */ + x2 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALDX(x0, c0, acc0); + acc1 = __SMLALDX(x1, c0, acc1); + acc2 = __SMLALDX(x3, c0, acc2); + acc3 = __SMLALDX(x2, c0, acc3); + +#ifdef ARM_MATH_BIG_ENDIAN + + /* Read y[srcBLen - 7] */ + c0 = (*pb); + + //c0 = (c0 & 0x0000FFFF)<<16; + c0 = (c0) << 16; + +#else + + /* Read y[srcBLen - 7] */ + c0 = (q15_t) (*pb >> 16); + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[10] */ + x3 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALDX(x1, c0, acc0); + acc1 = __SMLALD(x2, c0, acc1); + acc2 = __SMLALDX(x2, c0, acc2); + acc3 = __SMLALDX(x3, c0, acc3); + } + + + /* Store the results in the accumulators in the destination buffer. */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); + +#else + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + (count * 4u); + py = pSrc2; + pb = (q31_t *) (py - 1); + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4u; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += (q63_t) ((q31_t) * px++ * *py--); + sum += (q63_t) ((q31_t) * px++ * *py--); + sum += (q63_t) ((q31_t) * px++ * *py--); + sum += (q63_t) ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += (q63_t) ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT(sum >> 15, 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT(sum >> 15, 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The blockSize3 variable holds the number of MAC operations performed */ + + blockSize3 = srcBLen - 1u; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + pIn2 = pSrc2 - 1u; + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations greater than 4 */ + /* Second part of this stage computes the MAC operations less than or equal to 4 */ + + /* The first part of the stage starts here */ + j = blockSize3 >> 2u; + + while((j > 0u) && (blockSize3 > 0u)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = blockSize3 >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied + * with y[srcBLen - 1], y[srcBLen - 2] respectively */ + sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied + * with y[srcBLen - 3], y[srcBLen - 4] respectively */ + sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* For the next MAC operations, the pointer py is used without SIMD + * So, py is incremented by 1 */ + py = py + 1u; + + /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = blockSize3 % 0x4u; + + while(k > 0u) + { + /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */ + sum = __SMLALD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the loop counter */ + blockSize3--; + + j--; + } + + /* The second part of the stage starts here */ + /* SIMD is not used for the next MAC operations, + * so pointer py is updated to read only one sample at a time */ + py = py + 1u; + + while(blockSize3 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = blockSize3; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen-1] * y[srcBLen-1] */ + sum = __SMLALD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the loop counter */ + blockSize3--; + } + +#else + +/* Run the below code for Cortex-M0 */ + + q15_t *pIn1 = pSrcA; /* input pointer */ + q15_t *pIn2 = pSrcB; /* coefficient pointer */ + q63_t sum; /* Accumulator */ + uint32_t i, j; /* loop counter */ + + /* Loop to calculate output of convolution for output length number of times */ + for (i = 0; i < (srcALen + srcBLen - 1); i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if(((i - j) < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += (q31_t) pIn1[j] * (pIn2[i - j]); + } + } + + /* Store the output in the destination buffer */ + pDst[i] = (q15_t) __SSAT((sum >> 15u), 16u); + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of Conv group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q31.c new file mode 100644 index 000000000..22a2a9574 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q31.c @@ -0,0 +1,583 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_conv_q31.c +* +* Description: Convolution of Q31 sequences. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Conv + * @{ + */ + +/** + * @brief Convolution of Q31 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * There is no saturation on intermediate additions. + * Thus, if the accumulator overflows it wraps around and distorts the result. + * The input signals should be scaled down to avoid intermediate overflows. + * Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows, + * as maximum of min(srcALen, srcBLen) number of additions are carried internally. + * The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result. + * + * \par + * See arm_conv_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4. + */ + +void arm_conv_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst) +{ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t *pIn1; /* inputA pointer */ + q31_t *pIn2; /* inputB pointer */ + q31_t *pOut = pDst; /* output pointer */ + q31_t *px; /* Intermediate inputA pointer */ + q31_t *py; /* Intermediate inputB pointer */ + q31_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q63_t sum; /* Accumulator */ + q63_t acc0, acc1, acc2, acc3; /* Accumulator */ + q31_t x0, x1, x2, x3, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t j, k, count, blkCnt, blockSize1, blockSize2, blockSize3; /* loop counter */ + + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if(srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = (q31_t *) pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = (q31_t *) pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* The algorithm is implemented in three stages. + The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1u; + blockSize2 = srcALen - (srcBLen - 1u); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1u; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while(blockSize1 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* x[0] * y[srcBLen - 1] */ + sum += (q63_t) * px++ * (*py--); + /* x[1] * y[srcBLen - 2] */ + sum += (q63_t) * px++ * (*py--); + /* x[2] * y[srcBLen - 3] */ + sum += (q63_t) * px++ * (*py--); + /* x[3] * y[srcBLen - 4] */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (sum >> 31); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pIn2 + count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 1u; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if(srcBLen >= 4u) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2u; + + while(blkCnt > 0u) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[srcBLen - 1] sample */ + c0 = *(py--); + + /* Read x[3] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[0] * y[srcBLen - 1] */ + acc0 += ((q63_t) x0 * c0); + /* acc1 += x[1] * y[srcBLen - 1] */ + acc1 += ((q63_t) x1 * c0); + /* acc2 += x[2] * y[srcBLen - 1] */ + acc2 += ((q63_t) x2 * c0); + /* acc3 += x[3] * y[srcBLen - 1] */ + acc3 += ((q63_t) x3 * c0); + + /* Read y[srcBLen - 2] sample */ + c0 = *(py--); + + /* Read x[4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[1] * y[srcBLen - 2] */ + acc0 += ((q63_t) x1 * c0); + /* acc1 += x[2] * y[srcBLen - 2] */ + acc1 += ((q63_t) x2 * c0); + /* acc2 += x[3] * y[srcBLen - 2] */ + acc2 += ((q63_t) x3 * c0); + /* acc3 += x[4] * y[srcBLen - 2] */ + acc3 += ((q63_t) x0 * c0); + + /* Read y[srcBLen - 3] sample */ + c0 = *(py--); + + /* Read x[5] sample */ + x1 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[2] * y[srcBLen - 3] */ + acc0 += ((q63_t) x2 * c0); + /* acc1 += x[3] * y[srcBLen - 2] */ + acc1 += ((q63_t) x3 * c0); + /* acc2 += x[4] * y[srcBLen - 2] */ + acc2 += ((q63_t) x0 * c0); + /* acc3 += x[5] * y[srcBLen - 2] */ + acc3 += ((q63_t) x1 * c0); + + /* Read y[srcBLen - 4] sample */ + c0 = *(py--); + + /* Read x[6] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[3] * y[srcBLen - 4] */ + acc0 += ((q63_t) x3 * c0); + /* acc1 += x[4] * y[srcBLen - 4] */ + acc1 += ((q63_t) x0 * c0); + /* acc2 += x[5] * y[srcBLen - 4] */ + acc2 += ((q63_t) x1 * c0); + /* acc3 += x[6] * y[srcBLen - 4] */ + acc3 += ((q63_t) x2 * c0); + + } while(--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Read y[srcBLen - 5] sample */ + c0 = *(py--); + + /* Read x[7] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[srcBLen - 5] */ + acc0 += ((q63_t) x0 * c0); + /* acc1 += x[5] * y[srcBLen - 5] */ + acc1 += ((q63_t) x1 * c0); + /* acc2 += x[6] * y[srcBLen - 5] */ + acc2 += ((q63_t) x2 * c0); + /* acc3 += x[7] * y[srcBLen - 5] */ + acc3 += ((q63_t) x3 * c0); + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + /* Store the results in the accumulators in the destination buffer. */ + *pOut++ = (q31_t) (acc0 >> 31); + *pOut++ = (q31_t) (acc1 >> 31); + *pOut++ = (q31_t) (acc2 >> 31); + *pOut++ = (q31_t) (acc3 >> 31); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + (count * 4u); + py = pSrc2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4u; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += (q63_t) * px++ * (*py--); + sum += (q63_t) * px++ * (*py--); + sum += (q63_t) * px++ * (*py--); + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (sum >> 31); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (sum >> 31); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The blockSize3 variable holds the number of MAC operations performed */ + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while(blockSize3 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = blockSize3 >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ + sum += (q63_t) * px++ * (*py--); + /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ + sum += (q63_t) * px++ * (*py--); + /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ + sum += (q63_t) * px++ * (*py--); + /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = blockSize3 % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (sum >> 31); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the loop counter */ + blockSize3--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + q31_t *pIn1 = pSrcA; /* input pointer */ + q31_t *pIn2 = pSrcB; /* coefficient pointer */ + q63_t sum; /* Accumulator */ + uint32_t i, j; /* loop counter */ + + /* Loop to calculate output of convolution for output length number of times */ + for (i = 0; i < (srcALen + srcBLen - 1); i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if(((i - j) < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += ((q63_t) pIn1[j] * (pIn2[i - j])); + } + } + + /* Store the output in the destination buffer */ + pDst[i] = (q31_t) (sum >> 31u); + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of Conv group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q7.c new file mode 100644 index 000000000..6f844dd68 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q7.c @@ -0,0 +1,680 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_conv_q7.c +* +* Description: Convolution of Q7 sequences. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Conv + * @{ + */ + +/** + * @brief Convolution of Q7 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 32-bit internal accumulator. + * Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result. + * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. + * This approach provides 17 guard bits and there is no risk of overflow as long as max(srcALen, srcBLen)<131072. + * The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and then saturated to 1.7 format. + */ + +void arm_conv_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst) +{ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q7_t *pIn1; /* inputA pointer */ + q7_t *pIn2; /* inputB pointer */ + q7_t *pOut = pDst; /* output pointer */ + q7_t *px; /* Intermediate inputA pointer */ + q7_t *py; /* Intermediate inputB pointer */ + q7_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q7_t x0, x1, x2, x3, c0, c1; /* Temporary variables to hold state and coefficient values */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + q31_t input1, input2; /* Temporary input variables */ + q15_t in1, in2; /* Temporary input variables */ + uint32_t j, k, count, blkCnt, blockSize1, blockSize2, blockSize3; /* loop counter */ + + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if(srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* The algorithm is implemented in three stages. + The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1u; + blockSize2 = (srcALen - srcBLen) + 1u; + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1u; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while(blockSize1 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* x[0] , x[1] */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* y[srcBLen - 1] , y[srcBLen - 2] */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* x[0] * y[srcBLen - 1] */ + /* x[1] * y[srcBLen - 2] */ + sum = __SMLAD(input1, input2, sum); + + /* x[2] , x[3] */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* y[srcBLen - 3] , y[srcBLen - 4] */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* x[2] * y[srcBLen - 3] */ + /* x[3] * y[srcBLen - 4] */ + sum = __SMLAD(input1, input2, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += ((q15_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(sum >> 7u, 8)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pIn2 + count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 1u; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if(srcBLen >= 4u) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2u; + + while(blkCnt > 0u) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[srcBLen - 1] sample */ + c0 = *(py--); + /* Read y[srcBLen - 2] sample */ + c1 = *(py--); + + /* Read x[3] sample */ + x3 = *(px++); + + /* x[0] and x[1] are packed */ + in1 = (q15_t) x0; + in2 = (q15_t) x1; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* y[srcBLen - 1] and y[srcBLen - 2] are packed */ + in1 = (q15_t) c0; + in2 = (q15_t) c1; + + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ + acc0 = __SMLAD(input1, input2, acc0); + + /* x[1] and x[2] are packed */ + in1 = (q15_t) x1; + in2 = (q15_t) x2; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ + acc1 = __SMLAD(input1, input2, acc1); + + /* x[2] and x[3] are packed */ + in1 = (q15_t) x2; + in2 = (q15_t) x3; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ + acc2 = __SMLAD(input1, input2, acc2); + + /* Read x[4] sample */ + x0 = *(px++); + + /* x[3] and x[4] are packed */ + in1 = (q15_t) x3; + in2 = (q15_t) x0; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ + acc3 = __SMLAD(input1, input2, acc3); + + /* Read y[srcBLen - 3] sample */ + c0 = *(py--); + /* Read y[srcBLen - 4] sample */ + c1 = *(py--); + + /* Read x[5] sample */ + x1 = *(px++); + + /* x[2] and x[3] are packed */ + in1 = (q15_t) x2; + in2 = (q15_t) x3; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* y[srcBLen - 3] and y[srcBLen - 4] are packed */ + in1 = (q15_t) c0; + in2 = (q15_t) c1; + + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ + acc0 = __SMLAD(input1, input2, acc0); + + /* x[3] and x[4] are packed */ + in1 = (q15_t) x3; + in2 = (q15_t) x0; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ + acc1 = __SMLAD(input1, input2, acc1); + + /* x[4] and x[5] are packed */ + in1 = (q15_t) x0; + in2 = (q15_t) x1; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ + acc2 = __SMLAD(input1, input2, acc2); + + /* Read x[6] sample */ + x2 = *(px++); + + /* x[5] and x[6] are packed */ + in1 = (q15_t) x1; + in2 = (q15_t) x2; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ + acc3 = __SMLAD(input1, input2, acc3); + + } while(--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Read y[srcBLen - 5] sample */ + c0 = *(py--); + + /* Read x[7] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[srcBLen - 5] */ + acc0 += ((q15_t) x0 * c0); + /* acc1 += x[5] * y[srcBLen - 5] */ + acc1 += ((q15_t) x1 * c0); + /* acc2 += x[6] * y[srcBLen - 5] */ + acc2 += ((q15_t) x2 * c0); + /* acc3 += x[7] * y[srcBLen - 5] */ + acc3 += ((q15_t) x3 * c0); + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(acc0 >> 7u, 8)); + *pOut++ = (q7_t) (__SSAT(acc1 >> 7u, 8)); + *pOut++ = (q7_t) (__SSAT(acc2 >> 7u, 8)); + *pOut++ = (q7_t) (__SSAT(acc3 >> 7u, 8)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + (count * 4u); + py = pSrc2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4u; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + + /* Reading two inputs of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* Reading two inputs of SrcB buffer and packing */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* Perform the multiply-accumulates */ + sum = __SMLAD(input1, input2, sum); + + /* Reading two inputs of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* Reading two inputs of SrcB buffer and packing */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* Perform the multiply-accumulates */ + sum = __SMLAD(input1, input2, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += ((q15_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(sum >> 7u, 8)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += ((q15_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(sum >> 7u, 8)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The blockSize3 variable holds the number of MAC operations performed */ + + /* Working pointer of inputA */ + pSrc1 = pIn1 + (srcALen - (srcBLen - 1u)); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1u); + py = pSrc2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while(blockSize3 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = blockSize3 >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Reading two inputs, x[srcALen - srcBLen + 1] and x[srcALen - srcBLen + 2] of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* Reading two inputs, y[srcBLen - 1] and y[srcBLen - 2] of SrcB buffer and packing */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ + /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ + sum = __SMLAD(input1, input2, sum); + + /* Reading two inputs, x[srcALen - srcBLen + 3] and x[srcALen - srcBLen + 4] of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* Reading two inputs, y[srcBLen - 3] and y[srcBLen - 4] of SrcB buffer and packing */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16u); + + /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ + /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ + sum = __SMLAD(input1, input2, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = blockSize3 % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += ((q15_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(sum >> 7u, 8)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the loop counter */ + blockSize3--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + q7_t *pIn1 = pSrcA; /* input pointer */ + q7_t *pIn2 = pSrcB; /* coefficient pointer */ + q31_t sum; /* Accumulator */ + uint32_t i, j; /* loop counter */ + + /* Loop to calculate output of convolution for output length number of times */ + for (i = 0; i < (srcALen + srcBLen - 1); i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if(((i - j) < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += (q15_t) pIn1[j] * (pIn2[i - j]); + } + } + + /* Store the output in the destination buffer */ + pDst[i] = (q7_t) __SSAT((sum >> 7u), 8u); + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of Conv group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_f32.c new file mode 100644 index 000000000..bfbe0d34b --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_f32.c @@ -0,0 +1,718 @@ +/* ---------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_correlate_f32.c +* +* Description: Correlation of floating-point sequences. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* +* -------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup Corr Correlation + * + * Correlation is a mathematical operation that is similar to convolution. + * As with convolution, correlation uses two signals to produce a third signal. + * The underlying algorithms in correlation and convolution are identical except that one of the inputs is flipped in convolution. + * Correlation is commonly used to measure the similarity between two signals. + * It has applications in pattern recognition, cryptanalysis, and searching. + * The CMSIS library provides correlation functions for Q7, Q15, Q31 and floating-point data types. + * Fast versions of the Q15 and Q31 functions are also provided. + * + * \par Algorithm + * Let a[n] and b[n] be sequences of length srcALen and srcBLen samples respectively. + * The convolution of the two signals is denoted by + *
   
+ *                   c[n] = a[n] * b[n]   
+ * 
+ * In correlation, one of the signals is flipped in time + *
   
+ *                   c[n] = a[n] * b[-n]   
+ * 
+ * + * \par + * and this is mathematically defined as + * \image html CorrelateEquation.gif + * \par + * The pSrcA points to the first input vector of length srcALen and pSrcB points to the second input vector of length srcBLen. + * The result c[n] is of length 2 * max(srcALen, srcBLen) - 1 and is defined over the interval n=0, 1, 2, ..., (2 * max(srcALen, srcBLen) - 2). + * The output result is written to pDst and the calling function must allocate 2 * max(srcALen, srcBLen) - 1 words for the result. + * + * Note + * \par + * The pDst should be initialized to all zeros before being used. + * + * Fixed-Point Behavior + * \par + * Correlation requires summing up a large number of intermediate products. + * As such, the Q7, Q15, and Q31 functions run a risk of overflow and saturation. + * Refer to the function specific documentation below for further details of the particular algorithm used. + */ + +/** + * @addtogroup Corr + * @{ + */ +/** + * @brief Correlation of floating-point sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. + * @return none. + */ + +void arm_correlate_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst) +{ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float32_t *pIn1; /* inputA pointer */ + float32_t *pIn2; /* inputB pointer */ + float32_t *pOut = pDst; /* output pointer */ + float32_t *px; /* Intermediate inputA pointer */ + float32_t *py; /* Intermediate inputB pointer */ + float32_t *pSrc1; /* Intermediate pointers */ + float32_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ + float32_t x0, x1, x2, x3, c0; /* temporary variables for holding input and coefficient values */ + uint32_t j, k = 0u, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counters */ + int32_t inc = 1; /* Destination address modifier */ + + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and the destination pointer modifier, inc is set to -1 */ + /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ + /* But to improve the performance, + * we include zeroes in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, + * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ + /* If srcALen < srcBLen, + * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ + if(srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + + /* Number of output samples is calculated */ + outBlockSize = (2u * srcALen) - 1u; + + /* When srcALen > srcBLen, zero padding has to be done to srcB + * to make their lengths equal. + * Instead, (outBlockSize - (srcALen + srcBLen - 1)) + * number of output samples are made zero */ + j = outBlockSize - (srcALen + (srcBLen - 1u)); + + /* Updating the pointer position to non zero value */ + pOut += j; + + //while(j > 0u) + //{ + // /* Zero is stored in the destination buffer */ + // *pOut++ = 0.0f; + + // /* Decrement the loop counter */ + // j--; + //} + + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + + /* CORR(x, y) = Reverse order(CORR(y, x)) */ + /* Hence set the destination pointer to point to the last output sample */ + pOut = pDst + ((srcALen + srcBLen) - 2u); + + /* Destination address modifier is set to -1 */ + inc = -1; + + } + + /* The function is internally + * divided into three parts according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first part of the + * algorithm, the multiplications increase by one for every iteration. + * In the second part of the algorithm, srcBLen number of multiplications are done. + * In the third part of the algorithm, the multiplications decrease by one + * for every iteration.*/ + /* The algorithm is implemented in three stages. + * The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1u; + blockSize2 = srcALen - (srcBLen - 1u); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[srcBlen - 1] + * sum = x[0] * y[srcBlen-2] + x[1] * y[srcBlen - 1] + * .... + * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1u; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc1 = pIn2 + (srcBLen - 1u); + py = pSrc1; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while(blockSize1 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* x[0] * y[srcBLen - 4] */ + sum += *px++ * *py++; + /* x[1] * y[srcBLen - 3] */ + sum += *px++ * *py++; + /* x[2] * y[srcBLen - 2] */ + sum += *px++ * *py++; + /* x[3] * y[srcBLen - 1] */ + sum += *px++ * *py++; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + /* x[0] * y[srcBLen - 1] */ + sum += *px++ * *py++; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = sum; + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pSrc1 - count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] + * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] + * .... + * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 1u; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4, to loop unroll the srcBLen loop */ + if(srcBLen >= 4u) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2u; + + while(blkCnt > 0u) + { + /* Set all accumulators to zero */ + acc0 = 0.0f; + acc1 = 0.0f; + acc2 = 0.0f; + acc3 = 0.0f; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[0] sample */ + c0 = *(py++); + + /* Read x[3] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[0] * y[0] */ + acc0 += x0 * c0; + /* acc1 += x[1] * y[0] */ + acc1 += x1 * c0; + /* acc2 += x[2] * y[0] */ + acc2 += x2 * c0; + /* acc3 += x[3] * y[0] */ + acc3 += x3 * c0; + + /* Read y[1] sample */ + c0 = *(py++); + + /* Read x[4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[1] * y[1] */ + acc0 += x1 * c0; + /* acc1 += x[2] * y[1] */ + acc1 += x2 * c0; + /* acc2 += x[3] * y[1] */ + acc2 += x3 * c0; + /* acc3 += x[4] * y[1] */ + acc3 += x0 * c0; + + /* Read y[2] sample */ + c0 = *(py++); + + /* Read x[5] sample */ + x1 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[2] * y[2] */ + acc0 += x2 * c0; + /* acc1 += x[3] * y[2] */ + acc1 += x3 * c0; + /* acc2 += x[4] * y[2] */ + acc2 += x0 * c0; + /* acc3 += x[5] * y[2] */ + acc3 += x1 * c0; + + /* Read y[3] sample */ + c0 = *(py++); + + /* Read x[6] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[3] * y[3] */ + acc0 += x3 * c0; + /* acc1 += x[4] * y[3] */ + acc1 += x0 * c0; + /* acc2 += x[5] * y[3] */ + acc2 += x1 * c0; + /* acc3 += x[6] * y[3] */ + acc3 += x2 * c0; + + + } while(--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Read y[4] sample */ + c0 = *(py++); + + /* Read x[7] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[4] */ + acc0 += x0 * c0; + /* acc1 += x[5] * y[4] */ + acc1 += x1 * c0; + /* acc2 += x[6] * y[4] */ + acc2 += x2 * c0; + /* acc3 += x[7] * y[4] */ + acc3 += x3 * c0; + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = acc0; + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + *pOut = acc1; + pOut += inc; + + *pOut = acc2; + pOut += inc; + + *pOut = acc3; + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + (count * 4u); + py = pIn2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4u; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += *px++ * *py++; + sum += *px++ * *py++; + sum += *px++ * *py++; + sum += *px++ * *py++; + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += *px++ * *py++; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = sum; + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Loop over srcBLen */ + k = srcBLen; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += *px++ * *py++; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = sum; + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * .... + * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] + * sum += x[srcALen-1] * y[0] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1u; + + /* Working pointer of inputA */ + pSrc1 = pIn1 + (srcALen - (srcBLen - 1u)); + px = pSrc1; + + /* Working pointer of inputB */ + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while(blockSize3 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen - srcBLen + 4] * y[3] */ + sum += *px++ * *py++; + /* sum += x[srcALen - srcBLen + 3] * y[2] */ + sum += *px++ * *py++; + /* sum += x[srcALen - srcBLen + 2] * y[1] */ + sum += *px++ * *py++; + /* sum += x[srcALen - srcBLen + 1] * y[0] */ + sum += *px++ * *py++; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += *px++ * *py++; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = sum; + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + float32_t *pIn1 = pSrcA; /* inputA pointer */ + float32_t *pIn2 = pSrcB + (srcBLen - 1u); /* inputB pointer */ + float32_t sum; /* Accumulator */ + uint32_t i = 0u, j; /* loop counters */ + uint32_t inv = 0u; /* Reverse order flag */ + uint32_t tot = 0u; /* Length */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and a varaible, inv is set to 1 */ + /* If lengths are not equal then zero pad has to be done to make the two + * inputs of same length. But to improve the performance, we include zeroes + * in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the + * starting of the output buffer */ + /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the + * ending of the output buffer */ + /* Once the zero padding is done the remaining of the output is calcualted + * using convolution but with the shorter signal time shifted. */ + + /* Calculate the length of the remaining sequence */ + tot = ((srcALen + srcBLen) - 2u); + + if(srcALen > srcBLen) + { + /* Calculating the number of zeros to be padded to the output */ + j = srcALen - srcBLen; + + /* Initialise the pointer after zero padding */ + pDst += j; + } + + else if(srcALen < srcBLen) + { + /* Initialization to inputB pointer */ + pIn1 = pSrcB; + + /* Initialization to the end of inputA pointer */ + pIn2 = pSrcA + (srcALen - 1u); + + /* Initialisation of the pointer after zero padding */ + pDst = pDst + tot; + + /* Swapping the lengths */ + j = srcALen; + srcALen = srcBLen; + srcBLen = j; + + /* Setting the reverse flag */ + inv = 1; + + } + + /* Loop to calculate convolution for output length number of times */ + for (i = 0u; i <= tot; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0.0f; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0u; j <= i; j++) + { + /* Check the array limitations */ + if((((i - j) < srcBLen) && (j < srcALen))) + { + /* z[i] += x[i-j] * y[j] */ + sum += pIn1[j] * pIn2[-((int32_t) i - j)]; + } + } + /* Store the output in the destination buffer */ + if(inv == 1) + *pDst-- = sum; + else + *pDst++ = sum; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of Corr group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q15.c new file mode 100644 index 000000000..f93d85a5b --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q15.c @@ -0,0 +1,622 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_correlate_fast_q15.c +* +* Description: Fast Q15 Correlation. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Corr + * @{ + */ + +/** + * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. + * @return none. + * + * Scaling and Overflow Behavior: + * + * \par + * This fast version uses a 32-bit accumulator with 2.30 format. + * The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * There is no saturation on intermediate additions. + * Thus, if the accumulator overflows it wraps around and distorts the result. + * The input signals should be scaled down to avoid intermediate overflows. + * Scale down one of the inputs by 1/min(srcALen, srcBLen) to avoid overflow since a + * maximum of min(srcALen, srcBLen) number of additions is carried internally. + * The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result. + * + * \par + * See arm_correlate_q15() for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion. + */ + +void arm_correlate_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst) +{ + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *pOut = pDst; /* output pointer */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + q15_t *pSrc1; /* Intermediate pointers */ + q31_t x0, x1, x2, x3, c0; /* temporary variables for holding input and coefficient values */ + uint32_t j, k = 0u, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counter */ + int32_t inc = 1; /* Destination address modifier */ + q31_t *pb; /* 32 bit pointer for inputB buffer */ + + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and the destination pointer modifier, inc is set to -1 */ + /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ + /* But to improve the performance, + * we include zeroes in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, + * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ + /* If srcALen < srcBLen, + * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ + if(srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcA); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcB); + + /* Number of output samples is calculated */ + outBlockSize = (2u * srcALen) - 1u; + + /* When srcALen > srcBLen, zero padding is done to srcB + * to make their lengths equal. + * Instead, (outBlockSize - (srcALen + srcBLen - 1)) + * number of output samples are made zero */ + j = outBlockSize - (srcALen + (srcBLen - 1u)); + + /* Updating the pointer position to non zero value */ + pOut += j; + + } + else + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcB); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcA); + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + + /* CORR(x, y) = Reverse order(CORR(y, x)) */ + /* Hence set the destination pointer to point to the last output sample */ + pOut = pDst + ((srcALen + srcBLen) - 2u); + + /* Destination address modifier is set to -1 */ + inc = -1; + + } + + /* The function is internally + * divided into three parts according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first part of the + * algorithm, the multiplications increase by one for every iteration. + * In the second part of the algorithm, srcBLen number of multiplications are done. + * In the third part of the algorithm, the multiplications decrease by one + * for every iteration.*/ + /* The algorithm is implemented in three stages. + * The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1u; + blockSize2 = srcALen - (srcBLen - 1u); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[srcBlen - 1] + * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1] + * .... + * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1u; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc1 = pIn2 + (srcBLen - 1u); + py = pSrc1; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first loop starts here */ + while(blockSize1 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* x[0] * y[srcBLen - 4] , x[1] * y[srcBLen - 3] */ + sum = __SMLAD(*__SIMD32(px)++, *__SIMD32(py)++, sum); + /* x[3] * y[srcBLen - 1] , x[2] * y[srcBLen - 2] */ + sum = __SMLAD(*__SIMD32(px)++, *__SIMD32(py)++, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* x[0] * y[srcBLen - 1] */ + sum = __SMLAD(*px++, *py++, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (sum >> 15); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pSrc1 - count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] + * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] + * .... + * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + /* Initialize inputB pointer of type q31 */ + pb = (q31_t *) (py); + + /* count is index by which the pointer pIn1 to be incremented */ + count = 0u; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4, to loop unroll the srcBLen loop */ + if(srcBLen >= 4u) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2u; + + while(blkCnt > 0u) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1] samples */ + x0 = *(q31_t *) (px++); + /* read x[1], x[2] samples */ + x1 = *(q31_t *) (px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read the first two inputB samples using SIMD: + * y[0] and y[1] */ + c0 = *(pb++); + + /* acc0 += x[0] * y[0] + x[1] * y[1] */ + acc0 = __SMLAD(x0, c0, acc0); + + /* acc1 += x[1] * y[0] + x[2] * y[1] */ + acc1 = __SMLAD(x1, c0, acc1); + + /* Read x[2], x[3] */ + x2 = *(q31_t *) (px++); + + /* Read x[3], x[4] */ + x3 = *(q31_t *) (px++); + + /* acc2 += x[2] * y[0] + x[3] * y[1] */ + acc2 = __SMLAD(x2, c0, acc2); + + /* acc3 += x[3] * y[0] + x[4] * y[1] */ + acc3 = __SMLAD(x3, c0, acc3); + + /* Read y[2] and y[3] */ + c0 = *(pb++); + + /* acc0 += x[2] * y[2] + x[3] * y[3] */ + acc0 = __SMLAD(x2, c0, acc0); + + /* acc1 += x[3] * y[2] + x[4] * y[3] */ + acc1 = __SMLAD(x3, c0, acc1); + + /* Read x[4], x[5] */ + x0 = *(q31_t *) (px++); + + /* Read x[5], x[6] */ + x1 = *(q31_t *) (px++); + + /* acc2 += x[4] * y[2] + x[5] * y[3] */ + acc2 = __SMLAD(x0, c0, acc2); + + /* acc3 += x[5] * y[2] + x[6] * y[3] */ + acc3 = __SMLAD(x1, c0, acc3); + + } while(--k); + + /* For the next MAC operations, SIMD is not used + * So, the 16 bit pointer if inputB, py is updated */ + py = (q15_t *) (pb); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + if(k == 1u) + { + /* Read y[4] */ + c0 = *py; +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16u; + +#else + + c0 = c0 & 0x0000FFFF; + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[7] */ + x3 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLAD(x0, c0, acc0); + acc1 = __SMLAD(x1, c0, acc1); + acc2 = __SMLADX(x1, c0, acc2); + acc3 = __SMLADX(x3, c0, acc3); + } + + if(k == 2u) + { + /* Read y[4], y[5] */ + c0 = *(pb); + + /* Read x[7], x[8] */ + x3 = *(q31_t *) px++; + + /* Read x[9] */ + x2 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLAD(x0, c0, acc0); + acc1 = __SMLAD(x1, c0, acc1); + acc2 = __SMLAD(x3, c0, acc2); + acc3 = __SMLAD(x2, c0, acc3); + } + + if(k == 3u) + { + /* Read y[4], y[5] */ + c0 = *pb++; + + /* Read x[7], x[8] */ + x3 = *(q31_t *) px++; + + /* Read x[9] */ + x2 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLAD(x0, c0, acc0); + acc1 = __SMLAD(x1, c0, acc1); + acc2 = __SMLAD(x3, c0, acc2); + acc3 = __SMLAD(x2, c0, acc3); + + /* Read y[6] */ +#ifdef ARM_MATH_BIG_ENDIAN + c0 = (*pb); + c0 = c0 & 0xFFFF0000; + +#else + c0 = (q15_t) (*pb); + c0 = c0 & 0x0000FFFF; + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[10] */ + x3 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x1, c0, acc0); + acc1 = __SMLAD(x2, c0, acc1); + acc2 = __SMLADX(x2, c0, acc2); + acc3 = __SMLADX(x3, c0, acc3); + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (acc0 >> 15); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + *pOut = (q15_t) (acc1 >> 15); + pOut += inc; + + *pOut = (q15_t) (acc2 >> 15); + pOut += inc; + + *pOut = (q15_t) (acc3 >> 15); + pOut += inc; + + /* Increment the pointer pIn1 index, count by 1 */ + count += 4u; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + pb = (q31_t *) (py); + + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4u; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py++); + sum += ((q31_t) * px++ * *py++); + sum += ((q31_t) * px++ * *py++); + sum += ((q31_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (sum >> 15); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over srcBLen */ + k = srcBLen; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += ((q31_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (sum >> 15); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * .... + * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] + * sum += x[srcALen-1] * y[0] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1u; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u); + px = pSrc1; + + /* Working pointer of inputB */ + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while(blockSize3 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen - srcBLen + 4] * y[3] , sum += x[srcALen - srcBLen + 3] * y[2] */ + sum = __SMLAD(*__SIMD32(px)++, *__SIMD32(py)++, sum); + /* sum += x[srcALen - srcBLen + 2] * y[1] , sum += x[srcALen - srcBLen + 1] * y[0] */ + sum = __SMLAD(*__SIMD32(px)++, *__SIMD32(py)++, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum = __SMLAD(*px++, *py++, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (sum >> 15); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + } + +} + +/** + * @} end of Corr group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q31.c new file mode 100644 index 000000000..62d35dd25 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q31.c @@ -0,0 +1,599 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_correlate_fast_q31.c +* +* Description: Fast Q31 Correlation. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Corr + * @{ + */ + +/** + * @brief Correlation of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * This function is optimized for speed at the expense of fixed-point precision and overflow protection. + * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. + * These intermediate results are accumulated in a 32-bit register in 2.30 format. + * Finally, the accumulator is saturated and converted to a 1.31 result. + * + * \par + * The fast version has the same overflow behavior as the standard version but provides less precision since it discards the low 32 bits of each multiplication result. + * In order to avoid overflows completely the input signals must be scaled down. + * The input signals should be scaled down to avoid intermediate overflows. + * Scale down one of the inputs by 1/min(srcALen, srcBLen)to avoid overflows since a + * maximum of min(srcALen, srcBLen) number of additions is carried internally. + * + * \par + * See arm_correlate_q31() for a slower implementation of this function which uses 64-bit accumulation to provide higher precision. + */ + +void arm_correlate_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst) +{ + q31_t *pIn1; /* inputA pointer */ + q31_t *pIn2; /* inputB pointer */ + q31_t *pOut = pDst; /* output pointer */ + q31_t *px; /* Intermediate inputA pointer */ + q31_t *py; /* Intermediate inputB pointer */ + q31_t *pSrc1; /* Intermediate pointers */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ + q31_t x0, x1, x2, x3, c0; /* temporary variables for holding input and coefficient values */ + uint32_t j, k = 0u, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counter */ + int32_t inc = 1; /* Destination address modifier */ + + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if(srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcA); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcB); + + /* Number of output samples is calculated */ + outBlockSize = (2u * srcALen) - 1u; + + /* When srcALen > srcBLen, zero padding is done to srcB + * to make their lengths equal. + * Instead, (outBlockSize - (srcALen + srcBLen - 1)) + * number of output samples are made zero */ + j = outBlockSize - (srcALen + (srcBLen - 1u)); + + /* Updating the pointer position to non zero value */ + pOut += j; + + } + else + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcB); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcA); + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + + /* CORR(x, y) = Reverse order(CORR(y, x)) */ + /* Hence set the destination pointer to point to the last output sample */ + pOut = pDst + ((srcALen + srcBLen) - 2u); + + /* Destination address modifier is set to -1 */ + inc = -1; + + } + + /* The function is internally + * divided into three parts according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first part of the + * algorithm, the multiplications increase by one for every iteration. + * In the second part of the algorithm, srcBLen number of multiplications are done. + * In the third part of the algorithm, the multiplications decrease by one + * for every iteration.*/ + /* The algorithm is implemented in three stages. + * The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1u; + blockSize2 = srcALen - (srcBLen - 1u); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[srcBlen - 1] + * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1] + * .... + * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1u; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc1 = pIn2 + (srcBLen - 1u); + py = pSrc1; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while(blockSize1 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* x[0] * y[srcBLen - 4] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + /* x[1] * y[srcBLen - 3] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + /* x[2] * y[srcBLen - 2] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + /* x[3] * y[srcBLen - 1] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* x[0] * y[srcBLen - 1] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = sum << 1; + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pSrc1 - count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] + * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] + * .... + * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 1u; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if(srcBLen >= 4u) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2u; + + while(blkCnt > 0u) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[0] sample */ + c0 = *(py++); + + /* Read x[3] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[0] * y[0] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc1 += x[1] * y[0] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc2 += x[2] * y[0] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc3 += x[3] * y[0] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32); + + /* Read y[1] sample */ + c0 = *(py++); + + /* Read x[4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[1] * y[1] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc1 += x[2] * y[1] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc2 += x[3] * y[1] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x3 * c0)) >> 32); + /* acc3 += x[4] * y[1] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x0 * c0)) >> 32); + + /* Read y[2] sample */ + c0 = *(py++); + + /* Read x[5] sample */ + x1 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[2] * y[2] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc1 += x[3] * y[2] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x3 * c0)) >> 32); + /* acc2 += x[4] * y[2] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc3 += x[5] * y[2] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x1 * c0)) >> 32); + + /* Read y[3] sample */ + c0 = *(py++); + + /* Read x[6] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[3] * y[3] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x3 * c0)) >> 32); + /* acc1 += x[4] * y[3] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc2 += x[5] * y[3] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc3 += x[6] * y[3] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x2 * c0)) >> 32); + + + } while(--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Read y[4] sample */ + c0 = *(py++); + + /* Read x[7] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[4] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc1 += x[5] * y[4] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc2 += x[6] * y[4] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc3 += x[7] * y[4] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32); + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q31_t) (acc0 << 1); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + *pOut = (q31_t) (acc1 << 1); + pOut += inc; + + *pOut = (q31_t) (acc2 << 1); + pOut += inc; + + *pOut = (q31_t) (acc3 << 1); + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + (count * 4u); + py = pIn2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4u; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = sum << 1; + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over srcBLen */ + k = srcBLen; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = sum << 1; + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * .... + * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] + * sum += x[srcALen-1] * y[0] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1u; + + /* Working pointer of inputA */ + pSrc1 = ((pIn1 + srcALen) - srcBLen) + 1u; + px = pSrc1; + + /* Working pointer of inputB */ + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while(blockSize3 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen - srcBLen + 4] * y[3] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + /* sum += x[srcALen - srcBLen + 3] * y[2] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + /* sum += x[srcALen - srcBLen + 2] * y[1] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + /* sum += x[srcALen - srcBLen + 1] * y[0] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = sum << 1; + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + } + +} + +/** + * @} end of Corr group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q15.c new file mode 100644 index 000000000..424cc3185 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q15.c @@ -0,0 +1,714 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_correlate_q15.c +* +* Description: Correlation of Q15 sequences. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Corr + * @{ + */ + +/** + * @brief Correlation of Q15 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both inputs are in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * This approach provides 33 guard bits and there is no risk of overflow. + * The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format. + * + * \par + * Refer to arm_correlate_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. + */ + +void arm_correlate_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst) +{ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *pOut = pDst; /* output pointer */ + q63_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + q15_t *pSrc1; /* Intermediate pointers */ + q31_t x0, x1, x2, x3, c0; /* temporary variables for holding input and coefficient values */ + uint32_t j, k = 0u, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counter */ + int32_t inc = 1; /* Destination address modifier */ + q31_t *pb; /* 32 bit pointer for inputB buffer */ + + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and the destination pointer modifier, inc is set to -1 */ + /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ + /* But to improve the performance, + * we include zeroes in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, + * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ + /* If srcALen < srcBLen, + * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ + if(srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcA); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcB); + + /* Number of output samples is calculated */ + outBlockSize = (2u * srcALen) - 1u; + + /* When srcALen > srcBLen, zero padding is done to srcB + * to make their lengths equal. + * Instead, (outBlockSize - (srcALen + srcBLen - 1)) + * number of output samples are made zero */ + j = outBlockSize - (srcALen + (srcBLen - 1u)); + + /* Updating the pointer position to non zero value */ + pOut += j; + + } + else + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcB); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcA); + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + + /* CORR(x, y) = Reverse order(CORR(y, x)) */ + /* Hence set the destination pointer to point to the last output sample */ + pOut = pDst + ((srcALen + srcBLen) - 2u); + + /* Destination address modifier is set to -1 */ + inc = -1; + + } + + /* The function is internally + * divided into three parts according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first part of the + * algorithm, the multiplications increase by one for every iteration. + * In the second part of the algorithm, srcBLen number of multiplications are done. + * In the third part of the algorithm, the multiplications decrease by one + * for every iteration.*/ + /* The algorithm is implemented in three stages. + * The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1u; + blockSize2 = srcALen - (srcBLen - 1u); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[srcBlen - 1] + * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1] + * .... + * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1u; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc1 = pIn2 + (srcBLen - 1u); + py = pSrc1; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first loop starts here */ + while(blockSize1 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* x[0] * y[srcBLen - 4] , x[1] * y[srcBLen - 3] */ + sum = __SMLALD(*__SIMD32(px)++, *__SIMD32(py)++, sum); + /* x[3] * y[srcBLen - 1] , x[2] * y[srcBLen - 2] */ + sum = __SMLALD(*__SIMD32(px)++, *__SIMD32(py)++, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* x[0] * y[srcBLen - 1] */ + sum = __SMLALD(*px++, *py++, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (__SSAT((sum >> 15), 16)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pSrc1 - count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] + * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] + * .... + * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + /* Initialize inputB pointer of type q31 */ + pb = (q31_t *) (py); + + /* count is index by which the pointer pIn1 to be incremented */ + count = 0u; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4, to loop unroll the srcBLen loop */ + if(srcBLen >= 4u) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2u; + + while(blkCnt > 0u) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1] samples */ + x0 = *(q31_t *) (px++); + /* read x[1], x[2] samples */ + x1 = *(q31_t *) (px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read the first two inputB samples using SIMD: + * y[0] and y[1] */ + c0 = *(pb++); + + /* acc0 += x[0] * y[0] + x[1] * y[1] */ + acc0 = __SMLALD(x0, c0, acc0); + + /* acc1 += x[1] * y[0] + x[2] * y[1] */ + acc1 = __SMLALD(x1, c0, acc1); + + /* Read x[2], x[3] */ + x2 = *(q31_t *) (px++); + + /* Read x[3], x[4] */ + x3 = *(q31_t *) (px++); + + /* acc2 += x[2] * y[0] + x[3] * y[1] */ + acc2 = __SMLALD(x2, c0, acc2); + + /* acc3 += x[3] * y[0] + x[4] * y[1] */ + acc3 = __SMLALD(x3, c0, acc3); + + /* Read y[2] and y[3] */ + c0 = *(pb++); + + /* acc0 += x[2] * y[2] + x[3] * y[3] */ + acc0 = __SMLALD(x2, c0, acc0); + + /* acc1 += x[3] * y[2] + x[4] * y[3] */ + acc1 = __SMLALD(x3, c0, acc1); + + /* Read x[4], x[5] */ + x0 = *(q31_t *) (px++); + + /* Read x[5], x[6] */ + x1 = *(q31_t *) (px++); + + /* acc2 += x[4] * y[2] + x[5] * y[3] */ + acc2 = __SMLALD(x0, c0, acc2); + + /* acc3 += x[5] * y[2] + x[6] * y[3] */ + acc3 = __SMLALD(x1, c0, acc3); + + } while(--k); + + /* For the next MAC operations, SIMD is not used + * So, the 16 bit pointer if inputB, py is updated */ + py = (q15_t *) (pb); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + if(k == 1u) + { + /* Read y[4] */ + c0 = *py; +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16u; + +#else + + c0 = c0 & 0x0000FFFF; + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + /* Read x[7] */ + x3 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALD(x0, c0, acc0); + acc1 = __SMLALD(x1, c0, acc1); + acc2 = __SMLALDX(x1, c0, acc2); + acc3 = __SMLALDX(x3, c0, acc3); + } + + if(k == 2u) + { + /* Read y[4], y[5] */ + c0 = *(pb); + + /* Read x[7], x[8] */ + x3 = *(q31_t *) px++; + + /* Read x[9] */ + x2 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALD(x0, c0, acc0); + acc1 = __SMLALD(x1, c0, acc1); + acc2 = __SMLALD(x3, c0, acc2); + acc3 = __SMLALD(x2, c0, acc3); + } + + if(k == 3u) + { + /* Read y[4], y[5] */ + c0 = *pb++; + + /* Read x[7], x[8] */ + x3 = *(q31_t *) px++; + + /* Read x[9] */ + x2 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALD(x0, c0, acc0); + acc1 = __SMLALD(x1, c0, acc1); + acc2 = __SMLALD(x3, c0, acc2); + acc3 = __SMLALD(x2, c0, acc3); + + /* Read y[6] */ +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = (*pb); + c0 = c0 & 0xFFFF0000; + +#else + + c0 = (q15_t) (*pb); + c0 = c0 & 0x0000FFFF; + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + /* Read x[10] */ + x3 = *(q31_t *) px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALDX(x1, c0, acc0); + acc1 = __SMLALD(x2, c0, acc1); + acc2 = __SMLALDX(x2, c0, acc2); + acc3 = __SMLALDX(x3, c0, acc3); + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (__SSAT(acc0 >> 15, 16)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + *pOut = (q15_t) (__SSAT(acc1 >> 15, 16)); + pOut += inc; + + *pOut = (q15_t) (__SSAT(acc2 >> 15, 16)); + pOut += inc; + + *pOut = (q15_t) (__SSAT(acc3 >> 15, 16)); + pOut += inc; + + /* Increment the count by 4 as 4 output values are computed */ + count += 4u; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + pb = (q31_t *) (py); + + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4u; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += ((q63_t) * px++ * *py++); + sum += ((q63_t) * px++ * *py++); + sum += ((q63_t) * px++ * *py++); + sum += ((q63_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += ((q63_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (__SSAT(sum >> 15, 16)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Increment count by 1, as one output value is computed */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over srcBLen */ + k = srcBLen; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += ((q63_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (__SSAT(sum >> 15, 16)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * .... + * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] + * sum += x[srcALen-1] * y[0] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1u; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1u); + px = pSrc1; + + /* Working pointer of inputB */ + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while(blockSize3 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen - srcBLen + 4] * y[3] , sum += x[srcALen - srcBLen + 3] * y[2] */ + sum = __SMLALD(*__SIMD32(px)++, *__SIMD32(py)++, sum); + /* sum += x[srcALen - srcBLen + 2] * y[1] , sum += x[srcALen - srcBLen + 1] * y[0] */ + sum = __SMLALD(*__SIMD32(px)++, *__SIMD32(py)++, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum = __SMLALD(*px++, *py++, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (__SSAT((sum >> 15), 16)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + } + +#else + +/* Run the below code for Cortex-M0 */ + + q15_t *pIn1 = pSrcA; /* inputA pointer */ + q15_t *pIn2 = pSrcB + (srcBLen - 1u); /* inputB pointer */ + q63_t sum; /* Accumulators */ + uint32_t i = 0u, j; /* loop counters */ + uint32_t inv = 0u; /* Reverse order flag */ + uint32_t tot = 0u; /* Length */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and a varaible, inv is set to 1 */ + /* If lengths are not equal then zero pad has to be done to make the two + * inputs of same length. But to improve the performance, we include zeroes + * in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the + * starting of the output buffer */ + /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the + * ending of the output buffer */ + /* Once the zero padding is done the remaining of the output is calcualted + * using convolution but with the shorter signal time shifted. */ + + /* Calculate the length of the remaining sequence */ + tot = ((srcALen + srcBLen) - 2u); + + if(srcALen > srcBLen) + { + /* Calculating the number of zeros to be padded to the output */ + j = srcALen - srcBLen; + + /* Initialise the pointer after zero padding */ + pDst += j; + } + + else if(srcALen < srcBLen) + { + /* Initialization to inputB pointer */ + pIn1 = pSrcB; + + /* Initialization to the end of inputA pointer */ + pIn2 = pSrcA + (srcALen - 1u); + + /* Initialisation of the pointer after zero padding */ + pDst = pDst + tot; + + /* Swapping the lengths */ + j = srcALen; + srcALen = srcBLen; + srcBLen = j; + + /* Setting the reverse flag */ + inv = 1; + + } + + /* Loop to calculate convolution for output length number of times */ + for (i = 0u; i <= tot; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0u; j <= i; j++) + { + /* Check the array limitations */ + if((((i - j) < srcBLen) && (j < srcALen))) + { + /* z[i] += x[i-j] * y[j] */ + sum += ((q31_t) pIn1[j] * pIn2[-((int32_t) i - j)]); + } + } + /* Store the output in the destination buffer */ + if(inv == 1) + *pDst-- = (q15_t) __SSAT((sum >> 15u), 16u); + else + *pDst++ = (q15_t) __SSAT((sum >> 15u), 16u); + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of Corr group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q31.c new file mode 100644 index 000000000..df1a457fe --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q31.c @@ -0,0 +1,683 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_correlate_q31.c +* +* Description: Correlation of Q31 sequences. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Corr + * @{ + */ + +/** + * @brief Correlation of Q31 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * There is no saturation on intermediate additions. + * Thus, if the accumulator overflows it wraps around and distorts the result. + * The input signals should be scaled down to avoid intermediate overflows. + * Scale down one of the inputs by 1/min(srcALen, srcBLen)to avoid overflows since a + * maximum of min(srcALen, srcBLen) number of additions is carried internally. + * The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result. + * + * \par + * See arm_correlate_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4. + */ + +void arm_correlate_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst) +{ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t *pIn1; /* inputA pointer */ + q31_t *pIn2; /* inputB pointer */ + q31_t *pOut = pDst; /* output pointer */ + q31_t *px; /* Intermediate inputA pointer */ + q31_t *py; /* Intermediate inputB pointer */ + q31_t *pSrc1; /* Intermediate pointers */ + q63_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ + q31_t x0, x1, x2, x3, c0; /* temporary variables for holding input and coefficient values */ + uint32_t j, k = 0u, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counter */ + int32_t inc = 1; /* Destination address modifier */ + + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and the destination pointer modifier, inc is set to -1 */ + /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ + /* But to improve the performance, + * we include zeroes in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, + * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ + /* If srcALen < srcBLen, + * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ + if(srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcA); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcB); + + /* Number of output samples is calculated */ + outBlockSize = (2u * srcALen) - 1u; + + /* When srcALen > srcBLen, zero padding is done to srcB + * to make their lengths equal. + * Instead, (outBlockSize - (srcALen + srcBLen - 1)) + * number of output samples are made zero */ + j = outBlockSize - (srcALen + (srcBLen - 1u)); + + /* Updating the pointer position to non zero value */ + pOut += j; + + } + else + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcB); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcA); + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + + /* CORR(x, y) = Reverse order(CORR(y, x)) */ + /* Hence set the destination pointer to point to the last output sample */ + pOut = pDst + ((srcALen + srcBLen) - 2u); + + /* Destination address modifier is set to -1 */ + inc = -1; + + } + + /* The function is internally + * divided into three parts according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first part of the + * algorithm, the multiplications increase by one for every iteration. + * In the second part of the algorithm, srcBLen number of multiplications are done. + * In the third part of the algorithm, the multiplications decrease by one + * for every iteration.*/ + /* The algorithm is implemented in three stages. + * The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1u; + blockSize2 = srcALen - (srcBLen - 1u); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[srcBlen - 1] + * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1] + * .... + * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1u; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc1 = pIn2 + (srcBLen - 1u); + py = pSrc1; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while(blockSize1 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* x[0] * y[srcBLen - 4] */ + sum += (q63_t) * px++ * (*py++); + /* x[1] * y[srcBLen - 3] */ + sum += (q63_t) * px++ * (*py++); + /* x[2] * y[srcBLen - 2] */ + sum += (q63_t) * px++ * (*py++); + /* x[3] * y[srcBLen - 1] */ + sum += (q63_t) * px++ * (*py++); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* x[0] * y[srcBLen - 1] */ + sum += (q63_t) * px++ * (*py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q31_t) (sum >> 31); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pSrc1 - count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] + * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] + * .... + * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 1u; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if(srcBLen >= 4u) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2u; + + while(blkCnt > 0u) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[0] sample */ + c0 = *(py++); + + /* Read x[3] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[0] * y[0] */ + acc0 += ((q63_t) x0 * c0); + /* acc1 += x[1] * y[0] */ + acc1 += ((q63_t) x1 * c0); + /* acc2 += x[2] * y[0] */ + acc2 += ((q63_t) x2 * c0); + /* acc3 += x[3] * y[0] */ + acc3 += ((q63_t) x3 * c0); + + /* Read y[1] sample */ + c0 = *(py++); + + /* Read x[4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[1] * y[1] */ + acc0 += ((q63_t) x1 * c0); + /* acc1 += x[2] * y[1] */ + acc1 += ((q63_t) x2 * c0); + /* acc2 += x[3] * y[1] */ + acc2 += ((q63_t) x3 * c0); + /* acc3 += x[4] * y[1] */ + acc3 += ((q63_t) x0 * c0); + /* Read y[2] sample */ + c0 = *(py++); + + /* Read x[5] sample */ + x1 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[2] * y[2] */ + acc0 += ((q63_t) x2 * c0); + /* acc1 += x[3] * y[2] */ + acc1 += ((q63_t) x3 * c0); + /* acc2 += x[4] * y[2] */ + acc2 += ((q63_t) x0 * c0); + /* acc3 += x[5] * y[2] */ + acc3 += ((q63_t) x1 * c0); + + /* Read y[3] sample */ + c0 = *(py++); + + /* Read x[6] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[3] * y[3] */ + acc0 += ((q63_t) x3 * c0); + /* acc1 += x[4] * y[3] */ + acc1 += ((q63_t) x0 * c0); + /* acc2 += x[5] * y[3] */ + acc2 += ((q63_t) x1 * c0); + /* acc3 += x[6] * y[3] */ + acc3 += ((q63_t) x2 * c0); + + + } while(--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Read y[4] sample */ + c0 = *(py++); + + /* Read x[7] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[4] */ + acc0 += ((q63_t) x0 * c0); + /* acc1 += x[5] * y[4] */ + acc1 += ((q63_t) x1 * c0); + /* acc2 += x[6] * y[4] */ + acc2 += ((q63_t) x2 * c0); + /* acc3 += x[7] * y[4] */ + acc3 += ((q63_t) x3 * c0); + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q31_t) (acc0 >> 31); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + *pOut = (q31_t) (acc1 >> 31); + pOut += inc; + + *pOut = (q31_t) (acc2 >> 31); + pOut += inc; + + *pOut = (q31_t) (acc3 >> 31); + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + (count * 4u); + py = pIn2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4u; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += (q63_t) * px++ * (*py++); + sum += (q63_t) * px++ * (*py++); + sum += (q63_t) * px++ * (*py++); + sum += (q63_t) * px++ * (*py++); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q31_t) (sum >> 31); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over srcBLen */ + k = srcBLen; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q31_t) (sum >> 31); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * .... + * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] + * sum += x[srcALen-1] * y[0] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1u; + + /* Working pointer of inputA */ + pSrc1 = pIn1 + (srcALen - (srcBLen - 1u)); + px = pSrc1; + + /* Working pointer of inputB */ + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while(blockSize3 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen - srcBLen + 4] * y[3] */ + sum += (q63_t) * px++ * (*py++); + /* sum += x[srcALen - srcBLen + 3] * y[2] */ + sum += (q63_t) * px++ * (*py++); + /* sum += x[srcALen - srcBLen + 2] * y[1] */ + sum += (q63_t) * px++ * (*py++); + /* sum += x[srcALen - srcBLen + 1] * y[0] */ + sum += (q63_t) * px++ * (*py++); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += (q63_t) * px++ * (*py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q31_t) (sum >> 31); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + q31_t *pIn1 = pSrcA; /* inputA pointer */ + q31_t *pIn2 = pSrcB + (srcBLen - 1u); /* inputB pointer */ + q63_t sum; /* Accumulators */ + uint32_t i = 0u, j; /* loop counters */ + uint32_t inv = 0u; /* Reverse order flag */ + uint32_t tot = 0u; /* Length */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and a varaible, inv is set to 1 */ + /* If lengths are not equal then zero pad has to be done to make the two + * inputs of same length. But to improve the performance, we include zeroes + * in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the + * starting of the output buffer */ + /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the + * ending of the output buffer */ + /* Once the zero padding is done the remaining of the output is calcualted + * using convolution but with the shorter signal time shifted. */ + + /* Calculate the length of the remaining sequence */ + tot = ((srcALen + srcBLen) - 2u); + + if(srcALen > srcBLen) + { + /* Calculating the number of zeros to be padded to the output */ + j = srcALen - srcBLen; + + /* Initialise the pointer after zero padding */ + pDst += j; + } + + else if(srcALen < srcBLen) + { + /* Initialization to inputB pointer */ + pIn1 = pSrcB; + + /* Initialization to the end of inputA pointer */ + pIn2 = pSrcA + (srcALen - 1u); + + /* Initialisation of the pointer after zero padding */ + pDst = pDst + tot; + + /* Swapping the lengths */ + j = srcALen; + srcALen = srcBLen; + srcBLen = j; + + /* Setting the reverse flag */ + inv = 1; + + } + + /* Loop to calculate convolution for output length number of times */ + for (i = 0u; i <= tot; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0u; j <= i; j++) + { + /* Check the array limitations */ + if((((i - j) < srcBLen) && (j < srcALen))) + { + /* z[i] += x[i-j] * y[j] */ + sum += ((q63_t) pIn1[j] * pIn2[-((int32_t) i - j)]); + } + } + /* Store the output in the destination buffer */ + if(inv == 1) + *pDst-- = (q31_t) (sum >> 31u); + else + *pDst++ = (q31_t) (sum >> 31u); + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of Corr group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q7.c new file mode 100644 index 000000000..2496e2c36 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q7.c @@ -0,0 +1,780 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_correlate_q7.c +* +* Description: Correlation of Q7 sequences. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Corr + * @{ + */ + +/** + * @brief Correlation of Q7 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 32-bit internal accumulator. + * Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result. + * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. + * This approach provides 17 guard bits and there is no risk of overflow as long as max(srcALen, srcBLen)<131072. + * The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and saturated to 1.7 format. + */ + +void arm_correlate_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst) +{ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q7_t *pIn1; /* inputA pointer */ + q7_t *pIn2; /* inputB pointer */ + q7_t *pOut = pDst; /* output pointer */ + q7_t *px; /* Intermediate inputA pointer */ + q7_t *py; /* Intermediate inputB pointer */ + q7_t *pSrc1; /* Intermediate pointers */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ + q31_t input1, input2; /* temporary variables */ + q15_t in1, in2; /* temporary variables */ + q7_t x0, x1, x2, x3, c0, c1; /* temporary variables for holding input and coefficient values */ + uint32_t j, k = 0u, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counter */ + int32_t inc = 1; + + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and the destination pointer modifier, inc is set to -1 */ + /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ + /* But to improve the performance, + * we include zeroes in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, + * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ + /* If srcALen < srcBLen, + * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ + if(srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcA); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcB); + + /* Number of output samples is calculated */ + outBlockSize = (2u * srcALen) - 1u; + + /* When srcALen > srcBLen, zero padding is done to srcB + * to make their lengths equal. + * Instead, (outBlockSize - (srcALen + srcBLen - 1)) + * number of output samples are made zero */ + j = outBlockSize - (srcALen + (srcBLen - 1u)); + + /* Updating the pointer position to non zero value */ + pOut += j; + + } + else + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcB); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcA); + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + + /* CORR(x, y) = Reverse order(CORR(y, x)) */ + /* Hence set the destination pointer to point to the last output sample */ + pOut = pDst + ((srcALen + srcBLen) - 2u); + + /* Destination address modifier is set to -1 */ + inc = -1; + + } + + /* The function is internally + * divided into three parts according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first part of the + * algorithm, the multiplications increase by one for every iteration. + * In the second part of the algorithm, srcBLen number of multiplications are done. + * In the third part of the algorithm, the multiplications decrease by one + * for every iteration.*/ + /* The algorithm is implemented in three stages. + * The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1u; + blockSize2 = srcALen - (srcBLen - 1u); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[srcBlen - 1] + * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1] + * .... + * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1u; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc1 = pIn2 + (srcBLen - 1u); + py = pSrc1; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while(blockSize1 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* x[0] , x[1] */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[srcBLen - 4] , y[srcBLen - 3] */ + in1 = (q15_t) * py++; + in2 = (q15_t) * py++; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* x[0] * y[srcBLen - 4] */ + /* x[1] * y[srcBLen - 3] */ + sum = __SMLAD(input1, input2, sum); + + /* x[2] , x[3] */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[srcBLen - 2] , y[srcBLen - 1] */ + in1 = (q15_t) * py++; + in2 = (q15_t) * py++; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* x[2] * y[srcBLen - 2] */ + /* x[3] * y[srcBLen - 1] */ + sum = __SMLAD(input1, input2, sum); + + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + /* x[0] * y[srcBLen - 1] */ + sum += (q31_t) ((q15_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q7_t) (__SSAT(sum >> 7, 8)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pSrc1 - count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] + * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] + * .... + * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 1u; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if(srcBLen >= 4u) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2u; + + while(blkCnt > 0u) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1], x[2] samples */ + x0 = *px++; + x1 = *px++; + x2 = *px++; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[0] sample */ + c0 = *py++; + /* Read y[1] sample */ + c1 = *py++; + + /* Read x[3] sample */ + x3 = *px++; + + /* x[0] and x[1] are packed */ + in1 = (q15_t) x0; + in2 = (q15_t) x1; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[0] and y[1] are packed */ + in1 = (q15_t) c0; + in2 = (q15_t) c1; + + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc0 += x[0] * y[0] + x[1] * y[1] */ + acc0 = __SMLAD(input1, input2, acc0); + + /* x[1] and x[2] are packed */ + in1 = (q15_t) x1; + in2 = (q15_t) x2; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc1 += x[1] * y[0] + x[2] * y[1] */ + acc1 = __SMLAD(input1, input2, acc1); + + /* x[2] and x[3] are packed */ + in1 = (q15_t) x2; + in2 = (q15_t) x3; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc2 += x[2] * y[0] + x[3] * y[1] */ + acc2 = __SMLAD(input1, input2, acc2); + + /* Read x[4] sample */ + x0 = *(px++); + + /* x[3] and x[4] are packed */ + in1 = (q15_t) x3; + in2 = (q15_t) x0; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc3 += x[3] * y[0] + x[4] * y[1] */ + acc3 = __SMLAD(input1, input2, acc3); + + /* Read y[2] sample */ + c0 = *py++; + /* Read y[3] sample */ + c1 = *py++; + + /* Read x[5] sample */ + x1 = *px++; + + /* x[2] and x[3] are packed */ + in1 = (q15_t) x2; + in2 = (q15_t) x3; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[2] and y[3] are packed */ + in1 = (q15_t) c0; + in2 = (q15_t) c1; + + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc0 += x[2] * y[2] + x[3] * y[3] */ + acc0 = __SMLAD(input1, input2, acc0); + + /* x[3] and x[4] are packed */ + in1 = (q15_t) x3; + in2 = (q15_t) x0; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc1 += x[3] * y[2] + x[4] * y[3] */ + acc1 = __SMLAD(input1, input2, acc1); + + /* x[4] and x[5] are packed */ + in1 = (q15_t) x0; + in2 = (q15_t) x1; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc2 += x[4] * y[2] + x[5] * y[3] */ + acc2 = __SMLAD(input1, input2, acc2); + + /* Read x[6] sample */ + x2 = *px++; + + /* x[5] and x[6] are packed */ + in1 = (q15_t) x1; + in2 = (q15_t) x2; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc3 += x[5] * y[2] + x[6] * y[3] */ + acc3 = __SMLAD(input1, input2, acc3); + + } while(--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Read y[4] sample */ + c0 = *py++; + + /* Read x[7] sample */ + x3 = *px++; + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[4] */ + acc0 += ((q15_t) x0 * c0); + /* acc1 += x[5] * y[4] */ + acc1 += ((q15_t) x1 * c0); + /* acc2 += x[6] * y[4] */ + acc2 += ((q15_t) x2 * c0); + /* acc3 += x[7] * y[4] */ + acc3 += ((q15_t) x3 * c0); + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q7_t) (__SSAT(acc0 >> 7, 8)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + *pOut = (q7_t) (__SSAT(acc1 >> 7, 8)); + pOut += inc; + + *pOut = (q7_t) (__SSAT(acc2 >> 7, 8)); + pOut += inc; + + *pOut = (q7_t) (__SSAT(acc3 >> 7, 8)); + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + (count * 4u); + py = pIn2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4u; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* Reading two inputs of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Reading two inputs of SrcB buffer and packing */ + in1 = (q15_t) * py++; + in2 = (q15_t) * py++; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Perform the multiply-accumulates */ + sum = __SMLAD(input1, input2, sum); + + /* Reading two inputs of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Reading two inputs of SrcB buffer and packing */ + in1 = (q15_t) * py++; + in2 = (q15_t) * py++; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Perform the multiply-accumulates */ + sum = __SMLAD(input1, input2, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += ((q15_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q7_t) (__SSAT(sum >> 7, 8)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while(blkCnt > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over srcBLen */ + k = srcBLen; + + while(k > 0u) + { + /* Perform the multiply-accumulate */ + sum += ((q15_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q7_t) (__SSAT(sum >> 7, 8)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * .... + * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] + * sum += x[srcALen-1] * y[0] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1u; + + /* Working pointer of inputA */ + pSrc1 = pIn1 + (srcALen - (srcBLen - 1u)); + px = pSrc1; + + /* Working pointer of inputB */ + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while(blockSize3 > 0u) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while(k > 0u) + { + /* x[srcALen - srcBLen + 1] , x[srcALen - srcBLen + 2] */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[0] , y[1] */ + in1 = (q15_t) * py++; + in2 = (q15_t) * py++; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* sum += x[srcALen - srcBLen + 1] * y[0] */ + /* sum += x[srcALen - srcBLen + 2] * y[1] */ + sum = __SMLAD(input1, input2, sum); + + /* x[srcALen - srcBLen + 3] , x[srcALen - srcBLen + 4] */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[2] , y[3] */ + in1 = (q15_t) * py++; + in2 = (q15_t) * py++; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* sum += x[srcALen - srcBLen + 3] * y[2] */ + /* sum += x[srcALen - srcBLen + 4] * y[3] */ + sum = __SMLAD(input1, input2, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4u; + + while(k > 0u) + { + /* Perform the multiply-accumulates */ + sum += ((q15_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q7_t) (__SSAT(sum >> 7, 8)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + } + +#else + +/* Run the below code for Cortex-M0 */ + + q7_t *pIn1 = pSrcA; /* inputA pointer */ + q7_t *pIn2 = pSrcB + (srcBLen - 1u); /* inputB pointer */ + q31_t sum; /* Accumulator */ + uint32_t i = 0u, j; /* loop counters */ + uint32_t inv = 0u; /* Reverse order flag */ + uint32_t tot = 0u; /* Length */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and a varaible, inv is set to 1 */ + /* If lengths are not equal then zero pad has to be done to make the two + * inputs of same length. But to improve the performance, we include zeroes + * in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the + * starting of the output buffer */ + /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the + * ending of the output buffer */ + /* Once the zero padding is done the remaining of the output is calcualted + * using convolution but with the shorter signal time shifted. */ + + /* Calculate the length of the remaining sequence */ + tot = ((srcALen + srcBLen) - 2u); + + if(srcALen > srcBLen) + { + /* Calculating the number of zeros to be padded to the output */ + j = srcALen - srcBLen; + + /* Initialise the pointer after zero padding */ + pDst += j; + } + + else if(srcALen < srcBLen) + { + /* Initialization to inputB pointer */ + pIn1 = pSrcB; + + /* Initialization to the end of inputA pointer */ + pIn2 = pSrcA + (srcALen - 1u); + + /* Initialisation of the pointer after zero padding */ + pDst = pDst + tot; + + /* Swapping the lengths */ + j = srcALen; + srcALen = srcBLen; + srcBLen = j; + + /* Setting the reverse flag */ + inv = 1; + + } + + /* Loop to calculate convolution for output length number of times */ + for (i = 0u; i <= tot; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0u; j <= i; j++) + { + /* Check the array limitations */ + if((((i - j) < srcBLen) && (j < srcALen))) + { + /* z[i] += x[i-j] * y[j] */ + sum += ((q15_t) pIn1[j] * pIn2[-((int32_t) i - j)]); + } + } + /* Store the output in the destination buffer */ + if(inv == 1) + *pDst-- = (q7_t) __SSAT((sum >> 7u), 8u); + else + *pDst++ = (q7_t) __SSAT((sum >> 7u), 8u); + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of Corr group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_f32.c new file mode 100644 index 000000000..0ee7d160f --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_f32.c @@ -0,0 +1,370 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_decimate_f32.c +* +* Description: FIR decimation for floating-point sequences. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup FIR_decimate Finite Impulse Response (FIR) Decimator + * + * These functions combine an FIR filter together with a decimator. + * They are used in multirate systems for reducing the sample rate of a signal without introducing aliasing distortion. + * Conceptually, the functions are equivalent to the block diagram below: + * \image html FIRDecimator.gif "Components included in the FIR Decimator functions" + * When decimating by a factor of M, the signal should be prefiltered by a lowpass filter with a normalized + * cutoff frequency of 1/M in order to prevent aliasing distortion. + * The user of the function is responsible for providing the filter coefficients. + * + * The FIR decimator functions provided in the CMSIS DSP Library combine the FIR filter and the decimator in an efficient manner. + * Instead of calculating all of the FIR filter outputs and discarding M-1 out of every M, only the + * samples output by the decimator are computed. + * The functions operate on blocks of input and output data. + * pSrc points to an array of blockSize input values and + * pDst points to an array of blockSize/M output values. + * In order to have an integer number of output samples blockSize + * must always be a multiple of the decimation factor M. + * + * The library provides separate functions for Q15, Q31 and floating-point data types. + * + * \par Algorithm: + * The FIR portion of the algorithm uses the standard form filter: + *
   
+ *    y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]   
+ * 
+ * where, b[n] are the filter coefficients. + * \par + * The pCoeffs points to a coefficient array of size numTaps. + * Coefficients are stored in time reversed order. + * \par + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ * 
+ * \par + * pState points to a state array of size numTaps + blockSize - 1. + * Samples in the state buffer are stored in the order: + * \par + *
   
+ *    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}   
+ * 
+ * The state variables are updated after each block of data is processed, the coefficients are untouched. + * + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter. + * Coefficient arrays may be shared among several instances while state variable array should be allocated separately. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * - Checks to make sure that the size of the input is a multiple of the decimation factor. + * + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * The code below statically initializes each of the 3 different data type filter instance structures + *
   
+ *arm_fir_decimate_instance_f32 S = {M, numTaps, pCoeffs, pState};   
+ *arm_fir_decimate_instance_q31 S = {M, numTaps, pCoeffs, pState};   
+ *arm_fir_decimate_instance_q15 S = {M, numTaps, pCoeffs, pState};   
+ * 
+ * where M is the decimation factor; numTaps is the number of filter coefficients in the filter; + * pCoeffs is the address of the coefficient buffer; + * pState is the address of the state buffer. + * Be sure to set the values in the state buffer to zeros when doing static initialization. + * + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the FIR decimate filter functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + +/** + * @addtogroup FIR_decimate + * @{ + */ + + /** + * @brief Processing function for the floating-point FIR decimator. + * @param[in] *S points to an instance of the floating-point FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ + +void arm_fir_decimate_f32( + const arm_fir_decimate_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *pStateCurnt; /* Points to the current sample of the state */ + float32_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ + float32_t sum0; /* Accumulator */ + float32_t x0, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i, tapCnt, blkCnt, outBlockSize = blockSize / S->M; /* Loop counters */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1u); + + /* Total number of output samples to be computed */ + blkCnt = outBlockSize; + + while(blkCnt > 0u) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while(--i); + + /* Set accumulator to zero */ + sum0 = 0.0f; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + while(tapCnt > 0u) + { + /* Read the b[numTaps-1] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-1] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Read the b[numTaps-2] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-2] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Read the b[numTaps-3] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-3] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4u; + + while(tapCnt > 0u) + { + /* Read coefficients */ + c0 = *(pb++); + + /* Fetch 1 state variable */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M; + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = sum0; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = (numTaps - 1u) >> 2; + + /* copy data */ + while(i > 0u) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + + i = (numTaps - 1u) % 0x04u; + + /* copy data */ + while(i > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + +#else + +/* Run the below code for Cortex-M0 */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1u); + + /* Total number of output samples to be computed */ + blkCnt = outBlockSize; + + while(blkCnt > 0u) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while(--i); + + /* Set accumulator to zero */ + sum0 = 0.0f; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + tapCnt = numTaps; + + while(tapCnt > 0u) + { + /* Read coefficients */ + c0 = *pb++; + + /* Fetch 1 state variable */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M; + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = sum0; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + /* Copy numTaps number of values */ + i = (numTaps - 1u); + + /* copy data */ + while(i > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of FIR_decimate group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c new file mode 100644 index 000000000..ae1ddf8b9 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c @@ -0,0 +1,199 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_decimate_fast_q15.c +* +* Description: Fast Q15 FIR Decimator. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_decimate + * @{ + */ + +/** + * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. + * @param[in] *S points to an instance of the Q15 FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + * @return none + * + * Scaling and Overflow Behavior: + * \par + * This fast version uses a 32-bit accumulator with 2.30 format. + * The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around and distorts the result. + * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits (log2 is read as log to the base 2). + * The 2.30 accumulator is then truncated to 2.15 format and saturated to yield the 1.15 result. + * + * \par + * Refer to the function arm_fir_decimate_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion. + * Both the slow and the fast versions use the same instance structure. + * Use the function arm_fir_decimate_init_q15() to initialize the filter structure. + */ + +void arm_fir_decimate_fast_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t *px; /* Temporary pointer for state buffer */ + q15_t *pb; /* Temporary pointer coefficient buffer */ + q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ + q31_t sum0; /* Accumulators */ + uint32_t numTaps = S->numTaps; /* Number of taps */ + uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M; /* Loop counters */ + + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1u); + + /* Total number of output samples to be computed */ + blkCnt = outBlockSize; + + while(blkCnt > 0u) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while(--i); + + /*Set sum to zero */ + sum0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + while(tapCnt > 0u) + { + /* Read the Read b[numTaps-1] and b[numTaps-2] coefficients */ + c0 = *__SIMD32(pb)++; + + /* Read x[n-numTaps-1] and x[n-numTaps-2]sample */ + x0 = *__SIMD32(px)++; + + /* Perform the multiply-accumulate */ + sum0 = __SMLAD(x0, c0, sum0); + + /* Read the b[numTaps-3] and b[numTaps-4] coefficient */ + c0 = *__SIMD32(pb)++; + + /* Read x[n-numTaps-2] and x[n-numTaps-3] sample */ + x0 = *__SIMD32(px)++; + + /* Perform the multiply-accumulate */ + sum0 = __SMLAD(x0, c0, sum0); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4u; + + while(tapCnt > 0u) + { + /* Read coefficients */ + c0 = *pb++; + + /* Fetch 1 state variable */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 = __SMLAD(x0, c0, sum0); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M; + + /* Store filter output , smlad returns the values in 2.14 format */ + /* so downsacle by 15 to get output in 1.15 */ + *pDst++ = (q15_t) ((sum0 >> 15)); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = (numTaps - 1u) >> 2u; + + /* copy data */ + while(i > 0u) + { + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + + /* Decrement the loop counter */ + i--; + } + + i = (numTaps - 1u) % 0x04u; + + /* copy data */ + while(i > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } +} + +/** + * @} end of FIR_decimate group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c new file mode 100644 index 000000000..86833d829 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c @@ -0,0 +1,220 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_decimate_fast_q31.c +* +* Description: Fast Q31 FIR Decimator. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_decimate + * @{ + */ + +/** + * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. + * @param[in] *S points to an instance of the Q31 FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + * @return none + * + * Scaling and Overflow Behavior: + * + * \par + * This function is optimized for speed at the expense of fixed-point precision and overflow protection. + * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. + * These intermediate results are added to a 2.30 accumulator. + * Finally, the accumulator is saturated and converted to a 1.31 result. + * The fast version has the same overflow behavior as the standard version and provides less precision since it discards the low 32 bits of each multiplication result. + * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits (where log2 is read as log to the base 2). + * + * \par + * Refer to the function arm_fir_decimate_q31() for a slower implementation of this function which uses a 64-bit accumulator to provide higher precision. + * Both the slow and the fast versions use the same instance structure. + * Use the function arm_fir_decimate_init_q31() to initialize the filter structure. + */ + +void arm_fir_decimate_fast_q31( + arm_fir_decimate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ + q31_t *px; /* Temporary pointers for state buffer */ + q31_t *pb; /* Temporary pointers for coefficient buffer */ + q63_t sum0; /* Accumulator */ + uint32_t numTaps = S->numTaps; /* Number of taps */ + uint32_t i, tapCnt, blkCnt, outBlockSize = blockSize / S->M; /* Loop counters */ + + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1u); + + /* Total number of output samples to be computed */ + blkCnt = outBlockSize; + + while(blkCnt > 0u) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while(--i); + + /* Set accumulator to zero */ + sum0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + while(tapCnt > 0u) + { + /* Read the b[numTaps-1] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-1] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 = (q31_t) ((((q63_t) x0 * c0) + (sum0 << 32)) >> 32); + + /* Read the b[numTaps-2] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-2] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 = (q31_t) ((((q63_t) x0 * c0) + (sum0 << 32)) >> 32); + + /* Read the b[numTaps-3] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-3] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 = (q31_t) ((((q63_t) x0 * c0) + (sum0 << 32)) >> 32); + + /* Read the b[numTaps-4] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 = (q31_t) ((((q63_t) x0 * c0) + (sum0 << 32)) >> 32); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4u; + + while(tapCnt > 0u) + { + /* Read coefficients */ + c0 = *(pb++); + + /* Fetch 1 state variable */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 = (q31_t) ((((q63_t) x0 * c0) + (sum0 << 32)) >> 32); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M; + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = (q31_t) (sum0 << 1); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = (numTaps - 1u) >> 2u; + + /* copy data */ + while(i > 0u) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + + i = (numTaps - 1u) % 0x04u; + + /* copy data */ + while(i > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } +} + +/** + * @} end of FIR_decimate group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_f32.c new file mode 100644 index 000000000..be970ebc1 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_f32.c @@ -0,0 +1,109 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_decimate_init_f32.c +* +* Description: Floating-point FIR Decimator initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_decimate + * @{ + */ + +/** + * @brief Initialization function for the floating-point FIR decimator. + * @param[in,out] *S points to an instance of the floating-point FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ * 
+ * \par + * pState points to the array of state variables. + * pState is of length numTaps+blockSize-1 words where blockSize is the number of input samples passed to arm_fir_decimate_f32(). + * M is the decimation factor. + */ + +arm_status arm_fir_decimate_init_f32( + arm_fir_decimate_instance_f32 * S, + uint16_t numTaps, + uint8_t M, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize) +{ + arm_status status; + + /* The size of the input block must be a multiple of the decimation factor */ + if((blockSize % M) != 0u) + { + /* Set status as ARM_MATH_LENGTH_ERROR */ + status = ARM_MATH_LENGTH_ERROR; + } + else + { + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always (blockSize + numTaps - 1) */ + memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; + + /* Assign Decimation Factor */ + S->M = M; + + status = ARM_MATH_SUCCESS; + } + + return (status); + +} + +/** + * @} end of FIR_decimate group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q15.c new file mode 100644 index 000000000..c9f1f3cb7 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q15.c @@ -0,0 +1,111 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_decimate_init_q15.c +* +* Description: Initialization function for the Q15 FIR Decimator. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_decimate + * @{ + */ + +/** + * @brief Initialization function for the Q15 FIR decimator. + * @param[in,out] *S points to an instance of the Q15 FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ * 
+ * \par + * pState points to the array of state variables. + * pState is of length numTaps+blockSize-1 words where blockSize is the number of input samples + * to the call arm_fir_decimate_q15(). + * M is the decimation factor. + */ + +arm_status arm_fir_decimate_init_q15( + arm_fir_decimate_instance_q15 * S, + uint16_t numTaps, + uint8_t M, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize) +{ + + arm_status status; + + /* The size of the input block must be a multiple of the decimation factor */ + if((blockSize % M) != 0u) + { + /* Set status as ARM_MATH_LENGTH_ERROR */ + status = ARM_MATH_LENGTH_ERROR; + } + else + { + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear the state buffer. The size of buffer is always (blockSize + numTaps - 1) */ + memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(q15_t)); + + /* Assign state pointer */ + S->pState = pState; + + /* Assign Decimation factor */ + S->M = M; + + status = ARM_MATH_SUCCESS; + } + + return (status); + +} + +/** + * @} end of FIR_decimate group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q31.c new file mode 100644 index 000000000..7fdb6935f --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q31.c @@ -0,0 +1,109 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_decimate_init_q31.c +* +* Description: Initialization function for Q31 FIR Decimation filter. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_decimate + * @{ + */ + +/** + * @brief Initialization function for the Q31 FIR decimator. + * @param[in,out] *S points to an instance of the Q31 FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ * 
+ * \par + * pState points to the array of state variables. + * pState is of length numTaps+blockSize-1 words where blockSize is the number of input samples passed to arm_fir_decimate_q31(). + * M is the decimation factor. + */ + +arm_status arm_fir_decimate_init_q31( + arm_fir_decimate_instance_q31 * S, + uint16_t numTaps, + uint8_t M, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize) +{ + arm_status status; + + /* The size of the input block must be a multiple of the decimation factor */ + if((blockSize % M) != 0u) + { + /* Set status as ARM_MATH_LENGTH_ERROR */ + status = ARM_MATH_LENGTH_ERROR; + } + else + { + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear the state buffer. The size is always (blockSize + numTaps - 1) */ + memset(pState, 0, (numTaps + (blockSize - 1)) * sizeof(q31_t)); + + /* Assign state pointer */ + S->pState = pState; + + /* Assign Decimation factor */ + S->M = M; + + status = ARM_MATH_SUCCESS; + } + + return (status); + +} + +/** + * @} end of FIR_decimate group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q15.c new file mode 100644 index 000000000..be264594f --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q15.c @@ -0,0 +1,285 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_decimate_q15.c +* +* Description: Q15 FIR Decimator. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_decimate + * @{ + */ + +/** + * @brief Processing function for the Q15 FIR decimator. + * @param[in] *S points to an instance of the Q15 FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the location where the output result is written. + * @param[in] blockSize number of input samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. + * Lastly, the accumulator is saturated to yield a result in 1.15 format. + * + * \par + * Refer to the function arm_fir_decimate_fast_q15() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4. + */ + +void arm_fir_decimate_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t *px; /* Temporary pointer for state buffer */ + q15_t *pb; /* Temporary pointer coefficient buffer */ + q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ + q63_t sum0; /* Accumulators */ + uint32_t numTaps = S->numTaps; /* Number of taps */ + uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M; /* Loop counters */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1u); + + /* Total number of output samples to be computed */ + blkCnt = outBlockSize; + + while(blkCnt > 0u) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while(--i); + + /*Set sum to zero */ + sum0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + while(tapCnt > 0u) + { + /* Read the Read b[numTaps-1] and b[numTaps-2] coefficients */ + c0 = *__SIMD32(pb)++; + + /* Read x[n-numTaps-1] and x[n-numTaps-2]sample */ + x0 = *__SIMD32(px)++; + + /* Perform the multiply-accumulate */ + sum0 = __SMLALD(x0, c0, sum0); + + /* Read the b[numTaps-3] and b[numTaps-4] coefficient */ + c0 = *__SIMD32(pb)++; + + /* Read x[n-numTaps-2] and x[n-numTaps-3] sample */ + x0 = *__SIMD32(px)++; + + /* Perform the multiply-accumulate */ + sum0 = __SMLALD(x0, c0, sum0); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4u; + + while(tapCnt > 0u) + { + /* Read coefficients */ + c0 = *pb++; + + /* Fetch 1 state variable */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 = __SMLALD(x0, c0, sum0); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M; + + /* Store filter output, smlad returns the values in 2.14 format */ + /* so downsacle by 15 to get output in 1.15 */ + *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16)); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = (numTaps - 1u) >> 2u; + + /* copy data */ + while(i > 0u) + { + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + + /* Decrement the loop counter */ + i--; + } + + i = (numTaps - 1u) % 0x04u; + + /* copy data */ + while(i > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + +#else + +/* Run the below code for Cortex-M0 */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1u); + + /* Total number of output samples to be computed */ + blkCnt = outBlockSize; + + while(blkCnt > 0u) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while(--i); + + /*Set sum to zero */ + sum0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + tapCnt = numTaps; + + while(tapCnt > 0u) + { + /* Read coefficients */ + c0 = *pb++; + + /* Fetch 1 state variable */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 += (q31_t) x0 *c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M; + + /*Store filter output , smlad will return the values in 2.14 format */ + /* so downsacle by 15 to get output in 1.15 */ + *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16)); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = numTaps - 1u; + + /* copy data */ + while(i > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of FIR_decimate group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q31.c new file mode 100644 index 000000000..96f7ce1cf --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q31.c @@ -0,0 +1,303 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_decimate_q31.c +* +* Description: Q31 FIR Decimator. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_decimate + * @{ + */ + +/** + * @brief Processing function for the Q31 FIR decimator. + * @param[in] *S points to an instance of the Q31 FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + * @return none + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around rather than clip. + * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits (where log2 is read as log to the base 2). + * After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format. + * + * \par + * Refer to the function arm_fir_decimate_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4. + */ + +void arm_fir_decimate_q31( + const arm_fir_decimate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ + q31_t *px; /* Temporary pointers for state buffer */ + q31_t *pb; /* Temporary pointers for coefficient buffer */ + q63_t sum0; /* Accumulator */ + uint32_t numTaps = S->numTaps; /* Number of taps */ + uint32_t i, tapCnt, blkCnt, outBlockSize = blockSize / S->M; /* Loop counters */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1u); + + /* Total number of output samples to be computed */ + blkCnt = outBlockSize; + + while(blkCnt > 0u) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while(--i); + + /* Set accumulator to zero */ + sum0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + while(tapCnt > 0u) + { + /* Read the b[numTaps-1] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-1] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Read the b[numTaps-2] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-2] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Read the b[numTaps-3] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-3] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4u; + + while(tapCnt > 0u) + { + /* Read coefficients */ + c0 = *(pb++); + + /* Fetch 1 state variable */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M; + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = (q31_t) (sum0 >> 31); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = (numTaps - 1u) >> 2u; + + /* copy data */ + while(i > 0u) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + + i = (numTaps - 1u) % 0x04u; + + /* copy data */ + while(i > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + +#else + +/* Run the below code for Cortex-M0 */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1u); + + /* Total number of output samples to be computed */ + blkCnt = outBlockSize; + + while(blkCnt > 0u) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while(--i); + + /* Set accumulator to zero */ + sum0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + tapCnt = numTaps; + + while(tapCnt > 0u) + { + /* Read coefficients */ + c0 = *pb++; + + /* Fetch 1 state variable */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M; + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = (q31_t) (sum0 >> 31); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = numTaps - 1u; + + /* copy data */ + while(i > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of FIR_decimate group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_f32.c new file mode 100644 index 000000000..1a166544e --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_f32.c @@ -0,0 +1,436 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_f32.c +* +* Description: Floating-point FIR filter processing function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup FIR Finite Impulse Response (FIR) Filters + * + * This set of functions implements Finite Impulse Response (FIR) filters + * for Q7, Q15, Q31, and floating-point data types. + * Fast versions of Q15 and Q31 are also provided on Cortex-M4 and Cortex-M3. + * The functions operate on blocks of input and output data and each call to the function processes + * blockSize samples through the filter. pSrc and + * pDst points to input and output arrays containing blockSize values. + * + * \par Algorithm: + * The FIR filter algorithm is based upon a sequence of multiply-accumulate (MAC) operations. + * Each filter coefficient b[n] is multiplied by a state variable which equals a previous input sample x[n]. + *
   
+ *    y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]   
+ * 
+ * \par + * \image html FIR.gif "Finite Impulse Response filter" + * \par + * pCoeffs points to a coefficient array of size numTaps. + * Coefficients are stored in time reversed order. + * \par + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ * 
+ * \par + * pState points to a state array of size numTaps + blockSize - 1. + * Samples in the state buffer are stored in the following order. + * \par + *
   
+ *    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}   
+ * 
+ * \par + * Note that the length of the state buffer exceeds the length of the coefficient array by blockSize-1. + * The increased state buffer length allows circular addressing, which is traditionally used in the FIR filters, + * to be avoided and yields a significant speed improvement. + * The state variables are updated after each block of data is processed; the coefficients are untouched. + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter. + * Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. + * There are separate instance structure declarations for each of the 4 supported data types. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * Set the values in the state buffer to zeros before static initialization. + * The code below statically initializes each of the 4 different data type filter instance structures + *
   
+ *arm_fir_instance_f32 S = {numTaps, pState, pCoeffs};   
+ *arm_fir_instance_q31 S = {numTaps, pState, pCoeffs};   
+ *arm_fir_instance_q15 S = {numTaps, pState, pCoeffs};   
+ *arm_fir_instance_q7 S =  {numTaps, pState, pCoeffs};   
+ * 
+ * + * where numTaps is the number of filter coefficients in the filter; pState is the address of the state buffer; + * pCoeffs is the address of the coefficient buffer. + * + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the FIR filter functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + +/** + * @addtogroup FIR + * @{ + */ + +/** + * + * @param[in] *S points to an instance of the floating-point FIR filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + */ + +void arm_fir_f32( + const arm_fir_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *pStateCurnt; /* Points to the current sample of the state */ + float32_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i, tapCnt, blkCnt; /* Loop counters */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float32_t acc0, acc1, acc2, acc3; /* Accumulators */ + float32_t x0, x1, x2, x3, c0; /* Temporary variables to hold state and coefficient values */ + + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1u)]); + + /* Apply loop unrolling and compute 4 output values simultaneously. + * The variables acc0 ... acc3 hold output values that are being computed: + * + * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] + * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] + * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] + * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] + */ + blkCnt = blockSize >> 2; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* Copy four new input samples into the state buffer */ + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + + /* Set all accumulators to zero */ + acc0 = 0.0f; + acc1 = 0.0f; + acc2 = 0.0f; + acc3 = 0.0f; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Read the first three samples from the state buffer: x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */ + x0 = *px++; + x1 = *px++; + x2 = *px++; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2u; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + while(tapCnt > 0u) + { + /* Read the b[numTaps-1] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-3] sample */ + x3 = *(px++); + + /* acc0 += b[numTaps-1] * x[n-numTaps] */ + acc0 += x0 * c0; + + /* acc1 += b[numTaps-1] * x[n-numTaps-1] */ + acc1 += x1 * c0; + + /* acc2 += b[numTaps-1] * x[n-numTaps-2] */ + acc2 += x2 * c0; + + /* acc3 += b[numTaps-1] * x[n-numTaps-3] */ + acc3 += x3 * c0; + + /* Read the b[numTaps-2] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + acc0 += x1 * c0; + acc1 += x2 * c0; + acc2 += x3 * c0; + acc3 += x0 * c0; + + /* Read the b[numTaps-3] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-5] sample */ + x1 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += x2 * c0; + acc1 += x3 * c0; + acc2 += x0 * c0; + acc3 += x1 * c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-6] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += x3 * c0; + acc1 += x0 * c0; + acc2 += x1 * c0; + acc3 += x2 * c0; + + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4u; + + while(tapCnt > 0u) + { + /* Read coefficients */ + c0 = *(pb++); + + /* Fetch 1 state variable */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += x0 * c0; + acc1 += x1 * c0; + acc2 += x2 * c0; + acc3 += x3 * c0; + + /* Reuse the present sample states for next sample */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by 4 to process the next group of 4 samples */ + pState = pState + 4; + + /* The results in the 4 accumulators, store in the destination buffer. */ + *pDst++ = acc0; + *pDst++ = acc1; + *pDst++ = acc2; + *pDst++ = acc3; + + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc0 = 0.0f; + + /* Initialize state pointer */ + px = pState; + + /* Initialize Coefficient pointer */ + pb = (pCoeffs); + + i = numTaps; + + /* Perform the multiply-accumulates */ + do + { + acc0 += *px++ * *pb++; + i--; + + } while(i > 0u); + + /* The result is store in the destination buffer. */ + *pDst++ = acc0; + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + tapCnt = (numTaps - 1u) >> 2u; + + /* copy data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calculate remaining number of copies */ + tapCnt = (numTaps - 1u) % 0x4u; + + /* Copy the remaining q31_t data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + float32_t acc; + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1u)]); + + /* Initialize blkCnt with blockSize */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc = 0.0f; + + /* Initialize state pointer */ + px = pState; + + /* Initialize Coefficient pointer */ + pb = pCoeffs; + + i = numTaps; + + /* Perform the multiply-accumulates */ + do + { + /* acc = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */ + acc += *px++ * *pb++; + i--; + + } while(i > 0u); + + /* The result is store in the destination buffer. */ + *pDst++ = acc; + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the starting of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + /* Copy numTaps number of values */ + tapCnt = numTaps - 1u; + + /* Copy data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of FIR group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q15.c new file mode 100644 index 000000000..cbd0827df --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q15.c @@ -0,0 +1,279 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_fast_q15.c +* +* Description: Q15 Fast FIR filter processing function. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.9 2010/08/16 +* Initial version +* +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR + * @{ + */ + +/** + * @param[in] *S points to an instance of the Q15 FIR filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * This fast version uses a 32-bit accumulator with 2.30 format. + * The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around and distorts the result. + * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits. + * The 2.30 accumulator is then truncated to 2.15 format and saturated to yield the 1.15 result. + * + * \par + * Refer to the function arm_fir_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion. Both the slow and the fast versions use the same instance structure. + * Use the function arm_fir_init_q15() to initialize the filter structure. + */ + +void arm_fir_fast_q15( + const arm_fir_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t *px1; /* Temporary q15 pointer for state buffer */ + q31_t *pb; /* Temporary pointer for coefficient buffer */ + q31_t *px2; /* Temporary q31 pointer for SIMD state buffer accesses */ + q31_t x0, x1, x2, x3, c0; /* Temporary variables to hold SIMD state and coefficient values */ + q31_t acc0, acc1, acc2, acc3; /* Accumulators */ + uint32_t numTaps = S->numTaps; /* Number of taps in the filter */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1u)]); + + /* Apply loop unrolling and compute 4 output values simultaneously. + * The variables acc0 ... acc3 hold output values that are being computed: + * + * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] + * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] + * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] + * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] + */ + blkCnt = blockSize >> 2; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* Copy four new input samples into the state buffer. + ** Use 32-bit SIMD to move the 16-bit data. Only requires two copies. */ + *__SIMD32(pStateCurnt)++ = *__SIMD32(pSrc)++; + *__SIMD32(pStateCurnt)++ = *__SIMD32(pSrc)++; + + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Initialize state pointer of type q15 */ + px1 = pState; + + /* Initialize coeff pointer of type q31 */ + pb = (q31_t *) (pCoeffs); + + /* Read the first two samples from the state buffer: x[n-N], x[n-N-1] */ + x0 = *(q31_t *) (px1++); + + /* Read the third and forth samples from the state buffer: x[n-N-1], x[n-N-2] */ + x1 = *(q31_t *) (px1++); + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + tapCnt = numTaps >> 2; + do + { + /* Read the first two coefficients using SIMD: b[N] and b[N-1] coefficients */ + c0 = *(pb++); + + /* acc0 += b[N] * x[n-N] + b[N-1] * x[n-N-1] */ + acc0 = __SMLAD(x0, c0, acc0); + + /* acc1 += b[N] * x[n-N-1] + b[N-1] * x[n-N-2] */ + acc1 = __SMLAD(x1, c0, acc1); + + /* Read state x[n-N-2], x[n-N-3] */ + x2 = *(q31_t *) (px1++); + + /* Read state x[n-N-3], x[n-N-4] */ + x3 = *(q31_t *) (px1++); + + /* acc2 += b[N] * x[n-N-2] + b[N-1] * x[n-N-3] */ + acc2 = __SMLAD(x2, c0, acc2); + + /* acc3 += b[N] * x[n-N-3] + b[N-1] * x[n-N-4] */ + acc3 = __SMLAD(x3, c0, acc3); + + /* Read coefficients b[N-2], b[N-3] */ + c0 = *(pb++); + + /* acc0 += b[N-2] * x[n-N-2] + b[N-3] * x[n-N-3] */ + acc0 = __SMLAD(x2, c0, acc0); + + /* acc1 += b[N-2] * x[n-N-3] + b[N-3] * x[n-N-4] */ + acc1 = __SMLAD(x3, c0, acc1); + + /* Read state x[n-N-4], x[n-N-5] */ + x0 = *(q31_t *) (px1++); + + /* Read state x[n-N-5], x[n-N-6] */ + x1 = *(q31_t *) (px1++); + + /* acc2 += b[N-2] * x[n-N-4] + b[N-3] * x[n-N-5] */ + acc2 = __SMLAD(x0, c0, acc2); + + /* acc3 += b[N-2] * x[n-N-5] + b[N-3] * x[n-N-6] */ + acc3 = __SMLAD(x1, c0, acc3); + tapCnt--; + + } + while(tapCnt > 0u); + + /* If the filter length is not a multiple of 4, compute the remaining filter taps. + ** This is always 2 taps since the filter length is always even. */ + if((numTaps & 0x3u) != 0u) + { + /* Read 2 coefficients */ + c0 = *(pb++); + /* Fetch 4 state variables */ + x2 = *(q31_t *) (px1++); + x3 = *(q31_t *) (px1++); + + /* Perform the multiply-accumulates */ + acc0 = __SMLAD(x0, c0, acc0); + acc1 = __SMLAD(x1, c0, acc1); + acc2 = __SMLAD(x2, c0, acc2); + acc3 = __SMLAD(x3, c0, acc3); + } + + /* The results in the 4 accumulators are in 2.30 format. Convert to 1.15 with saturation. + ** Then store the 4 outputs in the destination buffer. */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = __PKHBT((acc0 >> 15), (acc1 >> 15), 16u); + *__SIMD32(pDst)++ = __PKHBT((acc2 >> 15), (acc3 >> 15), 16u); + +#else + + *__SIMD32(pDst)++ = __PKHBT((acc1 >> 15), (acc0 >> 15), 16u); + *__SIMD32(pDst)++ = __PKHBT((acc3 >> 15), (acc2 >> 15), 16u); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Advance the state pointer by 4 to process the next group of 4 samples */ + pState = pState + 4; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + while(blkCnt > 0u) + { + /* Copy two samples into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc0 = 0; + + /* Use SIMD to hold states and coefficients */ + px2 = (q31_t *) pState; + pb = (q31_t *) (pCoeffs); + tapCnt = numTaps >> 1; + + do + { + acc0 = __SMLAD(*px2++, *(pb++), acc0); + tapCnt--; + } + while(tapCnt > 0u); + + /* The result is in 2.30 format. Convert to 1.15 with saturation. + ** Then store the output in the destination buffer. */ + *pDst++ = (q15_t) ((acc0 >> 15)); + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + /* Calculation of count for copying integer writes */ + tapCnt = (numTaps - 1u) >> 2; + + while(tapCnt > 0u) + { + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + + tapCnt--; + } + + /* Calculation of count for remaining q15_t data */ + tapCnt = (numTaps - 1u) % 0x4u; + + /* copy remaining data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } +} + +/** + * @} end of FIR group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q31.c new file mode 100644 index 000000000..6cbfa7f9d --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q31.c @@ -0,0 +1,303 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_fast_q31.c +* +* Description: Processing function for the Q31 Fast FIR filter. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.9 2010/08/27 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR + * @{ + */ + +/** + * @param[in] *S points to an instance of the Q31 structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block output data. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * + * \par + * This function is optimized for speed at the expense of fixed-point precision and overflow protection. + * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. + * These intermediate results are added to a 2.30 accumulator. + * Finally, the accumulator is saturated and converted to a 1.31 result. + * The fast version has the same overflow behavior as the standard version and provides less precision since it discards the low 32 bits of each multiplication result. + * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits. + * + * \par + * Refer to the function arm_fir_q31() for a slower implementation of this function which uses a 64-bit accumulator to provide higher precision. Both the slow and the fast versions use the same instance structure. + * Use the function arm_fir_init_q31() to initialize the filter structure. + */ + +void arm_fir_fast_q31( + const arm_fir_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t x0, x1, x2, x3; /* Temporary variables to hold state */ + q31_t c0; /* Temporary variable to hold coefficient value */ + q31_t *px; /* Temporary pointer for state */ + q31_t *pb; /* Temporary pointer for coefficient buffer */ + q63_t acc0, acc1, acc2, acc3; /* Accumulators */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i, tapCnt, blkCnt; /* Loop counters */ + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1u)]); + + /* Apply loop unrolling and compute 4 output values simultaneously. + * The variables acc0 ... acc3 hold output values that are being computed: + * + * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] + * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] + * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] + * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] + */ + blkCnt = blockSize >> 2; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* Copy four new input samples into the state buffer */ + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coefficient pointer */ + pb = pCoeffs; + + /* Read the first three samples from the state buffer: + * x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + i = tapCnt; + + while(i > 0u) + { + /* Read the b[numTaps] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-3] sample */ + x3 = *(px++); + + /* acc0 += b[numTaps] * x[n-numTaps] */ + acc0 = (q31_t) ((((q63_t) x0 * c0) + (acc0 << 32)) >> 32); + + /* acc1 += b[numTaps] * x[n-numTaps-1] */ + acc1 = (q31_t) ((((q63_t) x1 * c0) + (acc1 << 32)) >> 32); + + /* acc2 += b[numTaps] * x[n-numTaps-2] */ + acc2 = (q31_t) ((((q63_t) x2 * c0) + (acc2 << 32)) >> 32); + + /* acc3 += b[numTaps] * x[n-numTaps-3] */ + acc3 = (q31_t) ((((q63_t) x3 * c0) + (acc3 << 32)) >> 32); + + /* Read the b[numTaps-1] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 = (q31_t) ((((q63_t) x1 * c0) + (acc0 << 32)) >> 32); + acc1 = (q31_t) ((((q63_t) x2 * c0) + (acc1 << 32)) >> 32); + acc2 = (q31_t) ((((q63_t) x3 * c0) + (acc2 << 32)) >> 32); + acc3 = (q31_t) ((((q63_t) x0 * c0) + (acc3 << 32)) >> 32); + + /* Read the b[numTaps-2] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-5] sample */ + x1 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 = (q31_t) ((((q63_t) x2 * c0) + (acc0 << 32)) >> 32); + acc1 = (q31_t) ((((q63_t) x3 * c0) + (acc1 << 32)) >> 32); + acc2 = (q31_t) ((((q63_t) x0 * c0) + (acc2 << 32)) >> 32); + acc3 = (q31_t) ((((q63_t) x1 * c0) + (acc3 << 32)) >> 32); + + /* Read the b[numTaps-3] coefficients */ + c0 = *(pb++); + + /* Read x[n-numTaps-6] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 = (q31_t) ((((q63_t) x3 * c0) + (acc0 << 32)) >> 32); + acc1 = (q31_t) ((((q63_t) x0 * c0) + (acc1 << 32)) >> 32); + acc2 = (q31_t) ((((q63_t) x1 * c0) + (acc2 << 32)) >> 32); + acc3 = (q31_t) ((((q63_t) x2 * c0) + (acc3 << 32)) >> 32); + i--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + + i = numTaps - (tapCnt * 4u); + while(i > 0u) + { + /* Read coefficients */ + c0 = *(pb++); + + /* Fetch 1 state variable */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 = (q31_t) ((((q63_t) x0 * c0) + (acc0 << 32)) >> 32); + acc1 = (q31_t) ((((q63_t) x1 * c0) + (acc1 << 32)) >> 32); + acc2 = (q31_t) ((((q63_t) x2 * c0) + (acc2 << 32)) >> 32); + acc3 = (q31_t) ((((q63_t) x3 * c0) + (acc3 << 32)) >> 32); + + /* Reuse the present sample states for next sample */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 4 to process the next group of 4 samples */ + pState = pState + 4; + + /* The results in the 4 accumulators are in 2.30 format. Convert to 1.31 + ** Then store the 4 outputs in the destination buffer. */ + *pDst++ = (q31_t) (acc0 << 1); + *pDst++ = (q31_t) (acc1 << 1); + *pDst++ = (q31_t) (acc2 << 1); + *pDst++ = (q31_t) (acc3 << 1); + + /* Decrement the samples loop counter */ + blkCnt--; + } + + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 4u; + + while(blkCnt > 0u) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize Coefficient pointer */ + pb = (pCoeffs); + + i = numTaps; + + /* Perform the multiply-accumulates */ + do + { + acc0 = (q31_t) ((((q63_t) * (px++) * (*(pb++))) + (acc0 << 32)) >> 32); + i--; + } while(i > 0u); + + /* The result is in 2.30 format. Convert to 1.31 + ** Then store the output in the destination buffer. */ + *pDst++ = (q31_t) (acc0 << 1); + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the samples loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + tapCnt = (numTaps - 1u) >> 2u; + + /* copy data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calculate remaining number of copies */ + tapCnt = (numTaps - 1u) % 0x4u; + + /* Copy the remaining q31_t data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +} + +/** + * @} end of FIR group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_f32.c new file mode 100644 index 000000000..100d4ac34 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_f32.c @@ -0,0 +1,91 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_init_f32.c +* +* Description: Floating-point FIR filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR + * @{ + */ + +/** + * @details + * + * @param[in,out] *S points to an instance of the floating-point FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficients buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of samples that are processed per call. + * @return none. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ * 
+ * \par + * pState points to the array of state variables. + * pState is of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_fir_f32(). + */ + +void arm_fir_init_f32( + arm_fir_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and the size of state buffer is (blockSize + numTaps - 1) */ + memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q15.c new file mode 100644 index 000000000..9d01aa13a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q15.c @@ -0,0 +1,149 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_init_q15.c +* +* Description: Q15 FIR filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* ------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR + * @{ + */ + +/** + * @param[in,out] *S points to an instance of the Q15 FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. Must be even and greater than or equal to 4. + * @param[in] *pCoeffs points to the filter coefficients buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize is number of samples processed per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if + * numTaps is not greater than or equal to 4 and even. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ * 
+ * Note that numTaps must be even and greater than or equal to 4. + * To implement an odd length filter simply increase numTaps by 1 and set the last coefficient to zero. + * For example, to implement a filter with numTaps=3 and coefficients + *
   
+ *     {0.3, -0.8, 0.3}   
+ * 
+ * set numTaps=4 and use the coefficients: + *
   
+ *     {0.3, -0.8, 0.3, 0}.   
+ * 
+ * Similarly, to implement a two point filter + *
   
+ *     {0.3, -0.3}   
+ * 
+ * set numTaps=4 and use the coefficients: + *
   
+ *     {0.3, -0.3, 0, 0}.   
+ * 
+ * \par + * pState points to the array of state variables. + * pState is of length numTaps+blockSize-1, where blockSize is the number of input samples processed by each call to arm_fir_q15(). + */ + +arm_status arm_fir_init_q15( + arm_fir_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize) +{ + arm_status status; + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* The Number of filter coefficients in the filter must be even and at least 4 */ + if((numTaps < 4u) || (numTaps & 0x1u)) + { + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear the state buffer. The size is always (blockSize + numTaps - 1) */ + memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(q15_t)); + + /* Assign state pointer */ + S->pState = pState; + + status = ARM_MATH_SUCCESS; + } + + return (status); + +#else + + /* Run the below code for Cortex-M0 */ + + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear the state buffer. The size is always (blockSize + numTaps - 1) */ + memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(q15_t)); + + /* Assign state pointer */ + S->pState = pState; + + status = ARM_MATH_SUCCESS; + + return (status); + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of FIR group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q31.c new file mode 100644 index 000000000..19762289e --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q31.c @@ -0,0 +1,91 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_init_q31.c +* +* Description: Q31 FIR filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR + * @{ + */ + +/** + * @details + * + * @param[in,out] *S points to an instance of the Q31 FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficients buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of samples that are processed per call. + * @return none. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ * 
+ * \par + * pState points to the array of state variables. + * pState is of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_fir_q31(). + */ + +void arm_fir_init_q31( + arm_fir_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and state array size is (blockSize + numTaps - 1) */ + memset(pState, 0, (blockSize + ((uint32_t) numTaps - 1u)) * sizeof(q31_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q7.c new file mode 100644 index 000000000..33b80a6dd --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q7.c @@ -0,0 +1,89 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_init_q7.c +* +* Description: Q7 FIR filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* ------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR + * @{ + */ +/** + * @param[in,out] *S points to an instance of the Q7 FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficients buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of samples that are processed per call. + * @return none + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ * 
+ * \par + * pState points to the array of state variables. + * pState is of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_fir_q7(). + */ + +void arm_fir_init_q7( + arm_fir_instance_q7 * S, + uint16_t numTaps, + q7_t * pCoeffs, + q7_t * pState, + uint32_t blockSize) +{ + + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear the state buffer. The size is always (blockSize + numTaps - 1) */ + memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(q7_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_f32.c new file mode 100644 index 000000000..abee5bfba --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_f32.c @@ -0,0 +1,399 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_interpolate_f32.c +* +* Description: FIR interpolation for floating-point sequences. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @defgroup FIR_Interpolate Finite Impulse Response (FIR) Interpolator + * + * These functions combine an upsampler (zero stuffer) and an FIR filter. + * They are used in multirate systems for increasing the sample rate of a signal without introducing high frequency images. + * Conceptually, the functions are equivalent to the block diagram below: + * \image html FIRInterpolator.gif "Components included in the FIR Interpolator functions" + * After upsampling by a factor of L, the signal should be filtered by a lowpass filter with a normalized + * cutoff frequency of 1/L in order to eliminate high frequency copies of the spectrum. + * The user of the function is responsible for providing the filter coefficients. + * + * The FIR interpolator functions provided in the CMSIS DSP Library combine the upsampler and FIR filter in an efficient manner. + * The upsampler inserts L-1 zeros between each sample. + * Instead of multiplying by these zero values, the FIR filter is designed to skip them. + * This leads to an efficient implementation without any wasted effort. + * The functions operate on blocks of input and output data. + * pSrc points to an array of blockSize input values and + * pDst points to an array of blockSize*L output values. + * + * The library provides separate functions for Q15, Q31, and floating-point data types. + * + * \par Algorithm: + * The functions use a polyphase filter structure: + *
   
+ *    y[n] = b[0] * x[n] + b[L]   * x[n-1] + ... + b[L*(phaseLength-1)] * x[n-phaseLength+1]   
+ *    y[n+1] = b[1] * x[n] + b[L+1] * x[n-1] + ... + b[L*(phaseLength-1)+1] * x[n-phaseLength+1]   
+ *    ...   
+ *    y[n+(L-1)] = b[L-1] * x[n] + b[2*L-1] * x[n-1] + ....+ b[L*(phaseLength-1)+(L-1)] * x[n-phaseLength+1]   
+ * 
+ * This approach is more efficient than straightforward upsample-then-filter algorithms. + * With this method the computation is reduced by a factor of 1/L when compared to using a standard FIR filter. + * \par + * pCoeffs points to a coefficient array of size numTaps. + * numTaps must be a multiple of the interpolation factor L and this is checked by the + * initialization functions. + * Internally, the function divides the FIR filter's impulse response into shorter filters of length + * phaseLength=numTaps/L. + * Coefficients are stored in time reversed order. + * \par + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ * 
+ * \par + * pState points to a state array of size blockSize + phaseLength - 1. + * Samples in the state buffer are stored in the order: + * \par + *
   
+ *    {x[n-phaseLength+1], x[n-phaseLength], x[n-phaseLength-1], x[n-phaseLength-2]....x[0], x[1], ..., x[blockSize-1]}   
+ * 
+ * The state variables are updated after each block of data is processed, the coefficients are untouched. + * + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter. + * Coefficient arrays may be shared among several instances while state variable array should be allocated separately. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * - Checks to make sure that the length of the filter is a multiple of the interpolation factor. + * + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * The code below statically initializes each of the 3 different data type filter instance structures + *
   
+ * arm_fir_interpolate_instance_f32 S = {L, phaseLength, pCoeffs, pState};   
+ * arm_fir_interpolate_instance_q31 S = {L, phaseLength, pCoeffs, pState};   
+ * arm_fir_interpolate_instance_q15 S = {L, phaseLength, pCoeffs, pState};   
+ * 
+ * where L is the interpolation factor; phaseLength=numTaps/L is the + * length of each of the shorter FIR filters used internally, + * pCoeffs is the address of the coefficient buffer; + * pState is the address of the state buffer. + * Be sure to set the values in the state buffer to zeros when doing static initialization. + * + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the FIR interpolate filter functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + +/** + * @addtogroup FIR_Interpolate + * @{ + */ + +/** + * @brief Processing function for the floating-point FIR interpolator. + * @param[in] *S points to an instance of the floating-point FIR interpolator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ + +void arm_fir_interpolate_f32( + const arm_fir_interpolate_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *pStateCurnt; /* Points to the current sample of the state */ + float32_t *ptr1, *ptr2; /* Temporary pointers for state and coefficient buffers */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float32_t sum0; /* Accumulators */ + float32_t x0, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t i, blkCnt, j; /* Loop counters */ + uint16_t phaseLen = S->phaseLength, tapCnt; /* Length of each polyphase filter component */ + + + /* S->pState buffer contains previous frame (phaseLen - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (phaseLen - 1u); + + /* Total number of intput samples */ + blkCnt = blockSize; + + /* Loop over the blockSize. */ + while(blkCnt > 0u) + { + /* Copy new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Address modifier index of coefficient buffer */ + j = 1u; + + /* Loop over the Interpolation factor. */ + i = S->L; + while(i > 0u) + { + /* Set accumulator to zero */ + sum0 = 0.0f; + + /* Initialize state pointer */ + ptr1 = pState; + + /* Initialize coefficient pointer */ + ptr2 = pCoeffs + (S->L - j); + + /* Loop over the polyPhase length. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-(4*S->L) coefficients. */ + tapCnt = phaseLen >> 2u; + while(tapCnt > 0u) + { + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Upsampling is done by stuffing L-1 zeros between each sample. + * So instead of multiplying zeros with coefficients, + * Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = phaseLen % 0x4u; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + sum0 += *(ptr1++) * (*ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = sum0; + + /* Increment the address modifier index of coefficient buffer */ + j++; + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 1 + * to process the next group of interpolation factor number samples */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last phaseLen - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + tapCnt = (phaseLen - 1u) >> 2u; + + /* copy data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + tapCnt = (phaseLen - 1u) % 0x04u; + + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + float32_t sum; /* Accumulator */ + uint32_t i, blkCnt; /* Loop counters */ + uint16_t phaseLen = S->phaseLength, tapCnt; /* Length of each polyphase filter component */ + + + /* S->pState buffer contains previous frame (phaseLen - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (phaseLen - 1u); + + /* Total number of intput samples */ + blkCnt = blockSize; + + /* Loop over the blockSize. */ + while(blkCnt > 0u) + { + /* Copy new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Loop over the Interpolation factor. */ + i = S->L; + + while(i > 0u) + { + /* Set accumulator to zero */ + sum = 0.0f; + + /* Initialize state pointer */ + ptr1 = pState; + + /* Initialize coefficient pointer */ + ptr2 = pCoeffs + (i - 1u); + + /* Loop over the polyPhase length */ + tapCnt = phaseLen; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + sum += *ptr1++ * *ptr2; + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = sum; + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 1 + * to process the next group of interpolation factor number samples */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last phaseLen - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + tapCnt = phaseLen - 1u; + + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + + /** + * @} end of FIR_Interpolate group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c new file mode 100644 index 000000000..59802b24d --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c @@ -0,0 +1,113 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_interpolate_init_f32.c +* +* Description: Floating-point FIR interpolator initialization function +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Interpolate + * @{ + */ + +/** + * @brief Initialization function for the floating-point FIR interpolator. + * @param[in,out] *S points to an instance of the floating-point FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficient buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[numTaps-2], ..., b[1], b[0]}   
+ * 
+ * The length of the filter numTaps must be a multiple of the interpolation factor L. + * \par + * pState points to the array of state variables. + * pState is of length (numTaps/L)+blockSize-1 words + * where blockSize is the number of input samples processed by each call to arm_fir_interpolate_f32(). + */ + +arm_status arm_fir_interpolate_init_f32( + arm_fir_interpolate_instance_f32 * S, + uint8_t L, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize) +{ + arm_status status; + + /* The filter length must be a multiple of the interpolation factor */ + if((numTaps % L) != 0u) + { + /* Set status as ARM_MATH_LENGTH_ERROR */ + status = ARM_MATH_LENGTH_ERROR; + } + else + { + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Assign Interpolation factor */ + S->L = L; + + /* Assign polyPhaseLength */ + S->phaseLength = numTaps / L; + + /* Clear state buffer and size of state array is always phaseLength + blockSize - 1 */ + memset(pState, 0, + (blockSize + + ((uint32_t) S->phaseLength - 1u)) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; + + status = ARM_MATH_SUCCESS; + } + + return (status); + +} + + /** + * @} end of FIR_Interpolate group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c new file mode 100644 index 000000000..0ab6e6bc5 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c @@ -0,0 +1,112 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_interpolate_init_q15.c +* +* Description: Q15 FIR interpolator initialization function +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Interpolate + * @{ + */ + +/** + * @brief Initialization function for the Q15 FIR interpolator. + * @param[in,out] *S points to an instance of the Q15 FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficient buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[numTaps-2], ..., b[1], b[0]}   
+ * 
+ * The length of the filter numTaps must be a multiple of the interpolation factor L. + * \par + * pState points to the array of state variables. + * pState is of length (numTaps/L)+blockSize-1 words + * where blockSize is the number of input samples processed by each call to arm_fir_interpolate_q15(). + */ + +arm_status arm_fir_interpolate_init_q15( + arm_fir_interpolate_instance_q15 * S, + uint8_t L, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize) +{ + arm_status status; + + /* The filter length must be a multiple of the interpolation factor */ + if((numTaps % L) != 0u) + { + /* Set status as ARM_MATH_LENGTH_ERROR */ + status = ARM_MATH_LENGTH_ERROR; + } + else + { + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Assign Interpolation factor */ + S->L = L; + + /* Assign polyPhaseLength */ + S->phaseLength = numTaps / L; + + /* Clear state buffer and size of buffer is always phaseLength + blockSize - 1 */ + memset(pState, 0, + (blockSize + ((uint32_t) S->phaseLength - 1u)) * sizeof(q15_t)); + + /* Assign state pointer */ + S->pState = pState; + + status = ARM_MATH_SUCCESS; + } + + return (status); + +} + + /** + * @} end of FIR_Interpolate group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c new file mode 100644 index 000000000..92906c11e --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c @@ -0,0 +1,113 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_interpolate_init_q31.c +* +* Description: Q31 FIR interpolator initialization function +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Interpolate + * @{ + */ + + +/** + * @brief Initialization function for the Q31 FIR interpolator. + * @param[in,out] *S points to an instance of the Q31 FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficient buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[numTaps-2], ..., b[1], b[0]}   
+ * 
+ * The length of the filter numTaps must be a multiple of the interpolation factor L. + * \par + * pState points to the array of state variables. + * pState is of length (numTaps/L)+blockSize-1 words + * where blockSize is the number of input samples processed by each call to arm_fir_interpolate_q31(). + */ + +arm_status arm_fir_interpolate_init_q31( + arm_fir_interpolate_instance_q31 * S, + uint8_t L, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize) +{ + arm_status status; + + /* The filter length must be a multiple of the interpolation factor */ + if((numTaps % L) != 0u) + { + /* Set status as ARM_MATH_LENGTH_ERROR */ + status = ARM_MATH_LENGTH_ERROR; + } + else + { + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Assign Interpolation factor */ + S->L = L; + + /* Assign polyPhaseLength */ + S->phaseLength = numTaps / L; + + /* Clear state buffer and size of buffer is always phaseLength + blockSize - 1 */ + memset(pState, 0, + (blockSize + ((uint32_t) S->phaseLength - 1u)) * sizeof(q31_t)); + + /* Assign state pointer */ + S->pState = pState; + + status = ARM_MATH_SUCCESS; + } + + return (status); + +} + + /** + * @} end of FIR_Interpolate group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q15.c new file mode 100644 index 000000000..56dddcc17 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q15.c @@ -0,0 +1,349 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_interpolate_q15.c +* +* Description: Q15 FIR interpolation. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Interpolate + * @{ + */ + +/** + * @brief Processing function for the Q15 FIR interpolator. + * @param[in] *S points to an instance of the Q15 FIR interpolator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. + * Lastly, the accumulator is saturated to yield a result in 1.15 format. + */ + +void arm_fir_interpolate_q15( + const arm_fir_interpolate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t *ptr1, *ptr2; /* Temporary pointers for state and coefficient buffers */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q63_t sum0; /* Accumulators */ + q15_t x0, c0, c1; /* Temporary variables to hold state and coefficient values */ + q31_t c, x; + uint32_t i, blkCnt, j, tapCnt; /* Loop counters */ + uint16_t phaseLen = S->phaseLength; /* Length of each polyphase filter component */ + + + /* S->pState buffer contains previous frame (phaseLen - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (phaseLen - 1u); + + /* Total number of intput samples */ + blkCnt = blockSize; + + /* Loop over the blockSize. */ + while(blkCnt > 0u) + { + /* Copy new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Address modifier index of coefficient buffer */ + j = 1u; + + /* Loop over the Interpolation factor. */ + i = S->L; + while(i > 0u) + { + /* Set accumulator to zero */ + sum0 = 0; + + /* Initialize state pointer */ + ptr1 = pState; + + /* Initialize coefficient pointer */ + ptr2 = pCoeffs + (S->L - j); + + /* Loop over the polyPhase length. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-(4*S->L) coefficients. */ + tapCnt = (uint32_t) phaseLen >> 2u; + while(tapCnt > 0u) + { + /* Read the coefficient */ + c0 = *(ptr2); + + /* Upsampling is done by stuffing L-1 zeros between each sample. + * So instead of multiplying zeros with coefficients, + * Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the coefficient */ + c1 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Pack the coefficients */ +#ifndef ARM_MATH_BIG_ENDIAN + + c = __PKHBT(c0, c1, 16); + +#else + + c = __PKHBT(c1, c0, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Read twp consecutive input samples */ + x = *__SIMD32(ptr1)++; + + /* Perform the multiply-accumulate */ + sum0 = __SMLALD(x, c, sum0); + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Upsampling is done by stuffing L-1 zeros between each sample. + * So insted of multiplying zeros with coefficients, + * Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the coefficient */ + c1 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Pack the coefficients */ +#ifndef ARM_MATH_BIG_ENDIAN + + c = __PKHBT(c0, c1, 16); + +#else + + c = __PKHBT(c1, c0, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Read twp consecutive input samples */ + x = *__SIMD32(ptr1)++; + + /* Perform the multiply-accumulate */ + sum0 = __SMLALD(x, c, sum0); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = (uint32_t) phaseLen & 0x3u; + + while(tapCnt > 0u) + { + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 = __SMLALD(x0, c0, sum0); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16)); + + /* Increment the address modifier index of coefficient buffer */ + j++; + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 1 + * to process the next group of interpolation factor number samples */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last phaseLen - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = ((uint32_t) phaseLen - 1u) >> 2u; + + /* copy data */ + while(i > 0u) + { + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + + /* Decrement the loop counter */ + i--; + } + + i = ((uint32_t) phaseLen - 1u) % 0x04u; + + while(i > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + q63_t sum; /* Accumulator */ + q15_t x0, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t i, blkCnt, tapCnt; /* Loop counters */ + uint16_t phaseLen = S->phaseLength; /* Length of each polyphase filter component */ + + + /* S->pState buffer contains previous frame (phaseLen - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (phaseLen - 1u); + + /* Total number of intput samples */ + blkCnt = blockSize; + + /* Loop over the blockSize. */ + while(blkCnt > 0u) + { + /* Copy new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Loop over the Interpolation factor. */ + i = S->L; + + while(i > 0u) + { + /* Set accumulator to zero */ + sum = 0; + + /* Initialize state pointer */ + ptr1 = pState; + + /* Initialize coefficient pointer */ + ptr2 = pCoeffs + (i - 1u); + + /* Loop over the polyPhase length */ + tapCnt = (uint32_t) phaseLen; + + while(tapCnt > 0u) + { + /* Read the coefficient */ + c0 = *ptr2; + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *ptr1++; + + /* Perform the multiply-accumulate */ + sum += ((q31_t) x0 * c0); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Store the result after converting to 1.15 format in the destination buffer */ + *pDst++ = (q15_t) (__SSAT((sum >> 15), 16)); + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 1 + * to process the next group of interpolation factor number samples */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last phaseLen - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = (uint32_t) phaseLen - 1u; + + while(i > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + + /** + * @} end of FIR_Interpolate group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q31.c new file mode 100644 index 000000000..660b7dd5b --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q31.c @@ -0,0 +1,340 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_interpolate_q31.c +* +* Description: Q31 FIR interpolation. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Interpolate + * @{ + */ + +/** + * @brief Processing function for the Q31 FIR interpolator. + * @param[in] *S points to an instance of the Q31 FIR interpolator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around rather than clip. + * In order to avoid overflows completely the input signal must be scaled down by 1/(numTaps/L). + * since numTaps/L additions occur per output sample. + * After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format. + */ + + +void arm_fir_interpolate_q31( + const arm_fir_interpolate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t *ptr1, *ptr2; /* Temporary pointers for state and coefficient buffers */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q63_t sum0; /* Accumulators */ + q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t i, blkCnt, j; /* Loop counters */ + uint16_t phaseLen = S->phaseLength, tapCnt; /* Length of each polyphase filter component */ + + + /* S->pState buffer contains previous frame (phaseLen - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + ((q31_t) phaseLen - 1); + + /* Total number of intput samples */ + blkCnt = blockSize; + + /* Loop over the blockSize. */ + while(blkCnt > 0u) + { + /* Copy new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Address modifier index of coefficient buffer */ + j = 1u; + + /* Loop over the Interpolation factor. */ + i = S->L; + while(i > 0u) + { + /* Set accumulator to zero */ + sum0 = 0; + + /* Initialize state pointer */ + ptr1 = pState; + + /* Initialize coefficient pointer */ + ptr2 = pCoeffs + (S->L - j); + + /* Loop over the polyPhase length. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-(4*S->L) coefficients. */ + tapCnt = phaseLen >> 2; + while(tapCnt > 0u) + { + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Upsampling is done by stuffing L-1 zeros between each sample. + * So instead of multiplying zeros with coefficients, + * Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = phaseLen & 0x3u; + + while(tapCnt > 0u) + { + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = (q31_t) (sum0 >> 31); + + /* Increment the address modifier index of coefficient buffer */ + j++; + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 1 + * to process the next group of interpolation factor number samples */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last phaseLen - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + tapCnt = (phaseLen - 1u) >> 2u; + + /* copy data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + tapCnt = (phaseLen - 1u) % 0x04u; + + /* copy data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + q63_t sum; /* Accumulator */ + q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t i, blkCnt; /* Loop counters */ + uint16_t phaseLen = S->phaseLength, tapCnt; /* Length of each polyphase filter component */ + + + /* S->pState buffer contains previous frame (phaseLen - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + ((q31_t) phaseLen - 1); + + /* Total number of intput samples */ + blkCnt = blockSize; + + /* Loop over the blockSize. */ + while(blkCnt > 0u) + { + /* Copy new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Loop over the Interpolation factor. */ + i = S->L; + + while(i > 0u) + { + /* Set accumulator to zero */ + sum = 0; + + /* Initialize state pointer */ + ptr1 = pState; + + /* Initialize coefficient pointer */ + ptr2 = pCoeffs + (i - 1u); + + tapCnt = phaseLen; + + while(tapCnt > 0u) + { + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *ptr1++; + + /* Perform the multiply-accumulate */ + sum += (q63_t) x0 *c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = (q31_t) (sum >> 31); + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 1 + * to process the next group of interpolation factor number samples */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last phaseLen - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + tapCnt = phaseLen - 1u; + + /* copy data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + + /** + * @} end of FIR_Interpolate group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_f32.c new file mode 100644 index 000000000..4192992f9 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_f32.c @@ -0,0 +1,496 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_lattice_f32.c +* +* Description: Processing function for the floating-point FIR Lattice filter. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup FIR_Lattice Finite Impulse Response (FIR) Lattice Filters + * + * This set of functions implements Finite Impulse Response (FIR) lattice filters + * for Q15, Q31 and floating-point data types. Lattice filters are used in a + * variety of adaptive filter applications. The filter structure is feedforward and + * the net impulse response is finite length. + * The functions operate on blocks + * of input and output data and each call to the function processes + * blockSize samples through the filter. pSrc and + * pDst point to input and output arrays containing blockSize values. + * + * \par Algorithm: + * \image html FIRLattice.gif "Finite Impulse Response Lattice filter" + * The following difference equation is implemented: + *
   
+ *    f0[n] = g0[n] = x[n]   
+ *    fm[n] = fm-1[n] + km * gm-1[n-1] for m = 1, 2, ...M   
+ *    gm[n] = km * fm-1[n] + gm-1[n-1] for m = 1, 2, ...M   
+ *    y[n] = fM[n]   
+ * 
+ * \par + * pCoeffs points to tha array of reflection coefficients of size numStages. + * Reflection Coefficients are stored in the following order. + * \par + *
   
+ *    {k1, k2, ..., kM}   
+ * 
+ * where M is number of stages + * \par + * pState points to a state array of size numStages. + * The state variables (g values) hold previous inputs and are stored in the following order. + *
   
+ *    {g0[n], g1[n], g2[n] ...gM-1[n]}   
+ * 
+ * The state variables are updated after each block of data is processed; the coefficients are untouched. + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter. + * Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * Set the values in the state buffer to zeros and then manually initialize the instance structure as follows: + *
   
+ *arm_fir_lattice_instance_f32 S = {numStages, pState, pCoeffs};   
+ *arm_fir_lattice_instance_q31 S = {numStages, pState, pCoeffs};   
+ *arm_fir_lattice_instance_q15 S = {numStages, pState, pCoeffs};   
+ * 
+ * \par + * where numStages is the number of stages in the filter; pState is the address of the state buffer; + * pCoeffs is the address of the coefficient buffer. + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the FIR Lattice filter functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + +/** + * @addtogroup FIR_Lattice + * @{ + */ + + + /** + * @brief Processing function for the floating-point FIR lattice filter. + * @param[in] *S points to an instance of the floating-point FIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of samples to process. + * @return none. + */ + +void arm_fir_lattice_f32( + const arm_fir_lattice_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + float32_t *pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *px; /* temporary state pointer */ + float32_t *pk; /* temporary coefficient pointer */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float32_t fcurr1, fnext1, gcurr1, gnext1; /* temporary variables for first sample in loop unrolling */ + float32_t fcurr2, fnext2, gnext2; /* temporary variables for second sample in loop unrolling */ + float32_t fcurr3, fnext3, gnext3; /* temporary variables for third sample in loop unrolling */ + float32_t fcurr4, fnext4, gnext4; /* temporary variables for fourth sample in loop unrolling */ + uint32_t numStages = S->numStages; /* Number of stages in the filter */ + uint32_t blkCnt, stageCnt; /* temporary variables for counts */ + + gcurr1 = 0.0f; + pState = &S->pState[0]; + + blkCnt = blockSize >> 2; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + + /* Read two samples from input buffer */ + /* f0(n) = x(n) */ + fcurr1 = *pSrc++; + fcurr2 = *pSrc++; + + /* Initialize coeff pointer */ + pk = (pCoeffs); + + /* Initialize state pointer */ + px = pState; + + /* Read g0(n-1) from state */ + gcurr1 = *px; + + /* Process first sample for first tap */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext1 = fcurr1 + ((*pk) * gcurr1); + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext1 = (fcurr1 * (*pk)) + gcurr1; + + /* Process second sample for first tap */ + /* for sample 2 processing */ + fnext2 = fcurr2 + ((*pk) * fcurr1); + gnext2 = (fcurr2 * (*pk)) + fcurr1; + + /* Read next two samples from input buffer */ + /* f0(n+2) = x(n+2) */ + fcurr3 = *pSrc++; + fcurr4 = *pSrc++; + + /* Copy only last input samples into the state buffer + which will be used for next four samples processing */ + *px++ = fcurr4; + + /* Process third sample for first tap */ + fnext3 = fcurr3 + ((*pk) * fcurr2); + gnext3 = (fcurr3 * (*pk)) + fcurr2; + + /* Process fourth sample for first tap */ + fnext4 = fcurr4 + ((*pk) * fcurr3); + gnext4 = (fcurr4 * (*pk++)) + fcurr3; + + /* Update of f values for next coefficient set processing */ + fcurr1 = fnext1; + fcurr2 = fnext2; + fcurr3 = fnext3; + fcurr4 = fnext4; + + /* Loop unrolling. Process 4 taps at a time . */ + stageCnt = (numStages - 1u) >> 2u; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numStages-3 coefficients. */ + + /* Process 2nd, 3rd, 4th and 5th taps ... here */ + while(stageCnt > 0u) + { + /* Read g1(n-1), g3(n-1) .... from state */ + gcurr1 = *px; + + /* save g1(n) in state buffer */ + *px++ = gnext4; + + /* Process first sample for 2nd, 6th .. tap */ + /* Sample processing for K2, K6.... */ + /* f2(n) = f1(n) + K2 * g1(n-1) */ + fnext1 = fcurr1 + ((*pk) * gcurr1); + /* Process second sample for 2nd, 6th .. tap */ + /* for sample 2 processing */ + fnext2 = fcurr2 + ((*pk) * gnext1); + /* Process third sample for 2nd, 6th .. tap */ + fnext3 = fcurr3 + ((*pk) * gnext2); + /* Process fourth sample for 2nd, 6th .. tap */ + fnext4 = fcurr4 + ((*pk) * gnext3); + + /* g2(n) = f1(n) * K2 + g1(n-1) */ + /* Calculation of state values for next stage */ + gnext4 = (fcurr4 * (*pk)) + gnext3; + gnext3 = (fcurr3 * (*pk)) + gnext2; + gnext2 = (fcurr2 * (*pk)) + gnext1; + gnext1 = (fcurr1 * (*pk++)) + gcurr1; + + + /* Read g2(n-1), g4(n-1) .... from state */ + gcurr1 = *px; + + /* save g2(n) in state buffer */ + *px++ = gnext4; + + /* Sample processing for K3, K7.... */ + /* Process first sample for 3rd, 7th .. tap */ + /* f3(n) = f2(n) + K3 * g2(n-1) */ + fcurr1 = fnext1 + ((*pk) * gcurr1); + /* Process second sample for 3rd, 7th .. tap */ + fcurr2 = fnext2 + ((*pk) * gnext1); + /* Process third sample for 3rd, 7th .. tap */ + fcurr3 = fnext3 + ((*pk) * gnext2); + /* Process fourth sample for 3rd, 7th .. tap */ + fcurr4 = fnext4 + ((*pk) * gnext3); + + /* Calculation of state values for next stage */ + /* g3(n) = f2(n) * K3 + g2(n-1) */ + gnext4 = (fnext4 * (*pk)) + gnext3; + gnext3 = (fnext3 * (*pk)) + gnext2; + gnext2 = (fnext2 * (*pk)) + gnext1; + gnext1 = (fnext1 * (*pk++)) + gcurr1; + + + /* Read g1(n-1), g3(n-1) .... from state */ + gcurr1 = *px; + + /* save g3(n) in state buffer */ + *px++ = gnext4; + + /* Sample processing for K4, K8.... */ + /* Process first sample for 4th, 8th .. tap */ + /* f4(n) = f3(n) + K4 * g3(n-1) */ + fnext1 = fcurr1 + ((*pk) * gcurr1); + /* Process second sample for 4th, 8th .. tap */ + /* for sample 2 processing */ + fnext2 = fcurr2 + ((*pk) * gnext1); + /* Process third sample for 4th, 8th .. tap */ + fnext3 = fcurr3 + ((*pk) * gnext2); + /* Process fourth sample for 4th, 8th .. tap */ + fnext4 = fcurr4 + ((*pk) * gnext3); + + /* g4(n) = f3(n) * K4 + g3(n-1) */ + /* Calculation of state values for next stage */ + gnext4 = (fcurr4 * (*pk)) + gnext3; + gnext3 = (fcurr3 * (*pk)) + gnext2; + gnext2 = (fcurr2 * (*pk)) + gnext1; + gnext1 = (fcurr1 * (*pk++)) + gcurr1; + + /* Read g2(n-1), g4(n-1) .... from state */ + gcurr1 = *px; + + /* save g4(n) in state buffer */ + *px++ = gnext4; + + /* Sample processing for K5, K9.... */ + /* Process first sample for 5th, 9th .. tap */ + /* f5(n) = f4(n) + K5 * g4(n-1) */ + fcurr1 = fnext1 + ((*pk) * gcurr1); + /* Process second sample for 5th, 9th .. tap */ + fcurr2 = fnext2 + ((*pk) * gnext1); + /* Process third sample for 5th, 9th .. tap */ + fcurr3 = fnext3 + ((*pk) * gnext2); + /* Process fourth sample for 5th, 9th .. tap */ + fcurr4 = fnext4 + ((*pk) * gnext3); + + /* Calculation of state values for next stage */ + /* g5(n) = f4(n) * K5 + g4(n-1) */ + gnext4 = (fnext4 * (*pk)) + gnext3; + gnext3 = (fnext3 * (*pk)) + gnext2; + gnext2 = (fnext2 * (*pk)) + gnext1; + gnext1 = (fnext1 * (*pk++)) + gcurr1; + + stageCnt--; + } + + /* If the (filter length -1) is not a multiple of 4, compute the remaining filter taps */ + stageCnt = (numStages - 1u) % 0x4u; + + while(stageCnt > 0u) + { + gcurr1 = *px; + + /* save g value in state buffer */ + *px++ = gnext4; + + /* Process four samples for last three taps here */ + fnext1 = fcurr1 + ((*pk) * gcurr1); + fnext2 = fcurr2 + ((*pk) * gnext1); + fnext3 = fcurr3 + ((*pk) * gnext2); + fnext4 = fcurr4 + ((*pk) * gnext3); + + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext4 = (fcurr4 * (*pk)) + gnext3; + gnext3 = (fcurr3 * (*pk)) + gnext2; + gnext2 = (fcurr2 * (*pk)) + gnext1; + gnext1 = (fcurr1 * (*pk++)) + gcurr1; + + /* Update of f values for next coefficient set processing */ + fcurr1 = fnext1; + fcurr2 = fnext2; + fcurr3 = fnext3; + fcurr4 = fnext4; + + stageCnt--; + + } + + /* The results in the 4 accumulators, store in the destination buffer. */ + /* y(n) = fN(n) */ + *pDst++ = fcurr1; + *pDst++ = fcurr2; + *pDst++ = fcurr3; + *pDst++ = fcurr4; + + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* f0(n) = x(n) */ + fcurr1 = *pSrc++; + + /* Initialize coeff pointer */ + pk = (pCoeffs); + + /* Initialize state pointer */ + px = pState; + + /* read g2(n) from state buffer */ + gcurr1 = *px; + + /* for sample 1 processing */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext1 = fcurr1 + ((*pk) * gcurr1); + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext1 = (fcurr1 * (*pk++)) + gcurr1; + + /* save g1(n) in state buffer */ + *px++ = fcurr1; + + /* f1(n) is saved in fcurr1 + for next stage processing */ + fcurr1 = fnext1; + + stageCnt = (numStages - 1u); + + /* stage loop */ + while(stageCnt > 0u) + { + /* read g2(n) from state buffer */ + gcurr1 = *px; + + /* save g1(n) in state buffer */ + *px++ = gnext1; + + /* Sample processing for K2, K3.... */ + /* f2(n) = f1(n) + K2 * g1(n-1) */ + fnext1 = fcurr1 + ((*pk) * gcurr1); + /* g2(n) = f1(n) * K2 + g1(n-1) */ + gnext1 = (fcurr1 * (*pk++)) + gcurr1; + + /* f1(n) is saved in fcurr1 + for next stage processing */ + fcurr1 = fnext1; + + stageCnt--; + + } + + /* y(n) = fN(n) */ + *pDst++ = fcurr1; + + blkCnt--; + + } + +#else + + /* Run the below code for Cortex-M0 */ + + float32_t fcurr, fnext, gcurr, gnext; /* temporary variables */ + uint32_t numStages = S->numStages; /* Length of the filter */ + uint32_t blkCnt, stageCnt; /* temporary variables for counts */ + + pState = &S->pState[0]; + + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* f0(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize coeff pointer */ + pk = pCoeffs; + + /* Initialize state pointer */ + px = pState; + + /* read g0(n-1) from state buffer */ + gcurr = *px; + + /* for sample 1 processing */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext = fcurr + ((*pk) * gcurr); + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext = (fcurr * (*pk++)) + gcurr; + + /* save f0(n) in state buffer */ + *px++ = fcurr; + + /* f1(n) is saved in fcurr + for next stage processing */ + fcurr = fnext; + + stageCnt = (numStages - 1u); + + /* stage loop */ + while(stageCnt > 0u) + { + /* read g2(n) from state buffer */ + gcurr = *px; + + /* save g1(n) in state buffer */ + *px++ = gnext; + + /* Sample processing for K2, K3.... */ + /* f2(n) = f1(n) + K2 * g1(n-1) */ + fnext = fcurr + ((*pk) * gcurr); + /* g2(n) = f1(n) * K2 + g1(n-1) */ + gnext = (fcurr * (*pk++)) + gcurr; + + /* f1(n) is saved in fcurr1 + for next stage processing */ + fcurr = fnext; + + stageCnt--; + + } + + /* y(n) = fN(n) */ + *pDst++ = fcurr; + + blkCnt--; + + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of FIR_Lattice group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_f32.c new file mode 100644 index 000000000..36e19c2bd --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_f32.c @@ -0,0 +1,75 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_lattice_init_f32.c +* +* Description: Floating-point FIR Lattice filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Lattice + * @{ + */ + +/** + * @brief Initialization function for the floating-point FIR lattice filter. + * @param[in] *S points to an instance of the floating-point FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] *pState points to the state buffer. The array is of length numStages. + * @return none. + */ + +void arm_fir_lattice_init_f32( + arm_fir_lattice_instance_f32 * S, + uint16_t numStages, + float32_t * pCoeffs, + float32_t * pState) +{ + /* Assign filter taps */ + S->numStages = numStages; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always numStages */ + memset(pState, 0, (numStages) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR_Lattice group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q15.c new file mode 100644 index 000000000..905e7183e --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q15.c @@ -0,0 +1,75 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_lattice_init_q15.c +* +* Description: Q15 FIR Lattice filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Lattice + * @{ + */ + + /** + * @brief Initialization function for the Q15 FIR lattice filter. + * @param[in] *S points to an instance of the Q15 FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] *pState points to the state buffer. The array is of length numStages. + * @return none. + */ + +void arm_fir_lattice_init_q15( + arm_fir_lattice_instance_q15 * S, + uint16_t numStages, + q15_t * pCoeffs, + q15_t * pState) +{ + /* Assign filter taps */ + S->numStages = numStages; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always numStages */ + memset(pState, 0, (numStages) * sizeof(q15_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR_Lattice group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q31.c new file mode 100644 index 000000000..43ba1af5f --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q31.c @@ -0,0 +1,75 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_lattice_init_q31.c +* +* Description: Q31 FIR lattice filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Lattice + * @{ + */ + + /** + * @brief Initialization function for the Q31 FIR lattice filter. + * @param[in] *S points to an instance of the Q31 FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] *pState points to the state buffer. The array is of length numStages. + * @return none. + */ + +void arm_fir_lattice_init_q31( + arm_fir_lattice_instance_q31 * S, + uint16_t numStages, + q31_t * pCoeffs, + q31_t * pState) +{ + /* Assign filter taps */ + S->numStages = numStages; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always numStages */ + memset(pState, 0, (numStages) * sizeof(q31_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR_Lattice group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q15.c new file mode 100644 index 000000000..3aff889f6 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q15.c @@ -0,0 +1,528 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_lattice_q15.c +* +* Description: Q15 FIR lattice filter processing function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Lattice + * @{ + */ + + +/** + * @brief Processing function for the Q15 FIR lattice filter. + * @param[in] *S points to an instance of the Q15 FIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of samples to process. + * @return none. + */ + +void arm_fir_lattice_q15( + const arm_fir_lattice_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *px; /* temporary state pointer */ + q15_t *pk; /* temporary coefficient pointer */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t fcurnt1, fnext1, gcurnt1 = 0, gnext1; /* temporary variables for first sample in loop unrolling */ + q31_t fcurnt2, fnext2, gnext2; /* temporary variables for second sample in loop unrolling */ + q31_t fcurnt3, fnext3, gnext3; /* temporary variables for third sample in loop unrolling */ + q31_t fcurnt4, fnext4, gnext4; /* temporary variables for fourth sample in loop unrolling */ + uint32_t numStages = S->numStages; /* Number of stages in the filter */ + uint32_t blkCnt, stageCnt; /* temporary variables for counts */ + + pState = &S->pState[0]; + + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + + /* Read two samples from input buffer */ + /* f0(n) = x(n) */ + fcurnt1 = *pSrc++; + fcurnt2 = *pSrc++; + + /* Initialize coeff pointer */ + pk = (pCoeffs); + + /* Initialize state pointer */ + px = pState; + + /* Read g0(n-1) from state */ + gcurnt1 = *px; + + /* Process first sample for first tap */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext1 = (q31_t) ((gcurnt1 * (*pk)) >> 15u) + fcurnt1; + fnext1 = __SSAT(fnext1, 16); + + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext1 = (q31_t) ((fcurnt1 * (*pk)) >> 15u) + gcurnt1; + gnext1 = __SSAT(gnext1, 16); + + /* Process second sample for first tap */ + /* for sample 2 processing */ + fnext2 = (q31_t) ((fcurnt1 * (*pk)) >> 15u) + fcurnt2; + fnext2 = __SSAT(fnext2, 16); + + gnext2 = (q31_t) ((fcurnt2 * (*pk)) >> 15u) + fcurnt1; + gnext2 = __SSAT(gnext2, 16); + + + /* Read next two samples from input buffer */ + /* f0(n+2) = x(n+2) */ + fcurnt3 = *pSrc++; + fcurnt4 = *pSrc++; + + /* Copy only last input samples into the state buffer + which is used for next four samples processing */ + *px++ = (q15_t) fcurnt4; + + /* Process third sample for first tap */ + fnext3 = (q31_t) ((fcurnt2 * (*pk)) >> 15u) + fcurnt3; + fnext3 = __SSAT(fnext3, 16); + gnext3 = (q31_t) ((fcurnt3 * (*pk)) >> 15u) + fcurnt2; + gnext3 = __SSAT(gnext3, 16); + + /* Process fourth sample for first tap */ + fnext4 = (q31_t) ((fcurnt3 * (*pk)) >> 15u) + fcurnt4; + fnext4 = __SSAT(fnext4, 16); + gnext4 = (q31_t) ((fcurnt4 * (*pk++)) >> 15u) + fcurnt3; + gnext4 = __SSAT(gnext4, 16); + + /* Update of f values for next coefficient set processing */ + fcurnt1 = fnext1; + fcurnt2 = fnext2; + fcurnt3 = fnext3; + fcurnt4 = fnext4; + + + /* Loop unrolling. Process 4 taps at a time . */ + stageCnt = (numStages - 1u) >> 2; + + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numStages-3 coefficients. */ + + /* Process 2nd, 3rd, 4th and 5th taps ... here */ + while(stageCnt > 0u) + { + /* Read g1(n-1), g3(n-1) .... from state */ + gcurnt1 = *px; + + /* save g1(n) in state buffer */ + *px++ = (q15_t) gnext4; + + /* Process first sample for 2nd, 6th .. tap */ + /* Sample processing for K2, K6.... */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext1 = (q31_t) ((gcurnt1 * (*pk)) >> 15u) + fcurnt1; + fnext1 = __SSAT(fnext1, 16); + + + /* Process second sample for 2nd, 6th .. tap */ + /* for sample 2 processing */ + fnext2 = (q31_t) ((gnext1 * (*pk)) >> 15u) + fcurnt2; + fnext2 = __SSAT(fnext2, 16); + /* Process third sample for 2nd, 6th .. tap */ + fnext3 = (q31_t) ((gnext2 * (*pk)) >> 15u) + fcurnt3; + fnext3 = __SSAT(fnext3, 16); + /* Process fourth sample for 2nd, 6th .. tap */ + /* fnext4 = fcurnt4 + (*pk) * gnext3; */ + fnext4 = (q31_t) ((gnext3 * (*pk)) >> 15u) + fcurnt4; + fnext4 = __SSAT(fnext4, 16); + + /* g1(n) = f0(n) * K1 + g0(n-1) */ + /* Calculation of state values for next stage */ + gnext4 = (q31_t) ((fcurnt4 * (*pk)) >> 15u) + gnext3; + gnext4 = __SSAT(gnext4, 16); + gnext3 = (q31_t) ((fcurnt3 * (*pk)) >> 15u) + gnext2; + gnext3 = __SSAT(gnext3, 16); + + gnext2 = (q31_t) ((fcurnt2 * (*pk)) >> 15u) + gnext1; + gnext2 = __SSAT(gnext2, 16); + + gnext1 = (q31_t) ((fcurnt1 * (*pk++)) >> 15u) + gcurnt1; + gnext1 = __SSAT(gnext1, 16); + + + /* Read g2(n-1), g4(n-1) .... from state */ + gcurnt1 = *px; + + /* save g1(n) in state buffer */ + *px++ = (q15_t) gnext4; + + /* Sample processing for K3, K7.... */ + /* Process first sample for 3rd, 7th .. tap */ + /* f3(n) = f2(n) + K3 * g2(n-1) */ + fcurnt1 = (q31_t) ((gcurnt1 * (*pk)) >> 15u) + fnext1; + fcurnt1 = __SSAT(fcurnt1, 16); + + /* Process second sample for 3rd, 7th .. tap */ + fcurnt2 = (q31_t) ((gnext1 * (*pk)) >> 15u) + fnext2; + fcurnt2 = __SSAT(fcurnt2, 16); + + /* Process third sample for 3rd, 7th .. tap */ + fcurnt3 = (q31_t) ((gnext2 * (*pk)) >> 15u) + fnext3; + fcurnt3 = __SSAT(fcurnt3, 16); + + /* Process fourth sample for 3rd, 7th .. tap */ + fcurnt4 = (q31_t) ((gnext3 * (*pk)) >> 15u) + fnext4; + fcurnt4 = __SSAT(fcurnt4, 16); + + /* Calculation of state values for next stage */ + /* g3(n) = f2(n) * K3 + g2(n-1) */ + gnext4 = (q31_t) ((fnext4 * (*pk)) >> 15u) + gnext3; + gnext4 = __SSAT(gnext4, 16); + + gnext3 = (q31_t) ((fnext3 * (*pk)) >> 15u) + gnext2; + gnext3 = __SSAT(gnext3, 16); + + gnext2 = (q31_t) ((fnext2 * (*pk)) >> 15u) + gnext1; + gnext2 = __SSAT(gnext2, 16); + + gnext1 = (q31_t) ((fnext1 * (*pk++)) >> 15u) + gcurnt1; + gnext1 = __SSAT(gnext1, 16); + + /* Read g1(n-1), g3(n-1) .... from state */ + gcurnt1 = *px; + + /* save g1(n) in state buffer */ + *px++ = (q15_t) gnext4; + + /* Sample processing for K4, K8.... */ + /* Process first sample for 4th, 8th .. tap */ + /* f4(n) = f3(n) + K4 * g3(n-1) */ + fnext1 = (q31_t) ((gcurnt1 * (*pk)) >> 15u) + fcurnt1; + fnext1 = __SSAT(fnext1, 16); + + /* Process second sample for 4th, 8th .. tap */ + /* for sample 2 processing */ + fnext2 = (q31_t) ((gnext1 * (*pk)) >> 15u) + fcurnt2; + fnext2 = __SSAT(fnext2, 16); + + /* Process third sample for 4th, 8th .. tap */ + fnext3 = (q31_t) ((gnext2 * (*pk)) >> 15u) + fcurnt3; + fnext3 = __SSAT(fnext3, 16); + + /* Process fourth sample for 4th, 8th .. tap */ + fnext4 = (q31_t) ((gnext3 * (*pk)) >> 15u) + fcurnt4; + fnext4 = __SSAT(fnext4, 16); + + /* g4(n) = f3(n) * K4 + g3(n-1) */ + /* Calculation of state values for next stage */ + gnext4 = (q31_t) ((fcurnt4 * (*pk)) >> 15u) + gnext3; + gnext4 = __SSAT(gnext4, 16); + + gnext3 = (q31_t) ((fcurnt3 * (*pk)) >> 15u) + gnext2; + gnext3 = __SSAT(gnext3, 16); + + gnext2 = (q31_t) ((fcurnt2 * (*pk)) >> 15u) + gnext1; + gnext2 = __SSAT(gnext2, 16); + gnext1 = (q31_t) ((fcurnt1 * (*pk++)) >> 15u) + gcurnt1; + gnext1 = __SSAT(gnext1, 16); + + + /* Read g2(n-1), g4(n-1) .... from state */ + gcurnt1 = *px; + + /* save g4(n) in state buffer */ + *px++ = (q15_t) gnext4; + + /* Sample processing for K5, K9.... */ + /* Process first sample for 5th, 9th .. tap */ + /* f5(n) = f4(n) + K5 * g4(n-1) */ + fcurnt1 = (q31_t) ((gcurnt1 * (*pk)) >> 15u) + fnext1; + fcurnt1 = __SSAT(fcurnt1, 16); + + /* Process second sample for 5th, 9th .. tap */ + fcurnt2 = (q31_t) ((gnext1 * (*pk)) >> 15u) + fnext2; + fcurnt2 = __SSAT(fcurnt2, 16); + + /* Process third sample for 5th, 9th .. tap */ + fcurnt3 = (q31_t) ((gnext2 * (*pk)) >> 15u) + fnext3; + fcurnt3 = __SSAT(fcurnt3, 16); + + /* Process fourth sample for 5th, 9th .. tap */ + fcurnt4 = (q31_t) ((gnext3 * (*pk)) >> 15u) + fnext4; + fcurnt4 = __SSAT(fcurnt4, 16); + + /* Calculation of state values for next stage */ + /* g5(n) = f4(n) * K5 + g4(n-1) */ + gnext4 = (q31_t) ((fnext4 * (*pk)) >> 15u) + gnext3; + gnext4 = __SSAT(gnext4, 16); + gnext3 = (q31_t) ((fnext3 * (*pk)) >> 15u) + gnext2; + gnext3 = __SSAT(gnext3, 16); + gnext2 = (q31_t) ((fnext2 * (*pk)) >> 15u) + gnext1; + gnext2 = __SSAT(gnext2, 16); + gnext1 = (q31_t) ((fnext1 * (*pk++)) >> 15u) + gcurnt1; + gnext1 = __SSAT(gnext1, 16); + + stageCnt--; + } + + /* If the (filter length -1) is not a multiple of 4, compute the remaining filter taps */ + stageCnt = (numStages - 1u) % 0x4u; + + while(stageCnt > 0u) + { + gcurnt1 = *px; + + /* save g value in state buffer */ + *px++ = (q15_t) gnext4; + + /* Process four samples for last three taps here */ + fnext1 = (q31_t) ((gcurnt1 * (*pk)) >> 15u) + fcurnt1; + fnext1 = __SSAT(fnext1, 16); + fnext2 = (q31_t) ((gnext1 * (*pk)) >> 15u) + fcurnt2; + fnext2 = __SSAT(fnext2, 16); + + fnext3 = (q31_t) ((gnext2 * (*pk)) >> 15u) + fcurnt3; + fnext3 = __SSAT(fnext3, 16); + + fnext4 = (q31_t) ((gnext3 * (*pk)) >> 15u) + fcurnt4; + fnext4 = __SSAT(fnext4, 16); + + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext4 = (q31_t) ((fcurnt4 * (*pk)) >> 15u) + gnext3; + gnext4 = __SSAT(gnext4, 16); + gnext3 = (q31_t) ((fcurnt3 * (*pk)) >> 15u) + gnext2; + gnext3 = __SSAT(gnext3, 16); + gnext2 = (q31_t) ((fcurnt2 * (*pk)) >> 15u) + gnext1; + gnext2 = __SSAT(gnext2, 16); + gnext1 = (q31_t) ((fcurnt1 * (*pk++)) >> 15u) + gcurnt1; + gnext1 = __SSAT(gnext1, 16); + + /* Update of f values for next coefficient set processing */ + fcurnt1 = fnext1; + fcurnt2 = fnext2; + fcurnt3 = fnext3; + fcurnt4 = fnext4; + + stageCnt--; + + } + + /* The results in the 4 accumulators, store in the destination buffer. */ + /* y(n) = fN(n) */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = __PKHBT(fcurnt1, fcurnt2, 16); + *__SIMD32(pDst)++ = __PKHBT(fcurnt3, fcurnt4, 16); + +#else + + *__SIMD32(pDst)++ = __PKHBT(fcurnt2, fcurnt1, 16); + *__SIMD32(pDst)++ = __PKHBT(fcurnt4, fcurnt3, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* f0(n) = x(n) */ + fcurnt1 = *pSrc++; + + /* Initialize coeff pointer */ + pk = (pCoeffs); + + /* Initialize state pointer */ + px = pState; + + /* read g2(n) from state buffer */ + gcurnt1 = *px; + + /* for sample 1 processing */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext1 = (((q31_t) gcurnt1 * (*pk)) >> 15u) + fcurnt1; + fnext1 = __SSAT(fnext1, 16); + + + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext1 = (((q31_t) fcurnt1 * (*pk++)) >> 15u) + gcurnt1; + gnext1 = __SSAT(gnext1, 16); + + /* save g1(n) in state buffer */ + *px++ = (q15_t) fcurnt1; + + /* f1(n) is saved in fcurnt1 + for next stage processing */ + fcurnt1 = fnext1; + + stageCnt = (numStages - 1u); + + /* stage loop */ + while(stageCnt > 0u) + { + /* read g2(n) from state buffer */ + gcurnt1 = *px; + + /* save g1(n) in state buffer */ + *px++ = (q15_t) gnext1; + + /* Sample processing for K2, K3.... */ + /* f2(n) = f1(n) + K2 * g1(n-1) */ + fnext1 = (((q31_t) gcurnt1 * (*pk)) >> 15u) + fcurnt1; + fnext1 = __SSAT(fnext1, 16); + + /* g2(n) = f1(n) * K2 + g1(n-1) */ + gnext1 = (((q31_t) fcurnt1 * (*pk++)) >> 15u) + gcurnt1; + gnext1 = __SSAT(gnext1, 16); + + + /* f1(n) is saved in fcurnt1 + for next stage processing */ + fcurnt1 = fnext1; + + stageCnt--; + + } + + /* y(n) = fN(n) */ + *pDst++ = __SSAT(fcurnt1, 16); + + + blkCnt--; + + } + +#else + + /* Run the below code for Cortex-M0 */ + + q31_t fcurnt, fnext, gcurnt, gnext; /* temporary variables */ + uint32_t numStages = S->numStages; /* Length of the filter */ + uint32_t blkCnt, stageCnt; /* temporary variables for counts */ + + pState = &S->pState[0]; + + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* f0(n) = x(n) */ + fcurnt = *pSrc++; + + /* Initialize coeff pointer */ + pk = (pCoeffs); + + /* Initialize state pointer */ + px = pState; + + /* read g0(n-1) from state buffer */ + gcurnt = *px; + + /* for sample 1 processing */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext = ((gcurnt * (*pk)) >> 15u) + fcurnt; + fnext = __SSAT(fnext, 16); + + + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext = ((fcurnt * (*pk++)) >> 15u) + gcurnt; + gnext = __SSAT(gnext, 16); + + /* save f0(n) in state buffer */ + *px++ = (q15_t) fcurnt; + + /* f1(n) is saved in fcurnt + for next stage processing */ + fcurnt = fnext; + + stageCnt = (numStages - 1u); + + /* stage loop */ + while(stageCnt > 0u) + { + /* read g1(n-1) from state buffer */ + gcurnt = *px; + + /* save g0(n-1) in state buffer */ + *px++ = (q15_t) gnext; + + /* Sample processing for K2, K3.... */ + /* f2(n) = f1(n) + K2 * g1(n-1) */ + fnext = ((gcurnt * (*pk)) >> 15u) + fcurnt; + fnext = __SSAT(fnext, 16); + + /* g2(n) = f1(n) * K2 + g1(n-1) */ + gnext = ((fcurnt * (*pk++)) >> 15u) + gcurnt; + gnext = __SSAT(gnext, 16); + + + /* f1(n) is saved in fcurnt + for next stage processing */ + fcurnt = fnext; + + stageCnt--; + + } + + /* y(n) = fN(n) */ + *pDst++ = __SSAT(fcurnt, 16); + + + blkCnt--; + + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of FIR_Lattice group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q31.c new file mode 100644 index 000000000..99c9a87a1 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q31.c @@ -0,0 +1,440 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_lattice_q31.c +* +* Description: Q31 FIR lattice filter processing function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Lattice + * @{ + */ + + +/** + * @brief Processing function for the Q31 FIR lattice filter. + * @param[in] *S points to an instance of the Q31 FIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of samples to process. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * In order to avoid overflows the input signal must be scaled down by 2*log2(numStages) bits. + */ + +void arm_fir_lattice_q31( + const arm_fir_lattice_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *px; /* temporary state pointer */ + q31_t *pk; /* temporary coefficient pointer */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t fcurr1, fnext1, gcurr1 = 0, gnext1; /* temporary variables for first sample in loop unrolling */ + q63_t fcurr2, fnext2, gnext2; /* temporary variables for second sample in loop unrolling */ + q63_t fcurr3, fnext3, gnext3; /* temporary variables for third sample in loop unrolling */ + q63_t fcurr4, fnext4, gnext4; /* temporary variables for fourth sample in loop unrolling */ + uint32_t numStages = S->numStages; /* Length of the filter */ + uint32_t blkCnt, stageCnt; /* temporary variables for counts */ + + pState = &S->pState[0]; + + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + + /* Read two samples from input buffer */ + /* f0(n) = x(n) */ + fcurr1 = *pSrc++; + /* f0(n) = x(n) */ + fcurr2 = *pSrc++; + + /* Initialize coeff pointer */ + pk = (pCoeffs); + + /* Initialize state pointer */ + px = pState; + + /* Read g0(n-1) from state */ + gcurr1 = *px; + + /* Process first sample for first tap */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext1 = (q31_t) (((q63_t) gcurr1 * (*pk)) >> 31) + fcurr1; + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext1 = (q31_t) (((q63_t) fcurr1 * (*pk)) >> 31) + gcurr1; + + /* Process second sample for first tap */ + /* for sample 2 processing */ + fnext2 = (q31_t) (((q63_t) fcurr1 * (*pk)) >> 31) + fcurr2; + gnext2 = (q31_t) (((q63_t) fcurr2 * (*pk)) >> 31) + fcurr1; + + + /* Read next two samples from input buffer */ + /* f0(n+2) = x(n+2) */ + fcurr3 = *pSrc++; + fcurr4 = *pSrc++; + + /* Copy only last input samples into the state buffer + which will be used for next four samples processing */ + *px++ = (q31_t) fcurr4; + + /* Process third sample for first tap */ + fnext3 = (q31_t) (((q63_t) fcurr2 * (*pk)) >> 31) + fcurr3; + gnext3 = (q31_t) (((q63_t) fcurr3 * (*pk)) >> 31) + fcurr2; + + /* Process fourth sample for first tap */ + fnext4 = (q31_t) (((q63_t) fcurr3 * (*pk)) >> 31) + fcurr4; + gnext4 = (q31_t) (((q63_t) fcurr4 * (*pk++)) >> 31) + fcurr3; + + /* save g1(n) in state buffer for next sample processing */ + /* *px++ = gnext4; */ + + /* Update of f values for next coefficient set processing */ + fcurr1 = fnext1; + fcurr2 = fnext2; + fcurr3 = fnext3; + fcurr4 = fnext4; + + + /* Loop unrolling. Process 4 taps at a time . */ + stageCnt = (numStages - 1u) >> 2u; + + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numStages-3 coefficients. */ + + /* Process 2nd, 3rd, 4th and 5th taps ... here */ + while(stageCnt > 0u) + { + /* Read g1(n-1), g3(n-1) .... from state */ + gcurr1 = *px; + + /* save g1(n) in state buffer */ + *px++ = (q31_t) gnext4; + + /* Process first sample for 2nd, 6th .. tap */ + /* Sample processing for K2, K6.... */ + /* f2(n) = f1(n) + K2 * g1(n-1) */ + fnext1 = (q31_t) (((q63_t) gcurr1 * (*pk)) >> 31) + fcurr1; + /* Process second sample for 2nd, 6th .. tap */ + /* for sample 2 processing */ + fnext2 = (q31_t) (((q63_t) gnext1 * (*pk)) >> 31) + fcurr2; + /* Process third sample for 2nd, 6th .. tap */ + fnext3 = (q31_t) (((q63_t) gnext2 * (*pk)) >> 31) + fcurr3; + /* Process fourth sample for 2nd, 6th .. tap */ + fnext4 = (q31_t) (((q63_t) gnext3 * (*pk)) >> 31) + fcurr4; + + /* g2(n) = f1(n) * K2 + g1(n-1) */ + /* Calculation of state values for next stage */ + gnext4 = (q31_t) (((q63_t) fcurr4 * (*pk)) >> 31) + gnext3; + gnext3 = (q31_t) (((q63_t) fcurr3 * (*pk)) >> 31) + gnext2; + gnext2 = (q31_t) (((q63_t) fcurr2 * (*pk)) >> 31) + gnext1; + gnext1 = (q31_t) (((q63_t) fcurr1 * (*pk++)) >> 31) + gcurr1; + + + /* Read g2(n-1), g4(n-1) .... from state */ + gcurr1 = *px; + + /* save g2(n) in state buffer */ + *px++ = (q31_t) gnext4; + + /* Sample processing for K3, K7.... */ + /* Process first sample for 3rd, 7th .. tap */ + /* f3(n) = f2(n) + K3 * g2(n-1) */ + fcurr1 = (q31_t) (((q63_t) gcurr1 * (*pk)) >> 31) + fnext1; + /* Process second sample for 3rd, 7th .. tap */ + fcurr2 = (q31_t) (((q63_t) gnext1 * (*pk)) >> 31) + fnext2; + /* Process third sample for 3rd, 7th .. tap */ + fcurr3 = (q31_t) (((q63_t) gnext2 * (*pk)) >> 31) + fnext3; + /* Process fourth sample for 3rd, 7th .. tap */ + fcurr4 = (q31_t) (((q63_t) gnext3 * (*pk)) >> 31) + fnext4; + + /* Calculation of state values for next stage */ + /* gnext4 = fnext4 * (*pk) + gnext3; */ + gnext4 = (q31_t) (((q63_t) fnext4 * (*pk)) >> 31) + gnext3; + gnext3 = (q31_t) (((q63_t) fnext3 * (*pk)) >> 31) + gnext2; + /* gnext2 = fnext2 * (*pk) + gnext1; */ + gnext2 = (q31_t) (((q63_t) fnext2 * (*pk)) >> 31) + gnext1; + + /* g1(n) = f0(n) * K1 + g0(n-1) */ + /* gnext1 = fnext1 * (*pk++) + gcurr1; */ + gnext1 = (q31_t) (((q63_t) fnext1 * (*pk++)) >> 31) + gcurr1; + + /* Read g1(n-1), g3(n-1) .... from state */ + gcurr1 = *px; + + /* save g1(n) in state buffer */ + *px++ = (q31_t) gnext4; + + /* Sample processing for K4, K8.... */ + /* Process first sample for 4th, 8th .. tap */ + /* f4(n) = f3(n) + K4 * g3(n-1) */ + fnext1 = (q31_t) (((q63_t) gcurr1 * (*pk)) >> 31) + fcurr1; + /* Process second sample for 4th, 8th .. tap */ + /* for sample 2 processing */ + fnext2 = (q31_t) (((q63_t) gnext1 * (*pk)) >> 31) + fcurr2; + /* Process third sample for 4th, 8th .. tap */ + fnext3 = (q31_t) (((q63_t) gnext2 * (*pk)) >> 31) + fcurr3; + /* Process fourth sample for 4th, 8th .. tap */ + fnext4 = (q31_t) (((q63_t) gnext3 * (*pk)) >> 31) + fcurr4; + + /* g4(n) = f3(n) * K4 + g3(n-1) */ + /* Calculation of state values for next stage */ + gnext4 = (q31_t) (((q63_t) fcurr4 * (*pk)) >> 31) + gnext3; + gnext3 = (q31_t) (((q63_t) fcurr3 * (*pk)) >> 31) + gnext2; + gnext2 = (q31_t) (((q63_t) fcurr2 * (*pk)) >> 31) + gnext1; + gnext1 = (q31_t) (((q63_t) fcurr1 * (*pk++)) >> 31) + gcurr1; + + /* Read g2(n-1), g4(n-1) .... from state */ + gcurr1 = *px; + + /* save g4(n) in state buffer */ + *px++ = (q31_t) gnext4; + + /* Sample processing for K5, K9.... */ + /* Process first sample for 5th, 9th .. tap */ + /* f5(n) = f4(n) + K5 * g4(n-1) */ + fcurr1 = (q31_t) (((q63_t) gcurr1 * (*pk)) >> 31) + fnext1; + /* Process second sample for 5th, 9th .. tap */ + fcurr2 = (q31_t) (((q63_t) gnext1 * (*pk)) >> 31) + fnext2; + /* Process third sample for 5th, 9th .. tap */ + fcurr3 = (q31_t) (((q63_t) gnext2 * (*pk)) >> 31) + fnext3; + /* Process fourth sample for 5th, 9th .. tap */ + fcurr4 = (q31_t) (((q63_t) gnext3 * (*pk)) >> 31) + fnext4; + + /* Calculation of state values for next stage */ + /* g5(n) = f4(n) * K5 + g4(n-1) */ + gnext4 = (q31_t) (((q63_t) fnext4 * (*pk)) >> 31) + gnext3; + gnext3 = (q31_t) (((q63_t) fnext3 * (*pk)) >> 31) + gnext2; + gnext2 = (q31_t) (((q63_t) fnext2 * (*pk)) >> 31) + gnext1; + gnext1 = (q31_t) (((q63_t) fnext1 * (*pk++)) >> 31) + gcurr1; + + stageCnt--; + } + + /* If the (filter length -1) is not a multiple of 4, compute the remaining filter taps */ + stageCnt = (numStages - 1u) % 0x4u; + + while(stageCnt > 0u) + { + gcurr1 = *px; + + /* save g value in state buffer */ + *px++ = (q31_t) gnext4; + + /* Process four samples for last three taps here */ + fnext1 = (q31_t) (((q63_t) gcurr1 * (*pk)) >> 31) + fcurr1; + fnext2 = (q31_t) (((q63_t) gnext1 * (*pk)) >> 31) + fcurr2; + fnext3 = (q31_t) (((q63_t) gnext2 * (*pk)) >> 31) + fcurr3; + fnext4 = (q31_t) (((q63_t) gnext3 * (*pk)) >> 31) + fcurr4; + + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext4 = (q31_t) (((q63_t) fcurr4 * (*pk)) >> 31) + gnext3; + gnext3 = (q31_t) (((q63_t) fcurr3 * (*pk)) >> 31) + gnext2; + gnext2 = (q31_t) (((q63_t) fcurr2 * (*pk)) >> 31) + gnext1; + gnext1 = (q31_t) (((q63_t) fcurr1 * (*pk++)) >> 31) + gcurr1; + + /* Update of f values for next coefficient set processing */ + fcurr1 = fnext1; + fcurr2 = fnext2; + fcurr3 = fnext3; + fcurr4 = fnext4; + + stageCnt--; + + } + + /* The results in the 4 accumulators, store in the destination buffer. */ + /* y(n) = fN(n) */ + *pDst++ = fcurr1; + *pDst++ = (q31_t) fcurr2; + *pDst++ = (q31_t) fcurr3; + *pDst++ = (q31_t) fcurr4; + + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* f0(n) = x(n) */ + fcurr1 = *pSrc++; + + /* Initialize coeff pointer */ + pk = (pCoeffs); + + /* Initialize state pointer */ + px = pState; + + /* read g2(n) from state buffer */ + gcurr1 = *px; + + /* for sample 1 processing */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext1 = (q31_t) (((q63_t) gcurr1 * (*pk)) >> 31) + fcurr1; + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext1 = (q31_t) (((q63_t) fcurr1 * (*pk++)) >> 31) + gcurr1; + /* save g1(n) in state buffer */ + *px++ = fcurr1; + + /* f1(n) is saved in fcurr1 + for next stage processing */ + fcurr1 = fnext1; + + stageCnt = (numStages - 1u); + + /* stage loop */ + while(stageCnt > 0u) + { + /* read g2(n) from state buffer */ + gcurr1 = *px; + + /* save g1(n) in state buffer */ + *px++ = gnext1; + + /* Sample processing for K2, K3.... */ + /* f2(n) = f1(n) + K2 * g1(n-1) */ + fnext1 = (q31_t) (((q63_t) gcurr1 * (*pk)) >> 31) + fcurr1; + /* g2(n) = f1(n) * K2 + g1(n-1) */ + gnext1 = (q31_t) (((q63_t) fcurr1 * (*pk++)) >> 31) + gcurr1; + + /* f1(n) is saved in fcurr1 + for next stage processing */ + fcurr1 = fnext1; + + stageCnt--; + + } + + /* y(n) = fN(n) */ + *pDst++ = fcurr1; + + blkCnt--; + + } + +#else + +/* Run the below code for Cortex-M0 */ + + q31_t fcurr, fnext, gcurr, gnext; /* temporary variables */ + uint32_t numStages = S->numStages; /* Length of the filter */ + uint32_t blkCnt, stageCnt; /* temporary variables for counts */ + + pState = &S->pState[0]; + + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* f0(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize coeff pointer */ + pk = (pCoeffs); + + /* Initialize state pointer */ + px = pState; + + /* read g0(n-1) from state buffer */ + gcurr = *px; + + /* for sample 1 processing */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext = (q31_t) (((q63_t) gcurr * (*pk)) >> 31) + fcurr; + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext = (q31_t) (((q63_t) fcurr * (*pk++)) >> 31) + gcurr; + /* save g1(n) in state buffer */ + *px++ = fcurr; + + /* f1(n) is saved in fcurr1 + for next stage processing */ + fcurr = fnext; + + stageCnt = (numStages - 1u); + + /* stage loop */ + while(stageCnt > 0u) + { + /* read g2(n) from state buffer */ + gcurr = *px; + + /* save g1(n) in state buffer */ + *px++ = gnext; + + /* Sample processing for K2, K3.... */ + /* f2(n) = f1(n) + K2 * g1(n-1) */ + fnext = (q31_t) (((q63_t) gcurr * (*pk)) >> 31) + fcurr; + /* g2(n) = f1(n) * K2 + g1(n-1) */ + gnext = (q31_t) (((q63_t) fcurr * (*pk++)) >> 31) + gcurr; + + /* f1(n) is saved in fcurr1 + for next stage processing */ + fcurr = fnext; + + stageCnt--; + + } + + /* y(n) = fN(n) */ + *pDst++ = fcurr; + + blkCnt--; + + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of FIR_Lattice group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q15.c new file mode 100644 index 000000000..ea011d50f --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q15.c @@ -0,0 +1,368 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_q15.c +* +* Description: Q15 FIR filter processing function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR + * @{ + */ + +/** + * @brief Processing function for the Q15 FIR filter. + * @param[in] *S points to an instance of the Q15 FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. + * Lastly, the accumulator is saturated to yield a result in 1.15 format. + * + * \par + * Refer to the function arm_fir_fast_q15() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4. + */ + +void arm_fir_q15( + const arm_fir_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t *px1; /* Temporary q15 pointer for state buffer */ + q31_t *pb; /* Temporary pointer for coefficient buffer */ + q31_t *px2; /* Temporary q31 pointer for SIMD state buffer accesses */ + q31_t x0, x1, x2, x3, c0; /* Temporary variables to hold SIMD state and coefficient values */ + q63_t acc0, acc1, acc2, acc3; /* Accumulators */ + uint32_t numTaps = S->numTaps; /* Number of taps in the filter */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1u)]); + + /* Apply loop unrolling and compute 4 output values simultaneously. + * The variables acc0 ... acc3 hold output values that are being computed: + * + * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] + * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] + * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] + * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] + */ + blkCnt = blockSize >> 2; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* Copy four new input samples into the state buffer. + ** Use 32-bit SIMD to move the 16-bit data. Only requires two copies. */ + *__SIMD32(pStateCurnt)++ = *__SIMD32(pSrc)++; + *__SIMD32(pStateCurnt)++ = *__SIMD32(pSrc)++; + + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Initialize state pointer of type q15 */ + px1 = pState; + + /* Initialize coeff pointer of type q31 */ + pb = (q31_t *) (pCoeffs); + + /* Read the first two samples from the state buffer: x[n-N], x[n-N-1] */ + x0 = *(q31_t *) (px1++); + + /* Read the third and forth samples from the state buffer: x[n-N-1], x[n-N-2] */ + x1 = *(q31_t *) (px1++); + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + tapCnt = numTaps >> 2; + do + { + /* Read the first two coefficients using SIMD: b[N] and b[N-1] coefficients */ + c0 = *(pb++); + + /* acc0 += b[N] * x[n-N] + b[N-1] * x[n-N-1] */ + acc0 = __SMLALD(x0, c0, acc0); + + /* acc1 += b[N] * x[n-N-1] + b[N-1] * x[n-N-2] */ + acc1 = __SMLALD(x1, c0, acc1); + + /* Read state x[n-N-2], x[n-N-3] */ + x2 = *(q31_t *) (px1++); + + /* Read state x[n-N-3], x[n-N-4] */ + x3 = *(q31_t *) (px1++); + + /* acc2 += b[N] * x[n-N-2] + b[N-1] * x[n-N-3] */ + acc2 = __SMLALD(x2, c0, acc2); + + /* acc3 += b[N] * x[n-N-3] + b[N-1] * x[n-N-4] */ + acc3 = __SMLALD(x3, c0, acc3); + + /* Read coefficients b[N-2], b[N-3] */ + c0 = *(pb++); + + /* acc0 += b[N-2] * x[n-N-2] + b[N-3] * x[n-N-3] */ + acc0 = __SMLALD(x2, c0, acc0); + + /* acc1 += b[N-2] * x[n-N-3] + b[N-3] * x[n-N-4] */ + acc1 = __SMLALD(x3, c0, acc1); + + /* Read state x[n-N-4], x[n-N-5] */ + x0 = *(q31_t *) (px1++); + + /* Read state x[n-N-5], x[n-N-6] */ + x1 = *(q31_t *) (px1++); + + /* acc2 += b[N-2] * x[n-N-4] + b[N-3] * x[n-N-5] */ + acc2 = __SMLALD(x0, c0, acc2); + + /* acc3 += b[N-2] * x[n-N-5] + b[N-3] * x[n-N-6] */ + acc3 = __SMLALD(x1, c0, acc3); + tapCnt--; + + } + while(tapCnt > 0u); + + /* If the filter length is not a multiple of 4, compute the remaining filter taps. + ** This is always be 2 taps since the filter length is even. */ + if((numTaps & 0x3u) != 0u) + { + /* Read 2 coefficients */ + c0 = *(pb++); + /* Fetch 4 state variables */ + x2 = *(q31_t *) (px1++); + x3 = *(q31_t *) (px1++); + + /* Perform the multiply-accumulates */ + acc0 = __SMLALD(x0, c0, acc0); + acc1 = __SMLALD(x1, c0, acc1); + acc2 = __SMLALD(x2, c0, acc2); + acc3 = __SMLALD(x3, c0, acc3); + } + + /* The results in the 4 accumulators are in 2.30 format. Convert to 1.15 with saturation. + ** Then store the 4 outputs in the destination buffer. */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); + +#else + + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Advance the state pointer by 4 to process the next group of 4 samples */ + pState = pState + 4; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + while(blkCnt > 0u) + { + /* Copy two samples into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc0 = 0; + + /* Use SIMD to hold states and coefficients */ + px2 = (q31_t *) pState; + pb = (q31_t *) (pCoeffs); + tapCnt = numTaps >> 1; + + do + { + acc0 = __SMLALD(*px2++, *(pb++), acc0); + tapCnt--; + } + while(tapCnt > 0u); + + /* The result is in 2.30 format. Convert to 1.15 with saturation. + ** Then store the output in the destination buffer. */ + *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16)); + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + /* Calculation of count for copying integer writes */ + tapCnt = (numTaps - 1u) >> 2; + + while(tapCnt > 0u) + { + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + + tapCnt--; + + } + + /* Calculation of count for remaining q15_t data */ + tapCnt = (numTaps - 1u) % 0x4u; + + /* copy remaining data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + q15_t *px; /* Temporary pointer for state buffer */ + q15_t *pb; /* Temporary pointer for coefficient buffer */ + q63_t acc; /* Accumulator */ + uint32_t numTaps = S->numTaps; /* Number of nTaps in the filter */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1u)]); + + /* Initialize blkCnt with blockSize */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize Coefficient pointer */ + pb = pCoeffs; + + tapCnt = numTaps; + + /* Perform the multiply-accumulates */ + do + { + /* acc = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */ + acc += (q31_t) * px++ * *pb++; + tapCnt--; + } while(tapCnt > 0u); + + /* The result is in 2.30 format. Convert to 1.15 + ** Then store the output in the destination buffer. */ + *pDst++ = (q15_t) __SSAT((acc >> 15u), 16); + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the samples loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + /* Copy numTaps number of values */ + tapCnt = (numTaps - 1u); + + /* copy data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of FIR group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q31.c new file mode 100644 index 000000000..0891a7631 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q31.c @@ -0,0 +1,383 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_q31.c +* +* Description: Q31 FIR filter processing function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR + * @{ + */ + +/** + * @param[in] *S points to an instance of the Q31 FIR filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around rather than clip. + * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits. + * After all multiply-accumulates are performed, the 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result. + * + * \par + * Refer to the function arm_fir_fast_q31() for a faster but less precise implementation of this filter for Cortex-M3 and Cortex-M4. + */ + +void arm_fir_q31( + const arm_fir_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t x0, x1, x2, x3; /* Temporary variables to hold state */ + q31_t c0; /* Temporary variable to hold coefficient value */ + q31_t *px; /* Temporary pointer for state */ + q31_t *pb; /* Temporary pointer for coefficient buffer */ + q63_t acc0, acc1, acc2, acc3; /* Accumulators */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i, tapCnt, blkCnt; /* Loop counters */ + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1u)]); + + /* Apply loop unrolling and compute 4 output values simultaneously. + * The variables acc0 ... acc3 hold output values that are being computed: + * + * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] + * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] + * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] + * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] + */ + blkCnt = blockSize >> 2; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* Copy four new input samples into the state buffer */ + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coefficient pointer */ + pb = pCoeffs; + + /* Read the first three samples from the state buffer: + * x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + i = tapCnt; + + while(i > 0u) + { + /* Read the b[numTaps] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-3] sample */ + x3 = *(px++); + + /* acc0 += b[numTaps] * x[n-numTaps] */ + acc0 += ((q63_t) x0 * c0); + + /* acc1 += b[numTaps] * x[n-numTaps-1] */ + acc1 += ((q63_t) x1 * c0); + + /* acc2 += b[numTaps] * x[n-numTaps-2] */ + acc2 += ((q63_t) x2 * c0); + + /* acc3 += b[numTaps] * x[n-numTaps-3] */ + acc3 += ((q63_t) x3 * c0); + + /* Read the b[numTaps-1] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += ((q63_t) x1 * c0); + acc1 += ((q63_t) x2 * c0); + acc2 += ((q63_t) x3 * c0); + acc3 += ((q63_t) x0 * c0); + + /* Read the b[numTaps-2] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-5] sample */ + x1 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += ((q63_t) x2 * c0); + acc1 += ((q63_t) x3 * c0); + acc2 += ((q63_t) x0 * c0); + acc3 += ((q63_t) x1 * c0); + /* Read the b[numTaps-3] coefficients */ + c0 = *(pb++); + + /* Read x[n-numTaps-6] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += ((q63_t) x3 * c0); + acc1 += ((q63_t) x0 * c0); + acc2 += ((q63_t) x1 * c0); + acc3 += ((q63_t) x2 * c0); + i--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + + i = numTaps - (tapCnt * 4u); + while(i > 0u) + { + /* Read coefficients */ + c0 = *(pb++); + + /* Fetch 1 state variable */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += ((q63_t) x0 * c0); + acc1 += ((q63_t) x1 * c0); + acc2 += ((q63_t) x2 * c0); + acc3 += ((q63_t) x3 * c0); + + /* Reuse the present sample states for next sample */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 4 to process the next group of 4 samples */ + pState = pState + 4; + + /* The results in the 4 accumulators are in 2.62 format. Convert to 1.31 + ** Then store the 4 outputs in the destination buffer. */ + *pDst++ = (q31_t) (acc0 >> 31u); + *pDst++ = (q31_t) (acc1 >> 31u); + *pDst++ = (q31_t) (acc2 >> 31u); + *pDst++ = (q31_t) (acc3 >> 31u); + + /* Decrement the samples loop counter */ + blkCnt--; + } + + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 4u; + + while(blkCnt > 0u) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize Coefficient pointer */ + pb = (pCoeffs); + + i = numTaps; + + /* Perform the multiply-accumulates */ + do + { + acc0 += (q63_t) * (px++) * (*(pb++)); + i--; + } while(i > 0u); + + /* The result is in 2.62 format. Convert to 1.31 + ** Then store the output in the destination buffer. */ + *pDst++ = (q31_t) (acc0 >> 31u); + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the samples loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + tapCnt = (numTaps - 1u) >> 2u; + + /* copy data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calculate remaining number of copies */ + tapCnt = (numTaps - 1u) % 0x4u; + + /* Copy the remaining q31_t data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + +/* Run the below code for Cortex-M0 */ + + q31_t *px; /* Temporary pointer for state */ + q31_t *pb; /* Temporary pointer for coefficient buffer */ + q63_t acc; /* Accumulator */ + uint32_t numTaps = S->numTaps; /* Length of the filter */ + uint32_t i, tapCnt, blkCnt; /* Loop counters */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1u)]); + + /* Initialize blkCnt with blockSize */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize Coefficient pointer */ + pb = pCoeffs; + + i = numTaps; + + /* Perform the multiply-accumulates */ + do + { + /* acc = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */ + acc += (q63_t) * px++ * *pb++; + i--; + } while(i > 0u); + + /* The result is in 2.62 format. Convert to 1.31 + ** Then store the output in the destination buffer. */ + *pDst++ = (q31_t) (acc >> 31u); + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the samples loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the starting of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + /* Copy numTaps number of values */ + tapCnt = numTaps - 1u; + + /* Copy the data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of FIR group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q7.c new file mode 100644 index 000000000..42529d095 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q7.c @@ -0,0 +1,385 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_q7.c +* +* Description: Q7 FIR filter processing function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR + * @{ + */ + +/** + * @param[in] *S points to an instance of the Q7 FIR filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 32-bit internal accumulator. + * Both coefficients and state variables are represented in 1.7 format and multiplications yield a 2.14 result. + * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * The accumulator is converted to 18.7 format by discarding the low 7 bits. + * Finally, the result is truncated to 1.7 format. + */ + +void arm_fir_q7( + const arm_fir_instance_q7 * S, + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize) +{ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q7_t *pState = S->pState; /* State pointer */ + q7_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q7_t *pStateCurnt; /* Points to the current sample of the state */ + q7_t x0, x1, x2, x3; /* Temporary variables to hold state */ + q7_t c0; /* Temporary variable to hold coefficient value */ + q7_t *px; /* Temporary pointer for state */ + q7_t *pb; /* Temporary pointer for coefficient buffer */ + q31_t acc0, acc1, acc2, acc3; /* Accumulators */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i, tapCnt, blkCnt; /* Loop counters */ + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1u)]); + + /* Apply loop unrolling and compute 4 output values simultaneously. + * The variables acc0 ... acc3 hold output values that are being computed: + * + * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] + * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] + * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] + * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] + */ + blkCnt = blockSize >> 2; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* Copy four new input samples into the state buffer */ + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coefficient pointer */ + pb = pCoeffs; + + /* Read the first three samples from the state buffer: + * x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + i = tapCnt; + + while(i > 0u) + { + /* Read the b[numTaps] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-3] sample */ + x3 = *(px++); + + /* acc0 += b[numTaps] * x[n-numTaps] */ + acc0 += ((q15_t) x0 * c0); + + /* acc1 += b[numTaps] * x[n-numTaps-1] */ + acc1 += ((q15_t) x1 * c0); + + /* acc2 += b[numTaps] * x[n-numTaps-2] */ + acc2 += ((q15_t) x2 * c0); + + /* acc3 += b[numTaps] * x[n-numTaps-3] */ + acc3 += ((q15_t) x3 * c0); + + /* Read the b[numTaps-1] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += ((q15_t) x1 * c0); + acc1 += ((q15_t) x2 * c0); + acc2 += ((q15_t) x3 * c0); + acc3 += ((q15_t) x0 * c0); + + /* Read the b[numTaps-2] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-5] sample */ + x1 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += ((q15_t) x2 * c0); + acc1 += ((q15_t) x3 * c0); + acc2 += ((q15_t) x0 * c0); + acc3 += ((q15_t) x1 * c0); + /* Read the b[numTaps-3] coefficients */ + c0 = *(pb++); + + /* Read x[n-numTaps-6] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += ((q15_t) x3 * c0); + acc1 += ((q15_t) x0 * c0); + acc2 += ((q15_t) x1 * c0); + acc3 += ((q15_t) x2 * c0); + i--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + + i = numTaps - (tapCnt * 4u); + while(i > 0u) + { + /* Read coefficients */ + c0 = *(pb++); + + /* Fetch 1 state variable */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += ((q15_t) x0 * c0); + acc1 += ((q15_t) x1 * c0); + acc2 += ((q15_t) x2 * c0); + acc3 += ((q15_t) x3 * c0); + + /* Reuse the present sample states for next sample */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 4 to process the next group of 4 samples */ + pState = pState + 4; + + /* The results in the 4 accumulators are in 2.62 format. Convert to 1.31 + ** Then store the 4 outputs in the destination buffer. */ + acc0 = __SSAT((acc0 >> 7u), 8); + *pDst++ = acc0; + acc1 = __SSAT((acc1 >> 7u), 8); + *pDst++ = acc1; + acc2 = __SSAT((acc2 >> 7u), 8); + *pDst++ = acc2; + acc3 = __SSAT((acc3 >> 7u), 8); + *pDst++ = acc3; + + /* Decrement the samples loop counter */ + blkCnt--; + } + + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 4u; + + while(blkCnt > 0u) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize Coefficient pointer */ + pb = (pCoeffs); + + i = numTaps; + + /* Perform the multiply-accumulates */ + do + { + acc0 += (q15_t) * (px++) * (*(pb++)); + i--; + } while(i > 0u); + + /* The result is in 2.14 format. Convert to 1.7 + ** Then store the output in the destination buffer. */ + *pDst++ = __SSAT((acc0 >> 7u), 8); + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the samples loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + tapCnt = (numTaps - 1u) >> 2u; + + /* copy data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calculate remaining number of copies */ + tapCnt = (numTaps - 1u) % 0x4u; + + /* Copy the remaining q31_t data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + +/* Run the below code for Cortex-M0 */ + + uint32_t numTaps = S->numTaps; /* Number of taps in the filter */ + uint32_t i, blkCnt; /* Loop counters */ + q7_t *pState = S->pState; /* State pointer */ + q7_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q7_t *px, *pb; /* Temporary pointers to state and coeff */ + q31_t acc = 0; /* Accumlator */ + q7_t *pStateCurnt; /* Points to the current sample of the state */ + + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1u); + + /* Initialize blkCnt with blockSize */ + blkCnt = blockSize; + + /* Perform filtering upto BlockSize - BlockSize%4 */ + while(blkCnt > 0u) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set accumulator to zero */ + acc = 0; + + /* Initialize state pointer of type q7 */ + px = pState; + + /* Initialize coeff pointer of type q7 */ + pb = pCoeffs; + + + i = numTaps; + + while(i > 0u) + { + /* acc = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */ + acc += (q15_t) * px++ * *pb++; + i--; + } + + /* Store the 1.7 format filter output in destination buffer */ + *pDst++ = (q7_t) __SSAT((acc >> 7), 8); + + /* Advance the state pointer by 1 to process the next sample */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + + /* Copy numTaps number of values */ + i = (numTaps - 1u); + + /* Copy q7_t data */ + while(i > 0u) + { + *pStateCurnt++ = *pState++; + i--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of FIR group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_f32.c new file mode 100644 index 000000000..aaede629a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_f32.c @@ -0,0 +1,362 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_sparse_f32.c +* +* Description: Floating-point sparse FIR filter processing function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ------------------------------------------------------------------- */ +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup FIR_Sparse Finite Impulse Response (FIR) Sparse Filters + * + * This group of functions implements sparse FIR filters. + * Sparse FIR filters are equivalent to standard FIR filters except that most of the coefficients are equal to zero. + * Sparse filters are used for simulating reflections in communications and audio applications. + * + * There are separate functions for Q7, Q15, Q31, and floating-point data types. + * The functions operate on blocks of input and output data and each call to the function processes + * blockSize samples through the filter. pSrc and + * pDst points to input and output arrays respectively containing blockSize values. + * + * \par Algorithm: + * The sparse filter instant structure contains an array of tap indices pTapDelay which specifies the locations of the non-zero coefficients. + * This is in addition to the coefficient array b. + * The implementation essentially skips the multiplications by zero and leads to an efficient realization. + *
  
+ *     y[n] = b[0] * x[n-pTapDelay[0]] + b[1] * x[n-pTapDelay[1]] + b[2] * x[n-pTapDelay[2]] + ...+ b[numTaps-1] * x[n-pTapDelay[numTaps-1]]   
+ * 
+ * \par + * \image html FIRSparse.gif "Sparse FIR filter. b[n] represents the filter coefficients" + * \par + * pCoeffs points to a coefficient array of size numTaps; + * pTapDelay points to an array of nonzero indices and is also of size numTaps; + * pState points to a state array of size maxDelay + blockSize, where + * maxDelay is the largest offset value that is ever used in the pTapDelay array. + * Some of the processing functions also require temporary working buffers. + * + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter. + * Coefficient and offset arrays may be shared among several instances while state variable arrays cannot be shared. + * There are separate instance structure declarations for each of the 4 supported data types. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * Set the values in the state buffer to zeros before static initialization. + * The code below statically initializes each of the 4 different data type filter instance structures + *
   
+ *arm_fir_sparse_instance_f32 S = {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};   
+ *arm_fir_sparse_instance_q31 S = {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};   
+ *arm_fir_sparse_instance_q15 S = {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};   
+ *arm_fir_sparse_instance_q7 S =  {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};   
+ * 
+ * \par + * + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the sparse FIR filter functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + +/** + * @addtogroup FIR_Sparse + * @{ + */ + +/** + * @brief Processing function for the floating-point sparse FIR filter. + * @param[in] *S points to an instance of the floating-point sparse FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] *pScratchIn points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ + +void arm_fir_sparse_f32( + arm_fir_sparse_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + float32_t * pScratchIn, + uint32_t blockSize) +{ + + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *px; /* Scratch buffer pointer */ + float32_t *py = pState; /* Temporary pointers for state buffer */ + float32_t *pb = pScratchIn; /* Temporary pointers for scratch buffer */ + float32_t *pOut; /* Destination pointer */ + int32_t *pTapDelay = S->pTapDelay; /* Pointer to the array containing offset of the non-zero tap values. */ + uint32_t delaySize = S->maxDelay + blockSize; /* state length */ + uint16_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + int32_t readIndex; /* Read index of the state buffer */ + uint32_t tapCnt, blkCnt; /* loop counters */ + float32_t coeff = *pCoeffs++; /* Read the first coefficient value */ + + + + /* BlockSize of Input samples are copied into the state buffer */ + /* StateIndex points to the starting position to write in the state buffer */ + arm_circularWrite_f32((int32_t *) py, delaySize, &S->stateIndex, 1, + (int32_t *) pSrc, 1, blockSize); + + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer */ + px = pb; + + /* Working pointer for destination buffer */ + pOut = pDst; + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 Multiplications at a time. */ + blkCnt = blockSize >> 2u; + + while(blkCnt > 0u) + { + /* Perform Multiplications and store in destination buffer */ + *pOut++ = *px++ * coeff; + *pOut++ = *px++ * coeff; + *pOut++ = *px++ * coeff; + *pOut++ = *px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* Perform Multiplications and store in destination buffer */ + *pOut++ = *px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 1u; + + while(tapCnt > 0u) + { + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer */ + px = pb; + + /* Working pointer for destination buffer */ + pOut = pDst; + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 MACS at a time. */ + blkCnt = blockSize >> 2u; + + while(blkCnt > 0u) + { + /* Perform Multiply-Accumulate */ + *pOut++ += *px++ * coeff; + *pOut++ += *px++ * coeff; + *pOut++ += *px++ * coeff; + *pOut++ += *px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* Perform Multiply-Accumulate */ + *pOut++ += *px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - + (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } + +#else + +/* Run the below code for Cortex-M0 */ + + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* Perform Multiplications and store in destination buffer */ + *pOut++ = *px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 1u; + + while(tapCnt > 0u) + { + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer */ + px = pb; + + /* Working pointer for destination buffer */ + pOut = pDst; + + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* Perform Multiply-Accumulate */ + *pOut++ += *px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = + ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of FIR_Sparse group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_f32.c new file mode 100644 index 000000000..3e423a1bf --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_f32.c @@ -0,0 +1,99 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_sparse_init_f32.c +* +* Description: Floating-point sparse FIR filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Sparse + * @{ + */ + +/** + * @brief Initialization function for the floating-point sparse FIR filter. + * @param[in,out] *S points to an instance of the floating-point sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] *pCoeffs points to the array of filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] *pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + * @return none + * + * Description: + * \par + * pCoeffs holds the filter coefficients and has length numTaps. + * pState holds the filter's state variables and must be of length + * maxDelay + blockSize, where maxDelay + * is the maximum number of delay line values. + * blockSize is the + * number of samples processed by the arm_fir_sparse_f32() function. + */ + +void arm_fir_sparse_init_f32( + arm_fir_sparse_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Assign TapDelay pointer */ + S->pTapDelay = pTapDelay; + + /* Assign MaxDelay */ + S->maxDelay = maxDelay; + + /* reset the stateIndex to 0 */ + S->stateIndex = 0u; + + /* Clear state buffer and size is always maxDelay + blockSize */ + memset(pState, 0, (maxDelay + blockSize) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR_Sparse group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q15.c new file mode 100644 index 000000000..196b45eec --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q15.c @@ -0,0 +1,99 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_sparse_init_q15.c +* +* Description: Q15 sparse FIR filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Sparse + * @{ + */ + +/** + * @brief Initialization function for the Q15 sparse FIR filter. + * @param[in,out] *S points to an instance of the Q15 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] *pCoeffs points to the array of filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] *pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + * @return none + * + * Description: + * \par + * pCoeffs holds the filter coefficients and has length numTaps. + * pState holds the filter's state variables and must be of length + * maxDelay + blockSize, where maxDelay + * is the maximum number of delay line values. + * blockSize is the + * number of words processed by arm_fir_sparse_q15() function. + */ + +void arm_fir_sparse_init_q15( + arm_fir_sparse_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Assign TapDelay pointer */ + S->pTapDelay = pTapDelay; + + /* Assign MaxDelay */ + S->maxDelay = maxDelay; + + /* reset the stateIndex to 0 */ + S->stateIndex = 0u; + + /* Clear state buffer and size is always maxDelay + blockSize */ + memset(pState, 0, (maxDelay + blockSize) * sizeof(q15_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR_Sparse group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q31.c new file mode 100644 index 000000000..7d1f35d13 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q31.c @@ -0,0 +1,98 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_sparse_init_q31.c +* +* Description: Q31 sparse FIR filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Sparse + * @{ + */ + +/** + * @brief Initialization function for the Q31 sparse FIR filter. + * @param[in,out] *S points to an instance of the Q31 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] *pCoeffs points to the array of filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] *pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + * @return none + * + * Description: + * \par + * pCoeffs holds the filter coefficients and has length numTaps. + * pState holds the filter's state variables and must be of length + * maxDelay + blockSize, where maxDelay + * is the maximum number of delay line values. + * blockSize is the number of words processed by arm_fir_sparse_q31() function. + */ + +void arm_fir_sparse_init_q31( + arm_fir_sparse_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Assign TapDelay pointer */ + S->pTapDelay = pTapDelay; + + /* Assign MaxDelay */ + S->maxDelay = maxDelay; + + /* reset the stateIndex to 0 */ + S->stateIndex = 0u; + + /* Clear state buffer and size is always maxDelay + blockSize */ + memset(pState, 0, (maxDelay + blockSize) * sizeof(q31_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR_Sparse group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q7.c new file mode 100644 index 000000000..c93d6a2c2 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q7.c @@ -0,0 +1,99 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_sparse_init_q7.c +* +* Description: Q7 sparse FIR filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Sparse + * @{ + */ + +/** + * @brief Initialization function for the Q7 sparse FIR filter. + * @param[in,out] *S points to an instance of the Q7 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] *pCoeffs points to the array of filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] *pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + * @return none + * + * Description: + * \par + * pCoeffs holds the filter coefficients and has length numTaps. + * pState holds the filter's state variables and must be of length + * maxDelay + blockSize, where maxDelay + * is the maximum number of delay line values. + * blockSize is the + * number of samples processed by the arm_fir_sparse_q7() function. + */ + +void arm_fir_sparse_init_q7( + arm_fir_sparse_instance_q7 * S, + uint16_t numTaps, + q7_t * pCoeffs, + q7_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Assign TapDelay pointer */ + S->pTapDelay = pTapDelay; + + /* Assign MaxDelay */ + S->maxDelay = maxDelay; + + /* reset the stateIndex to 0 */ + S->stateIndex = 0u; + + /* Clear state buffer and size is always maxDelay + blockSize */ + memset(pState, 0, (maxDelay + blockSize) * sizeof(q7_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR_Sparse group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q15.c new file mode 100644 index 000000000..28abfa52c --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q15.c @@ -0,0 +1,403 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_sparse_q15.c +* +* Description: Q15 sparse FIR filter processing function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ------------------------------------------------------------------- */ +#include "arm_math.h" + +/** + * @addtogroup FIR_Sparse + * @{ + */ + +/** + * @brief Processing function for the Q15 sparse FIR filter. + * @param[in] *S points to an instance of the Q15 sparse FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] *pScratchIn points to a temporary buffer of size blockSize. + * @param[in] *pScratchOut points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The 1.15 x 1.15 multiplications yield a 2.30 result and these are added to a 2.30 accumulator. + * Thus the full precision of the multiplications is maintained but there is only a single guard bit in the accumulator. + * If the accumulator result overflows it will wrap around rather than saturate. + * After all multiply-accumulates are performed, the 2.30 accumulator is truncated to 2.15 format and then saturated to 1.15 format. + * In order to avoid overflows the input signal or coefficients must be scaled down by log2(numTaps) bits. + */ + + +void arm_fir_sparse_q15( + arm_fir_sparse_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + q15_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize) +{ + + q15_t *pState = S->pState; /* State pointer */ + q15_t *pIn = pSrc; /* Working pointer for input */ + q15_t *pOut = pDst; /* Working pointer for output */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *px; /* Temporary pointers for scratch buffer */ + q15_t *pb = pScratchIn; /* Temporary pointers for scratch buffer */ + q15_t *py = pState; /* Temporary pointers for state buffer */ + int32_t *pTapDelay = S->pTapDelay; /* Pointer to the array containing offset of the non-zero tap values. */ + uint32_t delaySize = S->maxDelay + blockSize; /* state length */ + uint16_t numTaps = S->numTaps; /* Filter order */ + int32_t readIndex; /* Read index of the state buffer */ + uint32_t tapCnt, blkCnt; /* loop counters */ + q15_t coeff = *pCoeffs++; /* Read the first coefficient value */ + q31_t *pScr2 = pScratchOut; /* Working pointer for pScratchOut */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t in1, in2; /* Temporary variables */ + + + /* BlockSize of Input samples are copied into the state buffer */ + /* StateIndex points to the starting position to write in the state buffer */ + arm_circularWrite_q15(py, delaySize, &S->stateIndex, 1, pIn, 1, blockSize); + + /* Loop over the number of taps. */ + tapCnt = numTaps; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q15(py, delaySize, &readIndex, 1, + pb, pb, blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 multiplications at a time. */ + blkCnt = blockSize >> 2; + + while(blkCnt > 0u) + { + /* Perform multiplication and store in the scratch buffer */ + *pScratchOut++ = ((q31_t) * px++ * coeff); + *pScratchOut++ = ((q31_t) * px++ * coeff); + *pScratchOut++ = ((q31_t) * px++ * coeff); + *pScratchOut++ = ((q31_t) * px++ * coeff); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* Perform multiplication and store in the scratch buffer */ + *pScratchOut++ = ((q31_t) * px++ * coeff); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 1u; + + while(tapCnt > 0u) + { + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q15(py, delaySize, &readIndex, 1, + pb, pb, blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 MACS at a time. */ + blkCnt = blockSize >> 2; + + while(blkCnt > 0u) + { + /* Perform Multiply-Accumulate */ + *pScratchOut++ += (q31_t) * px++ * coeff; + *pScratchOut++ += (q31_t) * px++ * coeff; + *pScratchOut++ += (q31_t) * px++ * coeff; + *pScratchOut++ += (q31_t) * px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* Perform Multiply-Accumulate */ + *pScratchOut++ += (q31_t) * px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } + + /* All the output values are in pScratchOut buffer. + Convert them into 1.15 format, saturate and store in the destination buffer. */ + /* Loop over the blockSize. */ + blkCnt = blockSize >> 2; + + while(blkCnt > 0u) + { + in1 = *pScr2++; + in2 = *pScr2++; + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = + __PKHBT((q15_t) __SSAT(in1 >> 15, 16), (q15_t) __SSAT(in2 >> 15, 16), + 16); + +#else + *__SIMD32(pOut)++ = + __PKHBT((q15_t) __SSAT(in2 >> 15, 16), (q15_t) __SSAT(in1 >> 15, 16), + 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + in1 = *pScr2++; + + in2 = *pScr2++; + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = + __PKHBT((q15_t) __SSAT(in1 >> 15, 16), (q15_t) __SSAT(in2 >> 15, 16), + 16); + +#else + + *__SIMD32(pOut)++ = + __PKHBT((q15_t) __SSAT(in2 >> 15, 16), (q15_t) __SSAT(in1 >> 15, 16), + 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + + blkCnt--; + + } + + /* If the blockSize is not a multiple of 4, + remaining samples are processed in the below loop */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + *pOut++ = (q15_t) __SSAT(*pScr2++ >> 15, 16); + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* BlockSize of Input samples are copied into the state buffer */ + /* StateIndex points to the starting position to write in the state buffer */ + arm_circularWrite_q15(py, delaySize, &S->stateIndex, 1, pIn, 1, blockSize); + + /* Loop over the number of taps. */ + tapCnt = numTaps; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q15(py, delaySize, &readIndex, 1, + pb, pb, blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* Perform multiplication and store in the scratch buffer */ + *pScratchOut++ = ((q31_t) * px++ * coeff); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 1u; + + while(tapCnt > 0u) + { + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q15(py, delaySize, &readIndex, 1, + pb, pb, blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* Perform Multiply-Accumulate */ + *pScratchOut++ += (q31_t) * px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } + + /* All the output values are in pScratchOut buffer. + Convert them into 1.15 format, saturate and store in the destination buffer. */ + /* Loop over the blockSize. */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + *pOut++ = (q15_t) __SSAT(*pScr2++ >> 15, 16); + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of FIR_Sparse group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q31.c new file mode 100644 index 000000000..5bbd110cf --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q31.c @@ -0,0 +1,367 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_sparse_q31.c +* +* Description: Q31 sparse FIR filter processing function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ------------------------------------------------------------------- */ +#include "arm_math.h" + + +/** + * @addtogroup FIR_Sparse + * @{ + */ + +/** + * @brief Processing function for the Q31 sparse FIR filter. + * @param[in] *S points to an instance of the Q31 sparse FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] *pScratchIn points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The 1.31 x 1.31 multiplications are truncated to 2.30 format. + * This leads to loss of precision on the intermediate multiplications and provides only a single guard bit. + * If the accumulator result overflows, it wraps around rather than saturate. + * In order to avoid overflows the input signal or coefficients must be scaled down by log2(numTaps) bits. + */ + +void arm_fir_sparse_q31( + arm_fir_sparse_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + q31_t * pScratchIn, + uint32_t blockSize) +{ + + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *px; /* Scratch buffer pointer */ + q31_t *py = pState; /* Temporary pointers for state buffer */ + q31_t *pb = pScratchIn; /* Temporary pointers for scratch buffer */ + q31_t *pOut; /* Destination pointer */ + q63_t out; /* Temporary output variable */ + int32_t *pTapDelay = S->pTapDelay; /* Pointer to the array containing offset of the non-zero tap values. */ + uint32_t delaySize = S->maxDelay + blockSize; /* state length */ + uint16_t numTaps = S->numTaps; /* Filter order */ + int32_t readIndex; /* Read index of the state buffer */ + uint32_t tapCnt, blkCnt; /* loop counters */ + q31_t coeff = *pCoeffs++; /* Read the first coefficient value */ + q31_t in; + + + /* BlockSize of Input samples are copied into the state buffer */ + /* StateIndex points to the starting position to write in the state buffer */ + arm_circularWrite_f32((int32_t *) py, delaySize, &S->stateIndex, 1, + (int32_t *) pSrc, 1, blockSize); + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pOut = pDst; + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 Multiplications at a time. */ + blkCnt = blockSize >> 2; + + while(blkCnt > 0u) + { + /* Perform Multiplications and store in the destination buffer */ + *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32); + *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32); + *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32); + *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* Perform Multiplications and store in the destination buffer */ + *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 1u; + + while(tapCnt > 0u) + { + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pOut = pDst; + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 MACS at a time. */ + blkCnt = blockSize >> 2; + + while(blkCnt > 0u) + { + out = *pOut; + out += ((q63_t) * px++ * coeff) >> 32; + *pOut++ = (q31_t) (out); + + out = *pOut; + out += ((q63_t) * px++ * coeff) >> 32; + *pOut++ = (q31_t) (out); + + out = *pOut; + out += ((q63_t) * px++ * coeff) >> 32; + *pOut++ = (q31_t) (out); + + out = *pOut; + out += ((q63_t) * px++ * coeff) >> 32; + *pOut++ = (q31_t) (out); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* Perform Multiply-Accumulate */ + out = *pOut; + out += ((q63_t) * px++ * coeff) >> 32; + *pOut++ = (q31_t) (out); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } + + /* Working output pointer is updated */ + pOut = pDst; + + /* Output is converted into 1.31 format. */ + /* Loop over the blockSize. Unroll by a factor of 4. + * process 4 output samples at a time. */ + blkCnt = blockSize >> 2; + + while(blkCnt > 0u) + { + in = *pOut << 1; + *pOut++ = in; + in = *pOut << 1; + *pOut++ = in; + in = *pOut << 1; + *pOut++ = in; + in = *pOut << 1; + *pOut++ = in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * process the remaining output samples */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + in = *pOut << 1; + *pOut++ = in; + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* Perform Multiplications and store in the destination buffer */ + *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 1u; + + while(tapCnt > 0u) + { + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pOut = pDst; + + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* Perform Multiply-Accumulate */ + out = *pOut; + out += ((q63_t) * px++ * coeff) >> 32; + *pOut++ = (q31_t) (out); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } + + /* Working output pointer is updated */ + pOut = pDst; + + /* Output is converted into 1.31 format. */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + in = *pOut << 1; + *pOut++ = in; + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of FIR_Sparse group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q7.c new file mode 100644 index 000000000..bcba31a74 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q7.c @@ -0,0 +1,395 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fir_sparse_q7.c +* +* Description: Q7 sparse FIR filter processing function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ------------------------------------------------------------------- */ +#include "arm_math.h" + + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Sparse + * @{ + */ + + +/** + * @brief Processing function for the Q7 sparse FIR filter. + * @param[in] *S points to an instance of the Q7 sparse FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] *pScratchIn points to a temporary buffer of size blockSize. + * @param[in] *pScratchOut points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 32-bit internal accumulator. + * Both coefficients and state variables are represented in 1.7 format and multiplications yield a 2.14 result. + * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * The accumulator is then converted to 18.7 format by discarding the low 7 bits. + * Finally, the result is truncated to 1.7 format. + */ + +void arm_fir_sparse_q7( + arm_fir_sparse_instance_q7 * S, + q7_t * pSrc, + q7_t * pDst, + q7_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize) +{ + + q7_t *pState = S->pState; /* State pointer */ + q7_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q7_t *px; /* Scratch buffer pointer */ + q7_t *py = pState; /* Temporary pointers for state buffer */ + q7_t *pb = pScratchIn; /* Temporary pointers for scratch buffer */ + q7_t *pOut = pDst; /* Destination pointer */ + int32_t *pTapDelay = S->pTapDelay; /* Pointer to the array containing offset of the non-zero tap values. */ + uint32_t delaySize = S->maxDelay + blockSize; /* state length */ + uint16_t numTaps = S->numTaps; /* Filter order */ + int32_t readIndex; /* Read index of the state buffer */ + uint32_t tapCnt, blkCnt; /* loop counters */ + q7_t coeff = *pCoeffs++; /* Read the coefficient value */ + q31_t *pScr2 = pScratchOut; /* Working pointer for scratch buffer of output values */ + q31_t in; + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q7_t in1, in2, in3, in4; + + /* BlockSize of Input samples are copied into the state buffer */ + /* StateIndex points to the starting position to write in the state buffer */ + arm_circularWrite_q7(py, (int32_t) delaySize, &S->stateIndex, 1, pSrc, 1, + blockSize); + + /* Loop over the number of taps. */ + tapCnt = numTaps; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb, + (int32_t) blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 multiplications at a time. */ + blkCnt = blockSize >> 2; + + while(blkCnt > 0u) + { + /* Perform multiplication and store in the scratch buffer */ + *pScratchOut++ = ((q31_t) * px++ * coeff); + *pScratchOut++ = ((q31_t) * px++ * coeff); + *pScratchOut++ = ((q31_t) * px++ * coeff); + *pScratchOut++ = ((q31_t) * px++ * coeff); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* Perform multiplication and store in the scratch buffer */ + *pScratchOut++ = ((q31_t) * px++ * coeff); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 1u; + + while(tapCnt > 0u) + { + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb, + (int32_t) blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 MACS at a time. */ + blkCnt = blockSize >> 2; + + while(blkCnt > 0u) + { + /* Perform Multiply-Accumulate */ + in = *pScratchOut + ((q31_t) * px++ * coeff); + *pScratchOut++ = in; + in = *pScratchOut + ((q31_t) * px++ * coeff); + *pScratchOut++ = in; + in = *pScratchOut + ((q31_t) * px++ * coeff); + *pScratchOut++ = in; + in = *pScratchOut + ((q31_t) * px++ * coeff); + *pScratchOut++ = in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* Perform Multiply-Accumulate */ + in = *pScratchOut + ((q31_t) * px++ * coeff); + *pScratchOut++ = in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - + (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } + + /* All the output values are in pScratchOut buffer. + Convert them into 1.15 format, saturate and store in the destination buffer. */ + /* Loop over the blockSize. */ + blkCnt = blockSize >> 2; + + while(blkCnt > 0u) + { + in1 = (q7_t) __SSAT(*pScr2++ >> 7, 8); + in2 = (q7_t) __SSAT(*pScr2++ >> 7, 8); + in3 = (q7_t) __SSAT(*pScr2++ >> 7, 8); + in4 = (q7_t) __SSAT(*pScr2++ >> 7, 8); + + *__SIMD32(pOut)++ = __PACKq7(in1, in2, in3, in4); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + remaining samples are processed in the below loop */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + *pOut++ = (q7_t) __SSAT(*pScr2++ >> 7, 8); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* BlockSize of Input samples are copied into the state buffer */ + /* StateIndex points to the starting position to write in the state buffer */ + arm_circularWrite_q7(py, (int32_t) delaySize, &S->stateIndex, 1, pSrc, 1, + blockSize); + + /* Loop over the number of taps. */ + tapCnt = numTaps; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb, + (int32_t) blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + /* Loop over the blockSize */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* Perform multiplication and store in the scratch buffer */ + *pScratchOut++ = ((q31_t) * px++ * coeff); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 1u; + + while(tapCnt > 0u) + { + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb, + (int32_t) blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + /* Loop over the blockSize */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* Perform Multiply-Accumulate */ + in = *pScratchOut + ((q31_t) * px++ * coeff); + *pScratchOut++ = in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = + ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if(readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } + + /* All the output values are in pScratchOut buffer. + Convert them into 1.15 format, saturate and store in the destination buffer. */ + /* Loop over the blockSize. */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + *pOut++ = (q7_t) __SSAT(*pScr2++ >> 7, 8); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of FIR_Sparse group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_f32.c new file mode 100644 index 000000000..6185ccdc2 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_f32.c @@ -0,0 +1,402 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_iir_lattice_f32.c +* +* Description: Floating-point IIR Lattice filter processing function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup IIR_Lattice Infinite Impulse Response (IIR) Lattice Filters + * + * This set of functions implements lattice filters + * for Q15, Q31 and floating-point data types. Lattice filters are used in a + * variety of adaptive filter applications. The filter structure has feedforward and + * feedback components and the net impulse response is infinite length. + * The functions operate on blocks + * of input and output data and each call to the function processes + * blockSize samples through the filter. pSrc and + * pDst point to input and output arrays containing blockSize values. + + * \par Algorithm: + * \image html IIRLattice.gif "Infinite Impulse Response Lattice filter" + *
   
+ *    fN(n)   =  x(n)   
+ *    fm-1(n) = fm(n) - km * gm-1(n-1)   for m = N, N-1, ...1   
+ *    gm(n)   = km * fm-1(n) + gm-1(n-1) for m = N, N-1, ...1   
+ *    y(n)    = vN * gN(n) + vN-1 * gN-1(n) + ...+ v0 * g0(n)   
+ * 
+ * \par + * pkCoeffs points to array of reflection coefficients of size numStages. + * Reflection coefficients are stored in time-reversed order. + * \par + *
   
+ *    {kN, kN-1, ....k1}   
+ * 
+ * pvCoeffs points to the array of ladder coefficients of size (numStages+1). + * Ladder coefficients are stored in time-reversed order. + * \par + *
   
+ *    {vN, vN-1, ...v0}   
+ * 
+ * pState points to a state array of size numStages + blockSize. + * The state variables shown in the figure above (the g values) are stored in the pState array. + * The state variables are updated after each block of data is processed; the coefficients are untouched. + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter. + * Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * Set the values in the state buffer to zeros and then manually initialize the instance structure as follows: + *
   
+ *arm_iir_lattice_instance_f32 S = {numStages, pState, pkCoeffs, pvCoeffs};   
+ *arm_iir_lattice_instance_q31 S = {numStages, pState, pkCoeffs, pvCoeffs};   
+ *arm_iir_lattice_instance_q15 S = {numStages, pState, pkCoeffs, pvCoeffs};   
+ * 
+ * \par + * where numStages is the number of stages in the filter; pState points to the state buffer array; + * pkCoeffs points to array of the reflection coefficients; pvCoeffs points to the array of ladder coefficients. + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the IIR lattice filter functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + +/** + * @addtogroup IIR_Lattice + * @{ + */ + +/** + * @brief Processing function for the floating-point IIR lattice filter. + * @param[in] *S points to an instance of the floating-point IIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + +void arm_iir_lattice_f32( + const arm_iir_lattice_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + float32_t fcurr, fnext = 0, gcurr, gnext; /* Temporary variables for lattice stages */ + float32_t acc; /* Accumlator */ + uint32_t blkCnt, tapCnt; /* temporary variables for counts */ + float32_t *px1, *px2, *pk, *pv; /* temporary pointers for state and coef */ + uint32_t numStages = S->numStages; /* number of stages */ + float32_t *pState; /* State pointer */ + float32_t *pStateCurnt; /* State current pointer */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + gcurr = 0.0f; + blkCnt = blockSize; + + pState = &S->pState[0]; + + /* Sample processing */ + while(blkCnt > 0u) + { + /* Read Sample from input buffer */ + /* fN(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize state read pointer */ + px1 = pState; + /* Initialize state write pointer */ + px2 = pState; + /* Set accumulator to zero */ + acc = 0.0f; + /* Initialize Ladder coeff pointer */ + pv = &S->pvCoeffs[0]; + /* Initialize Reflection coeff pointer */ + pk = &S->pkCoeffs[0]; + + + /* Process sample for first tap */ + gcurr = *px1++; + /* fN-1(n) = fN(n) - kN * gN-1(n-1) */ + fnext = fcurr - ((*pk) * gcurr); + /* gN(n) = kN * fN-1(n) + gN-1(n-1) */ + gnext = (fnext * (*pk++)) + gcurr; + /* write gN(n) into state for next sample processing */ + *px2++ = gnext; + /* y(n) += gN(n) * vN */ + acc += (gnext * (*pv++)); + + /* Update f values for next coefficient processing */ + fcurr = fnext; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = (numStages - 1u) >> 2; + + while(tapCnt > 0u) + { + /* Process sample for 2nd, 6th ...taps */ + /* Read gN-2(n-1) from state buffer */ + gcurr = *px1++; + /* Process sample for 2nd, 6th .. taps */ + /* fN-2(n) = fN-1(n) - kN-1 * gN-2(n-1) */ + fnext = fcurr - ((*pk) * gcurr); + /* gN-1(n) = kN-1 * fN-2(n) + gN-2(n-1) */ + gnext = (fnext * (*pk++)) + gcurr; + /* y(n) += gN-1(n) * vN-1 */ + /* process for gN-5(n) * vN-5, gN-9(n) * vN-9 ... */ + acc += (gnext * (*pv++)); + /* write gN-1(n) into state for next sample processing */ + *px2++ = gnext; + + + /* Process sample for 3nd, 7th ...taps */ + /* Read gN-3(n-1) from state buffer */ + gcurr = *px1++; + /* Process sample for 3rd, 7th .. taps */ + /* fN-3(n) = fN-2(n) - kN-2 * gN-3(n-1) */ + fcurr = fnext - ((*pk) * gcurr); + /* gN-2(n) = kN-2 * fN-3(n) + gN-3(n-1) */ + gnext = (fcurr * (*pk++)) + gcurr; + /* y(n) += gN-2(n) * vN-2 */ + /* process for gN-6(n) * vN-6, gN-10(n) * vN-10 ... */ + acc += (gnext * (*pv++)); + /* write gN-2(n) into state for next sample processing */ + *px2++ = gnext; + + + /* Process sample for 4th, 8th ...taps */ + /* Read gN-4(n-1) from state buffer */ + gcurr = *px1++; + /* Process sample for 4th, 8th .. taps */ + /* fN-4(n) = fN-3(n) - kN-3 * gN-4(n-1) */ + fnext = fcurr - ((*pk) * gcurr); + /* gN-3(n) = kN-3 * fN-4(n) + gN-4(n-1) */ + gnext = (fnext * (*pk++)) + gcurr; + /* y(n) += gN-3(n) * vN-3 */ + /* process for gN-7(n) * vN-7, gN-11(n) * vN-11 ... */ + acc += (gnext * (*pv++)); + /* write gN-3(n) into state for next sample processing */ + *px2++ = gnext; + + + /* Process sample for 5th, 9th ...taps */ + /* Read gN-5(n-1) from state buffer */ + gcurr = *px1++; + /* Process sample for 5th, 9th .. taps */ + /* fN-5(n) = fN-4(n) - kN-4 * gN-1(n-1) */ + fcurr = fnext - ((*pk) * gcurr); + /* gN-4(n) = kN-4 * fN-5(n) + gN-5(n-1) */ + gnext = (fcurr * (*pk++)) + gcurr; + /* y(n) += gN-4(n) * vN-4 */ + /* process for gN-8(n) * vN-8, gN-12(n) * vN-12 ... */ + acc += (gnext * (*pv++)); + /* write gN-4(n) into state for next sample processing */ + *px2++ = gnext; + + tapCnt--; + + } + + fnext = fcurr; + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = (numStages - 1u) % 0x4u; + + while(tapCnt > 0u) + { + gcurr = *px1++; + /* Process sample for last taps */ + fnext = fcurr - ((*pk) * gcurr); + gnext = (fnext * (*pk++)) + gcurr; + /* Output samples for last taps */ + acc += (gnext * (*pv++)); + *px2++ = gnext; + fcurr = fnext; + + tapCnt--; + + } + + + /* y(n) += g0(n) * v0 */ + acc += (fnext * (*pv)); + + *px2++ = fnext; + + /* write out into pDst */ + *pDst++ = acc; + + /* Advance the state pointer by 4 to process the next group of 4 samples */ + pState = pState + 1u; + blkCnt--; + + } + + /* Processing is complete. Now copy last S->numStages samples to start of the buffer + for the preperation of next frame process */ + + /* Points to the start of the state buffer */ + pStateCurnt = &S->pState[0]; + pState = &S->pState[blockSize]; + + tapCnt = numStages >> 2u; + + /* copy data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + + } + + /* Calculate remaining number of copies */ + tapCnt = (numStages) % 0x4u; + + /* Copy the remaining q31_t data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + blkCnt = blockSize; + + pState = &S->pState[0]; + + /* Sample processing */ + while(blkCnt > 0u) + { + /* Read Sample from input buffer */ + /* fN(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize state read pointer */ + px1 = pState; + /* Initialize state write pointer */ + px2 = pState; + /* Set accumulator to zero */ + acc = 0.0f; + /* Initialize Ladder coeff pointer */ + pv = &S->pvCoeffs[0]; + /* Initialize Reflection coeff pointer */ + pk = &S->pkCoeffs[0]; + + + /* Process sample for numStages */ + tapCnt = numStages; + + while(tapCnt > 0u) + { + gcurr = *px1++; + /* Process sample for last taps */ + fnext = fcurr - ((*pk) * gcurr); + gnext = (fnext * (*pk++)) + gcurr; + + /* Output samples for last taps */ + acc += (gnext * (*pv++)); + *px2++ = gnext; + fcurr = fnext; + + /* Decrementing loop counter */ + tapCnt--; + + } + + /* y(n) += g0(n) * v0 */ + acc += (fnext * (*pv)); + + *px2++ = fnext; + + /* write out into pDst */ + *pDst++ = acc; + + /* Advance the state pointer by 1 to process the next group of samples */ + pState = pState + 1u; + blkCnt--; + + } + + /* Processing is complete. Now copy last S->numStages samples to start of the buffer + for the preperation of next frame process */ + + /* Points to the start of the state buffer */ + pStateCurnt = &S->pState[0]; + pState = &S->pState[blockSize]; + + tapCnt = numStages; + + /* Copy the data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + + + + +/** + * @} end of IIR_Lattice group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_f32.c new file mode 100644 index 000000000..07f58b991 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_f32.c @@ -0,0 +1,83 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_iir_lattice_init_f32.c +* +* Description: Floating-point IIR lattice filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup IIR_Lattice + * @{ + */ + +/** + * @brief Initialization function for the floating-point IIR lattice filter. + * @param[in] *S points to an instance of the floating-point IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] *pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. + * @param[in] *pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. + * @param[in] *pState points to the state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process. + * @return none. + */ + +void arm_iir_lattice_init_f32( + arm_iir_lattice_instance_f32 * S, + uint16_t numStages, + float32_t * pkCoeffs, + float32_t * pvCoeffs, + float32_t * pState, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numStages = numStages; + + /* Assign reflection coefficient pointer */ + S->pkCoeffs = pkCoeffs; + + /* Assign ladder coefficient pointer */ + S->pvCoeffs = pvCoeffs; + + /* Clear state buffer and size is always blockSize + numStages */ + memset(pState, 0, (numStages + blockSize) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; + + +} + + /** + * @} end of IIR_Lattice group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q15.c new file mode 100644 index 000000000..d346a93fc --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q15.c @@ -0,0 +1,83 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_iir_lattice_init_q15.c +* +* Description: Q15 IIR lattice filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup IIR_Lattice + * @{ + */ + + /** + * @brief Initialization function for the Q15 IIR lattice filter. + * @param[in] *S points to an instance of the Q15 IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] *pkCoeffs points to reflection coefficient buffer. The array is of length numStages. + * @param[in] *pvCoeffs points to ladder coefficient buffer. The array is of length numStages+1. + * @param[in] *pState points to state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process per call. + * @return none. + */ + +void arm_iir_lattice_init_q15( + arm_iir_lattice_instance_q15 * S, + uint16_t numStages, + q15_t * pkCoeffs, + q15_t * pvCoeffs, + q15_t * pState, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numStages = numStages; + + /* Assign reflection coefficient pointer */ + S->pkCoeffs = pkCoeffs; + + /* Assign ladder coefficient pointer */ + S->pvCoeffs = pvCoeffs; + + /* Clear state buffer and size is always blockSize + numStages */ + memset(pState, 0, (numStages + blockSize) * sizeof(q15_t)); + + /* Assign state pointer */ + S->pState = pState; + + +} + +/** + * @} end of IIR_Lattice group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q31.c new file mode 100644 index 000000000..d3fe2df64 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q31.c @@ -0,0 +1,83 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_iir_lattice_init_q31.c +* +* Description: Initialization function for the Q31 IIR lattice filter. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup IIR_Lattice + * @{ + */ + + /** + * @brief Initialization function for the Q31 IIR lattice filter. + * @param[in] *S points to an instance of the Q31 IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] *pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. + * @param[in] *pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. + * @param[in] *pState points to the state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process. + * @return none. + */ + +void arm_iir_lattice_init_q31( + arm_iir_lattice_instance_q31 * S, + uint16_t numStages, + q31_t * pkCoeffs, + q31_t * pvCoeffs, + q31_t * pState, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numStages = numStages; + + /* Assign reflection coefficient pointer */ + S->pkCoeffs = pkCoeffs; + + /* Assign ladder coefficient pointer */ + S->pvCoeffs = pvCoeffs; + + /* Clear state buffer and size is always blockSize + numStages */ + memset(pState, 0, (numStages + blockSize) * sizeof(q31_t)); + + /* Assign state pointer */ + S->pState = pState; + + +} + +/** + * @} end of IIR_Lattice group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q15.c new file mode 100644 index 000000000..d8233373e --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q15.c @@ -0,0 +1,403 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_iir_lattice_q15.c +* +* Description: Q15 IIR lattice filter processing function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup IIR_Lattice + * @{ + */ + +/** + * @brief Processing function for the Q15 IIR lattice filter. + * @param[in] *S points to an instance of the Q15 IIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. + * Lastly, the accumulator is saturated to yield a result in 1.15 format. + */ + +void arm_iir_lattice_q15( + const arm_iir_lattice_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t fcurr, fnext, gcurr = 0, gnext; /* Temporary variables for lattice stages */ + q15_t gnext1, gnext2; /* Temporary variables for lattice stages */ + uint32_t stgCnt; /* Temporary variables for counts */ + q63_t acc; /* Accumlator */ + uint32_t blkCnt, tapCnt; /* Temporary variables for counts */ + q15_t *px1, *px2, *pk, *pv; /* temporary pointers for state and coef */ + uint32_t numStages = S->numStages; /* number of stages */ + q15_t *pState; /* State pointer */ + q15_t *pStateCurnt; /* State current pointer */ + q15_t out; /* Temporary variable for output */ + q31_t v; /* Temporary variable for ladder coefficient */ + + + blkCnt = blockSize; + + pState = &S->pState[0]; + + /* Sample processing */ + while(blkCnt > 0u) + { + /* Read Sample from input buffer */ + /* fN(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize state read pointer */ + px1 = pState; + /* Initialize state write pointer */ + px2 = pState; + /* Set accumulator to zero */ + acc = 0; + /* Initialize Ladder coeff pointer */ + pv = &S->pvCoeffs[0]; + /* Initialize Reflection coeff pointer */ + pk = &S->pkCoeffs[0]; + + + /* Process sample for first tap */ + gcurr = *px1++; + /* fN-1(n) = fN(n) - kN * gN-1(n-1) */ + fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15); + fnext = __SSAT(fnext, 16); + /* gN(n) = kN * fN-1(n) + gN-1(n-1) */ + gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr; + gnext = __SSAT(gnext, 16); + /* write gN(n) into state for next sample processing */ + *px2++ = (q15_t) gnext; + /* y(n) += gN(n) * vN */ + acc += (q31_t) ((gnext * (*pv++))); + + + /* Update f values for next coefficient processing */ + fcurr = fnext; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = (numStages - 1u) >> 2; + + while(tapCnt > 0u) + { + + /* Process sample for 2nd, 6th ...taps */ + /* Read gN-2(n-1) from state buffer */ + gcurr = *px1++; + /* Process sample for 2nd, 6th .. taps */ + /* fN-2(n) = fN-1(n) - kN-1 * gN-2(n-1) */ + fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15); + fnext = __SSAT(fnext, 16); + /* gN-1(n) = kN-1 * fN-2(n) + gN-2(n-1) */ + gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr; + gnext1 = (q15_t) __SSAT(gnext, 16); + /* write gN-1(n) into state */ + *px2++ = (q15_t) gnext1; + + + /* Process sample for 3nd, 7th ...taps */ + /* Read gN-3(n-1) from state */ + gcurr = *px1++; + /* Process sample for 3rd, 7th .. taps */ + /* fN-3(n) = fN-2(n) - kN-2 * gN-3(n-1) */ + fcurr = fnext - (((q31_t) gcurr * (*pk)) >> 15); + fcurr = __SSAT(fcurr, 16); + /* gN-2(n) = kN-2 * fN-3(n) + gN-3(n-1) */ + gnext = (((q31_t) fcurr * (*pk++)) >> 15) + gcurr; + gnext2 = (q15_t) __SSAT(gnext, 16); + /* write gN-2(n) into state */ + *px2++ = (q15_t) gnext2; + + /* Read vN-1 and vN-2 at a time */ + v = *__SIMD32(pv)++; + + + /* Pack gN-1(n) and gN-2(n) */ + +#ifndef ARM_MATH_BIG_ENDIAN + + gnext = __PKHBT(gnext1, gnext2, 16); + +#else + + gnext = __PKHBT(gnext2, gnext1, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* y(n) += gN-1(n) * vN-1 */ + /* process for gN-5(n) * vN-5, gN-9(n) * vN-9 ... */ + /* y(n) += gN-2(n) * vN-2 */ + /* process for gN-6(n) * vN-6, gN-10(n) * vN-10 ... */ + acc = __SMLALD(gnext, v, acc); + + + /* Process sample for 4th, 8th ...taps */ + /* Read gN-4(n-1) from state */ + gcurr = *px1++; + /* Process sample for 4th, 8th .. taps */ + /* fN-4(n) = fN-3(n) - kN-3 * gN-4(n-1) */ + fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15); + fnext = __SSAT(fnext, 16); + /* gN-3(n) = kN-3 * fN-1(n) + gN-1(n-1) */ + gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr; + gnext1 = (q15_t) __SSAT(gnext, 16); + /* write gN-3(n) for the next sample process */ + *px2++ = (q15_t) gnext1; + + + /* Process sample for 5th, 9th ...taps */ + /* Read gN-5(n-1) from state */ + gcurr = *px1++; + /* Process sample for 5th, 9th .. taps */ + /* fN-5(n) = fN-4(n) - kN-4 * gN-5(n-1) */ + fcurr = fnext - (((q31_t) gcurr * (*pk)) >> 15); + fcurr = __SSAT(fcurr, 16); + /* gN-4(n) = kN-4 * fN-5(n) + gN-5(n-1) */ + gnext = (((q31_t) fcurr * (*pk++)) >> 15) + gcurr; + gnext2 = (q15_t) __SSAT(gnext, 16); + /* write gN-4(n) for the next sample process */ + *px2++ = (q15_t) gnext2; + + /* Read vN-3 and vN-4 at a time */ + v = *__SIMD32(pv)++; + + /* Pack gN-3(n) and gN-4(n) */ +#ifndef ARM_MATH_BIG_ENDIAN + + gnext = __PKHBT(gnext1, gnext2, 16); + +#else + + gnext = __PKHBT(gnext2, gnext1, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* y(n) += gN-4(n) * vN-4 */ + /* process for gN-8(n) * vN-8, gN-12(n) * vN-12 ... */ + /* y(n) += gN-3(n) * vN-3 */ + /* process for gN-7(n) * vN-7, gN-11(n) * vN-11 ... */ + acc = __SMLALD(gnext, v, acc); + + tapCnt--; + + } + + fnext = fcurr; + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = (numStages - 1u) % 0x4u; + + while(tapCnt > 0u) + { + gcurr = *px1++; + /* Process sample for last taps */ + fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15); + fnext = __SSAT(fnext, 16); + gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr; + gnext = __SSAT(gnext, 16); + /* Output samples for last taps */ + acc += (q31_t) (((q31_t) gnext * (*pv++))); + *px2++ = (q15_t) gnext; + fcurr = fnext; + + tapCnt--; + } + + /* y(n) += g0(n) * v0 */ + acc += (q31_t) (((q31_t) fnext * (*pv++))); + + out = (q15_t) __SSAT(acc >> 15, 16); + *px2++ = (q15_t) fnext; + + /* write out into pDst */ + *pDst++ = out; + + /* Advance the state pointer by 4 to process the next group of 4 samples */ + pState = pState + 1u; + blkCnt--; + + } + + /* Processing is complete. Now copy last S->numStages samples to start of the buffer + for the preperation of next frame process */ + /* Points to the start of the state buffer */ + pStateCurnt = &S->pState[0]; + pState = &S->pState[blockSize]; + + stgCnt = (numStages >> 2u); + + /* copy data */ + while(stgCnt > 0u) + { + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + + /* Decrement the loop counter */ + stgCnt--; + + } + + /* Calculation of count for remaining q15_t data */ + stgCnt = (numStages) % 0x4u; + + /* copy data */ + while(stgCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + stgCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + q31_t fcurr, fnext = 0, gcurr = 0, gnext; /* Temporary variables for lattice stages */ + uint32_t stgCnt; /* Temporary variables for counts */ + q63_t acc; /* Accumlator */ + uint32_t blkCnt, tapCnt; /* Temporary variables for counts */ + q15_t *px1, *px2, *pk, *pv; /* temporary pointers for state and coef */ + uint32_t numStages = S->numStages; /* number of stages */ + q15_t *pState; /* State pointer */ + q15_t *pStateCurnt; /* State current pointer */ + q15_t out; /* Temporary variable for output */ + + + blkCnt = blockSize; + + pState = &S->pState[0]; + + /* Sample processing */ + while(blkCnt > 0u) + { + /* Read Sample from input buffer */ + /* fN(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize state read pointer */ + px1 = pState; + /* Initialize state write pointer */ + px2 = pState; + /* Set accumulator to zero */ + acc = 0; + /* Initialize Ladder coeff pointer */ + pv = &S->pvCoeffs[0]; + /* Initialize Reflection coeff pointer */ + pk = &S->pkCoeffs[0]; + + tapCnt = numStages; + + while(tapCnt > 0u) + { + gcurr = *px1++; + /* Process sample */ + /* fN-1(n) = fN(n) - kN * gN-1(n-1) */ + fnext = fcurr - ((gcurr * (*pk)) >> 15); + fnext = __SSAT(fnext, 16); + /* gN(n) = kN * fN-1(n) + gN-1(n-1) */ + gnext = ((fnext * (*pk++)) >> 15) + gcurr; + gnext = __SSAT(gnext, 16); + /* Output samples */ + /* y(n) += gN(n) * vN */ + acc += (q31_t) ((gnext * (*pv++))); + /* write gN(n) into state for next sample processing */ + *px2++ = (q15_t) gnext; + /* Update f values for next coefficient processing */ + fcurr = fnext; + + tapCnt--; + } + + /* y(n) += g0(n) * v0 */ + acc += (q31_t) ((fnext * (*pv++))); + + out = (q15_t) __SSAT(acc >> 15, 16); + *px2++ = (q15_t) fnext; + + /* write out into pDst */ + *pDst++ = out; + + /* Advance the state pointer by 1 to process the next group of samples */ + pState = pState + 1u; + blkCnt--; + + } + + /* Processing is complete. Now copy last S->numStages samples to start of the buffer + for the preperation of next frame process */ + /* Points to the start of the state buffer */ + pStateCurnt = &S->pState[0]; + pState = &S->pState[blockSize]; + + stgCnt = numStages; + + /* copy data */ + while(stgCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + stgCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + + + + +/** + * @} end of IIR_Lattice group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q31.c new file mode 100644 index 000000000..115224645 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q31.c @@ -0,0 +1,342 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_iir_lattice_q31.c +* +* Description: Q31 IIR lattice filter processing function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup IIR_Lattice + * @{ + */ + +/** + * @brief Processing function for the Q31 IIR lattice filter. + * @param[in] *S points to an instance of the Q31 IIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around rather than clip. + * In order to avoid overflows completely the input signal must be scaled down by 2*log2(numStages) bits. + * After all multiply-accumulates are performed, the 2.62 accumulator is saturated to 1.32 format and then truncated to 1.31 format. + */ + +void arm_iir_lattice_q31( + const arm_iir_lattice_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t fcurr, fnext = 0, gcurr = 0, gnext; /* Temporary variables for lattice stages */ + q63_t acc; /* Accumlator */ + uint32_t blkCnt, tapCnt; /* Temporary variables for counts */ + q31_t *px1, *px2, *pk, *pv; /* Temporary pointers for state and coef */ + uint32_t numStages = S->numStages; /* number of stages */ + q31_t *pState; /* State pointer */ + q31_t *pStateCurnt; /* State current pointer */ + + blkCnt = blockSize; + + pState = &S->pState[0]; + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Sample processing */ + while(blkCnt > 0u) + { + /* Read Sample from input buffer */ + /* fN(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize state read pointer */ + px1 = pState; + /* Initialize state write pointer */ + px2 = pState; + /* Set accumulator to zero */ + acc = 0; + /* Initialize Ladder coeff pointer */ + pv = &S->pvCoeffs[0]; + /* Initialize Reflection coeff pointer */ + pk = &S->pkCoeffs[0]; + + + /* Process sample for first tap */ + gcurr = *px1++; + /* fN-1(n) = fN(n) - kN * gN-1(n-1) */ + fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk)) >> 31)); + /* gN(n) = kN * fN-1(n) + gN-1(n-1) */ + gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31)); + /* write gN-1(n-1) into state for next sample processing */ + *px2++ = gnext; + /* y(n) += gN(n) * vN */ + acc += ((q63_t) gnext * *pv++); + + /* Update f values for next coefficient processing */ + fcurr = fnext; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = (numStages - 1u) >> 2; + + while(tapCnt > 0u) + { + + /* Process sample for 2nd, 6th .. taps */ + /* Read gN-2(n-1) from state buffer */ + gcurr = *px1++; + /* fN-2(n) = fN-1(n) - kN-1 * gN-2(n-1) */ + fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk)) >> 31)); + /* gN-1(n) = kN-1 * fN-2(n) + gN-2(n-1) */ + gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31)); + /* y(n) += gN-1(n) * vN-1 */ + /* process for gN-5(n) * vN-5, gN-9(n) * vN-9 ... */ + acc += ((q63_t) gnext * *pv++); + /* write gN-1(n) into state for next sample processing */ + *px2++ = gnext; + + /* Process sample for 3nd, 7th ...taps */ + /* Read gN-3(n-1) from state buffer */ + gcurr = *px1++; + /* Process sample for 3rd, 7th .. taps */ + /* fN-3(n) = fN-2(n) - kN-2 * gN-3(n-1) */ + fcurr = __QSUB(fnext, (q31_t) (((q63_t) gcurr * (*pk)) >> 31)); + /* gN-2(n) = kN-2 * fN-3(n) + gN-3(n-1) */ + gnext = __QADD(gcurr, (q31_t) (((q63_t) fcurr * (*pk++)) >> 31)); + /* y(n) += gN-2(n) * vN-2 */ + /* process for gN-6(n) * vN-6, gN-10(n) * vN-10 ... */ + acc += ((q63_t) gnext * *pv++); + /* write gN-2(n) into state for next sample processing */ + *px2++ = gnext; + + + /* Process sample for 4th, 8th ...taps */ + /* Read gN-4(n-1) from state buffer */ + gcurr = *px1++; + /* Process sample for 4th, 8th .. taps */ + /* fN-4(n) = fN-3(n) - kN-3 * gN-4(n-1) */ + fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk)) >> 31)); + /* gN-3(n) = kN-3 * fN-4(n) + gN-4(n-1) */ + gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31)); + /* y(n) += gN-3(n) * vN-3 */ + /* process for gN-7(n) * vN-7, gN-11(n) * vN-11 ... */ + acc += ((q63_t) gnext * *pv++); + /* write gN-3(n) into state for next sample processing */ + *px2++ = gnext; + + + /* Process sample for 5th, 9th ...taps */ + /* Read gN-5(n-1) from state buffer */ + gcurr = *px1++; + /* Process sample for 5th, 9th .. taps */ + /* fN-5(n) = fN-4(n) - kN-4 * gN-1(n-1) */ + fcurr = __QSUB(fnext, (q31_t) (((q63_t) gcurr * (*pk)) >> 31)); + /* gN-4(n) = kN-4 * fN-5(n) + gN-5(n-1) */ + gnext = __QADD(gcurr, (q31_t) (((q63_t) fcurr * (*pk++)) >> 31)); + /* y(n) += gN-4(n) * vN-4 */ + /* process for gN-8(n) * vN-8, gN-12(n) * vN-12 ... */ + acc += ((q63_t) gnext * *pv++); + /* write gN-4(n) into state for next sample processing */ + *px2++ = gnext; + + tapCnt--; + + } + + fnext = fcurr; + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = (numStages - 1u) % 0x4u; + + while(tapCnt > 0u) + { + gcurr = *px1++; + /* Process sample for last taps */ + fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk)) >> 31)); + gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31)); + /* Output samples for last taps */ + acc += ((q63_t) gnext * *pv++); + *px2++ = gnext; + fcurr = fnext; + + tapCnt--; + + } + + /* y(n) += g0(n) * v0 */ + acc += (q63_t) fnext *( + *pv++); + + *px2++ = fnext; + + /* write out into pDst */ + *pDst++ = (q31_t) (acc >> 31u); + + /* Advance the state pointer by 4 to process the next group of 4 samples */ + pState = pState + 1u; + blkCnt--; + + } + + /* Processing is complete. Now copy last S->numStages samples to start of the buffer + for the preperation of next frame process */ + + /* Points to the start of the state buffer */ + pStateCurnt = &S->pState[0]; + pState = &S->pState[blockSize]; + + tapCnt = numStages >> 2u; + + /* copy data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + + } + + /* Calculate remaining number of copies */ + tapCnt = (numStages) % 0x4u; + + /* Copy the remaining q31_t data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + }; + +#else + + /* Run the below code for Cortex-M0 */ + /* Sample processing */ + while(blkCnt > 0u) + { + /* Read Sample from input buffer */ + /* fN(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize state read pointer */ + px1 = pState; + /* Initialize state write pointer */ + px2 = pState; + /* Set accumulator to zero */ + acc = 0; + /* Initialize Ladder coeff pointer */ + pv = &S->pvCoeffs[0]; + /* Initialize Reflection coeff pointer */ + pk = &S->pkCoeffs[0]; + + tapCnt = numStages; + + while(tapCnt > 0u) + { + gcurr = *px1++; + /* Process sample */ + /* fN-1(n) = fN(n) - kN * gN-1(n-1) */ + fnext = + clip_q63_to_q31(((q63_t) fcurr - + ((q31_t) (((q63_t) gcurr * (*pk)) >> 31)))); + /* gN(n) = kN * fN-1(n) + gN-1(n-1) */ + gnext = + clip_q63_to_q31(((q63_t) gcurr + + ((q31_t) (((q63_t) fnext * (*pk++)) >> 31)))); + /* Output samples */ + /* y(n) += gN(n) * vN */ + acc += ((q63_t) gnext * *pv++); + /* write gN-1(n-1) into state for next sample processing */ + *px2++ = gnext; + /* Update f values for next coefficient processing */ + fcurr = fnext; + + tapCnt--; + } + + /* y(n) += g0(n) * v0 */ + acc += (q63_t) fnext *( + *pv++); + + *px2++ = fnext; + + /* write out into pDst */ + *pDst++ = (q31_t) (acc >> 31u); + + /* Advance the state pointer by 1 to process the next group of samples */ + pState = pState + 1u; + blkCnt--; + + } + + /* Processing is complete. Now copy last S->numStages samples to start of the buffer + for the preperation of next frame process */ + + /* Points to the start of the state buffer */ + pStateCurnt = &S->pState[0]; + pState = &S->pState[blockSize]; + + tapCnt = numStages; + + /* Copy the remaining q31_t data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + + + + +/** + * @} end of IIR_Lattice group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_f32.c new file mode 100644 index 000000000..13053219d --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_f32.c @@ -0,0 +1,431 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_lms_f32.c +* +* Description: Processing function for the floating-point LMS filter. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup LMS Least Mean Square (LMS) Filters + * + * LMS filters are a class of adaptive filters that are able to "learn" an unknown transfer functions. + * LMS filters use a gradient descent method in which the filter coefficients are updated based on the instantaneous error signal. + * Adaptive filters are often used in communication systems, equalizers, and noise removal. + * The CMSIS DSP Library contains LMS filter functions that operate on Q15, Q31, and floating-point data types. + * The library also contains normalized LMS filters in which the filter coefficient adaptation is indepedent of the level of the input signal. + * + * An LMS filter consists of two components as shown below. + * The first component is a standard transversal or FIR filter. + * The second component is a coefficient update mechanism. + * The LMS filter has two input signals. + * The "input" feeds the FIR filter while the "reference input" corresponds to the desired output of the FIR filter. + * That is, the FIR filter coefficients are updated so that the output of the FIR filter matches the reference input. + * The filter coefficient update mechanism is based on the difference between the FIR filter output and the reference input. + * This "error signal" tends towards zero as the filter adapts. + * The LMS processing functions accept the input and reference input signals and generate the filter output and error signal. + * \image html LMS.gif "Internal structure of the Least Mean Square filter" + * + * The functions operate on blocks of data and each call to the function processes + * blockSize samples through the filter. + * pSrc points to input signal, pRef points to reference signal, + * pOut points to output signal and pErr points to error signal. + * All arrays contain blockSize values. + * + * The functions operate on a block-by-block basis. + * Internally, the filter coefficients b[n] are updated on a sample-by-sample basis. + * The convergence of the LMS filter is slower compared to the normalized LMS algorithm. + * + * \par Algorithm: + * The output signal y[n] is computed by a standard FIR filter: + *
   
+ *     y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]   
+ * 
+ * + * \par + * The error signal equals the difference between the reference signal d[n] and the filter output: + *
   
+ *     e[n] = d[n] - y[n].   
+ * 
+ * + * \par + * After each sample of the error signal is computed, the filter coefficients b[k] are updated on a sample-by-sample basis: + *
   
+ *     b[k] = b[k] + e[n] * mu * x[n-k],  for k=0, 1, ..., numTaps-1   
+ * 
+ * where mu is the step size and controls the rate of coefficient convergence. + *\par + * In the APIs, pCoeffs points to a coefficient array of size numTaps. + * Coefficients are stored in time reversed order. + * \par + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ * 
+ * \par + * pState points to a state array of size numTaps + blockSize - 1. + * Samples in the state buffer are stored in the order: + * \par + *
   
+ *    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}   
+ * 
+ * \par + * Note that the length of the state buffer exceeds the length of the coefficient array by blockSize-1 samples. + * The increased state buffer length allows circular addressing, which is traditionally used in FIR filters, + * to be avoided and yields a significant speed improvement. + * The state variables are updated after each block of data is processed. + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter and + * coefficient and state arrays cannot be shared among instances. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * Set the values in the state buffer to zeros before static initialization. + * The code below statically initializes each of the 3 different data type filter instance structures + *
   
+ *    arm_lms_instance_f32 S = {numTaps, pState, pCoeffs, mu};   
+ *    arm_lms_instance_q31 S = {numTaps, pState, pCoeffs, mu, postShift};   
+ *    arm_lms_instance_q15 S = {numTaps, pState, pCoeffs, mu, postShift};   
+ * 
+ * where numTaps is the number of filter coefficients in the filter; pState is the address of the state buffer; + * pCoeffs is the address of the coefficient buffer; mu is the step size parameter; and postShift is the shift applied to coefficients. + * + * \par Fixed-Point Behavior: + * Care must be taken when using the Q15 and Q31 versions of the LMS filter. + * The following issues must be considered: + * - Scaling of coefficients + * - Overflow and saturation + * + * \par Scaling of Coefficients: + * Filter coefficients are represented as fractional values and + * coefficients are restricted to lie in the range [-1 +1). + * The fixed-point functions have an additional scaling parameter postShift. + * At the output of the filter's accumulator is a shift register which shifts the result by postShift bits. + * This essentially scales the filter coefficients by 2^postShift and + * allows the filter coefficients to exceed the range [+1 -1). + * The value of postShift is set by the user based on the expected gain through the system being modeled. + * + * \par Overflow and Saturation: + * Overflow and saturation behavior of the fixed-point Q15 and Q31 versions are + * described separately as part of the function specific documentation below. + */ + +/** + * @addtogroup LMS + * @{ + */ + +/** + * @details + * This function operates on floating-point data types. + * + * @brief Processing function for floating-point LMS filter. + * @param[in] *S points to an instance of the floating-point LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + +void arm_lms_f32( + const arm_lms_instance_f32 * S, + float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize) +{ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *pStateCurnt; /* Points to the current sample of the state */ + float32_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ + float32_t mu = S->mu; /* Adaptive factor */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + float32_t sum, e, d; /* accumulator, error, reference data sample */ + float32_t w = 0.0f; /* weight factor */ + + e = 0.0f; + d = 0.0f; + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1u)]); + + blkCnt = blockSize; + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + while(blkCnt > 0u) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Set the accumulator to zero */ + sum = 0.0f; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + sum += (*px++) * (*pb++); + sum += (*px++) * (*pb++); + sum += (*px++) * (*pb++); + sum += (*px++) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4u; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + sum += (*px++) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result in the accumulator, store in the destination buffer. */ + *pOut++ = sum; + + /* Compute and store error */ + d = (float32_t) (*pRef++); + e = d - sum; + *pErr++ = e; + + /* Calculation of Weighting factor for the updating filter coefficients */ + w = e * mu; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Update filter coefficients */ + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + *pb = *pb + (w * (*px++)); + pb++; + + *pb = *pb + (w * (*px++)); + pb++; + + *pb = *pb + (w * (*px++)); + pb++; + + *pb = *pb + (w * (*px++)); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4u; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + *pb = *pb + (w * (*px++)); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + satrt of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Loop unrolling for (numTaps - 1u) samples copy */ + tapCnt = (numTaps - 1u) >> 2u; + + /* copy data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calculate remaining number of copies */ + tapCnt = (numTaps - 1u) % 0x4u; + + /* Copy the remaining q31_t data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + while(blkCnt > 0u) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Set the accumulator to zero */ + sum = 0.0f; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + sum += (*px++) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result is stored in the destination buffer. */ + *pOut++ = sum; + + /* Compute and store error */ + d = (float32_t) (*pRef++); + e = d - sum; + *pErr++ = e; + + /* Weighting factor for the LMS version */ + w = e * mu; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + *pb = *pb + (w * (*px++)); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + * start of the state buffer. This prepares the state buffer for the + * next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Copy (numTaps - 1u) samples */ + tapCnt = (numTaps - 1u); + + /* Copy the data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of LMS group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_f32.c new file mode 100644 index 000000000..46c01044e --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_f32.c @@ -0,0 +1,87 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_lms_init_f32.c +* +* Description: Floating-point LMS filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @addtogroup LMS + * @{ + */ + + /** + * @brief Initialization function for floating-point LMS filter. + * @param[in] *S points to an instance of the floating-point LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to the coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @return none. + */ + +/** + * \par Description: + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ * 
+ * The initial filter coefficients serve as a starting point for the adaptive filter. + * pState points to an array of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_lms_f32(). + */ + +void arm_lms_init_f32( + arm_lms_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + float32_t mu, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always blockSize + numTaps */ + memset(pState, 0, (numTaps + (blockSize - 1)) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; + + /* Assign Step size value */ + S->mu = mu; +} + +/** + * @} end of LMS group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q15.c new file mode 100644 index 000000000..5caa0a3cd --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q15.c @@ -0,0 +1,97 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_lms_init_q15.c +* +* Description: Q15 LMS filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup LMS + * @{ + */ + +/** +* @brief Initialization function for the Q15 LMS filter. +* @param[in] *S points to an instance of the Q15 LMS filter structure. +* @param[in] numTaps number of filter coefficients. +* @param[in] *pCoeffs points to the coefficient buffer. +* @param[in] *pState points to the state buffer. +* @param[in] mu step size that controls filter coefficient updates. +* @param[in] blockSize number of samples to process. +* @param[in] postShift bit shift applied to coefficients. +* @return none. +* +* \par Description: +* pCoeffs points to the array of filter coefficients stored in time reversed order: +*
   
+*    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+* 
+* The initial filter coefficients serve as a starting point for the adaptive filter. +* pState points to the array of state variables and size of array is +* numTaps+blockSize-1 samples, where blockSize is the number of +* input samples processed by each call to arm_lms_q15(). +*/ + +void arm_lms_init_q15( + arm_lms_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + q15_t mu, + uint32_t blockSize, + uint32_t postShift) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always blockSize + numTaps - 1 */ + memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(q15_t)); + + /* Assign state pointer */ + S->pState = pState; + + /* Assign Step size value */ + S->mu = mu; + + /* Assign postShift value to be applied */ + S->postShift = postShift; + +} + +/** + * @} end of LMS group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q31.c new file mode 100644 index 000000000..7d8fd49e7 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q31.c @@ -0,0 +1,97 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_lms_init_q31.c +* +* Description: Q31 LMS filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup LMS + * @{ + */ + + /** + * @brief Initialization function for Q31 LMS filter. + * @param[in] *S points to an instance of the Q31 LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + * @return none. + * + * \par Description: + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ * 
+ * The initial filter coefficients serve as a starting point for the adaptive filter. + * pState points to an array of length numTaps+blockSize-1 samples, + * where blockSize is the number of input samples processed by each call to + * arm_lms_q31(). + */ + +void arm_lms_init_q31( + arm_lms_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + q31_t mu, + uint32_t blockSize, + uint32_t postShift) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always blockSize + numTaps - 1 */ + memset(pState, 0, ((uint32_t) numTaps + (blockSize - 1u)) * sizeof(q31_t)); + + /* Assign state pointer */ + S->pState = pState; + + /* Assign Step size value */ + S->mu = mu; + + /* Assign postShift value to be applied */ + S->postShift = postShift; + +} + +/** + * @} end of LMS group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_f32.c new file mode 100644 index 000000000..ee6022921 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_f32.c @@ -0,0 +1,453 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_lms_norm_f32.c +* +* Description: Processing function for the floating-point Normalised LMS. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup LMS_NORM Normalized LMS Filters + * + * This set of functions implements a commonly used adaptive filter. + * It is related to the Least Mean Square (LMS) adaptive filter and includes an additional normalization + * factor which increases the adaptation rate of the filter. + * The CMSIS DSP Library contains normalized LMS filter functions that operate on Q15, Q31, and floating-point data types. + * + * A normalized least mean square (NLMS) filter consists of two components as shown below. + * The first component is a standard transversal or FIR filter. + * The second component is a coefficient update mechanism. + * The NLMS filter has two input signals. + * The "input" feeds the FIR filter while the "reference input" corresponds to the desired output of the FIR filter. + * That is, the FIR filter coefficients are updated so that the output of the FIR filter matches the reference input. + * The filter coefficient update mechanism is based on the difference between the FIR filter output and the reference input. + * This "error signal" tends towards zero as the filter adapts. + * The NLMS processing functions accept the input and reference input signals and generate the filter output and error signal. + * \image html LMS.gif "Internal structure of the NLMS adaptive filter" + * + * The functions operate on blocks of data and each call to the function processes + * blockSize samples through the filter. + * pSrc points to input signal, pRef points to reference signal, + * pOut points to output signal and pErr points to error signal. + * All arrays contain blockSize values. + * + * The functions operate on a block-by-block basis. + * Internally, the filter coefficients b[n] are updated on a sample-by-sample basis. + * The convergence of the LMS filter is slower compared to the normalized LMS algorithm. + * + * \par Algorithm: + * The output signal y[n] is computed by a standard FIR filter: + *
   
+ *     y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]   
+ * 
+ * + * \par + * The error signal equals the difference between the reference signal d[n] and the filter output: + *
   
+ *     e[n] = d[n] - y[n].   
+ * 
+ * + * \par + * After each sample of the error signal is computed the instanteous energy of the filter state variables is calculated: + *
   
+ *    E = x[n]^2 + x[n-1]^2 + ... + x[n-numTaps+1]^2.   
+ * 
+ * The filter coefficients b[k] are then updated on a sample-by-sample basis: + *
   
+ *     b[k] = b[k] + e[n] * (mu/E) * x[n-k],  for k=0, 1, ..., numTaps-1   
+ * 
+ * where mu is the step size and controls the rate of coefficient convergence. + *\par + * In the APIs, pCoeffs points to a coefficient array of size numTaps. + * Coefficients are stored in time reversed order. + * \par + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ * 
+ * \par + * pState points to a state array of size numTaps + blockSize - 1. + * Samples in the state buffer are stored in the order: + * \par + *
   
+ *    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}   
+ * 
+ * \par + * Note that the length of the state buffer exceeds the length of the coefficient array by blockSize-1 samples. + * The increased state buffer length allows circular addressing, which is traditionally used in FIR filters, + * to be avoided and yields a significant speed improvement. + * The state variables are updated after each block of data is processed. + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter and + * coefficient and state arrays cannot be shared among instances. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * \par + * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function. + * \par Fixed-Point Behavior: + * Care must be taken when using the Q15 and Q31 versions of the normalised LMS filter. + * The following issues must be considered: + * - Scaling of coefficients + * - Overflow and saturation + * + * \par Scaling of Coefficients: + * Filter coefficients are represented as fractional values and + * coefficients are restricted to lie in the range [-1 +1). + * The fixed-point functions have an additional scaling parameter postShift. + * At the output of the filter's accumulator is a shift register which shifts the result by postShift bits. + * This essentially scales the filter coefficients by 2^postShift and + * allows the filter coefficients to exceed the range [+1 -1). + * The value of postShift is set by the user based on the expected gain through the system being modeled. + * + * \par Overflow and Saturation: + * Overflow and saturation behavior of the fixed-point Q15 and Q31 versions are + * described separately as part of the function specific documentation below. + */ + + +/** + * @addtogroup LMS_NORM + * @{ + */ + + + /** + * @brief Processing function for floating-point normalized LMS filter. + * @param[in] *S points to an instance of the floating-point normalized LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + +void arm_lms_norm_f32( + arm_lms_norm_instance_f32 * S, + float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize) +{ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *pStateCurnt; /* Points to the current sample of the state */ + float32_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ + float32_t mu = S->mu; /* Adaptive factor */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + float32_t energy; /* Energy of the input */ + float32_t sum, e, d; /* accumulator, error, reference data sample */ + float32_t w, x0, in; /* weight factor, temporary variable to hold input sample and state */ + + /* Initializations of error, difference, Coefficient update */ + e = 0.0f; + d = 0.0f; + w = 0.0f; + + energy = S->energy; + x0 = S->x0; + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1u)]); + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + while(blkCnt > 0u) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Read the sample from input buffer */ + in = *pSrc++; + + /* Update the energy calculation */ + energy -= x0 * x0; + energy += in * in; + + /* Set the accumulator to zero */ + sum = 0.0f; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + sum += (*px++) * (*pb++); + sum += (*px++) * (*pb++); + sum += (*px++) * (*pb++); + sum += (*px++) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4u; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + sum += (*px++) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result in the accumulator, store in the destination buffer. */ + *pOut++ = sum; + + /* Compute and store error */ + d = (float32_t) (*pRef++); + e = d - sum; + *pErr++ = e; + + /* Calculation of Weighting factor for updating filter coefficients */ + /* epsilon value 0.000000119209289f */ + w = (e * mu) / (energy + 0.000000119209289f); + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Update filter coefficients */ + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + *pb += w * (*px++); + pb++; + + *pb += w * (*px++); + pb++; + + *pb += w * (*px++); + pb++; + + *pb += w * (*px++); + pb++; + + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4u; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + *pb += w * (*px++); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + x0 = *pState; + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + S->energy = energy; + S->x0 = x0; + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + satrt of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Loop unrolling for (numTaps - 1u)/4 samples copy */ + tapCnt = (numTaps - 1u) >> 2u; + + /* copy data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calculate remaining number of copies */ + tapCnt = (numTaps - 1u) % 0x4u; + + /* Copy the remaining q31_t data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + while(blkCnt > 0u) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Read the sample from input buffer */ + in = *pSrc++; + + /* Update the energy calculation */ + energy -= x0 * x0; + energy += in * in; + + /* Set the accumulator to zero */ + sum = 0.0f; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + sum += (*px++) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result in the accumulator is stored in the destination buffer. */ + *pOut++ = sum; + + /* Compute and store error */ + d = (float32_t) (*pRef++); + e = d - sum; + *pErr++ = e; + + /* Calculation of Weighting factor for updating filter coefficients */ + /* epsilon value 0.000000119209289f */ + w = (e * mu) / (energy + 0.000000119209289f); + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCcoeffs pointer */ + pb = pCoeffs; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + *pb += w * (*px++); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + x0 = *pState; + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + S->energy = energy; + S->x0 = x0; + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + satrt of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Copy (numTaps - 1u) samples */ + tapCnt = (numTaps - 1u); + + /* Copy the remaining q31_t data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of LMS_NORM group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_f32.c new file mode 100644 index 000000000..7621ca136 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_f32.c @@ -0,0 +1,97 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_lms_norm_init_f32.c +* +* Description: Floating-point NLMS filter initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup LMS_NORM + * @{ + */ + + /** + * @brief Initialization function for floating-point normalized LMS filter. + * @param[in] *S points to an instance of the floating-point LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @return none. + * + * \par Description: + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ * 
+ * The initial filter coefficients serve as a starting point for the adaptive filter. + * pState points to an array of length numTaps+blockSize-1 samples, + * where blockSize is the number of input samples processed by each call to arm_lms_norm_f32(). + */ + +void arm_lms_norm_init_f32( + arm_lms_norm_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + float32_t mu, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always blockSize + numTaps - 1 */ + memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; + + /* Assign Step size value */ + S->mu = mu; + + /* Initialise Energy to zero */ + S->energy = 0.0f; + + /* Initialise x0 to zero */ + S->x0 = 0.0f; + +} + +/** + * @} end of LMS_NORM group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q15.c new file mode 100644 index 000000000..758a578a4 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q15.c @@ -0,0 +1,104 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_lms_norm_init_q15.c +* +* Description: Q15 NLMS initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @addtogroup LMS_NORM + * @{ + */ + + /** + * @brief Initialization function for Q15 normalized LMS filter. + * @param[in] *S points to an instance of the Q15 normalized LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + * @return none. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ * 
+ * The initial filter coefficients serve as a starting point for the adaptive filter. + * pState points to the array of state variables and size of array is + * numTaps+blockSize-1 samples, where blockSize is the number of input samples processed + * by each call to arm_lms_norm_q15(). + */ + +void arm_lms_norm_init_q15( + arm_lms_norm_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + q15_t mu, + uint32_t blockSize, + uint8_t postShift) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always blockSize + numTaps - 1 */ + memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(q15_t)); + + /* Assign post Shift value applied to coefficients */ + S->postShift = postShift; + + /* Assign state pointer */ + S->pState = pState; + + /* Assign Step size value */ + S->mu = mu; + + /* Initialize reciprocal pointer table */ + S->recipTable = armRecipTableQ15; + + /* Initialise Energy to zero */ + S->energy = 0; + + /* Initialise x0 to zero */ + S->x0 = 0; + +} + +/** + * @} end of LMS_NORM group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q31.c new file mode 100644 index 000000000..781201ef6 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q31.c @@ -0,0 +1,103 @@ +/*----------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_lms_norm_init_q31.c +* +* Description: Q31 NLMS initialization function. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------*/ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @addtogroup LMS_NORM + * @{ + */ + + /** + * @brief Initialization function for Q31 normalized LMS filter. + * @param[in] *S points to an instance of the Q31 normalized LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + * @return none. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
   
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ * 
+ * The initial filter coefficients serve as a starting point for the adaptive filter. + * pState points to an array of length numTaps+blockSize-1 samples, + * where blockSize is the number of input samples processed by each call to arm_lms_norm_q31(). + */ + +void arm_lms_norm_init_q31( + arm_lms_norm_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + q31_t mu, + uint32_t blockSize, + uint8_t postShift) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always blockSize + numTaps - 1 */ + memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(q31_t)); + + /* Assign post Shift value applied to coefficients */ + S->postShift = postShift; + + /* Assign state pointer */ + S->pState = pState; + + /* Assign Step size value */ + S->mu = mu; + + /* Initialize reciprocal pointer table */ + S->recipTable = armRecipTableQ31; + + /* Initialise Energy to zero */ + S->energy = 0; + + /* Initialise x0 to zero */ + S->x0 = 0; + +} + +/** + * @} end of LMS_NORM group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q15.c new file mode 100644 index 000000000..6417fe485 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q15.c @@ -0,0 +1,386 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_lms_norm_q15.c +* +* Description: Q15 NLMS filter. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup LMS_NORM + * @{ + */ + +/** +* @brief Processing function for Q15 normalized LMS filter. +* @param[in] *S points to an instance of the Q15 normalized LMS filter structure. +* @param[in] *pSrc points to the block of input data. +* @param[in] *pRef points to the block of reference data. +* @param[out] *pOut points to the block of output data. +* @param[out] *pErr points to the block of error data. +* @param[in] blockSize number of samples to process. +* @return none. +* +* Scaling and Overflow Behavior: +* \par +* The function is implemented using a 64-bit internal accumulator. +* Both coefficients and state variables are represented in 1.15 format and +* multiplications yield a 2.30 result. The 2.30 intermediate results are +* accumulated in a 64-bit accumulator in 34.30 format. +* There is no risk of internal overflow with this approach and the full +* precision of intermediate multiplications is preserved. After all additions +* have been performed, the accumulator is truncated to 34.15 format by +* discarding low 15 bits. Lastly, the accumulator is saturated to yield a +* result in 1.15 format. +* +* \par +* In this filter, filter coefficients are updated for each sample and the updation of filter cofficients are saturted. +* + */ + +void arm_lms_norm_q15( + arm_lms_norm_instance_q15 * S, + q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ + q15_t mu = S->mu; /* Adaptive factor */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + q31_t energy; /* Energy of the input */ + q63_t acc; /* Accumulator */ + q15_t e = 0, d = 0; /* error, reference data sample */ + q15_t w = 0, in; /* weight factor and state */ + q15_t x0; /* temporary variable to hold input sample */ + uint32_t shift = (uint32_t) S->postShift + 1u; /* Shift to be applied to the output */ + q15_t errorXmu, oneByEnergy; /* Temporary variables to store error and mu product and reciprocal of energy */ + q15_t postShift; /* Post shift to be applied to weight after reciprocal calculation */ + q31_t coef; /* Teporary variable for coefficient */ + + energy = S->energy; + x0 = S->x0; + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1u)]); + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + while(blkCnt > 0u) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Read the sample from input buffer */ + in = *pSrc++; + + /* Update the energy calculation */ + energy -= (((q31_t) x0 * (x0)) >> 15); + energy += (((q31_t) in * (in)) >> 15); + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + while(tapCnt > 0u) + { + + /* Perform the multiply-accumulate */ + acc = __SMLALD(*__SIMD32(px)++, (*__SIMD32(pb)++), acc); + acc = __SMLALD(*__SIMD32(px)++, (*__SIMD32(pb)++), acc); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4u; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + acc += (((q31_t) * px++ * (*pb++))); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Converting the result to 1.15 format */ + acc = __SSAT((acc >> (16u - shift)), 16u); + + /* Store the result from accumulator into the destination buffer. */ + *pOut++ = (q15_t) acc; + + /* Compute and store error */ + d = *pRef++; + e = d - (q15_t) acc; + *pErr++ = e; + + /* Calculation of 1/energy */ + postShift = arm_recip_q15((q15_t) energy + DELTA_Q15, + &oneByEnergy, S->recipTable); + + /* Calculation of e * mu value */ + errorXmu = (q15_t) (((q31_t) e * mu) >> 15); + + /* Calculation of (e * mu) * (1/energy) value */ + acc = (((q31_t) errorXmu * oneByEnergy) >> (15 - postShift)); + + /* Weighting factor for the normalized version */ + w = (q15_t) __SSAT((q31_t) acc, 16); + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Update filter coefficients */ + while(tapCnt > 0u) + { + coef = *pb + (((q31_t) w * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + coef = *pb + (((q31_t) w * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + coef = *pb + (((q31_t) w * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + coef = *pb + (((q31_t) w * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4u; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + coef = *pb + (((q31_t) w * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Read the sample from state buffer */ + x0 = *pState; + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1u; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Save energy and x0 values for the next frame */ + S->energy = (q15_t) energy; + S->x0 = x0; + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + satrt of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Calculation of count for copying integer writes */ + tapCnt = (numTaps - 1u) >> 2; + + while(tapCnt > 0u) + { + + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + + tapCnt--; + + } + + /* Calculation of count for remaining q15_t data */ + tapCnt = (numTaps - 1u) % 0x4u; + + /* copy data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + while(blkCnt > 0u) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Read the sample from input buffer */ + in = *pSrc++; + + /* Update the energy calculation */ + energy -= (((q31_t) x0 * (x0)) >> 15); + energy += (((q31_t) in * (in)) >> 15); + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + acc += (((q31_t) * px++ * (*pb++))); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Converting the result to 1.15 format */ + acc = __SSAT((acc >> (16u - shift)), 16u); + + /* Store the result from accumulator into the destination buffer. */ + *pOut++ = (q15_t) acc; + + /* Compute and store error */ + d = *pRef++; + e = d - (q15_t) acc; + *pErr++ = e; + + /* Calculation of 1/energy */ + postShift = arm_recip_q15((q15_t) energy + DELTA_Q15, + &oneByEnergy, S->recipTable); + + /* Calculation of e * mu value */ + errorXmu = (q15_t) (((q31_t) e * mu) >> 15); + + /* Calculation of (e * mu) * (1/energy) value */ + acc = (((q31_t) errorXmu * oneByEnergy) >> (15 - postShift)); + + /* Weighting factor for the normalized version */ + w = (q15_t) __SSAT((q31_t) acc, 16); + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + coef = *pb + (((q31_t) w * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Read the sample from state buffer */ + x0 = *pState; + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1u; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Save energy and x0 values for the next frame */ + S->energy = (q15_t) energy; + S->x0 = x0; + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + satrt of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* copy (numTaps - 1u) data */ + tapCnt = (numTaps - 1u); + + /* copy data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + + +/** + * @} end of LMS_NORM group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q31.c new file mode 100644 index 000000000..05e732961 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q31.c @@ -0,0 +1,404 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_lms_norm_q31.c +* +* Description: Processing function for the Q31 NLMS filter. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup LMS_NORM + * @{ + */ + +/** +* @brief Processing function for Q31 normalized LMS filter. +* @param[in] *S points to an instance of the Q31 normalized LMS filter structure. +* @param[in] *pSrc points to the block of input data. +* @param[in] *pRef points to the block of reference data. +* @param[out] *pOut points to the block of output data. +* @param[out] *pErr points to the block of error data. +* @param[in] blockSize number of samples to process. +* @return none. +* +* Scaling and Overflow Behavior: +* \par +* The function is implemented using an internal 64-bit accumulator. +* The accumulator has a 2.62 format and maintains full precision of the intermediate +* multiplication results but provides only a single guard bit. +* Thus, if the accumulator result overflows it wraps around rather than clip. +* In order to avoid overflows completely the input signal must be scaled down by +* log2(numTaps) bits. The reference signal should not be scaled down. +* After all multiply-accumulates are performed, the 2.62 accumulator is shifted +* and saturated to 1.31 format to yield the final result. +* The output signal and error signal are in 1.31 format. +* +* \par +* In this filter, filter coefficients are updated for each sample and the +* updation of filter cofficients are saturted. +* +*/ + +void arm_lms_norm_q31( + arm_lms_norm_instance_q31 * S, + q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ + q31_t mu = S->mu; /* Adaptive factor */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + q63_t energy; /* Energy of the input */ + q63_t acc; /* Accumulator */ + q31_t e = 0, d = 0; /* error, reference data sample */ + q31_t w = 0, in; /* weight factor and state */ + q31_t x0; /* temporary variable to hold input sample */ + uint32_t shift = 32u - ((uint32_t) S->postShift + 1u); /* Shift to be applied to the output */ + q31_t errorXmu, oneByEnergy; /* Temporary variables to store error and mu product and reciprocal of energy */ + q31_t postShift; /* Post shift to be applied to weight after reciprocal calculation */ + q31_t coef; /* Temporary variable for coef */ + + energy = S->energy; + x0 = S->x0; + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1u)]); + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + while(blkCnt > 0u) + { + + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Read the sample from input buffer */ + in = *pSrc++; + + /* Update the energy calculation */ + energy = (q31_t) ((((q63_t) energy << 32) - + (((q63_t) x0 * x0) << 1)) >> 32); + energy = (q31_t) (((((q63_t) in * in) << 1) + (energy << 32)) >> 32); + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + acc += ((q63_t) (*px++)) * (*pb++); + acc += ((q63_t) (*px++)) * (*pb++); + acc += ((q63_t) (*px++)) * (*pb++); + acc += ((q63_t) (*px++)) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4u; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + acc += ((q63_t) (*px++)) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Converting the result to 1.31 format */ + acc = (q31_t) (acc >> shift); + + /* Store the result from accumulator into the destination buffer. */ + *pOut++ = (q31_t) acc; + + /* Compute and store error */ + d = *pRef++; + e = d - (q31_t) acc; + *pErr++ = e; + + /* Calculates the reciprocal of energy */ + postShift = arm_recip_q31(energy + DELTA_Q31, + &oneByEnergy, &S->recipTable[0]); + + /* Calculation of product of (e * mu) */ + errorXmu = (q31_t) (((q63_t) e * mu) >> 31); + + /* Weighting factor for the normalized version */ + w = clip_q63_to_q31(((q63_t) errorXmu * oneByEnergy) >> (31 - postShift)); + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Update filter coefficients */ + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + + /* coef is in 2.30 format */ + coef = (q31_t) (((q63_t) w * (*px++)) >> (32)); + /* get coef in 1.31 format by left shifting */ + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u)); + /* update coefficient buffer to next coefficient */ + pb++; + + coef = (q31_t) (((q63_t) w * (*px++)) >> (32)); + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u)); + pb++; + + coef = (q31_t) (((q63_t) w * (*px++)) >> (32)); + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u)); + pb++; + + coef = (q31_t) (((q63_t) w * (*px++)) >> (32)); + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u)); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4u; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + coef = (q31_t) (((q63_t) w * (*px++)) >> (32)); + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u)); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Read the sample from state buffer */ + x0 = *pState; + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Save energy and x0 values for the next frame */ + S->energy = (q31_t) energy; + S->x0 = x0; + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + satrt of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Loop unrolling for (numTaps - 1u) samples copy */ + tapCnt = (numTaps - 1u) >> 2u; + + /* copy data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calculate remaining number of copies */ + tapCnt = (numTaps - 1u) % 0x4u; + + /* Copy the remaining q31_t data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + while(blkCnt > 0u) + { + + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Read the sample from input buffer */ + in = *pSrc++; + + /* Update the energy calculation */ + energy = + (q31_t) ((((q63_t) energy << 32) - (((q63_t) x0 * x0) << 1)) >> 32); + energy = (q31_t) (((((q63_t) in * in) << 1) + (energy << 32)) >> 32); + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + acc += ((q63_t) (*px++)) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Converting the result to 1.31 format */ + acc = (q31_t) (acc >> shift); + + /* Store the result from accumulator into the destination buffer. */ + *pOut++ = (q31_t) acc; + + /* Compute and store error */ + d = *pRef++; + e = d - (q31_t) acc; + *pErr++ = e; + + /* Calculates the reciprocal of energy */ + postShift = + arm_recip_q31(energy + DELTA_Q31, &oneByEnergy, &S->recipTable[0]); + + /* Calculation of product of (e * mu) */ + errorXmu = (q31_t) (((q63_t) e * mu) >> 31); + + /* Weighting factor for the normalized version */ + w = clip_q63_to_q31(((q63_t) errorXmu * oneByEnergy) >> (31 - postShift)); + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + /* coef is in 2.30 format */ + coef = (q31_t) (((q63_t) w * (*px++)) >> (32)); + /* get coef in 1.31 format by left shifting */ + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u)); + /* update coefficient buffer to next coefficient */ + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Read the sample from state buffer */ + x0 = *pState; + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Save energy and x0 values for the next frame */ + S->energy = (q31_t) energy; + S->x0 = x0; + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + start of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Loop for (numTaps - 1u) samples copy */ + tapCnt = (numTaps - 1u); + + /* Copy the remaining q31_t data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of LMS_NORM group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q15.c new file mode 100644 index 000000000..eb62f1fc2 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q15.c @@ -0,0 +1,331 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_lms_q15.c +* +* Description: Processing function for the Q15 LMS filter. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup LMS + * @{ + */ + + /** + * @brief Processing function for Q15 LMS filter. + * @param[in] *S points to an instance of the Q15 LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + * + * \par Scaling and Overflow Behavior: + * The function is implemented using a 64-bit internal accumulator. + * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. + * Lastly, the accumulator is saturated to yield a result in 1.15 format. + * + * \par + * In this filter, filter coefficients are updated for each sample and the updation of filter cofficients are saturted. + * + */ + +void arm_lms_q15( + const arm_lms_instance_q15 * S, + q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t mu = S->mu; /* Adaptive factor */ + q15_t *px; /* Temporary pointer for state */ + q15_t *pb; /* Temporary pointer for coefficient buffer */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + q63_t acc; /* Accumulator */ + q15_t e = 0; /* error of data sample */ + q15_t alpha; /* Intermediate constant for taps update */ + uint32_t shift = S->postShift + 1u; /* Shift to be applied to the output */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t coef; /* Teporary variable for coefficient */ + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1u)]); + + /* Initializing blkCnt with blockSize */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coefficient pointer */ + pb = pCoeffs; + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2u; + + while(tapCnt > 0u) + { + /* acc += b[N] * x[n-N] + b[N-1] * x[n-N-1] */ + /* Perform the multiply-accumulate */ + acc = __SMLALD(*__SIMD32(px)++, (*__SIMD32(pb)++), acc); + acc = __SMLALD(*__SIMD32(px)++, (*__SIMD32(pb)++), acc); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4u; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + acc += (q63_t) (((q31_t) (*px++) * (*pb++))); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Converting the result to 1.15 format and saturate the output */ + acc = __SSAT((acc >> (16 - shift)), 16); + + /* Store the result from accumulator into the destination buffer. */ + *pOut++ = (q15_t) acc; + + /* Compute and store error */ + e = *pRef++ - (q15_t) acc; + + *pErr++ = (q15_t) e; + + /* Compute alpha i.e. intermediate constant for taps update */ + alpha = (q15_t) (((q31_t) e * (mu)) >> 15); + + /* Initialize state pointer */ + /* Advance state pointer by 1 for the next sample */ + px = pState++; + + /* Initialize coefficient pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2u; + + /* Update filter coefficients */ + while(tapCnt > 0u) + { + coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4u; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Decrement the loop counter */ + blkCnt--; + + } + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + satrt of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Calculation of count for copying integer writes */ + tapCnt = (numTaps - 1u) >> 2; + + while(tapCnt > 0u) + { + + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + + tapCnt--; + + } + + /* Calculation of count for remaining q15_t data */ + tapCnt = (numTaps - 1u) % 0x4u; + + /* copy data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1u)]); + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + acc += (q63_t) ((q31_t) (*px++) * (*pb++)); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Converting the result to 1.15 format and saturate the output */ + acc = __SSAT((acc >> (16 - shift)), 16); + + /* Store the result from accumulator into the destination buffer. */ + *pOut++ = (q15_t) acc; + + /* Compute and store error */ + e = *pRef++ - (q15_t) acc; + + *pErr++ = (q15_t) e; + + /* Compute alpha i.e. intermediate constant for taps update */ + alpha = (q15_t) (((q31_t) e * (mu)) >> 15); + + /* Initialize pState pointer */ + /* Advance state pointer by 1 for the next sample */ + px = pState++; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + *pb++ += (q15_t) (((q31_t) alpha * (*px++)) >> 15); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Decrement the loop counter */ + blkCnt--; + + } + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + start of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Copy (numTaps - 1u) samples */ + tapCnt = (numTaps - 1u); + + /* Copy the data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of LMS group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q31.c new file mode 100644 index 000000000..dced45214 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q31.c @@ -0,0 +1,347 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_lms_q31.c +* +* Description: Processing function for the Q31 LMS filter. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup LMS + * @{ + */ + + /** + * @brief Processing function for Q31 LMS filter. + * @param[in] *S points to an instance of the Q15 LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + * + * \par Scaling and Overflow Behavior: + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate + * multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around rather than clips. + * In order to avoid overflows completely the input signal must be scaled down by + * log2(numTaps) bits. + * The reference signal should not be scaled down. + * After all multiply-accumulates are performed, the 2.62 accumulator is shifted + * and saturated to 1.31 format to yield the final result. + * The output signal and error signal are in 1.31 format. + * + * \par + * In this filter, filter coefficients are updated for each sample and the updation of filter cofficients are saturted. + */ + +void arm_lms_q31( + const arm_lms_instance_q31 * S, + q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t mu = S->mu; /* Adaptive factor */ + q31_t *px; /* Temporary pointer for state */ + q31_t *pb; /* Temporary pointer for coefficient buffer */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + q63_t acc; /* Accumulator */ + q31_t e = 0; /* error of data sample */ + q31_t alpha; /* Intermediate constant for taps update */ + uint8_t shift = (uint8_t) (32u - (S->postShift + 1u)); /* Shift to be applied to the output */ + q31_t coef; /* Temporary variable for coef */ + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1u)]); + + /* Initializing blkCnt with blockSize */ + blkCnt = blockSize; + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + while(blkCnt > 0u) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coefficient pointer */ + pb = pCoeffs; + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + /* acc += b[N] * x[n-N] */ + acc += ((q63_t) (*px++)) * (*pb++); + + /* acc += b[N-1] * x[n-N-1] */ + acc += ((q63_t) (*px++)) * (*pb++); + + /* acc += b[N-2] * x[n-N-2] */ + acc += ((q63_t) (*px++)) * (*pb++); + + /* acc += b[N-3] * x[n-N-3] */ + acc += ((q63_t) (*px++)) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4u; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + acc += ((q63_t) (*px++)) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Converting the result to 1.31 format */ + /* Store the result from accumulator into the destination buffer. */ + acc = (q31_t) (acc >> shift); + + *pOut++ = (q31_t) acc; + + /* Compute and store error */ + e = *pRef++ - (q31_t) acc; + + *pErr++ = (q31_t) e; + + /* Compute alpha i.e. intermediate constant for taps update */ + alpha = (q31_t) (((q63_t) e * mu) >> 31); + + /* Initialize state pointer */ + /* Advance state pointer by 1 for the next sample */ + px = pState++; + + /* Initialize coefficient pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Update filter coefficients */ + while(tapCnt > 0u) + { + /* coef is in 2.30 format */ + coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32)); + /* get coef in 1.31 format by left shifting */ + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u)); + /* update coefficient buffer to next coefficient */ + pb++; + + coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32)); + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u)); + pb++; + + coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32)); + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u)); + pb++; + + coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32)); + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u)); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4u; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32)); + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1u)); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + satrt of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Loop unrolling for (numTaps - 1u) samples copy */ + tapCnt = (numTaps - 1u) >> 2u; + + /* copy data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calculate remaining number of copies */ + tapCnt = (numTaps - 1u) % 0x4u; + + /* Copy the remaining q31_t data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + while(blkCnt > 0u) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + acc += ((q63_t) (*px++)) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Converting the result to 1.31 format */ + /* Store the result from accumulator into the destination buffer. */ + acc = (q31_t) (acc >> shift); + + *pOut++ = (q31_t) acc; + + /* Compute and store error */ + e = *pRef++ - (q31_t) acc; + + *pErr++ = (q31_t) e; + + /* Weighting factor for the LMS version */ + alpha = (q31_t) (((q63_t) e * mu) >> 31); + + /* Initialize pState pointer */ + /* Advance state pointer by 1 for the next sample */ + px = pState++; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while(tapCnt > 0u) + { + /* Perform the multiply-accumulate */ + coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32)); + *pb += (coef << 1u); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + start of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Copy (numTaps - 1u) samples */ + tapCnt = (numTaps - 1u); + + /* Copy the data */ + while(tapCnt > 0u) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of LMS group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexM0x_math.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexM0x_math.uvopt new file mode 100644 index 000000000..ff9c4eb84 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexM0x_math.uvopt @@ -0,0 +1,3582 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + DSP_Lib CM0 LE + 0x3 + ARM-GNU + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\intermediateFiles\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + BasicMathFunctions + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_abs_f32.c + arm_abs_f32.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_abs_q7.c + arm_abs_q7.c + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_abs_q15.c + arm_abs_q15.c + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_abs_q31.c + arm_abs_q31.c + + + 1 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_add_f32.c + arm_add_f32.c + + + 1 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_add_q7.c + arm_add_q7.c + + + 1 + 7 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_add_q15.c + arm_add_q15.c + + + 1 + 8 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_add_q31.c + arm_add_q31.c + + + 1 + 9 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_dot_prod_f32.c + arm_dot_prod_f32.c + + + 1 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_dot_prod_q7.c + arm_dot_prod_q7.c + + + 1 + 11 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_dot_prod_q15.c + arm_dot_prod_q15.c + + + 1 + 12 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_dot_prod_q31.c + arm_dot_prod_q31.c + + + 1 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_mult_f32.c + arm_mult_f32.c + + + 1 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_mult_q7.c + arm_mult_q7.c + + + 1 + 15 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_mult_q15.c + arm_mult_q15.c + + + 1 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_mult_q31.c + arm_mult_q31.c + + + 1 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_negate_f32.c + arm_negate_f32.c + + + 1 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_negate_q7.c + arm_negate_q7.c + + + 1 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_negate_q15.c + arm_negate_q15.c + + + 1 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_negate_q31.c + arm_negate_q31.c + + + 1 + 21 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_offset_f32.c + arm_offset_f32.c + + + 1 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_offset_q7.c + arm_offset_q7.c + + + 1 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_offset_q15.c + arm_offset_q15.c + + + 1 + 24 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_offset_q31.c + arm_offset_q31.c + + + 1 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_scale_f32.c + arm_scale_f32.c + + + 1 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_scale_q7.c + arm_scale_q7.c + + + 1 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_scale_q15.c + arm_scale_q15.c + + + 1 + 28 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_scale_q31.c + arm_scale_q31.c + + + 1 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_shift_q7.c + arm_shift_q7.c + + + 1 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_shift_q15.c + arm_shift_q15.c + + + 1 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_shift_q31.c + arm_shift_q31.c + + + 1 + 32 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_sub_f32.c + arm_sub_f32.c + + + 1 + 33 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_sub_q7.c + arm_sub_q7.c + + + 1 + 34 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_sub_q15.c + arm_sub_q15.c + + + 1 + 35 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_sub_q31.c + arm_sub_q31.c + + + + + FastMathFunctions + 0 + 0 + 0 + + 2 + 36 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_cos_f32.c + arm_cos_f32.c + + + 2 + 37 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_cos_q15.c + arm_cos_q15.c + + + 2 + 38 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_cos_q31.c + arm_cos_q31.c + + + 2 + 39 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_sin_f32.c + arm_sin_f32.c + + + 2 + 40 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_sin_q15.c + arm_sin_q15.c + + + 2 + 41 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_sin_q31.c + arm_sin_q31.c + + + 2 + 42 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_sqrt_q15.c + arm_sqrt_q15.c + + + 2 + 43 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_sqrt_q31.c + arm_sqrt_q31.c + + + + + ComplexMathFunctions + 0 + 0 + 0 + + 3 + 44 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_conj_f32.c + arm_cmplx_conj_f32.c + + + 3 + 45 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_conj_q15.c + arm_cmplx_conj_q15.c + + + 3 + 46 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_conj_q31.c + arm_cmplx_conj_q31.c + + + 3 + 47 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_dot_prod_f32.c + arm_cmplx_dot_prod_f32.c + + + 3 + 48 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_dot_prod_q15.c + arm_cmplx_dot_prod_q15.c + + + 3 + 49 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_dot_prod_q31.c + arm_cmplx_dot_prod_q31.c + + + 3 + 50 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mag_f32.c + arm_cmplx_mag_f32.c + + + 3 + 51 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mag_q15.c + arm_cmplx_mag_q15.c + + + 3 + 52 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mag_q31.c + arm_cmplx_mag_q31.c + + + 3 + 53 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mag_squared_f32.c + arm_cmplx_mag_squared_f32.c + + + 3 + 54 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mag_squared_q15.c + arm_cmplx_mag_squared_q15.c + + + 3 + 55 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mag_squared_q31.c + arm_cmplx_mag_squared_q31.c + + + 3 + 56 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c + arm_cmplx_mult_cmplx_f32.c + + + 3 + 57 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c + arm_cmplx_mult_cmplx_q15.c + + + 3 + 58 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c + arm_cmplx_mult_cmplx_q31.c + + + 3 + 59 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mult_real_f32.c + arm_cmplx_mult_real_f32.c + + + 3 + 60 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mult_real_q15.c + arm_cmplx_mult_real_q15.c + + + 3 + 61 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mult_real_q31.c + arm_cmplx_mult_real_q31.c + + + + + FilteringFunctions + 0 + 0 + 0 + + 4 + 62 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c + arm_biquad_cascade_df1_32x64_init_q31.c + + + 4 + 63 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c + arm_biquad_cascade_df1_32x64_q31.c + + + 4 + 64 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_f32.c + arm_biquad_cascade_df1_f32.c + + + 4 + 65 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c + arm_biquad_cascade_df1_fast_q15.c + + + 4 + 66 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c + arm_biquad_cascade_df1_fast_q31.c + + + 4 + 67 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_init_f32.c + arm_biquad_cascade_df1_init_f32.c + + + 4 + 68 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_init_q15.c + arm_biquad_cascade_df1_init_q15.c + + + 4 + 69 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_init_q31.c + arm_biquad_cascade_df1_init_q31.c + + + 4 + 70 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_q15.c + arm_biquad_cascade_df1_q15.c + + + 4 + 71 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_q31.c + arm_biquad_cascade_df1_q31.c + + + 4 + 72 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df2T_f32.c + arm_biquad_cascade_df2T_f32.c + + + 4 + 73 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c + arm_biquad_cascade_df2T_init_f32.c + + + 4 + 74 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_f32.c + arm_conv_f32.c + + + 4 + 75 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_fast_q15.c + arm_conv_fast_q15.c + + + 4 + 76 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_fast_q31.c + arm_conv_fast_q31.c + + + 4 + 77 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_partial_f32.c + arm_conv_partial_f32.c + + + 4 + 78 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_partial_fast_q15.c + arm_conv_partial_fast_q15.c + + + 4 + 79 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_partial_fast_q31.c + arm_conv_partial_fast_q31.c + + + 4 + 80 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_partial_q7.c + arm_conv_partial_q7.c + + + 4 + 81 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_partial_q15.c + arm_conv_partial_q15.c + + + 4 + 82 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_partial_q31.c + arm_conv_partial_q31.c + + + 4 + 83 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_q7.c + arm_conv_q7.c + + + 4 + 84 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_q15.c + arm_conv_q15.c + + + 4 + 85 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_q31.c + arm_conv_q31.c + + + 4 + 86 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_correlate_f32.c + arm_correlate_f32.c + + + 4 + 87 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_correlate_fast_q15.c + arm_correlate_fast_q15.c + + + 4 + 88 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_correlate_fast_q31.c + arm_correlate_fast_q31.c + + + 4 + 89 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_correlate_q7.c + arm_correlate_q7.c + + + 4 + 90 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_correlate_q15.c + arm_correlate_q15.c + + + 4 + 91 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_correlate_q31.c + arm_correlate_q31.c + + + 4 + 92 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_f32.c + arm_fir_decimate_f32.c + + + 4 + 93 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_fast_q15.c + arm_fir_decimate_fast_q15.c + + + 4 + 94 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_fast_q31.c + arm_fir_decimate_fast_q31.c + + + 4 + 95 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_init_f32.c + arm_fir_decimate_init_f32.c + + + 4 + 96 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_init_q15.c + arm_fir_decimate_init_q15.c + + + 4 + 97 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_init_q31.c + arm_fir_decimate_init_q31.c + + + 4 + 98 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_q15.c + arm_fir_decimate_q15.c + + + 4 + 99 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_q31.c + arm_fir_decimate_q31.c + + + 4 + 100 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_f32.c + arm_fir_f32.c + + + 4 + 101 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_fast_q15.c + arm_fir_fast_q15.c + + + 4 + 102 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_fast_q31.c + arm_fir_fast_q31.c + + + 4 + 103 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_init_f32.c + arm_fir_init_f32.c + + + 4 + 104 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_init_q7.c + arm_fir_init_q7.c + + + 4 + 105 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_init_q15.c + arm_fir_init_q15.c + + + 4 + 106 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_init_q31.c + arm_fir_init_q31.c + + + 4 + 107 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_interpolate_f32.c + arm_fir_interpolate_f32.c + + + 4 + 108 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_interpolate_init_f32.c + arm_fir_interpolate_init_f32.c + + + 4 + 109 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_interpolate_init_q15.c + arm_fir_interpolate_init_q15.c + + + 4 + 110 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_interpolate_init_q31.c + arm_fir_interpolate_init_q31.c + + + 4 + 111 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_interpolate_q15.c + arm_fir_interpolate_q15.c + + + 4 + 112 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_interpolate_q31.c + arm_fir_interpolate_q31.c + + + 4 + 113 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_lattice_f32.c + arm_fir_lattice_f32.c + + + 4 + 114 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_lattice_init_f32.c + arm_fir_lattice_init_f32.c + + + 4 + 115 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_lattice_init_q15.c + arm_fir_lattice_init_q15.c + + + 4 + 116 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_lattice_init_q31.c + arm_fir_lattice_init_q31.c + + + 4 + 117 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_lattice_q15.c + arm_fir_lattice_q15.c + + + 4 + 118 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_lattice_q31.c + arm_fir_lattice_q31.c + + + 4 + 119 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_q7.c + arm_fir_q7.c + + + 4 + 120 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_q15.c + arm_fir_q15.c + + + 4 + 121 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_q31.c + arm_fir_q31.c + + + 4 + 122 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_f32.c + arm_fir_sparse_f32.c + + + 4 + 123 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_init_f32.c + arm_fir_sparse_init_f32.c + + + 4 + 124 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_init_q7.c + arm_fir_sparse_init_q7.c + + + 4 + 125 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_init_q15.c + arm_fir_sparse_init_q15.c + + + 4 + 126 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_init_q31.c + arm_fir_sparse_init_q31.c + + + 4 + 127 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_q7.c + arm_fir_sparse_q7.c + + + 4 + 128 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_q15.c + arm_fir_sparse_q15.c + + + 4 + 129 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_q31.c + arm_fir_sparse_q31.c + + + 4 + 130 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_iir_lattice_f32.c + arm_iir_lattice_f32.c + + + 4 + 131 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_iir_lattice_init_f32.c + arm_iir_lattice_init_f32.c + + + 4 + 132 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_iir_lattice_init_q15.c + arm_iir_lattice_init_q15.c + + + 4 + 133 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_iir_lattice_init_q31.c + arm_iir_lattice_init_q31.c + + + 4 + 134 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_iir_lattice_q15.c + arm_iir_lattice_q15.c + + + 4 + 135 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_iir_lattice_q31.c + arm_iir_lattice_q31.c + + + 4 + 136 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_f32.c + arm_lms_f32.c + + + 4 + 137 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_init_f32.c + arm_lms_init_f32.c + + + 4 + 138 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_init_q15.c + arm_lms_init_q15.c + + + 4 + 139 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_init_q31.c + arm_lms_init_q31.c + + + 4 + 140 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_norm_f32.c + arm_lms_norm_f32.c + + + 4 + 141 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_norm_init_f32.c + arm_lms_norm_init_f32.c + + + 4 + 142 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_norm_init_q15.c + arm_lms_norm_init_q15.c + + + 4 + 143 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_norm_init_q31.c + arm_lms_norm_init_q31.c + + + 4 + 144 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_norm_q15.c + arm_lms_norm_q15.c + + + 4 + 145 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_norm_q31.c + arm_lms_norm_q31.c + + + 4 + 146 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_q15.c + arm_lms_q15.c + + + 4 + 147 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_q31.c + arm_lms_q31.c + + + + + MatrixFunctions + 0 + 0 + 0 + + 5 + 148 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_add_f32.c + arm_mat_add_f32.c + + + 5 + 149 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_add_q15.c + arm_mat_add_q15.c + + + 5 + 150 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_add_q31.c + arm_mat_add_q31.c + + + 5 + 151 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_init_f32.c + arm_mat_init_f32.c + + + 5 + 152 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_init_q15.c + arm_mat_init_q15.c + + + 5 + 153 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_init_q31.c + arm_mat_init_q31.c + + + 5 + 154 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_inverse_f32.c + arm_mat_inverse_f32.c + + + 5 + 155 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_mult_f32.c + arm_mat_mult_f32.c + + + 5 + 156 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_mult_fast_q15.c + arm_mat_mult_fast_q15.c + + + 5 + 157 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_mult_fast_q31.c + arm_mat_mult_fast_q31.c + + + 5 + 158 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_mult_q15.c + arm_mat_mult_q15.c + + + 5 + 159 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_mult_q31.c + arm_mat_mult_q31.c + + + 5 + 160 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_scale_f32.c + arm_mat_scale_f32.c + + + 5 + 161 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_scale_q15.c + arm_mat_scale_q15.c + + + 5 + 162 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_scale_q31.c + arm_mat_scale_q31.c + + + 5 + 163 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_sub_f32.c + arm_mat_sub_f32.c + + + 5 + 164 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_sub_q15.c + arm_mat_sub_q15.c + + + 5 + 165 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_sub_q31.c + arm_mat_sub_q31.c + + + 5 + 166 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_trans_f32.c + arm_mat_trans_f32.c + + + 5 + 167 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_trans_q15.c + arm_mat_trans_q15.c + + + 5 + 168 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_trans_q31.c + arm_mat_trans_q31.c + + + + + TransformFunctions + 0 + 0 + 0 + + 6 + 169 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_cfft_radix4_f32.c + arm_cfft_radix4_f32.c + + + 6 + 170 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_cfft_radix4_init_f32.c + arm_cfft_radix4_init_f32.c + + + 6 + 171 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_cfft_radix4_init_q15.c + arm_cfft_radix4_init_q15.c + + + 6 + 172 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_cfft_radix4_init_q31.c + arm_cfft_radix4_init_q31.c + + + 6 + 173 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_cfft_radix4_q15.c + arm_cfft_radix4_q15.c + + + 6 + 174 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_cfft_radix4_q31.c + arm_cfft_radix4_q31.c + + + 6 + 175 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_dct4_f32.c + arm_dct4_f32.c + + + 6 + 176 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_dct4_init_f32.c + arm_dct4_init_f32.c + + + 6 + 177 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_dct4_init_q15.c + arm_dct4_init_q15.c + + + 6 + 178 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_dct4_init_q31.c + arm_dct4_init_q31.c + + + 6 + 179 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_dct4_q15.c + arm_dct4_q15.c + + + 6 + 180 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_dct4_q31.c + arm_dct4_q31.c + + + 6 + 181 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_rfft_f32.c + arm_rfft_f32.c + + + 6 + 182 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_rfft_init_f32.c + arm_rfft_init_f32.c + + + 6 + 183 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_rfft_init_q15.c + arm_rfft_init_q15.c + + + 6 + 184 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_rfft_init_q31.c + arm_rfft_init_q31.c + + + 6 + 185 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_rfft_q15.c + arm_rfft_q15.c + + + 6 + 186 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_rfft_q31.c + arm_rfft_q31.c + + + + + ControllerFunctions + 0 + 0 + 0 + + 7 + 187 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_pid_init_f32.c + arm_pid_init_f32.c + + + 7 + 188 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_pid_init_q15.c + arm_pid_init_q15.c + + + 7 + 189 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_pid_init_q31.c + arm_pid_init_q31.c + + + 7 + 190 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_pid_reset_f32.c + arm_pid_reset_f32.c + + + 7 + 191 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_pid_reset_q15.c + arm_pid_reset_q15.c + + + 7 + 192 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_pid_reset_q31.c + arm_pid_reset_q31.c + + + 7 + 193 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_sin_cos_f32.c + arm_sin_cos_f32.c + + + 7 + 194 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_sin_cos_q31.c + arm_sin_cos_q31.c + + + + + StatisticsFunctions + 0 + 0 + 0 + + 8 + 195 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_max_f32.c + arm_max_f32.c + + + 8 + 196 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_max_q7.c + arm_max_q7.c + + + 8 + 197 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_max_q15.c + arm_max_q15.c + + + 8 + 198 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_max_q31.c + arm_max_q31.c + + + 8 + 199 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_mean_f32.c + arm_mean_f32.c + + + 8 + 200 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_mean_q7.c + arm_mean_q7.c + + + 8 + 201 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_mean_q15.c + arm_mean_q15.c + + + 8 + 202 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_mean_q31.c + arm_mean_q31.c + + + 8 + 203 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_min_f32.c + arm_min_f32.c + + + 8 + 204 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_min_q7.c + arm_min_q7.c + + + 8 + 205 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_min_q15.c + arm_min_q15.c + + + 8 + 206 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_min_q31.c + arm_min_q31.c + + + 8 + 207 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_power_f32.c + arm_power_f32.c + + + 8 + 208 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_power_q7.c + arm_power_q7.c + + + 8 + 209 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_power_q15.c + arm_power_q15.c + + + 8 + 210 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_power_q31.c + arm_power_q31.c + + + 8 + 211 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_rms_f32.c + arm_rms_f32.c + + + 8 + 212 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_rms_q15.c + arm_rms_q15.c + + + 8 + 213 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_rms_q31.c + arm_rms_q31.c + + + 8 + 214 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_std_f32.c + arm_std_f32.c + + + 8 + 215 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_std_q15.c + arm_std_q15.c + + + 8 + 216 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_std_q31.c + arm_std_q31.c + + + 8 + 217 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_var_f32.c + arm_var_f32.c + + + 8 + 218 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_var_q15.c + arm_var_q15.c + + + 8 + 219 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_var_q31.c + arm_var_q31.c + + + + + SupportFunctions + 0 + 0 + 0 + + 9 + 220 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_copy_f32.c + arm_copy_f32.c + + + 9 + 221 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_copy_q7.c + arm_copy_q7.c + + + 9 + 222 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_copy_q15.c + arm_copy_q15.c + + + 9 + 223 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_copy_q31.c + arm_copy_q31.c + + + 9 + 224 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_fill_f32.c + arm_fill_f32.c + + + 9 + 225 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_fill_q7.c + arm_fill_q7.c + + + 9 + 226 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_fill_q15.c + arm_fill_q15.c + + + 9 + 227 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_fill_q31.c + arm_fill_q31.c + + + 9 + 228 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_float_to_q7.c + arm_float_to_q7.c + + + 9 + 229 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_float_to_q15.c + arm_float_to_q15.c + + + 9 + 230 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_float_to_q31.c + arm_float_to_q31.c + + + 9 + 231 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q7_to_float.c + arm_q7_to_float.c + + + 9 + 232 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q7_to_q15.c + arm_q7_to_q15.c + + + 9 + 233 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q7_to_q31.c + arm_q7_to_q31.c + + + 9 + 234 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q15_to_float.c + arm_q15_to_float.c + + + 9 + 235 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q15_to_q7.c + arm_q15_to_q7.c + + + 9 + 236 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q15_to_q31.c + arm_q15_to_q31.c + + + 9 + 237 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q31_to_float.c + arm_q31_to_float.c + + + 9 + 238 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q31_to_q7.c + arm_q31_to_q7.c + + + 9 + 239 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q31_to_q15.c + arm_q31_to_q15.c + + + + + CommonTables + 0 + 0 + 0 + + 10 + 240 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../CommonTables/arm_common_tables.c + arm_common_tables.c + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexM0x_math.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexM0x_math.uvproj new file mode 100644 index 000000000..3d89fa16e --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexM0x_math.uvproj @@ -0,0 +1,1550 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + DSP_Lib CM0 LE + 0x3 + ARM-GNU + + + Cortex-M0 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M0") ESEL ELITTLE + + + + 4803 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\intermediateFiles\ + arm_cortexM0l_math + 0 + 1 + 0 + 1 + 0 + .\intermediateFiles\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + 0 + cmd.exe /C copy ".\intermediateFiles\lib@L.a" "..\..\..\Lib\GCC\" + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + "Cortex-M0" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 1 + 0 + 0 + 1 + 0 + 0 + 5 + 2 + 1 + + -fno-strict-aliasing -ffunction-sections + ARM_MATH_CM0, ARM_MATH_MATRIX_CHECK, ARM_MATH_ROUNDING + + ..\..\..\Include + + + + 0 + 1 + + + + + + + + + 1 + 0 + 1 + 0 + 1 + + + + + + -Wl,--gc-sections + + + + + + + BasicMathFunctions + + + arm_abs_f32.c + 1 + ../BasicMathFunctions/arm_abs_f32.c + + + arm_abs_q7.c + 1 + ../BasicMathFunctions/arm_abs_q7.c + + + arm_abs_q15.c + 1 + ../BasicMathFunctions/arm_abs_q15.c + + + arm_abs_q31.c + 1 + ../BasicMathFunctions/arm_abs_q31.c + + + arm_add_f32.c + 1 + ../BasicMathFunctions/arm_add_f32.c + + + arm_add_q7.c + 1 + ../BasicMathFunctions/arm_add_q7.c + + + arm_add_q15.c + 1 + ../BasicMathFunctions/arm_add_q15.c + + + arm_add_q31.c + 1 + ../BasicMathFunctions/arm_add_q31.c + + + arm_dot_prod_f32.c + 1 + ../BasicMathFunctions/arm_dot_prod_f32.c + + + arm_dot_prod_q7.c + 1 + ../BasicMathFunctions/arm_dot_prod_q7.c + + + arm_dot_prod_q15.c + 1 + ../BasicMathFunctions/arm_dot_prod_q15.c + + + arm_dot_prod_q31.c + 1 + ../BasicMathFunctions/arm_dot_prod_q31.c + + + arm_mult_f32.c + 1 + ../BasicMathFunctions/arm_mult_f32.c + + + arm_mult_q7.c + 1 + ../BasicMathFunctions/arm_mult_q7.c + + + arm_mult_q15.c + 1 + ../BasicMathFunctions/arm_mult_q15.c + + + arm_mult_q31.c + 1 + ../BasicMathFunctions/arm_mult_q31.c + + + arm_negate_f32.c + 1 + ../BasicMathFunctions/arm_negate_f32.c + + + arm_negate_q7.c + 1 + ../BasicMathFunctions/arm_negate_q7.c + + + arm_negate_q15.c + 1 + ../BasicMathFunctions/arm_negate_q15.c + + + arm_negate_q31.c + 1 + ../BasicMathFunctions/arm_negate_q31.c + + + arm_offset_f32.c + 1 + ../BasicMathFunctions/arm_offset_f32.c + + + arm_offset_q7.c + 1 + ../BasicMathFunctions/arm_offset_q7.c + + + arm_offset_q15.c + 1 + ../BasicMathFunctions/arm_offset_q15.c + + + arm_offset_q31.c + 1 + ../BasicMathFunctions/arm_offset_q31.c + + + arm_scale_f32.c + 1 + ../BasicMathFunctions/arm_scale_f32.c + + + arm_scale_q7.c + 1 + ../BasicMathFunctions/arm_scale_q7.c + + + arm_scale_q15.c + 1 + ../BasicMathFunctions/arm_scale_q15.c + + + arm_scale_q31.c + 1 + ../BasicMathFunctions/arm_scale_q31.c + + + arm_shift_q7.c + 1 + ../BasicMathFunctions/arm_shift_q7.c + + + arm_shift_q15.c + 1 + ../BasicMathFunctions/arm_shift_q15.c + + + arm_shift_q31.c + 1 + ../BasicMathFunctions/arm_shift_q31.c + + + arm_sub_f32.c + 1 + ../BasicMathFunctions/arm_sub_f32.c + + + arm_sub_q7.c + 1 + ../BasicMathFunctions/arm_sub_q7.c + + + arm_sub_q15.c + 1 + ../BasicMathFunctions/arm_sub_q15.c + + + arm_sub_q31.c + 1 + ../BasicMathFunctions/arm_sub_q31.c + + + + + FastMathFunctions + + + arm_cos_f32.c + 1 + ../FastMathFunctions/arm_cos_f32.c + + + arm_cos_q15.c + 1 + ../FastMathFunctions/arm_cos_q15.c + + + arm_cos_q31.c + 1 + ../FastMathFunctions/arm_cos_q31.c + + + arm_sin_f32.c + 1 + ../FastMathFunctions/arm_sin_f32.c + + + arm_sin_q15.c + 1 + ../FastMathFunctions/arm_sin_q15.c + + + arm_sin_q31.c + 1 + ../FastMathFunctions/arm_sin_q31.c + + + arm_sqrt_q15.c + 1 + ../FastMathFunctions/arm_sqrt_q15.c + + + arm_sqrt_q31.c + 1 + ../FastMathFunctions/arm_sqrt_q31.c + + + + + ComplexMathFunctions + + + arm_cmplx_conj_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_conj_f32.c + + + arm_cmplx_conj_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_conj_q15.c + + + arm_cmplx_conj_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_conj_q31.c + + + arm_cmplx_dot_prod_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_dot_prod_f32.c + + + arm_cmplx_dot_prod_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_dot_prod_q15.c + + + arm_cmplx_dot_prod_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_dot_prod_q31.c + + + arm_cmplx_mag_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_f32.c + + + arm_cmplx_mag_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_q15.c + + + arm_cmplx_mag_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_q31.c + + + arm_cmplx_mag_squared_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_squared_f32.c + + + arm_cmplx_mag_squared_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_squared_q15.c + + + arm_cmplx_mag_squared_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_squared_q31.c + + + arm_cmplx_mult_cmplx_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c + + + arm_cmplx_mult_cmplx_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c + + + arm_cmplx_mult_cmplx_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c + + + arm_cmplx_mult_real_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_real_f32.c + + + arm_cmplx_mult_real_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_real_q15.c + + + arm_cmplx_mult_real_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_real_q31.c + + + + + FilteringFunctions + + + arm_biquad_cascade_df1_32x64_init_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c + + + arm_biquad_cascade_df1_32x64_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c + + + arm_biquad_cascade_df1_f32.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_f32.c + + + arm_biquad_cascade_df1_fast_q15.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c + + + arm_biquad_cascade_df1_fast_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c + + + arm_biquad_cascade_df1_init_f32.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_init_f32.c + + + arm_biquad_cascade_df1_init_q15.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_init_q15.c + + + arm_biquad_cascade_df1_init_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_init_q31.c + + + arm_biquad_cascade_df1_q15.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_q15.c + + + arm_biquad_cascade_df1_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_q31.c + + + arm_biquad_cascade_df2T_f32.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df2T_f32.c + + + arm_biquad_cascade_df2T_init_f32.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c + + + arm_conv_f32.c + 1 + ../FilteringFunctions/arm_conv_f32.c + + + arm_conv_fast_q15.c + 1 + ../FilteringFunctions/arm_conv_fast_q15.c + + + arm_conv_fast_q31.c + 1 + ../FilteringFunctions/arm_conv_fast_q31.c + + + arm_conv_partial_f32.c + 1 + ../FilteringFunctions/arm_conv_partial_f32.c + + + arm_conv_partial_fast_q15.c + 1 + ../FilteringFunctions/arm_conv_partial_fast_q15.c + + + arm_conv_partial_fast_q31.c + 1 + ../FilteringFunctions/arm_conv_partial_fast_q31.c + + + arm_conv_partial_q7.c + 1 + ../FilteringFunctions/arm_conv_partial_q7.c + + + arm_conv_partial_q15.c + 1 + ../FilteringFunctions/arm_conv_partial_q15.c + + + arm_conv_partial_q31.c + 1 + ../FilteringFunctions/arm_conv_partial_q31.c + + + arm_conv_q7.c + 1 + ../FilteringFunctions/arm_conv_q7.c + + + arm_conv_q15.c + 1 + ../FilteringFunctions/arm_conv_q15.c + + + arm_conv_q31.c + 1 + ../FilteringFunctions/arm_conv_q31.c + + + arm_correlate_f32.c + 1 + ../FilteringFunctions/arm_correlate_f32.c + + + arm_correlate_fast_q15.c + 1 + ../FilteringFunctions/arm_correlate_fast_q15.c + + + arm_correlate_fast_q31.c + 1 + ../FilteringFunctions/arm_correlate_fast_q31.c + + + arm_correlate_q7.c + 1 + ../FilteringFunctions/arm_correlate_q7.c + + + arm_correlate_q15.c + 1 + ../FilteringFunctions/arm_correlate_q15.c + + + arm_correlate_q31.c + 1 + ../FilteringFunctions/arm_correlate_q31.c + + + arm_fir_decimate_f32.c + 1 + ../FilteringFunctions/arm_fir_decimate_f32.c + + + arm_fir_decimate_fast_q15.c + 1 + ../FilteringFunctions/arm_fir_decimate_fast_q15.c + + + arm_fir_decimate_fast_q31.c + 1 + ../FilteringFunctions/arm_fir_decimate_fast_q31.c + + + arm_fir_decimate_init_f32.c + 1 + ../FilteringFunctions/arm_fir_decimate_init_f32.c + + + arm_fir_decimate_init_q15.c + 1 + ../FilteringFunctions/arm_fir_decimate_init_q15.c + + + arm_fir_decimate_init_q31.c + 1 + ../FilteringFunctions/arm_fir_decimate_init_q31.c + + + arm_fir_decimate_q15.c + 1 + ../FilteringFunctions/arm_fir_decimate_q15.c + + + arm_fir_decimate_q31.c + 1 + ../FilteringFunctions/arm_fir_decimate_q31.c + + + arm_fir_f32.c + 1 + ../FilteringFunctions/arm_fir_f32.c + + + arm_fir_fast_q15.c + 1 + ../FilteringFunctions/arm_fir_fast_q15.c + + + arm_fir_fast_q31.c + 1 + ../FilteringFunctions/arm_fir_fast_q31.c + + + arm_fir_init_f32.c + 1 + ../FilteringFunctions/arm_fir_init_f32.c + + + arm_fir_init_q7.c + 1 + ../FilteringFunctions/arm_fir_init_q7.c + + + arm_fir_init_q15.c + 1 + ../FilteringFunctions/arm_fir_init_q15.c + + + arm_fir_init_q31.c + 1 + ../FilteringFunctions/arm_fir_init_q31.c + + + arm_fir_interpolate_f32.c + 1 + ../FilteringFunctions/arm_fir_interpolate_f32.c + + + arm_fir_interpolate_init_f32.c + 1 + ../FilteringFunctions/arm_fir_interpolate_init_f32.c + + + arm_fir_interpolate_init_q15.c + 1 + ../FilteringFunctions/arm_fir_interpolate_init_q15.c + + + arm_fir_interpolate_init_q31.c + 1 + ../FilteringFunctions/arm_fir_interpolate_init_q31.c + + + arm_fir_interpolate_q15.c + 1 + ../FilteringFunctions/arm_fir_interpolate_q15.c + + + arm_fir_interpolate_q31.c + 1 + ../FilteringFunctions/arm_fir_interpolate_q31.c + + + arm_fir_lattice_f32.c + 1 + ../FilteringFunctions/arm_fir_lattice_f32.c + + + arm_fir_lattice_init_f32.c + 1 + ../FilteringFunctions/arm_fir_lattice_init_f32.c + + + arm_fir_lattice_init_q15.c + 1 + ../FilteringFunctions/arm_fir_lattice_init_q15.c + + + arm_fir_lattice_init_q31.c + 1 + ../FilteringFunctions/arm_fir_lattice_init_q31.c + + + arm_fir_lattice_q15.c + 1 + ../FilteringFunctions/arm_fir_lattice_q15.c + + + arm_fir_lattice_q31.c + 1 + ../FilteringFunctions/arm_fir_lattice_q31.c + + + arm_fir_q7.c + 1 + ../FilteringFunctions/arm_fir_q7.c + + + arm_fir_q15.c + 1 + ../FilteringFunctions/arm_fir_q15.c + + + arm_fir_q31.c + 1 + ../FilteringFunctions/arm_fir_q31.c + + + arm_fir_sparse_f32.c + 1 + ../FilteringFunctions/arm_fir_sparse_f32.c + + + arm_fir_sparse_init_f32.c + 1 + ../FilteringFunctions/arm_fir_sparse_init_f32.c + + + arm_fir_sparse_init_q7.c + 1 + ../FilteringFunctions/arm_fir_sparse_init_q7.c + + + arm_fir_sparse_init_q15.c + 1 + ../FilteringFunctions/arm_fir_sparse_init_q15.c + + + arm_fir_sparse_init_q31.c + 1 + ../FilteringFunctions/arm_fir_sparse_init_q31.c + + + arm_fir_sparse_q7.c + 1 + ../FilteringFunctions/arm_fir_sparse_q7.c + + + arm_fir_sparse_q15.c + 1 + ../FilteringFunctions/arm_fir_sparse_q15.c + + + arm_fir_sparse_q31.c + 1 + ../FilteringFunctions/arm_fir_sparse_q31.c + + + arm_iir_lattice_f32.c + 1 + ../FilteringFunctions/arm_iir_lattice_f32.c + + + arm_iir_lattice_init_f32.c + 1 + ../FilteringFunctions/arm_iir_lattice_init_f32.c + + + arm_iir_lattice_init_q15.c + 1 + ../FilteringFunctions/arm_iir_lattice_init_q15.c + + + arm_iir_lattice_init_q31.c + 1 + ../FilteringFunctions/arm_iir_lattice_init_q31.c + + + arm_iir_lattice_q15.c + 1 + ../FilteringFunctions/arm_iir_lattice_q15.c + + + arm_iir_lattice_q31.c + 1 + ../FilteringFunctions/arm_iir_lattice_q31.c + + + arm_lms_f32.c + 1 + ../FilteringFunctions/arm_lms_f32.c + + + arm_lms_init_f32.c + 1 + ../FilteringFunctions/arm_lms_init_f32.c + + + arm_lms_init_q15.c + 1 + ../FilteringFunctions/arm_lms_init_q15.c + + + arm_lms_init_q31.c + 1 + ../FilteringFunctions/arm_lms_init_q31.c + + + arm_lms_norm_f32.c + 1 + ../FilteringFunctions/arm_lms_norm_f32.c + + + arm_lms_norm_init_f32.c + 1 + ../FilteringFunctions/arm_lms_norm_init_f32.c + + + arm_lms_norm_init_q15.c + 1 + ../FilteringFunctions/arm_lms_norm_init_q15.c + + + arm_lms_norm_init_q31.c + 1 + ../FilteringFunctions/arm_lms_norm_init_q31.c + + + arm_lms_norm_q15.c + 1 + ../FilteringFunctions/arm_lms_norm_q15.c + + + arm_lms_norm_q31.c + 1 + ../FilteringFunctions/arm_lms_norm_q31.c + + + arm_lms_q15.c + 1 + ../FilteringFunctions/arm_lms_q15.c + + + arm_lms_q31.c + 1 + ../FilteringFunctions/arm_lms_q31.c + + + + + MatrixFunctions + + + arm_mat_add_f32.c + 1 + ../MatrixFunctions/arm_mat_add_f32.c + + + arm_mat_add_q15.c + 1 + ../MatrixFunctions/arm_mat_add_q15.c + + + arm_mat_add_q31.c + 1 + ../MatrixFunctions/arm_mat_add_q31.c + + + arm_mat_init_f32.c + 1 + ../MatrixFunctions/arm_mat_init_f32.c + + + arm_mat_init_q15.c + 1 + ../MatrixFunctions/arm_mat_init_q15.c + + + arm_mat_init_q31.c + 1 + ../MatrixFunctions/arm_mat_init_q31.c + + + arm_mat_inverse_f32.c + 1 + ../MatrixFunctions/arm_mat_inverse_f32.c + + + arm_mat_mult_f32.c + 1 + ../MatrixFunctions/arm_mat_mult_f32.c + + + arm_mat_mult_fast_q15.c + 1 + ../MatrixFunctions/arm_mat_mult_fast_q15.c + + + arm_mat_mult_fast_q31.c + 1 + ../MatrixFunctions/arm_mat_mult_fast_q31.c + + + arm_mat_mult_q15.c + 1 + ../MatrixFunctions/arm_mat_mult_q15.c + + + arm_mat_mult_q31.c + 1 + ../MatrixFunctions/arm_mat_mult_q31.c + + + arm_mat_scale_f32.c + 1 + ../MatrixFunctions/arm_mat_scale_f32.c + + + arm_mat_scale_q15.c + 1 + ../MatrixFunctions/arm_mat_scale_q15.c + + + arm_mat_scale_q31.c + 1 + ../MatrixFunctions/arm_mat_scale_q31.c + + + arm_mat_sub_f32.c + 1 + ../MatrixFunctions/arm_mat_sub_f32.c + + + arm_mat_sub_q15.c + 1 + ../MatrixFunctions/arm_mat_sub_q15.c + + + arm_mat_sub_q31.c + 1 + ../MatrixFunctions/arm_mat_sub_q31.c + + + arm_mat_trans_f32.c + 1 + ../MatrixFunctions/arm_mat_trans_f32.c + + + arm_mat_trans_q15.c + 1 + ../MatrixFunctions/arm_mat_trans_q15.c + + + arm_mat_trans_q31.c + 1 + ../MatrixFunctions/arm_mat_trans_q31.c + + + + + TransformFunctions + + + arm_cfft_radix4_f32.c + 1 + ../TransformFunctions/arm_cfft_radix4_f32.c + + + arm_cfft_radix4_init_f32.c + 1 + ../TransformFunctions/arm_cfft_radix4_init_f32.c + + + arm_cfft_radix4_init_q15.c + 1 + ../TransformFunctions/arm_cfft_radix4_init_q15.c + + + arm_cfft_radix4_init_q31.c + 1 + ../TransformFunctions/arm_cfft_radix4_init_q31.c + + + arm_cfft_radix4_q15.c + 1 + ../TransformFunctions/arm_cfft_radix4_q15.c + + + arm_cfft_radix4_q31.c + 1 + ../TransformFunctions/arm_cfft_radix4_q31.c + + + arm_dct4_f32.c + 1 + ../TransformFunctions/arm_dct4_f32.c + + + arm_dct4_init_f32.c + 1 + ../TransformFunctions/arm_dct4_init_f32.c + + + arm_dct4_init_q15.c + 1 + ../TransformFunctions/arm_dct4_init_q15.c + + + arm_dct4_init_q31.c + 1 + ../TransformFunctions/arm_dct4_init_q31.c + + + arm_dct4_q15.c + 1 + ../TransformFunctions/arm_dct4_q15.c + + + arm_dct4_q31.c + 1 + ../TransformFunctions/arm_dct4_q31.c + + + arm_rfft_f32.c + 1 + ../TransformFunctions/arm_rfft_f32.c + + + arm_rfft_init_f32.c + 1 + ../TransformFunctions/arm_rfft_init_f32.c + + + arm_rfft_init_q15.c + 1 + ../TransformFunctions/arm_rfft_init_q15.c + + + arm_rfft_init_q31.c + 1 + ../TransformFunctions/arm_rfft_init_q31.c + + + arm_rfft_q15.c + 1 + ../TransformFunctions/arm_rfft_q15.c + + + arm_rfft_q31.c + 1 + ../TransformFunctions/arm_rfft_q31.c + + + + + ControllerFunctions + + + arm_pid_init_f32.c + 1 + ../ControllerFunctions/arm_pid_init_f32.c + + + arm_pid_init_q15.c + 1 + ../ControllerFunctions/arm_pid_init_q15.c + + + arm_pid_init_q31.c + 1 + ../ControllerFunctions/arm_pid_init_q31.c + + + arm_pid_reset_f32.c + 1 + ../ControllerFunctions/arm_pid_reset_f32.c + + + arm_pid_reset_q15.c + 1 + ../ControllerFunctions/arm_pid_reset_q15.c + + + arm_pid_reset_q31.c + 1 + ../ControllerFunctions/arm_pid_reset_q31.c + + + arm_sin_cos_f32.c + 1 + ../ControllerFunctions/arm_sin_cos_f32.c + + + arm_sin_cos_q31.c + 1 + ../ControllerFunctions/arm_sin_cos_q31.c + + + + + StatisticsFunctions + + + arm_max_f32.c + 1 + ../StatisticsFunctions/arm_max_f32.c + + + arm_max_q7.c + 1 + ../StatisticsFunctions/arm_max_q7.c + + + arm_max_q15.c + 1 + ../StatisticsFunctions/arm_max_q15.c + + + arm_max_q31.c + 1 + ../StatisticsFunctions/arm_max_q31.c + + + arm_mean_f32.c + 1 + ../StatisticsFunctions/arm_mean_f32.c + + + arm_mean_q7.c + 1 + ../StatisticsFunctions/arm_mean_q7.c + + + arm_mean_q15.c + 1 + ../StatisticsFunctions/arm_mean_q15.c + + + arm_mean_q31.c + 1 + ../StatisticsFunctions/arm_mean_q31.c + + + arm_min_f32.c + 1 + ../StatisticsFunctions/arm_min_f32.c + + + arm_min_q7.c + 1 + ../StatisticsFunctions/arm_min_q7.c + + + arm_min_q15.c + 1 + ../StatisticsFunctions/arm_min_q15.c + + + arm_min_q31.c + 1 + ../StatisticsFunctions/arm_min_q31.c + + + arm_power_f32.c + 1 + ../StatisticsFunctions/arm_power_f32.c + + + arm_power_q7.c + 1 + ../StatisticsFunctions/arm_power_q7.c + + + arm_power_q15.c + 1 + ../StatisticsFunctions/arm_power_q15.c + + + arm_power_q31.c + 1 + ../StatisticsFunctions/arm_power_q31.c + + + arm_rms_f32.c + 1 + ../StatisticsFunctions/arm_rms_f32.c + + + arm_rms_q15.c + 1 + ../StatisticsFunctions/arm_rms_q15.c + + + arm_rms_q31.c + 1 + ../StatisticsFunctions/arm_rms_q31.c + + + arm_std_f32.c + 1 + ../StatisticsFunctions/arm_std_f32.c + + + arm_std_q15.c + 1 + ../StatisticsFunctions/arm_std_q15.c + + + arm_std_q31.c + 1 + ../StatisticsFunctions/arm_std_q31.c + + + arm_var_f32.c + 1 + ../StatisticsFunctions/arm_var_f32.c + + + arm_var_q15.c + 1 + ../StatisticsFunctions/arm_var_q15.c + + + arm_var_q31.c + 1 + ../StatisticsFunctions/arm_var_q31.c + + + + + SupportFunctions + + + arm_copy_f32.c + 1 + ../SupportFunctions/arm_copy_f32.c + + + arm_copy_q7.c + 1 + ../SupportFunctions/arm_copy_q7.c + + + arm_copy_q15.c + 1 + ../SupportFunctions/arm_copy_q15.c + + + arm_copy_q31.c + 1 + ../SupportFunctions/arm_copy_q31.c + + + arm_fill_f32.c + 1 + ../SupportFunctions/arm_fill_f32.c + + + arm_fill_q7.c + 1 + ../SupportFunctions/arm_fill_q7.c + + + arm_fill_q15.c + 1 + ../SupportFunctions/arm_fill_q15.c + + + arm_fill_q31.c + 1 + ../SupportFunctions/arm_fill_q31.c + + + arm_float_to_q7.c + 1 + ../SupportFunctions/arm_float_to_q7.c + + + arm_float_to_q15.c + 1 + ../SupportFunctions/arm_float_to_q15.c + + + arm_float_to_q31.c + 1 + ../SupportFunctions/arm_float_to_q31.c + + + arm_q7_to_float.c + 1 + ../SupportFunctions/arm_q7_to_float.c + + + arm_q7_to_q15.c + 1 + ../SupportFunctions/arm_q7_to_q15.c + + + arm_q7_to_q31.c + 1 + ../SupportFunctions/arm_q7_to_q31.c + + + arm_q15_to_float.c + 1 + ../SupportFunctions/arm_q15_to_float.c + + + arm_q15_to_q7.c + 1 + ../SupportFunctions/arm_q15_to_q7.c + + + arm_q15_to_q31.c + 1 + ../SupportFunctions/arm_q15_to_q31.c + + + arm_q31_to_float.c + 1 + ../SupportFunctions/arm_q31_to_float.c + + + arm_q31_to_q7.c + 1 + ../SupportFunctions/arm_q31_to_q7.c + + + arm_q31_to_q15.c + 1 + ../SupportFunctions/arm_q31_to_q15.c + + + + + CommonTables + + + arm_common_tables.c + 1 + ../CommonTables/arm_common_tables.c + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexM3x_math.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexM3x_math.uvopt new file mode 100644 index 000000000..aac0be604 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexM3x_math.uvopt @@ -0,0 +1,3582 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + DSP_Lib CM3 LE + 0x3 + ARM-GNU + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\intermediateFiles\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + SARMCM3.DLL + + DLM.DLL + -pEMBER + SARMCM3.DLL + + TLM.DLL + -pEMBER + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + BasicMathFunctions + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_abs_f32.c + arm_abs_f32.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_abs_q7.c + arm_abs_q7.c + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_abs_q15.c + arm_abs_q15.c + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_abs_q31.c + arm_abs_q31.c + + + 1 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_add_f32.c + arm_add_f32.c + + + 1 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_add_q7.c + arm_add_q7.c + + + 1 + 7 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_add_q15.c + arm_add_q15.c + + + 1 + 8 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_add_q31.c + arm_add_q31.c + + + 1 + 9 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_dot_prod_f32.c + arm_dot_prod_f32.c + + + 1 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_dot_prod_q7.c + arm_dot_prod_q7.c + + + 1 + 11 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_dot_prod_q15.c + arm_dot_prod_q15.c + + + 1 + 12 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_dot_prod_q31.c + arm_dot_prod_q31.c + + + 1 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_mult_f32.c + arm_mult_f32.c + + + 1 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_mult_q7.c + arm_mult_q7.c + + + 1 + 15 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_mult_q15.c + arm_mult_q15.c + + + 1 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_mult_q31.c + arm_mult_q31.c + + + 1 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_negate_f32.c + arm_negate_f32.c + + + 1 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_negate_q7.c + arm_negate_q7.c + + + 1 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_negate_q15.c + arm_negate_q15.c + + + 1 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_negate_q31.c + arm_negate_q31.c + + + 1 + 21 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_offset_f32.c + arm_offset_f32.c + + + 1 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_offset_q7.c + arm_offset_q7.c + + + 1 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_offset_q15.c + arm_offset_q15.c + + + 1 + 24 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_offset_q31.c + arm_offset_q31.c + + + 1 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_scale_f32.c + arm_scale_f32.c + + + 1 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_scale_q7.c + arm_scale_q7.c + + + 1 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_scale_q15.c + arm_scale_q15.c + + + 1 + 28 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_scale_q31.c + arm_scale_q31.c + + + 1 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_shift_q7.c + arm_shift_q7.c + + + 1 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_shift_q15.c + arm_shift_q15.c + + + 1 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_shift_q31.c + arm_shift_q31.c + + + 1 + 32 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_sub_f32.c + arm_sub_f32.c + + + 1 + 33 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_sub_q7.c + arm_sub_q7.c + + + 1 + 34 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_sub_q15.c + arm_sub_q15.c + + + 1 + 35 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_sub_q31.c + arm_sub_q31.c + + + + + FastMathFunctions + 0 + 0 + 0 + + 2 + 36 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_cos_f32.c + arm_cos_f32.c + + + 2 + 37 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_cos_q15.c + arm_cos_q15.c + + + 2 + 38 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_cos_q31.c + arm_cos_q31.c + + + 2 + 39 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_sin_f32.c + arm_sin_f32.c + + + 2 + 40 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_sin_q15.c + arm_sin_q15.c + + + 2 + 41 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_sin_q31.c + arm_sin_q31.c + + + 2 + 42 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_sqrt_q15.c + arm_sqrt_q15.c + + + 2 + 43 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_sqrt_q31.c + arm_sqrt_q31.c + + + + + ComplexMathFunctions + 0 + 0 + 0 + + 3 + 44 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_conj_f32.c + arm_cmplx_conj_f32.c + + + 3 + 45 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_conj_q15.c + arm_cmplx_conj_q15.c + + + 3 + 46 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_conj_q31.c + arm_cmplx_conj_q31.c + + + 3 + 47 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_dot_prod_f32.c + arm_cmplx_dot_prod_f32.c + + + 3 + 48 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_dot_prod_q15.c + arm_cmplx_dot_prod_q15.c + + + 3 + 49 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_dot_prod_q31.c + arm_cmplx_dot_prod_q31.c + + + 3 + 50 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mag_f32.c + arm_cmplx_mag_f32.c + + + 3 + 51 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mag_q15.c + arm_cmplx_mag_q15.c + + + 3 + 52 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mag_q31.c + arm_cmplx_mag_q31.c + + + 3 + 53 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mag_squared_f32.c + arm_cmplx_mag_squared_f32.c + + + 3 + 54 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mag_squared_q15.c + arm_cmplx_mag_squared_q15.c + + + 3 + 55 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mag_squared_q31.c + arm_cmplx_mag_squared_q31.c + + + 3 + 56 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c + arm_cmplx_mult_cmplx_f32.c + + + 3 + 57 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c + arm_cmplx_mult_cmplx_q15.c + + + 3 + 58 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c + arm_cmplx_mult_cmplx_q31.c + + + 3 + 59 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mult_real_f32.c + arm_cmplx_mult_real_f32.c + + + 3 + 60 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mult_real_q15.c + arm_cmplx_mult_real_q15.c + + + 3 + 61 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mult_real_q31.c + arm_cmplx_mult_real_q31.c + + + + + FilteringFunctions + 0 + 0 + 0 + + 4 + 62 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c + arm_biquad_cascade_df1_32x64_init_q31.c + + + 4 + 63 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c + arm_biquad_cascade_df1_32x64_q31.c + + + 4 + 64 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_f32.c + arm_biquad_cascade_df1_f32.c + + + 4 + 65 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c + arm_biquad_cascade_df1_fast_q15.c + + + 4 + 66 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c + arm_biquad_cascade_df1_fast_q31.c + + + 4 + 67 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_init_f32.c + arm_biquad_cascade_df1_init_f32.c + + + 4 + 68 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_init_q15.c + arm_biquad_cascade_df1_init_q15.c + + + 4 + 69 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_init_q31.c + arm_biquad_cascade_df1_init_q31.c + + + 4 + 70 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_q15.c + arm_biquad_cascade_df1_q15.c + + + 4 + 71 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_q31.c + arm_biquad_cascade_df1_q31.c + + + 4 + 72 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df2T_f32.c + arm_biquad_cascade_df2T_f32.c + + + 4 + 73 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c + arm_biquad_cascade_df2T_init_f32.c + + + 4 + 74 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_f32.c + arm_conv_f32.c + + + 4 + 75 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_fast_q15.c + arm_conv_fast_q15.c + + + 4 + 76 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_fast_q31.c + arm_conv_fast_q31.c + + + 4 + 77 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_partial_f32.c + arm_conv_partial_f32.c + + + 4 + 78 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_partial_fast_q15.c + arm_conv_partial_fast_q15.c + + + 4 + 79 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_partial_fast_q31.c + arm_conv_partial_fast_q31.c + + + 4 + 80 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_partial_q7.c + arm_conv_partial_q7.c + + + 4 + 81 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_partial_q15.c + arm_conv_partial_q15.c + + + 4 + 82 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_partial_q31.c + arm_conv_partial_q31.c + + + 4 + 83 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_q7.c + arm_conv_q7.c + + + 4 + 84 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_q15.c + arm_conv_q15.c + + + 4 + 85 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_q31.c + arm_conv_q31.c + + + 4 + 86 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_correlate_f32.c + arm_correlate_f32.c + + + 4 + 87 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_correlate_fast_q15.c + arm_correlate_fast_q15.c + + + 4 + 88 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_correlate_fast_q31.c + arm_correlate_fast_q31.c + + + 4 + 89 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_correlate_q7.c + arm_correlate_q7.c + + + 4 + 90 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_correlate_q15.c + arm_correlate_q15.c + + + 4 + 91 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_correlate_q31.c + arm_correlate_q31.c + + + 4 + 92 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_f32.c + arm_fir_decimate_f32.c + + + 4 + 93 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_fast_q15.c + arm_fir_decimate_fast_q15.c + + + 4 + 94 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_fast_q31.c + arm_fir_decimate_fast_q31.c + + + 4 + 95 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_init_f32.c + arm_fir_decimate_init_f32.c + + + 4 + 96 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_init_q15.c + arm_fir_decimate_init_q15.c + + + 4 + 97 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_init_q31.c + arm_fir_decimate_init_q31.c + + + 4 + 98 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_q15.c + arm_fir_decimate_q15.c + + + 4 + 99 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_q31.c + arm_fir_decimate_q31.c + + + 4 + 100 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_f32.c + arm_fir_f32.c + + + 4 + 101 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_fast_q15.c + arm_fir_fast_q15.c + + + 4 + 102 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_fast_q31.c + arm_fir_fast_q31.c + + + 4 + 103 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_init_f32.c + arm_fir_init_f32.c + + + 4 + 104 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_init_q7.c + arm_fir_init_q7.c + + + 4 + 105 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_init_q15.c + arm_fir_init_q15.c + + + 4 + 106 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_init_q31.c + arm_fir_init_q31.c + + + 4 + 107 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_interpolate_f32.c + arm_fir_interpolate_f32.c + + + 4 + 108 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_interpolate_init_f32.c + arm_fir_interpolate_init_f32.c + + + 4 + 109 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_interpolate_init_q15.c + arm_fir_interpolate_init_q15.c + + + 4 + 110 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_interpolate_init_q31.c + arm_fir_interpolate_init_q31.c + + + 4 + 111 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_interpolate_q15.c + arm_fir_interpolate_q15.c + + + 4 + 112 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_interpolate_q31.c + arm_fir_interpolate_q31.c + + + 4 + 113 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_lattice_f32.c + arm_fir_lattice_f32.c + + + 4 + 114 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_lattice_init_f32.c + arm_fir_lattice_init_f32.c + + + 4 + 115 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_lattice_init_q15.c + arm_fir_lattice_init_q15.c + + + 4 + 116 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_lattice_init_q31.c + arm_fir_lattice_init_q31.c + + + 4 + 117 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_lattice_q15.c + arm_fir_lattice_q15.c + + + 4 + 118 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_lattice_q31.c + arm_fir_lattice_q31.c + + + 4 + 119 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_q7.c + arm_fir_q7.c + + + 4 + 120 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_q15.c + arm_fir_q15.c + + + 4 + 121 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_q31.c + arm_fir_q31.c + + + 4 + 122 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_f32.c + arm_fir_sparse_f32.c + + + 4 + 123 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_init_f32.c + arm_fir_sparse_init_f32.c + + + 4 + 124 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_init_q7.c + arm_fir_sparse_init_q7.c + + + 4 + 125 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_init_q15.c + arm_fir_sparse_init_q15.c + + + 4 + 126 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_init_q31.c + arm_fir_sparse_init_q31.c + + + 4 + 127 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_q7.c + arm_fir_sparse_q7.c + + + 4 + 128 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_q15.c + arm_fir_sparse_q15.c + + + 4 + 129 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_q31.c + arm_fir_sparse_q31.c + + + 4 + 130 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_iir_lattice_f32.c + arm_iir_lattice_f32.c + + + 4 + 131 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_iir_lattice_init_f32.c + arm_iir_lattice_init_f32.c + + + 4 + 132 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_iir_lattice_init_q15.c + arm_iir_lattice_init_q15.c + + + 4 + 133 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_iir_lattice_init_q31.c + arm_iir_lattice_init_q31.c + + + 4 + 134 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_iir_lattice_q15.c + arm_iir_lattice_q15.c + + + 4 + 135 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_iir_lattice_q31.c + arm_iir_lattice_q31.c + + + 4 + 136 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_f32.c + arm_lms_f32.c + + + 4 + 137 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_init_f32.c + arm_lms_init_f32.c + + + 4 + 138 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_init_q15.c + arm_lms_init_q15.c + + + 4 + 139 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_init_q31.c + arm_lms_init_q31.c + + + 4 + 140 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_norm_f32.c + arm_lms_norm_f32.c + + + 4 + 141 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_norm_init_f32.c + arm_lms_norm_init_f32.c + + + 4 + 142 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_norm_init_q15.c + arm_lms_norm_init_q15.c + + + 4 + 143 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_norm_init_q31.c + arm_lms_norm_init_q31.c + + + 4 + 144 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_norm_q15.c + arm_lms_norm_q15.c + + + 4 + 145 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_norm_q31.c + arm_lms_norm_q31.c + + + 4 + 146 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_q15.c + arm_lms_q15.c + + + 4 + 147 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_q31.c + arm_lms_q31.c + + + + + MatrixFunctions + 0 + 0 + 0 + + 5 + 148 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_add_f32.c + arm_mat_add_f32.c + + + 5 + 149 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_add_q15.c + arm_mat_add_q15.c + + + 5 + 150 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_add_q31.c + arm_mat_add_q31.c + + + 5 + 151 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_init_f32.c + arm_mat_init_f32.c + + + 5 + 152 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_init_q15.c + arm_mat_init_q15.c + + + 5 + 153 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_init_q31.c + arm_mat_init_q31.c + + + 5 + 154 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_inverse_f32.c + arm_mat_inverse_f32.c + + + 5 + 155 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_mult_f32.c + arm_mat_mult_f32.c + + + 5 + 156 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_mult_fast_q15.c + arm_mat_mult_fast_q15.c + + + 5 + 157 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_mult_fast_q31.c + arm_mat_mult_fast_q31.c + + + 5 + 158 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_mult_q15.c + arm_mat_mult_q15.c + + + 5 + 159 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_mult_q31.c + arm_mat_mult_q31.c + + + 5 + 160 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_scale_f32.c + arm_mat_scale_f32.c + + + 5 + 161 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_scale_q15.c + arm_mat_scale_q15.c + + + 5 + 162 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_scale_q31.c + arm_mat_scale_q31.c + + + 5 + 163 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_sub_f32.c + arm_mat_sub_f32.c + + + 5 + 164 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_sub_q15.c + arm_mat_sub_q15.c + + + 5 + 165 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_sub_q31.c + arm_mat_sub_q31.c + + + 5 + 166 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_trans_f32.c + arm_mat_trans_f32.c + + + 5 + 167 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_trans_q15.c + arm_mat_trans_q15.c + + + 5 + 168 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_trans_q31.c + arm_mat_trans_q31.c + + + + + TransformFunctions + 0 + 0 + 0 + + 6 + 169 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_cfft_radix4_f32.c + arm_cfft_radix4_f32.c + + + 6 + 170 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_cfft_radix4_init_f32.c + arm_cfft_radix4_init_f32.c + + + 6 + 171 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_cfft_radix4_init_q15.c + arm_cfft_radix4_init_q15.c + + + 6 + 172 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_cfft_radix4_init_q31.c + arm_cfft_radix4_init_q31.c + + + 6 + 173 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_cfft_radix4_q15.c + arm_cfft_radix4_q15.c + + + 6 + 174 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_cfft_radix4_q31.c + arm_cfft_radix4_q31.c + + + 6 + 175 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_dct4_f32.c + arm_dct4_f32.c + + + 6 + 176 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_dct4_init_f32.c + arm_dct4_init_f32.c + + + 6 + 177 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_dct4_init_q15.c + arm_dct4_init_q15.c + + + 6 + 178 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_dct4_init_q31.c + arm_dct4_init_q31.c + + + 6 + 179 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_dct4_q15.c + arm_dct4_q15.c + + + 6 + 180 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_dct4_q31.c + arm_dct4_q31.c + + + 6 + 181 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_rfft_f32.c + arm_rfft_f32.c + + + 6 + 182 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_rfft_init_f32.c + arm_rfft_init_f32.c + + + 6 + 183 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_rfft_init_q15.c + arm_rfft_init_q15.c + + + 6 + 184 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_rfft_init_q31.c + arm_rfft_init_q31.c + + + 6 + 185 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_rfft_q15.c + arm_rfft_q15.c + + + 6 + 186 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_rfft_q31.c + arm_rfft_q31.c + + + + + ControllerFunctions + 0 + 0 + 0 + + 7 + 187 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_pid_init_f32.c + arm_pid_init_f32.c + + + 7 + 188 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_pid_init_q15.c + arm_pid_init_q15.c + + + 7 + 189 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_pid_init_q31.c + arm_pid_init_q31.c + + + 7 + 190 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_pid_reset_f32.c + arm_pid_reset_f32.c + + + 7 + 191 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_pid_reset_q15.c + arm_pid_reset_q15.c + + + 7 + 192 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_pid_reset_q31.c + arm_pid_reset_q31.c + + + 7 + 193 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_sin_cos_f32.c + arm_sin_cos_f32.c + + + 7 + 194 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_sin_cos_q31.c + arm_sin_cos_q31.c + + + + + StatisticsFunctions + 0 + 0 + 0 + + 8 + 195 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_max_f32.c + arm_max_f32.c + + + 8 + 196 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_max_q7.c + arm_max_q7.c + + + 8 + 197 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_max_q15.c + arm_max_q15.c + + + 8 + 198 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_max_q31.c + arm_max_q31.c + + + 8 + 199 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_mean_f32.c + arm_mean_f32.c + + + 8 + 200 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_mean_q7.c + arm_mean_q7.c + + + 8 + 201 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_mean_q15.c + arm_mean_q15.c + + + 8 + 202 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_mean_q31.c + arm_mean_q31.c + + + 8 + 203 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_min_f32.c + arm_min_f32.c + + + 8 + 204 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_min_q7.c + arm_min_q7.c + + + 8 + 205 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_min_q15.c + arm_min_q15.c + + + 8 + 206 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_min_q31.c + arm_min_q31.c + + + 8 + 207 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_power_f32.c + arm_power_f32.c + + + 8 + 208 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_power_q7.c + arm_power_q7.c + + + 8 + 209 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_power_q15.c + arm_power_q15.c + + + 8 + 210 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_power_q31.c + arm_power_q31.c + + + 8 + 211 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_rms_f32.c + arm_rms_f32.c + + + 8 + 212 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_rms_q15.c + arm_rms_q15.c + + + 8 + 213 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_rms_q31.c + arm_rms_q31.c + + + 8 + 214 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_std_f32.c + arm_std_f32.c + + + 8 + 215 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_std_q15.c + arm_std_q15.c + + + 8 + 216 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_std_q31.c + arm_std_q31.c + + + 8 + 217 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_var_f32.c + arm_var_f32.c + + + 8 + 218 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_var_q15.c + arm_var_q15.c + + + 8 + 219 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_var_q31.c + arm_var_q31.c + + + + + SupportFunctions + 0 + 0 + 0 + + 9 + 220 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_copy_f32.c + arm_copy_f32.c + + + 9 + 221 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_copy_q7.c + arm_copy_q7.c + + + 9 + 222 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_copy_q15.c + arm_copy_q15.c + + + 9 + 223 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_copy_q31.c + arm_copy_q31.c + + + 9 + 224 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_fill_f32.c + arm_fill_f32.c + + + 9 + 225 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_fill_q7.c + arm_fill_q7.c + + + 9 + 226 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_fill_q15.c + arm_fill_q15.c + + + 9 + 227 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_fill_q31.c + arm_fill_q31.c + + + 9 + 228 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_float_to_q7.c + arm_float_to_q7.c + + + 9 + 229 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_float_to_q15.c + arm_float_to_q15.c + + + 9 + 230 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_float_to_q31.c + arm_float_to_q31.c + + + 9 + 231 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q7_to_float.c + arm_q7_to_float.c + + + 9 + 232 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q7_to_q15.c + arm_q7_to_q15.c + + + 9 + 233 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q7_to_q31.c + arm_q7_to_q31.c + + + 9 + 234 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q15_to_float.c + arm_q15_to_float.c + + + 9 + 235 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q15_to_q7.c + arm_q15_to_q7.c + + + 9 + 236 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q15_to_q31.c + arm_q15_to_q31.c + + + 9 + 237 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q31_to_float.c + arm_q31_to_float.c + + + 9 + 238 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q31_to_q7.c + arm_q31_to_q7.c + + + 9 + 239 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q31_to_q15.c + arm_q31_to_q15.c + + + + + CommonTables + 0 + 0 + 0 + + 10 + 240 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../CommonTables/arm_common_tables.c + arm_common_tables.c + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexM3x_math.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexM3x_math.uvproj new file mode 100644 index 000000000..936116c48 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexM3x_math.uvproj @@ -0,0 +1,1550 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + DSP_Lib CM3 LE + 0x3 + ARM-GNU + + + Cortex-M3 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M3") ESEL ELITTLE + + + + 4349 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\intermediateFiles\ + arm_cortexM3l_math + 0 + 1 + 0 + 1 + 0 + .\intermediateFiles\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + 0 + cmd.exe /C copy ".\intermediateFiles\lib@L.a" "..\..\..\Lib\GCC\" + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DLM.DLL + -pEMBER + SARMCM3.DLL + + TLM.DLL + -pEMBER + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + "Cortex-M3" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 1 + 0 + 0 + 1 + 0 + 0 + 5 + 2 + 1 + + -fno-strict-aliasing -ffunction-sections + ARM_MATH_CM3, ARM_MATH_MATRIX_CHECK, ARM_MATH_ROUNDING + + ..\..\..\Include + + + + 0 + 1 + + + + + + + + + 1 + 0 + 1 + 0 + 1 + + + + + + -Wl,--gc-sections + + + + + + + BasicMathFunctions + + + arm_abs_f32.c + 1 + ../BasicMathFunctions/arm_abs_f32.c + + + arm_abs_q7.c + 1 + ../BasicMathFunctions/arm_abs_q7.c + + + arm_abs_q15.c + 1 + ../BasicMathFunctions/arm_abs_q15.c + + + arm_abs_q31.c + 1 + ../BasicMathFunctions/arm_abs_q31.c + + + arm_add_f32.c + 1 + ../BasicMathFunctions/arm_add_f32.c + + + arm_add_q7.c + 1 + ../BasicMathFunctions/arm_add_q7.c + + + arm_add_q15.c + 1 + ../BasicMathFunctions/arm_add_q15.c + + + arm_add_q31.c + 1 + ../BasicMathFunctions/arm_add_q31.c + + + arm_dot_prod_f32.c + 1 + ../BasicMathFunctions/arm_dot_prod_f32.c + + + arm_dot_prod_q7.c + 1 + ../BasicMathFunctions/arm_dot_prod_q7.c + + + arm_dot_prod_q15.c + 1 + ../BasicMathFunctions/arm_dot_prod_q15.c + + + arm_dot_prod_q31.c + 1 + ../BasicMathFunctions/arm_dot_prod_q31.c + + + arm_mult_f32.c + 1 + ../BasicMathFunctions/arm_mult_f32.c + + + arm_mult_q7.c + 1 + ../BasicMathFunctions/arm_mult_q7.c + + + arm_mult_q15.c + 1 + ../BasicMathFunctions/arm_mult_q15.c + + + arm_mult_q31.c + 1 + ../BasicMathFunctions/arm_mult_q31.c + + + arm_negate_f32.c + 1 + ../BasicMathFunctions/arm_negate_f32.c + + + arm_negate_q7.c + 1 + ../BasicMathFunctions/arm_negate_q7.c + + + arm_negate_q15.c + 1 + ../BasicMathFunctions/arm_negate_q15.c + + + arm_negate_q31.c + 1 + ../BasicMathFunctions/arm_negate_q31.c + + + arm_offset_f32.c + 1 + ../BasicMathFunctions/arm_offset_f32.c + + + arm_offset_q7.c + 1 + ../BasicMathFunctions/arm_offset_q7.c + + + arm_offset_q15.c + 1 + ../BasicMathFunctions/arm_offset_q15.c + + + arm_offset_q31.c + 1 + ../BasicMathFunctions/arm_offset_q31.c + + + arm_scale_f32.c + 1 + ../BasicMathFunctions/arm_scale_f32.c + + + arm_scale_q7.c + 1 + ../BasicMathFunctions/arm_scale_q7.c + + + arm_scale_q15.c + 1 + ../BasicMathFunctions/arm_scale_q15.c + + + arm_scale_q31.c + 1 + ../BasicMathFunctions/arm_scale_q31.c + + + arm_shift_q7.c + 1 + ../BasicMathFunctions/arm_shift_q7.c + + + arm_shift_q15.c + 1 + ../BasicMathFunctions/arm_shift_q15.c + + + arm_shift_q31.c + 1 + ../BasicMathFunctions/arm_shift_q31.c + + + arm_sub_f32.c + 1 + ../BasicMathFunctions/arm_sub_f32.c + + + arm_sub_q7.c + 1 + ../BasicMathFunctions/arm_sub_q7.c + + + arm_sub_q15.c + 1 + ../BasicMathFunctions/arm_sub_q15.c + + + arm_sub_q31.c + 1 + ../BasicMathFunctions/arm_sub_q31.c + + + + + FastMathFunctions + + + arm_cos_f32.c + 1 + ../FastMathFunctions/arm_cos_f32.c + + + arm_cos_q15.c + 1 + ../FastMathFunctions/arm_cos_q15.c + + + arm_cos_q31.c + 1 + ../FastMathFunctions/arm_cos_q31.c + + + arm_sin_f32.c + 1 + ../FastMathFunctions/arm_sin_f32.c + + + arm_sin_q15.c + 1 + ../FastMathFunctions/arm_sin_q15.c + + + arm_sin_q31.c + 1 + ../FastMathFunctions/arm_sin_q31.c + + + arm_sqrt_q15.c + 1 + ../FastMathFunctions/arm_sqrt_q15.c + + + arm_sqrt_q31.c + 1 + ../FastMathFunctions/arm_sqrt_q31.c + + + + + ComplexMathFunctions + + + arm_cmplx_conj_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_conj_f32.c + + + arm_cmplx_conj_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_conj_q15.c + + + arm_cmplx_conj_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_conj_q31.c + + + arm_cmplx_dot_prod_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_dot_prod_f32.c + + + arm_cmplx_dot_prod_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_dot_prod_q15.c + + + arm_cmplx_dot_prod_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_dot_prod_q31.c + + + arm_cmplx_mag_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_f32.c + + + arm_cmplx_mag_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_q15.c + + + arm_cmplx_mag_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_q31.c + + + arm_cmplx_mag_squared_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_squared_f32.c + + + arm_cmplx_mag_squared_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_squared_q15.c + + + arm_cmplx_mag_squared_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_squared_q31.c + + + arm_cmplx_mult_cmplx_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c + + + arm_cmplx_mult_cmplx_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c + + + arm_cmplx_mult_cmplx_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c + + + arm_cmplx_mult_real_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_real_f32.c + + + arm_cmplx_mult_real_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_real_q15.c + + + arm_cmplx_mult_real_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_real_q31.c + + + + + FilteringFunctions + + + arm_biquad_cascade_df1_32x64_init_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c + + + arm_biquad_cascade_df1_32x64_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c + + + arm_biquad_cascade_df1_f32.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_f32.c + + + arm_biquad_cascade_df1_fast_q15.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c + + + arm_biquad_cascade_df1_fast_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c + + + arm_biquad_cascade_df1_init_f32.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_init_f32.c + + + arm_biquad_cascade_df1_init_q15.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_init_q15.c + + + arm_biquad_cascade_df1_init_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_init_q31.c + + + arm_biquad_cascade_df1_q15.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_q15.c + + + arm_biquad_cascade_df1_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_q31.c + + + arm_biquad_cascade_df2T_f32.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df2T_f32.c + + + arm_biquad_cascade_df2T_init_f32.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c + + + arm_conv_f32.c + 1 + ../FilteringFunctions/arm_conv_f32.c + + + arm_conv_fast_q15.c + 1 + ../FilteringFunctions/arm_conv_fast_q15.c + + + arm_conv_fast_q31.c + 1 + ../FilteringFunctions/arm_conv_fast_q31.c + + + arm_conv_partial_f32.c + 1 + ../FilteringFunctions/arm_conv_partial_f32.c + + + arm_conv_partial_fast_q15.c + 1 + ../FilteringFunctions/arm_conv_partial_fast_q15.c + + + arm_conv_partial_fast_q31.c + 1 + ../FilteringFunctions/arm_conv_partial_fast_q31.c + + + arm_conv_partial_q7.c + 1 + ../FilteringFunctions/arm_conv_partial_q7.c + + + arm_conv_partial_q15.c + 1 + ../FilteringFunctions/arm_conv_partial_q15.c + + + arm_conv_partial_q31.c + 1 + ../FilteringFunctions/arm_conv_partial_q31.c + + + arm_conv_q7.c + 1 + ../FilteringFunctions/arm_conv_q7.c + + + arm_conv_q15.c + 1 + ../FilteringFunctions/arm_conv_q15.c + + + arm_conv_q31.c + 1 + ../FilteringFunctions/arm_conv_q31.c + + + arm_correlate_f32.c + 1 + ../FilteringFunctions/arm_correlate_f32.c + + + arm_correlate_fast_q15.c + 1 + ../FilteringFunctions/arm_correlate_fast_q15.c + + + arm_correlate_fast_q31.c + 1 + ../FilteringFunctions/arm_correlate_fast_q31.c + + + arm_correlate_q7.c + 1 + ../FilteringFunctions/arm_correlate_q7.c + + + arm_correlate_q15.c + 1 + ../FilteringFunctions/arm_correlate_q15.c + + + arm_correlate_q31.c + 1 + ../FilteringFunctions/arm_correlate_q31.c + + + arm_fir_decimate_f32.c + 1 + ../FilteringFunctions/arm_fir_decimate_f32.c + + + arm_fir_decimate_fast_q15.c + 1 + ../FilteringFunctions/arm_fir_decimate_fast_q15.c + + + arm_fir_decimate_fast_q31.c + 1 + ../FilteringFunctions/arm_fir_decimate_fast_q31.c + + + arm_fir_decimate_init_f32.c + 1 + ../FilteringFunctions/arm_fir_decimate_init_f32.c + + + arm_fir_decimate_init_q15.c + 1 + ../FilteringFunctions/arm_fir_decimate_init_q15.c + + + arm_fir_decimate_init_q31.c + 1 + ../FilteringFunctions/arm_fir_decimate_init_q31.c + + + arm_fir_decimate_q15.c + 1 + ../FilteringFunctions/arm_fir_decimate_q15.c + + + arm_fir_decimate_q31.c + 1 + ../FilteringFunctions/arm_fir_decimate_q31.c + + + arm_fir_f32.c + 1 + ../FilteringFunctions/arm_fir_f32.c + + + arm_fir_fast_q15.c + 1 + ../FilteringFunctions/arm_fir_fast_q15.c + + + arm_fir_fast_q31.c + 1 + ../FilteringFunctions/arm_fir_fast_q31.c + + + arm_fir_init_f32.c + 1 + ../FilteringFunctions/arm_fir_init_f32.c + + + arm_fir_init_q7.c + 1 + ../FilteringFunctions/arm_fir_init_q7.c + + + arm_fir_init_q15.c + 1 + ../FilteringFunctions/arm_fir_init_q15.c + + + arm_fir_init_q31.c + 1 + ../FilteringFunctions/arm_fir_init_q31.c + + + arm_fir_interpolate_f32.c + 1 + ../FilteringFunctions/arm_fir_interpolate_f32.c + + + arm_fir_interpolate_init_f32.c + 1 + ../FilteringFunctions/arm_fir_interpolate_init_f32.c + + + arm_fir_interpolate_init_q15.c + 1 + ../FilteringFunctions/arm_fir_interpolate_init_q15.c + + + arm_fir_interpolate_init_q31.c + 1 + ../FilteringFunctions/arm_fir_interpolate_init_q31.c + + + arm_fir_interpolate_q15.c + 1 + ../FilteringFunctions/arm_fir_interpolate_q15.c + + + arm_fir_interpolate_q31.c + 1 + ../FilteringFunctions/arm_fir_interpolate_q31.c + + + arm_fir_lattice_f32.c + 1 + ../FilteringFunctions/arm_fir_lattice_f32.c + + + arm_fir_lattice_init_f32.c + 1 + ../FilteringFunctions/arm_fir_lattice_init_f32.c + + + arm_fir_lattice_init_q15.c + 1 + ../FilteringFunctions/arm_fir_lattice_init_q15.c + + + arm_fir_lattice_init_q31.c + 1 + ../FilteringFunctions/arm_fir_lattice_init_q31.c + + + arm_fir_lattice_q15.c + 1 + ../FilteringFunctions/arm_fir_lattice_q15.c + + + arm_fir_lattice_q31.c + 1 + ../FilteringFunctions/arm_fir_lattice_q31.c + + + arm_fir_q7.c + 1 + ../FilteringFunctions/arm_fir_q7.c + + + arm_fir_q15.c + 1 + ../FilteringFunctions/arm_fir_q15.c + + + arm_fir_q31.c + 1 + ../FilteringFunctions/arm_fir_q31.c + + + arm_fir_sparse_f32.c + 1 + ../FilteringFunctions/arm_fir_sparse_f32.c + + + arm_fir_sparse_init_f32.c + 1 + ../FilteringFunctions/arm_fir_sparse_init_f32.c + + + arm_fir_sparse_init_q7.c + 1 + ../FilteringFunctions/arm_fir_sparse_init_q7.c + + + arm_fir_sparse_init_q15.c + 1 + ../FilteringFunctions/arm_fir_sparse_init_q15.c + + + arm_fir_sparse_init_q31.c + 1 + ../FilteringFunctions/arm_fir_sparse_init_q31.c + + + arm_fir_sparse_q7.c + 1 + ../FilteringFunctions/arm_fir_sparse_q7.c + + + arm_fir_sparse_q15.c + 1 + ../FilteringFunctions/arm_fir_sparse_q15.c + + + arm_fir_sparse_q31.c + 1 + ../FilteringFunctions/arm_fir_sparse_q31.c + + + arm_iir_lattice_f32.c + 1 + ../FilteringFunctions/arm_iir_lattice_f32.c + + + arm_iir_lattice_init_f32.c + 1 + ../FilteringFunctions/arm_iir_lattice_init_f32.c + + + arm_iir_lattice_init_q15.c + 1 + ../FilteringFunctions/arm_iir_lattice_init_q15.c + + + arm_iir_lattice_init_q31.c + 1 + ../FilteringFunctions/arm_iir_lattice_init_q31.c + + + arm_iir_lattice_q15.c + 1 + ../FilteringFunctions/arm_iir_lattice_q15.c + + + arm_iir_lattice_q31.c + 1 + ../FilteringFunctions/arm_iir_lattice_q31.c + + + arm_lms_f32.c + 1 + ../FilteringFunctions/arm_lms_f32.c + + + arm_lms_init_f32.c + 1 + ../FilteringFunctions/arm_lms_init_f32.c + + + arm_lms_init_q15.c + 1 + ../FilteringFunctions/arm_lms_init_q15.c + + + arm_lms_init_q31.c + 1 + ../FilteringFunctions/arm_lms_init_q31.c + + + arm_lms_norm_f32.c + 1 + ../FilteringFunctions/arm_lms_norm_f32.c + + + arm_lms_norm_init_f32.c + 1 + ../FilteringFunctions/arm_lms_norm_init_f32.c + + + arm_lms_norm_init_q15.c + 1 + ../FilteringFunctions/arm_lms_norm_init_q15.c + + + arm_lms_norm_init_q31.c + 1 + ../FilteringFunctions/arm_lms_norm_init_q31.c + + + arm_lms_norm_q15.c + 1 + ../FilteringFunctions/arm_lms_norm_q15.c + + + arm_lms_norm_q31.c + 1 + ../FilteringFunctions/arm_lms_norm_q31.c + + + arm_lms_q15.c + 1 + ../FilteringFunctions/arm_lms_q15.c + + + arm_lms_q31.c + 1 + ../FilteringFunctions/arm_lms_q31.c + + + + + MatrixFunctions + + + arm_mat_add_f32.c + 1 + ../MatrixFunctions/arm_mat_add_f32.c + + + arm_mat_add_q15.c + 1 + ../MatrixFunctions/arm_mat_add_q15.c + + + arm_mat_add_q31.c + 1 + ../MatrixFunctions/arm_mat_add_q31.c + + + arm_mat_init_f32.c + 1 + ../MatrixFunctions/arm_mat_init_f32.c + + + arm_mat_init_q15.c + 1 + ../MatrixFunctions/arm_mat_init_q15.c + + + arm_mat_init_q31.c + 1 + ../MatrixFunctions/arm_mat_init_q31.c + + + arm_mat_inverse_f32.c + 1 + ../MatrixFunctions/arm_mat_inverse_f32.c + + + arm_mat_mult_f32.c + 1 + ../MatrixFunctions/arm_mat_mult_f32.c + + + arm_mat_mult_fast_q15.c + 1 + ../MatrixFunctions/arm_mat_mult_fast_q15.c + + + arm_mat_mult_fast_q31.c + 1 + ../MatrixFunctions/arm_mat_mult_fast_q31.c + + + arm_mat_mult_q15.c + 1 + ../MatrixFunctions/arm_mat_mult_q15.c + + + arm_mat_mult_q31.c + 1 + ../MatrixFunctions/arm_mat_mult_q31.c + + + arm_mat_scale_f32.c + 1 + ../MatrixFunctions/arm_mat_scale_f32.c + + + arm_mat_scale_q15.c + 1 + ../MatrixFunctions/arm_mat_scale_q15.c + + + arm_mat_scale_q31.c + 1 + ../MatrixFunctions/arm_mat_scale_q31.c + + + arm_mat_sub_f32.c + 1 + ../MatrixFunctions/arm_mat_sub_f32.c + + + arm_mat_sub_q15.c + 1 + ../MatrixFunctions/arm_mat_sub_q15.c + + + arm_mat_sub_q31.c + 1 + ../MatrixFunctions/arm_mat_sub_q31.c + + + arm_mat_trans_f32.c + 1 + ../MatrixFunctions/arm_mat_trans_f32.c + + + arm_mat_trans_q15.c + 1 + ../MatrixFunctions/arm_mat_trans_q15.c + + + arm_mat_trans_q31.c + 1 + ../MatrixFunctions/arm_mat_trans_q31.c + + + + + TransformFunctions + + + arm_cfft_radix4_f32.c + 1 + ../TransformFunctions/arm_cfft_radix4_f32.c + + + arm_cfft_radix4_init_f32.c + 1 + ../TransformFunctions/arm_cfft_radix4_init_f32.c + + + arm_cfft_radix4_init_q15.c + 1 + ../TransformFunctions/arm_cfft_radix4_init_q15.c + + + arm_cfft_radix4_init_q31.c + 1 + ../TransformFunctions/arm_cfft_radix4_init_q31.c + + + arm_cfft_radix4_q15.c + 1 + ../TransformFunctions/arm_cfft_radix4_q15.c + + + arm_cfft_radix4_q31.c + 1 + ../TransformFunctions/arm_cfft_radix4_q31.c + + + arm_dct4_f32.c + 1 + ../TransformFunctions/arm_dct4_f32.c + + + arm_dct4_init_f32.c + 1 + ../TransformFunctions/arm_dct4_init_f32.c + + + arm_dct4_init_q15.c + 1 + ../TransformFunctions/arm_dct4_init_q15.c + + + arm_dct4_init_q31.c + 1 + ../TransformFunctions/arm_dct4_init_q31.c + + + arm_dct4_q15.c + 1 + ../TransformFunctions/arm_dct4_q15.c + + + arm_dct4_q31.c + 1 + ../TransformFunctions/arm_dct4_q31.c + + + arm_rfft_f32.c + 1 + ../TransformFunctions/arm_rfft_f32.c + + + arm_rfft_init_f32.c + 1 + ../TransformFunctions/arm_rfft_init_f32.c + + + arm_rfft_init_q15.c + 1 + ../TransformFunctions/arm_rfft_init_q15.c + + + arm_rfft_init_q31.c + 1 + ../TransformFunctions/arm_rfft_init_q31.c + + + arm_rfft_q15.c + 1 + ../TransformFunctions/arm_rfft_q15.c + + + arm_rfft_q31.c + 1 + ../TransformFunctions/arm_rfft_q31.c + + + + + ControllerFunctions + + + arm_pid_init_f32.c + 1 + ../ControllerFunctions/arm_pid_init_f32.c + + + arm_pid_init_q15.c + 1 + ../ControllerFunctions/arm_pid_init_q15.c + + + arm_pid_init_q31.c + 1 + ../ControllerFunctions/arm_pid_init_q31.c + + + arm_pid_reset_f32.c + 1 + ../ControllerFunctions/arm_pid_reset_f32.c + + + arm_pid_reset_q15.c + 1 + ../ControllerFunctions/arm_pid_reset_q15.c + + + arm_pid_reset_q31.c + 1 + ../ControllerFunctions/arm_pid_reset_q31.c + + + arm_sin_cos_f32.c + 1 + ../ControllerFunctions/arm_sin_cos_f32.c + + + arm_sin_cos_q31.c + 1 + ../ControllerFunctions/arm_sin_cos_q31.c + + + + + StatisticsFunctions + + + arm_max_f32.c + 1 + ../StatisticsFunctions/arm_max_f32.c + + + arm_max_q7.c + 1 + ../StatisticsFunctions/arm_max_q7.c + + + arm_max_q15.c + 1 + ../StatisticsFunctions/arm_max_q15.c + + + arm_max_q31.c + 1 + ../StatisticsFunctions/arm_max_q31.c + + + arm_mean_f32.c + 1 + ../StatisticsFunctions/arm_mean_f32.c + + + arm_mean_q7.c + 1 + ../StatisticsFunctions/arm_mean_q7.c + + + arm_mean_q15.c + 1 + ../StatisticsFunctions/arm_mean_q15.c + + + arm_mean_q31.c + 1 + ../StatisticsFunctions/arm_mean_q31.c + + + arm_min_f32.c + 1 + ../StatisticsFunctions/arm_min_f32.c + + + arm_min_q7.c + 1 + ../StatisticsFunctions/arm_min_q7.c + + + arm_min_q15.c + 1 + ../StatisticsFunctions/arm_min_q15.c + + + arm_min_q31.c + 1 + ../StatisticsFunctions/arm_min_q31.c + + + arm_power_f32.c + 1 + ../StatisticsFunctions/arm_power_f32.c + + + arm_power_q7.c + 1 + ../StatisticsFunctions/arm_power_q7.c + + + arm_power_q15.c + 1 + ../StatisticsFunctions/arm_power_q15.c + + + arm_power_q31.c + 1 + ../StatisticsFunctions/arm_power_q31.c + + + arm_rms_f32.c + 1 + ../StatisticsFunctions/arm_rms_f32.c + + + arm_rms_q15.c + 1 + ../StatisticsFunctions/arm_rms_q15.c + + + arm_rms_q31.c + 1 + ../StatisticsFunctions/arm_rms_q31.c + + + arm_std_f32.c + 1 + ../StatisticsFunctions/arm_std_f32.c + + + arm_std_q15.c + 1 + ../StatisticsFunctions/arm_std_q15.c + + + arm_std_q31.c + 1 + ../StatisticsFunctions/arm_std_q31.c + + + arm_var_f32.c + 1 + ../StatisticsFunctions/arm_var_f32.c + + + arm_var_q15.c + 1 + ../StatisticsFunctions/arm_var_q15.c + + + arm_var_q31.c + 1 + ../StatisticsFunctions/arm_var_q31.c + + + + + SupportFunctions + + + arm_copy_f32.c + 1 + ../SupportFunctions/arm_copy_f32.c + + + arm_copy_q7.c + 1 + ../SupportFunctions/arm_copy_q7.c + + + arm_copy_q15.c + 1 + ../SupportFunctions/arm_copy_q15.c + + + arm_copy_q31.c + 1 + ../SupportFunctions/arm_copy_q31.c + + + arm_fill_f32.c + 1 + ../SupportFunctions/arm_fill_f32.c + + + arm_fill_q7.c + 1 + ../SupportFunctions/arm_fill_q7.c + + + arm_fill_q15.c + 1 + ../SupportFunctions/arm_fill_q15.c + + + arm_fill_q31.c + 1 + ../SupportFunctions/arm_fill_q31.c + + + arm_float_to_q7.c + 1 + ../SupportFunctions/arm_float_to_q7.c + + + arm_float_to_q15.c + 1 + ../SupportFunctions/arm_float_to_q15.c + + + arm_float_to_q31.c + 1 + ../SupportFunctions/arm_float_to_q31.c + + + arm_q7_to_float.c + 1 + ../SupportFunctions/arm_q7_to_float.c + + + arm_q7_to_q15.c + 1 + ../SupportFunctions/arm_q7_to_q15.c + + + arm_q7_to_q31.c + 1 + ../SupportFunctions/arm_q7_to_q31.c + + + arm_q15_to_float.c + 1 + ../SupportFunctions/arm_q15_to_float.c + + + arm_q15_to_q7.c + 1 + ../SupportFunctions/arm_q15_to_q7.c + + + arm_q15_to_q31.c + 1 + ../SupportFunctions/arm_q15_to_q31.c + + + arm_q31_to_float.c + 1 + ../SupportFunctions/arm_q31_to_float.c + + + arm_q31_to_q7.c + 1 + ../SupportFunctions/arm_q31_to_q7.c + + + arm_q31_to_q15.c + 1 + ../SupportFunctions/arm_q31_to_q15.c + + + + + CommonTables + + + arm_common_tables.c + 1 + ../CommonTables/arm_common_tables.c + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexM4x_math.uvopt b/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexM4x_math.uvopt new file mode 100644 index 000000000..b0b708620 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexM4x_math.uvopt @@ -0,0 +1,3711 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + DSP_Lib CM4 LE + 0x3 + ARM-GNU + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\intermediateFiles\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + + DLM.DLL + -pEMBER + SARMCM3.DLL + + TLM.DLL + -pEMBER + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\Simulator.ini + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + DSP_Lib CM4 LE FPU + 0x3 + ARM-GNU + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\intermediateFiles\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DLM.DLL + -pEMBER + SARMCM3.DLL + + TLM.DLL + -pEMBER + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + -1 + + + + + .\Simulator.ini + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + BasicMathFunctions + 0 + 0 + 0 + + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_abs_f32.c + arm_abs_f32.c + + + 1 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_abs_q7.c + arm_abs_q7.c + + + 1 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_abs_q15.c + arm_abs_q15.c + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_abs_q31.c + arm_abs_q31.c + + + 1 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_add_f32.c + arm_add_f32.c + + + 1 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_add_q7.c + arm_add_q7.c + + + 1 + 7 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_add_q15.c + arm_add_q15.c + + + 1 + 8 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_add_q31.c + arm_add_q31.c + + + 1 + 9 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_dot_prod_f32.c + arm_dot_prod_f32.c + + + 1 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_dot_prod_q7.c + arm_dot_prod_q7.c + + + 1 + 11 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_dot_prod_q15.c + arm_dot_prod_q15.c + + + 1 + 12 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_dot_prod_q31.c + arm_dot_prod_q31.c + + + 1 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_mult_f32.c + arm_mult_f32.c + + + 1 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_mult_q7.c + arm_mult_q7.c + + + 1 + 15 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_mult_q15.c + arm_mult_q15.c + + + 1 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_mult_q31.c + arm_mult_q31.c + + + 1 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_negate_f32.c + arm_negate_f32.c + + + 1 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_negate_q7.c + arm_negate_q7.c + + + 1 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_negate_q15.c + arm_negate_q15.c + + + 1 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_negate_q31.c + arm_negate_q31.c + + + 1 + 21 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_offset_f32.c + arm_offset_f32.c + + + 1 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_offset_q7.c + arm_offset_q7.c + + + 1 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_offset_q15.c + arm_offset_q15.c + + + 1 + 24 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_offset_q31.c + arm_offset_q31.c + + + 1 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_scale_f32.c + arm_scale_f32.c + + + 1 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_scale_q7.c + arm_scale_q7.c + + + 1 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_scale_q15.c + arm_scale_q15.c + + + 1 + 28 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_scale_q31.c + arm_scale_q31.c + + + 1 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_shift_q7.c + arm_shift_q7.c + + + 1 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_shift_q15.c + arm_shift_q15.c + + + 1 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_shift_q31.c + arm_shift_q31.c + + + 1 + 32 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_sub_f32.c + arm_sub_f32.c + + + 1 + 33 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_sub_q7.c + arm_sub_q7.c + + + 1 + 34 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_sub_q15.c + arm_sub_q15.c + + + 1 + 35 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../BasicMathFunctions/arm_sub_q31.c + arm_sub_q31.c + + + + + FastMathFunctions + 0 + 0 + 0 + + 2 + 36 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_cos_f32.c + arm_cos_f32.c + + + 2 + 37 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_cos_q15.c + arm_cos_q15.c + + + 2 + 38 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_cos_q31.c + arm_cos_q31.c + + + 2 + 39 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_sin_f32.c + arm_sin_f32.c + + + 2 + 40 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_sin_q15.c + arm_sin_q15.c + + + 2 + 41 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_sin_q31.c + arm_sin_q31.c + + + 2 + 42 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_sqrt_q15.c + arm_sqrt_q15.c + + + 2 + 43 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FastMathFunctions/arm_sqrt_q31.c + arm_sqrt_q31.c + + + + + ComplexMathFunctions + 0 + 0 + 0 + + 3 + 44 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_conj_f32.c + arm_cmplx_conj_f32.c + + + 3 + 45 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_conj_q15.c + arm_cmplx_conj_q15.c + + + 3 + 46 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_conj_q31.c + arm_cmplx_conj_q31.c + + + 3 + 47 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_dot_prod_f32.c + arm_cmplx_dot_prod_f32.c + + + 3 + 48 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_dot_prod_q15.c + arm_cmplx_dot_prod_q15.c + + + 3 + 49 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_dot_prod_q31.c + arm_cmplx_dot_prod_q31.c + + + 3 + 50 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mag_f32.c + arm_cmplx_mag_f32.c + + + 3 + 51 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mag_q15.c + arm_cmplx_mag_q15.c + + + 3 + 52 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mag_q31.c + arm_cmplx_mag_q31.c + + + 3 + 53 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mag_squared_f32.c + arm_cmplx_mag_squared_f32.c + + + 3 + 54 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mag_squared_q15.c + arm_cmplx_mag_squared_q15.c + + + 3 + 55 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mag_squared_q31.c + arm_cmplx_mag_squared_q31.c + + + 3 + 56 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c + arm_cmplx_mult_cmplx_f32.c + + + 3 + 57 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c + arm_cmplx_mult_cmplx_q15.c + + + 3 + 58 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c + arm_cmplx_mult_cmplx_q31.c + + + 3 + 59 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mult_real_f32.c + arm_cmplx_mult_real_f32.c + + + 3 + 60 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mult_real_q15.c + arm_cmplx_mult_real_q15.c + + + 3 + 61 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ComplexMathFunctions/arm_cmplx_mult_real_q31.c + arm_cmplx_mult_real_q31.c + + + + + FilteringFunctions + 0 + 0 + 0 + + 4 + 62 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c + arm_biquad_cascade_df1_32x64_init_q31.c + + + 4 + 63 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c + arm_biquad_cascade_df1_32x64_q31.c + + + 4 + 64 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_f32.c + arm_biquad_cascade_df1_f32.c + + + 4 + 65 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c + arm_biquad_cascade_df1_fast_q15.c + + + 4 + 66 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c + arm_biquad_cascade_df1_fast_q31.c + + + 4 + 67 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_init_f32.c + arm_biquad_cascade_df1_init_f32.c + + + 4 + 68 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_init_q15.c + arm_biquad_cascade_df1_init_q15.c + + + 4 + 69 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_init_q31.c + arm_biquad_cascade_df1_init_q31.c + + + 4 + 70 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_q15.c + arm_biquad_cascade_df1_q15.c + + + 4 + 71 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df1_q31.c + arm_biquad_cascade_df1_q31.c + + + 4 + 72 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df2T_f32.c + arm_biquad_cascade_df2T_f32.c + + + 4 + 73 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c + arm_biquad_cascade_df2T_init_f32.c + + + 4 + 74 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_f32.c + arm_conv_f32.c + + + 4 + 75 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_fast_q15.c + arm_conv_fast_q15.c + + + 4 + 76 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_fast_q31.c + arm_conv_fast_q31.c + + + 4 + 77 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_partial_f32.c + arm_conv_partial_f32.c + + + 4 + 78 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_partial_fast_q15.c + arm_conv_partial_fast_q15.c + + + 4 + 79 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_partial_fast_q31.c + arm_conv_partial_fast_q31.c + + + 4 + 80 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_partial_q7.c + arm_conv_partial_q7.c + + + 4 + 81 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_partial_q15.c + arm_conv_partial_q15.c + + + 4 + 82 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_partial_q31.c + arm_conv_partial_q31.c + + + 4 + 83 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_q7.c + arm_conv_q7.c + + + 4 + 84 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_q15.c + arm_conv_q15.c + + + 4 + 85 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_conv_q31.c + arm_conv_q31.c + + + 4 + 86 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_correlate_f32.c + arm_correlate_f32.c + + + 4 + 87 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_correlate_fast_q15.c + arm_correlate_fast_q15.c + + + 4 + 88 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_correlate_fast_q31.c + arm_correlate_fast_q31.c + + + 4 + 89 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_correlate_q7.c + arm_correlate_q7.c + + + 4 + 90 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_correlate_q15.c + arm_correlate_q15.c + + + 4 + 91 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_correlate_q31.c + arm_correlate_q31.c + + + 4 + 92 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_f32.c + arm_fir_decimate_f32.c + + + 4 + 93 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_fast_q15.c + arm_fir_decimate_fast_q15.c + + + 4 + 94 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_fast_q31.c + arm_fir_decimate_fast_q31.c + + + 4 + 95 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_init_f32.c + arm_fir_decimate_init_f32.c + + + 4 + 96 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_init_q15.c + arm_fir_decimate_init_q15.c + + + 4 + 97 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_init_q31.c + arm_fir_decimate_init_q31.c + + + 4 + 98 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_q15.c + arm_fir_decimate_q15.c + + + 4 + 99 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_decimate_q31.c + arm_fir_decimate_q31.c + + + 4 + 100 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_f32.c + arm_fir_f32.c + + + 4 + 101 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_fast_q15.c + arm_fir_fast_q15.c + + + 4 + 102 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_fast_q31.c + arm_fir_fast_q31.c + + + 4 + 103 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_init_f32.c + arm_fir_init_f32.c + + + 4 + 104 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_init_q7.c + arm_fir_init_q7.c + + + 4 + 105 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_init_q15.c + arm_fir_init_q15.c + + + 4 + 106 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_init_q31.c + arm_fir_init_q31.c + + + 4 + 107 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_interpolate_f32.c + arm_fir_interpolate_f32.c + + + 4 + 108 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_interpolate_init_f32.c + arm_fir_interpolate_init_f32.c + + + 4 + 109 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_interpolate_init_q15.c + arm_fir_interpolate_init_q15.c + + + 4 + 110 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_interpolate_init_q31.c + arm_fir_interpolate_init_q31.c + + + 4 + 111 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_interpolate_q15.c + arm_fir_interpolate_q15.c + + + 4 + 112 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_interpolate_q31.c + arm_fir_interpolate_q31.c + + + 4 + 113 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_lattice_f32.c + arm_fir_lattice_f32.c + + + 4 + 114 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_lattice_init_f32.c + arm_fir_lattice_init_f32.c + + + 4 + 115 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_lattice_init_q15.c + arm_fir_lattice_init_q15.c + + + 4 + 116 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_lattice_init_q31.c + arm_fir_lattice_init_q31.c + + + 4 + 117 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_lattice_q15.c + arm_fir_lattice_q15.c + + + 4 + 118 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_lattice_q31.c + arm_fir_lattice_q31.c + + + 4 + 119 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_q7.c + arm_fir_q7.c + + + 4 + 120 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_q15.c + arm_fir_q15.c + + + 4 + 121 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_q31.c + arm_fir_q31.c + + + 4 + 122 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_f32.c + arm_fir_sparse_f32.c + + + 4 + 123 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_init_f32.c + arm_fir_sparse_init_f32.c + + + 4 + 124 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_init_q7.c + arm_fir_sparse_init_q7.c + + + 4 + 125 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_init_q15.c + arm_fir_sparse_init_q15.c + + + 4 + 126 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_init_q31.c + arm_fir_sparse_init_q31.c + + + 4 + 127 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_q7.c + arm_fir_sparse_q7.c + + + 4 + 128 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_q15.c + arm_fir_sparse_q15.c + + + 4 + 129 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_fir_sparse_q31.c + arm_fir_sparse_q31.c + + + 4 + 130 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_iir_lattice_f32.c + arm_iir_lattice_f32.c + + + 4 + 131 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_iir_lattice_init_f32.c + arm_iir_lattice_init_f32.c + + + 4 + 132 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_iir_lattice_init_q15.c + arm_iir_lattice_init_q15.c + + + 4 + 133 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_iir_lattice_init_q31.c + arm_iir_lattice_init_q31.c + + + 4 + 134 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_iir_lattice_q15.c + arm_iir_lattice_q15.c + + + 4 + 135 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_iir_lattice_q31.c + arm_iir_lattice_q31.c + + + 4 + 136 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_f32.c + arm_lms_f32.c + + + 4 + 137 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_init_f32.c + arm_lms_init_f32.c + + + 4 + 138 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_init_q15.c + arm_lms_init_q15.c + + + 4 + 139 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_init_q31.c + arm_lms_init_q31.c + + + 4 + 140 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_norm_f32.c + arm_lms_norm_f32.c + + + 4 + 141 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_norm_init_f32.c + arm_lms_norm_init_f32.c + + + 4 + 142 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_norm_init_q15.c + arm_lms_norm_init_q15.c + + + 4 + 143 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_norm_init_q31.c + arm_lms_norm_init_q31.c + + + 4 + 144 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_norm_q15.c + arm_lms_norm_q15.c + + + 4 + 145 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_norm_q31.c + arm_lms_norm_q31.c + + + 4 + 146 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_q15.c + arm_lms_q15.c + + + 4 + 147 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../FilteringFunctions/arm_lms_q31.c + arm_lms_q31.c + + + + + MatrixFunctions + 0 + 0 + 0 + + 5 + 148 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_add_f32.c + arm_mat_add_f32.c + + + 5 + 149 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_add_q15.c + arm_mat_add_q15.c + + + 5 + 150 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_add_q31.c + arm_mat_add_q31.c + + + 5 + 151 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_init_f32.c + arm_mat_init_f32.c + + + 5 + 152 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_init_q15.c + arm_mat_init_q15.c + + + 5 + 153 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_init_q31.c + arm_mat_init_q31.c + + + 5 + 154 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_inverse_f32.c + arm_mat_inverse_f32.c + + + 5 + 155 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_mult_f32.c + arm_mat_mult_f32.c + + + 5 + 156 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_mult_fast_q15.c + arm_mat_mult_fast_q15.c + + + 5 + 157 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_mult_fast_q31.c + arm_mat_mult_fast_q31.c + + + 5 + 158 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_mult_q15.c + arm_mat_mult_q15.c + + + 5 + 159 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_mult_q31.c + arm_mat_mult_q31.c + + + 5 + 160 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_scale_f32.c + arm_mat_scale_f32.c + + + 5 + 161 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_scale_q15.c + arm_mat_scale_q15.c + + + 5 + 162 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_scale_q31.c + arm_mat_scale_q31.c + + + 5 + 163 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_sub_f32.c + arm_mat_sub_f32.c + + + 5 + 164 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_sub_q15.c + arm_mat_sub_q15.c + + + 5 + 165 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_sub_q31.c + arm_mat_sub_q31.c + + + 5 + 166 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_trans_f32.c + arm_mat_trans_f32.c + + + 5 + 167 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_trans_q15.c + arm_mat_trans_q15.c + + + 5 + 168 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../MatrixFunctions/arm_mat_trans_q31.c + arm_mat_trans_q31.c + + + + + TransformFunctions + 0 + 0 + 0 + + 6 + 169 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_cfft_radix4_f32.c + arm_cfft_radix4_f32.c + + + 6 + 170 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_cfft_radix4_init_f32.c + arm_cfft_radix4_init_f32.c + + + 6 + 171 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_cfft_radix4_init_q15.c + arm_cfft_radix4_init_q15.c + + + 6 + 172 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_cfft_radix4_init_q31.c + arm_cfft_radix4_init_q31.c + + + 6 + 173 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_cfft_radix4_q15.c + arm_cfft_radix4_q15.c + + + 6 + 174 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_cfft_radix4_q31.c + arm_cfft_radix4_q31.c + + + 6 + 175 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_dct4_f32.c + arm_dct4_f32.c + + + 6 + 176 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_dct4_init_f32.c + arm_dct4_init_f32.c + + + 6 + 177 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_dct4_init_q15.c + arm_dct4_init_q15.c + + + 6 + 178 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_dct4_init_q31.c + arm_dct4_init_q31.c + + + 6 + 179 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_dct4_q15.c + arm_dct4_q15.c + + + 6 + 180 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_dct4_q31.c + arm_dct4_q31.c + + + 6 + 181 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_rfft_f32.c + arm_rfft_f32.c + + + 6 + 182 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_rfft_init_f32.c + arm_rfft_init_f32.c + + + 6 + 183 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_rfft_init_q15.c + arm_rfft_init_q15.c + + + 6 + 184 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_rfft_init_q31.c + arm_rfft_init_q31.c + + + 6 + 185 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_rfft_q15.c + arm_rfft_q15.c + + + 6 + 186 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../TransformFunctions/arm_rfft_q31.c + arm_rfft_q31.c + + + + + ControllerFunctions + 0 + 0 + 0 + + 7 + 187 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_pid_init_f32.c + arm_pid_init_f32.c + + + 7 + 188 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_pid_init_q15.c + arm_pid_init_q15.c + + + 7 + 189 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_pid_init_q31.c + arm_pid_init_q31.c + + + 7 + 190 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_pid_reset_f32.c + arm_pid_reset_f32.c + + + 7 + 191 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_pid_reset_q15.c + arm_pid_reset_q15.c + + + 7 + 192 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_pid_reset_q31.c + arm_pid_reset_q31.c + + + 7 + 193 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_sin_cos_f32.c + arm_sin_cos_f32.c + + + 7 + 194 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../ControllerFunctions/arm_sin_cos_q31.c + arm_sin_cos_q31.c + + + + + StatisticsFunctions + 0 + 0 + 0 + + 8 + 195 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_max_f32.c + arm_max_f32.c + + + 8 + 196 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_max_q7.c + arm_max_q7.c + + + 8 + 197 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_max_q15.c + arm_max_q15.c + + + 8 + 198 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_max_q31.c + arm_max_q31.c + + + 8 + 199 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_mean_f32.c + arm_mean_f32.c + + + 8 + 200 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_mean_q7.c + arm_mean_q7.c + + + 8 + 201 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_mean_q15.c + arm_mean_q15.c + + + 8 + 202 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_mean_q31.c + arm_mean_q31.c + + + 8 + 203 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_min_f32.c + arm_min_f32.c + + + 8 + 204 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_min_q7.c + arm_min_q7.c + + + 8 + 205 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_min_q15.c + arm_min_q15.c + + + 8 + 206 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_min_q31.c + arm_min_q31.c + + + 8 + 207 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_power_f32.c + arm_power_f32.c + + + 8 + 208 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_power_q7.c + arm_power_q7.c + + + 8 + 209 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_power_q15.c + arm_power_q15.c + + + 8 + 210 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_power_q31.c + arm_power_q31.c + + + 8 + 211 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_rms_f32.c + arm_rms_f32.c + + + 8 + 212 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_rms_q15.c + arm_rms_q15.c + + + 8 + 213 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_rms_q31.c + arm_rms_q31.c + + + 8 + 214 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_std_f32.c + arm_std_f32.c + + + 8 + 215 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_std_q15.c + arm_std_q15.c + + + 8 + 216 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_std_q31.c + arm_std_q31.c + + + 8 + 217 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_var_f32.c + arm_var_f32.c + + + 8 + 218 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_var_q15.c + arm_var_q15.c + + + 8 + 219 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../StatisticsFunctions/arm_var_q31.c + arm_var_q31.c + + + + + SupportFunctions + 0 + 0 + 0 + + 9 + 220 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_copy_f32.c + arm_copy_f32.c + + + 9 + 221 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_copy_q7.c + arm_copy_q7.c + + + 9 + 222 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_copy_q15.c + arm_copy_q15.c + + + 9 + 223 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_copy_q31.c + arm_copy_q31.c + + + 9 + 224 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_fill_f32.c + arm_fill_f32.c + + + 9 + 225 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_fill_q7.c + arm_fill_q7.c + + + 9 + 226 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_fill_q15.c + arm_fill_q15.c + + + 9 + 227 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_fill_q31.c + arm_fill_q31.c + + + 9 + 228 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_float_to_q7.c + arm_float_to_q7.c + + + 9 + 229 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_float_to_q15.c + arm_float_to_q15.c + + + 9 + 230 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_float_to_q31.c + arm_float_to_q31.c + + + 9 + 231 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q7_to_float.c + arm_q7_to_float.c + + + 9 + 232 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q7_to_q15.c + arm_q7_to_q15.c + + + 9 + 233 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q7_to_q31.c + arm_q7_to_q31.c + + + 9 + 234 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q15_to_float.c + arm_q15_to_float.c + + + 9 + 235 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q15_to_q7.c + arm_q15_to_q7.c + + + 9 + 236 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q15_to_q31.c + arm_q15_to_q31.c + + + 9 + 237 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q31_to_float.c + arm_q31_to_float.c + + + 9 + 238 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q31_to_q7.c + arm_q31_to_q7.c + + + 9 + 239 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../SupportFunctions/arm_q31_to_q15.c + arm_q31_to_q15.c + + + + + CommonTables + 0 + 0 + 0 + + 10 + 240 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ../CommonTables/arm_common_tables.c + arm_common_tables.c + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexM4x_math.uvproj b/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexM4x_math.uvproj new file mode 100644 index 000000000..6e5a24037 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexM4x_math.uvproj @@ -0,0 +1,3089 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + DSP_Lib CM4 LE + 0x3 + ARM-GNU + + + Cortex-M4 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M4") ESEL ELITTLE + + + + 5125 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\intermediateFiles\ + arm_cortexM4l_math + 0 + 1 + 0 + 1 + 0 + .\intermediateFiles\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + 0 + cmd.exe /C copy ".\intermediateFiles\lib@L.a" "..\..\..\Lib\GCC\" + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DLM.DLL + -pEMBER + SARMCM3.DLL + + TLM.DLL + -pEMBER + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\Simulator.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + "Cortex-M4" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 1 + 0 + 0 + 1 + 0 + 0 + 5 + 2 + 1 + + -mcpu=cortex-m4 -fno-strict-aliasing -ffunction-sections + ARM_MATH_CM4, ARM_MATH_MATRIX_CHECK, ARM_MATH_ROUNDING + + ..\..\..\Include + + + + 0 + 1 + + + + + + + + + 1 + 0 + 1 + 0 + 1 + + + + + + -mcpu=cortex-m4 -Wl,--gc-sections + + + + + + + BasicMathFunctions + + + arm_abs_f32.c + 1 + ../BasicMathFunctions/arm_abs_f32.c + + + arm_abs_q7.c + 1 + ../BasicMathFunctions/arm_abs_q7.c + + + arm_abs_q15.c + 1 + ../BasicMathFunctions/arm_abs_q15.c + + + arm_abs_q31.c + 1 + ../BasicMathFunctions/arm_abs_q31.c + + + arm_add_f32.c + 1 + ../BasicMathFunctions/arm_add_f32.c + + + arm_add_q7.c + 1 + ../BasicMathFunctions/arm_add_q7.c + + + arm_add_q15.c + 1 + ../BasicMathFunctions/arm_add_q15.c + + + arm_add_q31.c + 1 + ../BasicMathFunctions/arm_add_q31.c + + + arm_dot_prod_f32.c + 1 + ../BasicMathFunctions/arm_dot_prod_f32.c + + + arm_dot_prod_q7.c + 1 + ../BasicMathFunctions/arm_dot_prod_q7.c + + + arm_dot_prod_q15.c + 1 + ../BasicMathFunctions/arm_dot_prod_q15.c + + + arm_dot_prod_q31.c + 1 + ../BasicMathFunctions/arm_dot_prod_q31.c + + + arm_mult_f32.c + 1 + ../BasicMathFunctions/arm_mult_f32.c + + + arm_mult_q7.c + 1 + ../BasicMathFunctions/arm_mult_q7.c + + + arm_mult_q15.c + 1 + ../BasicMathFunctions/arm_mult_q15.c + + + arm_mult_q31.c + 1 + ../BasicMathFunctions/arm_mult_q31.c + + + arm_negate_f32.c + 1 + ../BasicMathFunctions/arm_negate_f32.c + + + arm_negate_q7.c + 1 + ../BasicMathFunctions/arm_negate_q7.c + + + arm_negate_q15.c + 1 + ../BasicMathFunctions/arm_negate_q15.c + + + arm_negate_q31.c + 1 + ../BasicMathFunctions/arm_negate_q31.c + + + arm_offset_f32.c + 1 + ../BasicMathFunctions/arm_offset_f32.c + + + arm_offset_q7.c + 1 + ../BasicMathFunctions/arm_offset_q7.c + + + arm_offset_q15.c + 1 + ../BasicMathFunctions/arm_offset_q15.c + + + arm_offset_q31.c + 1 + ../BasicMathFunctions/arm_offset_q31.c + + + arm_scale_f32.c + 1 + ../BasicMathFunctions/arm_scale_f32.c + + + arm_scale_q7.c + 1 + ../BasicMathFunctions/arm_scale_q7.c + + + arm_scale_q15.c + 1 + ../BasicMathFunctions/arm_scale_q15.c + + + arm_scale_q31.c + 1 + ../BasicMathFunctions/arm_scale_q31.c + + + arm_shift_q7.c + 1 + ../BasicMathFunctions/arm_shift_q7.c + + + arm_shift_q15.c + 1 + ../BasicMathFunctions/arm_shift_q15.c + + + arm_shift_q31.c + 1 + ../BasicMathFunctions/arm_shift_q31.c + + + arm_sub_f32.c + 1 + ../BasicMathFunctions/arm_sub_f32.c + + + arm_sub_q7.c + 1 + ../BasicMathFunctions/arm_sub_q7.c + + + arm_sub_q15.c + 1 + ../BasicMathFunctions/arm_sub_q15.c + + + arm_sub_q31.c + 1 + ../BasicMathFunctions/arm_sub_q31.c + + + + + FastMathFunctions + + + arm_cos_f32.c + 1 + ../FastMathFunctions/arm_cos_f32.c + + + arm_cos_q15.c + 1 + ../FastMathFunctions/arm_cos_q15.c + + + arm_cos_q31.c + 1 + ../FastMathFunctions/arm_cos_q31.c + + + arm_sin_f32.c + 1 + ../FastMathFunctions/arm_sin_f32.c + + + arm_sin_q15.c + 1 + ../FastMathFunctions/arm_sin_q15.c + + + arm_sin_q31.c + 1 + ../FastMathFunctions/arm_sin_q31.c + + + arm_sqrt_q15.c + 1 + ../FastMathFunctions/arm_sqrt_q15.c + + + arm_sqrt_q31.c + 1 + ../FastMathFunctions/arm_sqrt_q31.c + + + + + ComplexMathFunctions + + + arm_cmplx_conj_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_conj_f32.c + + + arm_cmplx_conj_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_conj_q15.c + + + arm_cmplx_conj_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_conj_q31.c + + + arm_cmplx_dot_prod_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_dot_prod_f32.c + + + arm_cmplx_dot_prod_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_dot_prod_q15.c + + + arm_cmplx_dot_prod_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_dot_prod_q31.c + + + arm_cmplx_mag_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_f32.c + + + arm_cmplx_mag_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_q15.c + + + arm_cmplx_mag_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_q31.c + + + arm_cmplx_mag_squared_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_squared_f32.c + + + arm_cmplx_mag_squared_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_squared_q15.c + + + arm_cmplx_mag_squared_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_squared_q31.c + + + arm_cmplx_mult_cmplx_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c + + + arm_cmplx_mult_cmplx_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c + + + arm_cmplx_mult_cmplx_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c + + + arm_cmplx_mult_real_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_real_f32.c + + + arm_cmplx_mult_real_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_real_q15.c + + + arm_cmplx_mult_real_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_real_q31.c + + + + + FilteringFunctions + + + arm_biquad_cascade_df1_32x64_init_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c + + + arm_biquad_cascade_df1_32x64_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c + + + arm_biquad_cascade_df1_f32.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_f32.c + + + arm_biquad_cascade_df1_fast_q15.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c + + + arm_biquad_cascade_df1_fast_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c + + + arm_biquad_cascade_df1_init_f32.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_init_f32.c + + + arm_biquad_cascade_df1_init_q15.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_init_q15.c + + + arm_biquad_cascade_df1_init_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_init_q31.c + + + arm_biquad_cascade_df1_q15.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_q15.c + + + arm_biquad_cascade_df1_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_q31.c + + + arm_biquad_cascade_df2T_f32.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df2T_f32.c + + + arm_biquad_cascade_df2T_init_f32.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c + + + arm_conv_f32.c + 1 + ../FilteringFunctions/arm_conv_f32.c + + + arm_conv_fast_q15.c + 1 + ../FilteringFunctions/arm_conv_fast_q15.c + + + arm_conv_fast_q31.c + 1 + ../FilteringFunctions/arm_conv_fast_q31.c + + + arm_conv_partial_f32.c + 1 + ../FilteringFunctions/arm_conv_partial_f32.c + + + arm_conv_partial_fast_q15.c + 1 + ../FilteringFunctions/arm_conv_partial_fast_q15.c + + + arm_conv_partial_fast_q31.c + 1 + ../FilteringFunctions/arm_conv_partial_fast_q31.c + + + arm_conv_partial_q7.c + 1 + ../FilteringFunctions/arm_conv_partial_q7.c + + + arm_conv_partial_q15.c + 1 + ../FilteringFunctions/arm_conv_partial_q15.c + + + arm_conv_partial_q31.c + 1 + ../FilteringFunctions/arm_conv_partial_q31.c + + + arm_conv_q7.c + 1 + ../FilteringFunctions/arm_conv_q7.c + + + arm_conv_q15.c + 1 + ../FilteringFunctions/arm_conv_q15.c + + + arm_conv_q31.c + 1 + ../FilteringFunctions/arm_conv_q31.c + + + arm_correlate_f32.c + 1 + ../FilteringFunctions/arm_correlate_f32.c + + + arm_correlate_fast_q15.c + 1 + ../FilteringFunctions/arm_correlate_fast_q15.c + + + arm_correlate_fast_q31.c + 1 + ../FilteringFunctions/arm_correlate_fast_q31.c + + + arm_correlate_q7.c + 1 + ../FilteringFunctions/arm_correlate_q7.c + + + arm_correlate_q15.c + 1 + ../FilteringFunctions/arm_correlate_q15.c + + + arm_correlate_q31.c + 1 + ../FilteringFunctions/arm_correlate_q31.c + + + arm_fir_decimate_f32.c + 1 + ../FilteringFunctions/arm_fir_decimate_f32.c + + + arm_fir_decimate_fast_q15.c + 1 + ../FilteringFunctions/arm_fir_decimate_fast_q15.c + + + arm_fir_decimate_fast_q31.c + 1 + ../FilteringFunctions/arm_fir_decimate_fast_q31.c + + + arm_fir_decimate_init_f32.c + 1 + ../FilteringFunctions/arm_fir_decimate_init_f32.c + + + arm_fir_decimate_init_q15.c + 1 + ../FilteringFunctions/arm_fir_decimate_init_q15.c + + + arm_fir_decimate_init_q31.c + 1 + ../FilteringFunctions/arm_fir_decimate_init_q31.c + + + arm_fir_decimate_q15.c + 1 + ../FilteringFunctions/arm_fir_decimate_q15.c + + + arm_fir_decimate_q31.c + 1 + ../FilteringFunctions/arm_fir_decimate_q31.c + + + arm_fir_f32.c + 1 + ../FilteringFunctions/arm_fir_f32.c + + + arm_fir_fast_q15.c + 1 + ../FilteringFunctions/arm_fir_fast_q15.c + + + arm_fir_fast_q31.c + 1 + ../FilteringFunctions/arm_fir_fast_q31.c + + + arm_fir_init_f32.c + 1 + ../FilteringFunctions/arm_fir_init_f32.c + + + arm_fir_init_q7.c + 1 + ../FilteringFunctions/arm_fir_init_q7.c + + + arm_fir_init_q15.c + 1 + ../FilteringFunctions/arm_fir_init_q15.c + + + arm_fir_init_q31.c + 1 + ../FilteringFunctions/arm_fir_init_q31.c + + + arm_fir_interpolate_f32.c + 1 + ../FilteringFunctions/arm_fir_interpolate_f32.c + + + arm_fir_interpolate_init_f32.c + 1 + ../FilteringFunctions/arm_fir_interpolate_init_f32.c + + + arm_fir_interpolate_init_q15.c + 1 + ../FilteringFunctions/arm_fir_interpolate_init_q15.c + + + arm_fir_interpolate_init_q31.c + 1 + ../FilteringFunctions/arm_fir_interpolate_init_q31.c + + + arm_fir_interpolate_q15.c + 1 + ../FilteringFunctions/arm_fir_interpolate_q15.c + + + arm_fir_interpolate_q31.c + 1 + ../FilteringFunctions/arm_fir_interpolate_q31.c + + + arm_fir_lattice_f32.c + 1 + ../FilteringFunctions/arm_fir_lattice_f32.c + + + arm_fir_lattice_init_f32.c + 1 + ../FilteringFunctions/arm_fir_lattice_init_f32.c + + + arm_fir_lattice_init_q15.c + 1 + ../FilteringFunctions/arm_fir_lattice_init_q15.c + + + arm_fir_lattice_init_q31.c + 1 + ../FilteringFunctions/arm_fir_lattice_init_q31.c + + + arm_fir_lattice_q15.c + 1 + ../FilteringFunctions/arm_fir_lattice_q15.c + + + arm_fir_lattice_q31.c + 1 + ../FilteringFunctions/arm_fir_lattice_q31.c + + + arm_fir_q7.c + 1 + ../FilteringFunctions/arm_fir_q7.c + + + arm_fir_q15.c + 1 + ../FilteringFunctions/arm_fir_q15.c + + + arm_fir_q31.c + 1 + ../FilteringFunctions/arm_fir_q31.c + + + arm_fir_sparse_f32.c + 1 + ../FilteringFunctions/arm_fir_sparse_f32.c + + + arm_fir_sparse_init_f32.c + 1 + ../FilteringFunctions/arm_fir_sparse_init_f32.c + + + arm_fir_sparse_init_q7.c + 1 + ../FilteringFunctions/arm_fir_sparse_init_q7.c + + + arm_fir_sparse_init_q15.c + 1 + ../FilteringFunctions/arm_fir_sparse_init_q15.c + + + arm_fir_sparse_init_q31.c + 1 + ../FilteringFunctions/arm_fir_sparse_init_q31.c + + + arm_fir_sparse_q7.c + 1 + ../FilteringFunctions/arm_fir_sparse_q7.c + + + arm_fir_sparse_q15.c + 1 + ../FilteringFunctions/arm_fir_sparse_q15.c + + + arm_fir_sparse_q31.c + 1 + ../FilteringFunctions/arm_fir_sparse_q31.c + + + arm_iir_lattice_f32.c + 1 + ../FilteringFunctions/arm_iir_lattice_f32.c + + + arm_iir_lattice_init_f32.c + 1 + ../FilteringFunctions/arm_iir_lattice_init_f32.c + + + arm_iir_lattice_init_q15.c + 1 + ../FilteringFunctions/arm_iir_lattice_init_q15.c + + + arm_iir_lattice_init_q31.c + 1 + ../FilteringFunctions/arm_iir_lattice_init_q31.c + + + arm_iir_lattice_q15.c + 1 + ../FilteringFunctions/arm_iir_lattice_q15.c + + + arm_iir_lattice_q31.c + 1 + ../FilteringFunctions/arm_iir_lattice_q31.c + + + arm_lms_f32.c + 1 + ../FilteringFunctions/arm_lms_f32.c + + + arm_lms_init_f32.c + 1 + ../FilteringFunctions/arm_lms_init_f32.c + + + arm_lms_init_q15.c + 1 + ../FilteringFunctions/arm_lms_init_q15.c + + + arm_lms_init_q31.c + 1 + ../FilteringFunctions/arm_lms_init_q31.c + + + arm_lms_norm_f32.c + 1 + ../FilteringFunctions/arm_lms_norm_f32.c + + + arm_lms_norm_init_f32.c + 1 + ../FilteringFunctions/arm_lms_norm_init_f32.c + + + arm_lms_norm_init_q15.c + 1 + ../FilteringFunctions/arm_lms_norm_init_q15.c + + + arm_lms_norm_init_q31.c + 1 + ../FilteringFunctions/arm_lms_norm_init_q31.c + + + arm_lms_norm_q15.c + 1 + ../FilteringFunctions/arm_lms_norm_q15.c + + + arm_lms_norm_q31.c + 1 + ../FilteringFunctions/arm_lms_norm_q31.c + + + arm_lms_q15.c + 1 + ../FilteringFunctions/arm_lms_q15.c + + + arm_lms_q31.c + 1 + ../FilteringFunctions/arm_lms_q31.c + + + + + MatrixFunctions + + + arm_mat_add_f32.c + 1 + ../MatrixFunctions/arm_mat_add_f32.c + + + arm_mat_add_q15.c + 1 + ../MatrixFunctions/arm_mat_add_q15.c + + + arm_mat_add_q31.c + 1 + ../MatrixFunctions/arm_mat_add_q31.c + + + arm_mat_init_f32.c + 1 + ../MatrixFunctions/arm_mat_init_f32.c + + + arm_mat_init_q15.c + 1 + ../MatrixFunctions/arm_mat_init_q15.c + + + arm_mat_init_q31.c + 1 + ../MatrixFunctions/arm_mat_init_q31.c + + + arm_mat_inverse_f32.c + 1 + ../MatrixFunctions/arm_mat_inverse_f32.c + + + arm_mat_mult_f32.c + 1 + ../MatrixFunctions/arm_mat_mult_f32.c + + + arm_mat_mult_fast_q15.c + 1 + ../MatrixFunctions/arm_mat_mult_fast_q15.c + + + arm_mat_mult_fast_q31.c + 1 + ../MatrixFunctions/arm_mat_mult_fast_q31.c + + + arm_mat_mult_q15.c + 1 + ../MatrixFunctions/arm_mat_mult_q15.c + + + arm_mat_mult_q31.c + 1 + ../MatrixFunctions/arm_mat_mult_q31.c + + + arm_mat_scale_f32.c + 1 + ../MatrixFunctions/arm_mat_scale_f32.c + + + arm_mat_scale_q15.c + 1 + ../MatrixFunctions/arm_mat_scale_q15.c + + + arm_mat_scale_q31.c + 1 + ../MatrixFunctions/arm_mat_scale_q31.c + + + arm_mat_sub_f32.c + 1 + ../MatrixFunctions/arm_mat_sub_f32.c + + + arm_mat_sub_q15.c + 1 + ../MatrixFunctions/arm_mat_sub_q15.c + + + arm_mat_sub_q31.c + 1 + ../MatrixFunctions/arm_mat_sub_q31.c + + + arm_mat_trans_f32.c + 1 + ../MatrixFunctions/arm_mat_trans_f32.c + + + arm_mat_trans_q15.c + 1 + ../MatrixFunctions/arm_mat_trans_q15.c + + + arm_mat_trans_q31.c + 1 + ../MatrixFunctions/arm_mat_trans_q31.c + + + + + TransformFunctions + + + arm_cfft_radix4_f32.c + 1 + ../TransformFunctions/arm_cfft_radix4_f32.c + + + arm_cfft_radix4_init_f32.c + 1 + ../TransformFunctions/arm_cfft_radix4_init_f32.c + + + arm_cfft_radix4_init_q15.c + 1 + ../TransformFunctions/arm_cfft_radix4_init_q15.c + + + arm_cfft_radix4_init_q31.c + 1 + ../TransformFunctions/arm_cfft_radix4_init_q31.c + + + arm_cfft_radix4_q15.c + 1 + ../TransformFunctions/arm_cfft_radix4_q15.c + + + arm_cfft_radix4_q31.c + 1 + ../TransformFunctions/arm_cfft_radix4_q31.c + + + arm_dct4_f32.c + 1 + ../TransformFunctions/arm_dct4_f32.c + + + arm_dct4_init_f32.c + 1 + ../TransformFunctions/arm_dct4_init_f32.c + + + arm_dct4_init_q15.c + 1 + ../TransformFunctions/arm_dct4_init_q15.c + + + arm_dct4_init_q31.c + 1 + ../TransformFunctions/arm_dct4_init_q31.c + + + arm_dct4_q15.c + 1 + ../TransformFunctions/arm_dct4_q15.c + + + arm_dct4_q31.c + 1 + ../TransformFunctions/arm_dct4_q31.c + + + arm_rfft_f32.c + 1 + ../TransformFunctions/arm_rfft_f32.c + + + arm_rfft_init_f32.c + 1 + ../TransformFunctions/arm_rfft_init_f32.c + + + arm_rfft_init_q15.c + 1 + ../TransformFunctions/arm_rfft_init_q15.c + + + arm_rfft_init_q31.c + 1 + ../TransformFunctions/arm_rfft_init_q31.c + + + arm_rfft_q15.c + 1 + ../TransformFunctions/arm_rfft_q15.c + + + arm_rfft_q31.c + 1 + ../TransformFunctions/arm_rfft_q31.c + + + + + ControllerFunctions + + + arm_pid_init_f32.c + 1 + ../ControllerFunctions/arm_pid_init_f32.c + + + arm_pid_init_q15.c + 1 + ../ControllerFunctions/arm_pid_init_q15.c + + + arm_pid_init_q31.c + 1 + ../ControllerFunctions/arm_pid_init_q31.c + + + arm_pid_reset_f32.c + 1 + ../ControllerFunctions/arm_pid_reset_f32.c + + + arm_pid_reset_q15.c + 1 + ../ControllerFunctions/arm_pid_reset_q15.c + + + arm_pid_reset_q31.c + 1 + ../ControllerFunctions/arm_pid_reset_q31.c + + + arm_sin_cos_f32.c + 1 + ../ControllerFunctions/arm_sin_cos_f32.c + + + arm_sin_cos_q31.c + 1 + ../ControllerFunctions/arm_sin_cos_q31.c + + + + + StatisticsFunctions + + + arm_max_f32.c + 1 + ../StatisticsFunctions/arm_max_f32.c + + + arm_max_q7.c + 1 + ../StatisticsFunctions/arm_max_q7.c + + + arm_max_q15.c + 1 + ../StatisticsFunctions/arm_max_q15.c + + + arm_max_q31.c + 1 + ../StatisticsFunctions/arm_max_q31.c + + + arm_mean_f32.c + 1 + ../StatisticsFunctions/arm_mean_f32.c + + + arm_mean_q7.c + 1 + ../StatisticsFunctions/arm_mean_q7.c + + + arm_mean_q15.c + 1 + ../StatisticsFunctions/arm_mean_q15.c + + + arm_mean_q31.c + 1 + ../StatisticsFunctions/arm_mean_q31.c + + + arm_min_f32.c + 1 + ../StatisticsFunctions/arm_min_f32.c + + + arm_min_q7.c + 1 + ../StatisticsFunctions/arm_min_q7.c + + + arm_min_q15.c + 1 + ../StatisticsFunctions/arm_min_q15.c + + + arm_min_q31.c + 1 + ../StatisticsFunctions/arm_min_q31.c + + + arm_power_f32.c + 1 + ../StatisticsFunctions/arm_power_f32.c + + + arm_power_q7.c + 1 + ../StatisticsFunctions/arm_power_q7.c + + + arm_power_q15.c + 1 + ../StatisticsFunctions/arm_power_q15.c + + + arm_power_q31.c + 1 + ../StatisticsFunctions/arm_power_q31.c + + + arm_rms_f32.c + 1 + ../StatisticsFunctions/arm_rms_f32.c + + + arm_rms_q15.c + 1 + ../StatisticsFunctions/arm_rms_q15.c + + + arm_rms_q31.c + 1 + ../StatisticsFunctions/arm_rms_q31.c + + + arm_std_f32.c + 1 + ../StatisticsFunctions/arm_std_f32.c + + + arm_std_q15.c + 1 + ../StatisticsFunctions/arm_std_q15.c + + + arm_std_q31.c + 1 + ../StatisticsFunctions/arm_std_q31.c + + + arm_var_f32.c + 1 + ../StatisticsFunctions/arm_var_f32.c + + + arm_var_q15.c + 1 + ../StatisticsFunctions/arm_var_q15.c + + + arm_var_q31.c + 1 + ../StatisticsFunctions/arm_var_q31.c + + + + + SupportFunctions + + + arm_copy_f32.c + 1 + ../SupportFunctions/arm_copy_f32.c + + + arm_copy_q7.c + 1 + ../SupportFunctions/arm_copy_q7.c + + + arm_copy_q15.c + 1 + ../SupportFunctions/arm_copy_q15.c + + + arm_copy_q31.c + 1 + ../SupportFunctions/arm_copy_q31.c + + + arm_fill_f32.c + 1 + ../SupportFunctions/arm_fill_f32.c + + + arm_fill_q7.c + 1 + ../SupportFunctions/arm_fill_q7.c + + + arm_fill_q15.c + 1 + ../SupportFunctions/arm_fill_q15.c + + + arm_fill_q31.c + 1 + ../SupportFunctions/arm_fill_q31.c + + + arm_float_to_q7.c + 1 + ../SupportFunctions/arm_float_to_q7.c + + + arm_float_to_q15.c + 1 + ../SupportFunctions/arm_float_to_q15.c + + + arm_float_to_q31.c + 1 + ../SupportFunctions/arm_float_to_q31.c + + + arm_q7_to_float.c + 1 + ../SupportFunctions/arm_q7_to_float.c + + + arm_q7_to_q15.c + 1 + ../SupportFunctions/arm_q7_to_q15.c + + + arm_q7_to_q31.c + 1 + ../SupportFunctions/arm_q7_to_q31.c + + + arm_q15_to_float.c + 1 + ../SupportFunctions/arm_q15_to_float.c + + + arm_q15_to_q7.c + 1 + ../SupportFunctions/arm_q15_to_q7.c + + + arm_q15_to_q31.c + 1 + ../SupportFunctions/arm_q15_to_q31.c + + + arm_q31_to_float.c + 1 + ../SupportFunctions/arm_q31_to_float.c + + + arm_q31_to_q7.c + 1 + ../SupportFunctions/arm_q31_to_q7.c + + + arm_q31_to_q15.c + 1 + ../SupportFunctions/arm_q31_to_q15.c + + + + + CommonTables + + + arm_common_tables.c + 1 + ../CommonTables/arm_common_tables.c + + + + + + + DSP_Lib CM4 LE FPU + 0x3 + ARM-GNU + + + Cortex-M4 FPU + ARM + CLOCK(12000000) CPUTYPE("Cortex-M4") ESEL ELITTLE FPU2 + + + + 5237 + + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\intermediateFiles\ + arm_cortexM4lf_math + 0 + 1 + 0 + 1 + 0 + .\intermediateFiles\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + 0 + cmd.exe /C copy ".\intermediateFiles\lib@L.a" "..\..\..\Lib\GCC\" + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DLM.DLL + -pEMBER + SARMCM3.DLL + + TLM.DLL + -pEMBER + + + + 1 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + -1 + + + + + + .\Simulator.ini + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + -1 + + + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + "Cortex-M4" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 1 + 0 + 0 + 1 + 0 + 0 + 5 + 2 + 1 + + -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -fno-strict-aliasing -ffunction-sections + ARM_MATH_CM4, ARM_MATH_MATRIX_CHECK, ARM_MATH_ROUNDING, __FPU_PRESENT = 1 + + ..\..\..\Include + + + + 0 + 1 + + + + + + + + + 1 + 0 + 1 + 0 + 1 + + + + + + -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -Wl,--gc-sections + + + + + + + BasicMathFunctions + + + arm_abs_f32.c + 1 + ../BasicMathFunctions/arm_abs_f32.c + + + arm_abs_q7.c + 1 + ../BasicMathFunctions/arm_abs_q7.c + + + arm_abs_q15.c + 1 + ../BasicMathFunctions/arm_abs_q15.c + + + arm_abs_q31.c + 1 + ../BasicMathFunctions/arm_abs_q31.c + + + arm_add_f32.c + 1 + ../BasicMathFunctions/arm_add_f32.c + + + arm_add_q7.c + 1 + ../BasicMathFunctions/arm_add_q7.c + + + arm_add_q15.c + 1 + ../BasicMathFunctions/arm_add_q15.c + + + arm_add_q31.c + 1 + ../BasicMathFunctions/arm_add_q31.c + + + arm_dot_prod_f32.c + 1 + ../BasicMathFunctions/arm_dot_prod_f32.c + + + arm_dot_prod_q7.c + 1 + ../BasicMathFunctions/arm_dot_prod_q7.c + + + arm_dot_prod_q15.c + 1 + ../BasicMathFunctions/arm_dot_prod_q15.c + + + arm_dot_prod_q31.c + 1 + ../BasicMathFunctions/arm_dot_prod_q31.c + + + arm_mult_f32.c + 1 + ../BasicMathFunctions/arm_mult_f32.c + + + arm_mult_q7.c + 1 + ../BasicMathFunctions/arm_mult_q7.c + + + arm_mult_q15.c + 1 + ../BasicMathFunctions/arm_mult_q15.c + + + arm_mult_q31.c + 1 + ../BasicMathFunctions/arm_mult_q31.c + + + arm_negate_f32.c + 1 + ../BasicMathFunctions/arm_negate_f32.c + + + arm_negate_q7.c + 1 + ../BasicMathFunctions/arm_negate_q7.c + + + arm_negate_q15.c + 1 + ../BasicMathFunctions/arm_negate_q15.c + + + arm_negate_q31.c + 1 + ../BasicMathFunctions/arm_negate_q31.c + + + arm_offset_f32.c + 1 + ../BasicMathFunctions/arm_offset_f32.c + + + arm_offset_q7.c + 1 + ../BasicMathFunctions/arm_offset_q7.c + + + arm_offset_q15.c + 1 + ../BasicMathFunctions/arm_offset_q15.c + + + arm_offset_q31.c + 1 + ../BasicMathFunctions/arm_offset_q31.c + + + arm_scale_f32.c + 1 + ../BasicMathFunctions/arm_scale_f32.c + + + arm_scale_q7.c + 1 + ../BasicMathFunctions/arm_scale_q7.c + + + arm_scale_q15.c + 1 + ../BasicMathFunctions/arm_scale_q15.c + + + arm_scale_q31.c + 1 + ../BasicMathFunctions/arm_scale_q31.c + + + arm_shift_q7.c + 1 + ../BasicMathFunctions/arm_shift_q7.c + + + arm_shift_q15.c + 1 + ../BasicMathFunctions/arm_shift_q15.c + + + arm_shift_q31.c + 1 + ../BasicMathFunctions/arm_shift_q31.c + + + arm_sub_f32.c + 1 + ../BasicMathFunctions/arm_sub_f32.c + + + arm_sub_q7.c + 1 + ../BasicMathFunctions/arm_sub_q7.c + + + arm_sub_q15.c + 1 + ../BasicMathFunctions/arm_sub_q15.c + + + arm_sub_q31.c + 1 + ../BasicMathFunctions/arm_sub_q31.c + + + + + FastMathFunctions + + + arm_cos_f32.c + 1 + ../FastMathFunctions/arm_cos_f32.c + + + arm_cos_q15.c + 1 + ../FastMathFunctions/arm_cos_q15.c + + + arm_cos_q31.c + 1 + ../FastMathFunctions/arm_cos_q31.c + + + arm_sin_f32.c + 1 + ../FastMathFunctions/arm_sin_f32.c + + + arm_sin_q15.c + 1 + ../FastMathFunctions/arm_sin_q15.c + + + arm_sin_q31.c + 1 + ../FastMathFunctions/arm_sin_q31.c + + + arm_sqrt_q15.c + 1 + ../FastMathFunctions/arm_sqrt_q15.c + + + arm_sqrt_q31.c + 1 + ../FastMathFunctions/arm_sqrt_q31.c + + + + + ComplexMathFunctions + + + arm_cmplx_conj_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_conj_f32.c + + + arm_cmplx_conj_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_conj_q15.c + + + arm_cmplx_conj_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_conj_q31.c + + + arm_cmplx_dot_prod_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_dot_prod_f32.c + + + arm_cmplx_dot_prod_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_dot_prod_q15.c + + + arm_cmplx_dot_prod_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_dot_prod_q31.c + + + arm_cmplx_mag_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_f32.c + + + arm_cmplx_mag_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_q15.c + + + arm_cmplx_mag_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_q31.c + + + arm_cmplx_mag_squared_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_squared_f32.c + + + arm_cmplx_mag_squared_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_squared_q15.c + + + arm_cmplx_mag_squared_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_mag_squared_q31.c + + + arm_cmplx_mult_cmplx_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c + + + arm_cmplx_mult_cmplx_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c + + + arm_cmplx_mult_cmplx_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c + + + arm_cmplx_mult_real_f32.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_real_f32.c + + + arm_cmplx_mult_real_q15.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_real_q15.c + + + arm_cmplx_mult_real_q31.c + 1 + ../ComplexMathFunctions/arm_cmplx_mult_real_q31.c + + + + + FilteringFunctions + + + arm_biquad_cascade_df1_32x64_init_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c + + + arm_biquad_cascade_df1_32x64_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c + + + arm_biquad_cascade_df1_f32.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_f32.c + + + arm_biquad_cascade_df1_fast_q15.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c + + + arm_biquad_cascade_df1_fast_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c + + + arm_biquad_cascade_df1_init_f32.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_init_f32.c + + + arm_biquad_cascade_df1_init_q15.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_init_q15.c + + + arm_biquad_cascade_df1_init_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_init_q31.c + + + arm_biquad_cascade_df1_q15.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_q15.c + + + arm_biquad_cascade_df1_q31.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df1_q31.c + + + arm_biquad_cascade_df2T_f32.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df2T_f32.c + + + arm_biquad_cascade_df2T_init_f32.c + 1 + ../FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c + + + arm_conv_f32.c + 1 + ../FilteringFunctions/arm_conv_f32.c + + + arm_conv_fast_q15.c + 1 + ../FilteringFunctions/arm_conv_fast_q15.c + + + arm_conv_fast_q31.c + 1 + ../FilteringFunctions/arm_conv_fast_q31.c + + + arm_conv_partial_f32.c + 1 + ../FilteringFunctions/arm_conv_partial_f32.c + + + arm_conv_partial_fast_q15.c + 1 + ../FilteringFunctions/arm_conv_partial_fast_q15.c + + + arm_conv_partial_fast_q31.c + 1 + ../FilteringFunctions/arm_conv_partial_fast_q31.c + + + arm_conv_partial_q7.c + 1 + ../FilteringFunctions/arm_conv_partial_q7.c + + + arm_conv_partial_q15.c + 1 + ../FilteringFunctions/arm_conv_partial_q15.c + + + arm_conv_partial_q31.c + 1 + ../FilteringFunctions/arm_conv_partial_q31.c + + + arm_conv_q7.c + 1 + ../FilteringFunctions/arm_conv_q7.c + + + arm_conv_q15.c + 1 + ../FilteringFunctions/arm_conv_q15.c + + + arm_conv_q31.c + 1 + ../FilteringFunctions/arm_conv_q31.c + + + arm_correlate_f32.c + 1 + ../FilteringFunctions/arm_correlate_f32.c + + + arm_correlate_fast_q15.c + 1 + ../FilteringFunctions/arm_correlate_fast_q15.c + + + arm_correlate_fast_q31.c + 1 + ../FilteringFunctions/arm_correlate_fast_q31.c + + + arm_correlate_q7.c + 1 + ../FilteringFunctions/arm_correlate_q7.c + + + arm_correlate_q15.c + 1 + ../FilteringFunctions/arm_correlate_q15.c + + + arm_correlate_q31.c + 1 + ../FilteringFunctions/arm_correlate_q31.c + + + arm_fir_decimate_f32.c + 1 + ../FilteringFunctions/arm_fir_decimate_f32.c + + + arm_fir_decimate_fast_q15.c + 1 + ../FilteringFunctions/arm_fir_decimate_fast_q15.c + + + arm_fir_decimate_fast_q31.c + 1 + ../FilteringFunctions/arm_fir_decimate_fast_q31.c + + + arm_fir_decimate_init_f32.c + 1 + ../FilteringFunctions/arm_fir_decimate_init_f32.c + + + arm_fir_decimate_init_q15.c + 1 + ../FilteringFunctions/arm_fir_decimate_init_q15.c + + + arm_fir_decimate_init_q31.c + 1 + ../FilteringFunctions/arm_fir_decimate_init_q31.c + + + arm_fir_decimate_q15.c + 1 + ../FilteringFunctions/arm_fir_decimate_q15.c + + + arm_fir_decimate_q31.c + 1 + ../FilteringFunctions/arm_fir_decimate_q31.c + + + arm_fir_f32.c + 1 + ../FilteringFunctions/arm_fir_f32.c + + + arm_fir_fast_q15.c + 1 + ../FilteringFunctions/arm_fir_fast_q15.c + + + arm_fir_fast_q31.c + 1 + ../FilteringFunctions/arm_fir_fast_q31.c + + + arm_fir_init_f32.c + 1 + ../FilteringFunctions/arm_fir_init_f32.c + + + arm_fir_init_q7.c + 1 + ../FilteringFunctions/arm_fir_init_q7.c + + + arm_fir_init_q15.c + 1 + ../FilteringFunctions/arm_fir_init_q15.c + + + arm_fir_init_q31.c + 1 + ../FilteringFunctions/arm_fir_init_q31.c + + + arm_fir_interpolate_f32.c + 1 + ../FilteringFunctions/arm_fir_interpolate_f32.c + + + arm_fir_interpolate_init_f32.c + 1 + ../FilteringFunctions/arm_fir_interpolate_init_f32.c + + + arm_fir_interpolate_init_q15.c + 1 + ../FilteringFunctions/arm_fir_interpolate_init_q15.c + + + arm_fir_interpolate_init_q31.c + 1 + ../FilteringFunctions/arm_fir_interpolate_init_q31.c + + + arm_fir_interpolate_q15.c + 1 + ../FilteringFunctions/arm_fir_interpolate_q15.c + + + arm_fir_interpolate_q31.c + 1 + ../FilteringFunctions/arm_fir_interpolate_q31.c + + + arm_fir_lattice_f32.c + 1 + ../FilteringFunctions/arm_fir_lattice_f32.c + + + arm_fir_lattice_init_f32.c + 1 + ../FilteringFunctions/arm_fir_lattice_init_f32.c + + + arm_fir_lattice_init_q15.c + 1 + ../FilteringFunctions/arm_fir_lattice_init_q15.c + + + arm_fir_lattice_init_q31.c + 1 + ../FilteringFunctions/arm_fir_lattice_init_q31.c + + + arm_fir_lattice_q15.c + 1 + ../FilteringFunctions/arm_fir_lattice_q15.c + + + arm_fir_lattice_q31.c + 1 + ../FilteringFunctions/arm_fir_lattice_q31.c + + + arm_fir_q7.c + 1 + ../FilteringFunctions/arm_fir_q7.c + + + arm_fir_q15.c + 1 + ../FilteringFunctions/arm_fir_q15.c + + + arm_fir_q31.c + 1 + ../FilteringFunctions/arm_fir_q31.c + + + arm_fir_sparse_f32.c + 1 + ../FilteringFunctions/arm_fir_sparse_f32.c + + + arm_fir_sparse_init_f32.c + 1 + ../FilteringFunctions/arm_fir_sparse_init_f32.c + + + arm_fir_sparse_init_q7.c + 1 + ../FilteringFunctions/arm_fir_sparse_init_q7.c + + + arm_fir_sparse_init_q15.c + 1 + ../FilteringFunctions/arm_fir_sparse_init_q15.c + + + arm_fir_sparse_init_q31.c + 1 + ../FilteringFunctions/arm_fir_sparse_init_q31.c + + + arm_fir_sparse_q7.c + 1 + ../FilteringFunctions/arm_fir_sparse_q7.c + + + arm_fir_sparse_q15.c + 1 + ../FilteringFunctions/arm_fir_sparse_q15.c + + + arm_fir_sparse_q31.c + 1 + ../FilteringFunctions/arm_fir_sparse_q31.c + + + arm_iir_lattice_f32.c + 1 + ../FilteringFunctions/arm_iir_lattice_f32.c + + + arm_iir_lattice_init_f32.c + 1 + ../FilteringFunctions/arm_iir_lattice_init_f32.c + + + arm_iir_lattice_init_q15.c + 1 + ../FilteringFunctions/arm_iir_lattice_init_q15.c + + + arm_iir_lattice_init_q31.c + 1 + ../FilteringFunctions/arm_iir_lattice_init_q31.c + + + arm_iir_lattice_q15.c + 1 + ../FilteringFunctions/arm_iir_lattice_q15.c + + + arm_iir_lattice_q31.c + 1 + ../FilteringFunctions/arm_iir_lattice_q31.c + + + arm_lms_f32.c + 1 + ../FilteringFunctions/arm_lms_f32.c + + + arm_lms_init_f32.c + 1 + ../FilteringFunctions/arm_lms_init_f32.c + + + arm_lms_init_q15.c + 1 + ../FilteringFunctions/arm_lms_init_q15.c + + + arm_lms_init_q31.c + 1 + ../FilteringFunctions/arm_lms_init_q31.c + + + arm_lms_norm_f32.c + 1 + ../FilteringFunctions/arm_lms_norm_f32.c + + + arm_lms_norm_init_f32.c + 1 + ../FilteringFunctions/arm_lms_norm_init_f32.c + + + arm_lms_norm_init_q15.c + 1 + ../FilteringFunctions/arm_lms_norm_init_q15.c + + + arm_lms_norm_init_q31.c + 1 + ../FilteringFunctions/arm_lms_norm_init_q31.c + + + arm_lms_norm_q15.c + 1 + ../FilteringFunctions/arm_lms_norm_q15.c + + + arm_lms_norm_q31.c + 1 + ../FilteringFunctions/arm_lms_norm_q31.c + + + arm_lms_q15.c + 1 + ../FilteringFunctions/arm_lms_q15.c + + + arm_lms_q31.c + 1 + ../FilteringFunctions/arm_lms_q31.c + + + + + MatrixFunctions + + + arm_mat_add_f32.c + 1 + ../MatrixFunctions/arm_mat_add_f32.c + + + arm_mat_add_q15.c + 1 + ../MatrixFunctions/arm_mat_add_q15.c + + + arm_mat_add_q31.c + 1 + ../MatrixFunctions/arm_mat_add_q31.c + + + arm_mat_init_f32.c + 1 + ../MatrixFunctions/arm_mat_init_f32.c + + + arm_mat_init_q15.c + 1 + ../MatrixFunctions/arm_mat_init_q15.c + + + arm_mat_init_q31.c + 1 + ../MatrixFunctions/arm_mat_init_q31.c + + + arm_mat_inverse_f32.c + 1 + ../MatrixFunctions/arm_mat_inverse_f32.c + + + arm_mat_mult_f32.c + 1 + ../MatrixFunctions/arm_mat_mult_f32.c + + + arm_mat_mult_fast_q15.c + 1 + ../MatrixFunctions/arm_mat_mult_fast_q15.c + + + arm_mat_mult_fast_q31.c + 1 + ../MatrixFunctions/arm_mat_mult_fast_q31.c + + + arm_mat_mult_q15.c + 1 + ../MatrixFunctions/arm_mat_mult_q15.c + + + arm_mat_mult_q31.c + 1 + ../MatrixFunctions/arm_mat_mult_q31.c + + + arm_mat_scale_f32.c + 1 + ../MatrixFunctions/arm_mat_scale_f32.c + + + arm_mat_scale_q15.c + 1 + ../MatrixFunctions/arm_mat_scale_q15.c + + + arm_mat_scale_q31.c + 1 + ../MatrixFunctions/arm_mat_scale_q31.c + + + arm_mat_sub_f32.c + 1 + ../MatrixFunctions/arm_mat_sub_f32.c + + + arm_mat_sub_q15.c + 1 + ../MatrixFunctions/arm_mat_sub_q15.c + + + arm_mat_sub_q31.c + 1 + ../MatrixFunctions/arm_mat_sub_q31.c + + + arm_mat_trans_f32.c + 1 + ../MatrixFunctions/arm_mat_trans_f32.c + + + arm_mat_trans_q15.c + 1 + ../MatrixFunctions/arm_mat_trans_q15.c + + + arm_mat_trans_q31.c + 1 + ../MatrixFunctions/arm_mat_trans_q31.c + + + + + TransformFunctions + + + arm_cfft_radix4_f32.c + 1 + ../TransformFunctions/arm_cfft_radix4_f32.c + + + arm_cfft_radix4_init_f32.c + 1 + ../TransformFunctions/arm_cfft_radix4_init_f32.c + + + arm_cfft_radix4_init_q15.c + 1 + ../TransformFunctions/arm_cfft_radix4_init_q15.c + + + arm_cfft_radix4_init_q31.c + 1 + ../TransformFunctions/arm_cfft_radix4_init_q31.c + + + arm_cfft_radix4_q15.c + 1 + ../TransformFunctions/arm_cfft_radix4_q15.c + + + arm_cfft_radix4_q31.c + 1 + ../TransformFunctions/arm_cfft_radix4_q31.c + + + arm_dct4_f32.c + 1 + ../TransformFunctions/arm_dct4_f32.c + + + arm_dct4_init_f32.c + 1 + ../TransformFunctions/arm_dct4_init_f32.c + + + arm_dct4_init_q15.c + 1 + ../TransformFunctions/arm_dct4_init_q15.c + + + arm_dct4_init_q31.c + 1 + ../TransformFunctions/arm_dct4_init_q31.c + + + arm_dct4_q15.c + 1 + ../TransformFunctions/arm_dct4_q15.c + + + arm_dct4_q31.c + 1 + ../TransformFunctions/arm_dct4_q31.c + + + arm_rfft_f32.c + 1 + ../TransformFunctions/arm_rfft_f32.c + + + arm_rfft_init_f32.c + 1 + ../TransformFunctions/arm_rfft_init_f32.c + + + arm_rfft_init_q15.c + 1 + ../TransformFunctions/arm_rfft_init_q15.c + + + arm_rfft_init_q31.c + 1 + ../TransformFunctions/arm_rfft_init_q31.c + + + arm_rfft_q15.c + 1 + ../TransformFunctions/arm_rfft_q15.c + + + arm_rfft_q31.c + 1 + ../TransformFunctions/arm_rfft_q31.c + + + + + ControllerFunctions + + + arm_pid_init_f32.c + 1 + ../ControllerFunctions/arm_pid_init_f32.c + + + arm_pid_init_q15.c + 1 + ../ControllerFunctions/arm_pid_init_q15.c + + + arm_pid_init_q31.c + 1 + ../ControllerFunctions/arm_pid_init_q31.c + + + arm_pid_reset_f32.c + 1 + ../ControllerFunctions/arm_pid_reset_f32.c + + + arm_pid_reset_q15.c + 1 + ../ControllerFunctions/arm_pid_reset_q15.c + + + arm_pid_reset_q31.c + 1 + ../ControllerFunctions/arm_pid_reset_q31.c + + + arm_sin_cos_f32.c + 1 + ../ControllerFunctions/arm_sin_cos_f32.c + + + arm_sin_cos_q31.c + 1 + ../ControllerFunctions/arm_sin_cos_q31.c + + + + + StatisticsFunctions + + + arm_max_f32.c + 1 + ../StatisticsFunctions/arm_max_f32.c + + + arm_max_q7.c + 1 + ../StatisticsFunctions/arm_max_q7.c + + + arm_max_q15.c + 1 + ../StatisticsFunctions/arm_max_q15.c + + + arm_max_q31.c + 1 + ../StatisticsFunctions/arm_max_q31.c + + + arm_mean_f32.c + 1 + ../StatisticsFunctions/arm_mean_f32.c + + + arm_mean_q7.c + 1 + ../StatisticsFunctions/arm_mean_q7.c + + + arm_mean_q15.c + 1 + ../StatisticsFunctions/arm_mean_q15.c + + + arm_mean_q31.c + 1 + ../StatisticsFunctions/arm_mean_q31.c + + + arm_min_f32.c + 1 + ../StatisticsFunctions/arm_min_f32.c + + + arm_min_q7.c + 1 + ../StatisticsFunctions/arm_min_q7.c + + + arm_min_q15.c + 1 + ../StatisticsFunctions/arm_min_q15.c + + + arm_min_q31.c + 1 + ../StatisticsFunctions/arm_min_q31.c + + + arm_power_f32.c + 1 + ../StatisticsFunctions/arm_power_f32.c + + + arm_power_q7.c + 1 + ../StatisticsFunctions/arm_power_q7.c + + + arm_power_q15.c + 1 + ../StatisticsFunctions/arm_power_q15.c + + + arm_power_q31.c + 1 + ../StatisticsFunctions/arm_power_q31.c + + + arm_rms_f32.c + 1 + ../StatisticsFunctions/arm_rms_f32.c + + + arm_rms_q15.c + 1 + ../StatisticsFunctions/arm_rms_q15.c + + + arm_rms_q31.c + 1 + ../StatisticsFunctions/arm_rms_q31.c + + + arm_std_f32.c + 1 + ../StatisticsFunctions/arm_std_f32.c + + + arm_std_q15.c + 1 + ../StatisticsFunctions/arm_std_q15.c + + + arm_std_q31.c + 1 + ../StatisticsFunctions/arm_std_q31.c + + + arm_var_f32.c + 1 + ../StatisticsFunctions/arm_var_f32.c + + + arm_var_q15.c + 1 + ../StatisticsFunctions/arm_var_q15.c + + + arm_var_q31.c + 1 + ../StatisticsFunctions/arm_var_q31.c + + + + + SupportFunctions + + + arm_copy_f32.c + 1 + ../SupportFunctions/arm_copy_f32.c + + + arm_copy_q7.c + 1 + ../SupportFunctions/arm_copy_q7.c + + + arm_copy_q15.c + 1 + ../SupportFunctions/arm_copy_q15.c + + + arm_copy_q31.c + 1 + ../SupportFunctions/arm_copy_q31.c + + + arm_fill_f32.c + 1 + ../SupportFunctions/arm_fill_f32.c + + + arm_fill_q7.c + 1 + ../SupportFunctions/arm_fill_q7.c + + + arm_fill_q15.c + 1 + ../SupportFunctions/arm_fill_q15.c + + + arm_fill_q31.c + 1 + ../SupportFunctions/arm_fill_q31.c + + + arm_float_to_q7.c + 1 + ../SupportFunctions/arm_float_to_q7.c + + + arm_float_to_q15.c + 1 + ../SupportFunctions/arm_float_to_q15.c + + + arm_float_to_q31.c + 1 + ../SupportFunctions/arm_float_to_q31.c + + + arm_q7_to_float.c + 1 + ../SupportFunctions/arm_q7_to_float.c + + + arm_q7_to_q15.c + 1 + ../SupportFunctions/arm_q7_to_q15.c + + + arm_q7_to_q31.c + 1 + ../SupportFunctions/arm_q7_to_q31.c + + + arm_q15_to_float.c + 1 + ../SupportFunctions/arm_q15_to_float.c + + + arm_q15_to_q7.c + 1 + ../SupportFunctions/arm_q15_to_q7.c + + + arm_q15_to_q31.c + 1 + ../SupportFunctions/arm_q15_to_q31.c + + + arm_q31_to_float.c + 1 + ../SupportFunctions/arm_q31_to_float.c + + + arm_q31_to_q7.c + 1 + ../SupportFunctions/arm_q31_to_q7.c + + + arm_q31_to_q15.c + 1 + ../SupportFunctions/arm_q31_to_q15.c + + + + + CommonTables + + + arm_common_tables.c + 1 + ../CommonTables/arm_common_tables.c + + + + + + + +
diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexMx_math_Build.bat b/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexMx_math_Build.bat new file mode 100644 index 000000000..a194c70a4 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/GCC/arm_cortexMx_math_Build.bat @@ -0,0 +1,10 @@ + +SET TMP=C:\Temp +SET TEMP=C:\Temp + +SET UVEXE=C:\Keil\UV4\UV4.EXE + +%UVEXE% -rb arm_cortexM0x_math.uvproj -t"DSP_Lib CM0 LE" -o"DSP_Lib CM0 LE.txt" +%UVEXE% -rb arm_cortexM3x_math.uvproj -t"DSP_Lib CM3 LE" -o"DSP_Lib CM3 LE.txt" +%UVEXE% -rb arm_cortexM4x_math.uvproj -t"DSP_Lib CM4 LE" -o"DSP_Lib CM4 LE.txt" +%UVEXE% -rb arm_cortexM4x_math.uvproj -t"DSP_Lib CM4 LE FPU" -o"DSP_Lib CM4 LE FPU.txt" diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_f32.c new file mode 100644 index 000000000..23348a1ec --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_f32.c @@ -0,0 +1,154 @@ +/* ---------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_add_f32.c +* +* Description: Floating-point matrix addition +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @defgroup MatrixAdd Matrix Addition + * + * Adds two matrices. + * \image html MatrixAddition.gif "Addition of two 3 x 3 matrices" + * + * The functions check to make sure that + * pSrcA, pSrcB, and pDst have the same + * number of rows and columns. + */ + +/** + * @addtogroup MatrixAdd + * @{ + */ + + +/** + * @brief Floating-point matrix addition. + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + +arm_status arm_mat_add_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst) +{ + float32_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ + float32_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ + float32_t *pOut = pDst->pData; /* output data matrix pointer */ + uint32_t numSamples; /* total number of elements in the matrix */ + uint32_t blkCnt; /* loop counters */ + arm_status status; /* status of matrix addition */ + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if((pSrcA->numRows != pSrcB->numRows) || + (pSrcA->numCols != pSrcB->numCols) || + (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Loop unrolling */ + blkCnt = numSamples >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) + B(m,n) */ + /* Add and then store the results in the destination buffer. */ + *pOut++ = (*pIn1++) + (*pIn2++); + *pOut++ = (*pIn1++) + (*pIn2++); + *pOut++ = (*pIn1++) + (*pIn2++); + *pOut++ = (*pIn1++) + (*pIn2++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the numSamples is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = numSamples % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = numSamples; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) + B(m,n) */ + /* Add and then store the results in the destination buffer. */ + *pOut++ = (*pIn1++) + (*pIn2++); + + /* Decrement the loop counter */ + blkCnt--; + } + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixAdd group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q15.c new file mode 100644 index 000000000..b96feb4b7 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q15.c @@ -0,0 +1,158 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_add_q15.c +* +* Description: Q15 matrix addition +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixAdd + * @{ + */ + +/** + * @brief Q15 matrix addition. + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. + */ + +arm_status arm_mat_add_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst) +{ + q15_t *pInA = pSrcA->pData; /* input data matrix pointer A */ + q15_t *pInB = pSrcB->pData; /* input data matrix pointer B */ + q15_t *pOut = pDst->pData; /* output data matrix pointer */ + uint16_t numSamples; /* total number of elements in the matrix */ + uint32_t blkCnt; /* loop counters */ + arm_status status; /* status of matrix addition */ + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if((pSrcA->numRows != pSrcB->numRows) || + (pSrcA->numCols != pSrcB->numCols) || + (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Total number of samples in the input matrix */ + numSamples = (uint16_t) (pSrcA->numRows * pSrcA->numCols); + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Loop unrolling */ + blkCnt = (uint32_t) numSamples >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) + B(m,n) */ + /* Add, Saturate and then store the results in the destination buffer. */ + *__SIMD32(pOut)++ = __QADD16(*__SIMD32(pInA)++, *__SIMD32(pInB)++); + *__SIMD32(pOut)++ = __QADD16(*__SIMD32(pInA)++, *__SIMD32(pInB)++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = (uint32_t) numSamples % 0x4u; + + /* q15 pointers of input and output are initialized */ + + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) + B(m,n) */ + /* Add, Saturate and then store the results in the destination buffer. */ + *pOut++ = (q15_t) __QADD16(*pInA++, *pInB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = (uint32_t) numSamples; + + + /* q15 pointers of input and output are initialized */ + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) + B(m,n) */ + /* Add, Saturate and then store the results in the destination buffer. */ + *pOut++ = (q15_t) __SSAT(((q31_t) * pInA++ + *pInB++), 16); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixAdd group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q31.c new file mode 100644 index 000000000..af4ada0ae --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q31.c @@ -0,0 +1,157 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_add_q31.c +* +* Description: Q31 matrix addition +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixAdd + * @{ + */ + +/** + * @brief Q31 matrix addition. + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated. + */ + +arm_status arm_mat_add_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst) +{ + q31_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ + q31_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ + q31_t *pOut = pDst->pData; /* output data matrix pointer */ + uint32_t numSamples; /* total number of elements in the matrix */ + uint32_t blkCnt; /* loop counters */ + arm_status status; /* status of matrix addition */ + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if((pSrcA->numRows != pSrcB->numRows) || + (pSrcA->numCols != pSrcB->numCols) || + (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Loop Unrolling */ + blkCnt = numSamples >> 2u; + + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) + B(m,n) */ + /* Add, saturate and then store the results in the destination buffer. */ + *pOut++ = __QADD(*pIn1++, *pIn2++); + *pOut++ = __QADD(*pIn1++, *pIn2++); + *pOut++ = __QADD(*pIn1++, *pIn2++); + *pOut++ = __QADD(*pIn1++, *pIn2++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the numSamples is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = numSamples % 0x4u; + + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) + B(m,n) */ + /* Add, saturate and then store the results in the destination buffer. */ + *pOut++ = __QADD(*pIn1++, *pIn2++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = numSamples; + + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) + B(m,n) */ + /* Add, saturate and then store the results in the destination buffer. */ + *pOut++ = clip_q63_to_q31(((q63_t) (*pIn1++)) + (*pIn2++)); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixAdd group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_f32.c new file mode 100644 index 000000000..e27a685b8 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_f32.c @@ -0,0 +1,83 @@ +/* ---------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_init_f32.c +* +* Description: Floating-point matrix initialization. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @defgroup MatrixInit Matrix Initialization + * + * Initializes the underlying matrix data structure. + * The functions set the numRows, + * numCols, and pData fields + * of the matrix data structure. + */ + +/** + * @addtogroup MatrixInit + * @{ + */ + +/** + * @brief Floating-point matrix initialization. + * @param[in,out] *S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] *pData points to the matrix data array. + * @return none + */ + +void arm_mat_init_f32( + arm_matrix_instance_f32 * S, + uint16_t nRows, + uint16_t nColumns, + float32_t * pData) +{ + /* Assign Number of Rows */ + S->numRows = nRows; + + /* Assign Number of Columns */ + S->numCols = nColumns; + + /* Assign Data pointer */ + S->pData = pData; +} + +/** + * @} end of MatrixInit group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q15.c new file mode 100644 index 000000000..addc2b0f1 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q15.c @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_init_q15.c +* +* Description: Q15 matrix initialization. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------------- */ + + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixInit + * @{ + */ + + /** + * @brief Q15 matrix initialization. + * @param[in,out] *S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] *pData points to the matrix data array. + * @return none + */ + +void arm_mat_init_q15( + arm_matrix_instance_q15 * S, + uint16_t nRows, + uint16_t nColumns, + q15_t * pData) +{ + /* Assign Number of Rows */ + S->numRows = nRows; + + /* Assign Number of Columns */ + S->numCols = nColumns; + + /* Assign Data pointer */ + S->pData = pData; +} + +/** + * @} end of MatrixInit group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q31.c new file mode 100644 index 000000000..7e116590a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q31.c @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_init_q31.c +* +* Description: Q31 matrix initialization. +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------------- */ + + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @defgroup MatrixInit Matrix Initialization + * + */ + +/** + * @addtogroup MatrixInit + * @{ + */ + + /** + * @brief Q31 matrix initialization. + * @param[in,out] *S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] *pData points to the matrix data array. + * @return none + */ + +void arm_mat_init_q31( + arm_matrix_instance_q31 * S, + uint16_t nRows, + uint16_t nColumns, + q31_t * pData) +{ + /* Assign Number of Rows */ + S->numRows = nRows; + + /* Assign Number of Columns */ + S->numCols = nColumns; + + /* Assign Data pointer */ + S->pData = pData; +} + +/** + * @} end of MatrixInit group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f32.c new file mode 100644 index 000000000..6a1e0e441 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f32.c @@ -0,0 +1,665 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_inverse_f32.c +* +* Description: Floating-point matrix inverse. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @defgroup MatrixInv Matrix Inverse + * + * Computes the inverse of a matrix. + * + * The inverse is defined only if the input matrix is square and non-singular (the determinant + * is non-zero). The function checks that the input and output matrices are square and of the + * same size. + * + * Matrix inversion is numerically sensitive and the CMSIS DSP library only supports matrix + * inversion of floating-point matrices. + * + * \par Algorithm + * The Gauss-Jordan method is used to find the inverse. + * The algorithm performs a sequence of elementary row-operations till it + * reduces the input matrix to an identity matrix. Applying the same sequence + * of elementary row-operations to an identity matrix yields the inverse matrix. + * If the input matrix is singular, then the algorithm terminates and returns error status + * ARM_MATH_SINGULAR. + * \image html MatrixInverse.gif "Matrix Inverse of a 3 x 3 matrix using Gauss-Jordan Method" + */ + +/** + * @addtogroup MatrixInv + * @{ + */ + +/** + * @brief Floating-point matrix inverse. + * @param[in] *pSrc points to input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns + * ARM_MATH_SIZE_MISMATCH if the input matrix is not square or if the size + * of the output matrix does not match the size of the input matrix. + * If the input matrix is found to be singular (non-invertible), then the function returns + * ARM_MATH_SINGULAR. Otherwise, the function returns ARM_MATH_SUCCESS. + */ + +arm_status arm_mat_inverse_f32( + const arm_matrix_instance_f32 * pSrc, + arm_matrix_instance_f32 * pDst) +{ + float32_t *pIn = pSrc->pData; /* input data matrix pointer */ + float32_t *pOut = pDst->pData; /* output data matrix pointer */ + float32_t *pInT1, *pInT2; /* Temporary input data matrix pointer */ + float32_t *pInT3, *pInT4; /* Temporary output data matrix pointer */ + float32_t *pPivotRowIn, *pPRT_in, *pPivotRowDst, *pPRT_pDst; /* Temporary input and output data matrix pointer */ + uint32_t numRows = pSrc->numRows; /* Number of rows in the matrix */ + uint32_t numCols = pSrc->numCols; /* Number of Cols in the matrix */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float32_t Xchg, in = 0.0f, in1; /* Temporary input values */ + uint32_t i, rowCnt, flag = 0u, j, loopCnt, k, l; /* loop counters */ + arm_status status; /* status of matrix inverse */ + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if((pSrc->numRows != pSrc->numCols) || (pDst->numRows != pDst->numCols) + || (pSrc->numRows != pDst->numRows)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + + /*-------------------------------------------------------------------------------------------------------------- + * Matrix Inverse can be solved using elementary row operations. + * + * Gauss-Jordan Method: + * + * 1. First combine the identity matrix and the input matrix separated by a bar to form an + * augmented matrix as follows: + * _ _ _ _ + * | a11 a12 | 1 0 | | X11 X12 | + * | | | = | | + * |_ a21 a22 | 0 1 _| |_ X21 X21 _| + * + * 2. In our implementation, pDst Matrix is used as identity matrix. + * + * 3. Begin with the first row. Let i = 1. + * + * 4. Check to see if the pivot for row i is zero. + * The pivot is the element of the main diagonal that is on the current row. + * For instance, if working with row i, then the pivot element is aii. + * If the pivot is zero, exchange that row with a row below it that does not + * contain a zero in column i. If this is not possible, then an inverse + * to that matrix does not exist. + * + * 5. Divide every element of row i by the pivot. + * + * 6. For every row below and row i, replace that row with the sum of that row and + * a multiple of row i so that each new element in column i below row i is zero. + * + * 7. Move to the next row and column and repeat steps 2 through 5 until you have zeros + * for every element below and above the main diagonal. + * + * 8. Now an identical matrix is formed to the left of the bar(input matrix, pSrc). + * Therefore, the matrix to the right of the bar is our solution(pDst matrix, pDst). + *----------------------------------------------------------------------------------------------------------------*/ + + /* Working pointer for destination matrix */ + pInT2 = pOut; + + /* Loop over the number of rows */ + rowCnt = numRows; + + /* Making the destination matrix as identity matrix */ + while(rowCnt > 0u) + { + /* Writing all zeroes in lower triangle of the destination matrix */ + j = numRows - rowCnt; + while(j > 0u) + { + *pInT2++ = 0.0f; + j--; + } + + /* Writing all ones in the diagonal of the destination matrix */ + *pInT2++ = 1.0f; + + /* Writing all zeroes in upper triangle of the destination matrix */ + j = rowCnt - 1u; + while(j > 0u) + { + *pInT2++ = 0.0f; + j--; + } + + /* Decrement the loop counter */ + rowCnt--; + } + + /* Loop over the number of columns of the input matrix. + All the elements in each column are processed by the row operations */ + loopCnt = numCols; + + /* Index modifier to navigate through the columns */ + l = 0u; + + while(loopCnt > 0u) + { + /* Check if the pivot element is zero.. + * If it is zero then interchange the row with non zero row below. + * If there is no non zero element to replace in the rows below, + * then the matrix is Singular. */ + + /* Working pointer for the input matrix that points + * to the pivot element of the particular row */ + pInT1 = pIn + (l * numCols); + + /* Working pointer for the destination matrix that points + * to the pivot element of the particular row */ + pInT3 = pOut + (l * numCols); + + /* Temporary variable to hold the pivot value */ + in = *pInT1; + + /* Destination pointer modifier */ + k = 1u; + + /* Check if the pivot element is zero */ + if(*pInT1 == 0.0f) + { + /* Loop over the number rows present below */ + i = numRows - (l + 1u); + + while(i > 0u) + { + /* Update the input and destination pointers */ + pInT2 = pInT1 + (numCols * l); + pInT4 = pInT3 + (numCols * k); + + /* Check if there is a non zero pivot element to + * replace in the rows below */ + if(*pInT2 != 0.0f) + { + /* Loop over number of columns + * to the right of the pilot element */ + j = numCols - l; + + while(j > 0u) + { + /* Exchange the row elements of the input matrix */ + Xchg = *pInT2; + *pInT2++ = *pInT1; + *pInT1++ = Xchg; + + /* Decrement the loop counter */ + j--; + } + + /* Loop over number of columns of the destination matrix */ + j = numCols; + + while(j > 0u) + { + /* Exchange the row elements of the destination matrix */ + Xchg = *pInT4; + *pInT4++ = *pInT3; + *pInT3++ = Xchg; + + /* Decrement the loop counter */ + j--; + } + + /* Flag to indicate whether exchange is done or not */ + flag = 1u; + + /* Break after exchange is done */ + break; + } + + /* Update the destination pointer modifier */ + k++; + + /* Decrement the loop counter */ + i--; + } + } + + /* Update the status if the matrix is singular */ + if((flag != 1u) && (in == 0.0f)) + { + status = ARM_MATH_SINGULAR; + + break; + } + + /* Points to the pivot row of input and destination matrices */ + pPivotRowIn = pIn + (l * numCols); + pPivotRowDst = pOut + (l * numCols); + + /* Temporary pointers to the pivot row pointers */ + pInT1 = pPivotRowIn; + pInT2 = pPivotRowDst; + + /* Pivot element of the row */ + in = *(pIn + (l * numCols)); + + /* Loop over number of columns + * to the right of the pilot element */ + j = (numCols - l); + + while(j > 0u) + { + /* Divide each element of the row of the input matrix + * by the pivot element */ + in1 = *pInT1; + *pInT1++ = in1 / in; + + /* Decrement the loop counter */ + j--; + } + + /* Loop over number of columns of the destination matrix */ + j = numCols; + + while(j > 0u) + { + /* Divide each element of the row of the destination matrix + * by the pivot element */ + in1 = *pInT2; + *pInT2++ = in1 / in; + + /* Decrement the loop counter */ + j--; + } + + /* Replace the rows with the sum of that row and a multiple of row i + * so that each new element in column i above row i is zero.*/ + + /* Temporary pointers for input and destination matrices */ + pInT1 = pIn; + pInT2 = pOut; + + /* index used to check for pivot element */ + i = 0u; + + /* Loop over number of rows */ + /* to be replaced by the sum of that row and a multiple of row i */ + k = numRows; + + while(k > 0u) + { + /* Check for the pivot element */ + if(i == l) + { + /* If the processing element is the pivot element, + only the columns to the right are to be processed */ + pInT1 += numCols - l; + + pInT2 += numCols; + } + else + { + /* Element of the reference row */ + in = *pInT1; + + /* Working pointers for input and destination pivot rows */ + pPRT_in = pPivotRowIn; + pPRT_pDst = pPivotRowDst; + + /* Loop over the number of columns to the right of the pivot element, + to replace the elements in the input matrix */ + j = (numCols - l); + + while(j > 0u) + { + /* Replace the element by the sum of that row + and a multiple of the reference row */ + in1 = *pInT1; + *pInT1++ = in1 - (in * *pPRT_in++); + + /* Decrement the loop counter */ + j--; + } + + /* Loop over the number of columns to + replace the elements in the destination matrix */ + j = numCols; + + while(j > 0u) + { + /* Replace the element by the sum of that row + and a multiple of the reference row */ + in1 = *pInT2; + *pInT2++ = in1 - (in * *pPRT_pDst++); + + /* Decrement the loop counter */ + j--; + } + + } + + /* Increment the temporary input pointer */ + pInT1 = pInT1 + l; + + /* Decrement the loop counter */ + k--; + + /* Increment the pivot index */ + i++; + } + + /* Increment the input pointer */ + pIn++; + + /* Decrement the loop counter */ + loopCnt--; + + /* Increment the index modifier */ + l++; + } + + +#else + + /* Run the below code for Cortex-M0 */ + + float32_t Xchg, in = 0.0f; /* Temporary input values */ + uint32_t i, rowCnt, flag = 0u, j, loopCnt, k, l; /* loop counters */ + arm_status status; /* status of matrix inverse */ + +#ifdef ARM_MATH_MATRIX_CHECK + + /* Check for matrix mismatch condition */ + if((pSrc->numRows != pSrc->numCols) || (pDst->numRows != pDst->numCols) + || (pSrc->numRows != pDst->numRows)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + { + + /*-------------------------------------------------------------------------------------------------------------- + * Matrix Inverse can be solved using elementary row operations. + * + * Gauss-Jordan Method: + * + * 1. First combine the identity matrix and the input matrix separated by a bar to form an + * augmented matrix as follows: + * _ _ _ _ _ _ _ _ + * | | a11 a12 | | | 1 0 | | | X11 X12 | + * | | | | | | | = | | + * |_ |_ a21 a22 _| | |_0 1 _| _| |_ X21 X21 _| + * + * 2. In our implementation, pDst Matrix is used as identity matrix. + * + * 3. Begin with the first row. Let i = 1. + * + * 4. Check to see if the pivot for row i is zero. + * The pivot is the element of the main diagonal that is on the current row. + * For instance, if working with row i, then the pivot element is aii. + * If the pivot is zero, exchange that row with a row below it that does not + * contain a zero in column i. If this is not possible, then an inverse + * to that matrix does not exist. + * + * 5. Divide every element of row i by the pivot. + * + * 6. For every row below and row i, replace that row with the sum of that row and + * a multiple of row i so that each new element in column i below row i is zero. + * + * 7. Move to the next row and column and repeat steps 2 through 5 until you have zeros + * for every element below and above the main diagonal. + * + * 8. Now an identical matrix is formed to the left of the bar(input matrix, src). + * Therefore, the matrix to the right of the bar is our solution(dst matrix, dst). + *----------------------------------------------------------------------------------------------------------------*/ + + /* Working pointer for destination matrix */ + pInT2 = pOut; + + /* Loop over the number of rows */ + rowCnt = numRows; + + /* Making the destination matrix as identity matrix */ + while(rowCnt > 0u) + { + /* Writing all zeroes in lower triangle of the destination matrix */ + j = numRows - rowCnt; + while(j > 0u) + { + *pInT2++ = 0.0f; + j--; + } + + /* Writing all ones in the diagonal of the destination matrix */ + *pInT2++ = 1.0f; + + /* Writing all zeroes in upper triangle of the destination matrix */ + j = rowCnt - 1u; + while(j > 0u) + { + *pInT2++ = 0.0f; + j--; + } + + /* Decrement the loop counter */ + rowCnt--; + } + + /* Loop over the number of columns of the input matrix. + All the elements in each column are processed by the row operations */ + loopCnt = numCols; + + /* Index modifier to navigate through the columns */ + l = 0u; + //for(loopCnt = 0u; loopCnt < numCols; loopCnt++) + while(loopCnt > 0u) + { + /* Check if the pivot element is zero.. + * If it is zero then interchange the row with non zero row below. + * If there is no non zero element to replace in the rows below, + * then the matrix is Singular. */ + + /* Working pointer for the input matrix that points + * to the pivot element of the particular row */ + pInT1 = pIn + (l * numCols); + + /* Working pointer for the destination matrix that points + * to the pivot element of the particular row */ + pInT3 = pOut + (l * numCols); + + /* Temporary variable to hold the pivot value */ + in = *pInT1; + + /* Destination pointer modifier */ + k = 1u; + + /* Check if the pivot element is zero */ + if(*pInT1 == 0.0f) + { + /* Loop over the number rows present below */ + for (i = (l + 1u); i < numRows; i++) + { + /* Update the input and destination pointers */ + pInT2 = pInT1 + (numCols * l); + pInT4 = pInT3 + (numCols * k); + + /* Check if there is a non zero pivot element to + * replace in the rows below */ + if(*pInT2 != 0.0f) + { + /* Loop over number of columns + * to the right of the pilot element */ + for (j = 0u; j < (numCols - l); j++) + { + /* Exchange the row elements of the input matrix */ + Xchg = *pInT2; + *pInT2++ = *pInT1; + *pInT1++ = Xchg; + } + + for (j = 0u; j < numCols; j++) + { + Xchg = *pInT4; + *pInT4++ = *pInT3; + *pInT3++ = Xchg; + } + + /* Flag to indicate whether exchange is done or not */ + flag = 1u; + + /* Break after exchange is done */ + break; + } + + /* Update the destination pointer modifier */ + k++; + } + } + + /* Update the status if the matrix is singular */ + if((flag != 1u) && (in == 0.0f)) + { + status = ARM_MATH_SINGULAR; + + break; + } + + /* Points to the pivot row of input and destination matrices */ + pPivotRowIn = pIn + (l * numCols); + pPivotRowDst = pOut + (l * numCols); + + /* Temporary pointers to the pivot row pointers */ + pInT1 = pPivotRowIn; + pInT2 = pPivotRowDst; + + /* Pivot element of the row */ + in = *(pIn + (l * numCols)); + + /* Loop over number of columns + * to the right of the pilot element */ + for (j = 0u; j < (numCols - l); j++) + { + /* Divide each element of the row of the input matrix + * by the pivot element */ + *pInT1++ = *pInT1 / in; + } + for (j = 0u; j < numCols; j++) + { + /* Divide each element of the row of the destination matrix + * by the pivot element */ + *pInT2++ = *pInT2 / in; + } + + /* Replace the rows with the sum of that row and a multiple of row i + * so that each new element in column i above row i is zero.*/ + + /* Temporary pointers for input and destination matrices */ + pInT1 = pIn; + pInT2 = pOut; + + for (i = 0u; i < numRows; i++) + { + /* Check for the pivot element */ + if(i == l) + { + /* If the processing element is the pivot element, + only the columns to the right are to be processed */ + pInT1 += numCols - l; + pInT2 += numCols; + } + else + { + /* Element of the reference row */ + in = *pInT1; + + /* Working pointers for input and destination pivot rows */ + pPRT_in = pPivotRowIn; + pPRT_pDst = pPivotRowDst; + + /* Loop over the number of columns to the right of the pivot element, + to replace the elements in the input matrix */ + for (j = 0u; j < (numCols - l); j++) + { + /* Replace the element by the sum of that row + and a multiple of the reference row */ + *pInT1++ = *pInT1 - (in * *pPRT_in++); + } + /* Loop over the number of columns to + replace the elements in the destination matrix */ + for (j = 0u; j < numCols; j++) + { + /* Replace the element by the sum of that row + and a multiple of the reference row */ + *pInT2++ = *pInT2 - (in * *pPRT_pDst++); + } + + } + /* Increment the temporary input pointer */ + pInT1 = pInT1 + l; + } + /* Increment the input pointer */ + pIn++; + + /* Decrement the loop counter */ + loopCnt--; + /* Increment the index modifier */ + l++; + } + + +#endif /* #ifndef ARM_MATH_CM0 */ + + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + + if((flag != 1u) && (in == 0.0f)) + { + status = ARM_MATH_SINGULAR; + } + } + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixInv group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_f32.c new file mode 100644 index 000000000..c91603249 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_f32.c @@ -0,0 +1,270 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_mult_f32.c +* +* Description: Floating-point matrix multiplication. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @defgroup MatrixMult Matrix Multiplication + * + * Multiplies two matrices. + * + * \image html MatrixMultiplication.gif "Multiplication of two 3 x 3 matrices" + + * Matrix multiplication is only defined if the number of columns of the + * first matrix equals the number of rows of the second matrix. + * Multiplying an M x N matrix with an N x P matrix results + * in an M x P matrix. + * When matrix size checking is enabled, the functions check: (1) that the inner dimensions of + * pSrcA and pSrcB are equal; and (2) that the size of the output + * matrix equals the outer dimensions of pSrcA and pSrcB. + */ + + +/** + * @addtogroup MatrixMult + * @{ + */ + +/** + * @brief Floating-point matrix multiplication. + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + +arm_status arm_mat_mult_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst) +{ + float32_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ + float32_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ + float32_t *pInA = pSrcA->pData; /* input data matrix pointer A */ + float32_t *pOut = pDst->pData; /* output data matrix pointer */ + float32_t *px; /* Temporary output data matrix pointer */ + float32_t sum; /* Accumulator */ + uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ + uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ + uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + uint16_t col, i = 0u, j, row = numRowsA, colCnt; /* loop counters */ + arm_status status; /* status of matrix multiplication */ + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if((pSrcA->numCols != pSrcB->numRows) || + (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) + { + + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ + /* row loop */ + do + { + /* Output pointer is set to starting address of the row being processed */ + px = pOut + i; + + /* For every row wise process, the column loop counter is to be initiated */ + col = numColsB; + + /* For every row wise process, the pIn2 pointer is set + ** to the starting address of the pSrcB data */ + pIn2 = pSrcB->pData; + + j = 0u; + + /* column loop */ + do + { + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0.0f; + + /* Initiate the pointer pIn1 to point to the starting address of the column being processed */ + pIn1 = pInA; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + colCnt = numColsA >> 2; + + /* matrix multiplication */ + while(colCnt > 0u) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + sum += *pIn1++ * (*pIn2); + pIn2 += numColsB; + sum += *pIn1++ * (*pIn2); + pIn2 += numColsB; + sum += *pIn1++ * (*pIn2); + pIn2 += numColsB; + sum += *pIn1++ * (*pIn2); + pIn2 += numColsB; + + /* Decrement the loop count */ + colCnt--; + } + + /* If the columns of pSrcA is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + colCnt = numColsA % 0x4u; + + while(colCnt > 0u) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + sum += *pIn1++ * (*pIn2); + pIn2 += numColsB; + + /* Decrement the loop counter */ + colCnt--; + } + + /* Store the result in the destination buffer */ + *px++ = sum; + + /* Update the pointer pIn2 to point to the starting address of the next column */ + j++; + pIn2 = pSrcB->pData + j; + + /* Decrement the column loop counter */ + col--; + + } while(col > 0u); + +#else + + /* Run the below code for Cortex-M0 */ + + float32_t *pInB = pSrcB->pData; /* input data matrix pointer B */ + uint16_t col, i = 0u, row = numRowsA, colCnt; /* loop counters */ + arm_status status; /* status of matrix multiplication */ + +#ifdef ARM_MATH_MATRIX_CHECK + + /* Check for matrix mismatch condition */ + if((pSrcA->numCols != pSrcB->numRows) || + (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) + { + + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* The following loop performs the dot-product of each row in pInA with each column in pInB */ + /* row loop */ + do + { + /* Output pointer is set to starting address of the row being processed */ + px = pOut + i; + + /* For every row wise process, the column loop counter is to be initiated */ + col = numColsB; + + /* For every row wise process, the pIn2 pointer is set + ** to the starting address of the pSrcB data */ + pIn2 = pSrcB->pData; + + /* column loop */ + do + { + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0.0f; + + /* Initialize the pointer pIn1 to point to the starting address of the row being processed */ + pIn1 = pInA; + + /* Matrix A columns number of MAC operations are to be performed */ + colCnt = numColsA; + + while(colCnt > 0u) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + sum += *pIn1++ * (*pIn2); + pIn2 += numColsB; + + /* Decrement the loop counter */ + colCnt--; + } + + /* Store the result in the destination buffer */ + *px++ = sum; + + /* Decrement the column loop counter */ + col--; + + /* Update the pointer pIn2 to point to the starting address of the next column */ + pIn2 = pInB + (numColsB - col); + + } while(col > 0u); + +#endif /* #ifndef ARM_MATH_CM0 */ + + /* Update the pointer pInA to point to the starting address of the next row */ + i = i + numColsB; + pInA = pInA + numColsA; + + /* Decrement the row loop counter */ + row--; + + } while(row > 0u); + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixMult group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q15.c new file mode 100644 index 000000000..e97c88844 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q15.c @@ -0,0 +1,284 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_mult_fast_q15.c +* +* Description: Q15 matrix multiplication (fast variant) +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixMult + * @{ + */ + + +/** + * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @param[in] *pState points to the array for storing intermediate results + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The difference between the function arm_mat_mult_q15() and this fast variant is that + * the fast variant use a 32-bit rather than a 64-bit accumulator. + * The result of each 1.15 x 1.15 multiplication is truncated to + * 2.30 format. These intermediate results are accumulated in a 32-bit register in 2.30 + * format. Finally, the accumulator is saturated and converted to a 1.15 result. + * + * \par + * The fast version has the same overflow behavior as the standard version but provides + * less precision since it discards the low 16 bits of each multiplication result. + * In order to avoid overflows completely the input signals must be scaled down. + * Scale down one of the input matrices by log2(numColsA) bits to + * avoid overflows, as a total of numColsA additions are computed internally for each + * output element. + * + * \par + * See arm_mat_mult_q15() for a slower implementation of this function + * which uses 64-bit accumulation to provide higher precision. + */ + +arm_status arm_mat_mult_fast_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pState) +{ + q31_t sum; /* accumulator */ + q31_t in; /* Temporary variable to hold the input value */ + q15_t *pSrcBT = pState; /* input data matrix pointer for transpose */ + q15_t *pInA = pSrcA->pData; /* input data matrix pointer A of Q15 type */ + q15_t *pInB = pSrcB->pData; /* input data matrix pointer B of Q15 type */ +// q15_t *pDst = pDst->pData; /* output data matrix pointer */ + q15_t *px; /* Temporary output data matrix pointer */ + uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ + uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ + uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ + uint16_t numRowsB = pSrcB->numRows; /* number of rows of input matrix A */ + uint16_t col, i = 0u, row = numRowsB, colCnt; /* loop counters */ + arm_status status; /* status of matrix multiplication */ + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + + if((pSrcA->numCols != pSrcB->numRows) || + (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Matrix transpose */ + do + { + /* Apply loop unrolling and exchange the columns with row elements */ + col = numColsB >> 2; + + /* The pointer px is set to starting address of the column being processed */ + px = pSrcBT + i; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(col > 0u) + { + /* Read two elements from the row */ + in = *__SIMD32(pInB)++; + + /* Unpack and store one element in the destination */ +#ifndef ARM_MATH_BIG_ENDIAN + + *px = (q15_t) in; + +#else + + *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Unpack and store the second element in the destination */ +#ifndef ARM_MATH_BIG_ENDIAN + + *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#else + + *px = (q15_t) in; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Read two elements from the row */ + in = *__SIMD32(pInB)++; + + /* Unpack and store one element in the destination */ +#ifndef ARM_MATH_BIG_ENDIAN + + *px = (q15_t) in; + +#else + + *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Unpack and store the second element in the destination */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#else + + *px = (q15_t) in; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Decrement the column loop counter */ + col--; + } + + /* If the columns of pSrcB is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + col = numColsB % 0x4u; + + while(col > 0u) + { + /* Read and store the input element in the destination */ + *px = *pInB++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Decrement the column loop counter */ + col--; + } + + i++; + + /* Decrement the row loop counter */ + row--; + + } while(row > 0u); + + /* Reset the variables for the usage in the following multiplication process */ + row = numRowsA; + i = 0u; + px = pDst->pData; + + /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ + /* row loop */ + do + { + /* For every row wise process, the column loop counter is to be initiated */ + col = numColsB; + + /* For every row wise process, the pIn2 pointer is set + ** to the starting address of the transposed pSrcB data */ + pInB = pSrcBT; + + /* column loop */ + do + { + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0; + + /* Apply loop unrolling and compute 2 MACs simultaneously. */ + colCnt = numColsA >> 1; + + /* Initiate the pointer pIn1 to point to the starting address of the column being processed */ + pInA = pSrcA->pData + i; + + /* matrix multiplication */ + while(colCnt > 0u) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + sum = __SMLAD(*__SIMD32(pInA)++, *__SIMD32(pInB)++, sum); + + /* Decrement the loop counter */ + colCnt--; + } + + /* process odd column samples */ + if((numColsA & 0x1u) > 0u) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + sum += ((q31_t) * pInA * (*pInB++)); + } + + /* Saturate and store the result in the destination buffer */ + *px = (q15_t) (sum >> 15); + px++; + + /* Decrement the column loop counter */ + col--; + + } while(col > 0u); + + i = i + numColsA; + + /* Decrement the row loop counter */ + row--; + + } while(row > 0u); + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixMult group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q31.c new file mode 100644 index 000000000..8a6ff617e --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q31.c @@ -0,0 +1,202 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_mult_fast_q31.c +* +* Description: Q31 matrix multiplication (fast variant). +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixMult + * @{ + */ + +/** + * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The difference between the function arm_mat_mult_q31() and this fast variant is that + * the fast variant use a 32-bit rather than a 64-bit accumulator. + * The result of each 1.31 x 1.31 multiplication is truncated to + * 2.30 format. These intermediate results are accumulated in a 32-bit register in 2.30 + * format. Finally, the accumulator is saturated and converted to a 1.31 result. + * + * \par + * The fast version has the same overflow behavior as the standard version but provides + * less precision since it discards the low 32 bits of each multiplication result. + * In order to avoid overflows completely the input signals must be scaled down. + * Scale down one of the input matrices by log2(numColsA) bits to + * avoid overflows, as a total of numColsA additions are computed internally for each + * output element. + * + * \par + * See arm_mat_mult_q31() for a slower implementation of this function + * which uses 64-bit accumulation to provide higher precision. + */ + +arm_status arm_mat_mult_fast_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst) +{ + q31_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ + q31_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ + q31_t *pInA = pSrcA->pData; /* input data matrix pointer A */ +// q31_t *pSrcB = pSrcB->pData; /* input data matrix pointer B */ + q31_t *pOut = pDst->pData; /* output data matrix pointer */ + q31_t *px; /* Temporary output data matrix pointer */ + q31_t sum; /* Accumulator */ + uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ + uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ + uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ + uint16_t col, i = 0u, j, row = numRowsA, colCnt; /* loop counters */ + arm_status status; /* status of matrix multiplication */ + + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if((pSrcA->numCols != pSrcB->numRows) || + (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ + /* row loop */ + do + { + /* Output pointer is set to starting address of the row being processed */ + px = pOut + i; + + /* For every row wise process, the column loop counter is to be initiated */ + col = numColsB; + + /* For every row wise process, the pIn2 pointer is set + ** to the starting address of the pSrcB data */ + pIn2 = pSrcB->pData; + + j = 0u; + + /* column loop */ + do + { + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0; + + /* Initiate the pointer pIn1 to point to the starting address of pInA */ + pIn1 = pInA; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + colCnt = numColsA >> 2; + + + /* matrix multiplication */ + while(colCnt > 0u) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + /* Perform the multiply-accumulates */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * pIn1++ * (*pIn2))) >> 32); + pIn2 += numColsB; + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * pIn1++ * (*pIn2))) >> 32); + pIn2 += numColsB; + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * pIn1++ * (*pIn2))) >> 32); + pIn2 += numColsB; + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * pIn1++ * (*pIn2))) >> 32); + pIn2 += numColsB; + + /* Decrement the loop counter */ + colCnt--; + } + + /* If the columns of pSrcA is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + colCnt = numColsA % 0x4u; + + while(colCnt > 0u) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + /* Perform the multiply-accumulates */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * pIn1++ * (*pIn2))) >> 32); + pIn2 += numColsB; + + /* Decrement the loop counter */ + colCnt--; + } + + /* Convert the result from 2.30 to 1.31 format and store in destination buffer */ + *px++ = sum << 1; + + /* Update the pointer pIn2 to point to the starting address of the next column */ + j++; + pIn2 = pSrcB->pData + j; + + /* Decrement the column loop counter */ + col--; + + } while(col > 0u); + + /* Update the pointer pInA to point to the starting address of the next row */ + i = i + numColsB; + pInA = pInA + numColsA; + + /* Decrement the row loop counter */ + row--; + + } while(row > 0u); + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixMult group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q15.c new file mode 100644 index 000000000..224d81519 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q15.c @@ -0,0 +1,378 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_mult_q15.c +* +* Description: Q15 matrix multiplication. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixMult + * @{ + */ + + +/** + * @brief Q15 matrix multiplication + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @param[in] *pState points to the array for storing intermediate results + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 64-bit internal accumulator. The inputs to the + * multiplications are in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate + * results are accumulated in a 64-bit accumulator in 34.30 format. This approach + * provides 33 guard bits and there is no risk of overflow. The 34.30 result is then + * truncated to 34.15 format by discarding the low 15 bits and then saturated to + * 1.15 format. + * + * \par + * Refer to arm_mat_mult_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. + * + */ + +arm_status arm_mat_mult_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pState) +{ + q63_t sum; /* accumulator */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t in; /* Temporary variable to hold the input value */ + q15_t *pSrcBT = pState; /* input data matrix pointer for transpose */ + q15_t *pInA = pSrcA->pData; /* input data matrix pointer A of Q15 type */ + q15_t *pInB = pSrcB->pData; /* input data matrix pointer B of Q15 type */ + q15_t *px; /* Temporary output data matrix pointer */ + uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ + uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ + uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ + uint16_t numRowsB = pSrcB->numRows; /* number of rows of input matrix A */ + uint16_t col, i = 0u, row = numRowsB, colCnt; /* loop counters */ + arm_status status; /* status of matrix multiplication */ + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + + if((pSrcA->numCols != pSrcB->numRows) || + (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Matrix transpose */ + do + { + /* Apply loop unrolling and exchange the columns with row elements */ + col = numColsB >> 2; + + /* The pointer px is set to starting address of the column being processed */ + px = pSrcBT + i; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(col > 0u) + { + /* Read two elements from the row */ + in = *__SIMD32(pInB)++; + + /* Unpack and store one element in the destination */ +#ifndef ARM_MATH_BIG_ENDIAN + + *px = (q15_t) in; + +#else + + *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Unpack and store the second element in the destination */ +#ifndef ARM_MATH_BIG_ENDIAN + + *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#else + + *px = (q15_t) in; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Read two elements from the row */ + in = *__SIMD32(pInB)++; + + /* Unpack and store one element in the destination */ +#ifndef ARM_MATH_BIG_ENDIAN + + *px = (q15_t) in; + +#else + + *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Unpack and store the second element in the destination */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#else + + *px = (q15_t) in; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Decrement the column loop counter */ + col--; + } + + /* If the columns of pSrcB is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + col = numColsB % 0x4u; + + while(col > 0u) + { + /* Read and store the input element in the destination */ + *px = *pInB++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Decrement the column loop counter */ + col--; + } + + i++; + + /* Decrement the row loop counter */ + row--; + + } while(row > 0u); + + /* Reset the variables for the usage in the following multiplication process */ + row = numRowsA; + i = 0u; + px = pDst->pData; + + /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ + /* row loop */ + do + { + /* For every row wise process, the column loop counter is to be initiated */ + col = numColsB; + + /* For every row wise process, the pIn2 pointer is set + ** to the starting address of the transposed pSrcB data */ + pInB = pSrcBT; + + /* column loop */ + do + { + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0; + + /* Apply loop unrolling and compute 2 MACs simultaneously. */ + colCnt = numColsA >> 1; + + /* Initiate the pointer pIn1 to point to the starting address of the column being processed */ + pInA = pSrcA->pData + i; + + /* matrix multiplication */ + while(colCnt > 0u) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + sum = __SMLALD(*__SIMD32(pInA)++, *__SIMD32(pInB)++, sum); + + /* Decrement the loop counter */ + colCnt--; + } + + /* process odd column samples */ + if((numColsA & 0x1u) > 0u) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + sum += ((q31_t) * pInA * (*pInB++)); + } + + /* Saturate and store the result in the destination buffer */ + *px = (q15_t) (__SSAT((sum >> 15), 16)); + px++; + + /* Decrement the column loop counter */ + col--; + + } while(col > 0u); + + i = i + numColsA; + + /* Decrement the row loop counter */ + row--; + + } while(row > 0u); + +#else + + /* Run the below code for Cortex-M0 */ + + q15_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ + q15_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ + q15_t *pInA = pSrcA->pData; /* input data matrix pointer A of Q15 type */ + q15_t *pInB = pSrcB->pData; /* input data matrix pointer B of Q15 type */ + q15_t *pOut = pDst->pData; /* output data matrix pointer */ + q15_t *px; /* Temporary output data matrix pointer */ + uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ + uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ + uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ + uint16_t col, i = 0u, row = numRowsA, colCnt; /* loop counters */ + arm_status status; /* status of matrix multiplication */ + +#ifdef ARM_MATH_MATRIX_CHECK + + /* Check for matrix mismatch condition */ + if((pSrcA->numCols != pSrcB->numRows) || + (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ + /* row loop */ + do + { + /* Output pointer is set to starting address of the row being processed */ + px = pOut + i; + + /* For every row wise process, the column loop counter is to be initiated */ + col = numColsB; + + /* For every row wise process, the pIn2 pointer is set + ** to the starting address of the pSrcB data */ + pIn2 = pSrcB->pData; + + /* column loop */ + do + { + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0; + + /* Initiate the pointer pIn1 to point to the starting address of pSrcA */ + pIn1 = pInA; + + /* Matrix A columns number of MAC operations are to be performed */ + colCnt = numColsA; + + /* matrix multiplication */ + while(colCnt > 0u) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + /* Perform the multiply-accumulates */ + sum += (q31_t) * pIn1++ * *pIn2; + pIn2 += numColsB; + + /* Decrement the loop counter */ + colCnt--; + } + + /* Convert the result from 34.30 to 1.15 format and store the saturated value in destination buffer */ + /* Saturate and store the result in the destination buffer */ + *px++ = (q15_t) __SSAT((sum >> 15), 16); + + /* Decrement the column loop counter */ + col--; + + /* Update the pointer pIn2 to point to the starting address of the next column */ + pIn2 = pInB + (numColsB - col); + + } while(col > 0u); + + /* Update the pointer pSrcA to point to the starting address of the next row */ + i = i + numColsB; + pInA = pInA + numColsA; + + /* Decrement the row loop counter */ + row--; + + } while(row > 0u); + +#endif /* #ifndef ARM_MATH_CM0 */ + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixMult group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q31.c new file mode 100644 index 000000000..51999ebbc --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q31.c @@ -0,0 +1,278 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_mult_q31.c +* +* Description: Q31 matrix multiplication. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixMult + * @{ + */ + +/** + * @brief Q31 matrix multiplication + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate + * multiplication results but provides only a single guard bit. There is no saturation + * on intermediate additions. Thus, if the accumulator overflows it wraps around and + * distorts the result. The input signals should be scaled down to avoid intermediate + * overflows. The input is thus scaled down by log2(numColsA) bits + * to avoid overflows, as a total of numColsA additions are performed internally. + * The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result. + * + * \par + * See arm_mat_mult_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4. + * + */ + +arm_status arm_mat_mult_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst) +{ + q31_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ + q31_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ + q31_t *pInA = pSrcA->pData; /* input data matrix pointer A */ + q31_t *pOut = pDst->pData; /* output data matrix pointer */ + q31_t *px; /* Temporary output data matrix pointer */ + q63_t sum; /* Accumulator */ + uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ + uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ + uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + uint16_t col, i = 0u, j, row = numRowsA, colCnt; /* loop counters */ + arm_status status; /* status of matrix multiplication */ + + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if((pSrcA->numCols != pSrcB->numRows) || + (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ + /* row loop */ + do + { + /* Output pointer is set to starting address of the row being processed */ + px = pOut + i; + + /* For every row wise process, the column loop counter is to be initiated */ + col = numColsB; + + /* For every row wise process, the pIn2 pointer is set + ** to the starting address of the pSrcB data */ + pIn2 = pSrcB->pData; + + j = 0u; + + /* column loop */ + do + { + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0; + + /* Initiate the pointer pIn1 to point to the starting address of pInA */ + pIn1 = pInA; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + colCnt = numColsA >> 2; + + + /* matrix multiplication */ + while(colCnt > 0u) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + /* Perform the multiply-accumulates */ + sum += (q63_t) * pIn1++ * *pIn2; + pIn2 += numColsB; + + sum += (q63_t) * pIn1++ * *pIn2; + pIn2 += numColsB; + + sum += (q63_t) * pIn1++ * *pIn2; + pIn2 += numColsB; + + sum += (q63_t) * pIn1++ * *pIn2; + pIn2 += numColsB; + + /* Decrement the loop counter */ + colCnt--; + } + + /* If the columns of pSrcA is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + colCnt = numColsA % 0x4u; + + while(colCnt > 0u) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + /* Perform the multiply-accumulates */ + sum += (q63_t) * pIn1++ * *pIn2; + pIn2 += numColsB; + + /* Decrement the loop counter */ + colCnt--; + } + + /* Convert the result from 2.62 to 1.31 format and store in destination buffer */ + *px++ = (q31_t) (sum >> 31); + + /* Update the pointer pIn2 to point to the starting address of the next column */ + j++; + pIn2 = (pSrcB->pData) + j; + + /* Decrement the column loop counter */ + col--; + + } while(col > 0u); + +#else + + /* Run the below code for Cortex-M0 */ + + q31_t *pInB = pSrcB->pData; /* input data matrix pointer B */ + uint16_t col, i = 0u, row = numRowsA, colCnt; /* loop counters */ + arm_status status; /* status of matrix multiplication */ + + +#ifdef ARM_MATH_MATRIX_CHECK + + /* Check for matrix mismatch condition */ + if((pSrcA->numCols != pSrcB->numRows) || + (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ + /* row loop */ + do + { + /* Output pointer is set to starting address of the row being processed */ + px = pOut + i; + + /* For every row wise process, the column loop counter is to be initiated */ + col = numColsB; + + /* For every row wise process, the pIn2 pointer is set + ** to the starting address of the pSrcB data */ + pIn2 = pSrcB->pData; + + /* column loop */ + do + { + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0; + + /* Initiate the pointer pIn1 to point to the starting address of pInA */ + pIn1 = pInA; + + /* Matrix A columns number of MAC operations are to be performed */ + colCnt = numColsA; + + /* matrix multiplication */ + while(colCnt > 0u) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + /* Perform the multiply-accumulates */ + sum += (q63_t) * pIn1++ * *pIn2; + pIn2 += numColsB; + + /* Decrement the loop counter */ + colCnt--; + } + + /* Convert the result from 2.62 to 1.31 format and store in destination buffer */ + *px++ = (q31_t) (sum >> 31); + + /* Decrement the column loop counter */ + col--; + + /* Update the pointer pIn2 to point to the starting address of the next column */ + pIn2 = pInB + (numColsB - col); + + } while(col > 0u); + +#endif + + /* Update the pointer pInA to point to the starting address of the next row */ + i = i + numColsB; + pInA = pInA + numColsA; + + /* Decrement the row loop counter */ + row--; + + } while(row > 0u); + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixMult group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_f32.c new file mode 100644 index 000000000..39d1ff9cf --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_f32.c @@ -0,0 +1,156 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_scale_f32.c +* +* Description: Multiplies a floating-point matrix by a scalar. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @defgroup MatrixScale Matrix Scale + * + * Multiplies a matrix by a scalar. This is accomplished by multiplying each element in the + * matrix by the scalar. For example: + * \image html MatrixScale.gif "Matrix Scaling of a 3 x 3 matrix" + * + * The function checks to make sure that the input and output matrices are of the same size. + * + * In the fixed-point Q15 and Q31 functions, scale is represented by + * a fractional multiplication scaleFract and an arithmetic shift shift. + * The shift allows the gain of the scaling operation to exceed 1.0. + * The overall scale factor applied to the fixed-point data is + *
   
+ *     scale = scaleFract * 2^shift.   
+ * 
+ */ + +/** + * @addtogroup MatrixScale + * @{ + */ + +/** + * @brief Floating-point matrix scaling. + * @param[in] *pSrc points to input matrix structure + * @param[in] scale scale factor to be applied + * @param[out] *pDst points to output matrix structure + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + * + */ + +arm_status arm_mat_scale_f32( + const arm_matrix_instance_f32 * pSrc, + float32_t scale, + arm_matrix_instance_f32 * pDst) +{ + float32_t *pIn = pSrc->pData; /* input data matrix pointer */ + float32_t *pOut = pDst->pData; /* output data matrix pointer */ + uint32_t numSamples; /* total number of elements in the matrix */ + uint32_t blkCnt; /* loop counters */ + arm_status status; /* status of matrix scaling */ + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if((pSrc->numRows != pDst->numRows) || (pSrc->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrc->numRows * pSrc->numCols; + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Loop Unrolling */ + blkCnt = numSamples >> 2; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) * scale */ + /* Scaling and results are stored in the destination buffer. */ + *pOut++ = (*pIn++) * scale; + *pOut++ = (*pIn++) * scale; + *pOut++ = (*pIn++) * scale; + *pOut++ = (*pIn++) * scale; + + /* Decrement the numSamples loop counter */ + blkCnt--; + } + + /* If the numSamples is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = numSamples % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = numSamples; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) * scale */ + /* The results are stored in the destination buffer. */ + *pOut++ = (*pIn++) * scale; + + /* Decrement the loop counter */ + blkCnt--; + } + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixScale group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q15.c new file mode 100644 index 000000000..aec990412 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q15.c @@ -0,0 +1,150 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_scale_q15.c +* +* Description: Multiplies a Q15 matrix by a scalar. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixScale + * @{ + */ + +/** + * @brief Q15 matrix scaling. + * @param[in] *pSrc points to input matrix + * @param[in] scaleFract fractional portion of the scale factor + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * @details + * Scaling and Overflow Behavior: + * \par + * The input data *pSrc and scaleFract are in 1.15 format. + * These are multiplied to yield a 2.30 intermediate result and this is shifted with saturation to 1.15 format. + */ + +arm_status arm_mat_scale_q15( + const arm_matrix_instance_q15 * pSrc, + q15_t scaleFract, + int32_t shift, + arm_matrix_instance_q15 * pDst) +{ + q15_t *pIn = pSrc->pData; /* input data matrix pointer */ + q15_t *pOut = pDst->pData; /* output data matrix pointer */ + uint32_t numSamples; /* total number of elements in the matrix */ + int32_t totShift = 15 - shift; /* total shift to apply after scaling */ + uint32_t blkCnt; /* loop counters */ + arm_status status; /* status of matrix scaling */ + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch */ + if((pSrc->numRows != pDst->numRows) || (pSrc->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrc->numRows * pSrc->numCols; + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + /* Loop Unrolling */ + blkCnt = numSamples >> 2; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) * k */ + /* Scale, saturate and then store the results in the destination buffer. */ + *pOut++ = + (q15_t) (__SSAT(((q31_t) (*pIn++) * scaleFract) >> totShift, 16)); + *pOut++ = + (q15_t) (__SSAT(((q31_t) (*pIn++) * scaleFract) >> totShift, 16)); + *pOut++ = + (q15_t) (__SSAT(((q31_t) (*pIn++) * scaleFract) >> totShift, 16)); + *pOut++ = + (q15_t) (__SSAT(((q31_t) (*pIn++) * scaleFract) >> totShift, 16)); + + /* Decrement the numSamples loop counter */ + blkCnt--; + } + + /* If the numSamples is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = numSamples % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = numSamples; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) * k */ + /* Scale, saturate and then store the results in the destination buffer. */ + *pOut++ = + (q15_t) (__SSAT(((q31_t) (*pIn++) * scaleFract) >> totShift, 16)); + + /* Decrement the numSamples loop counter */ + blkCnt--; + } + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixScale group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q31.c new file mode 100644 index 000000000..4b894af1e --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q31.c @@ -0,0 +1,152 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_scale_q31.c +* +* Description: Multiplies a Q31 matrix by a scalar. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixScale + * @{ + */ + +/** + * @brief Q31 matrix scaling. + * @param[in] *pSrc points to input matrix + * @param[in] scaleFract fractional portion of the scale factor + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * @details + * Scaling and Overflow Behavior: + * \par + * The input data *pSrc and scaleFract are in 1.31 format. + * These are multiplied to yield a 2.62 intermediate result and this is shifted with saturation to 1.31 format. + */ + +arm_status arm_mat_scale_q31( + const arm_matrix_instance_q31 * pSrc, + q31_t scaleFract, + int32_t shift, + arm_matrix_instance_q31 * pDst) +{ + q31_t *pIn = pSrc->pData; /* input data matrix pointer */ + q31_t *pOut = pDst->pData; /* output data matrix pointer */ + q63_t out; /* temporary variable to hold output value */ + uint32_t numSamples; /* total number of elements in the matrix */ + int32_t totShift = 31 - shift; /* shift to apply after scaling */ + uint32_t blkCnt; /* loop counters */ + arm_status status; /* status of matrix scaling */ + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch */ + if((pSrc->numRows != pDst->numRows) || (pSrc->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrc->numRows * pSrc->numCols; + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Loop Unrolling */ + blkCnt = numSamples >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) * k */ + /* Scale, saturate and then store the results in the destination buffer. */ + out = ((q63_t) * pIn++ * scaleFract) >> totShift; + *pOut++ = clip_q63_to_q31(out); + out = ((q63_t) * pIn++ * scaleFract) >> totShift; + *pOut++ = clip_q63_to_q31(out); + out = ((q63_t) * pIn++ * scaleFract) >> totShift; + *pOut++ = clip_q63_to_q31(out); + out = ((q63_t) * pIn++ * scaleFract) >> totShift; + *pOut++ = clip_q63_to_q31(out); + + /* Decrement the numSamples loop counter */ + blkCnt--; + } + + /* If the numSamples is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = numSamples % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = numSamples; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) * k */ + /* Scale, saturate and then store the results in the destination buffer. */ + out = ((q63_t) * pIn++ * scaleFract) >> totShift; + *pOut++ = clip_q63_to_q31(out); + + /* Decrement the numSamples loop counter */ + blkCnt--; + } + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixScale group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_f32.c new file mode 100644 index 000000000..d2cce6820 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_f32.c @@ -0,0 +1,151 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_sub_f32.c +* +* Description: Floating-point matrix subtraction. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @defgroup MatrixSub Matrix Subtraction + * + * Subtract two matrices. + * \image html MatrixSubtraction.gif "Subraction of two 3 x 3 matrices" + * + * The functions check to make sure that + * pSrcA, pSrcB, and pDst have the same + * number of rows and columns. + */ + +/** + * @addtogroup MatrixSub + * @{ + */ + +/** + * @brief Floating-point matrix subtraction + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + +arm_status arm_mat_sub_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst) +{ + float32_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ + float32_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ + float32_t *pOut = pDst->pData; /* output data matrix pointer */ + uint32_t numSamples; /* total number of elements in the matrix */ + uint32_t blkCnt; /* loop counters */ + arm_status status; /* status of matrix subtraction */ + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if((pSrcA->numRows != pSrcB->numRows) || + (pSrcA->numCols != pSrcB->numCols) || + (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Loop Unrolling */ + blkCnt = numSamples >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) - B(m,n) */ + /* Subtract and then store the results in the destination buffer. */ + *pOut++ = (*pIn1++) - (*pIn2++); + *pOut++ = (*pIn1++) - (*pIn2++); + *pOut++ = (*pIn1++) - (*pIn2++); + *pOut++ = (*pIn1++) - (*pIn2++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the numSamples is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = numSamples % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = numSamples; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) - B(m,n) */ + /* Subtract and then store the results in the destination buffer. */ + *pOut++ = (*pIn1++) - (*pIn2++); + + /* Decrement the loop counter */ + blkCnt--; + } + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixSub group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q15.c new file mode 100644 index 000000000..5f6dd58d3 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q15.c @@ -0,0 +1,155 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_sub_q15.c +* +* Description: Q15 Matrix subtraction +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixSub + * @{ + */ + +/** + * @brief Q15 matrix subtraction. + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. + */ + +arm_status arm_mat_sub_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst) +{ + q15_t *pInA = pSrcA->pData; /* input data matrix pointer A */ + q15_t *pInB = pSrcB->pData; /* input data matrix pointer B */ + q15_t *pOut = pDst->pData; /* output data matrix pointer */ + uint32_t numSamples; /* total number of elements in the matrix */ + uint32_t blkCnt; /* loop counters */ + arm_status status; /* status of matrix subtraction */ + + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if((pSrcA->numRows != pSrcB->numRows) || + (pSrcA->numCols != pSrcB->numCols) || + (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Apply loop unrolling */ + blkCnt = numSamples >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) - B(m,n) */ + /* Subtract, Saturate and then store the results in the destination buffer. */ + *__SIMD32(pOut)++ = __QSUB16(*__SIMD32(pInA)++, *__SIMD32(pInB)++); + *__SIMD32(pOut)++ = __QSUB16(*__SIMD32(pInA)++, *__SIMD32(pInB)++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = numSamples % 0x4u; + + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) - B(m,n) */ + /* Subtract and then store the results in the destination buffer. */ + *pOut++ = (q15_t) __QSUB16(*pInA++, *pInB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = numSamples; + + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) - B(m,n) */ + /* Subtract and then store the results in the destination buffer. */ + *pOut++ = (q15_t) __SSAT(((q31_t) * pInA++ - *pInB++), 16); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixSub group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q31.c new file mode 100644 index 000000000..3de675c5f --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q31.c @@ -0,0 +1,158 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_sub_q31.c +* +* Description: Q31 matrix subtraction +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixSub + * @{ + */ + +/** + * @brief Q31 matrix subtraction. + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated. + */ + + +arm_status arm_mat_sub_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst) +{ + q31_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ + q31_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ + q31_t *pOut = pDst->pData; /* output data matrix pointer */ + uint32_t numSamples; /* total number of elements in the matrix */ + uint32_t blkCnt; /* loop counters */ + arm_status status; /* status of matrix subtraction */ + + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if((pSrcA->numRows != pSrcB->numRows) || + (pSrcA->numCols != pSrcB->numCols) || + (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Loop Unrolling */ + blkCnt = numSamples >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) - B(m,n) */ + /* Subtract, saturate and then store the results in the destination buffer. */ + *pOut++ = __QSUB(*pIn1++, *pIn2++); + *pOut++ = __QSUB(*pIn1++, *pIn2++); + *pOut++ = __QSUB(*pIn1++, *pIn2++); + *pOut++ = __QSUB(*pIn1++, *pIn2++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the numSamples is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = numSamples % 0x4u; + + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) - B(m,n) */ + /* Subtract, saturate and then store the results in the destination buffer. */ + *pOut++ = __QSUB(*pIn1++, *pIn2++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = numSamples; + + while(blkCnt > 0u) + { + /* C(m,n) = A(m,n) - B(m,n) */ + /* Subtract, saturate and then store the results in the destination buffer. */ + *pOut++ = clip_q63_to_q31(((q63_t) (*pIn1++)) - (*pIn2++)); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixSub group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_f32.c new file mode 100644 index 000000000..876fab68b --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_f32.c @@ -0,0 +1,213 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_trans_f32.c +* +* Description: Floating-point matrix transpose. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +/** + * @defgroup MatrixTrans Matrix Transpose + * + * Tranposes a matrix. + * Transposing an M x N matrix flips it around the center diagonal and results in an N x M matrix. + * \image html MatrixTranspose.gif "Transpose of a 3 x 3 matrix" + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixTrans + * @{ + */ + +/** + * @brief Floating-point matrix transpose. + * @param[in] *pSrc points to the input matrix + * @param[out] *pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + +arm_status arm_mat_trans_f32( + const arm_matrix_instance_f32 * pSrc, + arm_matrix_instance_f32 * pDst) +{ + float32_t *pIn = pSrc->pData; /* input data matrix pointer */ + float32_t *pOut = pDst->pData; /* output data matrix pointer */ + float32_t *px; /* Temporary output data matrix pointer */ + uint16_t nRows = pSrc->numRows; /* number of rows */ + uint16_t nColumns = pSrc->numCols; /* number of columns */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + uint16_t blkCnt, i = 0u, row = nRows; /* loop counters */ + arm_status status; /* status of matrix transpose */ + + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Matrix transpose by exchanging the rows with columns */ + /* row loop */ + do + { + /* Loop Unrolling */ + blkCnt = nColumns >> 2; + + /* The pointer px is set to starting address of the column being processed */ + px = pOut + i; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) /* column loop */ + { + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Decrement the column loop counter */ + blkCnt--; + } + + /* Perform matrix transpose for last 3 samples here. */ + blkCnt = nColumns % 0x4u; + + while(blkCnt > 0u) + { + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Decrement the column loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + uint16_t col, i = 0u, row = nRows; /* loop counters */ + arm_status status; /* status of matrix transpose */ + + +#ifdef ARM_MATH_MATRIX_CHECK + + /* Check for matrix mismatch condition */ + if((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Matrix transpose by exchanging the rows with columns */ + /* row loop */ + do + { + /* The pointer px is set to starting address of the column being processed */ + px = pOut + i; + + /* Initialize column loop counter */ + col = nColumns; + + while(col > 0u) + { + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Decrement the column loop counter */ + col--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + i++; + + /* Decrement the row loop counter */ + row--; + + } while(row > 0u); /* row loop end */ + + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixTrans group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q15.c new file mode 100644 index 000000000..44cb0f351 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q15.c @@ -0,0 +1,234 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_trans_q15.c +* +* Description: Q15 matrix transpose. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixTrans + * @{ + */ + +/* + * @brief Q15 matrix transpose. + * @param[in] *pSrc points to the input matrix + * @param[out] *pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + +arm_status arm_mat_trans_q15( + const arm_matrix_instance_q15 * pSrc, + arm_matrix_instance_q15 * pDst) +{ + q15_t *pSrcA = pSrc->pData; /* input data matrix pointer */ + q15_t *pOut = pDst->pData; /* output data matrix pointer */ + uint16_t nRows = pSrc->numRows; /* number of nRows */ + uint16_t nColumns = pSrc->numCols; /* number of nColumns */ + uint16_t col, row = nRows, i = 0u; /* row and column loop counters */ + arm_status status; /* status of matrix transpose */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t in; /* variable to hold temporary output */ + + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Matrix transpose by exchanging the rows with columns */ + /* row loop */ + do + { + /* Apply loop unrolling and exchange the columns with row elements */ + col = nColumns >> 2u; + + /* The pointer pOut is set to starting address of the column being processed */ + pOut = pDst->pData + i; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(col > 0u) + { + /* Read two elements from the row */ + in = *__SIMD32(pSrcA)++; + + /* Unpack and store one element in the destination */ +#ifndef ARM_MATH_BIG_ENDIAN + + *pOut = (q15_t) in; + +#else + + *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer pOut to point to the next row of the transposed matrix */ + pOut += nRows; + + /* Unpack and store the second element in the destination */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#else + + *pOut = (q15_t) in; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer pOut to point to the next row of the transposed matrix */ + pOut += nRows; + + /* Read two elements from the row */ +#ifndef ARM_MATH_BIG_ENDIAN + + in = *__SIMD32(pSrcA)++; + +#else + + in = *__SIMD32(pSrcA)++; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Unpack and store one element in the destination */ +#ifndef ARM_MATH_BIG_ENDIAN + + *pOut = (q15_t) in; + +#else + + *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer pOut to point to the next row of the transposed matrix */ + pOut += nRows; + + /* Unpack and store the second element in the destination */ +#ifndef ARM_MATH_BIG_ENDIAN + + *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#else + + *pOut = (q15_t) in; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer pOut to point to the next row of the transposed matrix */ + pOut += nRows; + + /* Decrement the column loop counter */ + col--; + } + + /* Perform matrix transpose for last 3 samples here. */ + col = nColumns % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + +#ifdef ARM_MATH_MATRIX_CHECK + + /* Check for matrix mismatch condition */ + if((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Matrix transpose by exchanging the rows with columns */ + /* row loop */ + do + { + /* The pointer pOut is set to starting address of the column being processed */ + pOut = pDst->pData + i; + + /* Initialize column loop counter */ + col = nColumns; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(col > 0u) + { + /* Read and store the input element in the destination */ + *pOut = *pSrcA++; + + /* Update the pointer pOut to point to the next row of the transposed matrix */ + pOut += nRows; + + /* Decrement the column loop counter */ + col--; + } + + i++; + + /* Decrement the row loop counter */ + row--; + + } while(row > 0u); + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixTrans group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q31.c new file mode 100644 index 000000000..ef81039fb --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q31.c @@ -0,0 +1,205 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mat_trans_q31.c +* +* Description: Q31 matrix transpose. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixTrans + * @{ + */ + +/* + * @brief Q31 matrix transpose. + * @param[in] *pSrc points to the input matrix + * @param[out] *pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + +arm_status arm_mat_trans_q31( + const arm_matrix_instance_q31 * pSrc, + arm_matrix_instance_q31 * pDst) +{ + q31_t *pIn = pSrc->pData; /* input data matrix pointer */ + q31_t *pOut = pDst->pData; /* output data matrix pointer */ + q31_t *px; /* Temporary output data matrix pointer */ + uint16_t nRows = pSrc->numRows; /* number of nRows */ + uint16_t nColumns = pSrc->numCols; /* number of nColumns */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + uint16_t blkCnt, i = 0u, row = nRows; /* loop counters */ + arm_status status; /* status of matrix transpose */ + + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Matrix transpose by exchanging the rows with columns */ + /* row loop */ + do + { + /* Apply loop unrolling and exchange the columns with row elements */ + blkCnt = nColumns >> 2u; + + /* The pointer px is set to starting address of the column being processed */ + px = pOut + i; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Decrement the column loop counter */ + blkCnt--; + } + + /* Perform matrix transpose for last 3 samples here. */ + blkCnt = nColumns % 0x4u; + + while(blkCnt > 0u) + { + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Decrement the column loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + uint16_t col, i = 0u, row = nRows; /* loop counters */ + arm_status status; /* status of matrix transpose */ + + +#ifdef ARM_MATH_MATRIX_CHECK + + /* Check for matrix mismatch condition */ + if((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Matrix transpose by exchanging the rows with columns */ + /* row loop */ + do + { + /* The pointer px is set to starting address of the column being processed */ + px = pOut + i; + + /* Initialize column loop counter */ + col = nColumns; + + while(col > 0u) + { + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Decrement the column loop counter */ + col--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + i++; + + /* Decrement the row loop counter */ + row--; + + } + while(row > 0u); /* row loop end */ + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixTrans group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_f32.c new file mode 100644 index 000000000..eb3fc24dd --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_f32.c @@ -0,0 +1,127 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_max_f32.c +* +* Description: Maximum value of a floating-point vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @defgroup Max Maximum + * + * Computes the maximum value of an array of data. + * The function returns both the maximum value and its position within the array. + * There are separate functions for floating-point, Q31, Q15, and Q7 data types. + */ + +/** + * @addtogroup Max + * @{ + */ + + +/** + * @brief Maximum value of a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult maximum value returned here + * @param[out] *pIndex index of maximum value returned here + * @return none. + */ + +void arm_max_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex) +{ + float32_t maxVal, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex; /* loop counter */ + + /* Initialise the index value to zero. */ + outIndex = 0u; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + /* Loop over blockSize number of values */ + blkCnt = (blockSize - 1u); + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + do + { + /* Initialize maxVal to the next consecutive values one by one */ + maxVal = *pSrc++; + + /* compare for the maximum value */ + if(out < maxVal) + { + /* Update the maximum value and it's index */ + out = maxVal; + outIndex = blockSize - blkCnt; + } + /* Decrement the loop counter */ + blkCnt--; + + } while(blkCnt > 0u); + +#else + + /* Run the below code for Cortex-M0 */ + while(blkCnt > 0u) + { + /* Initialize maxVal to the next consecutive values one by one */ + maxVal = *pSrc++; + + /* compare for the maximum value */ + if(out < maxVal) + { + /* Update the maximum value and it's index */ + out = maxVal; + outIndex = blockSize - blkCnt; + } + /* Decrement the loop counter */ + blkCnt--; + + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + + /* Store the maximum value and it's index into destination pointers */ + *pResult = out; + *pIndex = outIndex; +} + +/** + * @} end of Max group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q15.c new file mode 100644 index 000000000..371e5970a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q15.c @@ -0,0 +1,119 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_max_q15.c +* +* Description: Maximum value of a Q15 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup Max + * @{ + */ + + +/** + * @brief Maximum value of a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult maximum value returned here + * @param[out] *pIndex index of maximum value returned here + * @return none. + */ + +void arm_max_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex) +{ + q15_t maxVal, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex; /* loop counter */ + + /* Initialise the index value to zero. */ + outIndex = 0u; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + /* Loop over blockSize number of values */ + blkCnt = (blockSize - 1u); + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + do + { + /* Initialize maxVal to the next consecutive values one by one */ + maxVal = *pSrc++; + + /* compare for the maximum value */ + if(out < maxVal) + { + /* Update the maximum value and its index */ + out = maxVal; + outIndex = blockSize - blkCnt; + } + + blkCnt--; + + } while(blkCnt > 0u); + +#else + + /* Run the below code for Cortex-M0 */ + + while(blkCnt > 0u) + { + /* Initialize maxVal to the next consecutive values one by one */ + maxVal = *pSrc++; + + /* compare for the maximum value */ + if(out < maxVal) + { + /* Update the maximum value and its index */ + out = maxVal; + outIndex = blockSize - blkCnt; + } + /* Decrement the loop counter */ + blkCnt--; + + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + /* Store the maximum value and its index into destination pointers */ + *pResult = out; + *pIndex = outIndex; +} + +/** + * @} end of Max group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q31.c new file mode 100644 index 000000000..38451b0df --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q31.c @@ -0,0 +1,121 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_max_q31.c +* +* Description: Maximum value of a Q31 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup Max + * @{ + */ + + +/** + * @brief Maximum value of a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult maximum value returned here + * @param[out] *pIndex index of maximum value returned here + * @return none. + */ + +void arm_max_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex) +{ + q31_t maxVal, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex; /* loop counter */ + + /* Initialise the index value to zero. */ + outIndex = 0u; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + /* Loop over blockSize number of values */ + blkCnt = (blockSize - 1u); + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + do + { + /* Initialize maxVal to the next consecutive values one by one */ + maxVal = *pSrc++; + + /* compare for the maximum value */ + if(out < maxVal) + { + /* Update the maximum value and its index */ + out = maxVal; + outIndex = blockSize - blkCnt; + } + + /* Decrement the loop counter */ + blkCnt--; + + } while(blkCnt > 0u); + +#else + + /* Run the below code for Cortex-M0 */ + + while(blkCnt > 0u) + { + /* Initialize maxVal to the next consecutive values one by one */ + maxVal = *pSrc++; + + /* Compare for the maximum value */ + if(out < maxVal) + { + /* Update the maximum value and its index */ + out = maxVal; + outIndex = blockSize - blkCnt; + } + + /* Decrement the loop counter */ + blkCnt--; + + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + /* Store the maximum value and its index into destination pointers */ + *pResult = out; + *pIndex = outIndex; +} + +/** + * @} end of Max group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q7.c new file mode 100644 index 000000000..ff9a7c071 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q7.c @@ -0,0 +1,206 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_max_q7.c +* +* Description: Maximum value of a Q7 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup Max + * @{ + */ + + +/** + * @brief Maximum value of a Q7 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult maximum value returned here + * @param[out] *pIndex index of maximum value returned here + * @return none. + */ + +void arm_max_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult, + uint32_t * pIndex) +{ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q7_t res, maxVal, x0, x1, maxVal2, maxVal1; /* Temporary variables to store the output value. */ + uint32_t blkCnt, index1, index2, index3, indx, indxMod; /* loop counter */ + + /* Initialise the index value to zero. */ + indx = 0u; + + /* Load first input value that act as reference value for comparision */ + res = *pSrc++; + + /* Loop unrolling */ + blkCnt = (blockSize - 1u) >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + indxMod = blockSize - (blkCnt * 4u); + + /* Load two input values for comparision */ + x0 = *pSrc++; + x1 = *pSrc++; + + if(x0 < x1) + { + /* Update the maximum value and its index */ + maxVal1 = x1; + index1 = indxMod + 1u; + } + else + { + /* Update the maximum value and its index */ + maxVal1 = x0; + index1 = indxMod; + } + + /* Load two input values for comparision */ + x0 = *pSrc++; + x1 = *pSrc++; + + if(x0 < x1) + { + /* Update the maximum value and its index */ + maxVal2 = x1; + index2 = indxMod + 3u; + } + else + { + /* Update the maximum value and its index */ + maxVal2 = x0; + index2 = indxMod + 2u; + } + + if(maxVal1 < maxVal2) + { + /* Update the maximum value and its index */ + maxVal = maxVal2; + index3 = index2; + } + else + { + /* Update the maximum value and its index */ + maxVal = maxVal1; + index3 = index1; + } + + if(res < maxVal) + { + /* Update the maximum value and its index */ + res = maxVal; + indx = index3; + } + + /* Decrement the loop counter */ + blkCnt--; + + } + + /* If the blockSize - 1 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = (blockSize - 1u) % 0x04u; + + while(blkCnt > 0u) + { + /* Initialize maxVal to the next consecutive values one by one */ + maxVal = *pSrc++; + + /* compare for the maximum value */ + if(res < maxVal) + { + /* Update the maximum value and its index */ + res = maxVal; + indx = blockSize - blkCnt; + } + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Store the maximum value and its index into destination pointers */ + *pResult = res; + *pIndex = indx; + +#else + + /* Run the below code for Cortex-M0 */ + + q7_t maxVal, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex; /* loop counter */ + + /* Initialise the index value to zero. */ + outIndex = 0u; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + /* Loop over blockSize - 1 number of values */ + blkCnt = (blockSize - 1u); + + while(blkCnt > 0u) + { + /* Initialize maxVal to the next consecutive values one by one */ + maxVal = *pSrc++; + + /* compare for the maximum value */ + if(out < maxVal) + { + /* Update the maximum value and its index */ + out = maxVal; + outIndex = blockSize - blkCnt; + } + /* Decrement the loop counter */ + blkCnt--; + + } + + /* Store the maximum value and its index into destination pointers */ + *pResult = out; + *pIndex = outIndex; + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of Max group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_f32.c new file mode 100644 index 000000000..fdda942af --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_f32.c @@ -0,0 +1,122 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mean_f32.c +* +* Description: Mean value of a floating-point vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @defgroup mean Mean + * + * Calculates the mean of the input vector. Mean is defined as the average of the elements in the vector. + * The underlying algorithm is used: + * + *
   
+ * 	Result = (pSrc[0] + pSrc[1] + pSrc[2] + ... + pSrc[blockSize-1]) / blockSize;   
+ * 
+ * + * There are separate functions for floating-point, Q31, Q15, and Q7 data types. + */ + +/** + * @addtogroup mean + * @{ + */ + + +/** + * @brief Mean value of a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult mean value returned here + * @return none. + */ + + +void arm_mean_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult) +{ + float32_t sum = 0.0f; /* Temporary result storage */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize */ + /* Store the result to the destination */ + *pResult = sum / (float32_t) blockSize; +} + +/** + * @} end of mean group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q15.c new file mode 100644 index 000000000..2f31a4d5d --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q15.c @@ -0,0 +1,119 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mean_q15.c +* +* Description: Mean value of a Q15 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup mean + * @{ + */ + +/** + * @brief Mean value of a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult mean value returned here + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 32-bit internal accumulator. + * The input is represented in 1.15 format and is accumulated in a 32-bit + * accumulator in 17.15 format. + * There is no risk of internal overflow with this approach, and the + * full precision of intermediate result is preserved. + * Finally, the accumulator is saturated and truncated to yield a result of 1.15 format. + * + */ + + +void arm_mean_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult) +{ + q31_t sum = 0; /* Temporary result storage */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize */ + /* Store the result to the destination */ + *pResult = (q15_t) (sum / blockSize); +} + +/** + * @} end of mean group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q31.c new file mode 100644 index 000000000..6692c7cfa --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q31.c @@ -0,0 +1,119 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mean_q31.c +* +* Description: Mean value of a Q31 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup mean + * @{ + */ + +/** + * @brief Mean value of a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult mean value returned here + * @return none. + * + * @details + * Scaling and Overflow Behavior: + *\par + * The function is implemented using a 64-bit internal accumulator. + * The input is represented in 1.31 format and is accumulated in a 64-bit + * accumulator in 33.31 format. + * There is no risk of internal overflow with this approach, and the + * full precision of intermediate result is preserved. + * Finally, the accumulator is truncated to yield a result of 1.31 format. + * + */ + + +void arm_mean_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult) +{ + q63_t sum = 0; /* Temporary result storage */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize */ + /* Store the result to the destination */ + *pResult = (q31_t) (sum / (int32_t) blockSize); +} + +/** + * @} end of mean group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q7.c new file mode 100644 index 000000000..b61d1041a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q7.c @@ -0,0 +1,119 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_mean_q7.c +* +* Description: Mean value of a Q7 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup mean + * @{ + */ + +/** + * @brief Mean value of a Q7 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult mean value returned here + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 32-bit internal accumulator. + * The input is represented in 1.7 format and is accumulated in a 32-bit + * accumulator in 25.7 format. + * There is no risk of internal overflow with this approach, and the + * full precision of intermediate result is preserved. + * Finally, the accumulator is truncated to yield a result of 1.7 format. + * + */ + + +void arm_mean_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult) +{ + q31_t sum = 0; /* Temporary result storage */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize */ + /* Store the result to the destination */ + *pResult = (q7_t) (sum / (int32_t) blockSize); +} + +/** + * @} end of mean group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_f32.c new file mode 100644 index 000000000..b6846bc1a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_f32.c @@ -0,0 +1,133 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_min_f32.c +* +* Description: Minimum value of a floating-point vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @defgroup Min Minimum + * + * Computes the minimum value of an array of data. + * The function returns both the minimum value and its position within the array. + * There are separate functions for floating-point, Q31, Q15, and Q7 data types. + */ + +/** + * @addtogroup Min + * @{ + */ + + +/** + * @brief Minimum value of a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult minimum value returned here + * @param[out] *pIndex index of minimum value returned here + * @return none. + * + */ + +void arm_min_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex) +{ + float32_t minVal, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex; /* loop counter */ + + /* Initialise the index value to zero. */ + outIndex = 0u; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + + /* Loop over blockSize number of values */ + blkCnt = (blockSize - 1u); + + do + { + /* Initialize minVal to the next consecutive values one by one */ + minVal = *pSrc++; + + /* compare for the minimum value */ + if(out > minVal) + { + /* Update the minimum value and it's index */ + out = minVal; + outIndex = blockSize - blkCnt; + } + + blkCnt--; + + } while(blkCnt > 0u); + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize - 1 number of values */ + blkCnt = (blockSize - 1u); + + while(blkCnt > 0u) + { + /* Initialize minVal to the next consecutive values one by one */ + minVal = *pSrc++; + + /* compare for the minimum value */ + if(out > minVal) + { + /* Update the minimum value and it's index */ + out = minVal; + outIndex = blockSize - blkCnt; + } + /* Decrement the loop counter */ + blkCnt--; + + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + + /* Store the minimum value and it's index into destination pointers */ + *pResult = out; + *pIndex = outIndex; +} + +/** + * @} end of Min group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q15.c new file mode 100644 index 000000000..788c8f13d --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q15.c @@ -0,0 +1,127 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_min_q15.c +* +* Description: Minimum value of a Q15 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + + +/** + * @addtogroup Min + * @{ + */ + + +/** + * @brief Minimum value of a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult minimum value returned here + * @param[out] *pIndex index of minimum value returned here + * @return none. + * + */ + +void arm_min_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex) +{ + q15_t minVal, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex; /* loop counter */ + + /* Initialise the index value to zero. */ + outIndex = 0u; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + + /* Loop over blockSize number of values */ + blkCnt = (blockSize - 1u); + + do + { + /* Initialize minVal to the next consecutive values one by one */ + minVal = *pSrc++; + + /* compare for the minimum value */ + if(out > minVal) + { + /* Update the minimum value and its index */ + out = minVal; + outIndex = blockSize - blkCnt; + } + + blkCnt--; + + } while(blkCnt > 0u); + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize - 1 number of values */ + blkCnt = (blockSize - 1u); + + while(blkCnt > 0u) + { + /* Initialize minVal to the next consecutive values one by one */ + minVal = *pSrc++; + + /* compare for the minimum value */ + if(out > minVal) + { + /* Update the minimum value and its index */ + out = minVal; + outIndex = blockSize - blkCnt; + } + + /* Decrement the loop counter */ + blkCnt--; + + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + + /* Store the minimum value and its index into destination pointers */ + *pResult = out; + *pIndex = outIndex; +} + +/** + * @} end of Min group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q31.c new file mode 100644 index 000000000..5d285d00b --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q31.c @@ -0,0 +1,125 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_min_q31.c +* +* Description: Minimum value of a Q31 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + + +/** + * @addtogroup Min + * @{ + */ + + +/** + * @brief Minimum value of a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult minimum value returned here + * @param[out] *pIndex index of minimum value returned here + * @return none. + * + */ + +void arm_min_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex) +{ + q31_t minVal, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex; /* loop counter */ + + /* Initialise the index value to zero. */ + outIndex = 0u; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Loop over blockSize number of values */ + blkCnt = (blockSize - 1u); + + do + { + /* Initialize minVal to the next consecutive values one by one */ + minVal = *pSrc++; + + /* compare for the minimum value */ + if(out > minVal) + { + /* Update the minimum value and its index */ + out = minVal; + outIndex = blockSize - blkCnt; + } + + blkCnt--; + + } while(blkCnt > 0u); + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize -1 number of values */ + blkCnt = (blockSize - 1u); + + while(blkCnt > 0u) + { + /* Initialize minVal to the next consecutive values one by one */ + minVal = *pSrc++; + + /* compare for the minimum value */ + if(out > minVal) + { + /* Update the minimum value and its index */ + out = minVal; + outIndex = blockSize - blkCnt; + } + + /* Decrement the loop counter */ + blkCnt--; + + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + /* Store the minimum value and its index into destination pointers */ + *pResult = out; + *pIndex = outIndex; +} + +/** + * @} end of Min group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q7.c new file mode 100644 index 000000000..da6dc7571 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q7.c @@ -0,0 +1,204 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_min_q7.c +* +* Description: Minimum value of a Q7 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup Min + * @{ + */ + + +/** + * @brief Minimum value of a Q7 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult minimum value returned here + * @param[out] *pIndex index of minimum value returned here + * @return none. + * + */ + +void arm_min_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult, + uint32_t * pIndex) +{ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q7_t minVal, minVal1, minVal2, res, x0, x1; /* Temporary variables to store the output value. */ + uint32_t blkCnt, indx, index1, index2, index3, indxMod; /* loop counter */ + + /* Initialise the index value to zero. */ + indx = 0u; + + /* Load first input value that act as reference value for comparision */ + res = *pSrc++; + + /* Loop over blockSize number of values */ + blkCnt = (blockSize - 1u) >> 2u; + + while(blkCnt > 0u) + { + indxMod = blockSize - (blkCnt * 4u); + + /* Load two input values for comparision */ + x0 = *pSrc++; + x1 = *pSrc++; + + if(x0 > x1) + { + /* Update the minimum value and its index */ + minVal1 = x1; + index1 = indxMod + 1u; + } + else + { + /* Update the minimum value and its index */ + minVal1 = x0; + index1 = indxMod; + } + + /* Load two input values for comparision */ + x0 = *pSrc++; + x1 = *pSrc++; + + if(x0 > x1) + { + /* Update the minimum value and its index */ + minVal2 = x1; + index2 = indxMod + 3u; + } + else + { + /* Update the minimum value and its index */ + minVal2 = x0; + index2 = indxMod + 2u; + } + + if(minVal1 > minVal2) + { + /* Update the minimum value and its index */ + minVal = minVal2; + index3 = index2; + } + else + { + /* Update the minimum value and its index */ + minVal = minVal1; + index3 = index1; + } + + if(res > minVal) + { + /* Update the minimum value and its index */ + res = minVal; + indx = index3; + } + + /* Decrement the loop counter */ + blkCnt--; + + } + + blkCnt = (blockSize - 1u) % 0x04u; + + while(blkCnt > 0u) + { + /* Initialize minVal to the next consecutive values one by one */ + minVal = *pSrc++; + + /* compare for the minimum value */ + if(res > minVal) + { + /* Update the minimum value and its index */ + res = minVal; + indx = blockSize - blkCnt; + } + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Store the minimum value and its index into destination pointers */ + *pResult = res; + *pIndex = indx; + +#else + + /* Run the below code for Cortex-M0 */ + + q7_t minVal, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex; /* loop counter */ + + /* Initialise the index value to zero. */ + outIndex = 0u; + + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + /* Loop over blockSize - 1 number of values */ + blkCnt = (blockSize - 1u); + + while(blkCnt > 0u) + { + /* Initialize minVal to the next consecutive values one by one */ + minVal = *pSrc++; + + /* compare for the minimum value */ + if(out > minVal) + { + /* Update the minimum value and its index */ + out = minVal; + outIndex = blockSize - blkCnt; + } + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Store the minimum value and its index into destination pointers */ + *pResult = out; + *pIndex = outIndex; + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of Min group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_f32.c new file mode 100644 index 000000000..70a188bce --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_f32.c @@ -0,0 +1,135 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_power_f32.c +* +* Description: Sum of the squares of the elements of a floating-point vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @defgroup power Power + * + * Calculates the sum of the squares of the elements in the input vector. + * The underlying algorithm is used: + * + *
   
+ * 	Result = pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + pSrc[2] * pSrc[2] + ... + pSrc[blockSize-1] * pSrc[blockSize-1];   
+ * 
+ * + * There are separate functions for floating point, Q31, Q15, and Q7 data types. + */ + +/** + * @addtogroup power + * @{ + */ + + +/** + * @brief Sum of the squares of the elements of a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult sum of the squares value returned here + * @return none. + * + */ + + +void arm_power_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult) +{ + float32_t sum = 0.0f; /* accumulator */ + float32_t in; /* Temporary variable to store input value */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute Power and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += in * in; + in = *pSrc++; + sum += in * in; + in = *pSrc++; + sum += in * in; + in = *pSrc++; + sum += in * in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + + while(blkCnt > 0u) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* compute power and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += in * in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Store the result to the destination */ + *pResult = sum; +} + +/** + * @} end of power group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q15.c new file mode 100644 index 000000000..3b5b8482e --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q15.c @@ -0,0 +1,141 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_power_q15.c +* +* Description: Sum of the squares of the elements of a Q15 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup power + * @{ + */ + +/** + * @brief Sum of the squares of the elements of a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult sum of the squares value returned here + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 64-bit internal accumulator. + * The input is represented in 1.15 format. + * Intermediate multiplication yields a 2.30 format, and this + * result is added without saturation to a 64-bit accumulator in 34.30 format. + * With 33 guard bits in the accumulator, there is no risk of overflow, and the + * full precision of the intermediate multiplication is preserved. + * Finally, the return result is in 34.30 format. + * + */ + +void arm_power_q15( + q15_t * pSrc, + uint32_t blockSize, + q63_t * pResult) +{ + q63_t sum = 0; /* Temporary result storage */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t in32; /* Temporary variable to store input value */ + q15_t in16; /* Temporary variable to store input value */ + uint32_t blkCnt; /* loop counter */ + + + /* loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute Power and then store the result in a temporary variable, sum. */ + in32 = *__SIMD32(pSrc)++; + sum = __SMLALD(in32, in32, sum); + in32 = *__SIMD32(pSrc)++; + sum = __SMLALD(in32, in32, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute Power and then store the result in a temporary variable, sum. */ + in16 = *pSrc++; + sum = __SMLALD(in16, in16, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + q15_t in; /* Temporary variable to store input value */ + uint32_t blkCnt; /* loop counter */ + + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute Power and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += ((q31_t) in * in); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + /* Store the results in 34.30 format */ + *pResult = sum; +} + +/** + * @} end of power group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q31.c new file mode 100644 index 000000000..c25621ee1 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q31.c @@ -0,0 +1,132 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_power_q31.c +* +* Description: Sum of the squares of the elements of a Q31 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup power + * @{ + */ + +/** + * @brief Sum of the squares of the elements of a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult sum of the squares value returned here + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 64-bit internal accumulator. + * The input is represented in 1.31 format. + * Intermediate multiplication yields a 2.62 format, and this + * result is truncated to 2.48 format by discarding the lower 14 bits. + * The 2.48 result is then added without saturation to a 64-bit accumulator in 16.48 format. + * With 15 guard bits in the accumulator, there is no risk of overflow, and the + * full precision of the intermediate multiplication is preserved. + * Finally, the return result is in 16.48 format. + * + */ + +void arm_power_q31( + q31_t * pSrc, + uint32_t blockSize, + q63_t * pResult) +{ + q63_t sum = 0; /* Temporary result storage */ + q31_t in; + uint32_t blkCnt; /* loop counter */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute Power then shift intermediate results by 14 bits to maintain 16.48 format and then store the result in a temporary variable sum, providing 15 guard bits. */ + in = *pSrc++; + sum += ((q63_t) in * in) >> 14u; + + in = *pSrc++; + sum += ((q63_t) in * in) >> 14u; + + in = *pSrc++; + sum += ((q63_t) in * in) >> 14u; + + in = *pSrc++; + sum += ((q63_t) in * in) >> 14u; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute Power and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += ((q63_t) in * in) >> 14u; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Store the results in 16.48 format */ + *pResult = sum; +} + +/** + * @} end of power group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q7.c new file mode 100644 index 000000000..457950e2b --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q7.c @@ -0,0 +1,137 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_power_q7.c +* +* Description: Sum of the squares of the elements of a Q7 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup power + * @{ + */ + +/** + * @brief Sum of the squares of the elements of a Q7 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult sum of the squares value returned here + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 32-bit internal accumulator. + * The input is represented in 1.7 format. + * Intermediate multiplication yields a 2.14 format, and this + * result is added without saturation to an accumulator in 18.14 format. + * With 17 guard bits in the accumulator, there is no risk of overflow, and the + * full precision of the intermediate multiplication is preserved. + * Finally, the return result is in 18.14 format. + * + */ + +void arm_power_q7( + q7_t * pSrc, + uint32_t blockSize, + q31_t * pResult) +{ + q31_t sum = 0; /* Temporary result storage */ + q7_t in; /* Temporary variable to store input */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t input1; /* Temporary variable to store packed input */ + q15_t in1, in2; /* Temporary variables to store input */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* Reading two inputs of pSrc vector and packing */ + in1 = (q15_t) * pSrc++; + in2 = (q15_t) * pSrc++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute Power and then store the result in a temporary variable, sum. */ + sum = __SMLAD(input1, input1, sum); + + /* Reading two inputs of pSrc vector and packing */ + in1 = (q15_t) * pSrc++; + in2 = (q15_t) * pSrc++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute Power and then store the result in a temporary variable, sum. */ + sum = __SMLAD(input1, input1, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute Power and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += ((q15_t) in * in); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Store the result in 18.14 format */ + *pResult = sum; +} + +/** + * @} end of power group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_f32.c new file mode 100644 index 000000000..de3ea396c --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_f32.c @@ -0,0 +1,130 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_rms_f32.c +* +* Description: Root mean square value of an array of F32 type +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @defgroup RMS Root mean square (RMS) + * + * + * Calculates the Root Mean Sqaure of the elements in the input vector. + * The underlying algorithm is used: + * + *
   
+ * 	Result = sqrt(((pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + ... + pSrc[blockSize-1] * pSrc[blockSize-1]) / blockSize));   
+ * 
+ * + * There are separate functions for floating point, Q31, and Q15 data types. + */ + +/** + * @addtogroup RMS + * @{ + */ + + +/** + * @brief Root Mean Square of the elements of a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult rms value returned here + * @return none. + * + */ + +void arm_rms_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult) +{ + float32_t sum = 0.0f; /* Accumulator */ + float32_t in; /* Tempoprary variable to store input value */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute sum of the squares and then store the result in a temporary variable, sum */ + in = *pSrc++; + sum += in * in; + in = *pSrc++; + sum += in * in; + in = *pSrc++; + sum += in * in; + in = *pSrc++; + sum += in * in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute sum of the squares and then store the results in a temporary variable, sum */ + in = *pSrc++; + sum += in * in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Rms and store the result in the destination */ + arm_sqrt_f32(sum / (float32_t) blockSize, pResult); +} + +/** + * @} end of RMS group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q15.c new file mode 100644 index 000000000..e57485fc0 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q15.c @@ -0,0 +1,150 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_rms_q15.c +* +* Description: Root Mean Square of the elements of a Q15 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @addtogroup RMS + * @{ + */ + +/** + * @brief Root Mean Square of the elements of a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult rms value returned here + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 64-bit internal accumulator. + * The input is represented in 1.15 format. + * Intermediate multiplication yields a 2.30 format, and this + * result is added without saturation to a 64-bit accumulator in 34.30 format. + * With 33 guard bits in the accumulator, there is no risk of overflow, and the + * full precision of the intermediate multiplication is preserved. + * Finally, the 34.30 result is truncated to 34.15 format by discarding the lower + * 15 bits, and then saturated to yield a result in 1.15 format. + * + */ + +void arm_rms_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult) +{ + q63_t sum = 0; /* accumulator */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t in; /* temporary variable to store the input value */ + q15_t in1; /* temporary variable to store the input value */ + uint32_t blkCnt; /* loop counter */ + + /* loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute sum of the squares and then store the results in a temporary variable, sum */ + in = *__SIMD32(pSrc)++; + sum = __SMLALD(in, in, sum); + in = *__SIMD32(pSrc)++; + sum = __SMLALD(in, in, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute sum of the squares and then store the results in a temporary variable, sum */ + in1 = *pSrc++; + sum = __SMLALD(in1, in1, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Truncating and saturating the accumulator to 1.15 format */ + sum = __SSAT((q31_t) (sum >> 15), 16); + + in1 = (q15_t) (sum / blockSize); + + /* Store the result in the destination */ + arm_sqrt_q15(in1, pResult); + +#else + + /* Run the below code for Cortex-M0 */ + + q15_t in; /* temporary variable to store the input value */ + uint32_t blkCnt; /* loop counter */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute sum of the squares and then store the results in a temporary variable, sum */ + in = *pSrc++; + sum += ((q31_t) in * in); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Truncating and saturating the accumulator to 1.15 format */ + sum = __SSAT((q31_t) (sum >> 15), 16); + + in = (q15_t) (sum / blockSize); + + /* Store the result in the destination */ + arm_sqrt_q15(in, pResult); + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of RMS group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q31.c new file mode 100644 index 000000000..a2533b129 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q31.c @@ -0,0 +1,143 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_rms_q31.c +* +* Description: Root Mean Square of the elements of a Q31 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @addtogroup RMS + * @{ + */ + + +/** + * @brief Root Mean Square of the elements of a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult rms value returned here + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + *\par + * The function is implemented using an internal 64-bit accumulator. + * The input is represented in 1.31 format, and intermediate multiplication + * yields a 2.62 format. + * The accumulator maintains full precision of the intermediate multiplication results, + * but provides only a single guard bit. + * There is no saturation on intermediate additions. + * If the accumulator overflows, it wraps around and distorts the result. + * In order to avoid overflows completely, the input signal must be scaled down by + * log2(blockSize) bits, as a total of blockSize additions are performed internally. + * Finally, the 2.62 accumulator is right shifted by 31 bits to yield a 1.31 format value. + * + */ + +void arm_rms_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult) +{ + q63_t sum = 0; /* accumulator */ + q31_t in; /* Temporary variable to store the input */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t *pIn1 = pSrc; /* SrcA pointer */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute sum of the squares and then store the result in a temporary variable, sum */ + in = *pIn1++; + sum += (q63_t) in *in; + in = *pIn1++; + sum += (q63_t) in *in; + in = *pIn1++; + sum += (q63_t) in *in; + in = *pIn1++; + sum += (q63_t) in *in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute sum of the squares and then store the results in a temporary variable, sum */ + in = *pIn1++; + sum += (q63_t) in *in; + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute sum of the squares and then store the results in a temporary variable, sum */ + in = *pSrc++; + sum += (q63_t) in *in; + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + + /* Convert data in 2.62 to 1.31 by 31 right shifts */ + sum = sum >> 31; + + /* Compute Rms and store the result in the destination vector */ + arm_sqrt_q31((q31_t) (sum / (int32_t) blockSize), pResult); +} + +/** + * @} end of RMS group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_f32.c new file mode 100644 index 000000000..800969702 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_f32.c @@ -0,0 +1,222 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_std_f32.c +* +* Description: Standard deviation of the elements of a floating-point vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @defgroup STD Standard deviation + * + * Calculates the standard deviation of the elements in the input vector. + * The underlying algorithm is used: + * + *
   
+ * 	Result = sqrt((sumOfSquares - sum2 / blockSize) / (blockSize - 1))  
+ *  
+ *	   where, sumOfSquares = pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + ... + pSrc[blockSize-1] * pSrc[blockSize-1]  
+ *  
+ *	                   sum = pSrc[0] + pSrc[1] + pSrc[2] + ... + pSrc[blockSize-1]  
+ * 
+ * + * There are separate functions for floating point, Q31, and Q15 data types. + */ + +/** + * @addtogroup STD + * @{ + */ + + +/** + * @brief Standard deviation of the elements of a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult standard deviation value returned here + * @return none. + * + */ + + +void arm_std_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult) +{ + float32_t sum = 0.0f; /* Temporary result storage */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float32_t meanOfSquares, mean, in, squareOfMean; + uint32_t blkCnt; /* loop counter */ + float32_t *pIn; /* Temporary pointer */ + + pIn = pSrc; + + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += in * in; + in = *pSrc++; + sum += in * in; + in = *pSrc++; + sum += in * in; + in = *pSrc++; + sum += in * in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += in * in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Mean of squares of the input samples + * and then store the result in a temporary variable, meanOfSquares. */ + meanOfSquares = sum / ((float32_t) blockSize - 1.0f); + + /* Reset the accumulator */ + sum = 0.0f; + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* Reset the input working pointer */ + pSrc = pIn; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + /* Compute mean of all input values */ + mean = sum / (float32_t) blockSize; + + /* Compute square of mean */ + squareOfMean = (mean * mean) * (((float32_t) blockSize) / + ((float32_t) blockSize - 1.0f)); + + /* Compute standard deviation and then store the result to the destination */ + arm_sqrt_f32((meanOfSquares - squareOfMean), pResult); + +#else + + /* Run the below code for Cortex-M0 */ + + float32_t sumOfSquares = 0.0f; /* Sum of squares */ + float32_t squareOfSum; /* Square of Sum */ + float32_t in; /* input value */ + float32_t var; /* Temporary varaince storage */ + uint32_t blkCnt; /* loop counter */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sumOfSquares. */ + in = *pSrc++; + sumOfSquares += in * in; + + /* C = (A[0] + A[1] + ... + A[blockSize-1]) */ + /* Compute Sum of the input samples + * and then store the result in a temporary variable, sum. */ + sum += in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute the square of sum */ + squareOfSum = ((sum * sum) / (float32_t) blockSize); + + /* Compute the variance */ + var = ((sumOfSquares - squareOfSum) / (float32_t) (blockSize - 1.0f)); + + /* Compute standard deviation and then store the result to the destination */ + arm_sqrt_f32(var, pResult); + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of STD group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q15.c new file mode 100644 index 000000000..19d9884d3 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q15.c @@ -0,0 +1,229 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_std_q15.c +* +* Description: Standard deviation of an array of Q15 type. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup STD + * @{ + */ + +/** + * @brief Standard deviation of the elements of a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult standard deviation value returned here + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 64-bit internal accumulator. + * The input is represented in 1.15 format. + * Intermediate multiplication yields a 2.30 format, and this + * result is added without saturation to a 64-bit accumulator in 34.30 format. + * With 33 guard bits in the accumulator, there is no risk of overflow, and the + * full precision of the intermediate multiplication is preserved. + * Finally, the 34.30 result is truncated to 34.15 format by discarding the lower + * 15 bits, and then saturated to yield a result in 1.15 format. + */ + +void arm_std_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult) +{ + q63_t sum = 0; /* Accumulator */ + q31_t meanOfSquares, squareOfMean; /* square of mean and mean of square */ + q15_t mean; /* mean */ + uint32_t blkCnt; /* loop counter */ + q15_t t; /* Temporary variable */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t *pIn; /* Temporary pointer */ + q31_t in; /* input value */ + q15_t in1; /* input value */ + + pIn = pSrc; + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in = *__SIMD32(pSrc)++; + sum = __SMLALD(in, in, sum); + in = *__SIMD32(pSrc)++; + sum = __SMLALD(in, in, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in1 = *pSrc++; + sum = __SMLALD(in1, in1, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Mean of squares of the input samples + * and then store the result in a temporary variable, meanOfSquares. */ + t = (q15_t) ((1.0 / (blockSize - 1)) * 16384LL); + sum = __SSAT((sum >> 15u), 16u); + + meanOfSquares = (q31_t) ((sum * t) >> 14u); + + /* Reset the accumulator */ + sum = 0; + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* Reset the input working pointer */ + pSrc = pIn; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + /* Compute mean of all input values */ + t = (q15_t) ((1.0 / (blockSize * (blockSize - 1))) * 32768LL); + mean = (q15_t) __SSAT(sum, 16u); + + /* Compute square of mean */ + squareOfMean = ((q31_t) mean * mean) >> 15; + squareOfMean = (q31_t) (((q63_t) squareOfMean * t) >> 15); + + /* mean of the squares minus the square of the mean. */ + in1 = (q15_t) (meanOfSquares - squareOfMean); + + /* Compute standard deviation and store the result to the destination */ + arm_sqrt_q15(in1, pResult); + +#else + + /* Run the below code for Cortex-M0 */ + + q63_t sumOfSquares = 0; /* Accumulator */ + q15_t in; /* input value */ + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sumOfSquares. */ + in = *pSrc++; + sumOfSquares += (in * in); + + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Mean of squares of the input samples + * and then store the result in a temporary variable, meanOfSquares. */ + t = (q15_t) ((1.0 / (blockSize - 1)) * 16384LL); + sumOfSquares = __SSAT((sumOfSquares >> 15u), 16u); + meanOfSquares = (q31_t) ((sumOfSquares * t) >> 14u); + + /* Compute mean of all input values */ + mean = (q15_t) __SSAT(sum, 16u); + + /* Compute square of mean of the input samples + * and then store the result in a temporary variable, squareOfMean.*/ + t = (q15_t) ((1.0 / (blockSize * (blockSize - 1))) * 32768LL); + squareOfMean = ((q31_t) mean * mean) >> 15; + squareOfMean = (q31_t) (((q63_t) squareOfMean * t) >> 15); + + /* mean of the squares minus the square of the mean. */ + in = (q15_t) (meanOfSquares - squareOfMean); + + /* Compute standard deviation and store the result to the destination */ + arm_sqrt_q15(in, pResult); + +#endif /* #ifndef ARM_MATH_CM0 */ + + +} + +/** + * @} end of STD group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q31.c new file mode 100644 index 000000000..d167ed730 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q31.c @@ -0,0 +1,219 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_std_q31.c +* +* Description: Standard deviation of an array of Q31 type. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup STD + * @{ + */ + + +/** + * @brief Standard deviation of the elements of a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult standard deviation value returned here + * @return none. + * @details + * Scaling and Overflow Behavior: + * + *\par + * The function is implemented using an internal 64-bit accumulator. + * The input is represented in 1.31 format, and intermediate multiplication + * yields a 2.62 format. + * The accumulator maintains full precision of the intermediate multiplication results, + * but provides only a single guard bit. + * There is no saturation on intermediate additions. + * If the accumulator overflows it wraps around and distorts the result. + * In order to avoid overflows completely the input signal must be scaled down by + * log2(blockSize) bits, as a total of blockSize additions are performed internally. + * Finally, the 2.62 accumulator is right shifted by 31 bits to yield a 1.31 format value. + * + */ + + +void arm_std_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult) +{ + q63_t sum = 0; /* Accumulator */ + q31_t meanOfSquares, squareOfMean; /* square of mean and mean of square */ + q31_t mean; /* mean */ + q31_t in; /* input value */ + q31_t t; /* Temporary variable */ + uint32_t blkCnt; /* loop counter */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t *pIn; /* Temporary pointer */ + + pIn = pSrc; + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += ((q63_t) (in) * (in)); + in = *pSrc++; + sum += ((q63_t) (in) * (in)); + in = *pSrc++; + sum += ((q63_t) (in) * (in)); + in = *pSrc++; + sum += ((q63_t) (in) * (in)); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += ((q63_t) (in) * (in)); + + /* Decrement the loop counter */ + blkCnt--; + } + + t = (q31_t) ((1.0f / (float32_t) (blockSize - 1u)) * 1073741824.0f); + + /* Compute Mean of squares of the input samples + * and then store the result in a temporary variable, meanOfSquares. */ + sum = (sum >> 31); + meanOfSquares = (q31_t) ((sum * t) >> 30); + + /* Reset the accumulator */ + sum = 0; + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* Reset the input working pointer */ + pSrc = pIn; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + q63_t sumOfSquares = 0; /* Accumulator */ + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sumOfSquares. */ + in = *pSrc++; + sumOfSquares += ((q63_t) (in) * (in)); + + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Mean of squares of the input samples + * and then store the result in a temporary variable, meanOfSquares. */ + t = (q31_t) ((1.0f / (float32_t) (blockSize - 1u)) * 1073741824.0f); + sumOfSquares = (sumOfSquares >> 31); + meanOfSquares = (q31_t) ((sumOfSquares * t) >> 30); + +#endif /* #ifndef ARM_MATH_CM0 */ + + /* Compute mean of all input values */ + t = (q31_t) ((1.0f / (blockSize * (blockSize - 1u))) * 2147483648.0f); + mean = (q31_t) (sum); + + /* Compute square of mean */ + squareOfMean = (q31_t) (((q63_t) mean * mean) >> 31); + squareOfMean = (q31_t) (((q63_t) squareOfMean * t) >> 31); + + + /* Compute standard deviation and then store the result to the destination */ + arm_sqrt_q31(meanOfSquares - squareOfMean, pResult); + +} + +/** + * @} end of STD group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_f32.c new file mode 100644 index 000000000..9b6a5a89d --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_f32.c @@ -0,0 +1,219 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_var_f32.c +* +* Description: Variance of the elements of a floating-point vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @defgroup variance Variance + * + * Calculates the variance of the elements in the input vector. + * The underlying algorithm is used: + * + *
   
+ * 	Result = (sumOfSquares - sum2 / blockSize) / (blockSize - 1)  
+ *  
+ *	   where, sumOfSquares = pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + ... + pSrc[blockSize-1] * pSrc[blockSize-1]  
+ *  
+ *	                   sum = pSrc[0] + pSrc[1] + pSrc[2] + ... + pSrc[blockSize-1]  
+ * 
+ * + * There are separate functions for floating point, Q31, and Q15 data types. + */ + +/** + * @addtogroup variance + * @{ + */ + + +/** + * @brief Variance of the elements of a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult variance value returned here + * @return none. + * + */ + + +void arm_var_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult) +{ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float32_t sum = (float32_t) 0.0; /* Accumulator */ + float32_t meanOfSquares, mean, in, squareOfMean; /* Temporary variables */ + uint32_t blkCnt; /* loop counter */ + float32_t *pIn; /* Temporary pointer */ + + /* updating temporary pointer */ + pIn = pSrc; + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += in * in; + in = *pSrc++; + sum += in * in; + in = *pSrc++; + sum += in * in; + in = *pSrc++; + sum += in * in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += in * in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Mean of squares of the input samples + * and then store the result in a temporary variable, meanOfSquares. */ + meanOfSquares = sum / ((float32_t) blockSize - 1.0f); + + /* Reset the accumulator */ + sum = 0.0f; + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* Reset the input working pointer */ + pSrc = pIn; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + /* Compute mean of all input values */ + mean = sum / (float32_t) blockSize; + + /* Compute square of mean */ + squareOfMean = (mean * mean) * (((float32_t) blockSize) / + ((float32_t) blockSize - 1.0f)); + + /* Compute variance and then store the result to the destination */ + *pResult = meanOfSquares - squareOfMean; + +#else + + /* Run the below code for Cortex-M0 */ + + float32_t sum = 0.0f; /* Temporary result storage */ + float32_t sumOfSquares = 0.0f; /* Sum of squares */ + float32_t squareOfSum; /* Square of Sum */ + float32_t in; /* input value */ + uint32_t blkCnt; /* loop counter */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sumOfSquares. */ + in = *pSrc++; + sumOfSquares += in * in; + + /* C = (A[0] + A[1] + ... + A[blockSize-1]) */ + /* Compute Sum of the input samples + * and then store the result in a temporary variable, sum. */ + sum += in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute the square of sum */ + squareOfSum = ((sum * sum) / (float32_t) blockSize); + + /* Compute the variance */ + *pResult = ((sumOfSquares - squareOfSum) / (float32_t) (blockSize - 1.0f)); + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of variance group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q15.c new file mode 100644 index 000000000..e557a0d85 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q15.c @@ -0,0 +1,214 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_var_q15.c +* +* Description: Variance of an array of Q15 type. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup variance + * @{ + */ + +/** + * @brief Variance of the elements of a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult variance value returned here + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 64-bit internal accumulator. + * The input is represented in 1.15 format. + * Intermediate multiplication yields a 2.30 format, and this + * result is added without saturation to a 64-bit accumulator in 34.30 format. + * With 33 guard bits in the accumulator, there is no risk of overflow, and the + * full precision of the intermediate multiplication is preserved. + * Finally, the 34.30 result is truncated to 34.15 format by discarding the lower + * 15 bits, and then saturated to yield a result in 1.15 format. + * + */ + + +void arm_var_q15( + q15_t * pSrc, + uint32_t blockSize, + q31_t * pResult) +{ + q63_t sum = 0; /* Accumulator */ + q31_t meanOfSquares, squareOfMean; /* Mean of square and square of mean */ + q15_t mean; /* mean */ + uint32_t blkCnt; /* loop counter */ + q15_t t; /* Temporary variable */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t in; /* Input variable */ + q15_t in1; /* Temporary variable */ + q15_t *pIn; /* Temporary pointer */ + + pIn = pSrc; + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in = *__SIMD32(pSrc)++; + sum = __SMLALD(in, in, sum); + in = *__SIMD32(pSrc)++; + sum = __SMLALD(in, in, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in1 = *pSrc++; + sum = __SMLALD(in1, in1, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Mean of squares of the input samples + * and then store the result in a temporary variable, meanOfSquares. */ + t = (q15_t) ((1.0f / (float32_t) (blockSize - 1u)) * 16384); + sum = __SSAT((sum >> 15u), 16u); + + meanOfSquares = (q31_t) ((sum * t) >> 14u); + + /* Reset the accumulator */ + sum = 0; + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* Reset the input working pointer */ + pSrc = pIn; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + q63_t sumOfSquares = 0; /* Accumulator */ + q15_t in; /* Temporary variable */ + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sumOfSquares. */ + in = *pSrc++; + sumOfSquares += (in * in); + + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Mean of squares of the input samples + * and then store the result in a temporary variable, meanOfSquares. */ + t = (q15_t) ((1.0f / (float32_t) (blockSize - 1u)) * 16384); + sumOfSquares = __SSAT((sumOfSquares >> 15u), 16u); + meanOfSquares = (q31_t) ((sumOfSquares * t) >> 14u); + + +#endif /* #ifndef ARM_MATH_CM0 */ + + /* Compute mean of all input values */ + t = (q15_t) ((1.0f / (float32_t) (blockSize * (blockSize - 1u))) * 32768); + mean = __SSAT(sum, 16u); + + /* Compute square of mean */ + squareOfMean = ((q31_t) mean * mean) >> 15; + squareOfMean = (q31_t) (((q63_t) squareOfMean * t) >> 15); + + /* Compute variance and then store the result to the destination */ + *pResult = (meanOfSquares - squareOfMean); + +} + +/** + * @} end of variance group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q31.c new file mode 100644 index 000000000..c22f0224e --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q31.c @@ -0,0 +1,216 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_var_q31.c +* +* Description: Variance of an array of Q31 type. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup variance + * @{ + */ + +/** + * @brief Variance of the elements of a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult variance value returned here + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + *\par + * The function is implemented using an internal 64-bit accumulator. + * The input is represented in 1.31 format, and intermediate multiplication + * yields a 2.62 format. + * The accumulator maintains full precision of the intermediate multiplication results, + * but provides only a single guard bit. + * There is no saturation on intermediate additions. + * If the accumulator overflows it wraps around and distorts the result. + * In order to avoid overflows completely the input signal must be scaled down by + * log2(blockSize) bits, as a total of blockSize additions are performed internally. + * Finally, the 2.62 accumulator is right shifted by 31 bits to yield a 1.31 format value. + * + */ + + +void arm_var_q31( + q31_t * pSrc, + uint32_t blockSize, + q63_t * pResult) +{ + q63_t sum = 0; /* Accumulator */ + q31_t meanOfSquares, squareOfMean; /* Mean of square and square of mean */ + q31_t mean; /* Mean */ + q31_t in; /* Input variable */ + q31_t t; /* Temporary variable */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t *pIn; /* Temporary pointer */ + + pIn = pSrc; + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += ((q63_t) (in) * (in)); + in = *pSrc++; + sum += ((q63_t) (in) * (in)); + in = *pSrc++; + sum += ((q63_t) (in) * (in)); + in = *pSrc++; + sum += ((q63_t) (in) * (in)); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += ((q63_t) (in) * (in)); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Mean of squares of the input samples + * and then store the result in a temporary variable, meanOfSquares. */ + t = (q31_t) ((1.0 / (blockSize - 1)) * 1073741824LL); + sum = (sum >> 31); + meanOfSquares = (q31_t) ((sum * t) >> 30); + + /* Reset the accumulator */ + sum = 0; + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* Reset the input working pointer */ + pSrc = pIn; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + q63_t sumOfSquares = 0; /* Accumulator */ + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sumOfSquares. */ + in = *pSrc++; + sumOfSquares += ((q63_t) (in) * (in)); + + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Mean of squares of the input samples + * and then store the result in a temporary variable, meanOfSquares. */ + t = (q31_t) ((1.0 / (blockSize - 1)) * 1073741824LL); + sumOfSquares = (sumOfSquares >> 31); + meanOfSquares = (q31_t) ((sumOfSquares * t) >> 30); + +#endif /* #ifndef ARM_MATH_CM0 */ + + /* Compute mean of all input values */ + t = (q31_t) ((1.0 / (blockSize * (blockSize - 1u))) * 2147483648LL); + mean = (q31_t) (sum); + + /* Compute square of mean */ + squareOfMean = (q31_t) (((q63_t) mean * mean) >> 31); + squareOfMean = (q31_t) (((q63_t) squareOfMean * t) >> 31); + + /* Compute variance and then store the result to the destination */ + *pResult = (q63_t) meanOfSquares - squareOfMean; + +} + +/** + * @} end of variance group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_f32.c new file mode 100644 index 000000000..86652cd35 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_f32.c @@ -0,0 +1,121 @@ +/* ---------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_copy_f32.c +* +* Description: Copies the elements of a floating-point vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @defgroup copy Vector Copy + * + * Copies sample by sample from source vector to destination vector. + * + *
   
+ * 	pDst[n] = pSrc[n];   0 <= n < blockSize.   
+ * 
+ * + * There are separate functions for floating point, Q31, Q15, and Q7 data types. + */ + +/** + * @addtogroup copy + * @{ + */ + +/** + * @brief Copies the elements of a floating-point vector. + * @param[in] *pSrc points to input vector + * @param[out] *pDst points to output vector + * @param[in] blockSize length of the input vector + * @return none. + * + */ + + +void arm_copy_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A */ + /* Copy and then store the results in the destination buffer */ + *pDst++ = *pSrc++; + *pDst++ = *pSrc++; + *pDst++ = *pSrc++; + *pDst++ = *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = A */ + /* Copy and then store the results in the destination buffer */ + *pDst++ = *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicCopy group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q15.c new file mode 100644 index 000000000..d1a9c48a6 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q15.c @@ -0,0 +1,130 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_copy_q15.c +* +* Description: Copies the elements of a Q15 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup copy + * @{ + */ +/** + * @brief Copies the elements of a Q15 vector. + * @param[in] *pSrc points to input vector + * @param[out] *pDst points to output vector + * @param[in] blockSize length of the input vector + * @return none. + * + */ + +void arm_copy_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t in1, in2; /* Temporary variables */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A */ + /* Read two inputs */ + in1 = *pSrc++; + in2 = *pSrc++; + +#ifndef ARM_MATH_BIG_ENDIAN + + /* Store the values in the destination buffer by packing the two inputs */ + *__SIMD32(pDst)++ = __PKHBT(in1, in2, 16); + + in1 = *pSrc++; + in2 = *pSrc++; + *__SIMD32(pDst)++ = __PKHBT(in1, in2, 16); + +#else + + /* Store the values in the destination buffer by packing the two inputs */ + *__SIMD32(pDst)++ = __PKHBT(in2, in1, 16); + + in1 = *pSrc++; + in2 = *pSrc++; + *__SIMD32(pDst)++ = __PKHBT(in2, in1, 16); + + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = A */ + /* Copy and then store the value in the destination buffer */ + *pDst++ = *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicCopy group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q31.c new file mode 100644 index 000000000..db445b305 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q31.c @@ -0,0 +1,109 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_copy_q31.c +* +* Description: Copies the elements of a Q31 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup copy + * @{ + */ + +/** + * @brief Copies the elements of a Q31 vector. + * @param[in] *pSrc points to input vector + * @param[out] *pDst points to output vector + * @param[in] blockSize length of the input vector + * @return none. + * + */ + +void arm_copy_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A */ + /* Copy and then store the values in the destination buffer */ + *pDst++ = *pSrc++; + *pDst++ = *pSrc++; + *pDst++ = *pSrc++; + *pDst++ = *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = A */ + /* Copy and then store the value in the destination buffer */ + *pDst++ = *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicCopy group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q7.c new file mode 100644 index 000000000..57647d864 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q7.c @@ -0,0 +1,107 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_copy_q7.c +* +* Description: Copies the elements of a Q7 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup copy + * @{ + */ + +/** + * @brief Copies the elements of a Q7 vector. + * @param[in] *pSrc points to input vector + * @param[out] *pDst points to output vector + * @param[in] blockSize length of the input vector + * @return none. + * + */ + +void arm_copy_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = A */ + /* Copy and then store the results in the destination buffer */ + /* 4 samples are copied and stored at a time using SIMD */ + *__SIMD32(pDst)++ = *__SIMD32(pSrc)++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + + while(blkCnt > 0u) + { + /* C = A */ + /* Copy and then store the results in the destination buffer */ + *pDst++ = *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicCopy group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_f32.c new file mode 100644 index 000000000..ec9e2a153 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_f32.c @@ -0,0 +1,122 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fill_f32.c +* +* Description: Fills a constant value into a floating-point vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @defgroup Fill Vector Fill + * + * Fills the destination vector with a constant value. + * + *
   
+ * 	pDst[n] = value;   0 <= n < blockSize.   
+ * 
+ * + * There are separate functions for floating point, Q31, Q15, and Q7 data types. + */ + +/** + * @addtogroup Fill + * @{ + */ + +/** + * @brief Fills a constant value into a floating-point vector. + * @param[in] value input value to be filled + * @param[out] *pDst points to output vector + * @param[in] blockSize length of the output vector + * @return none. + * + */ + + +void arm_fill_f32( + float32_t value, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = value */ + /* Fill the value in the destination buffer */ + *pDst++ = value; + *pDst++ = value; + *pDst++ = value; + *pDst++ = value; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + + while(blkCnt > 0u) + { + /* C = value */ + /* Fill the value in the destination buffer */ + *pDst++ = value; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of Fill group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q15.c new file mode 100644 index 000000000..2d8d7ad71 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q15.c @@ -0,0 +1,112 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fill_q15.c +* +* Description: Fills a constant value into a Q15 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup Fill + * @{ + */ + +/** + * @brief Fills a constant value into a Q15 vector. + * @param[in] value input value to be filled + * @param[out] *pDst points to output vector + * @param[in] blockSize length of the output vector + * @return none. + * + */ + +void arm_fill_q15( + q15_t value, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t packedValue; /* value packed to 32 bits */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* Packing two 16 bit values to 32 bit value in order to use SIMD */ + packedValue = __PKHBT(value, value, 16u); + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = value */ + /* Fill the value in the destination buffer */ + *__SIMD32(pDst)++ = packedValue; + *__SIMD32(pDst)++ = packedValue; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = value */ + /* Fill the value in the destination buffer */ + *pDst++ = value; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of Fill group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q31.c new file mode 100644 index 000000000..559f671d4 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q31.c @@ -0,0 +1,109 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fill_q31.c +* +* Description: Fills a constant value into a Q31 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup Fill + * @{ + */ + +/** + * @brief Fills a constant value into a Q31 vector. + * @param[in] value input value to be filled + * @param[out] *pDst points to output vector + * @param[in] blockSize length of the output vector + * @return none. + * + */ + +void arm_fill_q31( + q31_t value, + q31_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = value */ + /* Fill the value in the destination buffer */ + *pDst++ = value; + *pDst++ = value; + *pDst++ = value; + *pDst++ = value; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = value */ + /* Fill the value in the destination buffer */ + *pDst++ = value; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of Fill group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q7.c new file mode 100644 index 000000000..277f918b6 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q7.c @@ -0,0 +1,110 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_fill_q7.c +* +* Description: Fills a constant value into a Q7 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup Fill + * @{ + */ + +/** + * @brief Fills a constant value into a Q7 vector. + * @param[in] value input value to be filled + * @param[out] *pDst points to output vector + * @param[in] blockSize length of the output vector + * @return none. + * + */ + +void arm_fill_q7( + q7_t value, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t packedValue; /* value packed to 32 bits */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* Packing four 8 bit values to 32 bit value in order to use SIMD */ + packedValue = __PACKq7(value, value, value, value); + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = value */ + /* Fill the value in the destination buffer */ + *__SIMD32(pDst)++ = packedValue; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = value */ + /* Fill the value in the destination buffer */ + *pDst++ = value; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of Fill group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q15.c new file mode 100644 index 000000000..c0f354d09 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q15.c @@ -0,0 +1,193 @@ +/* ---------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_float_to_q15.c +* +* Description: Converts the elements of the floating-point vector to Q15 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup float_to_x + * @{ + */ + +/** + * @brief Converts the elements of the floating-point vector to Q15 vector. + * @param[in] *pSrc points to the floating-point input vector + * @param[out] *pDst points to the Q15 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * \par + * The equation used for the conversion process is: + *
   
+ * 	pDst[n] = (q15_t)(pSrc[n] * 32768);   0 <= n < blockSize.   
+ * 
+ * \par Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. + * \note + * In order to apply rounding, the library should be rebuilt with the ROUNDING macro + * defined in the preprocessor section of project options. + * + */ + + +void arm_float_to_q15( + float32_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + float32_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#ifdef ARM_MATH_ROUNDING + + float32_t in; + +#endif /* #ifdef ARM_MATH_ROUNDING */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + +#ifdef ARM_MATH_ROUNDING + /* C = A * 32768 */ + /* convert from float to q15 and then store the results in the destination buffer */ + in = *pIn++; + in = (in * 32768.0f); + in += in > 0 ? 0.5 : -0.5; + *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16)); + + in = *pIn++; + in = (in * 32768.0f); + in += in > 0 ? 0.5 : -0.5; + *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16)); + + in = *pIn++; + in = (in * 32768.0f); + in += in > 0 ? 0.5 : -0.5; + *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16)); + + in = *pIn++; + in = (in * 32768.0f); + in += in > 0 ? 0.5 : -0.5; + *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16)); + +#else + + /* C = A * 32768 */ + /* convert from float to q15 and then store the results in the destination buffer */ + *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16); + *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16); + *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16); + *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16); + +#endif /* #ifdef ARM_MATH_ROUNDING */ + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + +#ifdef ARM_MATH_ROUNDING + /* C = A * 32768 */ + /* convert from float to q15 and then store the results in the destination buffer */ + in = *pIn++; + in = (in * 32768.0f); + in += in > 0 ? 0.5 : -0.5; + *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16)); + +#else + + /* C = A * 32768 */ + /* convert from float to q15 and then store the results in the destination buffer */ + *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16); + +#endif /* #ifdef ARM_MATH_ROUNDING */ + + /* Decrement the loop counter */ + blkCnt--; + } + + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + +#ifdef ARM_MATH_ROUNDING + /* C = A * 32768 */ + /* convert from float to q15 and then store the results in the destination buffer */ + in = *pIn++; + in = (in * 32768.0f); + in += in > 0 ? 0.5f : -0.5f; + *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16)); + +#else + + /* C = A * 32768 */ + /* convert from float to q15 and then store the results in the destination buffer */ + *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16); + +#endif /* #ifdef ARM_MATH_ROUNDING */ + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of float_to_x group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q31.c new file mode 100644 index 000000000..4d77624c7 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q31.c @@ -0,0 +1,200 @@ +/* ---------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_float_to_q31.c +* +* Description: Converts the elements of the floating-point vector to Q31 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @defgroup float_to_x Convert 32-bit floating point value + */ + +/** + * @addtogroup float_to_x + * @{ + */ + +/** + * @brief Converts the elements of the floating-point vector to Q31 vector. + * @param[in] *pSrc points to the floating-point input vector + * @param[out] *pDst points to the Q31 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + *\par Description: + * \par + * The equation used for the conversion process is: + * + *
   
+ * 	pDst[n] = (q31_t)(pSrc[n] * 2147483648);   0 <= n < blockSize.   
+ * 
+ * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated. + * + * \note In order to apply rounding, the library should be rebuilt with the ROUNDING macro + * defined in the preprocessor section of project options. + */ + + +void arm_float_to_q31( + float32_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + float32_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#ifdef ARM_MATH_ROUNDING + + float32_t in; + +#endif /* #ifdef ARM_MATH_ROUNDING */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + +#ifdef ARM_MATH_ROUNDING + + /* C = A * 32768 */ + /* convert from float to Q31 and then store the results in the destination buffer */ + in = *pIn++; + in = (in * 2147483648.0f); + in += in > 0 ? 0.5 : -0.5; + *pDst++ = clip_q63_to_q31((q63_t) (in)); + + in = *pIn++; + in = (in * 2147483648.0f); + in += in > 0 ? 0.5 : -0.5; + *pDst++ = clip_q63_to_q31((q63_t) (in)); + + in = *pIn++; + in = (in * 2147483648.0f); + in += in > 0 ? 0.5 : -0.5; + *pDst++ = clip_q63_to_q31((q63_t) (in)); + + in = *pIn++; + in = (in * 2147483648.0f); + in += in > 0 ? 0.5 : -0.5; + *pDst++ = clip_q63_to_q31((q63_t) (in)); + +#else + + /* C = A * 2147483648 */ + /* convert from float to Q31 and then store the results in the destination buffer */ + *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f)); + *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f)); + *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f)); + *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f)); + +#endif /* #ifdef ARM_MATH_ROUNDING */ + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + +#ifdef ARM_MATH_ROUNDING + + /* C = A * 2147483648 */ + /* convert from float to Q31 and then store the results in the destination buffer */ + in = *pIn++; + in = (in * 2147483648.0f); + in += in > 0 ? 0.5 : -0.5; + *pDst++ = clip_q63_to_q31((q63_t) (in)); + +#else + + /* C = A * 2147483648 */ + /* convert from float to Q31 and then store the results in the destination buffer */ + *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f)); + +#endif /* #ifdef ARM_MATH_ROUNDING */ + + /* Decrement the loop counter */ + blkCnt--; + } + + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { + +#ifdef ARM_MATH_ROUNDING + + /* C = A * 2147483648 */ + /* convert from float to Q31 and then store the results in the destination buffer */ + in = *pIn++; + in = (in * 2147483648.0f); + in += in > 0 ? 0.5f : -0.5f; + *pDst++ = clip_q63_to_q31((q63_t) (in)); + +#else + + /* C = A * 2147483648 */ + /* convert from float to Q31 and then store the results in the destination buffer */ + *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f)); + +#endif /* #ifdef ARM_MATH_ROUNDING */ + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of float_to_x group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q7.c new file mode 100644 index 000000000..1a8a4a5a0 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q7.c @@ -0,0 +1,192 @@ +/* ---------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_float_to_q7.c +* +* Description: Converts the elements of the floating-point vector to Q7 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup float_to_x + * @{ + */ + +/** + * @brief Converts the elements of the floating-point vector to Q7 vector. + * @param[in] *pSrc points to the floating-point input vector + * @param[out] *pDst points to the Q7 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + *\par Description: + * \par + * The equation used for the conversion process is: + *
   
+ * 	pDst[n] = (q7_t)(pSrc[n] * 128);   0 <= n < blockSize.   
+ * 
+ * \par Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated. + * \note + * In order to apply rounding, the library should be rebuilt with the ROUNDING macro + * defined in the preprocessor section of project options. + */ + + +void arm_float_to_q7( + float32_t * pSrc, + q7_t * pDst, + uint32_t blockSize) +{ + float32_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#ifdef ARM_MATH_ROUNDING + + float32_t in; + +#endif /* #ifdef ARM_MATH_ROUNDING */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + +#ifdef ARM_MATH_ROUNDING + /* C = A * 128 */ + /* convert from float to q7 and then store the results in the destination buffer */ + in = *pIn++; + in = (in * 128); + in += in > 0 ? 0.5 : -0.5; + *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8)); + + in = *pIn++; + in = (in * 128); + in += in > 0 ? 0.5 : -0.5; + *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8)); + + in = *pIn++; + in = (in * 128); + in += in > 0 ? 0.5 : -0.5; + *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8)); + + in = *pIn++; + in = (in * 128); + in += in > 0 ? 0.5 : -0.5; + *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8)); + +#else + + /* C = A * 128 */ + /* convert from float to q7 and then store the results in the destination buffer */ + *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8); + *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8); + *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8); + *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8); + +#endif /* #ifdef ARM_MATH_ROUNDING */ + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + + while(blkCnt > 0u) + { + +#ifdef ARM_MATH_ROUNDING + /* C = A * 128 */ + /* convert from float to q7 and then store the results in the destination buffer */ + in = *pIn++; + in = (in * 128); + in += in > 0 ? 0.5 : -0.5; + *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8)); + +#else + + /* C = A * 128 */ + /* convert from float to q7 and then store the results in the destination buffer */ + *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8); + +#endif /* #ifdef ARM_MATH_ROUNDING */ + + /* Decrement the loop counter */ + blkCnt--; + } + + +#else + + /* Run the below code for Cortex-M0 */ + + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while(blkCnt > 0u) + { +#ifdef ARM_MATH_ROUNDING + /* C = A * 128 */ + /* convert from float to q7 and then store the results in the destination buffer */ + in = *pIn++; + in = (in * 128.0f); + in += in > 0 ? 0.5f : -0.5f; + *pDst++ = (q7_t) (__SSAT((q31_t) (in), 8)); + +#else + + /* C = A * 128 */ + /* convert from float to q7 and then store the results in the destination buffer */ + *pDst++ = (q7_t) __SSAT((q31_t) (*pIn++ * 128.0f), 8); + +#endif /* #ifdef ARM_MATH_ROUNDING */ + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of float_to_x group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_float.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_float.c new file mode 100644 index 000000000..42aa0727c --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_float.c @@ -0,0 +1,123 @@ +/* ---------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_q15_to_float.c +* +* Description: Converts the elements of the Q15 vector to floating-point vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @defgroup q15_to_x Convert 16-bit Integer value + */ + +/** + * @addtogroup q15_to_x + * @{ + */ + + + + +/** + * @brief Converts the elements of the Q15 vector to floating-point vector. + * @param[in] *pSrc points to the Q15 input vector + * @param[out] *pDst points to the floating-point output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * + * The equation used for the conversion process is: + * + *
   
+ * 	pDst[n] = (float32_t) pSrc[n] / 32768;   0 <= n < blockSize.   
+ * 
+ * + */ + + +void arm_q15_to_float( + q15_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + q15_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (float32_t) A / 32768 */ + /* convert from q15 to float and then store the results in the destination buffer */ + *pDst++ = ((float32_t) * pIn++ / 32768.0f); + *pDst++ = ((float32_t) * pIn++ / 32768.0f); + *pDst++ = ((float32_t) * pIn++ / 32768.0f); + *pDst++ = ((float32_t) * pIn++ / 32768.0f); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = (float32_t) A / 32768 */ + /* convert from q15 to float and then store the results in the destination buffer */ + *pDst++ = ((float32_t) * pIn++ / 32768.0f); + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of q15_to_x group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q31.c new file mode 100644 index 000000000..16043e058 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q31.c @@ -0,0 +1,116 @@ +/* ---------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_q15_to_q31.c +* +* Description: Converts the elements of the Q15 vector to Q31 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup q15_to_x + * @{ + */ + +/** + * @brief Converts the elements of the Q15 vector to Q31 vector. + * @param[in] *pSrc points to the Q15 input vector + * @param[out] *pDst points to the Q31 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * + * The equation used for the conversion process is: + * + *
   
+ * 	pDst[n] = (q31_t) pSrc[n] << 16;   0 <= n < blockSize.   
+ * 
+ * + */ + + +void arm_q15_to_q31( + q15_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q15_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (q31_t)A << 16 */ + /* convert from q15 to q31 and then store the results in the destination buffer */ + *pDst++ = (q31_t) * pIn++ << 16; + *pDst++ = (q31_t) * pIn++ << 16; + *pDst++ = (q31_t) * pIn++ << 16; + *pDst++ = (q31_t) * pIn++ << 16; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = (q31_t)A << 16 */ + /* convert from q15 to q31 and then store the results in the destination buffer */ + *pDst++ = (q31_t) * pIn++ << 16; + + /* Decrement the loop counter */ + blkCnt--; + } + +} + +/** + * @} end of q15_to_x group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q7.c new file mode 100644 index 000000000..0ca22df2c --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q7.c @@ -0,0 +1,117 @@ +/* ---------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_q15_to_q7.c +* +* Description: Converts the elements of the Q15 vector to Q7 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup q15_to_x + * @{ + */ + + +/** + * @brief Converts the elements of the Q15 vector to Q7 vector. + * @param[in] *pSrc points to the Q15 input vector + * @param[out] *pDst points to the Q7 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * + * The equation used for the conversion process is: + * + *
   
+ * 	pDst[n] = (q7_t) pSrc[n] >> 8;   0 <= n < blockSize.   
+ * 
+ * + */ + + +void arm_q15_to_q7( + q15_t * pSrc, + q7_t * pDst, + uint32_t blockSize) +{ + q15_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (q7_t) A >> 8 */ + /* convert from q15 to q7 and then store the results in the destination buffer */ + *pDst++ = (q7_t) (*pIn++ >> 8); + *pDst++ = (q7_t) (*pIn++ >> 8); + *pDst++ = (q7_t) (*pIn++ >> 8); + *pDst++ = (q7_t) (*pIn++ >> 8); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = (q7_t) A >> 8 */ + /* convert from q15 to q7 and then store the results in the destination buffer */ + *pDst++ = (q7_t) (*pIn++ >> 8); + + /* Decrement the loop counter */ + blkCnt--; + } + +} + +/** + * @} end of q15_to_x group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_float.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_float.c new file mode 100644 index 000000000..48a76946a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_float.c @@ -0,0 +1,120 @@ +/* ---------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_q31_to_float.c +* +* Description: Converts the elements of the Q31 vector to floating-point vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @defgroup q31_to_x Convert 32-bit Integer value + */ + +/** + * @addtogroup q31_to_x + * @{ + */ + +/** + * @brief Converts the elements of the Q31 vector to floating-point vector. + * @param[in] *pSrc points to the Q31 input vector + * @param[out] *pDst points to the floating-point output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * + * The equation used for the conversion process is: + * + *
   
+ * 	pDst[n] = (float32_t) pSrc[n] / 2147483648;   0 <= n < blockSize.   
+ * 
+ * + */ + + +void arm_q31_to_float( + q31_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + q31_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (float32_t) A / 2147483648 */ + /* convert from q31 to float and then store the results in the destination buffer */ + *pDst++ = ((float32_t) * pIn++ / 2147483648.0f); + *pDst++ = ((float32_t) * pIn++ / 2147483648.0f); + *pDst++ = ((float32_t) * pIn++ / 2147483648.0f); + *pDst++ = ((float32_t) * pIn++ / 2147483648.0f); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = (float32_t) A / 2147483648 */ + /* convert from q31 to float and then store the results in the destination buffer */ + *pDst++ = ((float32_t) * pIn++ / 2147483648.0f); + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of q31_to_x group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q15.c new file mode 100644 index 000000000..dafc1d888 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q15.c @@ -0,0 +1,116 @@ +/* ---------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_q31_to_q15.c +* +* Description: Converts the elements of the Q31 vector to Q15 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup q31_to_x + * @{ + */ + +/** + * @brief Converts the elements of the Q31 vector to Q15 vector. + * @param[in] *pSrc points to the Q31 input vector + * @param[out] *pDst points to the Q15 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * + * The equation used for the conversion process is: + * + *
   
+ * 	pDst[n] = (q15_t) pSrc[n] >> 16;   0 <= n < blockSize.   
+ * 
+ * + */ + + +void arm_q31_to_q15( + q31_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q31_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (q15_t) A >> 16 */ + /* convert from q31 to q15 and then store the results in the destination buffer */ + *pDst++ = (q15_t) (*pIn++ >> 16); + *pDst++ = (q15_t) (*pIn++ >> 16); + *pDst++ = (q15_t) (*pIn++ >> 16); + *pDst++ = (q15_t) (*pIn++ >> 16); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = (q15_t) A >> 16 */ + /* convert from q31 to q15 and then store the results in the destination buffer */ + *pDst++ = (q15_t) (*pIn++ >> 16); + + /* Decrement the loop counter */ + blkCnt--; + } + +} + +/** + * @} end of q31_to_x group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q7.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q7.c new file mode 100644 index 000000000..c7aedb04f --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q7.c @@ -0,0 +1,116 @@ +/* ---------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_q31_to_q7.c +* +* Description: Converts the elements of the Q31 vector to Q7 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup q31_to_x + * @{ + */ + +/** + * @brief Converts the elements of the Q31 vector to Q7 vector. + * @param[in] *pSrc points to the Q31 input vector + * @param[out] *pDst points to the Q7 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * + * The equation used for the conversion process is: + * + *
   
+ * 	pDst[n] = (q7_t) pSrc[n] >> 24;   0 <= n < blockSize.    
+ * 
+ * + */ + + +void arm_q31_to_q7( + q31_t * pSrc, + q7_t * pDst, + uint32_t blockSize) +{ + q31_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (q7_t) A >> 24 */ + /* convert from q31 to q7 and then store the results in the destination buffer */ + *pDst++ = (q7_t) (*pIn++ >> 24); + *pDst++ = (q7_t) (*pIn++ >> 24); + *pDst++ = (q7_t) (*pIn++ >> 24); + *pDst++ = (q7_t) (*pIn++ >> 24); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = (q7_t) A >> 24 */ + /* convert from q31 to q7 and then store the results in the destination buffer */ + *pDst++ = (q7_t) (*pIn++ >> 24); + + /* Decrement the loop counter */ + blkCnt--; + } + +} + +/** + * @} end of q31_to_x group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_float.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_float.c new file mode 100644 index 000000000..866996925 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_float.c @@ -0,0 +1,120 @@ +/* ---------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_q7_to_float.c +* +* Description: Converts the elements of the Q7 vector to floating-point vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @defgroup q7_to_x Convert 8-bit Integer value + */ + +/** + * @addtogroup q7_to_x + * @{ + */ + +/** + * @brief Converts the elements of the Q7 vector to floating-point vector. + * @param[in] *pSrc points to the Q7 input vector + * @param[out] *pDst points to the floating-point output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * + * The equation used for the conversion process is: + * + *
   
+ * 	pDst[n] = (float32_t) pSrc[n] / 128;   0 <= n < blockSize.   
+ * 
+ * + */ + + +void arm_q7_to_float( + q7_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + q7_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (float32_t) A / 128 */ + /* convert from q7 to float and then store the results in the destination buffer */ + *pDst++ = ((float32_t) * pIn++ / 128.0f); + *pDst++ = ((float32_t) * pIn++ / 128.0f); + *pDst++ = ((float32_t) * pIn++ / 128.0f); + *pDst++ = ((float32_t) * pIn++ / 128.0f); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = (float32_t) A / 128 */ + /* convert from q7 to float and then store the results in the destination buffer */ + *pDst++ = ((float32_t) * pIn++ / 128.0f); + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of q7_to_x group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q15.c new file mode 100644 index 000000000..9d3b29283 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q15.c @@ -0,0 +1,119 @@ +/* ---------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_q7_to_q15.c +* +* Description: Converts the elements of the Q7 vector to Q15 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup q7_to_x + * @{ + */ + + + + +/** + * @brief Converts the elements of the Q7 vector to Q15 vector. + * @param[in] *pSrc points to the Q7 input vector + * @param[out] *pDst points to the Q15 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * + * The equation used for the conversion process is: + * + *
   
+ * 	pDst[n] = (q15_t) pSrc[n] << 8;   0 <= n < blockSize.   
+ * 
+ * + */ + + +void arm_q7_to_q15( + q7_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q7_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (q15_t) A << 8 */ + /* convert from q7 to q15 and then store the results in the destination buffer */ + *pDst++ = (q15_t) * pIn++ << 8; + *pDst++ = (q15_t) * pIn++ << 8; + *pDst++ = (q15_t) * pIn++ << 8; + *pDst++ = (q15_t) * pIn++ << 8; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = (q15_t) A << 8 */ + /* convert from q7 to q15 and then store the results in the destination buffer */ + *pDst++ = (q15_t) * pIn++ << 8; + + /* Decrement the loop counter */ + blkCnt--; + } + +} + +/** + * @} end of q7_to_x group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q31.c new file mode 100644 index 000000000..11f265619 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q31.c @@ -0,0 +1,116 @@ +/* ---------------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_q7_to_q31.c +* +* Description: Converts the elements of the Q7 vector to Q31 vector. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* ---------------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup q7_to_x + * @{ + */ + +/** + * @brief Converts the elements of the Q7 vector to Q31 vector. + * @param[in] *pSrc points to the Q7 input vector + * @param[out] *pDst points to the Q31 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * + * The equation used for the conversion process is: + * + *
   
+ * 	pDst[n] = (q31_t) pSrc[n] << 24;   0 <= n < blockSize.  
+ * 
+ * + */ + + +void arm_q7_to_q31( + q7_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q7_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while(blkCnt > 0u) + { + /* C = (q31_t) A << 24 */ + /* convert from q7 to q31 and then store the results in the destination buffer */ + *pDst++ = (q31_t) * pIn++ << 24; + *pDst++ = (q31_t) * pIn++ << 24; + *pDst++ = (q31_t) * pIn++ << 24; + *pDst++ = (q31_t) * pIn++ << 24; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0 */ + + while(blkCnt > 0u) + { + /* C = (q31_t) A << 24 */ + /* convert from q7 to q31 and then store the results in the destination buffer */ + *pDst++ = (q31_t) * pIn++ << 24; + + /* Decrement the loop counter */ + blkCnt--; + } + +} + +/** + * @} end of q7_to_x group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_f32.c new file mode 100644 index 000000000..7dfe4c349 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_f32.c @@ -0,0 +1,1236 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_cfft_radix4_f32.c +* +* Description: Radix-4 Decimation in Frequency CFFT & CIFFT Floating point processing function +* +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupTransforms + */ + +/** + * @defgroup CFFT_CIFFT Complex FFT Functions + * + * \par + * Complex Fast Fourier Transform(CFFT) and Complex Inverse Fast Fourier Transform(CIFFT) is an efficient algorithm to compute Discrete Fourier Transform(DFT) and Inverse Discrete Fourier Transform(IDFT). + * Computational complexity of CFFT reduces drastically when compared to DFT. + * \par + * This set of functions implements CFFT/CIFFT + * for Q15, Q31, and floating-point data types. The functions operates on in-place buffer which uses same buffer for input and output. + * Complex input is stored in input buffer in an interleaved fashion. + * + * \par + * The functions operate on blocks of input and output data and each call to the function processes + * 2*fftLen samples through the transform. pSrc points to In-place arrays containing 2*fftLen values. + * \par + * The pSrc points to the array of in-place buffer of size 2*fftLen and inputs and outputs are stored in an interleaved fashion as shown below. + *
 {real[0], imag[0], real[1], imag[1],..} 
+ * + * \par Lengths supported by the transform: + * \par + * Internally, the function utilize a radix-4 decimation in frequency(DIF) algorithm + * and the size of the FFT supported are of the lengths [16, 64, 256, 1024]. + * + * + * \par Algorithm: + * + * Complex Fast Fourier Transform: + * \par + * Input real and imaginary data: + *
   
+ * x(n) = xa + j * ya   
+ * x(n+N/4 ) = xb + j * yb   
+ * x(n+N/2 ) = xc + j * yc   
+ * x(n+3N 4) = xd + j * yd   
+ * 
+ * where N is length of FFT + * \par + * Output real and imaginary data: + *
   
+ * X(4r) = xa'+ j * ya'   
+ * X(4r+1) = xb'+ j * yb'   
+ * X(4r+2) = xc'+ j * yc'   
+ * X(4r+3) = xd'+ j * yd'   
+ * 
+ * \par + * Twiddle factors for radix-4 FFT: + *
   
+ * Wn = co1 + j * (- si1)   
+ * W2n = co2 + j * (- si2)   
+ * W3n = co3 + j * (- si3)   
+ * 
+ * + * \par + * \image html CFFT.gif "Radix-4 Decimation-in Frequency Complex Fast Fourier Transform" + * + * \par + * Output from Radix-4 CFFT Results in Digit reversal order. Interchange middle two branches of every butterfly results in Bit reversed output. + * \par + * Butterfly CFFT equations: + *
   
+ * xa' = xa + xb + xc + xd   
+ * ya' = ya + yb + yc + yd   
+ * xc' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1)   
+ * yc' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1)   
+ * xb' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2)   
+ * yb' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2)   
+ * xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3)   
+ * yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3)   
+ * 
+ * + * + * Complex Inverse Fast Fourier Transform: + * \par + * CIFFT uses same twiddle factor table as CFFT with modifications in the design equation as shown below. + * + * \par + * Modified Butterfly CIFFT equations: + *
   
+ * xa' = xa + xb + xc + xd   
+ * ya' = ya + yb + yc + yd   
+ * xc' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1)   
+ * yc' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1)   
+ * xb' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2)   
+ * yb' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2)   
+ * xd' = (xa+yb-xc-yd)* co3 - (ya-xb-yc+xd)* (si3)   
+ * yd' = (ya-xb-yc+xd)* co3 + (xa+yb-xc-yd)* (si3)   
+ * 
+ * + * \par Instance Structure + * A separate instance structure must be defined for each Instance but the twiddle factors and bit reversal tables can be reused. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Initializes twiddle factor table and bit reversal table pointers + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * Manually initialize the instance structure as follows: + *
   
+ *arm_cfft_radix4_instance_f32 S = {fftLen, ifftFlag, bitReverseFlag, pTwiddle, pBitRevTable, twidCoefModifier, bitRevFactor, onebyfftLen};   
+ *arm_cfft_radix4_instance_q31 S = {fftLen, ifftFlag, bitReverseFlag, pTwiddle, pBitRevTable, twidCoefModifier, bitRevFactor};   
+ *arm_cfft_radix4_instance_q15 S = {fftLen, ifftFlag, bitReverseFlag, pTwiddle, pBitRevTable, twidCoefModifier, bitRevFactor};   
+ * 
+ * \par + * where fftLen length of CFFT/CIFFT; ifftFlag Flag for selection of CFFT or CIFFT(Set ifftFlag to calculate CIFFT otherwise calculates CFFT); + * bitReverseFlag Flag for selection of output order(Set bitReverseFlag to output in normal order otherwise output in bit reversed order); + * pTwiddlepoints to array of twiddle coefficients; pBitRevTable points to the array of bit reversal table. + * twidCoefModifier modifier for twiddle factor table which supports all FFT lengths with same table; + * pBitRevTable modifier for bit reversal table which supports all FFT lengths with same table. + * onebyfftLen value of 1/fftLen to calculate CIFFT; + * + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the CFFT/CIFFT function. + * Refer to the function specific documentation below for usage guidelines. + */ + + +/** + * @addtogroup CFFT_CIFFT + * @{ + */ + +/** + * @details + * @brief Processing function for the floating-point CFFT/CIFFT. + * @param[in] *S points to an instance of the floating-point CFFT/CIFFT structure. + * @param[in, out] *pSrc points to the complex data buffer of size 2*fftLen. Processing occurs in-place. + * @return none. + */ + +void arm_cfft_radix4_f32( + const arm_cfft_radix4_instance_f32 * S, + float32_t * pSrc) +{ + + if(S->ifftFlag == 1u) + { + /* Complex IFFT radix-4 */ + arm_radix4_butterfly_inverse_f32(pSrc, S->fftLen, S->pTwiddle, + S->twidCoefModifier, S->onebyfftLen); + } + else + { + /* Complex FFT radix-4 */ + arm_radix4_butterfly_f32(pSrc, S->fftLen, S->pTwiddle, + S->twidCoefModifier); + } + + if(S->bitReverseFlag == 1u) + { + /* Bit Reversal */ + arm_bitreversal_f32(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable); + } + +} + + +/** + * @} end of CFFT_CIFFT group + */ + + + +/* ---------------------------------------------------------------------- +** Internal helper function used by the FFTs +** ------------------------------------------------------------------- */ + +/* + * @brief Core function for the floating-point CFFT butterfly process. + * @param[in, out] *pSrc points to the in-place buffer of floating-point data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef points to the twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + +void arm_radix4_butterfly_f32( + float32_t * pSrc, + uint16_t fftLen, + float32_t * pCoef, + uint16_t twidCoefModifier) +{ + + float32_t co1, co2, co3, si1, si2, si3; + float32_t t1, t2, r1, r2, s1, s2; + uint32_t ia1, ia2, ia3; + uint32_t i0, i1, i2, i3; + uint32_t n1, n2, j, k; + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + + /* n2 = fftLen/4 */ + n2 >>= 2u; + i0 = 0u; + ia1 = 0u; + + j = n2; + + /* Calculation of first stage */ + do + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Butterfly implementation */ + + /* xa + xc */ + r1 = pSrc[(2u * i0)] + pSrc[(2u * i2)]; + + /* xa - xc */ + r2 = pSrc[2u * i0] - pSrc[2u * i2]; + + /* ya + yc */ + s1 = pSrc[(2u * i0) + 1u] + pSrc[(2u * i2) + 1u]; + + /* ya - yc */ + s2 = pSrc[(2u * i0) + 1u] - pSrc[(2u * i2) + 1u]; + + /* xb + xd */ + t1 = pSrc[2u * i1] + pSrc[2u * i3]; + + /* xa' = xa + xb + xc + xd */ + pSrc[2u * i0] = r1 + t1; + + /* (xa + xc) - (xb + xd) */ + r1 = r1 - t1; + + /* yb + yd */ + t2 = pSrc[(2u * i1) + 1u] + pSrc[(2u * i3) + 1u]; + + /* ya' = ya + yb + yc + yd */ + pSrc[(2u * i0) + 1u] = s1 + t2; + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* yb - yd */ + t1 = pSrc[(2u * i1) + 1u] - pSrc[(2u * i3) + 1u]; + + /* xb - xd */ + t2 = pSrc[2u * i1] - pSrc[2u * i3]; + + /* index calculation for the coefficients */ + ia2 = ia1 + ia1; + co2 = pCoef[ia2 * 2u]; + si2 = pCoef[(ia2 * 2u) + 1u]; + + /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ + pSrc[2u * i1] = (r1 * co2) + (s1 * si2); + + /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ + pSrc[(2u * i1) + 1u] = (s1 * co2) - (r1 * si2); + + /* (xa - xc) + (yb - yd) */ + r1 = r2 + t1; + + /* (xa - xc) - (yb - yd) */ + r2 = r2 - t1; + + /* (ya - yc) - (xb - xd) */ + s1 = s2 - t2; + + /* (ya - yc) + (xb - xd) */ + s2 = s2 + t2; + + co1 = pCoef[ia1 * 2u]; + si1 = pCoef[(ia1 * 2u) + 1u]; + + /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ + pSrc[2u * i2] = (r1 * co1) + (s1 * si1); + + /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ + pSrc[(2u * i2) + 1u] = (s1 * co1) - (r1 * si1); + + /* index calculation for the coefficients */ + ia3 = ia2 + ia1; + co3 = pCoef[ia3 * 2u]; + si3 = pCoef[(ia3 * 2u) + 1u]; + + + /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ + pSrc[2u * i3] = (r2 * co3) + (s2 * si3); + + /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ + pSrc[(2u * i3) + 1u] = (s2 * co3) - (r2 * si3); + + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + /* Updating input index */ + i0 = i0 + 1u; + + } + while(--j); + + twidCoefModifier <<= 2u; + + /* Calculation of second stage to excluding last stage */ + for (k = fftLen / 4; k > 4u; k >>= 2u) + { + /* Initializations for the first stage */ + n1 = n2; + n2 >>= 2u; + ia1 = 0u; + + /* Calculation of first stage */ + for (j = 0u; j <= (n2 - 1u); j++) + { + /* index calculation for the coefficients */ + ia2 = ia1 + ia1; + ia3 = ia2 + ia1; + co1 = pCoef[ia1 * 2u]; + si1 = pCoef[(ia1 * 2u) + 1u]; + co2 = pCoef[ia2 * 2u]; + si2 = pCoef[(ia2 * 2u) + 1u]; + co3 = pCoef[ia3 * 2u]; + si3 = pCoef[(ia3 * 2u) + 1u]; + + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + for (i0 = j; i0 < fftLen; i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* xa + xc */ + r1 = pSrc[(2u * i0)] + pSrc[(2u * i2)]; + + /* xa - xc */ + r2 = pSrc[(2u * i0)] - pSrc[(2u * i2)]; + + /* ya + yc */ + s1 = pSrc[(2u * i0) + 1u] + pSrc[(2u * i2) + 1u]; + + /* ya - yc */ + s2 = pSrc[(2u * i0) + 1u] - pSrc[(2u * i2) + 1u]; + + /* xb + xd */ + t1 = pSrc[2u * i1] + pSrc[2u * i3]; + + /* xa' = xa + xb + xc + xd */ + pSrc[2u * i0] = r1 + t1; + + /* xa + xc -(xb + xd) */ + r1 = r1 - t1; + + /* yb + yd */ + t2 = pSrc[(2u * i1) + 1u] + pSrc[(2u * i3) + 1u]; + + /* ya' = ya + yb + yc + yd */ + pSrc[(2u * i0) + 1u] = s1 + t2; + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* (yb - yd) */ + t1 = pSrc[(2u * i1) + 1u] - pSrc[(2u * i3) + 1u]; + + /* (xb - xd) */ + t2 = pSrc[2u * i1] - pSrc[2u * i3]; + + /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ + pSrc[2u * i1] = (r1 * co2) + (s1 * si2); + + /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ + pSrc[(2u * i1) + 1u] = (s1 * co2) - (r1 * si2); + + /* (xa - xc) + (yb - yd) */ + r1 = r2 + t1; + + /* (xa - xc) - (yb - yd) */ + r2 = r2 - t1; + + /* (ya - yc) - (xb - xd) */ + s1 = s2 - t2; + + /* (ya - yc) + (xb - xd) */ + s2 = s2 + t2; + + /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ + pSrc[2u * i2] = (r1 * co1) + (s1 * si1); + + /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ + pSrc[(2u * i2) + 1u] = (s1 * co1) - (r1 * si1); + + /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ + pSrc[2u * i3] = (r2 * co3) + (s2 * si3); + + /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ + pSrc[(2u * i3) + 1u] = (s2 * co3) - (r2 * si3); + } + } + twidCoefModifier <<= 2u; + } + + /* Initializations of last stage */ + n1 = n2; + n2 >>= 2u; + + /* Calculations of last stage */ + for (i0 = 0u; i0 <= (fftLen - n1); i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Butterfly implementation */ + + /* xa + xb */ + r1 = pSrc[2u * i0] + pSrc[2u * i2]; + + /* xa - xb */ + r2 = pSrc[2u * i0] - pSrc[2u * i2]; + + /* ya + yc */ + s1 = pSrc[(2u * i0) + 1u] + pSrc[(2u * i2) + 1u]; + + /* ya - yc */ + s2 = pSrc[(2u * i0) + 1u] - pSrc[(2u * i2) + 1u]; + + /* xc + xd */ + t1 = pSrc[2u * i1] + pSrc[2u * i3]; + + /* xa' = xa + xb + xc + xd */ + pSrc[2u * i0] = r1 + t1; + + /* (xa + xb) - (xc + xd) */ + r1 = r1 - t1; + + /* yb + yd */ + t2 = pSrc[(2u * i1) + 1u] + pSrc[(2u * i3) + 1u]; + + /* ya' = ya + yb + yc + yd */ + pSrc[(2u * i0) + 1u] = s1 + t2; + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* (yb-yd) */ + t1 = pSrc[(2u * i1) + 1u] - pSrc[(2u * i3) + 1u]; + + /* (xb-xd) */ + t2 = pSrc[2u * i1] - pSrc[2u * i3]; + + /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ + pSrc[2u * i1] = r1; + + /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ + pSrc[(2u * i1) + 1u] = s1; + + /* (xa+yb-xc-yd) */ + r1 = r2 + t1; + + /* (xa-yb-xc+yd) */ + r2 = r2 - t1; + + /* (ya-xb-yc+xd) */ + s1 = s2 - t2; + + /* (ya+xb-yc-xd) */ + s2 = s2 + t2; + + /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ + pSrc[2u * i2] = r1; + + /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ + pSrc[(2u * i2) + 1u] = s1; + + /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ + pSrc[2u * i3] = r2; + + /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ + pSrc[(2u * i3) + 1u] = s2; + } + + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initializations for the fft calculation */ + n2 = fftLen; + n1 = n2; + for (k = fftLen; k > 1u; k >>= 2u) + { + /* Initializations for the fft calculation */ + n1 = n2; + n2 >>= 2u; + ia1 = 0u; + + /* FFT Calculation */ + for (j = 0u; j <= (n2 - 1u); j++) + { + /* index calculation for the coefficients */ + ia2 = ia1 + ia1; + ia3 = ia2 + ia1; + co1 = pCoef[ia1 * 2u]; + si1 = pCoef[(ia1 * 2u) + 1u]; + co2 = pCoef[ia2 * 2u]; + si2 = pCoef[(ia2 * 2u) + 1u]; + co3 = pCoef[ia3 * 2u]; + si3 = pCoef[(ia3 * 2u) + 1u]; + + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + for (i0 = j; i0 < fftLen; i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* xa + xc */ + r1 = pSrc[(2u * i0)] + pSrc[(2u * i2)]; + + /* xa - xc */ + r2 = pSrc[(2u * i0)] - pSrc[(2u * i2)]; + + /* ya + yc */ + s1 = pSrc[(2u * i0) + 1u] + pSrc[(2u * i2) + 1u]; + + /* ya - yc */ + s2 = pSrc[(2u * i0) + 1u] - pSrc[(2u * i2) + 1u]; + + /* xb + xd */ + t1 = pSrc[2u * i1] + pSrc[2u * i3]; + + /* xa' = xa + xb + xc + xd */ + pSrc[2u * i0] = r1 + t1; + + /* xa + xc -(xb + xd) */ + r1 = r1 - t1; + + /* yb + yd */ + t2 = pSrc[(2u * i1) + 1u] + pSrc[(2u * i3) + 1u]; + + /* ya' = ya + yb + yc + yd */ + pSrc[(2u * i0) + 1u] = s1 + t2; + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* (yb - yd) */ + t1 = pSrc[(2u * i1) + 1u] - pSrc[(2u * i3) + 1u]; + + /* (xb - xd) */ + t2 = pSrc[2u * i1] - pSrc[2u * i3]; + + /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ + pSrc[2u * i1] = (r1 * co2) + (s1 * si2); + + /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ + pSrc[(2u * i1) + 1u] = (s1 * co2) - (r1 * si2); + + /* (xa - xc) + (yb - yd) */ + r1 = r2 + t1; + + /* (xa - xc) - (yb - yd) */ + r2 = r2 - t1; + + /* (ya - yc) - (xb - xd) */ + s1 = s2 - t2; + + /* (ya - yc) + (xb - xd) */ + s2 = s2 + t2; + + /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ + pSrc[2u * i2] = (r1 * co1) + (s1 * si1); + + /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ + pSrc[(2u * i2) + 1u] = (s1 * co1) - (r1 * si1); + + /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ + pSrc[2u * i3] = (r2 * co3) + (s2 * si3); + + /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ + pSrc[(2u * i3) + 1u] = (s2 * co3) - (r2 * si3); + } + } + twidCoefModifier <<= 2u; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/* + * @brief Core function for the floating-point CIFFT butterfly process. + * @param[in, out] *pSrc points to the in-place buffer of floating-point data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef points to twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @param[in] onebyfftLen value of 1/fftLen. + * @return none. + */ + +void arm_radix4_butterfly_inverse_f32( + float32_t * pSrc, + uint16_t fftLen, + float32_t * pCoef, + uint16_t twidCoefModifier, + float32_t onebyfftLen) +{ + float32_t co1, co2, co3, si1, si2, si3; + float32_t t1, t2, r1, r2, s1, s2; + uint32_t ia1, ia2, ia3; + uint32_t i0, i1, i2, i3; + uint32_t n1, n2, j, k; + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + + /* n2 = fftLen/4 */ + n2 >>= 2u; + i0 = 0u; + ia1 = 0u; + + j = n2; + + /* Calculation of first stage */ + do + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Butterfly implementation */ + /* xa + xc */ + r1 = pSrc[(2u * i0)] + pSrc[(2u * i2)]; + + /* xa - xc */ + r2 = pSrc[2u * i0] - pSrc[2u * i2]; + + /* ya + yc */ + s1 = pSrc[(2u * i0) + 1u] + pSrc[(2u * i2) + 1u]; + + /* ya - yc */ + s2 = pSrc[(2u * i0) + 1u] - pSrc[(2u * i2) + 1u]; + + /* xb + xd */ + t1 = pSrc[2u * i1] + pSrc[2u * i3]; + + /* xa' = xa + xb + xc + xd */ + pSrc[2u * i0] = r1 + t1; + + /* (xa + xc) - (xb + xd) */ + r1 = r1 - t1; + + /* yb + yd */ + t2 = pSrc[(2u * i1) + 1u] + pSrc[(2u * i3) + 1u]; + + /* ya' = ya + yb + yc + yd */ + pSrc[(2u * i0) + 1u] = s1 + t2; + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* yb - yd */ + t1 = pSrc[(2u * i1) + 1u] - pSrc[(2u * i3) + 1u]; + + /* xb - xd */ + t2 = pSrc[2u * i1] - pSrc[2u * i3]; + + /* index calculation for the coefficients */ + ia2 = ia1 + ia1; + co2 = pCoef[ia2 * 2u]; + si2 = pCoef[(ia2 * 2u) + 1u]; + + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + pSrc[2u * i1] = (r1 * co2) - (s1 * si2); + + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + pSrc[(2u * i1) + 1u] = (s1 * co2) + (r1 * si2); + + /* (xa - xc) - (yb - yd) */ + r1 = r2 - t1; + + /* (xa - xc) + (yb - yd) */ + r2 = r2 + t1; + + /* (ya - yc) + (xb - xd) */ + s1 = s2 + t2; + + /* (ya - yc) - (xb - xd) */ + s2 = s2 - t2; + + co1 = pCoef[ia1 * 2u]; + si1 = pCoef[(ia1 * 2u) + 1u]; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + pSrc[2u * i2] = (r1 * co1) - (s1 * si1); + + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + pSrc[(2u * i2) + 1u] = (s1 * co1) + (r1 * si1); + + /* index calculation for the coefficients */ + ia3 = ia2 + ia1; + co3 = pCoef[ia3 * 2u]; + si3 = pCoef[(ia3 * 2u) + 1u]; + + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + pSrc[2u * i3] = (r2 * co3) - (s2 * si3); + + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + pSrc[(2u * i3) + 1u] = (s2 * co3) + (r2 * si3); + + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + /* Updating input index */ + i0 = i0 + 1u; + + } + while(--j); + + twidCoefModifier <<= 2u; + + /* Calculation of second stage to excluding last stage */ + for (k = fftLen / 4; k > 4u; k >>= 2u) + { + /* Initializations for the first stage */ + n1 = n2; + n2 >>= 2u; + ia1 = 0u; + + /* Calculation of first stage */ + for (j = 0u; j <= (n2 - 1u); j++) + { + /* index calculation for the coefficients */ + ia2 = ia1 + ia1; + ia3 = ia2 + ia1; + co1 = pCoef[ia1 * 2u]; + si1 = pCoef[(ia1 * 2u) + 1u]; + co2 = pCoef[ia2 * 2u]; + si2 = pCoef[(ia2 * 2u) + 1u]; + co3 = pCoef[ia3 * 2u]; + si3 = pCoef[(ia3 * 2u) + 1u]; + + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + for (i0 = j; i0 < fftLen; i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* xa + xc */ + r1 = pSrc[(2u * i0)] + pSrc[(2u * i2)]; + + /* xa - xc */ + r2 = pSrc[(2u * i0)] - pSrc[(2u * i2)]; + + /* ya + yc */ + s1 = pSrc[(2u * i0) + 1u] + pSrc[(2u * i2) + 1u]; + + /* ya - yc */ + s2 = pSrc[(2u * i0) + 1u] - pSrc[(2u * i2) + 1u]; + + /* xb + xd */ + t1 = pSrc[2u * i1] + pSrc[2u * i3]; + + /* xa' = xa + xb + xc + xd */ + pSrc[2u * i0] = r1 + t1; + + /* xa + xc -(xb + xd) */ + r1 = r1 - t1; + + /* yb + yd */ + t2 = pSrc[(2u * i1) + 1u] + pSrc[(2u * i3) + 1u]; + + /* ya' = ya + yb + yc + yd */ + pSrc[(2u * i0) + 1u] = s1 + t2; + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* (yb - yd) */ + t1 = pSrc[(2u * i1) + 1u] - pSrc[(2u * i3) + 1u]; + + /* (xb - xd) */ + t2 = pSrc[2u * i1] - pSrc[2u * i3]; + + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + pSrc[2u * i1] = (r1 * co2) - (s1 * si2); + + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + pSrc[(2u * i1) + 1u] = (s1 * co2) + (r1 * si2); + + /* (xa - xc) - (yb - yd) */ + r1 = r2 - t1; + + /* (xa - xc) + (yb - yd) */ + r2 = r2 + t1; + + /* (ya - yc) + (xb - xd) */ + s1 = s2 + t2; + + /* (ya - yc) - (xb - xd) */ + s2 = s2 - t2; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + pSrc[2u * i2] = (r1 * co1) - (s1 * si1); + + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + pSrc[(2u * i2) + 1u] = (s1 * co1) + (r1 * si1); + + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + pSrc[2u * i3] = (r2 * co3) - (s2 * si3); + + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + pSrc[(2u * i3) + 1u] = (s2 * co3) + (r2 * si3); + } + } + twidCoefModifier <<= 2u; + } + + /* Initializations of last stage */ + n1 = n2; + n2 >>= 2u; + + /* Calculations of last stage */ + for (i0 = 0u; i0 <= (fftLen - n1); i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Butterfly implementation */ + /* xa + xc */ + r1 = pSrc[2u * i0] + pSrc[2u * i2]; + + /* xa - xc */ + r2 = pSrc[2u * i0] - pSrc[2u * i2]; + + /* ya + yc */ + s1 = pSrc[(2u * i0) + 1u] + pSrc[(2u * i2) + 1u]; + + /* ya - yc */ + s2 = pSrc[(2u * i0) + 1u] - pSrc[(2u * i2) + 1u]; + + /* xc + xd */ + t1 = pSrc[2u * i1] + pSrc[2u * i3]; + + /* xa' = xa + xb + xc + xd */ + pSrc[2u * i0] = (r1 + t1) * onebyfftLen; + + /* (xa + xb) - (xc + xd) */ + r1 = r1 - t1; + + /* yb + yd */ + t2 = pSrc[(2u * i1) + 1u] + pSrc[(2u * i3) + 1u]; + + /* ya' = ya + yb + yc + yd */ + pSrc[(2u * i0) + 1u] = (s1 + t2) * onebyfftLen; + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* (yb-yd) */ + t1 = pSrc[(2u * i1) + 1u] - pSrc[(2u * i3) + 1u]; + + /* (xb-xd) */ + t2 = pSrc[2u * i1] - pSrc[2u * i3]; + + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + pSrc[2u * i1] = r1 * onebyfftLen; + + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + pSrc[(2u * i1) + 1u] = s1 * onebyfftLen; + + + /* (xa - xc) - (yb-yd) */ + r1 = r2 - t1; + + /* (xa - xc) + (yb-yd) */ + r2 = r2 + t1; + + /* (ya - yc) + (xb-xd) */ + s1 = s2 + t2; + + /* (ya - yc) - (xb-xd) */ + s2 = s2 - t2; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + pSrc[2u * i2] = r1 * onebyfftLen; + + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + pSrc[(2u * i2) + 1u] = s1 * onebyfftLen; + + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + pSrc[2u * i3] = r2 * onebyfftLen; + + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + pSrc[(2u * i3) + 1u] = s2 * onebyfftLen; + } + + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + + /* Calculation of first stage */ + for (k = fftLen; k > 4u; k >>= 2u) + { + /* Initializations for the first stage */ + n1 = n2; + n2 >>= 2u; + ia1 = 0u; + + /* Calculation of first stage */ + for (j = 0u; j <= (n2 - 1u); j++) + { + /* index calculation for the coefficients */ + ia2 = ia1 + ia1; + ia3 = ia2 + ia1; + co1 = pCoef[ia1 * 2u]; + si1 = pCoef[(ia1 * 2u) + 1u]; + co2 = pCoef[ia2 * 2u]; + si2 = pCoef[(ia2 * 2u) + 1u]; + co3 = pCoef[ia3 * 2u]; + si3 = pCoef[(ia3 * 2u) + 1u]; + + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + for (i0 = j; i0 < fftLen; i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* xa + xc */ + r1 = pSrc[(2u * i0)] + pSrc[(2u * i2)]; + + /* xa - xc */ + r2 = pSrc[(2u * i0)] - pSrc[(2u * i2)]; + + /* ya + yc */ + s1 = pSrc[(2u * i0) + 1u] + pSrc[(2u * i2) + 1u]; + + /* ya - yc */ + s2 = pSrc[(2u * i0) + 1u] - pSrc[(2u * i2) + 1u]; + + /* xb + xd */ + t1 = pSrc[2u * i1] + pSrc[2u * i3]; + + /* xa' = xa + xb + xc + xd */ + pSrc[2u * i0] = r1 + t1; + + /* xa + xc -(xb + xd) */ + r1 = r1 - t1; + + /* yb + yd */ + t2 = pSrc[(2u * i1) + 1u] + pSrc[(2u * i3) + 1u]; + + /* ya' = ya + yb + yc + yd */ + pSrc[(2u * i0) + 1u] = s1 + t2; + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* (yb - yd) */ + t1 = pSrc[(2u * i1) + 1u] - pSrc[(2u * i3) + 1u]; + + /* (xb - xd) */ + t2 = pSrc[2u * i1] - pSrc[2u * i3]; + + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + pSrc[2u * i1] = (r1 * co2) - (s1 * si2); + + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + pSrc[(2u * i1) + 1u] = (s1 * co2) + (r1 * si2); + + /* (xa - xc) - (yb - yd) */ + r1 = r2 - t1; + + /* (xa - xc) + (yb - yd) */ + r2 = r2 + t1; + + /* (ya - yc) + (xb - xd) */ + s1 = s2 + t2; + + /* (ya - yc) - (xb - xd) */ + s2 = s2 - t2; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + pSrc[2u * i2] = (r1 * co1) - (s1 * si1); + + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + pSrc[(2u * i2) + 1u] = (s1 * co1) + (r1 * si1); + + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + pSrc[2u * i3] = (r2 * co3) - (s2 * si3); + + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + pSrc[(2u * i3) + 1u] = (s2 * co3) + (r2 * si3); + } + } + twidCoefModifier <<= 2u; + } + /* Initializations of last stage */ + n1 = n2; + n2 >>= 2u; + + /* Calculations of last stage */ + for (i0 = 0u; i0 <= (fftLen - n1); i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Butterfly implementation */ + /* xa + xc */ + r1 = pSrc[2u * i0] + pSrc[2u * i2]; + + /* xa - xc */ + r2 = pSrc[2u * i0] - pSrc[2u * i2]; + + /* ya + yc */ + s1 = pSrc[(2u * i0) + 1u] + pSrc[(2u * i2) + 1u]; + + /* ya - yc */ + s2 = pSrc[(2u * i0) + 1u] - pSrc[(2u * i2) + 1u]; + + /* xc + xd */ + t1 = pSrc[2u * i1] + pSrc[2u * i3]; + + /* xa' = xa + xb + xc + xd */ + pSrc[2u * i0] = (r1 + t1) * onebyfftLen; + + /* (xa + xb) - (xc + xd) */ + r1 = r1 - t1; + + /* yb + yd */ + t2 = pSrc[(2u * i1) + 1u] + pSrc[(2u * i3) + 1u]; + + /* ya' = ya + yb + yc + yd */ + pSrc[(2u * i0) + 1u] = (s1 + t2) * onebyfftLen; + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* (yb-yd) */ + t1 = pSrc[(2u * i1) + 1u] - pSrc[(2u * i3) + 1u]; + + /* (xb-xd) */ + t2 = pSrc[2u * i1] - pSrc[2u * i3]; + + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + pSrc[2u * i1] = r1 * onebyfftLen; + + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + pSrc[(2u * i1) + 1u] = s1 * onebyfftLen; + + + /* (xa - xc) - (yb-yd) */ + r1 = r2 - t1; + + /* (xa - xc) + (yb-yd) */ + r2 = r2 + t1; + + /* (ya - yc) + (xb-xd) */ + s1 = s2 + t2; + + /* (ya - yc) - (xb-xd) */ + s2 = s2 - t2; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + pSrc[2u * i2] = r1 * onebyfftLen; + + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + pSrc[(2u * i2) + 1u] = s1 * onebyfftLen; + + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + pSrc[2u * i3] = r2 * onebyfftLen; + + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + pSrc[(2u * i3) + 1u] = s2 * onebyfftLen; + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/* + * @brief In-place bit reversal function. + * @param[in, out] *pSrc points to the in-place buffer of floating-point data type. + * @param[in] fftSize length of the FFT. + * @param[in] bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table. + * @param[in] *pBitRevTab points to the bit reversal table. + * @return none. + */ + +void arm_bitreversal_f32( + float32_t * pSrc, + uint16_t fftSize, + uint16_t bitRevFactor, + uint16_t * pBitRevTab) +{ + uint16_t fftLenBy2, fftLenBy2p1; + uint16_t i, j; + float32_t in; + + /* Initializations */ + j = 0u; + fftLenBy2 = fftSize >> 1u; + fftLenBy2p1 = (fftSize >> 1u) + 1u; + + /* Bit Reversal Implementation */ + for (i = 0u; i <= (fftLenBy2 - 2u); i += 2u) + { + if(i < j) + { + /* pSrc[i] <-> pSrc[j]; */ + in = pSrc[2u * i]; + pSrc[2u * i] = pSrc[2u * j]; + pSrc[2u * j] = in; + + /* pSrc[i+1u] <-> pSrc[j+1u] */ + in = pSrc[(2u * i) + 1u]; + pSrc[(2u * i) + 1u] = pSrc[(2u * j) + 1u]; + pSrc[(2u * j) + 1u] = in; + + /* pSrc[i+fftLenBy2p1] <-> pSrc[j+fftLenBy2p1] */ + in = pSrc[2u * (i + fftLenBy2p1)]; + pSrc[2u * (i + fftLenBy2p1)] = pSrc[2u * (j + fftLenBy2p1)]; + pSrc[2u * (j + fftLenBy2p1)] = in; + + /* pSrc[i+fftLenBy2p1+1u] <-> pSrc[j+fftLenBy2p1+1u] */ + in = pSrc[(2u * (i + fftLenBy2p1)) + 1u]; + pSrc[(2u * (i + fftLenBy2p1)) + 1u] = + pSrc[(2u * (j + fftLenBy2p1)) + 1u]; + pSrc[(2u * (j + fftLenBy2p1)) + 1u] = in; + + } + + /* pSrc[i+1u] <-> pSrc[j+1u] */ + in = pSrc[2u * (i + 1u)]; + pSrc[2u * (i + 1u)] = pSrc[2u * (j + fftLenBy2)]; + pSrc[2u * (j + fftLenBy2)] = in; + + /* pSrc[i+2u] <-> pSrc[j+2u] */ + in = pSrc[(2u * (i + 1u)) + 1u]; + pSrc[(2u * (i + 1u)) + 1u] = pSrc[(2u * (j + fftLenBy2)) + 1u]; + pSrc[(2u * (j + fftLenBy2)) + 1u] = in; + + /* Reading the index for the bit reversal */ + j = *pBitRevTab; + + /* Updating the bit reversal index depending on the fft length */ + pBitRevTab += bitRevFactor; + } +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_f32.c new file mode 100644 index 000000000..c18654184 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_f32.c @@ -0,0 +1,1551 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2011 ARM Limited. All rights reserved. +* +* $Date: 17. August 2011 +* $Revision: V1.0.11 +* +* Project: CMSIS DSP Library +* Title: arm_cfft_radix4_init_f32.c +* +* Description: Radix-4 Decimation in Frequency Floating-point CFFT & CIFFT Initialization function +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +** Version 1.0.11 2011/08/17 +* Updated to support 4096 CFFT length. +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @ingroup groupTransforms + */ + +/** + * @addtogroup CFFT_CIFFT + * @{ + */ + +/* +* @brief Floating-point Twiddle factors Table Generation +*/ + + +/** +* \par +* Example code for Floating-point Twiddle factors Generation: +* \par +*
for(i = 0; i< N; i++)   
+* {   
+*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);   
+*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);   
+* } 
+* \par +* where N = 1024 and PI = 3.14159265358979 +* \par +* Cos and Sin values are in interleaved fashion +* +*/ + +static const float32_t twiddleCoef[4096*2] = { + 1.000000000000000000f, 0.000000000000000000f, 0.999998823451701880f, 0.001533980186284766f, 0.999995293809576190f, 0.003067956762965976f, + 0.999989411081928400f, 0.004601926120448571f, 0.999981175282601110f, 0.006135884649154475f, 0.999970586430974140f, 0.007669828739531097f, + 0.999957644551963900f, 0.009203754782059819f, 0.999942349676023910f, 0.010737659167264491f, 0.999924701839144500f, 0.012271538285719925f, + 0.999904701082852900f, 0.013805388528060391f, 0.999882347454212560f, 0.015339206284988100f, 0.999857641005823860f, 0.016872987947281710f, + 0.999830581795823400f, 0.018406729905804820f, 0.999801169887884260f, 0.019940428551514441f, 0.999769405351215280f, 0.021474080275469508f, + 0.999735288260561680f, 0.023007681468839369f, 0.999698818696204250f, 0.024541228522912288f, 0.999659996743959220f, 0.026074717829103901f, + 0.999618822495178640f, 0.027608145778965740f, 0.999575296046749220f, 0.029141508764193722f, 0.999529417501093140f, 0.030674803176636626f, + 0.999481186966166950f, 0.032208025408304586f, 0.999430604555461730f, 0.033741171851377580f, 0.999377670388002850f, 0.035274238898213947f, + 0.999322384588349540f, 0.036807222941358832f, 0.999264747286594420f, 0.038340120373552694f, 0.999204758618363890f, 0.039872927587739811f, + 0.999142418724816910f, 0.041405640977076739f, 0.999077727752645360f, 0.042938256934940820f, 0.999010685854073380f, 0.044470771854938668f, + 0.998941293186856870f, 0.046003182130914623f, 0.998869549914283560f, 0.047535484156959303f, 0.998795456205172410f, 0.049067674327418015f, + 0.998719012233872940f, 0.050599749036899282f, 0.998640218180265270f, 0.052131704680283324f, 0.998559074229759310f, 0.053663537652730520f, + 0.998475580573294770f, 0.055195244349689934f, 0.998389737407340160f, 0.056726821166907748f, 0.998301544933892890f, 0.058258264500435752f, + 0.998211003360478190f, 0.059789570746639868f, 0.998118112900149180f, 0.061320736302208578f, 0.998022873771486240f, 0.062851757564161406f, + 0.997925286198596000f, 0.064382630929857465f, 0.997825350411111640f, 0.065913352797003805f, 0.997723066644191640f, 0.067443919563664051f, + 0.997618435138519550f, 0.068974327628266746f, 0.997511456140303450f, 0.070504573389613856f, 0.997402129901275300f, 0.072034653246889332f, + 0.997290456678690210f, 0.073564563599667426f, 0.997176436735326190f, 0.075094300847921305f, 0.997060070339482960f, 0.076623861392031492f, + 0.996941357764982160f, 0.078153241632794232f, 0.996820299291165670f, 0.079682437971430126f, 0.996696895202896060f, 0.081211446809592441f, + 0.996571145790554840f, 0.082740264549375692f, 0.996443051350042630f, 0.084268887593324071f, 0.996312612182778000f, 0.085797312344439894f, + 0.996179828595696980f, 0.087325535206192059f, 0.996044700901251970f, 0.088853552582524600f, 0.995907229417411720f, 0.090381360877864983f, + 0.995767414467659820f, 0.091908956497132724f, 0.995625256380994310f, 0.093436335845747787f, 0.995480755491926940f, 0.094963495329638992f, + 0.995333912140482280f, 0.096490431355252593f, 0.995184726672196930f, 0.098017140329560604f, 0.995033199438118630f, 0.099543618660069319f, + 0.994879330794805620f, 0.101069862754827820f, 0.994723121104325700f, 0.102595869022436280f, 0.994564570734255420f, 0.104121633872054590f, + 0.994403680057679100f, 0.105647153713410620f, 0.994240449453187900f, 0.107172424956808840f, 0.994074879304879370f, 0.108697444013138720f, + 0.993906970002356060f, 0.110222207293883060f, 0.993736721940724600f, 0.111746711211126590f, 0.993564135520595300f, 0.113270952177564350f, + 0.993389211148080650f, 0.114794926606510080f, 0.993211949234794500f, 0.116318630911904750f, 0.993032350197851410f, 0.117842061508324980f, + 0.992850414459865100f, 0.119365214810991350f, 0.992666142448948020f, 0.120888087235777080f, 0.992479534598709970f, 0.122410675199216200f, + 0.992290591348257370f, 0.123932975118512160f, 0.992099313142191800f, 0.125454983411546230f, 0.991905700430609330f, 0.126976696496885870f, + 0.991709753669099530f, 0.128498110793793170f, 0.991511473318743900f, 0.130019222722233350f, 0.991310859846115440f, 0.131540028702883120f, + 0.991107913723276890f, 0.133060525157139060f, 0.990902635427780010f, 0.134580708507126170f, 0.990695025442664630f, 0.136100575175706200f, + 0.990485084256457090f, 0.137620121586486040f, 0.990272812363169110f, 0.139139344163826200f, 0.990058210262297120f, 0.140658239332849210f, + 0.989841278458820530f, 0.142176803519448030f, 0.989622017463200890f, 0.143695033150294470f, 0.989400427791380380f, 0.145212924652847460f, + 0.989176509964781010f, 0.146730474455361750f, 0.988950264510302990f, 0.148247678986896030f, 0.988721691960323780f, 0.149764534677321510f, + 0.988490792852696590f, 0.151281037957330220f, 0.988257567730749460f, 0.152797185258443440f, 0.988022017143283530f, 0.154312973013020100f, + 0.987784141644572180f, 0.155828397654265230f, 0.987543941794359230f, 0.157343455616238250f, 0.987301418157858430f, 0.158858143333861450f, + 0.987056571305750970f, 0.160372457242928280f, 0.986809401814185530f, 0.161886393780111830f, 0.986559910264775410f, 0.163399949382973230f, + 0.986308097244598670f, 0.164913120489969890f, 0.986053963346195440f, 0.166425903540464100f, 0.985797509167567480f, 0.167938294974731170f, + 0.985538735312176060f, 0.169450291233967960f, 0.985277642388941220f, 0.170961888760301220f, 0.985014231012239840f, 0.172473083996795950f, + 0.984748501801904210f, 0.173983873387463820f, 0.984480455383220930f, 0.175494253377271430f, 0.984210092386929030f, 0.177004220412148750f, + 0.983937413449218920f, 0.178513770938997510f, 0.983662419211730250f, 0.180022901405699510f, 0.983385110321551180f, 0.181531608261124970f, + 0.983105487431216290f, 0.183039887955140950f, 0.982823551198705240f, 0.184547736938619620f, 0.982539302287441240f, 0.186055151663446630f, + 0.982252741366289370f, 0.187562128582529600f, 0.981963869109555240f, 0.189068664149806190f, 0.981672686196983110f, 0.190574754820252740f, + 0.981379193313754560f, 0.192080397049892440f, 0.981083391150486710f, 0.193585587295803610f, 0.980785280403230430f, 0.195090322016128250f, + 0.980484861773469380f, 0.196594597670080220f, 0.980182135968117430f, 0.198098410717953560f, 0.979877103699517640f, 0.199601757621130970f, + 0.979569765685440520f, 0.201104634842091900f, 0.979260122649082020f, 0.202607038844421130f, 0.978948175319062200f, 0.204108966092816870f, + 0.978633924429423210f, 0.205610413053099240f, 0.978317370719627650f, 0.207111376192218560f, 0.977998514934557140f, 0.208611851978263490f, + 0.977677357824509930f, 0.210111836880469610f, 0.977353900145199960f, 0.211611327369227550f, 0.977028142657754390f, 0.213110319916091360f, + 0.976700086128711840f, 0.214608810993786760f, 0.976369731330021140f, 0.216106797076219520f, 0.976037079039039020f, 0.217604274638483640f, + 0.975702130038528570f, 0.219101240156869800f, 0.975364885116656980f, 0.220597690108873510f, 0.975025345066994120f, 0.222093620973203510f, + 0.974683510688510670f, 0.223589029229789990f, 0.974339382785575860f, 0.225083911359792830f, 0.973992962167955830f, 0.226578263845610000f, + 0.973644249650811980f, 0.228072083170885730f, 0.973293246054698250f, 0.229565365820518870f, 0.972939952205560180f, 0.231058108280671110f, + 0.972584368934732210f, 0.232550307038775240f, 0.972226497078936270f, 0.234041958583543430f, 0.971866337480279400f, 0.235533059404975490f, + 0.971503890986251780f, 0.237023605994367200f, 0.971139158449725090f, 0.238513594844318420f, 0.970772140728950350f, 0.240003022448741500f, + 0.970402838687555500f, 0.241491885302869330f, 0.970031253194543970f, 0.242980179903263870f, 0.969657385124292450f, 0.244467902747824150f, + 0.969281235356548530f, 0.245955050335794590f, 0.968902804776428870f, 0.247441619167773270f, 0.968522094274417380f, 0.248927605745720150f, + 0.968139104746362440f, 0.250413006572965220f, 0.967753837093475510f, 0.251897818154216970f, 0.967366292222328510f, 0.253382036995570160f, + 0.966976471044852070f, 0.254865659604514570f, 0.966584374478333120f, 0.256348682489942910f, 0.966190003445412500f, 0.257831102162158990f, + 0.965793358874083680f, 0.259312915132886230f, 0.965394441697689400f, 0.260794117915275510f, 0.964993252854920320f, 0.262274707023913590f, + 0.964589793289812760f, 0.263754678974831350f, 0.964184063951745830f, 0.265234030285511790f, 0.963776065795439840f, 0.266712757474898370f, + 0.963365799780954050f, 0.268190857063403180f, 0.962953266873683880f, 0.269668325572915090f, 0.962538468044359160f, 0.271145159526808010f, + 0.962121404269041580f, 0.272621355449948980f, 0.961702076529122540f, 0.274096909868706380f, 0.961280485811320640f, 0.275571819310958140f, + 0.960856633107679660f, 0.277046080306099900f, 0.960430519415565790f, 0.278519689385053060f, 0.960002145737665960f, 0.279992643080273220f, + 0.959571513081984520f, 0.281464937925757940f, 0.959138622461841890f, 0.282936570457055390f, 0.958703474895871600f, 0.284407537211271880f, + 0.958266071408017670f, 0.285877834727080620f, 0.957826413027532910f, 0.287347459544729510f, 0.957384500788975860f, 0.288816408206049480f, + 0.956940335732208820f, 0.290284677254462330f, 0.956493918902395100f, 0.291752263234989260f, 0.956045251349996410f, 0.293219162694258630f, + 0.955594334130771110f, 0.294685372180514330f, 0.955141168305770780f, 0.296150888243623790f, 0.954685754941338340f, 0.297615707435086200f, + 0.954228095109105670f, 0.299079826308040480f, 0.953768189885990330f, 0.300543241417273450f, 0.953306040354193860f, 0.302005949319228080f, + 0.952841647601198720f, 0.303467946572011320f, 0.952375012719765880f, 0.304929229735402370f, 0.951906136807932350f, 0.306389795370860920f, + 0.951435020969008340f, 0.307849640041534870f, 0.950961666311575080f, 0.309308760312268730f, 0.950486073949481700f, 0.310767152749611470f, + 0.950008245001843000f, 0.312224813921824880f, 0.949528180593036670f, 0.313681740398891520f, 0.949045881852700560f, 0.315137928752522440f, + 0.948561349915730270f, 0.316593375556165850f, 0.948074585922276230f, 0.318048077385014950f, 0.947585591017741090f, 0.319502030816015690f, + 0.947094366352777220f, 0.320955232427875210f, 0.946600913083283530f, 0.322407678801069850f, 0.946105232370403450f, 0.323859366517852850f, + 0.945607325380521280f, 0.325310292162262930f, 0.945107193285260610f, 0.326760452320131730f, 0.944604837261480260f, 0.328209843579092500f, + 0.944100258491272660f, 0.329658462528587490f, 0.943593458161960390f, 0.331106305759876430f, 0.943084437466093490f, 0.332553369866044220f, + 0.942573197601446870f, 0.333999651442009380f, 0.942059739771017310f, 0.335445147084531600f, 0.941544065183020810f, 0.336889853392220050f, + 0.941026175050889260f, 0.338333766965541130f, 0.940506070593268300f, 0.339776884406826850f, 0.939983753034014050f, 0.341219202320282360f, + 0.939459223602189920f, 0.342660717311994380f, 0.938932483532064600f, 0.344101425989938810f, 0.938403534063108060f, 0.345541324963989090f, + 0.937872376439989890f, 0.346980410845923680f, 0.937339011912574960f, 0.348418680249434560f, 0.936803441735921560f, 0.349856129790134920f, + 0.936265667170278260f, 0.351292756085567090f, 0.935725689481080370f, 0.352728555755210730f, 0.935183509938947610f, 0.354163525420490340f, + 0.934639129819680780f, 0.355597661704783850f, 0.934092550404258980f, 0.357030961233429980f, 0.933543772978836170f, 0.358463420633736540f, + 0.932992798834738960f, 0.359895036534988110f, 0.932439629268462360f, 0.361325805568454280f, 0.931884265581668150f, 0.362755724367397230f, + 0.931326709081180430f, 0.364184789567079890f, 0.930766961078983710f, 0.365612997804773850f, 0.930205022892219070f, 0.367040345719767180f, + 0.929640895843181330f, 0.368466829953372320f, 0.929074581259315860f, 0.369892447148934100f, 0.928506080473215590f, 0.371317193951837540f, + 0.927935394822617890f, 0.372741067009515760f, 0.927362525650401110f, 0.374164062971457930f, 0.926787474304581750f, 0.375586178489217220f, + 0.926210242138311380f, 0.377007410216418260f, 0.925630830509872720f, 0.378427754808765560f, 0.925049240782677580f, 0.379847208924051160f, + 0.924465474325262600f, 0.381265769222162380f, 0.923879532511286740f, 0.382683432365089780f, 0.923291416719527640f, 0.384100195016935040f, + 0.922701128333878630f, 0.385516053843918850f, 0.922108668743345180f, 0.386931005514388580f, 0.921514039342042010f, 0.388345046698826250f, + 0.920917241529189520f, 0.389758174069856410f, 0.920318276709110590f, 0.391170384302253870f, 0.919717146291227360f, 0.392581674072951470f, + 0.919113851690057770f, 0.393992040061048100f, 0.918508394325212250f, 0.395401478947816350f, 0.917900775621390500f, 0.396809987416710310f, + 0.917290997008377910f, 0.398217562153373560f, 0.916679059921042700f, 0.399624199845646790f, 0.916064965799331720f, 0.401029897183575620f, + 0.915448716088267830f, 0.402434650859418430f, 0.914830312237946200f, 0.403838457567654070f, 0.914209755703530690f, 0.405241314004989860f, + 0.913587047945250810f, 0.406643216870369030f, 0.912962190428398210f, 0.408044162864978690f, 0.912335184623322750f, 0.409444148692257590f, + 0.911706032005429880f, 0.410843171057903910f, 0.911074734055176360f, 0.412241226669882890f, 0.910441292258067250f, 0.413638312238434500f, + 0.909805708104652220f, 0.415034424476081630f, 0.909167983090522380f, 0.416429560097637150f, 0.908528118716306120f, 0.417823715820212270f, + 0.907886116487666260f, 0.419216888363223910f, 0.907241977915295820f, 0.420609074448402510f, 0.906595704514915330f, 0.422000270799799680f, + 0.905947297807268460f, 0.423390474143796050f, 0.905296759318118820f, 0.424779681209108810f, 0.904644090578246240f, 0.426167888726799620f, + 0.903989293123443340f, 0.427555093430282080f, 0.903332368494511820f, 0.428941292055329490f, 0.902673318237258830f, 0.430326481340082610f, + 0.902012143902493180f, 0.431710658025057260f, 0.901348847046022030f, 0.433093818853151960f, 0.900683429228646970f, 0.434475960569655650f, + 0.900015892016160280f, 0.435857079922255470f, 0.899346236979341570f, 0.437237173661044090f, 0.898674465693953820f, 0.438616238538527660f, + 0.898000579740739880f, 0.439994271309633260f, 0.897324580705418320f, 0.441371268731716670f, 0.896646470178680150f, 0.442747227564570020f, + 0.895966249756185220f, 0.444122144570429200f, 0.895283921038557580f, 0.445496016513981740f, 0.894599485631382700f, 0.446868840162374160f, + 0.893912945145203250f, 0.448240612285219890f, 0.893224301195515320f, 0.449611329654606540f, 0.892533555402764580f, 0.450980989045103860f, + 0.891840709392342720f, 0.452349587233770890f, 0.891145764794583180f, 0.453717121000163870f, 0.890448723244757880f, 0.455083587126343840f, + 0.889749586383072780f, 0.456448982396883920f, 0.889048355854664570f, 0.457813303598877170f, 0.888345033309596350f, 0.459176547521944090f, + 0.887639620402853930f, 0.460538710958240010f, 0.886932118794342190f, 0.461899790702462730f, 0.886222530148880640f, 0.463259783551860150f, + 0.885510856136199950f, 0.464618686306237820f, 0.884797098430937790f, 0.465976495767966180f, 0.884081258712634990f, 0.467333208741988420f, + 0.883363338665731580f, 0.468688822035827900f, 0.882643339979562790f, 0.470043332459595620f, 0.881921264348355050f, 0.471396736825997640f, + 0.881197113471222090f, 0.472749031950342790f, 0.880470889052160750f, 0.474100214650549970f, 0.879742592800047410f, 0.475450281747155870f, + 0.879012226428633530f, 0.476799230063322090f, 0.878279791656541580f, 0.478147056424843010f, 0.877545290207261350f, 0.479493757660153010f, + 0.876808723809145650f, 0.480839330600333960f, 0.876070094195406600f, 0.482183772079122720f, 0.875329403104110890f, 0.483527078932918740f, + 0.874586652278176110f, 0.484869248000791060f, 0.873841843465366860f, 0.486210276124486420f, 0.873094978418290090f, 0.487550160148436000f, + 0.872346058894391540f, 0.488888896919763170f, 0.871595086655950980f, 0.490226483288291160f, 0.870842063470078980f, 0.491562916106549900f, + 0.870086991108711460f, 0.492898192229784040f, 0.869329871348606840f, 0.494232308515959670f, 0.868570705971340900f, 0.495565261825772540f, + 0.867809496763303320f, 0.496897049022654470f, 0.867046245515692650f, 0.498227666972781870f, 0.866280954024512990f, 0.499557112545081840f, + 0.865513624090569090f, 0.500885382611240710f, 0.864744257519462380f, 0.502212474045710790f, 0.863972856121586810f, 0.503538383725717580f, + 0.863199421712124160f, 0.504863108531267590f, 0.862423956111040610f, 0.506186645345155230f, 0.861646461143081300f, 0.507508991052970870f, + 0.860866938637767310f, 0.508830142543106990f, 0.860085390429390140f, 0.510150096706766810f, 0.859301818357008470f, 0.511468850437970300f, + 0.858516224264442740f, 0.512786400633562960f, 0.857728610000272120f, 0.514102744193221660f, 0.856938977417828760f, 0.515417878019462930f, + 0.856147328375194470f, 0.516731799017649870f, 0.855353664735196030f, 0.518044504095999340f, 0.854557988365400530f, 0.519355990165589640f, + 0.853760301138111410f, 0.520666254140367160f, 0.852960604930363630f, 0.521975292937154390f, 0.852158901623919830f, 0.523283103475656430f, + 0.851355193105265200f, 0.524589682678468950f, 0.850549481265603480f, 0.525895027471084630f, 0.849741768000852550f, 0.527199134781901280f, + 0.848932055211639610f, 0.528502001542228480f, 0.848120344803297230f, 0.529803624686294610f, 0.847306638685858320f, 0.531104001151255000f, + 0.846490938774052130f, 0.532403127877197900f, 0.845673246987299070f, 0.533701001807152960f, 0.844853565249707120f, 0.534997619887097150f, + 0.844031895490066410f, 0.536292979065963180f, 0.843208239641845440f, 0.537587076295645390f, 0.842382599643185850f, 0.538879908531008420f, + 0.841554977436898440f, 0.540171472729892850f, 0.840725374970458070f, 0.541461765853123440f, 0.839893794195999520f, 0.542750784864515890f, + 0.839060237070312740f, 0.544038526730883820f, 0.838224705554838080f, 0.545324988422046460f, 0.837387201615661940f, 0.546610166910834860f, + 0.836547727223512010f, 0.547894059173100190f, 0.835706284353752600f, 0.549176662187719660f, 0.834862874986380010f, 0.550457972936604810f, + 0.834017501106018130f, 0.551737988404707340f, 0.833170164701913190f, 0.553016705580027470f, 0.832320867767929680f, 0.554294121453620000f, + 0.831469612302545240f, 0.555570233019602180f, 0.830616400308846310f, 0.556845037275160100f, 0.829761233794523050f, 0.558118531220556100f, + 0.828904114771864870f, 0.559390711859136140f, 0.828045045257755800f, 0.560661576197336030f, 0.827184027273669130f, 0.561931121244689470f, + 0.826321062845663530f, 0.563199344013834090f, 0.825456154004377550f, 0.564466241520519500f, 0.824589302785025290f, 0.565731810783613120f, + 0.823720511227391430f, 0.566996048825108680f, 0.822849781375826430f, 0.568258952670131490f, 0.821977115279241550f, 0.569520519346947140f, + 0.821102514991104650f, 0.570780745886967260f, 0.820225982569434690f, 0.572039629324757050f, 0.819347520076796900f, 0.573297166698042200f, + 0.818467129580298660f, 0.574553355047715760f, 0.817584813151583710f, 0.575808191417845340f, 0.816700572866827850f, 0.577061672855679440f, + 0.815814410806733780f, 0.578313796411655590f, 0.814926329056526620f, 0.579564559139405630f, 0.814036329705948410f, 0.580813958095764530f, + 0.813144414849253590f, 0.582061990340775440f, 0.812250586585203880f, 0.583308652937698290f, 0.811354847017063730f, 0.584553942953015330f, + 0.810457198252594770f, 0.585797857456438860f, 0.809557642404051260f, 0.587040393520917970f, 0.808656181588174980f, 0.588281548222645220f, + 0.807752817926190360f, 0.589521318641063940f, 0.806847553543799330f, 0.590759701858874160f, 0.805940390571176280f, 0.591996694962040990f, + 0.805031331142963660f, 0.593232295039799800f, 0.804120377398265810f, 0.594466499184664430f, 0.803207531480644940f, 0.595699304492433360f, + 0.802292795538115720f, 0.596930708062196500f, 0.801376171723140240f, 0.598160706996342270f, 0.800457662192622820f, 0.599389298400564540f, + 0.799537269107905010f, 0.600616479383868970f, 0.798614994634760820f, 0.601842247058580030f, 0.797690840943391160f, 0.603066598540348160f, + 0.796764810208418830f, 0.604289530948155960f, 0.795836904608883570f, 0.605511041404325550f, 0.794907126328237010f, 0.606731127034524480f, + 0.793975477554337170f, 0.607949784967773630f, 0.793041960479443640f, 0.609167012336453210f, 0.792106577300212390f, 0.610382806276309480f, + 0.791169330217690200f, 0.611597163926461910f, 0.790230221437310030f, 0.612810082429409710f, 0.789289253168885650f, 0.614021558931038380f, + 0.788346427626606340f, 0.615231590580626820f, 0.787401747029031430f, 0.616440174530853650f, 0.786455213599085770f, 0.617647307937803870f, + 0.785506829564053930f, 0.618852987960976320f, 0.784556597155575240f, 0.620057211763289100f, 0.783604518609638200f, 0.621259976511087550f, + 0.782650596166575730f, 0.622461279374149970f, 0.781694832071059390f, 0.623661117525694530f, 0.780737228572094490f, 0.624859488142386340f, + 0.779777787923014550f, 0.626056388404343520f, 0.778816512381475980f, 0.627251815495144080f, 0.777853404209453150f, 0.628445766601832710f, + 0.776888465673232440f, 0.629638238914926980f, 0.775921699043407690f, 0.630829229628424470f, 0.774953106594873930f, 0.632018735939809060f, + 0.773982690606822900f, 0.633206755050057190f, 0.773010453362736990f, 0.634393284163645490f, 0.772036397150384520f, 0.635578320488556110f, + 0.771060524261813820f, 0.636761861236284200f, 0.770082836993347900f, 0.637943903621844060f, 0.769103337645579700f, 0.639124444863775730f, + 0.768122028523365420f, 0.640303482184151670f, 0.767138911935820400f, 0.641481012808583160f, 0.766153990196312920f, 0.642657033966226860f, + 0.765167265622458960f, 0.643831542889791390f, 0.764178740536116670f, 0.645004536815543930f, 0.763188417263381270f, 0.646176012983316280f, + 0.762196298134578900f, 0.647345968636512060f, 0.761202385484261780f, 0.648514401022112440f, 0.760206681651202420f, 0.649681307390683190f, + 0.759209188978388070f, 0.650846684996380880f, 0.758209909813015280f, 0.652010531096959500f, 0.757208846506484570f, 0.653172842953776760f, + 0.756206001414394540f, 0.654333617831800440f, 0.755201376896536550f, 0.655492852999615350f, 0.754194975316889170f, 0.656650545729428940f, + 0.753186799043612520f, 0.657806693297078640f, 0.752176850449042810f, 0.658961292982037320f, 0.751165131909686480f, 0.660114342067420480f, + 0.750151645806215070f, 0.661265837839992270f, 0.749136394523459370f, 0.662415777590171780f, 0.748119380450403600f, 0.663564158612039770f, + 0.747100605980180130f, 0.664710978203344790f, 0.746080073510063780f, 0.665856233665509720f, 0.745057785441466060f, 0.666999922303637470f, + 0.744033744179929290f, 0.668142041426518450f, 0.743007952135121720f, 0.669282588346636010f, 0.741980411720831070f, 0.670421560380173090f, + 0.740951125354959110f, 0.671558954847018330f, 0.739920095459516200f, 0.672694769070772860f, 0.738887324460615110f, 0.673829000378756040f, + 0.737852814788465980f, 0.674961646102011930f, 0.736816568877369900f, 0.676092703575315920f, 0.735778589165713590f, 0.677222170137180330f, + 0.734738878095963500f, 0.678350043129861470f, 0.733697438114660370f, 0.679476319899364970f, 0.732654271672412820f, 0.680600997795453020f, + 0.731609381223892630f, 0.681724074171649710f, 0.730562769227827590f, 0.682845546385248080f, 0.729514438146997010f, 0.683965411797315400f, + 0.728464390448225200f, 0.685083667772700360f, 0.727412628602375770f, 0.686200311680038590f, 0.726359155084346010f, 0.687315340891759050f, + 0.725303972373060770f, 0.688428752784090440f, 0.724247082951467000f, 0.689540544737066830f, 0.723188489306527460f, 0.690650714134534600f, + 0.722128193929215350f, 0.691759258364157750f, 0.721066199314508110f, 0.692866174817424630f, 0.720002507961381650f, 0.693971460889654000f, + 0.718937122372804490f, 0.695075113980000880f, 0.717870045055731710f, 0.696177131491462990f, 0.716801278521099540f, 0.697277510830886520f, + 0.715730825283818590f, 0.698376249408972920f, 0.714658687862769090f, 0.699473344640283770f, 0.713584868780793640f, 0.700568793943248340f, + 0.712509370564692320f, 0.701662594740168450f, 0.711432195745216430f, 0.702754744457225300f, 0.710353346857062420f, 0.703845240524484940f, + 0.709272826438865690f, 0.704934080375904880f, 0.708190637033195400f, 0.706021261449339740f, 0.707106781186547570f, 0.707106781186547460f, + 0.706021261449339740f, 0.708190637033195290f, 0.704934080375904990f, 0.709272826438865580f, 0.703845240524484940f, 0.710353346857062310f, + 0.702754744457225300f, 0.711432195745216430f, 0.701662594740168570f, 0.712509370564692320f, 0.700568793943248450f, 0.713584868780793520f, + 0.699473344640283770f, 0.714658687862768980f, 0.698376249408972920f, 0.715730825283818590f, 0.697277510830886630f, 0.716801278521099540f, + 0.696177131491462990f, 0.717870045055731710f, 0.695075113980000880f, 0.718937122372804380f, 0.693971460889654000f, 0.720002507961381650f, + 0.692866174817424740f, 0.721066199314508110f, 0.691759258364157750f, 0.722128193929215350f, 0.690650714134534720f, 0.723188489306527350f, + 0.689540544737066940f, 0.724247082951466890f, 0.688428752784090550f, 0.725303972373060660f, 0.687315340891759160f, 0.726359155084346010f, + 0.686200311680038700f, 0.727412628602375770f, 0.685083667772700360f, 0.728464390448225200f, 0.683965411797315510f, 0.729514438146996900f, + 0.682845546385248080f, 0.730562769227827590f, 0.681724074171649820f, 0.731609381223892520f, 0.680600997795453130f, 0.732654271672412820f, + 0.679476319899365080f, 0.733697438114660260f, 0.678350043129861580f, 0.734738878095963390f, 0.677222170137180450f, 0.735778589165713480f, + 0.676092703575316030f, 0.736816568877369790f, 0.674961646102012040f, 0.737852814788465980f, 0.673829000378756150f, 0.738887324460615110f, + 0.672694769070772970f, 0.739920095459516090f, 0.671558954847018330f, 0.740951125354959110f, 0.670421560380173090f, 0.741980411720830960f, + 0.669282588346636010f, 0.743007952135121720f, 0.668142041426518560f, 0.744033744179929180f, 0.666999922303637470f, 0.745057785441465950f, + 0.665856233665509720f, 0.746080073510063780f, 0.664710978203344900f, 0.747100605980180130f, 0.663564158612039880f, 0.748119380450403490f, + 0.662415777590171780f, 0.749136394523459260f, 0.661265837839992270f, 0.750151645806214960f, 0.660114342067420480f, 0.751165131909686370f, + 0.658961292982037320f, 0.752176850449042700f, 0.657806693297078640f, 0.753186799043612410f, 0.656650545729429050f, 0.754194975316889170f, + 0.655492852999615460f, 0.755201376896536550f, 0.654333617831800550f, 0.756206001414394540f, 0.653172842953776760f, 0.757208846506484460f, + 0.652010531096959500f, 0.758209909813015280f, 0.650846684996380990f, 0.759209188978387960f, 0.649681307390683190f, 0.760206681651202420f, + 0.648514401022112550f, 0.761202385484261780f, 0.647345968636512060f, 0.762196298134578900f, 0.646176012983316390f, 0.763188417263381270f, + 0.645004536815544040f, 0.764178740536116670f, 0.643831542889791500f, 0.765167265622458960f, 0.642657033966226860f, 0.766153990196312810f, + 0.641481012808583160f, 0.767138911935820400f, 0.640303482184151670f, 0.768122028523365310f, 0.639124444863775730f, 0.769103337645579590f, + 0.637943903621844170f, 0.770082836993347900f, 0.636761861236284200f, 0.771060524261813710f, 0.635578320488556230f, 0.772036397150384410f, + 0.634393284163645490f, 0.773010453362736990f, 0.633206755050057190f, 0.773982690606822790f, 0.632018735939809060f, 0.774953106594873820f, + 0.630829229628424470f, 0.775921699043407580f, 0.629638238914927100f, 0.776888465673232440f, 0.628445766601832710f, 0.777853404209453040f, + 0.627251815495144190f, 0.778816512381475870f, 0.626056388404343520f, 0.779777787923014440f, 0.624859488142386450f, 0.780737228572094380f, + 0.623661117525694640f, 0.781694832071059390f, 0.622461279374150080f, 0.782650596166575730f, 0.621259976511087660f, 0.783604518609638200f, + 0.620057211763289210f, 0.784556597155575240f, 0.618852987960976320f, 0.785506829564053930f, 0.617647307937803980f, 0.786455213599085770f, + 0.616440174530853650f, 0.787401747029031320f, 0.615231590580626820f, 0.788346427626606230f, 0.614021558931038490f, 0.789289253168885650f, + 0.612810082429409710f, 0.790230221437310030f, 0.611597163926462020f, 0.791169330217690090f, 0.610382806276309480f, 0.792106577300212390f, + 0.609167012336453210f, 0.793041960479443640f, 0.607949784967773740f, 0.793975477554337170f, 0.606731127034524480f, 0.794907126328237010f, + 0.605511041404325550f, 0.795836904608883460f, 0.604289530948156070f, 0.796764810208418720f, 0.603066598540348280f, 0.797690840943391040f, + 0.601842247058580030f, 0.798614994634760820f, 0.600616479383868970f, 0.799537269107905010f, 0.599389298400564540f, 0.800457662192622710f, + 0.598160706996342380f, 0.801376171723140130f, 0.596930708062196500f, 0.802292795538115720f, 0.595699304492433470f, 0.803207531480644830f, + 0.594466499184664540f, 0.804120377398265700f, 0.593232295039799800f, 0.805031331142963660f, 0.591996694962040990f, 0.805940390571176280f, + 0.590759701858874280f, 0.806847553543799220f, 0.589521318641063940f, 0.807752817926190360f, 0.588281548222645330f, 0.808656181588174980f, + 0.587040393520918080f, 0.809557642404051260f, 0.585797857456438860f, 0.810457198252594770f, 0.584553942953015330f, 0.811354847017063730f, + 0.583308652937698290f, 0.812250586585203880f, 0.582061990340775550f, 0.813144414849253590f, 0.580813958095764530f, 0.814036329705948300f, + 0.579564559139405740f, 0.814926329056526620f, 0.578313796411655590f, 0.815814410806733780f, 0.577061672855679550f, 0.816700572866827850f, + 0.575808191417845340f, 0.817584813151583710f, 0.574553355047715760f, 0.818467129580298660f, 0.573297166698042320f, 0.819347520076796900f, + 0.572039629324757050f, 0.820225982569434690f, 0.570780745886967370f, 0.821102514991104650f, 0.569520519346947250f, 0.821977115279241550f, + 0.568258952670131490f, 0.822849781375826320f, 0.566996048825108680f, 0.823720511227391320f, 0.565731810783613230f, 0.824589302785025290f, + 0.564466241520519500f, 0.825456154004377440f, 0.563199344013834090f, 0.826321062845663420f, 0.561931121244689470f, 0.827184027273669020f, + 0.560661576197336030f, 0.828045045257755800f, 0.559390711859136140f, 0.828904114771864870f, 0.558118531220556100f, 0.829761233794523050f, + 0.556845037275160100f, 0.830616400308846200f, 0.555570233019602290f, 0.831469612302545240f, 0.554294121453620110f, 0.832320867767929680f, + 0.553016705580027580f, 0.833170164701913190f, 0.551737988404707450f, 0.834017501106018130f, 0.550457972936604810f, 0.834862874986380010f, + 0.549176662187719770f, 0.835706284353752600f, 0.547894059173100190f, 0.836547727223511890f, 0.546610166910834860f, 0.837387201615661940f, + 0.545324988422046460f, 0.838224705554837970f, 0.544038526730883930f, 0.839060237070312630f, 0.542750784864516000f, 0.839893794195999410f, + 0.541461765853123560f, 0.840725374970458070f, 0.540171472729892970f, 0.841554977436898330f, 0.538879908531008420f, 0.842382599643185960f, + 0.537587076295645510f, 0.843208239641845440f, 0.536292979065963180f, 0.844031895490066410f, 0.534997619887097260f, 0.844853565249707010f, + 0.533701001807152960f, 0.845673246987299070f, 0.532403127877198010f, 0.846490938774052020f, 0.531104001151255000f, 0.847306638685858320f, + 0.529803624686294830f, 0.848120344803297120f, 0.528502001542228480f, 0.848932055211639610f, 0.527199134781901390f, 0.849741768000852440f, + 0.525895027471084740f, 0.850549481265603370f, 0.524589682678468840f, 0.851355193105265200f, 0.523283103475656430f, 0.852158901623919830f, + 0.521975292937154390f, 0.852960604930363630f, 0.520666254140367270f, 0.853760301138111300f, 0.519355990165589530f, 0.854557988365400530f, + 0.518044504095999340f, 0.855353664735196030f, 0.516731799017649980f, 0.856147328375194470f, 0.515417878019463150f, 0.856938977417828650f, + 0.514102744193221660f, 0.857728610000272120f, 0.512786400633563070f, 0.858516224264442740f, 0.511468850437970520f, 0.859301818357008360f, + 0.510150096706766700f, 0.860085390429390140f, 0.508830142543106990f, 0.860866938637767310f, 0.507508991052970870f, 0.861646461143081300f, + 0.506186645345155450f, 0.862423956111040500f, 0.504863108531267480f, 0.863199421712124160f, 0.503538383725717580f, 0.863972856121586700f, + 0.502212474045710900f, 0.864744257519462380f, 0.500885382611240940f, 0.865513624090568980f, 0.499557112545081890f, 0.866280954024512990f, + 0.498227666972781870f, 0.867046245515692650f, 0.496897049022654640f, 0.867809496763303210f, 0.495565261825772490f, 0.868570705971340900f, + 0.494232308515959730f, 0.869329871348606730f, 0.492898192229784090f, 0.870086991108711350f, 0.491562916106550060f, 0.870842063470078860f, + 0.490226483288291100f, 0.871595086655951090f, 0.488888896919763230f, 0.872346058894391540f, 0.487550160148436050f, 0.873094978418290090f, + 0.486210276124486530f, 0.873841843465366750f, 0.484869248000791120f, 0.874586652278176110f, 0.483527078932918740f, 0.875329403104110780f, + 0.482183772079122830f, 0.876070094195406600f, 0.480839330600333900f, 0.876808723809145760f, 0.479493757660153010f, 0.877545290207261240f, + 0.478147056424843120f, 0.878279791656541460f, 0.476799230063322250f, 0.879012226428633410f, 0.475450281747155870f, 0.879742592800047410f, + 0.474100214650550020f, 0.880470889052160750f, 0.472749031950342900f, 0.881197113471221980f, 0.471396736825997810f, 0.881921264348354940f, + 0.470043332459595620f, 0.882643339979562790f, 0.468688822035827960f, 0.883363338665731580f, 0.467333208741988530f, 0.884081258712634990f, + 0.465976495767966130f, 0.884797098430937790f, 0.464618686306237820f, 0.885510856136199950f, 0.463259783551860260f, 0.886222530148880640f, + 0.461899790702462840f, 0.886932118794342080f, 0.460538710958240010f, 0.887639620402853930f, 0.459176547521944150f, 0.888345033309596240f, + 0.457813303598877290f, 0.889048355854664570f, 0.456448982396883860f, 0.889749586383072890f, 0.455083587126343840f, 0.890448723244757880f, + 0.453717121000163930f, 0.891145764794583180f, 0.452349587233771000f, 0.891840709392342720f, 0.450980989045103810f, 0.892533555402764690f, + 0.449611329654606600f, 0.893224301195515320f, 0.448240612285220000f, 0.893912945145203250f, 0.446868840162374330f, 0.894599485631382580f, + 0.445496016513981740f, 0.895283921038557580f, 0.444122144570429260f, 0.895966249756185110f, 0.442747227564570130f, 0.896646470178680150f, + 0.441371268731716620f, 0.897324580705418320f, 0.439994271309633260f, 0.898000579740739880f, 0.438616238538527710f, 0.898674465693953820f, + 0.437237173661044200f, 0.899346236979341460f, 0.435857079922255470f, 0.900015892016160280f, 0.434475960569655710f, 0.900683429228646860f, + 0.433093818853152010f, 0.901348847046022030f, 0.431710658025057370f, 0.902012143902493070f, 0.430326481340082610f, 0.902673318237258830f, + 0.428941292055329550f, 0.903332368494511820f, 0.427555093430282200f, 0.903989293123443340f, 0.426167888726799620f, 0.904644090578246240f, + 0.424779681209108810f, 0.905296759318118820f, 0.423390474143796100f, 0.905947297807268460f, 0.422000270799799790f, 0.906595704514915330f, + 0.420609074448402510f, 0.907241977915295930f, 0.419216888363223960f, 0.907886116487666150f, 0.417823715820212380f, 0.908528118716306120f, + 0.416429560097637320f, 0.909167983090522270f, 0.415034424476081630f, 0.909805708104652220f, 0.413638312238434560f, 0.910441292258067140f, + 0.412241226669883000f, 0.911074734055176250f, 0.410843171057903910f, 0.911706032005429880f, 0.409444148692257590f, 0.912335184623322750f, + 0.408044162864978740f, 0.912962190428398100f, 0.406643216870369140f, 0.913587047945250810f, 0.405241314004989860f, 0.914209755703530690f, + 0.403838457567654130f, 0.914830312237946090f, 0.402434650859418540f, 0.915448716088267830f, 0.401029897183575790f, 0.916064965799331610f, + 0.399624199845646790f, 0.916679059921042700f, 0.398217562153373620f, 0.917290997008377910f, 0.396809987416710420f, 0.917900775621390390f, + 0.395401478947816300f, 0.918508394325212250f, 0.393992040061048100f, 0.919113851690057770f, 0.392581674072951530f, 0.919717146291227360f, + 0.391170384302253980f, 0.920318276709110480f, 0.389758174069856410f, 0.920917241529189520f, 0.388345046698826300f, 0.921514039342041900f, + 0.386931005514388690f, 0.922108668743345070f, 0.385516053843919020f, 0.922701128333878520f, 0.384100195016935040f, 0.923291416719527640f, + 0.382683432365089840f, 0.923879532511286740f, 0.381265769222162490f, 0.924465474325262600f, 0.379847208924051110f, 0.925049240782677580f, + 0.378427754808765620f, 0.925630830509872720f, 0.377007410216418310f, 0.926210242138311270f, 0.375586178489217330f, 0.926787474304581750f, + 0.374164062971457990f, 0.927362525650401110f, 0.372741067009515810f, 0.927935394822617890f, 0.371317193951837600f, 0.928506080473215480f, + 0.369892447148934270f, 0.929074581259315750f, 0.368466829953372320f, 0.929640895843181330f, 0.367040345719767240f, 0.930205022892219070f, + 0.365612997804773960f, 0.930766961078983710f, 0.364184789567079840f, 0.931326709081180430f, 0.362755724367397230f, 0.931884265581668150f, + 0.361325805568454340f, 0.932439629268462360f, 0.359895036534988280f, 0.932992798834738850f, 0.358463420633736540f, 0.933543772978836170f, + 0.357030961233430030f, 0.934092550404258870f, 0.355597661704783960f, 0.934639129819680780f, 0.354163525420490510f, 0.935183509938947500f, + 0.352728555755210730f, 0.935725689481080370f, 0.351292756085567150f, 0.936265667170278260f, 0.349856129790135030f, 0.936803441735921560f, + 0.348418680249434510f, 0.937339011912574960f, 0.346980410845923680f, 0.937872376439989890f, 0.345541324963989150f, 0.938403534063108060f, + 0.344101425989938980f, 0.938932483532064490f, 0.342660717311994380f, 0.939459223602189920f, 0.341219202320282410f, 0.939983753034013940f, + 0.339776884406826960f, 0.940506070593268300f, 0.338333766965541290f, 0.941026175050889260f, 0.336889853392220050f, 0.941544065183020810f, + 0.335445147084531660f, 0.942059739771017310f, 0.333999651442009490f, 0.942573197601446870f, 0.332553369866044220f, 0.943084437466093490f, + 0.331106305759876430f, 0.943593458161960390f, 0.329658462528587550f, 0.944100258491272660f, 0.328209843579092660f, 0.944604837261480260f, + 0.326760452320131790f, 0.945107193285260610f, 0.325310292162262980f, 0.945607325380521280f, 0.323859366517852960f, 0.946105232370403340f, + 0.322407678801070020f, 0.946600913083283530f, 0.320955232427875210f, 0.947094366352777220f, 0.319502030816015750f, 0.947585591017741090f, + 0.318048077385015060f, 0.948074585922276230f, 0.316593375556165850f, 0.948561349915730270f, 0.315137928752522440f, 0.949045881852700560f, + 0.313681740398891570f, 0.949528180593036670f, 0.312224813921825050f, 0.950008245001843000f, 0.310767152749611470f, 0.950486073949481700f, + 0.309308760312268780f, 0.950961666311575080f, 0.307849640041534980f, 0.951435020969008340f, 0.306389795370861080f, 0.951906136807932230f, + 0.304929229735402430f, 0.952375012719765880f, 0.303467946572011370f, 0.952841647601198720f, 0.302005949319228200f, 0.953306040354193750f, + 0.300543241417273400f, 0.953768189885990330f, 0.299079826308040480f, 0.954228095109105670f, 0.297615707435086310f, 0.954685754941338340f, + 0.296150888243623960f, 0.955141168305770670f, 0.294685372180514330f, 0.955594334130771110f, 0.293219162694258680f, 0.956045251349996410f, + 0.291752263234989370f, 0.956493918902394990f, 0.290284677254462330f, 0.956940335732208940f, 0.288816408206049480f, 0.957384500788975860f, + 0.287347459544729570f, 0.957826413027532910f, 0.285877834727080730f, 0.958266071408017670f, 0.284407537211271820f, 0.958703474895871600f, + 0.282936570457055390f, 0.959138622461841890f, 0.281464937925758050f, 0.959571513081984520f, 0.279992643080273380f, 0.960002145737665850f, + 0.278519689385053060f, 0.960430519415565790f, 0.277046080306099950f, 0.960856633107679660f, 0.275571819310958250f, 0.961280485811320640f, + 0.274096909868706330f, 0.961702076529122540f, 0.272621355449948980f, 0.962121404269041580f, 0.271145159526808070f, 0.962538468044359160f, + 0.269668325572915200f, 0.962953266873683880f, 0.268190857063403180f, 0.963365799780954050f, 0.266712757474898420f, 0.963776065795439840f, + 0.265234030285511900f, 0.964184063951745720f, 0.263754678974831510f, 0.964589793289812650f, 0.262274707023913590f, 0.964993252854920320f, + 0.260794117915275570f, 0.965394441697689400f, 0.259312915132886350f, 0.965793358874083570f, 0.257831102162158930f, 0.966190003445412620f, + 0.256348682489942910f, 0.966584374478333120f, 0.254865659604514630f, 0.966976471044852070f, 0.253382036995570270f, 0.967366292222328510f, + 0.251897818154216910f, 0.967753837093475510f, 0.250413006572965280f, 0.968139104746362330f, 0.248927605745720260f, 0.968522094274417270f, + 0.247441619167773440f, 0.968902804776428870f, 0.245955050335794590f, 0.969281235356548530f, 0.244467902747824210f, 0.969657385124292450f, + 0.242980179903263980f, 0.970031253194543970f, 0.241491885302869300f, 0.970402838687555500f, 0.240003022448741500f, 0.970772140728950350f, + 0.238513594844318500f, 0.971139158449725090f, 0.237023605994367340f, 0.971503890986251780f, 0.235533059404975460f, 0.971866337480279400f, + 0.234041958583543460f, 0.972226497078936270f, 0.232550307038775330f, 0.972584368934732210f, 0.231058108280671280f, 0.972939952205560070f, + 0.229565365820518870f, 0.973293246054698250f, 0.228072083170885790f, 0.973644249650811870f, 0.226578263845610110f, 0.973992962167955830f, + 0.225083911359792780f, 0.974339382785575860f, 0.223589029229790020f, 0.974683510688510670f, 0.222093620973203590f, 0.975025345066994120f, + 0.220597690108873650f, 0.975364885116656870f, 0.219101240156869770f, 0.975702130038528570f, 0.217604274638483670f, 0.976037079039039020f, + 0.216106797076219600f, 0.976369731330021140f, 0.214608810993786920f, 0.976700086128711840f, 0.213110319916091360f, 0.977028142657754390f, + 0.211611327369227610f, 0.977353900145199960f, 0.210111836880469720f, 0.977677357824509930f, 0.208611851978263460f, 0.977998514934557140f, + 0.207111376192218560f, 0.978317370719627650f, 0.205610413053099320f, 0.978633924429423100f, 0.204108966092817010f, 0.978948175319062200f, + 0.202607038844421110f, 0.979260122649082020f, 0.201104634842091960f, 0.979569765685440520f, 0.199601757621131050f, 0.979877103699517640f, + 0.198098410717953730f, 0.980182135968117320f, 0.196594597670080220f, 0.980484861773469380f, 0.195090322016128330f, 0.980785280403230430f, + 0.193585587295803750f, 0.981083391150486590f, 0.192080397049892380f, 0.981379193313754560f, 0.190574754820252800f, 0.981672686196983110f, + 0.189068664149806280f, 0.981963869109555240f, 0.187562128582529740f, 0.982252741366289370f, 0.186055151663446630f, 0.982539302287441240f, + 0.184547736938619640f, 0.982823551198705240f, 0.183039887955141060f, 0.983105487431216290f, 0.181531608261125130f, 0.983385110321551180f, + 0.180022901405699510f, 0.983662419211730250f, 0.178513770938997590f, 0.983937413449218920f, 0.177004220412148860f, 0.984210092386929030f, + 0.175494253377271400f, 0.984480455383220930f, 0.173983873387463850f, 0.984748501801904210f, 0.172473083996796030f, 0.985014231012239840f, + 0.170961888760301360f, 0.985277642388941220f, 0.169450291233967930f, 0.985538735312176060f, 0.167938294974731230f, 0.985797509167567370f, + 0.166425903540464220f, 0.986053963346195440f, 0.164913120489970090f, 0.986308097244598670f, 0.163399949382973230f, 0.986559910264775410f, + 0.161886393780111910f, 0.986809401814185420f, 0.160372457242928400f, 0.987056571305750970f, 0.158858143333861390f, 0.987301418157858430f, + 0.157343455616238280f, 0.987543941794359230f, 0.155828397654265320f, 0.987784141644572180f, 0.154312973013020240f, 0.988022017143283530f, + 0.152797185258443410f, 0.988257567730749460f, 0.151281037957330250f, 0.988490792852696590f, 0.149764534677321620f, 0.988721691960323780f, + 0.148247678986896200f, 0.988950264510302990f, 0.146730474455361750f, 0.989176509964781010f, 0.145212924652847520f, 0.989400427791380380f, + 0.143695033150294580f, 0.989622017463200780f, 0.142176803519448000f, 0.989841278458820530f, 0.140658239332849240f, 0.990058210262297120f, + 0.139139344163826280f, 0.990272812363169110f, 0.137620121586486180f, 0.990485084256456980f, 0.136100575175706200f, 0.990695025442664630f, + 0.134580708507126220f, 0.990902635427780010f, 0.133060525157139180f, 0.991107913723276780f, 0.131540028702883280f, 0.991310859846115440f, + 0.130019222722233350f, 0.991511473318743900f, 0.128498110793793220f, 0.991709753669099530f, 0.126976696496885980f, 0.991905700430609330f, + 0.125454983411546210f, 0.992099313142191800f, 0.123932975118512200f, 0.992290591348257370f, 0.122410675199216280f, 0.992479534598709970f, + 0.120888087235777220f, 0.992666142448948020f, 0.119365214810991350f, 0.992850414459865100f, 0.117842061508325020f, 0.993032350197851410f, + 0.116318630911904880f, 0.993211949234794500f, 0.114794926606510250f, 0.993389211148080650f, 0.113270952177564360f, 0.993564135520595300f, + 0.111746711211126660f, 0.993736721940724600f, 0.110222207293883180f, 0.993906970002356060f, 0.108697444013138670f, 0.994074879304879370f, + 0.107172424956808870f, 0.994240449453187900f, 0.105647153713410700f, 0.994403680057679100f, 0.104121633872054730f, 0.994564570734255420f, + 0.102595869022436280f, 0.994723121104325700f, 0.101069862754827880f, 0.994879330794805620f, 0.099543618660069444f, 0.995033199438118630f, + 0.098017140329560770f, 0.995184726672196820f, 0.096490431355252607f, 0.995333912140482280f, 0.094963495329639061f, 0.995480755491926940f, + 0.093436335845747912f, 0.995625256380994310f, 0.091908956497132696f, 0.995767414467659820f, 0.090381360877865011f, 0.995907229417411720f, + 0.088853552582524684f, 0.996044700901251970f, 0.087325535206192226f, 0.996179828595696870f, 0.085797312344439880f, 0.996312612182778000f, + 0.084268887593324127f, 0.996443051350042630f, 0.082740264549375803f, 0.996571145790554840f, 0.081211446809592386f, 0.996696895202896060f, + 0.079682437971430126f, 0.996820299291165670f, 0.078153241632794315f, 0.996941357764982160f, 0.076623861392031617f, 0.997060070339482960f, + 0.075094300847921291f, 0.997176436735326190f, 0.073564563599667454f, 0.997290456678690210f, 0.072034653246889416f, 0.997402129901275300f, + 0.070504573389614009f, 0.997511456140303450f, 0.068974327628266732f, 0.997618435138519550f, 0.067443919563664106f, 0.997723066644191640f, + 0.065913352797003930f, 0.997825350411111640f, 0.064382630929857410f, 0.997925286198596000f, 0.062851757564161420f, 0.998022873771486240f, + 0.061320736302208648f, 0.998118112900149180f, 0.059789570746640007f, 0.998211003360478190f, 0.058258264500435732f, 0.998301544933892890f, + 0.056726821166907783f, 0.998389737407340160f, 0.055195244349690031f, 0.998475580573294770f, 0.053663537652730679f, 0.998559074229759310f, + 0.052131704680283317f, 0.998640218180265270f, 0.050599749036899337f, 0.998719012233872940f, 0.049067674327418126f, 0.998795456205172410f, + 0.047535484156959261f, 0.998869549914283560f, 0.046003182130914644f, 0.998941293186856870f, 0.044470771854938744f, 0.999010685854073380f, + 0.042938256934940959f, 0.999077727752645360f, 0.041405640977076712f, 0.999142418724816910f, 0.039872927587739845f, 0.999204758618363890f, + 0.038340120373552791f, 0.999264747286594420f, 0.036807222941358991f, 0.999322384588349540f, 0.035274238898213947f, 0.999377670388002850f, + 0.033741171851377642f, 0.999430604555461730f, 0.032208025408304704f, 0.999481186966166950f, 0.030674803176636581f, 0.999529417501093140f, + 0.029141508764193740f, 0.999575296046749220f, 0.027608145778965820f, 0.999618822495178640f, 0.026074717829104040f, 0.999659996743959220f, + 0.024541228522912264f, 0.999698818696204250f, 0.023007681468839410f, 0.999735288260561680f, 0.021474080275469605f, 0.999769405351215280f, + 0.019940428551514598f, 0.999801169887884260f, 0.018406729905804820f, 0.999830581795823400f, 0.016872987947281773f, 0.999857641005823860f, + 0.015339206284988220f, 0.999882347454212560f, 0.013805388528060349f, 0.999904701082852900f, 0.012271538285719944f, 0.999924701839144500f, + 0.010737659167264572f, 0.999942349676023910f, 0.009203754782059960f, 0.999957644551963900f, 0.007669828739531077f, 0.999970586430974140f, + 0.006135884649154515f, 0.999981175282601110f, 0.004601926120448672f, 0.999989411081928400f, 0.003067956762966138f, 0.999995293809576190f, + 0.001533980186284766f, 0.999998823451701880f, 0.000000000000000061f, 1.000000000000000000f, -0.001533980186284644f, 0.999998823451701880f, + -0.003067956762966016f, 0.999995293809576190f, -0.004601926120448550f, 0.999989411081928400f, -0.006135884649154393f, 0.999981175282601110f, + -0.007669828739530955f, 0.999970586430974140f, -0.009203754782059837f, 0.999957644551963900f, -0.010737659167264449f, 0.999942349676023910f, + -0.012271538285719823f, 0.999924701839144500f, -0.013805388528060226f, 0.999904701082852900f, -0.015339206284988098f, 0.999882347454212560f, + -0.016872987947281651f, 0.999857641005823860f, -0.018406729905804695f, 0.999830581795823400f, -0.019940428551514476f, 0.999801169887884260f, + -0.021474080275469484f, 0.999769405351215280f, -0.023007681468839289f, 0.999735288260561680f, -0.024541228522912142f, 0.999698818696204250f, + -0.026074717829103915f, 0.999659996743959220f, -0.027608145778965698f, 0.999618822495178640f, -0.029141508764193618f, 0.999575296046749220f, + -0.030674803176636459f, 0.999529417501093140f, -0.032208025408304579f, 0.999481186966166950f, -0.033741171851377517f, 0.999430604555461730f, + -0.035274238898213822f, 0.999377670388002850f, -0.036807222941358866f, 0.999322384588349540f, -0.038340120373552666f, 0.999264747286594420f, + -0.039872927587739727f, 0.999204758618363890f, -0.041405640977076594f, 0.999142418724816910f, -0.042938256934940834f, 0.999077727752645360f, + -0.044470771854938619f, 0.999010685854073380f, -0.046003182130914519f, 0.998941293186856870f, -0.047535484156959136f, 0.998869549914283560f, + -0.049067674327418008f, 0.998795456205172410f, -0.050599749036899212f, 0.998719012233872940f, -0.052131704680283192f, 0.998640218180265270f, + -0.053663537652730554f, 0.998559074229759310f, -0.055195244349689913f, 0.998475580573294770f, -0.056726821166907658f, 0.998389737407340160f, + -0.058258264500435607f, 0.998301544933892890f, -0.059789570746639882f, 0.998211003360478190f, -0.061320736302208530f, 0.998118112900149180f, + -0.062851757564161309f, 0.998022873771486240f, -0.064382630929857285f, 0.997925286198596000f, -0.065913352797003805f, 0.997825350411111640f, + -0.067443919563663982f, 0.997723066644191640f, -0.068974327628266607f, 0.997618435138519550f, -0.070504573389613898f, 0.997511456140303450f, + -0.072034653246889291f, 0.997402129901275300f, -0.073564563599667329f, 0.997290456678690210f, -0.075094300847921167f, 0.997176436735326190f, + -0.076623861392031506f, 0.997060070339482960f, -0.078153241632794190f, 0.996941357764982160f, -0.079682437971430015f, 0.996820299291165780f, + -0.081211446809592261f, 0.996696895202896060f, -0.082740264549375678f, 0.996571145790554840f, -0.084268887593324002f, 0.996443051350042630f, + -0.085797312344439755f, 0.996312612182778000f, -0.087325535206192101f, 0.996179828595696870f, -0.088853552582524559f, 0.996044700901251970f, + -0.090381360877864886f, 0.995907229417411720f, -0.091908956497132571f, 0.995767414467659820f, -0.093436335845747787f, 0.995625256380994310f, + -0.094963495329638950f, 0.995480755491926940f, -0.096490431355252482f, 0.995333912140482280f, -0.098017140329560645f, 0.995184726672196930f, + -0.099543618660069319f, 0.995033199438118630f, -0.101069862754827750f, 0.994879330794805620f, -0.102595869022436160f, 0.994723121104325700f, + -0.104121633872054600f, 0.994564570734255420f, -0.105647153713410570f, 0.994403680057679100f, -0.107172424956808760f, 0.994240449453187900f, + -0.108697444013138560f, 0.994074879304879480f, -0.110222207293883060f, 0.993906970002356060f, -0.111746711211126550f, 0.993736721940724600f, + -0.113270952177564240f, 0.993564135520595300f, -0.114794926606510130f, 0.993389211148080650f, -0.116318630911904750f, 0.993211949234794500f, + -0.117842061508324890f, 0.993032350197851410f, -0.119365214810991230f, 0.992850414459865100f, -0.120888087235777100f, 0.992666142448948020f, + -0.122410675199216150f, 0.992479534598709970f, -0.123932975118512080f, 0.992290591348257370f, -0.125454983411546070f, 0.992099313142191800f, + -0.126976696496885870f, 0.991905700430609330f, -0.128498110793793110f, 0.991709753669099530f, -0.130019222722233240f, 0.991511473318744010f, + -0.131540028702883140f, 0.991310859846115440f, -0.133060525157139040f, 0.991107913723276890f, -0.134580708507126110f, 0.990902635427780010f, + -0.136100575175706060f, 0.990695025442664630f, -0.137620121586486070f, 0.990485084256456980f, -0.139139344163826170f, 0.990272812363169110f, + -0.140658239332849130f, 0.990058210262297120f, -0.142176803519447890f, 0.989841278458820530f, -0.143695033150294440f, 0.989622017463200890f, + -0.145212924652847410f, 0.989400427791380380f, -0.146730474455361640f, 0.989176509964781010f, -0.148247678986896090f, 0.988950264510302990f, + -0.149764534677321510f, 0.988721691960323780f, -0.151281037957330140f, 0.988490792852696700f, -0.152797185258443300f, 0.988257567730749460f, + -0.154312973013020130f, 0.988022017143283530f, -0.155828397654265200f, 0.987784141644572180f, -0.157343455616238160f, 0.987543941794359340f, + -0.158858143333861280f, 0.987301418157858430f, -0.160372457242928260f, 0.987056571305750970f, -0.161886393780111770f, 0.986809401814185530f, + -0.163399949382973110f, 0.986559910264775520f, -0.164913120489969950f, 0.986308097244598670f, -0.166425903540464100f, 0.986053963346195440f, + -0.167938294974731090f, 0.985797509167567480f, -0.169450291233967820f, 0.985538735312176060f, -0.170961888760301240f, 0.985277642388941220f, + -0.172473083996795920f, 0.985014231012239840f, -0.173983873387463710f, 0.984748501801904210f, -0.175494253377271260f, 0.984480455383220930f, + -0.177004220412148750f, 0.984210092386929030f, -0.178513770938997450f, 0.983937413449218920f, -0.180022901405699400f, 0.983662419211730250f, + -0.181531608261125020f, 0.983385110321551180f, -0.183039887955140920f, 0.983105487431216290f, -0.184547736938619530f, 0.982823551198705350f, + -0.186055151663446490f, 0.982539302287441240f, -0.187562128582529600f, 0.982252741366289370f, -0.189068664149806160f, 0.981963869109555240f, + -0.190574754820252660f, 0.981672686196983110f, -0.192080397049892270f, 0.981379193313754560f, -0.193585587295803610f, 0.981083391150486710f, + -0.195090322016128190f, 0.980785280403230430f, -0.196594597670080110f, 0.980484861773469380f, -0.198098410717953620f, 0.980182135968117430f, + -0.199601757621130940f, 0.979877103699517640f, -0.201104634842091820f, 0.979569765685440520f, -0.202607038844420970f, 0.979260122649082130f, + -0.204108966092816900f, 0.978948175319062200f, -0.205610413053099210f, 0.978633924429423210f, -0.207111376192218450f, 0.978317370719627650f, + -0.208611851978263320f, 0.977998514934557140f, -0.210111836880469610f, 0.977677357824509930f, -0.211611327369227500f, 0.977353900145200070f, + -0.213110319916091250f, 0.977028142657754390f, -0.214608810993786810f, 0.976700086128711840f, -0.216106797076219490f, 0.976369731330021140f, + -0.217604274638483560f, 0.976037079039039130f, -0.219101240156869660f, 0.975702130038528570f, -0.220597690108873530f, 0.975364885116656980f, + -0.222093620973203480f, 0.975025345066994120f, -0.223589029229789880f, 0.974683510688510670f, -0.225083911359792670f, 0.974339382785575860f, + -0.226578263845610000f, 0.973992962167955830f, -0.228072083170885680f, 0.973644249650811980f, -0.229565365820518760f, 0.973293246054698250f, + -0.231058108280671140f, 0.972939952205560180f, -0.232550307038775220f, 0.972584368934732210f, -0.234041958583543320f, 0.972226497078936380f, + -0.235533059404975350f, 0.971866337480279400f, -0.237023605994367230f, 0.971503890986251780f, -0.238513594844318390f, 0.971139158449725090f, + -0.240003022448741390f, 0.970772140728950350f, -0.241491885302869160f, 0.970402838687555500f, -0.242980179903263870f, 0.970031253194543970f, + -0.244467902747824100f, 0.969657385124292450f, -0.245955050335794480f, 0.969281235356548530f, -0.247441619167773320f, 0.968902804776428870f, + -0.248927605745720120f, 0.968522094274417380f, -0.250413006572965170f, 0.968139104746362440f, -0.251897818154216800f, 0.967753837093475510f, + -0.253382036995570160f, 0.967366292222328510f, -0.254865659604514520f, 0.966976471044852070f, -0.256348682489942800f, 0.966584374478333120f, + -0.257831102162158820f, 0.966190003445412620f, -0.259312915132886230f, 0.965793358874083680f, -0.260794117915275460f, 0.965394441697689400f, + -0.262274707023913480f, 0.964993252854920440f, -0.263754678974831400f, 0.964589793289812760f, -0.265234030285511790f, 0.964184063951745830f, + -0.266712757474898310f, 0.963776065795439840f, -0.268190857063403010f, 0.963365799780954050f, -0.269668325572915090f, 0.962953266873683880f, + -0.271145159526807960f, 0.962538468044359160f, -0.272621355449948870f, 0.962121404269041580f, -0.274096909868706220f, 0.961702076529122540f, + -0.275571819310958140f, 0.961280485811320640f, -0.277046080306099840f, 0.960856633107679660f, -0.278519689385052950f, 0.960430519415565900f, + -0.279992643080273270f, 0.960002145737665850f, -0.281464937925757940f, 0.959571513081984520f, -0.282936570457055280f, 0.959138622461842010f, + -0.284407537211271710f, 0.958703474895871600f, -0.285877834727080620f, 0.958266071408017670f, -0.287347459544729460f, 0.957826413027532910f, + -0.288816408206049370f, 0.957384500788975970f, -0.290284677254462160f, 0.956940335732208940f, -0.291752263234989260f, 0.956493918902395100f, + -0.293219162694258570f, 0.956045251349996520f, -0.294685372180514220f, 0.955594334130771110f, -0.296150888243623840f, 0.955141168305770670f, + -0.297615707435086200f, 0.954685754941338340f, -0.299079826308040360f, 0.954228095109105670f, -0.300543241417273290f, 0.953768189885990330f, + -0.302005949319228080f, 0.953306040354193860f, -0.303467946572011260f, 0.952841647601198720f, -0.304929229735402260f, 0.952375012719765880f, + -0.306389795370860970f, 0.951906136807932350f, -0.307849640041534870f, 0.951435020969008340f, -0.309308760312268620f, 0.950961666311575080f, + -0.310767152749611360f, 0.950486073949481810f, -0.312224813921824940f, 0.950008245001843000f, -0.313681740398891410f, 0.949528180593036670f, + -0.315137928752522330f, 0.949045881852700670f, -0.316593375556165730f, 0.948561349915730380f, -0.318048077385014950f, 0.948074585922276230f, + -0.319502030816015640f, 0.947585591017741200f, -0.320955232427875100f, 0.947094366352777220f, -0.322407678801069850f, 0.946600913083283530f, + -0.323859366517852850f, 0.946105232370403450f, -0.325310292162262870f, 0.945607325380521390f, -0.326760452320131620f, 0.945107193285260610f, + -0.328209843579092550f, 0.944604837261480260f, -0.329658462528587440f, 0.944100258491272660f, -0.331106305759876320f, 0.943593458161960390f, + -0.332553369866044060f, 0.943084437466093490f, -0.333999651442009380f, 0.942573197601446870f, -0.335445147084531550f, 0.942059739771017420f, + -0.336889853392219940f, 0.941544065183020810f, -0.338333766965541180f, 0.941026175050889260f, -0.339776884406826850f, 0.940506070593268300f, + -0.341219202320282300f, 0.939983753034014050f, -0.342660717311994270f, 0.939459223602189920f, -0.344101425989938870f, 0.938932483532064490f, + -0.345541324963989040f, 0.938403534063108170f, -0.346980410845923570f, 0.937872376439989890f, -0.348418680249434400f, 0.937339011912574960f, + -0.349856129790134920f, 0.936803441735921560f, -0.351292756085567040f, 0.936265667170278260f, -0.352728555755210620f, 0.935725689481080370f, + -0.354163525420490400f, 0.935183509938947610f, -0.355597661704783850f, 0.934639129819680780f, -0.357030961233429920f, 0.934092550404258980f, + -0.358463420633736430f, 0.933543772978836280f, -0.359895036534988170f, 0.932992798834738850f, -0.361325805568454230f, 0.932439629268462360f, + -0.362755724367397110f, 0.931884265581668150f, -0.364184789567079730f, 0.931326709081180540f, -0.365612997804773850f, 0.930766961078983710f, + -0.367040345719767120f, 0.930205022892219070f, -0.368466829953372210f, 0.929640895843181330f, -0.369892447148934160f, 0.929074581259315750f, + -0.371317193951837490f, 0.928506080473215590f, -0.372741067009515700f, 0.927935394822617890f, -0.374164062971457880f, 0.927362525650401110f, + -0.375586178489217220f, 0.926787474304581750f, -0.377007410216418200f, 0.926210242138311380f, -0.378427754808765450f, 0.925630830509872830f, + -0.379847208924050990f, 0.925049240782677700f, -0.381265769222162380f, 0.924465474325262600f, -0.382683432365089730f, 0.923879532511286740f, + -0.384100195016934930f, 0.923291416719527750f, -0.385516053843918900f, 0.922701128333878520f, -0.386931005514388580f, 0.922108668743345180f, + -0.388345046698826190f, 0.921514039342042010f, -0.389758174069856300f, 0.920917241529189520f, -0.391170384302253870f, 0.920318276709110590f, + -0.392581674072951410f, 0.919717146291227360f, -0.393992040061047990f, 0.919113851690057770f, -0.395401478947816190f, 0.918508394325212250f, + -0.396809987416710310f, 0.917900775621390500f, -0.398217562153373510f, 0.917290997008378020f, -0.399624199845646680f, 0.916679059921042700f, + -0.401029897183575680f, 0.916064965799331720f, -0.402434650859418430f, 0.915448716088267830f, -0.403838457567654020f, 0.914830312237946200f, + -0.405241314004989750f, 0.914209755703530690f, -0.406643216870369030f, 0.913587047945250810f, -0.408044162864978630f, 0.912962190428398210f, + -0.409444148692257480f, 0.912335184623322860f, -0.410843171057903800f, 0.911706032005429880f, -0.412241226669882890f, 0.911074734055176360f, + -0.413638312238434450f, 0.910441292258067250f, -0.415034424476081520f, 0.909805708104652330f, -0.416429560097636990f, 0.909167983090522490f, + -0.417823715820212270f, 0.908528118716306120f, -0.419216888363224070f, 0.907886116487666150f, -0.420609074448402400f, 0.907241977915295930f, + -0.422000270799799680f, 0.906595704514915330f, -0.423390474143795770f, 0.905947297807268570f, -0.424779681209108690f, 0.905296759318118820f, + -0.426167888726799670f, 0.904644090578246130f, -0.427555093430281860f, 0.903989293123443450f, -0.428941292055329440f, 0.903332368494511820f, + -0.430326481340082720f, 0.902673318237258830f, -0.431710658025057090f, 0.902012143902493290f, -0.433093818853151900f, 0.901348847046022030f, + -0.434475960569655820f, 0.900683429228646860f, -0.435857079922255360f, 0.900015892016160280f, -0.437237173661044090f, 0.899346236979341570f, + -0.438616238538527380f, 0.898674465693953930f, -0.439994271309633140f, 0.898000579740739880f, -0.441371268731716730f, 0.897324580705418320f, + -0.442747227564569800f, 0.896646470178680270f, -0.444122144570429140f, 0.895966249756185220f, -0.445496016513981800f, 0.895283921038557470f, + -0.446868840162373990f, 0.894599485631382810f, -0.448240612285219890f, 0.893912945145203250f, -0.449611329654606710f, 0.893224301195515210f, + -0.450980989045103700f, 0.892533555402764690f, -0.452349587233770890f, 0.891840709392342720f, -0.453717121000163590f, 0.891145764794583410f, + -0.455083587126343720f, 0.890448723244757990f, -0.456448982396883970f, 0.889749586383072780f, -0.457813303598877010f, 0.889048355854664680f, + -0.459176547521944030f, 0.888345033309596350f, -0.460538710958240060f, 0.887639620402853930f, -0.461899790702462560f, 0.886932118794342310f, + -0.463259783551860150f, 0.886222530148880640f, -0.464618686306237930f, 0.885510856136199840f, -0.465976495767966010f, 0.884797098430937900f, + -0.467333208741988420f, 0.884081258712634990f, -0.468688822035827680f, 0.883363338665731690f, -0.470043332459595510f, 0.882643339979562900f, + -0.471396736825997700f, 0.881921264348355050f, -0.472749031950342570f, 0.881197113471222200f, -0.474100214650549910f, 0.880470889052160870f, + -0.475450281747155980f, 0.879742592800047410f, -0.476799230063321920f, 0.879012226428633530f, -0.478147056424843010f, 0.878279791656541580f, + -0.479493757660153120f, 0.877545290207261240f, -0.480839330600333790f, 0.876808723809145760f, -0.482183772079122720f, 0.876070094195406600f, + -0.483527078932918460f, 0.875329403104111000f, -0.484869248000791010f, 0.874586652278176220f, -0.486210276124486420f, 0.873841843465366860f, + -0.487550160148435720f, 0.873094978418290200f, -0.488888896919763120f, 0.872346058894391540f, -0.490226483288291210f, 0.871595086655950980f, + -0.491562916106549790f, 0.870842063470078980f, -0.492898192229783980f, 0.870086991108711460f, -0.494232308515959840f, 0.869329871348606730f, + -0.495565261825772370f, 0.868570705971341010f, -0.496897049022654520f, 0.867809496763303210f, -0.498227666972781590f, 0.867046245515692760f, + -0.499557112545081780f, 0.866280954024513110f, -0.500885382611240830f, 0.865513624090569090f, -0.502212474045710570f, 0.864744257519462490f, + -0.503538383725717460f, 0.863972856121586810f, -0.504863108531267590f, 0.863199421712124160f, -0.506186645345155120f, 0.862423956111040610f, + -0.507508991052970760f, 0.861646461143081300f, -0.508830142543107100f, 0.860866938637767200f, -0.510150096706766590f, 0.860085390429390250f, + -0.511468850437970410f, 0.859301818357008360f, -0.512786400633562730f, 0.858516224264442960f, -0.514102744193221660f, 0.857728610000272120f, + -0.515417878019463040f, 0.856938977417828760f, -0.516731799017649650f, 0.856147328375194580f, -0.518044504095999230f, 0.855353664735196030f, + -0.519355990165589640f, 0.854557988365400530f, -0.520666254140366940f, 0.853760301138111520f, -0.521975292937154280f, 0.852960604930363740f, + -0.523283103475656540f, 0.852158901623919720f, -0.524589682678468730f, 0.851355193105265200f, -0.525895027471084630f, 0.850549481265603480f, + -0.527199134781901060f, 0.849741768000852660f, -0.528502001542228370f, 0.848932055211639720f, -0.529803624686294720f, 0.848120344803297230f, + -0.531104001151254780f, 0.847306638685858540f, -0.532403127877197900f, 0.846490938774052130f, -0.533701001807152960f, 0.845673246987299070f, + -0.534997619887097040f, 0.844853565249707230f, -0.536292979065963070f, 0.844031895490066410f, -0.537587076295645620f, 0.843208239641845440f, + -0.538879908531008310f, 0.842382599643185960f, -0.540171472729892850f, 0.841554977436898440f, -0.541461765853123220f, 0.840725374970458180f, + -0.542750784864515780f, 0.839893794195999630f, -0.544038526730883930f, 0.839060237070312630f, -0.545324988422046240f, 0.838224705554838190f, + -0.546610166910834860f, 0.837387201615661940f, -0.547894059173100190f, 0.836547727223512010f, -0.549176662187719540f, 0.835706284353752720f, + -0.550457972936604700f, 0.834862874986380120f, -0.551737988404707450f, 0.834017501106018020f, -0.553016705580027360f, 0.833170164701913300f, + -0.554294121453620110f, 0.832320867767929680f, -0.555570233019601960f, 0.831469612302545460f, -0.556845037275159990f, 0.830616400308846310f, + -0.558118531220556100f, 0.829761233794523050f, -0.559390711859135800f, 0.828904114771865100f, -0.560661576197335920f, 0.828045045257755800f, + -0.561931121244689470f, 0.827184027273669130f, -0.563199344013833980f, 0.826321062845663650f, -0.564466241520519390f, 0.825456154004377550f, + -0.565731810783613230f, 0.824589302785025180f, -0.566996048825108460f, 0.823720511227391540f, -0.568258952670131490f, 0.822849781375826320f, + -0.569520519346947250f, 0.821977115279241440f, -0.570780745886967140f, 0.821102514991104760f, -0.572039629324757050f, 0.820225982569434690f, + -0.573297166698041980f, 0.819347520076797120f, -0.574553355047715760f, 0.818467129580298770f, -0.575808191417845340f, 0.817584813151583710f, + -0.577061672855679330f, 0.816700572866827960f, -0.578313796411655480f, 0.815814410806733780f, -0.579564559139405850f, 0.814926329056526510f, + -0.580813958095764420f, 0.814036329705948520f, -0.582061990340775550f, 0.813144414849253590f, -0.583308652937698400f, 0.812250586585203880f, + -0.584553942953015220f, 0.811354847017063840f, -0.585797857456438860f, 0.810457198252594770f, -0.587040393520917750f, 0.809557642404051480f, + -0.588281548222645220f, 0.808656181588175090f, -0.589521318641063940f, 0.807752817926190360f, -0.590759701858874050f, 0.806847553543799450f, + -0.591996694962040880f, 0.805940390571176390f, -0.593232295039799910f, 0.805031331142963550f, -0.594466499184664320f, 0.804120377398265810f, + -0.595699304492433360f, 0.803207531480644940f, -0.596930708062196610f, 0.802292795538115610f, -0.598160706996342160f, 0.801376171723140350f, + -0.599389298400564540f, 0.800457662192622820f, -0.600616479383868750f, 0.799537269107905240f, -0.601842247058579920f, 0.798614994634760930f, + -0.603066598540348280f, 0.797690840943391040f, -0.604289530948155850f, 0.796764810208418940f, -0.605511041404325430f, 0.795836904608883570f, + -0.606731127034524590f, 0.794907126328236900f, -0.607949784967773520f, 0.793975477554337280f, -0.609167012336453210f, 0.793041960479443640f, + -0.610382806276309590f, 0.792106577300212280f, -0.611597163926461800f, 0.791169330217690310f, -0.612810082429409710f, 0.790230221437310030f, + -0.614021558931038160f, 0.789289253168885870f, -0.615231590580626710f, 0.788346427626606340f, -0.616440174530853650f, 0.787401747029031320f, + -0.617647307937803760f, 0.786455213599085880f, -0.618852987960976210f, 0.785506829564054040f, -0.620057211763289210f, 0.784556597155575130f, + -0.621259976511087440f, 0.783604518609638310f, -0.622461279374149970f, 0.782650596166575730f, -0.623661117525694640f, 0.781694832071059280f, + -0.624859488142386230f, 0.780737228572094600f, -0.626056388404343520f, 0.779777787923014440f, -0.627251815495143860f, 0.778816512381476090f, + -0.628445766601832600f, 0.777853404209453150f, -0.629638238914927100f, 0.776888465673232440f, -0.630829229628424360f, 0.775921699043407800f, + -0.632018735939808950f, 0.774953106594873930f, -0.633206755050057300f, 0.773982690606822790f, -0.634393284163645380f, 0.773010453362737100f, + -0.635578320488556110f, 0.772036397150384520f, -0.636761861236284310f, 0.771060524261813710f, -0.637943903621843940f, 0.770082836993348010f, + -0.639124444863775730f, 0.769103337645579590f, -0.640303482184151450f, 0.768122028523365530f, -0.641481012808583050f, 0.767138911935820510f, + -0.642657033966226860f, 0.766153990196312920f, -0.643831542889791280f, 0.765167265622459070f, -0.645004536815543930f, 0.764178740536116790f, + -0.646176012983316390f, 0.763188417263381270f, -0.647345968636511950f, 0.762196298134579010f, -0.648514401022112440f, 0.761202385484261890f, + -0.649681307390683300f, 0.760206681651202310f, -0.650846684996380760f, 0.759209188978388180f, -0.652010531096959500f, 0.758209909813015280f, + -0.653172842953776530f, 0.757208846506484680f, -0.654333617831800440f, 0.756206001414394540f, -0.655492852999615460f, 0.755201376896536550f, + -0.656650545729428830f, 0.754194975316889280f, -0.657806693297078640f, 0.753186799043612520f, -0.658961292982037430f, 0.752176850449042700f, + -0.660114342067420370f, 0.751165131909686590f, -0.661265837839992150f, 0.750151645806215070f, -0.662415777590171890f, 0.749136394523459260f, + -0.663564158612039660f, 0.748119380450403710f, -0.664710978203344900f, 0.747100605980180130f, -0.665856233665509500f, 0.746080073510064000f, + -0.666999922303637360f, 0.745057785441466060f, -0.668142041426518560f, 0.744033744179929290f, -0.669282588346635900f, 0.743007952135121830f, + -0.670421560380173090f, 0.741980411720831070f, -0.671558954847018440f, 0.740951125354958990f, -0.672694769070772750f, 0.739920095459516310f, + -0.673829000378756040f, 0.738887324460615220f, -0.674961646102012150f, 0.737852814788465870f, -0.676092703575315810f, 0.736816568877370020f, + -0.677222170137180450f, 0.735778589165713480f, -0.678350043129861250f, 0.734738878095963610f, -0.679476319899364970f, 0.733697438114660370f, + -0.680600997795453020f, 0.732654271672412820f, -0.681724074171649600f, 0.731609381223892740f, -0.682845546385247970f, 0.730562769227827590f, + -0.683965411797315510f, 0.729514438146997010f, -0.685083667772700240f, 0.728464390448225310f, -0.686200311680038590f, 0.727412628602375770f, + -0.687315340891759160f, 0.726359155084345900f, -0.688428752784090330f, 0.725303972373060880f, -0.689540544737066940f, 0.724247082951466890f, + -0.690650714134534380f, 0.723188489306527570f, -0.691759258364157640f, 0.722128193929215460f, -0.692866174817424740f, 0.721066199314508110f, + -0.693971460889653780f, 0.720002507961381770f, -0.695075113980000770f, 0.718937122372804490f, -0.696177131491462990f, 0.717870045055731710f, + -0.697277510830886400f, 0.716801278521099650f, -0.698376249408972800f, 0.715730825283818710f, -0.699473344640283880f, 0.714658687862768980f, + -0.700568793943248220f, 0.713584868780793750f, -0.701662594740168450f, 0.712509370564692320f, -0.702754744457225080f, 0.711432195745216660f, + -0.703845240524484830f, 0.710353346857062420f, -0.704934080375904880f, 0.709272826438865580f, -0.706021261449339630f, 0.708190637033195510f, + -0.707106781186547460f, 0.707106781186547570f, -0.708190637033195400f, 0.706021261449339740f, -0.709272826438865470f, 0.704934080375905100f, + -0.710353346857062310f, 0.703845240524485050f, -0.711432195745216540f, 0.702754744457225190f, -0.712509370564692210f, 0.701662594740168680f, + -0.713584868780793640f, 0.700568793943248340f, -0.714658687862768870f, 0.699473344640283990f, -0.715730825283818590f, 0.698376249408972920f, + -0.716801278521099540f, 0.697277510830886520f, -0.717870045055731600f, 0.696177131491463100f, -0.718937122372804380f, 0.695075113980000990f, + -0.720002507961381650f, 0.693971460889654000f, -0.721066199314507990f, 0.692866174817424850f, -0.722128193929215230f, 0.691759258364157860f, + -0.723188489306527460f, 0.690650714134534600f, -0.724247082951466780f, 0.689540544737067050f, -0.725303972373060770f, 0.688428752784090440f, + -0.726359155084345790f, 0.687315340891759270f, -0.727412628602375650f, 0.686200311680038700f, -0.728464390448225200f, 0.685083667772700360f, + -0.729514438146996790f, 0.683965411797315630f, -0.730562769227827480f, 0.682845546385248190f, -0.731609381223892630f, 0.681724074171649710f, + -0.732654271672412700f, 0.680600997795453240f, -0.733697438114660260f, 0.679476319899365080f, -0.734738878095963500f, 0.678350043129861360f, + -0.735778589165713370f, 0.677222170137180560f, -0.736816568877369900f, 0.676092703575315920f, -0.737852814788465760f, 0.674961646102012260f, + -0.738887324460615000f, 0.673829000378756150f, -0.739920095459516200f, 0.672694769070772860f, -0.740951125354958880f, 0.671558954847018550f, + -0.741980411720830960f, 0.670421560380173200f, -0.743007952135121720f, 0.669282588346636010f, -0.744033744179929070f, 0.668142041426518670f, + -0.745057785441465950f, 0.666999922303637580f, -0.746080073510063890f, 0.665856233665509610f, -0.747100605980180020f, 0.664710978203345020f, + -0.748119380450403600f, 0.663564158612039770f, -0.749136394523459150f, 0.662415777590172010f, -0.750151645806214960f, 0.661265837839992380f, + -0.751165131909686480f, 0.660114342067420480f, -0.752176850449042480f, 0.658961292982037540f, -0.753186799043612410f, 0.657806693297078750f, + -0.754194975316889170f, 0.656650545729429050f, -0.755201376896536440f, 0.655492852999615570f, -0.756206001414394420f, 0.654333617831800550f, + -0.757208846506484570f, 0.653172842953776640f, -0.758209909813015170f, 0.652010531096959720f, -0.759209188978388070f, 0.650846684996380990f, + -0.760206681651202200f, 0.649681307390683420f, -0.761202385484261670f, 0.648514401022112550f, -0.762196298134578900f, 0.647345968636512060f, + -0.763188417263381050f, 0.646176012983316620f, -0.764178740536116670f, 0.645004536815544040f, -0.765167265622458960f, 0.643831542889791390f, + -0.766153990196312700f, 0.642657033966227090f, -0.767138911935820290f, 0.641481012808583160f, -0.768122028523365420f, 0.640303482184151560f, + -0.769103337645579480f, 0.639124444863775840f, -0.770082836993347900f, 0.637943903621844060f, -0.771060524261813600f, 0.636761861236284420f, + -0.772036397150384410f, 0.635578320488556230f, -0.773010453362736990f, 0.634393284163645490f, -0.773982690606822680f, 0.633206755050057410f, + -0.774953106594873820f, 0.632018735939809060f, -0.775921699043407690f, 0.630829229628424470f, -0.776888465673232330f, 0.629638238914927210f, + -0.777853404209453040f, 0.628445766601832710f, -0.778816512381475980f, 0.627251815495144080f, -0.779777787923014330f, 0.626056388404343630f, + -0.780737228572094490f, 0.624859488142386340f, -0.781694832071059160f, 0.623661117525694860f, -0.782650596166575620f, 0.622461279374150080f, + -0.783604518609638200f, 0.621259976511087550f, -0.784556597155575020f, 0.620057211763289430f, -0.785506829564053930f, 0.618852987960976430f, + -0.786455213599085770f, 0.617647307937803870f, -0.787401747029031210f, 0.616440174530853760f, -0.788346427626606230f, 0.615231590580626930f, + -0.789289253168885760f, 0.614021558931038380f, -0.790230221437309920f, 0.612810082429409820f, -0.791169330217690200f, 0.611597163926461910f, + -0.792106577300212170f, 0.610382806276309700f, -0.793041960479443530f, 0.609167012336453320f, -0.793975477554337170f, 0.607949784967773630f, + -0.794907126328236790f, 0.606731127034524700f, -0.795836904608883460f, 0.605511041404325660f, -0.796764810208418830f, 0.604289530948155960f, + -0.797690840943390930f, 0.603066598540348390f, -0.798614994634760820f, 0.601842247058580140f, -0.799537269107905120f, 0.600616479383868860f, + -0.800457662192622710f, 0.599389298400564650f, -0.801376171723140240f, 0.598160706996342380f, -0.802292795538115500f, 0.596930708062196720f, + -0.803207531480644830f, 0.595699304492433470f, -0.804120377398265700f, 0.594466499184664430f, -0.805031331142963440f, 0.593232295039800020f, + -0.805940390571176280f, 0.591996694962040990f, -0.806847553543799330f, 0.590759701858874160f, -0.807752817926190250f, 0.589521318641064050f, + -0.808656181588174980f, 0.588281548222645330f, -0.809557642404051370f, 0.587040393520917970f, -0.810457198252594660f, 0.585797857456438980f, + -0.811354847017063730f, 0.584553942953015330f, -0.812250586585203770f, 0.583308652937698510f, -0.813144414849253480f, 0.582061990340775660f, + -0.814036329705948410f, 0.580813958095764530f, -0.814926329056526400f, 0.579564559139405970f, -0.815814410806733670f, 0.578313796411655700f, + -0.816700572866827850f, 0.577061672855679440f, -0.817584813151583600f, 0.575808191417845450f, -0.818467129580298660f, 0.574553355047715870f, + -0.819347520076797010f, 0.573297166698042090f, -0.820225982569434580f, 0.572039629324757270f, -0.821102514991104650f, 0.570780745886967260f, + -0.821977115279241330f, 0.569520519346947470f, -0.822849781375826210f, 0.568258952670131710f, -0.823720511227391430f, 0.566996048825108680f, + -0.824589302785025070f, 0.565731810783613450f, -0.825456154004377440f, 0.564466241520519500f, -0.826321062845663530f, 0.563199344013834090f, + -0.827184027273669020f, 0.561931121244689580f, -0.828045045257755690f, 0.560661576197336140f, -0.828904114771864990f, 0.559390711859136030f, + -0.829761233794522930f, 0.558118531220556320f, -0.830616400308846310f, 0.556845037275160100f, -0.831469612302545350f, 0.555570233019602180f, + -0.832320867767929570f, 0.554294121453620230f, -0.833170164701913190f, 0.553016705580027580f, -0.834017501106018020f, 0.551737988404707670f, + -0.834862874986380010f, 0.550457972936604920f, -0.835706284353752600f, 0.549176662187719660f, -0.836547727223511890f, 0.547894059173100410f, + -0.837387201615661820f, 0.546610166910834970f, -0.838224705554838080f, 0.545324988422046350f, -0.839060237070312630f, 0.544038526730884040f, + -0.839893794195999520f, 0.542750784864515890f, -0.840725374970458070f, 0.541461765853123330f, -0.841554977436898330f, 0.540171472729892970f, + -0.842382599643185850f, 0.538879908531008420f, -0.843208239641845330f, 0.537587076295645730f, -0.844031895490066410f, 0.536292979065963290f, + -0.844853565249707120f, 0.534997619887097150f, -0.845673246987298950f, 0.533701001807153190f, -0.846490938774052020f, 0.532403127877198010f, + -0.847306638685858430f, 0.531104001151254890f, -0.848120344803297120f, 0.529803624686294830f, -0.848932055211639610f, 0.528502001542228480f, + -0.849741768000852550f, 0.527199134781901280f, -0.850549481265603370f, 0.525895027471084850f, -0.851355193105265200f, 0.524589682678468950f, + -0.852158901623919610f, 0.523283103475656650f, -0.852960604930363630f, 0.521975292937154500f, -0.853760301138111410f, 0.520666254140367160f, + -0.854557988365400420f, 0.519355990165589750f, -0.855353664735195920f, 0.518044504095999450f, -0.856147328375194470f, 0.516731799017649760f, + -0.856938977417828650f, 0.515417878019463150f, -0.857728610000272010f, 0.514102744193221770f, -0.858516224264442850f, 0.512786400633562960f, + -0.859301818357008360f, 0.511468850437970520f, -0.860085390429390140f, 0.510150096706766810f, -0.860866938637767090f, 0.508830142543107320f, + -0.861646461143081300f, 0.507508991052970980f, -0.862423956111040500f, 0.506186645345155230f, -0.863199421712124050f, 0.504863108531267700f, + -0.863972856121586700f, 0.503538383725717690f, -0.864744257519462380f, 0.502212474045710680f, -0.865513624090568980f, 0.500885382611240940f, + -0.866280954024512990f, 0.499557112545081950f, -0.867046245515692760f, 0.498227666972781760f, -0.867809496763303210f, 0.496897049022654690f, + -0.868570705971340900f, 0.495565261825772540f, -0.869329871348606620f, 0.494232308515960010f, -0.870086991108711350f, 0.492898192229784150f, + -0.870842063470078980f, 0.491562916106549900f, -0.871595086655950870f, 0.490226483288291380f, -0.872346058894391430f, 0.488888896919763280f, + -0.873094978418290090f, 0.487550160148435880f, -0.873841843465366750f, 0.486210276124486580f, -0.874586652278176110f, 0.484869248000791120f, + -0.875329403104110890f, 0.483527078932918630f, -0.876070094195406490f, 0.482183772079122890f, -0.876808723809145650f, 0.480839330600333960f, + -0.877545290207261130f, 0.479493757660153290f, -0.878279791656541460f, 0.478147056424843180f, -0.879012226428633530f, 0.476799230063322090f, + -0.879742592800047300f, 0.475450281747156090f, -0.880470889052160750f, 0.474100214650550080f, -0.881197113471222090f, 0.472749031950342740f, + -0.881921264348354940f, 0.471396736825997860f, -0.882643339979562790f, 0.470043332459595680f, -0.883363338665731690f, 0.468688822035827850f, + -0.884081258712634880f, 0.467333208741988580f, -0.884797098430937790f, 0.465976495767966180f, -0.885510856136199840f, 0.464618686306238090f, + -0.886222530148880530f, 0.463259783551860320f, -0.886932118794342190f, 0.461899790702462730f, -0.887639620402853820f, 0.460538710958240230f, + -0.888345033309596240f, 0.459176547521944200f, -0.889048355854664570f, 0.457813303598877170f, -0.889749586383072670f, 0.456448982396884140f, + -0.890448723244757880f, 0.455083587126343890f, -0.891145764794583290f, 0.453717121000163760f, -0.891840709392342610f, 0.452349587233771060f, + -0.892533555402764580f, 0.450980989045103860f, -0.893224301195515210f, 0.449611329654606870f, -0.893912945145203140f, 0.448240612285220050f, + -0.894599485631382700f, 0.446868840162374160f, -0.895283921038557360f, 0.445496016513981960f, -0.895966249756185110f, 0.444122144570429310f, + -0.896646470178680270f, 0.442747227564569970f, -0.897324580705418210f, 0.441371268731716890f, -0.898000579740739770f, 0.439994271309633310f, + -0.898674465693953930f, 0.438616238538527550f, -0.899346236979341460f, 0.437237173661044250f, -0.900015892016160170f, 0.435857079922255530f, + -0.900683429228646750f, 0.434475960569655980f, -0.901348847046021920f, 0.433093818853152070f, -0.902012143902493180f, 0.431710658025057260f, + -0.902673318237258710f, 0.430326481340082890f, -0.903332368494511820f, 0.428941292055329600f, -0.903989293123443340f, 0.427555093430282030f, + -0.904644090578246130f, 0.426167888726799840f, -0.905296759318118700f, 0.424779681209108860f, -0.905947297807268460f, 0.423390474143795940f, + -0.906595704514915330f, 0.422000270799799850f, -0.907241977915295820f, 0.420609074448402560f, -0.907886116487666040f, 0.419216888363224240f, + -0.908528118716306120f, 0.417823715820212440f, -0.909167983090522380f, 0.416429560097637150f, -0.909805708104652110f, 0.415034424476081850f, + -0.910441292258067140f, 0.413638312238434610f, -0.911074734055176360f, 0.412241226669882830f, -0.911706032005429770f, 0.410843171057904130f, + -0.912335184623322750f, 0.409444148692257650f, -0.912962190428398210f, 0.408044162864978580f, -0.913587047945250700f, 0.406643216870369200f, + -0.914209755703530690f, 0.405241314004989920f, -0.914830312237945980f, 0.403838457567654410f, -0.915448716088267720f, 0.402434650859418600f, + -0.916064965799331720f, 0.401029897183575620f, -0.916679059921042590f, 0.399624199845647070f, -0.917290997008377910f, 0.398217562153373670f, + -0.917900775621390500f, 0.396809987416710250f, -0.918508394325212140f, 0.395401478947816520f, -0.919113851690057770f, 0.393992040061048150f, + -0.919717146291227360f, 0.392581674072951410f, -0.920318276709110480f, 0.391170384302254040f, -0.920917241529189410f, 0.389758174069856470f, + -0.921514039342041790f, 0.388345046698826580f, -0.922108668743345070f, 0.386931005514388750f, -0.922701128333878630f, 0.385516053843918850f, + -0.923291416719527520f, 0.384100195016935320f, -0.923879532511286740f, 0.382683432365089890f, -0.924465474325262600f, 0.381265769222162320f, + -0.925049240782677470f, 0.379847208924051380f, -0.925630830509872720f, 0.378427754808765670f, -0.926210242138311380f, 0.377007410216418150f, + -0.926787474304581750f, 0.375586178489217380f, -0.927362525650401110f, 0.374164062971458040f, -0.927935394822617780f, 0.372741067009516090f, + -0.928506080473215480f, 0.371317193951837710f, -0.929074581259315750f, 0.369892447148934100f, -0.929640895843181210f, 0.368466829953372600f, + -0.930205022892219070f, 0.367040345719767290f, -0.930766961078983710f, 0.365612997804773800f, -0.931326709081180320f, 0.364184789567080110f, + -0.931884265581668040f, 0.362755724367397280f, -0.932439629268462470f, 0.361325805568454170f, -0.932992798834738850f, 0.359895036534988330f, + -0.933543772978836170f, 0.358463420633736600f, -0.934092550404258760f, 0.357030961233430310f, -0.934639129819680670f, 0.355597661704784020f, + -0.935183509938947610f, 0.354163525420490400f, -0.935725689481080260f, 0.352728555755210950f, -0.936265667170278260f, 0.351292756085567200f, + -0.936803441735921670f, 0.349856129790134860f, -0.937339011912574850f, 0.348418680249434790f, -0.937872376439989770f, 0.346980410845923740f, + -0.938403534063108170f, 0.345541324963988980f, -0.938932483532064490f, 0.344101425989939040f, -0.939459223602189920f, 0.342660717311994430f, + -0.939983753034013820f, 0.341219202320282690f, -0.940506070593268300f, 0.339776884406827020f, -0.941026175050889260f, 0.338333766965541180f, + -0.941544065183020700f, 0.336889853392220330f, -0.942059739771017310f, 0.335445147084531710f, -0.942573197601446870f, 0.333999651442009380f, + -0.943084437466093380f, 0.332553369866044450f, -0.943593458161960390f, 0.331106305759876480f, -0.944100258491272660f, 0.329658462528587440f, + -0.944604837261480150f, 0.328209843579092720f, -0.945107193285260610f, 0.326760452320131840f, -0.945607325380521170f, 0.325310292162263260f, + -0.946105232370403340f, 0.323859366517853020f, -0.946600913083283530f, 0.322407678801069850f, -0.947094366352777110f, 0.320955232427875490f, + -0.947585591017741090f, 0.319502030816015800f, -0.948074585922276230f, 0.318048077385014890f, -0.948561349915730270f, 0.316593375556166070f, + -0.949045881852700560f, 0.315137928752522500f, -0.949528180593036670f, 0.313681740398891410f, -0.950008245001843000f, 0.312224813921825110f, + -0.950486073949481700f, 0.310767152749611530f, -0.950961666311574970f, 0.309308760312269000f, -0.951435020969008340f, 0.307849640041535030f, + -0.951906136807932350f, 0.306389795370860920f, -0.952375012719765770f, 0.304929229735402650f, -0.952841647601198600f, 0.303467946572011430f, + -0.953306040354193860f, 0.302005949319228030f, -0.953768189885990210f, 0.300543241417273680f, -0.954228095109105560f, 0.299079826308040530f, + -0.954685754941338340f, 0.297615707435086140f, -0.955141168305770670f, 0.296150888243624010f, -0.955594334130771110f, 0.294685372180514380f, + -0.956045251349996290f, 0.293219162694258960f, -0.956493918902394990f, 0.291752263234989430f, -0.956940335732208820f, 0.290284677254462390f, + -0.957384500788975860f, 0.288816408206049760f, -0.957826413027532910f, 0.287347459544729620f, -0.958266071408017670f, 0.285877834727080560f, + -0.958703474895871490f, 0.284407537211272100f, -0.959138622461841890f, 0.282936570457055450f, -0.959571513081984520f, 0.281464937925757890f, + -0.960002145737665850f, 0.279992643080273440f, -0.960430519415565790f, 0.278519689385053170f, -0.960856633107679550f, 0.277046080306100230f, + -0.961280485811320640f, 0.275571819310958310f, -0.961702076529122540f, 0.274096909868706380f, -0.962121404269041470f, 0.272621355449949250f, + -0.962538468044359160f, 0.271145159526808120f, -0.962953266873683880f, 0.269668325572915090f, -0.963365799780953940f, 0.268190857063403400f, + -0.963776065795439840f, 0.266712757474898480f, -0.964184063951745830f, 0.265234030285511730f, -0.964589793289812650f, 0.263754678974831570f, + -0.964993252854920320f, 0.262274707023913700f, -0.965394441697689290f, 0.260794117915275850f, -0.965793358874083570f, 0.259312915132886400f, + -0.966190003445412500f, 0.257831102162158990f, -0.966584374478333010f, 0.256348682489943190f, -0.966976471044852070f, 0.254865659604514680f, + -0.967366292222328510f, 0.253382036995570100f, -0.967753837093475400f, 0.251897818154217190f, -0.968139104746362330f, 0.250413006572965340f, + -0.968522094274417380f, 0.248927605745720090f, -0.968902804776428870f, 0.247441619167773490f, -0.969281235356548420f, 0.245955050335794650f, + -0.969657385124292340f, 0.244467902747824480f, -0.970031253194543970f, 0.242980179903264070f, -0.970402838687555500f, 0.241491885302869360f, + -0.970772140728950240f, 0.240003022448741780f, -0.971139158449725090f, 0.238513594844318550f, -0.971503890986251780f, 0.237023605994367170f, + -0.971866337480279290f, 0.235533059404975740f, -0.972226497078936270f, 0.234041958583543510f, -0.972584368934732210f, 0.232550307038775160f, + -0.972939952205560070f, 0.231058108280671330f, -0.973293246054698250f, 0.229565365820518920f, -0.973644249650811870f, 0.228072083170886060f, + -0.973992962167955830f, 0.226578263845610170f, -0.974339382785575860f, 0.225083911359792830f, -0.974683510688510670f, 0.223589029229790290f, + -0.975025345066994120f, 0.222093620973203650f, -0.975364885116656980f, 0.220597690108873510f, -0.975702130038528460f, 0.219101240156870050f, + -0.976037079039039020f, 0.217604274638483720f, -0.976369731330021140f, 0.216106797076219440f, -0.976700086128711730f, 0.214608810993786980f, + -0.977028142657754390f, 0.213110319916091420f, -0.977353900145199960f, 0.211611327369227890f, -0.977677357824509930f, 0.210111836880469800f, + -0.977998514934557140f, 0.208611851978263510f, -0.978317370719627540f, 0.207111376192218840f, -0.978633924429423100f, 0.205610413053099380f, + -0.978948175319062200f, 0.204108966092816840f, -0.979260122649082020f, 0.202607038844421380f, -0.979569765685440520f, 0.201104634842092010f, + -0.979877103699517640f, 0.199601757621130920f, -0.980182135968117320f, 0.198098410717953810f, -0.980484861773469380f, 0.196594597670080280f, + -0.980785280403230430f, 0.195090322016128610f, -0.981083391150486590f, 0.193585587295803800f, -0.981379193313754560f, 0.192080397049892470f, + -0.981672686196983110f, 0.190574754820253070f, -0.981963869109555240f, 0.189068664149806360f, -0.982252741366289370f, 0.187562128582529570f, + -0.982539302287441240f, 0.186055151663446910f, -0.982823551198705240f, 0.184547736938619700f, -0.983105487431216290f, 0.183039887955140900f, + -0.983385110321551180f, 0.181531608261125220f, -0.983662419211730250f, 0.180022901405699570f, -0.983937413449218920f, 0.178513770938997420f, + -0.984210092386929030f, 0.177004220412148940f, -0.984480455383220930f, 0.175494253377271450f, -0.984748501801904210f, 0.173983873387464130f, + -0.985014231012239840f, 0.172473083996796120f, -0.985277642388941220f, 0.170961888760301220f, -0.985538735312176060f, 0.169450291233968210f, + -0.985797509167567370f, 0.167938294974731280f, -0.986053963346195440f, 0.166425903540464050f, -0.986308097244598560f, 0.164913120489970140f, + -0.986559910264775410f, 0.163399949382973280f, -0.986809401814185530f, 0.161886393780111740f, -0.987056571305750970f, 0.160372457242928450f, + -0.987301418157858430f, 0.158858143333861470f, -0.987543941794359230f, 0.157343455616238550f, -0.987784141644572180f, 0.155828397654265370f, + -0.988022017143283530f, 0.154312973013020080f, -0.988257567730749460f, 0.152797185258443690f, -0.988490792852696590f, 0.151281037957330310f, + -0.988721691960323780f, 0.149764534677321450f, -0.988950264510302990f, 0.148247678986896250f, -0.989176509964781010f, 0.146730474455361800f, + -0.989400427791380380f, 0.145212924652847350f, -0.989622017463200780f, 0.143695033150294640f, -0.989841278458820530f, 0.142176803519448090f, + -0.990058210262297010f, 0.140658239332849540f, -0.990272812363169110f, 0.139139344163826340f, -0.990485084256457090f, 0.137620121586486040f, + -0.990695025442664630f, 0.136100575175706480f, -0.990902635427780010f, 0.134580708507126280f, -0.991107913723276890f, 0.133060525157139010f, + -0.991310859846115440f, 0.131540028702883340f, -0.991511473318743900f, 0.130019222722233430f, -0.991709753669099530f, 0.128498110793793090f, + -0.991905700430609330f, 0.126976696496886060f, -0.992099313142191800f, 0.125454983411546260f, -0.992290591348257260f, 0.123932975118512480f, + -0.992479534598709970f, 0.122410675199216350f, -0.992666142448948020f, 0.120888087235777060f, -0.992850414459865100f, 0.119365214810991630f, + -0.993032350197851410f, 0.117842061508325090f, -0.993211949234794500f, 0.116318630911904710f, -0.993389211148080650f, 0.114794926606510310f, + -0.993564135520595300f, 0.113270952177564420f, -0.993736721940724600f, 0.111746711211126500f, -0.993906970002356060f, 0.110222207293883240f, + -0.994074879304879370f, 0.108697444013138740f, -0.994240449453187900f, 0.107172424956809160f, -0.994403680057679100f, 0.105647153713410750f, + -0.994564570734255420f, 0.104121633872054570f, -0.994723121104325700f, 0.102595869022436560f, -0.994879330794805620f, 0.101069862754827930f, + -0.995033199438118630f, 0.099543618660069277f, -0.995184726672196820f, 0.098017140329560826f, -0.995333912140482280f, 0.096490431355252662f, + -0.995480755491926940f, 0.094963495329638908f, -0.995625256380994310f, 0.093436335845747967f, -0.995767414467659820f, 0.091908956497132752f, + -0.995907229417411720f, 0.090381360877865288f, -0.996044700901251970f, 0.088853552582524753f, -0.996179828595696980f, 0.087325535206192059f, + -0.996312612182778000f, 0.085797312344440158f, -0.996443051350042630f, 0.084268887593324182f, -0.996571145790554840f, 0.082740264549375636f, + -0.996696895202896060f, 0.081211446809592663f, -0.996820299291165670f, 0.079682437971430195f, -0.996941357764982160f, 0.078153241632794149f, + -0.997060070339482960f, 0.076623861392031686f, -0.997176436735326080f, 0.075094300847921347f, -0.997290456678690210f, 0.073564563599667732f, + -0.997402129901275300f, 0.072034653246889471f, -0.997511456140303450f, 0.070504573389613856f, -0.997618435138519550f, 0.068974327628267024f, + -0.997723066644191640f, 0.067443919563664176f, -0.997825350411111640f, 0.065913352797003763f, -0.997925286198596000f, 0.064382630929857701f, + -0.998022873771486240f, 0.062851757564161490f, -0.998118112900149180f, 0.061320736302208488f, -0.998211003360478190f, 0.059789570746640069f, + -0.998301544933892890f, 0.058258264500435794f, -0.998389737407340160f, 0.056726821166908067f, -0.998475580573294770f, 0.055195244349690094f, + -0.998559074229759310f, 0.053663537652730520f, -0.998640218180265160f, 0.052131704680283594f, -0.998719012233872940f, 0.050599749036899393f, + -0.998795456205172410f, 0.049067674327417966f, -0.998869549914283560f, 0.047535484156959538f, -0.998941293186856870f, 0.046003182130914706f, + -0.999010685854073380f, 0.044470771854938584f, -0.999077727752645360f, 0.042938256934941021f, -0.999142418724816910f, 0.041405640977076774f, + -0.999204758618363890f, 0.039872927587740130f, -0.999264747286594420f, 0.038340120373552854f, -0.999322384588349540f, 0.036807222941358832f, + -0.999377670388002850f, 0.035274238898214232f, -0.999430604555461730f, 0.033741171851377705f, -0.999481186966166950f, 0.032208025408304544f, + -0.999529417501093140f, 0.030674803176636865f, -0.999575296046749220f, 0.029141508764193802f, -0.999618822495178640f, 0.027608145778965660f, + -0.999659996743959220f, 0.026074717829104099f, -0.999698818696204250f, 0.024541228522912326f, -0.999735288260561680f, 0.023007681468839695f, + -0.999769405351215280f, 0.021474080275469667f, -0.999801169887884260f, 0.019940428551514438f, -0.999830581795823400f, 0.018406729905805101f, + -0.999857641005823860f, 0.016872987947281835f, -0.999882347454212560f, 0.015339206284988060f, -0.999904701082852790f, 0.013805388528060632f, + -0.999924701839144500f, 0.012271538285720007f, -0.999942349676023910f, 0.010737659167264411f, -0.999957644551963900f, 0.009203754782060021f, + -0.999970586430974140f, 0.007669828739531138f, -0.999981175282601110f, 0.006135884649154799f, -0.999989411081928400f, 0.004601926120448733f, + -0.999995293809576190f, 0.003067956762965977f, -0.999998823451701880f, 0.001533980186285049f, -1.000000000000000000f, 0.000000000000000122f, + -0.999998823451701880f, -0.001533980186284804f, -0.999995293809576190f, -0.003067956762965732f, -0.999989411081928400f, -0.004601926120448488f, + -0.999981175282601110f, -0.006135884649154554f, -0.999970586430974140f, -0.007669828739530893f, -0.999957644551963900f, -0.009203754782059776f, + -0.999942349676023910f, -0.010737659167264166f, -0.999924701839144500f, -0.012271538285719762f, -0.999904701082852900f, -0.013805388528060387f, + -0.999882347454212560f, -0.015339206284987816f, -0.999857641005823860f, -0.016872987947281589f, -0.999830581795823400f, -0.018406729905804858f, + -0.999801169887884260f, -0.019940428551514192f, -0.999769405351215280f, -0.021474080275469421f, -0.999735288260561680f, -0.023007681468839448f, + -0.999698818696204250f, -0.024541228522912080f, -0.999659996743959220f, -0.026074717829103856f, -0.999618822495178640f, -0.027608145778965414f, + -0.999575296046749220f, -0.029141508764193556f, -0.999529417501093140f, -0.030674803176636619f, -0.999481186966166950f, -0.032208025408304294f, + -0.999430604555461730f, -0.033741171851377455f, -0.999377670388002850f, -0.035274238898213982f, -0.999322384588349540f, -0.036807222941358582f, + -0.999264747286594420f, -0.038340120373552611f, -0.999204758618363890f, -0.039872927587739887f, -0.999142418724816910f, -0.041405640977076531f, + -0.999077727752645360f, -0.042938256934940779f, -0.999010685854073380f, -0.044470771854938335f, -0.998941293186856870f, -0.046003182130914456f, + -0.998869549914283560f, -0.047535484156959296f, -0.998795456205172410f, -0.049067674327417724f, -0.998719012233872940f, -0.050599749036899150f, + -0.998640218180265270f, -0.052131704680283351f, -0.998559074229759310f, -0.053663537652730277f, -0.998475580573294770f, -0.055195244349689851f, + -0.998389737407340160f, -0.056726821166907818f, -0.998301544933892890f, -0.058258264500435551f, -0.998211003360478190f, -0.059789570746639827f, + -0.998118112900149180f, -0.061320736302208245f, -0.998022873771486240f, -0.062851757564161240f, -0.997925286198596000f, -0.064382630929857451f, + -0.997825350411111640f, -0.065913352797003527f, -0.997723066644191640f, -0.067443919563663926f, -0.997618435138519550f, -0.068974327628266774f, + -0.997511456140303450f, -0.070504573389613606f, -0.997402129901275300f, -0.072034653246889235f, -0.997290456678690210f, -0.073564563599667496f, + -0.997176436735326190f, -0.075094300847921097f, -0.997060070339482960f, -0.076623861392031437f, -0.996941357764982160f, -0.078153241632793899f, + -0.996820299291165780f, -0.079682437971429945f, -0.996696895202896060f, -0.081211446809592427f, -0.996571145790554840f, -0.082740264549375400f, + -0.996443051350042630f, -0.084268887593323932f, -0.996312612182778000f, -0.085797312344439922f, -0.996179828595696980f, -0.087325535206191809f, + -0.996044700901251970f, -0.088853552582524503f, -0.995907229417411720f, -0.090381360877865052f, -0.995767414467659820f, -0.091908956497132516f, + -0.995625256380994310f, -0.093436335845747731f, -0.995480755491926940f, -0.094963495329638659f, -0.995333912140482280f, -0.096490431355252412f, + -0.995184726672196930f, -0.098017140329560590f, -0.995033199438118630f, -0.099543618660069041f, -0.994879330794805620f, -0.101069862754827680f, + -0.994723121104325700f, -0.102595869022436310f, -0.994564570734255530f, -0.104121633872054320f, -0.994403680057679100f, -0.105647153713410520f, + -0.994240449453187900f, -0.107172424956808910f, -0.994074879304879480f, -0.108697444013138490f, -0.993906970002356060f, -0.110222207293883000f, + -0.993736721940724710f, -0.111746711211126250f, -0.993564135520595300f, -0.113270952177564170f, -0.993389211148080650f, -0.114794926606510070f, + -0.993211949234794610f, -0.116318630911904470f, -0.993032350197851410f, -0.117842061508324840f, -0.992850414459865100f, -0.119365214810991380f, + -0.992666142448948020f, -0.120888087235776820f, -0.992479534598709970f, -0.122410675199216100f, -0.992290591348257370f, -0.123932975118512230f, + -0.992099313142191800f, -0.125454983411546010f, -0.991905700430609330f, -0.126976696496885810f, -0.991709753669099530f, -0.128498110793792840f, + -0.991511473318744010f, -0.130019222722233180f, -0.991310859846115440f, -0.131540028702883090f, -0.991107913723276890f, -0.133060525157138760f, + -0.990902635427780010f, -0.134580708507126060f, -0.990695025442664630f, -0.136100575175706230f, -0.990485084256457090f, -0.137620121586485790f, + -0.990272812363169110f, -0.139139344163826120f, -0.990058210262297120f, -0.140658239332849290f, -0.989841278458820530f, -0.142176803519447840f, + -0.989622017463200890f, -0.143695033150294390f, -0.989400427791380380f, -0.145212924652847130f, -0.989176509964781010f, -0.146730474455361580f, + -0.988950264510302990f, -0.148247678986896030f, -0.988721691960323780f, -0.149764534677321200f, -0.988490792852696700f, -0.151281037957330080f, + -0.988257567730749460f, -0.152797185258443440f, -0.988022017143283640f, -0.154312973013019830f, -0.987784141644572180f, -0.155828397654265120f, + -0.987543941794359230f, -0.157343455616238300f, -0.987301418157858430f, -0.158858143333861220f, -0.987056571305750970f, -0.160372457242928200f, + -0.986809401814185530f, -0.161886393780111490f, -0.986559910264775520f, -0.163399949382973060f, -0.986308097244598670f, -0.164913120489969890f, + -0.986053963346195440f, -0.166425903540463830f, -0.985797509167567480f, -0.167938294974731030f, -0.985538735312176060f, -0.169450291233967990f, + -0.985277642388941330f, -0.170961888760300970f, -0.985014231012239840f, -0.172473083996795870f, -0.984748501801904210f, -0.173983873387463880f, + -0.984480455383220930f, -0.175494253377271200f, -0.984210092386929140f, -0.177004220412148690f, -0.983937413449218920f, -0.178513770938997170f, + -0.983662419211730250f, -0.180022901405699350f, -0.983385110321551180f, -0.181531608261124970f, -0.983105487431216400f, -0.183039887955140650f, + -0.982823551198705350f, -0.184547736938619480f, -0.982539302287441240f, -0.186055151663446660f, -0.982252741366289480f, -0.187562128582529320f, + -0.981963869109555240f, -0.189068664149806110f, -0.981672686196983110f, -0.190574754820252820f, -0.981379193313754670f, -0.192080397049892220f, + -0.981083391150486710f, -0.193585587295803550f, -0.980785280403230430f, -0.195090322016128360f, -0.980484861773469380f, -0.196594597670080030f, + -0.980182135968117430f, -0.198098410717953560f, -0.979877103699517750f, -0.199601757621130670f, -0.979569765685440520f, -0.201104634842091760f, + -0.979260122649082020f, -0.202607038844421130f, -0.978948175319062200f, -0.204108966092816620f, -0.978633924429423210f, -0.205610413053099160f, + -0.978317370719627650f, -0.207111376192218590f, -0.977998514934557140f, -0.208611851978263260f, -0.977677357824510040f, -0.210111836880469550f, + -0.977353900145199960f, -0.211611327369227660f, -0.977028142657754390f, -0.213110319916091200f, -0.976700086128711840f, -0.214608810993786730f, + -0.976369731330021250f, -0.216106797076219210f, -0.976037079039039130f, -0.217604274638483470f, -0.975702130038528570f, -0.219101240156869800f, + -0.975364885116656980f, -0.220597690108873260f, -0.975025345066994120f, -0.222093620973203430f, -0.974683510688510670f, -0.223589029229790040f, + -0.974339382785575860f, -0.225083911359792610f, -0.973992962167955940f, -0.226578263845609920f, -0.973644249650811870f, -0.228072083170885810f, + -0.973293246054698250f, -0.229565365820518700f, -0.972939952205560180f, -0.231058108280671080f, -0.972584368934732320f, -0.232550307038774940f, + -0.972226497078936380f, -0.234041958583543260f, -0.971866337480279400f, -0.235533059404975510f, -0.971503890986251890f, -0.237023605994366950f, + -0.971139158449725200f, -0.238513594844318330f, -0.970772140728950240f, -0.240003022448741530f, -0.970402838687555500f, -0.241491885302869110f, + -0.970031253194543970f, -0.242980179903263820f, -0.969657385124292450f, -0.244467902747824260f, -0.969281235356548530f, -0.245955050335794430f, + -0.968902804776428870f, -0.247441619167773270f, -0.968522094274417380f, -0.248927605745719870f, -0.968139104746362440f, -0.250413006572965110f, + -0.967753837093475510f, -0.251897818154216970f, -0.967366292222328620f, -0.253382036995569880f, -0.966976471044852180f, -0.254865659604514460f, + -0.966584374478333120f, -0.256348682489942910f, -0.966190003445412620f, -0.257831102162158770f, -0.965793358874083680f, -0.259312915132886180f, + -0.965394441697689400f, -0.260794117915275630f, -0.964993252854920440f, -0.262274707023913420f, -0.964589793289812760f, -0.263754678974831350f, + -0.964184063951745830f, -0.265234030285511510f, -0.963776065795439950f, -0.266712757474898250f, -0.963365799780954050f, -0.268190857063403180f, + -0.962953266873683990f, -0.269668325572914810f, -0.962538468044359160f, -0.271145159526807900f, -0.962121404269041580f, -0.272621355449949030f, + -0.961702076529122540f, -0.274096909868706160f, -0.961280485811320640f, -0.275571819310958090f, -0.960856633107679550f, -0.277046080306100010f, + -0.960430519415565900f, -0.278519689385052890f, -0.960002145737665960f, -0.279992643080273220f, -0.959571513081984630f, -0.281464937925757660f, + -0.959138622461842010f, -0.282936570457055170f, -0.958703474895871600f, -0.284407537211271820f, -0.958266071408017780f, -0.285877834727080340f, + -0.957826413027532910f, -0.287347459544729400f, -0.957384500788975860f, -0.288816408206049540f, -0.956940335732208940f, -0.290284677254462110f, + -0.956493918902395100f, -0.291752263234989210f, -0.956045251349996410f, -0.293219162694258740f, -0.955594334130771110f, -0.294685372180514160f, + -0.955141168305770780f, -0.296150888243623790f, -0.954685754941338450f, -0.297615707435085920f, -0.954228095109105670f, -0.299079826308040310f, + -0.953768189885990330f, -0.300543241417273450f, -0.953306040354193970f, -0.302005949319227810f, -0.952841647601198720f, -0.303467946572011200f, + -0.952375012719765880f, -0.304929229735402430f, -0.951906136807932350f, -0.306389795370860700f, -0.951435020969008450f, -0.307849640041534810f, + -0.950961666311575080f, -0.309308760312268780f, -0.950486073949481810f, -0.310767152749611310f, -0.950008245001843000f, -0.312224813921824880f, + -0.949528180593036790f, -0.313681740398891180f, -0.949045881852700670f, -0.315137928752522220f, -0.948561349915730270f, -0.316593375556165850f, + -0.948074585922276340f, -0.318048077385014670f, -0.947585591017741200f, -0.319502030816015580f, -0.947094366352777220f, -0.320955232427875270f, + -0.946600913083283650f, -0.322407678801069630f, -0.946105232370403450f, -0.323859366517852800f, -0.945607325380521280f, -0.325310292162262980f, + -0.945107193285260610f, -0.326760452320131570f, -0.944604837261480260f, -0.328209843579092500f, -0.944100258491272770f, -0.329658462528587210f, + -0.943593458161960390f, -0.331106305759876260f, -0.943084437466093490f, -0.332553369866044220f, -0.942573197601446980f, -0.333999651442009100f, + -0.942059739771017420f, -0.335445147084531490f, -0.941544065183020810f, -0.336889853392220110f, -0.941026175050889370f, -0.338333766965540910f, + -0.940506070593268410f, -0.339776884406826800f, -0.939983753034013940f, -0.341219202320282470f, -0.939459223602190030f, -0.342660717311994210f, + -0.938932483532064600f, -0.344101425989938810f, -0.938403534063108280f, -0.345541324963988760f, -0.937872376439989890f, -0.346980410845923510f, + -0.937339011912574960f, -0.348418680249434560f, -0.936803441735921670f, -0.349856129790134640f, -0.936265667170278260f, -0.351292756085566980f, + -0.935725689481080370f, -0.352728555755210730f, -0.935183509938947720f, -0.354163525420490120f, -0.934639129819680780f, -0.355597661704783800f, + -0.934092550404258870f, -0.357030961233430090f, -0.933543772978836280f, -0.358463420633736370f, -0.932992798834738960f, -0.359895036534988110f, + -0.932439629268462470f, -0.361325805568453950f, -0.931884265581668150f, -0.362755724367397060f, -0.931326709081180430f, -0.364184789567079890f, + -0.930766961078983820f, -0.365612997804773580f, -0.930205022892219070f, -0.367040345719767070f, -0.929640895843181210f, -0.368466829953372380f, + -0.929074581259315860f, -0.369892447148933880f, -0.928506080473215590f, -0.371317193951837430f, -0.927935394822617780f, -0.372741067009515870f, + -0.927362525650401110f, -0.374164062971457820f, -0.926787474304581860f, -0.375586178489217160f, -0.926210242138311490f, -0.377007410216417930f, + -0.925630830509872830f, -0.378427754808765390f, -0.925049240782677580f, -0.379847208924051160f, -0.924465474325262710f, -0.381265769222162100f, + -0.923879532511286850f, -0.382683432365089670f, -0.923291416719527640f, -0.384100195016935100f, -0.922701128333878630f, -0.385516053843918630f, + -0.922108668743345180f, -0.386931005514388530f, -0.921514039342041900f, -0.388345046698826360f, -0.920917241529189520f, -0.389758174069856240f, + -0.920318276709110590f, -0.391170384302253820f, -0.919717146291227470f, -0.392581674072951190f, -0.919113851690057770f, -0.393992040061047930f, + -0.918508394325212250f, -0.395401478947816300f, -0.917900775621390610f, -0.396809987416710030f, -0.917290997008378020f, -0.398217562153373450f, + -0.916679059921042700f, -0.399624199845646840f, -0.916064965799331830f, -0.401029897183575400f, -0.915448716088267830f, -0.402434650859418370f, + -0.914830312237946090f, -0.403838457567654190f, -0.914209755703530690f, -0.405241314004989690f, -0.913587047945250810f, -0.406643216870368970f, + -0.912962190428398320f, -0.408044162864978350f, -0.912335184623322860f, -0.409444148692257430f, -0.911706032005429880f, -0.410843171057903910f, + -0.911074734055176470f, -0.412241226669882610f, -0.910441292258067250f, -0.413638312238434390f, -0.909805708104652220f, -0.415034424476081630f, + -0.909167983090522490f, -0.416429560097636930f, -0.908528118716306230f, -0.417823715820212220f, -0.907886116487666150f, -0.419216888363224020f, + -0.907241977915295930f, -0.420609074448402340f, -0.906595704514915450f, -0.422000270799799630f, -0.905947297807268570f, -0.423390474143795710f, + -0.905296759318118820f, -0.424779681209108640f, -0.904644090578246240f, -0.426167888726799620f, -0.903989293123443450f, -0.427555093430281810f, + -0.903332368494511930f, -0.428941292055329380f, -0.902673318237258830f, -0.430326481340082670f, -0.902012143902493290f, -0.431710658025057040f, + -0.901348847046022030f, -0.433093818853151850f, -0.900683429228646860f, -0.434475960569655760f, -0.900015892016160280f, -0.435857079922255310f, + -0.899346236979341570f, -0.437237173661044030f, -0.898674465693954040f, -0.438616238538527330f, -0.898000579740739880f, -0.439994271309633090f, + -0.897324580705418320f, -0.441371268731716670f, -0.896646470178680380f, -0.442747227564569750f, -0.895966249756185220f, -0.444122144570429090f, + -0.895283921038557470f, -0.445496016513981740f, -0.894599485631382810f, -0.446868840162373940f, -0.893912945145203250f, -0.448240612285219830f, + -0.893224301195515320f, -0.449611329654606650f, -0.892533555402764690f, -0.450980989045103640f, -0.891840709392342720f, -0.452349587233770830f, + -0.891145764794583410f, -0.453717121000163540f, -0.890448723244757990f, -0.455083587126343670f, -0.889749586383072780f, -0.456448982396883920f, + -0.889048355854664680f, -0.457813303598876950f, -0.888345033309596350f, -0.459176547521943980f, -0.887639620402853930f, -0.460538710958240060f, + -0.886932118794342310f, -0.461899790702462510f, -0.886222530148880640f, -0.463259783551860090f, -0.885510856136199950f, -0.464618686306237870f, + -0.884797098430937900f, -0.465976495767965960f, -0.884081258712634990f, -0.467333208741988360f, -0.883363338665731800f, -0.468688822035827620f, + -0.882643339979562900f, -0.470043332459595450f, -0.881921264348355050f, -0.471396736825997640f, -0.881197113471222200f, -0.472749031950342510f, + -0.880470889052160870f, -0.474100214650549860f, -0.879742592800047410f, -0.475450281747155920f, -0.879012226428633640f, -0.476799230063321870f, + -0.878279791656541580f, -0.478147056424842950f, -0.877545290207261240f, -0.479493757660153060f, -0.876808723809145760f, -0.480839330600333740f, + -0.876070094195406600f, -0.482183772079122660f, -0.875329403104111000f, -0.483527078932918410f, -0.874586652278176220f, -0.484869248000790950f, + -0.873841843465366860f, -0.486210276124486360f, -0.873094978418290200f, -0.487550160148435660f, -0.872346058894391540f, -0.488888896919763060f, + -0.871595086655950980f, -0.490226483288291160f, -0.870842063470079090f, -0.491562916106549730f, -0.870086991108711460f, -0.492898192229783930f, + -0.869329871348606730f, -0.494232308515959780f, -0.868570705971341010f, -0.495565261825772320f, -0.867809496763303320f, -0.496897049022654470f, + -0.867046245515692870f, -0.498227666972781540f, -0.866280954024513110f, -0.499557112545081730f, -0.865513624090569090f, -0.500885382611240710f, + -0.864744257519462490f, -0.502212474045710570f, -0.863972856121586810f, -0.503538383725717460f, -0.863199421712124160f, -0.504863108531267590f, + -0.862423956111040720f, -0.506186645345155010f, -0.861646461143081410f, -0.507508991052970760f, -0.860866938637767310f, -0.508830142543107100f, + -0.860085390429390250f, -0.510150096706766590f, -0.859301818357008470f, -0.511468850437970300f, -0.858516224264442960f, -0.512786400633562730f, + -0.857728610000272120f, -0.514102744193221550f, -0.856938977417828760f, -0.515417878019462930f, -0.856147328375194690f, -0.516731799017649650f, + -0.855353664735196140f, -0.518044504095999230f, -0.854557988365400530f, -0.519355990165589640f, -0.853760301138111520f, -0.520666254140366940f, + -0.852960604930363740f, -0.521975292937154280f, -0.852158901623919830f, -0.523283103475656430f, -0.851355193105265310f, -0.524589682678468730f, + -0.850549481265603480f, -0.525895027471084630f, -0.849741768000852660f, -0.527199134781901060f, -0.848932055211639720f, -0.528502001542228260f, + -0.848120344803297230f, -0.529803624686294610f, -0.847306638685858540f, -0.531104001151254670f, -0.846490938774052130f, -0.532403127877197790f, + -0.845673246987299070f, -0.533701001807152960f, -0.844853565249707230f, -0.534997619887096930f, -0.844031895490066520f, -0.536292979065963070f, + -0.843208239641845440f, -0.537587076295645510f, -0.842382599643185960f, -0.538879908531008200f, -0.841554977436898440f, -0.540171472729892850f, + -0.840725374970458180f, -0.541461765853123220f, -0.839893794195999630f, -0.542750784864515780f, -0.839060237070312740f, -0.544038526730883820f, + -0.838224705554838190f, -0.545324988422046130f, -0.837387201615662050f, -0.546610166910834750f, -0.836547727223512010f, -0.547894059173100190f, + -0.835706284353752720f, -0.549176662187719540f, -0.834862874986380120f, -0.550457972936604700f, -0.834017501106018130f, -0.551737988404707450f, + -0.833170164701913300f, -0.553016705580027360f, -0.832320867767929680f, -0.554294121453620000f, -0.831469612302545460f, -0.555570233019601960f, + -0.830616400308846430f, -0.556845037275159880f, -0.829761233794523050f, -0.558118531220556100f, -0.828904114771865100f, -0.559390711859135800f, + -0.828045045257755800f, -0.560661576197335920f, -0.827184027273669130f, -0.561931121244689360f, -0.826321062845663650f, -0.563199344013833870f, + -0.825456154004377550f, -0.564466241520519390f, -0.824589302785025290f, -0.565731810783613230f, -0.823720511227391540f, -0.566996048825108460f, + -0.822849781375826430f, -0.568258952670131490f, -0.821977115279241550f, -0.569520519346947250f, -0.821102514991104760f, -0.570780745886967140f, + -0.820225982569434690f, -0.572039629324757050f, -0.819347520076797120f, -0.573297166698041980f, -0.818467129580298770f, -0.574553355047715650f, + -0.817584813151583710f, -0.575808191417845340f, -0.816700572866827960f, -0.577061672855679330f, -0.815814410806733890f, -0.578313796411655480f, + -0.814926329056526620f, -0.579564559139405740f, -0.814036329705948520f, -0.580813958095764300f, -0.813144414849253590f, -0.582061990340775440f, + -0.812250586585203880f, -0.583308652937698400f, -0.811354847017063840f, -0.584553942953015100f, -0.810457198252594770f, -0.585797857456438860f, + -0.809557642404051480f, -0.587040393520917750f, -0.808656181588175090f, -0.588281548222645110f, -0.807752817926190360f, -0.589521318641063940f, + -0.806847553543799450f, -0.590759701858873940f, -0.805940390571176390f, -0.591996694962040880f, -0.805031331142963550f, -0.593232295039799800f, + -0.804120377398265920f, -0.594466499184664210f, -0.803207531480644940f, -0.595699304492433250f, -0.802292795538115720f, -0.596930708062196500f, + -0.801376171723140350f, -0.598160706996342160f, -0.800457662192622820f, -0.599389298400564540f, -0.799537269107905240f, -0.600616479383868640f, + -0.798614994634760930f, -0.601842247058579920f, -0.797690840943391160f, -0.603066598540348160f, -0.796764810208418940f, -0.604289530948155850f, + -0.795836904608883570f, -0.605511041404325430f, -0.794907126328236900f, -0.606731127034524480f, -0.793975477554337280f, -0.607949784967773410f, + -0.793041960479443750f, -0.609167012336453100f, -0.792106577300212280f, -0.610382806276309480f, -0.791169330217690310f, -0.611597163926461800f, + -0.790230221437310140f, -0.612810082429409710f, -0.789289253168885870f, -0.614021558931038160f, -0.788346427626606340f, -0.615231590580626710f, + -0.787401747029031430f, -0.616440174530853650f, -0.786455213599085990f, -0.617647307937803650f, -0.785506829564054040f, -0.618852987960976210f, + -0.784556597155575240f, -0.620057211763289210f, -0.783604518609638420f, -0.621259976511087440f, -0.782650596166575840f, -0.622461279374149860f, + -0.781694832071059390f, -0.623661117525694640f, -0.780737228572094600f, -0.624859488142386230f, -0.779777787923014550f, -0.626056388404343520f, + -0.778816512381476200f, -0.627251815495143860f, -0.777853404209453150f, -0.628445766601832600f, -0.776888465673232440f, -0.629638238914926980f, + -0.775921699043407800f, -0.630829229628424250f, -0.774953106594873930f, -0.632018735939808950f, -0.773982690606822790f, -0.633206755050057300f, + -0.773010453362737100f, -0.634393284163645270f, -0.772036397150384520f, -0.635578320488556110f, -0.771060524261813710f, -0.636761861236284310f, + -0.770082836993348120f, -0.637943903621843940f, -0.769103337645579700f, -0.639124444863775730f, -0.768122028523365640f, -0.640303482184151450f, + -0.767138911935820510f, -0.641481012808583050f, -0.766153990196312920f, -0.642657033966226860f, -0.765167265622459070f, -0.643831542889791280f, + -0.764178740536116790f, -0.645004536815543820f, -0.763188417263381270f, -0.646176012983316390f, -0.762196298134579120f, -0.647345968636511840f, + -0.761202385484261890f, -0.648514401022112330f, -0.760206681651202420f, -0.649681307390683190f, -0.759209188978388180f, -0.650846684996380760f, + -0.758209909813015280f, -0.652010531096959500f, -0.757208846506484790f, -0.653172842953776530f, -0.756206001414394650f, -0.654333617831800330f, + -0.755201376896536550f, -0.655492852999615350f, -0.754194975316889390f, -0.656650545729428830f, -0.753186799043612630f, -0.657806693297078530f, + -0.752176850449042700f, -0.658961292982037320f, -0.751165131909686590f, -0.660114342067420260f, -0.750151645806215070f, -0.661265837839992150f, + -0.749136394523459260f, -0.662415777590171780f, -0.748119380450403710f, -0.663564158612039660f, -0.747100605980180130f, -0.664710978203344790f, + -0.746080073510064000f, -0.665856233665509390f, -0.745057785441466060f, -0.666999922303637360f, -0.744033744179929290f, -0.668142041426518450f, + -0.743007952135121940f, -0.669282588346635790f, -0.741980411720831070f, -0.670421560380172980f, -0.740951125354959110f, -0.671558954847018440f, + -0.739920095459516310f, -0.672694769070772750f, -0.738887324460615220f, -0.673829000378756040f, -0.737852814788465980f, -0.674961646102012040f, + -0.736816568877370020f, -0.676092703575315810f, -0.735778589165713590f, -0.677222170137180330f, -0.734738878095963720f, -0.678350043129861250f, + -0.733697438114660370f, -0.679476319899364860f, -0.732654271672412820f, -0.680600997795453020f, -0.731609381223892740f, -0.681724074171649600f, + -0.730562769227827700f, -0.682845546385247970f, -0.729514438146997010f, -0.683965411797315400f, -0.728464390448225420f, -0.685083667772700130f, + -0.727412628602375880f, -0.686200311680038480f, -0.726359155084345900f, -0.687315340891759160f, -0.725303972373060880f, -0.688428752784090330f, + -0.724247082951467000f, -0.689540544737066830f, -0.723188489306527680f, -0.690650714134534380f, -0.722128193929215460f, -0.691759258364157640f, + -0.721066199314508110f, -0.692866174817424630f, -0.720002507961381880f, -0.693971460889653780f, -0.718937122372804490f, -0.695075113980000770f, + -0.717870045055731710f, -0.696177131491462990f, -0.716801278521099650f, -0.697277510830886400f, -0.715730825283818710f, -0.698376249408972800f, + -0.714658687862768980f, -0.699473344640283880f, -0.713584868780793750f, -0.700568793943248220f, -0.712509370564692320f, -0.701662594740168450f, + -0.711432195745216660f, -0.702754744457225080f, -0.710353346857062420f, -0.703845240524484830f, -0.709272826438865690f, -0.704934080375904880f, + -0.708190637033195510f, -0.706021261449339520f, -0.707106781186547680f, -0.707106781186547460f, -0.706021261449339740f, -0.708190637033195290f, + -0.704934080375905100f, -0.709272826438865470f, -0.703845240524485050f, -0.710353346857062310f, -0.702754744457225300f, -0.711432195745216430f, + -0.701662594740168680f, -0.712509370564692210f, -0.700568793943248450f, -0.713584868780793520f, -0.699473344640284100f, -0.714658687862768760f, + -0.698376249408973030f, -0.715730825283818480f, -0.697277510830886630f, -0.716801278521099540f, -0.696177131491463210f, -0.717870045055731490f, + -0.695075113980000990f, -0.718937122372804380f, -0.693971460889654000f, -0.720002507961381650f, -0.692866174817424850f, -0.721066199314507880f, + -0.691759258364157860f, -0.722128193929215230f, -0.690650714134534600f, -0.723188489306527460f, -0.689540544737067050f, -0.724247082951466780f, + -0.688428752784090550f, -0.725303972373060660f, -0.687315340891759390f, -0.726359155084345680f, -0.686200311680038700f, -0.727412628602375650f, + -0.685083667772700360f, -0.728464390448225200f, -0.683965411797315630f, -0.729514438146996790f, -0.682845546385248190f, -0.730562769227827480f, + -0.681724074171649820f, -0.731609381223892520f, -0.680600997795453240f, -0.732654271672412590f, -0.679476319899365080f, -0.733697438114660150f, + -0.678350043129861470f, -0.734738878095963500f, -0.677222170137180560f, -0.735778589165713370f, -0.676092703575316030f, -0.736816568877369790f, + -0.674961646102012260f, -0.737852814788465760f, -0.673829000378756260f, -0.738887324460615000f, -0.672694769070772970f, -0.739920095459516090f, + -0.671558954847018660f, -0.740951125354958880f, -0.670421560380173200f, -0.741980411720830960f, -0.669282588346636120f, -0.743007952135121720f, + -0.668142041426518670f, -0.744033744179929070f, -0.666999922303637580f, -0.745057785441465840f, -0.665856233665509610f, -0.746080073510063780f, + -0.664710978203345020f, -0.747100605980180020f, -0.663564158612039880f, -0.748119380450403490f, -0.662415777590172010f, -0.749136394523459040f, + -0.661265837839992380f, -0.750151645806214960f, -0.660114342067420480f, -0.751165131909686370f, -0.658961292982037540f, -0.752176850449042480f, + -0.657806693297078750f, -0.753186799043612410f, -0.656650545729429050f, -0.754194975316889170f, -0.655492852999615570f, -0.755201376896536320f, + -0.654333617831800660f, -0.756206001414394420f, -0.653172842953777090f, -0.757208846506484230f, -0.652010531096959720f, -0.758209909813015170f, + -0.650846684996380990f, -0.759209188978387960f, -0.649681307390683080f, -0.760206681651202420f, -0.648514401022112220f, -0.761202385484262000f, + -0.647345968636512500f, -0.762196298134578560f, -0.646176012983316620f, -0.763188417263381050f, -0.645004536815544040f, -0.764178740536116560f, + -0.643831542889791500f, -0.765167265622458960f, -0.642657033966226750f, -0.766153990196313030f, -0.641481012808583610f, -0.767138911935820070f, + -0.640303482184152010f, -0.768122028523365090f, -0.639124444863775950f, -0.769103337645579480f, -0.637943903621844170f, -0.770082836993347900f, + -0.636761861236284200f, -0.771060524261813820f, -0.635578320488556000f, -0.772036397150384630f, -0.634393284163645930f, -0.773010453362736660f, + -0.633206755050057520f, -0.773982690606822570f, -0.632018735939809170f, -0.774953106594873820f, -0.630829229628424580f, -0.775921699043407580f, + -0.629638238914926870f, -0.776888465673232550f, -0.628445766601833160f, -0.777853404209452700f, -0.627251815495144420f, -0.778816512381475650f, + -0.626056388404343740f, -0.779777787923014330f, -0.624859488142386450f, -0.780737228572094380f, -0.623661117525694530f, -0.781694832071059500f, + -0.622461279374149750f, -0.782650596166575840f, -0.621259976511088000f, -0.783604518609637980f, -0.620057211763289430f, -0.784556597155575020f, + -0.618852987960976430f, -0.785506829564053820f, -0.617647307937803980f, -0.786455213599085770f, -0.616440174530853540f, -0.787401747029031430f, + -0.615231590580627260f, -0.788346427626605890f, -0.614021558931038710f, -0.789289253168885430f, -0.612810082429409930f, -0.790230221437309920f, + -0.611597163926462020f, -0.791169330217690090f, -0.610382806276309360f, -0.792106577300212390f, -0.609167012336452980f, -0.793041960479443860f, + -0.607949784967774080f, -0.793975477554336840f, -0.606731127034524810f, -0.794907126328236790f, -0.605511041404325660f, -0.795836904608883460f, + -0.604289530948156070f, -0.796764810208418720f, -0.603066598540348050f, -0.797690840943391160f, -0.601842247058580470f, -0.798614994634760490f, + -0.600616479383869310f, -0.799537269107904790f, -0.599389298400564760f, -0.800457662192622600f, -0.598160706996342380f, -0.801376171723140130f, + -0.596930708062196390f, -0.802292795538115720f, -0.595699304492433130f, -0.803207531480645050f, -0.594466499184664880f, -0.804120377398265470f, + -0.593232295039800130f, -0.805031331142963440f, -0.591996694962041100f, -0.805940390571176170f, -0.590759701858874280f, -0.806847553543799220f, + -0.589521318641063830f, -0.807752817926190470f, -0.588281548222645780f, -0.808656181588174650f, -0.587040393520918300f, -0.809557642404051040f, + -0.585797857456439090f, -0.810457198252594660f, -0.584553942953015330f, -0.811354847017063730f, -0.583308652937698290f, -0.812250586585203990f, + -0.582061990340775330f, -0.813144414849253700f, -0.580813958095764970f, -0.814036329705948080f, -0.579564559139405970f, -0.814926329056526400f, + -0.578313796411655700f, -0.815814410806733670f, -0.577061672855679550f, -0.816700572866827730f, -0.575808191417845230f, -0.817584813151583820f, + -0.574553355047716320f, -0.818467129580298320f, -0.573297166698042540f, -0.819347520076796680f, -0.572039629324757270f, -0.820225982569434460f, + -0.570780745886967370f, -0.821102514991104650f, -0.569520519346947140f, -0.821977115279241550f, -0.568258952670131380f, -0.822849781375826430f, + -0.566996048825109010f, -0.823720511227391090f, -0.565731810783613450f, -0.824589302785025070f, -0.564466241520519610f, -0.825456154004377440f, + -0.563199344013834090f, -0.826321062845663420f, -0.561931121244689250f, -0.827184027273669240f, -0.560661576197336480f, -0.828045045257755460f, + -0.559390711859136470f, -0.828904114771864650f, -0.558118531220556320f, -0.829761233794522930f, -0.556845037275160100f, -0.830616400308846200f, + -0.555570233019602180f, -0.831469612302545240f, -0.554294121453619890f, -0.832320867767929800f, -0.553016705580027910f, -0.833170164701912960f, + -0.551737988404707670f, -0.834017501106017910f, -0.550457972936604920f, -0.834862874986380010f, -0.549176662187719770f, -0.835706284353752600f, + -0.547894059173100080f, -0.836547727223512120f, -0.546610166910835420f, -0.837387201615661600f, -0.545324988422046800f, -0.838224705554837860f, + -0.544038526730884150f, -0.839060237070312520f, -0.542750784864516000f, -0.839893794195999410f, -0.541461765853123440f, -0.840725374970458070f, + -0.540171472729892740f, -0.841554977436898550f, -0.538879908531008870f, -0.842382599643185630f, -0.537587076295645730f, -0.843208239641845210f, + -0.536292979065963290f, -0.844031895490066300f, -0.534997619887097260f, -0.844853565249707010f, -0.533701001807152850f, -0.845673246987299180f, + -0.532403127877198460f, -0.846490938774051790f, -0.531104001151255330f, -0.847306638685858090f, -0.529803624686294940f, -0.848120344803297120f, + -0.528502001542228590f, -0.848932055211639610f, -0.527199134781901280f, -0.849741768000852550f, -0.525895027471084520f, -0.850549481265603590f, + -0.524589682678469390f, -0.851355193105264860f, -0.523283103475656760f, -0.852158901623919610f, -0.521975292937154500f, -0.852960604930363520f, + -0.520666254140367160f, -0.853760301138111410f, -0.519355990165589420f, -0.854557988365400640f, -0.518044504095999890f, -0.855353664735195700f, + -0.516731799017650210f, -0.856147328375194250f, -0.515417878019463260f, -0.856938977417828540f, -0.514102744193221770f, -0.857728610000272010f, + -0.512786400633562960f, -0.858516224264442850f, -0.511468850437970190f, -0.859301818357008470f, -0.510150096706767250f, -0.860085390429389920f, + -0.508830142543107320f, -0.860866938637767090f, -0.507508991052970980f, -0.861646461143081190f, -0.506186645345155340f, -0.862423956111040500f, + -0.504863108531267370f, -0.863199421712124270f, -0.503538383725718020f, -0.863972856121586470f, -0.502212474045711120f, -0.864744257519462160f, + -0.500885382611241050f, -0.865513624090568980f, -0.499557112545082000f, -0.866280954024512880f, -0.498227666972781810f, -0.867046245515692650f, + -0.496897049022654360f, -0.867809496763303320f, -0.495565261825772980f, -0.868570705971340670f, -0.494232308515960060f, -0.869329871348606620f, + -0.492898192229784200f, -0.870086991108711350f, -0.491562916106549950f, -0.870842063470078860f, -0.490226483288291050f, -0.871595086655951090f, + -0.488888896919763730f, -0.872346058894391210f, -0.487550160148436330f, -0.873094978418289870f, -0.486210276124486640f, -0.873841843465366750f, + -0.484869248000791180f, -0.874586652278176110f, -0.483527078932918690f, -0.875329403104110890f, -0.482183772079122550f, -0.876070094195406710f, + -0.480839330600334400f, -0.876808723809145430f, -0.479493757660153340f, -0.877545290207261130f, -0.478147056424843230f, -0.878279791656541460f, + -0.476799230063322140f, -0.879012226428633410f, -0.475450281747155760f, -0.879742592800047520f, -0.474100214650550520f, -0.880470889052160530f, + -0.472749031950343180f, -0.881197113471221870f, -0.471396736825997860f, -0.881921264348354940f, -0.470043332459595730f, -0.882643339979562680f, + -0.468688822035827900f, -0.883363338665731580f, -0.467333208741988250f, -0.884081258712635100f, -0.465976495767966630f, -0.884797098430937570f, + -0.464618686306238150f, -0.885510856136199730f, -0.463259783551860370f, -0.886222530148880530f, -0.461899790702462790f, -0.886932118794342190f, + -0.460538710958239890f, -0.887639620402854050f, -0.459176547521944640f, -0.888345033309596020f, -0.457813303598877620f, -0.889048355854664350f, + -0.456448982396884200f, -0.889749586383072670f, -0.455083587126343950f, -0.890448723244757880f, -0.453717121000163810f, -0.891145764794583290f, + -0.452349587233770670f, -0.891840709392342830f, -0.450980989045104310f, -0.892533555402764360f, -0.449611329654606930f, -0.893224301195515210f, + -0.448240612285220110f, -0.893912945145203140f, -0.446868840162374210f, -0.894599485631382700f, -0.445496016513981630f, -0.895283921038557580f, + -0.444122144570429760f, -0.895966249756184880f, -0.442747227564570410f, -0.896646470178680040f, -0.441371268731716950f, -0.897324580705418210f, + -0.439994271309633370f, -0.898000579740739770f, -0.438616238538527600f, -0.898674465693953820f, -0.437237173661043920f, -0.899346236979341680f, + -0.435857079922255970f, -0.900015892016159950f, -0.434475960569656040f, -0.900683429228646750f, -0.433093818853152120f, -0.901348847046021920f, + -0.431710658025057310f, -0.902012143902493180f, -0.430326481340082500f, -0.902673318237258830f, -0.428941292055330050f, -0.903332368494511600f, + -0.427555093430282470f, -0.903989293123443120f, -0.426167888726799890f, -0.904644090578246130f, -0.424779681209108920f, -0.905296759318118700f, + -0.423390474143795990f, -0.905947297807268460f, -0.422000270799799520f, -0.906595704514915450f, -0.420609074448403010f, -0.907241977915295590f, + -0.419216888363224290f, -0.907886116487666040f, -0.417823715820212490f, -0.908528118716306010f, -0.416429560097637210f, -0.909167983090522380f, + -0.415034424476081520f, -0.909805708104652330f, -0.413638312238435110f, -0.910441292258066910f, -0.412241226669883280f, -0.911074734055176140f, + -0.410843171057904190f, -0.911706032005429770f, -0.409444148692257760f, -0.912335184623322750f, -0.408044162864978630f, -0.912962190428398210f, + -0.406643216870368810f, -0.913587047945250920f, -0.405241314004990360f, -0.914209755703530470f, -0.403838457567654460f, -0.914830312237945980f, + -0.402434650859418650f, -0.915448716088267720f, -0.401029897183575680f, -0.916064965799331720f, -0.399624199845646730f, -0.916679059921042700f, + -0.398217562153374170f, -0.917290997008377680f, -0.396809987416710750f, -0.917900775621390270f, -0.395401478947816580f, -0.918508394325212140f, + -0.393992040061048210f, -0.919113851690057660f, -0.392581674072951470f, -0.919717146291227360f, -0.391170384302253700f, -0.920318276709110590f, + -0.389758174069856970f, -0.920917241529189300f, -0.388345046698826630f, -0.921514039342041790f, -0.386931005514388800f, -0.922108668743345070f, + -0.385516053843918900f, -0.922701128333878520f, -0.384100195016934930f, -0.923291416719527640f, -0.382683432365090340f, -0.923879532511286520f, + -0.381265769222162760f, -0.924465474325262490f, -0.379847208924051440f, -0.925049240782677470f, -0.378427754808765730f, -0.925630830509872720f, + -0.377007410216418200f, -0.926210242138311380f, -0.375586178489217050f, -0.926787474304581860f, -0.374164062971458490f, -0.927362525650400890f, + -0.372741067009516150f, -0.927935394822617670f, -0.371317193951837770f, -0.928506080473215480f, -0.369892447148934160f, -0.929074581259315750f, + -0.368466829953372210f, -0.929640895843181330f, -0.367040345719766960f, -0.930205022892219180f, -0.365612997804774300f, -0.930766961078983600f, + -0.364184789567080170f, -0.931326709081180320f, -0.362755724367397340f, -0.931884265581668040f, -0.361325805568454230f, -0.932439629268462360f, + -0.359895036534987940f, -0.932992798834738960f, -0.358463420633737040f, -0.933543772978835950f, -0.357030961233430370f, -0.934092550404258760f, + -0.355597661704784070f, -0.934639129819680670f, -0.354163525420490450f, -0.935183509938947610f, -0.352728555755210620f, -0.935725689481080370f, + -0.351292756085566870f, -0.936265667170278370f, -0.349856129790135360f, -0.936803441735921450f, -0.348418680249434840f, -0.937339011912574850f, + -0.346980410845923790f, -0.937872376439989770f, -0.345541324963989040f, -0.938403534063108170f, -0.344101425989938650f, -0.938932483532064600f, + -0.342660717311994880f, -0.939459223602189700f, -0.341219202320282740f, -0.939983753034013820f, -0.339776884406827070f, -0.940506070593268300f, + -0.338333766965541240f, -0.941026175050889260f, -0.336889853392219940f, -0.941544065183020810f, -0.335445147084531380f, -0.942059739771017420f, + -0.333999651442009830f, -0.942573197601446760f, -0.332553369866044500f, -0.943084437466093380f, -0.331106305759876540f, -0.943593458161960270f, + -0.329658462528587490f, -0.944100258491272660f, -0.328209843579092330f, -0.944604837261480370f, -0.326760452320132290f, -0.945107193285260380f, + -0.325310292162263310f, -0.945607325380521170f, -0.323859366517853080f, -0.946105232370403340f, -0.322407678801069910f, -0.946600913083283530f, + -0.320955232427875160f, -0.947094366352777220f, -0.319502030816015410f, -0.947585591017741200f, -0.318048077385015390f, -0.948074585922276110f, + -0.316593375556166180f, -0.948561349915730160f, -0.315137928752522560f, -0.949045881852700560f, -0.313681740398891460f, -0.949528180593036670f, + -0.312224813921824770f, -0.950008245001843110f, -0.310767152749612030f, -0.950486073949481590f, -0.309308760312269060f, -0.950961666311574970f, + -0.307849640041535090f, -0.951435020969008340f, -0.306389795370861030f, -0.951906136807932350f, -0.304929229735402320f, -0.952375012719765880f, + -0.303467946572011040f, -0.952841647601198720f, -0.302005949319228530f, -0.953306040354193750f, -0.300543241417273730f, -0.953768189885990210f, + -0.299079826308040590f, -0.954228095109105560f, -0.297615707435086200f, -0.954685754941338340f, -0.296150888243623680f, -0.955141168305770780f, + -0.294685372180514880f, -0.955594334130770880f, -0.293219162694259020f, -0.956045251349996290f, -0.291752263234989480f, -0.956493918902394990f, + -0.290284677254462440f, -0.956940335732208820f, -0.288816408206049370f, -0.957384500788975970f, -0.287347459544729290f, -0.957826413027533020f, + -0.285877834727081060f, -0.958266071408017560f, -0.284407537211272150f, -0.958703474895871490f, -0.282936570457055500f, -0.959138622461841890f, + -0.281464937925757940f, -0.959571513081984520f, -0.279992643080273050f, -0.960002145737665960f, -0.278519689385053610f, -0.960430519415565680f, + -0.277046080306100280f, -0.960856633107679550f, -0.275571819310958370f, -0.961280485811320530f, -0.274096909868706440f, -0.961702076529122540f, + -0.272621355449948870f, -0.962121404269041580f, -0.271145159526807790f, -0.962538468044359270f, -0.269668325572915530f, -0.962953266873683770f, + -0.268190857063403510f, -0.963365799780953940f, -0.266712757474898530f, -0.963776065795439840f, -0.265234030285511790f, -0.964184063951745830f, + -0.263754678974831240f, -0.964589793289812760f, -0.262274707023914140f, -0.964993252854920210f, -0.260794117915275900f, -0.965394441697689290f, + -0.259312915132886460f, -0.965793358874083570f, -0.257831102162159040f, -0.966190003445412500f, -0.256348682489942800f, -0.966584374478333120f, + -0.254865659604514350f, -0.966976471044852180f, -0.253382036995570600f, -0.967366292222328390f, -0.251897818154217250f, -0.967753837093475400f, + -0.250413006572965390f, -0.968139104746362330f, -0.248927605745720150f, -0.968522094274417270f, -0.247441619167773130f, -0.968902804776428870f, + -0.245955050335795150f, -0.969281235356548310f, -0.244467902747824540f, -0.969657385124292340f, -0.242980179903264120f, -0.970031253194543970f, + -0.241491885302869410f, -0.970402838687555500f, -0.240003022448741390f, -0.970772140728950350f, -0.238513594844318190f, -0.971139158449725200f, + -0.237023605994367670f, -0.971503890986251670f, -0.235533059404975790f, -0.971866337480279290f, -0.234041958583543570f, -0.972226497078936270f, + -0.232550307038775220f, -0.972584368934732210f, -0.231058108280670940f, -0.972939952205560180f, -0.229565365820519420f, -0.973293246054698140f, + -0.228072083170886120f, -0.973644249650811870f, -0.226578263845610220f, -0.973992962167955830f, -0.225083911359792920f, -0.974339382785575860f, + -0.223589029229789900f, -0.974683510688510670f, -0.222093620973203290f, -0.975025345066994230f, -0.220597690108873980f, -0.975364885116656870f, + -0.219101240156870100f, -0.975702130038528460f, -0.217604274638483780f, -0.976037079039039020f, -0.216106797076219490f, -0.976369731330021140f, + -0.214608810993786620f, -0.976700086128711840f, -0.213110319916091920f, -0.977028142657754280f, -0.211611327369227970f, -0.977353900145199960f, + -0.210111836880469860f, -0.977677357824509930f, -0.208611851978263570f, -0.977998514934557030f, -0.207111376192218480f, -0.978317370719627650f, + -0.205610413053099020f, -0.978633924429423210f, -0.204108966092817340f, -0.978948175319062090f, -0.202607038844421440f, -0.979260122649082020f, + -0.201104634842092070f, -0.979569765685440520f, -0.199601757621130970f, -0.979877103699517640f, -0.198098410717953420f, -0.980182135968117430f, + -0.196594597670080780f, -0.980484861773469270f, -0.195090322016128660f, -0.980785280403230320f, -0.193585587295803860f, -0.981083391150486590f, + -0.192080397049892520f, -0.981379193313754560f, -0.190574754820252680f, -0.981672686196983110f, -0.189068664149805970f, -0.981963869109555350f, + -0.187562128582530070f, -0.982252741366289370f, -0.186055151663446970f, -0.982539302287441240f, -0.184547736938619780f, -0.982823551198705240f, + -0.183039887955140950f, -0.983105487431216290f, -0.181531608261124830f, -0.983385110321551290f, -0.180022901405700070f, -0.983662419211730140f, + -0.178513770938997920f, -0.983937413449218810f, -0.177004220412149000f, -0.984210092386929030f, -0.175494253377271510f, -0.984480455383220930f, + -0.173983873387463740f, -0.984748501801904210f, -0.172473083996795730f, -0.985014231012239840f, -0.170961888760301690f, -0.985277642388941110f, + -0.169450291233968290f, -0.985538735312176060f, -0.167938294974731340f, -0.985797509167567370f, -0.166425903540464100f, -0.986053963346195440f, + -0.164913120489969760f, -0.986308097244598670f, -0.163399949382973780f, -0.986559910264775410f, -0.161886393780112240f, -0.986809401814185420f, + -0.160372457242928510f, -0.987056571305750970f, -0.158858143333861530f, -0.987301418157858320f, -0.157343455616238190f, -0.987543941794359340f, + -0.155828397654264980f, -0.987784141644572180f, -0.154312973013020580f, -0.988022017143283530f, -0.152797185258443740f, -0.988257567730749460f, + -0.151281037957330360f, -0.988490792852696590f, -0.149764534677321510f, -0.988721691960323780f, -0.148247678986895890f, -0.988950264510302990f, + -0.146730474455362300f, -0.989176509964780900f, -0.145212924652847850f, -0.989400427791380270f, -0.143695033150294690f, -0.989622017463200780f, + -0.142176803519448140f, -0.989841278458820530f, -0.140658239332849160f, -0.990058210262297120f, -0.139139344163825980f, -0.990272812363169110f, + -0.137620121586486540f, -0.990485084256456980f, -0.136100575175706530f, -0.990695025442664630f, -0.134580708507126360f, -0.990902635427780010f, + -0.133060525157139060f, -0.991107913723276890f, -0.131540028702882950f, -0.991310859846115440f, -0.130019222722233930f, -0.991511473318743900f, + -0.128498110793793590f, -0.991709753669099530f, -0.126976696496886120f, -0.991905700430609330f, -0.125454983411546320f, -0.992099313142191800f, + -0.123932975118512090f, -0.992290591348257370f, -0.122410675199215960f, -0.992479534598710080f, -0.120888087235777570f, -0.992666142448947910f, + -0.119365214810991690f, -0.992850414459865100f, -0.117842061508325140f, -0.993032350197851410f, -0.116318630911904770f, -0.993211949234794500f, + -0.114794926606509930f, -0.993389211148080650f, -0.113270952177564920f, -0.993564135520595300f, -0.111746711211127000f, -0.993736721940724600f, + -0.110222207293883310f, -0.993906970002356060f, -0.108697444013138800f, -0.994074879304879370f, -0.107172424956808770f, -0.994240449453187900f, + -0.105647153713410380f, -0.994403680057679100f, -0.104121633872055070f, -0.994564570734255420f, -0.102595869022436610f, -0.994723121104325700f, + -0.101069862754827990f, -0.994879330794805620f, -0.099543618660069347f, -0.995033199438118630f, -0.098017140329560451f, -0.995184726672196930f, + -0.096490431355253162f, -0.995333912140482170f, -0.094963495329639408f, -0.995480755491926940f, -0.093436335845748036f, -0.995625256380994310f, + -0.091908956497132821f, -0.995767414467659820f, -0.090381360877864914f, -0.995907229417411720f, -0.088853552582524364f, -0.996044700901251970f, + -0.087325535206192559f, -0.996179828595696870f, -0.085797312344440227f, -0.996312612182778000f, -0.084268887593324238f, -0.996443051350042630f, + -0.082740264549375706f, -0.996571145790554840f, -0.081211446809592289f, -0.996696895202896060f, -0.079682437971430695f, -0.996820299291165670f, + -0.078153241632794648f, -0.996941357764982050f, -0.076623861392031742f, -0.997060070339482960f, -0.075094300847921402f, -0.997176436735326080f, + -0.073564563599667357f, -0.997290456678690210f, -0.072034653246889097f, -0.997402129901275300f, -0.070504573389614356f, -0.997511456140303450f, + -0.068974327628267079f, -0.997618435138519550f, -0.067443919563664231f, -0.997723066644191640f, -0.065913352797003832f, -0.997825350411111640f, + -0.064382630929857312f, -0.997925286198596000f, -0.062851757564161989f, -0.998022873771486130f, -0.061320736302208995f, -0.998118112900149180f, + -0.059789570746640132f, -0.998211003360478190f, -0.058258264500435857f, -0.998301544933892780f, -0.056726821166907686f, -0.998389737407340160f, + -0.055195244349689712f, -0.998475580573294770f, -0.053663537652731026f, -0.998559074229759310f, -0.052131704680283657f, -0.998640218180265160f, + -0.050599749036899455f, -0.998719012233872940f, -0.049067674327418029f, -0.998795456205172410f, -0.047535484156959157f, -0.998869549914283560f, + -0.046003182130915206f, -0.998941293186856870f, -0.044470771854939084f, -0.999010685854073270f, -0.042938256934941084f, -0.999077727752645360f, + -0.041405640977076837f, -0.999142418724816910f, -0.039872927587739748f, -0.999204758618363890f, -0.038340120373552472f, -0.999264747286594420f, + -0.036807222941359331f, -0.999322384588349430f, -0.035274238898214294f, -0.999377670388002850f, -0.033741171851377760f, -0.999430604555461730f, + -0.032208025408304600f, -0.999481186966166950f, -0.030674803176636484f, -0.999529417501093140f, -0.029141508764194309f, -0.999575296046749220f, + -0.027608145778966163f, -0.999618822495178640f, -0.026074717829104161f, -0.999659996743959220f, -0.024541228522912389f, -0.999698818696204250f, + -0.023007681468839310f, -0.999735288260561680f, -0.021474080275469286f, -0.999769405351215280f, -0.019940428551514944f, -0.999801169887884260f, + -0.018406729905805164f, -0.999830581795823400f, -0.016872987947281894f, -0.999857641005823860f, -0.015339206284988121f, -0.999882347454212560f, + -0.013805388528060250f, -0.999904701082852900f, -0.012271538285720512f, -0.999924701839144500f, -0.010737659167264916f, -0.999942349676023910f, + -0.009203754782060083f, -0.999957644551963900f, -0.007669828739531199f, -0.999970586430974140f, -0.006135884649154416f, -0.999981175282601110f, + -0.004601926120448350f, -0.999989411081928400f, -0.003067956762966483f, -0.999995293809576190f, -0.001533980186285111f, -0.999998823451701880f, + -0.000000000000000184f, -1.000000000000000000f, 0.001533980186284743f, -0.999998823451701880f, 0.003067956762966115f, -0.999995293809576190f, + 0.004601926120447982f, -0.999989411081928400f, 0.006135884649154049f, -0.999981175282601110f, 0.007669828739530832f, -0.999970586430974140f, + 0.009203754782059715f, -0.999957644551963900f, 0.010737659167264548f, -0.999942349676023910f, 0.012271538285720144f, -0.999924701839144500f, + 0.013805388528059882f, -0.999904701082852900f, 0.015339206284987753f, -0.999882347454212560f, 0.016872987947281527f, -0.999857641005823860f, + 0.018406729905804796f, -0.999830581795823400f, 0.019940428551514577f, -0.999801169887884260f, 0.021474080275468918f, -0.999769405351215280f, + 0.023007681468838945f, -0.999735288260561680f, 0.024541228522912021f, -0.999698818696204250f, 0.026074717829103793f, -0.999659996743959220f, + 0.027608145778965795f, -0.999618822495178640f, 0.029141508764193941f, -0.999575296046749220f, 0.030674803176636116f, -0.999529417501093140f, + 0.032208025408304232f, -0.999481186966166950f, 0.033741171851377399f, -0.999430604555461730f, 0.035274238898213926f, -0.999377670388002850f, + 0.036807222941358964f, -0.999322384588349540f, 0.038340120373552104f, -0.999264747286594530f, 0.039872927587739380f, -0.999204758618363890f, + 0.041405640977076469f, -0.999142418724816910f, 0.042938256934940716f, -0.999077727752645360f, 0.044470771854938716f, -0.999010685854073380f, + 0.046003182130914845f, -0.998941293186856870f, 0.047535484156958789f, -0.998869549914283560f, 0.049067674327417661f, -0.998795456205172410f, + 0.050599749036899087f, -0.998719012233872940f, 0.052131704680283289f, -0.998640218180265270f, 0.053663537652730658f, -0.998559074229759310f, + 0.055195244349689344f, -0.998475580573294770f, 0.056726821166907318f, -0.998389737407340160f, 0.058258264500435489f, -0.998301544933892890f, + 0.059789570746639764f, -0.998211003360478190f, 0.061320736302208627f, -0.998118112900149180f, 0.062851757564161628f, -0.998022873771486240f, + 0.064382630929856952f, -0.997925286198596000f, 0.065913352797003458f, -0.997825350411111640f, 0.067443919563663871f, -0.997723066644191640f, + 0.068974327628266718f, -0.997618435138519550f, 0.070504573389613995f, -0.997511456140303450f, 0.072034653246888722f, -0.997402129901275300f, + 0.073564563599666982f, -0.997290456678690210f, 0.075094300847921042f, -0.997176436735326190f, 0.076623861392031381f, -0.997060070339482960f, + 0.078153241632794287f, -0.996941357764982160f, 0.079682437971430334f, -0.996820299291165670f, 0.081211446809591914f, -0.996696895202896060f, + 0.082740264549375331f, -0.996571145790554840f, 0.084268887593323877f, -0.996443051350042630f, 0.085797312344439852f, -0.996312612182778000f, + 0.087325535206192198f, -0.996179828595696870f, 0.088853552582524004f, -0.996044700901252080f, 0.090381360877864539f, -0.995907229417411720f, + 0.091908956497132446f, -0.995767414467659820f, 0.093436335845747662f, -0.995625256380994310f, 0.094963495329639047f, -0.995480755491926940f, + 0.096490431355252801f, -0.995333912140482280f, 0.098017140329560090f, -0.995184726672196930f, 0.099543618660068972f, -0.995033199438118630f, + 0.101069862754827630f, -0.994879330794805620f, 0.102595869022436250f, -0.994723121104325700f, 0.104121633872054700f, -0.994564570734255420f, + 0.105647153713410020f, -0.994403680057679100f, 0.107172424956808410f, -0.994240449453188010f, 0.108697444013138440f, -0.994074879304879480f, + 0.110222207293882930f, -0.993906970002356060f, 0.111746711211126640f, -0.993736721940724600f, 0.113270952177564550f, -0.993564135520595300f, + 0.114794926606509570f, -0.993389211148080760f, 0.116318630911904410f, -0.993211949234794610f, 0.117842061508324780f, -0.993032350197851410f, + 0.119365214810991330f, -0.992850414459865100f, 0.120888087235777190f, -0.992666142448948020f, 0.122410675199215600f, -0.992479534598710080f, + 0.123932975118511730f, -0.992290591348257370f, 0.125454983411545960f, -0.992099313142191800f, 0.126976696496885750f, -0.991905700430609330f, + 0.128498110793793220f, -0.991709753669099530f, 0.130019222722233570f, -0.991511473318743900f, 0.131540028702882590f, -0.991310859846115440f, + 0.133060525157138700f, -0.991107913723276890f, 0.134580708507125970f, -0.990902635427780010f, 0.136100575175706170f, -0.990695025442664630f, + 0.137620121586486180f, -0.990485084256456980f, 0.139139344163825620f, -0.990272812363169220f, 0.140658239332848790f, -0.990058210262297120f, + 0.142176803519447780f, -0.989841278458820530f, 0.143695033150294330f, -0.989622017463200890f, 0.145212924652847490f, -0.989400427791380380f, + 0.146730474455361940f, -0.989176509964780900f, 0.148247678986895530f, -0.988950264510303100f, 0.149764534677321150f, -0.988721691960323780f, + 0.151281037957330000f, -0.988490792852696700f, 0.152797185258443380f, -0.988257567730749460f, 0.154312973013020220f, -0.988022017143283530f, + 0.155828397654264620f, -0.987784141644572290f, 0.157343455616237800f, -0.987543941794359340f, 0.158858143333861170f, -0.987301418157858430f, + 0.160372457242928150f, -0.987056571305751080f, 0.161886393780111880f, -0.986809401814185420f, 0.163399949382973420f, -0.986559910264775410f, + 0.164913120489969390f, -0.986308097244598780f, 0.166425903540463740f, -0.986053963346195550f, 0.167938294974730980f, -0.985797509167567480f, + 0.169450291233967930f, -0.985538735312176060f, 0.170961888760301330f, -0.985277642388941220f, 0.172473083996795370f, -0.985014231012239950f, + 0.173983873387463380f, -0.984748501801904320f, 0.175494253377271150f, -0.984480455383220930f, 0.177004220412148640f, -0.984210092386929140f, + 0.178513770938997560f, -0.983937413449218920f, 0.180022901405699710f, -0.983662419211730250f, 0.181531608261124470f, -0.983385110321551290f, + 0.183039887955140590f, -0.983105487431216400f, 0.184547736938619420f, -0.982823551198705350f, 0.186055151663446610f, -0.982539302287441240f, + 0.187562128582529710f, -0.982252741366289370f, 0.189068664149805610f, -0.981963869109555350f, 0.190574754820252320f, -0.981672686196983220f, + 0.192080397049892160f, -0.981379193313754670f, 0.193585587295803500f, -0.981083391150486710f, 0.195090322016128300f, -0.980785280403230430f, + 0.196594597670080420f, -0.980484861773469270f, 0.198098410717953060f, -0.980182135968117540f, 0.199601757621130610f, -0.979877103699517750f, + 0.201104634842091710f, -0.979569765685440630f, 0.202607038844421080f, -0.979260122649082020f, 0.204108966092816980f, -0.978948175319062200f, + 0.205610413053098660f, -0.978633924429423320f, 0.207111376192218120f, -0.978317370719627770f, 0.208611851978263210f, -0.977998514934557140f, + 0.210111836880469500f, -0.977677357824510040f, 0.211611327369227610f, -0.977353900145199960f, 0.213110319916091560f, -0.977028142657754280f, + 0.214608810993786260f, -0.976700086128711950f, 0.216106797076219130f, -0.976369731330021250f, 0.217604274638483420f, -0.976037079039039130f, + 0.219101240156869740f, -0.975702130038528570f, 0.220597690108873620f, -0.975364885116656980f, 0.222093620973202930f, -0.975025345066994230f, + 0.223589029229789540f, -0.974683510688510780f, 0.225083911359792550f, -0.974339382785575970f, 0.226578263845609860f, -0.973992962167955940f, + 0.228072083170885760f, -0.973644249650811870f, 0.229565365820519060f, -0.973293246054698140f, 0.231058108280670580f, -0.972939952205560290f, + 0.232550307038774880f, -0.972584368934732320f, 0.234041958583543210f, -0.972226497078936380f, 0.235533059404975460f, -0.971866337480279400f, + 0.237023605994367310f, -0.971503890986251780f, 0.238513594844317830f, -0.971139158449725310f, 0.240003022448741030f, -0.970772140728950460f, + 0.241491885302869050f, -0.970402838687555500f, 0.242980179903263760f, -0.970031253194543970f, 0.244467902747824180f, -0.969657385124292450f, + 0.245955050335794790f, -0.969281235356548420f, 0.247441619167772770f, -0.968902804776428980f, 0.248927605745719790f, -0.968522094274417380f, + 0.250413006572965060f, -0.968139104746362440f, 0.251897818154216910f, -0.967753837093475510f, 0.253382036995570270f, -0.967366292222328510f, + 0.254865659604513960f, -0.966976471044852290f, 0.256348682489942470f, -0.966584374478333230f, 0.257831102162158710f, -0.966190003445412620f, + 0.259312915132886120f, -0.965793358874083680f, 0.260794117915275510f, -0.965394441697689400f, 0.262274707023913810f, -0.964993252854920320f, + 0.263754678974830850f, -0.964589793289812870f, 0.265234030285511460f, -0.964184063951745940f, 0.266712757474898200f, -0.963776065795439950f, + 0.268190857063403120f, -0.963365799780954050f, 0.269668325572915200f, -0.962953266873683880f, 0.271145159526807400f, -0.962538468044359390f, + 0.272621355449948530f, -0.962121404269041690f, 0.274096909868706110f, -0.961702076529122650f, 0.275571819310958030f, -0.961280485811320640f, + 0.277046080306099950f, -0.960856633107679660f, 0.278519689385053280f, -0.960430519415565790f, 0.279992643080272720f, -0.960002145737666070f, + 0.281464937925757610f, -0.959571513081984630f, 0.282936570457055110f, -0.959138622461842010f, 0.284407537211271770f, -0.958703474895871600f, + 0.285877834727080670f, -0.958266071408017670f, 0.287347459544728900f, -0.957826413027533020f, 0.288816408206049040f, -0.957384500788976080f, + 0.290284677254462050f, -0.956940335732208940f, 0.291752263234989150f, -0.956493918902395100f, 0.293219162694258680f, -0.956045251349996410f, + 0.294685372180514490f, -0.955594334130770990f, 0.296150888243623290f, -0.955141168305770890f, 0.297615707435085860f, -0.954685754941338450f, + 0.299079826308040250f, -0.954228095109105670f, 0.300543241417273400f, -0.953768189885990330f, 0.302005949319228140f, -0.953306040354193860f, + 0.303467946572010700f, -0.952841647601198830f, 0.304929229735401990f, -0.952375012719765990f, 0.306389795370860640f, -0.951906136807932460f, + 0.307849640041534760f, -0.951435020969008450f, 0.309308760312268730f, -0.950961666311575080f, 0.310767152749611640f, -0.950486073949481700f, + 0.312224813921824380f, -0.950008245001843220f, 0.313681740398891130f, -0.949528180593036790f, 0.315137928752522170f, -0.949045881852700670f, + 0.316593375556165790f, -0.948561349915730270f, 0.318048077385015000f, -0.948074585922276230f, 0.319502030816015080f, -0.947585591017741310f, + 0.320955232427874770f, -0.947094366352777330f, 0.322407678801069570f, -0.946600913083283650f, 0.323859366517852740f, -0.946105232370403450f, + 0.325310292162262930f, -0.945607325380521280f, 0.326760452320131960f, -0.945107193285260490f, 0.328209843579092000f, -0.944604837261480480f, + 0.329658462528587160f, -0.944100258491272770f, 0.331106305759876210f, -0.943593458161960390f, 0.332553369866044170f, -0.943084437466093490f, + 0.333999651442009490f, -0.942573197601446870f, 0.335445147084531050f, -0.942059739771017530f, 0.336889853392219610f, -0.941544065183020920f, + 0.338333766965540850f, -0.941026175050889370f, 0.339776884406826740f, -0.940506070593268410f, 0.341219202320282410f, -0.939983753034013940f, + 0.342660717311994540f, -0.939459223602189810f, 0.344101425989938310f, -0.938932483532064710f, 0.345541324963988710f, -0.938403534063108280f, + 0.346980410845923460f, -0.937872376439989890f, 0.348418680249434510f, -0.937339011912574960f, 0.349856129790135030f, -0.936803441735921560f, + 0.351292756085566540f, -0.936265667170278480f, 0.352728555755210280f, -0.935725689481080480f, 0.354163525420490070f, -0.935183509938947720f, + 0.355597661704783740f, -0.934639129819680780f, 0.357030961233430030f, -0.934092550404258870f, 0.358463420633736710f, -0.933543772978836170f, + 0.359895036534987610f, -0.932992798834739070f, 0.361325805568453890f, -0.932439629268462580f, 0.362755724367397000f, -0.931884265581668150f, + 0.364184789567079840f, -0.931326709081180540f, 0.365612997804773960f, -0.930766961078983710f, 0.367040345719766570f, -0.930205022892219290f, + 0.368466829953371880f, -0.929640895843181440f, 0.369892447148933820f, -0.929074581259315970f, 0.371317193951837380f, -0.928506080473215590f, + 0.372741067009515810f, -0.927935394822617890f, 0.374164062971458160f, -0.927362525650401000f, 0.375586178489216720f, -0.926787474304581970f, + 0.377007410216417870f, -0.926210242138311490f, 0.378427754808765340f, -0.925630830509872830f, 0.379847208924051110f, -0.925049240782677580f, + 0.381265769222162430f, -0.924465474325262600f, 0.382683432365090000f, -0.923879532511286630f, 0.384100195016934600f, -0.923291416719527860f, + 0.385516053843918570f, -0.922701128333878740f, 0.386931005514388470f, -0.922108668743345180f, 0.388345046698826300f, -0.921514039342041900f, + 0.389758174069856630f, -0.920917241529189410f, 0.391170384302253370f, -0.920318276709110820f, 0.392581674072951140f, -0.919717146291227470f, + 0.393992040061047880f, -0.919113851690057880f, 0.395401478947816240f, -0.918508394325212250f, 0.396809987416710420f, -0.917900775621390390f, + 0.398217562153373840f, -0.917290997008377800f, 0.399624199845646400f, -0.916679059921042820f, 0.401029897183575350f, -0.916064965799331830f, + 0.402434650859418320f, -0.915448716088267830f, 0.403838457567654130f, -0.914830312237946200f, 0.405241314004990030f, -0.914209755703530580f, + 0.406643216870368470f, -0.913587047945251030f, 0.408044162864978300f, -0.912962190428398320f, 0.409444148692257370f, -0.912335184623322860f, + 0.410843171057903860f, -0.911706032005429880f, 0.412241226669882940f, -0.911074734055176250f, 0.413638312238434780f, -0.910441292258067140f, + 0.415034424476081190f, -0.909805708104652440f, 0.416429560097636870f, -0.909167983090522490f, 0.417823715820212160f, -0.908528118716306230f, + 0.419216888363223960f, -0.907886116487666260f, 0.420609074448402680f, -0.907241977915295820f, 0.422000270799799180f, -0.906595704514915560f, + 0.423390474143795660f, -0.905947297807268680f, 0.424779681209108580f, -0.905296759318118930f, 0.426167888726799560f, -0.904644090578246240f, + 0.427555093430282140f, -0.903989293123443340f, 0.428941292055329710f, -0.903332368494511710f, 0.430326481340082170f, -0.902673318237259050f, + 0.431710658025056980f, -0.902012143902493290f, 0.433093818853151790f, -0.901348847046022140f, 0.434475960569655710f, -0.900683429228646860f, + 0.435857079922255640f, -0.900015892016160170f, 0.437237173661043590f, -0.899346236979341800f, 0.438616238538527270f, -0.898674465693954040f, + 0.439994271309633030f, -0.898000579740739990f, 0.441371268731716620f, -0.897324580705418320f, 0.442747227564570080f, -0.896646470178680150f, + 0.444122144570429420f, -0.895966249756185000f, 0.445496016513981300f, -0.895283921038557700f, 0.446868840162373880f, -0.894599485631382810f, + 0.448240612285219770f, -0.893912945145203360f, 0.449611329654606600f, -0.893224301195515320f, 0.450980989045104030f, -0.892533555402764580f, + 0.452349587233770390f, -0.891840709392342950f, 0.453717121000163480f, -0.891145764794583410f, 0.455083587126343610f, -0.890448723244757990f, + 0.456448982396883860f, -0.889749586383072890f, 0.457813303598877290f, -0.889048355854664570f, 0.459176547521944370f, -0.888345033309596240f, + 0.460538710958239560f, -0.887639620402854160f, 0.461899790702462450f, -0.886932118794342310f, 0.463259783551860040f, -0.886222530148880750f, + 0.464618686306237820f, -0.885510856136199950f, 0.465976495767966290f, -0.884797098430937680f, 0.467333208741987920f, -0.884081258712635320f, + 0.468688822035827570f, -0.883363338665731800f, 0.470043332459595400f, -0.882643339979562900f, 0.471396736825997590f, -0.881921264348355050f, + 0.472749031950342850f, -0.881197113471221980f, 0.474100214650550240f, -0.880470889052160640f, 0.475450281747155480f, -0.879742592800047630f, + 0.476799230063321870f, -0.879012226428633640f, 0.478147056424842900f, -0.878279791656541580f, 0.479493757660153010f, -0.877545290207261350f, + 0.480839330600334070f, -0.876808723809145650f, 0.482183772079122220f, -0.876070094195406930f, 0.483527078932918350f, -0.875329403104111000f, + 0.484869248000790900f, -0.874586652278176220f, 0.486210276124486310f, -0.873841843465366860f, 0.487550160148436000f, -0.873094978418290090f, + 0.488888896919763390f, -0.872346058894391430f, 0.490226483288290720f, -0.871595086655951310f, 0.491562916106549670f, -0.870842063470079090f, + 0.492898192229783870f, -0.870086991108711460f, 0.494232308515959730f, -0.869329871348606730f, 0.495565261825772650f, -0.868570705971340780f, + 0.496897049022654020f, -0.867809496763303550f, 0.498227666972781480f, -0.867046245515692870f, 0.499557112545081670f, -0.866280954024513110f, + 0.500885382611240710f, -0.865513624090569090f, 0.502212474045710900f, -0.864744257519462380f, 0.503538383725717800f, -0.863972856121586590f, + 0.504863108531267150f, -0.863199421712124380f, 0.506186645345155010f, -0.862423956111040720f, 0.507508991052970650f, -0.861646461143081410f, + 0.508830142543106990f, -0.860866938637767310f, 0.510150096706766920f, -0.860085390429390140f, 0.511468850437969860f, -0.859301818357008700f, + 0.512786400633562620f, -0.858516224264442960f, 0.514102744193221550f, -0.857728610000272230f, 0.515417878019462930f, -0.856938977417828760f, + 0.516731799017649980f, -0.856147328375194470f, 0.518044504095999560f, -0.855353664735195920f, 0.519355990165589200f, -0.854557988365400760f, + 0.520666254140366820f, -0.853760301138111520f, 0.521975292937154170f, -0.852960604930363740f, 0.523283103475656430f, -0.852158901623919830f, + 0.524589682678469060f, -0.851355193105265080f, 0.525895027471084190f, -0.850549481265603700f, 0.527199134781900950f, -0.849741768000852660f, + 0.528502001542228260f, -0.848932055211639720f, 0.529803624686294610f, -0.848120344803297340f, 0.531104001151255000f, -0.847306638685858320f, + 0.532403127877198120f, -0.846490938774052020f, 0.533701001807152520f, -0.845673246987299290f, 0.534997619887096930f, -0.844853565249707230f, + 0.536292979065962960f, -0.844031895490066520f, 0.537587076295645510f, -0.843208239641845440f, 0.538879908531008530f, -0.842382599643185850f, + 0.540171472729892410f, -0.841554977436898780f, 0.541461765853123110f, -0.840725374970458290f, 0.542750784864515670f, -0.839893794195999630f, + 0.544038526730883820f, -0.839060237070312740f, 0.545324988422046460f, -0.838224705554837970f, 0.546610166910835080f, -0.837387201615661820f, + 0.547894059173099750f, -0.836547727223512230f, 0.549176662187719430f, -0.835706284353752720f, 0.550457972936604700f, -0.834862874986380120f, + 0.551737988404707450f, -0.834017501106018130f, 0.553016705580027690f, -0.833170164701913070f, 0.554294121453619670f, -0.832320867767930020f, + 0.555570233019601840f, -0.831469612302545460f, 0.556845037275159880f, -0.830616400308846430f, 0.558118531220555990f, -0.829761233794523160f, + 0.559390711859136140f, -0.828904114771864870f, 0.560661576197336250f, -0.828045045257755690f, 0.561931121244689020f, -0.827184027273669350f, + 0.563199344013833870f, -0.826321062845663650f, 0.564466241520519270f, -0.825456154004377660f, 0.565731810783613120f, -0.824589302785025290f, + 0.566996048825108790f, -0.823720511227391320f, 0.568258952670131050f, -0.822849781375826650f, 0.569520519346946810f, -0.821977115279241780f, + 0.570780745886967030f, -0.821102514991104870f, 0.572039629324756940f, -0.820225982569434690f, 0.573297166698042200f, -0.819347520076796900f, + 0.574553355047715990f, -0.818467129580298550f, 0.575808191417844890f, -0.817584813151584040f, 0.577061672855679220f, -0.816700572866827960f, + 0.578313796411655370f, -0.815814410806733890f, 0.579564559139405740f, -0.814926329056526620f, 0.580813958095764640f, -0.814036329705948300f, + 0.582061990340775100f, -0.813144414849253930f, 0.583308652937697960f, -0.812250586585204220f, 0.584553942953015100f, -0.811354847017063950f, + 0.585797857456438750f, -0.810457198252594880f, 0.587040393520918080f, -0.809557642404051260f, 0.588281548222645450f, -0.808656181588174870f, + 0.589521318641063500f, -0.807752817926190690f, 0.590759701858873940f, -0.806847553543799450f, 0.591996694962040770f, -0.805940390571176390f, + 0.593232295039799800f, -0.805031331142963660f, 0.594466499184664540f, -0.804120377398265700f, 0.595699304492432910f, -0.803207531480645280f, + 0.596930708062196170f, -0.802292795538115940f, 0.598160706996342050f, -0.801376171723140350f, 0.599389298400564430f, -0.800457662192622820f, + 0.600616479383868970f, -0.799537269107905010f, 0.601842247058580250f, -0.798614994634760710f, 0.603066598540347830f, -0.797690840943391380f, + 0.604289530948155740f, -0.796764810208418940f, 0.605511041404325320f, -0.795836904608883680f, 0.606731127034524480f, -0.794907126328237010f, + 0.607949784967773740f, -0.793975477554337060f, 0.609167012336452650f, -0.793041960479444090f, 0.610382806276309140f, -0.792106577300212610f, + 0.611597163926461680f, -0.791169330217690310f, 0.612810082429409600f, -0.790230221437310140f, 0.614021558931038490f, -0.789289253168885650f, + 0.615231590580627040f, -0.788346427626606120f, 0.616440174530853200f, -0.787401747029031760f, 0.617647307937803650f, -0.786455213599085990f, + 0.618852987960976210f, -0.785506829564054040f, 0.620057211763289100f, -0.784556597155575240f, 0.621259976511087660f, -0.783604518609638200f, + 0.622461279374149520f, -0.782650596166576060f, 0.623661117525694200f, -0.781694832071059720f, 0.624859488142386120f, -0.780737228572094600f, + 0.626056388404343410f, -0.779777787923014550f, 0.627251815495144190f, -0.778816512381475980f, 0.628445766601832820f, -0.777853404209452930f, + 0.629638238914926650f, -0.776888465673232780f, 0.630829229628424250f, -0.775921699043407800f, 0.632018735939808840f, -0.774953106594874040f, + 0.633206755050057190f, -0.773982690606822790f, 0.634393284163645600f, -0.773010453362736880f, 0.635578320488555670f, -0.772036397150384860f, + 0.636761861236283870f, -0.771060524261814040f, 0.637943903621843830f, -0.770082836993348120f, 0.639124444863775620f, -0.769103337645579700f, + 0.640303482184151670f, -0.768122028523365420f, 0.641481012808583270f, -0.767138911935820290f, 0.642657033966226420f, -0.766153990196313250f, + 0.643831542889791160f, -0.765167265622459180f, 0.645004536815543820f, -0.764178740536116900f, 0.646176012983316280f, -0.763188417263381270f, + 0.647345968636512170f, -0.762196298134578900f, 0.648514401022112000f, -0.761202385484262220f, 0.649681307390682860f, -0.760206681651202750f, + 0.650846684996380650f, -0.759209188978388180f, 0.652010531096959500f, -0.758209909813015390f, 0.653172842953776760f, -0.757208846506484570f, + 0.654333617831800660f, -0.756206001414394420f, 0.655492852999615020f, -0.755201376896536880f, 0.656650545729428710f, -0.754194975316889390f, + 0.657806693297078530f, -0.753186799043612630f, 0.658961292982037320f, -0.752176850449042700f, 0.660114342067420590f, -0.751165131909686370f, + 0.661265837839991710f, -0.750151645806215410f, 0.662415777590171450f, -0.749136394523459590f, 0.663564158612039550f, -0.748119380450403710f, + 0.664710978203344790f, -0.747100605980180240f, 0.665856233665509720f, -0.746080073510063780f, 0.666999922303637690f, -0.745057785441465840f, + 0.668142041426518120f, -0.744033744179929620f, 0.669282588346635790f, -0.743007952135121940f, 0.670421560380172980f, -0.741980411720831180f, + 0.671558954847018330f, -0.740951125354959110f, 0.672694769070772970f, -0.739920095459516090f, 0.673829000378755590f, -0.738887324460615560f, + 0.674961646102011700f, -0.737852814788466320f, 0.676092703575315700f, -0.736816568877370020f, 0.677222170137180330f, -0.735778589165713590f, + 0.678350043129861470f, -0.734738878095963390f, 0.679476319899365190f, -0.733697438114660150f, 0.680600997795452690f, -0.732654271672413150f, + 0.681724074171649490f, -0.731609381223892850f, 0.682845546385247970f, -0.730562769227827700f, 0.683965411797315400f, -0.729514438146997010f, + 0.685083667772700470f, -0.728464390448225090f, 0.686200311680038140f, -0.727412628602376210f, 0.687315340891758830f, -0.726359155084346340f, + 0.688428752784090210f, -0.725303972373060990f, 0.689540544737066830f, -0.724247082951467000f, 0.690650714134534720f, -0.723188489306527350f, + 0.691759258364157860f, -0.722128193929215230f, 0.692866174817424300f, -0.721066199314508440f, 0.693971460889653780f, -0.720002507961381880f, + 0.695075113980000770f, -0.718937122372804600f, 0.696177131491462870f, -0.717870045055731820f, 0.697277510830886630f, -0.716801278521099430f, + 0.698376249408972360f, -0.715730825283819040f, 0.699473344640283430f, -0.714658687862769320f, 0.700568793943248110f, -0.713584868780793750f, + 0.701662594740168450f, -0.712509370564692430f, 0.702754744457225300f, -0.711432195745216430f, 0.703845240524485050f, -0.710353346857062200f, + 0.704934080375904550f, -0.709272826438866020f, 0.706021261449339520f, -0.708190637033195620f, 0.707106781186547350f, -0.707106781186547680f, + 0.708190637033195290f, -0.706021261449339850f, 0.709272826438865690f, -0.704934080375904880f, 0.710353346857061860f, -0.703845240524485380f, + 0.711432195745216100f, -0.702754744457225630f, 0.712509370564692100f, -0.701662594740168680f, 0.713584868780793520f, -0.700568793943248450f, + 0.714658687862769090f, -0.699473344640283770f, 0.715730825283818820f, -0.698376249408972690f, 0.716801278521099090f, -0.697277510830886960f, + 0.717870045055731490f, -0.696177131491463210f, 0.718937122372804270f, -0.695075113980000990f, 0.720002507961381540f, -0.693971460889654000f, + 0.721066199314508220f, -0.692866174817424630f, 0.722128193929214900f, -0.691759258364158190f, 0.723188489306527130f, -0.690650714134534940f, + 0.724247082951466670f, -0.689540544737067160f, 0.725303972373060660f, -0.688428752784090550f, 0.726359155084346010f, -0.687315340891759050f, + 0.727412628602375880f, -0.686200311680038480f, 0.728464390448224860f, -0.685083667772700800f, 0.729514438146996790f, -0.683965411797315740f, + 0.730562769227827370f, -0.682845546385248190f, 0.731609381223892520f, -0.681724074171649820f, 0.732654271672412930f, -0.680600997795453020f, + 0.733697438114659820f, -0.679476319899365520f, 0.734738878095963170f, -0.678350043129861800f, 0.735778589165713370f, -0.677222170137180670f, + 0.736816568877369790f, -0.676092703575316030f, 0.737852814788465980f, -0.674961646102012040f, 0.738887324460615220f, -0.673829000378755930f, + 0.739920095459515760f, -0.672694769070773300f, 0.740951125354958880f, -0.671558954847018660f, 0.741980411720830850f, -0.670421560380173310f, + 0.743007952135121610f, -0.669282588346636120f, 0.744033744179929290f, -0.668142041426518450f, 0.745057785441465500f, -0.666999922303638030f, + 0.746080073510063450f, -0.665856233665510060f, 0.747100605980179910f, -0.664710978203345130f, 0.748119380450403490f, -0.663564158612039880f, + 0.749136394523459370f, -0.662415777590171780f, 0.750151645806215180f, -0.661265837839992040f, 0.751165131909686030f, -0.660114342067420920f, + 0.752176850449042480f, -0.658961292982037650f, 0.753186799043612300f, -0.657806693297078860f, 0.754194975316889060f, -0.656650545729429050f, + 0.755201376896536550f, -0.655492852999615350f, 0.756206001414394090f, -0.654333617831801000f, 0.757208846506484230f, -0.653172842953777090f, + 0.758209909813015060f, -0.652010531096959720f, 0.759209188978387960f, -0.650846684996380990f, 0.760206681651202420f, -0.649681307390683190f, + 0.761202385484261890f, -0.648514401022112330f, 0.762196298134578560f, -0.647345968636512500f, 0.763188417263381050f, -0.646176012983316620f, + 0.764178740536116560f, -0.645004536815544150f, 0.765167265622458850f, -0.643831542889791500f, 0.766153990196312920f, -0.642657033966226750f, + 0.767138911935819960f, -0.641481012808583610f, 0.768122028523365090f, -0.640303482184152010f, 0.769103337645579480f, -0.639124444863775950f, + 0.770082836993347900f, -0.637943903621844170f, 0.771060524261813820f, -0.636761861236284200f, 0.772036397150384630f, -0.635578320488556000f, + 0.773010453362736660f, -0.634393284163645930f, 0.773982690606822570f, -0.633206755050057520f, 0.774953106594873710f, -0.632018735939809170f, + 0.775921699043407580f, -0.630829229628424580f, 0.776888465673232550f, -0.629638238914926980f, 0.777853404209452700f, -0.628445766601833160f, + 0.778816512381475650f, -0.627251815495144530f, 0.779777787923014330f, -0.626056388404343740f, 0.780737228572094380f, -0.624859488142386450f, + 0.781694832071059390f, -0.623661117525694530f, 0.782650596166575840f, -0.622461279374149860f, 0.783604518609637870f, -0.621259976511088000f, + 0.784556597155575020f, -0.620057211763289540f, 0.785506829564053820f, -0.618852987960976540f, 0.786455213599085770f, -0.617647307937803980f, + 0.787401747029031430f, -0.616440174530853540f, 0.788346427626605890f, -0.615231590580627370f, 0.789289253168885430f, -0.614021558931038820f, + 0.790230221437309810f, -0.612810082429409930f, 0.791169330217690090f, -0.611597163926462020f, 0.792106577300212390f, -0.610382806276309480f, + 0.793041960479443750f, -0.609167012336453100f, 0.793975477554336840f, -0.607949784967774080f, 0.794907126328236680f, -0.606731127034524810f, + 0.795836904608883340f, -0.605511041404325660f, 0.796764810208418720f, -0.604289530948156070f, 0.797690840943391160f, -0.603066598540348160f, + 0.798614994634760490f, -0.601842247058580580f, 0.799537269107904790f, -0.600616479383869310f, 0.800457662192622600f, -0.599389298400564760f, + 0.801376171723140130f, -0.598160706996342380f, 0.802292795538115720f, -0.596930708062196500f, 0.803207531480645050f, -0.595699304492433250f, + 0.804120377398265360f, -0.594466499184664880f, 0.805031331142963320f, -0.593232295039800130f, 0.805940390571176170f, -0.591996694962041100f, + 0.806847553543799220f, -0.590759701858874280f, 0.807752817926190360f, -0.589521318641063830f, 0.808656181588174650f, -0.588281548222645780f, + 0.809557642404051040f, -0.587040393520918410f, 0.810457198252594660f, -0.585797857456439090f, 0.811354847017063620f, -0.584553942953015440f, + 0.812250586585203880f, -0.583308652937698290f, 0.813144414849253590f, -0.582061990340775440f, 0.814036329705948080f, -0.580813958095764970f, + 0.814926329056526400f, -0.579564559139406080f, 0.815814410806733670f, -0.578313796411655810f, 0.816700572866827730f, -0.577061672855679550f, + 0.817584813151583710f, -0.575808191417845230f, 0.818467129580298320f, -0.574553355047716320f, 0.819347520076796680f, -0.573297166698042650f, + 0.820225982569434460f, -0.572039629324757380f, 0.821102514991104540f, -0.570780745886967370f, 0.821977115279241550f, -0.569520519346947140f, + 0.822849781375826430f, -0.568258952670131380f, 0.823720511227391090f, -0.566996048825109120f, 0.824589302785025070f, -0.565731810783613560f, + 0.825456154004377330f, -0.564466241520519610f, 0.826321062845663420f, -0.563199344013834200f, 0.827184027273669130f, -0.561931121244689360f, + 0.828045045257755350f, -0.560661576197336590f, 0.828904114771864650f, -0.559390711859136470f, 0.829761233794522820f, -0.558118531220556440f, + 0.830616400308846200f, -0.556845037275160220f, 0.831469612302545240f, -0.555570233019602180f, 0.832320867767929680f, -0.554294121453620000f, + 0.833170164701912850f, -0.553016705580028020f, 0.834017501106017910f, -0.551737988404707780f, 0.834862874986379900f, -0.550457972936605030f, + 0.835706284353752490f, -0.549176662187719770f, 0.836547727223512010f, -0.547894059173100080f, 0.837387201615661600f, -0.546610166910835420f, + 0.838224705554837750f, -0.545324988422046800f, 0.839060237070312520f, -0.544038526730884150f, 0.839893794195999410f, -0.542750784864516000f, + 0.840725374970458070f, -0.541461765853123440f, 0.841554977436898440f, -0.540171472729892740f, 0.842382599643185510f, -0.538879908531008870f, + 0.843208239641845210f, -0.537587076295645840f, 0.844031895490066300f, -0.536292979065963400f, 0.844853565249707010f, -0.534997619887097260f, + 0.845673246987299070f, -0.533701001807152850f, 0.846490938774051680f, -0.532403127877198570f, 0.847306638685858090f, -0.531104001151255440f, + 0.848120344803297120f, -0.529803624686294940f, 0.848932055211639500f, -0.528502001542228590f, 0.849741768000852440f, -0.527199134781901390f, + 0.850549481265603480f, -0.525895027471084520f, 0.851355193105264860f, -0.524589682678469390f, 0.852158901623919610f, -0.523283103475656760f, + 0.852960604930363520f, -0.521975292937154500f, 0.853760301138111300f, -0.520666254140367270f, 0.854557988365400530f, -0.519355990165589530f, + 0.855353664735195700f, -0.518044504095999890f, 0.856147328375194250f, -0.516731799017650320f, 0.856938977417828540f, -0.515417878019463260f, + 0.857728610000272010f, -0.514102744193221880f, 0.858516224264442740f, -0.512786400633563070f, 0.859301818357008470f, -0.511468850437970300f, + 0.860085390429389920f, -0.510150096706767250f, 0.860866938637767090f, -0.508830142543107430f, 0.861646461143081190f, -0.507508991052971090f, + 0.862423956111040500f, -0.506186645345155340f, 0.863199421712124160f, -0.504863108531267480f, 0.863972856121586360f, -0.503538383725718130f, + 0.864744257519462160f, -0.502212474045711230f, 0.865513624090568870f, -0.500885382611241050f, 0.866280954024512880f, -0.499557112545082000f, + 0.867046245515692650f, -0.498227666972781870f, 0.867809496763303320f, -0.496897049022654410f, 0.868570705971340560f, -0.495565261825773040f, + 0.869329871348606620f, -0.494232308515960120f, 0.870086991108711350f, -0.492898192229784260f, 0.870842063470078860f, -0.491562916106550010f, + 0.871595086655951090f, -0.490226483288291100f, 0.872346058894391210f, -0.488888896919763730f, 0.873094978418289870f, -0.487550160148436380f, + 0.873841843465366640f, -0.486210276124486700f, 0.874586652278176000f, -0.484869248000791230f, 0.875329403104110890f, -0.483527078932918740f, + 0.876070094195406710f, -0.482183772079122610f, 0.876808723809145430f, -0.480839330600334460f, 0.877545290207261130f, -0.479493757660153400f, + 0.878279791656541350f, -0.478147056424843290f, 0.879012226428633410f, -0.476799230063322200f, 0.879742592800047520f, -0.475450281747155810f, + 0.880470889052160420f, -0.474100214650550580f, 0.881197113471221760f, -0.472749031950343230f, 0.881921264348354830f, -0.471396736825997920f, + 0.882643339979562680f, -0.470043332459595790f, 0.883363338665731580f, -0.468688822035827960f, 0.884081258712635100f, -0.467333208741988300f, + 0.884797098430937460f, -0.465976495767966680f, 0.885510856136199730f, -0.464618686306238200f, 0.886222530148880530f, -0.463259783551860430f, + 0.886932118794342080f, -0.461899790702462840f, 0.887639620402853930f, -0.460538710958239950f, 0.888345033309596020f, -0.459176547521944700f, + 0.889048355854664350f, -0.457813303598877670f, 0.889749586383072670f, -0.456448982396884250f, 0.890448723244757770f, -0.455083587126344000f, + 0.891145764794583180f, -0.453717121000163870f, 0.891840709392342830f, -0.452349587233770720f, 0.892533555402764360f, -0.450980989045104360f, + 0.893224301195515100f, -0.449611329654606980f, 0.893912945145203140f, -0.448240612285220160f, 0.894599485631382580f, -0.446868840162374270f, + 0.895283921038557580f, -0.445496016513981690f, 0.895966249756184880f, -0.444122144570429810f, 0.896646470178679930f, -0.442747227564570470f, + 0.897324580705418100f, -0.441371268731717000f, 0.898000579740739770f, -0.439994271309633420f, 0.898674465693953820f, -0.438616238538527660f, + 0.899346236979341570f, -0.437237173661043980f, 0.900015892016159950f, -0.435857079922256030f, 0.900683429228646750f, -0.434475960569656090f, + 0.901348847046021920f, -0.433093818853152180f, 0.902012143902493180f, -0.431710658025057370f, 0.902673318237258830f, -0.430326481340082560f, + 0.903332368494511600f, -0.428941292055330100f, 0.903989293123443120f, -0.427555093430282530f, 0.904644090578246020f, -0.426167888726799950f, + 0.905296759318118700f, -0.424779681209108970f, 0.905947297807268460f, -0.423390474143796050f, 0.906595704514915450f, -0.422000270799799570f, + 0.907241977915295590f, -0.420609074448403060f, 0.907886116487666040f, -0.419216888363224350f, 0.908528118716306010f, -0.417823715820212550f, + 0.909167983090522380f, -0.416429560097637260f, 0.909805708104652220f, -0.415034424476081580f, 0.910441292258066910f, -0.413638312238435170f, + 0.911074734055176140f, -0.412241226669883330f, 0.911706032005429660f, -0.410843171057904240f, 0.912335184623322640f, -0.409444148692257810f, + 0.912962190428398100f, -0.408044162864978690f, 0.913587047945250920f, -0.406643216870368860f, 0.914209755703530470f, -0.405241314004990420f, + 0.914830312237945980f, -0.403838457567654520f, 0.915448716088267720f, -0.402434650859418710f, 0.916064965799331610f, -0.401029897183575730f, + 0.916679059921042700f, -0.399624199845646790f, 0.917290997008377680f, -0.398217562153374230f, 0.917900775621390270f, -0.396809987416710810f, + 0.918508394325212140f, -0.395401478947816630f, 0.919113851690057660f, -0.393992040061048270f, 0.919717146291227360f, -0.392581674072951530f, + 0.920318276709110590f, -0.391170384302253760f, 0.920917241529189190f, -0.389758174069857020f, 0.921514039342041790f, -0.388345046698826690f, + 0.922108668743344960f, -0.386931005514388860f, 0.922701128333878520f, -0.385516053843918960f, 0.923291416719527640f, -0.384100195016934990f, + 0.923879532511286520f, -0.382683432365090390f, 0.924465474325262490f, -0.381265769222162820f, 0.925049240782677470f, -0.379847208924051490f, + 0.925630830509872720f, -0.378427754808765780f, 0.926210242138311380f, -0.377007410216418260f, 0.926787474304581860f, -0.375586178489217100f, + 0.927362525650400890f, -0.374164062971458540f, 0.927935394822617670f, -0.372741067009516200f, 0.928506080473215480f, -0.371317193951837820f, + 0.929074581259315750f, -0.369892447148934210f, 0.929640895843181330f, -0.368466829953372270f, 0.930205022892219180f, -0.367040345719767010f, + 0.930766961078983490f, -0.365612997804774350f, 0.931326709081180320f, -0.364184789567080220f, 0.931884265581668040f, -0.362755724367397390f, + 0.932439629268462360f, -0.361325805568454280f, 0.932992798834738960f, -0.359895036534988000f, 0.933543772978835950f, -0.358463420633737100f, + 0.934092550404258760f, -0.357030961233430420f, 0.934639129819680670f, -0.355597661704784130f, 0.935183509938947500f, -0.354163525420490510f, + 0.935725689481080370f, -0.352728555755210670f, 0.936265667170278370f, -0.351292756085566930f, 0.936803441735921450f, -0.349856129790135420f, + 0.937339011912574850f, -0.348418680249434900f, 0.937872376439989770f, -0.346980410845923850f, 0.938403534063108060f, -0.345541324963989090f, + 0.938932483532064600f, -0.344101425989938700f, 0.939459223602189700f, -0.342660717311994930f, 0.939983753034013820f, -0.341219202320282800f, + 0.940506070593268180f, -0.339776884406827130f, 0.941026175050889260f, -0.338333766965541290f, 0.941544065183020810f, -0.336889853392220000f, + 0.942059739771017420f, -0.335445147084531440f, 0.942573197601446760f, -0.333999651442009880f, 0.943084437466093380f, -0.332553369866044560f, + 0.943593458161960270f, -0.331106305759876600f, 0.944100258491272660f, -0.329658462528587550f, 0.944604837261480260f, -0.328209843579092390f, + 0.945107193285260380f, -0.326760452320132340f, 0.945607325380521170f, -0.325310292162263370f, 0.946105232370403340f, -0.323859366517853130f, + 0.946600913083283530f, -0.322407678801069960f, 0.947094366352777220f, -0.320955232427875210f, 0.947585591017741200f, -0.319502030816015470f, + 0.948074585922276110f, -0.318048077385015450f, 0.948561349915730160f, -0.316593375556166230f, 0.949045881852700560f, -0.315137928752522610f, + 0.949528180593036670f, -0.313681740398891520f, 0.950008245001843110f, -0.312224813921824830f, 0.950486073949481480f, -0.310767152749612090f, + 0.950961666311574970f, -0.309308760312269170f, 0.951435020969008340f, -0.307849640041535140f, 0.951906136807932230f, -0.306389795370861080f, + 0.952375012719765880f, -0.304929229735402370f, 0.952841647601198720f, -0.303467946572011090f, 0.953306040354193640f, -0.302005949319228580f, + 0.953768189885990210f, -0.300543241417273790f, 0.954228095109105560f, -0.299079826308040640f, 0.954685754941338340f, -0.297615707435086250f, + 0.955141168305770780f, -0.296150888243623730f, 0.955594334130770880f, -0.294685372180514940f, 0.956045251349996290f, -0.293219162694259070f, + 0.956493918902394990f, -0.291752263234989540f, 0.956940335732208820f, -0.290284677254462500f, 0.957384500788975860f, -0.288816408206049420f, + 0.957826413027532910f, -0.287347459544729340f, 0.958266071408017450f, -0.285877834727081110f, 0.958703474895871490f, -0.284407537211272210f, + 0.959138622461841890f, -0.282936570457055560f, 0.959571513081984520f, -0.281464937925758050f, 0.960002145737665960f, -0.279992643080273110f, + 0.960430519415565680f, -0.278519689385053670f, 0.960856633107679550f, -0.277046080306100340f, 0.961280485811320530f, -0.275571819310958420f, + 0.961702076529122540f, -0.274096909868706500f, 0.962121404269041580f, -0.272621355449948980f, 0.962538468044359160f, -0.271145159526807840f, + 0.962953266873683770f, -0.269668325572915590f, 0.963365799780953940f, -0.268190857063403560f, 0.963776065795439840f, -0.266712757474898590f, + 0.964184063951745720f, -0.265234030285511850f, 0.964589793289812760f, -0.263754678974831290f, 0.964993252854920210f, -0.262274707023914200f, + 0.965394441697689290f, -0.260794117915275960f, 0.965793358874083570f, -0.259312915132886510f, 0.966190003445412500f, -0.257831102162159150f, + 0.966584374478333120f, -0.256348682489942860f, 0.966976471044852180f, -0.254865659604514410f, 0.967366292222328390f, -0.253382036995570660f, + 0.967753837093475400f, -0.251897818154217300f, 0.968139104746362330f, -0.250413006572965450f, 0.968522094274417270f, -0.248927605745720200f, + 0.968902804776428870f, -0.247441619167773190f, 0.969281235356548310f, -0.245955050335795210f, 0.969657385124292340f, -0.244467902747824590f, + 0.970031253194543970f, -0.242980179903264180f, 0.970402838687555390f, -0.241491885302869470f, 0.970772140728950350f, -0.240003022448741440f, + 0.971139158449725200f, -0.238513594844318250f, 0.971503890986251670f, -0.237023605994367730f, 0.971866337480279290f, -0.235533059404975880f, + 0.972226497078936270f, -0.234041958583543620f, 0.972584368934732210f, -0.232550307038775300f, 0.972939952205560180f, -0.231058108280671000f, + 0.973293246054698140f, -0.229565365820519480f, 0.973644249650811870f, -0.228072083170886180f, 0.973992962167955830f, -0.226578263845610280f, + 0.974339382785575860f, -0.225083911359792970f, 0.974683510688510670f, -0.223589029229789960f, 0.975025345066994230f, -0.222093620973203340f, + 0.975364885116656870f, -0.220597690108874060f, 0.975702130038528460f, -0.219101240156870160f, 0.976037079039039020f, -0.217604274638483840f, + 0.976369731330021140f, -0.216106797076219550f, 0.976700086128711840f, -0.214608810993786680f, 0.977028142657754170f, -0.213110319916091970f, + 0.977353900145199960f, -0.211611327369228020f, 0.977677357824509930f, -0.210111836880469920f, 0.977998514934557030f, -0.208611851978263620f, + 0.978317370719627650f, -0.207111376192218530f, 0.978633924429423210f, -0.205610413053099070f, 0.978948175319062090f, -0.204108966092817400f, + 0.979260122649082020f, -0.202607038844421490f, 0.979569765685440520f, -0.201104634842092120f, 0.979877103699517640f, -0.199601757621131030f, + 0.980182135968117430f, -0.198098410717953480f, 0.980484861773469270f, -0.196594597670080830f, 0.980785280403230320f, -0.195090322016128720f, + 0.981083391150486590f, -0.193585587295803910f, 0.981379193313754560f, -0.192080397049892580f, 0.981672686196983110f, -0.190574754820252740f, + 0.981963869109555350f, -0.189068664149806030f, 0.982252741366289260f, -0.187562128582530130f, 0.982539302287441130f, -0.186055151663447020f, + 0.982823551198705240f, -0.184547736938619840f, 0.983105487431216290f, -0.183039887955141010f, 0.983385110321551180f, -0.181531608261124880f, + 0.983662419211730140f, -0.180022901405700130f, 0.983937413449218810f, -0.178513770938997980f, 0.984210092386929030f, -0.177004220412149050f, + 0.984480455383220930f, -0.175494253377271560f, 0.984748501801904210f, -0.173983873387463790f, 0.985014231012239840f, -0.172473083996795780f, + 0.985277642388941110f, -0.170961888760301770f, 0.985538735312175950f, -0.169450291233968350f, 0.985797509167567370f, -0.167938294974731390f, + 0.986053963346195440f, -0.166425903540464190f, 0.986308097244598670f, -0.164913120489969810f, 0.986559910264775300f, -0.163399949382973860f, + 0.986809401814185420f, -0.161886393780112300f, 0.987056571305750970f, -0.160372457242928560f, 0.987301418157858320f, -0.158858143333861580f, + 0.987543941794359230f, -0.157343455616238250f, 0.987784141644572180f, -0.155828397654265070f, 0.988022017143283530f, -0.154312973013020630f, + 0.988257567730749460f, -0.152797185258443800f, 0.988490792852696590f, -0.151281037957330440f, 0.988721691960323780f, -0.149764534677321590f, + 0.988950264510302990f, -0.148247678986895950f, 0.989176509964780900f, -0.146730474455362390f, 0.989400427791380270f, -0.145212924652847940f, + 0.989622017463200780f, -0.143695033150294750f, 0.989841278458820530f, -0.142176803519448200f, 0.990058210262297120f, -0.140658239332849210f, + 0.990272812363169110f, -0.139139344163826030f, 0.990485084256456980f, -0.137620121586486590f, 0.990695025442664630f, -0.136100575175706590f, + 0.990902635427780010f, -0.134580708507126420f, 0.991107913723276780f, -0.133060525157139120f, 0.991310859846115440f, -0.131540028702883010f, + 0.991511473318743900f, -0.130019222722233980f, 0.991709753669099410f, -0.128498110793793640f, 0.991905700430609330f, -0.126976696496886170f, + 0.992099313142191690f, -0.125454983411546370f, 0.992290591348257370f, -0.123932975118512160f, 0.992479534598709970f, -0.122410675199216030f, + 0.992666142448947910f, -0.120888087235777620f, 0.992850414459864990f, -0.119365214810991760f, 0.993032350197851410f, -0.117842061508325200f, + 0.993211949234794500f, -0.116318630911904840f, 0.993389211148080650f, -0.114794926606509990f, 0.993564135520595300f, -0.113270952177564970f, + 0.993736721940724600f, -0.111746711211127060f, 0.993906970002356060f, -0.110222207293883360f, 0.994074879304879370f, -0.108697444013138870f, + 0.994240449453187900f, -0.107172424956808840f, 0.994403680057679100f, -0.105647153713410440f, 0.994564570734255420f, -0.104121633872055130f, + 0.994723121104325700f, -0.102595869022436680f, 0.994879330794805620f, -0.101069862754828060f, 0.995033199438118630f, -0.099543618660069402f, + 0.995184726672196930f, -0.098017140329560506f, 0.995333912140482170f, -0.096490431355253231f, 0.995480755491926940f, -0.094963495329639477f, + 0.995625256380994310f, -0.093436335845748092f, 0.995767414467659820f, -0.091908956497132877f, 0.995907229417411720f, -0.090381360877864969f, + 0.996044700901251970f, -0.088853552582524420f, 0.996179828595696870f, -0.087325535206192628f, 0.996312612182778000f, -0.085797312344440282f, + 0.996443051350042630f, -0.084268887593324307f, 0.996571145790554840f, -0.082740264549375761f, 0.996696895202896060f, -0.081211446809592344f, + 0.996820299291165670f, -0.079682437971430750f, 0.996941357764982050f, -0.078153241632794718f, 0.997060070339482960f, -0.076623861392031811f, + 0.997176436735326080f, -0.075094300847921472f, 0.997290456678690210f, -0.073564563599667412f, 0.997402129901275300f, -0.072034653246889152f, + 0.997511456140303450f, -0.070504573389614425f, 0.997618435138519550f, -0.068974327628267135f, 0.997723066644191640f, -0.067443919563664287f, + 0.997825350411111640f, -0.065913352797003888f, 0.997925286198596000f, -0.064382630929857368f, 0.998022873771486130f, -0.062851757564162059f, + 0.998118112900149180f, -0.061320736302209057f, 0.998211003360478190f, -0.059789570746640187f, 0.998301544933892780f, -0.058258264500435912f, + 0.998389737407340160f, -0.056726821166907741f, 0.998475580573294770f, -0.055195244349689775f, 0.998559074229759310f, -0.053663537652731082f, + 0.998640218180265160f, -0.052131704680283719f, 0.998719012233872940f, -0.050599749036899518f, 0.998795456205172410f, -0.049067674327418091f, + 0.998869549914283560f, -0.047535484156959219f, 0.998941293186856870f, -0.046003182130915268f, 0.999010685854073270f, -0.044470771854939146f, + 0.999077727752645360f, -0.042938256934941139f, 0.999142418724816910f, -0.041405640977076899f, 0.999204758618363890f, -0.039872927587739811f, + 0.999264747286594420f, -0.038340120373552534f, 0.999322384588349430f, -0.036807222941359394f, 0.999377670388002850f, -0.035274238898214350f, + 0.999430604555461730f, -0.033741171851377823f, 0.999481186966166950f, -0.032208025408304662f, 0.999529417501093140f, -0.030674803176636543f, + 0.999575296046749220f, -0.029141508764194368f, 0.999618822495178640f, -0.027608145778966225f, 0.999659996743959220f, -0.026074717829104220f, + 0.999698818696204250f, -0.024541228522912448f, 0.999735288260561680f, -0.023007681468839372f, 0.999769405351215280f, -0.021474080275469345f, + 0.999801169887884260f, -0.019940428551515003f, 0.999830581795823400f, -0.018406729905805226f, 0.999857641005823860f, -0.016872987947281957f, + 0.999882347454212560f, -0.015339206284988182f, 0.999904701082852900f, -0.013805388528060311f, 0.999924701839144500f, -0.012271538285720572f, + 0.999942349676023910f, -0.010737659167264976f, 0.999957644551963900f, -0.009203754782060144f, 0.999970586430974140f, -0.007669828739531261f, + 0.999981175282601110f, -0.006135884649154477f, 0.999989411081928400f, -0.004601926120448411f, 0.999995293809576190f, -0.003067956762966544f, + 0.999998823451701880f, -0.001533980186285172f, + }; + +/** +* @brief Initialization function for the floating-point CFFT/CIFFT. +* @param[in,out] *S points to an instance of the floating-point CFFT/CIFFT structure. +* @param[in] fftLen length of the FFT. +* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. +* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. +* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. +* +* \par Description: +* \par +* The parameter ifftFlag controls whether a forward or inverse transform is computed. +* Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated +* \par +* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. +* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. +* \par +* The parameter fftLen Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024. +* \par +* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer. +*/ + +arm_status arm_cfft_radix4_init_f32( + arm_cfft_radix4_instance_f32 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag) +{ + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + + /* Initialise the FFT length */ + S->fftLen = fftLen; + + /* Initialise the Twiddle coefficient pointer */ + S->pTwiddle = (float32_t *) twiddleCoef; + + /* Initialise the Flag for selection of CFFT or CIFFT */ + S->ifftFlag = ifftFlag; + + /* Initialise the Flag for calculation Bit reversal or not */ + S->bitReverseFlag = bitReverseFlag; + + /* Initializations of structure parameters depending on the FFT length */ + switch (S->fftLen) + { + + case 4096u: + /* Initializations of structure parameters for 4096 point FFT */ + + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 1u; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 1u; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = armBitRevTable; + /* Initialise the 1/N Value */ + S->onebyfftLen = 0.000244140625; + break; + + case 1024u: + /* Initializations of structure parameters for 1024 point FFT */ + + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 4u; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 4u; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = &armBitRevTable[3]; + /* Initialise the 1/fftLen Value */ + S->onebyfftLen = 0.0009765625f; + break; + + + case 256u: + /* Initializations of structure parameters for 256 point FFT */ + S->twidCoefModifier = 16u; + S->bitRevFactor = 16u; + S->pBitRevTable = &armBitRevTable[15]; + S->onebyfftLen = 0.00390625f; + break; + + case 64u: + /* Initializations of structure parameters for 64 point FFT */ + S->twidCoefModifier = 64u; + S->bitRevFactor = 64u; + S->pBitRevTable = &armBitRevTable[63]; + S->onebyfftLen = 0.015625f; + break; + + case 16u: + /* Initializations of structure parameters for 16 point FFT */ + S->twidCoefModifier = 256u; + S->bitRevFactor = 256u; + S->pBitRevTable = &armBitRevTable[255]; + S->onebyfftLen = 0.0625f; + break; + + + default: + /* Reporting argument error if fftSize is not valid value */ + status = ARM_MATH_ARGUMENT_ERROR; + break; + } + + return (status); +} + +/** + * @} end of CFFT_CIFFT group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q15.c new file mode 100644 index 000000000..96ae68202 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q15.c @@ -0,0 +1,415 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_cfft_radix4_init_q15.c +* +* Description: Radix-4 Decimation in Frequency Q15 FFT & IFFT initialization function +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @ingroup groupTransforms + */ + + +/** + * @addtogroup CFFT_CIFFT + * @{ + */ + +/* +* @brief Twiddle factors Table +*/ + +/** +* \par +* Example code for Q15 Twiddle factors Generation:: +* \par +*
for(i = 0; i< N; i++)   
+* {   
+*	twiddleCoefQ15[2*i]= cos(i * 2*PI/(float)N);   
+*	twiddleCoefQ15[2*i+1]= sin(i * 2*PI/(float)N);   
+* } 
+* \par +* where N = 1024 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to Q15(Fixed point 1.15): +* round(twiddleCoefQ15(i) * pow(2, 15)) +* +*/ + +static const q15_t twiddleCoefQ15[2048] = { + 0x7fff, 0x0, 0x7fff, 0xc9, 0x7ffe, 0x192, 0x7ffa, 0x25b, + 0x7ff6, 0x324, 0x7ff1, 0x3ed, 0x7fea, 0x4b6, 0x7fe2, 0x57f, + 0x7fd9, 0x648, 0x7fce, 0x711, 0x7fc2, 0x7d9, 0x7fb5, 0x8a2, + 0x7fa7, 0x96b, 0x7f98, 0xa33, 0x7f87, 0xafb, 0x7f75, 0xbc4, + 0x7f62, 0xc8c, 0x7f4e, 0xd54, 0x7f38, 0xe1c, 0x7f22, 0xee4, + 0x7f0a, 0xfab, 0x7ef0, 0x1073, 0x7ed6, 0x113a, 0x7eba, 0x1201, + 0x7e9d, 0x12c8, 0x7e7f, 0x138f, 0x7e60, 0x1455, 0x7e3f, 0x151c, + 0x7e1e, 0x15e2, 0x7dfb, 0x16a8, 0x7dd6, 0x176e, 0x7db1, 0x1833, + 0x7d8a, 0x18f9, 0x7d63, 0x19be, 0x7d3a, 0x1a83, 0x7d0f, 0x1b47, + 0x7ce4, 0x1c0c, 0x7cb7, 0x1cd0, 0x7c89, 0x1d93, 0x7c5a, 0x1e57, + 0x7c2a, 0x1f1a, 0x7bf9, 0x1fdd, 0x7bc6, 0x209f, 0x7b92, 0x2162, + 0x7b5d, 0x2224, 0x7b27, 0x22e5, 0x7aef, 0x23a7, 0x7ab7, 0x2467, + 0x7a7d, 0x2528, 0x7a42, 0x25e8, 0x7a06, 0x26a8, 0x79c9, 0x2768, + 0x798a, 0x2827, 0x794a, 0x28e5, 0x790a, 0x29a4, 0x78c8, 0x2a62, + 0x7885, 0x2b1f, 0x7840, 0x2bdc, 0x77fb, 0x2c99, 0x77b4, 0x2d55, + 0x776c, 0x2e11, 0x7723, 0x2ecc, 0x76d9, 0x2f87, 0x768e, 0x3042, + 0x7642, 0x30fc, 0x75f4, 0x31b5, 0x75a6, 0x326e, 0x7556, 0x3327, + 0x7505, 0x33df, 0x74b3, 0x3497, 0x7460, 0x354e, 0x740b, 0x3604, + 0x73b6, 0x36ba, 0x735f, 0x3770, 0x7308, 0x3825, 0x72af, 0x38d9, + 0x7255, 0x398d, 0x71fa, 0x3a40, 0x719e, 0x3af3, 0x7141, 0x3ba5, + 0x70e3, 0x3c57, 0x7083, 0x3d08, 0x7023, 0x3db8, 0x6fc2, 0x3e68, + 0x6f5f, 0x3f17, 0x6efb, 0x3fc6, 0x6e97, 0x4074, 0x6e31, 0x4121, + 0x6dca, 0x41ce, 0x6d62, 0x427a, 0x6cf9, 0x4326, 0x6c8f, 0x43d1, + 0x6c24, 0x447b, 0x6bb8, 0x4524, 0x6b4b, 0x45cd, 0x6add, 0x4675, + 0x6a6e, 0x471d, 0x69fd, 0x47c4, 0x698c, 0x486a, 0x691a, 0x490f, + 0x68a7, 0x49b4, 0x6832, 0x4a58, 0x67bd, 0x4afb, 0x6747, 0x4b9e, + 0x66d0, 0x4c40, 0x6657, 0x4ce1, 0x65de, 0x4d81, 0x6564, 0x4e21, + 0x64e9, 0x4ec0, 0x646c, 0x4f5e, 0x63ef, 0x4ffb, 0x6371, 0x5098, + 0x62f2, 0x5134, 0x6272, 0x51cf, 0x61f1, 0x5269, 0x616f, 0x5303, + 0x60ec, 0x539b, 0x6068, 0x5433, 0x5fe4, 0x54ca, 0x5f5e, 0x5560, + 0x5ed7, 0x55f6, 0x5e50, 0x568a, 0x5dc8, 0x571e, 0x5d3e, 0x57b1, + 0x5cb4, 0x5843, 0x5c29, 0x58d4, 0x5b9d, 0x5964, 0x5b10, 0x59f4, + 0x5a82, 0x5a82, 0x59f4, 0x5b10, 0x5964, 0x5b9d, 0x58d4, 0x5c29, + 0x5843, 0x5cb4, 0x57b1, 0x5d3e, 0x571e, 0x5dc8, 0x568a, 0x5e50, + 0x55f6, 0x5ed7, 0x5560, 0x5f5e, 0x54ca, 0x5fe4, 0x5433, 0x6068, + 0x539b, 0x60ec, 0x5303, 0x616f, 0x5269, 0x61f1, 0x51cf, 0x6272, + 0x5134, 0x62f2, 0x5098, 0x6371, 0x4ffb, 0x63ef, 0x4f5e, 0x646c, + 0x4ec0, 0x64e9, 0x4e21, 0x6564, 0x4d81, 0x65de, 0x4ce1, 0x6657, + 0x4c40, 0x66d0, 0x4b9e, 0x6747, 0x4afb, 0x67bd, 0x4a58, 0x6832, + 0x49b4, 0x68a7, 0x490f, 0x691a, 0x486a, 0x698c, 0x47c4, 0x69fd, + 0x471d, 0x6a6e, 0x4675, 0x6add, 0x45cd, 0x6b4b, 0x4524, 0x6bb8, + 0x447b, 0x6c24, 0x43d1, 0x6c8f, 0x4326, 0x6cf9, 0x427a, 0x6d62, + 0x41ce, 0x6dca, 0x4121, 0x6e31, 0x4074, 0x6e97, 0x3fc6, 0x6efb, + 0x3f17, 0x6f5f, 0x3e68, 0x6fc2, 0x3db8, 0x7023, 0x3d08, 0x7083, + 0x3c57, 0x70e3, 0x3ba5, 0x7141, 0x3af3, 0x719e, 0x3a40, 0x71fa, + 0x398d, 0x7255, 0x38d9, 0x72af, 0x3825, 0x7308, 0x3770, 0x735f, + 0x36ba, 0x73b6, 0x3604, 0x740b, 0x354e, 0x7460, 0x3497, 0x74b3, + 0x33df, 0x7505, 0x3327, 0x7556, 0x326e, 0x75a6, 0x31b5, 0x75f4, + 0x30fc, 0x7642, 0x3042, 0x768e, 0x2f87, 0x76d9, 0x2ecc, 0x7723, + 0x2e11, 0x776c, 0x2d55, 0x77b4, 0x2c99, 0x77fb, 0x2bdc, 0x7840, + 0x2b1f, 0x7885, 0x2a62, 0x78c8, 0x29a4, 0x790a, 0x28e5, 0x794a, + 0x2827, 0x798a, 0x2768, 0x79c9, 0x26a8, 0x7a06, 0x25e8, 0x7a42, + 0x2528, 0x7a7d, 0x2467, 0x7ab7, 0x23a7, 0x7aef, 0x22e5, 0x7b27, + 0x2224, 0x7b5d, 0x2162, 0x7b92, 0x209f, 0x7bc6, 0x1fdd, 0x7bf9, + 0x1f1a, 0x7c2a, 0x1e57, 0x7c5a, 0x1d93, 0x7c89, 0x1cd0, 0x7cb7, + 0x1c0c, 0x7ce4, 0x1b47, 0x7d0f, 0x1a83, 0x7d3a, 0x19be, 0x7d63, + 0x18f9, 0x7d8a, 0x1833, 0x7db1, 0x176e, 0x7dd6, 0x16a8, 0x7dfb, + 0x15e2, 0x7e1e, 0x151c, 0x7e3f, 0x1455, 0x7e60, 0x138f, 0x7e7f, + 0x12c8, 0x7e9d, 0x1201, 0x7eba, 0x113a, 0x7ed6, 0x1073, 0x7ef0, + 0xfab, 0x7f0a, 0xee4, 0x7f22, 0xe1c, 0x7f38, 0xd54, 0x7f4e, + 0xc8c, 0x7f62, 0xbc4, 0x7f75, 0xafb, 0x7f87, 0xa33, 0x7f98, + 0x96b, 0x7fa7, 0x8a2, 0x7fb5, 0x7d9, 0x7fc2, 0x711, 0x7fce, + 0x648, 0x7fd9, 0x57f, 0x7fe2, 0x4b6, 0x7fea, 0x3ed, 0x7ff1, + 0x324, 0x7ff6, 0x25b, 0x7ffa, 0x192, 0x7ffe, 0xc9, 0x7fff, + 0x0, 0x7fff, 0xff37, 0x7fff, 0xfe6e, 0x7ffe, 0xfda5, 0x7ffa, + 0xfcdc, 0x7ff6, 0xfc13, 0x7ff1, 0xfb4a, 0x7fea, 0xfa81, 0x7fe2, + 0xf9b8, 0x7fd9, 0xf8ef, 0x7fce, 0xf827, 0x7fc2, 0xf75e, 0x7fb5, + 0xf695, 0x7fa7, 0xf5cd, 0x7f98, 0xf505, 0x7f87, 0xf43c, 0x7f75, + 0xf374, 0x7f62, 0xf2ac, 0x7f4e, 0xf1e4, 0x7f38, 0xf11c, 0x7f22, + 0xf055, 0x7f0a, 0xef8d, 0x7ef0, 0xeec6, 0x7ed6, 0xedff, 0x7eba, + 0xed38, 0x7e9d, 0xec71, 0x7e7f, 0xebab, 0x7e60, 0xeae4, 0x7e3f, + 0xea1e, 0x7e1e, 0xe958, 0x7dfb, 0xe892, 0x7dd6, 0xe7cd, 0x7db1, + 0xe707, 0x7d8a, 0xe642, 0x7d63, 0xe57d, 0x7d3a, 0xe4b9, 0x7d0f, + 0xe3f4, 0x7ce4, 0xe330, 0x7cb7, 0xe26d, 0x7c89, 0xe1a9, 0x7c5a, + 0xe0e6, 0x7c2a, 0xe023, 0x7bf9, 0xdf61, 0x7bc6, 0xde9e, 0x7b92, + 0xdddc, 0x7b5d, 0xdd1b, 0x7b27, 0xdc59, 0x7aef, 0xdb99, 0x7ab7, + 0xdad8, 0x7a7d, 0xda18, 0x7a42, 0xd958, 0x7a06, 0xd898, 0x79c9, + 0xd7d9, 0x798a, 0xd71b, 0x794a, 0xd65c, 0x790a, 0xd59e, 0x78c8, + 0xd4e1, 0x7885, 0xd424, 0x7840, 0xd367, 0x77fb, 0xd2ab, 0x77b4, + 0xd1ef, 0x776c, 0xd134, 0x7723, 0xd079, 0x76d9, 0xcfbe, 0x768e, + 0xcf04, 0x7642, 0xce4b, 0x75f4, 0xcd92, 0x75a6, 0xccd9, 0x7556, + 0xcc21, 0x7505, 0xcb69, 0x74b3, 0xcab2, 0x7460, 0xc9fc, 0x740b, + 0xc946, 0x73b6, 0xc890, 0x735f, 0xc7db, 0x7308, 0xc727, 0x72af, + 0xc673, 0x7255, 0xc5c0, 0x71fa, 0xc50d, 0x719e, 0xc45b, 0x7141, + 0xc3a9, 0x70e3, 0xc2f8, 0x7083, 0xc248, 0x7023, 0xc198, 0x6fc2, + 0xc0e9, 0x6f5f, 0xc03a, 0x6efb, 0xbf8c, 0x6e97, 0xbedf, 0x6e31, + 0xbe32, 0x6dca, 0xbd86, 0x6d62, 0xbcda, 0x6cf9, 0xbc2f, 0x6c8f, + 0xbb85, 0x6c24, 0xbadc, 0x6bb8, 0xba33, 0x6b4b, 0xb98b, 0x6add, + 0xb8e3, 0x6a6e, 0xb83c, 0x69fd, 0xb796, 0x698c, 0xb6f1, 0x691a, + 0xb64c, 0x68a7, 0xb5a8, 0x6832, 0xb505, 0x67bd, 0xb462, 0x6747, + 0xb3c0, 0x66d0, 0xb31f, 0x6657, 0xb27f, 0x65de, 0xb1df, 0x6564, + 0xb140, 0x64e9, 0xb0a2, 0x646c, 0xb005, 0x63ef, 0xaf68, 0x6371, + 0xaecc, 0x62f2, 0xae31, 0x6272, 0xad97, 0x61f1, 0xacfd, 0x616f, + 0xac65, 0x60ec, 0xabcd, 0x6068, 0xab36, 0x5fe4, 0xaaa0, 0x5f5e, + 0xaa0a, 0x5ed7, 0xa976, 0x5e50, 0xa8e2, 0x5dc8, 0xa84f, 0x5d3e, + 0xa7bd, 0x5cb4, 0xa72c, 0x5c29, 0xa69c, 0x5b9d, 0xa60c, 0x5b10, + 0xa57e, 0x5a82, 0xa4f0, 0x59f4, 0xa463, 0x5964, 0xa3d7, 0x58d4, + 0xa34c, 0x5843, 0xa2c2, 0x57b1, 0xa238, 0x571e, 0xa1b0, 0x568a, + 0xa129, 0x55f6, 0xa0a2, 0x5560, 0xa01c, 0x54ca, 0x9f98, 0x5433, + 0x9f14, 0x539b, 0x9e91, 0x5303, 0x9e0f, 0x5269, 0x9d8e, 0x51cf, + 0x9d0e, 0x5134, 0x9c8f, 0x5098, 0x9c11, 0x4ffb, 0x9b94, 0x4f5e, + 0x9b17, 0x4ec0, 0x9a9c, 0x4e21, 0x9a22, 0x4d81, 0x99a9, 0x4ce1, + 0x9930, 0x4c40, 0x98b9, 0x4b9e, 0x9843, 0x4afb, 0x97ce, 0x4a58, + 0x9759, 0x49b4, 0x96e6, 0x490f, 0x9674, 0x486a, 0x9603, 0x47c4, + 0x9592, 0x471d, 0x9523, 0x4675, 0x94b5, 0x45cd, 0x9448, 0x4524, + 0x93dc, 0x447b, 0x9371, 0x43d1, 0x9307, 0x4326, 0x929e, 0x427a, + 0x9236, 0x41ce, 0x91cf, 0x4121, 0x9169, 0x4074, 0x9105, 0x3fc6, + 0x90a1, 0x3f17, 0x903e, 0x3e68, 0x8fdd, 0x3db8, 0x8f7d, 0x3d08, + 0x8f1d, 0x3c57, 0x8ebf, 0x3ba5, 0x8e62, 0x3af3, 0x8e06, 0x3a40, + 0x8dab, 0x398d, 0x8d51, 0x38d9, 0x8cf8, 0x3825, 0x8ca1, 0x3770, + 0x8c4a, 0x36ba, 0x8bf5, 0x3604, 0x8ba0, 0x354e, 0x8b4d, 0x3497, + 0x8afb, 0x33df, 0x8aaa, 0x3327, 0x8a5a, 0x326e, 0x8a0c, 0x31b5, + 0x89be, 0x30fc, 0x8972, 0x3042, 0x8927, 0x2f87, 0x88dd, 0x2ecc, + 0x8894, 0x2e11, 0x884c, 0x2d55, 0x8805, 0x2c99, 0x87c0, 0x2bdc, + 0x877b, 0x2b1f, 0x8738, 0x2a62, 0x86f6, 0x29a4, 0x86b6, 0x28e5, + 0x8676, 0x2827, 0x8637, 0x2768, 0x85fa, 0x26a8, 0x85be, 0x25e8, + 0x8583, 0x2528, 0x8549, 0x2467, 0x8511, 0x23a7, 0x84d9, 0x22e5, + 0x84a3, 0x2224, 0x846e, 0x2162, 0x843a, 0x209f, 0x8407, 0x1fdd, + 0x83d6, 0x1f1a, 0x83a6, 0x1e57, 0x8377, 0x1d93, 0x8349, 0x1cd0, + 0x831c, 0x1c0c, 0x82f1, 0x1b47, 0x82c6, 0x1a83, 0x829d, 0x19be, + 0x8276, 0x18f9, 0x824f, 0x1833, 0x822a, 0x176e, 0x8205, 0x16a8, + 0x81e2, 0x15e2, 0x81c1, 0x151c, 0x81a0, 0x1455, 0x8181, 0x138f, + 0x8163, 0x12c8, 0x8146, 0x1201, 0x812a, 0x113a, 0x8110, 0x1073, + 0x80f6, 0xfab, 0x80de, 0xee4, 0x80c8, 0xe1c, 0x80b2, 0xd54, + 0x809e, 0xc8c, 0x808b, 0xbc4, 0x8079, 0xafb, 0x8068, 0xa33, + 0x8059, 0x96b, 0x804b, 0x8a2, 0x803e, 0x7d9, 0x8032, 0x711, + 0x8027, 0x648, 0x801e, 0x57f, 0x8016, 0x4b6, 0x800f, 0x3ed, + 0x800a, 0x324, 0x8006, 0x25b, 0x8002, 0x192, 0x8001, 0xc9, + 0x8000, 0x0, 0x8001, 0xff37, 0x8002, 0xfe6e, 0x8006, 0xfda5, + 0x800a, 0xfcdc, 0x800f, 0xfc13, 0x8016, 0xfb4a, 0x801e, 0xfa81, + 0x8027, 0xf9b8, 0x8032, 0xf8ef, 0x803e, 0xf827, 0x804b, 0xf75e, + 0x8059, 0xf695, 0x8068, 0xf5cd, 0x8079, 0xf505, 0x808b, 0xf43c, + 0x809e, 0xf374, 0x80b2, 0xf2ac, 0x80c8, 0xf1e4, 0x80de, 0xf11c, + 0x80f6, 0xf055, 0x8110, 0xef8d, 0x812a, 0xeec6, 0x8146, 0xedff, + 0x8163, 0xed38, 0x8181, 0xec71, 0x81a0, 0xebab, 0x81c1, 0xeae4, + 0x81e2, 0xea1e, 0x8205, 0xe958, 0x822a, 0xe892, 0x824f, 0xe7cd, + 0x8276, 0xe707, 0x829d, 0xe642, 0x82c6, 0xe57d, 0x82f1, 0xe4b9, + 0x831c, 0xe3f4, 0x8349, 0xe330, 0x8377, 0xe26d, 0x83a6, 0xe1a9, + 0x83d6, 0xe0e6, 0x8407, 0xe023, 0x843a, 0xdf61, 0x846e, 0xde9e, + 0x84a3, 0xdddc, 0x84d9, 0xdd1b, 0x8511, 0xdc59, 0x8549, 0xdb99, + 0x8583, 0xdad8, 0x85be, 0xda18, 0x85fa, 0xd958, 0x8637, 0xd898, + 0x8676, 0xd7d9, 0x86b6, 0xd71b, 0x86f6, 0xd65c, 0x8738, 0xd59e, + 0x877b, 0xd4e1, 0x87c0, 0xd424, 0x8805, 0xd367, 0x884c, 0xd2ab, + 0x8894, 0xd1ef, 0x88dd, 0xd134, 0x8927, 0xd079, 0x8972, 0xcfbe, + 0x89be, 0xcf04, 0x8a0c, 0xce4b, 0x8a5a, 0xcd92, 0x8aaa, 0xccd9, + 0x8afb, 0xcc21, 0x8b4d, 0xcb69, 0x8ba0, 0xcab2, 0x8bf5, 0xc9fc, + 0x8c4a, 0xc946, 0x8ca1, 0xc890, 0x8cf8, 0xc7db, 0x8d51, 0xc727, + 0x8dab, 0xc673, 0x8e06, 0xc5c0, 0x8e62, 0xc50d, 0x8ebf, 0xc45b, + 0x8f1d, 0xc3a9, 0x8f7d, 0xc2f8, 0x8fdd, 0xc248, 0x903e, 0xc198, + 0x90a1, 0xc0e9, 0x9105, 0xc03a, 0x9169, 0xbf8c, 0x91cf, 0xbedf, + 0x9236, 0xbe32, 0x929e, 0xbd86, 0x9307, 0xbcda, 0x9371, 0xbc2f, + 0x93dc, 0xbb85, 0x9448, 0xbadc, 0x94b5, 0xba33, 0x9523, 0xb98b, + 0x9592, 0xb8e3, 0x9603, 0xb83c, 0x9674, 0xb796, 0x96e6, 0xb6f1, + 0x9759, 0xb64c, 0x97ce, 0xb5a8, 0x9843, 0xb505, 0x98b9, 0xb462, + 0x9930, 0xb3c0, 0x99a9, 0xb31f, 0x9a22, 0xb27f, 0x9a9c, 0xb1df, + 0x9b17, 0xb140, 0x9b94, 0xb0a2, 0x9c11, 0xb005, 0x9c8f, 0xaf68, + 0x9d0e, 0xaecc, 0x9d8e, 0xae31, 0x9e0f, 0xad97, 0x9e91, 0xacfd, + 0x9f14, 0xac65, 0x9f98, 0xabcd, 0xa01c, 0xab36, 0xa0a2, 0xaaa0, + 0xa129, 0xaa0a, 0xa1b0, 0xa976, 0xa238, 0xa8e2, 0xa2c2, 0xa84f, + 0xa34c, 0xa7bd, 0xa3d7, 0xa72c, 0xa463, 0xa69c, 0xa4f0, 0xa60c, + 0xa57e, 0xa57e, 0xa60c, 0xa4f0, 0xa69c, 0xa463, 0xa72c, 0xa3d7, + 0xa7bd, 0xa34c, 0xa84f, 0xa2c2, 0xa8e2, 0xa238, 0xa976, 0xa1b0, + 0xaa0a, 0xa129, 0xaaa0, 0xa0a2, 0xab36, 0xa01c, 0xabcd, 0x9f98, + 0xac65, 0x9f14, 0xacfd, 0x9e91, 0xad97, 0x9e0f, 0xae31, 0x9d8e, + 0xaecc, 0x9d0e, 0xaf68, 0x9c8f, 0xb005, 0x9c11, 0xb0a2, 0x9b94, + 0xb140, 0x9b17, 0xb1df, 0x9a9c, 0xb27f, 0x9a22, 0xb31f, 0x99a9, + 0xb3c0, 0x9930, 0xb462, 0x98b9, 0xb505, 0x9843, 0xb5a8, 0x97ce, + 0xb64c, 0x9759, 0xb6f1, 0x96e6, 0xb796, 0x9674, 0xb83c, 0x9603, + 0xb8e3, 0x9592, 0xb98b, 0x9523, 0xba33, 0x94b5, 0xbadc, 0x9448, + 0xbb85, 0x93dc, 0xbc2f, 0x9371, 0xbcda, 0x9307, 0xbd86, 0x929e, + 0xbe32, 0x9236, 0xbedf, 0x91cf, 0xbf8c, 0x9169, 0xc03a, 0x9105, + 0xc0e9, 0x90a1, 0xc198, 0x903e, 0xc248, 0x8fdd, 0xc2f8, 0x8f7d, + 0xc3a9, 0x8f1d, 0xc45b, 0x8ebf, 0xc50d, 0x8e62, 0xc5c0, 0x8e06, + 0xc673, 0x8dab, 0xc727, 0x8d51, 0xc7db, 0x8cf8, 0xc890, 0x8ca1, + 0xc946, 0x8c4a, 0xc9fc, 0x8bf5, 0xcab2, 0x8ba0, 0xcb69, 0x8b4d, + 0xcc21, 0x8afb, 0xccd9, 0x8aaa, 0xcd92, 0x8a5a, 0xce4b, 0x8a0c, + 0xcf04, 0x89be, 0xcfbe, 0x8972, 0xd079, 0x8927, 0xd134, 0x88dd, + 0xd1ef, 0x8894, 0xd2ab, 0x884c, 0xd367, 0x8805, 0xd424, 0x87c0, + 0xd4e1, 0x877b, 0xd59e, 0x8738, 0xd65c, 0x86f6, 0xd71b, 0x86b6, + 0xd7d9, 0x8676, 0xd898, 0x8637, 0xd958, 0x85fa, 0xda18, 0x85be, + 0xdad8, 0x8583, 0xdb99, 0x8549, 0xdc59, 0x8511, 0xdd1b, 0x84d9, + 0xdddc, 0x84a3, 0xde9e, 0x846e, 0xdf61, 0x843a, 0xe023, 0x8407, + 0xe0e6, 0x83d6, 0xe1a9, 0x83a6, 0xe26d, 0x8377, 0xe330, 0x8349, + 0xe3f4, 0x831c, 0xe4b9, 0x82f1, 0xe57d, 0x82c6, 0xe642, 0x829d, + 0xe707, 0x8276, 0xe7cd, 0x824f, 0xe892, 0x822a, 0xe958, 0x8205, + 0xea1e, 0x81e2, 0xeae4, 0x81c1, 0xebab, 0x81a0, 0xec71, 0x8181, + 0xed38, 0x8163, 0xedff, 0x8146, 0xeec6, 0x812a, 0xef8d, 0x8110, + 0xf055, 0x80f6, 0xf11c, 0x80de, 0xf1e4, 0x80c8, 0xf2ac, 0x80b2, + 0xf374, 0x809e, 0xf43c, 0x808b, 0xf505, 0x8079, 0xf5cd, 0x8068, + 0xf695, 0x8059, 0xf75e, 0x804b, 0xf827, 0x803e, 0xf8ef, 0x8032, + 0xf9b8, 0x8027, 0xfa81, 0x801e, 0xfb4a, 0x8016, 0xfc13, 0x800f, + 0xfcdc, 0x800a, 0xfda5, 0x8006, 0xfe6e, 0x8002, 0xff37, 0x8001, + 0x0, 0x8000, 0xc9, 0x8001, 0x192, 0x8002, 0x25b, 0x8006, + 0x324, 0x800a, 0x3ed, 0x800f, 0x4b6, 0x8016, 0x57f, 0x801e, + 0x648, 0x8027, 0x711, 0x8032, 0x7d9, 0x803e, 0x8a2, 0x804b, + 0x96b, 0x8059, 0xa33, 0x8068, 0xafb, 0x8079, 0xbc4, 0x808b, + 0xc8c, 0x809e, 0xd54, 0x80b2, 0xe1c, 0x80c8, 0xee4, 0x80de, + 0xfab, 0x80f6, 0x1073, 0x8110, 0x113a, 0x812a, 0x1201, 0x8146, + 0x12c8, 0x8163, 0x138f, 0x8181, 0x1455, 0x81a0, 0x151c, 0x81c1, + 0x15e2, 0x81e2, 0x16a8, 0x8205, 0x176e, 0x822a, 0x1833, 0x824f, + 0x18f9, 0x8276, 0x19be, 0x829d, 0x1a83, 0x82c6, 0x1b47, 0x82f1, + 0x1c0c, 0x831c, 0x1cd0, 0x8349, 0x1d93, 0x8377, 0x1e57, 0x83a6, + 0x1f1a, 0x83d6, 0x1fdd, 0x8407, 0x209f, 0x843a, 0x2162, 0x846e, + 0x2224, 0x84a3, 0x22e5, 0x84d9, 0x23a7, 0x8511, 0x2467, 0x8549, + 0x2528, 0x8583, 0x25e8, 0x85be, 0x26a8, 0x85fa, 0x2768, 0x8637, + 0x2827, 0x8676, 0x28e5, 0x86b6, 0x29a4, 0x86f6, 0x2a62, 0x8738, + 0x2b1f, 0x877b, 0x2bdc, 0x87c0, 0x2c99, 0x8805, 0x2d55, 0x884c, + 0x2e11, 0x8894, 0x2ecc, 0x88dd, 0x2f87, 0x8927, 0x3042, 0x8972, + 0x30fc, 0x89be, 0x31b5, 0x8a0c, 0x326e, 0x8a5a, 0x3327, 0x8aaa, + 0x33df, 0x8afb, 0x3497, 0x8b4d, 0x354e, 0x8ba0, 0x3604, 0x8bf5, + 0x36ba, 0x8c4a, 0x3770, 0x8ca1, 0x3825, 0x8cf8, 0x38d9, 0x8d51, + 0x398d, 0x8dab, 0x3a40, 0x8e06, 0x3af3, 0x8e62, 0x3ba5, 0x8ebf, + 0x3c57, 0x8f1d, 0x3d08, 0x8f7d, 0x3db8, 0x8fdd, 0x3e68, 0x903e, + 0x3f17, 0x90a1, 0x3fc6, 0x9105, 0x4074, 0x9169, 0x4121, 0x91cf, + 0x41ce, 0x9236, 0x427a, 0x929e, 0x4326, 0x9307, 0x43d1, 0x9371, + 0x447b, 0x93dc, 0x4524, 0x9448, 0x45cd, 0x94b5, 0x4675, 0x9523, + 0x471d, 0x9592, 0x47c4, 0x9603, 0x486a, 0x9674, 0x490f, 0x96e6, + 0x49b4, 0x9759, 0x4a58, 0x97ce, 0x4afb, 0x9843, 0x4b9e, 0x98b9, + 0x4c40, 0x9930, 0x4ce1, 0x99a9, 0x4d81, 0x9a22, 0x4e21, 0x9a9c, + 0x4ec0, 0x9b17, 0x4f5e, 0x9b94, 0x4ffb, 0x9c11, 0x5098, 0x9c8f, + 0x5134, 0x9d0e, 0x51cf, 0x9d8e, 0x5269, 0x9e0f, 0x5303, 0x9e91, + 0x539b, 0x9f14, 0x5433, 0x9f98, 0x54ca, 0xa01c, 0x5560, 0xa0a2, + 0x55f6, 0xa129, 0x568a, 0xa1b0, 0x571e, 0xa238, 0x57b1, 0xa2c2, + 0x5843, 0xa34c, 0x58d4, 0xa3d7, 0x5964, 0xa463, 0x59f4, 0xa4f0, + 0x5a82, 0xa57e, 0x5b10, 0xa60c, 0x5b9d, 0xa69c, 0x5c29, 0xa72c, + 0x5cb4, 0xa7bd, 0x5d3e, 0xa84f, 0x5dc8, 0xa8e2, 0x5e50, 0xa976, + 0x5ed7, 0xaa0a, 0x5f5e, 0xaaa0, 0x5fe4, 0xab36, 0x6068, 0xabcd, + 0x60ec, 0xac65, 0x616f, 0xacfd, 0x61f1, 0xad97, 0x6272, 0xae31, + 0x62f2, 0xaecc, 0x6371, 0xaf68, 0x63ef, 0xb005, 0x646c, 0xb0a2, + 0x64e9, 0xb140, 0x6564, 0xb1df, 0x65de, 0xb27f, 0x6657, 0xb31f, + 0x66d0, 0xb3c0, 0x6747, 0xb462, 0x67bd, 0xb505, 0x6832, 0xb5a8, + 0x68a7, 0xb64c, 0x691a, 0xb6f1, 0x698c, 0xb796, 0x69fd, 0xb83c, + 0x6a6e, 0xb8e3, 0x6add, 0xb98b, 0x6b4b, 0xba33, 0x6bb8, 0xbadc, + 0x6c24, 0xbb85, 0x6c8f, 0xbc2f, 0x6cf9, 0xbcda, 0x6d62, 0xbd86, + 0x6dca, 0xbe32, 0x6e31, 0xbedf, 0x6e97, 0xbf8c, 0x6efb, 0xc03a, + 0x6f5f, 0xc0e9, 0x6fc2, 0xc198, 0x7023, 0xc248, 0x7083, 0xc2f8, + 0x70e3, 0xc3a9, 0x7141, 0xc45b, 0x719e, 0xc50d, 0x71fa, 0xc5c0, + 0x7255, 0xc673, 0x72af, 0xc727, 0x7308, 0xc7db, 0x735f, 0xc890, + 0x73b6, 0xc946, 0x740b, 0xc9fc, 0x7460, 0xcab2, 0x74b3, 0xcb69, + 0x7505, 0xcc21, 0x7556, 0xccd9, 0x75a6, 0xcd92, 0x75f4, 0xce4b, + 0x7642, 0xcf04, 0x768e, 0xcfbe, 0x76d9, 0xd079, 0x7723, 0xd134, + 0x776c, 0xd1ef, 0x77b4, 0xd2ab, 0x77fb, 0xd367, 0x7840, 0xd424, + 0x7885, 0xd4e1, 0x78c8, 0xd59e, 0x790a, 0xd65c, 0x794a, 0xd71b, + 0x798a, 0xd7d9, 0x79c9, 0xd898, 0x7a06, 0xd958, 0x7a42, 0xda18, + 0x7a7d, 0xdad8, 0x7ab7, 0xdb99, 0x7aef, 0xdc59, 0x7b27, 0xdd1b, + 0x7b5d, 0xdddc, 0x7b92, 0xde9e, 0x7bc6, 0xdf61, 0x7bf9, 0xe023, + 0x7c2a, 0xe0e6, 0x7c5a, 0xe1a9, 0x7c89, 0xe26d, 0x7cb7, 0xe330, + 0x7ce4, 0xe3f4, 0x7d0f, 0xe4b9, 0x7d3a, 0xe57d, 0x7d63, 0xe642, + 0x7d8a, 0xe707, 0x7db1, 0xe7cd, 0x7dd6, 0xe892, 0x7dfb, 0xe958, + 0x7e1e, 0xea1e, 0x7e3f, 0xeae4, 0x7e60, 0xebab, 0x7e7f, 0xec71, + 0x7e9d, 0xed38, 0x7eba, 0xedff, 0x7ed6, 0xeec6, 0x7ef0, 0xef8d, + 0x7f0a, 0xf055, 0x7f22, 0xf11c, 0x7f38, 0xf1e4, 0x7f4e, 0xf2ac, + 0x7f62, 0xf374, 0x7f75, 0xf43c, 0x7f87, 0xf505, 0x7f98, 0xf5cd, + 0x7fa7, 0xf695, 0x7fb5, 0xf75e, 0x7fc2, 0xf827, 0x7fce, 0xf8ef, + 0x7fd9, 0xf9b8, 0x7fe2, 0xfa81, 0x7fea, 0xfb4a, 0x7ff1, 0xfc13, + 0x7ff6, 0xfcdc, 0x7ffa, 0xfda5, 0x7ffe, 0xfe6e, 0x7fff, 0xff37 +}; + + +/** +* @brief Initialization function for the Q15 CFFT/CIFFT. +* @param[in,out] *S points to an instance of the Q15 CFFT/CIFFT structure. +* @param[in] fftLen length of the FFT. +* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. +* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. +* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. +* +* \par Description: +* \par +* The parameter ifftFlag controls whether a forward or inverse transform is computed. +* Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated +* \par +* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. +* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. +* \par +* The parameter fftLen Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024. +* \par +* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer. +*/ + +arm_status arm_cfft_radix4_init_q15( + arm_cfft_radix4_instance_q15 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag) +{ + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + /* Initialise the FFT length */ + S->fftLen = fftLen; + /* Initialise the Twiddle coefficient pointer */ + S->pTwiddle = (q15_t *) twiddleCoefQ15; + /* Initialise the Flag for selection of CFFT or CIFFT */ + S->ifftFlag = ifftFlag; + /* Initialise the Flag for calculation Bit reversal or not */ + S->bitReverseFlag = bitReverseFlag; + + /* Initializations of structure parameters depending on the FFT length */ + switch (S->fftLen) + { + /* Initializations of structure parameters for 1024 point FFT */ + case 1024u: + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 1u; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 1u; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = armBitRevTable; + + break; + case 256u: + /* Initializations of structure parameters for 2566 point FFT */ + S->twidCoefModifier = 4u; + S->bitRevFactor = 4u; + S->pBitRevTable = &armBitRevTable[3]; + + break; + case 64u: + /* Initializations of structure parameters for 64 point FFT */ + S->twidCoefModifier = 16u; + S->bitRevFactor = 16u; + S->pBitRevTable = &armBitRevTable[15]; + + break; + case 16u: + /* Initializations of structure parameters for 16 point FFT */ + S->twidCoefModifier = 64u; + S->bitRevFactor = 64u; + S->pBitRevTable = &armBitRevTable[63]; + + break; + default: + /* Reporting argument error if fftSize is not valid value */ + status = ARM_MATH_ARGUMENT_ERROR; + break; + } + + return (status); +} + +/** + * @} end of CFFT_CIFFT group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q31.c new file mode 100644 index 000000000..fb12905e5 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q31.c @@ -0,0 +1,1197 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_cfft_radix4_init_q31.c +* +* Description: Radix-4 Decimation in Frequency Q31 FFT & IFFT initialization function +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +** Version 1.0.11 2011/08/17 +* Updated to support 4096 CFFT length. +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @ingroup groupTransforms + */ + +/** + * @addtogroup CFFT_CIFFT + * @{ + */ + +/* +* @brief Twiddle factors Table +*/ + +/** +* \par +* Example code for Q31 Twiddle factors Generation:: +* \par +*
for(i = 0; i< N; i++)   
+* {   
+*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);   
+*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);   
+* } 
+* \par +* where N = 1024 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to Q31(Fixed point 1.31): +* round(twiddleCoefQ31(i) * pow(2, 31)) +* +*/ + +static const q31_t twiddleCoefQ31[4096*2] = { + 0x7fffffff, 0x0, 0x7ffff621, 0x3243f5, 0x7fffd886, 0x6487e3, 0x7fffa72c, 0x96cbc1, + 0x7fff6216, 0xc90f88, 0x7fff0943, 0xfb5330, 0x7ffe9cb2, 0x12d96b1, 0x7ffe1c65, 0x15fda03, + 0x7ffd885a, 0x1921d20, 0x7ffce093, 0x1c45ffe, 0x7ffc250f, 0x1f6a297, 0x7ffb55ce, 0x228e4e2, + 0x7ffa72d1, 0x25b26d7, 0x7ff97c18, 0x28d6870, 0x7ff871a2, 0x2bfa9a4, 0x7ff75370, 0x2f1ea6c, + 0x7ff62182, 0x3242abf, 0x7ff4dbd9, 0x3566a96, 0x7ff38274, 0x388a9ea, 0x7ff21553, 0x3bae8b2, + 0x7ff09478, 0x3ed26e6, 0x7feeffe1, 0x41f6480, 0x7fed5791, 0x451a177, 0x7feb9b85, 0x483ddc3, + 0x7fe9cbc0, 0x4b6195d, 0x7fe7e841, 0x4e8543e, 0x7fe5f108, 0x51a8e5c, 0x7fe3e616, 0x54cc7b1, + 0x7fe1c76b, 0x57f0035, 0x7fdf9508, 0x5b137df, 0x7fdd4eec, 0x5e36ea9, 0x7fdaf519, 0x615a48b, + 0x7fd8878e, 0x647d97c, 0x7fd6064c, 0x67a0d76, 0x7fd37153, 0x6ac406f, 0x7fd0c8a3, 0x6de7262, + 0x7fce0c3e, 0x710a345, 0x7fcb3c23, 0x742d311, 0x7fc85854, 0x77501be, 0x7fc560cf, 0x7a72f45, + 0x7fc25596, 0x7d95b9e, 0x7fbf36aa, 0x80b86c2, 0x7fbc040a, 0x83db0a7, 0x7fb8bdb8, 0x86fd947, + 0x7fb563b3, 0x8a2009a, 0x7fb1f5fc, 0x8d42699, 0x7fae7495, 0x9064b3a, 0x7faadf7c, 0x9386e78, + 0x7fa736b4, 0x96a9049, 0x7fa37a3c, 0x99cb0a7, 0x7f9faa15, 0x9cecf89, 0x7f9bc640, 0xa00ece8, + 0x7f97cebd, 0xa3308bd, 0x7f93c38c, 0xa6522fe, 0x7f8fa4b0, 0xa973ba5, 0x7f8b7227, 0xac952aa, + 0x7f872bf3, 0xafb6805, 0x7f82d214, 0xb2d7baf, 0x7f7e648c, 0xb5f8d9f, 0x7f79e35a, 0xb919dcf, + 0x7f754e80, 0xbc3ac35, 0x7f70a5fe, 0xbf5b8cb, 0x7f6be9d4, 0xc27c389, 0x7f671a05, 0xc59cc68, + 0x7f62368f, 0xc8bd35e, 0x7f5d3f75, 0xcbdd865, 0x7f5834b7, 0xcefdb76, 0x7f531655, 0xd21dc87, + 0x7f4de451, 0xd53db92, 0x7f489eaa, 0xd85d88f, 0x7f434563, 0xdb7d376, 0x7f3dd87c, 0xde9cc40, + 0x7f3857f6, 0xe1bc2e4, 0x7f32c3d1, 0xe4db75b, 0x7f2d1c0e, 0xe7fa99e, 0x7f2760af, 0xeb199a4, + 0x7f2191b4, 0xee38766, 0x7f1baf1e, 0xf1572dc, 0x7f15b8ee, 0xf475bff, 0x7f0faf25, 0xf7942c7, + 0x7f0991c4, 0xfab272b, 0x7f0360cb, 0xfdd0926, 0x7efd1c3c, 0x100ee8ad, 0x7ef6c418, 0x1040c5bb, + 0x7ef05860, 0x1072a048, 0x7ee9d914, 0x10a4784b, 0x7ee34636, 0x10d64dbd, 0x7edc9fc6, 0x11082096, + 0x7ed5e5c6, 0x1139f0cf, 0x7ecf1837, 0x116bbe60, 0x7ec8371a, 0x119d8941, 0x7ec14270, 0x11cf516a, + 0x7eba3a39, 0x120116d5, 0x7eb31e78, 0x1232d979, 0x7eabef2c, 0x1264994e, 0x7ea4ac58, 0x1296564d, + 0x7e9d55fc, 0x12c8106f, 0x7e95ec1a, 0x12f9c7aa, 0x7e8e6eb2, 0x132b7bf9, 0x7e86ddc6, 0x135d2d53, + 0x7e7f3957, 0x138edbb1, 0x7e778166, 0x13c0870a, 0x7e6fb5f4, 0x13f22f58, 0x7e67d703, 0x1423d492, + 0x7e5fe493, 0x145576b1, 0x7e57dea7, 0x148715ae, 0x7e4fc53e, 0x14b8b17f, 0x7e47985b, 0x14ea4a1f, + 0x7e3f57ff, 0x151bdf86, 0x7e37042a, 0x154d71aa, 0x7e2e9cdf, 0x157f0086, 0x7e26221f, 0x15b08c12, + 0x7e1d93ea, 0x15e21445, 0x7e14f242, 0x16139918, 0x7e0c3d29, 0x16451a83, 0x7e0374a0, 0x1676987f, + 0x7dfa98a8, 0x16a81305, 0x7df1a942, 0x16d98a0c, 0x7de8a670, 0x170afd8d, 0x7ddf9034, 0x173c6d80, + 0x7dd6668f, 0x176dd9de, 0x7dcd2981, 0x179f429f, 0x7dc3d90d, 0x17d0a7bc, 0x7dba7534, 0x1802092c, + 0x7db0fdf8, 0x183366e9, 0x7da77359, 0x1864c0ea, 0x7d9dd55a, 0x18961728, 0x7d9423fc, 0x18c7699b, + 0x7d8a5f40, 0x18f8b83c, 0x7d808728, 0x192a0304, 0x7d769bb5, 0x195b49ea, 0x7d6c9ce9, 0x198c8ce7, + 0x7d628ac6, 0x19bdcbf3, 0x7d58654d, 0x19ef0707, 0x7d4e2c7f, 0x1a203e1b, 0x7d43e05e, 0x1a517128, + 0x7d3980ec, 0x1a82a026, 0x7d2f0e2b, 0x1ab3cb0d, 0x7d24881b, 0x1ae4f1d6, 0x7d19eebf, 0x1b161479, + 0x7d0f4218, 0x1b4732ef, 0x7d048228, 0x1b784d30, 0x7cf9aef0, 0x1ba96335, 0x7ceec873, 0x1bda74f6, + 0x7ce3ceb2, 0x1c0b826a, 0x7cd8c1ae, 0x1c3c8b8c, 0x7ccda169, 0x1c6d9053, 0x7cc26de5, 0x1c9e90b8, + 0x7cb72724, 0x1ccf8cb3, 0x7cabcd28, 0x1d00843d, 0x7ca05ff1, 0x1d31774d, 0x7c94df83, 0x1d6265dd, + 0x7c894bde, 0x1d934fe5, 0x7c7da505, 0x1dc4355e, 0x7c71eaf9, 0x1df5163f, 0x7c661dbc, 0x1e25f282, + 0x7c5a3d50, 0x1e56ca1e, 0x7c4e49b7, 0x1e879d0d, 0x7c4242f2, 0x1eb86b46, 0x7c362904, 0x1ee934c3, + 0x7c29fbee, 0x1f19f97b, 0x7c1dbbb3, 0x1f4ab968, 0x7c116853, 0x1f7b7481, 0x7c0501d2, 0x1fac2abf, + 0x7bf88830, 0x1fdcdc1b, 0x7bebfb70, 0x200d888d, 0x7bdf5b94, 0x203e300d, 0x7bd2a89e, 0x206ed295, + 0x7bc5e290, 0x209f701c, 0x7bb9096b, 0x20d0089c, 0x7bac1d31, 0x21009c0c, 0x7b9f1de6, 0x21312a65, + 0x7b920b89, 0x2161b3a0, 0x7b84e61f, 0x219237b5, 0x7b77ada8, 0x21c2b69c, 0x7b6a6227, 0x21f3304f, + 0x7b5d039e, 0x2223a4c5, 0x7b4f920e, 0x225413f8, 0x7b420d7a, 0x22847de0, 0x7b3475e5, 0x22b4e274, + 0x7b26cb4f, 0x22e541af, 0x7b190dbc, 0x23159b88, 0x7b0b3d2c, 0x2345eff8, 0x7afd59a4, 0x23763ef7, + 0x7aef6323, 0x23a6887f, 0x7ae159ae, 0x23d6cc87, 0x7ad33d45, 0x24070b08, 0x7ac50dec, 0x243743fa, + 0x7ab6cba4, 0x24677758, 0x7aa8766f, 0x2497a517, 0x7a9a0e50, 0x24c7cd33, 0x7a8b9348, 0x24f7efa2, + 0x7a7d055b, 0x25280c5e, 0x7a6e648a, 0x2558235f, 0x7a5fb0d8, 0x2588349d, 0x7a50ea47, 0x25b84012, + 0x7a4210d8, 0x25e845b6, 0x7a332490, 0x26184581, 0x7a24256f, 0x26483f6c, 0x7a151378, 0x26783370, + 0x7a05eead, 0x26a82186, 0x79f6b711, 0x26d809a5, 0x79e76ca7, 0x2707ebc7, 0x79d80f6f, 0x2737c7e3, + 0x79c89f6e, 0x27679df4, 0x79b91ca4, 0x27976df1, 0x79a98715, 0x27c737d3, 0x7999dec4, 0x27f6fb92, + 0x798a23b1, 0x2826b928, 0x797a55e0, 0x2856708d, 0x796a7554, 0x288621b9, 0x795a820e, 0x28b5cca5, + 0x794a7c12, 0x28e5714b, 0x793a6361, 0x29150fa1, 0x792a37fe, 0x2944a7a2, 0x7919f9ec, 0x29743946, + 0x7909a92d, 0x29a3c485, 0x78f945c3, 0x29d34958, 0x78e8cfb2, 0x2a02c7b8, 0x78d846fb, 0x2a323f9e, + 0x78c7aba2, 0x2a61b101, 0x78b6fda8, 0x2a911bdc, 0x78a63d11, 0x2ac08026, 0x789569df, 0x2aefddd8, + 0x78848414, 0x2b1f34eb, 0x78738bb3, 0x2b4e8558, 0x786280bf, 0x2b7dcf17, 0x7851633b, 0x2bad1221, + 0x78403329, 0x2bdc4e6f, 0x782ef08b, 0x2c0b83fa, 0x781d9b65, 0x2c3ab2b9, 0x780c33b8, 0x2c69daa6, + 0x77fab989, 0x2c98fbba, 0x77e92cd9, 0x2cc815ee, 0x77d78daa, 0x2cf72939, 0x77c5dc01, 0x2d263596, + 0x77b417df, 0x2d553afc, 0x77a24148, 0x2d843964, 0x7790583e, 0x2db330c7, 0x777e5cc3, 0x2de2211e, + 0x776c4edb, 0x2e110a62, 0x775a2e89, 0x2e3fec8b, 0x7747fbce, 0x2e6ec792, 0x7735b6af, 0x2e9d9b70, + 0x77235f2d, 0x2ecc681e, 0x7710f54c, 0x2efb2d95, 0x76fe790e, 0x2f29ebcc, 0x76ebea77, 0x2f58a2be, + 0x76d94989, 0x2f875262, 0x76c69647, 0x2fb5fab2, 0x76b3d0b4, 0x2fe49ba7, 0x76a0f8d2, 0x30133539, + 0x768e0ea6, 0x3041c761, 0x767b1231, 0x30705217, 0x76680376, 0x309ed556, 0x7654e279, 0x30cd5115, + 0x7641af3d, 0x30fbc54d, 0x762e69c4, 0x312a31f8, 0x761b1211, 0x3158970e, 0x7607a828, 0x3186f487, + 0x75f42c0b, 0x31b54a5e, 0x75e09dbd, 0x31e39889, 0x75ccfd42, 0x3211df04, 0x75b94a9c, 0x32401dc6, + 0x75a585cf, 0x326e54c7, 0x7591aedd, 0x329c8402, 0x757dc5ca, 0x32caab6f, 0x7569ca99, 0x32f8cb07, + 0x7555bd4c, 0x3326e2c3, 0x75419de7, 0x3354f29b, 0x752d6c6c, 0x3382fa88, 0x751928e0, 0x33b0fa84, + 0x7504d345, 0x33def287, 0x74f06b9e, 0x340ce28b, 0x74dbf1ef, 0x343aca87, 0x74c7663a, 0x3468aa76, + 0x74b2c884, 0x34968250, 0x749e18cd, 0x34c4520d, 0x7489571c, 0x34f219a8, 0x74748371, 0x351fd918, + 0x745f9dd1, 0x354d9057, 0x744aa63f, 0x357b3f5d, 0x74359cbd, 0x35a8e625, 0x74208150, 0x35d684a6, + 0x740b53fb, 0x36041ad9, 0x73f614c0, 0x3631a8b8, 0x73e0c3a3, 0x365f2e3b, 0x73cb60a8, 0x368cab5c, + 0x73b5ebd1, 0x36ba2014, 0x73a06522, 0x36e78c5b, 0x738acc9e, 0x3714f02a, 0x73752249, 0x37424b7b, + 0x735f6626, 0x376f9e46, 0x73499838, 0x379ce885, 0x7333b883, 0x37ca2a30, 0x731dc70a, 0x37f76341, + 0x7307c3d0, 0x382493b0, 0x72f1aed9, 0x3851bb77, 0x72db8828, 0x387eda8e, 0x72c54fc1, 0x38abf0ef, + 0x72af05a7, 0x38d8fe93, 0x7298a9dd, 0x39060373, 0x72823c67, 0x3932ff87, 0x726bbd48, 0x395ff2c9, + 0x72552c85, 0x398cdd32, 0x723e8a20, 0x39b9bebc, 0x7227d61c, 0x39e6975e, 0x7211107e, 0x3a136712, + 0x71fa3949, 0x3a402dd2, 0x71e35080, 0x3a6ceb96, 0x71cc5626, 0x3a99a057, 0x71b54a41, 0x3ac64c0f, + 0x719e2cd2, 0x3af2eeb7, 0x7186fdde, 0x3b1f8848, 0x716fbd68, 0x3b4c18ba, 0x71586b74, 0x3b78a007, + 0x71410805, 0x3ba51e29, 0x7129931f, 0x3bd19318, 0x71120cc5, 0x3bfdfecd, 0x70fa74fc, 0x3c2a6142, + 0x70e2cbc6, 0x3c56ba70, 0x70cb1128, 0x3c830a50, 0x70b34525, 0x3caf50da, 0x709b67c0, 0x3cdb8e09, + 0x708378ff, 0x3d07c1d6, 0x706b78e3, 0x3d33ec39, 0x70536771, 0x3d600d2c, 0x703b44ad, 0x3d8c24a8, + 0x7023109a, 0x3db832a6, 0x700acb3c, 0x3de4371f, 0x6ff27497, 0x3e10320d, 0x6fda0cae, 0x3e3c2369, + 0x6fc19385, 0x3e680b2c, 0x6fa90921, 0x3e93e950, 0x6f906d84, 0x3ebfbdcd, 0x6f77c0b3, 0x3eeb889c, + 0x6f5f02b2, 0x3f1749b8, 0x6f463383, 0x3f430119, 0x6f2d532c, 0x3f6eaeb8, 0x6f1461b0, 0x3f9a5290, + 0x6efb5f12, 0x3fc5ec98, 0x6ee24b57, 0x3ff17cca, 0x6ec92683, 0x401d0321, 0x6eaff099, 0x40487f94, + 0x6e96a99d, 0x4073f21d, 0x6e7d5193, 0x409f5ab6, 0x6e63e87f, 0x40cab958, 0x6e4a6e66, 0x40f60dfb, + 0x6e30e34a, 0x4121589b, 0x6e174730, 0x414c992f, 0x6dfd9a1c, 0x4177cfb1, 0x6de3dc11, 0x41a2fc1a, + 0x6dca0d14, 0x41ce1e65, 0x6db02d29, 0x41f93689, 0x6d963c54, 0x42244481, 0x6d7c3a98, 0x424f4845, + 0x6d6227fa, 0x427a41d0, 0x6d48047e, 0x42a5311b, 0x6d2dd027, 0x42d0161e, 0x6d138afb, 0x42faf0d4, + 0x6cf934fc, 0x4325c135, 0x6cdece2f, 0x4350873c, 0x6cc45698, 0x437b42e1, 0x6ca9ce3b, 0x43a5f41e, + 0x6c8f351c, 0x43d09aed, 0x6c748b3f, 0x43fb3746, 0x6c59d0a9, 0x4425c923, 0x6c3f055d, 0x4450507e, + 0x6c242960, 0x447acd50, 0x6c093cb6, 0x44a53f93, 0x6bee3f62, 0x44cfa740, 0x6bd3316a, 0x44fa0450, + 0x6bb812d1, 0x452456bd, 0x6b9ce39b, 0x454e9e80, 0x6b81a3cd, 0x4578db93, 0x6b66536b, 0x45a30df0, + 0x6b4af279, 0x45cd358f, 0x6b2f80fb, 0x45f7526b, 0x6b13fef5, 0x4621647d, 0x6af86c6c, 0x464b6bbe, + 0x6adcc964, 0x46756828, 0x6ac115e2, 0x469f59b4, 0x6aa551e9, 0x46c9405c, 0x6a897d7d, 0x46f31c1a, + 0x6a6d98a4, 0x471cece7, 0x6a51a361, 0x4746b2bc, 0x6a359db9, 0x47706d93, 0x6a1987b0, 0x479a1d67, + 0x69fd614a, 0x47c3c22f, 0x69e12a8c, 0x47ed5be6, 0x69c4e37a, 0x4816ea86, 0x69a88c19, 0x48406e08, + 0x698c246c, 0x4869e665, 0x696fac78, 0x48935397, 0x69532442, 0x48bcb599, 0x69368bce, 0x48e60c62, + 0x6919e320, 0x490f57ee, 0x68fd2a3d, 0x49389836, 0x68e06129, 0x4961cd33, 0x68c387e9, 0x498af6df, + 0x68a69e81, 0x49b41533, 0x6889a4f6, 0x49dd282a, 0x686c9b4b, 0x4a062fbd, 0x684f8186, 0x4a2f2be6, + 0x683257ab, 0x4a581c9e, 0x68151dbe, 0x4a8101de, 0x67f7d3c5, 0x4aa9dba2, 0x67da79c3, 0x4ad2a9e2, + 0x67bd0fbd, 0x4afb6c98, 0x679f95b7, 0x4b2423be, 0x67820bb7, 0x4b4ccf4d, 0x676471c0, 0x4b756f40, + 0x6746c7d8, 0x4b9e0390, 0x67290e02, 0x4bc68c36, 0x670b4444, 0x4bef092d, 0x66ed6aa1, 0x4c177a6e, + 0x66cf8120, 0x4c3fdff4, 0x66b187c3, 0x4c6839b7, 0x66937e91, 0x4c9087b1, 0x6675658c, 0x4cb8c9dd, + 0x66573cbb, 0x4ce10034, 0x66390422, 0x4d092ab0, 0x661abbc5, 0x4d31494b, 0x65fc63a9, 0x4d595bfe, + 0x65ddfbd3, 0x4d8162c4, 0x65bf8447, 0x4da95d96, 0x65a0fd0b, 0x4dd14c6e, 0x65826622, 0x4df92f46, + 0x6563bf92, 0x4e210617, 0x6545095f, 0x4e48d0dd, 0x6526438f, 0x4e708f8f, 0x65076e25, 0x4e984229, + 0x64e88926, 0x4ebfe8a5, 0x64c99498, 0x4ee782fb, 0x64aa907f, 0x4f0f1126, 0x648b7ce0, 0x4f369320, + 0x646c59bf, 0x4f5e08e3, 0x644d2722, 0x4f857269, 0x642de50d, 0x4faccfab, 0x640e9386, 0x4fd420a4, + 0x63ef3290, 0x4ffb654d, 0x63cfc231, 0x50229da1, 0x63b0426d, 0x5049c999, 0x6390b34a, 0x5070e92f, + 0x637114cc, 0x5097fc5e, 0x635166f9, 0x50bf031f, 0x6331a9d4, 0x50e5fd6d, 0x6311dd64, 0x510ceb40, + 0x62f201ac, 0x5133cc94, 0x62d216b3, 0x515aa162, 0x62b21c7b, 0x518169a5, 0x6292130c, 0x51a82555, + 0x6271fa69, 0x51ced46e, 0x6251d298, 0x51f576ea, 0x62319b9d, 0x521c0cc2, 0x6211557e, 0x524295f0, + 0x61f1003f, 0x5269126e, 0x61d09be5, 0x528f8238, 0x61b02876, 0x52b5e546, 0x618fa5f7, 0x52dc3b92, + 0x616f146c, 0x53028518, 0x614e73da, 0x5328c1d0, 0x612dc447, 0x534ef1b5, 0x610d05b7, 0x537514c2, + 0x60ec3830, 0x539b2af0, 0x60cb5bb7, 0x53c13439, 0x60aa7050, 0x53e73097, 0x60897601, 0x540d2005, + 0x60686ccf, 0x5433027d, 0x604754bf, 0x5458d7f9, 0x60262dd6, 0x547ea073, 0x6004f819, 0x54a45be6, + 0x5fe3b38d, 0x54ca0a4b, 0x5fc26038, 0x54efab9c, 0x5fa0fe1f, 0x55153fd4, 0x5f7f8d46, 0x553ac6ee, + 0x5f5e0db3, 0x556040e2, 0x5f3c7f6b, 0x5585adad, 0x5f1ae274, 0x55ab0d46, 0x5ef936d1, 0x55d05faa, + 0x5ed77c8a, 0x55f5a4d2, 0x5eb5b3a2, 0x561adcb9, 0x5e93dc1f, 0x56400758, 0x5e71f606, 0x566524aa, + 0x5e50015d, 0x568a34a9, 0x5e2dfe29, 0x56af3750, 0x5e0bec6e, 0x56d42c99, 0x5de9cc33, 0x56f9147e, + 0x5dc79d7c, 0x571deefa, 0x5da5604f, 0x5742bc06, 0x5d8314b1, 0x57677b9d, 0x5d60baa7, 0x578c2dba, + 0x5d3e5237, 0x57b0d256, 0x5d1bdb65, 0x57d5696d, 0x5cf95638, 0x57f9f2f8, 0x5cd6c2b5, 0x581e6ef1, + 0x5cb420e0, 0x5842dd54, 0x5c9170bf, 0x58673e1b, 0x5c6eb258, 0x588b9140, 0x5c4be5b0, 0x58afd6bd, + 0x5c290acc, 0x58d40e8c, 0x5c0621b2, 0x58f838a9, 0x5be32a67, 0x591c550e, 0x5bc024f0, 0x594063b5, + 0x5b9d1154, 0x59646498, 0x5b79ef96, 0x598857b2, 0x5b56bfbd, 0x59ac3cfd, 0x5b3381ce, 0x59d01475, + 0x5b1035cf, 0x59f3de12, 0x5aecdbc5, 0x5a1799d1, 0x5ac973b5, 0x5a3b47ab, 0x5aa5fda5, 0x5a5ee79a, + 0x5a82799a, 0x5a82799a, 0x5a5ee79a, 0x5aa5fda5, 0x5a3b47ab, 0x5ac973b5, 0x5a1799d1, 0x5aecdbc5, + 0x59f3de12, 0x5b1035cf, 0x59d01475, 0x5b3381ce, 0x59ac3cfd, 0x5b56bfbd, 0x598857b2, 0x5b79ef96, + 0x59646498, 0x5b9d1154, 0x594063b5, 0x5bc024f0, 0x591c550e, 0x5be32a67, 0x58f838a9, 0x5c0621b2, + 0x58d40e8c, 0x5c290acc, 0x58afd6bd, 0x5c4be5b0, 0x588b9140, 0x5c6eb258, 0x58673e1b, 0x5c9170bf, + 0x5842dd54, 0x5cb420e0, 0x581e6ef1, 0x5cd6c2b5, 0x57f9f2f8, 0x5cf95638, 0x57d5696d, 0x5d1bdb65, + 0x57b0d256, 0x5d3e5237, 0x578c2dba, 0x5d60baa7, 0x57677b9d, 0x5d8314b1, 0x5742bc06, 0x5da5604f, + 0x571deefa, 0x5dc79d7c, 0x56f9147e, 0x5de9cc33, 0x56d42c99, 0x5e0bec6e, 0x56af3750, 0x5e2dfe29, + 0x568a34a9, 0x5e50015d, 0x566524aa, 0x5e71f606, 0x56400758, 0x5e93dc1f, 0x561adcb9, 0x5eb5b3a2, + 0x55f5a4d2, 0x5ed77c8a, 0x55d05faa, 0x5ef936d1, 0x55ab0d46, 0x5f1ae274, 0x5585adad, 0x5f3c7f6b, + 0x556040e2, 0x5f5e0db3, 0x553ac6ee, 0x5f7f8d46, 0x55153fd4, 0x5fa0fe1f, 0x54efab9c, 0x5fc26038, + 0x54ca0a4b, 0x5fe3b38d, 0x54a45be6, 0x6004f819, 0x547ea073, 0x60262dd6, 0x5458d7f9, 0x604754bf, + 0x5433027d, 0x60686ccf, 0x540d2005, 0x60897601, 0x53e73097, 0x60aa7050, 0x53c13439, 0x60cb5bb7, + 0x539b2af0, 0x60ec3830, 0x537514c2, 0x610d05b7, 0x534ef1b5, 0x612dc447, 0x5328c1d0, 0x614e73da, + 0x53028518, 0x616f146c, 0x52dc3b92, 0x618fa5f7, 0x52b5e546, 0x61b02876, 0x528f8238, 0x61d09be5, + 0x5269126e, 0x61f1003f, 0x524295f0, 0x6211557e, 0x521c0cc2, 0x62319b9d, 0x51f576ea, 0x6251d298, + 0x51ced46e, 0x6271fa69, 0x51a82555, 0x6292130c, 0x518169a5, 0x62b21c7b, 0x515aa162, 0x62d216b3, + 0x5133cc94, 0x62f201ac, 0x510ceb40, 0x6311dd64, 0x50e5fd6d, 0x6331a9d4, 0x50bf031f, 0x635166f9, + 0x5097fc5e, 0x637114cc, 0x5070e92f, 0x6390b34a, 0x5049c999, 0x63b0426d, 0x50229da1, 0x63cfc231, + 0x4ffb654d, 0x63ef3290, 0x4fd420a4, 0x640e9386, 0x4faccfab, 0x642de50d, 0x4f857269, 0x644d2722, + 0x4f5e08e3, 0x646c59bf, 0x4f369320, 0x648b7ce0, 0x4f0f1126, 0x64aa907f, 0x4ee782fb, 0x64c99498, + 0x4ebfe8a5, 0x64e88926, 0x4e984229, 0x65076e25, 0x4e708f8f, 0x6526438f, 0x4e48d0dd, 0x6545095f, + 0x4e210617, 0x6563bf92, 0x4df92f46, 0x65826622, 0x4dd14c6e, 0x65a0fd0b, 0x4da95d96, 0x65bf8447, + 0x4d8162c4, 0x65ddfbd3, 0x4d595bfe, 0x65fc63a9, 0x4d31494b, 0x661abbc5, 0x4d092ab0, 0x66390422, + 0x4ce10034, 0x66573cbb, 0x4cb8c9dd, 0x6675658c, 0x4c9087b1, 0x66937e91, 0x4c6839b7, 0x66b187c3, + 0x4c3fdff4, 0x66cf8120, 0x4c177a6e, 0x66ed6aa1, 0x4bef092d, 0x670b4444, 0x4bc68c36, 0x67290e02, + 0x4b9e0390, 0x6746c7d8, 0x4b756f40, 0x676471c0, 0x4b4ccf4d, 0x67820bb7, 0x4b2423be, 0x679f95b7, + 0x4afb6c98, 0x67bd0fbd, 0x4ad2a9e2, 0x67da79c3, 0x4aa9dba2, 0x67f7d3c5, 0x4a8101de, 0x68151dbe, + 0x4a581c9e, 0x683257ab, 0x4a2f2be6, 0x684f8186, 0x4a062fbd, 0x686c9b4b, 0x49dd282a, 0x6889a4f6, + 0x49b41533, 0x68a69e81, 0x498af6df, 0x68c387e9, 0x4961cd33, 0x68e06129, 0x49389836, 0x68fd2a3d, + 0x490f57ee, 0x6919e320, 0x48e60c62, 0x69368bce, 0x48bcb599, 0x69532442, 0x48935397, 0x696fac78, + 0x4869e665, 0x698c246c, 0x48406e08, 0x69a88c19, 0x4816ea86, 0x69c4e37a, 0x47ed5be6, 0x69e12a8c, + 0x47c3c22f, 0x69fd614a, 0x479a1d67, 0x6a1987b0, 0x47706d93, 0x6a359db9, 0x4746b2bc, 0x6a51a361, + 0x471cece7, 0x6a6d98a4, 0x46f31c1a, 0x6a897d7d, 0x46c9405c, 0x6aa551e9, 0x469f59b4, 0x6ac115e2, + 0x46756828, 0x6adcc964, 0x464b6bbe, 0x6af86c6c, 0x4621647d, 0x6b13fef5, 0x45f7526b, 0x6b2f80fb, + 0x45cd358f, 0x6b4af279, 0x45a30df0, 0x6b66536b, 0x4578db93, 0x6b81a3cd, 0x454e9e80, 0x6b9ce39b, + 0x452456bd, 0x6bb812d1, 0x44fa0450, 0x6bd3316a, 0x44cfa740, 0x6bee3f62, 0x44a53f93, 0x6c093cb6, + 0x447acd50, 0x6c242960, 0x4450507e, 0x6c3f055d, 0x4425c923, 0x6c59d0a9, 0x43fb3746, 0x6c748b3f, + 0x43d09aed, 0x6c8f351c, 0x43a5f41e, 0x6ca9ce3b, 0x437b42e1, 0x6cc45698, 0x4350873c, 0x6cdece2f, + 0x4325c135, 0x6cf934fc, 0x42faf0d4, 0x6d138afb, 0x42d0161e, 0x6d2dd027, 0x42a5311b, 0x6d48047e, + 0x427a41d0, 0x6d6227fa, 0x424f4845, 0x6d7c3a98, 0x42244481, 0x6d963c54, 0x41f93689, 0x6db02d29, + 0x41ce1e65, 0x6dca0d14, 0x41a2fc1a, 0x6de3dc11, 0x4177cfb1, 0x6dfd9a1c, 0x414c992f, 0x6e174730, + 0x4121589b, 0x6e30e34a, 0x40f60dfb, 0x6e4a6e66, 0x40cab958, 0x6e63e87f, 0x409f5ab6, 0x6e7d5193, + 0x4073f21d, 0x6e96a99d, 0x40487f94, 0x6eaff099, 0x401d0321, 0x6ec92683, 0x3ff17cca, 0x6ee24b57, + 0x3fc5ec98, 0x6efb5f12, 0x3f9a5290, 0x6f1461b0, 0x3f6eaeb8, 0x6f2d532c, 0x3f430119, 0x6f463383, + 0x3f1749b8, 0x6f5f02b2, 0x3eeb889c, 0x6f77c0b3, 0x3ebfbdcd, 0x6f906d84, 0x3e93e950, 0x6fa90921, + 0x3e680b2c, 0x6fc19385, 0x3e3c2369, 0x6fda0cae, 0x3e10320d, 0x6ff27497, 0x3de4371f, 0x700acb3c, + 0x3db832a6, 0x7023109a, 0x3d8c24a8, 0x703b44ad, 0x3d600d2c, 0x70536771, 0x3d33ec39, 0x706b78e3, + 0x3d07c1d6, 0x708378ff, 0x3cdb8e09, 0x709b67c0, 0x3caf50da, 0x70b34525, 0x3c830a50, 0x70cb1128, + 0x3c56ba70, 0x70e2cbc6, 0x3c2a6142, 0x70fa74fc, 0x3bfdfecd, 0x71120cc5, 0x3bd19318, 0x7129931f, + 0x3ba51e29, 0x71410805, 0x3b78a007, 0x71586b74, 0x3b4c18ba, 0x716fbd68, 0x3b1f8848, 0x7186fdde, + 0x3af2eeb7, 0x719e2cd2, 0x3ac64c0f, 0x71b54a41, 0x3a99a057, 0x71cc5626, 0x3a6ceb96, 0x71e35080, + 0x3a402dd2, 0x71fa3949, 0x3a136712, 0x7211107e, 0x39e6975e, 0x7227d61c, 0x39b9bebc, 0x723e8a20, + 0x398cdd32, 0x72552c85, 0x395ff2c9, 0x726bbd48, 0x3932ff87, 0x72823c67, 0x39060373, 0x7298a9dd, + 0x38d8fe93, 0x72af05a7, 0x38abf0ef, 0x72c54fc1, 0x387eda8e, 0x72db8828, 0x3851bb77, 0x72f1aed9, + 0x382493b0, 0x7307c3d0, 0x37f76341, 0x731dc70a, 0x37ca2a30, 0x7333b883, 0x379ce885, 0x73499838, + 0x376f9e46, 0x735f6626, 0x37424b7b, 0x73752249, 0x3714f02a, 0x738acc9e, 0x36e78c5b, 0x73a06522, + 0x36ba2014, 0x73b5ebd1, 0x368cab5c, 0x73cb60a8, 0x365f2e3b, 0x73e0c3a3, 0x3631a8b8, 0x73f614c0, + 0x36041ad9, 0x740b53fb, 0x35d684a6, 0x74208150, 0x35a8e625, 0x74359cbd, 0x357b3f5d, 0x744aa63f, + 0x354d9057, 0x745f9dd1, 0x351fd918, 0x74748371, 0x34f219a8, 0x7489571c, 0x34c4520d, 0x749e18cd, + 0x34968250, 0x74b2c884, 0x3468aa76, 0x74c7663a, 0x343aca87, 0x74dbf1ef, 0x340ce28b, 0x74f06b9e, + 0x33def287, 0x7504d345, 0x33b0fa84, 0x751928e0, 0x3382fa88, 0x752d6c6c, 0x3354f29b, 0x75419de7, + 0x3326e2c3, 0x7555bd4c, 0x32f8cb07, 0x7569ca99, 0x32caab6f, 0x757dc5ca, 0x329c8402, 0x7591aedd, + 0x326e54c7, 0x75a585cf, 0x32401dc6, 0x75b94a9c, 0x3211df04, 0x75ccfd42, 0x31e39889, 0x75e09dbd, + 0x31b54a5e, 0x75f42c0b, 0x3186f487, 0x7607a828, 0x3158970e, 0x761b1211, 0x312a31f8, 0x762e69c4, + 0x30fbc54d, 0x7641af3d, 0x30cd5115, 0x7654e279, 0x309ed556, 0x76680376, 0x30705217, 0x767b1231, + 0x3041c761, 0x768e0ea6, 0x30133539, 0x76a0f8d2, 0x2fe49ba7, 0x76b3d0b4, 0x2fb5fab2, 0x76c69647, + 0x2f875262, 0x76d94989, 0x2f58a2be, 0x76ebea77, 0x2f29ebcc, 0x76fe790e, 0x2efb2d95, 0x7710f54c, + 0x2ecc681e, 0x77235f2d, 0x2e9d9b70, 0x7735b6af, 0x2e6ec792, 0x7747fbce, 0x2e3fec8b, 0x775a2e89, + 0x2e110a62, 0x776c4edb, 0x2de2211e, 0x777e5cc3, 0x2db330c7, 0x7790583e, 0x2d843964, 0x77a24148, + 0x2d553afc, 0x77b417df, 0x2d263596, 0x77c5dc01, 0x2cf72939, 0x77d78daa, 0x2cc815ee, 0x77e92cd9, + 0x2c98fbba, 0x77fab989, 0x2c69daa6, 0x780c33b8, 0x2c3ab2b9, 0x781d9b65, 0x2c0b83fa, 0x782ef08b, + 0x2bdc4e6f, 0x78403329, 0x2bad1221, 0x7851633b, 0x2b7dcf17, 0x786280bf, 0x2b4e8558, 0x78738bb3, + 0x2b1f34eb, 0x78848414, 0x2aefddd8, 0x789569df, 0x2ac08026, 0x78a63d11, 0x2a911bdc, 0x78b6fda8, + 0x2a61b101, 0x78c7aba2, 0x2a323f9e, 0x78d846fb, 0x2a02c7b8, 0x78e8cfb2, 0x29d34958, 0x78f945c3, + 0x29a3c485, 0x7909a92d, 0x29743946, 0x7919f9ec, 0x2944a7a2, 0x792a37fe, 0x29150fa1, 0x793a6361, + 0x28e5714b, 0x794a7c12, 0x28b5cca5, 0x795a820e, 0x288621b9, 0x796a7554, 0x2856708d, 0x797a55e0, + 0x2826b928, 0x798a23b1, 0x27f6fb92, 0x7999dec4, 0x27c737d3, 0x79a98715, 0x27976df1, 0x79b91ca4, + 0x27679df4, 0x79c89f6e, 0x2737c7e3, 0x79d80f6f, 0x2707ebc7, 0x79e76ca7, 0x26d809a5, 0x79f6b711, + 0x26a82186, 0x7a05eead, 0x26783370, 0x7a151378, 0x26483f6c, 0x7a24256f, 0x26184581, 0x7a332490, + 0x25e845b6, 0x7a4210d8, 0x25b84012, 0x7a50ea47, 0x2588349d, 0x7a5fb0d8, 0x2558235f, 0x7a6e648a, + 0x25280c5e, 0x7a7d055b, 0x24f7efa2, 0x7a8b9348, 0x24c7cd33, 0x7a9a0e50, 0x2497a517, 0x7aa8766f, + 0x24677758, 0x7ab6cba4, 0x243743fa, 0x7ac50dec, 0x24070b08, 0x7ad33d45, 0x23d6cc87, 0x7ae159ae, + 0x23a6887f, 0x7aef6323, 0x23763ef7, 0x7afd59a4, 0x2345eff8, 0x7b0b3d2c, 0x23159b88, 0x7b190dbc, + 0x22e541af, 0x7b26cb4f, 0x22b4e274, 0x7b3475e5, 0x22847de0, 0x7b420d7a, 0x225413f8, 0x7b4f920e, + 0x2223a4c5, 0x7b5d039e, 0x21f3304f, 0x7b6a6227, 0x21c2b69c, 0x7b77ada8, 0x219237b5, 0x7b84e61f, + 0x2161b3a0, 0x7b920b89, 0x21312a65, 0x7b9f1de6, 0x21009c0c, 0x7bac1d31, 0x20d0089c, 0x7bb9096b, + 0x209f701c, 0x7bc5e290, 0x206ed295, 0x7bd2a89e, 0x203e300d, 0x7bdf5b94, 0x200d888d, 0x7bebfb70, + 0x1fdcdc1b, 0x7bf88830, 0x1fac2abf, 0x7c0501d2, 0x1f7b7481, 0x7c116853, 0x1f4ab968, 0x7c1dbbb3, + 0x1f19f97b, 0x7c29fbee, 0x1ee934c3, 0x7c362904, 0x1eb86b46, 0x7c4242f2, 0x1e879d0d, 0x7c4e49b7, + 0x1e56ca1e, 0x7c5a3d50, 0x1e25f282, 0x7c661dbc, 0x1df5163f, 0x7c71eaf9, 0x1dc4355e, 0x7c7da505, + 0x1d934fe5, 0x7c894bde, 0x1d6265dd, 0x7c94df83, 0x1d31774d, 0x7ca05ff1, 0x1d00843d, 0x7cabcd28, + 0x1ccf8cb3, 0x7cb72724, 0x1c9e90b8, 0x7cc26de5, 0x1c6d9053, 0x7ccda169, 0x1c3c8b8c, 0x7cd8c1ae, + 0x1c0b826a, 0x7ce3ceb2, 0x1bda74f6, 0x7ceec873, 0x1ba96335, 0x7cf9aef0, 0x1b784d30, 0x7d048228, + 0x1b4732ef, 0x7d0f4218, 0x1b161479, 0x7d19eebf, 0x1ae4f1d6, 0x7d24881b, 0x1ab3cb0d, 0x7d2f0e2b, + 0x1a82a026, 0x7d3980ec, 0x1a517128, 0x7d43e05e, 0x1a203e1b, 0x7d4e2c7f, 0x19ef0707, 0x7d58654d, + 0x19bdcbf3, 0x7d628ac6, 0x198c8ce7, 0x7d6c9ce9, 0x195b49ea, 0x7d769bb5, 0x192a0304, 0x7d808728, + 0x18f8b83c, 0x7d8a5f40, 0x18c7699b, 0x7d9423fc, 0x18961728, 0x7d9dd55a, 0x1864c0ea, 0x7da77359, + 0x183366e9, 0x7db0fdf8, 0x1802092c, 0x7dba7534, 0x17d0a7bc, 0x7dc3d90d, 0x179f429f, 0x7dcd2981, + 0x176dd9de, 0x7dd6668f, 0x173c6d80, 0x7ddf9034, 0x170afd8d, 0x7de8a670, 0x16d98a0c, 0x7df1a942, + 0x16a81305, 0x7dfa98a8, 0x1676987f, 0x7e0374a0, 0x16451a83, 0x7e0c3d29, 0x16139918, 0x7e14f242, + 0x15e21445, 0x7e1d93ea, 0x15b08c12, 0x7e26221f, 0x157f0086, 0x7e2e9cdf, 0x154d71aa, 0x7e37042a, + 0x151bdf86, 0x7e3f57ff, 0x14ea4a1f, 0x7e47985b, 0x14b8b17f, 0x7e4fc53e, 0x148715ae, 0x7e57dea7, + 0x145576b1, 0x7e5fe493, 0x1423d492, 0x7e67d703, 0x13f22f58, 0x7e6fb5f4, 0x13c0870a, 0x7e778166, + 0x138edbb1, 0x7e7f3957, 0x135d2d53, 0x7e86ddc6, 0x132b7bf9, 0x7e8e6eb2, 0x12f9c7aa, 0x7e95ec1a, + 0x12c8106f, 0x7e9d55fc, 0x1296564d, 0x7ea4ac58, 0x1264994e, 0x7eabef2c, 0x1232d979, 0x7eb31e78, + 0x120116d5, 0x7eba3a39, 0x11cf516a, 0x7ec14270, 0x119d8941, 0x7ec8371a, 0x116bbe60, 0x7ecf1837, + 0x1139f0cf, 0x7ed5e5c6, 0x11082096, 0x7edc9fc6, 0x10d64dbd, 0x7ee34636, 0x10a4784b, 0x7ee9d914, + 0x1072a048, 0x7ef05860, 0x1040c5bb, 0x7ef6c418, 0x100ee8ad, 0x7efd1c3c, 0xfdd0926, 0x7f0360cb, + 0xfab272b, 0x7f0991c4, 0xf7942c7, 0x7f0faf25, 0xf475bff, 0x7f15b8ee, 0xf1572dc, 0x7f1baf1e, + 0xee38766, 0x7f2191b4, 0xeb199a4, 0x7f2760af, 0xe7fa99e, 0x7f2d1c0e, 0xe4db75b, 0x7f32c3d1, + 0xe1bc2e4, 0x7f3857f6, 0xde9cc40, 0x7f3dd87c, 0xdb7d376, 0x7f434563, 0xd85d88f, 0x7f489eaa, + 0xd53db92, 0x7f4de451, 0xd21dc87, 0x7f531655, 0xcefdb76, 0x7f5834b7, 0xcbdd865, 0x7f5d3f75, + 0xc8bd35e, 0x7f62368f, 0xc59cc68, 0x7f671a05, 0xc27c389, 0x7f6be9d4, 0xbf5b8cb, 0x7f70a5fe, + 0xbc3ac35, 0x7f754e80, 0xb919dcf, 0x7f79e35a, 0xb5f8d9f, 0x7f7e648c, 0xb2d7baf, 0x7f82d214, + 0xafb6805, 0x7f872bf3, 0xac952aa, 0x7f8b7227, 0xa973ba5, 0x7f8fa4b0, 0xa6522fe, 0x7f93c38c, + 0xa3308bd, 0x7f97cebd, 0xa00ece8, 0x7f9bc640, 0x9cecf89, 0x7f9faa15, 0x99cb0a7, 0x7fa37a3c, + 0x96a9049, 0x7fa736b4, 0x9386e78, 0x7faadf7c, 0x9064b3a, 0x7fae7495, 0x8d42699, 0x7fb1f5fc, + 0x8a2009a, 0x7fb563b3, 0x86fd947, 0x7fb8bdb8, 0x83db0a7, 0x7fbc040a, 0x80b86c2, 0x7fbf36aa, + 0x7d95b9e, 0x7fc25596, 0x7a72f45, 0x7fc560cf, 0x77501be, 0x7fc85854, 0x742d311, 0x7fcb3c23, + 0x710a345, 0x7fce0c3e, 0x6de7262, 0x7fd0c8a3, 0x6ac406f, 0x7fd37153, 0x67a0d76, 0x7fd6064c, + 0x647d97c, 0x7fd8878e, 0x615a48b, 0x7fdaf519, 0x5e36ea9, 0x7fdd4eec, 0x5b137df, 0x7fdf9508, + 0x57f0035, 0x7fe1c76b, 0x54cc7b1, 0x7fe3e616, 0x51a8e5c, 0x7fe5f108, 0x4e8543e, 0x7fe7e841, + 0x4b6195d, 0x7fe9cbc0, 0x483ddc3, 0x7feb9b85, 0x451a177, 0x7fed5791, 0x41f6480, 0x7feeffe1, + 0x3ed26e6, 0x7ff09478, 0x3bae8b2, 0x7ff21553, 0x388a9ea, 0x7ff38274, 0x3566a96, 0x7ff4dbd9, + 0x3242abf, 0x7ff62182, 0x2f1ea6c, 0x7ff75370, 0x2bfa9a4, 0x7ff871a2, 0x28d6870, 0x7ff97c18, + 0x25b26d7, 0x7ffa72d1, 0x228e4e2, 0x7ffb55ce, 0x1f6a297, 0x7ffc250f, 0x1c45ffe, 0x7ffce093, + 0x1921d20, 0x7ffd885a, 0x15fda03, 0x7ffe1c65, 0x12d96b1, 0x7ffe9cb2, 0xfb5330, 0x7fff0943, + 0xc90f88, 0x7fff6216, 0x96cbc1, 0x7fffa72c, 0x6487e3, 0x7fffd886, 0x3243f5, 0x7ffff621, + 0x0, 0x7fffffff, 0xffcdbc0b, 0x7ffff621, 0xff9b781d, 0x7fffd886, 0xff69343f, 0x7fffa72c, + 0xff36f078, 0x7fff6216, 0xff04acd0, 0x7fff0943, 0xfed2694f, 0x7ffe9cb2, 0xfea025fd, 0x7ffe1c65, + 0xfe6de2e0, 0x7ffd885a, 0xfe3ba002, 0x7ffce093, 0xfe095d69, 0x7ffc250f, 0xfdd71b1e, 0x7ffb55ce, + 0xfda4d929, 0x7ffa72d1, 0xfd729790, 0x7ff97c18, 0xfd40565c, 0x7ff871a2, 0xfd0e1594, 0x7ff75370, + 0xfcdbd541, 0x7ff62182, 0xfca9956a, 0x7ff4dbd9, 0xfc775616, 0x7ff38274, 0xfc45174e, 0x7ff21553, + 0xfc12d91a, 0x7ff09478, 0xfbe09b80, 0x7feeffe1, 0xfbae5e89, 0x7fed5791, 0xfb7c223d, 0x7feb9b85, + 0xfb49e6a3, 0x7fe9cbc0, 0xfb17abc2, 0x7fe7e841, 0xfae571a4, 0x7fe5f108, 0xfab3384f, 0x7fe3e616, + 0xfa80ffcb, 0x7fe1c76b, 0xfa4ec821, 0x7fdf9508, 0xfa1c9157, 0x7fdd4eec, 0xf9ea5b75, 0x7fdaf519, + 0xf9b82684, 0x7fd8878e, 0xf985f28a, 0x7fd6064c, 0xf953bf91, 0x7fd37153, 0xf9218d9e, 0x7fd0c8a3, + 0xf8ef5cbb, 0x7fce0c3e, 0xf8bd2cef, 0x7fcb3c23, 0xf88afe42, 0x7fc85854, 0xf858d0bb, 0x7fc560cf, + 0xf826a462, 0x7fc25596, 0xf7f4793e, 0x7fbf36aa, 0xf7c24f59, 0x7fbc040a, 0xf79026b9, 0x7fb8bdb8, + 0xf75dff66, 0x7fb563b3, 0xf72bd967, 0x7fb1f5fc, 0xf6f9b4c6, 0x7fae7495, 0xf6c79188, 0x7faadf7c, + 0xf6956fb7, 0x7fa736b4, 0xf6634f59, 0x7fa37a3c, 0xf6313077, 0x7f9faa15, 0xf5ff1318, 0x7f9bc640, + 0xf5ccf743, 0x7f97cebd, 0xf59add02, 0x7f93c38c, 0xf568c45b, 0x7f8fa4b0, 0xf536ad56, 0x7f8b7227, + 0xf50497fb, 0x7f872bf3, 0xf4d28451, 0x7f82d214, 0xf4a07261, 0x7f7e648c, 0xf46e6231, 0x7f79e35a, + 0xf43c53cb, 0x7f754e80, 0xf40a4735, 0x7f70a5fe, 0xf3d83c77, 0x7f6be9d4, 0xf3a63398, 0x7f671a05, + 0xf3742ca2, 0x7f62368f, 0xf342279b, 0x7f5d3f75, 0xf310248a, 0x7f5834b7, 0xf2de2379, 0x7f531655, + 0xf2ac246e, 0x7f4de451, 0xf27a2771, 0x7f489eaa, 0xf2482c8a, 0x7f434563, 0xf21633c0, 0x7f3dd87c, + 0xf1e43d1c, 0x7f3857f6, 0xf1b248a5, 0x7f32c3d1, 0xf1805662, 0x7f2d1c0e, 0xf14e665c, 0x7f2760af, + 0xf11c789a, 0x7f2191b4, 0xf0ea8d24, 0x7f1baf1e, 0xf0b8a401, 0x7f15b8ee, 0xf086bd39, 0x7f0faf25, + 0xf054d8d5, 0x7f0991c4, 0xf022f6da, 0x7f0360cb, 0xeff11753, 0x7efd1c3c, 0xefbf3a45, 0x7ef6c418, + 0xef8d5fb8, 0x7ef05860, 0xef5b87b5, 0x7ee9d914, 0xef29b243, 0x7ee34636, 0xeef7df6a, 0x7edc9fc6, + 0xeec60f31, 0x7ed5e5c6, 0xee9441a0, 0x7ecf1837, 0xee6276bf, 0x7ec8371a, 0xee30ae96, 0x7ec14270, + 0xedfee92b, 0x7eba3a39, 0xedcd2687, 0x7eb31e78, 0xed9b66b2, 0x7eabef2c, 0xed69a9b3, 0x7ea4ac58, + 0xed37ef91, 0x7e9d55fc, 0xed063856, 0x7e95ec1a, 0xecd48407, 0x7e8e6eb2, 0xeca2d2ad, 0x7e86ddc6, + 0xec71244f, 0x7e7f3957, 0xec3f78f6, 0x7e778166, 0xec0dd0a8, 0x7e6fb5f4, 0xebdc2b6e, 0x7e67d703, + 0xebaa894f, 0x7e5fe493, 0xeb78ea52, 0x7e57dea7, 0xeb474e81, 0x7e4fc53e, 0xeb15b5e1, 0x7e47985b, + 0xeae4207a, 0x7e3f57ff, 0xeab28e56, 0x7e37042a, 0xea80ff7a, 0x7e2e9cdf, 0xea4f73ee, 0x7e26221f, + 0xea1debbb, 0x7e1d93ea, 0xe9ec66e8, 0x7e14f242, 0xe9bae57d, 0x7e0c3d29, 0xe9896781, 0x7e0374a0, + 0xe957ecfb, 0x7dfa98a8, 0xe92675f4, 0x7df1a942, 0xe8f50273, 0x7de8a670, 0xe8c39280, 0x7ddf9034, + 0xe8922622, 0x7dd6668f, 0xe860bd61, 0x7dcd2981, 0xe82f5844, 0x7dc3d90d, 0xe7fdf6d4, 0x7dba7534, + 0xe7cc9917, 0x7db0fdf8, 0xe79b3f16, 0x7da77359, 0xe769e8d8, 0x7d9dd55a, 0xe7389665, 0x7d9423fc, + 0xe70747c4, 0x7d8a5f40, 0xe6d5fcfc, 0x7d808728, 0xe6a4b616, 0x7d769bb5, 0xe6737319, 0x7d6c9ce9, + 0xe642340d, 0x7d628ac6, 0xe610f8f9, 0x7d58654d, 0xe5dfc1e5, 0x7d4e2c7f, 0xe5ae8ed8, 0x7d43e05e, + 0xe57d5fda, 0x7d3980ec, 0xe54c34f3, 0x7d2f0e2b, 0xe51b0e2a, 0x7d24881b, 0xe4e9eb87, 0x7d19eebf, + 0xe4b8cd11, 0x7d0f4218, 0xe487b2d0, 0x7d048228, 0xe4569ccb, 0x7cf9aef0, 0xe4258b0a, 0x7ceec873, + 0xe3f47d96, 0x7ce3ceb2, 0xe3c37474, 0x7cd8c1ae, 0xe3926fad, 0x7ccda169, 0xe3616f48, 0x7cc26de5, + 0xe330734d, 0x7cb72724, 0xe2ff7bc3, 0x7cabcd28, 0xe2ce88b3, 0x7ca05ff1, 0xe29d9a23, 0x7c94df83, + 0xe26cb01b, 0x7c894bde, 0xe23bcaa2, 0x7c7da505, 0xe20ae9c1, 0x7c71eaf9, 0xe1da0d7e, 0x7c661dbc, + 0xe1a935e2, 0x7c5a3d50, 0xe17862f3, 0x7c4e49b7, 0xe14794ba, 0x7c4242f2, 0xe116cb3d, 0x7c362904, + 0xe0e60685, 0x7c29fbee, 0xe0b54698, 0x7c1dbbb3, 0xe0848b7f, 0x7c116853, 0xe053d541, 0x7c0501d2, + 0xe02323e5, 0x7bf88830, 0xdff27773, 0x7bebfb70, 0xdfc1cff3, 0x7bdf5b94, 0xdf912d6b, 0x7bd2a89e, + 0xdf608fe4, 0x7bc5e290, 0xdf2ff764, 0x7bb9096b, 0xdeff63f4, 0x7bac1d31, 0xdeced59b, 0x7b9f1de6, + 0xde9e4c60, 0x7b920b89, 0xde6dc84b, 0x7b84e61f, 0xde3d4964, 0x7b77ada8, 0xde0ccfb1, 0x7b6a6227, + 0xdddc5b3b, 0x7b5d039e, 0xddabec08, 0x7b4f920e, 0xdd7b8220, 0x7b420d7a, 0xdd4b1d8c, 0x7b3475e5, + 0xdd1abe51, 0x7b26cb4f, 0xdcea6478, 0x7b190dbc, 0xdcba1008, 0x7b0b3d2c, 0xdc89c109, 0x7afd59a4, + 0xdc597781, 0x7aef6323, 0xdc293379, 0x7ae159ae, 0xdbf8f4f8, 0x7ad33d45, 0xdbc8bc06, 0x7ac50dec, + 0xdb9888a8, 0x7ab6cba4, 0xdb685ae9, 0x7aa8766f, 0xdb3832cd, 0x7a9a0e50, 0xdb08105e, 0x7a8b9348, + 0xdad7f3a2, 0x7a7d055b, 0xdaa7dca1, 0x7a6e648a, 0xda77cb63, 0x7a5fb0d8, 0xda47bfee, 0x7a50ea47, + 0xda17ba4a, 0x7a4210d8, 0xd9e7ba7f, 0x7a332490, 0xd9b7c094, 0x7a24256f, 0xd987cc90, 0x7a151378, + 0xd957de7a, 0x7a05eead, 0xd927f65b, 0x79f6b711, 0xd8f81439, 0x79e76ca7, 0xd8c8381d, 0x79d80f6f, + 0xd898620c, 0x79c89f6e, 0xd868920f, 0x79b91ca4, 0xd838c82d, 0x79a98715, 0xd809046e, 0x7999dec4, + 0xd7d946d8, 0x798a23b1, 0xd7a98f73, 0x797a55e0, 0xd779de47, 0x796a7554, 0xd74a335b, 0x795a820e, + 0xd71a8eb5, 0x794a7c12, 0xd6eaf05f, 0x793a6361, 0xd6bb585e, 0x792a37fe, 0xd68bc6ba, 0x7919f9ec, + 0xd65c3b7b, 0x7909a92d, 0xd62cb6a8, 0x78f945c3, 0xd5fd3848, 0x78e8cfb2, 0xd5cdc062, 0x78d846fb, + 0xd59e4eff, 0x78c7aba2, 0xd56ee424, 0x78b6fda8, 0xd53f7fda, 0x78a63d11, 0xd5102228, 0x789569df, + 0xd4e0cb15, 0x78848414, 0xd4b17aa8, 0x78738bb3, 0xd48230e9, 0x786280bf, 0xd452eddf, 0x7851633b, + 0xd423b191, 0x78403329, 0xd3f47c06, 0x782ef08b, 0xd3c54d47, 0x781d9b65, 0xd396255a, 0x780c33b8, + 0xd3670446, 0x77fab989, 0xd337ea12, 0x77e92cd9, 0xd308d6c7, 0x77d78daa, 0xd2d9ca6a, 0x77c5dc01, + 0xd2aac504, 0x77b417df, 0xd27bc69c, 0x77a24148, 0xd24ccf39, 0x7790583e, 0xd21ddee2, 0x777e5cc3, + 0xd1eef59e, 0x776c4edb, 0xd1c01375, 0x775a2e89, 0xd191386e, 0x7747fbce, 0xd1626490, 0x7735b6af, + 0xd13397e2, 0x77235f2d, 0xd104d26b, 0x7710f54c, 0xd0d61434, 0x76fe790e, 0xd0a75d42, 0x76ebea77, + 0xd078ad9e, 0x76d94989, 0xd04a054e, 0x76c69647, 0xd01b6459, 0x76b3d0b4, 0xcfeccac7, 0x76a0f8d2, + 0xcfbe389f, 0x768e0ea6, 0xcf8fade9, 0x767b1231, 0xcf612aaa, 0x76680376, 0xcf32aeeb, 0x7654e279, + 0xcf043ab3, 0x7641af3d, 0xced5ce08, 0x762e69c4, 0xcea768f2, 0x761b1211, 0xce790b79, 0x7607a828, + 0xce4ab5a2, 0x75f42c0b, 0xce1c6777, 0x75e09dbd, 0xcdee20fc, 0x75ccfd42, 0xcdbfe23a, 0x75b94a9c, + 0xcd91ab39, 0x75a585cf, 0xcd637bfe, 0x7591aedd, 0xcd355491, 0x757dc5ca, 0xcd0734f9, 0x7569ca99, + 0xccd91d3d, 0x7555bd4c, 0xccab0d65, 0x75419de7, 0xcc7d0578, 0x752d6c6c, 0xcc4f057c, 0x751928e0, + 0xcc210d79, 0x7504d345, 0xcbf31d75, 0x74f06b9e, 0xcbc53579, 0x74dbf1ef, 0xcb97558a, 0x74c7663a, + 0xcb697db0, 0x74b2c884, 0xcb3badf3, 0x749e18cd, 0xcb0de658, 0x7489571c, 0xcae026e8, 0x74748371, + 0xcab26fa9, 0x745f9dd1, 0xca84c0a3, 0x744aa63f, 0xca5719db, 0x74359cbd, 0xca297b5a, 0x74208150, + 0xc9fbe527, 0x740b53fb, 0xc9ce5748, 0x73f614c0, 0xc9a0d1c5, 0x73e0c3a3, 0xc97354a4, 0x73cb60a8, + 0xc945dfec, 0x73b5ebd1, 0xc91873a5, 0x73a06522, 0xc8eb0fd6, 0x738acc9e, 0xc8bdb485, 0x73752249, + 0xc89061ba, 0x735f6626, 0xc863177b, 0x73499838, 0xc835d5d0, 0x7333b883, 0xc8089cbf, 0x731dc70a, + 0xc7db6c50, 0x7307c3d0, 0xc7ae4489, 0x72f1aed9, 0xc7812572, 0x72db8828, 0xc7540f11, 0x72c54fc1, + 0xc727016d, 0x72af05a7, 0xc6f9fc8d, 0x7298a9dd, 0xc6cd0079, 0x72823c67, 0xc6a00d37, 0x726bbd48, + 0xc67322ce, 0x72552c85, 0xc6464144, 0x723e8a20, 0xc61968a2, 0x7227d61c, 0xc5ec98ee, 0x7211107e, + 0xc5bfd22e, 0x71fa3949, 0xc593146a, 0x71e35080, 0xc5665fa9, 0x71cc5626, 0xc539b3f1, 0x71b54a41, + 0xc50d1149, 0x719e2cd2, 0xc4e077b8, 0x7186fdde, 0xc4b3e746, 0x716fbd68, 0xc4875ff9, 0x71586b74, + 0xc45ae1d7, 0x71410805, 0xc42e6ce8, 0x7129931f, 0xc4020133, 0x71120cc5, 0xc3d59ebe, 0x70fa74fc, + 0xc3a94590, 0x70e2cbc6, 0xc37cf5b0, 0x70cb1128, 0xc350af26, 0x70b34525, 0xc32471f7, 0x709b67c0, + 0xc2f83e2a, 0x708378ff, 0xc2cc13c7, 0x706b78e3, 0xc29ff2d4, 0x70536771, 0xc273db58, 0x703b44ad, + 0xc247cd5a, 0x7023109a, 0xc21bc8e1, 0x700acb3c, 0xc1efcdf3, 0x6ff27497, 0xc1c3dc97, 0x6fda0cae, + 0xc197f4d4, 0x6fc19385, 0xc16c16b0, 0x6fa90921, 0xc1404233, 0x6f906d84, 0xc1147764, 0x6f77c0b3, + 0xc0e8b648, 0x6f5f02b2, 0xc0bcfee7, 0x6f463383, 0xc0915148, 0x6f2d532c, 0xc065ad70, 0x6f1461b0, + 0xc03a1368, 0x6efb5f12, 0xc00e8336, 0x6ee24b57, 0xbfe2fcdf, 0x6ec92683, 0xbfb7806c, 0x6eaff099, + 0xbf8c0de3, 0x6e96a99d, 0xbf60a54a, 0x6e7d5193, 0xbf3546a8, 0x6e63e87f, 0xbf09f205, 0x6e4a6e66, + 0xbedea765, 0x6e30e34a, 0xbeb366d1, 0x6e174730, 0xbe88304f, 0x6dfd9a1c, 0xbe5d03e6, 0x6de3dc11, + 0xbe31e19b, 0x6dca0d14, 0xbe06c977, 0x6db02d29, 0xbddbbb7f, 0x6d963c54, 0xbdb0b7bb, 0x6d7c3a98, + 0xbd85be30, 0x6d6227fa, 0xbd5acee5, 0x6d48047e, 0xbd2fe9e2, 0x6d2dd027, 0xbd050f2c, 0x6d138afb, + 0xbcda3ecb, 0x6cf934fc, 0xbcaf78c4, 0x6cdece2f, 0xbc84bd1f, 0x6cc45698, 0xbc5a0be2, 0x6ca9ce3b, + 0xbc2f6513, 0x6c8f351c, 0xbc04c8ba, 0x6c748b3f, 0xbbda36dd, 0x6c59d0a9, 0xbbafaf82, 0x6c3f055d, + 0xbb8532b0, 0x6c242960, 0xbb5ac06d, 0x6c093cb6, 0xbb3058c0, 0x6bee3f62, 0xbb05fbb0, 0x6bd3316a, + 0xbadba943, 0x6bb812d1, 0xbab16180, 0x6b9ce39b, 0xba87246d, 0x6b81a3cd, 0xba5cf210, 0x6b66536b, + 0xba32ca71, 0x6b4af279, 0xba08ad95, 0x6b2f80fb, 0xb9de9b83, 0x6b13fef5, 0xb9b49442, 0x6af86c6c, + 0xb98a97d8, 0x6adcc964, 0xb960a64c, 0x6ac115e2, 0xb936bfa4, 0x6aa551e9, 0xb90ce3e6, 0x6a897d7d, + 0xb8e31319, 0x6a6d98a4, 0xb8b94d44, 0x6a51a361, 0xb88f926d, 0x6a359db9, 0xb865e299, 0x6a1987b0, + 0xb83c3dd1, 0x69fd614a, 0xb812a41a, 0x69e12a8c, 0xb7e9157a, 0x69c4e37a, 0xb7bf91f8, 0x69a88c19, + 0xb796199b, 0x698c246c, 0xb76cac69, 0x696fac78, 0xb7434a67, 0x69532442, 0xb719f39e, 0x69368bce, + 0xb6f0a812, 0x6919e320, 0xb6c767ca, 0x68fd2a3d, 0xb69e32cd, 0x68e06129, 0xb6750921, 0x68c387e9, + 0xb64beacd, 0x68a69e81, 0xb622d7d6, 0x6889a4f6, 0xb5f9d043, 0x686c9b4b, 0xb5d0d41a, 0x684f8186, + 0xb5a7e362, 0x683257ab, 0xb57efe22, 0x68151dbe, 0xb556245e, 0x67f7d3c5, 0xb52d561e, 0x67da79c3, + 0xb5049368, 0x67bd0fbd, 0xb4dbdc42, 0x679f95b7, 0xb4b330b3, 0x67820bb7, 0xb48a90c0, 0x676471c0, + 0xb461fc70, 0x6746c7d8, 0xb43973ca, 0x67290e02, 0xb410f6d3, 0x670b4444, 0xb3e88592, 0x66ed6aa1, + 0xb3c0200c, 0x66cf8120, 0xb397c649, 0x66b187c3, 0xb36f784f, 0x66937e91, 0xb3473623, 0x6675658c, + 0xb31effcc, 0x66573cbb, 0xb2f6d550, 0x66390422, 0xb2ceb6b5, 0x661abbc5, 0xb2a6a402, 0x65fc63a9, + 0xb27e9d3c, 0x65ddfbd3, 0xb256a26a, 0x65bf8447, 0xb22eb392, 0x65a0fd0b, 0xb206d0ba, 0x65826622, + 0xb1def9e9, 0x6563bf92, 0xb1b72f23, 0x6545095f, 0xb18f7071, 0x6526438f, 0xb167bdd7, 0x65076e25, + 0xb140175b, 0x64e88926, 0xb1187d05, 0x64c99498, 0xb0f0eeda, 0x64aa907f, 0xb0c96ce0, 0x648b7ce0, + 0xb0a1f71d, 0x646c59bf, 0xb07a8d97, 0x644d2722, 0xb0533055, 0x642de50d, 0xb02bdf5c, 0x640e9386, + 0xb0049ab3, 0x63ef3290, 0xafdd625f, 0x63cfc231, 0xafb63667, 0x63b0426d, 0xaf8f16d1, 0x6390b34a, + 0xaf6803a2, 0x637114cc, 0xaf40fce1, 0x635166f9, 0xaf1a0293, 0x6331a9d4, 0xaef314c0, 0x6311dd64, + 0xaecc336c, 0x62f201ac, 0xaea55e9e, 0x62d216b3, 0xae7e965b, 0x62b21c7b, 0xae57daab, 0x6292130c, + 0xae312b92, 0x6271fa69, 0xae0a8916, 0x6251d298, 0xade3f33e, 0x62319b9d, 0xadbd6a10, 0x6211557e, + 0xad96ed92, 0x61f1003f, 0xad707dc8, 0x61d09be5, 0xad4a1aba, 0x61b02876, 0xad23c46e, 0x618fa5f7, + 0xacfd7ae8, 0x616f146c, 0xacd73e30, 0x614e73da, 0xacb10e4b, 0x612dc447, 0xac8aeb3e, 0x610d05b7, + 0xac64d510, 0x60ec3830, 0xac3ecbc7, 0x60cb5bb7, 0xac18cf69, 0x60aa7050, 0xabf2dffb, 0x60897601, + 0xabccfd83, 0x60686ccf, 0xaba72807, 0x604754bf, 0xab815f8d, 0x60262dd6, 0xab5ba41a, 0x6004f819, + 0xab35f5b5, 0x5fe3b38d, 0xab105464, 0x5fc26038, 0xaaeac02c, 0x5fa0fe1f, 0xaac53912, 0x5f7f8d46, + 0xaa9fbf1e, 0x5f5e0db3, 0xaa7a5253, 0x5f3c7f6b, 0xaa54f2ba, 0x5f1ae274, 0xaa2fa056, 0x5ef936d1, + 0xaa0a5b2e, 0x5ed77c8a, 0xa9e52347, 0x5eb5b3a2, 0xa9bff8a8, 0x5e93dc1f, 0xa99adb56, 0x5e71f606, + 0xa975cb57, 0x5e50015d, 0xa950c8b0, 0x5e2dfe29, 0xa92bd367, 0x5e0bec6e, 0xa906eb82, 0x5de9cc33, + 0xa8e21106, 0x5dc79d7c, 0xa8bd43fa, 0x5da5604f, 0xa8988463, 0x5d8314b1, 0xa873d246, 0x5d60baa7, + 0xa84f2daa, 0x5d3e5237, 0xa82a9693, 0x5d1bdb65, 0xa8060d08, 0x5cf95638, 0xa7e1910f, 0x5cd6c2b5, + 0xa7bd22ac, 0x5cb420e0, 0xa798c1e5, 0x5c9170bf, 0xa7746ec0, 0x5c6eb258, 0xa7502943, 0x5c4be5b0, + 0xa72bf174, 0x5c290acc, 0xa707c757, 0x5c0621b2, 0xa6e3aaf2, 0x5be32a67, 0xa6bf9c4b, 0x5bc024f0, + 0xa69b9b68, 0x5b9d1154, 0xa677a84e, 0x5b79ef96, 0xa653c303, 0x5b56bfbd, 0xa62feb8b, 0x5b3381ce, + 0xa60c21ee, 0x5b1035cf, 0xa5e8662f, 0x5aecdbc5, 0xa5c4b855, 0x5ac973b5, 0xa5a11866, 0x5aa5fda5, + 0xa57d8666, 0x5a82799a, 0xa55a025b, 0x5a5ee79a, 0xa5368c4b, 0x5a3b47ab, 0xa513243b, 0x5a1799d1, + 0xa4efca31, 0x59f3de12, 0xa4cc7e32, 0x59d01475, 0xa4a94043, 0x59ac3cfd, 0xa486106a, 0x598857b2, + 0xa462eeac, 0x59646498, 0xa43fdb10, 0x594063b5, 0xa41cd599, 0x591c550e, 0xa3f9de4e, 0x58f838a9, + 0xa3d6f534, 0x58d40e8c, 0xa3b41a50, 0x58afd6bd, 0xa3914da8, 0x588b9140, 0xa36e8f41, 0x58673e1b, + 0xa34bdf20, 0x5842dd54, 0xa3293d4b, 0x581e6ef1, 0xa306a9c8, 0x57f9f2f8, 0xa2e4249b, 0x57d5696d, + 0xa2c1adc9, 0x57b0d256, 0xa29f4559, 0x578c2dba, 0xa27ceb4f, 0x57677b9d, 0xa25a9fb1, 0x5742bc06, + 0xa2386284, 0x571deefa, 0xa21633cd, 0x56f9147e, 0xa1f41392, 0x56d42c99, 0xa1d201d7, 0x56af3750, + 0xa1affea3, 0x568a34a9, 0xa18e09fa, 0x566524aa, 0xa16c23e1, 0x56400758, 0xa14a4c5e, 0x561adcb9, + 0xa1288376, 0x55f5a4d2, 0xa106c92f, 0x55d05faa, 0xa0e51d8c, 0x55ab0d46, 0xa0c38095, 0x5585adad, + 0xa0a1f24d, 0x556040e2, 0xa08072ba, 0x553ac6ee, 0xa05f01e1, 0x55153fd4, 0xa03d9fc8, 0x54efab9c, + 0xa01c4c73, 0x54ca0a4b, 0x9ffb07e7, 0x54a45be6, 0x9fd9d22a, 0x547ea073, 0x9fb8ab41, 0x5458d7f9, + 0x9f979331, 0x5433027d, 0x9f7689ff, 0x540d2005, 0x9f558fb0, 0x53e73097, 0x9f34a449, 0x53c13439, + 0x9f13c7d0, 0x539b2af0, 0x9ef2fa49, 0x537514c2, 0x9ed23bb9, 0x534ef1b5, 0x9eb18c26, 0x5328c1d0, + 0x9e90eb94, 0x53028518, 0x9e705a09, 0x52dc3b92, 0x9e4fd78a, 0x52b5e546, 0x9e2f641b, 0x528f8238, + 0x9e0effc1, 0x5269126e, 0x9deeaa82, 0x524295f0, 0x9dce6463, 0x521c0cc2, 0x9dae2d68, 0x51f576ea, + 0x9d8e0597, 0x51ced46e, 0x9d6decf4, 0x51a82555, 0x9d4de385, 0x518169a5, 0x9d2de94d, 0x515aa162, + 0x9d0dfe54, 0x5133cc94, 0x9cee229c, 0x510ceb40, 0x9cce562c, 0x50e5fd6d, 0x9cae9907, 0x50bf031f, + 0x9c8eeb34, 0x5097fc5e, 0x9c6f4cb6, 0x5070e92f, 0x9c4fbd93, 0x5049c999, 0x9c303dcf, 0x50229da1, + 0x9c10cd70, 0x4ffb654d, 0x9bf16c7a, 0x4fd420a4, 0x9bd21af3, 0x4faccfab, 0x9bb2d8de, 0x4f857269, + 0x9b93a641, 0x4f5e08e3, 0x9b748320, 0x4f369320, 0x9b556f81, 0x4f0f1126, 0x9b366b68, 0x4ee782fb, + 0x9b1776da, 0x4ebfe8a5, 0x9af891db, 0x4e984229, 0x9ad9bc71, 0x4e708f8f, 0x9abaf6a1, 0x4e48d0dd, + 0x9a9c406e, 0x4e210617, 0x9a7d99de, 0x4df92f46, 0x9a5f02f5, 0x4dd14c6e, 0x9a407bb9, 0x4da95d96, + 0x9a22042d, 0x4d8162c4, 0x9a039c57, 0x4d595bfe, 0x99e5443b, 0x4d31494b, 0x99c6fbde, 0x4d092ab0, + 0x99a8c345, 0x4ce10034, 0x998a9a74, 0x4cb8c9dd, 0x996c816f, 0x4c9087b1, 0x994e783d, 0x4c6839b7, + 0x99307ee0, 0x4c3fdff4, 0x9912955f, 0x4c177a6e, 0x98f4bbbc, 0x4bef092d, 0x98d6f1fe, 0x4bc68c36, + 0x98b93828, 0x4b9e0390, 0x989b8e40, 0x4b756f40, 0x987df449, 0x4b4ccf4d, 0x98606a49, 0x4b2423be, + 0x9842f043, 0x4afb6c98, 0x9825863d, 0x4ad2a9e2, 0x98082c3b, 0x4aa9dba2, 0x97eae242, 0x4a8101de, + 0x97cda855, 0x4a581c9e, 0x97b07e7a, 0x4a2f2be6, 0x979364b5, 0x4a062fbd, 0x97765b0a, 0x49dd282a, + 0x9759617f, 0x49b41533, 0x973c7817, 0x498af6df, 0x971f9ed7, 0x4961cd33, 0x9702d5c3, 0x49389836, + 0x96e61ce0, 0x490f57ee, 0x96c97432, 0x48e60c62, 0x96acdbbe, 0x48bcb599, 0x96905388, 0x48935397, + 0x9673db94, 0x4869e665, 0x965773e7, 0x48406e08, 0x963b1c86, 0x4816ea86, 0x961ed574, 0x47ed5be6, + 0x96029eb6, 0x47c3c22f, 0x95e67850, 0x479a1d67, 0x95ca6247, 0x47706d93, 0x95ae5c9f, 0x4746b2bc, + 0x9592675c, 0x471cece7, 0x95768283, 0x46f31c1a, 0x955aae17, 0x46c9405c, 0x953eea1e, 0x469f59b4, + 0x9523369c, 0x46756828, 0x95079394, 0x464b6bbe, 0x94ec010b, 0x4621647d, 0x94d07f05, 0x45f7526b, + 0x94b50d87, 0x45cd358f, 0x9499ac95, 0x45a30df0, 0x947e5c33, 0x4578db93, 0x94631c65, 0x454e9e80, + 0x9447ed2f, 0x452456bd, 0x942cce96, 0x44fa0450, 0x9411c09e, 0x44cfa740, 0x93f6c34a, 0x44a53f93, + 0x93dbd6a0, 0x447acd50, 0x93c0faa3, 0x4450507e, 0x93a62f57, 0x4425c923, 0x938b74c1, 0x43fb3746, + 0x9370cae4, 0x43d09aed, 0x935631c5, 0x43a5f41e, 0x933ba968, 0x437b42e1, 0x932131d1, 0x4350873c, + 0x9306cb04, 0x4325c135, 0x92ec7505, 0x42faf0d4, 0x92d22fd9, 0x42d0161e, 0x92b7fb82, 0x42a5311b, + 0x929dd806, 0x427a41d0, 0x9283c568, 0x424f4845, 0x9269c3ac, 0x42244481, 0x924fd2d7, 0x41f93689, + 0x9235f2ec, 0x41ce1e65, 0x921c23ef, 0x41a2fc1a, 0x920265e4, 0x4177cfb1, 0x91e8b8d0, 0x414c992f, + 0x91cf1cb6, 0x4121589b, 0x91b5919a, 0x40f60dfb, 0x919c1781, 0x40cab958, 0x9182ae6d, 0x409f5ab6, + 0x91695663, 0x4073f21d, 0x91500f67, 0x40487f94, 0x9136d97d, 0x401d0321, 0x911db4a9, 0x3ff17cca, + 0x9104a0ee, 0x3fc5ec98, 0x90eb9e50, 0x3f9a5290, 0x90d2acd4, 0x3f6eaeb8, 0x90b9cc7d, 0x3f430119, + 0x90a0fd4e, 0x3f1749b8, 0x90883f4d, 0x3eeb889c, 0x906f927c, 0x3ebfbdcd, 0x9056f6df, 0x3e93e950, + 0x903e6c7b, 0x3e680b2c, 0x9025f352, 0x3e3c2369, 0x900d8b69, 0x3e10320d, 0x8ff534c4, 0x3de4371f, + 0x8fdcef66, 0x3db832a6, 0x8fc4bb53, 0x3d8c24a8, 0x8fac988f, 0x3d600d2c, 0x8f94871d, 0x3d33ec39, + 0x8f7c8701, 0x3d07c1d6, 0x8f649840, 0x3cdb8e09, 0x8f4cbadb, 0x3caf50da, 0x8f34eed8, 0x3c830a50, + 0x8f1d343a, 0x3c56ba70, 0x8f058b04, 0x3c2a6142, 0x8eedf33b, 0x3bfdfecd, 0x8ed66ce1, 0x3bd19318, + 0x8ebef7fb, 0x3ba51e29, 0x8ea7948c, 0x3b78a007, 0x8e904298, 0x3b4c18ba, 0x8e790222, 0x3b1f8848, + 0x8e61d32e, 0x3af2eeb7, 0x8e4ab5bf, 0x3ac64c0f, 0x8e33a9da, 0x3a99a057, 0x8e1caf80, 0x3a6ceb96, + 0x8e05c6b7, 0x3a402dd2, 0x8deeef82, 0x3a136712, 0x8dd829e4, 0x39e6975e, 0x8dc175e0, 0x39b9bebc, + 0x8daad37b, 0x398cdd32, 0x8d9442b8, 0x395ff2c9, 0x8d7dc399, 0x3932ff87, 0x8d675623, 0x39060373, + 0x8d50fa59, 0x38d8fe93, 0x8d3ab03f, 0x38abf0ef, 0x8d2477d8, 0x387eda8e, 0x8d0e5127, 0x3851bb77, + 0x8cf83c30, 0x382493b0, 0x8ce238f6, 0x37f76341, 0x8ccc477d, 0x37ca2a30, 0x8cb667c8, 0x379ce885, + 0x8ca099da, 0x376f9e46, 0x8c8addb7, 0x37424b7b, 0x8c753362, 0x3714f02a, 0x8c5f9ade, 0x36e78c5b, + 0x8c4a142f, 0x36ba2014, 0x8c349f58, 0x368cab5c, 0x8c1f3c5d, 0x365f2e3b, 0x8c09eb40, 0x3631a8b8, + 0x8bf4ac05, 0x36041ad9, 0x8bdf7eb0, 0x35d684a6, 0x8bca6343, 0x35a8e625, 0x8bb559c1, 0x357b3f5d, + 0x8ba0622f, 0x354d9057, 0x8b8b7c8f, 0x351fd918, 0x8b76a8e4, 0x34f219a8, 0x8b61e733, 0x34c4520d, + 0x8b4d377c, 0x34968250, 0x8b3899c6, 0x3468aa76, 0x8b240e11, 0x343aca87, 0x8b0f9462, 0x340ce28b, + 0x8afb2cbb, 0x33def287, 0x8ae6d720, 0x33b0fa84, 0x8ad29394, 0x3382fa88, 0x8abe6219, 0x3354f29b, + 0x8aaa42b4, 0x3326e2c3, 0x8a963567, 0x32f8cb07, 0x8a823a36, 0x32caab6f, 0x8a6e5123, 0x329c8402, + 0x8a5a7a31, 0x326e54c7, 0x8a46b564, 0x32401dc6, 0x8a3302be, 0x3211df04, 0x8a1f6243, 0x31e39889, + 0x8a0bd3f5, 0x31b54a5e, 0x89f857d8, 0x3186f487, 0x89e4edef, 0x3158970e, 0x89d1963c, 0x312a31f8, + 0x89be50c3, 0x30fbc54d, 0x89ab1d87, 0x30cd5115, 0x8997fc8a, 0x309ed556, 0x8984edcf, 0x30705217, + 0x8971f15a, 0x3041c761, 0x895f072e, 0x30133539, 0x894c2f4c, 0x2fe49ba7, 0x893969b9, 0x2fb5fab2, + 0x8926b677, 0x2f875262, 0x89141589, 0x2f58a2be, 0x890186f2, 0x2f29ebcc, 0x88ef0ab4, 0x2efb2d95, + 0x88dca0d3, 0x2ecc681e, 0x88ca4951, 0x2e9d9b70, 0x88b80432, 0x2e6ec792, 0x88a5d177, 0x2e3fec8b, + 0x8893b125, 0x2e110a62, 0x8881a33d, 0x2de2211e, 0x886fa7c2, 0x2db330c7, 0x885dbeb8, 0x2d843964, + 0x884be821, 0x2d553afc, 0x883a23ff, 0x2d263596, 0x88287256, 0x2cf72939, 0x8816d327, 0x2cc815ee, + 0x88054677, 0x2c98fbba, 0x87f3cc48, 0x2c69daa6, 0x87e2649b, 0x2c3ab2b9, 0x87d10f75, 0x2c0b83fa, + 0x87bfccd7, 0x2bdc4e6f, 0x87ae9cc5, 0x2bad1221, 0x879d7f41, 0x2b7dcf17, 0x878c744d, 0x2b4e8558, + 0x877b7bec, 0x2b1f34eb, 0x876a9621, 0x2aefddd8, 0x8759c2ef, 0x2ac08026, 0x87490258, 0x2a911bdc, + 0x8738545e, 0x2a61b101, 0x8727b905, 0x2a323f9e, 0x8717304e, 0x2a02c7b8, 0x8706ba3d, 0x29d34958, + 0x86f656d3, 0x29a3c485, 0x86e60614, 0x29743946, 0x86d5c802, 0x2944a7a2, 0x86c59c9f, 0x29150fa1, + 0x86b583ee, 0x28e5714b, 0x86a57df2, 0x28b5cca5, 0x86958aac, 0x288621b9, 0x8685aa20, 0x2856708d, + 0x8675dc4f, 0x2826b928, 0x8666213c, 0x27f6fb92, 0x865678eb, 0x27c737d3, 0x8646e35c, 0x27976df1, + 0x86376092, 0x27679df4, 0x8627f091, 0x2737c7e3, 0x86189359, 0x2707ebc7, 0x860948ef, 0x26d809a5, + 0x85fa1153, 0x26a82186, 0x85eaec88, 0x26783370, 0x85dbda91, 0x26483f6c, 0x85ccdb70, 0x26184581, + 0x85bdef28, 0x25e845b6, 0x85af15b9, 0x25b84012, 0x85a04f28, 0x2588349d, 0x85919b76, 0x2558235f, + 0x8582faa5, 0x25280c5e, 0x85746cb8, 0x24f7efa2, 0x8565f1b0, 0x24c7cd33, 0x85578991, 0x2497a517, + 0x8549345c, 0x24677758, 0x853af214, 0x243743fa, 0x852cc2bb, 0x24070b08, 0x851ea652, 0x23d6cc87, + 0x85109cdd, 0x23a6887f, 0x8502a65c, 0x23763ef7, 0x84f4c2d4, 0x2345eff8, 0x84e6f244, 0x23159b88, + 0x84d934b1, 0x22e541af, 0x84cb8a1b, 0x22b4e274, 0x84bdf286, 0x22847de0, 0x84b06df2, 0x225413f8, + 0x84a2fc62, 0x2223a4c5, 0x84959dd9, 0x21f3304f, 0x84885258, 0x21c2b69c, 0x847b19e1, 0x219237b5, + 0x846df477, 0x2161b3a0, 0x8460e21a, 0x21312a65, 0x8453e2cf, 0x21009c0c, 0x8446f695, 0x20d0089c, + 0x843a1d70, 0x209f701c, 0x842d5762, 0x206ed295, 0x8420a46c, 0x203e300d, 0x84140490, 0x200d888d, + 0x840777d0, 0x1fdcdc1b, 0x83fafe2e, 0x1fac2abf, 0x83ee97ad, 0x1f7b7481, 0x83e2444d, 0x1f4ab968, + 0x83d60412, 0x1f19f97b, 0x83c9d6fc, 0x1ee934c3, 0x83bdbd0e, 0x1eb86b46, 0x83b1b649, 0x1e879d0d, + 0x83a5c2b0, 0x1e56ca1e, 0x8399e244, 0x1e25f282, 0x838e1507, 0x1df5163f, 0x83825afb, 0x1dc4355e, + 0x8376b422, 0x1d934fe5, 0x836b207d, 0x1d6265dd, 0x835fa00f, 0x1d31774d, 0x835432d8, 0x1d00843d, + 0x8348d8dc, 0x1ccf8cb3, 0x833d921b, 0x1c9e90b8, 0x83325e97, 0x1c6d9053, 0x83273e52, 0x1c3c8b8c, + 0x831c314e, 0x1c0b826a, 0x8311378d, 0x1bda74f6, 0x83065110, 0x1ba96335, 0x82fb7dd8, 0x1b784d30, + 0x82f0bde8, 0x1b4732ef, 0x82e61141, 0x1b161479, 0x82db77e5, 0x1ae4f1d6, 0x82d0f1d5, 0x1ab3cb0d, + 0x82c67f14, 0x1a82a026, 0x82bc1fa2, 0x1a517128, 0x82b1d381, 0x1a203e1b, 0x82a79ab3, 0x19ef0707, + 0x829d753a, 0x19bdcbf3, 0x82936317, 0x198c8ce7, 0x8289644b, 0x195b49ea, 0x827f78d8, 0x192a0304, + 0x8275a0c0, 0x18f8b83c, 0x826bdc04, 0x18c7699b, 0x82622aa6, 0x18961728, 0x82588ca7, 0x1864c0ea, + 0x824f0208, 0x183366e9, 0x82458acc, 0x1802092c, 0x823c26f3, 0x17d0a7bc, 0x8232d67f, 0x179f429f, + 0x82299971, 0x176dd9de, 0x82206fcc, 0x173c6d80, 0x82175990, 0x170afd8d, 0x820e56be, 0x16d98a0c, + 0x82056758, 0x16a81305, 0x81fc8b60, 0x1676987f, 0x81f3c2d7, 0x16451a83, 0x81eb0dbe, 0x16139918, + 0x81e26c16, 0x15e21445, 0x81d9dde1, 0x15b08c12, 0x81d16321, 0x157f0086, 0x81c8fbd6, 0x154d71aa, + 0x81c0a801, 0x151bdf86, 0x81b867a5, 0x14ea4a1f, 0x81b03ac2, 0x14b8b17f, 0x81a82159, 0x148715ae, + 0x81a01b6d, 0x145576b1, 0x819828fd, 0x1423d492, 0x81904a0c, 0x13f22f58, 0x81887e9a, 0x13c0870a, + 0x8180c6a9, 0x138edbb1, 0x8179223a, 0x135d2d53, 0x8171914e, 0x132b7bf9, 0x816a13e6, 0x12f9c7aa, + 0x8162aa04, 0x12c8106f, 0x815b53a8, 0x1296564d, 0x815410d4, 0x1264994e, 0x814ce188, 0x1232d979, + 0x8145c5c7, 0x120116d5, 0x813ebd90, 0x11cf516a, 0x8137c8e6, 0x119d8941, 0x8130e7c9, 0x116bbe60, + 0x812a1a3a, 0x1139f0cf, 0x8123603a, 0x11082096, 0x811cb9ca, 0x10d64dbd, 0x811626ec, 0x10a4784b, + 0x810fa7a0, 0x1072a048, 0x81093be8, 0x1040c5bb, 0x8102e3c4, 0x100ee8ad, 0x80fc9f35, 0xfdd0926, + 0x80f66e3c, 0xfab272b, 0x80f050db, 0xf7942c7, 0x80ea4712, 0xf475bff, 0x80e450e2, 0xf1572dc, + 0x80de6e4c, 0xee38766, 0x80d89f51, 0xeb199a4, 0x80d2e3f2, 0xe7fa99e, 0x80cd3c2f, 0xe4db75b, + 0x80c7a80a, 0xe1bc2e4, 0x80c22784, 0xde9cc40, 0x80bcba9d, 0xdb7d376, 0x80b76156, 0xd85d88f, + 0x80b21baf, 0xd53db92, 0x80ace9ab, 0xd21dc87, 0x80a7cb49, 0xcefdb76, 0x80a2c08b, 0xcbdd865, + 0x809dc971, 0xc8bd35e, 0x8098e5fb, 0xc59cc68, 0x8094162c, 0xc27c389, 0x808f5a02, 0xbf5b8cb, + 0x808ab180, 0xbc3ac35, 0x80861ca6, 0xb919dcf, 0x80819b74, 0xb5f8d9f, 0x807d2dec, 0xb2d7baf, + 0x8078d40d, 0xafb6805, 0x80748dd9, 0xac952aa, 0x80705b50, 0xa973ba5, 0x806c3c74, 0xa6522fe, + 0x80683143, 0xa3308bd, 0x806439c0, 0xa00ece8, 0x806055eb, 0x9cecf89, 0x805c85c4, 0x99cb0a7, + 0x8058c94c, 0x96a9049, 0x80552084, 0x9386e78, 0x80518b6b, 0x9064b3a, 0x804e0a04, 0x8d42699, + 0x804a9c4d, 0x8a2009a, 0x80474248, 0x86fd947, 0x8043fbf6, 0x83db0a7, 0x8040c956, 0x80b86c2, + 0x803daa6a, 0x7d95b9e, 0x803a9f31, 0x7a72f45, 0x8037a7ac, 0x77501be, 0x8034c3dd, 0x742d311, + 0x8031f3c2, 0x710a345, 0x802f375d, 0x6de7262, 0x802c8ead, 0x6ac406f, 0x8029f9b4, 0x67a0d76, + 0x80277872, 0x647d97c, 0x80250ae7, 0x615a48b, 0x8022b114, 0x5e36ea9, 0x80206af8, 0x5b137df, + 0x801e3895, 0x57f0035, 0x801c19ea, 0x54cc7b1, 0x801a0ef8, 0x51a8e5c, 0x801817bf, 0x4e8543e, + 0x80163440, 0x4b6195d, 0x8014647b, 0x483ddc3, 0x8012a86f, 0x451a177, 0x8011001f, 0x41f6480, + 0x800f6b88, 0x3ed26e6, 0x800deaad, 0x3bae8b2, 0x800c7d8c, 0x388a9ea, 0x800b2427, 0x3566a96, + 0x8009de7e, 0x3242abf, 0x8008ac90, 0x2f1ea6c, 0x80078e5e, 0x2bfa9a4, 0x800683e8, 0x28d6870, + 0x80058d2f, 0x25b26d7, 0x8004aa32, 0x228e4e2, 0x8003daf1, 0x1f6a297, 0x80031f6d, 0x1c45ffe, + 0x800277a6, 0x1921d20, 0x8001e39b, 0x15fda03, 0x8001634e, 0x12d96b1, 0x8000f6bd, 0xfb5330, + 0x80009dea, 0xc90f88, 0x800058d4, 0x96cbc1, 0x8000277a, 0x6487e3, 0x800009df, 0x3243f5, + 0x80000000, 0x0, 0x800009df, 0xffcdbc0b, 0x8000277a, 0xff9b781d, 0x800058d4, 0xff69343f, + 0x80009dea, 0xff36f078, 0x8000f6bd, 0xff04acd0, 0x8001634e, 0xfed2694f, 0x8001e39b, 0xfea025fd, + 0x800277a6, 0xfe6de2e0, 0x80031f6d, 0xfe3ba002, 0x8003daf1, 0xfe095d69, 0x8004aa32, 0xfdd71b1e, + 0x80058d2f, 0xfda4d929, 0x800683e8, 0xfd729790, 0x80078e5e, 0xfd40565c, 0x8008ac90, 0xfd0e1594, + 0x8009de7e, 0xfcdbd541, 0x800b2427, 0xfca9956a, 0x800c7d8c, 0xfc775616, 0x800deaad, 0xfc45174e, + 0x800f6b88, 0xfc12d91a, 0x8011001f, 0xfbe09b80, 0x8012a86f, 0xfbae5e89, 0x8014647b, 0xfb7c223d, + 0x80163440, 0xfb49e6a3, 0x801817bf, 0xfb17abc2, 0x801a0ef8, 0xfae571a4, 0x801c19ea, 0xfab3384f, + 0x801e3895, 0xfa80ffcb, 0x80206af8, 0xfa4ec821, 0x8022b114, 0xfa1c9157, 0x80250ae7, 0xf9ea5b75, + 0x80277872, 0xf9b82684, 0x8029f9b4, 0xf985f28a, 0x802c8ead, 0xf953bf91, 0x802f375d, 0xf9218d9e, + 0x8031f3c2, 0xf8ef5cbb, 0x8034c3dd, 0xf8bd2cef, 0x8037a7ac, 0xf88afe42, 0x803a9f31, 0xf858d0bb, + 0x803daa6a, 0xf826a462, 0x8040c956, 0xf7f4793e, 0x8043fbf6, 0xf7c24f59, 0x80474248, 0xf79026b9, + 0x804a9c4d, 0xf75dff66, 0x804e0a04, 0xf72bd967, 0x80518b6b, 0xf6f9b4c6, 0x80552084, 0xf6c79188, + 0x8058c94c, 0xf6956fb7, 0x805c85c4, 0xf6634f59, 0x806055eb, 0xf6313077, 0x806439c0, 0xf5ff1318, + 0x80683143, 0xf5ccf743, 0x806c3c74, 0xf59add02, 0x80705b50, 0xf568c45b, 0x80748dd9, 0xf536ad56, + 0x8078d40d, 0xf50497fb, 0x807d2dec, 0xf4d28451, 0x80819b74, 0xf4a07261, 0x80861ca6, 0xf46e6231, + 0x808ab180, 0xf43c53cb, 0x808f5a02, 0xf40a4735, 0x8094162c, 0xf3d83c77, 0x8098e5fb, 0xf3a63398, + 0x809dc971, 0xf3742ca2, 0x80a2c08b, 0xf342279b, 0x80a7cb49, 0xf310248a, 0x80ace9ab, 0xf2de2379, + 0x80b21baf, 0xf2ac246e, 0x80b76156, 0xf27a2771, 0x80bcba9d, 0xf2482c8a, 0x80c22784, 0xf21633c0, + 0x80c7a80a, 0xf1e43d1c, 0x80cd3c2f, 0xf1b248a5, 0x80d2e3f2, 0xf1805662, 0x80d89f51, 0xf14e665c, + 0x80de6e4c, 0xf11c789a, 0x80e450e2, 0xf0ea8d24, 0x80ea4712, 0xf0b8a401, 0x80f050db, 0xf086bd39, + 0x80f66e3c, 0xf054d8d5, 0x80fc9f35, 0xf022f6da, 0x8102e3c4, 0xeff11753, 0x81093be8, 0xefbf3a45, + 0x810fa7a0, 0xef8d5fb8, 0x811626ec, 0xef5b87b5, 0x811cb9ca, 0xef29b243, 0x8123603a, 0xeef7df6a, + 0x812a1a3a, 0xeec60f31, 0x8130e7c9, 0xee9441a0, 0x8137c8e6, 0xee6276bf, 0x813ebd90, 0xee30ae96, + 0x8145c5c7, 0xedfee92b, 0x814ce188, 0xedcd2687, 0x815410d4, 0xed9b66b2, 0x815b53a8, 0xed69a9b3, + 0x8162aa04, 0xed37ef91, 0x816a13e6, 0xed063856, 0x8171914e, 0xecd48407, 0x8179223a, 0xeca2d2ad, + 0x8180c6a9, 0xec71244f, 0x81887e9a, 0xec3f78f6, 0x81904a0c, 0xec0dd0a8, 0x819828fd, 0xebdc2b6e, + 0x81a01b6d, 0xebaa894f, 0x81a82159, 0xeb78ea52, 0x81b03ac2, 0xeb474e81, 0x81b867a5, 0xeb15b5e1, + 0x81c0a801, 0xeae4207a, 0x81c8fbd6, 0xeab28e56, 0x81d16321, 0xea80ff7a, 0x81d9dde1, 0xea4f73ee, + 0x81e26c16, 0xea1debbb, 0x81eb0dbe, 0xe9ec66e8, 0x81f3c2d7, 0xe9bae57d, 0x81fc8b60, 0xe9896781, + 0x82056758, 0xe957ecfb, 0x820e56be, 0xe92675f4, 0x82175990, 0xe8f50273, 0x82206fcc, 0xe8c39280, + 0x82299971, 0xe8922622, 0x8232d67f, 0xe860bd61, 0x823c26f3, 0xe82f5844, 0x82458acc, 0xe7fdf6d4, + 0x824f0208, 0xe7cc9917, 0x82588ca7, 0xe79b3f16, 0x82622aa6, 0xe769e8d8, 0x826bdc04, 0xe7389665, + 0x8275a0c0, 0xe70747c4, 0x827f78d8, 0xe6d5fcfc, 0x8289644b, 0xe6a4b616, 0x82936317, 0xe6737319, + 0x829d753a, 0xe642340d, 0x82a79ab3, 0xe610f8f9, 0x82b1d381, 0xe5dfc1e5, 0x82bc1fa2, 0xe5ae8ed8, + 0x82c67f14, 0xe57d5fda, 0x82d0f1d5, 0xe54c34f3, 0x82db77e5, 0xe51b0e2a, 0x82e61141, 0xe4e9eb87, + 0x82f0bde8, 0xe4b8cd11, 0x82fb7dd8, 0xe487b2d0, 0x83065110, 0xe4569ccb, 0x8311378d, 0xe4258b0a, + 0x831c314e, 0xe3f47d96, 0x83273e52, 0xe3c37474, 0x83325e97, 0xe3926fad, 0x833d921b, 0xe3616f48, + 0x8348d8dc, 0xe330734d, 0x835432d8, 0xe2ff7bc3, 0x835fa00f, 0xe2ce88b3, 0x836b207d, 0xe29d9a23, + 0x8376b422, 0xe26cb01b, 0x83825afb, 0xe23bcaa2, 0x838e1507, 0xe20ae9c1, 0x8399e244, 0xe1da0d7e, + 0x83a5c2b0, 0xe1a935e2, 0x83b1b649, 0xe17862f3, 0x83bdbd0e, 0xe14794ba, 0x83c9d6fc, 0xe116cb3d, + 0x83d60412, 0xe0e60685, 0x83e2444d, 0xe0b54698, 0x83ee97ad, 0xe0848b7f, 0x83fafe2e, 0xe053d541, + 0x840777d0, 0xe02323e5, 0x84140490, 0xdff27773, 0x8420a46c, 0xdfc1cff3, 0x842d5762, 0xdf912d6b, + 0x843a1d70, 0xdf608fe4, 0x8446f695, 0xdf2ff764, 0x8453e2cf, 0xdeff63f4, 0x8460e21a, 0xdeced59b, + 0x846df477, 0xde9e4c60, 0x847b19e1, 0xde6dc84b, 0x84885258, 0xde3d4964, 0x84959dd9, 0xde0ccfb1, + 0x84a2fc62, 0xdddc5b3b, 0x84b06df2, 0xddabec08, 0x84bdf286, 0xdd7b8220, 0x84cb8a1b, 0xdd4b1d8c, + 0x84d934b1, 0xdd1abe51, 0x84e6f244, 0xdcea6478, 0x84f4c2d4, 0xdcba1008, 0x8502a65c, 0xdc89c109, + 0x85109cdd, 0xdc597781, 0x851ea652, 0xdc293379, 0x852cc2bb, 0xdbf8f4f8, 0x853af214, 0xdbc8bc06, + 0x8549345c, 0xdb9888a8, 0x85578991, 0xdb685ae9, 0x8565f1b0, 0xdb3832cd, 0x85746cb8, 0xdb08105e, + 0x8582faa5, 0xdad7f3a2, 0x85919b76, 0xdaa7dca1, 0x85a04f28, 0xda77cb63, 0x85af15b9, 0xda47bfee, + 0x85bdef28, 0xda17ba4a, 0x85ccdb70, 0xd9e7ba7f, 0x85dbda91, 0xd9b7c094, 0x85eaec88, 0xd987cc90, + 0x85fa1153, 0xd957de7a, 0x860948ef, 0xd927f65b, 0x86189359, 0xd8f81439, 0x8627f091, 0xd8c8381d, + 0x86376092, 0xd898620c, 0x8646e35c, 0xd868920f, 0x865678eb, 0xd838c82d, 0x8666213c, 0xd809046e, + 0x8675dc4f, 0xd7d946d8, 0x8685aa20, 0xd7a98f73, 0x86958aac, 0xd779de47, 0x86a57df2, 0xd74a335b, + 0x86b583ee, 0xd71a8eb5, 0x86c59c9f, 0xd6eaf05f, 0x86d5c802, 0xd6bb585e, 0x86e60614, 0xd68bc6ba, + 0x86f656d3, 0xd65c3b7b, 0x8706ba3d, 0xd62cb6a8, 0x8717304e, 0xd5fd3848, 0x8727b905, 0xd5cdc062, + 0x8738545e, 0xd59e4eff, 0x87490258, 0xd56ee424, 0x8759c2ef, 0xd53f7fda, 0x876a9621, 0xd5102228, + 0x877b7bec, 0xd4e0cb15, 0x878c744d, 0xd4b17aa8, 0x879d7f41, 0xd48230e9, 0x87ae9cc5, 0xd452eddf, + 0x87bfccd7, 0xd423b191, 0x87d10f75, 0xd3f47c06, 0x87e2649b, 0xd3c54d47, 0x87f3cc48, 0xd396255a, + 0x88054677, 0xd3670446, 0x8816d327, 0xd337ea12, 0x88287256, 0xd308d6c7, 0x883a23ff, 0xd2d9ca6a, + 0x884be821, 0xd2aac504, 0x885dbeb8, 0xd27bc69c, 0x886fa7c2, 0xd24ccf39, 0x8881a33d, 0xd21ddee2, + 0x8893b125, 0xd1eef59e, 0x88a5d177, 0xd1c01375, 0x88b80432, 0xd191386e, 0x88ca4951, 0xd1626490, + 0x88dca0d3, 0xd13397e2, 0x88ef0ab4, 0xd104d26b, 0x890186f2, 0xd0d61434, 0x89141589, 0xd0a75d42, + 0x8926b677, 0xd078ad9e, 0x893969b9, 0xd04a054e, 0x894c2f4c, 0xd01b6459, 0x895f072e, 0xcfeccac7, + 0x8971f15a, 0xcfbe389f, 0x8984edcf, 0xcf8fade9, 0x8997fc8a, 0xcf612aaa, 0x89ab1d87, 0xcf32aeeb, + 0x89be50c3, 0xcf043ab3, 0x89d1963c, 0xced5ce08, 0x89e4edef, 0xcea768f2, 0x89f857d8, 0xce790b79, + 0x8a0bd3f5, 0xce4ab5a2, 0x8a1f6243, 0xce1c6777, 0x8a3302be, 0xcdee20fc, 0x8a46b564, 0xcdbfe23a, + 0x8a5a7a31, 0xcd91ab39, 0x8a6e5123, 0xcd637bfe, 0x8a823a36, 0xcd355491, 0x8a963567, 0xcd0734f9, + 0x8aaa42b4, 0xccd91d3d, 0x8abe6219, 0xccab0d65, 0x8ad29394, 0xcc7d0578, 0x8ae6d720, 0xcc4f057c, + 0x8afb2cbb, 0xcc210d79, 0x8b0f9462, 0xcbf31d75, 0x8b240e11, 0xcbc53579, 0x8b3899c6, 0xcb97558a, + 0x8b4d377c, 0xcb697db0, 0x8b61e733, 0xcb3badf3, 0x8b76a8e4, 0xcb0de658, 0x8b8b7c8f, 0xcae026e8, + 0x8ba0622f, 0xcab26fa9, 0x8bb559c1, 0xca84c0a3, 0x8bca6343, 0xca5719db, 0x8bdf7eb0, 0xca297b5a, + 0x8bf4ac05, 0xc9fbe527, 0x8c09eb40, 0xc9ce5748, 0x8c1f3c5d, 0xc9a0d1c5, 0x8c349f58, 0xc97354a4, + 0x8c4a142f, 0xc945dfec, 0x8c5f9ade, 0xc91873a5, 0x8c753362, 0xc8eb0fd6, 0x8c8addb7, 0xc8bdb485, + 0x8ca099da, 0xc89061ba, 0x8cb667c8, 0xc863177b, 0x8ccc477d, 0xc835d5d0, 0x8ce238f6, 0xc8089cbf, + 0x8cf83c30, 0xc7db6c50, 0x8d0e5127, 0xc7ae4489, 0x8d2477d8, 0xc7812572, 0x8d3ab03f, 0xc7540f11, + 0x8d50fa59, 0xc727016d, 0x8d675623, 0xc6f9fc8d, 0x8d7dc399, 0xc6cd0079, 0x8d9442b8, 0xc6a00d37, + 0x8daad37b, 0xc67322ce, 0x8dc175e0, 0xc6464144, 0x8dd829e4, 0xc61968a2, 0x8deeef82, 0xc5ec98ee, + 0x8e05c6b7, 0xc5bfd22e, 0x8e1caf80, 0xc593146a, 0x8e33a9da, 0xc5665fa9, 0x8e4ab5bf, 0xc539b3f1, + 0x8e61d32e, 0xc50d1149, 0x8e790222, 0xc4e077b8, 0x8e904298, 0xc4b3e746, 0x8ea7948c, 0xc4875ff9, + 0x8ebef7fb, 0xc45ae1d7, 0x8ed66ce1, 0xc42e6ce8, 0x8eedf33b, 0xc4020133, 0x8f058b04, 0xc3d59ebe, + 0x8f1d343a, 0xc3a94590, 0x8f34eed8, 0xc37cf5b0, 0x8f4cbadb, 0xc350af26, 0x8f649840, 0xc32471f7, + 0x8f7c8701, 0xc2f83e2a, 0x8f94871d, 0xc2cc13c7, 0x8fac988f, 0xc29ff2d4, 0x8fc4bb53, 0xc273db58, + 0x8fdcef66, 0xc247cd5a, 0x8ff534c4, 0xc21bc8e1, 0x900d8b69, 0xc1efcdf3, 0x9025f352, 0xc1c3dc97, + 0x903e6c7b, 0xc197f4d4, 0x9056f6df, 0xc16c16b0, 0x906f927c, 0xc1404233, 0x90883f4d, 0xc1147764, + 0x90a0fd4e, 0xc0e8b648, 0x90b9cc7d, 0xc0bcfee7, 0x90d2acd4, 0xc0915148, 0x90eb9e50, 0xc065ad70, + 0x9104a0ee, 0xc03a1368, 0x911db4a9, 0xc00e8336, 0x9136d97d, 0xbfe2fcdf, 0x91500f67, 0xbfb7806c, + 0x91695663, 0xbf8c0de3, 0x9182ae6d, 0xbf60a54a, 0x919c1781, 0xbf3546a8, 0x91b5919a, 0xbf09f205, + 0x91cf1cb6, 0xbedea765, 0x91e8b8d0, 0xbeb366d1, 0x920265e4, 0xbe88304f, 0x921c23ef, 0xbe5d03e6, + 0x9235f2ec, 0xbe31e19b, 0x924fd2d7, 0xbe06c977, 0x9269c3ac, 0xbddbbb7f, 0x9283c568, 0xbdb0b7bb, + 0x929dd806, 0xbd85be30, 0x92b7fb82, 0xbd5acee5, 0x92d22fd9, 0xbd2fe9e2, 0x92ec7505, 0xbd050f2c, + 0x9306cb04, 0xbcda3ecb, 0x932131d1, 0xbcaf78c4, 0x933ba968, 0xbc84bd1f, 0x935631c5, 0xbc5a0be2, + 0x9370cae4, 0xbc2f6513, 0x938b74c1, 0xbc04c8ba, 0x93a62f57, 0xbbda36dd, 0x93c0faa3, 0xbbafaf82, + 0x93dbd6a0, 0xbb8532b0, 0x93f6c34a, 0xbb5ac06d, 0x9411c09e, 0xbb3058c0, 0x942cce96, 0xbb05fbb0, + 0x9447ed2f, 0xbadba943, 0x94631c65, 0xbab16180, 0x947e5c33, 0xba87246d, 0x9499ac95, 0xba5cf210, + 0x94b50d87, 0xba32ca71, 0x94d07f05, 0xba08ad95, 0x94ec010b, 0xb9de9b83, 0x95079394, 0xb9b49442, + 0x9523369c, 0xb98a97d8, 0x953eea1e, 0xb960a64c, 0x955aae17, 0xb936bfa4, 0x95768283, 0xb90ce3e6, + 0x9592675c, 0xb8e31319, 0x95ae5c9f, 0xb8b94d44, 0x95ca6247, 0xb88f926d, 0x95e67850, 0xb865e299, + 0x96029eb6, 0xb83c3dd1, 0x961ed574, 0xb812a41a, 0x963b1c86, 0xb7e9157a, 0x965773e7, 0xb7bf91f8, + 0x9673db94, 0xb796199b, 0x96905388, 0xb76cac69, 0x96acdbbe, 0xb7434a67, 0x96c97432, 0xb719f39e, + 0x96e61ce0, 0xb6f0a812, 0x9702d5c3, 0xb6c767ca, 0x971f9ed7, 0xb69e32cd, 0x973c7817, 0xb6750921, + 0x9759617f, 0xb64beacd, 0x97765b0a, 0xb622d7d6, 0x979364b5, 0xb5f9d043, 0x97b07e7a, 0xb5d0d41a, + 0x97cda855, 0xb5a7e362, 0x97eae242, 0xb57efe22, 0x98082c3b, 0xb556245e, 0x9825863d, 0xb52d561e, + 0x9842f043, 0xb5049368, 0x98606a49, 0xb4dbdc42, 0x987df449, 0xb4b330b3, 0x989b8e40, 0xb48a90c0, + 0x98b93828, 0xb461fc70, 0x98d6f1fe, 0xb43973ca, 0x98f4bbbc, 0xb410f6d3, 0x9912955f, 0xb3e88592, + 0x99307ee0, 0xb3c0200c, 0x994e783d, 0xb397c649, 0x996c816f, 0xb36f784f, 0x998a9a74, 0xb3473623, + 0x99a8c345, 0xb31effcc, 0x99c6fbde, 0xb2f6d550, 0x99e5443b, 0xb2ceb6b5, 0x9a039c57, 0xb2a6a402, + 0x9a22042d, 0xb27e9d3c, 0x9a407bb9, 0xb256a26a, 0x9a5f02f5, 0xb22eb392, 0x9a7d99de, 0xb206d0ba, + 0x9a9c406e, 0xb1def9e9, 0x9abaf6a1, 0xb1b72f23, 0x9ad9bc71, 0xb18f7071, 0x9af891db, 0xb167bdd7, + 0x9b1776da, 0xb140175b, 0x9b366b68, 0xb1187d05, 0x9b556f81, 0xb0f0eeda, 0x9b748320, 0xb0c96ce0, + 0x9b93a641, 0xb0a1f71d, 0x9bb2d8de, 0xb07a8d97, 0x9bd21af3, 0xb0533055, 0x9bf16c7a, 0xb02bdf5c, + 0x9c10cd70, 0xb0049ab3, 0x9c303dcf, 0xafdd625f, 0x9c4fbd93, 0xafb63667, 0x9c6f4cb6, 0xaf8f16d1, + 0x9c8eeb34, 0xaf6803a2, 0x9cae9907, 0xaf40fce1, 0x9cce562c, 0xaf1a0293, 0x9cee229c, 0xaef314c0, + 0x9d0dfe54, 0xaecc336c, 0x9d2de94d, 0xaea55e9e, 0x9d4de385, 0xae7e965b, 0x9d6decf4, 0xae57daab, + 0x9d8e0597, 0xae312b92, 0x9dae2d68, 0xae0a8916, 0x9dce6463, 0xade3f33e, 0x9deeaa82, 0xadbd6a10, + 0x9e0effc1, 0xad96ed92, 0x9e2f641b, 0xad707dc8, 0x9e4fd78a, 0xad4a1aba, 0x9e705a09, 0xad23c46e, + 0x9e90eb94, 0xacfd7ae8, 0x9eb18c26, 0xacd73e30, 0x9ed23bb9, 0xacb10e4b, 0x9ef2fa49, 0xac8aeb3e, + 0x9f13c7d0, 0xac64d510, 0x9f34a449, 0xac3ecbc7, 0x9f558fb0, 0xac18cf69, 0x9f7689ff, 0xabf2dffb, + 0x9f979331, 0xabccfd83, 0x9fb8ab41, 0xaba72807, 0x9fd9d22a, 0xab815f8d, 0x9ffb07e7, 0xab5ba41a, + 0xa01c4c73, 0xab35f5b5, 0xa03d9fc8, 0xab105464, 0xa05f01e1, 0xaaeac02c, 0xa08072ba, 0xaac53912, + 0xa0a1f24d, 0xaa9fbf1e, 0xa0c38095, 0xaa7a5253, 0xa0e51d8c, 0xaa54f2ba, 0xa106c92f, 0xaa2fa056, + 0xa1288376, 0xaa0a5b2e, 0xa14a4c5e, 0xa9e52347, 0xa16c23e1, 0xa9bff8a8, 0xa18e09fa, 0xa99adb56, + 0xa1affea3, 0xa975cb57, 0xa1d201d7, 0xa950c8b0, 0xa1f41392, 0xa92bd367, 0xa21633cd, 0xa906eb82, + 0xa2386284, 0xa8e21106, 0xa25a9fb1, 0xa8bd43fa, 0xa27ceb4f, 0xa8988463, 0xa29f4559, 0xa873d246, + 0xa2c1adc9, 0xa84f2daa, 0xa2e4249b, 0xa82a9693, 0xa306a9c8, 0xa8060d08, 0xa3293d4b, 0xa7e1910f, + 0xa34bdf20, 0xa7bd22ac, 0xa36e8f41, 0xa798c1e5, 0xa3914da8, 0xa7746ec0, 0xa3b41a50, 0xa7502943, + 0xa3d6f534, 0xa72bf174, 0xa3f9de4e, 0xa707c757, 0xa41cd599, 0xa6e3aaf2, 0xa43fdb10, 0xa6bf9c4b, + 0xa462eeac, 0xa69b9b68, 0xa486106a, 0xa677a84e, 0xa4a94043, 0xa653c303, 0xa4cc7e32, 0xa62feb8b, + 0xa4efca31, 0xa60c21ee, 0xa513243b, 0xa5e8662f, 0xa5368c4b, 0xa5c4b855, 0xa55a025b, 0xa5a11866, + 0xa57d8666, 0xa57d8666, 0xa5a11866, 0xa55a025b, 0xa5c4b855, 0xa5368c4b, 0xa5e8662f, 0xa513243b, + 0xa60c21ee, 0xa4efca31, 0xa62feb8b, 0xa4cc7e32, 0xa653c303, 0xa4a94043, 0xa677a84e, 0xa486106a, + 0xa69b9b68, 0xa462eeac, 0xa6bf9c4b, 0xa43fdb10, 0xa6e3aaf2, 0xa41cd599, 0xa707c757, 0xa3f9de4e, + 0xa72bf174, 0xa3d6f534, 0xa7502943, 0xa3b41a50, 0xa7746ec0, 0xa3914da8, 0xa798c1e5, 0xa36e8f41, + 0xa7bd22ac, 0xa34bdf20, 0xa7e1910f, 0xa3293d4b, 0xa8060d08, 0xa306a9c8, 0xa82a9693, 0xa2e4249b, + 0xa84f2daa, 0xa2c1adc9, 0xa873d246, 0xa29f4559, 0xa8988463, 0xa27ceb4f, 0xa8bd43fa, 0xa25a9fb1, + 0xa8e21106, 0xa2386284, 0xa906eb82, 0xa21633cd, 0xa92bd367, 0xa1f41392, 0xa950c8b0, 0xa1d201d7, + 0xa975cb57, 0xa1affea3, 0xa99adb56, 0xa18e09fa, 0xa9bff8a8, 0xa16c23e1, 0xa9e52347, 0xa14a4c5e, + 0xaa0a5b2e, 0xa1288376, 0xaa2fa056, 0xa106c92f, 0xaa54f2ba, 0xa0e51d8c, 0xaa7a5253, 0xa0c38095, + 0xaa9fbf1e, 0xa0a1f24d, 0xaac53912, 0xa08072ba, 0xaaeac02c, 0xa05f01e1, 0xab105464, 0xa03d9fc8, + 0xab35f5b5, 0xa01c4c73, 0xab5ba41a, 0x9ffb07e7, 0xab815f8d, 0x9fd9d22a, 0xaba72807, 0x9fb8ab41, + 0xabccfd83, 0x9f979331, 0xabf2dffb, 0x9f7689ff, 0xac18cf69, 0x9f558fb0, 0xac3ecbc7, 0x9f34a449, + 0xac64d510, 0x9f13c7d0, 0xac8aeb3e, 0x9ef2fa49, 0xacb10e4b, 0x9ed23bb9, 0xacd73e30, 0x9eb18c26, + 0xacfd7ae8, 0x9e90eb94, 0xad23c46e, 0x9e705a09, 0xad4a1aba, 0x9e4fd78a, 0xad707dc8, 0x9e2f641b, + 0xad96ed92, 0x9e0effc1, 0xadbd6a10, 0x9deeaa82, 0xade3f33e, 0x9dce6463, 0xae0a8916, 0x9dae2d68, + 0xae312b92, 0x9d8e0597, 0xae57daab, 0x9d6decf4, 0xae7e965b, 0x9d4de385, 0xaea55e9e, 0x9d2de94d, + 0xaecc336c, 0x9d0dfe54, 0xaef314c0, 0x9cee229c, 0xaf1a0293, 0x9cce562c, 0xaf40fce1, 0x9cae9907, + 0xaf6803a2, 0x9c8eeb34, 0xaf8f16d1, 0x9c6f4cb6, 0xafb63667, 0x9c4fbd93, 0xafdd625f, 0x9c303dcf, + 0xb0049ab3, 0x9c10cd70, 0xb02bdf5c, 0x9bf16c7a, 0xb0533055, 0x9bd21af3, 0xb07a8d97, 0x9bb2d8de, + 0xb0a1f71d, 0x9b93a641, 0xb0c96ce0, 0x9b748320, 0xb0f0eeda, 0x9b556f81, 0xb1187d05, 0x9b366b68, + 0xb140175b, 0x9b1776da, 0xb167bdd7, 0x9af891db, 0xb18f7071, 0x9ad9bc71, 0xb1b72f23, 0x9abaf6a1, + 0xb1def9e9, 0x9a9c406e, 0xb206d0ba, 0x9a7d99de, 0xb22eb392, 0x9a5f02f5, 0xb256a26a, 0x9a407bb9, + 0xb27e9d3c, 0x9a22042d, 0xb2a6a402, 0x9a039c57, 0xb2ceb6b5, 0x99e5443b, 0xb2f6d550, 0x99c6fbde, + 0xb31effcc, 0x99a8c345, 0xb3473623, 0x998a9a74, 0xb36f784f, 0x996c816f, 0xb397c649, 0x994e783d, + 0xb3c0200c, 0x99307ee0, 0xb3e88592, 0x9912955f, 0xb410f6d3, 0x98f4bbbc, 0xb43973ca, 0x98d6f1fe, + 0xb461fc70, 0x98b93828, 0xb48a90c0, 0x989b8e40, 0xb4b330b3, 0x987df449, 0xb4dbdc42, 0x98606a49, + 0xb5049368, 0x9842f043, 0xb52d561e, 0x9825863d, 0xb556245e, 0x98082c3b, 0xb57efe22, 0x97eae242, + 0xb5a7e362, 0x97cda855, 0xb5d0d41a, 0x97b07e7a, 0xb5f9d043, 0x979364b5, 0xb622d7d6, 0x97765b0a, + 0xb64beacd, 0x9759617f, 0xb6750921, 0x973c7817, 0xb69e32cd, 0x971f9ed7, 0xb6c767ca, 0x9702d5c3, + 0xb6f0a812, 0x96e61ce0, 0xb719f39e, 0x96c97432, 0xb7434a67, 0x96acdbbe, 0xb76cac69, 0x96905388, + 0xb796199b, 0x9673db94, 0xb7bf91f8, 0x965773e7, 0xb7e9157a, 0x963b1c86, 0xb812a41a, 0x961ed574, + 0xb83c3dd1, 0x96029eb6, 0xb865e299, 0x95e67850, 0xb88f926d, 0x95ca6247, 0xb8b94d44, 0x95ae5c9f, + 0xb8e31319, 0x9592675c, 0xb90ce3e6, 0x95768283, 0xb936bfa4, 0x955aae17, 0xb960a64c, 0x953eea1e, + 0xb98a97d8, 0x9523369c, 0xb9b49442, 0x95079394, 0xb9de9b83, 0x94ec010b, 0xba08ad95, 0x94d07f05, + 0xba32ca71, 0x94b50d87, 0xba5cf210, 0x9499ac95, 0xba87246d, 0x947e5c33, 0xbab16180, 0x94631c65, + 0xbadba943, 0x9447ed2f, 0xbb05fbb0, 0x942cce96, 0xbb3058c0, 0x9411c09e, 0xbb5ac06d, 0x93f6c34a, + 0xbb8532b0, 0x93dbd6a0, 0xbbafaf82, 0x93c0faa3, 0xbbda36dd, 0x93a62f57, 0xbc04c8ba, 0x938b74c1, + 0xbc2f6513, 0x9370cae4, 0xbc5a0be2, 0x935631c5, 0xbc84bd1f, 0x933ba968, 0xbcaf78c4, 0x932131d1, + 0xbcda3ecb, 0x9306cb04, 0xbd050f2c, 0x92ec7505, 0xbd2fe9e2, 0x92d22fd9, 0xbd5acee5, 0x92b7fb82, + 0xbd85be30, 0x929dd806, 0xbdb0b7bb, 0x9283c568, 0xbddbbb7f, 0x9269c3ac, 0xbe06c977, 0x924fd2d7, + 0xbe31e19b, 0x9235f2ec, 0xbe5d03e6, 0x921c23ef, 0xbe88304f, 0x920265e4, 0xbeb366d1, 0x91e8b8d0, + 0xbedea765, 0x91cf1cb6, 0xbf09f205, 0x91b5919a, 0xbf3546a8, 0x919c1781, 0xbf60a54a, 0x9182ae6d, + 0xbf8c0de3, 0x91695663, 0xbfb7806c, 0x91500f67, 0xbfe2fcdf, 0x9136d97d, 0xc00e8336, 0x911db4a9, + 0xc03a1368, 0x9104a0ee, 0xc065ad70, 0x90eb9e50, 0xc0915148, 0x90d2acd4, 0xc0bcfee7, 0x90b9cc7d, + 0xc0e8b648, 0x90a0fd4e, 0xc1147764, 0x90883f4d, 0xc1404233, 0x906f927c, 0xc16c16b0, 0x9056f6df, + 0xc197f4d4, 0x903e6c7b, 0xc1c3dc97, 0x9025f352, 0xc1efcdf3, 0x900d8b69, 0xc21bc8e1, 0x8ff534c4, + 0xc247cd5a, 0x8fdcef66, 0xc273db58, 0x8fc4bb53, 0xc29ff2d4, 0x8fac988f, 0xc2cc13c7, 0x8f94871d, + 0xc2f83e2a, 0x8f7c8701, 0xc32471f7, 0x8f649840, 0xc350af26, 0x8f4cbadb, 0xc37cf5b0, 0x8f34eed8, + 0xc3a94590, 0x8f1d343a, 0xc3d59ebe, 0x8f058b04, 0xc4020133, 0x8eedf33b, 0xc42e6ce8, 0x8ed66ce1, + 0xc45ae1d7, 0x8ebef7fb, 0xc4875ff9, 0x8ea7948c, 0xc4b3e746, 0x8e904298, 0xc4e077b8, 0x8e790222, + 0xc50d1149, 0x8e61d32e, 0xc539b3f1, 0x8e4ab5bf, 0xc5665fa9, 0x8e33a9da, 0xc593146a, 0x8e1caf80, + 0xc5bfd22e, 0x8e05c6b7, 0xc5ec98ee, 0x8deeef82, 0xc61968a2, 0x8dd829e4, 0xc6464144, 0x8dc175e0, + 0xc67322ce, 0x8daad37b, 0xc6a00d37, 0x8d9442b8, 0xc6cd0079, 0x8d7dc399, 0xc6f9fc8d, 0x8d675623, + 0xc727016d, 0x8d50fa59, 0xc7540f11, 0x8d3ab03f, 0xc7812572, 0x8d2477d8, 0xc7ae4489, 0x8d0e5127, + 0xc7db6c50, 0x8cf83c30, 0xc8089cbf, 0x8ce238f6, 0xc835d5d0, 0x8ccc477d, 0xc863177b, 0x8cb667c8, + 0xc89061ba, 0x8ca099da, 0xc8bdb485, 0x8c8addb7, 0xc8eb0fd6, 0x8c753362, 0xc91873a5, 0x8c5f9ade, + 0xc945dfec, 0x8c4a142f, 0xc97354a4, 0x8c349f58, 0xc9a0d1c5, 0x8c1f3c5d, 0xc9ce5748, 0x8c09eb40, + 0xc9fbe527, 0x8bf4ac05, 0xca297b5a, 0x8bdf7eb0, 0xca5719db, 0x8bca6343, 0xca84c0a3, 0x8bb559c1, + 0xcab26fa9, 0x8ba0622f, 0xcae026e8, 0x8b8b7c8f, 0xcb0de658, 0x8b76a8e4, 0xcb3badf3, 0x8b61e733, + 0xcb697db0, 0x8b4d377c, 0xcb97558a, 0x8b3899c6, 0xcbc53579, 0x8b240e11, 0xcbf31d75, 0x8b0f9462, + 0xcc210d79, 0x8afb2cbb, 0xcc4f057c, 0x8ae6d720, 0xcc7d0578, 0x8ad29394, 0xccab0d65, 0x8abe6219, + 0xccd91d3d, 0x8aaa42b4, 0xcd0734f9, 0x8a963567, 0xcd355491, 0x8a823a36, 0xcd637bfe, 0x8a6e5123, + 0xcd91ab39, 0x8a5a7a31, 0xcdbfe23a, 0x8a46b564, 0xcdee20fc, 0x8a3302be, 0xce1c6777, 0x8a1f6243, + 0xce4ab5a2, 0x8a0bd3f5, 0xce790b79, 0x89f857d8, 0xcea768f2, 0x89e4edef, 0xced5ce08, 0x89d1963c, + 0xcf043ab3, 0x89be50c3, 0xcf32aeeb, 0x89ab1d87, 0xcf612aaa, 0x8997fc8a, 0xcf8fade9, 0x8984edcf, + 0xcfbe389f, 0x8971f15a, 0xcfeccac7, 0x895f072e, 0xd01b6459, 0x894c2f4c, 0xd04a054e, 0x893969b9, + 0xd078ad9e, 0x8926b677, 0xd0a75d42, 0x89141589, 0xd0d61434, 0x890186f2, 0xd104d26b, 0x88ef0ab4, + 0xd13397e2, 0x88dca0d3, 0xd1626490, 0x88ca4951, 0xd191386e, 0x88b80432, 0xd1c01375, 0x88a5d177, + 0xd1eef59e, 0x8893b125, 0xd21ddee2, 0x8881a33d, 0xd24ccf39, 0x886fa7c2, 0xd27bc69c, 0x885dbeb8, + 0xd2aac504, 0x884be821, 0xd2d9ca6a, 0x883a23ff, 0xd308d6c7, 0x88287256, 0xd337ea12, 0x8816d327, + 0xd3670446, 0x88054677, 0xd396255a, 0x87f3cc48, 0xd3c54d47, 0x87e2649b, 0xd3f47c06, 0x87d10f75, + 0xd423b191, 0x87bfccd7, 0xd452eddf, 0x87ae9cc5, 0xd48230e9, 0x879d7f41, 0xd4b17aa8, 0x878c744d, + 0xd4e0cb15, 0x877b7bec, 0xd5102228, 0x876a9621, 0xd53f7fda, 0x8759c2ef, 0xd56ee424, 0x87490258, + 0xd59e4eff, 0x8738545e, 0xd5cdc062, 0x8727b905, 0xd5fd3848, 0x8717304e, 0xd62cb6a8, 0x8706ba3d, + 0xd65c3b7b, 0x86f656d3, 0xd68bc6ba, 0x86e60614, 0xd6bb585e, 0x86d5c802, 0xd6eaf05f, 0x86c59c9f, + 0xd71a8eb5, 0x86b583ee, 0xd74a335b, 0x86a57df2, 0xd779de47, 0x86958aac, 0xd7a98f73, 0x8685aa20, + 0xd7d946d8, 0x8675dc4f, 0xd809046e, 0x8666213c, 0xd838c82d, 0x865678eb, 0xd868920f, 0x8646e35c, + 0xd898620c, 0x86376092, 0xd8c8381d, 0x8627f091, 0xd8f81439, 0x86189359, 0xd927f65b, 0x860948ef, + 0xd957de7a, 0x85fa1153, 0xd987cc90, 0x85eaec88, 0xd9b7c094, 0x85dbda91, 0xd9e7ba7f, 0x85ccdb70, + 0xda17ba4a, 0x85bdef28, 0xda47bfee, 0x85af15b9, 0xda77cb63, 0x85a04f28, 0xdaa7dca1, 0x85919b76, + 0xdad7f3a2, 0x8582faa5, 0xdb08105e, 0x85746cb8, 0xdb3832cd, 0x8565f1b0, 0xdb685ae9, 0x85578991, + 0xdb9888a8, 0x8549345c, 0xdbc8bc06, 0x853af214, 0xdbf8f4f8, 0x852cc2bb, 0xdc293379, 0x851ea652, + 0xdc597781, 0x85109cdd, 0xdc89c109, 0x8502a65c, 0xdcba1008, 0x84f4c2d4, 0xdcea6478, 0x84e6f244, + 0xdd1abe51, 0x84d934b1, 0xdd4b1d8c, 0x84cb8a1b, 0xdd7b8220, 0x84bdf286, 0xddabec08, 0x84b06df2, + 0xdddc5b3b, 0x84a2fc62, 0xde0ccfb1, 0x84959dd9, 0xde3d4964, 0x84885258, 0xde6dc84b, 0x847b19e1, + 0xde9e4c60, 0x846df477, 0xdeced59b, 0x8460e21a, 0xdeff63f4, 0x8453e2cf, 0xdf2ff764, 0x8446f695, + 0xdf608fe4, 0x843a1d70, 0xdf912d6b, 0x842d5762, 0xdfc1cff3, 0x8420a46c, 0xdff27773, 0x84140490, + 0xe02323e5, 0x840777d0, 0xe053d541, 0x83fafe2e, 0xe0848b7f, 0x83ee97ad, 0xe0b54698, 0x83e2444d, + 0xe0e60685, 0x83d60412, 0xe116cb3d, 0x83c9d6fc, 0xe14794ba, 0x83bdbd0e, 0xe17862f3, 0x83b1b649, + 0xe1a935e2, 0x83a5c2b0, 0xe1da0d7e, 0x8399e244, 0xe20ae9c1, 0x838e1507, 0xe23bcaa2, 0x83825afb, + 0xe26cb01b, 0x8376b422, 0xe29d9a23, 0x836b207d, 0xe2ce88b3, 0x835fa00f, 0xe2ff7bc3, 0x835432d8, + 0xe330734d, 0x8348d8dc, 0xe3616f48, 0x833d921b, 0xe3926fad, 0x83325e97, 0xe3c37474, 0x83273e52, + 0xe3f47d96, 0x831c314e, 0xe4258b0a, 0x8311378d, 0xe4569ccb, 0x83065110, 0xe487b2d0, 0x82fb7dd8, + 0xe4b8cd11, 0x82f0bde8, 0xe4e9eb87, 0x82e61141, 0xe51b0e2a, 0x82db77e5, 0xe54c34f3, 0x82d0f1d5, + 0xe57d5fda, 0x82c67f14, 0xe5ae8ed8, 0x82bc1fa2, 0xe5dfc1e5, 0x82b1d381, 0xe610f8f9, 0x82a79ab3, + 0xe642340d, 0x829d753a, 0xe6737319, 0x82936317, 0xe6a4b616, 0x8289644b, 0xe6d5fcfc, 0x827f78d8, + 0xe70747c4, 0x8275a0c0, 0xe7389665, 0x826bdc04, 0xe769e8d8, 0x82622aa6, 0xe79b3f16, 0x82588ca7, + 0xe7cc9917, 0x824f0208, 0xe7fdf6d4, 0x82458acc, 0xe82f5844, 0x823c26f3, 0xe860bd61, 0x8232d67f, + 0xe8922622, 0x82299971, 0xe8c39280, 0x82206fcc, 0xe8f50273, 0x82175990, 0xe92675f4, 0x820e56be, + 0xe957ecfb, 0x82056758, 0xe9896781, 0x81fc8b60, 0xe9bae57d, 0x81f3c2d7, 0xe9ec66e8, 0x81eb0dbe, + 0xea1debbb, 0x81e26c16, 0xea4f73ee, 0x81d9dde1, 0xea80ff7a, 0x81d16321, 0xeab28e56, 0x81c8fbd6, + 0xeae4207a, 0x81c0a801, 0xeb15b5e1, 0x81b867a5, 0xeb474e81, 0x81b03ac2, 0xeb78ea52, 0x81a82159, + 0xebaa894f, 0x81a01b6d, 0xebdc2b6e, 0x819828fd, 0xec0dd0a8, 0x81904a0c, 0xec3f78f6, 0x81887e9a, + 0xec71244f, 0x8180c6a9, 0xeca2d2ad, 0x8179223a, 0xecd48407, 0x8171914e, 0xed063856, 0x816a13e6, + 0xed37ef91, 0x8162aa04, 0xed69a9b3, 0x815b53a8, 0xed9b66b2, 0x815410d4, 0xedcd2687, 0x814ce188, + 0xedfee92b, 0x8145c5c7, 0xee30ae96, 0x813ebd90, 0xee6276bf, 0x8137c8e6, 0xee9441a0, 0x8130e7c9, + 0xeec60f31, 0x812a1a3a, 0xeef7df6a, 0x8123603a, 0xef29b243, 0x811cb9ca, 0xef5b87b5, 0x811626ec, + 0xef8d5fb8, 0x810fa7a0, 0xefbf3a45, 0x81093be8, 0xeff11753, 0x8102e3c4, 0xf022f6da, 0x80fc9f35, + 0xf054d8d5, 0x80f66e3c, 0xf086bd39, 0x80f050db, 0xf0b8a401, 0x80ea4712, 0xf0ea8d24, 0x80e450e2, + 0xf11c789a, 0x80de6e4c, 0xf14e665c, 0x80d89f51, 0xf1805662, 0x80d2e3f2, 0xf1b248a5, 0x80cd3c2f, + 0xf1e43d1c, 0x80c7a80a, 0xf21633c0, 0x80c22784, 0xf2482c8a, 0x80bcba9d, 0xf27a2771, 0x80b76156, + 0xf2ac246e, 0x80b21baf, 0xf2de2379, 0x80ace9ab, 0xf310248a, 0x80a7cb49, 0xf342279b, 0x80a2c08b, + 0xf3742ca2, 0x809dc971, 0xf3a63398, 0x8098e5fb, 0xf3d83c77, 0x8094162c, 0xf40a4735, 0x808f5a02, + 0xf43c53cb, 0x808ab180, 0xf46e6231, 0x80861ca6, 0xf4a07261, 0x80819b74, 0xf4d28451, 0x807d2dec, + 0xf50497fb, 0x8078d40d, 0xf536ad56, 0x80748dd9, 0xf568c45b, 0x80705b50, 0xf59add02, 0x806c3c74, + 0xf5ccf743, 0x80683143, 0xf5ff1318, 0x806439c0, 0xf6313077, 0x806055eb, 0xf6634f59, 0x805c85c4, + 0xf6956fb7, 0x8058c94c, 0xf6c79188, 0x80552084, 0xf6f9b4c6, 0x80518b6b, 0xf72bd967, 0x804e0a04, + 0xf75dff66, 0x804a9c4d, 0xf79026b9, 0x80474248, 0xf7c24f59, 0x8043fbf6, 0xf7f4793e, 0x8040c956, + 0xf826a462, 0x803daa6a, 0xf858d0bb, 0x803a9f31, 0xf88afe42, 0x8037a7ac, 0xf8bd2cef, 0x8034c3dd, + 0xf8ef5cbb, 0x8031f3c2, 0xf9218d9e, 0x802f375d, 0xf953bf91, 0x802c8ead, 0xf985f28a, 0x8029f9b4, + 0xf9b82684, 0x80277872, 0xf9ea5b75, 0x80250ae7, 0xfa1c9157, 0x8022b114, 0xfa4ec821, 0x80206af8, + 0xfa80ffcb, 0x801e3895, 0xfab3384f, 0x801c19ea, 0xfae571a4, 0x801a0ef8, 0xfb17abc2, 0x801817bf, + 0xfb49e6a3, 0x80163440, 0xfb7c223d, 0x8014647b, 0xfbae5e89, 0x8012a86f, 0xfbe09b80, 0x8011001f, + 0xfc12d91a, 0x800f6b88, 0xfc45174e, 0x800deaad, 0xfc775616, 0x800c7d8c, 0xfca9956a, 0x800b2427, + 0xfcdbd541, 0x8009de7e, 0xfd0e1594, 0x8008ac90, 0xfd40565c, 0x80078e5e, 0xfd729790, 0x800683e8, + 0xfda4d929, 0x80058d2f, 0xfdd71b1e, 0x8004aa32, 0xfe095d69, 0x8003daf1, 0xfe3ba002, 0x80031f6d, + 0xfe6de2e0, 0x800277a6, 0xfea025fd, 0x8001e39b, 0xfed2694f, 0x8001634e, 0xff04acd0, 0x8000f6bd, + 0xff36f078, 0x80009dea, 0xff69343f, 0x800058d4, 0xff9b781d, 0x8000277a, 0xffcdbc0b, 0x800009df, + 0x0, 0x80000000, 0x3243f5, 0x800009df, 0x6487e3, 0x8000277a, 0x96cbc1, 0x800058d4, + 0xc90f88, 0x80009dea, 0xfb5330, 0x8000f6bd, 0x12d96b1, 0x8001634e, 0x15fda03, 0x8001e39b, + 0x1921d20, 0x800277a6, 0x1c45ffe, 0x80031f6d, 0x1f6a297, 0x8003daf1, 0x228e4e2, 0x8004aa32, + 0x25b26d7, 0x80058d2f, 0x28d6870, 0x800683e8, 0x2bfa9a4, 0x80078e5e, 0x2f1ea6c, 0x8008ac90, + 0x3242abf, 0x8009de7e, 0x3566a96, 0x800b2427, 0x388a9ea, 0x800c7d8c, 0x3bae8b2, 0x800deaad, + 0x3ed26e6, 0x800f6b88, 0x41f6480, 0x8011001f, 0x451a177, 0x8012a86f, 0x483ddc3, 0x8014647b, + 0x4b6195d, 0x80163440, 0x4e8543e, 0x801817bf, 0x51a8e5c, 0x801a0ef8, 0x54cc7b1, 0x801c19ea, + 0x57f0035, 0x801e3895, 0x5b137df, 0x80206af8, 0x5e36ea9, 0x8022b114, 0x615a48b, 0x80250ae7, + 0x647d97c, 0x80277872, 0x67a0d76, 0x8029f9b4, 0x6ac406f, 0x802c8ead, 0x6de7262, 0x802f375d, + 0x710a345, 0x8031f3c2, 0x742d311, 0x8034c3dd, 0x77501be, 0x8037a7ac, 0x7a72f45, 0x803a9f31, + 0x7d95b9e, 0x803daa6a, 0x80b86c2, 0x8040c956, 0x83db0a7, 0x8043fbf6, 0x86fd947, 0x80474248, + 0x8a2009a, 0x804a9c4d, 0x8d42699, 0x804e0a04, 0x9064b3a, 0x80518b6b, 0x9386e78, 0x80552084, + 0x96a9049, 0x8058c94c, 0x99cb0a7, 0x805c85c4, 0x9cecf89, 0x806055eb, 0xa00ece8, 0x806439c0, + 0xa3308bd, 0x80683143, 0xa6522fe, 0x806c3c74, 0xa973ba5, 0x80705b50, 0xac952aa, 0x80748dd9, + 0xafb6805, 0x8078d40d, 0xb2d7baf, 0x807d2dec, 0xb5f8d9f, 0x80819b74, 0xb919dcf, 0x80861ca6, + 0xbc3ac35, 0x808ab180, 0xbf5b8cb, 0x808f5a02, 0xc27c389, 0x8094162c, 0xc59cc68, 0x8098e5fb, + 0xc8bd35e, 0x809dc971, 0xcbdd865, 0x80a2c08b, 0xcefdb76, 0x80a7cb49, 0xd21dc87, 0x80ace9ab, + 0xd53db92, 0x80b21baf, 0xd85d88f, 0x80b76156, 0xdb7d376, 0x80bcba9d, 0xde9cc40, 0x80c22784, + 0xe1bc2e4, 0x80c7a80a, 0xe4db75b, 0x80cd3c2f, 0xe7fa99e, 0x80d2e3f2, 0xeb199a4, 0x80d89f51, + 0xee38766, 0x80de6e4c, 0xf1572dc, 0x80e450e2, 0xf475bff, 0x80ea4712, 0xf7942c7, 0x80f050db, + 0xfab272b, 0x80f66e3c, 0xfdd0926, 0x80fc9f35, 0x100ee8ad, 0x8102e3c4, 0x1040c5bb, 0x81093be8, + 0x1072a048, 0x810fa7a0, 0x10a4784b, 0x811626ec, 0x10d64dbd, 0x811cb9ca, 0x11082096, 0x8123603a, + 0x1139f0cf, 0x812a1a3a, 0x116bbe60, 0x8130e7c9, 0x119d8941, 0x8137c8e6, 0x11cf516a, 0x813ebd90, + 0x120116d5, 0x8145c5c7, 0x1232d979, 0x814ce188, 0x1264994e, 0x815410d4, 0x1296564d, 0x815b53a8, + 0x12c8106f, 0x8162aa04, 0x12f9c7aa, 0x816a13e6, 0x132b7bf9, 0x8171914e, 0x135d2d53, 0x8179223a, + 0x138edbb1, 0x8180c6a9, 0x13c0870a, 0x81887e9a, 0x13f22f58, 0x81904a0c, 0x1423d492, 0x819828fd, + 0x145576b1, 0x81a01b6d, 0x148715ae, 0x81a82159, 0x14b8b17f, 0x81b03ac2, 0x14ea4a1f, 0x81b867a5, + 0x151bdf86, 0x81c0a801, 0x154d71aa, 0x81c8fbd6, 0x157f0086, 0x81d16321, 0x15b08c12, 0x81d9dde1, + 0x15e21445, 0x81e26c16, 0x16139918, 0x81eb0dbe, 0x16451a83, 0x81f3c2d7, 0x1676987f, 0x81fc8b60, + 0x16a81305, 0x82056758, 0x16d98a0c, 0x820e56be, 0x170afd8d, 0x82175990, 0x173c6d80, 0x82206fcc, + 0x176dd9de, 0x82299971, 0x179f429f, 0x8232d67f, 0x17d0a7bc, 0x823c26f3, 0x1802092c, 0x82458acc, + 0x183366e9, 0x824f0208, 0x1864c0ea, 0x82588ca7, 0x18961728, 0x82622aa6, 0x18c7699b, 0x826bdc04, + 0x18f8b83c, 0x8275a0c0, 0x192a0304, 0x827f78d8, 0x195b49ea, 0x8289644b, 0x198c8ce7, 0x82936317, + 0x19bdcbf3, 0x829d753a, 0x19ef0707, 0x82a79ab3, 0x1a203e1b, 0x82b1d381, 0x1a517128, 0x82bc1fa2, + 0x1a82a026, 0x82c67f14, 0x1ab3cb0d, 0x82d0f1d5, 0x1ae4f1d6, 0x82db77e5, 0x1b161479, 0x82e61141, + 0x1b4732ef, 0x82f0bde8, 0x1b784d30, 0x82fb7dd8, 0x1ba96335, 0x83065110, 0x1bda74f6, 0x8311378d, + 0x1c0b826a, 0x831c314e, 0x1c3c8b8c, 0x83273e52, 0x1c6d9053, 0x83325e97, 0x1c9e90b8, 0x833d921b, + 0x1ccf8cb3, 0x8348d8dc, 0x1d00843d, 0x835432d8, 0x1d31774d, 0x835fa00f, 0x1d6265dd, 0x836b207d, + 0x1d934fe5, 0x8376b422, 0x1dc4355e, 0x83825afb, 0x1df5163f, 0x838e1507, 0x1e25f282, 0x8399e244, + 0x1e56ca1e, 0x83a5c2b0, 0x1e879d0d, 0x83b1b649, 0x1eb86b46, 0x83bdbd0e, 0x1ee934c3, 0x83c9d6fc, + 0x1f19f97b, 0x83d60412, 0x1f4ab968, 0x83e2444d, 0x1f7b7481, 0x83ee97ad, 0x1fac2abf, 0x83fafe2e, + 0x1fdcdc1b, 0x840777d0, 0x200d888d, 0x84140490, 0x203e300d, 0x8420a46c, 0x206ed295, 0x842d5762, + 0x209f701c, 0x843a1d70, 0x20d0089c, 0x8446f695, 0x21009c0c, 0x8453e2cf, 0x21312a65, 0x8460e21a, + 0x2161b3a0, 0x846df477, 0x219237b5, 0x847b19e1, 0x21c2b69c, 0x84885258, 0x21f3304f, 0x84959dd9, + 0x2223a4c5, 0x84a2fc62, 0x225413f8, 0x84b06df2, 0x22847de0, 0x84bdf286, 0x22b4e274, 0x84cb8a1b, + 0x22e541af, 0x84d934b1, 0x23159b88, 0x84e6f244, 0x2345eff8, 0x84f4c2d4, 0x23763ef7, 0x8502a65c, + 0x23a6887f, 0x85109cdd, 0x23d6cc87, 0x851ea652, 0x24070b08, 0x852cc2bb, 0x243743fa, 0x853af214, + 0x24677758, 0x8549345c, 0x2497a517, 0x85578991, 0x24c7cd33, 0x8565f1b0, 0x24f7efa2, 0x85746cb8, + 0x25280c5e, 0x8582faa5, 0x2558235f, 0x85919b76, 0x2588349d, 0x85a04f28, 0x25b84012, 0x85af15b9, + 0x25e845b6, 0x85bdef28, 0x26184581, 0x85ccdb70, 0x26483f6c, 0x85dbda91, 0x26783370, 0x85eaec88, + 0x26a82186, 0x85fa1153, 0x26d809a5, 0x860948ef, 0x2707ebc7, 0x86189359, 0x2737c7e3, 0x8627f091, + 0x27679df4, 0x86376092, 0x27976df1, 0x8646e35c, 0x27c737d3, 0x865678eb, 0x27f6fb92, 0x8666213c, + 0x2826b928, 0x8675dc4f, 0x2856708d, 0x8685aa20, 0x288621b9, 0x86958aac, 0x28b5cca5, 0x86a57df2, + 0x28e5714b, 0x86b583ee, 0x29150fa1, 0x86c59c9f, 0x2944a7a2, 0x86d5c802, 0x29743946, 0x86e60614, + 0x29a3c485, 0x86f656d3, 0x29d34958, 0x8706ba3d, 0x2a02c7b8, 0x8717304e, 0x2a323f9e, 0x8727b905, + 0x2a61b101, 0x8738545e, 0x2a911bdc, 0x87490258, 0x2ac08026, 0x8759c2ef, 0x2aefddd8, 0x876a9621, + 0x2b1f34eb, 0x877b7bec, 0x2b4e8558, 0x878c744d, 0x2b7dcf17, 0x879d7f41, 0x2bad1221, 0x87ae9cc5, + 0x2bdc4e6f, 0x87bfccd7, 0x2c0b83fa, 0x87d10f75, 0x2c3ab2b9, 0x87e2649b, 0x2c69daa6, 0x87f3cc48, + 0x2c98fbba, 0x88054677, 0x2cc815ee, 0x8816d327, 0x2cf72939, 0x88287256, 0x2d263596, 0x883a23ff, + 0x2d553afc, 0x884be821, 0x2d843964, 0x885dbeb8, 0x2db330c7, 0x886fa7c2, 0x2de2211e, 0x8881a33d, + 0x2e110a62, 0x8893b125, 0x2e3fec8b, 0x88a5d177, 0x2e6ec792, 0x88b80432, 0x2e9d9b70, 0x88ca4951, + 0x2ecc681e, 0x88dca0d3, 0x2efb2d95, 0x88ef0ab4, 0x2f29ebcc, 0x890186f2, 0x2f58a2be, 0x89141589, + 0x2f875262, 0x8926b677, 0x2fb5fab2, 0x893969b9, 0x2fe49ba7, 0x894c2f4c, 0x30133539, 0x895f072e, + 0x3041c761, 0x8971f15a, 0x30705217, 0x8984edcf, 0x309ed556, 0x8997fc8a, 0x30cd5115, 0x89ab1d87, + 0x30fbc54d, 0x89be50c3, 0x312a31f8, 0x89d1963c, 0x3158970e, 0x89e4edef, 0x3186f487, 0x89f857d8, + 0x31b54a5e, 0x8a0bd3f5, 0x31e39889, 0x8a1f6243, 0x3211df04, 0x8a3302be, 0x32401dc6, 0x8a46b564, + 0x326e54c7, 0x8a5a7a31, 0x329c8402, 0x8a6e5123, 0x32caab6f, 0x8a823a36, 0x32f8cb07, 0x8a963567, + 0x3326e2c3, 0x8aaa42b4, 0x3354f29b, 0x8abe6219, 0x3382fa88, 0x8ad29394, 0x33b0fa84, 0x8ae6d720, + 0x33def287, 0x8afb2cbb, 0x340ce28b, 0x8b0f9462, 0x343aca87, 0x8b240e11, 0x3468aa76, 0x8b3899c6, + 0x34968250, 0x8b4d377c, 0x34c4520d, 0x8b61e733, 0x34f219a8, 0x8b76a8e4, 0x351fd918, 0x8b8b7c8f, + 0x354d9057, 0x8ba0622f, 0x357b3f5d, 0x8bb559c1, 0x35a8e625, 0x8bca6343, 0x35d684a6, 0x8bdf7eb0, + 0x36041ad9, 0x8bf4ac05, 0x3631a8b8, 0x8c09eb40, 0x365f2e3b, 0x8c1f3c5d, 0x368cab5c, 0x8c349f58, + 0x36ba2014, 0x8c4a142f, 0x36e78c5b, 0x8c5f9ade, 0x3714f02a, 0x8c753362, 0x37424b7b, 0x8c8addb7, + 0x376f9e46, 0x8ca099da, 0x379ce885, 0x8cb667c8, 0x37ca2a30, 0x8ccc477d, 0x37f76341, 0x8ce238f6, + 0x382493b0, 0x8cf83c30, 0x3851bb77, 0x8d0e5127, 0x387eda8e, 0x8d2477d8, 0x38abf0ef, 0x8d3ab03f, + 0x38d8fe93, 0x8d50fa59, 0x39060373, 0x8d675623, 0x3932ff87, 0x8d7dc399, 0x395ff2c9, 0x8d9442b8, + 0x398cdd32, 0x8daad37b, 0x39b9bebc, 0x8dc175e0, 0x39e6975e, 0x8dd829e4, 0x3a136712, 0x8deeef82, + 0x3a402dd2, 0x8e05c6b7, 0x3a6ceb96, 0x8e1caf80, 0x3a99a057, 0x8e33a9da, 0x3ac64c0f, 0x8e4ab5bf, + 0x3af2eeb7, 0x8e61d32e, 0x3b1f8848, 0x8e790222, 0x3b4c18ba, 0x8e904298, 0x3b78a007, 0x8ea7948c, + 0x3ba51e29, 0x8ebef7fb, 0x3bd19318, 0x8ed66ce1, 0x3bfdfecd, 0x8eedf33b, 0x3c2a6142, 0x8f058b04, + 0x3c56ba70, 0x8f1d343a, 0x3c830a50, 0x8f34eed8, 0x3caf50da, 0x8f4cbadb, 0x3cdb8e09, 0x8f649840, + 0x3d07c1d6, 0x8f7c8701, 0x3d33ec39, 0x8f94871d, 0x3d600d2c, 0x8fac988f, 0x3d8c24a8, 0x8fc4bb53, + 0x3db832a6, 0x8fdcef66, 0x3de4371f, 0x8ff534c4, 0x3e10320d, 0x900d8b69, 0x3e3c2369, 0x9025f352, + 0x3e680b2c, 0x903e6c7b, 0x3e93e950, 0x9056f6df, 0x3ebfbdcd, 0x906f927c, 0x3eeb889c, 0x90883f4d, + 0x3f1749b8, 0x90a0fd4e, 0x3f430119, 0x90b9cc7d, 0x3f6eaeb8, 0x90d2acd4, 0x3f9a5290, 0x90eb9e50, + 0x3fc5ec98, 0x9104a0ee, 0x3ff17cca, 0x911db4a9, 0x401d0321, 0x9136d97d, 0x40487f94, 0x91500f67, + 0x4073f21d, 0x91695663, 0x409f5ab6, 0x9182ae6d, 0x40cab958, 0x919c1781, 0x40f60dfb, 0x91b5919a, + 0x4121589b, 0x91cf1cb6, 0x414c992f, 0x91e8b8d0, 0x4177cfb1, 0x920265e4, 0x41a2fc1a, 0x921c23ef, + 0x41ce1e65, 0x9235f2ec, 0x41f93689, 0x924fd2d7, 0x42244481, 0x9269c3ac, 0x424f4845, 0x9283c568, + 0x427a41d0, 0x929dd806, 0x42a5311b, 0x92b7fb82, 0x42d0161e, 0x92d22fd9, 0x42faf0d4, 0x92ec7505, + 0x4325c135, 0x9306cb04, 0x4350873c, 0x932131d1, 0x437b42e1, 0x933ba968, 0x43a5f41e, 0x935631c5, + 0x43d09aed, 0x9370cae4, 0x43fb3746, 0x938b74c1, 0x4425c923, 0x93a62f57, 0x4450507e, 0x93c0faa3, + 0x447acd50, 0x93dbd6a0, 0x44a53f93, 0x93f6c34a, 0x44cfa740, 0x9411c09e, 0x44fa0450, 0x942cce96, + 0x452456bd, 0x9447ed2f, 0x454e9e80, 0x94631c65, 0x4578db93, 0x947e5c33, 0x45a30df0, 0x9499ac95, + 0x45cd358f, 0x94b50d87, 0x45f7526b, 0x94d07f05, 0x4621647d, 0x94ec010b, 0x464b6bbe, 0x95079394, + 0x46756828, 0x9523369c, 0x469f59b4, 0x953eea1e, 0x46c9405c, 0x955aae17, 0x46f31c1a, 0x95768283, + 0x471cece7, 0x9592675c, 0x4746b2bc, 0x95ae5c9f, 0x47706d93, 0x95ca6247, 0x479a1d67, 0x95e67850, + 0x47c3c22f, 0x96029eb6, 0x47ed5be6, 0x961ed574, 0x4816ea86, 0x963b1c86, 0x48406e08, 0x965773e7, + 0x4869e665, 0x9673db94, 0x48935397, 0x96905388, 0x48bcb599, 0x96acdbbe, 0x48e60c62, 0x96c97432, + 0x490f57ee, 0x96e61ce0, 0x49389836, 0x9702d5c3, 0x4961cd33, 0x971f9ed7, 0x498af6df, 0x973c7817, + 0x49b41533, 0x9759617f, 0x49dd282a, 0x97765b0a, 0x4a062fbd, 0x979364b5, 0x4a2f2be6, 0x97b07e7a, + 0x4a581c9e, 0x97cda855, 0x4a8101de, 0x97eae242, 0x4aa9dba2, 0x98082c3b, 0x4ad2a9e2, 0x9825863d, + 0x4afb6c98, 0x9842f043, 0x4b2423be, 0x98606a49, 0x4b4ccf4d, 0x987df449, 0x4b756f40, 0x989b8e40, + 0x4b9e0390, 0x98b93828, 0x4bc68c36, 0x98d6f1fe, 0x4bef092d, 0x98f4bbbc, 0x4c177a6e, 0x9912955f, + 0x4c3fdff4, 0x99307ee0, 0x4c6839b7, 0x994e783d, 0x4c9087b1, 0x996c816f, 0x4cb8c9dd, 0x998a9a74, + 0x4ce10034, 0x99a8c345, 0x4d092ab0, 0x99c6fbde, 0x4d31494b, 0x99e5443b, 0x4d595bfe, 0x9a039c57, + 0x4d8162c4, 0x9a22042d, 0x4da95d96, 0x9a407bb9, 0x4dd14c6e, 0x9a5f02f5, 0x4df92f46, 0x9a7d99de, + 0x4e210617, 0x9a9c406e, 0x4e48d0dd, 0x9abaf6a1, 0x4e708f8f, 0x9ad9bc71, 0x4e984229, 0x9af891db, + 0x4ebfe8a5, 0x9b1776da, 0x4ee782fb, 0x9b366b68, 0x4f0f1126, 0x9b556f81, 0x4f369320, 0x9b748320, + 0x4f5e08e3, 0x9b93a641, 0x4f857269, 0x9bb2d8de, 0x4faccfab, 0x9bd21af3, 0x4fd420a4, 0x9bf16c7a, + 0x4ffb654d, 0x9c10cd70, 0x50229da1, 0x9c303dcf, 0x5049c999, 0x9c4fbd93, 0x5070e92f, 0x9c6f4cb6, + 0x5097fc5e, 0x9c8eeb34, 0x50bf031f, 0x9cae9907, 0x50e5fd6d, 0x9cce562c, 0x510ceb40, 0x9cee229c, + 0x5133cc94, 0x9d0dfe54, 0x515aa162, 0x9d2de94d, 0x518169a5, 0x9d4de385, 0x51a82555, 0x9d6decf4, + 0x51ced46e, 0x9d8e0597, 0x51f576ea, 0x9dae2d68, 0x521c0cc2, 0x9dce6463, 0x524295f0, 0x9deeaa82, + 0x5269126e, 0x9e0effc1, 0x528f8238, 0x9e2f641b, 0x52b5e546, 0x9e4fd78a, 0x52dc3b92, 0x9e705a09, + 0x53028518, 0x9e90eb94, 0x5328c1d0, 0x9eb18c26, 0x534ef1b5, 0x9ed23bb9, 0x537514c2, 0x9ef2fa49, + 0x539b2af0, 0x9f13c7d0, 0x53c13439, 0x9f34a449, 0x53e73097, 0x9f558fb0, 0x540d2005, 0x9f7689ff, + 0x5433027d, 0x9f979331, 0x5458d7f9, 0x9fb8ab41, 0x547ea073, 0x9fd9d22a, 0x54a45be6, 0x9ffb07e7, + 0x54ca0a4b, 0xa01c4c73, 0x54efab9c, 0xa03d9fc8, 0x55153fd4, 0xa05f01e1, 0x553ac6ee, 0xa08072ba, + 0x556040e2, 0xa0a1f24d, 0x5585adad, 0xa0c38095, 0x55ab0d46, 0xa0e51d8c, 0x55d05faa, 0xa106c92f, + 0x55f5a4d2, 0xa1288376, 0x561adcb9, 0xa14a4c5e, 0x56400758, 0xa16c23e1, 0x566524aa, 0xa18e09fa, + 0x568a34a9, 0xa1affea3, 0x56af3750, 0xa1d201d7, 0x56d42c99, 0xa1f41392, 0x56f9147e, 0xa21633cd, + 0x571deefa, 0xa2386284, 0x5742bc06, 0xa25a9fb1, 0x57677b9d, 0xa27ceb4f, 0x578c2dba, 0xa29f4559, + 0x57b0d256, 0xa2c1adc9, 0x57d5696d, 0xa2e4249b, 0x57f9f2f8, 0xa306a9c8, 0x581e6ef1, 0xa3293d4b, + 0x5842dd54, 0xa34bdf20, 0x58673e1b, 0xa36e8f41, 0x588b9140, 0xa3914da8, 0x58afd6bd, 0xa3b41a50, + 0x58d40e8c, 0xa3d6f534, 0x58f838a9, 0xa3f9de4e, 0x591c550e, 0xa41cd599, 0x594063b5, 0xa43fdb10, + 0x59646498, 0xa462eeac, 0x598857b2, 0xa486106a, 0x59ac3cfd, 0xa4a94043, 0x59d01475, 0xa4cc7e32, + 0x59f3de12, 0xa4efca31, 0x5a1799d1, 0xa513243b, 0x5a3b47ab, 0xa5368c4b, 0x5a5ee79a, 0xa55a025b, + 0x5a82799a, 0xa57d8666, 0x5aa5fda5, 0xa5a11866, 0x5ac973b5, 0xa5c4b855, 0x5aecdbc5, 0xa5e8662f, + 0x5b1035cf, 0xa60c21ee, 0x5b3381ce, 0xa62feb8b, 0x5b56bfbd, 0xa653c303, 0x5b79ef96, 0xa677a84e, + 0x5b9d1154, 0xa69b9b68, 0x5bc024f0, 0xa6bf9c4b, 0x5be32a67, 0xa6e3aaf2, 0x5c0621b2, 0xa707c757, + 0x5c290acc, 0xa72bf174, 0x5c4be5b0, 0xa7502943, 0x5c6eb258, 0xa7746ec0, 0x5c9170bf, 0xa798c1e5, + 0x5cb420e0, 0xa7bd22ac, 0x5cd6c2b5, 0xa7e1910f, 0x5cf95638, 0xa8060d08, 0x5d1bdb65, 0xa82a9693, + 0x5d3e5237, 0xa84f2daa, 0x5d60baa7, 0xa873d246, 0x5d8314b1, 0xa8988463, 0x5da5604f, 0xa8bd43fa, + 0x5dc79d7c, 0xa8e21106, 0x5de9cc33, 0xa906eb82, 0x5e0bec6e, 0xa92bd367, 0x5e2dfe29, 0xa950c8b0, + 0x5e50015d, 0xa975cb57, 0x5e71f606, 0xa99adb56, 0x5e93dc1f, 0xa9bff8a8, 0x5eb5b3a2, 0xa9e52347, + 0x5ed77c8a, 0xaa0a5b2e, 0x5ef936d1, 0xaa2fa056, 0x5f1ae274, 0xaa54f2ba, 0x5f3c7f6b, 0xaa7a5253, + 0x5f5e0db3, 0xaa9fbf1e, 0x5f7f8d46, 0xaac53912, 0x5fa0fe1f, 0xaaeac02c, 0x5fc26038, 0xab105464, + 0x5fe3b38d, 0xab35f5b5, 0x6004f819, 0xab5ba41a, 0x60262dd6, 0xab815f8d, 0x604754bf, 0xaba72807, + 0x60686ccf, 0xabccfd83, 0x60897601, 0xabf2dffb, 0x60aa7050, 0xac18cf69, 0x60cb5bb7, 0xac3ecbc7, + 0x60ec3830, 0xac64d510, 0x610d05b7, 0xac8aeb3e, 0x612dc447, 0xacb10e4b, 0x614e73da, 0xacd73e30, + 0x616f146c, 0xacfd7ae8, 0x618fa5f7, 0xad23c46e, 0x61b02876, 0xad4a1aba, 0x61d09be5, 0xad707dc8, + 0x61f1003f, 0xad96ed92, 0x6211557e, 0xadbd6a10, 0x62319b9d, 0xade3f33e, 0x6251d298, 0xae0a8916, + 0x6271fa69, 0xae312b92, 0x6292130c, 0xae57daab, 0x62b21c7b, 0xae7e965b, 0x62d216b3, 0xaea55e9e, + 0x62f201ac, 0xaecc336c, 0x6311dd64, 0xaef314c0, 0x6331a9d4, 0xaf1a0293, 0x635166f9, 0xaf40fce1, + 0x637114cc, 0xaf6803a2, 0x6390b34a, 0xaf8f16d1, 0x63b0426d, 0xafb63667, 0x63cfc231, 0xafdd625f, + 0x63ef3290, 0xb0049ab3, 0x640e9386, 0xb02bdf5c, 0x642de50d, 0xb0533055, 0x644d2722, 0xb07a8d97, + 0x646c59bf, 0xb0a1f71d, 0x648b7ce0, 0xb0c96ce0, 0x64aa907f, 0xb0f0eeda, 0x64c99498, 0xb1187d05, + 0x64e88926, 0xb140175b, 0x65076e25, 0xb167bdd7, 0x6526438f, 0xb18f7071, 0x6545095f, 0xb1b72f23, + 0x6563bf92, 0xb1def9e9, 0x65826622, 0xb206d0ba, 0x65a0fd0b, 0xb22eb392, 0x65bf8447, 0xb256a26a, + 0x65ddfbd3, 0xb27e9d3c, 0x65fc63a9, 0xb2a6a402, 0x661abbc5, 0xb2ceb6b5, 0x66390422, 0xb2f6d550, + 0x66573cbb, 0xb31effcc, 0x6675658c, 0xb3473623, 0x66937e91, 0xb36f784f, 0x66b187c3, 0xb397c649, + 0x66cf8120, 0xb3c0200c, 0x66ed6aa1, 0xb3e88592, 0x670b4444, 0xb410f6d3, 0x67290e02, 0xb43973ca, + 0x6746c7d8, 0xb461fc70, 0x676471c0, 0xb48a90c0, 0x67820bb7, 0xb4b330b3, 0x679f95b7, 0xb4dbdc42, + 0x67bd0fbd, 0xb5049368, 0x67da79c3, 0xb52d561e, 0x67f7d3c5, 0xb556245e, 0x68151dbe, 0xb57efe22, + 0x683257ab, 0xb5a7e362, 0x684f8186, 0xb5d0d41a, 0x686c9b4b, 0xb5f9d043, 0x6889a4f6, 0xb622d7d6, + 0x68a69e81, 0xb64beacd, 0x68c387e9, 0xb6750921, 0x68e06129, 0xb69e32cd, 0x68fd2a3d, 0xb6c767ca, + 0x6919e320, 0xb6f0a812, 0x69368bce, 0xb719f39e, 0x69532442, 0xb7434a67, 0x696fac78, 0xb76cac69, + 0x698c246c, 0xb796199b, 0x69a88c19, 0xb7bf91f8, 0x69c4e37a, 0xb7e9157a, 0x69e12a8c, 0xb812a41a, + 0x69fd614a, 0xb83c3dd1, 0x6a1987b0, 0xb865e299, 0x6a359db9, 0xb88f926d, 0x6a51a361, 0xb8b94d44, + 0x6a6d98a4, 0xb8e31319, 0x6a897d7d, 0xb90ce3e6, 0x6aa551e9, 0xb936bfa4, 0x6ac115e2, 0xb960a64c, + 0x6adcc964, 0xb98a97d8, 0x6af86c6c, 0xb9b49442, 0x6b13fef5, 0xb9de9b83, 0x6b2f80fb, 0xba08ad95, + 0x6b4af279, 0xba32ca71, 0x6b66536b, 0xba5cf210, 0x6b81a3cd, 0xba87246d, 0x6b9ce39b, 0xbab16180, + 0x6bb812d1, 0xbadba943, 0x6bd3316a, 0xbb05fbb0, 0x6bee3f62, 0xbb3058c0, 0x6c093cb6, 0xbb5ac06d, + 0x6c242960, 0xbb8532b0, 0x6c3f055d, 0xbbafaf82, 0x6c59d0a9, 0xbbda36dd, 0x6c748b3f, 0xbc04c8ba, + 0x6c8f351c, 0xbc2f6513, 0x6ca9ce3b, 0xbc5a0be2, 0x6cc45698, 0xbc84bd1f, 0x6cdece2f, 0xbcaf78c4, + 0x6cf934fc, 0xbcda3ecb, 0x6d138afb, 0xbd050f2c, 0x6d2dd027, 0xbd2fe9e2, 0x6d48047e, 0xbd5acee5, + 0x6d6227fa, 0xbd85be30, 0x6d7c3a98, 0xbdb0b7bb, 0x6d963c54, 0xbddbbb7f, 0x6db02d29, 0xbe06c977, + 0x6dca0d14, 0xbe31e19b, 0x6de3dc11, 0xbe5d03e6, 0x6dfd9a1c, 0xbe88304f, 0x6e174730, 0xbeb366d1, + 0x6e30e34a, 0xbedea765, 0x6e4a6e66, 0xbf09f205, 0x6e63e87f, 0xbf3546a8, 0x6e7d5193, 0xbf60a54a, + 0x6e96a99d, 0xbf8c0de3, 0x6eaff099, 0xbfb7806c, 0x6ec92683, 0xbfe2fcdf, 0x6ee24b57, 0xc00e8336, + 0x6efb5f12, 0xc03a1368, 0x6f1461b0, 0xc065ad70, 0x6f2d532c, 0xc0915148, 0x6f463383, 0xc0bcfee7, + 0x6f5f02b2, 0xc0e8b648, 0x6f77c0b3, 0xc1147764, 0x6f906d84, 0xc1404233, 0x6fa90921, 0xc16c16b0, + 0x6fc19385, 0xc197f4d4, 0x6fda0cae, 0xc1c3dc97, 0x6ff27497, 0xc1efcdf3, 0x700acb3c, 0xc21bc8e1, + 0x7023109a, 0xc247cd5a, 0x703b44ad, 0xc273db58, 0x70536771, 0xc29ff2d4, 0x706b78e3, 0xc2cc13c7, + 0x708378ff, 0xc2f83e2a, 0x709b67c0, 0xc32471f7, 0x70b34525, 0xc350af26, 0x70cb1128, 0xc37cf5b0, + 0x70e2cbc6, 0xc3a94590, 0x70fa74fc, 0xc3d59ebe, 0x71120cc5, 0xc4020133, 0x7129931f, 0xc42e6ce8, + 0x71410805, 0xc45ae1d7, 0x71586b74, 0xc4875ff9, 0x716fbd68, 0xc4b3e746, 0x7186fdde, 0xc4e077b8, + 0x719e2cd2, 0xc50d1149, 0x71b54a41, 0xc539b3f1, 0x71cc5626, 0xc5665fa9, 0x71e35080, 0xc593146a, + 0x71fa3949, 0xc5bfd22e, 0x7211107e, 0xc5ec98ee, 0x7227d61c, 0xc61968a2, 0x723e8a20, 0xc6464144, + 0x72552c85, 0xc67322ce, 0x726bbd48, 0xc6a00d37, 0x72823c67, 0xc6cd0079, 0x7298a9dd, 0xc6f9fc8d, + 0x72af05a7, 0xc727016d, 0x72c54fc1, 0xc7540f11, 0x72db8828, 0xc7812572, 0x72f1aed9, 0xc7ae4489, + 0x7307c3d0, 0xc7db6c50, 0x731dc70a, 0xc8089cbf, 0x7333b883, 0xc835d5d0, 0x73499838, 0xc863177b, + 0x735f6626, 0xc89061ba, 0x73752249, 0xc8bdb485, 0x738acc9e, 0xc8eb0fd6, 0x73a06522, 0xc91873a5, + 0x73b5ebd1, 0xc945dfec, 0x73cb60a8, 0xc97354a4, 0x73e0c3a3, 0xc9a0d1c5, 0x73f614c0, 0xc9ce5748, + 0x740b53fb, 0xc9fbe527, 0x74208150, 0xca297b5a, 0x74359cbd, 0xca5719db, 0x744aa63f, 0xca84c0a3, + 0x745f9dd1, 0xcab26fa9, 0x74748371, 0xcae026e8, 0x7489571c, 0xcb0de658, 0x749e18cd, 0xcb3badf3, + 0x74b2c884, 0xcb697db0, 0x74c7663a, 0xcb97558a, 0x74dbf1ef, 0xcbc53579, 0x74f06b9e, 0xcbf31d75, + 0x7504d345, 0xcc210d79, 0x751928e0, 0xcc4f057c, 0x752d6c6c, 0xcc7d0578, 0x75419de7, 0xccab0d65, + 0x7555bd4c, 0xccd91d3d, 0x7569ca99, 0xcd0734f9, 0x757dc5ca, 0xcd355491, 0x7591aedd, 0xcd637bfe, + 0x75a585cf, 0xcd91ab39, 0x75b94a9c, 0xcdbfe23a, 0x75ccfd42, 0xcdee20fc, 0x75e09dbd, 0xce1c6777, + 0x75f42c0b, 0xce4ab5a2, 0x7607a828, 0xce790b79, 0x761b1211, 0xcea768f2, 0x762e69c4, 0xced5ce08, + 0x7641af3d, 0xcf043ab3, 0x7654e279, 0xcf32aeeb, 0x76680376, 0xcf612aaa, 0x767b1231, 0xcf8fade9, + 0x768e0ea6, 0xcfbe389f, 0x76a0f8d2, 0xcfeccac7, 0x76b3d0b4, 0xd01b6459, 0x76c69647, 0xd04a054e, + 0x76d94989, 0xd078ad9e, 0x76ebea77, 0xd0a75d42, 0x76fe790e, 0xd0d61434, 0x7710f54c, 0xd104d26b, + 0x77235f2d, 0xd13397e2, 0x7735b6af, 0xd1626490, 0x7747fbce, 0xd191386e, 0x775a2e89, 0xd1c01375, + 0x776c4edb, 0xd1eef59e, 0x777e5cc3, 0xd21ddee2, 0x7790583e, 0xd24ccf39, 0x77a24148, 0xd27bc69c, + 0x77b417df, 0xd2aac504, 0x77c5dc01, 0xd2d9ca6a, 0x77d78daa, 0xd308d6c7, 0x77e92cd9, 0xd337ea12, + 0x77fab989, 0xd3670446, 0x780c33b8, 0xd396255a, 0x781d9b65, 0xd3c54d47, 0x782ef08b, 0xd3f47c06, + 0x78403329, 0xd423b191, 0x7851633b, 0xd452eddf, 0x786280bf, 0xd48230e9, 0x78738bb3, 0xd4b17aa8, + 0x78848414, 0xd4e0cb15, 0x789569df, 0xd5102228, 0x78a63d11, 0xd53f7fda, 0x78b6fda8, 0xd56ee424, + 0x78c7aba2, 0xd59e4eff, 0x78d846fb, 0xd5cdc062, 0x78e8cfb2, 0xd5fd3848, 0x78f945c3, 0xd62cb6a8, + 0x7909a92d, 0xd65c3b7b, 0x7919f9ec, 0xd68bc6ba, 0x792a37fe, 0xd6bb585e, 0x793a6361, 0xd6eaf05f, + 0x794a7c12, 0xd71a8eb5, 0x795a820e, 0xd74a335b, 0x796a7554, 0xd779de47, 0x797a55e0, 0xd7a98f73, + 0x798a23b1, 0xd7d946d8, 0x7999dec4, 0xd809046e, 0x79a98715, 0xd838c82d, 0x79b91ca4, 0xd868920f, + 0x79c89f6e, 0xd898620c, 0x79d80f6f, 0xd8c8381d, 0x79e76ca7, 0xd8f81439, 0x79f6b711, 0xd927f65b, + 0x7a05eead, 0xd957de7a, 0x7a151378, 0xd987cc90, 0x7a24256f, 0xd9b7c094, 0x7a332490, 0xd9e7ba7f, + 0x7a4210d8, 0xda17ba4a, 0x7a50ea47, 0xda47bfee, 0x7a5fb0d8, 0xda77cb63, 0x7a6e648a, 0xdaa7dca1, + 0x7a7d055b, 0xdad7f3a2, 0x7a8b9348, 0xdb08105e, 0x7a9a0e50, 0xdb3832cd, 0x7aa8766f, 0xdb685ae9, + 0x7ab6cba4, 0xdb9888a8, 0x7ac50dec, 0xdbc8bc06, 0x7ad33d45, 0xdbf8f4f8, 0x7ae159ae, 0xdc293379, + 0x7aef6323, 0xdc597781, 0x7afd59a4, 0xdc89c109, 0x7b0b3d2c, 0xdcba1008, 0x7b190dbc, 0xdcea6478, + 0x7b26cb4f, 0xdd1abe51, 0x7b3475e5, 0xdd4b1d8c, 0x7b420d7a, 0xdd7b8220, 0x7b4f920e, 0xddabec08, + 0x7b5d039e, 0xdddc5b3b, 0x7b6a6227, 0xde0ccfb1, 0x7b77ada8, 0xde3d4964, 0x7b84e61f, 0xde6dc84b, + 0x7b920b89, 0xde9e4c60, 0x7b9f1de6, 0xdeced59b, 0x7bac1d31, 0xdeff63f4, 0x7bb9096b, 0xdf2ff764, + 0x7bc5e290, 0xdf608fe4, 0x7bd2a89e, 0xdf912d6b, 0x7bdf5b94, 0xdfc1cff3, 0x7bebfb70, 0xdff27773, + 0x7bf88830, 0xe02323e5, 0x7c0501d2, 0xe053d541, 0x7c116853, 0xe0848b7f, 0x7c1dbbb3, 0xe0b54698, + 0x7c29fbee, 0xe0e60685, 0x7c362904, 0xe116cb3d, 0x7c4242f2, 0xe14794ba, 0x7c4e49b7, 0xe17862f3, + 0x7c5a3d50, 0xe1a935e2, 0x7c661dbc, 0xe1da0d7e, 0x7c71eaf9, 0xe20ae9c1, 0x7c7da505, 0xe23bcaa2, + 0x7c894bde, 0xe26cb01b, 0x7c94df83, 0xe29d9a23, 0x7ca05ff1, 0xe2ce88b3, 0x7cabcd28, 0xe2ff7bc3, + 0x7cb72724, 0xe330734d, 0x7cc26de5, 0xe3616f48, 0x7ccda169, 0xe3926fad, 0x7cd8c1ae, 0xe3c37474, + 0x7ce3ceb2, 0xe3f47d96, 0x7ceec873, 0xe4258b0a, 0x7cf9aef0, 0xe4569ccb, 0x7d048228, 0xe487b2d0, + 0x7d0f4218, 0xe4b8cd11, 0x7d19eebf, 0xe4e9eb87, 0x7d24881b, 0xe51b0e2a, 0x7d2f0e2b, 0xe54c34f3, + 0x7d3980ec, 0xe57d5fda, 0x7d43e05e, 0xe5ae8ed8, 0x7d4e2c7f, 0xe5dfc1e5, 0x7d58654d, 0xe610f8f9, + 0x7d628ac6, 0xe642340d, 0x7d6c9ce9, 0xe6737319, 0x7d769bb5, 0xe6a4b616, 0x7d808728, 0xe6d5fcfc, + 0x7d8a5f40, 0xe70747c4, 0x7d9423fc, 0xe7389665, 0x7d9dd55a, 0xe769e8d8, 0x7da77359, 0xe79b3f16, + 0x7db0fdf8, 0xe7cc9917, 0x7dba7534, 0xe7fdf6d4, 0x7dc3d90d, 0xe82f5844, 0x7dcd2981, 0xe860bd61, + 0x7dd6668f, 0xe8922622, 0x7ddf9034, 0xe8c39280, 0x7de8a670, 0xe8f50273, 0x7df1a942, 0xe92675f4, + 0x7dfa98a8, 0xe957ecfb, 0x7e0374a0, 0xe9896781, 0x7e0c3d29, 0xe9bae57d, 0x7e14f242, 0xe9ec66e8, + 0x7e1d93ea, 0xea1debbb, 0x7e26221f, 0xea4f73ee, 0x7e2e9cdf, 0xea80ff7a, 0x7e37042a, 0xeab28e56, + 0x7e3f57ff, 0xeae4207a, 0x7e47985b, 0xeb15b5e1, 0x7e4fc53e, 0xeb474e81, 0x7e57dea7, 0xeb78ea52, + 0x7e5fe493, 0xebaa894f, 0x7e67d703, 0xebdc2b6e, 0x7e6fb5f4, 0xec0dd0a8, 0x7e778166, 0xec3f78f6, + 0x7e7f3957, 0xec71244f, 0x7e86ddc6, 0xeca2d2ad, 0x7e8e6eb2, 0xecd48407, 0x7e95ec1a, 0xed063856, + 0x7e9d55fc, 0xed37ef91, 0x7ea4ac58, 0xed69a9b3, 0x7eabef2c, 0xed9b66b2, 0x7eb31e78, 0xedcd2687, + 0x7eba3a39, 0xedfee92b, 0x7ec14270, 0xee30ae96, 0x7ec8371a, 0xee6276bf, 0x7ecf1837, 0xee9441a0, + 0x7ed5e5c6, 0xeec60f31, 0x7edc9fc6, 0xeef7df6a, 0x7ee34636, 0xef29b243, 0x7ee9d914, 0xef5b87b5, + 0x7ef05860, 0xef8d5fb8, 0x7ef6c418, 0xefbf3a45, 0x7efd1c3c, 0xeff11753, 0x7f0360cb, 0xf022f6da, + 0x7f0991c4, 0xf054d8d5, 0x7f0faf25, 0xf086bd39, 0x7f15b8ee, 0xf0b8a401, 0x7f1baf1e, 0xf0ea8d24, + 0x7f2191b4, 0xf11c789a, 0x7f2760af, 0xf14e665c, 0x7f2d1c0e, 0xf1805662, 0x7f32c3d1, 0xf1b248a5, + 0x7f3857f6, 0xf1e43d1c, 0x7f3dd87c, 0xf21633c0, 0x7f434563, 0xf2482c8a, 0x7f489eaa, 0xf27a2771, + 0x7f4de451, 0xf2ac246e, 0x7f531655, 0xf2de2379, 0x7f5834b7, 0xf310248a, 0x7f5d3f75, 0xf342279b, + 0x7f62368f, 0xf3742ca2, 0x7f671a05, 0xf3a63398, 0x7f6be9d4, 0xf3d83c77, 0x7f70a5fe, 0xf40a4735, + 0x7f754e80, 0xf43c53cb, 0x7f79e35a, 0xf46e6231, 0x7f7e648c, 0xf4a07261, 0x7f82d214, 0xf4d28451, + 0x7f872bf3, 0xf50497fb, 0x7f8b7227, 0xf536ad56, 0x7f8fa4b0, 0xf568c45b, 0x7f93c38c, 0xf59add02, + 0x7f97cebd, 0xf5ccf743, 0x7f9bc640, 0xf5ff1318, 0x7f9faa15, 0xf6313077, 0x7fa37a3c, 0xf6634f59, + 0x7fa736b4, 0xf6956fb7, 0x7faadf7c, 0xf6c79188, 0x7fae7495, 0xf6f9b4c6, 0x7fb1f5fc, 0xf72bd967, + 0x7fb563b3, 0xf75dff66, 0x7fb8bdb8, 0xf79026b9, 0x7fbc040a, 0xf7c24f59, 0x7fbf36aa, 0xf7f4793e, + 0x7fc25596, 0xf826a462, 0x7fc560cf, 0xf858d0bb, 0x7fc85854, 0xf88afe42, 0x7fcb3c23, 0xf8bd2cef, + 0x7fce0c3e, 0xf8ef5cbb, 0x7fd0c8a3, 0xf9218d9e, 0x7fd37153, 0xf953bf91, 0x7fd6064c, 0xf985f28a, + 0x7fd8878e, 0xf9b82684, 0x7fdaf519, 0xf9ea5b75, 0x7fdd4eec, 0xfa1c9157, 0x7fdf9508, 0xfa4ec821, + 0x7fe1c76b, 0xfa80ffcb, 0x7fe3e616, 0xfab3384f, 0x7fe5f108, 0xfae571a4, 0x7fe7e841, 0xfb17abc2, + 0x7fe9cbc0, 0xfb49e6a3, 0x7feb9b85, 0xfb7c223d, 0x7fed5791, 0xfbae5e89, 0x7feeffe1, 0xfbe09b80, + 0x7ff09478, 0xfc12d91a, 0x7ff21553, 0xfc45174e, 0x7ff38274, 0xfc775616, 0x7ff4dbd9, 0xfca9956a, + 0x7ff62182, 0xfcdbd541, 0x7ff75370, 0xfd0e1594, 0x7ff871a2, 0xfd40565c, 0x7ff97c18, 0xfd729790, + 0x7ffa72d1, 0xfda4d929, 0x7ffb55ce, 0xfdd71b1e, 0x7ffc250f, 0xfe095d69, 0x7ffce093, 0xfe3ba002, + 0x7ffd885a, 0xfe6de2e0, 0x7ffe1c65, 0xfea025fd, 0x7ffe9cb2, 0xfed2694f, 0x7fff0943, 0xff04acd0, + 0x7fff6216, 0xff36f078, 0x7fffa72c, 0xff69343f, 0x7fffd886, 0xff9b781d, 0x7ffff621, 0xffcdbc0b + +}; + +/** +* +* @brief Initialization function for the Q31 CFFT/CIFFT. +* @param[in,out] *S points to an instance of the Q31 CFFT/CIFFT structure. +* @param[in] fftLen length of the FFT. +* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. +* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. +* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. +* +* \par Description: +* \par +* The parameter ifftFlag controls whether a forward or inverse transform is computed. +* Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated +* \par +* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. +* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. +* \par +* The parameter fftLen Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024. +* \par +* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer. +*/ + +arm_status arm_cfft_radix4_init_q31( + arm_cfft_radix4_instance_q31 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag) +{ + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + /* Initialise the FFT length */ + S->fftLen = fftLen; + /* Initialise the Twiddle coefficient pointer */ + S->pTwiddle = (q31_t *) twiddleCoefQ31; + /* Initialise the Flag for selection of CFFT or CIFFT */ + S->ifftFlag = ifftFlag; + /* Initialise the Flag for calculation Bit reversal or not */ + S->bitReverseFlag = bitReverseFlag; + + /* Initializations of Instance structure depending on the FFT length */ + switch (S->fftLen) + { + + /* Initializations of structure parameters for 4096 point FFT */ + case 4096u: + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 1u; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 1u; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = armBitRevTable; + break; + + /* Initializations of structure parameters for 1024 point FFT */ + case 1024u: + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 4u; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 4u; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = (uint16_t *) & armBitRevTable[3]; + break; + + case 256u: + /* Initializations of structure parameters for 256 point FFT */ + S->twidCoefModifier = 16u; + S->bitRevFactor = 16u; + S->pBitRevTable = (uint16_t *) & armBitRevTable[15]; + break; + + case 64u: + /* Initializations of structure parameters for 64 point FFT */ + S->twidCoefModifier = 64u; + S->bitRevFactor = 64u; + S->pBitRevTable = &armBitRevTable[63]; + break; + + case 16u: + /* Initializations of structure parameters for 16 point FFT */ + S->twidCoefModifier = 256u; + S->bitRevFactor = 256u; + S->pBitRevTable = &armBitRevTable[255]; + break; + + default: + /* Reporting argument error if fftSize is not valid value */ + status = ARM_MATH_ARGUMENT_ERROR; + break; + } + + return (status); +} + +/** + * @} end of CFFT_CIFFT group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q15.c new file mode 100644 index 000000000..d855a10e0 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q15.c @@ -0,0 +1,1952 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_cfft_radix4_q15.c +* +* Description: This file has function definition of Radix-4 FFT & IFFT function and +* In-place bit reversal using bit reversal table +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupTransforms + */ + +/** + * @addtogroup CFFT_CIFFT + * @{ + */ + + +/** + * @details + * @brief Processing function for the Q15 CFFT/CIFFT. + * @param[in] *S points to an instance of the Q15 CFFT/CIFFT structure. + * @param[in, out] *pSrc points to the complex data buffer. Processing occurs in-place. + * @return none. + * + * \par Input and output formats: + * \par + * Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process. + * Hence the output format is different for different FFT sizes. + * The input and output formats for different FFT sizes and number of bits to upscale are mentioned in the tables below for CFFT and CIFFT: + * \par + * \image html CFFTQ15.gif "Input and Output Formats for Q15 CFFT" + * \image html CIFFTQ15.gif "Input and Output Formats for Q15 CIFFT" + */ + +void arm_cfft_radix4_q15( + const arm_cfft_radix4_instance_q15 * S, + q15_t * pSrc) +{ + if(S->ifftFlag == 1u) + { + /* Complex IFFT radix-4 */ + arm_radix4_butterfly_inverse_q15(pSrc, S->fftLen, S->pTwiddle, + S->twidCoefModifier); + } + else + { + /* Complex FFT radix-4 */ + arm_radix4_butterfly_q15(pSrc, S->fftLen, S->pTwiddle, + S->twidCoefModifier); + } + + if(S->bitReverseFlag == 1u) + { + /* Bit Reversal */ + arm_bitreversal_q15(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable); + } + +} + +/** + * @} end of CFFT_CIFFT group + */ + +/* +* Radix-4 FFT algorithm used is : +* +* Input real and imaginary data: +* x(n) = xa + j * ya +* x(n+N/4 ) = xb + j * yb +* x(n+N/2 ) = xc + j * yc +* x(n+3N 4) = xd + j * yd +* +* +* Output real and imaginary data: +* x(4r) = xa'+ j * ya' +* x(4r+1) = xb'+ j * yb' +* x(4r+2) = xc'+ j * yc' +* x(4r+3) = xd'+ j * yd' +* +* +* Twiddle factors for radix-4 FFT: +* Wn = co1 + j * (- si1) +* W2n = co2 + j * (- si2) +* W3n = co3 + j * (- si3) + +* The real and imaginary output values for the radix-4 butterfly are +* xa' = xa + xb + xc + xd +* ya' = ya + yb + yc + yd +* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) +* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) +* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) +* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) +* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) +* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) +* +*/ + +/** + * @brief Core function for the Q15 CFFT butterfly process. + * @param[in, out] *pSrc16 points to the in-place buffer of Q15 data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef16 points to twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + +void arm_radix4_butterfly_q15( + q15_t * pSrc16, + uint32_t fftLen, + q15_t * pCoef16, + uint32_t twidCoefModifier) +{ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t R, S, T, U; + q31_t C1, C2, C3, out1, out2; + q31_t *pSrc, *pCoeff; + uint32_t n1, n2, ic, i0, i1, i2, i3, j, k; + q15_t in; + + /* Total process is divided into three stages */ + + /* process first stage, middle stages, & last stage */ + + /* pointer initializations for SIMD calculations */ + pSrc = (q31_t *) pSrc16; + pCoeff = (q31_t *) pCoef16; + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + + /* n2 = fftLen/4 */ + n2 >>= 2u; + + /* Index for twiddle coefficient */ + ic = 0u; + + /* Index for input read and output write */ + i0 = 0u; + j = n2; + + /* Input is in 1.15(q15) format */ + + /* start of first stage process */ + do + { + /* Butterfly implementation */ + + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Reading i0, i0+fftLen/2 inputs */ + /* Read ya (real), xa(imag) input */ + T = pSrc[i0]; + in = ((int16_t) (T & 0xFFFF)) >> 2; + T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF); + /* Read yc (real), xc(imag) input */ + S = pSrc[i2]; + in = ((int16_t) (S & 0xFFFF)) >> 2; + S = ((S >> 2) & 0xFFFF0000) | (in & 0xFFFF); + /* R = packed((ya + yc), (xa + xc) ) */ + R = __QADD16(T, S); + /* S = packed((ya - yc), (xa - xc) ) */ + S = __QSUB16(T, S); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* Read yb (real), xb(imag) input */ + T = pSrc[i1]; + in = ((int16_t) (T & 0xFFFF)) >> 2; + T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF); + /* Read yd (real), xd(imag) input */ + U = pSrc[i3]; + in = ((int16_t) (U & 0xFFFF)) >> 2; + U = ((U >> 2) & 0xFFFF0000) | (in & 0xFFFF); + /* T = packed((yb + yd), (xb + xd) ) */ + T = __QADD16(T, U); + + /* writing the butterfly processed i0 sample */ + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + pSrc[i0] = __SHADD16(R, T); + + /* R = packed((ya + yc) - (yb + yd), (xa + xc)- (xb + xd)) */ + R = __QSUB16(R, T); + + /* co2 & si2 are read from SIMD Coefficient pointer */ + C2 = pCoeff[2u * ic]; + + +#ifndef ARM_MATH_BIG_ENDIAN + + /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ + out1 = __SMUAD(C2, R) >> 16u; + /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + out2 = __SMUSDX(C2, R); + +#else + + /* xc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + out1 = __SMUSDX(R, C2) >> 16u; + /* yc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ + out2 = __SMUAD(C2, R); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Reading i0+fftLen/4 */ + /* T = packed(yb, xb) */ + T = pSrc[i1]; + in = ((int16_t) (T & 0xFFFF)) >> 2; + T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF); + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* writing output(xc', yc') in little endian format */ + pSrc[i1] = (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + + /* Butterfly calculations */ + /* U = packed(yd, xd) */ + U = pSrc[i3]; + in = ((int16_t) (U & 0xFFFF)) >> 2; + U = ((U >> 2) & 0xFFFF0000) | (in & 0xFFFF); + /* T = packed(yb-yd, xb-xd) */ + T = __QSUB16(T, U); + + +#ifndef ARM_MATH_BIG_ENDIAN + + /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ + R = __QASX(S, T); + /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ + S = __QSAX(S, T); + +#else + + /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ + R = __QSAX(S, T); + /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ + S = __QASX(S, T); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* co1 & si1 are read from SIMD Coefficient pointer */ + C1 = pCoeff[ic]; + /* Butterfly process for the i0+fftLen/2 sample */ + +#ifndef ARM_MATH_BIG_ENDIAN + + /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ + out1 = __SMUAD(C1, S) >> 16u; + /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ + out2 = __SMUSDX(C1, S); + +#else + + /* xb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ + out1 = __SMUSDX(S, C1) >> 16u; + /* yb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ + out2 = __SMUAD(C1, S); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* writing output(xb', yb') in little endian format */ + pSrc[i2] = ((out2) & 0xFFFF0000) | ((out1) & 0x0000FFFF); + + + /* co3 & si3 are read from SIMD Coefficient pointer */ + C3 = pCoeff[3u * ic]; + /* Butterfly process for the i0+3fftLen/4 sample */ + +#ifndef ARM_MATH_BIG_ENDIAN + + /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ + out1 = __SMUAD(C3, R) >> 16u; + /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ + out2 = __SMUSDX(C3, R); + +#else + + /* xd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ + out1 = __SMUSDX(R, C3) >> 16u; + /* yd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ + out2 = __SMUAD(C3, R); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* writing output(xd', yd') in little endian format */ + pSrc[i3] = ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + + /* Twiddle coefficients index modifier */ + ic = ic + twidCoefModifier; + + /* Updating input index */ + i0 = i0 + 1u; + + } while(--j); + /* data is in 4.11(q11) format */ + + /* end of first stage process */ + + + /* start of middle stage process */ + + /* Twiddle coefficients index modifier */ + twidCoefModifier <<= 2u; + + /* Calculation of Middle stage */ + for (k = fftLen / 4u; k > 4u; k >>= 2u) + { + /* Initializations for the middle stage */ + n1 = n2; + n2 >>= 2u; + ic = 0u; + + for (j = 0u; j <= (n2 - 1u); j++) + { + /* index calculation for the coefficients */ + C1 = pCoeff[ic]; + C2 = pCoeff[2u * ic]; + C3 = pCoeff[3u * ic]; + + /* Twiddle coefficients index modifier */ + ic = ic + twidCoefModifier; + + /* Butterfly implementation */ + for (i0 = j; i0 < fftLen; i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Reading i0, i0+fftLen/2 inputs */ + /* Read ya (real), xa(imag) input */ + T = pSrc[i0]; + + /* Read yc (real), xc(imag) input */ + S = pSrc[i2]; + + /* R = packed( (ya + yc), (xa + xc)) */ + R = __QADD16(T, S); + + /* S = packed((ya - yc), (xa - xc)) */ + S = __QSUB16(T, S); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* Read yb (real), xb(imag) input */ + T = pSrc[i1]; + + /* Read yd (real), xd(imag) input */ + U = pSrc[i3]; + + + /* T = packed( (yb + yd), (xb + xd)) */ + T = __QADD16(T, U); + + + /* writing the butterfly processed i0 sample */ + + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + out1 = __SHADD16(R, T); + in = ((int16_t) (out1 & 0xFFFF)) >> 1; + out1 = ((out1 >> 1) & 0xFFFF0000) | (in & 0xFFFF); + pSrc[i0] = out1; + + /* R = packed( (ya + yc) - (yb + yd), (xa + xc) - (xb + xd)) */ + R = __SHSUB16(R, T); + + +#ifndef ARM_MATH_BIG_ENDIAN + + /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */ + out1 = __SMUAD(C2, R) >> 16u; + + /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + out2 = __SMUSDX(C2, R); + +#else + + /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + out1 = __SMUSDX(R, C2) >> 16u; + + /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */ + out2 = __SMUAD(C2, R); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Reading i0+3fftLen/4 */ + /* Read yb (real), xb(imag) input */ + T = pSrc[i1]; + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ + /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + pSrc[i1] = ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + + /* Butterfly calculations */ + + /* Read yd (real), xd(imag) input */ + U = pSrc[i3]; + + /* T = packed(yb-yd, xb-xd) */ + T = __QSUB16(T, U); + + +#ifndef ARM_MATH_BIG_ENDIAN + + /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ + R = __SHASX(S, T); + + /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ + S = __SHSAX(S, T); + + + /* Butterfly process for the i0+fftLen/2 sample */ + out1 = __SMUAD(C1, S) >> 16u; + out2 = __SMUSDX(C1, S); + +#else + + /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ + R = __SHSAX(S, T); + + /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ + S = __SHASX(S, T); + + + /* Butterfly process for the i0+fftLen/2 sample */ + out1 = __SMUSDX(S, C1) >> 16u; + out2 = __SMUAD(C1, S); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ + /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ + pSrc[i2] = ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + + /* Butterfly process for the i0+3fftLen/4 sample */ + +#ifndef ARM_MATH_BIG_ENDIAN + + out1 = __SMUAD(C3, R) >> 16u; + out2 = __SMUSDX(C3, R); + +#else + + out1 = __SMUSDX(R, C3) >> 16u; + out2 = __SMUAD(C3, R); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ + /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ + pSrc[i3] = ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + } + } + /* Twiddle coefficients index modifier */ + twidCoefModifier <<= 2u; + } + /* end of middle stage process */ + + + /* data is in 10.6(q6) format for the 1024 point */ + /* data is in 8.8(q8) format for the 256 point */ + /* data is in 6.10(q10) format for the 64 point */ + /* data is in 4.12(q12) format for the 16 point */ + + /* Initializations for the last stage */ + n1 = n2; + n2 >>= 2u; + + /* start of last stage process */ + + /* Butterfly implementation */ + for (i0 = 0u; i0 <= (fftLen - n1); i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Reading i0, i0+fftLen/2 inputs */ + /* Read ya (real), xa(imag) input */ + T = pSrc[i0]; + /* Read yc (real), xc(imag) input */ + S = pSrc[i2]; + + /* R = packed((ya + yc), (xa + xc)) */ + R = __QADD16(T, S); + /* S = packed((ya - yc), (xa - xc)) */ + S = __QSUB16(T, S); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* Read yb (real), xb(imag) input */ + T = pSrc[i1]; + /* Read yd (real), xd(imag) input */ + U = pSrc[i3]; + + /* T = packed((yb + yd), (xb + xd)) */ + T = __QADD16(T, U); + + /* writing the butterfly processed i0 sample */ + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + pSrc[i0] = __SHADD16(R, T); + + /* R = packed((ya + yc) - (yb + yd), (xa + xc) - (xb + xd)) */ + R = __SHSUB16(R, T); + + /* Read yb (real), xb(imag) input */ + T = pSrc[i1]; + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* xc' = (xa-xb+xc-xd) */ + /* yc' = (ya-yb+yc-yd) */ + pSrc[i1] = R; + + /* Read yd (real), xd(imag) input */ + U = pSrc[i3]; + /* T = packed( (yb - yd), (xb - xd)) */ + T = __QSUB16(T, U); + + +#ifndef ARM_MATH_BIG_ENDIAN + + /* writing the butterfly processed i0 + fftLen/2 sample */ + /* xb' = (xa+yb-xc-yd) */ + /* yb' = (ya-xb-yc+xd) */ + pSrc[i2] = __SHSAX(S, T); + + /* writing the butterfly processed i0 + 3fftLen/4 sample */ + /* xd' = (xa-yb-xc+yd) */ + /* yd' = (ya+xb-yc-xd) */ + pSrc[i3] = __SHASX(S, T); + +#else + + /* writing the butterfly processed i0 + fftLen/2 sample */ + /* xb' = (xa+yb-xc-yd) */ + /* yb' = (ya-xb-yc+xd) */ + pSrc[i2] = __SHASX(S, T); + + /* writing the butterfly processed i0 + 3fftLen/4 sample */ + /* xd' = (xa-yb-xc+yd) */ + /* yd' = (ya+xb-yc-xd) */ + pSrc[i3] = __SHSAX(S, T); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + } + + /* end of last stage process */ + + /* output is in 11.5(q5) format for the 1024 point */ + /* output is in 9.7(q7) format for the 256 point */ + /* output is in 7.9(q9) format for the 64 point */ + /* output is in 5.11(q11) format for the 16 point */ + + +#else + + /* Run the below code for Cortex-M0 */ + + q15_t R0, R1, S0, S1, T0, T1, U0, U1; + q15_t Co1, Si1, Co2, Si2, Co3, Si3, out1, out2; + uint32_t n1, n2, ic, i0, i1, i2, i3, j, k; + + /* Total process is divided into three stages */ + + /* process first stage, middle stages, & last stage */ + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + + /* n2 = fftLen/4 */ + n2 >>= 2u; + + /* Index for twiddle coefficient */ + ic = 0u; + + /* Index for input read and output write */ + i0 = 0u; + j = n2; + + /* Input is in 1.15(q15) format */ + + /* start of first stage process */ + do + { + /* Butterfly implementation */ + + /* index calculation for the input as, */ + /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Reading i0, i0+fftLen/2 inputs */ + + /* input is down scale by 4 to avoid overflow */ + /* Read ya (real), xa(imag) input */ + T0 = pSrc16[i0 * 2u] >> 2u; + T1 = pSrc16[(i0 * 2u) + 1u] >> 2u; + + /* input is down scale by 4 to avoid overflow */ + /* Read yc (real), xc(imag) input */ + S0 = pSrc16[i2 * 2u] >> 2u; + S1 = pSrc16[(i2 * 2u) + 1u] >> 2u; + + /* R0 = (ya + yc) */ + R0 = __SSAT(T0 + S0, 16u); + /* R1 = (xa + xc) */ + R1 = __SSAT(T1 + S1, 16u); + + /* S0 = (ya - yc) */ + S0 = __SSAT(T0 - S0, 16); + /* S1 = (xa - xc) */ + S1 = __SSAT(T1 - S1, 16); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* input is down scale by 4 to avoid overflow */ + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2u] >> 2u; + T1 = pSrc16[(i1 * 2u) + 1u] >> 2u; + + /* input is down scale by 4 to avoid overflow */ + /* Read yd (real), xd(imag) input */ + U0 = pSrc16[i3 * 2u] >> 2u; + U1 = pSrc16[(i3 * 2u) + 1] >> 2u; + + /* T0 = (yb + yd) */ + T0 = __SSAT(T0 + U0, 16u); + /* T1 = (xb + xd) */ + T1 = __SSAT(T1 + U1, 16u); + + /* writing the butterfly processed i0 sample */ + /* ya' = ya + yb + yc + yd */ + /* xa' = xa + xb + xc + xd */ + pSrc16[i0 * 2u] = (R0 >> 1u) + (T0 >> 1u); + pSrc16[(i0 * 2u) + 1u] = (R1 >> 1u) + (T1 >> 1u); + + /* R0 = (ya + yc) - (yb + yd) */ + /* R1 = (xa + xc) - (xb + xd) */ + R0 = __SSAT(R0 - T0, 16u); + R1 = __SSAT(R1 - T1, 16u); + + /* co2 & si2 are read from Coefficient pointer */ + Co2 = pCoef16[2u * ic * 2u]; + Si2 = pCoef16[(2u * ic * 2u) + 1]; + + /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ + out1 = (short) ((Co2 * R0 + Si2 * R1) >> 16u); + /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + out2 = (short) ((-Si2 * R0 + Co2 * R1) >> 16u); + + /* Reading i0+fftLen/4 */ + /* input is down scale by 4 to avoid overflow */ + /* T0 = yb, T1 = xb */ + T0 = pSrc16[i1 * 2u] >> 2; + T1 = pSrc16[(i1 * 2u) + 1] >> 2; + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* writing output(xc', yc') in little endian format */ + pSrc16[i1 * 2u] = out1; + pSrc16[(i1 * 2u) + 1] = out2; + + /* Butterfly calculations */ + /* input is down scale by 4 to avoid overflow */ + /* U0 = yd, U1 = xd */ + U0 = pSrc16[i3 * 2u] >> 2; + U1 = pSrc16[(i3 * 2u) + 1] >> 2; + /* T0 = yb-yd */ + T0 = __SSAT(T0 - U0, 16); + /* T1 = xb-xd */ + T1 = __SSAT(T1 - U1, 16); + + /* R1 = (ya-yc) + (xb- xd), R0 = (xa-xc) - (yb-yd)) */ + R0 = (short) __SSAT((q31_t) (S0 - T1), 16); + R1 = (short) __SSAT((q31_t) (S1 + T0), 16); + + /* S1 = (ya-yc) - (xb- xd), S0 = (xa-xc) + (yb-yd)) */ + S0 = (short) __SSAT(((q31_t) S0 + T1), 16u); + S1 = (short) __SSAT(((q31_t) S1 - T0), 16u); + + /* co1 & si1 are read from Coefficient pointer */ + Co1 = pCoef16[ic * 2u]; + Si1 = pCoef16[(ic * 2u) + 1]; + /* Butterfly process for the i0+fftLen/2 sample */ + /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ + out1 = (short) ((Si1 * S1 + Co1 * S0) >> 16); + /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ + out2 = (short) ((-Si1 * S0 + Co1 * S1) >> 16); + + /* writing output(xb', yb') in little endian format */ + pSrc16[i2 * 2u] = out1; + pSrc16[(i2 * 2u) + 1] = out2; + + /* Co3 & si3 are read from Coefficient pointer */ + Co3 = pCoef16[3u * (ic * 2u)]; + Si3 = pCoef16[(3u * (ic * 2u)) + 1]; + /* Butterfly process for the i0+3fftLen/4 sample */ + /* xd' = (xa-yb-xc+yd)* Co3 + (ya+xb-yc-xd)* (si3) */ + out1 = (short) ((Si3 * R1 + Co3 * R0) >> 16u); + /* yd' = (ya+xb-yc-xd)* Co3 - (xa-yb-xc+yd)* (si3) */ + out2 = (short) ((-Si3 * R0 + Co3 * R1) >> 16u); + /* writing output(xd', yd') in little endian format */ + pSrc16[i3 * 2u] = out1; + pSrc16[(i3 * 2u) + 1] = out2; + + /* Twiddle coefficients index modifier */ + ic = ic + twidCoefModifier; + + /* Updating input index */ + i0 = i0 + 1u; + + } while(--j); + /* data is in 4.11(q11) format */ + + /* end of first stage process */ + + + /* start of middle stage process */ + + /* Twiddle coefficients index modifier */ + twidCoefModifier <<= 2u; + + /* Calculation of Middle stage */ + for (k = fftLen / 4u; k > 4u; k >>= 2u) + { + /* Initializations for the middle stage */ + n1 = n2; + n2 >>= 2u; + ic = 0u; + + for (j = 0u; j <= (n2 - 1u); j++) + { + /* index calculation for the coefficients */ + Co1 = pCoef16[ic * 2u]; + Si1 = pCoef16[(ic * 2u) + 1u]; + Co2 = pCoef16[2u * (ic * 2u)]; + Si2 = pCoef16[(2u * (ic * 2u)) + 1u]; + Co3 = pCoef16[3u * (ic * 2u)]; + Si3 = pCoef16[(3u * (ic * 2u)) + 1u]; + + /* Twiddle coefficients index modifier */ + ic = ic + twidCoefModifier; + + /* Butterfly implementation */ + for (i0 = j; i0 < fftLen; i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Reading i0, i0+fftLen/2 inputs */ + /* Read ya (real), xa(imag) input */ + T0 = pSrc16[i0 * 2u]; + T1 = pSrc16[(i0 * 2u) + 1u]; + + /* Read yc (real), xc(imag) input */ + S0 = pSrc16[i2 * 2u]; + S1 = pSrc16[(i2 * 2u) + 1u]; + + /* R0 = (ya + yc), R1 = (xa + xc) */ + R0 = __SSAT(T0 + S0, 16); + R1 = __SSAT(T1 + S1, 16); + + /* S0 = (ya - yc), S1 =(xa - xc) */ + S0 = __SSAT(T0 - S0, 16); + S1 = __SSAT(T1 - S1, 16); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2u]; + T1 = pSrc16[(i1 * 2u) + 1u]; + + /* Read yd (real), xd(imag) input */ + U0 = pSrc16[i3 * 2u]; + U1 = pSrc16[(i3 * 2u) + 1u]; + + + /* T0 = (yb + yd), T1 = (xb + xd) */ + T0 = __SSAT(T0 + U0, 16); + T1 = __SSAT(T1 + U1, 16); + + /* writing the butterfly processed i0 sample */ + + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + out1 = ((R0 >> 1u) + (T0 >> 1u)) >> 1u; + out2 = ((R1 >> 1u) + (T1 >> 1u)) >> 1u; + + pSrc16[i0 * 2u] = out1; + pSrc16[(2u * i0) + 1u] = out2; + + /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */ + R0 = (R0 >> 1u) - (T0 >> 1u); + R1 = (R1 >> 1u) - (T1 >> 1u); + + /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */ + out1 = (short) ((Co2 * R0 + Si2 * R1) >> 16u); + + /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + out2 = (short) ((-Si2 * R0 + Co2 * R1) >> 16u); + + /* Reading i0+3fftLen/4 */ + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2u]; + T1 = pSrc16[(i1 * 2u) + 1u]; + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ + /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + pSrc16[i1 * 2u] = out1; + pSrc16[(i1 * 2u) + 1u] = out2; + + /* Butterfly calculations */ + + /* Read yd (real), xd(imag) input */ + U0 = pSrc16[i3 * 2u]; + U1 = pSrc16[(i3 * 2u) + 1u]; + + /* T0 = yb-yd, T1 = xb-xd */ + T0 = __SSAT(T0 - U0, 16); + T1 = __SSAT(T1 - U1, 16); + + /* R0 = (ya-yc) + (xb- xd), R1 = (xa-xc) - (yb-yd)) */ + R0 = (S0 >> 1u) - (T1 >> 1u); + R1 = (S1 >> 1u) + (T0 >> 1u); + + /* S0 = (ya-yc) - (xb- xd), S1 = (xa-xc) + (yb-yd)) */ + S0 = (S0 >> 1u) + (T1 >> 1u); + S1 = (S1 >> 1u) - (T0 >> 1u); + + /* Butterfly process for the i0+fftLen/2 sample */ + out1 = (short) ((Co1 * S0 + Si1 * S1) >> 16u); + + out2 = (short) ((-Si1 * S0 + Co1 * S1) >> 16u); + + /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ + /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ + pSrc16[i2 * 2u] = out1; + pSrc16[(i2 * 2u) + 1u] = out2; + + /* Butterfly process for the i0+3fftLen/4 sample */ + out1 = (short) ((Si3 * R1 + Co3 * R0) >> 16u); + + out2 = (short) ((-Si3 * R0 + Co3 * R1) >> 16u); + /* xd' = (xa-yb-xc+yd)* Co3 + (ya+xb-yc-xd)* (si3) */ + /* yd' = (ya+xb-yc-xd)* Co3 - (xa-yb-xc+yd)* (si3) */ + pSrc16[i3 * 2u] = out1; + pSrc16[(i3 * 2u) + 1u] = out2; + } + } + /* Twiddle coefficients index modifier */ + twidCoefModifier <<= 2u; + } + /* end of middle stage process */ + + + /* data is in 10.6(q6) format for the 1024 point */ + /* data is in 8.8(q8) format for the 256 point */ + /* data is in 6.10(q10) format for the 64 point */ + /* data is in 4.12(q12) format for the 16 point */ + + /* Initializations for the last stage */ + n1 = n2; + n2 >>= 2u; + + /* start of last stage process */ + + /* Butterfly implementation */ + for (i0 = 0u; i0 <= (fftLen - n1); i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Reading i0, i0+fftLen/2 inputs */ + /* Read ya (real), xa(imag) input */ + T0 = pSrc16[i0 * 2u]; + T1 = pSrc16[(i0 * 2u) + 1u]; + + /* Read yc (real), xc(imag) input */ + S0 = pSrc16[i2 * 2u]; + S1 = pSrc16[(i2 * 2u) + 1u]; + + /* R0 = (ya + yc), R1 = (xa + xc) */ + R0 = __SSAT(T0 + S0, 16u); + R1 = __SSAT(T1 + S1, 16u); + + /* S0 = (ya - yc), S1 = (xa - xc) */ + S0 = __SSAT(T0 - S0, 16u); + S1 = __SSAT(T1 - S1, 16u); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2u]; + T1 = pSrc16[(i1 * 2u) + 1u]; + /* Read yd (real), xd(imag) input */ + U0 = pSrc16[i3 * 2u]; + U1 = pSrc16[(i3 * 2u) + 1u]; + + /* T0 = (yb + yd), T1 = (xb + xd)) */ + T0 = __SSAT(T0 + U0, 16u); + T1 = __SSAT(T1 + U1, 16u); + + /* writing the butterfly processed i0 sample */ + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + pSrc16[i0 * 2u] = (R0 >> 1u) + (T0 >> 1u); + pSrc16[(i0 * 2u) + 1u] = (R1 >> 1u) + (T1 >> 1u); + + /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */ + R0 = (R0 >> 1u) - (T0 >> 1u); + R1 = (R1 >> 1u) - (T1 >> 1u); + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2u]; + T1 = pSrc16[(i1 * 2u) + 1u]; + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* xc' = (xa-xb+xc-xd) */ + /* yc' = (ya-yb+yc-yd) */ + pSrc16[i1 * 2u] = R0; + pSrc16[(i1 * 2u) + 1u] = R1; + + /* Read yd (real), xd(imag) input */ + U0 = pSrc16[i3 * 2u]; + U1 = pSrc16[(i3 * 2u) + 1u]; + /* T0 = (yb - yd), T1 = (xb - xd) */ + T0 = __SSAT(T0 - U0, 16u); + T1 = __SSAT(T1 - U1, 16u); + + /* writing the butterfly processed i0 + fftLen/2 sample */ + /* xb' = (xa+yb-xc-yd) */ + /* yb' = (ya-xb-yc+xd) */ + pSrc16[i2 * 2u] = (S0 >> 1u) + (T1 >> 1u); + pSrc16[(i2 * 2u) + 1u] = (S1 >> 1u) - (T0 >> 1u); + + /* writing the butterfly processed i0 + 3fftLen/4 sample */ + /* xd' = (xa-yb-xc+yd) */ + /* yd' = (ya+xb-yc-xd) */ + pSrc16[i3 * 2u] = (S0 >> 1u) - (T1 >> 1u); + pSrc16[(i3 * 2u) + 1u] = (S1 >> 1u) + (T0 >> 1u); + + } + + /* end of last stage process */ + + /* output is in 11.5(q5) format for the 1024 point */ + /* output is in 9.7(q7) format for the 256 point */ + /* output is in 7.9(q9) format for the 64 point */ + /* output is in 5.11(q11) format for the 16 point */ + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + + +/** + * @brief Core function for the Q15 CIFFT butterfly process. + * @param[in, out] *pSrc16 points to the in-place buffer of Q15 data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef16 points to twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + +/* +* Radix-4 IFFT algorithm used is : +* +* CIFFT uses same twiddle coefficients as CFFT function +* x[k] = x[n] + (j)k * x[n + fftLen/4] + (-1)k * x[n+fftLen/2] + (-j)k * x[n+3*fftLen/4] +* +* +* IFFT is implemented with following changes in equations from FFT +* +* Input real and imaginary data: +* x(n) = xa + j * ya +* x(n+N/4 ) = xb + j * yb +* x(n+N/2 ) = xc + j * yc +* x(n+3N 4) = xd + j * yd +* +* +* Output real and imaginary data: +* x(4r) = xa'+ j * ya' +* x(4r+1) = xb'+ j * yb' +* x(4r+2) = xc'+ j * yc' +* x(4r+3) = xd'+ j * yd' +* +* +* Twiddle factors for radix-4 IFFT: +* Wn = co1 + j * (si1) +* W2n = co2 + j * (si2) +* W3n = co3 + j * (si3) + +* The real and imaginary output values for the radix-4 butterfly are +* xa' = xa + xb + xc + xd +* ya' = ya + yb + yc + yd +* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) +* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) +* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) +* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) +* xd' = (xa+yb-xc-yd)* co3 - (ya-xb-yc+xd)* (si3) +* yd' = (ya-xb-yc+xd)* co3 + (xa+yb-xc-yd)* (si3) +* +*/ + +void arm_radix4_butterfly_inverse_q15( + q15_t * pSrc16, + uint32_t fftLen, + q15_t * pCoef16, + uint32_t twidCoefModifier) +{ + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t R, S, T, U; + q31_t C1, C2, C3, out1, out2; + q31_t *pSrc, *pCoeff; + uint32_t n1, n2, ic, i0, i1, i2, i3, j, k; + q15_t in; + + /* Total process is divided into three stages */ + + /* process first stage, middle stages, & last stage */ + + /* pointer initializations for SIMD calculations */ + pSrc = (q31_t *) pSrc16; + pCoeff = (q31_t *) pCoef16; + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + + /* n2 = fftLen/4 */ + n2 >>= 2u; + + /* Index for twiddle coefficient */ + ic = 0u; + + /* Index for input read and output write */ + i0 = 0u; + + j = n2; + + /* Input is in 1.15(q15) format */ + + /* Start of first stage process */ + do + { + /* Butterfly implementation */ + + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Reading i0, i0+fftLen/2 inputs */ + /* Read ya (real), xa(imag) input */ + T = pSrc[i0]; + in = ((int16_t) (T & 0xFFFF)) >> 2; + T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF); + /* Read yc (real), xc(imag) input */ + S = pSrc[i2]; + in = ((int16_t) (S & 0xFFFF)) >> 2; + S = ((S >> 2) & 0xFFFF0000) | (in & 0xFFFF); + + /* R = packed((ya + yc), (xa + xc) ) */ + R = __QADD16(T, S); + /* S = packed((ya - yc), (xa - xc) ) */ + S = __QSUB16(T, S); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* Read yb (real), xb(imag) input */ + T = pSrc[i1]; + in = ((int16_t) (T & 0xFFFF)) >> 2; + T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF); + /* Read yd (real), xd(imag) input */ + U = pSrc[i3]; + in = ((int16_t) (U & 0xFFFF)) >> 2; + U = ((U >> 2) & 0xFFFF0000) | (in & 0xFFFF); + + /* T = packed((yb + yd), (xb + xd) ) */ + T = __QADD16(T, U); + + /* writing the butterfly processed i0 sample */ + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + pSrc[i0] = __SHADD16(R, T); + + /* R = packed((ya + yc) - (yb + yd), (xa + xc)- (xb + xd)) */ + R = __QSUB16(R, T); + /* co2 & si2 are read from SIMD Coefficient pointer */ + C2 = pCoeff[2u * ic]; + +#ifndef ARM_MATH_BIG_ENDIAN + + /* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) */ + out1 = __SMUSD(C2, R) >> 16u; + /* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */ + out2 = __SMUADX(C2, R); + +#else + + /* xc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */ + out1 = __SMUADX(C2, R) >> 16u; + /* yc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) */ + out2 = __SMUSD(-C2, R); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Reading i0+fftLen/4 */ + /* T = packed(yb, xb) */ + T = pSrc[i1]; + in = ((int16_t) (T & 0xFFFF)) >> 2; + T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF); + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* writing output(xc', yc') in little endian format */ + pSrc[i1] = (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + + /* Butterfly calculations */ + /* U = packed(yd, xd) */ + U = pSrc[i3]; + in = ((int16_t) (U & 0xFFFF)) >> 2; + U = ((U >> 2) & 0xFFFF0000) | (in & 0xFFFF); + + /* T = packed(yb-yd, xb-xd) */ + T = __QSUB16(T, U); + +#ifndef ARM_MATH_BIG_ENDIAN + + /* R = packed((ya-yc) - (xb- xd) , (xa-xc) + (yb-yd)) */ + R = __QSAX(S, T); + /* S = packed((ya-yc) + (xb- xd), (xa-xc) - (yb-yd)) */ + S = __QASX(S, T); + +#else + + /* R = packed((ya-yc) - (xb- xd) , (xa-xc) + (yb-yd)) */ + R = __QASX(S, T); + /* S = packed((ya-yc) + (xb- xd), (xa-xc) - (yb-yd)) */ + S = __QSAX(S, T); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* co1 & si1 are read from SIMD Coefficient pointer */ + C1 = pCoeff[ic]; + /* Butterfly process for the i0+fftLen/2 sample */ + +#ifndef ARM_MATH_BIG_ENDIAN + + /* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) */ + out1 = __SMUSD(C1, S) >> 16u; + /* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) */ + out2 = __SMUADX(C1, S); + +#else + + /* xb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) */ + out1 = __SMUADX(C1, S) >> 16u; + /* yb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) */ + out2 = __SMUSD(-C1, S); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* writing output(xb', yb') in little endian format */ + pSrc[i2] = ((out2) & 0xFFFF0000) | ((out1) & 0x0000FFFF); + + /* co3 & si3 are read from SIMD Coefficient pointer */ + C3 = pCoeff[3u * ic]; + /* Butterfly process for the i0+3fftLen/4 sample */ + +#ifndef ARM_MATH_BIG_ENDIAN + + /* xd' = (xa+yb-xc-yd)* co3 - (ya-xb-yc+xd)* (si3) */ + out1 = __SMUSD(C3, R) >> 16u; + /* yd' = (ya-xb-yc+xd)* co3 + (xa+yb-xc-yd)* (si3) */ + out2 = __SMUADX(C3, R); + +#else + + /* xd' = (ya-xb-yc+xd)* co3 + (xa+yb-xc-yd)* (si3) */ + out1 = __SMUADX(C3, R) >> 16u; + /* yd' = (xa+yb-xc-yd)* co3 - (ya-xb-yc+xd)* (si3) */ + out2 = __SMUSD(-C3, R); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* writing output(xd', yd') in little endian format */ + pSrc[i3] = ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + + /* Twiddle coefficients index modifier */ + ic = ic + twidCoefModifier; + + /* Updating input index */ + i0 = i0 + 1u; + + } while(--j); + + /* End of first stage process */ + + /* data is in 4.11(q11) format */ + + + /* Start of Middle stage process */ + + /* Twiddle coefficients index modifier */ + twidCoefModifier <<= 2u; + + /* Calculation of Middle stage */ + for (k = fftLen / 4u; k > 4u; k >>= 2u) + { + /* Initializations for the middle stage */ + n1 = n2; + n2 >>= 2u; + ic = 0u; + + for (j = 0u; j <= (n2 - 1u); j++) + { + /* index calculation for the coefficients */ + C1 = pCoeff[ic]; + C2 = pCoeff[2u * ic]; + C3 = pCoeff[3u * ic]; + + /* Twiddle coefficients index modifier */ + ic = ic + twidCoefModifier; + + /* Butterfly implementation */ + for (i0 = j; i0 < fftLen; i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Reading i0, i0+fftLen/2 inputs */ + /* Read ya (real), xa(imag) input */ + T = pSrc[i0]; + + /* Read yc (real), xc(imag) input */ + S = pSrc[i2]; + + + /* R = packed( (ya + yc), (xa + xc)) */ + R = __QADD16(T, S); + /* S = packed((ya - yc), (xa - xc)) */ + S = __QSUB16(T, S); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* Read yb (real), xb(imag) input */ + T = pSrc[i1]; + + /* Read yd (real), xd(imag) input */ + U = pSrc[i3]; + + + /* T = packed( (yb + yd), (xb + xd)) */ + T = __QADD16(T, U); + + /* writing the butterfly processed i0 sample */ + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + out1 = __SHADD16(R, T); + in = ((int16_t) (out1 & 0xFFFF)) >> 1; + out1 = ((out1 >> 1) & 0xFFFF0000) | (in & 0xFFFF); + pSrc[i0] = out1; + + + + /* R = packed( (ya + yc) - (yb + yd), (xa + xc) - (xb + xd)) */ + R = __SHSUB16(R, T); + + +#ifndef ARM_MATH_BIG_ENDIAN + + /* (ya-yb+yc-yd)* (si2) - (xa-xb+xc-xd)* co2 */ + out1 = __SMUSD(C2, R) >> 16u; + /* (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */ + out2 = __SMUADX(C2, R); + +#else + + /* (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */ + out1 = __SMUADX(R, C2) >> 16u; + /* (ya-yb+yc-yd)* (si2) - (xa-xb+xc-xd)* co2 */ + out2 = __SMUSD(-C2, R); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Reading i0+3fftLen/4 */ + /* Read yb (real), xb(imag) input */ + T = pSrc[i1]; + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) */ + /* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */ + pSrc[i1] = ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + + /* Butterfly calculations */ + /* Read yd (real), xd(imag) input */ + U = pSrc[i3]; + + /* T = packed(yb-yd, xb-xd) */ + T = __QSUB16(T, U); + + +#ifndef ARM_MATH_BIG_ENDIAN + + /* R = packed((ya-yc) - (xb- xd) , (xa-xc) + (yb-yd)) */ + R = __SHSAX(S, T); + + /* S = packed((ya-yc) + (xb- xd), (xa-xc) - (yb-yd)) */ + S = __SHASX(S, T); + /* Butterfly process for the i0+fftLen/2 sample */ + out1 = __SMUSD(C1, S) >> 16u; + out2 = __SMUADX(C1, S); + +#else + + /* R = packed((ya-yc) - (xb- xd) , (xa-xc) + (yb-yd)) */ + R = __SHASX(S, T); + + /* S = packed((ya-yc) + (xb- xd), (xa-xc) - (yb-yd)) */ + S = __SHSAX(S, T); + /* Butterfly process for the i0+fftLen/2 sample */ + out1 = __SMUADX(S, C1) >> 16u; + out2 = __SMUSD(-C1, S); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) */ + /* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) */ + pSrc[i2] = ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + + /* Butterfly process for the i0+3fftLen/4 sample */ + +#ifndef ARM_MATH_BIG_ENDIAN + + out1 = __SMUSD(C3, R) >> 16u; + out2 = __SMUADX(C3, R); + +#else + + out1 = __SMUADX(C3, R) >> 16u; + out2 = __SMUSD(-C3, R); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* xd' = (xa+yb-xc-yd)* co3 - (ya-xb-yc+xd)* (si3) */ + /* yd' = (ya-xb-yc+xd)* co3 + (xa+yb-xc-yd)* (si3) */ + pSrc[i3] = ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + + + } + } + /* Twiddle coefficients index modifier */ + twidCoefModifier <<= 2u; + } + /* End of Middle stages process */ + + + /* data is in 10.6(q6) format for the 1024 point */ + /* data is in 8.8(q8) format for the 256 point */ + /* data is in 6.10(q10) format for the 64 point */ + /* data is in 4.12(q12) format for the 16 point */ + + /* start of last stage process */ + + + /* Initializations for the last stage */ + n1 = n2; + n2 >>= 2u; + + /* Butterfly implementation */ + for (i0 = 0u; i0 <= (fftLen - n1); i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Reading i0, i0+fftLen/2 inputs */ + /* Read ya (real), xa(imag) input */ + T = pSrc[i0]; + /* Read yc (real), xc(imag) input */ + S = pSrc[i2]; + + /* R = packed((ya + yc), (xa + xc)) */ + R = __QADD16(T, S); + /* S = packed((ya - yc), (xa - xc)) */ + S = __QSUB16(T, S); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* Read yb (real), xb(imag) input */ + T = pSrc[i1]; + /* Read yd (real), xd(imag) input */ + U = pSrc[i3]; + + /* T = packed((yb + yd), (xb + xd)) */ + T = __QADD16(T, U); + + /* writing the butterfly processed i0 sample */ + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + pSrc[i0] = __SHADD16(R, T); + + /* R = packed((ya + yc) - (yb + yd), (xa + xc) - (xb + xd)) */ + R = __SHSUB16(R, T); + + /* Read yb (real), xb(imag) input */ + T = pSrc[i1]; + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* xc' = (xa-xb+xc-xd) */ + /* yc' = (ya-yb+yc-yd) */ + pSrc[i1] = R; + + /* Read yd (real), xd(imag) input */ + U = pSrc[i3]; + /* T = packed( (yb - yd), (xb - xd)) */ + T = __QSUB16(T, U); + + +#ifndef ARM_MATH_BIG_ENDIAN + + /* writing the butterfly processed i0 + fftLen/2 sample */ + /* xb' = (xa-yb-xc+yd) */ + /* yb' = (ya+xb-yc-xd) */ + pSrc[i2] = __SHASX(S, T); + + /* writing the butterfly processed i0 + 3fftLen/4 sample */ + /* xd' = (xa+yb-xc-yd) */ + /* yd' = (ya-xb-yc+xd) */ + pSrc[i3] = __SHSAX(S, T); + + +#else + + /* writing the butterfly processed i0 + fftLen/2 sample */ + /* xb' = (xa-yb-xc+yd) */ + /* yb' = (ya+xb-yc-xd) */ + pSrc[i2] = __SHSAX(S, T); + + /* writing the butterfly processed i0 + 3fftLen/4 sample */ + /* xd' = (xa+yb-xc-yd) */ + /* yd' = (ya-xb-yc+xd) */ + pSrc[i3] = __SHASX(S, T); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + } + /* end of last stage process */ + + /* output is in 11.5(q5) format for the 1024 point */ + /* output is in 9.7(q7) format for the 256 point */ + /* output is in 7.9(q9) format for the 64 point */ + /* output is in 5.11(q11) format for the 16 point */ + + +#else + + /* Run the below code for Cortex-M0 */ + + q15_t R0, R1, S0, S1, T0, T1, U0, U1; + q15_t Co1, Si1, Co2, Si2, Co3, Si3, out1, out2; + uint32_t n1, n2, ic, i0, i1, i2, i3, j, k; + + /* Total process is divided into three stages */ + + /* process first stage, middle stages, & last stage */ + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + + /* n2 = fftLen/4 */ + n2 >>= 2u; + + /* Index for twiddle coefficient */ + ic = 0u; + + /* Index for input read and output write */ + i0 = 0u; + + j = n2; + + /* Input is in 1.15(q15) format */ + + /* Start of first stage process */ + do + { + /* Butterfly implementation */ + + /* index calculation for the input as, */ + /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Reading i0, i0+fftLen/2 inputs */ + /* input is down scale by 4 to avoid overflow */ + /* Read ya (real), xa(imag) input */ + T0 = pSrc16[i0 * 2u] >> 2u; + T1 = pSrc16[(i0 * 2u) + 1u] >> 2u; + /* input is down scale by 4 to avoid overflow */ + /* Read yc (real), xc(imag) input */ + S0 = pSrc16[i2 * 2u] >> 2u; + S1 = pSrc16[(i2 * 2u) + 1u] >> 2u; + + /* R0 = (ya + yc), R1 = (xa + xc) */ + R0 = __SSAT(T0 + S0, 16u); + R1 = __SSAT(T1 + S1, 16u); + /* S0 = (ya - yc), S1 = (xa - xc) */ + S0 = __SSAT(T0 - S0, 16u); + S1 = __SSAT(T1 - S1, 16u); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* input is down scale by 4 to avoid overflow */ + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2u] >> 2u; + T1 = pSrc16[(i1 * 2u) + 1u] >> 2u; + /* Read yd (real), xd(imag) input */ + /* input is down scale by 4 to avoid overflow */ + U0 = pSrc16[i3 * 2u] >> 2u; + U1 = pSrc16[(i3 * 2u) + 1u] >> 2u; + + /* T0 = (yb + yd), T1 = (xb + xd) */ + T0 = __SSAT(T0 + U0, 16u); + T1 = __SSAT(T1 + U1, 16u); + + /* writing the butterfly processed i0 sample */ + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + pSrc16[i0 * 2u] = (R0 >> 1u) + (T0 >> 1u); + pSrc16[(i0 * 2u) + 1u] = (R1 >> 1u) + (T1 >> 1u); + + /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc)- (xb + xd) */ + R0 = __SSAT(R0 - T0, 16u); + R1 = __SSAT(R1 - T1, 16u); + /* co2 & si2 are read from Coefficient pointer */ + Co2 = pCoef16[2u * ic * 2u]; + Si2 = pCoef16[(2u * ic * 2u) + 1u]; + /* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) */ + out1 = (short) ((Co2 * R0 - Si2 * R1) >> 16u); + /* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */ + out2 = (short) ((Si2 * R0 + Co2 * R1) >> 16u); + + /* Reading i0+fftLen/4 */ + /* input is down scale by 4 to avoid overflow */ + /* T0 = yb, T1 = xb */ + T0 = pSrc16[i1 * 2u] >> 2u; + T1 = pSrc16[(i1 * 2u) + 1u] >> 2u; + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* writing output(xc', yc') in little endian format */ + pSrc16[i1 * 2u] = out1; + pSrc16[(i1 * 2u) + 1u] = out2; + + /* Butterfly calculations */ + /* input is down scale by 4 to avoid overflow */ + /* U0 = yd, U1 = xd) */ + U0 = pSrc16[i3 * 2u] >> 2u; + U1 = pSrc16[(i3 * 2u) + 1u] >> 2u; + + /* T0 = yb-yd, T1 = xb-xd) */ + T0 = __SSAT(T0 - U0, 16u); + T1 = __SSAT(T1 - U1, 16u); + /* R0 = (ya-yc) - (xb- xd) , R1 = (xa-xc) + (yb-yd) */ + R0 = (short) __SSAT((q31_t) (S0 + T1), 16); + R1 = (short) __SSAT((q31_t) (S1 - T0), 16); + /* S = (ya-yc) + (xb- xd), S1 = (xa-xc) - (yb-yd) */ + S0 = (short) __SSAT((q31_t) (S0 - T1), 16); + S1 = (short) __SSAT((q31_t) (S1 + T0), 16); + + /* co1 & si1 are read from Coefficient pointer */ + Co1 = pCoef16[ic * 2u]; + Si1 = pCoef16[(ic * 2u) + 1u]; + /* Butterfly process for the i0+fftLen/2 sample */ + /* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) */ + out1 = (short) ((Co1 * S0 - Si1 * S1) >> 16u); + /* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) */ + out2 = (short) ((Si1 * S0 + Co1 * S1) >> 16u); + /* writing output(xb', yb') in little endian format */ + pSrc16[i2 * 2u] = out1; + pSrc16[(i2 * 2u) + 1u] = out2; + + /* Co3 & si3 are read from Coefficient pointer */ + Co3 = pCoef16[3u * ic * 2u]; + Si3 = pCoef16[(3u * ic * 2u) + 1u]; + /* Butterfly process for the i0+3fftLen/4 sample */ + /* xd' = (xa+yb-xc-yd)* Co3 - (ya-xb-yc+xd)* (si3) */ + out1 = (short) ((Co3 * R0 - Si3 * R1) >> 16u); + /* yd' = (ya-xb-yc+xd)* Co3 + (xa+yb-xc-yd)* (si3) */ + out2 = (short) ((Si3 * R0 + Co3 * R1) >> 16u); + /* writing output(xd', yd') in little endian format */ + pSrc16[i3 * 2u] = out1; + pSrc16[(i3 * 2u) + 1u] = out2; + + /* Twiddle coefficients index modifier */ + ic = ic + twidCoefModifier; + + /* Updating input index */ + i0 = i0 + 1u; + + } while(--j); + + /* End of first stage process */ + + /* data is in 4.11(q11) format */ + + + /* Start of Middle stage process */ + + /* Twiddle coefficients index modifier */ + twidCoefModifier <<= 2u; + + /* Calculation of Middle stage */ + for (k = fftLen / 4u; k > 4u; k >>= 2u) + { + /* Initializations for the middle stage */ + n1 = n2; + n2 >>= 2u; + ic = 0u; + + for (j = 0u; j <= (n2 - 1u); j++) + { + /* index calculation for the coefficients */ + Co1 = pCoef16[ic * 2u]; + Si1 = pCoef16[(ic * 2u) + 1u]; + Co2 = pCoef16[2u * ic * 2u]; + Si2 = pCoef16[2u * ic * 2u + 1u]; + Co3 = pCoef16[3u * ic * 2u]; + Si3 = pCoef16[(3u * ic * 2u) + 1u]; + + /* Twiddle coefficients index modifier */ + ic = ic + twidCoefModifier; + + /* Butterfly implementation */ + for (i0 = j; i0 < fftLen; i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Reading i0, i0+fftLen/2 inputs */ + /* Read ya (real), xa(imag) input */ + T0 = pSrc16[i0 * 2u]; + T1 = pSrc16[(i0 * 2u) + 1u]; + + /* Read yc (real), xc(imag) input */ + S0 = pSrc16[i2 * 2u]; + S1 = pSrc16[(i2 * 2u) + 1u]; + + + /* R0 = (ya + yc), R1 = (xa + xc) */ + R0 = __SSAT(T0 + S0, 16u); + R1 = __SSAT(T1 + S1, 16u); + /* S0 = (ya - yc), S1 = (xa - xc) */ + S0 = __SSAT(T0 - S0, 16u); + S1 = __SSAT(T1 - S1, 16u); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2u]; + T1 = pSrc16[(i1 * 2u) + 1u]; + + /* Read yd (real), xd(imag) input */ + U0 = pSrc16[i3 * 2u]; + U1 = pSrc16[(i3 * 2u) + 1u]; + + /* T0 = (yb + yd), T1 = (xb + xd) */ + T0 = __SSAT(T0 + U0, 16u); + T1 = __SSAT(T1 + U1, 16u); + + /* writing the butterfly processed i0 sample */ + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + pSrc16[i0 * 2u] = ((R0 >> 1u) + (T0 >> 1u)) >> 1u; + pSrc16[(i0 * 2u) + 1u] = ((R1 >> 1u) + (T1 >> 1u)) >> 1u; + + /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */ + R0 = (R0 >> 1u) - (T0 >> 1u); + R1 = (R1 >> 1u) - (T1 >> 1u); + + /* (ya-yb+yc-yd)* (si2) - (xa-xb+xc-xd)* co2 */ + out1 = (short) ((Co2 * R0 - Si2 * R1) >> 16); + /* (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */ + out2 = (short) ((Si2 * R0 + Co2 * R1) >> 16); + + /* Reading i0+3fftLen/4 */ + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2u]; + T1 = pSrc16[(i1 * 2u) + 1u]; + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) */ + /* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */ + pSrc16[i1 * 2u] = out1; + pSrc16[(i1 * 2u) + 1u] = out2; + + /* Butterfly calculations */ + /* Read yd (real), xd(imag) input */ + U0 = pSrc16[i3 * 2u]; + U1 = pSrc16[(i3 * 2u) + 1u]; + + /* T0 = yb-yd, T1 = xb-xd) */ + T0 = __SSAT(T0 - U0, 16u); + T1 = __SSAT(T1 - U1, 16u); + + /* R0 = (ya-yc) - (xb- xd) , R1 = (xa-xc) + (yb-yd) */ + R0 = (S0 >> 1u) + (T1 >> 1u); + R1 = (S1 >> 1u) - (T0 >> 1u); + + /* S1 = (ya-yc) + (xb- xd), S1 = (xa-xc) - (yb-yd) */ + S0 = (S0 >> 1u) - (T1 >> 1u); + S1 = (S1 >> 1u) + (T0 >> 1u); + + /* Butterfly process for the i0+fftLen/2 sample */ + out1 = (short) ((Co1 * S0 - Si1 * S1) >> 16u); + out2 = (short) ((Si1 * S0 + Co1 * S1) >> 16u); + /* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) */ + /* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) */ + pSrc16[i2 * 2u] = out1; + pSrc16[(i2 * 2u) + 1u] = out2; + + /* Butterfly process for the i0+3fftLen/4 sample */ + out1 = (short) ((Co3 * R0 - Si3 * R1) >> 16u); + + out2 = (short) ((Si3 * R0 + Co3 * R1) >> 16u); + /* xd' = (xa+yb-xc-yd)* Co3 - (ya-xb-yc+xd)* (si3) */ + /* yd' = (ya-xb-yc+xd)* Co3 + (xa+yb-xc-yd)* (si3) */ + pSrc16[i3 * 2u] = out1; + pSrc16[(i3 * 2u) + 1u] = out2; + + + } + } + /* Twiddle coefficients index modifier */ + twidCoefModifier <<= 2u; + } + /* End of Middle stages process */ + + + /* data is in 10.6(q6) format for the 1024 point */ + /* data is in 8.8(q8) format for the 256 point */ + /* data is in 6.10(q10) format for the 64 point */ + /* data is in 4.12(q12) format for the 16 point */ + + /* start of last stage process */ + + + /* Initializations for the last stage */ + n1 = n2; + n2 >>= 2u; + + /* Butterfly implementation */ + for (i0 = 0u; i0 <= (fftLen - n1); i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Reading i0, i0+fftLen/2 inputs */ + /* Read ya (real), xa(imag) input */ + T0 = pSrc16[i0 * 2u]; + T1 = pSrc16[(i0 * 2u) + 1u]; + /* Read yc (real), xc(imag) input */ + S0 = pSrc16[i2 * 2u]; + S1 = pSrc16[(i2 * 2u) + 1u]; + + /* R0 = (ya + yc), R1 = (xa + xc) */ + R0 = __SSAT(T0 + S0, 16u); + R1 = __SSAT(T1 + S1, 16u); + /* S0 = (ya - yc), S1 = (xa - xc) */ + S0 = __SSAT(T0 - S0, 16u); + S1 = __SSAT(T1 - S1, 16u); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2u]; + T1 = pSrc16[(i1 * 2u) + 1u]; + /* Read yd (real), xd(imag) input */ + U0 = pSrc16[i3 * 2u]; + U1 = pSrc16[(i3 * 2u) + 1u]; + + /* T0 = (yb + yd), T1 = (xb + xd) */ + T0 = __SSAT(T0 + U0, 16u); + T1 = __SSAT(T1 + U1, 16u); + + /* writing the butterfly processed i0 sample */ + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + pSrc16[i0 * 2u] = (R0 >> 1u) + (T0 >> 1u); + pSrc16[(i0 * 2u) + 1u] = (R1 >> 1u) + (T1 >> 1u); + + /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */ + R0 = (R0 >> 1u) - (T0 >> 1u); + R1 = (R1 >> 1u) - (T1 >> 1u); + + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2u]; + T1 = pSrc16[(i1 * 2u) + 1u]; + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* xc' = (xa-xb+xc-xd) */ + /* yc' = (ya-yb+yc-yd) */ + pSrc16[i1 * 2u] = R0; + pSrc16[(i1 * 2u) + 1u] = R1; + + /* Read yd (real), xd(imag) input */ + U0 = pSrc16[i3 * 2u]; + U1 = pSrc16[(i3 * 2u) + 1u]; + /* T0 = (yb - yd), T1 = (xb - xd) */ + T0 = __SSAT(T0 - U0, 16u); + T1 = __SSAT(T1 - U1, 16u); + + /* writing the butterfly processed i0 + fftLen/2 sample */ + /* xb' = (xa-yb-xc+yd) */ + /* yb' = (ya+xb-yc-xd) */ + pSrc16[i2 * 2u] = (S0 >> 1u) - (T1 >> 1u); + pSrc16[(i2 * 2u) + 1u] = (S1 >> 1u) + (T0 >> 1u); + + + /* writing the butterfly processed i0 + 3fftLen/4 sample */ + /* xd' = (xa+yb-xc-yd) */ + /* yd' = (ya-xb-yc+xd) */ + pSrc16[i3 * 2u] = (S0 >> 1u) + (T1 >> 1u); + pSrc16[(i3 * 2u) + 1u] = (S1 >> 1u) - (T0 >> 1u); + } + /* end of last stage process */ + + /* output is in 11.5(q5) format for the 1024 point */ + /* output is in 9.7(q7) format for the 256 point */ + /* output is in 7.9(q9) format for the 64 point */ + /* output is in 5.11(q11) format for the 16 point */ + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + + +/* + * @brief In-place bit reversal function. + * @param[in, out] *pSrc points to the in-place buffer of Q15 data type. + * @param[in] fftLen length of the FFT. + * @param[in] bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table + * @param[in] *pBitRevTab points to bit reversal table. + * @return none. + */ + +void arm_bitreversal_q15( + q15_t * pSrc16, + uint32_t fftLen, + uint16_t bitRevFactor, + uint16_t * pBitRevTab) +{ + q31_t *pSrc = (q31_t *) pSrc16; + q31_t in; + uint32_t fftLenBy2, fftLenBy2p1; + uint32_t i, j; + + /* Initializations */ + j = 0u; + fftLenBy2 = fftLen / 2u; + fftLenBy2p1 = (fftLen / 2u) + 1u; + + /* Bit Reversal Implementation */ + for (i = 0u; i <= (fftLenBy2 - 2u); i += 2u) + { + if(i < j) + { + /* pSrc[i] <-> pSrc[j]; */ + /* pSrc[i+1u] <-> pSrc[j+1u] */ + in = pSrc[i]; + pSrc[i] = pSrc[j]; + pSrc[j] = in; + + /* pSrc[i + fftLenBy2p1] <-> pSrc[j + fftLenBy2p1]; */ + /* pSrc[i + fftLenBy2p1+1u] <-> pSrc[j + fftLenBy2p1+1u] */ + in = pSrc[i + fftLenBy2p1]; + pSrc[i + fftLenBy2p1] = pSrc[j + fftLenBy2p1]; + pSrc[j + fftLenBy2p1] = in; + } + + /* pSrc[i+1u] <-> pSrc[j+fftLenBy2]; */ + /* pSrc[i+2] <-> pSrc[j+fftLenBy2+1u] */ + in = pSrc[i + 1u]; + pSrc[i + 1u] = pSrc[j + fftLenBy2]; + pSrc[j + fftLenBy2] = in; + + /* Reading the index for the bit reversal */ + j = *pBitRevTab; + + /* Updating the bit reversal index depending on the fft length */ + pBitRevTab += bitRevFactor; + } +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q31.c new file mode 100644 index 000000000..ad0265616 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q31.c @@ -0,0 +1,906 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_cfft_radix4_q31.c +* +* Description: This file has function definition of Radix-4 FFT & IFFT function and +* In-place bit reversal using bit reversal table +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.5 2010/04/26 +* incorporated review comments and updated with latest CMSIS layer +* +* Version 0.0.3 2010/03/10 +* Initial version +* -------------------------------------------------------------------- */ +#include "arm_math.h" + + +/** + * @ingroup groupTransforms + */ + +/** + * @addtogroup CFFT_CIFFT + * @{ + */ + +/** + * @details + * @brief Processing function for the Q31 CFFT/CIFFT. + * @param[in] *S points to an instance of the Q31 CFFT/CIFFT structure. + * @param[in, out] *pSrc points to the complex data buffer of size 2*fftLen. Processing occurs in-place. + * @return none. + * + * \par Input and output formats: + * \par + * Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process. + * Hence the output format is different for different FFT sizes. + * The input and output formats for different FFT sizes and number of bits to upscale are mentioned in the tables below for CFFT and CIFFT: + * \par + * \image html CFFTQ31.gif "Input and Output Formats for Q31 CFFT" + * \image html CIFFTQ31.gif "Input and Output Formats for Q31 CIFFT" + * + */ + +void arm_cfft_radix4_q31( + const arm_cfft_radix4_instance_q31 * S, + q31_t * pSrc) +{ + if(S->ifftFlag == 1u) + { + /* Complex IFFT radix-4 */ + arm_radix4_butterfly_inverse_q31(pSrc, S->fftLen, S->pTwiddle, + S->twidCoefModifier); + } + else + { + /* Complex FFT radix-4 */ + arm_radix4_butterfly_q31(pSrc, S->fftLen, S->pTwiddle, + S->twidCoefModifier); + } + + + if(S->bitReverseFlag == 1u) + { + /* Bit Reversal */ + arm_bitreversal_q31(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable); + } + +} + +/** + * @} end of CFFT_CIFFT group + */ + +/* +* Radix-4 FFT algorithm used is : +* +* Input real and imaginary data: +* x(n) = xa + j * ya +* x(n+N/4 ) = xb + j * yb +* x(n+N/2 ) = xc + j * yc +* x(n+3N 4) = xd + j * yd +* +* +* Output real and imaginary data: +* x(4r) = xa'+ j * ya' +* x(4r+1) = xb'+ j * yb' +* x(4r+2) = xc'+ j * yc' +* x(4r+3) = xd'+ j * yd' +* +* +* Twiddle factors for radix-4 FFT: +* Wn = co1 + j * (- si1) +* W2n = co2 + j * (- si2) +* W3n = co3 + j * (- si3) +* +* Butterfly implementation: +* xa' = xa + xb + xc + xd +* ya' = ya + yb + yc + yd +* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) +* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) +* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) +* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) +* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) +* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) +* +*/ + +/** + * @brief Core function for the Q31 CFFT butterfly process. + * @param[in, out] *pSrc points to the in-place buffer of Q31 data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef points to twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + +void arm_radix4_butterfly_q31( + q31_t * pSrc, + uint32_t fftLen, + q31_t * pCoef, + uint32_t twidCoefModifier) +{ + uint32_t n1, n2, ia1, ia2, ia3, i0, i1, i2, i3, j, k; + q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3; + + + /* Total process is divided into three stages */ + + /* process first stage, middle stages, & last stage */ + + + /* start of first stage process */ + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + /* n2 = fftLen/4 */ + n2 >>= 2u; + i0 = 0u; + ia1 = 0u; + + j = n2; + + /* Calculation of first stage */ + do + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2u], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* input is in 1.31(q31) format and provide 4 guard bits for the input */ + + /* Butterfly implementation */ + /* xa + xc */ + r1 = (pSrc[(2u * i0)] >> 4u) + (pSrc[(2u * i2)] >> 4u); + /* xa - xc */ + r2 = (pSrc[2u * i0] >> 4u) - (pSrc[2u * i2] >> 4u); + + /* ya + yc */ + s1 = (pSrc[(2u * i0) + 1u] >> 4u) + (pSrc[(2u * i2) + 1u] >> 4u); + /* ya - yc */ + s2 = (pSrc[(2u * i0) + 1u] >> 4u) - (pSrc[(2u * i2) + 1u] >> 4u); + + /* xb + xd */ + t1 = (pSrc[2u * i1] >> 4u) + (pSrc[2u * i3] >> 4u); + + /* xa' = xa + xb + xc + xd */ + pSrc[2u * i0] = (r1 + t1); + /* (xa + xc) - (xb + xd) */ + r1 = r1 - t1; + /* yb + yd */ + t2 = (pSrc[(2u * i1) + 1u] >> 4u) + (pSrc[(2u * i3) + 1u] >> 4u); + /* ya' = ya + yb + yc + yd */ + pSrc[(2u * i0) + 1u] = (s1 + t2); + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* yb - yd */ + t1 = (pSrc[(2u * i1) + 1u] >> 4u) - (pSrc[(2u * i3) + 1u] >> 4u); + /* xb - xd */ + t2 = (pSrc[2u * i1] >> 4u) - (pSrc[2u * i3] >> 4u); + + /* index calculation for the coefficients */ + ia2 = 2u * ia1; + co2 = pCoef[ia2 * 2u]; + si2 = pCoef[(ia2 * 2u) + 1u]; + + /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ + pSrc[2u * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32)) + + ((int32_t) (((q63_t) s1 * si2) >> 32))) << 1u; + + /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ + pSrc[(2u * i1) + 1u] = (((int32_t) (((q63_t) s1 * co2) >> 32)) - + ((int32_t) (((q63_t) r1 * si2) >> 32))) << 1u; + + /* (xa - xc) + (yb - yd) */ + r1 = r2 + t1; + /* (xa - xc) - (yb - yd) */ + r2 = r2 - t1; + + /* (ya - yc) - (xb - xd) */ + s1 = s2 - t2; + /* (ya - yc) + (xb - xd) */ + s2 = s2 + t2; + + co1 = pCoef[ia1 * 2u]; + si1 = pCoef[(ia1 * 2u) + 1u]; + + /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ + pSrc[2u * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) + + ((int32_t) (((q63_t) s1 * si1) >> 32))) << 1u; + + /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ + pSrc[(2u * i2) + 1u] = (((int32_t) (((q63_t) s1 * co1) >> 32)) - + ((int32_t) (((q63_t) r1 * si1) >> 32))) << 1u; + + /* index calculation for the coefficients */ + ia3 = 3u * ia1; + co3 = pCoef[ia3 * 2u]; + si3 = pCoef[(ia3 * 2u) + 1u]; + + /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ + pSrc[2u * i3] = (((int32_t) (((q63_t) r2 * co3) >> 32)) + + ((int32_t) (((q63_t) s2 * si3) >> 32))) << 1u; + + /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ + pSrc[(2u * i3) + 1u] = (((int32_t) (((q63_t) s2 * co3) >> 32)) - + ((int32_t) (((q63_t) r2 * si3) >> 32))) << 1u; + + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + /* Updating input index */ + i0 = i0 + 1u; + + } while(--j); + + /* end of first stage process */ + + /* data is in 5.27(q27) format */ + + + /* start of Middle stages process */ + + + /* each stage in middle stages provides two down scaling of the input */ + + twidCoefModifier <<= 2u; + + + for (k = fftLen / 4u; k > 4u; k >>= 2u) + { + /* Initializations for the first stage */ + n1 = n2; + n2 >>= 2u; + ia1 = 0u; + + /* Calculation of first stage */ + for (j = 0u; j <= (n2 - 1u); j++) + { + /* index calculation for the coefficients */ + ia2 = ia1 + ia1; + ia3 = ia2 + ia1; + co1 = pCoef[ia1 * 2u]; + si1 = pCoef[(ia1 * 2u) + 1u]; + co2 = pCoef[ia2 * 2u]; + si2 = pCoef[(ia2 * 2u) + 1u]; + co3 = pCoef[ia3 * 2u]; + si3 = pCoef[(ia3 * 2u) + 1u]; + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + for (i0 = j; i0 < fftLen; i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2u], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Butterfly implementation */ + /* xa + xc */ + r1 = pSrc[2u * i0] + pSrc[2u * i2]; + /* xa - xc */ + r2 = pSrc[2u * i0] - pSrc[2u * i2]; + + /* ya + yc */ + s1 = pSrc[(2u * i0) + 1u] + pSrc[(2u * i2) + 1u]; + /* ya - yc */ + s2 = pSrc[(2u * i0) + 1u] - pSrc[(2u * i2) + 1u]; + + /* xb + xd */ + t1 = pSrc[2u * i1] + pSrc[2u * i3]; + + /* xa' = xa + xb + xc + xd */ + pSrc[2u * i0] = (r1 + t1) >> 2u; + /* xa + xc -(xb + xd) */ + r1 = r1 - t1; + + /* yb + yd */ + t2 = pSrc[(2u * i1) + 1u] + pSrc[(2u * i3) + 1u]; + /* ya' = ya + yb + yc + yd */ + pSrc[(2u * i0) + 1u] = (s1 + t2) >> 2u; + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* (yb - yd) */ + t1 = pSrc[(2u * i1) + 1u] - pSrc[(2u * i3) + 1u]; + /* (xb - xd) */ + t2 = pSrc[2u * i1] - pSrc[2u * i3]; + + /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ + pSrc[2u * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32)) + + ((int32_t) (((q63_t) s1 * si2) >> 32))) >> 1u; + + /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ + pSrc[(2u * i1) + 1u] = (((int32_t) (((q63_t) s1 * co2) >> 32)) - + ((int32_t) (((q63_t) r1 * si2) >> 32))) >> 1u; + + /* (xa - xc) + (yb - yd) */ + r1 = r2 + t1; + /* (xa - xc) - (yb - yd) */ + r2 = r2 - t1; + + /* (ya - yc) - (xb - xd) */ + s1 = s2 - t2; + /* (ya - yc) + (xb - xd) */ + s2 = s2 + t2; + + /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ + pSrc[2u * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) + + ((int32_t) (((q63_t) s1 * si1) >> 32))) >> 1u; + + /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ + pSrc[(2u * i2) + 1u] = (((int32_t) (((q63_t) s1 * co1) >> 32)) - + ((int32_t) (((q63_t) r1 * si1) >> 32))) >> 1u; + + /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ + pSrc[2u * i3] = (((int32_t) (((q63_t) r2 * co3) >> 32)) + + ((int32_t) (((q63_t) s2 * si3) >> 32))) >> 1u; + + /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ + pSrc[(2u * i3) + 1u] = (((int32_t) (((q63_t) s2 * co3) >> 32)) - + ((int32_t) (((q63_t) r2 * si3) >> 32))) >> 1u; + } + } + twidCoefModifier <<= 2u; + } + + /* End of Middle stages process */ + + /* data is in 11.21(q21) format for the 1024 point as there are 3 middle stages */ + /* data is in 9.23(q23) format for the 256 point as there are 2 middle stages */ + /* data is in 7.25(q25) format for the 64 point as there are 1 middle stage */ + /* data is in 5.27(q27) format for the 16 point as there are no middle stages */ + + + /* start of Last stage process */ + + /* Initializations of last stage */ + n1 = n2; + n2 >>= 2u; + + /* Calculations of last stage */ + for (i0 = 0u; i0 <= (fftLen - n1); i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2u], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Butterfly implementation */ + /* xa + xb */ + r1 = pSrc[2u * i0] + pSrc[2u * i2]; + /* xa - xb */ + r2 = pSrc[2u * i0] - pSrc[2u * i2]; + + /* ya + yc */ + s1 = pSrc[(2u * i0) + 1u] + pSrc[(2u * i2) + 1u]; + /* ya - yc */ + s2 = pSrc[(2u * i0) + 1u] - pSrc[(2u * i2) + 1u]; + + /* xc + xd */ + t1 = pSrc[2u * i1] + pSrc[2u * i3]; + /* xa' = xa + xb + xc + xd */ + pSrc[2u * i0] = (r1 + t1); + /* (xa + xb) - (xc + xd) */ + r1 = r1 - t1; + + /* yb + yd */ + t2 = pSrc[(2u * i1) + 1u] + pSrc[(2u * i3) + 1u]; + /* ya' = ya + yb + yc + yd */ + pSrc[(2u * i0) + 1u] = (s1 + t2); + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* (yb-yd) */ + t1 = pSrc[(2u * i1) + 1u] - pSrc[(2u * i3) + 1u]; + /* (xb-xd) */ + t2 = pSrc[2u * i1] - pSrc[2u * i3]; + + /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ + pSrc[2u * i1] = r1; + /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ + pSrc[(2u * i1) + 1u] = s1; + + /* (xa+yb-xc-yd) */ + r1 = r2 + t1; + /* (xa-yb-xc+yd) */ + r2 = r2 - t1; + + /* (ya-xb-yc+xd) */ + s1 = s2 - t2; + /* (ya+xb-yc-xd) */ + s2 = s2 + t2; + + /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ + pSrc[2u * i2] = r1; + /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ + pSrc[(2u * i2) + 1u] = s1; + + /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ + pSrc[2u * i3] = r2; + /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ + pSrc[(2u * i3) + 1u] = s2; + + + } + + /* output is in 11.21(q21) format for the 1024 point */ + /* output is in 9.23(q23) format for the 256 point */ + /* output is in 7.25(q25) format for the 64 point */ + /* output is in 5.27(q27) format for the 16 point */ + + /* End of last stage process */ + +} + + +/** + * @brief Core function for the Q31 CIFFT butterfly process. + * @param[in, out] *pSrc points to the in-place buffer of Q31 data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef points to twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + + +/* +* Radix-4 IFFT algorithm used is : +* +* CIFFT uses same twiddle coefficients as CFFT Function +* x[k] = x[n] + (j)k * x[n + fftLen/4] + (-1)k * x[n+fftLen/2] + (-j)k * x[n+3*fftLen/4] +* +* +* IFFT is implemented with following changes in equations from FFT +* +* Input real and imaginary data: +* x(n) = xa + j * ya +* x(n+N/4 ) = xb + j * yb +* x(n+N/2 ) = xc + j * yc +* x(n+3N 4) = xd + j * yd +* +* +* Output real and imaginary data: +* x(4r) = xa'+ j * ya' +* x(4r+1) = xb'+ j * yb' +* x(4r+2) = xc'+ j * yc' +* x(4r+3) = xd'+ j * yd' +* +* +* Twiddle factors for radix-4 IFFT: +* Wn = co1 + j * (si1) +* W2n = co2 + j * (si2) +* W3n = co3 + j * (si3) + +* The real and imaginary output values for the radix-4 butterfly are +* xa' = xa + xb + xc + xd +* ya' = ya + yb + yc + yd +* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) +* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) +* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) +* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) +* xd' = (xa+yb-xc-yd)* co3 - (ya-xb-yc+xd)* (si3) +* yd' = (ya-xb-yc+xd)* co3 + (xa+yb-xc-yd)* (si3) +* +*/ + +void arm_radix4_butterfly_inverse_q31( + q31_t * pSrc, + uint32_t fftLen, + q31_t * pCoef, + uint32_t twidCoefModifier) +{ + uint32_t n1, n2, ia1, ia2, ia3, i0, i1, i2, i3, j, k; + q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3; + + /* input is be 1.31(q31) format for all FFT sizes */ + /* Total process is divided into three stages */ + /* process first stage, middle stages, & last stage */ + + /* Start of first stage process */ + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + /* n2 = fftLen/4 */ + n2 >>= 2u; + i0 = 0u; + ia1 = 0u; + + j = n2; + + do + { + + /* input is in 1.31(q31) format and provide 4 guard bits for the input */ + + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2u], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Butterfly implementation */ + /* xa + xc */ + r1 = (pSrc[2u * i0] >> 4u) + (pSrc[2u * i2] >> 4u); + /* xa - xc */ + r2 = (pSrc[2u * i0] >> 4u) - (pSrc[2u * i2] >> 4u); + + /* ya + yc */ + s1 = (pSrc[(2u * i0) + 1u] >> 4u) + (pSrc[(2u * i2) + 1u] >> 4u); + /* ya - yc */ + s2 = (pSrc[(2u * i0) + 1u] >> 4u) - (pSrc[(2u * i2) + 1u] >> 4u); + + /* xb + xd */ + t1 = (pSrc[2u * i1] >> 4u) + (pSrc[2u * i3] >> 4u); + + /* xa' = xa + xb + xc + xd */ + pSrc[2u * i0] = (r1 + t1); + /* (xa + xc) - (xb + xd) */ + r1 = r1 - t1; + /* yb + yd */ + t2 = (pSrc[(2u * i1) + 1u] >> 4u) + (pSrc[(2u * i3) + 1u] >> 4u); + /* ya' = ya + yb + yc + yd */ + pSrc[(2u * i0) + 1u] = (s1 + t2); + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* yb - yd */ + t1 = (pSrc[(2u * i1) + 1u] >> 4u) - (pSrc[(2u * i3) + 1u] >> 4u); + /* xb - xd */ + t2 = (pSrc[2u * i1] >> 4u) - (pSrc[2u * i3] >> 4u); + + /* index calculation for the coefficients */ + ia2 = 2u * ia1; + co2 = pCoef[ia2 * 2u]; + si2 = pCoef[(ia2 * 2u) + 1u]; + + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + pSrc[2u * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32)) - + ((int32_t) (((q63_t) s1 * si2) >> 32))) << 1u; + + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + pSrc[2u * i1 + 1u] = (((int32_t) (((q63_t) s1 * co2) >> 32)) + + ((int32_t) (((q63_t) r1 * si2) >> 32))) << 1u; + + /* (xa - xc) - (yb - yd) */ + r1 = r2 - t1; + /* (xa - xc) + (yb - yd) */ + r2 = r2 + t1; + + /* (ya - yc) + (xb - xd) */ + s1 = s2 + t2; + /* (ya - yc) - (xb - xd) */ + s2 = s2 - t2; + + co1 = pCoef[ia1 * 2u]; + si1 = pCoef[(ia1 * 2u) + 1u]; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + pSrc[2u * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) - + ((int32_t) (((q63_t) s1 * si1) >> 32))) << 1u; + + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + pSrc[(2u * i2) + 1u] = (((int32_t) (((q63_t) s1 * co1) >> 32)) + + ((int32_t) (((q63_t) r1 * si1) >> 32))) << 1u; + + /* index calculation for the coefficients */ + ia3 = 3u * ia1; + co3 = pCoef[ia3 * 2u]; + si3 = pCoef[(ia3 * 2u) + 1u]; + + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + pSrc[2u * i3] = (((int32_t) (((q63_t) r2 * co3) >> 32)) - + ((int32_t) (((q63_t) s2 * si3) >> 32))) << 1u; + + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + pSrc[(2u * i3) + 1u] = (((int32_t) (((q63_t) s2 * co3) >> 32)) + + ((int32_t) (((q63_t) r2 * si3) >> 32))) << 1u; + + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + /* Updating input index */ + i0 = i0 + 1u; + + } while(--j); + + /* data is in 5.27(q27) format */ + /* each stage provides two down scaling of the input */ + + + /* Start of Middle stages process */ + + twidCoefModifier <<= 2u; + + /* Calculation of second stage to excluding last stage */ + for (k = fftLen / 4u; k > 4u; k >>= 2u) + { + /* Initializations for the first stage */ + n1 = n2; + n2 >>= 2u; + ia1 = 0u; + + for (j = 0; j <= (n2 - 1u); j++) + { + /* index calculation for the coefficients */ + ia2 = ia1 + ia1; + ia3 = ia2 + ia1; + co1 = pCoef[ia1 * 2u]; + si1 = pCoef[(ia1 * 2u) + 1u]; + co2 = pCoef[ia2 * 2u]; + si2 = pCoef[(ia2 * 2u) + 1u]; + co3 = pCoef[ia3 * 2u]; + si3 = pCoef[(ia3 * 2u) + 1u]; + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + for (i0 = j; i0 < fftLen; i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2u], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Butterfly implementation */ + /* xa + xc */ + r1 = pSrc[2u * i0] + pSrc[2u * i2]; + /* xa - xc */ + r2 = pSrc[2u * i0] - pSrc[2u * i2]; + + /* ya + yc */ + s1 = pSrc[(2u * i0) + 1u] + pSrc[(2u * i2) + 1u]; + /* ya - yc */ + s2 = pSrc[(2u * i0) + 1u] - pSrc[(2u * i2) + 1u]; + + /* xb + xd */ + t1 = pSrc[2u * i1] + pSrc[2u * i3]; + + /* xa' = xa + xb + xc + xd */ + pSrc[2u * i0] = (r1 + t1) >> 2u; + /* xa + xc -(xb + xd) */ + r1 = r1 - t1; + /* yb + yd */ + t2 = pSrc[(2u * i1) + 1u] + pSrc[(2u * i3) + 1u]; + /* ya' = ya + yb + yc + yd */ + pSrc[(2u * i0) + 1u] = (s1 + t2) >> 2u; + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* (yb - yd) */ + t1 = pSrc[(2u * i1) + 1u] - pSrc[(2u * i3) + 1u]; + /* (xb - xd) */ + t2 = pSrc[2u * i1] - pSrc[2u * i3]; + + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + pSrc[2u * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32u)) - + ((int32_t) (((q63_t) s1 * si2) >> 32u))) >> 1u; + + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + pSrc[(2u * i1) + 1u] = + (((int32_t) (((q63_t) s1 * co2) >> 32u)) + + ((int32_t) (((q63_t) r1 * si2) >> 32u))) >> 1u; + + /* (xa - xc) - (yb - yd) */ + r1 = r2 - t1; + /* (xa - xc) + (yb - yd) */ + r2 = r2 + t1; + + /* (ya - yc) + (xb - xd) */ + s1 = s2 + t2; + /* (ya - yc) - (xb - xd) */ + s2 = s2 - t2; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + pSrc[2u * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) - + ((int32_t) (((q63_t) s1 * si1) >> 32))) >> 1u; + + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + pSrc[(2u * i2) + 1u] = (((int32_t) (((q63_t) s1 * co1) >> 32)) + + ((int32_t) (((q63_t) r1 * si1) >> 32))) >> 1u; + + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + pSrc[(2u * i3)] = (((int32_t) (((q63_t) r2 * co3) >> 32)) - + ((int32_t) (((q63_t) s2 * si3) >> 32))) >> 1u; + + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + pSrc[(2u * i3) + 1u] = (((int32_t) (((q63_t) s2 * co3) >> 32)) + + ((int32_t) (((q63_t) r2 * si3) >> 32))) >> 1u; + } + } + twidCoefModifier <<= 2u; + } + + /* End of Middle stages process */ + + /* data is in 11.21(q21) format for the 1024 point as there are 3 middle stages */ + /* data is in 9.23(q23) format for the 256 point as there are 2 middle stages */ + /* data is in 7.25(q25) format for the 64 point as there are 1 middle stage */ + /* data is in 5.27(q27) format for the 16 point as there are no middle stages */ + + + /* Start of last stage process */ + + + /* Initializations of last stage */ + n1 = n2; + n2 >>= 2u; + + /* Calculations of last stage */ + for (i0 = 0u; i0 <= (fftLen - n1); i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2u], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Butterfly implementation */ + /* xa + xc */ + r1 = pSrc[2u * i0] + pSrc[2u * i2]; + /* xa - xc */ + r2 = pSrc[2u * i0] - pSrc[2u * i2]; + + /* ya + yc */ + s1 = pSrc[(2u * i0) + 1u] + pSrc[(2u * i2) + 1u]; + /* ya - yc */ + s2 = pSrc[(2u * i0) + 1u] - pSrc[(2u * i2) + 1u]; + + /* xc + xd */ + t1 = pSrc[2u * i1] + pSrc[2u * i3]; + /* xa' = xa + xb + xc + xd */ + pSrc[2u * i0] = (r1 + t1); + /* (xa + xb) - (xc + xd) */ + r1 = r1 - t1; + + /* yb + yd */ + t2 = pSrc[(2u * i1) + 1u] + pSrc[(2u * i3) + 1u]; + /* ya' = ya + yb + yc + yd */ + pSrc[(2u * i0) + 1u] = (s1 + t2); + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* (yb-yd) */ + t1 = pSrc[(2u * i1) + 1u] - pSrc[(2u * i3) + 1u]; + /* (xb-xd) */ + t2 = pSrc[2u * i1] - pSrc[2u * i3]; + + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + pSrc[2u * i1] = r1; + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + pSrc[(2u * i1) + 1u] = s1; + + /* (xa - xc) - (yb-yd) */ + r1 = r2 - t1; + + /* (xa - xc) + (yb-yd) */ + r2 = r2 + t1; + + /* (ya - yc) + (xb-xd) */ + s1 = s2 + t2; + + /* (ya - yc) - (xb-xd) */ + s2 = s2 - t2; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + pSrc[2u * i2] = r1; + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + pSrc[(2u * i2) + 1u] = s1; + + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + pSrc[2u * i3] = r2; + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + pSrc[(2u * i3) + 1u] = s2; + + } + + /* output is in 11.21(q21) format for the 1024 point */ + /* output is in 9.23(q23) format for the 256 point */ + /* output is in 7.25(q25) format for the 64 point */ + /* output is in 5.27(q27) format for the 16 point */ + + /* End of last stage process */ +} + + +/* + * @brief In-place bit reversal function. + * @param[in, out] *pSrc points to the in-place buffer of Q31 data type. + * @param[in] fftLen length of the FFT. + * @param[in] bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table + * @param[in] *pBitRevTab points to bit reversal table. + * @return none. + */ + +void arm_bitreversal_q31( + q31_t * pSrc, + uint32_t fftLen, + uint16_t bitRevFactor, + uint16_t * pBitRevTable) +{ + uint32_t fftLenBy2, fftLenBy2p1, i, j; + q31_t in; + + /* Initializations */ + j = 0u; + fftLenBy2 = fftLen / 2u; + fftLenBy2p1 = (fftLen / 2u) + 1u; + + /* Bit Reversal Implementation */ + for (i = 0u; i <= (fftLenBy2 - 2u); i += 2u) + { + if(i < j) + { + /* pSrc[i] <-> pSrc[j]; */ + in = pSrc[2u * i]; + pSrc[2u * i] = pSrc[2u * j]; + pSrc[2u * j] = in; + + /* pSrc[i+1u] <-> pSrc[j+1u] */ + in = pSrc[(2u * i) + 1u]; + pSrc[(2u * i) + 1u] = pSrc[(2u * j) + 1u]; + pSrc[(2u * j) + 1u] = in; + + /* pSrc[i+fftLenBy2p1] <-> pSrc[j+fftLenBy2p1] */ + in = pSrc[2u * (i + fftLenBy2p1)]; + pSrc[2u * (i + fftLenBy2p1)] = pSrc[2u * (j + fftLenBy2p1)]; + pSrc[2u * (j + fftLenBy2p1)] = in; + + /* pSrc[i+fftLenBy2p1+1u] <-> pSrc[j+fftLenBy2p1+1u] */ + in = pSrc[(2u * (i + fftLenBy2p1)) + 1u]; + pSrc[(2u * (i + fftLenBy2p1)) + 1u] = + pSrc[(2u * (j + fftLenBy2p1)) + 1u]; + pSrc[(2u * (j + fftLenBy2p1)) + 1u] = in; + + } + + /* pSrc[i+1u] <-> pSrc[j+1u] */ + in = pSrc[2u * (i + 1u)]; + pSrc[2u * (i + 1u)] = pSrc[2u * (j + fftLenBy2)]; + pSrc[2u * (j + fftLenBy2)] = in; + + /* pSrc[i+2u] <-> pSrc[j+2u] */ + in = pSrc[(2u * (i + 1u)) + 1u]; + pSrc[(2u * (i + 1u)) + 1u] = pSrc[(2u * (j + fftLenBy2)) + 1u]; + pSrc[(2u * (j + fftLenBy2)) + 1u] = in; + + /* Reading the index for the bit reversal */ + j = *pBitRevTable; + + /* Updating the bit reversal index depending on the fft length */ + pBitRevTable += bitRevFactor; + } +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_f32.c new file mode 100644 index 000000000..c9a3ec5ad --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_f32.c @@ -0,0 +1,450 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_dct4_f32.c +* +* Description: Processing function of DCT4 & IDCT4 F32. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupTransforms + */ + +/** + * @defgroup DCT4_IDCT4 DCT Type IV Functions + * Representation of signals by minimum number of values is important for storage and transmission. + * The possibility of large discontinuity between the beginning and end of a period of a signal + * in DFT can be avoided by extending the signal so that it is even-symmetric. + * Discrete Cosine Transform (DCT) is constructed such that its energy is heavily concentrated in the lower part of the + * spectrum and is very widely used in signal and image coding applications. + * The family of DCTs (DCT type- 1,2,3,4) is the outcome of different combinations of homogeneous boundary conditions. + * DCT has an excellent energy-packing capability, hence has many applications and in data compression in particular. + * + * DCT is essentially the Discrete Fourier Transform(DFT) of an even-extended real signal. + * Reordering of the input data makes the computation of DCT just a problem of + * computing the DFT of a real signal with a few additional operations. + * This approach provides regular, simple, and very efficient DCT algorithms for practical hardware and software implementations. + * + * DCT type-II can be implemented using Fast fourier transform (FFT) internally, as the transform is applied on real values, Real FFT can be used. + * DCT4 is implemented using DCT2 as their implementations are similar except with some added pre-processing and post-processing. + * DCT2 implementation can be described in the following steps: + * - Re-ordering input + * - Calculating Real FFT + * - Multiplication of weights and Real FFT output and getting real part from the product. + * + * This process is explained by the block diagram below: + * \image html DCT4.gif "Discrete Cosine Transform - type-IV" + * + * \par Algorithm: + * The N-point type-IV DCT is defined as a real, linear transformation by the formula: + * \image html DCT4Equation.gif + * where k = 0,1,2,.....N-1 + *\par + * Its inverse is defined as follows: + * \image html IDCT4Equation.gif + * where n = 0,1,2,.....N-1 + *\par + * The DCT4 matrices become involutory (i.e. they are self-inverse) by multiplying with an overall scale factor of sqrt(2/N). + * The symmetry of the transform matrix indicates that the fast algorithms for the forward + * and inverse transform computation are identical. + * Note that the implementation of Inverse DCT4 and DCT4 is same, hence same process function can be used for both. + * + * \par Lengths supported by the transform: + * As DCT4 internally uses Real FFT, it supports all the lengths supported by arm_rfft_f32(). + * The library provides separate functions for Q15, Q31, and floating-point data types. + * \par Instance Structure + * The instances for Real FFT and FFT, cosine values table and twiddle factor table are stored in an instance data structure. + * A separate instance structure must be defined for each transform. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Initializes Real FFT as its process function is used internally in DCT4, by calling arm_rfft_init_f32(). + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * Manually initialize the instance structure as follows: + *
   
+ *arm_dct4_instance_f32 S = {N, Nby2, normalize, pTwiddle, pCosFactor, pRfft, pCfft};   
+ *arm_dct4_instance_q31 S = {N, Nby2, normalize, pTwiddle, pCosFactor, pRfft, pCfft};  
+ *arm_dct4_instance_q15 S = {N, Nby2, normalize, pTwiddle, pCosFactor, pRfft, pCfft};  
+ * 
+ * where \c N is the length of the DCT4; \c Nby2 is half of the length of the DCT4; + * \c normalize is normalizing factor used and is equal to sqrt(2/N); + * \c pTwiddle points to the twiddle factor table; + * \c pCosFactor points to the cosFactor table; + * \c pRfft points to the real FFT instance; + * \c pCfft points to the complex FFT instance; + * The CFFT and RFFT structures also needs to be initialized, refer to arm_cfft_radix4_f32() + * and arm_rfft_f32() respectively for details regarding static initialization. + * + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the DCT4 transform functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup DCT4_IDCT4 + * @{ + */ + +/** + * @brief Processing function for the floating-point DCT4/IDCT4. + * @param[in] *S points to an instance of the floating-point DCT4/IDCT4 structure. + * @param[in] *pState points to state buffer. + * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. + * @return none. + */ + +void arm_dct4_f32( + const arm_dct4_instance_f32 * S, + float32_t * pState, + float32_t * pInlineBuffer) +{ + uint32_t i; /* Loop counter */ + float32_t *weights = S->pTwiddle; /* Pointer to the Weights table */ + float32_t *cosFact = S->pCosFactor; /* Pointer to the cos factors table */ + float32_t *pS1, *pS2, *pbuff; /* Temporary pointers for input buffer and pState buffer */ + float32_t in; /* Temporary variable */ + + + /* DCT4 computation involves DCT2 (which is calculated using RFFT) + * along with some pre-processing and post-processing. + * Computational procedure is explained as follows: + * (a) Pre-processing involves multiplying input with cos factor, + * r(n) = 2 * u(n) * cos(pi*(2*n+1)/(4*n)) + * where, + * r(n) -- output of preprocessing + * u(n) -- input to preprocessing(actual Source buffer) + * (b) Calculation of DCT2 using FFT is divided into three steps: + * Step1: Re-ordering of even and odd elements of input. + * Step2: Calculating FFT of the re-ordered input. + * Step3: Taking the real part of the product of FFT output and weights. + * (c) Post-processing - DCT4 can be obtained from DCT2 output using the following equation: + * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) + * where, + * Y4 -- DCT4 output, Y2 -- DCT2 output + * (d) Multiplying the output with the normalizing factor sqrt(2/N). + */ + + /*-------- Pre-processing ------------*/ + /* Multiplying input with cos factor i.e. r(n) = 2 * x(n) * cos(pi*(2*n+1)/(4*n)) */ + arm_scale_f32(pInlineBuffer, 2.0f, pInlineBuffer, S->N); + arm_mult_f32(pInlineBuffer, cosFact, pInlineBuffer, S->N); + + /* ---------------------------------------------------------------- + * Step1: Re-ordering of even and odd elements as, + * pState[i] = pInlineBuffer[2*i] and + * pState[N-i-1] = pInlineBuffer[2*i+1] where i = 0 to N/2 + ---------------------------------------------------------------------*/ + + /* pS1 initialized to pState */ + pS1 = pState; + + /* pS2 initialized to pState+N-1, so that it points to the end of the state buffer */ + pS2 = pState + (S->N - 1u); + + /* pbuff initialized to input buffer */ + pbuff = pInlineBuffer; + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Initializing the loop counter to N/2 >> 2 for loop unrolling by 4 */ + i = (uint32_t) S->Nby2 >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + do + { + /* Re-ordering of even and odd elements */ + /* pState[i] = pInlineBuffer[2*i] */ + *pS1++ = *pbuff++; + /* pState[N-i-1] = pInlineBuffer[2*i+1] */ + *pS2-- = *pbuff++; + + *pS1++ = *pbuff++; + *pS2-- = *pbuff++; + + *pS1++ = *pbuff++; + *pS2-- = *pbuff++; + + *pS1++ = *pbuff++; + *pS2-- = *pbuff++; + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + /* pbuff initialized to input buffer */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Initializing the loop counter to N/4 instead of N for loop unrolling */ + i = (uint32_t) S->N >> 2u; + + /* Processing with loop unrolling 4 times as N is always multiple of 4. + * Compute 4 outputs at a time */ + do + { + /* Writing the re-ordered output back to inplace input buffer */ + *pbuff++ = *pS1++; + *pbuff++ = *pS1++; + *pbuff++ = *pS1++; + *pbuff++ = *pS1++; + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + + /* --------------------------------------------------------- + * Step2: Calculate RFFT for N-point input + * ---------------------------------------------------------- */ + /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */ + arm_rfft_f32(S->pRfft, pInlineBuffer, pState); + + /*---------------------------------------------------------------------- + * Step3: Multiply the FFT output with the weights. + *----------------------------------------------------------------------*/ + arm_cmplx_mult_cmplx_f32(pState, weights, pState, S->N); + + /* ----------- Post-processing ---------- */ + /* DCT-IV can be obtained from DCT-II by the equation, + * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) + * Hence, Y4(0) = Y2(0)/2 */ + /* Getting only real part from the output and Converting to DCT-IV */ + + /* Initializing the loop counter to N >> 2 for loop unrolling by 4 */ + i = ((uint32_t) S->N - 1u) >> 2u; + + /* pbuff initialized to input buffer. */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */ + in = *pS1++ * (float32_t) 0.5; + /* input buffer acts as inplace, so output values are stored in the input itself. */ + *pbuff++ = in; + + /* pState pointer is incremented twice as the real values are located alternatively in the array */ + pS1++; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + do + { + /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ + /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ + in = *pS1++ - in; + *pbuff++ = in; + /* points to the next real value */ + pS1++; + + in = *pS1++ - in; + *pbuff++ = in; + pS1++; + + in = *pS1++ - in; + *pbuff++ = in; + pS1++; + + in = *pS1++ - in; + *pbuff++ = in; + pS1++; + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + i = ((uint32_t) S->N - 1u) % 0x4u; + + while(i > 0u) + { + /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ + /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ + in = *pS1++ - in; + *pbuff++ = in; + /* points to the next real value */ + pS1++; + + /* Decrement the loop counter */ + i--; + } + + + /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/ + + /* Initializing the loop counter to N/4 instead of N for loop unrolling */ + i = (uint32_t) S->N >> 2u; + + /* pbuff initialized to the pInlineBuffer(now contains the output values) */ + pbuff = pInlineBuffer; + + /* Processing with loop unrolling 4 times as N is always multiple of 4. Compute 4 outputs at a time */ + do + { + /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */ + in = *pbuff; + *pbuff++ = in * S->normalize; + + in = *pbuff; + *pbuff++ = in * S->normalize; + + in = *pbuff; + *pbuff++ = in * S->normalize; + + in = *pbuff; + *pbuff++ = in * S->normalize; + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initializing the loop counter to N/2 */ + i = (uint32_t) S->Nby2; + + do + { + /* Re-ordering of even and odd elements */ + /* pState[i] = pInlineBuffer[2*i] */ + *pS1++ = *pbuff++; + /* pState[N-i-1] = pInlineBuffer[2*i+1] */ + *pS2-- = *pbuff++; + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + /* pbuff initialized to input buffer */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Initializing the loop counter */ + i = (uint32_t) S->N; + + do + { + /* Writing the re-ordered output back to inplace input buffer */ + *pbuff++ = *pS1++; + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + + /* --------------------------------------------------------- + * Step2: Calculate RFFT for N-point input + * ---------------------------------------------------------- */ + /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */ + arm_rfft_f32(S->pRfft, pInlineBuffer, pState); + + /*---------------------------------------------------------------------- + * Step3: Multiply the FFT output with the weights. + *----------------------------------------------------------------------*/ + arm_cmplx_mult_cmplx_f32(pState, weights, pState, S->N); + + /* ----------- Post-processing ---------- */ + /* DCT-IV can be obtained from DCT-II by the equation, + * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) + * Hence, Y4(0) = Y2(0)/2 */ + /* Getting only real part from the output and Converting to DCT-IV */ + + /* pbuff initialized to input buffer. */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */ + in = *pS1++ * (float32_t) 0.5; + /* input buffer acts as inplace, so output values are stored in the input itself. */ + *pbuff++ = in; + + /* pState pointer is incremented twice as the real values are located alternatively in the array */ + pS1++; + + /* Initializing the loop counter */ + i = ((uint32_t) S->N - 1u); + + do + { + /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ + /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ + in = *pS1++ - in; + *pbuff++ = in; + /* points to the next real value */ + pS1++; + + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + + /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/ + + /* Initializing the loop counter */ + i = (uint32_t) S->N; + + /* pbuff initialized to the pInlineBuffer(now contains the output values) */ + pbuff = pInlineBuffer; + + do + { + /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */ + in = *pbuff; + *pbuff++ = in * S->normalize; + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of DCT4_IDCT4 group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_f32.c new file mode 100644 index 000000000..af576f22a --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_f32.c @@ -0,0 +1,4208 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_dct4_init_f32.c +* +* Description: Initialization function of DCT-4 & IDCT4 F32 +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + + +#include "arm_math.h" + +/** + * @ingroup groupTransforms + */ + +/** + * @addtogroup DCT4_IDCT4 + * @{ + */ + +/* +* @brief Weights Table +*/ + +/** +* \par +* Weights tables are generated using the formula :
weights[n] = e^(-j*n*pi/(2*N))
+* \par +* C command to generate the table +*
   
+* for(i = 0; i< N; i++)   
+* {   
+*    weights[2*i]= cos(i*c);   
+*    weights[(2*i)+1]= -sin(i * c);   
+* } 
+* \par +* Where N is the Number of weights to be calculated and c is pi/(2*N) +* \par +* In the tables below the real and imaginary values are placed alternatively, hence the +* array length is 2*N. +*/ + +static const float32_t Weights_128[256] = { + 1.000000000000000000f, 0.000000000000000000f, 0.999924701839144500f, + -0.012271538285719925f, + 0.999698818696204250f, -0.024541228522912288f, 0.999322384588349540f, + -0.036807222941358832f, + 0.998795456205172410f, -0.049067674327418015f, 0.998118112900149180f, + -0.061320736302208578f, + 0.997290456678690210f, -0.073564563599667426f, 0.996312612182778000f, + -0.085797312344439894f, + 0.995184726672196930f, -0.098017140329560604f, 0.993906970002356060f, + -0.110222207293883060f, + 0.992479534598709970f, -0.122410675199216200f, 0.990902635427780010f, + -0.134580708507126170f, + 0.989176509964781010f, -0.146730474455361750f, 0.987301418157858430f, + -0.158858143333861450f, + 0.985277642388941220f, -0.170961888760301220f, 0.983105487431216290f, + -0.183039887955140950f, + 0.980785280403230430f, -0.195090322016128250f, 0.978317370719627650f, + -0.207111376192218560f, + 0.975702130038528570f, -0.219101240156869800f, 0.972939952205560180f, + -0.231058108280671110f, + 0.970031253194543970f, -0.242980179903263870f, 0.966976471044852070f, + -0.254865659604514570f, + 0.963776065795439840f, -0.266712757474898370f, 0.960430519415565790f, + -0.278519689385053060f, + 0.956940335732208820f, -0.290284677254462330f, 0.953306040354193860f, + -0.302005949319228080f, + 0.949528180593036670f, -0.313681740398891520f, 0.945607325380521280f, + -0.325310292162262930f, + 0.941544065183020810f, -0.336889853392220050f, 0.937339011912574960f, + -0.348418680249434560f, + 0.932992798834738960f, -0.359895036534988110f, 0.928506080473215590f, + -0.371317193951837540f, + 0.923879532511286740f, -0.382683432365089780f, 0.919113851690057770f, + -0.393992040061048100f, + 0.914209755703530690f, -0.405241314004989860f, 0.909167983090522380f, + -0.416429560097637150f, + 0.903989293123443340f, -0.427555093430282080f, 0.898674465693953820f, + -0.438616238538527660f, + 0.893224301195515320f, -0.449611329654606540f, 0.887639620402853930f, + -0.460538710958240010f, + 0.881921264348355050f, -0.471396736825997640f, 0.876070094195406600f, + -0.482183772079122720f, + 0.870086991108711460f, -0.492898192229784040f, 0.863972856121586810f, + -0.503538383725717580f, + 0.857728610000272120f, -0.514102744193221660f, 0.851355193105265200f, + -0.524589682678468950f, + 0.844853565249707120f, -0.534997619887097150f, 0.838224705554838080f, + -0.545324988422046460f, + 0.831469612302545240f, -0.555570233019602180f, 0.824589302785025290f, + -0.565731810783613120f, + 0.817584813151583710f, -0.575808191417845340f, 0.810457198252594770f, + -0.585797857456438860f, + 0.803207531480644940f, -0.595699304492433360f, 0.795836904608883570f, + -0.605511041404325550f, + 0.788346427626606340f, -0.615231590580626820f, 0.780737228572094490f, + -0.624859488142386340f, + 0.773010453362736990f, -0.634393284163645490f, 0.765167265622458960f, + -0.643831542889791390f, + 0.757208846506484570f, -0.653172842953776760f, 0.749136394523459370f, + -0.662415777590171780f, + 0.740951125354959110f, -0.671558954847018330f, 0.732654271672412820f, + -0.680600997795453020f, + 0.724247082951467000f, -0.689540544737066830f, 0.715730825283818590f, + -0.698376249408972920f, + 0.707106781186547570f, -0.707106781186547460f, 0.698376249408972920f, + -0.715730825283818590f, + 0.689540544737066940f, -0.724247082951466890f, 0.680600997795453130f, + -0.732654271672412820f, + 0.671558954847018330f, -0.740951125354959110f, 0.662415777590171780f, + -0.749136394523459260f, + 0.653172842953776760f, -0.757208846506484460f, 0.643831542889791500f, + -0.765167265622458960f, + 0.634393284163645490f, -0.773010453362736990f, 0.624859488142386450f, + -0.780737228572094380f, + 0.615231590580626820f, -0.788346427626606230f, 0.605511041404325550f, + -0.795836904608883460f, + 0.595699304492433470f, -0.803207531480644830f, 0.585797857456438860f, + -0.810457198252594770f, + 0.575808191417845340f, -0.817584813151583710f, 0.565731810783613230f, + -0.824589302785025290f, + 0.555570233019602290f, -0.831469612302545240f, 0.545324988422046460f, + -0.838224705554837970f, + 0.534997619887097260f, -0.844853565249707010f, 0.524589682678468840f, + -0.851355193105265200f, + 0.514102744193221660f, -0.857728610000272120f, 0.503538383725717580f, + -0.863972856121586700f, + 0.492898192229784090f, -0.870086991108711350f, 0.482183772079122830f, + -0.876070094195406600f, + 0.471396736825997810f, -0.881921264348354940f, 0.460538710958240010f, + -0.887639620402853930f, + 0.449611329654606600f, -0.893224301195515320f, 0.438616238538527710f, + -0.898674465693953820f, + 0.427555093430282200f, -0.903989293123443340f, 0.416429560097637320f, + -0.909167983090522270f, + 0.405241314004989860f, -0.914209755703530690f, 0.393992040061048100f, + -0.919113851690057770f, + 0.382683432365089840f, -0.923879532511286740f, 0.371317193951837600f, + -0.928506080473215480f, + 0.359895036534988280f, -0.932992798834738850f, 0.348418680249434510f, + -0.937339011912574960f, + 0.336889853392220050f, -0.941544065183020810f, 0.325310292162262980f, + -0.945607325380521280f, + 0.313681740398891570f, -0.949528180593036670f, 0.302005949319228200f, + -0.953306040354193750f, + 0.290284677254462330f, -0.956940335732208940f, 0.278519689385053060f, + -0.960430519415565790f, + 0.266712757474898420f, -0.963776065795439840f, 0.254865659604514630f, + -0.966976471044852070f, + 0.242980179903263980f, -0.970031253194543970f, 0.231058108280671280f, + -0.972939952205560070f, + 0.219101240156869770f, -0.975702130038528570f, 0.207111376192218560f, + -0.978317370719627650f, + 0.195090322016128330f, -0.980785280403230430f, 0.183039887955141060f, + -0.983105487431216290f, + 0.170961888760301360f, -0.985277642388941220f, 0.158858143333861390f, + -0.987301418157858430f, + 0.146730474455361750f, -0.989176509964781010f, 0.134580708507126220f, + -0.990902635427780010f, + 0.122410675199216280f, -0.992479534598709970f, 0.110222207293883180f, + -0.993906970002356060f, + 0.098017140329560770f, -0.995184726672196820f, 0.085797312344439880f, + -0.996312612182778000f, + 0.073564563599667454f, -0.997290456678690210f, 0.061320736302208648f, + -0.998118112900149180f, + 0.049067674327418126f, -0.998795456205172410f, 0.036807222941358991f, + -0.999322384588349540f, + 0.024541228522912264f, -0.999698818696204250f, 0.012271538285719944f, + -0.999924701839144500f +}; + +static const float32_t Weights_512[1024] = { + 1.000000000000000000f, 0.000000000000000000f, 0.999995293809576190f, + -0.003067956762965976f, + 0.999981175282601110f, -0.006135884649154475f, 0.999957644551963900f, + -0.009203754782059819f, + 0.999924701839144500f, -0.012271538285719925f, 0.999882347454212560f, + -0.015339206284988100f, + 0.999830581795823400f, -0.018406729905804820f, 0.999769405351215280f, + -0.021474080275469508f, + 0.999698818696204250f, -0.024541228522912288f, 0.999618822495178640f, + -0.027608145778965740f, + 0.999529417501093140f, -0.030674803176636626f, 0.999430604555461730f, + -0.033741171851377580f, + 0.999322384588349540f, -0.036807222941358832f, 0.999204758618363890f, + -0.039872927587739811f, + 0.999077727752645360f, -0.042938256934940820f, 0.998941293186856870f, + -0.046003182130914623f, + 0.998795456205172410f, -0.049067674327418015f, 0.998640218180265270f, + -0.052131704680283324f, + 0.998475580573294770f, -0.055195244349689934f, 0.998301544933892890f, + -0.058258264500435752f, + 0.998118112900149180f, -0.061320736302208578f, 0.997925286198596000f, + -0.064382630929857465f, + 0.997723066644191640f, -0.067443919563664051f, 0.997511456140303450f, + -0.070504573389613856f, + 0.997290456678690210f, -0.073564563599667426f, 0.997060070339482960f, + -0.076623861392031492f, + 0.996820299291165670f, -0.079682437971430126f, 0.996571145790554840f, + -0.082740264549375692f, + 0.996312612182778000f, -0.085797312344439894f, 0.996044700901251970f, + -0.088853552582524600f, + 0.995767414467659820f, -0.091908956497132724f, 0.995480755491926940f, + -0.094963495329638992f, + 0.995184726672196930f, -0.098017140329560604f, 0.994879330794805620f, + -0.101069862754827820f, + 0.994564570734255420f, -0.104121633872054590f, 0.994240449453187900f, + -0.107172424956808840f, + 0.993906970002356060f, -0.110222207293883060f, 0.993564135520595300f, + -0.113270952177564350f, + 0.993211949234794500f, -0.116318630911904750f, 0.992850414459865100f, + -0.119365214810991350f, + 0.992479534598709970f, -0.122410675199216200f, 0.992099313142191800f, + -0.125454983411546230f, + 0.991709753669099530f, -0.128498110793793170f, 0.991310859846115440f, + -0.131540028702883120f, + 0.990902635427780010f, -0.134580708507126170f, 0.990485084256457090f, + -0.137620121586486040f, + 0.990058210262297120f, -0.140658239332849210f, 0.989622017463200890f, + -0.143695033150294470f, + 0.989176509964781010f, -0.146730474455361750f, 0.988721691960323780f, + -0.149764534677321510f, + 0.988257567730749460f, -0.152797185258443440f, 0.987784141644572180f, + -0.155828397654265230f, + 0.987301418157858430f, -0.158858143333861450f, 0.986809401814185530f, + -0.161886393780111830f, + 0.986308097244598670f, -0.164913120489969890f, 0.985797509167567480f, + -0.167938294974731170f, + 0.985277642388941220f, -0.170961888760301220f, 0.984748501801904210f, + -0.173983873387463820f, + 0.984210092386929030f, -0.177004220412148750f, 0.983662419211730250f, + -0.180022901405699510f, + 0.983105487431216290f, -0.183039887955140950f, 0.982539302287441240f, + -0.186055151663446630f, + 0.981963869109555240f, -0.189068664149806190f, 0.981379193313754560f, + -0.192080397049892440f, + 0.980785280403230430f, -0.195090322016128250f, 0.980182135968117430f, + -0.198098410717953560f, + 0.979569765685440520f, -0.201104634842091900f, 0.978948175319062200f, + -0.204108966092816870f, + 0.978317370719627650f, -0.207111376192218560f, 0.977677357824509930f, + -0.210111836880469610f, + 0.977028142657754390f, -0.213110319916091360f, 0.976369731330021140f, + -0.216106797076219520f, + 0.975702130038528570f, -0.219101240156869800f, 0.975025345066994120f, + -0.222093620973203510f, + 0.974339382785575860f, -0.225083911359792830f, 0.973644249650811980f, + -0.228072083170885730f, + 0.972939952205560180f, -0.231058108280671110f, 0.972226497078936270f, + -0.234041958583543430f, + 0.971503890986251780f, -0.237023605994367200f, 0.970772140728950350f, + -0.240003022448741500f, + 0.970031253194543970f, -0.242980179903263870f, 0.969281235356548530f, + -0.245955050335794590f, + 0.968522094274417380f, -0.248927605745720150f, 0.967753837093475510f, + -0.251897818154216970f, + 0.966976471044852070f, -0.254865659604514570f, 0.966190003445412500f, + -0.257831102162158990f, + 0.965394441697689400f, -0.260794117915275510f, 0.964589793289812760f, + -0.263754678974831350f, + 0.963776065795439840f, -0.266712757474898370f, 0.962953266873683880f, + -0.269668325572915090f, + 0.962121404269041580f, -0.272621355449948980f, 0.961280485811320640f, + -0.275571819310958140f, + 0.960430519415565790f, -0.278519689385053060f, 0.959571513081984520f, + -0.281464937925757940f, + 0.958703474895871600f, -0.284407537211271880f, 0.957826413027532910f, + -0.287347459544729510f, + 0.956940335732208820f, -0.290284677254462330f, 0.956045251349996410f, + -0.293219162694258630f, + 0.955141168305770780f, -0.296150888243623790f, 0.954228095109105670f, + -0.299079826308040480f, + 0.953306040354193860f, -0.302005949319228080f, 0.952375012719765880f, + -0.304929229735402370f, + 0.951435020969008340f, -0.307849640041534870f, 0.950486073949481700f, + -0.310767152749611470f, + 0.949528180593036670f, -0.313681740398891520f, 0.948561349915730270f, + -0.316593375556165850f, + 0.947585591017741090f, -0.319502030816015690f, 0.946600913083283530f, + -0.322407678801069850f, + 0.945607325380521280f, -0.325310292162262930f, 0.944604837261480260f, + -0.328209843579092500f, + 0.943593458161960390f, -0.331106305759876430f, 0.942573197601446870f, + -0.333999651442009380f, + 0.941544065183020810f, -0.336889853392220050f, 0.940506070593268300f, + -0.339776884406826850f, + 0.939459223602189920f, -0.342660717311994380f, 0.938403534063108060f, + -0.345541324963989090f, + 0.937339011912574960f, -0.348418680249434560f, 0.936265667170278260f, + -0.351292756085567090f, + 0.935183509938947610f, -0.354163525420490340f, 0.934092550404258980f, + -0.357030961233429980f, + 0.932992798834738960f, -0.359895036534988110f, 0.931884265581668150f, + -0.362755724367397230f, + 0.930766961078983710f, -0.365612997804773850f, 0.929640895843181330f, + -0.368466829953372320f, + 0.928506080473215590f, -0.371317193951837540f, 0.927362525650401110f, + -0.374164062971457930f, + 0.926210242138311380f, -0.377007410216418260f, 0.925049240782677580f, + -0.379847208924051160f, + 0.923879532511286740f, -0.382683432365089780f, 0.922701128333878630f, + -0.385516053843918850f, + 0.921514039342042010f, -0.388345046698826250f, 0.920318276709110590f, + -0.391170384302253870f, + 0.919113851690057770f, -0.393992040061048100f, 0.917900775621390500f, + -0.396809987416710310f, + 0.916679059921042700f, -0.399624199845646790f, 0.915448716088267830f, + -0.402434650859418430f, + 0.914209755703530690f, -0.405241314004989860f, 0.912962190428398210f, + -0.408044162864978690f, + 0.911706032005429880f, -0.410843171057903910f, 0.910441292258067250f, + -0.413638312238434500f, + 0.909167983090522380f, -0.416429560097637150f, 0.907886116487666260f, + -0.419216888363223910f, + 0.906595704514915330f, -0.422000270799799680f, 0.905296759318118820f, + -0.424779681209108810f, + 0.903989293123443340f, -0.427555093430282080f, 0.902673318237258830f, + -0.430326481340082610f, + 0.901348847046022030f, -0.433093818853151960f, 0.900015892016160280f, + -0.435857079922255470f, + 0.898674465693953820f, -0.438616238538527660f, 0.897324580705418320f, + -0.441371268731716670f, + 0.895966249756185220f, -0.444122144570429200f, 0.894599485631382700f, + -0.446868840162374160f, + 0.893224301195515320f, -0.449611329654606540f, 0.891840709392342720f, + -0.452349587233770890f, + 0.890448723244757880f, -0.455083587126343840f, 0.889048355854664570f, + -0.457813303598877170f, + 0.887639620402853930f, -0.460538710958240010f, 0.886222530148880640f, + -0.463259783551860150f, + 0.884797098430937790f, -0.465976495767966180f, 0.883363338665731580f, + -0.468688822035827900f, + 0.881921264348355050f, -0.471396736825997640f, 0.880470889052160750f, + -0.474100214650549970f, + 0.879012226428633530f, -0.476799230063322090f, 0.877545290207261350f, + -0.479493757660153010f, + 0.876070094195406600f, -0.482183772079122720f, 0.874586652278176110f, + -0.484869248000791060f, + 0.873094978418290090f, -0.487550160148436000f, 0.871595086655950980f, + -0.490226483288291160f, + 0.870086991108711460f, -0.492898192229784040f, 0.868570705971340900f, + -0.495565261825772540f, + 0.867046245515692650f, -0.498227666972781870f, 0.865513624090569090f, + -0.500885382611240710f, + 0.863972856121586810f, -0.503538383725717580f, 0.862423956111040610f, + -0.506186645345155230f, + 0.860866938637767310f, -0.508830142543106990f, 0.859301818357008470f, + -0.511468850437970300f, + 0.857728610000272120f, -0.514102744193221660f, 0.856147328375194470f, + -0.516731799017649870f, + 0.854557988365400530f, -0.519355990165589640f, 0.852960604930363630f, + -0.521975292937154390f, + 0.851355193105265200f, -0.524589682678468950f, 0.849741768000852550f, + -0.527199134781901280f, + 0.848120344803297230f, -0.529803624686294610f, 0.846490938774052130f, + -0.532403127877197900f, + 0.844853565249707120f, -0.534997619887097150f, 0.843208239641845440f, + -0.537587076295645390f, + 0.841554977436898440f, -0.540171472729892850f, 0.839893794195999520f, + -0.542750784864515890f, + 0.838224705554838080f, -0.545324988422046460f, 0.836547727223512010f, + -0.547894059173100190f, + 0.834862874986380010f, -0.550457972936604810f, 0.833170164701913190f, + -0.553016705580027470f, + 0.831469612302545240f, -0.555570233019602180f, 0.829761233794523050f, + -0.558118531220556100f, + 0.828045045257755800f, -0.560661576197336030f, 0.826321062845663530f, + -0.563199344013834090f, + 0.824589302785025290f, -0.565731810783613120f, 0.822849781375826430f, + -0.568258952670131490f, + 0.821102514991104650f, -0.570780745886967260f, 0.819347520076796900f, + -0.573297166698042200f, + 0.817584813151583710f, -0.575808191417845340f, 0.815814410806733780f, + -0.578313796411655590f, + 0.814036329705948410f, -0.580813958095764530f, 0.812250586585203880f, + -0.583308652937698290f, + 0.810457198252594770f, -0.585797857456438860f, 0.808656181588174980f, + -0.588281548222645220f, + 0.806847553543799330f, -0.590759701858874160f, 0.805031331142963660f, + -0.593232295039799800f, + 0.803207531480644940f, -0.595699304492433360f, 0.801376171723140240f, + -0.598160706996342270f, + 0.799537269107905010f, -0.600616479383868970f, 0.797690840943391160f, + -0.603066598540348160f, + 0.795836904608883570f, -0.605511041404325550f, 0.793975477554337170f, + -0.607949784967773630f, + 0.792106577300212390f, -0.610382806276309480f, 0.790230221437310030f, + -0.612810082429409710f, + 0.788346427626606340f, -0.615231590580626820f, 0.786455213599085770f, + -0.617647307937803870f, + 0.784556597155575240f, -0.620057211763289100f, 0.782650596166575730f, + -0.622461279374149970f, + 0.780737228572094490f, -0.624859488142386340f, 0.778816512381475980f, + -0.627251815495144080f, + 0.776888465673232440f, -0.629638238914926980f, 0.774953106594873930f, + -0.632018735939809060f, + 0.773010453362736990f, -0.634393284163645490f, 0.771060524261813820f, + -0.636761861236284200f, + 0.769103337645579700f, -0.639124444863775730f, 0.767138911935820400f, + -0.641481012808583160f, + 0.765167265622458960f, -0.643831542889791390f, 0.763188417263381270f, + -0.646176012983316280f, + 0.761202385484261780f, -0.648514401022112440f, 0.759209188978388070f, + -0.650846684996380880f, + 0.757208846506484570f, -0.653172842953776760f, 0.755201376896536550f, + -0.655492852999615350f, + 0.753186799043612520f, -0.657806693297078640f, 0.751165131909686480f, + -0.660114342067420480f, + 0.749136394523459370f, -0.662415777590171780f, 0.747100605980180130f, + -0.664710978203344790f, + 0.745057785441466060f, -0.666999922303637470f, 0.743007952135121720f, + -0.669282588346636010f, + 0.740951125354959110f, -0.671558954847018330f, 0.738887324460615110f, + -0.673829000378756040f, + 0.736816568877369900f, -0.676092703575315920f, 0.734738878095963500f, + -0.678350043129861470f, + 0.732654271672412820f, -0.680600997795453020f, 0.730562769227827590f, + -0.682845546385248080f, + 0.728464390448225200f, -0.685083667772700360f, 0.726359155084346010f, + -0.687315340891759050f, + 0.724247082951467000f, -0.689540544737066830f, 0.722128193929215350f, + -0.691759258364157750f, + 0.720002507961381650f, -0.693971460889654000f, 0.717870045055731710f, + -0.696177131491462990f, + 0.715730825283818590f, -0.698376249408972920f, 0.713584868780793640f, + -0.700568793943248340f, + 0.711432195745216430f, -0.702754744457225300f, 0.709272826438865690f, + -0.704934080375904880f, + 0.707106781186547570f, -0.707106781186547460f, 0.704934080375904990f, + -0.709272826438865580f, + 0.702754744457225300f, -0.711432195745216430f, 0.700568793943248450f, + -0.713584868780793520f, + 0.698376249408972920f, -0.715730825283818590f, 0.696177131491462990f, + -0.717870045055731710f, + 0.693971460889654000f, -0.720002507961381650f, 0.691759258364157750f, + -0.722128193929215350f, + 0.689540544737066940f, -0.724247082951466890f, 0.687315340891759160f, + -0.726359155084346010f, + 0.685083667772700360f, -0.728464390448225200f, 0.682845546385248080f, + -0.730562769227827590f, + 0.680600997795453130f, -0.732654271672412820f, 0.678350043129861580f, + -0.734738878095963390f, + 0.676092703575316030f, -0.736816568877369790f, 0.673829000378756150f, + -0.738887324460615110f, + 0.671558954847018330f, -0.740951125354959110f, 0.669282588346636010f, + -0.743007952135121720f, + 0.666999922303637470f, -0.745057785441465950f, 0.664710978203344900f, + -0.747100605980180130f, + 0.662415777590171780f, -0.749136394523459260f, 0.660114342067420480f, + -0.751165131909686370f, + 0.657806693297078640f, -0.753186799043612410f, 0.655492852999615460f, + -0.755201376896536550f, + 0.653172842953776760f, -0.757208846506484460f, 0.650846684996380990f, + -0.759209188978387960f, + 0.648514401022112550f, -0.761202385484261780f, 0.646176012983316390f, + -0.763188417263381270f, + 0.643831542889791500f, -0.765167265622458960f, 0.641481012808583160f, + -0.767138911935820400f, + 0.639124444863775730f, -0.769103337645579590f, 0.636761861236284200f, + -0.771060524261813710f, + 0.634393284163645490f, -0.773010453362736990f, 0.632018735939809060f, + -0.774953106594873820f, + 0.629638238914927100f, -0.776888465673232440f, 0.627251815495144190f, + -0.778816512381475870f, + 0.624859488142386450f, -0.780737228572094380f, 0.622461279374150080f, + -0.782650596166575730f, + 0.620057211763289210f, -0.784556597155575240f, 0.617647307937803980f, + -0.786455213599085770f, + 0.615231590580626820f, -0.788346427626606230f, 0.612810082429409710f, + -0.790230221437310030f, + 0.610382806276309480f, -0.792106577300212390f, 0.607949784967773740f, + -0.793975477554337170f, + 0.605511041404325550f, -0.795836904608883460f, 0.603066598540348280f, + -0.797690840943391040f, + 0.600616479383868970f, -0.799537269107905010f, 0.598160706996342380f, + -0.801376171723140130f, + 0.595699304492433470f, -0.803207531480644830f, 0.593232295039799800f, + -0.805031331142963660f, + 0.590759701858874280f, -0.806847553543799220f, 0.588281548222645330f, + -0.808656181588174980f, + 0.585797857456438860f, -0.810457198252594770f, 0.583308652937698290f, + -0.812250586585203880f, + 0.580813958095764530f, -0.814036329705948300f, 0.578313796411655590f, + -0.815814410806733780f, + 0.575808191417845340f, -0.817584813151583710f, 0.573297166698042320f, + -0.819347520076796900f, + 0.570780745886967370f, -0.821102514991104650f, 0.568258952670131490f, + -0.822849781375826320f, + 0.565731810783613230f, -0.824589302785025290f, 0.563199344013834090f, + -0.826321062845663420f, + 0.560661576197336030f, -0.828045045257755800f, 0.558118531220556100f, + -0.829761233794523050f, + 0.555570233019602290f, -0.831469612302545240f, 0.553016705580027580f, + -0.833170164701913190f, + 0.550457972936604810f, -0.834862874986380010f, 0.547894059173100190f, + -0.836547727223511890f, + 0.545324988422046460f, -0.838224705554837970f, 0.542750784864516000f, + -0.839893794195999410f, + 0.540171472729892970f, -0.841554977436898330f, 0.537587076295645510f, + -0.843208239641845440f, + 0.534997619887097260f, -0.844853565249707010f, 0.532403127877198010f, + -0.846490938774052020f, + 0.529803624686294830f, -0.848120344803297120f, 0.527199134781901390f, + -0.849741768000852440f, + 0.524589682678468840f, -0.851355193105265200f, 0.521975292937154390f, + -0.852960604930363630f, + 0.519355990165589530f, -0.854557988365400530f, 0.516731799017649980f, + -0.856147328375194470f, + 0.514102744193221660f, -0.857728610000272120f, 0.511468850437970520f, + -0.859301818357008360f, + 0.508830142543106990f, -0.860866938637767310f, 0.506186645345155450f, + -0.862423956111040500f, + 0.503538383725717580f, -0.863972856121586700f, 0.500885382611240940f, + -0.865513624090568980f, + 0.498227666972781870f, -0.867046245515692650f, 0.495565261825772490f, + -0.868570705971340900f, + 0.492898192229784090f, -0.870086991108711350f, 0.490226483288291100f, + -0.871595086655951090f, + 0.487550160148436050f, -0.873094978418290090f, 0.484869248000791120f, + -0.874586652278176110f, + 0.482183772079122830f, -0.876070094195406600f, 0.479493757660153010f, + -0.877545290207261240f, + 0.476799230063322250f, -0.879012226428633410f, 0.474100214650550020f, + -0.880470889052160750f, + 0.471396736825997810f, -0.881921264348354940f, 0.468688822035827960f, + -0.883363338665731580f, + 0.465976495767966130f, -0.884797098430937790f, 0.463259783551860260f, + -0.886222530148880640f, + 0.460538710958240010f, -0.887639620402853930f, 0.457813303598877290f, + -0.889048355854664570f, + 0.455083587126343840f, -0.890448723244757880f, 0.452349587233771000f, + -0.891840709392342720f, + 0.449611329654606600f, -0.893224301195515320f, 0.446868840162374330f, + -0.894599485631382580f, + 0.444122144570429260f, -0.895966249756185110f, 0.441371268731716620f, + -0.897324580705418320f, + 0.438616238538527710f, -0.898674465693953820f, 0.435857079922255470f, + -0.900015892016160280f, + 0.433093818853152010f, -0.901348847046022030f, 0.430326481340082610f, + -0.902673318237258830f, + 0.427555093430282200f, -0.903989293123443340f, 0.424779681209108810f, + -0.905296759318118820f, + 0.422000270799799790f, -0.906595704514915330f, 0.419216888363223960f, + -0.907886116487666150f, + 0.416429560097637320f, -0.909167983090522270f, 0.413638312238434560f, + -0.910441292258067140f, + 0.410843171057903910f, -0.911706032005429880f, 0.408044162864978740f, + -0.912962190428398100f, + 0.405241314004989860f, -0.914209755703530690f, 0.402434650859418540f, + -0.915448716088267830f, + 0.399624199845646790f, -0.916679059921042700f, 0.396809987416710420f, + -0.917900775621390390f, + 0.393992040061048100f, -0.919113851690057770f, 0.391170384302253980f, + -0.920318276709110480f, + 0.388345046698826300f, -0.921514039342041900f, 0.385516053843919020f, + -0.922701128333878520f, + 0.382683432365089840f, -0.923879532511286740f, 0.379847208924051110f, + -0.925049240782677580f, + 0.377007410216418310f, -0.926210242138311270f, 0.374164062971457990f, + -0.927362525650401110f, + 0.371317193951837600f, -0.928506080473215480f, 0.368466829953372320f, + -0.929640895843181330f, + 0.365612997804773960f, -0.930766961078983710f, 0.362755724367397230f, + -0.931884265581668150f, + 0.359895036534988280f, -0.932992798834738850f, 0.357030961233430030f, + -0.934092550404258870f, + 0.354163525420490510f, -0.935183509938947500f, 0.351292756085567150f, + -0.936265667170278260f, + 0.348418680249434510f, -0.937339011912574960f, 0.345541324963989150f, + -0.938403534063108060f, + 0.342660717311994380f, -0.939459223602189920f, 0.339776884406826960f, + -0.940506070593268300f, + 0.336889853392220050f, -0.941544065183020810f, 0.333999651442009490f, + -0.942573197601446870f, + 0.331106305759876430f, -0.943593458161960390f, 0.328209843579092660f, + -0.944604837261480260f, + 0.325310292162262980f, -0.945607325380521280f, 0.322407678801070020f, + -0.946600913083283530f, + 0.319502030816015750f, -0.947585591017741090f, 0.316593375556165850f, + -0.948561349915730270f, + 0.313681740398891570f, -0.949528180593036670f, 0.310767152749611470f, + -0.950486073949481700f, + 0.307849640041534980f, -0.951435020969008340f, 0.304929229735402430f, + -0.952375012719765880f, + 0.302005949319228200f, -0.953306040354193750f, 0.299079826308040480f, + -0.954228095109105670f, + 0.296150888243623960f, -0.955141168305770670f, 0.293219162694258680f, + -0.956045251349996410f, + 0.290284677254462330f, -0.956940335732208940f, 0.287347459544729570f, + -0.957826413027532910f, + 0.284407537211271820f, -0.958703474895871600f, 0.281464937925758050f, + -0.959571513081984520f, + 0.278519689385053060f, -0.960430519415565790f, 0.275571819310958250f, + -0.961280485811320640f, + 0.272621355449948980f, -0.962121404269041580f, 0.269668325572915200f, + -0.962953266873683880f, + 0.266712757474898420f, -0.963776065795439840f, 0.263754678974831510f, + -0.964589793289812650f, + 0.260794117915275570f, -0.965394441697689400f, 0.257831102162158930f, + -0.966190003445412620f, + 0.254865659604514630f, -0.966976471044852070f, 0.251897818154216910f, + -0.967753837093475510f, + 0.248927605745720260f, -0.968522094274417270f, 0.245955050335794590f, + -0.969281235356548530f, + 0.242980179903263980f, -0.970031253194543970f, 0.240003022448741500f, + -0.970772140728950350f, + 0.237023605994367340f, -0.971503890986251780f, 0.234041958583543460f, + -0.972226497078936270f, + 0.231058108280671280f, -0.972939952205560070f, 0.228072083170885790f, + -0.973644249650811870f, + 0.225083911359792780f, -0.974339382785575860f, 0.222093620973203590f, + -0.975025345066994120f, + 0.219101240156869770f, -0.975702130038528570f, 0.216106797076219600f, + -0.976369731330021140f, + 0.213110319916091360f, -0.977028142657754390f, 0.210111836880469720f, + -0.977677357824509930f, + 0.207111376192218560f, -0.978317370719627650f, 0.204108966092817010f, + -0.978948175319062200f, + 0.201104634842091960f, -0.979569765685440520f, 0.198098410717953730f, + -0.980182135968117320f, + 0.195090322016128330f, -0.980785280403230430f, 0.192080397049892380f, + -0.981379193313754560f, + 0.189068664149806280f, -0.981963869109555240f, 0.186055151663446630f, + -0.982539302287441240f, + 0.183039887955141060f, -0.983105487431216290f, 0.180022901405699510f, + -0.983662419211730250f, + 0.177004220412148860f, -0.984210092386929030f, 0.173983873387463850f, + -0.984748501801904210f, + 0.170961888760301360f, -0.985277642388941220f, 0.167938294974731230f, + -0.985797509167567370f, + 0.164913120489970090f, -0.986308097244598670f, 0.161886393780111910f, + -0.986809401814185420f, + 0.158858143333861390f, -0.987301418157858430f, 0.155828397654265320f, + -0.987784141644572180f, + 0.152797185258443410f, -0.988257567730749460f, 0.149764534677321620f, + -0.988721691960323780f, + 0.146730474455361750f, -0.989176509964781010f, 0.143695033150294580f, + -0.989622017463200780f, + 0.140658239332849240f, -0.990058210262297120f, 0.137620121586486180f, + -0.990485084256456980f, + 0.134580708507126220f, -0.990902635427780010f, 0.131540028702883280f, + -0.991310859846115440f, + 0.128498110793793220f, -0.991709753669099530f, 0.125454983411546210f, + -0.992099313142191800f, + 0.122410675199216280f, -0.992479534598709970f, 0.119365214810991350f, + -0.992850414459865100f, + 0.116318630911904880f, -0.993211949234794500f, 0.113270952177564360f, + -0.993564135520595300f, + 0.110222207293883180f, -0.993906970002356060f, 0.107172424956808870f, + -0.994240449453187900f, + 0.104121633872054730f, -0.994564570734255420f, 0.101069862754827880f, + -0.994879330794805620f, + 0.098017140329560770f, -0.995184726672196820f, 0.094963495329639061f, + -0.995480755491926940f, + 0.091908956497132696f, -0.995767414467659820f, 0.088853552582524684f, + -0.996044700901251970f, + 0.085797312344439880f, -0.996312612182778000f, 0.082740264549375803f, + -0.996571145790554840f, + 0.079682437971430126f, -0.996820299291165670f, 0.076623861392031617f, + -0.997060070339482960f, + 0.073564563599667454f, -0.997290456678690210f, 0.070504573389614009f, + -0.997511456140303450f, + 0.067443919563664106f, -0.997723066644191640f, 0.064382630929857410f, + -0.997925286198596000f, + 0.061320736302208648f, -0.998118112900149180f, 0.058258264500435732f, + -0.998301544933892890f, + 0.055195244349690031f, -0.998475580573294770f, 0.052131704680283317f, + -0.998640218180265270f, + 0.049067674327418126f, -0.998795456205172410f, 0.046003182130914644f, + -0.998941293186856870f, + 0.042938256934940959f, -0.999077727752645360f, 0.039872927587739845f, + -0.999204758618363890f, + 0.036807222941358991f, -0.999322384588349540f, 0.033741171851377642f, + -0.999430604555461730f, + 0.030674803176636581f, -0.999529417501093140f, 0.027608145778965820f, + -0.999618822495178640f, + 0.024541228522912264f, -0.999698818696204250f, 0.021474080275469605f, + -0.999769405351215280f, + 0.018406729905804820f, -0.999830581795823400f, 0.015339206284988220f, + -0.999882347454212560f, + 0.012271538285719944f, -0.999924701839144500f, 0.009203754782059960f, + -0.999957644551963900f, + 0.006135884649154515f, -0.999981175282601110f, 0.003067956762966138f, + -0.999995293809576190f +}; + +static const float32_t Weights_2048[4096] = { + 1.000000000000000000f, 0.000000000000000000f, 0.999999705862882230f, + -0.000766990318742704f, + 0.999998823451701880f, -0.001533980186284766f, 0.999997352766978210f, + -0.002300969151425805f, + 0.999995293809576190f, -0.003067956762965976f, 0.999992646580707190f, + -0.003834942569706228f, + 0.999989411081928400f, -0.004601926120448571f, 0.999985587315143200f, + -0.005368906963996343f, + 0.999981175282601110f, -0.006135884649154475f, 0.999976174986897610f, + -0.006902858724729756f, + 0.999970586430974140f, -0.007669828739531097f, 0.999964409618118280f, + -0.008436794242369799f, + 0.999957644551963900f, -0.009203754782059819f, 0.999950291236490480f, + -0.009970709907418031f, + 0.999942349676023910f, -0.010737659167264491f, 0.999933819875236000f, + -0.011504602110422714f, + 0.999924701839144500f, -0.012271538285719925f, 0.999914995573113470f, + -0.013038467241987334f, + 0.999904701082852900f, -0.013805388528060391f, 0.999893818374418490f, + -0.014572301692779064f, + 0.999882347454212560f, -0.015339206284988100f, 0.999870288328982950f, + -0.016106101853537287f, + 0.999857641005823860f, -0.016872987947281710f, 0.999844405492175240f, + -0.017639864115082053f, + 0.999830581795823400f, -0.018406729905804820f, 0.999816169924900410f, + -0.019173584868322623f, + 0.999801169887884260f, -0.019940428551514441f, 0.999785581693599210f, + -0.020707260504265895f, + 0.999769405351215280f, -0.021474080275469508f, 0.999752640870248840f, + -0.022240887414024961f, + 0.999735288260561680f, -0.023007681468839369f, 0.999717347532362190f, + -0.023774461988827555f, + 0.999698818696204250f, -0.024541228522912288f, 0.999679701762987930f, + -0.025307980620024571f, + 0.999659996743959220f, -0.026074717829103901f, 0.999639703650710200f, + -0.026841439699098531f, + 0.999618822495178640f, -0.027608145778965740f, 0.999597353289648380f, + -0.028374835617672099f, + 0.999575296046749220f, -0.029141508764193722f, 0.999552650779456990f, + -0.029908164767516555f, + 0.999529417501093140f, -0.030674803176636626f, 0.999505596225325310f, + -0.031441423540560301f, + 0.999481186966166950f, -0.032208025408304586f, 0.999456189737977340f, + -0.032974608328897335f, + 0.999430604555461730f, -0.033741171851377580f, 0.999404431433671300f, + -0.034507715524795750f, + 0.999377670388002850f, -0.035274238898213947f, 0.999350321434199440f, + -0.036040741520706229f, + 0.999322384588349540f, -0.036807222941358832f, 0.999293859866887790f, + -0.037573682709270494f, + 0.999264747286594420f, -0.038340120373552694f, 0.999235046864595850f, + -0.039106535483329888f, + 0.999204758618363890f, -0.039872927587739811f, 0.999173882565716380f, + -0.040639296235933736f, + 0.999142418724816910f, -0.041405640977076739f, 0.999110367114174890f, + -0.042171961360347947f, + 0.999077727752645360f, -0.042938256934940820f, 0.999044500659429290f, + -0.043704527250063421f, + 0.999010685854073380f, -0.044470771854938668f, 0.998976283356469820f, + -0.045236990298804590f, + 0.998941293186856870f, -0.046003182130914623f, 0.998905715365818290f, + -0.046769346900537863f, + 0.998869549914283560f, -0.047535484156959303f, 0.998832796853527990f, + -0.048301593449480144f, + 0.998795456205172410f, -0.049067674327418015f, 0.998757527991183340f, + -0.049833726340107277f, + 0.998719012233872940f, -0.050599749036899282f, 0.998679908955899090f, + -0.051365741967162593f, + 0.998640218180265270f, -0.052131704680283324f, 0.998599939930320370f, + -0.052897636725665324f, + 0.998559074229759310f, -0.053663537652730520f, 0.998517621102622210f, + -0.054429407010919133f, + 0.998475580573294770f, -0.055195244349689934f, 0.998432952666508440f, + -0.055961049218520569f, + 0.998389737407340160f, -0.056726821166907748f, 0.998345934821212370f, + -0.057492559744367566f, + 0.998301544933892890f, -0.058258264500435752f, 0.998256567771495180f, + -0.059023934984667931f, + 0.998211003360478190f, -0.059789570746639868f, 0.998164851727646240f, + -0.060555171335947788f, + 0.998118112900149180f, -0.061320736302208578f, 0.998070786905482340f, + -0.062086265195060088f, + 0.998022873771486240f, -0.062851757564161406f, 0.997974373526346990f, + -0.063617212959193106f, + 0.997925286198596000f, -0.064382630929857465f, 0.997875611817110150f, + -0.065148011025878833f, + 0.997825350411111640f, -0.065913352797003805f, 0.997774502010167820f, + -0.066678655793001557f, + 0.997723066644191640f, -0.067443919563664051f, 0.997671044343441000f, + -0.068209143658806329f, + 0.997618435138519550f, -0.068974327628266746f, 0.997565239060375750f, + -0.069739471021907307f, + 0.997511456140303450f, -0.070504573389613856f, 0.997457086409941910f, + -0.071269634281296401f, + 0.997402129901275300f, -0.072034653246889332f, 0.997346586646633230f, + -0.072799629836351673f, + 0.997290456678690210f, -0.073564563599667426f, 0.997233740030466280f, + -0.074329454086845756f, + 0.997176436735326190f, -0.075094300847921305f, 0.997118546826979980f, + -0.075859103432954447f, + 0.997060070339482960f, -0.076623861392031492f, 0.997001007307235290f, + -0.077388574275265049f, + 0.996941357764982160f, -0.078153241632794232f, 0.996881121747813850f, + -0.078917863014784942f, + 0.996820299291165670f, -0.079682437971430126f, 0.996758890430818000f, + -0.080446966052950014f, + 0.996696895202896060f, -0.081211446809592441f, 0.996634313643869900f, + -0.081975879791633066f, + 0.996571145790554840f, -0.082740264549375692f, 0.996507391680110820f, + -0.083504600633152432f, + 0.996443051350042630f, -0.084268887593324071f, 0.996378124838200210f, + -0.085033124980280275f, + 0.996312612182778000f, -0.085797312344439894f, 0.996246513422315520f, + -0.086561449236251170f, + 0.996179828595696980f, -0.087325535206192059f, 0.996112557742151130f, + -0.088089569804770507f, + 0.996044700901251970f, -0.088853552582524600f, 0.995976258112917790f, + -0.089617483090022959f, + 0.995907229417411720f, -0.090381360877864983f, 0.995837614855341610f, + -0.091145185496681005f, + 0.995767414467659820f, -0.091908956497132724f, 0.995696628295663520f, + -0.092672673429913310f, + 0.995625256380994310f, -0.093436335845747787f, 0.995553298765638470f, + -0.094199943295393204f, + 0.995480755491926940f, -0.094963495329638992f, 0.995407626602534900f, + -0.095726991499307162f, + 0.995333912140482280f, -0.096490431355252593f, 0.995259612149133390f, + -0.097253814448363271f, + 0.995184726672196930f, -0.098017140329560604f, 0.995109255753726110f, + -0.098780408549799623f, + 0.995033199438118630f, -0.099543618660069319f, 0.994956557770116380f, + -0.100306770211392860f, + 0.994879330794805620f, -0.101069862754827820f, 0.994801518557617110f, + -0.101832895841466530f, + 0.994723121104325700f, -0.102595869022436280f, 0.994644138481050710f, + -0.103358781848899610f, + 0.994564570734255420f, -0.104121633872054590f, 0.994484417910747600f, + -0.104884424643134970f, + 0.994403680057679100f, -0.105647153713410620f, 0.994322357222545810f, + -0.106409820634187680f, + 0.994240449453187900f, -0.107172424956808840f, 0.994157956797789730f, + -0.107934966232653650f, + 0.994074879304879370f, -0.108697444013138720f, 0.993991217023329380f, + -0.109459857849717980f, + 0.993906970002356060f, -0.110222207293883060f, 0.993822138291519660f, + -0.110984491897163390f, + 0.993736721940724600f, -0.111746711211126590f, 0.993650721000219120f, + -0.112508864787378690f, + 0.993564135520595300f, -0.113270952177564350f, 0.993476965552789190f, + -0.114032972933367200f, + 0.993389211148080650f, -0.114794926606510080f, 0.993300872358093280f, + -0.115556812748755260f, + 0.993211949234794500f, -0.116318630911904750f, 0.993122441830495580f, + -0.117080380647800590f, + 0.993032350197851410f, -0.117842061508324980f, 0.992941674389860470f, + -0.118603673045400720f, + 0.992850414459865100f, -0.119365214810991350f, 0.992758570461551140f, + -0.120126686357101500f, + 0.992666142448948020f, -0.120888087235777080f, 0.992573130476428810f, + -0.121649416999105530f, + 0.992479534598709970f, -0.122410675199216200f, 0.992385354870851670f, + -0.123171861388280480f, + 0.992290591348257370f, -0.123932975118512160f, 0.992195244086673920f, + -0.124694015942167640f, + 0.992099313142191800f, -0.125454983411546230f, 0.992002798571244520f, + -0.126215877078990350f, + 0.991905700430609330f, -0.126976696496885870f, 0.991808018777406430f, + -0.127737441217662310f, + 0.991709753669099530f, -0.128498110793793170f, 0.991610905163495370f, + -0.129258704777796140f, + 0.991511473318743900f, -0.130019222722233350f, 0.991411458193338540f, + -0.130779664179711710f, + 0.991310859846115440f, -0.131540028702883120f, 0.991209678336254060f, + -0.132300315844444650f, + 0.991107913723276890f, -0.133060525157139060f, 0.991005566067049370f, + -0.133820656193754720f, + 0.990902635427780010f, -0.134580708507126170f, 0.990799121866020370f, + -0.135340681650134210f, + 0.990695025442664630f, -0.136100575175706200f, 0.990590346218950150f, + -0.136860388636816380f, + 0.990485084256457090f, -0.137620121586486040f, 0.990379239617108160f, + -0.138379773577783890f, + 0.990272812363169110f, -0.139139344163826200f, 0.990165802557248400f, + -0.139898832897777210f, + 0.990058210262297120f, -0.140658239332849210f, 0.989950035541608990f, + -0.141417563022303020f, + 0.989841278458820530f, -0.142176803519448030f, 0.989731939077910570f, + -0.142935960377642670f, + 0.989622017463200890f, -0.143695033150294470f, 0.989511513679355190f, + -0.144454021390860470f, + 0.989400427791380380f, -0.145212924652847460f, 0.989288759864625170f, + -0.145971742489812210f, + 0.989176509964781010f, -0.146730474455361750f, 0.989063678157881540f, + -0.147489120103153570f, + 0.988950264510302990f, -0.148247678986896030f, 0.988836269088763540f, + -0.149006150660348450f, + 0.988721691960323780f, -0.149764534677321510f, 0.988606533192386450f, + -0.150522830591677400f, + 0.988490792852696590f, -0.151281037957330220f, 0.988374471009341280f, + -0.152039156328246050f, + 0.988257567730749460f, -0.152797185258443440f, 0.988140083085692570f, + -0.153555124301993450f, + 0.988022017143283530f, -0.154312973013020100f, 0.987903369972977790f, + -0.155070730945700510f, + 0.987784141644572180f, -0.155828397654265230f, 0.987664332228205710f, + -0.156585972692998430f, + 0.987543941794359230f, -0.157343455616238250f, 0.987422970413855410f, + -0.158100845978376980f, + 0.987301418157858430f, -0.158858143333861450f, 0.987179285097874340f, + -0.159615347237193060f, + 0.987056571305750970f, -0.160372457242928280f, 0.986933276853677710f, + -0.161129472905678810f, + 0.986809401814185530f, -0.161886393780111830f, 0.986684946260146690f, + -0.162643219420950310f, + 0.986559910264775410f, -0.163399949382973230f, 0.986434293901627180f, + -0.164156583221015810f, + 0.986308097244598670f, -0.164913120489969890f, 0.986181320367928270f, + -0.165669560744784120f, + 0.986053963346195440f, -0.166425903540464100f, 0.985926026254321130f, + -0.167182148432072940f, + 0.985797509167567480f, -0.167938294974731170f, 0.985668412161537550f, + -0.168694342723617330f, + 0.985538735312176060f, -0.169450291233967960f, 0.985408478695768420f, + -0.170206140061078070f, + 0.985277642388941220f, -0.170961888760301220f, 0.985146226468662230f, + -0.171717536887049970f, + 0.985014231012239840f, -0.172473083996795950f, 0.984881656097323700f, + -0.173228529645070320f, + 0.984748501801904210f, -0.173983873387463820f, 0.984614768204312600f, + -0.174739114779627200f, + 0.984480455383220930f, -0.175494253377271430f, 0.984345563417641900f, + -0.176249288736167880f, + 0.984210092386929030f, -0.177004220412148750f, 0.984074042370776450f, + -0.177759047961107170f, + 0.983937413449218920f, -0.178513770938997510f, 0.983800205702631600f, + -0.179268388901835750f, + 0.983662419211730250f, -0.180022901405699510f, 0.983524054057571260f, + -0.180777308006728590f, + 0.983385110321551180f, -0.181531608261124970f, 0.983245588085407070f, + -0.182285801725153300f, + 0.983105487431216290f, -0.183039887955140950f, 0.982964808441396440f, + -0.183793866507478450f, + 0.982823551198705240f, -0.184547736938619620f, 0.982681715786240860f, + -0.185301498805081900f, + 0.982539302287441240f, -0.186055151663446630f, 0.982396310786084690f, + -0.186808695070359270f, + 0.982252741366289370f, -0.187562128582529600f, 0.982108594112513610f, + -0.188315451756732120f, + 0.981963869109555240f, -0.189068664149806190f, 0.981818566442552500f, + -0.189821765318656410f, + 0.981672686196983110f, -0.190574754820252740f, 0.981526228458664770f, + -0.191327632211630900f, + 0.981379193313754560f, -0.192080397049892440f, 0.981231580848749730f, + -0.192833048892205230f, + 0.981083391150486710f, -0.193585587295803610f, 0.980934624306141640f, + -0.194338011817988600f, + 0.980785280403230430f, -0.195090322016128250f, 0.980635359529608120f, + -0.195842517447657850f, + 0.980484861773469380f, -0.196594597670080220f, 0.980333787223347960f, + -0.197346562240965920f, + 0.980182135968117430f, -0.198098410717953560f, 0.980029908096990090f, + -0.198850142658750090f, + 0.979877103699517640f, -0.199601757621130970f, 0.979723722865591170f, + -0.200353255162940450f, + 0.979569765685440520f, -0.201104634842091900f, 0.979415232249634780f, + -0.201855896216568050f, + 0.979260122649082020f, -0.202607038844421130f, 0.979104436975029250f, + -0.203358062283773320f, + 0.978948175319062200f, -0.204108966092816870f, 0.978791337773105670f, + -0.204859749829814420f, + 0.978633924429423210f, -0.205610413053099240f, 0.978475935380616830f, + -0.206360955321075510f, + 0.978317370719627650f, -0.207111376192218560f, 0.978158230539735050f, + -0.207861675225075070f, + 0.977998514934557140f, -0.208611851978263490f, 0.977838223998050430f, + -0.209361906010474160f, + 0.977677357824509930f, -0.210111836880469610f, 0.977515916508569280f, + -0.210861644147084860f, + 0.977353900145199960f, -0.211611327369227550f, 0.977191308829712280f, + -0.212360886105878420f, + 0.977028142657754390f, -0.213110319916091360f, 0.976864401725312640f, + -0.213859628358993750f, + 0.976700086128711840f, -0.214608810993786760f, 0.976535195964614470f, + -0.215357867379745550f, + 0.976369731330021140f, -0.216106797076219520f, 0.976203692322270560f, + -0.216855599642632620f, + 0.976037079039039020f, -0.217604274638483640f, 0.975869891578341030f, + -0.218352821623346320f, + 0.975702130038528570f, -0.219101240156869800f, 0.975533794518291360f, + -0.219849529798778700f, + 0.975364885116656980f, -0.220597690108873510f, 0.975195401932990370f, + -0.221345720647030810f, + 0.975025345066994120f, -0.222093620973203510f, 0.974854714618708430f, + -0.222841390647421120f, + 0.974683510688510670f, -0.223589029229789990f, 0.974511733377115720f, + -0.224336536280493600f, + 0.974339382785575860f, -0.225083911359792830f, 0.974166459015280320f, + -0.225831154028026170f, + 0.973992962167955830f, -0.226578263845610000f, 0.973818892345666100f, + -0.227325240373038860f, + 0.973644249650811980f, -0.228072083170885730f, 0.973469034186131070f, + -0.228818791799802220f, + 0.973293246054698250f, -0.229565365820518870f, 0.973116885359925130f, + -0.230311804793845440f, + 0.972939952205560180f, -0.231058108280671110f, 0.972762446695688570f, + -0.231804275841964780f, + 0.972584368934732210f, -0.232550307038775240f, 0.972405719027449770f, + -0.233296201432231590f, + 0.972226497078936270f, -0.234041958583543430f, 0.972046703194623500f, + -0.234787578054000970f, + 0.971866337480279400f, -0.235533059404975490f, 0.971685400042008540f, + -0.236278402197919570f, + 0.971503890986251780f, -0.237023605994367200f, 0.971321810419786160f, + -0.237768670355934190f, + 0.971139158449725090f, -0.238513594844318420f, 0.970955935183517970f, + -0.239258379021299980f, + 0.970772140728950350f, -0.240003022448741500f, 0.970587775194143630f, + -0.240747524688588430f, + 0.970402838687555500f, -0.241491885302869330f, 0.970217331317979160f, + -0.242236103853696010f, + 0.970031253194543970f, -0.242980179903263870f, 0.969844604426714830f, + -0.243724113013852160f, + 0.969657385124292450f, -0.244467902747824150f, 0.969469595397413060f, + -0.245211548667627540f, + 0.969281235356548530f, -0.245955050335794590f, 0.969092305112506210f, + -0.246698407314942410f, + 0.968902804776428870f, -0.247441619167773270f, 0.968712734459794780f, + -0.248184685457074780f, + 0.968522094274417380f, -0.248927605745720150f, 0.968330884332445190f, + -0.249670379596668570f, + 0.968139104746362440f, -0.250413006572965220f, 0.967946755628987800f, + -0.251155486237741920f, + 0.967753837093475510f, -0.251897818154216970f, 0.967560349253314360f, + -0.252640001885695520f, + 0.967366292222328510f, -0.253382036995570160f, 0.967171666114676640f, + -0.254123923047320620f, + 0.966976471044852070f, -0.254865659604514570f, 0.966780707127683270f, + -0.255607246230807380f, + 0.966584374478333120f, -0.256348682489942910f, 0.966387473212298900f, + -0.257089967945753120f, + 0.966190003445412500f, -0.257831102162158990f, 0.965991965293840570f, + -0.258572084703170340f, + 0.965793358874083680f, -0.259312915132886230f, 0.965594184302976830f, + -0.260053593015495190f, + 0.965394441697689400f, -0.260794117915275510f, 0.965194131175724720f, + -0.261534489396595520f, + 0.964993252854920320f, -0.262274707023913590f, 0.964791806853447900f, + -0.263014770361779000f, + 0.964589793289812760f, -0.263754678974831350f, 0.964387212282854290f, + -0.264494432427801630f, + 0.964184063951745830f, -0.265234030285511790f, 0.963980348415994110f, + -0.265973472112875590f, + 0.963776065795439840f, -0.266712757474898370f, 0.963571216210257320f, + -0.267451885936677620f, + 0.963365799780954050f, -0.268190857063403180f, 0.963159816628371360f, + -0.268929670420357260f, + 0.962953266873683880f, -0.269668325572915090f, 0.962746150638399410f, + -0.270406822086544820f, + 0.962538468044359160f, -0.271145159526808010f, 0.962330219213737400f, + -0.271883337459359720f, + 0.962121404269041580f, -0.272621355449948980f, 0.961912023333112210f, + -0.273359213064418680f, + 0.961702076529122540f, -0.274096909868706380f, 0.961491563980579000f, + -0.274834445428843940f, + 0.961280485811320640f, -0.275571819310958140f, 0.961068842145519350f, + -0.276309031081271080f, + 0.960856633107679660f, -0.277046080306099900f, 0.960643858822638590f, + -0.277782966551857690f, + 0.960430519415565790f, -0.278519689385053060f, 0.960216615011963430f, + -0.279256248372291180f, + 0.960002145737665960f, -0.279992643080273220f, 0.959787111718839900f, + -0.280728873075797190f, + 0.959571513081984520f, -0.281464937925757940f, 0.959355349953930790f, + -0.282200837197147560f, + 0.959138622461841890f, -0.282936570457055390f, 0.958921330733213170f, + -0.283672137272668430f, + 0.958703474895871600f, -0.284407537211271880f, 0.958485055077976100f, + -0.285142769840248670f, + 0.958266071408017670f, -0.285877834727080620f, 0.958046524014818600f, + -0.286612731439347790f, + 0.957826413027532910f, -0.287347459544729510f, 0.957605738575646350f, + -0.288082018611004130f, + 0.957384500788975860f, -0.288816408206049480f, 0.957162699797670210f, + -0.289550627897843030f, + 0.956940335732208820f, -0.290284677254462330f, 0.956717408723403050f, + -0.291018555844085090f, + 0.956493918902395100f, -0.291752263234989260f, 0.956269866400658030f, + -0.292485798995553880f, + 0.956045251349996410f, -0.293219162694258630f, 0.955820073882545420f, + -0.293952353899684660f, + 0.955594334130771110f, -0.294685372180514330f, 0.955368032227470350f, + -0.295418217105532010f, + 0.955141168305770780f, -0.296150888243623790f, 0.954913742499130520f, + -0.296883385163778270f, + 0.954685754941338340f, -0.297615707435086200f, 0.954457205766513490f, + -0.298347854626741400f, + 0.954228095109105670f, -0.299079826308040480f, 0.953998423103894490f, + -0.299811622048383350f, + 0.953768189885990330f, -0.300543241417273450f, 0.953537395590833280f, + -0.301274683984317950f, + 0.953306040354193860f, -0.302005949319228080f, 0.953074124312172200f, + -0.302737036991819140f, + 0.952841647601198720f, -0.303467946572011320f, 0.952608610358033350f, + -0.304198677629829110f, + 0.952375012719765880f, -0.304929229735402370f, 0.952140854823815830f, + -0.305659602458966120f, + 0.951906136807932350f, -0.306389795370860920f, 0.951670858810193860f, + -0.307119808041533100f, + 0.951435020969008340f, -0.307849640041534870f, 0.951198623423113230f, + -0.308579290941525090f, + 0.950961666311575080f, -0.309308760312268730f, 0.950724149773789610f, + -0.310038047724637890f, + 0.950486073949481700f, -0.310767152749611470f, 0.950247438978705230f, + -0.311496074958275910f, + 0.950008245001843000f, -0.312224813921824880f, 0.949768492159606680f, + -0.312953369211560200f, + 0.949528180593036670f, -0.313681740398891520f, 0.949287310443502120f, + -0.314409927055336660f, + 0.949045881852700560f, -0.315137928752522440f, 0.948803894962658490f, + -0.315865745062183960f, + 0.948561349915730270f, -0.316593375556165850f, 0.948318246854599090f, + -0.317320819806421740f, + 0.948074585922276230f, -0.318048077385014950f, 0.947830367262101010f, + -0.318775147864118480f, + 0.947585591017741090f, -0.319502030816015690f, 0.947340257333192050f, + -0.320228725813099860f, + 0.947094366352777220f, -0.320955232427875210f, 0.946847918221148000f, + -0.321681550232956580f, + 0.946600913083283530f, -0.322407678801069850f, 0.946353351084490590f, + -0.323133617705052330f, + 0.946105232370403450f, -0.323859366517852850f, 0.945856557086983910f, + -0.324584924812532150f, + 0.945607325380521280f, -0.325310292162262930f, 0.945357537397632290f, + -0.326035468140330240f, + 0.945107193285260610f, -0.326760452320131730f, 0.944856293190677210f, + -0.327485244275178000f, + 0.944604837261480260f, -0.328209843579092500f, 0.944352825645594750f, + -0.328934249805612200f, + 0.944100258491272660f, -0.329658462528587490f, 0.943847135947092690f, + -0.330382481321982780f, + 0.943593458161960390f, -0.331106305759876430f, 0.943339225285107720f, + -0.331829935416461110f, + 0.943084437466093490f, -0.332553369866044220f, 0.942829094854802710f, + -0.333276608683047930f, + 0.942573197601446870f, -0.333999651442009380f, 0.942316745856563780f, + -0.334722497717581220f, + 0.942059739771017310f, -0.335445147084531600f, 0.941802179495997650f, + -0.336167599117744520f, + 0.941544065183020810f, -0.336889853392220050f, 0.941285396983928660f, + -0.337611909483074620f, + 0.941026175050889260f, -0.338333766965541130f, 0.940766399536396070f, + -0.339055425414969640f, + 0.940506070593268300f, -0.339776884406826850f, 0.940245188374650880f, + -0.340498143516697160f, + 0.939983753034014050f, -0.341219202320282360f, 0.939721764725153340f, + -0.341940060393402190f, + 0.939459223602189920f, -0.342660717311994380f, 0.939196129819569900f, + -0.343381172652115040f, + 0.938932483532064600f, -0.344101425989938810f, 0.938668284894770170f, + -0.344821476901759290f, + 0.938403534063108060f, -0.345541324963989090f, 0.938138231192824360f, + -0.346260969753160010f, + 0.937872376439989890f, -0.346980410845923680f, 0.937605969960999990f, + -0.347699647819051380f, + 0.937339011912574960f, -0.348418680249434560f, 0.937071502451759190f, + -0.349137507714084970f, + 0.936803441735921560f, -0.349856129790134920f, 0.936534829922755500f, + -0.350574546054837510f, + 0.936265667170278260f, -0.351292756085567090f, 0.935995953636831410f, + -0.352010759459819080f, + 0.935725689481080370f, -0.352728555755210730f, 0.935454874862014620f, + -0.353446144549480810f, + 0.935183509938947610f, -0.354163525420490340f, 0.934911594871516090f, + -0.354880697946222790f, + 0.934639129819680780f, -0.355597661704783850f, 0.934366114943725790f, + -0.356314416274402410f, + 0.934092550404258980f, -0.357030961233429980f, 0.933818436362210960f, + -0.357747296160341900f, + 0.933543772978836170f, -0.358463420633736540f, 0.933268560415712050f, + -0.359179334232336500f, + 0.932992798834738960f, -0.359895036534988110f, 0.932716488398140250f, + -0.360610527120662270f, + 0.932439629268462360f, -0.361325805568454280f, 0.932162221608574430f, + -0.362040871457584180f, + 0.931884265581668150f, -0.362755724367397230f, 0.931605761351257830f, + -0.363470363877363760f, + 0.931326709081180430f, -0.364184789567079890f, 0.931047108935595280f, + -0.364899001016267320f, + 0.930766961078983710f, -0.365612997804773850f, 0.930486265676149780f, + -0.366326779512573590f, + 0.930205022892219070f, -0.367040345719767180f, 0.929923232892639670f, + -0.367753696006581980f, + 0.929640895843181330f, -0.368466829953372320f, 0.929358011909935500f, + -0.369179747140620020f, + 0.929074581259315860f, -0.369892447148934100f, 0.928790604058057020f, + -0.370604929559051670f, + 0.928506080473215590f, -0.371317193951837540f, 0.928221010672169440f, + -0.372029239908285010f, + 0.927935394822617890f, -0.372741067009515760f, 0.927649233092581180f, + -0.373452674836780300f, + 0.927362525650401110f, -0.374164062971457930f, 0.927075272664740100f, + -0.374875230995057540f, + 0.926787474304581750f, -0.375586178489217220f, 0.926499130739230510f, + -0.376296905035704790f, + 0.926210242138311380f, -0.377007410216418260f, 0.925920808671770070f, + -0.377717693613385640f, + 0.925630830509872720f, -0.378427754808765560f, 0.925340307823206310f, + -0.379137593384847320f, + 0.925049240782677580f, -0.379847208924051160f, 0.924757629559513910f, + -0.380556601008928520f, + 0.924465474325262600f, -0.381265769222162380f, 0.924172775251791200f, + -0.381974713146567220f, + 0.923879532511286740f, -0.382683432365089780f, 0.923585746276256670f, + -0.383391926460808660f, + 0.923291416719527640f, -0.384100195016935040f, 0.922996544014246250f, + -0.384808237616812880f, + 0.922701128333878630f, -0.385516053843918850f, 0.922405169852209880f, + -0.386223643281862980f, + 0.922108668743345180f, -0.386931005514388580f, 0.921811625181708120f, + -0.387638140125372730f, + 0.921514039342042010f, -0.388345046698826250f, 0.921215911399408730f, + -0.389051724818894380f, + 0.920917241529189520f, -0.389758174069856410f, 0.920618029907083970f, + -0.390464394036126590f, + 0.920318276709110590f, -0.391170384302253870f, 0.920017982111606570f, + -0.391876144452922350f, + 0.919717146291227360f, -0.392581674072951470f, 0.919415769424947070f, + -0.393286972747296400f, + 0.919113851690057770f, -0.393992040061048100f, 0.918811393264170050f, + -0.394696875599433560f, + 0.918508394325212250f, -0.395401478947816350f, 0.918204855051430900f, + -0.396105849691696270f, + 0.917900775621390500f, -0.396809987416710310f, 0.917596156213972950f, + -0.397513891708632330f, + 0.917290997008377910f, -0.398217562153373560f, 0.916985298184123000f, + -0.398920998336982910f, + 0.916679059921042700f, -0.399624199845646790f, 0.916372282399289140f, + -0.400327166265690090f, + 0.916064965799331720f, -0.401029897183575620f, 0.915757110301956720f, + -0.401732392185905010f, + 0.915448716088267830f, -0.402434650859418430f, 0.915139783339685260f, + -0.403136672790995300f, + 0.914830312237946200f, -0.403838457567654070f, 0.914520302965104450f, + -0.404540004776553000f, + 0.914209755703530690f, -0.405241314004989860f, 0.913898670635911680f, + -0.405942384840402510f, + 0.913587047945250810f, -0.406643216870369030f, 0.913274887814867760f, + -0.407343809682607970f, + 0.912962190428398210f, -0.408044162864978690f, 0.912648955969793900f, + -0.408744276005481360f, + 0.912335184623322750f, -0.409444148692257590f, 0.912020876573568340f, + -0.410143780513590240f, + 0.911706032005429880f, -0.410843171057903910f, 0.911390651104122430f, + -0.411542319913765220f, + 0.911074734055176360f, -0.412241226669882890f, 0.910758281044437570f, + -0.412939890915108080f, + 0.910441292258067250f, -0.413638312238434500f, 0.910123767882541680f, + -0.414336490228999100f, + 0.909805708104652220f, -0.415034424476081630f, 0.909487113111505430f, + -0.415732114569105360f, + 0.909167983090522380f, -0.416429560097637150f, 0.908848318229439120f, + -0.417126760651387870f, + 0.908528118716306120f, -0.417823715820212270f, 0.908207384739488700f, + -0.418520425194109700f, + 0.907886116487666260f, -0.419216888363223910f, 0.907564314149832630f, + -0.419913104917843620f, + 0.907241977915295820f, -0.420609074448402510f, 0.906919107973678140f, + -0.421304796545479640f, + 0.906595704514915330f, -0.422000270799799680f, 0.906271767729257660f, + -0.422695496802232950f, + 0.905947297807268460f, -0.423390474143796050f, 0.905622294939825270f, + -0.424085202415651560f, + 0.905296759318118820f, -0.424779681209108810f, 0.904970691133653250f, + -0.425473910115623800f, + 0.904644090578246240f, -0.426167888726799620f, 0.904316957844028320f, + -0.426861616634386430f, + 0.903989293123443340f, -0.427555093430282080f, 0.903661096609247980f, + -0.428248318706531960f, + 0.903332368494511820f, -0.428941292055329490f, 0.903003108972617150f, + -0.429634013069016380f, + 0.902673318237258830f, -0.430326481340082610f, 0.902342996482444200f, + -0.431018696461167030f, + 0.902012143902493180f, -0.431710658025057260f, 0.901680760692037730f, + -0.432402365624690140f, + 0.901348847046022030f, -0.433093818853151960f, 0.901016403159702330f, + -0.433785017303678520f, + 0.900683429228646970f, -0.434475960569655650f, 0.900349925448735600f, + -0.435166648244619260f, + 0.900015892016160280f, -0.435857079922255470f, 0.899681329127423930f, + -0.436547255196401200f, + 0.899346236979341570f, -0.437237173661044090f, 0.899010615769039070f, + -0.437926834910322860f, + 0.898674465693953820f, -0.438616238538527660f, 0.898337786951834310f, + -0.439305384140099950f, + 0.898000579740739880f, -0.439994271309633260f, 0.897662844259040860f, + -0.440682899641872900f, + 0.897324580705418320f, -0.441371268731716670f, 0.896985789278863970f, + -0.442059378174214700f, + 0.896646470178680150f, -0.442747227564570020f, 0.896306623604479550f, + -0.443434816498138480f, + 0.895966249756185220f, -0.444122144570429200f, 0.895625348834030110f, + -0.444809211377104880f, + 0.895283921038557580f, -0.445496016513981740f, 0.894941966570620750f, + -0.446182559577030070f, + 0.894599485631382700f, -0.446868840162374160f, 0.894256478422316040f, + -0.447554857866293010f, + 0.893912945145203250f, -0.448240612285219890f, 0.893568886002135910f, + -0.448926103015743260f, + 0.893224301195515320f, -0.449611329654606540f, 0.892879190928051680f, + -0.450296291798708610f, + 0.892533555402764580f, -0.450980989045103860f, 0.892187394822982480f, + -0.451665420991002490f, + 0.891840709392342720f, -0.452349587233770890f, 0.891493499314791380f, + -0.453033487370931580f, + 0.891145764794583180f, -0.453717121000163870f, 0.890797506036281490f, + -0.454400487719303580f, + 0.890448723244757880f, -0.455083587126343840f, 0.890099416625192320f, + -0.455766418819434640f, + 0.889749586383072780f, -0.456448982396883920f, 0.889399232724195520f, + -0.457131277457156980f, + 0.889048355854664570f, -0.457813303598877170f, 0.888696955980891600f, + -0.458495060420826270f, + 0.888345033309596350f, -0.459176547521944090f, 0.887992588047805560f, + -0.459857764501329540f, + 0.887639620402853930f, -0.460538710958240010f, 0.887286130582383150f, + -0.461219386492092380f, + 0.886932118794342190f, -0.461899790702462730f, 0.886577585246987040f, + -0.462579923189086810f, + 0.886222530148880640f, -0.463259783551860150f, 0.885866953708892790f, + -0.463939371390838520f, + 0.885510856136199950f, -0.464618686306237820f, 0.885154237640285110f, + -0.465297727898434600f, + 0.884797098430937790f, -0.465976495767966180f, 0.884439438718253810f, + -0.466654989515530920f, + 0.884081258712634990f, -0.467333208741988420f, 0.883722558624789660f, + -0.468011153048359830f, + 0.883363338665731580f, -0.468688822035827900f, 0.883003599046780830f, + -0.469366215305737520f, + 0.882643339979562790f, -0.470043332459595620f, 0.882282561676008710f, + -0.470720173099071600f, + 0.881921264348355050f, -0.471396736825997640f, 0.881559448209143780f, + -0.472073023242368660f, + 0.881197113471222090f, -0.472749031950342790f, 0.880834260347742040f, + -0.473424762552241530f, + 0.880470889052160750f, -0.474100214650549970f, 0.880106999798240360f, + -0.474775387847917120f, + 0.879742592800047410f, -0.475450281747155870f, 0.879377668271953290f, + -0.476124895951243580f, + 0.879012226428633530f, -0.476799230063322090f, 0.878646267485068130f, + -0.477473283686698060f, + 0.878279791656541580f, -0.478147056424843010f, 0.877912799158641840f, + -0.478820547881393890f, + 0.877545290207261350f, -0.479493757660153010f, 0.877177265018595940f, + -0.480166685365088390f, + 0.876808723809145650f, -0.480839330600333960f, 0.876439666795713610f, + -0.481511692970189860f, + 0.876070094195406600f, -0.482183772079122720f, 0.875700006225634600f, + -0.482855567531765670f, + 0.875329403104110890f, -0.483527078932918740f, 0.874958285048851650f, + -0.484198305887549030f, + 0.874586652278176110f, -0.484869248000791060f, 0.874214505010706300f, + -0.485539904877946960f, + 0.873841843465366860f, -0.486210276124486420f, 0.873468667861384880f, + -0.486880361346047340f, + 0.873094978418290090f, -0.487550160148436000f, 0.872720775355914300f, + -0.488219672137626790f, + 0.872346058894391540f, -0.488888896919763170f, 0.871970829254157810f, + -0.489557834101157440f, + 0.871595086655950980f, -0.490226483288291160f, 0.871218831320811020f, + -0.490894844087815090f, + 0.870842063470078980f, -0.491562916106549900f, 0.870464783325397670f, + -0.492230698951486020f, + 0.870086991108711460f, -0.492898192229784040f, 0.869708687042265670f, + -0.493565395548774770f, + 0.869329871348606840f, -0.494232308515959670f, 0.868950544250582380f, + -0.494898930739011260f, + 0.868570705971340900f, -0.495565261825772540f, 0.868190356734331310f, + -0.496231301384258250f, + 0.867809496763303320f, -0.496897049022654470f, 0.867428126282306920f, + -0.497562504349319150f, + 0.867046245515692650f, -0.498227666972781870f, 0.866663854688111130f, + -0.498892536501744590f, + 0.866280954024512990f, -0.499557112545081840f, 0.865897543750148820f, + -0.500221394711840680f, + 0.865513624090569090f, -0.500885382611240710f, 0.865129195271623800f, + -0.501549075852675390f, + 0.864744257519462380f, -0.502212474045710790f, 0.864358811060534030f, + -0.502875576800086990f, + 0.863972856121586810f, -0.503538383725717580f, 0.863586392929668100f, + -0.504200894432690340f, + 0.863199421712124160f, -0.504863108531267590f, 0.862811942696600330f, + -0.505525025631885390f, + 0.862423956111040610f, -0.506186645345155230f, 0.862035462183687210f, + -0.506847967281863210f, + 0.861646461143081300f, -0.507508991052970870f, 0.861256953218062170f, + -0.508169716269614600f, + 0.860866938637767310f, -0.508830142543106990f, 0.860476417631632070f, + -0.509490269484936360f, + 0.860085390429390140f, -0.510150096706766810f, 0.859693857261072610f, + -0.510809623820439040f, + 0.859301818357008470f, -0.511468850437970300f, 0.858909273947823900f, + -0.512127776171554690f, + 0.858516224264442740f, -0.512786400633562960f, 0.858122669538086140f, + -0.513444723436543460f, + 0.857728610000272120f, -0.514102744193221660f, 0.857334045882815590f, + -0.514760462516501200f, + 0.856938977417828760f, -0.515417878019462930f, 0.856543404837719960f, + -0.516074990315366630f, + 0.856147328375194470f, -0.516731799017649870f, 0.855750748263253920f, + -0.517388303739929060f, + 0.855353664735196030f, -0.518044504095999340f, 0.854956078024614930f, + -0.518700399699834950f, + 0.854557988365400530f, -0.519355990165589640f, 0.854159395991738850f, + -0.520011275107596040f, + 0.853760301138111410f, -0.520666254140367160f, 0.853360704039295430f, + -0.521320926878595660f, + 0.852960604930363630f, -0.521975292937154390f, 0.852560004046684080f, + -0.522629351931096610f, + 0.852158901623919830f, -0.523283103475656430f, 0.851757297898029120f, + -0.523936547186248600f, + 0.851355193105265200f, -0.524589682678468950f, 0.850952587482175730f, + -0.525242509568094710f, + 0.850549481265603480f, -0.525895027471084630f, 0.850145874692685210f, + -0.526547236003579440f, + 0.849741768000852550f, -0.527199134781901280f, 0.849337161427830780f, + -0.527850723422555230f, + 0.848932055211639610f, -0.528502001542228480f, 0.848526449590592650f, + -0.529152968757790610f, + 0.848120344803297230f, -0.529803624686294610f, 0.847713741088654380f, + -0.530453968944976320f, + 0.847306638685858320f, -0.531104001151255000f, 0.846899037834397240f, + -0.531753720922733320f, + 0.846490938774052130f, -0.532403127877197900f, 0.846082341744897050f, + -0.533052221632619450f, + 0.845673246987299070f, -0.533701001807152960f, 0.845263654741918220f, + -0.534349468019137520f, + 0.844853565249707120f, -0.534997619887097150f, 0.844442978751910660f, + -0.535645457029741090f, + 0.844031895490066410f, -0.536292979065963180f, 0.843620315706004150f, + -0.536940185614842910f, + 0.843208239641845440f, -0.537587076295645390f, 0.842795667540004120f, + -0.538233650727821700f, + 0.842382599643185850f, -0.538879908531008420f, 0.841969036194387680f, + -0.539525849325028890f, + 0.841554977436898440f, -0.540171472729892850f, 0.841140423614298080f, + -0.540816778365796670f, + 0.840725374970458070f, -0.541461765853123440f, 0.840309831749540770f, + -0.542106434812443920f, + 0.839893794195999520f, -0.542750784864515890f, 0.839477262554578550f, + -0.543394815630284800f, + 0.839060237070312740f, -0.544038526730883820f, 0.838642717988527300f, + -0.544681917787634530f, + 0.838224705554838080f, -0.545324988422046460f, 0.837806200015150940f, + -0.545967738255817570f, + 0.837387201615661940f, -0.546610166910834860f, 0.836967710602857020f, + -0.547252274009174090f, + 0.836547727223512010f, -0.547894059173100190f, 0.836127251724692270f, + -0.548535522025067390f, + 0.835706284353752600f, -0.549176662187719660f, 0.835284825358337370f, + -0.549817479283890910f, + 0.834862874986380010f, -0.550457972936604810f, 0.834440433486103190f, + -0.551098142769075430f, + 0.834017501106018130f, -0.551737988404707340f, 0.833594078094925140f, + -0.552377509467096070f, + 0.833170164701913190f, -0.553016705580027470f, 0.832745761176359460f, + -0.553655576367479310f, + 0.832320867767929680f, -0.554294121453620000f, 0.831895484726577590f, + -0.554932340462810370f, + 0.831469612302545240f, -0.555570233019602180f, 0.831043250746362320f, + -0.556207798748739930f, + 0.830616400308846310f, -0.556845037275160100f, 0.830189061241102370f, + -0.557481948223991550f, + 0.829761233794523050f, -0.558118531220556100f, 0.829332918220788250f, + -0.558754785890368310f, + 0.828904114771864870f, -0.559390711859136140f, 0.828474823700007130f, + -0.560026308752760380f, + 0.828045045257755800f, -0.560661576197336030f, 0.827614779697938400f, + -0.561296513819151470f, + 0.827184027273669130f, -0.561931121244689470f, 0.826752788238348520f, + -0.562565398100626560f, + 0.826321062845663530f, -0.563199344013834090f, 0.825888851349586780f, + -0.563832958611378170f, + 0.825456154004377550f, -0.564466241520519500f, 0.825022971064580220f, + -0.565099192368713980f, + 0.824589302785025290f, -0.565731810783613120f, 0.824155149420828570f, + -0.566364096393063840f, + 0.823720511227391430f, -0.566996048825108680f, 0.823285388460400110f, + -0.567627667707986230f, + 0.822849781375826430f, -0.568258952670131490f, 0.822413690229926390f, + -0.568889903340175860f, + 0.821977115279241550f, -0.569520519346947140f, 0.821540056780597610f, + -0.570150800319470300f, + 0.821102514991104650f, -0.570780745886967260f, 0.820664490168157460f, + -0.571410355678857230f, + 0.820225982569434690f, -0.572039629324757050f, 0.819786992452898990f, + -0.572668566454481160f, + 0.819347520076796900f, -0.573297166698042200f, 0.818907565699658950f, + -0.573925429685650750f, + 0.818467129580298660f, -0.574553355047715760f, 0.818026211977813440f, + -0.575180942414845080f, + 0.817584813151583710f, -0.575808191417845340f, 0.817142933361272970f, + -0.576435101687721830f, + 0.816700572866827850f, -0.577061672855679440f, 0.816257731928477390f, + -0.577687904553122800f, + 0.815814410806733780f, -0.578313796411655590f, 0.815370609762391290f, + -0.578939348063081780f, + 0.814926329056526620f, -0.579564559139405630f, 0.814481568950498610f, + -0.580189429272831680f, + 0.814036329705948410f, -0.580813958095764530f, 0.813590611584798510f, + -0.581438145240810170f, + 0.813144414849253590f, -0.582061990340775440f, 0.812697739761799490f, + -0.582685493028668460f, + 0.812250586585203880f, -0.583308652937698290f, 0.811802955582515470f, + -0.583931469701276180f, + 0.811354847017063730f, -0.584553942953015330f, 0.810906261152459670f, + -0.585176072326730410f, + 0.810457198252594770f, -0.585797857456438860f, 0.810007658581641140f, + -0.586419297976360500f, + 0.809557642404051260f, -0.587040393520917970f, 0.809107149984558240f, + -0.587661143724736660f, + 0.808656181588174980f, -0.588281548222645220f, 0.808204737480194720f, + -0.588901606649675720f, + 0.807752817926190360f, -0.589521318641063940f, 0.807300423192014450f, + -0.590140683832248820f, + 0.806847553543799330f, -0.590759701858874160f, 0.806394209247956240f, + -0.591378372356787580f, + 0.805940390571176280f, -0.591996694962040990f, 0.805486097780429230f, + -0.592614669310891130f, + 0.805031331142963660f, -0.593232295039799800f, 0.804576090926307110f, + -0.593849571785433630f, + 0.804120377398265810f, -0.594466499184664430f, 0.803664190826924090f, + -0.595083076874569960f, + 0.803207531480644940f, -0.595699304492433360f, 0.802750399628069160f, + -0.596315181675743710f, + 0.802292795538115720f, -0.596930708062196500f, 0.801834719479981310f, + -0.597545883289693160f, + 0.801376171723140240f, -0.598160706996342270f, 0.800917152537344300f, + -0.598775178820458720f, + 0.800457662192622820f, -0.599389298400564540f, 0.799997700959281910f, + -0.600003065375388940f, + 0.799537269107905010f, -0.600616479383868970f, 0.799076366909352350f, + -0.601229540065148500f, + 0.798614994634760820f, -0.601842247058580030f, 0.798153152555543750f, + -0.602454600003723750f, + 0.797690840943391160f, -0.603066598540348160f, 0.797228060070268810f, + -0.603678242308430370f, + 0.796764810208418830f, -0.604289530948155960f, 0.796301091630359110f, + -0.604900464099919820f, + 0.795836904608883570f, -0.605511041404325550f, 0.795372249417061310f, + -0.606121262502186120f, + 0.794907126328237010f, -0.606731127034524480f, 0.794441535616030590f, + -0.607340634642572930f, + 0.793975477554337170f, -0.607949784967773630f, 0.793508952417326660f, + -0.608558577651779450f, + 0.793041960479443640f, -0.609167012336453210f, 0.792574502015407690f, + -0.609775088663868430f, + 0.792106577300212390f, -0.610382806276309480f, 0.791638186609125880f, + -0.610990164816271660f, + 0.791169330217690200f, -0.611597163926461910f, 0.790700008401721610f, + -0.612203803249797950f, + 0.790230221437310030f, -0.612810082429409710f, 0.789759969600819070f, + -0.613416001108638590f, + 0.789289253168885650f, -0.614021558931038380f, 0.788818072418420280f, + -0.614626755540375050f, + 0.788346427626606340f, -0.615231590580626820f, 0.787874319070900220f, + -0.615836063695985090f, + 0.787401747029031430f, -0.616440174530853650f, 0.786928711779001810f, + -0.617043922729849760f, + 0.786455213599085770f, -0.617647307937803870f, 0.785981252767830150f, + -0.618250329799760250f, + 0.785506829564053930f, -0.618852987960976320f, 0.785031944266848080f, + -0.619455282066924020f, + 0.784556597155575240f, -0.620057211763289100f, 0.784080788509869950f, + -0.620658776695972140f, + 0.783604518609638200f, -0.621259976511087550f, 0.783127787735057310f, + -0.621860810854965360f, + 0.782650596166575730f, -0.622461279374149970f, 0.782172944184913010f, + -0.623061381715401260f, + 0.781694832071059390f, -0.623661117525694530f, 0.781216260106276090f, + -0.624260486452220650f, + 0.780737228572094490f, -0.624859488142386340f, 0.780257737750316590f, + -0.625458122243814360f, + 0.779777787923014550f, -0.626056388404343520f, 0.779297379372530300f, + -0.626654286272029350f, + 0.778816512381475980f, -0.627251815495144080f, 0.778335187232733210f, + -0.627848975722176460f, + 0.777853404209453150f, -0.628445766601832710f, 0.777371163595056310f, + -0.629042187783036000f, + 0.776888465673232440f, -0.629638238914926980f, 0.776405310727940390f, + -0.630233919646864370f, + 0.775921699043407690f, -0.630829229628424470f, 0.775437630904130540f, + -0.631424168509401860f, + 0.774953106594873930f, -0.632018735939809060f, 0.774468126400670860f, + -0.632612931569877410f, + 0.773982690606822900f, -0.633206755050057190f, 0.773496799498899050f, + -0.633800206031017280f, + 0.773010453362736990f, -0.634393284163645490f, 0.772523652484441330f, + -0.634985989099049460f, + 0.772036397150384520f, -0.635578320488556110f, 0.771548687647206300f, + -0.636170277983712170f, + 0.771060524261813820f, -0.636761861236284200f, 0.770571907281380810f, + -0.637353069898259130f, + 0.770082836993347900f, -0.637943903621844060f, 0.769593313685422940f, + -0.638534362059466790f, + 0.769103337645579700f, -0.639124444863775730f, 0.768612909162058380f, + -0.639714151687640450f, + 0.768122028523365420f, -0.640303482184151670f, 0.767630696018273380f, + -0.640892436006621380f, + 0.767138911935820400f, -0.641481012808583160f, 0.766646676565310380f, + -0.642069212243792540f, + 0.766153990196312920f, -0.642657033966226860f, 0.765660853118662500f, + -0.643244477630085850f, + 0.765167265622458960f, -0.643831542889791390f, 0.764673227998067140f, + -0.644418229399988380f, + 0.764178740536116670f, -0.645004536815543930f, 0.763683803527501870f, + -0.645590464791548690f, + 0.763188417263381270f, -0.646176012983316280f, 0.762692582035177980f, + -0.646761181046383920f, + 0.762196298134578900f, -0.647345968636512060f, 0.761699565853535380f, + -0.647930375409685340f, + 0.761202385484261780f, -0.648514401022112440f, 0.760704757319236920f, + -0.649098045130225950f, + 0.760206681651202420f, -0.649681307390683190f, 0.759708158773163440f, + -0.650264187460365850f, + 0.759209188978388070f, -0.650846684996380880f, 0.758709772560407390f, + -0.651428799656059820f, + 0.758209909813015280f, -0.652010531096959500f, 0.757709601030268080f, + -0.652591878976862440f, + 0.757208846506484570f, -0.653172842953776760f, 0.756707646536245670f, + -0.653753422685936060f, + 0.756206001414394540f, -0.654333617831800440f, 0.755703911436035880f, + -0.654913428050056030f, + 0.755201376896536550f, -0.655492852999615350f, 0.754698398091524500f, + -0.656071892339617600f, + 0.754194975316889170f, -0.656650545729428940f, 0.753691108868781210f, + -0.657228812828642540f, + 0.753186799043612520f, -0.657806693297078640f, 0.752682046138055340f, + -0.658384186794785050f, + 0.752176850449042810f, -0.658961292982037320f, 0.751671212273768430f, + -0.659538011519338660f, + 0.751165131909686480f, -0.660114342067420480f, 0.750658609654510700f, + -0.660690284287242300f, + 0.750151645806215070f, -0.661265837839992270f, 0.749644240663033480f, + -0.661841002387086870f, + 0.749136394523459370f, -0.662415777590171780f, 0.748628107686245440f, + -0.662990163111121470f, + 0.748119380450403600f, -0.663564158612039770f, 0.747610213115205150f, + -0.664137763755260010f, + 0.747100605980180130f, -0.664710978203344790f, 0.746590559345117310f, + -0.665283801619087180f, + 0.746080073510063780f, -0.665856233665509720f, 0.745569148775325430f, + -0.666428274005865240f, + 0.745057785441466060f, -0.666999922303637470f, 0.744545983809307370f, + -0.667571178222540310f, + 0.744033744179929290f, -0.668142041426518450f, 0.743521066854669120f, + -0.668712511579747980f, + 0.743007952135121720f, -0.669282588346636010f, 0.742494400323139180f, + -0.669852271391821020f, + 0.741980411720831070f, -0.670421560380173090f, 0.741465986630563290f, + -0.670990454976794220f, + 0.740951125354959110f, -0.671558954847018330f, 0.740435828196898020f, + -0.672127059656411730f, + 0.739920095459516200f, -0.672694769070772860f, 0.739403927446205760f, + -0.673262082756132970f, + 0.738887324460615110f, -0.673829000378756040f, 0.738370286806648620f, + -0.674395521605139050f, + 0.737852814788465980f, -0.674961646102011930f, 0.737334908710482910f, + -0.675527373536338520f, + 0.736816568877369900f, -0.676092703575315920f, 0.736297795594053170f, + -0.676657635886374950f, + 0.735778589165713590f, -0.677222170137180330f, 0.735258949897786840f, + -0.677786305995631500f, + 0.734738878095963500f, -0.678350043129861470f, 0.734218374066188280f, + -0.678913381208238410f, + 0.733697438114660370f, -0.679476319899364970f, 0.733176070547832740f, + -0.680038858872078930f, + 0.732654271672412820f, -0.680600997795453020f, 0.732132041795361290f, + -0.681162736338795430f, + 0.731609381223892630f, -0.681724074171649710f, 0.731086290265474340f, + -0.682285010963795570f, + 0.730562769227827590f, -0.682845546385248080f, 0.730038818418926260f, + -0.683405680106258680f, + 0.729514438146997010f, -0.683965411797315400f, 0.728989628720519420f, + -0.684524741129142300f, + 0.728464390448225200f, -0.685083667772700360f, 0.727938723639098620f, + -0.685642191399187470f, + 0.727412628602375770f, -0.686200311680038590f, 0.726886105647544970f, + -0.686758028286925890f, + 0.726359155084346010f, -0.687315340891759050f, 0.725831777222770370f, + -0.687872249166685550f, + 0.725303972373060770f, -0.688428752784090440f, 0.724775740845711280f, + -0.688984851416597040f, + 0.724247082951467000f, -0.689540544737066830f, 0.723717999001323500f, + -0.690095832418599950f, + 0.723188489306527460f, -0.690650714134534600f, 0.722658554178575610f, + -0.691205189558448450f, + 0.722128193929215350f, -0.691759258364157750f, 0.721597408870443770f, + -0.692312920225718220f, + 0.721066199314508110f, -0.692866174817424630f, 0.720534565573905270f, + -0.693419021813811760f, + 0.720002507961381650f, -0.693971460889654000f, 0.719470026789932990f, + -0.694523491719965520f, + 0.718937122372804490f, -0.695075113980000880f, 0.718403795023489830f, + -0.695626327345254870f, + 0.717870045055731710f, -0.696177131491462990f, 0.717335872783521730f, + -0.696727526094601200f, + 0.716801278521099540f, -0.697277510830886520f, 0.716266262582953120f, + -0.697827085376777290f, + 0.715730825283818590f, -0.698376249408972920f, 0.715194966938680120f, + -0.698925002604414150f, + 0.714658687862769090f, -0.699473344640283770f, 0.714121988371564820f, + -0.700021275194006250f, + 0.713584868780793640f, -0.700568793943248340f, 0.713047329406429340f, + -0.701115900565918660f, + 0.712509370564692320f, -0.701662594740168450f, 0.711970992572050100f, + -0.702208876144391870f, + 0.711432195745216430f, -0.702754744457225300f, 0.710892980401151680f, + -0.703300199357548730f, + 0.710353346857062420f, -0.703845240524484940f, 0.709813295430400840f, + -0.704389867637400410f, + 0.709272826438865690f, -0.704934080375904880f, 0.708731940200400650f, + -0.705477878419852100f, + 0.708190637033195400f, -0.706021261449339740f, 0.707648917255684350f, + -0.706564229144709510f, + 0.707106781186547570f, -0.707106781186547460f, 0.706564229144709620f, + -0.707648917255684350f, + 0.706021261449339740f, -0.708190637033195290f, 0.705477878419852210f, + -0.708731940200400650f, + 0.704934080375904990f, -0.709272826438865580f, 0.704389867637400410f, + -0.709813295430400840f, + 0.703845240524484940f, -0.710353346857062310f, 0.703300199357548730f, + -0.710892980401151680f, + 0.702754744457225300f, -0.711432195745216430f, 0.702208876144391870f, + -0.711970992572049990f, + 0.701662594740168570f, -0.712509370564692320f, 0.701115900565918660f, + -0.713047329406429230f, + 0.700568793943248450f, -0.713584868780793520f, 0.700021275194006360f, + -0.714121988371564710f, + 0.699473344640283770f, -0.714658687862768980f, 0.698925002604414150f, + -0.715194966938680010f, + 0.698376249408972920f, -0.715730825283818590f, 0.697827085376777290f, + -0.716266262582953120f, + 0.697277510830886630f, -0.716801278521099540f, 0.696727526094601200f, + -0.717335872783521730f, + 0.696177131491462990f, -0.717870045055731710f, 0.695626327345254870f, + -0.718403795023489720f, + 0.695075113980000880f, -0.718937122372804380f, 0.694523491719965520f, + -0.719470026789932990f, + 0.693971460889654000f, -0.720002507961381650f, 0.693419021813811880f, + -0.720534565573905270f, + 0.692866174817424740f, -0.721066199314508110f, 0.692312920225718220f, + -0.721597408870443660f, + 0.691759258364157750f, -0.722128193929215350f, 0.691205189558448450f, + -0.722658554178575610f, + 0.690650714134534720f, -0.723188489306527350f, 0.690095832418599950f, + -0.723717999001323390f, + 0.689540544737066940f, -0.724247082951466890f, 0.688984851416597150f, + -0.724775740845711280f, + 0.688428752784090550f, -0.725303972373060660f, 0.687872249166685550f, + -0.725831777222770370f, + 0.687315340891759160f, -0.726359155084346010f, 0.686758028286925890f, + -0.726886105647544970f, + 0.686200311680038700f, -0.727412628602375770f, 0.685642191399187470f, + -0.727938723639098620f, + 0.685083667772700360f, -0.728464390448225200f, 0.684524741129142300f, + -0.728989628720519310f, + 0.683965411797315510f, -0.729514438146996900f, 0.683405680106258790f, + -0.730038818418926150f, + 0.682845546385248080f, -0.730562769227827590f, 0.682285010963795570f, + -0.731086290265474230f, + 0.681724074171649820f, -0.731609381223892520f, 0.681162736338795430f, + -0.732132041795361290f, + 0.680600997795453130f, -0.732654271672412820f, 0.680038858872079040f, + -0.733176070547832740f, + 0.679476319899365080f, -0.733697438114660260f, 0.678913381208238410f, + -0.734218374066188170f, + 0.678350043129861580f, -0.734738878095963390f, 0.677786305995631500f, + -0.735258949897786730f, + 0.677222170137180450f, -0.735778589165713480f, 0.676657635886374950f, + -0.736297795594053060f, + 0.676092703575316030f, -0.736816568877369790f, 0.675527373536338630f, + -0.737334908710482790f, + 0.674961646102012040f, -0.737852814788465980f, 0.674395521605139050f, + -0.738370286806648510f, + 0.673829000378756150f, -0.738887324460615110f, 0.673262082756132970f, + -0.739403927446205760f, + 0.672694769070772970f, -0.739920095459516090f, 0.672127059656411840f, + -0.740435828196898020f, + 0.671558954847018330f, -0.740951125354959110f, 0.670990454976794220f, + -0.741465986630563290f, + 0.670421560380173090f, -0.741980411720830960f, 0.669852271391821130f, + -0.742494400323139180f, + 0.669282588346636010f, -0.743007952135121720f, 0.668712511579748090f, + -0.743521066854669120f, + 0.668142041426518560f, -0.744033744179929180f, 0.667571178222540310f, + -0.744545983809307250f, + 0.666999922303637470f, -0.745057785441465950f, 0.666428274005865350f, + -0.745569148775325430f, + 0.665856233665509720f, -0.746080073510063780f, 0.665283801619087180f, + -0.746590559345117310f, + 0.664710978203344900f, -0.747100605980180130f, 0.664137763755260010f, + -0.747610213115205150f, + 0.663564158612039880f, -0.748119380450403490f, 0.662990163111121470f, + -0.748628107686245330f, + 0.662415777590171780f, -0.749136394523459260f, 0.661841002387086870f, + -0.749644240663033480f, + 0.661265837839992270f, -0.750151645806214960f, 0.660690284287242300f, + -0.750658609654510590f, + 0.660114342067420480f, -0.751165131909686370f, 0.659538011519338770f, + -0.751671212273768430f, + 0.658961292982037320f, -0.752176850449042700f, 0.658384186794785050f, + -0.752682046138055230f, + 0.657806693297078640f, -0.753186799043612410f, 0.657228812828642650f, + -0.753691108868781210f, + 0.656650545729429050f, -0.754194975316889170f, 0.656071892339617710f, + -0.754698398091524390f, + 0.655492852999615460f, -0.755201376896536550f, 0.654913428050056150f, + -0.755703911436035880f, + 0.654333617831800550f, -0.756206001414394540f, 0.653753422685936170f, + -0.756707646536245670f, + 0.653172842953776760f, -0.757208846506484460f, 0.652591878976862550f, + -0.757709601030268080f, + 0.652010531096959500f, -0.758209909813015280f, 0.651428799656059820f, + -0.758709772560407390f, + 0.650846684996380990f, -0.759209188978387960f, 0.650264187460365960f, + -0.759708158773163440f, + 0.649681307390683190f, -0.760206681651202420f, 0.649098045130226060f, + -0.760704757319236920f, + 0.648514401022112550f, -0.761202385484261780f, 0.647930375409685460f, + -0.761699565853535270f, + 0.647345968636512060f, -0.762196298134578900f, 0.646761181046383920f, + -0.762692582035177870f, + 0.646176012983316390f, -0.763188417263381270f, 0.645590464791548800f, + -0.763683803527501870f, + 0.645004536815544040f, -0.764178740536116670f, 0.644418229399988380f, + -0.764673227998067140f, + 0.643831542889791500f, -0.765167265622458960f, 0.643244477630085850f, + -0.765660853118662390f, + 0.642657033966226860f, -0.766153990196312810f, 0.642069212243792540f, + -0.766646676565310380f, + 0.641481012808583160f, -0.767138911935820400f, 0.640892436006621380f, + -0.767630696018273270f, + 0.640303482184151670f, -0.768122028523365310f, 0.639714151687640450f, + -0.768612909162058270f, + 0.639124444863775730f, -0.769103337645579590f, 0.638534362059466790f, + -0.769593313685422940f, + 0.637943903621844170f, -0.770082836993347900f, 0.637353069898259130f, + -0.770571907281380700f, + 0.636761861236284200f, -0.771060524261813710f, 0.636170277983712170f, + -0.771548687647206300f, + 0.635578320488556230f, -0.772036397150384410f, 0.634985989099049460f, + -0.772523652484441330f, + 0.634393284163645490f, -0.773010453362736990f, 0.633800206031017280f, + -0.773496799498899050f, + 0.633206755050057190f, -0.773982690606822790f, 0.632612931569877520f, + -0.774468126400670860f, + 0.632018735939809060f, -0.774953106594873820f, 0.631424168509401860f, + -0.775437630904130430f, + 0.630829229628424470f, -0.775921699043407580f, 0.630233919646864480f, + -0.776405310727940390f, + 0.629638238914927100f, -0.776888465673232440f, 0.629042187783036000f, + -0.777371163595056200f, + 0.628445766601832710f, -0.777853404209453040f, 0.627848975722176570f, + -0.778335187232733090f, + 0.627251815495144190f, -0.778816512381475870f, 0.626654286272029460f, + -0.779297379372530300f, + 0.626056388404343520f, -0.779777787923014440f, 0.625458122243814360f, + -0.780257737750316590f, + 0.624859488142386450f, -0.780737228572094380f, 0.624260486452220650f, + -0.781216260106276090f, + 0.623661117525694640f, -0.781694832071059390f, 0.623061381715401370f, + -0.782172944184912900f, + 0.622461279374150080f, -0.782650596166575730f, 0.621860810854965360f, + -0.783127787735057310f, + 0.621259976511087660f, -0.783604518609638200f, 0.620658776695972140f, + -0.784080788509869950f, + 0.620057211763289210f, -0.784556597155575240f, 0.619455282066924020f, + -0.785031944266848080f, + 0.618852987960976320f, -0.785506829564053930f, 0.618250329799760250f, + -0.785981252767830150f, + 0.617647307937803980f, -0.786455213599085770f, 0.617043922729849760f, + -0.786928711779001700f, + 0.616440174530853650f, -0.787401747029031320f, 0.615836063695985090f, + -0.787874319070900110f, + 0.615231590580626820f, -0.788346427626606230f, 0.614626755540375050f, + -0.788818072418420170f, + 0.614021558931038490f, -0.789289253168885650f, 0.613416001108638590f, + -0.789759969600819070f, + 0.612810082429409710f, -0.790230221437310030f, 0.612203803249798060f, + -0.790700008401721610f, + 0.611597163926462020f, -0.791169330217690090f, 0.610990164816271770f, + -0.791638186609125770f, + 0.610382806276309480f, -0.792106577300212390f, 0.609775088663868430f, + -0.792574502015407580f, + 0.609167012336453210f, -0.793041960479443640f, 0.608558577651779450f, + -0.793508952417326660f, + 0.607949784967773740f, -0.793975477554337170f, 0.607340634642572930f, + -0.794441535616030590f, + 0.606731127034524480f, -0.794907126328237010f, 0.606121262502186230f, + -0.795372249417061190f, + 0.605511041404325550f, -0.795836904608883460f, 0.604900464099919930f, + -0.796301091630359110f, + 0.604289530948156070f, -0.796764810208418720f, 0.603678242308430370f, + -0.797228060070268700f, + 0.603066598540348280f, -0.797690840943391040f, 0.602454600003723860f, + -0.798153152555543750f, + 0.601842247058580030f, -0.798614994634760820f, 0.601229540065148620f, + -0.799076366909352350f, + 0.600616479383868970f, -0.799537269107905010f, 0.600003065375389060f, + -0.799997700959281910f, + 0.599389298400564540f, -0.800457662192622710f, 0.598775178820458720f, + -0.800917152537344300f, + 0.598160706996342380f, -0.801376171723140130f, 0.597545883289693270f, + -0.801834719479981310f, + 0.596930708062196500f, -0.802292795538115720f, 0.596315181675743820f, + -0.802750399628069160f, + 0.595699304492433470f, -0.803207531480644830f, 0.595083076874569960f, + -0.803664190826924090f, + 0.594466499184664540f, -0.804120377398265700f, 0.593849571785433630f, + -0.804576090926307000f, + 0.593232295039799800f, -0.805031331142963660f, 0.592614669310891130f, + -0.805486097780429120f, + 0.591996694962040990f, -0.805940390571176280f, 0.591378372356787580f, + -0.806394209247956240f, + 0.590759701858874280f, -0.806847553543799220f, 0.590140683832248940f, + -0.807300423192014450f, + 0.589521318641063940f, -0.807752817926190360f, 0.588901606649675840f, + -0.808204737480194720f, + 0.588281548222645330f, -0.808656181588174980f, 0.587661143724736770f, + -0.809107149984558130f, + 0.587040393520918080f, -0.809557642404051260f, 0.586419297976360500f, + -0.810007658581641140f, + 0.585797857456438860f, -0.810457198252594770f, 0.585176072326730410f, + -0.810906261152459670f, + 0.584553942953015330f, -0.811354847017063730f, 0.583931469701276300f, + -0.811802955582515360f, + 0.583308652937698290f, -0.812250586585203880f, 0.582685493028668460f, + -0.812697739761799490f, + 0.582061990340775550f, -0.813144414849253590f, 0.581438145240810280f, + -0.813590611584798510f, + 0.580813958095764530f, -0.814036329705948300f, 0.580189429272831680f, + -0.814481568950498610f, + 0.579564559139405740f, -0.814926329056526620f, 0.578939348063081890f, + -0.815370609762391290f, + 0.578313796411655590f, -0.815814410806733780f, 0.577687904553122800f, + -0.816257731928477390f, + 0.577061672855679550f, -0.816700572866827850f, 0.576435101687721830f, + -0.817142933361272970f, + 0.575808191417845340f, -0.817584813151583710f, 0.575180942414845190f, + -0.818026211977813440f, + 0.574553355047715760f, -0.818467129580298660f, 0.573925429685650750f, + -0.818907565699658950f, + 0.573297166698042320f, -0.819347520076796900f, 0.572668566454481160f, + -0.819786992452898990f, + 0.572039629324757050f, -0.820225982569434690f, 0.571410355678857340f, + -0.820664490168157460f, + 0.570780745886967370f, -0.821102514991104650f, 0.570150800319470300f, + -0.821540056780597610f, + 0.569520519346947250f, -0.821977115279241550f, 0.568889903340175970f, + -0.822413690229926390f, + 0.568258952670131490f, -0.822849781375826320f, 0.567627667707986230f, + -0.823285388460400110f, + 0.566996048825108680f, -0.823720511227391320f, 0.566364096393063950f, + -0.824155149420828570f, + 0.565731810783613230f, -0.824589302785025290f, 0.565099192368714090f, + -0.825022971064580220f, + 0.564466241520519500f, -0.825456154004377440f, 0.563832958611378170f, + -0.825888851349586780f, + 0.563199344013834090f, -0.826321062845663420f, 0.562565398100626560f, + -0.826752788238348520f, + 0.561931121244689470f, -0.827184027273669020f, 0.561296513819151470f, + -0.827614779697938400f, + 0.560661576197336030f, -0.828045045257755800f, 0.560026308752760380f, + -0.828474823700007130f, + 0.559390711859136140f, -0.828904114771864870f, 0.558754785890368310f, + -0.829332918220788250f, + 0.558118531220556100f, -0.829761233794523050f, 0.557481948223991660f, + -0.830189061241102370f, + 0.556845037275160100f, -0.830616400308846200f, 0.556207798748739930f, + -0.831043250746362320f, + 0.555570233019602290f, -0.831469612302545240f, 0.554932340462810370f, + -0.831895484726577590f, + 0.554294121453620110f, -0.832320867767929680f, 0.553655576367479310f, + -0.832745761176359460f, + 0.553016705580027580f, -0.833170164701913190f, 0.552377509467096070f, + -0.833594078094925140f, + 0.551737988404707450f, -0.834017501106018130f, 0.551098142769075430f, + -0.834440433486103190f, + 0.550457972936604810f, -0.834862874986380010f, 0.549817479283891020f, + -0.835284825358337370f, + 0.549176662187719770f, -0.835706284353752600f, 0.548535522025067390f, + -0.836127251724692160f, + 0.547894059173100190f, -0.836547727223511890f, 0.547252274009174090f, + -0.836967710602857020f, + 0.546610166910834860f, -0.837387201615661940f, 0.545967738255817680f, + -0.837806200015150940f, + 0.545324988422046460f, -0.838224705554837970f, 0.544681917787634530f, + -0.838642717988527300f, + 0.544038526730883930f, -0.839060237070312630f, 0.543394815630284800f, + -0.839477262554578550f, + 0.542750784864516000f, -0.839893794195999410f, 0.542106434812444030f, + -0.840309831749540770f, + 0.541461765853123560f, -0.840725374970458070f, 0.540816778365796670f, + -0.841140423614298080f, + 0.540171472729892970f, -0.841554977436898330f, 0.539525849325029010f, + -0.841969036194387680f, + 0.538879908531008420f, -0.842382599643185960f, 0.538233650727821700f, + -0.842795667540004120f, + 0.537587076295645510f, -0.843208239641845440f, 0.536940185614843020f, + -0.843620315706004040f, + 0.536292979065963180f, -0.844031895490066410f, 0.535645457029741090f, + -0.844442978751910660f, + 0.534997619887097260f, -0.844853565249707010f, 0.534349468019137520f, + -0.845263654741918220f, + 0.533701001807152960f, -0.845673246987299070f, 0.533052221632619670f, + -0.846082341744896940f, + 0.532403127877198010f, -0.846490938774052020f, 0.531753720922733320f, + -0.846899037834397350f, + 0.531104001151255000f, -0.847306638685858320f, 0.530453968944976320f, + -0.847713741088654270f, + 0.529803624686294830f, -0.848120344803297120f, 0.529152968757790720f, + -0.848526449590592650f, + 0.528502001542228480f, -0.848932055211639610f, 0.527850723422555460f, + -0.849337161427830670f, + 0.527199134781901390f, -0.849741768000852440f, 0.526547236003579330f, + -0.850145874692685210f, + 0.525895027471084740f, -0.850549481265603370f, 0.525242509568094710f, + -0.850952587482175730f, + 0.524589682678468840f, -0.851355193105265200f, 0.523936547186248600f, + -0.851757297898029120f, + 0.523283103475656430f, -0.852158901623919830f, 0.522629351931096720f, + -0.852560004046683970f, + 0.521975292937154390f, -0.852960604930363630f, 0.521320926878595550f, + -0.853360704039295430f, + 0.520666254140367270f, -0.853760301138111300f, 0.520011275107596040f, + -0.854159395991738730f, + 0.519355990165589530f, -0.854557988365400530f, 0.518700399699835170f, + -0.854956078024614820f, + 0.518044504095999340f, -0.855353664735196030f, 0.517388303739929060f, + -0.855750748263253920f, + 0.516731799017649980f, -0.856147328375194470f, 0.516074990315366630f, + -0.856543404837719960f, + 0.515417878019463150f, -0.856938977417828650f, 0.514760462516501200f, + -0.857334045882815590f, + 0.514102744193221660f, -0.857728610000272120f, 0.513444723436543570f, + -0.858122669538086020f, + 0.512786400633563070f, -0.858516224264442740f, 0.512127776171554690f, + -0.858909273947823900f, + 0.511468850437970520f, -0.859301818357008360f, 0.510809623820439040f, + -0.859693857261072610f, + 0.510150096706766700f, -0.860085390429390140f, 0.509490269484936360f, + -0.860476417631632070f, + 0.508830142543106990f, -0.860866938637767310f, 0.508169716269614710f, + -0.861256953218062060f, + 0.507508991052970870f, -0.861646461143081300f, 0.506847967281863320f, + -0.862035462183687210f, + 0.506186645345155450f, -0.862423956111040500f, 0.505525025631885510f, + -0.862811942696600330f, + 0.504863108531267480f, -0.863199421712124160f, 0.504200894432690560f, + -0.863586392929667990f, + 0.503538383725717580f, -0.863972856121586700f, 0.502875576800086880f, + -0.864358811060534030f, + 0.502212474045710900f, -0.864744257519462380f, 0.501549075852675390f, + -0.865129195271623690f, + 0.500885382611240940f, -0.865513624090568980f, 0.500221394711840680f, + -0.865897543750148820f, + 0.499557112545081890f, -0.866280954024512990f, 0.498892536501744750f, + -0.866663854688111020f, + 0.498227666972781870f, -0.867046245515692650f, 0.497562504349319090f, + -0.867428126282306920f, + 0.496897049022654640f, -0.867809496763303210f, 0.496231301384258310f, + -0.868190356734331310f, + 0.495565261825772490f, -0.868570705971340900f, 0.494898930739011310f, + -0.868950544250582380f, + 0.494232308515959730f, -0.869329871348606730f, 0.493565395548774880f, + -0.869708687042265560f, + 0.492898192229784090f, -0.870086991108711350f, 0.492230698951486080f, + -0.870464783325397670f, + 0.491562916106550060f, -0.870842063470078860f, 0.490894844087815140f, + -0.871218831320810900f, + 0.490226483288291100f, -0.871595086655951090f, 0.489557834101157550f, + -0.871970829254157700f, + 0.488888896919763230f, -0.872346058894391540f, 0.488219672137626740f, + -0.872720775355914300f, + 0.487550160148436050f, -0.873094978418290090f, 0.486880361346047400f, + -0.873468667861384880f, + 0.486210276124486530f, -0.873841843465366750f, 0.485539904877947020f, + -0.874214505010706300f, + 0.484869248000791120f, -0.874586652278176110f, 0.484198305887549140f, + -0.874958285048851540f, + 0.483527078932918740f, -0.875329403104110780f, 0.482855567531765670f, + -0.875700006225634600f, + 0.482183772079122830f, -0.876070094195406600f, 0.481511692970189920f, + -0.876439666795713610f, + 0.480839330600333900f, -0.876808723809145760f, 0.480166685365088440f, + -0.877177265018595940f, + 0.479493757660153010f, -0.877545290207261240f, 0.478820547881394050f, + -0.877912799158641730f, + 0.478147056424843120f, -0.878279791656541460f, 0.477473283686698060f, + -0.878646267485068130f, + 0.476799230063322250f, -0.879012226428633410f, 0.476124895951243630f, + -0.879377668271953180f, + 0.475450281747155870f, -0.879742592800047410f, 0.474775387847917230f, + -0.880106999798240360f, + 0.474100214650550020f, -0.880470889052160750f, 0.473424762552241530f, + -0.880834260347742040f, + 0.472749031950342900f, -0.881197113471221980f, 0.472073023242368660f, + -0.881559448209143780f, + 0.471396736825997810f, -0.881921264348354940f, 0.470720173099071710f, + -0.882282561676008600f, + 0.470043332459595620f, -0.882643339979562790f, 0.469366215305737630f, + -0.883003599046780720f, + 0.468688822035827960f, -0.883363338665731580f, 0.468011153048359830f, + -0.883722558624789660f, + 0.467333208741988530f, -0.884081258712634990f, 0.466654989515530970f, + -0.884439438718253700f, + 0.465976495767966130f, -0.884797098430937790f, 0.465297727898434650f, + -0.885154237640285110f, + 0.464618686306237820f, -0.885510856136199950f, 0.463939371390838460f, + -0.885866953708892790f, + 0.463259783551860260f, -0.886222530148880640f, 0.462579923189086810f, + -0.886577585246987040f, + 0.461899790702462840f, -0.886932118794342080f, 0.461219386492092430f, + -0.887286130582383150f, + 0.460538710958240010f, -0.887639620402853930f, 0.459857764501329650f, + -0.887992588047805560f, + 0.459176547521944150f, -0.888345033309596240f, 0.458495060420826220f, + -0.888696955980891710f, + 0.457813303598877290f, -0.889048355854664570f, 0.457131277457156980f, + -0.889399232724195520f, + 0.456448982396883860f, -0.889749586383072890f, 0.455766418819434750f, + -0.890099416625192210f, + 0.455083587126343840f, -0.890448723244757880f, 0.454400487719303750f, + -0.890797506036281490f, + 0.453717121000163930f, -0.891145764794583180f, 0.453033487370931580f, + -0.891493499314791380f, + 0.452349587233771000f, -0.891840709392342720f, 0.451665420991002540f, + -0.892187394822982480f, + 0.450980989045103810f, -0.892533555402764690f, 0.450296291798708730f, + -0.892879190928051680f, + 0.449611329654606600f, -0.893224301195515320f, 0.448926103015743260f, + -0.893568886002136020f, + 0.448240612285220000f, -0.893912945145203250f, 0.447554857866293010f, + -0.894256478422316040f, + 0.446868840162374330f, -0.894599485631382580f, 0.446182559577030120f, + -0.894941966570620750f, + 0.445496016513981740f, -0.895283921038557580f, 0.444809211377105000f, + -0.895625348834030000f, + 0.444122144570429260f, -0.895966249756185110f, 0.443434816498138430f, + -0.896306623604479660f, + 0.442747227564570130f, -0.896646470178680150f, 0.442059378174214760f, + -0.896985789278863970f, + 0.441371268731716620f, -0.897324580705418320f, 0.440682899641873020f, + -0.897662844259040750f, + 0.439994271309633260f, -0.898000579740739880f, 0.439305384140100060f, + -0.898337786951834190f, + 0.438616238538527710f, -0.898674465693953820f, 0.437926834910322860f, + -0.899010615769039070f, + 0.437237173661044200f, -0.899346236979341460f, 0.436547255196401250f, + -0.899681329127423930f, + 0.435857079922255470f, -0.900015892016160280f, 0.435166648244619370f, + -0.900349925448735600f, + 0.434475960569655710f, -0.900683429228646860f, 0.433785017303678520f, + -0.901016403159702330f, + 0.433093818853152010f, -0.901348847046022030f, 0.432402365624690140f, + -0.901680760692037730f, + 0.431710658025057370f, -0.902012143902493070f, 0.431018696461167080f, + -0.902342996482444200f, + 0.430326481340082610f, -0.902673318237258830f, 0.429634013069016500f, + -0.903003108972617040f, + 0.428941292055329550f, -0.903332368494511820f, 0.428248318706531910f, + -0.903661096609247980f, + 0.427555093430282200f, -0.903989293123443340f, 0.426861616634386490f, + -0.904316957844028320f, + 0.426167888726799620f, -0.904644090578246240f, 0.425473910115623910f, + -0.904970691133653250f, + 0.424779681209108810f, -0.905296759318118820f, 0.424085202415651670f, + -0.905622294939825160f, + 0.423390474143796100f, -0.905947297807268460f, 0.422695496802232950f, + -0.906271767729257660f, + 0.422000270799799790f, -0.906595704514915330f, 0.421304796545479700f, + -0.906919107973678030f, + 0.420609074448402510f, -0.907241977915295930f, 0.419913104917843730f, + -0.907564314149832520f, + 0.419216888363223960f, -0.907886116487666150f, 0.418520425194109700f, + -0.908207384739488700f, + 0.417823715820212380f, -0.908528118716306120f, 0.417126760651387870f, + -0.908848318229439120f, + 0.416429560097637320f, -0.909167983090522270f, 0.415732114569105420f, + -0.909487113111505430f, + 0.415034424476081630f, -0.909805708104652220f, 0.414336490228999210f, + -0.910123767882541570f, + 0.413638312238434560f, -0.910441292258067140f, 0.412939890915108020f, + -0.910758281044437570f, + 0.412241226669883000f, -0.911074734055176250f, 0.411542319913765280f, + -0.911390651104122320f, + 0.410843171057903910f, -0.911706032005429880f, 0.410143780513590350f, + -0.912020876573568230f, + 0.409444148692257590f, -0.912335184623322750f, 0.408744276005481520f, + -0.912648955969793900f, + 0.408044162864978740f, -0.912962190428398100f, 0.407343809682607970f, + -0.913274887814867760f, + 0.406643216870369140f, -0.913587047945250810f, 0.405942384840402570f, + -0.913898670635911680f, + 0.405241314004989860f, -0.914209755703530690f, 0.404540004776553110f, + -0.914520302965104450f, + 0.403838457567654130f, -0.914830312237946090f, 0.403136672790995240f, + -0.915139783339685260f, + 0.402434650859418540f, -0.915448716088267830f, 0.401732392185905010f, + -0.915757110301956720f, + 0.401029897183575790f, -0.916064965799331610f, 0.400327166265690150f, + -0.916372282399289140f, + 0.399624199845646790f, -0.916679059921042700f, 0.398920998336983020f, + -0.916985298184122890f, + 0.398217562153373620f, -0.917290997008377910f, 0.397513891708632330f, + -0.917596156213972950f, + 0.396809987416710420f, -0.917900775621390390f, 0.396105849691696320f, + -0.918204855051430900f, + 0.395401478947816300f, -0.918508394325212250f, 0.394696875599433670f, + -0.918811393264169940f, + 0.393992040061048100f, -0.919113851690057770f, 0.393286972747296570f, + -0.919415769424946960f, + 0.392581674072951530f, -0.919717146291227360f, 0.391876144452922350f, + -0.920017982111606570f, + 0.391170384302253980f, -0.920318276709110480f, 0.390464394036126650f, + -0.920618029907083860f, + 0.389758174069856410f, -0.920917241529189520f, 0.389051724818894500f, + -0.921215911399408730f, + 0.388345046698826300f, -0.921514039342041900f, 0.387638140125372680f, + -0.921811625181708120f, + 0.386931005514388690f, -0.922108668743345070f, 0.386223643281862980f, + -0.922405169852209880f, + 0.385516053843919020f, -0.922701128333878520f, 0.384808237616812930f, + -0.922996544014246250f, + 0.384100195016935040f, -0.923291416719527640f, 0.383391926460808770f, + -0.923585746276256560f, + 0.382683432365089840f, -0.923879532511286740f, 0.381974713146567220f, + -0.924172775251791200f, + 0.381265769222162490f, -0.924465474325262600f, 0.380556601008928570f, + -0.924757629559513910f, + 0.379847208924051110f, -0.925049240782677580f, 0.379137593384847430f, + -0.925340307823206200f, + 0.378427754808765620f, -0.925630830509872720f, 0.377717693613385810f, + -0.925920808671769960f, + 0.377007410216418310f, -0.926210242138311270f, 0.376296905035704790f, + -0.926499130739230510f, + 0.375586178489217330f, -0.926787474304581750f, 0.374875230995057600f, + -0.927075272664740100f, + 0.374164062971457990f, -0.927362525650401110f, 0.373452674836780410f, + -0.927649233092581180f, + 0.372741067009515810f, -0.927935394822617890f, 0.372029239908284960f, + -0.928221010672169440f, + 0.371317193951837600f, -0.928506080473215480f, 0.370604929559051670f, + -0.928790604058057020f, + 0.369892447148934270f, -0.929074581259315750f, 0.369179747140620070f, + -0.929358011909935500f, + 0.368466829953372320f, -0.929640895843181330f, 0.367753696006582090f, + -0.929923232892639560f, + 0.367040345719767240f, -0.930205022892219070f, 0.366326779512573590f, + -0.930486265676149780f, + 0.365612997804773960f, -0.930766961078983710f, 0.364899001016267380f, + -0.931047108935595170f, + 0.364184789567079840f, -0.931326709081180430f, 0.363470363877363870f, + -0.931605761351257830f, + 0.362755724367397230f, -0.931884265581668150f, 0.362040871457584350f, + -0.932162221608574320f, + 0.361325805568454340f, -0.932439629268462360f, 0.360610527120662270f, + -0.932716488398140250f, + 0.359895036534988280f, -0.932992798834738850f, 0.359179334232336560f, + -0.933268560415712050f, + 0.358463420633736540f, -0.933543772978836170f, 0.357747296160342010f, + -0.933818436362210960f, + 0.357030961233430030f, -0.934092550404258870f, 0.356314416274402360f, + -0.934366114943725900f, + 0.355597661704783960f, -0.934639129819680780f, 0.354880697946222790f, + -0.934911594871516090f, + 0.354163525420490510f, -0.935183509938947500f, 0.353446144549480870f, + -0.935454874862014620f, + 0.352728555755210730f, -0.935725689481080370f, 0.352010759459819240f, + -0.935995953636831300f, + 0.351292756085567150f, -0.936265667170278260f, 0.350574546054837570f, + -0.936534829922755500f, + 0.349856129790135030f, -0.936803441735921560f, 0.349137507714085030f, + -0.937071502451759190f, + 0.348418680249434510f, -0.937339011912574960f, 0.347699647819051490f, + -0.937605969960999990f, + 0.346980410845923680f, -0.937872376439989890f, 0.346260969753160170f, + -0.938138231192824360f, + 0.345541324963989150f, -0.938403534063108060f, 0.344821476901759290f, + -0.938668284894770170f, + 0.344101425989938980f, -0.938932483532064490f, 0.343381172652115100f, + -0.939196129819569900f, + 0.342660717311994380f, -0.939459223602189920f, 0.341940060393402300f, + -0.939721764725153340f, + 0.341219202320282410f, -0.939983753034013940f, 0.340498143516697100f, + -0.940245188374650880f, + 0.339776884406826960f, -0.940506070593268300f, 0.339055425414969640f, + -0.940766399536396070f, + 0.338333766965541290f, -0.941026175050889260f, 0.337611909483074680f, + -0.941285396983928660f, + 0.336889853392220050f, -0.941544065183020810f, 0.336167599117744690f, + -0.941802179495997650f, + 0.335445147084531660f, -0.942059739771017310f, 0.334722497717581220f, + -0.942316745856563780f, + 0.333999651442009490f, -0.942573197601446870f, 0.333276608683047980f, + -0.942829094854802710f, + 0.332553369866044220f, -0.943084437466093490f, 0.331829935416461220f, + -0.943339225285107720f, + 0.331106305759876430f, -0.943593458161960390f, 0.330382481321982950f, + -0.943847135947092690f, + 0.329658462528587550f, -0.944100258491272660f, 0.328934249805612200f, + -0.944352825645594750f, + 0.328209843579092660f, -0.944604837261480260f, 0.327485244275178060f, + -0.944856293190677210f, + 0.326760452320131790f, -0.945107193285260610f, 0.326035468140330350f, + -0.945357537397632290f, + 0.325310292162262980f, -0.945607325380521280f, 0.324584924812532150f, + -0.945856557086983910f, + 0.323859366517852960f, -0.946105232370403340f, 0.323133617705052330f, + -0.946353351084490590f, + 0.322407678801070020f, -0.946600913083283530f, 0.321681550232956640f, + -0.946847918221148000f, + 0.320955232427875210f, -0.947094366352777220f, 0.320228725813100020f, + -0.947340257333191940f, + 0.319502030816015750f, -0.947585591017741090f, 0.318775147864118480f, + -0.947830367262101010f, + 0.318048077385015060f, -0.948074585922276230f, 0.317320819806421790f, + -0.948318246854599090f, + 0.316593375556165850f, -0.948561349915730270f, 0.315865745062184070f, + -0.948803894962658380f, + 0.315137928752522440f, -0.949045881852700560f, 0.314409927055336820f, + -0.949287310443502010f, + 0.313681740398891570f, -0.949528180593036670f, 0.312953369211560200f, + -0.949768492159606680f, + 0.312224813921825050f, -0.950008245001843000f, 0.311496074958275970f, + -0.950247438978705230f, + 0.310767152749611470f, -0.950486073949481700f, 0.310038047724638000f, + -0.950724149773789610f, + 0.309308760312268780f, -0.950961666311575080f, 0.308579290941525030f, + -0.951198623423113230f, + 0.307849640041534980f, -0.951435020969008340f, 0.307119808041533100f, + -0.951670858810193860f, + 0.306389795370861080f, -0.951906136807932230f, 0.305659602458966230f, + -0.952140854823815830f, + 0.304929229735402430f, -0.952375012719765880f, 0.304198677629829270f, + -0.952608610358033240f, + 0.303467946572011370f, -0.952841647601198720f, 0.302737036991819140f, + -0.953074124312172200f, + 0.302005949319228200f, -0.953306040354193750f, 0.301274683984318000f, + -0.953537395590833280f, + 0.300543241417273400f, -0.953768189885990330f, 0.299811622048383460f, + -0.953998423103894490f, + 0.299079826308040480f, -0.954228095109105670f, 0.298347854626741570f, + -0.954457205766513490f, + 0.297615707435086310f, -0.954685754941338340f, 0.296883385163778270f, + -0.954913742499130520f, + 0.296150888243623960f, -0.955141168305770670f, 0.295418217105532070f, + -0.955368032227470240f, + 0.294685372180514330f, -0.955594334130771110f, 0.293952353899684770f, + -0.955820073882545420f, + 0.293219162694258680f, -0.956045251349996410f, 0.292485798995553830f, + -0.956269866400658140f, + 0.291752263234989370f, -0.956493918902394990f, 0.291018555844085090f, + -0.956717408723403050f, + 0.290284677254462330f, -0.956940335732208940f, 0.289550627897843140f, + -0.957162699797670100f, + 0.288816408206049480f, -0.957384500788975860f, 0.288082018611004300f, + -0.957605738575646240f, + 0.287347459544729570f, -0.957826413027532910f, 0.286612731439347790f, + -0.958046524014818600f, + 0.285877834727080730f, -0.958266071408017670f, 0.285142769840248720f, + -0.958485055077976100f, + 0.284407537211271820f, -0.958703474895871600f, 0.283672137272668550f, + -0.958921330733213060f, + 0.282936570457055390f, -0.959138622461841890f, 0.282200837197147500f, + -0.959355349953930790f, + 0.281464937925758050f, -0.959571513081984520f, 0.280728873075797190f, + -0.959787111718839900f, + 0.279992643080273380f, -0.960002145737665850f, 0.279256248372291240f, + -0.960216615011963430f, + 0.278519689385053060f, -0.960430519415565790f, 0.277782966551857800f, + -0.960643858822638470f, + 0.277046080306099950f, -0.960856633107679660f, 0.276309031081271030f, + -0.961068842145519350f, + 0.275571819310958250f, -0.961280485811320640f, 0.274834445428843940f, + -0.961491563980579000f, + 0.274096909868706330f, -0.961702076529122540f, 0.273359213064418790f, + -0.961912023333112100f, + 0.272621355449948980f, -0.962121404269041580f, 0.271883337459359890f, + -0.962330219213737400f, + 0.271145159526808070f, -0.962538468044359160f, 0.270406822086544820f, + -0.962746150638399410f, + 0.269668325572915200f, -0.962953266873683880f, 0.268929670420357310f, + -0.963159816628371360f, + 0.268190857063403180f, -0.963365799780954050f, 0.267451885936677740f, + -0.963571216210257210f, + 0.266712757474898420f, -0.963776065795439840f, 0.265973472112875530f, + -0.963980348415994110f, + 0.265234030285511900f, -0.964184063951745720f, 0.264494432427801630f, + -0.964387212282854290f, + 0.263754678974831510f, -0.964589793289812650f, 0.263014770361779060f, + -0.964791806853447900f, + 0.262274707023913590f, -0.964993252854920320f, 0.261534489396595630f, + -0.965194131175724720f, + 0.260794117915275570f, -0.965394441697689400f, 0.260053593015495130f, + -0.965594184302976830f, + 0.259312915132886350f, -0.965793358874083570f, 0.258572084703170390f, + -0.965991965293840570f, + 0.257831102162158930f, -0.966190003445412620f, 0.257089967945753230f, + -0.966387473212298790f, + 0.256348682489942910f, -0.966584374478333120f, 0.255607246230807550f, + -0.966780707127683270f, + 0.254865659604514630f, -0.966976471044852070f, 0.254123923047320620f, + -0.967171666114676640f, + 0.253382036995570270f, -0.967366292222328510f, 0.252640001885695580f, + -0.967560349253314360f, + 0.251897818154216910f, -0.967753837093475510f, 0.251155486237742030f, + -0.967946755628987800f, + 0.250413006572965280f, -0.968139104746362330f, 0.249670379596668520f, + -0.968330884332445300f, + 0.248927605745720260f, -0.968522094274417270f, 0.248184685457074780f, + -0.968712734459794780f, + 0.247441619167773440f, -0.968902804776428870f, 0.246698407314942500f, + -0.969092305112506100f, + 0.245955050335794590f, -0.969281235356548530f, 0.245211548667627680f, + -0.969469595397412950f, + 0.244467902747824210f, -0.969657385124292450f, 0.243724113013852130f, + -0.969844604426714830f, + 0.242980179903263980f, -0.970031253194543970f, 0.242236103853696070f, + -0.970217331317979160f, + 0.241491885302869300f, -0.970402838687555500f, 0.240747524688588540f, + -0.970587775194143630f, + 0.240003022448741500f, -0.970772140728950350f, 0.239258379021300120f, + -0.970955935183517970f, + 0.238513594844318500f, -0.971139158449725090f, 0.237768670355934210f, + -0.971321810419786160f, + 0.237023605994367340f, -0.971503890986251780f, 0.236278402197919620f, + -0.971685400042008540f, + 0.235533059404975460f, -0.971866337480279400f, 0.234787578054001080f, + -0.972046703194623500f, + 0.234041958583543460f, -0.972226497078936270f, 0.233296201432231560f, + -0.972405719027449770f, + 0.232550307038775330f, -0.972584368934732210f, 0.231804275841964780f, + -0.972762446695688570f, + 0.231058108280671280f, -0.972939952205560070f, 0.230311804793845530f, + -0.973116885359925130f, + 0.229565365820518870f, -0.973293246054698250f, 0.228818791799802360f, + -0.973469034186130950f, + 0.228072083170885790f, -0.973644249650811870f, 0.227325240373038830f, + -0.973818892345666100f, + 0.226578263845610110f, -0.973992962167955830f, 0.225831154028026200f, + -0.974166459015280320f, + 0.225083911359792780f, -0.974339382785575860f, 0.224336536280493690f, + -0.974511733377115720f, + 0.223589029229790020f, -0.974683510688510670f, 0.222841390647421280f, + -0.974854714618708430f, + 0.222093620973203590f, -0.975025345066994120f, 0.221345720647030810f, + -0.975195401932990370f, + 0.220597690108873650f, -0.975364885116656870f, 0.219849529798778750f, + -0.975533794518291360f, + 0.219101240156869770f, -0.975702130038528570f, 0.218352821623346430f, + -0.975869891578341030f, + 0.217604274638483670f, -0.976037079039039020f, 0.216855599642632570f, + -0.976203692322270560f, + 0.216106797076219600f, -0.976369731330021140f, 0.215357867379745550f, + -0.976535195964614470f, + 0.214608810993786920f, -0.976700086128711840f, 0.213859628358993830f, + -0.976864401725312640f, + 0.213110319916091360f, -0.977028142657754390f, 0.212360886105878580f, + -0.977191308829712280f, + 0.211611327369227610f, -0.977353900145199960f, 0.210861644147084830f, + -0.977515916508569280f, + 0.210111836880469720f, -0.977677357824509930f, 0.209361906010474190f, + -0.977838223998050430f, + 0.208611851978263460f, -0.977998514934557140f, 0.207861675225075150f, + -0.978158230539735050f, + 0.207111376192218560f, -0.978317370719627650f, 0.206360955321075680f, + -0.978475935380616830f, + 0.205610413053099320f, -0.978633924429423100f, 0.204859749829814420f, + -0.978791337773105670f, + 0.204108966092817010f, -0.978948175319062200f, 0.203358062283773370f, + -0.979104436975029250f, + 0.202607038844421110f, -0.979260122649082020f, 0.201855896216568160f, + -0.979415232249634780f, + 0.201104634842091960f, -0.979569765685440520f, 0.200353255162940420f, + -0.979723722865591170f, + 0.199601757621131050f, -0.979877103699517640f, 0.198850142658750120f, + -0.980029908096989980f, + 0.198098410717953730f, -0.980182135968117320f, 0.197346562240966000f, + -0.980333787223347960f, + 0.196594597670080220f, -0.980484861773469380f, 0.195842517447657990f, + -0.980635359529608120f, + 0.195090322016128330f, -0.980785280403230430f, 0.194338011817988600f, + -0.980934624306141640f, + 0.193585587295803750f, -0.981083391150486590f, 0.192833048892205290f, + -0.981231580848749730f, + 0.192080397049892380f, -0.981379193313754560f, 0.191327632211630990f, + -0.981526228458664660f, + 0.190574754820252800f, -0.981672686196983110f, 0.189821765318656580f, + -0.981818566442552500f, + 0.189068664149806280f, -0.981963869109555240f, 0.188315451756732120f, + -0.982108594112513610f, + 0.187562128582529740f, -0.982252741366289370f, 0.186808695070359330f, + -0.982396310786084690f, + 0.186055151663446630f, -0.982539302287441240f, 0.185301498805082040f, + -0.982681715786240860f, + 0.184547736938619640f, -0.982823551198705240f, 0.183793866507478390f, + -0.982964808441396440f, + 0.183039887955141060f, -0.983105487431216290f, 0.182285801725153320f, + -0.983245588085407070f, + 0.181531608261125130f, -0.983385110321551180f, 0.180777308006728670f, + -0.983524054057571260f, + 0.180022901405699510f, -0.983662419211730250f, 0.179268388901835880f, + -0.983800205702631490f, + 0.178513770938997590f, -0.983937413449218920f, 0.177759047961107140f, + -0.984074042370776450f, + 0.177004220412148860f, -0.984210092386929030f, 0.176249288736167940f, + -0.984345563417641900f, + 0.175494253377271400f, -0.984480455383220930f, 0.174739114779627310f, + -0.984614768204312600f, + 0.173983873387463850f, -0.984748501801904210f, 0.173228529645070490f, + -0.984881656097323700f, + 0.172473083996796030f, -0.985014231012239840f, 0.171717536887049970f, + -0.985146226468662230f, + 0.170961888760301360f, -0.985277642388941220f, 0.170206140061078120f, + -0.985408478695768420f, + 0.169450291233967930f, -0.985538735312176060f, 0.168694342723617440f, + -0.985668412161537550f, + 0.167938294974731230f, -0.985797509167567370f, 0.167182148432072880f, + -0.985926026254321130f, + 0.166425903540464220f, -0.986053963346195440f, 0.165669560744784140f, + -0.986181320367928270f, + 0.164913120489970090f, -0.986308097244598670f, 0.164156583221015890f, + -0.986434293901627070f, + 0.163399949382973230f, -0.986559910264775410f, 0.162643219420950450f, + -0.986684946260146690f, + 0.161886393780111910f, -0.986809401814185420f, 0.161129472905678780f, + -0.986933276853677710f, + 0.160372457242928400f, -0.987056571305750970f, 0.159615347237193090f, + -0.987179285097874340f, + 0.158858143333861390f, -0.987301418157858430f, 0.158100845978377090f, + -0.987422970413855410f, + 0.157343455616238280f, -0.987543941794359230f, 0.156585972692998590f, + -0.987664332228205710f, + 0.155828397654265320f, -0.987784141644572180f, 0.155070730945700510f, + -0.987903369972977790f, + 0.154312973013020240f, -0.988022017143283530f, 0.153555124301993500f, + -0.988140083085692570f, + 0.152797185258443410f, -0.988257567730749460f, 0.152039156328246160f, + -0.988374471009341280f, + 0.151281037957330250f, -0.988490792852696590f, 0.150522830591677370f, + -0.988606533192386450f, + 0.149764534677321620f, -0.988721691960323780f, 0.149006150660348470f, + -0.988836269088763540f, + 0.148247678986896200f, -0.988950264510302990f, 0.147489120103153680f, + -0.989063678157881540f, + 0.146730474455361750f, -0.989176509964781010f, 0.145971742489812370f, + -0.989288759864625170f, + 0.145212924652847520f, -0.989400427791380380f, 0.144454021390860440f, + -0.989511513679355190f, + 0.143695033150294580f, -0.989622017463200780f, 0.142935960377642700f, + -0.989731939077910570f, + 0.142176803519448000f, -0.989841278458820530f, 0.141417563022303130f, + -0.989950035541608990f, + 0.140658239332849240f, -0.990058210262297120f, 0.139898832897777380f, + -0.990165802557248400f, + 0.139139344163826280f, -0.990272812363169110f, 0.138379773577783890f, + -0.990379239617108160f, + 0.137620121586486180f, -0.990485084256456980f, 0.136860388636816430f, + -0.990590346218950150f, + 0.136100575175706200f, -0.990695025442664630f, 0.135340681650134330f, + -0.990799121866020370f, + 0.134580708507126220f, -0.990902635427780010f, 0.133820656193754690f, + -0.991005566067049370f, + 0.133060525157139180f, -0.991107913723276780f, 0.132300315844444680f, + -0.991209678336254060f, + 0.131540028702883280f, -0.991310859846115440f, 0.130779664179711790f, + -0.991411458193338540f, + 0.130019222722233350f, -0.991511473318743900f, 0.129258704777796270f, + -0.991610905163495370f, + 0.128498110793793220f, -0.991709753669099530f, 0.127737441217662280f, + -0.991808018777406430f, + 0.126976696496885980f, -0.991905700430609330f, 0.126215877078990400f, + -0.992002798571244520f, + 0.125454983411546210f, -0.992099313142191800f, 0.124694015942167770f, + -0.992195244086673920f, + 0.123932975118512200f, -0.992290591348257370f, 0.123171861388280650f, + -0.992385354870851670f, + 0.122410675199216280f, -0.992479534598709970f, 0.121649416999105540f, + -0.992573130476428810f, + 0.120888087235777220f, -0.992666142448948020f, 0.120126686357101580f, + -0.992758570461551140f, + 0.119365214810991350f, -0.992850414459865100f, 0.118603673045400840f, + -0.992941674389860470f, + 0.117842061508325020f, -0.993032350197851410f, 0.117080380647800550f, + -0.993122441830495580f, + 0.116318630911904880f, -0.993211949234794500f, 0.115556812748755290f, + -0.993300872358093280f, + 0.114794926606510250f, -0.993389211148080650f, 0.114032972933367300f, + -0.993476965552789190f, + 0.113270952177564360f, -0.993564135520595300f, 0.112508864787378830f, + -0.993650721000219120f, + 0.111746711211126660f, -0.993736721940724600f, 0.110984491897163380f, + -0.993822138291519660f, + 0.110222207293883180f, -0.993906970002356060f, 0.109459857849718030f, + -0.993991217023329380f, + 0.108697444013138670f, -0.994074879304879370f, 0.107934966232653760f, + -0.994157956797789730f, + 0.107172424956808870f, -0.994240449453187900f, 0.106409820634187840f, + -0.994322357222545810f, + 0.105647153713410700f, -0.994403680057679100f, 0.104884424643134970f, + -0.994484417910747600f, + 0.104121633872054730f, -0.994564570734255420f, 0.103358781848899700f, + -0.994644138481050710f, + 0.102595869022436280f, -0.994723121104325700f, 0.101832895841466670f, + -0.994801518557617110f, + 0.101069862754827880f, -0.994879330794805620f, 0.100306770211392820f, + -0.994956557770116380f, + 0.099543618660069444f, -0.995033199438118630f, 0.098780408549799664f, + -0.995109255753726110f, + 0.098017140329560770f, -0.995184726672196820f, 0.097253814448363354f, + -0.995259612149133390f, + 0.096490431355252607f, -0.995333912140482280f, 0.095726991499307315f, + -0.995407626602534900f, + 0.094963495329639061f, -0.995480755491926940f, 0.094199943295393190f, + -0.995553298765638470f, + 0.093436335845747912f, -0.995625256380994310f, 0.092672673429913366f, + -0.995696628295663520f, + 0.091908956497132696f, -0.995767414467659820f, 0.091145185496681130f, + -0.995837614855341610f, + 0.090381360877865011f, -0.995907229417411720f, 0.089617483090022917f, + -0.995976258112917790f, + 0.088853552582524684f, -0.996044700901251970f, 0.088089569804770507f, + -0.996112557742151130f, + 0.087325535206192226f, -0.996179828595696870f, 0.086561449236251239f, + -0.996246513422315520f, + 0.085797312344439880f, -0.996312612182778000f, 0.085033124980280414f, + -0.996378124838200210f, + 0.084268887593324127f, -0.996443051350042630f, 0.083504600633152404f, + -0.996507391680110820f, + 0.082740264549375803f, -0.996571145790554840f, 0.081975879791633108f, + -0.996634313643869900f, + 0.081211446809592386f, -0.996696895202896060f, 0.080446966052950097f, + -0.996758890430818000f, + 0.079682437971430126f, -0.996820299291165670f, 0.078917863014785095f, + -0.996881121747813850f, + 0.078153241632794315f, -0.996941357764982160f, 0.077388574275265049f, + -0.997001007307235290f, + 0.076623861392031617f, -0.997060070339482960f, 0.075859103432954503f, + -0.997118546826979980f, + 0.075094300847921291f, -0.997176436735326190f, 0.074329454086845867f, + -0.997233740030466160f, + 0.073564563599667454f, -0.997290456678690210f, 0.072799629836351618f, + -0.997346586646633230f, + 0.072034653246889416f, -0.997402129901275300f, 0.071269634281296415f, + -0.997457086409941910f, + 0.070504573389614009f, -0.997511456140303450f, 0.069739471021907376f, + -0.997565239060375750f, + 0.068974327628266732f, -0.997618435138519550f, 0.068209143658806454f, + -0.997671044343441000f, + 0.067443919563664106f, -0.997723066644191640f, 0.066678655793001543f, + -0.997774502010167820f, + 0.065913352797003930f, -0.997825350411111640f, 0.065148011025878860f, + -0.997875611817110150f, + 0.064382630929857410f, -0.997925286198596000f, 0.063617212959193190f, + -0.997974373526346990f, + 0.062851757564161420f, -0.998022873771486240f, 0.062086265195060247f, + -0.998070786905482340f, + 0.061320736302208648f, -0.998118112900149180f, 0.060555171335947781f, + -0.998164851727646240f, + 0.059789570746640007f, -0.998211003360478190f, 0.059023934984667986f, + -0.998256567771495180f, + 0.058258264500435732f, -0.998301544933892890f, 0.057492559744367684f, + -0.998345934821212370f, + 0.056726821166907783f, -0.998389737407340160f, 0.055961049218520520f, + -0.998432952666508440f, + 0.055195244349690031f, -0.998475580573294770f, 0.054429407010919147f, + -0.998517621102622210f, + 0.053663537652730679f, -0.998559074229759310f, 0.052897636725665401f, + -0.998599939930320370f, + 0.052131704680283317f, -0.998640218180265270f, 0.051365741967162731f, + -0.998679908955899090f, + 0.050599749036899337f, -0.998719012233872940f, 0.049833726340107257f, + -0.998757527991183340f, + 0.049067674327418126f, -0.998795456205172410f, 0.048301593449480172f, + -0.998832796853527990f, + 0.047535484156959261f, -0.998869549914283560f, 0.046769346900537960f, + -0.998905715365818290f, + 0.046003182130914644f, -0.998941293186856870f, 0.045236990298804750f, + -0.998976283356469820f, + 0.044470771854938744f, -0.999010685854073380f, 0.043704527250063421f, + -0.999044500659429290f, + 0.042938256934940959f, -0.999077727752645360f, 0.042171961360348002f, + -0.999110367114174890f, + 0.041405640977076712f, -0.999142418724816910f, 0.040639296235933854f, + -0.999173882565716380f, + 0.039872927587739845f, -0.999204758618363890f, 0.039106535483329839f, + -0.999235046864595850f, + 0.038340120373552791f, -0.999264747286594420f, 0.037573682709270514f, + -0.999293859866887790f, + 0.036807222941358991f, -0.999322384588349540f, 0.036040741520706299f, + -0.999350321434199440f, + 0.035274238898213947f, -0.999377670388002850f, 0.034507715524795889f, + -0.999404431433671300f, + 0.033741171851377642f, -0.999430604555461730f, 0.032974608328897315f, + -0.999456189737977340f, + 0.032208025408304704f, -0.999481186966166950f, 0.031441423540560343f, + -0.999505596225325310f, + 0.030674803176636581f, -0.999529417501093140f, 0.029908164767516655f, + -0.999552650779456990f, + 0.029141508764193740f, -0.999575296046749220f, 0.028374835617672258f, + -0.999597353289648380f, + 0.027608145778965820f, -0.999618822495178640f, 0.026841439699098527f, + -0.999639703650710200f, + 0.026074717829104040f, -0.999659996743959220f, 0.025307980620024630f, + -0.999679701762987930f, + 0.024541228522912264f, -0.999698818696204250f, 0.023774461988827676f, + -0.999717347532362190f, + 0.023007681468839410f, -0.999735288260561680f, 0.022240887414024919f, + -0.999752640870248840f, + 0.021474080275469605f, -0.999769405351215280f, 0.020707260504265912f, + -0.999785581693599210f, + 0.019940428551514598f, -0.999801169887884260f, 0.019173584868322699f, + -0.999816169924900410f, + 0.018406729905804820f, -0.999830581795823400f, 0.017639864115082195f, + -0.999844405492175240f, + 0.016872987947281773f, -0.999857641005823860f, 0.016106101853537263f, + -0.999870288328982950f, + 0.015339206284988220f, -0.999882347454212560f, 0.014572301692779104f, + -0.999893818374418490f, + 0.013805388528060349f, -0.999904701082852900f, 0.013038467241987433f, + -0.999914995573113470f, + 0.012271538285719944f, -0.999924701839144500f, 0.011504602110422875f, + -0.999933819875236000f, + 0.010737659167264572f, -0.999942349676023910f, 0.009970709907418029f, + -0.999950291236490480f, + 0.009203754782059960f, -0.999957644551963900f, 0.008436794242369860f, + -0.999964409618118280f, + 0.007669828739531077f, -0.999970586430974140f, 0.006902858724729877f, + -0.999976174986897610f, + 0.006135884649154515f, -0.999981175282601110f, 0.005368906963996303f, + -0.999985587315143200f, + 0.004601926120448672f, -0.999989411081928400f, 0.003834942569706248f, + -0.999992646580707190f, + 0.003067956762966138f, -0.999995293809576190f, 0.002300969151425887f, + -0.999997352766978210f, + 0.001533980186284766f, -0.999998823451701880f, 0.000766990318742846f, + -0.999999705862882230f +}; + +/** +* \par +* cosFactor tables are generated using the formula :
cos_factors[n] = 2 * cos((2n+1)*pi/(4*N))
+* \par +* C command to generate the table +* \par +*
 for(i = 0; i< N; i++)   
+* {   
+*    cos_factors[i]= 2 * cos((2*i+1)*c/2);   
+* } 
+* \par +* where N is the number of factors to generate and c is pi/(2*N) +*/ +static const float32_t cos_factors_128[128] = { + 0.999981175282601110f, 0.999830581795823400f, 0.999529417501093140f, + 0.999077727752645360f, + 0.998475580573294770f, 0.997723066644191640f, 0.996820299291165670f, + 0.995767414467659820f, + 0.994564570734255420f, 0.993211949234794500f, 0.991709753669099530f, + 0.990058210262297120f, + 0.988257567730749460f, 0.986308097244598670f, 0.984210092386929030f, + 0.981963869109555240f, + 0.979569765685440520f, 0.977028142657754390f, 0.974339382785575860f, + 0.971503890986251780f, + 0.968522094274417380f, 0.965394441697689400f, 0.962121404269041580f, + 0.958703474895871600f, + 0.955141168305770780f, 0.951435020969008340f, 0.947585591017741090f, + 0.943593458161960390f, + 0.939459223602189920f, 0.935183509938947610f, 0.930766961078983710f, + 0.926210242138311380f, + 0.921514039342042010f, 0.916679059921042700f, 0.911706032005429880f, + 0.906595704514915330f, + 0.901348847046022030f, 0.895966249756185220f, 0.890448723244757880f, + 0.884797098430937790f, + 0.879012226428633530f, 0.873094978418290090f, 0.867046245515692650f, + 0.860866938637767310f, + 0.854557988365400530f, 0.848120344803297230f, 0.841554977436898440f, + 0.834862874986380010f, + 0.828045045257755800f, 0.821102514991104650f, 0.814036329705948410f, + 0.806847553543799330f, + 0.799537269107905010f, 0.792106577300212390f, 0.784556597155575240f, + 0.776888465673232440f, + 0.769103337645579700f, 0.761202385484261780f, 0.753186799043612520f, + 0.745057785441466060f, + 0.736816568877369900f, 0.728464390448225200f, 0.720002507961381650f, + 0.711432195745216430f, + 0.702754744457225300f, 0.693971460889654000f, 0.685083667772700360f, + 0.676092703575316030f, + 0.666999922303637470f, 0.657806693297078640f, 0.648514401022112550f, + 0.639124444863775730f, + 0.629638238914927100f, 0.620057211763289210f, 0.610382806276309480f, + 0.600616479383868970f, + 0.590759701858874280f, 0.580813958095764530f, 0.570780745886967370f, + 0.560661576197336030f, + 0.550457972936604810f, 0.540171472729892970f, 0.529803624686294830f, + 0.519355990165589530f, + 0.508830142543106990f, 0.498227666972781870f, 0.487550160148436050f, + 0.476799230063322250f, + 0.465976495767966130f, 0.455083587126343840f, 0.444122144570429260f, + 0.433093818853152010f, + 0.422000270799799790f, 0.410843171057903910f, 0.399624199845646790f, + 0.388345046698826300f, + 0.377007410216418310f, 0.365612997804773960f, 0.354163525420490510f, + 0.342660717311994380f, + 0.331106305759876430f, 0.319502030816015750f, 0.307849640041534980f, + 0.296150888243623960f, + 0.284407537211271820f, 0.272621355449948980f, 0.260794117915275570f, + 0.248927605745720260f, + 0.237023605994367340f, 0.225083911359792780f, 0.213110319916091360f, + 0.201104634842091960f, + 0.189068664149806280f, 0.177004220412148860f, 0.164913120489970090f, + 0.152797185258443410f, + 0.140658239332849240f, 0.128498110793793220f, 0.116318630911904880f, + 0.104121633872054730f, + 0.091908956497132696f, 0.079682437971430126f, 0.067443919563664106f, + 0.055195244349690031f, + 0.042938256934940959f, 0.030674803176636581f, 0.018406729905804820f, + 0.006135884649154515f +}; + +static const float32_t cos_factors_512[512] = { + 0.999998823451701880f, 0.999989411081928400f, 0.999970586430974140f, + 0.999942349676023910f, + 0.999904701082852900f, 0.999857641005823860f, 0.999801169887884260f, + 0.999735288260561680f, + 0.999659996743959220f, 0.999575296046749220f, 0.999481186966166950f, + 0.999377670388002850f, + 0.999264747286594420f, 0.999142418724816910f, 0.999010685854073380f, + 0.998869549914283560f, + 0.998719012233872940f, 0.998559074229759310f, 0.998389737407340160f, + 0.998211003360478190f, + 0.998022873771486240f, 0.997825350411111640f, 0.997618435138519550f, + 0.997402129901275300f, + 0.997176436735326190f, 0.996941357764982160f, 0.996696895202896060f, + 0.996443051350042630f, + 0.996179828595696980f, 0.995907229417411720f, 0.995625256380994310f, + 0.995333912140482280f, + 0.995033199438118630f, 0.994723121104325700f, 0.994403680057679100f, + 0.994074879304879370f, + 0.993736721940724600f, 0.993389211148080650f, 0.993032350197851410f, + 0.992666142448948020f, + 0.992290591348257370f, 0.991905700430609330f, 0.991511473318743900f, + 0.991107913723276890f, + 0.990695025442664630f, 0.990272812363169110f, 0.989841278458820530f, + 0.989400427791380380f, + 0.988950264510302990f, 0.988490792852696590f, 0.988022017143283530f, + 0.987543941794359230f, + 0.987056571305750970f, 0.986559910264775410f, 0.986053963346195440f, + 0.985538735312176060f, + 0.985014231012239840f, 0.984480455383220930f, 0.983937413449218920f, + 0.983385110321551180f, + 0.982823551198705240f, 0.982252741366289370f, 0.981672686196983110f, + 0.981083391150486710f, + 0.980484861773469380f, 0.979877103699517640f, 0.979260122649082020f, + 0.978633924429423210f, + 0.977998514934557140f, 0.977353900145199960f, 0.976700086128711840f, + 0.976037079039039020f, + 0.975364885116656980f, 0.974683510688510670f, 0.973992962167955830f, + 0.973293246054698250f, + 0.972584368934732210f, 0.971866337480279400f, 0.971139158449725090f, + 0.970402838687555500f, + 0.969657385124292450f, 0.968902804776428870f, 0.968139104746362440f, + 0.967366292222328510f, + 0.966584374478333120f, 0.965793358874083680f, 0.964993252854920320f, + 0.964184063951745830f, + 0.963365799780954050f, 0.962538468044359160f, 0.961702076529122540f, + 0.960856633107679660f, + 0.960002145737665960f, 0.959138622461841890f, 0.958266071408017670f, + 0.957384500788975860f, + 0.956493918902395100f, 0.955594334130771110f, 0.954685754941338340f, + 0.953768189885990330f, + 0.952841647601198720f, 0.951906136807932350f, 0.950961666311575080f, + 0.950008245001843000f, + 0.949045881852700560f, 0.948074585922276230f, 0.947094366352777220f, + 0.946105232370403450f, + 0.945107193285260610f, 0.944100258491272660f, 0.943084437466093490f, + 0.942059739771017310f, + 0.941026175050889260f, 0.939983753034014050f, 0.938932483532064600f, + 0.937872376439989890f, + 0.936803441735921560f, 0.935725689481080370f, 0.934639129819680780f, + 0.933543772978836170f, + 0.932439629268462360f, 0.931326709081180430f, 0.930205022892219070f, + 0.929074581259315860f, + 0.927935394822617890f, 0.926787474304581750f, 0.925630830509872720f, + 0.924465474325262600f, + 0.923291416719527640f, 0.922108668743345180f, 0.920917241529189520f, + 0.919717146291227360f, + 0.918508394325212250f, 0.917290997008377910f, 0.916064965799331720f, + 0.914830312237946200f, + 0.913587047945250810f, 0.912335184623322750f, 0.911074734055176360f, + 0.909805708104652220f, + 0.908528118716306120f, 0.907241977915295820f, 0.905947297807268460f, + 0.904644090578246240f, + 0.903332368494511820f, 0.902012143902493180f, 0.900683429228646970f, + 0.899346236979341570f, + 0.898000579740739880f, 0.896646470178680150f, 0.895283921038557580f, + 0.893912945145203250f, + 0.892533555402764580f, 0.891145764794583180f, 0.889749586383072780f, + 0.888345033309596350f, + 0.886932118794342190f, 0.885510856136199950f, 0.884081258712634990f, + 0.882643339979562790f, + 0.881197113471222090f, 0.879742592800047410f, 0.878279791656541580f, + 0.876808723809145650f, + 0.875329403104110890f, 0.873841843465366860f, 0.872346058894391540f, + 0.870842063470078980f, + 0.869329871348606840f, 0.867809496763303320f, 0.866280954024512990f, + 0.864744257519462380f, + 0.863199421712124160f, 0.861646461143081300f, 0.860085390429390140f, + 0.858516224264442740f, + 0.856938977417828760f, 0.855353664735196030f, 0.853760301138111410f, + 0.852158901623919830f, + 0.850549481265603480f, 0.848932055211639610f, 0.847306638685858320f, + 0.845673246987299070f, + 0.844031895490066410f, 0.842382599643185850f, 0.840725374970458070f, + 0.839060237070312740f, + 0.837387201615661940f, 0.835706284353752600f, 0.834017501106018130f, + 0.832320867767929680f, + 0.830616400308846310f, 0.828904114771864870f, 0.827184027273669130f, + 0.825456154004377550f, + 0.823720511227391430f, 0.821977115279241550f, 0.820225982569434690f, + 0.818467129580298660f, + 0.816700572866827850f, 0.814926329056526620f, 0.813144414849253590f, + 0.811354847017063730f, + 0.809557642404051260f, 0.807752817926190360f, 0.805940390571176280f, + 0.804120377398265810f, + 0.802292795538115720f, 0.800457662192622820f, 0.798614994634760820f, + 0.796764810208418830f, + 0.794907126328237010f, 0.793041960479443640f, 0.791169330217690200f, + 0.789289253168885650f, + 0.787401747029031430f, 0.785506829564053930f, 0.783604518609638200f, + 0.781694832071059390f, + 0.779777787923014550f, 0.777853404209453150f, 0.775921699043407690f, + 0.773982690606822900f, + 0.772036397150384520f, 0.770082836993347900f, 0.768122028523365420f, + 0.766153990196312920f, + 0.764178740536116670f, 0.762196298134578900f, 0.760206681651202420f, + 0.758209909813015280f, + 0.756206001414394540f, 0.754194975316889170f, 0.752176850449042810f, + 0.750151645806215070f, + 0.748119380450403600f, 0.746080073510063780f, 0.744033744179929290f, + 0.741980411720831070f, + 0.739920095459516200f, 0.737852814788465980f, 0.735778589165713590f, + 0.733697438114660370f, + 0.731609381223892630f, 0.729514438146997010f, 0.727412628602375770f, + 0.725303972373060770f, + 0.723188489306527460f, 0.721066199314508110f, 0.718937122372804490f, + 0.716801278521099540f, + 0.714658687862769090f, 0.712509370564692320f, 0.710353346857062420f, + 0.708190637033195400f, + 0.706021261449339740f, 0.703845240524484940f, 0.701662594740168570f, + 0.699473344640283770f, + 0.697277510830886630f, 0.695075113980000880f, 0.692866174817424740f, + 0.690650714134534720f, + 0.688428752784090550f, 0.686200311680038700f, 0.683965411797315510f, + 0.681724074171649820f, + 0.679476319899365080f, 0.677222170137180450f, 0.674961646102012040f, + 0.672694769070772970f, + 0.670421560380173090f, 0.668142041426518560f, 0.665856233665509720f, + 0.663564158612039880f, + 0.661265837839992270f, 0.658961292982037320f, 0.656650545729429050f, + 0.654333617831800550f, + 0.652010531096959500f, 0.649681307390683190f, 0.647345968636512060f, + 0.645004536815544040f, + 0.642657033966226860f, 0.640303482184151670f, 0.637943903621844170f, + 0.635578320488556230f, + 0.633206755050057190f, 0.630829229628424470f, 0.628445766601832710f, + 0.626056388404343520f, + 0.623661117525694640f, 0.621259976511087660f, 0.618852987960976320f, + 0.616440174530853650f, + 0.614021558931038490f, 0.611597163926462020f, 0.609167012336453210f, + 0.606731127034524480f, + 0.604289530948156070f, 0.601842247058580030f, 0.599389298400564540f, + 0.596930708062196500f, + 0.594466499184664540f, 0.591996694962040990f, 0.589521318641063940f, + 0.587040393520918080f, + 0.584553942953015330f, 0.582061990340775550f, 0.579564559139405740f, + 0.577061672855679550f, + 0.574553355047715760f, 0.572039629324757050f, 0.569520519346947250f, + 0.566996048825108680f, + 0.564466241520519500f, 0.561931121244689470f, 0.559390711859136140f, + 0.556845037275160100f, + 0.554294121453620110f, 0.551737988404707450f, 0.549176662187719770f, + 0.546610166910834860f, + 0.544038526730883930f, 0.541461765853123560f, 0.538879908531008420f, + 0.536292979065963180f, + 0.533701001807152960f, 0.531104001151255000f, 0.528502001542228480f, + 0.525895027471084740f, + 0.523283103475656430f, 0.520666254140367270f, 0.518044504095999340f, + 0.515417878019463150f, + 0.512786400633563070f, 0.510150096706766700f, 0.507508991052970870f, + 0.504863108531267480f, + 0.502212474045710900f, 0.499557112545081890f, 0.496897049022654640f, + 0.494232308515959730f, + 0.491562916106550060f, 0.488888896919763230f, 0.486210276124486530f, + 0.483527078932918740f, + 0.480839330600333900f, 0.478147056424843120f, 0.475450281747155870f, + 0.472749031950342900f, + 0.470043332459595620f, 0.467333208741988530f, 0.464618686306237820f, + 0.461899790702462840f, + 0.459176547521944150f, 0.456448982396883860f, 0.453717121000163930f, + 0.450980989045103810f, + 0.448240612285220000f, 0.445496016513981740f, 0.442747227564570130f, + 0.439994271309633260f, + 0.437237173661044200f, 0.434475960569655710f, 0.431710658025057370f, + 0.428941292055329550f, + 0.426167888726799620f, 0.423390474143796100f, 0.420609074448402510f, + 0.417823715820212380f, + 0.415034424476081630f, 0.412241226669883000f, 0.409444148692257590f, + 0.406643216870369140f, + 0.403838457567654130f, 0.401029897183575790f, 0.398217562153373620f, + 0.395401478947816300f, + 0.392581674072951530f, 0.389758174069856410f, 0.386931005514388690f, + 0.384100195016935040f, + 0.381265769222162490f, 0.378427754808765620f, 0.375586178489217330f, + 0.372741067009515810f, + 0.369892447148934270f, 0.367040345719767240f, 0.364184789567079840f, + 0.361325805568454340f, + 0.358463420633736540f, 0.355597661704783960f, 0.352728555755210730f, + 0.349856129790135030f, + 0.346980410845923680f, 0.344101425989938980f, 0.341219202320282410f, + 0.338333766965541290f, + 0.335445147084531660f, 0.332553369866044220f, 0.329658462528587550f, + 0.326760452320131790f, + 0.323859366517852960f, 0.320955232427875210f, 0.318048077385015060f, + 0.315137928752522440f, + 0.312224813921825050f, 0.309308760312268780f, 0.306389795370861080f, + 0.303467946572011370f, + 0.300543241417273400f, 0.297615707435086310f, 0.294685372180514330f, + 0.291752263234989370f, + 0.288816408206049480f, 0.285877834727080730f, 0.282936570457055390f, + 0.279992643080273380f, + 0.277046080306099950f, 0.274096909868706330f, 0.271145159526808070f, + 0.268190857063403180f, + 0.265234030285511900f, 0.262274707023913590f, 0.259312915132886350f, + 0.256348682489942910f, + 0.253382036995570270f, 0.250413006572965280f, 0.247441619167773440f, + 0.244467902747824210f, + 0.241491885302869300f, 0.238513594844318500f, 0.235533059404975460f, + 0.232550307038775330f, + 0.229565365820518870f, 0.226578263845610110f, 0.223589029229790020f, + 0.220597690108873650f, + 0.217604274638483670f, 0.214608810993786920f, 0.211611327369227610f, + 0.208611851978263460f, + 0.205610413053099320f, 0.202607038844421110f, 0.199601757621131050f, + 0.196594597670080220f, + 0.193585587295803750f, 0.190574754820252800f, 0.187562128582529740f, + 0.184547736938619640f, + 0.181531608261125130f, 0.178513770938997590f, 0.175494253377271400f, + 0.172473083996796030f, + 0.169450291233967930f, 0.166425903540464220f, 0.163399949382973230f, + 0.160372457242928400f, + 0.157343455616238280f, 0.154312973013020240f, 0.151281037957330250f, + 0.148247678986896200f, + 0.145212924652847520f, 0.142176803519448000f, 0.139139344163826280f, + 0.136100575175706200f, + 0.133060525157139180f, 0.130019222722233350f, 0.126976696496885980f, + 0.123932975118512200f, + 0.120888087235777220f, 0.117842061508325020f, 0.114794926606510250f, + 0.111746711211126660f, + 0.108697444013138670f, 0.105647153713410700f, 0.102595869022436280f, + 0.099543618660069444f, + 0.096490431355252607f, 0.093436335845747912f, 0.090381360877865011f, + 0.087325535206192226f, + 0.084268887593324127f, 0.081211446809592386f, 0.078153241632794315f, + 0.075094300847921291f, + 0.072034653246889416f, 0.068974327628266732f, 0.065913352797003930f, + 0.062851757564161420f, + 0.059789570746640007f, 0.056726821166907783f, 0.053663537652730679f, + 0.050599749036899337f, + 0.047535484156959261f, 0.044470771854938744f, 0.041405640977076712f, + 0.038340120373552791f, + 0.035274238898213947f, 0.032208025408304704f, 0.029141508764193740f, + 0.026074717829104040f, + 0.023007681468839410f, 0.019940428551514598f, 0.016872987947281773f, + 0.013805388528060349f, + 0.010737659167264572f, 0.007669828739531077f, 0.004601926120448672f, + 0.001533980186284766f +}; + +static const float32_t cos_factors_2048[2048] = { + 0.999999926465717890f, 0.999999338191525530f, 0.999998161643486980f, + 0.999996396822294350f, + 0.999994043728985820f, 0.999991102364945590f, 0.999987572731904080f, + 0.999983454831937730f, + 0.999978748667468830f, 0.999973454241265940f, 0.999967571556443780f, + 0.999961100616462820f, + 0.999954041425129780f, 0.999946393986597460f, 0.999938158305364590f, + 0.999929334386276070f, + 0.999919922234522750f, 0.999909921855641540f, 0.999899333255515390f, + 0.999888156440373320f, + 0.999876391416790410f, 0.999864038191687680f, 0.999851096772332190f, + 0.999837567166337090f, + 0.999823449381661570f, 0.999808743426610520f, 0.999793449309835270f, + 0.999777567040332940f, + 0.999761096627446610f, 0.999744038080865430f, 0.999726391410624470f, + 0.999708156627104880f, + 0.999689333741033640f, 0.999669922763483760f, 0.999649923705874240f, + 0.999629336579970110f, + 0.999608161397882110f, 0.999586398172067070f, 0.999564046915327740f, + 0.999541107640812940f, + 0.999517580362016990f, 0.999493465092780590f, 0.999468761847290050f, + 0.999443470640077770f, + 0.999417591486021720f, 0.999391124400346050f, 0.999364069398620550f, + 0.999336426496761240f, + 0.999308195711029470f, 0.999279377058032710f, 0.999249970554724420f, + 0.999219976218403530f, + 0.999189394066714920f, 0.999158224117649430f, 0.999126466389543390f, + 0.999094120901079070f, + 0.999061187671284600f, 0.999027666719533690f, 0.998993558065545680f, + 0.998958861729386080f, + 0.998923577731465780f, 0.998887706092541290f, 0.998851246833715180f, + 0.998814199976435390f, + 0.998776565542495610f, 0.998738343554035230f, 0.998699534033539280f, + 0.998660137003838490f, + 0.998620152488108870f, 0.998579580509872500f, 0.998538421092996730f, + 0.998496674261694640f, + 0.998454340040524800f, 0.998411418454391300f, 0.998367909528543820f, + 0.998323813288577560f, + 0.998279129760433200f, 0.998233858970396850f, 0.998188000945100300f, + 0.998141555711520520f, + 0.998094523296980010f, 0.998046903729146840f, 0.997998697036034390f, + 0.997949903246001190f, + 0.997900522387751620f, 0.997850554490335110f, 0.997799999583146470f, + 0.997748857695925690f, + 0.997697128858758500f, 0.997644813102075420f, 0.997591910456652630f, + 0.997538420953611340f, + 0.997484344624417930f, 0.997429681500884180f, 0.997374431615167150f, + 0.997318594999768600f, + 0.997262171687536170f, 0.997205161711661850f, 0.997147565105683480f, + 0.997089381903483400f, + 0.997030612139289450f, 0.996971255847674320f, 0.996911313063555740f, + 0.996850783822196610f, + 0.996789668159204560f, 0.996727966110532490f, 0.996665677712478160f, + 0.996602803001684130f, + 0.996539342015137940f, 0.996475294790172160f, 0.996410661364464100f, + 0.996345441776035900f, + 0.996279636063254650f, 0.996213244264832040f, 0.996146266419824620f, + 0.996078702567633980f, + 0.996010552748005870f, 0.995941817001031350f, 0.995872495367145730f, + 0.995802587887129160f, + 0.995732094602106430f, 0.995661015553546910f, 0.995589350783264600f, + 0.995517100333418110f, + 0.995444264246510340f, 0.995370842565388990f, 0.995296835333246090f, + 0.995222242593618360f, + 0.995147064390386470f, 0.995071300767776170f, 0.994994951770357020f, + 0.994918017443043200f, + 0.994840497831093180f, 0.994762392980109930f, 0.994683702936040250f, + 0.994604427745175660f, + 0.994524567454151740f, 0.994444122109948040f, 0.994363091759888570f, + 0.994281476451641550f, + 0.994199276233218910f, 0.994116491152977070f, 0.994033121259616400f, + 0.993949166602181130f, + 0.993864627230059750f, 0.993779503192984580f, 0.993693794541031790f, + 0.993607501324621610f, + 0.993520623594518090f, 0.993433161401829360f, 0.993345114798006910f, + 0.993256483834846440f, + 0.993167268564487230f, 0.993077469039412300f, 0.992987085312448390f, + 0.992896117436765980f, + 0.992804565465879140f, 0.992712429453645460f, 0.992619709454266140f, + 0.992526405522286100f, + 0.992432517712593660f, 0.992338046080420420f, 0.992242990681341700f, + 0.992147351571276090f, + 0.992051128806485720f, 0.991954322443575950f, 0.991856932539495470f, + 0.991758959151536110f, + 0.991660402337333210f, 0.991561262154865290f, 0.991461538662453790f, + 0.991361231918763460f, + 0.991260341982802440f, 0.991158868913921350f, 0.991056812771814340f, + 0.990954173616518500f, + 0.990850951508413620f, 0.990747146508222710f, 0.990642758677011570f, + 0.990537788076188750f, + 0.990432234767505970f, 0.990326098813057330f, 0.990219380275280000f, + 0.990112079216953770f, + 0.990004195701200910f, 0.989895729791486660f, 0.989786681551618640f, + 0.989677051045747210f, + 0.989566838338365120f, 0.989456043494307710f, 0.989344666578752640f, + 0.989232707657220050f, + 0.989120166795572690f, 0.989007044060015270f, 0.988893339517095130f, + 0.988779053233701520f, + 0.988664185277066230f, 0.988548735714763200f, 0.988432704614708340f, + 0.988316092045159690f, + 0.988198898074717610f, 0.988081122772324070f, 0.987962766207263420f, + 0.987843828449161740f, + 0.987724309567986960f, 0.987604209634049160f, 0.987483528717999710f, + 0.987362266890832400f, + 0.987240424223882250f, 0.987118000788826280f, 0.986994996657682980f, + 0.986871411902812470f, + 0.986747246596916590f, 0.986622500813038480f, 0.986497174624562880f, + 0.986371268105216030f, + 0.986244781329065460f, 0.986117714370520090f, 0.985990067304330140f, + 0.985861840205586980f, + 0.985733033149723490f, 0.985603646212513400f, 0.985473679470071810f, + 0.985343132998854790f, + 0.985212006875659350f, 0.985080301177623800f, 0.984948015982227030f, + 0.984815151367289140f, + 0.984681707410970940f, 0.984547684191773960f, 0.984413081788540700f, + 0.984277900280454370f, + 0.984142139747038570f, 0.984005800268157870f, 0.983868881924017220f, + 0.983731384795162090f, + 0.983593308962478650f, 0.983454654507193270f, 0.983315421510872810f, + 0.983175610055424420f, + 0.983035220223095640f, 0.982894252096474070f, 0.982752705758487830f, + 0.982610581292404750f, + 0.982467878781833170f, 0.982324598310721280f, 0.982180739963357090f, + 0.982036303824369020f, + 0.981891289978725100f, 0.981745698511732990f, 0.981599529509040720f, + 0.981452783056635520f, + 0.981305459240844670f, 0.981157558148334830f, 0.981009079866112630f, + 0.980860024481523870f, + 0.980710392082253970f, 0.980560182756327840f, 0.980409396592109910f, + 0.980258033678303550f, + 0.980106094103951770f, 0.979953577958436740f, 0.979800485331479790f, + 0.979646816313141210f, + 0.979492570993820810f, 0.979337749464256780f, 0.979182351815526930f, + 0.979026378139047580f, + 0.978869828526574120f, 0.978712703070200420f, 0.978555001862359550f, + 0.978396724995823090f, + 0.978237872563701090f, 0.978078444659442380f, 0.977918441376834370f, + 0.977757862810002760f, + 0.977596709053411890f, 0.977434980201864260f, 0.977272676350500860f, + 0.977109797594800880f, + 0.976946344030581670f, 0.976782315753998650f, 0.976617712861545640f, + 0.976452535450054060f, + 0.976286783616693630f, 0.976120457458971910f, 0.975953557074734300f, + 0.975786082562163930f, + 0.975618034019781750f, 0.975449411546446380f, 0.975280215241354220f, + 0.975110445204038890f, + 0.974940101534371830f, 0.974769184332561770f, 0.974597693699155050f, + 0.974425629735034990f, + 0.974252992541422500f, 0.974079782219875680f, 0.973905998872289570f, + 0.973731642600896400f, + 0.973556713508265560f, 0.973381211697303290f, 0.973205137271252800f, + 0.973028490333694210f, + 0.972851270988544180f, 0.972673479340056430f, 0.972495115492821190f, + 0.972316179551765300f, + 0.972136671622152230f, 0.971956591809581720f, 0.971775940219990140f, + 0.971594716959650160f, + 0.971412922135170940f, 0.971230555853497380f, 0.971047618221911100f, + 0.970864109348029470f, + 0.970680029339806130f, 0.970495378305530560f, 0.970310156353828110f, + 0.970124363593660280f, + 0.969938000134323960f, 0.969751066085452140f, 0.969563561557013180f, + 0.969375486659311280f, + 0.969186841502985950f, 0.968997626199012420f, 0.968807840858700970f, + 0.968617485593697540f, + 0.968426560515983190f, 0.968235065737874320f, 0.968043001372022260f, + 0.967850367531413620f, + 0.967657164329369880f, 0.967463391879547550f, 0.967269050295937790f, + 0.967074139692867040f, + 0.966878660184995910f, 0.966682611887320080f, 0.966485994915169840f, + 0.966288809384209690f, + 0.966091055410438830f, 0.965892733110190860f, 0.965693842600133690f, + 0.965494383997269500f, + 0.965294357418934660f, 0.965093762982799590f, 0.964892600806868890f, + 0.964690871009481030f, + 0.964488573709308410f, 0.964285709025357480f, 0.964082277076968140f, + 0.963878277983814200f, + 0.963673711865903230f, 0.963468578843575950f, 0.963262879037507070f, + 0.963056612568704340f, + 0.962849779558509030f, 0.962642380128595710f, 0.962434414400972100f, + 0.962225882497979020f, + 0.962016784542290560f, 0.961807120656913540f, 0.961596890965187860f, + 0.961386095590786250f, + 0.961174734657714080f, 0.960962808290309780f, 0.960750316613243950f, + 0.960537259751520050f, + 0.960323637830473920f, 0.960109450975773940f, 0.959894699313420530f, + 0.959679382969746750f, + 0.959463502071417510f, 0.959247056745430090f, 0.959030047119113660f, + 0.958812473320129310f, + 0.958594335476470220f, 0.958375633716461170f, 0.958156368168758820f, + 0.957936538962351420f, + 0.957716146226558870f, 0.957495190091032570f, 0.957273670685755200f, + 0.957051588141040970f, + 0.956828942587535370f, 0.956605734156215080f, 0.956381962978387730f, + 0.956157629185692140f, + 0.955932732910098280f, 0.955707274283906560f, 0.955481253439748770f, + 0.955254670510586990f, + 0.955027525629714160f, 0.954799818930753720f, 0.954571550547659630f, + 0.954342720614716480f, + 0.954113329266538800f, 0.953883376638071770f, 0.953652862864590500f, + 0.953421788081700310f, + 0.953190152425336670f, 0.952957956031764700f, 0.952725199037579570f, + 0.952491881579706320f, + 0.952258003795399600f, 0.952023565822243570f, 0.951788567798152130f, + 0.951553009861368590f, + 0.951316892150465550f, 0.951080214804345010f, 0.950842977962238160f, + 0.950605181763705340f, + 0.950366826348635780f, 0.950127911857248100f, 0.949888438430089300f, + 0.949648406208035480f, + 0.949407815332291570f, 0.949166665944390700f, 0.948924958186195160f, + 0.948682692199895090f, + 0.948439868128009620f, 0.948196486113385580f, 0.947952546299198670f, + 0.947708048828952100f, + 0.947462993846477700f, 0.947217381495934820f, 0.946971211921810880f, + 0.946724485268921170f, + 0.946477201682408680f, 0.946229361307743820f, 0.945980964290724760f, + 0.945732010777477150f, + 0.945482500914453740f, 0.945232434848435000f, 0.944981812726528150f, + 0.944730634696167800f, + 0.944478900905115550f, 0.944226611501459810f, 0.943973766633615980f, + 0.943720366450326200f, + 0.943466411100659320f, 0.943211900734010620f, 0.942956835500102120f, + 0.942701215548981900f, + 0.942445041031024890f, 0.942188312096931770f, 0.941931028897729620f, + 0.941673191584771360f, + 0.941414800309736340f, 0.941155855224629190f, 0.940896356481780830f, + 0.940636304233847590f, + 0.940375698633811540f, 0.940114539834980280f, 0.939852827990986680f, + 0.939590563255789270f, + 0.939327745783671400f, 0.939064375729241950f, 0.938800453247434770f, + 0.938535978493508560f, + 0.938270951623047190f, 0.938005372791958840f, 0.937739242156476970f, + 0.937472559873159250f, + 0.937205326098887960f, 0.936937540990869900f, 0.936669204706636170f, + 0.936400317404042060f, + 0.936130879241267030f, 0.935860890376814640f, 0.935590350969512370f, + 0.935319261178511610f, + 0.935047621163287430f, 0.934775431083638700f, 0.934502691099687870f, + 0.934229401371880820f, + 0.933955562060986730f, 0.933681173328098410f, 0.933406235334631520f, + 0.933130748242325230f, + 0.932854712213241120f, 0.932578127409764420f, 0.932300993994602760f, + 0.932023312130786490f, + 0.931745081981668720f, 0.931466303710925090f, 0.931186977482553750f, + 0.930907103460875130f, + 0.930626681810531760f, 0.930345712696488470f, 0.930064196284032360f, + 0.929782132738772190f, + 0.929499522226638560f, 0.929216364913884040f, 0.928932660967082820f, + 0.928648410553130520f, + 0.928363613839244370f, 0.928078270992963140f, 0.927792382182146320f, + 0.927505947574975180f, + 0.927218967339951790f, 0.926931441645899130f, 0.926643370661961230f, + 0.926354754557602860f, + 0.926065593502609310f, 0.925775887667086740f, 0.925485637221461490f, + 0.925194842336480530f, + 0.924903503183210910f, 0.924611619933039970f, 0.924319192757675160f, + 0.924026221829143850f, + 0.923732707319793290f, 0.923438649402290370f, 0.923144048249621930f, + 0.922848904035094120f, + 0.922553216932332830f, 0.922256987115283030f, 0.921960214758209220f, + 0.921662900035694730f, + 0.921365043122642340f, 0.921066644194273640f, 0.920767703426128790f, + 0.920468220994067110f, + 0.920168197074266340f, 0.919867631843222950f, 0.919566525477751530f, + 0.919264878154985370f, + 0.918962690052375630f, 0.918659961347691900f, 0.918356692219021720f, + 0.918052882844770380f, + 0.917748533403661250f, 0.917443644074735220f, 0.917138215037350710f, + 0.916832246471183890f, + 0.916525738556228210f, 0.916218691472794220f, 0.915911105401509880f, + 0.915602980523320230f, + 0.915294317019487050f, 0.914985115071589310f, 0.914675374861522390f, + 0.914365096571498560f, + 0.914054280384046570f, 0.913742926482011390f, 0.913431035048554720f, + 0.913118606267154240f, + 0.912805640321603500f, 0.912492137396012650f, 0.912178097674807180f, + 0.911863521342728520f, + 0.911548408584833990f, 0.911232759586496190f, 0.910916574533403360f, + 0.910599853611558930f, + 0.910282597007281760f, 0.909964804907205660f, 0.909646477498279540f, + 0.909327614967767260f, + 0.909008217503247450f, 0.908688285292613360f, 0.908367818524072890f, + 0.908046817386148340f, + 0.907725282067676440f, 0.907403212757808110f, 0.907080609646008450f, + 0.906757472922056550f, + 0.906433802776045460f, 0.906109599398381980f, 0.905784862979786550f, + 0.905459593711293250f, + 0.905133791784249690f, 0.904807457390316540f, 0.904480590721468250f, + 0.904153191969991780f, + 0.903825261328487510f, 0.903496798989868450f, 0.903167805147360720f, + 0.902838279994502830f, + 0.902508223725145940f, 0.902177636533453620f, 0.901846518613901750f, + 0.901514870161278740f, + 0.901182691370684520f, 0.900849982437531450f, 0.900516743557543520f, + 0.900182974926756810f, + 0.899848676741518580f, 0.899513849198487980f, 0.899178492494635330f, + 0.898842606827242370f, + 0.898506192393901950f, 0.898169249392518080f, 0.897831778021305650f, + 0.897493778478790310f, + 0.897155250963808550f, 0.896816195675507300f, 0.896476612813344120f, + 0.896136502577086770f, + 0.895795865166813530f, 0.895454700782912450f, 0.895113009626081760f, + 0.894770791897329550f, + 0.894428047797973800f, 0.894084777529641990f, 0.893740981294271040f, + 0.893396659294107720f, + 0.893051811731707450f, 0.892706438809935390f, 0.892360540731965360f, + 0.892014117701280470f, + 0.891667169921672280f, 0.891319697597241390f, 0.890971700932396860f, + 0.890623180131855930f, + 0.890274135400644600f, 0.889924566944096720f, 0.889574474967854580f, + 0.889223859677868210f, + 0.888872721280395630f, 0.888521059982002260f, 0.888168875989561730f, + 0.887816169510254440f, + 0.887462940751568840f, 0.887109189921300170f, 0.886754917227550840f, + 0.886400122878730600f, + 0.886044807083555600f, 0.885688970051048960f, 0.885332611990540590f, + 0.884975733111666660f, + 0.884618333624369920f, 0.884260413738899190f, 0.883901973665809470f, + 0.883543013615961880f, + 0.883183533800523390f, 0.882823534430966620f, 0.882463015719070150f, + 0.882101977876917580f, + 0.881740421116898320f, 0.881378345651706920f, 0.881015751694342870f, + 0.880652639458111010f, + 0.880289009156621010f, 0.879924861003786860f, 0.879560195213827890f, + 0.879195012001267480f, + 0.878829311580933360f, 0.878463094167957870f, 0.878096359977777130f, + 0.877729109226131570f, + 0.877361342129065140f, 0.876993058902925890f, 0.876624259764365310f, + 0.876254944930338510f, + 0.875885114618103810f, 0.875514769045222850f, 0.875143908429560360f, + 0.874772532989284150f, + 0.874400642942864790f, 0.874028238509075740f, 0.873655319906992630f, + 0.873281887355994210f, + 0.872907941075761080f, 0.872533481286276170f, 0.872158508207824480f, + 0.871783022060993120f, + 0.871407023066670950f, 0.871030511446048260f, 0.870653487420617430f, + 0.870275951212171940f, + 0.869897903042806340f, 0.869519343134916860f, 0.869140271711200560f, + 0.868760688994655310f, + 0.868380595208579800f, 0.867999990576573510f, 0.867618875322536230f, + 0.867237249670668400f, + 0.866855113845470430f, 0.866472468071743050f, 0.866089312574586770f, + 0.865705647579402380f, + 0.865321473311889800f, 0.864936789998049020f, 0.864551597864179340f, + 0.864165897136879300f, + 0.863779688043046720f, 0.863392970809878420f, 0.863005745664870320f, + 0.862618012835816740f, + 0.862229772550811240f, 0.861841025038245330f, 0.861451770526809320f, + 0.861062009245491480f, + 0.860671741423578380f, 0.860280967290654510f, 0.859889687076602290f, + 0.859497901011601730f, + 0.859105609326130450f, 0.858712812250963520f, 0.858319510017173440f, + 0.857925702856129790f, + 0.857531390999499150f, 0.857136574679244980f, 0.856741254127627470f, + 0.856345429577203610f, + 0.855949101260826910f, 0.855552269411646860f, 0.855154934263109620f, + 0.854757096048957220f, + 0.854358755003227440f, 0.853959911360254180f, 0.853560565354666840f, + 0.853160717221390420f, + 0.852760367195645300f, 0.852359515512947090f, 0.851958162409106380f, + 0.851556308120228980f, + 0.851153952882715340f, 0.850751096933260790f, 0.850347740508854980f, + 0.849943883846782210f, + 0.849539527184620890f, 0.849134670760243630f, 0.848729314811817130f, + 0.848323459577801640f, + 0.847917105296951410f, 0.847510252208314330f, 0.847102900551231500f, + 0.846695050565337450f, + 0.846286702490559710f, 0.845877856567119000f, 0.845468513035528830f, + 0.845058672136595470f, + 0.844648334111417820f, 0.844237499201387020f, 0.843826167648186740f, + 0.843414339693792760f, + 0.843002015580472940f, 0.842589195550786710f, 0.842175879847585570f, + 0.841762068714012490f, + 0.841347762393501950f, 0.840932961129779780f, 0.840517665166862550f, + 0.840101874749058400f, + 0.839685590120966110f, 0.839268811527475230f, 0.838851539213765760f, + 0.838433773425308340f, + 0.838015514407863820f, 0.837596762407483040f, 0.837177517670507300f, + 0.836757780443567190f, + 0.836337550973583530f, 0.835916829507766360f, 0.835495616293615350f, + 0.835073911578919410f, + 0.834651715611756440f, 0.834229028640493420f, 0.833805850913786340f, + 0.833382182680579730f, + 0.832958024190106670f, 0.832533375691888680f, 0.832108237435735590f, + 0.831682609671745120f, + 0.831256492650303210f, 0.830829886622083570f, 0.830402791838047550f, + 0.829975208549443950f, + 0.829547137007808910f, 0.829118577464965980f, 0.828689530173025820f, + 0.828259995384385660f, + 0.827829973351729920f, 0.827399464328029470f, 0.826968468566541600f, + 0.826536986320809960f, + 0.826105017844664610f, 0.825672563392221390f, 0.825239623217882250f, + 0.824806197576334330f, + 0.824372286722551250f, 0.823937890911791370f, 0.823503010399598500f, + 0.823067645441801670f, + 0.822631796294514990f, 0.822195463214137170f, 0.821758646457351750f, + 0.821321346281126740f, + 0.820883562942714580f, 0.820445296699652050f, 0.820006547809759680f, + 0.819567316531142230f, + 0.819127603122188240f, 0.818687407841569680f, 0.818246730948242070f, + 0.817805572701444270f, + 0.817363933360698460f, 0.816921813185809480f, 0.816479212436865390f, + 0.816036131374236810f, + 0.815592570258576790f, 0.815148529350820830f, 0.814704008912187080f, + 0.814259009204175270f, + 0.813813530488567190f, 0.813367573027426570f, 0.812921137083098770f, + 0.812474222918210480f, + 0.812026830795669730f, 0.811578960978665890f, 0.811130613730669190f, + 0.810681789315430780f, + 0.810232487996982330f, 0.809782710039636530f, 0.809332455707985950f, + 0.808881725266903610f, + 0.808430518981542720f, 0.807978837117336310f, 0.807526679939997160f, + 0.807074047715517610f, + 0.806620940710169650f, 0.806167359190504420f, 0.805713303423352230f, + 0.805258773675822210f, + 0.804803770215302920f, 0.804348293309460780f, 0.803892343226241260f, + 0.803435920233868120f, + 0.802979024600843250f, 0.802521656595946430f, 0.802063816488235440f, + 0.801605504547046150f, + 0.801146721041991360f, 0.800687466242961610f, 0.800227740420124790f, + 0.799767543843925680f, + 0.799306876785086160f, 0.798845739514604580f, 0.798384132303756380f, + 0.797922055424093000f, + 0.797459509147442460f, 0.796996493745908750f, 0.796533009491872000f, + 0.796069056657987990f, + 0.795604635517188070f, 0.795139746342679590f, 0.794674389407944550f, + 0.794208564986740640f, + 0.793742273353100210f, 0.793275514781330630f, 0.792808289546014120f, + 0.792340597922007170f, + 0.791872440184440470f, 0.791403816608719500f, 0.790934727470523290f, + 0.790465173045804880f, + 0.789995153610791090f, 0.789524669441982190f, 0.789053720816151880f, + 0.788582308010347120f, + 0.788110431301888070f, 0.787638090968367450f, 0.787165287287651010f, + 0.786692020537876790f, + 0.786218290997455660f, 0.785744098945070360f, 0.785269444659675850f, + 0.784794328420499230f, + 0.784318750507038920f, 0.783842711199065230f, 0.783366210776619720f, + 0.782889249520015480f, + 0.782411827709836530f, 0.781933945626937630f, 0.781455603552444590f, + 0.780976801767753750f, + 0.780497540554531910f, 0.780017820194715990f, 0.779537640970513260f, + 0.779057003164400630f, + 0.778575907059125050f, 0.778094352937702790f, 0.777612341083420030f, + 0.777129871779831620f, + 0.776646945310762060f, 0.776163561960304340f, 0.775679722012820650f, + 0.775195425752941420f, + 0.774710673465565550f, 0.774225465435860680f, 0.773739801949261840f, + 0.773253683291472590f, + 0.772767109748463850f, 0.772280081606474320f, 0.771792599152010150f, + 0.771304662671844830f, + 0.770816272453018540f, 0.770327428782838890f, 0.769838131948879840f, + 0.769348382238982280f, + 0.768858179941253270f, 0.768367525344066270f, 0.767876418736060610f, + 0.767384860406141730f, + 0.766892850643480670f, 0.766400389737514230f, 0.765907477977944340f, + 0.765414115654738270f, + 0.764920303058128410f, 0.764426040478612070f, 0.763931328206951090f, + 0.763436166534172010f, + 0.762940555751565720f, 0.762444496150687210f, 0.761947988023355390f, + 0.761451031661653620f, + 0.760953627357928150f, 0.760455775404789260f, 0.759957476095110330f, + 0.759458729722028210f, + 0.758959536578942440f, 0.758459896959515430f, 0.757959811157672300f, + 0.757459279467600720f, + 0.756958302183750490f, 0.756456879600833740f, 0.755955012013824420f, + 0.755452699717958250f, + 0.754949943008732640f, 0.754446742181906440f, 0.753943097533499640f, + 0.753439009359793580f, + 0.752934477957330150f, 0.752429503622912390f, 0.751924086653603550f, + 0.751418227346727470f, + 0.750911925999867890f, 0.750405182910869330f, 0.749897998377835330f, + 0.749390372699129560f, + 0.748882306173375150f, 0.748373799099454560f, 0.747864851776509410f, + 0.747355464503940190f, + 0.746845637581406540f, 0.746335371308826320f, 0.745824665986376090f, + 0.745313521914490520f, + 0.744801939393862630f, 0.744289918725443260f, 0.743777460210440890f, + 0.743264564150321600f, + 0.742751230846809050f, 0.742237460601884000f, 0.741723253717784140f, + 0.741208610497004260f, + 0.740693531242295760f, 0.740178016256666240f, 0.739662065843380010f, + 0.739145680305957510f, + 0.738628859948174840f, 0.738111605074064260f, 0.737593915987913570f, + 0.737075792994265730f, + 0.736557236397919150f, 0.736038246503927350f, 0.735518823617598900f, + 0.734998968044496710f, + 0.734478680090438370f, 0.733957960061495940f, 0.733436808263995710f, + 0.732915225004517780f, + 0.732393210589896040f, 0.731870765327218290f, 0.731347889523825570f, + 0.730824583487312160f, + 0.730300847525525490f, 0.729776681946566090f, 0.729252087058786970f, + 0.728727063170793830f, + 0.728201610591444610f, 0.727675729629849610f, 0.727149420595371020f, + 0.726622683797622850f, + 0.726095519546471000f, 0.725567928152032300f, 0.725039909924675370f, + 0.724511465175019630f, + 0.723982594213935520f, 0.723453297352544380f, 0.722923574902217700f, + 0.722393427174577550f, + 0.721862854481496340f, 0.721331857135096290f, 0.720800435447749190f, + 0.720268589732077190f, + 0.719736320300951030f, 0.719203627467491220f, 0.718670511545067230f, + 0.718136972847297490f, + 0.717603011688049080f, 0.717068628381437480f, 0.716533823241826680f, + 0.715998596583828690f, + 0.715462948722303760f, 0.714926879972359490f, 0.714390390649351390f, + 0.713853481068882470f, + 0.713316151546802610f, 0.712778402399208980f, 0.712240233942445510f, + 0.711701646493102970f, + 0.711162640368018350f, 0.710623215884275020f, 0.710083373359202800f, + 0.709543113110376770f, + 0.709002435455618250f, 0.708461340712994160f, 0.707919829200816310f, + 0.707377901237642100f, + 0.706835557142273860f, 0.706292797233758480f, 0.705749621831387790f, + 0.705206031254697830f, + 0.704662025823468930f, 0.704117605857725430f, 0.703572771677735580f, + 0.703027523604011220f, + 0.702481861957308000f, 0.701935787058624360f, 0.701389299229202230f, + 0.700842398790526230f, + 0.700295086064323780f, 0.699747361372564990f, 0.699199225037462120f, + 0.698650677381469580f, + 0.698101718727283880f, 0.697552349397843270f, 0.697002569716327460f, + 0.696452380006157830f, + 0.695901780590996830f, 0.695350771794747800f, 0.694799353941554900f, + 0.694247527355803310f, + 0.693695292362118350f, 0.693142649285365510f, 0.692589598450650380f, + 0.692036140183318830f, + 0.691482274808955850f, 0.690928002653386280f, 0.690373324042674040f, + 0.689818239303122470f, + 0.689262748761273470f, 0.688706852743907750f, 0.688150551578044830f, + 0.687593845590942170f, + 0.687036735110095660f, 0.686479220463238950f, 0.685921301978343670f, + 0.685362979983618730f, + 0.684804254807510620f, 0.684245126778703080f, 0.683685596226116690f, + 0.683125663478908800f, + 0.682565328866473250f, 0.682004592718440830f, 0.681443455364677990f, + 0.680881917135287340f, + 0.680319978360607200f, 0.679757639371212030f, 0.679194900497911200f, + 0.678631762071749470f, + 0.678068224424006600f, 0.677504287886197430f, 0.676939952790071240f, + 0.676375219467611700f, + 0.675810088251037060f, 0.675244559472799270f, 0.674678633465584540f, + 0.674112310562312360f, + 0.673545591096136100f, 0.672978475400442090f, 0.672410963808849900f, + 0.671843056655211930f, + 0.671274754273613490f, 0.670706056998372160f, 0.670136965164037760f, + 0.669567479105392490f, + 0.668997599157450270f, 0.668427325655456820f, 0.667856658934889440f, + 0.667285599331456480f, + 0.666714147181097670f, 0.666142302819983540f, 0.665570066584515560f, + 0.664997438811325340f, + 0.664424419837275180f, 0.663851009999457340f, 0.663277209635194100f, + 0.662703019082037440f, + 0.662128438677768720f, 0.661553468760399000f, 0.660978109668168060f, + 0.660402361739545030f, + 0.659826225313227430f, 0.659249700728141490f, 0.658672788323441890f, + 0.658095488438511290f, + 0.657517801412960120f, 0.656939727586627110f, 0.656361267299578000f, + 0.655782420892106030f, + 0.655203188704731930f, 0.654623571078202680f, 0.654043568353492640f, + 0.653463180871802330f, + 0.652882408974558960f, 0.652301253003415460f, 0.651719713300251020f, + 0.651137790207170330f, + 0.650555484066503990f, 0.649972795220807530f, 0.649389724012861770f, + 0.648806270785672550f, + 0.648222435882470420f, 0.647638219646710420f, 0.647053622422071650f, + 0.646468644552457890f, + 0.645883286381996440f, 0.645297548255038380f, 0.644711430516158420f, + 0.644124933510154540f, + 0.643538057582047850f, 0.642950803077082080f, 0.642363170340724320f, + 0.641775159718663500f, + 0.641186771556811250f, 0.640598006201301030f, 0.640008863998488440f, + 0.639419345294950700f, + 0.638829450437486400f, 0.638239179773115390f, 0.637648533649078810f, + 0.637057512412838590f, + 0.636466116412077180f, 0.635874345994697720f, 0.635282201508823530f, + 0.634689683302797850f, + 0.634096791725183740f, 0.633503527124764320f, 0.632909889850541860f, + 0.632315880251737680f, + 0.631721498677792370f, 0.631126745478365340f, 0.630531621003334600f, + 0.629936125602796550f, + 0.629340259627065750f, 0.628744023426674790f, 0.628147417352374120f, + 0.627550441755131530f, + 0.626953096986132770f, 0.626355383396779990f, 0.625757301338692900f, + 0.625158851163707730f, + 0.624560033223877320f, 0.623960847871470770f, 0.623361295458973340f, + 0.622761376339086460f, + 0.622161090864726930f, 0.621560439389027270f, 0.620959422265335180f, + 0.620358039847213830f, + 0.619756292488440660f, 0.619154180543008410f, 0.618551704365123860f, + 0.617948864309208260f, + 0.617345660729896940f, 0.616742093982038830f, 0.616138164420696910f, + 0.615533872401147430f, + 0.614929218278879590f, 0.614324202409595950f, 0.613718825149211830f, + 0.613113086853854910f, + 0.612506987879865570f, 0.611900528583796070f, 0.611293709322411010f, + 0.610686530452686280f, + 0.610078992331809620f, 0.609471095317180240f, 0.608862839766408200f, + 0.608254226037314490f, + 0.607645254487930830f, 0.607035925476499760f, 0.606426239361473550f, + 0.605816196501515080f, + 0.605205797255496500f, 0.604595041982500360f, 0.603983931041818020f, + 0.603372464792950370f, + 0.602760643595607220f, 0.602148467809707320f, 0.601535937795377730f, + 0.600923053912954090f, + 0.600309816522980430f, 0.599696225986208310f, 0.599082282663597310f, + 0.598467986916314310f, + 0.597853339105733910f, 0.597238339593437530f, 0.596622988741213330f, + 0.596007286911056530f, + 0.595391234465168730f, 0.594774831765957580f, 0.594158079176036800f, + 0.593540977058226390f, + 0.592923525775551410f, 0.592305725691242400f, 0.591687577168735550f, + 0.591069080571671510f, + 0.590450236263895920f, 0.589831044609458900f, 0.589211505972615070f, + 0.588591620717822890f, + 0.587971389209745120f, 0.587350811813247660f, 0.586729888893400500f, + 0.586108620815476430f, + 0.585487007944951450f, 0.584865050647504490f, 0.584242749289016980f, + 0.583620104235572760f, + 0.582997115853457700f, 0.582373784509160220f, 0.581750110569369760f, + 0.581126094400977620f, + 0.580501736371076600f, 0.579877036846960350f, 0.579251996196123550f, + 0.578626614786261430f, + 0.578000892985269910f, 0.577374831161244880f, 0.576748429682482520f, + 0.576121688917478390f, + 0.575494609234928230f, 0.574867191003726740f, 0.574239434592967890f, + 0.573611340371944610f, + 0.572982908710148680f, 0.572354139977270030f, 0.571725034543197120f, + 0.571095592778016690f, + 0.570465815052012990f, 0.569835701735668110f, 0.569205253199661200f, + 0.568574469814869250f, + 0.567943351952365670f, 0.567311899983420800f, 0.566680114279501710f, + 0.566047995212271560f, + 0.565415543153589770f, 0.564782758475511400f, 0.564149641550287680f, + 0.563516192750364910f, + 0.562882412448384550f, 0.562248301017183150f, 0.561613858829792420f, + 0.560979086259438260f, + 0.560343983679540860f, 0.559708551463714790f, 0.559072789985768480f, + 0.558436699619704100f, + 0.557800280739717100f, 0.557163533720196340f, 0.556526458935723720f, + 0.555889056761073920f, + 0.555251327571214090f, 0.554613271741304040f, 0.553974889646695610f, + 0.553336181662932410f, + 0.552697148165749770f, 0.552057789531074980f, 0.551418106135026060f, + 0.550778098353912230f, + 0.550137766564233630f, 0.549497111142680960f, 0.548856132466135290f, + 0.548214830911667780f, + 0.547573206856539870f, 0.546931260678202190f, 0.546288992754295210f, + 0.545646403462648590f, + 0.545003493181281160f, 0.544360262288400400f, 0.543716711162402390f, + 0.543072840181871850f, + 0.542428649725581360f, 0.541784140172491660f, 0.541139311901750910f, + 0.540494165292695230f, + 0.539848700724847700f, 0.539202918577918240f, 0.538556819231804210f, + 0.537910403066588990f, + 0.537263670462542530f, 0.536616621800121150f, 0.535969257459966710f, + 0.535321577822907010f, + 0.534673583269955510f, 0.534025274182310380f, 0.533376650941355560f, + 0.532727713928658810f, + 0.532078463525973540f, 0.531428900115236910f, 0.530779024078570250f, + 0.530128835798278850f, + 0.529478335656852090f, 0.528827524036961980f, 0.528176401321464370f, + 0.527524967893398200f, + 0.526873224135984700f, 0.526221170432628170f, 0.525568807166914680f, + 0.524916134722612890f, + 0.524263153483673470f, 0.523609863834228030f, 0.522956266158590140f, + 0.522302360841254700f, + 0.521648148266897090f, 0.520993628820373810f, 0.520338802886721960f, + 0.519683670851158520f, + 0.519028233099080970f, 0.518372490016066220f, 0.517716441987871150f, + 0.517060089400432130f, + 0.516403432639863990f, 0.515746472092461380f, 0.515089208144697270f, + 0.514431641183222930f, + 0.513773771594868030f, 0.513115599766640560f, 0.512457126085725800f, + 0.511798350939487000f, + 0.511139274715464390f, 0.510479897801375700f, 0.509820220585115560f, + 0.509160243454754750f, + 0.508499966798540810f, 0.507839391004897940f, 0.507178516462425290f, + 0.506517343559898530f, + 0.505855872686268860f, 0.505194104230662240f, 0.504532038582380380f, + 0.503869676130898950f, + 0.503207017265869030f, 0.502544062377115800f, 0.501880811854638400f, + 0.501217266088609950f, + 0.500553425469377640f, 0.499889290387461380f, 0.499224861233555030f, + 0.498560138398525200f, + 0.497895122273410930f, 0.497229813249424340f, 0.496564211717949340f, + 0.495898318070542240f, + 0.495232132698931350f, 0.494565655995016010f, 0.493898888350867430f, + 0.493231830158728070f, + 0.492564481811010650f, 0.491896843700299240f, 0.491228916219348330f, + 0.490560699761082080f, + 0.489892194718595300f, 0.489223401485152030f, 0.488554320454186230f, + 0.487884952019301210f, + 0.487215296574268820f, 0.486545354513030270f, 0.485875126229695420f, + 0.485204612118541880f, + 0.484533812574016120f, 0.483862727990732320f, 0.483191358763471910f, + 0.482519705287184520f, + 0.481847767956986080f, 0.481175547168160360f, 0.480503043316157670f, + 0.479830256796594250f, + 0.479157188005253310f, 0.478483837338084080f, 0.477810205191201040f, + 0.477136291960884750f, + 0.476462098043581310f, 0.475787623835901120f, 0.475112869734620470f, + 0.474437836136679340f, + 0.473762523439182850f, 0.473086932039400220f, 0.472411062334764100f, + 0.471734914722871430f, + 0.471058489601482610f, 0.470381787368520710f, 0.469704808422072460f, + 0.469027553160387240f, + 0.468350021981876530f, 0.467672215285114710f, 0.466994133468838110f, + 0.466315776931944480f, + 0.465637146073493770f, 0.464958241292706740f, 0.464279062988965760f, + 0.463599611561814120f, + 0.462919887410955130f, 0.462239890936253280f, 0.461559622537733190f, + 0.460879082615578690f, + 0.460198271570134270f, 0.459517189801903590f, 0.458835837711549120f, + 0.458154215699893230f, + 0.457472324167916110f, 0.456790163516757220f, 0.456107734147714220f, + 0.455425036462242420f, + 0.454742070861955450f, 0.454058837748624540f, 0.453375337524177750f, + 0.452691570590700860f, + 0.452007537350436530f, 0.451323238205783520f, 0.450638673559297760f, + 0.449953843813690580f, + 0.449268749371829920f, 0.448583390636739300f, 0.447897768011597360f, + 0.447211881899738260f, + 0.446525732704651400f, 0.445839320829980350f, 0.445152646679523590f, + 0.444465710657234110f, + 0.443778513167218280f, 0.443091054613736990f, 0.442403335401204130f, + 0.441715355934187310f, + 0.441027116617407340f, 0.440338617855737300f, 0.439649860054203420f, + 0.438960843617984430f, + 0.438271568952410480f, 0.437582036462964340f, 0.436892246555280470f, + 0.436202199635143950f, + 0.435511896108492170f, 0.434821336381412350f, 0.434130520860143310f, + 0.433439449951074200f, + 0.432748124060743760f, 0.432056543595841450f, 0.431364708963206440f, + 0.430672620569826860f, + 0.429980278822840570f, 0.429287684129534720f, 0.428594836897344400f, + 0.427901737533854240f, + 0.427208386446796370f, 0.426514784044051520f, 0.425820930733648350f, + 0.425126826923762410f, + 0.424432473022717420f, 0.423737869438983950f, 0.423043016581179100f, + 0.422347914858067000f, + 0.421652564678558380f, 0.420956966451709440f, 0.420261120586723050f, + 0.419565027492946940f, + 0.418868687579875110f, 0.418172101257146430f, 0.417475268934544340f, + 0.416778191021997590f, + 0.416080867929579320f, 0.415383300067506290f, 0.414685487846140010f, + 0.413987431675985510f, + 0.413289131967690960f, 0.412590589132048380f, 0.411891803579992220f, + 0.411192775722600160f, + 0.410493505971092520f, 0.409793994736831200f, 0.409094242431320920f, + 0.408394249466208110f, + 0.407694016253280170f, 0.406993543204466460f, 0.406292830731837470f, + 0.405591879247603870f, + 0.404890689164117750f, 0.404189260893870750f, 0.403487594849495310f, + 0.402785691443763640f, + 0.402083551089587040f, 0.401381174200016790f, 0.400678561188243350f, + 0.399975712467595390f, + 0.399272628451540930f, 0.398569309553686360f, 0.397865756187775750f, + 0.397161968767691720f, + 0.396457947707453960f, 0.395753693421220080f, 0.395049206323284880f, + 0.394344486828079650f, + 0.393639535350172880f, 0.392934352304269600f, 0.392228938105210370f, + 0.391523293167972350f, + 0.390817417907668610f, 0.390111312739546910f, 0.389404978078991100f, + 0.388698414341519250f, + 0.387991621942784910f, 0.387284601298575890f, 0.386577352824813980f, + 0.385869876937555310f, + 0.385162174052989970f, 0.384454244587440870f, 0.383746088957365010f, + 0.383037707579352130f, + 0.382329100870124510f, 0.381620269246537520f, 0.380911213125578130f, + 0.380201932924366050f, + 0.379492429060152740f, 0.378782701950320600f, 0.378072752012383990f, + 0.377362579663988450f, + 0.376652185322909620f, 0.375941569407054420f, 0.375230732334460030f, + 0.374519674523293210f, + 0.373808396391851370f, 0.373096898358560690f, 0.372385180841977360f, + 0.371673244260786630f, + 0.370961089033802040f, 0.370248715579966360f, 0.369536124318350760f, + 0.368823315668153960f, + 0.368110290048703050f, 0.367397047879452820f, 0.366683589579984930f, + 0.365969915570008910f, + 0.365256026269360380f, 0.364541922098002180f, 0.363827603476023610f, + 0.363113070823639530f, + 0.362398324561191310f, 0.361683365109145950f, 0.360968192888095290f, + 0.360252808318756830f, + 0.359537211821973180f, 0.358821403818710860f, 0.358105384730061760f, + 0.357389154977241000f, + 0.356672714981588260f, 0.355956065164567010f, 0.355239205947763370f, + 0.354522137752887430f, + 0.353804861001772160f, 0.353087376116372530f, 0.352369683518766630f, + 0.351651783631154680f, + 0.350933676875858360f, 0.350215363675321740f, 0.349496844452109600f, + 0.348778119628908420f, + 0.348059189628525780f, 0.347340054873889190f, 0.346620715788047320f, + 0.345901172794169100f, + 0.345181426315542610f, 0.344461476775576480f, 0.343741324597798600f, + 0.343020970205855540f, + 0.342300414023513690f, 0.341579656474657210f, 0.340858697983289440f, + 0.340137538973531880f, + 0.339416179869623410f, 0.338694621095921190f, 0.337972863076899830f, + 0.337250906237150650f, + 0.336528751001382350f, 0.335806397794420560f, 0.335083847041206580f, + 0.334361099166798900f, + 0.333638154596370920f, 0.332915013755212650f, 0.332191677068729320f, + 0.331468144962440920f, + 0.330744417861982890f, 0.330020496193105530f, 0.329296380381672800f, + 0.328572070853663690f, + 0.327847568035170960f, 0.327122872352400510f, 0.326397984231672660f, + 0.325672904099419900f, + 0.324947632382188430f, 0.324222169506637130f, 0.323496515899536760f, + 0.322770671987770710f, + 0.322044638198334620f, 0.321318414958334910f, 0.320592002694990330f, + 0.319865401835630610f, + 0.319138612807695900f, 0.318411636038737960f, 0.317684471956418020f, + 0.316957120988508150f, + 0.316229583562890490f, 0.315501860107556040f, 0.314773951050606070f, + 0.314045856820250820f, + 0.313317577844809070f, 0.312589114552708660f, 0.311860467372486130f, + 0.311131636732785270f, + 0.310402623062358880f, 0.309673426790066490f, 0.308944048344875710f, + 0.308214488155861220f, + 0.307484746652204160f, 0.306754824263192780f, 0.306024721418221900f, + 0.305294438546791720f, + 0.304563976078509050f, 0.303833334443086470f, 0.303102514070341060f, + 0.302371515390196130f, + 0.301640338832678880f, 0.300908984827921890f, 0.300177453806162120f, + 0.299445746197739950f, + 0.298713862433100390f, 0.297981802942791920f, 0.297249568157465890f, + 0.296517158507877410f, + 0.295784574424884370f, 0.295051816339446720f, 0.294318884682627570f, + 0.293585779885591310f, + 0.292852502379604810f, 0.292119052596036540f, 0.291385430966355720f, + 0.290651637922133220f, + 0.289917673895040860f, 0.289183539316850310f, 0.288449234619434170f, + 0.287714760234765280f, + 0.286980116594915570f, 0.286245304132057120f, 0.285510323278461380f, + 0.284775174466498300f, + 0.284039858128637360f, 0.283304374697445790f, 0.282568724605589740f, + 0.281832908285833460f, + 0.281096926171038320f, 0.280360778694163810f, 0.279624466288266700f, + 0.278887989386500280f, + 0.278151348422115090f, 0.277414543828458200f, 0.276677576038972420f, + 0.275940445487197320f, + 0.275203152606767370f, 0.274465697831413220f, 0.273728081594960650f, + 0.272990304331329980f, + 0.272252366474536660f, 0.271514268458690810f, 0.270776010717996010f, + 0.270037593686750510f, + 0.269299017799346230f, 0.268560283490267890f, 0.267821391194094320f, + 0.267082341345496350f, + 0.266343134379238180f, 0.265603770730176440f, 0.264864250833259320f, + 0.264124575123527490f, + 0.263384744036113390f, 0.262644758006240100f, 0.261904617469222560f, + 0.261164322860466590f, + 0.260423874615468010f, 0.259683273169813930f, 0.258942518959180580f, + 0.258201612419334870f, + 0.257460553986133210f, 0.256719344095520720f, 0.255977983183532380f, + 0.255236471686291820f, + 0.254494810040010790f, 0.253752998680989940f, 0.253011038045617980f, + 0.252268928570370810f, + 0.251526670691812780f, 0.250784264846594550f, 0.250041711471454650f, + 0.249299011003218300f, + 0.248556163878796620f, 0.247813170535187620f, 0.247070031409475370f, + 0.246326746938829060f, + 0.245583317560504000f, 0.244839743711840750f, 0.244096025830264210f, + 0.243352164353284880f, + 0.242608159718496890f, 0.241864012363579210f, 0.241119722726294730f, + 0.240375291244489500f, + 0.239630718356093560f, 0.238886004499120170f, 0.238141150111664870f, + 0.237396155631906550f, + 0.236651021498106460f, 0.235905748148607370f, 0.235160336021834860f, + 0.234414785556295250f, + 0.233669097190576820f, 0.232923271363349120f, 0.232177308513361770f, + 0.231431209079445730f, + 0.230684973500512310f, 0.229938602215552260f, 0.229192095663636740f, + 0.228445454283916550f, + 0.227698678515621170f, 0.226951768798059980f, 0.226204725570620270f, + 0.225457549272768540f, + 0.224710240344049570f, 0.223962799224085520f, 0.223215226352576960f, + 0.222467522169301990f, + 0.221719687114115240f, 0.220971721626949060f, 0.220223626147812460f, + 0.219475401116790340f, + 0.218727046974044600f, 0.217978564159812290f, 0.217229953114406790f, + 0.216481214278216900f, + 0.215732348091705940f, 0.214983354995412820f, 0.214234235429951100f, + 0.213484989836008080f, + 0.212735618654345870f, 0.211986122325800410f, 0.211236501291280710f, + 0.210486755991769890f, + 0.209736886868323370f, 0.208986894362070070f, 0.208236778914211470f, + 0.207486540966020700f, + 0.206736180958843660f, 0.205985699334098050f, 0.205235096533272380f, + 0.204484372997927180f, + 0.203733529169694010f, 0.202982565490274460f, 0.202231482401441620f, + 0.201480280345037820f, + 0.200728959762976140f, 0.199977521097239290f, 0.199225964789878890f, + 0.198474291283016360f, + 0.197722501018842030f, 0.196970594439614370f, 0.196218571987660850f, + 0.195466434105377090f, + 0.194714181235225990f, 0.193961813819739010f, 0.193209332301514080f, + 0.192456737123216840f, + 0.191704028727579940f, 0.190951207557401860f, 0.190198274055548120f, + 0.189445228664950340f, + 0.188692071828605260f, 0.187938803989575850f, 0.187185425590990440f, + 0.186431937076041640f, + 0.185678338887987790f, 0.184924631470150870f, 0.184170815265917720f, + 0.183416890718739230f, + 0.182662858272129360f, 0.181908718369666160f, 0.181154471454990920f, + 0.180400117971807270f, + 0.179645658363882100f, 0.178891093075044830f, 0.178136422549186320f, + 0.177381647230260200f, + 0.176626767562280960f, 0.175871783989325040f, 0.175116696955530060f, + 0.174361506905093830f, + 0.173606214282275410f, 0.172850819531394200f, 0.172095323096829040f, + 0.171339725423019260f, + 0.170584026954463700f, 0.169828228135719880f, 0.169072329411405180f, + 0.168316331226194910f, + 0.167560234024823590f, 0.166804038252083870f, 0.166047744352825850f, + 0.165291352771957970f, + 0.164534863954446110f, 0.163778278345312690f, 0.163021596389637810f, + 0.162264818532558110f, + 0.161507945219266150f, 0.160750976895011390f, 0.159993914005098350f, + 0.159236756994887850f, + 0.158479506309796100f, 0.157722162395293690f, 0.156964725696906750f, + 0.156207196660216040f, + 0.155449575730855880f, 0.154691863354515400f, 0.153934059976937460f, + 0.153176166043917870f, + 0.152418182001306500f, 0.151660108295005400f, 0.150901945370970040f, + 0.150143693675208330f, + 0.149385353653779810f, 0.148626925752796540f, 0.147868410418422360f, + 0.147109808096871850f, + 0.146351119234411440f, 0.145592344277358450f, 0.144833483672080240f, + 0.144074537864995330f, + 0.143315507302571590f, 0.142556392431327340f, 0.141797193697830530f, + 0.141037911548697770f, + 0.140278546430595420f, 0.139519098790238600f, 0.138759569074390380f, + 0.137999957729862760f, + 0.137240265203515700f, 0.136480491942256310f, 0.135720638393040080f, + 0.134960705002868830f, + 0.134200692218792020f, 0.133440600487905820f, 0.132680430257352130f, + 0.131920181974319760f, + 0.131159856086043410f, 0.130399453039802740f, 0.129638973282923540f, + 0.128878417262776660f, + 0.128117785426777150f, 0.127357078222385570f, 0.126596296097105960f, + 0.125835439498487020f, + 0.125074508874121300f, 0.124313504671644300f, 0.123552427338735370f, + 0.122791277323116900f, + 0.122030055072553410f, 0.121268761034852550f, 0.120507395657864240f, + 0.119745959389479630f, + 0.118984452677632520f, 0.118222875970297250f, 0.117461229715489990f, + 0.116699514361267840f, + 0.115937730355727850f, 0.115175878147008180f, 0.114413958183287050f, + 0.113651970912781920f, + 0.112889916783750470f, 0.112127796244489750f, 0.111365609743335190f, + 0.110603357728661910f, + 0.109841040648882680f, 0.109078658952449240f, 0.108316213087851300f, + 0.107553703503615710f, + 0.106791130648307380f, 0.106028494970528530f, 0.105265796918917650f, + 0.104503036942150550f, + 0.103740215488939480f, 0.102977333008032250f, 0.102214389948213370f, + 0.101451386758302160f, + 0.100688323887153970f, 0.099925201783659226f, 0.099162020896742573f, + 0.098398781675363881f, + 0.097635484568517339f, 0.096872130025230527f, 0.096108718494565468f, + 0.095345250425617742f, + 0.094581726267515473f, 0.093818146469420494f, 0.093054511480527333f, + 0.092290821750062355f, + 0.091527077727284981f, 0.090763279861485704f, 0.089999428601987341f, + 0.089235524398144139f, + 0.088471567699340822f, 0.087707558954993645f, 0.086943498614549489f, + 0.086179387127484922f, + 0.085415224943307277f, 0.084651012511553700f, 0.083886750281790226f, + 0.083122438703613077f, + 0.082358078226646619f, 0.081593669300544638f, 0.080829212374989468f, + 0.080064707899690932f, + 0.079300156324387569f, 0.078535558098845590f, 0.077770913672857989f, + 0.077006223496245585f, + 0.076241488018856149f, 0.075476707690563416f, 0.074711882961268378f, + 0.073947014280897269f, + 0.073182102099402888f, 0.072417146866763538f, 0.071652149032982254f, + 0.070887109048087787f, + 0.070122027362133646f, 0.069356904425197236f, 0.068591740687380900f, + 0.067826536598810966f, + 0.067061292609636836f, 0.066296009170032283f, 0.065530686730193397f, + 0.064765325740339871f, + 0.063999926650714078f, 0.063234489911580136f, 0.062469015973224969f, + 0.061703505285957416f, + 0.060937958300107238f, 0.060172375466026218f, 0.059406757234087247f, + 0.058641104054683348f, + 0.057875416378229017f, 0.057109694655158132f, 0.056343939335925283f, + 0.055578150871004817f, + 0.054812329710889909f, 0.054046476306093640f, 0.053280591107148056f, + 0.052514674564603257f, + 0.051748727129028414f, 0.050982749251010900f, 0.050216741381155325f, + 0.049450703970084824f, + 0.048684637468439020f, 0.047918542326875327f, 0.047152418996068000f, + 0.046386267926707213f, + 0.045620089569500123f, 0.044853884375169933f, 0.044087652794454979f, + 0.043321395278109784f, + 0.042555112276904117f, 0.041788804241622082f, 0.041022471623063397f, + 0.040256114872041358f, + 0.039489734439384118f, 0.038723330775933762f, 0.037956904332545366f, + 0.037190455560088091f, + 0.036423984909444228f, 0.035657492831508264f, 0.034890979777187955f, + 0.034124446197403423f, + 0.033357892543086159f, 0.032591319265180385f, 0.031824726814640963f, + 0.031058115642434700f, + 0.030291486199539423f, 0.029524838936943035f, 0.028758174305644590f, + 0.027991492756653365f, + 0.027224794740987910f, 0.026458080709677145f, 0.025691351113759395f, + 0.024924606404281485f, + 0.024157847032300020f, 0.023391073448879338f, 0.022624286105092803f, + 0.021857485452021874f, + 0.021090671940755180f, 0.020323846022389572f, 0.019557008148029204f, + 0.018790158768784596f, + 0.018023298335773701f, 0.017256427300120978f, 0.016489546112956454f, + 0.015722655225417017f, + 0.014955755088644378f, 0.014188846153786343f, 0.013421928871995907f, + 0.012655003694430301f, + 0.011888071072252072f, 0.011121131456628141f, 0.010354185298728884f, + 0.009587233049729183f, + 0.008820275160807512f, 0.008053312083144991f, 0.007286344267926684f, + 0.006519372166339549f, + 0.005752396229573737f, 0.004985416908821652f, 0.004218434655277024f, + 0.003451449920135975f, + 0.002684463154596083f, 0.001917474809855460f, 0.001150485337113809f, + 0.000383495187571497f +}; + +/** + * @brief Initialization function for the floating-point DCT4/IDCT4. + * @param[in,out] *S points to an instance of floating-point DCT4/IDCT4 structure. + * @param[in] *S_RFFT points to an instance of floating-point RFFT/RIFFT structure. + * @param[in] *S_CFFT points to an instance of floating-point CFFT/CIFFT structure. + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported transform length. + * \par Normalizing factor: + * The normalizing factor is sqrt(2/N), which depends on the size of transform N. + * Floating-point normalizing factors are mentioned in the table below for different DCT sizes: + * \image html dct4NormalizingF32Table.gif + */ + +arm_status arm_dct4_init_f32( + arm_dct4_instance_f32 * S, + arm_rfft_instance_f32 * S_RFFT, + arm_cfft_radix4_instance_f32 * S_CFFT, + uint16_t N, + uint16_t Nby2, + float32_t normalize) +{ + /* Initialize the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + + /* Initializing the pointer array with the weight table base addresses of different lengths */ + float32_t *twiddlePtr[3] = + { (float32_t *) Weights_128, (float32_t *) Weights_512, + (float32_t *) Weights_2048 + }; + + /* Initializing the pointer array with the cos factor table base addresses of different lengths */ + float32_t *pCosFactor[3] = + { (float32_t *) cos_factors_128, (float32_t *) cos_factors_512, + (float32_t *) cos_factors_2048 + }; + + /* Initialize the DCT4 length */ + S->N = N; + + /* Initialize the half of DCT4 length */ + S->Nby2 = Nby2; + + /* Initialize the DCT4 Normalizing factor */ + S->normalize = normalize; + + /* Initialize Real FFT Instance */ + S->pRfft = S_RFFT; + + /* Initialize Complex FFT Instance */ + S->pCfft = S_CFFT; + + switch (N) + { + /* Initialize the table modifier values */ + case 2048u: + S->pTwiddle = twiddlePtr[2]; + S->pCosFactor = pCosFactor[2]; + break; + case 512u: + S->pTwiddle = twiddlePtr[1]; + S->pCosFactor = pCosFactor[1]; + break; + case 128u: + S->pTwiddle = twiddlePtr[0]; + S->pCosFactor = pCosFactor[0]; + break; + default: + status = ARM_MATH_ARGUMENT_ERROR; + } + + /* Initialize the RFFT/RIFFT */ + arm_rfft_init_f32(S->pRfft, S->pCfft, S->N, 0u, 1u); + + /* return the status of DCT4 Init function */ + return (status); +} + +/** + * @} end of DCT4_IDCT4 group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q15.c new file mode 100644 index 000000000..260f1b77f --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q15.c @@ -0,0 +1,1190 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_dct4_init_q15.c +* +* Description: Initialization function of DCT-4 & IDCT4 Q15 +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + + +#include "arm_math.h" + +/** + * @ingroup groupTransforms + */ + +/** + * @addtogroup DCT4_IDCT4 + * @{ + */ + +/* +* @brief Weights Table +*/ + +/** +* \par +* Weights tables are generated using the formula :
weights[n] = e^(-j*n*pi/(2*N))
+* \par +* C command to generate the table +*
   
+* for(i = 0; i< N; i++)   
+* {   
+*   weights[2*i]= cos(i*c);   
+*   weights[(2*i)+1]= -sin(i * c);   
+* } 
+* \par +* where N is the Number of weights to be calculated and c is pi/(2*N) +* \par +* Converted the output to q15 format by multiplying with 2^31 and saturated if required. +* \par +* In the tables below the real and imaginary values are placed alternatively, hence the +* array length is 2*N. +*/ + +static const q15_t WeightsQ15_128[256] = { + 0x7fff, 0x0, 0x7ffd, 0xfe6e, 0x7ff6, 0xfcdc, 0x7fe9, 0xfb4a, + 0x7fd8, 0xf9b9, 0x7fc2, 0xf827, 0x7fa7, 0xf696, 0x7f87, 0xf505, + 0x7f62, 0xf375, 0x7f38, 0xf1e5, 0x7f09, 0xf055, 0x7ed5, 0xeec7, + 0x7e9d, 0xed38, 0x7e5f, 0xebab, 0x7e1d, 0xea1e, 0x7dd6, 0xe893, + 0x7d8a, 0xe708, 0x7d39, 0xe57e, 0x7ce3, 0xe3f5, 0x7c89, 0xe26d, + 0x7c29, 0xe0e7, 0x7bc5, 0xdf61, 0x7b5d, 0xdddd, 0x7aef, 0xdc5a, + 0x7a7d, 0xdad8, 0x7a05, 0xd958, 0x798a, 0xd7da, 0x7909, 0xd65d, + 0x7884, 0xd4e1, 0x77fa, 0xd368, 0x776c, 0xd1ef, 0x76d9, 0xd079, + 0x7641, 0xcf05, 0x75a5, 0xcd92, 0x7504, 0xcc22, 0x745f, 0xcab3, + 0x73b5, 0xc946, 0x7307, 0xc7dc, 0x7255, 0xc674, 0x719e, 0xc50e, + 0x70e2, 0xc3aa, 0x7023, 0xc248, 0x6f5f, 0xc0e9, 0x6e96, 0xbf8d, + 0x6dca, 0xbe32, 0x6cf9, 0xbcdb, 0x6c24, 0xbb86, 0x6b4a, 0xba33, + 0x6a6d, 0xb8e4, 0x698c, 0xb797, 0x68a6, 0xb64c, 0x67bd, 0xb505, + 0x66cf, 0xb3c1, 0x65dd, 0xb27f, 0x64e8, 0xb141, 0x63ef, 0xb005, + 0x62f2, 0xaecd, 0x61f1, 0xad97, 0x60ec, 0xac65, 0x5fe3, 0xab36, + 0x5ed7, 0xaa0b, 0x5dc7, 0xa8e3, 0x5cb4, 0xa7be, 0x5b9d, 0xa69c, + 0x5a82, 0xa57e, 0x5964, 0xa463, 0x5842, 0xa34c, 0x571d, 0xa239, + 0x55f5, 0xa129, 0x54ca, 0xa01d, 0x539b, 0x9f14, 0x5269, 0x9e0f, + 0x5133, 0x9d0e, 0x4ffb, 0x9c11, 0x4ebf, 0x9b18, 0x4d81, 0x9a23, + 0x4c3f, 0x9931, 0x4afb, 0x9843, 0x49b4, 0x975a, 0x4869, 0x9674, + 0x471c, 0x9593, 0x45cd, 0x94b6, 0x447a, 0x93dc, 0x4325, 0x9307, + 0x41ce, 0x9236, 0x4073, 0x916a, 0x3f17, 0x90a1, 0x3db8, 0x8fdd, + 0x3c56, 0x8f1e, 0x3af2, 0x8e62, 0x398c, 0x8dab, 0x3824, 0x8cf9, + 0x36ba, 0x8c4b, 0x354d, 0x8ba1, 0x33de, 0x8afc, 0x326e, 0x8a5b, + 0x30fb, 0x89bf, 0x2f87, 0x8927, 0x2e11, 0x8894, 0x2c98, 0x8806, + 0x2b1f, 0x877c, 0x29a3, 0x86f7, 0x2826, 0x8676, 0x26a8, 0x85fb, + 0x2528, 0x8583, 0x23a6, 0x8511, 0x2223, 0x84a3, 0x209f, 0x843b, + 0x1f19, 0x83d7, 0x1d93, 0x8377, 0x1c0b, 0x831d, 0x1a82, 0x82c7, + 0x18f8, 0x8276, 0x176d, 0x822a, 0x15e2, 0x81e3, 0x1455, 0x81a1, + 0x12c8, 0x8163, 0x1139, 0x812b, 0xfab, 0x80f7, 0xe1b, 0x80c8, + 0xc8b, 0x809e, 0xafb, 0x8079, 0x96a, 0x8059, 0x7d9, 0x803e, + 0x647, 0x8028, 0x4b6, 0x8017, 0x324, 0x800a, 0x192, 0x8003, +}; + +static const q15_t WeightsQ15_512[1024] = { + 0x7fff, 0x0, 0x7fff, 0xff9c, 0x7fff, 0xff37, 0x7ffe, 0xfed3, + 0x7ffd, 0xfe6e, 0x7ffc, 0xfe0a, 0x7ffa, 0xfda5, 0x7ff8, 0xfd41, + 0x7ff6, 0xfcdc, 0x7ff3, 0xfc78, 0x7ff0, 0xfc13, 0x7fed, 0xfbaf, + 0x7fe9, 0xfb4a, 0x7fe5, 0xfae6, 0x7fe1, 0xfa81, 0x7fdd, 0xfa1d, + 0x7fd8, 0xf9b9, 0x7fd3, 0xf954, 0x7fce, 0xf8f0, 0x7fc8, 0xf88b, + 0x7fc2, 0xf827, 0x7fbc, 0xf7c3, 0x7fb5, 0xf75e, 0x7fae, 0xf6fa, + 0x7fa7, 0xf696, 0x7f9f, 0xf632, 0x7f97, 0xf5cd, 0x7f8f, 0xf569, + 0x7f87, 0xf505, 0x7f7e, 0xf4a1, 0x7f75, 0xf43d, 0x7f6b, 0xf3d9, + 0x7f62, 0xf375, 0x7f58, 0xf311, 0x7f4d, 0xf2ad, 0x7f43, 0xf249, + 0x7f38, 0xf1e5, 0x7f2d, 0xf181, 0x7f21, 0xf11d, 0x7f15, 0xf0b9, + 0x7f09, 0xf055, 0x7efd, 0xeff2, 0x7ef0, 0xef8e, 0x7ee3, 0xef2a, + 0x7ed5, 0xeec7, 0x7ec8, 0xee63, 0x7eba, 0xedff, 0x7eab, 0xed9c, + 0x7e9d, 0xed38, 0x7e8e, 0xecd5, 0x7e7f, 0xec72, 0x7e6f, 0xec0e, + 0x7e5f, 0xebab, 0x7e4f, 0xeb48, 0x7e3f, 0xeae5, 0x7e2e, 0xea81, + 0x7e1d, 0xea1e, 0x7e0c, 0xe9bb, 0x7dfa, 0xe958, 0x7de8, 0xe8f6, + 0x7dd6, 0xe893, 0x7dc3, 0xe830, 0x7db0, 0xe7cd, 0x7d9d, 0xe76a, + 0x7d8a, 0xe708, 0x7d76, 0xe6a5, 0x7d62, 0xe643, 0x7d4e, 0xe5e0, + 0x7d39, 0xe57e, 0x7d24, 0xe51c, 0x7d0f, 0xe4b9, 0x7cf9, 0xe457, + 0x7ce3, 0xe3f5, 0x7ccd, 0xe393, 0x7cb7, 0xe331, 0x7ca0, 0xe2cf, + 0x7c89, 0xe26d, 0x7c71, 0xe20b, 0x7c5a, 0xe1aa, 0x7c42, 0xe148, + 0x7c29, 0xe0e7, 0x7c11, 0xe085, 0x7bf8, 0xe024, 0x7bdf, 0xdfc2, + 0x7bc5, 0xdf61, 0x7bac, 0xdf00, 0x7b92, 0xde9f, 0x7b77, 0xde3e, + 0x7b5d, 0xdddd, 0x7b42, 0xdd7c, 0x7b26, 0xdd1b, 0x7b0b, 0xdcbb, + 0x7aef, 0xdc5a, 0x7ad3, 0xdbf9, 0x7ab6, 0xdb99, 0x7a9a, 0xdb39, + 0x7a7d, 0xdad8, 0x7a5f, 0xda78, 0x7a42, 0xda18, 0x7a24, 0xd9b8, + 0x7a05, 0xd958, 0x79e7, 0xd8f9, 0x79c8, 0xd899, 0x79a9, 0xd839, + 0x798a, 0xd7da, 0x796a, 0xd77a, 0x794a, 0xd71b, 0x792a, 0xd6bc, + 0x7909, 0xd65d, 0x78e8, 0xd5fe, 0x78c7, 0xd59f, 0x78a6, 0xd540, + 0x7884, 0xd4e1, 0x7862, 0xd483, 0x7840, 0xd424, 0x781d, 0xd3c6, + 0x77fa, 0xd368, 0x77d7, 0xd309, 0x77b4, 0xd2ab, 0x7790, 0xd24d, + 0x776c, 0xd1ef, 0x7747, 0xd192, 0x7723, 0xd134, 0x76fe, 0xd0d7, + 0x76d9, 0xd079, 0x76b3, 0xd01c, 0x768e, 0xcfbf, 0x7668, 0xcf62, + 0x7641, 0xcf05, 0x761b, 0xcea8, 0x75f4, 0xce4b, 0x75cc, 0xcdef, + 0x75a5, 0xcd92, 0x757d, 0xcd36, 0x7555, 0xccda, 0x752d, 0xcc7e, + 0x7504, 0xcc22, 0x74db, 0xcbc6, 0x74b2, 0xcb6a, 0x7489, 0xcb0e, + 0x745f, 0xcab3, 0x7435, 0xca58, 0x740b, 0xc9fc, 0x73e0, 0xc9a1, + 0x73b5, 0xc946, 0x738a, 0xc8ec, 0x735f, 0xc891, 0x7333, 0xc836, + 0x7307, 0xc7dc, 0x72db, 0xc782, 0x72af, 0xc728, 0x7282, 0xc6ce, + 0x7255, 0xc674, 0x7227, 0xc61a, 0x71fa, 0xc5c0, 0x71cc, 0xc567, + 0x719e, 0xc50e, 0x716f, 0xc4b4, 0x7141, 0xc45b, 0x7112, 0xc403, + 0x70e2, 0xc3aa, 0x70b3, 0xc351, 0x7083, 0xc2f9, 0x7053, 0xc2a0, + 0x7023, 0xc248, 0x6ff2, 0xc1f0, 0x6fc1, 0xc198, 0x6f90, 0xc141, + 0x6f5f, 0xc0e9, 0x6f2d, 0xc092, 0x6efb, 0xc03b, 0x6ec9, 0xbfe3, + 0x6e96, 0xbf8d, 0x6e63, 0xbf36, 0x6e30, 0xbedf, 0x6dfd, 0xbe89, + 0x6dca, 0xbe32, 0x6d96, 0xbddc, 0x6d62, 0xbd86, 0x6d2d, 0xbd30, + 0x6cf9, 0xbcdb, 0x6cc4, 0xbc85, 0x6c8f, 0xbc30, 0x6c59, 0xbbdb, + 0x6c24, 0xbb86, 0x6bee, 0xbb31, 0x6bb8, 0xbadc, 0x6b81, 0xba88, + 0x6b4a, 0xba33, 0x6b13, 0xb9df, 0x6adc, 0xb98b, 0x6aa5, 0xb937, + 0x6a6d, 0xb8e4, 0x6a35, 0xb890, 0x69fd, 0xb83d, 0x69c4, 0xb7ea, + 0x698c, 0xb797, 0x6953, 0xb744, 0x6919, 0xb6f1, 0x68e0, 0xb69f, + 0x68a6, 0xb64c, 0x686c, 0xb5fa, 0x6832, 0xb5a8, 0x67f7, 0xb557, + 0x67bd, 0xb505, 0x6782, 0xb4b4, 0x6746, 0xb462, 0x670b, 0xb411, + 0x66cf, 0xb3c1, 0x6693, 0xb370, 0x6657, 0xb31f, 0x661a, 0xb2cf, + 0x65dd, 0xb27f, 0x65a0, 0xb22f, 0x6563, 0xb1df, 0x6526, 0xb190, + 0x64e8, 0xb141, 0x64aa, 0xb0f1, 0x646c, 0xb0a2, 0x642d, 0xb054, + 0x63ef, 0xb005, 0x63b0, 0xafb7, 0x6371, 0xaf69, 0x6331, 0xaf1b, + 0x62f2, 0xaecd, 0x62b2, 0xae7f, 0x6271, 0xae32, 0x6231, 0xade4, + 0x61f1, 0xad97, 0x61b0, 0xad4b, 0x616f, 0xacfe, 0x612d, 0xacb2, + 0x60ec, 0xac65, 0x60aa, 0xac19, 0x6068, 0xabcd, 0x6026, 0xab82, + 0x5fe3, 0xab36, 0x5fa0, 0xaaeb, 0x5f5e, 0xaaa0, 0x5f1a, 0xaa55, + 0x5ed7, 0xaa0b, 0x5e93, 0xa9c0, 0x5e50, 0xa976, 0x5e0b, 0xa92c, + 0x5dc7, 0xa8e3, 0x5d83, 0xa899, 0x5d3e, 0xa850, 0x5cf9, 0xa807, + 0x5cb4, 0xa7be, 0x5c6e, 0xa775, 0x5c29, 0xa72c, 0x5be3, 0xa6e4, + 0x5b9d, 0xa69c, 0x5b56, 0xa654, 0x5b10, 0xa60d, 0x5ac9, 0xa5c5, + 0x5a82, 0xa57e, 0x5a3b, 0xa537, 0x59f3, 0xa4f0, 0x59ac, 0xa4aa, + 0x5964, 0xa463, 0x591c, 0xa41d, 0x58d4, 0xa3d7, 0x588b, 0xa392, + 0x5842, 0xa34c, 0x57f9, 0xa307, 0x57b0, 0xa2c2, 0x5767, 0xa27d, + 0x571d, 0xa239, 0x56d4, 0xa1f5, 0x568a, 0xa1b0, 0x5640, 0xa16d, + 0x55f5, 0xa129, 0x55ab, 0xa0e6, 0x5560, 0xa0a2, 0x5515, 0xa060, + 0x54ca, 0xa01d, 0x547e, 0x9fda, 0x5433, 0x9f98, 0x53e7, 0x9f56, + 0x539b, 0x9f14, 0x534e, 0x9ed3, 0x5302, 0x9e91, 0x52b5, 0x9e50, + 0x5269, 0x9e0f, 0x521c, 0x9dcf, 0x51ce, 0x9d8f, 0x5181, 0x9d4e, + 0x5133, 0x9d0e, 0x50e5, 0x9ccf, 0x5097, 0x9c8f, 0x5049, 0x9c50, + 0x4ffb, 0x9c11, 0x4fac, 0x9bd3, 0x4f5e, 0x9b94, 0x4f0f, 0x9b56, + 0x4ebf, 0x9b18, 0x4e70, 0x9ada, 0x4e21, 0x9a9d, 0x4dd1, 0x9a60, + 0x4d81, 0x9a23, 0x4d31, 0x99e6, 0x4ce1, 0x99a9, 0x4c90, 0x996d, + 0x4c3f, 0x9931, 0x4bef, 0x98f5, 0x4b9e, 0x98ba, 0x4b4c, 0x987e, + 0x4afb, 0x9843, 0x4aa9, 0x9809, 0x4a58, 0x97ce, 0x4a06, 0x9794, + 0x49b4, 0x975a, 0x4961, 0x9720, 0x490f, 0x96e7, 0x48bc, 0x96ad, + 0x4869, 0x9674, 0x4816, 0x963c, 0x47c3, 0x9603, 0x4770, 0x95cb, + 0x471c, 0x9593, 0x46c9, 0x955b, 0x4675, 0x9524, 0x4621, 0x94ed, + 0x45cd, 0x94b6, 0x4578, 0x947f, 0x4524, 0x9448, 0x44cf, 0x9412, + 0x447a, 0x93dc, 0x4425, 0x93a7, 0x43d0, 0x9371, 0x437b, 0x933c, + 0x4325, 0x9307, 0x42d0, 0x92d3, 0x427a, 0x929e, 0x4224, 0x926a, + 0x41ce, 0x9236, 0x4177, 0x9203, 0x4121, 0x91d0, 0x40ca, 0x919d, + 0x4073, 0x916a, 0x401d, 0x9137, 0x3fc5, 0x9105, 0x3f6e, 0x90d3, + 0x3f17, 0x90a1, 0x3ebf, 0x9070, 0x3e68, 0x903f, 0x3e10, 0x900e, + 0x3db8, 0x8fdd, 0x3d60, 0x8fad, 0x3d07, 0x8f7d, 0x3caf, 0x8f4d, + 0x3c56, 0x8f1e, 0x3bfd, 0x8eee, 0x3ba5, 0x8ebf, 0x3b4c, 0x8e91, + 0x3af2, 0x8e62, 0x3a99, 0x8e34, 0x3a40, 0x8e06, 0x39e6, 0x8dd9, + 0x398c, 0x8dab, 0x3932, 0x8d7e, 0x38d8, 0x8d51, 0x387e, 0x8d25, + 0x3824, 0x8cf9, 0x37ca, 0x8ccd, 0x376f, 0x8ca1, 0x3714, 0x8c76, + 0x36ba, 0x8c4b, 0x365f, 0x8c20, 0x3604, 0x8bf5, 0x35a8, 0x8bcb, + 0x354d, 0x8ba1, 0x34f2, 0x8b77, 0x3496, 0x8b4e, 0x343a, 0x8b25, + 0x33de, 0x8afc, 0x3382, 0x8ad3, 0x3326, 0x8aab, 0x32ca, 0x8a83, + 0x326e, 0x8a5b, 0x3211, 0x8a34, 0x31b5, 0x8a0c, 0x3158, 0x89e5, + 0x30fb, 0x89bf, 0x309e, 0x8998, 0x3041, 0x8972, 0x2fe4, 0x894d, + 0x2f87, 0x8927, 0x2f29, 0x8902, 0x2ecc, 0x88dd, 0x2e6e, 0x88b9, + 0x2e11, 0x8894, 0x2db3, 0x8870, 0x2d55, 0x884c, 0x2cf7, 0x8829, + 0x2c98, 0x8806, 0x2c3a, 0x87e3, 0x2bdc, 0x87c0, 0x2b7d, 0x879e, + 0x2b1f, 0x877c, 0x2ac0, 0x875a, 0x2a61, 0x8739, 0x2a02, 0x8718, + 0x29a3, 0x86f7, 0x2944, 0x86d6, 0x28e5, 0x86b6, 0x2886, 0x8696, + 0x2826, 0x8676, 0x27c7, 0x8657, 0x2767, 0x8638, 0x2707, 0x8619, + 0x26a8, 0x85fb, 0x2648, 0x85dc, 0x25e8, 0x85be, 0x2588, 0x85a1, + 0x2528, 0x8583, 0x24c7, 0x8566, 0x2467, 0x854a, 0x2407, 0x852d, + 0x23a6, 0x8511, 0x2345, 0x84f5, 0x22e5, 0x84da, 0x2284, 0x84be, + 0x2223, 0x84a3, 0x21c2, 0x8489, 0x2161, 0x846e, 0x2100, 0x8454, + 0x209f, 0x843b, 0x203e, 0x8421, 0x1fdc, 0x8408, 0x1f7b, 0x83ef, + 0x1f19, 0x83d7, 0x1eb8, 0x83be, 0x1e56, 0x83a6, 0x1df5, 0x838f, + 0x1d93, 0x8377, 0x1d31, 0x8360, 0x1ccf, 0x8349, 0x1c6d, 0x8333, + 0x1c0b, 0x831d, 0x1ba9, 0x8307, 0x1b47, 0x82f1, 0x1ae4, 0x82dc, + 0x1a82, 0x82c7, 0x1a20, 0x82b2, 0x19bd, 0x829e, 0x195b, 0x828a, + 0x18f8, 0x8276, 0x1896, 0x8263, 0x1833, 0x8250, 0x17d0, 0x823d, + 0x176d, 0x822a, 0x170a, 0x8218, 0x16a8, 0x8206, 0x1645, 0x81f4, + 0x15e2, 0x81e3, 0x157f, 0x81d2, 0x151b, 0x81c1, 0x14b8, 0x81b1, + 0x1455, 0x81a1, 0x13f2, 0x8191, 0x138e, 0x8181, 0x132b, 0x8172, + 0x12c8, 0x8163, 0x1264, 0x8155, 0x1201, 0x8146, 0x119d, 0x8138, + 0x1139, 0x812b, 0x10d6, 0x811d, 0x1072, 0x8110, 0x100e, 0x8103, + 0xfab, 0x80f7, 0xf47, 0x80eb, 0xee3, 0x80df, 0xe7f, 0x80d3, + 0xe1b, 0x80c8, 0xdb7, 0x80bd, 0xd53, 0x80b3, 0xcef, 0x80a8, + 0xc8b, 0x809e, 0xc27, 0x8095, 0xbc3, 0x808b, 0xb5f, 0x8082, + 0xafb, 0x8079, 0xa97, 0x8071, 0xa33, 0x8069, 0x9ce, 0x8061, + 0x96a, 0x8059, 0x906, 0x8052, 0x8a2, 0x804b, 0x83d, 0x8044, + 0x7d9, 0x803e, 0x775, 0x8038, 0x710, 0x8032, 0x6ac, 0x802d, + 0x647, 0x8028, 0x5e3, 0x8023, 0x57f, 0x801f, 0x51a, 0x801b, + 0x4b6, 0x8017, 0x451, 0x8013, 0x3ed, 0x8010, 0x388, 0x800d, + 0x324, 0x800a, 0x2bf, 0x8008, 0x25b, 0x8006, 0x1f6, 0x8004, + 0x192, 0x8003, 0x12d, 0x8002, 0xc9, 0x8001, 0x64, 0x8001, +}; + +static const q15_t WeightsQ15_2048[4096] = { + 0x7fff, 0x0, 0x7fff, 0xffe7, 0x7fff, 0xffce, 0x7fff, 0xffb5, + 0x7fff, 0xff9c, 0x7fff, 0xff83, 0x7fff, 0xff6a, 0x7fff, 0xff51, + 0x7fff, 0xff37, 0x7fff, 0xff1e, 0x7fff, 0xff05, 0x7ffe, 0xfeec, + 0x7ffe, 0xfed3, 0x7ffe, 0xfeba, 0x7ffe, 0xfea1, 0x7ffd, 0xfe88, + 0x7ffd, 0xfe6e, 0x7ffd, 0xfe55, 0x7ffc, 0xfe3c, 0x7ffc, 0xfe23, + 0x7ffc, 0xfe0a, 0x7ffb, 0xfdf1, 0x7ffb, 0xfdd8, 0x7ffa, 0xfdbe, + 0x7ffa, 0xfda5, 0x7ff9, 0xfd8c, 0x7ff9, 0xfd73, 0x7ff8, 0xfd5a, + 0x7ff8, 0xfd41, 0x7ff7, 0xfd28, 0x7ff7, 0xfd0f, 0x7ff6, 0xfcf5, + 0x7ff6, 0xfcdc, 0x7ff5, 0xfcc3, 0x7ff4, 0xfcaa, 0x7ff4, 0xfc91, + 0x7ff3, 0xfc78, 0x7ff2, 0xfc5f, 0x7ff2, 0xfc46, 0x7ff1, 0xfc2c, + 0x7ff0, 0xfc13, 0x7fef, 0xfbfa, 0x7fee, 0xfbe1, 0x7fee, 0xfbc8, + 0x7fed, 0xfbaf, 0x7fec, 0xfb96, 0x7feb, 0xfb7d, 0x7fea, 0xfb64, + 0x7fe9, 0xfb4a, 0x7fe8, 0xfb31, 0x7fe7, 0xfb18, 0x7fe6, 0xfaff, + 0x7fe5, 0xfae6, 0x7fe4, 0xfacd, 0x7fe3, 0xfab4, 0x7fe2, 0xfa9b, + 0x7fe1, 0xfa81, 0x7fe0, 0xfa68, 0x7fdf, 0xfa4f, 0x7fde, 0xfa36, + 0x7fdd, 0xfa1d, 0x7fdc, 0xfa04, 0x7fda, 0xf9eb, 0x7fd9, 0xf9d2, + 0x7fd8, 0xf9b9, 0x7fd7, 0xf9a0, 0x7fd6, 0xf986, 0x7fd4, 0xf96d, + 0x7fd3, 0xf954, 0x7fd2, 0xf93b, 0x7fd0, 0xf922, 0x7fcf, 0xf909, + 0x7fce, 0xf8f0, 0x7fcc, 0xf8d7, 0x7fcb, 0xf8be, 0x7fc9, 0xf8a5, + 0x7fc8, 0xf88b, 0x7fc6, 0xf872, 0x7fc5, 0xf859, 0x7fc3, 0xf840, + 0x7fc2, 0xf827, 0x7fc0, 0xf80e, 0x7fbf, 0xf7f5, 0x7fbd, 0xf7dc, + 0x7fbc, 0xf7c3, 0x7fba, 0xf7aa, 0x7fb8, 0xf791, 0x7fb7, 0xf778, + 0x7fb5, 0xf75e, 0x7fb3, 0xf745, 0x7fb1, 0xf72c, 0x7fb0, 0xf713, + 0x7fae, 0xf6fa, 0x7fac, 0xf6e1, 0x7faa, 0xf6c8, 0x7fa9, 0xf6af, + 0x7fa7, 0xf696, 0x7fa5, 0xf67d, 0x7fa3, 0xf664, 0x7fa1, 0xf64b, + 0x7f9f, 0xf632, 0x7f9d, 0xf619, 0x7f9b, 0xf600, 0x7f99, 0xf5e7, + 0x7f97, 0xf5cd, 0x7f95, 0xf5b4, 0x7f93, 0xf59b, 0x7f91, 0xf582, + 0x7f8f, 0xf569, 0x7f8d, 0xf550, 0x7f8b, 0xf537, 0x7f89, 0xf51e, + 0x7f87, 0xf505, 0x7f85, 0xf4ec, 0x7f82, 0xf4d3, 0x7f80, 0xf4ba, + 0x7f7e, 0xf4a1, 0x7f7c, 0xf488, 0x7f79, 0xf46f, 0x7f77, 0xf456, + 0x7f75, 0xf43d, 0x7f72, 0xf424, 0x7f70, 0xf40b, 0x7f6e, 0xf3f2, + 0x7f6b, 0xf3d9, 0x7f69, 0xf3c0, 0x7f67, 0xf3a7, 0x7f64, 0xf38e, + 0x7f62, 0xf375, 0x7f5f, 0xf35c, 0x7f5d, 0xf343, 0x7f5a, 0xf32a, + 0x7f58, 0xf311, 0x7f55, 0xf2f8, 0x7f53, 0xf2df, 0x7f50, 0xf2c6, + 0x7f4d, 0xf2ad, 0x7f4b, 0xf294, 0x7f48, 0xf27b, 0x7f45, 0xf262, + 0x7f43, 0xf249, 0x7f40, 0xf230, 0x7f3d, 0xf217, 0x7f3b, 0xf1fe, + 0x7f38, 0xf1e5, 0x7f35, 0xf1cc, 0x7f32, 0xf1b3, 0x7f2f, 0xf19a, + 0x7f2d, 0xf181, 0x7f2a, 0xf168, 0x7f27, 0xf14f, 0x7f24, 0xf136, + 0x7f21, 0xf11d, 0x7f1e, 0xf104, 0x7f1b, 0xf0eb, 0x7f18, 0xf0d2, + 0x7f15, 0xf0b9, 0x7f12, 0xf0a0, 0x7f0f, 0xf087, 0x7f0c, 0xf06e, + 0x7f09, 0xf055, 0x7f06, 0xf03c, 0x7f03, 0xf023, 0x7f00, 0xf00b, + 0x7efd, 0xeff2, 0x7ef9, 0xefd9, 0x7ef6, 0xefc0, 0x7ef3, 0xefa7, + 0x7ef0, 0xef8e, 0x7eed, 0xef75, 0x7ee9, 0xef5c, 0x7ee6, 0xef43, + 0x7ee3, 0xef2a, 0x7edf, 0xef11, 0x7edc, 0xeef8, 0x7ed9, 0xeedf, + 0x7ed5, 0xeec7, 0x7ed2, 0xeeae, 0x7ecf, 0xee95, 0x7ecb, 0xee7c, + 0x7ec8, 0xee63, 0x7ec4, 0xee4a, 0x7ec1, 0xee31, 0x7ebd, 0xee18, + 0x7eba, 0xedff, 0x7eb6, 0xede7, 0x7eb3, 0xedce, 0x7eaf, 0xedb5, + 0x7eab, 0xed9c, 0x7ea8, 0xed83, 0x7ea4, 0xed6a, 0x7ea1, 0xed51, + 0x7e9d, 0xed38, 0x7e99, 0xed20, 0x7e95, 0xed07, 0x7e92, 0xecee, + 0x7e8e, 0xecd5, 0x7e8a, 0xecbc, 0x7e86, 0xeca3, 0x7e83, 0xec8a, + 0x7e7f, 0xec72, 0x7e7b, 0xec59, 0x7e77, 0xec40, 0x7e73, 0xec27, + 0x7e6f, 0xec0e, 0x7e6b, 0xebf5, 0x7e67, 0xebdd, 0x7e63, 0xebc4, + 0x7e5f, 0xebab, 0x7e5b, 0xeb92, 0x7e57, 0xeb79, 0x7e53, 0xeb61, + 0x7e4f, 0xeb48, 0x7e4b, 0xeb2f, 0x7e47, 0xeb16, 0x7e43, 0xeafd, + 0x7e3f, 0xeae5, 0x7e3b, 0xeacc, 0x7e37, 0xeab3, 0x7e32, 0xea9a, + 0x7e2e, 0xea81, 0x7e2a, 0xea69, 0x7e26, 0xea50, 0x7e21, 0xea37, + 0x7e1d, 0xea1e, 0x7e19, 0xea06, 0x7e14, 0xe9ed, 0x7e10, 0xe9d4, + 0x7e0c, 0xe9bb, 0x7e07, 0xe9a3, 0x7e03, 0xe98a, 0x7dff, 0xe971, + 0x7dfa, 0xe958, 0x7df6, 0xe940, 0x7df1, 0xe927, 0x7ded, 0xe90e, + 0x7de8, 0xe8f6, 0x7de4, 0xe8dd, 0x7ddf, 0xe8c4, 0x7dda, 0xe8ab, + 0x7dd6, 0xe893, 0x7dd1, 0xe87a, 0x7dcd, 0xe861, 0x7dc8, 0xe849, + 0x7dc3, 0xe830, 0x7dbf, 0xe817, 0x7dba, 0xe7fe, 0x7db5, 0xe7e6, + 0x7db0, 0xe7cd, 0x7dac, 0xe7b4, 0x7da7, 0xe79c, 0x7da2, 0xe783, + 0x7d9d, 0xe76a, 0x7d98, 0xe752, 0x7d94, 0xe739, 0x7d8f, 0xe720, + 0x7d8a, 0xe708, 0x7d85, 0xe6ef, 0x7d80, 0xe6d6, 0x7d7b, 0xe6be, + 0x7d76, 0xe6a5, 0x7d71, 0xe68d, 0x7d6c, 0xe674, 0x7d67, 0xe65b, + 0x7d62, 0xe643, 0x7d5d, 0xe62a, 0x7d58, 0xe611, 0x7d53, 0xe5f9, + 0x7d4e, 0xe5e0, 0x7d49, 0xe5c8, 0x7d43, 0xe5af, 0x7d3e, 0xe596, + 0x7d39, 0xe57e, 0x7d34, 0xe565, 0x7d2f, 0xe54d, 0x7d29, 0xe534, + 0x7d24, 0xe51c, 0x7d1f, 0xe503, 0x7d19, 0xe4ea, 0x7d14, 0xe4d2, + 0x7d0f, 0xe4b9, 0x7d09, 0xe4a1, 0x7d04, 0xe488, 0x7cff, 0xe470, + 0x7cf9, 0xe457, 0x7cf4, 0xe43f, 0x7cee, 0xe426, 0x7ce9, 0xe40e, + 0x7ce3, 0xe3f5, 0x7cde, 0xe3dc, 0x7cd8, 0xe3c4, 0x7cd3, 0xe3ab, + 0x7ccd, 0xe393, 0x7cc8, 0xe37a, 0x7cc2, 0xe362, 0x7cbc, 0xe349, + 0x7cb7, 0xe331, 0x7cb1, 0xe318, 0x7cab, 0xe300, 0x7ca6, 0xe2e8, + 0x7ca0, 0xe2cf, 0x7c9a, 0xe2b7, 0x7c94, 0xe29e, 0x7c8f, 0xe286, + 0x7c89, 0xe26d, 0x7c83, 0xe255, 0x7c7d, 0xe23c, 0x7c77, 0xe224, + 0x7c71, 0xe20b, 0x7c6c, 0xe1f3, 0x7c66, 0xe1db, 0x7c60, 0xe1c2, + 0x7c5a, 0xe1aa, 0x7c54, 0xe191, 0x7c4e, 0xe179, 0x7c48, 0xe160, + 0x7c42, 0xe148, 0x7c3c, 0xe130, 0x7c36, 0xe117, 0x7c30, 0xe0ff, + 0x7c29, 0xe0e7, 0x7c23, 0xe0ce, 0x7c1d, 0xe0b6, 0x7c17, 0xe09d, + 0x7c11, 0xe085, 0x7c0b, 0xe06d, 0x7c05, 0xe054, 0x7bfe, 0xe03c, + 0x7bf8, 0xe024, 0x7bf2, 0xe00b, 0x7beb, 0xdff3, 0x7be5, 0xdfdb, + 0x7bdf, 0xdfc2, 0x7bd9, 0xdfaa, 0x7bd2, 0xdf92, 0x7bcc, 0xdf79, + 0x7bc5, 0xdf61, 0x7bbf, 0xdf49, 0x7bb9, 0xdf30, 0x7bb2, 0xdf18, + 0x7bac, 0xdf00, 0x7ba5, 0xdee8, 0x7b9f, 0xdecf, 0x7b98, 0xdeb7, + 0x7b92, 0xde9f, 0x7b8b, 0xde87, 0x7b84, 0xde6e, 0x7b7e, 0xde56, + 0x7b77, 0xde3e, 0x7b71, 0xde26, 0x7b6a, 0xde0d, 0x7b63, 0xddf5, + 0x7b5d, 0xdddd, 0x7b56, 0xddc5, 0x7b4f, 0xddac, 0x7b48, 0xdd94, + 0x7b42, 0xdd7c, 0x7b3b, 0xdd64, 0x7b34, 0xdd4c, 0x7b2d, 0xdd33, + 0x7b26, 0xdd1b, 0x7b1f, 0xdd03, 0x7b19, 0xdceb, 0x7b12, 0xdcd3, + 0x7b0b, 0xdcbb, 0x7b04, 0xdca2, 0x7afd, 0xdc8a, 0x7af6, 0xdc72, + 0x7aef, 0xdc5a, 0x7ae8, 0xdc42, 0x7ae1, 0xdc2a, 0x7ada, 0xdc12, + 0x7ad3, 0xdbf9, 0x7acc, 0xdbe1, 0x7ac5, 0xdbc9, 0x7abd, 0xdbb1, + 0x7ab6, 0xdb99, 0x7aaf, 0xdb81, 0x7aa8, 0xdb69, 0x7aa1, 0xdb51, + 0x7a9a, 0xdb39, 0x7a92, 0xdb21, 0x7a8b, 0xdb09, 0x7a84, 0xdaf1, + 0x7a7d, 0xdad8, 0x7a75, 0xdac0, 0x7a6e, 0xdaa8, 0x7a67, 0xda90, + 0x7a5f, 0xda78, 0x7a58, 0xda60, 0x7a50, 0xda48, 0x7a49, 0xda30, + 0x7a42, 0xda18, 0x7a3a, 0xda00, 0x7a33, 0xd9e8, 0x7a2b, 0xd9d0, + 0x7a24, 0xd9b8, 0x7a1c, 0xd9a0, 0x7a15, 0xd988, 0x7a0d, 0xd970, + 0x7a05, 0xd958, 0x79fe, 0xd940, 0x79f6, 0xd928, 0x79ef, 0xd911, + 0x79e7, 0xd8f9, 0x79df, 0xd8e1, 0x79d8, 0xd8c9, 0x79d0, 0xd8b1, + 0x79c8, 0xd899, 0x79c0, 0xd881, 0x79b9, 0xd869, 0x79b1, 0xd851, + 0x79a9, 0xd839, 0x79a1, 0xd821, 0x7999, 0xd80a, 0x7992, 0xd7f2, + 0x798a, 0xd7da, 0x7982, 0xd7c2, 0x797a, 0xd7aa, 0x7972, 0xd792, + 0x796a, 0xd77a, 0x7962, 0xd763, 0x795a, 0xd74b, 0x7952, 0xd733, + 0x794a, 0xd71b, 0x7942, 0xd703, 0x793a, 0xd6eb, 0x7932, 0xd6d4, + 0x792a, 0xd6bc, 0x7922, 0xd6a4, 0x7919, 0xd68c, 0x7911, 0xd675, + 0x7909, 0xd65d, 0x7901, 0xd645, 0x78f9, 0xd62d, 0x78f1, 0xd615, + 0x78e8, 0xd5fe, 0x78e0, 0xd5e6, 0x78d8, 0xd5ce, 0x78cf, 0xd5b7, + 0x78c7, 0xd59f, 0x78bf, 0xd587, 0x78b6, 0xd56f, 0x78ae, 0xd558, + 0x78a6, 0xd540, 0x789d, 0xd528, 0x7895, 0xd511, 0x788c, 0xd4f9, + 0x7884, 0xd4e1, 0x787c, 0xd4ca, 0x7873, 0xd4b2, 0x786b, 0xd49a, + 0x7862, 0xd483, 0x7859, 0xd46b, 0x7851, 0xd453, 0x7848, 0xd43c, + 0x7840, 0xd424, 0x7837, 0xd40d, 0x782e, 0xd3f5, 0x7826, 0xd3dd, + 0x781d, 0xd3c6, 0x7814, 0xd3ae, 0x780c, 0xd397, 0x7803, 0xd37f, + 0x77fa, 0xd368, 0x77f1, 0xd350, 0x77e9, 0xd338, 0x77e0, 0xd321, + 0x77d7, 0xd309, 0x77ce, 0xd2f2, 0x77c5, 0xd2da, 0x77bc, 0xd2c3, + 0x77b4, 0xd2ab, 0x77ab, 0xd294, 0x77a2, 0xd27c, 0x7799, 0xd265, + 0x7790, 0xd24d, 0x7787, 0xd236, 0x777e, 0xd21e, 0x7775, 0xd207, + 0x776c, 0xd1ef, 0x7763, 0xd1d8, 0x775a, 0xd1c1, 0x7751, 0xd1a9, + 0x7747, 0xd192, 0x773e, 0xd17a, 0x7735, 0xd163, 0x772c, 0xd14b, + 0x7723, 0xd134, 0x771a, 0xd11d, 0x7710, 0xd105, 0x7707, 0xd0ee, + 0x76fe, 0xd0d7, 0x76f5, 0xd0bf, 0x76eb, 0xd0a8, 0x76e2, 0xd091, + 0x76d9, 0xd079, 0x76cf, 0xd062, 0x76c6, 0xd04b, 0x76bd, 0xd033, + 0x76b3, 0xd01c, 0x76aa, 0xd005, 0x76a0, 0xcfed, 0x7697, 0xcfd6, + 0x768e, 0xcfbf, 0x7684, 0xcfa7, 0x767b, 0xcf90, 0x7671, 0xcf79, + 0x7668, 0xcf62, 0x765e, 0xcf4a, 0x7654, 0xcf33, 0x764b, 0xcf1c, + 0x7641, 0xcf05, 0x7638, 0xceee, 0x762e, 0xced6, 0x7624, 0xcebf, + 0x761b, 0xcea8, 0x7611, 0xce91, 0x7607, 0xce7a, 0x75fd, 0xce62, + 0x75f4, 0xce4b, 0x75ea, 0xce34, 0x75e0, 0xce1d, 0x75d6, 0xce06, + 0x75cc, 0xcdef, 0x75c3, 0xcdd8, 0x75b9, 0xcdc0, 0x75af, 0xcda9, + 0x75a5, 0xcd92, 0x759b, 0xcd7b, 0x7591, 0xcd64, 0x7587, 0xcd4d, + 0x757d, 0xcd36, 0x7573, 0xcd1f, 0x7569, 0xcd08, 0x755f, 0xccf1, + 0x7555, 0xccda, 0x754b, 0xccc3, 0x7541, 0xccac, 0x7537, 0xcc95, + 0x752d, 0xcc7e, 0x7523, 0xcc67, 0x7519, 0xcc50, 0x750f, 0xcc39, + 0x7504, 0xcc22, 0x74fa, 0xcc0b, 0x74f0, 0xcbf4, 0x74e6, 0xcbdd, + 0x74db, 0xcbc6, 0x74d1, 0xcbaf, 0x74c7, 0xcb98, 0x74bd, 0xcb81, + 0x74b2, 0xcb6a, 0x74a8, 0xcb53, 0x749e, 0xcb3c, 0x7493, 0xcb25, + 0x7489, 0xcb0e, 0x747e, 0xcaf8, 0x7474, 0xcae1, 0x746a, 0xcaca, + 0x745f, 0xcab3, 0x7455, 0xca9c, 0x744a, 0xca85, 0x7440, 0xca6e, + 0x7435, 0xca58, 0x742b, 0xca41, 0x7420, 0xca2a, 0x7415, 0xca13, + 0x740b, 0xc9fc, 0x7400, 0xc9e6, 0x73f6, 0xc9cf, 0x73eb, 0xc9b8, + 0x73e0, 0xc9a1, 0x73d6, 0xc98b, 0x73cb, 0xc974, 0x73c0, 0xc95d, + 0x73b5, 0xc946, 0x73ab, 0xc930, 0x73a0, 0xc919, 0x7395, 0xc902, + 0x738a, 0xc8ec, 0x737f, 0xc8d5, 0x7375, 0xc8be, 0x736a, 0xc8a8, + 0x735f, 0xc891, 0x7354, 0xc87a, 0x7349, 0xc864, 0x733e, 0xc84d, + 0x7333, 0xc836, 0x7328, 0xc820, 0x731d, 0xc809, 0x7312, 0xc7f3, + 0x7307, 0xc7dc, 0x72fc, 0xc7c5, 0x72f1, 0xc7af, 0x72e6, 0xc798, + 0x72db, 0xc782, 0x72d0, 0xc76b, 0x72c5, 0xc755, 0x72ba, 0xc73e, + 0x72af, 0xc728, 0x72a3, 0xc711, 0x7298, 0xc6fa, 0x728d, 0xc6e4, + 0x7282, 0xc6ce, 0x7276, 0xc6b7, 0x726b, 0xc6a1, 0x7260, 0xc68a, + 0x7255, 0xc674, 0x7249, 0xc65d, 0x723e, 0xc647, 0x7233, 0xc630, + 0x7227, 0xc61a, 0x721c, 0xc603, 0x7211, 0xc5ed, 0x7205, 0xc5d7, + 0x71fa, 0xc5c0, 0x71ee, 0xc5aa, 0x71e3, 0xc594, 0x71d7, 0xc57d, + 0x71cc, 0xc567, 0x71c0, 0xc551, 0x71b5, 0xc53a, 0x71a9, 0xc524, + 0x719e, 0xc50e, 0x7192, 0xc4f7, 0x7186, 0xc4e1, 0x717b, 0xc4cb, + 0x716f, 0xc4b4, 0x7164, 0xc49e, 0x7158, 0xc488, 0x714c, 0xc472, + 0x7141, 0xc45b, 0x7135, 0xc445, 0x7129, 0xc42f, 0x711d, 0xc419, + 0x7112, 0xc403, 0x7106, 0xc3ec, 0x70fa, 0xc3d6, 0x70ee, 0xc3c0, + 0x70e2, 0xc3aa, 0x70d6, 0xc394, 0x70cb, 0xc37d, 0x70bf, 0xc367, + 0x70b3, 0xc351, 0x70a7, 0xc33b, 0x709b, 0xc325, 0x708f, 0xc30f, + 0x7083, 0xc2f9, 0x7077, 0xc2e3, 0x706b, 0xc2cd, 0x705f, 0xc2b7, + 0x7053, 0xc2a0, 0x7047, 0xc28a, 0x703b, 0xc274, 0x702f, 0xc25e, + 0x7023, 0xc248, 0x7016, 0xc232, 0x700a, 0xc21c, 0x6ffe, 0xc206, + 0x6ff2, 0xc1f0, 0x6fe6, 0xc1da, 0x6fda, 0xc1c4, 0x6fcd, 0xc1ae, + 0x6fc1, 0xc198, 0x6fb5, 0xc183, 0x6fa9, 0xc16d, 0x6f9c, 0xc157, + 0x6f90, 0xc141, 0x6f84, 0xc12b, 0x6f77, 0xc115, 0x6f6b, 0xc0ff, + 0x6f5f, 0xc0e9, 0x6f52, 0xc0d3, 0x6f46, 0xc0bd, 0x6f39, 0xc0a8, + 0x6f2d, 0xc092, 0x6f20, 0xc07c, 0x6f14, 0xc066, 0x6f07, 0xc050, + 0x6efb, 0xc03b, 0x6eee, 0xc025, 0x6ee2, 0xc00f, 0x6ed5, 0xbff9, + 0x6ec9, 0xbfe3, 0x6ebc, 0xbfce, 0x6eaf, 0xbfb8, 0x6ea3, 0xbfa2, + 0x6e96, 0xbf8d, 0x6e89, 0xbf77, 0x6e7d, 0xbf61, 0x6e70, 0xbf4b, + 0x6e63, 0xbf36, 0x6e57, 0xbf20, 0x6e4a, 0xbf0a, 0x6e3d, 0xbef5, + 0x6e30, 0xbedf, 0x6e24, 0xbeca, 0x6e17, 0xbeb4, 0x6e0a, 0xbe9e, + 0x6dfd, 0xbe89, 0x6df0, 0xbe73, 0x6de3, 0xbe5e, 0x6dd6, 0xbe48, + 0x6dca, 0xbe32, 0x6dbd, 0xbe1d, 0x6db0, 0xbe07, 0x6da3, 0xbdf2, + 0x6d96, 0xbddc, 0x6d89, 0xbdc7, 0x6d7c, 0xbdb1, 0x6d6f, 0xbd9c, + 0x6d62, 0xbd86, 0x6d55, 0xbd71, 0x6d48, 0xbd5b, 0x6d3a, 0xbd46, + 0x6d2d, 0xbd30, 0x6d20, 0xbd1b, 0x6d13, 0xbd06, 0x6d06, 0xbcf0, + 0x6cf9, 0xbcdb, 0x6cec, 0xbcc5, 0x6cde, 0xbcb0, 0x6cd1, 0xbc9b, + 0x6cc4, 0xbc85, 0x6cb7, 0xbc70, 0x6ca9, 0xbc5b, 0x6c9c, 0xbc45, + 0x6c8f, 0xbc30, 0x6c81, 0xbc1b, 0x6c74, 0xbc05, 0x6c67, 0xbbf0, + 0x6c59, 0xbbdb, 0x6c4c, 0xbbc5, 0x6c3f, 0xbbb0, 0x6c31, 0xbb9b, + 0x6c24, 0xbb86, 0x6c16, 0xbb70, 0x6c09, 0xbb5b, 0x6bfb, 0xbb46, + 0x6bee, 0xbb31, 0x6be0, 0xbb1c, 0x6bd3, 0xbb06, 0x6bc5, 0xbaf1, + 0x6bb8, 0xbadc, 0x6baa, 0xbac7, 0x6b9c, 0xbab2, 0x6b8f, 0xba9d, + 0x6b81, 0xba88, 0x6b73, 0xba73, 0x6b66, 0xba5d, 0x6b58, 0xba48, + 0x6b4a, 0xba33, 0x6b3d, 0xba1e, 0x6b2f, 0xba09, 0x6b21, 0xb9f4, + 0x6b13, 0xb9df, 0x6b06, 0xb9ca, 0x6af8, 0xb9b5, 0x6aea, 0xb9a0, + 0x6adc, 0xb98b, 0x6ace, 0xb976, 0x6ac1, 0xb961, 0x6ab3, 0xb94c, + 0x6aa5, 0xb937, 0x6a97, 0xb922, 0x6a89, 0xb90d, 0x6a7b, 0xb8f8, + 0x6a6d, 0xb8e4, 0x6a5f, 0xb8cf, 0x6a51, 0xb8ba, 0x6a43, 0xb8a5, + 0x6a35, 0xb890, 0x6a27, 0xb87b, 0x6a19, 0xb866, 0x6a0b, 0xb852, + 0x69fd, 0xb83d, 0x69ef, 0xb828, 0x69e1, 0xb813, 0x69d3, 0xb7fe, + 0x69c4, 0xb7ea, 0x69b6, 0xb7d5, 0x69a8, 0xb7c0, 0x699a, 0xb7ab, + 0x698c, 0xb797, 0x697d, 0xb782, 0x696f, 0xb76d, 0x6961, 0xb758, + 0x6953, 0xb744, 0x6944, 0xb72f, 0x6936, 0xb71a, 0x6928, 0xb706, + 0x6919, 0xb6f1, 0x690b, 0xb6dd, 0x68fd, 0xb6c8, 0x68ee, 0xb6b3, + 0x68e0, 0xb69f, 0x68d1, 0xb68a, 0x68c3, 0xb676, 0x68b5, 0xb661, + 0x68a6, 0xb64c, 0x6898, 0xb638, 0x6889, 0xb623, 0x687b, 0xb60f, + 0x686c, 0xb5fa, 0x685e, 0xb5e6, 0x684f, 0xb5d1, 0x6840, 0xb5bd, + 0x6832, 0xb5a8, 0x6823, 0xb594, 0x6815, 0xb57f, 0x6806, 0xb56b, + 0x67f7, 0xb557, 0x67e9, 0xb542, 0x67da, 0xb52e, 0x67cb, 0xb519, + 0x67bd, 0xb505, 0x67ae, 0xb4f1, 0x679f, 0xb4dc, 0x6790, 0xb4c8, + 0x6782, 0xb4b4, 0x6773, 0xb49f, 0x6764, 0xb48b, 0x6755, 0xb477, + 0x6746, 0xb462, 0x6737, 0xb44e, 0x6729, 0xb43a, 0x671a, 0xb426, + 0x670b, 0xb411, 0x66fc, 0xb3fd, 0x66ed, 0xb3e9, 0x66de, 0xb3d5, + 0x66cf, 0xb3c1, 0x66c0, 0xb3ac, 0x66b1, 0xb398, 0x66a2, 0xb384, + 0x6693, 0xb370, 0x6684, 0xb35c, 0x6675, 0xb348, 0x6666, 0xb334, + 0x6657, 0xb31f, 0x6648, 0xb30b, 0x6639, 0xb2f7, 0x6629, 0xb2e3, + 0x661a, 0xb2cf, 0x660b, 0xb2bb, 0x65fc, 0xb2a7, 0x65ed, 0xb293, + 0x65dd, 0xb27f, 0x65ce, 0xb26b, 0x65bf, 0xb257, 0x65b0, 0xb243, + 0x65a0, 0xb22f, 0x6591, 0xb21b, 0x6582, 0xb207, 0x6573, 0xb1f3, + 0x6563, 0xb1df, 0x6554, 0xb1cc, 0x6545, 0xb1b8, 0x6535, 0xb1a4, + 0x6526, 0xb190, 0x6516, 0xb17c, 0x6507, 0xb168, 0x64f7, 0xb154, + 0x64e8, 0xb141, 0x64d9, 0xb12d, 0x64c9, 0xb119, 0x64ba, 0xb105, + 0x64aa, 0xb0f1, 0x649b, 0xb0de, 0x648b, 0xb0ca, 0x647b, 0xb0b6, + 0x646c, 0xb0a2, 0x645c, 0xb08f, 0x644d, 0xb07b, 0x643d, 0xb067, + 0x642d, 0xb054, 0x641e, 0xb040, 0x640e, 0xb02c, 0x63fe, 0xb019, + 0x63ef, 0xb005, 0x63df, 0xaff1, 0x63cf, 0xafde, 0x63c0, 0xafca, + 0x63b0, 0xafb7, 0x63a0, 0xafa3, 0x6390, 0xaf90, 0x6380, 0xaf7c, + 0x6371, 0xaf69, 0x6361, 0xaf55, 0x6351, 0xaf41, 0x6341, 0xaf2e, + 0x6331, 0xaf1b, 0x6321, 0xaf07, 0x6311, 0xaef4, 0x6301, 0xaee0, + 0x62f2, 0xaecd, 0x62e2, 0xaeb9, 0x62d2, 0xaea6, 0x62c2, 0xae92, + 0x62b2, 0xae7f, 0x62a2, 0xae6c, 0x6292, 0xae58, 0x6282, 0xae45, + 0x6271, 0xae32, 0x6261, 0xae1e, 0x6251, 0xae0b, 0x6241, 0xadf8, + 0x6231, 0xade4, 0x6221, 0xadd1, 0x6211, 0xadbe, 0x6201, 0xadab, + 0x61f1, 0xad97, 0x61e0, 0xad84, 0x61d0, 0xad71, 0x61c0, 0xad5e, + 0x61b0, 0xad4b, 0x619f, 0xad37, 0x618f, 0xad24, 0x617f, 0xad11, + 0x616f, 0xacfe, 0x615e, 0xaceb, 0x614e, 0xacd8, 0x613e, 0xacc5, + 0x612d, 0xacb2, 0x611d, 0xac9e, 0x610d, 0xac8b, 0x60fc, 0xac78, + 0x60ec, 0xac65, 0x60db, 0xac52, 0x60cb, 0xac3f, 0x60ba, 0xac2c, + 0x60aa, 0xac19, 0x6099, 0xac06, 0x6089, 0xabf3, 0x6078, 0xabe0, + 0x6068, 0xabcd, 0x6057, 0xabbb, 0x6047, 0xaba8, 0x6036, 0xab95, + 0x6026, 0xab82, 0x6015, 0xab6f, 0x6004, 0xab5c, 0x5ff4, 0xab49, + 0x5fe3, 0xab36, 0x5fd3, 0xab24, 0x5fc2, 0xab11, 0x5fb1, 0xaafe, + 0x5fa0, 0xaaeb, 0x5f90, 0xaad8, 0x5f7f, 0xaac6, 0x5f6e, 0xaab3, + 0x5f5e, 0xaaa0, 0x5f4d, 0xaa8e, 0x5f3c, 0xaa7b, 0x5f2b, 0xaa68, + 0x5f1a, 0xaa55, 0x5f0a, 0xaa43, 0x5ef9, 0xaa30, 0x5ee8, 0xaa1d, + 0x5ed7, 0xaa0b, 0x5ec6, 0xa9f8, 0x5eb5, 0xa9e6, 0x5ea4, 0xa9d3, + 0x5e93, 0xa9c0, 0x5e82, 0xa9ae, 0x5e71, 0xa99b, 0x5e60, 0xa989, + 0x5e50, 0xa976, 0x5e3f, 0xa964, 0x5e2d, 0xa951, 0x5e1c, 0xa93f, + 0x5e0b, 0xa92c, 0x5dfa, 0xa91a, 0x5de9, 0xa907, 0x5dd8, 0xa8f5, + 0x5dc7, 0xa8e3, 0x5db6, 0xa8d0, 0x5da5, 0xa8be, 0x5d94, 0xa8ab, + 0x5d83, 0xa899, 0x5d71, 0xa887, 0x5d60, 0xa874, 0x5d4f, 0xa862, + 0x5d3e, 0xa850, 0x5d2d, 0xa83d, 0x5d1b, 0xa82b, 0x5d0a, 0xa819, + 0x5cf9, 0xa807, 0x5ce8, 0xa7f4, 0x5cd6, 0xa7e2, 0x5cc5, 0xa7d0, + 0x5cb4, 0xa7be, 0x5ca2, 0xa7ab, 0x5c91, 0xa799, 0x5c80, 0xa787, + 0x5c6e, 0xa775, 0x5c5d, 0xa763, 0x5c4b, 0xa751, 0x5c3a, 0xa73f, + 0x5c29, 0xa72c, 0x5c17, 0xa71a, 0x5c06, 0xa708, 0x5bf4, 0xa6f6, + 0x5be3, 0xa6e4, 0x5bd1, 0xa6d2, 0x5bc0, 0xa6c0, 0x5bae, 0xa6ae, + 0x5b9d, 0xa69c, 0x5b8b, 0xa68a, 0x5b79, 0xa678, 0x5b68, 0xa666, + 0x5b56, 0xa654, 0x5b45, 0xa642, 0x5b33, 0xa630, 0x5b21, 0xa61f, + 0x5b10, 0xa60d, 0x5afe, 0xa5fb, 0x5aec, 0xa5e9, 0x5adb, 0xa5d7, + 0x5ac9, 0xa5c5, 0x5ab7, 0xa5b3, 0x5aa5, 0xa5a2, 0x5a94, 0xa590, + 0x5a82, 0xa57e, 0x5a70, 0xa56c, 0x5a5e, 0xa55b, 0x5a4d, 0xa549, + 0x5a3b, 0xa537, 0x5a29, 0xa525, 0x5a17, 0xa514, 0x5a05, 0xa502, + 0x59f3, 0xa4f0, 0x59e1, 0xa4df, 0x59d0, 0xa4cd, 0x59be, 0xa4bb, + 0x59ac, 0xa4aa, 0x599a, 0xa498, 0x5988, 0xa487, 0x5976, 0xa475, + 0x5964, 0xa463, 0x5952, 0xa452, 0x5940, 0xa440, 0x592e, 0xa42f, + 0x591c, 0xa41d, 0x590a, 0xa40c, 0x58f8, 0xa3fa, 0x58e6, 0xa3e9, + 0x58d4, 0xa3d7, 0x58c1, 0xa3c6, 0x58af, 0xa3b5, 0x589d, 0xa3a3, + 0x588b, 0xa392, 0x5879, 0xa380, 0x5867, 0xa36f, 0x5855, 0xa35e, + 0x5842, 0xa34c, 0x5830, 0xa33b, 0x581e, 0xa32a, 0x580c, 0xa318, + 0x57f9, 0xa307, 0x57e7, 0xa2f6, 0x57d5, 0xa2e5, 0x57c3, 0xa2d3, + 0x57b0, 0xa2c2, 0x579e, 0xa2b1, 0x578c, 0xa2a0, 0x5779, 0xa28f, + 0x5767, 0xa27d, 0x5755, 0xa26c, 0x5742, 0xa25b, 0x5730, 0xa24a, + 0x571d, 0xa239, 0x570b, 0xa228, 0x56f9, 0xa217, 0x56e6, 0xa206, + 0x56d4, 0xa1f5, 0x56c1, 0xa1e4, 0x56af, 0xa1d3, 0x569c, 0xa1c1, + 0x568a, 0xa1b0, 0x5677, 0xa1a0, 0x5665, 0xa18f, 0x5652, 0xa17e, + 0x5640, 0xa16d, 0x562d, 0xa15c, 0x561a, 0xa14b, 0x5608, 0xa13a, + 0x55f5, 0xa129, 0x55e3, 0xa118, 0x55d0, 0xa107, 0x55bd, 0xa0f6, + 0x55ab, 0xa0e6, 0x5598, 0xa0d5, 0x5585, 0xa0c4, 0x5572, 0xa0b3, + 0x5560, 0xa0a2, 0x554d, 0xa092, 0x553a, 0xa081, 0x5528, 0xa070, + 0x5515, 0xa060, 0x5502, 0xa04f, 0x54ef, 0xa03e, 0x54dc, 0xa02d, + 0x54ca, 0xa01d, 0x54b7, 0xa00c, 0x54a4, 0x9ffc, 0x5491, 0x9feb, + 0x547e, 0x9fda, 0x546b, 0x9fca, 0x5458, 0x9fb9, 0x5445, 0x9fa9, + 0x5433, 0x9f98, 0x5420, 0x9f88, 0x540d, 0x9f77, 0x53fa, 0x9f67, + 0x53e7, 0x9f56, 0x53d4, 0x9f46, 0x53c1, 0x9f35, 0x53ae, 0x9f25, + 0x539b, 0x9f14, 0x5388, 0x9f04, 0x5375, 0x9ef3, 0x5362, 0x9ee3, + 0x534e, 0x9ed3, 0x533b, 0x9ec2, 0x5328, 0x9eb2, 0x5315, 0x9ea2, + 0x5302, 0x9e91, 0x52ef, 0x9e81, 0x52dc, 0x9e71, 0x52c9, 0x9e61, + 0x52b5, 0x9e50, 0x52a2, 0x9e40, 0x528f, 0x9e30, 0x527c, 0x9e20, + 0x5269, 0x9e0f, 0x5255, 0x9dff, 0x5242, 0x9def, 0x522f, 0x9ddf, + 0x521c, 0x9dcf, 0x5208, 0x9dbf, 0x51f5, 0x9daf, 0x51e2, 0x9d9f, + 0x51ce, 0x9d8f, 0x51bb, 0x9d7e, 0x51a8, 0x9d6e, 0x5194, 0x9d5e, + 0x5181, 0x9d4e, 0x516e, 0x9d3e, 0x515a, 0x9d2e, 0x5147, 0x9d1e, + 0x5133, 0x9d0e, 0x5120, 0x9cff, 0x510c, 0x9cef, 0x50f9, 0x9cdf, + 0x50e5, 0x9ccf, 0x50d2, 0x9cbf, 0x50bf, 0x9caf, 0x50ab, 0x9c9f, + 0x5097, 0x9c8f, 0x5084, 0x9c80, 0x5070, 0x9c70, 0x505d, 0x9c60, + 0x5049, 0x9c50, 0x5036, 0x9c40, 0x5022, 0x9c31, 0x500f, 0x9c21, + 0x4ffb, 0x9c11, 0x4fe7, 0x9c02, 0x4fd4, 0x9bf2, 0x4fc0, 0x9be2, + 0x4fac, 0x9bd3, 0x4f99, 0x9bc3, 0x4f85, 0x9bb3, 0x4f71, 0x9ba4, + 0x4f5e, 0x9b94, 0x4f4a, 0x9b85, 0x4f36, 0x9b75, 0x4f22, 0x9b65, + 0x4f0f, 0x9b56, 0x4efb, 0x9b46, 0x4ee7, 0x9b37, 0x4ed3, 0x9b27, + 0x4ebf, 0x9b18, 0x4eac, 0x9b09, 0x4e98, 0x9af9, 0x4e84, 0x9aea, + 0x4e70, 0x9ada, 0x4e5c, 0x9acb, 0x4e48, 0x9abb, 0x4e34, 0x9aac, + 0x4e21, 0x9a9d, 0x4e0d, 0x9a8d, 0x4df9, 0x9a7e, 0x4de5, 0x9a6f, + 0x4dd1, 0x9a60, 0x4dbd, 0x9a50, 0x4da9, 0x9a41, 0x4d95, 0x9a32, + 0x4d81, 0x9a23, 0x4d6d, 0x9a13, 0x4d59, 0x9a04, 0x4d45, 0x99f5, + 0x4d31, 0x99e6, 0x4d1d, 0x99d7, 0x4d09, 0x99c7, 0x4cf5, 0x99b8, + 0x4ce1, 0x99a9, 0x4ccc, 0x999a, 0x4cb8, 0x998b, 0x4ca4, 0x997c, + 0x4c90, 0x996d, 0x4c7c, 0x995e, 0x4c68, 0x994f, 0x4c54, 0x9940, + 0x4c3f, 0x9931, 0x4c2b, 0x9922, 0x4c17, 0x9913, 0x4c03, 0x9904, + 0x4bef, 0x98f5, 0x4bda, 0x98e6, 0x4bc6, 0x98d7, 0x4bb2, 0x98c9, + 0x4b9e, 0x98ba, 0x4b89, 0x98ab, 0x4b75, 0x989c, 0x4b61, 0x988d, + 0x4b4c, 0x987e, 0x4b38, 0x9870, 0x4b24, 0x9861, 0x4b0f, 0x9852, + 0x4afb, 0x9843, 0x4ae7, 0x9835, 0x4ad2, 0x9826, 0x4abe, 0x9817, + 0x4aa9, 0x9809, 0x4a95, 0x97fa, 0x4a81, 0x97eb, 0x4a6c, 0x97dd, + 0x4a58, 0x97ce, 0x4a43, 0x97c0, 0x4a2f, 0x97b1, 0x4a1a, 0x97a2, + 0x4a06, 0x9794, 0x49f1, 0x9785, 0x49dd, 0x9777, 0x49c8, 0x9768, + 0x49b4, 0x975a, 0x499f, 0x974b, 0x498a, 0x973d, 0x4976, 0x972f, + 0x4961, 0x9720, 0x494d, 0x9712, 0x4938, 0x9703, 0x4923, 0x96f5, + 0x490f, 0x96e7, 0x48fa, 0x96d8, 0x48e6, 0x96ca, 0x48d1, 0x96bc, + 0x48bc, 0x96ad, 0x48a8, 0x969f, 0x4893, 0x9691, 0x487e, 0x9683, + 0x4869, 0x9674, 0x4855, 0x9666, 0x4840, 0x9658, 0x482b, 0x964a, + 0x4816, 0x963c, 0x4802, 0x962d, 0x47ed, 0x961f, 0x47d8, 0x9611, + 0x47c3, 0x9603, 0x47ae, 0x95f5, 0x479a, 0x95e7, 0x4785, 0x95d9, + 0x4770, 0x95cb, 0x475b, 0x95bd, 0x4746, 0x95af, 0x4731, 0x95a1, + 0x471c, 0x9593, 0x4708, 0x9585, 0x46f3, 0x9577, 0x46de, 0x9569, + 0x46c9, 0x955b, 0x46b4, 0x954d, 0x469f, 0x953f, 0x468a, 0x9532, + 0x4675, 0x9524, 0x4660, 0x9516, 0x464b, 0x9508, 0x4636, 0x94fa, + 0x4621, 0x94ed, 0x460c, 0x94df, 0x45f7, 0x94d1, 0x45e2, 0x94c3, + 0x45cd, 0x94b6, 0x45b8, 0x94a8, 0x45a3, 0x949a, 0x458d, 0x948d, + 0x4578, 0x947f, 0x4563, 0x9471, 0x454e, 0x9464, 0x4539, 0x9456, + 0x4524, 0x9448, 0x450f, 0x943b, 0x44fa, 0x942d, 0x44e4, 0x9420, + 0x44cf, 0x9412, 0x44ba, 0x9405, 0x44a5, 0x93f7, 0x4490, 0x93ea, + 0x447a, 0x93dc, 0x4465, 0x93cf, 0x4450, 0x93c1, 0x443b, 0x93b4, + 0x4425, 0x93a7, 0x4410, 0x9399, 0x43fb, 0x938c, 0x43e5, 0x937f, + 0x43d0, 0x9371, 0x43bb, 0x9364, 0x43a5, 0x9357, 0x4390, 0x9349, + 0x437b, 0x933c, 0x4365, 0x932f, 0x4350, 0x9322, 0x433b, 0x9314, + 0x4325, 0x9307, 0x4310, 0x92fa, 0x42fa, 0x92ed, 0x42e5, 0x92e0, + 0x42d0, 0x92d3, 0x42ba, 0x92c6, 0x42a5, 0x92b8, 0x428f, 0x92ab, + 0x427a, 0x929e, 0x4264, 0x9291, 0x424f, 0x9284, 0x4239, 0x9277, + 0x4224, 0x926a, 0x420e, 0x925d, 0x41f9, 0x9250, 0x41e3, 0x9243, + 0x41ce, 0x9236, 0x41b8, 0x922a, 0x41a2, 0x921d, 0x418d, 0x9210, + 0x4177, 0x9203, 0x4162, 0x91f6, 0x414c, 0x91e9, 0x4136, 0x91dc, + 0x4121, 0x91d0, 0x410b, 0x91c3, 0x40f6, 0x91b6, 0x40e0, 0x91a9, + 0x40ca, 0x919d, 0x40b5, 0x9190, 0x409f, 0x9183, 0x4089, 0x9177, + 0x4073, 0x916a, 0x405e, 0x915d, 0x4048, 0x9151, 0x4032, 0x9144, + 0x401d, 0x9137, 0x4007, 0x912b, 0x3ff1, 0x911e, 0x3fdb, 0x9112, + 0x3fc5, 0x9105, 0x3fb0, 0x90f9, 0x3f9a, 0x90ec, 0x3f84, 0x90e0, + 0x3f6e, 0x90d3, 0x3f58, 0x90c7, 0x3f43, 0x90ba, 0x3f2d, 0x90ae, + 0x3f17, 0x90a1, 0x3f01, 0x9095, 0x3eeb, 0x9089, 0x3ed5, 0x907c, + 0x3ebf, 0x9070, 0x3ea9, 0x9064, 0x3e93, 0x9057, 0x3e7d, 0x904b, + 0x3e68, 0x903f, 0x3e52, 0x9033, 0x3e3c, 0x9026, 0x3e26, 0x901a, + 0x3e10, 0x900e, 0x3dfa, 0x9002, 0x3de4, 0x8ff6, 0x3dce, 0x8fea, + 0x3db8, 0x8fdd, 0x3da2, 0x8fd1, 0x3d8c, 0x8fc5, 0x3d76, 0x8fb9, + 0x3d60, 0x8fad, 0x3d49, 0x8fa1, 0x3d33, 0x8f95, 0x3d1d, 0x8f89, + 0x3d07, 0x8f7d, 0x3cf1, 0x8f71, 0x3cdb, 0x8f65, 0x3cc5, 0x8f59, + 0x3caf, 0x8f4d, 0x3c99, 0x8f41, 0x3c83, 0x8f35, 0x3c6c, 0x8f2a, + 0x3c56, 0x8f1e, 0x3c40, 0x8f12, 0x3c2a, 0x8f06, 0x3c14, 0x8efa, + 0x3bfd, 0x8eee, 0x3be7, 0x8ee3, 0x3bd1, 0x8ed7, 0x3bbb, 0x8ecb, + 0x3ba5, 0x8ebf, 0x3b8e, 0x8eb4, 0x3b78, 0x8ea8, 0x3b62, 0x8e9c, + 0x3b4c, 0x8e91, 0x3b35, 0x8e85, 0x3b1f, 0x8e7a, 0x3b09, 0x8e6e, + 0x3af2, 0x8e62, 0x3adc, 0x8e57, 0x3ac6, 0x8e4b, 0x3aaf, 0x8e40, + 0x3a99, 0x8e34, 0x3a83, 0x8e29, 0x3a6c, 0x8e1d, 0x3a56, 0x8e12, + 0x3a40, 0x8e06, 0x3a29, 0x8dfb, 0x3a13, 0x8def, 0x39fd, 0x8de4, + 0x39e6, 0x8dd9, 0x39d0, 0x8dcd, 0x39b9, 0x8dc2, 0x39a3, 0x8db7, + 0x398c, 0x8dab, 0x3976, 0x8da0, 0x395f, 0x8d95, 0x3949, 0x8d8a, + 0x3932, 0x8d7e, 0x391c, 0x8d73, 0x3906, 0x8d68, 0x38ef, 0x8d5d, + 0x38d8, 0x8d51, 0x38c2, 0x8d46, 0x38ab, 0x8d3b, 0x3895, 0x8d30, + 0x387e, 0x8d25, 0x3868, 0x8d1a, 0x3851, 0x8d0f, 0x383b, 0x8d04, + 0x3824, 0x8cf9, 0x380d, 0x8cee, 0x37f7, 0x8ce3, 0x37e0, 0x8cd8, + 0x37ca, 0x8ccd, 0x37b3, 0x8cc2, 0x379c, 0x8cb7, 0x3786, 0x8cac, + 0x376f, 0x8ca1, 0x3758, 0x8c96, 0x3742, 0x8c8b, 0x372b, 0x8c81, + 0x3714, 0x8c76, 0x36fe, 0x8c6b, 0x36e7, 0x8c60, 0x36d0, 0x8c55, + 0x36ba, 0x8c4b, 0x36a3, 0x8c40, 0x368c, 0x8c35, 0x3675, 0x8c2a, + 0x365f, 0x8c20, 0x3648, 0x8c15, 0x3631, 0x8c0a, 0x361a, 0x8c00, + 0x3604, 0x8bf5, 0x35ed, 0x8beb, 0x35d6, 0x8be0, 0x35bf, 0x8bd5, + 0x35a8, 0x8bcb, 0x3592, 0x8bc0, 0x357b, 0x8bb6, 0x3564, 0x8bab, + 0x354d, 0x8ba1, 0x3536, 0x8b96, 0x351f, 0x8b8c, 0x3508, 0x8b82, + 0x34f2, 0x8b77, 0x34db, 0x8b6d, 0x34c4, 0x8b62, 0x34ad, 0x8b58, + 0x3496, 0x8b4e, 0x347f, 0x8b43, 0x3468, 0x8b39, 0x3451, 0x8b2f, + 0x343a, 0x8b25, 0x3423, 0x8b1a, 0x340c, 0x8b10, 0x33f5, 0x8b06, + 0x33de, 0x8afc, 0x33c7, 0x8af1, 0x33b0, 0x8ae7, 0x3399, 0x8add, + 0x3382, 0x8ad3, 0x336b, 0x8ac9, 0x3354, 0x8abf, 0x333d, 0x8ab5, + 0x3326, 0x8aab, 0x330f, 0x8aa1, 0x32f8, 0x8a97, 0x32e1, 0x8a8d, + 0x32ca, 0x8a83, 0x32b3, 0x8a79, 0x329c, 0x8a6f, 0x3285, 0x8a65, + 0x326e, 0x8a5b, 0x3257, 0x8a51, 0x3240, 0x8a47, 0x3228, 0x8a3d, + 0x3211, 0x8a34, 0x31fa, 0x8a2a, 0x31e3, 0x8a20, 0x31cc, 0x8a16, + 0x31b5, 0x8a0c, 0x319e, 0x8a03, 0x3186, 0x89f9, 0x316f, 0x89ef, + 0x3158, 0x89e5, 0x3141, 0x89dc, 0x312a, 0x89d2, 0x3112, 0x89c8, + 0x30fb, 0x89bf, 0x30e4, 0x89b5, 0x30cd, 0x89ac, 0x30b6, 0x89a2, + 0x309e, 0x8998, 0x3087, 0x898f, 0x3070, 0x8985, 0x3059, 0x897c, + 0x3041, 0x8972, 0x302a, 0x8969, 0x3013, 0x8960, 0x2ffb, 0x8956, + 0x2fe4, 0x894d, 0x2fcd, 0x8943, 0x2fb5, 0x893a, 0x2f9e, 0x8931, + 0x2f87, 0x8927, 0x2f6f, 0x891e, 0x2f58, 0x8915, 0x2f41, 0x890b, + 0x2f29, 0x8902, 0x2f12, 0x88f9, 0x2efb, 0x88f0, 0x2ee3, 0x88e6, + 0x2ecc, 0x88dd, 0x2eb5, 0x88d4, 0x2e9d, 0x88cb, 0x2e86, 0x88c2, + 0x2e6e, 0x88b9, 0x2e57, 0x88af, 0x2e3f, 0x88a6, 0x2e28, 0x889d, + 0x2e11, 0x8894, 0x2df9, 0x888b, 0x2de2, 0x8882, 0x2dca, 0x8879, + 0x2db3, 0x8870, 0x2d9b, 0x8867, 0x2d84, 0x885e, 0x2d6c, 0x8855, + 0x2d55, 0x884c, 0x2d3d, 0x8844, 0x2d26, 0x883b, 0x2d0e, 0x8832, + 0x2cf7, 0x8829, 0x2cdf, 0x8820, 0x2cc8, 0x8817, 0x2cb0, 0x880f, + 0x2c98, 0x8806, 0x2c81, 0x87fd, 0x2c69, 0x87f4, 0x2c52, 0x87ec, + 0x2c3a, 0x87e3, 0x2c23, 0x87da, 0x2c0b, 0x87d2, 0x2bf3, 0x87c9, + 0x2bdc, 0x87c0, 0x2bc4, 0x87b8, 0x2bad, 0x87af, 0x2b95, 0x87a7, + 0x2b7d, 0x879e, 0x2b66, 0x8795, 0x2b4e, 0x878d, 0x2b36, 0x8784, + 0x2b1f, 0x877c, 0x2b07, 0x8774, 0x2aef, 0x876b, 0x2ad8, 0x8763, + 0x2ac0, 0x875a, 0x2aa8, 0x8752, 0x2a91, 0x874a, 0x2a79, 0x8741, + 0x2a61, 0x8739, 0x2a49, 0x8731, 0x2a32, 0x8728, 0x2a1a, 0x8720, + 0x2a02, 0x8718, 0x29eb, 0x870f, 0x29d3, 0x8707, 0x29bb, 0x86ff, + 0x29a3, 0x86f7, 0x298b, 0x86ef, 0x2974, 0x86e7, 0x295c, 0x86de, + 0x2944, 0x86d6, 0x292c, 0x86ce, 0x2915, 0x86c6, 0x28fd, 0x86be, + 0x28e5, 0x86b6, 0x28cd, 0x86ae, 0x28b5, 0x86a6, 0x289d, 0x869e, + 0x2886, 0x8696, 0x286e, 0x868e, 0x2856, 0x8686, 0x283e, 0x867e, + 0x2826, 0x8676, 0x280e, 0x866e, 0x27f6, 0x8667, 0x27df, 0x865f, + 0x27c7, 0x8657, 0x27af, 0x864f, 0x2797, 0x8647, 0x277f, 0x8640, + 0x2767, 0x8638, 0x274f, 0x8630, 0x2737, 0x8628, 0x271f, 0x8621, + 0x2707, 0x8619, 0x26ef, 0x8611, 0x26d8, 0x860a, 0x26c0, 0x8602, + 0x26a8, 0x85fb, 0x2690, 0x85f3, 0x2678, 0x85eb, 0x2660, 0x85e4, + 0x2648, 0x85dc, 0x2630, 0x85d5, 0x2618, 0x85cd, 0x2600, 0x85c6, + 0x25e8, 0x85be, 0x25d0, 0x85b7, 0x25b8, 0x85b0, 0x25a0, 0x85a8, + 0x2588, 0x85a1, 0x2570, 0x8599, 0x2558, 0x8592, 0x2540, 0x858b, + 0x2528, 0x8583, 0x250f, 0x857c, 0x24f7, 0x8575, 0x24df, 0x856e, + 0x24c7, 0x8566, 0x24af, 0x855f, 0x2497, 0x8558, 0x247f, 0x8551, + 0x2467, 0x854a, 0x244f, 0x8543, 0x2437, 0x853b, 0x241f, 0x8534, + 0x2407, 0x852d, 0x23ee, 0x8526, 0x23d6, 0x851f, 0x23be, 0x8518, + 0x23a6, 0x8511, 0x238e, 0x850a, 0x2376, 0x8503, 0x235e, 0x84fc, + 0x2345, 0x84f5, 0x232d, 0x84ee, 0x2315, 0x84e7, 0x22fd, 0x84e1, + 0x22e5, 0x84da, 0x22cd, 0x84d3, 0x22b4, 0x84cc, 0x229c, 0x84c5, + 0x2284, 0x84be, 0x226c, 0x84b8, 0x2254, 0x84b1, 0x223b, 0x84aa, + 0x2223, 0x84a3, 0x220b, 0x849d, 0x21f3, 0x8496, 0x21da, 0x848f, + 0x21c2, 0x8489, 0x21aa, 0x8482, 0x2192, 0x847c, 0x2179, 0x8475, + 0x2161, 0x846e, 0x2149, 0x8468, 0x2131, 0x8461, 0x2118, 0x845b, + 0x2100, 0x8454, 0x20e8, 0x844e, 0x20d0, 0x8447, 0x20b7, 0x8441, + 0x209f, 0x843b, 0x2087, 0x8434, 0x206e, 0x842e, 0x2056, 0x8427, + 0x203e, 0x8421, 0x2025, 0x841b, 0x200d, 0x8415, 0x1ff5, 0x840e, + 0x1fdc, 0x8408, 0x1fc4, 0x8402, 0x1fac, 0x83fb, 0x1f93, 0x83f5, + 0x1f7b, 0x83ef, 0x1f63, 0x83e9, 0x1f4a, 0x83e3, 0x1f32, 0x83dd, + 0x1f19, 0x83d7, 0x1f01, 0x83d0, 0x1ee9, 0x83ca, 0x1ed0, 0x83c4, + 0x1eb8, 0x83be, 0x1ea0, 0x83b8, 0x1e87, 0x83b2, 0x1e6f, 0x83ac, + 0x1e56, 0x83a6, 0x1e3e, 0x83a0, 0x1e25, 0x839a, 0x1e0d, 0x8394, + 0x1df5, 0x838f, 0x1ddc, 0x8389, 0x1dc4, 0x8383, 0x1dab, 0x837d, + 0x1d93, 0x8377, 0x1d7a, 0x8371, 0x1d62, 0x836c, 0x1d49, 0x8366, + 0x1d31, 0x8360, 0x1d18, 0x835a, 0x1d00, 0x8355, 0x1ce8, 0x834f, + 0x1ccf, 0x8349, 0x1cb7, 0x8344, 0x1c9e, 0x833e, 0x1c86, 0x8338, + 0x1c6d, 0x8333, 0x1c55, 0x832d, 0x1c3c, 0x8328, 0x1c24, 0x8322, + 0x1c0b, 0x831d, 0x1bf2, 0x8317, 0x1bda, 0x8312, 0x1bc1, 0x830c, + 0x1ba9, 0x8307, 0x1b90, 0x8301, 0x1b78, 0x82fc, 0x1b5f, 0x82f7, + 0x1b47, 0x82f1, 0x1b2e, 0x82ec, 0x1b16, 0x82e7, 0x1afd, 0x82e1, + 0x1ae4, 0x82dc, 0x1acc, 0x82d7, 0x1ab3, 0x82d1, 0x1a9b, 0x82cc, + 0x1a82, 0x82c7, 0x1a6a, 0x82c2, 0x1a51, 0x82bd, 0x1a38, 0x82b7, + 0x1a20, 0x82b2, 0x1a07, 0x82ad, 0x19ef, 0x82a8, 0x19d6, 0x82a3, + 0x19bd, 0x829e, 0x19a5, 0x8299, 0x198c, 0x8294, 0x1973, 0x828f, + 0x195b, 0x828a, 0x1942, 0x8285, 0x192a, 0x8280, 0x1911, 0x827b, + 0x18f8, 0x8276, 0x18e0, 0x8271, 0x18c7, 0x826c, 0x18ae, 0x8268, + 0x1896, 0x8263, 0x187d, 0x825e, 0x1864, 0x8259, 0x184c, 0x8254, + 0x1833, 0x8250, 0x181a, 0x824b, 0x1802, 0x8246, 0x17e9, 0x8241, + 0x17d0, 0x823d, 0x17b7, 0x8238, 0x179f, 0x8233, 0x1786, 0x822f, + 0x176d, 0x822a, 0x1755, 0x8226, 0x173c, 0x8221, 0x1723, 0x821c, + 0x170a, 0x8218, 0x16f2, 0x8213, 0x16d9, 0x820f, 0x16c0, 0x820a, + 0x16a8, 0x8206, 0x168f, 0x8201, 0x1676, 0x81fd, 0x165d, 0x81f9, + 0x1645, 0x81f4, 0x162c, 0x81f0, 0x1613, 0x81ec, 0x15fa, 0x81e7, + 0x15e2, 0x81e3, 0x15c9, 0x81df, 0x15b0, 0x81da, 0x1597, 0x81d6, + 0x157f, 0x81d2, 0x1566, 0x81ce, 0x154d, 0x81c9, 0x1534, 0x81c5, + 0x151b, 0x81c1, 0x1503, 0x81bd, 0x14ea, 0x81b9, 0x14d1, 0x81b5, + 0x14b8, 0x81b1, 0x149f, 0x81ad, 0x1487, 0x81a9, 0x146e, 0x81a5, + 0x1455, 0x81a1, 0x143c, 0x819d, 0x1423, 0x8199, 0x140b, 0x8195, + 0x13f2, 0x8191, 0x13d9, 0x818d, 0x13c0, 0x8189, 0x13a7, 0x8185, + 0x138e, 0x8181, 0x1376, 0x817d, 0x135d, 0x817a, 0x1344, 0x8176, + 0x132b, 0x8172, 0x1312, 0x816e, 0x12f9, 0x816b, 0x12e0, 0x8167, + 0x12c8, 0x8163, 0x12af, 0x815f, 0x1296, 0x815c, 0x127d, 0x8158, + 0x1264, 0x8155, 0x124b, 0x8151, 0x1232, 0x814d, 0x1219, 0x814a, + 0x1201, 0x8146, 0x11e8, 0x8143, 0x11cf, 0x813f, 0x11b6, 0x813c, + 0x119d, 0x8138, 0x1184, 0x8135, 0x116b, 0x8131, 0x1152, 0x812e, + 0x1139, 0x812b, 0x1121, 0x8127, 0x1108, 0x8124, 0x10ef, 0x8121, + 0x10d6, 0x811d, 0x10bd, 0x811a, 0x10a4, 0x8117, 0x108b, 0x8113, + 0x1072, 0x8110, 0x1059, 0x810d, 0x1040, 0x810a, 0x1027, 0x8107, + 0x100e, 0x8103, 0xff5, 0x8100, 0xfdd, 0x80fd, 0xfc4, 0x80fa, + 0xfab, 0x80f7, 0xf92, 0x80f4, 0xf79, 0x80f1, 0xf60, 0x80ee, + 0xf47, 0x80eb, 0xf2e, 0x80e8, 0xf15, 0x80e5, 0xefc, 0x80e2, + 0xee3, 0x80df, 0xeca, 0x80dc, 0xeb1, 0x80d9, 0xe98, 0x80d6, + 0xe7f, 0x80d3, 0xe66, 0x80d1, 0xe4d, 0x80ce, 0xe34, 0x80cb, + 0xe1b, 0x80c8, 0xe02, 0x80c5, 0xde9, 0x80c3, 0xdd0, 0x80c0, + 0xdb7, 0x80bd, 0xd9e, 0x80bb, 0xd85, 0x80b8, 0xd6c, 0x80b5, + 0xd53, 0x80b3, 0xd3a, 0x80b0, 0xd21, 0x80ad, 0xd08, 0x80ab, + 0xcef, 0x80a8, 0xcd6, 0x80a6, 0xcbd, 0x80a3, 0xca4, 0x80a1, + 0xc8b, 0x809e, 0xc72, 0x809c, 0xc59, 0x8099, 0xc40, 0x8097, + 0xc27, 0x8095, 0xc0e, 0x8092, 0xbf5, 0x8090, 0xbdc, 0x808e, + 0xbc3, 0x808b, 0xbaa, 0x8089, 0xb91, 0x8087, 0xb78, 0x8084, + 0xb5f, 0x8082, 0xb46, 0x8080, 0xb2d, 0x807e, 0xb14, 0x807b, + 0xafb, 0x8079, 0xae2, 0x8077, 0xac9, 0x8075, 0xab0, 0x8073, + 0xa97, 0x8071, 0xa7e, 0x806f, 0xa65, 0x806d, 0xa4c, 0x806b, + 0xa33, 0x8069, 0xa19, 0x8067, 0xa00, 0x8065, 0x9e7, 0x8063, + 0x9ce, 0x8061, 0x9b5, 0x805f, 0x99c, 0x805d, 0x983, 0x805b, + 0x96a, 0x8059, 0x951, 0x8057, 0x938, 0x8056, 0x91f, 0x8054, + 0x906, 0x8052, 0x8ed, 0x8050, 0x8d4, 0x804f, 0x8bb, 0x804d, + 0x8a2, 0x804b, 0x888, 0x8049, 0x86f, 0x8048, 0x856, 0x8046, + 0x83d, 0x8044, 0x824, 0x8043, 0x80b, 0x8041, 0x7f2, 0x8040, + 0x7d9, 0x803e, 0x7c0, 0x803d, 0x7a7, 0x803b, 0x78e, 0x803a, + 0x775, 0x8038, 0x75b, 0x8037, 0x742, 0x8035, 0x729, 0x8034, + 0x710, 0x8032, 0x6f7, 0x8031, 0x6de, 0x8030, 0x6c5, 0x802e, + 0x6ac, 0x802d, 0x693, 0x802c, 0x67a, 0x802a, 0x660, 0x8029, + 0x647, 0x8028, 0x62e, 0x8027, 0x615, 0x8026, 0x5fc, 0x8024, + 0x5e3, 0x8023, 0x5ca, 0x8022, 0x5b1, 0x8021, 0x598, 0x8020, + 0x57f, 0x801f, 0x565, 0x801e, 0x54c, 0x801d, 0x533, 0x801c, + 0x51a, 0x801b, 0x501, 0x801a, 0x4e8, 0x8019, 0x4cf, 0x8018, + 0x4b6, 0x8017, 0x49c, 0x8016, 0x483, 0x8015, 0x46a, 0x8014, + 0x451, 0x8013, 0x438, 0x8012, 0x41f, 0x8012, 0x406, 0x8011, + 0x3ed, 0x8010, 0x3d4, 0x800f, 0x3ba, 0x800e, 0x3a1, 0x800e, + 0x388, 0x800d, 0x36f, 0x800c, 0x356, 0x800c, 0x33d, 0x800b, + 0x324, 0x800a, 0x30b, 0x800a, 0x2f1, 0x8009, 0x2d8, 0x8009, + 0x2bf, 0x8008, 0x2a6, 0x8008, 0x28d, 0x8007, 0x274, 0x8007, + 0x25b, 0x8006, 0x242, 0x8006, 0x228, 0x8005, 0x20f, 0x8005, + 0x1f6, 0x8004, 0x1dd, 0x8004, 0x1c4, 0x8004, 0x1ab, 0x8003, + 0x192, 0x8003, 0x178, 0x8003, 0x15f, 0x8002, 0x146, 0x8002, + 0x12d, 0x8002, 0x114, 0x8002, 0xfb, 0x8001, 0xe2, 0x8001, + 0xc9, 0x8001, 0xaf, 0x8001, 0x96, 0x8001, 0x7d, 0x8001, + 0x64, 0x8001, 0x4b, 0x8001, 0x32, 0x8001, 0x19, 0x8001, +}; + +/** +* \par +* cosFactor tables are generated using the formula :
 cos_factors[n] = 2 * cos((2n+1)*pi/(4*N)) 
+* \par +* C command to generate the table +*
   
+* for(i = 0; i< N; i++)   
+* {   
+*   cos_factors[i]= 2 * cos((2*i+1)*c/2);   
+* } 
+* \par +* where N is the number of factors to generate and c is pi/(2*N) +* \par +* Then converted to q15 format by multiplying with 2^31 and saturated if required. + +*/ + +static const q15_t cos_factorsQ15_128[128] = { + 0x7fff, 0x7ffa, 0x7ff0, 0x7fe1, 0x7fce, 0x7fb5, 0x7f97, 0x7f75, + 0x7f4d, 0x7f21, 0x7ef0, 0x7eba, 0x7e7f, 0x7e3f, 0x7dfa, 0x7db0, + 0x7d62, 0x7d0f, 0x7cb7, 0x7c5a, 0x7bf8, 0x7b92, 0x7b26, 0x7ab6, + 0x7a42, 0x79c8, 0x794a, 0x78c7, 0x7840, 0x77b4, 0x7723, 0x768e, + 0x75f4, 0x7555, 0x74b2, 0x740b, 0x735f, 0x72af, 0x71fa, 0x7141, + 0x7083, 0x6fc1, 0x6efb, 0x6e30, 0x6d62, 0x6c8f, 0x6bb8, 0x6adc, + 0x69fd, 0x6919, 0x6832, 0x6746, 0x6657, 0x6563, 0x646c, 0x6371, + 0x6271, 0x616f, 0x6068, 0x5f5e, 0x5e50, 0x5d3e, 0x5c29, 0x5b10, + 0x59f3, 0x58d4, 0x57b0, 0x568a, 0x5560, 0x5433, 0x5302, 0x51ce, + 0x5097, 0x4f5e, 0x4e21, 0x4ce1, 0x4b9e, 0x4a58, 0x490f, 0x47c3, + 0x4675, 0x4524, 0x43d0, 0x427a, 0x4121, 0x3fc5, 0x3e68, 0x3d07, + 0x3ba5, 0x3a40, 0x38d8, 0x376f, 0x3604, 0x3496, 0x3326, 0x31b5, + 0x3041, 0x2ecc, 0x2d55, 0x2bdc, 0x2a61, 0x28e5, 0x2767, 0x25e8, + 0x2467, 0x22e5, 0x2161, 0x1fdc, 0x1e56, 0x1ccf, 0x1b47, 0x19bd, + 0x1833, 0x16a8, 0x151b, 0x138e, 0x1201, 0x1072, 0xee3, 0xd53, + 0xbc3, 0xa33, 0x8a2, 0x710, 0x57f, 0x3ed, 0x25b, 0xc9 +}; + +static const q15_t cos_factorsQ15_512[512] = { + 0x7fff, 0x7fff, 0x7fff, 0x7ffe, 0x7ffc, 0x7ffb, 0x7ff9, 0x7ff7, + 0x7ff4, 0x7ff2, 0x7fee, 0x7feb, 0x7fe7, 0x7fe3, 0x7fdf, 0x7fda, + 0x7fd6, 0x7fd0, 0x7fcb, 0x7fc5, 0x7fbf, 0x7fb8, 0x7fb1, 0x7faa, + 0x7fa3, 0x7f9b, 0x7f93, 0x7f8b, 0x7f82, 0x7f79, 0x7f70, 0x7f67, + 0x7f5d, 0x7f53, 0x7f48, 0x7f3d, 0x7f32, 0x7f27, 0x7f1b, 0x7f0f, + 0x7f03, 0x7ef6, 0x7ee9, 0x7edc, 0x7ecf, 0x7ec1, 0x7eb3, 0x7ea4, + 0x7e95, 0x7e86, 0x7e77, 0x7e67, 0x7e57, 0x7e47, 0x7e37, 0x7e26, + 0x7e14, 0x7e03, 0x7df1, 0x7ddf, 0x7dcd, 0x7dba, 0x7da7, 0x7d94, + 0x7d80, 0x7d6c, 0x7d58, 0x7d43, 0x7d2f, 0x7d19, 0x7d04, 0x7cee, + 0x7cd8, 0x7cc2, 0x7cab, 0x7c94, 0x7c7d, 0x7c66, 0x7c4e, 0x7c36, + 0x7c1d, 0x7c05, 0x7beb, 0x7bd2, 0x7bb9, 0x7b9f, 0x7b84, 0x7b6a, + 0x7b4f, 0x7b34, 0x7b19, 0x7afd, 0x7ae1, 0x7ac5, 0x7aa8, 0x7a8b, + 0x7a6e, 0x7a50, 0x7a33, 0x7a15, 0x79f6, 0x79d8, 0x79b9, 0x7999, + 0x797a, 0x795a, 0x793a, 0x7919, 0x78f9, 0x78d8, 0x78b6, 0x7895, + 0x7873, 0x7851, 0x782e, 0x780c, 0x77e9, 0x77c5, 0x77a2, 0x777e, + 0x775a, 0x7735, 0x7710, 0x76eb, 0x76c6, 0x76a0, 0x767b, 0x7654, + 0x762e, 0x7607, 0x75e0, 0x75b9, 0x7591, 0x7569, 0x7541, 0x7519, + 0x74f0, 0x74c7, 0x749e, 0x7474, 0x744a, 0x7420, 0x73f6, 0x73cb, + 0x73a0, 0x7375, 0x7349, 0x731d, 0x72f1, 0x72c5, 0x7298, 0x726b, + 0x723e, 0x7211, 0x71e3, 0x71b5, 0x7186, 0x7158, 0x7129, 0x70fa, + 0x70cb, 0x709b, 0x706b, 0x703b, 0x700a, 0x6fda, 0x6fa9, 0x6f77, + 0x6f46, 0x6f14, 0x6ee2, 0x6eaf, 0x6e7d, 0x6e4a, 0x6e17, 0x6de3, + 0x6db0, 0x6d7c, 0x6d48, 0x6d13, 0x6cde, 0x6ca9, 0x6c74, 0x6c3f, + 0x6c09, 0x6bd3, 0x6b9c, 0x6b66, 0x6b2f, 0x6af8, 0x6ac1, 0x6a89, + 0x6a51, 0x6a19, 0x69e1, 0x69a8, 0x696f, 0x6936, 0x68fd, 0x68c3, + 0x6889, 0x684f, 0x6815, 0x67da, 0x679f, 0x6764, 0x6729, 0x66ed, + 0x66b1, 0x6675, 0x6639, 0x65fc, 0x65bf, 0x6582, 0x6545, 0x6507, + 0x64c9, 0x648b, 0x644d, 0x640e, 0x63cf, 0x6390, 0x6351, 0x6311, + 0x62d2, 0x6292, 0x6251, 0x6211, 0x61d0, 0x618f, 0x614e, 0x610d, + 0x60cb, 0x6089, 0x6047, 0x6004, 0x5fc2, 0x5f7f, 0x5f3c, 0x5ef9, + 0x5eb5, 0x5e71, 0x5e2d, 0x5de9, 0x5da5, 0x5d60, 0x5d1b, 0x5cd6, + 0x5c91, 0x5c4b, 0x5c06, 0x5bc0, 0x5b79, 0x5b33, 0x5aec, 0x5aa5, + 0x5a5e, 0x5a17, 0x59d0, 0x5988, 0x5940, 0x58f8, 0x58af, 0x5867, + 0x581e, 0x57d5, 0x578c, 0x5742, 0x56f9, 0x56af, 0x5665, 0x561a, + 0x55d0, 0x5585, 0x553a, 0x54ef, 0x54a4, 0x5458, 0x540d, 0x53c1, + 0x5375, 0x5328, 0x52dc, 0x528f, 0x5242, 0x51f5, 0x51a8, 0x515a, + 0x510c, 0x50bf, 0x5070, 0x5022, 0x4fd4, 0x4f85, 0x4f36, 0x4ee7, + 0x4e98, 0x4e48, 0x4df9, 0x4da9, 0x4d59, 0x4d09, 0x4cb8, 0x4c68, + 0x4c17, 0x4bc6, 0x4b75, 0x4b24, 0x4ad2, 0x4a81, 0x4a2f, 0x49dd, + 0x498a, 0x4938, 0x48e6, 0x4893, 0x4840, 0x47ed, 0x479a, 0x4746, + 0x46f3, 0x469f, 0x464b, 0x45f7, 0x45a3, 0x454e, 0x44fa, 0x44a5, + 0x4450, 0x43fb, 0x43a5, 0x4350, 0x42fa, 0x42a5, 0x424f, 0x41f9, + 0x41a2, 0x414c, 0x40f6, 0x409f, 0x4048, 0x3ff1, 0x3f9a, 0x3f43, + 0x3eeb, 0x3e93, 0x3e3c, 0x3de4, 0x3d8c, 0x3d33, 0x3cdb, 0x3c83, + 0x3c2a, 0x3bd1, 0x3b78, 0x3b1f, 0x3ac6, 0x3a6c, 0x3a13, 0x39b9, + 0x395f, 0x3906, 0x38ab, 0x3851, 0x37f7, 0x379c, 0x3742, 0x36e7, + 0x368c, 0x3631, 0x35d6, 0x357b, 0x351f, 0x34c4, 0x3468, 0x340c, + 0x33b0, 0x3354, 0x32f8, 0x329c, 0x3240, 0x31e3, 0x3186, 0x312a, + 0x30cd, 0x3070, 0x3013, 0x2fb5, 0x2f58, 0x2efb, 0x2e9d, 0x2e3f, + 0x2de2, 0x2d84, 0x2d26, 0x2cc8, 0x2c69, 0x2c0b, 0x2bad, 0x2b4e, + 0x2aef, 0x2a91, 0x2a32, 0x29d3, 0x2974, 0x2915, 0x28b5, 0x2856, + 0x27f6, 0x2797, 0x2737, 0x26d8, 0x2678, 0x2618, 0x25b8, 0x2558, + 0x24f7, 0x2497, 0x2437, 0x23d6, 0x2376, 0x2315, 0x22b4, 0x2254, + 0x21f3, 0x2192, 0x2131, 0x20d0, 0x206e, 0x200d, 0x1fac, 0x1f4a, + 0x1ee9, 0x1e87, 0x1e25, 0x1dc4, 0x1d62, 0x1d00, 0x1c9e, 0x1c3c, + 0x1bda, 0x1b78, 0x1b16, 0x1ab3, 0x1a51, 0x19ef, 0x198c, 0x192a, + 0x18c7, 0x1864, 0x1802, 0x179f, 0x173c, 0x16d9, 0x1676, 0x1613, + 0x15b0, 0x154d, 0x14ea, 0x1487, 0x1423, 0x13c0, 0x135d, 0x12f9, + 0x1296, 0x1232, 0x11cf, 0x116b, 0x1108, 0x10a4, 0x1040, 0xfdd, + 0xf79, 0xf15, 0xeb1, 0xe4d, 0xde9, 0xd85, 0xd21, 0xcbd, + 0xc59, 0xbf5, 0xb91, 0xb2d, 0xac9, 0xa65, 0xa00, 0x99c, + 0x938, 0x8d4, 0x86f, 0x80b, 0x7a7, 0x742, 0x6de, 0x67a, + 0x615, 0x5b1, 0x54c, 0x4e8, 0x483, 0x41f, 0x3ba, 0x356, + 0x2f1, 0x28d, 0x228, 0x1c4, 0x15f, 0xfb, 0x96, 0x32, +}; + +static const q15_t cos_factorsQ15_2048[2048] = { + 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, + 0x7fff, 0x7fff, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffd, 0x7ffd, + 0x7ffd, 0x7ffd, 0x7ffc, 0x7ffc, 0x7ffb, 0x7ffb, 0x7ffb, 0x7ffa, + 0x7ffa, 0x7ff9, 0x7ff9, 0x7ff8, 0x7ff8, 0x7ff7, 0x7ff7, 0x7ff6, + 0x7ff5, 0x7ff5, 0x7ff4, 0x7ff3, 0x7ff3, 0x7ff2, 0x7ff1, 0x7ff0, + 0x7ff0, 0x7fef, 0x7fee, 0x7fed, 0x7fec, 0x7fec, 0x7feb, 0x7fea, + 0x7fe9, 0x7fe8, 0x7fe7, 0x7fe6, 0x7fe5, 0x7fe4, 0x7fe3, 0x7fe2, + 0x7fe1, 0x7fe0, 0x7fdf, 0x7fdd, 0x7fdc, 0x7fdb, 0x7fda, 0x7fd9, + 0x7fd7, 0x7fd6, 0x7fd5, 0x7fd4, 0x7fd2, 0x7fd1, 0x7fd0, 0x7fce, + 0x7fcd, 0x7fcb, 0x7fca, 0x7fc9, 0x7fc7, 0x7fc6, 0x7fc4, 0x7fc3, + 0x7fc1, 0x7fc0, 0x7fbe, 0x7fbc, 0x7fbb, 0x7fb9, 0x7fb7, 0x7fb6, + 0x7fb4, 0x7fb2, 0x7fb1, 0x7faf, 0x7fad, 0x7fab, 0x7fa9, 0x7fa8, + 0x7fa6, 0x7fa4, 0x7fa2, 0x7fa0, 0x7f9e, 0x7f9c, 0x7f9a, 0x7f98, + 0x7f96, 0x7f94, 0x7f92, 0x7f90, 0x7f8e, 0x7f8c, 0x7f8a, 0x7f88, + 0x7f86, 0x7f83, 0x7f81, 0x7f7f, 0x7f7d, 0x7f7b, 0x7f78, 0x7f76, + 0x7f74, 0x7f71, 0x7f6f, 0x7f6d, 0x7f6a, 0x7f68, 0x7f65, 0x7f63, + 0x7f60, 0x7f5e, 0x7f5b, 0x7f59, 0x7f56, 0x7f54, 0x7f51, 0x7f4f, + 0x7f4c, 0x7f49, 0x7f47, 0x7f44, 0x7f41, 0x7f3f, 0x7f3c, 0x7f39, + 0x7f36, 0x7f34, 0x7f31, 0x7f2e, 0x7f2b, 0x7f28, 0x7f25, 0x7f23, + 0x7f20, 0x7f1d, 0x7f1a, 0x7f17, 0x7f14, 0x7f11, 0x7f0e, 0x7f0b, + 0x7f08, 0x7f04, 0x7f01, 0x7efe, 0x7efb, 0x7ef8, 0x7ef5, 0x7ef1, + 0x7eee, 0x7eeb, 0x7ee8, 0x7ee4, 0x7ee1, 0x7ede, 0x7eda, 0x7ed7, + 0x7ed4, 0x7ed0, 0x7ecd, 0x7ec9, 0x7ec6, 0x7ec3, 0x7ebf, 0x7ebb, + 0x7eb8, 0x7eb4, 0x7eb1, 0x7ead, 0x7eaa, 0x7ea6, 0x7ea2, 0x7e9f, + 0x7e9b, 0x7e97, 0x7e94, 0x7e90, 0x7e8c, 0x7e88, 0x7e84, 0x7e81, + 0x7e7d, 0x7e79, 0x7e75, 0x7e71, 0x7e6d, 0x7e69, 0x7e65, 0x7e61, + 0x7e5d, 0x7e59, 0x7e55, 0x7e51, 0x7e4d, 0x7e49, 0x7e45, 0x7e41, + 0x7e3d, 0x7e39, 0x7e34, 0x7e30, 0x7e2c, 0x7e28, 0x7e24, 0x7e1f, + 0x7e1b, 0x7e17, 0x7e12, 0x7e0e, 0x7e0a, 0x7e05, 0x7e01, 0x7dfc, + 0x7df8, 0x7df3, 0x7def, 0x7dea, 0x7de6, 0x7de1, 0x7ddd, 0x7dd8, + 0x7dd4, 0x7dcf, 0x7dca, 0x7dc6, 0x7dc1, 0x7dbc, 0x7db8, 0x7db3, + 0x7dae, 0x7da9, 0x7da5, 0x7da0, 0x7d9b, 0x7d96, 0x7d91, 0x7d8c, + 0x7d87, 0x7d82, 0x7d7e, 0x7d79, 0x7d74, 0x7d6f, 0x7d6a, 0x7d65, + 0x7d60, 0x7d5a, 0x7d55, 0x7d50, 0x7d4b, 0x7d46, 0x7d41, 0x7d3c, + 0x7d36, 0x7d31, 0x7d2c, 0x7d27, 0x7d21, 0x7d1c, 0x7d17, 0x7d11, + 0x7d0c, 0x7d07, 0x7d01, 0x7cfc, 0x7cf6, 0x7cf1, 0x7cec, 0x7ce6, + 0x7ce1, 0x7cdb, 0x7cd5, 0x7cd0, 0x7cca, 0x7cc5, 0x7cbf, 0x7cb9, + 0x7cb4, 0x7cae, 0x7ca8, 0x7ca3, 0x7c9d, 0x7c97, 0x7c91, 0x7c8c, + 0x7c86, 0x7c80, 0x7c7a, 0x7c74, 0x7c6e, 0x7c69, 0x7c63, 0x7c5d, + 0x7c57, 0x7c51, 0x7c4b, 0x7c45, 0x7c3f, 0x7c39, 0x7c33, 0x7c2d, + 0x7c26, 0x7c20, 0x7c1a, 0x7c14, 0x7c0e, 0x7c08, 0x7c01, 0x7bfb, + 0x7bf5, 0x7bef, 0x7be8, 0x7be2, 0x7bdc, 0x7bd5, 0x7bcf, 0x7bc9, + 0x7bc2, 0x7bbc, 0x7bb5, 0x7baf, 0x7ba8, 0x7ba2, 0x7b9b, 0x7b95, + 0x7b8e, 0x7b88, 0x7b81, 0x7b7a, 0x7b74, 0x7b6d, 0x7b67, 0x7b60, + 0x7b59, 0x7b52, 0x7b4c, 0x7b45, 0x7b3e, 0x7b37, 0x7b31, 0x7b2a, + 0x7b23, 0x7b1c, 0x7b15, 0x7b0e, 0x7b07, 0x7b00, 0x7af9, 0x7af2, + 0x7aeb, 0x7ae4, 0x7add, 0x7ad6, 0x7acf, 0x7ac8, 0x7ac1, 0x7aba, + 0x7ab3, 0x7aac, 0x7aa4, 0x7a9d, 0x7a96, 0x7a8f, 0x7a87, 0x7a80, + 0x7a79, 0x7a72, 0x7a6a, 0x7a63, 0x7a5c, 0x7a54, 0x7a4d, 0x7a45, + 0x7a3e, 0x7a36, 0x7a2f, 0x7a27, 0x7a20, 0x7a18, 0x7a11, 0x7a09, + 0x7a02, 0x79fa, 0x79f2, 0x79eb, 0x79e3, 0x79db, 0x79d4, 0x79cc, + 0x79c4, 0x79bc, 0x79b5, 0x79ad, 0x79a5, 0x799d, 0x7995, 0x798e, + 0x7986, 0x797e, 0x7976, 0x796e, 0x7966, 0x795e, 0x7956, 0x794e, + 0x7946, 0x793e, 0x7936, 0x792e, 0x7926, 0x791e, 0x7915, 0x790d, + 0x7905, 0x78fd, 0x78f5, 0x78ec, 0x78e4, 0x78dc, 0x78d4, 0x78cb, + 0x78c3, 0x78bb, 0x78b2, 0x78aa, 0x78a2, 0x7899, 0x7891, 0x7888, + 0x7880, 0x7877, 0x786f, 0x7866, 0x785e, 0x7855, 0x784d, 0x7844, + 0x783b, 0x7833, 0x782a, 0x7821, 0x7819, 0x7810, 0x7807, 0x77ff, + 0x77f6, 0x77ed, 0x77e4, 0x77db, 0x77d3, 0x77ca, 0x77c1, 0x77b8, + 0x77af, 0x77a6, 0x779d, 0x7794, 0x778b, 0x7782, 0x7779, 0x7770, + 0x7767, 0x775e, 0x7755, 0x774c, 0x7743, 0x773a, 0x7731, 0x7727, + 0x771e, 0x7715, 0x770c, 0x7703, 0x76f9, 0x76f0, 0x76e7, 0x76dd, + 0x76d4, 0x76cb, 0x76c1, 0x76b8, 0x76af, 0x76a5, 0x769c, 0x7692, + 0x7689, 0x767f, 0x7676, 0x766c, 0x7663, 0x7659, 0x7650, 0x7646, + 0x763c, 0x7633, 0x7629, 0x761f, 0x7616, 0x760c, 0x7602, 0x75f9, + 0x75ef, 0x75e5, 0x75db, 0x75d1, 0x75c8, 0x75be, 0x75b4, 0x75aa, + 0x75a0, 0x7596, 0x758c, 0x7582, 0x7578, 0x756e, 0x7564, 0x755a, + 0x7550, 0x7546, 0x753c, 0x7532, 0x7528, 0x751e, 0x7514, 0x7509, + 0x74ff, 0x74f5, 0x74eb, 0x74e1, 0x74d6, 0x74cc, 0x74c2, 0x74b7, + 0x74ad, 0x74a3, 0x7498, 0x748e, 0x7484, 0x7479, 0x746f, 0x7464, + 0x745a, 0x744f, 0x7445, 0x743a, 0x7430, 0x7425, 0x741b, 0x7410, + 0x7406, 0x73fb, 0x73f0, 0x73e6, 0x73db, 0x73d0, 0x73c6, 0x73bb, + 0x73b0, 0x73a5, 0x739b, 0x7390, 0x7385, 0x737a, 0x736f, 0x7364, + 0x7359, 0x734f, 0x7344, 0x7339, 0x732e, 0x7323, 0x7318, 0x730d, + 0x7302, 0x72f7, 0x72ec, 0x72e1, 0x72d5, 0x72ca, 0x72bf, 0x72b4, + 0x72a9, 0x729e, 0x7293, 0x7287, 0x727c, 0x7271, 0x7266, 0x725a, + 0x724f, 0x7244, 0x7238, 0x722d, 0x7222, 0x7216, 0x720b, 0x71ff, + 0x71f4, 0x71e9, 0x71dd, 0x71d2, 0x71c6, 0x71bb, 0x71af, 0x71a3, + 0x7198, 0x718c, 0x7181, 0x7175, 0x7169, 0x715e, 0x7152, 0x7146, + 0x713b, 0x712f, 0x7123, 0x7117, 0x710c, 0x7100, 0x70f4, 0x70e8, + 0x70dc, 0x70d1, 0x70c5, 0x70b9, 0x70ad, 0x70a1, 0x7095, 0x7089, + 0x707d, 0x7071, 0x7065, 0x7059, 0x704d, 0x7041, 0x7035, 0x7029, + 0x701d, 0x7010, 0x7004, 0x6ff8, 0x6fec, 0x6fe0, 0x6fd3, 0x6fc7, + 0x6fbb, 0x6faf, 0x6fa2, 0x6f96, 0x6f8a, 0x6f7d, 0x6f71, 0x6f65, + 0x6f58, 0x6f4c, 0x6f3f, 0x6f33, 0x6f27, 0x6f1a, 0x6f0e, 0x6f01, + 0x6ef5, 0x6ee8, 0x6edc, 0x6ecf, 0x6ec2, 0x6eb6, 0x6ea9, 0x6e9c, + 0x6e90, 0x6e83, 0x6e76, 0x6e6a, 0x6e5d, 0x6e50, 0x6e44, 0x6e37, + 0x6e2a, 0x6e1d, 0x6e10, 0x6e04, 0x6df7, 0x6dea, 0x6ddd, 0x6dd0, + 0x6dc3, 0x6db6, 0x6da9, 0x6d9c, 0x6d8f, 0x6d82, 0x6d75, 0x6d68, + 0x6d5b, 0x6d4e, 0x6d41, 0x6d34, 0x6d27, 0x6d1a, 0x6d0c, 0x6cff, + 0x6cf2, 0x6ce5, 0x6cd8, 0x6cca, 0x6cbd, 0x6cb0, 0x6ca3, 0x6c95, + 0x6c88, 0x6c7b, 0x6c6d, 0x6c60, 0x6c53, 0x6c45, 0x6c38, 0x6c2a, + 0x6c1d, 0x6c0f, 0x6c02, 0x6bf5, 0x6be7, 0x6bd9, 0x6bcc, 0x6bbe, + 0x6bb1, 0x6ba3, 0x6b96, 0x6b88, 0x6b7a, 0x6b6d, 0x6b5f, 0x6b51, + 0x6b44, 0x6b36, 0x6b28, 0x6b1a, 0x6b0d, 0x6aff, 0x6af1, 0x6ae3, + 0x6ad5, 0x6ac8, 0x6aba, 0x6aac, 0x6a9e, 0x6a90, 0x6a82, 0x6a74, + 0x6a66, 0x6a58, 0x6a4a, 0x6a3c, 0x6a2e, 0x6a20, 0x6a12, 0x6a04, + 0x69f6, 0x69e8, 0x69da, 0x69cb, 0x69bd, 0x69af, 0x69a1, 0x6993, + 0x6985, 0x6976, 0x6968, 0x695a, 0x694b, 0x693d, 0x692f, 0x6921, + 0x6912, 0x6904, 0x68f5, 0x68e7, 0x68d9, 0x68ca, 0x68bc, 0x68ad, + 0x689f, 0x6890, 0x6882, 0x6873, 0x6865, 0x6856, 0x6848, 0x6839, + 0x682b, 0x681c, 0x680d, 0x67ff, 0x67f0, 0x67e1, 0x67d3, 0x67c4, + 0x67b5, 0x67a6, 0x6798, 0x6789, 0x677a, 0x676b, 0x675d, 0x674e, + 0x673f, 0x6730, 0x6721, 0x6712, 0x6703, 0x66f4, 0x66e5, 0x66d6, + 0x66c8, 0x66b9, 0x66aa, 0x669b, 0x668b, 0x667c, 0x666d, 0x665e, + 0x664f, 0x6640, 0x6631, 0x6622, 0x6613, 0x6603, 0x65f4, 0x65e5, + 0x65d6, 0x65c7, 0x65b7, 0x65a8, 0x6599, 0x658a, 0x657a, 0x656b, + 0x655c, 0x654c, 0x653d, 0x652d, 0x651e, 0x650f, 0x64ff, 0x64f0, + 0x64e0, 0x64d1, 0x64c1, 0x64b2, 0x64a2, 0x6493, 0x6483, 0x6474, + 0x6464, 0x6454, 0x6445, 0x6435, 0x6426, 0x6416, 0x6406, 0x63f7, + 0x63e7, 0x63d7, 0x63c7, 0x63b8, 0x63a8, 0x6398, 0x6388, 0x6378, + 0x6369, 0x6359, 0x6349, 0x6339, 0x6329, 0x6319, 0x6309, 0x62f9, + 0x62ea, 0x62da, 0x62ca, 0x62ba, 0x62aa, 0x629a, 0x628a, 0x627a, + 0x6269, 0x6259, 0x6249, 0x6239, 0x6229, 0x6219, 0x6209, 0x61f9, + 0x61e8, 0x61d8, 0x61c8, 0x61b8, 0x61a8, 0x6197, 0x6187, 0x6177, + 0x6166, 0x6156, 0x6146, 0x6135, 0x6125, 0x6115, 0x6104, 0x60f4, + 0x60e4, 0x60d3, 0x60c3, 0x60b2, 0x60a2, 0x6091, 0x6081, 0x6070, + 0x6060, 0x604f, 0x603f, 0x602e, 0x601d, 0x600d, 0x5ffc, 0x5fec, + 0x5fdb, 0x5fca, 0x5fba, 0x5fa9, 0x5f98, 0x5f87, 0x5f77, 0x5f66, + 0x5f55, 0x5f44, 0x5f34, 0x5f23, 0x5f12, 0x5f01, 0x5ef0, 0x5edf, + 0x5ecf, 0x5ebe, 0x5ead, 0x5e9c, 0x5e8b, 0x5e7a, 0x5e69, 0x5e58, + 0x5e47, 0x5e36, 0x5e25, 0x5e14, 0x5e03, 0x5df2, 0x5de1, 0x5dd0, + 0x5dbf, 0x5dad, 0x5d9c, 0x5d8b, 0x5d7a, 0x5d69, 0x5d58, 0x5d46, + 0x5d35, 0x5d24, 0x5d13, 0x5d01, 0x5cf0, 0x5cdf, 0x5cce, 0x5cbc, + 0x5cab, 0x5c9a, 0x5c88, 0x5c77, 0x5c66, 0x5c54, 0x5c43, 0x5c31, + 0x5c20, 0x5c0e, 0x5bfd, 0x5beb, 0x5bda, 0x5bc8, 0x5bb7, 0x5ba5, + 0x5b94, 0x5b82, 0x5b71, 0x5b5f, 0x5b4d, 0x5b3c, 0x5b2a, 0x5b19, + 0x5b07, 0x5af5, 0x5ae4, 0x5ad2, 0x5ac0, 0x5aae, 0x5a9d, 0x5a8b, + 0x5a79, 0x5a67, 0x5a56, 0x5a44, 0x5a32, 0x5a20, 0x5a0e, 0x59fc, + 0x59ea, 0x59d9, 0x59c7, 0x59b5, 0x59a3, 0x5991, 0x597f, 0x596d, + 0x595b, 0x5949, 0x5937, 0x5925, 0x5913, 0x5901, 0x58ef, 0x58dd, + 0x58cb, 0x58b8, 0x58a6, 0x5894, 0x5882, 0x5870, 0x585e, 0x584b, + 0x5839, 0x5827, 0x5815, 0x5803, 0x57f0, 0x57de, 0x57cc, 0x57b9, + 0x57a7, 0x5795, 0x5783, 0x5770, 0x575e, 0x574b, 0x5739, 0x5727, + 0x5714, 0x5702, 0x56ef, 0x56dd, 0x56ca, 0x56b8, 0x56a5, 0x5693, + 0x5680, 0x566e, 0x565b, 0x5649, 0x5636, 0x5624, 0x5611, 0x55fe, + 0x55ec, 0x55d9, 0x55c7, 0x55b4, 0x55a1, 0x558f, 0x557c, 0x5569, + 0x5556, 0x5544, 0x5531, 0x551e, 0x550b, 0x54f9, 0x54e6, 0x54d3, + 0x54c0, 0x54ad, 0x549a, 0x5488, 0x5475, 0x5462, 0x544f, 0x543c, + 0x5429, 0x5416, 0x5403, 0x53f0, 0x53dd, 0x53ca, 0x53b7, 0x53a4, + 0x5391, 0x537e, 0x536b, 0x5358, 0x5345, 0x5332, 0x531f, 0x530c, + 0x52f8, 0x52e5, 0x52d2, 0x52bf, 0x52ac, 0x5299, 0x5285, 0x5272, + 0x525f, 0x524c, 0x5238, 0x5225, 0x5212, 0x51ff, 0x51eb, 0x51d8, + 0x51c5, 0x51b1, 0x519e, 0x518b, 0x5177, 0x5164, 0x5150, 0x513d, + 0x512a, 0x5116, 0x5103, 0x50ef, 0x50dc, 0x50c8, 0x50b5, 0x50a1, + 0x508e, 0x507a, 0x5067, 0x5053, 0x503f, 0x502c, 0x5018, 0x5005, + 0x4ff1, 0x4fdd, 0x4fca, 0x4fb6, 0x4fa2, 0x4f8f, 0x4f7b, 0x4f67, + 0x4f54, 0x4f40, 0x4f2c, 0x4f18, 0x4f05, 0x4ef1, 0x4edd, 0x4ec9, + 0x4eb6, 0x4ea2, 0x4e8e, 0x4e7a, 0x4e66, 0x4e52, 0x4e3e, 0x4e2a, + 0x4e17, 0x4e03, 0x4def, 0x4ddb, 0x4dc7, 0x4db3, 0x4d9f, 0x4d8b, + 0x4d77, 0x4d63, 0x4d4f, 0x4d3b, 0x4d27, 0x4d13, 0x4cff, 0x4ceb, + 0x4cd6, 0x4cc2, 0x4cae, 0x4c9a, 0x4c86, 0x4c72, 0x4c5e, 0x4c49, + 0x4c35, 0x4c21, 0x4c0d, 0x4bf9, 0x4be4, 0x4bd0, 0x4bbc, 0x4ba8, + 0x4b93, 0x4b7f, 0x4b6b, 0x4b56, 0x4b42, 0x4b2e, 0x4b19, 0x4b05, + 0x4af1, 0x4adc, 0x4ac8, 0x4ab4, 0x4a9f, 0x4a8b, 0x4a76, 0x4a62, + 0x4a4d, 0x4a39, 0x4a24, 0x4a10, 0x49fb, 0x49e7, 0x49d2, 0x49be, + 0x49a9, 0x4995, 0x4980, 0x496c, 0x4957, 0x4942, 0x492e, 0x4919, + 0x4905, 0x48f0, 0x48db, 0x48c7, 0x48b2, 0x489d, 0x4888, 0x4874, + 0x485f, 0x484a, 0x4836, 0x4821, 0x480c, 0x47f7, 0x47e2, 0x47ce, + 0x47b9, 0x47a4, 0x478f, 0x477a, 0x4765, 0x4751, 0x473c, 0x4727, + 0x4712, 0x46fd, 0x46e8, 0x46d3, 0x46be, 0x46a9, 0x4694, 0x467f, + 0x466a, 0x4655, 0x4640, 0x462b, 0x4616, 0x4601, 0x45ec, 0x45d7, + 0x45c2, 0x45ad, 0x4598, 0x4583, 0x456e, 0x4559, 0x4544, 0x452e, + 0x4519, 0x4504, 0x44ef, 0x44da, 0x44c5, 0x44af, 0x449a, 0x4485, + 0x4470, 0x445a, 0x4445, 0x4430, 0x441b, 0x4405, 0x43f0, 0x43db, + 0x43c5, 0x43b0, 0x439b, 0x4385, 0x4370, 0x435b, 0x4345, 0x4330, + 0x431b, 0x4305, 0x42f0, 0x42da, 0x42c5, 0x42af, 0x429a, 0x4284, + 0x426f, 0x425a, 0x4244, 0x422f, 0x4219, 0x4203, 0x41ee, 0x41d8, + 0x41c3, 0x41ad, 0x4198, 0x4182, 0x416d, 0x4157, 0x4141, 0x412c, + 0x4116, 0x4100, 0x40eb, 0x40d5, 0x40bf, 0x40aa, 0x4094, 0x407e, + 0x4069, 0x4053, 0x403d, 0x4027, 0x4012, 0x3ffc, 0x3fe6, 0x3fd0, + 0x3fbb, 0x3fa5, 0x3f8f, 0x3f79, 0x3f63, 0x3f4d, 0x3f38, 0x3f22, + 0x3f0c, 0x3ef6, 0x3ee0, 0x3eca, 0x3eb4, 0x3e9e, 0x3e88, 0x3e73, + 0x3e5d, 0x3e47, 0x3e31, 0x3e1b, 0x3e05, 0x3def, 0x3dd9, 0x3dc3, + 0x3dad, 0x3d97, 0x3d81, 0x3d6b, 0x3d55, 0x3d3e, 0x3d28, 0x3d12, + 0x3cfc, 0x3ce6, 0x3cd0, 0x3cba, 0x3ca4, 0x3c8e, 0x3c77, 0x3c61, + 0x3c4b, 0x3c35, 0x3c1f, 0x3c09, 0x3bf2, 0x3bdc, 0x3bc6, 0x3bb0, + 0x3b99, 0x3b83, 0x3b6d, 0x3b57, 0x3b40, 0x3b2a, 0x3b14, 0x3afe, + 0x3ae7, 0x3ad1, 0x3abb, 0x3aa4, 0x3a8e, 0x3a78, 0x3a61, 0x3a4b, + 0x3a34, 0x3a1e, 0x3a08, 0x39f1, 0x39db, 0x39c4, 0x39ae, 0x3998, + 0x3981, 0x396b, 0x3954, 0x393e, 0x3927, 0x3911, 0x38fa, 0x38e4, + 0x38cd, 0x38b7, 0x38a0, 0x388a, 0x3873, 0x385d, 0x3846, 0x382f, + 0x3819, 0x3802, 0x37ec, 0x37d5, 0x37be, 0x37a8, 0x3791, 0x377a, + 0x3764, 0x374d, 0x3736, 0x3720, 0x3709, 0x36f2, 0x36dc, 0x36c5, + 0x36ae, 0x3698, 0x3681, 0x366a, 0x3653, 0x363d, 0x3626, 0x360f, + 0x35f8, 0x35e1, 0x35cb, 0x35b4, 0x359d, 0x3586, 0x356f, 0x3558, + 0x3542, 0x352b, 0x3514, 0x34fd, 0x34e6, 0x34cf, 0x34b8, 0x34a1, + 0x348b, 0x3474, 0x345d, 0x3446, 0x342f, 0x3418, 0x3401, 0x33ea, + 0x33d3, 0x33bc, 0x33a5, 0x338e, 0x3377, 0x3360, 0x3349, 0x3332, + 0x331b, 0x3304, 0x32ed, 0x32d6, 0x32bf, 0x32a8, 0x3290, 0x3279, + 0x3262, 0x324b, 0x3234, 0x321d, 0x3206, 0x31ef, 0x31d8, 0x31c0, + 0x31a9, 0x3192, 0x317b, 0x3164, 0x314c, 0x3135, 0x311e, 0x3107, + 0x30f0, 0x30d8, 0x30c1, 0x30aa, 0x3093, 0x307b, 0x3064, 0x304d, + 0x3036, 0x301e, 0x3007, 0x2ff0, 0x2fd8, 0x2fc1, 0x2faa, 0x2f92, + 0x2f7b, 0x2f64, 0x2f4c, 0x2f35, 0x2f1e, 0x2f06, 0x2eef, 0x2ed8, + 0x2ec0, 0x2ea9, 0x2e91, 0x2e7a, 0x2e63, 0x2e4b, 0x2e34, 0x2e1c, + 0x2e05, 0x2ded, 0x2dd6, 0x2dbe, 0x2da7, 0x2d8f, 0x2d78, 0x2d60, + 0x2d49, 0x2d31, 0x2d1a, 0x2d02, 0x2ceb, 0x2cd3, 0x2cbc, 0x2ca4, + 0x2c8d, 0x2c75, 0x2c5e, 0x2c46, 0x2c2e, 0x2c17, 0x2bff, 0x2be8, + 0x2bd0, 0x2bb8, 0x2ba1, 0x2b89, 0x2b71, 0x2b5a, 0x2b42, 0x2b2b, + 0x2b13, 0x2afb, 0x2ae4, 0x2acc, 0x2ab4, 0x2a9c, 0x2a85, 0x2a6d, + 0x2a55, 0x2a3e, 0x2a26, 0x2a0e, 0x29f6, 0x29df, 0x29c7, 0x29af, + 0x2997, 0x2980, 0x2968, 0x2950, 0x2938, 0x2920, 0x2909, 0x28f1, + 0x28d9, 0x28c1, 0x28a9, 0x2892, 0x287a, 0x2862, 0x284a, 0x2832, + 0x281a, 0x2802, 0x27eb, 0x27d3, 0x27bb, 0x27a3, 0x278b, 0x2773, + 0x275b, 0x2743, 0x272b, 0x2713, 0x26fb, 0x26e4, 0x26cc, 0x26b4, + 0x269c, 0x2684, 0x266c, 0x2654, 0x263c, 0x2624, 0x260c, 0x25f4, + 0x25dc, 0x25c4, 0x25ac, 0x2594, 0x257c, 0x2564, 0x254c, 0x2534, + 0x251c, 0x2503, 0x24eb, 0x24d3, 0x24bb, 0x24a3, 0x248b, 0x2473, + 0x245b, 0x2443, 0x242b, 0x2413, 0x23fa, 0x23e2, 0x23ca, 0x23b2, + 0x239a, 0x2382, 0x236a, 0x2352, 0x2339, 0x2321, 0x2309, 0x22f1, + 0x22d9, 0x22c0, 0x22a8, 0x2290, 0x2278, 0x2260, 0x2247, 0x222f, + 0x2217, 0x21ff, 0x21e7, 0x21ce, 0x21b6, 0x219e, 0x2186, 0x216d, + 0x2155, 0x213d, 0x2125, 0x210c, 0x20f4, 0x20dc, 0x20c3, 0x20ab, + 0x2093, 0x207a, 0x2062, 0x204a, 0x2032, 0x2019, 0x2001, 0x1fe9, + 0x1fd0, 0x1fb8, 0x1f9f, 0x1f87, 0x1f6f, 0x1f56, 0x1f3e, 0x1f26, + 0x1f0d, 0x1ef5, 0x1edd, 0x1ec4, 0x1eac, 0x1e93, 0x1e7b, 0x1e62, + 0x1e4a, 0x1e32, 0x1e19, 0x1e01, 0x1de8, 0x1dd0, 0x1db7, 0x1d9f, + 0x1d87, 0x1d6e, 0x1d56, 0x1d3d, 0x1d25, 0x1d0c, 0x1cf4, 0x1cdb, + 0x1cc3, 0x1caa, 0x1c92, 0x1c79, 0x1c61, 0x1c48, 0x1c30, 0x1c17, + 0x1bff, 0x1be6, 0x1bce, 0x1bb5, 0x1b9d, 0x1b84, 0x1b6c, 0x1b53, + 0x1b3a, 0x1b22, 0x1b09, 0x1af1, 0x1ad8, 0x1ac0, 0x1aa7, 0x1a8e, + 0x1a76, 0x1a5d, 0x1a45, 0x1a2c, 0x1a13, 0x19fb, 0x19e2, 0x19ca, + 0x19b1, 0x1998, 0x1980, 0x1967, 0x194e, 0x1936, 0x191d, 0x1905, + 0x18ec, 0x18d3, 0x18bb, 0x18a2, 0x1889, 0x1871, 0x1858, 0x183f, + 0x1827, 0x180e, 0x17f5, 0x17dd, 0x17c4, 0x17ab, 0x1792, 0x177a, + 0x1761, 0x1748, 0x1730, 0x1717, 0x16fe, 0x16e5, 0x16cd, 0x16b4, + 0x169b, 0x1682, 0x166a, 0x1651, 0x1638, 0x161f, 0x1607, 0x15ee, + 0x15d5, 0x15bc, 0x15a4, 0x158b, 0x1572, 0x1559, 0x1541, 0x1528, + 0x150f, 0x14f6, 0x14dd, 0x14c5, 0x14ac, 0x1493, 0x147a, 0x1461, + 0x1449, 0x1430, 0x1417, 0x13fe, 0x13e5, 0x13cc, 0x13b4, 0x139b, + 0x1382, 0x1369, 0x1350, 0x1337, 0x131f, 0x1306, 0x12ed, 0x12d4, + 0x12bb, 0x12a2, 0x1289, 0x1271, 0x1258, 0x123f, 0x1226, 0x120d, + 0x11f4, 0x11db, 0x11c2, 0x11a9, 0x1191, 0x1178, 0x115f, 0x1146, + 0x112d, 0x1114, 0x10fb, 0x10e2, 0x10c9, 0x10b0, 0x1098, 0x107f, + 0x1066, 0x104d, 0x1034, 0x101b, 0x1002, 0xfe9, 0xfd0, 0xfb7, + 0xf9e, 0xf85, 0xf6c, 0xf53, 0xf3a, 0xf21, 0xf08, 0xef0, + 0xed7, 0xebe, 0xea5, 0xe8c, 0xe73, 0xe5a, 0xe41, 0xe28, + 0xe0f, 0xdf6, 0xddd, 0xdc4, 0xdab, 0xd92, 0xd79, 0xd60, + 0xd47, 0xd2e, 0xd15, 0xcfc, 0xce3, 0xcca, 0xcb1, 0xc98, + 0xc7f, 0xc66, 0xc4d, 0xc34, 0xc1b, 0xc02, 0xbe9, 0xbd0, + 0xbb7, 0xb9e, 0xb85, 0xb6c, 0xb53, 0xb3a, 0xb20, 0xb07, + 0xaee, 0xad5, 0xabc, 0xaa3, 0xa8a, 0xa71, 0xa58, 0xa3f, + 0xa26, 0xa0d, 0x9f4, 0x9db, 0x9c2, 0x9a9, 0x990, 0x977, + 0x95e, 0x944, 0x92b, 0x912, 0x8f9, 0x8e0, 0x8c7, 0x8ae, + 0x895, 0x87c, 0x863, 0x84a, 0x831, 0x818, 0x7fe, 0x7e5, + 0x7cc, 0x7b3, 0x79a, 0x781, 0x768, 0x74f, 0x736, 0x71d, + 0x704, 0x6ea, 0x6d1, 0x6b8, 0x69f, 0x686, 0x66d, 0x654, + 0x63b, 0x622, 0x609, 0x5ef, 0x5d6, 0x5bd, 0x5a4, 0x58b, + 0x572, 0x559, 0x540, 0x527, 0x50d, 0x4f4, 0x4db, 0x4c2, + 0x4a9, 0x490, 0x477, 0x45e, 0x445, 0x42b, 0x412, 0x3f9, + 0x3e0, 0x3c7, 0x3ae, 0x395, 0x37c, 0x362, 0x349, 0x330, + 0x317, 0x2fe, 0x2e5, 0x2cc, 0x2b3, 0x299, 0x280, 0x267, + 0x24e, 0x235, 0x21c, 0x203, 0x1ea, 0x1d0, 0x1b7, 0x19e, + 0x185, 0x16c, 0x153, 0x13a, 0x121, 0x107, 0xee, 0xd5, + 0xbc, 0xa3, 0x8a, 0x71, 0x57, 0x3e, 0x25, 0xc, + +}; + +/** + * @brief Initialization function for the Q15 DCT4/IDCT4. + * @param[in,out] *S points to an instance of Q15 DCT4/IDCT4 structure. + * @param[in] *S_RFFT points to an instance of Q15 RFFT/RIFFT structure. + * @param[in] *S_CFFT points to an instance of Q15 CFFT/CIFFT structure. + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. + * \par Normalizing factor: + * The normalizing factor is sqrt(2/N), which depends on the size of transform N. + * Normalizing factors in 1.15 format are mentioned in the table below for different DCT sizes: + * \image html dct4NormalizingQ15Table.gif + */ + +arm_status arm_dct4_init_q15( + arm_dct4_instance_q15 * S, + arm_rfft_instance_q15 * S_RFFT, + arm_cfft_radix4_instance_q15 * S_CFFT, + uint16_t N, + uint16_t Nby2, + q15_t normalize) +{ + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + + /* Initializing the pointer array with the weight table base addresses of different lengths */ + q15_t *twiddlePtr[3] = { (q15_t *) WeightsQ15_128, (q15_t *) WeightsQ15_512, + (q15_t *) WeightsQ15_2048 + }; + + /* Initializing the pointer array with the cos factor table base addresses of different lengths */ + q15_t *pCosFactor[3] = + { (q15_t *) cos_factorsQ15_128, (q15_t *) cos_factorsQ15_512, + (q15_t *) cos_factorsQ15_2048 + }; + + /* Initialize the DCT4 length */ + S->N = N; + + /* Initialize the half of DCT4 length */ + S->Nby2 = Nby2; + + /* Initialize the DCT4 Normalizing factor */ + S->normalize = normalize; + + /* Initialize Real FFT Instance */ + S->pRfft = S_RFFT; + + /* Initialize Complex FFT Instance */ + S->pCfft = S_CFFT; + + switch (N) + { + /* Initialize the table modifier values */ + case 2048u: + S->pTwiddle = twiddlePtr[2]; + S->pCosFactor = pCosFactor[2]; + break; + case 512u: + S->pTwiddle = twiddlePtr[1]; + S->pCosFactor = pCosFactor[1]; + break; + case 128u: + S->pTwiddle = twiddlePtr[0]; + S->pCosFactor = pCosFactor[0]; + break; + default: + status = ARM_MATH_ARGUMENT_ERROR; + } + + /* Initialize the RFFT/RIFFT */ + arm_rfft_init_q15(S->pRfft, S->pCfft, S->N, 0u, 1u); + + /* return the status of DCT4 Init function */ + return (status); +} + +/** + * @} end of DCT4_IDCT4 group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q31.c new file mode 100644 index 000000000..62ac374ab --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q31.c @@ -0,0 +1,2198 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_dct4_init_q31.c +* +* Description: Initialization function of DCT-4 & IDCT4 Q31 +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + + +#include "arm_math.h" + +/** + * @ingroup groupTransforms + */ + +/** + * @addtogroup DCT4_IDCT4 + * @{ + */ + +/* +* @brief Weights Table +*/ + +/** +* \par +* Weights tables are generated using the formula :
weights[n] = e^(-j*n*pi/(2*N))
+* \par +* C command to generate the table +*
   
+* for(i = 0; i< N; i++)   
+* {   
+*   weights[2*i]= cos(i*c);   
+*   weights[(2*i)+1]= -sin(i * c);   
+* } 
+* \par +* where N is the Number of weights to be calculated and c is pi/(2*N) +* \par +* Convert the output to q31 format by multiplying with 2^31 and saturated if required. +* \par +* In the tables below the real and imaginary values are placed alternatively, hence the +* array length is 2*N. +*/ + +static const q31_t WeightsQ31_128[256] = { + 0x7fffffff, 0x0, 0x7ffd885a, 0xfe6de2e0, 0x7ff62182, 0xfcdbd541, 0x7fe9cbc0, + 0xfb49e6a3, + 0x7fd8878e, 0xf9b82684, 0x7fc25596, 0xf826a462, 0x7fa736b4, 0xf6956fb7, + 0x7f872bf3, 0xf50497fb, + 0x7f62368f, 0xf3742ca2, 0x7f3857f6, 0xf1e43d1c, 0x7f0991c4, 0xf054d8d5, + 0x7ed5e5c6, 0xeec60f31, + 0x7e9d55fc, 0xed37ef91, 0x7e5fe493, 0xebaa894f, 0x7e1d93ea, 0xea1debbb, + 0x7dd6668f, 0xe8922622, + 0x7d8a5f40, 0xe70747c4, 0x7d3980ec, 0xe57d5fda, 0x7ce3ceb2, 0xe3f47d96, + 0x7c894bde, 0xe26cb01b, + 0x7c29fbee, 0xe0e60685, 0x7bc5e290, 0xdf608fe4, 0x7b5d039e, 0xdddc5b3b, + 0x7aef6323, 0xdc597781, + 0x7a7d055b, 0xdad7f3a2, 0x7a05eead, 0xd957de7a, 0x798a23b1, 0xd7d946d8, + 0x7909a92d, 0xd65c3b7b, + 0x78848414, 0xd4e0cb15, 0x77fab989, 0xd3670446, 0x776c4edb, 0xd1eef59e, + 0x76d94989, 0xd078ad9e, + 0x7641af3d, 0xcf043ab3, 0x75a585cf, 0xcd91ab39, 0x7504d345, 0xcc210d79, + 0x745f9dd1, 0xcab26fa9, + 0x73b5ebd1, 0xc945dfec, 0x7307c3d0, 0xc7db6c50, 0x72552c85, 0xc67322ce, + 0x719e2cd2, 0xc50d1149, + 0x70e2cbc6, 0xc3a94590, 0x7023109a, 0xc247cd5a, 0x6f5f02b2, 0xc0e8b648, + 0x6e96a99d, 0xbf8c0de3, + 0x6dca0d14, 0xbe31e19b, 0x6cf934fc, 0xbcda3ecb, 0x6c242960, 0xbb8532b0, + 0x6b4af279, 0xba32ca71, + 0x6a6d98a4, 0xb8e31319, 0x698c246c, 0xb796199b, 0x68a69e81, 0xb64beacd, + 0x67bd0fbd, 0xb5049368, + 0x66cf8120, 0xb3c0200c, 0x65ddfbd3, 0xb27e9d3c, 0x64e88926, 0xb140175b, + 0x63ef3290, 0xb0049ab3, + 0x62f201ac, 0xaecc336c, 0x61f1003f, 0xad96ed92, 0x60ec3830, 0xac64d510, + 0x5fe3b38d, 0xab35f5b5, + 0x5ed77c8a, 0xaa0a5b2e, 0x5dc79d7c, 0xa8e21106, 0x5cb420e0, 0xa7bd22ac, + 0x5b9d1154, 0xa69b9b68, + 0x5a82799a, 0xa57d8666, 0x59646498, 0xa462eeac, 0x5842dd54, 0xa34bdf20, + 0x571deefa, 0xa2386284, + 0x55f5a4d2, 0xa1288376, 0x54ca0a4b, 0xa01c4c73, 0x539b2af0, 0x9f13c7d0, + 0x5269126e, 0x9e0effc1, + 0x5133cc94, 0x9d0dfe54, 0x4ffb654d, 0x9c10cd70, 0x4ebfe8a5, 0x9b1776da, + 0x4d8162c4, 0x9a22042d, + 0x4c3fdff4, 0x99307ee0, 0x4afb6c98, 0x9842f043, 0x49b41533, 0x9759617f, + 0x4869e665, 0x9673db94, + 0x471cece7, 0x9592675c, 0x45cd358f, 0x94b50d87, 0x447acd50, 0x93dbd6a0, + 0x4325c135, 0x9306cb04, + 0x41ce1e65, 0x9235f2ec, 0x4073f21d, 0x91695663, 0x3f1749b8, 0x90a0fd4e, + 0x3db832a6, 0x8fdcef66, + 0x3c56ba70, 0x8f1d343a, 0x3af2eeb7, 0x8e61d32e, 0x398cdd32, 0x8daad37b, + 0x382493b0, 0x8cf83c30, + 0x36ba2014, 0x8c4a142f, 0x354d9057, 0x8ba0622f, 0x33def287, 0x8afb2cbb, + 0x326e54c7, 0x8a5a7a31, + 0x30fbc54d, 0x89be50c3, 0x2f875262, 0x8926b677, 0x2e110a62, 0x8893b125, + 0x2c98fbba, 0x88054677, + 0x2b1f34eb, 0x877b7bec, 0x29a3c485, 0x86f656d3, 0x2826b928, 0x8675dc4f, + 0x26a82186, 0x85fa1153, + 0x25280c5e, 0x8582faa5, 0x23a6887f, 0x85109cdd, 0x2223a4c5, 0x84a2fc62, + 0x209f701c, 0x843a1d70, + 0x1f19f97b, 0x83d60412, 0x1d934fe5, 0x8376b422, 0x1c0b826a, 0x831c314e, + 0x1a82a026, 0x82c67f14, + 0x18f8b83c, 0x8275a0c0, 0x176dd9de, 0x82299971, 0x15e21445, 0x81e26c16, + 0x145576b1, 0x81a01b6d, + 0x12c8106f, 0x8162aa04, 0x1139f0cf, 0x812a1a3a, 0xfab272b, 0x80f66e3c, + 0xe1bc2e4, 0x80c7a80a, + 0xc8bd35e, 0x809dc971, 0xafb6805, 0x8078d40d, 0x96a9049, 0x8058c94c, + 0x7d95b9e, 0x803daa6a, + 0x647d97c, 0x80277872, 0x4b6195d, 0x80163440, 0x3242abf, 0x8009de7e, + 0x1921d20, 0x800277a6, +}; + +static const q31_t WeightsQ31_512[1024] = { + 0x7fffffff, 0x0, 0x7fffd886, 0xff9b781d, 0x7fff6216, 0xff36f078, 0x7ffe9cb2, + 0xfed2694f, + 0x7ffd885a, 0xfe6de2e0, 0x7ffc250f, 0xfe095d69, 0x7ffa72d1, 0xfda4d929, + 0x7ff871a2, 0xfd40565c, + 0x7ff62182, 0xfcdbd541, 0x7ff38274, 0xfc775616, 0x7ff09478, 0xfc12d91a, + 0x7fed5791, 0xfbae5e89, + 0x7fe9cbc0, 0xfb49e6a3, 0x7fe5f108, 0xfae571a4, 0x7fe1c76b, 0xfa80ffcb, + 0x7fdd4eec, 0xfa1c9157, + 0x7fd8878e, 0xf9b82684, 0x7fd37153, 0xf953bf91, 0x7fce0c3e, 0xf8ef5cbb, + 0x7fc85854, 0xf88afe42, + 0x7fc25596, 0xf826a462, 0x7fbc040a, 0xf7c24f59, 0x7fb563b3, 0xf75dff66, + 0x7fae7495, 0xf6f9b4c6, + 0x7fa736b4, 0xf6956fb7, 0x7f9faa15, 0xf6313077, 0x7f97cebd, 0xf5ccf743, + 0x7f8fa4b0, 0xf568c45b, + 0x7f872bf3, 0xf50497fb, 0x7f7e648c, 0xf4a07261, 0x7f754e80, 0xf43c53cb, + 0x7f6be9d4, 0xf3d83c77, + 0x7f62368f, 0xf3742ca2, 0x7f5834b7, 0xf310248a, 0x7f4de451, 0xf2ac246e, + 0x7f434563, 0xf2482c8a, + 0x7f3857f6, 0xf1e43d1c, 0x7f2d1c0e, 0xf1805662, 0x7f2191b4, 0xf11c789a, + 0x7f15b8ee, 0xf0b8a401, + 0x7f0991c4, 0xf054d8d5, 0x7efd1c3c, 0xeff11753, 0x7ef05860, 0xef8d5fb8, + 0x7ee34636, 0xef29b243, + 0x7ed5e5c6, 0xeec60f31, 0x7ec8371a, 0xee6276bf, 0x7eba3a39, 0xedfee92b, + 0x7eabef2c, 0xed9b66b2, + 0x7e9d55fc, 0xed37ef91, 0x7e8e6eb2, 0xecd48407, 0x7e7f3957, 0xec71244f, + 0x7e6fb5f4, 0xec0dd0a8, + 0x7e5fe493, 0xebaa894f, 0x7e4fc53e, 0xeb474e81, 0x7e3f57ff, 0xeae4207a, + 0x7e2e9cdf, 0xea80ff7a, + 0x7e1d93ea, 0xea1debbb, 0x7e0c3d29, 0xe9bae57d, 0x7dfa98a8, 0xe957ecfb, + 0x7de8a670, 0xe8f50273, + 0x7dd6668f, 0xe8922622, 0x7dc3d90d, 0xe82f5844, 0x7db0fdf8, 0xe7cc9917, + 0x7d9dd55a, 0xe769e8d8, + 0x7d8a5f40, 0xe70747c4, 0x7d769bb5, 0xe6a4b616, 0x7d628ac6, 0xe642340d, + 0x7d4e2c7f, 0xe5dfc1e5, + 0x7d3980ec, 0xe57d5fda, 0x7d24881b, 0xe51b0e2a, 0x7d0f4218, 0xe4b8cd11, + 0x7cf9aef0, 0xe4569ccb, + 0x7ce3ceb2, 0xe3f47d96, 0x7ccda169, 0xe3926fad, 0x7cb72724, 0xe330734d, + 0x7ca05ff1, 0xe2ce88b3, + 0x7c894bde, 0xe26cb01b, 0x7c71eaf9, 0xe20ae9c1, 0x7c5a3d50, 0xe1a935e2, + 0x7c4242f2, 0xe14794ba, + 0x7c29fbee, 0xe0e60685, 0x7c116853, 0xe0848b7f, 0x7bf88830, 0xe02323e5, + 0x7bdf5b94, 0xdfc1cff3, + 0x7bc5e290, 0xdf608fe4, 0x7bac1d31, 0xdeff63f4, 0x7b920b89, 0xde9e4c60, + 0x7b77ada8, 0xde3d4964, + 0x7b5d039e, 0xdddc5b3b, 0x7b420d7a, 0xdd7b8220, 0x7b26cb4f, 0xdd1abe51, + 0x7b0b3d2c, 0xdcba1008, + 0x7aef6323, 0xdc597781, 0x7ad33d45, 0xdbf8f4f8, 0x7ab6cba4, 0xdb9888a8, + 0x7a9a0e50, 0xdb3832cd, + 0x7a7d055b, 0xdad7f3a2, 0x7a5fb0d8, 0xda77cb63, 0x7a4210d8, 0xda17ba4a, + 0x7a24256f, 0xd9b7c094, + 0x7a05eead, 0xd957de7a, 0x79e76ca7, 0xd8f81439, 0x79c89f6e, 0xd898620c, + 0x79a98715, 0xd838c82d, + 0x798a23b1, 0xd7d946d8, 0x796a7554, 0xd779de47, 0x794a7c12, 0xd71a8eb5, + 0x792a37fe, 0xd6bb585e, + 0x7909a92d, 0xd65c3b7b, 0x78e8cfb2, 0xd5fd3848, 0x78c7aba2, 0xd59e4eff, + 0x78a63d11, 0xd53f7fda, + 0x78848414, 0xd4e0cb15, 0x786280bf, 0xd48230e9, 0x78403329, 0xd423b191, + 0x781d9b65, 0xd3c54d47, + 0x77fab989, 0xd3670446, 0x77d78daa, 0xd308d6c7, 0x77b417df, 0xd2aac504, + 0x7790583e, 0xd24ccf39, + 0x776c4edb, 0xd1eef59e, 0x7747fbce, 0xd191386e, 0x77235f2d, 0xd13397e2, + 0x76fe790e, 0xd0d61434, + 0x76d94989, 0xd078ad9e, 0x76b3d0b4, 0xd01b6459, 0x768e0ea6, 0xcfbe389f, + 0x76680376, 0xcf612aaa, + 0x7641af3d, 0xcf043ab3, 0x761b1211, 0xcea768f2, 0x75f42c0b, 0xce4ab5a2, + 0x75ccfd42, 0xcdee20fc, + 0x75a585cf, 0xcd91ab39, 0x757dc5ca, 0xcd355491, 0x7555bd4c, 0xccd91d3d, + 0x752d6c6c, 0xcc7d0578, + 0x7504d345, 0xcc210d79, 0x74dbf1ef, 0xcbc53579, 0x74b2c884, 0xcb697db0, + 0x7489571c, 0xcb0de658, + 0x745f9dd1, 0xcab26fa9, 0x74359cbd, 0xca5719db, 0x740b53fb, 0xc9fbe527, + 0x73e0c3a3, 0xc9a0d1c5, + 0x73b5ebd1, 0xc945dfec, 0x738acc9e, 0xc8eb0fd6, 0x735f6626, 0xc89061ba, + 0x7333b883, 0xc835d5d0, + 0x7307c3d0, 0xc7db6c50, 0x72db8828, 0xc7812572, 0x72af05a7, 0xc727016d, + 0x72823c67, 0xc6cd0079, + 0x72552c85, 0xc67322ce, 0x7227d61c, 0xc61968a2, 0x71fa3949, 0xc5bfd22e, + 0x71cc5626, 0xc5665fa9, + 0x719e2cd2, 0xc50d1149, 0x716fbd68, 0xc4b3e746, 0x71410805, 0xc45ae1d7, + 0x71120cc5, 0xc4020133, + 0x70e2cbc6, 0xc3a94590, 0x70b34525, 0xc350af26, 0x708378ff, 0xc2f83e2a, + 0x70536771, 0xc29ff2d4, + 0x7023109a, 0xc247cd5a, 0x6ff27497, 0xc1efcdf3, 0x6fc19385, 0xc197f4d4, + 0x6f906d84, 0xc1404233, + 0x6f5f02b2, 0xc0e8b648, 0x6f2d532c, 0xc0915148, 0x6efb5f12, 0xc03a1368, + 0x6ec92683, 0xbfe2fcdf, + 0x6e96a99d, 0xbf8c0de3, 0x6e63e87f, 0xbf3546a8, 0x6e30e34a, 0xbedea765, + 0x6dfd9a1c, 0xbe88304f, + 0x6dca0d14, 0xbe31e19b, 0x6d963c54, 0xbddbbb7f, 0x6d6227fa, 0xbd85be30, + 0x6d2dd027, 0xbd2fe9e2, + 0x6cf934fc, 0xbcda3ecb, 0x6cc45698, 0xbc84bd1f, 0x6c8f351c, 0xbc2f6513, + 0x6c59d0a9, 0xbbda36dd, + 0x6c242960, 0xbb8532b0, 0x6bee3f62, 0xbb3058c0, 0x6bb812d1, 0xbadba943, + 0x6b81a3cd, 0xba87246d, + 0x6b4af279, 0xba32ca71, 0x6b13fef5, 0xb9de9b83, 0x6adcc964, 0xb98a97d8, + 0x6aa551e9, 0xb936bfa4, + 0x6a6d98a4, 0xb8e31319, 0x6a359db9, 0xb88f926d, 0x69fd614a, 0xb83c3dd1, + 0x69c4e37a, 0xb7e9157a, + 0x698c246c, 0xb796199b, 0x69532442, 0xb7434a67, 0x6919e320, 0xb6f0a812, + 0x68e06129, 0xb69e32cd, + 0x68a69e81, 0xb64beacd, 0x686c9b4b, 0xb5f9d043, 0x683257ab, 0xb5a7e362, + 0x67f7d3c5, 0xb556245e, + 0x67bd0fbd, 0xb5049368, 0x67820bb7, 0xb4b330b3, 0x6746c7d8, 0xb461fc70, + 0x670b4444, 0xb410f6d3, + 0x66cf8120, 0xb3c0200c, 0x66937e91, 0xb36f784f, 0x66573cbb, 0xb31effcc, + 0x661abbc5, 0xb2ceb6b5, + 0x65ddfbd3, 0xb27e9d3c, 0x65a0fd0b, 0xb22eb392, 0x6563bf92, 0xb1def9e9, + 0x6526438f, 0xb18f7071, + 0x64e88926, 0xb140175b, 0x64aa907f, 0xb0f0eeda, 0x646c59bf, 0xb0a1f71d, + 0x642de50d, 0xb0533055, + 0x63ef3290, 0xb0049ab3, 0x63b0426d, 0xafb63667, 0x637114cc, 0xaf6803a2, + 0x6331a9d4, 0xaf1a0293, + 0x62f201ac, 0xaecc336c, 0x62b21c7b, 0xae7e965b, 0x6271fa69, 0xae312b92, + 0x62319b9d, 0xade3f33e, + 0x61f1003f, 0xad96ed92, 0x61b02876, 0xad4a1aba, 0x616f146c, 0xacfd7ae8, + 0x612dc447, 0xacb10e4b, + 0x60ec3830, 0xac64d510, 0x60aa7050, 0xac18cf69, 0x60686ccf, 0xabccfd83, + 0x60262dd6, 0xab815f8d, + 0x5fe3b38d, 0xab35f5b5, 0x5fa0fe1f, 0xaaeac02c, 0x5f5e0db3, 0xaa9fbf1e, + 0x5f1ae274, 0xaa54f2ba, + 0x5ed77c8a, 0xaa0a5b2e, 0x5e93dc1f, 0xa9bff8a8, 0x5e50015d, 0xa975cb57, + 0x5e0bec6e, 0xa92bd367, + 0x5dc79d7c, 0xa8e21106, 0x5d8314b1, 0xa8988463, 0x5d3e5237, 0xa84f2daa, + 0x5cf95638, 0xa8060d08, + 0x5cb420e0, 0xa7bd22ac, 0x5c6eb258, 0xa7746ec0, 0x5c290acc, 0xa72bf174, + 0x5be32a67, 0xa6e3aaf2, + 0x5b9d1154, 0xa69b9b68, 0x5b56bfbd, 0xa653c303, 0x5b1035cf, 0xa60c21ee, + 0x5ac973b5, 0xa5c4b855, + 0x5a82799a, 0xa57d8666, 0x5a3b47ab, 0xa5368c4b, 0x59f3de12, 0xa4efca31, + 0x59ac3cfd, 0xa4a94043, + 0x59646498, 0xa462eeac, 0x591c550e, 0xa41cd599, 0x58d40e8c, 0xa3d6f534, + 0x588b9140, 0xa3914da8, + 0x5842dd54, 0xa34bdf20, 0x57f9f2f8, 0xa306a9c8, 0x57b0d256, 0xa2c1adc9, + 0x57677b9d, 0xa27ceb4f, + 0x571deefa, 0xa2386284, 0x56d42c99, 0xa1f41392, 0x568a34a9, 0xa1affea3, + 0x56400758, 0xa16c23e1, + 0x55f5a4d2, 0xa1288376, 0x55ab0d46, 0xa0e51d8c, 0x556040e2, 0xa0a1f24d, + 0x55153fd4, 0xa05f01e1, + 0x54ca0a4b, 0xa01c4c73, 0x547ea073, 0x9fd9d22a, 0x5433027d, 0x9f979331, + 0x53e73097, 0x9f558fb0, + 0x539b2af0, 0x9f13c7d0, 0x534ef1b5, 0x9ed23bb9, 0x53028518, 0x9e90eb94, + 0x52b5e546, 0x9e4fd78a, + 0x5269126e, 0x9e0effc1, 0x521c0cc2, 0x9dce6463, 0x51ced46e, 0x9d8e0597, + 0x518169a5, 0x9d4de385, + 0x5133cc94, 0x9d0dfe54, 0x50e5fd6d, 0x9cce562c, 0x5097fc5e, 0x9c8eeb34, + 0x5049c999, 0x9c4fbd93, + 0x4ffb654d, 0x9c10cd70, 0x4faccfab, 0x9bd21af3, 0x4f5e08e3, 0x9b93a641, + 0x4f0f1126, 0x9b556f81, + 0x4ebfe8a5, 0x9b1776da, 0x4e708f8f, 0x9ad9bc71, 0x4e210617, 0x9a9c406e, + 0x4dd14c6e, 0x9a5f02f5, + 0x4d8162c4, 0x9a22042d, 0x4d31494b, 0x99e5443b, 0x4ce10034, 0x99a8c345, + 0x4c9087b1, 0x996c816f, + 0x4c3fdff4, 0x99307ee0, 0x4bef092d, 0x98f4bbbc, 0x4b9e0390, 0x98b93828, + 0x4b4ccf4d, 0x987df449, + 0x4afb6c98, 0x9842f043, 0x4aa9dba2, 0x98082c3b, 0x4a581c9e, 0x97cda855, + 0x4a062fbd, 0x979364b5, + 0x49b41533, 0x9759617f, 0x4961cd33, 0x971f9ed7, 0x490f57ee, 0x96e61ce0, + 0x48bcb599, 0x96acdbbe, + 0x4869e665, 0x9673db94, 0x4816ea86, 0x963b1c86, 0x47c3c22f, 0x96029eb6, + 0x47706d93, 0x95ca6247, + 0x471cece7, 0x9592675c, 0x46c9405c, 0x955aae17, 0x46756828, 0x9523369c, + 0x4621647d, 0x94ec010b, + 0x45cd358f, 0x94b50d87, 0x4578db93, 0x947e5c33, 0x452456bd, 0x9447ed2f, + 0x44cfa740, 0x9411c09e, + 0x447acd50, 0x93dbd6a0, 0x4425c923, 0x93a62f57, 0x43d09aed, 0x9370cae4, + 0x437b42e1, 0x933ba968, + 0x4325c135, 0x9306cb04, 0x42d0161e, 0x92d22fd9, 0x427a41d0, 0x929dd806, + 0x42244481, 0x9269c3ac, + 0x41ce1e65, 0x9235f2ec, 0x4177cfb1, 0x920265e4, 0x4121589b, 0x91cf1cb6, + 0x40cab958, 0x919c1781, + 0x4073f21d, 0x91695663, 0x401d0321, 0x9136d97d, 0x3fc5ec98, 0x9104a0ee, + 0x3f6eaeb8, 0x90d2acd4, + 0x3f1749b8, 0x90a0fd4e, 0x3ebfbdcd, 0x906f927c, 0x3e680b2c, 0x903e6c7b, + 0x3e10320d, 0x900d8b69, + 0x3db832a6, 0x8fdcef66, 0x3d600d2c, 0x8fac988f, 0x3d07c1d6, 0x8f7c8701, + 0x3caf50da, 0x8f4cbadb, + 0x3c56ba70, 0x8f1d343a, 0x3bfdfecd, 0x8eedf33b, 0x3ba51e29, 0x8ebef7fb, + 0x3b4c18ba, 0x8e904298, + 0x3af2eeb7, 0x8e61d32e, 0x3a99a057, 0x8e33a9da, 0x3a402dd2, 0x8e05c6b7, + 0x39e6975e, 0x8dd829e4, + 0x398cdd32, 0x8daad37b, 0x3932ff87, 0x8d7dc399, 0x38d8fe93, 0x8d50fa59, + 0x387eda8e, 0x8d2477d8, + 0x382493b0, 0x8cf83c30, 0x37ca2a30, 0x8ccc477d, 0x376f9e46, 0x8ca099da, + 0x3714f02a, 0x8c753362, + 0x36ba2014, 0x8c4a142f, 0x365f2e3b, 0x8c1f3c5d, 0x36041ad9, 0x8bf4ac05, + 0x35a8e625, 0x8bca6343, + 0x354d9057, 0x8ba0622f, 0x34f219a8, 0x8b76a8e4, 0x34968250, 0x8b4d377c, + 0x343aca87, 0x8b240e11, + 0x33def287, 0x8afb2cbb, 0x3382fa88, 0x8ad29394, 0x3326e2c3, 0x8aaa42b4, + 0x32caab6f, 0x8a823a36, + 0x326e54c7, 0x8a5a7a31, 0x3211df04, 0x8a3302be, 0x31b54a5e, 0x8a0bd3f5, + 0x3158970e, 0x89e4edef, + 0x30fbc54d, 0x89be50c3, 0x309ed556, 0x8997fc8a, 0x3041c761, 0x8971f15a, + 0x2fe49ba7, 0x894c2f4c, + 0x2f875262, 0x8926b677, 0x2f29ebcc, 0x890186f2, 0x2ecc681e, 0x88dca0d3, + 0x2e6ec792, 0x88b80432, + 0x2e110a62, 0x8893b125, 0x2db330c7, 0x886fa7c2, 0x2d553afc, 0x884be821, + 0x2cf72939, 0x88287256, + 0x2c98fbba, 0x88054677, 0x2c3ab2b9, 0x87e2649b, 0x2bdc4e6f, 0x87bfccd7, + 0x2b7dcf17, 0x879d7f41, + 0x2b1f34eb, 0x877b7bec, 0x2ac08026, 0x8759c2ef, 0x2a61b101, 0x8738545e, + 0x2a02c7b8, 0x8717304e, + 0x29a3c485, 0x86f656d3, 0x2944a7a2, 0x86d5c802, 0x28e5714b, 0x86b583ee, + 0x288621b9, 0x86958aac, + 0x2826b928, 0x8675dc4f, 0x27c737d3, 0x865678eb, 0x27679df4, 0x86376092, + 0x2707ebc7, 0x86189359, + 0x26a82186, 0x85fa1153, 0x26483f6c, 0x85dbda91, 0x25e845b6, 0x85bdef28, + 0x2588349d, 0x85a04f28, + 0x25280c5e, 0x8582faa5, 0x24c7cd33, 0x8565f1b0, 0x24677758, 0x8549345c, + 0x24070b08, 0x852cc2bb, + 0x23a6887f, 0x85109cdd, 0x2345eff8, 0x84f4c2d4, 0x22e541af, 0x84d934b1, + 0x22847de0, 0x84bdf286, + 0x2223a4c5, 0x84a2fc62, 0x21c2b69c, 0x84885258, 0x2161b3a0, 0x846df477, + 0x21009c0c, 0x8453e2cf, + 0x209f701c, 0x843a1d70, 0x203e300d, 0x8420a46c, 0x1fdcdc1b, 0x840777d0, + 0x1f7b7481, 0x83ee97ad, + 0x1f19f97b, 0x83d60412, 0x1eb86b46, 0x83bdbd0e, 0x1e56ca1e, 0x83a5c2b0, + 0x1df5163f, 0x838e1507, + 0x1d934fe5, 0x8376b422, 0x1d31774d, 0x835fa00f, 0x1ccf8cb3, 0x8348d8dc, + 0x1c6d9053, 0x83325e97, + 0x1c0b826a, 0x831c314e, 0x1ba96335, 0x83065110, 0x1b4732ef, 0x82f0bde8, + 0x1ae4f1d6, 0x82db77e5, + 0x1a82a026, 0x82c67f14, 0x1a203e1b, 0x82b1d381, 0x19bdcbf3, 0x829d753a, + 0x195b49ea, 0x8289644b, + 0x18f8b83c, 0x8275a0c0, 0x18961728, 0x82622aa6, 0x183366e9, 0x824f0208, + 0x17d0a7bc, 0x823c26f3, + 0x176dd9de, 0x82299971, 0x170afd8d, 0x82175990, 0x16a81305, 0x82056758, + 0x16451a83, 0x81f3c2d7, + 0x15e21445, 0x81e26c16, 0x157f0086, 0x81d16321, 0x151bdf86, 0x81c0a801, + 0x14b8b17f, 0x81b03ac2, + 0x145576b1, 0x81a01b6d, 0x13f22f58, 0x81904a0c, 0x138edbb1, 0x8180c6a9, + 0x132b7bf9, 0x8171914e, + 0x12c8106f, 0x8162aa04, 0x1264994e, 0x815410d4, 0x120116d5, 0x8145c5c7, + 0x119d8941, 0x8137c8e6, + 0x1139f0cf, 0x812a1a3a, 0x10d64dbd, 0x811cb9ca, 0x1072a048, 0x810fa7a0, + 0x100ee8ad, 0x8102e3c4, + 0xfab272b, 0x80f66e3c, 0xf475bff, 0x80ea4712, 0xee38766, 0x80de6e4c, + 0xe7fa99e, 0x80d2e3f2, + 0xe1bc2e4, 0x80c7a80a, 0xdb7d376, 0x80bcba9d, 0xd53db92, 0x80b21baf, + 0xcefdb76, 0x80a7cb49, + 0xc8bd35e, 0x809dc971, 0xc27c389, 0x8094162c, 0xbc3ac35, 0x808ab180, + 0xb5f8d9f, 0x80819b74, + 0xafb6805, 0x8078d40d, 0xa973ba5, 0x80705b50, 0xa3308bd, 0x80683143, + 0x9cecf89, 0x806055eb, + 0x96a9049, 0x8058c94c, 0x9064b3a, 0x80518b6b, 0x8a2009a, 0x804a9c4d, + 0x83db0a7, 0x8043fbf6, + 0x7d95b9e, 0x803daa6a, 0x77501be, 0x8037a7ac, 0x710a345, 0x8031f3c2, + 0x6ac406f, 0x802c8ead, + 0x647d97c, 0x80277872, 0x5e36ea9, 0x8022b114, 0x57f0035, 0x801e3895, + 0x51a8e5c, 0x801a0ef8, + 0x4b6195d, 0x80163440, 0x451a177, 0x8012a86f, 0x3ed26e6, 0x800f6b88, + 0x388a9ea, 0x800c7d8c, + 0x3242abf, 0x8009de7e, 0x2bfa9a4, 0x80078e5e, 0x25b26d7, 0x80058d2f, + 0x1f6a297, 0x8003daf1, + 0x1921d20, 0x800277a6, 0x12d96b1, 0x8001634e, 0xc90f88, 0x80009dea, + 0x6487e3, 0x8000277a, +}; + +static const q31_t WeightsQ31_2048[4096] = { + 0x7fffffff, 0x0, 0x7ffffd88, 0xffe6de05, 0x7ffff621, 0xffcdbc0b, 0x7fffe9cb, + 0xffb49a12, + 0x7fffd886, 0xff9b781d, 0x7fffc251, 0xff82562c, 0x7fffa72c, 0xff69343f, + 0x7fff8719, 0xff501258, + 0x7fff6216, 0xff36f078, 0x7fff3824, 0xff1dcea0, 0x7fff0943, 0xff04acd0, + 0x7ffed572, 0xfeeb8b0a, + 0x7ffe9cb2, 0xfed2694f, 0x7ffe5f03, 0xfeb947a0, 0x7ffe1c65, 0xfea025fd, + 0x7ffdd4d7, 0xfe870467, + 0x7ffd885a, 0xfe6de2e0, 0x7ffd36ee, 0xfe54c169, 0x7ffce093, 0xfe3ba002, + 0x7ffc8549, 0xfe227eac, + 0x7ffc250f, 0xfe095d69, 0x7ffbbfe6, 0xfdf03c3a, 0x7ffb55ce, 0xfdd71b1e, + 0x7ffae6c7, 0xfdbdfa18, + 0x7ffa72d1, 0xfda4d929, 0x7ff9f9ec, 0xfd8bb850, 0x7ff97c18, 0xfd729790, + 0x7ff8f954, 0xfd5976e9, + 0x7ff871a2, 0xfd40565c, 0x7ff7e500, 0xfd2735ea, 0x7ff75370, 0xfd0e1594, + 0x7ff6bcf0, 0xfcf4f55c, + 0x7ff62182, 0xfcdbd541, 0x7ff58125, 0xfcc2b545, 0x7ff4dbd9, 0xfca9956a, + 0x7ff4319d, 0xfc9075af, + 0x7ff38274, 0xfc775616, 0x7ff2ce5b, 0xfc5e36a0, 0x7ff21553, 0xfc45174e, + 0x7ff1575d, 0xfc2bf821, + 0x7ff09478, 0xfc12d91a, 0x7fefcca4, 0xfbf9ba39, 0x7feeffe1, 0xfbe09b80, + 0x7fee2e30, 0xfbc77cf0, + 0x7fed5791, 0xfbae5e89, 0x7fec7c02, 0xfb95404d, 0x7feb9b85, 0xfb7c223d, + 0x7feab61a, 0xfb630459, + 0x7fe9cbc0, 0xfb49e6a3, 0x7fe8dc78, 0xfb30c91b, 0x7fe7e841, 0xfb17abc2, + 0x7fe6ef1c, 0xfafe8e9b, + 0x7fe5f108, 0xfae571a4, 0x7fe4ee06, 0xfacc54e0, 0x7fe3e616, 0xfab3384f, + 0x7fe2d938, 0xfa9a1bf3, + 0x7fe1c76b, 0xfa80ffcb, 0x7fe0b0b1, 0xfa67e3da, 0x7fdf9508, 0xfa4ec821, + 0x7fde7471, 0xfa35ac9f, + 0x7fdd4eec, 0xfa1c9157, 0x7fdc247a, 0xfa037648, 0x7fdaf519, 0xf9ea5b75, + 0x7fd9c0ca, 0xf9d140de, + 0x7fd8878e, 0xf9b82684, 0x7fd74964, 0xf99f0c68, 0x7fd6064c, 0xf985f28a, + 0x7fd4be46, 0xf96cd8ed, + 0x7fd37153, 0xf953bf91, 0x7fd21f72, 0xf93aa676, 0x7fd0c8a3, 0xf9218d9e, + 0x7fcf6ce8, 0xf908750a, + 0x7fce0c3e, 0xf8ef5cbb, 0x7fcca6a7, 0xf8d644b2, 0x7fcb3c23, 0xf8bd2cef, + 0x7fc9ccb2, 0xf8a41574, + 0x7fc85854, 0xf88afe42, 0x7fc6df08, 0xf871e759, 0x7fc560cf, 0xf858d0bb, + 0x7fc3dda9, 0xf83fba68, + 0x7fc25596, 0xf826a462, 0x7fc0c896, 0xf80d8ea9, 0x7fbf36aa, 0xf7f4793e, + 0x7fbd9fd0, 0xf7db6423, + 0x7fbc040a, 0xf7c24f59, 0x7fba6357, 0xf7a93ae0, 0x7fb8bdb8, 0xf79026b9, + 0x7fb7132b, 0xf77712e5, + 0x7fb563b3, 0xf75dff66, 0x7fb3af4e, 0xf744ec3b, 0x7fb1f5fc, 0xf72bd967, + 0x7fb037bf, 0xf712c6ea, + 0x7fae7495, 0xf6f9b4c6, 0x7facac7f, 0xf6e0a2fa, 0x7faadf7c, 0xf6c79188, + 0x7fa90d8e, 0xf6ae8071, + 0x7fa736b4, 0xf6956fb7, 0x7fa55aee, 0xf67c5f59, 0x7fa37a3c, 0xf6634f59, + 0x7fa1949e, 0xf64a3fb8, + 0x7f9faa15, 0xf6313077, 0x7f9dbaa0, 0xf6182196, 0x7f9bc640, 0xf5ff1318, + 0x7f99ccf4, 0xf5e604fc, + 0x7f97cebd, 0xf5ccf743, 0x7f95cb9a, 0xf5b3e9f0, 0x7f93c38c, 0xf59add02, + 0x7f91b694, 0xf581d07b, + 0x7f8fa4b0, 0xf568c45b, 0x7f8d8de1, 0xf54fb8a4, 0x7f8b7227, 0xf536ad56, + 0x7f895182, 0xf51da273, + 0x7f872bf3, 0xf50497fb, 0x7f850179, 0xf4eb8def, 0x7f82d214, 0xf4d28451, + 0x7f809dc5, 0xf4b97b21, + 0x7f7e648c, 0xf4a07261, 0x7f7c2668, 0xf4876a10, 0x7f79e35a, 0xf46e6231, + 0x7f779b62, 0xf4555ac5, + 0x7f754e80, 0xf43c53cb, 0x7f72fcb4, 0xf4234d45, 0x7f70a5fe, 0xf40a4735, + 0x7f6e4a5e, 0xf3f1419a, + 0x7f6be9d4, 0xf3d83c77, 0x7f698461, 0xf3bf37cb, 0x7f671a05, 0xf3a63398, + 0x7f64aabf, 0xf38d2fe0, + 0x7f62368f, 0xf3742ca2, 0x7f5fbd77, 0xf35b29e0, 0x7f5d3f75, 0xf342279b, + 0x7f5abc8a, 0xf32925d3, + 0x7f5834b7, 0xf310248a, 0x7f55a7fa, 0xf2f723c1, 0x7f531655, 0xf2de2379, + 0x7f507fc7, 0xf2c523b2, + 0x7f4de451, 0xf2ac246e, 0x7f4b43f2, 0xf29325ad, 0x7f489eaa, 0xf27a2771, + 0x7f45f47b, 0xf26129ba, + 0x7f434563, 0xf2482c8a, 0x7f409164, 0xf22f2fe1, 0x7f3dd87c, 0xf21633c0, + 0x7f3b1aad, 0xf1fd3829, + 0x7f3857f6, 0xf1e43d1c, 0x7f359057, 0xf1cb429a, 0x7f32c3d1, 0xf1b248a5, + 0x7f2ff263, 0xf1994f3d, + 0x7f2d1c0e, 0xf1805662, 0x7f2a40d2, 0xf1675e17, 0x7f2760af, 0xf14e665c, + 0x7f247ba5, 0xf1356f32, + 0x7f2191b4, 0xf11c789a, 0x7f1ea2dc, 0xf1038295, 0x7f1baf1e, 0xf0ea8d24, + 0x7f18b679, 0xf0d19848, + 0x7f15b8ee, 0xf0b8a401, 0x7f12b67c, 0xf09fb051, 0x7f0faf25, 0xf086bd39, + 0x7f0ca2e7, 0xf06dcaba, + 0x7f0991c4, 0xf054d8d5, 0x7f067bba, 0xf03be78a, 0x7f0360cb, 0xf022f6da, + 0x7f0040f6, 0xf00a06c8, + 0x7efd1c3c, 0xeff11753, 0x7ef9f29d, 0xefd8287c, 0x7ef6c418, 0xefbf3a45, + 0x7ef390ae, 0xefa64cae, + 0x7ef05860, 0xef8d5fb8, 0x7eed1b2c, 0xef747365, 0x7ee9d914, 0xef5b87b5, + 0x7ee69217, 0xef429caa, + 0x7ee34636, 0xef29b243, 0x7edff570, 0xef10c883, 0x7edc9fc6, 0xeef7df6a, + 0x7ed94538, 0xeedef6f9, + 0x7ed5e5c6, 0xeec60f31, 0x7ed28171, 0xeead2813, 0x7ecf1837, 0xee9441a0, + 0x7ecbaa1a, 0xee7b5bd9, + 0x7ec8371a, 0xee6276bf, 0x7ec4bf36, 0xee499253, 0x7ec14270, 0xee30ae96, + 0x7ebdc0c6, 0xee17cb88, + 0x7eba3a39, 0xedfee92b, 0x7eb6aeca, 0xede60780, 0x7eb31e78, 0xedcd2687, + 0x7eaf8943, 0xedb44642, + 0x7eabef2c, 0xed9b66b2, 0x7ea85033, 0xed8287d7, 0x7ea4ac58, 0xed69a9b3, + 0x7ea1039b, 0xed50cc46, + 0x7e9d55fc, 0xed37ef91, 0x7e99a37c, 0xed1f1396, 0x7e95ec1a, 0xed063856, + 0x7e922fd6, 0xeced5dd0, + 0x7e8e6eb2, 0xecd48407, 0x7e8aa8ac, 0xecbbaafb, 0x7e86ddc6, 0xeca2d2ad, + 0x7e830dff, 0xec89fb1e, + 0x7e7f3957, 0xec71244f, 0x7e7b5fce, 0xec584e41, 0x7e778166, 0xec3f78f6, + 0x7e739e1d, 0xec26a46d, + 0x7e6fb5f4, 0xec0dd0a8, 0x7e6bc8eb, 0xebf4fda8, 0x7e67d703, 0xebdc2b6e, + 0x7e63e03b, 0xebc359fb, + 0x7e5fe493, 0xebaa894f, 0x7e5be40c, 0xeb91b96c, 0x7e57dea7, 0xeb78ea52, + 0x7e53d462, 0xeb601c04, + 0x7e4fc53e, 0xeb474e81, 0x7e4bb13c, 0xeb2e81ca, 0x7e47985b, 0xeb15b5e1, + 0x7e437a9c, 0xeafceac6, + 0x7e3f57ff, 0xeae4207a, 0x7e3b3083, 0xeacb56ff, 0x7e37042a, 0xeab28e56, + 0x7e32d2f4, 0xea99c67e, + 0x7e2e9cdf, 0xea80ff7a, 0x7e2a61ed, 0xea683949, 0x7e26221f, 0xea4f73ee, + 0x7e21dd73, 0xea36af69, + 0x7e1d93ea, 0xea1debbb, 0x7e194584, 0xea0528e5, 0x7e14f242, 0xe9ec66e8, + 0x7e109a24, 0xe9d3a5c5, + 0x7e0c3d29, 0xe9bae57d, 0x7e07db52, 0xe9a22610, 0x7e0374a0, 0xe9896781, + 0x7dff0911, 0xe970a9ce, + 0x7dfa98a8, 0xe957ecfb, 0x7df62362, 0xe93f3107, 0x7df1a942, 0xe92675f4, + 0x7ded2a47, 0xe90dbbc2, + 0x7de8a670, 0xe8f50273, 0x7de41dc0, 0xe8dc4a07, 0x7ddf9034, 0xe8c39280, + 0x7ddafdce, 0xe8aadbde, + 0x7dd6668f, 0xe8922622, 0x7dd1ca75, 0xe879714d, 0x7dcd2981, 0xe860bd61, + 0x7dc883b4, 0xe8480a5d, + 0x7dc3d90d, 0xe82f5844, 0x7dbf298d, 0xe816a716, 0x7dba7534, 0xe7fdf6d4, + 0x7db5bc02, 0xe7e5477f, + 0x7db0fdf8, 0xe7cc9917, 0x7dac3b15, 0xe7b3eb9f, 0x7da77359, 0xe79b3f16, + 0x7da2a6c6, 0xe782937e, + 0x7d9dd55a, 0xe769e8d8, 0x7d98ff17, 0xe7513f25, 0x7d9423fc, 0xe7389665, + 0x7d8f4409, 0xe71fee99, + 0x7d8a5f40, 0xe70747c4, 0x7d85759f, 0xe6eea1e4, 0x7d808728, 0xe6d5fcfc, + 0x7d7b93da, 0xe6bd590d, + 0x7d769bb5, 0xe6a4b616, 0x7d719eba, 0xe68c141a, 0x7d6c9ce9, 0xe6737319, + 0x7d679642, 0xe65ad315, + 0x7d628ac6, 0xe642340d, 0x7d5d7a74, 0xe6299604, 0x7d58654d, 0xe610f8f9, + 0x7d534b50, 0xe5f85cef, + 0x7d4e2c7f, 0xe5dfc1e5, 0x7d4908d9, 0xe5c727dd, 0x7d43e05e, 0xe5ae8ed8, + 0x7d3eb30f, 0xe595f6d7, + 0x7d3980ec, 0xe57d5fda, 0x7d3449f5, 0xe564c9e3, 0x7d2f0e2b, 0xe54c34f3, + 0x7d29cd8c, 0xe533a10a, + 0x7d24881b, 0xe51b0e2a, 0x7d1f3dd6, 0xe5027c53, 0x7d19eebf, 0xe4e9eb87, + 0x7d149ad5, 0xe4d15bc6, + 0x7d0f4218, 0xe4b8cd11, 0x7d09e489, 0xe4a03f69, 0x7d048228, 0xe487b2d0, + 0x7cff1af5, 0xe46f2745, + 0x7cf9aef0, 0xe4569ccb, 0x7cf43e1a, 0xe43e1362, 0x7ceec873, 0xe4258b0a, + 0x7ce94dfb, 0xe40d03c6, + 0x7ce3ceb2, 0xe3f47d96, 0x7cde4a98, 0xe3dbf87a, 0x7cd8c1ae, 0xe3c37474, + 0x7cd333f3, 0xe3aaf184, + 0x7ccda169, 0xe3926fad, 0x7cc80a0f, 0xe379eeed, 0x7cc26de5, 0xe3616f48, + 0x7cbcccec, 0xe348f0bd, + 0x7cb72724, 0xe330734d, 0x7cb17c8d, 0xe317f6fa, 0x7cabcd28, 0xe2ff7bc3, + 0x7ca618f3, 0xe2e701ac, + 0x7ca05ff1, 0xe2ce88b3, 0x7c9aa221, 0xe2b610da, 0x7c94df83, 0xe29d9a23, + 0x7c8f1817, 0xe285248d, + 0x7c894bde, 0xe26cb01b, 0x7c837ad8, 0xe2543ccc, 0x7c7da505, 0xe23bcaa2, + 0x7c77ca65, 0xe223599e, + 0x7c71eaf9, 0xe20ae9c1, 0x7c6c06c0, 0xe1f27b0b, 0x7c661dbc, 0xe1da0d7e, + 0x7c602fec, 0xe1c1a11b, + 0x7c5a3d50, 0xe1a935e2, 0x7c5445e9, 0xe190cbd4, 0x7c4e49b7, 0xe17862f3, + 0x7c4848ba, 0xe15ffb3f, + 0x7c4242f2, 0xe14794ba, 0x7c3c3860, 0xe12f2f63, 0x7c362904, 0xe116cb3d, + 0x7c3014de, 0xe0fe6848, + 0x7c29fbee, 0xe0e60685, 0x7c23de35, 0xe0cda5f5, 0x7c1dbbb3, 0xe0b54698, + 0x7c179467, 0xe09ce871, + 0x7c116853, 0xe0848b7f, 0x7c0b3777, 0xe06c2fc4, 0x7c0501d2, 0xe053d541, + 0x7bfec765, 0xe03b7bf6, + 0x7bf88830, 0xe02323e5, 0x7bf24434, 0xe00acd0e, 0x7bebfb70, 0xdff27773, + 0x7be5ade6, 0xdfda2314, + 0x7bdf5b94, 0xdfc1cff3, 0x7bd9047c, 0xdfa97e0f, 0x7bd2a89e, 0xdf912d6b, + 0x7bcc47fa, 0xdf78de07, + 0x7bc5e290, 0xdf608fe4, 0x7bbf7860, 0xdf484302, 0x7bb9096b, 0xdf2ff764, + 0x7bb295b0, 0xdf17ad0a, + 0x7bac1d31, 0xdeff63f4, 0x7ba59fee, 0xdee71c24, 0x7b9f1de6, 0xdeced59b, + 0x7b989719, 0xdeb69059, + 0x7b920b89, 0xde9e4c60, 0x7b8b7b36, 0xde8609b1, 0x7b84e61f, 0xde6dc84b, + 0x7b7e4c45, 0xde558831, + 0x7b77ada8, 0xde3d4964, 0x7b710a49, 0xde250be3, 0x7b6a6227, 0xde0ccfb1, + 0x7b63b543, 0xddf494ce, + 0x7b5d039e, 0xdddc5b3b, 0x7b564d36, 0xddc422f8, 0x7b4f920e, 0xddabec08, + 0x7b48d225, 0xdd93b66a, + 0x7b420d7a, 0xdd7b8220, 0x7b3b4410, 0xdd634f2b, 0x7b3475e5, 0xdd4b1d8c, + 0x7b2da2fa, 0xdd32ed43, + 0x7b26cb4f, 0xdd1abe51, 0x7b1feee5, 0xdd0290b8, 0x7b190dbc, 0xdcea6478, + 0x7b1227d3, 0xdcd23993, + 0x7b0b3d2c, 0xdcba1008, 0x7b044dc7, 0xdca1e7da, 0x7afd59a4, 0xdc89c109, + 0x7af660c2, 0xdc719b96, + 0x7aef6323, 0xdc597781, 0x7ae860c7, 0xdc4154cd, 0x7ae159ae, 0xdc293379, + 0x7ada4dd8, 0xdc111388, + 0x7ad33d45, 0xdbf8f4f8, 0x7acc27f7, 0xdbe0d7cd, 0x7ac50dec, 0xdbc8bc06, + 0x7abdef25, 0xdbb0a1a4, + 0x7ab6cba4, 0xdb9888a8, 0x7aafa367, 0xdb807114, 0x7aa8766f, 0xdb685ae9, + 0x7aa144bc, 0xdb504626, + 0x7a9a0e50, 0xdb3832cd, 0x7a92d329, 0xdb2020e0, 0x7a8b9348, 0xdb08105e, + 0x7a844eae, 0xdaf00149, + 0x7a7d055b, 0xdad7f3a2, 0x7a75b74f, 0xdabfe76a, 0x7a6e648a, 0xdaa7dca1, + 0x7a670d0d, 0xda8fd349, + 0x7a5fb0d8, 0xda77cb63, 0x7a584feb, 0xda5fc4ef, 0x7a50ea47, 0xda47bfee, + 0x7a497feb, 0xda2fbc61, + 0x7a4210d8, 0xda17ba4a, 0x7a3a9d0f, 0xd9ffb9a9, 0x7a332490, 0xd9e7ba7f, + 0x7a2ba75a, 0xd9cfbccd, + 0x7a24256f, 0xd9b7c094, 0x7a1c9ece, 0xd99fc5d4, 0x7a151378, 0xd987cc90, + 0x7a0d836d, 0xd96fd4c7, + 0x7a05eead, 0xd957de7a, 0x79fe5539, 0xd93fe9ab, 0x79f6b711, 0xd927f65b, + 0x79ef1436, 0xd910048a, + 0x79e76ca7, 0xd8f81439, 0x79dfc064, 0xd8e0256a, 0x79d80f6f, 0xd8c8381d, + 0x79d059c8, 0xd8b04c52, + 0x79c89f6e, 0xd898620c, 0x79c0e062, 0xd880794b, 0x79b91ca4, 0xd868920f, + 0x79b15435, 0xd850ac5a, + 0x79a98715, 0xd838c82d, 0x79a1b545, 0xd820e589, 0x7999dec4, 0xd809046e, + 0x79920392, 0xd7f124dd, + 0x798a23b1, 0xd7d946d8, 0x79823f20, 0xd7c16a5f, 0x797a55e0, 0xd7a98f73, + 0x797267f2, 0xd791b616, + 0x796a7554, 0xd779de47, 0x79627e08, 0xd7620808, 0x795a820e, 0xd74a335b, + 0x79528167, 0xd732603f, + 0x794a7c12, 0xd71a8eb5, 0x79427210, 0xd702bec0, 0x793a6361, 0xd6eaf05f, + 0x79325006, 0xd6d32393, + 0x792a37fe, 0xd6bb585e, 0x79221b4b, 0xd6a38ec0, 0x7919f9ec, 0xd68bc6ba, + 0x7911d3e2, 0xd674004e, + 0x7909a92d, 0xd65c3b7b, 0x790179cd, 0xd6447844, 0x78f945c3, 0xd62cb6a8, + 0x78f10d0f, 0xd614f6a9, + 0x78e8cfb2, 0xd5fd3848, 0x78e08dab, 0xd5e57b85, 0x78d846fb, 0xd5cdc062, + 0x78cffba3, 0xd5b606e0, + 0x78c7aba2, 0xd59e4eff, 0x78bf56f9, 0xd58698c0, 0x78b6fda8, 0xd56ee424, + 0x78ae9fb0, 0xd557312d, + 0x78a63d11, 0xd53f7fda, 0x789dd5cb, 0xd527d02e, 0x789569df, 0xd5102228, + 0x788cf94c, 0xd4f875ca, + 0x78848414, 0xd4e0cb15, 0x787c0a36, 0xd4c92209, 0x78738bb3, 0xd4b17aa8, + 0x786b088c, 0xd499d4f2, + 0x786280bf, 0xd48230e9, 0x7859f44f, 0xd46a8e8d, 0x7851633b, 0xd452eddf, + 0x7848cd83, 0xd43b4ee0, + 0x78403329, 0xd423b191, 0x7837942b, 0xd40c15f3, 0x782ef08b, 0xd3f47c06, + 0x78264849, 0xd3dce3cd, + 0x781d9b65, 0xd3c54d47, 0x7814e9df, 0xd3adb876, 0x780c33b8, 0xd396255a, + 0x780378f1, 0xd37e93f4, + 0x77fab989, 0xd3670446, 0x77f1f581, 0xd34f764f, 0x77e92cd9, 0xd337ea12, + 0x77e05f91, 0xd3205f8f, + 0x77d78daa, 0xd308d6c7, 0x77ceb725, 0xd2f14fba, 0x77c5dc01, 0xd2d9ca6a, + 0x77bcfc3f, 0xd2c246d8, + 0x77b417df, 0xd2aac504, 0x77ab2ee2, 0xd29344f0, 0x77a24148, 0xd27bc69c, + 0x77994f11, 0xd2644a0a, + 0x7790583e, 0xd24ccf39, 0x77875cce, 0xd235562b, 0x777e5cc3, 0xd21ddee2, + 0x7775581d, 0xd206695d, + 0x776c4edb, 0xd1eef59e, 0x776340ff, 0xd1d783a6, 0x775a2e89, 0xd1c01375, + 0x77511778, 0xd1a8a50d, + 0x7747fbce, 0xd191386e, 0x773edb8b, 0xd179cd99, 0x7735b6af, 0xd1626490, + 0x772c8d3a, 0xd14afd52, + 0x77235f2d, 0xd13397e2, 0x771a2c88, 0xd11c343f, 0x7710f54c, 0xd104d26b, + 0x7707b979, 0xd0ed7267, + 0x76fe790e, 0xd0d61434, 0x76f5340e, 0xd0beb7d2, 0x76ebea77, 0xd0a75d42, + 0x76e29c4b, 0xd0900486, + 0x76d94989, 0xd078ad9e, 0x76cff232, 0xd061588b, 0x76c69647, 0xd04a054e, + 0x76bd35c7, 0xd032b3e7, + 0x76b3d0b4, 0xd01b6459, 0x76aa670d, 0xd00416a3, 0x76a0f8d2, 0xcfeccac7, + 0x76978605, 0xcfd580c6, + 0x768e0ea6, 0xcfbe389f, 0x768492b4, 0xcfa6f255, 0x767b1231, 0xcf8fade9, + 0x76718d1c, 0xcf786b5a, + 0x76680376, 0xcf612aaa, 0x765e7540, 0xcf49ebda, 0x7654e279, 0xcf32aeeb, + 0x764b4b23, 0xcf1b73de, + 0x7641af3d, 0xcf043ab3, 0x76380ec8, 0xceed036b, 0x762e69c4, 0xced5ce08, + 0x7624c031, 0xcebe9a8a, + 0x761b1211, 0xcea768f2, 0x76115f63, 0xce903942, 0x7607a828, 0xce790b79, + 0x75fdec60, 0xce61df99, + 0x75f42c0b, 0xce4ab5a2, 0x75ea672a, 0xce338d97, 0x75e09dbd, 0xce1c6777, + 0x75d6cfc5, 0xce054343, + 0x75ccfd42, 0xcdee20fc, 0x75c32634, 0xcdd700a4, 0x75b94a9c, 0xcdbfe23a, + 0x75af6a7b, 0xcda8c5c1, + 0x75a585cf, 0xcd91ab39, 0x759b9c9b, 0xcd7a92a2, 0x7591aedd, 0xcd637bfe, + 0x7587bc98, 0xcd4c674d, + 0x757dc5ca, 0xcd355491, 0x7573ca75, 0xcd1e43ca, 0x7569ca99, 0xcd0734f9, + 0x755fc635, 0xccf0281f, + 0x7555bd4c, 0xccd91d3d, 0x754bafdc, 0xccc21455, 0x75419de7, 0xccab0d65, + 0x7537876c, 0xcc940871, + 0x752d6c6c, 0xcc7d0578, 0x75234ce8, 0xcc66047b, 0x751928e0, 0xcc4f057c, + 0x750f0054, 0xcc38087b, + 0x7504d345, 0xcc210d79, 0x74faa1b3, 0xcc0a1477, 0x74f06b9e, 0xcbf31d75, + 0x74e63108, 0xcbdc2876, + 0x74dbf1ef, 0xcbc53579, 0x74d1ae55, 0xcbae447f, 0x74c7663a, 0xcb97558a, + 0x74bd199f, 0xcb80689a, + 0x74b2c884, 0xcb697db0, 0x74a872e8, 0xcb5294ce, 0x749e18cd, 0xcb3badf3, + 0x7493ba34, 0xcb24c921, + 0x7489571c, 0xcb0de658, 0x747eef85, 0xcaf7059a, 0x74748371, 0xcae026e8, + 0x746a12df, 0xcac94a42, + 0x745f9dd1, 0xcab26fa9, 0x74552446, 0xca9b971e, 0x744aa63f, 0xca84c0a3, + 0x744023bc, 0xca6dec37, + 0x74359cbd, 0xca5719db, 0x742b1144, 0xca404992, 0x74208150, 0xca297b5a, + 0x7415ece2, 0xca12af37, + 0x740b53fb, 0xc9fbe527, 0x7400b69a, 0xc9e51d2d, 0x73f614c0, 0xc9ce5748, + 0x73eb6e6e, 0xc9b7937a, + 0x73e0c3a3, 0xc9a0d1c5, 0x73d61461, 0xc98a1227, 0x73cb60a8, 0xc97354a4, + 0x73c0a878, 0xc95c993a, + 0x73b5ebd1, 0xc945dfec, 0x73ab2ab4, 0xc92f28ba, 0x73a06522, 0xc91873a5, + 0x73959b1b, 0xc901c0ae, + 0x738acc9e, 0xc8eb0fd6, 0x737ff9ae, 0xc8d4611d, 0x73752249, 0xc8bdb485, + 0x736a4671, 0xc8a70a0e, + 0x735f6626, 0xc89061ba, 0x73548168, 0xc879bb89, 0x73499838, 0xc863177b, + 0x733eaa96, 0xc84c7593, + 0x7333b883, 0xc835d5d0, 0x7328c1ff, 0xc81f3834, 0x731dc70a, 0xc8089cbf, + 0x7312c7a5, 0xc7f20373, + 0x7307c3d0, 0xc7db6c50, 0x72fcbb8c, 0xc7c4d757, 0x72f1aed9, 0xc7ae4489, + 0x72e69db7, 0xc797b3e7, + 0x72db8828, 0xc7812572, 0x72d06e2b, 0xc76a992a, 0x72c54fc1, 0xc7540f11, + 0x72ba2cea, 0xc73d8727, + 0x72af05a7, 0xc727016d, 0x72a3d9f7, 0xc7107de4, 0x7298a9dd, 0xc6f9fc8d, + 0x728d7557, 0xc6e37d69, + 0x72823c67, 0xc6cd0079, 0x7276ff0d, 0xc6b685bd, 0x726bbd48, 0xc6a00d37, + 0x7260771b, 0xc68996e7, + 0x72552c85, 0xc67322ce, 0x7249dd86, 0xc65cb0ed, 0x723e8a20, 0xc6464144, + 0x72333251, 0xc62fd3d6, + 0x7227d61c, 0xc61968a2, 0x721c7580, 0xc602ffaa, 0x7211107e, 0xc5ec98ee, + 0x7205a716, 0xc5d6346f, + 0x71fa3949, 0xc5bfd22e, 0x71eec716, 0xc5a9722c, 0x71e35080, 0xc593146a, + 0x71d7d585, 0xc57cb8e9, + 0x71cc5626, 0xc5665fa9, 0x71c0d265, 0xc55008ab, 0x71b54a41, 0xc539b3f1, + 0x71a9bdba, 0xc523617a, + 0x719e2cd2, 0xc50d1149, 0x71929789, 0xc4f6c35d, 0x7186fdde, 0xc4e077b8, + 0x717b5fd3, 0xc4ca2e5b, + 0x716fbd68, 0xc4b3e746, 0x7164169d, 0xc49da27a, 0x71586b74, 0xc4875ff9, + 0x714cbbeb, 0xc4711fc2, + 0x71410805, 0xc45ae1d7, 0x71354fc0, 0xc444a639, 0x7129931f, 0xc42e6ce8, + 0x711dd220, 0xc41835e6, + 0x71120cc5, 0xc4020133, 0x7106430e, 0xc3ebced0, 0x70fa74fc, 0xc3d59ebe, + 0x70eea28e, 0xc3bf70fd, + 0x70e2cbc6, 0xc3a94590, 0x70d6f0a4, 0xc3931c76, 0x70cb1128, 0xc37cf5b0, + 0x70bf2d53, 0xc366d140, + 0x70b34525, 0xc350af26, 0x70a7589f, 0xc33a8f62, 0x709b67c0, 0xc32471f7, + 0x708f728b, 0xc30e56e4, + 0x708378ff, 0xc2f83e2a, 0x70777b1c, 0xc2e227cb, 0x706b78e3, 0xc2cc13c7, + 0x705f7255, 0xc2b6021f, + 0x70536771, 0xc29ff2d4, 0x70475839, 0xc289e5e7, 0x703b44ad, 0xc273db58, + 0x702f2ccd, 0xc25dd329, + 0x7023109a, 0xc247cd5a, 0x7016f014, 0xc231c9ec, 0x700acb3c, 0xc21bc8e1, + 0x6ffea212, 0xc205ca38, + 0x6ff27497, 0xc1efcdf3, 0x6fe642ca, 0xc1d9d412, 0x6fda0cae, 0xc1c3dc97, + 0x6fcdd241, 0xc1ade781, + 0x6fc19385, 0xc197f4d4, 0x6fb5507a, 0xc182048d, 0x6fa90921, 0xc16c16b0, + 0x6f9cbd79, 0xc1562b3d, + 0x6f906d84, 0xc1404233, 0x6f841942, 0xc12a5b95, 0x6f77c0b3, 0xc1147764, + 0x6f6b63d8, 0xc0fe959f, + 0x6f5f02b2, 0xc0e8b648, 0x6f529d40, 0xc0d2d960, 0x6f463383, 0xc0bcfee7, + 0x6f39c57d, 0xc0a726df, + 0x6f2d532c, 0xc0915148, 0x6f20dc92, 0xc07b7e23, 0x6f1461b0, 0xc065ad70, + 0x6f07e285, 0xc04fdf32, + 0x6efb5f12, 0xc03a1368, 0x6eeed758, 0xc0244a14, 0x6ee24b57, 0xc00e8336, + 0x6ed5bb10, 0xbff8bece, + 0x6ec92683, 0xbfe2fcdf, 0x6ebc8db0, 0xbfcd3d69, 0x6eaff099, 0xbfb7806c, + 0x6ea34f3d, 0xbfa1c5ea, + 0x6e96a99d, 0xbf8c0de3, 0x6e89ffb9, 0xbf765858, 0x6e7d5193, 0xbf60a54a, + 0x6e709f2a, 0xbf4af4ba, + 0x6e63e87f, 0xbf3546a8, 0x6e572d93, 0xbf1f9b16, 0x6e4a6e66, 0xbf09f205, + 0x6e3daaf8, 0xbef44b74, + 0x6e30e34a, 0xbedea765, 0x6e24175c, 0xbec905d9, 0x6e174730, 0xbeb366d1, + 0x6e0a72c5, 0xbe9dca4e, + 0x6dfd9a1c, 0xbe88304f, 0x6df0bd35, 0xbe7298d7, 0x6de3dc11, 0xbe5d03e6, + 0x6dd6f6b1, 0xbe47717c, + 0x6dca0d14, 0xbe31e19b, 0x6dbd1f3c, 0xbe1c5444, 0x6db02d29, 0xbe06c977, + 0x6da336dc, 0xbdf14135, + 0x6d963c54, 0xbddbbb7f, 0x6d893d93, 0xbdc63856, 0x6d7c3a98, 0xbdb0b7bb, + 0x6d6f3365, 0xbd9b39ad, + 0x6d6227fa, 0xbd85be30, 0x6d551858, 0xbd704542, 0x6d48047e, 0xbd5acee5, + 0x6d3aec6e, 0xbd455b1a, + 0x6d2dd027, 0xbd2fe9e2, 0x6d20afac, 0xbd1a7b3d, 0x6d138afb, 0xbd050f2c, + 0x6d066215, 0xbcefa5b0, + 0x6cf934fc, 0xbcda3ecb, 0x6cec03af, 0xbcc4da7b, 0x6cdece2f, 0xbcaf78c4, + 0x6cd1947c, 0xbc9a19a5, + 0x6cc45698, 0xbc84bd1f, 0x6cb71482, 0xbc6f6333, 0x6ca9ce3b, 0xbc5a0be2, + 0x6c9c83c3, 0xbc44b72c, + 0x6c8f351c, 0xbc2f6513, 0x6c81e245, 0xbc1a1598, 0x6c748b3f, 0xbc04c8ba, + 0x6c67300b, 0xbbef7e7c, + 0x6c59d0a9, 0xbbda36dd, 0x6c4c6d1a, 0xbbc4f1df, 0x6c3f055d, 0xbbafaf82, + 0x6c319975, 0xbb9a6fc7, + 0x6c242960, 0xbb8532b0, 0x6c16b521, 0xbb6ff83c, 0x6c093cb6, 0xbb5ac06d, + 0x6bfbc021, 0xbb458b43, + 0x6bee3f62, 0xbb3058c0, 0x6be0ba7b, 0xbb1b28e4, 0x6bd3316a, 0xbb05fbb0, + 0x6bc5a431, 0xbaf0d125, + 0x6bb812d1, 0xbadba943, 0x6baa7d49, 0xbac6840c, 0x6b9ce39b, 0xbab16180, + 0x6b8f45c7, 0xba9c41a0, + 0x6b81a3cd, 0xba87246d, 0x6b73fdae, 0xba7209e7, 0x6b66536b, 0xba5cf210, + 0x6b58a503, 0xba47dce8, + 0x6b4af279, 0xba32ca71, 0x6b3d3bcb, 0xba1dbaaa, 0x6b2f80fb, 0xba08ad95, + 0x6b21c208, 0xb9f3a332, + 0x6b13fef5, 0xb9de9b83, 0x6b0637c1, 0xb9c99688, 0x6af86c6c, 0xb9b49442, + 0x6aea9cf8, 0xb99f94b2, + 0x6adcc964, 0xb98a97d8, 0x6acef1b2, 0xb9759db6, 0x6ac115e2, 0xb960a64c, + 0x6ab335f4, 0xb94bb19b, + 0x6aa551e9, 0xb936bfa4, 0x6a9769c1, 0xb921d067, 0x6a897d7d, 0xb90ce3e6, + 0x6a7b8d1e, 0xb8f7fa21, + 0x6a6d98a4, 0xb8e31319, 0x6a5fa010, 0xb8ce2ecf, 0x6a51a361, 0xb8b94d44, + 0x6a43a29a, 0xb8a46e78, + 0x6a359db9, 0xb88f926d, 0x6a2794c1, 0xb87ab922, 0x6a1987b0, 0xb865e299, + 0x6a0b7689, 0xb8510ed4, + 0x69fd614a, 0xb83c3dd1, 0x69ef47f6, 0xb8276f93, 0x69e12a8c, 0xb812a41a, + 0x69d3090e, 0xb7fddb67, + 0x69c4e37a, 0xb7e9157a, 0x69b6b9d3, 0xb7d45255, 0x69a88c19, 0xb7bf91f8, + 0x699a5a4c, 0xb7aad465, + 0x698c246c, 0xb796199b, 0x697dea7b, 0xb781619c, 0x696fac78, 0xb76cac69, + 0x69616a65, 0xb757fa01, + 0x69532442, 0xb7434a67, 0x6944da10, 0xb72e9d9b, 0x69368bce, 0xb719f39e, + 0x6928397e, 0xb7054c6f, + 0x6919e320, 0xb6f0a812, 0x690b88b5, 0xb6dc0685, 0x68fd2a3d, 0xb6c767ca, + 0x68eec7b9, 0xb6b2cbe2, + 0x68e06129, 0xb69e32cd, 0x68d1f68f, 0xb6899c8d, 0x68c387e9, 0xb6750921, + 0x68b5153a, 0xb660788c, + 0x68a69e81, 0xb64beacd, 0x689823bf, 0xb6375fe5, 0x6889a4f6, 0xb622d7d6, + 0x687b2224, 0xb60e529f, + 0x686c9b4b, 0xb5f9d043, 0x685e106c, 0xb5e550c1, 0x684f8186, 0xb5d0d41a, + 0x6840ee9b, 0xb5bc5a50, + 0x683257ab, 0xb5a7e362, 0x6823bcb7, 0xb5936f53, 0x68151dbe, 0xb57efe22, + 0x68067ac3, 0xb56a8fd0, + 0x67f7d3c5, 0xb556245e, 0x67e928c5, 0xb541bbcd, 0x67da79c3, 0xb52d561e, + 0x67cbc6c0, 0xb518f351, + 0x67bd0fbd, 0xb5049368, 0x67ae54ba, 0xb4f03663, 0x679f95b7, 0xb4dbdc42, + 0x6790d2b6, 0xb4c78507, + 0x67820bb7, 0xb4b330b3, 0x677340ba, 0xb49edf45, 0x676471c0, 0xb48a90c0, + 0x67559eca, 0xb4764523, + 0x6746c7d8, 0xb461fc70, 0x6737ecea, 0xb44db6a8, 0x67290e02, 0xb43973ca, + 0x671a2b20, 0xb42533d8, + 0x670b4444, 0xb410f6d3, 0x66fc596f, 0xb3fcbcbb, 0x66ed6aa1, 0xb3e88592, + 0x66de77dc, 0xb3d45157, + 0x66cf8120, 0xb3c0200c, 0x66c0866d, 0xb3abf1b2, 0x66b187c3, 0xb397c649, + 0x66a28524, 0xb3839dd3, + 0x66937e91, 0xb36f784f, 0x66847408, 0xb35b55bf, 0x6675658c, 0xb3473623, + 0x6666531d, 0xb333197c, + 0x66573cbb, 0xb31effcc, 0x66482267, 0xb30ae912, 0x66390422, 0xb2f6d550, + 0x6629e1ec, 0xb2e2c486, + 0x661abbc5, 0xb2ceb6b5, 0x660b91af, 0xb2baabde, 0x65fc63a9, 0xb2a6a402, + 0x65ed31b5, 0xb2929f21, + 0x65ddfbd3, 0xb27e9d3c, 0x65cec204, 0xb26a9e54, 0x65bf8447, 0xb256a26a, + 0x65b0429f, 0xb242a97e, + 0x65a0fd0b, 0xb22eb392, 0x6591b38c, 0xb21ac0a6, 0x65826622, 0xb206d0ba, + 0x657314cf, 0xb1f2e3d0, + 0x6563bf92, 0xb1def9e9, 0x6554666d, 0xb1cb1304, 0x6545095f, 0xb1b72f23, + 0x6535a86b, 0xb1a34e47, + 0x6526438f, 0xb18f7071, 0x6516dacd, 0xb17b95a0, 0x65076e25, 0xb167bdd7, + 0x64f7fd98, 0xb153e915, + 0x64e88926, 0xb140175b, 0x64d910d1, 0xb12c48ab, 0x64c99498, 0xb1187d05, + 0x64ba147d, 0xb104b46a, + 0x64aa907f, 0xb0f0eeda, 0x649b08a0, 0xb0dd2c56, 0x648b7ce0, 0xb0c96ce0, + 0x647bed3f, 0xb0b5b077, + 0x646c59bf, 0xb0a1f71d, 0x645cc260, 0xb08e40d2, 0x644d2722, 0xb07a8d97, + 0x643d8806, 0xb066dd6d, + 0x642de50d, 0xb0533055, 0x641e3e38, 0xb03f864f, 0x640e9386, 0xb02bdf5c, + 0x63fee4f8, 0xb0183b7d, + 0x63ef3290, 0xb0049ab3, 0x63df7c4d, 0xaff0fcfe, 0x63cfc231, 0xafdd625f, + 0x63c0043b, 0xafc9cad7, + 0x63b0426d, 0xafb63667, 0x63a07cc7, 0xafa2a50f, 0x6390b34a, 0xaf8f16d1, + 0x6380e5f6, 0xaf7b8bac, + 0x637114cc, 0xaf6803a2, 0x63613fcd, 0xaf547eb3, 0x635166f9, 0xaf40fce1, + 0x63418a50, 0xaf2d7e2b, + 0x6331a9d4, 0xaf1a0293, 0x6321c585, 0xaf068a1a, 0x6311dd64, 0xaef314c0, + 0x6301f171, 0xaedfa285, + 0x62f201ac, 0xaecc336c, 0x62e20e17, 0xaeb8c774, 0x62d216b3, 0xaea55e9e, + 0x62c21b7e, 0xae91f8eb, + 0x62b21c7b, 0xae7e965b, 0x62a219aa, 0xae6b36f0, 0x6292130c, 0xae57daab, + 0x628208a1, 0xae44818b, + 0x6271fa69, 0xae312b92, 0x6261e866, 0xae1dd8c0, 0x6251d298, 0xae0a8916, + 0x6241b8ff, 0xadf73c96, + 0x62319b9d, 0xade3f33e, 0x62217a72, 0xadd0ad12, 0x6211557e, 0xadbd6a10, + 0x62012cc2, 0xadaa2a3b, + 0x61f1003f, 0xad96ed92, 0x61e0cff5, 0xad83b416, 0x61d09be5, 0xad707dc8, + 0x61c06410, 0xad5d4aaa, + 0x61b02876, 0xad4a1aba, 0x619fe918, 0xad36edfc, 0x618fa5f7, 0xad23c46e, + 0x617f5f12, 0xad109e12, + 0x616f146c, 0xacfd7ae8, 0x615ec603, 0xacea5af2, 0x614e73da, 0xacd73e30, + 0x613e1df0, 0xacc424a3, + 0x612dc447, 0xacb10e4b, 0x611d66de, 0xac9dfb29, 0x610d05b7, 0xac8aeb3e, + 0x60fca0d2, 0xac77de8b, + 0x60ec3830, 0xac64d510, 0x60dbcbd1, 0xac51cecf, 0x60cb5bb7, 0xac3ecbc7, + 0x60bae7e1, 0xac2bcbfa, + 0x60aa7050, 0xac18cf69, 0x6099f505, 0xac05d613, 0x60897601, 0xabf2dffb, + 0x6078f344, 0xabdfed1f, + 0x60686ccf, 0xabccfd83, 0x6057e2a2, 0xabba1125, 0x604754bf, 0xaba72807, + 0x6036c325, 0xab944229, + 0x60262dd6, 0xab815f8d, 0x601594d1, 0xab6e8032, 0x6004f819, 0xab5ba41a, + 0x5ff457ad, 0xab48cb46, + 0x5fe3b38d, 0xab35f5b5, 0x5fd30bbc, 0xab23236a, 0x5fc26038, 0xab105464, + 0x5fb1b104, 0xaafd88a4, + 0x5fa0fe1f, 0xaaeac02c, 0x5f90478a, 0xaad7fafb, 0x5f7f8d46, 0xaac53912, + 0x5f6ecf53, 0xaab27a73, + 0x5f5e0db3, 0xaa9fbf1e, 0x5f4d4865, 0xaa8d0713, 0x5f3c7f6b, 0xaa7a5253, + 0x5f2bb2c5, 0xaa67a0e0, + 0x5f1ae274, 0xaa54f2ba, 0x5f0a0e77, 0xaa4247e1, 0x5ef936d1, 0xaa2fa056, + 0x5ee85b82, 0xaa1cfc1a, + 0x5ed77c8a, 0xaa0a5b2e, 0x5ec699e9, 0xa9f7bd92, 0x5eb5b3a2, 0xa9e52347, + 0x5ea4c9b3, 0xa9d28c4e, + 0x5e93dc1f, 0xa9bff8a8, 0x5e82eae5, 0xa9ad6855, 0x5e71f606, 0xa99adb56, + 0x5e60fd84, 0xa98851ac, + 0x5e50015d, 0xa975cb57, 0x5e3f0194, 0xa9634858, 0x5e2dfe29, 0xa950c8b0, + 0x5e1cf71c, 0xa93e4c5f, + 0x5e0bec6e, 0xa92bd367, 0x5dfade20, 0xa9195dc7, 0x5de9cc33, 0xa906eb82, + 0x5dd8b6a7, 0xa8f47c97, + 0x5dc79d7c, 0xa8e21106, 0x5db680b4, 0xa8cfa8d2, 0x5da5604f, 0xa8bd43fa, + 0x5d943c4e, 0xa8aae280, + 0x5d8314b1, 0xa8988463, 0x5d71e979, 0xa88629a5, 0x5d60baa7, 0xa873d246, + 0x5d4f883b, 0xa8617e48, + 0x5d3e5237, 0xa84f2daa, 0x5d2d189a, 0xa83ce06e, 0x5d1bdb65, 0xa82a9693, + 0x5d0a9a9a, 0xa818501c, + 0x5cf95638, 0xa8060d08, 0x5ce80e41, 0xa7f3cd59, 0x5cd6c2b5, 0xa7e1910f, + 0x5cc57394, 0xa7cf582a, + 0x5cb420e0, 0xa7bd22ac, 0x5ca2ca99, 0xa7aaf094, 0x5c9170bf, 0xa798c1e5, + 0x5c801354, 0xa786969e, + 0x5c6eb258, 0xa7746ec0, 0x5c5d4dcc, 0xa7624a4d, 0x5c4be5b0, 0xa7502943, + 0x5c3a7a05, 0xa73e0ba5, + 0x5c290acc, 0xa72bf174, 0x5c179806, 0xa719daae, 0x5c0621b2, 0xa707c757, + 0x5bf4a7d2, 0xa6f5b76d, + 0x5be32a67, 0xa6e3aaf2, 0x5bd1a971, 0xa6d1a1e7, 0x5bc024f0, 0xa6bf9c4b, + 0x5bae9ce7, 0xa6ad9a21, + 0x5b9d1154, 0xa69b9b68, 0x5b8b8239, 0xa689a022, 0x5b79ef96, 0xa677a84e, + 0x5b68596d, 0xa665b3ee, + 0x5b56bfbd, 0xa653c303, 0x5b452288, 0xa641d58c, 0x5b3381ce, 0xa62feb8b, + 0x5b21dd90, 0xa61e0501, + 0x5b1035cf, 0xa60c21ee, 0x5afe8a8b, 0xa5fa4252, 0x5aecdbc5, 0xa5e8662f, + 0x5adb297d, 0xa5d68d85, + 0x5ac973b5, 0xa5c4b855, 0x5ab7ba6c, 0xa5b2e6a0, 0x5aa5fda5, 0xa5a11866, + 0x5a943d5e, 0xa58f4da8, + 0x5a82799a, 0xa57d8666, 0x5a70b258, 0xa56bc2a2, 0x5a5ee79a, 0xa55a025b, + 0x5a4d1960, 0xa5484594, + 0x5a3b47ab, 0xa5368c4b, 0x5a29727b, 0xa524d683, 0x5a1799d1, 0xa513243b, + 0x5a05bdae, 0xa5017575, + 0x59f3de12, 0xa4efca31, 0x59e1faff, 0xa4de2270, 0x59d01475, 0xa4cc7e32, + 0x59be2a74, 0xa4badd78, + 0x59ac3cfd, 0xa4a94043, 0x599a4c12, 0xa497a693, 0x598857b2, 0xa486106a, + 0x59765fde, 0xa4747dc7, + 0x59646498, 0xa462eeac, 0x595265df, 0xa4516319, 0x594063b5, 0xa43fdb10, + 0x592e5e19, 0xa42e568f, + 0x591c550e, 0xa41cd599, 0x590a4893, 0xa40b582e, 0x58f838a9, 0xa3f9de4e, + 0x58e62552, 0xa3e867fa, + 0x58d40e8c, 0xa3d6f534, 0x58c1f45b, 0xa3c585fb, 0x58afd6bd, 0xa3b41a50, + 0x589db5b3, 0xa3a2b234, + 0x588b9140, 0xa3914da8, 0x58796962, 0xa37fecac, 0x58673e1b, 0xa36e8f41, + 0x58550f6c, 0xa35d3567, + 0x5842dd54, 0xa34bdf20, 0x5830a7d6, 0xa33a8c6c, 0x581e6ef1, 0xa3293d4b, + 0x580c32a7, 0xa317f1bf, + 0x57f9f2f8, 0xa306a9c8, 0x57e7afe4, 0xa2f56566, 0x57d5696d, 0xa2e4249b, + 0x57c31f92, 0xa2d2e766, + 0x57b0d256, 0xa2c1adc9, 0x579e81b8, 0xa2b077c5, 0x578c2dba, 0xa29f4559, + 0x5779d65b, 0xa28e1687, + 0x57677b9d, 0xa27ceb4f, 0x57551d80, 0xa26bc3b2, 0x5742bc06, 0xa25a9fb1, + 0x5730572e, 0xa2497f4c, + 0x571deefa, 0xa2386284, 0x570b8369, 0xa2274959, 0x56f9147e, 0xa21633cd, + 0x56e6a239, 0xa20521e0, + 0x56d42c99, 0xa1f41392, 0x56c1b3a1, 0xa1e308e4, 0x56af3750, 0xa1d201d7, + 0x569cb7a8, 0xa1c0fe6c, + 0x568a34a9, 0xa1affea3, 0x5677ae54, 0xa19f027c, 0x566524aa, 0xa18e09fa, + 0x565297ab, 0xa17d151b, + 0x56400758, 0xa16c23e1, 0x562d73b2, 0xa15b364d, 0x561adcb9, 0xa14a4c5e, + 0x5608426e, 0xa1396617, + 0x55f5a4d2, 0xa1288376, 0x55e303e6, 0xa117a47e, 0x55d05faa, 0xa106c92f, + 0x55bdb81f, 0xa0f5f189, + 0x55ab0d46, 0xa0e51d8c, 0x55985f20, 0xa0d44d3b, 0x5585adad, 0xa0c38095, + 0x5572f8ed, 0xa0b2b79b, + 0x556040e2, 0xa0a1f24d, 0x554d858d, 0xa09130ad, 0x553ac6ee, 0xa08072ba, + 0x55280505, 0xa06fb876, + 0x55153fd4, 0xa05f01e1, 0x5502775c, 0xa04e4efc, 0x54efab9c, 0xa03d9fc8, + 0x54dcdc96, 0xa02cf444, + 0x54ca0a4b, 0xa01c4c73, 0x54b734ba, 0xa00ba853, 0x54a45be6, 0x9ffb07e7, + 0x54917fce, 0x9fea6b2f, + 0x547ea073, 0x9fd9d22a, 0x546bbdd7, 0x9fc93cdb, 0x5458d7f9, 0x9fb8ab41, + 0x5445eedb, 0x9fa81d5e, + 0x5433027d, 0x9f979331, 0x542012e1, 0x9f870cbc, 0x540d2005, 0x9f7689ff, + 0x53fa29ed, 0x9f660afb, + 0x53e73097, 0x9f558fb0, 0x53d43406, 0x9f45181f, 0x53c13439, 0x9f34a449, + 0x53ae3131, 0x9f24342f, + 0x539b2af0, 0x9f13c7d0, 0x53882175, 0x9f035f2e, 0x537514c2, 0x9ef2fa49, + 0x536204d7, 0x9ee29922, + 0x534ef1b5, 0x9ed23bb9, 0x533bdb5d, 0x9ec1e210, 0x5328c1d0, 0x9eb18c26, + 0x5315a50e, 0x9ea139fd, + 0x53028518, 0x9e90eb94, 0x52ef61ee, 0x9e80a0ee, 0x52dc3b92, 0x9e705a09, + 0x52c91204, 0x9e6016e8, + 0x52b5e546, 0x9e4fd78a, 0x52a2b556, 0x9e3f9bf0, 0x528f8238, 0x9e2f641b, + 0x527c4bea, 0x9e1f300b, + 0x5269126e, 0x9e0effc1, 0x5255d5c5, 0x9dfed33e, 0x524295f0, 0x9deeaa82, + 0x522f52ee, 0x9dde858e, + 0x521c0cc2, 0x9dce6463, 0x5208c36a, 0x9dbe4701, 0x51f576ea, 0x9dae2d68, + 0x51e22740, 0x9d9e179a, + 0x51ced46e, 0x9d8e0597, 0x51bb7e75, 0x9d7df75f, 0x51a82555, 0x9d6decf4, + 0x5194c910, 0x9d5de656, + 0x518169a5, 0x9d4de385, 0x516e0715, 0x9d3de482, 0x515aa162, 0x9d2de94d, + 0x5147388c, 0x9d1df1e9, + 0x5133cc94, 0x9d0dfe54, 0x51205d7b, 0x9cfe0e8f, 0x510ceb40, 0x9cee229c, + 0x50f975e6, 0x9cde3a7b, + 0x50e5fd6d, 0x9cce562c, 0x50d281d5, 0x9cbe75b0, 0x50bf031f, 0x9cae9907, + 0x50ab814d, 0x9c9ec033, + 0x5097fc5e, 0x9c8eeb34, 0x50847454, 0x9c7f1a0a, 0x5070e92f, 0x9c6f4cb6, + 0x505d5af1, 0x9c5f8339, + 0x5049c999, 0x9c4fbd93, 0x50363529, 0x9c3ffbc5, 0x50229da1, 0x9c303dcf, + 0x500f0302, 0x9c2083b3, + 0x4ffb654d, 0x9c10cd70, 0x4fe7c483, 0x9c011b08, 0x4fd420a4, 0x9bf16c7a, + 0x4fc079b1, 0x9be1c1c8, + 0x4faccfab, 0x9bd21af3, 0x4f992293, 0x9bc277fa, 0x4f857269, 0x9bb2d8de, + 0x4f71bf2e, 0x9ba33da0, + 0x4f5e08e3, 0x9b93a641, 0x4f4a4f89, 0x9b8412c1, 0x4f369320, 0x9b748320, + 0x4f22d3aa, 0x9b64f760, + 0x4f0f1126, 0x9b556f81, 0x4efb4b96, 0x9b45eb83, 0x4ee782fb, 0x9b366b68, + 0x4ed3b755, 0x9b26ef2f, + 0x4ebfe8a5, 0x9b1776da, 0x4eac16eb, 0x9b080268, 0x4e984229, 0x9af891db, + 0x4e846a60, 0x9ae92533, + 0x4e708f8f, 0x9ad9bc71, 0x4e5cb1b9, 0x9aca5795, 0x4e48d0dd, 0x9abaf6a1, + 0x4e34ecfc, 0x9aab9993, + 0x4e210617, 0x9a9c406e, 0x4e0d1c30, 0x9a8ceb31, 0x4df92f46, 0x9a7d99de, + 0x4de53f5a, 0x9a6e4c74, + 0x4dd14c6e, 0x9a5f02f5, 0x4dbd5682, 0x9a4fbd61, 0x4da95d96, 0x9a407bb9, + 0x4d9561ac, 0x9a313dfc, + 0x4d8162c4, 0x9a22042d, 0x4d6d60df, 0x9a12ce4b, 0x4d595bfe, 0x9a039c57, + 0x4d455422, 0x99f46e51, + 0x4d31494b, 0x99e5443b, 0x4d1d3b7a, 0x99d61e14, 0x4d092ab0, 0x99c6fbde, + 0x4cf516ee, 0x99b7dd99, + 0x4ce10034, 0x99a8c345, 0x4ccce684, 0x9999ace3, 0x4cb8c9dd, 0x998a9a74, + 0x4ca4aa41, 0x997b8bf8, + 0x4c9087b1, 0x996c816f, 0x4c7c622d, 0x995d7adc, 0x4c6839b7, 0x994e783d, + 0x4c540e4e, 0x993f7993, + 0x4c3fdff4, 0x99307ee0, 0x4c2baea9, 0x99218824, 0x4c177a6e, 0x9912955f, + 0x4c034345, 0x9903a691, + 0x4bef092d, 0x98f4bbbc, 0x4bdacc28, 0x98e5d4e0, 0x4bc68c36, 0x98d6f1fe, + 0x4bb24958, 0x98c81316, + 0x4b9e0390, 0x98b93828, 0x4b89badd, 0x98aa6136, 0x4b756f40, 0x989b8e40, + 0x4b6120bb, 0x988cbf46, + 0x4b4ccf4d, 0x987df449, 0x4b387af9, 0x986f2d4a, 0x4b2423be, 0x98606a49, + 0x4b0fc99d, 0x9851ab46, + 0x4afb6c98, 0x9842f043, 0x4ae70caf, 0x98343940, 0x4ad2a9e2, 0x9825863d, + 0x4abe4433, 0x9816d73b, + 0x4aa9dba2, 0x98082c3b, 0x4a957030, 0x97f9853d, 0x4a8101de, 0x97eae242, + 0x4a6c90ad, 0x97dc4349, + 0x4a581c9e, 0x97cda855, 0x4a43a5b0, 0x97bf1165, 0x4a2f2be6, 0x97b07e7a, + 0x4a1aaf3f, 0x97a1ef94, + 0x4a062fbd, 0x979364b5, 0x49f1ad61, 0x9784dddc, 0x49dd282a, 0x97765b0a, + 0x49c8a01b, 0x9767dc41, + 0x49b41533, 0x9759617f, 0x499f8774, 0x974aeac6, 0x498af6df, 0x973c7817, + 0x49766373, 0x972e0971, + 0x4961cd33, 0x971f9ed7, 0x494d341e, 0x97113847, 0x49389836, 0x9702d5c3, + 0x4923f97b, 0x96f4774b, + 0x490f57ee, 0x96e61ce0, 0x48fab391, 0x96d7c682, 0x48e60c62, 0x96c97432, + 0x48d16265, 0x96bb25f0, + 0x48bcb599, 0x96acdbbe, 0x48a805ff, 0x969e959b, 0x48935397, 0x96905388, + 0x487e9e64, 0x96821585, + 0x4869e665, 0x9673db94, 0x48552b9b, 0x9665a5b4, 0x48406e08, 0x965773e7, + 0x482badab, 0x9649462d, + 0x4816ea86, 0x963b1c86, 0x48022499, 0x962cf6f2, 0x47ed5be6, 0x961ed574, + 0x47d8906d, 0x9610b80a, + 0x47c3c22f, 0x96029eb6, 0x47aef12c, 0x95f48977, 0x479a1d67, 0x95e67850, + 0x478546de, 0x95d86b3f, + 0x47706d93, 0x95ca6247, 0x475b9188, 0x95bc5d66, 0x4746b2bc, 0x95ae5c9f, + 0x4731d131, 0x95a05ff0, + 0x471cece7, 0x9592675c, 0x470805df, 0x958472e2, 0x46f31c1a, 0x95768283, + 0x46de2f99, 0x9568963f, + 0x46c9405c, 0x955aae17, 0x46b44e65, 0x954cca0c, 0x469f59b4, 0x953eea1e, + 0x468a624a, 0x95310e4e, + 0x46756828, 0x9523369c, 0x46606b4e, 0x95156308, 0x464b6bbe, 0x95079394, + 0x46366978, 0x94f9c83f, + 0x4621647d, 0x94ec010b, 0x460c5cce, 0x94de3df8, 0x45f7526b, 0x94d07f05, + 0x45e24556, 0x94c2c435, + 0x45cd358f, 0x94b50d87, 0x45b82318, 0x94a75afd, 0x45a30df0, 0x9499ac95, + 0x458df619, 0x948c0252, + 0x4578db93, 0x947e5c33, 0x4563be60, 0x9470ba39, 0x454e9e80, 0x94631c65, + 0x45397bf4, 0x945582b7, + 0x452456bd, 0x9447ed2f, 0x450f2edb, 0x943a5bcf, 0x44fa0450, 0x942cce96, + 0x44e4d71c, 0x941f4585, + 0x44cfa740, 0x9411c09e, 0x44ba74bd, 0x94043fdf, 0x44a53f93, 0x93f6c34a, + 0x449007c4, 0x93e94adf, + 0x447acd50, 0x93dbd6a0, 0x44659039, 0x93ce668b, 0x4450507e, 0x93c0faa3, + 0x443b0e21, 0x93b392e6, + 0x4425c923, 0x93a62f57, 0x44108184, 0x9398cff5, 0x43fb3746, 0x938b74c1, + 0x43e5ea68, 0x937e1dbb, + 0x43d09aed, 0x9370cae4, 0x43bb48d4, 0x93637c3d, 0x43a5f41e, 0x935631c5, + 0x43909ccd, 0x9348eb7e, + 0x437b42e1, 0x933ba968, 0x4365e65b, 0x932e6b84, 0x4350873c, 0x932131d1, + 0x433b2585, 0x9313fc51, + 0x4325c135, 0x9306cb04, 0x43105a50, 0x92f99deb, 0x42faf0d4, 0x92ec7505, + 0x42e584c3, 0x92df5054, + 0x42d0161e, 0x92d22fd9, 0x42baa4e6, 0x92c51392, 0x42a5311b, 0x92b7fb82, + 0x428fbabe, 0x92aae7a8, + 0x427a41d0, 0x929dd806, 0x4264c653, 0x9290cc9b, 0x424f4845, 0x9283c568, + 0x4239c7aa, 0x9276c26d, + 0x42244481, 0x9269c3ac, 0x420ebecb, 0x925cc924, 0x41f93689, 0x924fd2d7, + 0x41e3abbc, 0x9242e0c4, + 0x41ce1e65, 0x9235f2ec, 0x41b88e84, 0x9229094f, 0x41a2fc1a, 0x921c23ef, + 0x418d6729, 0x920f42cb, + 0x4177cfb1, 0x920265e4, 0x416235b2, 0x91f58d3b, 0x414c992f, 0x91e8b8d0, + 0x4136fa27, 0x91dbe8a4, + 0x4121589b, 0x91cf1cb6, 0x410bb48c, 0x91c25508, 0x40f60dfb, 0x91b5919a, + 0x40e064ea, 0x91a8d26d, + 0x40cab958, 0x919c1781, 0x40b50b46, 0x918f60d6, 0x409f5ab6, 0x9182ae6d, + 0x4089a7a8, 0x91760047, + 0x4073f21d, 0x91695663, 0x405e3a16, 0x915cb0c3, 0x40487f94, 0x91500f67, + 0x4032c297, 0x91437250, + 0x401d0321, 0x9136d97d, 0x40074132, 0x912a44f0, 0x3ff17cca, 0x911db4a9, + 0x3fdbb5ec, 0x911128a8, + 0x3fc5ec98, 0x9104a0ee, 0x3fb020ce, 0x90f81d7b, 0x3f9a5290, 0x90eb9e50, + 0x3f8481dd, 0x90df236e, + 0x3f6eaeb8, 0x90d2acd4, 0x3f58d921, 0x90c63a83, 0x3f430119, 0x90b9cc7d, + 0x3f2d26a0, 0x90ad62c0, + 0x3f1749b8, 0x90a0fd4e, 0x3f016a61, 0x90949c28, 0x3eeb889c, 0x90883f4d, + 0x3ed5a46b, 0x907be6be, + 0x3ebfbdcd, 0x906f927c, 0x3ea9d4c3, 0x90634287, 0x3e93e950, 0x9056f6df, + 0x3e7dfb73, 0x904aaf86, + 0x3e680b2c, 0x903e6c7b, 0x3e52187f, 0x90322dbf, 0x3e3c2369, 0x9025f352, + 0x3e262bee, 0x9019bd36, + 0x3e10320d, 0x900d8b69, 0x3dfa35c8, 0x90015dee, 0x3de4371f, 0x8ff534c4, + 0x3dce3614, 0x8fe90fec, + 0x3db832a6, 0x8fdcef66, 0x3da22cd7, 0x8fd0d333, 0x3d8c24a8, 0x8fc4bb53, + 0x3d761a19, 0x8fb8a7c7, + 0x3d600d2c, 0x8fac988f, 0x3d49fde1, 0x8fa08dab, 0x3d33ec39, 0x8f94871d, + 0x3d1dd835, 0x8f8884e4, + 0x3d07c1d6, 0x8f7c8701, 0x3cf1a91c, 0x8f708d75, 0x3cdb8e09, 0x8f649840, + 0x3cc5709e, 0x8f58a761, + 0x3caf50da, 0x8f4cbadb, 0x3c992ec0, 0x8f40d2ad, 0x3c830a50, 0x8f34eed8, + 0x3c6ce38a, 0x8f290f5c, + 0x3c56ba70, 0x8f1d343a, 0x3c408f03, 0x8f115d72, 0x3c2a6142, 0x8f058b04, + 0x3c143130, 0x8ef9bcf2, + 0x3bfdfecd, 0x8eedf33b, 0x3be7ca1a, 0x8ee22de0, 0x3bd19318, 0x8ed66ce1, + 0x3bbb59c7, 0x8ecab040, + 0x3ba51e29, 0x8ebef7fb, 0x3b8ee03e, 0x8eb34415, 0x3b78a007, 0x8ea7948c, + 0x3b625d86, 0x8e9be963, + 0x3b4c18ba, 0x8e904298, 0x3b35d1a5, 0x8e84a02d, 0x3b1f8848, 0x8e790222, + 0x3b093ca3, 0x8e6d6877, + 0x3af2eeb7, 0x8e61d32e, 0x3adc9e86, 0x8e564246, 0x3ac64c0f, 0x8e4ab5bf, + 0x3aaff755, 0x8e3f2d9b, + 0x3a99a057, 0x8e33a9da, 0x3a834717, 0x8e282a7b, 0x3a6ceb96, 0x8e1caf80, + 0x3a568dd4, 0x8e1138ea, + 0x3a402dd2, 0x8e05c6b7, 0x3a29cb91, 0x8dfa58ea, 0x3a136712, 0x8deeef82, + 0x39fd0056, 0x8de38a80, + 0x39e6975e, 0x8dd829e4, 0x39d02c2a, 0x8dcccdaf, 0x39b9bebc, 0x8dc175e0, + 0x39a34f13, 0x8db6227a, + 0x398cdd32, 0x8daad37b, 0x39766919, 0x8d9f88e5, 0x395ff2c9, 0x8d9442b8, + 0x39497a43, 0x8d8900f3, + 0x3932ff87, 0x8d7dc399, 0x391c8297, 0x8d728aa9, 0x39060373, 0x8d675623, + 0x38ef821c, 0x8d5c2609, + 0x38d8fe93, 0x8d50fa59, 0x38c278d9, 0x8d45d316, 0x38abf0ef, 0x8d3ab03f, + 0x389566d6, 0x8d2f91d5, + 0x387eda8e, 0x8d2477d8, 0x38684c19, 0x8d196249, 0x3851bb77, 0x8d0e5127, + 0x383b28a9, 0x8d034474, + 0x382493b0, 0x8cf83c30, 0x380dfc8d, 0x8ced385b, 0x37f76341, 0x8ce238f6, + 0x37e0c7cc, 0x8cd73e01, + 0x37ca2a30, 0x8ccc477d, 0x37b38a6d, 0x8cc1556a, 0x379ce885, 0x8cb667c8, + 0x37864477, 0x8cab7e98, + 0x376f9e46, 0x8ca099da, 0x3758f5f2, 0x8c95b98f, 0x37424b7b, 0x8c8addb7, + 0x372b9ee3, 0x8c800652, + 0x3714f02a, 0x8c753362, 0x36fe3f52, 0x8c6a64e5, 0x36e78c5b, 0x8c5f9ade, + 0x36d0d746, 0x8c54d54c, + 0x36ba2014, 0x8c4a142f, 0x36a366c6, 0x8c3f5788, 0x368cab5c, 0x8c349f58, + 0x3675edd9, 0x8c29eb9f, + 0x365f2e3b, 0x8c1f3c5d, 0x36486c86, 0x8c149192, 0x3631a8b8, 0x8c09eb40, + 0x361ae2d3, 0x8bff4966, + 0x36041ad9, 0x8bf4ac05, 0x35ed50c9, 0x8bea131e, 0x35d684a6, 0x8bdf7eb0, + 0x35bfb66e, 0x8bd4eebc, + 0x35a8e625, 0x8bca6343, 0x359213c9, 0x8bbfdc44, 0x357b3f5d, 0x8bb559c1, + 0x356468e2, 0x8baadbba, + 0x354d9057, 0x8ba0622f, 0x3536b5be, 0x8b95ed21, 0x351fd918, 0x8b8b7c8f, + 0x3508fa66, 0x8b81107b, + 0x34f219a8, 0x8b76a8e4, 0x34db36df, 0x8b6c45cc, 0x34c4520d, 0x8b61e733, + 0x34ad6b32, 0x8b578d18, + 0x34968250, 0x8b4d377c, 0x347f9766, 0x8b42e661, 0x3468aa76, 0x8b3899c6, + 0x3451bb81, 0x8b2e51ab, + 0x343aca87, 0x8b240e11, 0x3423d78a, 0x8b19cef8, 0x340ce28b, 0x8b0f9462, + 0x33f5eb89, 0x8b055e4d, + 0x33def287, 0x8afb2cbb, 0x33c7f785, 0x8af0ffac, 0x33b0fa84, 0x8ae6d720, + 0x3399fb85, 0x8adcb318, + 0x3382fa88, 0x8ad29394, 0x336bf78f, 0x8ac87894, 0x3354f29b, 0x8abe6219, + 0x333debab, 0x8ab45024, + 0x3326e2c3, 0x8aaa42b4, 0x330fd7e1, 0x8aa039cb, 0x32f8cb07, 0x8a963567, + 0x32e1bc36, 0x8a8c358b, + 0x32caab6f, 0x8a823a36, 0x32b398b3, 0x8a784368, 0x329c8402, 0x8a6e5123, + 0x32856d5e, 0x8a646365, + 0x326e54c7, 0x8a5a7a31, 0x32573a3f, 0x8a509585, 0x32401dc6, 0x8a46b564, + 0x3228ff5c, 0x8a3cd9cc, + 0x3211df04, 0x8a3302be, 0x31fabcbd, 0x8a29303b, 0x31e39889, 0x8a1f6243, + 0x31cc7269, 0x8a1598d6, + 0x31b54a5e, 0x8a0bd3f5, 0x319e2067, 0x8a0213a0, 0x3186f487, 0x89f857d8, + 0x316fc6be, 0x89eea09d, + 0x3158970e, 0x89e4edef, 0x31416576, 0x89db3fcf, 0x312a31f8, 0x89d1963c, + 0x3112fc95, 0x89c7f138, + 0x30fbc54d, 0x89be50c3, 0x30e48c22, 0x89b4b4dd, 0x30cd5115, 0x89ab1d87, + 0x30b61426, 0x89a18ac0, + 0x309ed556, 0x8997fc8a, 0x308794a6, 0x898e72e4, 0x30705217, 0x8984edcf, + 0x30590dab, 0x897b6d4c, + 0x3041c761, 0x8971f15a, 0x302a7f3a, 0x896879fb, 0x30133539, 0x895f072e, + 0x2ffbe95d, 0x895598f3, + 0x2fe49ba7, 0x894c2f4c, 0x2fcd4c19, 0x8942ca39, 0x2fb5fab2, 0x893969b9, + 0x2f9ea775, 0x89300dce, + 0x2f875262, 0x8926b677, 0x2f6ffb7a, 0x891d63b5, 0x2f58a2be, 0x89141589, + 0x2f41482e, 0x890acbf2, + 0x2f29ebcc, 0x890186f2, 0x2f128d99, 0x88f84687, 0x2efb2d95, 0x88ef0ab4, + 0x2ee3cbc1, 0x88e5d378, + 0x2ecc681e, 0x88dca0d3, 0x2eb502ae, 0x88d372c6, 0x2e9d9b70, 0x88ca4951, + 0x2e863267, 0x88c12475, + 0x2e6ec792, 0x88b80432, 0x2e575af3, 0x88aee888, 0x2e3fec8b, 0x88a5d177, + 0x2e287c5a, 0x889cbf01, + 0x2e110a62, 0x8893b125, 0x2df996a3, 0x888aa7e3, 0x2de2211e, 0x8881a33d, + 0x2dcaa9d5, 0x8878a332, + 0x2db330c7, 0x886fa7c2, 0x2d9bb5f6, 0x8866b0ef, 0x2d843964, 0x885dbeb8, + 0x2d6cbb10, 0x8854d11e, + 0x2d553afc, 0x884be821, 0x2d3db928, 0x884303c1, 0x2d263596, 0x883a23ff, + 0x2d0eb046, 0x883148db, + 0x2cf72939, 0x88287256, 0x2cdfa071, 0x881fa06f, 0x2cc815ee, 0x8816d327, + 0x2cb089b1, 0x880e0a7f, + 0x2c98fbba, 0x88054677, 0x2c816c0c, 0x87fc870f, 0x2c69daa6, 0x87f3cc48, + 0x2c52478a, 0x87eb1621, + 0x2c3ab2b9, 0x87e2649b, 0x2c231c33, 0x87d9b7b7, 0x2c0b83fa, 0x87d10f75, + 0x2bf3ea0d, 0x87c86bd5, + 0x2bdc4e6f, 0x87bfccd7, 0x2bc4b120, 0x87b7327d, 0x2bad1221, 0x87ae9cc5, + 0x2b957173, 0x87a60bb1, + 0x2b7dcf17, 0x879d7f41, 0x2b662b0e, 0x8794f774, 0x2b4e8558, 0x878c744d, + 0x2b36ddf7, 0x8783f5ca, + 0x2b1f34eb, 0x877b7bec, 0x2b078a36, 0x877306b4, 0x2aefddd8, 0x876a9621, + 0x2ad82fd2, 0x87622a35, + 0x2ac08026, 0x8759c2ef, 0x2aa8ced3, 0x87516050, 0x2a911bdc, 0x87490258, + 0x2a796740, 0x8740a907, + 0x2a61b101, 0x8738545e, 0x2a49f920, 0x8730045d, 0x2a323f9e, 0x8727b905, + 0x2a1a847b, 0x871f7255, + 0x2a02c7b8, 0x8717304e, 0x29eb0957, 0x870ef2f1, 0x29d34958, 0x8706ba3d, + 0x29bb87bc, 0x86fe8633, + 0x29a3c485, 0x86f656d3, 0x298bffb2, 0x86ee2c1e, 0x29743946, 0x86e60614, + 0x295c7140, 0x86dde4b5, + 0x2944a7a2, 0x86d5c802, 0x292cdc6d, 0x86cdaffa, 0x29150fa1, 0x86c59c9f, + 0x28fd4140, 0x86bd8df0, + 0x28e5714b, 0x86b583ee, 0x28cd9fc1, 0x86ad7e99, 0x28b5cca5, 0x86a57df2, + 0x289df7f8, 0x869d81f8, + 0x288621b9, 0x86958aac, 0x286e49ea, 0x868d980e, 0x2856708d, 0x8685aa20, + 0x283e95a1, 0x867dc0e0, + 0x2826b928, 0x8675dc4f, 0x280edb23, 0x866dfc6e, 0x27f6fb92, 0x8666213c, + 0x27df1a77, 0x865e4abb, + 0x27c737d3, 0x865678eb, 0x27af53a6, 0x864eabcb, 0x27976df1, 0x8646e35c, + 0x277f86b5, 0x863f1f9e, + 0x27679df4, 0x86376092, 0x274fb3ae, 0x862fa638, 0x2737c7e3, 0x8627f091, + 0x271fda96, 0x86203f9c, + 0x2707ebc7, 0x86189359, 0x26effb76, 0x8610ebca, 0x26d809a5, 0x860948ef, + 0x26c01655, 0x8601aac7, + 0x26a82186, 0x85fa1153, 0x26902b39, 0x85f27c93, 0x26783370, 0x85eaec88, + 0x26603a2c, 0x85e36132, + 0x26483f6c, 0x85dbda91, 0x26304333, 0x85d458a6, 0x26184581, 0x85ccdb70, + 0x26004657, 0x85c562f1, + 0x25e845b6, 0x85bdef28, 0x25d0439f, 0x85b68015, 0x25b84012, 0x85af15b9, + 0x25a03b11, 0x85a7b015, + 0x2588349d, 0x85a04f28, 0x25702cb7, 0x8598f2f3, 0x2558235f, 0x85919b76, + 0x25401896, 0x858a48b1, + 0x25280c5e, 0x8582faa5, 0x250ffeb7, 0x857bb152, 0x24f7efa2, 0x85746cb8, + 0x24dfdf20, 0x856d2cd7, + 0x24c7cd33, 0x8565f1b0, 0x24afb9da, 0x855ebb44, 0x2497a517, 0x85578991, + 0x247f8eec, 0x85505c99, + 0x24677758, 0x8549345c, 0x244f5e5c, 0x854210db, 0x243743fa, 0x853af214, + 0x241f2833, 0x8533d809, + 0x24070b08, 0x852cc2bb, 0x23eeec78, 0x8525b228, 0x23d6cc87, 0x851ea652, + 0x23beab33, 0x85179f39, + 0x23a6887f, 0x85109cdd, 0x238e646a, 0x85099f3e, 0x23763ef7, 0x8502a65c, + 0x235e1826, 0x84fbb239, + 0x2345eff8, 0x84f4c2d4, 0x232dc66d, 0x84edd82d, 0x23159b88, 0x84e6f244, + 0x22fd6f48, 0x84e0111b, + 0x22e541af, 0x84d934b1, 0x22cd12bd, 0x84d25d06, 0x22b4e274, 0x84cb8a1b, + 0x229cb0d5, 0x84c4bbf0, + 0x22847de0, 0x84bdf286, 0x226c4996, 0x84b72ddb, 0x225413f8, 0x84b06df2, + 0x223bdd08, 0x84a9b2ca, + 0x2223a4c5, 0x84a2fc62, 0x220b6b32, 0x849c4abd, 0x21f3304f, 0x84959dd9, + 0x21daf41d, 0x848ef5b7, + 0x21c2b69c, 0x84885258, 0x21aa77cf, 0x8481b3bb, 0x219237b5, 0x847b19e1, + 0x2179f64f, 0x847484ca, + 0x2161b3a0, 0x846df477, 0x21496fa7, 0x846768e7, 0x21312a65, 0x8460e21a, + 0x2118e3dc, 0x845a6012, + 0x21009c0c, 0x8453e2cf, 0x20e852f6, 0x844d6a50, 0x20d0089c, 0x8446f695, + 0x20b7bcfe, 0x844087a0, + 0x209f701c, 0x843a1d70, 0x208721f9, 0x8433b806, 0x206ed295, 0x842d5762, + 0x205681f1, 0x8426fb84, + 0x203e300d, 0x8420a46c, 0x2025dcec, 0x841a521a, 0x200d888d, 0x84140490, + 0x1ff532f2, 0x840dbbcc, + 0x1fdcdc1b, 0x840777d0, 0x1fc4840a, 0x8401389b, 0x1fac2abf, 0x83fafe2e, + 0x1f93d03c, 0x83f4c889, + 0x1f7b7481, 0x83ee97ad, 0x1f63178f, 0x83e86b99, 0x1f4ab968, 0x83e2444d, + 0x1f325a0b, 0x83dc21cb, + 0x1f19f97b, 0x83d60412, 0x1f0197b8, 0x83cfeb22, 0x1ee934c3, 0x83c9d6fc, + 0x1ed0d09d, 0x83c3c7a0, + 0x1eb86b46, 0x83bdbd0e, 0x1ea004c1, 0x83b7b746, 0x1e879d0d, 0x83b1b649, + 0x1e6f342c, 0x83abba17, + 0x1e56ca1e, 0x83a5c2b0, 0x1e3e5ee5, 0x839fd014, 0x1e25f282, 0x8399e244, + 0x1e0d84f5, 0x8393f940, + 0x1df5163f, 0x838e1507, 0x1ddca662, 0x8388359b, 0x1dc4355e, 0x83825afb, + 0x1dabc334, 0x837c8528, + 0x1d934fe5, 0x8376b422, 0x1d7adb73, 0x8370e7e9, 0x1d6265dd, 0x836b207d, + 0x1d49ef26, 0x83655ddf, + 0x1d31774d, 0x835fa00f, 0x1d18fe54, 0x8359e70d, 0x1d00843d, 0x835432d8, + 0x1ce80906, 0x834e8373, + 0x1ccf8cb3, 0x8348d8dc, 0x1cb70f43, 0x83433314, 0x1c9e90b8, 0x833d921b, + 0x1c861113, 0x8337f5f1, + 0x1c6d9053, 0x83325e97, 0x1c550e7c, 0x832ccc0d, 0x1c3c8b8c, 0x83273e52, + 0x1c240786, 0x8321b568, + 0x1c0b826a, 0x831c314e, 0x1bf2fc3a, 0x8316b205, 0x1bda74f6, 0x8311378d, + 0x1bc1ec9e, 0x830bc1e6, + 0x1ba96335, 0x83065110, 0x1b90d8bb, 0x8300e50b, 0x1b784d30, 0x82fb7dd8, + 0x1b5fc097, 0x82f61b77, + 0x1b4732ef, 0x82f0bde8, 0x1b2ea43a, 0x82eb652b, 0x1b161479, 0x82e61141, + 0x1afd83ad, 0x82e0c22a, + 0x1ae4f1d6, 0x82db77e5, 0x1acc5ef6, 0x82d63274, 0x1ab3cb0d, 0x82d0f1d5, + 0x1a9b361d, 0x82cbb60b, + 0x1a82a026, 0x82c67f14, 0x1a6a0929, 0x82c14cf1, 0x1a517128, 0x82bc1fa2, + 0x1a38d823, 0x82b6f727, + 0x1a203e1b, 0x82b1d381, 0x1a07a311, 0x82acb4b0, 0x19ef0707, 0x82a79ab3, + 0x19d669fc, 0x82a2858c, + 0x19bdcbf3, 0x829d753a, 0x19a52ceb, 0x829869be, 0x198c8ce7, 0x82936317, + 0x1973ebe6, 0x828e6146, + 0x195b49ea, 0x8289644b, 0x1942a6f3, 0x82846c26, 0x192a0304, 0x827f78d8, + 0x19115e1c, 0x827a8a61, + 0x18f8b83c, 0x8275a0c0, 0x18e01167, 0x8270bbf7, 0x18c7699b, 0x826bdc04, + 0x18aec0db, 0x826700e9, + 0x18961728, 0x82622aa6, 0x187d6c82, 0x825d593a, 0x1864c0ea, 0x82588ca7, + 0x184c1461, 0x8253c4eb, + 0x183366e9, 0x824f0208, 0x181ab881, 0x824a43fe, 0x1802092c, 0x82458acc, + 0x17e958ea, 0x8240d673, + 0x17d0a7bc, 0x823c26f3, 0x17b7f5a3, 0x82377c4c, 0x179f429f, 0x8232d67f, + 0x17868eb3, 0x822e358b, + 0x176dd9de, 0x82299971, 0x17552422, 0x82250232, 0x173c6d80, 0x82206fcc, + 0x1723b5f9, 0x821be240, + 0x170afd8d, 0x82175990, 0x16f2443e, 0x8212d5b9, 0x16d98a0c, 0x820e56be, + 0x16c0cef9, 0x8209dc9e, + 0x16a81305, 0x82056758, 0x168f5632, 0x8200f6ef, 0x1676987f, 0x81fc8b60, + 0x165dd9f0, 0x81f824ae, + 0x16451a83, 0x81f3c2d7, 0x162c5a3b, 0x81ef65dc, 0x16139918, 0x81eb0dbe, + 0x15fad71b, 0x81e6ba7c, + 0x15e21445, 0x81e26c16, 0x15c95097, 0x81de228d, 0x15b08c12, 0x81d9dde1, + 0x1597c6b7, 0x81d59e13, + 0x157f0086, 0x81d16321, 0x15663982, 0x81cd2d0c, 0x154d71aa, 0x81c8fbd6, + 0x1534a901, 0x81c4cf7d, + 0x151bdf86, 0x81c0a801, 0x1503153a, 0x81bc8564, 0x14ea4a1f, 0x81b867a5, + 0x14d17e36, 0x81b44ec4, + 0x14b8b17f, 0x81b03ac2, 0x149fe3fc, 0x81ac2b9e, 0x148715ae, 0x81a82159, + 0x146e4694, 0x81a41bf4, + 0x145576b1, 0x81a01b6d, 0x143ca605, 0x819c1fc5, 0x1423d492, 0x819828fd, + 0x140b0258, 0x81943715, + 0x13f22f58, 0x81904a0c, 0x13d95b93, 0x818c61e3, 0x13c0870a, 0x81887e9a, + 0x13a7b1bf, 0x8184a032, + 0x138edbb1, 0x8180c6a9, 0x137604e2, 0x817cf201, 0x135d2d53, 0x8179223a, + 0x13445505, 0x81755754, + 0x132b7bf9, 0x8171914e, 0x1312a230, 0x816dd02a, 0x12f9c7aa, 0x816a13e6, + 0x12e0ec6a, 0x81665c84, + 0x12c8106f, 0x8162aa04, 0x12af33ba, 0x815efc65, 0x1296564d, 0x815b53a8, + 0x127d7829, 0x8157afcd, + 0x1264994e, 0x815410d4, 0x124bb9be, 0x815076bd, 0x1232d979, 0x814ce188, + 0x1219f880, 0x81495136, + 0x120116d5, 0x8145c5c7, 0x11e83478, 0x81423f3a, 0x11cf516a, 0x813ebd90, + 0x11b66dad, 0x813b40ca, + 0x119d8941, 0x8137c8e6, 0x1184a427, 0x813455e6, 0x116bbe60, 0x8130e7c9, + 0x1152d7ed, 0x812d7e8f, + 0x1139f0cf, 0x812a1a3a, 0x11210907, 0x8126bac8, 0x11082096, 0x8123603a, + 0x10ef377d, 0x81200a90, + 0x10d64dbd, 0x811cb9ca, 0x10bd6356, 0x81196de9, 0x10a4784b, 0x811626ec, + 0x108b8c9b, 0x8112e4d4, + 0x1072a048, 0x810fa7a0, 0x1059b352, 0x810c6f52, 0x1040c5bb, 0x81093be8, + 0x1027d784, 0x81060d63, + 0x100ee8ad, 0x8102e3c4, 0xff5f938, 0x80ffbf0a, 0xfdd0926, 0x80fc9f35, + 0xfc41876, 0x80f98446, + 0xfab272b, 0x80f66e3c, 0xf923546, 0x80f35d19, 0xf7942c7, 0x80f050db, + 0xf604faf, 0x80ed4984, + 0xf475bff, 0x80ea4712, 0xf2e67b8, 0x80e74987, 0xf1572dc, 0x80e450e2, + 0xefc7d6b, 0x80e15d24, + 0xee38766, 0x80de6e4c, 0xeca90ce, 0x80db845b, 0xeb199a4, 0x80d89f51, + 0xe98a1e9, 0x80d5bf2e, + 0xe7fa99e, 0x80d2e3f2, 0xe66b0c3, 0x80d00d9d, 0xe4db75b, 0x80cd3c2f, + 0xe34bd66, 0x80ca6fa9, + 0xe1bc2e4, 0x80c7a80a, 0xe02c7d7, 0x80c4e553, 0xde9cc40, 0x80c22784, + 0xdd0d01f, 0x80bf6e9c, + 0xdb7d376, 0x80bcba9d, 0xd9ed646, 0x80ba0b85, 0xd85d88f, 0x80b76156, + 0xd6cda53, 0x80b4bc0e, + 0xd53db92, 0x80b21baf, 0xd3adc4e, 0x80af8039, 0xd21dc87, 0x80ace9ab, + 0xd08dc3f, 0x80aa5806, + 0xcefdb76, 0x80a7cb49, 0xcd6da2d, 0x80a54376, 0xcbdd865, 0x80a2c08b, + 0xca4d620, 0x80a04289, + 0xc8bd35e, 0x809dc971, 0xc72d020, 0x809b5541, 0xc59cc68, 0x8098e5fb, + 0xc40c835, 0x80967b9f, + 0xc27c389, 0x8094162c, 0xc0ebe66, 0x8091b5a2, 0xbf5b8cb, 0x808f5a02, + 0xbdcb2bb, 0x808d034c, + 0xbc3ac35, 0x808ab180, 0xbaaa53b, 0x8088649e, 0xb919dcf, 0x80861ca6, + 0xb7895f0, 0x8083d998, + 0xb5f8d9f, 0x80819b74, 0xb4684df, 0x807f623b, 0xb2d7baf, 0x807d2dec, + 0xb147211, 0x807afe87, + 0xafb6805, 0x8078d40d, 0xae25d8d, 0x8076ae7e, 0xac952aa, 0x80748dd9, + 0xab0475c, 0x8072721f, + 0xa973ba5, 0x80705b50, 0xa7e2f85, 0x806e496c, 0xa6522fe, 0x806c3c74, + 0xa4c1610, 0x806a3466, + 0xa3308bd, 0x80683143, 0xa19fb04, 0x8066330c, 0xa00ece8, 0x806439c0, + 0x9e7de6a, 0x80624560, + 0x9cecf89, 0x806055eb, 0x9b5c048, 0x805e6b62, 0x99cb0a7, 0x805c85c4, + 0x983a0a7, 0x805aa512, + 0x96a9049, 0x8058c94c, 0x9517f8f, 0x8056f272, 0x9386e78, 0x80552084, + 0x91f5d06, 0x80535381, + 0x9064b3a, 0x80518b6b, 0x8ed3916, 0x804fc841, 0x8d42699, 0x804e0a04, + 0x8bb13c5, 0x804c50b2, + 0x8a2009a, 0x804a9c4d, 0x888ed1b, 0x8048ecd5, 0x86fd947, 0x80474248, + 0x856c520, 0x80459ca9, + 0x83db0a7, 0x8043fbf6, 0x8249bdd, 0x80426030, 0x80b86c2, 0x8040c956, + 0x7f27157, 0x803f376a, + 0x7d95b9e, 0x803daa6a, 0x7c04598, 0x803c2257, 0x7a72f45, 0x803a9f31, + 0x78e18a7, 0x803920f8, + 0x77501be, 0x8037a7ac, 0x75bea8c, 0x8036334e, 0x742d311, 0x8034c3dd, + 0x729bb4e, 0x80335959, + 0x710a345, 0x8031f3c2, 0x6f78af6, 0x80309318, 0x6de7262, 0x802f375d, + 0x6c5598a, 0x802de08e, + 0x6ac406f, 0x802c8ead, 0x6932713, 0x802b41ba, 0x67a0d76, 0x8029f9b4, + 0x660f398, 0x8028b69c, + 0x647d97c, 0x80277872, 0x62ebf22, 0x80263f36, 0x615a48b, 0x80250ae7, + 0x5fc89b8, 0x8023db86, + 0x5e36ea9, 0x8022b114, 0x5ca5361, 0x80218b8f, 0x5b137df, 0x80206af8, + 0x5981c26, 0x801f4f4f, + 0x57f0035, 0x801e3895, 0x565e40d, 0x801d26c8, 0x54cc7b1, 0x801c19ea, + 0x533ab20, 0x801b11fa, + 0x51a8e5c, 0x801a0ef8, 0x5017165, 0x801910e4, 0x4e8543e, 0x801817bf, + 0x4cf36e5, 0x80172388, + 0x4b6195d, 0x80163440, 0x49cfba7, 0x801549e6, 0x483ddc3, 0x8014647b, + 0x46abfb3, 0x801383fe, + 0x451a177, 0x8012a86f, 0x4388310, 0x8011d1d0, 0x41f6480, 0x8011001f, + 0x40645c7, 0x8010335c, + 0x3ed26e6, 0x800f6b88, 0x3d407df, 0x800ea8a3, 0x3bae8b2, 0x800deaad, + 0x3a1c960, 0x800d31a5, + 0x388a9ea, 0x800c7d8c, 0x36f8a51, 0x800bce63, 0x3566a96, 0x800b2427, + 0x33d4abb, 0x800a7edb, + 0x3242abf, 0x8009de7e, 0x30b0aa4, 0x80094310, 0x2f1ea6c, 0x8008ac90, + 0x2d8ca16, 0x80081b00, + 0x2bfa9a4, 0x80078e5e, 0x2a68917, 0x800706ac, 0x28d6870, 0x800683e8, + 0x27447b0, 0x80060614, + 0x25b26d7, 0x80058d2f, 0x24205e8, 0x80051939, 0x228e4e2, 0x8004aa32, + 0x20fc3c6, 0x8004401a, + 0x1f6a297, 0x8003daf1, 0x1dd8154, 0x80037ab7, 0x1c45ffe, 0x80031f6d, + 0x1ab3e97, 0x8002c912, + 0x1921d20, 0x800277a6, 0x178fb99, 0x80022b29, 0x15fda03, 0x8001e39b, + 0x146b860, 0x8001a0fd, + 0x12d96b1, 0x8001634e, 0x11474f6, 0x80012a8e, 0xfb5330, 0x8000f6bd, + 0xe23160, 0x8000c7dc, + 0xc90f88, 0x80009dea, 0xafeda8, 0x800078e7, 0x96cbc1, 0x800058d4, 0x7da9d4, + 0x80003daf, + 0x6487e3, 0x8000277a, 0x4b65ee, 0x80001635, 0x3243f5, 0x800009df, 0x1921fb, + 0x80000278, +}; + +/** +* \par +* cosFactor tables are generated using the formula :
cos_factors[n] = 2 * cos((2n+1)*pi/(4*N))
+* \par +* C command to generate the table +*
   
+* for(i = 0; i< N; i++)   
+* {   
+*   cos_factors[i]= 2 * cos((2*i+1)*c/2);   
+* } 
+* \par +* where N is the number of factors to generate and c is pi/(2*N) +* \par +* Then converted to q31 format by multiplying with 2^31 and saturated if required. +*/ + + +static const q31_t cos_factorsQ31_128[128] = { + 0x7fff6216, 0x7ffa72d1, 0x7ff09478, 0x7fe1c76b, 0x7fce0c3e, 0x7fb563b3, + 0x7f97cebd, 0x7f754e80, + 0x7f4de451, 0x7f2191b4, 0x7ef05860, 0x7eba3a39, 0x7e7f3957, 0x7e3f57ff, + 0x7dfa98a8, 0x7db0fdf8, + 0x7d628ac6, 0x7d0f4218, 0x7cb72724, 0x7c5a3d50, 0x7bf88830, 0x7b920b89, + 0x7b26cb4f, 0x7ab6cba4, + 0x7a4210d8, 0x79c89f6e, 0x794a7c12, 0x78c7aba2, 0x78403329, 0x77b417df, + 0x77235f2d, 0x768e0ea6, + 0x75f42c0b, 0x7555bd4c, 0x74b2c884, 0x740b53fb, 0x735f6626, 0x72af05a7, + 0x71fa3949, 0x71410805, + 0x708378ff, 0x6fc19385, 0x6efb5f12, 0x6e30e34a, 0x6d6227fa, 0x6c8f351c, + 0x6bb812d1, 0x6adcc964, + 0x69fd614a, 0x6919e320, 0x683257ab, 0x6746c7d8, 0x66573cbb, 0x6563bf92, + 0x646c59bf, 0x637114cc, + 0x6271fa69, 0x616f146c, 0x60686ccf, 0x5f5e0db3, 0x5e50015d, 0x5d3e5237, + 0x5c290acc, 0x5b1035cf, + 0x59f3de12, 0x58d40e8c, 0x57b0d256, 0x568a34a9, 0x556040e2, 0x5433027d, + 0x53028518, 0x51ced46e, + 0x5097fc5e, 0x4f5e08e3, 0x4e210617, 0x4ce10034, 0x4b9e0390, 0x4a581c9e, + 0x490f57ee, 0x47c3c22f, + 0x46756828, 0x452456bd, 0x43d09aed, 0x427a41d0, 0x4121589b, 0x3fc5ec98, + 0x3e680b2c, 0x3d07c1d6, + 0x3ba51e29, 0x3a402dd2, 0x38d8fe93, 0x376f9e46, 0x36041ad9, 0x34968250, + 0x3326e2c3, 0x31b54a5e, + 0x3041c761, 0x2ecc681e, 0x2d553afc, 0x2bdc4e6f, 0x2a61b101, 0x28e5714b, + 0x27679df4, 0x25e845b6, + 0x24677758, 0x22e541af, 0x2161b3a0, 0x1fdcdc1b, 0x1e56ca1e, 0x1ccf8cb3, + 0x1b4732ef, 0x19bdcbf3, + 0x183366e9, 0x16a81305, 0x151bdf86, 0x138edbb1, 0x120116d5, 0x1072a048, + 0xee38766, 0xd53db92, + 0xbc3ac35, 0xa3308bd, 0x8a2009a, 0x710a345, 0x57f0035, 0x3ed26e6, 0x25b26d7, + 0xc90f88, +}; + +static const q31_t cos_factorsQ31_512[512] = { + 0x7ffff621, 0x7fffa72c, 0x7fff0943, 0x7ffe1c65, 0x7ffce093, 0x7ffb55ce, + 0x7ff97c18, 0x7ff75370, + 0x7ff4dbd9, 0x7ff21553, 0x7feeffe1, 0x7feb9b85, 0x7fe7e841, 0x7fe3e616, + 0x7fdf9508, 0x7fdaf519, + 0x7fd6064c, 0x7fd0c8a3, 0x7fcb3c23, 0x7fc560cf, 0x7fbf36aa, 0x7fb8bdb8, + 0x7fb1f5fc, 0x7faadf7c, + 0x7fa37a3c, 0x7f9bc640, 0x7f93c38c, 0x7f8b7227, 0x7f82d214, 0x7f79e35a, + 0x7f70a5fe, 0x7f671a05, + 0x7f5d3f75, 0x7f531655, 0x7f489eaa, 0x7f3dd87c, 0x7f32c3d1, 0x7f2760af, + 0x7f1baf1e, 0x7f0faf25, + 0x7f0360cb, 0x7ef6c418, 0x7ee9d914, 0x7edc9fc6, 0x7ecf1837, 0x7ec14270, + 0x7eb31e78, 0x7ea4ac58, + 0x7e95ec1a, 0x7e86ddc6, 0x7e778166, 0x7e67d703, 0x7e57dea7, 0x7e47985b, + 0x7e37042a, 0x7e26221f, + 0x7e14f242, 0x7e0374a0, 0x7df1a942, 0x7ddf9034, 0x7dcd2981, 0x7dba7534, + 0x7da77359, 0x7d9423fc, + 0x7d808728, 0x7d6c9ce9, 0x7d58654d, 0x7d43e05e, 0x7d2f0e2b, 0x7d19eebf, + 0x7d048228, 0x7ceec873, + 0x7cd8c1ae, 0x7cc26de5, 0x7cabcd28, 0x7c94df83, 0x7c7da505, 0x7c661dbc, + 0x7c4e49b7, 0x7c362904, + 0x7c1dbbb3, 0x7c0501d2, 0x7bebfb70, 0x7bd2a89e, 0x7bb9096b, 0x7b9f1de6, + 0x7b84e61f, 0x7b6a6227, + 0x7b4f920e, 0x7b3475e5, 0x7b190dbc, 0x7afd59a4, 0x7ae159ae, 0x7ac50dec, + 0x7aa8766f, 0x7a8b9348, + 0x7a6e648a, 0x7a50ea47, 0x7a332490, 0x7a151378, 0x79f6b711, 0x79d80f6f, + 0x79b91ca4, 0x7999dec4, + 0x797a55e0, 0x795a820e, 0x793a6361, 0x7919f9ec, 0x78f945c3, 0x78d846fb, + 0x78b6fda8, 0x789569df, + 0x78738bb3, 0x7851633b, 0x782ef08b, 0x780c33b8, 0x77e92cd9, 0x77c5dc01, + 0x77a24148, 0x777e5cc3, + 0x775a2e89, 0x7735b6af, 0x7710f54c, 0x76ebea77, 0x76c69647, 0x76a0f8d2, + 0x767b1231, 0x7654e279, + 0x762e69c4, 0x7607a828, 0x75e09dbd, 0x75b94a9c, 0x7591aedd, 0x7569ca99, + 0x75419de7, 0x751928e0, + 0x74f06b9e, 0x74c7663a, 0x749e18cd, 0x74748371, 0x744aa63f, 0x74208150, + 0x73f614c0, 0x73cb60a8, + 0x73a06522, 0x73752249, 0x73499838, 0x731dc70a, 0x72f1aed9, 0x72c54fc1, + 0x7298a9dd, 0x726bbd48, + 0x723e8a20, 0x7211107e, 0x71e35080, 0x71b54a41, 0x7186fdde, 0x71586b74, + 0x7129931f, 0x70fa74fc, + 0x70cb1128, 0x709b67c0, 0x706b78e3, 0x703b44ad, 0x700acb3c, 0x6fda0cae, + 0x6fa90921, 0x6f77c0b3, + 0x6f463383, 0x6f1461b0, 0x6ee24b57, 0x6eaff099, 0x6e7d5193, 0x6e4a6e66, + 0x6e174730, 0x6de3dc11, + 0x6db02d29, 0x6d7c3a98, 0x6d48047e, 0x6d138afb, 0x6cdece2f, 0x6ca9ce3b, + 0x6c748b3f, 0x6c3f055d, + 0x6c093cb6, 0x6bd3316a, 0x6b9ce39b, 0x6b66536b, 0x6b2f80fb, 0x6af86c6c, + 0x6ac115e2, 0x6a897d7d, + 0x6a51a361, 0x6a1987b0, 0x69e12a8c, 0x69a88c19, 0x696fac78, 0x69368bce, + 0x68fd2a3d, 0x68c387e9, + 0x6889a4f6, 0x684f8186, 0x68151dbe, 0x67da79c3, 0x679f95b7, 0x676471c0, + 0x67290e02, 0x66ed6aa1, + 0x66b187c3, 0x6675658c, 0x66390422, 0x65fc63a9, 0x65bf8447, 0x65826622, + 0x6545095f, 0x65076e25, + 0x64c99498, 0x648b7ce0, 0x644d2722, 0x640e9386, 0x63cfc231, 0x6390b34a, + 0x635166f9, 0x6311dd64, + 0x62d216b3, 0x6292130c, 0x6251d298, 0x6211557e, 0x61d09be5, 0x618fa5f7, + 0x614e73da, 0x610d05b7, + 0x60cb5bb7, 0x60897601, 0x604754bf, 0x6004f819, 0x5fc26038, 0x5f7f8d46, + 0x5f3c7f6b, 0x5ef936d1, + 0x5eb5b3a2, 0x5e71f606, 0x5e2dfe29, 0x5de9cc33, 0x5da5604f, 0x5d60baa7, + 0x5d1bdb65, 0x5cd6c2b5, + 0x5c9170bf, 0x5c4be5b0, 0x5c0621b2, 0x5bc024f0, 0x5b79ef96, 0x5b3381ce, + 0x5aecdbc5, 0x5aa5fda5, + 0x5a5ee79a, 0x5a1799d1, 0x59d01475, 0x598857b2, 0x594063b5, 0x58f838a9, + 0x58afd6bd, 0x58673e1b, + 0x581e6ef1, 0x57d5696d, 0x578c2dba, 0x5742bc06, 0x56f9147e, 0x56af3750, + 0x566524aa, 0x561adcb9, + 0x55d05faa, 0x5585adad, 0x553ac6ee, 0x54efab9c, 0x54a45be6, 0x5458d7f9, + 0x540d2005, 0x53c13439, + 0x537514c2, 0x5328c1d0, 0x52dc3b92, 0x528f8238, 0x524295f0, 0x51f576ea, + 0x51a82555, 0x515aa162, + 0x510ceb40, 0x50bf031f, 0x5070e92f, 0x50229da1, 0x4fd420a4, 0x4f857269, + 0x4f369320, 0x4ee782fb, + 0x4e984229, 0x4e48d0dd, 0x4df92f46, 0x4da95d96, 0x4d595bfe, 0x4d092ab0, + 0x4cb8c9dd, 0x4c6839b7, + 0x4c177a6e, 0x4bc68c36, 0x4b756f40, 0x4b2423be, 0x4ad2a9e2, 0x4a8101de, + 0x4a2f2be6, 0x49dd282a, + 0x498af6df, 0x49389836, 0x48e60c62, 0x48935397, 0x48406e08, 0x47ed5be6, + 0x479a1d67, 0x4746b2bc, + 0x46f31c1a, 0x469f59b4, 0x464b6bbe, 0x45f7526b, 0x45a30df0, 0x454e9e80, + 0x44fa0450, 0x44a53f93, + 0x4450507e, 0x43fb3746, 0x43a5f41e, 0x4350873c, 0x42faf0d4, 0x42a5311b, + 0x424f4845, 0x41f93689, + 0x41a2fc1a, 0x414c992f, 0x40f60dfb, 0x409f5ab6, 0x40487f94, 0x3ff17cca, + 0x3f9a5290, 0x3f430119, + 0x3eeb889c, 0x3e93e950, 0x3e3c2369, 0x3de4371f, 0x3d8c24a8, 0x3d33ec39, + 0x3cdb8e09, 0x3c830a50, + 0x3c2a6142, 0x3bd19318, 0x3b78a007, 0x3b1f8848, 0x3ac64c0f, 0x3a6ceb96, + 0x3a136712, 0x39b9bebc, + 0x395ff2c9, 0x39060373, 0x38abf0ef, 0x3851bb77, 0x37f76341, 0x379ce885, + 0x37424b7b, 0x36e78c5b, + 0x368cab5c, 0x3631a8b8, 0x35d684a6, 0x357b3f5d, 0x351fd918, 0x34c4520d, + 0x3468aa76, 0x340ce28b, + 0x33b0fa84, 0x3354f29b, 0x32f8cb07, 0x329c8402, 0x32401dc6, 0x31e39889, + 0x3186f487, 0x312a31f8, + 0x30cd5115, 0x30705217, 0x30133539, 0x2fb5fab2, 0x2f58a2be, 0x2efb2d95, + 0x2e9d9b70, 0x2e3fec8b, + 0x2de2211e, 0x2d843964, 0x2d263596, 0x2cc815ee, 0x2c69daa6, 0x2c0b83fa, + 0x2bad1221, 0x2b4e8558, + 0x2aefddd8, 0x2a911bdc, 0x2a323f9e, 0x29d34958, 0x29743946, 0x29150fa1, + 0x28b5cca5, 0x2856708d, + 0x27f6fb92, 0x27976df1, 0x2737c7e3, 0x26d809a5, 0x26783370, 0x26184581, + 0x25b84012, 0x2558235f, + 0x24f7efa2, 0x2497a517, 0x243743fa, 0x23d6cc87, 0x23763ef7, 0x23159b88, + 0x22b4e274, 0x225413f8, + 0x21f3304f, 0x219237b5, 0x21312a65, 0x20d0089c, 0x206ed295, 0x200d888d, + 0x1fac2abf, 0x1f4ab968, + 0x1ee934c3, 0x1e879d0d, 0x1e25f282, 0x1dc4355e, 0x1d6265dd, 0x1d00843d, + 0x1c9e90b8, 0x1c3c8b8c, + 0x1bda74f6, 0x1b784d30, 0x1b161479, 0x1ab3cb0d, 0x1a517128, 0x19ef0707, + 0x198c8ce7, 0x192a0304, + 0x18c7699b, 0x1864c0ea, 0x1802092c, 0x179f429f, 0x173c6d80, 0x16d98a0c, + 0x1676987f, 0x16139918, + 0x15b08c12, 0x154d71aa, 0x14ea4a1f, 0x148715ae, 0x1423d492, 0x13c0870a, + 0x135d2d53, 0x12f9c7aa, + 0x1296564d, 0x1232d979, 0x11cf516a, 0x116bbe60, 0x11082096, 0x10a4784b, + 0x1040c5bb, 0xfdd0926, + 0xf7942c7, 0xf1572dc, 0xeb199a4, 0xe4db75b, 0xde9cc40, 0xd85d88f, 0xd21dc87, + 0xcbdd865, + 0xc59cc68, 0xbf5b8cb, 0xb919dcf, 0xb2d7baf, 0xac952aa, 0xa6522fe, 0xa00ece8, + 0x99cb0a7, + 0x9386e78, 0x8d42699, 0x86fd947, 0x80b86c2, 0x7a72f45, 0x742d311, 0x6de7262, + 0x67a0d76, + 0x615a48b, 0x5b137df, 0x54cc7b1, 0x4e8543e, 0x483ddc3, 0x41f6480, 0x3bae8b2, + 0x3566a96, + 0x2f1ea6c, 0x28d6870, 0x228e4e2, 0x1c45ffe, 0x15fda03, 0xfb5330, 0x96cbc1, + 0x3243f5, +}; + +static const q31_t cos_factorsQ31_2048[2048] = { + 0x7fffff62, 0x7ffffa73, 0x7ffff094, 0x7fffe1c6, 0x7fffce09, 0x7fffb55c, + 0x7fff97c1, 0x7fff7536, + 0x7fff4dbb, 0x7fff2151, 0x7ffeeff8, 0x7ffeb9b0, 0x7ffe7e79, 0x7ffe3e52, + 0x7ffdf93c, 0x7ffdaf37, + 0x7ffd6042, 0x7ffd0c5f, 0x7ffcb38c, 0x7ffc55ca, 0x7ffbf319, 0x7ffb8b78, + 0x7ffb1ee9, 0x7ffaad6a, + 0x7ffa36fc, 0x7ff9bba0, 0x7ff93b54, 0x7ff8b619, 0x7ff82bef, 0x7ff79cd6, + 0x7ff708ce, 0x7ff66fd7, + 0x7ff5d1f1, 0x7ff52f1d, 0x7ff48759, 0x7ff3daa6, 0x7ff32905, 0x7ff27275, + 0x7ff1b6f6, 0x7ff0f688, + 0x7ff0312c, 0x7fef66e1, 0x7fee97a7, 0x7fedc37e, 0x7fecea67, 0x7fec0c62, + 0x7feb296d, 0x7fea418b, + 0x7fe954ba, 0x7fe862fa, 0x7fe76c4c, 0x7fe670b0, 0x7fe57025, 0x7fe46aac, + 0x7fe36045, 0x7fe250ef, + 0x7fe13cac, 0x7fe0237a, 0x7fdf055a, 0x7fdde24d, 0x7fdcba51, 0x7fdb8d67, + 0x7fda5b8f, 0x7fd924ca, + 0x7fd7e917, 0x7fd6a875, 0x7fd562e7, 0x7fd4186a, 0x7fd2c900, 0x7fd174a8, + 0x7fd01b63, 0x7fcebd31, + 0x7fcd5a11, 0x7fcbf203, 0x7fca8508, 0x7fc91320, 0x7fc79c4b, 0x7fc62089, + 0x7fc49fda, 0x7fc31a3d, + 0x7fc18fb4, 0x7fc0003e, 0x7fbe6bdb, 0x7fbcd28b, 0x7fbb344e, 0x7fb99125, + 0x7fb7e90f, 0x7fb63c0d, + 0x7fb48a1e, 0x7fb2d343, 0x7fb1177b, 0x7faf56c7, 0x7fad9127, 0x7fabc69b, + 0x7fa9f723, 0x7fa822bf, + 0x7fa6496e, 0x7fa46b32, 0x7fa2880b, 0x7fa09ff7, 0x7f9eb2f8, 0x7f9cc10d, + 0x7f9aca37, 0x7f98ce76, + 0x7f96cdc9, 0x7f94c831, 0x7f92bdad, 0x7f90ae3f, 0x7f8e99e6, 0x7f8c80a1, + 0x7f8a6272, 0x7f883f58, + 0x7f861753, 0x7f83ea64, 0x7f81b88a, 0x7f7f81c6, 0x7f7d4617, 0x7f7b057e, + 0x7f78bffb, 0x7f76758e, + 0x7f742637, 0x7f71d1f6, 0x7f6f78cb, 0x7f6d1ab6, 0x7f6ab7b8, 0x7f684fd0, + 0x7f65e2ff, 0x7f637144, + 0x7f60faa0, 0x7f5e7f13, 0x7f5bfe9d, 0x7f59793e, 0x7f56eef5, 0x7f545fc5, + 0x7f51cbab, 0x7f4f32a9, + 0x7f4c94be, 0x7f49f1eb, 0x7f474a30, 0x7f449d8c, 0x7f41ec01, 0x7f3f358d, + 0x7f3c7a31, 0x7f39b9ee, + 0x7f36f4c3, 0x7f342ab1, 0x7f315bb7, 0x7f2e87d6, 0x7f2baf0d, 0x7f28d15d, + 0x7f25eec7, 0x7f230749, + 0x7f201ae5, 0x7f1d299a, 0x7f1a3368, 0x7f173850, 0x7f143852, 0x7f11336d, + 0x7f0e29a3, 0x7f0b1af2, + 0x7f08075c, 0x7f04eedf, 0x7f01d17d, 0x7efeaf36, 0x7efb8809, 0x7ef85bf7, + 0x7ef52b00, 0x7ef1f524, + 0x7eeeba62, 0x7eeb7abc, 0x7ee83632, 0x7ee4ecc3, 0x7ee19e6f, 0x7ede4b38, + 0x7edaf31c, 0x7ed7961c, + 0x7ed43438, 0x7ed0cd70, 0x7ecd61c5, 0x7ec9f137, 0x7ec67bc5, 0x7ec3016f, + 0x7ebf8237, 0x7ebbfe1c, + 0x7eb8751e, 0x7eb4e73d, 0x7eb1547a, 0x7eadbcd4, 0x7eaa204c, 0x7ea67ee2, + 0x7ea2d896, 0x7e9f2d68, + 0x7e9b7d58, 0x7e97c867, 0x7e940e94, 0x7e904fe0, 0x7e8c8c4b, 0x7e88c3d5, + 0x7e84f67e, 0x7e812447, + 0x7e7d4d2f, 0x7e797136, 0x7e75905d, 0x7e71aaa4, 0x7e6dc00c, 0x7e69d093, + 0x7e65dc3b, 0x7e61e303, + 0x7e5de4ec, 0x7e59e1f5, 0x7e55da20, 0x7e51cd6c, 0x7e4dbbd9, 0x7e49a567, + 0x7e458a17, 0x7e4169e9, + 0x7e3d44dd, 0x7e391af3, 0x7e34ec2b, 0x7e30b885, 0x7e2c8002, 0x7e2842a2, + 0x7e240064, 0x7e1fb94a, + 0x7e1b6d53, 0x7e171c7f, 0x7e12c6ce, 0x7e0e6c42, 0x7e0a0cd9, 0x7e05a894, + 0x7e013f74, 0x7dfcd178, + 0x7df85ea0, 0x7df3e6ee, 0x7def6a60, 0x7deae8f7, 0x7de662b3, 0x7de1d795, + 0x7ddd479d, 0x7dd8b2ca, + 0x7dd4191d, 0x7dcf7a96, 0x7dcad736, 0x7dc62efc, 0x7dc181e8, 0x7dbccffc, + 0x7db81936, 0x7db35d98, + 0x7dae9d21, 0x7da9d7d2, 0x7da50dab, 0x7da03eab, 0x7d9b6ad3, 0x7d969224, + 0x7d91b49e, 0x7d8cd240, + 0x7d87eb0a, 0x7d82fefe, 0x7d7e0e1c, 0x7d791862, 0x7d741dd2, 0x7d6f1e6c, + 0x7d6a1a31, 0x7d65111f, + 0x7d600338, 0x7d5af07b, 0x7d55d8e9, 0x7d50bc82, 0x7d4b9b46, 0x7d467536, + 0x7d414a51, 0x7d3c1a98, + 0x7d36e60b, 0x7d31acaa, 0x7d2c6e76, 0x7d272b6e, 0x7d21e393, 0x7d1c96e5, + 0x7d174564, 0x7d11ef11, + 0x7d0c93eb, 0x7d0733f3, 0x7d01cf29, 0x7cfc658d, 0x7cf6f720, 0x7cf183e1, + 0x7cec0bd1, 0x7ce68ef0, + 0x7ce10d3f, 0x7cdb86bd, 0x7cd5fb6a, 0x7cd06b48, 0x7ccad656, 0x7cc53c94, + 0x7cbf9e03, 0x7cb9faa2, + 0x7cb45272, 0x7caea574, 0x7ca8f3a7, 0x7ca33d0c, 0x7c9d81a3, 0x7c97c16b, + 0x7c91fc66, 0x7c8c3294, + 0x7c8663f4, 0x7c809088, 0x7c7ab84e, 0x7c74db48, 0x7c6ef976, 0x7c6912d7, + 0x7c63276d, 0x7c5d3737, + 0x7c574236, 0x7c514869, 0x7c4b49d2, 0x7c45466f, 0x7c3f3e42, 0x7c39314b, + 0x7c331f8a, 0x7c2d08ff, + 0x7c26edab, 0x7c20cd8d, 0x7c1aa8a6, 0x7c147ef6, 0x7c0e507e, 0x7c081d3d, + 0x7c01e534, 0x7bfba863, + 0x7bf566cb, 0x7bef206b, 0x7be8d544, 0x7be28556, 0x7bdc30a1, 0x7bd5d726, + 0x7bcf78e5, 0x7bc915dd, + 0x7bc2ae10, 0x7bbc417e, 0x7bb5d026, 0x7baf5a09, 0x7ba8df28, 0x7ba25f82, + 0x7b9bdb18, 0x7b9551ea, + 0x7b8ec3f8, 0x7b883143, 0x7b8199ca, 0x7b7afd8f, 0x7b745c91, 0x7b6db6d0, + 0x7b670c4d, 0x7b605d09, + 0x7b59a902, 0x7b52f03a, 0x7b4c32b1, 0x7b457068, 0x7b3ea95d, 0x7b37dd92, + 0x7b310d07, 0x7b2a37bc, + 0x7b235db2, 0x7b1c7ee8, 0x7b159b5f, 0x7b0eb318, 0x7b07c612, 0x7b00d44d, + 0x7af9ddcb, 0x7af2e28b, + 0x7aebe28d, 0x7ae4ddd2, 0x7addd45b, 0x7ad6c626, 0x7acfb336, 0x7ac89b89, + 0x7ac17f20, 0x7aba5dfc, + 0x7ab3381d, 0x7aac0d82, 0x7aa4de2d, 0x7a9daa1d, 0x7a967153, 0x7a8f33d0, + 0x7a87f192, 0x7a80aa9c, + 0x7a795eec, 0x7a720e84, 0x7a6ab963, 0x7a635f8a, 0x7a5c00f9, 0x7a549db0, + 0x7a4d35b0, 0x7a45c8f9, + 0x7a3e578b, 0x7a36e166, 0x7a2f668c, 0x7a27e6fb, 0x7a2062b5, 0x7a18d9b9, + 0x7a114c09, 0x7a09b9a4, + 0x7a02228a, 0x79fa86bc, 0x79f2e63a, 0x79eb4105, 0x79e3971c, 0x79dbe880, + 0x79d43532, 0x79cc7d31, + 0x79c4c07e, 0x79bcff19, 0x79b53903, 0x79ad6e3c, 0x79a59ec3, 0x799dca9a, + 0x7995f1c1, 0x798e1438, + 0x798631ff, 0x797e4b16, 0x79765f7f, 0x796e6f39, 0x79667a44, 0x795e80a1, + 0x79568250, 0x794e7f52, + 0x794677a6, 0x793e6b4e, 0x79365a49, 0x792e4497, 0x79262a3a, 0x791e0b31, + 0x7915e77c, 0x790dbf1d, + 0x79059212, 0x78fd605d, 0x78f529fe, 0x78eceef6, 0x78e4af44, 0x78dc6ae8, + 0x78d421e4, 0x78cbd437, + 0x78c381e2, 0x78bb2ae5, 0x78b2cf41, 0x78aa6ef5, 0x78a20a03, 0x7899a06a, + 0x7891322a, 0x7888bf45, + 0x788047ba, 0x7877cb89, 0x786f4ab4, 0x7866c53a, 0x785e3b1c, 0x7855ac5a, + 0x784d18f4, 0x784480ea, + 0x783be43e, 0x783342ef, 0x782a9cfe, 0x7821f26b, 0x78194336, 0x78108f60, + 0x7807d6e9, 0x77ff19d1, + 0x77f65819, 0x77ed91c0, 0x77e4c6c9, 0x77dbf732, 0x77d322fc, 0x77ca4a27, + 0x77c16cb4, 0x77b88aa3, + 0x77afa3f5, 0x77a6b8a9, 0x779dc8c0, 0x7794d43b, 0x778bdb19, 0x7782dd5c, + 0x7779db03, 0x7770d40f, + 0x7767c880, 0x775eb857, 0x7755a394, 0x774c8a36, 0x77436c40, 0x773a49b0, + 0x77312287, 0x7727f6c6, + 0x771ec66e, 0x7715917d, 0x770c57f5, 0x770319d6, 0x76f9d721, 0x76f08fd5, + 0x76e743f4, 0x76ddf37c, + 0x76d49e70, 0x76cb44cf, 0x76c1e699, 0x76b883d0, 0x76af1c72, 0x76a5b082, + 0x769c3ffe, 0x7692cae8, + 0x7689513f, 0x767fd304, 0x76765038, 0x766cc8db, 0x76633ced, 0x7659ac6f, + 0x76501760, 0x76467dc2, + 0x763cdf94, 0x76333cd8, 0x7629958c, 0x761fe9b3, 0x7616394c, 0x760c8457, + 0x7602cad5, 0x75f90cc7, + 0x75ef4a2c, 0x75e58305, 0x75dbb753, 0x75d1e715, 0x75c8124d, 0x75be38fa, + 0x75b45b1d, 0x75aa78b6, + 0x75a091c6, 0x7596a64d, 0x758cb64c, 0x7582c1c2, 0x7578c8b0, 0x756ecb18, + 0x7564c8f8, 0x755ac251, + 0x7550b725, 0x7546a772, 0x753c933a, 0x75327a7d, 0x75285d3b, 0x751e3b75, + 0x7514152b, 0x7509ea5d, + 0x74ffbb0d, 0x74f58739, 0x74eb4ee3, 0x74e1120c, 0x74d6d0b2, 0x74cc8ad8, + 0x74c2407d, 0x74b7f1a1, + 0x74ad9e46, 0x74a3466b, 0x7498ea11, 0x748e8938, 0x748423e0, 0x7479ba0b, + 0x746f4bb8, 0x7464d8e8, + 0x745a619b, 0x744fe5d2, 0x7445658d, 0x743ae0cc, 0x74305790, 0x7425c9da, + 0x741b37a9, 0x7410a0fe, + 0x740605d9, 0x73fb663c, 0x73f0c226, 0x73e61997, 0x73db6c91, 0x73d0bb13, + 0x73c6051f, 0x73bb4ab3, + 0x73b08bd1, 0x73a5c87a, 0x739b00ad, 0x7390346b, 0x738563b5, 0x737a8e8a, + 0x736fb4ec, 0x7364d6da, + 0x7359f456, 0x734f0d5f, 0x734421f6, 0x7339321b, 0x732e3dcf, 0x73234512, + 0x731847e5, 0x730d4648, + 0x7302403c, 0x72f735c0, 0x72ec26d6, 0x72e1137d, 0x72d5fbb7, 0x72cadf83, + 0x72bfbee3, 0x72b499d6, + 0x72a9705c, 0x729e4277, 0x72931027, 0x7287d96c, 0x727c9e47, 0x72715eb8, + 0x72661abf, 0x725ad25d, + 0x724f8593, 0x72443460, 0x7238dec5, 0x722d84c4, 0x7222265b, 0x7216c38c, + 0x720b5c57, 0x71fff0bc, + 0x71f480bc, 0x71e90c57, 0x71dd938f, 0x71d21662, 0x71c694d2, 0x71bb0edf, + 0x71af848a, 0x71a3f5d2, + 0x719862b9, 0x718ccb3f, 0x71812f65, 0x71758f29, 0x7169ea8f, 0x715e4194, + 0x7152943b, 0x7146e284, + 0x713b2c6e, 0x712f71fb, 0x7123b32b, 0x7117effe, 0x710c2875, 0x71005c90, + 0x70f48c50, 0x70e8b7b5, + 0x70dcdec0, 0x70d10171, 0x70c51fc8, 0x70b939c7, 0x70ad4f6d, 0x70a160ba, + 0x70956db1, 0x70897650, + 0x707d7a98, 0x70717a8a, 0x70657626, 0x70596d6d, 0x704d6060, 0x70414efd, + 0x70353947, 0x70291f3e, + 0x701d00e1, 0x7010de32, 0x7004b731, 0x6ff88bde, 0x6fec5c3b, 0x6fe02846, + 0x6fd3f001, 0x6fc7b36d, + 0x6fbb728a, 0x6faf2d57, 0x6fa2e3d7, 0x6f969608, 0x6f8a43ed, 0x6f7ded84, + 0x6f7192cf, 0x6f6533ce, + 0x6f58d082, 0x6f4c68eb, 0x6f3ffd09, 0x6f338cde, 0x6f271868, 0x6f1a9faa, + 0x6f0e22a3, 0x6f01a155, + 0x6ef51bbe, 0x6ee891e1, 0x6edc03bc, 0x6ecf7152, 0x6ec2daa2, 0x6eb63fad, + 0x6ea9a073, 0x6e9cfcf5, + 0x6e905534, 0x6e83a92f, 0x6e76f8e7, 0x6e6a445d, 0x6e5d8b91, 0x6e50ce84, + 0x6e440d37, 0x6e3747a9, + 0x6e2a7ddb, 0x6e1dafce, 0x6e10dd82, 0x6e0406f8, 0x6df72c30, 0x6dea4d2b, + 0x6ddd69e9, 0x6dd0826a, + 0x6dc396b0, 0x6db6a6ba, 0x6da9b28a, 0x6d9cba1f, 0x6d8fbd7a, 0x6d82bc9d, + 0x6d75b786, 0x6d68ae37, + 0x6d5ba0b0, 0x6d4e8ef2, 0x6d4178fd, 0x6d345ed1, 0x6d274070, 0x6d1a1dda, + 0x6d0cf70f, 0x6cffcc0f, + 0x6cf29cdc, 0x6ce56975, 0x6cd831dc, 0x6ccaf610, 0x6cbdb613, 0x6cb071e4, + 0x6ca32985, 0x6c95dcf6, + 0x6c888c36, 0x6c7b3748, 0x6c6dde2b, 0x6c6080e0, 0x6c531f67, 0x6c45b9c1, + 0x6c384fef, 0x6c2ae1f0, + 0x6c1d6fc6, 0x6c0ff971, 0x6c027ef1, 0x6bf50047, 0x6be77d74, 0x6bd9f677, + 0x6bcc6b53, 0x6bbedc06, + 0x6bb14892, 0x6ba3b0f7, 0x6b961536, 0x6b88754f, 0x6b7ad142, 0x6b6d2911, + 0x6b5f7cbc, 0x6b51cc42, + 0x6b4417a6, 0x6b365ee7, 0x6b28a206, 0x6b1ae103, 0x6b0d1bdf, 0x6aff529a, + 0x6af18536, 0x6ae3b3b2, + 0x6ad5de0f, 0x6ac8044e, 0x6aba266e, 0x6aac4472, 0x6a9e5e58, 0x6a907423, + 0x6a8285d1, 0x6a749365, + 0x6a669cdd, 0x6a58a23c, 0x6a4aa381, 0x6a3ca0ad, 0x6a2e99c0, 0x6a208ebb, + 0x6a127f9f, 0x6a046c6c, + 0x69f65523, 0x69e839c4, 0x69da1a50, 0x69cbf6c7, 0x69bdcf29, 0x69afa378, + 0x69a173b5, 0x69933fde, + 0x698507f6, 0x6976cbfc, 0x69688bf1, 0x695a47d6, 0x694bffab, 0x693db371, + 0x692f6328, 0x69210ed1, + 0x6912b66c, 0x690459fb, 0x68f5f97d, 0x68e794f3, 0x68d92c5d, 0x68cabfbd, + 0x68bc4f13, 0x68adda5f, + 0x689f61a1, 0x6890e4dc, 0x6882640e, 0x6873df38, 0x6865565c, 0x6856c979, + 0x68483891, 0x6839a3a4, + 0x682b0ab1, 0x681c6dbb, 0x680dccc1, 0x67ff27c4, 0x67f07ec5, 0x67e1d1c4, + 0x67d320c1, 0x67c46bbe, + 0x67b5b2bb, 0x67a6f5b8, 0x679834b6, 0x67896fb6, 0x677aa6b8, 0x676bd9bd, + 0x675d08c4, 0x674e33d0, + 0x673f5ae0, 0x67307df5, 0x67219d10, 0x6712b831, 0x6703cf58, 0x66f4e287, + 0x66e5f1be, 0x66d6fcfd, + 0x66c80445, 0x66b90797, 0x66aa06f3, 0x669b0259, 0x668bf9cb, 0x667ced49, + 0x666ddcd3, 0x665ec86b, + 0x664fb010, 0x664093c3, 0x66317385, 0x66224f56, 0x66132738, 0x6603fb2a, + 0x65f4cb2d, 0x65e59742, + 0x65d65f69, 0x65c723a3, 0x65b7e3f1, 0x65a8a052, 0x659958c9, 0x658a0d54, + 0x657abdf6, 0x656b6aae, + 0x655c137d, 0x654cb863, 0x653d5962, 0x652df679, 0x651e8faa, 0x650f24f5, + 0x64ffb65b, 0x64f043dc, + 0x64e0cd78, 0x64d15331, 0x64c1d507, 0x64b252fa, 0x64a2cd0c, 0x6493433c, + 0x6483b58c, 0x647423fb, + 0x64648e8c, 0x6454f53d, 0x64455810, 0x6435b706, 0x6426121e, 0x6416695a, + 0x6406bcba, 0x63f70c3f, + 0x63e757ea, 0x63d79fba, 0x63c7e3b1, 0x63b823cf, 0x63a86015, 0x63989884, + 0x6388cd1b, 0x6378fddc, + 0x63692ac7, 0x635953dd, 0x6349791f, 0x63399a8d, 0x6329b827, 0x6319d1ef, + 0x6309e7e4, 0x62f9fa09, + 0x62ea085c, 0x62da12df, 0x62ca1992, 0x62ba1c77, 0x62aa1b8d, 0x629a16d5, + 0x628a0e50, 0x627a01fe, + 0x6269f1e1, 0x6259ddf8, 0x6249c645, 0x6239aac7, 0x62298b81, 0x62196871, + 0x62094199, 0x61f916f9, + 0x61e8e893, 0x61d8b666, 0x61c88074, 0x61b846bc, 0x61a80940, 0x6197c800, + 0x618782fd, 0x61773a37, + 0x6166edb0, 0x61569d67, 0x6146495d, 0x6135f193, 0x6125960a, 0x611536c2, + 0x6104d3bc, 0x60f46cf9, + 0x60e40278, 0x60d3943b, 0x60c32243, 0x60b2ac8f, 0x60a23322, 0x6091b5fa, + 0x60813519, 0x6070b080, + 0x6060282f, 0x604f9c27, 0x603f0c69, 0x602e78f4, 0x601de1ca, 0x600d46ec, + 0x5ffca859, 0x5fec0613, + 0x5fdb601b, 0x5fcab670, 0x5fba0914, 0x5fa95807, 0x5f98a34a, 0x5f87eade, + 0x5f772ec2, 0x5f666ef9, + 0x5f55ab82, 0x5f44e45e, 0x5f34198e, 0x5f234b12, 0x5f1278eb, 0x5f01a31a, + 0x5ef0c99f, 0x5edfec7b, + 0x5ecf0baf, 0x5ebe273b, 0x5ead3f1f, 0x5e9c535e, 0x5e8b63f7, 0x5e7a70ea, + 0x5e697a39, 0x5e587fe5, + 0x5e4781ed, 0x5e368053, 0x5e257b17, 0x5e147239, 0x5e0365bb, 0x5df2559e, + 0x5de141e1, 0x5dd02a85, + 0x5dbf0f8c, 0x5dadf0f5, 0x5d9ccec2, 0x5d8ba8f3, 0x5d7a7f88, 0x5d695283, + 0x5d5821e4, 0x5d46edac, + 0x5d35b5db, 0x5d247a72, 0x5d133b72, 0x5d01f8dc, 0x5cf0b2af, 0x5cdf68ed, + 0x5cce1b97, 0x5cbccaac, + 0x5cab762f, 0x5c9a1e1e, 0x5c88c27c, 0x5c776348, 0x5c660084, 0x5c549a30, + 0x5c43304d, 0x5c31c2db, + 0x5c2051db, 0x5c0edd4e, 0x5bfd6534, 0x5bebe98e, 0x5bda6a5d, 0x5bc8e7a2, + 0x5bb7615d, 0x5ba5d78e, + 0x5b944a37, 0x5b82b958, 0x5b7124f2, 0x5b5f8d06, 0x5b4df193, 0x5b3c529c, + 0x5b2ab020, 0x5b190a20, + 0x5b07609d, 0x5af5b398, 0x5ae40311, 0x5ad24f09, 0x5ac09781, 0x5aaedc78, + 0x5a9d1df1, 0x5a8b5bec, + 0x5a799669, 0x5a67cd69, 0x5a5600ec, 0x5a4430f5, 0x5a325d82, 0x5a208695, + 0x5a0eac2e, 0x59fcce4f, + 0x59eaecf8, 0x59d90829, 0x59c71fe3, 0x59b53427, 0x59a344f6, 0x59915250, + 0x597f5c36, 0x596d62a9, + 0x595b65aa, 0x59496538, 0x59376155, 0x59255a02, 0x59134f3e, 0x5901410c, + 0x58ef2f6b, 0x58dd1a5d, + 0x58cb01e1, 0x58b8e5f9, 0x58a6c6a5, 0x5894a3e7, 0x58827dbe, 0x5870542c, + 0x585e2730, 0x584bf6cd, + 0x5839c302, 0x58278bd1, 0x58155139, 0x5803133c, 0x57f0d1da, 0x57de8d15, + 0x57cc44ec, 0x57b9f960, + 0x57a7aa73, 0x57955825, 0x57830276, 0x5770a968, 0x575e4cfa, 0x574bed2f, + 0x57398a05, 0x5727237f, + 0x5714b99d, 0x57024c5f, 0x56efdbc7, 0x56dd67d4, 0x56caf088, 0x56b875e4, + 0x56a5f7e7, 0x56937694, + 0x5680f1ea, 0x566e69ea, 0x565bde95, 0x56494fec, 0x5636bdef, 0x5624289f, + 0x56118ffe, 0x55fef40a, + 0x55ec54c6, 0x55d9b232, 0x55c70c4f, 0x55b4631d, 0x55a1b69d, 0x558f06d0, + 0x557c53b6, 0x55699d51, + 0x5556e3a1, 0x554426a7, 0x55316663, 0x551ea2d6, 0x550bdc01, 0x54f911e5, + 0x54e64482, 0x54d373d9, + 0x54c09feb, 0x54adc8b8, 0x549aee42, 0x54881089, 0x54752f8d, 0x54624b50, + 0x544f63d2, 0x543c7914, + 0x54298b17, 0x541699db, 0x5403a561, 0x53f0adaa, 0x53ddb2b6, 0x53cab486, + 0x53b7b31c, 0x53a4ae77, + 0x5391a699, 0x537e9b82, 0x536b8d33, 0x53587bad, 0x534566f0, 0x53324efd, + 0x531f33d5, 0x530c1579, + 0x52f8f3e9, 0x52e5cf27, 0x52d2a732, 0x52bf7c0b, 0x52ac4db4, 0x52991c2d, + 0x5285e777, 0x5272af92, + 0x525f7480, 0x524c3640, 0x5238f4d4, 0x5225b03d, 0x5212687b, 0x51ff1d8f, + 0x51ebcf7a, 0x51d87e3c, + 0x51c529d7, 0x51b1d24a, 0x519e7797, 0x518b19bf, 0x5177b8c2, 0x516454a0, + 0x5150ed5c, 0x513d82f4, + 0x512a156b, 0x5116a4c1, 0x510330f7, 0x50efba0d, 0x50dc4005, 0x50c8c2de, + 0x50b5429a, 0x50a1bf39, + 0x508e38bd, 0x507aaf25, 0x50672273, 0x505392a8, 0x503fffc4, 0x502c69c8, + 0x5018d0b4, 0x5005348a, + 0x4ff1954b, 0x4fddf2f6, 0x4fca4d8d, 0x4fb6a510, 0x4fa2f981, 0x4f8f4ae0, + 0x4f7b992d, 0x4f67e46a, + 0x4f542c98, 0x4f4071b6, 0x4f2cb3c7, 0x4f18f2c9, 0x4f052ec0, 0x4ef167aa, + 0x4edd9d89, 0x4ec9d05e, + 0x4eb60029, 0x4ea22ceb, 0x4e8e56a5, 0x4e7a7d58, 0x4e66a105, 0x4e52c1ab, + 0x4e3edf4d, 0x4e2af9ea, + 0x4e171184, 0x4e03261b, 0x4def37b0, 0x4ddb4644, 0x4dc751d8, 0x4db35a6c, + 0x4d9f6001, 0x4d8b6298, + 0x4d776231, 0x4d635ece, 0x4d4f5870, 0x4d3b4f16, 0x4d2742c2, 0x4d133374, + 0x4cff212e, 0x4ceb0bf0, + 0x4cd6f3bb, 0x4cc2d88f, 0x4caeba6e, 0x4c9a9958, 0x4c86754e, 0x4c724e50, + 0x4c5e2460, 0x4c49f77f, + 0x4c35c7ac, 0x4c2194e9, 0x4c0d5f37, 0x4bf92697, 0x4be4eb08, 0x4bd0ac8d, + 0x4bbc6b25, 0x4ba826d1, + 0x4b93df93, 0x4b7f956b, 0x4b6b485a, 0x4b56f861, 0x4b42a580, 0x4b2e4fb8, + 0x4b19f70a, 0x4b059b77, + 0x4af13d00, 0x4adcdba5, 0x4ac87767, 0x4ab41046, 0x4a9fa645, 0x4a8b3963, + 0x4a76c9a2, 0x4a625701, + 0x4a4de182, 0x4a396926, 0x4a24edee, 0x4a106fda, 0x49fbeeea, 0x49e76b21, + 0x49d2e47e, 0x49be5b02, + 0x49a9ceaf, 0x49953f84, 0x4980ad84, 0x496c18ae, 0x49578103, 0x4942e684, + 0x492e4933, 0x4919a90f, + 0x4905061a, 0x48f06054, 0x48dbb7be, 0x48c70c59, 0x48b25e25, 0x489dad25, + 0x4888f957, 0x487442be, + 0x485f8959, 0x484acd2a, 0x48360e32, 0x48214c71, 0x480c87e8, 0x47f7c099, + 0x47e2f682, 0x47ce29a7, + 0x47b95a06, 0x47a487a2, 0x478fb27b, 0x477ada91, 0x4765ffe6, 0x4751227a, + 0x473c424e, 0x47275f63, + 0x471279ba, 0x46fd9154, 0x46e8a631, 0x46d3b852, 0x46bec7b8, 0x46a9d464, + 0x4694de56, 0x467fe590, + 0x466aea12, 0x4655ebdd, 0x4640eaf2, 0x462be751, 0x4616e0fc, 0x4601d7f3, + 0x45eccc37, 0x45d7bdc9, + 0x45c2acaa, 0x45ad98da, 0x4598825a, 0x4583692c, 0x456e4d4f, 0x45592ec6, + 0x45440d90, 0x452ee9ae, + 0x4519c321, 0x450499eb, 0x44ef6e0b, 0x44da3f83, 0x44c50e53, 0x44afda7d, + 0x449aa400, 0x44856adf, + 0x44702f19, 0x445af0b0, 0x4445afa4, 0x44306bf6, 0x441b25a8, 0x4405dcb9, + 0x43f0912b, 0x43db42fe, + 0x43c5f234, 0x43b09ecc, 0x439b48c9, 0x4385f02a, 0x437094f1, 0x435b371f, + 0x4345d6b3, 0x433073b0, + 0x431b0e15, 0x4305a5e5, 0x42f03b1e, 0x42dacdc3, 0x42c55dd4, 0x42afeb53, + 0x429a763f, 0x4284fe99, + 0x426f8463, 0x425a079e, 0x42448849, 0x422f0667, 0x421981f7, 0x4203fafb, + 0x41ee7174, 0x41d8e561, + 0x41c356c5, 0x41adc5a0, 0x419831f3, 0x41829bbe, 0x416d0302, 0x415767c1, + 0x4141c9fb, 0x412c29b1, + 0x411686e4, 0x4100e194, 0x40eb39c3, 0x40d58f71, 0x40bfe29f, 0x40aa334e, + 0x4094817f, 0x407ecd32, + 0x40691669, 0x40535d24, 0x403da165, 0x4027e32b, 0x40122278, 0x3ffc5f4d, + 0x3fe699aa, 0x3fd0d191, + 0x3fbb0702, 0x3fa539fd, 0x3f8f6a85, 0x3f799899, 0x3f63c43b, 0x3f4ded6b, + 0x3f38142a, 0x3f22387a, + 0x3f0c5a5a, 0x3ef679cc, 0x3ee096d1, 0x3ecab169, 0x3eb4c995, 0x3e9edf57, + 0x3e88f2ae, 0x3e73039d, + 0x3e5d1222, 0x3e471e41, 0x3e3127f9, 0x3e1b2f4a, 0x3e053437, 0x3def36c0, + 0x3dd936e6, 0x3dc334a9, + 0x3dad300b, 0x3d97290b, 0x3d811fac, 0x3d6b13ee, 0x3d5505d2, 0x3d3ef559, + 0x3d28e282, 0x3d12cd51, + 0x3cfcb5c4, 0x3ce69bde, 0x3cd07f9f, 0x3cba6107, 0x3ca44018, 0x3c8e1cd3, + 0x3c77f737, 0x3c61cf48, + 0x3c4ba504, 0x3c35786d, 0x3c1f4983, 0x3c091849, 0x3bf2e4be, 0x3bdcaee3, + 0x3bc676b9, 0x3bb03c42, + 0x3b99ff7d, 0x3b83c06c, 0x3b6d7f10, 0x3b573b69, 0x3b40f579, 0x3b2aad3f, + 0x3b1462be, 0x3afe15f6, + 0x3ae7c6e7, 0x3ad17593, 0x3abb21fb, 0x3aa4cc1e, 0x3a8e7400, 0x3a78199f, + 0x3a61bcfd, 0x3a4b5e1b, + 0x3a34fcf9, 0x3a1e9999, 0x3a0833fc, 0x39f1cc21, 0x39db620b, 0x39c4f5ba, + 0x39ae872f, 0x3998166a, + 0x3981a36d, 0x396b2e38, 0x3954b6cd, 0x393e3d2c, 0x3927c155, 0x3911434b, + 0x38fac30e, 0x38e4409e, + 0x38cdbbfc, 0x38b7352a, 0x38a0ac29, 0x388a20f8, 0x38739399, 0x385d040d, + 0x38467255, 0x382fde72, + 0x38194864, 0x3802b02c, 0x37ec15cb, 0x37d57943, 0x37beda93, 0x37a839be, + 0x379196c3, 0x377af1a3, + 0x37644a60, 0x374da0fa, 0x3736f573, 0x372047ca, 0x37099802, 0x36f2e61a, + 0x36dc3214, 0x36c57bf0, + 0x36aec3b0, 0x36980954, 0x36814cde, 0x366a8e4d, 0x3653cda3, 0x363d0ae2, + 0x36264609, 0x360f7f19, + 0x35f8b614, 0x35e1eafa, 0x35cb1dcc, 0x35b44e8c, 0x359d7d39, 0x3586a9d5, + 0x356fd461, 0x3558fcde, + 0x3542234c, 0x352b47ad, 0x35146a00, 0x34fd8a48, 0x34e6a885, 0x34cfc4b7, + 0x34b8dee1, 0x34a1f702, + 0x348b0d1c, 0x3474212f, 0x345d333c, 0x34464345, 0x342f5149, 0x34185d4b, + 0x3401674a, 0x33ea6f48, + 0x33d37546, 0x33bc7944, 0x33a57b44, 0x338e7b46, 0x3377794b, 0x33607554, + 0x33496f62, 0x33326776, + 0x331b5d91, 0x330451b3, 0x32ed43de, 0x32d63412, 0x32bf2250, 0x32a80e99, + 0x3290f8ef, 0x3279e151, + 0x3262c7c1, 0x324bac40, 0x32348ecf, 0x321d6f6e, 0x32064e1e, 0x31ef2ae1, + 0x31d805b7, 0x31c0dea1, + 0x31a9b5a0, 0x31928ab4, 0x317b5de0, 0x31642f23, 0x314cfe7f, 0x3135cbf4, + 0x311e9783, 0x3107612e, + 0x30f028f4, 0x30d8eed8, 0x30c1b2da, 0x30aa74fa, 0x3093353a, 0x307bf39b, + 0x3064b01d, 0x304d6ac1, + 0x30362389, 0x301eda75, 0x30078f86, 0x2ff042bd, 0x2fd8f41b, 0x2fc1a3a0, + 0x2faa514f, 0x2f92fd26, + 0x2f7ba729, 0x2f644f56, 0x2f4cf5b0, 0x2f359a37, 0x2f1e3ced, 0x2f06ddd1, + 0x2eef7ce5, 0x2ed81a29, + 0x2ec0b5a0, 0x2ea94f49, 0x2e91e725, 0x2e7a7d36, 0x2e63117c, 0x2e4ba3f8, + 0x2e3434ac, 0x2e1cc397, + 0x2e0550bb, 0x2deddc19, 0x2dd665b2, 0x2dbeed86, 0x2da77397, 0x2d8ff7e5, + 0x2d787a72, 0x2d60fb3e, + 0x2d497a4a, 0x2d31f797, 0x2d1a7325, 0x2d02ecf7, 0x2ceb650d, 0x2cd3db67, + 0x2cbc5006, 0x2ca4c2ed, + 0x2c8d341a, 0x2c75a390, 0x2c5e114f, 0x2c467d58, 0x2c2ee7ad, 0x2c17504d, + 0x2bffb73a, 0x2be81c74, + 0x2bd07ffe, 0x2bb8e1d7, 0x2ba14200, 0x2b89a07b, 0x2b71fd48, 0x2b5a5868, + 0x2b42b1dd, 0x2b2b09a6, + 0x2b135fc6, 0x2afbb43c, 0x2ae4070a, 0x2acc5831, 0x2ab4a7b1, 0x2a9cf58c, + 0x2a8541c3, 0x2a6d8c55, + 0x2a55d545, 0x2a3e1c93, 0x2a266240, 0x2a0ea64d, 0x29f6e8bb, 0x29df298b, + 0x29c768be, 0x29afa654, + 0x2997e24f, 0x29801caf, 0x29685576, 0x29508ca4, 0x2938c23a, 0x2920f63a, + 0x290928a3, 0x28f15978, + 0x28d988b8, 0x28c1b666, 0x28a9e281, 0x28920d0a, 0x287a3604, 0x28625d6d, + 0x284a8349, 0x2832a796, + 0x281aca57, 0x2802eb8c, 0x27eb0b36, 0x27d32956, 0x27bb45ed, 0x27a360fc, + 0x278b7a84, 0x27739285, + 0x275ba901, 0x2743bdf9, 0x272bd16d, 0x2713e35f, 0x26fbf3ce, 0x26e402bd, + 0x26cc102d, 0x26b41c1d, + 0x269c268f, 0x26842f84, 0x266c36fe, 0x26543cfb, 0x263c417f, 0x26244489, + 0x260c461b, 0x25f44635, + 0x25dc44d9, 0x25c44207, 0x25ac3dc0, 0x25943806, 0x257c30d8, 0x25642839, + 0x254c1e28, 0x253412a8, + 0x251c05b8, 0x2503f75a, 0x24ebe78f, 0x24d3d657, 0x24bbc3b4, 0x24a3afa6, + 0x248b9a2f, 0x2473834f, + 0x245b6b07, 0x24435158, 0x242b3644, 0x241319ca, 0x23fafbec, 0x23e2dcac, + 0x23cabc09, 0x23b29a05, + 0x239a76a0, 0x238251dd, 0x236a2bba, 0x2352043b, 0x2339db5e, 0x2321b126, + 0x23098593, 0x22f158a7, + 0x22d92a61, 0x22c0fac4, 0x22a8c9cf, 0x22909785, 0x227863e5, 0x22602ef1, + 0x2247f8aa, 0x222fc111, + 0x22178826, 0x21ff4dea, 0x21e71260, 0x21ced586, 0x21b6975f, 0x219e57eb, + 0x2186172b, 0x216dd521, + 0x215591cc, 0x213d4d2f, 0x21250749, 0x210cc01d, 0x20f477aa, 0x20dc2df2, + 0x20c3e2f5, 0x20ab96b5, + 0x20934933, 0x207afa6f, 0x2062aa6b, 0x204a5927, 0x203206a4, 0x2019b2e4, + 0x20015de7, 0x1fe907ae, + 0x1fd0b03a, 0x1fb8578b, 0x1f9ffda4, 0x1f87a285, 0x1f6f462f, 0x1f56e8a2, + 0x1f3e89e0, 0x1f2629ea, + 0x1f0dc8c0, 0x1ef56664, 0x1edd02d6, 0x1ec49e17, 0x1eac3829, 0x1e93d10c, + 0x1e7b68c2, 0x1e62ff4a, + 0x1e4a94a7, 0x1e3228d9, 0x1e19bbe0, 0x1e014dbf, 0x1de8de75, 0x1dd06e04, + 0x1db7fc6d, 0x1d9f89b1, + 0x1d8715d0, 0x1d6ea0cc, 0x1d562aa6, 0x1d3db35e, 0x1d253af5, 0x1d0cc16c, + 0x1cf446c5, 0x1cdbcb00, + 0x1cc34e1f, 0x1caad021, 0x1c925109, 0x1c79d0d6, 0x1c614f8b, 0x1c48cd27, + 0x1c3049ac, 0x1c17c51b, + 0x1bff3f75, 0x1be6b8ba, 0x1bce30ec, 0x1bb5a80c, 0x1b9d1e1a, 0x1b849317, + 0x1b6c0705, 0x1b5379e5, + 0x1b3aebb6, 0x1b225c7b, 0x1b09cc34, 0x1af13ae3, 0x1ad8a887, 0x1ac01522, + 0x1aa780b6, 0x1a8eeb42, + 0x1a7654c8, 0x1a5dbd49, 0x1a4524c6, 0x1a2c8b3f, 0x1a13f0b6, 0x19fb552c, + 0x19e2b8a2, 0x19ca1b17, + 0x19b17c8f, 0x1998dd09, 0x19803c86, 0x19679b07, 0x194ef88e, 0x1936551b, + 0x191db0af, 0x19050b4b, + 0x18ec64f0, 0x18d3bda0, 0x18bb155a, 0x18a26c20, 0x1889c1f3, 0x187116d4, + 0x18586ac3, 0x183fbdc3, + 0x18270fd3, 0x180e60f4, 0x17f5b129, 0x17dd0070, 0x17c44ecd, 0x17ab9c3e, + 0x1792e8c6, 0x177a3466, + 0x17617f1d, 0x1748c8ee, 0x173011d9, 0x171759df, 0x16fea102, 0x16e5e741, + 0x16cd2c9f, 0x16b4711b, + 0x169bb4b7, 0x1682f774, 0x166a3953, 0x16517a55, 0x1638ba7a, 0x161ff9c4, + 0x16073834, 0x15ee75cb, + 0x15d5b288, 0x15bcee6f, 0x15a4297f, 0x158b63b9, 0x15729d1f, 0x1559d5b1, + 0x15410d70, 0x1528445d, + 0x150f7a7a, 0x14f6afc7, 0x14dde445, 0x14c517f4, 0x14ac4ad7, 0x14937cee, + 0x147aae3a, 0x1461debc, + 0x14490e74, 0x14303d65, 0x14176b8e, 0x13fe98f1, 0x13e5c58e, 0x13ccf167, + 0x13b41c7d, 0x139b46d0, + 0x13827062, 0x13699933, 0x1350c144, 0x1337e897, 0x131f0f2c, 0x13063505, + 0x12ed5a21, 0x12d47e83, + 0x12bba22b, 0x12a2c51b, 0x1289e752, 0x127108d2, 0x1258299c, 0x123f49b2, + 0x12266913, 0x120d87c1, + 0x11f4a5bd, 0x11dbc307, 0x11c2dfa2, 0x11a9fb8d, 0x119116c9, 0x11783159, + 0x115f4b3c, 0x11466473, + 0x112d7d00, 0x111494e4, 0x10fbac1e, 0x10e2c2b2, 0x10c9d89e, 0x10b0ede5, + 0x10980287, 0x107f1686, + 0x106629e1, 0x104d3c9b, 0x10344eb4, 0x101b602d, 0x10027107, 0xfe98143, + 0xfd090e1, 0xfb79fe4, + 0xf9eae4c, 0xf85bc19, 0xf6cc94e, 0xf53d5ea, 0xf3ae1ee, 0xf21ed5d, 0xf08f836, + 0xef0027b, + 0xed70c2c, 0xebe154b, 0xea51dd8, 0xe8c25d5, 0xe732d42, 0xe5a3421, 0xe413a72, + 0xe284036, + 0xe0f456f, 0xdf64a1c, 0xddd4e40, 0xdc451dc, 0xdab54ef, 0xd92577b, 0xd795982, + 0xd605b03, + 0xd475c00, 0xd2e5c7b, 0xd155c73, 0xcfc5bea, 0xce35ae1, 0xcca5959, 0xcb15752, + 0xc9854cf, + 0xc7f51cf, 0xc664e53, 0xc4d4a5d, 0xc3445ee, 0xc1b4107, 0xc023ba7, 0xbe935d2, + 0xbd02f87, + 0xbb728c7, 0xb9e2193, 0xb8519ed, 0xb6c11d5, 0xb53094d, 0xb3a0055, 0xb20f6ee, + 0xb07ed19, + 0xaeee2d7, 0xad5d829, 0xabccd11, 0xaa3c18e, 0xa8ab5a2, 0xa71a94f, 0xa589c94, + 0xa3f8f73, + 0xa2681ed, 0xa0d7403, 0x9f465b5, 0x9db5706, 0x9c247f5, 0x9a93884, 0x99028b3, + 0x9771884, + 0x95e07f8, 0x944f70f, 0x92be5ca, 0x912d42c, 0x8f9c233, 0x8e0afe2, 0x8c79d3a, + 0x8ae8a3a, + 0x89576e5, 0x87c633c, 0x8634f3e, 0x84a3aee, 0x831264c, 0x8181159, 0x7fefc16, + 0x7e5e685, + 0x7ccd0a5, 0x7b3ba78, 0x79aa400, 0x7818d3c, 0x768762e, 0x74f5ed7, 0x7364738, + 0x71d2f52, + 0x7041726, 0x6eafeb4, 0x6d1e5fe, 0x6b8cd05, 0x69fb3c9, 0x6869a4c, 0x66d808f, + 0x6546692, + 0x63b4c57, 0x62231de, 0x6091729, 0x5effc38, 0x5d6e10c, 0x5bdc5a7, 0x5a4aa09, + 0x58b8e34, + 0x5727228, 0x55955e6, 0x540396f, 0x5271cc4, 0x50dffe7, 0x4f4e2d8, 0x4dbc597, + 0x4c2a827, + 0x4a98a88, 0x4906cbb, 0x4774ec1, 0x45e309a, 0x4451249, 0x42bf3cd, 0x412d528, + 0x3f9b65b, + 0x3e09767, 0x3c7784d, 0x3ae590d, 0x39539a9, 0x37c1a22, 0x362fa78, 0x349daac, + 0x330bac1, + 0x3179ab5, 0x2fe7a8c, 0x2e55a44, 0x2cc39e1, 0x2b31961, 0x299f8c7, 0x280d813, + 0x267b747, + 0x24e9662, 0x2357567, 0x21c5457, 0x2033331, 0x1ea11f7, 0x1d0f0ab, 0x1b7cf4d, + 0x19eaddd, + 0x1858c5e, 0x16c6ad0, 0x1534934, 0x13a278a, 0x12105d5, 0x107e414, 0xeec249, + 0xd5a075, + 0xbc7e99, 0xa35cb5, 0x8a3acb, 0x7118dc, 0x57f6e9, 0x3ed4f2, 0x25b2f8, + 0xc90fe, + +}; + +/** + * @brief Initialization function for the Q31 DCT4/IDCT4. + * @param[in,out] *S points to an instance of Q31 DCT4/IDCT4 structure. + * @param[in] *S_RFFT points to an instance of Q31 RFFT/RIFFT structure + * @param[in] *S_CFFT points to an instance of Q31 CFFT/CIFFT structure + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. + * \par Normalizing factor: + * The normalizing factor is sqrt(2/N), which depends on the size of transform N. + * Normalizing factors in 1.31 format are mentioned in the table below for different DCT sizes: + * \image html dct4NormalizingQ31Table.gif + */ + +arm_status arm_dct4_init_q31( + arm_dct4_instance_q31 * S, + arm_rfft_instance_q31 * S_RFFT, + arm_cfft_radix4_instance_q31 * S_CFFT, + uint16_t N, + uint16_t Nby2, + q31_t normalize) +{ + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + + /* Initializing the pointer array with the weight table base addresses of different lengths */ + q31_t *twiddlePtr[3] = { (q31_t *) WeightsQ31_128, (q31_t *) WeightsQ31_512, + (q31_t *) WeightsQ31_2048 + }; + + /* Initializing the pointer array with the cos factor table base addresses of different lengths */ + q31_t *pCosFactor[3] = + { (q31_t *) cos_factorsQ31_128, (q31_t *) cos_factorsQ31_512, + (q31_t *) cos_factorsQ31_2048 + }; + + /* Initialize the DCT4 length */ + S->N = N; + + /* Initialize the half of DCT4 length */ + S->Nby2 = Nby2; + + /* Initialize the DCT4 Normalizing factor */ + S->normalize = normalize; + + /* Initialize Real FFT Instance */ + S->pRfft = S_RFFT; + + /* Initialize Complex FFT Instance */ + S->pCfft = S_CFFT; + + switch (N) + { + /* Initialize the table modifier values */ + case 2048u: + S->pTwiddle = twiddlePtr[2]; + S->pCosFactor = pCosFactor[2]; + break; + case 512u: + S->pTwiddle = twiddlePtr[1]; + S->pCosFactor = pCosFactor[1]; + break; + case 128u: + S->pTwiddle = twiddlePtr[0]; + S->pCosFactor = pCosFactor[0]; + break; + default: + status = ARM_MATH_ARGUMENT_ERROR; + } + + /* Initialize the RFFT/RIFFT Function */ + arm_rfft_init_q31(S->pRfft, S->pCfft, S->N, 0, 1); + + /* return the status of DCT4 Init function */ + return (status); +} + +/** + * @} end of DCT4_IDCT4 group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q15.c new file mode 100644 index 000000000..75199b452 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q15.c @@ -0,0 +1,383 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_dct4_q15.c +* +* Description: Processing function of DCT4 & IDCT4 Q15. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @addtogroup DCT4_IDCT4 + * @{ + */ + +/** + * @brief Processing function for the Q15 DCT4/IDCT4. + * @param[in] *S points to an instance of the Q15 DCT4 structure. + * @param[in] *pState points to state buffer. + * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. + * @return none. + * + * \par Input an output formats: + * Internally inputs are downscaled in the RFFT process function to avoid overflows. + * Number of bits downscaled, depends on the size of the transform. + * The input and output formats for different DCT sizes and number of bits to upscale are mentioned in the table below: + * + * \image html dct4FormatsQ15Table.gif + */ + +void arm_dct4_q15( + const arm_dct4_instance_q15 * S, + q15_t * pState, + q15_t * pInlineBuffer) +{ + uint32_t i; /* Loop counter */ + q15_t *weights = S->pTwiddle; /* Pointer to the Weights table */ + q15_t *cosFact = S->pCosFactor; /* Pointer to the cos factors table */ + q15_t *pS1, *pS2, *pbuff; /* Temporary pointers for input buffer and pState buffer */ + q15_t in; /* Temporary variable */ + + + /* DCT4 computation involves DCT2 (which is calculated using RFFT) + * along with some pre-processing and post-processing. + * Computational procedure is explained as follows: + * (a) Pre-processing involves multiplying input with cos factor, + * r(n) = 2 * u(n) * cos(pi*(2*n+1)/(4*n)) + * where, + * r(n) -- output of preprocessing + * u(n) -- input to preprocessing(actual Source buffer) + * (b) Calculation of DCT2 using FFT is divided into three steps: + * Step1: Re-ordering of even and odd elements of input. + * Step2: Calculating FFT of the re-ordered input. + * Step3: Taking the real part of the product of FFT output and weights. + * (c) Post-processing - DCT4 can be obtained from DCT2 output using the following equation: + * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) + * where, + * Y4 -- DCT4 output, Y2 -- DCT2 output + * (d) Multiplying the output with the normalizing factor sqrt(2/N). + */ + + /*-------- Pre-processing ------------*/ + /* Multiplying input with cos factor i.e. r(n) = 2 * x(n) * cos(pi*(2*n+1)/(4*n)) */ + arm_mult_q15(pInlineBuffer, cosFact, pInlineBuffer, S->N); + arm_shift_q15(pInlineBuffer, 1, pInlineBuffer, S->N); + + /* ---------------------------------------------------------------- + * Step1: Re-ordering of even and odd elements as + * pState[i] = pInlineBuffer[2*i] and + * pState[N-i-1] = pInlineBuffer[2*i+1] where i = 0 to N/2 + ---------------------------------------------------------------------*/ + + /* pS1 initialized to pState */ + pS1 = pState; + + /* pS2 initialized to pState+N-1, so that it points to the end of the state buffer */ + pS2 = pState + (S->N - 1u); + + /* pbuff initialized to input buffer */ + pbuff = pInlineBuffer; + + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Initializing the loop counter to N/2 >> 2 for loop unrolling by 4 */ + i = (uint32_t) S->Nby2 >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + do + { + /* Re-ordering of even and odd elements */ + /* pState[i] = pInlineBuffer[2*i] */ + *pS1++ = *pbuff++; + /* pState[N-i-1] = pInlineBuffer[2*i+1] */ + *pS2-- = *pbuff++; + + *pS1++ = *pbuff++; + *pS2-- = *pbuff++; + + *pS1++ = *pbuff++; + *pS2-- = *pbuff++; + + *pS1++ = *pbuff++; + *pS2-- = *pbuff++; + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + /* pbuff initialized to input buffer */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Initializing the loop counter to N/4 instead of N for loop unrolling */ + i = (uint32_t) S->N >> 2u; + + /* Processing with loop unrolling 4 times as N is always multiple of 4. + * Compute 4 outputs at a time */ + do + { + /* Writing the re-ordered output back to inplace input buffer */ + *pbuff++ = *pS1++; + *pbuff++ = *pS1++; + *pbuff++ = *pS1++; + *pbuff++ = *pS1++; + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + + /* --------------------------------------------------------- + * Step2: Calculate RFFT for N-point input + * ---------------------------------------------------------- */ + /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */ + arm_rfft_q15(S->pRfft, pInlineBuffer, pState); + + /*---------------------------------------------------------------------- + * Step3: Multiply the FFT output with the weights. + *----------------------------------------------------------------------*/ + arm_cmplx_mult_cmplx_q15(pState, weights, pState, S->N); + + /* The output of complex multiplication is in 3.13 format. + * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.15 format by shifting left by 2 bits. */ + arm_shift_q15(pState, 2, pState, S->N * 2); + + /* ----------- Post-processing ---------- */ + /* DCT-IV can be obtained from DCT-II by the equation, + * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) + * Hence, Y4(0) = Y2(0)/2 */ + /* Getting only real part from the output and Converting to DCT-IV */ + + /* Initializing the loop counter to N >> 2 for loop unrolling by 4 */ + i = ((uint32_t) S->N - 1u) >> 2u; + + /* pbuff initialized to input buffer. */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */ + in = *pS1++ >> 1u; + /* input buffer acts as inplace, so output values are stored in the input itself. */ + *pbuff++ = in; + + /* pState pointer is incremented twice as the real values are located alternatively in the array */ + pS1++; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + do + { + /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ + /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ + in = *pS1++ - in; + *pbuff++ = in; + /* points to the next real value */ + pS1++; + + in = *pS1++ - in; + *pbuff++ = in; + pS1++; + + in = *pS1++ - in; + *pbuff++ = in; + pS1++; + + in = *pS1++ - in; + *pbuff++ = in; + pS1++; + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + i = ((uint32_t) S->N - 1u) % 0x4u; + + while(i > 0u) + { + /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ + /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ + in = *pS1++ - in; + *pbuff++ = in; + /* points to the next real value */ + pS1++; + + /* Decrement the loop counter */ + i--; + } + + + /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/ + + /* Initializing the loop counter to N/4 instead of N for loop unrolling */ + i = (uint32_t) S->N >> 2u; + + /* pbuff initialized to the pInlineBuffer(now contains the output values) */ + pbuff = pInlineBuffer; + + /* Processing with loop unrolling 4 times as N is always multiple of 4. Compute 4 outputs at a time */ + do + { + /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */ + in = *pbuff; + *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15)); + + in = *pbuff; + *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15)); + + in = *pbuff; + *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15)); + + in = *pbuff; + *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15)); + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initializing the loop counter to N/2 */ + i = (uint32_t) S->Nby2; + + do + { + /* Re-ordering of even and odd elements */ + /* pState[i] = pInlineBuffer[2*i] */ + *pS1++ = *pbuff++; + /* pState[N-i-1] = pInlineBuffer[2*i+1] */ + *pS2-- = *pbuff++; + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + /* pbuff initialized to input buffer */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Initializing the loop counter */ + i = (uint32_t) S->N; + + do + { + /* Writing the re-ordered output back to inplace input buffer */ + *pbuff++ = *pS1++; + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + + /* --------------------------------------------------------- + * Step2: Calculate RFFT for N-point input + * ---------------------------------------------------------- */ + /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */ + arm_rfft_q15(S->pRfft, pInlineBuffer, pState); + + /*---------------------------------------------------------------------- + * Step3: Multiply the FFT output with the weights. + *----------------------------------------------------------------------*/ + arm_cmplx_mult_cmplx_q15(pState, weights, pState, S->N); + + /* The output of complex multiplication is in 3.13 format. + * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.15 format by shifting left by 2 bits. */ + arm_shift_q15(pState, 2, pState, S->N * 2); + + /* ----------- Post-processing ---------- */ + /* DCT-IV can be obtained from DCT-II by the equation, + * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) + * Hence, Y4(0) = Y2(0)/2 */ + /* Getting only real part from the output and Converting to DCT-IV */ + + /* Initializing the loop counter */ + i = ((uint32_t) S->N - 1u); + + /* pbuff initialized to input buffer. */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */ + in = *pS1++ >> 1u; + /* input buffer acts as inplace, so output values are stored in the input itself. */ + *pbuff++ = in; + + /* pState pointer is incremented twice as the real values are located alternatively in the array */ + pS1++; + + do + { + /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ + /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ + in = *pS1++ - in; + *pbuff++ = in; + /* points to the next real value */ + pS1++; + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/ + + /* Initializing the loop counter */ + i = (uint32_t) S->N; + + /* pbuff initialized to the pInlineBuffer(now contains the output values) */ + pbuff = pInlineBuffer; + + do + { + /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */ + in = *pbuff; + *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15)); + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of DCT4_IDCT4 group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q31.c new file mode 100644 index 000000000..1f2c8ce43 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q31.c @@ -0,0 +1,384 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_dct4_q31.c +* +* Description: Processing function of DCT4 & IDCT4 Q31. +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @addtogroup DCT4_IDCT4 + * @{ + */ + +/** + * @brief Processing function for the Q31 DCT4/IDCT4. + * @param[in] *S points to an instance of the Q31 DCT4 structure. + * @param[in] *pState points to state buffer. + * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. + * @return none. + * \par Input an output formats: + * Input samples need to be downscaled by 1 bit to avoid saturations in the Q31 DCT process, + * as the conversion from DCT2 to DCT4 involves one subtraction. + * Internally inputs are downscaled in the RFFT process function to avoid overflows. + * Number of bits downscaled, depends on the size of the transform. + * The input and output formats for different DCT sizes and number of bits to upscale are mentioned in the table below: + * + * \image html dct4FormatsQ31Table.gif + */ + +void arm_dct4_q31( + const arm_dct4_instance_q31 * S, + q31_t * pState, + q31_t * pInlineBuffer) +{ + uint16_t i; /* Loop counter */ + q31_t *weights = S->pTwiddle; /* Pointer to the Weights table */ + q31_t *cosFact = S->pCosFactor; /* Pointer to the cos factors table */ + q31_t *pS1, *pS2, *pbuff; /* Temporary pointers for input buffer and pState buffer */ + q31_t in; /* Temporary variable */ + + + /* DCT4 computation involves DCT2 (which is calculated using RFFT) + * along with some pre-processing and post-processing. + * Computational procedure is explained as follows: + * (a) Pre-processing involves multiplying input with cos factor, + * r(n) = 2 * u(n) * cos(pi*(2*n+1)/(4*n)) + * where, + * r(n) -- output of preprocessing + * u(n) -- input to preprocessing(actual Source buffer) + * (b) Calculation of DCT2 using FFT is divided into three steps: + * Step1: Re-ordering of even and odd elements of input. + * Step2: Calculating FFT of the re-ordered input. + * Step3: Taking the real part of the product of FFT output and weights. + * (c) Post-processing - DCT4 can be obtained from DCT2 output using the following equation: + * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) + * where, + * Y4 -- DCT4 output, Y2 -- DCT2 output + * (d) Multiplying the output with the normalizing factor sqrt(2/N). + */ + + /*-------- Pre-processing ------------*/ + /* Multiplying input with cos factor i.e. r(n) = 2 * x(n) * cos(pi*(2*n+1)/(4*n)) */ + arm_mult_q31(pInlineBuffer, cosFact, pInlineBuffer, S->N); + arm_shift_q31(pInlineBuffer, 1, pInlineBuffer, S->N); + + /* ---------------------------------------------------------------- + * Step1: Re-ordering of even and odd elements as + * pState[i] = pInlineBuffer[2*i] and + * pState[N-i-1] = pInlineBuffer[2*i+1] where i = 0 to N/2 + ---------------------------------------------------------------------*/ + + /* pS1 initialized to pState */ + pS1 = pState; + + /* pS2 initialized to pState+N-1, so that it points to the end of the state buffer */ + pS2 = pState + (S->N - 1u); + + /* pbuff initialized to input buffer */ + pbuff = pInlineBuffer; + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Initializing the loop counter to N/2 >> 2 for loop unrolling by 4 */ + i = S->Nby2 >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + do + { + /* Re-ordering of even and odd elements */ + /* pState[i] = pInlineBuffer[2*i] */ + *pS1++ = *pbuff++; + /* pState[N-i-1] = pInlineBuffer[2*i+1] */ + *pS2-- = *pbuff++; + + *pS1++ = *pbuff++; + *pS2-- = *pbuff++; + + *pS1++ = *pbuff++; + *pS2-- = *pbuff++; + + *pS1++ = *pbuff++; + *pS2-- = *pbuff++; + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + /* pbuff initialized to input buffer */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Initializing the loop counter to N/4 instead of N for loop unrolling */ + i = S->N >> 2u; + + /* Processing with loop unrolling 4 times as N is always multiple of 4. + * Compute 4 outputs at a time */ + do + { + /* Writing the re-ordered output back to inplace input buffer */ + *pbuff++ = *pS1++; + *pbuff++ = *pS1++; + *pbuff++ = *pS1++; + *pbuff++ = *pS1++; + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + + /* --------------------------------------------------------- + * Step2: Calculate RFFT for N-point input + * ---------------------------------------------------------- */ + /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */ + arm_rfft_q31(S->pRfft, pInlineBuffer, pState); + + /*---------------------------------------------------------------------- + * Step3: Multiply the FFT output with the weights. + *----------------------------------------------------------------------*/ + arm_cmplx_mult_cmplx_q31(pState, weights, pState, S->N); + + /* The output of complex multiplication is in 3.29 format. + * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.31 format by shifting left by 2 bits. */ + arm_shift_q31(pState, 2, pState, S->N * 2); + + /* ----------- Post-processing ---------- */ + /* DCT-IV can be obtained from DCT-II by the equation, + * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) + * Hence, Y4(0) = Y2(0)/2 */ + /* Getting only real part from the output and Converting to DCT-IV */ + + /* Initializing the loop counter to N >> 2 for loop unrolling by 4 */ + i = (S->N - 1u) >> 2u; + + /* pbuff initialized to input buffer. */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */ + in = *pS1++ >> 1u; + /* input buffer acts as inplace, so output values are stored in the input itself. */ + *pbuff++ = in; + + /* pState pointer is incremented twice as the real values are located alternatively in the array */ + pS1++; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + do + { + /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ + /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ + in = *pS1++ - in; + *pbuff++ = in; + /* points to the next real value */ + pS1++; + + in = *pS1++ - in; + *pbuff++ = in; + pS1++; + + in = *pS1++ - in; + *pbuff++ = in; + pS1++; + + in = *pS1++ - in; + *pbuff++ = in; + pS1++; + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + i = (S->N - 1u) % 0x4u; + + while(i > 0u) + { + /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ + /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ + in = *pS1++ - in; + *pbuff++ = in; + /* points to the next real value */ + pS1++; + + /* Decrement the loop counter */ + i--; + } + + + /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/ + + /* Initializing the loop counter to N/4 instead of N for loop unrolling */ + i = S->N >> 2u; + + /* pbuff initialized to the pInlineBuffer(now contains the output values) */ + pbuff = pInlineBuffer; + + /* Processing with loop unrolling 4 times as N is always multiple of 4. Compute 4 outputs at a time */ + do + { + /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */ + in = *pbuff; + *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31)); + + in = *pbuff; + *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31)); + + in = *pbuff; + *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31)); + + in = *pbuff; + *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31)); + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initializing the loop counter to N/2 */ + i = S->Nby2; + + do + { + /* Re-ordering of even and odd elements */ + /* pState[i] = pInlineBuffer[2*i] */ + *pS1++ = *pbuff++; + /* pState[N-i-1] = pInlineBuffer[2*i+1] */ + *pS2-- = *pbuff++; + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + /* pbuff initialized to input buffer */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Initializing the loop counter */ + i = S->N; + + do + { + /* Writing the re-ordered output back to inplace input buffer */ + *pbuff++ = *pS1++; + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + + + /* --------------------------------------------------------- + * Step2: Calculate RFFT for N-point input + * ---------------------------------------------------------- */ + /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */ + arm_rfft_q31(S->pRfft, pInlineBuffer, pState); + + /*---------------------------------------------------------------------- + * Step3: Multiply the FFT output with the weights. + *----------------------------------------------------------------------*/ + arm_cmplx_mult_cmplx_q31(pState, weights, pState, S->N); + + /* The output of complex multiplication is in 3.29 format. + * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.31 format by shifting left by 2 bits. */ + arm_shift_q31(pState, 2, pState, S->N * 2); + + /* ----------- Post-processing ---------- */ + /* DCT-IV can be obtained from DCT-II by the equation, + * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) + * Hence, Y4(0) = Y2(0)/2 */ + /* Getting only real part from the output and Converting to DCT-IV */ + + /* pbuff initialized to input buffer. */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */ + in = *pS1++ >> 1u; + /* input buffer acts as inplace, so output values are stored in the input itself. */ + *pbuff++ = in; + + /* pState pointer is incremented twice as the real values are located alternatively in the array */ + pS1++; + + /* Initializing the loop counter */ + i = (S->N - 1u); + + while(i > 0u) + { + /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ + /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ + in = *pS1++ - in; + *pbuff++ = in; + /* points to the next real value */ + pS1++; + + /* Decrement the loop counter */ + i--; + } + + + /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/ + + /* Initializing the loop counter */ + i = S->N; + + /* pbuff initialized to the pInlineBuffer(now contains the output values) */ + pbuff = pInlineBuffer; + + do + { + /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */ + in = *pbuff; + *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31)); + + /* Decrement the loop counter */ + i--; + } while(i > 0u); + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + +/** + * @} end of DCT4_IDCT4 group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_f32.c new file mode 100644 index 000000000..c3c2f7697 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_f32.c @@ -0,0 +1,383 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_rfft_f32.c +* +* Description: RFFT & RIFFT Floating point process function +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupTransforms + */ + +/** + * @defgroup RFFT_RIFFT Real FFT Functions + * + * \par + * Complex FFT/IFFT typically assumes complex input and output. However many applications use real valued data in time domain. + * Real FFT/IFFT efficiently process real valued sequences with the advantage of requirement of low memory and with less complexity. + * + * \par + * This set of functions implements Real Fast Fourier Transforms(RFFT) and Real Inverse Fast Fourier Transform(RIFFT) + * for Q15, Q31, and floating-point data types. + * + * + * \par Algorithm: + * + * Real Fast Fourier Transform: + * \par + * Real FFT of N-point is calculated using CFFT of N/2-point and Split RFFT process as shown below figure. + * \par + * \image html RFFT.gif "Real Fast Fourier Transform" + * \par + * The RFFT functions operate on blocks of input and output data and each call to the function processes + * fftLenR samples through the transform. pSrc points to input array containing fftLenR values. + * pDst points to output array containing 2*fftLenR values. \n + * Input for real FFT is in the order of + *
{real[0], real[1], real[2], real[3], ..}
+ * Output for real FFT is complex and are in the order of + *
{real(0), imag(0), real(1), imag(1), ...}
+ * + * Real Inverse Fast Fourier Transform: + * \par + * Real IFFT of N-point is calculated using Split RIFFT process and CFFT of N/2-point as shown below figure. + * \par + * \image html RIFFT.gif "Real Inverse Fast Fourier Transform" + * \par + * The RIFFT functions operate on blocks of input and output data and each call to the function processes + * 2*fftLenR samples through the transform. pSrc points to input array containing 2*fftLenR values. + * pDst points to output array containing fftLenR values. \n + * Input for real IFFT is complex and are in the order of + *
{real(0), imag(0), real(1), imag(1), ...}
+ * Output for real IFFT is real and in the order of + *
{real[0], real[1], real[2], real[3], ..}
+ * + * \par Lengths supported by the transform: + * \par + * Real FFT/IFFT supports the lengths [128, 512, 2048], as it internally uses CFFT/CIFFT. + * + * \par Instance Structure + * A separate instance structure must be defined for each Instance but the twiddle factors can be reused. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Initializes twiddle factor tables. + * - Initializes CFFT data structure fields. + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * Manually initialize the instance structure as follows: + *
   
+ *arm_rfft_instance_f32 S = {fftLenReal, fftLenBy2, ifftFlagR, bitReverseFlagR, twidCoefRModifier, pTwiddleAReal, pTwiddleBReal, pCfft};   
+ *arm_rfft_instance_q31 S = {fftLenReal, fftLenBy2, ifftFlagR, bitReverseFlagR, twidCoefRModifier, pTwiddleAReal, pTwiddleBReal, pCfft};   
+ *arm_rfft_instance_q15 S = {fftLenReal, fftLenBy2, ifftFlagR, bitReverseFlagR, twidCoefRModifier, pTwiddleAReal, pTwiddleBReal, pCfft};   
+ * 
+ * where fftLenReal length of RFFT/RIFFT; fftLenBy2 length of CFFT/CIFFT. + * ifftFlagR Flag for selection of RFFT or RIFFT(Set ifftFlagR to calculate RIFFT otherwise calculates RFFT); + * bitReverseFlagR Flag for selection of output order(Set bitReverseFlagR to output in normal order otherwise output in bit reversed order); + * twidCoefRModifier modifier for twiddle factor table which supports 128, 512, 2048 RFFT lengths with same table; + * pTwiddleARealpoints to A array of twiddle coefficients; pTwiddleBRealpoints to B array of twiddle coefficients; + * pCfft points to the CFFT Instance structure. The CFFT structure also needs to be initialized, refer to arm_cfft_radix4_f32() for details regarding + * static initialization of cfft structure. + * + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the RFFT/RIFFT function. + * Refer to the function specific documentation below for usage guidelines. + */ + +/*-------------------------------------------------------------------- + * Internal functions prototypes + *--------------------------------------------------------------------*/ + +void arm_split_rfft_f32( + float32_t * pSrc, + uint32_t fftLen, + float32_t * pATable, + float32_t * pBTable, + float32_t * pDst, + uint32_t modifier); +void arm_split_rifft_f32( + float32_t * pSrc, + uint32_t fftLen, + float32_t * pATable, + float32_t * pBTable, + float32_t * pDst, + uint32_t modifier); + +/** + * @addtogroup RFFT_RIFFT + * @{ + */ + +/** + * @brief Processing function for the floating-point RFFT/RIFFT. + * @param[in] *S points to an instance of the floating-point RFFT/RIFFT structure. + * @param[in] *pSrc points to the input buffer. + * @param[out] *pDst points to the output buffer. + * @return none. + */ + +void arm_rfft_f32( + const arm_rfft_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst) +{ + const arm_cfft_radix4_instance_f32 *S_CFFT = S->pCfft; + + + /* Calculation of Real IFFT of input */ + if(S->ifftFlagR == 1u) + { + /* Real IFFT core process */ + arm_split_rifft_f32(pSrc, S->fftLenBy2, S->pTwiddleAReal, + S->pTwiddleBReal, pDst, S->twidCoefRModifier); + + + /* Complex radix-4 IFFT process */ + arm_radix4_butterfly_inverse_f32(pDst, S_CFFT->fftLen, + S_CFFT->pTwiddle, + S_CFFT->twidCoefModifier, + S_CFFT->onebyfftLen); + + /* Bit reversal process */ + if(S->bitReverseFlagR == 1u) + { + arm_bitreversal_f32(pDst, S_CFFT->fftLen, + S_CFFT->bitRevFactor, S_CFFT->pBitRevTable); + } + } + else + { + + /* Calculation of RFFT of input */ + + /* Complex radix-4 FFT process */ + arm_radix4_butterfly_f32(pSrc, S_CFFT->fftLen, + S_CFFT->pTwiddle, S_CFFT->twidCoefModifier); + + /* Bit reversal process */ + if(S->bitReverseFlagR == 1u) + { + arm_bitreversal_f32(pSrc, S_CFFT->fftLen, + S_CFFT->bitRevFactor, S_CFFT->pBitRevTable); + } + + + /* Real FFT core process */ + arm_split_rfft_f32(pSrc, S->fftLenBy2, S->pTwiddleAReal, + S->pTwiddleBReal, pDst, S->twidCoefRModifier); + } + +} + +/** + * @} end of RFFT_RIFFT group + */ + +/** + * @brief Core Real FFT process + * @param[in] *pSrc points to the input buffer. + * @param[in] fftLen length of FFT. + * @param[in] *pATable points to the twiddle Coef A buffer. + * @param[in] *pBTable points to the twiddle Coef B buffer. + * @param[out] *pDst points to the output buffer. + * @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + +void arm_split_rfft_f32( + float32_t * pSrc, + uint32_t fftLen, + float32_t * pATable, + float32_t * pBTable, + float32_t * pDst, + uint32_t modifier) +{ + uint32_t i; /* Loop Counter */ + float32_t outR, outI; /* Temporary variables for output */ + float32_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ + float32_t CoefA1, CoefA2, CoefB1; /* Temporary variables for twiddle coefficients */ + float32_t *pDst1 = &pDst[2], *pDst2 = &pDst[(4u * fftLen) - 1u]; /* temp pointers for output buffer */ + float32_t *pSrc1 = &pSrc[2], *pSrc2 = &pSrc[(2u * fftLen) - 1u]; /* temp pointers for input buffer */ + + + pSrc[2u * fftLen] = pSrc[0]; + pSrc[(2u * fftLen) + 1u] = pSrc[1]; + + /* Init coefficient pointers */ + pCoefA = &pATable[modifier * 2u]; + pCoefB = &pBTable[modifier * 2u]; + + i = fftLen - 1u; + + while(i > 0u) + { + /* + outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] + + pSrc[2 * n - 2 * i] * pBTable[2 * i] + + pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); + */ + + /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] + + pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); */ + + /* read pATable[2 * i] */ + CoefA1 = *pCoefA++; + /* pATable[2 * i + 1] */ + CoefA2 = *pCoefA; + + /* pSrc[2 * i] * pATable[2 * i] */ + outR = *pSrc1 * CoefA1; + /* pSrc[2 * i] * CoefA2 */ + outI = *pSrc1++ * CoefA2; + + /* (pSrc[2 * i + 1] + pSrc[2 * fftLen - 2 * i + 1]) * CoefA2 */ + outR -= (*pSrc1 + *pSrc2) * CoefA2; + /* pSrc[2 * i + 1] * CoefA1 */ + outI += *pSrc1++ * CoefA1; + + CoefB1 = *pCoefB; + + /* pSrc[2 * fftLen - 2 * i + 1] * CoefB1 */ + outI -= *pSrc2-- * CoefB1; + /* pSrc[2 * fftLen - 2 * i] * CoefA2 */ + outI -= *pSrc2 * CoefA2; + + /* pSrc[2 * fftLen - 2 * i] * CoefB1 */ + outR += *pSrc2-- * CoefB1; + + /* write output */ + *pDst1++ = outR; + *pDst1++ = outI; + + /* write complex conjugate output */ + *pDst2-- = -outI; + *pDst2-- = outR; + + /* update coefficient pointer */ + pCoefB = pCoefB + (modifier * 2u); + pCoefA = pCoefA + ((modifier * 2u) - 1u); + + i--; + + } + + pDst[2u * fftLen] = pSrc[0] - pSrc[1]; + pDst[(2u * fftLen) + 1u] = 0.0f; + + pDst[0] = pSrc[0] + pSrc[1]; + pDst[1] = 0.0f; + +} + + +/** + * @brief Core Real IFFT process + * @param[in] *pSrc points to the input buffer. + * @param[in] fftLen length of FFT. + * @param[in] *pATable points to the twiddle Coef A buffer. + * @param[in] *pBTable points to the twiddle Coef B buffer. + * @param[out] *pDst points to the output buffer. + * @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + +void arm_split_rifft_f32( + float32_t * pSrc, + uint32_t fftLen, + float32_t * pATable, + float32_t * pBTable, + float32_t * pDst, + uint32_t modifier) +{ + float32_t outR, outI; /* Temporary variables for output */ + float32_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ + float32_t CoefA1, CoefA2, CoefB1; /* Temporary variables for twiddle coefficients */ + float32_t *pSrc1 = &pSrc[0], *pSrc2 = &pSrc[(2u * fftLen) + 1u]; + + pCoefA = &pATable[0]; + pCoefB = &pBTable[0]; + + while(fftLen > 0u) + { + /* + outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] + + pIn[2 * n - 2 * i] * pBTable[2 * i] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); + + outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] - + pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); + + */ + + CoefA1 = *pCoefA++; + CoefA2 = *pCoefA; + + /* outR = (pSrc[2 * i] * CoefA1 */ + outR = *pSrc1 * CoefA1; + + /* - pSrc[2 * i] * CoefA2 */ + outI = -(*pSrc1++) * CoefA2; + + /* (pSrc[2 * i + 1] + pSrc[2 * fftLen - 2 * i + 1]) * CoefA2 */ + outR += (*pSrc1 + *pSrc2) * CoefA2; + + /* pSrc[2 * i + 1] * CoefA1 */ + outI += (*pSrc1++) * CoefA1; + + CoefB1 = *pCoefB; + + /* - pSrc[2 * fftLen - 2 * i + 1] * CoefB1 */ + outI -= *pSrc2-- * CoefB1; + + /* pSrc[2 * fftLen - 2 * i] * CoefB1 */ + outR += *pSrc2 * CoefB1; + + /* pSrc[2 * fftLen - 2 * i] * CoefA2 */ + outI += *pSrc2-- * CoefA2; + + /* write output */ + *pDst++ = outR; + *pDst++ = outI; + + /* update coefficient pointer */ + pCoefB = pCoefB + (modifier * 2u); + pCoefA = pCoefA + ((modifier * 2u) - 1u); + + /* Decrement loop count */ + fftLen--; + } + +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_f32.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_f32.c new file mode 100644 index 000000000..de0a47abc --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_f32.c @@ -0,0 +1,1707 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_rfft_init_f32.c +* +* Description: RFFT & RIFFT Floating point initialisation function +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + + +#include "arm_math.h" + +/** + * @ingroup groupTransforms + */ + +/** + * @addtogroup RFFT_RIFFT + * @{ + */ + +/** +* \par +* Generation of realCoefA array: +* \par +* n = 1024 +*
for (i = 0; i < n; i++)   
+*  {   
+*    pATable[2 * i] = 0.5 * (1.0 - sin (2 * PI / (double) (2 * n) * (double) i));   
+*    pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));   
+*  } 
+*/ + + + +static const float32_t realCoefA[2048] = { + 0.500000000000000000f, -0.500000000000000000f, 0.498466014862060550f, + -0.499997645616531370f, 0.496932059526443480f, -0.499990582466125490f, + 0.495398133993148800f, -0.499978810548782350f, + 0.493864238262176510f, -0.499962359666824340f, 0.492330402135849000f, + -0.499941170215606690f, 0.490796625614166260f, -0.499915301799774170f, + 0.489262968301773070f, -0.499884694814682010f, + 0.487729400396347050f, -0.499849408864974980f, 0.486195921897888180f, + -0.499809414148330690f, 0.484662592411041260f, -0.499764710664749150f, + 0.483129411935806270f, -0.499715298414230350f, + 0.481596380472183230f, -0.499661177396774290f, 0.480063527822494510f, + -0.499602377414703370f, 0.478530883789062500f, -0.499538868665695190f, + 0.476998418569564820f, -0.499470651149749760f, + 0.475466161966323850f, -0.499397724866867070f, 0.473934143781661990f, + -0.499320119619369510f, 0.472402364015579220f, -0.499237775802612300f, + 0.470870882272720340f, -0.499150782823562620f, + 0.469339638948440550f, -0.499059051275253300f, 0.467808693647384640f, + -0.498962640762329100f, 0.466278046369552610f, -0.498861521482467650f, + 0.464747726917266850f, -0.498755723237991330f, + 0.463217705488204960f, -0.498645216226577760f, 0.461688071489334110f, + -0.498530030250549320f, 0.460158795118331910f, -0.498410135507583620f, + 0.458629876375198360f, -0.498285561800003050f, + 0.457101345062255860f, -0.498156309127807620f, 0.455573230981826780f, + -0.498022347688674930f, 0.454045534133911130f, -0.497883707284927370f, + 0.452518254518508910f, -0.497740387916564940f, + 0.450991421937942500f, -0.497592359781265260f, 0.449465066194534300f, + -0.497439652681350710f, 0.447939187288284300f, -0.497282296419143680f, + 0.446413785219192500f, -0.497120231389999390f, + 0.444888889789581300f, -0.496953487396240230f, 0.443364530801773070f, + -0.496782064437866210f, 0.441840678453445430f, -0.496605962514877320f, + 0.440317392349243160f, -0.496425211429595950f, + 0.438794672489166260f, -0.496239781379699710f, 0.437272518873214720f, + -0.496049642562866210f, 0.435750931501388550f, -0.495854884386062620f, + 0.434229999780654910f, -0.495655417442321780f, + 0.432709634304046630f, -0.495451331138610840f, 0.431189924478530880f, + -0.495242536067962650f, 0.429670870304107670f, -0.495029091835021970f, + 0.428152471780776980f, -0.494810998439788820f, + 0.426634758710861210f, -0.494588255882263180f, 0.425117731094360350f, + -0.494360834360122680f, 0.423601418733596800f, -0.494128793478012080f, + 0.422085791826248170f, -0.493892073631286620f, + 0.420570939779281620f, -0.493650704622268680f, 0.419056802988052370f, + -0.493404686450958250f, 0.417543441057205200f, -0.493154048919677730f, + 0.416030853986740110f, -0.492898762226104740f, + 0.414519041776657100f, -0.492638826370239260f, 0.413008064031600950f, + -0.492374241352081300f, 0.411497890949249270f, -0.492105036973953250f, + 0.409988552331924440f, -0.491831213235855100f, + 0.408480048179626460f, -0.491552740335464480f, 0.406972438097000120f, + -0.491269648075103760f, 0.405465662479400630f, -0.490981936454772950f, + 0.403959810733795170f, -0.490689605474472050f, + 0.402454853057861330f, -0.490392625331878660f, 0.400950789451599120f, + -0.490091055631637570f, 0.399447679519653320f, -0.489784896373748780f, + 0.397945523262023930f, -0.489474087953567500f, + 0.396444320678710940f, -0.489158689975738530f, 0.394944071769714360f, + -0.488838672637939450f, 0.393444836139678960f, -0.488514065742492680f, + 0.391946613788604740f, -0.488184869289398190f, + 0.390449374914169310f, -0.487851053476333620f, 0.388953179121017460f, + -0.487512677907943730f, 0.387458056211471560f, -0.487169682979583740f, + 0.385963946580886840f, -0.486822128295898440f, + 0.384470939636230470f, -0.486469984054565430f, 0.382979035377502440f, + -0.486113250255584720f, 0.381488204002380370f, -0.485751956701278690f, + 0.379998475313186650f, -0.485386073589324950f, + 0.378509908914566040f, -0.485015630722045900f, 0.377022475004196170f, + -0.484640628099441530f, 0.375536203384399410f, -0.484261035919189450f, + 0.374051094055175780f, -0.483876913785934450f, + 0.372567176818847660f, -0.483488231897354130f, 0.371084451675415040f, + -0.483094990253448490f, 0.369602948427200320f, -0.482697218656539920f, + 0.368122667074203490f, -0.482294887304306030f, + 0.366643607616424560f, -0.481888025999069210f, 0.365165829658508300f, + -0.481476634740829470f, 0.363689333200454710f, -0.481060713529586790f, + 0.362214088439941410f, -0.480640232563018800f, + 0.360740154981613160f, -0.480215251445770260f, 0.359267532825469970f, + -0.479785770177841190f, 0.357796221971511840f, -0.479351729154586790f, + 0.356326282024383540f, -0.478913217782974240f, + 0.354857653379440310f, -0.478470176458358760f, 0.353390425443649290f, + -0.478022634983062740f, 0.351924568414688110f, -0.477570593357086180f, + 0.350460082292556760f, -0.477114051580429080f, + 0.348997026681900020f, -0.476653009653091430f, 0.347535371780395510f, + -0.476187497377395630f, 0.346075177192687990f, -0.475717514753341670f, + 0.344616413116455080f, -0.475243031978607180f, + 0.343159139156341550f, -0.474764078855514530f, 0.341703325510025020f, + -0.474280685186386110f, 0.340248972177505490f, -0.473792791366577150f, + 0.338796168565750120f, -0.473300457000732420f, + 0.337344855070114140f, -0.472803652286529540f, 0.335895091295242310f, + -0.472302407026290890f, 0.334446847438812260f, -0.471796721220016480f, + 0.333000183105468750f, -0.471286594867706300f, + 0.331555068492889400f, -0.470772027969360350f, 0.330111563205718990f, + -0.470253020524978640f, 0.328669637441635130f, -0.469729602336883540f, + 0.327229350805282590f, -0.469201773405075070f, + 0.325790673494338990f, -0.468669503927230830f, 0.324353635311126710f, + -0.468132823705673220f, 0.322918236255645750f, -0.467591762542724610f, + 0.321484506130218510f, -0.467046260833740230f, + 0.320052474737167360f, -0.466496407985687260f, 0.318622142076492310f, + -0.465942144393920900f, 0.317193508148193360f, -0.465383470058441160f, + 0.315766572952270510f, -0.464820444583892820f, + 0.314341396093368530f, -0.464253038167953490f, 0.312917977571487430f, + -0.463681250810623170f, 0.311496287584304810f, -0.463105112314224240f, + 0.310076385736465450f, -0.462524622678756710f, + 0.308658272027969360f, -0.461939752101898190f, 0.307241976261138920f, + -0.461350560188293460f, 0.305827468633651730f, -0.460757017135620120f, + 0.304414808750152590f, -0.460159152746200560f, + 0.303003966808319090f, -0.459556937217712400f, 0.301595002412796020f, + -0.458950400352478030f, 0.300187885761260990f, -0.458339542150497440f, + 0.298782676458358760f, -0.457724362611770630f, + 0.297379344701766970f, -0.457104891538620000f, 0.295977920293807980f, + -0.456481099128723140f, 0.294578403234481810f, -0.455853015184402470f, + 0.293180853128433230f, -0.455220639705657960f, + 0.291785210371017460f, -0.454584002494812010f, 0.290391564369201660f, + -0.453943043947219850f, 0.288999855518341060f, -0.453297853469848630f, + 0.287610173225402830f, -0.452648371458053590f, + 0.286222457885742190f, -0.451994657516479490f, 0.284836769104003910f, + -0.451336652040481570f, 0.283453077077865600f, -0.450674414634704590f, + 0.282071471214294430f, -0.450007945299148560f, + 0.280691891908645630f, -0.449337244033813480f, 0.279314368963241580f, + -0.448662281036376950f, 0.277938932180404660f, -0.447983115911483760f, + 0.276565581560134890f, -0.447299748659133910f, + 0.275194346904754640f, -0.446612149477005000f, 0.273825198411941530f, + -0.445920348167419430f, 0.272458195686340330f, -0.445224374532699580f, + 0.271093338727951050f, -0.444524168968200680f, + 0.269730657339096070f, -0.443819820880889890f, 0.268370121717453000f, + -0.443111270666122440f, 0.267011761665344240f, -0.442398548126220700f, + 0.265655577182769780f, -0.441681683063507080f, + 0.264301627874374390f, -0.440960645675659180f, 0.262949883937835690f, + -0.440235435962677000f, 0.261600375175476070f, -0.439506113529205320f, + 0.260253131389617920f, -0.438772648572921750f, + 0.258908122777938840f, -0.438035041093826290f, 0.257565379142761230f, + -0.437293320894241330f, 0.256224930286407470f, -0.436547487974166870f, + 0.254886746406555180f, -0.435797542333602910f, + 0.253550916910171510f, -0.435043483972549440f, 0.252217382192611690f, + -0.434285342693328860f, 0.250886172056198120f, -0.433523118495941160f, + 0.249557301402091980f, -0.432756811380386350f, + 0.248230814933776860f, -0.431986421346664430f, 0.246906682848930360f, + -0.431211978197097780f, 0.245584934949874880f, -0.430433481931686400f, + 0.244265571236610410f, -0.429650902748107910f, + 0.242948621511459350f, -0.428864300251007080f, 0.241634100675582890f, + -0.428073674440383910f, 0.240322008728981020f, -0.427278995513916020f, + 0.239012360572814940f, -0.426480293273925780f, + 0.237705156207084660f, -0.425677597522735600f, 0.236400425434112550f, + -0.424870878458023070f, 0.235098183155059810f, -0.424060165882110600f, + 0.233798429369926450f, -0.423245459794998170f, + 0.232501193881034850f, -0.422426789999008180f, 0.231206461787223820f, + -0.421604126691818240f, 0.229914262890815730f, -0.420777499675750730f, + 0.228624612092971800f, -0.419946908950805660f, + 0.227337509393692020f, -0.419112354516983030f, 0.226052969694137570f, + -0.418273866176605220f, 0.224771007895469670f, -0.417431443929672240f, + 0.223491653800010680f, -0.416585087776184080f, + 0.222214877605438230f, -0.415734797716140750f, 0.220940738916397090f, + -0.414880603551864620f, 0.219669207930564880f, -0.414022535085678100f, + 0.218400329351425170f, -0.413160532712936400f, + 0.217134088277816770f, -0.412294656038284300f, 0.215870529413223270f, + -0.411424905061721800f, 0.214609622955322270f, -0.410551249980926510f, + 0.213351413607597350f, -0.409673750400543210f, + 0.212095901370048520f, -0.408792406320571900f, 0.210843101143836980f, + -0.407907217741012570f, 0.209593027830123900f, -0.407018154859542850f, + 0.208345666527748110f, -0.406125307083129880f, + 0.207101076841354370f, -0.405228585004806520f, 0.205859228968620300f, + -0.404328078031539920f, 0.204620152711868290f, -0.403423786163330080f, + 0.203383848071098330f, -0.402515679597854610f, + 0.202150344848632810f, -0.401603758335113530f, 0.200919643044471740f, + -0.400688081979751590f, 0.199691757559776310f, -0.399768620729446410f, + 0.198466703295707700f, -0.398845434188842770f, + 0.197244480252265930f, -0.397918462753295900f, 0.196025103330612180f, + -0.396987736225128170f, 0.194808602333068850f, -0.396053284406661990f, + 0.193594962358474730f, -0.395115107297897340f, + 0.192384198307991030f, -0.394173204898834230f, 0.191176339983940120f, + -0.393227607011795040f, 0.189971387386322020f, -0.392278283834457400f, + 0.188769355416297910f, -0.391325294971466060f, + 0.187570258975028990f, -0.390368610620498660f, 0.186374098062515260f, + -0.389408260583877560f, 0.185180887579917910f, -0.388444244861602780f, + 0.183990627527236940f, -0.387476563453674320f, + 0.182803362607955930f, -0.386505216360092160f, 0.181619063019752500f, + -0.385530263185501100f, 0.180437773466110230f, -0.384551674127578740f, + 0.179259493947029110f, -0.383569449186325070f, + 0.178084224462509160f, -0.382583618164062500f, 0.176911994814872740f, + -0.381594210863113400f, 0.175742805004119870f, -0.380601197481155400f, + 0.174576655030250550f, -0.379604607820510860f, + 0.173413574695587160f, -0.378604412078857420f, 0.172253578901290890f, + -0.377600699663162230f, 0.171096652746200560f, -0.376593410968780520f, + 0.169942826032638550f, -0.375582575798034670f, + 0.168792113661766050f, -0.374568194150924680f, 0.167644515633583070f, + -0.373550295829772950f, 0.166500031948089600f, -0.372528880834579470f, + 0.165358707308769230f, -0.371503978967666630f, + 0.164220526814460750f, -0.370475560426712040f, 0.163085505366325380f, + -0.369443655014038090f, 0.161953642964363100f, -0.368408292531967160f, + 0.160824984312057500f, -0.367369443178176880f, + 0.159699499607086180f, -0.366327136754989620f, 0.158577233552932740f, + -0.365281373262405400f, 0.157458171248435970f, -0.364232182502746580f, + 0.156342327594757080f, -0.363179564476013180f, + 0.155229732394218440f, -0.362123548984527590f, 0.154120370745658870f, + -0.361064106225967410f, 0.153014272451400760f, -0.360001266002655030f, + 0.151911437511444090f, -0.358935028314590450f, + 0.150811880826950070f, -0.357865422964096070f, 0.149715602397918700f, + -0.356792420148849490f, 0.148622632026672360f, -0.355716109275817870f, + 0.147532954812049870f, -0.354636400938034060f, + 0.146446615457534790f, -0.353553384542465210f, 0.145363584160804750f, + -0.352467030286788940f, 0.144283905625343320f, -0.351377367973327640f, + 0.143207564949989320f, -0.350284397602081300f, + 0.142134591937065120f, -0.349188119173049930f, 0.141064971685409550f, + -0.348088562488555910f, 0.139998748898506160f, -0.346985727548599240f, + 0.138935908675193790f, -0.345879614353179930f, + 0.137876465916633610f, -0.344770282506942750f, 0.136820420622825620f, + -0.343657672405242920f, 0.135767802596092220f, -0.342541843652725220f, + 0.134718611836433410f, -0.341422766447067260f, + 0.133672863245010380f, -0.340300500392913820f, 0.132630556821823120f, + -0.339175015687942500f, 0.131591722369194030f, -0.338046342134475710f, + 0.130556344985961910f, -0.336914509534835820f, + 0.129524439573287960f, -0.335779488086700440f, 0.128496021032333370f, + -0.334641307592391970f, 0.127471104264259340f, -0.333499968051910400f, + 0.126449704170227050f, -0.332355499267578130f, + 0.125431805849075320f, -0.331207901239395140f, 0.124417431652545930f, + -0.330057173967361450f, 0.123406603932380680f, -0.328903347253799440f, + 0.122399315237998960f, -0.327746421098709110f, + 0.121395580470561980f, -0.326586425304412840f, 0.120395407080650330f, + -0.325423330068588260f, 0.119398809969425200f, -0.324257194995880130f, + 0.118405789136886600f, -0.323088020086288450f, + 0.117416366934776310f, -0.321915775537490840f, 0.116430543363094330f, + -0.320740520954132080f, 0.115448333323001860f, -0.319562226533889770f, + 0.114469736814498900f, -0.318380922079086300f, + 0.113494776189327240f, -0.317196637392044070f, 0.112523443996906280f, + -0.316009372472763060f, 0.111555770039558410f, -0.314819127321243290f, + 0.110591746866703030f, -0.313625901937484740f, + 0.109631389379501340f, -0.312429755926132200f, 0.108674705028533940f, + -0.311230629682540890f, 0.107721701264381410f, -0.310028612613677980f, + 0.106772392988204960f, -0.308823645114898680f, + 0.105826787650585170f, -0.307615786790847780f, 0.104884892702102660f, + -0.306405037641525270f, 0.103946708142757420f, -0.305191397666931150f, + 0.103012263774871830f, -0.303974896669387820f, + 0.102081544697284700f, -0.302755534648895260f, 0.101154580712318420f, + -0.301533311605453490f, 0.100231364369392400f, -0.300308227539062500f, + 0.099311910569667816f, -0.299080342054367070f, + 0.098396234214305878f, -0.297849655151367190f, 0.097484335303306580f, + -0.296616137027740480f, 0.096576221287250519f, -0.295379847288131710f, + 0.095671907067298889f, -0.294140785932540890f, + 0.094771400094032288f, -0.292898923158645630f, 0.093874707818031311f, + -0.291654318571090700f, 0.092981837689876556f, -0.290406972169876100f, + 0.092092797160148621f, -0.289156883955001830f, + 0.091207593679428101f, -0.287904083728790280f, 0.090326242148876190f, + -0.286648571491241460f, 0.089448742568492889f, -0.285390377044677730f, + 0.088575109839439392f, -0.284129470586776730f, + 0.087705351412296295f, -0.282865911722183230f, 0.086839467287063599f, + -0.281599670648574830f, 0.085977479815483093f, -0.280330777168273930f, + 0.085119381546974182f, -0.279059261083602910f, + 0.084265194833278656f, -0.277785122394561770f, 0.083414919674396515f, + -0.276508361101150510f, 0.082568563520908356f, -0.275228977203369140f, + 0.081726133823394775f, -0.273947030305862430f, + 0.080887645483016968f, -0.272662490606307980f, 0.080053105950355530f, + -0.271375387907028200f, 0.079222507774829865f, -0.270085722208023070f, + 0.078395880758762360f, -0.268793523311614990f, + 0.077573217451572418f, -0.267498821020126340f, 0.076754532754421234f, + -0.266201555728912350f, 0.075939826667308807f, -0.264901816844940190f, + 0.075129114091396332f, -0.263599574565887450f, + 0.074322402477264404f, -0.262294828891754150f, 0.073519699275493622f, + -0.260987639427185060f, 0.072721004486083984f, -0.259678006172180180f, + 0.071926333010196686f, -0.258365899324417110f, + 0.071135692298412323f, -0.257051378488540650f, 0.070349089801311493f, + -0.255734413862228390f, 0.069566532969474792f, -0.254415065050125120f, + 0.068788021802902222f, -0.253093332052230830f, + 0.068013571202754974f, -0.251769185066223140f, 0.067243188619613647f, + -0.250442683696746830f, 0.066476874053478241f, -0.249113827943801880f, + 0.065714649856090546f, -0.247782632708549500f, + 0.064956501126289368f, -0.246449097990989690f, 0.064202457666397095f, + -0.245113238692283630f, 0.063452512025833130f, -0.243775084614753720f, + 0.062706671655178070f, -0.242434620857238770f, + 0.061964951455593109f, -0.241091892123222350f, 0.061227355152368546f, + -0.239746883511543270f, 0.060493886470794678f, -0.238399609923362730f, + 0.059764556586742401f, -0.237050101161003110f, + 0.059039369225502014f, -0.235698372125625610f, 0.058318331837654114f, + -0.234344407916069030f, 0.057601451873779297f, -0.232988253235816960f, + 0.056888736784458160f, -0.231629893183708190f, + 0.056180190294981003f, -0.230269357562065120f, 0.055475823581218719f, + -0.228906646370887760f, 0.054775636643171310f, -0.227541789412498470f, + 0.054079644381999969f, -0.226174786686897280f, + 0.053387850522994995f, -0.224805667996406560f, 0.052700258791446686f, + -0.223434418439865110f, 0.052016876637935638f, -0.222061067819595340f, + 0.051337707787752151f, -0.220685631036758420f, + 0.050662767142057419f, -0.219308122992515560f, 0.049992054700851440f, + -0.217928543686866760f, 0.049325577914714813f, -0.216546908020973210f, + 0.048663340508937836f, -0.215163245797157290f, + 0.048005353659391403f, -0.213777542114257810f, 0.047351621091365814f, + -0.212389841675758360f, 0.046702146530151367f, -0.211000129580497740f, + 0.046056941151618958f, -0.209608450531959530f, + 0.045416008681058884f, -0.208214774727821350f, 0.044779352843761444f, + -0.206819161772727970f, 0.044146984815597534f, -0.205421581864356990f, + 0.043518904596567154f, -0.204022079706192020f, + 0.042895123362541199f, -0.202620655298233030f, 0.042275641113519669f, + -0.201217323541641240f, 0.041660469025373459f, -0.199812099337577820f, + 0.041049610823392868f, -0.198404997587203980f, + 0.040443073958158493f, -0.196996018290519710f, 0.039840862154960632f, + -0.195585191249847410f, 0.039242979139089584f, -0.194172516465187070f, + 0.038649436086416245f, -0.192758023738861080f, + 0.038060232996940613f, -0.191341713070869450f, 0.037475381046533585f, + -0.189923599362373350f, 0.036894880235195160f, -0.188503712415695190f, + 0.036318738013505936f, -0.187082037329673770f, + 0.035746958106756210f, -0.185658603906631470f, 0.035179551690816879f, + -0.184233412146568300f, 0.034616518765687943f, -0.182806491851806640f, + 0.034057866781949997f, -0.181377857923507690f, + 0.033503599464893341f, -0.179947525262832640f, 0.032953724265098572f, + -0.178515478968620300f, 0.032408244907855988f, -0.177081763744354250f, + 0.031867165118455887f, -0.175646379590034480f, + 0.031330492347478867f, -0.174209341406822200f, 0.030798232182860374f, + -0.172770664095878600f, 0.030270388349890709f, -0.171330362558364870f, + 0.029746964573860168f, -0.169888436794281010f, + 0.029227968305349350f, -0.168444931507110600f, 0.028713401407003403f, + -0.166999831795692440f, 0.028203271329402924f, -0.165553152561187740f, + 0.027697581797838211f, -0.164104923605918880f, + 0.027196336537599564f, -0.162655144929885860f, 0.026699542999267578f, + -0.161203846335411070f, 0.026207204908132553f, -0.159751012921333310f, + 0.025719324126839638f, -0.158296689391136170f, + 0.025235909968614578f, -0.156840875744819640f, 0.024756962433457375f, + -0.155383571982383730f, 0.024282488971948624f, -0.153924822807312010f, + 0.023812493309378624f, -0.152464613318443300f, + 0.023346979171037674f, -0.151002973318099980f, 0.022885952144861221f, + -0.149539917707443240f, 0.022429415956139565f, -0.148075446486473080f, + 0.021977374330163002f, -0.146609574556350710f, + 0.021529832854866982f, -0.145142331719398500f, 0.021086793392896652f, + -0.143673732876777650f, 0.020648263394832611f, -0.142203763127326970f, + 0.020214242860674858f, -0.140732467174530030f, + 0.019784741103649139f, -0.139259845018386840f, 0.019359756261110306f, + -0.137785911560058590f, 0.018939297646284103f, -0.136310681700706480f, + 0.018523367121815681f, -0.134834155440330510f, + 0.018111966550350189f, -0.133356377482414250f, 0.017705103382468224f, + -0.131877332925796510f, 0.017302779480814934f, -0.130397051572799680f, + 0.016904998570680618f, -0.128915548324584960f, + 0.016511764377355576f, -0.127432823181152340f, 0.016123080626130104f, + -0.125948905944824220f, 0.015738952904939651f, -0.124463804066181180f, + 0.015359382145106792f, -0.122977524995803830f, + 0.014984373003244400f, -0.121490091085433960f, 0.014613929204642773f, + -0.120001509785652160f, 0.014248054474592209f, -0.118511803448200230f, + 0.013886751607060432f, -0.117020979523658750f, + 0.013530024327337742f, -0.115529052913188930f, 0.013177875429391861f, + -0.114036038517951970f, 0.012830308638513088f, -0.112541958689689640f, + 0.012487327679991722f, -0.111046813428401950f, + 0.012148935347795486f, -0.109550617635250090f, 0.011815134435892105f, + -0.108053401112556460f, 0.011485928669571877f, -0.106555156409740450f, + 0.011161320842802525f, -0.105055920779705050f, + 0.010841314680874348f, -0.103555686771869660f, 0.010525912046432495f, + -0.102054484188556670f, 0.010215117596089840f, -0.100552320480346680f, + 0.009908932261168957f, -0.099049203097820282f, + 0.009607359766960144f, -0.097545161843299866f, 0.009310402907431126f, + -0.096040196716785431f, 0.009018065407872200f, -0.094534330070018768f, + 0.008730349130928516f, -0.093027576804161072f, + 0.008447255939245224f, -0.091519944369792938f, 0.008168790489435196f, + -0.090011447668075562f, 0.007894953712821007f, -0.088502109050750732f, + 0.007625748869031668f, -0.086991935968399048f, + 0.007361178752034903f, -0.085480943322181702f, 0.007101245224475861f, + -0.083969146013259888f, 0.006845951545983553f, -0.082456558942794800f, + 0.006595299113541842f, -0.080943197011947632f, + 0.006349290721118450f, -0.079429075121879578f, 0.006107929162681103f, + -0.077914200723171234f, 0.005871216300874949f, -0.076398596167564392f, + 0.005639153998345137f, -0.074882268905639648f, + 0.005411745049059391f, -0.073365233838558197f, 0.005188991315662861f, + -0.071847513318061829f, 0.004970894660800695f, -0.070329122245311737f, + 0.004757457878440619f, -0.068810060620307922f, + 0.004548682365566492f, -0.067290350794792175f, 0.004344569984823465f, + -0.065770015120506287f, 0.004145123064517975f, -0.064249053597450256f, + 0.003950343467295170f, -0.062727488577365875f, + 0.003760232590138912f, -0.061205338686704636f, 0.003574792761355639f, + -0.059682607650756836f, 0.003394025377929211f, -0.058159314095973969f, + 0.003217932302504778f, -0.056635476648807526f, + 0.003046514932066202f, -0.055111102759838104f, 0.002879775362089276f, + -0.053586211055517197f, 0.002717714523896575f, -0.052060816437005997f, + 0.002560334512963891f, -0.050534930080175400f, + 0.002407636726275086f, -0.049008570611476898f, 0.002259622327983379f, + -0.047481749206781387f, 0.002116292715072632f, -0.045954477041959763f, + 0.001977649517357349f, -0.044426776468753815f, + 0.001843693898990750f, -0.042898654937744141f, 0.001714427140541375f, + -0.041370131075382233f, 0.001589850406162441f, -0.039841219782829285f, + 0.001469964860007167f, -0.038311932235956192f, + 0.001354771666228771f, -0.036782283335924149f, 0.001244271872565150f, + -0.035252287983894348f, 0.001138466643169522f, -0.033721961081027985f, + 0.001037356909364462f, -0.032191313803195953f, + 0.000940943544264883f, -0.030660368502140045f, 0.000849227537401021f, + -0.029129132628440857f, 0.000762209703680128f, -0.027597622945904732f, + 0.000679890916217119f, -0.026065852493047714f, + 0.000602271873503923f, -0.024533838033676147f, 0.000529353390447795f, + -0.023001590743660927f, 0.000461136136436835f, -0.021469129249453545f, + 0.000397620693547651f, -0.019936462864279747f, + 0.000338807702064514f, -0.018403612077236176f, 0.000284697714960203f, + -0.016870586201548576f, 0.000235291256103665f, -0.015337402001023293f, + 0.000190588747500442f, -0.013804072514176369f, + 0.000150590654811822f, -0.012270614504814148f, 0.000115297327283770f, + -0.010737040080130100f, 0.000084709099610336f, -0.009203365072607994f, + 0.000058826273743762f, -0.007669602986425161f, + 0.000037649078876711f, -0.006135769188404083f, 0.000021177724192967f, + -0.004601877182722092f, 0.000009412358849659f, -0.003067942336201668f, + 0.000002353095169383f, -0.001533978385850787f, + 0.000000000000000000f, -0.000000000000023345f, 0.000002353095169383f, + 0.001533978385850787f, 0.000009412358849659f, 0.003067942336201668f, + 0.000021177724192967f, 0.004601877182722092f, + 0.000037649078876711f, 0.006135769188404083f, 0.000058826273743762f, + 0.007669602986425161f, 0.000084709099610336f, 0.009203365072607994f, + 0.000115297327283770f, 0.010737040080130100f, + 0.000150590654811822f, 0.012270614504814148f, 0.000190588747500442f, + 0.013804072514176369f, 0.000235291256103665f, 0.015337402001023293f, + 0.000284697714960203f, 0.016870586201548576f, + 0.000338807702064514f, 0.018403612077236176f, 0.000397620693547651f, + 0.019936462864279747f, 0.000461136136436835f, 0.021469129249453545f, + 0.000529353390447795f, 0.023001590743660927f, + 0.000602271873503923f, 0.024533838033676147f, 0.000679890916217119f, + 0.026065852493047714f, 0.000762209703680128f, 0.027597622945904732f, + 0.000849227537401021f, 0.029129132628440857f, + 0.000940943544264883f, 0.030660368502140045f, 0.001037356909364462f, + 0.032191313803195953f, 0.001138466643169522f, 0.033721961081027985f, + 0.001244271872565150f, 0.035252287983894348f, + 0.001354771666228771f, 0.036782283335924149f, 0.001469964860007167f, + 0.038311932235956192f, 0.001589850406162441f, 0.039841219782829285f, + 0.001714427140541375f, 0.041370131075382233f, + 0.001843693898990750f, 0.042898654937744141f, 0.001977649517357349f, + 0.044426776468753815f, 0.002116292715072632f, 0.045954477041959763f, + 0.002259622327983379f, 0.047481749206781387f, + 0.002407636726275086f, 0.049008570611476898f, 0.002560334512963891f, + 0.050534930080175400f, 0.002717714523896575f, 0.052060816437005997f, + 0.002879775362089276f, 0.053586211055517197f, + 0.003046514932066202f, 0.055111102759838104f, 0.003217932302504778f, + 0.056635476648807526f, 0.003394025377929211f, 0.058159314095973969f, + 0.003574792761355639f, 0.059682607650756836f, + 0.003760232590138912f, 0.061205338686704636f, 0.003950343467295170f, + 0.062727488577365875f, 0.004145123064517975f, 0.064249053597450256f, + 0.004344569984823465f, 0.065770015120506287f, + 0.004548682365566492f, 0.067290350794792175f, 0.004757457878440619f, + 0.068810060620307922f, 0.004970894660800695f, 0.070329122245311737f, + 0.005188991315662861f, 0.071847513318061829f, + 0.005411745049059391f, 0.073365233838558197f, 0.005639153998345137f, + 0.074882268905639648f, 0.005871216300874949f, 0.076398596167564392f, + 0.006107929162681103f, 0.077914200723171234f, + 0.006349290721118450f, 0.079429075121879578f, 0.006595299113541842f, + 0.080943197011947632f, 0.006845951545983553f, 0.082456558942794800f, + 0.007101245224475861f, 0.083969146013259888f, + 0.007361178752034903f, 0.085480943322181702f, 0.007625748869031668f, + 0.086991935968399048f, 0.007894953712821007f, 0.088502109050750732f, + 0.008168790489435196f, 0.090011447668075562f, + 0.008447255939245224f, 0.091519944369792938f, 0.008730349130928516f, + 0.093027576804161072f, 0.009018065407872200f, 0.094534330070018768f, + 0.009310402907431126f, 0.096040196716785431f, + 0.009607359766960144f, 0.097545161843299866f, 0.009908932261168957f, + 0.099049203097820282f, 0.010215117596089840f, 0.100552320480346680f, + 0.010525912046432495f, 0.102054484188556670f, + 0.010841314680874348f, 0.103555686771869660f, 0.011161320842802525f, + 0.105055920779705050f, 0.011485928669571877f, 0.106555156409740450f, + 0.011815134435892105f, 0.108053401112556460f, + 0.012148935347795486f, 0.109550617635250090f, 0.012487327679991722f, + 0.111046813428401950f, 0.012830308638513088f, 0.112541958689689640f, + 0.013177875429391861f, 0.114036038517951970f, + 0.013530024327337742f, 0.115529052913188930f, 0.013886751607060432f, + 0.117020979523658750f, 0.014248054474592209f, 0.118511803448200230f, + 0.014613929204642773f, 0.120001509785652160f, + 0.014984373003244400f, 0.121490091085433960f, 0.015359382145106792f, + 0.122977524995803830f, 0.015738952904939651f, 0.124463804066181180f, + 0.016123080626130104f, 0.125948905944824220f, + 0.016511764377355576f, 0.127432823181152340f, 0.016904998570680618f, + 0.128915548324584960f, 0.017302779480814934f, 0.130397051572799680f, + 0.017705103382468224f, 0.131877332925796510f, + 0.018111966550350189f, 0.133356377482414250f, 0.018523367121815681f, + 0.134834155440330510f, 0.018939297646284103f, 0.136310681700706480f, + 0.019359756261110306f, 0.137785911560058590f, + 0.019784741103649139f, 0.139259845018386840f, 0.020214242860674858f, + 0.140732467174530030f, 0.020648263394832611f, 0.142203763127326970f, + 0.021086793392896652f, 0.143673732876777650f, + 0.021529832854866982f, 0.145142331719398500f, 0.021977374330163002f, + 0.146609574556350710f, 0.022429415956139565f, 0.148075446486473080f, + 0.022885952144861221f, 0.149539917707443240f, + 0.023346979171037674f, 0.151002973318099980f, 0.023812493309378624f, + 0.152464613318443300f, 0.024282488971948624f, 0.153924822807312010f, + 0.024756962433457375f, 0.155383571982383730f, + 0.025235909968614578f, 0.156840875744819640f, 0.025719324126839638f, + 0.158296689391136170f, 0.026207204908132553f, 0.159751012921333310f, + 0.026699542999267578f, 0.161203846335411070f, + 0.027196336537599564f, 0.162655144929885860f, 0.027697581797838211f, + 0.164104923605918880f, 0.028203271329402924f, 0.165553152561187740f, + 0.028713401407003403f, 0.166999831795692440f, + 0.029227968305349350f, 0.168444931507110600f, 0.029746964573860168f, + 0.169888436794281010f, 0.030270388349890709f, 0.171330362558364870f, + 0.030798232182860374f, 0.172770664095878600f, + 0.031330492347478867f, 0.174209341406822200f, 0.031867165118455887f, + 0.175646379590034480f, 0.032408244907855988f, 0.177081763744354250f, + 0.032953724265098572f, 0.178515478968620300f, + 0.033503599464893341f, 0.179947525262832640f, 0.034057866781949997f, + 0.181377857923507690f, 0.034616518765687943f, 0.182806491851806640f, + 0.035179551690816879f, 0.184233412146568300f, + 0.035746958106756210f, 0.185658603906631470f, 0.036318738013505936f, + 0.187082037329673770f, 0.036894880235195160f, 0.188503712415695190f, + 0.037475381046533585f, 0.189923599362373350f, + 0.038060232996940613f, 0.191341713070869450f, 0.038649436086416245f, + 0.192758023738861080f, 0.039242979139089584f, 0.194172516465187070f, + 0.039840862154960632f, 0.195585191249847410f, + 0.040443073958158493f, 0.196996018290519710f, 0.041049610823392868f, + 0.198404997587203980f, 0.041660469025373459f, 0.199812099337577820f, + 0.042275641113519669f, 0.201217323541641240f, + 0.042895123362541199f, 0.202620655298233030f, 0.043518904596567154f, + 0.204022079706192020f, 0.044146984815597534f, 0.205421581864356990f, + 0.044779352843761444f, 0.206819161772727970f, + 0.045416008681058884f, 0.208214774727821350f, 0.046056941151618958f, + 0.209608450531959530f, 0.046702146530151367f, 0.211000129580497740f, + 0.047351621091365814f, 0.212389841675758360f, + 0.048005353659391403f, 0.213777542114257810f, 0.048663340508937836f, + 0.215163245797157290f, 0.049325577914714813f, 0.216546908020973210f, + 0.049992054700851440f, 0.217928543686866760f, + 0.050662767142057419f, 0.219308122992515560f, 0.051337707787752151f, + 0.220685631036758420f, 0.052016876637935638f, 0.222061067819595340f, + 0.052700258791446686f, 0.223434418439865110f, + 0.053387850522994995f, 0.224805667996406560f, 0.054079644381999969f, + 0.226174786686897280f, 0.054775636643171310f, 0.227541789412498470f, + 0.055475823581218719f, 0.228906646370887760f, + 0.056180190294981003f, 0.230269357562065120f, 0.056888736784458160f, + 0.231629893183708190f, 0.057601451873779297f, 0.232988253235816960f, + 0.058318331837654114f, 0.234344407916069030f, + 0.059039369225502014f, 0.235698372125625610f, 0.059764556586742401f, + 0.237050101161003110f, 0.060493886470794678f, 0.238399609923362730f, + 0.061227355152368546f, 0.239746883511543270f, + 0.061964951455593109f, 0.241091892123222350f, 0.062706671655178070f, + 0.242434620857238770f, 0.063452512025833130f, 0.243775084614753720f, + 0.064202457666397095f, 0.245113238692283630f, + 0.064956501126289368f, 0.246449097990989690f, 0.065714649856090546f, + 0.247782632708549500f, 0.066476874053478241f, 0.249113827943801880f, + 0.067243188619613647f, 0.250442683696746830f, + 0.068013571202754974f, 0.251769185066223140f, 0.068788021802902222f, + 0.253093332052230830f, 0.069566532969474792f, 0.254415065050125120f, + 0.070349089801311493f, 0.255734413862228390f, + 0.071135692298412323f, 0.257051378488540650f, 0.071926333010196686f, + 0.258365899324417110f, 0.072721004486083984f, 0.259678006172180180f, + 0.073519699275493622f, 0.260987639427185060f, + 0.074322402477264404f, 0.262294828891754150f, 0.075129114091396332f, + 0.263599574565887450f, 0.075939826667308807f, 0.264901816844940190f, + 0.076754532754421234f, 0.266201555728912350f, + 0.077573217451572418f, 0.267498821020126340f, 0.078395880758762360f, + 0.268793523311614990f, 0.079222507774829865f, 0.270085722208023070f, + 0.080053105950355530f, 0.271375387907028200f, + 0.080887645483016968f, 0.272662490606307980f, 0.081726133823394775f, + 0.273947030305862430f, 0.082568563520908356f, 0.275228977203369140f, + 0.083414919674396515f, 0.276508361101150510f, + 0.084265194833278656f, 0.277785122394561770f, 0.085119381546974182f, + 0.279059261083602910f, 0.085977479815483093f, 0.280330777168273930f, + 0.086839467287063599f, 0.281599670648574830f, + 0.087705351412296295f, 0.282865911722183230f, 0.088575109839439392f, + 0.284129470586776730f, 0.089448742568492889f, 0.285390377044677730f, + 0.090326242148876190f, 0.286648571491241460f, + 0.091207593679428101f, 0.287904083728790280f, 0.092092797160148621f, + 0.289156883955001830f, 0.092981837689876556f, 0.290406972169876100f, + 0.093874707818031311f, 0.291654318571090700f, + 0.094771400094032288f, 0.292898923158645630f, 0.095671907067298889f, + 0.294140785932540890f, 0.096576221287250519f, 0.295379847288131710f, + 0.097484335303306580f, 0.296616137027740480f, + 0.098396234214305878f, 0.297849655151367190f, 0.099311910569667816f, + 0.299080342054367070f, 0.100231364369392400f, 0.300308227539062500f, + 0.101154580712318420f, 0.301533311605453490f, + 0.102081544697284700f, 0.302755534648895260f, 0.103012263774871830f, + 0.303974896669387820f, 0.103946708142757420f, 0.305191397666931150f, + 0.104884892702102660f, 0.306405037641525270f, + 0.105826787650585170f, 0.307615786790847780f, 0.106772392988204960f, + 0.308823645114898680f, 0.107721701264381410f, 0.310028612613677980f, + 0.108674705028533940f, 0.311230629682540890f, + 0.109631389379501340f, 0.312429755926132200f, 0.110591746866703030f, + 0.313625901937484740f, 0.111555770039558410f, 0.314819127321243290f, + 0.112523443996906280f, 0.316009372472763060f, + 0.113494776189327240f, 0.317196637392044070f, 0.114469736814498900f, + 0.318380922079086300f, 0.115448333323001860f, 0.319562226533889770f, + 0.116430543363094330f, 0.320740520954132080f, + 0.117416366934776310f, 0.321915775537490840f, 0.118405789136886600f, + 0.323088020086288450f, 0.119398809969425200f, 0.324257194995880130f, + 0.120395407080650330f, 0.325423330068588260f, + 0.121395580470561980f, 0.326586425304412840f, 0.122399315237998960f, + 0.327746421098709110f, 0.123406603932380680f, 0.328903347253799440f, + 0.124417431652545930f, 0.330057173967361450f, + 0.125431805849075320f, 0.331207901239395140f, 0.126449704170227050f, + 0.332355499267578130f, 0.127471104264259340f, 0.333499968051910400f, + 0.128496021032333370f, 0.334641307592391970f, + 0.129524439573287960f, 0.335779488086700440f, 0.130556344985961910f, + 0.336914509534835820f, 0.131591722369194030f, 0.338046342134475710f, + 0.132630556821823120f, 0.339175015687942500f, + 0.133672863245010380f, 0.340300500392913820f, 0.134718611836433410f, + 0.341422766447067260f, 0.135767802596092220f, 0.342541843652725220f, + 0.136820420622825620f, 0.343657672405242920f, + 0.137876465916633610f, 0.344770282506942750f, 0.138935908675193790f, + 0.345879614353179930f, 0.139998748898506160f, 0.346985727548599240f, + 0.141064971685409550f, 0.348088562488555910f, + 0.142134591937065120f, 0.349188119173049930f, 0.143207564949989320f, + 0.350284397602081300f, 0.144283905625343320f, 0.351377367973327640f, + 0.145363584160804750f, 0.352467030286788940f, + 0.146446615457534790f, 0.353553384542465210f, 0.147532954812049870f, + 0.354636400938034060f, 0.148622632026672360f, 0.355716109275817870f, + 0.149715602397918700f, 0.356792420148849490f, + 0.150811880826950070f, 0.357865422964096070f, 0.151911437511444090f, + 0.358935028314590450f, 0.153014272451400760f, 0.360001266002655030f, + 0.154120370745658870f, 0.361064106225967410f, + 0.155229732394218440f, 0.362123548984527590f, 0.156342327594757080f, + 0.363179564476013180f, 0.157458171248435970f, 0.364232182502746580f, + 0.158577233552932740f, 0.365281373262405400f, + 0.159699499607086180f, 0.366327136754989620f, 0.160824984312057500f, + 0.367369443178176880f, 0.161953642964363100f, 0.368408292531967160f, + 0.163085505366325380f, 0.369443655014038090f, + 0.164220526814460750f, 0.370475560426712040f, 0.165358707308769230f, + 0.371503978967666630f, 0.166500031948089600f, 0.372528880834579470f, + 0.167644515633583070f, 0.373550295829772950f, + 0.168792113661766050f, 0.374568194150924680f, 0.169942826032638550f, + 0.375582575798034670f, 0.171096652746200560f, 0.376593410968780520f, + 0.172253578901290890f, 0.377600699663162230f, + 0.173413574695587160f, 0.378604412078857420f, 0.174576655030250550f, + 0.379604607820510860f, 0.175742805004119870f, 0.380601197481155400f, + 0.176911994814872740f, 0.381594210863113400f, + 0.178084224462509160f, 0.382583618164062500f, 0.179259493947029110f, + 0.383569449186325070f, 0.180437773466110230f, 0.384551674127578740f, + 0.181619063019752500f, 0.385530263185501100f, + 0.182803362607955930f, 0.386505216360092160f, 0.183990627527236940f, + 0.387476563453674320f, 0.185180887579917910f, 0.388444244861602780f, + 0.186374098062515260f, 0.389408260583877560f, + 0.187570258975028990f, 0.390368610620498660f, 0.188769355416297910f, + 0.391325294971466060f, 0.189971387386322020f, 0.392278283834457400f, + 0.191176339983940120f, 0.393227607011795040f, + 0.192384198307991030f, 0.394173204898834230f, 0.193594962358474730f, + 0.395115107297897340f, 0.194808602333068850f, 0.396053284406661990f, + 0.196025103330612180f, 0.396987736225128170f, + 0.197244480252265930f, 0.397918462753295900f, 0.198466703295707700f, + 0.398845434188842770f, 0.199691757559776310f, 0.399768620729446410f, + 0.200919643044471740f, 0.400688081979751590f, + 0.202150344848632810f, 0.401603758335113530f, 0.203383848071098330f, + 0.402515679597854610f, 0.204620152711868290f, 0.403423786163330080f, + 0.205859228968620300f, 0.404328078031539920f, + 0.207101076841354370f, 0.405228585004806520f, 0.208345666527748110f, + 0.406125307083129880f, 0.209593027830123900f, 0.407018154859542850f, + 0.210843101143836980f, 0.407907217741012570f, + 0.212095901370048520f, 0.408792406320571900f, 0.213351413607597350f, + 0.409673750400543210f, 0.214609622955322270f, 0.410551249980926510f, + 0.215870529413223270f, 0.411424905061721800f, + 0.217134088277816770f, 0.412294656038284300f, 0.218400329351425170f, + 0.413160532712936400f, 0.219669207930564880f, 0.414022535085678100f, + 0.220940738916397090f, 0.414880603551864620f, + 0.222214877605438230f, 0.415734797716140750f, 0.223491653800010680f, + 0.416585087776184080f, 0.224771007895469670f, 0.417431443929672240f, + 0.226052969694137570f, 0.418273866176605220f, + 0.227337509393692020f, 0.419112354516983030f, 0.228624612092971800f, + 0.419946908950805660f, 0.229914262890815730f, 0.420777499675750730f, + 0.231206461787223820f, 0.421604126691818240f, + 0.232501193881034850f, 0.422426789999008180f, 0.233798429369926450f, + 0.423245459794998170f, 0.235098183155059810f, 0.424060165882110600f, + 0.236400425434112550f, 0.424870878458023070f, + 0.237705156207084660f, 0.425677597522735600f, 0.239012360572814940f, + 0.426480293273925780f, 0.240322008728981020f, 0.427278995513916020f, + 0.241634100675582890f, 0.428073674440383910f, + 0.242948621511459350f, 0.428864300251007080f, 0.244265571236610410f, + 0.429650902748107910f, 0.245584934949874880f, 0.430433481931686400f, + 0.246906682848930360f, 0.431211978197097780f, + 0.248230814933776860f, 0.431986421346664430f, 0.249557301402091980f, + 0.432756811380386350f, 0.250886172056198120f, 0.433523118495941160f, + 0.252217382192611690f, 0.434285342693328860f, + 0.253550916910171510f, 0.435043483972549440f, 0.254886746406555180f, + 0.435797542333602910f, 0.256224930286407470f, 0.436547487974166870f, + 0.257565379142761230f, 0.437293320894241330f, + 0.258908122777938840f, 0.438035041093826290f, 0.260253131389617920f, + 0.438772648572921750f, 0.261600375175476070f, 0.439506113529205320f, + 0.262949883937835690f, 0.440235435962677000f, + 0.264301627874374390f, 0.440960645675659180f, 0.265655577182769780f, + 0.441681683063507080f, 0.267011761665344240f, 0.442398548126220700f, + 0.268370121717453000f, 0.443111270666122440f, + 0.269730657339096070f, 0.443819820880889890f, 0.271093338727951050f, + 0.444524168968200680f, 0.272458195686340330f, 0.445224374532699580f, + 0.273825198411941530f, 0.445920348167419430f, + 0.275194346904754640f, 0.446612149477005000f, 0.276565581560134890f, + 0.447299748659133910f, 0.277938932180404660f, 0.447983115911483760f, + 0.279314368963241580f, 0.448662281036376950f, + 0.280691891908645630f, 0.449337244033813480f, 0.282071471214294430f, + 0.450007945299148560f, 0.283453077077865600f, 0.450674414634704590f, + 0.284836769104003910f, 0.451336652040481570f, + 0.286222457885742190f, 0.451994657516479490f, 0.287610173225402830f, + 0.452648371458053590f, 0.288999855518341060f, 0.453297853469848630f, + 0.290391564369201660f, 0.453943043947219850f, + 0.291785210371017460f, 0.454584002494812010f, 0.293180853128433230f, + 0.455220639705657960f, 0.294578403234481810f, 0.455853015184402470f, + 0.295977920293807980f, 0.456481099128723140f, + 0.297379344701766970f, 0.457104891538620000f, 0.298782676458358760f, + 0.457724362611770630f, 0.300187885761260990f, 0.458339542150497440f, + 0.301595002412796020f, 0.458950400352478030f, + 0.303003966808319090f, 0.459556937217712400f, 0.304414808750152590f, + 0.460159152746200560f, 0.305827468633651730f, 0.460757017135620120f, + 0.307241976261138920f, 0.461350560188293460f, + 0.308658272027969360f, 0.461939752101898190f, 0.310076385736465450f, + 0.462524622678756710f, 0.311496287584304810f, 0.463105112314224240f, + 0.312917977571487430f, 0.463681250810623170f, + 0.314341396093368530f, 0.464253038167953490f, 0.315766572952270510f, + 0.464820444583892820f, 0.317193508148193360f, 0.465383470058441160f, + 0.318622142076492310f, 0.465942144393920900f, + 0.320052474737167360f, 0.466496407985687260f, 0.321484506130218510f, + 0.467046260833740230f, 0.322918236255645750f, 0.467591762542724610f, + 0.324353635311126710f, 0.468132823705673220f, + 0.325790673494338990f, 0.468669503927230830f, 0.327229350805282590f, + 0.469201773405075070f, 0.328669637441635130f, 0.469729602336883540f, + 0.330111563205718990f, 0.470253020524978640f, + 0.331555068492889400f, 0.470772027969360350f, 0.333000183105468750f, + 0.471286594867706300f, 0.334446847438812260f, 0.471796721220016480f, + 0.335895091295242310f, 0.472302407026290890f, + 0.337344855070114140f, 0.472803652286529540f, 0.338796168565750120f, + 0.473300457000732420f, 0.340248972177505490f, 0.473792791366577150f, + 0.341703325510025020f, 0.474280685186386110f, + 0.343159139156341550f, 0.474764078855514530f, 0.344616413116455080f, + 0.475243031978607180f, 0.346075177192687990f, 0.475717514753341670f, + 0.347535371780395510f, 0.476187497377395630f, + 0.348997026681900020f, 0.476653009653091430f, 0.350460082292556760f, + 0.477114051580429080f, 0.351924568414688110f, 0.477570593357086180f, + 0.353390425443649290f, 0.478022634983062740f, + 0.354857653379440310f, 0.478470176458358760f, 0.356326282024383540f, + 0.478913217782974240f, 0.357796221971511840f, 0.479351729154586790f, + 0.359267532825469970f, 0.479785770177841190f, + 0.360740154981613160f, 0.480215251445770260f, 0.362214088439941410f, + 0.480640232563018800f, 0.363689333200454710f, 0.481060713529586790f, + 0.365165829658508300f, 0.481476634740829470f, + 0.366643607616424560f, 0.481888025999069210f, 0.368122667074203490f, + 0.482294887304306030f, 0.369602948427200320f, 0.482697218656539920f, + 0.371084451675415040f, 0.483094990253448490f, + 0.372567176818847660f, 0.483488231897354130f, 0.374051094055175780f, + 0.483876913785934450f, 0.375536203384399410f, 0.484261035919189450f, + 0.377022475004196170f, 0.484640628099441530f, + 0.378509908914566040f, 0.485015630722045900f, 0.379998475313186650f, + 0.485386073589324950f, 0.381488204002380370f, 0.485751956701278690f, + 0.382979035377502440f, 0.486113250255584720f, + 0.384470939636230470f, 0.486469984054565430f, 0.385963946580886840f, + 0.486822128295898440f, 0.387458056211471560f, 0.487169682979583740f, + 0.388953179121017460f, 0.487512677907943730f, + 0.390449374914169310f, 0.487851053476333620f, 0.391946613788604740f, + 0.488184869289398190f, 0.393444836139678960f, 0.488514065742492680f, + 0.394944071769714360f, 0.488838672637939450f, + 0.396444320678710940f, 0.489158689975738530f, 0.397945523262023930f, + 0.489474087953567500f, 0.399447679519653320f, 0.489784896373748780f, + 0.400950789451599120f, 0.490091055631637570f, + 0.402454853057861330f, 0.490392625331878660f, 0.403959810733795170f, + 0.490689605474472050f, 0.405465662479400630f, 0.490981936454772950f, + 0.406972438097000120f, 0.491269648075103760f, + 0.408480048179626460f, 0.491552740335464480f, 0.409988552331924440f, + 0.491831213235855100f, 0.411497890949249270f, 0.492105036973953250f, + 0.413008064031600950f, 0.492374241352081300f, + 0.414519041776657100f, 0.492638826370239260f, 0.416030853986740110f, + 0.492898762226104740f, 0.417543441057205200f, 0.493154048919677730f, + 0.419056802988052370f, 0.493404686450958250f, + 0.420570939779281620f, 0.493650704622268680f, 0.422085791826248170f, + 0.493892073631286620f, 0.423601418733596800f, 0.494128793478012080f, + 0.425117731094360350f, 0.494360834360122680f, + 0.426634758710861210f, 0.494588255882263180f, 0.428152471780776980f, + 0.494810998439788820f, 0.429670870304107670f, 0.495029091835021970f, + 0.431189924478530880f, 0.495242536067962650f, + 0.432709634304046630f, 0.495451331138610840f, 0.434229999780654910f, + 0.495655417442321780f, 0.435750931501388550f, 0.495854884386062620f, + 0.437272518873214720f, 0.496049642562866210f, + 0.438794672489166260f, 0.496239781379699710f, 0.440317392349243160f, + 0.496425211429595950f, 0.441840678453445430f, 0.496605962514877320f, + 0.443364530801773070f, 0.496782064437866210f, + 0.444888889789581300f, 0.496953487396240230f, 0.446413785219192500f, + 0.497120231389999390f, 0.447939187288284300f, 0.497282296419143680f, + 0.449465066194534300f, 0.497439652681350710f, + 0.450991421937942500f, 0.497592359781265260f, 0.452518254518508910f, + 0.497740387916564940f, 0.454045534133911130f, 0.497883707284927370f, + 0.455573230981826780f, 0.498022347688674930f, + 0.457101345062255860f, 0.498156309127807620f, 0.458629876375198360f, + 0.498285561800003050f, 0.460158795118331910f, 0.498410135507583620f, + 0.461688071489334110f, 0.498530030250549320f, + 0.463217705488204960f, 0.498645216226577760f, 0.464747726917266850f, + 0.498755723237991330f, 0.466278046369552610f, 0.498861521482467650f, + 0.467808693647384640f, 0.498962640762329100f, + 0.469339638948440550f, 0.499059051275253300f, 0.470870882272720340f, + 0.499150782823562620f, 0.472402364015579220f, 0.499237775802612300f, + 0.473934143781661990f, 0.499320119619369510f, + 0.475466161966323850f, 0.499397724866867070f, 0.476998418569564820f, + 0.499470651149749760f, 0.478530883789062500f, 0.499538868665695190f, + 0.480063527822494510f, 0.499602377414703370f, + 0.481596380472183230f, 0.499661177396774290f, 0.483129411935806270f, + 0.499715298414230350f, 0.484662592411041260f, 0.499764710664749150f, + 0.486195921897888180f, 0.499809414148330690f, + 0.487729400396347050f, 0.499849408864974980f, 0.489262968301773070f, + 0.499884694814682010f, 0.490796625614166260f, 0.499915301799774170f, + 0.492330402135849000f, 0.499941170215606690f, + 0.493864238262176510f, 0.499962359666824340f, 0.495398133993148800f, + 0.499978810548782350f, 0.496932059526443480f, 0.499990582466125490f, + 0.498466014862060550f, 0.499997645616531370f +}; + + +/** +* \par +* Generation of realCoefB array: +* \par +* n = 1024 +*
for (i = 0; i < n; i++)   
+* {   
+*    pBTable[2 * i] = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));   
+*    pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));   
+*  } 
+* +*/ +static const float32_t realCoefB[2048] = { + 0.500000000000000000f, 0.500000000000000000f, 0.501533985137939450f, + 0.499997645616531370f, 0.503067970275878910f, 0.499990582466125490f, + 0.504601895809173580f, 0.499978810548782350f, + 0.506135761737823490f, 0.499962359666824340f, 0.507669627666473390f, + 0.499941170215606690f, 0.509203374385833740f, 0.499915301799774170f, + 0.510737061500549320f, 0.499884694814682010f, + 0.512270629405975340f, 0.499849408864974980f, 0.513804078102111820f, + 0.499809414148330690f, 0.515337407588958740f, 0.499764710664749150f, + 0.516870558261871340f, 0.499715298414230350f, + 0.518403589725494380f, 0.499661177396774290f, 0.519936442375183110f, + 0.499602377414703370f, 0.521469116210937500f, 0.499538868665695190f, + 0.523001611232757570f, 0.499470651149749760f, + 0.524533808231353760f, 0.499397724866867070f, 0.526065826416015630f, + 0.499320119619369510f, 0.527597606182098390f, 0.499237775802612300f, + 0.529129147529602050f, 0.499150782823562620f, + 0.530660390853881840f, 0.499059051275253300f, 0.532191336154937740f, + 0.498962640762329100f, 0.533721983432769780f, 0.498861521482467650f, + 0.535252273082733150f, 0.498755723237991330f, + 0.536782264709472660f, 0.498645216226577760f, 0.538311958312988280f, + 0.498530030250549320f, 0.539841234683990480f, 0.498410135507583620f, + 0.541370153427124020f, 0.498285561800003050f, + 0.542898654937744140f, 0.498156309127807620f, 0.544426798820495610f, + 0.498022347688674930f, 0.545954465866088870f, 0.497883707284927370f, + 0.547481775283813480f, 0.497740387916564940f, + 0.549008548259735110f, 0.497592359781265260f, 0.550534904003143310f, + 0.497439652681350710f, 0.552060842514038090f, 0.497282296419143680f, + 0.553586184978485110f, 0.497120231389999390f, + 0.555111110210418700f, 0.496953487396240230f, 0.556635499000549320f, + 0.496782064437866210f, 0.558159291744232180f, 0.496605962514877320f, + 0.559682607650756840f, 0.496425211429595950f, + 0.561205327510833740f, 0.496239781379699710f, 0.562727510929107670f, + 0.496049642562866210f, 0.564249038696289060f, 0.495854884386062620f, + 0.565770030021667480f, 0.495655417442321780f, + 0.567290365695953370f, 0.495451331138610840f, 0.568810045719146730f, + 0.495242536067962650f, 0.570329129695892330f, 0.495029091835021970f, + 0.571847498416900630f, 0.494810998439788820f, + 0.573365211486816410f, 0.494588255882263180f, 0.574882268905639650f, + 0.494360834360122680f, 0.576398611068725590f, 0.494128793478012080f, + 0.577914178371429440f, 0.493892073631286620f, + 0.579429090023040770f, 0.493650704622268680f, 0.580943167209625240f, + 0.493404686450958250f, 0.582456588745117190f, 0.493154048919677730f, + 0.583969175815582280f, 0.492898762226104740f, + 0.585480928421020510f, 0.492638826370239260f, 0.586991965770721440f, + 0.492374241352081300f, 0.588502109050750730f, 0.492105036973953250f, + 0.590011477470397950f, 0.491831213235855100f, + 0.591519951820373540f, 0.491552740335464480f, 0.593027591705322270f, + 0.491269648075103760f, 0.594534337520599370f, 0.490981936454772950f, + 0.596040189266204830f, 0.490689605474472050f, + 0.597545146942138670f, 0.490392625331878660f, 0.599049210548400880f, + 0.490091055631637570f, 0.600552320480346680f, 0.489784896373748780f, + 0.602054476737976070f, 0.489474087953567500f, + 0.603555679321289060f, 0.489158689975738530f, 0.605055928230285640f, + 0.488838672637939450f, 0.606555163860321040f, 0.488514065742492680f, + 0.608053386211395260f, 0.488184869289398190f, + 0.609550595283508300f, 0.487851053476333620f, 0.611046791076660160f, + 0.487512677907943730f, 0.612541973590850830f, 0.487169682979583740f, + 0.614036023616790770f, 0.486822128295898440f, + 0.615529060363769530f, 0.486469984054565430f, 0.617020964622497560f, + 0.486113250255584720f, 0.618511795997619630f, 0.485751956701278690f, + 0.620001494884490970f, 0.485386073589324950f, + 0.621490061283111570f, 0.485015630722045900f, 0.622977554798126220f, + 0.484640628099441530f, 0.624463796615600590f, 0.484261035919189450f, + 0.625948905944824220f, 0.483876913785934450f, + 0.627432823181152340f, 0.483488231897354130f, 0.628915548324584960f, + 0.483094990253448490f, 0.630397081375122070f, 0.482697218656539920f, + 0.631877362728118900f, 0.482294887304306030f, + 0.633356392383575440f, 0.481888025999069210f, 0.634834170341491700f, + 0.481476634740829470f, 0.636310696601867680f, 0.481060713529586790f, + 0.637785911560058590f, 0.480640232563018800f, + 0.639259815216064450f, 0.480215251445770260f, 0.640732467174530030f, + 0.479785770177841190f, 0.642203748226165770f, 0.479351729154586790f, + 0.643673717975616460f, 0.478913217782974240f, + 0.645142316818237300f, 0.478470176458358760f, 0.646609604358673100f, + 0.478022634983062740f, 0.648075461387634280f, 0.477570593357086180f, + 0.649539887905120850f, 0.477114051580429080f, + 0.651003003120422360f, 0.476653009653091430f, 0.652464628219604490f, + 0.476187497377395630f, 0.653924822807312010f, 0.475717514753341670f, + 0.655383586883544920f, 0.475243031978607180f, + 0.656840860843658450f, 0.474764078855514530f, 0.658296704292297360f, + 0.474280685186386110f, 0.659750998020172120f, 0.473792791366577150f, + 0.661203861236572270f, 0.473300457000732420f, + 0.662655174732208250f, 0.472803652286529540f, 0.664104938507080080f, + 0.472302407026290890f, 0.665553152561187740f, 0.471796721220016480f, + 0.666999816894531250f, 0.471286594867706300f, + 0.668444931507110600f, 0.470772027969360350f, 0.669888436794281010f, + 0.470253020524978640f, 0.671330332756042480f, 0.469729602336883540f, + 0.672770678997039790f, 0.469201773405075070f, + 0.674209356307983400f, 0.468669503927230830f, 0.675646364688873290f, + 0.468132823705673220f, 0.677081763744354250f, 0.467591762542724610f, + 0.678515493869781490f, 0.467046260833740230f, + 0.679947495460510250f, 0.466496407985687260f, 0.681377887725830080f, + 0.465942144393920900f, 0.682806491851806640f, 0.465383470058441160f, + 0.684233427047729490f, 0.464820444583892820f, + 0.685658574104309080f, 0.464253038167953490f, 0.687082052230834960f, + 0.463681250810623170f, 0.688503682613372800f, 0.463105112314224240f, + 0.689923584461212160f, 0.462524622678756710f, + 0.691341698169708250f, 0.461939752101898190f, 0.692758023738861080f, + 0.461350560188293460f, 0.694172501564025880f, 0.460757017135620120f, + 0.695585191249847410f, 0.460159152746200560f, + 0.696996033191680910f, 0.459556937217712400f, 0.698404967784881590f, + 0.458950400352478030f, 0.699812114238739010f, 0.458339542150497440f, + 0.701217353343963620f, 0.457724362611770630f, + 0.702620685100555420f, 0.457104891538620000f, 0.704022109508514400f, + 0.456481099128723140f, 0.705421566963195800f, 0.455853015184402470f, + 0.706819176673889160f, 0.455220639705657960f, + 0.708214759826660160f, 0.454584002494812010f, 0.709608435630798340f, + 0.453943043947219850f, 0.711000144481658940f, 0.453297853469848630f, + 0.712389826774597170f, 0.452648371458053590f, + 0.713777542114257810f, 0.451994657516479490f, 0.715163230895996090f, + 0.451336652040481570f, 0.716546893119812010f, 0.450674414634704590f, + 0.717928528785705570f, 0.450007945299148560f, + 0.719308137893676760f, 0.449337244033813480f, 0.720685660839080810f, + 0.448662281036376950f, 0.722061097621917720f, 0.447983115911483760f, + 0.723434448242187500f, 0.447299748659133910f, + 0.724805653095245360f, 0.446612149477005000f, 0.726174771785736080f, + 0.445920348167419430f, 0.727541804313659670f, 0.445224374532699580f, + 0.728906631469726560f, 0.444524168968200680f, + 0.730269372463226320f, 0.443819820880889890f, 0.731629908084869380f, + 0.443111270666122440f, 0.732988238334655760f, 0.442398548126220700f, + 0.734344422817230220f, 0.441681683063507080f, + 0.735698342323303220f, 0.440960645675659180f, 0.737050116062164310f, + 0.440235435962677000f, 0.738399624824523930f, 0.439506113529205320f, + 0.739746868610382080f, 0.438772648572921750f, + 0.741091907024383540f, 0.438035041093826290f, 0.742434620857238770f, + 0.437293320894241330f, 0.743775069713592530f, 0.436547487974166870f, + 0.745113253593444820f, 0.435797542333602910f, + 0.746449112892150880f, 0.435043483972549440f, 0.747782647609710690f, + 0.434285342693328860f, 0.749113857746124270f, 0.433523118495941160f, + 0.750442683696746830f, 0.432756811380386350f, + 0.751769185066223140f, 0.431986421346664430f, 0.753093302249908450f, + 0.431211978197097780f, 0.754415094852447510f, 0.430433481931686400f, + 0.755734443664550780f, 0.429650902748107910f, + 0.757051348686218260f, 0.428864300251007080f, 0.758365929126739500f, + 0.428073674440383910f, 0.759678006172180180f, 0.427278995513916020f, + 0.760987639427185060f, 0.426480293273925780f, + 0.762294828891754150f, 0.425677597522735600f, 0.763599574565887450f, + 0.424870878458023070f, 0.764901816844940190f, 0.424060165882110600f, + 0.766201555728912350f, 0.423245459794998170f, + 0.767498791217803960f, 0.422426789999008180f, 0.768793523311614990f, + 0.421604126691818240f, 0.770085752010345460f, 0.420777499675750730f, + 0.771375417709350590f, 0.419946908950805660f, + 0.772662520408630370f, 0.419112354516983030f, 0.773947000503540040f, + 0.418273866176605220f, 0.775228977203369140f, 0.417431443929672240f, + 0.776508331298828130f, 0.416585087776184080f, + 0.777785122394561770f, 0.415734797716140750f, 0.779059290885925290f, + 0.414880603551864620f, 0.780330777168273930f, 0.414022535085678100f, + 0.781599700450897220f, 0.413160532712936400f, + 0.782865881919860840f, 0.412294656038284300f, 0.784129500389099120f, + 0.411424905061721800f, 0.785390377044677730f, 0.410551249980926510f, + 0.786648571491241460f, 0.409673750400543210f, + 0.787904083728790280f, 0.408792406320571900f, 0.789156913757324220f, + 0.407907217741012570f, 0.790407001972198490f, 0.407018154859542850f, + 0.791654348373413090f, 0.406125307083129880f, + 0.792898952960968020f, 0.405228585004806520f, 0.794140756130218510f, + 0.404328078031539920f, 0.795379877090454100f, 0.403423786163330080f, + 0.796616137027740480f, 0.402515679597854610f, + 0.797849655151367190f, 0.401603758335113530f, 0.799080371856689450f, + 0.400688081979751590f, 0.800308227539062500f, 0.399768620729446410f, + 0.801533281803131100f, 0.398845434188842770f, + 0.802755534648895260f, 0.397918462753295900f, 0.803974866867065430f, + 0.396987736225128170f, 0.805191397666931150f, 0.396053284406661990f, + 0.806405067443847660f, 0.395115107297897340f, + 0.807615816593170170f, 0.394173204898834230f, 0.808823645114898680f, + 0.393227607011795040f, 0.810028612613677980f, 0.392278283834457400f, + 0.811230659484863280f, 0.391325294971466060f, + 0.812429726123809810f, 0.390368610620498660f, 0.813625931739807130f, + 0.389408260583877560f, 0.814819097518920900f, 0.388444244861602780f, + 0.816009342670440670f, 0.387476563453674320f, + 0.817196667194366460f, 0.386505216360092160f, 0.818380951881408690f, + 0.385530263185501100f, 0.819562196731567380f, 0.384551674127578740f, + 0.820740520954132080f, 0.383569449186325070f, + 0.821915745735168460f, 0.382583618164062500f, 0.823087990283966060f, + 0.381594210863113400f, 0.824257194995880130f, 0.380601197481155400f, + 0.825423359870910640f, 0.379604607820510860f, + 0.826586425304412840f, 0.378604412078857420f, 0.827746450901031490f, + 0.377600699663162230f, 0.828903317451477050f, 0.376593410968780520f, + 0.830057144165039060f, 0.375582575798034670f, + 0.831207871437072750f, 0.374568194150924680f, 0.832355499267578130f, + 0.373550295829772950f, 0.833499968051910400f, 0.372528880834579470f, + 0.834641277790069580f, 0.371503978967666630f, + 0.835779488086700440f, 0.370475560426712040f, 0.836914479732513430f, + 0.369443655014038090f, 0.838046371936798100f, 0.368408292531967160f, + 0.839175045490264890f, 0.367369443178176880f, + 0.840300500392913820f, 0.366327136754989620f, 0.841422796249389650f, + 0.365281373262405400f, 0.842541813850402830f, 0.364232182502746580f, + 0.843657672405242920f, 0.363179564476013180f, + 0.844770252704620360f, 0.362123548984527590f, 0.845879614353179930f, + 0.361064106225967410f, 0.846985757350921630f, 0.360001266002655030f, + 0.848088562488555910f, 0.358935028314590450f, + 0.849188148975372310f, 0.357865422964096070f, 0.850284397602081300f, + 0.356792420148849490f, 0.851377367973327640f, 0.355716109275817870f, + 0.852467060089111330f, 0.354636400938034060f, + 0.853553414344787600f, 0.353553384542465210f, 0.854636430740356450f, + 0.352467030286788940f, 0.855716109275817870f, 0.351377367973327640f, + 0.856792449951171880f, 0.350284397602081300f, + 0.857865393161773680f, 0.349188119173049930f, 0.858934998512268070f, + 0.348088562488555910f, 0.860001266002655030f, 0.346985727548599240f, + 0.861064076423645020f, 0.345879614353179930f, + 0.862123548984527590f, 0.344770282506942750f, 0.863179564476013180f, + 0.343657672405242920f, 0.864232182502746580f, 0.342541843652725220f, + 0.865281403064727780f, 0.341422766447067260f, + 0.866327106952667240f, 0.340300500392913820f, 0.867369413375854490f, + 0.339175015687942500f, 0.868408262729644780f, 0.338046342134475710f, + 0.869443655014038090f, 0.336914509534835820f, + 0.870475590229034420f, 0.335779488086700440f, 0.871503949165344240f, + 0.334641307592391970f, 0.872528910636901860f, 0.333499968051910400f, + 0.873550295829772950f, 0.332355499267578130f, + 0.874568223953247070f, 0.331207901239395140f, 0.875582575798034670f, + 0.330057173967361450f, 0.876593410968780520f, 0.328903347253799440f, + 0.877600669860839840f, 0.327746421098709110f, + 0.878604412078857420f, 0.326586425304412840f, 0.879604578018188480f, + 0.325423330068588260f, 0.880601167678833010f, 0.324257194995880130f, + 0.881594181060791020f, 0.323088020086288450f, + 0.882583618164062500f, 0.321915775537490840f, 0.883569478988647460f, + 0.320740520954132080f, 0.884551644325256350f, 0.319562226533889770f, + 0.885530233383178710f, 0.318380922079086300f, + 0.886505246162414550f, 0.317196637392044070f, 0.887476563453674320f, + 0.316009372472763060f, 0.888444244861602780f, 0.314819127321243290f, + 0.889408230781555180f, 0.313625901937484740f, + 0.890368640422821040f, 0.312429755926132200f, 0.891325294971466060f, + 0.311230629682540890f, 0.892278313636779790f, 0.310028612613677980f, + 0.893227577209472660f, 0.308823645114898680f, + 0.894173204898834230f, 0.307615786790847780f, 0.895115137100219730f, + 0.306405037641525270f, 0.896053314208984380f, 0.305191397666931150f, + 0.896987736225128170f, 0.303974896669387820f, + 0.897918462753295900f, 0.302755534648895260f, 0.898845434188842770f, + 0.301533311605453490f, 0.899768650531768800f, 0.300308227539062500f, + 0.900688111782073970f, 0.299080342054367070f, + 0.901603758335113530f, 0.297849655151367190f, 0.902515649795532230f, + 0.296616137027740480f, 0.903423786163330080f, 0.295379847288131710f, + 0.904328107833862300f, 0.294140785932540890f, + 0.905228614807128910f, 0.292898923158645630f, 0.906125307083129880f, + 0.291654318571090700f, 0.907018184661865230f, 0.290406972169876100f, + 0.907907187938690190f, 0.289156883955001830f, + 0.908792436122894290f, 0.287904083728790280f, 0.909673750400543210f, + 0.286648571491241460f, 0.910551249980926510f, 0.285390377044677730f, + 0.911424875259399410f, 0.284129470586776730f, + 0.912294626235961910f, 0.282865911722183230f, 0.913160502910614010f, + 0.281599670648574830f, 0.914022505283355710f, 0.280330777168273930f, + 0.914880633354187010f, 0.279059261083602910f, + 0.915734827518463130f, 0.277785122394561770f, 0.916585087776184080f, + 0.276508361101150510f, 0.917431414127349850f, 0.275228977203369140f, + 0.918273866176605220f, 0.273947030305862430f, + 0.919112324714660640f, 0.272662490606307980f, 0.919946908950805660f, + 0.271375387907028200f, 0.920777499675750730f, 0.270085722208023070f, + 0.921604096889495850f, 0.268793523311614990f, + 0.922426760196685790f, 0.267498821020126340f, 0.923245489597320560f, + 0.266201555728912350f, 0.924060165882110600f, 0.264901816844940190f, + 0.924870908260345460f, 0.263599574565887450f, + 0.925677597522735600f, 0.262294828891754150f, 0.926480293273925780f, + 0.260987639427185060f, 0.927278995513916020f, 0.259678006172180180f, + 0.928073644638061520f, 0.258365899324417110f, + 0.928864300251007080f, 0.257051378488540650f, 0.929650902748107910f, + 0.255734413862228390f, 0.930433452129364010f, 0.254415065050125120f, + 0.931211948394775390f, 0.253093332052230830f, + 0.931986451148986820f, 0.251769185066223140f, 0.932756841182708740f, + 0.250442683696746830f, 0.933523118495941160f, 0.249113827943801880f, + 0.934285342693328860f, 0.247782632708549500f, + 0.935043513774871830f, 0.246449097990989690f, 0.935797572135925290f, + 0.245113238692283630f, 0.936547517776489260f, 0.243775084614753720f, + 0.937293350696563720f, 0.242434620857238770f, + 0.938035070896148680f, 0.241091892123222350f, 0.938772618770599370f, + 0.239746883511543270f, 0.939506113529205320f, 0.238399609923362730f, + 0.940235435962677000f, 0.237050101161003110f, + 0.940960645675659180f, 0.235698372125625610f, 0.941681683063507080f, + 0.234344407916069030f, 0.942398548126220700f, 0.232988253235816960f, + 0.943111240863800050f, 0.231629893183708190f, + 0.943819820880889890f, 0.230269357562065120f, 0.944524168968200680f, + 0.228906646370887760f, 0.945224344730377200f, 0.227541789412498470f, + 0.945920348167419430f, 0.226174786686897280f, + 0.946612179279327390f, 0.224805667996406560f, 0.947299718856811520f, + 0.223434418439865110f, 0.947983145713806150f, 0.222061067819595340f, + 0.948662281036376950f, 0.220685631036758420f, + 0.949337244033813480f, 0.219308122992515560f, 0.950007975101470950f, + 0.217928543686866760f, 0.950674414634704590f, 0.216546908020973210f, + 0.951336681842803960f, 0.215163245797157290f, + 0.951994657516479490f, 0.213777542114257810f, 0.952648401260375980f, + 0.212389841675758360f, 0.953297853469848630f, 0.211000129580497740f, + 0.953943073749542240f, 0.209608450531959530f, + 0.954584002494812010f, 0.208214774727821350f, 0.955220639705657960f, + 0.206819161772727970f, 0.955853044986724850f, 0.205421581864356990f, + 0.956481099128723140f, 0.204022079706192020f, + 0.957104861736297610f, 0.202620655298233030f, 0.957724332809448240f, + 0.201217323541641240f, 0.958339512348175050f, 0.199812099337577820f, + 0.958950400352478030f, 0.198404997587203980f, + 0.959556937217712400f, 0.196996018290519710f, 0.960159122943878170f, + 0.195585191249847410f, 0.960757017135620120f, 0.194172516465187070f, + 0.961350560188293460f, 0.192758023738861080f, + 0.961939752101898190f, 0.191341713070869450f, 0.962524592876434330f, + 0.189923599362373350f, 0.963105142116546630f, 0.188503712415695190f, + 0.963681280612945560f, 0.187082037329673770f, + 0.964253067970275880f, 0.185658603906631470f, 0.964820444583892820f, + 0.184233412146568300f, 0.965383470058441160f, 0.182806491851806640f, + 0.965942144393920900f, 0.181377857923507690f, + 0.966496407985687260f, 0.179947525262832640f, 0.967046260833740230f, + 0.178515478968620300f, 0.967591762542724610f, 0.177081763744354250f, + 0.968132853507995610f, 0.175646379590034480f, + 0.968669533729553220f, 0.174209341406822200f, 0.969201743602752690f, + 0.172770664095878600f, 0.969729602336883540f, 0.171330362558364870f, + 0.970253050327301030f, 0.169888436794281010f, + 0.970772027969360350f, 0.168444931507110600f, 0.971286594867706300f, + 0.166999831795692440f, 0.971796751022338870f, 0.165553152561187740f, + 0.972302436828613280f, 0.164104923605918880f, + 0.972803652286529540f, 0.162655144929885860f, 0.973300457000732420f, + 0.161203846335411070f, 0.973792791366577150f, 0.159751012921333310f, + 0.974280655384063720f, 0.158296689391136170f, + 0.974764108657836910f, 0.156840875744819640f, 0.975243031978607180f, + 0.155383571982383730f, 0.975717484951019290f, 0.153924822807312010f, + 0.976187527179718020f, 0.152464613318443300f, + 0.976653039455413820f, 0.151002973318099980f, 0.977114021778106690f, + 0.149539917707443240f, 0.977570593357086180f, 0.148075446486473080f, + 0.978022634983062740f, 0.146609574556350710f, + 0.978470146656036380f, 0.145142331719398500f, 0.978913187980651860f, + 0.143673732876777650f, 0.979351758956909180f, 0.142203763127326970f, + 0.979785740375518800f, 0.140732467174530030f, + 0.980215251445770260f, 0.139259845018386840f, 0.980640232563018800f, + 0.137785911560058590f, 0.981060683727264400f, 0.136310681700706480f, + 0.981476604938507080f, 0.134834155440330510f, + 0.981888055801391600f, 0.133356377482414250f, 0.982294917106628420f, + 0.131877332925796510f, 0.982697248458862300f, 0.130397051572799680f, + 0.983094990253448490f, 0.128915548324584960f, + 0.983488261699676510f, 0.127432823181152340f, 0.983876943588256840f, + 0.125948905944824220f, 0.984261035919189450f, 0.124463804066181180f, + 0.984640598297119140f, 0.122977524995803830f, + 0.985015630722045900f, 0.121490091085433960f, 0.985386073589324950f, + 0.120001509785652160f, 0.985751926898956300f, 0.118511803448200230f, + 0.986113250255584720f, 0.117020979523658750f, + 0.986469984054565430f, 0.115529052913188930f, 0.986822128295898440f, + 0.114036038517951970f, 0.987169682979583740f, 0.112541958689689640f, + 0.987512648105621340f, 0.111046813428401950f, + 0.987851083278656010f, 0.109550617635250090f, 0.988184869289398190f, + 0.108053401112556460f, 0.988514065742492680f, 0.106555156409740450f, + 0.988838672637939450f, 0.105055920779705050f, + 0.989158689975738530f, 0.103555686771869660f, 0.989474058151245120f, + 0.102054484188556670f, 0.989784896373748780f, 0.100552320480346680f, + 0.990091085433959960f, 0.099049203097820282f, + 0.990392625331878660f, 0.097545161843299866f, 0.990689575672149660f, + 0.096040196716785431f, 0.990981936454772950f, 0.094534330070018768f, + 0.991269648075103760f, 0.093027576804161072f, + 0.991552770137786870f, 0.091519944369792938f, 0.991831183433532710f, + 0.090011447668075562f, 0.992105066776275630f, 0.088502109050750732f, + 0.992374241352081300f, 0.086991935968399048f, + 0.992638826370239260f, 0.085480943322181702f, 0.992898762226104740f, + 0.083969146013259888f, 0.993154048919677730f, 0.082456558942794800f, + 0.993404686450958250f, 0.080943197011947632f, + 0.993650734424591060f, 0.079429075121879578f, 0.993892073631286620f, + 0.077914200723171234f, 0.994128763675689700f, 0.076398596167564392f, + 0.994360864162445070f, 0.074882268905639648f, + 0.994588255882263180f, 0.073365233838558197f, 0.994810998439788820f, + 0.071847513318061829f, 0.995029091835021970f, 0.070329122245311737f, + 0.995242536067962650f, 0.068810060620307922f, + 0.995451331138610840f, 0.067290350794792175f, 0.995655417442321780f, + 0.065770015120506287f, 0.995854854583740230f, 0.064249053597450256f, + 0.996049642562866210f, 0.062727488577365875f, + 0.996239781379699710f, 0.061205338686704636f, 0.996425211429595950f, + 0.059682607650756836f, 0.996605992317199710f, 0.058159314095973969f, + 0.996782064437866210f, 0.056635476648807526f, + 0.996953487396240230f, 0.055111102759838104f, 0.997120201587677000f, + 0.053586211055517197f, 0.997282266616821290f, 0.052060816437005997f, + 0.997439682483673100f, 0.050534930080175400f, + 0.997592389583587650f, 0.049008570611476898f, 0.997740387916564940f, + 0.047481749206781387f, 0.997883677482604980f, 0.045954477041959763f, + 0.998022377490997310f, 0.044426776468753815f, + 0.998156309127807620f, 0.042898654937744141f, 0.998285591602325440f, + 0.041370131075382233f, 0.998410165309906010f, 0.039841219782829285f, + 0.998530030250549320f, 0.038311932235956192f, + 0.998645246028900150f, 0.036782283335924149f, 0.998755753040313720f, + 0.035252287983894348f, 0.998861551284790040f, 0.033721961081027985f, + 0.998962640762329100f, 0.032191313803195953f, + 0.999059081077575680f, 0.030660368502140045f, 0.999150753021240230f, + 0.029129132628440857f, 0.999237775802612300f, 0.027597622945904732f, + 0.999320089817047120f, 0.026065852493047714f, + 0.999397754669189450f, 0.024533838033676147f, 0.999470651149749760f, + 0.023001590743660927f, 0.999538838863372800f, 0.021469129249453545f, + 0.999602377414703370f, 0.019936462864279747f, + 0.999661207199096680f, 0.018403612077236176f, 0.999715328216552730f, + 0.016870586201548576f, 0.999764680862426760f, 0.015337402001023293f, + 0.999809384346008300f, 0.013804072514176369f, + 0.999849438667297360f, 0.012270614504814148f, 0.999884724617004390f, + 0.010737040080130100f, 0.999915301799774170f, 0.009203365072607994f, + 0.999941170215606690f, 0.007669602986425161f, + 0.999962329864501950f, 0.006135769188404083f, 0.999978840351104740f, + 0.004601877182722092f, 0.999990582466125490f, 0.003067942336201668f, + 0.999997675418853760f, 0.001533978385850787f, + 1.000000000000000000f, 0.000000000000023345f, 0.999997675418853760f, + -0.001533978385850787f, 0.999990582466125490f, -0.003067942336201668f, + 0.999978840351104740f, -0.004601877182722092f, + 0.999962329864501950f, -0.006135769188404083f, 0.999941170215606690f, + -0.007669602986425161f, 0.999915301799774170f, -0.009203365072607994f, + 0.999884724617004390f, -0.010737040080130100f, + 0.999849438667297360f, -0.012270614504814148f, 0.999809384346008300f, + -0.013804072514176369f, 0.999764680862426760f, -0.015337402001023293f, + 0.999715328216552730f, -0.016870586201548576f, + 0.999661207199096680f, -0.018403612077236176f, 0.999602377414703370f, + -0.019936462864279747f, 0.999538838863372800f, -0.021469129249453545f, + 0.999470651149749760f, -0.023001590743660927f, + 0.999397754669189450f, -0.024533838033676147f, 0.999320089817047120f, + -0.026065852493047714f, 0.999237775802612300f, -0.027597622945904732f, + 0.999150753021240230f, -0.029129132628440857f, + 0.999059081077575680f, -0.030660368502140045f, 0.998962640762329100f, + -0.032191313803195953f, 0.998861551284790040f, -0.033721961081027985f, + 0.998755753040313720f, -0.035252287983894348f, + 0.998645246028900150f, -0.036782283335924149f, 0.998530030250549320f, + -0.038311932235956192f, 0.998410165309906010f, -0.039841219782829285f, + 0.998285591602325440f, -0.041370131075382233f, + 0.998156309127807620f, -0.042898654937744141f, 0.998022377490997310f, + -0.044426776468753815f, 0.997883677482604980f, -0.045954477041959763f, + 0.997740387916564940f, -0.047481749206781387f, + 0.997592389583587650f, -0.049008570611476898f, 0.997439682483673100f, + -0.050534930080175400f, 0.997282266616821290f, -0.052060816437005997f, + 0.997120201587677000f, -0.053586211055517197f, + 0.996953487396240230f, -0.055111102759838104f, 0.996782064437866210f, + -0.056635476648807526f, 0.996605992317199710f, -0.058159314095973969f, + 0.996425211429595950f, -0.059682607650756836f, + 0.996239781379699710f, -0.061205338686704636f, 0.996049642562866210f, + -0.062727488577365875f, 0.995854854583740230f, -0.064249053597450256f, + 0.995655417442321780f, -0.065770015120506287f, + 0.995451331138610840f, -0.067290350794792175f, 0.995242536067962650f, + -0.068810060620307922f, 0.995029091835021970f, -0.070329122245311737f, + 0.994810998439788820f, -0.071847513318061829f, + 0.994588255882263180f, -0.073365233838558197f, 0.994360864162445070f, + -0.074882268905639648f, 0.994128763675689700f, -0.076398596167564392f, + 0.993892073631286620f, -0.077914200723171234f, + 0.993650734424591060f, -0.079429075121879578f, 0.993404686450958250f, + -0.080943197011947632f, 0.993154048919677730f, -0.082456558942794800f, + 0.992898762226104740f, -0.083969146013259888f, + 0.992638826370239260f, -0.085480943322181702f, 0.992374241352081300f, + -0.086991935968399048f, 0.992105066776275630f, -0.088502109050750732f, + 0.991831183433532710f, -0.090011447668075562f, + 0.991552770137786870f, -0.091519944369792938f, 0.991269648075103760f, + -0.093027576804161072f, 0.990981936454772950f, -0.094534330070018768f, + 0.990689575672149660f, -0.096040196716785431f, + 0.990392625331878660f, -0.097545161843299866f, 0.990091085433959960f, + -0.099049203097820282f, 0.989784896373748780f, -0.100552320480346680f, + 0.989474058151245120f, -0.102054484188556670f, + 0.989158689975738530f, -0.103555686771869660f, 0.988838672637939450f, + -0.105055920779705050f, 0.988514065742492680f, -0.106555156409740450f, + 0.988184869289398190f, -0.108053401112556460f, + 0.987851083278656010f, -0.109550617635250090f, 0.987512648105621340f, + -0.111046813428401950f, 0.987169682979583740f, -0.112541958689689640f, + 0.986822128295898440f, -0.114036038517951970f, + 0.986469984054565430f, -0.115529052913188930f, 0.986113250255584720f, + -0.117020979523658750f, 0.985751926898956300f, -0.118511803448200230f, + 0.985386073589324950f, -0.120001509785652160f, + 0.985015630722045900f, -0.121490091085433960f, 0.984640598297119140f, + -0.122977524995803830f, 0.984261035919189450f, -0.124463804066181180f, + 0.983876943588256840f, -0.125948905944824220f, + 0.983488261699676510f, -0.127432823181152340f, 0.983094990253448490f, + -0.128915548324584960f, 0.982697248458862300f, -0.130397051572799680f, + 0.982294917106628420f, -0.131877332925796510f, + 0.981888055801391600f, -0.133356377482414250f, 0.981476604938507080f, + -0.134834155440330510f, 0.981060683727264400f, -0.136310681700706480f, + 0.980640232563018800f, -0.137785911560058590f, + 0.980215251445770260f, -0.139259845018386840f, 0.979785740375518800f, + -0.140732467174530030f, 0.979351758956909180f, -0.142203763127326970f, + 0.978913187980651860f, -0.143673732876777650f, + 0.978470146656036380f, -0.145142331719398500f, 0.978022634983062740f, + -0.146609574556350710f, 0.977570593357086180f, -0.148075446486473080f, + 0.977114021778106690f, -0.149539917707443240f, + 0.976653039455413820f, -0.151002973318099980f, 0.976187527179718020f, + -0.152464613318443300f, 0.975717484951019290f, -0.153924822807312010f, + 0.975243031978607180f, -0.155383571982383730f, + 0.974764108657836910f, -0.156840875744819640f, 0.974280655384063720f, + -0.158296689391136170f, 0.973792791366577150f, -0.159751012921333310f, + 0.973300457000732420f, -0.161203846335411070f, + 0.972803652286529540f, -0.162655144929885860f, 0.972302436828613280f, + -0.164104923605918880f, 0.971796751022338870f, -0.165553152561187740f, + 0.971286594867706300f, -0.166999831795692440f, + 0.970772027969360350f, -0.168444931507110600f, 0.970253050327301030f, + -0.169888436794281010f, 0.969729602336883540f, -0.171330362558364870f, + 0.969201743602752690f, -0.172770664095878600f, + 0.968669533729553220f, -0.174209341406822200f, 0.968132853507995610f, + -0.175646379590034480f, 0.967591762542724610f, -0.177081763744354250f, + 0.967046260833740230f, -0.178515478968620300f, + 0.966496407985687260f, -0.179947525262832640f, 0.965942144393920900f, + -0.181377857923507690f, 0.965383470058441160f, -0.182806491851806640f, + 0.964820444583892820f, -0.184233412146568300f, + 0.964253067970275880f, -0.185658603906631470f, 0.963681280612945560f, + -0.187082037329673770f, 0.963105142116546630f, -0.188503712415695190f, + 0.962524592876434330f, -0.189923599362373350f, + 0.961939752101898190f, -0.191341713070869450f, 0.961350560188293460f, + -0.192758023738861080f, 0.960757017135620120f, -0.194172516465187070f, + 0.960159122943878170f, -0.195585191249847410f, + 0.959556937217712400f, -0.196996018290519710f, 0.958950400352478030f, + -0.198404997587203980f, 0.958339512348175050f, -0.199812099337577820f, + 0.957724332809448240f, -0.201217323541641240f, + 0.957104861736297610f, -0.202620655298233030f, 0.956481099128723140f, + -0.204022079706192020f, 0.955853044986724850f, -0.205421581864356990f, + 0.955220639705657960f, -0.206819161772727970f, + 0.954584002494812010f, -0.208214774727821350f, 0.953943073749542240f, + -0.209608450531959530f, 0.953297853469848630f, -0.211000129580497740f, + 0.952648401260375980f, -0.212389841675758360f, + 0.951994657516479490f, -0.213777542114257810f, 0.951336681842803960f, + -0.215163245797157290f, 0.950674414634704590f, -0.216546908020973210f, + 0.950007975101470950f, -0.217928543686866760f, + 0.949337244033813480f, -0.219308122992515560f, 0.948662281036376950f, + -0.220685631036758420f, 0.947983145713806150f, -0.222061067819595340f, + 0.947299718856811520f, -0.223434418439865110f, + 0.946612179279327390f, -0.224805667996406560f, 0.945920348167419430f, + -0.226174786686897280f, 0.945224344730377200f, -0.227541789412498470f, + 0.944524168968200680f, -0.228906646370887760f, + 0.943819820880889890f, -0.230269357562065120f, 0.943111240863800050f, + -0.231629893183708190f, 0.942398548126220700f, -0.232988253235816960f, + 0.941681683063507080f, -0.234344407916069030f, + 0.940960645675659180f, -0.235698372125625610f, 0.940235435962677000f, + -0.237050101161003110f, 0.939506113529205320f, -0.238399609923362730f, + 0.938772618770599370f, -0.239746883511543270f, + 0.938035070896148680f, -0.241091892123222350f, 0.937293350696563720f, + -0.242434620857238770f, 0.936547517776489260f, -0.243775084614753720f, + 0.935797572135925290f, -0.245113238692283630f, + 0.935043513774871830f, -0.246449097990989690f, 0.934285342693328860f, + -0.247782632708549500f, 0.933523118495941160f, -0.249113827943801880f, + 0.932756841182708740f, -0.250442683696746830f, + 0.931986451148986820f, -0.251769185066223140f, 0.931211948394775390f, + -0.253093332052230830f, 0.930433452129364010f, -0.254415065050125120f, + 0.929650902748107910f, -0.255734413862228390f, + 0.928864300251007080f, -0.257051378488540650f, 0.928073644638061520f, + -0.258365899324417110f, 0.927278995513916020f, -0.259678006172180180f, + 0.926480293273925780f, -0.260987639427185060f, + 0.925677597522735600f, -0.262294828891754150f, 0.924870908260345460f, + -0.263599574565887450f, 0.924060165882110600f, -0.264901816844940190f, + 0.923245489597320560f, -0.266201555728912350f, + 0.922426760196685790f, -0.267498821020126340f, 0.921604096889495850f, + -0.268793523311614990f, 0.920777499675750730f, -0.270085722208023070f, + 0.919946908950805660f, -0.271375387907028200f, + 0.919112324714660640f, -0.272662490606307980f, 0.918273866176605220f, + -0.273947030305862430f, 0.917431414127349850f, -0.275228977203369140f, + 0.916585087776184080f, -0.276508361101150510f, + 0.915734827518463130f, -0.277785122394561770f, 0.914880633354187010f, + -0.279059261083602910f, 0.914022505283355710f, -0.280330777168273930f, + 0.913160502910614010f, -0.281599670648574830f, + 0.912294626235961910f, -0.282865911722183230f, 0.911424875259399410f, + -0.284129470586776730f, 0.910551249980926510f, -0.285390377044677730f, + 0.909673750400543210f, -0.286648571491241460f, + 0.908792436122894290f, -0.287904083728790280f, 0.907907187938690190f, + -0.289156883955001830f, 0.907018184661865230f, -0.290406972169876100f, + 0.906125307083129880f, -0.291654318571090700f, + 0.905228614807128910f, -0.292898923158645630f, 0.904328107833862300f, + -0.294140785932540890f, 0.903423786163330080f, -0.295379847288131710f, + 0.902515649795532230f, -0.296616137027740480f, + 0.901603758335113530f, -0.297849655151367190f, 0.900688111782073970f, + -0.299080342054367070f, 0.899768650531768800f, -0.300308227539062500f, + 0.898845434188842770f, -0.301533311605453490f, + 0.897918462753295900f, -0.302755534648895260f, 0.896987736225128170f, + -0.303974896669387820f, 0.896053314208984380f, -0.305191397666931150f, + 0.895115137100219730f, -0.306405037641525270f, + 0.894173204898834230f, -0.307615786790847780f, 0.893227577209472660f, + -0.308823645114898680f, 0.892278313636779790f, -0.310028612613677980f, + 0.891325294971466060f, -0.311230629682540890f, + 0.890368640422821040f, -0.312429755926132200f, 0.889408230781555180f, + -0.313625901937484740f, 0.888444244861602780f, -0.314819127321243290f, + 0.887476563453674320f, -0.316009372472763060f, + 0.886505246162414550f, -0.317196637392044070f, 0.885530233383178710f, + -0.318380922079086300f, 0.884551644325256350f, -0.319562226533889770f, + 0.883569478988647460f, -0.320740520954132080f, + 0.882583618164062500f, -0.321915775537490840f, 0.881594181060791020f, + -0.323088020086288450f, 0.880601167678833010f, -0.324257194995880130f, + 0.879604578018188480f, -0.325423330068588260f, + 0.878604412078857420f, -0.326586425304412840f, 0.877600669860839840f, + -0.327746421098709110f, 0.876593410968780520f, -0.328903347253799440f, + 0.875582575798034670f, -0.330057173967361450f, + 0.874568223953247070f, -0.331207901239395140f, 0.873550295829772950f, + -0.332355499267578130f, 0.872528910636901860f, -0.333499968051910400f, + 0.871503949165344240f, -0.334641307592391970f, + 0.870475590229034420f, -0.335779488086700440f, 0.869443655014038090f, + -0.336914509534835820f, 0.868408262729644780f, -0.338046342134475710f, + 0.867369413375854490f, -0.339175015687942500f, + 0.866327106952667240f, -0.340300500392913820f, 0.865281403064727780f, + -0.341422766447067260f, 0.864232182502746580f, -0.342541843652725220f, + 0.863179564476013180f, -0.343657672405242920f, + 0.862123548984527590f, -0.344770282506942750f, 0.861064076423645020f, + -0.345879614353179930f, 0.860001266002655030f, -0.346985727548599240f, + 0.858934998512268070f, -0.348088562488555910f, + 0.857865393161773680f, -0.349188119173049930f, 0.856792449951171880f, + -0.350284397602081300f, 0.855716109275817870f, -0.351377367973327640f, + 0.854636430740356450f, -0.352467030286788940f, + 0.853553414344787600f, -0.353553384542465210f, 0.852467060089111330f, + -0.354636400938034060f, 0.851377367973327640f, -0.355716109275817870f, + 0.850284397602081300f, -0.356792420148849490f, + 0.849188148975372310f, -0.357865422964096070f, 0.848088562488555910f, + -0.358935028314590450f, 0.846985757350921630f, -0.360001266002655030f, + 0.845879614353179930f, -0.361064106225967410f, + 0.844770252704620360f, -0.362123548984527590f, 0.843657672405242920f, + -0.363179564476013180f, 0.842541813850402830f, -0.364232182502746580f, + 0.841422796249389650f, -0.365281373262405400f, + 0.840300500392913820f, -0.366327136754989620f, 0.839175045490264890f, + -0.367369443178176880f, 0.838046371936798100f, -0.368408292531967160f, + 0.836914479732513430f, -0.369443655014038090f, + 0.835779488086700440f, -0.370475560426712040f, 0.834641277790069580f, + -0.371503978967666630f, 0.833499968051910400f, -0.372528880834579470f, + 0.832355499267578130f, -0.373550295829772950f, + 0.831207871437072750f, -0.374568194150924680f, 0.830057144165039060f, + -0.375582575798034670f, 0.828903317451477050f, -0.376593410968780520f, + 0.827746450901031490f, -0.377600699663162230f, + 0.826586425304412840f, -0.378604412078857420f, 0.825423359870910640f, + -0.379604607820510860f, 0.824257194995880130f, -0.380601197481155400f, + 0.823087990283966060f, -0.381594210863113400f, + 0.821915745735168460f, -0.382583618164062500f, 0.820740520954132080f, + -0.383569449186325070f, 0.819562196731567380f, -0.384551674127578740f, + 0.818380951881408690f, -0.385530263185501100f, + 0.817196667194366460f, -0.386505216360092160f, 0.816009342670440670f, + -0.387476563453674320f, 0.814819097518920900f, -0.388444244861602780f, + 0.813625931739807130f, -0.389408260583877560f, + 0.812429726123809810f, -0.390368610620498660f, 0.811230659484863280f, + -0.391325294971466060f, 0.810028612613677980f, -0.392278283834457400f, + 0.808823645114898680f, -0.393227607011795040f, + 0.807615816593170170f, -0.394173204898834230f, 0.806405067443847660f, + -0.395115107297897340f, 0.805191397666931150f, -0.396053284406661990f, + 0.803974866867065430f, -0.396987736225128170f, + 0.802755534648895260f, -0.397918462753295900f, 0.801533281803131100f, + -0.398845434188842770f, 0.800308227539062500f, -0.399768620729446410f, + 0.799080371856689450f, -0.400688081979751590f, + 0.797849655151367190f, -0.401603758335113530f, 0.796616137027740480f, + -0.402515679597854610f, 0.795379877090454100f, -0.403423786163330080f, + 0.794140756130218510f, -0.404328078031539920f, + 0.792898952960968020f, -0.405228585004806520f, 0.791654348373413090f, + -0.406125307083129880f, 0.790407001972198490f, -0.407018154859542850f, + 0.789156913757324220f, -0.407907217741012570f, + 0.787904083728790280f, -0.408792406320571900f, 0.786648571491241460f, + -0.409673750400543210f, 0.785390377044677730f, -0.410551249980926510f, + 0.784129500389099120f, -0.411424905061721800f, + 0.782865881919860840f, -0.412294656038284300f, 0.781599700450897220f, + -0.413160532712936400f, 0.780330777168273930f, -0.414022535085678100f, + 0.779059290885925290f, -0.414880603551864620f, + 0.777785122394561770f, -0.415734797716140750f, 0.776508331298828130f, + -0.416585087776184080f, 0.775228977203369140f, -0.417431443929672240f, + 0.773947000503540040f, -0.418273866176605220f, + 0.772662520408630370f, -0.419112354516983030f, 0.771375417709350590f, + -0.419946908950805660f, 0.770085752010345460f, -0.420777499675750730f, + 0.768793523311614990f, -0.421604126691818240f, + 0.767498791217803960f, -0.422426789999008180f, 0.766201555728912350f, + -0.423245459794998170f, 0.764901816844940190f, -0.424060165882110600f, + 0.763599574565887450f, -0.424870878458023070f, + 0.762294828891754150f, -0.425677597522735600f, 0.760987639427185060f, + -0.426480293273925780f, 0.759678006172180180f, -0.427278995513916020f, + 0.758365929126739500f, -0.428073674440383910f, + 0.757051348686218260f, -0.428864300251007080f, 0.755734443664550780f, + -0.429650902748107910f, 0.754415094852447510f, -0.430433481931686400f, + 0.753093302249908450f, -0.431211978197097780f, + 0.751769185066223140f, -0.431986421346664430f, 0.750442683696746830f, + -0.432756811380386350f, 0.749113857746124270f, -0.433523118495941160f, + 0.747782647609710690f, -0.434285342693328860f, + 0.746449112892150880f, -0.435043483972549440f, 0.745113253593444820f, + -0.435797542333602910f, 0.743775069713592530f, -0.436547487974166870f, + 0.742434620857238770f, -0.437293320894241330f, + 0.741091907024383540f, -0.438035041093826290f, 0.739746868610382080f, + -0.438772648572921750f, 0.738399624824523930f, -0.439506113529205320f, + 0.737050116062164310f, -0.440235435962677000f, + 0.735698342323303220f, -0.440960645675659180f, 0.734344422817230220f, + -0.441681683063507080f, 0.732988238334655760f, -0.442398548126220700f, + 0.731629908084869380f, -0.443111270666122440f, + 0.730269372463226320f, -0.443819820880889890f, 0.728906631469726560f, + -0.444524168968200680f, 0.727541804313659670f, -0.445224374532699580f, + 0.726174771785736080f, -0.445920348167419430f, + 0.724805653095245360f, -0.446612149477005000f, 0.723434448242187500f, + -0.447299748659133910f, 0.722061097621917720f, -0.447983115911483760f, + 0.720685660839080810f, -0.448662281036376950f, + 0.719308137893676760f, -0.449337244033813480f, 0.717928528785705570f, + -0.450007945299148560f, 0.716546893119812010f, -0.450674414634704590f, + 0.715163230895996090f, -0.451336652040481570f, + 0.713777542114257810f, -0.451994657516479490f, 0.712389826774597170f, + -0.452648371458053590f, 0.711000144481658940f, -0.453297853469848630f, + 0.709608435630798340f, -0.453943043947219850f, + 0.708214759826660160f, -0.454584002494812010f, 0.706819176673889160f, + -0.455220639705657960f, 0.705421566963195800f, -0.455853015184402470f, + 0.704022109508514400f, -0.456481099128723140f, + 0.702620685100555420f, -0.457104891538620000f, 0.701217353343963620f, + -0.457724362611770630f, 0.699812114238739010f, -0.458339542150497440f, + 0.698404967784881590f, -0.458950400352478030f, + 0.696996033191680910f, -0.459556937217712400f, 0.695585191249847410f, + -0.460159152746200560f, 0.694172501564025880f, -0.460757017135620120f, + 0.692758023738861080f, -0.461350560188293460f, + 0.691341698169708250f, -0.461939752101898190f, 0.689923584461212160f, + -0.462524622678756710f, 0.688503682613372800f, -0.463105112314224240f, + 0.687082052230834960f, -0.463681250810623170f, + 0.685658574104309080f, -0.464253038167953490f, 0.684233427047729490f, + -0.464820444583892820f, 0.682806491851806640f, -0.465383470058441160f, + 0.681377887725830080f, -0.465942144393920900f, + 0.679947495460510250f, -0.466496407985687260f, 0.678515493869781490f, + -0.467046260833740230f, 0.677081763744354250f, -0.467591762542724610f, + 0.675646364688873290f, -0.468132823705673220f, + 0.674209356307983400f, -0.468669503927230830f, 0.672770678997039790f, + -0.469201773405075070f, 0.671330332756042480f, -0.469729602336883540f, + 0.669888436794281010f, -0.470253020524978640f, + 0.668444931507110600f, -0.470772027969360350f, 0.666999816894531250f, + -0.471286594867706300f, 0.665553152561187740f, -0.471796721220016480f, + 0.664104938507080080f, -0.472302407026290890f, + 0.662655174732208250f, -0.472803652286529540f, 0.661203861236572270f, + -0.473300457000732420f, 0.659750998020172120f, -0.473792791366577150f, + 0.658296704292297360f, -0.474280685186386110f, + 0.656840860843658450f, -0.474764078855514530f, 0.655383586883544920f, + -0.475243031978607180f, 0.653924822807312010f, -0.475717514753341670f, + 0.652464628219604490f, -0.476187497377395630f, + 0.651003003120422360f, -0.476653009653091430f, 0.649539887905120850f, + -0.477114051580429080f, 0.648075461387634280f, -0.477570593357086180f, + 0.646609604358673100f, -0.478022634983062740f, + 0.645142316818237300f, -0.478470176458358760f, 0.643673717975616460f, + -0.478913217782974240f, 0.642203748226165770f, -0.479351729154586790f, + 0.640732467174530030f, -0.479785770177841190f, + 0.639259815216064450f, -0.480215251445770260f, 0.637785911560058590f, + -0.480640232563018800f, 0.636310696601867680f, -0.481060713529586790f, + 0.634834170341491700f, -0.481476634740829470f, + 0.633356392383575440f, -0.481888025999069210f, 0.631877362728118900f, + -0.482294887304306030f, 0.630397081375122070f, -0.482697218656539920f, + 0.628915548324584960f, -0.483094990253448490f, + 0.627432823181152340f, -0.483488231897354130f, 0.625948905944824220f, + -0.483876913785934450f, 0.624463796615600590f, -0.484261035919189450f, + 0.622977554798126220f, -0.484640628099441530f, + 0.621490061283111570f, -0.485015630722045900f, 0.620001494884490970f, + -0.485386073589324950f, 0.618511795997619630f, -0.485751956701278690f, + 0.617020964622497560f, -0.486113250255584720f, + 0.615529060363769530f, -0.486469984054565430f, 0.614036023616790770f, + -0.486822128295898440f, 0.612541973590850830f, -0.487169682979583740f, + 0.611046791076660160f, -0.487512677907943730f, + 0.609550595283508300f, -0.487851053476333620f, 0.608053386211395260f, + -0.488184869289398190f, 0.606555163860321040f, -0.488514065742492680f, + 0.605055928230285640f, -0.488838672637939450f, + 0.603555679321289060f, -0.489158689975738530f, 0.602054476737976070f, + -0.489474087953567500f, 0.600552320480346680f, -0.489784896373748780f, + 0.599049210548400880f, -0.490091055631637570f, + 0.597545146942138670f, -0.490392625331878660f, 0.596040189266204830f, + -0.490689605474472050f, 0.594534337520599370f, -0.490981936454772950f, + 0.593027591705322270f, -0.491269648075103760f, + 0.591519951820373540f, -0.491552740335464480f, 0.590011477470397950f, + -0.491831213235855100f, 0.588502109050750730f, -0.492105036973953250f, + 0.586991965770721440f, -0.492374241352081300f, + 0.585480928421020510f, -0.492638826370239260f, 0.583969175815582280f, + -0.492898762226104740f, 0.582456588745117190f, -0.493154048919677730f, + 0.580943167209625240f, -0.493404686450958250f, + 0.579429090023040770f, -0.493650704622268680f, 0.577914178371429440f, + -0.493892073631286620f, 0.576398611068725590f, -0.494128793478012080f, + 0.574882268905639650f, -0.494360834360122680f, + 0.573365211486816410f, -0.494588255882263180f, 0.571847498416900630f, + -0.494810998439788820f, 0.570329129695892330f, -0.495029091835021970f, + 0.568810045719146730f, -0.495242536067962650f, + 0.567290365695953370f, -0.495451331138610840f, 0.565770030021667480f, + -0.495655417442321780f, 0.564249038696289060f, -0.495854884386062620f, + 0.562727510929107670f, -0.496049642562866210f, + 0.561205327510833740f, -0.496239781379699710f, 0.559682607650756840f, + -0.496425211429595950f, 0.558159291744232180f, -0.496605962514877320f, + 0.556635499000549320f, -0.496782064437866210f, + 0.555111110210418700f, -0.496953487396240230f, 0.553586184978485110f, + -0.497120231389999390f, 0.552060842514038090f, -0.497282296419143680f, + 0.550534904003143310f, -0.497439652681350710f, + 0.549008548259735110f, -0.497592359781265260f, 0.547481775283813480f, + -0.497740387916564940f, 0.545954465866088870f, -0.497883707284927370f, + 0.544426798820495610f, -0.498022347688674930f, + 0.542898654937744140f, -0.498156309127807620f, 0.541370153427124020f, + -0.498285561800003050f, 0.539841234683990480f, -0.498410135507583620f, + 0.538311958312988280f, -0.498530030250549320f, + 0.536782264709472660f, -0.498645216226577760f, 0.535252273082733150f, + -0.498755723237991330f, 0.533721983432769780f, -0.498861521482467650f, + 0.532191336154937740f, -0.498962640762329100f, + 0.530660390853881840f, -0.499059051275253300f, 0.529129147529602050f, + -0.499150782823562620f, 0.527597606182098390f, -0.499237775802612300f, + 0.526065826416015630f, -0.499320119619369510f, + 0.524533808231353760f, -0.499397724866867070f, 0.523001611232757570f, + -0.499470651149749760f, 0.521469116210937500f, -0.499538868665695190f, + 0.519936442375183110f, -0.499602377414703370f, + 0.518403589725494380f, -0.499661177396774290f, 0.516870558261871340f, + -0.499715298414230350f, 0.515337407588958740f, -0.499764710664749150f, + 0.513804078102111820f, -0.499809414148330690f, + 0.512270629405975340f, -0.499849408864974980f, 0.510737061500549320f, + -0.499884694814682010f, 0.509203374385833740f, -0.499915301799774170f, + 0.507669627666473390f, -0.499941170215606690f, + 0.506135761737823490f, -0.499962359666824340f, 0.504601895809173580f, + -0.499978810548782350f, 0.503067970275878910f, -0.499990582466125490f, + 0.501533985137939450f, -0.499997645616531370f +}; + + + +/** +* @brief Initialization function for the floating-point RFFT/RIFFT. +* @param[in,out] *S points to an instance of the floating-point RFFT/RIFFT structure. +* @param[in,out] *S_CFFT points to an instance of the floating-point CFFT/CIFFT structure. +* @param[in] fftLenReal length of the FFT. +* @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. +* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. +* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value. +* +* \par Description: +* \par +* The parameter fftLenReal Specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 128, 512, 2048. +* \par +* The parameter ifftFlagR controls whether a forward or inverse transform is computed. +* Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated. +* \par +* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. +* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. +* \par +* This function also initializes Twiddle factor table. +*/ + +arm_status arm_rfft_init_f32( + arm_rfft_instance_f32 * S, + arm_cfft_radix4_instance_f32 * S_CFFT, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag) +{ + + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + + /* Initialize the Real FFT length */ + S->fftLenReal = (uint16_t) fftLenReal; + + /* Initialize the Complex FFT length */ + S->fftLenBy2 = (uint16_t) fftLenReal / 2u; + + /* Initialize the Twiddle coefficientA pointer */ + S->pTwiddleAReal = (float32_t *) realCoefA; + + /* Initialize the Twiddle coefficientB pointer */ + S->pTwiddleBReal = (float32_t *) realCoefB; + + /* Initialize the Flag for selection of RFFT or RIFFT */ + S->ifftFlagR = (uint8_t) ifftFlagR; + + /* Initialize the Flag for calculation Bit reversal or not */ + S->bitReverseFlagR = (uint8_t) bitReverseFlag; + + /* Initializations of structure parameters depending on the FFT length */ + switch (S->fftLenReal) + { + /* Init table modifier value */ + case 2048u: + S->twidCoefRModifier = 1u; + break; + case 512u: + S->twidCoefRModifier = 4u; + break; + case 128u: + S->twidCoefRModifier = 16u; + break; + default: + /* Reporting argument error if rfftSize is not valid value */ + status = ARM_MATH_ARGUMENT_ERROR; + break; + } + + /* Init Complex FFT Instance */ + S->pCfft = S_CFFT; + + if(S->ifftFlagR) + { + /* Initializes the CIFFT Module for fftLenreal/2 length */ + arm_cfft_radix4_init_f32(S->pCfft, S->fftLenBy2, 1u, 0u); + } + else + { + /* Initializes the CFFT Module for fftLenreal/2 length */ + arm_cfft_radix4_init_f32(S->pCfft, S->fftLenBy2, 0u, 0u); + } + + /* return the status of RFFT Init function */ + return (status); + +} + + /** + * @} end of RFFT_RIFFT group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q15.c new file mode 100644 index 000000000..843a33bce --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q15.c @@ -0,0 +1,688 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_rfft_init_q15.c +* +* Description: RFFT & RIFFT Q15 initialisation function +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + + +#include "arm_math.h" + +/** + * @ingroup groupTransforms + */ + +/** + * @addtogroup RFFT_RIFFT + * @{ + */ + + + +/** +* \par +* Generation floating point real_CoefA array: +* \par +* n = 1024 +*
for (i = 0; i < n; i++)   
+*  {   
+*    pATable[2 * i] = 0.5 * (1.0 - sin (2 * PI / (double) (2 * n) * (double) i));   
+*    pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));   
+*  } 
+* \par +* Convert to fixed point Q15 format +* round(pATable[i] * pow(2, 15)) +*/ + + +static const q15_t realCoefAQ15[2048] = { + + 0x4000, 0xc000, 0x3fce, 0xc000, 0x3f9b, 0xc000, 0x3f69, 0xc001, + 0x3f37, 0xc001, 0x3f05, 0xc002, 0x3ed2, 0xc003, 0x3ea0, 0xc004, + 0x3e6e, 0xc005, 0x3e3c, 0xc006, 0x3e09, 0xc008, 0x3dd7, 0xc009, + 0x3da5, 0xc00b, 0x3d73, 0xc00d, 0x3d40, 0xc00f, 0x3d0e, 0xc011, + 0x3cdc, 0xc014, 0x3caa, 0xc016, 0x3c78, 0xc019, 0x3c45, 0xc01c, + 0x3c13, 0xc01f, 0x3be1, 0xc022, 0x3baf, 0xc025, 0x3b7d, 0xc029, + 0x3b4b, 0xc02c, 0x3b19, 0xc030, 0x3ae6, 0xc034, 0x3ab4, 0xc038, + 0x3a82, 0xc03c, 0x3a50, 0xc041, 0x3a1e, 0xc045, 0x39ec, 0xc04a, + 0x39ba, 0xc04f, 0x3988, 0xc054, 0x3956, 0xc059, 0x3924, 0xc05e, + 0x38f2, 0xc064, 0x38c0, 0xc069, 0x388e, 0xc06f, 0x385c, 0xc075, + 0x382a, 0xc07b, 0x37f9, 0xc081, 0x37c7, 0xc088, 0x3795, 0xc08e, + 0x3763, 0xc095, 0x3731, 0xc09c, 0x36ff, 0xc0a3, 0x36ce, 0xc0aa, + 0x369c, 0xc0b1, 0x366a, 0xc0b9, 0x3639, 0xc0c0, 0x3607, 0xc0c8, + 0x35d5, 0xc0d0, 0x35a4, 0xc0d8, 0x3572, 0xc0e0, 0x3540, 0xc0e9, + 0x350f, 0xc0f1, 0x34dd, 0xc0fa, 0x34ac, 0xc103, 0x347b, 0xc10c, + 0x3449, 0xc115, 0x3418, 0xc11e, 0x33e6, 0xc128, 0x33b5, 0xc131, + 0x3384, 0xc13b, 0x3352, 0xc145, 0x3321, 0xc14f, 0x32f0, 0xc159, + 0x32bf, 0xc163, 0x328e, 0xc16e, 0x325c, 0xc178, 0x322b, 0xc183, + 0x31fa, 0xc18e, 0x31c9, 0xc199, 0x3198, 0xc1a4, 0x3167, 0xc1b0, + 0x3136, 0xc1bb, 0x3105, 0xc1c7, 0x30d5, 0xc1d3, 0x30a4, 0xc1df, + 0x3073, 0xc1eb, 0x3042, 0xc1f7, 0x3012, 0xc204, 0x2fe1, 0xc210, + 0x2fb0, 0xc21d, 0x2f80, 0xc22a, 0x2f4f, 0xc237, 0x2f1f, 0xc244, + 0x2eee, 0xc251, 0x2ebe, 0xc25f, 0x2e8d, 0xc26d, 0x2e5d, 0xc27a, + 0x2e2d, 0xc288, 0x2dfc, 0xc296, 0x2dcc, 0xc2a5, 0x2d9c, 0xc2b3, + 0x2d6c, 0xc2c1, 0x2d3c, 0xc2d0, 0x2d0c, 0xc2df, 0x2cdc, 0xc2ee, + 0x2cac, 0xc2fd, 0x2c7c, 0xc30c, 0x2c4c, 0xc31c, 0x2c1c, 0xc32b, + 0x2bed, 0xc33b, 0x2bbd, 0xc34b, 0x2b8d, 0xc35b, 0x2b5e, 0xc36b, + 0x2b2e, 0xc37b, 0x2aff, 0xc38c, 0x2acf, 0xc39c, 0x2aa0, 0xc3ad, + 0x2a70, 0xc3be, 0x2a41, 0xc3cf, 0x2a12, 0xc3e0, 0x29e3, 0xc3f1, + 0x29b4, 0xc403, 0x2984, 0xc414, 0x2955, 0xc426, 0x2926, 0xc438, + 0x28f7, 0xc44a, 0x28c9, 0xc45c, 0x289a, 0xc46e, 0x286b, 0xc481, + 0x283c, 0xc493, 0x280e, 0xc4a6, 0x27df, 0xc4b9, 0x27b1, 0xc4cc, + 0x2782, 0xc4df, 0x2754, 0xc4f2, 0x2725, 0xc506, 0x26f7, 0xc51a, + 0x26c9, 0xc52d, 0x269b, 0xc541, 0x266d, 0xc555, 0x263f, 0xc569, + 0x2611, 0xc57e, 0x25e3, 0xc592, 0x25b5, 0xc5a7, 0x2587, 0xc5bb, + 0x2559, 0xc5d0, 0x252c, 0xc5e5, 0x24fe, 0xc5fa, 0x24d0, 0xc610, + 0x24a3, 0xc625, 0x2476, 0xc63b, 0x2448, 0xc650, 0x241b, 0xc666, + 0x23ee, 0xc67c, 0x23c1, 0xc692, 0x2394, 0xc6a8, 0x2367, 0xc6bf, + 0x233a, 0xc6d5, 0x230d, 0xc6ec, 0x22e0, 0xc703, 0x22b3, 0xc71a, + 0x2287, 0xc731, 0x225a, 0xc748, 0x222d, 0xc75f, 0x2201, 0xc777, + 0x21d5, 0xc78f, 0x21a8, 0xc7a6, 0x217c, 0xc7be, 0x2150, 0xc7d6, + 0x2124, 0xc7ee, 0x20f8, 0xc807, 0x20cc, 0xc81f, 0x20a0, 0xc838, + 0x2074, 0xc850, 0x2049, 0xc869, 0x201d, 0xc882, 0x1ff1, 0xc89b, + 0x1fc6, 0xc8b5, 0x1f9b, 0xc8ce, 0x1f6f, 0xc8e8, 0x1f44, 0xc901, + 0x1f19, 0xc91b, 0x1eee, 0xc935, 0x1ec3, 0xc94f, 0x1e98, 0xc969, + 0x1e6d, 0xc983, 0x1e42, 0xc99e, 0x1e18, 0xc9b8, 0x1ded, 0xc9d3, + 0x1dc3, 0xc9ee, 0x1d98, 0xca09, 0x1d6e, 0xca24, 0x1d44, 0xca3f, + 0x1d19, 0xca5b, 0x1cef, 0xca76, 0x1cc5, 0xca92, 0x1c9b, 0xcaad, + 0x1c72, 0xcac9, 0x1c48, 0xcae5, 0x1c1e, 0xcb01, 0x1bf5, 0xcb1e, + 0x1bcb, 0xcb3a, 0x1ba2, 0xcb56, 0x1b78, 0xcb73, 0x1b4f, 0xcb90, + 0x1b26, 0xcbad, 0x1afd, 0xcbca, 0x1ad4, 0xcbe7, 0x1aab, 0xcc04, + 0x1a82, 0xcc21, 0x1a5a, 0xcc3f, 0x1a31, 0xcc5d, 0x1a08, 0xcc7a, + 0x19e0, 0xcc98, 0x19b8, 0xccb6, 0x198f, 0xccd4, 0x1967, 0xccf3, + 0x193f, 0xcd11, 0x1917, 0xcd30, 0x18ef, 0xcd4e, 0x18c8, 0xcd6d, + 0x18a0, 0xcd8c, 0x1878, 0xcdab, 0x1851, 0xcdca, 0x182a, 0xcde9, + 0x1802, 0xce08, 0x17db, 0xce28, 0x17b4, 0xce47, 0x178d, 0xce67, + 0x1766, 0xce87, 0x173f, 0xcea7, 0x1719, 0xcec7, 0x16f2, 0xcee7, + 0x16cb, 0xcf07, 0x16a5, 0xcf28, 0x167f, 0xcf48, 0x1659, 0xcf69, + 0x1632, 0xcf8a, 0x160c, 0xcfab, 0x15e6, 0xcfcc, 0x15c1, 0xcfed, + 0x159b, 0xd00e, 0x1575, 0xd030, 0x1550, 0xd051, 0x152a, 0xd073, + 0x1505, 0xd094, 0x14e0, 0xd0b6, 0x14bb, 0xd0d8, 0x1496, 0xd0fa, + 0x1471, 0xd11c, 0x144c, 0xd13e, 0x1428, 0xd161, 0x1403, 0xd183, + 0x13df, 0xd1a6, 0x13ba, 0xd1c9, 0x1396, 0xd1eb, 0x1372, 0xd20e, + 0x134e, 0xd231, 0x132a, 0xd255, 0x1306, 0xd278, 0x12e2, 0xd29b, + 0x12bf, 0xd2bf, 0x129b, 0xd2e2, 0x1278, 0xd306, 0x1255, 0xd32a, + 0x1231, 0xd34e, 0x120e, 0xd372, 0x11eb, 0xd396, 0x11c9, 0xd3ba, + 0x11a6, 0xd3df, 0x1183, 0xd403, 0x1161, 0xd428, 0x113e, 0xd44c, + 0x111c, 0xd471, 0x10fa, 0xd496, 0x10d8, 0xd4bb, 0x10b6, 0xd4e0, + 0x1094, 0xd505, 0x1073, 0xd52a, 0x1051, 0xd550, 0x1030, 0xd575, + 0x100e, 0xd59b, 0xfed, 0xd5c1, 0xfcc, 0xd5e6, 0xfab, 0xd60c, + 0xf8a, 0xd632, 0xf69, 0xd659, 0xf48, 0xd67f, 0xf28, 0xd6a5, + 0xf07, 0xd6cb, 0xee7, 0xd6f2, 0xec7, 0xd719, 0xea7, 0xd73f, + 0xe87, 0xd766, 0xe67, 0xd78d, 0xe47, 0xd7b4, 0xe28, 0xd7db, + 0xe08, 0xd802, 0xde9, 0xd82a, 0xdca, 0xd851, 0xdab, 0xd878, + 0xd8c, 0xd8a0, 0xd6d, 0xd8c8, 0xd4e, 0xd8ef, 0xd30, 0xd917, + 0xd11, 0xd93f, 0xcf3, 0xd967, 0xcd4, 0xd98f, 0xcb6, 0xd9b8, + 0xc98, 0xd9e0, 0xc7a, 0xda08, 0xc5d, 0xda31, 0xc3f, 0xda5a, + 0xc21, 0xda82, 0xc04, 0xdaab, 0xbe7, 0xdad4, 0xbca, 0xdafd, + 0xbad, 0xdb26, 0xb90, 0xdb4f, 0xb73, 0xdb78, 0xb56, 0xdba2, + 0xb3a, 0xdbcb, 0xb1e, 0xdbf5, 0xb01, 0xdc1e, 0xae5, 0xdc48, + 0xac9, 0xdc72, 0xaad, 0xdc9b, 0xa92, 0xdcc5, 0xa76, 0xdcef, + 0xa5b, 0xdd19, 0xa3f, 0xdd44, 0xa24, 0xdd6e, 0xa09, 0xdd98, + 0x9ee, 0xddc3, 0x9d3, 0xdded, 0x9b8, 0xde18, 0x99e, 0xde42, + 0x983, 0xde6d, 0x969, 0xde98, 0x94f, 0xdec3, 0x935, 0xdeee, + 0x91b, 0xdf19, 0x901, 0xdf44, 0x8e8, 0xdf6f, 0x8ce, 0xdf9b, + 0x8b5, 0xdfc6, 0x89b, 0xdff1, 0x882, 0xe01d, 0x869, 0xe049, + 0x850, 0xe074, 0x838, 0xe0a0, 0x81f, 0xe0cc, 0x807, 0xe0f8, + 0x7ee, 0xe124, 0x7d6, 0xe150, 0x7be, 0xe17c, 0x7a6, 0xe1a8, + 0x78f, 0xe1d5, 0x777, 0xe201, 0x75f, 0xe22d, 0x748, 0xe25a, + 0x731, 0xe287, 0x71a, 0xe2b3, 0x703, 0xe2e0, 0x6ec, 0xe30d, + 0x6d5, 0xe33a, 0x6bf, 0xe367, 0x6a8, 0xe394, 0x692, 0xe3c1, + 0x67c, 0xe3ee, 0x666, 0xe41b, 0x650, 0xe448, 0x63b, 0xe476, + 0x625, 0xe4a3, 0x610, 0xe4d0, 0x5fa, 0xe4fe, 0x5e5, 0xe52c, + 0x5d0, 0xe559, 0x5bb, 0xe587, 0x5a7, 0xe5b5, 0x592, 0xe5e3, + 0x57e, 0xe611, 0x569, 0xe63f, 0x555, 0xe66d, 0x541, 0xe69b, + 0x52d, 0xe6c9, 0x51a, 0xe6f7, 0x506, 0xe725, 0x4f2, 0xe754, + 0x4df, 0xe782, 0x4cc, 0xe7b1, 0x4b9, 0xe7df, 0x4a6, 0xe80e, + 0x493, 0xe83c, 0x481, 0xe86b, 0x46e, 0xe89a, 0x45c, 0xe8c9, + 0x44a, 0xe8f7, 0x438, 0xe926, 0x426, 0xe955, 0x414, 0xe984, + 0x403, 0xe9b4, 0x3f1, 0xe9e3, 0x3e0, 0xea12, 0x3cf, 0xea41, + 0x3be, 0xea70, 0x3ad, 0xeaa0, 0x39c, 0xeacf, 0x38c, 0xeaff, + 0x37b, 0xeb2e, 0x36b, 0xeb5e, 0x35b, 0xeb8d, 0x34b, 0xebbd, + 0x33b, 0xebed, 0x32b, 0xec1c, 0x31c, 0xec4c, 0x30c, 0xec7c, + 0x2fd, 0xecac, 0x2ee, 0xecdc, 0x2df, 0xed0c, 0x2d0, 0xed3c, + 0x2c1, 0xed6c, 0x2b3, 0xed9c, 0x2a5, 0xedcc, 0x296, 0xedfc, + 0x288, 0xee2d, 0x27a, 0xee5d, 0x26d, 0xee8d, 0x25f, 0xeebe, + 0x251, 0xeeee, 0x244, 0xef1f, 0x237, 0xef4f, 0x22a, 0xef80, + 0x21d, 0xefb0, 0x210, 0xefe1, 0x204, 0xf012, 0x1f7, 0xf042, + 0x1eb, 0xf073, 0x1df, 0xf0a4, 0x1d3, 0xf0d5, 0x1c7, 0xf105, + 0x1bb, 0xf136, 0x1b0, 0xf167, 0x1a4, 0xf198, 0x199, 0xf1c9, + 0x18e, 0xf1fa, 0x183, 0xf22b, 0x178, 0xf25c, 0x16e, 0xf28e, + 0x163, 0xf2bf, 0x159, 0xf2f0, 0x14f, 0xf321, 0x145, 0xf352, + 0x13b, 0xf384, 0x131, 0xf3b5, 0x128, 0xf3e6, 0x11e, 0xf418, + 0x115, 0xf449, 0x10c, 0xf47b, 0x103, 0xf4ac, 0xfa, 0xf4dd, + 0xf1, 0xf50f, 0xe9, 0xf540, 0xe0, 0xf572, 0xd8, 0xf5a4, + 0xd0, 0xf5d5, 0xc8, 0xf607, 0xc0, 0xf639, 0xb9, 0xf66a, + 0xb1, 0xf69c, 0xaa, 0xf6ce, 0xa3, 0xf6ff, 0x9c, 0xf731, + 0x95, 0xf763, 0x8e, 0xf795, 0x88, 0xf7c7, 0x81, 0xf7f9, + 0x7b, 0xf82a, 0x75, 0xf85c, 0x6f, 0xf88e, 0x69, 0xf8c0, + 0x64, 0xf8f2, 0x5e, 0xf924, 0x59, 0xf956, 0x54, 0xf988, + 0x4f, 0xf9ba, 0x4a, 0xf9ec, 0x45, 0xfa1e, 0x41, 0xfa50, + 0x3c, 0xfa82, 0x38, 0xfab4, 0x34, 0xfae6, 0x30, 0xfb19, + 0x2c, 0xfb4b, 0x29, 0xfb7d, 0x25, 0xfbaf, 0x22, 0xfbe1, + 0x1f, 0xfc13, 0x1c, 0xfc45, 0x19, 0xfc78, 0x16, 0xfcaa, + 0x14, 0xfcdc, 0x11, 0xfd0e, 0xf, 0xfd40, 0xd, 0xfd73, + 0xb, 0xfda5, 0x9, 0xfdd7, 0x8, 0xfe09, 0x6, 0xfe3c, + 0x5, 0xfe6e, 0x4, 0xfea0, 0x3, 0xfed2, 0x2, 0xff05, + 0x1, 0xff37, 0x1, 0xff69, 0x0, 0xff9b, 0x0, 0xffce, + 0x0, 0x0, 0x0, 0x32, 0x0, 0x65, 0x1, 0x97, + 0x1, 0xc9, 0x2, 0xfb, 0x3, 0x12e, 0x4, 0x160, + 0x5, 0x192, 0x6, 0x1c4, 0x8, 0x1f7, 0x9, 0x229, + 0xb, 0x25b, 0xd, 0x28d, 0xf, 0x2c0, 0x11, 0x2f2, + 0x14, 0x324, 0x16, 0x356, 0x19, 0x388, 0x1c, 0x3bb, + 0x1f, 0x3ed, 0x22, 0x41f, 0x25, 0x451, 0x29, 0x483, + 0x2c, 0x4b5, 0x30, 0x4e7, 0x34, 0x51a, 0x38, 0x54c, + 0x3c, 0x57e, 0x41, 0x5b0, 0x45, 0x5e2, 0x4a, 0x614, + 0x4f, 0x646, 0x54, 0x678, 0x59, 0x6aa, 0x5e, 0x6dc, + 0x64, 0x70e, 0x69, 0x740, 0x6f, 0x772, 0x75, 0x7a4, + 0x7b, 0x7d6, 0x81, 0x807, 0x88, 0x839, 0x8e, 0x86b, + 0x95, 0x89d, 0x9c, 0x8cf, 0xa3, 0x901, 0xaa, 0x932, + 0xb1, 0x964, 0xb9, 0x996, 0xc0, 0x9c7, 0xc8, 0x9f9, + 0xd0, 0xa2b, 0xd8, 0xa5c, 0xe0, 0xa8e, 0xe9, 0xac0, + 0xf1, 0xaf1, 0xfa, 0xb23, 0x103, 0xb54, 0x10c, 0xb85, + 0x115, 0xbb7, 0x11e, 0xbe8, 0x128, 0xc1a, 0x131, 0xc4b, + 0x13b, 0xc7c, 0x145, 0xcae, 0x14f, 0xcdf, 0x159, 0xd10, + 0x163, 0xd41, 0x16e, 0xd72, 0x178, 0xda4, 0x183, 0xdd5, + 0x18e, 0xe06, 0x199, 0xe37, 0x1a4, 0xe68, 0x1b0, 0xe99, + 0x1bb, 0xeca, 0x1c7, 0xefb, 0x1d3, 0xf2b, 0x1df, 0xf5c, + 0x1eb, 0xf8d, 0x1f7, 0xfbe, 0x204, 0xfee, 0x210, 0x101f, + 0x21d, 0x1050, 0x22a, 0x1080, 0x237, 0x10b1, 0x244, 0x10e1, + 0x251, 0x1112, 0x25f, 0x1142, 0x26d, 0x1173, 0x27a, 0x11a3, + 0x288, 0x11d3, 0x296, 0x1204, 0x2a5, 0x1234, 0x2b3, 0x1264, + 0x2c1, 0x1294, 0x2d0, 0x12c4, 0x2df, 0x12f4, 0x2ee, 0x1324, + 0x2fd, 0x1354, 0x30c, 0x1384, 0x31c, 0x13b4, 0x32b, 0x13e4, + 0x33b, 0x1413, 0x34b, 0x1443, 0x35b, 0x1473, 0x36b, 0x14a2, + 0x37b, 0x14d2, 0x38c, 0x1501, 0x39c, 0x1531, 0x3ad, 0x1560, + 0x3be, 0x1590, 0x3cf, 0x15bf, 0x3e0, 0x15ee, 0x3f1, 0x161d, + 0x403, 0x164c, 0x414, 0x167c, 0x426, 0x16ab, 0x438, 0x16da, + 0x44a, 0x1709, 0x45c, 0x1737, 0x46e, 0x1766, 0x481, 0x1795, + 0x493, 0x17c4, 0x4a6, 0x17f2, 0x4b9, 0x1821, 0x4cc, 0x184f, + 0x4df, 0x187e, 0x4f2, 0x18ac, 0x506, 0x18db, 0x51a, 0x1909, + 0x52d, 0x1937, 0x541, 0x1965, 0x555, 0x1993, 0x569, 0x19c1, + 0x57e, 0x19ef, 0x592, 0x1a1d, 0x5a7, 0x1a4b, 0x5bb, 0x1a79, + 0x5d0, 0x1aa7, 0x5e5, 0x1ad4, 0x5fa, 0x1b02, 0x610, 0x1b30, + 0x625, 0x1b5d, 0x63b, 0x1b8a, 0x650, 0x1bb8, 0x666, 0x1be5, + 0x67c, 0x1c12, 0x692, 0x1c3f, 0x6a8, 0x1c6c, 0x6bf, 0x1c99, + 0x6d5, 0x1cc6, 0x6ec, 0x1cf3, 0x703, 0x1d20, 0x71a, 0x1d4d, + 0x731, 0x1d79, 0x748, 0x1da6, 0x75f, 0x1dd3, 0x777, 0x1dff, + 0x78f, 0x1e2b, 0x7a6, 0x1e58, 0x7be, 0x1e84, 0x7d6, 0x1eb0, + 0x7ee, 0x1edc, 0x807, 0x1f08, 0x81f, 0x1f34, 0x838, 0x1f60, + 0x850, 0x1f8c, 0x869, 0x1fb7, 0x882, 0x1fe3, 0x89b, 0x200f, + 0x8b5, 0x203a, 0x8ce, 0x2065, 0x8e8, 0x2091, 0x901, 0x20bc, + 0x91b, 0x20e7, 0x935, 0x2112, 0x94f, 0x213d, 0x969, 0x2168, + 0x983, 0x2193, 0x99e, 0x21be, 0x9b8, 0x21e8, 0x9d3, 0x2213, + 0x9ee, 0x223d, 0xa09, 0x2268, 0xa24, 0x2292, 0xa3f, 0x22bc, + 0xa5b, 0x22e7, 0xa76, 0x2311, 0xa92, 0x233b, 0xaad, 0x2365, + 0xac9, 0x238e, 0xae5, 0x23b8, 0xb01, 0x23e2, 0xb1e, 0x240b, + 0xb3a, 0x2435, 0xb56, 0x245e, 0xb73, 0x2488, 0xb90, 0x24b1, + 0xbad, 0x24da, 0xbca, 0x2503, 0xbe7, 0x252c, 0xc04, 0x2555, + 0xc21, 0x257e, 0xc3f, 0x25a6, 0xc5d, 0x25cf, 0xc7a, 0x25f8, + 0xc98, 0x2620, 0xcb6, 0x2648, 0xcd4, 0x2671, 0xcf3, 0x2699, + 0xd11, 0x26c1, 0xd30, 0x26e9, 0xd4e, 0x2711, 0xd6d, 0x2738, + 0xd8c, 0x2760, 0xdab, 0x2788, 0xdca, 0x27af, 0xde9, 0x27d6, + 0xe08, 0x27fe, 0xe28, 0x2825, 0xe47, 0x284c, 0xe67, 0x2873, + 0xe87, 0x289a, 0xea7, 0x28c1, 0xec7, 0x28e7, 0xee7, 0x290e, + 0xf07, 0x2935, 0xf28, 0x295b, 0xf48, 0x2981, 0xf69, 0x29a7, + 0xf8a, 0x29ce, 0xfab, 0x29f4, 0xfcc, 0x2a1a, 0xfed, 0x2a3f, + 0x100e, 0x2a65, 0x1030, 0x2a8b, 0x1051, 0x2ab0, 0x1073, 0x2ad6, + 0x1094, 0x2afb, 0x10b6, 0x2b20, 0x10d8, 0x2b45, 0x10fa, 0x2b6a, + 0x111c, 0x2b8f, 0x113e, 0x2bb4, 0x1161, 0x2bd8, 0x1183, 0x2bfd, + 0x11a6, 0x2c21, 0x11c9, 0x2c46, 0x11eb, 0x2c6a, 0x120e, 0x2c8e, + 0x1231, 0x2cb2, 0x1255, 0x2cd6, 0x1278, 0x2cfa, 0x129b, 0x2d1e, + 0x12bf, 0x2d41, 0x12e2, 0x2d65, 0x1306, 0x2d88, 0x132a, 0x2dab, + 0x134e, 0x2dcf, 0x1372, 0x2df2, 0x1396, 0x2e15, 0x13ba, 0x2e37, + 0x13df, 0x2e5a, 0x1403, 0x2e7d, 0x1428, 0x2e9f, 0x144c, 0x2ec2, + 0x1471, 0x2ee4, 0x1496, 0x2f06, 0x14bb, 0x2f28, 0x14e0, 0x2f4a, + 0x1505, 0x2f6c, 0x152a, 0x2f8d, 0x1550, 0x2faf, 0x1575, 0x2fd0, + 0x159b, 0x2ff2, 0x15c1, 0x3013, 0x15e6, 0x3034, 0x160c, 0x3055, + 0x1632, 0x3076, 0x1659, 0x3097, 0x167f, 0x30b8, 0x16a5, 0x30d8, + 0x16cb, 0x30f9, 0x16f2, 0x3119, 0x1719, 0x3139, 0x173f, 0x3159, + 0x1766, 0x3179, 0x178d, 0x3199, 0x17b4, 0x31b9, 0x17db, 0x31d8, + 0x1802, 0x31f8, 0x182a, 0x3217, 0x1851, 0x3236, 0x1878, 0x3255, + 0x18a0, 0x3274, 0x18c8, 0x3293, 0x18ef, 0x32b2, 0x1917, 0x32d0, + 0x193f, 0x32ef, 0x1967, 0x330d, 0x198f, 0x332c, 0x19b8, 0x334a, + 0x19e0, 0x3368, 0x1a08, 0x3386, 0x1a31, 0x33a3, 0x1a5a, 0x33c1, + 0x1a82, 0x33df, 0x1aab, 0x33fc, 0x1ad4, 0x3419, 0x1afd, 0x3436, + 0x1b26, 0x3453, 0x1b4f, 0x3470, 0x1b78, 0x348d, 0x1ba2, 0x34aa, + 0x1bcb, 0x34c6, 0x1bf5, 0x34e2, 0x1c1e, 0x34ff, 0x1c48, 0x351b, + 0x1c72, 0x3537, 0x1c9b, 0x3553, 0x1cc5, 0x356e, 0x1cef, 0x358a, + 0x1d19, 0x35a5, 0x1d44, 0x35c1, 0x1d6e, 0x35dc, 0x1d98, 0x35f7, + 0x1dc3, 0x3612, 0x1ded, 0x362d, 0x1e18, 0x3648, 0x1e42, 0x3662, + 0x1e6d, 0x367d, 0x1e98, 0x3697, 0x1ec3, 0x36b1, 0x1eee, 0x36cb, + 0x1f19, 0x36e5, 0x1f44, 0x36ff, 0x1f6f, 0x3718, 0x1f9b, 0x3732, + 0x1fc6, 0x374b, 0x1ff1, 0x3765, 0x201d, 0x377e, 0x2049, 0x3797, + 0x2074, 0x37b0, 0x20a0, 0x37c8, 0x20cc, 0x37e1, 0x20f8, 0x37f9, + 0x2124, 0x3812, 0x2150, 0x382a, 0x217c, 0x3842, 0x21a8, 0x385a, + 0x21d5, 0x3871, 0x2201, 0x3889, 0x222d, 0x38a1, 0x225a, 0x38b8, + 0x2287, 0x38cf, 0x22b3, 0x38e6, 0x22e0, 0x38fd, 0x230d, 0x3914, + 0x233a, 0x392b, 0x2367, 0x3941, 0x2394, 0x3958, 0x23c1, 0x396e, + 0x23ee, 0x3984, 0x241b, 0x399a, 0x2448, 0x39b0, 0x2476, 0x39c5, + 0x24a3, 0x39db, 0x24d0, 0x39f0, 0x24fe, 0x3a06, 0x252c, 0x3a1b, + 0x2559, 0x3a30, 0x2587, 0x3a45, 0x25b5, 0x3a59, 0x25e3, 0x3a6e, + 0x2611, 0x3a82, 0x263f, 0x3a97, 0x266d, 0x3aab, 0x269b, 0x3abf, + 0x26c9, 0x3ad3, 0x26f7, 0x3ae6, 0x2725, 0x3afa, 0x2754, 0x3b0e, + 0x2782, 0x3b21, 0x27b1, 0x3b34, 0x27df, 0x3b47, 0x280e, 0x3b5a, + 0x283c, 0x3b6d, 0x286b, 0x3b7f, 0x289a, 0x3b92, 0x28c9, 0x3ba4, + 0x28f7, 0x3bb6, 0x2926, 0x3bc8, 0x2955, 0x3bda, 0x2984, 0x3bec, + 0x29b4, 0x3bfd, 0x29e3, 0x3c0f, 0x2a12, 0x3c20, 0x2a41, 0x3c31, + 0x2a70, 0x3c42, 0x2aa0, 0x3c53, 0x2acf, 0x3c64, 0x2aff, 0x3c74, + 0x2b2e, 0x3c85, 0x2b5e, 0x3c95, 0x2b8d, 0x3ca5, 0x2bbd, 0x3cb5, + 0x2bed, 0x3cc5, 0x2c1c, 0x3cd5, 0x2c4c, 0x3ce4, 0x2c7c, 0x3cf4, + 0x2cac, 0x3d03, 0x2cdc, 0x3d12, 0x2d0c, 0x3d21, 0x2d3c, 0x3d30, + 0x2d6c, 0x3d3f, 0x2d9c, 0x3d4d, 0x2dcc, 0x3d5b, 0x2dfc, 0x3d6a, + 0x2e2d, 0x3d78, 0x2e5d, 0x3d86, 0x2e8d, 0x3d93, 0x2ebe, 0x3da1, + 0x2eee, 0x3daf, 0x2f1f, 0x3dbc, 0x2f4f, 0x3dc9, 0x2f80, 0x3dd6, + 0x2fb0, 0x3de3, 0x2fe1, 0x3df0, 0x3012, 0x3dfc, 0x3042, 0x3e09, + 0x3073, 0x3e15, 0x30a4, 0x3e21, 0x30d5, 0x3e2d, 0x3105, 0x3e39, + 0x3136, 0x3e45, 0x3167, 0x3e50, 0x3198, 0x3e5c, 0x31c9, 0x3e67, + 0x31fa, 0x3e72, 0x322b, 0x3e7d, 0x325c, 0x3e88, 0x328e, 0x3e92, + 0x32bf, 0x3e9d, 0x32f0, 0x3ea7, 0x3321, 0x3eb1, 0x3352, 0x3ebb, + 0x3384, 0x3ec5, 0x33b5, 0x3ecf, 0x33e6, 0x3ed8, 0x3418, 0x3ee2, + 0x3449, 0x3eeb, 0x347b, 0x3ef4, 0x34ac, 0x3efd, 0x34dd, 0x3f06, + 0x350f, 0x3f0f, 0x3540, 0x3f17, 0x3572, 0x3f20, 0x35a4, 0x3f28, + 0x35d5, 0x3f30, 0x3607, 0x3f38, 0x3639, 0x3f40, 0x366a, 0x3f47, + 0x369c, 0x3f4f, 0x36ce, 0x3f56, 0x36ff, 0x3f5d, 0x3731, 0x3f64, + 0x3763, 0x3f6b, 0x3795, 0x3f72, 0x37c7, 0x3f78, 0x37f9, 0x3f7f, + 0x382a, 0x3f85, 0x385c, 0x3f8b, 0x388e, 0x3f91, 0x38c0, 0x3f97, + 0x38f2, 0x3f9c, 0x3924, 0x3fa2, 0x3956, 0x3fa7, 0x3988, 0x3fac, + 0x39ba, 0x3fb1, 0x39ec, 0x3fb6, 0x3a1e, 0x3fbb, 0x3a50, 0x3fbf, + 0x3a82, 0x3fc4, 0x3ab4, 0x3fc8, 0x3ae6, 0x3fcc, 0x3b19, 0x3fd0, + 0x3b4b, 0x3fd4, 0x3b7d, 0x3fd7, 0x3baf, 0x3fdb, 0x3be1, 0x3fde, + 0x3c13, 0x3fe1, 0x3c45, 0x3fe4, 0x3c78, 0x3fe7, 0x3caa, 0x3fea, + 0x3cdc, 0x3fec, 0x3d0e, 0x3fef, 0x3d40, 0x3ff1, 0x3d73, 0x3ff3, + 0x3da5, 0x3ff5, 0x3dd7, 0x3ff7, 0x3e09, 0x3ff8, 0x3e3c, 0x3ffa, + 0x3e6e, 0x3ffb, 0x3ea0, 0x3ffc, 0x3ed2, 0x3ffd, 0x3f05, 0x3ffe, + 0x3f37, 0x3fff, 0x3f69, 0x3fff, 0x3f9b, 0x4000, 0x3fce, 0x4000 +}; + +/** +* \par +* Generation of real_CoefB array: +* \par +* n = 1024 +*
for (i = 0; i < n; i++)   
+*  {   
+*    pBTable[2 * i] = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));   
+*    pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));   
+*  } 
+* \par +* Convert to fixed point Q15 format +* round(pBTable[i] * pow(2, 15)) +* +*/ + +static const q15_t realCoefBQ15[2048] = { + 0x4000, 0x4000, 0x4032, 0x4000, 0x4065, 0x4000, 0x4097, 0x3fff, + 0x40c9, 0x3fff, 0x40fb, 0x3ffe, 0x412e, 0x3ffd, 0x4160, 0x3ffc, + 0x4192, 0x3ffb, 0x41c4, 0x3ffa, 0x41f7, 0x3ff8, 0x4229, 0x3ff7, + 0x425b, 0x3ff5, 0x428d, 0x3ff3, 0x42c0, 0x3ff1, 0x42f2, 0x3fef, + 0x4324, 0x3fec, 0x4356, 0x3fea, 0x4388, 0x3fe7, 0x43bb, 0x3fe4, + 0x43ed, 0x3fe1, 0x441f, 0x3fde, 0x4451, 0x3fdb, 0x4483, 0x3fd7, + 0x44b5, 0x3fd4, 0x44e7, 0x3fd0, 0x451a, 0x3fcc, 0x454c, 0x3fc8, + 0x457e, 0x3fc4, 0x45b0, 0x3fbf, 0x45e2, 0x3fbb, 0x4614, 0x3fb6, + 0x4646, 0x3fb1, 0x4678, 0x3fac, 0x46aa, 0x3fa7, 0x46dc, 0x3fa2, + 0x470e, 0x3f9c, 0x4740, 0x3f97, 0x4772, 0x3f91, 0x47a4, 0x3f8b, + 0x47d6, 0x3f85, 0x4807, 0x3f7f, 0x4839, 0x3f78, 0x486b, 0x3f72, + 0x489d, 0x3f6b, 0x48cf, 0x3f64, 0x4901, 0x3f5d, 0x4932, 0x3f56, + 0x4964, 0x3f4f, 0x4996, 0x3f47, 0x49c7, 0x3f40, 0x49f9, 0x3f38, + 0x4a2b, 0x3f30, 0x4a5c, 0x3f28, 0x4a8e, 0x3f20, 0x4ac0, 0x3f17, + 0x4af1, 0x3f0f, 0x4b23, 0x3f06, 0x4b54, 0x3efd, 0x4b85, 0x3ef4, + 0x4bb7, 0x3eeb, 0x4be8, 0x3ee2, 0x4c1a, 0x3ed8, 0x4c4b, 0x3ecf, + 0x4c7c, 0x3ec5, 0x4cae, 0x3ebb, 0x4cdf, 0x3eb1, 0x4d10, 0x3ea7, + 0x4d41, 0x3e9d, 0x4d72, 0x3e92, 0x4da4, 0x3e88, 0x4dd5, 0x3e7d, + 0x4e06, 0x3e72, 0x4e37, 0x3e67, 0x4e68, 0x3e5c, 0x4e99, 0x3e50, + 0x4eca, 0x3e45, 0x4efb, 0x3e39, 0x4f2b, 0x3e2d, 0x4f5c, 0x3e21, + 0x4f8d, 0x3e15, 0x4fbe, 0x3e09, 0x4fee, 0x3dfc, 0x501f, 0x3df0, + 0x5050, 0x3de3, 0x5080, 0x3dd6, 0x50b1, 0x3dc9, 0x50e1, 0x3dbc, + 0x5112, 0x3daf, 0x5142, 0x3da1, 0x5173, 0x3d93, 0x51a3, 0x3d86, + 0x51d3, 0x3d78, 0x5204, 0x3d6a, 0x5234, 0x3d5b, 0x5264, 0x3d4d, + 0x5294, 0x3d3f, 0x52c4, 0x3d30, 0x52f4, 0x3d21, 0x5324, 0x3d12, + 0x5354, 0x3d03, 0x5384, 0x3cf4, 0x53b4, 0x3ce4, 0x53e4, 0x3cd5, + 0x5413, 0x3cc5, 0x5443, 0x3cb5, 0x5473, 0x3ca5, 0x54a2, 0x3c95, + 0x54d2, 0x3c85, 0x5501, 0x3c74, 0x5531, 0x3c64, 0x5560, 0x3c53, + 0x5590, 0x3c42, 0x55bf, 0x3c31, 0x55ee, 0x3c20, 0x561d, 0x3c0f, + 0x564c, 0x3bfd, 0x567c, 0x3bec, 0x56ab, 0x3bda, 0x56da, 0x3bc8, + 0x5709, 0x3bb6, 0x5737, 0x3ba4, 0x5766, 0x3b92, 0x5795, 0x3b7f, + 0x57c4, 0x3b6d, 0x57f2, 0x3b5a, 0x5821, 0x3b47, 0x584f, 0x3b34, + 0x587e, 0x3b21, 0x58ac, 0x3b0e, 0x58db, 0x3afa, 0x5909, 0x3ae6, + 0x5937, 0x3ad3, 0x5965, 0x3abf, 0x5993, 0x3aab, 0x59c1, 0x3a97, + 0x59ef, 0x3a82, 0x5a1d, 0x3a6e, 0x5a4b, 0x3a59, 0x5a79, 0x3a45, + 0x5aa7, 0x3a30, 0x5ad4, 0x3a1b, 0x5b02, 0x3a06, 0x5b30, 0x39f0, + 0x5b5d, 0x39db, 0x5b8a, 0x39c5, 0x5bb8, 0x39b0, 0x5be5, 0x399a, + 0x5c12, 0x3984, 0x5c3f, 0x396e, 0x5c6c, 0x3958, 0x5c99, 0x3941, + 0x5cc6, 0x392b, 0x5cf3, 0x3914, 0x5d20, 0x38fd, 0x5d4d, 0x38e6, + 0x5d79, 0x38cf, 0x5da6, 0x38b8, 0x5dd3, 0x38a1, 0x5dff, 0x3889, + 0x5e2b, 0x3871, 0x5e58, 0x385a, 0x5e84, 0x3842, 0x5eb0, 0x382a, + 0x5edc, 0x3812, 0x5f08, 0x37f9, 0x5f34, 0x37e1, 0x5f60, 0x37c8, + 0x5f8c, 0x37b0, 0x5fb7, 0x3797, 0x5fe3, 0x377e, 0x600f, 0x3765, + 0x603a, 0x374b, 0x6065, 0x3732, 0x6091, 0x3718, 0x60bc, 0x36ff, + 0x60e7, 0x36e5, 0x6112, 0x36cb, 0x613d, 0x36b1, 0x6168, 0x3697, + 0x6193, 0x367d, 0x61be, 0x3662, 0x61e8, 0x3648, 0x6213, 0x362d, + 0x623d, 0x3612, 0x6268, 0x35f7, 0x6292, 0x35dc, 0x62bc, 0x35c1, + 0x62e7, 0x35a5, 0x6311, 0x358a, 0x633b, 0x356e, 0x6365, 0x3553, + 0x638e, 0x3537, 0x63b8, 0x351b, 0x63e2, 0x34ff, 0x640b, 0x34e2, + 0x6435, 0x34c6, 0x645e, 0x34aa, 0x6488, 0x348d, 0x64b1, 0x3470, + 0x64da, 0x3453, 0x6503, 0x3436, 0x652c, 0x3419, 0x6555, 0x33fc, + 0x657e, 0x33df, 0x65a6, 0x33c1, 0x65cf, 0x33a3, 0x65f8, 0x3386, + 0x6620, 0x3368, 0x6648, 0x334a, 0x6671, 0x332c, 0x6699, 0x330d, + 0x66c1, 0x32ef, 0x66e9, 0x32d0, 0x6711, 0x32b2, 0x6738, 0x3293, + 0x6760, 0x3274, 0x6788, 0x3255, 0x67af, 0x3236, 0x67d6, 0x3217, + 0x67fe, 0x31f8, 0x6825, 0x31d8, 0x684c, 0x31b9, 0x6873, 0x3199, + 0x689a, 0x3179, 0x68c1, 0x3159, 0x68e7, 0x3139, 0x690e, 0x3119, + 0x6935, 0x30f9, 0x695b, 0x30d8, 0x6981, 0x30b8, 0x69a7, 0x3097, + 0x69ce, 0x3076, 0x69f4, 0x3055, 0x6a1a, 0x3034, 0x6a3f, 0x3013, + 0x6a65, 0x2ff2, 0x6a8b, 0x2fd0, 0x6ab0, 0x2faf, 0x6ad6, 0x2f8d, + 0x6afb, 0x2f6c, 0x6b20, 0x2f4a, 0x6b45, 0x2f28, 0x6b6a, 0x2f06, + 0x6b8f, 0x2ee4, 0x6bb4, 0x2ec2, 0x6bd8, 0x2e9f, 0x6bfd, 0x2e7d, + 0x6c21, 0x2e5a, 0x6c46, 0x2e37, 0x6c6a, 0x2e15, 0x6c8e, 0x2df2, + 0x6cb2, 0x2dcf, 0x6cd6, 0x2dab, 0x6cfa, 0x2d88, 0x6d1e, 0x2d65, + 0x6d41, 0x2d41, 0x6d65, 0x2d1e, 0x6d88, 0x2cfa, 0x6dab, 0x2cd6, + 0x6dcf, 0x2cb2, 0x6df2, 0x2c8e, 0x6e15, 0x2c6a, 0x6e37, 0x2c46, + 0x6e5a, 0x2c21, 0x6e7d, 0x2bfd, 0x6e9f, 0x2bd8, 0x6ec2, 0x2bb4, + 0x6ee4, 0x2b8f, 0x6f06, 0x2b6a, 0x6f28, 0x2b45, 0x6f4a, 0x2b20, + 0x6f6c, 0x2afb, 0x6f8d, 0x2ad6, 0x6faf, 0x2ab0, 0x6fd0, 0x2a8b, + 0x6ff2, 0x2a65, 0x7013, 0x2a3f, 0x7034, 0x2a1a, 0x7055, 0x29f4, + 0x7076, 0x29ce, 0x7097, 0x29a7, 0x70b8, 0x2981, 0x70d8, 0x295b, + 0x70f9, 0x2935, 0x7119, 0x290e, 0x7139, 0x28e7, 0x7159, 0x28c1, + 0x7179, 0x289a, 0x7199, 0x2873, 0x71b9, 0x284c, 0x71d8, 0x2825, + 0x71f8, 0x27fe, 0x7217, 0x27d6, 0x7236, 0x27af, 0x7255, 0x2788, + 0x7274, 0x2760, 0x7293, 0x2738, 0x72b2, 0x2711, 0x72d0, 0x26e9, + 0x72ef, 0x26c1, 0x730d, 0x2699, 0x732c, 0x2671, 0x734a, 0x2648, + 0x7368, 0x2620, 0x7386, 0x25f8, 0x73a3, 0x25cf, 0x73c1, 0x25a6, + 0x73df, 0x257e, 0x73fc, 0x2555, 0x7419, 0x252c, 0x7436, 0x2503, + 0x7453, 0x24da, 0x7470, 0x24b1, 0x748d, 0x2488, 0x74aa, 0x245e, + 0x74c6, 0x2435, 0x74e2, 0x240b, 0x74ff, 0x23e2, 0x751b, 0x23b8, + 0x7537, 0x238e, 0x7553, 0x2365, 0x756e, 0x233b, 0x758a, 0x2311, + 0x75a5, 0x22e7, 0x75c1, 0x22bc, 0x75dc, 0x2292, 0x75f7, 0x2268, + 0x7612, 0x223d, 0x762d, 0x2213, 0x7648, 0x21e8, 0x7662, 0x21be, + 0x767d, 0x2193, 0x7697, 0x2168, 0x76b1, 0x213d, 0x76cb, 0x2112, + 0x76e5, 0x20e7, 0x76ff, 0x20bc, 0x7718, 0x2091, 0x7732, 0x2065, + 0x774b, 0x203a, 0x7765, 0x200f, 0x777e, 0x1fe3, 0x7797, 0x1fb7, + 0x77b0, 0x1f8c, 0x77c8, 0x1f60, 0x77e1, 0x1f34, 0x77f9, 0x1f08, + 0x7812, 0x1edc, 0x782a, 0x1eb0, 0x7842, 0x1e84, 0x785a, 0x1e58, + 0x7871, 0x1e2b, 0x7889, 0x1dff, 0x78a1, 0x1dd3, 0x78b8, 0x1da6, + 0x78cf, 0x1d79, 0x78e6, 0x1d4d, 0x78fd, 0x1d20, 0x7914, 0x1cf3, + 0x792b, 0x1cc6, 0x7941, 0x1c99, 0x7958, 0x1c6c, 0x796e, 0x1c3f, + 0x7984, 0x1c12, 0x799a, 0x1be5, 0x79b0, 0x1bb8, 0x79c5, 0x1b8a, + 0x79db, 0x1b5d, 0x79f0, 0x1b30, 0x7a06, 0x1b02, 0x7a1b, 0x1ad4, + 0x7a30, 0x1aa7, 0x7a45, 0x1a79, 0x7a59, 0x1a4b, 0x7a6e, 0x1a1d, + 0x7a82, 0x19ef, 0x7a97, 0x19c1, 0x7aab, 0x1993, 0x7abf, 0x1965, + 0x7ad3, 0x1937, 0x7ae6, 0x1909, 0x7afa, 0x18db, 0x7b0e, 0x18ac, + 0x7b21, 0x187e, 0x7b34, 0x184f, 0x7b47, 0x1821, 0x7b5a, 0x17f2, + 0x7b6d, 0x17c4, 0x7b7f, 0x1795, 0x7b92, 0x1766, 0x7ba4, 0x1737, + 0x7bb6, 0x1709, 0x7bc8, 0x16da, 0x7bda, 0x16ab, 0x7bec, 0x167c, + 0x7bfd, 0x164c, 0x7c0f, 0x161d, 0x7c20, 0x15ee, 0x7c31, 0x15bf, + 0x7c42, 0x1590, 0x7c53, 0x1560, 0x7c64, 0x1531, 0x7c74, 0x1501, + 0x7c85, 0x14d2, 0x7c95, 0x14a2, 0x7ca5, 0x1473, 0x7cb5, 0x1443, + 0x7cc5, 0x1413, 0x7cd5, 0x13e4, 0x7ce4, 0x13b4, 0x7cf4, 0x1384, + 0x7d03, 0x1354, 0x7d12, 0x1324, 0x7d21, 0x12f4, 0x7d30, 0x12c4, + 0x7d3f, 0x1294, 0x7d4d, 0x1264, 0x7d5b, 0x1234, 0x7d6a, 0x1204, + 0x7d78, 0x11d3, 0x7d86, 0x11a3, 0x7d93, 0x1173, 0x7da1, 0x1142, + 0x7daf, 0x1112, 0x7dbc, 0x10e1, 0x7dc9, 0x10b1, 0x7dd6, 0x1080, + 0x7de3, 0x1050, 0x7df0, 0x101f, 0x7dfc, 0xfee, 0x7e09, 0xfbe, + 0x7e15, 0xf8d, 0x7e21, 0xf5c, 0x7e2d, 0xf2b, 0x7e39, 0xefb, + 0x7e45, 0xeca, 0x7e50, 0xe99, 0x7e5c, 0xe68, 0x7e67, 0xe37, + 0x7e72, 0xe06, 0x7e7d, 0xdd5, 0x7e88, 0xda4, 0x7e92, 0xd72, + 0x7e9d, 0xd41, 0x7ea7, 0xd10, 0x7eb1, 0xcdf, 0x7ebb, 0xcae, + 0x7ec5, 0xc7c, 0x7ecf, 0xc4b, 0x7ed8, 0xc1a, 0x7ee2, 0xbe8, + 0x7eeb, 0xbb7, 0x7ef4, 0xb85, 0x7efd, 0xb54, 0x7f06, 0xb23, + 0x7f0f, 0xaf1, 0x7f17, 0xac0, 0x7f20, 0xa8e, 0x7f28, 0xa5c, + 0x7f30, 0xa2b, 0x7f38, 0x9f9, 0x7f40, 0x9c7, 0x7f47, 0x996, + 0x7f4f, 0x964, 0x7f56, 0x932, 0x7f5d, 0x901, 0x7f64, 0x8cf, + 0x7f6b, 0x89d, 0x7f72, 0x86b, 0x7f78, 0x839, 0x7f7f, 0x807, + 0x7f85, 0x7d6, 0x7f8b, 0x7a4, 0x7f91, 0x772, 0x7f97, 0x740, + 0x7f9c, 0x70e, 0x7fa2, 0x6dc, 0x7fa7, 0x6aa, 0x7fac, 0x678, + 0x7fb1, 0x646, 0x7fb6, 0x614, 0x7fbb, 0x5e2, 0x7fbf, 0x5b0, + 0x7fc4, 0x57e, 0x7fc8, 0x54c, 0x7fcc, 0x51a, 0x7fd0, 0x4e7, + 0x7fd4, 0x4b5, 0x7fd7, 0x483, 0x7fdb, 0x451, 0x7fde, 0x41f, + 0x7fe1, 0x3ed, 0x7fe4, 0x3bb, 0x7fe7, 0x388, 0x7fea, 0x356, + 0x7fec, 0x324, 0x7fef, 0x2f2, 0x7ff1, 0x2c0, 0x7ff3, 0x28d, + 0x7ff5, 0x25b, 0x7ff7, 0x229, 0x7ff8, 0x1f7, 0x7ffa, 0x1c4, + 0x7ffb, 0x192, 0x7ffc, 0x160, 0x7ffd, 0x12e, 0x7ffe, 0xfb, + 0x7fff, 0xc9, 0x7fff, 0x97, 0x7fff, 0x65, 0x7fff, 0x32, + 0x7fff, 0x0, 0x7fff, 0xffce, 0x7fff, 0xff9b, 0x7fff, 0xff69, + 0x7fff, 0xff37, 0x7ffe, 0xff05, 0x7ffd, 0xfed2, 0x7ffc, 0xfea0, + 0x7ffb, 0xfe6e, 0x7ffa, 0xfe3c, 0x7ff8, 0xfe09, 0x7ff7, 0xfdd7, + 0x7ff5, 0xfda5, 0x7ff3, 0xfd73, 0x7ff1, 0xfd40, 0x7fef, 0xfd0e, + 0x7fec, 0xfcdc, 0x7fea, 0xfcaa, 0x7fe7, 0xfc78, 0x7fe4, 0xfc45, + 0x7fe1, 0xfc13, 0x7fde, 0xfbe1, 0x7fdb, 0xfbaf, 0x7fd7, 0xfb7d, + 0x7fd4, 0xfb4b, 0x7fd0, 0xfb19, 0x7fcc, 0xfae6, 0x7fc8, 0xfab4, + 0x7fc4, 0xfa82, 0x7fbf, 0xfa50, 0x7fbb, 0xfa1e, 0x7fb6, 0xf9ec, + 0x7fb1, 0xf9ba, 0x7fac, 0xf988, 0x7fa7, 0xf956, 0x7fa2, 0xf924, + 0x7f9c, 0xf8f2, 0x7f97, 0xf8c0, 0x7f91, 0xf88e, 0x7f8b, 0xf85c, + 0x7f85, 0xf82a, 0x7f7f, 0xf7f9, 0x7f78, 0xf7c7, 0x7f72, 0xf795, + 0x7f6b, 0xf763, 0x7f64, 0xf731, 0x7f5d, 0xf6ff, 0x7f56, 0xf6ce, + 0x7f4f, 0xf69c, 0x7f47, 0xf66a, 0x7f40, 0xf639, 0x7f38, 0xf607, + 0x7f30, 0xf5d5, 0x7f28, 0xf5a4, 0x7f20, 0xf572, 0x7f17, 0xf540, + 0x7f0f, 0xf50f, 0x7f06, 0xf4dd, 0x7efd, 0xf4ac, 0x7ef4, 0xf47b, + 0x7eeb, 0xf449, 0x7ee2, 0xf418, 0x7ed8, 0xf3e6, 0x7ecf, 0xf3b5, + 0x7ec5, 0xf384, 0x7ebb, 0xf352, 0x7eb1, 0xf321, 0x7ea7, 0xf2f0, + 0x7e9d, 0xf2bf, 0x7e92, 0xf28e, 0x7e88, 0xf25c, 0x7e7d, 0xf22b, + 0x7e72, 0xf1fa, 0x7e67, 0xf1c9, 0x7e5c, 0xf198, 0x7e50, 0xf167, + 0x7e45, 0xf136, 0x7e39, 0xf105, 0x7e2d, 0xf0d5, 0x7e21, 0xf0a4, + 0x7e15, 0xf073, 0x7e09, 0xf042, 0x7dfc, 0xf012, 0x7df0, 0xefe1, + 0x7de3, 0xefb0, 0x7dd6, 0xef80, 0x7dc9, 0xef4f, 0x7dbc, 0xef1f, + 0x7daf, 0xeeee, 0x7da1, 0xeebe, 0x7d93, 0xee8d, 0x7d86, 0xee5d, + 0x7d78, 0xee2d, 0x7d6a, 0xedfc, 0x7d5b, 0xedcc, 0x7d4d, 0xed9c, + 0x7d3f, 0xed6c, 0x7d30, 0xed3c, 0x7d21, 0xed0c, 0x7d12, 0xecdc, + 0x7d03, 0xecac, 0x7cf4, 0xec7c, 0x7ce4, 0xec4c, 0x7cd5, 0xec1c, + 0x7cc5, 0xebed, 0x7cb5, 0xebbd, 0x7ca5, 0xeb8d, 0x7c95, 0xeb5e, + 0x7c85, 0xeb2e, 0x7c74, 0xeaff, 0x7c64, 0xeacf, 0x7c53, 0xeaa0, + 0x7c42, 0xea70, 0x7c31, 0xea41, 0x7c20, 0xea12, 0x7c0f, 0xe9e3, + 0x7bfd, 0xe9b4, 0x7bec, 0xe984, 0x7bda, 0xe955, 0x7bc8, 0xe926, + 0x7bb6, 0xe8f7, 0x7ba4, 0xe8c9, 0x7b92, 0xe89a, 0x7b7f, 0xe86b, + 0x7b6d, 0xe83c, 0x7b5a, 0xe80e, 0x7b47, 0xe7df, 0x7b34, 0xe7b1, + 0x7b21, 0xe782, 0x7b0e, 0xe754, 0x7afa, 0xe725, 0x7ae6, 0xe6f7, + 0x7ad3, 0xe6c9, 0x7abf, 0xe69b, 0x7aab, 0xe66d, 0x7a97, 0xe63f, + 0x7a82, 0xe611, 0x7a6e, 0xe5e3, 0x7a59, 0xe5b5, 0x7a45, 0xe587, + 0x7a30, 0xe559, 0x7a1b, 0xe52c, 0x7a06, 0xe4fe, 0x79f0, 0xe4d0, + 0x79db, 0xe4a3, 0x79c5, 0xe476, 0x79b0, 0xe448, 0x799a, 0xe41b, + 0x7984, 0xe3ee, 0x796e, 0xe3c1, 0x7958, 0xe394, 0x7941, 0xe367, + 0x792b, 0xe33a, 0x7914, 0xe30d, 0x78fd, 0xe2e0, 0x78e6, 0xe2b3, + 0x78cf, 0xe287, 0x78b8, 0xe25a, 0x78a1, 0xe22d, 0x7889, 0xe201, + 0x7871, 0xe1d5, 0x785a, 0xe1a8, 0x7842, 0xe17c, 0x782a, 0xe150, + 0x7812, 0xe124, 0x77f9, 0xe0f8, 0x77e1, 0xe0cc, 0x77c8, 0xe0a0, + 0x77b0, 0xe074, 0x7797, 0xe049, 0x777e, 0xe01d, 0x7765, 0xdff1, + 0x774b, 0xdfc6, 0x7732, 0xdf9b, 0x7718, 0xdf6f, 0x76ff, 0xdf44, + 0x76e5, 0xdf19, 0x76cb, 0xdeee, 0x76b1, 0xdec3, 0x7697, 0xde98, + 0x767d, 0xde6d, 0x7662, 0xde42, 0x7648, 0xde18, 0x762d, 0xdded, + 0x7612, 0xddc3, 0x75f7, 0xdd98, 0x75dc, 0xdd6e, 0x75c1, 0xdd44, + 0x75a5, 0xdd19, 0x758a, 0xdcef, 0x756e, 0xdcc5, 0x7553, 0xdc9b, + 0x7537, 0xdc72, 0x751b, 0xdc48, 0x74ff, 0xdc1e, 0x74e2, 0xdbf5, + 0x74c6, 0xdbcb, 0x74aa, 0xdba2, 0x748d, 0xdb78, 0x7470, 0xdb4f, + 0x7453, 0xdb26, 0x7436, 0xdafd, 0x7419, 0xdad4, 0x73fc, 0xdaab, + 0x73df, 0xda82, 0x73c1, 0xda5a, 0x73a3, 0xda31, 0x7386, 0xda08, + 0x7368, 0xd9e0, 0x734a, 0xd9b8, 0x732c, 0xd98f, 0x730d, 0xd967, + 0x72ef, 0xd93f, 0x72d0, 0xd917, 0x72b2, 0xd8ef, 0x7293, 0xd8c8, + 0x7274, 0xd8a0, 0x7255, 0xd878, 0x7236, 0xd851, 0x7217, 0xd82a, + 0x71f8, 0xd802, 0x71d8, 0xd7db, 0x71b9, 0xd7b4, 0x7199, 0xd78d, + 0x7179, 0xd766, 0x7159, 0xd73f, 0x7139, 0xd719, 0x7119, 0xd6f2, + 0x70f9, 0xd6cb, 0x70d8, 0xd6a5, 0x70b8, 0xd67f, 0x7097, 0xd659, + 0x7076, 0xd632, 0x7055, 0xd60c, 0x7034, 0xd5e6, 0x7013, 0xd5c1, + 0x6ff2, 0xd59b, 0x6fd0, 0xd575, 0x6faf, 0xd550, 0x6f8d, 0xd52a, + 0x6f6c, 0xd505, 0x6f4a, 0xd4e0, 0x6f28, 0xd4bb, 0x6f06, 0xd496, + 0x6ee4, 0xd471, 0x6ec2, 0xd44c, 0x6e9f, 0xd428, 0x6e7d, 0xd403, + 0x6e5a, 0xd3df, 0x6e37, 0xd3ba, 0x6e15, 0xd396, 0x6df2, 0xd372, + 0x6dcf, 0xd34e, 0x6dab, 0xd32a, 0x6d88, 0xd306, 0x6d65, 0xd2e2, + 0x6d41, 0xd2bf, 0x6d1e, 0xd29b, 0x6cfa, 0xd278, 0x6cd6, 0xd255, + 0x6cb2, 0xd231, 0x6c8e, 0xd20e, 0x6c6a, 0xd1eb, 0x6c46, 0xd1c9, + 0x6c21, 0xd1a6, 0x6bfd, 0xd183, 0x6bd8, 0xd161, 0x6bb4, 0xd13e, + 0x6b8f, 0xd11c, 0x6b6a, 0xd0fa, 0x6b45, 0xd0d8, 0x6b20, 0xd0b6, + 0x6afb, 0xd094, 0x6ad6, 0xd073, 0x6ab0, 0xd051, 0x6a8b, 0xd030, + 0x6a65, 0xd00e, 0x6a3f, 0xcfed, 0x6a1a, 0xcfcc, 0x69f4, 0xcfab, + 0x69ce, 0xcf8a, 0x69a7, 0xcf69, 0x6981, 0xcf48, 0x695b, 0xcf28, + 0x6935, 0xcf07, 0x690e, 0xcee7, 0x68e7, 0xcec7, 0x68c1, 0xcea7, + 0x689a, 0xce87, 0x6873, 0xce67, 0x684c, 0xce47, 0x6825, 0xce28, + 0x67fe, 0xce08, 0x67d6, 0xcde9, 0x67af, 0xcdca, 0x6788, 0xcdab, + 0x6760, 0xcd8c, 0x6738, 0xcd6d, 0x6711, 0xcd4e, 0x66e9, 0xcd30, + 0x66c1, 0xcd11, 0x6699, 0xccf3, 0x6671, 0xccd4, 0x6648, 0xccb6, + 0x6620, 0xcc98, 0x65f8, 0xcc7a, 0x65cf, 0xcc5d, 0x65a6, 0xcc3f, + 0x657e, 0xcc21, 0x6555, 0xcc04, 0x652c, 0xcbe7, 0x6503, 0xcbca, + 0x64da, 0xcbad, 0x64b1, 0xcb90, 0x6488, 0xcb73, 0x645e, 0xcb56, + 0x6435, 0xcb3a, 0x640b, 0xcb1e, 0x63e2, 0xcb01, 0x63b8, 0xcae5, + 0x638e, 0xcac9, 0x6365, 0xcaad, 0x633b, 0xca92, 0x6311, 0xca76, + 0x62e7, 0xca5b, 0x62bc, 0xca3f, 0x6292, 0xca24, 0x6268, 0xca09, + 0x623d, 0xc9ee, 0x6213, 0xc9d3, 0x61e8, 0xc9b8, 0x61be, 0xc99e, + 0x6193, 0xc983, 0x6168, 0xc969, 0x613d, 0xc94f, 0x6112, 0xc935, + 0x60e7, 0xc91b, 0x60bc, 0xc901, 0x6091, 0xc8e8, 0x6065, 0xc8ce, + 0x603a, 0xc8b5, 0x600f, 0xc89b, 0x5fe3, 0xc882, 0x5fb7, 0xc869, + 0x5f8c, 0xc850, 0x5f60, 0xc838, 0x5f34, 0xc81f, 0x5f08, 0xc807, + 0x5edc, 0xc7ee, 0x5eb0, 0xc7d6, 0x5e84, 0xc7be, 0x5e58, 0xc7a6, + 0x5e2b, 0xc78f, 0x5dff, 0xc777, 0x5dd3, 0xc75f, 0x5da6, 0xc748, + 0x5d79, 0xc731, 0x5d4d, 0xc71a, 0x5d20, 0xc703, 0x5cf3, 0xc6ec, + 0x5cc6, 0xc6d5, 0x5c99, 0xc6bf, 0x5c6c, 0xc6a8, 0x5c3f, 0xc692, + 0x5c12, 0xc67c, 0x5be5, 0xc666, 0x5bb8, 0xc650, 0x5b8a, 0xc63b, + 0x5b5d, 0xc625, 0x5b30, 0xc610, 0x5b02, 0xc5fa, 0x5ad4, 0xc5e5, + 0x5aa7, 0xc5d0, 0x5a79, 0xc5bb, 0x5a4b, 0xc5a7, 0x5a1d, 0xc592, + 0x59ef, 0xc57e, 0x59c1, 0xc569, 0x5993, 0xc555, 0x5965, 0xc541, + 0x5937, 0xc52d, 0x5909, 0xc51a, 0x58db, 0xc506, 0x58ac, 0xc4f2, + 0x587e, 0xc4df, 0x584f, 0xc4cc, 0x5821, 0xc4b9, 0x57f2, 0xc4a6, + 0x57c4, 0xc493, 0x5795, 0xc481, 0x5766, 0xc46e, 0x5737, 0xc45c, + 0x5709, 0xc44a, 0x56da, 0xc438, 0x56ab, 0xc426, 0x567c, 0xc414, + 0x564c, 0xc403, 0x561d, 0xc3f1, 0x55ee, 0xc3e0, 0x55bf, 0xc3cf, + 0x5590, 0xc3be, 0x5560, 0xc3ad, 0x5531, 0xc39c, 0x5501, 0xc38c, + 0x54d2, 0xc37b, 0x54a2, 0xc36b, 0x5473, 0xc35b, 0x5443, 0xc34b, + 0x5413, 0xc33b, 0x53e4, 0xc32b, 0x53b4, 0xc31c, 0x5384, 0xc30c, + 0x5354, 0xc2fd, 0x5324, 0xc2ee, 0x52f4, 0xc2df, 0x52c4, 0xc2d0, + 0x5294, 0xc2c1, 0x5264, 0xc2b3, 0x5234, 0xc2a5, 0x5204, 0xc296, + 0x51d3, 0xc288, 0x51a3, 0xc27a, 0x5173, 0xc26d, 0x5142, 0xc25f, + 0x5112, 0xc251, 0x50e1, 0xc244, 0x50b1, 0xc237, 0x5080, 0xc22a, + 0x5050, 0xc21d, 0x501f, 0xc210, 0x4fee, 0xc204, 0x4fbe, 0xc1f7, + 0x4f8d, 0xc1eb, 0x4f5c, 0xc1df, 0x4f2b, 0xc1d3, 0x4efb, 0xc1c7, + 0x4eca, 0xc1bb, 0x4e99, 0xc1b0, 0x4e68, 0xc1a4, 0x4e37, 0xc199, + 0x4e06, 0xc18e, 0x4dd5, 0xc183, 0x4da4, 0xc178, 0x4d72, 0xc16e, + 0x4d41, 0xc163, 0x4d10, 0xc159, 0x4cdf, 0xc14f, 0x4cae, 0xc145, + 0x4c7c, 0xc13b, 0x4c4b, 0xc131, 0x4c1a, 0xc128, 0x4be8, 0xc11e, + 0x4bb7, 0xc115, 0x4b85, 0xc10c, 0x4b54, 0xc103, 0x4b23, 0xc0fa, + 0x4af1, 0xc0f1, 0x4ac0, 0xc0e9, 0x4a8e, 0xc0e0, 0x4a5c, 0xc0d8, + 0x4a2b, 0xc0d0, 0x49f9, 0xc0c8, 0x49c7, 0xc0c0, 0x4996, 0xc0b9, + 0x4964, 0xc0b1, 0x4932, 0xc0aa, 0x4901, 0xc0a3, 0x48cf, 0xc09c, + 0x489d, 0xc095, 0x486b, 0xc08e, 0x4839, 0xc088, 0x4807, 0xc081, + 0x47d6, 0xc07b, 0x47a4, 0xc075, 0x4772, 0xc06f, 0x4740, 0xc069, + 0x470e, 0xc064, 0x46dc, 0xc05e, 0x46aa, 0xc059, 0x4678, 0xc054, + 0x4646, 0xc04f, 0x4614, 0xc04a, 0x45e2, 0xc045, 0x45b0, 0xc041, + 0x457e, 0xc03c, 0x454c, 0xc038, 0x451a, 0xc034, 0x44e7, 0xc030, + 0x44b5, 0xc02c, 0x4483, 0xc029, 0x4451, 0xc025, 0x441f, 0xc022, + 0x43ed, 0xc01f, 0x43bb, 0xc01c, 0x4388, 0xc019, 0x4356, 0xc016, + 0x4324, 0xc014, 0x42f2, 0xc011, 0x42c0, 0xc00f, 0x428d, 0xc00d, + 0x425b, 0xc00b, 0x4229, 0xc009, 0x41f7, 0xc008, 0x41c4, 0xc006, + 0x4192, 0xc005, 0x4160, 0xc004, 0x412e, 0xc003, 0x40fb, 0xc002, + 0x40c9, 0xc001, 0x4097, 0xc001, 0x4065, 0xc000, 0x4032, 0xc000 +}; + +/** +* @brief Initialization function for the Q15 RFFT/RIFFT. +* @param[in, out] *S points to an instance of the Q15 RFFT/RIFFT structure. +* @param[in] *S_CFFT points to an instance of the Q15 CFFT/CIFFT structure. +* @param[in] fftLenReal length of the FFT. +* @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. +* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. +* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value. +* +* \par Description: +* \par +* The parameter fftLenReal Specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 128, 512, 2048. +* \par +* The parameter ifftFlagR controls whether a forward or inverse transform is computed. +* Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated. +* \par +* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. +* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. +* \par +* This function also initializes Twiddle factor table. +*/ + +arm_status arm_rfft_init_q15( + arm_rfft_instance_q15 * S, + arm_cfft_radix4_instance_q15 * S_CFFT, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag) +{ + + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + + /* Initialize the Real FFT length */ + S->fftLenReal = (uint16_t) fftLenReal; + + /* Initialize the Complex FFT length */ + S->fftLenBy2 = (uint16_t) fftLenReal / 2u; + + /* Initialize the Twiddle coefficientA pointer */ + S->pTwiddleAReal = (q15_t *) realCoefAQ15; + + /* Initialize the Twiddle coefficientB pointer */ + S->pTwiddleBReal = (q15_t *) realCoefBQ15; + + /* Initialize the Flag for selection of RFFT or RIFFT */ + S->ifftFlagR = (uint8_t) ifftFlagR; + + /* Initialize the Flag for calculation Bit reversal or not */ + S->bitReverseFlagR = (uint8_t) bitReverseFlag; + + /* Initialization of coef modifier depending on the FFT length */ + switch (S->fftLenReal) + { + case 2048u: + S->twidCoefRModifier = 1u; + break; + case 512u: + S->twidCoefRModifier = 4u; + break; + case 128u: + S->twidCoefRModifier = 16u; + break; + default: + /* Reporting argument error if rfftSize is not valid value */ + status = ARM_MATH_ARGUMENT_ERROR; + break; + } + + /* Init Complex FFT Instance */ + S->pCfft = S_CFFT; + + if(S->ifftFlagR) + { + /* Initializes the CIFFT Module for fftLenreal/2 length */ + arm_cfft_radix4_init_q15(S->pCfft, S->fftLenBy2, 1u, 1u); + } + else + { + /* Initializes the CFFT Module for fftLenreal/2 length */ + arm_cfft_radix4_init_q15(S->pCfft, S->fftLenBy2, 0u, 1u); + } + + /* return the status of RFFT Init function */ + return (status); + +} + + /** + * @} end of RFFT_RIFFT group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q31.c new file mode 100644 index 000000000..cabb994c2 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q31.c @@ -0,0 +1,681 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_rfft_init_q31.c +* +* Description: RFFT & RIFFT Q31 initialisation function +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/** + * @ingroup groupTransforms + */ + +/** + * @addtogroup RFFT_RIFFT + * @{ + */ + +/** +* \par +* Generation floating point realCoefAQ31 array: +* \par +* n = 1024 +*
for (i = 0; i < n; i++)   
+* {   
+*    pATable[2 * i] = 0.5 * (1.0 - sin (2 * PI / (double) (2 * n) * (double) i));   
+*    pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));   
+* }
+* \par +* Convert to fixed point Q31 format +* round(pATable[i] * pow(2, 31)) +*/ + + +const q31_t realCoefAQ31[1024] = { + 0x40000000, 0xc0000000, 0x3f9b783c, 0xc0004ef5, + 0x3f36f170, 0xc0013bd3, 0x3ed26c94, 0xc002c697, + 0x3e6deaa1, 0xc004ef3f, 0x3e096c8d, 0xc007b5c4, + 0x3da4f351, 0xc00b1a20, 0x3d407fe6, 0xc00f1c4a, + 0x3cdc1342, 0xc013bc39, 0x3c77ae5e, 0xc018f9e1, + 0x3c135231, 0xc01ed535, 0x3baeffb3, 0xc0254e27, + 0x3b4ab7db, 0xc02c64a6, 0x3ae67ba2, 0xc03418a2, + 0x3a824bfd, 0xc03c6a07, 0x3a1e29e5, 0xc04558c0, + 0x39ba1651, 0xc04ee4b8, 0x39561237, 0xc0590dd8, + 0x38f21e8e, 0xc063d405, 0x388e3c4d, 0xc06f3726, + 0x382a6c6a, 0xc07b371e, 0x37c6afdc, 0xc087d3d0, + 0x37630799, 0xc0950d1d, 0x36ff7496, 0xc0a2e2e3, + 0x369bf7c9, 0xc0b15502, 0x36389228, 0xc0c06355, + 0x35d544a7, 0xc0d00db6, 0x3572103d, 0xc0e05401, + 0x350ef5de, 0xc0f1360b, 0x34abf67e, 0xc102b3ac, + 0x34491311, 0xc114ccb9, 0x33e64c8c, 0xc1278104, + 0x3383a3e2, 0xc13ad060, 0x33211a07, 0xc14eba9d, + 0x32beafed, 0xc1633f8a, 0x325c6688, 0xc1785ef4, + 0x31fa3ecb, 0xc18e18a7, 0x319839a6, 0xc1a46c6e, + 0x3136580d, 0xc1bb5a11, 0x30d49af1, 0xc1d2e158, + 0x30730342, 0xc1eb0209, 0x301191f3, 0xc203bbe8, + 0x2fb047f2, 0xc21d0eb8, 0x2f4f2630, 0xc236fa3b, + 0x2eee2d9d, 0xc2517e31, 0x2e8d5f29, 0xc26c9a58, + 0x2e2cbbc1, 0xc2884e6e, 0x2dcc4454, 0xc2a49a2e, + 0x2d6bf9d1, 0xc2c17d52, 0x2d0bdd25, 0xc2def794, + 0x2cabef3d, 0xc2fd08a9, 0x2c4c3106, 0xc31bb049, + 0x2beca36c, 0xc33aee27, 0x2b8d475b, 0xc35ac1f7, + 0x2b2e1dbe, 0xc37b2b6a, 0x2acf277f, 0xc39c2a2f, + 0x2a70658a, 0xc3bdbdf6, 0x2a11d8c8, 0xc3dfe66c, + 0x29b38223, 0xc402a33c, 0x29556282, 0xc425f410, + 0x28f77acf, 0xc449d892, 0x2899cbf1, 0xc46e5069, + 0x283c56cf, 0xc4935b3c, 0x27df1c50, 0xc4b8f8ad, + 0x27821d59, 0xc4df2862, 0x27255ad1, 0xc505e9fb, + 0x26c8d59c, 0xc52d3d18, 0x266c8e9f, 0xc555215a, + 0x261086bc, 0xc57d965d, 0x25b4bed8, 0xc5a69bbe, + 0x255937d5, 0xc5d03118, 0x24fdf294, 0xc5fa5603, + 0x24a2eff6, 0xc6250a18, 0x244830dd, 0xc6504ced, + 0x23edb628, 0xc67c1e18, 0x239380b6, 0xc6a87d2d, + 0x23399167, 0xc6d569be, 0x22dfe917, 0xc702e35c, + 0x228688a4, 0xc730e997, 0x222d70eb, 0xc75f7bfe, + 0x21d4a2c8, 0xc78e9a1d, 0x217c1f15, 0xc7be4381, + 0x2123e6ad, 0xc7ee77b3, 0x20cbfa6a, 0xc81f363d, + 0x20745b24, 0xc8507ea7, 0x201d09b4, 0xc8825077, + 0x1fc606f1, 0xc8b4ab32, 0x1f6f53b3, 0xc8e78e5b, + 0x1f18f0ce, 0xc91af976, 0x1ec2df18, 0xc94eec03, + 0x1e6d1f65, 0xc9836582, 0x1e17b28a, 0xc9b86572, + 0x1dc29958, 0xc9edeb50, 0x1d6dd4a2, 0xca23f698, + 0x1d196538, 0xca5a86c4, 0x1cc54bec, 0xca919b4e, + 0x1c71898d, 0xcac933ae, 0x1c1e1ee9, 0xcb014f5b, + 0x1bcb0cce, 0xcb39edca, 0x1b785409, 0xcb730e70, + 0x1b25f566, 0xcbacb0bf, 0x1ad3f1b1, 0xcbe6d42b, + 0x1a8249b4, 0xcc217822, 0x1a30fe38, 0xcc5c9c14, + 0x19e01006, 0xcc983f70, 0x198f7fe6, 0xccd461a2, + 0x193f4e9e, 0xcd110216, 0x18ef7cf4, 0xcd4e2037, + 0x18a00bae, 0xcd8bbb6d, 0x1850fb8e, 0xcdc9d320, + 0x18024d59, 0xce0866b8, 0x17b401d1, 0xce47759a, + 0x176619b6, 0xce86ff2a, 0x171895c9, 0xcec702cb, + 0x16cb76c9, 0xcf077fe1, 0x167ebd74, 0xcf4875ca, + 0x16326a88, 0xcf89e3e8, 0x15e67ec1, 0xcfcbc999, + 0x159afadb, 0xd00e2639, 0x154fdf8f, 0xd050f926, + 0x15052d97, 0xd09441bb, 0x14bae5ab, 0xd0d7ff51, + 0x14710883, 0xd11c3142, 0x142796d5, 0xd160d6e5, + 0x13de9156, 0xd1a5ef90, 0x1395f8ba, 0xd1eb7a9a, + 0x134dcdb4, 0xd2317756, 0x130610f7, 0xd277e518, + 0x12bec333, 0xd2bec333, 0x1277e518, 0xd30610f7, + 0x12317756, 0xd34dcdb4, 0x11eb7a9a, 0xd395f8ba, + 0x11a5ef90, 0xd3de9156, 0x1160d6e5, 0xd42796d5, + 0x111c3142, 0xd4710883, 0x10d7ff51, 0xd4bae5ab, + 0x109441bb, 0xd5052d97, 0x1050f926, 0xd54fdf8f, + 0x100e2639, 0xd59afadb, 0xfcbc999, 0xd5e67ec1, + 0xf89e3e8, 0xd6326a88, 0xf4875ca, 0xd67ebd74, + 0xf077fe1, 0xd6cb76c9, 0xec702cb, 0xd71895c9, + 0xe86ff2a, 0xd76619b6, 0xe47759a, 0xd7b401d1, + 0xe0866b8, 0xd8024d59, 0xdc9d320, 0xd850fb8e, + 0xd8bbb6d, 0xd8a00bae, 0xd4e2037, 0xd8ef7cf4, + 0xd110216, 0xd93f4e9e, 0xcd461a2, 0xd98f7fe6, + 0xc983f70, 0xd9e01006, 0xc5c9c14, 0xda30fe38, + 0xc217822, 0xda8249b4, 0xbe6d42b, 0xdad3f1b1, + 0xbacb0bf, 0xdb25f566, 0xb730e70, 0xdb785409, + 0xb39edca, 0xdbcb0cce, 0xb014f5b, 0xdc1e1ee9, + 0xac933ae, 0xdc71898d, 0xa919b4e, 0xdcc54bec, + 0xa5a86c4, 0xdd196538, 0xa23f698, 0xdd6dd4a2, + 0x9edeb50, 0xddc29958, 0x9b86572, 0xde17b28a, + 0x9836582, 0xde6d1f65, 0x94eec03, 0xdec2df18, + 0x91af976, 0xdf18f0ce, 0x8e78e5b, 0xdf6f53b3, + 0x8b4ab32, 0xdfc606f1, 0x8825077, 0xe01d09b4, + 0x8507ea7, 0xe0745b24, 0x81f363d, 0xe0cbfa6a, + 0x7ee77b3, 0xe123e6ad, 0x7be4381, 0xe17c1f15, + 0x78e9a1d, 0xe1d4a2c8, 0x75f7bfe, 0xe22d70eb, + 0x730e997, 0xe28688a4, 0x702e35c, 0xe2dfe917, + 0x6d569be, 0xe3399167, 0x6a87d2d, 0xe39380b6, + 0x67c1e18, 0xe3edb628, 0x6504ced, 0xe44830dd, + 0x6250a18, 0xe4a2eff6, 0x5fa5603, 0xe4fdf294, + 0x5d03118, 0xe55937d5, 0x5a69bbe, 0xe5b4bed8, + 0x57d965d, 0xe61086bc, 0x555215a, 0xe66c8e9f, + 0x52d3d18, 0xe6c8d59c, 0x505e9fb, 0xe7255ad1, + 0x4df2862, 0xe7821d59, 0x4b8f8ad, 0xe7df1c50, + 0x4935b3c, 0xe83c56cf, 0x46e5069, 0xe899cbf1, + 0x449d892, 0xe8f77acf, 0x425f410, 0xe9556282, + 0x402a33c, 0xe9b38223, 0x3dfe66c, 0xea11d8c8, + 0x3bdbdf6, 0xea70658a, 0x39c2a2f, 0xeacf277f, + 0x37b2b6a, 0xeb2e1dbe, 0x35ac1f7, 0xeb8d475b, + 0x33aee27, 0xebeca36c, 0x31bb049, 0xec4c3106, + 0x2fd08a9, 0xecabef3d, 0x2def794, 0xed0bdd25, + 0x2c17d52, 0xed6bf9d1, 0x2a49a2e, 0xedcc4454, + 0x2884e6e, 0xee2cbbc1, 0x26c9a58, 0xee8d5f29, + 0x2517e31, 0xeeee2d9d, 0x236fa3b, 0xef4f2630, + 0x21d0eb8, 0xefb047f2, 0x203bbe8, 0xf01191f3, + 0x1eb0209, 0xf0730342, 0x1d2e158, 0xf0d49af1, + 0x1bb5a11, 0xf136580d, 0x1a46c6e, 0xf19839a6, + 0x18e18a7, 0xf1fa3ecb, 0x1785ef4, 0xf25c6688, + 0x1633f8a, 0xf2beafed, 0x14eba9d, 0xf3211a07, + 0x13ad060, 0xf383a3e2, 0x1278104, 0xf3e64c8c, + 0x114ccb9, 0xf4491311, 0x102b3ac, 0xf4abf67e, + 0xf1360b, 0xf50ef5de, 0xe05401, 0xf572103d, + 0xd00db6, 0xf5d544a7, 0xc06355, 0xf6389228, + 0xb15502, 0xf69bf7c9, 0xa2e2e3, 0xf6ff7496, + 0x950d1d, 0xf7630799, 0x87d3d0, 0xf7c6afdc, + 0x7b371e, 0xf82a6c6a, 0x6f3726, 0xf88e3c4d, + 0x63d405, 0xf8f21e8e, 0x590dd8, 0xf9561237, + 0x4ee4b8, 0xf9ba1651, 0x4558c0, 0xfa1e29e5, + 0x3c6a07, 0xfa824bfd, 0x3418a2, 0xfae67ba2, + 0x2c64a6, 0xfb4ab7db, 0x254e27, 0xfbaeffb3, + 0x1ed535, 0xfc135231, 0x18f9e1, 0xfc77ae5e, + 0x13bc39, 0xfcdc1342, 0xf1c4a, 0xfd407fe6, + 0xb1a20, 0xfda4f351, 0x7b5c4, 0xfe096c8d, + 0x4ef3f, 0xfe6deaa1, 0x2c697, 0xfed26c94, + 0x13bd3, 0xff36f170, 0x4ef5, 0xff9b783c, + 0x0, 0x0, 0x4ef5, 0x6487c4, + 0x13bd3, 0xc90e90, 0x2c697, 0x12d936c, + 0x4ef3f, 0x192155f, 0x7b5c4, 0x1f69373, + 0xb1a20, 0x25b0caf, 0xf1c4a, 0x2bf801a, + 0x13bc39, 0x323ecbe, 0x18f9e1, 0x38851a2, + 0x1ed535, 0x3ecadcf, 0x254e27, 0x451004d, + 0x2c64a6, 0x4b54825, 0x3418a2, 0x519845e, + 0x3c6a07, 0x57db403, 0x4558c0, 0x5e1d61b, + 0x4ee4b8, 0x645e9af, 0x590dd8, 0x6a9edc9, + 0x63d405, 0x70de172, 0x6f3726, 0x771c3b3, + 0x7b371e, 0x7d59396, 0x87d3d0, 0x8395024, + 0x950d1d, 0x89cf867, 0xa2e2e3, 0x9008b6a, + 0xb15502, 0x9640837, 0xc06355, 0x9c76dd8, + 0xd00db6, 0xa2abb59, 0xe05401, 0xa8defc3, + 0xf1360b, 0xaf10a22, 0x102b3ac, 0xb540982, + 0x114ccb9, 0xbb6ecef, 0x1278104, 0xc19b374, + 0x13ad060, 0xc7c5c1e, 0x14eba9d, 0xcdee5f9, + 0x1633f8a, 0xd415013, 0x1785ef4, 0xda39978, + 0x18e18a7, 0xe05c135, 0x1a46c6e, 0xe67c65a, + 0x1bb5a11, 0xec9a7f3, 0x1d2e158, 0xf2b650f, + 0x1eb0209, 0xf8cfcbe, 0x203bbe8, 0xfee6e0d, + 0x21d0eb8, 0x104fb80e, 0x236fa3b, 0x10b0d9d0, + 0x2517e31, 0x1111d263, 0x26c9a58, 0x1172a0d7, + 0x2884e6e, 0x11d3443f, 0x2a49a2e, 0x1233bbac, + 0x2c17d52, 0x1294062f, 0x2def794, 0x12f422db, + 0x2fd08a9, 0x135410c3, 0x31bb049, 0x13b3cefa, + 0x33aee27, 0x14135c94, 0x35ac1f7, 0x1472b8a5, + 0x37b2b6a, 0x14d1e242, 0x39c2a2f, 0x1530d881, + 0x3bdbdf6, 0x158f9a76, 0x3dfe66c, 0x15ee2738, + 0x402a33c, 0x164c7ddd, 0x425f410, 0x16aa9d7e, + 0x449d892, 0x17088531, 0x46e5069, 0x1766340f, + 0x4935b3c, 0x17c3a931, 0x4b8f8ad, 0x1820e3b0, + 0x4df2862, 0x187de2a7, 0x505e9fb, 0x18daa52f, + 0x52d3d18, 0x19372a64, 0x555215a, 0x19937161, + 0x57d965d, 0x19ef7944, 0x5a69bbe, 0x1a4b4128, + 0x5d03118, 0x1aa6c82b, 0x5fa5603, 0x1b020d6c, + 0x6250a18, 0x1b5d100a, 0x6504ced, 0x1bb7cf23, + 0x67c1e18, 0x1c1249d8, 0x6a87d2d, 0x1c6c7f4a, + 0x6d569be, 0x1cc66e99, 0x702e35c, 0x1d2016e9, + 0x730e997, 0x1d79775c, 0x75f7bfe, 0x1dd28f15, + 0x78e9a1d, 0x1e2b5d38, 0x7be4381, 0x1e83e0eb, + 0x7ee77b3, 0x1edc1953, 0x81f363d, 0x1f340596, + 0x8507ea7, 0x1f8ba4dc, 0x8825077, 0x1fe2f64c, + 0x8b4ab32, 0x2039f90f, 0x8e78e5b, 0x2090ac4d, + 0x91af976, 0x20e70f32, 0x94eec03, 0x213d20e8, + 0x9836582, 0x2192e09b, 0x9b86572, 0x21e84d76, + 0x9edeb50, 0x223d66a8, 0xa23f698, 0x22922b5e, + 0xa5a86c4, 0x22e69ac8, 0xa919b4e, 0x233ab414, + 0xac933ae, 0x238e7673, 0xb014f5b, 0x23e1e117, + 0xb39edca, 0x2434f332, 0xb730e70, 0x2487abf7, + 0xbacb0bf, 0x24da0a9a, 0xbe6d42b, 0x252c0e4f, + 0xc217822, 0x257db64c, 0xc5c9c14, 0x25cf01c8, + 0xc983f70, 0x261feffa, 0xcd461a2, 0x2670801a, + 0xd110216, 0x26c0b162, 0xd4e2037, 0x2710830c, + 0xd8bbb6d, 0x275ff452, 0xdc9d320, 0x27af0472, + 0xe0866b8, 0x27fdb2a7, 0xe47759a, 0x284bfe2f, + 0xe86ff2a, 0x2899e64a, 0xec702cb, 0x28e76a37, + 0xf077fe1, 0x29348937, 0xf4875ca, 0x2981428c, + 0xf89e3e8, 0x29cd9578, 0xfcbc999, 0x2a19813f, + 0x100e2639, 0x2a650525, 0x1050f926, 0x2ab02071, + 0x109441bb, 0x2afad269, 0x10d7ff51, 0x2b451a55, + 0x111c3142, 0x2b8ef77d, 0x1160d6e5, 0x2bd8692b, + 0x11a5ef90, 0x2c216eaa, 0x11eb7a9a, 0x2c6a0746, + 0x12317756, 0x2cb2324c, 0x1277e518, 0x2cf9ef09, + 0x12bec333, 0x2d413ccd, 0x130610f7, 0x2d881ae8, + 0x134dcdb4, 0x2dce88aa, 0x1395f8ba, 0x2e148566, + 0x13de9156, 0x2e5a1070, 0x142796d5, 0x2e9f291b, + 0x14710883, 0x2ee3cebe, 0x14bae5ab, 0x2f2800af, + 0x15052d97, 0x2f6bbe45, 0x154fdf8f, 0x2faf06da, + 0x159afadb, 0x2ff1d9c7, 0x15e67ec1, 0x30343667, + 0x16326a88, 0x30761c18, 0x167ebd74, 0x30b78a36, + 0x16cb76c9, 0x30f8801f, 0x171895c9, 0x3138fd35, + 0x176619b6, 0x317900d6, 0x17b401d1, 0x31b88a66, + 0x18024d59, 0x31f79948, 0x1850fb8e, 0x32362ce0, + 0x18a00bae, 0x32744493, 0x18ef7cf4, 0x32b1dfc9, + 0x193f4e9e, 0x32eefdea, 0x198f7fe6, 0x332b9e5e, + 0x19e01006, 0x3367c090, 0x1a30fe38, 0x33a363ec, + 0x1a8249b4, 0x33de87de, 0x1ad3f1b1, 0x34192bd5, + 0x1b25f566, 0x34534f41, 0x1b785409, 0x348cf190, + 0x1bcb0cce, 0x34c61236, 0x1c1e1ee9, 0x34feb0a5, + 0x1c71898d, 0x3536cc52, 0x1cc54bec, 0x356e64b2, + 0x1d196538, 0x35a5793c, 0x1d6dd4a2, 0x35dc0968, + 0x1dc29958, 0x361214b0, 0x1e17b28a, 0x36479a8e, + 0x1e6d1f65, 0x367c9a7e, 0x1ec2df18, 0x36b113fd, + 0x1f18f0ce, 0x36e5068a, 0x1f6f53b3, 0x371871a5, + 0x1fc606f1, 0x374b54ce, 0x201d09b4, 0x377daf89, + 0x20745b24, 0x37af8159, 0x20cbfa6a, 0x37e0c9c3, + 0x2123e6ad, 0x3811884d, 0x217c1f15, 0x3841bc7f, + 0x21d4a2c8, 0x387165e3, 0x222d70eb, 0x38a08402, + 0x228688a4, 0x38cf1669, 0x22dfe917, 0x38fd1ca4, + 0x23399167, 0x392a9642, 0x239380b6, 0x395782d3, + 0x23edb628, 0x3983e1e8, 0x244830dd, 0x39afb313, + 0x24a2eff6, 0x39daf5e8, 0x24fdf294, 0x3a05a9fd, + 0x255937d5, 0x3a2fcee8, 0x25b4bed8, 0x3a596442, + 0x261086bc, 0x3a8269a3, 0x266c8e9f, 0x3aaadea6, + 0x26c8d59c, 0x3ad2c2e8, 0x27255ad1, 0x3afa1605, + 0x27821d59, 0x3b20d79e, 0x27df1c50, 0x3b470753, + 0x283c56cf, 0x3b6ca4c4, 0x2899cbf1, 0x3b91af97, + 0x28f77acf, 0x3bb6276e, 0x29556282, 0x3bda0bf0, + 0x29b38223, 0x3bfd5cc4, 0x2a11d8c8, 0x3c201994, + 0x2a70658a, 0x3c42420a, 0x2acf277f, 0x3c63d5d1, + 0x2b2e1dbe, 0x3c84d496, 0x2b8d475b, 0x3ca53e09, + 0x2beca36c, 0x3cc511d9, 0x2c4c3106, 0x3ce44fb7, + 0x2cabef3d, 0x3d02f757, 0x2d0bdd25, 0x3d21086c, + 0x2d6bf9d1, 0x3d3e82ae, 0x2dcc4454, 0x3d5b65d2, + 0x2e2cbbc1, 0x3d77b192, 0x2e8d5f29, 0x3d9365a8, + 0x2eee2d9d, 0x3dae81cf, 0x2f4f2630, 0x3dc905c5, + 0x2fb047f2, 0x3de2f148, 0x301191f3, 0x3dfc4418, + 0x30730342, 0x3e14fdf7, 0x30d49af1, 0x3e2d1ea8, + 0x3136580d, 0x3e44a5ef, 0x319839a6, 0x3e5b9392, + 0x31fa3ecb, 0x3e71e759, 0x325c6688, 0x3e87a10c, + 0x32beafed, 0x3e9cc076, 0x33211a07, 0x3eb14563, + 0x3383a3e2, 0x3ec52fa0, 0x33e64c8c, 0x3ed87efc, + 0x34491311, 0x3eeb3347, 0x34abf67e, 0x3efd4c54, + 0x350ef5de, 0x3f0ec9f5, 0x3572103d, 0x3f1fabff, + 0x35d544a7, 0x3f2ff24a, 0x36389228, 0x3f3f9cab, + 0x369bf7c9, 0x3f4eaafe, 0x36ff7496, 0x3f5d1d1d, + 0x37630799, 0x3f6af2e3, 0x37c6afdc, 0x3f782c30, + 0x382a6c6a, 0x3f84c8e2, 0x388e3c4d, 0x3f90c8da, + 0x38f21e8e, 0x3f9c2bfb, 0x39561237, 0x3fa6f228, + 0x39ba1651, 0x3fb11b48, 0x3a1e29e5, 0x3fbaa740, + 0x3a824bfd, 0x3fc395f9, 0x3ae67ba2, 0x3fcbe75e, + 0x3b4ab7db, 0x3fd39b5a, 0x3baeffb3, 0x3fdab1d9, + 0x3c135231, 0x3fe12acb, 0x3c77ae5e, 0x3fe7061f, + 0x3cdc1342, 0x3fec43c7, 0x3d407fe6, 0x3ff0e3b6, + 0x3da4f351, 0x3ff4e5e0, 0x3e096c8d, 0x3ff84a3c, + 0x3e6deaa1, 0x3ffb10c1, 0x3ed26c94, 0x3ffd3969, + 0x3f36f170, 0x3ffec42d, 0x3f9b783c, 0x3fffb10b +}; + + +/** +* \par +* Generation of realCoefBQ31 array: +* \par +* n = 512 +*
for (i = 0; i < n; i++)   
+* {   
+*    pBTable[2 * i] = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));   
+*    pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));   
+* } 
+* \par +* Convert to fixed point Q31 format +* round(pBTable[i] * pow(2, 31)) +* +*/ + +const q31_t realCoefBQ31[1024] = { + 0x40000000, 0x40000000, 0x406487c4, 0x3fffb10b, + 0x40c90e90, 0x3ffec42d, 0x412d936c, 0x3ffd3969, + 0x4192155f, 0x3ffb10c1, 0x41f69373, 0x3ff84a3c, + 0x425b0caf, 0x3ff4e5e0, 0x42bf801a, 0x3ff0e3b6, + 0x4323ecbe, 0x3fec43c7, 0x438851a2, 0x3fe7061f, + 0x43ecadcf, 0x3fe12acb, 0x4451004d, 0x3fdab1d9, + 0x44b54825, 0x3fd39b5a, 0x4519845e, 0x3fcbe75e, + 0x457db403, 0x3fc395f9, 0x45e1d61b, 0x3fbaa740, + 0x4645e9af, 0x3fb11b48, 0x46a9edc9, 0x3fa6f228, + 0x470de172, 0x3f9c2bfb, 0x4771c3b3, 0x3f90c8da, + 0x47d59396, 0x3f84c8e2, 0x48395024, 0x3f782c30, + 0x489cf867, 0x3f6af2e3, 0x49008b6a, 0x3f5d1d1d, + 0x49640837, 0x3f4eaafe, 0x49c76dd8, 0x3f3f9cab, + 0x4a2abb59, 0x3f2ff24a, 0x4a8defc3, 0x3f1fabff, + 0x4af10a22, 0x3f0ec9f5, 0x4b540982, 0x3efd4c54, + 0x4bb6ecef, 0x3eeb3347, 0x4c19b374, 0x3ed87efc, + 0x4c7c5c1e, 0x3ec52fa0, 0x4cdee5f9, 0x3eb14563, + 0x4d415013, 0x3e9cc076, 0x4da39978, 0x3e87a10c, + 0x4e05c135, 0x3e71e759, 0x4e67c65a, 0x3e5b9392, + 0x4ec9a7f3, 0x3e44a5ef, 0x4f2b650f, 0x3e2d1ea8, + 0x4f8cfcbe, 0x3e14fdf7, 0x4fee6e0d, 0x3dfc4418, + 0x504fb80e, 0x3de2f148, 0x50b0d9d0, 0x3dc905c5, + 0x5111d263, 0x3dae81cf, 0x5172a0d7, 0x3d9365a8, + 0x51d3443f, 0x3d77b192, 0x5233bbac, 0x3d5b65d2, + 0x5294062f, 0x3d3e82ae, 0x52f422db, 0x3d21086c, + 0x535410c3, 0x3d02f757, 0x53b3cefa, 0x3ce44fb7, + 0x54135c94, 0x3cc511d9, 0x5472b8a5, 0x3ca53e09, + 0x54d1e242, 0x3c84d496, 0x5530d881, 0x3c63d5d1, + 0x558f9a76, 0x3c42420a, 0x55ee2738, 0x3c201994, + 0x564c7ddd, 0x3bfd5cc4, 0x56aa9d7e, 0x3bda0bf0, + 0x57088531, 0x3bb6276e, 0x5766340f, 0x3b91af97, + 0x57c3a931, 0x3b6ca4c4, 0x5820e3b0, 0x3b470753, + 0x587de2a7, 0x3b20d79e, 0x58daa52f, 0x3afa1605, + 0x59372a64, 0x3ad2c2e8, 0x59937161, 0x3aaadea6, + 0x59ef7944, 0x3a8269a3, 0x5a4b4128, 0x3a596442, + 0x5aa6c82b, 0x3a2fcee8, 0x5b020d6c, 0x3a05a9fd, + 0x5b5d100a, 0x39daf5e8, 0x5bb7cf23, 0x39afb313, + 0x5c1249d8, 0x3983e1e8, 0x5c6c7f4a, 0x395782d3, + 0x5cc66e99, 0x392a9642, 0x5d2016e9, 0x38fd1ca4, + 0x5d79775c, 0x38cf1669, 0x5dd28f15, 0x38a08402, + 0x5e2b5d38, 0x387165e3, 0x5e83e0eb, 0x3841bc7f, + 0x5edc1953, 0x3811884d, 0x5f340596, 0x37e0c9c3, + 0x5f8ba4dc, 0x37af8159, 0x5fe2f64c, 0x377daf89, + 0x6039f90f, 0x374b54ce, 0x6090ac4d, 0x371871a5, + 0x60e70f32, 0x36e5068a, 0x613d20e8, 0x36b113fd, + 0x6192e09b, 0x367c9a7e, 0x61e84d76, 0x36479a8e, + 0x623d66a8, 0x361214b0, 0x62922b5e, 0x35dc0968, + 0x62e69ac8, 0x35a5793c, 0x633ab414, 0x356e64b2, + 0x638e7673, 0x3536cc52, 0x63e1e117, 0x34feb0a5, + 0x6434f332, 0x34c61236, 0x6487abf7, 0x348cf190, + 0x64da0a9a, 0x34534f41, 0x652c0e4f, 0x34192bd5, + 0x657db64c, 0x33de87de, 0x65cf01c8, 0x33a363ec, + 0x661feffa, 0x3367c090, 0x6670801a, 0x332b9e5e, + 0x66c0b162, 0x32eefdea, 0x6710830c, 0x32b1dfc9, + 0x675ff452, 0x32744493, 0x67af0472, 0x32362ce0, + 0x67fdb2a7, 0x31f79948, 0x684bfe2f, 0x31b88a66, + 0x6899e64a, 0x317900d6, 0x68e76a37, 0x3138fd35, + 0x69348937, 0x30f8801f, 0x6981428c, 0x30b78a36, + 0x69cd9578, 0x30761c18, 0x6a19813f, 0x30343667, + 0x6a650525, 0x2ff1d9c7, 0x6ab02071, 0x2faf06da, + 0x6afad269, 0x2f6bbe45, 0x6b451a55, 0x2f2800af, + 0x6b8ef77d, 0x2ee3cebe, 0x6bd8692b, 0x2e9f291b, + 0x6c216eaa, 0x2e5a1070, 0x6c6a0746, 0x2e148566, + 0x6cb2324c, 0x2dce88aa, 0x6cf9ef09, 0x2d881ae8, + 0x6d413ccd, 0x2d413ccd, 0x6d881ae8, 0x2cf9ef09, + 0x6dce88aa, 0x2cb2324c, 0x6e148566, 0x2c6a0746, + 0x6e5a1070, 0x2c216eaa, 0x6e9f291b, 0x2bd8692b, + 0x6ee3cebe, 0x2b8ef77d, 0x6f2800af, 0x2b451a55, + 0x6f6bbe45, 0x2afad269, 0x6faf06da, 0x2ab02071, + 0x6ff1d9c7, 0x2a650525, 0x70343667, 0x2a19813f, + 0x70761c18, 0x29cd9578, 0x70b78a36, 0x2981428c, + 0x70f8801f, 0x29348937, 0x7138fd35, 0x28e76a37, + 0x717900d6, 0x2899e64a, 0x71b88a66, 0x284bfe2f, + 0x71f79948, 0x27fdb2a7, 0x72362ce0, 0x27af0472, + 0x72744493, 0x275ff452, 0x72b1dfc9, 0x2710830c, + 0x72eefdea, 0x26c0b162, 0x732b9e5e, 0x2670801a, + 0x7367c090, 0x261feffa, 0x73a363ec, 0x25cf01c8, + 0x73de87de, 0x257db64c, 0x74192bd5, 0x252c0e4f, + 0x74534f41, 0x24da0a9a, 0x748cf190, 0x2487abf7, + 0x74c61236, 0x2434f332, 0x74feb0a5, 0x23e1e117, + 0x7536cc52, 0x238e7673, 0x756e64b2, 0x233ab414, + 0x75a5793c, 0x22e69ac8, 0x75dc0968, 0x22922b5e, + 0x761214b0, 0x223d66a8, 0x76479a8e, 0x21e84d76, + 0x767c9a7e, 0x2192e09b, 0x76b113fd, 0x213d20e8, + 0x76e5068a, 0x20e70f32, 0x771871a5, 0x2090ac4d, + 0x774b54ce, 0x2039f90f, 0x777daf89, 0x1fe2f64c, + 0x77af8159, 0x1f8ba4dc, 0x77e0c9c3, 0x1f340596, + 0x7811884d, 0x1edc1953, 0x7841bc7f, 0x1e83e0eb, + 0x787165e3, 0x1e2b5d38, 0x78a08402, 0x1dd28f15, + 0x78cf1669, 0x1d79775c, 0x78fd1ca4, 0x1d2016e9, + 0x792a9642, 0x1cc66e99, 0x795782d3, 0x1c6c7f4a, + 0x7983e1e8, 0x1c1249d8, 0x79afb313, 0x1bb7cf23, + 0x79daf5e8, 0x1b5d100a, 0x7a05a9fd, 0x1b020d6c, + 0x7a2fcee8, 0x1aa6c82b, 0x7a596442, 0x1a4b4128, + 0x7a8269a3, 0x19ef7944, 0x7aaadea6, 0x19937161, + 0x7ad2c2e8, 0x19372a64, 0x7afa1605, 0x18daa52f, + 0x7b20d79e, 0x187de2a7, 0x7b470753, 0x1820e3b0, + 0x7b6ca4c4, 0x17c3a931, 0x7b91af97, 0x1766340f, + 0x7bb6276e, 0x17088531, 0x7bda0bf0, 0x16aa9d7e, + 0x7bfd5cc4, 0x164c7ddd, 0x7c201994, 0x15ee2738, + 0x7c42420a, 0x158f9a76, 0x7c63d5d1, 0x1530d881, + 0x7c84d496, 0x14d1e242, 0x7ca53e09, 0x1472b8a5, + 0x7cc511d9, 0x14135c94, 0x7ce44fb7, 0x13b3cefa, + 0x7d02f757, 0x135410c3, 0x7d21086c, 0x12f422db, + 0x7d3e82ae, 0x1294062f, 0x7d5b65d2, 0x1233bbac, + 0x7d77b192, 0x11d3443f, 0x7d9365a8, 0x1172a0d7, + 0x7dae81cf, 0x1111d263, 0x7dc905c5, 0x10b0d9d0, + 0x7de2f148, 0x104fb80e, 0x7dfc4418, 0xfee6e0d, + 0x7e14fdf7, 0xf8cfcbe, 0x7e2d1ea8, 0xf2b650f, + 0x7e44a5ef, 0xec9a7f3, 0x7e5b9392, 0xe67c65a, + 0x7e71e759, 0xe05c135, 0x7e87a10c, 0xda39978, + 0x7e9cc076, 0xd415013, 0x7eb14563, 0xcdee5f9, + 0x7ec52fa0, 0xc7c5c1e, 0x7ed87efc, 0xc19b374, + 0x7eeb3347, 0xbb6ecef, 0x7efd4c54, 0xb540982, + 0x7f0ec9f5, 0xaf10a22, 0x7f1fabff, 0xa8defc3, + 0x7f2ff24a, 0xa2abb59, 0x7f3f9cab, 0x9c76dd8, + 0x7f4eaafe, 0x9640837, 0x7f5d1d1d, 0x9008b6a, + 0x7f6af2e3, 0x89cf867, 0x7f782c30, 0x8395024, + 0x7f84c8e2, 0x7d59396, 0x7f90c8da, 0x771c3b3, + 0x7f9c2bfb, 0x70de172, 0x7fa6f228, 0x6a9edc9, + 0x7fb11b48, 0x645e9af, 0x7fbaa740, 0x5e1d61b, + 0x7fc395f9, 0x57db403, 0x7fcbe75e, 0x519845e, + 0x7fd39b5a, 0x4b54825, 0x7fdab1d9, 0x451004d, + 0x7fe12acb, 0x3ecadcf, 0x7fe7061f, 0x38851a2, + 0x7fec43c7, 0x323ecbe, 0x7ff0e3b6, 0x2bf801a, + 0x7ff4e5e0, 0x25b0caf, 0x7ff84a3c, 0x1f69373, + 0x7ffb10c1, 0x192155f, 0x7ffd3969, 0x12d936c, + 0x7ffec42d, 0xc90e90, 0x7fffb10b, 0x6487c4, + 0x7fffffff, 0x0, 0x7fffb10b, 0xff9b783c, + 0x7ffec42d, 0xff36f170, 0x7ffd3969, 0xfed26c94, + 0x7ffb10c1, 0xfe6deaa1, 0x7ff84a3c, 0xfe096c8d, + 0x7ff4e5e0, 0xfda4f351, 0x7ff0e3b6, 0xfd407fe6, + 0x7fec43c7, 0xfcdc1342, 0x7fe7061f, 0xfc77ae5e, + 0x7fe12acb, 0xfc135231, 0x7fdab1d9, 0xfbaeffb3, + 0x7fd39b5a, 0xfb4ab7db, 0x7fcbe75e, 0xfae67ba2, + 0x7fc395f9, 0xfa824bfd, 0x7fbaa740, 0xfa1e29e5, + 0x7fb11b48, 0xf9ba1651, 0x7fa6f228, 0xf9561237, + 0x7f9c2bfb, 0xf8f21e8e, 0x7f90c8da, 0xf88e3c4d, + 0x7f84c8e2, 0xf82a6c6a, 0x7f782c30, 0xf7c6afdc, + 0x7f6af2e3, 0xf7630799, 0x7f5d1d1d, 0xf6ff7496, + 0x7f4eaafe, 0xf69bf7c9, 0x7f3f9cab, 0xf6389228, + 0x7f2ff24a, 0xf5d544a7, 0x7f1fabff, 0xf572103d, + 0x7f0ec9f5, 0xf50ef5de, 0x7efd4c54, 0xf4abf67e, + 0x7eeb3347, 0xf4491311, 0x7ed87efc, 0xf3e64c8c, + 0x7ec52fa0, 0xf383a3e2, 0x7eb14563, 0xf3211a07, + 0x7e9cc076, 0xf2beafed, 0x7e87a10c, 0xf25c6688, + 0x7e71e759, 0xf1fa3ecb, 0x7e5b9392, 0xf19839a6, + 0x7e44a5ef, 0xf136580d, 0x7e2d1ea8, 0xf0d49af1, + 0x7e14fdf7, 0xf0730342, 0x7dfc4418, 0xf01191f3, + 0x7de2f148, 0xefb047f2, 0x7dc905c5, 0xef4f2630, + 0x7dae81cf, 0xeeee2d9d, 0x7d9365a8, 0xee8d5f29, + 0x7d77b192, 0xee2cbbc1, 0x7d5b65d2, 0xedcc4454, + 0x7d3e82ae, 0xed6bf9d1, 0x7d21086c, 0xed0bdd25, + 0x7d02f757, 0xecabef3d, 0x7ce44fb7, 0xec4c3106, + 0x7cc511d9, 0xebeca36c, 0x7ca53e09, 0xeb8d475b, + 0x7c84d496, 0xeb2e1dbe, 0x7c63d5d1, 0xeacf277f, + 0x7c42420a, 0xea70658a, 0x7c201994, 0xea11d8c8, + 0x7bfd5cc4, 0xe9b38223, 0x7bda0bf0, 0xe9556282, + 0x7bb6276e, 0xe8f77acf, 0x7b91af97, 0xe899cbf1, + 0x7b6ca4c4, 0xe83c56cf, 0x7b470753, 0xe7df1c50, + 0x7b20d79e, 0xe7821d59, 0x7afa1605, 0xe7255ad1, + 0x7ad2c2e8, 0xe6c8d59c, 0x7aaadea6, 0xe66c8e9f, + 0x7a8269a3, 0xe61086bc, 0x7a596442, 0xe5b4bed8, + 0x7a2fcee8, 0xe55937d5, 0x7a05a9fd, 0xe4fdf294, + 0x79daf5e8, 0xe4a2eff6, 0x79afb313, 0xe44830dd, + 0x7983e1e8, 0xe3edb628, 0x795782d3, 0xe39380b6, + 0x792a9642, 0xe3399167, 0x78fd1ca4, 0xe2dfe917, + 0x78cf1669, 0xe28688a4, 0x78a08402, 0xe22d70eb, + 0x787165e3, 0xe1d4a2c8, 0x7841bc7f, 0xe17c1f15, + 0x7811884d, 0xe123e6ad, 0x77e0c9c3, 0xe0cbfa6a, + 0x77af8159, 0xe0745b24, 0x777daf89, 0xe01d09b4, + 0x774b54ce, 0xdfc606f1, 0x771871a5, 0xdf6f53b3, + 0x76e5068a, 0xdf18f0ce, 0x76b113fd, 0xdec2df18, + 0x767c9a7e, 0xde6d1f65, 0x76479a8e, 0xde17b28a, + 0x761214b0, 0xddc29958, 0x75dc0968, 0xdd6dd4a2, + 0x75a5793c, 0xdd196538, 0x756e64b2, 0xdcc54bec, + 0x7536cc52, 0xdc71898d, 0x74feb0a5, 0xdc1e1ee9, + 0x74c61236, 0xdbcb0cce, 0x748cf190, 0xdb785409, + 0x74534f41, 0xdb25f566, 0x74192bd5, 0xdad3f1b1, + 0x73de87de, 0xda8249b4, 0x73a363ec, 0xda30fe38, + 0x7367c090, 0xd9e01006, 0x732b9e5e, 0xd98f7fe6, + 0x72eefdea, 0xd93f4e9e, 0x72b1dfc9, 0xd8ef7cf4, + 0x72744493, 0xd8a00bae, 0x72362ce0, 0xd850fb8e, + 0x71f79948, 0xd8024d59, 0x71b88a66, 0xd7b401d1, + 0x717900d6, 0xd76619b6, 0x7138fd35, 0xd71895c9, + 0x70f8801f, 0xd6cb76c9, 0x70b78a36, 0xd67ebd74, + 0x70761c18, 0xd6326a88, 0x70343667, 0xd5e67ec1, + 0x6ff1d9c7, 0xd59afadb, 0x6faf06da, 0xd54fdf8f, + 0x6f6bbe45, 0xd5052d97, 0x6f2800af, 0xd4bae5ab, + 0x6ee3cebe, 0xd4710883, 0x6e9f291b, 0xd42796d5, + 0x6e5a1070, 0xd3de9156, 0x6e148566, 0xd395f8ba, + 0x6dce88aa, 0xd34dcdb4, 0x6d881ae8, 0xd30610f7, + 0x6d413ccd, 0xd2bec333, 0x6cf9ef09, 0xd277e518, + 0x6cb2324c, 0xd2317756, 0x6c6a0746, 0xd1eb7a9a, + 0x6c216eaa, 0xd1a5ef90, 0x6bd8692b, 0xd160d6e5, + 0x6b8ef77d, 0xd11c3142, 0x6b451a55, 0xd0d7ff51, + 0x6afad269, 0xd09441bb, 0x6ab02071, 0xd050f926, + 0x6a650525, 0xd00e2639, 0x6a19813f, 0xcfcbc999, + 0x69cd9578, 0xcf89e3e8, 0x6981428c, 0xcf4875ca, + 0x69348937, 0xcf077fe1, 0x68e76a37, 0xcec702cb, + 0x6899e64a, 0xce86ff2a, 0x684bfe2f, 0xce47759a, + 0x67fdb2a7, 0xce0866b8, 0x67af0472, 0xcdc9d320, + 0x675ff452, 0xcd8bbb6d, 0x6710830c, 0xcd4e2037, + 0x66c0b162, 0xcd110216, 0x6670801a, 0xccd461a2, + 0x661feffa, 0xcc983f70, 0x65cf01c8, 0xcc5c9c14, + 0x657db64c, 0xcc217822, 0x652c0e4f, 0xcbe6d42b, + 0x64da0a9a, 0xcbacb0bf, 0x6487abf7, 0xcb730e70, + 0x6434f332, 0xcb39edca, 0x63e1e117, 0xcb014f5b, + 0x638e7673, 0xcac933ae, 0x633ab414, 0xca919b4e, + 0x62e69ac8, 0xca5a86c4, 0x62922b5e, 0xca23f698, + 0x623d66a8, 0xc9edeb50, 0x61e84d76, 0xc9b86572, + 0x6192e09b, 0xc9836582, 0x613d20e8, 0xc94eec03, + 0x60e70f32, 0xc91af976, 0x6090ac4d, 0xc8e78e5b, + 0x6039f90f, 0xc8b4ab32, 0x5fe2f64c, 0xc8825077, + 0x5f8ba4dc, 0xc8507ea7, 0x5f340596, 0xc81f363d, + 0x5edc1953, 0xc7ee77b3, 0x5e83e0eb, 0xc7be4381, + 0x5e2b5d38, 0xc78e9a1d, 0x5dd28f15, 0xc75f7bfe, + 0x5d79775c, 0xc730e997, 0x5d2016e9, 0xc702e35c, + 0x5cc66e99, 0xc6d569be, 0x5c6c7f4a, 0xc6a87d2d, + 0x5c1249d8, 0xc67c1e18, 0x5bb7cf23, 0xc6504ced, + 0x5b5d100a, 0xc6250a18, 0x5b020d6c, 0xc5fa5603, + 0x5aa6c82b, 0xc5d03118, 0x5a4b4128, 0xc5a69bbe, + 0x59ef7944, 0xc57d965d, 0x59937161, 0xc555215a, + 0x59372a64, 0xc52d3d18, 0x58daa52f, 0xc505e9fb, + 0x587de2a7, 0xc4df2862, 0x5820e3b0, 0xc4b8f8ad, + 0x57c3a931, 0xc4935b3c, 0x5766340f, 0xc46e5069, + 0x57088531, 0xc449d892, 0x56aa9d7e, 0xc425f410, + 0x564c7ddd, 0xc402a33c, 0x55ee2738, 0xc3dfe66c, + 0x558f9a76, 0xc3bdbdf6, 0x5530d881, 0xc39c2a2f, + 0x54d1e242, 0xc37b2b6a, 0x5472b8a5, 0xc35ac1f7, + 0x54135c94, 0xc33aee27, 0x53b3cefa, 0xc31bb049, + 0x535410c3, 0xc2fd08a9, 0x52f422db, 0xc2def794, + 0x5294062f, 0xc2c17d52, 0x5233bbac, 0xc2a49a2e, + 0x51d3443f, 0xc2884e6e, 0x5172a0d7, 0xc26c9a58, + 0x5111d263, 0xc2517e31, 0x50b0d9d0, 0xc236fa3b, + 0x504fb80e, 0xc21d0eb8, 0x4fee6e0d, 0xc203bbe8, + 0x4f8cfcbe, 0xc1eb0209, 0x4f2b650f, 0xc1d2e158, + 0x4ec9a7f3, 0xc1bb5a11, 0x4e67c65a, 0xc1a46c6e, + 0x4e05c135, 0xc18e18a7, 0x4da39978, 0xc1785ef4, + 0x4d415013, 0xc1633f8a, 0x4cdee5f9, 0xc14eba9d, + 0x4c7c5c1e, 0xc13ad060, 0x4c19b374, 0xc1278104, + 0x4bb6ecef, 0xc114ccb9, 0x4b540982, 0xc102b3ac, + 0x4af10a22, 0xc0f1360b, 0x4a8defc3, 0xc0e05401, + 0x4a2abb59, 0xc0d00db6, 0x49c76dd8, 0xc0c06355, + 0x49640837, 0xc0b15502, 0x49008b6a, 0xc0a2e2e3, + 0x489cf867, 0xc0950d1d, 0x48395024, 0xc087d3d0, + 0x47d59396, 0xc07b371e, 0x4771c3b3, 0xc06f3726, + 0x470de172, 0xc063d405, 0x46a9edc9, 0xc0590dd8, + 0x4645e9af, 0xc04ee4b8, 0x45e1d61b, 0xc04558c0, + 0x457db403, 0xc03c6a07, 0x4519845e, 0xc03418a2, + 0x44b54825, 0xc02c64a6, 0x4451004d, 0xc0254e27, + 0x43ecadcf, 0xc01ed535, 0x438851a2, 0xc018f9e1, + 0x4323ecbe, 0xc013bc39, 0x42bf801a, 0xc00f1c4a, + 0x425b0caf, 0xc00b1a20, 0x41f69373, 0xc007b5c4, + 0x4192155f, 0xc004ef3f, 0x412d936c, 0xc002c697, + 0x40c90e90, 0xc0013bd3, 0x406487c4, 0xc0004ef5 +}; + +/** +* @brief Initialization function for the Q31 RFFT/RIFFT. +* @param[in, out] *S points to an instance of the Q31 RFFT/RIFFT structure. +* @param[in, out] *S_CFFT points to an instance of the Q31 CFFT/CIFFT structure. +* @param[in] fftLenReal length of the FFT. +* @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. +* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. +* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value. +* +* \par Description: +* \par +* The parameter fftLenReal Specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 128, 512, 2048. +* \par +* The parameter ifftFlagR controls whether a forward or inverse transform is computed. +* Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated. +* \par +* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. +* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. +* \par +* This function also initializes Twiddle factor table. +*/ + +arm_status arm_rfft_init_q31( + arm_rfft_instance_q31 * S, + arm_cfft_radix4_instance_q31 * S_CFFT, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag) +{ + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + + /* Initialize the Real FFT length */ + S->fftLenReal = (uint16_t) fftLenReal; + + /* Initialize the Complex FFT length */ + S->fftLenBy2 = (uint16_t) fftLenReal / 2u; + + /* Initialize the Twiddle coefficientA pointer */ + S->pTwiddleAReal = (q31_t *) realCoefAQ31; + + /* Initialize the Twiddle coefficientB pointer */ + S->pTwiddleBReal = (q31_t *) realCoefBQ31; + + /* Initialize the Flag for selection of RFFT or RIFFT */ + S->ifftFlagR = (uint8_t) ifftFlagR; + + /* Initialize the Flag for calculation Bit reversal or not */ + S->bitReverseFlagR = (uint8_t) bitReverseFlag; + + /* Initialization of coef modifier depending on the FFT length */ + switch (S->fftLenReal) + { + case 512u: + S->twidCoefRModifier = 2u; + break; + case 128u: + S->twidCoefRModifier = 8u; + break; + default: + /* Reporting argument error if rfftSize is not valid value */ + status = ARM_MATH_ARGUMENT_ERROR; + break; + } + + /* Init Complex FFT Instance */ + S->pCfft = S_CFFT; + + if(S->ifftFlagR) + { + /* Initializes the CIFFT Module for fftLenreal/2 length */ + arm_cfft_radix4_init_q31(S->pCfft, (uint16_t) S->fftLenBy2, 1u, 1u); + } + else + { + /* Initializes the CFFT Module for fftLenreal/2 length */ + arm_cfft_radix4_init_q31(S->pCfft, (uint16_t) S->fftLenBy2, 0u, 1u); + } + + /* return the status of RFFT Init function */ + return (status); + +} + + /** + * @} end of RFFT_RIFFT group + */ diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q15.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q15.c new file mode 100644 index 000000000..dabde5993 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q15.c @@ -0,0 +1,457 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_rfft_q15.c +* +* Description: RFFT & RIFFT Q15 process function +* +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + + +#include "arm_math.h" + +/*-------------------------------------------------------------------- +* Internal functions prototypes +--------------------------------------------------------------------*/ + +void arm_split_rfft_q15( + q15_t * pSrc, + uint32_t fftLen, + q15_t * pATable, + q15_t * pBTable, + q15_t * pDst, + uint32_t modifier); + +void arm_split_rifft_q15( + q15_t * pSrc, + uint32_t fftLen, + q15_t * pATable, + q15_t * pBTable, + q15_t * pDst, + uint32_t modifier); + +/** + * @addtogroup RFFT_RIFFT + * @{ + */ + +/** + * @brief Processing function for the Q15 RFFT/RIFFT. + * @param[in] *S points to an instance of the Q15 RFFT/RIFFT structure. + * @param[in] *pSrc points to the input buffer. + * @param[out] *pDst points to the output buffer. + * @return none. + * + * \par Input an output formats: + * \par + * Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process. + * Hence the output format is different for different RFFT sizes. + * The input and output formats for different RFFT sizes and number of bits to upscale are mentioned in the tables below for RFFT and RIFFT: + * \par + * \image html RFFTQ15.gif "Input and Output Formats for Q15 RFFT" + * \par + * \image html RIFFTQ15.gif "Input and Output Formats for Q15 RIFFT" + */ + +void arm_rfft_q15( + const arm_rfft_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst) +{ + const arm_cfft_radix4_instance_q15 *S_CFFT = S->pCfft; + + /* Calculation of RIFFT of input */ + if(S->ifftFlagR == 1u) + { + /* Real IFFT core process */ + arm_split_rifft_q15(pSrc, S->fftLenBy2, S->pTwiddleAReal, + S->pTwiddleBReal, pDst, S->twidCoefRModifier); + + /* Complex readix-4 IFFT process */ + arm_radix4_butterfly_inverse_q15(pDst, S_CFFT->fftLen, + S_CFFT->pTwiddle, + S_CFFT->twidCoefModifier); + + /* Bit reversal process */ + if(S->bitReverseFlagR == 1u) + { + arm_bitreversal_q15(pDst, S_CFFT->fftLen, + S_CFFT->bitRevFactor, S_CFFT->pBitRevTable); + } + } + else + { + /* Calculation of RFFT of input */ + + /* Complex readix-4 FFT process */ + arm_radix4_butterfly_q15(pSrc, S_CFFT->fftLen, + S_CFFT->pTwiddle, S_CFFT->twidCoefModifier); + + /* Bit reversal process */ + if(S->bitReverseFlagR == 1u) + { + arm_bitreversal_q15(pSrc, S_CFFT->fftLen, + S_CFFT->bitRevFactor, S_CFFT->pBitRevTable); + } + + arm_split_rfft_q15(pSrc, S->fftLenBy2, S->pTwiddleAReal, + S->pTwiddleBReal, pDst, S->twidCoefRModifier); + } + +} + + /** + * @} end of RFFT_RIFFT group + */ + +/** + * @brief Core Real FFT process + * @param *pSrc points to the input buffer. + * @param fftLen length of FFT. + * @param *pATable points to the A twiddle Coef buffer. + * @param *pBTable points to the B twiddle Coef buffer. + * @param *pDst points to the output buffer. + * @param modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + * The function implements a Real FFT + */ + +void arm_split_rfft_q15( + q15_t * pSrc, + uint32_t fftLen, + q15_t * pATable, + q15_t * pBTable, + q15_t * pDst, + uint32_t modifier) +{ + uint32_t i; /* Loop Counter */ + q31_t outR, outI; /* Temporary variables for output */ + q15_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ + q15_t *pSrc1, *pSrc2; + + + pSrc[2u * fftLen] = pSrc[0]; + pSrc[(2u * fftLen) + 1u] = pSrc[1]; + + pCoefA = &pATable[modifier * 2u]; + pCoefB = &pBTable[modifier * 2u]; + + pSrc1 = &pSrc[2]; + pSrc2 = &pSrc[(2u * fftLen) - 2u]; + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + i = 1u; + + while(i < fftLen) + { + /* + outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] + + pSrc[2 * n - 2 * i] * pBTable[2 * i] + + pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); + */ + + /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] + + pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); */ + + +#ifndef ARM_MATH_BIG_ENDIAN + + /* pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] */ + outR = __SMUSD(*__SIMD32(pSrc1), *__SIMD32(pCoefA)); + +#else + + /* -(pSrc[2 * i + 1] * pATable[2 * i + 1] - pSrc[2 * i] * pATable[2 * i]) */ + outR = -(__SMUSD(*__SIMD32(pSrc1), *__SIMD32(pCoefA))); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* pSrc[2 * n - 2 * i] * pBTable[2 * i] + + pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]) */ + outR = __SMLAD(*__SIMD32(pSrc2), *__SIMD32(pCoefB), outR) >> 15u; + + /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */ + +#ifndef ARM_MATH_BIG_ENDIAN + + outI = __SMUSDX(*__SIMD32(pSrc2)--, *__SIMD32(pCoefB)); + +#else + + outI = __SMUSDX(*__SIMD32(pCoefB), *__SIMD32(pSrc2)--); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] */ + outI = __SMLADX(*__SIMD32(pSrc1)++, *__SIMD32(pCoefA), outI); + + /* write output */ + pDst[2u * i] = (q15_t) outR; + pDst[(2u * i) + 1u] = outI >> 15u; + + /* write complex conjugate output */ + pDst[(4u * fftLen) - (2u * i)] = (q15_t) outR; + pDst[((4u * fftLen) - (2u * i)) + 1u] = -(outI >> 15u); + + /* update coefficient pointer */ + pCoefB = pCoefB + (2u * modifier); + pCoefA = pCoefA + (2u * modifier); + + i++; + + } + + pDst[2u * fftLen] = pSrc[0] - pSrc[1]; + pDst[(2u * fftLen) + 1u] = 0; + + pDst[0] = pSrc[0] + pSrc[1]; + pDst[1] = 0; + + +#else + + /* Run the below code for Cortex-M0 */ + + i = 1u; + + while(i < fftLen) + { + /* + outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] + + pSrc[2 * n - 2 * i] * pBTable[2 * i] + + pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); + */ + + outR = *pSrc1 * *pCoefA; + outR = outR - (*(pSrc1 + 1) * *(pCoefA + 1)); + outR = outR + (*pSrc2 * *pCoefB); + outR = (outR + (*(pSrc2 + 1) * *(pCoefB + 1))) >> 15; + + + /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] + + pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); + */ + + outI = *pSrc2 * *(pCoefB + 1); + outI = outI - (*(pSrc2 + 1) * *pCoefB); + outI = outI + (*(pSrc1 + 1) * *pCoefA); + outI = outI + (*pSrc1 * *(pCoefA + 1)); + + /* update input pointers */ + pSrc1 += 2u; + pSrc2 -= 2u; + + /* write output */ + pDst[2u * i] = (q15_t) outR; + pDst[(2u * i) + 1u] = outI >> 15u; + + /* write complex conjugate output */ + pDst[(4u * fftLen) - (2u * i)] = (q15_t) outR; + pDst[((4u * fftLen) - (2u * i)) + 1u] = -(outI >> 15u); + + /* update coefficient pointer */ + pCoefB = pCoefB + (2u * modifier); + pCoefA = pCoefA + (2u * modifier); + + i++; + + } + + pDst[2u * fftLen] = pSrc[0] - pSrc[1]; + pDst[(2u * fftLen) + 1u] = 0; + + pDst[0] = pSrc[0] + pSrc[1]; + pDst[1] = 0; + +#endif /* #ifndef ARM_MATH_CM0 */ + +} + + +/** + * @brief Core Real IFFT process + * @param[in] *pSrc points to the input buffer. + * @param[in] fftLen length of FFT. + * @param[in] *pATable points to the twiddle Coef A buffer. + * @param[in] *pBTable points to the twiddle Coef B buffer. + * @param[out] *pDst points to the output buffer. + * @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + * The function implements a Real IFFT + */ +void arm_split_rifft_q15( + q15_t * pSrc, + uint32_t fftLen, + q15_t * pATable, + q15_t * pBTable, + q15_t * pDst, + uint32_t modifier) +{ + uint32_t i; /* Loop Counter */ + q31_t outR, outI; /* Temporary variables for output */ + q15_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ + q15_t *pSrc1, *pSrc2; + q15_t *pDst1 = &pDst[0]; + + pCoefA = &pATable[0]; + pCoefB = &pBTable[0]; + + pSrc1 = &pSrc[0]; + pSrc2 = &pSrc[2u * fftLen]; + +#ifndef ARM_MATH_CM0 + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + i = fftLen; + + while(i > 0u) + { + + /* + outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] + + pIn[2 * n - 2 * i] * pBTable[2 * i] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); + + outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] - + pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); + + */ + + +#ifndef ARM_MATH_BIG_ENDIAN + + /* pIn[2 * n - 2 * i] * pBTable[2 * i] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]) */ + outR = __SMUSD(*__SIMD32(pSrc2), *__SIMD32(pCoefB)); + +#else + + /* -(-pIn[2 * n - 2 * i] * pBTable[2 * i] + + pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1])) */ + outR = -(__SMUSD(*__SIMD32(pSrc2), *__SIMD32(pCoefB))); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] + + pIn[2 * n - 2 * i] * pBTable[2 * i] */ + outR = __SMLAD(*__SIMD32(pSrc1), *__SIMD32(pCoefA), outR) >> 15u; + + /* + -pIn[2 * n - 2 * i] * pBTable[2 * i + 1] + + pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */ + outI = __SMUADX(*__SIMD32(pSrc2)--, *__SIMD32(pCoefB)); + + /* pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] */ + +#ifndef ARM_MATH_BIG_ENDIAN + + outI = __SMLSDX(*__SIMD32(pCoefA), *__SIMD32(pSrc1)++, -outI); + +#else + + outI = __SMLSDX(*__SIMD32(pSrc1)++, *__SIMD32(pCoefA), -outI); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + /* write output */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst1)++ = __PKHBT(outR, (outI >> 15u), 16); + +#else + + *__SIMD32(pDst1)++ = __PKHBT((outI >> 15u), outR, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* update coefficient pointer */ + pCoefB = pCoefB + (2u * modifier); + pCoefA = pCoefA + (2u * modifier); + + i--; + + } + + +#else + + /* Run the below code for Cortex-M0 */ + + i = fftLen; + + while(i > 0u) + { + + /* + outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] + + pIn[2 * n - 2 * i] * pBTable[2 * i] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); + */ + + outR = *pSrc2 * *pCoefB; + outR = outR - (*(pSrc2 + 1) * *(pCoefB + 1)); + outR = outR + (*pSrc1 * *pCoefA); + outR = (outR + (*(pSrc1 + 1) * *(pCoefA + 1))) >> 15; + + /* + outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] - + pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); + */ + + outI = *(pSrc1 + 1) * *pCoefA; + outI = outI - (*pSrc1 * *(pCoefA + 1)); + outI = outI - (*pSrc2 * *(pCoefB + 1)); + outI = outI - (*(pSrc2 + 1) * *(pCoefB)); + + /* update input pointers */ + pSrc1 += 2u; + pSrc2 -= 2u; + + /* write output */ + *pDst1++ = (q15_t) outR; + *pDst1++ = (q15_t) (outI >> 15); + + /* update coefficient pointer */ + pCoefB = pCoefB + (2u * modifier); + pCoefA = pCoefA + (2u * modifier); + + i--; + + } + +#endif /* #ifndef ARM_MATH_CM0 */ + +} diff --git a/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q31.c b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q31.c new file mode 100644 index 000000000..76c92cdc7 --- /dev/null +++ b/hardware/sam/system/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q31.c @@ -0,0 +1,326 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 15. July 2011 +* $Revision: V1.0.10 +* +* Project: CMSIS DSP Library +* Title: arm_rfft_q31.c +* +* Description: RFFT & RIFFT Q31 process function +* +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Version 1.0.10 2011/7/15 +* Big Endian support added and Merged M0 and M3/M4 Source code. +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/*-------------------------------------------------------------------- +* Internal functions prototypes +--------------------------------------------------------------------*/ + +void arm_split_rfft_q31( + q31_t * pSrc, + uint32_t fftLen, + q31_t * pATable, + q31_t * pBTable, + q31_t * pDst, + uint32_t modifier); + +void arm_split_rifft_q31( + q31_t * pSrc, + uint32_t fftLen, + q31_t * pATable, + q31_t * pBTable, + q31_t * pDst, + uint32_t modifier); + +/** + * @addtogroup RFFT_RIFFT + * @{ + */ + +/** + * @brief Processing function for the Q31 RFFT/RIFFT. + * @param[in] *S points to an instance of the Q31 RFFT/RIFFT structure. + * @param[in] *pSrc points to the input buffer. + * @param[out] *pDst points to the output buffer. + * @return none. + * + * \par Input an output formats: + * \par + * Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process. + * Hence the output format is different for different RFFT sizes. + * The input and output formats for different RFFT sizes and number of bits to upscale are mentioned in the tables below for RFFT and RIFFT: + * \par + * \image html RFFTQ31.gif "Input and Output Formats for Q31 RFFT" + * + * \par + * \image html RIFFTQ31.gif "Input and Output Formats for Q31 RIFFT" + */ + +void arm_rfft_q31( + const arm_rfft_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst) +{ + const arm_cfft_radix4_instance_q31 *S_CFFT = S->pCfft; + + /* Calculation of RIFFT of input */ + if(S->ifftFlagR == 1u) + { + /* Real IFFT core process */ + arm_split_rifft_q31(pSrc, S->fftLenBy2, S->pTwiddleAReal, + S->pTwiddleBReal, pDst, S->twidCoefRModifier); + + /* Complex readix-4 IFFT process */ + arm_radix4_butterfly_inverse_q31(pDst, S_CFFT->fftLen, + S_CFFT->pTwiddle, + S_CFFT->twidCoefModifier); + /* Bit reversal process */ + if(S->bitReverseFlagR == 1u) + { + arm_bitreversal_q31(pDst, S_CFFT->fftLen, + S_CFFT->bitRevFactor, S_CFFT->pBitRevTable); + } + } + else + { + /* Calculation of RFFT of input */ + + /* Complex readix-4 FFT process */ + arm_radix4_butterfly_q31(pSrc, S_CFFT->fftLen, + S_CFFT->pTwiddle, S_CFFT->twidCoefModifier); + + /* Bit reversal process */ + if(S->bitReverseFlagR == 1u) + { + arm_bitreversal_q31(pSrc, S_CFFT->fftLen, + S_CFFT->bitRevFactor, S_CFFT->pBitRevTable); + } + + /* Real FFT core process */ + arm_split_rfft_q31(pSrc, S->fftLenBy2, S->pTwiddleAReal, + S->pTwiddleBReal, pDst, S->twidCoefRModifier); + } + +} + + + /** + * @} end of RFFT_RIFFT group + */ + +/** + * @brief Core Real FFT process + * @param[in] *pSrc points to the input buffer. + * @param[in] fftLen length of FFT. + * @param[in] *pATable points to the twiddle Coef A buffer. + * @param[in] *pBTable points to the twiddle Coef B buffer. + * @param[out] *pDst points to the output buffer. + * @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + +void arm_split_rfft_q31( + q31_t * pSrc, + uint32_t fftLen, + q31_t * pATable, + q31_t * pBTable, + q31_t * pDst, + uint32_t modifier) +{ + uint32_t i; /* Loop Counter */ + q31_t outR, outI; /* Temporary variables for output */ + q31_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ + q31_t CoefA1, CoefA2, CoefB1; /* Temporary variables for twiddle coefficients */ + q31_t *pOut1 = &pDst[2], *pOut2 = &pDst[(4u * fftLen) - 1u]; + q31_t *pIn1 = &pSrc[2], *pIn2 = &pSrc[(2u * fftLen) - 1u]; + + pSrc[2u * fftLen] = pSrc[0]; + pSrc[(2u * fftLen) + 1u] = pSrc[1]; + + /* Init coefficient pointers */ + pCoefA = &pATable[modifier * 2u]; + pCoefB = &pBTable[modifier * 2u]; + + i = fftLen - 1u; + + while(i > 0u) + { + /* + outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] + + pSrc[2 * n - 2 * i] * pBTable[2 * i] + + pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); + */ + + /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] + + pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); */ + + CoefA1 = *pCoefA++; + CoefA2 = *pCoefA; + + /* outR = (pSrc[2 * i] * pATable[2 * i] */ + outR = ((int32_t) (((q63_t) * pIn1 * CoefA1) >> 32)); + + /* outI = pIn[2 * i] * pATable[2 * i + 1] */ + outI = ((int32_t) (((q63_t) * pIn1++ * CoefA2) >> 32)); + + /* - pSrc[2 * i + 1] * pATable[2 * i + 1] */ + outR = + (q31_t) ((((q63_t) outR << 32) + ((q63_t) * pIn1 * (-CoefA2))) >> 32); + + /* (pIn[2 * i + 1] * pATable[2 * i] */ + outI = + (q31_t) ((((q63_t) outI << 32) + ((q63_t) * pIn1++ * (CoefA1))) >> 32); + + /* pSrc[2 * n - 2 * i] * pBTable[2 * i] */ + outR = + (q31_t) ((((q63_t) outR << 32) + ((q63_t) * pIn2 * (-CoefA2))) >> 32); + CoefB1 = *pCoefB; + + /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] */ + outI = + (q31_t) ((((q63_t) outI << 32) + ((q63_t) * pIn2-- * (-CoefB1))) >> 32); + + /* pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1] */ + outR = + (q31_t) ((((q63_t) outR << 32) + ((q63_t) * pIn2 * (CoefB1))) >> 32); + + /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */ + outI = + (q31_t) ((((q63_t) outI << 32) + ((q63_t) * pIn2-- * (-CoefA2))) >> 32); + + /* write output */ + *pOut1++ = (outR << 1u); + *pOut1++ = (outI << 1u); + + /* write complex conjugate output */ + *pOut2-- = -(outI << 1u); + *pOut2-- = (outR << 1u); + + /* update coefficient pointer */ + pCoefB = pCoefB + (modifier * 2u); + pCoefA = pCoefA + ((modifier * 2u) - 1u); + + i--; + + } + + pDst[2u * fftLen] = pSrc[0] - pSrc[1]; + pDst[(2u * fftLen) + 1u] = 0; + + pDst[0] = pSrc[0] + pSrc[1]; + pDst[1] = 0; + +} + + +/** + * @brief Core Real IFFT process + * @param[in] *pSrc points to the input buffer. + * @param[in] fftLen length of FFT. + * @param[in] *pATable points to the twiddle Coef A buffer. + * @param[in] *pBTable points to the twiddle Coef B buffer. + * @param[out] *pDst points to the output buffer. + * @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + +void arm_split_rifft_q31( + q31_t * pSrc, + uint32_t fftLen, + q31_t * pATable, + q31_t * pBTable, + q31_t * pDst, + uint32_t modifier) +{ + q31_t outR, outI; /* Temporary variables for output */ + q31_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ + q31_t CoefA1, CoefA2, CoefB1; /* Temporary variables for twiddle coefficients */ + q31_t *pIn1 = &pSrc[0], *pIn2 = &pSrc[(2u * fftLen) + 1u]; + + pCoefA = &pATable[0]; + pCoefB = &pBTable[0]; + + while(fftLen > 0u) + { + /* + outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] + + pIn[2 * n - 2 * i] * pBTable[2 * i] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); + + outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] - + pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); + + */ + CoefA1 = *pCoefA++; + CoefA2 = *pCoefA; + + /* outR = (pIn[2 * i] * pATable[2 * i] */ + outR = ((int32_t) (((q63_t) * pIn1 * CoefA1) >> 32)); + + /* - pIn[2 * i] * pATable[2 * i + 1] */ + outI = -((int32_t) (((q63_t) * pIn1++ * CoefA2) >> 32)); + + /* pIn[2 * i + 1] * pATable[2 * i + 1] */ + outR = + (q31_t) ((((q63_t) outR << 32) + ((q63_t) * pIn1 * (CoefA2))) >> 32); + + /* pIn[2 * i + 1] * pATable[2 * i] */ + outI = + (q31_t) ((((q63_t) outI << 32) + ((q63_t) * pIn1++ * (CoefA1))) >> 32); + + /* pIn[2 * n - 2 * i] * pBTable[2 * i] */ + outR = + (q31_t) ((((q63_t) outR << 32) + ((q63_t) * pIn2 * (CoefA2))) >> 32); + + CoefB1 = *pCoefB; + + /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] */ + outI = + (q31_t) ((((q63_t) outI << 32) - ((q63_t) * pIn2-- * (CoefB1))) >> 32); + + /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1] */ + outR = + (q31_t) ((((q63_t) outR << 32) + ((q63_t) * pIn2 * (CoefB1))) >> 32); + + /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */ + outI = + (q31_t) ((((q63_t) outI << 32) + ((q63_t) * pIn2-- * (CoefA2))) >> 32); + + /* write output */ + *pDst++ = (outR << 1u); + *pDst++ = (outI << 1u); + + /* update coefficient pointer */ + pCoefB = pCoefB + (modifier * 2u); + pCoefA = pCoefA + ((modifier * 2u) - 1u); + + /* Decrement loop count */ + fftLen--; + + } + + +} diff --git a/hardware/sam/system/CMSIS/Documentation/CMSIS-SVD_Schema_1_0.xsd b/hardware/sam/system/CMSIS/Documentation/CMSIS-SVD_Schema_1_0.xsd new file mode 100644 index 000000000..4f9aef635 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/CMSIS-SVD_Schema_1_0.xsd @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hardware/sam/system/CMSIS/Documentation/CMSIS_CM4_SIMD.htm b/hardware/sam/system/CMSIS/Documentation/CMSIS_CM4_SIMD.htm new file mode 100644 index 000000000..243f377a8 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/CMSIS_CM4_SIMD.htm @@ -0,0 +1,3809 @@ + + + + CMSIS: Cortex-M4 SIMD Instructions + + + + + + +

CMSIS Support for Cortex-M4 SIMD Instructions

+ +

This file describes the Cortex-M4 SIMD instructions supported by CMSIS.

+

Version: 1.00 - 25. November 2010

+ +

Information in this file, the accompany manuals, and software is
+ Copyright © ARM Ltd.
All rights reserved. +

+ +
+ +

Revision History

+
    +
  • Revision 0.01 - January 2010: Initial version
  • +
  • Revision 0.02 - June 2010: added __QADD, __QSUB
  • +
  • Revision 1.00 - November 2010:
  • +
+ +
+ +

Contents

+ +
    +
  1. About
  2. +
  3. Cortex-M4 SIMD instruction support
  4. +
  5. Examples
  6. +
+ + + +

 

+

About

+

+ CMSIS provides for the Cortex-M4 a set of functions supporting Cortex-M4 SIMD instructions. +

+ +

 

+

Cortex-M4 SIMD instruction support

+

CMSIS supports the following functions for Cortex-M4 instructions: +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameMnemonicDescription
__SADD8SADD8GE setting quad 8-bit signed addition
__QADD8QADD8Q setting quad 8-bit saturating addition
__SHADD8SHADD8Quad 8-bit signed addition with halved results
__UADD8UADD8GE setting quad 8-bit unsigned addition
__UQADD8UQADD8Quad 8-bit unsigned saturating addition
__UHADD8UHADD8Quad 8-bit unsigned addition with halved results
__SSUB8SSUB8GE setting quad 8-bit signed subtraction
__QSUB8QSUB8Q setting quad 8-bit saturating subtract
__SHSUB8SHSUB8Quad 8-bit signed subtraction with halved results
__USUB8USUB8GE setting quad 8-bit unsigned subtract
__UQSUB8UQSUB8Quad 8-bit unsigned saturating subtraction
__UHSUB8UHSUB8Quad 8-bit unsigned subtraction with halved results
__SADD16SADD16GE setting dual 16-bit signed addition
__QADD16QADD16Q setting dual 16-bit saturating addition
__SHADD16SHADD16Dual 16-bit signed addition with halved results
__UADD16UADD16GE setting dual 16-bit unsigned addition
__UQADD16UQADD16Dual 16-bit unsigned saturating addition
__UHADD16UHADD16Dual 16-bit unsigned addition with halved results
__SSUB16SSUB16GE setting dual 16-bit signed subtraction
__QSUB16QSUB16Q setting dual 16-bit saturating subtract
__SHSUB16SHSUB16Dual 16-bit signed subtraction with halved results
__USUB16USUB16GE setting dual 16-bit unsigned subtract
__UQSUB16UQSUB16Dual 16-bit unsigned saturating subtraction
__UHSUB16UHSUB16Dual 16-bit unsigned subtraction with halved results
__SASXSASXGE setting dual 16-bit addition and subtraction with exchange
__QASXQASXQ setting dual 16-bit add and subtract with exchange
__SHASXSHASXDual 16-bit signed addition and subtraction with halved results
__UASXUASXGE setting dual 16-bit unsigned addition and subtraction with exchange
__UQASXUQASXDual 16-bit unsigned saturating addition and subtraction with exchange
__UHASXUHASXDual 16-bit unsigned addition and subtraction with halved results and exchange
__SSAXSSAXGE setting dual 16-bit signed subtraction and addition with exchange
__QSAXQSAXQ setting dual 16-bit subtract and add with exchange
__SHSAXSHSAXDual 16-bit signed subtraction and addition with halved results
__USAXUSAXGE setting dual 16-bit unsigned subtract and add with exchange
__UQSAXUQSAXDual 16-bit unsigned saturating subtraction and addition with exchange
__UHSAXUHSAXDual 16-bit unsigned subtraction and addition with halved results and exchange
__USAD8USAD8Unsigned sum of quad 8-bit unsigned absolute difference
__USADA8USADA8Unsigned sum of quad 8-bit unsigned absolute difference with 32-bit accumulate
__SSAT16SSAT16Q setting dual 16-bit saturate
__USAT16USAT16Q setting dual 16-bit unsigned saturate
__UXTB16UXTB16Dual extract 8-bits and zero-extend to 16-bits
__UXTAB16UXTAB16Extracted 16-bit to 32-bit unsigned addition
__SXTB16SXTB16Dual extract 8-bits and sign extend each to 16-bits
__SXTAB16SXTAB16Dual extracted 8-bit to 16-bit signed addition
__SMUADSMUADQ setting sum of dual 16-bit signed multiply
__SMUADXSMUADXQ setting sum of dual 16-bit signed multiply with exchange
__SMLADSMLADQ setting dual 16-bit signed multiply with single 32-bit accumulator
__SMLADXSMLADXQ setting pre-exchanged dual 16-bit signed multiply with single 32-bit accumulator
__SMLALDSMLALDDual 16-bit signed multiply with single 64-bit accumulator
__SMLALDXSMLALDXDual 16-bit signed multiply with exchange with single 64-bit accumulator
__SMUSDSMUSDDual 16-bit signed multiply returning difference
__SMUSDXSMUSDXDual 16-bit signed multiply with exchange returning difference
__SMLSDSMLSDQ setting dual 16-bit signed multiply subtract with 32-bit accumulate
__SMLSDXSMLSDXQ setting dual 16-bit signed multiply with exchange subtract with 32-bit accumulate
__SMLSLDSMLSLDQ setting dual 16-bit signed multiply subtract with 64-bit accumulate
__SMLSLDXSMLSLDXQ setting dual 16-bit signed multiply with exchange subtract with 64-bit accumulate
__SELSELSelect bytes based on GE bits
__QADDQADDQ setting saturating add
__QSUBQSUB/td> + Q setting saturating subtract
+ + + + +

Function __SADD8

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SADD8(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform four 8-bit signed integer additions.
+ The GE bits in the APSR are set according to the results of the additions. +
Parameter +
    +
  • val1: first four 8-bit summands.
  • +
  • val2: second four 8-bit summands.
  • +
+
Return Value +

The function returns:

+
    +
  • the addition of the first bytes from each operand, in the first byte of the return value.
  • +
  • the addition of the second bytes of each operand, in the second byte of the return value.
  • +
  • the addition of the third bytes of each operand, in the third byte of the return value.
  • +
  • the addition of the fourth bytes of each operand, in the fourth byte of the return value.
  • +
+

Each bit in APSR.GE is set or cleared for each byte in the return value, depending on + the results of the operation.
+ If res is the return value, then: +

+
    +
  • if res[7:0] ≥ 0 then APSR.GE[0] = 1 else 0
  • +
  • if res[15:8] ≥ 0 then APSR.GE[1] = 1 else 0
  • +
  • if res[23:16] ≥ 0 then APSR.GE[2] = 1 else 0
  • +
  • if res[31:24] ≥ 0 then APSR.GE[3] = 1 else 0
  • +
+
Operation +
+res[7:0]   = val1[7:0]   + val2[7:0]
+res[15:8]  = val1[15:8]  + val2[15:8]
+res[23:16] = val1[23:16] + val2[23:16]
+res[31:24] = val1[31:24] + val2[31:24]
+
+ +

Function __QADD8

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __QADD8(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform four 8-bit integer additions, saturating the results to + the 8-bit signed integer range -27 ≤ x ≤ 27 - 1. +
Parameter +
    +
  • val1: first four 8-bit summands.
  • +
  • val2: second four 8-bit summands.
  • +
+
Return Value +

The function returns:

+
    +
  • the saturated addition of the first byte of each operand in the first byte of the return value.
  • +
  • the saturated addition of the second byte of each operand in the second byte of the return value.
  • +
  • the saturated addition of the third byte of each operand in the third byte of the return value.
  • +
  • the saturated addition of the fourth byte of each operand in the fourth byte of the return value.
  • +
+

The returned results are saturated to the 16-bit signed integer range -27 ≤ x ≤ 27 - 1. +

+
Operation +
+res[7:0]   = val1[7:0]   + val2[7:0]
+res[15:8]  = val1[15:8]  + val2[15:8]
+res[23:16] = val1[23:16] + val2[23:16]
+res[31:24] = val1[31:24] + val2[31:24]
+
+ +

Function __SHADD8

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SHADD8(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform four signed 8-bit integer additions, halving the results. +
Parameter +
    +
  • val1: first four 8-bit summands.
  • +
  • val2: second four 8-bit summands.
  • +
+
Return Value +

The function returns:

+
    +
  • the halved addition of the first bytes from each operand, in the first byte of the return value.
  • +
  • the halved addition of the second bytes from each operand, in the second byte of the return value.
  • +
  • the halved addition fo the third bytes from each operand, in the third byte of the return value.
  • +
  • the halved addition of the fourth bytes from each operand, in the fourth byte of the return value.
  • +
+
Operation +
+res[7:0]   = (val1[7:0]   + val2[7:0])   >> 1
+res[15:8]  = (val1[15:8]  + val2[15:8])  >> 1
+res[23:16] = (val1[23:16] + val2[23:16]) >> 1
+res[31:24] = (val1[31:24] + val2[31:24]) >> 1
+
+ +

Function __UADD8

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __UADD8(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform four unsigned 8-bit integer additions.
+ The GE bits in the APSR are set according to the results. +
Parameter +
    +
  • val1: first four 8-bit summands for each addition.
  • +
  • val2: second four 8-bit summands for each addition.
  • +
+
Return Value +

The function returns:

+
    +
  • the addition of the first bytes in each operand, in the first byte of the return value.
  • +
  • the addition of the second bytes in each operand, in the second byte of the return value.
  • +
  • the addition of the third bytes in each operand, in the third byte of the return value.
  • +
  • the addition of the fourth bytes in each operand, in the fourth byte of the return value.
  • +
+

Each bit in APSR.GE is set or cleared for each byte in the return value, depending on + the results of the operation.
+ If res is the return value, then: +

+
    +
  • if res[7:0] ≥ 0x100 then APSR.GE[0] = 1 else 0
  • +
  • if res[15:8] ≥ 0x100 then APSR.GE[1] = 1 else 0
  • +
  • if res[23:16] ≥ 0x100 then APSR.GE[2] = 1 else 0
  • +
  • if res[31:24] ≥ 0x100 then APSR.GE[3] = 1 else 0
  • +
+
Operation +
+res[7:0]   = val1[7:0]   + val2[7:0]
+res[15:8]  = val1[15:8]  + val2[15:8]
+res[23:16] = val1[23:16] + val2[23:16]
+res[31:24] = val1[31:24] + val2[31:24]
+
+ +

Function __UQADD8

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __UQADD8(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform four unsigned 8-bit integer additions, saturating the + results to the 8-bit unsigned integer range 0 ≤ x ≤ 28 - 1. +
Parameter +
    +
  • val1: first four 8-bit summands.
  • +
  • val2: second four 8-bit summands.
  • +
+
Return Value +

The function returns:

+
    +
  • the addition of the first bytes in each operand, in the first byte of the return value.
  • +
  • the addition of the second bytes in each operand, in the second byte of the return value.
  • +
  • the addition of the third bytes in each operand, in the third byte of the return value.
  • +
  • the addition of the fourth bytes in each operand, in the fourth byte of the return value.
  • +
+

The results are saturated to the 8-bit unsigned integer range 0 ≤ x ≤ 28 - 1. +

+
Operation +
+res[7:0]   = val1[7:0]   + val2[7:0]
+res[15:8]  = val1[15:8]  + val2[15:8]
+res[23:16] = val1[23:16] + val2[23:16]
+res[31:24] = val1[31:24] + val2[31:24]
+
+ +

Function __UHADD8

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __UHADD8(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform four unsigned 8-bit integer additions, halving the results. +
Parameter +
    +
  • val1: first four 8-bit summands.
  • +
  • val2: second four 8-bit summands.
  • +
+
Return Value +

The function returns:

+
    +
  • the halved addition of the first bytes in each operand, in the first byte of the return value.
  • +
  • the halved addition of the second bytes in each operand, in the second byte of the return value.
  • +
  • the halved addition of the third bytes in each operand, in the third byte of the return value.
  • +
  • the halved addition of the fourth bytes in each operand, in the fourth byte of the return value.
  • +
+
Operation +
+res[7:0]   = (val1[7:0]   + val2[7:0])   >> 1
+res[15:8]  = (val1[15:8]  + val2[15:8])  >> 1
+res[23:16] = (val1[23:16] + val2[23:16]) >> 1
+res[31:24] = (val1[31:24] + val2[31:24]) >> 1
+
+ +

Function __SSUB8

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SSUB8(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform four 8-bit signed integer subtractions.
+ The GE bits in the APSR are set according to the results. +
Parameter +
    +
  • val1: first four 8-bit operands of each subtraction.
  • +
  • val2: second four 8-bit operands of each subtraction.
  • +
+
Return Value +

The function returns:

+
    +
  • the subtraction of the first byte in the second operand from the first byte in the + first operand, in the first bytes of the return value.
  • +
  • the subtraction of the second byte in the second operand from the second byte in + the first operand, in the second byte of the return value.
  • +
  • the subtraction of the third byte in the second operand from the third byte in the + first operand, in the third byte of the return value.
  • +
  • the subtraction of the fourth byte in the second operand from the fourth byte in + the first operand, in the fourth byte of the return value.
  • +
+

Each bit in APSR.GE is set or cleared for each byte in the return value, depending on + the results of the operation. If res is the return value, then: +

+
    +
  • if res[8:0] ≥ 0 then APSR.GE[0] = 1 else 0
  • +
  • if res[15:8] ≥ 0 then APSR.GE[1] = 1 else 0
  • +
  • if res[23:16] ≥ 0 then APSR.GE[2] = 1 else 0
  • +
  • if res[31:24] ≥ 0 then APSR.GE[3] = 1 else 0
  • +
+
Operation +
+res[7:0]   = val1[7:0]   - val2[7:0]
+res[15:8]  = val1[15:8]  - val2[15:8]
+res[23:16] = val1[23:16] - val2[23:16]
+res[31:24] = val1[31:24] - val2[31:24]
+
+ +

Function __QSUB8

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __QADD8(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform four 8-bit integer subtractions, saturating the results + to the 8-bit signed integer range -27 ≤ x ≤ 27 - 1. +
Parameter +
    +
  • val1: first four 8-bit operands.
  • +
  • val2: second four 8-bit operands.
  • +
+
Return Value +

The function returns:

+
    +
  • the subtraction of the first byte in the second operand from the first byte in the + first operand, in the first byte of the return value.
  • +
  • the subtraction of the second byte in the second operand from the second byte in + the first operand, in the second byte of the return value.
  • +
  • the subtraction of the third byte in the second operand from the third byte in the + first operand, in the third byte of the return value.
  • +
  • the subtraction of the fourth byte in the second operand from the fourth byte in + the first operand, in the fourth byte of the return value.
  • +
+

The returned results are saturated to the 8-bit signed integer range -27 ≤ x ≤ 27 - 1. +

+
Operation +
+res[7:0]   = val1[7:0]   - val2[7:0]
+res[15:8]  = val1[15:8]  - val2[15:8]
+res[23:16] = val1[23:16] - val2[23:16]
+res[31:24] = val1[31:24] - val2[31:24]
+
+ +

Function __SHSUB8

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SHSUB8(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform four signed 8-bit integer subtractions, halving the + results. +
Parameter +
    +
  • val1: first four 8-bit operands.
  • +
  • val2: second four 8-bit operands.
  • +
+
Return Value +

The function returns:

+
    +
  • the halved subtraction of the first byte in the second operand from the first byte + in the first operand, in the first byte of the return value.
  • +
  • the halved subtraction of the second byte in the second operand from the second + byte in the first operand, in the second byte of the return value.
  • +
  • the halved subtraction of the third byte in the second operand from the third byte + in the first operand, in the third byte of the return value.
  • +
  • the halved subtraction of the fourth byte in the second operand from the fourth + byte in the first operand, in the fourth byte of the return value.
  • +
+
Operation +
+res[7:0]   = (val1[7:0]   - val2[7:0])  >> 1
+res[15:8]  = (val1[15:8]  - val2[15:8]) >> 1
+res[23:16] = (val1[23:16] - val2[23:16] >> 1
+res[31:24] = (val1[31:24] - val2[31:24] >> 1
+
+ +

Function __USUB8

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __USUB8(uint32_t val1, uint32_t val2);
+
DescriptionThis function It enables you to perform four 8-bit unsigned integer subtractions.
+ The GE bits in the APSR are set according to the results. +
Parameter +
    +
  • val1: first four 8-bit operands.
  • +
  • val2: second four 8-bit operands.
  • +
+
Return Value +

The function returns:

+
    +
  • the subtraction of the first byte in the second operand from the first byte in the + first operand, in the first byte of the return value.
  • +
  • the subtraction of the second byte in the second operand from the second byte in + the first operand, in the second byte of the return value.
  • +
  • the subtraction of the third byte in the second operand from the third byte in the + first operand, in the third byte of the return value.
  • +
  • the subtraction of the fourth byte in the second operand from the fourth byte in + the first operand, in the fourth byte of the return value.
  • +
+

Each bit in APSR.GE is set or cleared for each byte in the return value, depending on + the results of the operation.
+ If res is the return value, then: +

+
    +
  • if res[7:0] ≥ 0 then APSR.GE[0] = 1 else 0
  • +
  • if res[15:8] ≥ 0 then APSR.GE[1] = 1 else 0
  • +
  • if res[23:16] ≥ 0 then APSR.GE[2] = 1 else 0
  • +
  • if res[31:24] ≥ 0 then APSR.GE[3] = 1 else 0
  • +
+
Operation +
+res[7:0]   = val1[7:0]   - val2[7:0]
+res[15:8]  = val1[15:8]  - val2[15:8]
+res[23:16] = val1[23:16] - val2[23:16]
+res[31:24] = val1[31:24] - val2[31:24]
+
+ +

Function __UQSUB8

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __UQSUB8(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform four unsigned 8-bit integer subtractions, saturating + the results to the 8-bit unsigned integer range 0 ≤ x ≤ 28 - 1. +
Parameter +
    +
  • val1: first four 8-bit operands.
  • +
  • val2: second four 8-bit operands.
  • +
+
Return Value +

The function returns:

+
    +
  • the subtraction of the first byte in the second operand from the first byte in the + first operand, in the first byte of the return value.
  • +
  • the subtraction of the second byte in the second operand from the second byte in + the first operand, in the second byte of the return value.
  • +
  • the subtraction of the third byte in the second operand from the third byte in the + first operand, in the third byte of the return value.
  • +
  • the subtraction of the fourth byte in the second operand from the fourth byte in + the first operand, in the fourth byte of the return value.
  • +
+

The results are saturated to the 8-bit unsigned integer range 0 ≤ x ≤ 28 - 1. +

+
Operation +
+res[7:0]   = val1[7:0]   - val2[7:0]
+res[15:8]  = val1[15:8]  - val2[15:8]
+res[23:16] = val1[23:16] - val2[23:16]
+res[31:24] = val1[31:24] - val2[31:24]
+
+ +

Function __UHSUB8

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __UHSUB8(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform four unsigned 8-bit integer subtractions, halving the + results. +
Parameter +
    +
  • val1: first four 8-bit operands.
  • +
  • val2: second four 8-bit operands.
  • +
+
Return Value +

The function returns:

+
    +
  • the halved subtraction of the first byte in the second operand from the first byte + in the first operand, in the first byte of the return value.
  • +
  • the halved subtraction of the second byte in the second operand from the second + byte in the first operand, in the second byte of the return value.
  • +
  • the halved subtraction of the third byte in the second operand from the third byte + in the first operand, in the third byte of the return value.
  • +
  • the halved subtraction of the fourth byte in the second operand from the fourth + byte in the first operand, in the fourth byte of the return value.
  • +
+
Operation +
+res[7:0]   = (val1[7:0]   - val2[7:0])   >> 1
+res[15:8]  = (val1[15:8]  - val2[15:8])  >> 1
+res[23:16] = (val1[23:16] - val2[23:16]) >> 1
+res[31:24] = (val1[31:24] - val2[31:24]) >> 1
+
+ +

Function __SADD16

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SADD16(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform two 16-bit signed integer additions.
+ The GE bits in the APSR are set according to the results of the additions. +
Parameter +
    +
  • val1: first two 16-bit summands.
  • +
  • val2: second two 16-bit summands.
  • +
+
Return Value +

The function returns:

+
    +
  • the addition of the low halfwords in the low halfword of the return value.
  • +
  • the addition of the high halfwords in the high halfword of the return value.
  • +
+

Each bit in APSR.GE is set or cleared for each byte in the return value, depending on + the results of the operation.
+ If res is the return value, then: +

+
    +
  • if res[15:0] ≥ 0 then APSR.GE[1:0] = 11 else 00
  • +
  • if res[31:16] ≥ 0 then APSR.GE[3:2] = 11 else 00
  • +
+
Operation +
+res[15:0]  = val1[15:0]  + val2[15:0]
+res[31:16] = val1[31:16] + val2[31:16]
+
+ +

Function __QADD16

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __QADD16(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform two 16-bit integer arithmetic additions in parallel, + saturating the results to the 16-bit signed integer range -215 ≤ x ≤ 215 - 1. +
Parameter +
    +
  • val1: first two 16-bit summands.
  • +
  • val2: second two 16-bit summands.
  • +
+
Return Value +

The function returns:

+
    +
  • the saturated addition of the low halfwords in the low halfword of the return value.
  • +
  • the saturated addition of the high halfwords in the high halfword of the return value.
  • +
+

The returned results are saturated to the 16-bit signed integer + range -215 ≤ x ≤ 215 - 1 +

+
Operation +
+res[15:0]  = val1[15:0]  + val2[15:0]
+res[16:31] = val1[31:16] + val2[31:16]
+
+ +

Function __SHADD16

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SHADD16(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform two signed 16-bit integer additions, halving the + results. +
Parameter +
    +
  • val1: first two 16-bit summands.
  • +
  • val2: second two 16-bit summands.
  • +
+
Return Value +

The function returns:

+
    +
  • the halved addition of the low halfwords from each operand, in the low halfword + of the return value.
  • +
  • the halved addition of the high halfwords from each operand, in the high halfword + of the return value.
  • +
+
Operation +
+res[15:0]  = (val1[15:0]  + val2[15:0])  >> 1
+res[31:16] = (val1[31:16] + val2[31:16]) >> 1
+
+ +

Function __UADD16

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __UADD16(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform two 16-bit unsigned integer additions.
+ The GE bits in the APSR are set according to the results. +
Parameter +
    +
  • val1: first two 16-bit summands for each addition.
  • +
  • val2: second two 16-bit summands for each addition.
  • +
+
Return Value +

The function returns:

+
    +
  • the addition of the low halfwords in each operand, in the low halfword of the + return value.
  • +
  • the addition of the high halfwords in each operand, in the high halfword of the + return value.
  • +
+

Each bit in APSR.GE is set or cleared for each byte in the return value, depending on + the results of the operation.
+ If res is the return value, then: +

+
    +
  • if res[15:0] ≥ 0x10000 then APSR.GE[0] = 11 else 00
  • +
  • if res[31:16] ≥ 0x10000 then APSR.GE[1] = 11 else 00
  • +
+
Operation +
+res[15:0]  = val1[15:0]  + val2[15:0]
+res[31:16] = val1[31:16] + val2[31:16]
+
+ +

Function __UQADD16

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __UQADD16(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform two unsigned 16-bit integer additions, saturating the + results to the 16-bit unsigned integer range 0 ≤ x ≤ 216 - 1. +
Parameter +
    +
  • val1: first two 16-bit summands.
  • +
  • val2: second two 16-bit summands.
  • +
+
Return Value +

The function returns:

+
    +
  • the addition of the low halfword in the first operand and the low halfword in the + second operand, in the low halfword of the return value.
  • +
  • the addition of the high halfword in the first operand and the high halfword in the + second operand, in the high halfword of the return value.
  • +
+

The results are saturated to the 16-bit unsigned integer + range 0 ≤ x ≤ 216 - 1. +

+
Operation +
+res[15:0]  = val1[15:0]  + val2[15:0]
+res[31:16] = val1[31:16] + val2[31:16]
+
+ +

Function __UHADD16

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __UHADD16(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform two unsigned 16-bit integer additions, halving the + results. +
Parameter +
    +
  • val1: first two 16-bit summands.
  • +
  • val2: second two 16-bit summands.
  • +
+
Return Value +

The function returns:

+
    +
  • the halved addition of the low halfwords in each operand, in the low halfword of + the return value.
  • +
  • the halved addition of the high halfwords in each operand, in the high halfword + of the return value.
  • +
+
Operation +
+res[15:0]  = (val1[15:0]  + val2[15:0])  >> 1
+res[31:16] = (val1[31:16] + val2[31:16]) >> 1
+
+ +

Function __SSUB16

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SSUB16(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform two 16-bit signed integer subtractions.
+ The GE bits in the APSR are set according to the results. +
Parameter +
    +
  • val1: first two 16-bit operands of each subtraction.
  • +
  • val2: second two 16-bit operands of each subtraction.
  • +
+
Return Value +

The function returns:

+
    +
  • the subtraction of the low halfword in the second operand from the low halfword + in the first operand, in the low halfword of the return value.
  • +
  • the subtraction of the high halfword in the second operand from the high halfword + in the first operand, in the high halfword of the return value.
  • +
+

Each bit in APSR.GE is set or cleared for each byte in the return value, depending on + the results of the operation.
+ If res is the return value, then: +

+
    +
  • if res[15:0] ≥ 0 then APSR.GE[1:0] = 11 else 00
  • +
  • if res[31:16] ≥ 0 then APSR.GE[3:2] = 11 else 00
  • +
+
Operation +
+res[15:0]  = val1[15:0]  - val2[15:0]
+res[31:16] = val1[31:16] - val2[31:16]
+
+ +

Function __QSUB16

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __QSUB16(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform two 16-bit integer subtractions, saturating the + results to the 16-bit signed integer range -215 ≤ x ≤ 215 - 1. +
Parameter +
    +
  • val1: first two 16-bit operands.
  • +
  • val2: second two 16-bit operands.
  • +
+
Return Value +

The function returns:

+
    +
  • the saturated subtraction of the low halfword in the second operand from the low + halfword in the first operand, in the low halfword of the returned result.
  • +
  • the saturated subtraction of the high halfword in the second operand from the high + halfword in the first operand, in the high halfword of the returned result.
  • +
+

The returned results are saturated to the 16-bit signed integer + range -215 ≤ x ≤ 215 - 1. +

+
Operation +
+res[15:0]  = val1[15:0]  - val2[15:0]
+res[31:16] = val1[31:16] - val2[31:16]
+
+ +

Function __SHSUB16

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SHSUB16(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform two signed 16-bit integer subtractions, halving the + results. +
Parameter +
    +
  • val1: first two 16-bit operands.
  • +
  • val2: second two 16-bit operands.
  • +
+
Return Value +

The function returns:

+
    +
  • the halved subtraction of the low halfword in the second operand from the low + halfword in the first operand, in the low halfword of the return value.
  • +
  • the halved subtraction of the high halfword in the second operand from the high + halfword in the first operand, in the high halfword of the return value.
  • +
+
Operation +
+res[15:0]  = (val1[15:0]  - val2[15:0])  >> 1
+res[31:16] = (val1[31:16] - val2[31:16]) >> 1
+
+ +

Function __USUB16

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __USUB16(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform two 16-bit unsigned integer subtractions.
+ The GE bits in the APSR are set according to the results. +
Parameter +
    +
  • val1: first two 16-bit operands.
  • +
  • val2: second two 16-bit operands.
  • +
+
Return Value +

The function returns:

+
    +
  • the subtraction of the low halfword in the second operand from the low halfword + in the first operand, in the low halfword of the return value.
  • +
  • the subtraction of the high halfword in the second operand from the high halfword + in the first operand, in the high halfword of the return value.
  • +
+

Each bit in APSR.GE is set or cleared for each byte in the return value, depending on + the results of the operation.
+ If res is the return value, then: +

+
    +
  • if res[15:0] ≥ 0 then APSR.GE[1:0] = 11 else 00
  • +
  • if res[31:16] ≥ 0 then APSR.GE[3:2] = 11 else 00
  • +
+
Operation +
+res[15:0]  = val1[15:0]  - val2[15:0]
+res[31:16] = val1[31:16] - val2[31:16]
+
+ +

Function __UQSUB16

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __UQSUB16(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform two unsigned 16-bit integer subtractions, saturating + the results to the 16-bit unsigned integer range 0 ≤ x ≤ 216 - 1. +
Parameter +
    +
  • val1: first two 16-bit operands for each subtraction.
  • +
  • val2: second two 16-bit operands for each subtraction.
  • +
+
Return Value +

The function returns:

+
    +
  • the subtraction of the low halfword in the second operand from the low halfword + in the first operand, in the low halfword of the return value.
  • +
  • the subtraction of the high halfword in the second operand from the high halfword + in the first operand, in the high halfword of the return value.
  • +
+

The results are saturated to the 16-bit unsigned integer range 0 ≤ x ≤ 216 - 1. +

+
Operation +
+res[15:0]  = val1[15:0]  - val2[15:0]
+res[31:16] = val1[31:16] - val2[31:16]
+
+ +

Function __UHSUB16

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __UHSUB16(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform two unsigned 16-bit integer subtractions, halving + the results. +
Parameter +
    +
  • val1: first two 16-bit operands.
  • +
  • val2: second two 16-bit operands.
  • +
+
Return Value +

The function returns:

+
    +
  • the halved subtraction of the low halfword in the second operand from the low + halfword in the first operand, in the low halfword of the return value.
  • +
  • the halved subtraction of the high halfword in the second operand from the high + halfword in the first operand, in the high halfword of the return value.
  • +
+
Operation +
+res[15:0]  = (val1[15:0]  - val2[15:0])  >> 1
+res[31:16] = (val1[31:16] - val2[31:16]) >> 1
+
+ +

Function __SASX

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SASX(uint32_t val1, uint32_t val2);
+
DescriptionThis function inserts an SASX instruction into the instruction stream generated by the + compiler. It enables you to exchange the halfwords of the second operand, add the high + halfwords and subtract the low halfwords.
+ The GE bits in the APRS are set according to the results. +
Parameter +
    +
  • val1: first operand for the subtraction in the low halfword, and the + first operand for the addition in the high halfword.
  • +
  • val2: second operand for the subtraction in the high halfword, and the + second operand for the addition in the low halfword.
  • +
+
Return Value +

The function returns:

+
    +
  • the subtraction of the high halfword in the second operand from the low halfword + in the first operand, in the low halfword of the return value.
  • +
  • the addition of the high halfword in the first operand and the low halfword in the + second operand, in the high halfword of the return value.
  • +
+

Each bit in APSR.GE is set or cleared for each byte in the return value, depending on + the results of the operation.
+ If res is the return value, then: +

+
    +
  • if res[15:0] ≥ 0 then APSR.GE[1:0] = 11 else 00
  • +
  • if res[31:16] ≥ 0 then APSR.GE[3:2] = 11 else 00
  • +
+
Operation +
+res[15:0]  = val1[15:0] - val2[31:16]
+res[31:16] = val1[31:16] + val2[15:0]
+
+ +

Function __QASX

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __QASX(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to exchange the halfwords of the one operand, then add the high + halfwords and subtract the low halfwords, saturating the results to the 16-bit signed + integer range -215 ≤ x ≤ 215 - 1. +
Parameter +
    +
  • val1: first operand for the subtraction in the low halfword, and the + first operand for the addition in the high halfword.
  • +
  • val2: second operand for the subtraction in the high halfword, and the + second operand for the addition in the low halfword.
  • +
+
Return Value +

The function returns:

+
    +
  • the saturated subtraction of the high halfword in the second operand from the low + halfword in the first operand, in the low halfword of the return value.
  • +
  • the saturated addition of the high halfword in the first operand and the low + halfword in the second operand, in the high halfword of the return value.
  • +
+

The returned results are saturated to the 16-bit signed integer + range -215 ≤ x ≤ 215 - 1. +

+
Operation +
+res[15:0]  = val1[15:0]  - val2[31:16]
+res[31:16] = val1[31:16] + val2[15:0]
+
+ +

Function __SHASX

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SHASX(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to exchange the two halfwords of one operand, perform one + signed 16-bit integer addition and one signed 16-bit subtraction, and halve the results. +
Parameter +
    +
  • val1: first 16-bit operands.
  • +
  • val2: second 16-bit operands.
  • +
+
Return Value +

The function returns:

+
    +
  • the halved subtraction of the high halfword in the second operand from the low + halfword in the first operand, in the low halfword of the return value.
  • +
  • the halved subtraction of the low halfword in the second operand from the high + halfword in the first operand, in the high halfword of the return value.
  • +
+
Operation +
+res[15:0]  = (val1[15:0]  - val2[31:16]) >> 1
+res[31:16] = (val1[31:16] - val2[15:0])  >> 1
+
+ +

Function __UASX

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __UASX(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to exchange the two halfwords of the second operand, add the + high halfwords and subtract the low halfwords.
+ The GE bits in the APSR are set according to the results. +
Parameter +
    +
  • val1: first operand for the subtraction in the low halfword, and the + first operand for the addition in the high halfword.
  • +
  • val2: second operand for the subtraction in the high halfword and the + second operand for the addition in the low halfword.
  • +
+
Return Value +

The function returns:

+
    +
  • the subtraction of the high halfword in the second operand from the low halfword + in the first operand, in the low halfword of the return value.
  • +
  • the addition of the high halfword in the first operand and the low halfword in the + second operand, in the high halfword of the return value.
  • +
+

Each bit in APSR.GE is set or cleared for each byte in the return value, depending on + the results of the operation.
+ If res is the return value, then: +

+
    +
  • if res[15:0] ≥ 0 then APSR.GE[1:0] = 11 else 00
  • +
  • if res[31:16] ≥ 0x10000 then APSR.GE[3:2] = 11 else 00
  • +
+
Operation +
+res[15:0]  = val1[15:0]  - val2[31:16]
+res[31:16] = val1[31:16] + val2[15:0]
+
+ +

Function __UQASX

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __UQASX(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to exchange the halfwords of the second operand and perform + one unsigned 16-bit integer addition and one unsigned 16-bit subtraction, saturating the + results to the 16-bit unsigned integer range 0 ≤ x ≤ 216 - 1. +
Parameter +
    +
  • val1: first two 16-bit operands.
  • +
  • val2: second two 16-bit operands.
  • +
+
Return Value +

The function returns:

+
    +
  • the subtraction of the high halfword in the second operand from the low halfword + in the first operand, in the low halfword of the return value.
  • +
  • the subtraction of the low halfword in the second operand from the high halfword + in the first operand, in the high halfword of the return value.
  • +
+

The results are saturated to the 16-bit unsigned integer + range 0 ≤ x ≤ 216 - 1. +

+
Operation +
+res[15:0]  = val1[15:0]  - val2[31:16]
+res[31:16] = val1[31:16] + val2[15:0]
+
+ +

Function __UHASX

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __UHASX(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to exchange the halfwords of the second operand, add the high + halfwords and subtract the low halfwords, halving the results. +
Parameter +
    +
  • val1: first operand for the subtraction in the low halfword, and the + first operand for the addition in the high halfword.
  • +
  • val2: second operand for the subtraction in the high halfword, and the + second operand for the addition in the low halfword.
  • +
+
Return Value +

The function returns:

+
    +
  • the halved subtraction of the high halfword in the second operand from the low + halfword in the first operand.
  • +
  • the halved addition of the high halfword in the first operand and the low halfword + in the second operand.
  • +
+
Operation +
+res[15:0]  = (val1[15:0]  - val2[31:16]) >> 1
+res[31:16] = (val1[31:16] + val2[15:0])  >> 1
+
+ +

Function __SSAX

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SSAX(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to exchange the two halfwords of one operand and perform one + 16-bit integer subtraction and one 16-bit addition.
+ The GE bits in the APSR are set according to the results. +
Parameter +
    +
  • val1: first operand for the addition in the low halfword, and the first + operand for the subtraction in the high halfword.
  • +
  • val2: second operand for the addition in the high halfword, and the + second operand for the subtraction in the low halfword.
  • +
+
Return Value +

The function returns:

+
    +
  • the addition of the low halfword in the first operand and the high halfword in the + second operand, in the low halfword of the return value.
  • +
  • the subtraction of the low halfword in the second operand from the high halfword + in the first operand, in the high halfword of the return value.
  • +
+

Each bit in APSR.GE is set or cleared for each byte in the return value, depending on + the results of the operation.
+ If res is the return value, then: +

+
    +
  • if res[15:0] ≥ 0 then APSR.GE[1:0] = 11 else 00
  • +
  • if res[31:16] ≥ 0 then APSR.GE[3:2] = 11 else 00
  • +
+
Operation +
+res[15:0]  = val1[15:0]  + val2[31:16]
+res[31:16] = val1[31:16] - val2[15:0]
+
+ +

Function __QSAX

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __QSAX(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to exchange the halfwords of one operand, then subtract the + high halfwords and add the low halfwords, saturating the results to the 16-bit signed + integer range -215 ≤ x ≤ 215 - 1. +
Parameter +
    +
  • val1: first operand for the addition in the low halfword, and the first + operand for the subtraction in the high halfword.
  • +
  • val2: second operand for the addition in the high halfword, and the + second operand for the subtraction in the low halfword.
  • +
+
Return Value +

The function returns:

+
    +
  • the saturated addition of the low halfword of the first operand and the high + halfword of the second operand, in the low halfword of the return value.
  • +
  • the saturated subtraction of the low halfword of the second operand from the high + halfword of the first operand, in the high halfword of the return value.
  • +
+

The returned results are saturated to the 16-bit signed integer + range -215 ≤ x ≤ 215 - 1. +

+
Operation +
+res[15:0]  = val1[15:0]  + val2[31:16]
+res[31:16] = val1[31:16] - val2[15:0]
+
+ +

Function __SHSAX

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SHSAX(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to exchange the two halfwords of one operand, perform one + signed 16-bit integer subtraction and one signed 16-bit addition, and halve the results. +
Parameter +
    +
  • val1: first 16-bit operands.
  • +
  • val2: second 16-bit operands.
  • +
+
Return Value +

The function returns:

+
    +
  • the halved addition of the low halfword in the first operand and the high halfword + in the second operand, in the low halfword of the return value.
  • +
  • the halved subtraction of the low halfword in the second operand from the high + halfword in the first operand, in the high halfword of the return value.
  • +
+
Operation +
+res[15:0]  = (val1[15:0]  + val2[31:16]) >> 1
+res[31:16] = (val1[31:16] - val2[15:0])  >> 1
+
+ +

Function __USAX

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __USAX(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to exchange the halfwords of the second operand, subtract the + high halfwords and add the low halfwords.
+ The GE bits in the APSR are set according to the results. +
Parameter +
    +
  • val1: first operand for the addition in the low halfword, and the first + operand for the subtraction in the high halfword.
  • +
  • val2: second operand for the addition in the high halfword, and the + second operand for the subtraction in the low halfword.
  • +
+
Return Value +

The function returns:

+
    +
  • the addition of the low halfword in the first operand and the high halfword in the + second operand, in the low halfword of the return value.
  • +
  • the subtraction of the low halfword in the second operand from the high halfword + in the first operand, in the high halfword of the return value.
  • +
+

Each bit in APSR.GE is set or cleared for each byte in the return value, depending on + the results of the operation.
+ If res is the return value, then: +

+
    +
  • if res[15:0] ≥ 0x10000 then APSR.GE[1:0] = 11 else 00
  • +
  • if res[31:16] ≥ 0 then APSR.GE[3:2] = 11 else 00
  • +
+
Operation +
+res[15:0]  = val1[15:0]  + val2[31:16]
+res[31:16] = val1[31:16] - val2[15:0]
+
+ +

Function __UQSAX

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __UQSAX(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to exchange the halfwords of the second operand and perform + one unsigned 16-bit integer subtraction and one unsigned 16-bit addition, saturating the + results to the 16-bit unsigned integer range 0 ≤ x ≤ 216 - 1. +
Parameter +
    +
  • val1: first 16-bit operand for the addition in the low halfword, and the + first 16-bit operand for the subtraction in the high halfword.
  • +
  • val2: second 16-bit halfword for the addition in the high halfword, + and the second 16-bit halfword for the subtraction in the low halfword.
  • +
+
Return Value +

The function returns:

+
    +
  • the addition of the low halfword in the first operand and the high halfword in the + second operand, in the low halfword of the return value.
  • +
  • the subtraction of the low halfword in the second operand from the high halfword + in the first operand, in the high halfword of the return value.
  • +
+

The results are saturated to the 16-bit unsigned integer + range 0 ≤ x ≤ 216 - 1. +

+
Operation +
+res[15:0]  = val1[15:0]  + val2[31:16]
+res[31:16] = val1[31:16] - val2[15:0]
+
+ +

Function __UHSAX

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __UHSAX(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to exchange the halfwords of the second operand, subtract the + high halfwords and add the low halfwords, halving the results. +
Parameter +
    +
  • val1: first operand for the addition in the low halfword, and the first + operand for the subtraction in the high halfword.
  • +
  • val2: second operand for the addition in the high halfword, and the + second operand for the subtraction in the low halfword.
  • +
+
Return Value +

The function returns:

+
    +
  • the halved addition of the high halfword in the second operand and the low + halfword in the first operand, in the low halfword of the return value.
  • +
  • the halved subtraction of the low halfword in the second operand from the high + halfword in the first operand, in the high halfword of the return value.
  • +
+
Operation +
+res[15:0]  = (val1[15:0]  + val2[31:16]) >> 1
+res[31:16] = (val1[31:16] - val2[15:0])  >> 1
+
+ +

Function __USAD8

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __USAD8(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform four unsigned 8-bit subtractions, and add the + absolute values of the differences together, returning the result as a single unsigned + integer. +
Parameter +
    +
  • val1: first four 8-bit operands for the subtractions.
  • +
  • val2: second four 8-bit operands for the subtractions.
  • +
+
Return Value +

The function returns the sum of the absolute differences of:

+
    +
  • the subtraction of the first byte in the second operand from the first byte in the + first operand.
  • +
  • the subtraction of the second byte in the second operand from the second byte in + the first operand.
  • +
  • the subtraction of the third byte in the second operand from the third byte in the + first operand.
  • +
  • the subtraction of the fourth byte in the second operand from the fourth byte in + the first operand.
  • +
+

The sum is returned as a single unsigned integer.

+
Operation +
+absdiff1  = val1[7:0]   - val2[7:0]
+absdiff2  = val1[15:8]  - val2[15:8]
+absdiff3  = val1[23:16] - val2[23:16]
+absdiff4  = val1[31:24] - val2[31:24]
+res[31:0] = absdiff1 + absdiff2 + absdiff3 + absdiff4
+
+ +

Function __USADA8

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __USADA8(uint32_t val1, uint32_t val2, uint32_t val3);
+
DescriptionThis function enables you to perform four unsigned 8-bit subtractions, and add the + absolute values of the differences to a 32-bit accumulate operand. +
Parameter +
    +
  • val1: first four 8-bit operands for the subtractions.
  • +
  • val2: second four 8-bit operands for the subtractions.
  • +
  • val3: accumulation value.
  • +
+
Return Value +

The function returns the sum of the absolute differences of the following + bytes, added to the accumulation value:

+
    +
  • the subtraction of the first byte in the second operand from the first byte in the + first operand.
  • +
  • the subtraction of the second byte in the second operand from the second byte in + the first operand.
  • +
  • the subtraction of the third byte in the second operand from the third byte in the + first operand.
  • +
  • the subtraction of the fourth byte in the second operand from the fourth byte in + the first operand.
  • +
+
Operation +
+absdiff1  = val1[7:0]   - val2[7:0]
+absdiff2  = val1[15:8]  - val2[15:8]
+absdiff3  = val1[23:16] - val2[23:16]
+absdiff4  = val1[31:24] - val2[31:24]
+sum       = absdiff1 + absdiff2 + absdiff3 + absdiff4
+res[31:0] = sum[31:0] + val3[31:0]
+
+ +

Function __SSAT16

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SSAT16(uint32_t val1, const uint32_t val2);
+
DescriptionThis function enables you to saturate two signed 16-bit values to a selected signed range.
+ The Q bit is set if either operation saturates. +
Parameter +
    +
  • val1: two signed 16-bit values to be saturated.
  • +
  • val2: bit position for saturation, an integral constant expression in the + range 1 to 16.
  • +
+
Return Value +

The function returns:

+
    +
  • the signed saturation of the low halfword in val1, saturated to the bit position + specified in val2 and returned in the low halfword of the return value.
  • +
  • the signed saturation of the high halfword in val1, saturated to the bit position + specified in val2 and returned in the high halfword of the return value.
  • +
+
Operation +
+Saturate halfwords in val1 to the signed range specified by the bit position in val2
+
+ +

Function __USAT16

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __USAT16(uint32_t val1, const uint32_t val2);
+
DescriptionThis function enables you to saturate two signed 16-bit values to a selected unsigned + range.
+ The Q bit is set if either operation saturates. +
Parameter +
    +
  • val1: two 16-bit values that are to be saturated.
  • +
  • val2: bit position for saturation, and must be an integral constant + expression in the range 0 to 15.
  • +
+
Return Value +

The function returns the saturation of the two signed 16-bit values, as non-negative values.

+
    +
  • the saturation of the low halfword in val1, saturated to the bit position + specified in val2 and returned in the low halfword of the return value.
  • +
  • the saturation of the high halfword in val1, saturated to the bit position + specified in val2 and returned in the high halfword of the return value.
  • +
+
Operation +
+Saturate halfwords in val1 to the unsigned range specified by the bit position in val2
+
+ +

Function __UXTB16

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __UXTB16(uint32_t val);
+
DescriptionThis function enables you to extract two 8-bit values from an operand and zero-extend + them to 16 bits each. +
Parameter +
    +
  • val1: two 8-bit values in val[7:0] and val[23:16] to be sign-extended.
  • +
+
Return Value +

The function returns the 8-bit values zero-extended to 16-bit values.

+
    +
  • zero-extended value of val[7:0] in the low halfword of the return value.
  • +
  • zero-extended value of val[23:16] in the high halfword of the return value.
  • +
+
Operation +
+res[15:0]  = ZeroExtended(val[7:0]  )
+res[31:16] = ZeroExtended(val[23:16])
+
+ +

Function __UXTAB16

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __UXTAB16(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to extract two 8-bit values from one operand, zero-extend them + to 16 bits each, and add the results to two 16-bit values from another operand. +
Parameter +
    +
  • val1: value added to the zero-extended to 16-bit values.
  • +
  • val2: two 8-bit values to be extracted and zero-extended.
  • +
+
Return Value +

The function returns the 8-bit values in val2, zero-extended to 16-bit values + and added to val1.

+
Operation +
+res[15:0]  = ZeroExt(val2[7:0]   to 16 bits) + val1[15:0]
+res[31:16] = ZeroExt(val2[31:16] to 16 bits) + val1[31:16]
+
+ +

Function __SXTB16

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SXTB16(uint32_t val);
+
DescriptionThis function enables you to extract two 8-bit values from an operand and sign-extend + them to 16 bits each. +
Parameter +
    +
  • val1: two 8-bit values in val[7:0] and val[23:16] to be sign-extended.
  • +
+
Return Value +

The function returns the 8-bit values sign-extended to 16-bit values.

+
    +
  • sign-extended value of val[7:0] in the low halfword of the return value.
  • +
  • sign-extended value of val[23:16] in the high halfword of the return value.
  • +
+
Operation +
+res[15:0]  = SignExtended(val[7:0]
+res[31:16] = SignExtended(val[23:16]
+
+ +

Function __SXTAB16

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SXTAB16(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to extract two 8-bit values from the second operand (at bit + positions [7:0] and [23:16]), sign-extend them to 16-bits each, and add the results to the + first operand. +
Parameter +
    +
  • val1: values added to the zero-extended to 16-bit values.
  • +
  • val2: two 8-bit values to be extracted and zero-extended.
  • +
+
Return Value +

The function returns the addition of val1 and val2, where the 8-bit values in + val2[7:0] and val2[23:16] have been extracted and sign-extended prior to the addition.

+
Operation +
+res[15:0]  = val1[15:0]  + SignExtended(val2[7:0])
+res[31:16] = val1[31:16] + SignExtended(val2[23:16])
+
+ +

Function __SMUAD

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SMUAD(uint32_t val1, uint32_t val2);
+
DescriptionThis function It enables you to perform two 16-bit signed multiplications, adding the + products together.
+ The Q bit is set if the addition overflows. +
Parameter +
    +
  • val1: first 16-bit operands for each multiplication.
  • +
  • val2: second 16-bit operands for each multiplication.
  • +
+
Return Value +

The function returns the sum of the products of the two 16-bit signed multiplications.

+
Operation +
+p1 = val1[15:0]  * val2[15:0]
+p2 = val1[31:16] * val2[31:16]
+res[31:0] = p1 + p2
+
+ +

Function __SMUADX

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SMUADX(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform two 16-bit signed multiplications with exchanged + halfwords of the second operand, adding the products together.
+ The Q bit is set if the addition overflows. +
Parameter +
    +
  • val1: first 16-bit operands for each multiplication.
  • +
  • val2: second 16-bit operands for each multiplication.
  • +
+
Return Value +

The function returns the sum of the products of the two 16-bit signed multiplications with exchanged + halfwords of the second operand.

+
Operation +
+p1 = val1[15:0]  * val2[31:16]
+p2 = val1[31:16] * val2[15:0]
+res[31:0] = p1 + p2
+
+ +

Function __SMLAD

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SMLAD(uint32_t val1, uint32_t val2, uint32_t val3);
+
DescriptionThis function enables you to perform two signed 16-bit multiplications, adding both + results to a 32-bit accumulate operand.
+ The Q bit is set if the addition overflows. Overflow cannot occur during the multiplications. +
Parameter +
    +
  • val1: first 16-bit operands for each multiplication.
  • +
  • val2: second 16-bit operands for each multiplication.
  • +
  • val2: accumulate value.
  • +
+
Return Value +

The function returns the product of each multiplication added to the accumulate + value, as a 32-bit integer.

+
Operation +
+p1 = val1[15:0]  * val2[15:0]
+p2 = val1[31:16] * val2[31:16]
+res[31:0] = p1 + p2 + val3[31:0]
+
+ +

Function __SMLADX

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SMLADX(uint32_t val1, uint32_t val2, uint32_t val3);
+
DescriptionThis function enables you to perform two signed 16-bit multiplications with exchanged + halfwords of the second operand, adding both results to a 32-bit accumulate operand.
+ The Q bit is set if the addition overflows. Overflow cannot occur during the multiplications. +
Parameter +
    +
  • val1: first 16-bit operands for each multiplication.
  • +
  • val2: second 16-bit operands for each multiplication.
  • +
  • val2: accumulate value.
  • +
+
Return Value +

The function returns the product of each multiplication with exchanged + halfwords of the second operand added to the accumulate value, as a 32-bit integer.

+
Operation +
+p1 = val1[15:0]  * val2[31:16]
+p2 = val1[31:16] * val2[15:0]
+res[31:0] = p1 + p2 + val3[31:0]
+
+ +

Function __SMLALD

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint64_t __SMLALD(uint32_t val1, uint32_t val2, uint64_t val3);
+
DescriptionThis function enables you to perform two signed 16-bit multiplications, adding both + results to a 64-bit accumulate operand. Overflow is only possible as a result of the 64-bit + addition. This overflow is not detected if it occurs. Instead, the result wraps around + modulo264. +
Parameter +
    +
  • val1: first 16-bit operands for each multiplication.
  • +
  • val2: second 16-bit operands for each multiplication.
  • +
  • val2: accumulate value.
  • +
+
Return Value +

The function returns the product of each multiplication added to the accumulate value.

+
Operation +
+p1 = val1[15:0]  * val2[15:0]
+p2 = val1[31:16] * val2[31:16]
+sum = p1 + p2 + val3[63:32][31:0]
+res[63:32] = sum[63:32]
+res[31:0]  = sum[31:0]
+
+ +

Function __SMLALDX

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+unsigned long long __SMLALDX(uint32_t val1, uint32_t val2, unsigned long long val3);
+
DescriptionThis function enables you to exchange the halfwords of the second operand, and perform + two signed 16-bit multiplications, adding both results to a 64-bit accumulate operand. + Overflow is only possible as a result of the 64-bit addition. This overflow is not detected + if it occurs. Instead, the result wraps around modulo264. +
Parameter +
    +
  • val1: first 16-bit operands for each multiplication.
  • +
  • val2: second 16-bit operands for each multiplication.
  • +
  • val2: accumulate value.
  • +
+
Return Value +

The function returns the product of each multiplication added to the accumulate value.

+
Operation +
+p1 = val1[15:0]  * val2[31:16]
+p2 = val1[31:16] * val2[15:0]
+sum = p1 + p2 + val3[63:32][31:0]
+res[63:32] = sum[63:32]
+res[31:0] = sum[31:0]
+
+ +

Function __SMUSD

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SMUSD(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform two 16-bit signed multiplications, taking the + difference of the products by subtracting the high halfword product from the low + halfword product. +
Parameter +
    +
  • val1: first 16-bit operands for each multiplication.
  • +
  • val2: second 16-bit operands for each multiplication.
  • +
+
Return Value +

The function returns the difference of the products of the two 16-bit signed multiplications.

+
Operation +
+p1 = val1[15:0]  * val2[15:0]
+p2 = val1[31:16] * val2[31:16]
+res[31:0] = p1 - p2
+
+ +

Function __SMUSDX

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SMUSDX(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to perform two 16-bit signed multiplications, subtracting one + of the products from the other. The halfwords of the second operand are exchanged + before performing the arithmetic. This produces top * bottom and bottom * top + multiplication. +
Parameter +
    +
  • val1: first 16-bit operands for each multiplication.
  • +
  • val2: second 16-bit operands for each multiplication.
  • +
+
Return Value +

The function returns the difference of the products of the two 16-bit signed multiplications.

+
Operation +
+p1 = val1[15:0]  * val2[31:16]
+p2 = val1[31:16] * val2[15:0]
+res[31:0] = p1 - p2
+
+ +

Function __SMLSD

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SMLSD(uint32_t val1, uint32_t val2, uint32_t val3);
+
DescriptionThis function enables you to perform two 16-bit signed multiplications, take the + difference of the products, subtracting the high halfword product from the low halfword + product, and add the difference to a 32-bit accumulate operand.
+ The Q bit is set if the accumulation overflows. Overflow cannot occur during the multiplications or the + subtraction. +
Parameter +
    +
  • val1: first 16-bit operands for each multiplication.
  • +
  • val2: second 16-bit operands for each multiplication.
  • +
  • val3: accumulate value.
  • +
+
Return Value +

The function returns the difference of the product of each multiplication, added + to the accumulate value.

+
Operation +
+p1 = val1[15:0]  * val2[15:0]
+p2 = val1[31:16] * val2[31:16]
+res[31:0] = p1 - p2 + val3[31:0]
+
+ +

Function __SMLSDX

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SMLSDX(uint32_t val1, uint32_t val2, uint32_t val3);
+
DescriptionThis function enables you to exchange the halfwords in the second operand, then perform + two 16-bit signed multiplications. The difference of the products is added to a 32-bit + accumulate operand.
+ The Q bit is set if the addition overflows. Overflow cannot occur during the multiplications or the subtraction. +
Parameter +
    +
  • val1: first 16-bit operands for each multiplication.
  • +
  • val2: second 16-bit operands for each multiplication.
  • +
  • val3: accumulate value.
  • +
+
Return Value +

The function returns the difference of the product of each multiplication, added + to the accumulate value.

+
Operation +
+p1 = val1[15:0]  * val2[31:16]
+p2 = val1[31:16] * val2[15:0]
+res[31:0] = p1 - p2 + val3[31:0]
+
+ +

Function __SMLSLD

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint64_t __SMLSLD(uint32_t val1, uint32_t val2, uint64_t val3);
+
DescriptionThis function It enables you to perform two 16-bit signed multiplications, take the + difference of the products, subtracting the high halfword product from the low halfword + product, and add the difference to a 64-bit accumulate operand. Overflow cannot occur + during the multiplications or the subtraction. Overflow can occur as a result of the 64-bit + addition, and this overflow is not detected. Instead, the result wraps round to + modulo264. +
Parameter +
    +
  • val1: first 16-bit operands for each multiplication.
  • +
  • val2: second 16-bit operands for each multiplication.
  • +
  • val3: accumulate value.
  • +
+
Return Value +

The function returns the difference of the product of each multiplication, + added to the accumulate value.

+
Operation +
+p1 = val1[15:0]  * val2[15:0]
+p2 = val1[31:16] * val2[31:16]
+res[63:0] = p1 - p2 + val3[63:0]
+
+ +

Function __SMLSLDX

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+unsigned long long __SMLSLDX(uint32_t val1, uint32_t val2, unsigned long long val3);
+
DescriptionThis function enables you to exchange the halfwords of the second operand, perform two + 16-bit multiplications, adding the difference of the products to a 64-bit accumulate + operand. Overflow cannot occur during the multiplications or the subtraction. Overflow + can occur as a result of the 64-bit addition, and this overflow is not detected. Instead, + the result wraps round to modulo264. +
Parameter +
    +
  • val1: first 16-bit operands for each multiplication.
  • +
  • val2: second 16-bit operands for each multiplication.
  • +
  • val3: accumulate value.
  • +
+
Return Value +

The function returns the difference of the product of each multiplication, + added to the accumulate value.

+
Operation +
+p1 = val1[15:0]  * val2[31:16]
+p2 = val1[31:16] * val2[15:0]
+res[63:0] = p1 - p2 + val3[63:0]
+
+ + +

Function __SEL

+ + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __SEL(uint32_t val1, uint32_t val2);
+
DescriptionThis function inserts a SEL instruction into the instruction stream generated by the + compiler. It enables you to select bytes from the input parameters, whereby the bytes + that are selected depend upon the results of previous SIMD instruction function. The + results of previous SIMD instruction function are represented by the Greater than or + Equal flags in the Application Program Status Register (APSR). + The __SEL function works equally well on both halfword and byte operand function + results. This is because halfword operand operations set two (duplicate) GE bits per + value. +
Parameter +
    +
  • val1: four selectable 8-bit values.
  • +
  • val2: four selectable 8-bit values.
  • +
+
Return Value +

The function selects bytes from the input parameters and returns them in the + return value, res, according to the following criteria:

+
    +
  • if APSR.GE[0] == 1 then res[7:0] = val1[7:0] else res[7:0] = val2[7:0]
  • +
  • if APSR.GE[1] == 1 then res[15:8] = val1[15:8] else res[15:8] = val2[15:8]
  • +
  • if APSR.GE[2] == 1 then res[23:16] = val1[23:16] else res[23:16] = val2[23:16]
  • +
  • if APSR.GE[3] == 1 then res[31;24] = val1[31:24] else res = val2[31:24]
  • +
+
+ +

Function __QADD

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __QADD(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to obtain the saturating add of two integers.
+ The Q bit is set if the operation saturates. +
Parameter +
    +
  • val1: first summand of the saturating add operation.
  • +
  • val2: second summand of the saturating add operation.
  • +
+
Return Value +

The function returns the saturating addition of val1 and val2.

+
Operation +
+res[31:0] = SAT(val1 + SAT(val2 * 2))
+
+ +

Function __QSUB

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary +
+uint32_t __QSUB(uint32_t val1, uint32_t val2);
+
DescriptionThis function enables you to obtain the saturating subtraction of two integers.
+ The Q bit is set if the operation saturates. +
Parameter +
    +
  • val1: minuend of the saturating subtraction operation.
  • +
  • val2: subtrahend of the saturating subtraction operation.
  • +
+
Return Value +

The function returns the saturating subtraction of val1 and val2.

+
Operation +
+res[31:0] = SAT(val1 - SAT(val2 * 2))
+
+ + + +

 

+

Examples

+

Following are some coding examples using the SIMD functions: +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescription
AdditionAdd two values using SIMD function
SubtractionSubtract two values using SIMD function
MultiplicationPerforming a multiplication using SIMD function
+ + +

Addition

+ + + + + + + +
Example +
+uint32_t add_halfwords(uint32_t val1, uint32_t val2)
+{
+   uint32_t res;
+   res = __SADD16(val1, val2);
+   return res;
+}
+
+ +

Subtraction

+ + + + + + + +
Example +
+uint32_t sub_halfwords(uint32_t val1, uint32_t val2)
+{
+  uint32_t res;
+  res = __SSUB16(val1, val2);
+  return res;
+}
+
+ +

Multiplication

+ + + + + + + +
Example +
+uint32_t dual_mul_add_products(uint32_t val1, uint32_t val2)
+{
+  uint32_t res;
+  res = __SMUAD(val1, val2);
+  return res;
+}
+
+ + + + \ No newline at end of file diff --git a/hardware/sam/system/CMSIS/Documentation/CMSIS_Core.htm b/hardware/sam/system/CMSIS/Documentation/CMSIS_Core.htm new file mode 100644 index 000000000..d52ea1e08 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/CMSIS_Core.htm @@ -0,0 +1,1470 @@ + + + + CMSIS: Cortex Microcontroller Software Interface Standard + + + +

Cortex Microcontroller Software Interface Standard

+ +

This file describes the Cortex Microcontroller Software Interface Standard (CMSIS).

+

Version: 2.10 - July 2011

+ +

Information in this file, the accompany manuals, and software is
+ Copyright © ARM Ltd.
All rights reserved. +

+ +
+ +

Revision History

+
    +
  • Version 1.00: initial release.
  • +
  • Version 1.01: added __LDREXx, __STREXx, and __CLREX.
  • +
  • Version 1.02: added Cortex-M0.
  • +
  • Version 1.10: second review.
  • +
  • Version 1.20: third review.
  • +
  • Version 1.30 PRE-RELEASE: reworked Startup Concept, additional Debug Functionality.
  • +
  • Version 1.30 2nd PRE-RELEASE: changed folder structure, added doxyGen comments, added Bit definitions.
  • +
  • Version 1.30: updated Device Support Packages.
  • +
  • Version 2.00: added Cortex-M4 support.
  • +
  • Version 2.01: internal review.
  • +
  • Version 2.02: updated Device Specific Defines
  • +
  • Version 2.10: reworked core include files
  • +
+ +
+ +

Contents

+ +
    +
  1. About
  2. +
  3. Coding Rules and Conventions
  4. +
  5. CMSIS Files
  6. +
  7. Core Peripheral Access Layer
  8. +
  9. CMSIS Example
  10. +
  11. CMSIS MISRA-C:2004 Compliance Exceptions
  12. +
+ +

About

+ +

+ The Cortex Microcontroller Software Interface Standard (CMSIS) answers the challenges + that are faced when software components are deployed to physical microcontroller devices based on a + Cortex-M0 or Cortex-M3 processor. The CMSIS will be also expanded to future Cortex-M + processor cores (the term Cortex-M is used to indicate that). The CMSIS is defined in close co-operation + with various silicon and software vendors and provides a common approach to interface to peripherals, + real-time operating systems, and middleware components. +

+ +

ARM provides as part of the CMSIS the following software layers that are +available for various compiler implementations:

+
    +
  • Core Peripheral Access Layer: contains name definitions, + address definitions and helper functions to + access core registers and peripherals. It defines also a device + independent interface for RTOS Kernels that includes debug channel + definitions.
  • +
+ +

These software layers are expanded by Silicon partners with:

+
    +
  • Device Peripheral Access Layer: provides definitions + for all device peripherals
  • +
  • Access Functions for Peripherals (optional): provides + additional helper functions for peripherals
  • +
+ +

CMSIS defines for a Cortex-M Microcontroller System:

+
    +
  • A common way to access peripheral registers + and a common way to define exception vectors.
  • +
  • The register names of the Core + Peripherals and the names of the Core + Exception Vectors.
  • +
  • An device independent interface for RTOS Kernels including a debug + channel.
  • +
+ +

+ By using CMSIS compliant software components, the user can easier re-use template code. + CMSIS is intended to enable the combination of software components from multiple middleware vendors. +

+ +

Coding Rules and Conventions

+ +

+ The following section describes the coding rules and conventions used in the CMSIS + implementation. It contains also information about data types and version number information. +

+ +

Essentials

+
    +
  • The CMSIS C code conforms to MISRA 2004 rules. In case of MISRA violations, + there are disable and enable sequences for PC-LINT inserted.
  • +
  • ANSI standard data types defined in the ANSI C header file + <stdint.h> are used.
  • +
  • #define constants that include expressions must be enclosed by + parenthesis.
  • +
  • Variables and parameters have a complete data type.
  • +
  • All functions in the Core Peripheral Access Layer are + re-entrant.
  • +
  • The Core Peripheral Access Layer has no blocking code + (which means that wait/query loops are done at other software layers).
  • +
  • For each exception/interrupt there is definition for: +
      +
    • an exception/interrupt handler with the postfix _Handler + (for exceptions) or _IRQHandler (for interrupts).
    • +
    • a default exception/interrupt handler (weak definition) that contains an endless loop.
    • +
    • a #define of the interrupt number with the postfix _IRQn.
    • +
  • +
+ +

Recommendations

+ +

The CMSIS recommends the following conventions for identifiers.

+
    +
  • CAPITAL names to identify Core Registers, Peripheral Registers, and CPU Instructions.
  • +
  • CamelCase names to identify peripherals access functions and interrupts.
  • +
  • PERIPHERAL_ prefix to identify functions that belong to specify peripherals.
  • +
  • Doxygen comments for all functions are included as described under Function Comments below.
  • +
+ +Comments + +
    +
  • Comments use the ANSI C90 style (/* comment */) or C++ style + (// comment). It is assumed that the programming tools support today + consistently the C++ comment style.
  • +
  • Function Comments provide for each function the following information: +
      +
    • one-line brief function overview.
    • +
    • detailed parameter explanation.
    • +
    • detailed information about return values.
    • +
    • detailed description of the actual function.
    • +
    +

    Doxygen Example:

    +
    +/** 
    + * @brief  Enable Interrupt in NVIC Interrupt Controller
    + * @param  IRQn  interrupt number that specifies the interrupt
    + * @return none.
    + * Enable the specified interrupt in the NVIC Interrupt Controller.
    + * Other settings of the interrupt such as priority are not affected.
    + */
    +
  • +
+ +

Data Types and IO Type Qualifiers

+ +

+ The Cortex-M HAL uses the standard types from the standard ANSI C header file + <stdint.h>. IO Type Qualifiers are used to specify the access + to peripheral variables. IO Type Qualifiers are indented to be used for automatic generation of + debug information of peripheral registers. +

+ + + + + + + + + + + + + + + + + + + + + + + + +
IO Type Qualifier#defineDescription
__Ivolatile constRead access only
__OvolatileWrite access only
__IOvolatileRead and write access
+ +

CMSIS Version Number

+

+ File core_cm4.h contains the version number of the CMSIS with the following define: +

+ +
+#define __CM4_CMSIS_VERSION_MAIN  (0x02)      /* [31:16] main version       */
+#define __CM4_CMSIS_VERSION_SUB   (0x10)      /* [15:0]  sub version        */
+#define __CM4_CMSIS_VERSION       ((__CM4_CMSIS_VERSION_MAIN << 16) | __CM4_CMSIS_VERSION_SUB)
+ +

+ File core_cm3.h contains the version number of the CMSIS with the following define: +

+ +
+#define __CM3_CMSIS_VERSION_MAIN  (0x02)      /* [31:16] main version       */
+#define __CM3_CMSIS_VERSION_SUB   (0x10)      /* [15:0]  sub version        */
+#define __CM3_CMSIS_VERSION       ((__CM3_CMSIS_VERSION_MAIN << 16) | __CM3_CMSIS_VERSION_SUB)
+ +

+ File core_cm0.h contains the version number of the CMSIS with the following define: +

+ +
+#define __CM0_CMSIS_VERSION_MAIN  (0x02)      /* [31:16] main version       */
+#define __CM0_CMSIS_VERSION_SUB   (0x10)      /* [15:0]  sub version        */
+#define __CM0_CMSIS_VERSION       ((__CM0_CMSIS_VERSION_MAIN << 16) | __CM0_CMSIS_VERSION_SUB)
+ + +

CMSIS Cortex Core

+

+ File core_cm4.h contains the type of the CMSIS Cortex-M with the following define: +

+ +
+#define __CORTEX_M                (0x04)
+ +

+ File core_cm3.h contains the type of the CMSIS Cortex-M with the following define: +

+ +
+#define __CORTEX_M                (0x03)
+ +

+ File core_cm0.h contains the type of the CMSIS Cortex-M with the following define: +

+ +
+#define __CORTEX_M                (0x00)
+ + +

CMSIS Files

+

+ This section describes the Files provided in context with the CMSIS to access the Cortex-M + hardware and peripherals. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileProviderDescription
device.hDevice specific (provided by silicon partner)Defines the peripherals for the actual device. The file may use + several other include files to define the peripherals of the actual device.
core_cm0.hARM (for RealView ARMCC, IAR, and GNU GCC)Defines the core peripherals for the Cortex-M0 CPU and core peripherals.
core_cm3.hARM (for RealView ARMCC, IAR, and GNU GCC)Defines the core peripherals for the Cortex-M3 CPU and core peripherals.
core_cm4.hARM (for RealView ARMCC, IAR, and GNU GCC)Defines the core peripherals for the Cortex-M4 CPU and core peripherals.
core_cm4_simd.hARM (for RealView ARMCC, IAR, and GNU GCC)Defines the Cortex-M4 Core SIMD functions.
core_cmFunc.hARM (for RealView ARMCC, IAR, and GNU GCC)Defines the Cortex-M Core Register access functions.
core_cmInstr.hARM (for RealView ARMCC, IAR, and GNU GCC)Defines the Cortex-M Core instructions.
startup_deviceARM (adapted by compiler partner / silicon partner)Provides the Cortex-M startup code and the complete (device specific) Interrupt Vector Table
system_deviceARM (adapted by silicon partner)Provides a device specific configuration file for the device. It configures the device initializes + typically the oscillator (PLL) that is part of the microcontroller device
+ +

device.h

+ +

+ The file device.h is provided by the silicon vendor and is the + central include file that the application programmer is using in + the C source code. This file contains: +

+
    +
  • +

    Interrupt Number Definition: provides interrupt numbers + (IRQn) for all core and device specific exceptions and interrupts.

    +
  • +
  • +

    Configuration for core_cm0.h / core_cm3.h / core_cm4.h: reflects the + actual configuration of the Cortex-M processor that is part of the actual + device. As such the file core_cm0.h / core_cm3.h / core_cm4.h is included that + implements access to processor registers and core peripherals.

    +
  • +
  • +

    Device Peripheral Access Layer: provides definitions + for all device peripherals. It contains all data structures and the address + mapping for the device specific peripherals.

    +
  • +
  • Access Functions for Peripherals (optional): provides + additional helper functions for peripherals that are useful for programming + of these peripherals. Access Functions may be provided as inline functions + or can be extern references to a device specific library provided by the + silicon vendor.
  • +
+ + +

Interrupt Number Definition

+ +

To access the device specific interrupts the device.h file defines IRQn +numbers for the complete device using a enum typedef as shown below:

+
+typedef enum IRQn
+{
+/******  Cortex-M3 Processor Exceptions/Interrupt Numbers ************************************************/
+  NonMaskableInt_IRQn             = -14,      /*!< 2 Non Maskable Interrupt                              */
+  HardFault_IRQn                  = -13,      /*!< 3 Cortex-M3 Hard Fault Interrupt                      */
+  MemoryManagement_IRQn           = -12,      /*!< 4 Cortex-M3 Memory Management Interrupt               */
+  BusFault_IRQn                   = -11,      /*!< 5 Cortex-M3 Bus Fault Interrupt                       */
+  UsageFault_IRQn                 = -10,      /*!< 6 Cortex-M3 Usage Fault Interrupt                     */
+  SVCall_IRQn                     = -5,       /*!< 11 Cortex-M3 SV Call Interrupt                        */
+  DebugMonitor_IRQn               = -4,       /*!< 12 Cortex-M3 Debug Monitor Interrupt                  */
+  PendSV_IRQn                     = -2,       /*!< 14 Cortex-M3 Pend SV Interrupt                        */
+  SysTick_IRQn                    = -1,       /*!< 15 Cortex-M3 System Tick Interrupt                    */
+/******  STM32 specific Interrupt Numbers ****************************************************************/
+  WWDG_STM_IRQn                   = 0,        /*!< Window WatchDog Interrupt                             */
+  PVD_STM_IRQn                    = 1,        /*!< PVD through EXTI Line detection Interrupt             */
+  :
+  :
+  } IRQn_Type;
+ + +

Device Specific Defines

+

+ The following device implementation specific defines are set in the device header file and are + used for the Cortex-M core configuration options. Some configuration options are reflected + in the CMSIS layer using the #define settings described below. +

+

+ Several features in core_cm#.h are configured by the following defines + that must be defined before #include <core_cm#.h> + preprocessor command. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#defineCoreValueDescription
__CM0_REVM00x0000Core revision number ([15:8] revision number, [7:0] patch number)
__CM3_REVM30x0101 | 0x0200Core revision number ([15:8] revision number, [7:0] patch number)
__CM4_REVM40x0000Core revision number ([15:8] revision number, [7:0] patch number)
__NVIC_PRIO_BITSM0, M3, M42 .. 8Number of priority bits implemented in the NVIC (device specific)
__MPU_PRESENTM0, M3, M40 | 1Defines if a MPU is present or not
__FPU_PRESENTM40 | 1Defines if a FPU is present or not
__Vendor_SysTickConfigM0, M3, M40 | 1When this define is setup to 1, the SysTickConfig function + in core_cm3.h is excluded. In this case the device.h + file must contain a vendor specific implementation of this function.
+ + +

Device Peripheral Access Layer

+

+ Each peripheral uses a prefix which consists of <device abbreviation>_ + and <peripheral name>_ to identify peripheral registers that access this + specific peripheral. The intention of this is to avoid name collisions caused + due to short names. If more than one peripheral of the same type exists, + identifiers have a postfix (digit or letter). For example: +

+
    +
  • <device abbreviation>_UART_Type: defines the generic register layout for all UART channels in a device. +
    +typedef struct
    +{
    +  union {
    +  __I  uint8_t  RBR;                     /*!< Offset: 0x000 (R/ )  Receiver Buffer Register    */
    +  __O  uint8_t  THR;                     /*!< Offset: 0x000 ( /W)  Transmit Holding Register   */
    +  __IO uint8_t  DLL;                     /*!< Offset: 0x000 (R/W)  Divisor Latch LSB           */
    +       uint32_t RESERVED0;
    +  };
    +  union {
    +  __IO uint8_t  DLM;                     /*!< Offset: 0x004 (R/W)  Divisor Latch MSB           */
    +  __IO uint32_t IER;                     /*!< Offset: 0x004 (R/W)  Interrupt Enable Register   */
    +  };
    +  union {
    +  __I  uint32_t IIR;                     /*!< Offset: 0x008 (R/ )  Interrupt ID Register       */
    +  __O  uint8_t  FCR;                     /*!< Offset: 0x008 ( /W)  FIFO Control Register       */
    +  };
    +  __IO uint8_t  LCR;                     /*!< Offset: 0x00C (R/W)  Line Control Register       */
    +       uint8_t  RESERVED1[7];
    +  __I  uint8_t  LSR;                     /*!< Offset: 0x014 (R/ )  Line Status Register        */
    +       uint8_t  RESERVED2[7];
    +  __IO uint8_t  SCR;                     /*!< Offset: 0x01C (R/W)  Scratch Pad Register        */
    +       uint8_t  RESERVED3[3];
    +  __IO uint32_t ACR;                     /*!< Offset: 0x020 (R/W)  Autobaud Control Register   */
    +  __IO uint8_t  ICR;                     /*!< Offset: 0x024 (R/W)  IrDA Control Register       */
    +       uint8_t  RESERVED4[3];
    +  __IO uint8_t  FDR;                     /*!< Offset: 0x028 (R/W)  Fractional Divider Register */
    +       uint8_t  RESERVED5[7];
    +  __IO uint8_t  TER;                     /*!< Offset: 0x030 (R/W)  Transmit Enable Register    */
    +       uint8_t  RESERVED6[39];
    +  __I  uint8_t  FIFOLVL;                 /*!< Offset: 0x058 (R/ )  FIFO Level Register         */
    +} LPC_UART_TypeDef;
    +
  • +
  • <device abbreviation>_UART1: is a pointer to a register structure that refers to a specific UART. + For example UART1->THR is the transmit holding register of UART1. +
    +#define LPC_UART2             ((LPC_UART_TypeDef      *) LPC_UART2_BASE    )
    +#define LPC_UART3             ((LPC_UART_TypeDef      *) LPC_UART3_BASE    )
    +
  • +
+ +
Minimal Requiements
+

+ To access the peripheral registers and related function in a device the files device.h + and core_cm0.h / core_cm3.h defines as a minimum: +

+
    +
  • The Register Layout Typedef for each peripheral that defines all register names. + Names that start with RESERVE are used to introduce space into the structure to adjust the addresses of + the peripheral registers. For example: +
    +typedef struct
    +{
    +  __IO uint32_t CTRL;                    /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */
    +  __IO uint32_t LOAD;                    /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register       */
    +  __IO uint32_t VAL;                     /*!< Offset: 0x008 (R/W)  SysTick Current Value Register      */
    +  __I  uint32_t CALIB;                   /*!< Offset: 0x00C (R/ )  SysTick Calibration Register        */
    +} SysTick_Type;
    +
  • + +
  • + Base Address for each peripheral (in case of multiple peripherals + that use the same register layout typedef multiple base addresses are defined). For example: +
    +#define SysTick_BASE (SCS_BASE + 0x0010)            /* SysTick Base Address */
    +
  • + +
  • + Access Definition for each peripheral (in case of multiple peripherals that use + the same register layout typedef multiple access definitions exist, i.e. LPC_UART0, + LPC_UART2). For Example: +
    +#define SysTick ((SysTick_Type *) SysTick_BASE)     /* SysTick access definition */
    +
  • +
+ +

+ These definitions allow to access the peripheral registers from user code with simple assignments like: +

+
SysTick->CTRL = 0;
+ +
Optional Features
+

In addition the device.h file may define:

+
    +
  • + #define constants that simplify access to the peripheral registers. + These constant define bit-positions or other specific patterns are that required for the + programming of the peripheral registers. The identifiers used start with + <device abbreviation>_ and <peripheral name>_. + It is recommended to use CAPITAL letters for such #define constants. +
  • +
  • + Functions that perform more complex functions with the peripheral (i.e. status query before + a sending register is accessed). Again these function start with + <device abbreviation>_ and <peripheral name>_. +
  • +
+ +

core_cm0.h

+

+ File core_cm0.h describes the data structures for the Cortex-M0 core peripherals and does + the address mapping of this structures. It also provides basic access to the Cortex-M0 core registers + and core peripherals with efficient functions (defined as static inline). +

+

This file implement the Core Peripheral Access Layer for a Cortex-M0.

+

The define __CMSIS_GENERIC allows to use core_cm0.h in generic + library projects that are device independent. Only core relevant types and defines are used.

+ +

core_cm3.h

+

+ File core_cm3.h describes the data structures for the Cortex-M3 core peripherals and does + the address mapping of this structures. It also provides basic access to the Cortex-M3 core registers + and core peripherals with efficient functions (defined as static inline). +

+

This file implement the Core Peripheral Access Layer for a Cortex-M3.

+

The define __CMSIS_GENERIC allows to use core_cm3.h in generic + library projects that are device independent. Only core relevant types and defines are used.

+ +

core_cm4.h, core_cm4_simd.h

+

+ File core_cm4.h describes the data structures for the Cortex-M4 core peripherals and does + the address mapping of this structures. It also provides basic access to the Cortex-M4 core registers + and core peripherals with efficient functions (defined as static inline). +

+

+ File core_cm4_simd.h defines Cortex-M4 SIMD instructions. +

+

Together these files implement the Core Peripheral Access Layer for a Cortex-M4.

+

The define __CMSIS_GENERIC allows to use core_cm4.h in generic + library projects that are device independent. Only core relevant types and defines are used.

+ +

core_cmFunc.h and core_cmInstr.h

+

+ File core_cmFunc.h defines the Cortex-M Core Register access functions (defined as static inline). +

+

+ File core_cmInstr.h defines the Cortex-M Core instructions (defined as static inline). +

+

These files are part of the Core Peripheral Access Layer for a Cortex-M.

+ +

startup_device

+

+ A template file for startup_device is provided by ARM for each supported + compiler. It is adapted by the silicon vendor to include interrupt vectors for all device specific + interrupt handlers. Each interrupt handler is defined as weak function + to an dummy handler. Therefore the interrupt handler can be directly used in application software + without any requirements to adapt the startup_device file. +

+

+ The following exception names are fixed and define the start of the vector table for a Cortex-M0: +

+
+__Vectors       DCD     __initial_sp              ; Top of Stack
+                DCD     Reset_Handler             ; Reset Handler
+                DCD     NMI_Handler               ; NMI Handler
+                DCD     HardFault_Handler         ; Hard Fault Handler
+                DCD     0                         ; Reserved
+                DCD     0                         ; Reserved
+                DCD     0                         ; Reserved
+                DCD     0                         ; Reserved
+                DCD     0                         ; Reserved
+                DCD     0                         ; Reserved
+                DCD     0                         ; Reserved
+                DCD     SVC_Handler               ; SVCall Handler
+                DCD     0                         ; Reserved
+                DCD     0                         ; Reserved
+                DCD     PendSV_Handler            ; PendSV Handler
+                DCD     SysTick_Handler           ; SysTick Handler
+ +

+ The following exception names are fixed and define the start of the vector table for a Cortex-M3: +

+
+__Vectors       DCD     __initial_sp              ; Top of Stack
+                DCD     Reset_Handler             ; Reset Handler
+                DCD     NMI_Handler               ; NMI Handler
+                DCD     HardFault_Handler         ; Hard Fault Handler
+                DCD     MemManage_Handler         ; MPU Fault Handler
+                DCD     BusFault_Handler          ; Bus Fault Handler
+                DCD     UsageFault_Handler        ; Usage Fault Handler
+                DCD     0                         ; Reserved
+                DCD     0                         ; Reserved
+                DCD     0                         ; Reserved
+                DCD     0                         ; Reserved
+                DCD     SVC_Handler               ; SVCall Handler
+                DCD     DebugMon_Handler          ; Debug Monitor Handler
+                DCD     0                         ; Reserved
+                DCD     PendSV_Handler            ; PendSV Handler
+                DCD     SysTick_Handler           ; SysTick Handler
+ +

+ In the following examples for device specific interrupts are shown: +

+
+; External Interrupts
+                DCD     WWDG_IRQHandler           ; Window Watchdog
+                DCD     PVD_IRQHandler            ; PVD through EXTI Line detect
+                DCD     TAMPER_IRQHandler         ; Tamper
+ +

+ Device specific interrupts must have a dummy function that can be overwritten in user code. + Below is an example for this dummy function. +

+
+Default_Handler PROC
+                EXPORT WWDG_IRQHandler   [WEAK]
+                EXPORT PVD_IRQHandler    [WEAK]
+                EXPORT TAMPER_IRQHandler [WEAK]
+                :
+                :
+                WWDG_IRQHandler
+                PVD_IRQHandler
+                TAMPER_IRQHandler
+                :
+                :
+                B .
+                ENDP
+ +

+ The user application may simply define an interrupt handler function by using the handler name + as shown below. +

+
+void WWDG_IRQHandler(void)
+{
+  :
+  :
+}
+ + +

system_device.c

+

+ A template file for system_device.c is provided by ARM but adapted by + the silicon vendor to match their actual device. As a minimum requirement + this file must provide a device specific system configuration function and a global variable + that contains the system frequency. It configures the device and initializes typically the + oscillator (PLL) that is part of the microcontroller device. +

+

+ The file system_device.c must provide + as a minimum requirement the SystemInit function as shown below. +

+ + + + + + + + + + + + + + + + +
Function DefinitionDescription
void SystemInit (void)Setup the microcontroller system. Typically this function configures the + oscillator (PLL) that is part of the microcontroller device. For systems + with variable clock speed it also updates the variable SystemCoreClock.
+ SystemInit is called from startup_device file.
void SystemCoreClockUpdate (void)Updates the variable SystemCoreClock and must be called whenever the + core clock is changed during program execution. SystemCoreClockUpdate() + evaluates the clock register settings and calculates the current core clock. +
+ +

+ Also part of the file system_device.c + is the variable SystemCoreClock which contains the current CPU clock speed shown below. +

+ + + + + + + + + + + + +
Variable DefinitionDescription
uint32_t SystemCoreClockContains the system core clock (which is the system clock frequency supplied + to the SysTick timer and the processor core clock). This variable can be + used by the user application to setup the SysTick timer or configure other + parameters. It may also be used by debugger to query the frequency of the + debug timer or configure the trace clock speed.
+ SystemCoreClock is initialized with a correct predefined value.

+ The compiler must be configured to avoid the removal of this variable in + case that the application program is not using it. It is important for + debug systems that the variable is physically present in memory so that + it can be examined to configure the debugger.
+ +

Note

+
    +
  • The above definitions are the minimum requirements for the file + system_device.c. This + file may export more functions or variables that provide a more flexible + configuration of the microcontroller system.

    +
  • +
+ + +

Core Peripheral Access Layer

+ +

Cortex-M Core Register Access

+

+ The following functions are defined in core_cm0.h / core_cm3.h + and provide access to Cortex-M core registers. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Function DefinitionCoreCore RegisterDescription
void __enable_irq (void)M0, M3, M4PRIMASK = 0Global Interrupt enable (using the instruction CPSIE i)
void __disable_irq (void)M0, M3, M4PRIMASK = 1Global Interrupt disable (using the instruction CPSID i)
uint32_t __get_CONTROL (void)M0, M3, M4return CONTROLReturn Control Register Value (using the instruction MRS)
void __set_CONTROL (uint32_t value)M0, M3, M4CONTROL = valueSet CONTROL register value (using the instruction MSR)
uint32_t __get_IPSR (void)M0, M3, M4return IPSRReturn IPSR Register Value (using the instruction MRS)
uint32_t __get_APSR (void)M0, M3, M4return APSRReturn APSR Register Value (using the instruction MRS)
uint32_t __get_xPSR (void)M0, M3, M4return xPSRReturn xPSR Register Value (using the instruction MRS)
uint32_t __get_PSP (void)M0, M3, M4return PSPReturn Process Stack Pointer (using the instruction MRS)
void __set_PSP (uint32_t TopOfProcStack)>M0, M3, M4PSP = TopOfProcStackSet Process Stack Pointer value (using the instruction MSR)
uint32_t __get_MSP (void)M0, M3, M4return MSPReturn Main Stack Pointer (using the instruction MRS)
void __set_MSP (uint32_t TopOfMainStack)M0, M3, M4MSP = TopOfMainStackSet Main Stack Pointer (using the instruction MSR)
uint32_t __get_PRIMASK (void)M0, M3, M4return PRIMASKReturn Priority Mask Register (using the instruction MRS)
void __set_PRIMASK (uint32_t value)M0, M3, M4PRIMASK = valueAssign value to Priority Mask Register (using the instruction MSR)
void __enable_fault_irq (void)M3, M4FAULTMASK = 0Global Fault exception and Interrupt enable (using the instruction CPSIE f)
void __disable_fault_irq (void)M3, M4FAULTMASK = 1Global Fault exception and Interrupt disable (using the instruction CPSID f)
uint32_t __get_BASEPRI (void)M3, M4return BASEPRIReturn Base Priority (using the instruction MRS)
void __set_BASEPRI (uint32_t value)M3, M4BASEPRI = valueSet Base Priority (using the instruction MSR)
uint32_t __get_FAULTMASK (void)M3, M4return FAULTMASKReturn Fault Mask Register (using the instruction MRS)
void __set_FAULTMASK (uint32_t value)M3, M4FAULTMASK = valueAssign value to Fault Mask Register (using the instruction MSR)
uint32_t __get_FPSCR (void)M4return FPSCRReturn Floating Point Status / Control Register
void __set_FPSCR (uint32_t value)M4FPSCR = valueAssign value to Floating Point Status / Control Register
+ +

Cortex-M Instruction Access

+

+ The following functions are defined in core_cm0.h / core_cm3.hand + generate specific Cortex-M instructions. The functions are implemented in the file + core_cm0.c / core_cm3.c. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameCoreGenerated CPU InstructionDescription
void __NOP (void)M0, M3, M4NOPNo Operation
void __WFI (void)M0, M3, M4WFIWait for Interrupt
void __WFE (void)M0, M3, M4WFEWait for Event
void __SEV (void)M0, M3, M4SEVSet Event
void __ISB (void)M0, M3, M4ISBInstruction Synchronization Barrier
void __DSB (void)M0, M3, M4DSBData Synchronization Barrier
void __DMB (void)M0, M3, M4DMBData Memory Barrier
uint32_t __REV (uint32_t value)M0, M3, M4REVReverse byte order in integer value.
uint32_t __REV16 (uint16_t value)M0, M3, M4REV16Reverse byte order in unsigned short value.
sint32_t __REVSH (sint16_t value)M0, M3, M4REVSHReverse byte order in signed short value with sign extension to integer.
uint32_t __RBIT (uint32_t value)M3, M4RBITReverse bit order of value
uint8_t __LDREXB (uint8_t *addr)M3, M4LDREXBLoad exclusive byte
uint16_t __LDREXH (uint16_t *addr)M3, M4LDREXHLoad exclusive half-word
uint32_t __LDREXW (uint32_t *addr)M3, M4LDREXWLoad exclusive word
uint8_t __STREXB (uint8_t value, uint8_t *addr)M3, M4STREXBStore exclusive byte
uint16_t __STREXH (uint16_t value, uint16_t *addr)M3, M4STREXHStore exclusive half-word
uint32_t __STREXW (uint32_t value, uint32_t *addr)M3, M4STREXWStore exclusive word
void __CLREX (void)M3, M4CLREXRemove the exclusive lock created by __LDREXB, __LDREXH, or __LDREXW
void __SSAT (void)M3, M4SSATsaturate a signed value
void __USAT (void)M3, M4USATsaturate an unsigned value
+ + +

NVIC Access Functions

+

+ The CMSIS provides access to the NVIC via the register interface structure and several helper + functions that simplify the setup of the NVIC. The CMSIS HAL uses IRQ numbers (IRQn) to + identify the interrupts. The first device interrupt has the IRQn value 0. Therefore negative + IRQn values are used for processor core exceptions. +

+

+ For the IRQn values of core exceptions the file device.h provides + the following enum names. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Core Exception enum ValueCoreIRQnDescription
NonMaskableInt_IRQnM0, M3, M4-14Cortex-M Non Maskable Interrupt
HardFault_IRQnM0, M3, M4-13Cortex-M Hard Fault Interrupt
MemoryManagement_IRQnM3, M4-12Cortex-M Memory Management Interrupt
BusFault_IRQnM3, M4-11Cortex-M Bus Fault Interrupt
UsageFault_IRQnM3, M4-10Cortex-M Usage Fault Interrupt
SVCall_IRQnM0, M3, M4-5Cortex-M SV Call Interrupt
DebugMonitor_IRQnM3, M4-4Cortex-M Debug Monitor Interrupt
PendSV_IRQnM0, M3, M4-2Cortex-M Pend SV Interrupt
SysTick_IRQnM0, M3, M4-1Cortex-M System Tick Interrupt
+ +

The following functions simplify the setup of the NVIC. +The functions are defined as static inline.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameCoreParameterDescription
void NVIC_SetPriorityGrouping (uint32_t PriorityGroup)M3, M4Priority Grouping ValueSet the Priority Grouping (Groups . Subgroups)
uint32_t NVIC_GetPriorityGrouping (void)M3, M4(void)Get the Priority Grouping (Groups . Subgroups)
void NVIC_EnableIRQ (IRQn_Type IRQn)M0, M3, M4IRQ NumberEnable IRQn
void NVIC_DisableIRQ (IRQn_Type IRQn)M0, M3, M4IRQ NumberDisable IRQn
uint32_t NVIC_GetPendingIRQ (IRQn_Type IRQn)M0, M3, M4IRQ NumberReturn 1 if IRQn is pending else 0
void NVIC_SetPendingIRQ (IRQn_Type IRQn)M0, M3, M4IRQ NumberSet IRQn Pending
void NVIC_ClearPendingIRQ (IRQn_Type IRQn)M0, M3, M4IRQ NumberClear IRQn Pending Status
uint32_t NVIC_GetActive (IRQn_Type IRQn)M3, M4IRQ NumberReturn 1 if IRQn is active else 0
void NVIC_SetPriority (
+   IRQn_Type IRQn,
+   uint32_t priority)
M0, M3, M4IRQ Number, PrioritySet Priority for IRQn
+ (not threadsafe for Cortex-M0)
uint32_t NVIC_GetPriority (IRQn_Type IRQn)M0, M3, M4IRQ NumberGet Priority for IRQn
uint32_t NVIC_EncodePriority (
+   uint32_t PriorityGroup,
+   uint32_t PreemptPriority,
+   uint32_t SubPriority)
M3, M4IRQ Number,
+ Priority Group,
+ Preemptive Priority,
+ Sub Priority
Encode priority for given group, preemptive and sub priority
void NVIC_DecodePriority (
+   uint32_t Priority,
+   uint32_t PriorityGroup,
+   uint32_t* pPreemptPriority,
+   uint32_t* pSubPriority)
M3, M4
+ Priority,
+ Priority Group,
+ pointer to Preempt. Priority,
+ pointer to Sub Priority
Decode given priority to group, preemptive and sub priority
void NVIC_SystemReset (void)M0, M3, M4(void)Resets the System
+

Note

+
    +
  • The processor exceptions have negative enum values. Device specific interrupts + have positive enum values and start with 0. The values are defined in + device.h file. +

    +
  • +
  • The values for PreemptPriority and SubPriority + used in functions NVIC_EncodePriority and NVIC_DecodePriority + depend on the available __NVIC_PRIO_BITS implemented in the NVIC. +

    +
  • +
+ + +

SysTick Configuration Function

+ +

The following function is used to configure the SysTick timer and start the +SysTick interrupt.

+ + + + + + + + + + + + + + +
NameParameterDescription
uint32_t SysTickConfig (uint32_t ticks)ticks is SysTick counter reload valueSetup the SysTick timer and enable the SysTick interrupt. After this + call the SysTick timer creates interrupts with the specified time interval.

+ Return: 0 when successful, 1 on failure.
+
+ + +

Cortex-M3 / Cortex-M4 ITM Debug Access

+ +

The Cortex-M3 / Cortex-M4 incorporates the Instrumented Trace Macrocell (ITM) that +provides together with the Serial Viewer Output trace capabilities for the +microcontroller system. The ITM has 32 communication channels; two ITM +communication channels are used by CMSIS to output the following information:

+
    +
  • ITM Channel 0: implements the ITM_SendChar function + which can be used for printf-style output via the debug interface.
  • +
  • ITM Channel 31: is reserved for the RTOS kernel and can be used for + kernel awareness debugging.
  • +
+

Note

+
    +
  • The ITM channel 31 is selected for the RTOS kernel since some kernels + may use the Privileged level for program execution. ITM + channels have 4 groups with 8 channels each, whereby each group can be + configured for access rights in the Unprivileged level. The ITM channel 0 + may be therefore enabled for the user task whereas ITM channel 31 may be + accessible only in Privileged level from the RTOS kernel itself.

    +
  • +
+ +

The prototype of the ITM_SendChar routine is shown in the +table below.

+ + + + + + + + + + + + + + +
NameParameterDescription
void uint32_t ITM_SendChar(uint32_t chr)character to outputThe function outputs a character via the ITM channel 0. The + function returns when no debugger is connected that has booked the + output. It is blocking when a debugger is connected, but the + previous character send is not transmitted.

+ Return: the input character 'chr'. +
+ +

+ Example for the usage of the ITM Channel 31 for RTOS Kernels: +

+
+  // check if debugger connected and ITM channel enabled for tracing
+  if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA) &&
+  (ITM->TCR & ITM_TCR_ITMENA) &&
+  (ITM->TER & (1UL << 31))) {
+    // transmit trace data
+    while (ITM->PORT31_U32 == 0);
+    ITM->PORT[31].u8 = task_id;      // id of next task
+    while (ITM->PORT[31].u32 == 0);
+    ITM->PORT[31].u32 = task_status; // status information
+  }
+ + +

Cortex-M3 additional Debug Access

+ +

CMSIS provides additional debug functions to enlarge the Cortex-M3 Debug Access. +Data can be transmitted via a certain global buffer variable towards the target system.

+ +

The buffer variable and the prototypes of the additional functions are shown in the +table below.

+ + + + + + + + + + + + + + + + + + + + + + + + +
NameParameterDescription
extern volatile int ITM_RxBuffer Buffer to transmit data towards debug system.

+ Value 0x5AA55AA5 indicates that buffer is empty.
int ITM_ReceiveChar (void)noneThe nonblocking functions returns the character stored in + ITM_RxBuffer.

+ Return: -1 indicates that no character was received.
int ITM_CheckChar (void)noneThe function checks if a character is available in ITM_RxBuffer.

+ Return: 1 indicates that a character is available, 0 indicates that + no character is available.
+ + +

CMSIS Example

+

+ The following section shows a typical example for using the CMSIS layer in user applications. + The example is based on a STM32F10x Device. +

+
+#include "stm32f10x.h"
+
+volatile uint32_t msTicks;                       /* timeTicks counter */
+
+void SysTick_Handler(void) {
+  msTicks++;                                     /* increment timeTicks counter */
+}
+
+__INLINE static void Delay (uint32_t dlyTicks) {
+  uint32_t curTicks = msTicks;
+
+  while ((msTicks - curTicks) < dlyTicks);
+}
+
+__INLINE static void LED_Config(void) {
+  ;                                              /* Configure the LEDs */
+}
+
+__INLINE static void LED_On (uint32_t led) {
+  ;                                              /* Turn On  LED */
+}
+
+__INLINE static void LED_Off (uint32_t led) {
+  ;                                              /* Turn Off LED */
+}
+
+int main (void) {
+  if (SysTick_Config (SystemCoreClock / 1000)) { /* Setup SysTick for 1 msec interrupts */
+    ;                                            /* Handle Error */
+    while (1);
+  }
+  
+  LED_Config();                                  /* configure the LEDs */                            
+ 
+  while(1) {
+    LED_On (0x100);                              /* Turn  on the LED   */
+    Delay (100);                                 /* delay  100 Msec    */
+    LED_Off (0x100);                             /* Turn off the LED   */
+    Delay (100);                                 /* delay  100 Msec    */
+  }
+}
+ + +

CMSIS MISRA-C:2004 Compliance Exceptions

+

+ CMSIS violates following MISRA-C2004 Rules: +

+
    +
  • Violates MISRA 2004 Required Rule 8.5, object/function definition in header file.
    + Function definitions in header files are used to allow 'inlining'.
  • + +
  • Violates MISRA 2004 Required Rule 18.4, declaration of union type or object of union type: '{...}'.
    + Unions are used for effective representation of core registers.
  • + +
  • Violates MISRA 2004 Advisory Rule 19.7, Function-like macro defined.
    + Function-like macros are used to allow more efficient code.
  • +
+ +

  

+ + \ No newline at end of file diff --git a/hardware/sam/system/CMSIS/Documentation/CMSIS_DebugSupport.htm b/hardware/sam/system/CMSIS/Documentation/CMSIS_DebugSupport.htm new file mode 100644 index 000000000..9ed077d61 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/CMSIS_DebugSupport.htm @@ -0,0 +1,240 @@ + + + +CMSIS Debug Support + + + + + + + + +

CMSIS Debug Support

+

This file describes the CMSIS Debug support available with CMSIS (starting V1.30).

+

Version: 1.02 - 25. July 2011

+ +

Information in this file, the accompany manuals, and software is
+ Copyright © ARM Ltd.
All rights reserved. +

+ +
+ +

Revision History

+
    +
  • Version 1.00: Initial Release.
  • +
  • Version 1.01: Internal Review.
  • +
  • Version 1.02: Removed product specific information.
  • +
+ +
+ +

Contents

+ +
    +
  1. About
  2. +
  3. Cortex-M3 / Cortex-M4 ITM Debug Access
  4. +
  5. Debug IN / OUT functions
  6. +
  7. ITM Debug Support in Debugger
  8. +
+ +

 

+

About

+

+ CMSIS provides for Cortex-M3 / Cortex-M4 processor based microcontrollers debug support via the Instrumented Trace Macrocell (ITM). + This document describes the available CMSIS Debug functions and the used methods. +

+ +

 

+

Cortex-M3 / Cortex-M4 ITM Debug Access

+

+ The Cortex-M3 incorporates the Instrumented Trace Macrocell (ITM) that provides together with + the Serial Viewer Output trace capabilities for the microcontroller system. The ITM has + 32 communication channels which are able to transmit 32 / 16 / 8 bit values; two ITM + communication channels are used by CMSIS to output the following information: +

+
    +
  • ITM Channel 0: used for printf-style output via the debug interface.
  • +
  • ITM Channel 31: is reserved for RTOS kernel awareness debugging.
  • +
+ +

 

+

Debug IN / OUT functions

+

CMSIS provides following debug functions:

+
    +
  • ITM_SendChar (uses ITM channel 0)
  • +
  • ITM_ReceiveChar (uses global variable)
  • +
  • ITM_CheckChar (uses global variable)
  • +
+ +

ITM_SendChar

+

+ ITM_SendChar is used to transmit a character over ITM channel 0 from + the microcontroller system to the debug system.
+ Only a 8 bit value is transmitted. +

+
+static __INLINE uint32_t ITM_SendChar (uint32_t ch)
+{
+  /* check if debugger connected and ITM channel enabled for tracing */
+  if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA)  &&
+      (ITM->TCR & ITM_TCR_ITMENA)                  &&
+      (ITM->TER & (1UL << 0))  ) 
+  {
+    while (ITM->PORT[0].u32 == 0);
+    ITM->PORT[0].u8 = (uint8_t)ch;
+  }  
+  return (ch);
+}
+ +

ITM_ReceiveChar

+

+ ITM communication channel is only capable for OUT direction. For IN direction + a global variable is used. A simple mechanism detects if a character is received. + The project to test need to be build with debug information. +

+ +

+ The global variable ITM_RxBuffer is used to transmit a 8 bit value from debug system + to microcontroller system. ITM_RxBuffer is 32 bit wide to + ensure a proper handshake. +

+
+extern volatile int32_t ITM_RxBuffer;                    /* variable to receive characters                             */
+
+

+ A dedicated bit pattern is used to determine if ITM_RxBuffer is empty + or contains a valid value. +

+
+#define                 ITM_RXBUFFER_EMPTY    0x5AA55AA5 /* value identifying ITM_RxBuffer is ready for next character */
+
+

+ ITM_ReceiveChar is used to receive a 8 bit value from the debug system. The function is nonblocking. + It returns the received character or '-1' if no character was available. +

+
+static __INLINE int32_t ITM_ReceiveChar (void) {
+  int32_t ch = -1;                               /* no character available */
+
+  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) {
+    ch = ITM_RxBuffer;
+    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */
+  }
+  
+  return (ch); 
+}
+
+ +

ITM_CheckChar

+

+ ITM_CheckChar is used to check if a character is received. +

+
+static __INLINE int32_t ITM_CheckChar (void) {
+
+  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) {
+    return (0);                                 /* no character available */
+  } else {
+    return (1);                                 /*    character available */
+  }
+}
+ + +

 

+

ITM Debug Support in a Debugger

+

+ The Debugger shall offer a dedicated console window for printf style debug input and output using the CMSIS defined ITM methods described above. +

+

Direction: Microcontroller -> Debugger:

+
    +
  • + at the beginning of a debug session the debugger shall enable ITM trace on channel 0 and continuously snoop for channel 0 data on the ITM trace + stream it receives from the Microcontroller's CoreSight ITM unit +
  • +
  • + data received via the ITM communication channel 0 is interpreted as charater and gets redirected into the dedicated Console Window +
  • +
+ +

Direction: Debugger -> Microcontroller:

+
    +
  • + at the beginning of a debug session the debugger shall seek for the presence of the global variable named ITM_RxBuffer in the debug + information of the application being loaded +
  • +
  • + strings entered into the Console Window are written by the debugger as a stream of char values via the variable ITM_RxBuffer. +
  • +
  • + the debugger writes the next character into the ITM_RxBuffer only once the value has been read and the ITM_RXBUFFER_EMPTY value being set. + (refer to: ITM_ReceiveChar()). +
+ + + + \ No newline at end of file diff --git a/hardware/sam/system/CMSIS/Documentation/CMSIS_History.htm b/hardware/sam/system/CMSIS/Documentation/CMSIS_History.htm new file mode 100644 index 000000000..9b44a3fb4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/CMSIS_History.htm @@ -0,0 +1,472 @@ + + + +CMSIS Version History + + + + + + + + +

CMSIS Version History

+

This document describes the changes between the different CMSIS versions.

+

Version: 2.10 - July 2011

+ +

Information in this file, the accompany manuals, and software is
+ Copyright © ARM Ltd.
All rights reserved. +

+ +
+ + +

Contents

+ +
    +
  1. Used Toolchains
  2. +
  3. Changes to version V2.00
  4. +
  5. Changes to version V1.30
  6. +
  7. Changes to version V1.20
  8. +
  9. Open Points
  10. +
  11. Limitations
  12. +
+ + +

Used Toolchains

+

+ Following toolchains have been used for test / verification:. +

+
    +
  • ARM: MDK-ARM Version 4.21
  • +
  • GNU: Sourcery G++ Lite Edition for ARM 2010.09-51
  • +
  • IAR: IAR Embedded Workbench Kickstart Edition V6.10
  • +
+ + +

Changes to version V2.00

+ +

Added CMSIS DSP Software Library support for Cortex-M0 based MCUs

+

+ The CMSIS DSP Software Library provides now also libraries and examples for Cortex-M0. +

+

+ For more information refer to CMSIS DSP Library documentation. +

+ +

Added big endian support for DSP library

+

+ The CMSIS DSP Software Library provides now also pre-build libraries + and projects for big endian devices. +

+

+ For more information refer to CMSIS DSP Library documentation. +

+ + +

Simplified folder structure for CMSIS include files

+

+ All CMSIS core include files as well as the DSP-Library header files are located in + a single folder ./CMSIS/Include. +

+ +

Changed folder structure for Device Support packages

+

+ Device Support packages are expected to be in folder ./Device located at the + same level as ./CMSIS. +

+

The new Device folder contains the following subfolders:

+
    +
  • Device
  • +
      +
    • <Vendor> +
        +
      • <Device> | <Device Series> +
          +
        • Include
          + <device>.h
          + system_<device>.h
          +
        • +
        • Source +
            +
          • Templates
            + system_<device>.c
            +
              +
            • <Toolchain>
              + startup_<device>.s
              +
            • +
            • <Toolchain>
            • +
            • ...
            • +
            +
          • +
          +
        • +
        +
      • <Device> | <Device Series>
      • +
      • ...
      • +
      +
    • +
    • <Vendor>
    • +
    • ...
    • +
    + +
+

Template files are application specific files and are required to be copied to the project prior to use!

+ +

Removed CMSIS core source files

+

+ The CMSIS core source files core_cm0.c, core_cm3.c, core_cm4.c + containing helper functions for older ARM compiler versions got removed. +

+

+ For the ARM Compiler Toolchain version V4.0.677 or later is + required!

+ + +

Changes to version V1.30

+ +

Added CMSIS DSP Software Library

+

+ The CMSIS DSP Software Library is a suite of common signal processing functions targeted + to Cortex-M processor based microcontrollers. Even though the code has been specifically + optimized towards using the extended DSP instruction set of the Cortex-M4 processor, + the library can be compiled for any Cortex-M processor. +

+

+ For more information see CMSIS DSP Library documentation. +

+ +

Added CMSIS System View Description

+

+ The CMSIS System View Description answers the challenges of accurate, detailed and + timely device aware peripheral debugging support for Cortex Microcontroller based + devices by the software development tools vendor community. +

+

+ Silicon vendors shall create and maintain a formalized description of the debug view + for all the peripherals contained in their Cortex Microcontroller based devices. + Tool vendors use such descriptions to establish device specific debug support in + their debugging tools. +

+

+ A standardized System View Description shall provide a common approach to + capturing peripheral debug related information in a machine readable files. +

+

+ For more information see CMSIS System View Description. +

+ +

Added Cortex-M4 Core Support

+

+ Additional folder CM4, containing the Cortex-M4 core support files, has been added. +

+
    +
  • CM0
  • +
  • CM3
  • +
  • CM4 +
      +
    • CoreSupport
    • +
    • DeviceSupport
    • +
    +
  • +
+ +

New naming for Core Support Files

+

+ The new Core Support Files are: +

+
    +
  • core_cm#.h (# = 0, 3, 4)
  • +
  • core_cmFunc.h (Cortex-M Core Register access functions)
  • +
  • core_cmInstr.h (Cortex-M Core instructions)
  • +
  • core_cm4_simd.h (Cortex-M4 SIMD instructions)
  • +
+ +

Changes to version V1.20

+ +

Removed CMSIS Middelware packages

+

+ CMSIS Middleware is removed and no longer focus of CMSIS. +

+ +

SystemFrequency renamed to SystemCoreClock

+

+ The variable name SystemCoreClock is more precise than SystemFrequency + because the variable holds the clock value at which the core is running. +

+ +

Changed startup concept

+

+ The old startup concept (calling SystemInit_ExtMemCtl from startup file and calling SystemInit + from main) has the weakness that it does not work for controllers which need a already + configuerd clock system to configure the external memory controller. +

+ +
Changed startup concept
+
    +
  • + SystemInit() is called from startup file before premain. +
  • +
  • + SystemInit() configures the clock system and also configures + an existing external memory controller. +
  • +
  • + SystemInit() must not use global variables. +
  • +
  • + SystemCoreClock is initialized with a correct predefined value. +
  • +
  • + Additional function void SystemCoreClockUpdate (void) is provided.
    + SystemCoreClockUpdate() updates the variable SystemCoreClock + and must be called whenever the core clock is changed.
    + SystemCoreClockUpdate() evaluates the clock register settings and calculates + the current core clock. +
  • +
+ + +

Advanced Debug Functions

+

+ ITM communication channel is only capable for OUT direction. To allow also communication for + IN direction a simple concept is provided. +

+
    +
  • + Global variable volatile int ITM_RxBuffer used for IN data. +
  • +
  • + Function int ITM_CheckChar (void) checks if a new character is available. +
  • +
  • + Function int ITM_ReceiveChar (void) retrieves the new character. +
  • +
+ +

+ For detailed explanation see file CMSIS debug support.htm. +

+ + +

Core Register Bit Definitions

+

+ Files core_cm3.h and core_cm0.h contain now bit definitions for Core Registers. The name for the + defines correspond with the Cortex-M Technical Reference Manual. +

+

+ e.g. SysTick structure with bit definitions +

+
+/** \brief  Structure type to access the System Timer (SysTick).
+ */
+typedef struct
+{
+  __IO uint32_t CTRL;                    /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */
+  __IO uint32_t LOAD;                    /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register       */
+  __IO uint32_t VAL;                     /*!< Offset: 0x008 (R/W)  SysTick Current Value Register      */
+  __I  uint32_t CALIB;                   /*!< Offset: 0x00C (R/ )  SysTick Calibration Register        */
+} SysTick_Type;
+
+/* SysTick Control / Status Register Definitions */
+#define SysTick_CTRL_COUNTFLAG_Pos         16                                             /*!< SysTick CTRL: COUNTFLAG Position */
+#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */
+
+#define SysTick_CTRL_CLKSOURCE_Pos          2                                             /*!< SysTick CTRL: CLKSOURCE Position */
+#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */
+
+#define SysTick_CTRL_TICKINT_Pos            1                                             /*!< SysTick CTRL: TICKINT Position */
+#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */
+
+#define SysTick_CTRL_ENABLE_Pos             0                                             /*!< SysTick CTRL: ENABLE Position */
+#define SysTick_CTRL_ENABLE_Msk            (1UL << SysTick_CTRL_ENABLE_Pos)               /*!< SysTick CTRL: ENABLE Mask */
+
+/* SysTick Reload Register Definitions */
+#define SysTick_LOAD_RELOAD_Pos             0                                             /*!< SysTick LOAD: RELOAD Position */
+#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos)        /*!< SysTick LOAD: RELOAD Mask */
+
+/* SysTick Current Register Definitions */
+#define SysTick_VAL_CURRENT_Pos             0                                             /*!< SysTick VAL: CURRENT Position */
+#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos)        /*!< SysTick VAL: CURRENT Mask */
+
+/* SysTick Calibration Register Definitions */
+#define SysTick_CALIB_NOREF_Pos            31                                             /*!< SysTick CALIB: NOREF Position */
+#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */
+
+#define SysTick_CALIB_SKEW_Pos             30                                             /*!< SysTick CALIB: SKEW Position */
+#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */
+
+#define SysTick_CALIB_TENMS_Pos             0                                             /*!< SysTick CALIB: TENMS Position */
+#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos)        /*!< SysTick CALIB: TENMS Mask */
+
+/*@} end of group CMSIS_SysTick */
+ +

DoxyGen Tags

+

+ DoxyGen tags in files core_cm3.[c,h] and core_cm0.[c,h] are reworked to create proper documentation + using DoxyGen. +

+ +

Folder Structure

+

+ The folder structure is changed to differentiate the single support packages. +

+ +
    +
  • CM0
  • +
  • CM3 +
      +
    • CoreSupport
    • +
    • DeviceSupport
    • +
        +
      • Vendor +
          +
        • Device +
            +
          • Startup +
              +
            • Toolchain
            • +
            • Toolchain
            • +
            • ...
            • +
            +
          • +
          +
        • +
        • Device
        • +
        • ...
        • +
        +
      • +
      • Vendor
      • +
      • ...
      • +
      + +
    • Example (optional) +
        +
      • Toolchain +
          +
        • Device
        • +
        • Device
        • +
        • ...
        • +
        +
      • +
      • Toolchain
      • +
      • ...
      • +
      +
    • +
    +
  • + +
  • Documentation
  • +
+ +

Open Points

+

+ Following points need to be clarified and solved: +

+
    +
  • +

    + Equivalent C and Assembler startup files. +

    +

    + Is there a need for having C startup files although assembler startup files are + very efficient and do not need to be changed? +

    +

  • +
  • +

    + Placing of HEAP in external RAM. +

    +

    + It must be possible to place HEAP in external RAM if the device supports an + external memory controller. +

    +
  • +
  • +

    + Placing of STACK /HEAP. +

    +

    + STACK should always be placed at the end of internal RAM. +

    +

    + If HEAP is placed in internal RAM than it should be placed after RW ZI section. +

    +
  • +
+ + +

Limitations

+

+ The following limitations are not covered with the current CMSIS version: +

+
    +
  • + No C startup files are available. +
  • +
+ diff --git a/hardware/sam/system/CMSIS/Documentation/CMSIS_Logo_Final.jpg b/hardware/sam/system/CMSIS/Documentation/CMSIS_Logo_Final.jpg new file mode 100644 index 000000000..e04560175 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/CMSIS_Logo_Final.jpg differ diff --git a/hardware/sam/system/CMSIS/Documentation/CMSIS_System_View_Description.htm b/hardware/sam/system/CMSIS/Documentation/CMSIS_System_View_Description.htm new file mode 100644 index 000000000..d47878efd --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/CMSIS_System_View_Description.htm @@ -0,0 +1,1157 @@ + + + + CMSIS - SVD: Cortex Microcontroller Software Interface Standard - System View Description + + + + + + +

Cortex Microcontroller Software Interface Standard
+System View Description

+ +

This file describes the Cortex Microcontroller Software +Interface Standard - System View Description (CMSIS - SVD) concept and syntax.

+

Version: 1.02 - 27. July 2011

+ +

Information in this file, the accompany manuals, and software is
+ Copyright © ARM Ltd.
All rights reserved. +

+ +
+ +

Revision History

+
    +
  • Version 0.91: initial proposal.
  • +
  • Version 0.92: revised proposal considering forum feedback (e.g. consider + IP-XACT constructs and naming scheme)
  • +
  • Version 1.0: new elements: peripheral version, vendor specific + extension section, interrupt mapping information, global peripheral disable + condition, naming of register arrays, enhanced naming schemes, etc.
  • +
  • Version 1.0: SVD versioning and updated schema file
  • +
  • Version 1.01: Error corrections in the example code. "include" has been removed. Restricted to one device per file.
  • +
  • Version 1.02: Adding the use case of device header file generation.
  • +
+ +

 

+ +
+ +

Contents

+ +
    +
  1. About
  2. +
  3. Motivation
  4. +
  5. Requirements
  6. +
  7. Format
  8. +
  9. Example
  10. +
  11. Questions & Answers
  12. +
+ +

About

+ +

+ The Cortex Microcontroller Software Interface Standard - System View + Description (CMSIS - SVD) answers the challenges + of accurate, detailed and timely device aware peripheral debugging support for Cortex + Microcontroller based devices by the software development + tools vendor community. +

+

+ Silicon vendors shall create and maintain a formalized description of the + debug view for all the peripherals contained in their Cortex + Microcontroller based devices. Tool vendors use such descriptions to + establish device specific debug support in their debugging tools with minimal turn around times and + manageable effort. Device support across many development tools  is + essential for silicon provider in order to promote new devices and device + variants entering the market. Device aware debug views provide fast and + convenient access to all registers and fields as well as a detailed + description. This enables software developer to + develop and debug code most efficiently and adopt new devices early and + quickly.

+

+ A standardized System View Description shall provide a common approach to + capturing peripheral debug related information in a machine readable files. + The scope of the contained information is agreed to match the level usually + provided by silicon vendors in their device reference manuals, however in a + formalized XML based format. There + are other description languages already available. IP-XACT from the SPIRIT + consortium is a prominent example. IP-XACT covers the register description + sufficiently, however it comprises many other aspects of the devices like + ports, bus-protocols, modeling, tool flows, etc. making a direct use of + IP-XACT too complex. The design of the SVD language is + taking some guidance from IP-XACT thus allowing straight forward conversion + from IP-XACT to CMSIS-SVD where IP-XACT device information is already + available.

+

+ In a second step the CMSIS-SVD description shall be used for automatically + generating CMSIS compliant a device header file. This enables the + information in the header file to be consistent with what the debugger will + display and CMSIS compliant by construction. The header file generation will + require some additional pieces of information and therefore a future version + of the description will need to include some extensions for this purpose.

+

+ Device aware debugging support is only one aspect of device + support essential to software development environments, however it is one of + the most time consuming and error prone ones.

+

Motivation

+

+ +The software developer of microcontroller devices is faced with a growing number +of devices with an ever increasing number of peripheral blocks providing a wide +range of distinct and complex functionality. The development of drivers for +these peripherals is in the critical path of every project. Modern debuggers are supporting the software developer in getting the +software to run according to the requirements. A debugger providing peripheral awareness improves the +ability to access and interpret complex configuration and status information of +peripherals. Even though this is only one aspect of device support within microcontroller +development environments it is essential for the successful and timely adoption +of development tools and the device by the market.

+

Today software development environments address device aware +debugging in various ways. They either use documents or proprietary file formats +as input for providing peripheral views in the debuggers. +Extracting peripheral information from written documentation is a very time +consuming, tedious and error prone task. Having a file containing peripheral specific information to generate peripheral views +is going to make device support more affordable, reliable and timely. +The challenge for the tool providers is the support of many +different and incompatible file formats from a growing number of silicon vendors. +For silicon vendors it is time consuming and costly to engage with many tool +provider in order to achieve device support in a wide range of development +environments.

+

Standardizing on a System View Description aims to ease this challenge +by agreeing on a formal XML-based file format. In conjunction with supporting web server infrastructure silicon partner +shall upload and maintain such descriptions in a tool vendor agnostic device +database, hosted e.g. by the web server infrastructure + +cmsis.arm.com . Access control to sensitive information is managed on a per user +basis. This allows silicon vendors to upload information for devices that have +not been made public. 

+

Such an approach provides benefits for silicon and tool vendors as well as +software developers of Cortex-M based microcontroller devices

+
    +
  • timely and accurate device support provided by a whole range of tool providers
  • +
  • tool providers become more efficient in supporting a multitude of devices + and device variants
  • +
  • less interaction required between silicon vendors and the + tool providers
  • +
  • silicon provider has control over and maintains the System View + Description during the life cycle of the device
  • +
  • high quality device support in terms of completeness and correctness of + device aware debugging
  • +
  • improved productivity and user experience for the software developer
  • +
+

Requirements

+

The debug description shall capture the information about all +the peripherals contained in a specific device. This section describes which +items of information are deemed relevant for a debugger. Silicon vendors are expected to +provide the System View Description for their devices, matching the information +contained in device reference manuals. The System View Description shall be suitable for straight forward +generation from existing databases like IP-XACT descriptions or SIDSC. The size +of device description is a concern and therefore redundancy in the description +shall be avoided. The size of SVD files affects the efficiency of +distribution as well as the loading time by the development tools. Last but not least manual editing of SVD files shall be possible for +the purpose of customization by SW developers.

+

Required content of the description

+

From a programmer's perspective a peripheral can be seen as a set of registers +with unique names being mapped to fixed addresses allocated +within a defined range of an address space.

+

From a debugger's point of view read accesses to a physical register need to be +executed in order to display its current value. The debugger executes a write +access to a register when a user edits its value. For this purpose the debugger +needs to know about the following additional attributes:

+
    +
  • minimal addressable unit = smallest series of bits + identified by a unique address (e.g. byte-addressable memory)
  • +
  • register size = number of bits forming a register (ARM Cortex-M usually + 32 bits)
  • +
  • access permission = read and write, read only, + write only
  • +
  • access side effects = accesses by the debugger must + be avoided if it has side effects. Some side effects may be + reversed by the debugger to compensate for the side effect
  • +
+

In many cases peripheral registers are partitioned into chunks of bits of +distinct functionality. In this document these chunks are referred to as +field. Each +register that consists of fields shall  be described by a list +of uniquely named fields (Note: field names are not required to be +unique across registers). In order for a debugger to extract the +value of a field from the corresponding register the following attributes are required:

+
    +
  • most significant bit = highest bit position of the + bit-field in the corresponding register
  • +
  • least significant bit = lowest bit position of the + bit-field within the corresponding register
  • +
  • access permission = read and write, read only, + write only
  • +
+

An enumerated value maps a number to a specific descriptive string +representing the semantics of the value of a field. The debugger displays the +descriptive string rather than the number to simplify the access to the +information thus +avoiding the necessity of a look-up in the device reference manual. Each item of +an enumerated value has the following attributes:

+
    +
  • value = value of the bit-field that corresponds to + the string attribute
  • +
  • name = short string that describes the semantics of a + field when the corresponding value is set
  • +
  • description = detailed description of the semantics + of the field when the corresponding value is set
  • +
+

The hierarchical structure of the description looks like this:

+

Device =

+
    +
  • +

     Peripherals

    +
      +
    • +

      Peripheral

      +
        +
      • +

        Registers

        +
          +
        • +

          + Register

          +
            +
          • +

            + Fields

            +
              +
            • +

              Field

              +
                +
              • +

                Enumerated Values

                +
                  +
                • +

                  Enumerated Value

                  +
                • +
                +
              • +
              +
            • +
            +
          • +
          +
        • +
        +
      • +
      +
    • +
    +
  • +
+ +

One file can only contain a description for a single device or device family +sharing the identical description. Devices consists of a one or more peripherals. +Each peripheral contains +one or more registers, where each register may consist of one or more fields. +The values of a field maybe represented through descriptive strings and detailed +descriptions, the enumerated values.

+

In many cases there are multiple +instances of the same peripheral in a device (e.g. Timer0, Timer1, etc.). For +this reason the description has the concept of deriving a peripheral from a peripheral +that has already been described. The attribute derivedFrom specifies +such a relationship. +Similarly registers or fields can be reused within the device description. The +grouping of  peripherals providing +similar functionality (e.g. Simple Timer, Complex Timer) is controlled via the element groupName. +All peripherals associated with the same group name are collectively listed under this group +in the order they have been specified in the file. +Collecting  +similar or related peripherals into peripheral groups helps structuring the list +of peripherals e.g. in a drop down menu (tool dependent). Devices with a large +set of peripherals will benefit from this additional level of structure.

+

Each of the items (i.e. Device, Peripheral, Register and +Field) owns an description element containing verbose information about +the respective element. The description field plays +an important part in improving the software development productivity. Instead of +searching through the reference manual the detailed explanation from the manual +could become immediately accessible from within the development environment.

+

Details about the exact display format and layout of the peripheral view are +considered beyond the scope of the description. It is up to the tool vendor to +visualize the contained information appropriately. The +silicon vendor provides details about the device's peripherals that is commonly available.

+

System View Description files need to be validated for:

+
    +
  1. syntactical correctness using XML-Schema checking utilities
  2. +
  3. consistency  of the provided information (e.g. multiple registers mapped to the same address, + all registers located within the specified address ranges of a + peripheral, all fields are within the range of the register + size, etc.) by a utility developed by ARM (SVDConv.exe)
  4. +
  5.  semantical correctness of the System View Description + against the silicon specification executed by the silicon vendor
  6. +
+

The SVD description format was extended by numerous elements during the +review period targeting version 1.0 and new extensions are expected for future +versions of this format. A new section named "vendorExtensions" has been added +to the end of the top level to allow silicon vendors and tool partners to +innovate and expand the description in order to overcome limitations of the +current specification until these can be incorporated into new versions of +CMSIS-SVD.
+

+ +

 Format

+ +

+ The following section describes the SVD file format in detail. Each subsection + defines a single hierarchy level of the description and lists all mandatory + and optional language elements for that specific level including type + information for each element. Each element is discussed in more detail and a + brief snippet is provided as an example. The sequence of elements shown + below is binding. Optional elements are highlighted in green, blue elements + are mandatory unless they have been already specified globally on a higher + level.

+

+ An XML-schema file is provided alongside this document for syntactical + checking of descriptions being developed.

+

<device schemaVersion="xs:decimal" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="CMSIS-SVD_Schema_1_0.xsd">

+

   <name>xs:Name</name>
+   <version>xs:string</version>
+   <description>xs:string</description>
+
   <addressUnitBits>scaledNonNegativeInteger</addressUnitBits>
+   <width>scaledNonNegativeInteger </width>

+
+   <size>scaledNonNegativeInteger</size>
+
   <access>accessType</access>
+   <resetValue>scaledNonNegativeInteger</resetValue>
+   <resetMask>scaledNonNegativeInteger</resetMask>

+

   <peripherals>
+      ...
+   </peripherals>
+   <vendorExtensions>
+      ...
+    </vendorExtensions>

+

</device>

+

The device provides the outermost frame of the description. All other +elements like peripherals, registers and fields are described inside of this scope. A device contains one or more peripherals. +The optional elements size, access, resetValue and resetMask are used as default values throughout the +device description unless they get overruled on a lower level of the description +(e.g. peripheral or register).

+

Mandatory items:

+

name = the unique name string is used to identify the device. +All devices of a silicon vendor are required to have a unique name. In case an +SVD description covers a family or series of devices, the name of the series or +family is placed here. The device names of the members of the series or family +are listed in <memberDevices>

+

description = string describing main features of a device +(e.g. CPU, clock frequency, peripheral overview, etc.)

+

version = the string is defining the version of the +description for this device. Silicon vendors will maintain the description +throughout the lifecycle of the device and need to ensure that all updated and +released copies have a unique version string indicating the order in which. Note: this must not be used for +detailing the version of the device.

+

 

+

addressUnitBits = defines the number of data bits for each address +increment. The value for Cortex-M based devices is  8 (byte-addressable).

+

width = defines the number of bits for the maximum single +transfer size allowed by the bus interface hence the maximum size of a single +register that can be defined for the address space. This information is relevant +for debuggers when determining the size of debug transfers. The expected value +for Cortex-M based devices is 32.

+

peripherals = next level of description (see next section +for details)

+

Optional Items:

+

size = defines the default bit-width of registers contained +in the device. This element can be overruled by re-specifying the size element on a lower level of the +description.

+

access = defines the default access permissions for all +registers in the device. The allowed tokens are:
+  - read-only: read access is permitted. Write operations have an undefined +result.
+  - write-only: write access is permitted. Read operations have an +undefined result.
+  -read-write: both read and write accesses are permitted. Writes affect +the state of the register and reads return a value related to the register
+  -writeOnce: only the first write after reset has an effect on the +register. Read operations deliver undefined results
+  -read-writeOnce: Read operations deliver a result related to the register +content. Only the first write access to this register after a reset will have an +effect on the register content.

+

resetValue = defines the default value of all registers +after a reset. There are scenarios where SW developers need to know, what the +reset value of a register or field is. Even though listed as optional on this +level of the description, silicon vendors should ensure that this information is +provided for all registers.

+

resetMask = defines those bit positions set to one to be +taken from resetValue element. All other elements are undefined. If a register +does not have a defined reset value the resetMask needs to be set to 0.

+

vendorExtensions = the content and format of this section of +the description is unspecified. Silicon vendors may choose to provide additional +information. The assumption is that by default this section is completely +ignored by the debugger. It is up to the silicon vendor to specify the content +of this section and share the specification with the tool vendors. The new +elements shall be considered for a future version of the description format.

+

Example:

+
<device schemaVersion="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="CMSIS-SVD_Schema_1_0.xsd" >
+  <name>CMSIS_Cortex-M3</name>
+  <version>0.1</version>
+  <description>ARM Cortex-M3 based Microcontroller demonstration device</description>
+  <addressUnitBits>8</addressUnitBits>
+  <width>32</width>
+  <size>32</size>
+  <access>read-write</access>
+  <resetValue>0</resetValue>
+  <resetMask>0xffffffff</resetMask>
+
  <peripherals>
+    ...
+  </peripherals>
+</device>
+

The device description above is at version 0.1 and uniquely identifies the +device by the name "CMSIS_Cortex-M3". The peripherals are memory mapped in a +byte-addressable address space with a bus width of 32 bits. The default size of +the registers contained in the peripherals is set to 32 bits. Unless redefined +for specific peripherals, registers or fields all registers are read-write +accessible. A reset value of 0 valid for all 32 bits as specified by the reset +mask is set for all registers unless overruled at a lower level of the description.

+
+

<peripherals>

+

   <peripheral>
+     ...
+   </peripheral>

+

     ...

+

   <peripheral>
+     ...
+   </peripheral>

+

</peripherals>

+

This construct sets the frame for all peripherals and peripheral groups contained in a device. This +creates a container element which ease-up processing with languages like Java.

+
+

<peripheral derivedFrom="xs:Name">

+

   <name>xs:Name</name>
+   <version>xs:string</name>
+   <description>xs:string </description>
+   <groupName>xs:string</groupName>
+   <prependToName>xs:string</prependToName>
+   <appendToName>xs:string</appendToName>

+   <disableCondition>xs:string</disableCondition>
+   <baseAddress>scaledNonNegativeInteger</baseAddress>
+   <size>scaledNonNegativeInteger</size>
+
   <access>accessType</access>
+   <resetValue>scaledNonNegativeInteger</resetValue>
+   <resetMask>scaledNonNegativeInteger</resetMask>

+

   <addressBlock>
+      <offset>
scaledNonNegativeInteger</offset>
+      <size>
scaledNonNegativeInteger</size>
+      <usage>usageType</usage>
+   </addressBlock>
+
   ...
+
  <addressBlock>
+      <offset>
scaledNonNegativeInteger</offset>
+      <size>
scaledNonNegativeInteger</size>
+      <usage>usageType</usage>
+   </addressBlock>
+   <interrupt>
+      <name>xs:string</name>
+      <value>scaledNonNegativeInteger</value>
+   </interrupt>

+
   <registers>
+   ...
+   </registers>

+

</peripheral>

+

A peripheral encloses the description of one or more registers belonging to +this named peripheral. The address range allocated in the address space for this +peripheral is defined through one or more address ranges. An address range is +specified relative to the base address of the peripheral. This information +allows to display a memory map overview for all peripherals. Please note that +such a memory map does not contain any information for memories and unoccupied +address ranges.

+

Mandatory items:

+

name = name string used to identify the peripheral. Peripheral +names are required to be unique within the scope of a device.

+

baseAddress = lowest address reserved or used by the peripheral

+

description = string providing an overview of the purpose +and functionality of the peripheral

+

addressBlock = a peripheral may occupy one or more disparate +blocks in the address space. An addressBlock is a complex element consisting of +the mandatory elements:
+    offset: specifying the start address of an address block. It +is calculated from the sum of baseAddress and offset
+    size: specifying the number of addressUnitBits being covered +by this address block. The end address of an address block is the sum of start +address and the size - 1.
+    usage: the usage element is of usageType specifying +if the addresses within the specified address block is used for +registers or buffer or is reserved. +
+Note: registers must not be allocated +to an address within a reserved or buffer address range.

+

registers = next lower level of description (see next section +for details)

+

Optional items:

+

derivedFrom = this attribute specifies the name of a peripheral +that has already been described for this device. The description of that device +will be copied. It is mandatory to overwrite the name as well as the +addressOffset. All other specified information will overwrite the respective +elements in the copy.

+

version = the string specifies the version of this +peripheral description.

+

disableCondition = C language compliant logical expression +resulting in a true or false result. If "true" the refresh of the display +for this peripheral is disabled +and related accesses by the debugger are suppressed. Only constants and references to other registers +contained in the description are allowed:  +<peripheral>-><register>-><field> (e.g.: (System->ClockControl->apbEnable == 0)). +Only the following operators are allowed [&&,||, ==, !=, >>, <<, &, |]. Warning! +This feature must only be use in case accesses from the debugger to registers of +un-clocked peripherals result in severe debugging failures. SVD is intended to +be fully static information and not include any run-time computation or +functions such capabilities may be added by the tools but is considered beyond +the scope of this description language.

+

prependToName = all register names of this peripheral have +their names prepended with the string specified

+

appendToName = all register names of this peripheral have +their names appended with the string specified

+

size = defines the default bit-width of registers contained +in the device. This element can be overruled by re-specifying the size element on a lower level of the +description.

+

access = defines the default access permissions for all +registers in the peripheral. The value can be reset on a lower level of the +description. The allowed tokens are:
+  - read-only: read access is permitted. Write operations have an undefined +result.
+  - write-only: write access is permitted. Read operations have an +undefined result.
+  -read-write: both read and write accesses are permitted. Writes affect +the state of the register and reads return a value related to the register
+  -writeOnce: only the first write after reset has an effect on the +register. Read operations deliver undefined results
+  -read-writeOnce: Read operations deliver a result related to the register +content. Only the first write access to this register after a reset will have an +effect on the register content.

+

resetValue = defines the default value of all registers +after a reset but can be set for individual registers and fields on a lower +level of the description.

+

resetMask = defines those bit positions set to one to be +taken from resetValue element. All other elements are undefined. This is the +default value for the whole peripheral but can be readjusted on lower levels. If +a register does not have a defined reset value the resetMask needs to be set to +0.

+

interrupt = is a complex type that consists of the name of +the interrupt and the associated enumeration value. A peripheral can also have +multiple associated interrupts. This entry is mainly intended for information +only purposes in order to display the interrupts and respective interrupt +numbers associated with a peripheral.

+

Example:

+
... 
+    <peripheral>
+       <name>Timer0</name>
+       <version>1.0.32</version>
+       <description>Timer 0 is a simple 16 bit timer counting down ... </description>
+       <baseAddress>0x40000000</baseAddress>
+       <addressBlock>
+         <offset>0x0</offset>
+         <size>0x400</size>
+         <usage>registers</usage>
+       </addressBlock>
+       <interrupt><name>TIM0_INT</name><value>34</value></interrupt>
+       <registers>
+         ...
+       </registers>
+    </peripheral>
+    <peripheral derivedFrom="Timer0">
+      <name>Timer1</name>
+      <baseAddress>0x40000400</baseAddress>
+    </peripheral>
+
+...
+
+

<registers> ... </registers>

+

This construct sets the frame for all registers contained in a peripheral. +This creates container elements which ease-up processing with languages like Java.

+
+

<register derivedFrom=xs:Name>

+

   <dim>scaledNonNegativeInteger</dim>
+   <dimIncrement>scaledNonNegativeInteger</dimIncrement>
+   <dimIndex>xs:string</dimIndex>

+   <name>xs:Name</name>
+   <displayName>xs:string</displayName>
+
   <description>xs:string</description>
  <alternateGroup>xs:Name</alternateGroup>
+
   <addressOffset>scaledNonNegativeInteger +</addressOffset>
   <size>scaledNonNegativeInteger</size>
+
   <access>accessType</access>
+  
<resetValue>scaledNonNegativeInteger</resetValue>
+   <resetMask>scaledNonNegativeInteger</resetMask>
+
+
   <modifiedWriteValues>writeValueType</modifiedWriteValues>
+   <writeConstraint>writeConstraintType</writeConstraint>
+   <readAction>readActionType </readAction>

+
   <fields>
+      ...
+   </fields>

+

</register>

+

The definition of registers is the central part of the description. A +register may use its complete size for a single purpose and therefore not +consist of fields. Otherwise the description +of fields is mandatory.

+

Mandatory items:
+

+

name = name string used to identify the register. Register +names are required to be unique within the scope of a peripheral.

+

description = string describing the details of the register.

+

addressOffset = value defining the address of the register relative to +the baseAddress defined by the peripheral the register belongs to.
+

+

The following elements can be omitted if the corresponding value has been set +on a higher level of the description and matches the value required for this register:

+

size =value defining the bit-width of the register

+

access = predefined tokens: read-only, write-only, read-write, +writeOnce, read-writeOnce strings defining the allowed +accesses for this register.

+

resetValue = element defining the value of the register +immediately after a reset.

+

resetMask= element specifying those bits of the resetValue that +are defined (bit positions containing a 0 bit are ignored, bit +positions containing a 1 bit are taken from the corresponding bit position of +the resetValue). If a register does not have a defined reset value the resetMask +needs to be set to 0.

+

Optional items:

+

dim = if this field is specified the value defines the +number of elements in an array of registers.

+

dimIncrement = if dim is specified this element becomes +mandatory and specifies the address increment in between +two neighboring registers of the register array in the address map.

+

dimIndex = this element specifies the substrings within the +register array names that will replace the %s within the register name. By +default the index is a decimal value starting with 0 for the first register. +Examples:
+   <dim>6</dim> <dimIncrement>4</dimIncrement> <dimIndex>A,B,C,D,E,Z</dimIndex> +<name>GPIO_%s_CTRL</name> ...
+   => GPIO_A_CTRL, GPIO_B_CTRL, GPIO_C_CTRL, GPIO_D_CTRL, GPIO_E_CTRL, +GPIO_Z_CTRL
+   <dim>4</dim> <dimIncrement>4</dimIncrement> <dimIndex>3-6</dimIndex> +<name>IRQ%s</name> ...
+   => IRQ3, IRQ4, IRQ5, IRQ6                 

+

displayName = when used, this is the string being used by a +graphical frontend to visualize the register otherwise the name element is used. +Note: the display name may contain special characters and white spaces. It also +uses "%s" as the place holder for the dimIndex substring.

+

alternateGroup = when used, this element specifies a name of +a group that all alternate register with the same name a associated with. At the +same time it indicates that there is a register description allocating the same +absolute address in the address space.

+

modifiedWriteValues = element to describe the manipulation of +data written to a register. If not specified the value written to the field is the +value stored in the field. The other options are bitwise operations:
oneToClear: write data bits of one shall clear (set to zero) the +corresponding bit in the register
oneToSet: write data bits of one shall set (set to one) the +corresponding bit in the register
oneToToggle: write data bits of one shall toggle (invert) the +corresponding bit in the register
zeroToClear: write data bits of zero shall clear (set to zero) +the corresponding bit in the register
zeroToSet: write data bits of zero shall set (set to one) the +corresponding bit in the register
zeroToToggle: write data bits of zero shall toggle (invert) the +corresponding bit in the register
clear: after a write operation all bits in the field are cleared (set to +zero)
set: after a write operation all bits in the field are set (set to one)
modify: after a write operation all bit in the field may be modified +(default)

+

writeConstraint: has a set of options:
writeAsRead = if true only the last read value can be written
useEnumeratedValues = if true only those values listed in the +enumeratedValues list are considered valid write values
minimum = specifies the smallest number to be written to the +register
maximum = specifies the largest number to be written to the +register

+

readAction: if set it specifies the side effect following +read operations. If not set the register is not modified following a read +operations. The defined side effects are:
clear: indicates that the register is cleared (set to zero) +following a read operation
set: indicates that the register is set (set to ones) following a +read operation
modify: indicates that the register is modified in some way +after a read operation
modifyExternal: indicates that one or more dependent resources +other than the current register +are immediately affected by a read (it is recommended that the register +description specifies these dependencies). Debuggers are not expected to read +this register location unless explicitly instructed by user.

+

fields = next lower level of description (see next section +for details).

+

Optional attribute:

+

derivedFrom = specifies the name of the register to be +replicated. Elements being specified underneath will override the values specified +from the register being derived from. Note that it is mandatory to overwrite at +least name and addressOffset.

+

Example:

+
... 
+       <register>
+         <name>TimerCtrl0</name>
+         <description>Timer Control Register</description>
+         <addressOffset>0x0</addressOffset>
+         <access>read-write</access>
+         <resetValue>0x00008001</resetValue>
+         <resetMask>0x0000ffff</resetMask>
+         <size>32<size>
+         <fields>
+           ...
+         </fields>
+       </register>
+       <register derivedFrom="TimerCtrl0">
+         <name>TimerCtrl1</name>
+         <addressOffset>0x4<addressOffset>
+       </register>
+...
+
+

<fields> ... </fields>

+

This construct sets the frame for all fields contained in a register. +This creates container elements which ease-up processing with languages like Java.

+
+

 <field derivedFrom="xs:Name">

+

   <name>xs:Name</name>
  <description>xs:string</description>
+   +<bitOffset>scaledNonNegativeInteger</bitOffset> +<bitWidth>scaledNonNegativeInteger</bitWidth>
+  
or
+   <lsb>scaledNonNegativeInteger</lsb> <msb>scaledNonNegativeInteger</msb>
+  
or
+   <bitRange>pattern</bitRange>
+   <access>accessType</access>
+
   <modifiedWriteValues>writeValueType</modifiedWriteValues>
+   <writeConstraint>writeConstraintType</writeConstraint>
+   <readAction>readActionType </readAction>

  <enumeratedValues>
+      ...
+   </enumeratedValues>

+

</field>

+

A bit-field has a name that is unique for the register it belongs to. The +position and size within the register is either described by the combination of +the least significant bit's position (lsb) and the most significant bit's +position (msb) or the lsb and the size, specifying the bit-width of the +field.  A field may define an enumeratedValue in order to make the display +more intuitive to read.

+

Mandatory items:

+

name = name string used to identify the field. Field names +are required to be unique within the scope of a register.
+

+

description = string describing the details of the register.
+

+

There are 3 ways to describe a field to be used mutually exclusive:
+a) specifying bitOffset and bitWidth (IP-XACT like)
+b) specifying lsb and msb of the field.
+c) specifying a bit range in the format "[<msb>:<lsb>]"

+

bitOffset = value defining the position of the least significant bit +of the field within the register it belongs to.
+bitWidth = value defining the bit-width of the bitfield within the +register it belongs to.
+

+

+lsb = value defining the bit position of the least significant +bit within the register it belongs to.
+msb = value defining the bit position of the most significant +bit within the register it belongs to. +

+

bitRange = a string in the format: [<msb>:<lsb>]
+

+

Optional items:

+

derivedFrom = the field is cloned +from a previously defined field with a unique name.

+

access = predefined strings defining the allowed +accesses for this register: read-only, write-only, read-write, writeOnce, +read-writeOnce. Can be omitted if it matches the access permission set for the parent register.

+

enumeratedValues = next lower level of description (see next section +for details)

+

modifiedWriteValues = element to describe the manipulation of +data written to a field. If not specified the value written to the field is the +value stored in the field. The other options are bitwise operations:
oneToClear: write data bit of one shall clear (set to zero) the +corresponding bit in the field
oneToSet: write data bit of one shall set (set to one) the corresponding +bit in the field
oneToToggle: write data bit of one shall toggle (invert) the +corresponding bit in the field
zeroToClear: write data bit of zero shall clear (set to zero) the +corresponding bit in the field
zeroToSet: write data bit of zero shall set (set to one) the +corresponding bit in the field
zeroToToggle: write data bit of zero shall toggle (invert) the +corresponding bit in the field
clear: after a write operation all bits in the field are cleared (set to +zero)
set: after a write operation all bits in the field are set (set to one)
modify: after a write operation all bit in the field may be modified +(default)

+

writeConstraint: has a set of options:
writeAsRead = if true only the last read value can be written
useEnumeratedValues = if true only those values listed in the +enumeratedValues list are considered valid write values
minimum = specifies the smallest number to be written to the field
maximum = specifies the largest number to be written to the field

+

readAction: if set it specifies the side effect following +read operations. If not set the field is not modified following a read +operations. The defined side effects are:
clear: indicates that the field is cleared (set to zero) +following a read operation
set: indicates that the field is set (set to ones) following a +read operation
modify: indicates that the field is modified in some way after a +read operation  +
modifyExternal: indicates that one or more dependent resources +other than this field are immediately affected by a read (it is recommended that +the field description specifies these dependencies). Debuggers are not expected +to read the field unless explicitly instructed by user.

+

Example:

+
...
+         <field>
+           <name>TimerCtrl0_IntSel</name>
+           <description>Select interrupt line that is triggered by timer overflow.</description>
+	   <bitOffset>1</bitOffset>
+           <bitWidth>3</bitWidth>
+           <access>read-write</access>
+	   <resetValue>0x0</resetValue>
+           <modifiedWriteValues>oneToSet</modifiedWriteValues>
+           <writeConstraint>
+              <range>
+                <minimum>0</minimum>
+                <maximum>5</maximum>
+              </range>
+           </writeConstraint>
+           <readAction>clear</readAction>
+ 
+           <enumeratedValues>
+              ...
+           </enumeratedValues>
+         </field>
+...
+
+

<enumeratedValues +derivedFrom="xs:Name">

+

   <name>xs:Name</name>
+   <usage>usageType</usage>

+   <enumeratedValue>
+      ...
+   </enumeratedValue>

+

      ... 

+

   <enumeratedValue>
+      ...
+   </enumeratedValue>

+

</enumeratedValues>

+

An enumerated value provides one or more enumeration items (enumeratedValue), defining a map +between all possible values of the bit-field it belongs to and the corresponding +human readable semantics of that value.

+

Mandatory items:
+enumeratedValue = next lower level of description (see next section +for details)

+

Optional items:
+derivedFrom = the enumeratedValues can be copied or derived +from a previously defined enumeratedValue that has been given a unique name.
+name = name string to identify an enumeratedValue. Named +enumeratedValues need to be unique in the scope of a device in order to be reusable +throughout the description of a device.
+usage = possible values are read, write or +read-write. This allows to specify two different enumerated values +depending whether it is to be used for a read or a write access. If not specified the enueratedValues are valid for read and write.

+

Example:

+
...
+           <enumeratedValues>
+              <name>TimerIntSelect</name>
+              <usage>read-write</usage>
+              <enumeratedValue>
+                <name>disabled</name>
+                <description>disabled bit</description>
+                <value>0</value>
+              </enumeratedValue>
+              ...
+              <enumeratedValue>
+                <name>reserved</name>
+	        <description>reserved values. Do not use</description>
+                <isDefault>true</isDefault>
+              </enumeratedValue>
+           </enumeratedValues>
+...
+
+

<enumeratedValue>

+

   <name>xs:name</name>
+   <description>xs:string</description>
+
   <value>scaledNonNegativeInteger</value>
+   +
or
+   <
isDefault>xs:boolean</isDefault>
+

+

</enumeratedValue>

+

An enumeratedValue defines a map between a value and the string reading the +corresponding human readable semantics for that value in a brief and a detailed +version

+

Mandatory items:

+

name= brief string verbally describing the semantics of the value +defined for this enumeratedValue. E.g. used for display in visualization of a bit-field +instead of the value.

+

+value = defines the constant of the bit-field that the name +corresponds to.

+

isDefault = defines the name and description for all other +values that are not explicitly listed

+

Optional item:

+

description = extended string verbally describing the semantics +of the value defined for this enumeratedValue in full detail.

+

Example:

+
...
+         <enumeratedValue>
+            <name>disabled</name>
+            <description>Timer does not generate interrupts</description>
+            <value>0</value>
+         </enumeratedValue>
+         ...
+         <enumeratedValue>
+            <name>enabled</name>
+            <description>Timer does not generate interrupts</description>
+            <isDefault>true</isDefault>
+         </enumeratedValue>
+
+...
+
+

Names

+

Names shall comply with ANSI C variable naming restrictions.

+

Constants

+

Number constants shall be entered in hexadecimal, decimal or binary format.

+
    +
  • hexadecimal is indicated by a leading "0x"
  • +
  • binary format is indicated by a leading  "#"
  • +
  • all other formats are interpreted as decimal numbers
  • +
  • the value tag in enumeratedValue accepts do not care bits + represented by "x"
  • +
+

Comments

+

Comments have the standard XML format "<!--" starts a comment + "-->" terminates a comment

+

Example

+
+<?xml version="1.0" encoding="utf-8"?>
+ 
+<device schemaVersion="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="CMSIS-SVD_Schema_1_0.xsd" >
+  <name>Cortex_M3_Sample</name>
+  <version>0.1</version>
+  <description>ARM Cortex-M3 based Microcontroller dummy device</description>
+  <!-- Bus Interface Properties -->
+  <!-- Cortex-M3 is byte addressable -->
+  <addressUnitBits>8</addressUnitBits>
+  <!-- the maximum data bit width accessible within a single transfer is 32bits -->
+  <width>32</width>
+
+  <!-- Register Default Properties -->
+  <!-- the size of the registers is set to a bit width of 32. This can be overruled for individual peripherals and/or registers -->
+  <size>32</size>
+  <!-- the access to all registers is set to be readable and writeable. This can be overruled for individual peripherals and/or registers -->
+  <access>read-write</access>
+  <!-- for demonstration purposes the resetValue for all registers of the device is set to be 0. This can be overruled within the description -->
+  <resetValue>0</resetValue>
+  <!-- the resetMask = 0 specifies that by default no register of this device has a defined reset value -->
+  <resetMask>0</resetMask>
+
+  <peripherals>
+    <peripheral>
+      <name>Timer0</name>
+      <description>A simple 16 bit timer counting down ... </description>
+      <groupName>Timer</groupName>
+      <baseAddress>0x40000000</baseAddress>
+      <!-- the first addressBlock is occupied by registers. The second block is reserved -> no access permission -->
+      <addressBlock>
+        <offset>0</offset>
+        <size>0x8</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <addressBlock>
+        <offset>0x8</offset>
+        <size>0x3f8</size>
+        <usage>reserved</usage>
+      </addressBlock>
+      <interrupt>
+        <name>TIM0_IRQn</name>
+        <value>34</value>
+      </interrupt>
+      <registers>
+        <register> 
+          <name>TimerCtrl0</name>
+          <!-- the display name is an unrestricted string. -->
+          <displayName>Timer Ctrl 0</displayName>
+          <description>Timer Control Register</description>
+          <addressOffset>0x0</addressOffset>
+          <!-- size=32, access=read-write, resetValue=0x0, resetMask=0xffffffff, volatile=false -->
+          <fields>
+            <field>
+              <name>TimerCtrl0_En</name>
+              <description>Enable Bit activates the timer.</description>
+              <!-- Spirit like bit range description: [0:0] -->
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <!-- Writing 1 enables, writing 0 has no effect -->
+	      <modifiedWriteValues>oneToSet</modifiedWriteValues>
+              <!-- The write constraint is defined to be that only the values provided by the enumeratedValues below are allowed -->
+              <writeConstraint>
+                <useEnumeratedValues>true</useEnumeratedValues>
+              </writeConstraint>
+              <!-- there is no side effect on reads, therefore <readAction> is not set -->
+              <!-- oneBitEnable named enumeration that can be reused in other parts of the description -->
+              <enumeratedValues>
+                <name>oneBitEnable</name>
+                <!-- the same enumerated Values are used for read and write. This default is assumed when this tag is missing -->
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>enabled</name>
+                  <description>Timer is enabled and active</description>
+                  <value>0x0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>disabled</name>
+                  <description>Timer is disabled and inactive</description>
+                  <value>0x1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TimerCtrl0_Dis</name>
+              <description>Disable Bit deactivates the timer.</description>
+              <!-- Spirit like bit range description: [1:1] -->
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <!-- Writing 1 sets, writing 0 has no effect -->
+	      <modifiedWriteValues>oneToSet</modifiedWriteValues>
+              <!-- The write constraint is defined to be that only the values provided by the enumeratedValues below are allowed -->
+              <writeConstraint>
+                <useEnumeratedValues>true</useEnumeratedValues>
+              </writeConstraint>
+              <!-- there is no side effect on reads, therefore <readAction> is not set -->
+              <!-- oneBitEnable named enumeration that can be reused in other parts of the description -->
+              <enumeratedValues derivedFrom="oneBitEnable"></enumeratedValues>
+            </field>
+            <field>
+              <name>TimerCtrl0_Int</name>
+              <description>Select interrupt line that is triggered by timer overflow.</description>
+              <!-- the position of the bit field is described in the bitRange style. -->
+              <bitRange>[4:2]</bitRange>
+              <enumeratedValues>
+                <enumeratedValue>
+                  <name>disabled</name>
+                  <description>Timer does not generate interrupts</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>int 0</name>
+                  <description>Timer does generate interrupts on interrupt line 0</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>int 1</name>
+                  <description>Timer does generate interrupts on interrupt line 1</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>int 2</name>
+                  <description>Timer does generate interrupts on interrupt line 2</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>int 3</name>
+                  <description>Timer does generate interrupts on interrupt line 3</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>int 4</name>
+                  <description>Timer does generate interrupts on interrupt line 4</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <!-- this is the default element. All the valid value not listed above (6,7) have the following name and description -->
+                <enumeratedValue>
+                  <name>reserved</name>
+                  <description>Timer is configured incorrectly and the functionality is considered unpredictable</description>
+                  <isDefault>true</isDefault>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>TimerCounter0</name>
+          <description>Timer0 16 Bit Counter Register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>16</size>
+        </register>
+        <!-- a copy of the counter register TimerCounter0 with the name="TimerCounter1" and the addressOffset="0x8" -->
+        <register derivedFrom="TimerCounter0">
+          <name>TimerCounter1</name>
+          <addressOffset>0x6</addressOffset>
+        </register>
+        <!-- ... this is a restricted demo example and a real timer peripheral would have more register to be complete -->
+      </registers>
+    </peripheral>
+    <!-- a copy of Timer0 with the name="Timer1 and the baseAddress="0x40000400" -->
+    <peripheral derivedFrom="Timer0">
+      <name>Timer1</name>
+      <baseAddress>0x40000400</baseAddress>
+      <interrupt>
+        <name>TIM1_IRQn</name>
+        <value>35</value>
+      </interrupt>
+    </peripheral>
+  </peripherals>
+</device>
+ +

Questions & Answers

+

Is there any relation between the System View Description and the CMSIS +standard?

+

Initiallly there was no immediate link but both initiatives had a common goal: +Create a sound software development eco-system for Cortex-M based +Microcontroller, giving the customers the free choice of devices and software +development environments and all resources required for a successful product +development in a single location. Meanwhile we have started to generate +CMSIS compliant device header files from the same CMSIS-SVD description. We will +introduce a small number of additional description tags in the next version of +the specification. The benefit is the synchronization between symbols used in +the application and the symbols displayed by the debugger. 

+

Why does the format not provide constructs like macros and +conditional statements?

+

It is assumed that the description is generated from other sources and +therefore such concepts would only complicate the language unnecessarily. It is +recommended to use a standard C pre-processor to generate the debug description +format from a redundancy optimized description.

+

Do we need to consider endianess in the description?

+

This should be specified on a device configuration level and is not specific +to the visualization of peripheral details in a System View. Endianess becomes +relevant when using bit fields in the CMSIS compliant device header file.

+

Is the System View Description limited to Cortex-M based devices ?

+ + +

There may have been assumptions made about the structure of the device due to +it being developed around a Cortex-M processor. E.g. that all peripherals are +assumed to be memory mapped and to reside in a single address space. It is quite +likely that the description format may also serve other architectures +sufficiently. There is no intent to limit the format to Cortex-M +processor based devices.

+ + + \ No newline at end of file diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/README.txt b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/README.txt new file mode 100644 index 000000000..5b95fe1f0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/README.txt @@ -0,0 +1,3 @@ + +NOTE - Open the index.html file inside the html directory to access CMSIS DSP Library documentation + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/Biquad.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/Biquad.gif new file mode 100644 index 000000000..d6c517059 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/Biquad.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/BiquadCascade.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/BiquadCascade.gif new file mode 100644 index 000000000..6a229796c Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/BiquadCascade.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/BiquadDF2Transposed.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/BiquadDF2Transposed.gif new file mode 100644 index 000000000..266781b46 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/BiquadDF2Transposed.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/BiquadPostshift.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/BiquadPostshift.gif new file mode 100644 index 000000000..f177f0cd0 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/BiquadPostshift.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/CFFT.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/CFFT.gif new file mode 100644 index 000000000..1dd540c52 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/CFFT.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/CFFTQ15.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/CFFTQ15.gif new file mode 100644 index 000000000..904a6d901 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/CFFTQ15.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/CFFTQ31.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/CFFTQ31.gif new file mode 100644 index 000000000..12b742625 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/CFFTQ31.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/CIFFTQ15.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/CIFFTQ15.gif new file mode 100644 index 000000000..57c16f632 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/CIFFTQ15.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/CIFFTQ31.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/CIFFTQ31.gif new file mode 100644 index 000000000..59852e26b Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/CIFFTQ31.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/Convolution.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/Convolution.gif new file mode 100644 index 000000000..31f27d178 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/Convolution.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/ConvolutionEquation.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/ConvolutionEquation.gif new file mode 100644 index 000000000..d4334fa4a Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/ConvolutionEquation.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/CorrelateEquation.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/CorrelateEquation.gif new file mode 100644 index 000000000..1a62fb170 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/CorrelateEquation.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/DCT4.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/DCT4.gif new file mode 100644 index 000000000..0960fadc0 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/DCT4.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/DCT4Equation.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/DCT4Equation.gif new file mode 100644 index 000000000..b6d16cfc5 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/DCT4Equation.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FFTBin.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FFTBin.gif new file mode 100644 index 000000000..ced92cac8 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FFTBin.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FFTBinInput.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FFTBinInput.gif new file mode 100644 index 000000000..d4f3b148a Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FFTBinInput.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FFTBinOutput.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FFTBinOutput.gif new file mode 100644 index 000000000..f44dc6917 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FFTBinOutput.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIR.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIR.gif new file mode 100644 index 000000000..2e0d1fcea Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIR.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRDecimator.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRDecimator.gif new file mode 100644 index 000000000..0229d31a6 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRDecimator.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRInterpolator.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRInterpolator.gif new file mode 100644 index 000000000..ee8314174 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRInterpolator.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRLPF_coeffs.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRLPF_coeffs.gif new file mode 100644 index 000000000..6bad1a6db Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRLPF_coeffs.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRLPF_input.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRLPF_input.gif new file mode 100644 index 000000000..ec6c5a403 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRLPF_input.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRLPF_output.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRLPF_output.gif new file mode 100644 index 000000000..0cb288087 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRLPF_output.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRLPF_response.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRLPF_response.gif new file mode 100644 index 000000000..19d311f79 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRLPF_response.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRLPF_signalflow.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRLPF_signalflow.gif new file mode 100644 index 000000000..e1e6a086f Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRLPF_signalflow.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRLattice.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRLattice.gif new file mode 100644 index 000000000..7558ffaec Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRLattice.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRSparse.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRSparse.gif new file mode 100644 index 000000000..bc05c4f7a Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/FIRSparse.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/GEQ_allbandresponse.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/GEQ_allbandresponse.gif new file mode 100644 index 000000000..33c32ae59 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/GEQ_allbandresponse.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/GEQ_bandresponse.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/GEQ_bandresponse.gif new file mode 100644 index 000000000..d0c47439e Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/GEQ_bandresponse.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/GEQ_inputchirp.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/GEQ_inputchirp.gif new file mode 100644 index 000000000..7a3b46abe Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/GEQ_inputchirp.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/GEQ_outputchirp.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/GEQ_outputchirp.gif new file mode 100644 index 000000000..e245cfa63 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/GEQ_outputchirp.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/GEQ_signalflow.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/GEQ_signalflow.gif new file mode 100644 index 000000000..e670ed590 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/GEQ_signalflow.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/IDCT4Equation.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/IDCT4Equation.gif new file mode 100644 index 000000000..ad6651999 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/IDCT4Equation.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/IIRLattice.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/IIRLattice.gif new file mode 100644 index 000000000..356152bab Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/IIRLattice.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/LMS.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/LMS.gif new file mode 100644 index 000000000..15eddafbd Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/LMS.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/LinearInterp.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/LinearInterp.gif new file mode 100644 index 000000000..34f970445 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/LinearInterp.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/MatrixAddition.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/MatrixAddition.gif new file mode 100644 index 000000000..d754c82fc Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/MatrixAddition.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/MatrixInverse.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/MatrixInverse.gif new file mode 100644 index 000000000..fb8e5bd1f Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/MatrixInverse.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/MatrixMultiplication.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/MatrixMultiplication.gif new file mode 100644 index 000000000..47095d021 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/MatrixMultiplication.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/MatrixScale.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/MatrixScale.gif new file mode 100644 index 000000000..6478d6884 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/MatrixScale.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/MatrixSubtraction.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/MatrixSubtraction.gif new file mode 100644 index 000000000..933b9f450 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/MatrixSubtraction.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/MatrixTranspose.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/MatrixTranspose.gif new file mode 100644 index 000000000..219220e4b Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/MatrixTranspose.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/PID.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/PID.gif new file mode 100644 index 000000000..04a5d1a2b Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/PID.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/RFFT.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/RFFT.gif new file mode 100644 index 000000000..c05ed8e68 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/RFFT.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/RFFTQ15.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/RFFTQ15.gif new file mode 100644 index 000000000..082feb824 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/RFFTQ15.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/RFFTQ31.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/RFFTQ31.gif new file mode 100644 index 000000000..c1be5869e Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/RFFTQ31.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/RIFFT.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/RIFFT.gif new file mode 100644 index 000000000..0d9322d4b Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/RIFFT.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/RIFFTQ15.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/RIFFTQ15.gif new file mode 100644 index 000000000..0ecfc03ab Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/RIFFTQ15.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/RIFFTQ31.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/RIFFTQ31.gif new file mode 100644 index 000000000..869be4425 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/RIFFTQ31.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/SignalFlow.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/SignalFlow.gif new file mode 100644 index 000000000..854ab78c8 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/SignalFlow.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/Variance.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/Variance.gif new file mode 100644 index 000000000..3d969e021 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/Variance.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/annotated.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/annotated.html new file mode 100644 index 000000000..f12190498 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/annotated.html @@ -0,0 +1,126 @@ + + + + +CMSIS DSP Software Library: Data Structures + + + + + + + + + +
+
+

Data Structures

+
+
+Here are the data structures with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_bilinear_interp_instance_f32Instance structure for the floating-point bilinear interpolation function
arm_bilinear_interp_instance_q15Instance structure for the Q15 bilinear interpolation function
arm_bilinear_interp_instance_q31Instance structure for the Q31 bilinear interpolation function
arm_bilinear_interp_instance_q7Instance structure for the Q15 bilinear interpolation function
arm_biquad_cas_df1_32x64_ins_q31Instance structure for the high precision Q31 Biquad cascade filter
arm_biquad_cascade_df2T_instance_f32Instance structure for the floating-point transposed direct form II Biquad cascade filter
arm_biquad_casd_df1_inst_f32Instance structure for the floating-point Biquad cascade filter
arm_biquad_casd_df1_inst_q15Instance structure for the Q15 Biquad cascade filter
arm_biquad_casd_df1_inst_q31Instance structure for the Q31 Biquad cascade filter
arm_cfft_radix4_instance_f32Instance structure for the floating-point CFFT/CIFFT function
arm_cfft_radix4_instance_q15Instance structure for the Q15 CFFT/CIFFT function
arm_cfft_radix4_instance_q31Instance structure for the Q31 CFFT/CIFFT function
arm_dct4_instance_f32Instance structure for the floating-point DCT4/IDCT4 function
arm_dct4_instance_q15Instance structure for the Q15 DCT4/IDCT4 function
arm_dct4_instance_q31Instance structure for the Q31 DCT4/IDCT4 function
arm_fir_decimate_instance_f32Instance structure for the floating-point FIR decimator
arm_fir_decimate_instance_q15Instance structure for the Q15 FIR decimator
arm_fir_decimate_instance_q31Instance structure for the Q31 FIR decimator
arm_fir_instance_f32Instance structure for the floating-point FIR filter
arm_fir_instance_q15Instance structure for the Q15 FIR filter
arm_fir_instance_q31Instance structure for the Q31 FIR filter
arm_fir_instance_q7Instance structure for the Q7 FIR filter
arm_fir_interpolate_instance_f32Instance structure for the floating-point FIR interpolator
arm_fir_interpolate_instance_q15Instance structure for the Q15 FIR interpolator
arm_fir_interpolate_instance_q31Instance structure for the Q31 FIR interpolator
arm_fir_lattice_instance_f32Instance structure for the floating-point FIR lattice filter
arm_fir_lattice_instance_q15Instance structure for the Q15 FIR lattice filter
arm_fir_lattice_instance_q31Instance structure for the Q31 FIR lattice filter
arm_fir_sparse_instance_f32Instance structure for the floating-point sparse FIR filter
arm_fir_sparse_instance_q15Instance structure for the Q15 sparse FIR filter
arm_fir_sparse_instance_q31Instance structure for the Q31 sparse FIR filter
arm_fir_sparse_instance_q7Instance structure for the Q7 sparse FIR filter
arm_iir_lattice_instance_f32Instance structure for the floating-point IIR lattice filter
arm_iir_lattice_instance_q15Instance structure for the Q15 IIR lattice filter
arm_iir_lattice_instance_q31Instance structure for the Q31 IIR lattice filter
arm_linear_interp_instance_f32Instance structure for the floating-point Linear Interpolate function
arm_lms_instance_f32Instance structure for the floating-point LMS filter
arm_lms_instance_q15Instance structure for the Q15 LMS filter
arm_lms_instance_q31Instance structure for the Q31 LMS filter
arm_lms_norm_instance_f32Instance structure for the floating-point normalized LMS filter
arm_lms_norm_instance_q15Instance structure for the Q15 normalized LMS filter
arm_lms_norm_instance_q31Instance structure for the Q31 normalized LMS filter
arm_matrix_instance_f32Instance structure for the floating-point matrix structure
arm_matrix_instance_q15Instance structure for the Q15 matrix structure
arm_matrix_instance_q31Instance structure for the Q31 matrix structure
arm_pid_instance_f32Instance structure for the floating-point PID Control
arm_pid_instance_q15Instance structure for the Q15 PID Control
arm_pid_instance_q31Instance structure for the Q31 PID Control
arm_rfft_instance_f32Instance structure for the floating-point RFFT/RIFFT function
arm_rfft_instance_q15Instance structure for the Q15 RFFT/RIFFT function
arm_rfft_instance_q31Instance structure for the Q31 RFFT/RIFFT function
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__f32_8c.html new file mode 100644 index 000000000..4fe79151c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__f32_8c.html @@ -0,0 +1,84 @@ + + + + +CMSIS DSP Software Library: arm_abs_f32.c File Reference + + + + + + + + + +
+ +
+

arm_abs_f32.c File Reference

+
+
+#include "arm_math.h"
+#include <math.h>
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_abs_f32 (float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__f32_8c_source.html new file mode 100644 index 000000000..4ec619b8c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__f32_8c_source.html @@ -0,0 +1,162 @@ + + + + +CMSIS DSP Software Library: arm_abs_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__q15_8c.html new file mode 100644 index 000000000..068f35ef4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_abs_q15.c File Reference + + + + + + + + + +
+ +
+

arm_abs_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_abs_q15 (q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__q15_8c_source.html new file mode 100644 index 000000000..af13f4b83 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__q15_8c_source.html @@ -0,0 +1,218 @@ + + + + +CMSIS DSP Software Library: arm_abs_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__q31_8c.html new file mode 100644 index 000000000..cdde77686 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_abs_q31.c File Reference + + + + + + + + + +
+ +
+

arm_abs_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_abs_q31 (q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__q31_8c_source.html new file mode 100644 index 000000000..43d0a2d3b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__q31_8c_source.html @@ -0,0 +1,167 @@ + + + + +CMSIS DSP Software Library: arm_abs_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__q7_8c.html new file mode 100644 index 000000000..2eabffa38 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_abs_q7.c File Reference + + + + + + + + + +
+ +
+

arm_abs_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_abs_q7 (q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__q7_8c_source.html new file mode 100644 index 000000000..8fe1b47ce --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__abs__q7_8c_source.html @@ -0,0 +1,191 @@ + + + + +CMSIS DSP Software Library: arm_abs_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__f32_8c.html new file mode 100644 index 000000000..bdc39ac7b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_add_f32.c File Reference + + + + + + + + + +
+ +
+

arm_add_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_add_f32 (float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__f32_8c_source.html new file mode 100644 index 000000000..a6de21656 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__f32_8c_source.html @@ -0,0 +1,161 @@ + + + + +CMSIS DSP Software Library: arm_add_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__q15_8c.html new file mode 100644 index 000000000..a8ec01567 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_add_q15.c File Reference + + + + + + + + + +
+ +
+

arm_add_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_add_q15 (q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__q15_8c_source.html new file mode 100644 index 000000000..040323fdd --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__q15_8c_source.html @@ -0,0 +1,174 @@ + + + + +CMSIS DSP Software Library: arm_add_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__q31_8c.html new file mode 100644 index 000000000..c190d565f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_add_q31.c File Reference + + + + + + + + + +
+ +
+

arm_add_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_add_q31 (q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__q31_8c_source.html new file mode 100644 index 000000000..588759670 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__q31_8c_source.html @@ -0,0 +1,175 @@ + + + + +CMSIS DSP Software Library: arm_add_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__q7_8c.html new file mode 100644 index 000000000..9b2192ec9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_add_q7.c File Reference + + + + + + + + + +
+ +
+

arm_add_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_add_q7 (q7_t *pSrcA, q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__q7_8c_source.html new file mode 100644 index 000000000..820838885 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__add__q7_8c_source.html @@ -0,0 +1,173 @@ + + + + +CMSIS DSP Software Library: arm_add_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__32x64__init__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__32x64__init__q31_8c.html new file mode 100644 index 000000000..275b77a56 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__32x64__init__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_32x64_init_q31.c File Reference + + + + + + + + + +
+ +
+

arm_biquad_cascade_df1_32x64_init_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_biquad_cas_df1_32x64_init_q31 (arm_biquad_cas_df1_32x64_ins_q31 *S, uint8_t numStages, q31_t *pCoeffs, q63_t *pState, uint8_t postShift)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__32x64__init__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__32x64__init__q31_8c_source.html new file mode 100644 index 000000000..b36c37c8a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__32x64__init__q31_8c_source.html @@ -0,0 +1,130 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_32x64_init_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__32x64__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__32x64__q31_8c.html new file mode 100644 index 000000000..ec4e914db --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__32x64__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_32x64_q31.c File Reference + + + + + + + + + +
+ +
+

arm_biquad_cascade_df1_32x64_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_biquad_cas_df1_32x64_q31 (const arm_biquad_cas_df1_32x64_ins_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__32x64__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__32x64__q31_8c_source.html new file mode 100644 index 000000000..93966d095 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__32x64__q31_8c_source.html @@ -0,0 +1,405 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_32x64_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__f32_8c.html new file mode 100644 index 000000000..03352c51b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_f32.c File Reference + + + + + + + + + +
+ +
+

arm_biquad_cascade_df1_f32.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__f32_8c_source.html new file mode 100644 index 000000000..58e5b9404 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__f32_8c_source.html @@ -0,0 +1,356 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__fast__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__fast__q15_8c.html new file mode 100644 index 000000000..add09a6d0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__fast__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_fast_q15.c File Reference + + + + + + + + + +
+ +
+

arm_biquad_cascade_df1_fast_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_biquad_cascade_df1_fast_q15 (const arm_biquad_casd_df1_inst_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__fast__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__fast__q15_8c_source.html new file mode 100644 index 000000000..e211ac2da --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__fast__q15_8c_source.html @@ -0,0 +1,322 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_fast_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__fast__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__fast__q31_8c.html new file mode 100644 index 000000000..727376977 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__fast__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_fast_q31.c File Reference + + + + + + + + + +
+ +
+

arm_biquad_cascade_df1_fast_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_biquad_cascade_df1_fast_q31 (const arm_biquad_casd_df1_inst_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__fast__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__fast__q31_8c_source.html new file mode 100644 index 000000000..098077007 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__fast__q31_8c_source.html @@ -0,0 +1,308 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_fast_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__init__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__init__f32_8c.html new file mode 100644 index 000000000..98e998287 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__init__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_init_f32.c File Reference + + + + + + + + + +
+ +
+

arm_biquad_cascade_df1_init_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_biquad_cascade_df1_init_f32 (arm_biquad_casd_df1_inst_f32 *S, uint8_t numStages, float32_t *pCoeffs, float32_t *pState)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__init__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__init__f32_8c_source.html new file mode 100644 index 000000000..8e3ad0997 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__init__f32_8c_source.html @@ -0,0 +1,129 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_init_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__init__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__init__q15_8c.html new file mode 100644 index 000000000..5ed36d7cd --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__init__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_init_q15.c File Reference + + + + + + + + + +
+ +
+

arm_biquad_cascade_df1_init_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_biquad_cascade_df1_init_q15 (arm_biquad_casd_df1_inst_q15 *S, uint8_t numStages, q15_t *pCoeffs, q15_t *pState, int8_t postShift)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__init__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__init__q15_8c_source.html new file mode 100644 index 000000000..1ea314682 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__init__q15_8c_source.html @@ -0,0 +1,133 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_init_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__init__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__init__q31_8c.html new file mode 100644 index 000000000..fe634c141 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__init__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_init_q31.c File Reference + + + + + + + + + +
+ +
+

arm_biquad_cascade_df1_init_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_biquad_cascade_df1_init_q31 (arm_biquad_casd_df1_inst_q31 *S, uint8_t numStages, q31_t *pCoeffs, q31_t *pState, int8_t postShift)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__init__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__init__q31_8c_source.html new file mode 100644 index 000000000..f3ba98c79 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__init__q31_8c_source.html @@ -0,0 +1,134 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_init_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__q15_8c.html new file mode 100644 index 000000000..8b0727fde --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_q15.c File Reference + + + + + + + + + +
+ +
+

arm_biquad_cascade_df1_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_biquad_cascade_df1_q15 (const arm_biquad_casd_df1_inst_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__q15_8c_source.html new file mode 100644 index 000000000..32712f815 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__q15_8c_source.html @@ -0,0 +1,419 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__q31_8c.html new file mode 100644 index 000000000..4d5b4ca57 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_q31.c File Reference + + + + + + + + + +
+ +
+

arm_biquad_cascade_df1_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_biquad_cascade_df1_q31 (const arm_biquad_casd_df1_inst_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__q31_8c_source.html new file mode 100644 index 000000000..cfe7ce2c6 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df1__q31_8c_source.html @@ -0,0 +1,402 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df1_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df2_t__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df2_t__f32_8c.html new file mode 100644 index 000000000..7996a6ffe --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df2_t__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df2T_f32.c File Reference + + + + + + + + + +
+ +
+

arm_biquad_cascade_df2T_f32.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df2_t__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df2_t__f32_8c_source.html new file mode 100644 index 000000000..f885fef37 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df2_t__f32_8c_source.html @@ -0,0 +1,322 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df2T_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df2_t__init__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df2_t__init__f32_8c.html new file mode 100644 index 000000000..1cbe28848 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df2_t__init__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df2T_init_f32.c File Reference + + + + + + + + + +
+ +
+

arm_biquad_cascade_df2T_init_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_biquad_cascade_df2T_init_f32 (arm_biquad_cascade_df2T_instance_f32 *S, uint8_t numStages, float32_t *pCoeffs, float32_t *pState)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df2_t__init__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df2_t__init__f32_8c_source.html new file mode 100644 index 000000000..776720d0e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__biquad__cascade__df2_t__init__f32_8c_source.html @@ -0,0 +1,127 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df2T_init_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__f32_8c.html new file mode 100644 index 000000000..a8197e48e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__f32_8c.html @@ -0,0 +1,244 @@ + + + + +CMSIS DSP Software Library: arm_cfft_radix4_f32.c File Reference + + + + + + + + + +
+ +
+

arm_cfft_radix4_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + + +

+Functions

void arm_cfft_radix4_f32 (const arm_cfft_radix4_instance_f32 *S, float32_t *pSrc)
void arm_radix4_butterfly_f32 (float32_t *pSrc, uint16_t fftLen, float32_t *pCoef, uint16_t twidCoefModifier)
void arm_radix4_butterfly_inverse_f32 (float32_t *pSrc, uint16_t fftLen, float32_t *pCoef, uint16_t twidCoefModifier, float32_t onebyfftLen)
void arm_bitreversal_f32 (float32_t *pSrc, uint16_t fftSize, uint16_t bitRevFactor, uint16_t *pBitRevTab)
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_radix4_butterfly_f32 (float32_t pSrc,
uint16_t  fftLen,
float32_t pCoef,
uint16_t  twidCoefModifier 
)
+
+
+ +

Core function for the floating-point CFFT butterfly process.

+

end of CFFT_CIFFT group

+ +

Definition at line 223 of file arm_cfft_radix4_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_radix4_butterfly_inverse_f32 (float32_t pSrc,
uint16_t  fftLen,
float32_t pCoef,
uint16_t  twidCoefModifier,
float32_t  onebyfftLen 
)
+
+
+ +

Core function for the floating-point CIFFT butterfly process.

+
Parameters:
+ + + + + + +
[in,out]*pSrcpoints to the in-place buffer of floating-point data type.
[in]fftLenlength of the FFT.
[in]*pCoefpoints to twiddle coefficient buffer.
[in]twidCoefModifiertwiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
[in]onebyfftLenvalue of 1/fftLen.
+
+
+
Returns:
none.
+ +

Definition at line 660 of file arm_cfft_radix4_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_bitreversal_f32 (float32_t pSrc,
uint16_t  fftSize,
uint16_t  bitRevFactor,
uint16_t *  pBitRevTab 
)
+
+
+ +

In-place bit reversal function.

+
Parameters:
+ + + + + +
[in,out]*pSrcpoints to the in-place buffer of floating-point data type.
[in]fftSizelength of the FFT.
[in]bitRevFactorbit reversal modifier that supports different size FFTs with the same bit reversal table.
[in]*pBitRevTabpoints to the bit reversal table.
+
+
+
Returns:
none.
+ +

Definition at line 1177 of file arm_cfft_radix4_f32.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__f32_8c_source.html new file mode 100644 index 000000000..65a923dd6 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__f32_8c_source.html @@ -0,0 +1,1165 @@ + + + + +CMSIS DSP Software Library: arm_cfft_radix4_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__init__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__init__f32_8c.html new file mode 100644 index 000000000..403d16e5b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__init__f32_8c.html @@ -0,0 +1,88 @@ + + + + +CMSIS DSP Software Library: arm_cfft_radix4_init_f32.c File Reference + + + + + + + + + +
+ +
+

arm_cfft_radix4_init_f32.c File Reference

+
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+ +

Go to the source code of this file.

+ + + + + +

+Functions

arm_status arm_cfft_radix4_init_f32 (arm_cfft_radix4_instance_f32 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)

+Variables

static const float32_t twiddleCoef [2048]
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__init__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__init__f32_8c_source.html new file mode 100644 index 000000000..d3cdea7ae --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__init__f32_8c_source.html @@ -0,0 +1,1217 @@ + + + + +CMSIS DSP Software Library: arm_cfft_radix4_init_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__init__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__init__q15_8c.html new file mode 100644 index 000000000..c19dc6ab7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__init__q15_8c.html @@ -0,0 +1,88 @@ + + + + +CMSIS DSP Software Library: arm_cfft_radix4_init_q15.c File Reference + + + + + + + + + +
+ +
+

arm_cfft_radix4_init_q15.c File Reference

+
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+ +

Go to the source code of this file.

+ + + + + +

+Functions

arm_status arm_cfft_radix4_init_q15 (arm_cfft_radix4_instance_q15 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)

+Variables

static const q15_t twiddleCoefQ15 [2048]
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__init__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__init__q15_8c_source.html new file mode 100644 index 000000000..658e4c1ea --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__init__q15_8c_source.html @@ -0,0 +1,435 @@ + + + + +CMSIS DSP Software Library: arm_cfft_radix4_init_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__init__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__init__q31_8c.html new file mode 100644 index 000000000..1af993a77 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__init__q31_8c.html @@ -0,0 +1,88 @@ + + + + +CMSIS DSP Software Library: arm_cfft_radix4_init_q31.c File Reference + + + + + + + + + +
+ +
+

arm_cfft_radix4_init_q31.c File Reference

+
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+ +

Go to the source code of this file.

+ + + + + +

+Functions

arm_status arm_cfft_radix4_init_q31 (arm_cfft_radix4_instance_q31 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)

+Variables

static const q31_t twiddleCoefQ31 [2048]
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__init__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__init__q31_8c_source.html new file mode 100644 index 000000000..38da528d7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__init__q31_8c_source.html @@ -0,0 +1,690 @@ + + + + +CMSIS DSP Software Library: arm_cfft_radix4_init_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__q15_8c.html new file mode 100644 index 000000000..7b1f4e633 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__q15_8c.html @@ -0,0 +1,247 @@ + + + + +CMSIS DSP Software Library: arm_cfft_radix4_q15.c File Reference + + + + + + + + + +
+ +
+

arm_cfft_radix4_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + + +

+Functions

void arm_cfft_radix4_q15 (const arm_cfft_radix4_instance_q15 *S, q15_t *pSrc)
void arm_radix4_butterfly_q15 (q15_t *pSrc16, uint32_t fftLen, q15_t *pCoef16, uint32_t twidCoefModifier)
void arm_radix4_butterfly_inverse_q15 (q15_t *pSrc16, uint32_t fftLen, q15_t *pCoef16, uint32_t twidCoefModifier)
void arm_bitreversal_q15 (q15_t *pSrc16, uint32_t fftLen, uint16_t bitRevFactor, uint16_t *pBitRevTab)
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_radix4_butterfly_q15 (q15_t pSrc16,
uint32_t  fftLen,
q15_t pCoef16,
uint32_t  twidCoefModifier 
)
+
+
+ +

Core function for the Q15 CFFT butterfly process.

+

end of CFFT_CIFFT group

+
Parameters:
+ + + + + +
[in,out]*pSrc16points to the in-place buffer of Q15 data type.
[in]fftLenlength of the FFT.
[in]*pCoef16points to twiddle coefficient buffer.
[in]twidCoefModifiertwiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+
+
+
Returns:
none.
+ +

Definition at line 138 of file arm_cfft_radix4_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_radix4_butterfly_inverse_q15 (q15_t pSrc16,
uint32_t  fftLen,
q15_t pCoef16,
uint32_t  twidCoefModifier 
)
+
+
+ +

Core function for the Q15 CIFFT butterfly process.

+
Parameters:
+ + + + + +
[in,out]*pSrc16points to the in-place buffer of Q15 data type.
[in]fftLenlength of the FFT.
[in]*pCoef16points to twiddle coefficient buffer.
[in]twidCoefModifiertwiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+
+
+
Returns:
none.
+ +

Definition at line 1053 of file arm_cfft_radix4_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_bitreversal_q15 (q15_t pSrc,
uint32_t  fftLen,
uint16_t  bitRevFactor,
uint16_t *  pBitRevTab 
)
+
+
+ +

In-place bit reversal function.

+
Parameters:
+ + + + + +
[in,out]*pSrcpoints to the in-place buffer of Q15 data type.
[in]fftLenlength of the FFT.
[in]bitRevFactorbit reversal modifier that supports different size FFTs with the same bit reversal table
[in]*pBitRevTabpoints to bit reversal table.
+
+
+
Returns:
none.
+ +

Definition at line 1906 of file arm_cfft_radix4_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__q15_8c_source.html new file mode 100644 index 000000000..9fbe3c676 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__q15_8c_source.html @@ -0,0 +1,1976 @@ + + + + +CMSIS DSP Software Library: arm_cfft_radix4_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__q31_8c.html new file mode 100644 index 000000000..5afb7e4e1 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__q31_8c.html @@ -0,0 +1,247 @@ + + + + +CMSIS DSP Software Library: arm_cfft_radix4_q31.c File Reference + + + + + + + + + +
+ +
+

arm_cfft_radix4_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + + +

+Functions

void arm_cfft_radix4_q31 (const arm_cfft_radix4_instance_q31 *S, q31_t *pSrc)
void arm_radix4_butterfly_q31 (q31_t *pSrc, uint32_t fftLen, q31_t *pCoef, uint32_t twidCoefModifier)
void arm_radix4_butterfly_inverse_q31 (q31_t *pSrc, uint32_t fftLen, q31_t *pCoef, uint32_t twidCoefModifier)
void arm_bitreversal_q31 (q31_t *pSrc, uint32_t fftLen, uint16_t bitRevFactor, uint16_t *pBitRevTable)
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_radix4_butterfly_q31 (q31_t pSrc,
uint32_t  fftLen,
q31_t pCoef,
uint32_t  twidCoefModifier 
)
+
+
+ +

Core function for the Q31 CFFT butterfly process.

+

end of CFFT_CIFFT group

+
Parameters:
+ + + + + +
[in,out]*pSrcpoints to the in-place buffer of Q31 data type.
[in]fftLenlength of the FFT.
[in]*pCoefpoints to twiddle coefficient buffer.
[in]twidCoefModifiertwiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+
+
+
Returns:
none.
+ +

Definition at line 139 of file arm_cfft_radix4_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_radix4_butterfly_inverse_q31 (q31_t pSrc,
uint32_t  fftLen,
q31_t pCoef,
uint32_t  twidCoefModifier 
)
+
+
+ +

Core function for the Q31 CIFFT butterfly process.

+
Parameters:
+ + + + + +
[in,out]*pSrcpoints to the in-place buffer of Q31 data type.
[in]fftLenlength of the FFT.
[in]*pCoefpoints to twiddle coefficient buffer.
[in]twidCoefModifiertwiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+
+
+
Returns:
none.
+ +

Definition at line 517 of file arm_cfft_radix4_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_bitreversal_q31 (q31_t pSrc,
uint32_t  fftLen,
uint16_t  bitRevFactor,
uint16_t *  pBitRevTab 
)
+
+
+ +

In-place bit reversal function.

+
Parameters:
+ + + + + +
[in,out]*pSrcpoints to the in-place buffer of Q31 data type.
[in]fftLenlength of the FFT.
[in]bitRevFactorbit reversal modifier that supports different size FFTs with the same bit reversal table
[in]*pBitRevTabpoints to bit reversal table.
+
+
+
Returns:
none.
+ +

Definition at line 848 of file arm_cfft_radix4_q31.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__q31_8c_source.html new file mode 100644 index 000000000..5d01552b8 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cfft__radix4__q31_8c_source.html @@ -0,0 +1,929 @@ + + + + +CMSIS DSP Software Library: arm_cfft_radix4_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__class__marks__example__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__class__marks__example__f32_8c.html new file mode 100644 index 000000000..764cd25fc --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__class__marks__example__f32_8c.html @@ -0,0 +1,393 @@ + + + + +CMSIS DSP Software Library: arm_class_marks_example_f32.c File Reference + + + + + + + + + +
+ +
+

arm_class_marks_example_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

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

+Defines

#define USE_STATIC_INIT
#define TEST_LENGTH_SAMPLES   (20*4)
#define NUMSTUDENTS   20
#define NUMSUBJECTS   4

+Functions

int32_t main ()

+Variables

const float32_t testMarks_f32 [TEST_LENGTH_SAMPLES]
const float32_t testUnity_f32 [4]
static float32_t testOutput [TEST_LENGTH_SAMPLES]
uint32_t numStudents = 20
uint32_t numSubjects = 4
float32_t max_marks
float32_t min_marks
float32_t mean
float32_t std
float32_t var
uint32_t student_num
+

Define Documentation

+ +
+
+ + + + +
#define USE_STATIC_INIT
+
+
+ +

Definition at line 69 of file arm_class_marks_example_f32.c.

+ +
+
+ +
+
+ + + + +
#define TEST_LENGTH_SAMPLES   (20*4)
+
+ +
+ +
+
+ + + + +
#define NUMSTUDENTS   20
+
+
+
Examples:
arm_class_marks_example_f32.c.
+
+

Definition at line 123 of file arm_class_marks_example_f32.c.

+ +
+
+ +
+
+ + + + +
#define NUMSUBJECTS   4
+
+
+
Examples:
arm_class_marks_example_f32.c.
+
+

Definition at line 124 of file arm_class_marks_example_f32.c.

+ +
+
+

Function Documentation

+ + +

Variable Documentation

+ +
+
+ + + + +
const float32_t testMarks_f32[TEST_LENGTH_SAMPLES]
+
+
+Initial value:
  
+{    
+    42.000000,  37.000000,  81.000000,  28.000000,   
+    83.000000,  72.000000,  36.000000,  38.000000,   
+    32.000000,  51.000000,  63.000000,  64.000000,   
+    97.000000,  82.000000,  95.000000,  90.000000,   
+    66.000000,  51.000000,  54.000000,  42.000000,   
+    67.000000,  56.000000,  45.000000,  57.000000,   
+    67.000000,  69.000000,  35.000000,  52.000000,   
+    29.000000,  81.000000,  58.000000,  47.000000,   
+    38.000000,  76.000000,  100.000000, 29.000000,   
+    33.000000,  47.000000,  29.000000,  50.000000,   
+    34.000000,  41.000000,  61.000000,  46.000000,   
+    52.000000,  50.000000,  48.000000,  36.000000,   
+    47.000000,  55.000000,  44.000000,  40.000000,   
+    100.000000, 94.000000,  84.000000,  37.000000,   
+    32.000000,  71.000000,  47.000000,  77.000000,   
+    31.000000,  50.000000,  49.000000,  35.000000,   
+    63.000000,  67.000000,  40.000000,  31.000000,   
+    29.000000,  68.000000,  61.000000,  38.000000,   
+    31.000000,  28.000000,  28.000000,  76.000000,   
+    55.000000,  33.000000,  29.000000,  39.000000 
+}
+
Examples:
arm_class_marks_example_f32.c.
+
+

Definition at line 80 of file arm_class_marks_example_f32.c.

+ +
+
+ +
+
+ + + + +
const float32_t testUnity_f32[4]
+
+
+Initial value:
  
+{    
+    1.000,  1.000,  1.000,  1.000 
+}
+
Examples:
arm_class_marks_example_f32.c.
+
+

Definition at line 108 of file arm_class_marks_example_f32.c.

+ +
+
+ + + +
+
+ + + + +
uint32_t numStudents = 20
+
+
+
Examples:
arm_class_marks_example_f32.c.
+
+

Definition at line 130 of file arm_class_marks_example_f32.c.

+ +
+
+ +
+
+ + + + +
uint32_t numSubjects = 4
+
+
+
Examples:
arm_class_marks_example_f32.c.
+
+

Definition at line 131 of file arm_class_marks_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t max_marks
+
+
+
Examples:
arm_class_marks_example_f32.c.
+
+

Definition at line 132 of file arm_class_marks_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t min_marks
+
+
+
Examples:
arm_class_marks_example_f32.c.
+
+

Definition at line 132 of file arm_class_marks_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t mean
+
+ +
+ +
+
+ + + + +
float32_t std
+
+
+
Examples:
arm_class_marks_example_f32.c.
+
+

Definition at line 132 of file arm_class_marks_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t var
+
+
+
Examples:
arm_class_marks_example_f32.c.
+
+

Definition at line 132 of file arm_class_marks_example_f32.c.

+ +
+
+ +
+
+ + + + +
uint32_t student_num
+
+
+
Examples:
arm_class_marks_example_f32.c.
+
+

Definition at line 133 of file arm_class_marks_example_f32.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__class__marks__example__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__class__marks__example__f32_8c_source.html new file mode 100644 index 000000000..392d41a00 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__class__marks__example__f32_8c_source.html @@ -0,0 +1,226 @@ + + + + +CMSIS DSP Software Library: arm_class_marks_example_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__conj__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__conj__f32_8c.html new file mode 100644 index 000000000..9eb1ffa33 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__conj__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_conj_f32.c File Reference + + + + + + + + + +
+ +
+

arm_cmplx_conj_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_cmplx_conj_f32 (float32_t *pSrc, float32_t *pDst, uint32_t numSamples)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__conj__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__conj__f32_8c_source.html new file mode 100644 index 000000000..84868b12f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__conj__f32_8c_source.html @@ -0,0 +1,171 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_conj_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__conj__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__conj__q15_8c.html new file mode 100644 index 000000000..d266b0628 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__conj__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_conj_q15.c File Reference + + + + + + + + + +
+ +
+

arm_cmplx_conj_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_cmplx_conj_q15 (q15_t *pSrc, q15_t *pDst, uint32_t numSamples)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__conj__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__conj__q15_8c_source.html new file mode 100644 index 000000000..96d9a69ef --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__conj__q15_8c_source.html @@ -0,0 +1,171 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_conj_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__conj__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__conj__q31_8c.html new file mode 100644 index 000000000..463c91929 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__conj__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_conj_q31.c File Reference + + + + + + + + + +
+ +
+

arm_cmplx_conj_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_cmplx_conj_q31 (q31_t *pSrc, q31_t *pDst, uint32_t numSamples)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__conj__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__conj__q31_8c_source.html new file mode 100644 index 000000000..1eb0d09c8 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__conj__q31_8c_source.html @@ -0,0 +1,179 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_conj_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__dot__prod__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__dot__prod__f32_8c.html new file mode 100644 index 000000000..2823695cc --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__dot__prod__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_dot_prod_f32.c File Reference + + + + + + + + + +
+ +
+

arm_cmplx_dot_prod_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_cmplx_dot_prod_f32 (float32_t *pSrcA, float32_t *pSrcB, uint32_t numSamples, float32_t *realResult, float32_t *imagResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__dot__prod__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__dot__prod__f32_8c_source.html new file mode 100644 index 000000000..c0394dd1d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__dot__prod__f32_8c_source.html @@ -0,0 +1,182 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_dot_prod_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__dot__prod__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__dot__prod__q15_8c.html new file mode 100644 index 000000000..b90697cc7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__dot__prod__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_dot_prod_q15.c File Reference + + + + + + + + + +
+ +
+

arm_cmplx_dot_prod_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_cmplx_dot_prod_q15 (q15_t *pSrcA, q15_t *pSrcB, uint32_t numSamples, q31_t *realResult, q31_t *imagResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__dot__prod__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__dot__prod__q15_8c_source.html new file mode 100644 index 000000000..6a3cb4ace --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__dot__prod__q15_8c_source.html @@ -0,0 +1,184 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_dot_prod_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__dot__prod__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__dot__prod__q31_8c.html new file mode 100644 index 000000000..2195b74ec --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__dot__prod__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_dot_prod_q31.c File Reference + + + + + + + + + +
+ +
+

arm_cmplx_dot_prod_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_cmplx_dot_prod_q31 (q31_t *pSrcA, q31_t *pSrcB, uint32_t numSamples, q63_t *realResult, q63_t *imagResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__dot__prod__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__dot__prod__q31_8c_source.html new file mode 100644 index 000000000..e292ea3bc --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__dot__prod__q31_8c_source.html @@ -0,0 +1,184 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_dot_prod_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__f32_8c.html new file mode 100644 index 000000000..e1bd36b8b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mag_f32.c File Reference + + + + + + + + + +
+ +
+

arm_cmplx_mag_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_cmplx_mag_f32 (float32_t *pSrc, float32_t *pDst, uint32_t numSamples)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__f32_8c_source.html new file mode 100644 index 000000000..7f1716cee --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__f32_8c_source.html @@ -0,0 +1,183 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mag_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__q15_8c.html new file mode 100644 index 000000000..cf8cc0eb4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mag_q15.c File Reference + + + + + + + + + +
+ +
+

arm_cmplx_mag_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_cmplx_mag_q15 (q15_t *pSrc, q15_t *pDst, uint32_t numSamples)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__q15_8c_source.html new file mode 100644 index 000000000..7d8d5905c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__q15_8c_source.html @@ -0,0 +1,201 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mag_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__q31_8c.html new file mode 100644 index 000000000..e99318c68 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mag_q31.c File Reference + + + + + + + + + +
+ +
+

arm_cmplx_mag_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_cmplx_mag_q31 (q31_t *pSrc, q31_t *pDst, uint32_t numSamples)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__q31_8c_source.html new file mode 100644 index 000000000..f45c0f6db --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__q31_8c_source.html @@ -0,0 +1,199 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mag_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__squared__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__squared__f32_8c.html new file mode 100644 index 000000000..e6ed8a820 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__squared__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mag_squared_f32.c File Reference + + + + + + + + + +
+ +
+

arm_cmplx_mag_squared_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_cmplx_mag_squared_f32 (float32_t *pSrc, float32_t *pDst, uint32_t numSamples)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__squared__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__squared__f32_8c_source.html new file mode 100644 index 000000000..c26a7bdec --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__squared__f32_8c_source.html @@ -0,0 +1,183 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mag_squared_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__squared__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__squared__q15_8c.html new file mode 100644 index 000000000..3d70290d7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__squared__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mag_squared_q15.c File Reference + + + + + + + + + +
+ +
+

arm_cmplx_mag_squared_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_cmplx_mag_squared_q15 (q15_t *pSrc, q15_t *pDst, uint32_t numSamples)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__squared__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__squared__q15_8c_source.html new file mode 100644 index 000000000..145e46745 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__squared__q15_8c_source.html @@ -0,0 +1,197 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mag_squared_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__squared__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__squared__q31_8c.html new file mode 100644 index 000000000..ae9e291c1 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__squared__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mag_squared_q31.c File Reference + + + + + + + + + +
+ +
+

arm_cmplx_mag_squared_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_cmplx_mag_squared_q31 (q31_t *pSrc, q31_t *pDst, uint32_t numSamples)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__squared__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__squared__q31_8c_source.html new file mode 100644 index 000000000..a308689f1 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mag__squared__q31_8c_source.html @@ -0,0 +1,197 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mag_squared_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__cmplx__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__cmplx__f32_8c.html new file mode 100644 index 000000000..7caccac01 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__cmplx__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mult_cmplx_f32.c File Reference + + + + + + + + + +
+ +
+

arm_cmplx_mult_cmplx_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_cmplx_mult_cmplx_f32 (float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t numSamples)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__cmplx__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__cmplx__f32_8c_source.html new file mode 100644 index 000000000..a2878c7c2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__cmplx__f32_8c_source.html @@ -0,0 +1,209 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mult_cmplx_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__cmplx__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__cmplx__q15_8c.html new file mode 100644 index 000000000..d6b4626b2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__cmplx__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mult_cmplx_q15.c File Reference + + + + + + + + + +
+ +
+

arm_cmplx_mult_cmplx_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_cmplx_mult_cmplx_q15 (q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t numSamples)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__cmplx__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__cmplx__q15_8c_source.html new file mode 100644 index 000000000..be68eadfd --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__cmplx__q15_8c_source.html @@ -0,0 +1,230 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mult_cmplx_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__cmplx__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__cmplx__q31_8c.html new file mode 100644 index 000000000..95dd398a7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__cmplx__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mult_cmplx_q31.c File Reference + + + + + + + + + +
+ +
+

arm_cmplx_mult_cmplx_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_cmplx_mult_cmplx_q31 (q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t numSamples)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__cmplx__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__cmplx__q31_8c_source.html new file mode 100644 index 000000000..a7b3b3222 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__cmplx__q31_8c_source.html @@ -0,0 +1,255 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mult_cmplx_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__real__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__real__f32_8c.html new file mode 100644 index 000000000..18f40cc34 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__real__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mult_real_f32.c File Reference + + + + + + + + + +
+ +
+

arm_cmplx_mult_real_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_cmplx_mult_real_f32 (float32_t *pSrcCmplx, float32_t *pSrcReal, float32_t *pCmplxDst, uint32_t numSamples)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__real__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__real__f32_8c_source.html new file mode 100644 index 000000000..1237712c8 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__real__f32_8c_source.html @@ -0,0 +1,185 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mult_real_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__real__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__real__q15_8c.html new file mode 100644 index 000000000..e9db6d309 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__real__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mult_real_q15.c File Reference + + + + + + + + + +
+ +
+

arm_cmplx_mult_real_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_cmplx_mult_real_q15 (q15_t *pSrcCmplx, q15_t *pSrcReal, q15_t *pCmplxDst, uint32_t numSamples)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__real__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__real__q15_8c_source.html new file mode 100644 index 000000000..76bbf4e8b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__real__q15_8c_source.html @@ -0,0 +1,197 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mult_real_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__real__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__real__q31_8c.html new file mode 100644 index 000000000..e57b4cada --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__real__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mult_real_q31.c File Reference + + + + + + + + + +
+ +
+

arm_cmplx_mult_real_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_cmplx_mult_real_q31 (q31_t *pSrcCmplx, q31_t *pSrcReal, q31_t *pCmplxDst, uint32_t numSamples)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__real__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__real__q31_8c_source.html new file mode 100644 index 000000000..be1079d9a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cmplx__mult__real__q31_8c_source.html @@ -0,0 +1,197 @@ + + + + +CMSIS DSP Software Library: arm_cmplx_mult_real_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__common__tables_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__common__tables_8c.html new file mode 100644 index 000000000..2a6fff0c6 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__common__tables_8c.html @@ -0,0 +1,143 @@ + + + + +CMSIS DSP Software Library: arm_common_tables.c File Reference + + + + + + + + + +
+ +
+

arm_common_tables.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + +

+Variables

const uint16_t armBitRevTable [256]
const q15_t armRecipTableQ15 [64]
const q31_t armRecipTableQ31 [64]
+

Variable Documentation

+ +
+
+ + + + +
const q15_t armRecipTableQ15[64]
+
+
+Initial value:
 {
+  0x7F03, 0x7D13, 0x7B31, 0x795E, 0x7798, 0x75E0,
+  0x7434, 0x7294, 0x70FF, 0x6F76, 0x6DF6, 0x6C82,
+  0x6B16, 0x69B5, 0x685C, 0x670C, 0x65C4, 0x6484,
+  0x634C, 0x621C, 0x60F3, 0x5FD0, 0x5EB5, 0x5DA0,
+  0x5C91, 0x5B88, 0x5A85, 0x5988, 0x5890, 0x579E,
+  0x56B0, 0x55C8, 0x54E4, 0x5405, 0x532B, 0x5255,
+  0x5183, 0x50B6, 0x4FEC, 0x4F26, 0x4E64, 0x4DA6,
+  0x4CEC, 0x4C34, 0x4B81, 0x4AD0, 0x4A23, 0x4978,
+  0x48D1, 0x482D, 0x478C, 0x46ED, 0x4651, 0x45B8,
+  0x4521, 0x448D, 0x43FC, 0x436C, 0x42DF, 0x4255,
+  0x41CC, 0x4146, 0x40C2, 0x4040
+}
+

end of CFFT_CIFFT group

+ +

Definition at line 115 of file arm_common_tables.c.

+ +
+
+ +
+
+ + + + +
const q31_t armRecipTableQ31[64]
+
+
+Initial value:
 {
+  0x7F03F03F, 0x7D137420, 0x7B31E739, 0x795E9F94, 0x7798FD29, 0x75E06928,
+  0x7434554D, 0x72943B4B, 0x70FF9C40, 0x6F760031, 0x6DF6F593, 0x6C8210E3,
+  0x6B16EC3A, 0x69B526F6, 0x685C655F, 0x670C505D, 0x65C4952D, 0x6484E519,
+  0x634CF53E, 0x621C7E4F, 0x60F33C61, 0x5FD0EEB3, 0x5EB55785, 0x5DA03BEB,
+  0x5C9163A1, 0x5B8898E6, 0x5A85A85A, 0x598860DF, 0x58909373, 0x579E1318,
+  0x56B0B4B8, 0x55C84F0B, 0x54E4BA80, 0x5405D124, 0x532B6E8F, 0x52556FD0,
+  0x5183B35A, 0x50B618F3, 0x4FEC81A2, 0x4F26CFA2, 0x4E64E64E, 0x4DA6AA1D,
+  0x4CEC008B, 0x4C34D010, 0x4B810016, 0x4AD078EF, 0x4A2323C4, 0x4978EA96,
+  0x48D1B827, 0x482D77FE, 0x478C1657, 0x46ED801D, 0x4651A2E5, 0x45B86CE2,
+  0x4521CCE1, 0x448DB244, 0x43FC0CFA, 0x436CCD78, 0x42DFE4B4, 0x42554426,
+  0x41CCDDB6, 0x4146A3C6, 0x40C28923, 0x40408102
+}
+
+

Definition at line 132 of file arm_common_tables.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__common__tables_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__common__tables_8c_source.html new file mode 100644 index 000000000..15c8529fe --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__common__tables_8c_source.html @@ -0,0 +1,181 @@ + + + + +CMSIS DSP Software Library: arm_common_tables.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__f32_8c.html new file mode 100644 index 000000000..4c7cf3e86 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_conv_f32.c File Reference + + + + + + + + + +
+ +
+

arm_conv_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_conv_f32 (float32_t *pSrcA, uint32_t srcALen, float32_t *pSrcB, uint32_t srcBLen, float32_t *pDst)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__f32_8c_source.html new file mode 100644 index 000000000..61c2d8ff8 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__f32_8c_source.html @@ -0,0 +1,626 @@ + + + + +CMSIS DSP Software Library: arm_conv_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__fast__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__fast__q15_8c.html new file mode 100644 index 000000000..d39f7d653 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__fast__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_conv_fast_q15.c File Reference + + + + + + + + + +
+ +
+

arm_conv_fast_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_conv_fast_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__fast__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__fast__q15_8c_source.html new file mode 100644 index 000000000..13b027477 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__fast__q15_8c_source.html @@ -0,0 +1,713 @@ + + + + +CMSIS DSP Software Library: arm_conv_fast_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__fast__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__fast__q31_8c.html new file mode 100644 index 000000000..a9a80e496 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__fast__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_conv_fast_q31.c File Reference + + + + + + + + + +
+ +
+

arm_conv_fast_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_conv_fast_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__fast__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__fast__q31_8c_source.html new file mode 100644 index 000000000..a4525b294 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__fast__q31_8c_source.html @@ -0,0 +1,601 @@ + + + + +CMSIS DSP Software Library: arm_conv_fast_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__f32_8c.html new file mode 100644 index 000000000..d9c433fca --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_conv_partial_f32.c File Reference + + + + + + + + + +
+ +
+

arm_conv_partial_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

arm_status arm_conv_partial_f32 (float32_t *pSrcA, uint32_t srcALen, float32_t *pSrcB, uint32_t srcBLen, float32_t *pDst, uint32_t firstIndex, uint32_t numPoints)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__f32_8c_source.html new file mode 100644 index 000000000..d043ca91f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__f32_8c_source.html @@ -0,0 +1,673 @@ + + + + +CMSIS DSP Software Library: arm_conv_partial_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__fast__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__fast__q15_8c.html new file mode 100644 index 000000000..ff4703fd3 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__fast__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_conv_partial_fast_q15.c File Reference + + + + + + + + + +
+ +
+

arm_conv_partial_fast_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

arm_status arm_conv_partial_fast_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, uint32_t firstIndex, uint32_t numPoints)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__fast__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__fast__q15_8c_source.html new file mode 100644 index 000000000..449cde144 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__fast__q15_8c_source.html @@ -0,0 +1,751 @@ + + + + +CMSIS DSP Software Library: arm_conv_partial_fast_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__fast__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__fast__q31_8c.html new file mode 100644 index 000000000..885d423f7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__fast__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_conv_partial_fast_q31.c File Reference + + + + + + + + + +
+ +
+

arm_conv_partial_fast_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

arm_status arm_conv_partial_fast_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst, uint32_t firstIndex, uint32_t numPoints)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__fast__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__fast__q31_8c_source.html new file mode 100644 index 000000000..f0a8d4e71 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__fast__q31_8c_source.html @@ -0,0 +1,639 @@ + + + + +CMSIS DSP Software Library: arm_conv_partial_fast_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__q15_8c.html new file mode 100644 index 000000000..9ad51bcbd --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_conv_partial_q15.c File Reference + + + + + + + + + +
+ +
+

arm_conv_partial_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

arm_status arm_conv_partial_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, uint32_t firstIndex, uint32_t numPoints)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__q15_8c_source.html new file mode 100644 index 000000000..31a90ec83 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__q15_8c_source.html @@ -0,0 +1,811 @@ + + + + +CMSIS DSP Software Library: arm_conv_partial_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__q31_8c.html new file mode 100644 index 000000000..1440909d4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_conv_partial_q31.c File Reference + + + + + + + + + +
+ +
+

arm_conv_partial_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

arm_status arm_conv_partial_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst, uint32_t firstIndex, uint32_t numPoints)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__q31_8c_source.html new file mode 100644 index 000000000..859950124 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__q31_8c_source.html @@ -0,0 +1,663 @@ + + + + +CMSIS DSP Software Library: arm_conv_partial_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__q7_8c.html new file mode 100644 index 000000000..b6da19035 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_conv_partial_q7.c File Reference + + + + + + + + + +
+ +
+

arm_conv_partial_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

arm_status arm_conv_partial_q7 (q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst, uint32_t firstIndex, uint32_t numPoints)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__q7_8c_source.html new file mode 100644 index 000000000..988b71d8b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__partial__q7_8c_source.html @@ -0,0 +1,771 @@ + + + + +CMSIS DSP Software Library: arm_conv_partial_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__q15_8c.html new file mode 100644 index 000000000..3d7eee6f0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_conv_q15.c File Reference + + + + + + + + + +
+ +
+

arm_conv_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_conv_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__q15_8c_source.html new file mode 100644 index 000000000..9d80dedcf --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__q15_8c_source.html @@ -0,0 +1,765 @@ + + + + +CMSIS DSP Software Library: arm_conv_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__q31_8c.html new file mode 100644 index 000000000..2fa09eecb --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_conv_q31.c File Reference + + + + + + + + + +
+ +
+

arm_conv_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_conv_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__q31_8c_source.html new file mode 100644 index 000000000..e583f7442 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__q31_8c_source.html @@ -0,0 +1,618 @@ + + + + +CMSIS DSP Software Library: arm_conv_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__q7_8c.html new file mode 100644 index 000000000..386465884 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_conv_q7.c File Reference + + + + + + + + + +
+ +
+

arm_conv_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_conv_q7 (q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__q7_8c_source.html new file mode 100644 index 000000000..a13412f29 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__conv__q7_8c_source.html @@ -0,0 +1,721 @@ + + + + +CMSIS DSP Software Library: arm_conv_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__convolution__example__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__convolution__example__f32_8c.html new file mode 100644 index 000000000..dff62b015 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__convolution__example__f32_8c.html @@ -0,0 +1,386 @@ + + + + +CMSIS DSP Software Library: arm_convolution_example_f32.c File Reference + + + + + + + + + +
+ +
+

arm_convolution_example_f32.c File Reference

+
+
+#include "arm_math.h"
+#include "math_helper.h"
+ +

Go to the source code of this file.

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

+Defines

#define MAX_BLOCKSIZE   128
#define DELTA   (0.000001f)
#define SNR_THRESHOLD   90

+Functions

int32_t main (void)

+Variables

float32_t Ak [MAX_BLOCKSIZE]
float32_t Bk [MAX_BLOCKSIZE]
float32_t AxB [MAX_BLOCKSIZE *2]
float32_t testInputA_f32 [64]
float32_t testInputB_f32 [64]
const float testRefOutput_f32 [126]
uint32_t srcALen = 64
uint32_t srcBLen = 64
uint32_t outLen
float32_t snr
+

Define Documentation

+ +
+
+ + + + +
#define MAX_BLOCKSIZE   128
+
+ +
+ +
+
+ + + + +
#define DELTA   (0.000001f)
+
+ +
+ +
+
+ + + + +
#define SNR_THRESHOLD   90
+
+
+
Examples:
arm_convolution_example_f32.c, and arm_matrix_example_f32.c.
+
+

Definition at line 97 of file arm_convolution_example_f32.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
int32_t main (void  )
+
+
+ +

Definition at line 175 of file arm_convolution_example_f32.c.

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
float32_t Ak[MAX_BLOCKSIZE]
+
+
+
Examples:
arm_convolution_example_f32.c.
+
+

Definition at line 102 of file arm_convolution_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t Bk[MAX_BLOCKSIZE]
+
+
+
Examples:
arm_convolution_example_f32.c.
+
+

Definition at line 103 of file arm_convolution_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t AxB[MAX_BLOCKSIZE *2]
+
+
+
Examples:
arm_convolution_example_f32.c.
+
+

Definition at line 104 of file arm_convolution_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t testInputA_f32[64]
+
+
+Initial value:
  
+{  
+-0.808920,  1.357369,   1.180861,   -0.504544,  1.762637,   -0.703285,   
+1.696966,   0.620571,   -0.151093,  -0.100235,  -0.872382,  -0.403579,   
+-0.860749,  -0.382648,  -1.052338,  0.128113,   -0.646269,  1.093377,    
+-2.209198,  0.471706,   0.408901,   1.266242,   0.598252,   1.176827,    
+-0.203421,  0.213596,   -0.851964,  -0.466958,  0.021841,   -0.698938,   
+-0.604107,  0.461778,   -0.318219,  0.942520,   0.577585,   0.417619,    
+0.614665,   0.563679,   -1.295073,  -0.764437,  0.952194,   -0.859222,   
+-0.618554,  -2.268542,  -1.210592,  1.655853,   -2.627219,  -0.994249,   
+-1.374704,  0.343799,   0.025619,   1.227481,   -0.708031,  0.069355,    
+-1.845228,  -1.570886,  1.010668,   -1.802084,  1.630088,   1.286090,    
+-0.161050,  -0.940794,  0.367961,   0.291907 
+         
+}
+
Examples:
arm_convolution_example_f32.c.
+
+

Definition at line 110 of file arm_convolution_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t testInputB_f32[64]
+
+
+Initial value:
  
+{  
+0.933724,   0.046881,   1.316470,   0.438345,   0.332682,   2.094885,    
+0.512081,   0.035546,   0.050894,   -2.320371,  0.168711,   -1.830493,   
+-0.444834,  -1.003242,  -0.531494,  -1.365600,  -0.155420,  -0.757692,   
+-0.431880,  -0.380021,  0.096243,   -0.695835,  0.558850,   -1.648962,   
+0.020369,   -0.363630,  0.887146,   0.845503,   -0.252864,  -0.330397,   
+1.269131,   -1.109295,  -1.027876,  0.135940,   0.116721,   -0.293399,   
+-1.349799,  0.166078,   -0.802201,  0.369367,   -0.964568,  -2.266011,   
+0.465178,   0.651222,   -0.325426,  0.320245,   -0.784178,  -0.579456,   
+0.093374,   0.604778,   -0.048225,  0.376297,   -0.394412,  0.578182,    
+-1.218141,  -1.387326,  0.692462,   -0.631297,  0.153137,   -0.638952,   
+0.635474,   -0.970468,  1.334057,   -0.111370 
+}
+
Examples:
arm_convolution_example_f32.c.
+
+

Definition at line 126 of file arm_convolution_example_f32.c.

+ +
+
+ +
+
+ + + + +
const float testRefOutput_f32[126]
+
+
+Initial value:
   
+{  
+-0.818943,  1.229484,   -0.533664,  1.016604,   0.341875,   -1.963656,   
+5.171476,   3.478033,   7.616361,   6.648384,   0.479069,   1.792012,    
+-1.295591,  -7.447818,  0.315830,   -10.657445, -2.483469,  -6.524236,   
+-7.380591,  -3.739005,  -8.388957,  0.184147,   -1.554888,  3.786508,    
+-1.684421,  5.400610,   -1.578126,  7.403361,   8.315999,   2.080267,    
+11.077776,  2.749673,   7.138962,   2.748762,   0.660363,   0.981552,    
+1.442275,   0.552721,   -2.576892,  4.703989,   0.989156,   8.759344,    
+-0.564825,  -3.994680,  0.954710,   -5.014144,  6.592329,   1.599488,    
+-13.979146, -0.391891,  -4.453369,  -2.311242,  -2.948764,  1.761415,    
+-0.138322,  10.433007,  -2.309103,  4.297153,   8.535523,   3.209462,    
+8.695819,   5.569919,   2.514304,   5.582029,   2.060199,   0.642280,    
+7.024616,   1.686615,   -6.481756,  1.343084,   -3.526451,  1.099073,    
+-2.965764,  -0.173723,  -4.111484,  6.528384,   -6.965658,  1.726291,    
+1.535172,   11.023435,  2.338401,   -4.690188,  1.298210,   3.943885,    
+8.407885,   5.168365,   0.684131,   1.559181,   1.859998,   2.852417,    
+8.574070,   -6.369078,  6.023458,   11.837963,  -6.027632,  4.469678,    
+-6.799093,  -2.674048,  6.250367,   -6.809971,  -3.459360,  9.112410,    
+-2.711621,  -1.336678,  1.564249,   -1.564297,  -1.296760,  8.904013,    
+-3.230109,  6.878013,   -7.819823,  3.369909,   -1.657410,  -2.007358,   
+-4.112825,  1.370685,   -3.420525,  -6.276605,  3.244873,   -3.352638,   
+1.545372,   0.902211,   0.197489,   -1.408732,  0.523390,   0.348440 
+}
+
Examples:
arm_convolution_example_f32.c, arm_graphic_equalizer_example_q31.c, and arm_sin_cos_example_f32.c.
+
+

Definition at line 141 of file arm_convolution_example_f32.c.

+ +
+
+ +
+
+ + + + +
uint32_t srcALen = 64
+
+
+
Examples:
arm_convolution_example_f32.c.
+
+

Definition at line 170 of file arm_convolution_example_f32.c.

+ +
+
+ +
+
+ + + + +
uint32_t srcBLen = 64
+
+
+
Examples:
arm_convolution_example_f32.c.
+
+

Definition at line 171 of file arm_convolution_example_f32.c.

+ +
+
+ +
+
+ + + + +
uint32_t outLen
+
+
+
Examples:
arm_convolution_example_f32.c.
+
+

Definition at line 172 of file arm_convolution_example_f32.c.

+ +
+
+ + +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__convolution__example__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__convolution__example__f32_8c_source.html new file mode 100644 index 000000000..5fc7237fe --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__convolution__example__f32_8c_source.html @@ -0,0 +1,237 @@ + + + + +CMSIS DSP Software Library: arm_convolution_example_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__f32_8c.html new file mode 100644 index 000000000..ba5c552e3 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_copy_f32.c File Reference + + + + + + + + + +
+ +
+

arm_copy_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_copy_f32 (float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__f32_8c_source.html new file mode 100644 index 000000000..7533e382d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__f32_8c_source.html @@ -0,0 +1,160 @@ + + + + +CMSIS DSP Software Library: arm_copy_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__q15_8c.html new file mode 100644 index 000000000..229bcaeea --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_copy_q15.c File Reference + + + + + + + + + +
+ +
+

arm_copy_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_copy_q15 (q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__q15_8c_source.html new file mode 100644 index 000000000..fa1ed3a98 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__q15_8c_source.html @@ -0,0 +1,183 @@ + + + + +CMSIS DSP Software Library: arm_copy_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__q31_8c.html new file mode 100644 index 000000000..b487ad6d2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_copy_q31.c File Reference + + + + + + + + + +
+ +
+

arm_copy_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_copy_q31 (q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__q31_8c_source.html new file mode 100644 index 000000000..4ee3b5b62 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__q31_8c_source.html @@ -0,0 +1,161 @@ + + + + +CMSIS DSP Software Library: arm_copy_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__q7_8c.html new file mode 100644 index 000000000..a655ee2a4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_copy_q7.c File Reference + + + + + + + + + +
+ +
+

arm_copy_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_copy_q7 (q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__q7_8c_source.html new file mode 100644 index 000000000..8c52643a2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__copy__q7_8c_source.html @@ -0,0 +1,159 @@ + + + + +CMSIS DSP Software Library: arm_copy_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__f32_8c.html new file mode 100644 index 000000000..88a960ddd --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_correlate_f32.c File Reference + + + + + + + + + +
+ +
+

arm_correlate_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_correlate_f32 (float32_t *pSrcA, uint32_t srcALen, float32_t *pSrcB, uint32_t srcBLen, float32_t *pDst)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__f32_8c_source.html new file mode 100644 index 000000000..557b9b0fd --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__f32_8c_source.html @@ -0,0 +1,729 @@ + + + + +CMSIS DSP Software Library: arm_correlate_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__fast__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__fast__q15_8c.html new file mode 100644 index 000000000..7d3f2d981 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__fast__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_correlate_fast_q15.c File Reference + + + + + + + + + +
+ +
+

arm_correlate_fast_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_correlate_fast_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__fast__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__fast__q15_8c_source.html new file mode 100644 index 000000000..345b342ec --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__fast__q15_8c_source.html @@ -0,0 +1,658 @@ + + + + +CMSIS DSP Software Library: arm_correlate_fast_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__fast__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__fast__q31_8c.html new file mode 100644 index 000000000..23d3b06e7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__fast__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_correlate_fast_q31.c File Reference + + + + + + + + + +
+ +
+

arm_correlate_fast_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_correlate_fast_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__fast__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__fast__q31_8c_source.html new file mode 100644 index 000000000..39b1af449 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__fast__q31_8c_source.html @@ -0,0 +1,631 @@ + + + + +CMSIS DSP Software Library: arm_correlate_fast_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__q15_8c.html new file mode 100644 index 000000000..4a5a8702b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_correlate_q15.c File Reference + + + + + + + + + +
+ +
+

arm_correlate_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_correlate_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__q15_8c_source.html new file mode 100644 index 000000000..1982577e7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__q15_8c_source.html @@ -0,0 +1,752 @@ + + + + +CMSIS DSP Software Library: arm_correlate_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__q31_8c.html new file mode 100644 index 000000000..0f0122866 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_correlate_q31.c File Reference + + + + + + + + + +
+ +
+

arm_correlate_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_correlate_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__q31_8c_source.html new file mode 100644 index 000000000..d00827c14 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__q31_8c_source.html @@ -0,0 +1,718 @@ + + + + +CMSIS DSP Software Library: arm_correlate_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__q7_8c.html new file mode 100644 index 000000000..7055386cd --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_correlate_q7.c File Reference + + + + + + + + + +
+ +
+

arm_correlate_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_correlate_q7 (q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__q7_8c_source.html new file mode 100644 index 000000000..b86b03714 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__correlate__q7_8c_source.html @@ -0,0 +1,821 @@ + + + + +CMSIS DSP Software Library: arm_correlate_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cos__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cos__f32_8c.html new file mode 100644 index 000000000..137febfe8 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cos__f32_8c.html @@ -0,0 +1,87 @@ + + + + +CMSIS DSP Software Library: arm_cos_f32.c File Reference + + + + + + + + + +
+ +
+

arm_cos_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + +

+Functions

float32_t arm_cos_f32 (float32_t x)

+Variables

static const float32_t cosTable [259]
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cos__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cos__f32_8c_source.html new file mode 100644 index 000000000..4acf4da26 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cos__f32_8c_source.html @@ -0,0 +1,263 @@ + + + + +CMSIS DSP Software Library: arm_cos_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cos__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cos__q15_8c.html new file mode 100644 index 000000000..564549ddb --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cos__q15_8c.html @@ -0,0 +1,87 @@ + + + + +CMSIS DSP Software Library: arm_cos_q15.c File Reference + + + + + + + + + +
+ +
+

arm_cos_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + +

+Functions

q15_t arm_cos_q15 (q15_t x)

+Variables

static const q15_t cosTableQ15 [259]
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cos__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cos__q15_8c_source.html new file mode 100644 index 000000000..21086560b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cos__q15_8c_source.html @@ -0,0 +1,223 @@ + + + + +CMSIS DSP Software Library: arm_cos_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cos__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cos__q31_8c.html new file mode 100644 index 000000000..0448801c4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cos__q31_8c.html @@ -0,0 +1,87 @@ + + + + +CMSIS DSP Software Library: arm_cos_q31.c File Reference + + + + + + + + + +
+ +
+

arm_cos_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + +

+Functions

q31_t arm_cos_q31 (q31_t x)

+Variables

static const q31_t cosTableQ31 [259]
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cos__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cos__q31_8c_source.html new file mode 100644 index 000000000..28a582334 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__cos__q31_8c_source.html @@ -0,0 +1,259 @@ + + + + +CMSIS DSP Software Library: arm_cos_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__f32_8c.html new file mode 100644 index 000000000..ba9322e88 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_dct4_f32.c File Reference + + + + + + + + + +
+ +
+

arm_dct4_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_dct4_f32 (const arm_dct4_instance_f32 *S, float32_t *pState, float32_t *pInlineBuffer)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__f32_8c_source.html new file mode 100644 index 000000000..96213b0c5 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__f32_8c_source.html @@ -0,0 +1,426 @@ + + + + +CMSIS DSP Software Library: arm_dct4_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__init__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__init__f32_8c.html new file mode 100644 index 000000000..21724161b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__init__f32_8c.html @@ -0,0 +1,92 @@ + + + + +CMSIS DSP Software Library: arm_dct4_init_f32.c File Reference + + + + + + + + + +
+ +
+

arm_dct4_init_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

arm_status arm_dct4_init_f32 (arm_dct4_instance_f32 *S, arm_rfft_instance_f32 *S_RFFT, arm_cfft_radix4_instance_f32 *S_CFFT, uint16_t N, uint16_t Nby2, float32_t normalize)

+Variables

static const float32_t Weights_128 [256]
static const float32_t Weights_512 [1024]
static const float32_t Weights_2048 [4096]
static const float32_t cos_factors_128 [128]
static const float32_t cos_factors_512 [512]
static const float32_t cos_factors_2048 [2048]
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__init__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__init__f32_8c_source.html new file mode 100644 index 000000000..480fd6114 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__init__f32_8c_source.html @@ -0,0 +1,4223 @@ + + + + +CMSIS DSP Software Library: arm_dct4_init_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__init__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__init__q15_8c.html new file mode 100644 index 000000000..325fa1d2f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__init__q15_8c.html @@ -0,0 +1,92 @@ + + + + +CMSIS DSP Software Library: arm_dct4_init_q15.c File Reference + + + + + + + + + +
+ +
+

arm_dct4_init_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

arm_status arm_dct4_init_q15 (arm_dct4_instance_q15 *S, arm_rfft_instance_q15 *S_RFFT, arm_cfft_radix4_instance_q15 *S_CFFT, uint16_t N, uint16_t Nby2, q15_t normalize)

+Variables

static const q15_t WeightsQ15_128 [256]
static const q15_t WeightsQ15_512 [1024]
static const q15_t WeightsQ15_2048 [4096]
static const q15_t cos_factorsQ15_128 [128]
static const q15_t cos_factorsQ15_512 [512]
static const q15_t cos_factorsQ15_2048 [2048]
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__init__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__init__q15_8c_source.html new file mode 100644 index 000000000..2dd02feee --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__init__q15_8c_source.html @@ -0,0 +1,1199 @@ + + + + +CMSIS DSP Software Library: arm_dct4_init_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__init__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__init__q31_8c.html new file mode 100644 index 000000000..cdd7741b2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__init__q31_8c.html @@ -0,0 +1,92 @@ + + + + +CMSIS DSP Software Library: arm_dct4_init_q31.c File Reference + + + + + + + + + +
+ +
+

arm_dct4_init_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

arm_status arm_dct4_init_q31 (arm_dct4_instance_q31 *S, arm_rfft_instance_q31 *S_RFFT, arm_cfft_radix4_instance_q31 *S_CFFT, uint16_t N, uint16_t Nby2, q31_t normalize)

+Variables

static const q31_t WeightsQ31_128 [256]
static const q31_t WeightsQ31_512 [1024]
static const q31_t WeightsQ31_2048 [4096]
static const q31_t cos_factorsQ31_128 [128]
static const q31_t cos_factorsQ31_512 [512]
static const q31_t cos_factorsQ31_2048 [2048]
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__init__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__init__q31_8c_source.html new file mode 100644 index 000000000..0ee51b3ec --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__init__q31_8c_source.html @@ -0,0 +1,2207 @@ + + + + +CMSIS DSP Software Library: arm_dct4_init_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__q15_8c.html new file mode 100644 index 000000000..04607282f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_dct4_q15.c File Reference + + + + + + + + + +
+ +
+

arm_dct4_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_dct4_q15 (const arm_dct4_instance_q15 *S, q15_t *pState, q15_t *pInlineBuffer)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__q15_8c_source.html new file mode 100644 index 000000000..58c55a94f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__q15_8c_source.html @@ -0,0 +1,433 @@ + + + + +CMSIS DSP Software Library: arm_dct4_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__q31_8c.html new file mode 100644 index 000000000..1f037ce3e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_dct4_q31.c File Reference + + + + + + + + + +
+ +
+

arm_dct4_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_dct4_q31 (const arm_dct4_instance_q31 *S, q31_t *pState, q31_t *pInlineBuffer)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__q31_8c_source.html new file mode 100644 index 000000000..5ec02833e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dct4__q31_8c_source.html @@ -0,0 +1,433 @@ + + + + +CMSIS DSP Software Library: arm_dct4_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__f32_8c.html new file mode 100644 index 000000000..3089dca9f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_dot_prod_f32.c File Reference + + + + + + + + + +
+ +
+

arm_dot_prod_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_dot_prod_f32 (float32_t *pSrcA, float32_t *pSrcB, uint32_t blockSize, float32_t *result)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__f32_8c_source.html new file mode 100644 index 000000000..514a12ac3 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__f32_8c_source.html @@ -0,0 +1,165 @@ + + + + +CMSIS DSP Software Library: arm_dot_prod_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__q15_8c.html new file mode 100644 index 000000000..abf98621b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_dot_prod_q15.c File Reference + + + + + + + + + +
+ +
+

arm_dot_prod_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_dot_prod_q15 (q15_t *pSrcA, q15_t *pSrcB, uint32_t blockSize, q63_t *result)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__q15_8c_source.html new file mode 100644 index 000000000..f1667c6e2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__q15_8c_source.html @@ -0,0 +1,176 @@ + + + + +CMSIS DSP Software Library: arm_dot_prod_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__q31_8c.html new file mode 100644 index 000000000..f50681beb --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_dot_prod_q31.c File Reference + + + + + + + + + +
+ +
+

arm_dot_prod_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_dot_prod_q31 (q31_t *pSrcA, q31_t *pSrcB, uint32_t blockSize, q63_t *result)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__q31_8c_source.html new file mode 100644 index 000000000..0dcf860e8 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__q31_8c_source.html @@ -0,0 +1,167 @@ + + + + +CMSIS DSP Software Library: arm_dot_prod_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__q7_8c.html new file mode 100644 index 000000000..c12b4bcb2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_dot_prod_q7.c File Reference + + + + + + + + + +
+ +
+

arm_dot_prod_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_dot_prod_q7 (q7_t *pSrcA, q7_t *pSrcB, uint32_t blockSize, q31_t *result)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__q7_8c_source.html new file mode 100644 index 000000000..8103c5eb5 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dot__prod__q7_8c_source.html @@ -0,0 +1,207 @@ + + + + +CMSIS DSP Software Library: arm_dot_prod_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dotproduct__example__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dotproduct__example__f32_8c.html new file mode 100644 index 000000000..891dbbdef --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dotproduct__example__f32_8c.html @@ -0,0 +1,273 @@ + + + + +CMSIS DSP Software Library: arm_dotproduct_example_f32.c File Reference + + + + + + + + + +
+ +
+

arm_dotproduct_example_f32.c File Reference

+
+
+#include <math.h>
+#include "arm_math.h"
+ +

Go to the source code of this file.

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

+Defines

#define MAX_BLOCKSIZE   32
#define DELTA   (0.000001f)

+Functions

int32_t main (void)

+Variables

float32_t srcA_buf_f32 [MAX_BLOCKSIZE]
float32_t srcB_buf_f32 [MAX_BLOCKSIZE]
float32_t refDotProdOut = 5.9273644806352142
float32_t multOutput [MAX_BLOCKSIZE]
float32_t testOutput
arm_status status
+

Define Documentation

+ +
+
+ + + + +
#define MAX_BLOCKSIZE   32
+
+
+ +

Definition at line 76 of file arm_dotproduct_example_f32.c.

+ +
+
+ +
+
+ + + + +
#define DELTA   (0.000001f)
+
+
+ +

Definition at line 77 of file arm_dotproduct_example_f32.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
int32_t main (void  )
+
+
+ +

Definition at line 130 of file arm_dotproduct_example_f32.c.

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
float32_t srcA_buf_f32[MAX_BLOCKSIZE]
+
+
+Initial value:
   
+{   
+-0.4325648115282207,    -1.6655843782380970,    0.1253323064748307,  
+ 0.2876764203585489,    -1.1464713506814637,    1.1909154656429988,  
+ 1.1891642016521031,    -0.0376332765933176,    0.3272923614086541,  
+ 0.1746391428209245,    -0.1867085776814394,    0.7257905482933027,  
+-0.5883165430141887,     2.1831858181971011,   -0.1363958830865957,  
+ 0.1139313135208096,     1.0667682113591888,    0.0592814605236053,  
+-0.0956484054836690,    -0.8323494636500225,    0.2944108163926404,  
+-1.3361818579378040,     0.7143245518189522,    1.6235620644462707,  
+-0.6917757017022868,     0.8579966728282626,    1.2540014216025324,  
+-1.5937295764474768,    -1.4409644319010200,    0.5711476236581780,  
+-0.3998855777153632,     0.6899973754643451 
+}
+
Examples:
arm_dotproduct_example_f32.c.
+
+

Definition at line 86 of file arm_dotproduct_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t srcB_buf_f32[MAX_BLOCKSIZE]
+
+
+Initial value:
   
+{   
+ 1.7491401329284098,    0.1325982188803279,  0.3252281811989881,     
+-0.7938091410349637,    0.3149236145048914, -0.5272704888029532,     
+ 0.9322666565031119,    1.1646643544607362, -2.0456694357357357,     
+-0.6443728590041911,    1.7410657940825480,  0.4867684246821860,     
+ 1.0488288293660140,    1.4885752747099299,  1.2705014969484090,     
+-1.8561241921210170,    2.1343209047321410,  1.4358467535865909,     
+-0.9173023332875400,   -1.1060770780029008,  0.8105708062681296,     
+ 0.6985430696369063,   -0.4015827425012831,  1.2687512030669628,     
+-0.7836083053674872,    0.2132664971465569,  0.7878984786088954,     
+ 0.8966819356782295,   -0.1869172943544062,  1.0131816724341454,     
+ 0.2484350696132857,    0.0596083377937976 
+}
+
Examples:
arm_dotproduct_example_f32.c.
+
+

Definition at line 104 of file arm_dotproduct_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t refDotProdOut = 5.9273644806352142
+
+
+
Examples:
arm_dotproduct_example_f32.c.
+
+

Definition at line 120 of file arm_dotproduct_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t multOutput[MAX_BLOCKSIZE]
+
+
+
Examples:
arm_dotproduct_example_f32.c.
+
+

Definition at line 125 of file arm_dotproduct_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t testOutput
+
+
+ +

Definition at line 126 of file arm_dotproduct_example_f32.c.

+ +
+
+ + +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dotproduct__example__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dotproduct__example__f32_8c_source.html new file mode 100644 index 000000000..e7fa374c5 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__dotproduct__example__f32_8c_source.html @@ -0,0 +1,187 @@ + + + + +CMSIS DSP Software Library: arm_dotproduct_example_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fft__bin__example__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fft__bin__example__f32_8c.html new file mode 100644 index 000000000..bc308320f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fft__bin__example__f32_8c.html @@ -0,0 +1,243 @@ + + + + +CMSIS DSP Software Library: arm_fft_bin_example_f32.c File Reference + + + + + + + + + +
+ +
+

arm_fft_bin_example_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

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

+Defines

#define TEST_LENGTH_SAMPLES   2048

+Functions

int32_t main (void)

+Variables

float32_t testInput_f32_10khz [TEST_LENGTH_SAMPLES]
static float32_t testOutput [TEST_LENGTH_SAMPLES/2]
uint32_t fftSize = 1024
uint32_t ifftFlag = 0
uint32_t doBitReverse = 1
uint32_t refIndex = 213
uint32_t testIndex = 0
+

Define Documentation

+ +
+
+ + + + +
#define TEST_LENGTH_SAMPLES   2048
+
+
+ +

Definition at line 84 of file arm_fft_bin_example_f32.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
int32_t main (void  )
+
+
+ +

Definition at line 106 of file arm_fft_bin_example_f32.c.

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
float32_t testInput_f32_10khz[TEST_LENGTH_SAMPLES]
+
+
+
Examples:
arm_fft_bin_example_f32.c.
+
+
+
+ +
+
+ + + + +
float32_t testOutput[TEST_LENGTH_SAMPLES/2] [static]
+
+
+ +

Definition at line 90 of file arm_fft_bin_example_f32.c.

+ +
+
+ +
+
+ + + + +
uint32_t fftSize = 1024
+
+
+
Examples:
arm_fft_bin_example_f32.c.
+
+

Definition at line 95 of file arm_fft_bin_example_f32.c.

+ +
+
+ +
+
+ + + + +
uint32_t ifftFlag = 0
+
+
+
Examples:
arm_fft_bin_example_f32.c.
+
+

Definition at line 96 of file arm_fft_bin_example_f32.c.

+ +
+
+ +
+
+ + + + +
uint32_t doBitReverse = 1
+
+
+
Examples:
arm_fft_bin_example_f32.c.
+
+

Definition at line 97 of file arm_fft_bin_example_f32.c.

+ +
+
+ +
+
+ + + + +
uint32_t refIndex = 213
+
+
+
Examples:
arm_fft_bin_example_f32.c.
+
+

Definition at line 100 of file arm_fft_bin_example_f32.c.

+ +
+
+ +
+
+ + + + +
uint32_t testIndex = 0
+
+
+
Examples:
arm_fft_bin_example_f32.c.
+
+

Definition at line 100 of file arm_fft_bin_example_f32.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fft__bin__example__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fft__bin__example__f32_8c_source.html new file mode 100644 index 000000000..5c913693c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fft__bin__example__f32_8c_source.html @@ -0,0 +1,163 @@ + + + + +CMSIS DSP Software Library: arm_fft_bin_example_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__f32_8c.html new file mode 100644 index 000000000..6f1d99a93 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fill_f32.c File Reference + + + + + + + + + +
+ +
+

arm_fill_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fill_f32 (float32_t value, float32_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__f32_8c_source.html new file mode 100644 index 000000000..8180689d3 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__f32_8c_source.html @@ -0,0 +1,161 @@ + + + + +CMSIS DSP Software Library: arm_fill_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__q15_8c.html new file mode 100644 index 000000000..ecadb61fc --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fill_q15.c File Reference + + + + + + + + + +
+ +
+

arm_fill_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fill_q15 (q15_t value, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__q15_8c_source.html new file mode 100644 index 000000000..104ed935a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__q15_8c_source.html @@ -0,0 +1,164 @@ + + + + +CMSIS DSP Software Library: arm_fill_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__q31_8c.html new file mode 100644 index 000000000..c8e95662c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fill_q31.c File Reference + + + + + + + + + +
+ +
+

arm_fill_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fill_q31 (q31_t value, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__q31_8c_source.html new file mode 100644 index 000000000..ff91f12b3 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__q31_8c_source.html @@ -0,0 +1,161 @@ + + + + +CMSIS DSP Software Library: arm_fill_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__q7_8c.html new file mode 100644 index 000000000..c46009559 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fill_q7.c File Reference + + + + + + + + + +
+ +
+

arm_fill_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fill_q7 (q7_t value, q7_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__q7_8c_source.html new file mode 100644 index 000000000..3d9697df0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fill__q7_8c_source.html @@ -0,0 +1,162 @@ + + + + +CMSIS DSP Software Library: arm_fill_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__f32_8c.html new file mode 100644 index 000000000..2191d977f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_decimate_f32.c File Reference + + + + + + + + + +
+ +
+

arm_fir_decimate_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_decimate_f32 (const arm_fir_decimate_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__f32_8c_source.html new file mode 100644 index 000000000..08e606564 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__f32_8c_source.html @@ -0,0 +1,344 @@ + + + + +CMSIS DSP Software Library: arm_fir_decimate_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__fast__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__fast__q15_8c.html new file mode 100644 index 000000000..e138f1877 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__fast__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_decimate_fast_q15.c File Reference + + + + + + + + + +
+ +
+

arm_fir_decimate_fast_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_decimate_fast_q15 (const arm_fir_decimate_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__fast__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__fast__q15_8c_source.html new file mode 100644 index 000000000..bd5019168 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__fast__q15_8c_source.html @@ -0,0 +1,238 @@ + + + + +CMSIS DSP Software Library: arm_fir_decimate_fast_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__fast__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__fast__q31_8c.html new file mode 100644 index 000000000..04834a183 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__fast__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_decimate_fast_q31.c File Reference + + + + + + + + + +
+ +
+

arm_fir_decimate_fast_q31.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__fast__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__fast__q31_8c_source.html new file mode 100644 index 000000000..6b965a2eb --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__fast__q31_8c_source.html @@ -0,0 +1,257 @@ + + + + +CMSIS DSP Software Library: arm_fir_decimate_fast_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__init__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__init__f32_8c.html new file mode 100644 index 000000000..648ce3bed --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__init__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_decimate_init_f32.c File Reference + + + + + + + + + +
+ +
+

arm_fir_decimate_init_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

arm_status arm_fir_decimate_init_f32 (arm_fir_decimate_instance_f32 *S, uint16_t numTaps, uint8_t M, float32_t *pCoeffs, float32_t *pState, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__init__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__init__f32_8c_source.html new file mode 100644 index 000000000..d3f76dae6 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__init__f32_8c_source.html @@ -0,0 +1,147 @@ + + + + +CMSIS DSP Software Library: arm_fir_decimate_init_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__init__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__init__q15_8c.html new file mode 100644 index 000000000..c00d58e65 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__init__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_decimate_init_q15.c File Reference + + + + + + + + + +
+ +
+

arm_fir_decimate_init_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

arm_status arm_fir_decimate_init_q15 (arm_fir_decimate_instance_q15 *S, uint16_t numTaps, uint8_t M, q15_t *pCoeffs, q15_t *pState, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__init__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__init__q15_8c_source.html new file mode 100644 index 000000000..efe874022 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__init__q15_8c_source.html @@ -0,0 +1,148 @@ + + + + +CMSIS DSP Software Library: arm_fir_decimate_init_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__init__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__init__q31_8c.html new file mode 100644 index 000000000..7aa5afe07 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__init__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_decimate_init_q31.c File Reference + + + + + + + + + +
+ +
+

arm_fir_decimate_init_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

arm_status arm_fir_decimate_init_q31 (arm_fir_decimate_instance_q31 *S, uint16_t numTaps, uint8_t M, q31_t *pCoeffs, q31_t *pState, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__init__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__init__q31_8c_source.html new file mode 100644 index 000000000..2df1f14fe --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__init__q31_8c_source.html @@ -0,0 +1,147 @@ + + + + +CMSIS DSP Software Library: arm_fir_decimate_init_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__q15_8c.html new file mode 100644 index 000000000..cd67a34ad --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_decimate_q15.c File Reference + + + + + + + + + +
+ +
+

arm_fir_decimate_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_decimate_q15 (const arm_fir_decimate_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__q15_8c_source.html new file mode 100644 index 000000000..00aeb5067 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__q15_8c_source.html @@ -0,0 +1,325 @@ + + + + +CMSIS DSP Software Library: arm_fir_decimate_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__q31_8c.html new file mode 100644 index 000000000..6ecbaaa86 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_decimate_q31.c File Reference + + + + + + + + + +
+ +
+

arm_fir_decimate_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_decimate_q31 (const arm_fir_decimate_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__q31_8c_source.html new file mode 100644 index 000000000..324f51e15 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__decimate__q31_8c_source.html @@ -0,0 +1,344 @@ + + + + +CMSIS DSP Software Library: arm_fir_decimate_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__example__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__example__f32_8c.html new file mode 100644 index 000000000..ee46c0e8e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__example__f32_8c.html @@ -0,0 +1,314 @@ + + + + +CMSIS DSP Software Library: arm_fir_example_f32.c File Reference + + + + + + + + + +
+ +
+

arm_fir_example_f32.c File Reference

+
+
+#include "arm_math.h"
+#include "math_helper.h"
+ +

Go to the source code of this file.

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

+Defines

#define TEST_LENGTH_SAMPLES   320
#define SNR_THRESHOLD_F32   140.0f
#define BLOCK_SIZE   32
#define NUM_TAPS   29

+Functions

int32_t main (void)

+Variables

float32_t testInput_f32_1kHz_15kHz [TEST_LENGTH_SAMPLES]
float32_t refOutput [TEST_LENGTH_SAMPLES]
static float32_t testOutput [TEST_LENGTH_SAMPLES]
static float32_t firStateF32 [BLOCK_SIZE+NUM_TAPS-1]
const float32_t firCoeffs32 [NUM_TAPS]
uint32_t blockSize = BLOCK_SIZE
uint32_t numBlocks = TEST_LENGTH_SAMPLES/BLOCK_SIZE
float32_t snr
+

Define Documentation

+ +
+
+ + + + +
#define TEST_LENGTH_SAMPLES   320
+
+
+ +

Definition at line 116 of file arm_fir_example_f32.c.

+ +
+
+ +
+
+ + + + +
#define SNR_THRESHOLD_F32   140.0f
+
+
+
Examples:
arm_fir_example_f32.c, and arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 117 of file arm_fir_example_f32.c.

+ +
+
+ +
+
+ + + + +
#define BLOCK_SIZE   32
+
+
+
Examples:
arm_fir_example_f32.c.
+
+

Definition at line 118 of file arm_fir_example_f32.c.

+ +
+
+ +
+
+ + + + +
#define NUM_TAPS   29
+
+
+
Examples:
arm_fir_example_f32.c.
+
+

Definition at line 119 of file arm_fir_example_f32.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
int32_t main (void  )
+
+
+ +

Definition at line 166 of file arm_fir_example_f32.c.

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
float32_t testInput_f32_1kHz_15kHz[TEST_LENGTH_SAMPLES]
+
+
+
Examples:
arm_fir_example_f32.c.
+
+
+
+ +
+
+ + + + +
float32_t refOutput[TEST_LENGTH_SAMPLES]
+
+
+
Examples:
arm_fir_example_f32.c.
+
+
+
+ +
+
+ + + + +
float32_t testOutput[TEST_LENGTH_SAMPLES] [static]
+
+
+ +

Definition at line 133 of file arm_fir_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t firStateF32[BLOCK_SIZE+NUM_TAPS-1] [static]
+
+
+ +

Definition at line 139 of file arm_fir_example_f32.c.

+ +
+
+ +
+
+ + + + +
const float32_t firCoeffs32[NUM_TAPS]
+
+
+Initial value:
 { 
+-0.0018225230f, -0.0015879294f, +0.0000000000f, +0.0036977508f, +0.0080754303f, +0.0085302217f, -0.0000000000f, -0.0173976984f, 
+-0.0341458607f, -0.0333591565f, +0.0000000000f, +0.0676308395f, +0.1522061835f, +0.2229246956f, +0.2504960933f, +0.2229246956f, 
++0.1522061835f, +0.0676308395f, +0.0000000000f, -0.0333591565f, -0.0341458607f, -0.0173976984f, -0.0000000000f, +0.0085302217f, 
++0.0080754303f, +0.0036977508f, +0.0000000000f, -0.0015879294f, -0.0018225230f 
+}
+
Examples:
arm_fir_example_f32.c.
+
+

Definition at line 146 of file arm_fir_example_f32.c.

+ +
+
+ +
+
+ + + + +
uint32_t blockSize = BLOCK_SIZE
+
+ +
+ +
+
+ + + + +
uint32_t numBlocks = TEST_LENGTH_SAMPLES/BLOCK_SIZE
+
+
+
Examples:
arm_fir_example_f32.c.
+
+

Definition at line 158 of file arm_fir_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t snr
+
+
+ +

Definition at line 160 of file arm_fir_example_f32.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__example__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__example__f32_8c_source.html new file mode 100644 index 000000000..fe4d3aacf --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__example__f32_8c_source.html @@ -0,0 +1,208 @@ + + + + +CMSIS DSP Software Library: arm_fir_example_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__f32_8c.html new file mode 100644 index 000000000..a3da1e9a0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_f32.c File Reference + + + + + + + + + +
+ +
+

arm_fir_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_f32 (const arm_fir_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__f32_8c_source.html new file mode 100644 index 000000000..e817d7c53 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__f32_8c_source.html @@ -0,0 +1,416 @@ + + + + +CMSIS DSP Software Library: arm_fir_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__fast__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__fast__q15_8c.html new file mode 100644 index 000000000..8ba6f405d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__fast__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_fast_q15.c File Reference + + + + + + + + + +
+ +
+

arm_fir_fast_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_fast_q15 (const arm_fir_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__fast__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__fast__q15_8c_source.html new file mode 100644 index 000000000..93947ef70 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__fast__q15_8c_source.html @@ -0,0 +1,320 @@ + + + + +CMSIS DSP Software Library: arm_fir_fast_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__fast__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__fast__q31_8c.html new file mode 100644 index 000000000..60079ce25 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__fast__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_fast_q31.c File Reference + + + + + + + + + +
+ +
+

arm_fir_fast_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_fast_q31 (const arm_fir_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__fast__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__fast__q31_8c_source.html new file mode 100644 index 000000000..cb4ececa9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__fast__q31_8c_source.html @@ -0,0 +1,342 @@ + + + + +CMSIS DSP Software Library: arm_fir_fast_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__f32_8c.html new file mode 100644 index 000000000..ea1fb6171 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_init_f32.c File Reference + + + + + + + + + +
+ +
+

arm_fir_init_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_init_f32 (arm_fir_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__f32_8c_source.html new file mode 100644 index 000000000..923683c0e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__f32_8c_source.html @@ -0,0 +1,131 @@ + + + + +CMSIS DSP Software Library: arm_fir_init_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__q15_8c.html new file mode 100644 index 000000000..e072bfeb2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_init_q15.c File Reference + + + + + + + + + +
+ +
+

arm_fir_init_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

arm_status arm_fir_init_q15 (arm_fir_instance_q15 *S, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__q15_8c_source.html new file mode 100644 index 000000000..1eed9131f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__q15_8c_source.html @@ -0,0 +1,172 @@ + + + + +CMSIS DSP Software Library: arm_fir_init_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__q31_8c.html new file mode 100644 index 000000000..cbd399b7f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_init_q31.c File Reference + + + + + + + + + +
+ +
+

arm_fir_init_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_init_q31 (arm_fir_instance_q31 *S, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__q31_8c_source.html new file mode 100644 index 000000000..8f9f0258e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__q31_8c_source.html @@ -0,0 +1,131 @@ + + + + +CMSIS DSP Software Library: arm_fir_init_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__q7_8c.html new file mode 100644 index 000000000..1f1549f77 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_init_q7.c File Reference + + + + + + + + + +
+ +
+

arm_fir_init_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_init_q7 (arm_fir_instance_q7 *S, uint16_t numTaps, q7_t *pCoeffs, q7_t *pState, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__q7_8c_source.html new file mode 100644 index 000000000..f9735f00e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__init__q7_8c_source.html @@ -0,0 +1,132 @@ + + + + +CMSIS DSP Software Library: arm_fir_init_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__f32_8c.html new file mode 100644 index 000000000..b572895df --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_interpolate_f32.c File Reference + + + + + + + + + +
+ +
+

arm_fir_interpolate_f32.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__f32_8c_source.html new file mode 100644 index 000000000..562656f64 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__f32_8c_source.html @@ -0,0 +1,369 @@ + + + + +CMSIS DSP Software Library: arm_fir_interpolate_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__init__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__init__f32_8c.html new file mode 100644 index 000000000..e728cda15 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__init__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_interpolate_init_f32.c File Reference + + + + + + + + + +
+ +
+

arm_fir_interpolate_init_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

arm_status arm_fir_interpolate_init_f32 (arm_fir_interpolate_instance_f32 *S, uint8_t L, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__init__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__init__f32_8c_source.html new file mode 100644 index 000000000..da0b1022a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__init__f32_8c_source.html @@ -0,0 +1,150 @@ + + + + +CMSIS DSP Software Library: arm_fir_interpolate_init_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__init__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__init__q15_8c.html new file mode 100644 index 000000000..8770df289 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__init__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_interpolate_init_q15.c File Reference + + + + + + + + + +
+ +
+

arm_fir_interpolate_init_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

arm_status arm_fir_interpolate_init_q15 (arm_fir_interpolate_instance_q15 *S, uint8_t L, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__init__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__init__q15_8c_source.html new file mode 100644 index 000000000..9c48e936e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__init__q15_8c_source.html @@ -0,0 +1,149 @@ + + + + +CMSIS DSP Software Library: arm_fir_interpolate_init_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__init__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__init__q31_8c.html new file mode 100644 index 000000000..9a0a55f02 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__init__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_interpolate_init_q31.c File Reference + + + + + + + + + +
+ +
+

arm_fir_interpolate_init_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

arm_status arm_fir_interpolate_init_q31 (arm_fir_interpolate_instance_q31 *S, uint8_t L, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__init__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__init__q31_8c_source.html new file mode 100644 index 000000000..7d7407d1a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__init__q31_8c_source.html @@ -0,0 +1,149 @@ + + + + +CMSIS DSP Software Library: arm_fir_interpolate_init_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__q15_8c.html new file mode 100644 index 000000000..48d14c673 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_interpolate_q15.c File Reference + + + + + + + + + +
+ +
+

arm_fir_interpolate_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_interpolate_q15 (const arm_fir_interpolate_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__q15_8c_source.html new file mode 100644 index 000000000..526d1aa0e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__q15_8c_source.html @@ -0,0 +1,392 @@ + + + + +CMSIS DSP Software Library: arm_fir_interpolate_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__q31_8c.html new file mode 100644 index 000000000..40bd2e7c4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_interpolate_q31.c File Reference + + + + + + + + + +
+ +
+

arm_fir_interpolate_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_interpolate_q31 (const arm_fir_interpolate_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__q31_8c_source.html new file mode 100644 index 000000000..2649b86f8 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__interpolate__q31_8c_source.html @@ -0,0 +1,382 @@ + + + + +CMSIS DSP Software Library: arm_fir_interpolate_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__f32_8c.html new file mode 100644 index 000000000..23fbdc79e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_lattice_f32.c File Reference + + + + + + + + + +
+ +
+

arm_fir_lattice_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_lattice_f32 (const arm_fir_lattice_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__f32_8c_source.html new file mode 100644 index 000000000..d49d77141 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__f32_8c_source.html @@ -0,0 +1,480 @@ + + + + +CMSIS DSP Software Library: arm_fir_lattice_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__init__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__init__f32_8c.html new file mode 100644 index 000000000..630fb1011 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__init__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_lattice_init_f32.c File Reference + + + + + + + + + +
+ +
+

arm_fir_lattice_init_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_lattice_init_f32 (arm_fir_lattice_instance_f32 *S, uint16_t numStages, float32_t *pCoeffs, float32_t *pState)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__init__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__init__f32_8c_source.html new file mode 100644 index 000000000..efc2413ab --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__init__f32_8c_source.html @@ -0,0 +1,127 @@ + + + + +CMSIS DSP Software Library: arm_fir_lattice_init_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__init__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__init__q15_8c.html new file mode 100644 index 000000000..3819d4584 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__init__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_lattice_init_q15.c File Reference + + + + + + + + + +
+ +
+

arm_fir_lattice_init_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_lattice_init_q15 (arm_fir_lattice_instance_q15 *S, uint16_t numStages, q15_t *pCoeffs, q15_t *pState)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__init__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__init__q15_8c_source.html new file mode 100644 index 000000000..807445000 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__init__q15_8c_source.html @@ -0,0 +1,127 @@ + + + + +CMSIS DSP Software Library: arm_fir_lattice_init_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__init__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__init__q31_8c.html new file mode 100644 index 000000000..3caba1a99 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__init__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_lattice_init_q31.c File Reference + + + + + + + + + +
+ +
+

arm_fir_lattice_init_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_lattice_init_q31 (arm_fir_lattice_instance_q31 *S, uint16_t numStages, q31_t *pCoeffs, q31_t *pState)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__init__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__init__q31_8c_source.html new file mode 100644 index 000000000..2406c9436 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__init__q31_8c_source.html @@ -0,0 +1,127 @@ + + + + +CMSIS DSP Software Library: arm_fir_lattice_init_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__q15_8c.html new file mode 100644 index 000000000..ba6230ffd --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_lattice_q15.c File Reference + + + + + + + + + +
+ +
+

arm_fir_lattice_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_lattice_q15 (const arm_fir_lattice_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__q15_8c_source.html new file mode 100644 index 000000000..3f58e8c78 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__q15_8c_source.html @@ -0,0 +1,579 @@ + + + + +CMSIS DSP Software Library: arm_fir_lattice_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__q31_8c.html new file mode 100644 index 000000000..cd8ecfbdb --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_lattice_q31.c File Reference + + + + + + + + + +
+ +
+

arm_fir_lattice_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_lattice_q31 (const arm_fir_lattice_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__q31_8c_source.html new file mode 100644 index 000000000..c67c9f8e7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__lattice__q31_8c_source.html @@ -0,0 +1,487 @@ + + + + +CMSIS DSP Software Library: arm_fir_lattice_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__q15_8c.html new file mode 100644 index 000000000..584d68923 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_q15.c File Reference + + + + + + + + + +
+ +
+

arm_fir_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_q15 (const arm_fir_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__q15_8c_source.html new file mode 100644 index 000000000..a72742ce4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__q15_8c_source.html @@ -0,0 +1,408 @@ + + + + +CMSIS DSP Software Library: arm_fir_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__q31_8c.html new file mode 100644 index 000000000..3cdf06aa5 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_q31.c File Reference + + + + + + + + + +
+ +
+

arm_fir_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_q31 (const arm_fir_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__q31_8c_source.html new file mode 100644 index 000000000..180d2cdaa --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__q31_8c_source.html @@ -0,0 +1,424 @@ + + + + +CMSIS DSP Software Library: arm_fir_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__q7_8c.html new file mode 100644 index 000000000..3eb3d09d8 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_q7.c File Reference + + + + + + + + + +
+ +
+

arm_fir_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_q7 (const arm_fir_instance_q7 *S, q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__q7_8c_source.html new file mode 100644 index 000000000..a53eeb3f5 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__q7_8c_source.html @@ -0,0 +1,429 @@ + + + + +CMSIS DSP Software Library: arm_fir_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__f32_8c.html new file mode 100644 index 000000000..15470fc35 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_f32.c File Reference + + + + + + + + + +
+ +
+

arm_fir_sparse_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_sparse_f32 (arm_fir_sparse_instance_f32 *S, float32_t *pSrc, float32_t *pDst, float32_t *pScratchIn, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__f32_8c_source.html new file mode 100644 index 000000000..d718ec19e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__f32_8c_source.html @@ -0,0 +1,353 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__f32_8c.html new file mode 100644 index 000000000..d51dbc8f2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_init_f32.c File Reference + + + + + + + + + +
+ +
+

arm_fir_sparse_init_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_sparse_init_f32 (arm_fir_sparse_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, int32_t *pTapDelay, uint16_t maxDelay, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__f32_8c_source.html new file mode 100644 index 000000000..71362e37c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__f32_8c_source.html @@ -0,0 +1,139 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_init_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__q15_8c.html new file mode 100644 index 000000000..037f0f558 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_init_q15.c File Reference + + + + + + + + + +
+ +
+

arm_fir_sparse_init_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_sparse_init_q15 (arm_fir_sparse_instance_q15 *S, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, int32_t *pTapDelay, uint16_t maxDelay, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__q15_8c_source.html new file mode 100644 index 000000000..fc1d6873e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__q15_8c_source.html @@ -0,0 +1,139 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_init_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__q31_8c.html new file mode 100644 index 000000000..21f6344e7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_init_q31.c File Reference + + + + + + + + + +
+ +
+

arm_fir_sparse_init_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_sparse_init_q31 (arm_fir_sparse_instance_q31 *S, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, int32_t *pTapDelay, uint16_t maxDelay, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__q31_8c_source.html new file mode 100644 index 000000000..b943d7f2f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__q31_8c_source.html @@ -0,0 +1,139 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_init_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__q7_8c.html new file mode 100644 index 000000000..58985ec53 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_init_q7.c File Reference + + + + + + + + + +
+ +
+

arm_fir_sparse_init_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_sparse_init_q7 (arm_fir_sparse_instance_q7 *S, uint16_t numTaps, q7_t *pCoeffs, q7_t *pState, int32_t *pTapDelay, uint16_t maxDelay, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__q7_8c_source.html new file mode 100644 index 000000000..4a75391d6 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__init__q7_8c_source.html @@ -0,0 +1,139 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_init_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__q15_8c.html new file mode 100644 index 000000000..0105940ce --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_q15.c File Reference + + + + + + + + + +
+ +
+

arm_fir_sparse_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_sparse_q15 (arm_fir_sparse_instance_q15 *S, q15_t *pSrc, q15_t *pDst, q15_t *pScratchIn, q31_t *pScratchOut, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__q15_8c_source.html new file mode 100644 index 000000000..88a9a3c59 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__q15_8c_source.html @@ -0,0 +1,447 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__q31_8c.html new file mode 100644 index 000000000..a804e8407 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_q31.c File Reference + + + + + + + + + +
+ +
+

arm_fir_sparse_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_sparse_q31 (arm_fir_sparse_instance_q31 *S, q31_t *pSrc, q31_t *pDst, q31_t *pScratchIn, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__q31_8c_source.html new file mode 100644 index 000000000..73c759049 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__q31_8c_source.html @@ -0,0 +1,414 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__q7_8c.html new file mode 100644 index 000000000..e972a6985 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_q7.c File Reference + + + + + + + + + +
+ +
+

arm_fir_sparse_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_fir_sparse_q7 (arm_fir_sparse_instance_q7 *S, q7_t *pSrc, q7_t *pDst, q7_t *pScratchIn, q31_t *pScratchOut, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__q7_8c_source.html new file mode 100644 index 000000000..1ea85908c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__fir__sparse__q7_8c_source.html @@ -0,0 +1,435 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__float__to__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__float__to__q15_8c.html new file mode 100644 index 000000000..e111bf66e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__float__to__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_float_to_q15.c File Reference + + + + + + + + + +
+ +
+

arm_float_to_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_float_to_q15 (float32_t *pSrc, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__float__to__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__float__to__q15_8c_source.html new file mode 100644 index 000000000..33fe5504b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__float__to__q15_8c_source.html @@ -0,0 +1,230 @@ + + + + +CMSIS DSP Software Library: arm_float_to_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__float__to__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__float__to__q31_8c.html new file mode 100644 index 000000000..3f66fd8cc --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__float__to__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_float_to_q31.c File Reference + + + + + + + + + +
+ +
+

arm_float_to_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_float_to_q31 (float32_t *pSrc, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__float__to__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__float__to__q31_8c_source.html new file mode 100644 index 000000000..5fb55c3de --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__float__to__q31_8c_source.html @@ -0,0 +1,233 @@ + + + + +CMSIS DSP Software Library: arm_float_to_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__float__to__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__float__to__q7_8c.html new file mode 100644 index 000000000..7ef7c9886 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__float__to__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_float_to_q7.c File Reference + + + + + + + + + +
+ +
+

arm_float_to_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_float_to_q7 (float32_t *pSrc, q7_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__float__to__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__float__to__q7_8c_source.html new file mode 100644 index 000000000..844731d5f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__float__to__q7_8c_source.html @@ -0,0 +1,230 @@ + + + + +CMSIS DSP Software Library: arm_float_to_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__graphic__equalizer__example__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__graphic__equalizer__example__q31_8c.html new file mode 100644 index 000000000..7fb393a1d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__graphic__equalizer__example__q31_8c.html @@ -0,0 +1,414 @@ + + + + +CMSIS DSP Software Library: arm_graphic_equalizer_example_q31.c File Reference + + + + + + + + + +
+ +
+

arm_graphic_equalizer_example_q31.c File Reference

+
+
+#include "arm_math.h"
+#include "math_helper.h"
+ +

Go to the source code of this file.

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

+Defines

#define TESTLENGTH   320
#define BLOCKSIZE   32
#define NUMBLOCKS   (TESTLENGTH/BLOCKSIZE)
#define NUMSTAGES   2
#define SNR_THRESHOLD_F32   98

+Functions

int32_t main (void)

+Variables

float32_t testInput_f32 [TESTLENGTH]
static float32_t testOutput [TESTLENGTH]
float32_t testRefOutput_f32 [TESTLENGTH]
static q63_t biquadStateBand1Q31 [4 *2]
static q63_t biquadStateBand2Q31 [4 *2]
static q31_t biquadStateBand3Q31 [4 *2]
static q31_t biquadStateBand4Q31 [4 *2]
static q31_t biquadStateBand5Q31 [4 *2]
q31_t inputQ31 [BLOCKSIZE]
q31_t outputQ31 [BLOCKSIZE]
const q31_t coeffTable [950]
int gainDB [5] = {0, -3, 6, 4, -6}
float32_t snr
+

Define Documentation

+ +
+
+ + + + +
#define TESTLENGTH   320
+
+
+
Examples:
arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 117 of file arm_graphic_equalizer_example_q31.c.

+ +
+
+ +
+
+ + + + +
#define BLOCKSIZE   32
+
+ +
+ +
+
+ + + + +
#define NUMBLOCKS   (TESTLENGTH/BLOCKSIZE)
+
+
+
Examples:
arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 123 of file arm_graphic_equalizer_example_q31.c.

+ +
+
+ +
+
+ + + + +
#define NUMSTAGES   2
+
+
+
Examples:
arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 126 of file arm_graphic_equalizer_example_q31.c.

+ +
+
+ +
+
+ + + + +
#define SNR_THRESHOLD_F32   98
+
+
+ +

Definition at line 128 of file arm_graphic_equalizer_example_q31.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
int32_t main (void  )
+
+
+ +

Definition at line 285 of file arm_graphic_equalizer_example_q31.c.

+ +
+
+

Variable Documentation

+ + + +
+
+ + + + +
float32_t testOutput[TESTLENGTH] [static]
+
+
+ +

Definition at line 135 of file arm_graphic_equalizer_example_q31.c.

+ +
+
+ +
+
+ + + + +
float32_t testRefOutput_f32[TESTLENGTH]
+
+
+ +

Definition at line 141 of file arm_convolution_example_f32.c.

+ +
+
+ +
+
+ + + + +
q63_t biquadStateBand1Q31[4 *2] [static]
+
+
+
Examples:
arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 143 of file arm_graphic_equalizer_example_q31.c.

+ +
+
+ +
+
+ + + + +
q63_t biquadStateBand2Q31[4 *2] [static]
+
+
+
Examples:
arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 144 of file arm_graphic_equalizer_example_q31.c.

+ +
+
+ +
+
+ + + + +
q31_t biquadStateBand3Q31[4 *2] [static]
+
+
+
Examples:
arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 145 of file arm_graphic_equalizer_example_q31.c.

+ +
+
+ +
+
+ + + + +
q31_t biquadStateBand4Q31[4 *2] [static]
+
+
+
Examples:
arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 146 of file arm_graphic_equalizer_example_q31.c.

+ +
+
+ +
+
+ + + + +
q31_t biquadStateBand5Q31[4 *2] [static]
+
+
+
Examples:
arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 147 of file arm_graphic_equalizer_example_q31.c.

+ +
+
+ +
+
+ + + + +
q31_t inputQ31[BLOCKSIZE]
+
+
+
Examples:
arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 153 of file arm_graphic_equalizer_example_q31.c.

+ +
+
+ +
+
+ + + + +
q31_t outputQ31[BLOCKSIZE]
+
+
+
Examples:
arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 154 of file arm_graphic_equalizer_example_q31.c.

+ +
+
+ +
+
+ + + + +
const q31_t coeffTable[950]
+
+
+
Examples:
arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 167 of file arm_graphic_equalizer_example_q31.c.

+ +
+
+ +
+
+ + + + +
int gainDB[5] = {0, -3, 6, 4, -6}
+
+
+
Examples:
arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 276 of file arm_graphic_equalizer_example_q31.c.

+ +
+
+ +
+
+ + + + +
float32_t snr
+
+
+ +

Definition at line 278 of file arm_graphic_equalizer_example_q31.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__graphic__equalizer__example__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__graphic__equalizer__example__q31_8c_source.html new file mode 100644 index 000000000..c131db8d9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__graphic__equalizer__example__q31_8c_source.html @@ -0,0 +1,377 @@ + + + + +CMSIS DSP Software Library: arm_graphic_equalizer_example_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__f32_8c.html new file mode 100644 index 000000000..53bf9ebf2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_iir_lattice_f32.c File Reference + + + + + + + + + +
+ +
+

arm_iir_lattice_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_iir_lattice_f32 (const arm_iir_lattice_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__f32_8c_source.html new file mode 100644 index 000000000..829588e47 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__f32_8c_source.html @@ -0,0 +1,387 @@ + + + + +CMSIS DSP Software Library: arm_iir_lattice_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__init__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__init__f32_8c.html new file mode 100644 index 000000000..0e1ff1094 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__init__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_iir_lattice_init_f32.c File Reference + + + + + + + + + +
+ +
+

arm_iir_lattice_init_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_iir_lattice_init_f32 (arm_iir_lattice_instance_f32 *S, uint16_t numStages, float32_t *pkCoeffs, float32_t *pvCoeffs, float32_t *pState, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__init__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__init__f32_8c_source.html new file mode 100644 index 000000000..606ef4f0d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__init__f32_8c_source.html @@ -0,0 +1,133 @@ + + + + +CMSIS DSP Software Library: arm_iir_lattice_init_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__init__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__init__q15_8c.html new file mode 100644 index 000000000..29f5ab521 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__init__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_iir_lattice_init_q15.c File Reference + + + + + + + + + +
+ +
+

arm_iir_lattice_init_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_iir_lattice_init_q15 (arm_iir_lattice_instance_q15 *S, uint16_t numStages, q15_t *pkCoeffs, q15_t *pvCoeffs, q15_t *pState, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__init__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__init__q15_8c_source.html new file mode 100644 index 000000000..1fcbc32ef --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__init__q15_8c_source.html @@ -0,0 +1,133 @@ + + + + +CMSIS DSP Software Library: arm_iir_lattice_init_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__init__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__init__q31_8c.html new file mode 100644 index 000000000..659c893c9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__init__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_iir_lattice_init_q31.c File Reference + + + + + + + + + +
+ +
+

arm_iir_lattice_init_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_iir_lattice_init_q31 (arm_iir_lattice_instance_q31 *S, uint16_t numStages, q31_t *pkCoeffs, q31_t *pvCoeffs, q31_t *pState, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__init__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__init__q31_8c_source.html new file mode 100644 index 000000000..88562443f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__init__q31_8c_source.html @@ -0,0 +1,133 @@ + + + + +CMSIS DSP Software Library: arm_iir_lattice_init_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__q15_8c.html new file mode 100644 index 000000000..8c1d940ff --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_iir_lattice_q15.c File Reference + + + + + + + + + +
+ +
+

arm_iir_lattice_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_iir_lattice_q15 (const arm_iir_lattice_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__q15_8c_source.html new file mode 100644 index 000000000..a3c70e0fb --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__q15_8c_source.html @@ -0,0 +1,445 @@ + + + + +CMSIS DSP Software Library: arm_iir_lattice_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__q31_8c.html new file mode 100644 index 000000000..2fc40f912 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_iir_lattice_q31.c File Reference + + + + + + + + + +
+ +
+

arm_iir_lattice_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_iir_lattice_q31 (const arm_iir_lattice_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__q31_8c_source.html new file mode 100644 index 000000000..11fcf393d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__iir__lattice__q31_8c_source.html @@ -0,0 +1,385 @@ + + + + +CMSIS DSP Software Library: arm_iir_lattice_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__linear__interp__example__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__linear__interp__example__f32_8c.html new file mode 100644 index 000000000..ce0395860 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__linear__interp__example__f32_8c.html @@ -0,0 +1,287 @@ + + + + +CMSIS DSP Software Library: arm_linear_interp_example_f32.c File Reference + + + + + + + + + +
+ +
+

arm_linear_interp_example_f32.c File Reference

+
+
+#include "arm_math.h"
+#include "math_helper.h"
+ +

Go to the source code of this file.

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

+Defines

#define SNR_THRESHOLD   90
#define TEST_LENGTH_SAMPLES   10
#define XSPACING   (0.00005f)

+Functions

int32_t main (void)

+Variables

float32_t testInputSin_f32 [TEST_LENGTH_SAMPLES]
float32_t testRefSinOutput32_f32 [TEST_LENGTH_SAMPLES]
float32_t testOutput [TEST_LENGTH_SAMPLES]
float32_t testLinIntOutput [TEST_LENGTH_SAMPLES]
float32_t arm_linear_interep_table [188495]
float32_t snr1
float32_t snr2
+

Define Documentation

+ +
+
+ + + + +
#define SNR_THRESHOLD   90
+
+
+ +

Definition at line 73 of file arm_linear_interp_example_f32.c.

+ +
+
+ +
+
+ + + + +
#define TEST_LENGTH_SAMPLES   10
+
+
+ +

Definition at line 74 of file arm_linear_interp_example_f32.c.

+ +
+
+ +
+
+ + + + +
#define XSPACING   (0.00005f)
+
+
+
Examples:
arm_linear_interp_example_f32.c.
+
+

Definition at line 75 of file arm_linear_interp_example_f32.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
int32_t main (void  )
+
+
+ +

Definition at line 123 of file arm_linear_interp_example_f32.c.

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
float32_t testInputSin_f32[TEST_LENGTH_SAMPLES]
+
+
+Initial value:
  
+{
+    -0.649716504673081170,  -2.501723745497831200,  0.188250329003310100,   0.432092748487532540,   -1.722010988459680800,  1.788766476323060600,   1.786136060975809500,   -0.056525543169408797,  
+    0.491596272728153760,   0.262309671126153390   
+}
+
Examples:
arm_linear_interp_example_f32.c.
+
+

Definition at line 83 of file arm_linear_interp_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t testRefSinOutput32_f32[TEST_LENGTH_SAMPLES]
+
+
+Initial value:
   
+{
+    -0.604960695383043530,  -0.597090287967934840,  0.187140422442966500,   0.418772124875992690,   -0.988588831792106880,  0.976338412038794010,   0.976903856413481100,   -0.056495446835214236,  
+    0.472033731854734240,   0.259311907228582830
+}
+
Examples:
arm_linear_interp_example_f32.c.
+
+

Definition at line 93 of file arm_linear_interp_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t testOutput[TEST_LENGTH_SAMPLES]
+
+
+ +

Definition at line 102 of file arm_linear_interp_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t testLinIntOutput[TEST_LENGTH_SAMPLES]
+
+
+
Examples:
arm_linear_interp_example_f32.c.
+
+

Definition at line 107 of file arm_linear_interp_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t arm_linear_interep_table[188495]
+
+ +
+ +
+
+ + + + +
float32_t snr1
+
+
+
Examples:
arm_linear_interp_example_f32.c.
+
+

Definition at line 117 of file arm_linear_interp_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t snr2
+
+
+
Examples:
arm_linear_interp_example_f32.c.
+
+

Definition at line 118 of file arm_linear_interp_example_f32.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__linear__interp__example__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__linear__interp__example__f32_8c_source.html new file mode 100644 index 000000000..3fe9dee55 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__linear__interp__example__f32_8c_source.html @@ -0,0 +1,207 @@ + + + + +CMSIS DSP Software Library: arm_linear_interp_example_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__f32_8c.html new file mode 100644 index 000000000..f76d8032d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_lms_f32.c File Reference + + + + + + + + + +
+ +
+

arm_lms_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_lms_f32 (const arm_lms_instance_f32 *S, float32_t *pSrc, float32_t *pRef, float32_t *pOut, float32_t *pErr, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__f32_8c_source.html new file mode 100644 index 000000000..1787962b6 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__f32_8c_source.html @@ -0,0 +1,366 @@ + + + + +CMSIS DSP Software Library: arm_lms_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__init__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__init__f32_8c.html new file mode 100644 index 000000000..95d892874 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__init__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_lms_init_f32.c File Reference + + + + + + + + + +
+ +
+

arm_lms_init_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_lms_init_f32 (arm_lms_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, float32_t mu, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__init__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__init__f32_8c_source.html new file mode 100644 index 000000000..7be3e8b57 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__init__f32_8c_source.html @@ -0,0 +1,131 @@ + + + + +CMSIS DSP Software Library: arm_lms_init_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__init__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__init__q15_8c.html new file mode 100644 index 000000000..6b2b59386 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__init__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_lms_init_q15.c File Reference + + + + + + + + + +
+ +
+

arm_lms_init_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_lms_init_q15 (arm_lms_instance_q15 *S, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, q15_t mu, uint32_t blockSize, uint32_t postShift)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__init__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__init__q15_8c_source.html new file mode 100644 index 000000000..d7485e933 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__init__q15_8c_source.html @@ -0,0 +1,136 @@ + + + + +CMSIS DSP Software Library: arm_lms_init_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__init__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__init__q31_8c.html new file mode 100644 index 000000000..65e5481b2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__init__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_lms_init_q31.c File Reference + + + + + + + + + +
+ +
+

arm_lms_init_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_lms_init_q31 (arm_lms_instance_q31 *S, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, q31_t mu, uint32_t blockSize, uint32_t postShift)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__init__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__init__q31_8c_source.html new file mode 100644 index 000000000..3f31d6739 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__init__q31_8c_source.html @@ -0,0 +1,136 @@ + + + + +CMSIS DSP Software Library: arm_lms_init_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__f32_8c.html new file mode 100644 index 000000000..09bae676d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_lms_norm_f32.c File Reference + + + + + + + + + +
+ +
+

arm_lms_norm_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_lms_norm_f32 (arm_lms_norm_instance_f32 *S, float32_t *pSrc, float32_t *pRef, float32_t *pOut, float32_t *pErr, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__f32_8c_source.html new file mode 100644 index 000000000..1b609babd --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__f32_8c_source.html @@ -0,0 +1,398 @@ + + + + +CMSIS DSP Software Library: arm_lms_norm_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__init__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__init__f32_8c.html new file mode 100644 index 000000000..34ace1466 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__init__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_lms_norm_init_f32.c File Reference + + + + + + + + + +
+ +
+

arm_lms_norm_init_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_lms_norm_init_f32 (arm_lms_norm_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, float32_t mu, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__init__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__init__f32_8c_source.html new file mode 100644 index 000000000..813bda8fa --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__init__f32_8c_source.html @@ -0,0 +1,138 @@ + + + + +CMSIS DSP Software Library: arm_lms_norm_init_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__init__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__init__q15_8c.html new file mode 100644 index 000000000..37afc9259 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__init__q15_8c.html @@ -0,0 +1,84 @@ + + + + +CMSIS DSP Software Library: arm_lms_norm_init_q15.c File Reference + + + + + + + + + +
+ +
+

arm_lms_norm_init_q15.c File Reference

+
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_lms_norm_init_q15 (arm_lms_norm_instance_q15 *S, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, q15_t mu, uint32_t blockSize, uint8_t postShift)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__init__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__init__q15_8c_source.html new file mode 100644 index 000000000..f98cc7f5d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__init__q15_8c_source.html @@ -0,0 +1,146 @@ + + + + +CMSIS DSP Software Library: arm_lms_norm_init_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__init__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__init__q31_8c.html new file mode 100644 index 000000000..5f523b912 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__init__q31_8c.html @@ -0,0 +1,84 @@ + + + + +CMSIS DSP Software Library: arm_lms_norm_init_q31.c File Reference + + + + + + + + + +
+ +
+

arm_lms_norm_init_q31.c File Reference

+
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_lms_norm_init_q31 (arm_lms_norm_instance_q31 *S, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, q31_t mu, uint32_t blockSize, uint8_t postShift)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__init__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__init__q31_8c_source.html new file mode 100644 index 000000000..b257f2227 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__init__q31_8c_source.html @@ -0,0 +1,146 @@ + + + + +CMSIS DSP Software Library: arm_lms_norm_init_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__q15_8c.html new file mode 100644 index 000000000..12852f9a7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_lms_norm_q15.c File Reference + + + + + + + + + +
+ +
+

arm_lms_norm_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_lms_norm_q15 (arm_lms_norm_instance_q15 *S, q15_t *pSrc, q15_t *pRef, q15_t *pOut, q15_t *pErr, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__q15_8c_source.html new file mode 100644 index 000000000..efe324a32 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__q15_8c_source.html @@ -0,0 +1,420 @@ + + + + +CMSIS DSP Software Library: arm_lms_norm_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__q31_8c.html new file mode 100644 index 000000000..dc1d25b97 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_lms_norm_q31.c File Reference + + + + + + + + + +
+ +
+

arm_lms_norm_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_lms_norm_q31 (arm_lms_norm_instance_q31 *S, q31_t *pSrc, q31_t *pRef, q31_t *pOut, q31_t *pErr, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__q31_8c_source.html new file mode 100644 index 000000000..e857f90ff --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__norm__q31_8c_source.html @@ -0,0 +1,437 @@ + + + + +CMSIS DSP Software Library: arm_lms_norm_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__q15_8c.html new file mode 100644 index 000000000..a867659cc --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_lms_q15.c File Reference + + + + + + + + + +
+ +
+

arm_lms_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_lms_q15 (const arm_lms_instance_q15 *S, q15_t *pSrc, q15_t *pRef, q15_t *pOut, q15_t *pErr, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__q15_8c_source.html new file mode 100644 index 000000000..4270b3ebf --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__q15_8c_source.html @@ -0,0 +1,369 @@ + + + + +CMSIS DSP Software Library: arm_lms_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__q31_8c.html new file mode 100644 index 000000000..9239af4b8 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_lms_q31.c File Reference + + + + + + + + + +
+ +
+

arm_lms_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_lms_q31 (const arm_lms_instance_q31 *S, q31_t *pSrc, q31_t *pRef, q31_t *pOut, q31_t *pErr, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__q31_8c_source.html new file mode 100644 index 000000000..7fe78dfe5 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__lms__q31_8c_source.html @@ -0,0 +1,382 @@ + + + + +CMSIS DSP Software Library: arm_lms_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__add__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__add__f32_8c.html new file mode 100644 index 000000000..2b2851816 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__add__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_add_f32.c File Reference + + + + + + + + + +
+ +
+

arm_mat_add_f32.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__add__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__add__f32_8c_source.html new file mode 100644 index 000000000..75cb27398 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__add__f32_8c_source.html @@ -0,0 +1,194 @@ + + + + +CMSIS DSP Software Library: arm_mat_add_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__add__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__add__q15_8c.html new file mode 100644 index 000000000..4d694ff72 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__add__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_add_q15.c File Reference + + + + + + + + + +
+ +
+

arm_mat_add_q15.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__add__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__add__q15_8c_source.html new file mode 100644 index 000000000..7c7e5d204 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__add__q15_8c_source.html @@ -0,0 +1,205 @@ + + + + +CMSIS DSP Software Library: arm_mat_add_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__add__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__add__q31_8c.html new file mode 100644 index 000000000..14c8e851d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__add__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_add_q31.c File Reference + + + + + + + + + +
+ +
+

arm_mat_add_q31.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__add__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__add__q31_8c_source.html new file mode 100644 index 000000000..6b603d142 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__add__q31_8c_source.html @@ -0,0 +1,204 @@ + + + + +CMSIS DSP Software Library: arm_mat_add_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__init__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__init__f32_8c.html new file mode 100644 index 000000000..90f259051 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__init__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_init_f32.c File Reference + + + + + + + + + +
+ +
+

arm_mat_init_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_mat_init_f32 (arm_matrix_instance_f32 *S, uint16_t nRows, uint16_t nColumns, float32_t *pData)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__init__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__init__f32_8c_source.html new file mode 100644 index 000000000..55986e419 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__init__f32_8c_source.html @@ -0,0 +1,126 @@ + + + + +CMSIS DSP Software Library: arm_mat_init_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__init__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__init__q15_8c.html new file mode 100644 index 000000000..c0736772f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__init__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_init_q15.c File Reference + + + + + + + + + +
+ +
+

arm_mat_init_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_mat_init_q15 (arm_matrix_instance_q15 *S, uint16_t nRows, uint16_t nColumns, q15_t *pData)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__init__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__init__q15_8c_source.html new file mode 100644 index 000000000..c2f5ec3e5 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__init__q15_8c_source.html @@ -0,0 +1,127 @@ + + + + +CMSIS DSP Software Library: arm_mat_init_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__init__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__init__q31_8c.html new file mode 100644 index 000000000..a822f8517 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__init__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_init_q31.c File Reference + + + + + + + + + +
+ +
+

arm_mat_init_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_mat_init_q31 (arm_matrix_instance_q31 *S, uint16_t nRows, uint16_t nColumns, q31_t *pData)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__init__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__init__q31_8c_source.html new file mode 100644 index 000000000..78c8a2c2d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__init__q31_8c_source.html @@ -0,0 +1,126 @@ + + + + +CMSIS DSP Software Library: arm_mat_init_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__inverse__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__inverse__f32_8c.html new file mode 100644 index 000000000..8e211dcc4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__inverse__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_inverse_f32.c File Reference + + + + + + + + + +
+ +
+

arm_mat_inverse_f32.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__inverse__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__inverse__f32_8c_source.html new file mode 100644 index 000000000..46a5d7e24 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__inverse__f32_8c_source.html @@ -0,0 +1,693 @@ + + + + +CMSIS DSP Software Library: arm_mat_inverse_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__f32_8c.html new file mode 100644 index 000000000..55e68df18 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_mult_f32.c File Reference + + + + + + + + + +
+ +
+

arm_mat_mult_f32.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__f32_8c_source.html new file mode 100644 index 000000000..3fc42a58d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__f32_8c_source.html @@ -0,0 +1,305 @@ + + + + +CMSIS DSP Software Library: arm_mat_mult_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__fast__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__fast__q15_8c.html new file mode 100644 index 000000000..9bbd1d2cf --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__fast__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_mult_fast_q15.c File Reference + + + + + + + + + +
+ +
+

arm_mat_mult_fast_q15.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__fast__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__fast__q15_8c_source.html new file mode 100644 index 000000000..3d98de76c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__fast__q15_8c_source.html @@ -0,0 +1,312 @@ + + + + +CMSIS DSP Software Library: arm_mat_mult_fast_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__fast__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__fast__q31_8c.html new file mode 100644 index 000000000..841d4c5d0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__fast__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_mult_fast_q31.c File Reference + + + + + + + + + +
+ +
+

arm_mat_mult_fast_q31.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__fast__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__fast__q31_8c_source.html new file mode 100644 index 000000000..35c2be447 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__fast__q31_8c_source.html @@ -0,0 +1,232 @@ + + + + +CMSIS DSP Software Library: arm_mat_mult_fast_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__q15_8c.html new file mode 100644 index 000000000..a7c43c145 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_mult_q15.c File Reference + + + + + + + + + +
+ +
+

arm_mat_mult_q15.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__q15_8c_source.html new file mode 100644 index 000000000..908c17a83 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__q15_8c_source.html @@ -0,0 +1,412 @@ + + + + +CMSIS DSP Software Library: arm_mat_mult_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__q31_8c.html new file mode 100644 index 000000000..340601ccf --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_mult_q31.c File Reference + + + + + + + + + +
+ +
+

arm_mat_mult_q31.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__q31_8c_source.html new file mode 100644 index 000000000..364177e40 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__mult__q31_8c_source.html @@ -0,0 +1,313 @@ + + + + +CMSIS DSP Software Library: arm_mat_mult_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__scale__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__scale__f32_8c.html new file mode 100644 index 000000000..af76a9409 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__scale__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_scale_f32.c File Reference + + + + + + + + + +
+ +
+

arm_mat_scale_f32.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__scale__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__scale__f32_8c_source.html new file mode 100644 index 000000000..83d5a64c2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__scale__f32_8c_source.html @@ -0,0 +1,189 @@ + + + + +CMSIS DSP Software Library: arm_mat_scale_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__scale__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__scale__q15_8c.html new file mode 100644 index 000000000..f0165bc2f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__scale__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_scale_q15.c File Reference + + + + + + + + + +
+ +
+

arm_mat_scale_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

arm_status arm_mat_scale_q15 (const arm_matrix_instance_q15 *pSrc, q15_t scaleFract, int32_t shift, arm_matrix_instance_q15 *pDst)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__scale__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__scale__q15_8c_source.html new file mode 100644 index 000000000..da0e424ba --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__scale__q15_8c_source.html @@ -0,0 +1,195 @@ + + + + +CMSIS DSP Software Library: arm_mat_scale_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__scale__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__scale__q31_8c.html new file mode 100644 index 000000000..fa9a500cc --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__scale__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_scale_q31.c File Reference + + + + + + + + + +
+ +
+

arm_mat_scale_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

arm_status arm_mat_scale_q31 (const arm_matrix_instance_q31 *pSrc, q31_t scaleFract, int32_t shift, arm_matrix_instance_q31 *pDst)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__scale__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__scale__q31_8c_source.html new file mode 100644 index 000000000..887007ed6 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__scale__q31_8c_source.html @@ -0,0 +1,197 @@ + + + + +CMSIS DSP Software Library: arm_mat_scale_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__sub__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__sub__f32_8c.html new file mode 100644 index 000000000..3f5edee62 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__sub__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_sub_f32.c File Reference + + + + + + + + + +
+ +
+

arm_mat_sub_f32.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__sub__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__sub__f32_8c_source.html new file mode 100644 index 000000000..75e8317c1 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__sub__f32_8c_source.html @@ -0,0 +1,192 @@ + + + + +CMSIS DSP Software Library: arm_mat_sub_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__sub__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__sub__q15_8c.html new file mode 100644 index 000000000..86e6da016 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__sub__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_sub_q15.c File Reference + + + + + + + + + +
+ +
+

arm_mat_sub_q15.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__sub__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__sub__q15_8c_source.html new file mode 100644 index 000000000..21ef30fb2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__sub__q15_8c_source.html @@ -0,0 +1,202 @@ + + + + +CMSIS DSP Software Library: arm_mat_sub_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__sub__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__sub__q31_8c.html new file mode 100644 index 000000000..c9aee4faf --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__sub__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_sub_q31.c File Reference + + + + + + + + + +
+ +
+

arm_mat_sub_q31.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__sub__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__sub__q31_8c_source.html new file mode 100644 index 000000000..2511fb20c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__sub__q31_8c_source.html @@ -0,0 +1,204 @@ + + + + +CMSIS DSP Software Library: arm_mat_sub_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__trans__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__trans__f32_8c.html new file mode 100644 index 000000000..97bda00cf --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__trans__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_trans_f32.c File Reference + + + + + + + + + +
+ +
+

arm_mat_trans_f32.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__trans__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__trans__f32_8c_source.html new file mode 100644 index 000000000..950e2b291 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__trans__f32_8c_source.html @@ -0,0 +1,257 @@ + + + + +CMSIS DSP Software Library: arm_mat_trans_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__trans__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__trans__q15_8c.html new file mode 100644 index 000000000..63fb740c4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__trans__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_trans_q15.c File Reference + + + + + + + + + +
+ +
+

arm_mat_trans_q15.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__trans__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__trans__q15_8c_source.html new file mode 100644 index 000000000..2cbff87d5 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__trans__q15_8c_source.html @@ -0,0 +1,295 @@ + + + + +CMSIS DSP Software Library: arm_mat_trans_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__trans__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__trans__q31_8c.html new file mode 100644 index 000000000..e4a538e62 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__trans__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mat_trans_q31.c File Reference + + + + + + + + + +
+ +
+

arm_mat_trans_q31.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__trans__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__trans__q31_8c_source.html new file mode 100644 index 000000000..3ed8cd6af --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mat__trans__q31_8c_source.html @@ -0,0 +1,266 @@ + + + + +CMSIS DSP Software Library: arm_mat_trans_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__math_8h.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__math_8h.html new file mode 100644 index 000000000..8683e120e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__math_8h.html @@ -0,0 +1,1963 @@ + + + + +CMSIS DSP Software Library: arm_math.h File Reference + + + + + + + + + +
+ +
+

arm_math.h File Reference

+
+
+#include "ARMCM4.h"
+#include "string.h"
+#include "math.h"
+ +

Go to the source code of this file.

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

+Data Structures

struct  arm_fir_instance_q7
 Instance structure for the Q7 FIR filter. More...
struct  arm_fir_instance_q15
 Instance structure for the Q15 FIR filter. More...
struct  arm_fir_instance_q31
 Instance structure for the Q31 FIR filter. More...
struct  arm_fir_instance_f32
 Instance structure for the floating-point FIR filter. More...
struct  arm_biquad_casd_df1_inst_q15
 Instance structure for the Q15 Biquad cascade filter. More...
struct  arm_biquad_casd_df1_inst_q31
 Instance structure for the Q31 Biquad cascade filter. More...
struct  arm_biquad_casd_df1_inst_f32
 Instance structure for the floating-point Biquad cascade filter. More...
struct  arm_matrix_instance_f32
 Instance structure for the floating-point matrix structure. More...
struct  arm_matrix_instance_q15
 Instance structure for the Q15 matrix structure. More...
struct  arm_matrix_instance_q31
 Instance structure for the Q31 matrix structure. More...
struct  arm_pid_instance_q15
 Instance structure for the Q15 PID Control. More...
struct  arm_pid_instance_q31
 Instance structure for the Q31 PID Control. More...
struct  arm_pid_instance_f32
 Instance structure for the floating-point PID Control. More...
struct  arm_linear_interp_instance_f32
 Instance structure for the floating-point Linear Interpolate function. More...
struct  arm_bilinear_interp_instance_f32
 Instance structure for the floating-point bilinear interpolation function. More...
struct  arm_bilinear_interp_instance_q31
 Instance structure for the Q31 bilinear interpolation function. More...
struct  arm_bilinear_interp_instance_q15
 Instance structure for the Q15 bilinear interpolation function. More...
struct  arm_bilinear_interp_instance_q7
 Instance structure for the Q15 bilinear interpolation function. More...
struct  arm_cfft_radix4_instance_q15
 Instance structure for the Q15 CFFT/CIFFT function. More...
struct  arm_cfft_radix4_instance_q31
 Instance structure for the Q31 CFFT/CIFFT function. More...
struct  arm_cfft_radix4_instance_f32
 Instance structure for the floating-point CFFT/CIFFT function. More...
struct  arm_rfft_instance_q15
 Instance structure for the Q15 RFFT/RIFFT function. More...
struct  arm_rfft_instance_q31
 Instance structure for the Q31 RFFT/RIFFT function. More...
struct  arm_rfft_instance_f32
 Instance structure for the floating-point RFFT/RIFFT function. More...
struct  arm_dct4_instance_f32
 Instance structure for the floating-point DCT4/IDCT4 function. More...
struct  arm_dct4_instance_q31
 Instance structure for the Q31 DCT4/IDCT4 function. More...
struct  arm_dct4_instance_q15
 Instance structure for the Q15 DCT4/IDCT4 function. More...
struct  arm_fir_decimate_instance_q15
 Instance structure for the Q15 FIR decimator. More...
struct  arm_fir_decimate_instance_q31
 Instance structure for the Q31 FIR decimator. More...
struct  arm_fir_decimate_instance_f32
 Instance structure for the floating-point FIR decimator. More...
struct  arm_fir_interpolate_instance_q15
 Instance structure for the Q15 FIR interpolator. More...
struct  arm_fir_interpolate_instance_q31
 Instance structure for the Q31 FIR interpolator. More...
struct  arm_fir_interpolate_instance_f32
 Instance structure for the floating-point FIR interpolator. More...
struct  arm_biquad_cas_df1_32x64_ins_q31
 Instance structure for the high precision Q31 Biquad cascade filter. More...
struct  arm_biquad_cascade_df2T_instance_f32
 Instance structure for the floating-point transposed direct form II Biquad cascade filter. More...
struct  arm_fir_lattice_instance_q15
 Instance structure for the Q15 FIR lattice filter. More...
struct  arm_fir_lattice_instance_q31
 Instance structure for the Q31 FIR lattice filter. More...
struct  arm_fir_lattice_instance_f32
 Instance structure for the floating-point FIR lattice filter. More...
struct  arm_iir_lattice_instance_q15
 Instance structure for the Q15 IIR lattice filter. More...
struct  arm_iir_lattice_instance_q31
 Instance structure for the Q31 IIR lattice filter. More...
struct  arm_iir_lattice_instance_f32
 Instance structure for the floating-point IIR lattice filter. More...
struct  arm_lms_instance_f32
 Instance structure for the floating-point LMS filter. More...
struct  arm_lms_instance_q15
 Instance structure for the Q15 LMS filter. More...
struct  arm_lms_instance_q31
 Instance structure for the Q31 LMS filter. More...
struct  arm_lms_norm_instance_f32
 Instance structure for the floating-point normalized LMS filter. More...
struct  arm_lms_norm_instance_q31
 Instance structure for the Q31 normalized LMS filter. More...
struct  arm_lms_norm_instance_q15
 Instance structure for the Q15 normalized LMS filter. More...
struct  arm_fir_sparse_instance_f32
 Instance structure for the floating-point sparse FIR filter. More...
struct  arm_fir_sparse_instance_q31
 Instance structure for the Q31 sparse FIR filter. More...
struct  arm_fir_sparse_instance_q15
 Instance structure for the Q15 sparse FIR filter. More...
struct  arm_fir_sparse_instance_q7
 Instance structure for the Q7 sparse FIR filter. More...

+Defines

#define __CMSIS_GENERIC
#define DELTA_Q31   (0x100)
#define DELTA_Q15   0x5
#define INDEX_MASK   0x0000003F
#define PI   3.14159265358979f
#define TABLE_SIZE   256
#define TABLE_SPACING_Q31   0x800000
#define TABLE_SPACING_Q15   0x80
#define INPUT_SPACING   0xB60B61
#define __SIMD32(addr)   (*(int32_t **) & (addr))
#define __PACKq7(v0, v1, v2, v3)

+Typedefs

typedef int8_t q7_t
typedef int16_t q15_t
typedef int32_t q31_t
typedef int64_t q63_t
typedef float float32_t
typedef double float64_t

+Enumerations

enum  arm_status {
+  ARM_MATH_SUCCESS = 0, +ARM_MATH_ARGUMENT_ERROR = -1, +ARM_MATH_LENGTH_ERROR = -2, +ARM_MATH_SIZE_MISMATCH = -3, +
+  ARM_MATH_NANINF = -4, +ARM_MATH_SINGULAR = -5, +ARM_MATH_TEST_FAILURE = -6 +
+ }

+Functions

static __INLINE q31_t clip_q63_to_q31 (q63_t x)
static __INLINE q15_t clip_q63_to_q15 (q63_t x)
static __INLINE q7_t clip_q31_to_q7 (q31_t x)
static __INLINE q15_t clip_q31_to_q15 (q31_t x)
static __INLINE q63_t mult32x64 (q63_t x, q31_t y)
static __INLINE uint32_t arm_recip_q31 (q31_t in, q31_t *dst, q31_t *pRecipTable)
static __INLINE uint32_t arm_recip_q15 (q15_t in, q15_t *dst, q15_t *pRecipTable)
void arm_fir_q7 (const arm_fir_instance_q7 *S, q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
void arm_fir_init_q7 (arm_fir_instance_q7 *S, uint16_t numTaps, q7_t *pCoeffs, q7_t *pState, uint32_t blockSize)
void arm_fir_q15 (const arm_fir_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_fir_fast_q15 (const arm_fir_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
arm_status arm_fir_init_q15 (arm_fir_instance_q15 *S, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, uint32_t blockSize)
void arm_fir_q31 (const arm_fir_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_fir_fast_q31 (const arm_fir_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_fir_init_q31 (arm_fir_instance_q31 *S, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, uint32_t blockSize)
void arm_fir_f32 (const arm_fir_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
void arm_fir_init_f32 (arm_fir_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, uint32_t blockSize)
void arm_biquad_cascade_df1_q15 (const arm_biquad_casd_df1_inst_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_biquad_cascade_df1_init_q15 (arm_biquad_casd_df1_inst_q15 *S, uint8_t numStages, q15_t *pCoeffs, q15_t *pState, int8_t postShift)
void arm_biquad_cascade_df1_fast_q15 (const arm_biquad_casd_df1_inst_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_biquad_cascade_df1_q31 (const arm_biquad_casd_df1_inst_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_biquad_cascade_df1_fast_q31 (const arm_biquad_casd_df1_inst_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_biquad_cascade_df1_init_q31 (arm_biquad_casd_df1_inst_q31 *S, uint8_t numStages, q31_t *pCoeffs, q31_t *pState, int8_t postShift)
void arm_biquad_cascade_df1_f32 (const arm_biquad_casd_df1_inst_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
void arm_biquad_cascade_df1_init_f32 (arm_biquad_casd_df1_inst_f32 *S, uint8_t numStages, float32_t *pCoeffs, float32_t *pState)
arm_status arm_mat_add_f32 (const arm_matrix_instance_f32 *pSrcA, const arm_matrix_instance_f32 *pSrcB, arm_matrix_instance_f32 *pDst)
arm_status arm_mat_add_q15 (const arm_matrix_instance_q15 *pSrcA, const arm_matrix_instance_q15 *pSrcB, arm_matrix_instance_q15 *pDst)
arm_status arm_mat_add_q31 (const arm_matrix_instance_q31 *pSrcA, const arm_matrix_instance_q31 *pSrcB, arm_matrix_instance_q31 *pDst)
arm_status arm_mat_trans_f32 (const arm_matrix_instance_f32 *pSrc, arm_matrix_instance_f32 *pDst)
arm_status arm_mat_trans_q15 (const arm_matrix_instance_q15 *pSrc, arm_matrix_instance_q15 *pDst)
arm_status arm_mat_trans_q31 (const arm_matrix_instance_q31 *pSrc, arm_matrix_instance_q31 *pDst)
arm_status arm_mat_mult_f32 (const arm_matrix_instance_f32 *pSrcA, const arm_matrix_instance_f32 *pSrcB, arm_matrix_instance_f32 *pDst)
arm_status arm_mat_mult_q15 (const arm_matrix_instance_q15 *pSrcA, const arm_matrix_instance_q15 *pSrcB, arm_matrix_instance_q15 *pDst, q15_t *pState)
arm_status arm_mat_mult_fast_q15 (const arm_matrix_instance_q15 *pSrcA, const arm_matrix_instance_q15 *pSrcB, arm_matrix_instance_q15 *pDst, q15_t *pState)
arm_status arm_mat_mult_q31 (const arm_matrix_instance_q31 *pSrcA, const arm_matrix_instance_q31 *pSrcB, arm_matrix_instance_q31 *pDst)
arm_status arm_mat_mult_fast_q31 (const arm_matrix_instance_q31 *pSrcA, const arm_matrix_instance_q31 *pSrcB, arm_matrix_instance_q31 *pDst)
arm_status arm_mat_sub_f32 (const arm_matrix_instance_f32 *pSrcA, const arm_matrix_instance_f32 *pSrcB, arm_matrix_instance_f32 *pDst)
arm_status arm_mat_sub_q15 (const arm_matrix_instance_q15 *pSrcA, const arm_matrix_instance_q15 *pSrcB, arm_matrix_instance_q15 *pDst)
arm_status arm_mat_sub_q31 (const arm_matrix_instance_q31 *pSrcA, const arm_matrix_instance_q31 *pSrcB, arm_matrix_instance_q31 *pDst)
arm_status arm_mat_scale_f32 (const arm_matrix_instance_f32 *pSrc, float32_t scale, arm_matrix_instance_f32 *pDst)
arm_status arm_mat_scale_q15 (const arm_matrix_instance_q15 *pSrc, q15_t scaleFract, int32_t shift, arm_matrix_instance_q15 *pDst)
arm_status arm_mat_scale_q31 (const arm_matrix_instance_q31 *pSrc, q31_t scaleFract, int32_t shift, arm_matrix_instance_q31 *pDst)
void arm_mat_init_q31 (arm_matrix_instance_q31 *S, uint16_t nRows, uint16_t nColumns, q31_t *pData)
void arm_mat_init_q15 (arm_matrix_instance_q15 *S, uint16_t nRows, uint16_t nColumns, q15_t *pData)
void arm_mat_init_f32 (arm_matrix_instance_f32 *S, uint16_t nRows, uint16_t nColumns, float32_t *pData)
void arm_pid_init_f32 (arm_pid_instance_f32 *S, int32_t resetStateFlag)
void arm_pid_reset_f32 (arm_pid_instance_f32 *S)
void arm_pid_init_q31 (arm_pid_instance_q31 *S, int32_t resetStateFlag)
void arm_pid_reset_q31 (arm_pid_instance_q31 *S)
void arm_pid_init_q15 (arm_pid_instance_q15 *S, int32_t resetStateFlag)
void arm_pid_reset_q15 (arm_pid_instance_q15 *S)
void arm_mult_q7 (q7_t *pSrcA, q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
void arm_mult_q15 (q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
void arm_mult_q31 (q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
void arm_mult_f32 (float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
void arm_cfft_radix4_q15 (const arm_cfft_radix4_instance_q15 *S, q15_t *pSrc)
arm_status arm_cfft_radix4_init_q15 (arm_cfft_radix4_instance_q15 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
void arm_cfft_radix4_q31 (const arm_cfft_radix4_instance_q31 *S, q31_t *pSrc)
arm_status arm_cfft_radix4_init_q31 (arm_cfft_radix4_instance_q31 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
void arm_cfft_radix4_f32 (const arm_cfft_radix4_instance_f32 *S, float32_t *pSrc)
arm_status arm_cfft_radix4_init_f32 (arm_cfft_radix4_instance_f32 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
void arm_radix4_butterfly_f32 (float32_t *pSrc, uint16_t fftLen, float32_t *pCoef, uint16_t twidCoefModifier)
void arm_radix4_butterfly_inverse_f32 (float32_t *pSrc, uint16_t fftLen, float32_t *pCoef, uint16_t twidCoefModifier, float32_t onebyfftLen)
void arm_bitreversal_f32 (float32_t *pSrc, uint16_t fftSize, uint16_t bitRevFactor, uint16_t *pBitRevTab)
void arm_radix4_butterfly_q31 (q31_t *pSrc, uint32_t fftLen, q31_t *pCoef, uint32_t twidCoefModifier)
void arm_radix4_butterfly_inverse_q31 (q31_t *pSrc, uint32_t fftLen, q31_t *pCoef, uint32_t twidCoefModifier)
void arm_bitreversal_q31 (q31_t *pSrc, uint32_t fftLen, uint16_t bitRevFactor, uint16_t *pBitRevTab)
void arm_radix4_butterfly_q15 (q15_t *pSrc16, uint32_t fftLen, q15_t *pCoef16, uint32_t twidCoefModifier)
void arm_radix4_butterfly_inverse_q15 (q15_t *pSrc16, uint32_t fftLen, q15_t *pCoef16, uint32_t twidCoefModifier)
void arm_bitreversal_q15 (q15_t *pSrc, uint32_t fftLen, uint16_t bitRevFactor, uint16_t *pBitRevTab)
void arm_rfft_q15 (const arm_rfft_instance_q15 *S, q15_t *pSrc, q15_t *pDst)
arm_status arm_rfft_init_q15 (arm_rfft_instance_q15 *S, arm_cfft_radix4_instance_q15 *S_CFFT, uint32_t fftLenReal, uint32_t ifftFlagR, uint32_t bitReverseFlag)
void arm_rfft_q31 (const arm_rfft_instance_q31 *S, q31_t *pSrc, q31_t *pDst)
arm_status arm_rfft_init_q31 (arm_rfft_instance_q31 *S, arm_cfft_radix4_instance_q31 *S_CFFT, uint32_t fftLenReal, uint32_t ifftFlagR, uint32_t bitReverseFlag)
arm_status arm_rfft_init_f32 (arm_rfft_instance_f32 *S, arm_cfft_radix4_instance_f32 *S_CFFT, uint32_t fftLenReal, uint32_t ifftFlagR, uint32_t bitReverseFlag)
void arm_rfft_f32 (const arm_rfft_instance_f32 *S, float32_t *pSrc, float32_t *pDst)
arm_status arm_dct4_init_f32 (arm_dct4_instance_f32 *S, arm_rfft_instance_f32 *S_RFFT, arm_cfft_radix4_instance_f32 *S_CFFT, uint16_t N, uint16_t Nby2, float32_t normalize)
void arm_dct4_f32 (const arm_dct4_instance_f32 *S, float32_t *pState, float32_t *pInlineBuffer)
arm_status arm_dct4_init_q31 (arm_dct4_instance_q31 *S, arm_rfft_instance_q31 *S_RFFT, arm_cfft_radix4_instance_q31 *S_CFFT, uint16_t N, uint16_t Nby2, q31_t normalize)
void arm_dct4_q31 (const arm_dct4_instance_q31 *S, q31_t *pState, q31_t *pInlineBuffer)
arm_status arm_dct4_init_q15 (arm_dct4_instance_q15 *S, arm_rfft_instance_q15 *S_RFFT, arm_cfft_radix4_instance_q15 *S_CFFT, uint16_t N, uint16_t Nby2, q15_t normalize)
void arm_dct4_q15 (const arm_dct4_instance_q15 *S, q15_t *pState, q15_t *pInlineBuffer)
void arm_add_f32 (float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
void arm_add_q7 (q7_t *pSrcA, q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
void arm_add_q15 (q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
void arm_add_q31 (q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
void arm_sub_f32 (float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
void arm_sub_q7 (q7_t *pSrcA, q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
void arm_sub_q15 (q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
void arm_sub_q31 (q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
void arm_scale_f32 (float32_t *pSrc, float32_t scale, float32_t *pDst, uint32_t blockSize)
void arm_scale_q7 (q7_t *pSrc, q7_t scaleFract, int8_t shift, q7_t *pDst, uint32_t blockSize)
void arm_scale_q15 (q15_t *pSrc, q15_t scaleFract, int8_t shift, q15_t *pDst, uint32_t blockSize)
void arm_scale_q31 (q31_t *pSrc, q31_t scaleFract, int8_t shift, q31_t *pDst, uint32_t blockSize)
void arm_abs_q7 (q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
void arm_abs_f32 (float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
void arm_abs_q15 (q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_abs_q31 (q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_dot_prod_f32 (float32_t *pSrcA, float32_t *pSrcB, uint32_t blockSize, float32_t *result)
void arm_dot_prod_q7 (q7_t *pSrcA, q7_t *pSrcB, uint32_t blockSize, q31_t *result)
void arm_dot_prod_q15 (q15_t *pSrcA, q15_t *pSrcB, uint32_t blockSize, q63_t *result)
void arm_dot_prod_q31 (q31_t *pSrcA, q31_t *pSrcB, uint32_t blockSize, q63_t *result)
void arm_shift_q7 (q7_t *pSrc, int8_t shiftBits, q7_t *pDst, uint32_t blockSize)
void arm_shift_q15 (q15_t *pSrc, int8_t shiftBits, q15_t *pDst, uint32_t blockSize)
void arm_shift_q31 (q31_t *pSrc, int8_t shiftBits, q31_t *pDst, uint32_t blockSize)
void arm_offset_f32 (float32_t *pSrc, float32_t offset, float32_t *pDst, uint32_t blockSize)
void arm_offset_q7 (q7_t *pSrc, q7_t offset, q7_t *pDst, uint32_t blockSize)
void arm_offset_q15 (q15_t *pSrc, q15_t offset, q15_t *pDst, uint32_t blockSize)
void arm_offset_q31 (q31_t *pSrc, q31_t offset, q31_t *pDst, uint32_t blockSize)
void arm_negate_f32 (float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
void arm_negate_q7 (q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
void arm_negate_q15 (q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_negate_q31 (q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_copy_f32 (float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
void arm_copy_q7 (q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
void arm_copy_q15 (q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_copy_q31 (q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_fill_f32 (float32_t value, float32_t *pDst, uint32_t blockSize)
void arm_fill_q7 (q7_t value, q7_t *pDst, uint32_t blockSize)
void arm_fill_q15 (q15_t value, q15_t *pDst, uint32_t blockSize)
void arm_fill_q31 (q31_t value, q31_t *pDst, uint32_t blockSize)
void arm_conv_f32 (float32_t *pSrcA, uint32_t srcALen, float32_t *pSrcB, uint32_t srcBLen, float32_t *pDst)
void arm_conv_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
void arm_conv_fast_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
void arm_conv_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
void arm_conv_fast_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
void arm_conv_q7 (q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst)
arm_status arm_conv_partial_f32 (float32_t *pSrcA, uint32_t srcALen, float32_t *pSrcB, uint32_t srcBLen, float32_t *pDst, uint32_t firstIndex, uint32_t numPoints)
arm_status arm_conv_partial_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, uint32_t firstIndex, uint32_t numPoints)
arm_status arm_conv_partial_fast_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, uint32_t firstIndex, uint32_t numPoints)
arm_status arm_conv_partial_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst, uint32_t firstIndex, uint32_t numPoints)
arm_status arm_conv_partial_fast_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst, uint32_t firstIndex, uint32_t numPoints)
arm_status arm_conv_partial_q7 (q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst, uint32_t firstIndex, uint32_t numPoints)
void arm_fir_decimate_f32 (const arm_fir_decimate_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
arm_status arm_fir_decimate_init_f32 (arm_fir_decimate_instance_f32 *S, uint16_t numTaps, uint8_t M, float32_t *pCoeffs, float32_t *pState, uint32_t blockSize)
void arm_fir_decimate_q15 (const arm_fir_decimate_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_fir_decimate_fast_q15 (const arm_fir_decimate_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
arm_status arm_fir_decimate_init_q15 (arm_fir_decimate_instance_q15 *S, uint16_t numTaps, uint8_t M, q15_t *pCoeffs, q15_t *pState, uint32_t blockSize)
void arm_fir_decimate_q31 (const arm_fir_decimate_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_fir_decimate_fast_q31 (arm_fir_decimate_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
arm_status arm_fir_decimate_init_q31 (arm_fir_decimate_instance_q31 *S, uint16_t numTaps, uint8_t M, q31_t *pCoeffs, q31_t *pState, uint32_t blockSize)
void arm_fir_interpolate_q15 (const arm_fir_interpolate_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
arm_status arm_fir_interpolate_init_q15 (arm_fir_interpolate_instance_q15 *S, uint8_t L, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, uint32_t blockSize)
void arm_fir_interpolate_q31 (const arm_fir_interpolate_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
arm_status arm_fir_interpolate_init_q31 (arm_fir_interpolate_instance_q31 *S, uint8_t L, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, uint32_t blockSize)
void arm_fir_interpolate_f32 (const arm_fir_interpolate_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
arm_status arm_fir_interpolate_init_f32 (arm_fir_interpolate_instance_f32 *S, uint8_t L, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, uint32_t blockSize)
void arm_biquad_cas_df1_32x64_q31 (const arm_biquad_cas_df1_32x64_ins_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_biquad_cas_df1_32x64_init_q31 (arm_biquad_cas_df1_32x64_ins_q31 *S, uint8_t numStages, q31_t *pCoeffs, q63_t *pState, uint8_t postShift)
void arm_biquad_cascade_df2T_f32 (const arm_biquad_cascade_df2T_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
void arm_biquad_cascade_df2T_init_f32 (arm_biquad_cascade_df2T_instance_f32 *S, uint8_t numStages, float32_t *pCoeffs, float32_t *pState)
void arm_fir_lattice_init_q15 (arm_fir_lattice_instance_q15 *S, uint16_t numStages, q15_t *pCoeffs, q15_t *pState)
void arm_fir_lattice_q15 (const arm_fir_lattice_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_fir_lattice_init_q31 (arm_fir_lattice_instance_q31 *S, uint16_t numStages, q31_t *pCoeffs, q31_t *pState)
void arm_fir_lattice_q31 (const arm_fir_lattice_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_fir_lattice_init_f32 (arm_fir_lattice_instance_f32 *S, uint16_t numStages, float32_t *pCoeffs, float32_t *pState)
void arm_fir_lattice_f32 (const arm_fir_lattice_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
void arm_iir_lattice_f32 (const arm_iir_lattice_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
void arm_iir_lattice_init_f32 (arm_iir_lattice_instance_f32 *S, uint16_t numStages, float32_t *pkCoeffs, float32_t *pvCoeffs, float32_t *pState, uint32_t blockSize)
void arm_iir_lattice_q31 (const arm_iir_lattice_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_iir_lattice_init_q31 (arm_iir_lattice_instance_q31 *S, uint16_t numStages, q31_t *pkCoeffs, q31_t *pvCoeffs, q31_t *pState, uint32_t blockSize)
void arm_iir_lattice_q15 (const arm_iir_lattice_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_iir_lattice_init_q15 (arm_iir_lattice_instance_q15 *S, uint16_t numStages, q15_t *pkCoeffs, q15_t *pvCoeffs, q15_t *pState, uint32_t blockSize)
void arm_lms_f32 (const arm_lms_instance_f32 *S, float32_t *pSrc, float32_t *pRef, float32_t *pOut, float32_t *pErr, uint32_t blockSize)
void arm_lms_init_f32 (arm_lms_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, float32_t mu, uint32_t blockSize)
void arm_lms_init_q15 (arm_lms_instance_q15 *S, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, q15_t mu, uint32_t blockSize, uint32_t postShift)
void arm_lms_q15 (const arm_lms_instance_q15 *S, q15_t *pSrc, q15_t *pRef, q15_t *pOut, q15_t *pErr, uint32_t blockSize)
void arm_lms_q31 (const arm_lms_instance_q31 *S, q31_t *pSrc, q31_t *pRef, q31_t *pOut, q31_t *pErr, uint32_t blockSize)
void arm_lms_init_q31 (arm_lms_instance_q31 *S, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, q31_t mu, uint32_t blockSize, uint32_t postShift)
void arm_lms_norm_f32 (arm_lms_norm_instance_f32 *S, float32_t *pSrc, float32_t *pRef, float32_t *pOut, float32_t *pErr, uint32_t blockSize)
void arm_lms_norm_init_f32 (arm_lms_norm_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, float32_t mu, uint32_t blockSize)
void arm_lms_norm_q31 (arm_lms_norm_instance_q31 *S, q31_t *pSrc, q31_t *pRef, q31_t *pOut, q31_t *pErr, uint32_t blockSize)
void arm_lms_norm_init_q31 (arm_lms_norm_instance_q31 *S, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, q31_t mu, uint32_t blockSize, uint8_t postShift)
void arm_lms_norm_q15 (arm_lms_norm_instance_q15 *S, q15_t *pSrc, q15_t *pRef, q15_t *pOut, q15_t *pErr, uint32_t blockSize)
void arm_lms_norm_init_q15 (arm_lms_norm_instance_q15 *S, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, q15_t mu, uint32_t blockSize, uint8_t postShift)
void arm_correlate_f32 (float32_t *pSrcA, uint32_t srcALen, float32_t *pSrcB, uint32_t srcBLen, float32_t *pDst)
void arm_correlate_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
void arm_correlate_fast_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
void arm_correlate_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
void arm_correlate_fast_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
void arm_correlate_q7 (q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst)
void arm_fir_sparse_f32 (arm_fir_sparse_instance_f32 *S, float32_t *pSrc, float32_t *pDst, float32_t *pScratchIn, uint32_t blockSize)
void arm_fir_sparse_init_f32 (arm_fir_sparse_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, int32_t *pTapDelay, uint16_t maxDelay, uint32_t blockSize)
void arm_fir_sparse_q31 (arm_fir_sparse_instance_q31 *S, q31_t *pSrc, q31_t *pDst, q31_t *pScratchIn, uint32_t blockSize)
void arm_fir_sparse_init_q31 (arm_fir_sparse_instance_q31 *S, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, int32_t *pTapDelay, uint16_t maxDelay, uint32_t blockSize)
void arm_fir_sparse_q15 (arm_fir_sparse_instance_q15 *S, q15_t *pSrc, q15_t *pDst, q15_t *pScratchIn, q31_t *pScratchOut, uint32_t blockSize)
void arm_fir_sparse_init_q15 (arm_fir_sparse_instance_q15 *S, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, int32_t *pTapDelay, uint16_t maxDelay, uint32_t blockSize)
void arm_fir_sparse_q7 (arm_fir_sparse_instance_q7 *S, q7_t *pSrc, q7_t *pDst, q7_t *pScratchIn, q31_t *pScratchOut, uint32_t blockSize)
void arm_fir_sparse_init_q7 (arm_fir_sparse_instance_q7 *S, uint16_t numTaps, q7_t *pCoeffs, q7_t *pState, int32_t *pTapDelay, uint16_t maxDelay, uint32_t blockSize)
void arm_sin_cos_f32 (float32_t theta, float32_t *pSinVal, float32_t *pCcosVal)
void arm_sin_cos_q31 (q31_t theta, q31_t *pSinVal, q31_t *pCosVal)
void arm_cmplx_conj_f32 (float32_t *pSrc, float32_t *pDst, uint32_t numSamples)
void arm_cmplx_conj_q31 (q31_t *pSrc, q31_t *pDst, uint32_t numSamples)
void arm_cmplx_conj_q15 (q15_t *pSrc, q15_t *pDst, uint32_t numSamples)
void arm_cmplx_mag_squared_f32 (float32_t *pSrc, float32_t *pDst, uint32_t numSamples)
void arm_cmplx_mag_squared_q31 (q31_t *pSrc, q31_t *pDst, uint32_t numSamples)
void arm_cmplx_mag_squared_q15 (q15_t *pSrc, q15_t *pDst, uint32_t numSamples)
static __INLINE float32_t arm_pid_f32 (arm_pid_instance_f32 *S, float32_t in)
static __INLINE q31_t arm_pid_q31 (arm_pid_instance_q31 *S, q31_t in)
static __INLINE q15_t arm_pid_q15 (arm_pid_instance_q15 *S, q15_t in)
arm_status arm_mat_inverse_f32 (const arm_matrix_instance_f32 *src, arm_matrix_instance_f32 *dst)
static __INLINE void arm_clarke_f32 (float32_t Ia, float32_t Ib, float32_t *pIalpha, float32_t *pIbeta)
static __INLINE void arm_clarke_q31 (q31_t Ia, q31_t Ib, q31_t *pIalpha, q31_t *pIbeta)
void arm_q7_to_q31 (q7_t *pSrc, q31_t *pDst, uint32_t blockSize)
static __INLINE void arm_inv_clarke_f32 (float32_t Ialpha, float32_t Ibeta, float32_t *pIa, float32_t *pIb)
static __INLINE void arm_inv_clarke_q31 (q31_t Ialpha, q31_t Ibeta, q31_t *pIa, q31_t *pIb)
void arm_q7_to_q15 (q7_t *pSrc, q15_t *pDst, uint32_t blockSize)
static __INLINE void arm_park_f32 (float32_t Ialpha, float32_t Ibeta, float32_t *pId, float32_t *pIq, float32_t sinVal, float32_t cosVal)
static __INLINE void arm_park_q31 (q31_t Ialpha, q31_t Ibeta, q31_t *pId, q31_t *pIq, q31_t sinVal, q31_t cosVal)
void arm_q7_to_float (q7_t *pSrc, float32_t *pDst, uint32_t blockSize)
static __INLINE void arm_inv_park_f32 (float32_t Id, float32_t Iq, float32_t *pIalpha, float32_t *pIbeta, float32_t sinVal, float32_t cosVal)
static __INLINE void arm_inv_park_q31 (q31_t Id, q31_t Iq, q31_t *pIalpha, q31_t *pIbeta, q31_t sinVal, q31_t cosVal)
void arm_q31_to_float (q31_t *pSrc, float32_t *pDst, uint32_t blockSize)
static __INLINE float32_t arm_linear_interp_f32 (arm_linear_interp_instance_f32 *S, float32_t x)
static __INLINE q31_t arm_linear_interp_q31 (q31_t *pYData, q31_t x, uint32_t nValues)
static __INLINE q15_t arm_linear_interp_q15 (q15_t *pYData, q31_t x, uint32_t nValues)
static __INLINE q7_t arm_linear_interp_q7 (q7_t *pYData, q31_t x, uint32_t nValues)
float32_t arm_sin_f32 (float32_t x)
q31_t arm_sin_q31 (q31_t x)
q15_t arm_sin_q15 (q15_t x)
float32_t arm_cos_f32 (float32_t x)
q31_t arm_cos_q31 (q31_t x)
q15_t arm_cos_q15 (q15_t x)
static __INLINE arm_status arm_sqrt_f32 (float32_t in, float32_t *pOut)
arm_status arm_sqrt_q31 (q31_t in, q31_t *pOut)
arm_status arm_sqrt_q15 (q15_t in, q15_t *pOut)
static __INLINE void arm_circularWrite_f32 (int32_t *circBuffer, int32_t L, uint16_t *writeOffset, int32_t bufferInc, const int32_t *src, int32_t srcInc, uint32_t blockSize)
static __INLINE void arm_circularRead_f32 (int32_t *circBuffer, int32_t L, int32_t *readOffset, int32_t bufferInc, int32_t *dst, int32_t *dst_base, int32_t dst_length, int32_t dstInc, uint32_t blockSize)
static __INLINE void arm_circularWrite_q15 (q15_t *circBuffer, int32_t L, uint16_t *writeOffset, int32_t bufferInc, const q15_t *src, int32_t srcInc, uint32_t blockSize)
static __INLINE void arm_circularRead_q15 (q15_t *circBuffer, int32_t L, int32_t *readOffset, int32_t bufferInc, q15_t *dst, q15_t *dst_base, int32_t dst_length, int32_t dstInc, uint32_t blockSize)
static __INLINE void arm_circularWrite_q7 (q7_t *circBuffer, int32_t L, uint16_t *writeOffset, int32_t bufferInc, const q7_t *src, int32_t srcInc, uint32_t blockSize)
static __INLINE void arm_circularRead_q7 (q7_t *circBuffer, int32_t L, int32_t *readOffset, int32_t bufferInc, q7_t *dst, q7_t *dst_base, int32_t dst_length, int32_t dstInc, uint32_t blockSize)
void arm_power_q31 (q31_t *pSrc, uint32_t blockSize, q63_t *pResult)
void arm_power_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
void arm_power_q15 (q15_t *pSrc, uint32_t blockSize, q63_t *pResult)
void arm_power_q7 (q7_t *pSrc, uint32_t blockSize, q31_t *pResult)
void arm_mean_q7 (q7_t *pSrc, uint32_t blockSize, q7_t *pResult)
void arm_mean_q15 (q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
void arm_mean_q31 (q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
void arm_mean_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
void arm_var_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
void arm_var_q31 (q31_t *pSrc, uint32_t blockSize, q63_t *pResult)
void arm_var_q15 (q15_t *pSrc, uint32_t blockSize, q31_t *pResult)
void arm_rms_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
void arm_rms_q31 (q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
void arm_rms_q15 (q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
void arm_std_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
void arm_std_q31 (q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
void arm_std_q15 (q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
void arm_cmplx_mag_f32 (float32_t *pSrc, float32_t *pDst, uint32_t numSamples)
void arm_cmplx_mag_q31 (q31_t *pSrc, q31_t *pDst, uint32_t numSamples)
void arm_cmplx_mag_q15 (q15_t *pSrc, q15_t *pDst, uint32_t numSamples)
void arm_cmplx_dot_prod_q15 (q15_t *pSrcA, q15_t *pSrcB, uint32_t numSamples, q31_t *realResult, q31_t *imagResult)
void arm_cmplx_dot_prod_q31 (q31_t *pSrcA, q31_t *pSrcB, uint32_t numSamples, q63_t *realResult, q63_t *imagResult)
void arm_cmplx_dot_prod_f32 (float32_t *pSrcA, float32_t *pSrcB, uint32_t numSamples, float32_t *realResult, float32_t *imagResult)
void arm_cmplx_mult_real_q15 (q15_t *pSrcCmplx, q15_t *pSrcReal, q15_t *pCmplxDst, uint32_t numSamples)
void arm_cmplx_mult_real_q31 (q31_t *pSrcCmplx, q31_t *pSrcReal, q31_t *pCmplxDst, uint32_t numSamples)
void arm_cmplx_mult_real_f32 (float32_t *pSrcCmplx, float32_t *pSrcReal, float32_t *pCmplxDst, uint32_t numSamples)
void arm_min_q7 (q7_t *pSrc, uint32_t blockSize, q7_t *result, uint32_t *index)
void arm_min_q15 (q15_t *pSrc, uint32_t blockSize, q15_t *pResult, uint32_t *pIndex)
void arm_min_q31 (q31_t *pSrc, uint32_t blockSize, q31_t *pResult, uint32_t *pIndex)
void arm_min_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult, uint32_t *pIndex)
void arm_max_q7 (q7_t *pSrc, uint32_t blockSize, q7_t *pResult, uint32_t *pIndex)
void arm_max_q15 (q15_t *pSrc, uint32_t blockSize, q15_t *pResult, uint32_t *pIndex)
void arm_max_q31 (q31_t *pSrc, uint32_t blockSize, q31_t *pResult, uint32_t *pIndex)
void arm_max_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult, uint32_t *pIndex)
void arm_cmplx_mult_cmplx_q15 (q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t numSamples)
void arm_cmplx_mult_cmplx_q31 (q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t numSamples)
void arm_cmplx_mult_cmplx_f32 (float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t numSamples)
void arm_float_to_q31 (float32_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_float_to_q15 (float32_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_float_to_q7 (float32_t *pSrc, q7_t *pDst, uint32_t blockSize)
void arm_q31_to_q15 (q31_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_q31_to_q7 (q31_t *pSrc, q7_t *pDst, uint32_t blockSize)
void arm_q15_to_float (q15_t *pSrc, float32_t *pDst, uint32_t blockSize)
void arm_q15_to_q31 (q15_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_q15_to_q7 (q15_t *pSrc, q7_t *pDst, uint32_t blockSize)
static __INLINE float32_t arm_bilinear_interp_f32 (const arm_bilinear_interp_instance_f32 *S, float32_t X, float32_t Y)
static __INLINE q31_t arm_bilinear_interp_q31 (arm_bilinear_interp_instance_q31 *S, q31_t X, q31_t Y)
static __INLINE q15_t arm_bilinear_interp_q15 (arm_bilinear_interp_instance_q15 *S, q31_t X, q31_t Y)
static __INLINE q7_t arm_bilinear_interp_q7 (arm_bilinear_interp_instance_q7 *S, q31_t X, q31_t Y)
+

Define Documentation

+ +
+
+ + + + +
#define __CMSIS_GENERIC
+
+
+ +

Definition at line 254 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
#define DELTA_Q31   (0x100)
+
+
+ +

Macros required for reciprocal calculation in Normalized LMS.

+ +

Definition at line 280 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
#define DELTA_Q15   0x5
+
+
+ +

Definition at line 281 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
#define INDEX_MASK   0x0000003F
+
+
+ +

Definition at line 282 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
#define PI   3.14159265358979f
+
+
+ +

Definition at line 283 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
#define TABLE_SIZE   256
+
+
+ +

Macros required for SINE and COSINE Fast math approximations.

+ +

Definition at line 289 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
#define TABLE_SPACING_Q31   0x800000
+
+
+ +

Definition at line 290 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
#define TABLE_SPACING_Q15   0x80
+
+
+ +

Definition at line 291 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
#define INPUT_SPACING   0xB60B61
+
+
+ +

Macros required for SINE and COSINE Controller functions.

+ +

Definition at line 298 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + +
#define __SIMD32( addr )   (*(int32_t **) & (addr))
+
+
+ +

definition to read/write two 16 bit values.

+ +

Definition at line 349 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define __PACKq7( v0,
 v1,
 v2,
 v3 
)
+
+
+Value:
( (((int32_t)(v0) <<  0) & (int32_t)0x000000FF) |   \
+                                (((int32_t)(v1) <<  8) & (int32_t)0x0000FF00) | \
+                                (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) | \
+                                (((int32_t)(v3) << 24) & (int32_t)0xFF000000)  )
+
+

definition to pack four 8 bit values.

+ +

Definition at line 366 of file arm_math.h.

+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef int8_t q7_t
+
+
+ +

8-bit fractional data type in 1.7 format.

+ +

Definition at line 319 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
typedef int16_t q15_t
+
+
+ +

16-bit fractional data type in 1.15 format.

+ +

Definition at line 324 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
typedef int32_t q31_t
+
+
+ +

32-bit fractional data type in 1.31 format.

+ +

Definition at line 329 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
typedef int64_t q63_t
+
+
+ +

64-bit fractional data type in 1.63 format.

+ +

Definition at line 334 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
typedef float float32_t
+
+
+ +

32-bit floating-point type definition.

+ +

Definition at line 339 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
typedef double float64_t
+
+
+ +

64-bit floating-point type definition.

+ +

Definition at line 344 of file arm_math.h.

+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum arm_status
+
+
+ +

Error status returned by some functions in the library.

+
Enumerator:
+ + + + + + + +
ARM_MATH_SUCCESS  +

No error

+
ARM_MATH_ARGUMENT_ERROR  +

One or more arguments are incorrect

+
ARM_MATH_LENGTH_ERROR  +

Length of data buffer is incorrect

+
ARM_MATH_SIZE_MISMATCH  +

Size of matrices is not compatible with the operation.

+
ARM_MATH_NANINF  +

Not-a-number (NaN) or infinity is generated

+
ARM_MATH_SINGULAR  +

Generated by matrix inversion if the input matrix is singular and cannot be inverted.

+
ARM_MATH_TEST_FAILURE  +

Test Failed

+
+
+
+ +

Definition at line 305 of file arm_math.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
static __INLINE q31_t clip_q63_to_q31 (q63_t  x ) [static]
+
+
+ +

Clips Q63 to Q31 values.

+ +

Definition at line 383 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + +
static __INLINE q15_t clip_q63_to_q15 (q63_t  x ) [static]
+
+
+ +

Clips Q63 to Q15 values.

+ +

Definition at line 393 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + +
static __INLINE q7_t clip_q31_to_q7 (q31_t  x ) [static]
+
+
+ +

Clips Q31 to Q7 values.

+ +

Definition at line 403 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + +
static __INLINE q15_t clip_q31_to_q15 (q31_t  x ) [static]
+
+
+ +

Clips Q31 to Q15 values.

+ +

Definition at line 413 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
static __INLINE q63_t mult32x64 (q63_t  x,
q31_t  y 
) [static]
+
+
+ +

Multiplies 32 X 64 and returns 32 bit result in 2.30 format.

+ +

Definition at line 424 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE uint32_t arm_recip_q31 (q31_t  in,
q31_t dst,
q31_t pRecipTable 
) [static]
+
+
+ +

Function to Calculates 1/in(reciprocal) value of Q31 Data type.

+ +

Definition at line 463 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE uint32_t arm_recip_q15 (q15_t  in,
q15_t dst,
q15_t pRecipTable 
) [static]
+
+
+ +

Function to Calculates 1/in(reciprocal) value of Q15 Data type.

+ +

Definition at line 514 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_radix4_butterfly_f32 (float32_t pSrc,
uint16_t  fftLen,
float32_t pCoef,
uint16_t  twidCoefModifier 
)
+
+
+ +

Core function for the floating-point CFFT butterfly process.

+
Parameters:
+ + + + + +
[in,out]*pSrcpoints to the in-place buffer of floating-point data type.
[in]fftLenlength of the FFT.
[in]*pCoefpoints to the twiddle coefficient buffer.
[in]twidCoefModifiertwiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+
+
+
Returns:
none.
+

end of CFFT_CIFFT group

+ +

Definition at line 223 of file arm_cfft_radix4_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_radix4_butterfly_inverse_f32 (float32_t pSrc,
uint16_t  fftLen,
float32_t pCoef,
uint16_t  twidCoefModifier,
float32_t  onebyfftLen 
)
+
+
+ +

Core function for the floating-point CIFFT butterfly process.

+
Parameters:
+ + + + + + +
[in,out]*pSrcpoints to the in-place buffer of floating-point data type.
[in]fftLenlength of the FFT.
[in]*pCoefpoints to twiddle coefficient buffer.
[in]twidCoefModifiertwiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
[in]onebyfftLenvalue of 1/fftLen.
+
+
+
Returns:
none.
+ +

Definition at line 660 of file arm_cfft_radix4_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_bitreversal_f32 (float32_t pSrc,
uint16_t  fftSize,
uint16_t  bitRevFactor,
uint16_t *  pBitRevTab 
)
+
+
+ +

In-place bit reversal function.

+
Parameters:
+ + + + + +
[in,out]*pSrcpoints to the in-place buffer of floating-point data type.
[in]fftSizelength of the FFT.
[in]bitRevFactorbit reversal modifier that supports different size FFTs with the same bit reversal table.
[in]*pBitRevTabpoints to the bit reversal table.
+
+
+
Returns:
none.
+ +

Definition at line 1177 of file arm_cfft_radix4_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_radix4_butterfly_q31 (q31_t pSrc,
uint32_t  fftLen,
q31_t pCoef,
uint32_t  twidCoefModifier 
)
+
+
+ +

Core function for the Q31 CFFT butterfly process.

+
Parameters:
+ + + + + +
[in,out]*pSrcpoints to the in-place buffer of Q31 data type.
[in]fftLenlength of the FFT.
[in]*pCoefpoints to twiddle coefficient buffer.
[in]twidCoefModifiertwiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+
+
+
Returns:
none.
+

end of CFFT_CIFFT group

+
Parameters:
+ + + + + +
[in,out]*pSrcpoints to the in-place buffer of Q31 data type.
[in]fftLenlength of the FFT.
[in]*pCoefpoints to twiddle coefficient buffer.
[in]twidCoefModifiertwiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+
+
+
Returns:
none.
+ +

Definition at line 139 of file arm_cfft_radix4_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_radix4_butterfly_inverse_q31 (q31_t pSrc,
uint32_t  fftLen,
q31_t pCoef,
uint32_t  twidCoefModifier 
)
+
+
+ +

Core function for the Q31 CIFFT butterfly process.

+
Parameters:
+ + + + + +
[in,out]*pSrcpoints to the in-place buffer of Q31 data type.
[in]fftLenlength of the FFT.
[in]*pCoefpoints to twiddle coefficient buffer.
[in]twidCoefModifiertwiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+
+
+
Returns:
none.
+ +

Definition at line 517 of file arm_cfft_radix4_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_bitreversal_q31 (q31_t pSrc,
uint32_t  fftLen,
uint16_t  bitRevFactor,
uint16_t *  pBitRevTab 
)
+
+
+ +

In-place bit reversal function.

+
Parameters:
+ + + + + +
[in,out]*pSrcpoints to the in-place buffer of Q31 data type.
[in]fftLenlength of the FFT.
[in]bitRevFactorbit reversal modifier that supports different size FFTs with the same bit reversal table
[in]*pBitRevTabpoints to bit reversal table.
+
+
+
Returns:
none.
+ +

Definition at line 848 of file arm_cfft_radix4_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_radix4_butterfly_q15 (q15_t pSrc16,
uint32_t  fftLen,
q15_t pCoef16,
uint32_t  twidCoefModifier 
)
+
+
+ +

Core function for the Q15 CFFT butterfly process.

+
Parameters:
+ + + + + +
[in,out]*pSrc16points to the in-place buffer of Q15 data type.
[in]fftLenlength of the FFT.
[in]*pCoef16points to twiddle coefficient buffer.
[in]twidCoefModifiertwiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+
+
+
Returns:
none.
+

end of CFFT_CIFFT group

+
Parameters:
+ + + + + +
[in,out]*pSrc16points to the in-place buffer of Q15 data type.
[in]fftLenlength of the FFT.
[in]*pCoef16points to twiddle coefficient buffer.
[in]twidCoefModifiertwiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+
+
+
Returns:
none.
+ +

Definition at line 138 of file arm_cfft_radix4_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_radix4_butterfly_inverse_q15 (q15_t pSrc16,
uint32_t  fftLen,
q15_t pCoef16,
uint32_t  twidCoefModifier 
)
+
+
+ +

Core function for the Q15 CIFFT butterfly process.

+
Parameters:
+ + + + + +
[in,out]*pSrc16points to the in-place buffer of Q15 data type.
[in]fftLenlength of the FFT.
[in]*pCoef16points to twiddle coefficient buffer.
[in]twidCoefModifiertwiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+
+
+
Returns:
none.
+ +

Definition at line 1053 of file arm_cfft_radix4_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_bitreversal_q15 (q15_t pSrc,
uint32_t  fftLen,
uint16_t  bitRevFactor,
uint16_t *  pBitRevTab 
)
+
+
+ +

In-place bit reversal function.

+
Parameters:
+ + + + + +
[in,out]*pSrcpoints to the in-place buffer of Q15 data type.
[in]fftLenlength of the FFT.
[in]bitRevFactorbit reversal modifier that supports different size FFTs with the same bit reversal table
[in]*pBitRevTabpoints to bit reversal table.
+
+
+
Returns:
none.
+ +

Definition at line 1906 of file arm_cfft_radix4_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE void arm_circularWrite_f32 (int32_t *  circBuffer,
int32_t  L,
uint16_t *  writeOffset,
int32_t  bufferInc,
const int32_t *  src,
int32_t  srcInc,
uint32_t  blockSize 
) [static]
+
+
+ +

floating-point Circular write function.

+

end of SQRT group

+ +

Definition at line 5751 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE void arm_circularRead_f32 (int32_t *  circBuffer,
int32_t  L,
int32_t *  readOffset,
int32_t  bufferInc,
int32_t *  dst,
int32_t *  dst_base,
int32_t  dst_length,
int32_t  dstInc,
uint32_t  blockSize 
) [static]
+
+
+ +

floating-point Circular Read function.

+ +

Definition at line 5796 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE void arm_circularWrite_q15 (q15_t circBuffer,
int32_t  L,
uint16_t *  writeOffset,
int32_t  bufferInc,
const q15_t src,
int32_t  srcInc,
uint32_t  blockSize 
) [static]
+
+
+ +

Q15 Circular write function.

+ +

Definition at line 5851 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE void arm_circularRead_q15 (q15_t circBuffer,
int32_t  L,
int32_t *  readOffset,
int32_t  bufferInc,
q15_t dst,
q15_t dst_base,
int32_t  dst_length,
int32_t  dstInc,
uint32_t  blockSize 
) [static]
+
+
+ +

Q15 Circular Read function.

+ +

Definition at line 5896 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE void arm_circularWrite_q7 (q7_t circBuffer,
int32_t  L,
uint16_t *  writeOffset,
int32_t  bufferInc,
const q7_t src,
int32_t  srcInc,
uint32_t  blockSize 
) [static]
+
+
+ +

Q7 Circular write function.

+ +

Definition at line 5953 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE void arm_circularRead_q7 (q7_t circBuffer,
int32_t  L,
int32_t *  readOffset,
int32_t  bufferInc,
q7_t dst,
q7_t dst_base,
int32_t  dst_length,
int32_t  dstInc,
uint32_t  blockSize 
) [static]
+
+
+ +

Q7 Circular Read function.

+ +

Definition at line 5998 of file arm_math.h.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__math_8h_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__math_8h_source.html new file mode 100644 index 000000000..27f1cf8b9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__math_8h_source.html @@ -0,0 +1,3817 @@ + + + + +CMSIS DSP Software Library: arm_math.h Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__matrix__example__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__matrix__example__f32_8c.html new file mode 100644 index 000000000..397df9f14 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__matrix__example__f32_8c.html @@ -0,0 +1,275 @@ + + + + +CMSIS DSP Software Library: arm_matrix_example_f32.c File Reference + + + + + + + + + +
+ +
+

arm_matrix_example_f32.c File Reference

+
+
+#include "arm_math.h"
+#include "math_helper.h"
+ +

Go to the source code of this file.

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

+Defines

#define SNR_THRESHOLD   90

+Functions

int32_t main (void)

+Variables

const float32_t B_f32 [4]
const float32_t A_f32 [16]
float32_t AT_f32 [16]
float32_t ATMA_f32 [16]
float32_t ATMAI_f32 [16]
float32_t X_f32 [4]
const float32_t xRef_f32 [4] = {73.0, 8.0, 21.25, 2.875}
float32_t snr
+

Define Documentation

+ +
+
+ + + + +
#define SNR_THRESHOLD   90
+
+
+ +

Definition at line 80 of file arm_matrix_example_f32.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
int32_t main (void  )
+
+
+ +

Definition at line 130 of file arm_matrix_example_f32.c.

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
const float32_t B_f32[4]
+
+
+Initial value:
  
+{    
+    782.0, 7577.0, 470.0, 4505.0 
+}
+
Examples:
arm_matrix_example_f32.c.
+
+

Definition at line 87 of file arm_matrix_example_f32.c.

+ +
+
+ +
+
+ + + + +
const float32_t A_f32[16]
+
+
+Initial value:
  
+{ 
+        
+    1.0,        32.0,       4.0,        128.0,  
+    1.0,        32.0,       64.0,       2048.0, 
+    1.0,        16.0,       4.0,        64.0, 
+    1.0,        16.0,       64.0,       1024.0, 
+}
+
Examples:
arm_matrix_example_f32.c.
+
+

Definition at line 96 of file arm_matrix_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t AT_f32[16]
+
+
+
Examples:
arm_matrix_example_f32.c.
+
+

Definition at line 110 of file arm_matrix_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t ATMA_f32[16]
+
+
+
Examples:
arm_matrix_example_f32.c.
+
+

Definition at line 112 of file arm_matrix_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t ATMAI_f32[16]
+
+
+
Examples:
arm_matrix_example_f32.c.
+
+

Definition at line 114 of file arm_matrix_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t X_f32[4]
+
+
+
Examples:
arm_matrix_example_f32.c.
+
+

Definition at line 116 of file arm_matrix_example_f32.c.

+ +
+
+ +
+
+ + + + +
const float32_t xRef_f32[4] = {73.0, 8.0, 21.25, 2.875}
+
+
+
Examples:
arm_matrix_example_f32.c.
+
+

Definition at line 121 of file arm_matrix_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t snr
+
+
+ +

Definition at line 123 of file arm_matrix_example_f32.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__matrix__example__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__matrix__example__f32_8c_source.html new file mode 100644 index 000000000..56288e945 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__matrix__example__f32_8c_source.html @@ -0,0 +1,236 @@ + + + + +CMSIS DSP Software Library: arm_matrix_example_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__f32_8c.html new file mode 100644 index 000000000..cebc886bb --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_max_f32.c File Reference + + + + + + + + + +
+ +
+

arm_max_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_max_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult, uint32_t *pIndex)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__f32_8c_source.html new file mode 100644 index 000000000..d6c3f7ef9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__f32_8c_source.html @@ -0,0 +1,170 @@ + + + + +CMSIS DSP Software Library: arm_max_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__q15_8c.html new file mode 100644 index 000000000..5c404dd43 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_max_q15.c File Reference + + + + + + + + + +
+ +
+

arm_max_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_max_q15 (q15_t *pSrc, uint32_t blockSize, q15_t *pResult, uint32_t *pIndex)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__q15_8c_source.html new file mode 100644 index 000000000..ab3f7c2ed --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__q15_8c_source.html @@ -0,0 +1,170 @@ + + + + +CMSIS DSP Software Library: arm_max_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__q31_8c.html new file mode 100644 index 000000000..cb5bf9c69 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_max_q31.c File Reference + + + + + + + + + +
+ +
+

arm_max_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_max_q31 (q31_t *pSrc, uint32_t blockSize, q31_t *pResult, uint32_t *pIndex)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__q31_8c_source.html new file mode 100644 index 000000000..f673f6905 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__q31_8c_source.html @@ -0,0 +1,172 @@ + + + + +CMSIS DSP Software Library: arm_max_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__q7_8c.html new file mode 100644 index 000000000..0795a1a25 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_max_q7.c File Reference + + + + + + + + + +
+ +
+

arm_max_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_max_q7 (q7_t *pSrc, uint32_t blockSize, q7_t *pResult, uint32_t *pIndex)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__q7_8c_source.html new file mode 100644 index 000000000..accd44897 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__max__q7_8c_source.html @@ -0,0 +1,257 @@ + + + + +CMSIS DSP Software Library: arm_max_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__f32_8c.html new file mode 100644 index 000000000..8893326b1 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mean_f32.c File Reference + + + + + + + + + +
+ +
+

arm_mean_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_mean_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__f32_8c_source.html new file mode 100644 index 000000000..886fcdca2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__f32_8c_source.html @@ -0,0 +1,160 @@ + + + + +CMSIS DSP Software Library: arm_mean_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__q15_8c.html new file mode 100644 index 000000000..8af8eb7ba --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mean_q15.c File Reference + + + + + + + + + +
+ +
+

arm_mean_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_mean_q15 (q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__q15_8c_source.html new file mode 100644 index 000000000..18d8b56e6 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__q15_8c_source.html @@ -0,0 +1,160 @@ + + + + +CMSIS DSP Software Library: arm_mean_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__q31_8c.html new file mode 100644 index 000000000..e72b7618e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mean_q31.c File Reference + + + + + + + + + +
+ +
+

arm_mean_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_mean_q31 (q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__q31_8c_source.html new file mode 100644 index 000000000..5fb51c398 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__q31_8c_source.html @@ -0,0 +1,160 @@ + + + + +CMSIS DSP Software Library: arm_mean_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__q7_8c.html new file mode 100644 index 000000000..4a58692ff --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mean_q7.c File Reference + + + + + + + + + +
+ +
+

arm_mean_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_mean_q7 (q7_t *pSrc, uint32_t blockSize, q7_t *pResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__q7_8c_source.html new file mode 100644 index 000000000..e28148b05 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mean__q7_8c_source.html @@ -0,0 +1,160 @@ + + + + +CMSIS DSP Software Library: arm_mean_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__f32_8c.html new file mode 100644 index 000000000..806e098ba --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_min_f32.c File Reference + + + + + + + + + +
+ +
+

arm_min_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_min_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult, uint32_t *pIndex)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__f32_8c_source.html new file mode 100644 index 000000000..bf395b326 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__f32_8c_source.html @@ -0,0 +1,175 @@ + + + + +CMSIS DSP Software Library: arm_min_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__q15_8c.html new file mode 100644 index 000000000..52a2c72ba --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_min_q15.c File Reference + + + + + + + + + +
+ +
+

arm_min_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_min_q15 (q15_t *pSrc, uint32_t blockSize, q15_t *pResult, uint32_t *pIndex)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__q15_8c_source.html new file mode 100644 index 000000000..30600e1ce --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__q15_8c_source.html @@ -0,0 +1,176 @@ + + + + +CMSIS DSP Software Library: arm_min_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__q31_8c.html new file mode 100644 index 000000000..97d75fa67 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_min_q31.c File Reference + + + + + + + + + +
+ +
+

arm_min_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_min_q31 (q31_t *pSrc, uint32_t blockSize, q31_t *pResult, uint32_t *pIndex)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__q31_8c_source.html new file mode 100644 index 000000000..8e268d04c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__q31_8c_source.html @@ -0,0 +1,174 @@ + + + + +CMSIS DSP Software Library: arm_min_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__q7_8c.html new file mode 100644 index 000000000..c16961930 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_min_q7.c File Reference + + + + + + + + + +
+ +
+

arm_min_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_min_q7 (q7_t *pSrc, uint32_t blockSize, q7_t *pResult, uint32_t *pIndex)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__q7_8c_source.html new file mode 100644 index 000000000..e7802851d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__min__q7_8c_source.html @@ -0,0 +1,254 @@ + + + + +CMSIS DSP Software Library: arm_min_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__f32_8c.html new file mode 100644 index 000000000..0601319eb --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mult_f32.c File Reference + + + + + + + + + +
+ +
+

arm_mult_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_mult_f32 (float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__f32_8c_source.html new file mode 100644 index 000000000..e89956bd4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__f32_8c_source.html @@ -0,0 +1,166 @@ + + + + +CMSIS DSP Software Library: arm_mult_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__q15_8c.html new file mode 100644 index 000000000..9c2068d44 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mult_q15.c File Reference + + + + + + + + + +
+ +
+

arm_mult_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_mult_q15 (q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__q15_8c_source.html new file mode 100644 index 000000000..549addebd --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__q15_8c_source.html @@ -0,0 +1,165 @@ + + + + +CMSIS DSP Software Library: arm_mult_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__q31_8c.html new file mode 100644 index 000000000..154851dcc --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mult_q31.c File Reference + + + + + + + + + +
+ +
+

arm_mult_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_mult_q31 (q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__q31_8c_source.html new file mode 100644 index 000000000..c235c1d17 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__q31_8c_source.html @@ -0,0 +1,168 @@ + + + + +CMSIS DSP Software Library: arm_mult_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__q7_8c.html new file mode 100644 index 000000000..e0df57d95 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_mult_q7.c File Reference + + + + + + + + + +
+ +
+

arm_mult_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_mult_q7 (q7_t *pSrcA, q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__q7_8c_source.html new file mode 100644 index 000000000..a7a67901b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__mult__q7_8c_source.html @@ -0,0 +1,172 @@ + + + + +CMSIS DSP Software Library: arm_mult_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__f32_8c.html new file mode 100644 index 000000000..08dbd5f35 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_negate_f32.c File Reference + + + + + + + + + +
+ +
+

arm_negate_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_negate_f32 (float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__f32_8c_source.html new file mode 100644 index 000000000..2980f57be --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__f32_8c_source.html @@ -0,0 +1,160 @@ + + + + +CMSIS DSP Software Library: arm_negate_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__q15_8c.html new file mode 100644 index 000000000..28dc3d644 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_negate_q15.c File Reference + + + + + + + + + +
+ +
+

arm_negate_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_negate_q15 (q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__q15_8c_source.html new file mode 100644 index 000000000..cfda4c81b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__q15_8c_source.html @@ -0,0 +1,188 @@ + + + + +CMSIS DSP Software Library: arm_negate_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__q31_8c.html new file mode 100644 index 000000000..fa798f017 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_negate_q31.c File Reference + + + + + + + + + +
+ +
+

arm_negate_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_negate_q31 (q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__q31_8c_source.html new file mode 100644 index 000000000..fd34eb2dc --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__q31_8c_source.html @@ -0,0 +1,167 @@ + + + + +CMSIS DSP Software Library: arm_negate_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__q7_8c.html new file mode 100644 index 000000000..43adc0e98 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_negate_q7.c File Reference + + + + + + + + + +
+ +
+

arm_negate_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_negate_q7 (q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__q7_8c_source.html new file mode 100644 index 000000000..6aff496a9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__negate__q7_8c_source.html @@ -0,0 +1,170 @@ + + + + +CMSIS DSP Software Library: arm_negate_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__f32_8c.html new file mode 100644 index 000000000..8c6ca5f21 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_offset_f32.c File Reference + + + + + + + + + +
+ +
+

arm_offset_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_offset_f32 (float32_t *pSrc, float32_t offset, float32_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__f32_8c_source.html new file mode 100644 index 000000000..b53a1b2f5 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__f32_8c_source.html @@ -0,0 +1,161 @@ + + + + +CMSIS DSP Software Library: arm_offset_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__q15_8c.html new file mode 100644 index 000000000..f773a85a0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_offset_q15.c File Reference + + + + + + + + + +
+ +
+

arm_offset_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_offset_q15 (q15_t *pSrc, q15_t offset, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__q15_8c_source.html new file mode 100644 index 000000000..5b96cf87b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__q15_8c_source.html @@ -0,0 +1,175 @@ + + + + +CMSIS DSP Software Library: arm_offset_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__q31_8c.html new file mode 100644 index 000000000..ac3b46415 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_offset_q31.c File Reference + + + + + + + + + +
+ +
+

arm_offset_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_offset_q31 (q31_t *pSrc, q31_t offset, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__q31_8c_source.html new file mode 100644 index 000000000..6739240f2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__q31_8c_source.html @@ -0,0 +1,173 @@ + + + + +CMSIS DSP Software Library: arm_offset_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__q7_8c.html new file mode 100644 index 000000000..4c3e36e56 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_offset_q7.c File Reference + + + + + + + + + +
+ +
+

arm_offset_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_offset_q7 (q7_t *pSrc, q7_t offset, q7_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__q7_8c_source.html new file mode 100644 index 000000000..d8bd330eb --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__offset__q7_8c_source.html @@ -0,0 +1,174 @@ + + + + +CMSIS DSP Software Library: arm_offset_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__init__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__init__f32_8c.html new file mode 100644 index 000000000..9923ee89b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__init__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_pid_init_f32.c File Reference + + + + + + + + + +
+ +
+

arm_pid_init_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_pid_init_f32 (arm_pid_instance_f32 *S, int32_t resetStateFlag)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__init__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__init__f32_8c_source.html new file mode 100644 index 000000000..3ba46253f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__init__f32_8c_source.html @@ -0,0 +1,128 @@ + + + + +CMSIS DSP Software Library: arm_pid_init_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__init__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__init__q15_8c.html new file mode 100644 index 000000000..911792ef2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__init__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_pid_init_q15.c File Reference + + + + + + + + + +
+ +
+

arm_pid_init_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_pid_init_q15 (arm_pid_instance_q15 *S, int32_t resetStateFlag)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__init__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__init__q15_8c_source.html new file mode 100644 index 000000000..ddd14a47e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__init__q15_8c_source.html @@ -0,0 +1,163 @@ + + + + +CMSIS DSP Software Library: arm_pid_init_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__init__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__init__q31_8c.html new file mode 100644 index 000000000..91105d2ad --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__init__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_pid_init_q31.c File Reference + + + + + + + + + +
+ +
+

arm_pid_init_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_pid_init_q31 (arm_pid_instance_q31 *S, int32_t resetStateFlag)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__init__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__init__q31_8c_source.html new file mode 100644 index 000000000..abd1ce76a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__init__q31_8c_source.html @@ -0,0 +1,148 @@ + + + + +CMSIS DSP Software Library: arm_pid_init_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__reset__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__reset__f32_8c.html new file mode 100644 index 000000000..99c811298 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__reset__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_pid_reset_f32.c File Reference + + + + + + + + + +
+ +
+

arm_pid_reset_f32.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__reset__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__reset__f32_8c_source.html new file mode 100644 index 000000000..f499a1365 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__reset__f32_8c_source.html @@ -0,0 +1,112 @@ + + + + +CMSIS DSP Software Library: arm_pid_reset_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__reset__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__reset__q15_8c.html new file mode 100644 index 000000000..20d303922 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__reset__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_pid_reset_q15.c File Reference + + + + + + + + + +
+ +
+

arm_pid_reset_q15.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__reset__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__reset__q15_8c_source.html new file mode 100644 index 000000000..333448d45 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__reset__q15_8c_source.html @@ -0,0 +1,111 @@ + + + + +CMSIS DSP Software Library: arm_pid_reset_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__reset__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__reset__q31_8c.html new file mode 100644 index 000000000..399b1afdb --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__reset__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_pid_reset_q31.c File Reference + + + + + + + + + +
+ +
+

arm_pid_reset_q31.c File Reference

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__reset__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__reset__q31_8c_source.html new file mode 100644 index 000000000..944673608 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__pid__reset__q31_8c_source.html @@ -0,0 +1,112 @@ + + + + +CMSIS DSP Software Library: arm_pid_reset_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__f32_8c.html new file mode 100644 index 000000000..59073bbd4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_power_f32.c File Reference + + + + + + + + + +
+ +
+

arm_power_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_power_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__f32_8c_source.html new file mode 100644 index 000000000..2e36246e1 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__f32_8c_source.html @@ -0,0 +1,172 @@ + + + + +CMSIS DSP Software Library: arm_power_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__q15_8c.html new file mode 100644 index 000000000..14628a15f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_power_q15.c File Reference + + + + + + + + + +
+ +
+

arm_power_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_power_q15 (q15_t *pSrc, uint32_t blockSize, q63_t *pResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__q15_8c_source.html new file mode 100644 index 000000000..89bc7515a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__q15_8c_source.html @@ -0,0 +1,181 @@ + + + + +CMSIS DSP Software Library: arm_power_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__q31_8c.html new file mode 100644 index 000000000..9e8f09453 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_power_q31.c File Reference + + + + + + + + + +
+ +
+

arm_power_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_power_q31 (q31_t *pSrc, uint32_t blockSize, q63_t *pResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__q31_8c_source.html new file mode 100644 index 000000000..1bf163856 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__q31_8c_source.html @@ -0,0 +1,171 @@ + + + + +CMSIS DSP Software Library: arm_power_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__q7_8c.html new file mode 100644 index 000000000..e402b5ed2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_power_q7.c File Reference + + + + + + + + + +
+ +
+

arm_power_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_power_q7 (q7_t *pSrc, uint32_t blockSize, q31_t *pResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__q7_8c_source.html new file mode 100644 index 000000000..62f6e0742 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__power__q7_8c_source.html @@ -0,0 +1,177 @@ + + + + +CMSIS DSP Software Library: arm_power_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q15__to__float_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q15__to__float_8c.html new file mode 100644 index 000000000..f0630f83e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q15__to__float_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_q15_to_float.c File Reference + + + + + + + + + +
+ +
+

arm_q15_to_float.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_q15_to_float (q15_t *pSrc, float32_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q15__to__float_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q15__to__float_8c_source.html new file mode 100644 index 000000000..861b56be2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q15__to__float_8c_source.html @@ -0,0 +1,159 @@ + + + + +CMSIS DSP Software Library: arm_q15_to_float.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q15__to__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q15__to__q31_8c.html new file mode 100644 index 000000000..d629350cf --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q15__to__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_q15_to_q31.c File Reference + + + + + + + + + +
+ +
+

arm_q15_to_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_q15_to_q31 (q15_t *pSrc, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q15__to__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q15__to__q31_8c_source.html new file mode 100644 index 000000000..cc51fface --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q15__to__q31_8c_source.html @@ -0,0 +1,159 @@ + + + + +CMSIS DSP Software Library: arm_q15_to_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q15__to__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q15__to__q7_8c.html new file mode 100644 index 000000000..eeff234ba --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q15__to__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_q15_to_q7.c File Reference + + + + + + + + + +
+ +
+

arm_q15_to_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_q15_to_q7 (q15_t *pSrc, q7_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q15__to__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q15__to__q7_8c_source.html new file mode 100644 index 000000000..3d32865b6 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q15__to__q7_8c_source.html @@ -0,0 +1,159 @@ + + + + +CMSIS DSP Software Library: arm_q15_to_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q31__to__float_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q31__to__float_8c.html new file mode 100644 index 000000000..83104ea81 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q31__to__float_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_q31_to_float.c File Reference + + + + + + + + + +
+ +
+

arm_q31_to_float.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_q31_to_float (q31_t *pSrc, float32_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q31__to__float_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q31__to__float_8c_source.html new file mode 100644 index 000000000..4377b564f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q31__to__float_8c_source.html @@ -0,0 +1,159 @@ + + + + +CMSIS DSP Software Library: arm_q31_to_float.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q31__to__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q31__to__q15_8c.html new file mode 100644 index 000000000..15d1d1821 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q31__to__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_q31_to_q15.c File Reference + + + + + + + + + +
+ +
+

arm_q31_to_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_q31_to_q15 (q31_t *pSrc, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q31__to__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q31__to__q15_8c_source.html new file mode 100644 index 000000000..7c717aa9f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q31__to__q15_8c_source.html @@ -0,0 +1,159 @@ + + + + +CMSIS DSP Software Library: arm_q31_to_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q31__to__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q31__to__q7_8c.html new file mode 100644 index 000000000..6bc04e71f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q31__to__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_q31_to_q7.c File Reference + + + + + + + + + +
+ +
+

arm_q31_to_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_q31_to_q7 (q31_t *pSrc, q7_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q31__to__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q31__to__q7_8c_source.html new file mode 100644 index 000000000..123304a98 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q31__to__q7_8c_source.html @@ -0,0 +1,159 @@ + + + + +CMSIS DSP Software Library: arm_q31_to_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q7__to__float_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q7__to__float_8c.html new file mode 100644 index 000000000..cdecd2284 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q7__to__float_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_q7_to_float.c File Reference + + + + + + + + + +
+ +
+

arm_q7_to_float.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_q7_to_float (q7_t *pSrc, float32_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q7__to__float_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q7__to__float_8c_source.html new file mode 100644 index 000000000..c1a91ebbc --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q7__to__float_8c_source.html @@ -0,0 +1,159 @@ + + + + +CMSIS DSP Software Library: arm_q7_to_float.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q7__to__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q7__to__q15_8c.html new file mode 100644 index 000000000..751852790 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q7__to__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_q7_to_q15.c File Reference + + + + + + + + + +
+ +
+

arm_q7_to_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_q7_to_q15 (q7_t *pSrc, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q7__to__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q7__to__q15_8c_source.html new file mode 100644 index 000000000..6cad6a62d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q7__to__q15_8c_source.html @@ -0,0 +1,159 @@ + + + + +CMSIS DSP Software Library: arm_q7_to_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q7__to__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q7__to__q31_8c.html new file mode 100644 index 000000000..39c1986e8 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q7__to__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_q7_to_q31.c File Reference + + + + + + + + + +
+ +
+

arm_q7_to_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_q7_to_q31 (q7_t *pSrc, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q7__to__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q7__to__q31_8c_source.html new file mode 100644 index 000000000..991a96e35 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__q7__to__q31_8c_source.html @@ -0,0 +1,159 @@ + + + + +CMSIS DSP Software Library: arm_q7_to_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__f32_8c.html new file mode 100644 index 000000000..75be7ae2c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__f32_8c.html @@ -0,0 +1,221 @@ + + + + +CMSIS DSP Software Library: arm_rfft_f32.c File Reference + + + + + + + + + +
+ +
+

arm_rfft_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + +

+Functions

void arm_split_rfft_f32 (float32_t *pSrc, uint32_t fftLen, float32_t *pATable, float32_t *pBTable, float32_t *pDst, uint32_t modifier)
void arm_split_rifft_f32 (float32_t *pSrc, uint32_t fftLen, float32_t *pATable, float32_t *pBTable, float32_t *pDst, uint32_t modifier)
void arm_rfft_f32 (const arm_rfft_instance_f32 *S, float32_t *pSrc, float32_t *pDst)
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_split_rfft_f32 (float32_t pSrc,
uint32_t  fftLen,
float32_t pATable,
float32_t pBTable,
float32_t pDst,
uint32_t  modifier 
)
+
+
+ +

Core Real FFT process.

+

end of RFFT_RIFFT group

+
Parameters:
+ + + + + + + +
[in]*pSrcpoints to the input buffer.
[in]fftLenlength of FFT.
[in]*pATablepoints to the twiddle Coef A buffer.
[in]*pBTablepoints to the twiddle Coef B buffer.
[out]*pDstpoints to the output buffer.
[in]modifiertwiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+
+
+
Returns:
none.
+ +

Definition at line 218 of file arm_rfft_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_split_rifft_f32 (float32_t pSrc,
uint32_t  fftLen,
float32_t pATable,
float32_t pBTable,
float32_t pDst,
uint32_t  modifier 
)
+
+
+ +

Core Real IFFT process.

+
Parameters:
+ + + + + + + +
[in]*pSrcpoints to the input buffer.
[in]fftLenlength of FFT.
[in]*pATablepoints to the twiddle Coef A buffer.
[in]*pBTablepoints to the twiddle Coef B buffer.
[out]*pDstpoints to the output buffer.
[in]modifiertwiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+
+
+
Returns:
none.
+ +

Definition at line 316 of file arm_rfft_f32.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__f32_8c_source.html new file mode 100644 index 000000000..ffd922b02 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__f32_8c_source.html @@ -0,0 +1,334 @@ + + + + +CMSIS DSP Software Library: arm_rfft_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__init__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__init__f32_8c.html new file mode 100644 index 000000000..87b07d60e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__init__f32_8c.html @@ -0,0 +1,88 @@ + + + + +CMSIS DSP Software Library: arm_rfft_init_f32.c File Reference + + + + + + + + + +
+ +
+

arm_rfft_init_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + + +

+Functions

arm_status arm_rfft_init_f32 (arm_rfft_instance_f32 *S, arm_cfft_radix4_instance_f32 *S_CFFT, uint32_t fftLenReal, uint32_t ifftFlagR, uint32_t bitReverseFlag)

+Variables

static const float32_t realCoefA [2048]
static const float32_t realCoefB [2048]
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__init__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__init__f32_8c_source.html new file mode 100644 index 000000000..ebb0ad6ee --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__init__f32_8c_source.html @@ -0,0 +1,1720 @@ + + + + +CMSIS DSP Software Library: arm_rfft_init_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__init__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__init__q15_8c.html new file mode 100644 index 000000000..bbdf7e7f0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__init__q15_8c.html @@ -0,0 +1,88 @@ + + + + +CMSIS DSP Software Library: arm_rfft_init_q15.c File Reference + + + + + + + + + +
+ +
+

arm_rfft_init_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + + +

+Functions

arm_status arm_rfft_init_q15 (arm_rfft_instance_q15 *S, arm_cfft_radix4_instance_q15 *S_CFFT, uint32_t fftLenReal, uint32_t ifftFlagR, uint32_t bitReverseFlag)

+Variables

static const q15_t realCoefAQ15 [2048]
static const q15_t realCoefBQ15 [2048]
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__init__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__init__q15_8c_source.html new file mode 100644 index 000000000..db98a1f11 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__init__q15_8c_source.html @@ -0,0 +1,693 @@ + + + + +CMSIS DSP Software Library: arm_rfft_init_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__init__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__init__q31_8c.html new file mode 100644 index 000000000..2d6216db1 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__init__q31_8c.html @@ -0,0 +1,88 @@ + + + + +CMSIS DSP Software Library: arm_rfft_init_q31.c File Reference + + + + + + + + + +
+ +
+

arm_rfft_init_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + + +

+Functions

arm_status arm_rfft_init_q31 (arm_rfft_instance_q31 *S, arm_cfft_radix4_instance_q31 *S_CFFT, uint32_t fftLenReal, uint32_t ifftFlagR, uint32_t bitReverseFlag)

+Variables

const q31_t realCoefAQ31 [1024]
const q31_t realCoefBQ31 [1024]
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__init__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__init__q31_8c_source.html new file mode 100644 index 000000000..4191d96b0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__init__q31_8c_source.html @@ -0,0 +1,688 @@ + + + + +CMSIS DSP Software Library: arm_rfft_init_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__q15_8c.html new file mode 100644 index 000000000..9b4d72765 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__q15_8c.html @@ -0,0 +1,221 @@ + + + + +CMSIS DSP Software Library: arm_rfft_q15.c File Reference + + + + + + + + + +
+ +
+

arm_rfft_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + +

+Functions

void arm_split_rfft_q15 (q15_t *pSrc, uint32_t fftLen, q15_t *pATable, q15_t *pBTable, q15_t *pDst, uint32_t modifier)
void arm_split_rifft_q15 (q15_t *pSrc, uint32_t fftLen, q15_t *pATable, q15_t *pBTable, q15_t *pDst, uint32_t modifier)
void arm_rfft_q15 (const arm_rfft_instance_q15 *S, q15_t *pSrc, q15_t *pDst)
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_split_rfft_q15 (q15_t pSrc,
uint32_t  fftLen,
q15_t pATable,
q15_t pBTable,
q15_t pDst,
uint32_t  modifier 
)
+
+
+ +

Core Real FFT process.

+

end of RFFT_RIFFT group

+
Parameters:
+ + + + + + + +
*pSrcpoints to the input buffer.
fftLenlength of FFT.
*pATablepoints to the A twiddle Coef buffer.
*pBTablepoints to the B twiddle Coef buffer.
*pDstpoints to the output buffer.
modifiertwiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+
+
+
Returns:
none. The function implements a Real FFT
+ +

Definition at line 143 of file arm_rfft_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_split_rifft_q15 (q15_t pSrc,
uint32_t  fftLen,
q15_t pATable,
q15_t pBTable,
q15_t pDst,
uint32_t  modifier 
)
+
+
+ +

Core Real IFFT process.

+
Parameters:
+ + + + + + + +
[in]*pSrcpoints to the input buffer.
[in]fftLenlength of FFT.
[in]*pATablepoints to the twiddle Coef A buffer.
[in]*pBTablepoints to the twiddle Coef B buffer.
[out]*pDstpoints to the output buffer.
[in]modifiertwiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+
+
+
Returns:
none. The function implements a Real IFFT
+ +

Definition at line 312 of file arm_rfft_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__q15_8c_source.html new file mode 100644 index 000000000..02fd37aed --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__q15_8c_source.html @@ -0,0 +1,480 @@ + + + + +CMSIS DSP Software Library: arm_rfft_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__q31_8c.html new file mode 100644 index 000000000..7fb5a637c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__q31_8c.html @@ -0,0 +1,221 @@ + + + + +CMSIS DSP Software Library: arm_rfft_q31.c File Reference + + + + + + + + + +
+ +
+

arm_rfft_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + +

+Functions

void arm_split_rfft_q31 (q31_t *pSrc, uint32_t fftLen, q31_t *pATable, q31_t *pBTable, q31_t *pDst, uint32_t modifier)
void arm_split_rifft_q31 (q31_t *pSrc, uint32_t fftLen, q31_t *pATable, q31_t *pBTable, q31_t *pDst, uint32_t modifier)
void arm_rfft_q31 (const arm_rfft_instance_q31 *S, q31_t *pSrc, q31_t *pDst)
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_split_rfft_q31 (q31_t pSrc,
uint32_t  fftLen,
q31_t pATable,
q31_t pBTable,
q31_t pDst,
uint32_t  modifier 
)
+
+
+ +

Core Real FFT process.

+

end of RFFT_RIFFT group

+
Parameters:
+ + + + + + + +
[in]*pSrcpoints to the input buffer.
[in]fftLenlength of FFT.
[in]*pATablepoints to the twiddle Coef A buffer.
[in]*pBTablepoints to the twiddle Coef B buffer.
[out]*pDstpoints to the output buffer.
[in]modifiertwiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+
+
+
Returns:
none.
+ +

Definition at line 143 of file arm_rfft_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_split_rifft_q31 (q31_t pSrc,
uint32_t  fftLen,
q31_t pATable,
q31_t pBTable,
q31_t pDst,
uint32_t  modifier 
)
+
+
+ +

Core Real IFFT process.

+
Parameters:
+ + + + + + + +
[in]*pSrcpoints to the input buffer.
[in]fftLenlength of FFT.
[in]*pATablepoints to the twiddle Coef A buffer.
[in]*pBTablepoints to the twiddle Coef B buffer.
[out]*pDstpoints to the output buffer.
[in]modifiertwiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.
+
+
+
Returns:
none.
+ +

Definition at line 249 of file arm_rfft_q31.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__q31_8c_source.html new file mode 100644 index 000000000..a80f27dde --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rfft__q31_8c_source.html @@ -0,0 +1,349 @@ + + + + +CMSIS DSP Software Library: arm_rfft_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rms__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rms__f32_8c.html new file mode 100644 index 000000000..c526d2c9e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rms__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_rms_f32.c File Reference + + + + + + + + + +
+ +
+

arm_rms_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_rms_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rms__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rms__f32_8c_source.html new file mode 100644 index 000000000..ba6472623 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rms__f32_8c_source.html @@ -0,0 +1,167 @@ + + + + +CMSIS DSP Software Library: arm_rms_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rms__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rms__q15_8c.html new file mode 100644 index 000000000..21db5111d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rms__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_rms_q15.c File Reference + + + + + + + + + +
+ +
+

arm_rms_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_rms_q15 (q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rms__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rms__q15_8c_source.html new file mode 100644 index 000000000..ca4320247 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rms__q15_8c_source.html @@ -0,0 +1,193 @@ + + + + +CMSIS DSP Software Library: arm_rms_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rms__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rms__q31_8c.html new file mode 100644 index 000000000..ceb6fcc69 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rms__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_rms_q31.c File Reference + + + + + + + + + +
+ +
+

arm_rms_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_rms_q31 (q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rms__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rms__q31_8c_source.html new file mode 100644 index 000000000..466bc8de6 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__rms__q31_8c_source.html @@ -0,0 +1,183 @@ + + + + +CMSIS DSP Software Library: arm_rms_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__f32_8c.html new file mode 100644 index 000000000..81fdf6650 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_scale_f32.c File Reference + + + + + + + + + +
+ +
+

arm_scale_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_scale_f32 (float32_t *pSrc, float32_t scale, float32_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__f32_8c_source.html new file mode 100644 index 000000000..0b690fcf5 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__f32_8c_source.html @@ -0,0 +1,160 @@ + + + + +CMSIS DSP Software Library: arm_scale_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__q15_8c.html new file mode 100644 index 000000000..82e730a0d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_scale_q15.c File Reference + + + + + + + + + +
+ +
+

arm_scale_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_scale_q15 (q15_t *pSrc, q15_t scaleFract, int8_t shift, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__q15_8c_source.html new file mode 100644 index 000000000..87057c1ac --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__q15_8c_source.html @@ -0,0 +1,207 @@ + + + + +CMSIS DSP Software Library: arm_scale_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__q31_8c.html new file mode 100644 index 000000000..0d981fe1d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_scale_q31.c File Reference + + + + + + + + + +
+ +
+

arm_scale_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_scale_q31 (q31_t *pSrc, q31_t scaleFract, int8_t shift, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__q31_8c_source.html new file mode 100644 index 000000000..ee8e195b5 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__q31_8c_source.html @@ -0,0 +1,163 @@ + + + + +CMSIS DSP Software Library: arm_scale_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__q7_8c.html new file mode 100644 index 000000000..3a83c8078 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_scale_q7.c File Reference + + + + + + + + + +
+ +
+

arm_scale_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_scale_q7 (q7_t *pSrc, q7_t scaleFract, int8_t shift, q7_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__q7_8c_source.html new file mode 100644 index 000000000..cfcb293fa --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__scale__q7_8c_source.html @@ -0,0 +1,187 @@ + + + + +CMSIS DSP Software Library: arm_scale_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__shift__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__shift__q15_8c.html new file mode 100644 index 000000000..0d8998705 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__shift__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_shift_q15.c File Reference + + + + + + + + + +
+ +
+

arm_shift_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_shift_q15 (q15_t *pSrc, int8_t shiftBits, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__shift__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__shift__q15_8c_source.html new file mode 100644 index 000000000..276dd7ac9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__shift__q15_8c_source.html @@ -0,0 +1,286 @@ + + + + +CMSIS DSP Software Library: arm_shift_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__shift__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__shift__q31_8c.html new file mode 100644 index 000000000..741ee906b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__shift__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_shift_q31.c File Reference + + + + + + + + + +
+ +
+

arm_shift_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_shift_q31 (q31_t *pSrc, int8_t shiftBits, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__shift__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__shift__q31_8c_source.html new file mode 100644 index 000000000..0367f45ff --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__shift__q31_8c_source.html @@ -0,0 +1,173 @@ + + + + +CMSIS DSP Software Library: arm_shift_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__shift__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__shift__q7_8c.html new file mode 100644 index 000000000..8d864b910 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__shift__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_shift_q7.c File Reference + + + + + + + + + +
+ +
+

arm_shift_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_shift_q7 (q7_t *pSrc, int8_t shiftBits, q7_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__shift__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__shift__q7_8c_source.html new file mode 100644 index 000000000..343e4a415 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__shift__q7_8c_source.html @@ -0,0 +1,248 @@ + + + + +CMSIS DSP Software Library: arm_shift_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__signal__converge__example__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__signal__converge__example__f32_8c.html new file mode 100644 index 000000000..e7ec791dd --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__signal__converge__example__f32_8c.html @@ -0,0 +1,511 @@ + + + + +CMSIS DSP Software Library: arm_signal_converge_example_f32.c File Reference + + + + + + + + + +
+ +
+

arm_signal_converge_example_f32.c File Reference

+
+
+#include "arm_math.h"
+#include "math_helper.h"
+ +

Go to the source code of this file.

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

+Defines

#define TEST_LENGTH_SAMPLES   1536
#define NUMTAPS   32
#define BLOCKSIZE   32
#define DELTA_ERROR   0.000001f
#define DELTA_COEFF   0.0001f
#define MU   0.5f
#define NUMFRAMES   (TEST_LENGTH_SAMPLES / BLOCKSIZE)

+Functions

arm_status test_signal_converge_example (void)
arm_status test_signal_converge (float32_t *err_signal, uint32_t blockSize)
void getinput (float32_t *input, uint32_t fr_cnt, uint32_t blockSize)
int32_t main (void)

+Variables

float32_t firStateF32 [NUMTAPS+BLOCKSIZE]
arm_fir_instance_f32 LPF_instance
float32_t lmsStateF32 [NUMTAPS+BLOCKSIZE]
float32_t errOutput [TEST_LENGTH_SAMPLES]
arm_lms_norm_instance_f32 lmsNorm_instance
float32_t testInput_f32 [TEST_LENGTH_SAMPLES]
float32_t lmsNormCoeff_f32 [32]
const float32_t FIRCoeff_f32 [32]
float32_t wire1 [BLOCKSIZE]
float32_t wire2 [BLOCKSIZE]
float32_t wire3 [BLOCKSIZE]
float32_t err_signal [BLOCKSIZE]
+

Define Documentation

+ +
+
+ + + + +
#define TEST_LENGTH_SAMPLES   1536
+
+
+ +

Definition at line 100 of file arm_signal_converge_example_f32.c.

+ +
+
+ +
+
+ + + + +
#define NUMTAPS   32
+
+
+
Examples:
arm_signal_converge_example_f32.c.
+
+

Definition at line 101 of file arm_signal_converge_example_f32.c.

+ +
+
+ +
+
+ + + + +
#define BLOCKSIZE   32
+
+
+ +

Definition at line 102 of file arm_signal_converge_example_f32.c.

+ +
+
+ +
+
+ + + + +
#define DELTA_ERROR   0.000001f
+
+
+
Examples:
arm_signal_converge_example_f32.c.
+
+

Definition at line 103 of file arm_signal_converge_example_f32.c.

+ +
+
+ +
+
+ + + + +
#define DELTA_COEFF   0.0001f
+
+
+
Examples:
arm_signal_converge_example_f32.c.
+
+

Definition at line 104 of file arm_signal_converge_example_f32.c.

+ +
+
+ +
+
+ + + + +
#define MU   0.5f
+
+
+
Examples:
arm_signal_converge_example_f32.c.
+
+

Definition at line 105 of file arm_signal_converge_example_f32.c.

+ +
+
+ +
+
+ + + + +
#define NUMFRAMES   (TEST_LENGTH_SAMPLES / BLOCKSIZE)
+
+
+
Examples:
arm_signal_converge_example_f32.c.
+
+

Definition at line 107 of file arm_signal_converge_example_f32.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
arm_status test_signal_converge_example (void  )
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + +
arm_status test_signal_converge (float32_t err_signal,
uint32_t  blockSize 
)
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void getinput (float32_t input,
uint32_t  fr_cnt,
uint32_t  blockSize 
)
+
+ +
+ +
+
+ + + + + + + + +
int32_t main (void  )
+
+
+ +

Definition at line 163 of file arm_signal_converge_example_f32.c.

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
float32_t firStateF32[NUMTAPS+BLOCKSIZE]
+
+ +
+ +
+ +
+
Examples:
arm_signal_converge_example_f32.c.
+
+

Definition at line 114 of file arm_signal_converge_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t lmsStateF32[NUMTAPS+BLOCKSIZE]
+
+
+
Examples:
arm_signal_converge_example_f32.c.
+
+

Definition at line 120 of file arm_signal_converge_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t errOutput[TEST_LENGTH_SAMPLES]
+
+
+
Examples:
arm_signal_converge_example_f32.c.
+
+

Definition at line 121 of file arm_signal_converge_example_f32.c.

+ +
+
+ + + +
+
+ + + + +
float32_t testInput_f32[TEST_LENGTH_SAMPLES]
+
+
+ +

Definition at line 83 of file arm_sin_cos_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t lmsNormCoeff_f32[32]
+
+ +
+ +
+
+ + + + +
const float32_t FIRCoeff_f32[32]
+
+ +
+ +
+
+ + + + +
float32_t wire1[BLOCKSIZE]
+
+ +
+ +
+
+ + + + +
float32_t wire2[BLOCKSIZE]
+
+ +
+ +
+
+ + + + +
float32_t wire3[BLOCKSIZE]
+
+ +
+ +
+
+ + + + +
float32_t err_signal[BLOCKSIZE]
+
+
+
Examples:
arm_signal_converge_example_f32.c.
+
+

Definition at line 157 of file arm_signal_converge_example_f32.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__signal__converge__example__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__signal__converge__example__f32_8c_source.html new file mode 100644 index 000000000..8a552925d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__signal__converge__example__f32_8c_source.html @@ -0,0 +1,246 @@ + + + + +CMSIS DSP Software Library: arm_signal_converge_example_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__cos__example__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__cos__example__f32_8c.html new file mode 100644 index 000000000..02c93c0d7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__cos__example__f32_8c.html @@ -0,0 +1,301 @@ + + + + +CMSIS DSP Software Library: arm_sin_cos_example_f32.c File Reference + + + + + + + + + +
+ +
+

arm_sin_cos_example_f32.c File Reference

+
+
+#include <math.h>
+#include "arm_math.h"
+ +

Go to the source code of this file.

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

+Defines

#define MAX_BLOCKSIZE   32
#define DELTA   (0.000001f)

+Functions

int32_t main (void)

+Variables

const float32_t testInput_f32 [MAX_BLOCKSIZE]
const float32_t testRefOutput_f32 = 1.000000000
uint32_t blockSize = 32
float32_t testOutput
float32_t cosOutput
float32_t sinOutput
float32_t cosSquareOutput
float32_t sinSquareOutput
arm_status status
+

Define Documentation

+ +
+
+ + + + +
#define MAX_BLOCKSIZE   32
+
+
+ +

Definition at line 74 of file arm_sin_cos_example_f32.c.

+ +
+
+ +
+
+ + + + +
#define DELTA   (0.000001f)
+
+
+ +

Definition at line 75 of file arm_sin_cos_example_f32.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
int32_t main (void  )
+
+
+ +

Definition at line 111 of file arm_sin_cos_example_f32.c.

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
const float32_t testInput_f32[MAX_BLOCKSIZE]
+
+
+Initial value:
  
+{    
+    -1.244916875853235400,  -4.793533929171324800,  0.360705030233248850,   0.827929644170887320,   -3.299532218312426900,  3.427441903227623800,   3.422401784294607700,   -0.108308165334010680,   
+    0.941943896490312180,   0.502609575000365850,   -0.537345278736373500,  2.088817392965764500,   -1.693168684143455700,  6.283185307179590700,   -0.392545884746175080,  0.327893095115825040,    
+    3.070147440456292300,   0.170611405884662230,   -0.275275082396073010,  -2.395492805446796300,  0.847311163536506600,   -3.845517018083148800,  2.055818378415868300,   4.672594161978930800,    
+    -1.990923030266425800,  2.469305197656249500,   3.609002606064021000,   -4.586736582331667500,  -4.147080139136136300,  1.643756718868359500,   -1.150866392366494800,  1.985805026477433800 
+ 
+ 
+}
+
+

Definition at line 83 of file arm_sin_cos_example_f32.c.

+ +
+
+ +
+
+ + + + +
const float32_t testRefOutput_f32 = 1.000000000
+
+
+ +

Definition at line 93 of file arm_sin_cos_example_f32.c.

+ +
+
+ +
+
+ + + + +
uint32_t blockSize = 32
+
+
+ +

Definition at line 98 of file arm_sin_cos_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t testOutput
+
+
+ +

Definition at line 99 of file arm_sin_cos_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t cosOutput
+
+
+
Examples:
arm_sin_cos_example_f32.c.
+
+

Definition at line 100 of file arm_sin_cos_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t sinOutput
+
+
+
Examples:
arm_sin_cos_example_f32.c.
+
+

Definition at line 101 of file arm_sin_cos_example_f32.c.

+ +
+
+ +
+ +
+
Examples:
arm_sin_cos_example_f32.c.
+
+

Definition at line 102 of file arm_sin_cos_example_f32.c.

+ +
+
+ +
+ +
+
Examples:
arm_sin_cos_example_f32.c.
+
+

Definition at line 103 of file arm_sin_cos_example_f32.c.

+ +
+
+ +
+
+ + + + +
arm_status status
+
+
+ +

Definition at line 109 of file arm_sin_cos_example_f32.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__cos__example__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__cos__example__f32_8c_source.html new file mode 100644 index 000000000..75e7e6e2d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__cos__example__f32_8c_source.html @@ -0,0 +1,172 @@ + + + + +CMSIS DSP Software Library: arm_sin_cos_example_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__cos__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__cos__f32_8c.html new file mode 100644 index 000000000..fa0eb7212 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__cos__f32_8c.html @@ -0,0 +1,88 @@ + + + + +CMSIS DSP Software Library: arm_sin_cos_f32.c File Reference + + + + + + + + + +
+ +
+

arm_sin_cos_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + + +

+Functions

void arm_sin_cos_f32 (float32_t theta, float32_t *pSinVal, float32_t *pCosVal)

+Variables

static const float32_t cosTable [360]
static const float32_t sinTable [360]
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__cos__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__cos__f32_8c_source.html new file mode 100644 index 000000000..1100a56ba --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__cos__f32_8c_source.html @@ -0,0 +1,420 @@ + + + + +CMSIS DSP Software Library: arm_sin_cos_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__cos__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__cos__q31_8c.html new file mode 100644 index 000000000..9843fc011 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__cos__q31_8c.html @@ -0,0 +1,88 @@ + + + + +CMSIS DSP Software Library: arm_sin_cos_q31.c File Reference + + + + + + + + + +
+ +
+

arm_sin_cos_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + + +

+Functions

void arm_sin_cos_q31 (q31_t theta, q31_t *pSinVal, q31_t *pCosVal)

+Variables

static const int32_t sinTableQ31 [360]
static const int32_t cosTableQ31 [360]
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__cos__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__cos__q31_8c_source.html new file mode 100644 index 000000000..43f81351a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__cos__q31_8c_source.html @@ -0,0 +1,340 @@ + + + + +CMSIS DSP Software Library: arm_sin_cos_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__f32_8c.html new file mode 100644 index 000000000..b6ec0dbd4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__f32_8c.html @@ -0,0 +1,87 @@ + + + + +CMSIS DSP Software Library: arm_sin_f32.c File Reference + + + + + + + + + +
+ +
+

arm_sin_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + +

+Functions

float32_t arm_sin_f32 (float32_t x)

+Variables

static const float32_t sinTable [259]
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__f32_8c_source.html new file mode 100644 index 000000000..0d93ef7f1 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__f32_8c_source.html @@ -0,0 +1,265 @@ + + + + +CMSIS DSP Software Library: arm_sin_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__q15_8c.html new file mode 100644 index 000000000..283a8e581 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__q15_8c.html @@ -0,0 +1,87 @@ + + + + +CMSIS DSP Software Library: arm_sin_q15.c File Reference + + + + + + + + + +
+ +
+

arm_sin_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + +

+Functions

q15_t arm_sin_q15 (q15_t x)

+Variables

static const q15_t sinTableQ15 [259]
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__q15_8c_source.html new file mode 100644 index 000000000..9ac80e073 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__q15_8c_source.html @@ -0,0 +1,225 @@ + + + + +CMSIS DSP Software Library: arm_sin_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__q31_8c.html new file mode 100644 index 000000000..dfab7f6d3 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__q31_8c.html @@ -0,0 +1,87 @@ + + + + +CMSIS DSP Software Library: arm_sin_q31.c File Reference + + + + + + + + + +
+ +
+

arm_sin_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + + + +

+Functions

q31_t arm_sin_q31 (q31_t x)

+Variables

static const q31_t sinTableQ31 [259]
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__q31_8c_source.html new file mode 100644 index 000000000..c33376ab8 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sin__q31_8c_source.html @@ -0,0 +1,262 @@ + + + + +CMSIS DSP Software Library: arm_sin_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sqrt__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sqrt__q15_8c.html new file mode 100644 index 000000000..fdeba4cfd --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sqrt__q15_8c.html @@ -0,0 +1,84 @@ + + + + +CMSIS DSP Software Library: arm_sqrt_q15.c File Reference + + + + + + + + + +
+ +
+

arm_sqrt_q15.c File Reference

+
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

arm_status arm_sqrt_q15 (q15_t in, q15_t *pOut)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sqrt__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sqrt__q15_8c_source.html new file mode 100644 index 000000000..f126b141e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sqrt__q15_8c_source.html @@ -0,0 +1,231 @@ + + + + +CMSIS DSP Software Library: arm_sqrt_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sqrt__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sqrt__q31_8c.html new file mode 100644 index 000000000..bdefc691c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sqrt__q31_8c.html @@ -0,0 +1,84 @@ + + + + +CMSIS DSP Software Library: arm_sqrt_q31.c File Reference + + + + + + + + + +
+ +
+

arm_sqrt_q31.c File Reference

+
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

arm_status arm_sqrt_q31 (q31_t in, q31_t *pOut)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sqrt__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sqrt__q31_8c_source.html new file mode 100644 index 000000000..0ab402062 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sqrt__q31_8c_source.html @@ -0,0 +1,252 @@ + + + + +CMSIS DSP Software Library: arm_sqrt_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__std__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__std__f32_8c.html new file mode 100644 index 000000000..9ad6b75b1 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__std__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_std_f32.c File Reference + + + + + + + + + +
+ +
+

arm_std_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_std_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__std__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__std__f32_8c_source.html new file mode 100644 index 000000000..ed803ccfb --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__std__f32_8c_source.html @@ -0,0 +1,255 @@ + + + + +CMSIS DSP Software Library: arm_std_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__std__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__std__q15_8c.html new file mode 100644 index 000000000..96695992a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__std__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_std_q15.c File Reference + + + + + + + + + +
+ +
+

arm_std_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_std_q15 (q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__std__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__std__q15_8c_source.html new file mode 100644 index 000000000..c6a6e5442 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__std__q15_8c_source.html @@ -0,0 +1,269 @@ + + + + +CMSIS DSP Software Library: arm_std_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__std__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__std__q31_8c.html new file mode 100644 index 000000000..b988fbb29 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__std__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_std_q31.c File Reference + + + + + + + + + +
+ +
+

arm_std_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_std_q31 (q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__std__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__std__q31_8c_source.html new file mode 100644 index 000000000..d8b7665f4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__std__q31_8c_source.html @@ -0,0 +1,255 @@ + + + + +CMSIS DSP Software Library: arm_std_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__f32_8c.html new file mode 100644 index 000000000..ddd54ddd5 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_sub_f32.c File Reference + + + + + + + + + +
+ +
+

arm_sub_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_sub_f32 (float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__f32_8c_source.html new file mode 100644 index 000000000..eaa168348 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__f32_8c_source.html @@ -0,0 +1,161 @@ + + + + +CMSIS DSP Software Library: arm_sub_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__q15_8c.html new file mode 100644 index 000000000..a21d71163 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_sub_q15.c File Reference + + + + + + + + + +
+ +
+

arm_sub_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_sub_q15 (q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__q15_8c_source.html new file mode 100644 index 000000000..a86898595 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__q15_8c_source.html @@ -0,0 +1,171 @@ + + + + +CMSIS DSP Software Library: arm_sub_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__q31_8c.html new file mode 100644 index 000000000..5eb6a74dc --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_sub_q31.c File Reference + + + + + + + + + +
+ +
+

arm_sub_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_sub_q31 (q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__q31_8c_source.html new file mode 100644 index 000000000..942eaf97d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__q31_8c_source.html @@ -0,0 +1,172 @@ + + + + +CMSIS DSP Software Library: arm_sub_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__q7_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__q7_8c.html new file mode 100644 index 000000000..65b05025b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__q7_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_sub_q7.c File Reference + + + + + + + + + +
+ +
+

arm_sub_q7.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_sub_q7 (q7_t *pSrcA, q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__q7_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__q7_8c_source.html new file mode 100644 index 000000000..5ea204404 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__sub__q7_8c_source.html @@ -0,0 +1,170 @@ + + + + +CMSIS DSP Software Library: arm_sub_q7.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__var__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__var__f32_8c.html new file mode 100644 index 000000000..083bb9343 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__var__f32_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_var_f32.c File Reference + + + + + + + + + +
+ +
+

arm_var_f32.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_var_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__var__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__var__f32_8c_source.html new file mode 100644 index 000000000..08728629d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__var__f32_8c_source.html @@ -0,0 +1,252 @@ + + + + +CMSIS DSP Software Library: arm_var_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__var__q15_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__var__q15_8c.html new file mode 100644 index 000000000..82ffd6a4a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__var__q15_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_var_q15.c File Reference + + + + + + + + + +
+ +
+

arm_var_q15.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_var_q15 (q15_t *pSrc, uint32_t blockSize, q31_t *pResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__var__q15_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__var__q15_8c_source.html new file mode 100644 index 000000000..b31c09667 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__var__q15_8c_source.html @@ -0,0 +1,252 @@ + + + + +CMSIS DSP Software Library: arm_var_q15.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__var__q31_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__var__q31_8c.html new file mode 100644 index 000000000..1dd506ba7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__var__q31_8c.html @@ -0,0 +1,83 @@ + + + + +CMSIS DSP Software Library: arm_var_q31.c File Reference + + + + + + + + + +
+ +
+

arm_var_q31.c File Reference

+
+
+#include "arm_math.h"
+ +

Go to the source code of this file.

+ + + +

+Functions

void arm_var_q31 (q31_t *pSrc, uint32_t blockSize, q63_t *pResult)
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__var__q31_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__var__q31_8c_source.html new file mode 100644 index 000000000..de68b857c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__var__q31_8c_source.html @@ -0,0 +1,252 @@ + + + + +CMSIS DSP Software Library: arm_var_q31.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__variance__example__f32_8c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__variance__example__f32_8c.html new file mode 100644 index 000000000..beead8f9f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__variance__example__f32_8c.html @@ -0,0 +1,253 @@ + + + + +CMSIS DSP Software Library: arm_variance_example_f32.c File Reference + + + + + + + + + +
+ +
+

arm_variance_example_f32.c File Reference

+
+
+#include <math.h>
+#include "arm_math.h"
+ +

Go to the source code of this file.

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

+Defines

#define MAX_BLOCKSIZE   32
#define DELTA   (0.000001f)

+Functions

int32_t main (void)

+Variables

float32_t wire1 [MAX_BLOCKSIZE]
float32_t wire2 [MAX_BLOCKSIZE]
float32_t wire3 [MAX_BLOCKSIZE]
float32_t testInput_f32 [32]
uint32_t blockSize = 32
float32_t refVarianceOut = 0.903941793931839
+

Define Documentation

+ +
+
+ + + + +
#define MAX_BLOCKSIZE   32
+
+
+ +

Definition at line 83 of file arm_variance_example_f32.c.

+ +
+
+ +
+
+ + + + +
#define DELTA   (0.000001f)
+
+
+ +

Definition at line 84 of file arm_variance_example_f32.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
int32_t main (void  )
+
+
+ +

Definition at line 122 of file arm_variance_example_f32.c.

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
float32_t wire1[MAX_BLOCKSIZE]
+
+
+ +

Definition at line 90 of file arm_variance_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t wire2[MAX_BLOCKSIZE]
+
+
+ +

Definition at line 91 of file arm_variance_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t wire3[MAX_BLOCKSIZE]
+
+
+ +

Definition at line 92 of file arm_variance_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t testInput_f32[32]
+
+
+Initial value:
 
+{ 
+-0.432564811528221,     -1.665584378238097,     0.125332306474831,      0.287676420358549,  
+-1.146471350681464,     1.190915465642999,      1.189164201652103,      -0.037633276593318,     
+0.327292361408654,      0.174639142820925,      -0.186708577681439,     0.725790548293303,  
+-0.588316543014189,     2.183185818197101,      -0.136395883086596,     0.113931313520810,  
+1.066768211359189,      0.059281460523605,      -0.095648405483669,     -0.832349463650022,     
+0.294410816392640,      -1.336181857937804,     0.714324551818952,      1.623562064446271,  
+-0.691775701702287,     0.857996672828263,      1.254001421602532,      -1.593729576447477,     
+-1.440964431901020,     0.571147623658178,      -0.399885577715363,     0.689997375464345
+  
+}
+
+

Definition at line 99 of file arm_variance_example_f32.c.

+ +
+
+ +
+
+ + + + +
uint32_t blockSize = 32
+
+
+ +

Definition at line 115 of file arm_variance_example_f32.c.

+ +
+
+ +
+
+ + + + +
float32_t refVarianceOut = 0.903941793931839
+
+
+
Examples:
arm_variance_example_f32.c.
+
+

Definition at line 116 of file arm_variance_example_f32.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__variance__example__f32_8c_source.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__variance__example__f32_8c_source.html new file mode 100644 index 000000000..0d8b94267 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm__variance__example__f32_8c_source.html @@ -0,0 +1,206 @@ + + + + +CMSIS DSP Software Library: arm_variance_example_f32.c Source File + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_class_marks_example_f32_8c-example.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_class_marks_example_f32_8c-example.html new file mode 100644 index 000000000..04469ea00 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_class_marks_example_f32_8c-example.html @@ -0,0 +1,221 @@ + + + + +CMSIS DSP Software Library: arm_class_marks_example_f32.c + + + + + + + + + +
+
+

arm_class_marks_example_f32.c

+
+
+
/* ---------------------------------------------------------------------- 
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*  
+* $Date:        29. November 2010  
+* $Revision:    V1.0.3 
+*  
+* Project:      CMSIS DSP Library  
+* Title:        arm_class_marks_example_f32.c         
+*  
+* Description:  Example code to calculate Minimum, Maximum 
+*               Mean, std and variance of marks obtained in a class 
+* 
+* Target Processor: Cortex-M4/Cortex-M3
+*
+* Version 1.0.3 2010/11/29 
+*    Re-organized the CMSIS folders and updated documentation. 
+*  
+* Version 1.0.1 2010/10/05 KK 
+*    Production release and review comments incorporated.  
+*
+* Version 1.0.0 2010/09/20 KK
+*    Production release and review comments incorporated.
+* ------------------------------------------------------------------- */ 
+ 
+#include "arm_math.h" 
+ 
+#define USE_STATIC_INIT 
+ 
+ /* ---------------------------------------------------------------------- 
+** Global defines  
+** ------------------------------------------------------------------- */ 
+ 
+#define TEST_LENGTH_SAMPLES     (20*4) 
+ 
+/* ---------------------------------------------------------------------- 
+** List of Marks scored by 20 students for 4 subjects 
+** ------------------------------------------------------------------- */  
+const float32_t testMarks_f32[TEST_LENGTH_SAMPLES] =  
+{    
+    42.000000,  37.000000,  81.000000,  28.000000,   
+    83.000000,  72.000000,  36.000000,  38.000000,   
+    32.000000,  51.000000,  63.000000,  64.000000,   
+    97.000000,  82.000000,  95.000000,  90.000000,   
+    66.000000,  51.000000,  54.000000,  42.000000,   
+    67.000000,  56.000000,  45.000000,  57.000000,   
+    67.000000,  69.000000,  35.000000,  52.000000,   
+    29.000000,  81.000000,  58.000000,  47.000000,   
+    38.000000,  76.000000,  100.000000, 29.000000,   
+    33.000000,  47.000000,  29.000000,  50.000000,   
+    34.000000,  41.000000,  61.000000,  46.000000,   
+    52.000000,  50.000000,  48.000000,  36.000000,   
+    47.000000,  55.000000,  44.000000,  40.000000,   
+    100.000000, 94.000000,  84.000000,  37.000000,   
+    32.000000,  71.000000,  47.000000,  77.000000,   
+    31.000000,  50.000000,  49.000000,  35.000000,   
+    63.000000,  67.000000,  40.000000,  31.000000,   
+    29.000000,  68.000000,  61.000000,  38.000000,   
+    31.000000,  28.000000,  28.000000,  76.000000,   
+    55.000000,  33.000000,  29.000000,  39.000000 
+};  
+ 
+ 
+/* ---------------------------------------------------------------------- 
+* Number of subjects X 1  
+* ------------------------------------------------------------------- */  
+const float32_t testUnity_f32[4] =  
+{    
+    1.000,  1.000,  1.000,  1.000 
+}; 
+ 
+ 
+/* ---------------------------------------------------------------------- 
+** f32 Output buffer 
+** ------------------------------------------------------------------- */  
+static float32_t testOutput[TEST_LENGTH_SAMPLES]; 
+ 
+ 
+/* ------------------------------------------------------------------ 
+* Global defines  
+*------------------------------------------------------------------- */ 
+#define     NUMSTUDENTS  20 
+#define     NUMSUBJECTS  4 
+ 
+/* ------------------------------------------------------------------ 
+* Global variables  
+*------------------------------------------------------------------- */ 
+ 
+uint32_t    numStudents = 20; 
+uint32_t    numSubjects = 4;  
+float32_t   max_marks, min_marks, mean, std, var; 
+uint32_t    student_num;    
+ 
+/* ---------------------------------------------------------------------------------- 
+* Main f32 test function.  It returns maximum marks secured and student number 
+* ------------------------------------------------------------------------------- */ 
+ 
+int32_t main() 
+{ 
+ 
+#ifndef  USE_STATIC_INIT 
+ 
+    arm_matrix_instance_f32 srcA; 
+    arm_matrix_instance_f32 srcB; 
+    arm_matrix_instance_f32 dstC;  
+ 
+    /* Input and output matrices initializations */  
+    arm_mat_init_f32(&srcA, numStudents, numSubjects, (float32_t *)testMarks_f32);  
+    arm_mat_init_f32(&srcB, numSubjects, 1, (float32_t *)testUnity_f32);  
+    arm_mat_init_f32(&dstC, numStudents, 1, testOutput);  
+ 
+#else 
+ 
+    /* Static Initializations of Input and output matrix sizes and array */ 
+    arm_matrix_instance_f32 srcA = {NUMSTUDENTS, NUMSUBJECTS, (float32_t *)testMarks_f32}; 
+    arm_matrix_instance_f32 srcB = {NUMSUBJECTS, 1, (float32_t *)testUnity_f32}; 
+    arm_matrix_instance_f32 dstC = {NUMSTUDENTS, 1, testOutput}; 
+ 
+#endif 
+ 
+     
+    /* ---------------------------------------------------------------------- 
+    *Call the Matrix multiplication process function   
+    * ------------------------------------------------------------------- */ 
+    arm_mat_mult_f32(&srcA, &srcB, &dstC); 
+     
+    /* ---------------------------------------------------------------------- 
+    ** Call the Max function to calculate max marks among numStudents 
+    ** ------------------------------------------------------------------- */ 
+    arm_max_f32(testOutput, numStudents, &max_marks, &student_num);  
+ 
+    /* ---------------------------------------------------------------------- 
+    ** Call the Min function to calculate min marks among numStudents 
+    ** ------------------------------------------------------------------- */ 
+    arm_min_f32(testOutput, numStudents, &min_marks, &student_num);  
+ 
+    /* ---------------------------------------------------------------------- 
+    ** Call the Mean function to calculate mean 
+    ** ------------------------------------------------------------------- */ 
+    arm_mean_f32(testOutput, numStudents, &mean); 
+ 
+    /* ---------------------------------------------------------------------- 
+    ** Call the std function to calculate standard deviation 
+    ** ------------------------------------------------------------------- */ 
+    arm_std_f32(testOutput, numStudents, &std); 
+ 
+    /* ---------------------------------------------------------------------- 
+    ** Call the var function to calculate variance 
+    ** ------------------------------------------------------------------- */ 
+    arm_var_f32(testOutput, numStudents, &var); 
+ 
+} 
+ 
+ 
+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_convolution_example_f32_8c-example.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_convolution_example_f32_8c-example.html new file mode 100644 index 000000000..653284e67 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_convolution_example_f32_8c-example.html @@ -0,0 +1,232 @@ + + + + +CMSIS DSP Software Library: arm_convolution_example_f32.c + + + + + + + + + +
+
+

arm_convolution_example_f32.c

+
+
+
/* ---------------------------------------------------------------------- 
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*  
+* $Date:        29. November 2010  
+* $Revision:    V1.0.3 
+*  
+* Project:      CMSIS DSP Library  
+* Title:        arm_convolution_example_f32.c         
+*  
+* Description:  Example code demonstrating Convolution of two input signals using fft. 
+* 
+* Target Processor: Cortex-M4/Cortex-M3  
+*
+*
+* Version 1.0.3 2010/11/29 
+*    Re-organized the CMSIS folders and updated documentation. 
+* 
+* Version 1.0.1 2010/10/05 KK 
+*    Production release and review comments incorporated.  
+*
+* Version 1.0.0 2010/09/20 KK
+*    Production release and review comments incorporated.
+* ------------------------------------------------------------------- */ 
+ 
+#include "arm_math.h" 
+#include "math_helper.h"                 
+ 
+/* ---------------------------------------------------------------------- 
+* Defines each of the tests performed 
+* ------------------------------------------------------------------- */ 
+#define MAX_BLOCKSIZE   128 
+#define DELTA           (0.000001f) 
+#define SNR_THRESHOLD   90 
+ 
+/* ---------------------------------------------------------------------- 
+* Declare I/O buffers  
+* ------------------------------------------------------------------- */ 
+float32_t Ak[MAX_BLOCKSIZE];        /* Input A */ 
+float32_t Bk[MAX_BLOCKSIZE];        /* Input B */ 
+float32_t AxB[MAX_BLOCKSIZE * 2];   /* Output */ 
+ 
+/* ---------------------------------------------------------------------- 
+* Test input data for Floating point Convolution example for 32-blockSize 
+* Generated by the MATLAB randn() function 
+* ------------------------------------------------------------------- */ 
+float32_t testInputA_f32[64] =  
+{  
+-0.808920,  1.357369,   1.180861,   -0.504544,  1.762637,   -0.703285,   
+1.696966,   0.620571,   -0.151093,  -0.100235,  -0.872382,  -0.403579,   
+-0.860749,  -0.382648,  -1.052338,  0.128113,   -0.646269,  1.093377,    
+-2.209198,  0.471706,   0.408901,   1.266242,   0.598252,   1.176827,    
+-0.203421,  0.213596,   -0.851964,  -0.466958,  0.021841,   -0.698938,   
+-0.604107,  0.461778,   -0.318219,  0.942520,   0.577585,   0.417619,    
+0.614665,   0.563679,   -1.295073,  -0.764437,  0.952194,   -0.859222,   
+-0.618554,  -2.268542,  -1.210592,  1.655853,   -2.627219,  -0.994249,   
+-1.374704,  0.343799,   0.025619,   1.227481,   -0.708031,  0.069355,    
+-1.845228,  -1.570886,  1.010668,   -1.802084,  1.630088,   1.286090,    
+-0.161050,  -0.940794,  0.367961,   0.291907 
+         
+};  
+  
+float32_t testInputB_f32[64] =  
+{  
+0.933724,   0.046881,   1.316470,   0.438345,   0.332682,   2.094885,    
+0.512081,   0.035546,   0.050894,   -2.320371,  0.168711,   -1.830493,   
+-0.444834,  -1.003242,  -0.531494,  -1.365600,  -0.155420,  -0.757692,   
+-0.431880,  -0.380021,  0.096243,   -0.695835,  0.558850,   -1.648962,   
+0.020369,   -0.363630,  0.887146,   0.845503,   -0.252864,  -0.330397,   
+1.269131,   -1.109295,  -1.027876,  0.135940,   0.116721,   -0.293399,   
+-1.349799,  0.166078,   -0.802201,  0.369367,   -0.964568,  -2.266011,   
+0.465178,   0.651222,   -0.325426,  0.320245,   -0.784178,  -0.579456,   
+0.093374,   0.604778,   -0.048225,  0.376297,   -0.394412,  0.578182,    
+-1.218141,  -1.387326,  0.692462,   -0.631297,  0.153137,   -0.638952,   
+0.635474,   -0.970468,  1.334057,   -0.111370 
+};  
+  
+const float testRefOutput_f32[126] =   
+{  
+-0.818943,  1.229484,   -0.533664,  1.016604,   0.341875,   -1.963656,   
+5.171476,   3.478033,   7.616361,   6.648384,   0.479069,   1.792012,    
+-1.295591,  -7.447818,  0.315830,   -10.657445, -2.483469,  -6.524236,   
+-7.380591,  -3.739005,  -8.388957,  0.184147,   -1.554888,  3.786508,    
+-1.684421,  5.400610,   -1.578126,  7.403361,   8.315999,   2.080267,    
+11.077776,  2.749673,   7.138962,   2.748762,   0.660363,   0.981552,    
+1.442275,   0.552721,   -2.576892,  4.703989,   0.989156,   8.759344,    
+-0.564825,  -3.994680,  0.954710,   -5.014144,  6.592329,   1.599488,    
+-13.979146, -0.391891,  -4.453369,  -2.311242,  -2.948764,  1.761415,    
+-0.138322,  10.433007,  -2.309103,  4.297153,   8.535523,   3.209462,    
+8.695819,   5.569919,   2.514304,   5.582029,   2.060199,   0.642280,    
+7.024616,   1.686615,   -6.481756,  1.343084,   -3.526451,  1.099073,    
+-2.965764,  -0.173723,  -4.111484,  6.528384,   -6.965658,  1.726291,    
+1.535172,   11.023435,  2.338401,   -4.690188,  1.298210,   3.943885,    
+8.407885,   5.168365,   0.684131,   1.559181,   1.859998,   2.852417,    
+8.574070,   -6.369078,  6.023458,   11.837963,  -6.027632,  4.469678,    
+-6.799093,  -2.674048,  6.250367,   -6.809971,  -3.459360,  9.112410,    
+-2.711621,  -1.336678,  1.564249,   -1.564297,  -1.296760,  8.904013,    
+-3.230109,  6.878013,   -7.819823,  3.369909,   -1.657410,  -2.007358,   
+-4.112825,  1.370685,   -3.420525,  -6.276605,  3.244873,   -3.352638,   
+1.545372,   0.902211,   0.197489,   -1.408732,  0.523390,   0.348440 
+}; 
+ 
+ 
+/* ---------------------------------------------------------------------- 
+* Declare Global variables  
+* ------------------------------------------------------------------- */ 
+uint32_t srcALen = 64;   /* Length of Input A */ 
+uint32_t srcBLen = 64;   /* Length of Input B */ 
+uint32_t outLen;         /* Length of convolution output */ 
+float32_t snr;           /* output SNR */ 
+ 
+int32_t main(void) 
+{ 
+    arm_status status;     /* Status of the example */ 
+    arm_cfft_radix4_instance_f32 cfft_instance; /* CFFT Structure instance */ 
+ 
+    /* CFFT Structure instance pointer */ 
+    arm_cfft_radix4_instance_f32 *cfft_instance_ptr =  
+            (arm_cfft_radix4_instance_f32*) &cfft_instance; 
+ 
+    /* output length of convolution */ 
+    outLen = srcALen + srcBLen - 1; 
+ 
+    /* Initialise the fft input buffers with all zeros */ 
+    arm_fill_f32(0.0,  Ak, MAX_BLOCKSIZE); 
+    arm_fill_f32(0.0,  Bk, MAX_BLOCKSIZE); 
+ 
+    /* Copy the input values to the fft input buffers */ 
+    arm_copy_f32(testInputA_f32,  Ak, MAX_BLOCKSIZE/2); 
+    arm_copy_f32(testInputB_f32,  Bk, MAX_BLOCKSIZE/2); 
+     
+    /* Initialize the CFFT function to compute 64 point fft */  
+    status = arm_cfft_radix4_init_f32(cfft_instance_ptr, 64, 0, 1); 
+ 
+    /* Transform input a[n] from time domain to frequency domain A[k] */ 
+    arm_cfft_radix4_f32(cfft_instance_ptr, Ak); 
+    /* Transform input b[n] from time domain to frequency domain B[k] */ 
+    arm_cfft_radix4_f32(cfft_instance_ptr, Bk); 
+     
+    /* Complex Multiplication of the two input buffers in frequency domain */ 
+    arm_cmplx_mult_cmplx_f32(Ak, Bk, AxB, MAX_BLOCKSIZE/2);  
+ 
+    /* Initialize the CIFFT function to compute 64 point ifft */  
+    status = arm_cfft_radix4_init_f32(cfft_instance_ptr, 64, 1, 1); 
+ 
+    /* Transform the multiplication output from frequency domain to time domain, 
+       that gives the convolved output  */ 
+    arm_cfft_radix4_f32(cfft_instance_ptr, AxB); 
+ 
+    /* SNR Calculation */ 
+    snr = arm_snr_f32((float32_t *)testRefOutput_f32, AxB, srcALen + srcBLen - 1); 
+     
+    /* Compare the SNR with threshold to test whether the  
+       computed output is matched with the reference output values. */ 
+    if( snr > SNR_THRESHOLD) 
+    { 
+        status = ARM_MATH_SUCCESS; 
+    } 
+         
+    if( status != ARM_MATH_SUCCESS) 
+    { 
+      while(1); 
+    } 
+} 
+                                  
+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_dotproduct_example_f32_8c-example.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_dotproduct_example_f32_8c-example.html new file mode 100644 index 000000000..2dbc754f1 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_dotproduct_example_f32_8c-example.html @@ -0,0 +1,182 @@ + + + + +CMSIS DSP Software Library: arm_dotproduct_example_f32.c + + + + + + + + + +
+
+

arm_dotproduct_example_f32.c

+
+
+
/* ---------------------------------------------------------------------- 
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*  
+* $Date:        29. November 2010  
+* $Revision:    V1.0.3 
+*  
+* Project:      CMSIS DSP Library  
+* Title:        arm_dotproduct_example_f32.c          
+*  
+* Description:  Example code computing dot product of two vectors. 
+* 
+* Target Processor: Cortex-M4/Cortex-M3  
+*
+*
+* Version 1.0.3 2010/11/29 
+*    Re-organized the CMSIS folders and updated documentation. 
+* 
+* Version 1.0.1 2010/10/05 KK 
+*    Production release and review comments incorporated.  
+*
+* Version 1.0.0 2010/09/20 KK
+*    Production release and review comments incorporated.
+* ------------------------------------------------------------------- */ 
+ 
+#include <math.h>     
+#include "arm_math.h" 
+ 
+/* ---------------------------------------------------------------------- 
+* Defines each of the tests performed 
+* ------------------------------------------------------------------- */ 
+#define MAX_BLOCKSIZE   32 
+#define DELTA           (0.000001f) 
+ 
+/* ---------------------------------------------------------------------- 
+* Test input data for Floating point Dot Product example for 32-blockSize 
+* Generated by the MATLAB randn() function 
+* ------------------------------------------------------------------- */  
+/* ----------------------------------------------------------------------  
+** Test input data of srcA for blockSize 32   
+** ------------------------------------------------------------------- */  
+float32_t srcA_buf_f32[MAX_BLOCKSIZE] =   
+{   
+-0.4325648115282207,    -1.6655843782380970,    0.1253323064748307,  
+ 0.2876764203585489,    -1.1464713506814637,    1.1909154656429988,  
+ 1.1891642016521031,    -0.0376332765933176,    0.3272923614086541,  
+ 0.1746391428209245,    -0.1867085776814394,    0.7257905482933027,  
+-0.5883165430141887,     2.1831858181971011,   -0.1363958830865957,  
+ 0.1139313135208096,     1.0667682113591888,    0.0592814605236053,  
+-0.0956484054836690,    -0.8323494636500225,    0.2944108163926404,  
+-1.3361818579378040,     0.7143245518189522,    1.6235620644462707,  
+-0.6917757017022868,     0.8579966728282626,    1.2540014216025324,  
+-1.5937295764474768,    -1.4409644319010200,    0.5711476236581780,  
+-0.3998855777153632,     0.6899973754643451 
+};   
+  
+/* ----------------------------------------------------------------------  
+** Test input data of srcB for blockSize 32   
+** ------------------------------------------------------------------- */   
+float32_t srcB_buf_f32[MAX_BLOCKSIZE] =   
+{   
+ 1.7491401329284098,    0.1325982188803279,  0.3252281811989881,     
+-0.7938091410349637,    0.3149236145048914, -0.5272704888029532,     
+ 0.9322666565031119,    1.1646643544607362, -2.0456694357357357,     
+-0.6443728590041911,    1.7410657940825480,  0.4867684246821860,     
+ 1.0488288293660140,    1.4885752747099299,  1.2705014969484090,     
+-1.8561241921210170,    2.1343209047321410,  1.4358467535865909,     
+-0.9173023332875400,   -1.1060770780029008,  0.8105708062681296,     
+ 0.6985430696369063,   -0.4015827425012831,  1.2687512030669628,     
+-0.7836083053674872,    0.2132664971465569,  0.7878984786088954,     
+ 0.8966819356782295,   -0.1869172943544062,  1.0131816724341454,     
+ 0.2484350696132857,    0.0596083377937976 
+};   
+ 
+/* Reference dot product output */ 
+float32_t  refDotProdOut = 5.9273644806352142;   
+ 
+/* ---------------------------------------------------------------------- 
+* Declare Global variables  
+* ------------------------------------------------------------------- */ 
+float32_t multOutput[MAX_BLOCKSIZE];  /* Intermediate output */ 
+float32_t testOutput;  /* Final ouput */ 
+ 
+arm_status status;   /* Status of the example */ 
+
+int32_t main(void) 
+{ 
+    uint32_t i;          /* Loop counter */ 
+    float32_t diff;      /* Difference between reference and test outputs */ 
+ 
+    /* Multiplication of two input buffers */ 
+    arm_mult_f32(srcA_buf_f32, srcB_buf_f32, multOutput, MAX_BLOCKSIZE); 
+     
+    /* Accumulate the multiplication output values to  
+       get the dot product of the two inputs */ 
+    for(i=0; i< MAX_BLOCKSIZE; i++) 
+    {          
+        arm_add_f32(&testOutput, &multOutput[i], &testOutput, 1);    
+    } 
+ 
+    /* absolute value of difference between ref and test */ 
+    diff = fabsf(refDotProdOut - testOutput); 
+     
+    /* Comparison of dot product value with reference */ 
+    if(diff > DELTA) 
+    { 
+        status = ARM_MATH_TEST_FAILURE; 
+    } 
+         
+    if( status == ARM_MATH_TEST_FAILURE) 
+    { 
+      while(1); 
+    } 
+} 
+ 
+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_fft_bin_example_f32_8c-example.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_fft_bin_example_f32_8c-example.html new file mode 100644 index 000000000..9441daeb8 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_fft_bin_example_f32_8c-example.html @@ -0,0 +1,158 @@ + + + + +CMSIS DSP Software Library: arm_fft_bin_example_f32.c + + + + + + + + + +
+
+

arm_fft_bin_example_f32.c

+
+
+
/* ---------------------------------------------------------------------- 
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*  
+* $Date:        29. November 2010  
+* $Revision:    V1.0.3  
+*  
+* Project:      CMSIS DSP Library  
+* Title:        arm_fft_bin_example_f32.c         
+*  
+* Description:  Example code demonstrating calculation of Max energy bin of  
+*               frequency domain of input signal. 
+* 
+* Target Processor: Cortex-M4/Cortex-M3  
+*
+*
+* Version 1.0.3 2010/11/29 
+*    Re-organized the CMSIS folders and updated documentation. 
+* 
+* Version 1.0.1 2010/10/05 KK 
+*    Production release and review comments incorporated.  
+*
+* Version 1.0.0 2010/09/20 KK
+*    Production release and review comments incorporated.
+* ------------------------------------------------------------------- */ 
+ 
+#include "arm_math.h" 
+ 
+#define TEST_LENGTH_SAMPLES 2048 
+ 
+/* ------------------------------------------------------------------- 
+* External Input and Output buffer Declarations for FFT Bin Example 
+* ------------------------------------------------------------------- */ 
+extern float32_t testInput_f32_10khz[TEST_LENGTH_SAMPLES]; 
+static float32_t testOutput[TEST_LENGTH_SAMPLES/2]; 
+ 
+/* ------------------------------------------------------------------ 
+* Global variables for FFT Bin Example 
+* ------------------------------------------------------------------- */ 
+uint32_t fftSize = 1024; 
+uint32_t ifftFlag = 0; 
+uint32_t doBitReverse = 1; 
+ 
+/* Reference index at which max energy of bin ocuurs */ 
+uint32_t refIndex = 213, testIndex = 0; 
+ 
+/* ---------------------------------------------------------------------- 
+* Max magnitude FFT Bin test 
+* ------------------------------------------------------------------- */ 
+ 
+int32_t main(void) 
+{ 
+   
+    arm_status status; 
+    arm_cfft_radix4_instance_f32 S; 
+    float32_t maxValue; 
+     
+    status = ARM_MATH_SUCCESS; 
+     
+    /* Initialize the CFFT/CIFFT module */  
+    status = arm_cfft_radix4_init_f32(&S, fftSize,  
+                                    ifftFlag, doBitReverse); 
+     
+    /* Process the data through the CFFT/CIFFT module */ 
+    arm_cfft_radix4_f32(&S, testInput_f32_10khz); 
+     
+     
+    /* Process the data through the Complex Magnitude Module for  
+    calculating the magnitude at each bin */ 
+    arm_cmplx_mag_f32(testInput_f32_10khz, testOutput,  
+                    fftSize);  
+     
+    /* Calculates maxValue and returns corresponding BIN value */ 
+    arm_max_f32(testOutput, fftSize, &maxValue, &testIndex); 
+     
+    if(testIndex !=  refIndex) 
+    { 
+        status = ARM_MATH_TEST_FAILURE; 
+    } 
+     
+    /* ---------------------------------------------------------------------- 
+    ** Loop here if the signals fail the PASS check. 
+    ** This denotes a test failure 
+    ** ------------------------------------------------------------------- */ 
+     
+    if( status != ARM_MATH_SUCCESS) 
+    { 
+        while(1); 
+    } 
+} 
+ 
+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_fir_example_f32_8c-example.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_fir_example_f32_8c-example.html new file mode 100644 index 000000000..77c118aab --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_fir_example_f32_8c-example.html @@ -0,0 +1,203 @@ + + + + +CMSIS DSP Software Library: arm_fir_example_f32.c + + + + + + + + + +
+
+

arm_fir_example_f32.c

+
+
+
/* ---------------------------------------------------------------------- 
+ * Copyright (C) 2010 ARM Limited. All rights reserved.   
+ *  
+ * $Date:           29. November 2010  
+ * $Revision:       V1.0.3  
+ *  
+ * Project:         CMSIS DSP Library  
+ * Title:           arm_fir_example_f32.c         
+ *  
+ * Description: Example code demonstrating how an FIR filter can be used
+ *               as a low pass filter.
+ * 
+ * Target Processor: Cortex-M4/Cortex-M3  
+ *
+ *
+ * Version 1.0.3 2010/11/29 
+ *    Re-organized the CMSIS folders and updated documentation. 
+ * 
+ * Version 1.0.1 2010/10/05 KK 
+ *    Production release and review comments incorporated.  
+ *
+ * Version 1.0.0 2010/09/20 KK
+ *    Production release and review comments incorporated.
+ * ------------------------------------------------------------------- */ 
+ 
+/* ---------------------------------------------------------------------- 
+** Include Files  
+** ------------------------------------------------------------------- */ 
+
+#include "arm_math.h" 
+#include "math_helper.h" 
+ 
+/* ---------------------------------------------------------------------- 
+** Macro Defines  
+** ------------------------------------------------------------------- */ 
+
+#define TEST_LENGTH_SAMPLES 320 
+#define SNR_THRESHOLD_F32   140.0f 
+#define BLOCK_SIZE          32 
+#define NUM_TAPS            29 
+ 
+/* ------------------------------------------------------------------- 
+ * The input signal and reference output (computed with MATLAB)
+ * are defined externally in arm_fir_lpf_data.c.
+ * ------------------------------------------------------------------- */ 
+
+extern float32_t testInput_f32_1kHz_15kHz[TEST_LENGTH_SAMPLES]; 
+extern float32_t refOutput[TEST_LENGTH_SAMPLES]; 
+ 
+/* ------------------------------------------------------------------- 
+ * Declare Test output buffer 
+ * ------------------------------------------------------------------- */ 
+
+static float32_t testOutput[TEST_LENGTH_SAMPLES]; 
+ 
+/* ------------------------------------------------------------------- 
+ * Declare State buffer of size (numTaps + blockSize - 1) 
+ * ------------------------------------------------------------------- */ 
+
+static float32_t firStateF32[BLOCK_SIZE + NUM_TAPS - 1]; 
+ 
+/* ---------------------------------------------------------------------- 
+** FIR Coefficients buffer generated using fir1() MATLAB function. 
+** fir1(28, 6/24)
+** ------------------------------------------------------------------- */ 
+ 
+const float32_t firCoeffs32[NUM_TAPS] = { 
+-0.0018225230f, -0.0015879294f, +0.0000000000f, +0.0036977508f, +0.0080754303f, +0.0085302217f, -0.0000000000f, -0.0173976984f, 
+-0.0341458607f, -0.0333591565f, +0.0000000000f, +0.0676308395f, +0.1522061835f, +0.2229246956f, +0.2504960933f, +0.2229246956f, 
++0.1522061835f, +0.0676308395f, +0.0000000000f, -0.0333591565f, -0.0341458607f, -0.0173976984f, -0.0000000000f, +0.0085302217f, 
++0.0080754303f, +0.0036977508f, +0.0000000000f, -0.0015879294f, -0.0018225230f 
+}; 
+ 
+/* ------------------------------------------------------------------ 
+ * Global variables for FIR LPF Example 
+ * ------------------------------------------------------------------- */ 
+
+uint32_t blockSize = BLOCK_SIZE; 
+uint32_t numBlocks = TEST_LENGTH_SAMPLES/BLOCK_SIZE; 
+ 
+float32_t  snr; 
+ 
+/* ---------------------------------------------------------------------- 
+ * FIR LPF Example 
+ * ------------------------------------------------------------------- */ 
+ 
+int32_t main(void) 
+{ 
+  uint32_t i; 
+  arm_fir_instance_f32 S; 
+  arm_status status; 
+  float32_t  *inputF32, *outputF32; 
+ 
+  /* Initialize input and output buffer pointers */ 
+  inputF32 = &testInput_f32_1kHz_15kHz[0];   
+  outputF32 = &testOutput[0]; 
+
+  /* Call FIR init function to initialize the instance structure. */
+  arm_fir_init_f32(&S, NUM_TAPS, (float32_t *)&firCoeffs32[0], &firStateF32[0], blockSize); 
+ 
+  /* ---------------------------------------------------------------------- 
+  ** Call the FIR process function for every blockSize samples  
+  ** ------------------------------------------------------------------- */ 
+
+  for(i=0; i < numBlocks; i++)  
+    {    
+      arm_fir_f32(&S, inputF32 + (i * blockSize), outputF32 + (i * blockSize), blockSize);  
+    } 
+ 
+  /* ---------------------------------------------------------------------- 
+  ** Compare the generated output against the reference output computed
+  ** in MATLAB.
+  ** ------------------------------------------------------------------- */ 
+
+  snr = arm_snr_f32(&refOutput[0], &testOutput[0], TEST_LENGTH_SAMPLES); 
+ 
+  if (snr < SNR_THRESHOLD_F32) 
+    { 
+      status = ARM_MATH_TEST_FAILURE; 
+    } 
+  else
+    {
+      status = ARM_MATH_SUCCESS; 
+    }
+     
+  /* ---------------------------------------------------------------------- 
+  ** Loop here if the signal does not match the reference output.
+  ** ------------------------------------------------------------------- */ 
+     
+  if( status != ARM_MATH_SUCCESS) 
+    { 
+      while(1); 
+    } 
+} 
+ 
+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_graphic_equalizer_example_q31_8c-example.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_graphic_equalizer_example_q31_8c-example.html new file mode 100644 index 000000000..1789bb576 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_graphic_equalizer_example_q31_8c-example.html @@ -0,0 +1,372 @@ + + + + +CMSIS DSP Software Library: arm_graphic_equalizer_example_q31.c + + + + + + + + + +
+
+

arm_graphic_equalizer_example_q31.c

+
+
+
/* ---------------------------------------------------------------------- 
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*  
+* $Date:         29. November 2010  
+* $Revision:      V1.0.3 
+*  
+* Project:    CMSIS DSP Library  
+* Title:          arm_graphic_equalizer_example_q31.c         
+*  
+* Description:  Example showing an audio graphic equalizer constructed
+*              out of Biquad filters.
+* 
+* Target Processor: Cortex-M4/Cortex-M3  
+*
+*
+* Version 1.0.3 2010/11/29 
+*    Re-organized the CMSIS folders and updated documentation. 
+* 
+* Version 1.0.1 2010/10/05 KK 
+*    Production release and review comments incorporated.  
+*
+* Version 1.0.0 2010/09/20 KK
+*    Production release and review comments incorporated.
+* ------------------------------------------------------------------- */ 
+ 
+#include "arm_math.h" 
+#include "math_helper.h"
+
+/* Length of the overall data in the test */ 
+#define TESTLENGTH 320
+
+/* Block size for the underlying processing */
+#define BLOCKSIZE 32
+
+/* Total number of blocks to run */
+#define NUMBLOCKS (TESTLENGTH/BLOCKSIZE)
+
+/* Number of 2nd order Biquad stages per filter */
+#define NUMSTAGES 2
+
+#define SNR_THRESHOLD_F32  98
+ 
+/* ------------------------------------------------------------------- 
+ * External Declarations for Input and Output buffers 
+ * ------------------------------------------------------------------- */
+ 
+extern float32_t testInput_f32[TESTLENGTH]; 
+static float32_t testOutput[TESTLENGTH]; 
+
+extern float32_t testRefOutput_f32[TESTLENGTH];
+
+/* ----------------------------------------------------------------------  
+** Q31 state buffers for Band1, Band2, Band3, Band4, Band5  
+** ------------------------------------------------------------------- */  
+   
+static q63_t biquadStateBand1Q31[4 * 2];   
+static q63_t biquadStateBand2Q31[4 * 2];   
+static q31_t biquadStateBand3Q31[4 * 2];   
+static q31_t biquadStateBand4Q31[4 * 2];   
+static q31_t biquadStateBand5Q31[4 * 2];   
+ 
+/* ----------------------------------------------------------------------  
+** Q31 input and output buffers  
+** ------------------------------------------------------------------- */  
+
+q31_t inputQ31[BLOCKSIZE];   
+q31_t outputQ31[BLOCKSIZE];  
+ 
+/* ----------------------------------------------------------------------
+** Entire coefficient table.  There are 10 coefficients per 4th order Biquad
+** cascade filter.  The first 10 coefficients correspond to the -9 dB gain
+** setting of band 1; the next 10 coefficient correspond to the -8 dB gain
+** setting of band 1; and so on.  There are 10*19=190 coefficients in total
+** for band 1 (gains = -9, -8, -7, ..., 9).  After this come the 190 coefficients
+** for band 2.
+**
+** The coefficients are in Q29 format and require a postShift of 2.
+** ------------------------------------------------------------------- */
+
+const q31_t coeffTable[950] = {
+
+    /* Band 1, -9 dB gain */
+    535576962, -1071153923, 535576962, 1073741824, -536870912, 535576962, -1063501998, 527979313, 1060865294, -524146981, 
+    /* Band 1, -8 dB gain */
+    535723226, -1071446451, 535723226, 1073741824, -536870912, 535723226, -1063568947, 527903217, 1061230578, -524503778, 
+    535868593, -1071737186, 535868593, 1073741824, -536870912, 535868593, -1063627467, 527819780, 1061585502, -524850686, 
+    536013181, -1072026363, 536013181, 1073741824, -536870912, 536013181, -1063677598, 527728935, 1061930361, -525187972, 
+    536157109, -1072314217, 536157109, 1073741824, -536870912, 536157109, -1063719372, 527630607, 1062265438, -525515897, 
+    536300492, -1072600983, 536300492, 1073741824, -536870912, 536300492, -1063752815, 527524720, 1062591011, -525834716, 
+    536443447, -1072886894, 536443447, 1073741824, -536870912, 536443447, -1063777945, 527411186, 1062907350, -526144676, 
+    536586091, -1073172183, 536586091, 1073741824, -536870912, 536586091, -1063794775, 527289917, 1063214717, -526446017, 
+    536728541, -1073457082, 536728541, 1073741824, -536870912, 536728541, -1063803308, 527160815, 1063513366, -526738975, 
+    536870912, -1073741824, 536870912, 1073741824, -536870912, 536870912, -1063803543, 527023777, 1063803543, -527023777, 
+    537013321, -1074026642, 537013321, 1073741824, -536870912, 537013321, -1063795470, 526878696, 1064085490, -527300648, 
+    537155884, -1074311768, 537155884, 1073741824, -536870912, 537155884, -1063779073, 526725455, 1064359439, -527569803, 
+    537298718, -1074597435, 537298718, 1073741824, -536870912, 537298718, -1063754328, 526563934, 1064625617, -527831454, 
+    537441939, -1074883878, 537441939, 1073741824, -536870912, 537441939, -1063721205, 526394005, 1064884245, -528085806, 
+    537585666, -1075171331, 537585666, 1073741824, -536870912, 537585666, -1063679666, 526215534, 1065135536, -528333059, 
+    537730015, -1075460030, 537730015, 1073741824, -536870912, 537730015, -1063629666, 526028380, 1065379699, -528573409, 
+    537875106, -1075750212, 537875106, 1073741824, -536870912, 537875106, -1063571152, 525832396, 1065616936, -528807045, 
+    538021057, -1076042114, 538021057, 1073741824, -536870912, 538021057, -1063504065, 525627429, 1065847444, -529034151, 
+    538167989, -1076335977, 538167989, 1073741824, -536870912, 538167989, -1063428338, 525413317, 1066071412, -529254907, 
+    
+    /* Band 2, -9 dB gain */
+    531784976, -1055497692, 523873415, 1066213307, -529420241, 531784976, -1040357886, 509828014, 1028908252, -494627367,
+    /* Band 2, -8 dB gain */ 
+    532357636, -1056601982, 524400080, 1066115844, -529326645, 532357636, -1040623406, 509562600, 1030462237, -496062122, 
+    532927392, -1057707729, 524931110, 1066024274, -529239070, 532927392, -1040848253, 509262081, 1031969246, -497457090, 
+    533494678, -1058816094, 525467240, 1065939047, -529157961, 533494678, -1041032161, 508925950, 1033429976, -498812573, 
+    534059929, -1059928204, 526009170, 1065860582, -529083734, 534059929, -1041174868, 508553717, 1034845124, -500128887, 
+    534623580, -1061045148, 526557561, 1065789260, -529016764, 534623580, -1041276126, 508144920, 1036215393, -501406373, 
+    535186068, -1062167969, 527113032, 1065725420, -528957385, 535186068, -1041335703, 507699125, 1037541500, -502645399, 
+    535747827, -1063297666, 527676151, 1065669351, -528905879, 535747827, -1041353386, 507215934, 1038824183, -503846368, 
+    536309295, -1064435183, 528247436, 1065621289, -528862476, 536309295, -1041328990, 506694984, 1040064203, -505009724, 
+    536870912, -1065581413, 528827349, 1065581413, -528827349, 536870912, -1041262354, 506135953, 1041262354, -506135953, 
+    537433117, -1066737194, 529416295, 1065549847, -528800610, 537433117, -1041153346, 505538564, 1042419457, -507225588, 
+    537996352, -1067903307, 530014622, 1065526651, -528782316, 537996352, -1041001864, 504902578, 1043536370, -508279208, 
+    538561061, -1069080480, 530622620, 1065511830, -528772462, 538561061, -1040807833, 504227800, 1044613981, -509297437, 
+    539127690, -1070269387, 531240527, 1065505333, -528770987, 539127690, -1040571205, 503514074, 1045653211, -510280946, 
+    539696690, -1071470656, 531868525, 1065507054, -528777778, 539696690, -1040291951, 502761277, 1046655011, -511230450, 
+    540268512, -1072684867, 532506750, 1065516837, -528792672, 540268512, -1039970063, 501969320, 1047620358, -512146700, 
+    540843613, -1073912567, 533155297, 1065534483, -528815459, 540843613, -1039605542, 501138139, 1048550251, -513030484, 
+    541422451, -1075154268, 533814224, 1065559750, -528845892, 541422451, -1039198394, 500267687, 1049445708, -513882621, 
+    542005489, -1076410460, 534483561, 1065592362, -528883686, 542005489, -1038748624, 499357932, 1050307760, -514703956, 
+    518903861, -1001986830, 486725277, 1037235801, -502367695, 518903861, -945834422, 446371043, 902366163, -400700571, 
+    520899989, -1005630916, 488289126, 1036926846, -502147311, 520899989, -946490935, 445581846, 907921945, -404936158, 
+    522893209, -1009290002, 489869792, 1036650484, -501961419, 522893209, -947006359, 444685310, 913306106, -409075225, 
+    524884763, -1012968199, 491470256, 1036407567, -501810737, 524884763, -947377809, 443679533, 918521018, -413116221, 
+    526875910, -1016669649, 493093518, 1036198712, -501695739, 526875910, -947602324, 442562672, 923569247, -417057897, 
+    528867927, -1020398503, 494742575, 1036024293, -501616651, 528867927, -947676875, 441332970, 928453558, -420899319, 
+    530862111, -1024158905, 496420407, 1035884447, -501573457, 530862111, -947598385, 439988777, 933176909, -424639872, 
+    532859778, -1027954970, 498129955, 1035779077, -501565907, 532859778, -947363742, 438528571, 937742446, -428279254, 
+    534862260, -1031790763, 499874098, 1035707863, -501593525, 534862260, -946969823, 436950987, 942153486, -431817474, 
+    536870912, -1035670279, 501655630, 1035670279, -501655630, 536870912, -946413508, 435254839, 946413508, -435254839, 
+    538887107, -1039597419, 503477238, 1035665609, -501751354, 538887107, -945691703, 433439146, 950526127, -438591937, 
+    540912240, -1043575967, 505341475, 1035692963, -501879659, 540912240, -944801359, 431503152, 954495080, -441829621, 
+    542947726, -1047609569, 507250741, 1035751307, -502039364, 542947726, -943739490, 429446349, 958324201, -444968987, 
+    544995000, -1051701717, 509207261, 1035839473, -502229165, 544995000, -942503190, 427268492, 962017400, -448011351, 
+    547055523, -1055855728, 511213065, 1035956193, -502447657, 547055523, -941089647, 424969617, 965578640, -450958226, 
+    549130774, -1060074734, 513269973, 1036100110, -502693359, 549130774, -939496155, 422550049, 969011913, -453811298, 
+    551222259, -1064361672, 515379585, 1036269804, -502964731, 551222259, -937720119, 420010407, 972321228, -456572401, 
+    553331507, -1068719280, 517543273, 1036463810, -503260192, 553331507, -935759057, 417351601, 975510582, -459243495, 
+    555460072, -1073150100, 519762181, 1036680633, -503578144, 555460072, -933610600, 414574832, 978583948, -461826644, 
+    494084017, -851422604, 404056273, 930151631, -423619864, 494084017, -673714108, 339502486, 561843007, -265801750, 
+    498713542, -859177141, 406587077, 929211656, -423786402, 498713542, -673274906, 338185129, 573719128, -272222942, 
+    503369016, -867012190, 409148384, 928362985, -424054784, 503369016, -672533059, 336693984, 585290277, -278599028, 
+    508052536, -874935599, 411746438, 927604291, -424422151, 508052536, -671478538, 335026905, 596558312, -284920289, 
+    512766286, -882955583, 414387826, 926933782, -424885216, 512766286, -670100998, 333182045, 607525792, -291177811, 
+    517512534, -891080712, 417079474, 926349262, -425440318, 517512534, -668389789, 331157902, 618195914, -297363485, 
+    522293635, -899319903, 419828635, 925848177, -426083491, 522293635, -666333963, 328953368, 628572440, -303470012, 
+    527112032, -907682405, 422642886, 925427679, -426810526, 527112032, -663922286, 326567785, 638659631, -309490882, 
+    531970251, -916177781, 425530105, 925084675, -427617023, 531970251, -661143261, 324000998, 648462180, -315420352, 
+    536870912, -924815881, 428498454, 924815881, -428498454, 536870912, -657985147, 321253420, 657985147, -321253420, 
+    541816719, -933606817, 431556352, 924617870, -429450209, 541816719, -654435997, 318326093, 667233900, -326985786, 
+    546810467, -942560921, 434712438, 924487114, -430467639, 546810467, -650483688, 315220754, 676214053, -332613816, 
+    551855042, -951688708, 437975532, 924420027, -431546101, 551855042, -646115970, 311939896, 684931422, -338134495, 
+    556953421, -961000826, 441354588, 924413001, -432680993, 556953421, -641320513, 308486839, 693391970, -343545389, 
+    562108672, -970508005, 444858642, 924462435, -433867780, 562108672, -636084967, 304865786, 701601770, -348844597, 
+    567323959, -980220994, 448496743, 924564764, -435102022, 567323959, -630397020, 301081886, 709566963, -354030710, 
+    572602539, -990150500, 452277894, 924716482, -436379394, 572602539, -624244471, 297141281, 717293726, -359102767, 
+    577947763, -1000307125, 456210977, 924914158, -437695705, 577947763, -617615296, 293051155, 724788245, -364060214, 
+    583363084, -1010701292, 460304674, 925154455, -439046908, 583363084, -610497723, 288819761, 732056685, -368902865, 
+    387379495, -506912469, 196933274, 840112184, -347208270, 387379495, 506912469, 196933274, -840112184, -347208270, 
+    401658082, -532275898, 207149427, 833765363, -343175316, 401658082, 532275898, 207149427, -833765363, -343175316, 
+    416472483, -558722695, 217902617, 827270154, -339107319, 416472483, 558722695, 217902617, -827270154, -339107319, 
+    431841949, -586290861, 229212798, 820624988, -335007540, 431841949, 586290861, 229212798, -820624988, -335007540, 
+    447786335, -615019650, 241100489, 813828443, -330879528, 447786335, 615019650, 241100489, -813828443, -330879528, 
+    464326111, -644949597, 253586805, 806879270, -326727141, 464326111, 644949597, 253586805, -806879270, -326727141, 
+    481482377, -676122557, 266693475, 799776409, -322554559, 481482377, 676122557, 266693475, -799776409, -322554559, 
+    499276882, -708581728, 280442865, 792519013, -318366296, 499276882, 708581728, 280442865, -792519013, -318366296, 
+    517732032, -742371685, 294857996, 785106465, -314167221, 517732032, 742371685, 294857996, -785106465, -314167221, 
+    536870912, -777538408, 309962566, 777538408, -309962566, 536870912, 777538408, 309962566, -777538408, -309962566, 
+    556717294, -814129313, 325780968, 769814766, -305757943, 556717294, 814129313, 325780968, -769814766, -305757943, 
+    577295658, -852193284, 342338310, 761935777, -301559360, 577295658, 852193284, 342338310, -761935777, -301559360, 
+    598631206, -891780698, 359660433, 753902014, -297373230, 598631206, 891780698, 359660433, -753902014, -297373230, 
+    620749877, -932943463, 377773927, 745714425, -293206383, 620749877, 932943463, 377773927, -745714425, -293206383, 
+    643678365, -975735041, 396706151, 737374355, -289066077, 643678365, 975735041, 396706151, -737374355, -289066077, 
+    667444134, -1020210487, 416485252, 728883588, -284960004, 667444134, 1020210487, 416485252, -728883588, -284960004, 
+    692075438, -1066426476, 437140179, 720244375, -280896294, 692075438, 1066426476, 437140179, -720244375, -280896294, 
+    717601336, -1114441339, 458700704, 711459472, -276883515, 717601336, 1114441339, 458700704, -711459472, -276883515, 
+    744051710, -1164315096, 481197437, 702532174, -272930673, 744051710, 1164315096, 481197437, -702532174, -272930673 
+
+};
+
+/* ----------------------------------------------------------------------
+** Desired gains, in dB, per band
+** ------------------------------------------------------------------- */
+
+int gainDB[5] = {0, -3, 6, 4, -6};
+
+float32_t snr;
+
+
+/* ---------------------------------------------------------------------- 
+ * Graphic equalizer Example 
+ * ------------------------------------------------------------------- */ 
+ 
+int32_t main(void) 
+{ 
+  float32_t  *inputF32, *outputF32;  
+  arm_biquad_cas_df1_32x64_ins_q31 S1; 
+  arm_biquad_cas_df1_32x64_ins_q31 S2; 
+  arm_biquad_casd_df1_inst_q31 S3; 
+  arm_biquad_casd_df1_inst_q31 S4; 
+  arm_biquad_casd_df1_inst_q31 S5; 
+  int i;
+  int32_t status;
+     
+  inputF32 = &testInput_f32[0];  
+  outputF32 = &testOutput[0]; 
+     
+  /* Initialize the state and coefficient buffers for all Biquad sections */
+
+  arm_biquad_cas_df1_32x64_init_q31(&S1, NUMSTAGES, 
+                    (q31_t *) &coeffTable[190*0 + 10*(gainDB[0] + 9)],
+                    &biquadStateBand1Q31[0], 2);
+
+  arm_biquad_cas_df1_32x64_init_q31(&S2, NUMSTAGES, 
+                    (q31_t *) &coeffTable[190*1 + 10*(gainDB[1] + 9)],
+                    &biquadStateBand2Q31[0], 2);
+     
+  arm_biquad_cascade_df1_init_q31(&S3, NUMSTAGES, 
+                  (q31_t *) &coeffTable[190*2 + 10*(gainDB[2] + 9)],
+                  &biquadStateBand3Q31[0], 2);
+
+  arm_biquad_cascade_df1_init_q31(&S4, NUMSTAGES, 
+                  (q31_t *) &coeffTable[190*3 + 10*(gainDB[3] + 9)],
+                  &biquadStateBand4Q31[0], 2); 
+     
+  arm_biquad_cascade_df1_init_q31(&S5, NUMSTAGES, 
+                  (q31_t *) &coeffTable[190*4 + 10*(gainDB[4] + 9)],
+                  &biquadStateBand5Q31[0], 2); 
+     
+ 
+  /* Call the process functions and needs to change filter coefficients  
+     for varying the gain of each band */ 
+ 
+  for(i=0; i < NUMBLOCKS; i++) 
+    {    
+
+      /* ---------------------------------------------------------------------- 
+      ** Convert block of input data from float to Q31 
+      ** ------------------------------------------------------------------- */ 
+
+      arm_float_to_q31(inputF32 + (i*BLOCKSIZE), inputQ31, BLOCKSIZE);     
+         
+      /* ----------------------------------------------------------------------
+      ** Scale down by 1/8.  This provides additional headroom so that the
+      ** graphic EQ can apply gain.
+      ** ------------------------------------------------------------------- */
+
+      arm_scale_q31(inputQ31, 0x7FFFFFFF, -3, inputQ31, BLOCKSIZE);
+
+      /* ----------------------------------------------------------------------
+      ** Call the Q31 Biquad Cascade DF1 32x64 process function for band1, band2
+      ** ------------------------------------------------------------------- */
+
+      arm_biquad_cas_df1_32x64_q31(&S1, inputQ31, outputQ31, BLOCKSIZE); 
+      arm_biquad_cas_df1_32x64_q31(&S2, outputQ31, outputQ31, BLOCKSIZE); 
+
+      /* ---------------------------------------------------------------------- 
+      ** Call the Q31 Biquad Cascade DF1 process function for band3, band4, band5
+      ** ------------------------------------------------------------------- */        
+
+      arm_biquad_cascade_df1_q31(&S3, outputQ31, outputQ31, BLOCKSIZE); 
+      arm_biquad_cascade_df1_q31(&S4, outputQ31, outputQ31, BLOCKSIZE);  
+      arm_biquad_cascade_df1_q31(&S5, outputQ31, outputQ31, BLOCKSIZE); 
+ 
+      /* ---------------------------------------------------------------------- 
+      ** Convert Q31 result back to float 
+      ** ------------------------------------------------------------------- */ 
+
+      arm_q31_to_float(outputQ31, outputF32 + (i * BLOCKSIZE), BLOCKSIZE);
+
+      /* ---------------------------------------------------------------------- 
+      ** Scale back up
+      ** ------------------------------------------------------------------- */ 
+
+      arm_scale_f32(outputF32 + (i * BLOCKSIZE), 8.0f, outputF32 + (i * BLOCKSIZE), BLOCKSIZE);
+    }; 
+
+    snr = arm_snr_f32(testRefOutput_f32, testOutput, TESTLENGTH);
+
+    if (snr < SNR_THRESHOLD_F32) 
+    { 
+        status = ARM_MATH_TEST_FAILURE; 
+    } 
+    else
+    {
+        status = ARM_MATH_SUCCESS; 
+    }
+         
+  /* ---------------------------------------------------------------------- 
+  ** Loop here if the signal does not match the reference output.
+  ** ------------------------------------------------------------------- */ 
+     
+  if( status != ARM_MATH_SUCCESS) 
+    { 
+      while(1); 
+    } 
+
+
+} 
+ 
+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_linear_interp_example_f32_8c-example.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_linear_interp_example_f32_8c-example.html new file mode 100644 index 000000000..544a5e7a6 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_linear_interp_example_f32_8c-example.html @@ -0,0 +1,202 @@ + + + + +CMSIS DSP Software Library: arm_linear_interp_example_f32.c + + + + + + + + + +
+
+

arm_linear_interp_example_f32.c

+
+
+
/* ---------------------------------------------------------------------- 
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*  
+* $Date:        29. November 2010  
+* $Revision:    V1.0.3 
+*  
+* Project:      CMSIS DSP Library  
+* Title:        arm_linear_interp_example_f32.c       
+*  
+* Description:  Example code demonstrating usage of sin function  
+*               and uses linear interpolation to get higher precision 
+*                
+* Target Processor: Cortex-M4/Cortex-M3  
+*
+*
+* Version 1.0.3 2010/11/29 
+*    Re-organized the CMSIS folders and updated documentation. 
+* 
+* Version 1.0.1 2010/10/05 KK 
+*    Production release and review comments incorporated.  
+*
+* Version 1.0.0 2010/09/20 KK
+*    Production release and review comments incorporated.
+* ------------------------------------------------------------------- */ 
+ 
+#include "arm_math.h" 
+#include "math_helper.h" 
+ 
+#define SNR_THRESHOLD           90 
+#define TEST_LENGTH_SAMPLES     10 
+#define XSPACING                (0.00005f)
+ 
+/* ---------------------------------------------------------------------- 
+* Test input data for F32 SIN function 
+* Generated by the MATLAB rand() function 
+* randn('state', 0)
+* xi = (((1/4.18318581819710)* randn(blockSize, 1) * 2* pi));
+* --------------------------------------------------------------------*/ 
+float32_t testInputSin_f32[TEST_LENGTH_SAMPLES] =  
+{
+    -0.649716504673081170,  -2.501723745497831200,  0.188250329003310100,   0.432092748487532540,   -1.722010988459680800,  1.788766476323060600,   1.786136060975809500,   -0.056525543169408797,  
+    0.491596272728153760,   0.262309671126153390   
+};  
+ 
+/*------------------------------------------------------------------------------ 
+*  Reference out of SIN F32 function for Block Size = 10  
+*  Calculated from sin(testInputSin_f32) 
+*------------------------------------------------------------------------------*/ 
+float32_t testRefSinOutput32_f32[TEST_LENGTH_SAMPLES] =   
+{
+    -0.604960695383043530,  -0.597090287967934840,  0.187140422442966500,   0.418772124875992690,   -0.988588831792106880,  0.976338412038794010,   0.976903856413481100,   -0.056495446835214236,  
+    0.472033731854734240,   0.259311907228582830
+}; 
+ 
+/*------------------------------------------------------------------------------ 
+*  Method 1: Test out Buffer Calculated from Cubic Interpolation 
+*------------------------------------------------------------------------------*/ 
+float32_t testOutput[TEST_LENGTH_SAMPLES]; 
+ 
+/*------------------------------------------------------------------------------ 
+*  Method 2: Test out buffer Calculated from Linear Interpolation 
+*------------------------------------------------------------------------------*/ 
+float32_t testLinIntOutput[TEST_LENGTH_SAMPLES]; 
+
+/*------------------------------------------------------------------------------ 
+*  External table used for linear interpolation 
+*------------------------------------------------------------------------------*/ 
+extern float32_t arm_linear_interep_table[188495];
+ 
+/* ---------------------------------------------------------------------- 
+* Global Variables for caluclating SNR's for Method1 & Method 2 
+* ------------------------------------------------------------------- */ 
+float32_t snr1; 
+float32_t snr2; 
+ 
+/* ---------------------------------------------------------------------------- 
+* Calculation of Sine values from Cubic Interpolation and Linear interpolation 
+* ---------------------------------------------------------------------------- */ 
+int32_t main(void) 
+{ 
+    uint32_t i; 
+    arm_status status; 
+            
+    arm_linear_interp_instance_f32 S = {188495, -3.141592653589793238, XSPACING, &arm_linear_interep_table[0]}; 
+
+    /*------------------------------------------------------------------------------ 
+    *  Method 1: Test out Calculated from Cubic Interpolation 
+    *------------------------------------------------------------------------------*/ 
+    for(i=0; i< TEST_LENGTH_SAMPLES; i++) 
+    { 
+        testOutput[i] = arm_sin_f32(testInputSin_f32[i]); 
+    } 
+     
+    /*------------------------------------------------------------------------------ 
+    *  Method 2: Test out Calculated from Cubic Interpolation and Linear interpolation 
+    *------------------------------------------------------------------------------*/
+    
+    for(i=0; i< TEST_LENGTH_SAMPLES; i++) 
+    { 
+        testLinIntOutput[i] = arm_linear_interp_f32(&S, testInputSin_f32[i]);
+    }
+ 
+    /*------------------------------------------------------------------------------ 
+    *                   SNR calculation for method 1 
+    *------------------------------------------------------------------------------*/   
+    snr1 = arm_snr_f32(testRefSinOutput32_f32, testOutput, 2); 
+ 
+    /*------------------------------------------------------------------------------ 
+    *                   SNR calculation for method 2 
+    *------------------------------------------------------------------------------*/   
+    snr2 = arm_snr_f32(testRefSinOutput32_f32, testLinIntOutput, 2); 
+     
+    /*------------------------------------------------------------------------------ 
+    *                   Initialise status depending on SNR calculations 
+    *------------------------------------------------------------------------------*/  
+    if( snr2 > snr1) 
+    { 
+        status = ARM_MATH_SUCCESS; 
+    } 
+    else 
+    { 
+        status = ARM_MATH_TEST_FAILURE; 
+    } 
+     
+    /* ---------------------------------------------------------------------- 
+    ** Loop here if the signals fail the PASS check. 
+    ** This denotes a test failure 
+    ** ------------------------------------------------------------------- */ 
+    if( status != ARM_MATH_SUCCESS) 
+    { 
+        while(1); 
+    } 
+} 
+ 
+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_matrix_example_f32_8c-example.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_matrix_example_f32_8c-example.html new file mode 100644 index 000000000..428e48625 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_matrix_example_f32_8c-example.html @@ -0,0 +1,231 @@ + + + + +CMSIS DSP Software Library: arm_matrix_example_f32.c + + + + + + + + + +
+
+

arm_matrix_example_f32.c

+
+
+
/* ---------------------------------------------------------------------- 
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*  
+* $Date:        29. November 2010  
+* $Revision:    V1.0.3
+*  
+* Project:      CMSIS DSP Library  
+* Title:        arm_matrix_example_f32.c          
+*  
+* Description:  Example code demonstrating least square fit to data  
+*               using matrix functions  
+*                
+* Target Processor: Cortex-M4/Cortex-M3  
+*
+*
+* Version 1.0.3 2010/11/29 
+*    Re-organized the CMSIS folders and updated documentation. 
+* 
+* Version 1.0.1 2010/10/05 KK 
+*    Production release and review comments incorporated.  
+*
+* Version 1.0.0 2010/09/20 KK
+*    Production release and review comments incorporated.
+* ------------------------------------------------------------------- */ 
+ 
+#include "arm_math.h" 
+#include "math_helper.h" 
+ 
+#define SNR_THRESHOLD   90 
+ 
+/* -------------------------------------------------------------------------------- 
+* Test input data(Cycles) taken from FIR Q15 module for differant cases of blockSize  
+* and tapSize 
+* --------------------------------------------------------------------------------- */ 
+ 
+const float32_t B_f32[4] =  
+{    
+    782.0, 7577.0, 470.0, 4505.0 
+}; 
+ 
+/* -------------------------------------------------------------------------------- 
+* Formula to fit is  C1 + C2 * numTaps + C3 * blockSize + C4 * numTaps * blockSize 
+* -------------------------------------------------------------------------------- */ 
+ 
+const float32_t A_f32[16] =  
+{ 
+    /* Const,   numTaps,    blockSize,  numTaps*blockSize */    
+    1.0,        32.0,       4.0,        128.0,  
+    1.0,        32.0,       64.0,       2048.0, 
+    1.0,        16.0,       4.0,        64.0, 
+    1.0,        16.0,       64.0,       1024.0, 
+};  
+ 
+ 
+/* ---------------------------------------------------------------------- 
+* Temporary buffers  for storing intermediate values 
+* ------------------------------------------------------------------- */ 
+/* Transpose of A Buffer */ 
+float32_t AT_f32[16]; 
+/* (Transpose of A * A) Buffer */ 
+float32_t ATMA_f32[16]; 
+/* Inverse(Transpose of A * A)  Buffer */ 
+float32_t ATMAI_f32[16]; 
+/* Test Output Buffer */ 
+float32_t X_f32[4]; 
+ 
+/* ---------------------------------------------------------------------- 
+* Reference ouput buffer C1, C2, C3 and C4 taken from MATLAB  
+* ------------------------------------------------------------------- */ 
+const float32_t xRef_f32[4] = {73.0, 8.0, 21.25, 2.875}; 
+ 
+float32_t snr; 
+ 
+ 
+/* ---------------------------------------------------------------------- 
+* Max magnitude FFT Bin test 
+* ------------------------------------------------------------------- */ 
+ 
+int32_t main(void) 
+{ 
+ 
+    arm_matrix_instance_f32 A;      /* Matrix A Instance */ 
+    arm_matrix_instance_f32 AT;     /* Matrix AT(A transpose) instance */ 
+    arm_matrix_instance_f32 ATMA;   /* Matrix ATMA( AT multiply with A) instance */ 
+    arm_matrix_instance_f32 ATMAI;  /* Matrix ATMAI(Inverse of ATMA) instance */ 
+    arm_matrix_instance_f32 B;      /* Matrix B instance */ 
+    arm_matrix_instance_f32 X;      /* Matrix X(Unknown Matrix) instance */ 
+ 
+    uint32_t srcRows, srcColumns;   /* Temporary variables */
+    arm_status status; 
+ 
+    /* Initialise A Matrix Instance with numRows, numCols and data array(A_f32) */ 
+    srcRows = 4; 
+    srcColumns = 4; 
+    arm_mat_init_f32(&A, srcRows, srcColumns, (float32_t *)A_f32); 
+ 
+    /* Initialise Matrix Instance AT with numRows, numCols and data array(AT_f32) */ 
+    srcRows = 4; 
+    srcColumns = 4; 
+    arm_mat_init_f32(&AT, srcRows, srcColumns, AT_f32); 
+ 
+    /* calculation of A transpose */ 
+    status = arm_mat_trans_f32(&A, &AT); 
+     
+ 
+    /* Initialise ATMA Matrix Instance with numRows, numCols and data array(ATMA_f32) */ 
+    srcRows = 4; 
+    srcColumns = 4; 
+    arm_mat_init_f32(&ATMA, srcRows, srcColumns, ATMA_f32); 
+ 
+    /* calculation of AT Multiply with A */ 
+    status = arm_mat_mult_f32(&AT, &A, &ATMA); 
+ 
+    /* Initialise ATMAI Matrix Instance with numRows, numCols and data array(ATMAI_f32) */ 
+    srcRows = 4; 
+    srcColumns = 4; 
+    arm_mat_init_f32(&ATMAI, srcRows, srcColumns, ATMAI_f32); 
+ 
+    /* calculation of Inverse((Transpose(A) * A) */ 
+    status = arm_mat_inverse_f32(&ATMA, &ATMAI); 
+ 
+    /* calculation of (Inverse((Transpose(A) * A)) *  Transpose(A)) */ 
+    status = arm_mat_mult_f32(&ATMAI, &AT, &ATMA); 
+ 
+    /* Initialise B Matrix Instance with numRows, numCols and data array(B_f32) */ 
+    srcRows = 4; 
+    srcColumns = 1; 
+    arm_mat_init_f32(&B, srcRows, srcColumns, (float32_t *)B_f32);  
+ 
+    /* Initialise X Matrix Instance with numRows, numCols and data array(X_f32) */ 
+    srcRows = 4; 
+    srcColumns = 1; 
+    arm_mat_init_f32(&X, srcRows, srcColumns, X_f32); 
+ 
+    /* calculation ((Inverse((Transpose(A) * A)) *  Transpose(A)) * B) */ 
+    status = arm_mat_mult_f32(&ATMA, &B, &X); 
+     
+    /* Comparison of reference with test output */     
+    snr = arm_snr_f32((float32_t *)xRef_f32, X_f32, 4); 
+ 
+    /*------------------------------------------------------------------------------ 
+    *                   Initialise status depending on SNR calculations 
+    *------------------------------------------------------------------------------*/  
+    if( snr > SNR_THRESHOLD) 
+    { 
+        status = ARM_MATH_SUCCESS; 
+    } 
+    else 
+    { 
+        status = ARM_MATH_TEST_FAILURE; 
+    } 
+ 
+     
+    /* ---------------------------------------------------------------------- 
+    ** Loop here if the signals fail the PASS check. 
+    ** This denotes a test failure 
+    ** ------------------------------------------------------------------- */    
+    if( status != ARM_MATH_SUCCESS) 
+    { 
+      while(1); 
+    } 
+} 
+ 
+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_signal_converge_example_f32_8c-example.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_signal_converge_example_f32_8c-example.html new file mode 100644 index 000000000..5898465db --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_signal_converge_example_f32_8c-example.html @@ -0,0 +1,241 @@ + + + + +CMSIS DSP Software Library: arm_signal_converge_example_f32.c + + + + + + + + + +
+
+

arm_signal_converge_example_f32.c

+
+
+
/* ---------------------------------------------------------------------- 
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*  
+* $Date:        29. November 2010  
+* $Revision:    V1.0.3
+*  
+* Project:      CMSIS DSP Library  
+* Title:        arm_signal_converge_example_f32.c         
+*  
+* Description:  Example code demonstrating convergence of an adaptive 
+*               filter. 
+* 
+* Target Processor: Cortex-M4/Cortex-M3  
+*
+*
+* Version 1.0.3 2010/11/29 
+*    Re-organized the CMSIS folders and updated documentation. 
+* 
+* Version 1.0.1 2010/10/05 KK 
+*    Production release and review comments incorporated.  
+*
+* Version 1.0.0 2010/09/20 KK
+*    Production release and review comments incorporated.
+* ------------------------------------------------------------------- */ 
+ 
+#include "arm_math.h" 
+#include "math_helper.h" 
+ 
+/* ---------------------------------------------------------------------- 
+** Global defines for the simulation 
+* ------------------------------------------------------------------- */ 
+ 
+#define TEST_LENGTH_SAMPLES 1536 
+#define NUMTAPS             32 
+#define BLOCKSIZE           32 
+#define DELTA_ERROR         0.000001f 
+#define DELTA_COEFF         0.0001f 
+#define MU                  0.5f 
+ 
+#define NUMFRAMES (TEST_LENGTH_SAMPLES / BLOCKSIZE) 
+ 
+/* ---------------------------------------------------------------------- 
+* Declare FIR state buffers and structure  
+* ------------------------------------------------------------------- */ 
+  
+float32_t firStateF32[NUMTAPS + BLOCKSIZE];  
+arm_fir_instance_f32 LPF_instance; 
+ 
+/* ---------------------------------------------------------------------- 
+* Declare LMSNorm state buffers and structure  
+* ------------------------------------------------------------------- */ 
+  
+float32_t lmsStateF32[NUMTAPS + BLOCKSIZE];  
+float32_t errOutput[TEST_LENGTH_SAMPLES]; 
+arm_lms_norm_instance_f32 lmsNorm_instance; 
+ 
+ 
+/* ---------------------------------------------------------------------- 
+* Function Declarations for Signal Convergence Example  
+* ------------------------------------------------------------------- */ 
+ 
+arm_status test_signal_converge_example( void ); 
+ 
+ 
+/* ---------------------------------------------------------------------- 
+* Internal functions 
+* ------------------------------------------------------------------- */ 
+arm_status test_signal_converge(float32_t* err_signal, 
+                                 uint32_t blockSize); 
+ 
+void getinput(float32_t* input, 
+         uint32_t fr_cnt,  
+         uint32_t blockSize);  
+ 
+/* ---------------------------------------------------------------------- 
+* External Declarations for FIR F32 module Test 
+* ------------------------------------------------------------------- */ 
+extern float32_t testInput_f32[TEST_LENGTH_SAMPLES]; 
+extern float32_t lmsNormCoeff_f32[32]; 
+extern const float32_t FIRCoeff_f32[32]; 
+extern arm_lms_norm_instance_f32 lmsNorm_instance; 
+ 
+/* ---------------------------------------------------------------------- 
+* Declare I/O buffers  
+* ------------------------------------------------------------------- */ 
+ 
+float32_t wire1[BLOCKSIZE]; 
+float32_t wire2[BLOCKSIZE]; 
+float32_t wire3[BLOCKSIZE]; 
+float32_t err_signal[BLOCKSIZE]; 
+ 
+/* ---------------------------------------------------------------------- 
+* Signal converge test 
+* ------------------------------------------------------------------- */ 
+ 
+int32_t main(void) 
+{ 
+  uint32_t i; 
+  arm_status status; 
+  uint32_t index; 
+  float32_t minValue; 
+ 
+  /* Initialize the LMSNorm data structure */ 
+  arm_lms_norm_init_f32(&lmsNorm_instance, NUMTAPS, lmsNormCoeff_f32, lmsStateF32, MU, BLOCKSIZE); 
+ 
+  /* Initialize the FIR data structure */ 
+  arm_fir_init_f32(&LPF_instance, NUMTAPS, (float32_t *)FIRCoeff_f32, firStateF32, BLOCKSIZE); 
+ 
+  /* ---------------------------------------------------------------------- 
+  * Loop over the frames of data and execute each of the processing 
+  * functions in the system. 
+  * ------------------------------------------------------------------- */ 
+ 
+  for(i=0; i < NUMFRAMES; i++)  
+    { 
+      /* Read the input data - uniformly distributed random noise - into wire1 */  
+      arm_copy_f32(testInput_f32 + (i * BLOCKSIZE), wire1, BLOCKSIZE); 
+ 
+      /* Execute the FIR processing function.  Input wire1 and output wire2 */  
+      arm_fir_f32(&LPF_instance, wire1, wire2, BLOCKSIZE); 
+       
+      /* Execute the LMS Norm processing function*/  
+ 
+      arm_lms_norm_f32(&lmsNorm_instance, /* LMSNorm instance */ 
+               wire1,                     /* Input signal */  
+               wire2,                     /* Reference Signal */ 
+               wire3,                     /* Converged Signal */ 
+               err_signal,                /* Error Signal, this will become small as the signal converges */ 
+               BLOCKSIZE);                /* BlockSize */ 
+ 
+      /* apply overall gain */  
+      arm_scale_f32(wire3, 5, wire3, BLOCKSIZE);     /* in-place buffer */  
+    } 
+ 
+  status = ARM_MATH_SUCCESS; 
+ 
+  /* ------------------------------------------------------------------------------- 
+  * Test whether the error signal has reached towards 0. 
+  * ----------------------------------------------------------------------------- */ 
+ 
+  arm_abs_f32(err_signal, err_signal, BLOCKSIZE); 
+  arm_min_f32(err_signal, BLOCKSIZE, &minValue, &index); 
+ 
+  if (minValue > DELTA_ERROR) 
+  { 
+      status = ARM_MATH_TEST_FAILURE; 
+  } 
+ 
+  /* ---------------------------------------------------------------------- 
+  * Test whether the filter coefficients have converged. 
+  * ------------------------------------------------------------------- */ 
+ 
+  arm_sub_f32((float32_t *)FIRCoeff_f32, lmsNormCoeff_f32, lmsNormCoeff_f32, NUMTAPS); 
+ 
+  arm_abs_f32(lmsNormCoeff_f32, lmsNormCoeff_f32, NUMTAPS); 
+  arm_min_f32(lmsNormCoeff_f32, NUMTAPS, &minValue, &index); 
+ 
+  if (minValue > DELTA_COEFF) 
+  { 
+      status = ARM_MATH_TEST_FAILURE; 
+  } 
+ 
+  /* ---------------------------------------------------------------------- 
+  * Loop here if the signals did not pass the convergence check. 
+  * This denotes a test failure 
+  * ------------------------------------------------------------------- */ 
+ 
+  if( status != ARM_MATH_SUCCESS) 
+  { 
+      while(1); 
+  } 
+} 
+ 
+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_sin_cos_example_f32_8c-example.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_sin_cos_example_f32_8c-example.html new file mode 100644 index 000000000..33721b76b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_sin_cos_example_f32_8c-example.html @@ -0,0 +1,167 @@ + + + + +CMSIS DSP Software Library: arm_sin_cos_example_f32.c + + + + + + + + + +
+
+

arm_sin_cos_example_f32.c

+
+
+
/* ---------------------------------------------------------------------- 
+* Copyright (C) 2010 ARM Limited. All rights reserved.   
+*  
+* $Date:        29. November 2010  
+* $Revision:    V1.0.3
+*  
+* Project:      CMSIS DSP Library  
+* Title:        arm_sin_cos_example_f32.c         
+*  
+* Description:  Example code demonstrating sin and cos calculation of input signal. 
+* 
+* Target Processor: Cortex-M4/Cortex-M3  
+*
+*
+* Version 1.0.3 2010/11/29 
+*    Re-organized the CMSIS folders and updated documentation. 
+* 
+* Version 1.0.1 2010/10/05 KK 
+*    Production release and review comments incorporated.  
+*
+* Version 1.0.0 2010/09/20 KK
+*    Production release and review comments incorporated.
+* ------------------------------------------------------------------- */ 
+ 
+#include <math.h>     
+#include "arm_math.h" 
+ 
+/* ---------------------------------------------------------------------- 
+* Defines each of the tests performed 
+* ------------------------------------------------------------------- */ 
+#define MAX_BLOCKSIZE   32 
+#define DELTA           (0.000001f) 
+ 
+ 
+/* ---------------------------------------------------------------------- 
+* Test input data for Floating point sin_cos example for 32-blockSize 
+* Generated by the MATLAB randn() function 
+* ------------------------------------------------------------------- */ 
+ 
+const float32_t testInput_f32[MAX_BLOCKSIZE] =  
+{    
+    -1.244916875853235400,  -4.793533929171324800,  0.360705030233248850,   0.827929644170887320,   -3.299532218312426900,  3.427441903227623800,   3.422401784294607700,   -0.108308165334010680,   
+    0.941943896490312180,   0.502609575000365850,   -0.537345278736373500,  2.088817392965764500,   -1.693168684143455700,  6.283185307179590700,   -0.392545884746175080,  0.327893095115825040,    
+    3.070147440456292300,   0.170611405884662230,   -0.275275082396073010,  -2.395492805446796300,  0.847311163536506600,   -3.845517018083148800,  2.055818378415868300,   4.672594161978930800,    
+    -1.990923030266425800,  2.469305197656249500,   3.609002606064021000,   -4.586736582331667500,  -4.147080139136136300,  1.643756718868359500,   -1.150866392366494800,  1.985805026477433800 
+ 
+ 
+};  
+ 
+const float32_t testRefOutput_f32 = 1.000000000; 
+ 
+/* ---------------------------------------------------------------------- 
+* Declare Global variables  
+* ------------------------------------------------------------------- */ 
+uint32_t blockSize = 32; 
+float32_t  testOutput;  
+float32_t  cosOutput;  
+float32_t  sinOutput;  
+float32_t  cosSquareOutput;  
+float32_t  sinSquareOutput; 
+ 
+/* ---------------------------------------------------------------------- 
+* Max magnitude FFT Bin test 
+* ------------------------------------------------------------------- */ 
+
+arm_status status; 
+ 
+int32_t main(void) 
+{ 
+    float32_t diff; 
+    uint32_t i; 
+ 
+    for(i=0; i< blockSize; i++) 
+    { 
+        cosOutput = arm_cos_f32(testInput_f32[i]); 
+        sinOutput = arm_sin_f32(testInput_f32[i]); 
+ 
+        arm_mult_f32(&cosOutput, &cosOutput, &cosSquareOutput, 1); 
+        arm_mult_f32(&sinOutput, &sinOutput, &sinSquareOutput, 1); 
+ 
+        arm_add_f32(&cosSquareOutput, &sinSquareOutput, &testOutput, 1);
+ 
+        /* absolute value of difference between ref and test */ 
+        diff = fabsf(testRefOutput_f32 - testOutput); 
+     
+        /* Comparison of sin_cos value with reference */ 
+        if(diff > DELTA) 
+        { 
+           status = ARM_MATH_TEST_FAILURE; 
+        } 
+         
+        if( status == ARM_MATH_TEST_FAILURE) 
+        { 
+           while(1); 
+        } 
+ 
+    } 
+} 
+ 
+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_variance_example_f32_8c-example.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_variance_example_f32_8c-example.html new file mode 100644 index 000000000..7df1dad7b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/arm_variance_example_f32_8c-example.html @@ -0,0 +1,201 @@ + + + + +CMSIS DSP Software Library: arm_variance_example_f32.c + + + + + + + + + +
+
+

arm_variance_example_f32.c

+
+
+
/* ----------------------------------------------------------------------    
+* Copyright (C) 2010 ARM Limited. All rights reserved.     
+*    
+* $Date:        29. November 2010  
+* $Revision:    V1.0.3
+*     
+* Project:      CMSIS DSP Library  
+* Title:        arm_variance_example_f32.c       
+* 
+* Description:  Example code demonstrating variance calculation of input sequence.
+*     
+* Target Processor: Cortex-M4/Cortex-M3  
+*
+*
+* Version 1.0.3 2010/11/29 
+*    Re-organized the CMSIS folders and updated documentation. 
+* 
+* Version 1.0.1 2010/10/05 KK 
+*    Production release and review comments incorporated.  
+*
+* Version 1.0.0 2010/09/20 KK
+*    Production release and review comments incorporated.
+* ------------------------------------------------------------------- */
+
+#include <math.h>    
+#include "arm_math.h"
+
+/* ----------------------------------------------------------------------
+* Defines each of the tests performed
+* ------------------------------------------------------------------- */
+#define MAX_BLOCKSIZE   32
+#define DELTA           (0.000001f)
+
+
+/* ----------------------------------------------------------------------
+* Declare I/O buffers 
+* ------------------------------------------------------------------- */
+float32_t wire1[MAX_BLOCKSIZE];
+float32_t wire2[MAX_BLOCKSIZE];
+float32_t wire3[MAX_BLOCKSIZE];
+
+/* ----------------------------------------------------------------------
+* Test input data for Floating point Variance example for 32-blockSize
+* Generated by the MATLAB randn() function
+* ------------------------------------------------------------------- */
+
+float32_t testInput_f32[32] = 
+{ 
+-0.432564811528221,     -1.665584378238097,     0.125332306474831,      0.287676420358549,  
+-1.146471350681464,     1.190915465642999,      1.189164201652103,      -0.037633276593318,     
+0.327292361408654,      0.174639142820925,      -0.186708577681439,     0.725790548293303,  
+-0.588316543014189,     2.183185818197101,      -0.136395883086596,     0.113931313520810,  
+1.066768211359189,      0.059281460523605,      -0.095648405483669,     -0.832349463650022,     
+0.294410816392640,      -1.336181857937804,     0.714324551818952,      1.623562064446271,  
+-0.691775701702287,     0.857996672828263,      1.254001421602532,      -1.593729576447477,     
+-1.440964431901020,     0.571147623658178,      -0.399885577715363,     0.689997375464345
+  
+};
+
+/* ----------------------------------------------------------------------
+* Declare Global variables 
+* ------------------------------------------------------------------- */
+uint32_t blockSize = 32;
+float32_t  refVarianceOut = 0.903941793931839; 
+
+/* ----------------------------------------------------------------------
+* Variance calculation test
+* ------------------------------------------------------------------- */
+
+int32_t main(void)
+{
+    arm_status status;
+    float32_t mean, oneByBlockSize;
+    float32_t variance;
+    float32_t diff;
+    
+    status = ARM_MATH_SUCCESS;
+    
+    /* Calculation of mean value of input */
+    
+    /* x' = 1/blockSize * (x(0)* 1 + x(1) * 1 + ... + x(n-1) * 1) */
+    
+    /* Fill wire1 buffer with 1.0 value */
+    arm_fill_f32(1.0,  wire1, blockSize);
+    
+    /* Calculate the dot product of wire1 and wire2 */
+    /* (x(0)* 1 + x(1) * 1 + ...+ x(n-1) * 1) */
+    arm_dot_prod_f32(testInput_f32, wire1, blockSize, &mean);
+    
+    /* Calculation of 1/blockSize */
+    oneByBlockSize = 1.0 / (blockSize);
+    
+    /* 1/blockSize * (x(0)* 1 + x(1) * 1 + ... + x(n-1) * 1)  */
+    arm_mult_f32(&mean, &oneByBlockSize, &mean, 1);
+    
+    
+    /* Calculation of variance value of input */
+    
+    /* (1/blockSize) * (x(0) - x') * (x(0) - x') + (x(1) - x') * (x(1) - x') + ... + (x(n-1) - x') * (x(n-1) - x') */
+    
+    /* Fill wire2 with mean value x' */
+    arm_fill_f32(mean,  wire2, blockSize);
+    
+    /* wire3 contains (x-x') */     
+    arm_sub_f32(testInput_f32, wire2, wire3, blockSize);
+    
+    /* wire2 contains (x-x') */             
+    arm_copy_f32(wire3, wire2, blockSize);
+    
+    /* (x(0) - x') * (x(0) - x') + (x(1) - x') * (x(1) - x') + ... + (x(n-1) - x') * (x(n-1) - x') */
+    arm_dot_prod_f32(wire2, wire3, blockSize, &variance); 
+
+    /* Calculation of 1/blockSize */
+    oneByBlockSize = 1.0 / (blockSize - 1);
+
+    /* Calculation of variance */       
+    arm_mult_f32(&variance, &oneByBlockSize, &variance, 1);
+    
+    /* absolute value of difference between ref and test */
+    diff = fabsf(refVarianceOut - variance);
+    
+    /* Comparison of variance value with reference */
+    if(diff > DELTA)
+    {
+        status = ARM_MATH_TEST_FAILURE;
+    }
+        
+    if( status != ARM_MATH_SUCCESS)
+    {
+      while(1);
+    }
+}
+
+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/bc_s.png b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/bc_s.png new file mode 100644 index 000000000..51ba0066d Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/bc_s.png differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/clarke.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/clarke.gif new file mode 100644 index 000000000..5c75d0955 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/clarke.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/clarkeFormula.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/clarkeFormula.gif new file mode 100644 index 000000000..f2a1c3e2e Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/clarkeFormula.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/clarkeInvFormula.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/clarkeInvFormula.gif new file mode 100644 index 000000000..60522f735 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/clarkeInvFormula.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/classes.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/classes.html new file mode 100644 index 000000000..e026f0e37 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/classes.html @@ -0,0 +1,77 @@ + + + + +CMSIS DSP Software Library: Alphabetical List + + + + + + + + + +
+
+

Data Structure Index

+
+
+ + +
  A  
+
arm_cfft_radix4_instance_q15   arm_fir_instance_q7   arm_fir_sparse_instance_q7   arm_lms_norm_instance_q31   
arm_bilinear_interp_instance_f32   arm_cfft_radix4_instance_q31   arm_fir_interpolate_instance_f32   arm_iir_lattice_instance_f32   arm_matrix_instance_f32   
arm_bilinear_interp_instance_q15   arm_dct4_instance_f32   arm_fir_interpolate_instance_q15   arm_iir_lattice_instance_q15   arm_matrix_instance_q15   
arm_bilinear_interp_instance_q31   arm_dct4_instance_q15   arm_fir_interpolate_instance_q31   arm_iir_lattice_instance_q31   arm_matrix_instance_q31   
arm_bilinear_interp_instance_q7   arm_dct4_instance_q31   arm_fir_lattice_instance_f32   arm_linear_interp_instance_f32   arm_pid_instance_f32   
arm_biquad_cas_df1_32x64_ins_q31   arm_fir_decimate_instance_f32   arm_fir_lattice_instance_q15   arm_lms_instance_f32   arm_pid_instance_q15   
arm_biquad_cascade_df2T_instance_f32   arm_fir_decimate_instance_q15   arm_fir_lattice_instance_q31   arm_lms_instance_q15   arm_pid_instance_q31   
arm_biquad_casd_df1_inst_f32   arm_fir_decimate_instance_q31   arm_fir_sparse_instance_f32   arm_lms_instance_q31   arm_rfft_instance_f32   
arm_biquad_casd_df1_inst_q15   arm_fir_instance_f32   arm_fir_sparse_instance_q15   arm_lms_norm_instance_f32   arm_rfft_instance_q15   
arm_biquad_casd_df1_inst_q31   arm_fir_instance_q15   arm_fir_sparse_instance_q31   arm_lms_norm_instance_q15   arm_rfft_instance_q31   
arm_cfft_radix4_instance_f32   arm_fir_instance_q31   
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/closed.png b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/closed.png new file mode 100644 index 000000000..b7d4bd9fe Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/closed.png differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/dct4FormatsQ15Table.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/dct4FormatsQ15Table.gif new file mode 100644 index 000000000..050999cb1 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/dct4FormatsQ15Table.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/dct4FormatsQ31Table.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/dct4FormatsQ31Table.gif new file mode 100644 index 000000000..749118771 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/dct4FormatsQ31Table.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/dct4NormalizingF32Table.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/dct4NormalizingF32Table.gif new file mode 100644 index 000000000..f3536b8ca Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/dct4NormalizingF32Table.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/dct4NormalizingQ15Table.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/dct4NormalizingQ15Table.gif new file mode 100644 index 000000000..625a4189a Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/dct4NormalizingQ15Table.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/dct4NormalizingQ31Table.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/dct4NormalizingQ31Table.gif new file mode 100644 index 000000000..22d1f6588 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/dct4NormalizingQ31Table.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/dotProduct.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/dotProduct.gif new file mode 100644 index 000000000..7a3af2891 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/dotProduct.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/doxygen.css b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/doxygen.css new file mode 100644 index 000000000..1d22bd019 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/doxygen.css @@ -0,0 +1,686 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl { + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 12px; +} + +/* @group Heading Levels */ + +h1 { + font-size: 150%; +} + +h2 { + font-size: 120%; +} + +h3 { + font-size: 100%; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + padding: 2px; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code { + color: #4665A2; +} + +a.codeRef { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +.fragment { + font-family: monospace, fixed; + font-size: 105%; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 10px; + margin-right: 10px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #C4CFE5; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.memitem { + padding: 0; + margin-bottom: 10px; +} + +.memname { + white-space: nowrap; + font-weight: bold; + margin-left: 6px; +} + +.memproto { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 8px; + border-top-left-radius: 8px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 8px; + -moz-border-radius-topleft: 8px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 8px; + -webkit-border-top-left-radius: 8px; + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + +} + +.memdoc { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 2px 5px; + background-color: #FBFCFD; + border-top-width: 0; + /* opera specific markup */ + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7); + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7)); +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +.params, .retval, .exception, .tparams { + border-spacing: 6px 2px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + + + + +/* @end */ + +/* @group Directory (tree) */ + +/* for the tree view */ + +.ftvtree { + font-family: sans-serif; + margin: 0px; +} + +/* these are for tree view when used as main index */ + +.directory { + font-size: 9pt; + font-weight: bold; + margin: 5px; +} + +.directory h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +/* +The following two styles can be used to replace the root node title +with an image of your choice. Simply uncomment the next two styles, +specify the name of your image and be sure to set 'height' to the +proper pixel height of your image. +*/ + +/* +.directory h3.swap { + height: 61px; + background-repeat: no-repeat; + background-image: url("yourimage.gif"); +} +.directory h3.swap span { + display: none; +} +*/ + +.directory > h3 { + margin-top: 0; +} + +.directory p { + margin: 0px; + white-space: nowrap; +} + +.directory div { + display: none; + margin: 0px; +} + +.directory img { + vertical-align: -30%; +} + +/* these are for tree view when not used as main index */ + +.directory-alt { + font-size: 100%; + font-weight: bold; +} + +.directory-alt h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +.directory-alt > h3 { + margin-top: 0; +} + +.directory-alt p { + margin: 0px; + white-space: nowrap; +} + +.directory-alt div { + display: none; + margin: 0px; +} + +.directory-alt img { + vertical-align: -30%; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; +} + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right: 15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; +} + +.navpath a:hover +{ + color:#6884BD; +} + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/doxygen.png b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/doxygen.png new file mode 100644 index 000000000..635ed52fc Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/doxygen.png differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/examples.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/examples.html new file mode 100644 index 000000000..0acc93611 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/examples.html @@ -0,0 +1,91 @@ + + + + +CMSIS DSP Software Library: Examples + + + + + + + + + +
+
+

Examples

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/files.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/files.html new file mode 100644 index 000000000..8797c45d9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/files.html @@ -0,0 +1,327 @@ + + + + +CMSIS DSP Software Library: File Index + + + + + + + + + +
+
+

File List

+
+
+Here is a list of all files with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_abs_f32.c [code]
arm_abs_q15.c [code]
arm_abs_q31.c [code]
arm_abs_q7.c [code]
arm_add_f32.c [code]
arm_add_q15.c [code]
arm_add_q31.c [code]
arm_add_q7.c [code]
arm_biquad_cascade_df1_32x64_init_q31.c [code]
arm_biquad_cascade_df1_32x64_q31.c [code]
arm_biquad_cascade_df1_f32.c [code]
arm_biquad_cascade_df1_fast_q15.c [code]
arm_biquad_cascade_df1_fast_q31.c [code]
arm_biquad_cascade_df1_init_f32.c [code]
arm_biquad_cascade_df1_init_q15.c [code]
arm_biquad_cascade_df1_init_q31.c [code]
arm_biquad_cascade_df1_q15.c [code]
arm_biquad_cascade_df1_q31.c [code]
arm_biquad_cascade_df2T_f32.c [code]
arm_biquad_cascade_df2T_init_f32.c [code]
arm_cfft_radix4_f32.c [code]
arm_cfft_radix4_init_f32.c [code]
arm_cfft_radix4_init_q15.c [code]
arm_cfft_radix4_init_q31.c [code]
arm_cfft_radix4_q15.c [code]
arm_cfft_radix4_q31.c [code]
arm_class_marks_example_f32.c [code]
arm_cmplx_conj_f32.c [code]
arm_cmplx_conj_q15.c [code]
arm_cmplx_conj_q31.c [code]
arm_cmplx_dot_prod_f32.c [code]
arm_cmplx_dot_prod_q15.c [code]
arm_cmplx_dot_prod_q31.c [code]
arm_cmplx_mag_f32.c [code]
arm_cmplx_mag_q15.c [code]
arm_cmplx_mag_q31.c [code]
arm_cmplx_mag_squared_f32.c [code]
arm_cmplx_mag_squared_q15.c [code]
arm_cmplx_mag_squared_q31.c [code]
arm_cmplx_mult_cmplx_f32.c [code]
arm_cmplx_mult_cmplx_q15.c [code]
arm_cmplx_mult_cmplx_q31.c [code]
arm_cmplx_mult_real_f32.c [code]
arm_cmplx_mult_real_q15.c [code]
arm_cmplx_mult_real_q31.c [code]
arm_common_tables.c [code]
arm_conv_f32.c [code]
arm_conv_fast_q15.c [code]
arm_conv_fast_q31.c [code]
arm_conv_partial_f32.c [code]
arm_conv_partial_fast_q15.c [code]
arm_conv_partial_fast_q31.c [code]
arm_conv_partial_q15.c [code]
arm_conv_partial_q31.c [code]
arm_conv_partial_q7.c [code]
arm_conv_q15.c [code]
arm_conv_q31.c [code]
arm_conv_q7.c [code]
arm_convolution_example_f32.c [code]
arm_copy_f32.c [code]
arm_copy_q15.c [code]
arm_copy_q31.c [code]
arm_copy_q7.c [code]
arm_correlate_f32.c [code]
arm_correlate_fast_q15.c [code]
arm_correlate_fast_q31.c [code]
arm_correlate_q15.c [code]
arm_correlate_q31.c [code]
arm_correlate_q7.c [code]
arm_cos_f32.c [code]
arm_cos_q15.c [code]
arm_cos_q31.c [code]
arm_dct4_f32.c [code]
arm_dct4_init_f32.c [code]
arm_dct4_init_q15.c [code]
arm_dct4_init_q31.c [code]
arm_dct4_q15.c [code]
arm_dct4_q31.c [code]
arm_dot_prod_f32.c [code]
arm_dot_prod_q15.c [code]
arm_dot_prod_q31.c [code]
arm_dot_prod_q7.c [code]
arm_dotproduct_example_f32.c [code]
arm_fft_bin_example_f32.c [code]
arm_fill_f32.c [code]
arm_fill_q15.c [code]
arm_fill_q31.c [code]
arm_fill_q7.c [code]
arm_fir_decimate_f32.c [code]
arm_fir_decimate_fast_q15.c [code]
arm_fir_decimate_fast_q31.c [code]
arm_fir_decimate_init_f32.c [code]
arm_fir_decimate_init_q15.c [code]
arm_fir_decimate_init_q31.c [code]
arm_fir_decimate_q15.c [code]
arm_fir_decimate_q31.c [code]
arm_fir_example_f32.c [code]
arm_fir_f32.c [code]
arm_fir_fast_q15.c [code]
arm_fir_fast_q31.c [code]
arm_fir_init_f32.c [code]
arm_fir_init_q15.c [code]
arm_fir_init_q31.c [code]
arm_fir_init_q7.c [code]
arm_fir_interpolate_f32.c [code]
arm_fir_interpolate_init_f32.c [code]
arm_fir_interpolate_init_q15.c [code]
arm_fir_interpolate_init_q31.c [code]
arm_fir_interpolate_q15.c [code]
arm_fir_interpolate_q31.c [code]
arm_fir_lattice_f32.c [code]
arm_fir_lattice_init_f32.c [code]
arm_fir_lattice_init_q15.c [code]
arm_fir_lattice_init_q31.c [code]
arm_fir_lattice_q15.c [code]
arm_fir_lattice_q31.c [code]
arm_fir_q15.c [code]
arm_fir_q31.c [code]
arm_fir_q7.c [code]
arm_fir_sparse_f32.c [code]
arm_fir_sparse_init_f32.c [code]
arm_fir_sparse_init_q15.c [code]
arm_fir_sparse_init_q31.c [code]
arm_fir_sparse_init_q7.c [code]
arm_fir_sparse_q15.c [code]
arm_fir_sparse_q31.c [code]
arm_fir_sparse_q7.c [code]
arm_float_to_q15.c [code]
arm_float_to_q31.c [code]
arm_float_to_q7.c [code]
arm_graphic_equalizer_example_q31.c [code]
arm_iir_lattice_f32.c [code]
arm_iir_lattice_init_f32.c [code]
arm_iir_lattice_init_q15.c [code]
arm_iir_lattice_init_q31.c [code]
arm_iir_lattice_q15.c [code]
arm_iir_lattice_q31.c [code]
arm_linear_interp_example_f32.c [code]
arm_lms_f32.c [code]
arm_lms_init_f32.c [code]
arm_lms_init_q15.c [code]
arm_lms_init_q31.c [code]
arm_lms_norm_f32.c [code]
arm_lms_norm_init_f32.c [code]
arm_lms_norm_init_q15.c [code]
arm_lms_norm_init_q31.c [code]
arm_lms_norm_q15.c [code]
arm_lms_norm_q31.c [code]
arm_lms_q15.c [code]
arm_lms_q31.c [code]
arm_mat_add_f32.c [code]
arm_mat_add_q15.c [code]
arm_mat_add_q31.c [code]
arm_mat_init_f32.c [code]
arm_mat_init_q15.c [code]
arm_mat_init_q31.c [code]
arm_mat_inverse_f32.c [code]
arm_mat_mult_f32.c [code]
arm_mat_mult_fast_q15.c [code]
arm_mat_mult_fast_q31.c [code]
arm_mat_mult_q15.c [code]
arm_mat_mult_q31.c [code]
arm_mat_scale_f32.c [code]
arm_mat_scale_q15.c [code]
arm_mat_scale_q31.c [code]
arm_mat_sub_f32.c [code]
arm_mat_sub_q15.c [code]
arm_mat_sub_q31.c [code]
arm_mat_trans_f32.c [code]
arm_mat_trans_q15.c [code]
arm_mat_trans_q31.c [code]
arm_math.h [code]
arm_matrix_example_f32.c [code]
arm_max_f32.c [code]
arm_max_q15.c [code]
arm_max_q31.c [code]
arm_max_q7.c [code]
arm_mean_f32.c [code]
arm_mean_q15.c [code]
arm_mean_q31.c [code]
arm_mean_q7.c [code]
arm_min_f32.c [code]
arm_min_q15.c [code]
arm_min_q31.c [code]
arm_min_q7.c [code]
arm_mult_f32.c [code]
arm_mult_q15.c [code]
arm_mult_q31.c [code]
arm_mult_q7.c [code]
arm_negate_f32.c [code]
arm_negate_q15.c [code]
arm_negate_q31.c [code]
arm_negate_q7.c [code]
arm_offset_f32.c [code]
arm_offset_q15.c [code]
arm_offset_q31.c [code]
arm_offset_q7.c [code]
arm_pid_init_f32.c [code]
arm_pid_init_q15.c [code]
arm_pid_init_q31.c [code]
arm_pid_reset_f32.c [code]
arm_pid_reset_q15.c [code]
arm_pid_reset_q31.c [code]
arm_power_f32.c [code]
arm_power_q15.c [code]
arm_power_q31.c [code]
arm_power_q7.c [code]
arm_q15_to_float.c [code]
arm_q15_to_q31.c [code]
arm_q15_to_q7.c [code]
arm_q31_to_float.c [code]
arm_q31_to_q15.c [code]
arm_q31_to_q7.c [code]
arm_q7_to_float.c [code]
arm_q7_to_q15.c [code]
arm_q7_to_q31.c [code]
arm_rfft_f32.c [code]
arm_rfft_init_f32.c [code]
arm_rfft_init_q15.c [code]
arm_rfft_init_q31.c [code]
arm_rfft_q15.c [code]
arm_rfft_q31.c [code]
arm_rms_f32.c [code]
arm_rms_q15.c [code]
arm_rms_q31.c [code]
arm_scale_f32.c [code]
arm_scale_q15.c [code]
arm_scale_q31.c [code]
arm_scale_q7.c [code]
arm_shift_q15.c [code]
arm_shift_q31.c [code]
arm_shift_q7.c [code]
arm_signal_converge_example_f32.c [code]
arm_sin_cos_example_f32.c [code]
arm_sin_cos_f32.c [code]
arm_sin_cos_q31.c [code]
arm_sin_f32.c [code]
arm_sin_q15.c [code]
arm_sin_q31.c [code]
arm_sqrt_q15.c [code]
arm_sqrt_q31.c [code]
arm_std_f32.c [code]
arm_std_q15.c [code]
arm_std_q31.c [code]
arm_sub_f32.c [code]
arm_sub_q15.c [code]
arm_sub_q31.c [code]
arm_sub_q7.c [code]
arm_var_f32.c [code]
arm_var_q15.c [code]
arm_var_q31.c [code]
arm_variance_example_f32.c [code]
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions.html new file mode 100644 index 000000000..444ce922b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions.html @@ -0,0 +1,112 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all struct and union fields with links to the structures/unions they belong to: + +

- a -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x62.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x62.html new file mode 100644 index 000000000..fa863aefe --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x62.html @@ -0,0 +1,113 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all struct and union fields with links to the structures/unions they belong to: + +

- b -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x65.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x65.html new file mode 100644 index 000000000..78f36c972 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x65.html @@ -0,0 +1,103 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all struct and union fields with links to the structures/unions they belong to: + +

- e -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x66.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x66.html new file mode 100644 index 000000000..771ccc2bf --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x66.html @@ -0,0 +1,113 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all struct and union fields with links to the structures/unions they belong to: + +

- f -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x69.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x69.html new file mode 100644 index 000000000..7bfd4e227 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x69.html @@ -0,0 +1,108 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all struct and union fields with links to the structures/unions they belong to: + +

- i -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x6b.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x6b.html new file mode 100644 index 000000000..a879002ca --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x6b.html @@ -0,0 +1,113 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all struct and union fields with links to the structures/unions they belong to: + +

- k -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x6c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x6c.html new file mode 100644 index 000000000..8fd5685b5 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x6c.html @@ -0,0 +1,103 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all struct and union fields with links to the structures/unions they belong to: + +

- l -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x6d.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x6d.html new file mode 100644 index 000000000..6ac524d08 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x6d.html @@ -0,0 +1,117 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x6e.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x6e.html new file mode 100644 index 000000000..71eeb51fb --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x6e.html @@ -0,0 +1,166 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all struct and union fields with links to the structures/unions they belong to: + +

- n -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x6f.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x6f.html new file mode 100644 index 000000000..465eda00b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x6f.html @@ -0,0 +1,101 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all struct and union fields with links to the structures/unions they belong to: + +

- o -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x70.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x70.html new file mode 100644 index 000000000..39ea4e456 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x70.html @@ -0,0 +1,244 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all struct and union fields with links to the structures/unions they belong to: + +

- p -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x72.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x72.html new file mode 100644 index 000000000..835d48f92 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x72.html @@ -0,0 +1,102 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all struct and union fields with links to the structures/unions they belong to: + +

- r -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x73.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x73.html new file mode 100644 index 000000000..3a2578b63 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x73.html @@ -0,0 +1,109 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all struct and union fields with links to the structures/unions they belong to: + +

- s -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x74.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x74.html new file mode 100644 index 000000000..63b45a2f6 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x74.html @@ -0,0 +1,108 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all struct and union fields with links to the structures/unions they belong to: + +

- t -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x78.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x78.html new file mode 100644 index 000000000..b4711ddb7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_0x78.html @@ -0,0 +1,109 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all struct and union fields with links to the structures/unions they belong to: + +

- x -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars.html new file mode 100644 index 000000000..1f706deb2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars.html @@ -0,0 +1,112 @@ + + + + +CMSIS DSP Software Library: Data Fields - Variables + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x62.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x62.html new file mode 100644 index 000000000..1920c093a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x62.html @@ -0,0 +1,113 @@ + + + + +CMSIS DSP Software Library: Data Fields - Variables + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x65.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x65.html new file mode 100644 index 000000000..3466fb41f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x65.html @@ -0,0 +1,103 @@ + + + + +CMSIS DSP Software Library: Data Fields - Variables + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x66.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x66.html new file mode 100644 index 000000000..1aaaae165 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x66.html @@ -0,0 +1,113 @@ + + + + +CMSIS DSP Software Library: Data Fields - Variables + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x69.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x69.html new file mode 100644 index 000000000..8381c7fa4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x69.html @@ -0,0 +1,108 @@ + + + + +CMSIS DSP Software Library: Data Fields - Variables + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x6b.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x6b.html new file mode 100644 index 000000000..642688ffe --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x6b.html @@ -0,0 +1,113 @@ + + + + +CMSIS DSP Software Library: Data Fields - Variables + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x6c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x6c.html new file mode 100644 index 000000000..f18a5ba9c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x6c.html @@ -0,0 +1,103 @@ + + + + +CMSIS DSP Software Library: Data Fields - Variables + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x6d.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x6d.html new file mode 100644 index 000000000..982a7b927 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x6d.html @@ -0,0 +1,117 @@ + + + + +CMSIS DSP Software Library: Data Fields - Variables + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x6e.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x6e.html new file mode 100644 index 000000000..1cd10d7a1 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x6e.html @@ -0,0 +1,166 @@ + + + + +CMSIS DSP Software Library: Data Fields - Variables + + + + + + + + + +
+  + +

- n -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x6f.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x6f.html new file mode 100644 index 000000000..3767aa545 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x6f.html @@ -0,0 +1,101 @@ + + + + +CMSIS DSP Software Library: Data Fields - Variables + + + + + + + + + +
+  + +

- o -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x70.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x70.html new file mode 100644 index 000000000..8bbdedfc2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x70.html @@ -0,0 +1,244 @@ + + + + +CMSIS DSP Software Library: Data Fields - Variables + + + + + + + + + +
+  + +

- p -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x72.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x72.html new file mode 100644 index 000000000..60060784c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x72.html @@ -0,0 +1,102 @@ + + + + +CMSIS DSP Software Library: Data Fields - Variables + + + + + + + + + +
+  + +

- r -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x73.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x73.html new file mode 100644 index 000000000..03e51074b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x73.html @@ -0,0 +1,109 @@ + + + + +CMSIS DSP Software Library: Data Fields - Variables + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x74.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x74.html new file mode 100644 index 000000000..5dad55a83 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x74.html @@ -0,0 +1,108 @@ + + + + +CMSIS DSP Software Library: Data Fields - Variables + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x78.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x78.html new file mode 100644 index 000000000..af607e78e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/functions_vars_0x78.html @@ -0,0 +1,109 @@ + + + + +CMSIS DSP Software Library: Data Fields - Variables + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals.html new file mode 100644 index 000000000..23930f8b7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals.html @@ -0,0 +1,119 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- _ -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x61.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x61.html new file mode 100644 index 000000000..829b604b6 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x61.html @@ -0,0 +1,1256 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- a -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x62.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x62.html new file mode 100644 index 000000000..a9c73cd9f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x62.html @@ -0,0 +1,147 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- b -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x63.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x63.html new file mode 100644 index 000000000..600897f5e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x63.html @@ -0,0 +1,169 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- c -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x64.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x64.html new file mode 100644 index 000000000..46454eae3 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x64.html @@ -0,0 +1,131 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- d -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x65.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x65.html new file mode 100644 index 000000000..1f1a5f493 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x65.html @@ -0,0 +1,116 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- e -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x66.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x66.html new file mode 100644 index 000000000..28f233c61 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x66.html @@ -0,0 +1,129 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- f -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x67.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x67.html new file mode 100644 index 000000000..45242dcf7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x67.html @@ -0,0 +1,116 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- g -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x69.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x69.html new file mode 100644 index 000000000..4184ea66a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x69.html @@ -0,0 +1,122 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- i -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x6c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x6c.html new file mode 100644 index 000000000..79fdf9a97 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x6c.html @@ -0,0 +1,122 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- l -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x6d.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x6d.html new file mode 100644 index 000000000..ec1e57eef --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x6d.html @@ -0,0 +1,147 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x6e.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x6e.html new file mode 100644 index 000000000..673ceb962 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x6e.html @@ -0,0 +1,140 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- n -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x6f.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x6f.html new file mode 100644 index 000000000..116eb0058 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x6f.html @@ -0,0 +1,116 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- o -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x70.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x70.html new file mode 100644 index 000000000..c19da1fd0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x70.html @@ -0,0 +1,113 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- p -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x71.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x71.html new file mode 100644 index 000000000..6116262de --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x71.html @@ -0,0 +1,122 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- q -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x72.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x72.html new file mode 100644 index 000000000..74974972d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x72.html @@ -0,0 +1,140 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- r -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x73.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x73.html new file mode 100644 index 000000000..3ef80eaab --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x73.html @@ -0,0 +1,170 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- s -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x74.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x74.html new file mode 100644 index 000000000..c5eda4bfb --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x74.html @@ -0,0 +1,194 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- t -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x75.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x75.html new file mode 100644 index 000000000..76f4e4212 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x75.html @@ -0,0 +1,113 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- u -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x76.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x76.html new file mode 100644 index 000000000..555974e04 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x76.html @@ -0,0 +1,113 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- v -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x77.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x77.html new file mode 100644 index 000000000..cc75df034 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x77.html @@ -0,0 +1,149 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- w -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x78.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x78.html new file mode 100644 index 000000000..cb6f7da2c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_0x78.html @@ -0,0 +1,119 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: + +

- x -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_defs.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_defs.html new file mode 100644 index 000000000..b4733ba03 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_defs.html @@ -0,0 +1,246 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+  + +

- _ -

+ + +

- b -

+ + +

- d -

+ + +

- i -

+ + +

- m -

+ + +

- n -

+ + +

- p -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- x -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_enum.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_enum.html new file mode 100644 index 000000000..b0e9d6dfa --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_enum.html @@ -0,0 +1,85 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_eval.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_eval.html new file mode 100644 index 000000000..b27676d51 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_eval.html @@ -0,0 +1,103 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_func.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_func.html new file mode 100644 index 000000000..654b085f9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_func.html @@ -0,0 +1,1185 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+  + +

- a -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_func_0x63.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_func_0x63.html new file mode 100644 index 000000000..39cf528f2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_func_0x63.html @@ -0,0 +1,105 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+  + +

- c -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_func_0x67.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_func_0x67.html new file mode 100644 index 000000000..31e908dea --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_func_0x67.html @@ -0,0 +1,96 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+  + +

- g -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_func_0x6d.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_func_0x6d.html new file mode 100644 index 000000000..144d0730f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_func_0x6d.html @@ -0,0 +1,109 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_func_0x74.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_func_0x74.html new file mode 100644 index 000000000..c1f4c5e32 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_func_0x74.html @@ -0,0 +1,99 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+  + +

- t -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_type.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_type.html new file mode 100644 index 000000000..fed241ab5 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_type.html @@ -0,0 +1,100 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_vars.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_vars.html new file mode 100644 index 000000000..4f8335dc9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/globals_vars.html @@ -0,0 +1,535 @@ + + + + +CMSIS DSP Software Library: Data Fields + + + + + + + + + +
+  + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+ + +

- w -

+ + +

- x -

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___basic_abs.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___basic_abs.html new file mode 100644 index 000000000..f23be47b2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___basic_abs.html @@ -0,0 +1,277 @@ + + + + +CMSIS DSP Software Library: Vector Absolute Value + + + + + + + + + +
+ +
+

Vector Absolute Value
+ +[Basic Math Functions] +

+
+
+ + + + + + +

+Functions

void arm_abs_f32 (float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
void arm_abs_q31 (q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_abs_q15 (q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_abs_q7 (q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
+

Detailed Description

+

Computes the absolute value of a vector on an element-by-element basis.

+
   
+     pDst[n] = abs(pSrcA[n]),   0 <= n < blockSize.   
+ 

The operation can be done in-place by setting the input and output pointers to the same buffer. There are separate functions for floating-point, Q7, Q15, and Q31 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_abs_f32 (float32_t pSrc,
float32_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Floating-point vector absolute value.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input buffer
[out]*pDstpoints to the output buffer
[in]blockSizenumber of samples in each vector
+
+
+
Returns:
none.
+
Examples:
arm_signal_converge_example_f32.c.
+
+

Definition at line 66 of file arm_abs_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_abs_q31 (q31_t pSrc,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Q31 vector absolute value.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input buffer
[out]*pDstpoints to the output buffer
[in]blockSizenumber of samples in each vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. The Q31 value -1 (0x80000000) will be saturated to the maximum allowable positive value 0x7FFFFFFF.
+ +

Definition at line 58 of file arm_abs_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_abs_q15 (q15_t pSrc,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Q15 vector absolute value.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input buffer
[out]*pDstpoints to the output buffer
[in]blockSizenumber of samples in each vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. The Q15 value -1 (0x8000) will be saturated to the maximum allowable positive value 0x7FFF.
+ +

Definition at line 57 of file arm_abs_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_abs_q7 (q7_t pSrc,
q7_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Q7 vector absolute value.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input buffer
[out]*pDstpoints to the output buffer
[in]blockSizenumber of samples in each vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. The Q7 value -1 (0x80) will be saturated to the maximum allowable positive value 0x7F.
+ +

Definition at line 57 of file arm_abs_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___basic_add.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___basic_add.html new file mode 100644 index 000000000..9d5f8d102 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___basic_add.html @@ -0,0 +1,305 @@ + + + + +CMSIS DSP Software Library: Vector Addition + + + + + + + + + +
+ +
+

Vector Addition
+ +[Basic Math Functions] +

+
+
+ + + + + + +

+Functions

void arm_add_f32 (float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
void arm_add_q31 (q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
void arm_add_q15 (q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
void arm_add_q7 (q7_t *pSrcA, q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
+

Detailed Description

+

Element-by-element addition of two vectors.

+
   
+     pDst[n] = pSrcA[n] + pSrcB[n],   0 <= n < blockSize.   
+ 

There are separate functions for floating-point, Q7, Q15, and Q31 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_add_f32 (float32_t pSrcA,
float32_t pSrcB,
float32_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Floating-point vector addition.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input vector
[in]*pSrcBpoints to the second input vector
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in each vector
+
+
+
Returns:
none.
+
Examples:
arm_dotproduct_example_f32.c, and arm_sin_cos_example_f32.c.
+
+

Definition at line 65 of file arm_add_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_add_q31 (q31_t pSrcA,
q31_t pSrcB,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Q31 vector addition.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input vector
[in]*pSrcBpoints to the second input vector
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in each vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated.
+ +

Definition at line 59 of file arm_add_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_add_q15 (q15_t pSrcA,
q15_t pSrcB,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Q15 vector addition.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input vector
[in]*pSrcBpoints to the second input vector
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in each vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.
+ +

Definition at line 58 of file arm_add_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_add_q7 (q7_t pSrcA,
q7_t pSrcB,
q7_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Q7 vector addition.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input vector
[in]*pSrcBpoints to the second input vector
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in each vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q7 range [0x80 0x7F] will be saturated.
+ +

Definition at line 58 of file arm_add_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___basic_mult.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___basic_mult.html new file mode 100644 index 000000000..f51ae33c1 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___basic_mult.html @@ -0,0 +1,305 @@ + + + + +CMSIS DSP Software Library: Vector Multiplication + + + + + + + + + +
+ +
+

Vector Multiplication
+ +[Basic Math Functions] +

+
+
+ + + + + + +

+Functions

void arm_mult_f32 (float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
void arm_mult_q31 (q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
void arm_mult_q15 (q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
void arm_mult_q7 (q7_t *pSrcA, q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
+

Detailed Description

+

Element-by-element multiplication of two vectors.

+
   
+     pDst[n] = pSrcA[n] * pSrcB[n],   0 <= n < blockSize.   
+ 

There are separate functions for floating-point, Q7, Q15, and Q31 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_mult_f32 (float32_t pSrcA,
float32_t pSrcB,
float32_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Floating-point vector multiplication.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input vector
[in]*pSrcBpoints to the second input vector
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in each vector
+
+
+
Returns:
none.
+
Examples:
arm_dotproduct_example_f32.c, arm_sin_cos_example_f32.c, and arm_variance_example_f32.c.
+
+

Definition at line 68 of file arm_mult_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_mult_q31 (q31_t pSrcA,
q31_t pSrcB,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Q31 vector multiplication.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input vector
[in]*pSrcBpoints to the second input vector
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in each vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated.
+ +

Definition at line 61 of file arm_mult_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_mult_q15 (q15_t pSrcA,
q15_t pSrcB,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Q15 vector multiplication.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input vector
[in]*pSrcBpoints to the second input vector
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in each vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.
+ +

Definition at line 62 of file arm_mult_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_mult_q7 (q7_t pSrcA,
q7_t pSrcB,
q7_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Q7 vector multiplication.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input vector
[in]*pSrcBpoints to the second input vector
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in each vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q7 range [0x80 0x7F] will be saturated.
+ +

Definition at line 64 of file arm_mult_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___basic_sub.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___basic_sub.html new file mode 100644 index 000000000..34d69aa7a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___basic_sub.html @@ -0,0 +1,305 @@ + + + + +CMSIS DSP Software Library: Vector Subtraction + + + + + + + + + +
+ +
+

Vector Subtraction
+ +[Basic Math Functions] +

+
+
+ + + + + + +

+Functions

void arm_sub_f32 (float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
void arm_sub_q31 (q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
void arm_sub_q15 (q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
void arm_sub_q7 (q7_t *pSrcA, q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
+

Detailed Description

+

Element-by-element subtraction of two vectors.

+
   
+     pDst[n] = pSrcA[n] - pSrcB[n],   0 <= n < blockSize.   
+ 

There are separate functions for floating-point, Q7, Q15, and Q31 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_sub_f32 (float32_t pSrcA,
float32_t pSrcB,
float32_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Floating-point vector subtraction.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input vector
[in]*pSrcBpoints to the second input vector
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in each vector
+
+
+
Returns:
none.
+
Examples:
arm_signal_converge_example_f32.c, and arm_variance_example_f32.c.
+
+

Definition at line 66 of file arm_sub_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_sub_q31 (q31_t pSrcA,
q31_t pSrcB,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Q31 vector subtraction.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input vector
[in]*pSrcBpoints to the second input vector
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in each vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated.
+ +

Definition at line 58 of file arm_sub_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_sub_q15 (q15_t pSrcA,
q15_t pSrcB,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Q15 vector subtraction.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input vector
[in]*pSrcBpoints to the second input vector
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in each vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.
+ +

Definition at line 58 of file arm_sub_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_sub_q7 (q7_t pSrcA,
q7_t pSrcB,
q7_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Q7 vector subtraction.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input vector
[in]*pSrcBpoints to the second input vector
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in each vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q7 range [0x80 0x7F] will be saturated.
+ +

Definition at line 58 of file arm_sub_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___bilinear_interpolate.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___bilinear_interpolate.html new file mode 100644 index 000000000..110dac1ce --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___bilinear_interpolate.html @@ -0,0 +1,288 @@ + + + + +CMSIS DSP Software Library: Bilinear Interpolation + + + + + + + + + +
+ +
+

Bilinear Interpolation
+ +[Interpolation Functions] +

+
+
+ + + + + + +

+Functions

static __INLINE float32_t arm_bilinear_interp_f32 (const arm_bilinear_interp_instance_f32 *S, float32_t X, float32_t Y)
static __INLINE q31_t arm_bilinear_interp_q31 (arm_bilinear_interp_instance_q31 *S, q31_t X, q31_t Y)
static __INLINE q15_t arm_bilinear_interp_q15 (arm_bilinear_interp_instance_q15 *S, q31_t X, q31_t Y)
static __INLINE q7_t arm_bilinear_interp_q7 (arm_bilinear_interp_instance_q7 *S, q31_t X, q31_t Y)
+

Detailed Description

+

Bilinear interpolation is an extension of linear interpolation applied to a two dimensional grid. The underlying function f(x, y) is sampled on a regular grid and the interpolation process determines values between the grid points. Bilinear interpolation is equivalent to two step linear interpolation, first in the x-dimension and then in the y-dimension. Bilinear interpolation is often used in image processing to rescale images. The CMSIS DSP library provides bilinear interpolation functions for Q7, Q15, Q31, and floating-point data types.

+

Algorithm

+
The instance structure used by the bilinear interpolation functions describes a two dimensional data table. For floating-point, the instance structure is defined as:
+   typedef struct
+   {
+     uint16_t numRows;
+     uint16_t numCols;
+     float32_t *pData;
+ } arm_bilinear_interp_instance_f32;
+ 
+
where numRows specifies the number of rows in the table; numCols specifies the number of columns in the table; and pData points to an array of size numRows*numCols values. The data table pTable is organized in row order and the supplied data values fall on integer indexes. That is, table element (x,y) is located at pTable[x + y*numCols] where x and y are integers.
+
Let (x, y) specify the desired interpolation point. Then define:
+     XF = floor(x)
+     YF = floor(y)
+ 
+
The interpolated output point is computed as:
+  f(x, y) = f(XF, YF) * (1-(x-XF)) * (1-(y-YF))
+           + f(XF+1, YF) * (x-XF)*(1-(y-YF))
+           + f(XF, YF+1) * (1-(x-XF))*(y-YF)
+           + f(XF+1, YF+1) * (x-XF)*(y-YF)
+ 
Note that the coordinates (x, y) contain integer and fractional components. The integer components specify which portion of the table to use while the fractional components control the interpolation processor.
+
if (x,y) are outside of the table boundary, Bilinear interpolation returns zero output.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE float32_t arm_bilinear_interp_f32 (const arm_bilinear_interp_instance_f32 S,
float32_t  X,
float32_t  Y 
) [static]
+
+
+ +

Floating-point bilinear interpolation.

+
Parameters:
+ + + + +
[in,out]*Spoints to an instance of the interpolation structure.
[in]Xinterpolation coordinate.
[in]Yinterpolation coordinate.
+
+
+
Returns:
out interpolated value.
+ +

Definition at line 6739 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE q31_t arm_bilinear_interp_q31 (arm_bilinear_interp_instance_q31 S,
q31_t  X,
q31_t  Y 
) [static]
+
+
+ +

Q31 bilinear interpolation.

+
Parameters:
+ + + + +
[in,out]*Spoints to an instance of the interpolation structure.
[in]Xinterpolation coordinate in 12.20 format.
[in]Yinterpolation coordinate in 12.20 format.
+
+
+
Returns:
out interpolated value.
+ +

Definition at line 6806 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE q15_t arm_bilinear_interp_q15 (arm_bilinear_interp_instance_q15 S,
q31_t  X,
q31_t  Y 
) [static]
+
+
+ +

Q15 bilinear interpolation.

+
Parameters:
+ + + + +
[in,out]*Spoints to an instance of the interpolation structure.
[in]Xinterpolation coordinate in 12.20 format.
[in]Yinterpolation coordinate in 12.20 format.
+
+
+
Returns:
out interpolated value.
+ +

Definition at line 6882 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE q7_t arm_bilinear_interp_q7 (arm_bilinear_interp_instance_q7 S,
q31_t  X,
q31_t  Y 
) [static]
+
+
+ +

Q7 bilinear interpolation.

+
Parameters:
+ + + + +
[in,out]*Spoints to an instance of the interpolation structure.
[in]Xinterpolation coordinate in 12.20 format.
[in]Yinterpolation coordinate in 12.20 format.
+
+
+
Returns:
out interpolated value.
+ +

Definition at line 6962 of file arm_math.h.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___biquad_cascade_d_f1.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___biquad_cascade_d_f1.html new file mode 100644 index 000000000..30166fa76 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___biquad_cascade_d_f1.html @@ -0,0 +1,605 @@ + + + + +CMSIS DSP Software Library: Biquad Cascade IIR Filters Using Direct Form I Structure + + + + + + + + + +
+ +
+

Biquad Cascade IIR Filters Using Direct Form I Structure
+ +[Filtering Functions] +

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

+Functions

void arm_biquad_cascade_df1_init_f32 (arm_biquad_casd_df1_inst_f32 *S, uint8_t numStages, float32_t *pCoeffs, float32_t *pState)
void arm_biquad_cascade_df1_f32 (const arm_biquad_casd_df1_inst_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
void arm_biquad_cascade_df1_init_q31 (arm_biquad_casd_df1_inst_q31 *S, uint8_t numStages, q31_t *pCoeffs, q31_t *pState, int8_t postShift)
void arm_biquad_cascade_df1_q31 (const arm_biquad_casd_df1_inst_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_biquad_cascade_df1_fast_q31 (const arm_biquad_casd_df1_inst_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_biquad_cascade_df1_init_q15 (arm_biquad_casd_df1_inst_q15 *S, uint8_t numStages, q15_t *pCoeffs, q15_t *pState, int8_t postShift)
void arm_biquad_cascade_df1_q15 (const arm_biquad_casd_df1_inst_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_biquad_cascade_df1_fast_q15 (const arm_biquad_casd_df1_inst_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
+

Detailed Description

+

This set of functions implements arbitrary order recursive (IIR) filters. The filters are implemented as a cascade of second order Biquad sections. The functions support Q15, Q31 and floating-point data types. Fast version of Q15 and Q31 also supported on CortexM4 and Cortex-M3.

+

The functions operate on blocks of input and output data and each call to the function processes blockSize samples through the filter. pSrc points to the array of input data and pDst points to the array of output data. Both arrays contain blockSize values.

+
Algorithm
Each Biquad stage implements a second order filter using the difference equation:
   
+     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]   
+ 
A Direct Form I algorithm is used with 5 coefficients and 4 state variables per stage.
+Biquad.gif +

Single Biquad filter stage

+ Coefficients b0, b1 and b2 multiply the input signal x[n] and are referred to as the feedforward coefficients. Coefficients a1 and a2 multiply the output signal y[n] and are referred to as the feedback coefficients. Pay careful attention to the sign of the feedback coefficients. Some design tools use the difference equation
   
+     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] - a1 * y[n-1] - a2 * y[n-2]   
+ 
In this case the feedback coefficients a1 and a2 must be negated when used with the CMSIS DSP Library.
+
Higher order filters are realized as a cascade of second order sections. numStages refers to the number of second order stages used. For example, an 8th order filter would be realized with numStages=4 second order stages.
+BiquadCascade.gif +

8th order filter using a cascade of Biquad stages

+ A 9th order filter would be realized with numStages=5 second order stages with the coefficients for one of the stages configured as a first order filter (b2=0 and a2=0).
+
The pState points to state variables array. Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. The state variables are arranged in the pState array as:
   
+     {x[n-1], x[n-2], y[n-1], y[n-2]}   
+ 
+
The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. The state array has a total length of 4*numStages values. The state variables are updated after each block of data is processed, the coefficients are untouched.
+
Instance Structure
The coefficients and state variables for a filter are stored together in an instance data structure. A separate instance structure must be defined for each filter. Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. There are separate instance structure declarations for each of the 3 supported data types.
+
Init Functions
There is also an associated initialization function for each data type. The initialization function performs following operations:
    +
  • Sets the values of the internal structure fields.
  • +
  • Zeros out the values in the state buffer.
  • +
+
+
Use of the initialization function is optional. However, if the initialization function is used, then the instance structure cannot be placed into a const data section. To place an instance structure into a const data section, the instance structure must be manually initialized. Set the values in the state buffer to zeros before static initialization. The code below statically initializes each of the 3 different data type filter instance structures
   
+     arm_biquad_casd_df1_inst_f32 S1 = {numStages, pState, pCoeffs};   
+     arm_biquad_casd_df1_inst_q15 S2 = {numStages, pState, pCoeffs, postShift};   
+     arm_biquad_casd_df1_inst_q31 S3 = {numStages, pState, pCoeffs, postShift};   
+ 
where numStages is the number of Biquad stages in the filter; pState is the address of the state buffer; pCoeffs is the address of the coefficient buffer; postShift shift to be applied.
+
Fixed-Point Behavior
Care must be taken when using the Q15 and Q31 versions of the Biquad Cascade filter functions. Following issues must be considered:
    +
  • Scaling of coefficients
  • +
  • Filter gain
  • +
  • Overflow and saturation
  • +
+
+
Scaling of coefficients: Filter coefficients are represented as fractional values and coefficients are restricted to lie in the range [-1 +1). The fixed-point functions have an additional scaling parameter postShift which allow the filter coefficients to exceed the range [+1 -1). At the output of the filter's accumulator is a shift register which shifts the result by postShift bits.
+BiquadPostshift.gif +

Fixed-point Biquad with shift by postShift bits after accumulator

+ This essentially scales the filter coefficients by 2^postShift. For example, to realize the coefficients
   
+    {1.5, -0.8, 1.2, 1.6, -0.9}   
+ 
set the pCoeffs array to:
   
+    {0.75, -0.4, 0.6, 0.8, -0.45}   
+ 
and set postShift=1
+
Filter gain: The frequency response of a Biquad filter is a function of its coefficients. It is possible for the gain through the filter to exceed 1.0 meaning that the filter increases the amplitude of certain frequencies. This means that an input signal with amplitude < 1.0 may result in an output > 1.0 and these are saturated or overflowed based on the implementation of the filter. To avoid this behavior the filter needs to be scaled down such that its peak gain < 1.0 or the input signal must be scaled down so that the combination of input and filter are never overflowed.
+
Overflow and saturation: For Q15 and Q31 versions, it is described separately as part of the function specific documentation below.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_biquad_cascade_df1_init_f32 (arm_biquad_casd_df1_inst_f32 S,
uint8_t  numStages,
float32_t pCoeffs,
float32_t pState 
)
+
+
+ +

Initialization function for the floating-point Biquad cascade filter.

+
Parameters:
+ + + + + +
[in,out]*Spoints to an instance of the floating-point Biquad cascade structure.
[in]numStagesnumber of 2nd order stages in the filter.
[in]*pCoeffspoints to the filter coefficients array.
[in]*pStatepoints to the state array.
+
+
+
Returns:
none
+

Coefficient and State Ordering:

+
The coefficients are stored in the array pCoeffs in the following order:
   
+     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}   
+ 
+
where b1x and a1x are the coefficients for the first stage, b2x and a2x are the coefficients for the second stage, and so on. The pCoeffs array contains a total of 5*numStages values.
+
The pState is a pointer to state array. Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. The state variables are arranged in the pState array as:
   
+     {x[n-1], x[n-2], y[n-1], y[n-2]}   
+ 
The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. The state array has a total length of 4*numStages values. The state variables are updated after each block of data is processed; the coefficients are untouched.
+ +

Definition at line 83 of file arm_biquad_cascade_df1_init_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_biquad_cascade_df1_f32 (const arm_biquad_casd_df1_inst_f32 S,
float32_t pSrc,
float32_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the floating-point Biquad cascade filter.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the floating-point Biquad cascade structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data.
[in]blockSizenumber of samples to process per call.
+
+
+
Returns:
none.
+ +

Definition at line 171 of file arm_biquad_cascade_df1_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_biquad_cascade_df1_init_q31 (arm_biquad_casd_df1_inst_q31 S,
uint8_t  numStages,
q31_t pCoeffs,
q31_t pState,
int8_t  postShift 
)
+
+
+ +

Initialization function for the Q31 Biquad cascade filter.

+
Parameters:
+ + + + + + +
[in,out]*Spoints to an instance of the Q31 Biquad cascade structure.
[in]numStagesnumber of 2nd order stages in the filter.
[in]*pCoeffspoints to the filter coefficients buffer.
[in]*pStatepoints to the state buffer.
[in]postShiftShift to be applied after the accumulator. Varies according to the coefficients format
+
+
+
Returns:
none
+

Coefficient and State Ordering:

+
The coefficients are stored in the array pCoeffs in the following order:
   
+     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}   
+ 
where b1x and a1x are the coefficients for the first stage, b2x and a2x are the coefficients for the second stage, and so on. The pCoeffs array contains a total of 5*numStages values.
+
The pState points to state variables array. Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. The state variables are arranged in the pState array as:
   
+     {x[n-1], x[n-2], y[n-1], y[n-2]}   
+ 
The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. The state array has a total length of 4*numStages values. The state variables are updated after each block of data is processed; the coefficients are untouched.
+
Examples:
arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 81 of file arm_biquad_cascade_df1_init_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_biquad_cascade_df1_q31 (const arm_biquad_casd_df1_inst_q31 S,
q31_t pSrc,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the Q31 Biquad cascade filter.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q31 Biquad cascade structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data.
[in]blockSizenumber of samples to process per call.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 64-bit accumulator. The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. Thus, if the accumulator result overflows it wraps around rather than clip. In order to avoid overflows completely the input signal must be scaled down by 2 bits and lie in the range [-0.25 +0.25). After all 5 multiply-accumulates are performed, the 2.62 accumulator is shifted by postShift bits and the result truncated to 1.31 format by discarding the low 32 bits.
+
Refer to the function arm_biquad_cascade_df1_fast_q31() for a faster but less precise implementation of this filter for Cortex-M3 and Cortex-M4.
+
Examples:
arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 69 of file arm_biquad_cascade_df1_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_biquad_cascade_df1_fast_q31 (const arm_biquad_casd_df1_inst_q31 S,
q31_t pSrc,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Fast but less precise processing function for the Q31 Biquad cascade filter for Cortex-M3 and Cortex-M4.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q31 Biquad cascade structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data.
[in]blockSizenumber of samples to process per call.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
This function is optimized for speed at the expense of fixed-point precision and overflow protection. The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. These intermediate results are added to a 2.30 accumulator. Finally, the accumulator is saturated and converted to a 1.31 result. The fast version has the same overflow behavior as the standard version and provides less precision since it discards the low 32 bits of each multiplication result. In order to avoid overflows completely the input signal must be scaled down by two bits and lie in the range [-0.25 +0.25). Use the intialization function arm_biquad_cascade_df1_init_q31() to initialize filter structure.
+
Refer to the function arm_biquad_cascade_df1_q31() for a slower implementation of this function which uses 64-bit accumulation to provide higher precision. Both the slow and the fast versions use the same instance structure. Use the function arm_biquad_cascade_df1_init_q31() to initialize the filter structure.
+ +

Definition at line 70 of file arm_biquad_cascade_df1_fast_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_biquad_cascade_df1_init_q15 (arm_biquad_casd_df1_inst_q15 S,
uint8_t  numStages,
q15_t pCoeffs,
q15_t pState,
int8_t  postShift 
)
+
+
+ +

Initialization function for the Q15 Biquad cascade filter.

+
Parameters:
+ + + + + + +
[in,out]*Spoints to an instance of the Q15 Biquad cascade structure.
[in]numStagesnumber of 2nd order stages in the filter.
[in]*pCoeffspoints to the filter coefficients.
[in]*pStatepoints to the state buffer.
[in]postShiftShift to be applied to the accumulator result. Varies according to the coefficients format
+
+
+
Returns:
none
+

Coefficient and State Ordering:

+
The coefficients are stored in the array pCoeffs in the following order:
   
+     {b10, 0, b11, b12, a11, a12, b20, 0, b21, b22, a21, a22, ...}   
+ 
where b1x and a1x are the coefficients for the first stage, b2x and a2x are the coefficients for the second stage, and so on. The pCoeffs array contains a total of 6*numStages values. The zero coefficient between b1 and b2 facilities use of 16-bit SIMD instructions on the Cortex-M4.
+
The state variables are stored in the array pState. Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. The state variables are arranged in the pState array as:
   
+     {x[n-1], x[n-2], y[n-1], y[n-2]}   
+ 
The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. The state array has a total length of 4*numStages values. The state variables are updated after each block of data is processed; the coefficients are untouched.
+ +

Definition at line 81 of file arm_biquad_cascade_df1_init_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_biquad_cascade_df1_q15 (const arm_biquad_casd_df1_inst_q15 S,
q15_t pSrc,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the Q15 Biquad cascade filter.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q15 Biquad cascade structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the location where the output result is written.
[in]blockSizenumber of samples to process per call.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 64-bit internal accumulator. Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. The accumulator is then shifted by postShift bits to truncate the result to 1.15 format by discarding the low 16 bits. Finally, the result is saturated to 1.15 format.
+
Refer to the function arm_biquad_cascade_df1_fast_q15() for a faster but less precise implementation of this filter for Cortex-M3 and Cortex-M4.
+ +

Definition at line 70 of file arm_biquad_cascade_df1_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_biquad_cascade_df1_fast_q15 (const arm_biquad_casd_df1_inst_q15 S,
q15_t pSrc,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-M4.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q15 Biquad cascade structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data.
[in]blockSizenumber of samples to process per call.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
This fast version uses a 32-bit accumulator with 2.30 format. The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit. Thus, if the accumulator result overflows it wraps around and distorts the result. In order to avoid overflows completely the input signal must be scaled down by two bits and lie in the range [-0.25 +0.25). The 2.30 accumulator is then shifted by postShift bits and the result truncated to 1.15 format by discarding the low 16 bits.
+
Refer to the function arm_biquad_cascade_df1_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion. Both the slow and the fast versions use the same instance structure. Use the function arm_biquad_cascade_df1_init_q15() to initialize the filter structure.
+ +

Definition at line 69 of file arm_biquad_cascade_df1_fast_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___biquad_cascade_d_f1__32x64.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___biquad_cascade_d_f1__32x64.html new file mode 100644 index 000000000..6586fcd9a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___biquad_cascade_d_f1__32x64.html @@ -0,0 +1,243 @@ + + + + +CMSIS DSP Software Library: High Precision Q31 Biquad Cascade Filter + + + + + + + + + +
+ +
+

High Precision Q31 Biquad Cascade Filter
+ +[Filtering Functions] +

+
+
+ + + + +

+Functions

void arm_biquad_cas_df1_32x64_init_q31 (arm_biquad_cas_df1_32x64_ins_q31 *S, uint8_t numStages, q31_t *pCoeffs, q63_t *pState, uint8_t postShift)
void arm_biquad_cas_df1_32x64_q31 (const arm_biquad_cas_df1_32x64_ins_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
+

Detailed Description

+

This function implements a high precision Biquad cascade filter which operates on Q31 data values. The filter coefficients are in 1.31 format and the state variables are in 1.63 format. The double precision state variables reduce quantization noise in the filter and provide a cleaner output. These filters are particularly useful when implementing filters in which the singularities are close to the unit circle. This is common for low pass or high pass filters with very low cutoff frequencies.

+

The function operates on blocks of input and output data and each call to the function processes blockSize samples through the filter. pSrc and pDst points to input and output arrays containing blockSize Q31 values.

+
Algorithm
Each Biquad stage implements a second order filter using the difference equation:
   
+     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]   
+ 
A Direct Form I algorithm is used with 5 coefficients and 4 state variables per stage.
+Biquad.gif +

Single Biquad filter stage

+ Coefficients b0, b1, and b2 multiply the input signal x[n] and are referred to as the feedforward coefficients. Coefficients a1 and a2 multiply the output signal y[n] and are referred to as the feedback coefficients. Pay careful attention to the sign of the feedback coefficients. Some design tools use the difference equation
   
+     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] - a1 * y[n-1] - a2 * y[n-2]   
+ 
In this case the feedback coefficients a1 and a2 must be negated when used with the CMSIS DSP Library.
+
Higher order filters are realized as a cascade of second order sections. numStages refers to the number of second order stages used. For example, an 8th order filter would be realized with numStages=4 second order stages.
+BiquadCascade.gif +

8th order filter using a cascade of Biquad stages

+ A 9th order filter would be realized with numStages=5 second order stages with the coefficients for one of the stages configured as a first order filter (b2=0 and a2=0).
+
The pState points to state variables array . Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2] and each state variable in 1.63 format to improve precision. The state variables are arranged in the array as:
   
+     {x[n-1], x[n-2], y[n-1], y[n-2]}   
+ 
+
The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. The state array has a total length of 4*numStages values of data in 1.63 format. The state variables are updated after each block of data is processed; the coefficients are untouched.
+
Instance Structure
The coefficients and state variables for a filter are stored together in an instance data structure. A separate instance structure must be defined for each filter. Coefficient arrays may be shared among several instances while state variable arrays cannot be shared.
+
Init Function
There is also an associated initialization function which performs the following operations:
    +
  • Sets the values of the internal structure fields.
  • +
  • Zeros out the values in the state buffer.
  • +
+
+
Use of the initialization function is optional. However, if the initialization function is used, then the instance structure cannot be placed into a const data section. To place an instance structure into a const data section, the instance structure must be manually initialized. Set the values in the state buffer to zeros before static initialization. For example, to statically initialize the filter instance structure use
   
+     arm_biquad_cas_df1_32x64_ins_q31 S1 = {numStages, pState, pCoeffs, postShift};   
+ 
where numStages is the number of Biquad stages in the filter; pState is the address of the state buffer; pCoeffs is the address of the coefficient buffer; postShift shift to be applied which is described in detail below.
+
Fixed-Point Behavior
Care must be taken while using Biquad Cascade 32x64 filter function. Following issues must be considered:
    +
  • Scaling of coefficients
  • +
  • Filter gain
  • +
  • Overflow and saturation
  • +
+
+
Filter coefficients are represented as fractional values and restricted to lie in the range [-1 +1). The processing function has an additional scaling parameter postShift which allows the filter coefficients to exceed the range [+1 -1). At the output of the filter's accumulator is a shift register which shifts the result by postShift bits.
+BiquadPostshift.gif +

Fixed-point Biquad with shift by postShift bits after accumulator

+ This essentially scales the filter coefficients by 2^postShift. For example, to realize the coefficients
   
+    {1.5, -0.8, 1.2, 1.6, -0.9}   
+ 
set the Coefficient array to:
   
+    {0.75, -0.4, 0.6, 0.8, -0.45}   
+ 
and set postShift=1
+
The second thing to keep in mind is the gain through the filter. The frequency response of a Biquad filter is a function of its coefficients. It is possible for the gain through the filter to exceed 1.0 meaning that the filter increases the amplitude of certain frequencies. This means that an input signal with amplitude < 1.0 may result in an output > 1.0 and these are saturated or overflowed based on the implementation of the filter. To avoid this behavior the filter needs to be scaled down such that its peak gain < 1.0 or the input signal must be scaled down so that the combination of input and filter are never overflowed.
+
The third item to consider is the overflow and saturation behavior of the fixed-point Q31 version. This is described in the function specific documentation below.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_biquad_cas_df1_32x64_init_q31 (arm_biquad_cas_df1_32x64_ins_q31 S,
uint8_t  numStages,
q31_t pCoeffs,
q63_t pState,
uint8_t  postShift 
)
+
+
+
Parameters:
+ + + + + + +
[in,out]*Spoints to an instance of the high precision Q31 Biquad cascade filter structure.
[in]numStagesnumber of 2nd order stages in the filter.
[in]*pCoeffspoints to the filter coefficients.
[in]*pStatepoints to the state buffer.
[in]postShiftShift to be applied after the accumulator. Varies according to the coefficients format.
+
+
+
Returns:
none
+

Coefficient and State Ordering:

+
The coefficients are stored in the array pCoeffs in the following order:
   
+     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}   
+ 
where b1x and a1x are the coefficients for the first stage, b2x and a2x are the coefficients for the second stage, and so on. The pCoeffs array contains a total of 5*numStages values.
+
The pState points to state variables array and size of each state variable is 1.63 format. Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. The state variables are arranged in the state array as:
   
+     {x[n-1], x[n-2], y[n-1], y[n-2]}   
+ 
The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. The state array has a total length of 4*numStages values. The state variables are updated after each block of data is processed; the coefficients are untouched.
+
Examples:
arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 77 of file arm_biquad_cascade_df1_32x64_init_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_biquad_cas_df1_32x64_q31 (const arm_biquad_cas_df1_32x64_ins_q31 S,
q31_t pSrc,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the high precision Q31 Biquad cascade filter.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data.
[in]blockSizenumber of samples to process.
+
+
+
Returns:
none.
+
The function is implemented using an internal 64-bit accumulator. The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. Thus, if the accumulator result overflows it wraps around rather than clip. In order to avoid overflows completely the input signal must be scaled down by 2 bits and lie in the range [-0.25 +0.25). After all 5 multiply-accumulates are performed, the 2.62 accumulator is shifted by postShift bits and the result truncated to 1.31 format by discarding the low 32 bits.
+
Two related functions are provided in the CMSIS DSP library. arm_biquad_cascade_df1_q31() implements a Biquad cascade with 32-bit coefficients and state variables with a Q63 accumulator. arm_biquad_cascade_df1_fast_q31() implements a Biquad cascade with 32-bit coefficients and state variables with a Q31 accumulator.
+
Examples:
arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 176 of file arm_biquad_cascade_df1_32x64_q31.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___biquad_cascade_d_f2_t.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___biquad_cascade_d_f2_t.html new file mode 100644 index 000000000..f95285ba9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___biquad_cascade_d_f2_t.html @@ -0,0 +1,221 @@ + + + + +CMSIS DSP Software Library: Biquad Cascade IIR Filters Using a Direct Form II Transposed Structure + + + + + + + + + +
+ +
+

Biquad Cascade IIR Filters Using a Direct Form II Transposed Structure
+ +[Filtering Functions] +

+
+
+ + + + +

+Functions

void arm_biquad_cascade_df2T_init_f32 (arm_biquad_cascade_df2T_instance_f32 *S, uint8_t numStages, float32_t *pCoeffs, float32_t *pState)
void arm_biquad_cascade_df2T_f32 (const arm_biquad_cascade_df2T_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
+

Detailed Description

+

This set of functions implements arbitrary order recursive (IIR) filters using a transposed direct form II structure. The filters are implemented as a cascade of second order Biquad sections. These functions provide a slight memory savings as compared to the direct form I Biquad filter functions. Only floating-point data is supported.

+

This function operate on blocks of input and output data and each call to the function processes blockSize samples through the filter. pSrc points to the array of input data and pDst points to the array of output data. Both arrays contain blockSize values.

+
Algorithm
Each Biquad stage implements a second order filter using the difference equation:
   
+    y[n] = b0 * x[n] + d1   
+    d1 = b1 * x[n] + a1 * y[n] + d2   
+    d2 = b2 * x[n] + a2 * y[n]   
+ 
where d1 and d2 represent the two state values.
+
A Biquad filter using a transposed Direct Form II structure is shown below.
+BiquadDF2Transposed.gif +

Single transposed Direct Form II Biquad

+ Coefficients b0, b1, and b2 multiply the input signal x[n] and are referred to as the feedforward coefficients. Coefficients a1 and a2 multiply the output signal y[n] and are referred to as the feedback coefficients. Pay careful attention to the sign of the feedback coefficients. Some design tools flip the sign of the feedback coefficients:
   
+    y[n] = b0 * x[n] + d1;   
+    d1 = b1 * x[n] - a1 * y[n] + d2;   
+    d2 = b2 * x[n] - a2 * y[n];   
+ 
In this case the feedback coefficients a1 and a2 must be negated when used with the CMSIS DSP Library.
+
Higher order filters are realized as a cascade of second order sections. numStages refers to the number of second order stages used. For example, an 8th order filter would be realized with numStages=4 second order stages. A 9th order filter would be realized with numStages=5 second order stages with the coefficients for one of the stages configured as a first order filter (b2=0 and a2=0).
+
pState points to the state variable array. Each Biquad stage has 2 state variables d1 and d2. The state variables are arranged in the pState array as:
   
+     {d11, d12, d21, d22, ...}   
+ 
where d1x refers to the state variables for the first Biquad and d2x refers to the state variables for the second Biquad. The state array has a total length of 2*numStages values. The state variables are updated after each block of data is processed; the coefficients are untouched.
+
The CMSIS library contains Biquad filters in both Direct Form I and transposed Direct Form II. The advantage of the Direct Form I structure is that it is numerically more robust for fixed-point data types. That is why the Direct Form I structure supports Q15 and Q31 data types. The transposed Direct Form II structure, on the other hand, requires a wide dynamic range for the state variables d1 and d2. Because of this, the CMSIS library only has a floating-point version of the Direct Form II Biquad. The advantage of the Direct Form II Biquad is that it requires half the number of state variables, 2 rather than 4, per Biquad stage.
+
Instance Structure
The coefficients and state variables for a filter are stored together in an instance data structure. A separate instance structure must be defined for each filter. Coefficient arrays may be shared among several instances while state variable arrays cannot be shared.
+
Init Functions
There is also an associated initialization function. The initialization function performs following operations:
    +
  • Sets the values of the internal structure fields.
  • +
  • Zeros out the values in the state buffer.
  • +
+
+
Use of the initialization function is optional. However, if the initialization function is used, then the instance structure cannot be placed into a const data section. To place an instance structure into a const data section, the instance structure must be manually initialized. Set the values in the state buffer to zeros before static initialization. For example, to statically initialize the instance structure use
   
+     arm_biquad_cascade_df2T_instance_f32 S1 = {numStages, pState, pCoeffs};   
+ 
where numStages is the number of Biquad stages in the filter; pState is the address of the state buffer. pCoeffs is the address of the coefficient buffer;
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_biquad_cascade_df2T_init_f32 (arm_biquad_cascade_df2T_instance_f32 S,
uint8_t  numStages,
float32_t pCoeffs,
float32_t pState 
)
+
+
+ +

Initialization function for the floating-point transposed direct form II Biquad cascade filter.

+
Parameters:
+ + + + + +
[in,out]*Spoints to an instance of the filter data structure.
[in]numStagesnumber of 2nd order stages in the filter.
[in]*pCoeffspoints to the filter coefficients.
[in]*pStatepoints to the state buffer.
+
+
+
Returns:
none
+

Coefficient and State Ordering:

+
The coefficients are stored in the array pCoeffs in the following order:
   
+     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}   
+ 
+
where b1x and a1x are the coefficients for the first stage, b2x and a2x are the coefficients for the second stage, and so on. The pCoeffs array contains a total of 5*numStages values.
+
The pState is a pointer to state array. Each Biquad stage has 2 state variables d1, and d2. The 2 state variables for stage 1 are first, then the 2 state variables for stage 2, and so on. The state array has a total length of 2*numStages values. The state variables are updated after each block of data is processed; the coefficients are untouched.
+ +

Definition at line 73 of file arm_biquad_cascade_df2T_init_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_biquad_cascade_df2T_f32 (const arm_biquad_cascade_df2T_instance_f32 S,
float32_t pSrc,
float32_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the floating-point transposed direct form II Biquad cascade filter.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the filter data structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data
[in]blockSizenumber of samples to process.
+
+
+
Returns:
none.
+ +

Definition at line 143 of file arm_biquad_cascade_df2T_f32.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___c_f_f_t___c_i_f_f_t.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___c_f_f_t___c_i_f_f_t.html new file mode 100644 index 000000000..eb144c9f7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___c_f_f_t___c_i_f_f_t.html @@ -0,0 +1,570 @@ + + + + +CMSIS DSP Software Library: Complex FFT Functions + + + + + + + + + +
+ +
+

Complex FFT Functions
+ +[Transform Functions] +

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

+Functions

arm_status arm_cfft_radix4_init_f32 (arm_cfft_radix4_instance_f32 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
void arm_cfft_radix4_f32 (const arm_cfft_radix4_instance_f32 *S, float32_t *pSrc)
arm_status arm_cfft_radix4_init_q31 (arm_cfft_radix4_instance_q31 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
void arm_cfft_radix4_q31 (const arm_cfft_radix4_instance_q31 *S, q31_t *pSrc)
arm_status arm_cfft_radix4_init_q15 (arm_cfft_radix4_instance_q15 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
void arm_cfft_radix4_q15 (const arm_cfft_radix4_instance_q15 *S, q15_t *pSrc)

+Variables

static const float32_t twiddleCoef [2048]
static const q31_t twiddleCoefQ31 [2048]
static const q15_t twiddleCoefQ15 [2048]
const uint16_t armBitRevTable [256]
+

Detailed Description

+
Complex Fast Fourier Transform(CFFT) and Complex Inverse Fast Fourier Transform(CIFFT) is an efficient algorithm to compute Discrete Fourier Transform(DFT) and Inverse Discrete Fourier Transform(IDFT). Computational complexity of CFFT reduces drastically when compared to DFT.
+
This set of functions implements CFFT/CIFFT for Q15, Q31, and floating-point data types. The functions operates on in-place buffer which uses same buffer for input and output. Complex input is stored in input buffer in an interleaved fashion.
+
The functions operate on blocks of input and output data and each call to the function processes 2*fftLen samples through the transform. pSrc points to In-place arrays containing 2*fftLen values.
+
The pSrc points to the array of in-place buffer of size 2*fftLen and inputs and outputs are stored in an interleaved fashion as shown below.
 {real[0], imag[0], real[1], imag[1],..} 
+
Lengths supported by the transform:
+
Internally, the function utilize a radix-4 decimation in frequency(DIF) algorithm and the size of the FFT supported are of the lengths [16, 64, 256, 1024].
+
Algorithm:
+

Complex Fast Fourier Transform:

+
Input real and imaginary data:
   
+ x(n) = xa + j * ya   
+ x(n+N/4 ) = xb + j * yb   
+ x(n+N/2 ) = xc + j * yc   
+ x(n+3N 4) = xd + j * yd   
+ 
where N is length of FFT
+
Output real and imaginary data:
   
+ X(4r) = xa'+ j * ya'   
+ X(4r+1) = xb'+ j * yb'   
+ X(4r+2) = xc'+ j * yc'   
+ X(4r+3) = xd'+ j * yd'   
+ 
+
Twiddle factors for radix-4 FFT:
   
+ Wn = co1 + j * (- si1)   
+ W2n = co2 + j * (- si2)   
+ W3n = co3 + j * (- si3)   
+ 
+
+CFFT.gif +

Radix-4 Decimation-in Frequency Complex Fast Fourier Transform

+
+
Output from Radix-4 CFFT Results in Digit reversal order. Interchange middle two branches of every butterfly results in Bit reversed output.
+
Butterfly CFFT equations:
   
+ xa' = xa + xb + xc + xd   
+ ya' = ya + yb + yc + yd   
+ xc' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1)   
+ yc' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1)   
+ xb' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2)   
+ yb' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2)   
+ xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3)   
+ yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3)   
+ 
+

Complex Inverse Fast Fourier Transform:

+
CIFFT uses same twiddle factor table as CFFT with modifications in the design equation as shown below.
+
Modified Butterfly CIFFT equations:
   
+ xa' = xa + xb + xc + xd   
+ ya' = ya + yb + yc + yd   
+ xc' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1)   
+ yc' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1)   
+ xb' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2)   
+ yb' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2)   
+ xd' = (xa+yb-xc-yd)* co3 - (ya-xb-yc+xd)* (si3)   
+ yd' = (ya-xb-yc+xd)* co3 + (xa+yb-xc-yd)* (si3)   
+ 
+
Instance Structure
A separate instance structure must be defined for each Instance but the twiddle factors and bit reversal tables can be reused. There are separate instance structure declarations for each of the 3 supported data types.
+
Initialization Functions
There is also an associated initialization function for each data type. The initialization function performs the following operations:
    +
  • Sets the values of the internal structure fields.
  • +
  • Initializes twiddle factor table and bit reversal table pointers
  • +
+
+
Use of the initialization function is optional. However, if the initialization function is used, then the instance structure cannot be placed into a const data section. To place an instance structure into a const data section, the instance structure must be manually initialized. Manually initialize the instance structure as follows:
   
+arm_cfft_radix4_instance_f32 S = {fftLen, ifftFlag, bitReverseFlag, pTwiddle, pBitRevTable, twidCoefModifier, bitRevFactor, onebyfftLen};   
+arm_cfft_radix4_instance_q31 S = {fftLen, ifftFlag, bitReverseFlag, pTwiddle, pBitRevTable, twidCoefModifier, bitRevFactor};   
+arm_cfft_radix4_instance_q15 S = {fftLen, ifftFlag, bitReverseFlag, pTwiddle, pBitRevTable, twidCoefModifier, bitRevFactor};   
+ 
+
where fftLen length of CFFT/CIFFT; ifftFlag Flag for selection of CFFT or CIFFT(Set ifftFlag to calculate CIFFT otherwise calculates CFFT); bitReverseFlag Flag for selection of output order(Set bitReverseFlag to output in normal order otherwise output in bit reversed order); pTwiddlepoints to array of twiddle coefficients; pBitRevTable points to the array of bit reversal table. twidCoefModifier modifier for twiddle factor table which supports all FFT lengths with same table; pBitRevTable modifier for bit reversal table which supports all FFT lengths with same table. onebyfftLen value of 1/fftLen to calculate CIFFT;
+
Fixed-Point Behavior
Care must be taken when using the fixed-point versions of the CFFT/CIFFT function. Refer to the function specific documentation below for usage guidelines.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_cfft_radix4_init_f32 (arm_cfft_radix4_instance_f32 S,
uint16_t  fftLen,
uint8_t  ifftFlag,
uint8_t  bitReverseFlag 
)
+
+
+ +

Initialization function for the floating-point CFFT/CIFFT.

+
Parameters:
+ + + + + +
[in,out]*Spoints to an instance of the floating-point CFFT/CIFFT structure.
[in]fftLenlength of the FFT.
[in]ifftFlagflag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.
[in]bitReverseFlagflag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.
+
+
+
Returns:
The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value.
+
Description:
+
The parameter ifftFlag controls whether a forward or inverse transform is computed. Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated
+
The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.
+
The parameter fftLen Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024.
+
This Function also initializes Twiddle factor table pointer and Bit reversal table pointer.
+
Examples:
arm_convolution_example_f32.c, and arm_fft_bin_example_f32.c.
+
+

Definition at line 1118 of file arm_cfft_radix4_init_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void arm_cfft_radix4_f32 (const arm_cfft_radix4_instance_f32 S,
float32_t pSrc 
)
+
+
+ +

Processing function for the floating-point CFFT/CIFFT.

+
Parameters:
+ + + +
[in]*Spoints to an instance of the floating-point CFFT/CIFFT structure.
[in,out]*pSrcpoints to the complex data buffer of size 2*fftLen. Processing occurs in-place.
+
+
+
Returns:
none.
+
Examples:
arm_convolution_example_f32.c, and arm_fft_bin_example_f32.c.
+
+

Definition at line 177 of file arm_cfft_radix4_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_cfft_radix4_init_q31 (arm_cfft_radix4_instance_q31 S,
uint16_t  fftLen,
uint8_t  ifftFlag,
uint8_t  bitReverseFlag 
)
+
+
+ +

Initialization function for the Q31 CFFT/CIFFT.

+
Parameters:
+ + + + + +
[in,out]*Spoints to an instance of the Q31 CFFT/CIFFT structure.
[in]fftLenlength of the FFT.
[in]ifftFlagflag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.
[in]bitReverseFlagflag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.
+
+
+
Returns:
The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value.
+
Description:
+
The parameter ifftFlag controls whether a forward or inverse transform is computed. Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated
+
The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.
+
The parameter fftLen Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024.
+
This Function also initializes Twiddle factor table pointer and Bit reversal table pointer.
+ +

Definition at line 608 of file arm_cfft_radix4_init_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void arm_cfft_radix4_q31 (const arm_cfft_radix4_instance_q31 S,
q31_t pSrc 
)
+
+
+ +

Processing function for the Q31 CFFT/CIFFT.

+
Parameters:
+ + + +
[in]*Spoints to an instance of the Q31 CFFT/CIFFT structure.
[in,out]*pSrcpoints to the complex data buffer of size 2*fftLen. Processing occurs in-place.
+
+
+
Returns:
none.
+
Input and output formats:
+
Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process. Hence the output format is different for different FFT sizes. The input and output formats for different FFT sizes and number of bits to upscale are mentioned in the tables below for CFFT and CIFFT:
+
+CFFTQ31.gif +

Input and Output Formats for Q31 CFFT

+
+CIFFTQ31.gif +

Input and Output Formats for Q31 CIFFT

+
+ +

Definition at line 66 of file arm_cfft_radix4_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_cfft_radix4_init_q15 (arm_cfft_radix4_instance_q15 S,
uint16_t  fftLen,
uint8_t  ifftFlag,
uint8_t  bitReverseFlag 
)
+
+
+ +

Initialization function for the Q15 CFFT/CIFFT.

+
Parameters:
+ + + + + +
[in,out]*Spoints to an instance of the Q15 CFFT/CIFFT structure.
[in]fftLenlength of the FFT.
[in]ifftFlagflag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.
[in]bitReverseFlagflag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.
+
+
+
Returns:
The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value.
+
Description:
+
The parameter ifftFlag controls whether a forward or inverse transform is computed. Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated
+
The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.
+
The parameter fftLen Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024.
+
This Function also initializes Twiddle factor table pointer and Bit reversal table pointer.
+ +

Definition at line 353 of file arm_cfft_radix4_init_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void arm_cfft_radix4_q15 (const arm_cfft_radix4_instance_q15 S,
q15_t pSrc 
)
+
+
+ +

Processing function for the Q15 CFFT/CIFFT.

+
Parameters:
+ + + +
[in]*Spoints to an instance of the Q15 CFFT/CIFFT structure.
[in,out]*pSrcpoints to the complex data buffer. Processing occurs in-place.
+
+
+
Returns:
none.
+
Input and output formats:
+
Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process. Hence the output format is different for different FFT sizes. The input and output formats for different FFT sizes and number of bits to upscale are mentioned in the tables below for CFFT and CIFFT:
+
+CFFTQ15.gif +

Input and Output Formats for Q15 CFFT

+
+CIFFTQ15.gif +

Input and Output Formats for Q15 CIFFT

+
+ +

Definition at line 66 of file arm_cfft_radix4_q15.c.

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
const float32_t twiddleCoef[2048] [static]
+
+
+
Example code for Floating-point Twiddle factors Generation:
+
for(i = 0; i< N; i++)   
+ {   
+	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);   
+	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);   
+ } 
+
where N = 1024 and PI = 3.14159265358979
+
Cos and Sin values are in interleaved fashion
+ +

Definition at line 70 of file arm_cfft_radix4_init_f32.c.

+ +
+
+ +
+
+ + + + +
const q31_t twiddleCoefQ31[2048] [static]
+
+
+
Example code for Q31 Twiddle factors Generation::
+
for(i = 0; i< N; i++)   
+ {   
+    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);   
+    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);   
+ } 
+
where N = 1024 and PI = 3.14159265358979
+
Cos and Sin values are interleaved fashion
+
Convert Floating point to Q31(Fixed point 1.31): round(twiddleCoefQ31(i) * pow(2, 31))
+ +

Definition at line 71 of file arm_cfft_radix4_init_q31.c.

+ +
+
+ +
+
+ + + + +
const q15_t twiddleCoefQ15[2048] [static]
+
+
+
Example code for Q15 Twiddle factors Generation::
+
for(i = 0; i< N; i++)   
+ {   
+	twiddleCoefQ15[2*i]= cos(i * 2*PI/(float)N);   
+	twiddleCoefQ15[2*i+1]= sin(i * 2*PI/(float)N);   
+ } 
+
where N = 1024 and PI = 3.14159265358979
+
Cos and Sin values are interleaved fashion
+
Convert Floating point to Q15(Fixed point 1.15): round(twiddleCoefQ15(i) * pow(2, 15))
+ +

Definition at line 72 of file arm_cfft_radix4_init_q15.c.

+ +
+
+ +
+
+ + + + +
const uint16_t armBitRevTable[256]
+
+
+
Pseudo code for Generation of Bit reversal Table is
+
for(l=1;l <= N/4;l++)   
+ {   
+   for(i=0;i<logN2;i++)   
+   {    
+     a[i]=l&(1<<i);   
+   }   
+   for(j=0; j<logN2; j++)   
+   {   
+     if (a[j]!=0)   
+     y[l]+=(1<<((logN2-1)-j));   
+   }   
+   y[l] = y[l] >> 1;   
+  } 
+
where N = 1024 logN2 = 10
+
N is the maximum FFT Size supported
+ +

Definition at line 68 of file arm_common_tables.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___class_marks.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___class_marks.html new file mode 100644 index 000000000..f9cc050a7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___class_marks.html @@ -0,0 +1,98 @@ + + + + +CMSIS DSP Software Library: Class Marks Example + + + + + + + + + +
+
+

Class Marks Example
+ +[Examples] +

+
+
+ +
+
Description:
+
Demonstrates the use the Maximum, Minimum, Mean, Standard Deviation, Variance and Matrix functions to calculate statistical values of marks obtained in a class.
+
Note:
This example also demonstrates the usage of static initialization.
+
Variables Description:
+
    +
  • testMarks_f32 points to the marks scored by 20 students in 4 subjects
  • +
  • max_marks Maximum of all marks
  • +
  • min_marks Minimum of all marks
  • +
  • mean Mean of all marks
  • +
  • var Variance of the marks
  • +
  • std Standard deviation of the marks
  • +
  • numStudents Total number of students in the class
  • +
+
+
CMSIS DSP Software Library Functions Used:
+
+
+

Refer arm_class_marks_example_f32.c

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___cmplx_by_cmplx_mult.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___cmplx_by_cmplx_mult.html new file mode 100644 index 000000000..6b7fb8918 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___cmplx_by_cmplx_mult.html @@ -0,0 +1,253 @@ + + + + +CMSIS DSP Software Library: Complex-by-Complex Multiplication + + + + + + + + + +
+ +
+

Complex-by-Complex Multiplication
+ +[Complex Math Functions] +

+
+
+ + + + + +

+Functions

void arm_cmplx_mult_cmplx_f32 (float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t numSamples)
void arm_cmplx_mult_cmplx_q31 (q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t numSamples)
void arm_cmplx_mult_cmplx_q15 (q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t numSamples)
+

Detailed Description

+

Multiplies a complex vector by another complex vector and generates a complex result. The data in the complex arrays is stored in an interleaved fashion (real, imag, real, imag, ...). The parameter numSamples represents the number of complex samples processed. The complex arrays have a total of 2*numSamples real values.

+

The underlying algorithm is used:

+
   
+ for(n=0; n<numSamples; n++) {   
+     pDst[(2*n)+0] = pSrcA[(2*n)+0] * pSrcB[(2*n)+0] - pSrcA[(2*n)+1] * pSrcB[(2*n)+1];   
+     pDst[(2*n)+1] = pSrcA[(2*n)+0] * pSrcB[(2*n)+1] + pSrcA[(2*n)+1] * pSrcB[(2*n)+0];   
+ }   
+ 

There are separate functions for floating-point, Q15, and Q31 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_cmplx_mult_cmplx_f32 (float32_t pSrcA,
float32_t pSrcB,
float32_t pDst,
uint32_t  numSamples 
)
+
+
+ +

Floating-point complex-by-complex multiplication.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input vector
[in]*pSrcBpoints to the second input vector
[out]*pDstpoints to the output vector
[in]numSamplesnumber of complex samples in each vector
+
+
+
Returns:
none.
+
Examples:
arm_convolution_example_f32.c.
+
+

Definition at line 73 of file arm_cmplx_mult_cmplx_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_cmplx_mult_cmplx_q31 (q31_t pSrcA,
q31_t pSrcB,
q31_t pDst,
uint32_t  numSamples 
)
+
+
+ +

Q31 complex-by-complex multiplication.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input vector
[in]*pSrcBpoints to the second input vector
[out]*pDstpoints to the output vector
[in]numSamplesnumber of complex samples in each vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function implements 1.31 by 1.31 multiplications and finally output is converted into 3.29 format. Input down scaling is not required.
+ +

Definition at line 56 of file arm_cmplx_mult_cmplx_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_cmplx_mult_cmplx_q15 (q15_t pSrcA,
q15_t pSrcB,
q15_t pDst,
uint32_t  numSamples 
)
+
+
+ +

Q15 complex-by-complex multiplication.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input vector
[in]*pSrcBpoints to the second input vector
[out]*pDstpoints to the output vector
[in]numSamplesnumber of complex samples in each vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function implements 1.15 by 1.15 multiplications and finally output is converted into 3.13 format.
+ +

Definition at line 54 of file arm_cmplx_mult_cmplx_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___cmplx_by_real_mult.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___cmplx_by_real_mult.html new file mode 100644 index 000000000..c2c76f684 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___cmplx_by_real_mult.html @@ -0,0 +1,252 @@ + + + + +CMSIS DSP Software Library: Complex-by-Real Multiplication + + + + + + + + + +
+ +
+

Complex-by-Real Multiplication
+ +[Complex Math Functions] +

+
+
+ + + + + +

+Functions

void arm_cmplx_mult_real_f32 (float32_t *pSrcCmplx, float32_t *pSrcReal, float32_t *pCmplxDst, uint32_t numSamples)
void arm_cmplx_mult_real_q31 (q31_t *pSrcCmplx, q31_t *pSrcReal, q31_t *pCmplxDst, uint32_t numSamples)
void arm_cmplx_mult_real_q15 (q15_t *pSrcCmplx, q15_t *pSrcReal, q15_t *pCmplxDst, uint32_t numSamples)
+

Detailed Description

+

Multiplies a complex vector by a real vector and generates a complex result. The data in the complex arrays is stored in an interleaved fashion (real, imag, real, imag, ...). The parameter numSamples represents the number of complex samples processed. The complex arrays have a total of 2*numSamples real values while the real array has a total of numSamples real values.

+

The underlying algorithm is used:

+
   
+ for(n=0; n<numSamples; n++) {   
+     pCmplxDst[(2*n)+0] = pSrcCmplx[(2*n)+0] * pSrcReal[n];   
+     pCmplxDst[(2*n)+1] = pSrcCmplx[(2*n)+1] * pSrcReal[n];   
+ }   
+ 

There are separate functions for floating-point, Q15, and Q31 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_cmplx_mult_real_f32 (float32_t pSrcCmplx,
float32_t pSrcReal,
float32_t pCmplxDst,
uint32_t  numSamples 
)
+
+
+ +

Floating-point complex-by-real multiplication.

+
Parameters:
+ + + + + +
[in]*pSrcCmplxpoints to the complex input vector
[in]*pSrcRealpoints to the real input vector
[out]*pCmplxDstpoints to the complex output vector
[in]numSamplesnumber of samples in each vector
+
+
+
Returns:
none.
+ +

Definition at line 74 of file arm_cmplx_mult_real_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_cmplx_mult_real_q31 (q31_t pSrcCmplx,
q31_t pSrcReal,
q31_t pCmplxDst,
uint32_t  numSamples 
)
+
+
+ +

Q31 complex-by-real multiplication.

+
Parameters:
+ + + + + +
[in]*pSrcCmplxpoints to the complex input vector
[in]*pSrcRealpoints to the real input vector
[out]*pCmplxDstpoints to the complex output vector
[in]numSamplesnumber of samples in each vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated.
+ +

Definition at line 56 of file arm_cmplx_mult_real_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_cmplx_mult_real_q15 (q15_t pSrcCmplx,
q15_t pSrcReal,
q15_t pCmplxDst,
uint32_t  numSamples 
)
+
+
+ +

Q15 complex-by-real multiplication.

+
Parameters:
+ + + + + +
[in]*pSrcCmplxpoints to the complex input vector
[in]*pSrcRealpoints to the real input vector
[out]*pCmplxDstpoints to the complex output vector
[in]numSamplesnumber of samples in each vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.
+ +

Definition at line 56 of file arm_cmplx_mult_real_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___conv.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___conv.html new file mode 100644 index 000000000..3a1f922ba --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___conv.html @@ -0,0 +1,475 @@ + + + + +CMSIS DSP Software Library: Convolution + + + + + + + + + +
+ +
+

Convolution
+ +[Filtering Functions] +

+
+
+ + + + + + + + +

+Functions

void arm_conv_f32 (float32_t *pSrcA, uint32_t srcALen, float32_t *pSrcB, uint32_t srcBLen, float32_t *pDst)
void arm_conv_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
void arm_conv_fast_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
void arm_conv_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
void arm_conv_fast_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
void arm_conv_q7 (q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst)
+

Detailed Description

+

Convolution is a mathematical operation that operates on two finite length vectors to generate a finite length output vector. Convolution is similar to correlation and is frequently used in filtering and data analysis. The CMSIS DSP library contains functions for convolving Q7, Q15, Q31, and floating-point data types. The library also provides fast versions of the Q15 and Q31 functions on Cortex-M4 and Cortex-M3.

+
Algorithm
Let a[n] and b[n] be sequences of length srcALen and srcBLen samples respectively. Then the convolution
+
   
+                   c[n] = a[n] * b[n]   
+ 
is defined as
+ConvolutionEquation.gif +
+
+
Note that c[n] is of length srcALen + srcBLen - 1 and is defined over the interval n=0, 1, 2, ..., srcALen + srcBLen - 2. pSrcA points to the first input vector of length srcALen and pSrcB points to the second input vector of length srcBLen. The output result is written to pDst and the calling function must allocate srcALen+srcBLen-1 words for the result.
+
Conceptually, when two signals a[n] and b[n] are convolved, the signal b[n] slides over a[n]. For each offset n, the overlapping portions of a[n] and b[n] are multiplied and summed together.
+
Note that convolution is a commutative operation:
+
   
+                   a[n] * b[n] = b[n] * a[n].   
+ 
This means that switching the A and B arguments to the convolution functions has no effect.
+

Fixed-Point Behavior

+
Convolution requires summing up a large number of intermediate products. As such, the Q7, Q15, and Q31 functions run a risk of overflow and saturation. Refer to the function specific documentation below for further details of the particular algorithm used.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_conv_f32 (float32_t pSrcA,
uint32_t  srcALen,
float32_t pSrcB,
uint32_t  srcBLen,
float32_t pDst 
)
+
+
+ +

Convolution of floating-point sequences.

+
Parameters:
+ + + + + + +
[in]*pSrcApoints to the first input sequence.
[in]srcALenlength of the first input sequence.
[in]*pSrcBpoints to the second input sequence.
[in]srcBLenlength of the second input sequence.
[out]*pDstpoints to the location where the output result is written. Length srcALen+srcBLen-1.
+
+
+
Returns:
none.
+ +

Definition at line 103 of file arm_conv_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_conv_q31 (q31_t pSrcA,
uint32_t  srcALen,
q31_t pSrcB,
uint32_t  srcBLen,
q31_t pDst 
)
+
+
+ +

Convolution of Q31 sequences.

+
Parameters:
+ + + + + + +
[in]*pSrcApoints to the first input sequence.
[in]srcALenlength of the first input sequence.
[in]*pSrcBpoints to the second input sequence.
[in]srcBLenlength of the second input sequence.
[out]*pDstpoints to the location where the output result is written. Length srcALen+srcBLen-1.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 64-bit accumulator. The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. There is no saturation on intermediate additions. Thus, if the accumulator overflows it wraps around and distorts the result. The input signals should be scaled down to avoid intermediate overflows. Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows, as maximum of min(srcALen, srcBLen) number of additions are carried internally. The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result.
+
See arm_conv_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4.
+ +

Definition at line 71 of file arm_conv_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_conv_fast_q31 (q31_t pSrcA,
uint32_t  srcALen,
q31_t pSrcB,
uint32_t  srcBLen,
q31_t pDst 
)
+
+
+ +

Convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4.

+
Parameters:
+ + + + + + +
[in]*pSrcApoints to the first input sequence.
[in]srcALenlength of the first input sequence.
[in]*pSrcBpoints to the second input sequence.
[in]srcBLenlength of the second input sequence.
[out]*pDstpoints to the location where the output result is written. Length srcALen+srcBLen-1.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
This function is optimized for speed at the expense of fixed-point precision and overflow protection. The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. These intermediate results are accumulated in a 32-bit register in 2.30 format. Finally, the accumulator is saturated and converted to a 1.31 result.
+
The fast version has the same overflow behavior as the standard version but provides less precision since it discards the low 32 bits of each multiplication result. In order to avoid overflows completely the input signals must be scaled down. Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows, as maximum of min(srcALen, srcBLen) number of additions are carried internally.
+
See arm_conv_q31() for a slower implementation of this function which uses 64-bit accumulation to provide higher precision.
+ +

Definition at line 68 of file arm_conv_fast_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_conv_q15 (q15_t pSrcA,
uint32_t  srcALen,
q15_t pSrcB,
uint32_t  srcBLen,
q15_t pDst 
)
+
+
+ +

Convolution of Q15 sequences.

+
Parameters:
+ + + + + + +
[in]*pSrcApoints to the first input sequence.
[in]srcALenlength of the first input sequence.
[in]*pSrcBpoints to the second input sequence.
[in]srcBLenlength of the second input sequence.
[out]*pDstpoints to the location where the output result is written. Length srcALen+srcBLen-1.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 64-bit internal accumulator. Both inputs are in 1.15 format and multiplications yield a 2.30 result. The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. This approach provides 33 guard bits and there is no risk of overflow. The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format.
+
Refer to arm_conv_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4.
+ +

Definition at line 68 of file arm_conv_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_conv_fast_q15 (q15_t pSrcA,
uint32_t  srcALen,
q15_t pSrcB,
uint32_t  srcBLen,
q15_t pDst 
)
+
+
+ +

Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.

+
Parameters:
+ + + + + + +
[in]*pSrcApoints to the first input sequence.
[in]srcALenlength of the first input sequence.
[in]*pSrcBpoints to the second input sequence.
[in]srcBLenlength of the second input sequence.
[out]*pDstpoints to the location where the output result is written. Length srcALen+srcBLen-1.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
This fast version uses a 32-bit accumulator with 2.30 format. The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit. There is no saturation on intermediate additions. Thus, if the accumulator overflows it wraps around and distorts the result. The input signals should be scaled down to avoid intermediate overflows. Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows, as maximum of min(srcALen, srcBLen) number of additions are carried internally. The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result.
+
See arm_conv_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion.
+ +

Definition at line 66 of file arm_conv_fast_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_conv_q7 (q7_t pSrcA,
uint32_t  srcALen,
q7_t pSrcB,
uint32_t  srcBLen,
q7_t pDst 
)
+
+
+ +

Convolution of Q7 sequences.

+
Parameters:
+ + + + + + +
[in]*pSrcApoints to the first input sequence.
[in]srcALenlength of the first input sequence.
[in]*pSrcBpoints to the second input sequence.
[in]srcBLenlength of the second input sequence.
[out]*pDstpoints to the location where the output result is written. Length srcALen+srcBLen-1.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 32-bit internal accumulator. Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result. The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. This approach provides 17 guard bits and there is no risk of overflow as long as max(srcALen, srcBLen)<131072. The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and then saturated to 1.7 format.
+ +

Definition at line 65 of file arm_conv_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___convolution_example.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___convolution_example.html new file mode 100644 index 000000000..5e00fd1c0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___convolution_example.html @@ -0,0 +1,105 @@ + + + + +CMSIS DSP Software Library: Convolution Example + + + + + + + + + +
+
+

Convolution Example
+ +[Examples] +

+
+
+ +
+
Description:
+
Demonstrates the convolution theorem with the use of the Complex FFT, Complex-by-Complex Multiplication, and Support Functions.
+
Algorithm:
+
The convolution theorem states that convolution in the time domain corresponds to multiplication in the frequency domain. Therefore, the Fourier transform of the convoution of two signals is equal to the product of their individual Fourier transforms. The Fourier transform of a signal can be evaluated efficiently using the Fast Fourier Transform (FFT).
+
Two input signals, a[n] and b[n], with lengths n1 and n2 respectively, are zero padded so that their lengths become N, which is greater than or equal to (n1+n2-1) and is a power of 4 as FFT implementation is radix-4. The convolution of a[n] and b[n] is obtained by taking the FFT of the input signals, multiplying the Fourier transforms of the two signals, and taking the inverse FFT of the multiplied result.
+
This is denoted by the following equations:
 A[k] = FFT(a[n],N)
+ B[k] = FFT(b[n],N)
+ conv(a[n], b[n]) = IFFT(A[k] * B[k], N)
where A[k] and B[k] are the N-point FFTs of the signals a[n] and b[n] respectively. The length of the convolved signal is (n1+n2-1).
+
Block Diagram:
+
+Convolution.gif +
+
+
Variables Description:
+
    +
  • testInputA_f32 points to the first input sequence
  • +
  • srcALen length of the first input sequence
  • +
  • testInputB_f32 points to the second input sequence
  • +
  • srcBLen length of the second input sequence
  • +
  • outLen length of convolution output sequence, (srcALen + srcBLen - 1)
  • +
  • AxB points to the output array where the product of individual FFTs of inputs is stored.
  • +
+
+
CMSIS DSP Software Library Functions Used:
+
+
+

Refer arm_convolution_example_f32.c

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___corr.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___corr.html new file mode 100644 index 000000000..017f5b4e0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___corr.html @@ -0,0 +1,474 @@ + + + + +CMSIS DSP Software Library: Correlation + + + + + + + + + +
+ +
+

Correlation
+ +[Filtering Functions] +

+
+
+ + + + + + + + +

+Functions

void arm_correlate_f32 (float32_t *pSrcA, uint32_t srcALen, float32_t *pSrcB, uint32_t srcBLen, float32_t *pDst)
void arm_correlate_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
void arm_correlate_fast_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
void arm_correlate_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
void arm_correlate_fast_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
void arm_correlate_q7 (q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst)
+

Detailed Description

+

Correlation is a mathematical operation that is similar to convolution. As with convolution, correlation uses two signals to produce a third signal. The underlying algorithms in correlation and convolution are identical except that one of the inputs is flipped in convolution. Correlation is commonly used to measure the similarity between two signals. It has applications in pattern recognition, cryptanalysis, and searching. The CMSIS library provides correlation functions for Q7, Q15, Q31 and floating-point data types. Fast versions of the Q15 and Q31 functions are also provided.

+
Algorithm
Let a[n] and b[n] be sequences of length srcALen and srcBLen samples respectively. The convolution of the two signals is denoted by
   
+                   c[n] = a[n] * b[n]   
+ 
In correlation, one of the signals is flipped in time
   
+                   c[n] = a[n] * b[-n]   
+ 
+
and this is mathematically defined as
+CorrelateEquation.gif +
+
+
The pSrcA points to the first input vector of length srcALen and pSrcB points to the second input vector of length srcBLen. The result c[n] is of length 2 * max(srcALen, srcBLen) - 1 and is defined over the interval n=0, 1, 2, ..., (2 * max(srcALen, srcBLen) - 2). The output result is written to pDst and the calling function must allocate 2 * max(srcALen, srcBLen) - 1 words for the result.
+

Note

+
The pDst should be initialized to all zeros before being used.
+

Fixed-Point Behavior

+
Correlation requires summing up a large number of intermediate products. As such, the Q7, Q15, and Q31 functions run a risk of overflow and saturation. Refer to the function specific documentation below for further details of the particular algorithm used.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_correlate_f32 (float32_t pSrcA,
uint32_t  srcALen,
float32_t pSrcB,
uint32_t  srcBLen,
float32_t pDst 
)
+
+
+ +

Correlation of floating-point sequences.

+
Parameters:
+ + + + + + +
[in]*pSrcApoints to the first input sequence.
[in]srcALenlength of the first input sequence.
[in]*pSrcBpoints to the second input sequence.
[in]srcBLenlength of the second input sequence.
[out]*pDstpoints to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1.
+
+
+
Returns:
none.
+ +

Definition at line 95 of file arm_correlate_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_correlate_q31 (q31_t pSrcA,
uint32_t  srcALen,
q31_t pSrcB,
uint32_t  srcBLen,
q31_t pDst 
)
+
+
+ +

Correlation of Q31 sequences.

+
Parameters:
+ + + + + + +
[in]*pSrcApoints to the first input sequence.
[in]srcALenlength of the first input sequence.
[in]*pSrcBpoints to the second input sequence.
[in]srcBLenlength of the second input sequence.
[out]*pDstpoints to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 64-bit accumulator. The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. There is no saturation on intermediate additions. Thus, if the accumulator overflows it wraps around and distorts the result. The input signals should be scaled down to avoid intermediate overflows. Scale down one of the inputs by 1/min(srcALen, srcBLen)to avoid overflows since a maximum of min(srcALen, srcBLen) number of additions is carried internally. The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result.
+
See arm_correlate_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4.
+ +

Definition at line 71 of file arm_correlate_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_correlate_fast_q31 (q31_t pSrcA,
uint32_t  srcALen,
q31_t pSrcB,
uint32_t  srcBLen,
q31_t pDst 
)
+
+
+ +

Correlation of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4.

+
Parameters:
+ + + + + + +
[in]*pSrcApoints to the first input sequence.
[in]srcALenlength of the first input sequence.
[in]*pSrcBpoints to the second input sequence.
[in]srcBLenlength of the second input sequence.
[out]*pDstpoints to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
This function is optimized for speed at the expense of fixed-point precision and overflow protection. The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. These intermediate results are accumulated in a 32-bit register in 2.30 format. Finally, the accumulator is saturated and converted to a 1.31 result.
+
The fast version has the same overflow behavior as the standard version but provides less precision since it discards the low 32 bits of each multiplication result. In order to avoid overflows completely the input signals must be scaled down. The input signals should be scaled down to avoid intermediate overflows. Scale down one of the inputs by 1/min(srcALen, srcBLen)to avoid overflows since a maximum of min(srcALen, srcBLen) number of additions is carried internally.
+
See arm_correlate_q31() for a slower implementation of this function which uses 64-bit accumulation to provide higher precision.
+ +

Definition at line 70 of file arm_correlate_fast_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_correlate_q15 (q15_t pSrcA,
uint32_t  srcALen,
q15_t pSrcB,
uint32_t  srcBLen,
q15_t pDst 
)
+
+
+ +

Correlation of Q15 sequences.

+
Parameters:
+ + + + + + +
[in]*pSrcApoints to the first input sequence.
[in]srcALenlength of the first input sequence.
[in]*pSrcBpoints to the second input sequence.
[in]srcBLenlength of the second input sequence.
[out]*pDstpoints to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 64-bit internal accumulator. Both inputs are in 1.15 format and multiplications yield a 2.30 result. The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. This approach provides 33 guard bits and there is no risk of overflow. The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format.
+
Refer to arm_correlate_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4.
+ +

Definition at line 68 of file arm_correlate_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_correlate_fast_q15 (q15_t pSrcA,
uint32_t  srcALen,
q15_t pSrcB,
uint32_t  srcBLen,
q15_t pDst 
)
+
+
+ +

Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.

+
Parameters:
+ + + + + + +
[in]*pSrcApoints to the first input sequence.
[in]srcALenlength of the first input sequence.
[in]*pSrcBpoints to the second input sequence.
[in]srcBLenlength of the second input sequence.
[out]*pDstpoints to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
This fast version uses a 32-bit accumulator with 2.30 format. The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit. There is no saturation on intermediate additions. Thus, if the accumulator overflows it wraps around and distorts the result. The input signals should be scaled down to avoid intermediate overflows. Scale down one of the inputs by 1/min(srcALen, srcBLen) to avoid overflow since a maximum of min(srcALen, srcBLen) number of additions is carried internally. The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result.
+
See arm_correlate_q15() for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion.
+ +

Definition at line 66 of file arm_correlate_fast_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_correlate_q7 (q7_t pSrcA,
uint32_t  srcALen,
q7_t pSrcB,
uint32_t  srcBLen,
q7_t pDst 
)
+
+
+ +

Correlation of Q7 sequences.

+
Parameters:
+ + + + + + +
[in]*pSrcApoints to the first input sequence.
[in]srcALenlength of the first input sequence.
[in]*pSrcBpoints to the second input sequence.
[in]srcBLenlength of the second input sequence.
[out]*pDstpoints to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 32-bit internal accumulator. Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result. The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. This approach provides 17 guard bits and there is no risk of overflow as long as max(srcALen, srcBLen)<131072. The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and saturated to 1.7 format.
+ +

Definition at line 65 of file arm_correlate_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___d_c_t4___i_d_c_t4.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___d_c_t4___i_d_c_t4.html new file mode 100644 index 000000000..8a777ed0d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___d_c_t4___i_d_c_t4.html @@ -0,0 +1,839 @@ + + + + +CMSIS DSP Software Library: DCT Type IV Functions + + + + + + + + + +
+ +
+

DCT Type IV Functions
+ +[Transform Functions] +

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

+Functions

arm_status arm_dct4_init_f32 (arm_dct4_instance_f32 *S, arm_rfft_instance_f32 *S_RFFT, arm_cfft_radix4_instance_f32 *S_CFFT, uint16_t N, uint16_t Nby2, float32_t normalize)
void arm_dct4_f32 (const arm_dct4_instance_f32 *S, float32_t *pState, float32_t *pInlineBuffer)
arm_status arm_dct4_init_q31 (arm_dct4_instance_q31 *S, arm_rfft_instance_q31 *S_RFFT, arm_cfft_radix4_instance_q31 *S_CFFT, uint16_t N, uint16_t Nby2, q31_t normalize)
void arm_dct4_q31 (const arm_dct4_instance_q31 *S, q31_t *pState, q31_t *pInlineBuffer)
arm_status arm_dct4_init_q15 (arm_dct4_instance_q15 *S, arm_rfft_instance_q15 *S_RFFT, arm_cfft_radix4_instance_q15 *S_CFFT, uint16_t N, uint16_t Nby2, q15_t normalize)
void arm_dct4_q15 (const arm_dct4_instance_q15 *S, q15_t *pState, q15_t *pInlineBuffer)

+Variables

static const float32_t Weights_128 [256]
static const float32_t Weights_512 [1024]
static const float32_t Weights_2048 [4096]
static const float32_t cos_factors_128 [128]
static const float32_t cos_factors_512 [512]
static const float32_t cos_factors_2048 [2048]
static const q31_t WeightsQ31_128 [256]
static const q31_t WeightsQ31_512 [1024]
static const q31_t WeightsQ31_2048 [4096]
static const q31_t cos_factorsQ31_128 [128]
static const q31_t cos_factorsQ31_512 [512]
static const q31_t cos_factorsQ31_2048 [2048]
static const q15_t WeightsQ15_128 [256]
static const q15_t WeightsQ15_512 [1024]
static const q15_t WeightsQ15_2048 [4096]
static const q15_t cos_factorsQ15_128 [128]
static const q15_t cos_factorsQ15_512 [512]
static const q15_t cos_factorsQ15_2048 [2048]
+

Detailed Description

+

Representation of signals by minimum number of values is important for storage and transmission. The possibility of large discontinuity between the beginning and end of a period of a signal in DFT can be avoided by extending the signal so that it is even-symmetric. Discrete Cosine Transform (DCT) is constructed such that its energy is heavily concentrated in the lower part of the spectrum and is very widely used in signal and image coding applications. The family of DCTs (DCT type- 1,2,3,4) is the outcome of different combinations of homogeneous boundary conditions. DCT has an excellent energy-packing capability, hence has many applications and in data compression in particular.

+

DCT is essentially the Discrete Fourier Transform(DFT) of an even-extended real signal. Reordering of the input data makes the computation of DCT just a problem of computing the DFT of a real signal with a few additional operations. This approach provides regular, simple, and very efficient DCT algorithms for practical hardware and software implementations.

+

DCT type-II can be implemented using Fast fourier transform (FFT) internally, as the transform is applied on real values, Real FFT can be used. DCT4 is implemented using DCT2 as their implementations are similar except with some added pre-processing and post-processing. DCT2 implementation can be described in the following steps:

+
    +
  • Re-ordering input
  • +
  • Calculating Real FFT
  • +
  • Multiplication of weights and Real FFT output and getting real part from the product.
  • +
+

This process is explained by the block diagram below:

+
+DCT4.gif +

Discrete Cosine Transform - type-IV

+
Algorithm:
The N-point type-IV DCT is defined as a real, linear transformation by the formula:
+DCT4Equation.gif +
+ where k = 0,1,2,.....N-1
+
Its inverse is defined as follows:
+IDCT4Equation.gif +
+ where n = 0,1,2,.....N-1
+
The DCT4 matrices become involutory (i.e. they are self-inverse) by multiplying with an overall scale factor of sqrt(2/N). The symmetry of the transform matrix indicates that the fast algorithms for the forward and inverse transform computation are identical. Note that the implementation of Inverse DCT4 and DCT4 is same, hence same process function can be used for both.
+
Lengths supported by the transform:
As DCT4 internally uses Real FFT, it supports all the lengths supported by arm_rfft_f32(). The library provides separate functions for Q15, Q31, and floating-point data types.
+
Instance Structure
The instances for Real FFT and FFT, cosine values table and twiddle factor table are stored in an instance data structure. A separate instance structure must be defined for each transform. There are separate instance structure declarations for each of the 3 supported data types.
+
Initialization Functions
There is also an associated initialization function for each data type. The initialization function performs the following operations:
    +
  • Sets the values of the internal structure fields.
  • +
  • Initializes Real FFT as its process function is used internally in DCT4, by calling arm_rfft_init_f32().
  • +
+
+
Use of the initialization function is optional. However, if the initialization function is used, then the instance structure cannot be placed into a const data section. To place an instance structure into a const data section, the instance structure must be manually initialized. Manually initialize the instance structure as follows:
   
+arm_dct4_instance_f32 S = {N, Nby2, normalize, pTwiddle, pCosFactor, pRfft, pCfft};   
+arm_dct4_instance_q31 S = {N, Nby2, normalize, pTwiddle, pCosFactor, pRfft, pCfft};  
+arm_dct4_instance_q15 S = {N, Nby2, normalize, pTwiddle, pCosFactor, pRfft, pCfft};  
+ 
where N is the length of the DCT4; Nby2 is half of the length of the DCT4; normalize is normalizing factor used and is equal to sqrt(2/N); pTwiddle points to the twiddle factor table; pCosFactor points to the cosFactor table; pRfft points to the real FFT instance; pCfft points to the complex FFT instance; The CFFT and RFFT structures also needs to be initialized, refer to arm_cfft_radix4_f32() and arm_rfft_f32() respectively for details regarding static initialization.
+
Fixed-Point Behavior
Care must be taken when using the fixed-point versions of the DCT4 transform functions. In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. Refer to the function specific documentation below for usage guidelines.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_dct4_init_f32 (arm_dct4_instance_f32 S,
arm_rfft_instance_f32 S_RFFT,
arm_cfft_radix4_instance_f32 S_CFFT,
uint16_t  N,
uint16_t  Nby2,
float32_t  normalize 
)
+
+
+ +

Initialization function for the floating-point DCT4/IDCT4.

+
Parameters:
+ + + + + + + +
[in,out]*Spoints to an instance of floating-point DCT4/IDCT4 structure.
[in]*S_RFFTpoints to an instance of floating-point RFFT/RIFFT structure.
[in]*S_CFFTpoints to an instance of floating-point CFFT/CIFFT structure.
[in]Nlength of the DCT4.
[in]Nby2half of the length of the DCT4.
[in]normalizenormalizing factor.
+
+
+
Returns:
arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported transform length.
+
Normalizing factor:
The normalizing factor is sqrt(2/N), which depends on the size of transform N. Floating-point normalizing factors are mentioned in the table below for different DCT sizes:
+dct4NormalizingF32Table.gif +
+
+ +

Definition at line 4142 of file arm_dct4_init_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_dct4_f32 (const arm_dct4_instance_f32 S,
float32_t pState,
float32_t pInlineBuffer 
)
+
+
+ +

Processing function for the floating-point DCT4/IDCT4.

+
Parameters:
+ + + + +
[in]*Spoints to an instance of the floating-point DCT4/IDCT4 structure.
[in]*pStatepoints to state buffer.
[in,out]*pInlineBufferpoints to the in-place input and output buffer.
+
+
+
Returns:
none.
+ +

Definition at line 126 of file arm_dct4_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_dct4_init_q31 (arm_dct4_instance_q31 S,
arm_rfft_instance_q31 S_RFFT,
arm_cfft_radix4_instance_q31 S_CFFT,
uint16_t  N,
uint16_t  Nby2,
q31_t  normalize 
)
+
+
+ +

Initialization function for the Q31 DCT4/IDCT4.

+
Parameters:
+ + + + + + + +
[in,out]*Spoints to an instance of Q31 DCT4/IDCT4 structure.
[in]*S_RFFTpoints to an instance of Q31 RFFT/RIFFT structure
[in]*S_CFFTpoints to an instance of Q31 CFFT/CIFFT structure
[in]Nlength of the DCT4.
[in]Nby2half of the length of the DCT4.
[in]normalizenormalizing factor.
+
+
+
Returns:
arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length.
+
Normalizing factor:
The normalizing factor is sqrt(2/N), which depends on the size of transform N. Normalizing factors in 1.31 format are mentioned in the table below for different DCT sizes:
+dct4NormalizingQ31Table.gif +
+
+ +

Definition at line 2133 of file arm_dct4_init_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_dct4_q31 (const arm_dct4_instance_q31 S,
q31_t pState,
q31_t pInlineBuffer 
)
+
+
+ +

Processing function for the Q31 DCT4/IDCT4.

+
Parameters:
+ + + + +
[in]*Spoints to an instance of the Q31 DCT4 structure.
[in]*pStatepoints to state buffer.
[in,out]*pInlineBufferpoints to the in-place input and output buffer.
+
+
+
Returns:
none.
+
Input an output formats:
Input samples need to be downscaled by 1 bit to avoid saturations in the Q31 DCT process, as the conversion from DCT2 to DCT4 involves one subtraction. Internally inputs are downscaled in the RFFT process function to avoid overflows. Number of bits downscaled, depends on the size of the transform. The input and output formats for different DCT sizes and number of bits to upscale are mentioned in the table below:
+
+dct4FormatsQ31Table.gif +
+ +

Definition at line 53 of file arm_dct4_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_dct4_init_q15 (arm_dct4_instance_q15 S,
arm_rfft_instance_q15 S_RFFT,
arm_cfft_radix4_instance_q15 S_CFFT,
uint16_t  N,
uint16_t  Nby2,
q15_t  normalize 
)
+
+
+ +

Initialization function for the Q15 DCT4/IDCT4.

+
Parameters:
+ + + + + + + +
[in,out]*Spoints to an instance of Q15 DCT4/IDCT4 structure.
[in]*S_RFFTpoints to an instance of Q15 RFFT/RIFFT structure.
[in]*S_CFFTpoints to an instance of Q15 CFFT/CIFFT structure.
[in]Nlength of the DCT4.
[in]Nby2half of the length of the DCT4.
[in]normalizenormalizing factor.
+
+
+
Returns:
arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length.
+
Normalizing factor:
The normalizing factor is sqrt(2/N), which depends on the size of transform N. Normalizing factors in 1.15 format are mentioned in the table below for different DCT sizes:
+dct4NormalizingQ15Table.gif +
+
+ +

Definition at line 1125 of file arm_dct4_init_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_dct4_q15 (const arm_dct4_instance_q15 S,
q15_t pState,
q15_t pInlineBuffer 
)
+
+
+ +

Processing function for the Q15 DCT4/IDCT4.

+
Parameters:
+ + + + +
[in]*Spoints to an instance of the Q15 DCT4 structure.
[in]*pStatepoints to state buffer.
[in,out]*pInlineBufferpoints to the in-place input and output buffer.
+
+
+
Returns:
none.
+
Input an output formats:
Internally inputs are downscaled in the RFFT process function to avoid overflows. Number of bits downscaled, depends on the size of the transform. The input and output formats for different DCT sizes and number of bits to upscale are mentioned in the table below:
+
+dct4FormatsQ15Table.gif +
+ +

Definition at line 52 of file arm_dct4_q15.c.

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
const float32_t Weights_128[256] [static]
+
+
+
Weights tables are generated using the formula :
weights[n] = e^(-j*n*pi/(2*N))
+
C command to generate the table
   
+ for(i = 0; i< N; i++)   
+ {   
+    weights[2*i]= cos(i*c);   
+    weights[(2*i)+1]= -sin(i * c);   
+ } 
+
Where N is the Number of weights to be calculated and c is pi/(2*N)
+
In the tables below the real and imaginary values are placed alternatively, hence the array length is 2*N.
+ +

Definition at line 64 of file arm_dct4_init_f32.c.

+ +
+
+ +
+
+ + + + +
const float32_t Weights_512[1024] [static]
+
+
+ +

Definition at line 195 of file arm_dct4_init_f32.c.

+ +
+
+ +
+
+ + + + +
const float32_t Weights_2048[4096] [static]
+
+
+ +

Definition at line 710 of file arm_dct4_init_f32.c.

+ +
+
+ +
+
+ + + + +
const float32_t cos_factors_128[128] [static]
+
+
+
cosFactor tables are generated using the formula :
cos_factors[n] = 2 * cos((2n+1)*pi/(4*N))
+
C command to generate the table
+
 for(i = 0; i< N; i++)   
+ {   
+    cos_factors[i]= 2 * cos((2*i+1)*c/2);   
+ } 
+
where N is the number of factors to generate and c is pi/(2*N)
+ +

Definition at line 2774 of file arm_dct4_init_f32.c.

+ +
+
+ +
+
+ + + + +
const float32_t cos_factors_512[512] [static]
+
+
+ +

Definition at line 2841 of file arm_dct4_init_f32.c.

+ +
+
+ +
+
+ + + + +
const float32_t cos_factors_2048[2048] [static]
+
+
+ +

Definition at line 3100 of file arm_dct4_init_f32.c.

+ +
+
+ +
+
+ + + + +
const q31_t WeightsQ31_128[256] [static]
+
+
+
Weights tables are generated using the formula :
weights[n] = e^(-j*n*pi/(2*N))
+
C command to generate the table
   
+ for(i = 0; i< N; i++)   
+ {   
+   weights[2*i]= cos(i*c);   
+   weights[(2*i)+1]= -sin(i * c);   
+ } 
+
where N is the Number of weights to be calculated and c is pi/(2*N)
+
Convert the output to q31 format by multiplying with 2^31 and saturated if required.
+
In the tables below the real and imaginary values are placed alternatively, hence the array length is 2*N.
+ +

Definition at line 66 of file arm_dct4_init_q31.c.

+ +
+
+ +
+
+ + + + +
const q31_t WeightsQ31_512[1024] [static]
+
+
+ +

Definition at line 133 of file arm_dct4_init_q31.c.

+ +
+
+ +
+
+ + + + +
const q31_t WeightsQ31_2048[4096] [static]
+
+
+ +

Definition at line 392 of file arm_dct4_init_q31.c.

+ +
+
+ +
+
+ + + + +
const q31_t cos_factorsQ31_128[128] [static]
+
+
+
cosFactor tables are generated using the formula :
cos_factors[n] = 2 * cos((2n+1)*pi/(4*N))
+
C command to generate the table
   
+ for(i = 0; i< N; i++)   
+ {   
+   cos_factors[i]= 2 * cos((2*i+1)*c/2);   
+ } 
+
where N is the number of factors to generate and c is pi/(2*N)
+
Then converted to q31 format by multiplying with 2^31 and saturated if required.
+ +

Definition at line 1436 of file arm_dct4_init_q31.c.

+ +
+
+ +
+
+ + + + +
const q31_t cos_factorsQ31_512[512] [static]
+
+
+ +

Definition at line 1471 of file arm_dct4_init_q31.c.

+ +
+
+ +
+
+ + + + +
const q31_t cos_factorsQ31_2048[2048] [static]
+
+
+ +

Definition at line 1602 of file arm_dct4_init_q31.c.

+ +
+
+ +
+
+ + + + +
const q15_t WeightsQ15_128[256] [static]
+
+
+
Weights tables are generated using the formula :
weights[n] = e^(-j*n*pi/(2*N))
+
C command to generate the table
   
+ for(i = 0; i< N; i++)   
+ {   
+   weights[2*i]= cos(i*c);   
+   weights[(2*i)+1]= -sin(i * c);   
+ } 
+
where N is the Number of weights to be calculated and c is pi/(2*N)
+
Converted the output to q15 format by multiplying with 2^31 and saturated if required.
+
In the tables below the real and imaginary values are placed alternatively, hence the array length is 2*N.
+ +

Definition at line 66 of file arm_dct4_init_q15.c.

+ +
+
+ +
+
+ + + + +
const q15_t WeightsQ15_512[1024] [static]
+
+
+ +

Definition at line 101 of file arm_dct4_init_q15.c.

+ +
+
+ +
+
+ + + + +
const q15_t WeightsQ15_2048[4096] [static]
+
+
+ +

Definition at line 232 of file arm_dct4_init_q15.c.

+ +
+
+ +
+
+ + + + +
const q15_t cos_factorsQ15_128[128] [static]
+
+
+Initial value:
 {
+  0x7fff, 0x7ffa, 0x7ff0, 0x7fe1, 0x7fce, 0x7fb5, 0x7f97, 0x7f75,
+  0x7f4d, 0x7f21, 0x7ef0, 0x7eba, 0x7e7f, 0x7e3f, 0x7dfa, 0x7db0,
+  0x7d62, 0x7d0f, 0x7cb7, 0x7c5a, 0x7bf8, 0x7b92, 0x7b26, 0x7ab6,
+  0x7a42, 0x79c8, 0x794a, 0x78c7, 0x7840, 0x77b4, 0x7723, 0x768e,
+  0x75f4, 0x7555, 0x74b2, 0x740b, 0x735f, 0x72af, 0x71fa, 0x7141,
+  0x7083, 0x6fc1, 0x6efb, 0x6e30, 0x6d62, 0x6c8f, 0x6bb8, 0x6adc,
+  0x69fd, 0x6919, 0x6832, 0x6746, 0x6657, 0x6563, 0x646c, 0x6371,
+  0x6271, 0x616f, 0x6068, 0x5f5e, 0x5e50, 0x5d3e, 0x5c29, 0x5b10,
+  0x59f3, 0x58d4, 0x57b0, 0x568a, 0x5560, 0x5433, 0x5302, 0x51ce,
+  0x5097, 0x4f5e, 0x4e21, 0x4ce1, 0x4b9e, 0x4a58, 0x490f, 0x47c3,
+  0x4675, 0x4524, 0x43d0, 0x427a, 0x4121, 0x3fc5, 0x3e68, 0x3d07,
+  0x3ba5, 0x3a40, 0x38d8, 0x376f, 0x3604, 0x3496, 0x3326, 0x31b5,
+  0x3041, 0x2ecc, 0x2d55, 0x2bdc, 0x2a61, 0x28e5, 0x2767, 0x25e8,
+  0x2467, 0x22e5, 0x2161, 0x1fdc, 0x1e56, 0x1ccf, 0x1b47, 0x19bd,
+  0x1833, 0x16a8, 0x151b, 0x138e, 0x1201, 0x1072, 0xee3, 0xd53,
+  0xbc3, 0xa33, 0x8a2, 0x710, 0x57f, 0x3ed, 0x25b, 0xc9
+}
+
cosFactor tables are generated using the formula :
 cos_factors[n] = 2 * cos((2n+1)*pi/(4*N)) 
+
C command to generate the table
   
+ for(i = 0; i< N; i++)   
+ {   
+   cos_factors[i]= 2 * cos((2*i+1)*c/2);   
+ } 
+
where N is the number of factors to generate and c is pi/(2*N)
+
Then converted to q15 format by multiplying with 2^31 and saturated if required.
+ +

Definition at line 764 of file arm_dct4_init_q15.c.

+ +
+
+ +
+
+ + + + +
const q15_t cos_factorsQ15_512[512] [static]
+
+
+ +

Definition at line 783 of file arm_dct4_init_q15.c.

+ +
+
+ +
+
+ + + + +
const q15_t cos_factorsQ15_2048[2048] [static]
+
+
+ +

Definition at line 850 of file arm_dct4_init_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___dotproduct_example.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___dotproduct_example.html new file mode 100644 index 000000000..3c4a96a63 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___dotproduct_example.html @@ -0,0 +1,96 @@ + + + + +CMSIS DSP Software Library: Dot Product Example + + + + + + + + + +
+
+

Dot Product Example
+ +[Examples] +

+
+
+ +
+
Description:
+
Demonstrates the use of the Multiply and Add functions to perform the dot product. The dot product of two vectors is obtained by multiplying corresponding elements and summing the products.
+
Algorithm:
+
The two input vectors A and B with length n, are multiplied element-by-element and then added to obtain dot product.
+
This is denoted by the following equation:
  dotProduct = A[0] * B[0] + A[1] * B[1] + ... + A[n-1] * B[n-1]
+
Block Diagram:
+
+dotProduct.gif +
+
+
Variables Description:
+
    +
  • srcA_buf_f32 points to first input vector
  • +
  • srcB_buf_f32 points to second input vector
  • +
  • testOutput stores dot product of the two input vectors.
  • +
+
+
CMSIS DSP Software Library Functions Used:
+
+
+

Refer arm_dotproduct_example_f32.c

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___f_i_r.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___f_i_r.html new file mode 100644 index 000000000..72c41d658 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___f_i_r.html @@ -0,0 +1,721 @@ + + + + +CMSIS DSP Software Library: Finite Impulse Response (FIR) Filters + + + + + + + + + +
+ +
+

Finite Impulse Response (FIR) Filters
+ +[Filtering Functions] +

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

+Functions

void arm_fir_init_f32 (arm_fir_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, uint32_t blockSize)
void arm_fir_f32 (const arm_fir_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
void arm_fir_init_q31 (arm_fir_instance_q31 *S, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, uint32_t blockSize)
void arm_fir_q31 (const arm_fir_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_fir_fast_q31 (const arm_fir_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
arm_status arm_fir_init_q15 (arm_fir_instance_q15 *S, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, uint32_t blockSize)
void arm_fir_q15 (const arm_fir_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_fir_fast_q15 (const arm_fir_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_fir_init_q7 (arm_fir_instance_q7 *S, uint16_t numTaps, q7_t *pCoeffs, q7_t *pState, uint32_t blockSize)
void arm_fir_q7 (const arm_fir_instance_q7 *S, q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
+

Detailed Description

+

This set of functions implements Finite Impulse Response (FIR) filters for Q7, Q15, Q31, and floating-point data types. Fast versions of Q15 and Q31 are also provided on Cortex-M4 and Cortex-M3. The functions operate on blocks of input and output data and each call to the function processes blockSize samples through the filter. pSrc and pDst points to input and output arrays containing blockSize values.

+
Algorithm:
The FIR filter algorithm is based upon a sequence of multiply-accumulate (MAC) operations. Each filter coefficient b[n] is multiplied by a state variable which equals a previous input sample x[n].
   
+    y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]   
+ 
+
+FIR.gif +

Finite Impulse Response filter

+
+
pCoeffs points to a coefficient array of size numTaps. Coefficients are stored in time reversed order.
+
   
+    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ 
+
pState points to a state array of size numTaps + blockSize - 1. Samples in the state buffer are stored in the following order.
+
   
+    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}   
+ 
+
Note that the length of the state buffer exceeds the length of the coefficient array by blockSize-1. The increased state buffer length allows circular addressing, which is traditionally used in the FIR filters, to be avoided and yields a significant speed improvement. The state variables are updated after each block of data is processed; the coefficients are untouched.
+
Instance Structure
The coefficients and state variables for a filter are stored together in an instance data structure. A separate instance structure must be defined for each filter. Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. There are separate instance structure declarations for each of the 4 supported data types.
+
Initialization Functions
There is also an associated initialization function for each data type. The initialization function performs the following operations:
    +
  • Sets the values of the internal structure fields.
  • +
  • Zeros out the values in the state buffer.
  • +
+
+
Use of the initialization function is optional. However, if the initialization function is used, then the instance structure cannot be placed into a const data section. To place an instance structure into a const data section, the instance structure must be manually initialized. Set the values in the state buffer to zeros before static initialization. The code below statically initializes each of the 4 different data type filter instance structures
   
+arm_fir_instance_f32 S = {numTaps, pState, pCoeffs};   
+arm_fir_instance_q31 S = {numTaps, pState, pCoeffs};   
+arm_fir_instance_q15 S = {numTaps, pState, pCoeffs};   
+arm_fir_instance_q7 S =  {numTaps, pState, pCoeffs};   
+ 
+

where numTaps is the number of filter coefficients in the filter; pState is the address of the state buffer; pCoeffs is the address of the coefficient buffer.

+
Fixed-Point Behavior
Care must be taken when using the fixed-point versions of the FIR filter functions. In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. Refer to the function specific documentation below for usage guidelines.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_init_f32 (arm_fir_instance_f32 S,
uint16_t  numTaps,
float32_t pCoeffs,
float32_t pState,
uint32_t  blockSize 
)
+
+
+ +

Initialization function for the floating-point FIR filter.

+
Parameters:
+ + + + + + +
[in,out]*Spoints to an instance of the floating-point FIR filter structure.
[in]numTapsNumber of filter coefficients in the filter.
[in]*pCoeffspoints to the filter coefficients buffer.
[in]*pStatepoints to the state buffer.
[in]blockSizenumber of samples that are processed per call.
+
+
+
Returns:
none.
+

Description:

+
pCoeffs points to the array of filter coefficients stored in time reversed order:
   
+    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ 
+
pState points to the array of state variables. pState is of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_fir_f32().
+
Examples:
arm_fir_example_f32.c, and arm_signal_converge_example_f32.c.
+
+

Definition at line 68 of file arm_fir_init_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_f32 (const arm_fir_instance_f32 S,
float32_t pSrc,
float32_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the floating-point FIR filter.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the floating-point FIR filter structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data.
[in]blockSizenumber of samples to process per call.
+
+
+
Returns:
none.
+
Examples:
arm_fir_example_f32.c, and arm_signal_converge_example_f32.c.
+
+

Definition at line 128 of file arm_fir_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_init_q31 (arm_fir_instance_q31 S,
uint16_t  numTaps,
q31_t pCoeffs,
q31_t pState,
uint32_t  blockSize 
)
+
+
+ +

Initialization function for the Q31 FIR filter.

+
Parameters:
+ + + + + + +
[in,out]*Spoints to an instance of the Q31 FIR filter structure.
[in]numTapsNumber of filter coefficients in the filter.
[in]*pCoeffspoints to the filter coefficients buffer.
[in]*pStatepoints to the state buffer.
[in]blockSizenumber of samples that are processed per call.
+
+
+
Returns:
none.
+

Description:

+
pCoeffs points to the array of filter coefficients stored in time reversed order:
   
+    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ 
+
pState points to the array of state variables. pState is of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_fir_q31().
+ +

Definition at line 68 of file arm_fir_init_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_q31 (const arm_fir_instance_q31 S,
q31_t pSrc,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the Q31 FIR filter.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q31 FIR filter structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data.
[in]blockSizenumber of samples to process per call.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 64-bit accumulator. The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. Thus, if the accumulator result overflows it wraps around rather than clip. In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits. After all multiply-accumulates are performed, the 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result.
+
Refer to the function arm_fir_fast_q31() for a faster but less precise implementation of this filter for Cortex-M3 and Cortex-M4.
+ +

Definition at line 67 of file arm_fir_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_fast_q31 (const arm_fir_instance_q31 S,
q31_t pSrc,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the fast Q31 FIR filter for Cortex-M3 and Cortex-M4.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q31 structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block output data.
[in]blockSizenumber of samples to process per call.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
This function is optimized for speed at the expense of fixed-point precision and overflow protection. The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. These intermediate results are added to a 2.30 accumulator. Finally, the accumulator is saturated and converted to a 1.31 result. The fast version has the same overflow behavior as the standard version and provides less precision since it discards the low 32 bits of each multiplication result. In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits.
+
Refer to the function arm_fir_q31() for a slower implementation of this function which uses a 64-bit accumulator to provide higher precision. Both the slow and the fast versions use the same instance structure. Use the function arm_fir_init_q31() to initialize the filter structure.
+ +

Definition at line 66 of file arm_fir_fast_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_fir_init_q15 (arm_fir_instance_q15 S,
uint16_t  numTaps,
q15_t pCoeffs,
q15_t pState,
uint32_t  blockSize 
)
+
+
+ +

Initialization function for the Q15 FIR filter.

+
Parameters:
+ + + + + + +
[in,out]*Spoints to an instance of the Q15 FIR filter structure.
[in]numTapsNumber of filter coefficients in the filter. Must be even and greater than or equal to 4.
[in]*pCoeffspoints to the filter coefficients buffer.
[in]*pStatepoints to the state buffer.
[in]blockSizeis number of samples processed per call.
+
+
+
Returns:
The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if numTaps is not greater than or equal to 4 and even.
+

Description:

+
pCoeffs points to the array of filter coefficients stored in time reversed order:
   
+    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ 
Note that numTaps must be even and greater than or equal to 4. To implement an odd length filter simply increase numTaps by 1 and set the last coefficient to zero. For example, to implement a filter with numTaps=3 and coefficients
   
+     {0.3, -0.8, 0.3}   
+ 
set numTaps=4 and use the coefficients:
   
+     {0.3, -0.8, 0.3, 0}.   
+ 
Similarly, to implement a two point filter
   
+     {0.3, -0.3}   
+ 
set numTaps=4 and use the coefficients:
   
+     {0.3, -0.3, 0, 0}.   
+ 
+
pState points to the array of state variables. pState is of length numTaps+blockSize-1, where blockSize is the number of input samples processed by each call to arm_fir_q15().
+ +

Definition at line 85 of file arm_fir_init_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_q15 (const arm_fir_instance_q15 S,
q15_t pSrc,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the Q15 FIR filter.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q15 FIR structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data.
[in]blockSizenumber of samples to process per call.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 64-bit internal accumulator. Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. Lastly, the accumulator is saturated to yield a result in 1.15 format.
+
Refer to the function arm_fir_fast_q15() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4.
+ +

Definition at line 68 of file arm_fir_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_fast_q15 (const arm_fir_instance_q15 S,
q15_t pSrc,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the fast Q15 FIR filter for Cortex-M3 and Cortex-M4.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q15 FIR filter structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data.
[in]blockSizenumber of samples to process per call.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
This fast version uses a 32-bit accumulator with 2.30 format. The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit. Thus, if the accumulator result overflows it wraps around and distorts the result. In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits. The 2.30 accumulator is then truncated to 2.15 format and saturated to yield the 1.15 result.
+
Refer to the function arm_fir_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion. Both the slow and the fast versions use the same instance structure. Use the function arm_fir_init_q15() to initialize the filter structure.
+ +

Definition at line 65 of file arm_fir_fast_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_init_q7 (arm_fir_instance_q7 S,
uint16_t  numTaps,
q7_t pCoeffs,
q7_t pState,
uint32_t  blockSize 
)
+
+
+ +

Initialization function for the Q7 FIR filter.

+
Parameters:
+ + + + + + +
[in,out]*Spoints to an instance of the Q7 FIR filter structure.
[in]numTapsNumber of filter coefficients in the filter.
[in]*pCoeffspoints to the filter coefficients buffer.
[in]*pStatepoints to the state buffer.
[in]blockSizenumber of samples that are processed per call.
+
+
+
Returns:
none
+

Description:

+
pCoeffs points to the array of filter coefficients stored in time reversed order:
   
+    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ 
+
pState points to the array of state variables. pState is of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_fir_q7().
+ +

Definition at line 65 of file arm_fir_init_q7.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_q7 (const arm_fir_instance_q7 S,
q7_t pSrc,
q7_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the Q7 FIR filter.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q7 FIR filter structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data.
[in]blockSizenumber of samples to process per call.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 32-bit internal accumulator. Both coefficients and state variables are represented in 1.7 format and multiplications yield a 2.14 result. The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. The accumulator is converted to 18.7 format by discarding the low 7 bits. Finally, the result is truncated to 1.7 format.
+ +

Definition at line 64 of file arm_fir_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___f_i_r___interpolate.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___f_i_r___interpolate.html new file mode 100644 index 000000000..cb4ae7802 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___f_i_r___interpolate.html @@ -0,0 +1,497 @@ + + + + +CMSIS DSP Software Library: Finite Impulse Response (FIR) Interpolator + + + + + + + + + +
+ +
+

Finite Impulse Response (FIR) Interpolator
+ +[Filtering Functions] +

+
+
+ + + + + + + + +

+Functions

arm_status arm_fir_interpolate_init_f32 (arm_fir_interpolate_instance_f32 *S, uint8_t L, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, uint32_t blockSize)
void arm_fir_interpolate_f32 (const arm_fir_interpolate_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
arm_status arm_fir_interpolate_init_q31 (arm_fir_interpolate_instance_q31 *S, uint8_t L, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, uint32_t blockSize)
void arm_fir_interpolate_q31 (const arm_fir_interpolate_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
arm_status arm_fir_interpolate_init_q15 (arm_fir_interpolate_instance_q15 *S, uint8_t L, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, uint32_t blockSize)
void arm_fir_interpolate_q15 (const arm_fir_interpolate_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
+

Detailed Description

+

These functions combine an upsampler (zero stuffer) and an FIR filter. They are used in multirate systems for increasing the sample rate of a signal without introducing high frequency images. Conceptually, the functions are equivalent to the block diagram below:

+
+FIRInterpolator.gif +

Components included in the FIR Interpolator functions

+

After upsampling by a factor of L, the signal should be filtered by a lowpass filter with a normalized cutoff frequency of 1/L in order to eliminate high frequency copies of the spectrum. The user of the function is responsible for providing the filter coefficients.

+

The FIR interpolator functions provided in the CMSIS DSP Library combine the upsampler and FIR filter in an efficient manner. The upsampler inserts L-1 zeros between each sample. Instead of multiplying by these zero values, the FIR filter is designed to skip them. This leads to an efficient implementation without any wasted effort. The functions operate on blocks of input and output data. pSrc points to an array of blockSize input values and pDst points to an array of blockSize*L output values.

+

The library provides separate functions for Q15, Q31, and floating-point data types.

+
Algorithm:
The functions use a polyphase filter structure:
   
+    y[n] = b[0] * x[n] + b[L]   * x[n-1] + ... + b[L*(phaseLength-1)] * x[n-phaseLength+1]   
+    y[n+1] = b[1] * x[n] + b[L+1] * x[n-1] + ... + b[L*(phaseLength-1)+1] * x[n-phaseLength+1]   
+    ...   
+    y[n+(L-1)] = b[L-1] * x[n] + b[2*L-1] * x[n-1] + ....+ b[L*(phaseLength-1)+(L-1)] * x[n-phaseLength+1]   
+ 
This approach is more efficient than straightforward upsample-then-filter algorithms. With this method the computation is reduced by a factor of 1/L when compared to using a standard FIR filter.
+
pCoeffs points to a coefficient array of size numTaps. numTaps must be a multiple of the interpolation factor L and this is checked by the initialization functions. Internally, the function divides the FIR filter's impulse response into shorter filters of length phaseLength=numTaps/L. Coefficients are stored in time reversed order.
+
   
+    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ 
+
pState points to a state array of size blockSize + phaseLength - 1. Samples in the state buffer are stored in the order:
+
   
+    {x[n-phaseLength+1], x[n-phaseLength], x[n-phaseLength-1], x[n-phaseLength-2]....x[0], x[1], ..., x[blockSize-1]}   
+ 
The state variables are updated after each block of data is processed, the coefficients are untouched.
+
Instance Structure
The coefficients and state variables for a filter are stored together in an instance data structure. A separate instance structure must be defined for each filter. Coefficient arrays may be shared among several instances while state variable array should be allocated separately. There are separate instance structure declarations for each of the 3 supported data types.
+
Initialization Functions
There is also an associated initialization function for each data type. The initialization function performs the following operations:
    +
  • Sets the values of the internal structure fields.
  • +
  • Zeros out the values in the state buffer.
  • +
  • Checks to make sure that the length of the filter is a multiple of the interpolation factor.
  • +
+
+
Use of the initialization function is optional. However, if the initialization function is used, then the instance structure cannot be placed into a const data section. To place an instance structure into a const data section, the instance structure must be manually initialized. The code below statically initializes each of the 3 different data type filter instance structures
   
+ arm_fir_interpolate_instance_f32 S = {L, phaseLength, pCoeffs, pState};   
+ arm_fir_interpolate_instance_q31 S = {L, phaseLength, pCoeffs, pState};   
+ arm_fir_interpolate_instance_q15 S = {L, phaseLength, pCoeffs, pState};   
+ 
where L is the interpolation factor; phaseLength=numTaps/L is the length of each of the shorter FIR filters used internally, pCoeffs is the address of the coefficient buffer; pState is the address of the state buffer. Be sure to set the values in the state buffer to zeros when doing static initialization.
+
Fixed-Point Behavior
Care must be taken when using the fixed-point versions of the FIR interpolate filter functions. In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. Refer to the function specific documentation below for usage guidelines.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_fir_interpolate_init_f32 (arm_fir_interpolate_instance_f32 S,
uint8_t  L,
uint16_t  numTaps,
float32_t pCoeffs,
float32_t pState,
uint32_t  blockSize 
)
+
+
+ +

Initialization function for the floating-point FIR interpolator.

+
Parameters:
+ + + + + + + +
[in,out]*Spoints to an instance of the floating-point FIR interpolator structure.
[in]Lupsample factor.
[in]numTapsnumber of filter coefficients in the filter.
[in]*pCoeffspoints to the filter coefficient buffer.
[in]*pStatepoints to the state buffer.
[in]blockSizenumber of input samples to process per call.
+
+
+
Returns:
The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if the filter length numTaps is not a multiple of the interpolation factor L.
+

Description:

+
pCoeffs points to the array of filter coefficients stored in time reversed order:
   
+    {b[numTaps-1], b[numTaps-2], b[numTaps-2], ..., b[1], b[0]}   
+ 
The length of the filter numTaps must be a multiple of the interpolation factor L.
+
pState points to the array of state variables. pState is of length (numTaps/L)+blockSize-1 words where blockSize is the number of input samples processed by each call to arm_fir_interpolate_f32().
+ +

Definition at line 68 of file arm_fir_interpolate_init_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_interpolate_f32 (const arm_fir_interpolate_instance_f32 S,
float32_t pSrc,
float32_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the floating-point FIR interpolator.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the floating-point FIR interpolator structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data.
[in]blockSizenumber of input samples to process per call.
+
+
+
Returns:
none.
+ +

Definition at line 135 of file arm_fir_interpolate_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_fir_interpolate_init_q31 (arm_fir_interpolate_instance_q31 S,
uint8_t  L,
uint16_t  numTaps,
q31_t pCoeffs,
q31_t pState,
uint32_t  blockSize 
)
+
+
+ +

Initialization function for the Q31 FIR interpolator.

+
Parameters:
+ + + + + + + +
[in,out]*Spoints to an instance of the Q31 FIR interpolator structure.
[in]Lupsample factor.
[in]numTapsnumber of filter coefficients in the filter.
[in]*pCoeffspoints to the filter coefficient buffer.
[in]*pStatepoints to the state buffer.
[in]blockSizenumber of input samples to process per call.
+
+
+
Returns:
The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if the filter length numTaps is not a multiple of the interpolation factor L.
+

Description:

+
pCoeffs points to the array of filter coefficients stored in time reversed order:
   
+    {b[numTaps-1], b[numTaps-2], b[numTaps-2], ..., b[1], b[0]}   
+ 
The length of the filter numTaps must be a multiple of the interpolation factor L.
+
pState points to the array of state variables. pState is of length (numTaps/L)+blockSize-1 words where blockSize is the number of input samples processed by each call to arm_fir_interpolate_q31().
+ +

Definition at line 69 of file arm_fir_interpolate_init_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_interpolate_q31 (const arm_fir_interpolate_instance_q31 S,
q31_t pSrc,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the Q31 FIR interpolator.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q31 FIR interpolator structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data.
[in]blockSizenumber of input samples to process per call.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 64-bit accumulator. The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. Thus, if the accumulator result overflows it wraps around rather than clip. In order to avoid overflows completely the input signal must be scaled down by 1/(numTaps/L). since numTaps/L additions occur per output sample. After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format.
+ +

Definition at line 63 of file arm_fir_interpolate_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_fir_interpolate_init_q15 (arm_fir_interpolate_instance_q15 S,
uint8_t  L,
uint16_t  numTaps,
q15_t pCoeffs,
q15_t pState,
uint32_t  blockSize 
)
+
+
+ +

Initialization function for the Q15 FIR interpolator.

+
Parameters:
+ + + + + + + +
[in,out]*Spoints to an instance of the Q15 FIR interpolator structure.
[in]Lupsample factor.
[in]numTapsnumber of filter coefficients in the filter.
[in]*pCoeffspoints to the filter coefficient buffer.
[in]*pStatepoints to the state buffer.
[in]blockSizenumber of input samples to process per call.
+
+
+
Returns:
The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if the filter length numTaps is not a multiple of the interpolation factor L.
+

Description:

+
pCoeffs points to the array of filter coefficients stored in time reversed order:
   
+    {b[numTaps-1], b[numTaps-2], b[numTaps-2], ..., b[1], b[0]}   
+ 
The length of the filter numTaps must be a multiple of the interpolation factor L.
+
pState points to the array of state variables. pState is of length (numTaps/L)+blockSize-1 words where blockSize is the number of input samples processed by each call to arm_fir_interpolate_q15().
+ +

Definition at line 68 of file arm_fir_interpolate_init_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_interpolate_q15 (const arm_fir_interpolate_instance_q15 S,
q15_t pSrc,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the Q15 FIR interpolator.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q15 FIR interpolator structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data.
[in]blockSizenumber of input samples to process per call.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 64-bit internal accumulator. Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. Lastly, the accumulator is saturated to yield a result in 1.15 format.
+ +

Definition at line 62 of file arm_fir_interpolate_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___f_i_r___lattice.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___f_i_r___lattice.html new file mode 100644 index 000000000..0f28c3f62 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___f_i_r___lattice.html @@ -0,0 +1,433 @@ + + + + +CMSIS DSP Software Library: Finite Impulse Response (FIR) Lattice Filters + + + + + + + + + +
+ +
+

Finite Impulse Response (FIR) Lattice Filters
+ +[Filtering Functions] +

+
+
+ + + + + + + + +

+Functions

void arm_fir_lattice_init_f32 (arm_fir_lattice_instance_f32 *S, uint16_t numStages, float32_t *pCoeffs, float32_t *pState)
void arm_fir_lattice_f32 (const arm_fir_lattice_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
void arm_fir_lattice_init_q31 (arm_fir_lattice_instance_q31 *S, uint16_t numStages, q31_t *pCoeffs, q31_t *pState)
void arm_fir_lattice_q31 (const arm_fir_lattice_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_fir_lattice_init_q15 (arm_fir_lattice_instance_q15 *S, uint16_t numStages, q15_t *pCoeffs, q15_t *pState)
void arm_fir_lattice_q15 (const arm_fir_lattice_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
+

Detailed Description

+

This set of functions implements Finite Impulse Response (FIR) lattice filters for Q15, Q31 and floating-point data types. Lattice filters are used in a variety of adaptive filter applications. The filter structure is feedforward and the net impulse response is finite length. The functions operate on blocks of input and output data and each call to the function processes blockSize samples through the filter. pSrc and pDst point to input and output arrays containing blockSize values.

+
Algorithm:
+FIRLattice.gif +

Finite Impulse Response Lattice filter

+ The following difference equation is implemented:
   
+    f0[n] = g0[n] = x[n]   
+    fm[n] = fm-1[n] + km * gm-1[n-1] for m = 1, 2, ...M   
+    gm[n] = km * fm-1[n] + gm-1[n-1] for m = 1, 2, ...M   
+    y[n] = fM[n]   
+ 
+
pCoeffs points to tha array of reflection coefficients of size numStages. Reflection Coefficients are stored in the following order.
+
   
+    {k1, k2, ..., kM}   
+ 
where M is number of stages
+
pState points to a state array of size numStages. The state variables (g values) hold previous inputs and are stored in the following order.
   
+    {g0[n], g1[n], g2[n] ...gM-1[n]}   
+ 
The state variables are updated after each block of data is processed; the coefficients are untouched.
+
Instance Structure
The coefficients and state variables for a filter are stored together in an instance data structure. A separate instance structure must be defined for each filter. Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. There are separate instance structure declarations for each of the 3 supported data types.
+
Initialization Functions
There is also an associated initialization function for each data type. The initialization function performs the following operations:
    +
  • Sets the values of the internal structure fields.
  • +
  • Zeros out the values in the state buffer.
  • +
+
+
Use of the initialization function is optional. However, if the initialization function is used, then the instance structure cannot be placed into a const data section. To place an instance structure into a const data section, the instance structure must be manually initialized. Set the values in the state buffer to zeros and then manually initialize the instance structure as follows:
   
+arm_fir_lattice_instance_f32 S = {numStages, pState, pCoeffs};   
+arm_fir_lattice_instance_q31 S = {numStages, pState, pCoeffs};   
+arm_fir_lattice_instance_q15 S = {numStages, pState, pCoeffs};   
+ 
+
where numStages is the number of stages in the filter; pState is the address of the state buffer; pCoeffs is the address of the coefficient buffer.
+
Fixed-Point Behavior
Care must be taken when using the fixed-point versions of the FIR Lattice filter functions. In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. Refer to the function specific documentation below for usage guidelines.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_lattice_init_f32 (arm_fir_lattice_instance_f32 S,
uint16_t  numStages,
float32_t pCoeffs,
float32_t pState 
)
+
+
+ +

Initialization function for the floating-point FIR lattice filter.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the floating-point FIR lattice structure.
[in]numStagesnumber of filter stages.
[in]*pCoeffspoints to the coefficient buffer. The array is of length numStages.
[in]*pStatepoints to the state buffer. The array is of length numStages.
+
+
+
Returns:
none.
+ +

Definition at line 53 of file arm_fir_lattice_init_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_lattice_f32 (const arm_fir_lattice_instance_f32 S,
float32_t pSrc,
float32_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the floating-point FIR lattice filter.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the floating-point FIR lattice structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data
[in]blockSizenumber of samples to process.
+
+
+
Returns:
none.
+ +

Definition at line 121 of file arm_fir_lattice_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_lattice_init_q31 (arm_fir_lattice_instance_q31 S,
uint16_t  numStages,
q31_t pCoeffs,
q31_t pState 
)
+
+
+ +

Initialization function for the Q31 FIR lattice filter.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q31 FIR lattice structure.
[in]numStagesnumber of filter stages.
[in]*pCoeffspoints to the coefficient buffer. The array is of length numStages.
[in]*pStatepoints to the state buffer. The array is of length numStages.
+
+
+
Returns:
none.
+ +

Definition at line 53 of file arm_fir_lattice_init_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_lattice_q31 (const arm_fir_lattice_instance_q31 S,
q31_t pSrc,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the Q31 FIR lattice filter.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q31 FIR lattice structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data
[in]blockSizenumber of samples to process.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior: In order to avoid overflows the input signal must be scaled down by 2*log2(numStages) bits.

+ +

Definition at line 58 of file arm_fir_lattice_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_lattice_init_q15 (arm_fir_lattice_instance_q15 S,
uint16_t  numStages,
q15_t pCoeffs,
q15_t pState 
)
+
+
+ +

Initialization function for the Q15 FIR lattice filter.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q15 FIR lattice structure.
[in]numStagesnumber of filter stages.
[in]*pCoeffspoints to the coefficient buffer. The array is of length numStages.
[in]*pStatepoints to the state buffer. The array is of length numStages.
+
+
+
Returns:
none.
+ +

Definition at line 53 of file arm_fir_lattice_init_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_lattice_q15 (const arm_fir_lattice_instance_q15 S,
q15_t pSrc,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the Q15 FIR lattice filter.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q15 FIR lattice structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data
[in]blockSizenumber of samples to process.
+
+
+
Returns:
none.
+ +

Definition at line 54 of file arm_fir_lattice_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___f_i_r___sparse.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___f_i_r___sparse.html new file mode 100644 index 000000000..ec3ef549f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___f_i_r___sparse.html @@ -0,0 +1,674 @@ + + + + +CMSIS DSP Software Library: Finite Impulse Response (FIR) Sparse Filters + + + + + + + + + +
+ +
+

Finite Impulse Response (FIR) Sparse Filters
+ +[Filtering Functions] +

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

+Functions

void arm_fir_sparse_init_f32 (arm_fir_sparse_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, int32_t *pTapDelay, uint16_t maxDelay, uint32_t blockSize)
void arm_fir_sparse_f32 (arm_fir_sparse_instance_f32 *S, float32_t *pSrc, float32_t *pDst, float32_t *pScratchIn, uint32_t blockSize)
void arm_fir_sparse_init_q31 (arm_fir_sparse_instance_q31 *S, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, int32_t *pTapDelay, uint16_t maxDelay, uint32_t blockSize)
void arm_fir_sparse_q31 (arm_fir_sparse_instance_q31 *S, q31_t *pSrc, q31_t *pDst, q31_t *pScratchIn, uint32_t blockSize)
void arm_fir_sparse_init_q15 (arm_fir_sparse_instance_q15 *S, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, int32_t *pTapDelay, uint16_t maxDelay, uint32_t blockSize)
void arm_fir_sparse_q15 (arm_fir_sparse_instance_q15 *S, q15_t *pSrc, q15_t *pDst, q15_t *pScratchIn, q31_t *pScratchOut, uint32_t blockSize)
void arm_fir_sparse_init_q7 (arm_fir_sparse_instance_q7 *S, uint16_t numTaps, q7_t *pCoeffs, q7_t *pState, int32_t *pTapDelay, uint16_t maxDelay, uint32_t blockSize)
void arm_fir_sparse_q7 (arm_fir_sparse_instance_q7 *S, q7_t *pSrc, q7_t *pDst, q7_t *pScratchIn, q31_t *pScratchOut, uint32_t blockSize)
+

Detailed Description

+

This group of functions implements sparse FIR filters. Sparse FIR filters are equivalent to standard FIR filters except that most of the coefficients are equal to zero. Sparse filters are used for simulating reflections in communications and audio applications.

+

There are separate functions for Q7, Q15, Q31, and floating-point data types. The functions operate on blocks of input and output data and each call to the function processes blockSize samples through the filter. pSrc and pDst points to input and output arrays respectively containing blockSize values.

+
Algorithm:
The sparse filter instant structure contains an array of tap indices pTapDelay which specifies the locations of the non-zero coefficients. This is in addition to the coefficient array b. The implementation essentially skips the multiplications by zero and leads to an efficient realization.
  
+     y[n] = b[0] * x[n-pTapDelay[0]] + b[1] * x[n-pTapDelay[1]] + b[2] * x[n-pTapDelay[2]] + ...+ b[numTaps-1] * x[n-pTapDelay[numTaps-1]]   
+ 
+
+FIRSparse.gif +

Sparse FIR filter. b[n] represents the filter coefficients

+
+
pCoeffs points to a coefficient array of size numTaps; pTapDelay points to an array of nonzero indices and is also of size numTaps; pState points to a state array of size maxDelay + blockSize, where maxDelay is the largest offset value that is ever used in the pTapDelay array. Some of the processing functions also require temporary working buffers.
+
Instance Structure
The coefficients and state variables for a filter are stored together in an instance data structure. A separate instance structure must be defined for each filter. Coefficient and offset arrays may be shared among several instances while state variable arrays cannot be shared. There are separate instance structure declarations for each of the 4 supported data types.
+
Initialization Functions
There is also an associated initialization function for each data type. The initialization function performs the following operations:
    +
  • Sets the values of the internal structure fields.
  • +
  • Zeros out the values in the state buffer.
  • +
+
+
Use of the initialization function is optional. However, if the initialization function is used, then the instance structure cannot be placed into a const data section. To place an instance structure into a const data section, the instance structure must be manually initialized. Set the values in the state buffer to zeros before static initialization. The code below statically initializes each of the 4 different data type filter instance structures
   
+arm_fir_sparse_instance_f32 S = {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};   
+arm_fir_sparse_instance_q31 S = {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};   
+arm_fir_sparse_instance_q15 S = {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};   
+arm_fir_sparse_instance_q7 S =  {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};   
+ 
+
+
Fixed-Point Behavior
Care must be taken when using the fixed-point versions of the sparse FIR filter functions. In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. Refer to the function specific documentation below for usage guidelines.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_sparse_init_f32 (arm_fir_sparse_instance_f32 S,
uint16_t  numTaps,
float32_t pCoeffs,
float32_t pState,
int32_t *  pTapDelay,
uint16_t  maxDelay,
uint32_t  blockSize 
)
+
+
+ +

Initialization function for the floating-point sparse FIR filter.

+
Parameters:
+ + + + + + + + +
[in,out]*Spoints to an instance of the floating-point sparse FIR structure.
[in]numTapsnumber of nonzero coefficients in the filter.
[in]*pCoeffspoints to the array of filter coefficients.
[in]*pStatepoints to the state buffer.
[in]*pTapDelaypoints to the array of offset times.
[in]maxDelaymaximum offset time supported.
[in]blockSizenumber of samples that will be processed per block.
+
+
+
Returns:
none
+

Description:

+
pCoeffs holds the filter coefficients and has length numTaps. pState holds the filter's state variables and must be of length maxDelay + blockSize, where maxDelay is the maximum number of delay line values. blockSize is the number of samples processed by the arm_fir_sparse_f32() function.
+ +

Definition at line 65 of file arm_fir_sparse_init_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_sparse_f32 (arm_fir_sparse_instance_f32 S,
float32_t pSrc,
float32_t pDst,
float32_t pScratchIn,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the floating-point sparse FIR filter.

+
Parameters:
+ + + + + + +
[in]*Spoints to an instance of the floating-point sparse FIR structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data
[in]*pScratchInpoints to a temporary buffer of size blockSize.
[in]blockSizenumber of input samples to process per call.
+
+
+
Returns:
none.
+ +

Definition at line 113 of file arm_fir_sparse_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_sparse_init_q31 (arm_fir_sparse_instance_q31 S,
uint16_t  numTaps,
q31_t pCoeffs,
q31_t pState,
int32_t *  pTapDelay,
uint16_t  maxDelay,
uint32_t  blockSize 
)
+
+
+ +

Initialization function for the Q31 sparse FIR filter.

+
Parameters:
+ + + + + + + + +
[in,out]*Spoints to an instance of the Q31 sparse FIR structure.
[in]numTapsnumber of nonzero coefficients in the filter.
[in]*pCoeffspoints to the array of filter coefficients.
[in]*pStatepoints to the state buffer.
[in]*pTapDelaypoints to the array of offset times.
[in]maxDelaymaximum offset time supported.
[in]blockSizenumber of samples that will be processed per block.
+
+
+
Returns:
none
+

Description:

+
pCoeffs holds the filter coefficients and has length numTaps. pState holds the filter's state variables and must be of length maxDelay + blockSize, where maxDelay is the maximum number of delay line values. blockSize is the number of words processed by arm_fir_sparse_q31() function.
+ +

Definition at line 64 of file arm_fir_sparse_init_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_sparse_q31 (arm_fir_sparse_instance_q31 S,
q31_t pSrc,
q31_t pDst,
q31_t pScratchIn,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the Q31 sparse FIR filter.

+
Parameters:
+ + + + + + +
[in]*Spoints to an instance of the Q31 sparse FIR structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data
[in]*pScratchInpoints to a temporary buffer of size blockSize.
[in]blockSizenumber of input samples to process per call.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 32-bit accumulator. The 1.31 x 1.31 multiplications are truncated to 2.30 format. This leads to loss of precision on the intermediate multiplications and provides only a single guard bit. If the accumulator result overflows, it wraps around rather than saturate. In order to avoid overflows the input signal or coefficients must be scaled down by log2(numTaps) bits.
+ +

Definition at line 58 of file arm_fir_sparse_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_sparse_init_q15 (arm_fir_sparse_instance_q15 S,
uint16_t  numTaps,
q15_t pCoeffs,
q15_t pState,
int32_t *  pTapDelay,
uint16_t  maxDelay,
uint32_t  blockSize 
)
+
+
+ +

Initialization function for the Q15 sparse FIR filter.

+
Parameters:
+ + + + + + + + +
[in,out]*Spoints to an instance of the Q15 sparse FIR structure.
[in]numTapsnumber of nonzero coefficients in the filter.
[in]*pCoeffspoints to the array of filter coefficients.
[in]*pStatepoints to the state buffer.
[in]*pTapDelaypoints to the array of offset times.
[in]maxDelaymaximum offset time supported.
[in]blockSizenumber of samples that will be processed per block.
+
+
+
Returns:
none
+

Description:

+
pCoeffs holds the filter coefficients and has length numTaps. pState holds the filter's state variables and must be of length maxDelay + blockSize, where maxDelay is the maximum number of delay line values. blockSize is the number of words processed by arm_fir_sparse_q15() function.
+ +

Definition at line 65 of file arm_fir_sparse_init_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_sparse_q15 (arm_fir_sparse_instance_q15 S,
q15_t pSrc,
q15_t pDst,
q15_t pScratchIn,
q31_t pScratchOut,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the Q15 sparse FIR filter.

+
Parameters:
+ + + + + + + +
[in]*Spoints to an instance of the Q15 sparse FIR structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data
[in]*pScratchInpoints to a temporary buffer of size blockSize.
[in]*pScratchOutpoints to a temporary buffer of size blockSize.
[in]blockSizenumber of input samples to process per call.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 32-bit accumulator. The 1.15 x 1.15 multiplications yield a 2.30 result and these are added to a 2.30 accumulator. Thus the full precision of the multiplications is maintained but there is only a single guard bit in the accumulator. If the accumulator result overflows it will wrap around rather than saturate. After all multiply-accumulates are performed, the 2.30 accumulator is truncated to 2.15 format and then saturated to 1.15 format. In order to avoid overflows the input signal or coefficients must be scaled down by log2(numTaps) bits.
+ +

Definition at line 60 of file arm_fir_sparse_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_sparse_init_q7 (arm_fir_sparse_instance_q7 S,
uint16_t  numTaps,
q7_t pCoeffs,
q7_t pState,
int32_t *  pTapDelay,
uint16_t  maxDelay,
uint32_t  blockSize 
)
+
+
+ +

Initialization function for the Q7 sparse FIR filter.

+
Parameters:
+ + + + + + + + +
[in,out]*Spoints to an instance of the Q7 sparse FIR structure.
[in]numTapsnumber of nonzero coefficients in the filter.
[in]*pCoeffspoints to the array of filter coefficients.
[in]*pStatepoints to the state buffer.
[in]*pTapDelaypoints to the array of offset times.
[in]maxDelaymaximum offset time supported.
[in]blockSizenumber of samples that will be processed per block.
+
+
+
Returns:
none
+

Description:

+
pCoeffs holds the filter coefficients and has length numTaps. pState holds the filter's state variables and must be of length maxDelay + blockSize, where maxDelay is the maximum number of delay line values. blockSize is the number of samples processed by the arm_fir_sparse_q7() function.
+ +

Definition at line 65 of file arm_fir_sparse_init_q7.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_sparse_q7 (arm_fir_sparse_instance_q7 S,
q7_t pSrc,
q7_t pDst,
q7_t pScratchIn,
q31_t pScratchOut,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the Q7 sparse FIR filter.

+
Parameters:
+ + + + + + + +
[in]*Spoints to an instance of the Q7 sparse FIR structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data
[in]*pScratchInpoints to a temporary buffer of size blockSize.
[in]*pScratchOutpoints to a temporary buffer of size blockSize.
[in]blockSizenumber of input samples to process per call.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 32-bit internal accumulator. Both coefficients and state variables are represented in 1.7 format and multiplications yield a 2.14 result. The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. The accumulator is then converted to 18.7 format by discarding the low 7 bits. Finally, the result is truncated to 1.7 format.
+ +

Definition at line 65 of file arm_fir_sparse_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___f_i_r__decimate.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___f_i_r__decimate.html new file mode 100644 index 000000000..99def24a0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___f_i_r__decimate.html @@ -0,0 +1,610 @@ + + + + +CMSIS DSP Software Library: Finite Impulse Response (FIR) Decimator + + + + + + + + + +
+ +
+

Finite Impulse Response (FIR) Decimator
+ +[Filtering Functions] +

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

+Functions

arm_status arm_fir_decimate_init_f32 (arm_fir_decimate_instance_f32 *S, uint16_t numTaps, uint8_t M, float32_t *pCoeffs, float32_t *pState, uint32_t blockSize)
void arm_fir_decimate_f32 (const arm_fir_decimate_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
arm_status arm_fir_decimate_init_q31 (arm_fir_decimate_instance_q31 *S, uint16_t numTaps, uint8_t M, q31_t *pCoeffs, q31_t *pState, uint32_t blockSize)
void arm_fir_decimate_q31 (const arm_fir_decimate_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_fir_decimate_fast_q31 (arm_fir_decimate_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
arm_status arm_fir_decimate_init_q15 (arm_fir_decimate_instance_q15 *S, uint16_t numTaps, uint8_t M, q15_t *pCoeffs, q15_t *pState, uint32_t blockSize)
void arm_fir_decimate_q15 (const arm_fir_decimate_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_fir_decimate_fast_q15 (const arm_fir_decimate_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
+

Detailed Description

+

These functions combine an FIR filter together with a decimator. They are used in multirate systems for reducing the sample rate of a signal without introducing aliasing distortion. Conceptually, the functions are equivalent to the block diagram below:

+
+FIRDecimator.gif +

Components included in the FIR Decimator functions

+

When decimating by a factor of M, the signal should be prefiltered by a lowpass filter with a normalized cutoff frequency of 1/M in order to prevent aliasing distortion. The user of the function is responsible for providing the filter coefficients.

+

The FIR decimator functions provided in the CMSIS DSP Library combine the FIR filter and the decimator in an efficient manner. Instead of calculating all of the FIR filter outputs and discarding M-1 out of every M, only the samples output by the decimator are computed. The functions operate on blocks of input and output data. pSrc points to an array of blockSize input values and pDst points to an array of blockSize/M output values. In order to have an integer number of output samples blockSize must always be a multiple of the decimation factor M.

+

The library provides separate functions for Q15, Q31 and floating-point data types.

+
Algorithm:
The FIR portion of the algorithm uses the standard form filter:
   
+    y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]   
+ 
where, b[n] are the filter coefficients.
+
The pCoeffs points to a coefficient array of size numTaps. Coefficients are stored in time reversed order.
+
   
+    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ 
+
pState points to a state array of size numTaps + blockSize - 1. Samples in the state buffer are stored in the order:
+
   
+    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}   
+ 
The state variables are updated after each block of data is processed, the coefficients are untouched.
+
Instance Structure
The coefficients and state variables for a filter are stored together in an instance data structure. A separate instance structure must be defined for each filter. Coefficient arrays may be shared among several instances while state variable array should be allocated separately. There are separate instance structure declarations for each of the 3 supported data types.
+
Initialization Functions
There is also an associated initialization function for each data type. The initialization function performs the following operations:
    +
  • Sets the values of the internal structure fields.
  • +
  • Zeros out the values in the state buffer.
  • +
  • Checks to make sure that the size of the input is a multiple of the decimation factor.
  • +
+
+
Use of the initialization function is optional. However, if the initialization function is used, then the instance structure cannot be placed into a const data section. To place an instance structure into a const data section, the instance structure must be manually initialized. The code below statically initializes each of the 3 different data type filter instance structures
   
+arm_fir_decimate_instance_f32 S = {M, numTaps, pCoeffs, pState};   
+arm_fir_decimate_instance_q31 S = {M, numTaps, pCoeffs, pState};   
+arm_fir_decimate_instance_q15 S = {M, numTaps, pCoeffs, pState};   
+ 
where M is the decimation factor; numTaps is the number of filter coefficients in the filter; pCoeffs is the address of the coefficient buffer; pState is the address of the state buffer. Be sure to set the values in the state buffer to zeros when doing static initialization.
+
Fixed-Point Behavior
Care must be taken when using the fixed-point versions of the FIR decimate filter functions. In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. Refer to the function specific documentation below for usage guidelines.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_fir_decimate_init_f32 (arm_fir_decimate_instance_f32 S,
uint16_t  numTaps,
uint8_t  M,
float32_t pCoeffs,
float32_t pState,
uint32_t  blockSize 
)
+
+
+ +

Initialization function for the floating-point FIR decimator.

+
Parameters:
+ + + + + + + +
[in,out]*Spoints to an instance of the floating-point FIR decimator structure.
[in]numTapsnumber of coefficients in the filter.
[in]Mdecimation factor.
[in]*pCoeffspoints to the filter coefficients.
[in]*pStatepoints to the state buffer.
[in]blockSizenumber of input samples to process per call.
+
+
+
Returns:
The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if blockSize is not a multiple of M.
+

Description:

+
pCoeffs points to the array of filter coefficients stored in time reversed order:
   
+    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ 
+
pState points to the array of state variables. pState is of length numTaps+blockSize-1 words where blockSize is the number of input samples passed to arm_fir_decimate_f32(). M is the decimation factor.
+ +

Definition at line 67 of file arm_fir_decimate_init_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_decimate_f32 (const arm_fir_decimate_instance_f32 S,
float32_t pSrc,
float32_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the floating-point FIR decimator.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the floating-point FIR decimator structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data.
[in]blockSizenumber of input samples to process per call.
+
+
+
Returns:
none.
+ +

Definition at line 132 of file arm_fir_decimate_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_fir_decimate_init_q31 (arm_fir_decimate_instance_q31 S,
uint16_t  numTaps,
uint8_t  M,
q31_t pCoeffs,
q31_t pState,
uint32_t  blockSize 
)
+
+
+ +

Initialization function for the Q31 FIR decimator.

+
Parameters:
+ + + + + + + +
[in,out]*Spoints to an instance of the Q31 FIR decimator structure.
[in]numTapsnumber of coefficients in the filter.
[in]Mdecimation factor.
[in]*pCoeffspoints to the filter coefficients.
[in]*pStatepoints to the state buffer.
[in]blockSizenumber of input samples to process per call.
+
+
+
Returns:
The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if blockSize is not a multiple of M.
+

Description:

+
pCoeffs points to the array of filter coefficients stored in time reversed order:
   
+    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ 
+
pState points to the array of state variables. pState is of length numTaps+blockSize-1 words where blockSize is the number of input samples passed to arm_fir_decimate_q31(). M is the decimation factor.
+ +

Definition at line 67 of file arm_fir_decimate_init_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_decimate_q31 (const arm_fir_decimate_instance_q31 S,
q31_t pSrc,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the Q31 FIR decimator.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q31 FIR decimator structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data
[in]blockSizenumber of input samples to process per call.
+
+
+
Returns:
none
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 64-bit accumulator. The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. Thus, if the accumulator result overflows it wraps around rather than clip. In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits (where log2 is read as log to the base 2). After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format.
+
Refer to the function arm_fir_decimate_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4.
+ +

Definition at line 64 of file arm_fir_decimate_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_decimate_fast_q31 (arm_fir_decimate_instance_q31 S,
q31_t pSrc,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q31 FIR decimator structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data
[in]blockSizenumber of input samples to process per call.
+
+
+
Returns:
none
+

Scaling and Overflow Behavior:

+
This function is optimized for speed at the expense of fixed-point precision and overflow protection. The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. These intermediate results are added to a 2.30 accumulator. Finally, the accumulator is saturated and converted to a 1.31 result. The fast version has the same overflow behavior as the standard version and provides less precision since it discards the low 32 bits of each multiplication result. In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits (where log2 is read as log to the base 2).
+
Refer to the function arm_fir_decimate_q31() for a slower implementation of this function which uses a 64-bit accumulator to provide higher precision. Both the slow and the fast versions use the same instance structure. Use the function arm_fir_decimate_init_q31() to initialize the filter structure.
+ +

Definition at line 65 of file arm_fir_decimate_fast_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_fir_decimate_init_q15 (arm_fir_decimate_instance_q15 S,
uint16_t  numTaps,
uint8_t  M,
q15_t pCoeffs,
q15_t pState,
uint32_t  blockSize 
)
+
+
+ +

Initialization function for the Q15 FIR decimator.

+
Parameters:
+ + + + + + + +
[in,out]*Spoints to an instance of the Q15 FIR decimator structure.
[in]numTapsnumber of coefficients in the filter.
[in]Mdecimation factor.
[in]*pCoeffspoints to the filter coefficients.
[in]*pStatepoints to the state buffer.
[in]blockSizenumber of input samples to process per call.
+
+
+
Returns:
The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if blockSize is not a multiple of M.
+

Description:

+
pCoeffs points to the array of filter coefficients stored in time reversed order:
   
+    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ 
+
pState points to the array of state variables. pState is of length numTaps+blockSize-1 words where blockSize is the number of input samples to the call arm_fir_decimate_q15(). M is the decimation factor.
+ +

Definition at line 68 of file arm_fir_decimate_init_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_decimate_q15 (const arm_fir_decimate_instance_q15 S,
q15_t pSrc,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the Q15 FIR decimator.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q15 FIR decimator structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the location where the output result is written.
[in]blockSizenumber of input samples to process per call.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 64-bit internal accumulator. Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. Lastly, the accumulator is saturated to yield a result in 1.15 format.
+
Refer to the function arm_fir_decimate_fast_q15() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4.
+ +

Definition at line 65 of file arm_fir_decimate_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fir_decimate_fast_q15 (const arm_fir_decimate_instance_q15 S,
q15_t pSrc,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q15 FIR decimator structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data
[in]blockSizenumber of input samples to process per call.
+
+
+
Returns:
none
+

Scaling and Overflow Behavior:

+
This fast version uses a 32-bit accumulator with 2.30 format. The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit. Thus, if the accumulator result overflows it wraps around and distorts the result. In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits (log2 is read as log to the base 2). The 2.30 accumulator is then truncated to 2.15 format and saturated to yield the 1.15 result.
+
Refer to the function arm_fir_decimate_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion. Both the slow and the fast versions use the same instance structure. Use the function arm_fir_decimate_init_q15() to initialize the filter structure.
+ +

Definition at line 63 of file arm_fir_decimate_fast_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___f_i_r_l_p_f.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___f_i_r_l_p_f.html new file mode 100644 index 000000000..8d3f3217a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___f_i_r_l_p_f.html @@ -0,0 +1,121 @@ + + + + +CMSIS DSP Software Library: FIR Lowpass Filter Example + + + + + + + + + +
+
+

FIR Lowpass Filter Example
+ +[Examples] +

+
+
+ +
+
Description:
+
Removes high frequency signal components from the input using an FIR lowpass filter. The example demonstrates how to configure an FIR filter and then pass data through it in a block-by-block fashion.
+FIRLPF_signalflow.gif +
+
+
Algorithm:
+
The input signal is a sum of two sine waves: 1 kHz and 15 kHz. This is processed by an FIR lowpass filter with cutoff frequency 6 kHz. The lowpass filter eliminates the 15 kHz signal leaving only the 1 kHz sine wave at the output.
+
The lowpass filter was designed using MATLAB with a sample rate of 48 kHz and a length of 29 points. The MATLAB code to generate the filter coefficients is shown below:
+     h = fir1(28, 6/24);
+ 
The first argument is the "order" of the filter and is always one less than the desired length. The second argument is the normalized cutoff frequency. This is in the range 0 (DC) to 1.0 (Nyquist). A 6 kHz cutoff with a Nyquist frequency of 24 kHz lies at a normalized frequency of 6/24 = 0.25. The CMSIS FIR filter function requires the coefficients to be in time reversed order.
+     fliplr(h)
+ 
The resulting filter coefficients and are shown below. Note that the filter is symmetric (a property of linear phase FIR filters) and the point of symmetry is sample 14. Thus the filter will have a delay of 14 samples for all frequencies.
+
+FIRLPF_coeffs.gif +
+
+
The frequency response of the filter is shown next. The passband gain of the filter is 1.0 and it reaches 0.5 at the cutoff frequency 6 kHz.
+
+FIRLPF_response.gif +
+
+
The input signal is shown below. The left hand side shows the signal in the time domain while the right hand side is a frequency domain representation. The two sine wave components can be clearly seen.
+
+FIRLPF_input.gif +
+
+
The output of the filter is shown below. The 15 kHz component has been eliminated.
+
+FIRLPF_output.gif +
+
+
Variables Description:
+
    +
  • testInput_f32_1kHz_15kHz points to the input data
  • +
  • refOutput points to the reference output data
  • +
  • testOutput points to the test output data
  • +
  • firStateF32 points to state buffer
  • +
  • firCoeffs32 points to coefficient buffer
  • +
  • blockSize number of samples processed at a time
  • +
  • numBlocks number of frames
  • +
+
+
CMSIS DSP Software Library Functions Used:
+
+
+

Refer arm_fir_example_f32.c

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___fill.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___fill.html new file mode 100644 index 000000000..cf67b44f7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___fill.html @@ -0,0 +1,271 @@ + + + + +CMSIS DSP Software Library: Vector Fill + + + + + + + + + +
+ +
+

Vector Fill
+ +[Support Functions] +

+
+
+ + + + + + +

+Functions

void arm_fill_f32 (float32_t value, float32_t *pDst, uint32_t blockSize)
void arm_fill_q31 (q31_t value, q31_t *pDst, uint32_t blockSize)
void arm_fill_q15 (q15_t value, q15_t *pDst, uint32_t blockSize)
void arm_fill_q7 (q7_t value, q7_t *pDst, uint32_t blockSize)
+

Detailed Description

+

Fills the destination vector with a constant value.

+
   
+ 	pDst[n] = value;   0 <= n < blockSize.   
+ 

There are separate functions for floating point, Q31, Q15, and Q7 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fill_f32 (float32_t  value,
float32_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Fills a constant value into a floating-point vector.

+
Parameters:
+ + + + +
[in]valueinput value to be filled
[out]*pDstpoints to output vector
[in]blockSizelength of the output vector
+
+
+
Returns:
none.
+
Examples:
arm_convolution_example_f32.c, and arm_variance_example_f32.c.
+
+

Definition at line 66 of file arm_fill_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fill_q31 (q31_t  value,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Fills a constant value into a Q31 vector.

+
Parameters:
+ + + + +
[in]valueinput value to be filled
[out]*pDstpoints to output vector
[in]blockSizelength of the output vector
+
+
+
Returns:
none.
+ +

Definition at line 53 of file arm_fill_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fill_q15 (q15_t  value,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Fills a constant value into a Q15 vector.

+
Parameters:
+ + + + +
[in]valueinput value to be filled
[out]*pDstpoints to output vector
[in]blockSizelength of the output vector
+
+
+
Returns:
none.
+ +

Definition at line 53 of file arm_fill_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_fill_q7 (q7_t  value,
q7_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Fills a constant value into a Q7 vector.

+
Parameters:
+ + + + +
[in]valueinput value to be filled
[out]*pDstpoints to output vector
[in]blockSizelength of the output vector
+
+
+
Returns:
none.
+ +

Definition at line 53 of file arm_fill_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___frequency_bin.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___frequency_bin.html new file mode 100644 index 000000000..63e11d8e4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___frequency_bin.html @@ -0,0 +1,108 @@ + + + + +CMSIS DSP Software Library: Frequency Bin Example + + + + + + + + + +
+
+

Frequency Bin Example
+ +[Examples] +

+
+
+ +
+
Description
+
Demonstrates the calculation of the maximum energy bin in the frequency domain of the input signal with the use of Complex FFT, Complex Magnitude, and Maximum functions.
+
Algorithm:
+
The input test signal contains a 10 kHz signal with uniformly distributed white noise. Calculating the FFT of the input signal will give us the maximum energy of the bin corresponding to the input frequency of 10 kHz.
+
Block Diagram:
+FFTBin.gif +

Block Diagram

+
+
The figure below shows the time domain signal of 10 kHz signal with uniformly distributed white noise, and the next figure shows the input in the frequency domain. The bin with maximum energy corresponds to 10 kHz signal.
+
+FFTBinInput.gif +

Input signal in Time domain

+
+FFTBinOutput.gif +

Input signal in Frequency domain

+
+
Variables Description:
+
    +
  • testInput_f32_10khz points to the input data
  • +
  • testOutput points to the output data
  • +
  • fftSize length of FFT
  • +
  • ifftFlag flag for the selection of CFFT/CIFFT
  • +
  • doBitReverse Flag for selection of normal order or bit reversed order
  • +
  • refIndex reference index value at which maximum energy of bin ocuurs
  • +
  • testIndex calculated index value at which maximum energy of bin ocuurs
  • +
+
+
CMSIS DSP Software Library Functions Used:
+
+
+

Refer arm_fft_bin_example_f32.c

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___g_e_q5_band.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___g_e_q5_band.html new file mode 100644 index 000000000..e515aa945 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___g_e_q5_band.html @@ -0,0 +1,130 @@ + + + + +CMSIS DSP Software Library: Graphic Audio Equalizer Example + + + + + + + + + +
+
+

Graphic Audio Equalizer Example
+ +[Examples] +

+
+
+ +
+
Description:
+
This example demonstrates how a 5-band graphic equalizer can be constructed using the Biquad cascade functions. A graphic equalizer is used in audio applications to vary the tonal quality of the audio.
+
Block Diagram:
+
The design is based on a cascade of 5 filter sections.
+GEQ_signalflow.gif +
+ Each filter section is 4th order and consists of a cascade of two Biquads. Each filter has a nominal gain of 0 dB (1.0 in linear units) and boosts or cuts signals within a specific frequency range. The edge frequencies between the 5 bands are 100, 500, 2000, and 6000 Hz. Each band has an adjustable boost or cut in the range of +/- 9 dB. For example, the band that extends from 500 to 2000 Hz has the response shown below:
+
+GEQ_bandresponse.gif +
+
+
With 1 dB steps, each filter has a total of 19 different settings. The filter coefficients for all possible 19 settings were precomputed in MATLAB and stored in a table. With 5 different tables, there are a total of 5 x 19 = 95 different 4th order filters. All 95 responses are shown below:
+
+GEQ_allbandresponse.gif +
+
+
Each 4th order filter has 10 coefficents for a grand total of 950 different filter coefficients that must be tabulated. The input and output data is in Q31 format. For better noise performance, the two low frequency bands are implemented using the high precision 32x64-bit Biquad filters. The remaining 3 high frequency bands use standard 32x32-bit Biquad filters. The input signal used in the example is a logarithmic chirp.
+
+GEQ_inputchirp.gif +
+
+
The array bandGains specifies the gain in dB to apply in each band. For example, if bandGains={0, -3, 6, 4, -6}; then the output signal will be:
+
+GEQ_outputchirp.gif +
+
+
+
Note:
The output chirp signal follows the gain or boost of each band.
+
+
Variables Description:
+
    +
  • testInput_f32 points to the input data
  • +
  • testRefOutput_f32 points to the reference output data
  • +
  • testOutput points to the test output data
  • +
  • inputQ31 temporary input buffer
  • +
  • outputQ31 temporary output buffer
  • +
  • biquadStateBand1Q31 points to state buffer for band1
  • +
  • biquadStateBand2Q31 points to state buffer for band2
  • +
  • biquadStateBand3Q31 points to state buffer for band3
  • +
  • biquadStateBand4Q31 points to state buffer for band4
  • +
  • biquadStateBand5Q31 points to state buffer for band5
  • +
  • coeffTable points to coefficient buffer for all bands
  • +
  • gainDB gain buffer which has gains applied for all the bands
  • +
+
+
CMSIS DSP Software Library Functions Used:
+
+
+

Refer arm_graphic_equalizer_example_q31.c

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___i_i_r___lattice.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___i_i_r___lattice.html new file mode 100644 index 000000000..085ffb4e0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___i_i_r___lattice.html @@ -0,0 +1,478 @@ + + + + +CMSIS DSP Software Library: Infinite Impulse Response (IIR) Lattice Filters + + + + + + + + + +
+ +
+

Infinite Impulse Response (IIR) Lattice Filters
+ +[Filtering Functions] +

+
+
+ + + + + + + + +

+Functions

void arm_iir_lattice_init_f32 (arm_iir_lattice_instance_f32 *S, uint16_t numStages, float32_t *pkCoeffs, float32_t *pvCoeffs, float32_t *pState, uint32_t blockSize)
void arm_iir_lattice_f32 (const arm_iir_lattice_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
void arm_iir_lattice_init_q31 (arm_iir_lattice_instance_q31 *S, uint16_t numStages, q31_t *pkCoeffs, q31_t *pvCoeffs, q31_t *pState, uint32_t blockSize)
void arm_iir_lattice_q31 (const arm_iir_lattice_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_iir_lattice_init_q15 (arm_iir_lattice_instance_q15 *S, uint16_t numStages, q15_t *pkCoeffs, q15_t *pvCoeffs, q15_t *pState, uint32_t blockSize)
void arm_iir_lattice_q15 (const arm_iir_lattice_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
+

Detailed Description

+

This set of functions implements lattice filters for Q15, Q31 and floating-point data types. Lattice filters are used in a variety of adaptive filter applications. The filter structure has feedforward and feedback components and the net impulse response is infinite length. The functions operate on blocks of input and output data and each call to the function processes blockSize samples through the filter. pSrc and pDst point to input and output arrays containing blockSize values.

+
Algorithm:
+IIRLattice.gif +

Infinite Impulse Response Lattice filter

+
   
+    fN(n)   =  x(n)   
+    fm-1(n) = fm(n) - km * gm-1(n-1)   for m = N, N-1, ...1   
+    gm(n)   = km * fm-1(n) + gm-1(n-1) for m = N, N-1, ...1   
+    y(n)    = vN * gN(n) + vN-1 * gN-1(n) + ...+ v0 * g0(n)   
+ 
+
pkCoeffs points to array of reflection coefficients of size numStages. Reflection coefficients are stored in time-reversed order.
+
   
+    {kN, kN-1, ....k1}   
+ 
pvCoeffs points to the array of ladder coefficients of size (numStages+1). Ladder coefficients are stored in time-reversed order.
+
   
+    {vN, vN-1, ...v0}   
+ 
pState points to a state array of size numStages + blockSize. The state variables shown in the figure above (the g values) are stored in the pState array. The state variables are updated after each block of data is processed; the coefficients are untouched.
+
Instance Structure
The coefficients and state variables for a filter are stored together in an instance data structure. A separate instance structure must be defined for each filter. Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. There are separate instance structure declarations for each of the 3 supported data types.
+
Initialization Functions
There is also an associated initialization function for each data type. The initialization function performs the following operations:
    +
  • Sets the values of the internal structure fields.
  • +
  • Zeros out the values in the state buffer.
  • +
+
+
Use of the initialization function is optional. However, if the initialization function is used, then the instance structure cannot be placed into a const data section. To place an instance structure into a const data section, the instance structure must be manually initialized. Set the values in the state buffer to zeros and then manually initialize the instance structure as follows:
   
+arm_iir_lattice_instance_f32 S = {numStages, pState, pkCoeffs, pvCoeffs};   
+arm_iir_lattice_instance_q31 S = {numStages, pState, pkCoeffs, pvCoeffs};   
+arm_iir_lattice_instance_q15 S = {numStages, pState, pkCoeffs, pvCoeffs};   
+ 
+
where numStages is the number of stages in the filter; pState points to the state buffer array; pkCoeffs points to array of the reflection coefficients; pvCoeffs points to the array of ladder coefficients.
+
Fixed-Point Behavior
Care must be taken when using the fixed-point versions of the IIR lattice filter functions. In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. Refer to the function specific documentation below for usage guidelines.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_iir_lattice_init_f32 (arm_iir_lattice_instance_f32 S,
uint16_t  numStages,
float32_t pkCoeffs,
float32_t pvCoeffs,
float32_t pState,
uint32_t  blockSize 
)
+
+
+ +

Initialization function for the floating-point IIR lattice filter.

+
Parameters:
+ + + + + + + +
[in]*Spoints to an instance of the floating-point IIR lattice structure.
[in]numStagesnumber of stages in the filter.
[in]*pkCoeffspoints to the reflection coefficient buffer. The array is of length numStages.
[in]*pvCoeffspoints to the ladder coefficient buffer. The array is of length numStages+1.
[in]*pStatepoints to the state buffer. The array is of length numStages+blockSize.
[in]blockSizenumber of samples to process.
+
+
+
Returns:
none.
+ +

Definition at line 55 of file arm_iir_lattice_init_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_iir_lattice_f32 (const arm_iir_lattice_instance_f32 S,
float32_t pSrc,
float32_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the floating-point IIR lattice filter.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the floating-point IIR lattice structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data.
[in]blockSizenumber of samples to process.
+
+
+
Returns:
none.
+ +

Definition at line 120 of file arm_iir_lattice_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_iir_lattice_init_q31 (arm_iir_lattice_instance_q31 S,
uint16_t  numStages,
q31_t pkCoeffs,
q31_t pvCoeffs,
q31_t pState,
uint32_t  blockSize 
)
+
+
+ +

Initialization function for the Q31 IIR lattice filter.

+
Parameters:
+ + + + + + + +
[in]*Spoints to an instance of the Q31 IIR lattice structure.
[in]numStagesnumber of stages in the filter.
[in]*pkCoeffspoints to the reflection coefficient buffer. The array is of length numStages.
[in]*pvCoeffspoints to the ladder coefficient buffer. The array is of length numStages+1.
[in]*pStatepoints to the state buffer. The array is of length numStages+blockSize.
[in]blockSizenumber of samples to process.
+
+
+
Returns:
none.
+ +

Definition at line 55 of file arm_iir_lattice_init_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_iir_lattice_q31 (const arm_iir_lattice_instance_q31 S,
q31_t pSrc,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the Q31 IIR lattice filter.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q31 IIR lattice structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data.
[in]blockSizenumber of samples to process.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 64-bit accumulator. The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. Thus, if the accumulator result overflows it wraps around rather than clip. In order to avoid overflows completely the input signal must be scaled down by 2*log2(numStages) bits. After all multiply-accumulates are performed, the 2.62 accumulator is saturated to 1.32 format and then truncated to 1.31 format.
+ +

Definition at line 62 of file arm_iir_lattice_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_iir_lattice_init_q15 (arm_iir_lattice_instance_q15 S,
uint16_t  numStages,
q15_t pkCoeffs,
q15_t pvCoeffs,
q15_t pState,
uint32_t  blockSize 
)
+
+
+ +

Initialization function for the Q15 IIR lattice filter.

+
Parameters:
+ + + + + + + +
[in]*Spoints to an instance of the Q15 IIR lattice structure.
[in]numStagesnumber of stages in the filter.
[in]*pkCoeffspoints to reflection coefficient buffer. The array is of length numStages.
[in]*pvCoeffspoints to ladder coefficient buffer. The array is of length numStages+1.
[in]*pStatepoints to state buffer. The array is of length numStages+blockSize.
[in]blockSizenumber of samples to process per call.
+
+
+
Returns:
none.
+ +

Definition at line 55 of file arm_iir_lattice_init_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_iir_lattice_q15 (const arm_iir_lattice_instance_q15 S,
q15_t pSrc,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Processing function for the Q15 IIR lattice filter.

+
Parameters:
+ + + + + +
[in]*Spoints to an instance of the Q15 IIR lattice structure.
[in]*pSrcpoints to the block of input data.
[out]*pDstpoints to the block of output data.
[in]blockSizenumber of samples to process.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 64-bit internal accumulator. Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. Lastly, the accumulator is saturated to yield a result in 1.15 format.
+ +

Definition at line 63 of file arm_iir_lattice_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___l_m_s.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___l_m_s.html new file mode 100644 index 000000000..1d137aadd --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___l_m_s.html @@ -0,0 +1,557 @@ + + + + +CMSIS DSP Software Library: Least Mean Square (LMS) Filters + + + + + + + + + +
+ +
+

Least Mean Square (LMS) Filters
+ +[Filtering Functions] +

+
+
+ + + + + + + + +

+Functions

void arm_lms_init_f32 (arm_lms_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, float32_t mu, uint32_t blockSize)
void arm_lms_f32 (const arm_lms_instance_f32 *S, float32_t *pSrc, float32_t *pRef, float32_t *pOut, float32_t *pErr, uint32_t blockSize)
void arm_lms_init_q31 (arm_lms_instance_q31 *S, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, q31_t mu, uint32_t blockSize, uint32_t postShift)
void arm_lms_q31 (const arm_lms_instance_q31 *S, q31_t *pSrc, q31_t *pRef, q31_t *pOut, q31_t *pErr, uint32_t blockSize)
void arm_lms_init_q15 (arm_lms_instance_q15 *S, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, q15_t mu, uint32_t blockSize, uint32_t postShift)
void arm_lms_q15 (const arm_lms_instance_q15 *S, q15_t *pSrc, q15_t *pRef, q15_t *pOut, q15_t *pErr, uint32_t blockSize)
+

Detailed Description

+

LMS filters are a class of adaptive filters that are able to "learn" an unknown transfer functions. LMS filters use a gradient descent method in which the filter coefficients are updated based on the instantaneous error signal. Adaptive filters are often used in communication systems, equalizers, and noise removal. The CMSIS DSP Library contains LMS filter functions that operate on Q15, Q31, and floating-point data types. The library also contains normalized LMS filters in which the filter coefficient adaptation is indepedent of the level of the input signal.

+

An LMS filter consists of two components as shown below. The first component is a standard transversal or FIR filter. The second component is a coefficient update mechanism. The LMS filter has two input signals. The "input" feeds the FIR filter while the "reference input" corresponds to the desired output of the FIR filter. That is, the FIR filter coefficients are updated so that the output of the FIR filter matches the reference input. The filter coefficient update mechanism is based on the difference between the FIR filter output and the reference input. This "error signal" tends towards zero as the filter adapts. The LMS processing functions accept the input and reference input signals and generate the filter output and error signal.

+
+LMS.gif +

Internal structure of the Least Mean Square filter

+

The functions operate on blocks of data and each call to the function processes blockSize samples through the filter. pSrc points to input signal, pRef points to reference signal, pOut points to output signal and pErr points to error signal. All arrays contain blockSize values.

+

The functions operate on a block-by-block basis. Internally, the filter coefficients b[n] are updated on a sample-by-sample basis. The convergence of the LMS filter is slower compared to the normalized LMS algorithm.

+
Algorithm:
The output signal y[n] is computed by a standard FIR filter:
   
+     y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]   
+ 
+
The error signal equals the difference between the reference signal d[n] and the filter output:
   
+     e[n] = d[n] - y[n].   
+ 
+
After each sample of the error signal is computed, the filter coefficients b[k] are updated on a sample-by-sample basis:
   
+     b[k] = b[k] + e[n] * mu * x[n-k],  for k=0, 1, ..., numTaps-1   
+ 
where mu is the step size and controls the rate of coefficient convergence.
+
In the APIs, pCoeffs points to a coefficient array of size numTaps. Coefficients are stored in time reversed order.
+
   
+    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ 
+
pState points to a state array of size numTaps + blockSize - 1. Samples in the state buffer are stored in the order:
+
   
+    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}   
+ 
+
Note that the length of the state buffer exceeds the length of the coefficient array by blockSize-1 samples. The increased state buffer length allows circular addressing, which is traditionally used in FIR filters, to be avoided and yields a significant speed improvement. The state variables are updated after each block of data is processed.
+
Instance Structure
The coefficients and state variables for a filter are stored together in an instance data structure. A separate instance structure must be defined for each filter and coefficient and state arrays cannot be shared among instances. There are separate instance structure declarations for each of the 3 supported data types.
+
Initialization Functions
There is also an associated initialization function for each data type. The initialization function performs the following operations:
    +
  • Sets the values of the internal structure fields.
  • +
  • Zeros out the values in the state buffer.
  • +
+
+
Use of the initialization function is optional. However, if the initialization function is used, then the instance structure cannot be placed into a const data section. To place an instance structure into a const data section, the instance structure must be manually initialized. Set the values in the state buffer to zeros before static initialization. The code below statically initializes each of the 3 different data type filter instance structures
   
+    arm_lms_instance_f32 S = {numTaps, pState, pCoeffs, mu};   
+    arm_lms_instance_q31 S = {numTaps, pState, pCoeffs, mu, postShift};   
+    arm_lms_instance_q15 S = {numTaps, pState, pCoeffs, mu, postShift};   
+ 
where numTaps is the number of filter coefficients in the filter; pState is the address of the state buffer; pCoeffs is the address of the coefficient buffer; mu is the step size parameter; and postShift is the shift applied to coefficients.
+
Fixed-Point Behavior:
Care must be taken when using the Q15 and Q31 versions of the LMS filter. The following issues must be considered:
    +
  • Scaling of coefficients
  • +
  • Overflow and saturation
  • +
+
+
Scaling of Coefficients:
Filter coefficients are represented as fractional values and coefficients are restricted to lie in the range [-1 +1). The fixed-point functions have an additional scaling parameter postShift. At the output of the filter's accumulator is a shift register which shifts the result by postShift bits. This essentially scales the filter coefficients by 2^postShift and allows the filter coefficients to exceed the range [+1 -1). The value of postShift is set by the user based on the expected gain through the system being modeled.
+
Overflow and Saturation:
Overflow and saturation behavior of the fixed-point Q15 and Q31 versions are described separately as part of the function specific documentation below.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_lms_init_f32 (arm_lms_instance_f32 S,
uint16_t  numTaps,
float32_t pCoeffs,
float32_t pState,
float32_t  mu,
uint32_t  blockSize 
)
+
+
+ +

Initialization function for floating-point LMS filter.

+
Parameters:
+ + + + + + + +
[in]*Spoints to an instance of the floating-point LMS filter structure.
[in]numTapsnumber of filter coefficients.
[in]*pCoeffspoints to the coefficient buffer.
[in]*pStatepoints to state buffer.
[in]mustep size that controls filter coefficient updates.
[in]blockSizenumber of samples to process.
+
+
+
Returns:
none.
+
Description:
pCoeffs points to the array of filter coefficients stored in time reversed order:
   
+    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ 
The initial filter coefficients serve as a starting point for the adaptive filter. pState points to an array of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_lms_f32().
+ +

Definition at line 61 of file arm_lms_init_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_lms_f32 (const arm_lms_instance_f32 S,
float32_t pSrc,
float32_t pRef,
float32_t pOut,
float32_t pErr,
uint32_t  blockSize 
)
+
+
+ +

Processing function for floating-point LMS filter.

+

This function operates on floating-point data types.

+
Parameters:
+ + + + + + + +
[in]*Spoints to an instance of the floating-point LMS filter structure.
[in]*pSrcpoints to the block of input data.
[in]*pRefpoints to the block of reference data.
[out]*pOutpoints to the block of output data.
[out]*pErrpoints to the block of error data.
[in]blockSizenumber of samples to process.
+
+
+
Returns:
none.
+ +

Definition at line 170 of file arm_lms_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_lms_init_q31 (arm_lms_instance_q31 S,
uint16_t  numTaps,
q31_t pCoeffs,
q31_t pState,
q31_t  mu,
uint32_t  blockSize,
uint32_t  postShift 
)
+
+
+ +

Initialization function for Q31 LMS filter.

+
Parameters:
+ + + + + + + + +
[in]*Spoints to an instance of the Q31 LMS filter structure.
[in]numTapsnumber of filter coefficients.
[in]*pCoeffspoints to coefficient buffer.
[in]*pStatepoints to state buffer.
[in]mustep size that controls filter coefficient updates.
[in]blockSizenumber of samples to process.
[in]postShiftbit shift applied to coefficients.
+
+
+
Returns:
none.
+
Description:
pCoeffs points to the array of filter coefficients stored in time reversed order:
   
+    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ 
The initial filter coefficients serve as a starting point for the adaptive filter. pState points to an array of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_lms_q31().
+ +

Definition at line 66 of file arm_lms_init_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_lms_q31 (const arm_lms_instance_q31 S,
q31_t pSrc,
q31_t pRef,
q31_t pOut,
q31_t pErr,
uint32_t  blockSize 
)
+
+
+ +

Processing function for Q31 LMS filter.

+
Parameters:
+ + + + + + + +
[in]*Spoints to an instance of the Q15 LMS filter structure.
[in]*pSrcpoints to the block of input data.
[in]*pRefpoints to the block of reference data.
[out]*pOutpoints to the block of output data.
[out]*pErrpoints to the block of error data.
[in]blockSizenumber of samples to process.
+
+
+
Returns:
none.
+
Scaling and Overflow Behavior:
The function is implemented using an internal 64-bit accumulator. The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. Thus, if the accumulator result overflows it wraps around rather than clips. In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits. The reference signal should not be scaled down. After all multiply-accumulates are performed, the 2.62 accumulator is shifted and saturated to 1.31 format to yield the final result. The output signal and error signal are in 1.31 format.
+
In this filter, filter coefficients are updated for each sample and the updation of filter cofficients are saturted.
+ +

Definition at line 69 of file arm_lms_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_lms_init_q15 (arm_lms_instance_q15 S,
uint16_t  numTaps,
q15_t pCoeffs,
q15_t pState,
q15_t  mu,
uint32_t  blockSize,
uint32_t  postShift 
)
+
+
+ +

Initialization function for the Q15 LMS filter.

+
Parameters:
+ + + + + + + + +
[in]*Spoints to an instance of the Q15 LMS filter structure.
[in]numTapsnumber of filter coefficients.
[in]*pCoeffspoints to the coefficient buffer.
[in]*pStatepoints to the state buffer.
[in]mustep size that controls filter coefficient updates.
[in]blockSizenumber of samples to process.
[in]postShiftbit shift applied to coefficients.
+
+
+
Returns:
none.
+
Description:
pCoeffs points to the array of filter coefficients stored in time reversed order:
   
+    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ 
The initial filter coefficients serve as a starting point for the adaptive filter. pState points to the array of state variables and size of array is numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_lms_q15().
+ +

Definition at line 66 of file arm_lms_init_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_lms_q15 (const arm_lms_instance_q15 S,
q15_t pSrc,
q15_t pRef,
q15_t pOut,
q15_t pErr,
uint32_t  blockSize 
)
+
+
+ +

Processing function for Q15 LMS filter.

+
Parameters:
+ + + + + + + +
[in]*Spoints to an instance of the Q15 LMS filter structure.
[in]*pSrcpoints to the block of input data.
[in]*pRefpoints to the block of reference data.
[out]*pOutpoints to the block of output data.
[out]*pErrpoints to the block of error data.
[in]blockSizenumber of samples to process.
+
+
+
Returns:
none.
+
Scaling and Overflow Behavior:
The function is implemented using a 64-bit internal accumulator. Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. Lastly, the accumulator is saturated to yield a result in 1.15 format.
+
In this filter, filter coefficients are updated for each sample and the updation of filter cofficients are saturted.
+ +

Definition at line 66 of file arm_lms_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___l_m_s___n_o_r_m.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___l_m_s___n_o_r_m.html new file mode 100644 index 000000000..d1f6e150e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___l_m_s___n_o_r_m.html @@ -0,0 +1,560 @@ + + + + +CMSIS DSP Software Library: Normalized LMS Filters + + + + + + + + + +
+ +
+

Normalized LMS Filters
+ +[Filtering Functions] +

+
+
+ + + + + + + + +

+Functions

void arm_lms_norm_init_f32 (arm_lms_norm_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, float32_t mu, uint32_t blockSize)
void arm_lms_norm_f32 (arm_lms_norm_instance_f32 *S, float32_t *pSrc, float32_t *pRef, float32_t *pOut, float32_t *pErr, uint32_t blockSize)
void arm_lms_norm_init_q31 (arm_lms_norm_instance_q31 *S, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, q31_t mu, uint32_t blockSize, uint8_t postShift)
void arm_lms_norm_q31 (arm_lms_norm_instance_q31 *S, q31_t *pSrc, q31_t *pRef, q31_t *pOut, q31_t *pErr, uint32_t blockSize)
void arm_lms_norm_init_q15 (arm_lms_norm_instance_q15 *S, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, q15_t mu, uint32_t blockSize, uint8_t postShift)
void arm_lms_norm_q15 (arm_lms_norm_instance_q15 *S, q15_t *pSrc, q15_t *pRef, q15_t *pOut, q15_t *pErr, uint32_t blockSize)
+

Detailed Description

+

This set of functions implements a commonly used adaptive filter. It is related to the Least Mean Square (LMS) adaptive filter and includes an additional normalization factor which increases the adaptation rate of the filter. The CMSIS DSP Library contains normalized LMS filter functions that operate on Q15, Q31, and floating-point data types.

+

A normalized least mean square (NLMS) filter consists of two components as shown below. The first component is a standard transversal or FIR filter. The second component is a coefficient update mechanism. The NLMS filter has two input signals. The "input" feeds the FIR filter while the "reference input" corresponds to the desired output of the FIR filter. That is, the FIR filter coefficients are updated so that the output of the FIR filter matches the reference input. The filter coefficient update mechanism is based on the difference between the FIR filter output and the reference input. This "error signal" tends towards zero as the filter adapts. The NLMS processing functions accept the input and reference input signals and generate the filter output and error signal.

+
+LMS.gif +

Internal structure of the NLMS adaptive filter

+

The functions operate on blocks of data and each call to the function processes blockSize samples through the filter. pSrc points to input signal, pRef points to reference signal, pOut points to output signal and pErr points to error signal. All arrays contain blockSize values.

+

The functions operate on a block-by-block basis. Internally, the filter coefficients b[n] are updated on a sample-by-sample basis. The convergence of the LMS filter is slower compared to the normalized LMS algorithm.

+
Algorithm:
The output signal y[n] is computed by a standard FIR filter:
   
+     y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]   
+ 
+
The error signal equals the difference between the reference signal d[n] and the filter output:
   
+     e[n] = d[n] - y[n].   
+ 
+
After each sample of the error signal is computed the instanteous energy of the filter state variables is calculated:
   
+    E = x[n]^2 + x[n-1]^2 + ... + x[n-numTaps+1]^2.   
+ 
The filter coefficients b[k] are then updated on a sample-by-sample basis:
   
+     b[k] = b[k] + e[n] * (mu/E) * x[n-k],  for k=0, 1, ..., numTaps-1   
+ 
where mu is the step size and controls the rate of coefficient convergence.
+
In the APIs, pCoeffs points to a coefficient array of size numTaps. Coefficients are stored in time reversed order.
+
   
+    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ 
+
pState points to a state array of size numTaps + blockSize - 1. Samples in the state buffer are stored in the order:
+
   
+    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}   
+ 
+
Note that the length of the state buffer exceeds the length of the coefficient array by blockSize-1 samples. The increased state buffer length allows circular addressing, which is traditionally used in FIR filters, to be avoided and yields a significant speed improvement. The state variables are updated after each block of data is processed.
+
Instance Structure
The coefficients and state variables for a filter are stored together in an instance data structure. A separate instance structure must be defined for each filter and coefficient and state arrays cannot be shared among instances. There are separate instance structure declarations for each of the 3 supported data types.
+
Initialization Functions
There is also an associated initialization function for each data type. The initialization function performs the following operations:
    +
  • Sets the values of the internal structure fields.
  • +
  • Zeros out the values in the state buffer.
  • +
+
+
Instance structure cannot be placed into a const data section and it is recommended to use the initialization function.
+
Fixed-Point Behavior:
Care must be taken when using the Q15 and Q31 versions of the normalised LMS filter. The following issues must be considered:
    +
  • Scaling of coefficients
  • +
  • Overflow and saturation
  • +
+
+
Scaling of Coefficients:
Filter coefficients are represented as fractional values and coefficients are restricted to lie in the range [-1 +1). The fixed-point functions have an additional scaling parameter postShift. At the output of the filter's accumulator is a shift register which shifts the result by postShift bits. This essentially scales the filter coefficients by 2^postShift and allows the filter coefficients to exceed the range [+1 -1). The value of postShift is set by the user based on the expected gain through the system being modeled.
+
Overflow and Saturation:
Overflow and saturation behavior of the fixed-point Q15 and Q31 versions are described separately as part of the function specific documentation below.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_lms_norm_init_f32 (arm_lms_norm_instance_f32 S,
uint16_t  numTaps,
float32_t pCoeffs,
float32_t pState,
float32_t  mu,
uint32_t  blockSize 
)
+
+
+ +

Initialization function for floating-point normalized LMS filter.

+
Parameters:
+ + + + + + + +
[in]*Spoints to an instance of the floating-point LMS filter structure.
[in]numTapsnumber of filter coefficients.
[in]*pCoeffspoints to coefficient buffer.
[in]*pStatepoints to state buffer.
[in]mustep size that controls filter coefficient updates.
[in]blockSizenumber of samples to process.
+
+
+
Returns:
none.
+
Description:
pCoeffs points to the array of filter coefficients stored in time reversed order:
   
+    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ 
The initial filter coefficients serve as a starting point for the adaptive filter. pState points to an array of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_lms_norm_f32().
+
Examples:
arm_signal_converge_example_f32.c.
+
+

Definition at line 64 of file arm_lms_norm_init_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_lms_norm_f32 (arm_lms_norm_instance_f32 S,
float32_t pSrc,
float32_t pRef,
float32_t pOut,
float32_t pErr,
uint32_t  blockSize 
)
+
+
+ +

Processing function for floating-point normalized LMS filter.

+
Parameters:
+ + + + + + + +
[in]*Spoints to an instance of the floating-point normalized LMS filter structure.
[in]*pSrcpoints to the block of input data.
[in]*pRefpoints to the block of reference data.
[out]*pOutpoints to the block of output data.
[out]*pErrpoints to the block of error data.
[in]blockSizenumber of samples to process.
+
+
+
Returns:
none.
+
Examples:
arm_signal_converge_example_f32.c.
+
+

Definition at line 160 of file arm_lms_norm_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_lms_norm_init_q31 (arm_lms_norm_instance_q31 S,
uint16_t  numTaps,
q31_t pCoeffs,
q31_t pState,
q31_t  mu,
uint32_t  blockSize,
uint8_t  postShift 
)
+
+
+ +

Initialization function for Q31 normalized LMS filter.

+
Parameters:
+ + + + + + + + +
[in]*Spoints to an instance of the Q31 normalized LMS filter structure.
[in]numTapsnumber of filter coefficients.
[in]*pCoeffspoints to coefficient buffer.
[in]*pStatepoints to state buffer.
[in]mustep size that controls filter coefficient updates.
[in]blockSizenumber of samples to process.
[in]postShiftbit shift applied to coefficients.
+
+
+
Returns:
none.
+

Description:

+
pCoeffs points to the array of filter coefficients stored in time reversed order:
   
+    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ 
The initial filter coefficients serve as a starting point for the adaptive filter. pState points to an array of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_lms_norm_q31().
+ +

Definition at line 63 of file arm_lms_norm_init_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_lms_norm_q31 (arm_lms_norm_instance_q31 S,
q31_t pSrc,
q31_t pRef,
q31_t pOut,
q31_t pErr,
uint32_t  blockSize 
)
+
+
+ +

Processing function for Q31 normalized LMS filter.

+
Parameters:
+ + + + + + + +
[in]*Spoints to an instance of the Q31 normalized LMS filter structure.
[in]*pSrcpoints to the block of input data.
[in]*pRefpoints to the block of reference data.
[out]*pOutpoints to the block of output data.
[out]*pErrpoints to the block of error data.
[in]blockSizenumber of samples to process.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 64-bit accumulator. The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. Thus, if the accumulator result overflows it wraps around rather than clip. In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits. The reference signal should not be scaled down. After all multiply-accumulates are performed, the 2.62 accumulator is shifted and saturated to 1.31 format to yield the final result. The output signal and error signal are in 1.31 format.
+
In this filter, filter coefficients are updated for each sample and the updation of filter cofficients are saturted.
+ +

Definition at line 72 of file arm_lms_norm_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_lms_norm_init_q15 (arm_lms_norm_instance_q15 S,
uint16_t  numTaps,
q15_t pCoeffs,
q15_t pState,
q15_t  mu,
uint32_t  blockSize,
uint8_t  postShift 
)
+
+
+ +

Initialization function for Q15 normalized LMS filter.

+
Parameters:
+ + + + + + + + +
[in]*Spoints to an instance of the Q15 normalized LMS filter structure.
[in]numTapsnumber of filter coefficients.
[in]*pCoeffspoints to coefficient buffer.
[in]*pStatepoints to state buffer.
[in]mustep size that controls filter coefficient updates.
[in]blockSizenumber of samples to process.
[in]postShiftbit shift applied to coefficients.
+
+
+
Returns:
none.
+

Description:

+
pCoeffs points to the array of filter coefficients stored in time reversed order:
   
+    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}   
+ 
The initial filter coefficients serve as a starting point for the adaptive filter. pState points to the array of state variables and size of array is numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_lms_norm_q15().
+ +

Definition at line 64 of file arm_lms_norm_init_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_lms_norm_q15 (arm_lms_norm_instance_q15 S,
q15_t pSrc,
q15_t pRef,
q15_t pOut,
q15_t pErr,
uint32_t  blockSize 
)
+
+
+ +

Processing function for Q15 normalized LMS filter.

+
Parameters:
+ + + + + + + +
[in]*Spoints to an instance of the Q15 normalized LMS filter structure.
[in]*pSrcpoints to the block of input data.
[in]*pRefpoints to the block of reference data.
[out]*pOutpoints to the block of output data.
[out]*pErrpoints to the block of error data.
[in]blockSizenumber of samples to process.
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 64-bit internal accumulator. Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. Lastly, the accumulator is saturated to yield a result in 1.15 format.
+
In this filter, filter coefficients are updated for each sample and the updation of filter cofficients are saturted.
+ +

Definition at line 71 of file arm_lms_norm_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___linear_interp_example.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___linear_interp_example.html new file mode 100644 index 000000000..c3e09377d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___linear_interp_example.html @@ -0,0 +1,100 @@ + + + + +CMSIS DSP Software Library: Linear Interpolate Example + + + + + + + + + +
+
+

Linear Interpolate Example
+ +[Examples] +

+
+
+ +
+

CMSIS DSP Software Library -- Linear Interpolate Example

+

Description This example demonstrates usage of linear interpolate modules and fast math modules. Method 1 uses fast math sine function to calculate sine values using cubic interpolation and method 2 uses linear interpolation function and results are compared to reference output. Example shows linear interpolation function can be used to get higher precision compared to fast math sin calculation.

+
Block Diagram:
+
+linearInterpExampleMethod1.gif +

Method 1: Sine caluclation using fast math

+
+
+linearInterpExampleMethod2.gif +

Method 2: Sine caluclation using interpolation function

+
+
Variables Description:
+
    +
  • testInputSin_f32 points to the input values for sine calculation
  • +
  • testRefSinOutput32_f32 points to the reference values caculated from sin() matlab function
  • +
  • testOutput points to output buffer calculation from cubic interpolation
  • +
  • testLinIntOutput points to output buffer calculation from linear interpolation
  • +
  • snr1 Signal to noise ratio for reference and cubic interpolation output
  • +
  • snr2 Signal to noise ratio for reference and linear interpolation output
  • +
+
+
CMSIS DSP Software Library Functions Used:
+
+
+

Refer arm_linear_interp_example_f32.c

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___linear_interpolate.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___linear_interpolate.html new file mode 100644 index 000000000..1cd70dbdf --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___linear_interpolate.html @@ -0,0 +1,276 @@ + + + + +CMSIS DSP Software Library: Linear Interpolation + + + + + + + + + +
+ +
+

Linear Interpolation
+ +[Interpolation Functions] +

+
+
+ + + + + + +

+Functions

static __INLINE float32_t arm_linear_interp_f32 (arm_linear_interp_instance_f32 *S, float32_t x)
static __INLINE q31_t arm_linear_interp_q31 (q31_t *pYData, q31_t x, uint32_t nValues)
static __INLINE q15_t arm_linear_interp_q15 (q15_t *pYData, q31_t x, uint32_t nValues)
static __INLINE q7_t arm_linear_interp_q7 (q7_t *pYData, q31_t x, uint32_t nValues)
+

Detailed Description

+

Linear interpolation is a method of curve fitting using linear polynomials. Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line

+
+LinearInterp.gif +

Linear interpolation

+
+
A Linear Interpolate function calculates an output value(y), for the input(x) using linear interpolation of the input values x0, x1( nearest input values) and the output values y0 and y1(nearest output values)
+
Algorithm:
+       y = y0 + (x - x0) * ((y1 - y0)/(x1-x0))
+       where x0, x1 are nearest values of input x
+             y0, y1 are nearest values to output y
+ 
+
This set of functions implements Linear interpolation process for Q7, Q15, Q31, and floating-point data types. The functions operate on a single sample of data and each call to the function returns a single processed value. S points to an instance of the Linear Interpolate function data structure. x is the input sample value. The functions returns the output value.
+
if x is outside of the table boundary, Linear interpolation returns first value of the table if x is below input range and returns last value of table if x is above range.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
static __INLINE float32_t arm_linear_interp_f32 (arm_linear_interp_instance_f32 S,
float32_t  x 
) [static]
+
+
+ +

Process function for the floating-point Linear Interpolation Function.

+
Parameters:
+ + + +
[in,out]*Sis an instance of the floating-point Linear Interpolation structure
[in]xinput sample to process
+
+
+
Returns:
y processed output sample.
+
Examples:
arm_linear_interp_example_f32.c.
+
+

Definition at line 5377 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE q31_t arm_linear_interp_q31 (q31_t pYData,
q31_t  x,
uint32_t  nValues 
) [static]
+
+
+ +

Process function for the Q31 Linear Interpolation Function.

+
Parameters:
+ + + + +
[in]*pYDatapointer to Q31 Linear Interpolation table
[in]xinput sample to process
[in]nValuesnumber of table values
+
+
+
Returns:
y processed output sample.
+
Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. This function can support maximum of table size 2^12.
+ +

Definition at line 5436 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE q15_t arm_linear_interp_q15 (q15_t pYData,
q31_t  x,
uint32_t  nValues 
) [static]
+
+
+ +

Process function for the Q15 Linear Interpolation Function.

+
Parameters:
+ + + + +
[in]*pYDatapointer to Q15 Linear Interpolation table
[in]xinput sample to process
[in]nValuesnumber of table values
+
+
+
Returns:
y processed output sample.
+
Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. This function can support maximum of table size 2^12.
+ +

Definition at line 5496 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE q7_t arm_linear_interp_q7 (q7_t pYData,
q31_t  x,
uint32_t  nValues 
) [static]
+
+
+ +

Process function for the Q7 Linear Interpolation Function.

+
Parameters:
+ + + + +
[in]*pYDatapointer to Q7 Linear Interpolation table
[in]xinput sample to process
[in]nValuesnumber of table values
+
+
+
Returns:
y processed output sample.
+
Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. This function can support maximum of table size 2^12.
+ +

Definition at line 5553 of file arm_math.h.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_add.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_add.html new file mode 100644 index 000000000..6f28611c7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_add.html @@ -0,0 +1,228 @@ + + + + +CMSIS DSP Software Library: Matrix Addition + + + + + + + + + +
+ +
+

Matrix Addition
+ +[Matrix Functions] +

+
+
+ + + + + +

+Functions

arm_status arm_mat_add_f32 (const arm_matrix_instance_f32 *pSrcA, const arm_matrix_instance_f32 *pSrcB, arm_matrix_instance_f32 *pDst)
arm_status arm_mat_add_q31 (const arm_matrix_instance_q31 *pSrcA, const arm_matrix_instance_q31 *pSrcB, arm_matrix_instance_q31 *pDst)
arm_status arm_mat_add_q15 (const arm_matrix_instance_q15 *pSrcA, const arm_matrix_instance_q15 *pSrcB, arm_matrix_instance_q15 *pDst)
+

Detailed Description

+

Adds two matrices.

+
+MatrixAddition.gif +

Addition of two 3 x 3 matrices

+

The functions check to make sure that pSrcA, pSrcB, and pDst have the same number of rows and columns.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_mat_add_f32 (const arm_matrix_instance_f32 pSrcA,
const arm_matrix_instance_f32 pSrcB,
arm_matrix_instance_f32 pDst 
)
+
+
+ +

Floating-point matrix addition.

+
Parameters:
+ + + + +
[in]*pSrcApoints to the first input matrix structure
[in]*pSrcBpoints to the second input matrix structure
[out]*pDstpoints to output matrix structure
+
+
+
Returns:
The function returns either ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking.
+ +

Definition at line 68 of file arm_mat_add_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_mat_add_q31 (const arm_matrix_instance_q31 pSrcA,
const arm_matrix_instance_q31 pSrcB,
arm_matrix_instance_q31 pDst 
)
+
+
+ +

Q31 matrix addition.

+
Parameters:
+ + + + +
[in]*pSrcApoints to the first input matrix structure
[in]*pSrcBpoints to the second input matrix structure
[out]*pDstpoints to output matrix structure
+
+
+
Returns:
The function returns either ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated.
+ +

Definition at line 61 of file arm_mat_add_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_mat_add_q15 (const arm_matrix_instance_q15 pSrcA,
const arm_matrix_instance_q15 pSrcB,
arm_matrix_instance_q15 pDst 
)
+
+
+ +

Q15 matrix addition.

+
Parameters:
+ + + + +
[in]*pSrcApoints to the first input matrix structure
[in]*pSrcBpoints to the second input matrix structure
[out]*pDstpoints to output matrix structure
+
+
+
Returns:
The function returns either ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.
+ +

Definition at line 61 of file arm_mat_add_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_example.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_example.html new file mode 100644 index 000000000..ca3c0acbd --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_example.html @@ -0,0 +1,100 @@ + + + + +CMSIS DSP Software Library: Matrix Example + + + + + + + + + +
+
+

Matrix Example
+ +[Examples] +

+
+
+ +
+
Description:
+
Demonstrates the use of Matrix Transpose, Matrix Muliplication, and Matrix Inverse functions to apply least squares fitting to input data. Least squares fitting is the procedure for finding the best-fitting curve that minimizes the sum of the squares of the offsets (least square error) from a given set of data.
+
Algorithm:
+
The linear combination of parameters considered is as follows:
+
A * X = B, where X is the unknown value and can be estimated from A & B.
+
The least squares estimate X is given by the following equation:
+
X = Inverse(AT * A) * AT * B
+
Block Diagram:
+
+matrixExample.gif +
+
+
Variables Description:
+
    +
  • A_f32 input matrix in the linear combination equation
  • +
  • B_f32 output matrix in the linear combination equation
  • +
  • X_f32 unknown matrix estimated using A_f32 & B_f32 matrices
  • +
+
+
CMSIS DSP Software Library Functions Used:
+
+
+

Refer arm_matrix_example_f32.c

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_init.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_init.html new file mode 100644 index 000000000..044685d25 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_init.html @@ -0,0 +1,242 @@ + + + + +CMSIS DSP Software Library: Matrix Initialization + + + + + + + + + +
+ +
+

Matrix Initialization
+ +[Matrix Functions] +

+
+
+ + + + + +

+Functions

void arm_mat_init_f32 (arm_matrix_instance_f32 *S, uint16_t nRows, uint16_t nColumns, float32_t *pData)
void arm_mat_init_q31 (arm_matrix_instance_q31 *S, uint16_t nRows, uint16_t nColumns, q31_t *pData)
void arm_mat_init_q15 (arm_matrix_instance_q15 *S, uint16_t nRows, uint16_t nColumns, q15_t *pData)
+

Detailed Description

+

Initializes the underlying matrix data structure. The functions set the numRows, numCols, and pData fields of the matrix data structure.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_mat_init_f32 (arm_matrix_instance_f32 S,
uint16_t  nRows,
uint16_t  nColumns,
float32_t pData 
)
+
+
+ +

Floating-point matrix initialization.

+
Parameters:
+ + + + + +
[in,out]*Spoints to an instance of the floating-point matrix structure.
[in]nRowsnumber of rows in the matrix.
[in]nColumnsnumber of columns in the matrix.
[in]*pDatapoints to the matrix data array.
+
+
+
Returns:
none
+
Examples:
arm_class_marks_example_f32.c, and arm_matrix_example_f32.c.
+
+

Definition at line 65 of file arm_mat_init_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_mat_init_q31 (arm_matrix_instance_q31 S,
uint16_t  nRows,
uint16_t  nColumns,
q31_t pData 
)
+
+
+ +

Q31 matrix initialization.

+
Parameters:
+ + + + + +
[in,out]*Spoints to an instance of the floating-point matrix structure.
[in]nRowsnumber of rows in the matrix.
[in]nColumnsnumber of columns in the matrix.
[in]*pDatapoints to the matrix data array.
+
+
+
Returns:
none
+ +

Definition at line 61 of file arm_mat_init_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_mat_init_q15 (arm_matrix_instance_q15 S,
uint16_t  nRows,
uint16_t  nColumns,
q15_t pData 
)
+
+
+ +

Q15 matrix initialization.

+
Parameters:
+ + + + + +
[in,out]*Spoints to an instance of the floating-point matrix structure.
[in]nRowsnumber of rows in the matrix.
[in]nColumnsnumber of columns in the matrix.
[in]*pDatapoints to the matrix data array.
+
+
+
Returns:
none
+ +

Definition at line 57 of file arm_mat_init_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_inv.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_inv.html new file mode 100644 index 000000000..a8b8e4e05 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_inv.html @@ -0,0 +1,126 @@ + + + + +CMSIS DSP Software Library: Matrix Inverse + + + + + + + + + +
+ +
+

Matrix Inverse
+ +[Matrix Functions] +

+
+
+ + + +

+Functions

arm_status arm_mat_inverse_f32 (const arm_matrix_instance_f32 *pSrc, arm_matrix_instance_f32 *pDst)
+

Detailed Description

+

Computes the inverse of a matrix.

+

The inverse is defined only if the input matrix is square and non-singular (the determinant is non-zero). The function checks that the input and output matrices are square and of the same size.

+

Matrix inversion is numerically sensitive and the CMSIS DSP library only supports matrix inversion of floating-point matrices.

+
Algorithm
The Gauss-Jordan method is used to find the inverse. The algorithm performs a sequence of elementary row-operations till it reduces the input matrix to an identity matrix. Applying the same sequence of elementary row-operations to an identity matrix yields the inverse matrix. If the input matrix is singular, then the algorithm terminates and returns error status ARM_MATH_SINGULAR.
+MatrixInverse.gif +

Matrix Inverse of a 3 x 3 matrix using Gauss-Jordan Method

+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
arm_status arm_mat_inverse_f32 (const arm_matrix_instance_f32 pSrc,
arm_matrix_instance_f32 pDst 
)
+
+
+ +

Floating-point matrix inverse.

+
Parameters:
+ + + +
[in]*pSrcpoints to input matrix structure
[out]*pDstpoints to output matrix structure
+
+
+
Returns:
The function returns ARM_MATH_SIZE_MISMATCH if the input matrix is not square or if the size of the output matrix does not match the size of the input matrix. If the input matrix is found to be singular (non-invertible), then the function returns ARM_MATH_SINGULAR. Otherwise, the function returns ARM_MATH_SUCCESS.
+
Examples:
arm_matrix_example_f32.c.
+
+

Definition at line 74 of file arm_mat_inverse_f32.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_mult.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_mult.html new file mode 100644 index 000000000..5b5cab263 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_mult.html @@ -0,0 +1,347 @@ + + + + +CMSIS DSP Software Library: Matrix Multiplication + + + + + + + + + +
+ +
+

Matrix Multiplication
+ +[Matrix Functions] +

+
+
+ + + + + + + +

+Functions

arm_status arm_mat_mult_f32 (const arm_matrix_instance_f32 *pSrcA, const arm_matrix_instance_f32 *pSrcB, arm_matrix_instance_f32 *pDst)
arm_status arm_mat_mult_q31 (const arm_matrix_instance_q31 *pSrcA, const arm_matrix_instance_q31 *pSrcB, arm_matrix_instance_q31 *pDst)
arm_status arm_mat_mult_fast_q31 (const arm_matrix_instance_q31 *pSrcA, const arm_matrix_instance_q31 *pSrcB, arm_matrix_instance_q31 *pDst)
arm_status arm_mat_mult_q15 (const arm_matrix_instance_q15 *pSrcA, const arm_matrix_instance_q15 *pSrcB, arm_matrix_instance_q15 *pDst, q15_t *pState)
arm_status arm_mat_mult_fast_q15 (const arm_matrix_instance_q15 *pSrcA, const arm_matrix_instance_q15 *pSrcB, arm_matrix_instance_q15 *pDst, q15_t *pState)
+

Detailed Description

+

Multiplies two matrices.

+
+MatrixMultiplication.gif +

Multiplication of two 3 x 3 matrices

+

Matrix multiplication is only defined if the number of columns of the first matrix equals the number of rows of the second matrix. Multiplying an M x N matrix with an N x P matrix results in an M x P matrix. When matrix size checking is enabled, the functions check: (1) that the inner dimensions of pSrcA and pSrcB are equal; and (2) that the size of the output matrix equals the outer dimensions of pSrcA and pSrcB.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_mat_mult_f32 (const arm_matrix_instance_f32 pSrcA,
const arm_matrix_instance_f32 pSrcB,
arm_matrix_instance_f32 pDst 
)
+
+
+ +

Floating-point matrix multiplication.

+
Parameters:
+ + + + +
[in]*pSrcApoints to the first input matrix structure
[in]*pSrcBpoints to the second input matrix structure
[out]*pDstpoints to output matrix structure
+
+
+
Returns:
The function returns either ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking.
+
Examples:
arm_class_marks_example_f32.c, and arm_matrix_example_f32.c.
+
+

Definition at line 73 of file arm_mat_mult_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_mat_mult_q31 (const arm_matrix_instance_q31 pSrcA,
const arm_matrix_instance_q31 pSrcB,
arm_matrix_instance_q31 pDst 
)
+
+
+ +

Q31 matrix multiplication.

+
Parameters:
+ + + + +
[in]*pSrcApoints to the first input matrix structure
[in]*pSrcBpoints to the second input matrix structure
[out]*pDstpoints to output matrix structure
+
+
+
Returns:
The function returns either ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 64-bit accumulator. The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. There is no saturation on intermediate additions. Thus, if the accumulator overflows it wraps around and distorts the result. The input signals should be scaled down to avoid intermediate overflows. The input is thus scaled down by log2(numColsA) bits to avoid overflows, as a total of numColsA additions are performed internally. The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result.
+
See arm_mat_mult_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4.
+ +

Definition at line 73 of file arm_mat_mult_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_mat_mult_fast_q31 (const arm_matrix_instance_q31 pSrcA,
const arm_matrix_instance_q31 pSrcB,
arm_matrix_instance_q31 pDst 
)
+
+
+ +

Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4.

+
Parameters:
+ + + + +
[in]*pSrcApoints to the first input matrix structure
[in]*pSrcBpoints to the second input matrix structure
[out]*pDstpoints to output matrix structure
+
+
+
Returns:
The function returns either ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking.
+

Scaling and Overflow Behavior:

+
The difference between the function arm_mat_mult_q31() and this fast variant is that the fast variant use a 32-bit rather than a 64-bit accumulator. The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. These intermediate results are accumulated in a 32-bit register in 2.30 format. Finally, the accumulator is saturated and converted to a 1.31 result.
+
The fast version has the same overflow behavior as the standard version but provides less precision since it discards the low 32 bits of each multiplication result. In order to avoid overflows completely the input signals must be scaled down. Scale down one of the input matrices by log2(numColsA) bits to avoid overflows, as a total of numColsA additions are computed internally for each output element.
+
See arm_mat_mult_q31() for a slower implementation of this function which uses 64-bit accumulation to provide higher precision.
+ +

Definition at line 72 of file arm_mat_mult_fast_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_mat_mult_q15 (const arm_matrix_instance_q15 pSrcA,
const arm_matrix_instance_q15 pSrcB,
arm_matrix_instance_q15 pDst,
q15_t pState 
)
+
+
+ +

Q15 matrix multiplication.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input matrix structure
[in]*pSrcBpoints to the second input matrix structure
[out]*pDstpoints to output matrix structure
[in]*pStatepoints to the array for storing intermediate results
+
+
+
Returns:
The function returns either ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 64-bit internal accumulator. The inputs to the multiplications are in 1.15 format and multiplications yield a 2.30 result. The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. This approach provides 33 guard bits and there is no risk of overflow. The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format.
+
Refer to arm_mat_mult_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4.
+ +

Definition at line 74 of file arm_mat_mult_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_mat_mult_fast_q15 (const arm_matrix_instance_q15 pSrcA,
const arm_matrix_instance_q15 pSrcB,
arm_matrix_instance_q15 pDst,
q15_t pState 
)
+
+
+ +

Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input matrix structure
[in]*pSrcBpoints to the second input matrix structure
[out]*pDstpoints to output matrix structure
[in]*pStatepoints to the array for storing intermediate results
+
+
+
Returns:
The function returns either ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking.
+

Scaling and Overflow Behavior:

+
The difference between the function arm_mat_mult_q15() and this fast variant is that the fast variant use a 32-bit rather than a 64-bit accumulator. The result of each 1.15 x 1.15 multiplication is truncated to 2.30 format. These intermediate results are accumulated in a 32-bit register in 2.30 format. Finally, the accumulator is saturated and converted to a 1.15 result.
+
The fast version has the same overflow behavior as the standard version but provides less precision since it discards the low 16 bits of each multiplication result. In order to avoid overflows completely the input signals must be scaled down. Scale down one of the input matrices by log2(numColsA) bits to avoid overflows, as a total of numColsA additions are computed internally for each output element.
+
See arm_mat_mult_q15() for a slower implementation of this function which uses 64-bit accumulation to provide higher precision.
+ +

Definition at line 74 of file arm_mat_mult_fast_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_scale.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_scale.html new file mode 100644 index 000000000..067dfb5a4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_scale.html @@ -0,0 +1,245 @@ + + + + +CMSIS DSP Software Library: Matrix Scale + + + + + + + + + +
+ +
+

Matrix Scale
+ +[Matrix Functions] +

+
+
+ + + + + +

+Functions

arm_status arm_mat_scale_f32 (const arm_matrix_instance_f32 *pSrc, float32_t scale, arm_matrix_instance_f32 *pDst)
arm_status arm_mat_scale_q31 (const arm_matrix_instance_q31 *pSrc, q31_t scaleFract, int32_t shift, arm_matrix_instance_q31 *pDst)
arm_status arm_mat_scale_q15 (const arm_matrix_instance_q15 *pSrc, q15_t scaleFract, int32_t shift, arm_matrix_instance_q15 *pDst)
+

Detailed Description

+

Multiplies a matrix by a scalar. This is accomplished by multiplying each element in the matrix by the scalar. For example:

+
+MatrixScale.gif +

Matrix Scaling of a 3 x 3 matrix

+

The function checks to make sure that the input and output matrices are of the same size.

+

In the fixed-point Q15 and Q31 functions, scale is represented by a fractional multiplication scaleFract and an arithmetic shift shift. The shift allows the gain of the scaling operation to exceed 1.0. The overall scale factor applied to the fixed-point data is

+
   
+     scale = scaleFract * 2^shift.   
+ 

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_mat_scale_f32 (const arm_matrix_instance_f32 pSrc,
float32_t  scale,
arm_matrix_instance_f32 pDst 
)
+
+
+ +

Floating-point matrix scaling.

+
Parameters:
+ + + + +
[in]*pSrcpoints to input matrix structure
[in]scalescale factor to be applied
[out]*pDstpoints to output matrix structure
+
+
+
Returns:
The function returns either ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking.
+ +

Definition at line 75 of file arm_mat_scale_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_mat_scale_q31 (const arm_matrix_instance_q31 pSrc,
q31_t  scaleFract,
int32_t  shift,
arm_matrix_instance_q31 pDst 
)
+
+
+ +

Q31 matrix scaling.

+
Parameters:
+ + + + + +
[in]*pSrcpoints to input matrix
[in]scaleFractfractional portion of the scale factor
[in]shiftnumber of bits to shift the result by
[out]*pDstpoints to output matrix structure
+
+
+
Returns:
The function returns either ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking.
+

Scaling and Overflow Behavior:

+
The input data *pSrc and scaleFract are in 1.31 format. These are multiplied to yield a 2.62 intermediate result and this is shifted with saturation to 1.31 format.
+ +

Definition at line 63 of file arm_mat_scale_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_mat_scale_q15 (const arm_matrix_instance_q15 pSrc,
q15_t  scaleFract,
int32_t  shift,
arm_matrix_instance_q15 pDst 
)
+
+
+ +

Q15 matrix scaling.

+
Parameters:
+ + + + + +
[in]*pSrcpoints to input matrix
[in]scaleFractfractional portion of the scale factor
[in]shiftnumber of bits to shift the result by
[out]*pDstpoints to output matrix structure
+
+
+
Returns:
The function returns either ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking.
+

Scaling and Overflow Behavior:

+
The input data *pSrc and scaleFract are in 1.15 format. These are multiplied to yield a 2.30 intermediate result and this is shifted with saturation to 1.15 format.
+ +

Definition at line 63 of file arm_mat_scale_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_sub.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_sub.html new file mode 100644 index 000000000..60f826cfa --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_sub.html @@ -0,0 +1,228 @@ + + + + +CMSIS DSP Software Library: Matrix Subtraction + + + + + + + + + +
+ +
+

Matrix Subtraction
+ +[Matrix Functions] +

+
+
+ + + + + +

+Functions

arm_status arm_mat_sub_f32 (const arm_matrix_instance_f32 *pSrcA, const arm_matrix_instance_f32 *pSrcB, arm_matrix_instance_f32 *pDst)
arm_status arm_mat_sub_q31 (const arm_matrix_instance_q31 *pSrcA, const arm_matrix_instance_q31 *pSrcB, arm_matrix_instance_q31 *pDst)
arm_status arm_mat_sub_q15 (const arm_matrix_instance_q15 *pSrcA, const arm_matrix_instance_q15 *pSrcB, arm_matrix_instance_q15 *pDst)
+

Detailed Description

+

Subtract two matrices.

+
+MatrixSubtraction.gif +

Subraction of two 3 x 3 matrices

+

The functions check to make sure that pSrcA, pSrcB, and pDst have the same number of rows and columns.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_mat_sub_f32 (const arm_matrix_instance_f32 pSrcA,
const arm_matrix_instance_f32 pSrcB,
arm_matrix_instance_f32 pDst 
)
+
+
+ +

Floating-point matrix subtraction.

+
Parameters:
+ + + + +
[in]*pSrcApoints to the first input matrix structure
[in]*pSrcBpoints to the second input matrix structure
[out]*pDstpoints to output matrix structure
+
+
+
Returns:
The function returns either ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking.
+ +

Definition at line 67 of file arm_mat_sub_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_mat_sub_q31 (const arm_matrix_instance_q31 pSrcA,
const arm_matrix_instance_q31 pSrcB,
arm_matrix_instance_q31 pDst 
)
+
+
+ +

Q31 matrix subtraction.

+
Parameters:
+ + + + +
[in]*pSrcApoints to the first input matrix structure
[in]*pSrcBpoints to the second input matrix structure
[out]*pDstpoints to output matrix structure
+
+
+
Returns:
The function returns either ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated.
+ +

Definition at line 62 of file arm_mat_sub_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_mat_sub_q15 (const arm_matrix_instance_q15 pSrcA,
const arm_matrix_instance_q15 pSrcB,
arm_matrix_instance_q15 pDst 
)
+
+
+ +

Q15 matrix subtraction.

+
Parameters:
+ + + + +
[in]*pSrcApoints to the first input matrix structure
[in]*pSrcBpoints to the second input matrix structure
[out]*pDstpoints to output matrix structure
+
+
+
Returns:
The function returns either ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.
+ +

Definition at line 61 of file arm_mat_sub_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_trans.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_trans.html new file mode 100644 index 000000000..cd505b02f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___matrix_trans.html @@ -0,0 +1,203 @@ + + + + +CMSIS DSP Software Library: Matrix Transpose + + + + + + + + + +
+ +
+

Matrix Transpose
+ +[Matrix Functions] +

+
+
+ + + + + +

+Functions

arm_status arm_mat_trans_f32 (const arm_matrix_instance_f32 *pSrc, arm_matrix_instance_f32 *pDst)
arm_status arm_mat_trans_q31 (const arm_matrix_instance_q31 *pSrc, arm_matrix_instance_q31 *pDst)
arm_status arm_mat_trans_q15 (const arm_matrix_instance_q15 *pSrc, arm_matrix_instance_q15 *pDst)
+

Detailed Description

+

Tranposes a matrix. Transposing an M x N matrix flips it around the center diagonal and results in an N x M matrix.

+
+MatrixTranspose.gif +

Transpose of a 3 x 3 matrix

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
arm_status arm_mat_trans_f32 (const arm_matrix_instance_f32 pSrc,
arm_matrix_instance_f32 pDst 
)
+
+
+ +

Floating-point matrix transpose.

+
Parameters:
+ + + +
[in]*pSrcpoints to the input matrix
[out]*pDstpoints to the output matrix
+
+
+
Returns:
The function returns either ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking.
+
Examples:
arm_matrix_example_f32.c.
+
+

Definition at line 64 of file arm_mat_trans_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
arm_status arm_mat_trans_q31 (const arm_matrix_instance_q31 pSrc,
arm_matrix_instance_q31 pDst 
)
+
+
+ +

Q31 matrix transpose.

+
Parameters:
+ + + +
[in]*pSrcpoints to the input matrix
[out]*pDstpoints to the output matrix
+
+
+
Returns:
The function returns either ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking.
+ +

Definition at line 55 of file arm_mat_trans_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
arm_status arm_mat_trans_q15 (const arm_matrix_instance_q15 pSrc,
arm_matrix_instance_q15 pDst 
)
+
+
+ +

Q15 matrix transpose.

+
Parameters:
+ + + +
[in]*pSrcpoints to the input matrix
[out]*pDstpoints to the output matrix
+
+
+
Returns:
The function returns either ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking.
+ +

Definition at line 55 of file arm_mat_trans_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___max.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___max.html new file mode 100644 index 000000000..4596fccd3 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___max.html @@ -0,0 +1,296 @@ + + + + +CMSIS DSP Software Library: Maximum + + + + + + + + + +
+ +
+

Maximum
+ +[Statistics Functions] +

+
+
+ + + + + + +

+Functions

void arm_max_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult, uint32_t *pIndex)
void arm_max_q31 (q31_t *pSrc, uint32_t blockSize, q31_t *pResult, uint32_t *pIndex)
void arm_max_q15 (q15_t *pSrc, uint32_t blockSize, q15_t *pResult, uint32_t *pIndex)
void arm_max_q7 (q7_t *pSrc, uint32_t blockSize, q7_t *pResult, uint32_t *pIndex)
+

Detailed Description

+

Computes the maximum value of an array of data. The function returns both the maximum value and its position within the array. There are separate functions for floating-point, Q31, Q15, and Q7 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_max_f32 (float32_t pSrc,
uint32_t  blockSize,
float32_t pResult,
uint32_t *  pIndex 
)
+
+
+ +

Maximum value of a floating-point vector.

+
Parameters:
+ + + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultmaximum value returned here
[out]*pIndexindex of maximum value returned here
+
+
+
Returns:
none.
+
Examples:
arm_class_marks_example_f32.c, and arm_fft_bin_example_f32.c.
+
+

Definition at line 59 of file arm_max_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_max_q31 (q31_t pSrc,
uint32_t  blockSize,
q31_t pResult,
uint32_t *  pIndex 
)
+
+
+ +

Maximum value of a Q31 vector.

+
Parameters:
+ + + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultmaximum value returned here
[out]*pIndexindex of maximum value returned here
+
+
+
Returns:
none.
+ +

Definition at line 51 of file arm_max_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_max_q15 (q15_t pSrc,
uint32_t  blockSize,
q15_t pResult,
uint32_t *  pIndex 
)
+
+
+ +

Maximum value of a Q15 vector.

+
Parameters:
+ + + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultmaximum value returned here
[out]*pIndexindex of maximum value returned here
+
+
+
Returns:
none.
+ +

Definition at line 51 of file arm_max_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_max_q7 (q7_t pSrc,
uint32_t  blockSize,
q7_t pResult,
uint32_t *  pIndex 
)
+
+
+ +

Maximum value of a Q7 vector.

+
Parameters:
+ + + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultmaximum value returned here
[out]*pIndexindex of maximum value returned here
+
+
+
Returns:
none.
+ +

Definition at line 51 of file arm_max_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___min.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___min.html new file mode 100644 index 000000000..93ca0138e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___min.html @@ -0,0 +1,296 @@ + + + + +CMSIS DSP Software Library: Minimum + + + + + + + + + +
+ +
+

Minimum
+ +[Statistics Functions] +

+
+
+ + + + + + +

+Functions

void arm_min_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult, uint32_t *pIndex)
void arm_min_q31 (q31_t *pSrc, uint32_t blockSize, q31_t *pResult, uint32_t *pIndex)
void arm_min_q15 (q15_t *pSrc, uint32_t blockSize, q15_t *pResult, uint32_t *pIndex)
void arm_min_q7 (q7_t *pSrc, uint32_t blockSize, q7_t *pResult, uint32_t *pIndex)
+

Detailed Description

+

Computes the minimum value of an array of data. The function returns both the minimum value and its position within the array. There are separate functions for floating-point, Q31, Q15, and Q7 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_min_f32 (float32_t pSrc,
uint32_t  blockSize,
float32_t pResult,
uint32_t *  pIndex 
)
+
+
+ +

Minimum value of a floating-point vector.

+
Parameters:
+ + + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultminimum value returned here
[out]*pIndexindex of minimum value returned here
+
+
+
Returns:
none.
+
Examples:
arm_class_marks_example_f32.c, and arm_signal_converge_example_f32.c.
+
+

Definition at line 60 of file arm_min_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_min_q31 (q31_t pSrc,
uint32_t  blockSize,
q31_t pResult,
uint32_t *  pIndex 
)
+
+
+ +

Minimum value of a Q31 vector.

+
Parameters:
+ + + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultminimum value returned here
[out]*pIndexindex of minimum value returned here
+
+
+
Returns:
none.
+ +

Definition at line 53 of file arm_min_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_min_q15 (q15_t pSrc,
uint32_t  blockSize,
q15_t pResult,
uint32_t *  pIndex 
)
+
+
+ +

Minimum value of a Q15 vector.

+
Parameters:
+ + + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultminimum value returned here
[out]*pIndexindex of minimum value returned here
+
+
+
Returns:
none.
+ +

Definition at line 53 of file arm_min_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_min_q7 (q7_t pSrc,
uint32_t  blockSize,
q7_t pResult,
uint32_t *  pIndex 
)
+
+
+ +

Minimum value of a Q7 vector.

+
Parameters:
+ + + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultminimum value returned here
[out]*pIndexindex of minimum value returned here
+
+
+
Returns:
none.
+ +

Definition at line 52 of file arm_min_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___p_i_d.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___p_i_d.html new file mode 100644 index 000000000..209e2e1f0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___p_i_d.html @@ -0,0 +1,443 @@ + + + + +CMSIS DSP Software Library: PID Motor Control + + + + + + + + + +
+ +
+

PID Motor Control
+ +[Controller Functions] +

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

+Functions

void arm_pid_reset_f32 (arm_pid_instance_f32 *S)
void arm_pid_init_f32 (arm_pid_instance_f32 *S, int32_t resetStateFlag)
void arm_pid_reset_q31 (arm_pid_instance_q31 *S)
void arm_pid_init_q31 (arm_pid_instance_q31 *S, int32_t resetStateFlag)
void arm_pid_reset_q15 (arm_pid_instance_q15 *S)
void arm_pid_init_q15 (arm_pid_instance_q15 *S, int32_t resetStateFlag)
static __INLINE float32_t arm_pid_f32 (arm_pid_instance_f32 *S, float32_t in)
static __INLINE q31_t arm_pid_q31 (arm_pid_instance_q31 *S, q31_t in)
static __INLINE q15_t arm_pid_q15 (arm_pid_instance_q15 *S, q15_t in)
+

Detailed Description

+

A Proportional Integral Derivative (PID) controller is a generic feedback control loop mechanism widely used in industrial control systems. A PID controller is the most commonly used type of feedback controller.

+

This set of functions implements (PID) controllers for Q15, Q31, and floating-point data types. The functions operate on a single sample of data and each call to the function returns a single processed value. S points to an instance of the PID control data structure. in is the input sample value. The functions return the output value.

+
Algorithm:
+    y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]
+    A0 = Kp + Ki + Kd
+    A1 = (-Kp ) - (2 * Kd )
+    A2 = Kd  
+
where Kp is proportional constant, Ki is Integral constant and Kd is Derivative constant
+
+PID.gif +

Proportional Integral Derivative Controller

+
+
The PID controller calculates an "error" value as the difference between the measured output and the reference input. The controller attempts to minimize the error by adjusting the process control inputs. The proportional value determines the reaction to the current error, the integral value determines the reaction based on the sum of recent errors, and the derivative value determines the reaction based on the rate at which the error has been changing.
+
Instance Structure
The Gains A0, A1, A2 and state variables for a PID controller are stored together in an instance data structure. A separate instance structure must be defined for each PID Controller. There are separate instance structure declarations for each of the 3 supported data types.
+
Reset Functions
There is also an associated reset function for each data type which clears the state array.
+
Initialization Functions
There is also an associated initialization function for each data type. The initialization function performs the following operations:
    +
  • Initializes the Gains A0, A1, A2 from Kp,Ki, Kd gains.
  • +
  • Zeros out the values in the state buffer.
  • +
+
+
Instance structure cannot be placed into a const data section and it is recommended to use the initialization function.
+
Fixed-Point Behavior
Care must be taken when using the fixed-point versions of the PID Controller functions. In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. Refer to the function specific documentation below for usage guidelines.
+

Function Documentation

+ +
+
+ + + + + + + + +
void arm_pid_reset_f32 (arm_pid_instance_f32 S )
+
+
+ +

Reset function for the floating-point PID Control.

+
Parameters:
+ + +
[in]*SInstance pointer of PID control data structure.
+
+
+
Returns:
none.
+
Description:
The function resets the state buffer to zeros.
+ +

Definition at line 44 of file arm_pid_reset_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void arm_pid_init_f32 (arm_pid_instance_f32 S,
int32_t  resetStateFlag 
)
+
+
+ +

Initialization function for the floating-point PID Control.

+
Parameters:
+ + + +
[in,out]*Spoints to an instance of the PID structure.
[in]resetStateFlagflag to reset the state. 0 = no change in state & 1 = reset the state.
+
+
+
Returns:
none.
+
Description:
+
The resetStateFlag specifies whether to set state to zero or not.
+ The function computes the structure fields: A0, A1 A2 using the proportional gain( Kp), integral gain( Ki) and derivative gain( Kd) also sets the state variables to all zeros.
+ +

Definition at line 51 of file arm_pid_init_f32.c.

+ +
+
+ +
+
+ + + + + + + + +
void arm_pid_reset_q31 (arm_pid_instance_q31 S )
+
+
+ +

Reset function for the Q31 PID Control.

+
Parameters:
+ + +
[in]*SInstance pointer of PID control data structure.
+
+
+
Returns:
none.
+
Description:
The function resets the state buffer to zeros.
+ +

Definition at line 44 of file arm_pid_reset_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void arm_pid_init_q31 (arm_pid_instance_q31 S,
int32_t  resetStateFlag 
)
+
+
+ +

Initialization function for the Q31 PID Control.

+
Parameters:
+ + + +
[in,out]*Spoints to an instance of the Q31 PID structure.
[in]resetStateFlagflag to reset the state. 0 = no change in state 1 = reset the state.
+
+
+
Returns:
none.
+
Description:
+
The resetStateFlag specifies whether to set state to zero or not.
+ The function computes the structure fields: A0, A1 A2 using the proportional gain( Kp), integral gain( Ki) and derivative gain( Kd) also sets the state variables to all zeros.
+ +

Definition at line 50 of file arm_pid_init_q31.c.

+ +
+
+ +
+
+ + + + + + + + +
void arm_pid_reset_q15 (arm_pid_instance_q15 S )
+
+
+ +

Reset function for the Q15 PID Control.

+
Parameters:
+ + +
[in]*SInstance pointer of PID control data structure.
+
+
+
Returns:
none.
+
Description:
The function resets the state buffer to zeros.
+ +

Definition at line 44 of file arm_pid_reset_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void arm_pid_init_q15 (arm_pid_instance_q15 S,
int32_t  resetStateFlag 
)
+
+
+ +

Initialization function for the Q15 PID Control.

+
Parameters:
+ + + +
[in,out]*Spoints to an instance of the Q15 PID structure.
[in]resetStateFlagflag to reset the state. 0 = no change in state 1 = reset the state.
+
+
+
Returns:
none.
+
Description:
+
The resetStateFlag specifies whether to set state to zero or not.
+ The function computes the structure fields: A0, A1 A2 using the proportional gain( Kp), integral gain( Ki) and derivative gain( Kd) also sets the state variables to all zeros.
+ +

Definition at line 50 of file arm_pid_init_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
static __INLINE float32_t arm_pid_f32 (arm_pid_instance_f32 S,
float32_t  in 
) [static]
+
+
+ +

Process function for the floating-point PID Control.

+
Parameters:
+ + + +
[in,out]*Sis an instance of the floating-point PID Control structure
[in]ininput sample to process
+
+
+
Returns:
out processed output sample.
+ +

Definition at line 4711 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
static __INLINE q31_t arm_pid_q31 (arm_pid_instance_q31 S,
q31_t  in 
) [static]
+
+
+ +

Process function for the Q31 PID Control.

+
Parameters:
+ + + +
[in,out]*Spoints to an instance of the Q31 PID Control structure
[in]ininput sample to process
+
+
+
Returns:
out processed output sample.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 64-bit accumulator. The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. Thus, if the accumulator result overflows it wraps around rather than clip. In order to avoid overflows completely the input signal must be scaled down by 2 bits as there are four additions. After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format.
+ +

Definition at line 4746 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
static __INLINE q15_t arm_pid_q15 (arm_pid_instance_q15 S,
q15_t  in 
) [static]
+
+
+ +

Process function for the Q15 PID Control.

+
Parameters:
+ + + +
[in,out]*Spoints to an instance of the Q15 PID Control structure
[in]ininput sample to process
+
+
+
Returns:
out processed output sample.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 64-bit internal accumulator. Both Gains and state variables are represented in 1.15 format and multiplications yield a 2.30 result. The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. Lastly, the accumulator is saturated to yield a result in 1.15 format.
+ +

Definition at line 4794 of file arm_math.h.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___partial_conv.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___partial_conv.html new file mode 100644 index 000000000..e52879685 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___partial_conv.html @@ -0,0 +1,535 @@ + + + + +CMSIS DSP Software Library: Partial Convolution + + + + + + + + + +
+ +
+

Partial Convolution
+ +[Filtering Functions] +

+
+
+ + + + + + + + +

+Functions

arm_status arm_conv_partial_f32 (float32_t *pSrcA, uint32_t srcALen, float32_t *pSrcB, uint32_t srcBLen, float32_t *pDst, uint32_t firstIndex, uint32_t numPoints)
arm_status arm_conv_partial_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst, uint32_t firstIndex, uint32_t numPoints)
arm_status arm_conv_partial_fast_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst, uint32_t firstIndex, uint32_t numPoints)
arm_status arm_conv_partial_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, uint32_t firstIndex, uint32_t numPoints)
arm_status arm_conv_partial_fast_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, uint32_t firstIndex, uint32_t numPoints)
arm_status arm_conv_partial_q7 (q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst, uint32_t firstIndex, uint32_t numPoints)
+

Detailed Description

+

Partial Convolution is equivalent to Convolution except that a subset of the output samples is generated. Each function has two additional arguments. firstIndex specifies the starting index of the subset of output samples. numPoints is the number of output samples to compute. The function computes the output in the range [firstIndex, ..., firstIndex+numPoints-1]. The output array pDst contains numPoints values.

+

The allowable range of output indices is [0 srcALen+srcBLen-2]. If the requested subset does not fall in this range then the functions return ARM_MATH_ARGUMENT_ERROR. Otherwise the functions return ARM_MATH_SUCCESS.

+
Note:
Refer arm_conv_f32() for details on fixed point behavior.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_conv_partial_f32 (float32_t pSrcA,
uint32_t  srcALen,
float32_t pSrcB,
uint32_t  srcBLen,
float32_t pDst,
uint32_t  firstIndex,
uint32_t  numPoints 
)
+
+
+ +

Partial convolution of floating-point sequences.

+
Parameters:
+ + + + + + + + +
[in]*pSrcApoints to the first input sequence.
[in]srcALenlength of the first input sequence.
[in]*pSrcBpoints to the second input sequence.
[in]srcBLenlength of the second input sequence.
[out]*pDstpoints to the location where the output result is written.
[in]firstIndexis the first output sample to start with.
[in]numPointsis the number of output points to be computed.
+
+
+
Returns:
Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+ +

Definition at line 74 of file arm_conv_partial_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_conv_partial_q31 (q31_t pSrcA,
uint32_t  srcALen,
q31_t pSrcB,
uint32_t  srcBLen,
q31_t pDst,
uint32_t  firstIndex,
uint32_t  numPoints 
)
+
+
+ +

Partial convolution of Q31 sequences.

+
Parameters:
+ + + + + + + + +
[in]*pSrcApoints to the first input sequence.
[in]srcALenlength of the first input sequence.
[in]*pSrcBpoints to the second input sequence.
[in]srcBLenlength of the second input sequence.
[out]*pDstpoints to the location where the output result is written.
[in]firstIndexis the first output sample to start with.
[in]numPointsis the number of output points to be computed.
+
+
+
Returns:
Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+

See arm_conv_partial_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4.

+ +

Definition at line 59 of file arm_conv_partial_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_conv_partial_fast_q31 (q31_t pSrcA,
uint32_t  srcALen,
q31_t pSrcB,
uint32_t  srcBLen,
q31_t pDst,
uint32_t  firstIndex,
uint32_t  numPoints 
)
+
+
+ +

Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4.

+
Parameters:
+ + + + + + + + +
[in]*pSrcApoints to the first input sequence.
[in]srcALenlength of the first input sequence.
[in]*pSrcBpoints to the second input sequence.
[in]srcBLenlength of the second input sequence.
[out]*pDstpoints to the location where the output result is written.
[in]firstIndexis the first output sample to start with.
[in]numPointsis the number of output points to be computed.
+
+
+
Returns:
Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+
See arm_conv_partial_q31() for a slower implementation of this function which uses a 64-bit accumulator to provide higher precision.
+ +

Definition at line 56 of file arm_conv_partial_fast_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_conv_partial_q15 (q15_t pSrcA,
uint32_t  srcALen,
q15_t pSrcB,
uint32_t  srcBLen,
q15_t pDst,
uint32_t  firstIndex,
uint32_t  numPoints 
)
+
+
+ +

Partial convolution of Q15 sequences.

+
Parameters:
+ + + + + + + + +
[in]*pSrcApoints to the first input sequence.
[in]srcALenlength of the first input sequence.
[in]*pSrcBpoints to the second input sequence.
[in]srcBLenlength of the second input sequence.
[out]*pDstpoints to the location where the output result is written.
[in]firstIndexis the first output sample to start with.
[in]numPointsis the number of output points to be computed.
+
+
+
Returns:
Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+

Refer to arm_conv_partial_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4.

+ +

Definition at line 60 of file arm_conv_partial_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_conv_partial_fast_q15 (q15_t pSrcA,
uint32_t  srcALen,
q15_t pSrcB,
uint32_t  srcBLen,
q15_t pDst,
uint32_t  firstIndex,
uint32_t  numPoints 
)
+
+
+ +

Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.

+
Parameters:
+ + + + + + + + +
[in]*pSrcApoints to the first input sequence.
[in]srcALenlength of the first input sequence.
[in]*pSrcBpoints to the second input sequence.
[in]srcBLenlength of the second input sequence.
[out]*pDstpoints to the location where the output result is written.
[in]firstIndexis the first output sample to start with.
[in]numPointsis the number of output points to be computed.
+
+
+
Returns:
Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+

See arm_conv_partial_q15() for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion.

+ +

Definition at line 56 of file arm_conv_partial_fast_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_conv_partial_q7 (q7_t pSrcA,
uint32_t  srcALen,
q7_t pSrcB,
uint32_t  srcBLen,
q7_t pDst,
uint32_t  firstIndex,
uint32_t  numPoints 
)
+
+
+ +

Partial convolution of Q7 sequences.

+
Parameters:
+ + + + + + + + +
[in]*pSrcApoints to the first input sequence.
[in]srcALenlength of the first input sequence.
[in]*pSrcBpoints to the second input sequence.
[in]srcBLenlength of the second input sequence.
[out]*pDstpoints to the location where the output result is written.
[in]firstIndexis the first output sample to start with.
[in]numPointsis the number of output points to be computed.
+
+
+
Returns:
Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+ +

Definition at line 58 of file arm_conv_partial_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___r_f_f_t___r_i_f_f_t.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___r_f_f_t___r_i_f_f_t.html new file mode 100644 index 000000000..6ab41e5bf --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___r_f_f_t___r_i_f_f_t.html @@ -0,0 +1,611 @@ + + + + +CMSIS DSP Software Library: Real FFT Functions + + + + + + + + + +
+ +
+

Real FFT Functions
+ +[Transform Functions] +

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

+Functions

arm_status arm_rfft_init_f32 (arm_rfft_instance_f32 *S, arm_cfft_radix4_instance_f32 *S_CFFT, uint32_t fftLenReal, uint32_t ifftFlagR, uint32_t bitReverseFlag)
void arm_rfft_f32 (const arm_rfft_instance_f32 *S, float32_t *pSrc, float32_t *pDst)
arm_status arm_rfft_init_q31 (arm_rfft_instance_q31 *S, arm_cfft_radix4_instance_q31 *S_CFFT, uint32_t fftLenReal, uint32_t ifftFlagR, uint32_t bitReverseFlag)
void arm_rfft_q31 (const arm_rfft_instance_q31 *S, q31_t *pSrc, q31_t *pDst)
arm_status arm_rfft_init_q15 (arm_rfft_instance_q15 *S, arm_cfft_radix4_instance_q15 *S_CFFT, uint32_t fftLenReal, uint32_t ifftFlagR, uint32_t bitReverseFlag)
void arm_rfft_q15 (const arm_rfft_instance_q15 *S, q15_t *pSrc, q15_t *pDst)

+Variables

static const float32_t realCoefA [2048]
static const float32_t realCoefB [2048]
const q31_t realCoefAQ31 [1024]
const q31_t realCoefBQ31 [1024]
static const q15_t realCoefAQ15 [2048]
static const q15_t realCoefBQ15 [2048]
+

Detailed Description

+
Complex FFT/IFFT typically assumes complex input and output. However many applications use real valued data in time domain. Real FFT/IFFT efficiently process real valued sequences with the advantage of requirement of low memory and with less complexity.
+
This set of functions implements Real Fast Fourier Transforms(RFFT) and Real Inverse Fast Fourier Transform(RIFFT) for Q15, Q31, and floating-point data types.
+
Algorithm:
+

Real Fast Fourier Transform:

+
Real FFT of N-point is calculated using CFFT of N/2-point and Split RFFT process as shown below figure.
+
+RFFT.gif +

Real Fast Fourier Transform

+
+
The RFFT functions operate on blocks of input and output data and each call to the function processes fftLenR samples through the transform. pSrc points to input array containing fftLenR values. pDst points to output array containing 2*fftLenR values.
+ Input for real FFT is in the order of
{real[0], real[1], real[2], real[3], ..}
Output for real FFT is complex and are in the order of
{real(0), imag(0), real(1), imag(1), ...}
+

Real Inverse Fast Fourier Transform:

+
Real IFFT of N-point is calculated using Split RIFFT process and CFFT of N/2-point as shown below figure.
+
+RIFFT.gif +

Real Inverse Fast Fourier Transform

+
+
The RIFFT functions operate on blocks of input and output data and each call to the function processes 2*fftLenR samples through the transform. pSrc points to input array containing 2*fftLenR values. pDst points to output array containing fftLenR values.
+ Input for real IFFT is complex and are in the order of
{real(0), imag(0), real(1), imag(1), ...}
Output for real IFFT is real and in the order of
{real[0], real[1], real[2], real[3], ..}
+
Lengths supported by the transform:
+
Real FFT/IFFT supports the lengths [128, 512, 2048], as it internally uses CFFT/CIFFT.
+
Instance Structure
A separate instance structure must be defined for each Instance but the twiddle factors can be reused. There are separate instance structure declarations for each of the 3 supported data types.
+
Initialization Functions
There is also an associated initialization function for each data type. The initialization function performs the following operations:
    +
  • Sets the values of the internal structure fields.
  • +
  • Initializes twiddle factor tables.
  • +
  • Initializes CFFT data structure fields.
  • +
+
+
Use of the initialization function is optional. However, if the initialization function is used, then the instance structure cannot be placed into a const data section. To place an instance structure into a const data section, the instance structure must be manually initialized. Manually initialize the instance structure as follows:
   
+arm_rfft_instance_f32 S = {fftLenReal, fftLenBy2, ifftFlagR, bitReverseFlagR, twidCoefRModifier, pTwiddleAReal, pTwiddleBReal, pCfft};   
+arm_rfft_instance_q31 S = {fftLenReal, fftLenBy2, ifftFlagR, bitReverseFlagR, twidCoefRModifier, pTwiddleAReal, pTwiddleBReal, pCfft};   
+arm_rfft_instance_q15 S = {fftLenReal, fftLenBy2, ifftFlagR, bitReverseFlagR, twidCoefRModifier, pTwiddleAReal, pTwiddleBReal, pCfft};   
+ 
where fftLenReal length of RFFT/RIFFT; fftLenBy2 length of CFFT/CIFFT. ifftFlagR Flag for selection of RFFT or RIFFT(Set ifftFlagR to calculate RIFFT otherwise calculates RFFT); bitReverseFlagR Flag for selection of output order(Set bitReverseFlagR to output in normal order otherwise output in bit reversed order); twidCoefRModifier modifier for twiddle factor table which supports 128, 512, 2048 RFFT lengths with same table; pTwiddleARealpoints to A array of twiddle coefficients; pTwiddleBRealpoints to B array of twiddle coefficients; pCfft points to the CFFT Instance structure. The CFFT structure also needs to be initialized, refer to arm_cfft_radix4_f32() for details regarding static initialization of cfft structure.
+
Fixed-Point Behavior
Care must be taken when using the fixed-point versions of the RFFT/RIFFT function. Refer to the function specific documentation below for usage guidelines.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_rfft_init_f32 (arm_rfft_instance_f32 S,
arm_cfft_radix4_instance_f32 S_CFFT,
uint32_t  fftLenReal,
uint32_t  ifftFlagR,
uint32_t  bitReverseFlag 
)
+
+
+ +

Initialization function for the floating-point RFFT/RIFFT.

+
Parameters:
+ + + + + + +
[in,out]*Spoints to an instance of the floating-point RFFT/RIFFT structure.
[in,out]*S_CFFTpoints to an instance of the floating-point CFFT/CIFFT structure.
[in]fftLenReallength of the FFT.
[in]ifftFlagRflag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform.
[in]bitReverseFlagflag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.
+
+
+
Returns:
The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value.
+
Description:
+
The parameter fftLenReal Specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 128, 512, 2048.
+
The parameter ifftFlagR controls whether a forward or inverse transform is computed. Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.
+
The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.
+
This function also initializes Twiddle factor table.
+ +

Definition at line 1638 of file arm_rfft_init_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_rfft_f32 (const arm_rfft_instance_f32 S,
float32_t pSrc,
float32_t pDst 
)
+
+
+ +

Processing function for the floating-point RFFT/RIFFT.

+
Parameters:
+ + + + +
[in]*Spoints to an instance of the floating-point RFFT/RIFFT structure.
[in]*pSrcpoints to the input buffer.
[out]*pDstpoints to the output buffer.
+
+
+
Returns:
none.
+ +

Definition at line 150 of file arm_rfft_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_rfft_init_q31 (arm_rfft_instance_q31 S,
arm_cfft_radix4_instance_q31 S_CFFT,
uint32_t  fftLenReal,
uint32_t  ifftFlagR,
uint32_t  bitReverseFlag 
)
+
+
+ +

Initialization function for the Q31 RFFT/RIFFT.

+
Parameters:
+ + + + + + +
[in,out]*Spoints to an instance of the Q31 RFFT/RIFFT structure.
[in,out]*S_CFFTpoints to an instance of the Q31 CFFT/CIFFT structure.
[in]fftLenReallength of the FFT.
[in]ifftFlagRflag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform.
[in]bitReverseFlagflag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.
+
+
+
Returns:
The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value.
+
Description:
+
The parameter fftLenReal Specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 128, 512, 2048.
+
The parameter ifftFlagR controls whether a forward or inverse transform is computed. Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.
+
The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.
+
This function also initializes Twiddle factor table.
+ +

Definition at line 617 of file arm_rfft_init_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_rfft_q31 (const arm_rfft_instance_q31 S,
q31_t pSrc,
q31_t pDst 
)
+
+
+ +

Processing function for the Q31 RFFT/RIFFT.

+
Parameters:
+ + + + +
[in]*Spoints to an instance of the Q31 RFFT/RIFFT structure.
[in]*pSrcpoints to the input buffer.
[out]*pDstpoints to the output buffer.
+
+
+
Returns:
none.
+
Input an output formats:
+
Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process. Hence the output format is different for different RFFT sizes. The input and output formats for different RFFT sizes and number of bits to upscale are mentioned in the tables below for RFFT and RIFFT:
+
+RFFTQ31.gif +

Input and Output Formats for Q31 RFFT

+
+
+RIFFTQ31.gif +

Input and Output Formats for Q31 RIFFT

+
+ +

Definition at line 80 of file arm_rfft_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
arm_status arm_rfft_init_q15 (arm_rfft_instance_q15 S,
arm_cfft_radix4_instance_q15 S_CFFT,
uint32_t  fftLenReal,
uint32_t  ifftFlagR,
uint32_t  bitReverseFlag 
)
+
+
+ +

Initialization function for the Q15 RFFT/RIFFT.

+
Parameters:
+ + + + + + +
[in,out]*Spoints to an instance of the Q15 RFFT/RIFFT structure.
[in]*S_CFFTpoints to an instance of the Q15 CFFT/CIFFT structure.
[in]fftLenReallength of the FFT.
[in]ifftFlagRflag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform.
[in]bitReverseFlagflag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.
+
+
+
Returns:
The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value.
+
Description:
+
The parameter fftLenReal Specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 128, 512, 2048.
+
The parameter ifftFlagR controls whether a forward or inverse transform is computed. Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated.
+
The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order.
+
This function also initializes Twiddle factor table.
+ +

Definition at line 620 of file arm_rfft_init_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_rfft_q15 (const arm_rfft_instance_q15 S,
q15_t pSrc,
q15_t pDst 
)
+
+
+ +

Processing function for the Q15 RFFT/RIFFT.

+
Parameters:
+ + + + +
[in]*Spoints to an instance of the Q15 RFFT/RIFFT structure.
[in]*pSrcpoints to the input buffer.
[out]*pDstpoints to the output buffer.
+
+
+
Returns:
none.
+
Input an output formats:
+
Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process. Hence the output format is different for different RFFT sizes. The input and output formats for different RFFT sizes and number of bits to upscale are mentioned in the tables below for RFFT and RIFFT:
+
+RFFTQ15.gif +

Input and Output Formats for Q15 RFFT

+
+
+RIFFTQ15.gif +

Input and Output Formats for Q15 RIFFT

+
+ +

Definition at line 80 of file arm_rfft_q15.c.

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
const float32_t realCoefA[2048] [static]
+
+
+
Generation of realCoefA array:
+
n = 1024
for (i = 0; i < n; i++)   
+  {   
+    pATable[2 * i] = 0.5 * (1.0 - sin (2 * PI / (double) (2 * n) * (double) i));   
+    pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));   
+  } 
+ +

Definition at line 59 of file arm_rfft_init_f32.c.

+ +
+
+ +
+
+ + + + +
const float32_t realCoefB[2048] [static]
+
+
+
Generation of realCoefB array:
+
n = 1024
for (i = 0; i < n; i++)   
+ {   
+    pBTable[2 * i] = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));   
+    pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));   
+  } 
+ +

Definition at line 843 of file arm_rfft_init_f32.c.

+ +
+
+ +
+
+ + + + +
const q31_t realCoefAQ31[1024]
+
+
+
Generation floating point realCoefAQ31 array:
+
n = 1024
for (i = 0; i < n; i++)   
+ {   
+    pATable[2 * i] = 0.5 * (1.0 - sin (2 * PI / (double) (2 * n) * (double) i));   
+    pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));   
+ }
+
Convert to fixed point Q31 format round(pATable[i] * pow(2, 31))
+ +

Definition at line 60 of file arm_rfft_init_q31.c.

+ +
+
+ +
+
+ + + + +
const q31_t realCoefBQ31[1024]
+
+
+
Generation of realCoefBQ31 array:
+
n = 512
for (i = 0; i < n; i++)   
+ {   
+    pBTable[2 * i] = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));   
+    pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));   
+ } 
+
Convert to fixed point Q31 format round(pBTable[i] * pow(2, 31))
+ +

Definition at line 336 of file arm_rfft_init_q31.c.

+ +
+
+ +
+
+ + + + +
const q15_t realCoefAQ15[2048] [static]
+
+
+
Generation floating point real_CoefA array:
+
n = 1024
for (i = 0; i < n; i++)   
+  {   
+    pATable[2 * i] = 0.5 * (1.0 - sin (2 * PI / (double) (2 * n) * (double) i));   
+    pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));   
+  } 
+
Convert to fixed point Q15 format round(pATable[i] * pow(2, 15))
+ +

Definition at line 63 of file arm_rfft_init_q15.c.

+ +
+
+ +
+
+ + + + +
const q15_t realCoefBQ15[2048] [static]
+
+
+
Generation of real_CoefB array:
+
n = 1024
for (i = 0; i < n; i++)   
+  {   
+    pBTable[2 * i] = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));   
+    pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));   
+  } 
+
Convert to fixed point Q15 format round(pBTable[i] * pow(2, 15))
+ +

Definition at line 339 of file arm_rfft_init_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___r_m_s.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___r_m_s.html new file mode 100644 index 000000000..6597a3c87 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___r_m_s.html @@ -0,0 +1,227 @@ + + + + +CMSIS DSP Software Library: Root mean square (RMS) + + + + + + + + + +
+ +
+

Root mean square (RMS)
+ +[Statistics Functions] +

+
+
+ + + + + +

+Functions

void arm_rms_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
void arm_rms_q31 (q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
void arm_rms_q15 (q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
+

Detailed Description

+

Calculates the Root Mean Sqaure of the elements in the input vector. The underlying algorithm is used:

+
   
+ 	Result = sqrt(((pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + ... + pSrc[blockSize-1] * pSrc[blockSize-1]) / blockSize));   
+ 

There are separate functions for floating point, Q31, and Q15 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_rms_f32 (float32_t pSrc,
uint32_t  blockSize,
float32_t pResult 
)
+
+
+ +

Root Mean Square of the elements of a floating-point vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultrms value returned here
+
+
+
Returns:
none.
+ +

Definition at line 65 of file arm_rms_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_rms_q31 (q31_t pSrc,
uint32_t  blockSize,
q31_t pResult 
)
+
+
+ +

Root Mean Square of the elements of a Q31 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultrms value returned here
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 64-bit accumulator. The input is represented in 1.31 format, and intermediate multiplication yields a 2.62 format. The accumulator maintains full precision of the intermediate multiplication results, but provides only a single guard bit. There is no saturation on intermediate additions. If the accumulator overflows, it wraps around and distorts the result. In order to avoid overflows completely, the input signal must be scaled down by log2(blockSize) bits, as a total of blockSize additions are performed internally. Finally, the 2.62 accumulator is right shifted by 31 bits to yield a 1.31 format value.
+ +

Definition at line 62 of file arm_rms_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_rms_q15 (q15_t pSrc,
uint32_t  blockSize,
q15_t pResult 
)
+
+
+ +

Root Mean Square of the elements of a Q15 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultrms value returned here
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 64-bit internal accumulator. The input is represented in 1.15 format. Intermediate multiplication yields a 2.30 format, and this result is added without saturation to a 64-bit accumulator in 34.30 format. With 33 guard bits in the accumulator, there is no risk of overflow, and the full precision of the intermediate multiplication is preserved. Finally, the 34.30 result is truncated to 34.15 format by discarding the lower 15 bits, and then saturated to yield a result in 1.15 format.
+ +

Definition at line 59 of file arm_rms_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___s_q_r_t.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___s_q_r_t.html new file mode 100644 index 000000000..5805eea24 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___s_q_r_t.html @@ -0,0 +1,205 @@ + + + + +CMSIS DSP Software Library: Square Root + + + + + + + + + +
+ +
+

Square Root
+ +[Fast Math Functions] +

+
+
+ + + + + +

+Functions

arm_status arm_sqrt_q31 (q31_t in, q31_t *pOut)
arm_status arm_sqrt_q15 (q15_t in, q15_t *pOut)
static __INLINE arm_status arm_sqrt_f32 (float32_t in, float32_t *pOut)
+

Detailed Description

+

Computes the square root of a number. There are separate functions for Q15, Q31, and floating-point data types. The square root function is computed using the Newton-Raphson algorithm. This is an iterative algorithm of the form:

+
+      x1 = x0 - f(x0)/f'(x0)
+ 

where x1 is the current estimate, x0 is the previous estimate and f'(x0) is the derivative of f() evaluated at x0. For the square root function, the algorithm reduces to:

+
+     x0 = in/2                         [initial guess]
+     x1 = 1/2 * ( x0 + in / x0)        [each iteration]
+ 

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
arm_status arm_sqrt_q31 (q31_t  in,
q31_t pOut 
)
+
+
+ +

Q31 square root function.

+
Parameters:
+ + + +
[in]ininput value. The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF.
[out]*pOutsquare root of input value.
+
+
+
Returns:
The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if in is negative value and returns zero output for negative values.
+ +

Definition at line 47 of file arm_sqrt_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
arm_status arm_sqrt_q15 (q15_t  in,
q15_t pOut 
)
+
+
+ +

Q15 square root function.

+
Parameters:
+ + + +
[in]ininput value. The range of the input value is [0 +1) or 0x0000 to 0x7FFF.
[out]*pOutsquare root of input value.
+
+
+
Returns:
The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if in is negative value and returns zero output for negative values.
+ +

Definition at line 51 of file arm_sqrt_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
static __INLINE arm_status arm_sqrt_f32 (float32_t  in,
float32_t pOut 
) [static]
+
+
+ +

Floating-point square root function.

+
Parameters:
+ + + +
[in]ininput value.
[out]*pOutsquare root of input value.
+
+
+
Returns:
The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if in is negative value and returns zero output for negative values.
+ +

Definition at line 5695 of file arm_math.h.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___s_t_d.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___s_t_d.html new file mode 100644 index 000000000..9873206be --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___s_t_d.html @@ -0,0 +1,228 @@ + + + + +CMSIS DSP Software Library: Standard deviation + + + + + + + + + +
+ +
+

Standard deviation
+ +[Statistics Functions] +

+
+
+ + + + + +

+Functions

void arm_std_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
void arm_std_q31 (q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
void arm_std_q15 (q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
+

Detailed Description

+

Calculates the standard deviation of the elements in the input vector. The underlying algorithm is used:

+
   
+ 	Result = sqrt((sumOfSquares - sum2 / blockSize) / (blockSize - 1))
	   where, sumOfSquares = pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + ... + pSrc[blockSize-1] * pSrc[blockSize-1]
	                   sum = pSrc[0] + pSrc[1] + pSrc[2] + ... + pSrc[blockSize-1]  
+ 

There are separate functions for floating point, Q31, and Q15 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_std_f32 (float32_t pSrc,
uint32_t  blockSize,
float32_t pResult 
)
+
+
+ +

Standard deviation of the elements of a floating-point vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultstandard deviation value returned here
+
+
+
Returns:
none.
+
Examples:
arm_class_marks_example_f32.c.
+
+

Definition at line 69 of file arm_std_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_std_q31 (q31_t pSrc,
uint32_t  blockSize,
q31_t pResult 
)
+
+
+ +

Standard deviation of the elements of a Q31 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultstandard deviation value returned here
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 64-bit accumulator. The input is represented in 1.31 format, and intermediate multiplication yields a 2.62 format. The accumulator maintains full precision of the intermediate multiplication results, but provides only a single guard bit. There is no saturation on intermediate additions. If the accumulator overflows it wraps around and distorts the result. In order to avoid overflows completely the input signal must be scaled down by log2(blockSize) bits, as a total of blockSize additions are performed internally. Finally, the 2.62 accumulator is right shifted by 31 bits to yield a 1.31 format value.
+ +

Definition at line 66 of file arm_std_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_std_q15 (q15_t pSrc,
uint32_t  blockSize,
q15_t pResult 
)
+
+
+ +

Standard deviation of the elements of a Q15 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultstandard deviation value returned here
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 64-bit internal accumulator. The input is represented in 1.15 format. Intermediate multiplication yields a 2.30 format, and this result is added without saturation to a 64-bit accumulator in 34.30 format. With 33 guard bits in the accumulator, there is no risk of overflow, and the full precision of the intermediate multiplication is preserved. Finally, the 34.30 result is truncated to 34.15 format by discarding the lower 15 bits, and then saturated to yield a result in 1.15 format.
+ +

Definition at line 62 of file arm_std_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___signal_convergence.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___signal_convergence.html new file mode 100644 index 000000000..11690e40c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___signal_convergence.html @@ -0,0 +1,107 @@ + + + + +CMSIS DSP Software Library: Signal Convergence Example + + + + + + + + + +
+
+

Signal Convergence Example
+ +[Examples] +

+
+
+ +
+
Description:
+
Demonstrates the ability of an adaptive filter to "learn" the transfer function of a FIR lowpass filter using the Normalized LMS Filter, Finite Impulse Response (FIR) Filter, and Basic Math Functions.
+
Algorithm:
+
The figure below illustrates the signal flow in this example. Uniformly distributed white noise is passed through an FIR lowpass filter. The output of the FIR filter serves as the reference input of the adaptive filter (normalized LMS filter). The white noise is input to the adaptive filter. The adaptive filter learns the transfer function of the FIR filter. The filter outputs two signals: (1) the output of the internal adaptive FIR filter, and (2) the error signal which is the difference between the adaptive filter and the reference output of the FIR filter. Over time as the adaptive filter learns the transfer function of the FIR filter, the first output approaches the reference output of the FIR filter, and the error signal approaches zero.
+
The adaptive filter converges properly even if the input signal has a large dynamic range (i.e., varies from small to large values). The coefficients of the adaptive filter are initially zero, and then converge over 1536 samples. The internal function test_signal_converge() implements the stopping condition. The function checks if all of the values of the error signal have a magnitude below a threshold DELTA.
+
Block Diagram:
+
+SignalFlow.gif +
+
+
Variables Description:
+
    +
  • testInput_f32 points to the input data
  • +
  • firStateF32 points to FIR state buffer
  • +
  • lmsStateF32 points to Normalised Least mean square FIR filter state buffer
  • +
  • FIRCoeff_f32 points to coefficient buffer
  • +
  • lmsNormCoeff_f32 points to Normalised Least mean square FIR filter coefficient buffer
  • +
  • wire1, wir2, wire3 temporary buffers
  • +
  • errOutput, err_signal temporary error buffers
  • +
+
+
CMSIS DSP Software Library Functions Used:
+
+
+

Refer arm_signal_converge_example_f32.c

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___sin_cos.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___sin_cos.html new file mode 100644 index 000000000..245c4fe18 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___sin_cos.html @@ -0,0 +1,268 @@ + + + + +CMSIS DSP Software Library: Sine Cosine + + + + + + + + + +
+ +
+

Sine Cosine
+ +[Controller Functions] +

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

+Functions

void arm_sin_cos_f32 (float32_t theta, float32_t *pSinVal, float32_t *pCosVal)
void arm_sin_cos_q31 (q31_t theta, q31_t *pSinVal, q31_t *pCosVal)

+Variables

static const float32_t cosTable [360]
static const float32_t sinTable [360]
static const int32_t sinTableQ31 [360]
static const int32_t cosTableQ31 [360]
+

Detailed Description

+

Computes the trigonometric sine and cosine values using a combination of table lookup and linear interpolation. There are separate functions for Q31 and floating-point data types. The input to the floating-point version is in degrees while the fixed-point Q31 have a scaled input with the range [-1 1) mapping to [-180 180) degrees.

+

The implementation is based on table lookup using 360 values together with linear interpolation. The steps used are:

+
    +
  1. Calculation of the nearest integer table index.
  2. +
  3. Compute the fractional portion (fract) of the input.
  4. +
  5. Fetch the value corresponding to index from sine table to y0 and also value from index+1 to y1.
  6. +
  7. Sine value is computed as *psinVal = y0 + (fract * (y1 - y0)).
  8. +
  9. Fetch the value corresponding to index from cosine table to y0 and also value from index+1 to y1.
  10. +
  11. Cosine value is computed as *pcosVal = y0 + (fract * (y1 - y0)).
  12. +
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_sin_cos_f32 (float32_t  theta,
float32_t pSinVal,
float32_t pCosVal 
)
+
+
+ +

Floating-point sin_cos function.

+
Parameters:
+ + + + +
[in]thetainput value in degrees
[out]*pSinValpoints to the processed sine output.
[out]*pCosValpoints to the processed cos output.
+
+
+
Returns:
none.
+ +

Definition at line 367 of file arm_sin_cos_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_sin_cos_q31 (q31_t  theta,
q31_t pSinVal,
q31_t pCosVal 
)
+
+
+ +

Q31 sin_cos function.

+
Parameters:
+ + + + +
[in]thetascaled input value in degrees
[out]*pSinValpoints to the processed sine output.
[out]*pCosValpoints to the processed cosine output.
+
+
+
Returns:
none.
+

The Q31 input value is in the range [-1 +1) and is mapped to a degree value in the range [-180 180).

+ +

Definition at line 264 of file arm_sin_cos_q31.c.

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
const float32_t cosTable[360] [static]
+
+
+
Cosine Table is generated from following loop
for(i = 0; i < 360; i++)   
+ {   
+    cosTable[i]= cos((i-180) * PI/180.0);   
+ } 
+ +

Definition at line 71 of file arm_sin_cos_f32.c.

+ +
+
+ +
+
+ + + + +
const float32_t sinTable[360] [static]
+
+
+
Sine Table is generated from following loop
for(i = 0; i < 360; i++)   
+ {   
+    sinTable[i]= sin((i-180) * PI/180.0);   
+ } 
+ +

Definition at line 219 of file arm_sin_cos_f32.c.

+ +
+
+ +
+
+ + + + +
const int32_t sinTableQ31[360] [static]
+
+
+
Sine Table is generated from following loop
for(i = 0; i < 360; i++)   
+ {   
+    sinTable[i]= sin((i-180) * PI/180.0);   
+ } 
Convert above coefficients to fixed point 1.31 format.
+ +

Definition at line 51 of file arm_sin_cos_q31.c.

+ +
+
+ +
+
+ + + + +
const int32_t cosTableQ31[360] [static]
+
+
+
Cosine Table is generated from following loop
for(i = 0; i < 360; i++)   
+ {   
+    cosTable[i]= cos((i-180) * PI/180.0);   
+ } 
+
Convert above coefficients to fixed point 1.31 format.
+ +

Definition at line 157 of file arm_sin_cos_q31.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___sin_cos_example.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___sin_cos_example.html new file mode 100644 index 000000000..8772f3f3b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___sin_cos_example.html @@ -0,0 +1,96 @@ + + + + +CMSIS DSP Software Library: SineCosine Example + + + + + + + + + +
+
+

SineCosine Example
+ +[Examples] +

+
+
+ +
+
Description:
+
Demonstrates the Pythagorean trignometric identity with the use of Cosine, Sine, Vector Multiplication, and Vector Addition functions.
+
Algorithm:
+
Mathematically, the Pythagorean trignometric identity is defined by the following equation:
sin(x) * sin(x) + cos(x) * cos(x) = 1
where x is the angle in radians.
+
Block Diagram:
+
+sinCos.gif +
+
+
Variables Description:
+
    +
  • testInput_f32 array of input angle in radians
  • +
  • testOutput stores sum of the squares of sine and cosine values of input angle
  • +
+
+
CMSIS DSP Software Library Functions Used:
+
+
+

Refer arm_sin_cos_example_f32.c

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___variance_example.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___variance_example.html new file mode 100644 index 000000000..01d3675af --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group___variance_example.html @@ -0,0 +1,101 @@ + + + + +CMSIS DSP Software Library: Variance Example + + + + + + + + + +
+
+

Variance Example
+ +[Examples] +

+
+
+ +
+
Description:
+
Demonstrates the use of Basic Math and Support Functions to calculate the variance of an input sequence with N samples. Uniformly distributed white noise is taken as input.
+
Algorithm:
+
The variance of a sequence is the mean of the squared deviation of the sequence from its mean.
+
This is denoted by the following equation:
 variance = ((x[0] - x') * (x[0] - x') + (x[1] - x') * (x[1] - x') + ... + * (x[n-1] - x') * (x[n-1] - x')) / (N-1)
where, x[n] is the input sequence, N is the number of input samples, and x' is the mean value of the input sequence, x[n].
+
The mean value x' is defined as:
 x' = (x[0] + x[1] + ... + x[n-1]) / N
+
Block Diagram:
+
+Variance.gif +
+
+
Variables Description:
+
    +
  • testInput_f32 points to the input data
  • +
  • wire1, wir2, wire3 temporary buffers
  • +
  • blockSize number of samples processed at a time
  • +
  • refVarianceOut reference variance value
  • +
+
+
CMSIS DSP Software Library Functions Used:
+
+
+

Refer arm_variance_example_f32.c

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__clarke.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__clarke.html new file mode 100644 index 000000000..b48719eff --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__clarke.html @@ -0,0 +1,199 @@ + + + + +CMSIS DSP Software Library: Vector Clarke Transform + + + + + + + + + +
+ +
+

Vector Clarke Transform
+ +[Controller Functions] +

+
+
+ + + + +

+Functions

static __INLINE void arm_clarke_f32 (float32_t Ia, float32_t Ib, float32_t *pIalpha, float32_t *pIbeta)
static __INLINE void arm_clarke_q31 (q31_t Ia, q31_t Ib, q31_t *pIalpha, q31_t *pIbeta)
+

Detailed Description

+

Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector. Generally the Clarke transform uses three-phase currents Ia, Ib and Ic to calculate currents in the two-phase orthogonal stator axis Ialpha and Ibeta. When Ialpha is superposed with Ia as shown in the figure below

+
+clarke.gif +

Stator current space vector and its components in (a,b).

+

and Ia + Ib + Ic = 0, in this condition Ialpha and Ibeta can be calculated using only Ia and Ib.

+

The function operates on a single sample of data and each call to the function returns the processed output. The library provides separate functions for Q31 and floating-point data types.

+
Algorithm
+clarkeFormula.gif +
+ where Ia and Ib are the instantaneous stator phases and pIalpha and pIbeta are the two coordinates of time invariant vector.
+
Fixed-Point Behavior
Care must be taken when using the Q31 version of the Clarke transform. In particular, the overflow and saturation behavior of the accumulator used must be considered. Refer to the function specific documentation below for usage guidelines.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE void arm_clarke_f32 (float32_t  Ia,
float32_t  Ib,
float32_t pIalpha,
float32_t pIbeta 
) [static]
+
+
+ +

Floating-point Clarke transform.

+
Parameters:
+ + + + + +
[in]Iainput three-phase coordinate a
[in]Ibinput three-phase coordinate b
[out]*pIalphapoints to output two-phase orthogonal vector axis alpha
[out]*pIbetapoints to output two-phase orthogonal vector axis beta
+
+
+
Returns:
none.
+ +

Definition at line 4905 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE void arm_clarke_q31 (q31_t  Ia,
q31_t  Ib,
q31_t pIalpha,
q31_t pIbeta 
) [static]
+
+
+ +

Clarke transform for Q31 version.

+
Parameters:
+ + + + + +
[in]Iainput three-phase coordinate a
[in]Ibinput three-phase coordinate b
[out]*pIalphapoints to output two-phase orthogonal vector axis alpha
[out]*pIbetapoints to output two-phase orthogonal vector axis beta
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 32-bit accumulator. The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. There is saturation on the addition, hence there is no risk of overflow.
+ +

Definition at line 4934 of file arm_math.h.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__cmplx__conj.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__cmplx__conj.html new file mode 100644 index 000000000..75d80dbd7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__cmplx__conj.html @@ -0,0 +1,231 @@ + + + + +CMSIS DSP Software Library: Complex Conjugate + + + + + + + + + +
+ +
+

Complex Conjugate
+ +[Complex Math Functions] +

+
+
+ + + + + +

+Functions

void arm_cmplx_conj_f32 (float32_t *pSrc, float32_t *pDst, uint32_t numSamples)
void arm_cmplx_conj_q31 (q31_t *pSrc, q31_t *pDst, uint32_t numSamples)
void arm_cmplx_conj_q15 (q15_t *pSrc, q15_t *pDst, uint32_t numSamples)
+

Detailed Description

+

Conjugates the elements of a complex data vector.

+

The pSrc points to the source data and pDst points to the where the result should be written. numSamples specifies the number of complex samples and the data in each array is stored in an interleaved fashion (real, imag, real, imag, ...). Each array has a total of 2*numSamples values. The underlying algorithm is used:

+
   
+ for(n=0; n<numSamples; n++) {   
+     pDst[(2*n)+0)] = pSrc[(2*n)+0];     // real part   
+     pDst[(2*n)+1)] = -pSrc[(2*n)+1];    // imag part   
+ }   
+ 

There are separate functions for floating-point, Q15, and Q31 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_cmplx_conj_f32 (float32_t pSrc,
float32_t pDst,
uint32_t  numSamples 
)
+
+
+ +

Floating-point complex conjugate.

+
Parameters:
+ + + + +
*pSrcpoints to the input vector
*pDstpoints to the output vector
numSamplesnumber of complex samples in each vector
+
+
+
Returns:
none.
+ +

Definition at line 72 of file arm_cmplx_conj_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_cmplx_conj_q31 (q31_t pSrc,
q31_t pDst,
uint32_t  numSamples 
)
+
+
+ +

Q31 complex conjugate.

+
Parameters:
+ + + + +
*pSrcpoints to the input vector
*pDstpoints to the output vector
numSamplesnumber of complex samples in each vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. The Q31 value -1 (0x80000000) will be saturated to the maximum allowable positive value 0x7FFFFFFF.
+ +

Definition at line 54 of file arm_cmplx_conj_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_cmplx_conj_q15 (q15_t pSrc,
q15_t pDst,
uint32_t  numSamples 
)
+
+
+ +

Q15 complex conjugate.

+
Parameters:
+ + + + +
*pSrcpoints to the input vector
*pDstpoints to the output vector
numSamplesnumber of complex samples in each vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. The Q15 value -1 (0x8000) will be saturated to the maximum allowable positive value 0x7FFF.
+ +

Definition at line 54 of file arm_cmplx_conj_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__cmplx__dot__prod.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__cmplx__dot__prod.html new file mode 100644 index 000000000..749b8ccbe --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__cmplx__dot__prod.html @@ -0,0 +1,276 @@ + + + + +CMSIS DSP Software Library: Complex Dot Product + + + + + + + + + +
+ +
+

Complex Dot Product
+ +[Complex Math Functions] +

+
+
+ + + + + +

+Functions

void arm_cmplx_dot_prod_f32 (float32_t *pSrcA, float32_t *pSrcB, uint32_t numSamples, float32_t *realResult, float32_t *imagResult)
void arm_cmplx_dot_prod_q31 (q31_t *pSrcA, q31_t *pSrcB, uint32_t numSamples, q63_t *realResult, q63_t *imagResult)
void arm_cmplx_dot_prod_q15 (q15_t *pSrcA, q15_t *pSrcB, uint32_t numSamples, q31_t *realResult, q31_t *imagResult)
+

Detailed Description

+

Computes the dot product of two complex vectors. The vectors are multiplied element-by-element and then summed.

+

The pSrcA points to the first complex input vector and pSrcB points to the second complex input vector. numSamples specifies the number of complex samples and the data in each array is stored in an interleaved fashion (real, imag, real, imag, ...). Each array has a total of 2*numSamples values.

+

The underlying algorithm is used:

+
   
+ realResult=0;   
+ imagResult=0;   
+ for(n=0; n<numSamples; n++) {   
+     realResult += pSrcA[(2*n)+0]*pSrcB[(2*n)+0] - pSrcA[(2*n)+1]*pSrcB[(2*n)+1];   
+     imagResult += pSrcA[(2*n)+0]*pSrcB[(2*n)+1] + pSrcA[(2*n)+1]*pSrcB[(2*n)+0];   
+ }   
+ 

There are separate functions for floating-point, Q15, and Q31 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_cmplx_dot_prod_f32 (float32_t pSrcA,
float32_t pSrcB,
uint32_t  numSamples,
float32_t realResult,
float32_t imagResult 
)
+
+
+ +

Floating-point complex dot product.

+
Parameters:
+ + + + + + +
*pSrcApoints to the first input vector
*pSrcBpoints to the second input vector
numSamplesnumber of complex samples in each vector
*realResultreal part of the result returned here
*imagResultimaginary part of the result returned here
+
+
+
Returns:
none.
+ +

Definition at line 77 of file arm_cmplx_dot_prod_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_cmplx_dot_prod_q31 (q31_t pSrcA,
q31_t pSrcB,
uint32_t  numSamples,
q63_t realResult,
q63_t imagResult 
)
+
+
+ +

Q31 complex dot product.

+
Parameters:
+ + + + + + +
*pSrcApoints to the first input vector
*pSrcBpoints to the second input vector
numSamplesnumber of complex samples in each vector
*realResultreal part of the result returned here
*imagResultimaginary part of the result returned here
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 64-bit accumulator. The intermediate 1.31 by 1.31 multiplications are performed with 64-bit precision and then shifted to 16.48 format. The internal real and imaginary accumulators are in 16.48 format and provide 15 guard bits. Additions are nonsaturating and no overflow will occur as long as numSamples is less than 32768. The return results realResult and imagResult are in 16.48 format. Input down scaling is not required.
+ +

Definition at line 60 of file arm_cmplx_dot_prod_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_cmplx_dot_prod_q15 (q15_t pSrcA,
q15_t pSrcB,
uint32_t  numSamples,
q31_t realResult,
q31_t imagResult 
)
+
+
+ +

Q15 complex dot product.

+
Parameters:
+ + + + + + +
*pSrcApoints to the first input vector
*pSrcBpoints to the second input vector
numSamplesnumber of complex samples in each vector
*realResultreal part of the result returned here
*imagResultimaginary part of the result returned here
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 64-bit accumulator. The intermediate 1.15 by 1.15 multiplications are performed with full precision and yield a 2.30 result. These are accumulated in a 64-bit accumulator with 34.30 precision. As a final step, the accumulators are converted to 8.24 format. The return results realResult and imagResult are in 8.24 format.
+ +

Definition at line 59 of file arm_cmplx_dot_prod_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__cmplx__mag.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__cmplx__mag.html new file mode 100644 index 000000000..b11123759 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__cmplx__mag.html @@ -0,0 +1,231 @@ + + + + +CMSIS DSP Software Library: Complex Magnitude + + + + + + + + + +
+ +
+

Complex Magnitude
+ +[Complex Math Functions] +

+
+
+ + + + + +

+Functions

void arm_cmplx_mag_f32 (float32_t *pSrc, float32_t *pDst, uint32_t numSamples)
void arm_cmplx_mag_q31 (q31_t *pSrc, q31_t *pDst, uint32_t numSamples)
void arm_cmplx_mag_q15 (q15_t *pSrc, q15_t *pDst, uint32_t numSamples)
+

Detailed Description

+

Computes the magnitude of the elements of a complex data vector.

+

The pSrc points to the source data and pDst points to the where the result should be written. numSamples specifies the number of complex samples in the input array and the data is stored in an interleaved fashion (real, imag, real, imag, ...). The input array has a total of 2*numSamples values; the output array has a total of numSamples values. The underlying algorithm is used:

+
   
+ for(n=0; n<numSamples; n++) {   
+     pDst[n] = sqrt(pSrc[(2*n)+0]^2 + pSrc[(2*n)+1]^2);   
+ }   
+ 

There are separate functions for floating-point, Q15, and Q31 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_cmplx_mag_f32 (float32_t pSrc,
float32_t pDst,
uint32_t  numSamples 
)
+
+
+ +

Floating-point complex magnitude.

+
Parameters:
+ + + + +
[in]*pSrcpoints to complex input buffer
[out]*pDstpoints to real output buffer
[in]numSamplesnumber of complex samples in the input vector
+
+
+
Returns:
none.
+
Examples:
arm_fft_bin_example_f32.c.
+
+

Definition at line 73 of file arm_cmplx_mag_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_cmplx_mag_q31 (q31_t pSrc,
q31_t pDst,
uint32_t  numSamples 
)
+
+
+ +

Q31 complex magnitude.

+
Parameters:
+ + + + +
*pSrcpoints to the complex input vector
*pDstpoints to the real output vector
numSamplesnumber of complex samples in the input vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function implements 1.31 by 1.31 multiplications and finally output is converted into 2.30 format. Input down scaling is not required.
+ +

Definition at line 54 of file arm_cmplx_mag_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_cmplx_mag_q15 (q15_t pSrc,
q15_t pDst,
uint32_t  numSamples 
)
+
+
+ +

Q15 complex magnitude.

+
Parameters:
+ + + + +
*pSrcpoints to the complex input vector
*pDstpoints to the real output vector
numSamplesnumber of complex samples in the input vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function implements 1.15 by 1.15 multiplications and finally output is converted into 2.14 format.
+ +

Definition at line 54 of file arm_cmplx_mag_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__cmplx__mag__squared.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__cmplx__mag__squared.html new file mode 100644 index 000000000..84fe8dc3e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__cmplx__mag__squared.html @@ -0,0 +1,231 @@ + + + + +CMSIS DSP Software Library: Complex Magnitude Squared + + + + + + + + + +
+ +
+

Complex Magnitude Squared
+ +[Complex Math Functions] +

+
+
+ + + + + +

+Functions

void arm_cmplx_mag_squared_f32 (float32_t *pSrc, float32_t *pDst, uint32_t numSamples)
void arm_cmplx_mag_squared_q31 (q31_t *pSrc, q31_t *pDst, uint32_t numSamples)
void arm_cmplx_mag_squared_q15 (q15_t *pSrc, q15_t *pDst, uint32_t numSamples)
+

Detailed Description

+

Computes the magnitude squared of the elements of a complex data vector.

+

The pSrc points to the source data and pDst points to the where the result should be written. numSamples specifies the number of complex samples in the input array and the data is stored in an interleaved fashion (real, imag, real, imag, ...). The input array has a total of 2*numSamples values; the output array has a total of numSamples values.

+

The underlying algorithm is used:

+
   
+ for(n=0; n<numSamples; n++) {   
+     pDst[n] = pSrc[(2*n)+0]^2 + pSrc[(2*n)+1]^2;   
+ }   
+ 

There are separate functions for floating-point, Q15, and Q31 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_cmplx_mag_squared_f32 (float32_t pSrc,
float32_t pDst,
uint32_t  numSamples 
)
+
+
+ +

Floating-point complex magnitude squared.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the complex input vector
[out]*pDstpoints to the real output vector
[in]numSamplesnumber of complex samples in the input vector
+
+
+
Returns:
none.
+ +

Definition at line 74 of file arm_cmplx_mag_squared_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_cmplx_mag_squared_q31 (q31_t pSrc,
q31_t pDst,
uint32_t  numSamples 
)
+
+
+ +

Q31 complex magnitude squared.

+
Parameters:
+ + + + +
*pSrcpoints to the complex input vector
*pDstpoints to the real output vector
numSamplesnumber of complex samples in the input vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function implements 1.31 by 1.31 multiplications and finally output is converted into 3.29 format. Input down scaling is not required.
+ +

Definition at line 55 of file arm_cmplx_mag_squared_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_cmplx_mag_squared_q15 (q15_t pSrc,
q15_t pDst,
uint32_t  numSamples 
)
+
+
+ +

Q15 complex magnitude squared.

+
Parameters:
+ + + + +
*pSrcpoints to the complex input vector
*pDstpoints to the real output vector
numSamplesnumber of complex samples in the input vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function implements 1.15 by 1.15 multiplications and finally output is converted into 3.13 format.
+ +

Definition at line 53 of file arm_cmplx_mag_squared_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__copy.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__copy.html new file mode 100644 index 000000000..a511c79ee --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__copy.html @@ -0,0 +1,271 @@ + + + + +CMSIS DSP Software Library: Vector Copy + + + + + + + + + +
+ +
+

Vector Copy
+ +[Support Functions] +

+
+
+ + + + + + +

+Functions

void arm_copy_f32 (float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
void arm_copy_q31 (q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_copy_q15 (q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_copy_q7 (q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
+

Detailed Description

+

Copies sample by sample from source vector to destination vector.

+
   
+ 	pDst[n] = pSrc[n];   0 <= n < blockSize.   
+ 

There are separate functions for floating point, Q31, Q15, and Q7 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_copy_f32 (float32_t pSrc,
float32_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Copies the elements of a floating-point vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to input vector
[out]*pDstpoints to output vector
[in]blockSizelength of the input vector
+
+
+
Returns:
none.
+
Examples:
arm_convolution_example_f32.c, arm_signal_converge_example_f32.c, and arm_variance_example_f32.c.
+
+

Definition at line 66 of file arm_copy_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_copy_q31 (q31_t pSrc,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Copies the elements of a Q31 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to input vector
[out]*pDstpoints to output vector
[in]blockSizelength of the input vector
+
+
+
Returns:
none.
+ +

Definition at line 53 of file arm_copy_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_copy_q15 (q15_t pSrc,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Copies the elements of a Q15 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to input vector
[out]*pDstpoints to output vector
[in]blockSizelength of the input vector
+
+
+
Returns:
none.
+ +

Definition at line 52 of file arm_copy_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_copy_q7 (q7_t pSrc,
q7_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Copies the elements of a Q7 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to input vector
[out]*pDstpoints to output vector
[in]blockSizelength of the input vector
+
+
+
Returns:
none.
+ +

Definition at line 53 of file arm_copy_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__cos.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__cos.html new file mode 100644 index 000000000..763f78b30 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__cos.html @@ -0,0 +1,258 @@ + + + + +CMSIS DSP Software Library: Cosine + + + + + + + + + +
+ +
+

Cosine
+ +[Fast Math Functions] +

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

+Functions

float32_t arm_cos_f32 (float32_t x)
q31_t arm_cos_q31 (q31_t x)
q15_t arm_cos_q15 (q15_t x)

+Variables

static const float32_t cosTable [259]
static const q31_t cosTableQ31 [259]
static const q15_t cosTableQ15 [259]
+

Detailed Description

+

Computes the trigonometric cosine function using a combination of table lookup and cubic interpolation. There are separate functions for Q15, Q31, and floating-point data types. The input to the floating-point version is in radians while the fixed-point Q15 and Q31 have a scaled input with the range [0 1) mapping to [0 2*pi).

+

The implementation is based on table lookup using 256 values together with cubic interpolation. The steps used are:

+
    +
  1. Calculation of the nearest integer table index
  2. +
  3. Fetch the four table values a, b, c, and d
  4. +
  5. Compute the fractional portion (fract) of the table index.
  6. +
  7. Calculation of wa, wb, wc, wd
  8. +
  9. The final result equals a*wa + b*wb + c*wc + d*wd
  10. +
+

where

+
   
+    a=Table[index-1];   
+    b=Table[index+0];   
+    c=Table[index+1];   
+    d=Table[index+2];   
+ 

and

+
   
+    wa=-(1/6)*fract.^3 + (1/2)*fract.^2 - (1/3)*fract;   
+    wb=(1/2)*fract.^3 - fract.^2 - (1/2)*fract + 1;   
+    wc=-(1/2)*fract.^3+(1/2)*fract.^2+fract;   
+    wd=(1/6)*fract.^3 - (1/6)*fract;   
+ 

Function Documentation

+ +
+
+ + + + + + + + +
float32_t arm_cos_f32 (float32_t  x )
+
+
+ +

Fast approximation to the trigonometric cosine function for floating-point data.

+
Parameters:
+ + +
[in]xinput value in radians.
+
+
+
Returns:
cos(x).
+
Examples:
arm_sin_cos_example_f32.c.
+
+

Definition at line 192 of file arm_cos_f32.c.

+ +
+
+ +
+
+ + + + + + + + +
q31_t arm_cos_q31 (q31_t  x )
+
+
+ +

Fast approximation to the trigonometric cosine function for Q31 data.

+
Parameters:
+ + +
[in]xScaled input value in radians.
+
+
+
Returns:
cos(x).
+

The Q31 input value is in the range [0 +1) and is mapped to a radian value in the range [0 2*pi).

+ +

Definition at line 136 of file arm_cos_q31.c.

+ +
+
+ +
+
+ + + + + + + + +
q15_t arm_cos_q15 (q15_t  x )
+
+
+ +

Fast approximation to the trigonometric cosine function for Q15 data.

+
Parameters:
+ + +
[in]xScaled input value in radians.
+
+
+
Returns:
cos(x).
+

The Q15 input value is in the range [0 +1) and is mapped to a radian value in the range [0 2*pi).

+ +

Definition at line 105 of file arm_cos_q15.c.

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
const float32_t cosTable[259] [static]
+
+
+
Example code for Generation of Cos Table: tableSize = 256;
for(n = -1; n < (tableSize + 1); n++)   
+ {   
+	cosTable[n+1]= cos(2*pi*n/tableSize);   
+ } 
where pi value is 3.14159265358979
+ +

Definition at line 86 of file arm_cos_f32.c.

+ +
+
+ +
+
+ + + + +
const q31_t cosTableQ31[259] [static]
+
+
+
Table Values are in Q31(1.31 Fixed point format) and generation is done in three steps First Generate cos values in floating point: tableSize = 256;
for(n = -1; n < (tableSize + 1); n++)   
+ {   
+	cosTable[n+1]= cos(2*pi*n/tableSize);   
+ } 
where pi value is 3.14159265358979
+
Secondly Convert Floating point to Q31(Fixed point): (cosTable[i] * pow(2, 31))
+
Finally Rounding to nearest integer is done cosTable[i] += (cosTable[i] > 0 ? 0.5 :-0.5);
+ +

Definition at line 60 of file arm_cos_q31.c.

+ +
+
+ +
+
+ + + + +
const q15_t cosTableQ15[259] [static]
+
+
+
Table Values are in Q15(1.15 Fixed point format) and generation is done in three steps
+
First Generate cos values in floating point: tableSize = 256;
for(n = -1; n < (tableSize + 1); n++)   
+ {   
+	cosTable[n+1]= cos(2*pi*n/tableSize);   
+ }
where pi value is 3.14159265358979
+
Secondly Convert Floating point to Q15(Fixed point): (cosTable[i] * pow(2, 15))
+
Finally Rounding to nearest integer is done cosTable[i] += (cosTable[i] > 0 ? 0.5 :-0.5);
+ +

Definition at line 60 of file arm_cos_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__dot__prod.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__dot__prod.html new file mode 100644 index 000000000..878073c42 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__dot__prod.html @@ -0,0 +1,302 @@ + + + + +CMSIS DSP Software Library: Vector Dot Product + + + + + + + + + +
+ +
+

Vector Dot Product
+ +[Basic Math Functions] +

+
+
+ + + + + + +

+Functions

void arm_dot_prod_f32 (float32_t *pSrcA, float32_t *pSrcB, uint32_t blockSize, float32_t *result)
void arm_dot_prod_q31 (q31_t *pSrcA, q31_t *pSrcB, uint32_t blockSize, q63_t *result)
void arm_dot_prod_q15 (q15_t *pSrcA, q15_t *pSrcB, uint32_t blockSize, q63_t *result)
void arm_dot_prod_q7 (q7_t *pSrcA, q7_t *pSrcB, uint32_t blockSize, q31_t *result)
+

Detailed Description

+

Computes the dot product of two vectors. The vectors are multiplied element-by-element and then summed. There are separate functions for floating-point, Q7, Q15, and Q31 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_dot_prod_f32 (float32_t pSrcA,
float32_t pSrcB,
uint32_t  blockSize,
float32_t result 
)
+
+
+ +

Dot product of floating-point vectors.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input vector
[in]*pSrcBpoints to the second input vector
[in]blockSizenumber of samples in each vector
[out]*resultoutput result returned here
+
+
+
Returns:
none.
+
Examples:
arm_variance_example_f32.c.
+
+

Definition at line 62 of file arm_dot_prod_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_dot_prod_q31 (q31_t pSrcA,
q31_t pSrcB,
uint32_t  blockSize,
q63_t result 
)
+
+
+ +

Dot product of Q31 vectors.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input vector
[in]*pSrcBpoints to the second input vector
[in]blockSizenumber of samples in each vector
[out]*resultoutput result returned here
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The intermediate multiplications are in 1.31 x 1.31 = 2.62 format and these are truncated to 2.48 format by discarding the lower 14 bits. The 2.48 result is then added without saturation to a 64-bit accumulator in 16.48 format. There are 15 guard bits in the accumulator and there is no risk of overflow as long as the length of the vectors is less than 2^16 elements. The return result is in 16.48 format.
+ +

Definition at line 62 of file arm_dot_prod_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_dot_prod_q15 (q15_t pSrcA,
q15_t pSrcB,
uint32_t  blockSize,
q63_t result 
)
+
+
+ +

Dot product of Q15 vectors.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input vector
[in]*pSrcBpoints to the second input vector
[in]blockSizenumber of samples in each vector
[out]*resultoutput result returned here
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The intermediate multiplications are in 1.15 x 1.15 = 2.30 format and these results are added to a 64-bit accumulator in 34.30 format. Nonsaturating additions are used and given that there are 33 guard bits in the accumulator there is no risk of overflow. The return result is in 34.30 format.
+ +

Definition at line 61 of file arm_dot_prod_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_dot_prod_q7 (q7_t pSrcA,
q7_t pSrcB,
uint32_t  blockSize,
q31_t result 
)
+
+
+ +

Dot product of Q7 vectors.

+
Parameters:
+ + + + + +
[in]*pSrcApoints to the first input vector
[in]*pSrcBpoints to the second input vector
[in]blockSizenumber of samples in each vector
[out]*resultoutput result returned here
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The intermediate multiplications are in 1.7 x 1.7 = 2.14 format and these results are added to an accumulator in 18.14 format. Nonsaturating additions are used and there is no danger of wrap around as long as the vectors are less than 2^18 elements long. The return result is in 18.14 format.
+ +

Definition at line 61 of file arm_dot_prod_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__float__to__x.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__float__to__x.html new file mode 100644 index 000000000..6b4dde568 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__float__to__x.html @@ -0,0 +1,240 @@ + + + + +CMSIS DSP Software Library: Convert 32-bit floating point value + + + + + + + + + +
+ +
+

Convert 32-bit floating point value
+ +[Support Functions] +

+
+
+ + + + + +

+Functions

void arm_float_to_q31 (float32_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_float_to_q15 (float32_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_float_to_q7 (float32_t *pSrc, q7_t *pDst, uint32_t blockSize)
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_float_to_q31 (float32_t pSrc,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Converts the elements of the floating-point vector to Q31 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the floating-point input vector
[out]*pDstpoints to the Q31 output vector
[in]blockSizelength of the input vector
+
+
+
Returns:
none.
+
Description:
+
The equation used for the conversion process is:
+
   
+ 	pDst[n] = (q31_t)(pSrc[n] * 2147483648);   0 <= n < blockSize.   
+ 

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated.
+
Note:
In order to apply rounding, the library should be rebuilt with the ROUNDING macro defined in the preprocessor section of project options.
+
Examples:
arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 69 of file arm_float_to_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_float_to_q15 (float32_t pSrc,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Converts the elements of the floating-point vector to Q15 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the floating-point input vector
[out]*pDstpoints to the Q15 output vector
[in]blockSizelength of the input vector
+
+
+
Returns:
none.
+
Description:
+
The equation used for the conversion process is:
   
+ 	pDst[n] = (q15_t)(pSrc[n] * 32768);   0 <= n < blockSize.   
+ 
+
Scaling and Overflow Behavior:
+
The function uses saturating arithmetic. Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.
+
Note:
In order to apply rounding, the library should be rebuilt with the ROUNDING macro defined in the preprocessor section of project options.
+ +

Definition at line 65 of file arm_float_to_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_float_to_q7 (float32_t pSrc,
q7_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Converts the elements of the floating-point vector to Q7 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the floating-point input vector
[out]*pDstpoints to the Q7 output vector
[in]blockSizelength of the input vector
+
+
+
Returns:
none.
+
Description:
+
The equation used for the conversion process is:
   
+ 	pDst[n] = (q7_t)(pSrc[n] * 128);   0 <= n < blockSize.   
+ 
+
Scaling and Overflow Behavior:
+
The function uses saturating arithmetic. Results outside of the allowable Q7 range [0x80 0x7F] will be saturated.
+
Note:
In order to apply rounding, the library should be rebuilt with the ROUNDING macro defined in the preprocessor section of project options.
+ +

Definition at line 64 of file arm_float_to_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_cmplx_math.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_cmplx_math.html new file mode 100644 index 000000000..dc545bf47 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_cmplx_math.html @@ -0,0 +1,81 @@ + + + + +CMSIS DSP Software Library: Complex Math Functions + + + + + + + + + +
+ +
+

Complex Math Functions

+
+
+ + + + + + + + +

+Modules

 Complex Conjugate
 Complex Dot Product
 Complex Magnitude
 Complex Magnitude Squared
 Complex-by-Complex Multiplication
 Complex-by-Real Multiplication
+

Detailed Description

+

This set of functions operates on complex data vectors. The data in the complex arrays is stored in an interleaved fashion (real, imag, real, imag, ...). In the API functions, the number of samples in a complex array refers to the number of complex values; the array contains twice this number of real values.

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_controller.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_controller.html new file mode 100644 index 000000000..276205796 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_controller.html @@ -0,0 +1,79 @@ + + + + +CMSIS DSP Software Library: Controller Functions + + + + + + + + + +
+ +
+

Controller Functions

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_examples.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_examples.html new file mode 100644 index 000000000..cc4969cac --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_examples.html @@ -0,0 +1,84 @@ + + + + +CMSIS DSP Software Library: Examples + + + + + + + + + +
+ +
+

Examples

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_fast_math.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_fast_math.html new file mode 100644 index 000000000..2b8978a0e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_fast_math.html @@ -0,0 +1,78 @@ + + + + +CMSIS DSP Software Library: Fast Math Functions + + + + + + + + + +
+ +
+

Fast Math Functions

+
+
+ + + + + +

+Modules

 Cosine
 Sine
 Square Root
+

Detailed Description

+

This set of functions provides a fast approximation to sine, cosine, and square root. As compared to most of the other functions in the CMSIS math library, the fast math functions operate on individual values and not arrays. There are separate functions for Q15, Q31, and floating-point data.

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_filters.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_filters.html new file mode 100644 index 000000000..6a16cc14c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_filters.html @@ -0,0 +1,87 @@ + + + + +CMSIS DSP Software Library: Filtering Functions + + + + + + + + + +
+ +
+

Filtering Functions

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_interpolation.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_interpolation.html new file mode 100644 index 000000000..9be728096 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_interpolation.html @@ -0,0 +1,77 @@ + + + + +CMSIS DSP Software Library: Interpolation Functions + + + + + + + + + +
+ +
+

Interpolation Functions

+
+
+ + + + +

+Modules

 Linear Interpolation
 Bilinear Interpolation
+

Detailed Description

+

These functions perform 1- and 2-dimensional interpolation of data. Linear interpolation is used for 1-dimensional data and bilinear interpolation is used for 2-dimensional data.

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_math.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_math.html new file mode 100644 index 000000000..6797edbbe --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_math.html @@ -0,0 +1,82 @@ + + + + +CMSIS DSP Software Library: Basic Math Functions + + + + + + + + + +
+ +
+

Basic Math Functions

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_matrix.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_matrix.html new file mode 100644 index 000000000..db0d3edb1 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_matrix.html @@ -0,0 +1,106 @@ + + + + +CMSIS DSP Software Library: Matrix Functions + + + + + + + + + +
+ +
+

Matrix Functions

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

+Modules

 Matrix Addition
 Matrix Initialization
 Matrix Inverse
 Matrix Multiplication
 Matrix Scale
 Matrix Subtraction
 Matrix Transpose
+

Detailed Description

+

This set of functions provides basic matrix math operations. The functions operate on matrix data structures. For example, the type definition for the floating-point matrix structure is shown below:

+
+     typedef struct
+     {
+       uint16_t numRows;     // number of rows of the matrix.
+       uint16_t numCols;     // number of columns of the matrix.
+       float32_t *pData;     // points to the data of the matrix.
+     } arm_matrix_instance_f32;
+ 

There are similar definitions for Q15 and Q31 data types.

+

The structure specifies the size of the matrix and then points to an array of data. The array is of size numRows X numCols and the values are arranged in row order. That is, the matrix element (i, j) is stored at:

+
+     pData[i*numCols + j]
+ 
Init Functions
There is an associated initialization function for each type of matrix data structure. The initialization function sets the values of the internal structure fields. Refer to the function arm_mat_init_f32(), arm_mat_init_q31() and arm_mat_init_q15() for floating-point, Q31 and Q15 types, respectively.
+
Use of the initialization function is optional. However, if initialization function is used then the instance structure cannot be placed into a const data section. To place the instance structure in a const data section, manually initialize the data structure. For example:
+ arm_matrix_instance_f32 S = {nRows, nColumns, pData};
+ arm_matrix_instance_q31 S = {nRows, nColumns, pData};
+ arm_matrix_instance_q15 S = {nRows, nColumns, pData};
+ 
where nRows specifies the number of rows, nColumns specifies the number of columns, and pData points to the data array.
+
Size Checking
By default all of the matrix functions perform size checking on the input and output matrices. For example, the matrix addition function verifies that the two input matrices and the output matrix all have the same number of rows and columns. If the size check fails the functions return:
+     ARM_MATH_SIZE_MISMATCH
+ 
Otherwise the functions return
+     ARM_MATH_SUCCESS
+ 
There is some overhead associated with this matrix size checking. The matrix size checking is enabled via the define
+     ARM_MATH_MATRIX_CHECK
+ 
within the library project settings. By default this macro is defined and size checking is enabled. By changing the project settings and undefining this macro size checking is eliminated and the functions run a bit faster. With size checking disabled the functions always return ARM_MATH_SUCCESS.
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_stats.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_stats.html new file mode 100644 index 000000000..1e0ed8a7c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_stats.html @@ -0,0 +1,80 @@ + + + + +CMSIS DSP Software Library: Statistics Functions + + + + + + + + + +
+ +
+

Statistics Functions

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_support.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_support.html new file mode 100644 index 000000000..f58098c22 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_support.html @@ -0,0 +1,79 @@ + + + + +CMSIS DSP Software Library: Support Functions + + + + + + + + + +
+ +
+

Support Functions

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_transforms.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_transforms.html new file mode 100644 index 000000000..fad94d404 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__group_transforms.html @@ -0,0 +1,76 @@ + + + + +CMSIS DSP Software Library: Transform Functions + + + + + + + + + +
+ +
+

Transform Functions

+
+ + + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__inv__clarke.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__inv__clarke.html new file mode 100644 index 000000000..a4d75a062 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__inv__clarke.html @@ -0,0 +1,195 @@ + + + + +CMSIS DSP Software Library: Vector Inverse Clarke Transform + + + + + + + + + +
+ +
+

Vector Inverse Clarke Transform
+ +[Controller Functions] +

+
+
+ + + + +

+Functions

static __INLINE void arm_inv_clarke_f32 (float32_t Ialpha, float32_t Ibeta, float32_t *pIa, float32_t *pIb)
static __INLINE void arm_inv_clarke_q31 (q31_t Ialpha, q31_t Ibeta, q31_t *pIa, q31_t *pIb)
+

Detailed Description

+

Inverse Clarke transform converts the two-coordinate time invariant vector into instantaneous stator phases.

+

The function operates on a single sample of data and each call to the function returns the processed output. The library provides separate functions for Q31 and floating-point data types.

+
Algorithm
+clarkeInvFormula.gif +
+ where pIa and pIb are the instantaneous stator phases and Ialpha and Ibeta are the two coordinates of time invariant vector.
+
Fixed-Point Behavior
Care must be taken when using the Q31 version of the Clarke transform. In particular, the overflow and saturation behavior of the accumulator used must be considered. Refer to the function specific documentation below for usage guidelines.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE void arm_inv_clarke_f32 (float32_t  Ialpha,
float32_t  Ibeta,
float32_t pIa,
float32_t pIb 
) [static]
+
+
+ +

Floating-point Inverse Clarke transform.

+
Parameters:
+ + + + + +
[in]Ialphainput two-phase orthogonal vector axis alpha
[in]Ibetainput two-phase orthogonal vector axis beta
[out]*pIapoints to output three-phase coordinate a
[out]*pIbpoints to output three-phase coordinate b
+
+
+
Returns:
none.
+ +

Definition at line 5009 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE void arm_inv_clarke_q31 (q31_t  Ialpha,
q31_t  Ibeta,
q31_t pIa,
q31_t pIb 
) [static]
+
+
+ +

Inverse Clarke transform for Q31 version.

+
Parameters:
+ + + + + +
[in]Ialphainput two-phase orthogonal vector axis alpha
[in]Ibetainput two-phase orthogonal vector axis beta
[out]*pIapoints to output three-phase coordinate a
[out]*pIbpoints to output three-phase coordinate b
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 32-bit accumulator. The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. There is saturation on the subtraction, hence there is no risk of overflow.
+ +

Definition at line 5038 of file arm_math.h.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__inv__park.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__inv__park.html new file mode 100644 index 000000000..a97fddc0d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__inv__park.html @@ -0,0 +1,223 @@ + + + + +CMSIS DSP Software Library: Vector Inverse Park transform + + + + + + + + + +
+ +
+

Vector Inverse Park transform
+ +[Controller Functions] +

+
+
+ + + + +

+Functions

static __INLINE void arm_inv_park_f32 (float32_t Id, float32_t Iq, float32_t *pIalpha, float32_t *pIbeta, float32_t sinVal, float32_t cosVal)
static __INLINE void arm_inv_park_q31 (q31_t Id, q31_t Iq, q31_t *pIalpha, q31_t *pIbeta, q31_t sinVal, q31_t cosVal)
+

Detailed Description

+

Inverse Park transform converts the input flux and torque components to two-coordinate vector.

+

The function operates on a single sample of data and each call to the function returns the processed output. The library provides separate functions for Q31 and floating-point data types.

+
Algorithm
+parkInvFormula.gif +
+ where pIalpha and pIbeta are the stator vector components, Id and Iq are rotor vector components and cosVal and sinVal are the cosine and sine values of theta (rotor flux position).
+
Fixed-Point Behavior
Care must be taken when using the Q31 version of the Park transform. In particular, the overflow and saturation behavior of the accumulator used must be considered. Refer to the function specific documentation below for usage guidelines.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE void arm_inv_park_f32 (float32_t  Id,
float32_t  Iq,
float32_t pIalpha,
float32_t pIbeta,
float32_t  sinVal,
float32_t  cosVal 
) [static]
+
+
+ +

Floating-point Inverse Park transform.

+
Parameters:
+ + + + + + + +
[in]Idinput coordinate of rotor reference frame d
[in]Iqinput coordinate of rotor reference frame q
[out]*pIalphapoints to output two-phase orthogonal vector axis alpha
[out]*pIbetapoints to output two-phase orthogonal vector axis beta
[in]sinValsine value of rotation angle theta
[in]cosValcosine value of rotation angle theta
+
+
+
Returns:
none.
+ +

Definition at line 5244 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE void arm_inv_park_q31 (q31_t  Id,
q31_t  Iq,
q31_t pIalpha,
q31_t pIbeta,
q31_t  sinVal,
q31_t  cosVal 
) [static]
+
+
+ +

Inverse Park transform for Q31 version.

+
Parameters:
+ + + + + + + +
[in]Idinput coordinate of rotor reference frame d
[in]Iqinput coordinate of rotor reference frame q
[out]*pIalphapoints to output two-phase orthogonal vector axis alpha
[out]*pIbetapoints to output two-phase orthogonal vector axis beta
[in]sinValsine value of rotation angle theta
[in]cosValcosine value of rotation angle theta
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 32-bit accumulator. The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. There is saturation on the addition, hence there is no risk of overflow.
+ +

Definition at line 5279 of file arm_math.h.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__mean.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__mean.html new file mode 100644 index 000000000..eeee74c24 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__mean.html @@ -0,0 +1,277 @@ + + + + +CMSIS DSP Software Library: Mean + + + + + + + + + +
+ +
+

Mean
+ +[Statistics Functions] +

+
+
+ + + + + + +

+Functions

void arm_mean_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
void arm_mean_q31 (q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
void arm_mean_q15 (q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
void arm_mean_q7 (q7_t *pSrc, uint32_t blockSize, q7_t *pResult)
+

Detailed Description

+

Calculates the mean of the input vector. Mean is defined as the average of the elements in the vector. The underlying algorithm is used:

+
   
+ 	Result = (pSrc[0] + pSrc[1] + pSrc[2] + ... + pSrc[blockSize-1]) / blockSize;   
+ 

There are separate functions for floating-point, Q31, Q15, and Q7 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_mean_f32 (float32_t pSrc,
uint32_t  blockSize,
float32_t pResult 
)
+
+
+ +

Mean value of a floating-point vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultmean value returned here
+
+
+
Returns:
none.
+
Examples:
arm_class_marks_example_f32.c.
+
+

Definition at line 64 of file arm_mean_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_mean_q31 (q31_t pSrc,
uint32_t  blockSize,
q31_t pResult 
)
+
+
+ +

Mean value of a Q31 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultmean value returned here
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 64-bit internal accumulator. The input is represented in 1.31 format and is accumulated in a 64-bit accumulator in 33.31 format. There is no risk of internal overflow with this approach, and the full precision of intermediate result is preserved. Finally, the accumulator is truncated to yield a result of 1.31 format.
+ +

Definition at line 61 of file arm_mean_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_mean_q15 (q15_t pSrc,
uint32_t  blockSize,
q15_t pResult 
)
+
+
+ +

Mean value of a Q15 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultmean value returned here
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 32-bit internal accumulator. The input is represented in 1.15 format and is accumulated in a 32-bit accumulator in 17.15 format. There is no risk of internal overflow with this approach, and the full precision of intermediate result is preserved. Finally, the accumulator is saturated and truncated to yield a result of 1.15 format.
+ +

Definition at line 61 of file arm_mean_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_mean_q7 (q7_t pSrc,
uint32_t  blockSize,
q7_t pResult 
)
+
+
+ +

Mean value of a Q7 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultmean value returned here
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 32-bit internal accumulator. The input is represented in 1.7 format and is accumulated in a 32-bit accumulator in 25.7 format. There is no risk of internal overflow with this approach, and the full precision of intermediate result is preserved. Finally, the accumulator is truncated to yield a result of 1.7 format.
+ +

Definition at line 61 of file arm_mean_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__negate.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__negate.html new file mode 100644 index 000000000..f12829532 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__negate.html @@ -0,0 +1,275 @@ + + + + +CMSIS DSP Software Library: Vector Negate + + + + + + + + + +
+ +
+

Vector Negate
+ +[Basic Math Functions] +

+
+
+ + + + + + +

+Functions

void arm_negate_f32 (float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
void arm_negate_q31 (q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_negate_q15 (q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_negate_q7 (q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
+

Detailed Description

+

Negates the elements of a vector.

+
   
+     pDst[n] = -pSrc[n],   0 <= n < blockSize.   
+ 

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_negate_f32 (float32_t pSrc,
float32_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Negates the elements of a floating-point vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in the vector
+
+
+
Returns:
none.
+ +

Definition at line 62 of file arm_negate_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_negate_q31 (q31_t pSrc,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Negates the elements of a Q31 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in the vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. The Q31 value -1 (0x80000000) will be saturated to the maximum allowable positive value 0x7FFFFFFF.
+ +

Definition at line 57 of file arm_negate_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_negate_q15 (q15_t pSrc,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Negates the elements of a Q15 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in the vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. The Q15 value -1 (0x8000) will be saturated to the maximum allowable positive value 0x7FFF.
+ +

Definition at line 57 of file arm_negate_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_negate_q7 (q7_t pSrc,
q7_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Negates the elements of a Q7 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in the vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. The Q7 value -1 (0x80) will be saturated to the maximum allowable positive value 0x7F.
+ +

Definition at line 57 of file arm_negate_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__offset.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__offset.html new file mode 100644 index 000000000..2160d7919 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__offset.html @@ -0,0 +1,304 @@ + + + + +CMSIS DSP Software Library: Vector Offset + + + + + + + + + +
+ +
+

Vector Offset
+ +[Basic Math Functions] +

+
+
+ + + + + + +

+Functions

void arm_offset_f32 (float32_t *pSrc, float32_t offset, float32_t *pDst, uint32_t blockSize)
void arm_offset_q31 (q31_t *pSrc, q31_t offset, q31_t *pDst, uint32_t blockSize)
void arm_offset_q15 (q15_t *pSrc, q15_t offset, q15_t *pDst, uint32_t blockSize)
void arm_offset_q7 (q7_t *pSrc, q7_t offset, q7_t *pDst, uint32_t blockSize)
+

Detailed Description

+

Adds a constant offset to each element of a vector.

+
   
+     pDst[n] = pSrc[n] + offset,   0 <= n < blockSize.   
+ 

There are separate functions for floating-point, Q7, Q15, and Q31 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_offset_f32 (float32_t pSrc,
float32_t  offset,
float32_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Adds a constant offset to a floating-point vector.

+
Parameters:
+ + + + + +
[in]*pSrcpoints to the input vector
[in]offsetis the offset to be added
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in the vector
+
+
+
Returns:
none.
+ +

Definition at line 66 of file arm_offset_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_offset_q31 (q31_t pSrc,
q31_t  offset,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Adds a constant offset to a Q31 vector.

+
Parameters:
+ + + + + +
[in]*pSrcpoints to the input vector
[in]offsetis the offset to be added
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in the vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] are saturated.
+ +

Definition at line 58 of file arm_offset_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_offset_q15 (q15_t pSrc,
q15_t  offset,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Adds a constant offset to a Q15 vector.

+
Parameters:
+ + + + + +
[in]*pSrcpoints to the input vector
[in]offsetis the offset to be added
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in the vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q15 range [0x8000 0x7FFF] are saturated.
+ +

Definition at line 58 of file arm_offset_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_offset_q7 (q7_t pSrc,
q7_t  offset,
q7_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Adds a constant offset to a Q7 vector.

+
Parameters:
+ + + + + +
[in]*pSrcpoints to the input vector
[in]offsetis the offset to be added
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in the vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q7 range [0x80 0x7F] are saturated.
+ +

Definition at line 58 of file arm_offset_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__park.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__park.html new file mode 100644 index 000000000..c29f989b4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__park.html @@ -0,0 +1,227 @@ + + + + +CMSIS DSP Software Library: Vector Park Transform + + + + + + + + + +
+ +
+

Vector Park Transform
+ +[Controller Functions] +

+
+
+ + + + +

+Functions

static __INLINE void arm_park_f32 (float32_t Ialpha, float32_t Ibeta, float32_t *pId, float32_t *pIq, float32_t sinVal, float32_t cosVal)
static __INLINE void arm_park_q31 (q31_t Ialpha, q31_t Ibeta, q31_t *pId, q31_t *pIq, q31_t sinVal, q31_t cosVal)
+

Detailed Description

+

Forward Park transform converts the input two-coordinate vector to flux and torque components. The Park transform can be used to realize the transformation of the Ialpha and the Ibeta currents from the stationary to the moving reference frame and control the spatial relationship between the stator vector current and rotor flux vector. If we consider the d axis aligned with the rotor flux, the diagram below shows the current vector and the relationship from the two reference frames:

+
+park.gif +

Stator current space vector and its component in (a,b) and in the d,q rotating reference frame

+

The function operates on a single sample of data and each call to the function returns the processed output. The library provides separate functions for Q31 and floating-point data types.

+
Algorithm
+parkFormula.gif +
+ where Ialpha and Ibeta are the stator vector components, pId and pIq are rotor vector components and cosVal and sinVal are the cosine and sine values of theta (rotor flux position).
+
Fixed-Point Behavior
Care must be taken when using the Q31 version of the Park transform. In particular, the overflow and saturation behavior of the accumulator used must be considered. Refer to the function specific documentation below for usage guidelines.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE void arm_park_f32 (float32_t  Ialpha,
float32_t  Ibeta,
float32_t pId,
float32_t pIq,
float32_t  sinVal,
float32_t  cosVal 
) [static]
+
+
+ +

Floating-point Park transform.

+
Parameters:
+ + + + + + + +
[in]Ialphainput two-phase vector coordinate alpha
[in]Ibetainput two-phase vector coordinate beta
[out]*pIdpoints to output rotor reference frame d
[out]*pIqpoints to output rotor reference frame q
[in]sinValsine value of rotation angle theta
[in]cosValcosine value of rotation angle theta
+
+
+
Returns:
none.
+

The function implements the forward Park transform.

+ +

Definition at line 5125 of file arm_math.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static __INLINE void arm_park_q31 (q31_t  Ialpha,
q31_t  Ibeta,
q31_t pId,
q31_t pIq,
q31_t  sinVal,
q31_t  cosVal 
) [static]
+
+
+ +

Park transform for Q31 version.

+
Parameters:
+ + + + + + + +
[in]Ialphainput two-phase vector coordinate alpha
[in]Ibetainput two-phase vector coordinate beta
[out]*pIdpoints to output rotor reference frame d
[out]*pIqpoints to output rotor reference frame q
[in]sinValsine value of rotation angle theta
[in]cosValcosine value of rotation angle theta
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 32-bit accumulator. The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. There is saturation on the addition and subtraction, hence there is no risk of overflow.
+ +

Definition at line 5159 of file arm_math.h.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__power.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__power.html new file mode 100644 index 000000000..ffd63a699 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__power.html @@ -0,0 +1,276 @@ + + + + +CMSIS DSP Software Library: Power + + + + + + + + + +
+ +
+

Power
+ +[Statistics Functions] +

+
+
+ + + + + + +

+Functions

void arm_power_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
void arm_power_q31 (q31_t *pSrc, uint32_t blockSize, q63_t *pResult)
void arm_power_q15 (q15_t *pSrc, uint32_t blockSize, q63_t *pResult)
void arm_power_q7 (q7_t *pSrc, uint32_t blockSize, q31_t *pResult)
+

Detailed Description

+

Calculates the sum of the squares of the elements in the input vector. The underlying algorithm is used:

+
   
+ 	Result = pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + pSrc[2] * pSrc[2] + ... + pSrc[blockSize-1] * pSrc[blockSize-1];   
+ 

There are separate functions for floating point, Q31, Q15, and Q7 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_power_f32 (float32_t pSrc,
uint32_t  blockSize,
float32_t pResult 
)
+
+
+ +

Sum of the squares of the elements of a floating-point vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultsum of the squares value returned here
+
+
+
Returns:
none.
+ +

Definition at line 68 of file arm_power_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_power_q31 (q31_t pSrc,
uint32_t  blockSize,
q63_t pResult 
)
+
+
+ +

Sum of the squares of the elements of a Q31 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultsum of the squares value returned here
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 64-bit internal accumulator. The input is represented in 1.31 format. Intermediate multiplication yields a 2.62 format, and this result is truncated to 2.48 format by discarding the lower 14 bits. The 2.48 result is then added without saturation to a 64-bit accumulator in 16.48 format. With 15 guard bits in the accumulator, there is no risk of overflow, and the full precision of the intermediate multiplication is preserved. Finally, the return result is in 16.48 format.
+ +

Definition at line 63 of file arm_power_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_power_q15 (q15_t pSrc,
uint32_t  blockSize,
q63_t pResult 
)
+
+
+ +

Sum of the squares of the elements of a Q15 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultsum of the squares value returned here
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 64-bit internal accumulator. The input is represented in 1.15 format. Intermediate multiplication yields a 2.30 format, and this result is added without saturation to a 64-bit accumulator in 34.30 format. With 33 guard bits in the accumulator, there is no risk of overflow, and the full precision of the intermediate multiplication is preserved. Finally, the return result is in 34.30 format.
+ +

Definition at line 62 of file arm_power_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_power_q7 (q7_t pSrc,
uint32_t  blockSize,
q31_t pResult 
)
+
+
+ +

Sum of the squares of the elements of a Q7 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultsum of the squares value returned here
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 32-bit internal accumulator. The input is represented in 1.7 format. Intermediate multiplication yields a 2.14 format, and this result is added without saturation to an accumulator in 18.14 format. With 17 guard bits in the accumulator, there is no risk of overflow, and the full precision of the intermediate multiplication is preserved. Finally, the return result is in 18.14 format.
+ +

Definition at line 62 of file arm_power_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__q15__to__x.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__q15__to__x.html new file mode 100644 index 000000000..9db84bf6c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__q15__to__x.html @@ -0,0 +1,230 @@ + + + + +CMSIS DSP Software Library: Convert 16-bit Integer value + + + + + + + + + +
+ +
+

Convert 16-bit Integer value
+ +[Support Functions] +

+
+
+ + + + + +

+Functions

void arm_q15_to_float (q15_t *pSrc, float32_t *pDst, uint32_t blockSize)
void arm_q15_to_q31 (q15_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_q15_to_q7 (q15_t *pSrc, q7_t *pDst, uint32_t blockSize)
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_q15_to_float (q15_t pSrc,
float32_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Converts the elements of the Q15 vector to floating-point vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the Q15 input vector
[out]*pDstpoints to the floating-point output vector
[in]blockSizelength of the input vector
+
+
+
Returns:
none.
+
Description:
+

The equation used for the conversion process is:

+
   
+ 	pDst[n] = (float32_t) pSrc[n] / 32768;   0 <= n < blockSize.   
+ 
+

Definition at line 66 of file arm_q15_to_float.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_q15_to_q31 (q15_t pSrc,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Converts the elements of the Q15 vector to Q31 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the Q15 input vector
[out]*pDstpoints to the Q31 output vector
[in]blockSizelength of the input vector
+
+
+
Returns:
none.
+
Description:
+

The equation used for the conversion process is:

+
   
+ 	pDst[n] = (q31_t) pSrc[n] << 16;   0 <= n < blockSize.   
+ 
+

Definition at line 59 of file arm_q15_to_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_q15_to_q7 (q15_t pSrc,
q7_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Converts the elements of the Q15 vector to Q7 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the Q15 input vector
[out]*pDstpoints to the Q7 output vector
[in]blockSizelength of the input vector
+
+
+
Returns:
none.
+
Description:
+

The equation used for the conversion process is:

+
   
+ 	pDst[n] = (q7_t) pSrc[n] >> 8;   0 <= n < blockSize.   
+ 
+

Definition at line 60 of file arm_q15_to_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__q31__to__x.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__q31__to__x.html new file mode 100644 index 000000000..05af0fc53 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__q31__to__x.html @@ -0,0 +1,231 @@ + + + + +CMSIS DSP Software Library: Convert 32-bit Integer value + + + + + + + + + +
+ +
+

Convert 32-bit Integer value
+ +[Support Functions] +

+
+
+ + + + + +

+Functions

void arm_q31_to_float (q31_t *pSrc, float32_t *pDst, uint32_t blockSize)
void arm_q31_to_q15 (q31_t *pSrc, q15_t *pDst, uint32_t blockSize)
void arm_q31_to_q7 (q31_t *pSrc, q7_t *pDst, uint32_t blockSize)
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_q31_to_float (q31_t pSrc,
float32_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Converts the elements of the Q31 vector to floating-point vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the Q31 input vector
[out]*pDstpoints to the floating-point output vector
[in]blockSizelength of the input vector
+
+
+
Returns:
none.
+
Description:
+

The equation used for the conversion process is:

+
   
+ 	pDst[n] = (float32_t) pSrc[n] / 2147483648;   0 <= n < blockSize.   
+ 
Examples:
arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 63 of file arm_q31_to_float.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_q31_to_q15 (q31_t pSrc,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Converts the elements of the Q31 vector to Q15 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the Q31 input vector
[out]*pDstpoints to the Q15 output vector
[in]blockSizelength of the input vector
+
+
+
Returns:
none.
+
Description:
+

The equation used for the conversion process is:

+
   
+ 	pDst[n] = (q15_t) pSrc[n] >> 16;   0 <= n < blockSize.   
+ 
+

Definition at line 59 of file arm_q31_to_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_q31_to_q7 (q31_t pSrc,
q7_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Converts the elements of the Q31 vector to Q7 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the Q31 input vector
[out]*pDstpoints to the Q7 output vector
[in]blockSizelength of the input vector
+
+
+
Returns:
none.
+
Description:
+

The equation used for the conversion process is:

+
   
+ 	pDst[n] = (q7_t) pSrc[n] >> 24;   0 <= n < blockSize.    
+ 
+

Definition at line 59 of file arm_q31_to_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__q7__to__x.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__q7__to__x.html new file mode 100644 index 000000000..f360d8a39 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__q7__to__x.html @@ -0,0 +1,230 @@ + + + + +CMSIS DSP Software Library: Convert 8-bit Integer value + + + + + + + + + +
+ +
+

Convert 8-bit Integer value
+ +[Support Functions] +

+
+
+ + + + + +

+Functions

void arm_q7_to_float (q7_t *pSrc, float32_t *pDst, uint32_t blockSize)
void arm_q7_to_q31 (q7_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_q7_to_q15 (q7_t *pSrc, q15_t *pDst, uint32_t blockSize)
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_q7_to_float (q7_t pSrc,
float32_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Converts the elements of the Q7 vector to floating-point vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the Q7 input vector
[out]*pDstpoints to the floating-point output vector
[in]blockSizelength of the input vector
+
+
+
Returns:
none.
+
Description:
+

The equation used for the conversion process is:

+
   
+ 	pDst[n] = (float32_t) pSrc[n] / 128;   0 <= n < blockSize.   
+ 
+

Definition at line 63 of file arm_q7_to_float.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_q7_to_q31 (q7_t pSrc,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Converts the elements of the Q7 vector to Q31 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the Q7 input vector
[out]*pDstpoints to the Q31 output vector
[in]blockSizelength of the input vector
+
+
+
Returns:
none.
+
Description:
+

The equation used for the conversion process is:

+
   
+ 	pDst[n] = (q31_t) pSrc[n] << 24;   0 <= n < blockSize.  
+ 
+

Definition at line 59 of file arm_q7_to_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_q7_to_q15 (q7_t pSrc,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Converts the elements of the Q7 vector to Q15 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the Q7 input vector
[out]*pDstpoints to the Q15 output vector
[in]blockSizelength of the input vector
+
+
+
Returns:
none.
+
Description:
+

The equation used for the conversion process is:

+
   
+ 	pDst[n] = (q15_t) pSrc[n] << 8;   0 <= n < blockSize.   
+ 
+

Definition at line 62 of file arm_q7_to_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__scale.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__scale.html new file mode 100644 index 000000000..0fa721572 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__scale.html @@ -0,0 +1,332 @@ + + + + +CMSIS DSP Software Library: Vector Scale + + + + + + + + + +
+ +
+

Vector Scale
+ +[Basic Math Functions] +

+
+
+ + + + + + +

+Functions

void arm_scale_f32 (float32_t *pSrc, float32_t scale, float32_t *pDst, uint32_t blockSize)
void arm_scale_q31 (q31_t *pSrc, q31_t scaleFract, int8_t shift, q31_t *pDst, uint32_t blockSize)
void arm_scale_q15 (q15_t *pSrc, q15_t scaleFract, int8_t shift, q15_t *pDst, uint32_t blockSize)
void arm_scale_q7 (q7_t *pSrc, q7_t scaleFract, int8_t shift, q7_t *pDst, uint32_t blockSize)
+

Detailed Description

+

Multiply a vector by a scalar value. For floating-point data, the algorithm used is:

+
   
+     pDst[n] = pSrc[n] * scale,   0 <= n < blockSize.   
+ 

In the fixed-point Q7, Q15, and Q31 functions, scale is represented by a fractional multiplication scaleFract and an arithmetic shift shift. The shift allows the gain of the scaling operation to exceed 1.0. The algorithm used with fixed-point data is:

+
   
+     pDst[n] = (pSrc[n] * scaleFract) << shift,   0 <= n < blockSize.   
+ 

The overall scale factor applied to the fixed-point data is

+
   
+     scale = scaleFract * 2^shift.   
+ 

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_scale_f32 (float32_t pSrc,
float32_t  scale,
float32_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Multiplies a floating-point vector by a scalar.

+
Parameters:
+ + + + + +
[in]*pSrcpoints to the input vector
[in]scalescale factor to be applied
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in the vector
+
+
+
Returns:
none.
+
Examples:
arm_graphic_equalizer_example_q31.c, and arm_signal_converge_example_f32.c.
+
+

Definition at line 78 of file arm_scale_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_scale_q31 (q31_t pSrc,
q31_t  scaleFract,
int8_t  shift,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Multiplies a Q31 vector by a scalar.

+
Parameters:
+ + + + + + +
[in]*pSrcpoints to the input vector
[in]scaleFractfractional portion of the scale value
[in]shiftnumber of bits to shift the result by
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in the vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The input data *pSrc and scaleFract are in 1.31 format. These are multiplied to yield a 2.62 intermediate result and this is shifted with saturation to 1.31 format.
+
Examples:
arm_graphic_equalizer_example_q31.c.
+
+

Definition at line 59 of file arm_scale_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_scale_q15 (q15_t pSrc,
q15_t  scaleFract,
int8_t  shift,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Multiplies a Q15 vector by a scalar.

+
Parameters:
+ + + + + + +
[in]*pSrcpoints to the input vector
[in]scaleFractfractional portion of the scale value
[in]shiftnumber of bits to shift the result by
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in the vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The input data *pSrc and scaleFract are in 1.15 format. These are multiplied to yield a 2.30 intermediate result and this is shifted with saturation to 1.15 format.
+ +

Definition at line 60 of file arm_scale_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_scale_q7 (q7_t pSrc,
q7_t  scaleFract,
int8_t  shift,
q7_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Multiplies a Q7 vector by a scalar.

+
Parameters:
+ + + + + + +
[in]*pSrcpoints to the input vector
[in]scaleFractfractional portion of the scale value
[in]shiftnumber of bits to shift the result by
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in the vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The input data *pSrc and scaleFract are in 1.7 format. These are multiplied to yield a 2.14 intermediate result and this is shifted with saturation to 1.7 format.
+ +

Definition at line 59 of file arm_scale_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__shift.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__shift.html new file mode 100644 index 000000000..e6a73c1ca --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__shift.html @@ -0,0 +1,250 @@ + + + + +CMSIS DSP Software Library: Vector Shift + + + + + + + + + +
+ +
+

Vector Shift
+ +[Basic Math Functions] +

+
+
+ + + + + +

+Functions

void arm_shift_q31 (q31_t *pSrc, int8_t shiftBits, q31_t *pDst, uint32_t blockSize)
void arm_shift_q15 (q15_t *pSrc, int8_t shiftBits, q15_t *pDst, uint32_t blockSize)
void arm_shift_q7 (q7_t *pSrc, int8_t shiftBits, q7_t *pDst, uint32_t blockSize)
+

Detailed Description

+

Shifts the elements of a fixed-point vector by a specified number of bits. There are separate functions for Q7, Q15, and Q31 data types. The underlying algorithm used is:

+
   
+     pDst[n] = pSrc[n] << shift,   0 <= n < blockSize.   
+ 

If shift is positive then the elements of the vector are shifted to the left. If shift is negative then the elements of the vector are shifted to the right.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_shift_q31 (q31_t pSrc,
int8_t  shiftBits,
q31_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Shifts the elements of a Q31 vector a specified number of bits.

+
Parameters:
+ + + + + +
[in]*pSrcpoints to the input vector
[in]shiftBitsnumber of bits to shift. A positive value shifts left; a negative value shifts right.
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in the vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated.
+ +

Definition at line 73 of file arm_shift_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_shift_q15 (q15_t pSrc,
int8_t  shiftBits,
q15_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Shifts the elements of a Q15 vector a specified number of bits.

+
Parameters:
+ + + + + +
[in]*pSrcpoints to the input vector
[in]shiftBitsnumber of bits to shift. A positive value shifts left; a negative value shifts right.
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in the vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.
+ +

Definition at line 58 of file arm_shift_q15.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void arm_shift_q7 (q7_t pSrc,
int8_t  shiftBits,
q7_t pDst,
uint32_t  blockSize 
)
+
+
+ +

Shifts the elements of a Q7 vector a specified number of bits.

+
Parameters:
+ + + + + +
[in]*pSrcpoints to the input vector
[in]shiftBitsnumber of bits to shift. A positive value shifts left; a negative value shifts right.
[out]*pDstpoints to the output vector
[in]blockSizenumber of samples in the vector
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function uses saturating arithmetic. Results outside of the allowable Q7 range [0x8 0x7F] will be saturated.
+ +

Definition at line 59 of file arm_shift_q7.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__sin.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__sin.html new file mode 100644 index 000000000..8e1a751ad --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__sin.html @@ -0,0 +1,261 @@ + + + + +CMSIS DSP Software Library: Sine + + + + + + + + + +
+ +
+

Sine
+ +[Fast Math Functions] +

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

+Functions

float32_t arm_sin_f32 (float32_t x)
q31_t arm_sin_q31 (q31_t x)
q15_t arm_sin_q15 (q15_t x)

+Variables

static const float32_t sinTable [259]
static const q31_t sinTableQ31 [259]
static const q15_t sinTableQ15 [259]
+

Detailed Description

+

Computes the trigonometric sine function using a combination of table lookup and cubic interpolation. There are separate functions for Q15, Q31, and floating-point data types. The input to the floating-point version is in radians while the fixed-point Q15 and Q31 have a scaled input with the range [0 1) mapping to [0 2*pi).

+

The implementation is based on table lookup using 256 values together with cubic interpolation. The steps used are:

+
    +
  1. Calculation of the nearest integer table index
  2. +
  3. Fetch the four table values a, b, c, and d
  4. +
  5. Compute the fractional portion (fract) of the table index.
  6. +
  7. Calculation of wa, wb, wc, wd
  8. +
  9. The final result equals a*wa + b*wb + c*wc + d*wd
  10. +
+

where

+
   
+    a=Table[index-1];   
+    b=Table[index+0];   
+    c=Table[index+1];   
+    d=Table[index+2];   
+ 

and

+
   
+    wa=-(1/6)*fract.^3 + (1/2)*fract.^2 - (1/3)*fract;   
+    wb=(1/2)*fract.^3 - fract.^2 - (1/2)*fract + 1;   
+    wc=-(1/2)*fract.^3+(1/2)*fract.^2+fract;   
+    wd=(1/6)*fract.^3 - (1/6)*fract;   
+ 

Function Documentation

+ +
+
+ + + + + + + + +
float32_t arm_sin_f32 (float32_t  x )
+
+
+ +

Fast approximation to the trigonometric sine function for floating-point data.

+
Parameters:
+ + +
[in]xinput value in radians.
+
+
+
Returns:
sin(x).
+
Examples:
arm_linear_interp_example_f32.c, and arm_sin_cos_example_f32.c.
+
+

Definition at line 195 of file arm_sin_f32.c.

+ +
+
+ +
+
+ + + + + + + + +
q31_t arm_sin_q31 (q31_t  x )
+
+
+ +

Fast approximation to the trigonometric sine function for Q31 data.

+
Parameters:
+ + +
[in]xScaled input value in radians.
+
+
+
Returns:
sin(x).
+

The Q31 input value is in the range [0 +1) and is mapped to a radian value in the range [0 2*pi).

+ +

Definition at line 136 of file arm_sin_q31.c.

+ +
+
+ +
+
+ + + + + + + + +
q15_t arm_sin_q15 (q15_t  x )
+
+
+ +

Fast approximation to the trigonometric sine function for Q15 data.

+
Parameters:
+ + +
[in]xScaled input value in radians.
+
+
+
Returns:
sin(x).
+

The Q15 input value is in the range [0 +1) and is mapped to a radian value in the range [0 2*pi).

+ +

Definition at line 106 of file arm_sin_q15.c.

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
const float32_t sinTable[259] [static]
+
+
+
Example code for Generation of Floating-point Sin Table: tableSize = 256;
for(n = -1; n < (tableSize + 1); n++)   
+ {   
+	sinTable[n+1]=sin(2*pi*n/tableSize);   
+ }
+
where pi value is 3.14159265358979
+ +

Definition at line 88 of file arm_sin_f32.c.

+ +
+
+ +
+
+ + + + +
const q31_t sinTableQ31[259] [static]
+
+
+
Tables generated are in Q31(1.31 Fixed point format) Generation of sin values in floating point:
tableSize = 256;     
+ for(n = -1; n < (tableSize + 1); n++)   
+ {   
+	sinTable[n+1]= sin(2*pi*n/tableSize);   
+ } 
where pi value is 3.14159265358979
+
Convert Floating point to Q31(Fixed point): (sinTable[i] * pow(2, 31))
+
rounding to nearest integer is done sinTable[i] += (sinTable[i] > 0 ? 0.5 :-0.5);
+ +

Definition at line 59 of file arm_sin_q31.c.

+ +
+
+ +
+
+ + + + +
const q15_t sinTableQ15[259] [static]
+
+
+
Example code for Generation of Q15 Sin Table:
+
tableSize = 256;   
+ for(n = -1; n < (tableSize + 1); n++)   
+ {   
+	sinTable[n+1]=sin(2*pi*n/tableSize);   
+ } 
where pi value is 3.14159265358979
+
Convert Floating point to Q15(Fixed point): (sinTable[i] * pow(2, 15))
+
rounding to nearest integer is done sinTable[i] += (sinTable[i] > 0 ? 0.5 :-0.5);
+ +

Definition at line 61 of file arm_sin_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__variance.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__variance.html new file mode 100644 index 000000000..478f25ab3 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/group__variance.html @@ -0,0 +1,228 @@ + + + + +CMSIS DSP Software Library: Variance + + + + + + + + + +
+ +
+

Variance
+ +[Statistics Functions] +

+
+
+ + + + + +

+Functions

void arm_var_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
void arm_var_q31 (q31_t *pSrc, uint32_t blockSize, q63_t *pResult)
void arm_var_q15 (q15_t *pSrc, uint32_t blockSize, q31_t *pResult)
+

Detailed Description

+

Calculates the variance of the elements in the input vector. The underlying algorithm is used:

+
   
+ 	Result = (sumOfSquares - sum2 / blockSize) / (blockSize - 1)
	   where, sumOfSquares = pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + ... + pSrc[blockSize-1] * pSrc[blockSize-1]
	                   sum = pSrc[0] + pSrc[1] + pSrc[2] + ... + pSrc[blockSize-1]  
+ 

There are separate functions for floating point, Q31, and Q15 data types.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_var_f32 (float32_t pSrc,
uint32_t  blockSize,
float32_t pResult 
)
+
+
+ +

Variance of the elements of a floating-point vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultvariance value returned here
+
+
+
Returns:
none.
+
Examples:
arm_class_marks_example_f32.c.
+
+

Definition at line 69 of file arm_var_f32.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_var_q31 (q31_t pSrc,
uint32_t  blockSize,
q63_t pResult 
)
+
+
+ +

Variance of the elements of a Q31 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultvariance value returned here
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using an internal 64-bit accumulator. The input is represented in 1.31 format, and intermediate multiplication yields a 2.62 format. The accumulator maintains full precision of the intermediate multiplication results, but provides only a single guard bit. There is no saturation on intermediate additions. If the accumulator overflows it wraps around and distorts the result. In order to avoid overflows completely the input signal must be scaled down by log2(blockSize) bits, as a total of blockSize additions are performed internally. Finally, the 2.62 accumulator is right shifted by 31 bits to yield a 1.31 format value.
+ +

Definition at line 66 of file arm_var_q31.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void arm_var_q15 (q15_t pSrc,
uint32_t  blockSize,
q31_t pResult 
)
+
+
+ +

Variance of the elements of a Q15 vector.

+
Parameters:
+ + + + +
[in]*pSrcpoints to the input vector
[in]blockSizelength of the input vector
[out]*pResultvariance value returned here
+
+
+
Returns:
none.
+

Scaling and Overflow Behavior:

+
The function is implemented using a 64-bit internal accumulator. The input is represented in 1.15 format. Intermediate multiplication yields a 2.30 format, and this result is added without saturation to a 64-bit accumulator in 34.30 format. With 33 guard bits in the accumulator, there is no risk of overflow, and the full precision of the intermediate multiplication is preserved. Finally, the 34.30 result is truncated to 34.15 format by discarding the lower 15 bits, and then saturated to yield a result in 1.15 format.
+ +

Definition at line 64 of file arm_var_q15.c.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/index.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/index.html new file mode 100644 index 000000000..099de2dc9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/index.html @@ -0,0 +1,124 @@ + + + + +CMSIS DSP Software Library: CMSIS DSP Software Library + + + + + + + + + +
+
+

CMSIS DSP Software Library

+
+
+

Version1.0.10

Introduction

+

This user manual describes the CMSIS DSP software library, a suite of common signal processing functions for use on Cortex-M processor based devices.

+

The library is divided into a number of modules each covering a specific category:

+
    +
  • Basic math functions
  • +
  • Fast math functions
  • +
  • Complex math functions
  • +
  • Filters
  • +
  • Matrix functions
  • +
  • Transforms
  • +
  • Motor control functions
  • +
  • Statistical functions
  • +
  • Support functions
  • +
  • Interpolation functions
  • +
+

The library has separate functions for operating on 8-bit integers, 16-bit integers, 32-bit integer and 32-bit floating-point values.

+

Processor Support

+

The library is completely written in C and is fully CMSIS compliant. High performance is achieved through maximum use of Cortex-M4 intrinsics.

+

The supplied library source code also builds and runs on the Cortex-M3 and Cortex-M0 processor, with the DSP intrinsics being emulated through software.

+

Toolchain Support

+

The library has been developed and tested with MDK-ARM version 4.21. The library is being tested in GCC and IAR toolchains and updates on this activity will be made available shortly.

+

Using the Library

+

The library installer contains prebuilt versions of the libraries in the Lib folder.

+
    +
  • arm_cortexM4lf_math.lib (Little endian and Floating Point Unit on Cortex-M4)
  • +
  • arm_cortexM4bf_math.lib (Big endian and Floating Point Unit on Cortex-M4)
  • +
  • arm_cortexM4l_math.lib (Little endian on Cortex-M4)
  • +
  • arm_cortexM4b_math.lib (Big endian on Cortex-M4)
  • +
  • arm_cortexM3l_math.lib (Little endian on Cortex-M3)
  • +
  • arm_cortexM3b_math.lib (Big endian on Cortex-M3)
  • +
  • arm_cortexM0l_math.lib (Little endian on Cortex-M0)
  • +
  • arm_cortexM0b_math.lib (Big endian on Cortex-M3)
  • +
+

The library functions are declared in the public file arm_math.h which is placed in the Include folder. Simply include this file and link the appropriate library in the application and begin calling the library functions. The Library supports single public header file arm_math.h for Cortex-M4/M3/M0 with little endian and big endian. Same header file will be used for floating point unit(FPU) variants. Define the appropriate pre processor MACRO ARM_MATH_CM4 or ARM_MATH_CM3 or ARM_MATH_CM0 depending on the target processor in the application.

+

Examples

+

The library ships with a number of examples which demonstrate how to use the library functions.

+

Building the Library

+

The library installer contains project files to re build libraries on MDK Tool chain in the CMSIS folder.

+
    +
  • arm_cortexM0b_math.uvproj
  • +
  • arm_cortexM0l_math.uvproj
  • +
  • arm_cortexM3b_math.uvproj
  • +
  • arm_cortexM3l_math.uvproj
  • +
  • arm_cortexM4b_math.uvproj
  • +
  • arm_cortexM4l_math.uvproj
  • +
  • arm_cortexM4bf_math.uvproj
  • +
  • arm_cortexM4lf_math.uvproj
  • +
+

Each library project have differant pre-processor macros.

+

ARM_MATH_CMx: Define macro ARM_MATH_CM4 for building the library on Cortex-M4 target, ARM_MATH_CM3 for building library on Cortex-M3 target and ARM_MATH_CM0 for building library on cortex-M0 target.

+

ARM_MATH_BIG_ENDIAN: Define macro ARM_MATH_BIG_ENDIAN to build the library for big endian targets. By default library builds for little endian targets.

+

ARM_MATH_MATRIX_CHECK: Define macro for checking on the input and output sizes of matrices

+

ARM_MATH_ROUNDING: Define macro for rounding on support functions

+

__FPU_PRESENT: Initialize macro __FPU_PRESENT = 1 when building on FPU supported Targets. Enable this macro for M4bf and M4lf libraries

+

The project can be built by opening the appropriate project in MDK-ARM 4.21 chain and defining the optional pre processor MACROs detailed above.

+

Copyright Notice

+

Copyright (C) 2010 ARM Limited. All rights reserved.

+
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/installdox b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/installdox new file mode 100644 index 000000000..2697a8177 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/installdox @@ -0,0 +1,117 @@ +#!/usr/bin/perl + +%subst = ( ); +$quiet = 0; + +if (open(F,"search.cfg")) +{ + $_= ; s/[ \t\n]*$//g ; $subst{"_doc"} = $_; + $_= ; s/[ \t\n]*$//g ; $subst{"_cgi"} = $_; +} + +while ( @ARGV ) { + $_ = shift @ARGV; + if ( s/^-// ) { + if ( /^l(.*)/ ) { + $v = ($1 eq "") ? shift @ARGV : $1; + ($v =~ /\/$/) || ($v .= "/"); + $_ = $v; + if ( /(.+)\@(.+)/ ) { + if ( exists $subst{$1} ) { + $subst{$1} = $2; + } else { + print STDERR "Unknown tag file $1 given with option -l\n"; + &usage(); + } + } else { + print STDERR "Argument $_ is invalid for option -l\n"; + &usage(); + } + } + elsif ( /^q/ ) { + $quiet = 1; + } + elsif ( /^\?|^h/ ) { + &usage(); + } + else { + print STDERR "Illegal option -$_\n"; + &usage(); + } + } + else { + push (@files, $_ ); + } +} + +foreach $sub (keys %subst) +{ + if ( $subst{$sub} eq "" ) + { + print STDERR "No substitute given for tag file `$sub'\n"; + &usage(); + } + elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) + { + print "Substituting $subst{$sub} for each occurrence of tag file $sub\n"; + } +} + +if ( ! @files ) { + if (opendir(D,".")) { + foreach $file ( readdir(D) ) { + $match = ".html"; + next if ( $file =~ /^\.\.?$/ ); + ($file =~ /$match/) && (push @files, $file); + ($file =~ "tree.js") && (push @files, $file); + } + closedir(D); + } +} + +if ( ! @files ) { + print STDERR "Warning: No input files given and none found!\n"; +} + +foreach $f (@files) +{ + if ( ! $quiet ) { + print "Editing: $f...\n"; + } + $oldf = $f; + $f .= ".bak"; + unless (rename $oldf,$f) { + print STDERR "Error: cannot rename file $oldf\n"; + exit 1; + } + if (open(F,"<$f")) { + unless (open(G,">$oldf")) { + print STDERR "Error: opening file $oldf for writing\n"; + exit 1; + } + if ($oldf ne "tree.js") { + while () { + s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; + print G "$_"; + } + } + else { + while () { + s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; + print G "$_"; + } + } + } + else { + print STDERR "Warning file $f does not exist\n"; + } + unlink $f; +} + +sub usage { + print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; + print STDERR "Options:\n"; + print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; + print STDERR " -q Quiet mode\n\n"; + exit 1; +} diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/linearInterpExampleMethod1.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/linearInterpExampleMethod1.gif new file mode 100644 index 000000000..615ac7524 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/linearInterpExampleMethod1.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/linearInterpExampleMethod2.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/linearInterpExampleMethod2.gif new file mode 100644 index 000000000..ed5da60e2 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/linearInterpExampleMethod2.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/matrixExample.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/matrixExample.gif new file mode 100644 index 000000000..bb2510d54 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/matrixExample.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/modules.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/modules.html new file mode 100644 index 000000000..cf34dd6a7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/modules.html @@ -0,0 +1,176 @@ + + + + +CMSIS DSP Software Library: Module Index + + + + + + + + + +
+
+

Modules

+
+
+Here is a list of all modules: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/nav_f.png b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/nav_f.png new file mode 100644 index 000000000..1b07a1620 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/nav_f.png differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/nav_h.png b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/nav_h.png new file mode 100644 index 000000000..01f5fa6a5 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/nav_h.png differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/open.png b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/open.png new file mode 100644 index 000000000..7b35d2c2c Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/open.png differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/park.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/park.gif new file mode 100644 index 000000000..db0fd40a9 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/park.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/parkFormula.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/parkFormula.gif new file mode 100644 index 000000000..3b1861bec Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/parkFormula.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/parkInvFormula.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/parkInvFormula.gif new file mode 100644 index 000000000..4cb89dfd8 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/parkInvFormula.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_5f.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_5f.html new file mode 100644 index 000000000..8d75ea27c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_5f.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ __CMSIS_GENERIC + arm_math.h +
+
+
+
+ __PACKq7 + arm_math.h +
+
+
+
+ __SIMD32 + arm_math.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_61.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_61.html new file mode 100644 index 000000000..5ff0deddf --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_61.html @@ -0,0 +1,4102 @@ + + + + + + + +
+
Loading...
+ + + +
+
+ A_f32 + arm_matrix_example_f32.c +
+
+
+
+ Ak + arm_convolution_example_f32.c +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ arm_bilinear_interp_f32 + arm_math.h +
+
+ + + + +
+
+ arm_bilinear_interp_q15 + arm_math.h +
+
+
+
+ arm_bilinear_interp_q31 + arm_math.h +
+
+
+
+ arm_bilinear_interp_q7 + arm_math.h +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ arm_circularRead_f32 + arm_math.h +
+
+
+
+ arm_circularRead_q15 + arm_math.h +
+
+
+
+ arm_circularRead_q7 + arm_math.h +
+
+
+
+ arm_circularWrite_f32 + arm_math.h +
+
+
+
+ arm_circularWrite_q15 + arm_math.h +
+
+
+
+ arm_circularWrite_q7 + arm_math.h +
+
+
+
+ arm_clarke_f32 + arm_math.h +
+
+
+
+ arm_clarke_q31 + arm_math.h +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+ +
+ + + + + + + + + + + + + +
+ +
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ arm_inv_clarke_f32 + arm_math.h +
+
+
+
+ arm_inv_clarke_q31 + arm_math.h +
+
+
+
+ arm_inv_park_f32 + arm_math.h +
+
+
+
+ arm_inv_park_q31 + arm_math.h +
+
+
+
+ arm_linear_interep_table + arm_linear_interp_example_f32.c +
+
+ +
+
+ arm_linear_interp_f32 + arm_math.h +
+
+ +
+
+ arm_linear_interp_q15 + arm_math.h +
+
+
+
+ arm_linear_interp_q31 + arm_math.h +
+
+
+
+ arm_linear_interp_q7 + arm_math.h +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+ ARM_MATH_ARGUMENT_ERROR + arm_math.h +
+
+
+
+ ARM_MATH_LENGTH_ERROR + arm_math.h +
+
+
+
+ ARM_MATH_NANINF + arm_math.h +
+
+
+
+ ARM_MATH_SINGULAR + arm_math.h +
+
+
+
+ ARM_MATH_SIZE_MISMATCH + arm_math.h +
+
+
+
+ ARM_MATH_SUCCESS + arm_math.h +
+
+
+
+ ARM_MATH_TEST_FAILURE + arm_math.h +
+
+ + + + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + + + + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + + + + + +
+ +
+ + + + + + + + + + + + + + + + +
+
+ arm_park_f32 + arm_math.h +
+
+
+
+ arm_park_q31 + arm_math.h +
+
+
+
+ arm_pid_f32 + arm_math.h +
+
+ + + + + + + + + +
+
+ arm_pid_q15 + arm_math.h +
+
+
+
+ arm_pid_q31 + arm_math.h +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ arm_recip_q15 + arm_math.h +
+
+
+
+ arm_recip_q31 + arm_math.h +
+
+ + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ +
+ +
+
+
+ arm_split_rfft_f32 + arm_rfft_f32.c +
+
+
+
+ arm_split_rfft_q15 + arm_rfft_q15.c +
+
+
+
+ arm_split_rfft_q31 + arm_rfft_q31.c +
+
+
+
+ arm_split_rifft_f32 + arm_rfft_f32.c +
+
+
+
+ arm_split_rifft_q15 + arm_rfft_q15.c +
+
+
+
+ arm_split_rifft_q31 + arm_rfft_q31.c +
+
+
+
+ arm_sqrt_f32 + arm_math.h +
+
+
+
+ arm_sqrt_q15 + arm_sqrt_q15.c +
+
+ +
+
+ arm_sqrt_q31 + arm_sqrt_q31.c +
+
+ +
+
+ arm_status + arm_math.h +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ armBitRevTable + arm_common_tables.c +
+
+
+
+ armRecipTableQ15 + arm_common_tables.c +
+
+
+
+ armRecipTableQ31 + arm_common_tables.c +
+
+
+
+ AT_f32 + arm_matrix_example_f32.c +
+
+
+
+ ATMA_f32 + arm_matrix_example_f32.c +
+
+
+
+ ATMAI_f32 + arm_matrix_example_f32.c +
+
+
+
+ AxB + arm_convolution_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_62.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_62.html new file mode 100644 index 000000000..d20bf17c4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_62.html @@ -0,0 +1,110 @@ + + + + + + + +
+
Loading...
+
+
+ B_f32 + arm_matrix_example_f32.c +
+
+
+
+ biquadStateBand1Q31 + arm_graphic_equalizer_example_q31.c +
+
+
+
+ biquadStateBand2Q31 + arm_graphic_equalizer_example_q31.c +
+
+
+
+ biquadStateBand3Q31 + arm_graphic_equalizer_example_q31.c +
+
+
+
+ biquadStateBand4Q31 + arm_graphic_equalizer_example_q31.c +
+
+
+
+ biquadStateBand5Q31 + arm_graphic_equalizer_example_q31.c +
+
+ + + +
+
+ Bk + arm_convolution_example_f32.c +
+
+
+
+ BLOCK_SIZE + arm_fir_example_f32.c +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_63.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_63.html new file mode 100644 index 000000000..94d9ae9fa --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_63.html @@ -0,0 +1,140 @@ + + + + + + + +
+
Loading...
+
+
+ clip_q31_to_q15 + arm_math.h +
+
+
+
+ clip_q31_to_q7 + arm_math.h +
+
+
+
+ clip_q63_to_q15 + arm_math.h +
+
+
+
+ clip_q63_to_q31 + arm_math.h +
+
+
+
+ coeffTable + arm_graphic_equalizer_example_q31.c +
+
+
+
+ cos_factors_128 + arm_dct4_init_f32.c +
+
+
+
+ cos_factors_2048 + arm_dct4_init_f32.c +
+
+
+
+ cos_factors_512 + arm_dct4_init_f32.c +
+
+
+
+ cos_factorsQ15_128 + arm_dct4_init_q15.c +
+
+
+
+ cos_factorsQ15_2048 + arm_dct4_init_q15.c +
+
+
+
+ cos_factorsQ15_512 + arm_dct4_init_q15.c +
+
+
+
+ cos_factorsQ31_128 + arm_dct4_init_q31.c +
+
+
+
+ cos_factorsQ31_2048 + arm_dct4_init_q31.c +
+
+
+
+ cos_factorsQ31_512 + arm_dct4_init_q31.c +
+
+
+
+ cosOutput + arm_sin_cos_example_f32.c +
+
+
+
+ cosSquareOutput + arm_sin_cos_example_f32.c +
+
+ +
+
+ cosTableQ15 + arm_cos_q15.c +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_64.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_64.html new file mode 100644 index 000000000..f57088be7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_64.html @@ -0,0 +1,61 @@ + + + + + + + +
+
Loading...
+ +
+
+ DELTA_COEFF + arm_signal_converge_example_f32.c +
+
+
+
+ DELTA_ERROR + arm_signal_converge_example_f32.c +
+
+
+
+ DELTA_Q15 + arm_math.h +
+
+
+
+ DELTA_Q31 + arm_math.h +
+
+
+
+ doBitReverse + arm_fft_bin_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_65.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_65.html new file mode 100644 index 000000000..c06f61fb4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_65.html @@ -0,0 +1,42 @@ + + + + + + + +
+
Loading...
+ +
+
+ err_signal + arm_signal_converge_example_f32.c +
+
+
+
+ errOutput + arm_signal_converge_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_66.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_66.html new file mode 100644 index 000000000..1a7e0a83a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_66.html @@ -0,0 +1,89 @@ + + + + + + + +
+
Loading...
+ + + +
+
+ fftSize + arm_fft_bin_example_f32.c +
+
+
+
+ FIRCoeff_f32 + arm_signal_converge_example_f32.c +
+
+
+
+ firCoeffs32 + arm_fir_example_f32.c +
+
+ +
+
+ float32_t + arm_math.h +
+
+
+
+ float64_t + arm_math.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_67.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_67.html new file mode 100644 index 000000000..581840676 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_67.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ gainDB + arm_graphic_equalizer_example_q31.c +
+
+
+
+ getinput + arm_signal_converge_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_69.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_69.html new file mode 100644 index 000000000..1c82524de --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_69.html @@ -0,0 +1,59 @@ + + + + + + + +
+
Loading...
+ + +
+
+ INDEX_MASK + arm_math.h +
+
+
+
+ INPUT_SPACING + arm_math.h +
+
+
+
+ inputQ31 + arm_graphic_equalizer_example_q31.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_6b.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_6b.html new file mode 100644 index 000000000..286eb6dbf --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_6b.html @@ -0,0 +1,50 @@ + + + + + + + +
+
Loading...
+ + + +
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_6c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_6c.html new file mode 100644 index 000000000..7378accbc --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_6c.html @@ -0,0 +1,54 @@ + + + + + + + +
+
Loading...
+ +
+
+ lmsNorm_instance + arm_signal_converge_example_f32.c +
+
+
+
+ lmsNormCoeff_f32 + arm_signal_converge_example_f32.c +
+
+
+
+ lmsStateF32 + arm_signal_converge_example_f32.c +
+
+
+
+ LPF_instance + arm_signal_converge_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_6d.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_6d.html new file mode 100644 index 000000000..ad8dd7887 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_6d.html @@ -0,0 +1,114 @@ + + + + + + + +
+
Loading...
+ + + +
+
+ max_marks + arm_class_marks_example_f32.c +
+
+ +
+
+ mean + arm_class_marks_example_f32.c +
+
+
+
+ min_marks + arm_class_marks_example_f32.c +
+
+ +
+
+ mult32x64 + arm_math.h +
+
+
+
+ multOutput + arm_dotproduct_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_6e.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_6e.html new file mode 100644 index 000000000..c3faa80c6 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_6e.html @@ -0,0 +1,167 @@ + + + + + + + +
+
Loading...
+ + + +
+
+ NUM_TAPS + arm_fir_example_f32.c +
+
+ + +
+
+ NUMFRAMES + arm_signal_converge_example_f32.c +
+
+ + + + + +
+
+ nValues + arm_linear_interp_instance_f32 +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_6f.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_6f.html new file mode 100644 index 000000000..c29c257e0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_6f.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ onebyfftLen + arm_cfft_radix4_instance_f32 +
+
+
+
+ outLen + arm_convolution_example_f32.c +
+
+
+
+ outputQ31 + arm_graphic_equalizer_example_q31.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_70.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_70.html new file mode 100644 index 000000000..93bd8a3a7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_70.html @@ -0,0 +1,250 @@ + + + + + + + +
+
Loading...
+ + + + + + +
+
+ PI + arm_math.h +
+
+ + + + + + + + + +
+
+ pYData + arm_linear_interp_instance_f32 +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_71.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_71.html new file mode 100644 index 000000000..c889272b9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_71.html @@ -0,0 +1,44 @@ + + + + + + + +
+
Loading...
+
+
+ q15_t + arm_math.h +
+
+
+
+ q31_t + arm_math.h +
+
+
+
+ q63_t + arm_math.h +
+
+
+
+ q7_t + arm_math.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_72.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_72.html new file mode 100644 index 000000000..ee66bb6e4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_72.html @@ -0,0 +1,89 @@ + + + + + + + +
+
Loading...
+
+
+ realCoefA + arm_rfft_init_f32.c +
+
+
+
+ realCoefAQ15 + arm_rfft_init_q15.c +
+
+
+
+ realCoefAQ31 + arm_rfft_init_q31.c +
+
+
+
+ realCoefB + arm_rfft_init_f32.c +
+
+
+
+ realCoefBQ15 + arm_rfft_init_q15.c +
+
+
+
+ realCoefBQ31 + arm_rfft_init_q31.c +
+
+ +
+
+ refDotProdOut + arm_dotproduct_example_f32.c +
+
+
+
+ refIndex + arm_fft_bin_example_f32.c +
+
+
+
+ refOutput + arm_fir_example_f32.c +
+
+
+
+ refVarianceOut + arm_variance_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_73.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_73.html new file mode 100644 index 000000000..592db630f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_73.html @@ -0,0 +1,164 @@ + + + + + + + +
+
Loading...
+
+
+ sinOutput + arm_sin_cos_example_f32.c +
+
+
+
+ sinSquareOutput + arm_sin_cos_example_f32.c +
+
+ +
+
+ sinTableQ15 + arm_sin_q15.c +
+
+ + +
+
+ snr1 + arm_linear_interp_example_f32.c +
+
+
+
+ snr2 + arm_linear_interp_example_f32.c +
+
+ + +
+
+ srcA_buf_f32 + arm_dotproduct_example_f32.c +
+
+
+
+ srcALen + arm_convolution_example_f32.c +
+
+
+
+ srcB_buf_f32 + arm_dotproduct_example_f32.c +
+
+
+
+ srcBLen + arm_convolution_example_f32.c +
+
+ + + +
+
+ std + arm_class_marks_example_f32.c +
+
+
+
+ student_num + arm_class_marks_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_74.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_74.html new file mode 100644 index 000000000..6d9ed50cc --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_74.html @@ -0,0 +1,201 @@ + + + + + + + +
+
Loading...
+
+
+ TABLE_SIZE + arm_math.h +
+
+
+
+ TABLE_SPACING_Q15 + arm_math.h +
+
+
+
+ TABLE_SPACING_Q31 + arm_math.h +
+
+ +
+
+ test_signal_converge + arm_signal_converge_example_f32.c +
+
+
+
+ test_signal_converge_example + arm_signal_converge_example_f32.c +
+
+
+
+ testIndex + arm_fft_bin_example_f32.c +
+
+ +
+
+ testInput_f32_10khz + arm_fft_bin_example_f32.c +
+
+
+
+ testInput_f32_1kHz_15kHz + arm_fir_example_f32.c +
+
+
+
+ testInputA_f32 + arm_convolution_example_f32.c +
+
+
+
+ testInputB_f32 + arm_convolution_example_f32.c +
+
+
+
+ testInputSin_f32 + arm_linear_interp_example_f32.c +
+
+
+
+ TESTLENGTH + arm_graphic_equalizer_example_q31.c +
+
+
+
+ testLinIntOutput + arm_linear_interp_example_f32.c +
+
+
+
+ testMarks_f32 + arm_class_marks_example_f32.c +
+
+ + +
+
+ testRefSinOutput32_f32 + arm_linear_interp_example_f32.c +
+
+
+
+ testUnity_f32 + arm_class_marks_example_f32.c +
+
+ + +
+
+ twiddleCoef + arm_cfft_radix4_init_f32.c +
+
+
+
+ twiddleCoefQ15 + arm_cfft_radix4_init_q15.c +
+
+
+
+ twiddleCoefQ31 + arm_cfft_radix4_init_q31.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_75.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_75.html new file mode 100644 index 000000000..dc84a13ca --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_75.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ USE_STATIC_INIT + arm_class_marks_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_76.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_76.html new file mode 100644 index 000000000..4366f2a09 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_76.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ var + arm_class_marks_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_77.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_77.html new file mode 100644 index 000000000..050963930 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_77.html @@ -0,0 +1,101 @@ + + + + + + + +
+
Loading...
+
+
+ Weights_128 + arm_dct4_init_f32.c +
+
+
+
+ Weights_2048 + arm_dct4_init_f32.c +
+
+
+
+ Weights_512 + arm_dct4_init_f32.c +
+
+
+
+ WeightsQ15_128 + arm_dct4_init_q15.c +
+
+
+
+ WeightsQ15_2048 + arm_dct4_init_q15.c +
+
+
+
+ WeightsQ15_512 + arm_dct4_init_q15.c +
+
+
+
+ WeightsQ31_128 + arm_dct4_init_q31.c +
+
+
+
+ WeightsQ31_2048 + arm_dct4_init_q31.c +
+
+
+
+ WeightsQ31_512 + arm_dct4_init_q31.c +
+
+ + + +
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_78.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_78.html new file mode 100644 index 000000000..0e2e4b543 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/all_78.html @@ -0,0 +1,57 @@ + + + + + + + +
+
Loading...
+ +
+
+ x1 + arm_linear_interp_instance_f32 +
+
+
+
+ X_f32 + arm_matrix_example_f32.c +
+
+
+
+ xRef_f32 + arm_matrix_example_f32.c +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/classes_61.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/classes_61.html new file mode 100644 index 000000000..0de89131a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/classes_61.html @@ -0,0 +1,275 @@ + + + + + + + +
+
Loading...
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/close.png b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/close.png new file mode 100644 index 000000000..9342d3dfe Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/close.png differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_5f.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_5f.html new file mode 100644 index 000000000..8d75ea27c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_5f.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ __CMSIS_GENERIC + arm_math.h +
+
+
+
+ __PACKq7 + arm_math.h +
+
+
+
+ __SIMD32 + arm_math.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_62.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_62.html new file mode 100644 index 000000000..0ac79c85f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_62.html @@ -0,0 +1,35 @@ + + + + + + + +
+
Loading...
+
+
+ BLOCK_SIZE + arm_fir_example_f32.c +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_64.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_64.html new file mode 100644 index 000000000..584c612d1 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_64.html @@ -0,0 +1,55 @@ + + + + + + + +
+
Loading...
+ +
+
+ DELTA_COEFF + arm_signal_converge_example_f32.c +
+
+
+
+ DELTA_ERROR + arm_signal_converge_example_f32.c +
+
+
+
+ DELTA_Q15 + arm_math.h +
+
+
+
+ DELTA_Q31 + arm_math.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_69.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_69.html new file mode 100644 index 000000000..b7024dcfa --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_69.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ INDEX_MASK + arm_math.h +
+
+
+
+ INPUT_SPACING + arm_math.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_6d.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_6d.html new file mode 100644 index 000000000..a9bf4daf8 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_6d.html @@ -0,0 +1,37 @@ + + + + + + + +
+
Loading...
+ +
+
+ MU + arm_signal_converge_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_6e.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_6e.html new file mode 100644 index 000000000..52a1463c0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_6e.html @@ -0,0 +1,62 @@ + + + + + + + +
+
Loading...
+
+
+ NUM_TAPS + arm_fir_example_f32.c +
+
+
+
+ NUMBLOCKS + arm_graphic_equalizer_example_q31.c +
+
+
+
+ NUMFRAMES + arm_signal_converge_example_f32.c +
+
+
+
+ NUMSTAGES + arm_graphic_equalizer_example_q31.c +
+
+
+
+ NUMSTUDENTS + arm_class_marks_example_f32.c +
+
+
+
+ NUMSUBJECTS + arm_class_marks_example_f32.c +
+
+
+
+ NUMTAPS + arm_signal_converge_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_70.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_70.html new file mode 100644 index 000000000..d83a9476d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_70.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ PI + arm_math.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_73.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_73.html new file mode 100644 index 000000000..a0bf9d555 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_73.html @@ -0,0 +1,39 @@ + + + + + + + +
+
Loading...
+ + +
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_74.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_74.html new file mode 100644 index 000000000..3214e1d1c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_74.html @@ -0,0 +1,56 @@ + + + + + + + +
+
Loading...
+
+
+ TABLE_SIZE + arm_math.h +
+
+
+
+ TABLE_SPACING_Q15 + arm_math.h +
+
+
+
+ TABLE_SPACING_Q31 + arm_math.h +
+
+ +
+
+ TESTLENGTH + arm_graphic_equalizer_example_q31.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_75.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_75.html new file mode 100644 index 000000000..dc84a13ca --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_75.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ USE_STATIC_INIT + arm_class_marks_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_78.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_78.html new file mode 100644 index 000000000..1cbf493e9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/defines_78.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ XSPACING + arm_linear_interp_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/enums_61.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/enums_61.html new file mode 100644 index 000000000..76c31ca49 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/enums_61.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ arm_status + arm_math.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/enumvalues_61.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/enumvalues_61.html new file mode 100644 index 000000000..b0ceaa122 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/enumvalues_61.html @@ -0,0 +1,62 @@ + + + + + + + +
+
Loading...
+
+
+ ARM_MATH_ARGUMENT_ERROR + arm_math.h +
+
+
+
+ ARM_MATH_LENGTH_ERROR + arm_math.h +
+
+
+
+ ARM_MATH_NANINF + arm_math.h +
+
+
+
+ ARM_MATH_SINGULAR + arm_math.h +
+
+
+
+ ARM_MATH_SIZE_MISMATCH + arm_math.h +
+
+
+
+ ARM_MATH_SUCCESS + arm_math.h +
+
+
+
+ ARM_MATH_TEST_FAILURE + arm_math.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/files_61.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/files_61.html new file mode 100644 index 000000000..5850b85f4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/files_61.html @@ -0,0 +1,1280 @@ + + + + + + + +
+
Loading...
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ +
+ + + + + + +
+ +
+
+ +
+
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + +
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+
+ +
+
+ +
+
+ +
+ + + +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+
+ +
+ + + + + + + + + + + +
+ +
+
+ +
+
+ +
+ + +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/functions_61.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/functions_61.html new file mode 100644 index 000000000..aa1936f4f --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/functions_61.html @@ -0,0 +1,2450 @@ + + + + + + + +
+
Loading...
+ + + + + + + + +
+
+ arm_bilinear_interp_f32 + arm_math.h +
+
+
+
+ arm_bilinear_interp_q15 + arm_math.h +
+
+
+
+ arm_bilinear_interp_q31 + arm_math.h +
+
+
+
+ arm_bilinear_interp_q7 + arm_math.h +
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+ arm_circularRead_f32 + arm_math.h +
+
+
+
+ arm_circularRead_q15 + arm_math.h +
+
+
+
+ arm_circularRead_q7 + arm_math.h +
+
+
+
+ arm_circularWrite_f32 + arm_math.h +
+
+
+
+ arm_circularWrite_q15 + arm_math.h +
+
+
+
+ arm_circularWrite_q7 + arm_math.h +
+
+
+
+ arm_clarke_f32 + arm_math.h +
+
+
+
+ arm_clarke_q31 + arm_math.h +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ arm_inv_clarke_f32 + arm_math.h +
+
+
+
+ arm_inv_clarke_q31 + arm_math.h +
+
+
+
+ arm_inv_park_f32 + arm_math.h +
+
+
+
+ arm_inv_park_q31 + arm_math.h +
+
+
+
+ arm_linear_interp_f32 + arm_math.h +
+
+
+
+ arm_linear_interp_q15 + arm_math.h +
+
+
+
+ arm_linear_interp_q31 + arm_math.h +
+
+
+
+ arm_linear_interp_q7 + arm_math.h +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ arm_park_f32 + arm_math.h +
+
+
+
+ arm_park_q31 + arm_math.h +
+
+
+
+ arm_pid_f32 + arm_math.h +
+
+ + + +
+
+ arm_pid_q15 + arm_math.h +
+
+
+
+ arm_pid_q31 + arm_math.h +
+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ arm_recip_q15 + arm_math.h +
+
+
+
+ arm_recip_q31 + arm_math.h +
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+ arm_split_rfft_f32 + arm_rfft_f32.c +
+
+
+
+ arm_split_rfft_q15 + arm_rfft_q15.c +
+
+
+
+ arm_split_rfft_q31 + arm_rfft_q31.c +
+
+
+
+ arm_split_rifft_f32 + arm_rfft_f32.c +
+
+
+
+ arm_split_rifft_q15 + arm_rfft_q15.c +
+
+
+
+ arm_split_rifft_q31 + arm_rfft_q31.c +
+
+
+
+ arm_sqrt_f32 + arm_math.h +
+
+
+
+ arm_sqrt_q15 + arm_sqrt_q15.c +
+
+
+
+ arm_sqrt_q31 + arm_sqrt_q31.c +
+
+ + + + + + + + + + +
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/functions_63.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/functions_63.html new file mode 100644 index 000000000..8f7169e08 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/functions_63.html @@ -0,0 +1,44 @@ + + + + + + + +
+
Loading...
+
+
+ clip_q31_to_q15 + arm_math.h +
+
+
+
+ clip_q31_to_q7 + arm_math.h +
+
+
+
+ clip_q63_to_q15 + arm_math.h +
+
+
+
+ clip_q63_to_q31 + arm_math.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/functions_67.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/functions_67.html new file mode 100644 index 000000000..0a70c9ecd --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/functions_67.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ getinput + arm_signal_converge_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/functions_6d.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/functions_6d.html new file mode 100644 index 000000000..7eb63ba6b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/functions_6d.html @@ -0,0 +1,44 @@ + + + + + + + +
+
Loading...
+ +
+
+ mult32x64 + arm_math.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/functions_74.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/functions_74.html new file mode 100644 index 000000000..bf5b59a4b --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/functions_74.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ test_signal_converge + arm_signal_converge_example_f32.c +
+
+
+
+ test_signal_converge_example + arm_signal_converge_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/mag_sel.png b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/mag_sel.png new file mode 100644 index 000000000..81f6040a2 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/mag_sel.png differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/nomatches.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/nomatches.html new file mode 100644 index 000000000..b1ded27e9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
+
No Matches
+
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/search.css b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/search.css new file mode 100644 index 000000000..50249e56d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/search.css @@ -0,0 +1,240 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#searchli { + float: right; + display: block; + width: 170px; + height: 36px; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:116px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 1; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/search.js b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/search.js new file mode 100644 index 000000000..29a24bd58 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/search.js @@ -0,0 +1,742 @@ +// Search script generated by doxygen +// Copyright (C) 2009 by Dimitri van Heesch. + +// The code in this file is loosly based on main.js, part of Natural Docs, +// which is Copyright (C) 2003-2008 Greg Valure +// Natural Docs is licensed under the GPL. + +var indexSectionsWithContent = +{ + 0: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010111111101011111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 1: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 2: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 3: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101000100000100000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 4: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111101011111101110111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 5: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 6: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 7: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 8: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010100001000110100111001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "files", + 3: "functions", + 4: "variables", + 5: "typedefs", + 6: "enums", + 7: "enumvalues", + 8: "defines" +}; + +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var hexCode; + if (code<16) + { + hexCode="0"+code.toString(16); + } + else + { + hexCode=code.toString(16); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + if (indexSectionsWithContent[this.searchIndex].charAt(code) == '1') + { + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location.href = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/search_l.png b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/search_l.png new file mode 100644 index 000000000..c872f4da4 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/search_l.png differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/search_m.png b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/search_m.png new file mode 100644 index 000000000..b429a16ba Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/search_m.png differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/search_r.png b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/search_r.png new file mode 100644 index 000000000..97ee8b439 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/search_r.png differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/typedefs_66.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/typedefs_66.html new file mode 100644 index 000000000..3f3d94fd5 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/typedefs_66.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ float32_t + arm_math.h +
+
+
+
+ float64_t + arm_math.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/typedefs_71.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/typedefs_71.html new file mode 100644 index 000000000..c889272b9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/typedefs_71.html @@ -0,0 +1,44 @@ + + + + + + + +
+
Loading...
+
+
+ q15_t + arm_math.h +
+
+
+
+ q31_t + arm_math.h +
+
+
+
+ q63_t + arm_math.h +
+
+
+
+ q7_t + arm_math.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_61.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_61.html new file mode 100644 index 000000000..2da279f14 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_61.html @@ -0,0 +1,109 @@ + + + + + + + +
+
Loading...
+ + + +
+
+ A_f32 + arm_matrix_example_f32.c +
+
+
+
+ Ak + arm_convolution_example_f32.c +
+
+
+
+ arm_linear_interep_table + arm_linear_interp_example_f32.c +
+
+
+
+ armBitRevTable + arm_common_tables.c +
+
+
+
+ armRecipTableQ15 + arm_common_tables.c +
+
+
+
+ armRecipTableQ31 + arm_common_tables.c +
+
+
+
+ AT_f32 + arm_matrix_example_f32.c +
+
+
+
+ ATMA_f32 + arm_matrix_example_f32.c +
+
+
+
+ ATMAI_f32 + arm_matrix_example_f32.c +
+
+
+
+ AxB + arm_convolution_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_62.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_62.html new file mode 100644 index 000000000..edeb3083c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_62.html @@ -0,0 +1,102 @@ + + + + + + + +
+
Loading...
+
+
+ B_f32 + arm_matrix_example_f32.c +
+
+
+
+ biquadStateBand1Q31 + arm_graphic_equalizer_example_q31.c +
+
+
+
+ biquadStateBand2Q31 + arm_graphic_equalizer_example_q31.c +
+
+
+
+ biquadStateBand3Q31 + arm_graphic_equalizer_example_q31.c +
+
+
+
+ biquadStateBand4Q31 + arm_graphic_equalizer_example_q31.c +
+
+
+
+ biquadStateBand5Q31 + arm_graphic_equalizer_example_q31.c +
+
+ + + +
+
+ Bk + arm_convolution_example_f32.c +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_63.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_63.html new file mode 100644 index 000000000..854bab0b1 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_63.html @@ -0,0 +1,116 @@ + + + + + + + +
+
Loading...
+
+
+ coeffTable + arm_graphic_equalizer_example_q31.c +
+
+
+
+ cos_factors_128 + arm_dct4_init_f32.c +
+
+
+
+ cos_factors_2048 + arm_dct4_init_f32.c +
+
+
+
+ cos_factors_512 + arm_dct4_init_f32.c +
+
+
+
+ cos_factorsQ15_128 + arm_dct4_init_q15.c +
+
+
+
+ cos_factorsQ15_2048 + arm_dct4_init_q15.c +
+
+
+
+ cos_factorsQ15_512 + arm_dct4_init_q15.c +
+
+
+
+ cos_factorsQ31_128 + arm_dct4_init_q31.c +
+
+
+
+ cos_factorsQ31_2048 + arm_dct4_init_q31.c +
+
+
+
+ cos_factorsQ31_512 + arm_dct4_init_q31.c +
+
+
+
+ cosOutput + arm_sin_cos_example_f32.c +
+
+
+
+ cosSquareOutput + arm_sin_cos_example_f32.c +
+
+ +
+
+ cosTableQ15 + arm_cos_q15.c +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_64.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_64.html new file mode 100644 index 000000000..7da528e30 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_64.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ doBitReverse + arm_fft_bin_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_65.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_65.html new file mode 100644 index 000000000..c06f61fb4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_65.html @@ -0,0 +1,42 @@ + + + + + + + +
+
Loading...
+ +
+
+ err_signal + arm_signal_converge_example_f32.c +
+
+
+
+ errOutput + arm_signal_converge_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_66.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_66.html new file mode 100644 index 000000000..68114c4fa --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_66.html @@ -0,0 +1,77 @@ + + + + + + + +
+
Loading...
+ + + +
+
+ fftSize + arm_fft_bin_example_f32.c +
+
+
+
+ FIRCoeff_f32 + arm_signal_converge_example_f32.c +
+
+
+
+ firCoeffs32 + arm_fir_example_f32.c +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_67.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_67.html new file mode 100644 index 000000000..e2b59957a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_67.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ gainDB + arm_graphic_equalizer_example_q31.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_69.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_69.html new file mode 100644 index 000000000..5571299d3 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_69.html @@ -0,0 +1,47 @@ + + + + + + + +
+
Loading...
+ + +
+
+ inputQ31 + arm_graphic_equalizer_example_q31.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_6b.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_6b.html new file mode 100644 index 000000000..286eb6dbf --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_6b.html @@ -0,0 +1,50 @@ + + + + + + + +
+
Loading...
+ + + +
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_6c.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_6c.html new file mode 100644 index 000000000..7378accbc --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_6c.html @@ -0,0 +1,54 @@ + + + + + + + +
+
Loading...
+ +
+
+ lmsNorm_instance + arm_signal_converge_example_f32.c +
+
+
+
+ lmsNormCoeff_f32 + arm_signal_converge_example_f32.c +
+
+
+
+ lmsStateF32 + arm_signal_converge_example_f32.c +
+
+
+
+ LPF_instance + arm_signal_converge_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_6d.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_6d.html new file mode 100644 index 000000000..45f41dae9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_6d.html @@ -0,0 +1,78 @@ + + + + + + + +
+
Loading...
+ +
+
+ max_marks + arm_class_marks_example_f32.c +
+
+ +
+
+ mean + arm_class_marks_example_f32.c +
+
+
+
+ min_marks + arm_class_marks_example_f32.c +
+
+ +
+
+ multOutput + arm_dotproduct_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_6e.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_6e.html new file mode 100644 index 000000000..e3578fbce --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_6e.html @@ -0,0 +1,144 @@ + + + + + + + +
+
Loading...
+ + + +
+
+ numBlocks + arm_fir_example_f32.c +
+
+ + + +
+
+ numStudents + arm_class_marks_example_f32.c +
+
+
+
+ numSubjects + arm_class_marks_example_f32.c +
+
+ +
+
+ nValues + arm_linear_interp_instance_f32 +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_6f.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_6f.html new file mode 100644 index 000000000..c29c257e0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_6f.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ onebyfftLen + arm_cfft_radix4_instance_f32 +
+
+
+
+ outLen + arm_convolution_example_f32.c +
+
+
+
+ outputQ31 + arm_graphic_equalizer_example_q31.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_70.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_70.html new file mode 100644 index 000000000..c2bc27043 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_70.html @@ -0,0 +1,244 @@ + + + + + + + +
+
Loading...
+ + + + + + + + + + + + + + + +
+
+ pYData + arm_linear_interp_instance_f32 +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_72.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_72.html new file mode 100644 index 000000000..ee66bb6e4 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_72.html @@ -0,0 +1,89 @@ + + + + + + + +
+
Loading...
+
+
+ realCoefA + arm_rfft_init_f32.c +
+
+
+
+ realCoefAQ15 + arm_rfft_init_q15.c +
+
+
+
+ realCoefAQ31 + arm_rfft_init_q31.c +
+
+
+
+ realCoefB + arm_rfft_init_f32.c +
+
+
+
+ realCoefBQ15 + arm_rfft_init_q15.c +
+
+
+
+ realCoefBQ31 + arm_rfft_init_q31.c +
+
+ +
+
+ refDotProdOut + arm_dotproduct_example_f32.c +
+
+
+
+ refIndex + arm_fft_bin_example_f32.c +
+
+
+
+ refOutput + arm_fir_example_f32.c +
+
+
+
+ refVarianceOut + arm_variance_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_73.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_73.html new file mode 100644 index 000000000..de0b2b425 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_73.html @@ -0,0 +1,145 @@ + + + + + + + +
+
Loading...
+
+
+ sinOutput + arm_sin_cos_example_f32.c +
+
+
+
+ sinSquareOutput + arm_sin_cos_example_f32.c +
+
+ +
+
+ sinTableQ15 + arm_sin_q15.c +
+
+ + +
+
+ snr1 + arm_linear_interp_example_f32.c +
+
+
+
+ snr2 + arm_linear_interp_example_f32.c +
+
+
+
+ srcA_buf_f32 + arm_dotproduct_example_f32.c +
+
+
+
+ srcALen + arm_convolution_example_f32.c +
+
+
+
+ srcB_buf_f32 + arm_dotproduct_example_f32.c +
+
+
+
+ srcBLen + arm_convolution_example_f32.c +
+
+ + + +
+
+ std + arm_class_marks_example_f32.c +
+
+
+
+ student_num + arm_class_marks_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_74.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_74.html new file mode 100644 index 000000000..d9f01edba --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_74.html @@ -0,0 +1,153 @@ + + + + + + + +
+
Loading...
+
+
+ testIndex + arm_fft_bin_example_f32.c +
+
+ +
+
+ testInput_f32_10khz + arm_fft_bin_example_f32.c +
+
+
+
+ testInput_f32_1kHz_15kHz + arm_fir_example_f32.c +
+
+
+
+ testInputA_f32 + arm_convolution_example_f32.c +
+
+
+
+ testInputB_f32 + arm_convolution_example_f32.c +
+
+
+
+ testInputSin_f32 + arm_linear_interp_example_f32.c +
+
+
+
+ testLinIntOutput + arm_linear_interp_example_f32.c +
+
+
+
+ testMarks_f32 + arm_class_marks_example_f32.c +
+
+ + +
+
+ testRefSinOutput32_f32 + arm_linear_interp_example_f32.c +
+
+
+
+ testUnity_f32 + arm_class_marks_example_f32.c +
+
+ + +
+
+ twiddleCoef + arm_cfft_radix4_init_f32.c +
+
+
+
+ twiddleCoefQ15 + arm_cfft_radix4_init_q15.c +
+
+
+
+ twiddleCoefQ31 + arm_cfft_radix4_init_q31.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_76.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_76.html new file mode 100644 index 000000000..4366f2a09 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_76.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ var + arm_class_marks_example_f32.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_77.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_77.html new file mode 100644 index 000000000..050963930 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_77.html @@ -0,0 +1,101 @@ + + + + + + + +
+
Loading...
+
+
+ Weights_128 + arm_dct4_init_f32.c +
+
+
+
+ Weights_2048 + arm_dct4_init_f32.c +
+
+
+
+ Weights_512 + arm_dct4_init_f32.c +
+
+
+
+ WeightsQ15_128 + arm_dct4_init_q15.c +
+
+
+
+ WeightsQ15_2048 + arm_dct4_init_q15.c +
+
+
+
+ WeightsQ15_512 + arm_dct4_init_q15.c +
+
+
+
+ WeightsQ31_128 + arm_dct4_init_q31.c +
+
+
+
+ WeightsQ31_2048 + arm_dct4_init_q31.c +
+
+
+
+ WeightsQ31_512 + arm_dct4_init_q31.c +
+
+ + + +
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_78.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_78.html new file mode 100644 index 000000000..8bffbb6b0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/search/variables_78.html @@ -0,0 +1,54 @@ + + + + + + + +
+
Loading...
+ +
+
+ x1 + arm_linear_interp_instance_f32 +
+
+
+
+ X_f32 + arm_matrix_example_f32.c +
+
+
+
+ xRef_f32 + arm_matrix_example_f32.c +
+
+
+
+ xSpacing + arm_linear_interp_instance_f32 +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/sinCos.gif b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/sinCos.gif new file mode 100644 index 000000000..b31221f9c Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/sinCos.gif differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__bilinear__interp__instance__f32.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__bilinear__interp__instance__f32.html new file mode 100644 index 000000000..92861ccbf --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__bilinear__interp__instance__f32.html @@ -0,0 +1,143 @@ + + + + +CMSIS DSP Software Library: arm_bilinear_interp_instance_f32 Struct Reference + + + + + + + + + +
+ +
+

arm_bilinear_interp_instance_f32 Struct Reference

+
+
+ +

Instance structure for the floating-point bilinear interpolation function. +More...

+ +

#include <arm_math.h>

+ + + + + +

+Data Fields

uint16_t numRows
uint16_t numCols
float32_tpData
+

Detailed Description

+

Instance structure for the floating-point bilinear interpolation function.

+ +

Definition at line 1783 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of rows in the data table.

+ +

Definition at line 1785 of file arm_math.h.

+ +
+
+ +
+ +
+

number of columns in the data table.

+ +

Definition at line 1786 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the data table.

+ +

Definition at line 1787 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__bilinear__interp__instance__q15.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__bilinear__interp__instance__q15.html new file mode 100644 index 000000000..46988fef1 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__bilinear__interp__instance__q15.html @@ -0,0 +1,143 @@ + + + + +CMSIS DSP Software Library: arm_bilinear_interp_instance_q15 Struct Reference + + + + + + + + + +
+ +
+

arm_bilinear_interp_instance_q15 Struct Reference

+
+
+ +

Instance structure for the Q15 bilinear interpolation function. +More...

+ +

#include <arm_math.h>

+ + + + + +

+Data Fields

uint16_t numRows
uint16_t numCols
q15_tpData
+

Detailed Description

+

Instance structure for the Q15 bilinear interpolation function.

+ +

Definition at line 1805 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of rows in the data table.

+ +

Definition at line 1807 of file arm_math.h.

+ +
+
+ +
+ +
+

number of columns in the data table.

+ +

Definition at line 1808 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the data table.

+ +

Definition at line 1809 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__bilinear__interp__instance__q31.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__bilinear__interp__instance__q31.html new file mode 100644 index 000000000..664677329 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__bilinear__interp__instance__q31.html @@ -0,0 +1,143 @@ + + + + +CMSIS DSP Software Library: arm_bilinear_interp_instance_q31 Struct Reference + + + + + + + + + +
+ +
+

arm_bilinear_interp_instance_q31 Struct Reference

+
+
+ +

Instance structure for the Q31 bilinear interpolation function. +More...

+ +

#include <arm_math.h>

+ + + + + +

+Data Fields

uint16_t numRows
uint16_t numCols
q31_tpData
+

Detailed Description

+

Instance structure for the Q31 bilinear interpolation function.

+ +

Definition at line 1794 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of rows in the data table.

+ +

Definition at line 1796 of file arm_math.h.

+ +
+
+ +
+ +
+

number of columns in the data table.

+ +

Definition at line 1797 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the data table.

+ +

Definition at line 1798 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__bilinear__interp__instance__q7.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__bilinear__interp__instance__q7.html new file mode 100644 index 000000000..67de8f651 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__bilinear__interp__instance__q7.html @@ -0,0 +1,143 @@ + + + + +CMSIS DSP Software Library: arm_bilinear_interp_instance_q7 Struct Reference + + + + + + + + + +
+ +
+

arm_bilinear_interp_instance_q7 Struct Reference

+
+
+ +

Instance structure for the Q15 bilinear interpolation function. +More...

+ +

#include <arm_math.h>

+ + + + + +

+Data Fields

uint16_t numRows
uint16_t numCols
q7_tpData
+

Detailed Description

+

Instance structure for the Q15 bilinear interpolation function.

+ +

Definition at line 1816 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of rows in the data table.

+ +

Definition at line 1818 of file arm_math.h.

+ +
+
+ +
+ +
+

number of columns in the data table.

+ +

Definition at line 1819 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the data table.

+ +

Definition at line 1820 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__biquad__cas__df1__32x64__ins__q31.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__biquad__cas__df1__32x64__ins__q31.html new file mode 100644 index 000000000..018882632 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__biquad__cas__df1__32x64__ins__q31.html @@ -0,0 +1,163 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cas_df1_32x64_ins_q31 Struct Reference + + + + + + + + + +
+ +
+

arm_biquad_cas_df1_32x64_ins_q31 Struct Reference

+
+
+ +

Instance structure for the high precision Q31 Biquad cascade filter. +More...

+ +

#include <arm_math.h>

+ + + + + + +

+Data Fields

uint8_t numStages
q63_tpState
q31_tpCoeffs
uint8_t postShift
+

Detailed Description

+

Instance structure for the high precision Q31 Biquad cascade filter.

+
Examples:
+

arm_graphic_equalizer_example_q31.c.

+
+
+

Definition at line 3539 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of 2nd order stages in the filter. Overall order is 2*numStages.

+ +

Definition at line 3541 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the array of state coefficients. The array is of length 4*numStages.

+ +

Definition at line 3542 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the array of coefficients. The array is of length 5*numStages.

+ +

Definition at line 3543 of file arm_math.h.

+ +
+
+ +
+ +
+

additional shift, in bits, applied to each output sample.

+ +

Definition at line 3544 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__biquad__cascade__df2_t__instance__f32.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__biquad__cascade__df2_t__instance__f32.html new file mode 100644 index 000000000..8e5a8a49d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__biquad__cascade__df2_t__instance__f32.html @@ -0,0 +1,143 @@ + + + + +CMSIS DSP Software Library: arm_biquad_cascade_df2T_instance_f32 Struct Reference + + + + + + + + + +
+ +
+

arm_biquad_cascade_df2T_instance_f32 Struct Reference

+
+
+ +

Instance structure for the floating-point transposed direct form II Biquad cascade filter. +More...

+ +

#include <arm_math.h>

+ + + + + +

+Data Fields

uint8_t numStages
float32_tpState
float32_tpCoeffs
+

Detailed Description

+

Instance structure for the floating-point transposed direct form II Biquad cascade filter.

+ +

Definition at line 3586 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of 2nd order stages in the filter. Overall order is 2*numStages.

+ +

Definition at line 3588 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the array of state coefficients. The array is of length 2*numStages.

+ +

Definition at line 3589 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the array of coefficients. The array is of length 5*numStages.

+ +

Definition at line 3590 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__biquad__casd__df1__inst__f32.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__biquad__casd__df1__inst__f32.html new file mode 100644 index 000000000..fb6327bb3 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__biquad__casd__df1__inst__f32.html @@ -0,0 +1,143 @@ + + + + +CMSIS DSP Software Library: arm_biquad_casd_df1_inst_f32 Struct Reference + + + + + + + + + +
+ +
+

arm_biquad_casd_df1_inst_f32 Struct Reference

+
+
+ +

Instance structure for the floating-point Biquad cascade filter. +More...

+ +

#include <arm_math.h>

+ + + + + +

+Data Fields

uint32_t numStages
float32_tpState
float32_tpCoeffs
+

Detailed Description

+

Instance structure for the floating-point Biquad cascade filter.

+ +

Definition at line 1195 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of 2nd order stages in the filter. Overall order is 2*numStages.

+ +

Definition at line 1197 of file arm_math.h.

+ +
+
+ +
+ +
+

Points to the array of state coefficients. The array is of length 4*numStages.

+ +

Definition at line 1198 of file arm_math.h.

+ +
+
+ +
+ +
+

Points to the array of coefficients. The array is of length 5*numStages.

+ +

Definition at line 1199 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__biquad__casd__df1__inst__q15.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__biquad__casd__df1__inst__q15.html new file mode 100644 index 000000000..f0f77eb93 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__biquad__casd__df1__inst__q15.html @@ -0,0 +1,160 @@ + + + + +CMSIS DSP Software Library: arm_biquad_casd_df1_inst_q15 Struct Reference + + + + + + + + + +
+ +
+

arm_biquad_casd_df1_inst_q15 Struct Reference

+
+
+ +

Instance structure for the Q15 Biquad cascade filter. +More...

+ +

#include <arm_math.h>

+ + + + + + +

+Data Fields

int8_t numStages
q15_tpState
q15_tpCoeffs
int8_t postShift
+

Detailed Description

+

Instance structure for the Q15 Biquad cascade filter.

+ +

Definition at line 1170 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of 2nd order stages in the filter. Overall order is 2*numStages.

+ +

Definition at line 1172 of file arm_math.h.

+ +
+
+ +
+ +
+

Points to the array of state coefficients. The array is of length 4*numStages.

+ +

Definition at line 1173 of file arm_math.h.

+ +
+
+ +
+ +
+

Points to the array of coefficients. The array is of length 5*numStages.

+ +

Definition at line 1174 of file arm_math.h.

+ +
+
+ +
+ +
+

Additional shift, in bits, applied to each output sample.

+ +

Definition at line 1175 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__biquad__casd__df1__inst__q31.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__biquad__casd__df1__inst__q31.html new file mode 100644 index 000000000..2eb8acbcc --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__biquad__casd__df1__inst__q31.html @@ -0,0 +1,163 @@ + + + + +CMSIS DSP Software Library: arm_biquad_casd_df1_inst_q31 Struct Reference + + + + + + + + + +
+ +
+

arm_biquad_casd_df1_inst_q31 Struct Reference

+
+
+ +

Instance structure for the Q31 Biquad cascade filter. +More...

+ +

#include <arm_math.h>

+ + + + + + +

+Data Fields

uint32_t numStages
q31_tpState
q31_tpCoeffs
uint8_t postShift
+

Detailed Description

+

Instance structure for the Q31 Biquad cascade filter.

+
Examples:
+

arm_graphic_equalizer_example_q31.c.

+
+
+

Definition at line 1183 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of 2nd order stages in the filter. Overall order is 2*numStages.

+ +

Definition at line 1185 of file arm_math.h.

+ +
+
+ +
+ +
+

Points to the array of state coefficients. The array is of length 4*numStages.

+ +

Definition at line 1186 of file arm_math.h.

+ +
+
+ +
+ +
+

Points to the array of coefficients. The array is of length 5*numStages.

+ +

Definition at line 1187 of file arm_math.h.

+ +
+
+ +
+ +
+

Additional shift, in bits, applied to each output sample.

+ +

Definition at line 1188 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__cfft__radix4__instance__f32.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__cfft__radix4__instance__f32.html new file mode 100644 index 000000000..eba95d4f9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__cfft__radix4__instance__f32.html @@ -0,0 +1,231 @@ + + + + +CMSIS DSP Software Library: arm_cfft_radix4_instance_f32 Struct Reference + + + + + + + + + +
+ +
+

arm_cfft_radix4_instance_f32 Struct Reference

+
+
+ +

Instance structure for the floating-point CFFT/CIFFT function. +More...

+ +

#include <arm_math.h>

+ + + + + + + + + + +

+Data Fields

uint16_t fftLen
uint8_t ifftFlag
uint8_t bitReverseFlag
float32_tpTwiddle
uint16_t * pBitRevTable
uint16_t twidCoefModifier
uint16_t bitRevFactor
float32_t onebyfftLen
+

Detailed Description

+

Instance structure for the floating-point CFFT/CIFFT function.

+
Examples:
+

arm_convolution_example_f32.c, and arm_fft_bin_example_f32.c.

+
+
+

Definition at line 1919 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

length of the FFT.

+ +

Definition at line 1921 of file arm_math.h.

+ +
+
+ +
+ +
+

flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.

+ +

Definition at line 1922 of file arm_math.h.

+ +
+
+ +
+ +
+

flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.

+ +

Definition at line 1923 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the twiddle factor table.

+ +

Definition at line 1924 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the bit reversal table.

+ +

Definition at line 1925 of file arm_math.h.

+ +
+
+ +
+ +
+

twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.

+ +

Definition at line 1926 of file arm_math.h.

+ +
+
+ +
+ +
+

bit reversal modifier that supports different size FFTs with the same bit reversal table.

+ +

Definition at line 1927 of file arm_math.h.

+ +
+
+ +
+ +
+

value of 1/fftLen.

+ +

Definition at line 1928 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__cfft__radix4__instance__q15.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__cfft__radix4__instance__q15.html new file mode 100644 index 000000000..7604ba243 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__cfft__radix4__instance__q15.html @@ -0,0 +1,211 @@ + + + + +CMSIS DSP Software Library: arm_cfft_radix4_instance_q15 Struct Reference + + + + + + + + + +
+ +
+

arm_cfft_radix4_instance_q15 Struct Reference

+
+
+ +

Instance structure for the Q15 CFFT/CIFFT function. +More...

+ +

#include <arm_math.h>

+ + + + + + + + + +

+Data Fields

uint16_t fftLen
uint8_t ifftFlag
uint8_t bitReverseFlag
q15_tpTwiddle
uint16_t * pBitRevTable
uint16_t twidCoefModifier
uint16_t bitRevFactor
+

Detailed Description

+

Instance structure for the Q15 CFFT/CIFFT function.

+ +

Definition at line 1889 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

length of the FFT.

+ +

Definition at line 1891 of file arm_math.h.

+ +
+
+ +
+ +
+

flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.

+ +

Definition at line 1892 of file arm_math.h.

+ +
+
+ +
+ +
+

flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.

+ +

Definition at line 1893 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the twiddle factor table.

+ +

Definition at line 1894 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the bit reversal table.

+ +

Definition at line 1895 of file arm_math.h.

+ +
+
+ +
+ +
+

twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.

+ +

Definition at line 1896 of file arm_math.h.

+ +
+
+ +
+ +
+

bit reversal modifier that supports different size FFTs with the same bit reversal table.

+ +

Definition at line 1897 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__cfft__radix4__instance__q31.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__cfft__radix4__instance__q31.html new file mode 100644 index 000000000..f8d1e7863 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__cfft__radix4__instance__q31.html @@ -0,0 +1,211 @@ + + + + +CMSIS DSP Software Library: arm_cfft_radix4_instance_q31 Struct Reference + + + + + + + + + +
+ +
+

arm_cfft_radix4_instance_q31 Struct Reference

+
+
+ +

Instance structure for the Q31 CFFT/CIFFT function. +More...

+ +

#include <arm_math.h>

+ + + + + + + + + +

+Data Fields

uint16_t fftLen
uint8_t ifftFlag
uint8_t bitReverseFlag
q31_tpTwiddle
uint16_t * pBitRevTable
uint16_t twidCoefModifier
uint16_t bitRevFactor
+

Detailed Description

+

Instance structure for the Q31 CFFT/CIFFT function.

+ +

Definition at line 1904 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

length of the FFT.

+ +

Definition at line 1906 of file arm_math.h.

+ +
+
+ +
+ +
+

flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform.

+ +

Definition at line 1907 of file arm_math.h.

+ +
+
+ +
+ +
+

flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output.

+ +

Definition at line 1908 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the twiddle factor table.

+ +

Definition at line 1909 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the bit reversal table.

+ +

Definition at line 1910 of file arm_math.h.

+ +
+
+ +
+ +
+

twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.

+ +

Definition at line 1911 of file arm_math.h.

+ +
+
+ +
+ +
+

bit reversal modifier that supports different size FFTs with the same bit reversal table.

+ +

Definition at line 1912 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__dct4__instance__f32.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__dct4__instance__f32.html new file mode 100644 index 000000000..d3efbc52e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__dct4__instance__f32.html @@ -0,0 +1,211 @@ + + + + +CMSIS DSP Software Library: arm_dct4_instance_f32 Struct Reference + + + + + + + + + +
+ +
+

arm_dct4_instance_f32 Struct Reference

+
+
+ +

Instance structure for the floating-point DCT4/IDCT4 function. +More...

+ +

#include <arm_math.h>

+ + + + + + + + + +

+Data Fields

uint16_t N
uint16_t Nby2
float32_t normalize
float32_tpTwiddle
float32_tpCosFactor
arm_rfft_instance_f32pRfft
arm_cfft_radix4_instance_f32pCfft
+

Detailed Description

+

Instance structure for the floating-point DCT4/IDCT4 function.

+ +

Definition at line 2294 of file arm_math.h.

+

Field Documentation

+ +
+
+ + + + +
uint16_t arm_dct4_instance_f32::N
+
+
+

length of the DCT4.

+ +

Definition at line 2296 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
uint16_t arm_dct4_instance_f32::Nby2
+
+
+

half of the length of the DCT4.

+ +

Definition at line 2297 of file arm_math.h.

+ +
+
+ +
+ +
+

normalizing factor.

+ +

Definition at line 2298 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the twiddle factor table.

+ +

Definition at line 2299 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the cosFactor table.

+ +

Definition at line 2300 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the real FFT instance.

+ +

Definition at line 2301 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the complex FFT instance.

+ +

Definition at line 2302 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__dct4__instance__q15.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__dct4__instance__q15.html new file mode 100644 index 000000000..426d11826 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__dct4__instance__q15.html @@ -0,0 +1,211 @@ + + + + +CMSIS DSP Software Library: arm_dct4_instance_q15 Struct Reference + + + + + + + + + +
+ +
+

arm_dct4_instance_q15 Struct Reference

+
+
+ +

Instance structure for the Q15 DCT4/IDCT4 function. +More...

+ +

#include <arm_math.h>

+ + + + + + + + + +

+Data Fields

uint16_t N
uint16_t Nby2
q15_t normalize
q15_tpTwiddle
q15_tpCosFactor
arm_rfft_instance_q15pRfft
arm_cfft_radix4_instance_q15pCfft
+

Detailed Description

+

Instance structure for the Q15 DCT4/IDCT4 function.

+ +

Definition at line 2388 of file arm_math.h.

+

Field Documentation

+ +
+
+ + + + +
uint16_t arm_dct4_instance_q15::N
+
+
+

length of the DCT4.

+ +

Definition at line 2390 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
uint16_t arm_dct4_instance_q15::Nby2
+
+
+

half of the length of the DCT4.

+ +

Definition at line 2391 of file arm_math.h.

+ +
+
+ +
+ +
+

normalizing factor.

+ +

Definition at line 2392 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the twiddle factor table.

+ +

Definition at line 2393 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the cosFactor table.

+ +

Definition at line 2394 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the real FFT instance.

+ +

Definition at line 2395 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the complex FFT instance.

+ +

Definition at line 2396 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__dct4__instance__q31.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__dct4__instance__q31.html new file mode 100644 index 000000000..680576ee7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__dct4__instance__q31.html @@ -0,0 +1,211 @@ + + + + +CMSIS DSP Software Library: arm_dct4_instance_q31 Struct Reference + + + + + + + + + +
+ +
+

arm_dct4_instance_q31 Struct Reference

+
+
+ +

Instance structure for the Q31 DCT4/IDCT4 function. +More...

+ +

#include <arm_math.h>

+ + + + + + + + + +

+Data Fields

uint16_t N
uint16_t Nby2
q31_t normalize
q31_tpTwiddle
q31_tpCosFactor
arm_rfft_instance_q31pRfft
arm_cfft_radix4_instance_q31pCfft
+

Detailed Description

+

Instance structure for the Q31 DCT4/IDCT4 function.

+ +

Definition at line 2341 of file arm_math.h.

+

Field Documentation

+ +
+
+ + + + +
uint16_t arm_dct4_instance_q31::N
+
+
+

length of the DCT4.

+ +

Definition at line 2343 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
uint16_t arm_dct4_instance_q31::Nby2
+
+
+

half of the length of the DCT4.

+ +

Definition at line 2344 of file arm_math.h.

+ +
+
+ +
+ +
+

normalizing factor.

+ +

Definition at line 2345 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the twiddle factor table.

+ +

Definition at line 2346 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the cosFactor table.

+ +

Definition at line 2347 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the real FFT instance.

+ +

Definition at line 2348 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the complex FFT instance.

+ +

Definition at line 2349 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__decimate__instance__f32.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__decimate__instance__f32.html new file mode 100644 index 000000000..f77169ada --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__decimate__instance__f32.html @@ -0,0 +1,160 @@ + + + + +CMSIS DSP Software Library: arm_fir_decimate_instance_f32 Struct Reference + + + + + + + + + +
+ +
+

arm_fir_decimate_instance_f32 Struct Reference

+
+
+ +

Instance structure for the floating-point FIR decimator. +More...

+ +

#include <arm_math.h>

+ + + + + + +

+Data Fields

uint8_t M
uint16_t numTaps
float32_tpCoeffs
float32_tpState
+

Detailed Description

+

Instance structure for the floating-point FIR decimator.

+ +

Definition at line 3239 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

decimation factor.

+ +

Definition at line 3241 of file arm_math.h.

+ +
+
+ +
+ +
+

number of coefficients in the filter.

+ +

Definition at line 3242 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numTaps.

+ +

Definition at line 3243 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length numTaps+blockSize-1.

+ +

Definition at line 3244 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__decimate__instance__q15.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__decimate__instance__q15.html new file mode 100644 index 000000000..1a9d0d6d9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__decimate__instance__q15.html @@ -0,0 +1,160 @@ + + + + +CMSIS DSP Software Library: arm_fir_decimate_instance_q15 Struct Reference + + + + + + + + + +
+ +
+

arm_fir_decimate_instance_q15 Struct Reference

+
+
+ +

Instance structure for the Q15 FIR decimator. +More...

+ +

#include <arm_math.h>

+ + + + + + +

+Data Fields

uint8_t M
uint16_t numTaps
q15_tpCoeffs
q15_tpState
+

Detailed Description

+

Instance structure for the Q15 FIR decimator.

+ +

Definition at line 3214 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

decimation factor.

+ +

Definition at line 3216 of file arm_math.h.

+ +
+
+ +
+ +
+

number of coefficients in the filter.

+ +

Definition at line 3217 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numTaps.

+ +

Definition at line 3218 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length numTaps+blockSize-1.

+ +

Definition at line 3219 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__decimate__instance__q31.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__decimate__instance__q31.html new file mode 100644 index 000000000..60dfe5bec --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__decimate__instance__q31.html @@ -0,0 +1,160 @@ + + + + +CMSIS DSP Software Library: arm_fir_decimate_instance_q31 Struct Reference + + + + + + + + + +
+ +
+

arm_fir_decimate_instance_q31 Struct Reference

+
+
+ +

Instance structure for the Q31 FIR decimator. +More...

+ +

#include <arm_math.h>

+ + + + + + +

+Data Fields

uint8_t M
uint16_t numTaps
q31_tpCoeffs
q31_tpState
+

Detailed Description

+

Instance structure for the Q31 FIR decimator.

+ +

Definition at line 3226 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

decimation factor.

+ +

Definition at line 3228 of file arm_math.h.

+ +
+
+ +
+ +
+

number of coefficients in the filter.

+ +

Definition at line 3229 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numTaps.

+ +

Definition at line 3230 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length numTaps+blockSize-1.

+ +

Definition at line 3231 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__instance__f32.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__instance__f32.html new file mode 100644 index 000000000..ae49eef84 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__instance__f32.html @@ -0,0 +1,146 @@ + + + + +CMSIS DSP Software Library: arm_fir_instance_f32 Struct Reference + + + + + + + + + +
+ +
+

arm_fir_instance_f32 Struct Reference

+
+
+ +

Instance structure for the floating-point FIR filter. +More...

+ +

#include <arm_math.h>

+ + + + + +

+Data Fields

uint16_t numTaps
float32_tpState
float32_tpCoeffs
+

Detailed Description

+

Instance structure for the floating-point FIR filter.

+
Examples:
+

arm_fir_example_f32.c, and arm_signal_converge_example_f32.c.

+
+
+

Definition at line 1006 of file arm_math.h.

+

Field Documentation

+ +
+
+ + + + +
uint16_t arm_fir_instance_f32::numTaps
+
+
+

number of filter coefficients in the filter.

+ +

Definition at line 1008 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length numTaps+blockSize-1.

+ +

Definition at line 1009 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numTaps.

+ +

Definition at line 1010 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__instance__q15.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__instance__q15.html new file mode 100644 index 000000000..bd33eab79 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__instance__q15.html @@ -0,0 +1,143 @@ + + + + +CMSIS DSP Software Library: arm_fir_instance_q15 Struct Reference + + + + + + + + + +
+ +
+

arm_fir_instance_q15 Struct Reference

+
+
+ +

Instance structure for the Q15 FIR filter. +More...

+ +

#include <arm_math.h>

+ + + + + +

+Data Fields

uint16_t numTaps
q15_tpState
q15_tpCoeffs
+

Detailed Description

+

Instance structure for the Q15 FIR filter.

+ +

Definition at line 986 of file arm_math.h.

+

Field Documentation

+ +
+
+ + + + +
uint16_t arm_fir_instance_q15::numTaps
+
+
+

number of filter coefficients in the filter.

+ +

Definition at line 988 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length numTaps+blockSize-1.

+ +

Definition at line 989 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numTaps.

+ +

Definition at line 990 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__instance__q31.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__instance__q31.html new file mode 100644 index 000000000..3e6e20a8e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__instance__q31.html @@ -0,0 +1,143 @@ + + + + +CMSIS DSP Software Library: arm_fir_instance_q31 Struct Reference + + + + + + + + + +
+ +
+

arm_fir_instance_q31 Struct Reference

+
+
+ +

Instance structure for the Q31 FIR filter. +More...

+ +

#include <arm_math.h>

+ + + + + +

+Data Fields

uint16_t numTaps
q31_tpState
q31_tpCoeffs
+

Detailed Description

+

Instance structure for the Q31 FIR filter.

+ +

Definition at line 996 of file arm_math.h.

+

Field Documentation

+ +
+
+ + + + +
uint16_t arm_fir_instance_q31::numTaps
+
+
+

number of filter coefficients in the filter.

+ +

Definition at line 998 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length numTaps+blockSize-1.

+ +

Definition at line 999 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numTaps.

+ +

Definition at line 1000 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__instance__q7.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__instance__q7.html new file mode 100644 index 000000000..37e77a024 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__instance__q7.html @@ -0,0 +1,143 @@ + + + + +CMSIS DSP Software Library: arm_fir_instance_q7 Struct Reference + + + + + + + + + +
+ +
+

arm_fir_instance_q7 Struct Reference

+
+
+ +

Instance structure for the Q7 FIR filter. +More...

+ +

#include <arm_math.h>

+ + + + + +

+Data Fields

uint16_t numTaps
q7_tpState
q7_tpCoeffs
+

Detailed Description

+

Instance structure for the Q7 FIR filter.

+ +

Definition at line 976 of file arm_math.h.

+

Field Documentation

+ +
+
+ + + + +
uint16_t arm_fir_instance_q7::numTaps
+
+
+

number of filter coefficients in the filter.

+ +

Definition at line 978 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length numTaps+blockSize-1.

+ +

Definition at line 979 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numTaps.

+ +

Definition at line 980 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__interpolate__instance__f32.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__interpolate__instance__f32.html new file mode 100644 index 000000000..3cbdb4768 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__interpolate__instance__f32.html @@ -0,0 +1,160 @@ + + + + +CMSIS DSP Software Library: arm_fir_interpolate_instance_f32 Struct Reference + + + + + + + + + +
+ +
+

arm_fir_interpolate_instance_f32 Struct Reference

+
+
+ +

Instance structure for the floating-point FIR interpolator. +More...

+ +

#include <arm_math.h>

+ + + + + + +

+Data Fields

uint8_t L
uint16_t phaseLength
float32_tpCoeffs
float32_tpState
+

Detailed Description

+

Instance structure for the floating-point FIR interpolator.

+ +

Definition at line 3419 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

upsample factor.

+ +

Definition at line 3421 of file arm_math.h.

+ +
+
+ +
+ +
+

length of each polyphase filter component.

+ +

Definition at line 3422 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length L*phaseLength.

+ +

Definition at line 3423 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length phaseLength+numTaps-1.

+ +

Definition at line 3424 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__interpolate__instance__q15.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__interpolate__instance__q15.html new file mode 100644 index 000000000..5ff68a783 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__interpolate__instance__q15.html @@ -0,0 +1,160 @@ + + + + +CMSIS DSP Software Library: arm_fir_interpolate_instance_q15 Struct Reference + + + + + + + + + +
+ +
+

arm_fir_interpolate_instance_q15 Struct Reference

+
+
+ +

Instance structure for the Q15 FIR interpolator. +More...

+ +

#include <arm_math.h>

+ + + + + + +

+Data Fields

uint8_t L
uint16_t phaseLength
q15_tpCoeffs
q15_tpState
+

Detailed Description

+

Instance structure for the Q15 FIR interpolator.

+ +

Definition at line 3395 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

upsample factor.

+ +

Definition at line 3397 of file arm_math.h.

+ +
+
+ +
+ +
+

length of each polyphase filter component.

+ +

Definition at line 3398 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length L*phaseLength.

+ +

Definition at line 3399 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length blockSize+phaseLength-1.

+ +

Definition at line 3400 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__interpolate__instance__q31.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__interpolate__instance__q31.html new file mode 100644 index 000000000..7c65829bd --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__interpolate__instance__q31.html @@ -0,0 +1,160 @@ + + + + +CMSIS DSP Software Library: arm_fir_interpolate_instance_q31 Struct Reference + + + + + + + + + +
+ +
+

arm_fir_interpolate_instance_q31 Struct Reference

+
+
+ +

Instance structure for the Q31 FIR interpolator. +More...

+ +

#include <arm_math.h>

+ + + + + + +

+Data Fields

uint8_t L
uint16_t phaseLength
q31_tpCoeffs
q31_tpState
+

Detailed Description

+

Instance structure for the Q31 FIR interpolator.

+ +

Definition at line 3407 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

upsample factor.

+ +

Definition at line 3409 of file arm_math.h.

+ +
+
+ +
+ +
+

length of each polyphase filter component.

+ +

Definition at line 3410 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length L*phaseLength.

+ +

Definition at line 3411 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length blockSize+phaseLength-1.

+ +

Definition at line 3412 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__lattice__instance__f32.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__lattice__instance__f32.html new file mode 100644 index 000000000..0a4a838d8 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__lattice__instance__f32.html @@ -0,0 +1,143 @@ + + + + +CMSIS DSP Software Library: arm_fir_lattice_instance_f32 Struct Reference + + + + + + + + + +
+ +
+

arm_fir_lattice_instance_f32 Struct Reference

+
+
+ +

Instance structure for the floating-point FIR lattice filter. +More...

+ +

#include <arm_math.h>

+ + + + + +

+Data Fields

uint16_t numStages
float32_tpState
float32_tpCoeffs
+

Detailed Description

+

Instance structure for the floating-point FIR lattice filter.

+ +

Definition at line 3653 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of filter stages.

+ +

Definition at line 3655 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length numStages.

+ +

Definition at line 3656 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numStages.

+ +

Definition at line 3657 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__lattice__instance__q15.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__lattice__instance__q15.html new file mode 100644 index 000000000..b98bfa6f9 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__lattice__instance__q15.html @@ -0,0 +1,143 @@ + + + + +CMSIS DSP Software Library: arm_fir_lattice_instance_q15 Struct Reference + + + + + + + + + +
+ +
+

arm_fir_lattice_instance_q15 Struct Reference

+
+
+ +

Instance structure for the Q15 FIR lattice filter. +More...

+ +

#include <arm_math.h>

+ + + + + +

+Data Fields

uint16_t numStages
q15_tpState
q15_tpCoeffs
+

Detailed Description

+

Instance structure for the Q15 FIR lattice filter.

+ +

Definition at line 3631 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of filter stages.

+ +

Definition at line 3633 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length numStages.

+ +

Definition at line 3634 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numStages.

+ +

Definition at line 3635 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__lattice__instance__q31.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__lattice__instance__q31.html new file mode 100644 index 000000000..bbfdc9317 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__lattice__instance__q31.html @@ -0,0 +1,143 @@ + + + + +CMSIS DSP Software Library: arm_fir_lattice_instance_q31 Struct Reference + + + + + + + + + +
+ +
+

arm_fir_lattice_instance_q31 Struct Reference

+
+
+ +

Instance structure for the Q31 FIR lattice filter. +More...

+ +

#include <arm_math.h>

+ + + + + +

+Data Fields

uint16_t numStages
q31_tpState
q31_tpCoeffs
+

Detailed Description

+

Instance structure for the Q31 FIR lattice filter.

+ +

Definition at line 3642 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of filter stages.

+ +

Definition at line 3644 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length numStages.

+ +

Definition at line 3645 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numStages.

+ +

Definition at line 3646 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__sparse__instance__f32.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__sparse__instance__f32.html new file mode 100644 index 000000000..209ddd3eb --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__sparse__instance__f32.html @@ -0,0 +1,194 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_instance_f32 Struct Reference + + + + + + + + + +
+ +
+

arm_fir_sparse_instance_f32 Struct Reference

+
+
+ +

Instance structure for the floating-point sparse FIR filter. +More...

+ +

#include <arm_math.h>

+ + + + + + + + +

+Data Fields

uint16_t numTaps
uint16_t stateIndex
float32_tpState
float32_tpCoeffs
uint16_t maxDelay
int32_t * pTapDelay
+

Detailed Description

+

Instance structure for the floating-point sparse FIR filter.

+ +

Definition at line 4319 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of coefficients in the filter.

+ +

Definition at line 4321 of file arm_math.h.

+ +
+
+ +
+ +
+

state buffer index. Points to the oldest sample in the state buffer.

+ +

Definition at line 4322 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state buffer array. The array is of length maxDelay+blockSize-1.

+ +

Definition at line 4323 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numTaps.

+ +

Definition at line 4324 of file arm_math.h.

+ +
+
+ +
+ +
+

maximum offset specified by the pTapDelay array.

+ +

Definition at line 4325 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the array of delay values. The array is of length numTaps.

+ +

Definition at line 4326 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__sparse__instance__q15.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__sparse__instance__q15.html new file mode 100644 index 000000000..98cc50420 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__sparse__instance__q15.html @@ -0,0 +1,194 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_instance_q15 Struct Reference + + + + + + + + + +
+ +
+

arm_fir_sparse_instance_q15 Struct Reference

+
+
+ +

Instance structure for the Q15 sparse FIR filter. +More...

+ +

#include <arm_math.h>

+ + + + + + + + +

+Data Fields

uint16_t numTaps
uint16_t stateIndex
q15_tpState
q15_tpCoeffs
uint16_t maxDelay
int32_t * pTapDelay
+

Detailed Description

+

Instance structure for the Q15 sparse FIR filter.

+ +

Definition at line 4347 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of coefficients in the filter.

+ +

Definition at line 4349 of file arm_math.h.

+ +
+
+ +
+ +
+

state buffer index. Points to the oldest sample in the state buffer.

+ +

Definition at line 4350 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state buffer array. The array is of length maxDelay+blockSize-1.

+ +

Definition at line 4351 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numTaps.

+ +

Definition at line 4352 of file arm_math.h.

+ +
+
+ +
+ +
+

maximum offset specified by the pTapDelay array.

+ +

Definition at line 4353 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the array of delay values. The array is of length numTaps.

+ +

Definition at line 4354 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__sparse__instance__q31.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__sparse__instance__q31.html new file mode 100644 index 000000000..3071cb5c5 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__sparse__instance__q31.html @@ -0,0 +1,194 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_instance_q31 Struct Reference + + + + + + + + + +
+ +
+

arm_fir_sparse_instance_q31 Struct Reference

+
+
+ +

Instance structure for the Q31 sparse FIR filter. +More...

+ +

#include <arm_math.h>

+ + + + + + + + +

+Data Fields

uint16_t numTaps
uint16_t stateIndex
q31_tpState
q31_tpCoeffs
uint16_t maxDelay
int32_t * pTapDelay
+

Detailed Description

+

Instance structure for the Q31 sparse FIR filter.

+ +

Definition at line 4333 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of coefficients in the filter.

+ +

Definition at line 4335 of file arm_math.h.

+ +
+
+ +
+ +
+

state buffer index. Points to the oldest sample in the state buffer.

+ +

Definition at line 4336 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state buffer array. The array is of length maxDelay+blockSize-1.

+ +

Definition at line 4337 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numTaps.

+ +

Definition at line 4338 of file arm_math.h.

+ +
+
+ +
+ +
+

maximum offset specified by the pTapDelay array.

+ +

Definition at line 4339 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the array of delay values. The array is of length numTaps.

+ +

Definition at line 4340 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__sparse__instance__q7.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__sparse__instance__q7.html new file mode 100644 index 000000000..6002906e6 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__fir__sparse__instance__q7.html @@ -0,0 +1,194 @@ + + + + +CMSIS DSP Software Library: arm_fir_sparse_instance_q7 Struct Reference + + + + + + + + + +
+ +
+

arm_fir_sparse_instance_q7 Struct Reference

+
+
+ +

Instance structure for the Q7 sparse FIR filter. +More...

+ +

#include <arm_math.h>

+ + + + + + + + +

+Data Fields

uint16_t numTaps
uint16_t stateIndex
q7_tpState
q7_tpCoeffs
uint16_t maxDelay
int32_t * pTapDelay
+

Detailed Description

+

Instance structure for the Q7 sparse FIR filter.

+ +

Definition at line 4361 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of coefficients in the filter.

+ +

Definition at line 4363 of file arm_math.h.

+ +
+
+ +
+ +
+

state buffer index. Points to the oldest sample in the state buffer.

+ +

Definition at line 4364 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state buffer array. The array is of length maxDelay+blockSize-1.

+ +

Definition at line 4365 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numTaps.

+ +

Definition at line 4366 of file arm_math.h.

+ +
+
+ +
+ +
+

maximum offset specified by the pTapDelay array.

+ +

Definition at line 4367 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the array of delay values. The array is of length numTaps.

+ +

Definition at line 4368 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__iir__lattice__instance__f32.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__iir__lattice__instance__f32.html new file mode 100644 index 000000000..0b4bbdfb2 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__iir__lattice__instance__f32.html @@ -0,0 +1,160 @@ + + + + +CMSIS DSP Software Library: arm_iir_lattice_instance_f32 Struct Reference + + + + + + + + + +
+ +
+

arm_iir_lattice_instance_f32 Struct Reference

+
+
+ +

Instance structure for the floating-point IIR lattice filter. +More...

+ +

#include <arm_math.h>

+ + + + + + +

+Data Fields

uint16_t numStages
float32_tpState
float32_tpkCoeffs
float32_tpvCoeffs
+

Detailed Description

+

Instance structure for the floating-point IIR lattice filter.

+ +

Definition at line 3776 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of stages in the filter.

+ +

Definition at line 3778 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length numStages+blockSize.

+ +

Definition at line 3779 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the reflection coefficient array. The array is of length numStages.

+ +

Definition at line 3780 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the ladder coefficient array. The array is of length numStages+1.

+ +

Definition at line 3781 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__iir__lattice__instance__q15.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__iir__lattice__instance__q15.html new file mode 100644 index 000000000..8c1dfefa7 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__iir__lattice__instance__q15.html @@ -0,0 +1,160 @@ + + + + +CMSIS DSP Software Library: arm_iir_lattice_instance_q15 Struct Reference + + + + + + + + + +
+ +
+

arm_iir_lattice_instance_q15 Struct Reference

+
+
+ +

Instance structure for the Q15 IIR lattice filter. +More...

+ +

#include <arm_math.h>

+ + + + + + +

+Data Fields

uint16_t numStages
q15_tpState
q15_tpkCoeffs
q15_tpvCoeffs
+

Detailed Description

+

Instance structure for the Q15 IIR lattice filter.

+ +

Definition at line 3754 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of stages in the filter.

+ +

Definition at line 3756 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length numStages+blockSize.

+ +

Definition at line 3757 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the reflection coefficient array. The array is of length numStages.

+ +

Definition at line 3758 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the ladder coefficient array. The array is of length numStages+1.

+ +

Definition at line 3759 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__iir__lattice__instance__q31.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__iir__lattice__instance__q31.html new file mode 100644 index 000000000..29ed0956c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__iir__lattice__instance__q31.html @@ -0,0 +1,160 @@ + + + + +CMSIS DSP Software Library: arm_iir_lattice_instance_q31 Struct Reference + + + + + + + + + +
+ +
+

arm_iir_lattice_instance_q31 Struct Reference

+
+
+ +

Instance structure for the Q31 IIR lattice filter. +More...

+ +

#include <arm_math.h>

+ + + + + + +

+Data Fields

uint16_t numStages
q31_tpState
q31_tpkCoeffs
q31_tpvCoeffs
+

Detailed Description

+

Instance structure for the Q31 IIR lattice filter.

+ +

Definition at line 3765 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of stages in the filter.

+ +

Definition at line 3767 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length numStages+blockSize.

+ +

Definition at line 3768 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the reflection coefficient array. The array is of length numStages.

+ +

Definition at line 3769 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the ladder coefficient array. The array is of length numStages+1.

+ +

Definition at line 3770 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__linear__interp__instance__f32.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__linear__interp__instance__f32.html new file mode 100644 index 000000000..6a7c4bafc --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__linear__interp__instance__f32.html @@ -0,0 +1,160 @@ + + + + +CMSIS DSP Software Library: arm_linear_interp_instance_f32 Struct Reference + + + + + + + + + +
+ +
+

arm_linear_interp_instance_f32 Struct Reference

+
+
+ +

Instance structure for the floating-point Linear Interpolate function. +More...

+ +

#include <arm_math.h>

+ + + + + + +

+Data Fields

uint32_t nValues
float32_t x1
float32_t xSpacing
float32_tpYData
+

Detailed Description

+

Instance structure for the floating-point Linear Interpolate function.

+
Examples:
+

arm_linear_interp_example_f32.c.

+
+
+

Definition at line 1771 of file arm_math.h.

+

Field Documentation

+ +
+ +
+ +

Definition at line 1773 of file arm_math.h.

+ +
+
+ +
+ +
+ +

Definition at line 1774 of file arm_math.h.

+ +
+
+ +
+ +
+ +

Definition at line 1775 of file arm_math.h.

+ +
+
+ +
+ +
+

pointer to the table of Y values

+ +

Definition at line 1776 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__lms__instance__f32.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__lms__instance__f32.html new file mode 100644 index 000000000..00173fe09 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__lms__instance__f32.html @@ -0,0 +1,160 @@ + + + + +CMSIS DSP Software Library: arm_lms_instance_f32 Struct Reference + + + + + + + + + +
+ +
+

arm_lms_instance_f32 Struct Reference

+
+
+ +

Instance structure for the floating-point LMS filter. +More...

+ +

#include <arm_math.h>

+ + + + + + +

+Data Fields

uint16_t numTaps
float32_tpState
float32_tpCoeffs
float32_t mu
+

Detailed Description

+

Instance structure for the floating-point LMS filter.

+ +

Definition at line 3894 of file arm_math.h.

+

Field Documentation

+ +
+
+ + + + +
uint16_t arm_lms_instance_f32::numTaps
+
+
+

number of coefficients in the filter.

+ +

Definition at line 3896 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length numTaps+blockSize-1.

+ +

Definition at line 3897 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numTaps.

+ +

Definition at line 3898 of file arm_math.h.

+ +
+
+ +
+ +
+

step size that controls filter coefficient updates.

+ +

Definition at line 3899 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__lms__instance__q15.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__lms__instance__q15.html new file mode 100644 index 000000000..d9f5e32b1 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__lms__instance__q15.html @@ -0,0 +1,177 @@ + + + + +CMSIS DSP Software Library: arm_lms_instance_q15 Struct Reference + + + + + + + + + +
+ +
+

arm_lms_instance_q15 Struct Reference

+
+
+ +

Instance structure for the Q15 LMS filter. +More...

+ +

#include <arm_math.h>

+ + + + + + + +

+Data Fields

uint16_t numTaps
q15_tpState
q15_tpCoeffs
q15_t mu
uint32_t postShift
+

Detailed Description

+

Instance structure for the Q15 LMS filter.

+ +

Definition at line 3944 of file arm_math.h.

+

Field Documentation

+ +
+
+ + + + +
uint16_t arm_lms_instance_q15::numTaps
+
+
+

number of coefficients in the filter.

+ +

Definition at line 3946 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length numTaps+blockSize-1.

+ +

Definition at line 3947 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numTaps.

+ +

Definition at line 3948 of file arm_math.h.

+ +
+
+ +
+ +
+

step size that controls filter coefficient updates.

+ +

Definition at line 3949 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
uint32_t arm_lms_instance_q15::postShift
+
+
+

bit shift applied to coefficients.

+ +

Definition at line 3950 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__lms__instance__q31.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__lms__instance__q31.html new file mode 100644 index 000000000..0bddeb327 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__lms__instance__q31.html @@ -0,0 +1,177 @@ + + + + +CMSIS DSP Software Library: arm_lms_instance_q31 Struct Reference + + + + + + + + + +
+ +
+

arm_lms_instance_q31 Struct Reference

+
+
+ +

Instance structure for the Q31 LMS filter. +More...

+ +

#include <arm_math.h>

+ + + + + + + +

+Data Fields

uint16_t numTaps
q31_tpState
q31_tpCoeffs
q31_t mu
uint32_t postShift
+

Detailed Description

+

Instance structure for the Q31 LMS filter.

+ +

Definition at line 3999 of file arm_math.h.

+

Field Documentation

+ +
+
+ + + + +
uint16_t arm_lms_instance_q31::numTaps
+
+
+

number of coefficients in the filter.

+ +

Definition at line 4001 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length numTaps+blockSize-1.

+ +

Definition at line 4002 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numTaps.

+ +

Definition at line 4003 of file arm_math.h.

+ +
+
+ +
+ +
+

step size that controls filter coefficient updates.

+ +

Definition at line 4004 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
uint32_t arm_lms_instance_q31::postShift
+
+
+

bit shift applied to coefficients.

+ +

Definition at line 4005 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__lms__norm__instance__f32.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__lms__norm__instance__f32.html new file mode 100644 index 000000000..b017ecdb0 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__lms__norm__instance__f32.html @@ -0,0 +1,197 @@ + + + + +CMSIS DSP Software Library: arm_lms_norm_instance_f32 Struct Reference + + + + + + + + + +
+ +
+

arm_lms_norm_instance_f32 Struct Reference

+
+
+ +

Instance structure for the floating-point normalized LMS filter. +More...

+ +

#include <arm_math.h>

+ + + + + + + + +

+Data Fields

uint16_t numTaps
float32_tpState
float32_tpCoeffs
float32_t mu
float32_t energy
float32_t x0
+

Detailed Description

+

Instance structure for the floating-point normalized LMS filter.

+
Examples:
+

arm_signal_converge_example_f32.c.

+
+
+

Definition at line 4053 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of coefficients in the filter.

+ +

Definition at line 4055 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length numTaps+blockSize-1.

+ +

Definition at line 4056 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numTaps.

+ +

Definition at line 4057 of file arm_math.h.

+ +
+
+ +
+ +
+

step size that control filter coefficient updates.

+ +

Definition at line 4058 of file arm_math.h.

+ +
+
+ +
+ +
+

saves previous frame energy.

+ +

Definition at line 4059 of file arm_math.h.

+ +
+
+ +
+ +
+

saves previous input sample.

+ +

Definition at line 4060 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__lms__norm__instance__q15.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__lms__norm__instance__q15.html new file mode 100644 index 000000000..da6419f54 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__lms__norm__instance__q15.html @@ -0,0 +1,228 @@ + + + + +CMSIS DSP Software Library: arm_lms_norm_instance_q15 Struct Reference + + + + + + + + + +
+ +
+

arm_lms_norm_instance_q15 Struct Reference

+
+
+ +

Instance structure for the Q15 normalized LMS filter. +More...

+ +

#include <arm_math.h>

+ + + + + + + + + + +

+Data Fields

uint16_t numTaps
q15_tpState
q15_tpCoeffs
q15_t mu
uint8_t postShift
q15_trecipTable
q15_t energy
q15_t x0
+

Detailed Description

+

Instance structure for the Q15 normalized LMS filter.

+ +

Definition at line 4161 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

Number of coefficients in the filter.

+ +

Definition at line 4163 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length numTaps+blockSize-1.

+ +

Definition at line 4164 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numTaps.

+ +

Definition at line 4165 of file arm_math.h.

+ +
+
+ +
+ +
+

step size that controls filter coefficient updates.

+ +

Definition at line 4166 of file arm_math.h.

+ +
+
+ +
+ +
+

bit shift applied to coefficients.

+ +

Definition at line 4167 of file arm_math.h.

+ +
+
+ +
+ +
+

Points to the reciprocal initial value table.

+ +

Definition at line 4168 of file arm_math.h.

+ +
+
+ +
+ +
+

saves previous frame energy.

+ +

Definition at line 4169 of file arm_math.h.

+ +
+
+ +
+ +
+

saves previous input sample.

+ +

Definition at line 4170 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__lms__norm__instance__q31.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__lms__norm__instance__q31.html new file mode 100644 index 000000000..1f12878b5 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__lms__norm__instance__q31.html @@ -0,0 +1,228 @@ + + + + +CMSIS DSP Software Library: arm_lms_norm_instance_q31 Struct Reference + + + + + + + + + +
+ +
+

arm_lms_norm_instance_q31 Struct Reference

+
+
+ +

Instance structure for the Q31 normalized LMS filter. +More...

+ +

#include <arm_math.h>

+ + + + + + + + + + +

+Data Fields

uint16_t numTaps
q31_tpState
q31_tpCoeffs
q31_t mu
uint8_t postShift
q31_trecipTable
q31_t energy
q31_t x0
+

Detailed Description

+

Instance structure for the Q31 normalized LMS filter.

+ +

Definition at line 4105 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

number of coefficients in the filter.

+ +

Definition at line 4107 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the state variable array. The array is of length numTaps+blockSize-1.

+ +

Definition at line 4108 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the coefficient array. The array is of length numTaps.

+ +

Definition at line 4109 of file arm_math.h.

+ +
+
+ +
+ +
+

step size that controls filter coefficient updates.

+ +

Definition at line 4110 of file arm_math.h.

+ +
+
+ +
+ +
+

bit shift applied to coefficients.

+ +

Definition at line 4111 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the reciprocal initial value table.

+ +

Definition at line 4112 of file arm_math.h.

+ +
+
+ +
+ +
+

saves previous frame energy.

+ +

Definition at line 4113 of file arm_math.h.

+ +
+
+ +
+ +
+

saves previous input sample.

+ +

Definition at line 4114 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__matrix__instance__f32.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__matrix__instance__f32.html new file mode 100644 index 000000000..ed0056058 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__matrix__instance__f32.html @@ -0,0 +1,146 @@ + + + + +CMSIS DSP Software Library: arm_matrix_instance_f32 Struct Reference + + + + + + + + + +
+ +
+

arm_matrix_instance_f32 Struct Reference

+
+
+ +

Instance structure for the floating-point matrix structure. +More...

+ +

#include <arm_math.h>

+ + + + + +

+Data Fields

uint16_t numRows
uint16_t numCols
float32_tpData
+

Detailed Description

+

Instance structure for the floating-point matrix structure.

+
Examples:
+

arm_class_marks_example_f32.c, and arm_matrix_example_f32.c.

+
+
+

Definition at line 1337 of file arm_math.h.

+

Field Documentation

+ +
+
+ + + + +
uint16_t arm_matrix_instance_f32::numRows
+
+
+

number of rows of the matrix.

+ +

Definition at line 1339 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
uint16_t arm_matrix_instance_f32::numCols
+
+
+

number of columns of the matrix.

+ +

Definition at line 1340 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the data of the matrix.

+ +

Definition at line 1341 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__matrix__instance__q15.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__matrix__instance__q15.html new file mode 100644 index 000000000..ad220397d --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__matrix__instance__q15.html @@ -0,0 +1,143 @@ + + + + +CMSIS DSP Software Library: arm_matrix_instance_q15 Struct Reference + + + + + + + + + +
+ +
+

arm_matrix_instance_q15 Struct Reference

+
+
+ +

Instance structure for the Q15 matrix structure. +More...

+ +

#include <arm_math.h>

+ + + + + +

+Data Fields

uint16_t numRows
uint16_t numCols
q15_tpData
+

Detailed Description

+

Instance structure for the Q15 matrix structure.

+ +

Definition at line 1348 of file arm_math.h.

+

Field Documentation

+ +
+
+ + + + +
uint16_t arm_matrix_instance_q15::numRows
+
+
+

number of rows of the matrix.

+ +

Definition at line 1350 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
uint16_t arm_matrix_instance_q15::numCols
+
+
+

number of columns of the matrix.

+ +

Definition at line 1351 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the data of the matrix.

+ +

Definition at line 1352 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__matrix__instance__q31.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__matrix__instance__q31.html new file mode 100644 index 000000000..655ce0b4e --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__matrix__instance__q31.html @@ -0,0 +1,143 @@ + + + + +CMSIS DSP Software Library: arm_matrix_instance_q31 Struct Reference + + + + + + + + + +
+ +
+

arm_matrix_instance_q31 Struct Reference

+
+
+ +

Instance structure for the Q31 matrix structure. +More...

+ +

#include <arm_math.h>

+ + + + + +

+Data Fields

uint16_t numRows
uint16_t numCols
q31_tpData
+

Detailed Description

+

Instance structure for the Q31 matrix structure.

+ +

Definition at line 1360 of file arm_math.h.

+

Field Documentation

+ +
+
+ + + + +
uint16_t arm_matrix_instance_q31::numRows
+
+
+

number of rows of the matrix.

+ +

Definition at line 1362 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
uint16_t arm_matrix_instance_q31::numCols
+
+
+

number of columns of the matrix.

+ +

Definition at line 1363 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the data of the matrix.

+ +

Definition at line 1364 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__pid__instance__f32.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__pid__instance__f32.html new file mode 100644 index 000000000..9dfc2579a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__pid__instance__f32.html @@ -0,0 +1,211 @@ + + + + +CMSIS DSP Software Library: arm_pid_instance_f32 Struct Reference + + + + + + + + + +
+ +
+

arm_pid_instance_f32 Struct Reference

+
+
+ +

Instance structure for the floating-point PID Control. +More...

+ +

#include <arm_math.h>

+ + + + + + + + + +

+Data Fields

float32_t A0
float32_t A1
float32_t A2
float32_t state [3]
float32_t Kp
float32_t Ki
float32_t Kd
+

Detailed Description

+

Instance structure for the floating-point PID Control.

+ +

Definition at line 1697 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

The derived gain, A0 = Kp + Ki + Kd .

+ +

Definition at line 1699 of file arm_math.h.

+ +
+
+ +
+ +
+

The derived gain, A1 = -Kp - 2Kd.

+ +

Definition at line 1700 of file arm_math.h.

+ +
+
+ +
+ +
+

The derived gain, A2 = Kd .

+ +

Definition at line 1701 of file arm_math.h.

+ +
+
+ +
+ +
+

The state array of length 3.

+ +

Definition at line 1702 of file arm_math.h.

+ +
+
+ +
+ +
+

The proportional gain.

+ +

Definition at line 1703 of file arm_math.h.

+ +
+
+ +
+ +
+

The integral gain.

+ +

Definition at line 1704 of file arm_math.h.

+ +
+
+ +
+ +
+

The derivative gain.

+ +

Definition at line 1705 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__pid__instance__q15.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__pid__instance__q15.html new file mode 100644 index 000000000..a39c90993 --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__pid__instance__q15.html @@ -0,0 +1,194 @@ + + + + +CMSIS DSP Software Library: arm_pid_instance_q15 Struct Reference + + + + + + + + + +
+ +
+

arm_pid_instance_q15 Struct Reference

+
+
+ +

Instance structure for the Q15 PID Control. +More...

+ +

#include <arm_math.h>

+ + + + + + + + +

+Data Fields

q15_t A0
q31_t A1
q15_t state [3]
q15_t Kp
q15_t Ki
q15_t Kd
+

Detailed Description

+

Instance structure for the Q15 PID Control.

+ +

Definition at line 1664 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

The derived gain, A0 = Kp + Ki + Kd .

+ +

Definition at line 1666 of file arm_math.h.

+ +
+
+ +
+ +
+

The derived gain A1 = -Kp - 2Kd | Kd.

+ +

Definition at line 1671 of file arm_math.h.

+ +
+
+ +
+ +
+

The state array of length 3.

+ +

Definition at line 1673 of file arm_math.h.

+ +
+
+ +
+ +
+

The proportional gain.

+ +

Definition at line 1674 of file arm_math.h.

+ +
+
+ +
+ +
+

The integral gain.

+ +

Definition at line 1675 of file arm_math.h.

+ +
+
+ +
+ +
+

The derivative gain.

+ +

Definition at line 1676 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__pid__instance__q31.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__pid__instance__q31.html new file mode 100644 index 000000000..ee06a18ca --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__pid__instance__q31.html @@ -0,0 +1,211 @@ + + + + +CMSIS DSP Software Library: arm_pid_instance_q31 Struct Reference + + + + + + + + + +
+ +
+

arm_pid_instance_q31 Struct Reference

+
+
+ +

Instance structure for the Q31 PID Control. +More...

+ +

#include <arm_math.h>

+ + + + + + + + + +

+Data Fields

q31_t A0
q31_t A1
q31_t A2
q31_t state [3]
q31_t Kp
q31_t Ki
q31_t Kd
+

Detailed Description

+

Instance structure for the Q31 PID Control.

+ +

Definition at line 1682 of file arm_math.h.

+

Field Documentation

+ +
+ +
+

The derived gain, A0 = Kp + Ki + Kd .

+ +

Definition at line 1684 of file arm_math.h.

+ +
+
+ +
+ +
+

The derived gain, A1 = -Kp - 2Kd.

+ +

Definition at line 1685 of file arm_math.h.

+ +
+
+ +
+ +
+

The derived gain, A2 = Kd .

+ +

Definition at line 1686 of file arm_math.h.

+ +
+
+ +
+ +
+

The state array of length 3.

+ +

Definition at line 1687 of file arm_math.h.

+ +
+
+ +
+ +
+

The proportional gain.

+ +

Definition at line 1688 of file arm_math.h.

+ +
+
+ +
+ +
+

The integral gain.

+ +

Definition at line 1689 of file arm_math.h.

+ +
+
+ +
+ +
+

The derivative gain.

+ +

Definition at line 1690 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__rfft__instance__f32.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__rfft__instance__f32.html new file mode 100644 index 000000000..852ee354c --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__rfft__instance__f32.html @@ -0,0 +1,228 @@ + + + + +CMSIS DSP Software Library: arm_rfft_instance_f32 Struct Reference + + + + + + + + + +
+ +
+

arm_rfft_instance_f32 Struct Reference

+
+
+ +

Instance structure for the floating-point RFFT/RIFFT function. +More...

+ +

#include <arm_math.h>

+ + + + + + + + + + +

+Data Fields

uint32_t fftLenReal
uint16_t fftLenBy2
uint8_t ifftFlagR
uint8_t bitReverseFlagR
uint32_t twidCoefRModifier
float32_tpTwiddleAReal
float32_tpTwiddleBReal
arm_cfft_radix4_instance_f32pCfft
+

Detailed Description

+

Instance structure for the floating-point RFFT/RIFFT function.

+ +

Definition at line 2188 of file arm_math.h.

+

Field Documentation

+ +
+
+ + + + +
uint32_t arm_rfft_instance_f32::fftLenReal
+
+
+

length of the real FFT.

+ +

Definition at line 2190 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
uint16_t arm_rfft_instance_f32::fftLenBy2
+
+
+

length of the complex FFT.

+ +

Definition at line 2191 of file arm_math.h.

+ +
+
+ +
+ +
+

flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform.

+ +

Definition at line 2192 of file arm_math.h.

+ +
+
+ +
+ +
+

flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output.

+ +

Definition at line 2193 of file arm_math.h.

+ +
+
+ +
+ +
+

twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.

+ +

Definition at line 2194 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the real twiddle factor table.

+ +

Definition at line 2195 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the imag twiddle factor table.

+ +

Definition at line 2196 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the complex FFT instance.

+ +

Definition at line 2197 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__rfft__instance__q15.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__rfft__instance__q15.html new file mode 100644 index 000000000..7f5a1b2ed --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__rfft__instance__q15.html @@ -0,0 +1,228 @@ + + + + +CMSIS DSP Software Library: arm_rfft_instance_q15 Struct Reference + + + + + + + + + +
+ +
+

arm_rfft_instance_q15 Struct Reference

+
+
+ +

Instance structure for the Q15 RFFT/RIFFT function. +More...

+ +

#include <arm_math.h>

+ + + + + + + + + + +

+Data Fields

uint32_t fftLenReal
uint32_t fftLenBy2
uint8_t ifftFlagR
uint8_t bitReverseFlagR
uint32_t twidCoefRModifier
q15_tpTwiddleAReal
q15_tpTwiddleBReal
arm_cfft_radix4_instance_q15pCfft
+

Detailed Description

+

Instance structure for the Q15 RFFT/RIFFT function.

+ +

Definition at line 2156 of file arm_math.h.

+

Field Documentation

+ +
+
+ + + + +
uint32_t arm_rfft_instance_q15::fftLenReal
+
+
+

length of the real FFT.

+ +

Definition at line 2158 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
uint32_t arm_rfft_instance_q15::fftLenBy2
+
+
+

length of the complex FFT.

+ +

Definition at line 2159 of file arm_math.h.

+ +
+
+ +
+ +
+

flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform.

+ +

Definition at line 2160 of file arm_math.h.

+ +
+
+ +
+ +
+

flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output.

+ +

Definition at line 2161 of file arm_math.h.

+ +
+
+ +
+ +
+

twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.

+ +

Definition at line 2162 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the real twiddle factor table.

+ +

Definition at line 2163 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the imag twiddle factor table.

+ +

Definition at line 2164 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the complex FFT instance.

+ +

Definition at line 2165 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__rfft__instance__q31.html b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__rfft__instance__q31.html new file mode 100644 index 000000000..50d6ce98a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/structarm__rfft__instance__q31.html @@ -0,0 +1,228 @@ + + + + +CMSIS DSP Software Library: arm_rfft_instance_q31 Struct Reference + + + + + + + + + +
+ +
+

arm_rfft_instance_q31 Struct Reference

+
+
+ +

Instance structure for the Q31 RFFT/RIFFT function. +More...

+ +

#include <arm_math.h>

+ + + + + + + + + + +

+Data Fields

uint32_t fftLenReal
uint32_t fftLenBy2
uint8_t ifftFlagR
uint8_t bitReverseFlagR
uint32_t twidCoefRModifier
q31_tpTwiddleAReal
q31_tpTwiddleBReal
arm_cfft_radix4_instance_q31pCfft
+

Detailed Description

+

Instance structure for the Q31 RFFT/RIFFT function.

+ +

Definition at line 2172 of file arm_math.h.

+

Field Documentation

+ +
+
+ + + + +
uint32_t arm_rfft_instance_q31::fftLenReal
+
+
+

length of the real FFT.

+ +

Definition at line 2174 of file arm_math.h.

+ +
+
+ +
+
+ + + + +
uint32_t arm_rfft_instance_q31::fftLenBy2
+
+
+

length of the complex FFT.

+ +

Definition at line 2175 of file arm_math.h.

+ +
+
+ +
+ +
+

flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform.

+ +

Definition at line 2176 of file arm_math.h.

+ +
+
+ +
+ +
+

flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output.

+ +

Definition at line 2177 of file arm_math.h.

+ +
+
+ +
+ +
+

twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table.

+ +

Definition at line 2178 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the real twiddle factor table.

+ +

Definition at line 2179 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the imag twiddle factor table.

+ +

Definition at line 2180 of file arm_math.h.

+ +
+
+ +
+ +
+

points to the complex FFT instance.

+ +

Definition at line 2181 of file arm_math.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + +
+ +
+ + + + diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/tab_a.png b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/tab_a.png new file mode 100644 index 000000000..2d99ef23f Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/tab_a.png differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/tab_b.png b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/tab_b.png new file mode 100644 index 000000000..b2c3d2be3 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/tab_b.png differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/tab_h.png b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/tab_h.png new file mode 100644 index 000000000..c11f48f19 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/tab_h.png differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/tab_s.png b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/tab_s.png new file mode 100644 index 000000000..978943ac8 Binary files /dev/null and b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/tab_s.png differ diff --git a/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/tabs.css b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/tabs.css new file mode 100644 index 000000000..21920562a --- /dev/null +++ b/hardware/sam/system/CMSIS/Documentation/DSP_Lib/html/tabs.css @@ -0,0 +1,59 @@ +.tabs, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 13px; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #283A5D; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} diff --git a/hardware/sam/system/CMSIS/Include/arm_common_tables.h b/hardware/sam/system/CMSIS/Include/arm_common_tables.h new file mode 100644 index 000000000..7245c4f12 --- /dev/null +++ b/hardware/sam/system/CMSIS/Include/arm_common_tables.h @@ -0,0 +1,35 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 11. November 2010 +* $Revision: V1.0.2 +* +* Project: CMSIS DSP Library +* Title: arm_common_tables.h +* +* Description: This file has extern declaration for common tables like Bitreverse, reciprocal etc which are used across different functions +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* -------------------------------------------------------------------- */ + +#ifndef _ARM_COMMON_TABLES_H +#define _ARM_COMMON_TABLES_H + +#include "arm_math.h" + +extern uint16_t armBitRevTable[256]; +extern q15_t armRecipTableQ15[64]; +extern q31_t armRecipTableQ31[64]; +extern const q31_t realCoefAQ31[1024]; +extern const q31_t realCoefBQ31[1024]; + +#endif /* ARM_COMMON_TABLES_H */ diff --git a/hardware/sam/system/CMSIS/Include/arm_math.h b/hardware/sam/system/CMSIS/Include/arm_math.h new file mode 100644 index 000000000..ffa03b6fd --- /dev/null +++ b/hardware/sam/system/CMSIS/Include/arm_math.h @@ -0,0 +1,7051 @@ +/* ---------------------------------------------------------------------- + * Copyright (C) 2010 ARM Limited. All rights reserved. + * + * $Date: 15. July 2011 + * $Revision: V1.0.10 + * + * Project: CMSIS DSP Library + * Title: arm_math.h + * + * Description: Public header file for CMSIS DSP Library + * + * Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 + * + * Version 1.0.10 2011/7/15 + * Big Endian support added and Merged M0 and M3/M4 Source code. + * + * Version 1.0.3 2010/11/29 + * Re-organized the CMSIS folders and updated documentation. + * + * Version 1.0.2 2010/11/11 + * Documentation updated. + * + * Version 1.0.1 2010/10/05 + * Production release and review comments incorporated. + * + * Version 1.0.0 2010/09/20 + * Production release and review comments incorporated. + * -------------------------------------------------------------------- */ + +/** + \mainpage CMSIS DSP Software Library + * + * Introduction + * + * This user manual describes the CMSIS DSP software library, + * a suite of common signal processing functions for use on Cortex-M processor based devices. + * + * The library is divided into a number of modules each covering a specific category: + * - Basic math functions + * - Fast math functions + * - Complex math functions + * - Filters + * - Matrix functions + * - Transforms + * - Motor control functions + * - Statistical functions + * - Support functions + * - Interpolation functions + * + * The library has separate functions for operating on 8-bit integers, 16-bit integers, + * 32-bit integer and 32-bit floating-point values. + * + * Processor Support + * + * The library is completely written in C and is fully CMSIS compliant. + * High performance is achieved through maximum use of Cortex-M4 intrinsics. + * + * The supplied library source code also builds and runs on the Cortex-M3 and Cortex-M0 processor, + * with the DSP intrinsics being emulated through software. + * + * + * Toolchain Support + * + * The library has been developed and tested with MDK-ARM version 4.21. + * The library is being tested in GCC and IAR toolchains and updates on this activity will be made available shortly. + * + * Using the Library + * + * The library installer contains prebuilt versions of the libraries in the Lib folder. + * - arm_cortexM4lf_math.lib (Little endian and Floating Point Unit on Cortex-M4) + * - arm_cortexM4bf_math.lib (Big endian and Floating Point Unit on Cortex-M4) + * - arm_cortexM4l_math.lib (Little endian on Cortex-M4) + * - arm_cortexM4b_math.lib (Big endian on Cortex-M4) + * - arm_cortexM3l_math.lib (Little endian on Cortex-M3) + * - arm_cortexM3b_math.lib (Big endian on Cortex-M3) + * - arm_cortexM0l_math.lib (Little endian on Cortex-M0) + * - arm_cortexM0b_math.lib (Big endian on Cortex-M3) + * + * The library functions are declared in the public file arm_math.h which is placed in the Include folder. + * Simply include this file and link the appropriate library in the application and begin calling the library functions. The Library supports single + * public header file arm_math.h for Cortex-M4/M3/M0 with little endian and big endian. Same header file will be used for floating point unit(FPU) variants. + * Define the appropriate pre processor MACRO ARM_MATH_CM4 or ARM_MATH_CM3 or + * ARM_MATH_CM0 depending on the target processor in the application. + * + * Examples + * + * The library ships with a number of examples which demonstrate how to use the library functions. + * + * Building the Library + * + * The library installer contains project files to re build libraries on MDK Tool chain in the CMSIS\DSP_Lib\Source\ARM folder. + * - arm_cortexM0b_math.uvproj + * - arm_cortexM0l_math.uvproj + * - arm_cortexM3b_math.uvproj + * - arm_cortexM3l_math.uvproj + * - arm_cortexM4b_math.uvproj + * - arm_cortexM4l_math.uvproj + * - arm_cortexM4bf_math.uvproj + * - arm_cortexM4lf_math.uvproj + * + * Each library project have differant pre-processor macros. + * + * ARM_MATH_CMx: + * Define macro ARM_MATH_CM4 for building the library on Cortex-M4 target, ARM_MATH_CM3 for building library on Cortex-M3 target + * and ARM_MATH_CM0 for building library on cortex-M0 target. + * + * ARM_MATH_BIG_ENDIAN: + * Define macro ARM_MATH_BIG_ENDIAN to build the library for big endian targets. By default library builds for little endian targets. + * + * ARM_MATH_MATRIX_CHECK: + * Define macro for checking on the input and output sizes of matrices + * + * ARM_MATH_ROUNDING: + * Define macro for rounding on support functions + * + * __FPU_PRESENT: + * Initialize macro __FPU_PRESENT = 1 when building on FPU supported Targets. Enable this macro for M4bf and M4lf libraries + * + * + * The project can be built by opening the appropriate project in MDK-ARM 4.21 chain and defining the optional pre processor MACROs detailed above. + * + * Copyright Notice + * + * Copyright (C) 2010 ARM Limited. All rights reserved. + */ + + +/** + * @defgroup groupMath Basic Math Functions + */ + +/** + * @defgroup groupFastMath Fast Math Functions + * This set of functions provides a fast approximation to sine, cosine, and square root. + * As compared to most of the other functions in the CMSIS math library, the fast math functions + * operate on individual values and not arrays. + * There are separate functions for Q15, Q31, and floating-point data. + * + */ + +/** + * @defgroup groupCmplxMath Complex Math Functions + * This set of functions operates on complex data vectors. + * The data in the complex arrays is stored in an interleaved fashion + * (real, imag, real, imag, ...). + * In the API functions, the number of samples in a complex array refers + * to the number of complex values; the array contains twice this number of + * real values. + */ + +/** + * @defgroup groupFilters Filtering Functions + */ + +/** + * @defgroup groupMatrix Matrix Functions + * + * This set of functions provides basic matrix math operations. + * The functions operate on matrix data structures. For example, + * the type + * definition for the floating-point matrix structure is shown + * below: + *
+ *     typedef struct
+ *     {
+ *       uint16_t numRows;     // number of rows of the matrix.
+ *       uint16_t numCols;     // number of columns of the matrix.
+ *       float32_t *pData;     // points to the data of the matrix.
+ *     } arm_matrix_instance_f32;
+ * 
+ * There are similar definitions for Q15 and Q31 data types. + * + * The structure specifies the size of the matrix and then points to + * an array of data. The array is of size numRows X numCols + * and the values are arranged in row order. That is, the + * matrix element (i, j) is stored at: + *
+ *     pData[i*numCols + j]
+ * 
+ * + * \par Init Functions + * There is an associated initialization function for each type of matrix + * data structure. + * The initialization function sets the values of the internal structure fields. + * Refer to the function arm_mat_init_f32(), arm_mat_init_q31() + * and arm_mat_init_q15() for floating-point, Q31 and Q15 types, respectively. + * + * \par + * Use of the initialization function is optional. However, if initialization function is used + * then the instance structure cannot be placed into a const data section. + * To place the instance structure in a const data + * section, manually initialize the data structure. For example: + *
+ * arm_matrix_instance_f32 S = {nRows, nColumns, pData};
+ * arm_matrix_instance_q31 S = {nRows, nColumns, pData};
+ * arm_matrix_instance_q15 S = {nRows, nColumns, pData};
+ * 
+ * where nRows specifies the number of rows, nColumns + * specifies the number of columns, and pData points to the + * data array. + * + * \par Size Checking + * By default all of the matrix functions perform size checking on the input and + * output matrices. For example, the matrix addition function verifies that the + * two input matrices and the output matrix all have the same number of rows and + * columns. If the size check fails the functions return: + *
+ *     ARM_MATH_SIZE_MISMATCH
+ * 
+ * Otherwise the functions return + *
+ *     ARM_MATH_SUCCESS
+ * 
+ * There is some overhead associated with this matrix size checking. + * The matrix size checking is enabled via the #define + *
+ *     ARM_MATH_MATRIX_CHECK
+ * 
+ * within the library project settings. By default this macro is defined + * and size checking is enabled. By changing the project settings and + * undefining this macro size checking is eliminated and the functions + * run a bit faster. With size checking disabled the functions always + * return ARM_MATH_SUCCESS. + */ + +/** + * @defgroup groupTransforms Transform Functions + */ + +/** + * @defgroup groupController Controller Functions + */ + +/** + * @defgroup groupStats Statistics Functions + */ +/** + * @defgroup groupSupport Support Functions + */ + +/** + * @defgroup groupInterpolation Interpolation Functions + * These functions perform 1- and 2-dimensional interpolation of data. + * Linear interpolation is used for 1-dimensional data and + * bilinear interpolation is used for 2-dimensional data. + */ + +/** + * @defgroup groupExamples Examples + */ +#ifndef _ARM_MATH_H +#define _ARM_MATH_H + +#define __CMSIS_GENERIC /* disable NVIC and Systick functions */ + +#if defined (ARM_MATH_CM4) + #include "core_cm4.h" +#elif defined (ARM_MATH_CM3) + #include "core_cm3.h" +#elif defined (ARM_MATH_CM0) + #include "core_cm0.h" +#else +#include "ARMCM4.h" +#warning "Define either ARM_MATH_CM4 OR ARM_MATH_CM3...By Default building on ARM_MATH_CM4....." +#endif + +#undef __CMSIS_GENERIC /* enable NVIC and Systick functions */ +#include "string.h" + #include "math.h" +#ifdef __cplusplus +extern "C" +{ +#endif + + + /** + * @brief Macros required for reciprocal calculation in Normalized LMS + */ + +#define DELTA_Q31 (0x100) +#define DELTA_Q15 0x5 +#define INDEX_MASK 0x0000003F +#define PI 3.14159265358979f + + /** + * @brief Macros required for SINE and COSINE Fast math approximations + */ + +#define TABLE_SIZE 256 +#define TABLE_SPACING_Q31 0x800000 +#define TABLE_SPACING_Q15 0x80 + + /** + * @brief Macros required for SINE and COSINE Controller functions + */ + /* 1.31(q31) Fixed value of 2/360 */ + /* -1 to +1 is divided into 360 values so total spacing is (2/360) */ +#define INPUT_SPACING 0xB60B61 + + + /** + * @brief Error status returned by some functions in the library. + */ + + typedef enum + { + ARM_MATH_SUCCESS = 0, /**< No error */ + ARM_MATH_ARGUMENT_ERROR = -1, /**< One or more arguments are incorrect */ + ARM_MATH_LENGTH_ERROR = -2, /**< Length of data buffer is incorrect */ + ARM_MATH_SIZE_MISMATCH = -3, /**< Size of matrices is not compatible with the operation. */ + ARM_MATH_NANINF = -4, /**< Not-a-number (NaN) or infinity is generated */ + ARM_MATH_SINGULAR = -5, /**< Generated by matrix inversion if the input matrix is singular and cannot be inverted. */ + ARM_MATH_TEST_FAILURE = -6 /**< Test Failed */ + } arm_status; + + /** + * @brief 8-bit fractional data type in 1.7 format. + */ + typedef int8_t q7_t; + + /** + * @brief 16-bit fractional data type in 1.15 format. + */ + typedef int16_t q15_t; + + /** + * @brief 32-bit fractional data type in 1.31 format. + */ + typedef int32_t q31_t; + + /** + * @brief 64-bit fractional data type in 1.63 format. + */ + typedef int64_t q63_t; + + /** + * @brief 32-bit floating-point type definition. + */ + typedef float float32_t; + + /** + * @brief 64-bit floating-point type definition. + */ + typedef double float64_t; + + /** + * @brief definition to read/write two 16 bit values. + */ +#define __SIMD32(addr) (*(int32_t **) & (addr)) + +#if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0) + /** + * @brief definition to pack two 16 bit values. + */ +#define __PKHBT(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0x0000FFFF) | \ + (((int32_t)(ARG2) << ARG3) & (int32_t)0xFFFF0000) ) + +#endif + + + /** + * @brief definition to pack four 8 bit values. + */ +#ifndef ARM_MATH_BIG_ENDIAN + +#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) << 0) & (int32_t)0x000000FF) | \ + (((int32_t)(v1) << 8) & (int32_t)0x0000FF00) | \ + (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) | \ + (((int32_t)(v3) << 24) & (int32_t)0xFF000000) ) +#else + +#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) << 0) & (int32_t)0x000000FF) | \ + (((int32_t)(v2) << 8) & (int32_t)0x0000FF00) | \ + (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) | \ + (((int32_t)(v0) << 24) & (int32_t)0xFF000000) ) + +#endif + + + /** + * @brief Clips Q63 to Q31 values. + */ + static __INLINE q31_t clip_q63_to_q31( + q63_t x) + { + return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ? + ((0x7FFFFFFF ^ ((q31_t) (x >> 63)))) : (q31_t) x; + } + + /** + * @brief Clips Q63 to Q15 values. + */ + static __INLINE q15_t clip_q63_to_q15( + q63_t x) + { + return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ? + ((0x7FFF ^ ((q15_t) (x >> 63)))) : (q15_t) (x >> 15); + } + + /** + * @brief Clips Q31 to Q7 values. + */ + static __INLINE q7_t clip_q31_to_q7( + q31_t x) + { + return ((q31_t) (x >> 24) != ((q31_t) x >> 23)) ? + ((0x7F ^ ((q7_t) (x >> 31)))) : (q7_t) x; + } + + /** + * @brief Clips Q31 to Q15 values. + */ + static __INLINE q15_t clip_q31_to_q15( + q31_t x) + { + return ((q31_t) (x >> 16) != ((q31_t) x >> 15)) ? + ((0x7FFF ^ ((q15_t) (x >> 31)))) : (q15_t) x; + } + + /** + * @brief Multiplies 32 X 64 and returns 32 bit result in 2.30 format. + */ + + static __INLINE q63_t mult32x64( + q63_t x, + q31_t y) + { + return ((((q63_t) (x & 0x00000000FFFFFFFF) * y) >> 32) + + (((q63_t) (x >> 32) * y))); + } + + +#if defined (ARM_MATH_CM0) && defined ( __CC_ARM ) +#define __CLZ __clz +#endif + +#if defined (ARM_MATH_CM0) && ((defined (__ICCARM__)) ||(defined (__GNUC__)) || defined (__TASKING__) ) + + static __INLINE uint32_t __CLZ(q31_t data); + + + static __INLINE uint32_t __CLZ(q31_t data) + { + uint32_t count = 0; + uint32_t mask = 0x80000000; + + while((data & mask) == 0) + { + count += 1u; + mask = mask >> 1u; + } + + return(count); + + } + +#endif + + /** + * @brief Function to Calculates 1/in(reciprocal) value of Q31 Data type. + */ + + static __INLINE uint32_t arm_recip_q31( + q31_t in, + q31_t * dst, + q31_t * pRecipTable) + { + + uint32_t out, tempVal; + uint32_t index, i; + uint32_t signBits; + + if(in > 0) + { + signBits = __CLZ(in) - 1; + } + else + { + signBits = __CLZ(-in) - 1; + } + + /* Convert input sample to 1.31 format */ + in = in << signBits; + + /* calculation of index for initial approximated Val */ + index = (uint32_t) (in >> 24u); + index = (index & INDEX_MASK); + + /* 1.31 with exp 1 */ + out = pRecipTable[index]; + + /* calculation of reciprocal value */ + /* running approximation for two iterations */ + for (i = 0u; i < 2u; i++) + { + tempVal = (q31_t) (((q63_t) in * out) >> 31u); + tempVal = 0x7FFFFFFF - tempVal; + /* 1.31 with exp 1 */ + //out = (q31_t) (((q63_t) out * tempVal) >> 30u); + out = (q31_t) clip_q63_to_q31(((q63_t) out * tempVal) >> 30u); + } + + /* write output */ + *dst = out; + + /* return num of signbits of out = 1/in value */ + return (signBits + 1u); + + } + + /** + * @brief Function to Calculates 1/in(reciprocal) value of Q15 Data type. + */ + static __INLINE uint32_t arm_recip_q15( + q15_t in, + q15_t * dst, + q15_t * pRecipTable) + { + + uint32_t out = 0, tempVal = 0; + uint32_t index = 0, i = 0; + uint32_t signBits = 0; + + if(in > 0) + { + signBits = __CLZ(in) - 17; + } + else + { + signBits = __CLZ(-in) - 17; + } + + /* Convert input sample to 1.15 format */ + in = in << signBits; + + /* calculation of index for initial approximated Val */ + index = in >> 8; + index = (index & INDEX_MASK); + + /* 1.15 with exp 1 */ + out = pRecipTable[index]; + + /* calculation of reciprocal value */ + /* running approximation for two iterations */ + for (i = 0; i < 2; i++) + { + tempVal = (q15_t) (((q31_t) in * out) >> 15); + tempVal = 0x7FFF - tempVal; + /* 1.15 with exp 1 */ + out = (q15_t) (((q31_t) out * tempVal) >> 14); + } + + /* write output */ + *dst = out; + + /* return num of signbits of out = 1/in value */ + return (signBits + 1); + + } + + + /* + * @brief C custom defined intrinisic function for only M0 processors + */ +#if defined(ARM_MATH_CM0) + + static __INLINE q31_t __SSAT( + q31_t x, + uint32_t y) + { + int32_t posMax, negMin; + uint32_t i; + + posMax = 1; + for (i = 0; i < (y - 1); i++) + { + posMax = posMax * 2; + } + + if(x > 0) + { + posMax = (posMax - 1); + + if(x > posMax) + { + x = posMax; + } + } + else + { + negMin = -posMax; + + if(x < negMin) + { + x = negMin; + } + } + return (x); + + + } + +#endif /* end of ARM_MATH_CM0 */ + + + + /* + * @brief C custom defined intrinsic function for M3 and M0 processors + */ +#if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0) + + /* + * @brief C custom defined QADD8 for M3 and M0 processors + */ + static __INLINE q31_t __QADD8( + q31_t x, + q31_t y) + { + + q31_t sum; + q7_t r, s, t, u; + + r = (char) x; + s = (char) y; + + r = __SSAT((q31_t) (r + s), 8); + s = __SSAT(((q31_t) (((x << 16) >> 24) + ((y << 16) >> 24))), 8); + t = __SSAT(((q31_t) (((x << 8) >> 24) + ((y << 8) >> 24))), 8); + u = __SSAT(((q31_t) ((x >> 24) + (y >> 24))), 8); + + sum = (((q31_t) u << 24) & 0xFF000000) | (((q31_t) t << 16) & 0x00FF0000) | + (((q31_t) s << 8) & 0x0000FF00) | (r & 0x000000FF); + + return sum; + + } + + /* + * @brief C custom defined QSUB8 for M3 and M0 processors + */ + static __INLINE q31_t __QSUB8( + q31_t x, + q31_t y) + { + + q31_t sum; + q31_t r, s, t, u; + + r = (char) x; + s = (char) y; + + r = __SSAT((r - s), 8); + s = __SSAT(((q31_t) (((x << 16) >> 24) - ((y << 16) >> 24))), 8) << 8; + t = __SSAT(((q31_t) (((x << 8) >> 24) - ((y << 8) >> 24))), 8) << 16; + u = __SSAT(((q31_t) ((x >> 24) - (y >> 24))), 8) << 24; + + sum = + (u & 0xFF000000) | (t & 0x00FF0000) | (s & 0x0000FF00) | (r & 0x000000FF); + + return sum; + } + + /* + * @brief C custom defined QADD16 for M3 and M0 processors + */ + + /* + * @brief C custom defined QADD16 for M3 and M0 processors + */ + static __INLINE q31_t __QADD16( + q31_t x, + q31_t y) + { + + q31_t sum; + q31_t r, s; + + r = (short) x; + s = (short) y; + + r = __SSAT(r + s, 16); + s = __SSAT(((q31_t) ((x >> 16) + (y >> 16))), 16) << 16; + + sum = (s & 0xFFFF0000) | (r & 0x0000FFFF); + + return sum; + + } + + /* + * @brief C custom defined SHADD16 for M3 and M0 processors + */ + static __INLINE q31_t __SHADD16( + q31_t x, + q31_t y) + { + + q31_t sum; + q31_t r, s; + + r = (short) x; + s = (short) y; + + r = ((r >> 1) + (s >> 1)); + s = ((q31_t) ((x >> 17) + (y >> 17))) << 16; + + sum = (s & 0xFFFF0000) | (r & 0x0000FFFF); + + return sum; + + } + + /* + * @brief C custom defined QSUB16 for M3 and M0 processors + */ + static __INLINE q31_t __QSUB16( + q31_t x, + q31_t y) + { + + q31_t sum; + q31_t r, s; + + r = (short) x; + s = (short) y; + + r = __SSAT(r - s, 16); + s = __SSAT(((q31_t) ((x >> 16) - (y >> 16))), 16) << 16; + + sum = (s & 0xFFFF0000) | (r & 0x0000FFFF); + + return sum; + } + + /* + * @brief C custom defined SHSUB16 for M3 and M0 processors + */ + static __INLINE q31_t __SHSUB16( + q31_t x, + q31_t y) + { + + q31_t diff; + q31_t r, s; + + r = (short) x; + s = (short) y; + + r = ((r >> 1) - (s >> 1)); + s = (((x >> 17) - (y >> 17)) << 16); + + diff = (s & 0xFFFF0000) | (r & 0x0000FFFF); + + return diff; + } + + /* + * @brief C custom defined QASX for M3 and M0 processors + */ + static __INLINE q31_t __QASX( + q31_t x, + q31_t y) + { + + q31_t sum = 0; + + sum = ((sum + clip_q31_to_q15((q31_t) ((short) (x >> 16) + (short) y))) << 16) + + clip_q31_to_q15((q31_t) ((short) x - (short) (y >> 16))); + + return sum; + } + + /* + * @brief C custom defined SHASX for M3 and M0 processors + */ + static __INLINE q31_t __SHASX( + q31_t x, + q31_t y) + { + + q31_t sum; + q31_t r, s; + + r = (short) x; + s = (short) y; + + r = ((r >> 1) - (y >> 17)); + s = (((x >> 17) + (s >> 1)) << 16); + + sum = (s & 0xFFFF0000) | (r & 0x0000FFFF); + + return sum; + } + + + /* + * @brief C custom defined QSAX for M3 and M0 processors + */ + static __INLINE q31_t __QSAX( + q31_t x, + q31_t y) + { + + q31_t sum = 0; + + sum = ((sum + clip_q31_to_q15((q31_t) ((short) (x >> 16) - (short) y))) << 16) + + clip_q31_to_q15((q31_t) ((short) x + (short) (y >> 16))); + + return sum; + } + + /* + * @brief C custom defined SHSAX for M3 and M0 processors + */ + static __INLINE q31_t __SHSAX( + q31_t x, + q31_t y) + { + + q31_t sum; + q31_t r, s; + + r = (short) x; + s = (short) y; + + r = ((r >> 1) + (y >> 17)); + s = (((x >> 17) - (s >> 1)) << 16); + + sum = (s & 0xFFFF0000) | (r & 0x0000FFFF); + + return sum; + } + + /* + * @brief C custom defined SMUSDX for M3 and M0 processors + */ + static __INLINE q31_t __SMUSDX( + q31_t x, + q31_t y) + { + + return ((q31_t)(((short) x * (short) (y >> 16)) - + ((short) (x >> 16) * (short) y))); + } + + /* + * @brief C custom defined SMUADX for M3 and M0 processors + */ + static __INLINE q31_t __SMUADX( + q31_t x, + q31_t y) + { + + return ((q31_t)(((short) x * (short) (y >> 16)) + + ((short) (x >> 16) * (short) y))); + } + + /* + * @brief C custom defined QADD for M3 and M0 processors + */ + static __INLINE q31_t __QADD( + q31_t x, + q31_t y) + { + return clip_q63_to_q31((q63_t) x + y); + } + + /* + * @brief C custom defined QSUB for M3 and M0 processors + */ + static __INLINE q31_t __QSUB( + q31_t x, + q31_t y) + { + return clip_q63_to_q31((q63_t) x - y); + } + + /* + * @brief C custom defined SMLAD for M3 and M0 processors + */ + static __INLINE q31_t __SMLAD( + q31_t x, + q31_t y, + q31_t sum) + { + + return (sum + ((short) (x >> 16) * (short) (y >> 16)) + + ((short) x * (short) y)); + } + + /* + * @brief C custom defined SMLADX for M3 and M0 processors + */ + static __INLINE q31_t __SMLADX( + q31_t x, + q31_t y, + q31_t sum) + { + + return (sum + ((short) (x >> 16) * (short) (y)) + + ((short) x * (short) (y >> 16))); + } + + /* + * @brief C custom defined SMLSDX for M3 and M0 processors + */ + static __INLINE q31_t __SMLSDX( + q31_t x, + q31_t y, + q31_t sum) + { + + return (sum - ((short) (x >> 16) * (short) (y)) + + ((short) x * (short) (y >> 16))); + } + + /* + * @brief C custom defined SMLALD for M3 and M0 processors + */ + static __INLINE q63_t __SMLALD( + q31_t x, + q31_t y, + q63_t sum) + { + + return (sum + ((short) (x >> 16) * (short) (y >> 16)) + + ((short) x * (short) y)); + } + + /* + * @brief C custom defined SMLALDX for M3 and M0 processors + */ + static __INLINE q63_t __SMLALDX( + q31_t x, + q31_t y, + q63_t sum) + { + + return (sum + ((short) (x >> 16) * (short) y)) + + ((short) x * (short) (y >> 16)); + } + + /* + * @brief C custom defined SMUAD for M3 and M0 processors + */ + static __INLINE q31_t __SMUAD( + q31_t x, + q31_t y) + { + + return (((x >> 16) * (y >> 16)) + + (((x << 16) >> 16) * ((y << 16) >> 16))); + } + + /* + * @brief C custom defined SMUSD for M3 and M0 processors + */ + static __INLINE q31_t __SMUSD( + q31_t x, + q31_t y) + { + + return (-((x >> 16) * (y >> 16)) + + (((x << 16) >> 16) * ((y << 16) >> 16))); + } + + + + +#endif /* (ARM_MATH_CM3) || defined (ARM_MATH_CM0) */ + + + /** + * @brief Instance structure for the Q7 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q7_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + } arm_fir_instance_q7; + + /** + * @brief Instance structure for the Q15 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + } arm_fir_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + } arm_fir_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + } arm_fir_instance_f32; + + + /** + * @brief Processing function for the Q7 FIR filter. + * @param[in] *S points to an instance of the Q7 FIR filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + void arm_fir_q7( + const arm_fir_instance_q7 * S, + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q7 FIR filter. + * @param[in,out] *S points to an instance of the Q7 FIR structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of samples that are processed. + * @return none + */ + void arm_fir_init_q7( + arm_fir_instance_q7 * S, + uint16_t numTaps, + q7_t * pCoeffs, + q7_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 FIR filter. + * @param[in] *S points to an instance of the Q15 FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + void arm_fir_q15( + const arm_fir_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Processing function for the fast Q15 FIR filter for Cortex-M3 and Cortex-M4. + * @param[in] *S points to an instance of the Q15 FIR filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + void arm_fir_fast_q15( + const arm_fir_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q15 FIR filter. + * @param[in,out] *S points to an instance of the Q15 FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. Must be even and greater than or equal to 4. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_ARGUMENT_ERROR if + * numTaps is not a supported value. + */ + + arm_status arm_fir_init_q15( + arm_fir_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + /** + * @brief Processing function for the Q31 FIR filter. + * @param[in] *S points to an instance of the Q31 FIR filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + void arm_fir_q31( + const arm_fir_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Processing function for the fast Q31 FIR filter for Cortex-M3 and Cortex-M4. + * @param[in] *S points to an instance of the Q31 FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + void arm_fir_fast_q31( + const arm_fir_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q31 FIR filter. + * @param[in,out] *S points to an instance of the Q31 FIR structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + * @return none. + */ + void arm_fir_init_q31( + arm_fir_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + /** + * @brief Processing function for the floating-point FIR filter. + * @param[in] *S points to an instance of the floating-point FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + void arm_fir_f32( + const arm_fir_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the floating-point FIR filter. + * @param[in,out] *S points to an instance of the floating-point FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + * @return none. + */ + void arm_fir_init_f32( + arm_fir_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 Biquad cascade filter. + */ + typedef struct + { + int8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q15_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + q15_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + int8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ + + } arm_biquad_casd_df1_inst_q15; + + + /** + * @brief Instance structure for the Q31 Biquad cascade filter. + */ + typedef struct + { + uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q31_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + q31_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + uint8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ + + } arm_biquad_casd_df1_inst_q31; + + /** + * @brief Instance structure for the floating-point Biquad cascade filter. + */ + typedef struct + { + uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float32_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + float32_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + + + } arm_biquad_casd_df1_inst_f32; + + + + /** + * @brief Processing function for the Q15 Biquad cascade filter. + * @param[in] *S points to an instance of the Q15 Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_biquad_cascade_df1_q15( + const arm_biquad_casd_df1_inst_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q15 Biquad cascade filter. + * @param[in,out] *S points to an instance of the Q15 Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format + * @return none + */ + + void arm_biquad_cascade_df1_init_q15( + arm_biquad_casd_df1_inst_q15 * S, + uint8_t numStages, + q15_t * pCoeffs, + q15_t * pState, + int8_t postShift); + + + /** + * @brief Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-M4. + * @param[in] *S points to an instance of the Q15 Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_biquad_cascade_df1_fast_q15( + const arm_biquad_casd_df1_inst_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 Biquad cascade filter + * @param[in] *S points to an instance of the Q31 Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_biquad_cascade_df1_q31( + const arm_biquad_casd_df1_inst_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Fast but less precise processing function for the Q31 Biquad cascade filter for Cortex-M3 and Cortex-M4. + * @param[in] *S points to an instance of the Q31 Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_biquad_cascade_df1_fast_q31( + const arm_biquad_casd_df1_inst_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q31 Biquad cascade filter. + * @param[in,out] *S points to an instance of the Q31 Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format + * @return none + */ + + void arm_biquad_cascade_df1_init_q31( + arm_biquad_casd_df1_inst_q31 * S, + uint8_t numStages, + q31_t * pCoeffs, + q31_t * pState, + int8_t postShift); + + /** + * @brief Processing function for the floating-point Biquad cascade filter. + * @param[in] *S points to an instance of the floating-point Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_biquad_cascade_df1_f32( + const arm_biquad_casd_df1_inst_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the floating-point Biquad cascade filter. + * @param[in,out] *S points to an instance of the floating-point Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @return none + */ + + void arm_biquad_cascade_df1_init_f32( + arm_biquad_casd_df1_inst_f32 * S, + uint8_t numStages, + float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Instance structure for the floating-point matrix structure. + */ + + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + float32_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_f32; + + /** + * @brief Instance structure for the Q15 matrix structure. + */ + + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + q15_t *pData; /**< points to the data of the matrix. */ + + } arm_matrix_instance_q15; + + /** + * @brief Instance structure for the Q31 matrix structure. + */ + + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + q31_t *pData; /**< points to the data of the matrix. */ + + } arm_matrix_instance_q31; + + + + /** + * @brief Floating-point matrix addition. + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_add_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15 matrix addition. + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_add_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst); + + /** + * @brief Q31 matrix addition. + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_add_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point matrix transpose. + * @param[in] *pSrc points to the input matrix + * @param[out] *pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_trans_f32( + const arm_matrix_instance_f32 * pSrc, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15 matrix transpose. + * @param[in] *pSrc points to the input matrix + * @param[out] *pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_trans_q15( + const arm_matrix_instance_q15 * pSrc, + arm_matrix_instance_q15 * pDst); + + /** + * @brief Q31 matrix transpose. + * @param[in] *pSrc points to the input matrix + * @param[out] *pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_trans_q31( + const arm_matrix_instance_q31 * pSrc, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point matrix multiplication + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_mult_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15 matrix multiplication + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_mult_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pState); + + /** + * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @param[in] *pState points to the array for storing intermediate results + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_mult_fast_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pState); + + /** + * @brief Q31 matrix multiplication + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_mult_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + /** + * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_mult_fast_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point matrix subtraction + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_sub_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15 matrix subtraction + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_sub_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst); + + /** + * @brief Q31 matrix subtraction + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_sub_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + /** + * @brief Floating-point matrix scaling. + * @param[in] *pSrc points to the input matrix + * @param[in] scale scale factor + * @param[out] *pDst points to the output matrix + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_scale_f32( + const arm_matrix_instance_f32 * pSrc, + float32_t scale, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15 matrix scaling. + * @param[in] *pSrc points to input matrix + * @param[in] scaleFract fractional portion of the scale factor + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to output matrix + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_scale_q15( + const arm_matrix_instance_q15 * pSrc, + q15_t scaleFract, + int32_t shift, + arm_matrix_instance_q15 * pDst); + + /** + * @brief Q31 matrix scaling. + * @param[in] *pSrc points to input matrix + * @param[in] scaleFract fractional portion of the scale factor + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + arm_status arm_mat_scale_q31( + const arm_matrix_instance_q31 * pSrc, + q31_t scaleFract, + int32_t shift, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Q31 matrix initialization. + * @param[in,out] *S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] *pData points to the matrix data array. + * @return none + */ + + void arm_mat_init_q31( + arm_matrix_instance_q31 * S, + uint16_t nRows, + uint16_t nColumns, + q31_t *pData); + + /** + * @brief Q15 matrix initialization. + * @param[in,out] *S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] *pData points to the matrix data array. + * @return none + */ + + void arm_mat_init_q15( + arm_matrix_instance_q15 * S, + uint16_t nRows, + uint16_t nColumns, + q15_t *pData); + + /** + * @brief Floating-point matrix initialization. + * @param[in,out] *S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] *pData points to the matrix data array. + * @return none + */ + + void arm_mat_init_f32( + arm_matrix_instance_f32 * S, + uint16_t nRows, + uint16_t nColumns, + float32_t *pData); + + + + /** + * @brief Instance structure for the Q15 PID Control. + */ + typedef struct + { + q15_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ + #ifdef ARM_MATH_CM0 + q15_t A1; + q15_t A2; + #else + q31_t A1; /**< The derived gain A1 = -Kp - 2Kd | Kd.*/ + #endif + q15_t state[3]; /**< The state array of length 3. */ + q15_t Kp; /**< The proportional gain. */ + q15_t Ki; /**< The integral gain. */ + q15_t Kd; /**< The derivative gain. */ + } arm_pid_instance_q15; + + /** + * @brief Instance structure for the Q31 PID Control. + */ + typedef struct + { + q31_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ + q31_t A1; /**< The derived gain, A1 = -Kp - 2Kd. */ + q31_t A2; /**< The derived gain, A2 = Kd . */ + q31_t state[3]; /**< The state array of length 3. */ + q31_t Kp; /**< The proportional gain. */ + q31_t Ki; /**< The integral gain. */ + q31_t Kd; /**< The derivative gain. */ + + } arm_pid_instance_q31; + + /** + * @brief Instance structure for the floating-point PID Control. + */ + typedef struct + { + float32_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ + float32_t A1; /**< The derived gain, A1 = -Kp - 2Kd. */ + float32_t A2; /**< The derived gain, A2 = Kd . */ + float32_t state[3]; /**< The state array of length 3. */ + float32_t Kp; /**< The proportional gain. */ + float32_t Ki; /**< The integral gain. */ + float32_t Kd; /**< The derivative gain. */ + } arm_pid_instance_f32; + + + + /** + * @brief Initialization function for the floating-point PID Control. + * @param[in,out] *S points to an instance of the PID structure. + * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. + * @return none. + */ + void arm_pid_init_f32( + arm_pid_instance_f32 * S, + int32_t resetStateFlag); + + /** + * @brief Reset function for the floating-point PID Control. + * @param[in,out] *S is an instance of the floating-point PID Control structure + * @return none + */ + void arm_pid_reset_f32( + arm_pid_instance_f32 * S); + + + /** + * @brief Initialization function for the Q31 PID Control. + * @param[in,out] *S points to an instance of the Q15 PID structure. + * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. + * @return none. + */ + void arm_pid_init_q31( + arm_pid_instance_q31 * S, + int32_t resetStateFlag); + + + /** + * @brief Reset function for the Q31 PID Control. + * @param[in,out] *S points to an instance of the Q31 PID Control structure + * @return none + */ + + void arm_pid_reset_q31( + arm_pid_instance_q31 * S); + + /** + * @brief Initialization function for the Q15 PID Control. + * @param[in,out] *S points to an instance of the Q15 PID structure. + * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. + * @return none. + */ + void arm_pid_init_q15( + arm_pid_instance_q15 * S, + int32_t resetStateFlag); + + /** + * @brief Reset function for the Q15 PID Control. + * @param[in,out] *S points to an instance of the q15 PID Control structure + * @return none + */ + void arm_pid_reset_q15( + arm_pid_instance_q15 * S); + + + /** + * @brief Instance structure for the floating-point Linear Interpolate function. + */ + typedef struct + { + uint32_t nValues; + float32_t x1; + float32_t xSpacing; + float32_t *pYData; /**< pointer to the table of Y values */ + } arm_linear_interp_instance_f32; + + /** + * @brief Instance structure for the floating-point bilinear interpolation function. + */ + + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + float32_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_f32; + + /** + * @brief Instance structure for the Q31 bilinear interpolation function. + */ + + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + q31_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_q31; + + /** + * @brief Instance structure for the Q15 bilinear interpolation function. + */ + + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + q15_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_q15; + + /** + * @brief Instance structure for the Q15 bilinear interpolation function. + */ + + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + q7_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_q7; + + + /** + * @brief Q7 vector multiplication. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_mult_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Q15 vector multiplication. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_mult_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Q31 vector multiplication. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_mult_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Floating-point vector multiplication. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_mult_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 CFFT/CIFFT function. + */ + + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + q15_t *pTwiddle; /**< points to the twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix4_instance_q15; + + /** + * @brief Instance structure for the Q31 CFFT/CIFFT function. + */ + + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + q31_t *pTwiddle; /**< points to the twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix4_instance_q31; + + /** + * @brief Instance structure for the floating-point CFFT/CIFFT function. + */ + + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + float32_t *pTwiddle; /**< points to the twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + float32_t onebyfftLen; /**< value of 1/fftLen. */ + } arm_cfft_radix4_instance_f32; + + /** + * @brief Processing function for the Q15 CFFT/CIFFT. + * @param[in] *S points to an instance of the Q15 CFFT/CIFFT structure. + * @param[in, out] *pSrc points to the complex data buffer. Processing occurs in-place. + * @return none. + */ + + void arm_cfft_radix4_q15( + const arm_cfft_radix4_instance_q15 * S, + q15_t * pSrc); + + /** + * @brief Initialization function for the Q15 CFFT/CIFFT. + * @param[in,out] *S points to an instance of the Q15 CFFT/CIFFT structure. + * @param[in] fftLen length of the FFT. + * @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. + * @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. + */ + + arm_status arm_cfft_radix4_init_q15( + arm_cfft_radix4_instance_q15 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Processing function for the Q31 CFFT/CIFFT. + * @param[in] *S points to an instance of the Q31 CFFT/CIFFT structure. + * @param[in, out] *pSrc points to the complex data buffer. Processing occurs in-place. + * @return none. + */ + + void arm_cfft_radix4_q31( + const arm_cfft_radix4_instance_q31 * S, + q31_t * pSrc); + + /** + * @brief Initialization function for the Q31 CFFT/CIFFT. + * @param[in,out] *S points to an instance of the Q31 CFFT/CIFFT structure. + * @param[in] fftLen length of the FFT. + * @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. + * @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. + */ + + arm_status arm_cfft_radix4_init_q31( + arm_cfft_radix4_instance_q31 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Processing function for the floating-point CFFT/CIFFT. + * @param[in] *S points to an instance of the floating-point CFFT/CIFFT structure. + * @param[in, out] *pSrc points to the complex data buffer. Processing occurs in-place. + * @return none. + */ + + void arm_cfft_radix4_f32( + const arm_cfft_radix4_instance_f32 * S, + float32_t * pSrc); + + /** + * @brief Initialization function for the floating-point CFFT/CIFFT. + * @param[in,out] *S points to an instance of the floating-point CFFT/CIFFT structure. + * @param[in] fftLen length of the FFT. + * @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. + * @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. + */ + + arm_status arm_cfft_radix4_init_f32( + arm_cfft_radix4_instance_f32 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + + + /*---------------------------------------------------------------------- + * Internal functions prototypes FFT function + ----------------------------------------------------------------------*/ + + /** + * @brief Core function for the floating-point CFFT butterfly process. + * @param[in, out] *pSrc points to the in-place buffer of floating-point data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef points to the twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + + void arm_radix4_butterfly_f32( + float32_t * pSrc, + uint16_t fftLen, + float32_t * pCoef, + uint16_t twidCoefModifier); + + /** + * @brief Core function for the floating-point CIFFT butterfly process. + * @param[in, out] *pSrc points to the in-place buffer of floating-point data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef points to twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @param[in] onebyfftLen value of 1/fftLen. + * @return none. + */ + + void arm_radix4_butterfly_inverse_f32( + float32_t * pSrc, + uint16_t fftLen, + float32_t * pCoef, + uint16_t twidCoefModifier, + float32_t onebyfftLen); + + /** + * @brief In-place bit reversal function. + * @param[in, out] *pSrc points to the in-place buffer of floating-point data type. + * @param[in] fftSize length of the FFT. + * @param[in] bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table. + * @param[in] *pBitRevTab points to the bit reversal table. + * @return none. + */ + + void arm_bitreversal_f32( + float32_t *pSrc, + uint16_t fftSize, + uint16_t bitRevFactor, + uint16_t *pBitRevTab); + + /** + * @brief Core function for the Q31 CFFT butterfly process. + * @param[in, out] *pSrc points to the in-place buffer of Q31 data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef points to twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + + void arm_radix4_butterfly_q31( + q31_t *pSrc, + uint32_t fftLen, + q31_t *pCoef, + uint32_t twidCoefModifier); + + /** + * @brief Core function for the Q31 CIFFT butterfly process. + * @param[in, out] *pSrc points to the in-place buffer of Q31 data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef points to twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + + void arm_radix4_butterfly_inverse_q31( + q31_t * pSrc, + uint32_t fftLen, + q31_t * pCoef, + uint32_t twidCoefModifier); + + /** + * @brief In-place bit reversal function. + * @param[in, out] *pSrc points to the in-place buffer of Q31 data type. + * @param[in] fftLen length of the FFT. + * @param[in] bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table + * @param[in] *pBitRevTab points to bit reversal table. + * @return none. + */ + + void arm_bitreversal_q31( + q31_t * pSrc, + uint32_t fftLen, + uint16_t bitRevFactor, + uint16_t *pBitRevTab); + + /** + * @brief Core function for the Q15 CFFT butterfly process. + * @param[in, out] *pSrc16 points to the in-place buffer of Q15 data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef16 points to twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + + void arm_radix4_butterfly_q15( + q15_t *pSrc16, + uint32_t fftLen, + q15_t *pCoef16, + uint32_t twidCoefModifier); + + /** + * @brief Core function for the Q15 CIFFT butterfly process. + * @param[in, out] *pSrc16 points to the in-place buffer of Q15 data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef16 points to twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + + void arm_radix4_butterfly_inverse_q15( + q15_t *pSrc16, + uint32_t fftLen, + q15_t *pCoef16, + uint32_t twidCoefModifier); + + /** + * @brief In-place bit reversal function. + * @param[in, out] *pSrc points to the in-place buffer of Q15 data type. + * @param[in] fftLen length of the FFT. + * @param[in] bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table + * @param[in] *pBitRevTab points to bit reversal table. + * @return none. + */ + + void arm_bitreversal_q15( + q15_t * pSrc, + uint32_t fftLen, + uint16_t bitRevFactor, + uint16_t *pBitRevTab); + + /** + * @brief Instance structure for the Q15 RFFT/RIFFT function. + */ + + typedef struct + { + uint32_t fftLenReal; /**< length of the real FFT. */ + uint32_t fftLenBy2; /**< length of the complex FFT. */ + uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ + uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ + uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + q15_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ + q15_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ + arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */ + } arm_rfft_instance_q15; + + /** + * @brief Instance structure for the Q31 RFFT/RIFFT function. + */ + + typedef struct + { + uint32_t fftLenReal; /**< length of the real FFT. */ + uint32_t fftLenBy2; /**< length of the complex FFT. */ + uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ + uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ + uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + q31_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ + q31_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ + arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */ + } arm_rfft_instance_q31; + + /** + * @brief Instance structure for the floating-point RFFT/RIFFT function. + */ + + typedef struct + { + uint32_t fftLenReal; /**< length of the real FFT. */ + uint16_t fftLenBy2; /**< length of the complex FFT. */ + uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ + uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ + uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + float32_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ + float32_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ + arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */ + } arm_rfft_instance_f32; + + /** + * @brief Processing function for the Q15 RFFT/RIFFT. + * @param[in] *S points to an instance of the Q15 RFFT/RIFFT structure. + * @param[in] *pSrc points to the input buffer. + * @param[out] *pDst points to the output buffer. + * @return none. + */ + + void arm_rfft_q15( + const arm_rfft_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst); + + /** + * @brief Initialization function for the Q15 RFFT/RIFFT. + * @param[in, out] *S points to an instance of the Q15 RFFT/RIFFT structure. + * @param[in] *S_CFFT points to an instance of the Q15 CFFT/CIFFT structure. + * @param[in] fftLenReal length of the FFT. + * @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. + * @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value. + */ + + arm_status arm_rfft_init_q15( + arm_rfft_instance_q15 * S, + arm_cfft_radix4_instance_q15 * S_CFFT, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag); + + /** + * @brief Processing function for the Q31 RFFT/RIFFT. + * @param[in] *S points to an instance of the Q31 RFFT/RIFFT structure. + * @param[in] *pSrc points to the input buffer. + * @param[out] *pDst points to the output buffer. + * @return none. + */ + + void arm_rfft_q31( + const arm_rfft_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst); + + /** + * @brief Initialization function for the Q31 RFFT/RIFFT. + * @param[in, out] *S points to an instance of the Q31 RFFT/RIFFT structure. + * @param[in, out] *S_CFFT points to an instance of the Q31 CFFT/CIFFT structure. + * @param[in] fftLenReal length of the FFT. + * @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. + * @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value. + */ + + arm_status arm_rfft_init_q31( + arm_rfft_instance_q31 * S, + arm_cfft_radix4_instance_q31 * S_CFFT, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag); + + /** + * @brief Initialization function for the floating-point RFFT/RIFFT. + * @param[in,out] *S points to an instance of the floating-point RFFT/RIFFT structure. + * @param[in,out] *S_CFFT points to an instance of the floating-point CFFT/CIFFT structure. + * @param[in] fftLenReal length of the FFT. + * @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. + * @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value. + */ + + arm_status arm_rfft_init_f32( + arm_rfft_instance_f32 * S, + arm_cfft_radix4_instance_f32 * S_CFFT, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag); + + /** + * @brief Processing function for the floating-point RFFT/RIFFT. + * @param[in] *S points to an instance of the floating-point RFFT/RIFFT structure. + * @param[in] *pSrc points to the input buffer. + * @param[out] *pDst points to the output buffer. + * @return none. + */ + + void arm_rfft_f32( + const arm_rfft_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst); + + /** + * @brief Instance structure for the floating-point DCT4/IDCT4 function. + */ + + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + float32_t normalize; /**< normalizing factor. */ + float32_t *pTwiddle; /**< points to the twiddle factor table. */ + float32_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_f32 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_f32; + + /** + * @brief Initialization function for the floating-point DCT4/IDCT4. + * @param[in,out] *S points to an instance of floating-point DCT4/IDCT4 structure. + * @param[in] *S_RFFT points to an instance of floating-point RFFT/RIFFT structure. + * @param[in] *S_CFFT points to an instance of floating-point CFFT/CIFFT structure. + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported transform length. + */ + + arm_status arm_dct4_init_f32( + arm_dct4_instance_f32 * S, + arm_rfft_instance_f32 * S_RFFT, + arm_cfft_radix4_instance_f32 * S_CFFT, + uint16_t N, + uint16_t Nby2, + float32_t normalize); + + /** + * @brief Processing function for the floating-point DCT4/IDCT4. + * @param[in] *S points to an instance of the floating-point DCT4/IDCT4 structure. + * @param[in] *pState points to state buffer. + * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. + * @return none. + */ + + void arm_dct4_f32( + const arm_dct4_instance_f32 * S, + float32_t * pState, + float32_t * pInlineBuffer); + + /** + * @brief Instance structure for the Q31 DCT4/IDCT4 function. + */ + + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + q31_t normalize; /**< normalizing factor. */ + q31_t *pTwiddle; /**< points to the twiddle factor table. */ + q31_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_q31 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_q31; + + /** + * @brief Initialization function for the Q31 DCT4/IDCT4. + * @param[in,out] *S points to an instance of Q31 DCT4/IDCT4 structure. + * @param[in] *S_RFFT points to an instance of Q31 RFFT/RIFFT structure + * @param[in] *S_CFFT points to an instance of Q31 CFFT/CIFFT structure + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. + */ + + arm_status arm_dct4_init_q31( + arm_dct4_instance_q31 * S, + arm_rfft_instance_q31 * S_RFFT, + arm_cfft_radix4_instance_q31 * S_CFFT, + uint16_t N, + uint16_t Nby2, + q31_t normalize); + + /** + * @brief Processing function for the Q31 DCT4/IDCT4. + * @param[in] *S points to an instance of the Q31 DCT4 structure. + * @param[in] *pState points to state buffer. + * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. + * @return none. + */ + + void arm_dct4_q31( + const arm_dct4_instance_q31 * S, + q31_t * pState, + q31_t * pInlineBuffer); + + /** + * @brief Instance structure for the Q15 DCT4/IDCT4 function. + */ + + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + q15_t normalize; /**< normalizing factor. */ + q15_t *pTwiddle; /**< points to the twiddle factor table. */ + q15_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_q15 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_q15; + + /** + * @brief Initialization function for the Q15 DCT4/IDCT4. + * @param[in,out] *S points to an instance of Q15 DCT4/IDCT4 structure. + * @param[in] *S_RFFT points to an instance of Q15 RFFT/RIFFT structure. + * @param[in] *S_CFFT points to an instance of Q15 CFFT/CIFFT structure. + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. + */ + + arm_status arm_dct4_init_q15( + arm_dct4_instance_q15 * S, + arm_rfft_instance_q15 * S_RFFT, + arm_cfft_radix4_instance_q15 * S_CFFT, + uint16_t N, + uint16_t Nby2, + q15_t normalize); + + /** + * @brief Processing function for the Q15 DCT4/IDCT4. + * @param[in] *S points to an instance of the Q15 DCT4 structure. + * @param[in] *pState points to state buffer. + * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. + * @return none. + */ + + void arm_dct4_q15( + const arm_dct4_instance_q15 * S, + q15_t * pState, + q15_t * pInlineBuffer); + + /** + * @brief Floating-point vector addition. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_add_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Q7 vector addition. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_add_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Q15 vector addition. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_add_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Q31 vector addition. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_add_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Floating-point vector subtraction. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_sub_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Q7 vector subtraction. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_sub_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Q15 vector subtraction. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_sub_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Q31 vector subtraction. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_sub_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Multiplies a floating-point vector by a scalar. + * @param[in] *pSrc points to the input vector + * @param[in] scale scale factor to be applied + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_scale_f32( + float32_t * pSrc, + float32_t scale, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Multiplies a Q7 vector by a scalar. + * @param[in] *pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_scale_q7( + q7_t * pSrc, + q7_t scaleFract, + int8_t shift, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Multiplies a Q15 vector by a scalar. + * @param[in] *pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_scale_q15( + q15_t * pSrc, + q15_t scaleFract, + int8_t shift, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Multiplies a Q31 vector by a scalar. + * @param[in] *pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_scale_q31( + q31_t * pSrc, + q31_t scaleFract, + int8_t shift, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Q7 vector absolute value. + * @param[in] *pSrc points to the input buffer + * @param[out] *pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_abs_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Floating-point vector absolute value. + * @param[in] *pSrc points to the input buffer + * @param[out] *pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_abs_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Q15 vector absolute value. + * @param[in] *pSrc points to the input buffer + * @param[out] *pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_abs_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Q31 vector absolute value. + * @param[in] *pSrc points to the input buffer + * @param[out] *pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + * @return none. + */ + + void arm_abs_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Dot product of floating-point vectors. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] *result output result returned here + * @return none. + */ + + void arm_dot_prod_f32( + float32_t * pSrcA, + float32_t * pSrcB, + uint32_t blockSize, + float32_t * result); + + /** + * @brief Dot product of Q7 vectors. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] *result output result returned here + * @return none. + */ + + void arm_dot_prod_q7( + q7_t * pSrcA, + q7_t * pSrcB, + uint32_t blockSize, + q31_t * result); + + /** + * @brief Dot product of Q15 vectors. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] *result output result returned here + * @return none. + */ + + void arm_dot_prod_q15( + q15_t * pSrcA, + q15_t * pSrcB, + uint32_t blockSize, + q63_t * result); + + /** + * @brief Dot product of Q31 vectors. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] *result output result returned here + * @return none. + */ + + void arm_dot_prod_q31( + q31_t * pSrcA, + q31_t * pSrcB, + uint32_t blockSize, + q63_t * result); + + /** + * @brief Shifts the elements of a Q7 vector a specified number of bits. + * @param[in] *pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_shift_q7( + q7_t * pSrc, + int8_t shiftBits, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Shifts the elements of a Q15 vector a specified number of bits. + * @param[in] *pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_shift_q15( + q15_t * pSrc, + int8_t shiftBits, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Shifts the elements of a Q31 vector a specified number of bits. + * @param[in] *pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_shift_q31( + q31_t * pSrc, + int8_t shiftBits, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Adds a constant offset to a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_offset_f32( + float32_t * pSrc, + float32_t offset, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Adds a constant offset to a Q7 vector. + * @param[in] *pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_offset_q7( + q7_t * pSrc, + q7_t offset, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Adds a constant offset to a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_offset_q15( + q15_t * pSrc, + q15_t offset, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Adds a constant offset to a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_offset_q31( + q31_t * pSrc, + q31_t offset, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Negates the elements of a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_negate_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Negates the elements of a Q7 vector. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_negate_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Negates the elements of a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_negate_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Negates the elements of a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + void arm_negate_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + /** + * @brief Copies the elements of a floating-point vector. + * @param[in] *pSrc input pointer + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_copy_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Copies the elements of a Q7 vector. + * @param[in] *pSrc input pointer + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_copy_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Copies the elements of a Q15 vector. + * @param[in] *pSrc input pointer + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_copy_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Copies the elements of a Q31 vector. + * @param[in] *pSrc input pointer + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_copy_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + /** + * @brief Fills a constant value into a floating-point vector. + * @param[in] value input value to be filled + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_fill_f32( + float32_t value, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Fills a constant value into a Q7 vector. + * @param[in] value input value to be filled + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_fill_q7( + q7_t value, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Fills a constant value into a Q15 vector. + * @param[in] value input value to be filled + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_fill_q15( + q15_t value, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Fills a constant value into a Q31 vector. + * @param[in] value input value to be filled + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_fill_q31( + q31_t value, + q31_t * pDst, + uint32_t blockSize); + +/** + * @brief Convolution of floating-point sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + * @return none. + */ + + void arm_conv_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst); + +/** + * @brief Convolution of Q15 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + * @return none. + */ + + void arm_conv_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + /** + * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the block of output data Length srcALen+srcBLen-1. + * @return none. + */ + + void arm_conv_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + /** + * @brief Convolution of Q31 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the block of output data Length srcALen+srcBLen-1. + * @return none. + */ + + void arm_conv_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + /** + * @brief Convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the block of output data Length srcALen+srcBLen-1. + * @return none. + */ + + void arm_conv_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + /** + * @brief Convolution of Q7 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the block of output data Length srcALen+srcBLen-1. + * @return none. + */ + + void arm_conv_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst); + + /** + * @brief Partial convolution of floating-point sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + + arm_status arm_conv_partial_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + /** + * @brief Partial convolution of Q15 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + + arm_status arm_conv_partial_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + /** + * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + + arm_status arm_conv_partial_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + /** + * @brief Partial convolution of Q31 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + + arm_status arm_conv_partial_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + + arm_status arm_conv_partial_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + /** + * @brief Partial convolution of Q7 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + + arm_status arm_conv_partial_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Instance structure for the Q15 FIR decimator. + */ + + typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + } arm_fir_decimate_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR decimator. + */ + + typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + + } arm_fir_decimate_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR decimator. + */ + + typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + + } arm_fir_decimate_instance_f32; + + + + /** + * @brief Processing function for the floating-point FIR decimator. + * @param[in] *S points to an instance of the floating-point FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + * @return none + */ + + void arm_fir_decimate_f32( + const arm_fir_decimate_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point FIR decimator. + * @param[in,out] *S points to an instance of the floating-point FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + */ + + arm_status arm_fir_decimate_init_f32( + arm_fir_decimate_instance_f32 * S, + uint16_t numTaps, + uint8_t M, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + /** + * @brief Processing function for the Q15 FIR decimator. + * @param[in] *S points to an instance of the Q15 FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + * @return none + */ + + void arm_fir_decimate_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. + * @param[in] *S points to an instance of the Q15 FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + * @return none + */ + + void arm_fir_decimate_fast_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + + /** + * @brief Initialization function for the Q15 FIR decimator. + * @param[in,out] *S points to an instance of the Q15 FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + */ + + arm_status arm_fir_decimate_init_q15( + arm_fir_decimate_instance_q15 * S, + uint16_t numTaps, + uint8_t M, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + /** + * @brief Processing function for the Q31 FIR decimator. + * @param[in] *S points to an instance of the Q31 FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + * @return none + */ + + void arm_fir_decimate_q31( + const arm_fir_decimate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. + * @param[in] *S points to an instance of the Q31 FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + * @return none + */ + + void arm_fir_decimate_fast_q31( + arm_fir_decimate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR decimator. + * @param[in,out] *S points to an instance of the Q31 FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + */ + + arm_status arm_fir_decimate_init_q31( + arm_fir_decimate_instance_q31 * S, + uint16_t numTaps, + uint8_t M, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + + + /** + * @brief Instance structure for the Q15 FIR interpolator. + */ + + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + q15_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ + } arm_fir_interpolate_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR interpolator. + */ + + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + q31_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ + } arm_fir_interpolate_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR interpolator. + */ + + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + float32_t *pState; /**< points to the state variable array. The array is of length phaseLength+numTaps-1. */ + } arm_fir_interpolate_instance_f32; + + + /** + * @brief Processing function for the Q15 FIR interpolator. + * @param[in] *S points to an instance of the Q15 FIR interpolator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ + + void arm_fir_interpolate_q15( + const arm_fir_interpolate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 FIR interpolator. + * @param[in,out] *S points to an instance of the Q15 FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficient buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + + arm_status arm_fir_interpolate_init_q15( + arm_fir_interpolate_instance_q15 * S, + uint8_t L, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + /** + * @brief Processing function for the Q31 FIR interpolator. + * @param[in] *S points to an instance of the Q15 FIR interpolator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ + + void arm_fir_interpolate_q31( + const arm_fir_interpolate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q31 FIR interpolator. + * @param[in,out] *S points to an instance of the Q31 FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficient buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + + arm_status arm_fir_interpolate_init_q31( + arm_fir_interpolate_instance_q31 * S, + uint8_t L, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point FIR interpolator. + * @param[in] *S points to an instance of the floating-point FIR interpolator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ + + void arm_fir_interpolate_f32( + const arm_fir_interpolate_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the floating-point FIR interpolator. + * @param[in,out] *S points to an instance of the floating-point FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficient buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + + arm_status arm_fir_interpolate_init_f32( + arm_fir_interpolate_instance_f32 * S, + uint8_t L, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + /** + * @brief Instance structure for the high precision Q31 Biquad cascade filter. + */ + + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q63_t *pState; /**< points to the array of state coefficients. The array is of length 4*numStages. */ + q31_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + uint8_t postShift; /**< additional shift, in bits, applied to each output sample. */ + + } arm_biquad_cas_df1_32x64_ins_q31; + + + /** + * @param[in] *S points to an instance of the high precision Q31 Biquad cascade filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_biquad_cas_df1_32x64_q31( + const arm_biquad_cas_df1_32x64_ins_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @param[in,out] *S points to an instance of the high precision Q31 Biquad cascade filter structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] postShift shift to be applied to the output. Varies according to the coefficients format + * @return none + */ + + void arm_biquad_cas_df1_32x64_init_q31( + arm_biquad_cas_df1_32x64_ins_q31 * S, + uint8_t numStages, + q31_t * pCoeffs, + q63_t * pState, + uint8_t postShift); + + + + /** + * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. + */ + + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float32_t *pState; /**< points to the array of state coefficients. The array is of length 2*numStages. */ + float32_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_cascade_df2T_instance_f32; + + + /** + * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in] *S points to an instance of the filter data structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_biquad_cascade_df2T_f32( + const arm_biquad_cascade_df2T_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] *S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @return none + */ + + void arm_biquad_cascade_df2T_init_f32( + arm_biquad_cascade_df2T_instance_f32 * S, + uint8_t numStages, + float32_t * pCoeffs, + float32_t * pState); + + + + /** + * @brief Instance structure for the Q15 FIR lattice filter. + */ + + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + q15_t *pState; /**< points to the state variable array. The array is of length numStages. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR lattice filter. + */ + + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + q31_t *pState; /**< points to the state variable array. The array is of length numStages. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR lattice filter. + */ + + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + float32_t *pState; /**< points to the state variable array. The array is of length numStages. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_f32; + + /** + * @brief Initialization function for the Q15 FIR lattice filter. + * @param[in] *S points to an instance of the Q15 FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] *pState points to the state buffer. The array is of length numStages. + * @return none. + */ + + void arm_fir_lattice_init_q15( + arm_fir_lattice_instance_q15 * S, + uint16_t numStages, + q15_t * pCoeffs, + q15_t * pState); + + + /** + * @brief Processing function for the Q15 FIR lattice filter. + * @param[in] *S points to an instance of the Q15 FIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + void arm_fir_lattice_q15( + const arm_fir_lattice_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q31 FIR lattice filter. + * @param[in] *S points to an instance of the Q31 FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] *pState points to the state buffer. The array is of length numStages. + * @return none. + */ + + void arm_fir_lattice_init_q31( + arm_fir_lattice_instance_q31 * S, + uint16_t numStages, + q31_t * pCoeffs, + q31_t * pState); + + + /** + * @brief Processing function for the Q31 FIR lattice filter. + * @param[in] *S points to an instance of the Q31 FIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_fir_lattice_q31( + const arm_fir_lattice_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + +/** + * @brief Initialization function for the floating-point FIR lattice filter. + * @param[in] *S points to an instance of the floating-point FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] *pState points to the state buffer. The array is of length numStages. + * @return none. + */ + + void arm_fir_lattice_init_f32( + arm_fir_lattice_instance_f32 * S, + uint16_t numStages, + float32_t * pCoeffs, + float32_t * pState); + + /** + * @brief Processing function for the floating-point FIR lattice filter. + * @param[in] *S points to an instance of the floating-point FIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_fir_lattice_f32( + const arm_fir_lattice_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Instance structure for the Q15 IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + q15_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + q15_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_q15; + + /** + * @brief Instance structure for the Q31 IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + q31_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + q31_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_q31; + + /** + * @brief Instance structure for the floating-point IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + float32_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + float32_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_f32; + + /** + * @brief Processing function for the floating-point IIR lattice filter. + * @param[in] *S points to an instance of the floating-point IIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_iir_lattice_f32( + const arm_iir_lattice_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the floating-point IIR lattice filter. + * @param[in] *S points to an instance of the floating-point IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] *pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. + * @param[in] *pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. + * @param[in] *pState points to the state buffer. The array is of length numStages+blockSize-1. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_iir_lattice_init_f32( + arm_iir_lattice_instance_f32 * S, + uint16_t numStages, + float32_t *pkCoeffs, + float32_t *pvCoeffs, + float32_t *pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 IIR lattice filter. + * @param[in] *S points to an instance of the Q31 IIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_iir_lattice_q31( + const arm_iir_lattice_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 IIR lattice filter. + * @param[in] *S points to an instance of the Q31 IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] *pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. + * @param[in] *pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. + * @param[in] *pState points to the state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_iir_lattice_init_q31( + arm_iir_lattice_instance_q31 * S, + uint16_t numStages, + q31_t *pkCoeffs, + q31_t *pvCoeffs, + q31_t *pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 IIR lattice filter. + * @param[in] *S points to an instance of the Q15 IIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_iir_lattice_q15( + const arm_iir_lattice_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + +/** + * @brief Initialization function for the Q15 IIR lattice filter. + * @param[in] *S points to an instance of the fixed-point Q15 IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] *pkCoeffs points to reflection coefficient buffer. The array is of length numStages. + * @param[in] *pvCoeffs points to ladder coefficient buffer. The array is of length numStages+1. + * @param[in] *pState points to state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process per call. + * @return none. + */ + + void arm_iir_lattice_init_q15( + arm_iir_lattice_instance_q15 * S, + uint16_t numStages, + q15_t *pkCoeffs, + q15_t *pvCoeffs, + q15_t *pState, + uint32_t blockSize); + + /** + * @brief Instance structure for the floating-point LMS filter. + */ + + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + float32_t mu; /**< step size that controls filter coefficient updates. */ + } arm_lms_instance_f32; + + /** + * @brief Processing function for floating-point LMS filter. + * @param[in] *S points to an instance of the floating-point LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_lms_f32( + const arm_lms_instance_f32 * S, + float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize); + + /** + * @brief Initialization function for floating-point LMS filter. + * @param[in] *S points to an instance of the floating-point LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to the coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_lms_init_f32( + arm_lms_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + float32_t mu, + uint32_t blockSize); + + /** + * @brief Instance structure for the Q15 LMS filter. + */ + + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q15_t mu; /**< step size that controls filter coefficient updates. */ + uint32_t postShift; /**< bit shift applied to coefficients. */ + } arm_lms_instance_q15; + + + /** + * @brief Initialization function for the Q15 LMS filter. + * @param[in] *S points to an instance of the Q15 LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to the coefficient buffer. + * @param[in] *pState points to the state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + * @return none. + */ + + void arm_lms_init_q15( + arm_lms_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + q15_t mu, + uint32_t blockSize, + uint32_t postShift); + + /** + * @brief Processing function for Q15 LMS filter. + * @param[in] *S points to an instance of the Q15 LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_lms_q15( + const arm_lms_instance_q15 * S, + q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q31 LMS filter. + */ + + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q31_t mu; /**< step size that controls filter coefficient updates. */ + uint32_t postShift; /**< bit shift applied to coefficients. */ + + } arm_lms_instance_q31; + + /** + * @brief Processing function for Q31 LMS filter. + * @param[in] *S points to an instance of the Q15 LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_lms_q31( + const arm_lms_instance_q31 * S, + q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize); + + /** + * @brief Initialization function for Q31 LMS filter. + * @param[in] *S points to an instance of the Q31 LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + * @return none. + */ + + void arm_lms_init_q31( + arm_lms_instance_q31 * S, + uint16_t numTaps, + q31_t *pCoeffs, + q31_t *pState, + q31_t mu, + uint32_t blockSize, + uint32_t postShift); + + /** + * @brief Instance structure for the floating-point normalized LMS filter. + */ + + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + float32_t mu; /**< step size that control filter coefficient updates. */ + float32_t energy; /**< saves previous frame energy. */ + float32_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_f32; + + /** + * @brief Processing function for floating-point normalized LMS filter. + * @param[in] *S points to an instance of the floating-point normalized LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_lms_norm_f32( + arm_lms_norm_instance_f32 * S, + float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize); + + /** + * @brief Initialization function for floating-point normalized LMS filter. + * @param[in] *S points to an instance of the floating-point LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_lms_norm_init_f32( + arm_lms_norm_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + float32_t mu, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q31 normalized LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q31_t mu; /**< step size that controls filter coefficient updates. */ + uint8_t postShift; /**< bit shift applied to coefficients. */ + q31_t *recipTable; /**< points to the reciprocal initial value table. */ + q31_t energy; /**< saves previous frame energy. */ + q31_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_q31; + + /** + * @brief Processing function for Q31 normalized LMS filter. + * @param[in] *S points to an instance of the Q31 normalized LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_lms_norm_q31( + arm_lms_norm_instance_q31 * S, + q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize); + + /** + * @brief Initialization function for Q31 normalized LMS filter. + * @param[in] *S points to an instance of the Q31 normalized LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + * @return none. + */ + + void arm_lms_norm_init_q31( + arm_lms_norm_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + q31_t mu, + uint32_t blockSize, + uint8_t postShift); + + /** + * @brief Instance structure for the Q15 normalized LMS filter. + */ + + typedef struct + { + uint16_t numTaps; /**< Number of coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q15_t mu; /**< step size that controls filter coefficient updates. */ + uint8_t postShift; /**< bit shift applied to coefficients. */ + q15_t *recipTable; /**< Points to the reciprocal initial value table. */ + q15_t energy; /**< saves previous frame energy. */ + q15_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_q15; + + /** + * @brief Processing function for Q15 normalized LMS filter. + * @param[in] *S points to an instance of the Q15 normalized LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + + void arm_lms_norm_q15( + arm_lms_norm_instance_q15 * S, + q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for Q15 normalized LMS filter. + * @param[in] *S points to an instance of the Q15 normalized LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + * @return none. + */ + + void arm_lms_norm_init_q15( + arm_lms_norm_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + q15_t mu, + uint32_t blockSize, + uint8_t postShift); + + /** + * @brief Correlation of floating-point sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + * @return none. + */ + + void arm_correlate_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst); + + /** + * @brief Correlation of Q15 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + * @return none. + */ + + void arm_correlate_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + /** + * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + * @return none. + */ + + void arm_correlate_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + /** + * @brief Correlation of Q31 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + * @return none. + */ + + void arm_correlate_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + /** + * @brief Correlation of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + * @return none. + */ + + void arm_correlate_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + /** + * @brief Correlation of Q7 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + * @return none. + */ + + void arm_correlate_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst); + + /** + * @brief Instance structure for the floating-point sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + float32_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_f32; + + /** + * @brief Instance structure for the Q31 sparse FIR filter. + */ + + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q31_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q31; + + /** + * @brief Instance structure for the Q15 sparse FIR filter. + */ + + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q15_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q15; + + /** + * @brief Instance structure for the Q7 sparse FIR filter. + */ + + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q7_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q7; + + /** + * @brief Processing function for the floating-point sparse FIR filter. + * @param[in] *S points to an instance of the floating-point sparse FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] *pScratchIn points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ + + void arm_fir_sparse_f32( + arm_fir_sparse_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + float32_t * pScratchIn, + uint32_t blockSize); + + /** + * @brief Initialization function for the floating-point sparse FIR filter. + * @param[in,out] *S points to an instance of the floating-point sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] *pCoeffs points to the array of filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] *pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + * @return none + */ + + void arm_fir_sparse_init_f32( + arm_fir_sparse_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + /** + * @brief Processing function for the Q31 sparse FIR filter. + * @param[in] *S points to an instance of the Q31 sparse FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] *pScratchIn points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ + + void arm_fir_sparse_q31( + arm_fir_sparse_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + q31_t * pScratchIn, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q31 sparse FIR filter. + * @param[in,out] *S points to an instance of the Q31 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] *pCoeffs points to the array of filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] *pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + * @return none + */ + + void arm_fir_sparse_init_q31( + arm_fir_sparse_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + /** + * @brief Processing function for the Q15 sparse FIR filter. + * @param[in] *S points to an instance of the Q15 sparse FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] *pScratchIn points to a temporary buffer of size blockSize. + * @param[in] *pScratchOut points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ + + void arm_fir_sparse_q15( + arm_fir_sparse_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + q15_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 sparse FIR filter. + * @param[in,out] *S points to an instance of the Q15 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] *pCoeffs points to the array of filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] *pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + * @return none + */ + + void arm_fir_sparse_init_q15( + arm_fir_sparse_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + /** + * @brief Processing function for the Q7 sparse FIR filter. + * @param[in] *S points to an instance of the Q7 sparse FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] *pScratchIn points to a temporary buffer of size blockSize. + * @param[in] *pScratchOut points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ + + void arm_fir_sparse_q7( + arm_fir_sparse_instance_q7 * S, + q7_t * pSrc, + q7_t * pDst, + q7_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q7 sparse FIR filter. + * @param[in,out] *S points to an instance of the Q7 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] *pCoeffs points to the array of filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] *pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + * @return none + */ + + void arm_fir_sparse_init_q7( + arm_fir_sparse_instance_q7 * S, + uint16_t numTaps, + q7_t * pCoeffs, + q7_t * pState, + int32_t *pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /* + * @brief Floating-point sin_cos function. + * @param[in] theta input value in degrees + * @param[out] *pSinVal points to the processed sine output. + * @param[out] *pCosVal points to the processed cos output. + * @return none. + */ + + void arm_sin_cos_f32( + float32_t theta, + float32_t *pSinVal, + float32_t *pCcosVal); + + /* + * @brief Q31 sin_cos function. + * @param[in] theta scaled input value in degrees + * @param[out] *pSinVal points to the processed sine output. + * @param[out] *pCosVal points to the processed cosine output. + * @return none. + */ + + void arm_sin_cos_q31( + q31_t theta, + q31_t *pSinVal, + q31_t *pCosVal); + + + /** + * @brief Floating-point complex conjugate. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + * @return none. + */ + + void arm_cmplx_conj_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + /** + * @brief Q31 complex conjugate. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + * @return none. + */ + + void arm_cmplx_conj_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + /** + * @brief Q15 complex conjugate. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + * @return none. + */ + + void arm_cmplx_conj_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + + + /** + * @brief Floating-point complex magnitude squared + * @param[in] *pSrc points to the complex input vector + * @param[out] *pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + * @return none. + */ + + void arm_cmplx_mag_squared_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + /** + * @brief Q31 complex magnitude squared + * @param[in] *pSrc points to the complex input vector + * @param[out] *pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + * @return none. + */ + + void arm_cmplx_mag_squared_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + /** + * @brief Q15 complex magnitude squared + * @param[in] *pSrc points to the complex input vector + * @param[out] *pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + * @return none. + */ + + void arm_cmplx_mag_squared_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @ingroup groupController + */ + + /** + * @defgroup PID PID Motor Control + * + * A Proportional Integral Derivative (PID) controller is a generic feedback control + * loop mechanism widely used in industrial control systems. + * A PID controller is the most commonly used type of feedback controller. + * + * This set of functions implements (PID) controllers + * for Q15, Q31, and floating-point data types. The functions operate on a single sample + * of data and each call to the function returns a single processed value. + * S points to an instance of the PID control data structure. in + * is the input sample value. The functions return the output value. + * + * \par Algorithm: + *
+   *    y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]
+   *    A0 = Kp + Ki + Kd
+   *    A1 = (-Kp ) - (2 * Kd )
+   *    A2 = Kd  
+ * + * \par + * where \c Kp is proportional constant, \c Ki is Integral constant and \c Kd is Derivative constant + * + * \par + * \image html PID.gif "Proportional Integral Derivative Controller" + * + * \par + * The PID controller calculates an "error" value as the difference between + * the measured output and the reference input. + * The controller attempts to minimize the error by adjusting the process control inputs. + * The proportional value determines the reaction to the current error, + * the integral value determines the reaction based on the sum of recent errors, + * and the derivative value determines the reaction based on the rate at which the error has been changing. + * + * \par Instance Structure + * The Gains A0, A1, A2 and state variables for a PID controller are stored together in an instance data structure. + * A separate instance structure must be defined for each PID Controller. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Reset Functions + * There is also an associated reset function for each data type which clears the state array. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Initializes the Gains A0, A1, A2 from Kp,Ki, Kd gains. + * - Zeros out the values in the state buffer. + * + * \par + * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function. + * + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the PID Controller functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup PID + * @{ + */ + + /** + * @brief Process function for the floating-point PID Control. + * @param[in,out] *S is an instance of the floating-point PID Control structure + * @param[in] in input sample to process + * @return out processed output sample. + */ + + + static __INLINE float32_t arm_pid_f32( + arm_pid_instance_f32 * S, + float32_t in) + { + float32_t out; + + /* y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2] */ + out = (S->A0 * in) + + (S->A1 * S->state[0]) + (S->A2 * S->state[1]) + (S->state[2]); + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + + } + + /** + * @brief Process function for the Q31 PID Control. + * @param[in,out] *S points to an instance of the Q31 PID Control structure + * @param[in] in input sample to process + * @return out processed output sample. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around rather than clip. + * In order to avoid overflows completely the input signal must be scaled down by 2 bits as there are four additions. + * After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format. + */ + + static __INLINE q31_t arm_pid_q31( + arm_pid_instance_q31 * S, + q31_t in) + { + q63_t acc; + q31_t out; + + /* acc = A0 * x[n] */ + acc = (q63_t) S->A0 * in; + + /* acc += A1 * x[n-1] */ + acc += (q63_t) S->A1 * S->state[0]; + + /* acc += A2 * x[n-2] */ + acc += (q63_t) S->A2 * S->state[1]; + + /* convert output to 1.31 format to add y[n-1] */ + out = (q31_t) (acc >> 31u); + + /* out += y[n-1] */ + out += S->state[2]; + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + + } + + /** + * @brief Process function for the Q15 PID Control. + * @param[in,out] *S points to an instance of the Q15 PID Control structure + * @param[in] in input sample to process + * @return out processed output sample. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both Gains and state variables are represented in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. + * Lastly, the accumulator is saturated to yield a result in 1.15 format. + */ + + static __INLINE q15_t arm_pid_q15( + arm_pid_instance_q15 * S, + q15_t in) + { + q63_t acc; + q15_t out; + + /* Implementation of PID controller */ + + #ifdef ARM_MATH_CM0 + + /* acc = A0 * x[n] */ + acc = ((q31_t) S->A0 )* in ; + + #else + + /* acc = A0 * x[n] */ + acc = (q31_t) __SMUAD(S->A0, in); + + #endif + + #ifdef ARM_MATH_CM0 + + /* acc += A1 * x[n-1] + A2 * x[n-2] */ + acc += (q31_t) S->A1 * S->state[0] ; + acc += (q31_t) S->A2 * S->state[1] ; + + #else + + /* acc += A1 * x[n-1] + A2 * x[n-2] */ + acc = __SMLALD(S->A1, (q31_t)__SIMD32(S->state), acc); + + #endif + + /* acc += y[n-1] */ + acc += (q31_t) S->state[2] << 15; + + /* saturate the output */ + out = (q15_t) (__SSAT((acc >> 15), 16)); + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + + } + + /** + * @} end of PID group + */ + + + /** + * @brief Floating-point matrix inverse. + * @param[in] *src points to the instance of the input floating-point matrix structure. + * @param[out] *dst points to the instance of the output floating-point matrix structure. + * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match. + * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR. + */ + + arm_status arm_mat_inverse_f32( + const arm_matrix_instance_f32 * src, + arm_matrix_instance_f32 * dst); + + + + /** + * @ingroup groupController + */ + + + /** + * @defgroup clarke Vector Clarke Transform + * Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector. + * Generally the Clarke transform uses three-phase currents Ia, Ib and Ic to calculate currents + * in the two-phase orthogonal stator axis Ialpha and Ibeta. + * When Ialpha is superposed with Ia as shown in the figure below + * \image html clarke.gif Stator current space vector and its components in (a,b). + * and Ia + Ib + Ic = 0, in this condition Ialpha and Ibeta + * can be calculated using only Ia and Ib. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html clarkeFormula.gif + * where Ia and Ib are the instantaneous stator phases and + * pIalpha and pIbeta are the two coordinates of time invariant vector. + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Clarke transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup clarke + * @{ + */ + + /** + * + * @brief Floating-point Clarke transform + * @param[in] Ia input three-phase coordinate a + * @param[in] Ib input three-phase coordinate b + * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta + * @return none. + */ + + static __INLINE void arm_clarke_f32( + float32_t Ia, + float32_t Ib, + float32_t * pIalpha, + float32_t * pIbeta) + { + /* Calculate pIalpha using the equation, pIalpha = Ia */ + *pIalpha = Ia; + + /* Calculate pIbeta using the equation, pIbeta = (1/sqrt(3)) * Ia + (2/sqrt(3)) * Ib */ + *pIbeta = ((float32_t) 0.57735026919 * Ia + (float32_t) 1.15470053838 * Ib); + + } + + /** + * @brief Clarke transform for Q31 version + * @param[in] Ia input three-phase coordinate a + * @param[in] Ib input three-phase coordinate b + * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the addition, hence there is no risk of overflow. + */ + + static __INLINE void arm_clarke_q31( + q31_t Ia, + q31_t Ib, + q31_t * pIalpha, + q31_t * pIbeta) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + + /* Calculating pIalpha from Ia by equation pIalpha = Ia */ + *pIalpha = Ia; + + /* Intermediate product is calculated by (1/(sqrt(3)) * Ia) */ + product1 = (q31_t) (((q63_t) Ia * 0x24F34E8B) >> 30); + + /* Intermediate product is calculated by (2/sqrt(3) * Ib) */ + product2 = (q31_t) (((q63_t) Ib * 0x49E69D16) >> 30); + + /* pIbeta is calculated by adding the intermediate products */ + *pIbeta = __QADD(product1, product2); + } + + /** + * @} end of clarke group + */ + + /** + * @brief Converts the elements of the Q7 vector to Q31 vector. + * @param[in] *pSrc input pointer + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_q7_to_q31( + q7_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + + + /** + * @ingroup groupController + */ + + /** + * @defgroup inv_clarke Vector Inverse Clarke Transform + * Inverse Clarke transform converts the two-coordinate time invariant vector into instantaneous stator phases. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html clarkeInvFormula.gif + * where pIa and pIb are the instantaneous stator phases and + * Ialpha and Ibeta are the two coordinates of time invariant vector. + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Clarke transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup inv_clarke + * @{ + */ + + /** + * @brief Floating-point Inverse Clarke transform + * @param[in] Ialpha input two-phase orthogonal vector axis alpha + * @param[in] Ibeta input two-phase orthogonal vector axis beta + * @param[out] *pIa points to output three-phase coordinate a + * @param[out] *pIb points to output three-phase coordinate b + * @return none. + */ + + + static __INLINE void arm_inv_clarke_f32( + float32_t Ialpha, + float32_t Ibeta, + float32_t * pIa, + float32_t * pIb) + { + /* Calculating pIa from Ialpha by equation pIa = Ialpha */ + *pIa = Ialpha; + + /* Calculating pIb from Ialpha and Ibeta by equation pIb = -(1/2) * Ialpha + (sqrt(3)/2) * Ibeta */ + *pIb = -0.5 * Ialpha + (float32_t) 0.8660254039 *Ibeta; + + } + + /** + * @brief Inverse Clarke transform for Q31 version + * @param[in] Ialpha input two-phase orthogonal vector axis alpha + * @param[in] Ibeta input two-phase orthogonal vector axis beta + * @param[out] *pIa points to output three-phase coordinate a + * @param[out] *pIb points to output three-phase coordinate b + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the subtraction, hence there is no risk of overflow. + */ + + static __INLINE void arm_inv_clarke_q31( + q31_t Ialpha, + q31_t Ibeta, + q31_t * pIa, + q31_t * pIb) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + + /* Calculating pIa from Ialpha by equation pIa = Ialpha */ + *pIa = Ialpha; + + /* Intermediate product is calculated by (1/(2*sqrt(3)) * Ia) */ + product1 = (q31_t) (((q63_t) (Ialpha) * (0x40000000)) >> 31); + + /* Intermediate product is calculated by (1/sqrt(3) * pIb) */ + product2 = (q31_t) (((q63_t) (Ibeta) * (0x6ED9EBA1)) >> 31); + + /* pIb is calculated by subtracting the products */ + *pIb = __QSUB(product2, product1); + + } + + /** + * @} end of inv_clarke group + */ + + /** + * @brief Converts the elements of the Q7 vector to Q15 vector. + * @param[in] *pSrc input pointer + * @param[out] *pDst output pointer + * @param[in] blockSize number of samples to process + * @return none. + */ + void arm_q7_to_q15( + q7_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + + /** + * @ingroup groupController + */ + + /** + * @defgroup park Vector Park Transform + * + * Forward Park transform converts the input two-coordinate vector to flux and torque components. + * The Park transform can be used to realize the transformation of the Ialpha and the Ibeta currents + * from the stationary to the moving reference frame and control the spatial relationship between + * the stator vector current and rotor flux vector. + * If we consider the d axis aligned with the rotor flux, the diagram below shows the + * current vector and the relationship from the two reference frames: + * \image html park.gif "Stator current space vector and its component in (a,b) and in the d,q rotating reference frame" + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html parkFormula.gif + * where Ialpha and Ibeta are the stator vector components, + * pId and pIq are rotor vector components and cosVal and sinVal are the + * cosine and sine values of theta (rotor flux position). + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Park transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup park + * @{ + */ + + /** + * @brief Floating-point Park transform + * @param[in] Ialpha input two-phase vector coordinate alpha + * @param[in] Ibeta input two-phase vector coordinate beta + * @param[out] *pId points to output rotor reference frame d + * @param[out] *pIq points to output rotor reference frame q + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * @return none. + * + * The function implements the forward Park transform. + * + */ + + static __INLINE void arm_park_f32( + float32_t Ialpha, + float32_t Ibeta, + float32_t * pId, + float32_t * pIq, + float32_t sinVal, + float32_t cosVal) + { + /* Calculate pId using the equation, pId = Ialpha * cosVal + Ibeta * sinVal */ + *pId = Ialpha * cosVal + Ibeta * sinVal; + + /* Calculate pIq using the equation, pIq = - Ialpha * sinVal + Ibeta * cosVal */ + *pIq = -Ialpha * sinVal + Ibeta * cosVal; + + } + + /** + * @brief Park transform for Q31 version + * @param[in] Ialpha input two-phase vector coordinate alpha + * @param[in] Ibeta input two-phase vector coordinate beta + * @param[out] *pId points to output rotor reference frame d + * @param[out] *pIq points to output rotor reference frame q + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the addition and subtraction, hence there is no risk of overflow. + */ + + + static __INLINE void arm_park_q31( + q31_t Ialpha, + q31_t Ibeta, + q31_t * pId, + q31_t * pIq, + q31_t sinVal, + q31_t cosVal) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + q31_t product3, product4; /* Temporary variables used to store intermediate results */ + + /* Intermediate product is calculated by (Ialpha * cosVal) */ + product1 = (q31_t) (((q63_t) (Ialpha) * (cosVal)) >> 31); + + /* Intermediate product is calculated by (Ibeta * sinVal) */ + product2 = (q31_t) (((q63_t) (Ibeta) * (sinVal)) >> 31); + + + /* Intermediate product is calculated by (Ialpha * sinVal) */ + product3 = (q31_t) (((q63_t) (Ialpha) * (sinVal)) >> 31); + + /* Intermediate product is calculated by (Ibeta * cosVal) */ + product4 = (q31_t) (((q63_t) (Ibeta) * (cosVal)) >> 31); + + /* Calculate pId by adding the two intermediate products 1 and 2 */ + *pId = __QADD(product1, product2); + + /* Calculate pIq by subtracting the two intermediate products 3 from 4 */ + *pIq = __QSUB(product4, product3); + } + + /** + * @} end of park group + */ + + /** + * @brief Converts the elements of the Q7 vector to floating-point vector. + * @param[in] *pSrc is input pointer + * @param[out] *pDst is output pointer + * @param[in] blockSize is the number of samples to process + * @return none. + */ + void arm_q7_to_float( + q7_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @ingroup groupController + */ + + /** + * @defgroup inv_park Vector Inverse Park transform + * Inverse Park transform converts the input flux and torque components to two-coordinate vector. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html parkInvFormula.gif + * where pIalpha and pIbeta are the stator vector components, + * Id and Iq are rotor vector components and cosVal and sinVal are the + * cosine and sine values of theta (rotor flux position). + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Park transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup inv_park + * @{ + */ + + /** + * @brief Floating-point Inverse Park transform + * @param[in] Id input coordinate of rotor reference frame d + * @param[in] Iq input coordinate of rotor reference frame q + * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * @return none. + */ + + static __INLINE void arm_inv_park_f32( + float32_t Id, + float32_t Iq, + float32_t * pIalpha, + float32_t * pIbeta, + float32_t sinVal, + float32_t cosVal) + { + /* Calculate pIalpha using the equation, pIalpha = Id * cosVal - Iq * sinVal */ + *pIalpha = Id * cosVal - Iq * sinVal; + + /* Calculate pIbeta using the equation, pIbeta = Id * sinVal + Iq * cosVal */ + *pIbeta = Id * sinVal + Iq * cosVal; + + } + + + /** + * @brief Inverse Park transform for Q31 version + * @param[in] Id input coordinate of rotor reference frame d + * @param[in] Iq input coordinate of rotor reference frame q + * @param[out] *pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] *pIbeta points to output two-phase orthogonal vector axis beta + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the addition, hence there is no risk of overflow. + */ + + + static __INLINE void arm_inv_park_q31( + q31_t Id, + q31_t Iq, + q31_t * pIalpha, + q31_t * pIbeta, + q31_t sinVal, + q31_t cosVal) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + q31_t product3, product4; /* Temporary variables used to store intermediate results */ + + /* Intermediate product is calculated by (Id * cosVal) */ + product1 = (q31_t) (((q63_t) (Id) * (cosVal)) >> 31); + + /* Intermediate product is calculated by (Iq * sinVal) */ + product2 = (q31_t) (((q63_t) (Iq) * (sinVal)) >> 31); + + + /* Intermediate product is calculated by (Id * sinVal) */ + product3 = (q31_t) (((q63_t) (Id) * (sinVal)) >> 31); + + /* Intermediate product is calculated by (Iq * cosVal) */ + product4 = (q31_t) (((q63_t) (Iq) * (cosVal)) >> 31); + + /* Calculate pIalpha by using the two intermediate products 1 and 2 */ + *pIalpha = __QSUB(product1, product2); + + /* Calculate pIbeta by using the two intermediate products 3 and 4 */ + *pIbeta = __QADD(product4, product3); + + } + + /** + * @} end of Inverse park group + */ + + + /** + * @brief Converts the elements of the Q31 vector to floating-point vector. + * @param[in] *pSrc is input pointer + * @param[out] *pDst is output pointer + * @param[in] blockSize is the number of samples to process + * @return none. + */ + void arm_q31_to_float( + q31_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @ingroup groupInterpolation + */ + + /** + * @defgroup LinearInterpolate Linear Interpolation + * + * Linear interpolation is a method of curve fitting using linear polynomials. + * Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line + * + * \par + * \image html LinearInterp.gif "Linear interpolation" + * + * \par + * A Linear Interpolate function calculates an output value(y), for the input(x) + * using linear interpolation of the input values x0, x1( nearest input values) and the output values y0 and y1(nearest output values) + * + * \par Algorithm: + *
+   *       y = y0 + (x - x0) * ((y1 - y0)/(x1-x0))
+   *       where x0, x1 are nearest values of input x
+   *             y0, y1 are nearest values to output y
+   * 
+ * + * \par + * This set of functions implements Linear interpolation process + * for Q7, Q15, Q31, and floating-point data types. The functions operate on a single + * sample of data and each call to the function returns a single processed value. + * S points to an instance of the Linear Interpolate function data structure. + * x is the input sample value. The functions returns the output value. + * + * \par + * if x is outside of the table boundary, Linear interpolation returns first value of the table + * if x is below input range and returns last value of table if x is above range. + */ + + /** + * @addtogroup LinearInterpolate + * @{ + */ + + /** + * @brief Process function for the floating-point Linear Interpolation Function. + * @param[in,out] *S is an instance of the floating-point Linear Interpolation structure + * @param[in] x input sample to process + * @return y processed output sample. + * + */ + + static __INLINE float32_t arm_linear_interp_f32( + arm_linear_interp_instance_f32 * S, + float32_t x) + { + + float32_t y; + float32_t x0, x1; /* Nearest input values */ + float32_t y0, y1; /* Nearest output values */ + float32_t xSpacing = S->xSpacing; /* spacing between input values */ + int32_t i; /* Index variable */ + float32_t *pYData = S->pYData; /* pointer to output table */ + + /* Calculation of index */ + i = (x - S->x1) / xSpacing; + + if(i < 0) + { + /* Iniatilize output for below specified range as least output value of table */ + y = pYData[0]; + } + else if(i >= S->nValues) + { + /* Iniatilize output for above specified range as last output value of table */ + y = pYData[S->nValues-1]; + } + else + { + /* Calculation of nearest input values */ + x0 = S->x1 + i * xSpacing; + x1 = S->x1 + (i +1) * xSpacing; + + /* Read of nearest output values */ + y0 = pYData[i]; + y1 = pYData[i + 1]; + + /* Calculation of output */ + y = y0 + (x - x0) * ((y1 - y0)/(x1-x0)); + + } + + /* returns output value */ + return (y); + } + + /** + * + * @brief Process function for the Q31 Linear Interpolation Function. + * @param[in] *pYData pointer to Q31 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + * + */ + + + static __INLINE q31_t arm_linear_interp_q31(q31_t *pYData, + q31_t x, uint32_t nValues) + { + q31_t y; /* output */ + q31_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + int32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + index = ((x & 0xFFF00000) >> 20); + + if(index >= (nValues - 1)) + { + return(pYData[nValues - 1]); + } + else if(index < 0) + { + return(pYData[0]); + } + else + { + + /* 20 bits for the fractional part */ + /* shift left by 11 to keep fract in 1.31 format */ + fract = (x & 0x000FFFFF) << 11; + + /* Read two nearest output values from the index in 1.31(q31) format */ + y0 = pYData[index]; + y1 = pYData[index + 1u]; + + /* Calculation of y0 * (1-fract) and y is in 2.30 format */ + y = ((q31_t) ((q63_t) y0 * (0x7FFFFFFF - fract) >> 32)); + + /* Calculation of y0 * (1-fract) + y1 *fract and y is in 2.30 format */ + y += ((q31_t) (((q63_t) y1 * fract) >> 32)); + + /* Convert y to 1.31 format */ + return (y << 1u); + + } + + } + + /** + * + * @brief Process function for the Q15 Linear Interpolation Function. + * @param[in] *pYData pointer to Q15 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + * + */ + + + static __INLINE q15_t arm_linear_interp_q15(q15_t *pYData, q31_t x, uint32_t nValues) + { + q63_t y; /* output */ + q15_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + int32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + index = ((x & 0xFFF00000) >> 20u); + + if(index >= (nValues - 1)) + { + return(pYData[nValues - 1]); + } + else if(index < 0) + { + return(pYData[0]); + } + else + { + /* 20 bits for the fractional part */ + /* fract is in 12.20 format */ + fract = (x & 0x000FFFFF); + + /* Read two nearest output values from the index */ + y0 = pYData[index]; + y1 = pYData[index + 1u]; + + /* Calculation of y0 * (1-fract) and y is in 13.35 format */ + y = ((q63_t) y0 * (0xFFFFF - fract)); + + /* Calculation of (y0 * (1-fract) + y1 * fract) and y is in 13.35 format */ + y += ((q63_t) y1 * (fract)); + + /* convert y to 1.15 format */ + return (y >> 20); + } + + + } + + /** + * + * @brief Process function for the Q7 Linear Interpolation Function. + * @param[in] *pYData pointer to Q7 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + */ + + + static __INLINE q7_t arm_linear_interp_q7(q7_t *pYData, q31_t x, uint32_t nValues) + { + q31_t y; /* output */ + q7_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + int32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + index = ((x & 0xFFF00000) >> 20u); + + + if(index >= (nValues - 1)) + { + return(pYData[nValues - 1]); + } + else if(index < 0) + { + return(pYData[0]); + } + else + { + + /* 20 bits for the fractional part */ + /* fract is in 12.20 format */ + fract = (x & 0x000FFFFF); + + /* Read two nearest output values from the index and are in 1.7(q7) format */ + y0 = pYData[index]; + y1 = pYData[index + 1u]; + + /* Calculation of y0 * (1-fract ) and y is in 13.27(q27) format */ + y = ((y0 * (0xFFFFF - fract))); + + /* Calculation of y1 * fract + y0 * (1-fract) and y is in 13.27(q27) format */ + y += (y1 * fract); + + /* convert y to 1.7(q7) format */ + return (y >> 20u); + + } + + } + /** + * @} end of LinearInterpolate group + */ + + /** + * @brief Fast approximation to the trigonometric sine function for floating-point data. + * @param[in] x input value in radians. + * @return sin(x). + */ + + float32_t arm_sin_f32( + float32_t x); + + /** + * @brief Fast approximation to the trigonometric sine function for Q31 data. + * @param[in] x Scaled input value in radians. + * @return sin(x). + */ + + q31_t arm_sin_q31( + q31_t x); + + /** + * @brief Fast approximation to the trigonometric sine function for Q15 data. + * @param[in] x Scaled input value in radians. + * @return sin(x). + */ + + q15_t arm_sin_q15( + q15_t x); + + /** + * @brief Fast approximation to the trigonometric cosine function for floating-point data. + * @param[in] x input value in radians. + * @return cos(x). + */ + + float32_t arm_cos_f32( + float32_t x); + + /** + * @brief Fast approximation to the trigonometric cosine function for Q31 data. + * @param[in] x Scaled input value in radians. + * @return cos(x). + */ + + q31_t arm_cos_q31( + q31_t x); + + /** + * @brief Fast approximation to the trigonometric cosine function for Q15 data. + * @param[in] x Scaled input value in radians. + * @return cos(x). + */ + + q15_t arm_cos_q15( + q15_t x); + + + /** + * @ingroup groupFastMath + */ + + + /** + * @defgroup SQRT Square Root + * + * Computes the square root of a number. + * There are separate functions for Q15, Q31, and floating-point data types. + * The square root function is computed using the Newton-Raphson algorithm. + * This is an iterative algorithm of the form: + *
+   *      x1 = x0 - f(x0)/f'(x0)
+   * 
+ * where x1 is the current estimate, + * x0 is the previous estimate and + * f'(x0) is the derivative of f() evaluated at x0. + * For the square root function, the algorithm reduces to: + *
+   *     x0 = in/2                         [initial guess]
+   *     x1 = 1/2 * ( x0 + in / x0)        [each iteration]
+   * 
+ */ + + + /** + * @addtogroup SQRT + * @{ + */ + + /** + * @brief Floating-point square root function. + * @param[in] in input value. + * @param[out] *pOut square root of input value. + * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if + * in is negative value and returns zero output for negative values. + */ + + static __INLINE arm_status arm_sqrt_f32( + float32_t in, float32_t *pOut) + { + if(in > 0) + { + +// #if __FPU_USED + #if (__FPU_USED == 1) && defined ( __CC_ARM ) + *pOut = __sqrtf(in); + #else + *pOut = sqrtf(in); + #endif + + return (ARM_MATH_SUCCESS); + } + else + { + *pOut = 0.0f; + return (ARM_MATH_ARGUMENT_ERROR); + } + + } + + + /** + * @brief Q31 square root function. + * @param[in] in input value. The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF. + * @param[out] *pOut square root of input value. + * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if + * in is negative value and returns zero output for negative values. + */ + arm_status arm_sqrt_q31( + q31_t in, q31_t *pOut); + + /** + * @brief Q15 square root function. + * @param[in] in input value. The range of the input value is [0 +1) or 0x0000 to 0x7FFF. + * @param[out] *pOut square root of input value. + * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if + * in is negative value and returns zero output for negative values. + */ + arm_status arm_sqrt_q15( + q15_t in, q15_t *pOut); + + /** + * @} end of SQRT group + */ + + + + + + + /** + * @brief floating-point Circular write function. + */ + + static __INLINE void arm_circularWrite_f32( + int32_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const int32_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0u; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while(i > 0u) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if(wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = wOffset; + } + + + + /** + * @brief floating-point Circular Read function. + */ + static __INLINE void arm_circularRead_f32( + int32_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + int32_t * dst, + int32_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0u; + int32_t rOffset, dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + dst_end = (int32_t) (dst_base + dst_length); + + /* Loop over the blockSize */ + i = blockSize; + + while(i > 0u) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if(dst == (int32_t *) dst_end) + { + dst = dst_base; + } + + /* Circularly update rOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if(rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + /** + * @brief Q15 Circular write function. + */ + + static __INLINE void arm_circularWrite_q15( + q15_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const q15_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0u; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while(i > 0u) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if(wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = wOffset; + } + + + + /** + * @brief Q15 Circular Read function. + */ + static __INLINE void arm_circularRead_q15( + q15_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + q15_t * dst, + q15_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0; + int32_t rOffset, dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + + dst_end = (int32_t) (dst_base + dst_length); + + /* Loop over the blockSize */ + i = blockSize; + + while(i > 0u) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if(dst == (q15_t *) dst_end) + { + dst = dst_base; + } + + /* Circularly update wOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if(rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + + /** + * @brief Q7 Circular write function. + */ + + static __INLINE void arm_circularWrite_q7( + q7_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const q7_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0u; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while(i > 0u) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if(wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = wOffset; + } + + + + /** + * @brief Q7 Circular Read function. + */ + static __INLINE void arm_circularRead_q7( + q7_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + q7_t * dst, + q7_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0; + int32_t rOffset, dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + + dst_end = (int32_t) (dst_base + dst_length); + + /* Loop over the blockSize */ + i = blockSize; + + while(i > 0u) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if(dst == (q7_t *) dst_end) + { + dst = dst_base; + } + + /* Circularly update rOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if(rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + + /** + * @brief Sum of the squares of the elements of a Q31 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_power_q31( + q31_t * pSrc, + uint32_t blockSize, + q63_t * pResult); + + /** + * @brief Sum of the squares of the elements of a floating-point vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_power_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + /** + * @brief Sum of the squares of the elements of a Q15 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_power_q15( + q15_t * pSrc, + uint32_t blockSize, + q63_t * pResult); + + /** + * @brief Sum of the squares of the elements of a Q7 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_power_q7( + q7_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + /** + * @brief Mean value of a Q7 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_mean_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult); + + /** + * @brief Mean value of a Q15 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + void arm_mean_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + /** + * @brief Mean value of a Q31 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + void arm_mean_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + /** + * @brief Mean value of a floating-point vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + void arm_mean_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + /** + * @brief Variance of the elements of a floating-point vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_var_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + /** + * @brief Variance of the elements of a Q31 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_var_q31( + q31_t * pSrc, + uint32_t blockSize, + q63_t * pResult); + + /** + * @brief Variance of the elements of a Q15 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_var_q15( + q15_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + /** + * @brief Root Mean Square of the elements of a floating-point vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_rms_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + /** + * @brief Root Mean Square of the elements of a Q31 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_rms_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + /** + * @brief Root Mean Square of the elements of a Q15 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_rms_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + /** + * @brief Standard deviation of the elements of a floating-point vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_std_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + /** + * @brief Standard deviation of the elements of a Q31 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_std_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + /** + * @brief Standard deviation of the elements of a Q15 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output value. + * @return none. + */ + + void arm_std_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + /** + * @brief Floating-point complex magnitude + * @param[in] *pSrc points to the complex input vector + * @param[out] *pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + * @return none. + */ + + void arm_cmplx_mag_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + /** + * @brief Q31 complex magnitude + * @param[in] *pSrc points to the complex input vector + * @param[out] *pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + * @return none. + */ + + void arm_cmplx_mag_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + /** + * @brief Q15 complex magnitude + * @param[in] *pSrc points to the complex input vector + * @param[out] *pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + * @return none. + */ + + void arm_cmplx_mag_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + /** + * @brief Q15 complex dot product + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] *realResult real part of the result returned here + * @param[out] *imagResult imaginary part of the result returned here + * @return none. + */ + + void arm_cmplx_dot_prod_q15( + q15_t * pSrcA, + q15_t * pSrcB, + uint32_t numSamples, + q31_t * realResult, + q31_t * imagResult); + + /** + * @brief Q31 complex dot product + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] *realResult real part of the result returned here + * @param[out] *imagResult imaginary part of the result returned here + * @return none. + */ + + void arm_cmplx_dot_prod_q31( + q31_t * pSrcA, + q31_t * pSrcB, + uint32_t numSamples, + q63_t * realResult, + q63_t * imagResult); + + /** + * @brief Floating-point complex dot product + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] *realResult real part of the result returned here + * @param[out] *imagResult imaginary part of the result returned here + * @return none. + */ + + void arm_cmplx_dot_prod_f32( + float32_t * pSrcA, + float32_t * pSrcB, + uint32_t numSamples, + float32_t * realResult, + float32_t * imagResult); + + /** + * @brief Q15 complex-by-real multiplication + * @param[in] *pSrcCmplx points to the complex input vector + * @param[in] *pSrcReal points to the real input vector + * @param[out] *pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + * @return none. + */ + + void arm_cmplx_mult_real_q15( + q15_t * pSrcCmplx, + q15_t * pSrcReal, + q15_t * pCmplxDst, + uint32_t numSamples); + + /** + * @brief Q31 complex-by-real multiplication + * @param[in] *pSrcCmplx points to the complex input vector + * @param[in] *pSrcReal points to the real input vector + * @param[out] *pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + * @return none. + */ + + void arm_cmplx_mult_real_q31( + q31_t * pSrcCmplx, + q31_t * pSrcReal, + q31_t * pCmplxDst, + uint32_t numSamples); + + /** + * @brief Floating-point complex-by-real multiplication + * @param[in] *pSrcCmplx points to the complex input vector + * @param[in] *pSrcReal points to the real input vector + * @param[out] *pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + * @return none. + */ + + void arm_cmplx_mult_real_f32( + float32_t * pSrcCmplx, + float32_t * pSrcReal, + float32_t * pCmplxDst, + uint32_t numSamples); + + /** + * @brief Minimum value of a Q7 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *result is output pointer + * @param[in] index is the array index of the minimum value in the input buffer. + * @return none. + */ + + void arm_min_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * result, + uint32_t * index); + + /** + * @brief Minimum value of a Q15 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output pointer + * @param[in] *pIndex is the array index of the minimum value in the input buffer. + * @return none. + */ + + void arm_min_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex); + + /** + * @brief Minimum value of a Q31 vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output pointer + * @param[out] *pIndex is the array index of the minimum value in the input buffer. + * @return none. + */ + void arm_min_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex); + + /** + * @brief Minimum value of a floating-point vector. + * @param[in] *pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] *pResult is output pointer + * @param[out] *pIndex is the array index of the minimum value in the input buffer. + * @return none. + */ + + void arm_min_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex); + +/** + * @brief Maximum value of a Q7 vector. + * @param[in] *pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] *pResult maximum value returned here + * @param[out] *pIndex index of maximum value returned here + * @return none. + */ + + void arm_max_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult, + uint32_t * pIndex); + +/** + * @brief Maximum value of a Q15 vector. + * @param[in] *pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] *pResult maximum value returned here + * @param[out] *pIndex index of maximum value returned here + * @return none. + */ + + void arm_max_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex); + +/** + * @brief Maximum value of a Q31 vector. + * @param[in] *pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] *pResult maximum value returned here + * @param[out] *pIndex index of maximum value returned here + * @return none. + */ + + void arm_max_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex); + +/** + * @brief Maximum value of a floating-point vector. + * @param[in] *pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] *pResult maximum value returned here + * @param[out] *pIndex index of maximum value returned here + * @return none. + */ + + void arm_max_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex); + + /** + * @brief Q15 complex-by-complex multiplication + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + * @return none. + */ + + void arm_cmplx_mult_cmplx_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t numSamples); + + /** + * @brief Q31 complex-by-complex multiplication + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + * @return none. + */ + + void arm_cmplx_mult_cmplx_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t numSamples); + + /** + * @brief Floating-point complex-by-complex multiplication + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + * @return none. + */ + + void arm_cmplx_mult_cmplx_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t numSamples); + + /** + * @brief Converts the elements of the floating-point vector to Q31 vector. + * @param[in] *pSrc points to the floating-point input vector + * @param[out] *pDst points to the Q31 output vector + * @param[in] blockSize length of the input vector + * @return none. + */ + void arm_float_to_q31( + float32_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Converts the elements of the floating-point vector to Q15 vector. + * @param[in] *pSrc points to the floating-point input vector + * @param[out] *pDst points to the Q15 output vector + * @param[in] blockSize length of the input vector + * @return none + */ + void arm_float_to_q15( + float32_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Converts the elements of the floating-point vector to Q7 vector. + * @param[in] *pSrc points to the floating-point input vector + * @param[out] *pDst points to the Q7 output vector + * @param[in] blockSize length of the input vector + * @return none + */ + void arm_float_to_q7( + float32_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q31 vector to Q15 vector. + * @param[in] *pSrc is input pointer + * @param[out] *pDst is output pointer + * @param[in] blockSize is the number of samples to process + * @return none. + */ + void arm_q31_to_q15( + q31_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Converts the elements of the Q31 vector to Q7 vector. + * @param[in] *pSrc is input pointer + * @param[out] *pDst is output pointer + * @param[in] blockSize is the number of samples to process + * @return none. + */ + void arm_q31_to_q7( + q31_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Converts the elements of the Q15 vector to floating-point vector. + * @param[in] *pSrc is input pointer + * @param[out] *pDst is output pointer + * @param[in] blockSize is the number of samples to process + * @return none. + */ + void arm_q15_to_float( + q15_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q15 vector to Q31 vector. + * @param[in] *pSrc is input pointer + * @param[out] *pDst is output pointer + * @param[in] blockSize is the number of samples to process + * @return none. + */ + void arm_q15_to_q31( + q15_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q15 vector to Q7 vector. + * @param[in] *pSrc is input pointer + * @param[out] *pDst is output pointer + * @param[in] blockSize is the number of samples to process + * @return none. + */ + void arm_q15_to_q7( + q15_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @ingroup groupInterpolation + */ + + /** + * @defgroup BilinearInterpolate Bilinear Interpolation + * + * Bilinear interpolation is an extension of linear interpolation applied to a two dimensional grid. + * The underlying function f(x, y) is sampled on a regular grid and the interpolation process + * determines values between the grid points. + * Bilinear interpolation is equivalent to two step linear interpolation, first in the x-dimension and then in the y-dimension. + * Bilinear interpolation is often used in image processing to rescale images. + * The CMSIS DSP library provides bilinear interpolation functions for Q7, Q15, Q31, and floating-point data types. + * + * Algorithm + * \par + * The instance structure used by the bilinear interpolation functions describes a two dimensional data table. + * For floating-point, the instance structure is defined as: + *
+   *   typedef struct
+   *   {
+   *     uint16_t numRows;
+   *     uint16_t numCols;
+   *     float32_t *pData;
+   * } arm_bilinear_interp_instance_f32;
+   * 
+ * + * \par + * where numRows specifies the number of rows in the table; + * numCols specifies the number of columns in the table; + * and pData points to an array of size numRows*numCols values. + * The data table pTable is organized in row order and the supplied data values fall on integer indexes. + * That is, table element (x,y) is located at pTable[x + y*numCols] where x and y are integers. + * + * \par + * Let (x, y) specify the desired interpolation point. Then define: + *
+   *     XF = floor(x)
+   *     YF = floor(y)
+   * 
+ * \par + * The interpolated output point is computed as: + *
+   *  f(x, y) = f(XF, YF) * (1-(x-XF)) * (1-(y-YF))
+   *           + f(XF+1, YF) * (x-XF)*(1-(y-YF))
+   *           + f(XF, YF+1) * (1-(x-XF))*(y-YF)
+   *           + f(XF+1, YF+1) * (x-XF)*(y-YF)
+   * 
+ * Note that the coordinates (x, y) contain integer and fractional components. + * The integer components specify which portion of the table to use while the + * fractional components control the interpolation processor. + * + * \par + * if (x,y) are outside of the table boundary, Bilinear interpolation returns zero output. + */ + + /** + * @addtogroup BilinearInterpolate + * @{ + */ + + /** + * + * @brief Floating-point bilinear interpolation. + * @param[in,out] *S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate. + * @param[in] Y interpolation coordinate. + * @return out interpolated value. + */ + + + static __INLINE float32_t arm_bilinear_interp_f32( + const arm_bilinear_interp_instance_f32 * S, + float32_t X, + float32_t Y) + { + float32_t out; + float32_t f00, f01, f10, f11; + float32_t *pData = S->pData; + int32_t xIndex, yIndex, index; + float32_t xdiff, ydiff; + float32_t b1, b2, b3, b4; + + xIndex = (int32_t) X; + yIndex = (int32_t) Y; + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if(xIndex < 0 || xIndex > (S->numRows-1) || yIndex < 0 || yIndex > ( S->numCols-1)) + { + return(0); + } + + /* Calculation of index for two nearest points in X-direction */ + index = (xIndex - 1) + (yIndex-1) * S->numCols ; + + + /* Read two nearest points in X-direction */ + f00 = pData[index]; + f01 = pData[index + 1]; + + /* Calculation of index for two nearest points in Y-direction */ + index = (xIndex-1) + (yIndex) * S->numCols; + + + /* Read two nearest points in Y-direction */ + f10 = pData[index]; + f11 = pData[index + 1]; + + /* Calculation of intermediate values */ + b1 = f00; + b2 = f01 - f00; + b3 = f10 - f00; + b4 = f00 - f01 - f10 + f11; + + /* Calculation of fractional part in X */ + xdiff = X - xIndex; + + /* Calculation of fractional part in Y */ + ydiff = Y - yIndex; + + /* Calculation of bi-linear interpolated output */ + out = b1 + b2 * xdiff + b3 * ydiff + b4 * xdiff * ydiff; + + /* return to application */ + return (out); + + } + + /** + * + * @brief Q31 bilinear interpolation. + * @param[in,out] *S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + + static __INLINE q31_t arm_bilinear_interp_q31( + arm_bilinear_interp_instance_q31 * S, + q31_t X, + q31_t Y) + { + q31_t out; /* Temporary output */ + q31_t acc = 0; /* output */ + q31_t xfract, yfract; /* X, Y fractional parts */ + q31_t x1, x2, y1, y2; /* Nearest output values */ + int32_t rI, cI; /* Row and column indices */ + q31_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & 0xFFF00000) >> 20u); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & 0xFFF00000) >> 20u); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if(rI < 0 || rI > (S->numRows-1) || cI < 0 || cI > ( S->numCols-1)) + { + return(0); + } + + /* 20 bits for the fractional part */ + /* shift left xfract by 11 to keep 1.31 format */ + xfract = (X & 0x000FFFFF) << 11u; + + /* Read two nearest output values from the index */ + x1 = pYData[(rI) + nCols * (cI)]; + x2 = pYData[(rI) + nCols * (cI) + 1u]; + + /* 20 bits for the fractional part */ + /* shift left yfract by 11 to keep 1.31 format */ + yfract = (Y & 0x000FFFFF) << 11u; + + /* Read two nearest output values from the index */ + y1 = pYData[(rI) + nCols * (cI + 1)]; + y2 = pYData[(rI) + nCols * (cI + 1) + 1u]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 3.29(q29) format */ + out = ((q31_t) (((q63_t) x1 * (0x7FFFFFFF - xfract)) >> 32)); + acc = ((q31_t) (((q63_t) out * (0x7FFFFFFF - yfract)) >> 32)); + + /* x2 * (xfract) * (1-yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) x2 * (0x7FFFFFFF - yfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (xfract) >> 32)); + + /* y1 * (1 - xfract) * (yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) y1 * (0x7FFFFFFF - xfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); + + /* y2 * (xfract) * (yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) y2 * (xfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); + + /* Convert acc to 1.31(q31) format */ + return (acc << 2u); + + } + + /** + * @brief Q15 bilinear interpolation. + * @param[in,out] *S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + + static __INLINE q15_t arm_bilinear_interp_q15( + arm_bilinear_interp_instance_q15 * S, + q31_t X, + q31_t Y) + { + q63_t acc = 0; /* output */ + q31_t out; /* Temporary output */ + q15_t x1, x2, y1, y2; /* Nearest output values */ + q31_t xfract, yfract; /* X, Y fractional parts */ + int32_t rI, cI; /* Row and column indices */ + q15_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & 0xFFF00000) >> 20); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & 0xFFF00000) >> 20); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if(rI < 0 || rI > (S->numRows-1) || cI < 0 || cI > ( S->numCols-1)) + { + return(0); + } + + /* 20 bits for the fractional part */ + /* xfract should be in 12.20 format */ + xfract = (X & 0x000FFFFF); + + /* Read two nearest output values from the index */ + x1 = pYData[(rI) + nCols * (cI)]; + x2 = pYData[(rI) + nCols * (cI) + 1u]; + + + /* 20 bits for the fractional part */ + /* yfract should be in 12.20 format */ + yfract = (Y & 0x000FFFFF); + + /* Read two nearest output values from the index */ + y1 = pYData[(rI) + nCols * (cI + 1)]; + y2 = pYData[(rI) + nCols * (cI + 1) + 1u]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 13.51 format */ + + /* x1 is in 1.15(q15), xfract in 12.20 format and out is in 13.35 format */ + /* convert 13.35 to 13.31 by right shifting and out is in 1.31 */ + out = (q31_t) (((q63_t) x1 * (0xFFFFF - xfract)) >> 4u); + acc = ((q63_t) out * (0xFFFFF - yfract)); + + /* x2 * (xfract) * (1-yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) x2 * (0xFFFFF - yfract)) >> 4u); + acc += ((q63_t) out * (xfract)); + + /* y1 * (1 - xfract) * (yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) y1 * (0xFFFFF - xfract)) >> 4u); + acc += ((q63_t) out * (yfract)); + + /* y2 * (xfract) * (yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) y2 * (xfract)) >> 4u); + acc += ((q63_t) out * (yfract)); + + /* acc is in 13.51 format and down shift acc by 36 times */ + /* Convert out to 1.15 format */ + return (acc >> 36); + + } + + /** + * @brief Q7 bilinear interpolation. + * @param[in,out] *S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + + static __INLINE q7_t arm_bilinear_interp_q7( + arm_bilinear_interp_instance_q7 * S, + q31_t X, + q31_t Y) + { + q63_t acc = 0; /* output */ + q31_t out; /* Temporary output */ + q31_t xfract, yfract; /* X, Y fractional parts */ + q7_t x1, x2, y1, y2; /* Nearest output values */ + int32_t rI, cI; /* Row and column indices */ + q7_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & 0xFFF00000) >> 20); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & 0xFFF00000) >> 20); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if(rI < 0 || rI > (S->numRows-1) || cI < 0 || cI > ( S->numCols-1)) + { + return(0); + } + + /* 20 bits for the fractional part */ + /* xfract should be in 12.20 format */ + xfract = (X & 0x000FFFFF); + + /* Read two nearest output values from the index */ + x1 = pYData[(rI) + nCols * (cI)]; + x2 = pYData[(rI) + nCols * (cI) + 1u]; + + + /* 20 bits for the fractional part */ + /* yfract should be in 12.20 format */ + yfract = (Y & 0x000FFFFF); + + /* Read two nearest output values from the index */ + y1 = pYData[(rI) + nCols * (cI + 1)]; + y2 = pYData[(rI) + nCols * (cI + 1) + 1u]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 16.47 format */ + out = ((x1 * (0xFFFFF - xfract))); + acc = (((q63_t) out * (0xFFFFF - yfract))); + + /* x2 * (xfract) * (1-yfract) in 2.22 and adding to acc */ + out = ((x2 * (0xFFFFF - yfract))); + acc += (((q63_t) out * (xfract))); + + /* y1 * (1 - xfract) * (yfract) in 2.22 and adding to acc */ + out = ((y1 * (0xFFFFF - xfract))); + acc += (((q63_t) out * (yfract))); + + /* y2 * (xfract) * (yfract) in 2.22 and adding to acc */ + out = ((y2 * (yfract))); + acc += (((q63_t) out * (xfract))); + + /* acc in 16.47 format and down shift by 40 to convert to 1.7 format */ + return (acc >> 40); + + } + + /** + * @} end of BilinearInterpolate group + */ + + + + + + +#ifdef __cplusplus +} +#endif + + +#endif /* _ARM_MATH_H */ + + +/** + * + * End of file. + */ diff --git a/hardware/sam/system/CMSIS/Include/core_cm0.h b/hardware/sam/system/CMSIS/Include/core_cm0.h new file mode 100644 index 000000000..9d7a19f9a --- /dev/null +++ b/hardware/sam/system/CMSIS/Include/core_cm0.h @@ -0,0 +1,665 @@ +/**************************************************************************//** + * @file core_cm0.h + * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Header File + * @version V2.10 + * @date 19. July 2011 + * + * @note + * Copyright (C) 2009-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#endif + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __CORE_CM0_H_GENERIC +#define __CORE_CM0_H_GENERIC + + +/** \mainpage CMSIS Cortex-M0 + + This documentation describes the CMSIS Cortex-M Core Peripheral Access Layer. + It consists of: + + - Cortex-M Core Register Definitions + - Cortex-M functions + - Cortex-M instructions + + The CMSIS Cortex-M0 Core Peripheral Access Layer contains C and assembly functions that ease + access to the Cortex-M Core + */ + +/** \defgroup CMSIS_MISRA_Exceptions CMSIS MISRA-C:2004 Compliance Exceptions + CMSIS violates following MISRA-C2004 Rules: + + - Violates MISRA 2004 Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + - Violates MISRA 2004 Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + - Violates MISRA 2004 Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** \defgroup CMSIS_core_definitions CMSIS Core Definitions + This file defines all structures and symbols for CMSIS core: + - CMSIS version number + - Cortex-M core + - Cortex-M core Revision Number + @{ + */ + +/* CMSIS CM0 definitions */ +#define __CM0_CMSIS_VERSION_MAIN (0x02) /*!< [31:16] CMSIS HAL main version */ +#define __CM0_CMSIS_VERSION_SUB (0x10) /*!< [15:0] CMSIS HAL sub version */ +#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16) | __CM0_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number */ + +#define __CORTEX_M (0x00) /*!< Cortex core */ + + +#if defined ( __CC_ARM ) + #define __ASM __asm /*!< asm keyword for ARM Compiler */ + #define __INLINE __inline /*!< inline keyword for ARM Compiler */ + +#elif defined ( __ICCARM__ ) + #define __ASM __asm /*!< asm keyword for IAR Compiler */ + #define __INLINE inline /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */ + +#elif defined ( __GNUC__ ) + #define __ASM __asm /*!< asm keyword for GNU Compiler */ + #define __INLINE inline /*!< inline keyword for GNU Compiler */ + +#elif defined ( __TASKING__ ) + #define __ASM __asm /*!< asm keyword for TASKING Compiler */ + #define __INLINE inline /*!< inline keyword for TASKING Compiler */ + +#endif + +/*!< __FPU_USED to be checked prior to making use of FPU specific registers and functions */ +#define __FPU_USED 0 + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + /* add preprocessor checks */ +#endif + +#include /*!< standard types definitions */ +#include "core_cmInstr.h" /*!< Core Instruction Access */ +#include "core_cmFunc.h" /*!< Core Function Access */ + +#endif /* __CORE_CM0_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM0_H_DEPENDANT +#define __CORE_CM0_H_DEPENDANT + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM0_REV + #define __CM0_REV 0x0000 + #warning "__CM0_REV not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2 + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0 + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +#ifdef __cplusplus + #define __I volatile /*!< defines 'read only' permissions */ +#else + #define __I volatile const /*!< defines 'read only' permissions */ +#endif +#define __O volatile /*!< defines 'write only' permissions */ +#define __IO volatile /*!< defines 'read / write' permissions */ + +/*@} end of group CMSIS_core_definitions */ + + + +/******************************************************************************* + * Register Abstraction + ******************************************************************************/ +/** \defgroup CMSIS_core_register CMSIS Core Register + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register +*/ + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CORE CMSIS Core + Type definitions for the Cortex-M Core Registers + @{ + */ + +/** \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ +#else + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ +#endif + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + + +/** \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + + +/** \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ +#else + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ +#endif + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + + +/** \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/*@} end of group CMSIS_CORE */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC CMSIS NVIC + Type definitions for the Cortex-M NVIC Registers + @{ + */ + +/** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IO uint32_t ISER[1]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31]; + __IO uint32_t ICER[1]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31]; + __IO uint32_t ISPR[1]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31]; + __IO uint32_t ICPR[1]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31]; + uint32_t RESERVED4[64]; + __IO uint32_t IP[8]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SCB CMSIS SCB + Type definitions for the Cortex-M System Control Block Registers + @{ + */ + +/** \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __I uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IO uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + uint32_t RESERVED0; + __IO uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IO uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IO uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IO uint32_t SHP[2]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IO uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16 /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick CMSIS SysTick + Type definitions for the Cortex-M System Timer Registers + @{ + */ + +/** \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IO uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IO uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __I uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug CMSIS Core Debug + Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP + and not via processor. Therefore they are not covered by the Cortex-M0 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** \ingroup CMSIS_core_register + @{ + */ + +/* Memory mapping of Cortex-M0 Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + ******************************************************************************/ +/** \defgroup CMSIS_Core_FunctionInterface CMSIS Core Function Interface + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions +*/ + + + +/* ########################## NVIC functions #################################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions CMSIS Core NVIC Functions + @{ + */ + +/* Interrupt Priorities are WORD accessible only under ARMv6M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( (((uint32_t)(IRQn) ) & 0x03) * 8 ) +#define _SHP_IDX(IRQn) ( ((((uint32_t)(IRQn) & 0x0F)-8) >> 2) ) +#define _IP_IDX(IRQn) ( ((uint32_t)(IRQn) >> 2) ) + + +/** \brief Enable External Interrupt + + This function enables a device specific interrupt in the NVIC interrupt controller. + The interrupt number cannot be a negative value. + + \param [in] IRQn Number of the external interrupt to enable + */ +static __INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) +{ + NVIC->ISER[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); +} + + +/** \brief Disable External Interrupt + + This function disables a device specific interrupt in the NVIC interrupt controller. + The interrupt number cannot be a negative value. + + \param [in] IRQn Number of the external interrupt to disable + */ +static __INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) +{ + NVIC->ICER[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); +} + + +/** \brief Get Pending Interrupt + + This function reads the pending register in the NVIC and returns the pending bit + for the specified interrupt. + + \param [in] IRQn Number of the interrupt for get pending + \return 0 Interrupt status is not pending + \return 1 Interrupt status is pending + */ +static __INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + return((uint32_t) ((NVIC->ISPR[0] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); +} + + +/** \brief Set Pending Interrupt + + This function sets the pending bit for the specified interrupt. + The interrupt number cannot be a negative value. + + \param [in] IRQn Number of the interrupt for set pending + */ +static __INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ISPR[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); +} + + +/** \brief Clear Pending Interrupt + + This function clears the pending bit for the specified interrupt. + The interrupt number cannot be a negative value. + + \param [in] IRQn Number of the interrupt for clear pending + */ +static __INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ICPR[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ +} + + +/** \brief Set Interrupt Priority + + This function sets the priority for the specified interrupt. The interrupt + number can be positive to specify an external (device specific) + interrupt, or negative to specify an internal (core) interrupt. + + Note: The priority cannot be set for every core interrupt. + + \param [in] IRQn Number of the interrupt for set priority + \param [in] priority Priority to set + */ +static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if(IRQn < 0) { + SCB->SHP[_SHP_IDX(IRQn)] = (SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) | + (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); } + else { + NVIC->IP[_IP_IDX(IRQn)] = (NVIC->IP[_IP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) | + (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); } +} + + +/** \brief Get Interrupt Priority + + This function reads the priority for the specified interrupt. The interrupt + number can be positive to specify an external (device specific) + interrupt, or negative to specify an internal (core) interrupt. + + The returned priority value is automatically aligned to the implemented + priority bits of the microcontroller. + + \param [in] IRQn Number of the interrupt for get priority + \return Interrupt Priority + */ +static __INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) +{ + + if(IRQn < 0) { + return((uint32_t)((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M0 system interrupts */ + else { + return((uint32_t)((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ +} + + +/** \brief System Reset + + This function initiate a system reset request to reset the MCU. + */ +static __INLINE void NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + while(1); /* wait until reset */ +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions CMSIS Core SysTick Functions + @{ + */ + +#if (__Vendor_SysTickConfig == 0) + +/** \brief System Tick Configuration + + This function initialises the system tick timer and its interrupt and start the system tick timer. + Counter is in free running mode to generate periodical interrupts. + + \param [in] ticks Number of ticks between two interrupts + \return 0 Function succeeded + \return 1 Function failed + */ +static __INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ + + SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */ + SysTick->VAL = 0; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#endif /* __CORE_CM0_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ + +#ifdef __cplusplus +} +#endif diff --git a/hardware/sam/system/CMSIS/Include/core_cm3.h b/hardware/sam/system/CMSIS/Include/core_cm3.h new file mode 100644 index 000000000..185688f14 --- /dev/null +++ b/hardware/sam/system/CMSIS/Include/core_cm3.h @@ -0,0 +1,1244 @@ +/**************************************************************************//** + * @file core_cm3.h + * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File + * @version V2.11 + * @date 08. September 2011 + * + * @note + * Copyright (C) 2009-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#endif + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __CORE_CM3_H_GENERIC +#define __CORE_CM3_H_GENERIC + + +/** \mainpage CMSIS Cortex-M3 + + This documentation describes the CMSIS Cortex-M Core Peripheral Access Layer. + It consists of: + + - Cortex-M Core Register Definitions + - Cortex-M functions + - Cortex-M instructions + + The CMSIS Cortex-M3 Core Peripheral Access Layer contains C and assembly functions that ease + access to the Cortex-M Core + */ + +/** \defgroup CMSIS_MISRA_Exceptions CMSIS MISRA-C:2004 Compliance Exceptions + CMSIS violates following MISRA-C2004 Rules: + + - Violates MISRA 2004 Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + - Violates MISRA 2004 Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + - Violates MISRA 2004 Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** \defgroup CMSIS_core_definitions CMSIS Core Definitions + This file defines all structures and symbols for CMSIS core: + - CMSIS version number + - Cortex-M core + - Cortex-M core Revision Number + @{ + */ + +/* CMSIS CM3 definitions */ +#define __CM3_CMSIS_VERSION_MAIN (0x02) /*!< [31:16] CMSIS HAL main version */ +#define __CM3_CMSIS_VERSION_SUB (0x10) /*!< [15:0] CMSIS HAL sub version */ +#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16) | __CM3_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number */ + +#define __CORTEX_M (0x03) /*!< Cortex core */ + + +#if defined ( __CC_ARM ) + #define __ASM __asm /*!< asm keyword for ARM Compiler */ + #define __INLINE __inline /*!< inline keyword for ARM Compiler */ + +#elif defined ( __ICCARM__ ) + #define __ASM __asm /*!< asm keyword for IAR Compiler */ + #define __INLINE inline /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */ + +#elif defined ( __GNUC__ ) + #define __ASM __asm /*!< asm keyword for GNU Compiler */ + #define __INLINE inline /*!< inline keyword for GNU Compiler */ + +#elif defined ( __TASKING__ ) + #define __ASM __asm /*!< asm keyword for TASKING Compiler */ + #define __INLINE inline /*!< inline keyword for TASKING Compiler */ + +#endif + + +#define __FPU_USED 0 /*!< __FPU_USED to be checked prior to making use of FPU specific registers and functions */ + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + /* add preprocessor checks */ +#endif + +#include /*!< standard types definitions */ +#include "core_cmInstr.h" /*!< Core Instruction Access */ +#include "core_cmFunc.h" /*!< Core Function Access */ + +#endif /* __CORE_CM3_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM3_H_DEPENDANT +#define __CORE_CM3_H_DEPENDANT + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM3_REV + #define __CM3_REV 0x0200 + #warning "__CM3_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0 + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 4 + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0 + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +#ifdef __cplusplus + #define __I volatile /*!< defines 'read only' permissions */ +#else + #define __I volatile const /*!< defines 'read only' permissions */ +#endif +#define __O volatile /*!< defines 'write only' permissions */ +#define __IO volatile /*!< defines 'read / write' permissions */ + +/*@} end of group CMSIS_core_definitions */ + + + +/******************************************************************************* + * Register Abstraction + ******************************************************************************/ +/** \defgroup CMSIS_core_register CMSIS Core Register + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register +*/ + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CORE CMSIS Core + Type definitions for the Cortex-M Core Registers + @{ + */ + +/** \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ +#else + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ +#endif + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + + +/** \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + + +/** \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ +#else + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ +#endif + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + + +/** \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/*@} end of group CMSIS_CORE */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC CMSIS NVIC + Type definitions for the Cortex-M NVIC Registers + @{ + */ + +/** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IO uint32_t ISER[8]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24]; + __IO uint32_t ICER[8]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24]; + __IO uint32_t ISPR[8]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24]; + __IO uint32_t ICPR[8]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24]; + __IO uint32_t IABR[8]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56]; + __IO uint8_t IP[240]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644]; + __O uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0 /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL << NVIC_STIR_INTID_Pos) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SCB CMSIS SCB + Type definitions for the Cortex-M System Control Block Registers + @{ + */ + +/** \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __I uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IO uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IO uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IO uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IO uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IO uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IO uint8_t SHP[12]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IO uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IO uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IO uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IO uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IO uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IO uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IO uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __I uint32_t PFR[2]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __I uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __I uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __I uint32_t MMFR[4]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __I uint32_t ISAR[5]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5]; + __IO uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16 /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#if (__CM3_REV < 0x0201) /* core r2p1 */ +#define SCB_VTOR_TBLBASE_Pos 29 /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#else +#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Registers Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* SCB Hard Fault Status Registers Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB CMSIS System Control and ID Register not in the SCB + Type definitions for the Cortex-M System Control and ID Register not in the SCB + @{ + */ + +/** \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1]; + __I uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ +#if ((defined __CM3_REV) && (__CM3_REV >= 0x200)) + __IO uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +#else + uint32_t RESERVED1[1]; +#endif +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0 /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL << SCnSCB_ICTR_INTLINESNUM_Pos) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2 /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1 /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0 /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL << SCnSCB_ACTLR_DISMCYCINT_Pos) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick CMSIS SysTick + Type definitions for the Cortex-M System Timer Registers + @{ + */ + +/** \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IO uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IO uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __I uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_ITM CMSIS ITM + Type definitions for the Cortex-M Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __O union + { + __O uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __O uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __O uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864]; + __IO uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15]; + __IO uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15]; + __IO uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0 /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL << ITM_TPR_PRIVMASK_Pos) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23 /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16 /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10 /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8 /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4 /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_TXENA_Pos 3 /*!< ITM TCR: TXENA Position */ +#define ITM_TCR_TXENA_Msk (1UL << ITM_TCR_TXENA_Pos) /*!< ITM TCR: TXENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2 /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1 /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0 /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL << ITM_TCR_ITMENA_Pos) /*!< ITM TCR: ITM Enable bit Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +#if (__MPU_PRESENT == 1) +/** \ingroup CMSIS_core_register + \defgroup CMSIS_MPU CMSIS MPU + Type definitions for the Cortex-M Memory Protection Unit (MPU) + @{ + */ + +/** \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __I uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IO uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IO uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IO uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IO uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IO uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IO uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IO uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IO uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IO uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IO uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register */ +#define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register */ +#define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register */ +#define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register */ +#define MPU_RBAR_ADDR_Pos 5 /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register */ +#define MPU_RASR_ATTRS_Pos 16 /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0 /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL << MPU_RASR_ENABLE_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug CMSIS Core Debug + Type definitions for the Cortex-M Core Debug Registers + @{ + */ + +/** \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IO uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __O uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IO uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IO uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register */ +#define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** \ingroup CMSIS_core_register + @{ + */ + +/* Memory mapping of Cortex-M3 Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if (__MPU_PRESENT == 1) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + ******************************************************************************/ +/** \defgroup CMSIS_Core_FunctionInterface CMSIS Core Function Interface + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions +*/ + + + +/* ########################## NVIC functions #################################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions CMSIS Core NVIC Functions + @{ + */ + +/** \brief Set Priority Grouping + + This function sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + + \param [in] PriorityGroup Priority grouping field + */ +static __INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FA << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ + SCB->AIRCR = reg_value; +} + + +/** \brief Get Priority Grouping + + This function gets the priority grouping from NVIC Interrupt Controller. + Priority grouping is SCB->AIRCR [10:8] PRIGROUP field. + + \return Priority grouping field + */ +static __INLINE uint32_t NVIC_GetPriorityGrouping(void) +{ + return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ +} + + +/** \brief Enable External Interrupt + + This function enables a device specific interrupt in the NVIC interrupt controller. + The interrupt number cannot be a negative value. + + \param [in] IRQn Number of the external interrupt to enable + */ +static __INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) +{ + NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* enable interrupt */ +} + + +/** \brief Disable External Interrupt + + This function disables a device specific interrupt in the NVIC interrupt controller. + The interrupt number cannot be a negative value. + + \param [in] IRQn Number of the external interrupt to disable + */ +static __INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) +{ + NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ +} + + +/** \brief Get Pending Interrupt + + This function reads the pending register in the NVIC and returns the pending bit + for the specified interrupt. + + \param [in] IRQn Number of the interrupt for get pending + \return 0 Interrupt status is not pending + \return 1 Interrupt status is pending + */ +static __INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ +} + + +/** \brief Set Pending Interrupt + + This function sets the pending bit for the specified interrupt. + The interrupt number cannot be a negative value. + + \param [in] IRQn Number of the interrupt for set pending + */ +static __INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ +} + + +/** \brief Clear Pending Interrupt + + This function clears the pending bit for the specified interrupt. + The interrupt number cannot be a negative value. + + \param [in] IRQn Number of the interrupt for clear pending + */ +static __INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ +} + + +/** \brief Get Active Interrupt + + This function reads the active register in NVIC and returns the active bit. + \param [in] IRQn Number of the interrupt for get active + \return 0 Interrupt status is not active + \return 1 Interrupt status is active + */ +static __INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) +{ + return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ +} + + +/** \brief Set Interrupt Priority + + This function sets the priority for the specified interrupt. The interrupt + number can be positive to specify an external (device specific) + interrupt, or negative to specify an internal (core) interrupt. + + Note: The priority cannot be set for every core interrupt. + + \param [in] IRQn Number of the interrupt for set priority + \param [in] priority Priority to set + */ +static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if(IRQn < 0) { + SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M System Interrupts */ + else { + NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ +} + + +/** \brief Get Interrupt Priority + + This function reads the priority for the specified interrupt. The interrupt + number can be positive to specify an external (device specific) + interrupt, or negative to specify an internal (core) interrupt. + + The returned priority value is automatically aligned to the implemented + priority bits of the microcontroller. + + \param [in] IRQn Number of the interrupt for get priority + \return Interrupt Priority + */ +static __INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) +{ + + if(IRQn < 0) { + return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M system interrupts */ + else { + return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ +} + + +/** \brief Encode Priority + + This function encodes the priority for an interrupt with the given priority group, + preemptive priority value and sub priority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. + + The returned priority value can be used for NVIC_SetPriority(...) function + + \param [in] PriorityGroup Used priority group + \param [in] PreemptPriority Preemptive priority value (starting from 0) + \param [in] SubPriority Sub priority value (starting from 0) + \return Encoded priority for the interrupt + */ +static __INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; + SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; + + return ( + ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | + ((SubPriority & ((1 << (SubPriorityBits )) - 1))) + ); +} + + +/** \brief Decode Priority + + This function decodes an interrupt priority value with the given priority group to + preemptive priority value and sub priority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. + + The priority value can be retrieved with NVIC_GetPriority(...) function + + \param [in] Priority Priority value + \param [in] PriorityGroup Used priority group + \param [out] pPreemptPriority Preemptive priority value (starting from 0) + \param [out] pSubPriority Sub priority value (starting from 0) + */ +static __INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; + SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; + + *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); + *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); +} + + +/** \brief System Reset + + This function initiate a system reset request to reset the MCU. + */ +static __INLINE void NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + while(1); /* wait until reset */ +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions CMSIS Core SysTick Functions + @{ + */ + +#if (__Vendor_SysTickConfig == 0) + +/** \brief System Tick Configuration + + This function initialises the system tick timer and its interrupt and start the system tick timer. + Counter is in free running mode to generate periodical interrupts. + + \param [in] ticks Number of ticks between two interrupts + \return 0 Function succeeded + \return 1 Function failed + */ +static __INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ + + SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */ + SysTick->VAL = 0; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions CMSIS Core Debug Functions + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< external variable to receive characters */ +#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /*!< value identifying ITM_RxBuffer is ready for next character */ + + +/** \brief ITM Send Character + + This function transmits a character via the ITM channel 0. + It just returns when no debugger is connected that has booked the output. + It is blocking when a debugger is connected, but the previous character send is not transmitted. + + \param [in] ch Character to transmit + \return Character to transmit + */ +static __INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA_Msk) && /* Trace enabled */ + (ITM->TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */ + (ITM->TER & (1UL << 0) ) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0].u32 == 0); + ITM->PORT[0].u8 = (uint8_t) ch; + } + return (ch); +} + + +/** \brief ITM Receive Character + + This function inputs a character via external variable ITM_RxBuffer. + It just returns when no debugger is connected that has booked the output. + It is blocking when a debugger is connected, but the previous character send is not transmitted. + + \return Received character + \return -1 No character received + */ +static __INLINE int32_t ITM_ReceiveChar (void) { + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** \brief ITM Check Character + + This function checks external variable ITM_RxBuffer whether a character is available or not. + It returns '1' if a character is available and '0' if no character is available. + + \return 0 No character available + \return 1 Character available + */ +static __INLINE int32_t ITM_CheckChar (void) { + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) { + return (0); /* no character available */ + } else { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + +#endif /* __CORE_CM3_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ + +#ifdef __cplusplus +} +#endif diff --git a/hardware/sam/system/CMSIS/Include/core_cm4.h b/hardware/sam/system/CMSIS/Include/core_cm4.h new file mode 100644 index 000000000..bf022ba67 --- /dev/null +++ b/hardware/sam/system/CMSIS/Include/core_cm4.h @@ -0,0 +1,1378 @@ +/**************************************************************************//** + * @file core_cm4.h + * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Header File + * @version V2.10 + * @date 19. July 2011 + * + * @note + * Copyright (C) 2009-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#endif + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __CORE_CM4_H_GENERIC +#define __CORE_CM4_H_GENERIC + + +/** \mainpage CMSIS Cortex-M4 + + This documentation describes the CMSIS Cortex-M Core Peripheral Access Layer. + It consists of: + + - Cortex-M Core Register Definitions + - Cortex-M functions + - Cortex-M instructions + - Cortex-M SIMD instructions + + The CMSIS Cortex-M4 Core Peripheral Access Layer contains C and assembly functions that ease + access to the Cortex-M Core + */ + +/** \defgroup CMSIS_MISRA_Exceptions CMSIS MISRA-C:2004 Compliance Exceptions + CMSIS violates following MISRA-C2004 Rules: + + - Violates MISRA 2004 Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + - Violates MISRA 2004 Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + - Violates MISRA 2004 Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** \defgroup CMSIS_core_definitions CMSIS Core Definitions + This file defines all structures and symbols for CMSIS core: + - CMSIS version number + - Cortex-M core + - Cortex-M core Revision Number + @{ + */ + +/* CMSIS CM4 definitions */ +#define __CM4_CMSIS_VERSION_MAIN (0x02) /*!< [31:16] CMSIS HAL main version */ +#define __CM4_CMSIS_VERSION_SUB (0x10) /*!< [15:0] CMSIS HAL sub version */ +#define __CM4_CMSIS_VERSION ((__CM4_CMSIS_VERSION_MAIN << 16) | __CM4_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number */ + +#define __CORTEX_M (0x04) /*!< Cortex core */ + + +#if defined ( __CC_ARM ) + #define __ASM __asm /*!< asm keyword for ARM Compiler */ + #define __INLINE __inline /*!< inline keyword for ARM Compiler */ + +#elif defined ( __ICCARM__ ) + #define __ASM __asm /*!< asm keyword for IAR Compiler */ + #define __INLINE inline /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */ + +#elif defined ( __GNUC__ ) + #define __ASM __asm /*!< asm keyword for GNU Compiler */ + #define __INLINE inline /*!< inline keyword for GNU Compiler */ + +#elif defined ( __TASKING__ ) + #define __ASM __asm /*!< asm keyword for TASKING Compiler */ + #define __INLINE inline /*!< inline keyword for TASKING Compiler */ + +#endif + +/*!< __FPU_USED to be checked prior to making use of FPU specific registers and functions */ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if (__FPU_PRESENT == 1) + #define __FPU_USED 1 + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0 + #endif + #else + #define __FPU_USED 0 + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if (__FPU_PRESENT == 1) + #define __FPU_USED 1 + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0 + #endif + #else + #define __FPU_USED 0 + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if (__FPU_PRESENT == 1) + #define __FPU_USED 1 + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0 + #endif + #else + #define __FPU_USED 0 + #endif + +#elif defined ( __TASKING__ ) + /* add preprocessor checks to define __FPU_USED */ + #define __FPU_USED 0 +#endif + +#include /*!< standard types definitions */ +#include /*!< Core Instruction Access */ +#include /*!< Core Function Access */ +#include /*!< Compiler specific SIMD Intrinsics */ + +#endif /* __CORE_CM4_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM4_H_DEPENDANT +#define __CORE_CM4_H_DEPENDANT + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM4_REV + #define __CM4_REV 0x0000 + #warning "__CM4_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0 + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0 + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 4 + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0 + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +#ifdef __cplusplus + #define __I volatile /*!< defines 'read only' permissions */ +#else + #define __I volatile const /*!< defines 'read only' permissions */ +#endif +#define __O volatile /*!< defines 'write only' permissions */ +#define __IO volatile /*!< defines 'read / write' permissions */ + +/*@} end of group CMSIS_core_definitions */ + + + +/******************************************************************************* + * Register Abstraction + ******************************************************************************/ +/** \defgroup CMSIS_core_register CMSIS Core Register + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU Register +*/ + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CORE CMSIS Core + Type definitions for the Cortex-M Core Registers + @{ + */ + +/** \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ +#else + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ +#endif + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + + +/** \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + + +/** \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ +#if (__CORTEX_M != 0x04) + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ +#else + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ +#endif + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + + +/** \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/*@} end of group CMSIS_CORE */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC CMSIS NVIC + Type definitions for the Cortex-M NVIC Registers + @{ + */ + +/** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IO uint32_t ISER[8]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24]; + __IO uint32_t ICER[8]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24]; + __IO uint32_t ISPR[8]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24]; + __IO uint32_t ICPR[8]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24]; + __IO uint32_t IABR[8]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56]; + __IO uint8_t IP[240]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644]; + __O uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0 /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL << NVIC_STIR_INTID_Pos) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SCB CMSIS SCB + Type definitions for the Cortex-M System Control Block Registers + @{ + */ + +/** \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __I uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IO uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IO uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IO uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IO uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IO uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IO uint8_t SHP[12]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IO uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IO uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IO uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IO uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IO uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IO uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IO uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __I uint32_t PFR[2]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __I uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __I uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __I uint32_t MMFR[4]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __I uint32_t ISAR[5]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5]; + __IO uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16 /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Registers Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* SCB Hard Fault Status Registers Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB CMSIS System Control and ID Register not in the SCB + Type definitions for the Cortex-M System Control and ID Register not in the SCB + @{ + */ + +/** \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1]; + __I uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IO uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0 /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL << SCnSCB_ICTR_INTLINESNUM_Pos) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISOOFP_Pos 9 /*!< ACTLR: DISOOFP Position */ +#define SCnSCB_ACTLR_DISOOFP_Msk (1UL << SCnSCB_ACTLR_DISOOFP_Pos) /*!< ACTLR: DISOOFP Mask */ + +#define SCnSCB_ACTLR_DISFPCA_Pos 8 /*!< ACTLR: DISFPCA Position */ +#define SCnSCB_ACTLR_DISFPCA_Msk (1UL << SCnSCB_ACTLR_DISFPCA_Pos) /*!< ACTLR: DISFPCA Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2 /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1 /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0 /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL << SCnSCB_ACTLR_DISMCYCINT_Pos) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick CMSIS SysTick + Type definitions for the Cortex-M System Timer Registers + @{ + */ + +/** \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IO uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IO uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __I uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_ITM CMSIS ITM + Type definitions for the Cortex-M Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __O union + { + __O uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __O uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __O uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864]; + __IO uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15]; + __IO uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15]; + __IO uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0 /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL << ITM_TPR_PRIVMASK_Pos) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23 /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16 /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10 /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8 /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4 /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_TXENA_Pos 3 /*!< ITM TCR: TXENA Position */ +#define ITM_TCR_TXENA_Msk (1UL << ITM_TCR_TXENA_Pos) /*!< ITM TCR: TXENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2 /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1 /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0 /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL << ITM_TCR_ITMENA_Pos) /*!< ITM TCR: ITM Enable bit Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +#if (__MPU_PRESENT == 1) +/** \ingroup CMSIS_core_register + \defgroup CMSIS_MPU CMSIS MPU + Type definitions for the Cortex-M Memory Protection Unit (MPU) + @{ + */ + +/** \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __I uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IO uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IO uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IO uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IO uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IO uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IO uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IO uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IO uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IO uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IO uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register */ +#define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register */ +#define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register */ +#define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register */ +#define MPU_RBAR_ADDR_Pos 5 /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register */ +#define MPU_RASR_ATTRS_Pos 16 /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0 /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL << MPU_RASR_ENABLE_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if (__FPU_PRESENT == 1) +/** \ingroup CMSIS_core_register + \defgroup CMSIS_FPU CMSIS FPU + Type definitions for the Cortex-M Floating Point Unit (FPU) + @{ + */ + +/** \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1]; + __IO uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IO uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IO uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __I uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __I uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ +} FPU_Type; + +/* Floating-Point Context Control Register */ +#define FPU_FPCCR_ASPEN_Pos 31 /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30 /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8 /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6 /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5 /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4 /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3 /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1 /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0 /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL << FPU_FPCCR_LSPACT_Pos) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register */ +#define FPU_FPCAR_ADDRESS_Pos 3 /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register */ +#define FPU_FPDSCR_AHP_Pos 26 /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25 /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24 /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22 /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28 /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24 /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20 /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16 /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12 /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8 /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4 /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0 /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL << FPU_MVFR0_A_SIMD_registers_Pos) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28 /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24 /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4 /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0 /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL << FPU_MVFR1_FtZ_mode_Pos) /*!< MVFR1: FtZ mode bits Mask */ + +/*@} end of group CMSIS_FPU */ +#endif + + +/** \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug CMSIS Core Debug + Type definitions for the Cortex-M Core Debug Registers + @{ + */ + +/** \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IO uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __O uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IO uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IO uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register */ +#define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** \ingroup CMSIS_core_register + @{ + */ + +/* Memory mapping of Cortex-M4 Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if (__MPU_PRESENT == 1) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#if (__FPU_PRESENT == 1) + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + ******************************************************************************/ +/** \defgroup CMSIS_Core_FunctionInterface CMSIS Core Function Interface + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions +*/ + + + +/* ########################## NVIC functions #################################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions CMSIS Core NVIC Functions + @{ + */ + +/** \brief Set Priority Grouping + + This function sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + + \param [in] PriorityGroup Priority grouping field + */ +static __INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FA << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ + SCB->AIRCR = reg_value; +} + + +/** \brief Get Priority Grouping + + This function gets the priority grouping from NVIC Interrupt Controller. + Priority grouping is SCB->AIRCR [10:8] PRIGROUP field. + + \return Priority grouping field + */ +static __INLINE uint32_t NVIC_GetPriorityGrouping(void) +{ + return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ +} + + +/** \brief Enable External Interrupt + + This function enables a device specific interrupt in the NVIC interrupt controller. + The interrupt number cannot be a negative value. + + \param [in] IRQn Number of the external interrupt to enable + */ +static __INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) +{ +/* NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); enable interrupt */ + NVIC->ISER[(uint32_t)((int32_t)IRQn) >> 5] = (uint32_t)(1 << ((uint32_t)((int32_t)IRQn) & (uint32_t)0x1F)); /* enable interrupt */ +} + + +/** \brief Disable External Interrupt + + This function disables a device specific interrupt in the NVIC interrupt controller. + The interrupt number cannot be a negative value. + + \param [in] IRQn Number of the external interrupt to disable + */ +static __INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) +{ + NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ +} + + +/** \brief Get Pending Interrupt + + This function reads the pending register in the NVIC and returns the pending bit + for the specified interrupt. + + \param [in] IRQn Number of the interrupt for get pending + \return 0 Interrupt status is not pending + \return 1 Interrupt status is pending + */ +static __INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ +} + + +/** \brief Set Pending Interrupt + + This function sets the pending bit for the specified interrupt. + The interrupt number cannot be a negative value. + + \param [in] IRQn Number of the interrupt for set pending + */ +static __INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ +} + + +/** \brief Clear Pending Interrupt + + This function clears the pending bit for the specified interrupt. + The interrupt number cannot be a negative value. + + \param [in] IRQn Number of the interrupt for clear pending + */ +static __INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ +} + + +/** \brief Get Active Interrupt + + This function reads the active register in NVIC and returns the active bit. + \param [in] IRQn Number of the interrupt for get active + \return 0 Interrupt status is not active + \return 1 Interrupt status is active + */ +static __INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) +{ + return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ +} + + +/** \brief Set Interrupt Priority + + This function sets the priority for the specified interrupt. The interrupt + number can be positive to specify an external (device specific) + interrupt, or negative to specify an internal (core) interrupt. + + Note: The priority cannot be set for every core interrupt. + + \param [in] IRQn Number of the interrupt for set priority + \param [in] priority Priority to set + */ +static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if(IRQn < 0) { + SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M System Interrupts */ + else { + NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ +} + + +/** \brief Get Interrupt Priority + + This function reads the priority for the specified interrupt. The interrupt + number can be positive to specify an external (device specific) + interrupt, or negative to specify an internal (core) interrupt. + + The returned priority value is automatically aligned to the implemented + priority bits of the microcontroller. + + \param [in] IRQn Number of the interrupt for get priority + \return Interrupt Priority + */ +static __INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) +{ + + if(IRQn < 0) { + return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M system interrupts */ + else { + return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ +} + + +/** \brief Encode Priority + + This function encodes the priority for an interrupt with the given priority group, + preemptive priority value and sub priority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. + + The returned priority value can be used for NVIC_SetPriority(...) function + + \param [in] PriorityGroup Used priority group + \param [in] PreemptPriority Preemptive priority value (starting from 0) + \param [in] SubPriority Sub priority value (starting from 0) + \return Encoded priority for the interrupt + */ +static __INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; + SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; + + return ( + ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | + ((SubPriority & ((1 << (SubPriorityBits )) - 1))) + ); +} + + +/** \brief Decode Priority + + This function decodes an interrupt priority value with the given priority group to + preemptive priority value and sub priority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. + + The priority value can be retrieved with NVIC_GetPriority(...) function + + \param [in] Priority Priority value + \param [in] PriorityGroup Used priority group + \param [out] pPreemptPriority Preemptive priority value (starting from 0) + \param [out] pSubPriority Sub priority value (starting from 0) + */ +static __INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; + SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; + + *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); + *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); +} + + +/** \brief System Reset + + This function initiate a system reset request to reset the MCU. + */ +static __INLINE void NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + while(1); /* wait until reset */ +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions CMSIS Core SysTick Functions + @{ + */ + +#if (__Vendor_SysTickConfig == 0) + +/** \brief System Tick Configuration + + This function initialises the system tick timer and its interrupt and start the system tick timer. + Counter is in free running mode to generate periodical interrupts. + + \param [in] ticks Number of ticks between two interrupts + \return 0 Function succeeded + \return 1 Function failed + */ +static __INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ + + SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */ + SysTick->VAL = 0; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions CMSIS Core Debug Functions + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< external variable to receive characters */ +#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /*!< value identifying ITM_RxBuffer is ready for next character */ + + +/** \brief ITM Send Character + + This function transmits a character via the ITM channel 0. + It just returns when no debugger is connected that has booked the output. + It is blocking when a debugger is connected, but the previous character send is not transmitted. + + \param [in] ch Character to transmit + \return Character to transmit + */ +static __INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA_Msk) && /* Trace enabled */ + (ITM->TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */ + (ITM->TER & (1UL << 0) ) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0].u32 == 0); + ITM->PORT[0].u8 = (uint8_t) ch; + } + return (ch); +} + + +/** \brief ITM Receive Character + + This function inputs a character via external variable ITM_RxBuffer. + It just returns when no debugger is connected that has booked the output. + It is blocking when a debugger is connected, but the previous character send is not transmitted. + + \return Received character + \return -1 No character received + */ +static __INLINE int32_t ITM_ReceiveChar (void) { + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** \brief ITM Check Character + + This function checks external variable ITM_RxBuffer whether a character is available or not. + It returns '1' if a character is available and '0' if no character is available. + + \return 0 No character available + \return 1 Character available + */ +static __INLINE int32_t ITM_CheckChar (void) { + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) { + return (0); /* no character available */ + } else { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + +#endif /* __CORE_CM4_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ + +#ifdef __cplusplus +} +#endif diff --git a/hardware/sam/system/CMSIS/Include/core_cm4_simd.h b/hardware/sam/system/CMSIS/Include/core_cm4_simd.h new file mode 100644 index 000000000..e7b676522 --- /dev/null +++ b/hardware/sam/system/CMSIS/Include/core_cm4_simd.h @@ -0,0 +1,701 @@ +/**************************************************************************//** + * @file core_cm4_simd.h + * @brief CMSIS Cortex-M4 SIMD Header File + * @version V2.10 + * @date 19. July 2011 + * + * @note + * Copyright (C) 2010-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __CORE_CM4_SIMD_H +#define __CORE_CM4_SIMD_H + + +/******************************************************************************* + * Hardware Abstraction Layer + ******************************************************************************/ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ +/* ARM armcc specific functions */ + +/*------ CM4 SOMD Intrinsics -----------------------------------------------------*/ +#define __SADD8 __sadd8 +#define __QADD8 __qadd8 +#define __SHADD8 __shadd8 +#define __UADD8 __uadd8 +#define __UQADD8 __uqadd8 +#define __UHADD8 __uhadd8 +#define __SSUB8 __ssub8 +#define __QSUB8 __qsub8 +#define __SHSUB8 __shsub8 +#define __USUB8 __usub8 +#define __UQSUB8 __uqsub8 +#define __UHSUB8 __uhsub8 +#define __SADD16 __sadd16 +#define __QADD16 __qadd16 +#define __SHADD16 __shadd16 +#define __UADD16 __uadd16 +#define __UQADD16 __uqadd16 +#define __UHADD16 __uhadd16 +#define __SSUB16 __ssub16 +#define __QSUB16 __qsub16 +#define __SHSUB16 __shsub16 +#define __USUB16 __usub16 +#define __UQSUB16 __uqsub16 +#define __UHSUB16 __uhsub16 +#define __SASX __sasx +#define __QASX __qasx +#define __SHASX __shasx +#define __UASX __uasx +#define __UQASX __uqasx +#define __UHASX __uhasx +#define __SSAX __ssax +#define __QSAX __qsax +#define __SHSAX __shsax +#define __USAX __usax +#define __UQSAX __uqsax +#define __UHSAX __uhsax +#define __USAD8 __usad8 +#define __USADA8 __usada8 +#define __SSAT16 __ssat16 +#define __USAT16 __usat16 +#define __UXTB16 __uxtb16 +#define __UXTAB16 __uxtab16 +#define __SXTB16 __sxtb16 +#define __SXTAB16 __sxtab16 +#define __SMUAD __smuad +#define __SMUADX __smuadx +#define __SMLAD __smlad +#define __SMLADX __smladx +#define __SMLALD __smlald +#define __SMLALDX __smlaldx +#define __SMUSD __smusd +#define __SMUSDX __smusdx +#define __SMLSD __smlsd +#define __SMLSDX __smlsdx +#define __SMLSLD __smlsld +#define __SMLSLDX __smlsldx +#define __SEL __sel +#define __QADD __qadd +#define __QSUB __qsub + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + + +/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ + + + +#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ +/* IAR iccarm specific functions */ + +#include + +/*------ CM4 SIMDDSP Intrinsics -----------------------------------------------------*/ +/* intrinsic __SADD8 see intrinsics.h */ +/* intrinsic __QADD8 see intrinsics.h */ +/* intrinsic __SHADD8 see intrinsics.h */ +/* intrinsic __UADD8 see intrinsics.h */ +/* intrinsic __UQADD8 see intrinsics.h */ +/* intrinsic __UHADD8 see intrinsics.h */ +/* intrinsic __SSUB8 see intrinsics.h */ +/* intrinsic __QSUB8 see intrinsics.h */ +/* intrinsic __SHSUB8 see intrinsics.h */ +/* intrinsic __USUB8 see intrinsics.h */ +/* intrinsic __UQSUB8 see intrinsics.h */ +/* intrinsic __UHSUB8 see intrinsics.h */ +/* intrinsic __SADD16 see intrinsics.h */ +/* intrinsic __QADD16 see intrinsics.h */ +/* intrinsic __SHADD16 see intrinsics.h */ +/* intrinsic __UADD16 see intrinsics.h */ +/* intrinsic __UQADD16 see intrinsics.h */ +/* intrinsic __UHADD16 see intrinsics.h */ +/* intrinsic __SSUB16 see intrinsics.h */ +/* intrinsic __QSUB16 see intrinsics.h */ +/* intrinsic __SHSUB16 see intrinsics.h */ +/* intrinsic __USUB16 see intrinsics.h */ +/* intrinsic __UQSUB16 see intrinsics.h */ +/* intrinsic __UHSUB16 see intrinsics.h */ +/* intrinsic __SASX see intrinsics.h */ +/* intrinsic __QASX see intrinsics.h */ +/* intrinsic __SHASX see intrinsics.h */ +/* intrinsic __UASX see intrinsics.h */ +/* intrinsic __UQASX see intrinsics.h */ +/* intrinsic __UHASX see intrinsics.h */ +/* intrinsic __SSAX see intrinsics.h */ +/* intrinsic __QSAX see intrinsics.h */ +/* intrinsic __SHSAX see intrinsics.h */ +/* intrinsic __USAX see intrinsics.h */ +/* intrinsic __UQSAX see intrinsics.h */ +/* intrinsic __UHSAX see intrinsics.h */ +/* intrinsic __USAD8 see intrinsics.h */ +/* intrinsic __USADA8 see intrinsics.h */ +/* intrinsic __SSAT16 see intrinsics.h */ +/* intrinsic __USAT16 see intrinsics.h */ +/* intrinsic __UXTB16 see intrinsics.h */ +/* intrinsic __SXTB16 see intrinsics.h */ +/* intrinsic __UXTAB16 see intrinsics.h */ +/* intrinsic __SXTAB16 see intrinsics.h */ +/* intrinsic __SMUAD see intrinsics.h */ +/* intrinsic __SMUADX see intrinsics.h */ +/* intrinsic __SMLAD see intrinsics.h */ +/* intrinsic __SMLADX see intrinsics.h */ +/* intrinsic __SMLALD see intrinsics.h */ +/* intrinsic __SMLALDX see intrinsics.h */ +/* intrinsic __SMUSD see intrinsics.h */ +/* intrinsic __SMUSDX see intrinsics.h */ +/* intrinsic __SMLSD see intrinsics.h */ +/* intrinsic __SMLSDX see intrinsics.h */ +/* intrinsic __SMLSLD see intrinsics.h */ +/* intrinsic __SMLSLDX see intrinsics.h */ +/* intrinsic __SEL see intrinsics.h */ +/* intrinsic __QADD see intrinsics.h */ +/* intrinsic __QSUB see intrinsics.h */ +/* intrinsic __PKHBT see intrinsics.h */ +/* intrinsic __PKHTB see intrinsics.h */ + +/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ + + + +#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ +/* GNU gcc specific functions */ + +/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __UASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __USAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +#define __USAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SMLALD(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ + (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ + }) + +#define __SMLALDX(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ + (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ + }) + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SMLSLD(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ + (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ + }) + +#define __SMLSLDX(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (__ARG3_L), "=r" (__ARG3_H) : "r" (__ARG1), "r" (__ARG2), "0" (__ARG3_L), "1" (__ARG3_H) ); \ + (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \ + }) + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __SEL (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __QADD(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__attribute__( ( always_inline ) ) static __INLINE uint32_t __QSUB(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +#define __PKHBT(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +#define __PKHTB(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + if (ARG3 == 0) \ + __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ + else \ + __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ + + + +#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/ +/* TASKING carm specific functions */ + + +/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/ +/* not yet supported */ +/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/ + + +#endif + +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#endif /* __CORE_CM4_SIMD_H */ + +#ifdef __cplusplus +} +#endif diff --git a/hardware/sam/system/CMSIS/Include/core_cmFunc.h b/hardware/sam/system/CMSIS/Include/core_cmFunc.h new file mode 100644 index 000000000..88819f9dd --- /dev/null +++ b/hardware/sam/system/CMSIS/Include/core_cmFunc.h @@ -0,0 +1,609 @@ +/**************************************************************************//** + * @file core_cmFunc.h + * @brief CMSIS Cortex-M Core Function Access Header File + * @version V2.10 + * @date 26. July 2011 + * + * @note + * Copyright (C) 2009-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#ifndef __CORE_CMFUNC_H +#define __CORE_CMFUNC_H + + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ +/* ARM armcc specific functions */ + +#if (__ARMCC_VERSION < 400677) + #error "Please use ARM Compiler Toolchain V4.0.677 or later!" +#endif + +/* intrinsic void __enable_irq(); */ +/* intrinsic void __disable_irq(); */ + +/** \brief Get Control Register + + This function returns the content of the Control Register. + + \return Control Register value + */ +static __INLINE uint32_t __get_CONTROL(void) +{ + register uint32_t __regControl __ASM("control"); + return(__regControl); +} + + +/** \brief Set Control Register + + This function writes the given value to the Control Register. + + \param [in] control Control Register value to set + */ +static __INLINE void __set_CONTROL(uint32_t control) +{ + register uint32_t __regControl __ASM("control"); + __regControl = control; +} + + +/** \brief Get ISPR Register + + This function returns the content of the ISPR Register. + + \return ISPR Register value + */ +static __INLINE uint32_t __get_IPSR(void) +{ + register uint32_t __regIPSR __ASM("ipsr"); + return(__regIPSR); +} + + +/** \brief Get APSR Register + + This function returns the content of the APSR Register. + + \return APSR Register value + */ +static __INLINE uint32_t __get_APSR(void) +{ + register uint32_t __regAPSR __ASM("apsr"); + return(__regAPSR); +} + + +/** \brief Get xPSR Register + + This function returns the content of the xPSR Register. + + \return xPSR Register value + */ +static __INLINE uint32_t __get_xPSR(void) +{ + register uint32_t __regXPSR __ASM("xpsr"); + return(__regXPSR); +} + + +/** \brief Get Process Stack Pointer + + This function returns the current value of the Process Stack Pointer (PSP). + + \return PSP Register value + */ +static __INLINE uint32_t __get_PSP(void) +{ + register uint32_t __regProcessStackPointer __ASM("psp"); + return(__regProcessStackPointer); +} + + +/** \brief Set Process Stack Pointer + + This function assigns the given value to the Process Stack Pointer (PSP). + + \param [in] topOfProcStack Process Stack Pointer value to set + */ +static __INLINE void __set_PSP(uint32_t topOfProcStack) +{ + register uint32_t __regProcessStackPointer __ASM("psp"); + __regProcessStackPointer = topOfProcStack; +} + + +/** \brief Get Main Stack Pointer + + This function returns the current value of the Main Stack Pointer (MSP). + + \return MSP Register value + */ +static __INLINE uint32_t __get_MSP(void) +{ + register uint32_t __regMainStackPointer __ASM("msp"); + return(__regMainStackPointer); +} + + +/** \brief Set Main Stack Pointer + + This function assigns the given value to the Main Stack Pointer (MSP). + + \param [in] topOfMainStack Main Stack Pointer value to set + */ +static __INLINE void __set_MSP(uint32_t topOfMainStack) +{ + register uint32_t __regMainStackPointer __ASM("msp"); + __regMainStackPointer = topOfMainStack; +} + + +/** \brief Get Priority Mask + + This function returns the current state of the priority mask bit from the Priority Mask Register. + + \return Priority Mask value + */ +static __INLINE uint32_t __get_PRIMASK(void) +{ + register uint32_t __regPriMask __ASM("primask"); + return(__regPriMask); +} + + +/** \brief Set Priority Mask + + This function assigns the given value to the Priority Mask Register. + + \param [in] priMask Priority Mask + */ +static __INLINE void __set_PRIMASK(uint32_t priMask) +{ + register uint32_t __regPriMask __ASM("primask"); + __regPriMask = (priMask); +} + + +#if (__CORTEX_M >= 0x03) + +/** \brief Enable FIQ + + This function enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __enable_fault_irq __enable_fiq + + +/** \brief Disable FIQ + + This function disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __disable_fault_irq __disable_fiq + + +/** \brief Get Base Priority + + This function returns the current value of the Base Priority register. + + \return Base Priority register value + */ +static __INLINE uint32_t __get_BASEPRI(void) +{ + register uint32_t __regBasePri __ASM("basepri"); + return(__regBasePri); +} + + +/** \brief Set Base Priority + + This function assigns the given value to the Base Priority register. + + \param [in] basePri Base Priority value to set + */ +static __INLINE void __set_BASEPRI(uint32_t basePri) +{ + register uint32_t __regBasePri __ASM("basepri"); + __regBasePri = (basePri & 0xff); +} + + +/** \brief Get Fault Mask + + This function returns the current value of the Fault Mask register. + + \return Fault Mask register value + */ +static __INLINE uint32_t __get_FAULTMASK(void) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + return(__regFaultMask); +} + + +/** \brief Set Fault Mask + + This function assigns the given value to the Fault Mask register. + + \param [in] faultMask Fault Mask value to set + */ +static __INLINE void __set_FAULTMASK(uint32_t faultMask) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + __regFaultMask = (faultMask & (uint32_t)1); +} + +#endif /* (__CORTEX_M >= 0x03) */ + + +#if (__CORTEX_M == 0x04) + +/** \brief Get FPSCR + + This function returns the current value of the Floating Point Status/Control register. + + \return Floating Point Status/Control register value + */ +static __INLINE uint32_t __get_FPSCR(void) +{ +#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + register uint32_t __regfpscr __ASM("fpscr"); + return(__regfpscr); +#else + return(0); +#endif +} + + +/** \brief Set FPSCR + + This function assigns the given value to the Floating Point Status/Control register. + + \param [in] fpscr Floating Point Status/Control value to set + */ +static __INLINE void __set_FPSCR(uint32_t fpscr) +{ +#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + register uint32_t __regfpscr __ASM("fpscr"); + __regfpscr = (fpscr); +#endif +} + +#endif /* (__CORTEX_M == 0x04) */ + + +#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ +/* IAR iccarm specific functions */ + +#include + +#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ +/* GNU gcc specific functions */ + +/** \brief Enable IRQ Interrupts + + This function enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__attribute__( ( always_inline ) ) static __INLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i"); +} + + +/** \brief Disable IRQ Interrupts + + This function disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__attribute__( ( always_inline ) ) static __INLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i"); +} + + +/** \brief Get Control Register + + This function returns the content of the Control Register. + + \return Control Register value + */ +__attribute__( ( always_inline ) ) static __INLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +/** \brief Set Control Register + + This function writes the given value to the Control Register. + + \param [in] control Control Register value to set + */ +__attribute__( ( always_inline ) ) static __INLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) ); +} + + +/** \brief Get ISPR Register + + This function returns the content of the ISPR Register. + + \return ISPR Register value + */ +__attribute__( ( always_inline ) ) static __INLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** \brief Get APSR Register + + This function returns the content of the APSR Register. + + \return APSR Register value + */ +__attribute__( ( always_inline ) ) static __INLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** \brief Get xPSR Register + + This function returns the content of the xPSR Register. + + \return xPSR Register value + */ +__attribute__( ( always_inline ) ) static __INLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** \brief Get Process Stack Pointer + + This function returns the current value of the Process Stack Pointer (PSP). + + \return PSP Register value + */ +__attribute__( ( always_inline ) ) static __INLINE uint32_t __get_PSP(void) +{ + register uint32_t result; + + __ASM volatile ("MRS %0, psp\n" : "=r" (result) ); + return(result); +} + + +/** \brief Set Process Stack Pointer + + This function assigns the given value to the Process Stack Pointer (PSP). + + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__attribute__( ( always_inline ) ) static __INLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0\n" : : "r" (topOfProcStack) ); +} + + +/** \brief Get Main Stack Pointer + + This function returns the current value of the Main Stack Pointer (MSP). + + \return MSP Register value + */ +__attribute__( ( always_inline ) ) static __INLINE uint32_t __get_MSP(void) +{ + register uint32_t result; + + __ASM volatile ("MRS %0, msp\n" : "=r" (result) ); + return(result); +} + + +/** \brief Set Main Stack Pointer + + This function assigns the given value to the Main Stack Pointer (MSP). + + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__attribute__( ( always_inline ) ) static __INLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0\n" : : "r" (topOfMainStack) ); +} + + +/** \brief Get Priority Mask + + This function returns the current state of the priority mask bit from the Priority Mask Register. + + \return Priority Mask value + */ +__attribute__( ( always_inline ) ) static __INLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) ); + return(result); +} + + +/** \brief Set Priority Mask + + This function assigns the given value to the Priority Mask Register. + + \param [in] priMask Priority Mask + */ +__attribute__( ( always_inline ) ) static __INLINE void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) ); +} + + +#if (__CORTEX_M >= 0x03) + +/** \brief Enable FIQ + + This function enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__attribute__( ( always_inline ) ) static __INLINE void __enable_fault_irq(void) +{ + __ASM volatile ("cpsie f"); +} + + +/** \brief Disable FIQ + + This function disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__attribute__( ( always_inline ) ) static __INLINE void __disable_fault_irq(void) +{ + __ASM volatile ("cpsid f"); +} + + +/** \brief Get Base Priority + + This function returns the current value of the Base Priority register. + + \return Base Priority register value + */ +__attribute__( ( always_inline ) ) static __INLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_max" : "=r" (result) ); + return(result); +} + + +/** \brief Set Base Priority + + This function assigns the given value to the Base Priority register. + + \param [in] basePri Base Priority value to set + */ +__attribute__( ( always_inline ) ) static __INLINE void __set_BASEPRI(uint32_t value) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (value) ); +} + + +/** \brief Get Fault Mask + + This function returns the current value of the Fault Mask register. + + \return Fault Mask register value + */ +__attribute__( ( always_inline ) ) static __INLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +/** \brief Set Fault Mask + + This function assigns the given value to the Fault Mask register. + + \param [in] faultMask Fault Mask value to set + */ +__attribute__( ( always_inline ) ) static __INLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) ); +} + +#endif /* (__CORTEX_M >= 0x03) */ + + +#if (__CORTEX_M == 0x04) + +/** \brief Get FPSCR + + This function returns the current value of the Floating Point Status/Control register. + + \return Floating Point Status/Control register value + */ +__attribute__( ( always_inline ) ) static __INLINE uint32_t __get_FPSCR(void) +{ +#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + uint32_t result; + + __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + return(result); +#else + return(0); +#endif +} + + +/** \brief Set FPSCR + + This function assigns the given value to the Floating Point Status/Control register. + + \param [in] fpscr Floating Point Status/Control value to set + */ +__attribute__( ( always_inline ) ) static __INLINE void __set_FPSCR(uint32_t fpscr) +{ +#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) ); +#endif +} + +#endif /* (__CORTEX_M == 0x04) */ + + +#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/ +/* TASKING carm specific functions */ + +/* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all instrinsics, + * Including the CMSIS ones. + */ + +#endif + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +#endif /* __CORE_CMFUNC_H */ diff --git a/hardware/sam/system/CMSIS/Include/core_cmInstr.h b/hardware/sam/system/CMSIS/Include/core_cmInstr.h new file mode 100644 index 000000000..78d2ef80b --- /dev/null +++ b/hardware/sam/system/CMSIS/Include/core_cmInstr.h @@ -0,0 +1,585 @@ +/**************************************************************************//** + * @file core_cmInstr.h + * @brief CMSIS Cortex-M Core Instruction Access Header File + * @version V2.10 + * @date 19. July 2011 + * + * @note + * Copyright (C) 2009-2011 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#ifndef __CORE_CMINSTR_H +#define __CORE_CMINSTR_H + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ +/* ARM armcc specific functions */ + +#if (__ARMCC_VERSION < 400677) + #error "Please use ARM Compiler Toolchain V4.0.677 or later!" +#endif + + +/** \brief No Operation + + No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP __nop + + +/** \brief Wait For Interrupt + + Wait For Interrupt is a hint instruction that suspends execution + until one of a number of events occurs. + */ +#define __WFI __wfi + + +/** \brief Wait For Event + + Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE __wfe + + +/** \brief Send Event + + Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV __sev + + +/** \brief Instruction Synchronization Barrier + + Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or + memory, after the instruction has been completed. + */ +#define __ISB() __isb(0xF) + + +/** \brief Data Synchronization Barrier + + This function acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +#define __DSB() __dsb(0xF) + + +/** \brief Data Memory Barrier + + This function ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +#define __DMB() __dmb(0xF) + + +/** \brief Reverse byte order (32 bit) + + This function reverses the byte order in integer value. + + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV __rev + + +/** \brief Reverse byte order (16 bit) + + This function reverses the byte order in two unsigned short values. + + \param [in] value Value to reverse + \return Reversed value + */ +static __INLINE __ASM uint32_t __REV16(uint32_t value) +{ + rev16 r0, r0 + bx lr +} + + +/** \brief Reverse byte order in signed short value + + This function reverses the byte order in a signed short value with sign extension to integer. + + \param [in] value Value to reverse + \return Reversed value + */ +static __INLINE __ASM int32_t __REVSH(int32_t value) +{ + revsh r0, r0 + bx lr +} + + +#if (__CORTEX_M >= 0x03) + +/** \brief Reverse bit order of value + + This function reverses the bit order of the given value. + + \param [in] value Value to reverse + \return Reversed value + */ +#define __RBIT __rbit + + +/** \brief LDR Exclusive (8 bit) + + This function performs a exclusive LDR command for 8 bit value. + + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) + + +/** \brief LDR Exclusive (16 bit) + + This function performs a exclusive LDR command for 16 bit values. + + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) + + +/** \brief LDR Exclusive (32 bit) + + This function performs a exclusive LDR command for 32 bit values. + + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) + + +/** \brief STR Exclusive (8 bit) + + This function performs a exclusive STR command for 8 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXB(value, ptr) __strex(value, ptr) + + +/** \brief STR Exclusive (16 bit) + + This function performs a exclusive STR command for 16 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXH(value, ptr) __strex(value, ptr) + + +/** \brief STR Exclusive (32 bit) + + This function performs a exclusive STR command for 32 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXW(value, ptr) __strex(value, ptr) + + +/** \brief Remove the exclusive lock + + This function removes the exclusive lock which is created by LDREX. + + */ +#define __CLREX __clrex + + +/** \brief Signed Saturate + + This function saturates a signed value. + + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __ssat + + +/** \brief Unsigned Saturate + + This function saturates an unsigned value. + + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT __usat + + +/** \brief Count leading zeros + + This function counts the number of leading zeros of a data value. + + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +#define __CLZ __clz + +#endif /* (__CORTEX_M >= 0x03) */ + + + +#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ +/* IAR iccarm specific functions */ + +#include + + +#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ +/* GNU gcc specific functions */ + +/** \brief No Operation + + No Operation does nothing. This instruction can be used for code alignment purposes. + */ +__attribute__( ( always_inline ) ) static __INLINE void __NOP(void) +{ + __ASM volatile ("nop"); +} + + +/** \brief Wait For Interrupt + + Wait For Interrupt is a hint instruction that suspends execution + until one of a number of events occurs. + */ +__attribute__( ( always_inline ) ) static __INLINE void __WFI(void) +{ + __ASM volatile ("wfi"); +} + + +/** \brief Wait For Event + + Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +__attribute__( ( always_inline ) ) static __INLINE void __WFE(void) +{ + __ASM volatile ("wfe"); +} + + +/** \brief Send Event + + Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +__attribute__( ( always_inline ) ) static __INLINE void __SEV(void) +{ + __ASM volatile ("sev"); +} + + +/** \brief Instruction Synchronization Barrier + + Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or + memory, after the instruction has been completed. + */ +__attribute__( ( always_inline ) ) static __INLINE void __ISB(void) +{ + __ASM volatile ("isb"); +} + + +/** \brief Data Synchronization Barrier + + This function acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +__attribute__( ( always_inline ) ) static __INLINE void __DSB(void) +{ + __ASM volatile ("dsb"); +} + + +/** \brief Data Memory Barrier + + This function ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +__attribute__( ( always_inline ) ) static __INLINE void __DMB(void) +{ + __ASM volatile ("dmb"); +} + + +/** \brief Reverse byte order (32 bit) + + This function reverses the byte order in integer value. + + \param [in] value Value to reverse + \return Reversed value + */ +__attribute__( ( always_inline ) ) static __INLINE uint32_t __REV(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + + +/** \brief Reverse byte order (16 bit) + + This function reverses the byte order in two unsigned short values. + + \param [in] value Value to reverse + \return Reversed value + */ +__attribute__( ( always_inline ) ) static __INLINE uint32_t __REV16(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + + +/** \brief Reverse byte order in signed short value + + This function reverses the byte order in a signed short value with sign extension to integer. + + \param [in] value Value to reverse + \return Reversed value + */ +__attribute__( ( always_inline ) ) static __INLINE int32_t __REVSH(int32_t value) +{ + uint32_t result; + + __ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + + +#if (__CORTEX_M >= 0x03) + +/** \brief Reverse bit order of value + + This function reverses the bit order of the given value. + + \param [in] value Value to reverse + \return Reversed value + */ +__attribute__( ( always_inline ) ) static __INLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + + +/** \brief LDR Exclusive (8 bit) + + This function performs a exclusive LDR command for 8 bit value. + + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__attribute__( ( always_inline ) ) static __INLINE uint8_t __LDREXB(volatile uint8_t *addr) +{ + uint8_t result; + + __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) ); + return(result); +} + + +/** \brief LDR Exclusive (16 bit) + + This function performs a exclusive LDR command for 16 bit values. + + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__attribute__( ( always_inline ) ) static __INLINE uint16_t __LDREXH(volatile uint16_t *addr) +{ + uint16_t result; + + __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) ); + return(result); +} + + +/** \brief LDR Exclusive (32 bit) + + This function performs a exclusive LDR command for 32 bit values. + + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__attribute__( ( always_inline ) ) static __INLINE uint32_t __LDREXW(volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) ); + return(result); +} + + +/** \brief STR Exclusive (8 bit) + + This function performs a exclusive STR command for 8 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__attribute__( ( always_inline ) ) static __INLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); + return(result); +} + + +/** \brief STR Exclusive (16 bit) + + This function performs a exclusive STR command for 16 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__attribute__( ( always_inline ) ) static __INLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexh %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); + return(result); +} + + +/** \brief STR Exclusive (32 bit) + + This function performs a exclusive STR command for 32 bit values. + + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__attribute__( ( always_inline ) ) static __INLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("strex %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); + return(result); +} + + +/** \brief Remove the exclusive lock + + This function removes the exclusive lock which is created by LDREX. + + */ +__attribute__( ( always_inline ) ) static __INLINE void __CLREX(void) +{ + __ASM volatile ("clrex"); +} + + +/** \brief Signed Saturate + + This function saturates a signed value. + + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** \brief Unsigned Saturate + + This function saturates an unsigned value. + + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** \brief Count leading zeros + + This function counts the number of leading zeros of a data value. + + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +__attribute__( ( always_inline ) ) static __INLINE uint8_t __CLZ(uint32_t value) +{ + uint8_t result; + + __ASM volatile ("clz %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + +#endif /* (__CORTEX_M >= 0x03) */ + + + + +#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/ +/* TASKING carm specific functions */ + +/* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all intrinsics, + * Including the CMSIS ones. + */ + +#endif + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + +#endif /* __CORE_CMINSTR_H */ diff --git a/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM0b_math.lib b/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM0b_math.lib new file mode 100644 index 000000000..5f6ebf829 Binary files /dev/null and b/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM0b_math.lib differ diff --git a/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM0l_math.lib b/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM0l_math.lib new file mode 100644 index 000000000..77f70750b Binary files /dev/null and b/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM0l_math.lib differ diff --git a/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM3b_math.lib b/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM3b_math.lib new file mode 100644 index 000000000..bad330612 Binary files /dev/null and b/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM3b_math.lib differ diff --git a/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM3l_math.lib b/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM3l_math.lib new file mode 100644 index 000000000..1139c730f Binary files /dev/null and b/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM3l_math.lib differ diff --git a/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM4b_math.lib b/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM4b_math.lib new file mode 100644 index 000000000..36e9098cc Binary files /dev/null and b/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM4b_math.lib differ diff --git a/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM4bf_math.lib b/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM4bf_math.lib new file mode 100644 index 000000000..914e0d2da Binary files /dev/null and b/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM4bf_math.lib differ diff --git a/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM4l_math.lib b/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM4l_math.lib new file mode 100644 index 000000000..7fb98ba7f Binary files /dev/null and b/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM4l_math.lib differ diff --git a/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM4lf_math.lib b/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM4lf_math.lib new file mode 100644 index 000000000..f5ddea42a Binary files /dev/null and b/hardware/sam/system/CMSIS/Lib/ARM/arm_cortexM4lf_math.lib differ diff --git a/hardware/sam/system/CMSIS/README.txt b/hardware/sam/system/CMSIS/README.txt new file mode 100644 index 000000000..b0416f548 --- /dev/null +++ b/hardware/sam/system/CMSIS/README.txt @@ -0,0 +1,34 @@ +* ------------------------------------------------------------------- +* Copyright (C) 2011 ARM Limited. All rights reserved. +* +* Date: 25 July 2011 +* Revision: V2.10 +* +* Project: Cortex Microcontroller Software Interface Standard (CMSIS) +* Title: Release Note for CMSIS +* +* ------------------------------------------------------------------- + + +NOTE - Open the index.html file to access CMSIS documentation + + +The Cortex Microcontroller Software Interface Standard (CMSIS) provides a single standard across all +Cortex-Mx processor series vendors. It enables code re-use and code sharing across software projects +and reduces time-to-market for new embedded applications. + +CMSIS is released under the terms of the end user license agreement ("CMSIS END USER LICENCE AGREEMENT.pdf"). +Any user of the software package is bound to the terms and conditions of the end user license agreement. + + +You will find the following sub-directories: + +Documentation - Contains CMSIS documentation. + +DSP_Lib - MDK project files, Examples and source files etc.. to build the + CMSIS DSP Software Library for Cortex-M0, Cortex-M3, Cortex-M4 processors. + +Include - CMSIS Core Support and CMSIS DSP Include Files. + +Lib - CMSIS DSP Binaries +--- \ No newline at end of file diff --git a/hardware/sam/system/CMSIS/index.htm b/hardware/sam/system/CMSIS/index.htm new file mode 100644 index 000000000..823b36164 --- /dev/null +++ b/hardware/sam/system/CMSIS/index.htm @@ -0,0 +1,115 @@ + + + +CMSIS Release Notes + + + + + + + + +

CMSIS Release Notes

+

Release Notes for CMSIS V2.00

+

November 2010

+ +

Information in this file, the accompany manuals, and software is
+ Copyright © ARM Ltd.
All rights reserved. +

+

+ +
+ +

Contents

+ + + + + + + \ No newline at end of file diff --git a/hardware/sam/system/libsam/build_gcc/Makefile b/hardware/sam/system/libsam/build_gcc/Makefile new file mode 100644 index 000000000..6beb5821d --- /dev/null +++ b/hardware/sam/system/libsam/build_gcc/Makefile @@ -0,0 +1,72 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Makefile for compiling libchip + +SUBMAKE_OPTIONS=--no-builtin-rules --no-builtin-variables + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- + +# libsam_sam3s4c_gcc_rel.a libsam_sam3u4e_gcc_rel.a +all: libsam_sam3s4c_gcc_dbg.a libsam_sam3u4e_gcc_dbg.a + +.PHONY: libsam_sam3s4c_gcc_dbg.a +libsam_sam3s4c_gcc_dbg.a: + @echo --- + @echo --- + @echo --- Making $@ + @echo --- + @$(MAKE) CHIP=__SAM3S4C__ DEBUG=1 $(SUBMAKE_OPTIONS) -f sam3.mk + +.PHONY: libsam_sam3s4c_gcc_rel.a +libsam_sam3s4c_gcc_rel.a: + @echo --- + @echo --- + @echo --- Making $@ + @echo --- + @$(MAKE) CHIP=__SAM3S4C__ $(SUBMAKE_OPTIONS) -f sam3.mk + +.PHONY: libsam_sam3u4e_gcc_dbg.a +libsam_sam3u4e_gcc_dbg.a: + @echo --- + @echo --- + @echo --- Making $@ + @echo --- + @$(MAKE) CHIP=__SAM3U4E__ DEBUG=1 $(SUBMAKE_OPTIONS) -f sam3.mk + +.PHONY: libsam_sam3u4e_gcc_rel.a +libsam_sam3u4e_gcc_rel.a: + @echo --- + @echo --- + @echo --- Making $@ + @echo --- + @$(MAKE) CHIP=__SAM3U4E__ $(SUBMAKE_OPTIONS) -f sam3.mk + +.PHONY: clean +clean: + @echo --- Cleaning sam3s4c release and debug + @$(MAKE) CHIP=__SAM3S4C__ $(SUBMAKE_OPTIONS) -f sam3.mk $@ + @$(MAKE) CHIP=__SAM3S4C__ DEBUG=1 $(SUBMAKE_OPTIONS) -f sam3.mk $@ + + @echo --- Cleaning sam3u4e release and debug + @$(MAKE) CHIP=__SAM3U4E__ $(SUBMAKE_OPTIONS) -f sam3.mk $@ + @$(MAKE) CHIP=__SAM3U4E__ DEBUG=1 $(SUBMAKE_OPTIONS) -f sam3.mk $@ + + diff --git a/hardware/sam/system/libsam/build_gcc/debug.mk b/hardware/sam/system/libsam/build_gcc/debug.mk new file mode 100644 index 000000000..d0716744a --- /dev/null +++ b/hardware/sam/system/libsam/build_gcc/debug.mk @@ -0,0 +1,25 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Optimization level +# -O1 Optimize +# -O2 Optimize even more +# -O3 Optimize yet more +# -O0 Reduce compilation time and make debugging produce the expected results +# -Os Optimize for size +OPTIMIZATION = -g -O0 -DDEBUG diff --git a/hardware/sam/system/libsam/build_gcc/gcc.mk b/hardware/sam/system/libsam/build_gcc/gcc.mk new file mode 100644 index 000000000..97d3eff99 --- /dev/null +++ b/hardware/sam/system/libsam/build_gcc/gcc.mk @@ -0,0 +1,57 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Tool suffix when cross-compiling +#CROSS_COMPILE = ../../CodeSourcery_arm/bin/arm-none-eabi- +#CROSS_COMPILE = C:/CodeSourcery_2011.03-42/bin/arm-none-eabi- +CROSS_COMPILE = $(ARM_GCC_TOOLCHAIN)/arm-none-eabi- + +# Compilation tools +AR = $(CROSS_COMPILE)ar +CC = $(CROSS_COMPILE)gcc +AS = $(CROSS_COMPILE)as +#LD = $(CROSS_COMPILE)ld +#SIZE = $(CROSS_COMPILE)size +NM = $(CROSS_COMPILE)nm +#OBJCOPY = $(CROSS_COMPILE)objcopy +RM=cs-rm -Rf +SEP=/ + +# Flags + +CFLAGS += -Wall -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int +CFLAGS += -Werror-implicit-function-declaration -Wmain -Wparentheses +CFLAGS += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused +CFLAGS += -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef +CFLAGS += -Wshadow -Wpointer-arith -Wbad-function-cast -Wwrite-strings +CFLAGS += -Wsign-compare -Waggregate-return -Wstrict-prototypes +CFLAGS += -Wmissing-prototypes -Wmissing-declarations +CFLAGS += -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations +CFLAGS += -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wlong-long +CFLAGS += -Wunreachable-code +CFLAGS += -Wcast-align +#CFLAGS += -Wmissing-noreturn +#CFLAGS += -Wconversion + +# To reduce application size use only integer printf function. +CFLAGS += -Dprintf=iprintf + +CFLAGS += --param max-inline-insns-single=500 -mcpu=cortex-m3 -mthumb -mlong-calls -ffunction-sections +CFLAGS += $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) + +ASFLAGS = -mcpu=cortex-m3 -mthumb -Wall -a -g $(INCLUDES) diff --git a/hardware/sam/system/libsam/build_gcc/release.mk b/hardware/sam/system/libsam/build_gcc/release.mk new file mode 100644 index 000000000..0d15157f4 --- /dev/null +++ b/hardware/sam/system/libsam/build_gcc/release.mk @@ -0,0 +1,25 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Optimization level +# -O1 Optimize +# -O2 Optimize even more +# -O3 Optimize yet more +# -O0 Reduce compilation time and make debugging produce the expected results +# -Os Optimize for size +OPTIMIZATION = -Os diff --git a/hardware/sam/system/libsam/build_gcc/sam3.mk b/hardware/sam/system/libsam/build_gcc/sam3.mk new file mode 100644 index 000000000..6e9c4fb51 --- /dev/null +++ b/hardware/sam/system/libsam/build_gcc/sam3.mk @@ -0,0 +1,175 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Makefile for compiling libchip +.SUFFIXES: .o .a .c .s +SUB_MAKEFILES=debug.mk gcc.mk release.mk win.mk sam3s.mk + +LIBNAME=libsam +TOOLCHAIN=gcc + +ifeq ($(CHIP),) +$(error CHIP not defined) +endif + +#CHIP_NAME=$(subst __,,$(CHIP)) +#CHIP_NAME=$(subst __,,$(call lc,$(CHIP))) + +#------------------------------------------------------------------------------- +# Path +#------------------------------------------------------------------------------- + +# Output directories +#OUTPUT_BIN = ../lib +OUTPUT_BIN = ../../../cores/sam + +# Libraries +PROJECT_BASE_PATH = .. +CMSIS_BASE_PATH = $(PROJECT_BASE_PATH)/../CMSIS/Include + +ifeq ($(CHIP), __SAM3S4C__) +CHIP_NAME=sam3s4c +CHIP_SERIE=sam3s +else ifeq ($(CHIP), __SAM3U4E__) +CHIP_NAME=sam3u4e +CHIP_SERIE=sam3u +else ifeq ($(CHIP), __SAM3N4C__) +CHIP_NAME=sam3n4c +CHIP_SERIE=sam3n +else ifeq ($(CHIP), __SAM3X8H__) +CHIP_NAME=sam3x8h +CHIP_SERIE=sam3xa +else +endif + +CMSIS_CHIP_PATH=$(PROJECT_BASE_PATH)/cmsis/$(CHIP_SERIE) + +#------------------------------------------------------------------------------- +# Files +#------------------------------------------------------------------------------- + +vpath %.h $(PROJECT_BASE_PATH)/include $(PROJECT_BASE_PATH)/../cmsis/$(CHIP_SERIE)/include +vpath %.c $(PROJECT_BASE_PATH)/source $(CMSIS_BASE_PATH) $(CMSIS_CHIP_PATH)/source/templates $(CMSIS_CHIP_PATH)/source/templates + +VPATH+=$(PROJECT_BASE_PATH)/source +VPATH+=$(CMSIS_BASE_PATH) +VPATH+=$(CMSIS_CHIP_PATH)/include +VPATH+=$(CMSIS_CHIP_PATH)/source/templates +VPATH+=$(CMSIS_CHIP_PATH)/source/templates/gcc + +INCLUDES = -I$(PROJECT_BASE_PATH) +INCLUDES += -I$(PROJECT_BASE_PATH)/include +INCLUDES += -I$(CMSIS_BASE_PATH) +INCLUDES += -I$(CMSIS_CHIP_PATH)/include +INCLUDES += -I$(CMSIS_CHIP_PATH)/source/templates + +#------------------------------------------------------------------------------- +ifdef DEBUG +include debug.mk +else +include release.mk +endif + +#------------------------------------------------------------------------------- +# Tools +#------------------------------------------------------------------------------- + +include $(TOOLCHAIN).mk + +#------------------------------------------------------------------------------- +ifdef DEBUG +OUTPUT_OBJ=debug +OUTPUT_LIB=$(LIBNAME)_$(CHIP_NAME)_$(TOOLCHAIN)_dbg.a +else +OUTPUT_OBJ=release +OUTPUT_LIB=$(LIBNAME)_$(CHIP_NAME)_$(TOOLCHAIN)_rel.a +endif + +OUTPUT_PATH=$(OUTPUT_OBJ)_$(CHIP_NAME) + +#------------------------------------------------------------------------------- +# C source files and objects +#------------------------------------------------------------------------------- +C_SRC=$(wildcard $(PROJECT_BASE_PATH)/source/*.c) +C_SRC+=$(wildcard $(CMSIS_CHIP_PATH)/source/templates/*.c) +C_SRC+=$(wildcard $(CMSIS_CHIP_PATH)/source/templates/gcc/*.c) + +C_OBJ_TEMP=$(patsubst %.c, %.o, $(notdir $(C_SRC))) + +# during development, remove some files +C_OBJ_FILTER=pio_it.o adc.o + +C_OBJ=$(filter-out $(C_OBJ_FILTER), $(C_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# Assembler source files and objects +#------------------------------------------------------------------------------- +A_SRC=$(wildcard $(PROJECT_BASE_PATH)/source/*.s) + +A_OBJ_TEMP=$(patsubst %.s, %.o, $(notdir $(A_SRC))) + +# during development, remove some files +A_OBJ_FILTER= + +A_OBJ=$(filter-out $(A_OBJ_FILTER), $(A_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- +all: $(CHIP) + +$(CHIP): create_output $(OUTPUT_LIB) + +.PHONY: create_output +create_output: + @echo --- Preparing $(CHIP) files $(OUTPUT_PATH) $(OUTPUT_BIN) + @echo ------------------------- + @echo *$(C_SRC) + @echo ------------------------- + @echo *$(C_OBJ) + @echo ------------------------- +# @echo *$(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) +# @echo ------------------------- +# @echo *$(A_SRC) +# @echo ------------------------- + + -@mkdir $(subst /,$(SEP),$(OUTPUT_BIN)) 1>NUL 2>&1 + -@mkdir $(OUTPUT_PATH) 1>NUL 2>&1 + +$(addprefix $(OUTPUT_PATH)/,$(C_OBJ)): $(OUTPUT_PATH)/%.o: %.c +# "$(CC)" -v -c $(CFLAGS) -Wa,aln=$(subst .o,.s,$@) $< -o $@ +# @"$(CC)" -c $(CFLAGS) $< -o $@ + "$(CC)" -c $(CFLAGS) $< -o $@ + +$(addprefix $(OUTPUT_PATH)/,$(A_OBJ)): $(OUTPUT_PATH)/%.o: %.s + @"$(AS)" -c $(ASFLAGS) $< -o $@ + +$(OUTPUT_LIB): $(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(A_OBJ)) + @"$(AR)" -r "$(OUTPUT_BIN)/$@" $^ + @"$(NM)" "$(OUTPUT_BIN)/$@" > "$(OUTPUT_BIN)/$@.txt" + +.PHONY: clean +clean: + @echo --- Cleaning $(CHIP) files + -@$(RM) $(OUTPUT_PATH) 1>NUL 2>&1 + -@$(RM) $(subst /,$(SEP),$(OUTPUT_BIN)/$(OUTPUT_LIB)) 1>NUL 2>&1 + -@$(RM) $(subst /,$(SEP),$(OUTPUT_BIN)/$(OUTPUT_LIB)).txt 1>NUL 2>&1 + +# dependencies +$(addprefix $(OUTPUT_PATH)/,$(C_OBJ)): $(OUTPUT_PATH)/%.o: $(PROJECT_BASE_PATH)/chip.h $(wildcard $(PROJECT_BASE_PATH)/include/*.h) $(wildcard $(CMSIS_BASE_PATH)/*.h) + diff --git a/hardware/sam/system/libsam/build_iar/libsam.ewd b/hardware/sam/system/libsam/build_iar/libsam.ewd new file mode 100644 index 000000000..2570bbc89 --- /dev/null +++ b/hardware/sam/system/libsam/build_iar/libsam.ewd @@ -0,0 +1,3447 @@ + + + + 2 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + ANGEL_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IARROM_ID + 2 + + 1 + 1 + 1 + + + + + + + + + JLINK_ID + 2 + + 13 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + MACRAIGOR_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + PEMICRO_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + + + + + + + RDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + + + + + + + STLINK_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin + 1 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + ANGEL_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IARROM_ID + 2 + + 1 + 1 + 0 + + + + + + + + + JLINK_ID + 2 + + 13 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + MACRAIGOR_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + PEMICRO_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + + + + + + + RDI_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + + + + + + + STLINK_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin + 1 + + + + + Debug_sam3s + + ARM + + 1 + + C-SPY + 2 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + ANGEL_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IARROM_ID + 2 + + 1 + 1 + 1 + + + + + + + + + JLINK_ID + 2 + + 13 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + MACRAIGOR_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + PEMICRO_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + + + + + + + RDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + + + + + + + STLINK_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin + 1 + + + + + Release_sam3s + + ARM + + 0 + + C-SPY + 2 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + ANGEL_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IARROM_ID + 2 + + 1 + 1 + 0 + + + + + + + + + JLINK_ID + 2 + + 13 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + MACRAIGOR_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + PEMICRO_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + + + + + + + RDI_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + + + + + + + STLINK_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin + 1 + + + + + + diff --git a/hardware/sam/system/libsam/build_iar/libsam.ewp b/hardware/sam/system/libsam/build_iar/libsam.ewp new file mode 100644 index 000000000..08609c801 --- /dev/null +++ b/hardware/sam/system/libsam/build_iar/libsam.ewp @@ -0,0 +1,4198 @@ + + + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 21 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 28 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 13 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 21 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 28 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 13 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + Debug_sam3s + + ARM + + 1 + + General + 3 + + 21 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 28 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 13 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release_sam3s + + ARM + + 0 + + General + 3 + + 21 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 28 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 13 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + cmsis + + sam3s + + include + + component + + $PROJ_DIR$\..\cmsis\sam3s\include\component\acc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\adc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\chipid.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\crccu.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\dacc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\efc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\gpbr.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\hsmci.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\matrix.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\pdc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\pio.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\pmc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\pwm.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\rstc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\rtc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\rtt.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\smc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\spi.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\ssc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\supc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\tc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\twi.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\uart.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\udp.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\usart.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\component\wdt.h + + + + instance + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\acc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\adc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\chipid.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\crccu.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\dacc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\efc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\gpbr.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\hsmci.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\matrix.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\pioa.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\piob.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\pioc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\pmc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\pwm.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\rstc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\rtc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\rtt.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\smc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\spi.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\ssc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\supc.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\tc0.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\tc1.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\twi0.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\twi1.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\uart0.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\uart1.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\udp.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\usart0.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\usart1.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\instance\wdt.h + + + + pio + + $PROJ_DIR$\..\cmsis\sam3s\include\pio\sam3s1a.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\pio\sam3s1b.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\pio\sam3s1c.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\pio\sam3s2a.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\pio\sam3s2b.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\pio\sam3s2c.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\pio\sam3s4a.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\pio\sam3s4b.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\pio\sam3s4c.h + + + + $PROJ_DIR$\..\cmsis\sam3s\include\sam3s.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\sam3s1a.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\sam3s1b.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\sam3s1c.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\sam3s2a.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\sam3s2b.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\sam3s2c.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\sam3s4a.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\sam3s4b.h + + + $PROJ_DIR$\..\cmsis\sam3s\include\sam3s4c.h + + + + source + + templates + + iar + + $PROJ_DIR$\..\cmsis\sam3s\source\templates\iar\startup_sam3s.c + + + + $PROJ_DIR$\..\cmsis\sam3s\source\templates\exceptions.c + + + $PROJ_DIR$\..\cmsis\sam3s\source\templates\exceptions.h + + + $PROJ_DIR$\..\cmsis\sam3s\source\templates\system_sam3s.c + + + $PROJ_DIR$\..\cmsis\sam3s\source\templates\system_sam3s.h + + + + + + sam3u + + Debug + + + include + + component + + $PROJ_DIR$\..\cmsis\sam3u\include\component\adc.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\adc12b.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\chipid.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\dmac.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\efc.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\gpbr.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\hsmci.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\matrix.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\pdc.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\pio.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\pmc.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\pwm.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\rstc.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\rtc.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\rtt.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\smc.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\spi.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\ssc.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\supc.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\tc.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\twi.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\uart.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\udphs.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\usart.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\component\wdt.h + + + + instance + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\adc.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\adc12b.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\chipid.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\dmac.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\efc0.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\efc1.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\gpbr.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\hsmci.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\matrix.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\pioa.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\piob.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\pioc.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\pmc.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\pwm.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\rstc.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\rtc.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\rtt.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\smc.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\spi.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\ssc.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\supc.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\tc0.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\twi0.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\twi1.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\uart.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\udphs.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\usart0.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\usart1.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\usart2.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\usart3.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\instance\wdt.h + + + + pio + + $PROJ_DIR$\..\cmsis\sam3u\include\pio\sam3u1c.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\pio\sam3u1e.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\pio\sam3u2c.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\pio\sam3u2e.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\pio\sam3u4c.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\pio\sam3u4e.h + + + + $PROJ_DIR$\..\cmsis\sam3u\include\sam3u.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\sam3u1c.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\sam3u1e.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\sam3u2c.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\sam3u2e.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\sam3u4c.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\sam3u4e.h + + + $PROJ_DIR$\..\cmsis\sam3u\include\system_sam3u.h + + + + source + + templates + + iar + + $PROJ_DIR$\..\cmsis\sam3u\source\templates\iar\startup_sam3u.c + + + + $PROJ_DIR$\..\cmsis\sam3u\source\templates\exceptions.c + + + $PROJ_DIR$\..\cmsis\sam3u\source\templates\exceptions.h + + + $PROJ_DIR$\..\cmsis\sam3u\source\templates\system_sam3u.c + + + + + + + include + + $PROJ_DIR$\..\include\adc.h + + + $PROJ_DIR$\..\include\pio.h + + + $PROJ_DIR$\..\include\pio_it.h + + + $PROJ_DIR$\..\include\pmc.h + + + $PROJ_DIR$\..\include\pwmc.h + + + $PROJ_DIR$\..\include\rtc.h + + + $PROJ_DIR$\..\include\rtt.h + + + $PROJ_DIR$\..\include\sam3.h + + + $PROJ_DIR$\..\include\spi.h + + + $PROJ_DIR$\..\include\tc.h + + + $PROJ_DIR$\..\include\timetick.h + + + $PROJ_DIR$\..\include\twi.h + + + $PROJ_DIR$\..\include\usart.h + + + $PROJ_DIR$\..\include\wdt.h + + + + source + + $PROJ_DIR$\..\source\adc.c + + + $PROJ_DIR$\..\source\pio.c + + + $PROJ_DIR$\..\source\pio_it.c + + Debug + Debug_sam3s + + + + $PROJ_DIR$\..\source\pmc.c + + + $PROJ_DIR$\..\source\pwmc.c + + + $PROJ_DIR$\..\source\rtc.c + + + $PROJ_DIR$\..\source\rtt.c + + + $PROJ_DIR$\..\source\spi.c + + + $PROJ_DIR$\..\source\tc.c + + + $PROJ_DIR$\..\source\timetick.c + + + $PROJ_DIR$\..\source\twi.c + + + $PROJ_DIR$\..\source\usart.c + + + $PROJ_DIR$\..\source\wdt.c + + + + $PROJ_DIR$\..\chip.h + + + + diff --git a/hardware/sam/system/libsam/build_iar/libsam.eww b/hardware/sam/system/libsam/build_iar/libsam.eww new file mode 100644 index 000000000..1e4c9ea5d --- /dev/null +++ b/hardware/sam/system/libsam/build_iar/libsam.eww @@ -0,0 +1,39 @@ + + + + + $WS_DIR$\..\..\..\cores\sam\build_iar\libarduino.ewp + + + $WS_DIR$\libsam.ewp + + + $WS_DIR$\..\..\..\variants\sam3s_ek\build_iar\libvariant_sam3s_ek.ewp + + + $WS_DIR$\..\..\..\cores\sam\validation\build_iar\test.ewp + + + + all_debug_sam3s + + libsam + Debug + + + libarduino + Debug + + + libsam3s_ek + Debug + + + test + Debug + + + + + + diff --git a/hardware/sam/system/libsam/chip.h b/hardware/sam/system/libsam/chip.h new file mode 100644 index 000000000..01619527c --- /dev/null +++ b/hardware/sam/system/libsam/chip.h @@ -0,0 +1,58 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _LIB_SAM_ +#define _LIB_SAM_ + +/* + * Core and peripherals registers definitions + */ +#include "include/sam.h" + +/* Define attribute */ +#if defined ( __GNUC__ ) /* GCC CS3 */ + #define WEAK __attribute__ ((weak)) +#elif defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */ + #define WEAK __weak +#endif + +/* Define NO_INIT attribute */ +#if defined ( __GNUC__ ) + #define NO_INIT +#elif defined ( __ICCARM__ ) + #define NO_INIT __no_init +#endif + +/* + * Peripherals + */ +#include "include/adc.h" +#include "include/pio.h" +#include "include/pmc.h" +#include "include/pwmc.h" +#include "include/rtc.h" +#include "include/rtt.h" +#include "include/spi.h" +#include "include/tc.h" +#include "include/twi.h" +#include "include/usart.h" +#include "include/wdt.h" + +#include "include/timetick.h" + +#endif /* _LIB_SAM_ */ diff --git a/hardware/sam/system/libsam/cmsis/ReadMe.txt b/hardware/sam/system/libsam/cmsis/ReadMe.txt new file mode 100644 index 000000000..ba985a988 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/ReadMe.txt @@ -0,0 +1,64 @@ +/***************************************************************************** + * @file ReadMe.txt + * @purpose Explanation how to use the Device folder and template files + * @version V2.10 + * @date 25. July 2011 + *****************************************************************************/ + +Following directory structure and template files are given: + + - + | + +-- + | + +-- Include + | +- .h header file + | +- system_Device.h system include file + +-- Source + | + + Templates + +- system_.c system source file + | + +-- ARM + | +- startup_.s startup file for ARMCC + | + +-- GCC + | + +-- IAR + + +Copy the complete folder including files and replace: + - folder name 'Vendor' with the abbreviation for the device vendor e.g.: NXP. + - folder name 'Device' with your specific device name e.g.: LPC17xx. + - in the filenames 'Device' with your specific device name e.g.: LPC17xx. + + +The template files contain comments starting with 'ToDo: ' +There it is described what you need to do. + + +The template files contain following placeholder: + + + should be replaced with your specific device name. + e.g.: LPC17xx + + + should be replaced with a specific device interrupt name. + e.g.: TIM1 for Timer#1 interrupt. + + + should be replaced with a dedicated device family + abbreviation (e.g.: LPC for LPC17xx device family) + + Cortex-M# + Cortex-M# can be replaced with the specific Cortex-M number + e.g.: Cortex-M3 + + + +Note: + Template files (i.e. startup_Device.s, system_Device.c) are application + specific and therefore expected to be copied into the application project + folder prior to use! + \ No newline at end of file diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_adc.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_adc.h new file mode 100644 index 000000000..4b4687b3f --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_adc.h @@ -0,0 +1,380 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_ADC_COMPONENT_ +#define _SAM3N_ADC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Analog-to-digital Converter */ +/* ============================================================================= */ +/** \addtogroup SAM3N_ADC Analog-to-digital Converter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Adc hardware registers */ +typedef struct { + WoReg ADC_CR; /**< \brief (Adc Offset: 0x00) Control Register */ + RwReg ADC_MR; /**< \brief (Adc Offset: 0x04) Mode Register */ + RwReg ADC_SEQR1; /**< \brief (Adc Offset: 0x08) Channel Sequence Register 1 */ + RwReg ADC_SEQR2; /**< \brief (Adc Offset: 0x0C) Channel Sequence Register 2 */ + WoReg ADC_CHER; /**< \brief (Adc Offset: 0x10) Channel Enable Register */ + WoReg ADC_CHDR; /**< \brief (Adc Offset: 0x14) Channel Disable Register */ + RoReg ADC_CHSR; /**< \brief (Adc Offset: 0x18) Channel Status Register */ + RoReg Reserved1[1]; + RoReg ADC_LCDR; /**< \brief (Adc Offset: 0x20) Last Converted Data Register */ + WoReg ADC_IER; /**< \brief (Adc Offset: 0x24) Interrupt Enable Register */ + WoReg ADC_IDR; /**< \brief (Adc Offset: 0x28) Interrupt Disable Register */ + RoReg ADC_IMR; /**< \brief (Adc Offset: 0x2C) Interrupt Mask Register */ + RoReg ADC_ISR; /**< \brief (Adc Offset: 0x30) Interrupt Status Register */ + RoReg Reserved2[2]; + RoReg ADC_OVER; /**< \brief (Adc Offset: 0x3C) Overrun Status Register */ + RwReg ADC_EMR; /**< \brief (Adc Offset: 0x40) Extended Mode Register */ + RwReg ADC_CWR; /**< \brief (Adc Offset: 0x44) Compare Window Register */ + RoReg Reserved3[2]; + RoReg ADC_CDR[16]; /**< \brief (Adc Offset: 0x50) Channel Data Register */ + RoReg Reserved4[12]; + RwReg ADC_TRGR; /**< \brief (Adc Offset: 0xC0) Trigger Register */ + RoReg Reserved5[8]; + RwReg ADC_WPMR; /**< \brief (Adc Offset: 0xE4) Write Protect Mode Register */ + RoReg ADC_WPSR; /**< \brief (Adc Offset: 0xE8) Write Protect Status Register */ + RoReg Reserved6[5]; + RwReg ADC_RPR; /**< \brief (Adc Offset: 0x100) Receive Pointer Register */ + RwReg ADC_RCR; /**< \brief (Adc Offset: 0x104) Receive Counter Register */ + RwReg ADC_TPR; /**< \brief (Adc Offset: 0x108) Transmit Pointer Register */ + RwReg ADC_TCR; /**< \brief (Adc Offset: 0x10C) Transmit Counter Register */ + RwReg ADC_RNPR; /**< \brief (Adc Offset: 0x110) Receive Next Pointer Register */ + RwReg ADC_RNCR; /**< \brief (Adc Offset: 0x114) Receive Next Counter Register */ + RwReg ADC_TNPR; /**< \brief (Adc Offset: 0x118) Transmit Next Pointer Register */ + RwReg ADC_TNCR; /**< \brief (Adc Offset: 0x11C) Transmit Next Counter Register */ + WoReg ADC_PTCR; /**< \brief (Adc Offset: 0x120) Transfer Control Register */ + RoReg ADC_PTSR; /**< \brief (Adc Offset: 0x124) Transfer Status Register */ +} Adc; +#endif /* __ASSEMBLY__ */ +/* -------- ADC_CR : (ADC Offset: 0x00) Control Register -------- */ +#define ADC_CR_SWRST (0x1u << 0) /**< \brief (ADC_CR) Software Reset */ +#define ADC_CR_START (0x1u << 1) /**< \brief (ADC_CR) Start Conversion */ +/* -------- ADC_SEQR1 : (ADC Offset: 0x08) Channel Sequence Register 1 -------- */ +#define ADC_SEQR1_USCH1_Pos 0 +#define ADC_SEQR1_USCH1_Msk (0xfu << ADC_SEQR1_USCH1_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 1 */ +#define ADC_SEQR1_USCH1(value) ((ADC_SEQR1_USCH1_Msk & ((value) << ADC_SEQR1_USCH1_Pos))) +#define ADC_SEQR1_USCH2_Pos 4 +#define ADC_SEQR1_USCH2_Msk (0xfu << ADC_SEQR1_USCH2_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 2 */ +#define ADC_SEQR1_USCH2(value) ((ADC_SEQR1_USCH2_Msk & ((value) << ADC_SEQR1_USCH2_Pos))) +#define ADC_SEQR1_USCH3_Pos 8 +#define ADC_SEQR1_USCH3_Msk (0xfu << ADC_SEQR1_USCH3_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 3 */ +#define ADC_SEQR1_USCH3(value) ((ADC_SEQR1_USCH3_Msk & ((value) << ADC_SEQR1_USCH3_Pos))) +#define ADC_SEQR1_USCH4_Pos 12 +#define ADC_SEQR1_USCH4_Msk (0xfu << ADC_SEQR1_USCH4_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 4 */ +#define ADC_SEQR1_USCH4(value) ((ADC_SEQR1_USCH4_Msk & ((value) << ADC_SEQR1_USCH4_Pos))) +#define ADC_SEQR1_USCH5_Pos 16 +#define ADC_SEQR1_USCH5_Msk (0xfu << ADC_SEQR1_USCH5_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 5 */ +#define ADC_SEQR1_USCH5(value) ((ADC_SEQR1_USCH5_Msk & ((value) << ADC_SEQR1_USCH5_Pos))) +#define ADC_SEQR1_USCH6_Pos 20 +#define ADC_SEQR1_USCH6_Msk (0xfu << ADC_SEQR1_USCH6_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 6 */ +#define ADC_SEQR1_USCH6(value) ((ADC_SEQR1_USCH6_Msk & ((value) << ADC_SEQR1_USCH6_Pos))) +#define ADC_SEQR1_USCH7_Pos 24 +#define ADC_SEQR1_USCH7_Msk (0xfu << ADC_SEQR1_USCH7_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 7 */ +#define ADC_SEQR1_USCH7(value) ((ADC_SEQR1_USCH7_Msk & ((value) << ADC_SEQR1_USCH7_Pos))) +#define ADC_SEQR1_USCH8_Pos 28 +#define ADC_SEQR1_USCH8_Msk (0xfu << ADC_SEQR1_USCH8_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 8 */ +#define ADC_SEQR1_USCH8(value) ((ADC_SEQR1_USCH8_Msk & ((value) << ADC_SEQR1_USCH8_Pos))) +/* -------- ADC_SEQR2 : (ADC Offset: 0x0C) Channel Sequence Register 2 -------- */ +#define ADC_SEQR2_USCH9_Pos 0 +#define ADC_SEQR2_USCH9_Msk (0xfu << ADC_SEQR2_USCH9_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 9 */ +#define ADC_SEQR2_USCH9(value) ((ADC_SEQR2_USCH9_Msk & ((value) << ADC_SEQR2_USCH9_Pos))) +#define ADC_SEQR2_USCH10_Pos 4 +#define ADC_SEQR2_USCH10_Msk (0xfu << ADC_SEQR2_USCH10_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 10 */ +#define ADC_SEQR2_USCH10(value) ((ADC_SEQR2_USCH10_Msk & ((value) << ADC_SEQR2_USCH10_Pos))) +#define ADC_SEQR2_USCH11_Pos 8 +#define ADC_SEQR2_USCH11_Msk (0xfu << ADC_SEQR2_USCH11_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 11 */ +#define ADC_SEQR2_USCH11(value) ((ADC_SEQR2_USCH11_Msk & ((value) << ADC_SEQR2_USCH11_Pos))) +#define ADC_SEQR2_USCH12_Pos 12 +#define ADC_SEQR2_USCH12_Msk (0xfu << ADC_SEQR2_USCH12_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 12 */ +#define ADC_SEQR2_USCH12(value) ((ADC_SEQR2_USCH12_Msk & ((value) << ADC_SEQR2_USCH12_Pos))) +#define ADC_SEQR2_USCH13_Pos 16 +#define ADC_SEQR2_USCH13_Msk (0xfu << ADC_SEQR2_USCH13_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 13 */ +#define ADC_SEQR2_USCH13(value) ((ADC_SEQR2_USCH13_Msk & ((value) << ADC_SEQR2_USCH13_Pos))) +#define ADC_SEQR2_USCH14_Pos 20 +#define ADC_SEQR2_USCH14_Msk (0xfu << ADC_SEQR2_USCH14_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 14 */ +#define ADC_SEQR2_USCH14(value) ((ADC_SEQR2_USCH14_Msk & ((value) << ADC_SEQR2_USCH14_Pos))) +#define ADC_SEQR2_USCH15_Pos 24 +#define ADC_SEQR2_USCH15_Msk (0xfu << ADC_SEQR2_USCH15_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 15 */ +#define ADC_SEQR2_USCH15(value) ((ADC_SEQR2_USCH15_Msk & ((value) << ADC_SEQR2_USCH15_Pos))) +#define ADC_SEQR2_USCH16_Pos 28 +#define ADC_SEQR2_USCH16_Msk (0xfu << ADC_SEQR2_USCH16_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 16 */ +#define ADC_SEQR2_USCH16(value) ((ADC_SEQR2_USCH16_Msk & ((value) << ADC_SEQR2_USCH16_Pos))) +/* -------- ADC_CHER : (ADC Offset: 0x10) Channel Enable Register -------- */ +#define ADC_CHER_CH0 (0x1u << 0) /**< \brief (ADC_CHER) Channel 0 Enable */ +#define ADC_CHER_CH1 (0x1u << 1) /**< \brief (ADC_CHER) Channel 1 Enable */ +#define ADC_CHER_CH2 (0x1u << 2) /**< \brief (ADC_CHER) Channel 2 Enable */ +#define ADC_CHER_CH3 (0x1u << 3) /**< \brief (ADC_CHER) Channel 3 Enable */ +#define ADC_CHER_CH4 (0x1u << 4) /**< \brief (ADC_CHER) Channel 4 Enable */ +#define ADC_CHER_CH5 (0x1u << 5) /**< \brief (ADC_CHER) Channel 5 Enable */ +#define ADC_CHER_CH6 (0x1u << 6) /**< \brief (ADC_CHER) Channel 6 Enable */ +#define ADC_CHER_CH7 (0x1u << 7) /**< \brief (ADC_CHER) Channel 7 Enable */ +#define ADC_CHER_CH8 (0x1u << 8) /**< \brief (ADC_CHER) Channel 8 Enable */ +#define ADC_CHER_CH9 (0x1u << 9) /**< \brief (ADC_CHER) Channel 9 Enable */ +#define ADC_CHER_CH10 (0x1u << 10) /**< \brief (ADC_CHER) Channel 10 Enable */ +#define ADC_CHER_CH11 (0x1u << 11) /**< \brief (ADC_CHER) Channel 11 Enable */ +#define ADC_CHER_CH12 (0x1u << 12) /**< \brief (ADC_CHER) Channel 12 Enable */ +#define ADC_CHER_CH13 (0x1u << 13) /**< \brief (ADC_CHER) Channel 13 Enable */ +#define ADC_CHER_CH14 (0x1u << 14) /**< \brief (ADC_CHER) Channel 14 Enable */ +#define ADC_CHER_CH15 (0x1u << 15) /**< \brief (ADC_CHER) Channel 15 Enable */ +/* -------- ADC_CHDR : (ADC Offset: 0x14) Channel Disable Register -------- */ +#define ADC_CHDR_CH0 (0x1u << 0) /**< \brief (ADC_CHDR) Channel 0 Disable */ +#define ADC_CHDR_CH1 (0x1u << 1) /**< \brief (ADC_CHDR) Channel 1 Disable */ +#define ADC_CHDR_CH2 (0x1u << 2) /**< \brief (ADC_CHDR) Channel 2 Disable */ +#define ADC_CHDR_CH3 (0x1u << 3) /**< \brief (ADC_CHDR) Channel 3 Disable */ +#define ADC_CHDR_CH4 (0x1u << 4) /**< \brief (ADC_CHDR) Channel 4 Disable */ +#define ADC_CHDR_CH5 (0x1u << 5) /**< \brief (ADC_CHDR) Channel 5 Disable */ +#define ADC_CHDR_CH6 (0x1u << 6) /**< \brief (ADC_CHDR) Channel 6 Disable */ +#define ADC_CHDR_CH7 (0x1u << 7) /**< \brief (ADC_CHDR) Channel 7 Disable */ +#define ADC_CHDR_CH8 (0x1u << 8) /**< \brief (ADC_CHDR) Channel 8 Disable */ +#define ADC_CHDR_CH9 (0x1u << 9) /**< \brief (ADC_CHDR) Channel 9 Disable */ +#define ADC_CHDR_CH10 (0x1u << 10) /**< \brief (ADC_CHDR) Channel 10 Disable */ +#define ADC_CHDR_CH11 (0x1u << 11) /**< \brief (ADC_CHDR) Channel 11 Disable */ +#define ADC_CHDR_CH12 (0x1u << 12) /**< \brief (ADC_CHDR) Channel 12 Disable */ +#define ADC_CHDR_CH13 (0x1u << 13) /**< \brief (ADC_CHDR) Channel 13 Disable */ +#define ADC_CHDR_CH14 (0x1u << 14) /**< \brief (ADC_CHDR) Channel 14 Disable */ +#define ADC_CHDR_CH15 (0x1u << 15) /**< \brief (ADC_CHDR) Channel 15 Disable */ +/* -------- ADC_CHSR : (ADC Offset: 0x18) Channel Status Register -------- */ +#define ADC_CHSR_CH0 (0x1u << 0) /**< \brief (ADC_CHSR) Channel 0 Status */ +#define ADC_CHSR_CH1 (0x1u << 1) /**< \brief (ADC_CHSR) Channel 1 Status */ +#define ADC_CHSR_CH2 (0x1u << 2) /**< \brief (ADC_CHSR) Channel 2 Status */ +#define ADC_CHSR_CH3 (0x1u << 3) /**< \brief (ADC_CHSR) Channel 3 Status */ +#define ADC_CHSR_CH4 (0x1u << 4) /**< \brief (ADC_CHSR) Channel 4 Status */ +#define ADC_CHSR_CH5 (0x1u << 5) /**< \brief (ADC_CHSR) Channel 5 Status */ +#define ADC_CHSR_CH6 (0x1u << 6) /**< \brief (ADC_CHSR) Channel 6 Status */ +#define ADC_CHSR_CH7 (0x1u << 7) /**< \brief (ADC_CHSR) Channel 7 Status */ +#define ADC_CHSR_CH8 (0x1u << 8) /**< \brief (ADC_CHSR) Channel 8 Status */ +#define ADC_CHSR_CH9 (0x1u << 9) /**< \brief (ADC_CHSR) Channel 9 Status */ +#define ADC_CHSR_CH10 (0x1u << 10) /**< \brief (ADC_CHSR) Channel 10 Status */ +#define ADC_CHSR_CH11 (0x1u << 11) /**< \brief (ADC_CHSR) Channel 11 Status */ +#define ADC_CHSR_CH12 (0x1u << 12) /**< \brief (ADC_CHSR) Channel 12 Status */ +#define ADC_CHSR_CH13 (0x1u << 13) /**< \brief (ADC_CHSR) Channel 13 Status */ +#define ADC_CHSR_CH14 (0x1u << 14) /**< \brief (ADC_CHSR) Channel 14 Status */ +#define ADC_CHSR_CH15 (0x1u << 15) /**< \brief (ADC_CHSR) Channel 15 Status */ +/* -------- ADC_LCDR : (ADC Offset: 0x20) Last Converted Data Register -------- */ +#define ADC_LCDR_LDATA_Pos 0 +#define ADC_LCDR_LDATA_Msk (0xfffu << ADC_LCDR_LDATA_Pos) /**< \brief (ADC_LCDR) Last Data Converted */ +#define ADC_LCDR_CHNB_Pos 12 +#define ADC_LCDR_CHNB_Msk (0xfu << ADC_LCDR_CHNB_Pos) /**< \brief (ADC_LCDR) Channel Number */ +/* -------- ADC_IER : (ADC Offset: 0x24) Interrupt Enable Register -------- */ +#define ADC_IER_EOC0 (0x1u << 0) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 0 */ +#define ADC_IER_EOC1 (0x1u << 1) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 1 */ +#define ADC_IER_EOC2 (0x1u << 2) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 2 */ +#define ADC_IER_EOC3 (0x1u << 3) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 3 */ +#define ADC_IER_EOC4 (0x1u << 4) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 4 */ +#define ADC_IER_EOC5 (0x1u << 5) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 5 */ +#define ADC_IER_EOC6 (0x1u << 6) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 6 */ +#define ADC_IER_EOC7 (0x1u << 7) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 7 */ +#define ADC_IER_EOC8 (0x1u << 8) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 8 */ +#define ADC_IER_EOC9 (0x1u << 9) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 9 */ +#define ADC_IER_EOC10 (0x1u << 10) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 10 */ +#define ADC_IER_EOC11 (0x1u << 11) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 11 */ +#define ADC_IER_EOC12 (0x1u << 12) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 12 */ +#define ADC_IER_EOC13 (0x1u << 13) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 13 */ +#define ADC_IER_EOC14 (0x1u << 14) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 14 */ +#define ADC_IER_EOC15 (0x1u << 15) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 15 */ +#define ADC_IER_DRDY (0x1u << 24) /**< \brief (ADC_IER) Data Ready Interrupt Enable */ +#define ADC_IER_GOVRE (0x1u << 25) /**< \brief (ADC_IER) General Overrun Error Interrupt Enable */ +#define ADC_IER_COMPE (0x1u << 26) /**< \brief (ADC_IER) Comparison Event Interrupt Enable */ +#define ADC_IER_ENDRX (0x1u << 27) /**< \brief (ADC_IER) End of Receive Buffer Interrupt Enable */ +#define ADC_IER_RXBUFF (0x1u << 28) /**< \brief (ADC_IER) Receive Buffer Full Interrupt Enable */ +/* -------- ADC_IDR : (ADC Offset: 0x28) Interrupt Disable Register -------- */ +#define ADC_IDR_EOC0 (0x1u << 0) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 0 */ +#define ADC_IDR_EOC1 (0x1u << 1) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 1 */ +#define ADC_IDR_EOC2 (0x1u << 2) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 2 */ +#define ADC_IDR_EOC3 (0x1u << 3) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 3 */ +#define ADC_IDR_EOC4 (0x1u << 4) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 4 */ +#define ADC_IDR_EOC5 (0x1u << 5) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 5 */ +#define ADC_IDR_EOC6 (0x1u << 6) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 6 */ +#define ADC_IDR_EOC7 (0x1u << 7) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 7 */ +#define ADC_IDR_EOC8 (0x1u << 8) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 8 */ +#define ADC_IDR_EOC9 (0x1u << 9) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 9 */ +#define ADC_IDR_EOC10 (0x1u << 10) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 10 */ +#define ADC_IDR_EOC11 (0x1u << 11) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 11 */ +#define ADC_IDR_EOC12 (0x1u << 12) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 12 */ +#define ADC_IDR_EOC13 (0x1u << 13) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 13 */ +#define ADC_IDR_EOC14 (0x1u << 14) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 14 */ +#define ADC_IDR_EOC15 (0x1u << 15) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 15 */ +#define ADC_IDR_DRDY (0x1u << 24) /**< \brief (ADC_IDR) Data Ready Interrupt Disable */ +#define ADC_IDR_GOVRE (0x1u << 25) /**< \brief (ADC_IDR) General Overrun Error Interrupt Disable */ +#define ADC_IDR_COMPE (0x1u << 26) /**< \brief (ADC_IDR) Comparison Event Interrupt Disable */ +#define ADC_IDR_ENDRX (0x1u << 27) /**< \brief (ADC_IDR) End of Receive Buffer Interrupt Disable */ +#define ADC_IDR_RXBUFF (0x1u << 28) /**< \brief (ADC_IDR) Receive Buffer Full Interrupt Disable */ +/* -------- ADC_IMR : (ADC Offset: 0x2C) Interrupt Mask Register -------- */ +#define ADC_IMR_EOC0 (0x1u << 0) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 0 */ +#define ADC_IMR_EOC1 (0x1u << 1) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 1 */ +#define ADC_IMR_EOC2 (0x1u << 2) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 2 */ +#define ADC_IMR_EOC3 (0x1u << 3) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 3 */ +#define ADC_IMR_EOC4 (0x1u << 4) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 4 */ +#define ADC_IMR_EOC5 (0x1u << 5) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 5 */ +#define ADC_IMR_EOC6 (0x1u << 6) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 6 */ +#define ADC_IMR_EOC7 (0x1u << 7) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 7 */ +#define ADC_IMR_EOC8 (0x1u << 8) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 8 */ +#define ADC_IMR_EOC9 (0x1u << 9) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 9 */ +#define ADC_IMR_EOC10 (0x1u << 10) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 10 */ +#define ADC_IMR_EOC11 (0x1u << 11) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 11 */ +#define ADC_IMR_EOC12 (0x1u << 12) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 12 */ +#define ADC_IMR_EOC13 (0x1u << 13) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 13 */ +#define ADC_IMR_EOC14 (0x1u << 14) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 14 */ +#define ADC_IMR_EOC15 (0x1u << 15) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 15 */ +#define ADC_IMR_DRDY (0x1u << 24) /**< \brief (ADC_IMR) Data Ready Interrupt Mask */ +#define ADC_IMR_GOVRE (0x1u << 25) /**< \brief (ADC_IMR) General Overrun Error Interrupt Mask */ +#define ADC_IMR_COMPE (0x1u << 26) /**< \brief (ADC_IMR) Comparison Event Interrupt Mask */ +#define ADC_IMR_ENDRX (0x1u << 27) /**< \brief (ADC_IMR) End of Receive Buffer Interrupt Mask */ +#define ADC_IMR_RXBUFF (0x1u << 28) /**< \brief (ADC_IMR) Receive Buffer Full Interrupt Mask */ +/* -------- ADC_ISR : (ADC Offset: 0x30) Interrupt Status Register -------- */ +#define ADC_ISR_EOC0 (0x1u << 0) /**< \brief (ADC_ISR) End of Conversion 0 */ +#define ADC_ISR_EOC1 (0x1u << 1) /**< \brief (ADC_ISR) End of Conversion 1 */ +#define ADC_ISR_EOC2 (0x1u << 2) /**< \brief (ADC_ISR) End of Conversion 2 */ +#define ADC_ISR_EOC3 (0x1u << 3) /**< \brief (ADC_ISR) End of Conversion 3 */ +#define ADC_ISR_EOC4 (0x1u << 4) /**< \brief (ADC_ISR) End of Conversion 4 */ +#define ADC_ISR_EOC5 (0x1u << 5) /**< \brief (ADC_ISR) End of Conversion 5 */ +#define ADC_ISR_EOC6 (0x1u << 6) /**< \brief (ADC_ISR) End of Conversion 6 */ +#define ADC_ISR_EOC7 (0x1u << 7) /**< \brief (ADC_ISR) End of Conversion 7 */ +#define ADC_ISR_EOC8 (0x1u << 8) /**< \brief (ADC_ISR) End of Conversion 8 */ +#define ADC_ISR_EOC9 (0x1u << 9) /**< \brief (ADC_ISR) End of Conversion 9 */ +#define ADC_ISR_EOC10 (0x1u << 10) /**< \brief (ADC_ISR) End of Conversion 10 */ +#define ADC_ISR_EOC11 (0x1u << 11) /**< \brief (ADC_ISR) End of Conversion 11 */ +#define ADC_ISR_EOC12 (0x1u << 12) /**< \brief (ADC_ISR) End of Conversion 12 */ +#define ADC_ISR_EOC13 (0x1u << 13) /**< \brief (ADC_ISR) End of Conversion 13 */ +#define ADC_ISR_EOC14 (0x1u << 14) /**< \brief (ADC_ISR) End of Conversion 14 */ +#define ADC_ISR_EOC15 (0x1u << 15) /**< \brief (ADC_ISR) End of Conversion 15 */ +#define ADC_ISR_DRDY (0x1u << 24) /**< \brief (ADC_ISR) Data Ready */ +#define ADC_ISR_GOVRE (0x1u << 25) /**< \brief (ADC_ISR) General Overrun Error */ +#define ADC_ISR_COMPE (0x1u << 26) /**< \brief (ADC_ISR) Comparison Error */ +#define ADC_ISR_ENDRX (0x1u << 27) /**< \brief (ADC_ISR) End of RX Buffer */ +#define ADC_ISR_RXBUFF (0x1u << 28) /**< \brief (ADC_ISR) RX Buffer Full */ +/* -------- ADC_OVER : (ADC Offset: 0x3C) Overrun Status Register -------- */ +#define ADC_OVER_OVRE0 (0x1u << 0) /**< \brief (ADC_OVER) Overrun Error 0 */ +#define ADC_OVER_OVRE1 (0x1u << 1) /**< \brief (ADC_OVER) Overrun Error 1 */ +#define ADC_OVER_OVRE2 (0x1u << 2) /**< \brief (ADC_OVER) Overrun Error 2 */ +#define ADC_OVER_OVRE3 (0x1u << 3) /**< \brief (ADC_OVER) Overrun Error 3 */ +#define ADC_OVER_OVRE4 (0x1u << 4) /**< \brief (ADC_OVER) Overrun Error 4 */ +#define ADC_OVER_OVRE5 (0x1u << 5) /**< \brief (ADC_OVER) Overrun Error 5 */ +#define ADC_OVER_OVRE6 (0x1u << 6) /**< \brief (ADC_OVER) Overrun Error 6 */ +#define ADC_OVER_OVRE7 (0x1u << 7) /**< \brief (ADC_OVER) Overrun Error 7 */ +#define ADC_OVER_OVRE8 (0x1u << 8) /**< \brief (ADC_OVER) Overrun Error 8 */ +#define ADC_OVER_OVRE9 (0x1u << 9) /**< \brief (ADC_OVER) Overrun Error 9 */ +#define ADC_OVER_OVRE10 (0x1u << 10) /**< \brief (ADC_OVER) Overrun Error 10 */ +#define ADC_OVER_OVRE11 (0x1u << 11) /**< \brief (ADC_OVER) Overrun Error 11 */ +#define ADC_OVER_OVRE12 (0x1u << 12) /**< \brief (ADC_OVER) Overrun Error 12 */ +#define ADC_OVER_OVRE13 (0x1u << 13) /**< \brief (ADC_OVER) Overrun Error 13 */ +#define ADC_OVER_OVRE14 (0x1u << 14) /**< \brief (ADC_OVER) Overrun Error 14 */ +#define ADC_OVER_OVRE15 (0x1u << 15) /**< \brief (ADC_OVER) Overrun Error 15 */ +/* -------- ADC_EMR : (ADC Offset: 0x40) Extended Mode Register -------- */ +#define ADC_EMR_CMPMODE_Pos 0 +#define ADC_EMR_CMPMODE_Msk (0x3u << ADC_EMR_CMPMODE_Pos) /**< \brief (ADC_EMR) Comparison Mode */ +#define ADC_EMR_CMPMODE_LOW (0x0u << 0) /**< \brief (ADC_EMR) Generates an event when the converted data is lower than the low threshold of the window. */ +#define ADC_EMR_CMPMODE_HIGH (0x1u << 0) /**< \brief (ADC_EMR) Generates an event when the converted data is higher than the high threshold of the window. */ +#define ADC_EMR_CMPMODE_IN (0x2u << 0) /**< \brief (ADC_EMR) Generates an event when the converted data is in the comparison window. */ +#define ADC_EMR_CMPMODE_OUT (0x3u << 0) /**< \brief (ADC_EMR) Generates an event when the converted data is out of the comparison window. */ +#define ADC_EMR_CMPSEL_Pos 4 +#define ADC_EMR_CMPSEL_Msk (0xfu << ADC_EMR_CMPSEL_Pos) /**< \brief (ADC_EMR) Comparison Selected Channel */ +#define ADC_EMR_CMPSEL(value) ((ADC_EMR_CMPSEL_Msk & ((value) << ADC_EMR_CMPSEL_Pos))) +#define ADC_EMR_CMPALL (0x1u << 9) /**< \brief (ADC_EMR) Compare All Channels */ +#define ADC_EMR_TAG (0x1u << 24) /**< \brief (ADC_EMR) TAG of ADC_LDCR register */ +/* -------- ADC_CWR : (ADC Offset: 0x44) Compare Window Register -------- */ +#define ADC_CWR_LOWTHRES_Pos 0 +#define ADC_CWR_LOWTHRES_Msk (0xfffu << ADC_CWR_LOWTHRES_Pos) /**< \brief (ADC_CWR) Low Threshold */ +#define ADC_CWR_LOWTHRES(value) ((ADC_CWR_LOWTHRES_Msk & ((value) << ADC_CWR_LOWTHRES_Pos))) +#define ADC_CWR_HIGHTHRES_Pos 16 +#define ADC_CWR_HIGHTHRES_Msk (0xfffu << ADC_CWR_HIGHTHRES_Pos) /**< \brief (ADC_CWR) High Threshold */ +#define ADC_CWR_HIGHTHRES(value) ((ADC_CWR_HIGHTHRES_Msk & ((value) << ADC_CWR_HIGHTHRES_Pos))) +/* -------- ADC_CDR[16] : (ADC Offset: 0x50) Channel Data Register -------- */ +#define ADC_CDR_DATA_Pos 0 +#define ADC_CDR_DATA_Msk (0xfffu << ADC_CDR_DATA_Pos) /**< \brief (ADC_CDR[16]) Converted Data */ +/* -------- ADC_TRGR : (ADC Offset: 0xC0) Trigger Register -------- */ +#define ADC_TRGR_TRGMOD_Pos 0 +#define ADC_TRGR_TRGMOD_Msk (0x7u << ADC_TRGR_TRGMOD_Pos) /**< \brief (ADC_TRGR) Trigger Mode */ +#define ADC_TRGR_TRGMOD_NO_TRIGGER (0x0u << 0) /**< \brief (ADC_TRGR) No trigger, only software trigger can start conversions */ +#define ADC_TRGR_TRGMOD_EXT_TRIG_RISE (0x1u << 0) /**< \brief (ADC_TRGR) External Trigger Rising Edge */ +#define ADC_TRGR_TRGMOD_EXT_TRIG_FALL (0x2u << 0) /**< \brief (ADC_TRGR) External Trigger Falling Edge */ +#define ADC_TRGR_TRGMOD_EXT_TRIG_ANY (0x3u << 0) /**< \brief (ADC_TRGR) External Trigger Any Edge */ +#define ADC_TRGR_TRGMOD_PERIOD_TRIG (0x5u << 0) /**< \brief (ADC_TRGR) Periodic Trigger (TRGPER shall be initiated appropriately) */ +#define ADC_TRGR_TRGMOD_CONTINUOUS (0x6u << 0) /**< \brief (ADC_TRGR) Continuous Mode */ +#define ADC_TRGR_TRGPER_Pos 16 +#define ADC_TRGR_TRGPER_Msk (0xffffu << ADC_TRGR_TRGPER_Pos) /**< \brief (ADC_TRGR) Trigger Period */ +#define ADC_TRGR_TRGPER(value) ((ADC_TRGR_TRGPER_Msk & ((value) << ADC_TRGR_TRGPER_Pos))) +/* -------- ADC_WPMR : (ADC Offset: 0xE4) Write Protect Mode Register -------- */ +#define ADC_WPMR_WPEN (0x1u << 0) /**< \brief (ADC_WPMR) Write Protect Enable */ +#define ADC_WPMR_WPKEY_Pos 8 +#define ADC_WPMR_WPKEY_Msk (0xffffffu << ADC_WPMR_WPKEY_Pos) /**< \brief (ADC_WPMR) Write Protect KEY */ +#define ADC_WPMR_WPKEY(value) ((ADC_WPMR_WPKEY_Msk & ((value) << ADC_WPMR_WPKEY_Pos))) +/* -------- ADC_WPSR : (ADC Offset: 0xE8) Write Protect Status Register -------- */ +#define ADC_WPSR_WPVS (0x1u << 0) /**< \brief (ADC_WPSR) Write Protect Violation Status */ +#define ADC_WPSR_WPVSRC_Pos 8 +#define ADC_WPSR_WPVSRC_Msk (0xffffu << ADC_WPSR_WPVSRC_Pos) /**< \brief (ADC_WPSR) Write Protect Violation Source */ +/* -------- ADC_RPR : (ADC Offset: 0x100) Receive Pointer Register -------- */ +#define ADC_RPR_RXPTR_Pos 0 +#define ADC_RPR_RXPTR_Msk (0xffffffffu << ADC_RPR_RXPTR_Pos) /**< \brief (ADC_RPR) Receive Pointer Register */ +#define ADC_RPR_RXPTR(value) ((ADC_RPR_RXPTR_Msk & ((value) << ADC_RPR_RXPTR_Pos))) +/* -------- ADC_RCR : (ADC Offset: 0x104) Receive Counter Register -------- */ +#define ADC_RCR_RXCTR_Pos 0 +#define ADC_RCR_RXCTR_Msk (0xffffu << ADC_RCR_RXCTR_Pos) /**< \brief (ADC_RCR) Receive Counter Register */ +#define ADC_RCR_RXCTR(value) ((ADC_RCR_RXCTR_Msk & ((value) << ADC_RCR_RXCTR_Pos))) +/* -------- ADC_TPR : (ADC Offset: 0x108) Transmit Pointer Register -------- */ +#define ADC_TPR_TXPTR_Pos 0 +#define ADC_TPR_TXPTR_Msk (0xffffffffu << ADC_TPR_TXPTR_Pos) /**< \brief (ADC_TPR) Transmit Counter Register */ +#define ADC_TPR_TXPTR(value) ((ADC_TPR_TXPTR_Msk & ((value) << ADC_TPR_TXPTR_Pos))) +/* -------- ADC_TCR : (ADC Offset: 0x10C) Transmit Counter Register -------- */ +#define ADC_TCR_TXCTR_Pos 0 +#define ADC_TCR_TXCTR_Msk (0xffffu << ADC_TCR_TXCTR_Pos) /**< \brief (ADC_TCR) Transmit Counter Register */ +#define ADC_TCR_TXCTR(value) ((ADC_TCR_TXCTR_Msk & ((value) << ADC_TCR_TXCTR_Pos))) +/* -------- ADC_RNPR : (ADC Offset: 0x110) Receive Next Pointer Register -------- */ +#define ADC_RNPR_RXNPTR_Pos 0 +#define ADC_RNPR_RXNPTR_Msk (0xffffffffu << ADC_RNPR_RXNPTR_Pos) /**< \brief (ADC_RNPR) Receive Next Pointer */ +#define ADC_RNPR_RXNPTR(value) ((ADC_RNPR_RXNPTR_Msk & ((value) << ADC_RNPR_RXNPTR_Pos))) +/* -------- ADC_RNCR : (ADC Offset: 0x114) Receive Next Counter Register -------- */ +#define ADC_RNCR_RXNCTR_Pos 0 +#define ADC_RNCR_RXNCTR_Msk (0xffffu << ADC_RNCR_RXNCTR_Pos) /**< \brief (ADC_RNCR) Receive Next Counter */ +#define ADC_RNCR_RXNCTR(value) ((ADC_RNCR_RXNCTR_Msk & ((value) << ADC_RNCR_RXNCTR_Pos))) +/* -------- ADC_TNPR : (ADC Offset: 0x118) Transmit Next Pointer Register -------- */ +#define ADC_TNPR_TXNPTR_Pos 0 +#define ADC_TNPR_TXNPTR_Msk (0xffffffffu << ADC_TNPR_TXNPTR_Pos) /**< \brief (ADC_TNPR) Transmit Next Pointer */ +#define ADC_TNPR_TXNPTR(value) ((ADC_TNPR_TXNPTR_Msk & ((value) << ADC_TNPR_TXNPTR_Pos))) +/* -------- ADC_TNCR : (ADC Offset: 0x11C) Transmit Next Counter Register -------- */ +#define ADC_TNCR_TXNCTR_Pos 0 +#define ADC_TNCR_TXNCTR_Msk (0xffffu << ADC_TNCR_TXNCTR_Pos) /**< \brief (ADC_TNCR) Transmit Counter Next */ +#define ADC_TNCR_TXNCTR(value) ((ADC_TNCR_TXNCTR_Msk & ((value) << ADC_TNCR_TXNCTR_Pos))) +/* -------- ADC_PTCR : (ADC Offset: 0x120) Transfer Control Register -------- */ +#define ADC_PTCR_RXTEN (0x1u << 0) /**< \brief (ADC_PTCR) Receiver Transfer Enable */ +#define ADC_PTCR_RXTDIS (0x1u << 1) /**< \brief (ADC_PTCR) Receiver Transfer Disable */ +#define ADC_PTCR_TXTEN (0x1u << 8) /**< \brief (ADC_PTCR) Transmitter Transfer Enable */ +#define ADC_PTCR_TXTDIS (0x1u << 9) /**< \brief (ADC_PTCR) Transmitter Transfer Disable */ +/* -------- ADC_PTSR : (ADC Offset: 0x124) Transfer Status Register -------- */ +#define ADC_PTSR_RXTEN (0x1u << 0) /**< \brief (ADC_PTSR) Receiver Transfer Enable */ +#define ADC_PTSR_TXTEN (0x1u << 8) /**< \brief (ADC_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3N_ADC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_chipid.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_chipid.h new file mode 100644 index 000000000..a008d67ae --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_chipid.h @@ -0,0 +1,159 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_CHIPID_COMPONENT_ +#define _SAM3N_CHIPID_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Chip Identifier */ +/* ============================================================================= */ +/** \addtogroup SAM3N_CHIPID Chip Identifier */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Chipid hardware registers */ +typedef struct { + RoReg CHIPID_CIDR; /**< \brief (Chipid Offset: 0x0) Chip ID Register */ + RoReg CHIPID_EXID; /**< \brief (Chipid Offset: 0x4) Chip ID Extension Register */ +} Chipid; +#endif /* __ASSEMBLY__ */ +/* -------- CHIPID_CIDR : (CHIPID Offset: 0x0) Chip ID Register -------- */ +#define CHIPID_CIDR_VERSION_Pos 0 +#define CHIPID_CIDR_VERSION_Msk (0x1fu << CHIPID_CIDR_VERSION_Pos) /**< \brief (CHIPID_CIDR) Version of the Device */ +#define CHIPID_CIDR_EPROC_Pos 5 +#define CHIPID_CIDR_EPROC_Msk (0x7u << CHIPID_CIDR_EPROC_Pos) /**< \brief (CHIPID_CIDR) Embedded Processor */ +#define CHIPID_CIDR_EPROC_ARM946ES (0x1u << 5) /**< \brief (CHIPID_CIDR) ARM946ES */ +#define CHIPID_CIDR_EPROC_ARM7TDMI (0x2u << 5) /**< \brief (CHIPID_CIDR) ARM7TDMI */ +#define CHIPID_CIDR_EPROC_CM3 (0x3u << 5) /**< \brief (CHIPID_CIDR) Cortex-M3 */ +#define CHIPID_CIDR_EPROC_ARM920T (0x4u << 5) /**< \brief (CHIPID_CIDR) ARM920T */ +#define CHIPID_CIDR_EPROC_ARM926EJS (0x5u << 5) /**< \brief (CHIPID_CIDR) ARM926EJS */ +#define CHIPID_CIDR_EPROC_CA5 (0x6u << 5) /**< \brief (CHIPID_CIDR) Cortex-A5 */ +#define CHIPID_CIDR_EPROC_CM4 (0x7u << 5) /**< \brief (CHIPID_CIDR) Cortex-M4 */ +#define CHIPID_CIDR_NVPSIZ_Pos 8 +#define CHIPID_CIDR_NVPSIZ_Msk (0xfu << CHIPID_CIDR_NVPSIZ_Pos) /**< \brief (CHIPID_CIDR) Nonvolatile Program Memory Size */ +#define CHIPID_CIDR_NVPSIZ_NONE (0x0u << 8) /**< \brief (CHIPID_CIDR) None */ +#define CHIPID_CIDR_NVPSIZ_8K (0x1u << 8) /**< \brief (CHIPID_CIDR) 8K bytes */ +#define CHIPID_CIDR_NVPSIZ_16K (0x2u << 8) /**< \brief (CHIPID_CIDR) 16K bytes */ +#define CHIPID_CIDR_NVPSIZ_32K (0x3u << 8) /**< \brief (CHIPID_CIDR) 32K bytes */ +#define CHIPID_CIDR_NVPSIZ_64K (0x5u << 8) /**< \brief (CHIPID_CIDR) 64K bytes */ +#define CHIPID_CIDR_NVPSIZ_128K (0x7u << 8) /**< \brief (CHIPID_CIDR) 128K bytes */ +#define CHIPID_CIDR_NVPSIZ_256K (0x9u << 8) /**< \brief (CHIPID_CIDR) 256K bytes */ +#define CHIPID_CIDR_NVPSIZ_512K (0xAu << 8) /**< \brief (CHIPID_CIDR) 512K bytes */ +#define CHIPID_CIDR_NVPSIZ_1024K (0xCu << 8) /**< \brief (CHIPID_CIDR) 1024K bytes */ +#define CHIPID_CIDR_NVPSIZ_2048K (0xEu << 8) /**< \brief (CHIPID_CIDR) 2048K bytes */ +#define CHIPID_CIDR_NVPSIZ2_Pos 12 +#define CHIPID_CIDR_NVPSIZ2_Msk (0xfu << CHIPID_CIDR_NVPSIZ2_Pos) /**< \brief (CHIPID_CIDR) Second Nonvolatile Program Memory Size */ +#define CHIPID_CIDR_NVPSIZ2_NONE (0x0u << 12) /**< \brief (CHIPID_CIDR) None */ +#define CHIPID_CIDR_NVPSIZ2_8K (0x1u << 12) /**< \brief (CHIPID_CIDR) 8K bytes */ +#define CHIPID_CIDR_NVPSIZ2_16K (0x2u << 12) /**< \brief (CHIPID_CIDR) 16K bytes */ +#define CHIPID_CIDR_NVPSIZ2_32K (0x3u << 12) /**< \brief (CHIPID_CIDR) 32K bytes */ +#define CHIPID_CIDR_NVPSIZ2_64K (0x5u << 12) /**< \brief (CHIPID_CIDR) 64K bytes */ +#define CHIPID_CIDR_NVPSIZ2_128K (0x7u << 12) /**< \brief (CHIPID_CIDR) 128K bytes */ +#define CHIPID_CIDR_NVPSIZ2_256K (0x9u << 12) /**< \brief (CHIPID_CIDR) 256K bytes */ +#define CHIPID_CIDR_NVPSIZ2_512K (0xAu << 12) /**< \brief (CHIPID_CIDR) 512K bytes */ +#define CHIPID_CIDR_NVPSIZ2_1024K (0xCu << 12) /**< \brief (CHIPID_CIDR) 1024K bytes */ +#define CHIPID_CIDR_NVPSIZ2_2048K (0xEu << 12) /**< \brief (CHIPID_CIDR) 2048K bytes */ +#define CHIPID_CIDR_SRAMSIZ_Pos 16 +#define CHIPID_CIDR_SRAMSIZ_Msk (0xfu << CHIPID_CIDR_SRAMSIZ_Pos) /**< \brief (CHIPID_CIDR) Internal SRAM Size */ +#define CHIPID_CIDR_SRAMSIZ_48K (0x0u << 16) /**< \brief (CHIPID_CIDR) 48K bytes */ +#define CHIPID_CIDR_SRAMSIZ_1K (0x1u << 16) /**< \brief (CHIPID_CIDR) 1K bytes */ +#define CHIPID_CIDR_SRAMSIZ_2K (0x2u << 16) /**< \brief (CHIPID_CIDR) 2K bytes */ +#define CHIPID_CIDR_SRAMSIZ_6K (0x3u << 16) /**< \brief (CHIPID_CIDR) 6K bytes */ +#define CHIPID_CIDR_SRAMSIZ_24K (0x4u << 16) /**< \brief (CHIPID_CIDR) 24K bytes */ +#define CHIPID_CIDR_SRAMSIZ_4K (0x5u << 16) /**< \brief (CHIPID_CIDR) 4K bytes */ +#define CHIPID_CIDR_SRAMSIZ_80K (0x6u << 16) /**< \brief (CHIPID_CIDR) 80K bytes */ +#define CHIPID_CIDR_SRAMSIZ_160K (0x7u << 16) /**< \brief (CHIPID_CIDR) 160K bytes */ +#define CHIPID_CIDR_SRAMSIZ_8K (0x8u << 16) /**< \brief (CHIPID_CIDR) 8K bytes */ +#define CHIPID_CIDR_SRAMSIZ_16K (0x9u << 16) /**< \brief (CHIPID_CIDR) 16K bytes */ +#define CHIPID_CIDR_SRAMSIZ_32K (0xAu << 16) /**< \brief (CHIPID_CIDR) 32K bytes */ +#define CHIPID_CIDR_SRAMSIZ_64K (0xBu << 16) /**< \brief (CHIPID_CIDR) 64K bytes */ +#define CHIPID_CIDR_SRAMSIZ_128K (0xCu << 16) /**< \brief (CHIPID_CIDR) 128K bytes */ +#define CHIPID_CIDR_SRAMSIZ_256K (0xDu << 16) /**< \brief (CHIPID_CIDR) 256K bytes */ +#define CHIPID_CIDR_SRAMSIZ_96K (0xEu << 16) /**< \brief (CHIPID_CIDR) 96K bytes */ +#define CHIPID_CIDR_SRAMSIZ_512K (0xFu << 16) /**< \brief (CHIPID_CIDR) 512K bytes */ +#define CHIPID_CIDR_ARCH_Pos 20 +#define CHIPID_CIDR_ARCH_Msk (0xffu << CHIPID_CIDR_ARCH_Pos) /**< \brief (CHIPID_CIDR) Architecture Identifier */ +#define CHIPID_CIDR_ARCH_AT91SAM9xx (0x19u << 20) /**< \brief (CHIPID_CIDR) AT91SAM9xx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM9XExx (0x29u << 20) /**< \brief (CHIPID_CIDR) AT91SAM9XExx Series */ +#define CHIPID_CIDR_ARCH_AT91x34 (0x34u << 20) /**< \brief (CHIPID_CIDR) AT91x34 Series */ +#define CHIPID_CIDR_ARCH_CAP7 (0x37u << 20) /**< \brief (CHIPID_CIDR) CAP7 Series */ +#define CHIPID_CIDR_ARCH_CAP9 (0x39u << 20) /**< \brief (CHIPID_CIDR) CAP9 Series */ +#define CHIPID_CIDR_ARCH_CAP11 (0x3Bu << 20) /**< \brief (CHIPID_CIDR) CAP11 Series */ +#define CHIPID_CIDR_ARCH_AT91x40 (0x40u << 20) /**< \brief (CHIPID_CIDR) AT91x40 Series */ +#define CHIPID_CIDR_ARCH_AT91x42 (0x42u << 20) /**< \brief (CHIPID_CIDR) AT91x42 Series */ +#define CHIPID_CIDR_ARCH_AT91x55 (0x55u << 20) /**< \brief (CHIPID_CIDR) AT91x55 Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Axx (0x60u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Axx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7AQxx (0x61u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7AQxx Series */ +#define CHIPID_CIDR_ARCH_AT91x63 (0x63u << 20) /**< \brief (CHIPID_CIDR) AT91x63 Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Sxx (0x70u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Sxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7XCxx (0x71u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7XCxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7SExx (0x72u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7SExx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Lxx (0x73u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Lxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Xxx (0x75u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Xxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7SLxx (0x76u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7SLxx Series */ +#define CHIPID_CIDR_ARCH_SAM3UxC (0x80u << 20) /**< \brief (CHIPID_CIDR) SAM3UxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3UxE (0x81u << 20) /**< \brief (CHIPID_CIDR) SAM3UxE Series (144-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3AxC (0x83u << 20) /**< \brief (CHIPID_CIDR) SAM3AxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4AxC (0x83u << 20) /**< \brief (CHIPID_CIDR) SAM4AxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3XxC (0x84u << 20) /**< \brief (CHIPID_CIDR) SAM3XxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4XxC (0x84u << 20) /**< \brief (CHIPID_CIDR) SAM4XxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3XxE (0x85u << 20) /**< \brief (CHIPID_CIDR) SAM3XxE Series (144-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4XxE (0x85u << 20) /**< \brief (CHIPID_CIDR) SAM4XxE Series (144-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3XxG (0x86u << 20) /**< \brief (CHIPID_CIDR) SAM3XxG Series (208/217-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4XxG (0x86u << 20) /**< \brief (CHIPID_CIDR) SAM4XxG Series (208/217-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SxA (0x88u << 20) /**< \brief (CHIPID_CIDR) SAM3SxASeries (48-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4SxA (0x88u << 20) /**< \brief (CHIPID_CIDR) SAM4SxA Series (48-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SxB (0x89u << 20) /**< \brief (CHIPID_CIDR) SAM3SxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4SxB (0x89u << 20) /**< \brief (CHIPID_CIDR) SAM4SxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SxC (0x8Au << 20) /**< \brief (CHIPID_CIDR) SAM3SxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4SxC (0x8Au << 20) /**< \brief (CHIPID_CIDR) SAM4SxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_AT91x92 (0x92u << 20) /**< \brief (CHIPID_CIDR) AT91x92 Series */ +#define CHIPID_CIDR_ARCH_SAM3NxA (0x93u << 20) /**< \brief (CHIPID_CIDR) SAM3NxA Series (48-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3NxB (0x94u << 20) /**< \brief (CHIPID_CIDR) SAM3NxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3NxC (0x95u << 20) /**< \brief (CHIPID_CIDR) SAM3NxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SDxB (0x99u << 20) /**< \brief (CHIPID_CIDR) SAM3SDxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SDxC (0x9Au << 20) /**< \brief (CHIPID_CIDR) SAM3SDxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM5A (0xA5u << 20) /**< \brief (CHIPID_CIDR) SAM5A */ +#define CHIPID_CIDR_ARCH_AT75Cxx (0xF0u << 20) /**< \brief (CHIPID_CIDR) AT75Cxx Series */ +#define CHIPID_CIDR_NVPTYP_Pos 28 +#define CHIPID_CIDR_NVPTYP_Msk (0x7u << CHIPID_CIDR_NVPTYP_Pos) /**< \brief (CHIPID_CIDR) Nonvolatile Program Memory Type */ +#define CHIPID_CIDR_NVPTYP_ROM (0x0u << 28) /**< \brief (CHIPID_CIDR) ROM */ +#define CHIPID_CIDR_NVPTYP_ROMLESS (0x1u << 28) /**< \brief (CHIPID_CIDR) ROMless or on-chip Flash */ +#define CHIPID_CIDR_NVPTYP_FLASH (0x2u << 28) /**< \brief (CHIPID_CIDR) Embedded Flash Memory */ +#define CHIPID_CIDR_NVPTYP_ROM_FLASH (0x3u << 28) /**< \brief (CHIPID_CIDR) ROM and Embedded Flash MemoryNVPSIZ is ROM size NVPSIZ2 is Flash size */ +#define CHIPID_CIDR_NVPTYP_SRAM (0x4u << 28) /**< \brief (CHIPID_CIDR) SRAM emulating ROM */ +#define CHIPID_CIDR_EXT (0x1u << 31) /**< \brief (CHIPID_CIDR) Extension Flag */ +/* -------- CHIPID_EXID : (CHIPID Offset: 0x4) Chip ID Extension Register -------- */ +#define CHIPID_EXID_EXID_Pos 0 +#define CHIPID_EXID_EXID_Msk (0xffffffffu << CHIPID_EXID_EXID_Pos) /**< \brief (CHIPID_EXID) Chip ID Extension */ + +/*@}*/ + + +#endif /* _SAM3N_CHIPID_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_dacc.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_dacc.h new file mode 100644 index 000000000..5608c129c --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_dacc.h @@ -0,0 +1,156 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_DACC_COMPONENT_ +#define _SAM3N_DACC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Digital-to-Analog Converter Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3N_DACC Digital-to-Analog Converter Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Dacc hardware registers */ +typedef struct { + WoReg DACC_CR; /**< \brief (Dacc Offset: 0x00) Control Register */ + RwReg DACC_MR; /**< \brief (Dacc Offset: 0x04) Mode Register */ + WoReg DACC_CDR; /**< \brief (Dacc Offset: 0x08) Conversion Data Register */ + WoReg DACC_IER; /**< \brief (Dacc Offset: 0x0C) Interrupt Enable Register */ + WoReg DACC_IDR; /**< \brief (Dacc Offset: 0x10) Interrupt Disable Register */ + RoReg DACC_IMR; /**< \brief (Dacc Offset: 0x14) Interrupt Mask Register */ + RoReg DACC_ISR; /**< \brief (Dacc Offset: 0x18) Interrupt Status Register */ + RoReg Reserved1[50]; + RwReg DACC_WPMR; /**< \brief (Dacc Offset: 0xE4) Write Protect Mode Register */ + RoReg DACC_WPSR; /**< \brief (Dacc Offset: 0xE8) Write Protect Status Register */ + RoReg Reserved2[5]; + RwReg DACC_RPR; /**< \brief (Dacc Offset: 0x100) Receive Pointer Register */ + RwReg DACC_RCR; /**< \brief (Dacc Offset: 0x104) Receive Counter Register */ + RwReg DACC_TPR; /**< \brief (Dacc Offset: 0x108) Transmit Pointer Register */ + RwReg DACC_TCR; /**< \brief (Dacc Offset: 0x10C) Transmit Counter Register */ + RwReg DACC_RNPR; /**< \brief (Dacc Offset: 0x110) Receive Next Pointer Register */ + RwReg DACC_RNCR; /**< \brief (Dacc Offset: 0x114) Receive Next Counter Register */ + RwReg DACC_TNPR; /**< \brief (Dacc Offset: 0x118) Transmit Next Pointer Register */ + RwReg DACC_TNCR; /**< \brief (Dacc Offset: 0x11C) Transmit Next Counter Register */ + WoReg DACC_PTCR; /**< \brief (Dacc Offset: 0x120) Transfer Control Register */ + RoReg DACC_PTSR; /**< \brief (Dacc Offset: 0x124) Transfer Status Register */ +} Dacc; +#endif /* __ASSEMBLY__ */ +/* -------- DACC_CR : (DACC Offset: 0x00) Control Register -------- */ +#define DACC_CR_SWRST (0x1u << 0) /**< \brief (DACC_CR) Software Reset */ +/* -------- DACC_MR : (DACC Offset: 0x04) Mode Register -------- */ +#define DACC_MR_TRGEN (0x1u << 0) /**< \brief (DACC_MR) Trigger Enable */ +#define DACC_MR_TRGSEL_Pos 1 +#define DACC_MR_TRGSEL_Msk (0x7u << DACC_MR_TRGSEL_Pos) /**< \brief (DACC_MR) Trigger Selection */ +#define DACC_MR_TRGSEL_TRGSEL0 (0x0u << 1) /**< \brief (DACC_MR) External trigger */ +#define DACC_MR_TRGSEL_TRGSEL1 (0x1u << 1) /**< \brief (DACC_MR) TIO Output of the Timer Counter Channel 0 */ +#define DACC_MR_TRGSEL_TRGSEL2 (0x2u << 1) /**< \brief (DACC_MR) TIO Output of the Timer Counter Channel 1 */ +#define DACC_MR_TRGSEL_TRGSEL3 (0x3u << 1) /**< \brief (DACC_MR) TIO Output of the Timer Counter Channel 2 */ +#define DACC_MR_DACEN (0x1u << 4) /**< \brief (DACC_MR) DAC enable */ +#define DACC_MR_WORD (0x1u << 5) /**< \brief (DACC_MR) Word Transfer */ +#define DACC_MR_STARTUP_Pos 8 +#define DACC_MR_STARTUP_Msk (0xffu << DACC_MR_STARTUP_Pos) /**< \brief (DACC_MR) Startup Time Selection */ +#define DACC_MR_STARTUP(value) ((DACC_MR_STARTUP_Msk & ((value) << DACC_MR_STARTUP_Pos))) +#define DACC_MR_CLKDIV_Pos 16 +#define DACC_MR_CLKDIV_Msk (0xffffu << DACC_MR_CLKDIV_Pos) /**< \brief (DACC_MR) DAC Clock Divider for Internal Trigger */ +#define DACC_MR_CLKDIV(value) ((DACC_MR_CLKDIV_Msk & ((value) << DACC_MR_CLKDIV_Pos))) +/* -------- DACC_CDR : (DACC Offset: 0x08) Conversion Data Register -------- */ +#define DACC_CDR_DATA_Pos 0 +#define DACC_CDR_DATA_Msk (0xffffffffu << DACC_CDR_DATA_Pos) /**< \brief (DACC_CDR) Data to Convert */ +#define DACC_CDR_DATA(value) ((DACC_CDR_DATA_Msk & ((value) << DACC_CDR_DATA_Pos))) +/* -------- DACC_IER : (DACC Offset: 0x0C) Interrupt Enable Register -------- */ +#define DACC_IER_TXRDY (0x1u << 0) /**< \brief (DACC_IER) Transmission Ready Interrupt Enable */ +#define DACC_IER_ENDTX (0x1u << 1) /**< \brief (DACC_IER) End of PDC Interrupt Enable */ +#define DACC_IER_TXBUFE (0x1u << 2) /**< \brief (DACC_IER) Buffer Empty Interrupt Enable */ +/* -------- DACC_IDR : (DACC Offset: 0x10) Interrupt Disable Register -------- */ +#define DACC_IDR_TXRDY (0x1u << 0) /**< \brief (DACC_IDR) Transmission Ready Interrupt Disable */ +#define DACC_IDR_ENDTX (0x1u << 1) /**< \brief (DACC_IDR) End of PDC Interrupt Disable */ +#define DACC_IDR_TXBUFE (0x1u << 2) /**< \brief (DACC_IDR) Buffer Empty Interrupt Disable */ +/* -------- DACC_IMR : (DACC Offset: 0x14) Interrupt Mask Register -------- */ +#define DACC_IMR_TXRDY (0x1u << 0) /**< \brief (DACC_IMR) Transmission Ready Interrupt Mask */ +#define DACC_IMR_ENDTX (0x1u << 1) /**< \brief (DACC_IMR) End of PDC Interrupt Mask */ +#define DACC_IMR_TXBUFE (0x1u << 2) /**< \brief (DACC_IMR) Buffer Empty Interrupt Mask */ +/* -------- DACC_ISR : (DACC Offset: 0x18) Interrupt Status Register -------- */ +#define DACC_ISR_TXRDY (0x1u << 0) /**< \brief (DACC_ISR) Transmission Ready Interrupt Flag */ +#define DACC_ISR_ENDTX (0x1u << 1) /**< \brief (DACC_ISR) End of PDC Interrupt Flag */ +#define DACC_ISR_TXBUFE (0x1u << 2) /**< \brief (DACC_ISR) Buffer Empty Interrupt Flag */ +/* -------- DACC_WPMR : (DACC Offset: 0xE4) Write Protect Mode Register -------- */ +#define DACC_WPMR_WPEN (0x1u << 0) /**< \brief (DACC_WPMR) Write Protect Enable */ +#define DACC_WPMR_WPKEY_Pos 8 +#define DACC_WPMR_WPKEY_Msk (0xffffffu << DACC_WPMR_WPKEY_Pos) /**< \brief (DACC_WPMR) Write Protect KEY */ +#define DACC_WPMR_WPKEY(value) ((DACC_WPMR_WPKEY_Msk & ((value) << DACC_WPMR_WPKEY_Pos))) +/* -------- DACC_WPSR : (DACC Offset: 0xE8) Write Protect Status Register -------- */ +#define DACC_WPSR_WPROTERR (0x1u << 0) /**< \brief (DACC_WPSR) Write protection error */ +#define DACC_WPSR_WPROTADDR_Pos 8 +#define DACC_WPSR_WPROTADDR_Msk (0xffu << DACC_WPSR_WPROTADDR_Pos) /**< \brief (DACC_WPSR) Write protection error address */ +/* -------- DACC_RPR : (DACC Offset: 0x100) Receive Pointer Register -------- */ +#define DACC_RPR_RXPTR_Pos 0 +#define DACC_RPR_RXPTR_Msk (0xffffffffu << DACC_RPR_RXPTR_Pos) /**< \brief (DACC_RPR) Receive Pointer Register */ +#define DACC_RPR_RXPTR(value) ((DACC_RPR_RXPTR_Msk & ((value) << DACC_RPR_RXPTR_Pos))) +/* -------- DACC_RCR : (DACC Offset: 0x104) Receive Counter Register -------- */ +#define DACC_RCR_RXCTR_Pos 0 +#define DACC_RCR_RXCTR_Msk (0xffffu << DACC_RCR_RXCTR_Pos) /**< \brief (DACC_RCR) Receive Counter Register */ +#define DACC_RCR_RXCTR(value) ((DACC_RCR_RXCTR_Msk & ((value) << DACC_RCR_RXCTR_Pos))) +/* -------- DACC_TPR : (DACC Offset: 0x108) Transmit Pointer Register -------- */ +#define DACC_TPR_TXPTR_Pos 0 +#define DACC_TPR_TXPTR_Msk (0xffffffffu << DACC_TPR_TXPTR_Pos) /**< \brief (DACC_TPR) Transmit Counter Register */ +#define DACC_TPR_TXPTR(value) ((DACC_TPR_TXPTR_Msk & ((value) << DACC_TPR_TXPTR_Pos))) +/* -------- DACC_TCR : (DACC Offset: 0x10C) Transmit Counter Register -------- */ +#define DACC_TCR_TXCTR_Pos 0 +#define DACC_TCR_TXCTR_Msk (0xffffu << DACC_TCR_TXCTR_Pos) /**< \brief (DACC_TCR) Transmit Counter Register */ +#define DACC_TCR_TXCTR(value) ((DACC_TCR_TXCTR_Msk & ((value) << DACC_TCR_TXCTR_Pos))) +/* -------- DACC_RNPR : (DACC Offset: 0x110) Receive Next Pointer Register -------- */ +#define DACC_RNPR_RXNPTR_Pos 0 +#define DACC_RNPR_RXNPTR_Msk (0xffffffffu << DACC_RNPR_RXNPTR_Pos) /**< \brief (DACC_RNPR) Receive Next Pointer */ +#define DACC_RNPR_RXNPTR(value) ((DACC_RNPR_RXNPTR_Msk & ((value) << DACC_RNPR_RXNPTR_Pos))) +/* -------- DACC_RNCR : (DACC Offset: 0x114) Receive Next Counter Register -------- */ +#define DACC_RNCR_RXNCTR_Pos 0 +#define DACC_RNCR_RXNCTR_Msk (0xffffu << DACC_RNCR_RXNCTR_Pos) /**< \brief (DACC_RNCR) Receive Next Counter */ +#define DACC_RNCR_RXNCTR(value) ((DACC_RNCR_RXNCTR_Msk & ((value) << DACC_RNCR_RXNCTR_Pos))) +/* -------- DACC_TNPR : (DACC Offset: 0x118) Transmit Next Pointer Register -------- */ +#define DACC_TNPR_TXNPTR_Pos 0 +#define DACC_TNPR_TXNPTR_Msk (0xffffffffu << DACC_TNPR_TXNPTR_Pos) /**< \brief (DACC_TNPR) Transmit Next Pointer */ +#define DACC_TNPR_TXNPTR(value) ((DACC_TNPR_TXNPTR_Msk & ((value) << DACC_TNPR_TXNPTR_Pos))) +/* -------- DACC_TNCR : (DACC Offset: 0x11C) Transmit Next Counter Register -------- */ +#define DACC_TNCR_TXNCTR_Pos 0 +#define DACC_TNCR_TXNCTR_Msk (0xffffu << DACC_TNCR_TXNCTR_Pos) /**< \brief (DACC_TNCR) Transmit Counter Next */ +#define DACC_TNCR_TXNCTR(value) ((DACC_TNCR_TXNCTR_Msk & ((value) << DACC_TNCR_TXNCTR_Pos))) +/* -------- DACC_PTCR : (DACC Offset: 0x120) Transfer Control Register -------- */ +#define DACC_PTCR_RXTEN (0x1u << 0) /**< \brief (DACC_PTCR) Receiver Transfer Enable */ +#define DACC_PTCR_RXTDIS (0x1u << 1) /**< \brief (DACC_PTCR) Receiver Transfer Disable */ +#define DACC_PTCR_TXTEN (0x1u << 8) /**< \brief (DACC_PTCR) Transmitter Transfer Enable */ +#define DACC_PTCR_TXTDIS (0x1u << 9) /**< \brief (DACC_PTCR) Transmitter Transfer Disable */ +/* -------- DACC_PTSR : (DACC Offset: 0x124) Transfer Status Register -------- */ +#define DACC_PTSR_RXTEN (0x1u << 0) /**< \brief (DACC_PTSR) Receiver Transfer Enable */ +#define DACC_PTSR_TXTEN (0x1u << 8) /**< \brief (DACC_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3N_DACC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_efc.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_efc.h new file mode 100644 index 000000000..113eedb40 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_efc.h @@ -0,0 +1,76 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_EFC_COMPONENT_ +#define _SAM3N_EFC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Embedded Flash Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3N_EFC Embedded Flash Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Efc hardware registers */ +typedef struct { + RwReg EEFC_FMR; /**< \brief (Efc Offset: 0x00) EEFC Flash Mode Register */ + WoReg EEFC_FCR; /**< \brief (Efc Offset: 0x04) EEFC Flash Command Register */ + RoReg EEFC_FSR; /**< \brief (Efc Offset: 0x08) EEFC Flash Status Register */ + RoReg EEFC_FRR; /**< \brief (Efc Offset: 0x0C) EEFC Flash Result Register */ +} Efc; +#endif /* __ASSEMBLY__ */ +/* -------- EEFC_FMR : (EFC Offset: 0x00) EEFC Flash Mode Register -------- */ +#define EEFC_FMR_FRDY (0x1u << 0) /**< \brief (EEFC_FMR) Ready Interrupt Enable */ +#define EEFC_FMR_FWS_Pos 8 +#define EEFC_FMR_FWS_Msk (0xfu << EEFC_FMR_FWS_Pos) /**< \brief (EEFC_FMR) Flash Wait State */ +#define EEFC_FMR_FWS(value) ((EEFC_FMR_FWS_Msk & ((value) << EEFC_FMR_FWS_Pos))) +#define EEFC_FMR_SCOD (0x1u << 16) /**< \brief (EEFC_FMR) Sequential Code Optimization Disable */ +#define EEFC_FMR_FAM (0x1u << 24) /**< \brief (EEFC_FMR) Flash Access Mode */ +/* -------- EEFC_FCR : (EFC Offset: 0x04) EEFC Flash Command Register -------- */ +#define EEFC_FCR_FCMD_Pos 0 +#define EEFC_FCR_FCMD_Msk (0xffu << EEFC_FCR_FCMD_Pos) /**< \brief (EEFC_FCR) Flash Command */ +#define EEFC_FCR_FCMD(value) ((EEFC_FCR_FCMD_Msk & ((value) << EEFC_FCR_FCMD_Pos))) +#define EEFC_FCR_FARG_Pos 8 +#define EEFC_FCR_FARG_Msk (0xffffu << EEFC_FCR_FARG_Pos) /**< \brief (EEFC_FCR) Flash Command Argument */ +#define EEFC_FCR_FARG(value) ((EEFC_FCR_FARG_Msk & ((value) << EEFC_FCR_FARG_Pos))) +#define EEFC_FCR_FKEY_Pos 24 +#define EEFC_FCR_FKEY_Msk (0xffu << EEFC_FCR_FKEY_Pos) /**< \brief (EEFC_FCR) Flash Writing Protection Key */ +#define EEFC_FCR_FKEY(value) ((EEFC_FCR_FKEY_Msk & ((value) << EEFC_FCR_FKEY_Pos))) +/* -------- EEFC_FSR : (EFC Offset: 0x08) EEFC Flash Status Register -------- */ +#define EEFC_FSR_FRDY (0x1u << 0) /**< \brief (EEFC_FSR) Flash Ready Status */ +#define EEFC_FSR_FCMDE (0x1u << 1) /**< \brief (EEFC_FSR) Flash Command Error Status */ +#define EEFC_FSR_FLOCKE (0x1u << 2) /**< \brief (EEFC_FSR) Flash Lock Error Status */ +/* -------- EEFC_FRR : (EFC Offset: 0x0C) EEFC Flash Result Register -------- */ +#define EEFC_FRR_FVALUE_Pos 0 +#define EEFC_FRR_FVALUE_Msk (0xffffffffu << EEFC_FRR_FVALUE_Pos) /**< \brief (EEFC_FRR) Flash Result Value */ + +/*@}*/ + + +#endif /* _SAM3N_EFC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_gpbr.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_gpbr.h new file mode 100644 index 000000000..5e72e4029 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_gpbr.h @@ -0,0 +1,53 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_GPBR_COMPONENT_ +#define _SAM3N_GPBR_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR General Purpose Backup Register */ +/* ============================================================================= */ +/** \addtogroup SAM3N_GPBR General Purpose Backup Register */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Gpbr hardware registers */ +typedef struct { + RwReg SYS_GPBR[8]; /**< \brief (Gpbr Offset: 0x0) General Purpose Backup Register */ +} Gpbr; +#endif /* __ASSEMBLY__ */ +/* -------- SYS_GPBR[8] : (GPBR Offset: 0x0) General Purpose Backup Register -------- */ +#define SYS_GPBR_GPBR_VALUE_Pos 0 +#define SYS_GPBR_GPBR_VALUE_Msk (0xffffffffu << SYS_GPBR_GPBR_VALUE_Pos) /**< \brief (SYS_GPBR[8]) Value of GPBR x */ +#define SYS_GPBR_GPBR_VALUE(value) ((SYS_GPBR_GPBR_VALUE_Msk & ((value) << SYS_GPBR_GPBR_VALUE_Pos))) + +/*@}*/ + + +#endif /* _SAM3N_GPBR_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_matrix.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_matrix.h new file mode 100644 index 000000000..af565e258 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_matrix.h @@ -0,0 +1,149 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_MATRIX_COMPONENT_ +#define _SAM3N_MATRIX_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR AHB Bus Matrix */ +/* ============================================================================= */ +/** \addtogroup SAM3N_MATRIX AHB Bus Matrix */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Matrix hardware registers */ +typedef struct { + RwReg MATRIX_MCFG[3]; /**< \brief (Matrix Offset: 0x0000) Master Configuration Register */ + RoReg Reserved1[13]; + RwReg MATRIX_SCFG[4]; /**< \brief (Matrix Offset: 0x0040) Slave Configuration Register */ + RoReg Reserved2[12]; + RwReg MATRIX_PRAS0; /**< \brief (Matrix Offset: 0x0080) Priority Register A for Slave 0 */ + RoReg Reserved3[1]; + RwReg MATRIX_PRAS1; /**< \brief (Matrix Offset: 0x0088) Priority Register A for Slave 1 */ + RoReg Reserved4[1]; + RwReg MATRIX_PRAS2; /**< \brief (Matrix Offset: 0x0090) Priority Register A for Slave 2 */ + RoReg Reserved5[1]; + RwReg MATRIX_PRAS3; /**< \brief (Matrix Offset: 0x0098) Priority Register A for Slave 3 */ + RoReg Reserved6[1]; + RoReg Reserved7[29]; + RwReg CCFG_SYSIO; /**< \brief (Matrix Offset: 0x0114) System I/O Configuration register */ + RoReg Reserved8[51]; + RwReg MATRIX_WPMR; /**< \brief (Matrix Offset: 0x1E4) Write Protect Mode Register */ + RoReg MATRIX_WPSR; /**< \brief (Matrix Offset: 0x1E8) Write Protect Status Register */ +} Matrix; +#endif /* __ASSEMBLY__ */ +/* -------- MATRIX_MCFG[3] : (MATRIX Offset: 0x0000) Master Configuration Register -------- */ +#define MATRIX_MCFG_ULBT_Pos 0 +#define MATRIX_MCFG_ULBT_Msk (0x7u << MATRIX_MCFG_ULBT_Pos) /**< \brief (MATRIX_MCFG[3]) Undefined Length Burst Type */ +#define MATRIX_MCFG_ULBT(value) ((MATRIX_MCFG_ULBT_Msk & ((value) << MATRIX_MCFG_ULBT_Pos))) +/* -------- MATRIX_SCFG[4] : (MATRIX Offset: 0x0040) Slave Configuration Register -------- */ +#define MATRIX_SCFG_SLOT_CYCLE_Pos 0 +#define MATRIX_SCFG_SLOT_CYCLE_Msk (0xffu << MATRIX_SCFG_SLOT_CYCLE_Pos) /**< \brief (MATRIX_SCFG[4]) Maximum Number of Allowed Cycles for a Burst */ +#define MATRIX_SCFG_SLOT_CYCLE(value) ((MATRIX_SCFG_SLOT_CYCLE_Msk & ((value) << MATRIX_SCFG_SLOT_CYCLE_Pos))) +#define MATRIX_SCFG_DEFMSTR_TYPE_Pos 16 +#define MATRIX_SCFG_DEFMSTR_TYPE_Msk (0x3u << MATRIX_SCFG_DEFMSTR_TYPE_Pos) /**< \brief (MATRIX_SCFG[4]) Default Master Type */ +#define MATRIX_SCFG_DEFMSTR_TYPE(value) ((MATRIX_SCFG_DEFMSTR_TYPE_Msk & ((value) << MATRIX_SCFG_DEFMSTR_TYPE_Pos))) +#define MATRIX_SCFG_FIXED_DEFMSTR_Pos 18 +#define MATRIX_SCFG_FIXED_DEFMSTR_Msk (0x7u << MATRIX_SCFG_FIXED_DEFMSTR_Pos) /**< \brief (MATRIX_SCFG[4]) Fixed Default Master */ +#define MATRIX_SCFG_FIXED_DEFMSTR(value) ((MATRIX_SCFG_FIXED_DEFMSTR_Msk & ((value) << MATRIX_SCFG_FIXED_DEFMSTR_Pos))) +#define MATRIX_SCFG_ARBT_Pos 24 +#define MATRIX_SCFG_ARBT_Msk (0x3u << MATRIX_SCFG_ARBT_Pos) /**< \brief (MATRIX_SCFG[4]) Arbitration Type */ +#define MATRIX_SCFG_ARBT(value) ((MATRIX_SCFG_ARBT_Msk & ((value) << MATRIX_SCFG_ARBT_Pos))) +/* -------- MATRIX_PRAS0 : (MATRIX Offset: 0x0080) Priority Register A for Slave 0 -------- */ +#define MATRIX_PRAS0_M0PR_Pos 0 +#define MATRIX_PRAS0_M0PR_Msk (0x3u << MATRIX_PRAS0_M0PR_Pos) /**< \brief (MATRIX_PRAS0) Master 0 Priority */ +#define MATRIX_PRAS0_M0PR(value) ((MATRIX_PRAS0_M0PR_Msk & ((value) << MATRIX_PRAS0_M0PR_Pos))) +#define MATRIX_PRAS0_M1PR_Pos 4 +#define MATRIX_PRAS0_M1PR_Msk (0x3u << MATRIX_PRAS0_M1PR_Pos) /**< \brief (MATRIX_PRAS0) Master 1 Priority */ +#define MATRIX_PRAS0_M1PR(value) ((MATRIX_PRAS0_M1PR_Msk & ((value) << MATRIX_PRAS0_M1PR_Pos))) +#define MATRIX_PRAS0_M2PR_Pos 8 +#define MATRIX_PRAS0_M2PR_Msk (0x3u << MATRIX_PRAS0_M2PR_Pos) /**< \brief (MATRIX_PRAS0) Master 2 Priority */ +#define MATRIX_PRAS0_M2PR(value) ((MATRIX_PRAS0_M2PR_Msk & ((value) << MATRIX_PRAS0_M2PR_Pos))) +#define MATRIX_PRAS0_M3PR_Pos 12 +#define MATRIX_PRAS0_M3PR_Msk (0x3u << MATRIX_PRAS0_M3PR_Pos) /**< \brief (MATRIX_PRAS0) Master 3 Priority */ +#define MATRIX_PRAS0_M3PR(value) ((MATRIX_PRAS0_M3PR_Msk & ((value) << MATRIX_PRAS0_M3PR_Pos))) +/* -------- MATRIX_PRAS1 : (MATRIX Offset: 0x0088) Priority Register A for Slave 1 -------- */ +#define MATRIX_PRAS1_M0PR_Pos 0 +#define MATRIX_PRAS1_M0PR_Msk (0x3u << MATRIX_PRAS1_M0PR_Pos) /**< \brief (MATRIX_PRAS1) Master 0 Priority */ +#define MATRIX_PRAS1_M0PR(value) ((MATRIX_PRAS1_M0PR_Msk & ((value) << MATRIX_PRAS1_M0PR_Pos))) +#define MATRIX_PRAS1_M1PR_Pos 4 +#define MATRIX_PRAS1_M1PR_Msk (0x3u << MATRIX_PRAS1_M1PR_Pos) /**< \brief (MATRIX_PRAS1) Master 1 Priority */ +#define MATRIX_PRAS1_M1PR(value) ((MATRIX_PRAS1_M1PR_Msk & ((value) << MATRIX_PRAS1_M1PR_Pos))) +#define MATRIX_PRAS1_M2PR_Pos 8 +#define MATRIX_PRAS1_M2PR_Msk (0x3u << MATRIX_PRAS1_M2PR_Pos) /**< \brief (MATRIX_PRAS1) Master 2 Priority */ +#define MATRIX_PRAS1_M2PR(value) ((MATRIX_PRAS1_M2PR_Msk & ((value) << MATRIX_PRAS1_M2PR_Pos))) +#define MATRIX_PRAS1_M3PR_Pos 12 +#define MATRIX_PRAS1_M3PR_Msk (0x3u << MATRIX_PRAS1_M3PR_Pos) /**< \brief (MATRIX_PRAS1) Master 3 Priority */ +#define MATRIX_PRAS1_M3PR(value) ((MATRIX_PRAS1_M3PR_Msk & ((value) << MATRIX_PRAS1_M3PR_Pos))) +/* -------- MATRIX_PRAS2 : (MATRIX Offset: 0x0090) Priority Register A for Slave 2 -------- */ +#define MATRIX_PRAS2_M0PR_Pos 0 +#define MATRIX_PRAS2_M0PR_Msk (0x3u << MATRIX_PRAS2_M0PR_Pos) /**< \brief (MATRIX_PRAS2) Master 0 Priority */ +#define MATRIX_PRAS2_M0PR(value) ((MATRIX_PRAS2_M0PR_Msk & ((value) << MATRIX_PRAS2_M0PR_Pos))) +#define MATRIX_PRAS2_M1PR_Pos 4 +#define MATRIX_PRAS2_M1PR_Msk (0x3u << MATRIX_PRAS2_M1PR_Pos) /**< \brief (MATRIX_PRAS2) Master 1 Priority */ +#define MATRIX_PRAS2_M1PR(value) ((MATRIX_PRAS2_M1PR_Msk & ((value) << MATRIX_PRAS2_M1PR_Pos))) +#define MATRIX_PRAS2_M2PR_Pos 8 +#define MATRIX_PRAS2_M2PR_Msk (0x3u << MATRIX_PRAS2_M2PR_Pos) /**< \brief (MATRIX_PRAS2) Master 2 Priority */ +#define MATRIX_PRAS2_M2PR(value) ((MATRIX_PRAS2_M2PR_Msk & ((value) << MATRIX_PRAS2_M2PR_Pos))) +#define MATRIX_PRAS2_M3PR_Pos 12 +#define MATRIX_PRAS2_M3PR_Msk (0x3u << MATRIX_PRAS2_M3PR_Pos) /**< \brief (MATRIX_PRAS2) Master 3 Priority */ +#define MATRIX_PRAS2_M3PR(value) ((MATRIX_PRAS2_M3PR_Msk & ((value) << MATRIX_PRAS2_M3PR_Pos))) +/* -------- MATRIX_PRAS3 : (MATRIX Offset: 0x0098) Priority Register A for Slave 3 -------- */ +#define MATRIX_PRAS3_M0PR_Pos 0 +#define MATRIX_PRAS3_M0PR_Msk (0x3u << MATRIX_PRAS3_M0PR_Pos) /**< \brief (MATRIX_PRAS3) Master 0 Priority */ +#define MATRIX_PRAS3_M0PR(value) ((MATRIX_PRAS3_M0PR_Msk & ((value) << MATRIX_PRAS3_M0PR_Pos))) +#define MATRIX_PRAS3_M1PR_Pos 4 +#define MATRIX_PRAS3_M1PR_Msk (0x3u << MATRIX_PRAS3_M1PR_Pos) /**< \brief (MATRIX_PRAS3) Master 1 Priority */ +#define MATRIX_PRAS3_M1PR(value) ((MATRIX_PRAS3_M1PR_Msk & ((value) << MATRIX_PRAS3_M1PR_Pos))) +#define MATRIX_PRAS3_M2PR_Pos 8 +#define MATRIX_PRAS3_M2PR_Msk (0x3u << MATRIX_PRAS3_M2PR_Pos) /**< \brief (MATRIX_PRAS3) Master 2 Priority */ +#define MATRIX_PRAS3_M2PR(value) ((MATRIX_PRAS3_M2PR_Msk & ((value) << MATRIX_PRAS3_M2PR_Pos))) +#define MATRIX_PRAS3_M3PR_Pos 12 +#define MATRIX_PRAS3_M3PR_Msk (0x3u << MATRIX_PRAS3_M3PR_Pos) /**< \brief (MATRIX_PRAS3) Master 3 Priority */ +#define MATRIX_PRAS3_M3PR(value) ((MATRIX_PRAS3_M3PR_Msk & ((value) << MATRIX_PRAS3_M3PR_Pos))) +/* -------- CCFG_SYSIO : (MATRIX Offset: 0x0114) System I/O Configuration register -------- */ +#define CCFG_SYSIO_SYSIO4 (0x1u << 4) /**< \brief (CCFG_SYSIO) PB4 or TDI Assignment */ +#define CCFG_SYSIO_SYSIO5 (0x1u << 5) /**< \brief (CCFG_SYSIO) PB5 or TDO/TRACESWO Assignment */ +#define CCFG_SYSIO_SYSIO6 (0x1u << 6) /**< \brief (CCFG_SYSIO) PB6 or TMS/SWDIO Assignment */ +#define CCFG_SYSIO_SYSIO7 (0x1u << 7) /**< \brief (CCFG_SYSIO) PB7 or TCK/SWCLK Assignment */ +#define CCFG_SYSIO_SYSIO12 (0x1u << 12) /**< \brief (CCFG_SYSIO) PB12 or ERASE Assignment */ +/* -------- MATRIX_WPMR : (MATRIX Offset: 0x1E4) Write Protect Mode Register -------- */ +#define MATRIX_WPMR_WPEN (0x1u << 0) /**< \brief (MATRIX_WPMR) Write Protect ENable */ +#define MATRIX_WPMR_WPKEY_Pos 8 +#define MATRIX_WPMR_WPKEY_Msk (0xffffffu << MATRIX_WPMR_WPKEY_Pos) /**< \brief (MATRIX_WPMR) Write Protect KEY (Write-only) */ +#define MATRIX_WPMR_WPKEY(value) ((MATRIX_WPMR_WPKEY_Msk & ((value) << MATRIX_WPMR_WPKEY_Pos))) +/* -------- MATRIX_WPSR : (MATRIX Offset: 0x1E8) Write Protect Status Register -------- */ +#define MATRIX_WPSR_WPVS (0x1u << 0) /**< \brief (MATRIX_WPSR) Write Protect Violation Status */ +#define MATRIX_WPSR_WPVSRC_Pos 8 +#define MATRIX_WPSR_WPVSRC_Msk (0xffffu << MATRIX_WPSR_WPVSRC_Pos) /**< \brief (MATRIX_WPSR) Write Protect Violation Source */ + +/*@}*/ + + +#endif /* _SAM3N_MATRIX_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_pdc.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_pdc.h new file mode 100644 index 000000000..6034cf850 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_pdc.h @@ -0,0 +1,98 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_PDC_COMPONENT_ +#define _SAM3N_PDC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Peripheral DMA Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3N_PDC Peripheral DMA Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Pdc hardware registers */ +typedef struct { + RwReg PERIPH_RPR; /**< \brief (Pdc Offset: 0x0) Receive Pointer Register */ + RwReg PERIPH_RCR; /**< \brief (Pdc Offset: 0x4) Receive Counter Register */ + RwReg PERIPH_TPR; /**< \brief (Pdc Offset: 0x8) Transmit Pointer Register */ + RwReg PERIPH_TCR; /**< \brief (Pdc Offset: 0xC) Transmit Counter Register */ + RwReg PERIPH_RNPR; /**< \brief (Pdc Offset: 0x10) Receive Next Pointer Register */ + RwReg PERIPH_RNCR; /**< \brief (Pdc Offset: 0x14) Receive Next Counter Register */ + RwReg PERIPH_TNPR; /**< \brief (Pdc Offset: 0x18) Transmit Next Pointer Register */ + RwReg PERIPH_TNCR; /**< \brief (Pdc Offset: 0x1C) Transmit Next Counter Register */ + WoReg PERIPH_PTCR; /**< \brief (Pdc Offset: 0x20) Transfer Control Register */ + RoReg PERIPH_PTSR; /**< \brief (Pdc Offset: 0x24) Transfer Status Register */ +} Pdc; +#endif /* __ASSEMBLY__ */ +/* -------- PERIPH_RPR : (PDC Offset: 0x0) Receive Pointer Register -------- */ +#define PERIPH_RPR_RXPTR_Pos 0 +#define PERIPH_RPR_RXPTR_Msk (0xffffffffu << PERIPH_RPR_RXPTR_Pos) /**< \brief (PERIPH_RPR) Receive Pointer Register */ +#define PERIPH_RPR_RXPTR(value) ((PERIPH_RPR_RXPTR_Msk & ((value) << PERIPH_RPR_RXPTR_Pos))) +/* -------- PERIPH_RCR : (PDC Offset: 0x4) Receive Counter Register -------- */ +#define PERIPH_RCR_RXCTR_Pos 0 +#define PERIPH_RCR_RXCTR_Msk (0xffffu << PERIPH_RCR_RXCTR_Pos) /**< \brief (PERIPH_RCR) Receive Counter Register */ +#define PERIPH_RCR_RXCTR(value) ((PERIPH_RCR_RXCTR_Msk & ((value) << PERIPH_RCR_RXCTR_Pos))) +/* -------- PERIPH_TPR : (PDC Offset: 0x8) Transmit Pointer Register -------- */ +#define PERIPH_TPR_TXPTR_Pos 0 +#define PERIPH_TPR_TXPTR_Msk (0xffffffffu << PERIPH_TPR_TXPTR_Pos) /**< \brief (PERIPH_TPR) Transmit Counter Register */ +#define PERIPH_TPR_TXPTR(value) ((PERIPH_TPR_TXPTR_Msk & ((value) << PERIPH_TPR_TXPTR_Pos))) +/* -------- PERIPH_TCR : (PDC Offset: 0xC) Transmit Counter Register -------- */ +#define PERIPH_TCR_TXCTR_Pos 0 +#define PERIPH_TCR_TXCTR_Msk (0xffffu << PERIPH_TCR_TXCTR_Pos) /**< \brief (PERIPH_TCR) Transmit Counter Register */ +#define PERIPH_TCR_TXCTR(value) ((PERIPH_TCR_TXCTR_Msk & ((value) << PERIPH_TCR_TXCTR_Pos))) +/* -------- PERIPH_RNPR : (PDC Offset: 0x10) Receive Next Pointer Register -------- */ +#define PERIPH_RNPR_RXNPTR_Pos 0 +#define PERIPH_RNPR_RXNPTR_Msk (0xffffffffu << PERIPH_RNPR_RXNPTR_Pos) /**< \brief (PERIPH_RNPR) Receive Next Pointer */ +#define PERIPH_RNPR_RXNPTR(value) ((PERIPH_RNPR_RXNPTR_Msk & ((value) << PERIPH_RNPR_RXNPTR_Pos))) +/* -------- PERIPH_RNCR : (PDC Offset: 0x14) Receive Next Counter Register -------- */ +#define PERIPH_RNCR_RXNCTR_Pos 0 +#define PERIPH_RNCR_RXNCTR_Msk (0xffffu << PERIPH_RNCR_RXNCTR_Pos) /**< \brief (PERIPH_RNCR) Receive Next Counter */ +#define PERIPH_RNCR_RXNCTR(value) ((PERIPH_RNCR_RXNCTR_Msk & ((value) << PERIPH_RNCR_RXNCTR_Pos))) +/* -------- PERIPH_TNPR : (PDC Offset: 0x18) Transmit Next Pointer Register -------- */ +#define PERIPH_TNPR_TXNPTR_Pos 0 +#define PERIPH_TNPR_TXNPTR_Msk (0xffffffffu << PERIPH_TNPR_TXNPTR_Pos) /**< \brief (PERIPH_TNPR) Transmit Next Pointer */ +#define PERIPH_TNPR_TXNPTR(value) ((PERIPH_TNPR_TXNPTR_Msk & ((value) << PERIPH_TNPR_TXNPTR_Pos))) +/* -------- PERIPH_TNCR : (PDC Offset: 0x1C) Transmit Next Counter Register -------- */ +#define PERIPH_TNCR_TXNCTR_Pos 0 +#define PERIPH_TNCR_TXNCTR_Msk (0xffffu << PERIPH_TNCR_TXNCTR_Pos) /**< \brief (PERIPH_TNCR) Transmit Counter Next */ +#define PERIPH_TNCR_TXNCTR(value) ((PERIPH_TNCR_TXNCTR_Msk & ((value) << PERIPH_TNCR_TXNCTR_Pos))) +/* -------- PERIPH_PTCR : (PDC Offset: 0x20) Transfer Control Register -------- */ +#define PERIPH_PTCR_RXTEN (0x1u << 0) /**< \brief (PERIPH_PTCR) Receiver Transfer Enable */ +#define PERIPH_PTCR_RXTDIS (0x1u << 1) /**< \brief (PERIPH_PTCR) Receiver Transfer Disable */ +#define PERIPH_PTCR_TXTEN (0x1u << 8) /**< \brief (PERIPH_PTCR) Transmitter Transfer Enable */ +#define PERIPH_PTCR_TXTDIS (0x1u << 9) /**< \brief (PERIPH_PTCR) Transmitter Transfer Disable */ +/* -------- PERIPH_PTSR : (PDC Offset: 0x24) Transfer Status Register -------- */ +#define PERIPH_PTSR_RXTEN (0x1u << 0) /**< \brief (PERIPH_PTSR) Receiver Transfer Enable */ +#define PERIPH_PTSR_TXTEN (0x1u << 8) /**< \brief (PERIPH_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3N_PDC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_pio.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_pio.h new file mode 100644 index 000000000..e83076a7a --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_pio.h @@ -0,0 +1,1572 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_PIO_COMPONENT_ +#define _SAM3N_PIO_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Parallel Input/Output Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3N_PIO Parallel Input/Output Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Pio hardware registers */ +typedef struct { + WoReg PIO_PER; /**< \brief (Pio Offset: 0x0000) PIO Enable Register */ + WoReg PIO_PDR; /**< \brief (Pio Offset: 0x0004) PIO Disable Register */ + RoReg PIO_PSR; /**< \brief (Pio Offset: 0x0008) PIO Status Register */ + RoReg Reserved1[1]; + WoReg PIO_OER; /**< \brief (Pio Offset: 0x0010) Output Enable Register */ + WoReg PIO_ODR; /**< \brief (Pio Offset: 0x0014) Output Disable Register */ + RoReg PIO_OSR; /**< \brief (Pio Offset: 0x0018) Output Status Register */ + RoReg Reserved2[1]; + WoReg PIO_IFER; /**< \brief (Pio Offset: 0x0020) Glitch Input Filter Enable Register */ + WoReg PIO_IFDR; /**< \brief (Pio Offset: 0x0024) Glitch Input Filter Disable Register */ + RoReg PIO_IFSR; /**< \brief (Pio Offset: 0x0028) Glitch Input Filter Status Register */ + RoReg Reserved3[1]; + WoReg PIO_SODR; /**< \brief (Pio Offset: 0x0030) Set Output Data Register */ + WoReg PIO_CODR; /**< \brief (Pio Offset: 0x0034) Clear Output Data Register */ + RwReg PIO_ODSR; /**< \brief (Pio Offset: 0x0038) Output Data Status Register */ + RoReg PIO_PDSR; /**< \brief (Pio Offset: 0x003C) Pin Data Status Register */ + WoReg PIO_IER; /**< \brief (Pio Offset: 0x0040) Interrupt Enable Register */ + WoReg PIO_IDR; /**< \brief (Pio Offset: 0x0044) Interrupt Disable Register */ + RoReg PIO_IMR; /**< \brief (Pio Offset: 0x0048) Interrupt Mask Register */ + RoReg PIO_ISR; /**< \brief (Pio Offset: 0x004C) Interrupt Status Register */ + WoReg PIO_MDER; /**< \brief (Pio Offset: 0x0050) Multi-driver Enable Register */ + WoReg PIO_MDDR; /**< \brief (Pio Offset: 0x0054) Multi-driver Disable Register */ + RoReg PIO_MDSR; /**< \brief (Pio Offset: 0x0058) Multi-driver Status Register */ + RoReg Reserved4[1]; + WoReg PIO_PUDR; /**< \brief (Pio Offset: 0x0060) Pull-up Disable Register */ + WoReg PIO_PUER; /**< \brief (Pio Offset: 0x0064) Pull-up Enable Register */ + RoReg PIO_PUSR; /**< \brief (Pio Offset: 0x0068) Pad Pull-up Status Register */ + RoReg Reserved5[1]; + RwReg PIO_ABCDSR[2]; /**< \brief (Pio Offset: 0x0070) Peripheral Select Register */ + RoReg Reserved6[2]; + WoReg PIO_IFSCDR; /**< \brief (Pio Offset: 0x0080) Input Filter Slow Clock Disable Register */ + WoReg PIO_IFSCER; /**< \brief (Pio Offset: 0x0084) Input Filter Slow Clock Enable Register */ + RoReg PIO_IFSCSR; /**< \brief (Pio Offset: 0x0088) Input Filter Slow Clock Status Register */ + RwReg PIO_SCDR; /**< \brief (Pio Offset: 0x008C) Slow Clock Divider Debouncing Register */ + WoReg PIO_PPDDR; /**< \brief (Pio Offset: 0x0090) Pad Pull-down Disable Register */ + WoReg PIO_PPDER; /**< \brief (Pio Offset: 0x0094) Pad Pull-down Enable Register */ + RoReg PIO_PPDSR; /**< \brief (Pio Offset: 0x0098) Pad Pull-down Status Register */ + RoReg Reserved7[1]; + WoReg PIO_OWER; /**< \brief (Pio Offset: 0x00A0) Output Write Enable */ + WoReg PIO_OWDR; /**< \brief (Pio Offset: 0x00A4) Output Write Disable */ + RoReg PIO_OWSR; /**< \brief (Pio Offset: 0x00A8) Output Write Status Register */ + RoReg Reserved8[1]; + WoReg PIO_AIMER; /**< \brief (Pio Offset: 0x00B0) Additional Interrupt Modes Enable Register */ + WoReg PIO_AIMDR; /**< \brief (Pio Offset: 0x00B4) Additional Interrupt Modes Disables Register */ + RoReg PIO_AIMMR; /**< \brief (Pio Offset: 0x00B8) Additional Interrupt Modes Mask Register */ + RoReg Reserved9[1]; + WoReg PIO_ESR; /**< \brief (Pio Offset: 0x00C0) Edge Select Register */ + WoReg PIO_LSR; /**< \brief (Pio Offset: 0x00C4) Level Select Register */ + RoReg PIO_ELSR; /**< \brief (Pio Offset: 0x00C8) Edge/Level Status Register */ + RoReg Reserved10[1]; + WoReg PIO_FELLSR; /**< \brief (Pio Offset: 0x00D0) Falling Edge/Low Level Select Register */ + WoReg PIO_REHLSR; /**< \brief (Pio Offset: 0x00D4) Rising Edge/ High Level Select Register */ + RoReg PIO_FRLHSR; /**< \brief (Pio Offset: 0x00D8) Fall/Rise - Low/High Status Register */ + RoReg Reserved11[1]; + RoReg PIO_LOCKSR; /**< \brief (Pio Offset: 0x00E0) Lock Status */ + RwReg PIO_WPMR; /**< \brief (Pio Offset: 0x00E4) Write Protect Mode Register */ + RoReg PIO_WPSR; /**< \brief (Pio Offset: 0x00E8) Write Protect Status Register */ + RoReg Reserved12[5]; + RwReg PIO_SCHMITT; /**< \brief (Pio Offset: 0x0100) Schmitt Trigger Register */ +} Pio; +#endif /* __ASSEMBLY__ */ +/* -------- PIO_PER : (PIO Offset: 0x0000) PIO Enable Register -------- */ +#define PIO_PER_P0 (0x1u << 0) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P1 (0x1u << 1) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P2 (0x1u << 2) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P3 (0x1u << 3) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P4 (0x1u << 4) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P5 (0x1u << 5) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P6 (0x1u << 6) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P7 (0x1u << 7) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P8 (0x1u << 8) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P9 (0x1u << 9) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P10 (0x1u << 10) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P11 (0x1u << 11) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P12 (0x1u << 12) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P13 (0x1u << 13) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P14 (0x1u << 14) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P15 (0x1u << 15) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P16 (0x1u << 16) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P17 (0x1u << 17) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P18 (0x1u << 18) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P19 (0x1u << 19) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P20 (0x1u << 20) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P21 (0x1u << 21) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P22 (0x1u << 22) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P23 (0x1u << 23) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P24 (0x1u << 24) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P25 (0x1u << 25) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P26 (0x1u << 26) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P27 (0x1u << 27) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P28 (0x1u << 28) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P29 (0x1u << 29) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P30 (0x1u << 30) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P31 (0x1u << 31) /**< \brief (PIO_PER) PIO Enable */ +/* -------- PIO_PDR : (PIO Offset: 0x0004) PIO Disable Register -------- */ +#define PIO_PDR_P0 (0x1u << 0) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P1 (0x1u << 1) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P2 (0x1u << 2) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P3 (0x1u << 3) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P4 (0x1u << 4) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P5 (0x1u << 5) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P6 (0x1u << 6) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P7 (0x1u << 7) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P8 (0x1u << 8) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P9 (0x1u << 9) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P10 (0x1u << 10) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P11 (0x1u << 11) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P12 (0x1u << 12) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P13 (0x1u << 13) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P14 (0x1u << 14) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P15 (0x1u << 15) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P16 (0x1u << 16) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P17 (0x1u << 17) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P18 (0x1u << 18) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P19 (0x1u << 19) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P20 (0x1u << 20) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P21 (0x1u << 21) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P22 (0x1u << 22) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P23 (0x1u << 23) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P24 (0x1u << 24) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P25 (0x1u << 25) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P26 (0x1u << 26) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P27 (0x1u << 27) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P28 (0x1u << 28) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P29 (0x1u << 29) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P30 (0x1u << 30) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P31 (0x1u << 31) /**< \brief (PIO_PDR) PIO Disable */ +/* -------- PIO_PSR : (PIO Offset: 0x0008) PIO Status Register -------- */ +#define PIO_PSR_P0 (0x1u << 0) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P1 (0x1u << 1) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P2 (0x1u << 2) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P3 (0x1u << 3) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P4 (0x1u << 4) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P5 (0x1u << 5) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P6 (0x1u << 6) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P7 (0x1u << 7) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P8 (0x1u << 8) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P9 (0x1u << 9) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P10 (0x1u << 10) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P11 (0x1u << 11) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P12 (0x1u << 12) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P13 (0x1u << 13) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P14 (0x1u << 14) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P15 (0x1u << 15) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P16 (0x1u << 16) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P17 (0x1u << 17) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P18 (0x1u << 18) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P19 (0x1u << 19) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P20 (0x1u << 20) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P21 (0x1u << 21) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P22 (0x1u << 22) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P23 (0x1u << 23) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P24 (0x1u << 24) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P25 (0x1u << 25) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P26 (0x1u << 26) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P27 (0x1u << 27) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P28 (0x1u << 28) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P29 (0x1u << 29) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P30 (0x1u << 30) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P31 (0x1u << 31) /**< \brief (PIO_PSR) PIO Status */ +/* -------- PIO_OER : (PIO Offset: 0x0010) Output Enable Register -------- */ +#define PIO_OER_P0 (0x1u << 0) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P1 (0x1u << 1) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P2 (0x1u << 2) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P3 (0x1u << 3) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P4 (0x1u << 4) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P5 (0x1u << 5) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P6 (0x1u << 6) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P7 (0x1u << 7) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P8 (0x1u << 8) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P9 (0x1u << 9) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P10 (0x1u << 10) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P11 (0x1u << 11) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P12 (0x1u << 12) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P13 (0x1u << 13) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P14 (0x1u << 14) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P15 (0x1u << 15) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P16 (0x1u << 16) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P17 (0x1u << 17) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P18 (0x1u << 18) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P19 (0x1u << 19) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P20 (0x1u << 20) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P21 (0x1u << 21) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P22 (0x1u << 22) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P23 (0x1u << 23) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P24 (0x1u << 24) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P25 (0x1u << 25) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P26 (0x1u << 26) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P27 (0x1u << 27) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P28 (0x1u << 28) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P29 (0x1u << 29) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P30 (0x1u << 30) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P31 (0x1u << 31) /**< \brief (PIO_OER) Output Enable */ +/* -------- PIO_ODR : (PIO Offset: 0x0014) Output Disable Register -------- */ +#define PIO_ODR_P0 (0x1u << 0) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P1 (0x1u << 1) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P2 (0x1u << 2) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P3 (0x1u << 3) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P4 (0x1u << 4) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P5 (0x1u << 5) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P6 (0x1u << 6) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P7 (0x1u << 7) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P8 (0x1u << 8) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P9 (0x1u << 9) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P10 (0x1u << 10) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P11 (0x1u << 11) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P12 (0x1u << 12) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P13 (0x1u << 13) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P14 (0x1u << 14) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P15 (0x1u << 15) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P16 (0x1u << 16) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P17 (0x1u << 17) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P18 (0x1u << 18) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P19 (0x1u << 19) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P20 (0x1u << 20) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P21 (0x1u << 21) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P22 (0x1u << 22) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P23 (0x1u << 23) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P24 (0x1u << 24) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P25 (0x1u << 25) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P26 (0x1u << 26) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P27 (0x1u << 27) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P28 (0x1u << 28) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P29 (0x1u << 29) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P30 (0x1u << 30) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P31 (0x1u << 31) /**< \brief (PIO_ODR) Output Disable */ +/* -------- PIO_OSR : (PIO Offset: 0x0018) Output Status Register -------- */ +#define PIO_OSR_P0 (0x1u << 0) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P1 (0x1u << 1) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P2 (0x1u << 2) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P3 (0x1u << 3) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P4 (0x1u << 4) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P5 (0x1u << 5) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P6 (0x1u << 6) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P7 (0x1u << 7) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P8 (0x1u << 8) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P9 (0x1u << 9) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P10 (0x1u << 10) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P11 (0x1u << 11) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P12 (0x1u << 12) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P13 (0x1u << 13) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P14 (0x1u << 14) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P15 (0x1u << 15) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P16 (0x1u << 16) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P17 (0x1u << 17) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P18 (0x1u << 18) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P19 (0x1u << 19) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P20 (0x1u << 20) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P21 (0x1u << 21) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P22 (0x1u << 22) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P23 (0x1u << 23) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P24 (0x1u << 24) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P25 (0x1u << 25) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P26 (0x1u << 26) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P27 (0x1u << 27) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P28 (0x1u << 28) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P29 (0x1u << 29) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P30 (0x1u << 30) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P31 (0x1u << 31) /**< \brief (PIO_OSR) Output Status */ +/* -------- PIO_IFER : (PIO Offset: 0x0020) Glitch Input Filter Enable Register -------- */ +#define PIO_IFER_P0 (0x1u << 0) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P1 (0x1u << 1) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P2 (0x1u << 2) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P3 (0x1u << 3) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P4 (0x1u << 4) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P5 (0x1u << 5) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P6 (0x1u << 6) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P7 (0x1u << 7) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P8 (0x1u << 8) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P9 (0x1u << 9) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P10 (0x1u << 10) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P11 (0x1u << 11) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P12 (0x1u << 12) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P13 (0x1u << 13) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P14 (0x1u << 14) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P15 (0x1u << 15) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P16 (0x1u << 16) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P17 (0x1u << 17) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P18 (0x1u << 18) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P19 (0x1u << 19) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P20 (0x1u << 20) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P21 (0x1u << 21) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P22 (0x1u << 22) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P23 (0x1u << 23) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P24 (0x1u << 24) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P25 (0x1u << 25) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P26 (0x1u << 26) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P27 (0x1u << 27) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P28 (0x1u << 28) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P29 (0x1u << 29) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P30 (0x1u << 30) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P31 (0x1u << 31) /**< \brief (PIO_IFER) Input Filter Enable */ +/* -------- PIO_IFDR : (PIO Offset: 0x0024) Glitch Input Filter Disable Register -------- */ +#define PIO_IFDR_P0 (0x1u << 0) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P1 (0x1u << 1) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P2 (0x1u << 2) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P3 (0x1u << 3) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P4 (0x1u << 4) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P5 (0x1u << 5) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P6 (0x1u << 6) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P7 (0x1u << 7) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P8 (0x1u << 8) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P9 (0x1u << 9) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P10 (0x1u << 10) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P11 (0x1u << 11) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P12 (0x1u << 12) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P13 (0x1u << 13) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P14 (0x1u << 14) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P15 (0x1u << 15) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P16 (0x1u << 16) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P17 (0x1u << 17) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P18 (0x1u << 18) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P19 (0x1u << 19) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P20 (0x1u << 20) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P21 (0x1u << 21) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P22 (0x1u << 22) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P23 (0x1u << 23) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P24 (0x1u << 24) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P25 (0x1u << 25) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P26 (0x1u << 26) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P27 (0x1u << 27) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P28 (0x1u << 28) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P29 (0x1u << 29) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P30 (0x1u << 30) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P31 (0x1u << 31) /**< \brief (PIO_IFDR) Input Filter Disable */ +/* -------- PIO_IFSR : (PIO Offset: 0x0028) Glitch Input Filter Status Register -------- */ +#define PIO_IFSR_P0 (0x1u << 0) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P1 (0x1u << 1) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P2 (0x1u << 2) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P3 (0x1u << 3) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P4 (0x1u << 4) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P5 (0x1u << 5) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P6 (0x1u << 6) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P7 (0x1u << 7) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P8 (0x1u << 8) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P9 (0x1u << 9) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P10 (0x1u << 10) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P11 (0x1u << 11) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P12 (0x1u << 12) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P13 (0x1u << 13) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P14 (0x1u << 14) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P15 (0x1u << 15) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P16 (0x1u << 16) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P17 (0x1u << 17) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P18 (0x1u << 18) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P19 (0x1u << 19) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P20 (0x1u << 20) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P21 (0x1u << 21) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P22 (0x1u << 22) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P23 (0x1u << 23) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P24 (0x1u << 24) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P25 (0x1u << 25) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P26 (0x1u << 26) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P27 (0x1u << 27) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P28 (0x1u << 28) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P29 (0x1u << 29) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P30 (0x1u << 30) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P31 (0x1u << 31) /**< \brief (PIO_IFSR) Input Filer Status */ +/* -------- PIO_SODR : (PIO Offset: 0x0030) Set Output Data Register -------- */ +#define PIO_SODR_P0 (0x1u << 0) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P1 (0x1u << 1) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P2 (0x1u << 2) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P3 (0x1u << 3) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P4 (0x1u << 4) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P5 (0x1u << 5) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P6 (0x1u << 6) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P7 (0x1u << 7) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P8 (0x1u << 8) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P9 (0x1u << 9) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P10 (0x1u << 10) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P11 (0x1u << 11) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P12 (0x1u << 12) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P13 (0x1u << 13) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P14 (0x1u << 14) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P15 (0x1u << 15) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P16 (0x1u << 16) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P17 (0x1u << 17) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P18 (0x1u << 18) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P19 (0x1u << 19) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P20 (0x1u << 20) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P21 (0x1u << 21) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P22 (0x1u << 22) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P23 (0x1u << 23) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P24 (0x1u << 24) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P25 (0x1u << 25) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P26 (0x1u << 26) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P27 (0x1u << 27) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P28 (0x1u << 28) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P29 (0x1u << 29) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P30 (0x1u << 30) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P31 (0x1u << 31) /**< \brief (PIO_SODR) Set Output Data */ +/* -------- PIO_CODR : (PIO Offset: 0x0034) Clear Output Data Register -------- */ +#define PIO_CODR_P0 (0x1u << 0) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P1 (0x1u << 1) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P2 (0x1u << 2) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P3 (0x1u << 3) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P4 (0x1u << 4) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P5 (0x1u << 5) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P6 (0x1u << 6) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P7 (0x1u << 7) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P8 (0x1u << 8) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P9 (0x1u << 9) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P10 (0x1u << 10) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P11 (0x1u << 11) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P12 (0x1u << 12) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P13 (0x1u << 13) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P14 (0x1u << 14) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P15 (0x1u << 15) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P16 (0x1u << 16) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P17 (0x1u << 17) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P18 (0x1u << 18) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P19 (0x1u << 19) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P20 (0x1u << 20) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P21 (0x1u << 21) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P22 (0x1u << 22) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P23 (0x1u << 23) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P24 (0x1u << 24) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P25 (0x1u << 25) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P26 (0x1u << 26) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P27 (0x1u << 27) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P28 (0x1u << 28) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P29 (0x1u << 29) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P30 (0x1u << 30) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P31 (0x1u << 31) /**< \brief (PIO_CODR) Clear Output Data */ +/* -------- PIO_ODSR : (PIO Offset: 0x0038) Output Data Status Register -------- */ +#define PIO_ODSR_P0 (0x1u << 0) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P1 (0x1u << 1) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P2 (0x1u << 2) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P3 (0x1u << 3) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P4 (0x1u << 4) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P5 (0x1u << 5) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P6 (0x1u << 6) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P7 (0x1u << 7) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P8 (0x1u << 8) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P9 (0x1u << 9) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P10 (0x1u << 10) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P11 (0x1u << 11) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P12 (0x1u << 12) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P13 (0x1u << 13) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P14 (0x1u << 14) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P15 (0x1u << 15) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P16 (0x1u << 16) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P17 (0x1u << 17) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P18 (0x1u << 18) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P19 (0x1u << 19) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P20 (0x1u << 20) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P21 (0x1u << 21) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P22 (0x1u << 22) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P23 (0x1u << 23) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P24 (0x1u << 24) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P25 (0x1u << 25) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P26 (0x1u << 26) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P27 (0x1u << 27) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P28 (0x1u << 28) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P29 (0x1u << 29) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P30 (0x1u << 30) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P31 (0x1u << 31) /**< \brief (PIO_ODSR) Output Data Status */ +/* -------- PIO_PDSR : (PIO Offset: 0x003C) Pin Data Status Register -------- */ +#define PIO_PDSR_P0 (0x1u << 0) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P1 (0x1u << 1) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P2 (0x1u << 2) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P3 (0x1u << 3) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P4 (0x1u << 4) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P5 (0x1u << 5) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P6 (0x1u << 6) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P7 (0x1u << 7) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P8 (0x1u << 8) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P9 (0x1u << 9) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P10 (0x1u << 10) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P11 (0x1u << 11) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P12 (0x1u << 12) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P13 (0x1u << 13) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P14 (0x1u << 14) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P15 (0x1u << 15) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P16 (0x1u << 16) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P17 (0x1u << 17) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P18 (0x1u << 18) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P19 (0x1u << 19) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P20 (0x1u << 20) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P21 (0x1u << 21) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P22 (0x1u << 22) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P23 (0x1u << 23) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P24 (0x1u << 24) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P25 (0x1u << 25) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P26 (0x1u << 26) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P27 (0x1u << 27) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P28 (0x1u << 28) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P29 (0x1u << 29) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P30 (0x1u << 30) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P31 (0x1u << 31) /**< \brief (PIO_PDSR) Output Data Status */ +/* -------- PIO_IER : (PIO Offset: 0x0040) Interrupt Enable Register -------- */ +#define PIO_IER_P0 (0x1u << 0) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P1 (0x1u << 1) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P2 (0x1u << 2) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P3 (0x1u << 3) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P4 (0x1u << 4) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P5 (0x1u << 5) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P6 (0x1u << 6) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P7 (0x1u << 7) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P8 (0x1u << 8) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P9 (0x1u << 9) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P10 (0x1u << 10) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P11 (0x1u << 11) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P12 (0x1u << 12) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P13 (0x1u << 13) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P14 (0x1u << 14) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P15 (0x1u << 15) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P16 (0x1u << 16) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P17 (0x1u << 17) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P18 (0x1u << 18) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P19 (0x1u << 19) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P20 (0x1u << 20) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P21 (0x1u << 21) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P22 (0x1u << 22) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P23 (0x1u << 23) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P24 (0x1u << 24) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P25 (0x1u << 25) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P26 (0x1u << 26) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P27 (0x1u << 27) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P28 (0x1u << 28) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P29 (0x1u << 29) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P30 (0x1u << 30) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P31 (0x1u << 31) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +/* -------- PIO_IDR : (PIO Offset: 0x0044) Interrupt Disable Register -------- */ +#define PIO_IDR_P0 (0x1u << 0) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P1 (0x1u << 1) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P2 (0x1u << 2) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P3 (0x1u << 3) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P4 (0x1u << 4) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P5 (0x1u << 5) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P6 (0x1u << 6) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P7 (0x1u << 7) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P8 (0x1u << 8) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P9 (0x1u << 9) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P10 (0x1u << 10) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P11 (0x1u << 11) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P12 (0x1u << 12) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P13 (0x1u << 13) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P14 (0x1u << 14) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P15 (0x1u << 15) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P16 (0x1u << 16) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P17 (0x1u << 17) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P18 (0x1u << 18) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P19 (0x1u << 19) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P20 (0x1u << 20) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P21 (0x1u << 21) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P22 (0x1u << 22) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P23 (0x1u << 23) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P24 (0x1u << 24) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P25 (0x1u << 25) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P26 (0x1u << 26) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P27 (0x1u << 27) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P28 (0x1u << 28) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P29 (0x1u << 29) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P30 (0x1u << 30) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P31 (0x1u << 31) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +/* -------- PIO_IMR : (PIO Offset: 0x0048) Interrupt Mask Register -------- */ +#define PIO_IMR_P0 (0x1u << 0) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P1 (0x1u << 1) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P2 (0x1u << 2) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P3 (0x1u << 3) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P4 (0x1u << 4) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P5 (0x1u << 5) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P6 (0x1u << 6) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P7 (0x1u << 7) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P8 (0x1u << 8) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P9 (0x1u << 9) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P10 (0x1u << 10) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P11 (0x1u << 11) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P12 (0x1u << 12) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P13 (0x1u << 13) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P14 (0x1u << 14) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P15 (0x1u << 15) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P16 (0x1u << 16) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P17 (0x1u << 17) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P18 (0x1u << 18) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P19 (0x1u << 19) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P20 (0x1u << 20) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P21 (0x1u << 21) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P22 (0x1u << 22) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P23 (0x1u << 23) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P24 (0x1u << 24) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P25 (0x1u << 25) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P26 (0x1u << 26) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P27 (0x1u << 27) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P28 (0x1u << 28) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P29 (0x1u << 29) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P30 (0x1u << 30) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P31 (0x1u << 31) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +/* -------- PIO_ISR : (PIO Offset: 0x004C) Interrupt Status Register -------- */ +#define PIO_ISR_P0 (0x1u << 0) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P1 (0x1u << 1) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P2 (0x1u << 2) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P3 (0x1u << 3) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P4 (0x1u << 4) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P5 (0x1u << 5) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P6 (0x1u << 6) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P7 (0x1u << 7) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P8 (0x1u << 8) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P9 (0x1u << 9) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P10 (0x1u << 10) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P11 (0x1u << 11) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P12 (0x1u << 12) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P13 (0x1u << 13) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P14 (0x1u << 14) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P15 (0x1u << 15) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P16 (0x1u << 16) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P17 (0x1u << 17) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P18 (0x1u << 18) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P19 (0x1u << 19) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P20 (0x1u << 20) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P21 (0x1u << 21) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P22 (0x1u << 22) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P23 (0x1u << 23) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P24 (0x1u << 24) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P25 (0x1u << 25) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P26 (0x1u << 26) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P27 (0x1u << 27) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P28 (0x1u << 28) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P29 (0x1u << 29) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P30 (0x1u << 30) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P31 (0x1u << 31) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +/* -------- PIO_MDER : (PIO Offset: 0x0050) Multi-driver Enable Register -------- */ +#define PIO_MDER_P0 (0x1u << 0) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P1 (0x1u << 1) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P2 (0x1u << 2) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P3 (0x1u << 3) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P4 (0x1u << 4) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P5 (0x1u << 5) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P6 (0x1u << 6) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P7 (0x1u << 7) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P8 (0x1u << 8) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P9 (0x1u << 9) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P10 (0x1u << 10) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P11 (0x1u << 11) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P12 (0x1u << 12) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P13 (0x1u << 13) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P14 (0x1u << 14) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P15 (0x1u << 15) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P16 (0x1u << 16) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P17 (0x1u << 17) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P18 (0x1u << 18) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P19 (0x1u << 19) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P20 (0x1u << 20) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P21 (0x1u << 21) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P22 (0x1u << 22) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P23 (0x1u << 23) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P24 (0x1u << 24) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P25 (0x1u << 25) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P26 (0x1u << 26) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P27 (0x1u << 27) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P28 (0x1u << 28) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P29 (0x1u << 29) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P30 (0x1u << 30) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P31 (0x1u << 31) /**< \brief (PIO_MDER) Multi Drive Enable. */ +/* -------- PIO_MDDR : (PIO Offset: 0x0054) Multi-driver Disable Register -------- */ +#define PIO_MDDR_P0 (0x1u << 0) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P1 (0x1u << 1) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P2 (0x1u << 2) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P3 (0x1u << 3) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P4 (0x1u << 4) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P5 (0x1u << 5) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P6 (0x1u << 6) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P7 (0x1u << 7) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P8 (0x1u << 8) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P9 (0x1u << 9) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P10 (0x1u << 10) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P11 (0x1u << 11) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P12 (0x1u << 12) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P13 (0x1u << 13) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P14 (0x1u << 14) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P15 (0x1u << 15) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P16 (0x1u << 16) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P17 (0x1u << 17) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P18 (0x1u << 18) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P19 (0x1u << 19) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P20 (0x1u << 20) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P21 (0x1u << 21) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P22 (0x1u << 22) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P23 (0x1u << 23) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P24 (0x1u << 24) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P25 (0x1u << 25) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P26 (0x1u << 26) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P27 (0x1u << 27) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P28 (0x1u << 28) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P29 (0x1u << 29) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P30 (0x1u << 30) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P31 (0x1u << 31) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +/* -------- PIO_MDSR : (PIO Offset: 0x0058) Multi-driver Status Register -------- */ +#define PIO_MDSR_P0 (0x1u << 0) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P1 (0x1u << 1) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P2 (0x1u << 2) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P3 (0x1u << 3) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P4 (0x1u << 4) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P5 (0x1u << 5) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P6 (0x1u << 6) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P7 (0x1u << 7) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P8 (0x1u << 8) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P9 (0x1u << 9) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P10 (0x1u << 10) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P11 (0x1u << 11) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P12 (0x1u << 12) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P13 (0x1u << 13) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P14 (0x1u << 14) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P15 (0x1u << 15) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P16 (0x1u << 16) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P17 (0x1u << 17) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P18 (0x1u << 18) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P19 (0x1u << 19) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P20 (0x1u << 20) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P21 (0x1u << 21) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P22 (0x1u << 22) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P23 (0x1u << 23) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P24 (0x1u << 24) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P25 (0x1u << 25) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P26 (0x1u << 26) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P27 (0x1u << 27) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P28 (0x1u << 28) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P29 (0x1u << 29) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P30 (0x1u << 30) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P31 (0x1u << 31) /**< \brief (PIO_MDSR) Multi Drive Status. */ +/* -------- PIO_PUDR : (PIO Offset: 0x0060) Pull-up Disable Register -------- */ +#define PIO_PUDR_P0 (0x1u << 0) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P1 (0x1u << 1) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P2 (0x1u << 2) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P3 (0x1u << 3) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P4 (0x1u << 4) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P5 (0x1u << 5) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P6 (0x1u << 6) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P7 (0x1u << 7) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P8 (0x1u << 8) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P9 (0x1u << 9) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P10 (0x1u << 10) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P11 (0x1u << 11) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P12 (0x1u << 12) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P13 (0x1u << 13) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P14 (0x1u << 14) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P15 (0x1u << 15) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P16 (0x1u << 16) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P17 (0x1u << 17) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P18 (0x1u << 18) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P19 (0x1u << 19) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P20 (0x1u << 20) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P21 (0x1u << 21) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P22 (0x1u << 22) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P23 (0x1u << 23) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P24 (0x1u << 24) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P25 (0x1u << 25) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P26 (0x1u << 26) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P27 (0x1u << 27) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P28 (0x1u << 28) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P29 (0x1u << 29) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P30 (0x1u << 30) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P31 (0x1u << 31) /**< \brief (PIO_PUDR) Pull Up Disable. */ +/* -------- PIO_PUER : (PIO Offset: 0x0064) Pull-up Enable Register -------- */ +#define PIO_PUER_P0 (0x1u << 0) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P1 (0x1u << 1) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P2 (0x1u << 2) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P3 (0x1u << 3) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P4 (0x1u << 4) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P5 (0x1u << 5) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P6 (0x1u << 6) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P7 (0x1u << 7) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P8 (0x1u << 8) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P9 (0x1u << 9) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P10 (0x1u << 10) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P11 (0x1u << 11) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P12 (0x1u << 12) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P13 (0x1u << 13) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P14 (0x1u << 14) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P15 (0x1u << 15) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P16 (0x1u << 16) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P17 (0x1u << 17) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P18 (0x1u << 18) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P19 (0x1u << 19) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P20 (0x1u << 20) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P21 (0x1u << 21) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P22 (0x1u << 22) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P23 (0x1u << 23) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P24 (0x1u << 24) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P25 (0x1u << 25) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P26 (0x1u << 26) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P27 (0x1u << 27) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P28 (0x1u << 28) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P29 (0x1u << 29) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P30 (0x1u << 30) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P31 (0x1u << 31) /**< \brief (PIO_PUER) Pull Up Enable. */ +/* -------- PIO_PUSR : (PIO Offset: 0x0068) Pad Pull-up Status Register -------- */ +#define PIO_PUSR_P0 (0x1u << 0) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P1 (0x1u << 1) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P2 (0x1u << 2) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P3 (0x1u << 3) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P4 (0x1u << 4) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P5 (0x1u << 5) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P6 (0x1u << 6) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P7 (0x1u << 7) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P8 (0x1u << 8) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P9 (0x1u << 9) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P10 (0x1u << 10) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P11 (0x1u << 11) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P12 (0x1u << 12) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P13 (0x1u << 13) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P14 (0x1u << 14) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P15 (0x1u << 15) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P16 (0x1u << 16) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P17 (0x1u << 17) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P18 (0x1u << 18) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P19 (0x1u << 19) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P20 (0x1u << 20) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P21 (0x1u << 21) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P22 (0x1u << 22) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P23 (0x1u << 23) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P24 (0x1u << 24) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P25 (0x1u << 25) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P26 (0x1u << 26) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P27 (0x1u << 27) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P28 (0x1u << 28) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P29 (0x1u << 29) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P30 (0x1u << 30) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P31 (0x1u << 31) /**< \brief (PIO_PUSR) Pull Up Status. */ +/* -------- PIO_ABCDSR[2] : (PIO Offset: 0x0070) Peripheral Select Register -------- */ +#define PIO_ABCDSR_P0 (0x1u << 0) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P1 (0x1u << 1) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P2 (0x1u << 2) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P3 (0x1u << 3) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P4 (0x1u << 4) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P5 (0x1u << 5) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P6 (0x1u << 6) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P7 (0x1u << 7) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P8 (0x1u << 8) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P9 (0x1u << 9) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P10 (0x1u << 10) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P11 (0x1u << 11) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P12 (0x1u << 12) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P13 (0x1u << 13) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P14 (0x1u << 14) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P15 (0x1u << 15) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P16 (0x1u << 16) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P17 (0x1u << 17) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P18 (0x1u << 18) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P19 (0x1u << 19) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P20 (0x1u << 20) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P21 (0x1u << 21) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P22 (0x1u << 22) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P23 (0x1u << 23) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P24 (0x1u << 24) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P25 (0x1u << 25) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P26 (0x1u << 26) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P27 (0x1u << 27) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P28 (0x1u << 28) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P29 (0x1u << 29) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P30 (0x1u << 30) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P31 (0x1u << 31) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +/* -------- PIO_IFSCDR : (PIO Offset: 0x0080) Input Filter Slow Clock Disable Register -------- */ +#define PIO_IFSCDR_P0 (0x1u << 0) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P1 (0x1u << 1) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P2 (0x1u << 2) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P3 (0x1u << 3) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P4 (0x1u << 4) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P5 (0x1u << 5) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P6 (0x1u << 6) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P7 (0x1u << 7) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P8 (0x1u << 8) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P9 (0x1u << 9) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P10 (0x1u << 10) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P11 (0x1u << 11) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P12 (0x1u << 12) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P13 (0x1u << 13) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P14 (0x1u << 14) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P15 (0x1u << 15) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P16 (0x1u << 16) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P17 (0x1u << 17) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P18 (0x1u << 18) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P19 (0x1u << 19) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P20 (0x1u << 20) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P21 (0x1u << 21) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P22 (0x1u << 22) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P23 (0x1u << 23) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P24 (0x1u << 24) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P25 (0x1u << 25) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P26 (0x1u << 26) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P27 (0x1u << 27) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P28 (0x1u << 28) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P29 (0x1u << 29) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P30 (0x1u << 30) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P31 (0x1u << 31) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +/* -------- PIO_IFSCER : (PIO Offset: 0x0084) Input Filter Slow Clock Enable Register -------- */ +#define PIO_IFSCER_P0 (0x1u << 0) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P1 (0x1u << 1) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P2 (0x1u << 2) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P3 (0x1u << 3) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P4 (0x1u << 4) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P5 (0x1u << 5) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P6 (0x1u << 6) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P7 (0x1u << 7) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P8 (0x1u << 8) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P9 (0x1u << 9) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P10 (0x1u << 10) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P11 (0x1u << 11) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P12 (0x1u << 12) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P13 (0x1u << 13) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P14 (0x1u << 14) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P15 (0x1u << 15) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P16 (0x1u << 16) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P17 (0x1u << 17) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P18 (0x1u << 18) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P19 (0x1u << 19) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P20 (0x1u << 20) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P21 (0x1u << 21) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P22 (0x1u << 22) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P23 (0x1u << 23) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P24 (0x1u << 24) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P25 (0x1u << 25) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P26 (0x1u << 26) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P27 (0x1u << 27) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P28 (0x1u << 28) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P29 (0x1u << 29) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P30 (0x1u << 30) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P31 (0x1u << 31) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +/* -------- PIO_IFSCSR : (PIO Offset: 0x0088) Input Filter Slow Clock Status Register -------- */ +#define PIO_IFSCSR_P0 (0x1u << 0) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P1 (0x1u << 1) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P2 (0x1u << 2) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P3 (0x1u << 3) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P4 (0x1u << 4) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P5 (0x1u << 5) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P6 (0x1u << 6) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P7 (0x1u << 7) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P8 (0x1u << 8) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P9 (0x1u << 9) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P10 (0x1u << 10) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P11 (0x1u << 11) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P12 (0x1u << 12) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P13 (0x1u << 13) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P14 (0x1u << 14) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P15 (0x1u << 15) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P16 (0x1u << 16) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P17 (0x1u << 17) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P18 (0x1u << 18) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P19 (0x1u << 19) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P20 (0x1u << 20) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P21 (0x1u << 21) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P22 (0x1u << 22) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P23 (0x1u << 23) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P24 (0x1u << 24) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P25 (0x1u << 25) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P26 (0x1u << 26) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P27 (0x1u << 27) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P28 (0x1u << 28) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P29 (0x1u << 29) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P30 (0x1u << 30) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P31 (0x1u << 31) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +/* -------- PIO_SCDR : (PIO Offset: 0x008C) Slow Clock Divider Debouncing Register -------- */ +#define PIO_SCDR_DIV_Pos 0 +#define PIO_SCDR_DIV_Msk (0x3fffu << PIO_SCDR_DIV_Pos) /**< \brief (PIO_SCDR) */ +#define PIO_SCDR_DIV(value) ((PIO_SCDR_DIV_Msk & ((value) << PIO_SCDR_DIV_Pos))) +/* -------- PIO_PPDDR : (PIO Offset: 0x0090) Pad Pull-down Disable Register -------- */ +#define PIO_PPDDR_P0 (0x1u << 0) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P1 (0x1u << 1) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P2 (0x1u << 2) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P3 (0x1u << 3) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P4 (0x1u << 4) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P5 (0x1u << 5) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P6 (0x1u << 6) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P7 (0x1u << 7) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P8 (0x1u << 8) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P9 (0x1u << 9) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P10 (0x1u << 10) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P11 (0x1u << 11) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P12 (0x1u << 12) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P13 (0x1u << 13) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P14 (0x1u << 14) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P15 (0x1u << 15) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P16 (0x1u << 16) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P17 (0x1u << 17) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P18 (0x1u << 18) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P19 (0x1u << 19) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P20 (0x1u << 20) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P21 (0x1u << 21) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P22 (0x1u << 22) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P23 (0x1u << 23) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P24 (0x1u << 24) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P25 (0x1u << 25) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P26 (0x1u << 26) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P27 (0x1u << 27) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P28 (0x1u << 28) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P29 (0x1u << 29) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P30 (0x1u << 30) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P31 (0x1u << 31) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +/* -------- PIO_PPDER : (PIO Offset: 0x0094) Pad Pull-down Enable Register -------- */ +#define PIO_PPDER_P0 (0x1u << 0) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P1 (0x1u << 1) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P2 (0x1u << 2) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P3 (0x1u << 3) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P4 (0x1u << 4) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P5 (0x1u << 5) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P6 (0x1u << 6) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P7 (0x1u << 7) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P8 (0x1u << 8) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P9 (0x1u << 9) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P10 (0x1u << 10) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P11 (0x1u << 11) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P12 (0x1u << 12) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P13 (0x1u << 13) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P14 (0x1u << 14) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P15 (0x1u << 15) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P16 (0x1u << 16) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P17 (0x1u << 17) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P18 (0x1u << 18) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P19 (0x1u << 19) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P20 (0x1u << 20) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P21 (0x1u << 21) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P22 (0x1u << 22) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P23 (0x1u << 23) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P24 (0x1u << 24) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P25 (0x1u << 25) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P26 (0x1u << 26) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P27 (0x1u << 27) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P28 (0x1u << 28) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P29 (0x1u << 29) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P30 (0x1u << 30) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P31 (0x1u << 31) /**< \brief (PIO_PPDER) Pull Down Enable. */ +/* -------- PIO_PPDSR : (PIO Offset: 0x0098) Pad Pull-down Status Register -------- */ +#define PIO_PPDSR_P0 (0x1u << 0) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P1 (0x1u << 1) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P2 (0x1u << 2) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P3 (0x1u << 3) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P4 (0x1u << 4) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P5 (0x1u << 5) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P6 (0x1u << 6) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P7 (0x1u << 7) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P8 (0x1u << 8) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P9 (0x1u << 9) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P10 (0x1u << 10) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P11 (0x1u << 11) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P12 (0x1u << 12) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P13 (0x1u << 13) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P14 (0x1u << 14) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P15 (0x1u << 15) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P16 (0x1u << 16) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P17 (0x1u << 17) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P18 (0x1u << 18) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P19 (0x1u << 19) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P20 (0x1u << 20) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P21 (0x1u << 21) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P22 (0x1u << 22) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P23 (0x1u << 23) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P24 (0x1u << 24) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P25 (0x1u << 25) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P26 (0x1u << 26) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P27 (0x1u << 27) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P28 (0x1u << 28) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P29 (0x1u << 29) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P30 (0x1u << 30) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P31 (0x1u << 31) /**< \brief (PIO_PPDSR) Pull Down Status. */ +/* -------- PIO_OWER : (PIO Offset: 0x00A0) Output Write Enable -------- */ +#define PIO_OWER_P0 (0x1u << 0) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P1 (0x1u << 1) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P2 (0x1u << 2) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P3 (0x1u << 3) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P4 (0x1u << 4) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P5 (0x1u << 5) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P6 (0x1u << 6) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P7 (0x1u << 7) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P8 (0x1u << 8) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P9 (0x1u << 9) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P10 (0x1u << 10) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P11 (0x1u << 11) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P12 (0x1u << 12) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P13 (0x1u << 13) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P14 (0x1u << 14) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P15 (0x1u << 15) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P16 (0x1u << 16) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P17 (0x1u << 17) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P18 (0x1u << 18) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P19 (0x1u << 19) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P20 (0x1u << 20) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P21 (0x1u << 21) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P22 (0x1u << 22) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P23 (0x1u << 23) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P24 (0x1u << 24) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P25 (0x1u << 25) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P26 (0x1u << 26) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P27 (0x1u << 27) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P28 (0x1u << 28) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P29 (0x1u << 29) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P30 (0x1u << 30) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P31 (0x1u << 31) /**< \brief (PIO_OWER) Output Write Enable. */ +/* -------- PIO_OWDR : (PIO Offset: 0x00A4) Output Write Disable -------- */ +#define PIO_OWDR_P0 (0x1u << 0) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P1 (0x1u << 1) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P2 (0x1u << 2) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P3 (0x1u << 3) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P4 (0x1u << 4) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P5 (0x1u << 5) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P6 (0x1u << 6) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P7 (0x1u << 7) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P8 (0x1u << 8) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P9 (0x1u << 9) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P10 (0x1u << 10) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P11 (0x1u << 11) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P12 (0x1u << 12) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P13 (0x1u << 13) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P14 (0x1u << 14) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P15 (0x1u << 15) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P16 (0x1u << 16) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P17 (0x1u << 17) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P18 (0x1u << 18) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P19 (0x1u << 19) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P20 (0x1u << 20) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P21 (0x1u << 21) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P22 (0x1u << 22) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P23 (0x1u << 23) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P24 (0x1u << 24) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P25 (0x1u << 25) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P26 (0x1u << 26) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P27 (0x1u << 27) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P28 (0x1u << 28) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P29 (0x1u << 29) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P30 (0x1u << 30) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P31 (0x1u << 31) /**< \brief (PIO_OWDR) Output Write Disable. */ +/* -------- PIO_OWSR : (PIO Offset: 0x00A8) Output Write Status Register -------- */ +#define PIO_OWSR_P0 (0x1u << 0) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P1 (0x1u << 1) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P2 (0x1u << 2) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P3 (0x1u << 3) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P4 (0x1u << 4) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P5 (0x1u << 5) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P6 (0x1u << 6) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P7 (0x1u << 7) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P8 (0x1u << 8) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P9 (0x1u << 9) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P10 (0x1u << 10) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P11 (0x1u << 11) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P12 (0x1u << 12) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P13 (0x1u << 13) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P14 (0x1u << 14) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P15 (0x1u << 15) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P16 (0x1u << 16) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P17 (0x1u << 17) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P18 (0x1u << 18) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P19 (0x1u << 19) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P20 (0x1u << 20) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P21 (0x1u << 21) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P22 (0x1u << 22) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P23 (0x1u << 23) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P24 (0x1u << 24) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P25 (0x1u << 25) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P26 (0x1u << 26) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P27 (0x1u << 27) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P28 (0x1u << 28) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P29 (0x1u << 29) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P30 (0x1u << 30) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P31 (0x1u << 31) /**< \brief (PIO_OWSR) Output Write Status. */ +/* -------- PIO_AIMER : (PIO Offset: 0x00B0) Additional Interrupt Modes Enable Register -------- */ +#define PIO_AIMER_P0 (0x1u << 0) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P1 (0x1u << 1) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P2 (0x1u << 2) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P3 (0x1u << 3) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P4 (0x1u << 4) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P5 (0x1u << 5) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P6 (0x1u << 6) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P7 (0x1u << 7) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P8 (0x1u << 8) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P9 (0x1u << 9) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P10 (0x1u << 10) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P11 (0x1u << 11) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P12 (0x1u << 12) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P13 (0x1u << 13) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P14 (0x1u << 14) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P15 (0x1u << 15) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P16 (0x1u << 16) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P17 (0x1u << 17) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P18 (0x1u << 18) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P19 (0x1u << 19) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P20 (0x1u << 20) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P21 (0x1u << 21) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P22 (0x1u << 22) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P23 (0x1u << 23) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P24 (0x1u << 24) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P25 (0x1u << 25) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P26 (0x1u << 26) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P27 (0x1u << 27) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P28 (0x1u << 28) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P29 (0x1u << 29) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P30 (0x1u << 30) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P31 (0x1u << 31) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +/* -------- PIO_AIMDR : (PIO Offset: 0x00B4) Additional Interrupt Modes Disables Register -------- */ +#define PIO_AIMDR_P0 (0x1u << 0) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P1 (0x1u << 1) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P2 (0x1u << 2) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P3 (0x1u << 3) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P4 (0x1u << 4) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P5 (0x1u << 5) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P6 (0x1u << 6) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P7 (0x1u << 7) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P8 (0x1u << 8) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P9 (0x1u << 9) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P10 (0x1u << 10) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P11 (0x1u << 11) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P12 (0x1u << 12) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P13 (0x1u << 13) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P14 (0x1u << 14) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P15 (0x1u << 15) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P16 (0x1u << 16) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P17 (0x1u << 17) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P18 (0x1u << 18) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P19 (0x1u << 19) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P20 (0x1u << 20) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P21 (0x1u << 21) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P22 (0x1u << 22) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P23 (0x1u << 23) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P24 (0x1u << 24) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P25 (0x1u << 25) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P26 (0x1u << 26) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P27 (0x1u << 27) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P28 (0x1u << 28) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P29 (0x1u << 29) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P30 (0x1u << 30) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P31 (0x1u << 31) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +/* -------- PIO_AIMMR : (PIO Offset: 0x00B8) Additional Interrupt Modes Mask Register -------- */ +#define PIO_AIMMR_P0 (0x1u << 0) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P1 (0x1u << 1) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P2 (0x1u << 2) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P3 (0x1u << 3) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P4 (0x1u << 4) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P5 (0x1u << 5) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P6 (0x1u << 6) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P7 (0x1u << 7) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P8 (0x1u << 8) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P9 (0x1u << 9) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P10 (0x1u << 10) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P11 (0x1u << 11) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P12 (0x1u << 12) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P13 (0x1u << 13) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P14 (0x1u << 14) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P15 (0x1u << 15) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P16 (0x1u << 16) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P17 (0x1u << 17) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P18 (0x1u << 18) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P19 (0x1u << 19) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P20 (0x1u << 20) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P21 (0x1u << 21) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P22 (0x1u << 22) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P23 (0x1u << 23) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P24 (0x1u << 24) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P25 (0x1u << 25) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P26 (0x1u << 26) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P27 (0x1u << 27) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P28 (0x1u << 28) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P29 (0x1u << 29) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P30 (0x1u << 30) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P31 (0x1u << 31) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +/* -------- PIO_ESR : (PIO Offset: 0x00C0) Edge Select Register -------- */ +#define PIO_ESR_P0 (0x1u << 0) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P1 (0x1u << 1) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P2 (0x1u << 2) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P3 (0x1u << 3) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P4 (0x1u << 4) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P5 (0x1u << 5) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P6 (0x1u << 6) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P7 (0x1u << 7) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P8 (0x1u << 8) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P9 (0x1u << 9) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P10 (0x1u << 10) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P11 (0x1u << 11) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P12 (0x1u << 12) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P13 (0x1u << 13) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P14 (0x1u << 14) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P15 (0x1u << 15) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P16 (0x1u << 16) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P17 (0x1u << 17) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P18 (0x1u << 18) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P19 (0x1u << 19) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P20 (0x1u << 20) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P21 (0x1u << 21) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P22 (0x1u << 22) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P23 (0x1u << 23) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P24 (0x1u << 24) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P25 (0x1u << 25) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P26 (0x1u << 26) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P27 (0x1u << 27) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P28 (0x1u << 28) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P29 (0x1u << 29) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P30 (0x1u << 30) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P31 (0x1u << 31) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +/* -------- PIO_LSR : (PIO Offset: 0x00C4) Level Select Register -------- */ +#define PIO_LSR_P0 (0x1u << 0) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P1 (0x1u << 1) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P2 (0x1u << 2) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P3 (0x1u << 3) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P4 (0x1u << 4) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P5 (0x1u << 5) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P6 (0x1u << 6) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P7 (0x1u << 7) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P8 (0x1u << 8) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P9 (0x1u << 9) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P10 (0x1u << 10) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P11 (0x1u << 11) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P12 (0x1u << 12) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P13 (0x1u << 13) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P14 (0x1u << 14) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P15 (0x1u << 15) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P16 (0x1u << 16) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P17 (0x1u << 17) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P18 (0x1u << 18) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P19 (0x1u << 19) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P20 (0x1u << 20) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P21 (0x1u << 21) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P22 (0x1u << 22) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P23 (0x1u << 23) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P24 (0x1u << 24) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P25 (0x1u << 25) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P26 (0x1u << 26) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P27 (0x1u << 27) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P28 (0x1u << 28) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P29 (0x1u << 29) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P30 (0x1u << 30) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P31 (0x1u << 31) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +/* -------- PIO_ELSR : (PIO Offset: 0x00C8) Edge/Level Status Register -------- */ +#define PIO_ELSR_P0 (0x1u << 0) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P1 (0x1u << 1) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P2 (0x1u << 2) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P3 (0x1u << 3) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P4 (0x1u << 4) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P5 (0x1u << 5) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P6 (0x1u << 6) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P7 (0x1u << 7) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P8 (0x1u << 8) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P9 (0x1u << 9) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P10 (0x1u << 10) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P11 (0x1u << 11) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P12 (0x1u << 12) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P13 (0x1u << 13) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P14 (0x1u << 14) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P15 (0x1u << 15) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P16 (0x1u << 16) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P17 (0x1u << 17) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P18 (0x1u << 18) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P19 (0x1u << 19) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P20 (0x1u << 20) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P21 (0x1u << 21) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P22 (0x1u << 22) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P23 (0x1u << 23) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P24 (0x1u << 24) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P25 (0x1u << 25) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P26 (0x1u << 26) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P27 (0x1u << 27) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P28 (0x1u << 28) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P29 (0x1u << 29) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P30 (0x1u << 30) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P31 (0x1u << 31) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +/* -------- PIO_FELLSR : (PIO Offset: 0x00D0) Falling Edge/Low Level Select Register -------- */ +#define PIO_FELLSR_P0 (0x1u << 0) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P1 (0x1u << 1) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P2 (0x1u << 2) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P3 (0x1u << 3) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P4 (0x1u << 4) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P5 (0x1u << 5) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P6 (0x1u << 6) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P7 (0x1u << 7) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P8 (0x1u << 8) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P9 (0x1u << 9) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P10 (0x1u << 10) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P11 (0x1u << 11) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P12 (0x1u << 12) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P13 (0x1u << 13) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P14 (0x1u << 14) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P15 (0x1u << 15) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P16 (0x1u << 16) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P17 (0x1u << 17) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P18 (0x1u << 18) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P19 (0x1u << 19) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P20 (0x1u << 20) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P21 (0x1u << 21) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P22 (0x1u << 22) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P23 (0x1u << 23) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P24 (0x1u << 24) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P25 (0x1u << 25) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P26 (0x1u << 26) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P27 (0x1u << 27) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P28 (0x1u << 28) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P29 (0x1u << 29) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P30 (0x1u << 30) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P31 (0x1u << 31) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +/* -------- PIO_REHLSR : (PIO Offset: 0x00D4) Rising Edge/ High Level Select Register -------- */ +#define PIO_REHLSR_P0 (0x1u << 0) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P1 (0x1u << 1) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P2 (0x1u << 2) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P3 (0x1u << 3) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P4 (0x1u << 4) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P5 (0x1u << 5) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P6 (0x1u << 6) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P7 (0x1u << 7) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P8 (0x1u << 8) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P9 (0x1u << 9) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P10 (0x1u << 10) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P11 (0x1u << 11) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P12 (0x1u << 12) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P13 (0x1u << 13) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P14 (0x1u << 14) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P15 (0x1u << 15) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P16 (0x1u << 16) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P17 (0x1u << 17) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P18 (0x1u << 18) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P19 (0x1u << 19) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P20 (0x1u << 20) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P21 (0x1u << 21) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P22 (0x1u << 22) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P23 (0x1u << 23) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P24 (0x1u << 24) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P25 (0x1u << 25) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P26 (0x1u << 26) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P27 (0x1u << 27) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P28 (0x1u << 28) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P29 (0x1u << 29) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P30 (0x1u << 30) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P31 (0x1u << 31) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +/* -------- PIO_FRLHSR : (PIO Offset: 0x00D8) Fall/Rise - Low/High Status Register -------- */ +#define PIO_FRLHSR_P0 (0x1u << 0) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P1 (0x1u << 1) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P2 (0x1u << 2) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P3 (0x1u << 3) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P4 (0x1u << 4) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P5 (0x1u << 5) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P6 (0x1u << 6) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P7 (0x1u << 7) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P8 (0x1u << 8) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P9 (0x1u << 9) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P10 (0x1u << 10) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P11 (0x1u << 11) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P12 (0x1u << 12) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P13 (0x1u << 13) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P14 (0x1u << 14) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P15 (0x1u << 15) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P16 (0x1u << 16) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P17 (0x1u << 17) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P18 (0x1u << 18) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P19 (0x1u << 19) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P20 (0x1u << 20) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P21 (0x1u << 21) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P22 (0x1u << 22) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P23 (0x1u << 23) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P24 (0x1u << 24) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P25 (0x1u << 25) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P26 (0x1u << 26) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P27 (0x1u << 27) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P28 (0x1u << 28) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P29 (0x1u << 29) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P30 (0x1u << 30) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P31 (0x1u << 31) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +/* -------- PIO_LOCKSR : (PIO Offset: 0x00E0) Lock Status -------- */ +#define PIO_LOCKSR_P0 (0x1u << 0) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P1 (0x1u << 1) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P2 (0x1u << 2) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P3 (0x1u << 3) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P4 (0x1u << 4) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P5 (0x1u << 5) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P6 (0x1u << 6) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P7 (0x1u << 7) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P8 (0x1u << 8) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P9 (0x1u << 9) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P10 (0x1u << 10) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P11 (0x1u << 11) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P12 (0x1u << 12) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P13 (0x1u << 13) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P14 (0x1u << 14) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P15 (0x1u << 15) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P16 (0x1u << 16) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P17 (0x1u << 17) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P18 (0x1u << 18) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P19 (0x1u << 19) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P20 (0x1u << 20) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P21 (0x1u << 21) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P22 (0x1u << 22) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P23 (0x1u << 23) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P24 (0x1u << 24) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P25 (0x1u << 25) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P26 (0x1u << 26) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P27 (0x1u << 27) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P28 (0x1u << 28) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P29 (0x1u << 29) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P30 (0x1u << 30) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P31 (0x1u << 31) /**< \brief (PIO_LOCKSR) Lock Status. */ +/* -------- PIO_WPMR : (PIO Offset: 0x00E4) Write Protect Mode Register -------- */ +#define PIO_WPMR_WPEN (0x1u << 0) /**< \brief (PIO_WPMR) Write Protect Enable */ +#define PIO_WPMR_WPKEY_Pos 8 +#define PIO_WPMR_WPKEY_Msk (0xffffffu << PIO_WPMR_WPKEY_Pos) /**< \brief (PIO_WPMR) Write Protect KEY */ +#define PIO_WPMR_WPKEY(value) ((PIO_WPMR_WPKEY_Msk & ((value) << PIO_WPMR_WPKEY_Pos))) +/* -------- PIO_WPSR : (PIO Offset: 0x00E8) Write Protect Status Register -------- */ +#define PIO_WPSR_WPVS (0x1u << 0) /**< \brief (PIO_WPSR) Write Protect Violation Status */ +#define PIO_WPSR_WPVSRC_Pos 8 +#define PIO_WPSR_WPVSRC_Msk (0xffffu << PIO_WPSR_WPVSRC_Pos) /**< \brief (PIO_WPSR) Write Protect Violation Source */ +/* -------- PIO_SCHMITT : (PIO Offset: 0x0100) Schmitt Trigger Register -------- */ +#define PIO_SCHMITT_SCHMITT0 (0x1u << 0) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT1 (0x1u << 1) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT2 (0x1u << 2) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT3 (0x1u << 3) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT4 (0x1u << 4) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT5 (0x1u << 5) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT6 (0x1u << 6) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT7 (0x1u << 7) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT8 (0x1u << 8) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT9 (0x1u << 9) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT10 (0x1u << 10) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT11 (0x1u << 11) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT12 (0x1u << 12) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT13 (0x1u << 13) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT14 (0x1u << 14) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT15 (0x1u << 15) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT16 (0x1u << 16) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT17 (0x1u << 17) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT18 (0x1u << 18) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT19 (0x1u << 19) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT20 (0x1u << 20) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT21 (0x1u << 21) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT22 (0x1u << 22) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT23 (0x1u << 23) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT24 (0x1u << 24) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT25 (0x1u << 25) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT26 (0x1u << 26) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT27 (0x1u << 27) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT28 (0x1u << 28) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT29 (0x1u << 29) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT30 (0x1u << 30) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT31 (0x1u << 31) /**< \brief (PIO_SCHMITT) */ + +/*@}*/ + + +#endif /* _SAM3N_PIO_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_pmc.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_pmc.h new file mode 100644 index 000000000..723107e76 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_pmc.h @@ -0,0 +1,324 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_PMC_COMPONENT_ +#define _SAM3N_PMC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Power Management Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3N_PMC Power Management Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Pmc hardware registers */ +typedef struct { + WoReg PMC_SCER; /**< \brief (Pmc Offset: 0x0000) System Clock Enable Register */ + WoReg PMC_SCDR; /**< \brief (Pmc Offset: 0x0004) System Clock Disable Register */ + RoReg PMC_SCSR; /**< \brief (Pmc Offset: 0x0008) System Clock Status Register */ + RoReg Reserved1[1]; + WoReg PMC_PCER0; /**< \brief (Pmc Offset: 0x0010) Peripheral Clock Enable Register 0 */ + WoReg PMC_PCDR0; /**< \brief (Pmc Offset: 0x0014) Peripheral Clock Disable Register 0 */ + RoReg PMC_PCSR0; /**< \brief (Pmc Offset: 0x0018) Peripheral Clock Status Register 0 */ + RoReg Reserved2[1]; + RwReg CKGR_MOR; /**< \brief (Pmc Offset: 0x0020) Main Oscillator Register */ + RoReg CKGR_MCFR; /**< \brief (Pmc Offset: 0x0024) Main Clock Frequency Register */ + RwReg CKGR_PLLAR; /**< \brief (Pmc Offset: 0x0028) PLLA Register */ + RoReg Reserved3[1]; + RwReg PMC_MCKR; /**< \brief (Pmc Offset: 0x0030) Master Clock Register */ + RoReg Reserved4[3]; + RwReg PMC_PCK[3]; /**< \brief (Pmc Offset: 0x0040) Programmable Clock 0 Register */ + RoReg Reserved5[5]; + WoReg PMC_IER; /**< \brief (Pmc Offset: 0x0060) Interrupt Enable Register */ + WoReg PMC_IDR; /**< \brief (Pmc Offset: 0x0064) Interrupt Disable Register */ + RoReg PMC_SR; /**< \brief (Pmc Offset: 0x0068) Status Register */ + RoReg PMC_IMR; /**< \brief (Pmc Offset: 0x006C) Interrupt Mask Register */ + RwReg PMC_FSMR; /**< \brief (Pmc Offset: 0x0070) Fast Startup Mode Register */ + RwReg PMC_FSPR; /**< \brief (Pmc Offset: 0x0074) Fast Startup Polarity Register */ + WoReg PMC_FOCR; /**< \brief (Pmc Offset: 0x0078) Fault Output Clear Register */ + RoReg Reserved6[26]; + RwReg PMC_WPMR; /**< \brief (Pmc Offset: 0x00E4) Write Protect Mode Register */ + RoReg PMC_WPSR; /**< \brief (Pmc Offset: 0x00E8) Write Protect Status Register */ +} Pmc; +#endif /* __ASSEMBLY__ */ +/* -------- PMC_SCER : (PMC Offset: 0x0000) System Clock Enable Register -------- */ +#define PMC_SCER_PCK0 (0x1u << 8) /**< \brief (PMC_SCER) Programmable Clock 0 Output Enable */ +#define PMC_SCER_PCK1 (0x1u << 9) /**< \brief (PMC_SCER) Programmable Clock 1 Output Enable */ +#define PMC_SCER_PCK2 (0x1u << 10) /**< \brief (PMC_SCER) Programmable Clock 2 Output Enable */ +/* -------- PMC_SCDR : (PMC Offset: 0x0004) System Clock Disable Register -------- */ +#define PMC_SCDR_PCK0 (0x1u << 8) /**< \brief (PMC_SCDR) Programmable Clock 0 Output Disable */ +#define PMC_SCDR_PCK1 (0x1u << 9) /**< \brief (PMC_SCDR) Programmable Clock 1 Output Disable */ +#define PMC_SCDR_PCK2 (0x1u << 10) /**< \brief (PMC_SCDR) Programmable Clock 2 Output Disable */ +/* -------- PMC_SCSR : (PMC Offset: 0x0008) System Clock Status Register -------- */ +#define PMC_SCSR_PCK0 (0x1u << 8) /**< \brief (PMC_SCSR) Programmable Clock 0 Output Status */ +#define PMC_SCSR_PCK1 (0x1u << 9) /**< \brief (PMC_SCSR) Programmable Clock 1 Output Status */ +#define PMC_SCSR_PCK2 (0x1u << 10) /**< \brief (PMC_SCSR) Programmable Clock 2 Output Status */ +/* -------- PMC_PCER0 : (PMC Offset: 0x0010) Peripheral Clock Enable Register 0 -------- */ +#define PMC_PCER0_PID2 (0x1u << 2) /**< \brief (PMC_PCER0) Peripheral Clock 2 Enable */ +#define PMC_PCER0_PID3 (0x1u << 3) /**< \brief (PMC_PCER0) Peripheral Clock 3 Enable */ +#define PMC_PCER0_PID4 (0x1u << 4) /**< \brief (PMC_PCER0) Peripheral Clock 4 Enable */ +#define PMC_PCER0_PID5 (0x1u << 5) /**< \brief (PMC_PCER0) Peripheral Clock 5 Enable */ +#define PMC_PCER0_PID6 (0x1u << 6) /**< \brief (PMC_PCER0) Peripheral Clock 6 Enable */ +#define PMC_PCER0_PID7 (0x1u << 7) /**< \brief (PMC_PCER0) Peripheral Clock 7 Enable */ +#define PMC_PCER0_PID8 (0x1u << 8) /**< \brief (PMC_PCER0) Peripheral Clock 8 Enable */ +#define PMC_PCER0_PID9 (0x1u << 9) /**< \brief (PMC_PCER0) Peripheral Clock 9 Enable */ +#define PMC_PCER0_PID10 (0x1u << 10) /**< \brief (PMC_PCER0) Peripheral Clock 10 Enable */ +#define PMC_PCER0_PID11 (0x1u << 11) /**< \brief (PMC_PCER0) Peripheral Clock 11 Enable */ +#define PMC_PCER0_PID12 (0x1u << 12) /**< \brief (PMC_PCER0) Peripheral Clock 12 Enable */ +#define PMC_PCER0_PID13 (0x1u << 13) /**< \brief (PMC_PCER0) Peripheral Clock 13 Enable */ +#define PMC_PCER0_PID14 (0x1u << 14) /**< \brief (PMC_PCER0) Peripheral Clock 14 Enable */ +#define PMC_PCER0_PID15 (0x1u << 15) /**< \brief (PMC_PCER0) Peripheral Clock 15 Enable */ +#define PMC_PCER0_PID19 (0x1u << 19) /**< \brief (PMC_PCER0) Peripheral Clock 19 Enable */ +#define PMC_PCER0_PID20 (0x1u << 20) /**< \brief (PMC_PCER0) Peripheral Clock 20 Enable */ +#define PMC_PCER0_PID21 (0x1u << 21) /**< \brief (PMC_PCER0) Peripheral Clock 21 Enable */ +#define PMC_PCER0_PID23 (0x1u << 23) /**< \brief (PMC_PCER0) Peripheral Clock 23 Enable */ +#define PMC_PCER0_PID24 (0x1u << 24) /**< \brief (PMC_PCER0) Peripheral Clock 24 Enable */ +#define PMC_PCER0_PID25 (0x1u << 25) /**< \brief (PMC_PCER0) Peripheral Clock 25 Enable */ +#define PMC_PCER0_PID26 (0x1u << 26) /**< \brief (PMC_PCER0) Peripheral Clock 26 Enable */ +#define PMC_PCER0_PID27 (0x1u << 27) /**< \brief (PMC_PCER0) Peripheral Clock 27 Enable */ +#define PMC_PCER0_PID28 (0x1u << 28) /**< \brief (PMC_PCER0) Peripheral Clock 28 Enable */ +#define PMC_PCER0_PID29 (0x1u << 29) /**< \brief (PMC_PCER0) Peripheral Clock 29 Enable */ +#define PMC_PCER0_PID30 (0x1u << 30) /**< \brief (PMC_PCER0) Peripheral Clock 30 Enable */ +#define PMC_PCER0_PID31 (0x1u << 31) /**< \brief (PMC_PCER0) Peripheral Clock 31 Enable */ +/* -------- PMC_PCDR0 : (PMC Offset: 0x0014) Peripheral Clock Disable Register 0 -------- */ +#define PMC_PCDR0_PID2 (0x1u << 2) /**< \brief (PMC_PCDR0) Peripheral Clock 2 Disable */ +#define PMC_PCDR0_PID3 (0x1u << 3) /**< \brief (PMC_PCDR0) Peripheral Clock 3 Disable */ +#define PMC_PCDR0_PID4 (0x1u << 4) /**< \brief (PMC_PCDR0) Peripheral Clock 4 Disable */ +#define PMC_PCDR0_PID5 (0x1u << 5) /**< \brief (PMC_PCDR0) Peripheral Clock 5 Disable */ +#define PMC_PCDR0_PID6 (0x1u << 6) /**< \brief (PMC_PCDR0) Peripheral Clock 6 Disable */ +#define PMC_PCDR0_PID7 (0x1u << 7) /**< \brief (PMC_PCDR0) Peripheral Clock 7 Disable */ +#define PMC_PCDR0_PID8 (0x1u << 8) /**< \brief (PMC_PCDR0) Peripheral Clock 8 Disable */ +#define PMC_PCDR0_PID9 (0x1u << 9) /**< \brief (PMC_PCDR0) Peripheral Clock 9 Disable */ +#define PMC_PCDR0_PID10 (0x1u << 10) /**< \brief (PMC_PCDR0) Peripheral Clock 10 Disable */ +#define PMC_PCDR0_PID11 (0x1u << 11) /**< \brief (PMC_PCDR0) Peripheral Clock 11 Disable */ +#define PMC_PCDR0_PID12 (0x1u << 12) /**< \brief (PMC_PCDR0) Peripheral Clock 12 Disable */ +#define PMC_PCDR0_PID13 (0x1u << 13) /**< \brief (PMC_PCDR0) Peripheral Clock 13 Disable */ +#define PMC_PCDR0_PID14 (0x1u << 14) /**< \brief (PMC_PCDR0) Peripheral Clock 14 Disable */ +#define PMC_PCDR0_PID15 (0x1u << 15) /**< \brief (PMC_PCDR0) Peripheral Clock 15 Disable */ +#define PMC_PCDR0_PID19 (0x1u << 19) /**< \brief (PMC_PCDR0) Peripheral Clock 19 Disable */ +#define PMC_PCDR0_PID20 (0x1u << 20) /**< \brief (PMC_PCDR0) Peripheral Clock 20 Disable */ +#define PMC_PCDR0_PID21 (0x1u << 21) /**< \brief (PMC_PCDR0) Peripheral Clock 21 Disable */ +#define PMC_PCDR0_PID23 (0x1u << 23) /**< \brief (PMC_PCDR0) Peripheral Clock 23 Disable */ +#define PMC_PCDR0_PID24 (0x1u << 24) /**< \brief (PMC_PCDR0) Peripheral Clock 24 Disable */ +#define PMC_PCDR0_PID25 (0x1u << 25) /**< \brief (PMC_PCDR0) Peripheral Clock 25 Disable */ +#define PMC_PCDR0_PID26 (0x1u << 26) /**< \brief (PMC_PCDR0) Peripheral Clock 26 Disable */ +#define PMC_PCDR0_PID27 (0x1u << 27) /**< \brief (PMC_PCDR0) Peripheral Clock 27 Disable */ +#define PMC_PCDR0_PID28 (0x1u << 28) /**< \brief (PMC_PCDR0) Peripheral Clock 28 Disable */ +#define PMC_PCDR0_PID29 (0x1u << 29) /**< \brief (PMC_PCDR0) Peripheral Clock 29 Disable */ +#define PMC_PCDR0_PID30 (0x1u << 30) /**< \brief (PMC_PCDR0) Peripheral Clock 30 Disable */ +#define PMC_PCDR0_PID31 (0x1u << 31) /**< \brief (PMC_PCDR0) Peripheral Clock 31 Disable */ +/* -------- PMC_PCSR0 : (PMC Offset: 0x0018) Peripheral Clock Status Register 0 -------- */ +#define PMC_PCSR0_PID2 (0x1u << 2) /**< \brief (PMC_PCSR0) Peripheral Clock 2 Status */ +#define PMC_PCSR0_PID3 (0x1u << 3) /**< \brief (PMC_PCSR0) Peripheral Clock 3 Status */ +#define PMC_PCSR0_PID4 (0x1u << 4) /**< \brief (PMC_PCSR0) Peripheral Clock 4 Status */ +#define PMC_PCSR0_PID5 (0x1u << 5) /**< \brief (PMC_PCSR0) Peripheral Clock 5 Status */ +#define PMC_PCSR0_PID6 (0x1u << 6) /**< \brief (PMC_PCSR0) Peripheral Clock 6 Status */ +#define PMC_PCSR0_PID7 (0x1u << 7) /**< \brief (PMC_PCSR0) Peripheral Clock 7 Status */ +#define PMC_PCSR0_PID8 (0x1u << 8) /**< \brief (PMC_PCSR0) Peripheral Clock 8 Status */ +#define PMC_PCSR0_PID9 (0x1u << 9) /**< \brief (PMC_PCSR0) Peripheral Clock 9 Status */ +#define PMC_PCSR0_PID10 (0x1u << 10) /**< \brief (PMC_PCSR0) Peripheral Clock 10 Status */ +#define PMC_PCSR0_PID11 (0x1u << 11) /**< \brief (PMC_PCSR0) Peripheral Clock 11 Status */ +#define PMC_PCSR0_PID12 (0x1u << 12) /**< \brief (PMC_PCSR0) Peripheral Clock 12 Status */ +#define PMC_PCSR0_PID13 (0x1u << 13) /**< \brief (PMC_PCSR0) Peripheral Clock 13 Status */ +#define PMC_PCSR0_PID14 (0x1u << 14) /**< \brief (PMC_PCSR0) Peripheral Clock 14 Status */ +#define PMC_PCSR0_PID15 (0x1u << 15) /**< \brief (PMC_PCSR0) Peripheral Clock 15 Status */ +#define PMC_PCSR0_PID19 (0x1u << 19) /**< \brief (PMC_PCSR0) Peripheral Clock 19 Status */ +#define PMC_PCSR0_PID20 (0x1u << 20) /**< \brief (PMC_PCSR0) Peripheral Clock 20 Status */ +#define PMC_PCSR0_PID21 (0x1u << 21) /**< \brief (PMC_PCSR0) Peripheral Clock 21 Status */ +#define PMC_PCSR0_PID23 (0x1u << 23) /**< \brief (PMC_PCSR0) Peripheral Clock 23 Status */ +#define PMC_PCSR0_PID24 (0x1u << 24) /**< \brief (PMC_PCSR0) Peripheral Clock 24 Status */ +#define PMC_PCSR0_PID25 (0x1u << 25) /**< \brief (PMC_PCSR0) Peripheral Clock 25 Status */ +#define PMC_PCSR0_PID26 (0x1u << 26) /**< \brief (PMC_PCSR0) Peripheral Clock 26 Status */ +#define PMC_PCSR0_PID27 (0x1u << 27) /**< \brief (PMC_PCSR0) Peripheral Clock 27 Status */ +#define PMC_PCSR0_PID28 (0x1u << 28) /**< \brief (PMC_PCSR0) Peripheral Clock 28 Status */ +#define PMC_PCSR0_PID29 (0x1u << 29) /**< \brief (PMC_PCSR0) Peripheral Clock 29 Status */ +#define PMC_PCSR0_PID30 (0x1u << 30) /**< \brief (PMC_PCSR0) Peripheral Clock 30 Status */ +#define PMC_PCSR0_PID31 (0x1u << 31) /**< \brief (PMC_PCSR0) Peripheral Clock 31 Status */ +/* -------- CKGR_MOR : (PMC Offset: 0x0020) Main Oscillator Register -------- */ +#define CKGR_MOR_MOSCXTEN (0x1u << 0) /**< \brief (CKGR_MOR) Main Crystal Oscillator Enable */ +#define CKGR_MOR_MOSCXTBY (0x1u << 1) /**< \brief (CKGR_MOR) Main Crystal Oscillator Bypass */ +#define CKGR_MOR_MOSCRCEN (0x1u << 3) /**< \brief (CKGR_MOR) Main On-Chip RC Oscillator Enable */ +#define CKGR_MOR_MOSCRCF_Pos 4 +#define CKGR_MOR_MOSCRCF_Msk (0x7u << CKGR_MOR_MOSCRCF_Pos) /**< \brief (CKGR_MOR) Main On-Chip RC Oscillator Frequency Selection */ +#define CKGR_MOR_MOSCRCF_4_MHz (0x0u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 4 MHz (default) */ +#define CKGR_MOR_MOSCRCF_8_MHz (0x1u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 8 MHz */ +#define CKGR_MOR_MOSCRCF_12_MHz (0x2u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 12 MHz */ +#define CKGR_MOR_MOSCXTST_Pos 8 +#define CKGR_MOR_MOSCXTST_Msk (0xffu << CKGR_MOR_MOSCXTST_Pos) /**< \brief (CKGR_MOR) Main Crystal Oscillator Start-up Time */ +#define CKGR_MOR_MOSCXTST(value) ((CKGR_MOR_MOSCXTST_Msk & ((value) << CKGR_MOR_MOSCXTST_Pos))) +#define CKGR_MOR_KEY_Pos 16 +#define CKGR_MOR_KEY_Msk (0xffu << CKGR_MOR_KEY_Pos) /**< \brief (CKGR_MOR) Password */ +#define CKGR_MOR_KEY(value) ((CKGR_MOR_KEY_Msk & ((value) << CKGR_MOR_KEY_Pos))) +#define CKGR_MOR_MOSCSEL (0x1u << 24) /**< \brief (CKGR_MOR) Main Oscillator Selection */ +#define CKGR_MOR_CFDEN (0x1u << 25) /**< \brief (CKGR_MOR) Clock Failure Detector Enable */ +/* -------- CKGR_MCFR : (PMC Offset: 0x0024) Main Clock Frequency Register -------- */ +#define CKGR_MCFR_MAINF_Pos 0 +#define CKGR_MCFR_MAINF_Msk (0xffffu << CKGR_MCFR_MAINF_Pos) /**< \brief (CKGR_MCFR) Main Clock Frequency */ +#define CKGR_MCFR_MAINFRDY (0x1u << 16) /**< \brief (CKGR_MCFR) Main Clock Ready */ +/* -------- CKGR_PLLAR : (PMC Offset: 0x0028) PLLA Register -------- */ +#define CKGR_PLLAR_DIVA_Pos 0 +#define CKGR_PLLAR_DIVA_Msk (0xffu << CKGR_PLLAR_DIVA_Pos) /**< \brief (CKGR_PLLAR) Divider */ +#define CKGR_PLLAR_DIVA(value) ((CKGR_PLLAR_DIVA_Msk & ((value) << CKGR_PLLAR_DIVA_Pos))) +#define CKGR_PLLAR_PLLACOUNT_Pos 8 +#define CKGR_PLLAR_PLLACOUNT_Msk (0x3fu << CKGR_PLLAR_PLLACOUNT_Pos) /**< \brief (CKGR_PLLAR) PLLA Counter */ +#define CKGR_PLLAR_PLLACOUNT(value) ((CKGR_PLLAR_PLLACOUNT_Msk & ((value) << CKGR_PLLAR_PLLACOUNT_Pos))) +#define CKGR_PLLAR_MULA_Pos 16 +#define CKGR_PLLAR_MULA_Msk (0x7ffu << CKGR_PLLAR_MULA_Pos) /**< \brief (CKGR_PLLAR) PLLA Multiplier */ +#define CKGR_PLLAR_MULA(value) ((CKGR_PLLAR_MULA_Msk & ((value) << CKGR_PLLAR_MULA_Pos))) +#define CKGR_PLLAR_ONE (0x1u << 29) /**< \brief (CKGR_PLLAR) Must Be Set to 1 */ +/* -------- PMC_MCKR : (PMC Offset: 0x0030) Master Clock Register -------- */ +#define PMC_MCKR_CSS_Pos 0 +#define PMC_MCKR_CSS_Msk (0x3u << PMC_MCKR_CSS_Pos) /**< \brief (PMC_MCKR) Master Clock Source Selection */ +#define PMC_MCKR_CSS_SLOW_CLK (0x0u << 0) /**< \brief (PMC_MCKR) Slow Clock is selected */ +#define PMC_MCKR_CSS_MAIN_CLK (0x1u << 0) /**< \brief (PMC_MCKR) Main Clock is selected */ +#define PMC_MCKR_CSS_PLLA_CLK (0x2u << 0) /**< \brief (PMC_MCKR) PLLA Clock is selected */ +#define PMC_MCKR_PRES_Pos 4 +#define PMC_MCKR_PRES_Msk (0x7u << PMC_MCKR_PRES_Pos) /**< \brief (PMC_MCKR) Processor Clock Prescaler */ +#define PMC_MCKR_PRES_CLK_1 (0x0u << 4) /**< \brief (PMC_MCKR) Selected clock */ +#define PMC_MCKR_PRES_CLK_2 (0x1u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 2 */ +#define PMC_MCKR_PRES_CLK_4 (0x2u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 4 */ +#define PMC_MCKR_PRES_CLK_8 (0x3u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 8 */ +#define PMC_MCKR_PRES_CLK_16 (0x4u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 16 */ +#define PMC_MCKR_PRES_CLK_32 (0x5u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 32 */ +#define PMC_MCKR_PRES_CLK_64 (0x6u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 64 */ +#define PMC_MCKR_PRES_CLK_3 (0x7u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 3 */ +#define PMC_MCKR_PLLADIV2 (0x1u << 12) /**< \brief (PMC_MCKR) PLLA Divisor by 2 */ +/* -------- PMC_PCK[3] : (PMC Offset: 0x0040) Programmable Clock 0 Register -------- */ +#define PMC_PCK_CSS_Pos 0 +#define PMC_PCK_CSS_Msk (0x7u << PMC_PCK_CSS_Pos) /**< \brief (PMC_PCK[3]) Master Clock Source Selection */ +#define PMC_PCK_CSS_SLOW_CLK (0x0u << 0) /**< \brief (PMC_PCK[3]) Slow Clock is selected */ +#define PMC_PCK_CSS_MAIN_CLK (0x1u << 0) /**< \brief (PMC_PCK[3]) Main Clock is selected */ +#define PMC_PCK_CSS_PLLA_CLK (0x2u << 0) /**< \brief (PMC_PCK[3]) PLLA Clock is selected */ +#define PMC_PCK_CSS_MCK (0x4u << 0) /**< \brief (PMC_PCK[3]) Master Clock is selected */ +#define PMC_PCK_PRES_Pos 4 +#define PMC_PCK_PRES_Msk (0x7u << PMC_PCK_PRES_Pos) /**< \brief (PMC_PCK[3]) Programmable Clock Prescaler */ +#define PMC_PCK_PRES(value) ((PMC_PCK_PRES_Msk & ((value) << PMC_PCK_PRES_Pos))) +#define PMC_PCK_PRES_CLK_1 (0x0u << 4) /**< \brief (PMC_PCK[3]) Selected clock */ +#define PMC_PCK_PRES_CLK_2 (0x1u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 2 */ +#define PMC_PCK_PRES_CLK_4 (0x2u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 4 */ +#define PMC_PCK_PRES_CLK_8 (0x3u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 8 */ +#define PMC_PCK_PRES_CLK_16 (0x4u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 16 */ +#define PMC_PCK_PRES_CLK_32 (0x5u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 32 */ +#define PMC_PCK_PRES_CLK_64 (0x6u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 64 */ +/* -------- PMC_IER : (PMC Offset: 0x0060) Interrupt Enable Register -------- */ +#define PMC_IER_MOSCXTS (0x1u << 0) /**< \brief (PMC_IER) Main Crystal Oscillator Status Interrupt Enable */ +#define PMC_IER_LOCKA (0x1u << 1) /**< \brief (PMC_IER) PLLA Lock Interrupt Enable */ +#define PMC_IER_MCKRDY (0x1u << 3) /**< \brief (PMC_IER) Master Clock Ready Interrupt Enable */ +#define PMC_IER_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IER) Programmable Clock Ready 0 Interrupt Enable */ +#define PMC_IER_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IER) Programmable Clock Ready 1 Interrupt Enable */ +#define PMC_IER_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IER) Programmable Clock Ready 2 Interrupt Enable */ +#define PMC_IER_MOSCSELS (0x1u << 16) /**< \brief (PMC_IER) Main Oscillator Selection Status Interrupt Enable */ +#define PMC_IER_MOSCRCS (0x1u << 17) /**< \brief (PMC_IER) Main On-Chip RC Status Interrupt Enable */ +#define PMC_IER_CFDEV (0x1u << 18) /**< \brief (PMC_IER) Clock Failure Detector Event Interrupt Enable */ +/* -------- PMC_IDR : (PMC Offset: 0x0064) Interrupt Disable Register -------- */ +#define PMC_IDR_MOSCXTS (0x1u << 0) /**< \brief (PMC_IDR) Main Crystal Oscillator Status Interrupt Disable */ +#define PMC_IDR_LOCKA (0x1u << 1) /**< \brief (PMC_IDR) PLLA Lock Interrupt Disable */ +#define PMC_IDR_MCKRDY (0x1u << 3) /**< \brief (PMC_IDR) Master Clock Ready Interrupt Disable */ +#define PMC_IDR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IDR) Programmable Clock Ready 0 Interrupt Disable */ +#define PMC_IDR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IDR) Programmable Clock Ready 1 Interrupt Disable */ +#define PMC_IDR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IDR) Programmable Clock Ready 2 Interrupt Disable */ +#define PMC_IDR_MOSCSELS (0x1u << 16) /**< \brief (PMC_IDR) Main Oscillator Selection Status Interrupt Disable */ +#define PMC_IDR_MOSCRCS (0x1u << 17) /**< \brief (PMC_IDR) Main On-Chip RC Status Interrupt Disable */ +#define PMC_IDR_CFDEV (0x1u << 18) /**< \brief (PMC_IDR) Clock Failure Detector Event Interrupt Disable */ +/* -------- PMC_SR : (PMC Offset: 0x0068) Status Register -------- */ +#define PMC_SR_MOSCXTS (0x1u << 0) /**< \brief (PMC_SR) Main XTAL Oscillator Status */ +#define PMC_SR_LOCKA (0x1u << 1) /**< \brief (PMC_SR) PLLA Lock Status */ +#define PMC_SR_MCKRDY (0x1u << 3) /**< \brief (PMC_SR) Master Clock Status */ +#define PMC_SR_OSCSELS (0x1u << 7) /**< \brief (PMC_SR) Slow Clock Oscillator Selection */ +#define PMC_SR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_MOSCSELS (0x1u << 16) /**< \brief (PMC_SR) Main Oscillator Selection Status */ +#define PMC_SR_MOSCRCS (0x1u << 17) /**< \brief (PMC_SR) Main On-Chip RC Oscillator Status */ +#define PMC_SR_CFDEV (0x1u << 18) /**< \brief (PMC_SR) Clock Failure Detector Event */ +#define PMC_SR_CFDS (0x1u << 19) /**< \brief (PMC_SR) Clock Failure Detector Status */ +#define PMC_SR_FOS (0x1u << 20) /**< \brief (PMC_SR) Clock Failure Detector Fault Output Status */ +/* -------- PMC_IMR : (PMC Offset: 0x006C) Interrupt Mask Register -------- */ +#define PMC_IMR_MOSCXTS (0x1u << 0) /**< \brief (PMC_IMR) Main Crystal Oscillator Status Interrupt Mask */ +#define PMC_IMR_LOCKA (0x1u << 1) /**< \brief (PMC_IMR) PLLA Lock Interrupt Mask */ +#define PMC_IMR_MCKRDY (0x1u << 3) /**< \brief (PMC_IMR) Master Clock Ready Interrupt Mask */ +#define PMC_IMR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IMR) Programmable Clock Ready 0 Interrupt Mask */ +#define PMC_IMR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IMR) Programmable Clock Ready 1 Interrupt Mask */ +#define PMC_IMR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IMR) Programmable Clock Ready 2 Interrupt Mask */ +#define PMC_IMR_MOSCSELS (0x1u << 16) /**< \brief (PMC_IMR) Main Oscillator Selection Status Interrupt Mask */ +#define PMC_IMR_MOSCRCS (0x1u << 17) /**< \brief (PMC_IMR) Main On-Chip RC Status Interrupt Mask */ +#define PMC_IMR_CFDEV (0x1u << 18) /**< \brief (PMC_IMR) Clock Failure Detector Event Interrupt Mask */ +/* -------- PMC_FSMR : (PMC Offset: 0x0070) Fast Startup Mode Register -------- */ +#define PMC_FSMR_FSTT0 (0x1u << 0) /**< \brief (PMC_FSMR) Fast Startup Input Enable 0 */ +#define PMC_FSMR_FSTT1 (0x1u << 1) /**< \brief (PMC_FSMR) Fast Startup Input Enable 1 */ +#define PMC_FSMR_FSTT2 (0x1u << 2) /**< \brief (PMC_FSMR) Fast Startup Input Enable 2 */ +#define PMC_FSMR_FSTT3 (0x1u << 3) /**< \brief (PMC_FSMR) Fast Startup Input Enable 3 */ +#define PMC_FSMR_FSTT4 (0x1u << 4) /**< \brief (PMC_FSMR) Fast Startup Input Enable 4 */ +#define PMC_FSMR_FSTT5 (0x1u << 5) /**< \brief (PMC_FSMR) Fast Startup Input Enable 5 */ +#define PMC_FSMR_FSTT6 (0x1u << 6) /**< \brief (PMC_FSMR) Fast Startup Input Enable 6 */ +#define PMC_FSMR_FSTT7 (0x1u << 7) /**< \brief (PMC_FSMR) Fast Startup Input Enable 7 */ +#define PMC_FSMR_FSTT8 (0x1u << 8) /**< \brief (PMC_FSMR) Fast Startup Input Enable 8 */ +#define PMC_FSMR_FSTT9 (0x1u << 9) /**< \brief (PMC_FSMR) Fast Startup Input Enable 9 */ +#define PMC_FSMR_FSTT10 (0x1u << 10) /**< \brief (PMC_FSMR) Fast Startup Input Enable 10 */ +#define PMC_FSMR_FSTT11 (0x1u << 11) /**< \brief (PMC_FSMR) Fast Startup Input Enable 11 */ +#define PMC_FSMR_FSTT12 (0x1u << 12) /**< \brief (PMC_FSMR) Fast Startup Input Enable 12 */ +#define PMC_FSMR_FSTT13 (0x1u << 13) /**< \brief (PMC_FSMR) Fast Startup Input Enable 13 */ +#define PMC_FSMR_FSTT14 (0x1u << 14) /**< \brief (PMC_FSMR) Fast Startup Input Enable 14 */ +#define PMC_FSMR_FSTT15 (0x1u << 15) /**< \brief (PMC_FSMR) Fast Startup Input Enable 15 */ +#define PMC_FSMR_RTTAL (0x1u << 16) /**< \brief (PMC_FSMR) RTT Alarm Enable */ +#define PMC_FSMR_RTCAL (0x1u << 17) /**< \brief (PMC_FSMR) RTC Alarm Enable */ +#define PMC_FSMR_LPM (0x1u << 20) /**< \brief (PMC_FSMR) Low Power Mode */ +/* -------- PMC_FSPR : (PMC Offset: 0x0074) Fast Startup Polarity Register -------- */ +#define PMC_FSPR_FSTP0 (0x1u << 0) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP1 (0x1u << 1) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP2 (0x1u << 2) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP3 (0x1u << 3) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP4 (0x1u << 4) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP5 (0x1u << 5) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP6 (0x1u << 6) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP7 (0x1u << 7) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP8 (0x1u << 8) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP9 (0x1u << 9) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP10 (0x1u << 10) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP11 (0x1u << 11) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP12 (0x1u << 12) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP13 (0x1u << 13) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP14 (0x1u << 14) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP15 (0x1u << 15) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +/* -------- PMC_FOCR : (PMC Offset: 0x0078) Fault Output Clear Register -------- */ +#define PMC_FOCR_FOCLR (0x1u << 0) /**< \brief (PMC_FOCR) Fault Output Clear */ +/* -------- PMC_WPMR : (PMC Offset: 0x00E4) Write Protect Mode Register -------- */ +#define PMC_WPMR_WPEN (0x1u << 0) /**< \brief (PMC_WPMR) Write Protect Enable */ +#define PMC_WPMR_WPKEY_Pos 8 +#define PMC_WPMR_WPKEY_Msk (0xffffffu << PMC_WPMR_WPKEY_Pos) /**< \brief (PMC_WPMR) Write Protect KEY */ +#define PMC_WPMR_WPKEY(value) ((PMC_WPMR_WPKEY_Msk & ((value) << PMC_WPMR_WPKEY_Pos))) +/* -------- PMC_WPSR : (PMC Offset: 0x00E8) Write Protect Status Register -------- */ +#define PMC_WPSR_WPVS (0x1u << 0) /**< \brief (PMC_WPSR) Write Protect Violation Status */ +#define PMC_WPSR_WPVSRC_Pos 8 +#define PMC_WPSR_WPVSRC_Msk (0xffffu << PMC_WPSR_WPVSRC_Pos) /**< \brief (PMC_WPSR) Write Protect Violation Source */ + +/*@}*/ + + +#endif /* _SAM3N_PMC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_pwm.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_pwm.h new file mode 100644 index 000000000..fb81edc12 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_pwm.h @@ -0,0 +1,172 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_PWM_COMPONENT_ +#define _SAM3N_PWM_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Pulse Width Modulation Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3N_PWM Pulse Width Modulation Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief PwmCh_num hardware registers */ +typedef struct { + RwReg PWM_CMR; /**< \brief (PwmCh_num Offset: 0x0) PWM Channel Mode Register */ + RwReg PWM_CDTY; /**< \brief (PwmCh_num Offset: 0x4) PWM Channel Duty Cycle Register */ + RwReg PWM_CPRD; /**< \brief (PwmCh_num Offset: 0x8) PWM Channel Period Register */ + RwReg PWM_CCNT; /**< \brief (PwmCh_num Offset: 0xC) PWM Channel Counter Register */ + RwReg PWM_CUPD; /**< \brief (PwmCh_num Offset: 0x10) PWM Channel Update Register */ + RoReg Reserved1[3]; +} PwmCh_num; +/** \brief Pwm hardware registers */ +#define PWMCH_NUM_NUMBER 4 +typedef struct { + RwReg PWM_MR; /**< \brief (Pwm Offset: 0x00) PWM Mode Register */ + WoReg PWM_ENA; /**< \brief (Pwm Offset: 0x04) PWM Enable Register */ + WoReg PWM_DIS; /**< \brief (Pwm Offset: 0x08) PWM Disable Register */ + RoReg PWM_SR; /**< \brief (Pwm Offset: 0x0C) PWM Status Register */ + WoReg PWM_IER; /**< \brief (Pwm Offset: 0x10) PWM Interrupt Enable Register */ + WoReg PWM_IDR; /**< \brief (Pwm Offset: 0x14) PWM Interrupt Disable Register */ + RoReg PWM_IMR; /**< \brief (Pwm Offset: 0x18) PWM Interrupt Mask Register */ + RoReg PWM_ISR; /**< \brief (Pwm Offset: 0x1C) PWM Interrupt Status Register */ + RoReg Reserved1[120]; + PwmCh_num PWM_CH_NUM[PWMCH_NUM_NUMBER]; /**< \brief (Pwm Offset: 0x200) ch_num = 0 .. 3 */ +} Pwm; +#endif /* __ASSEMBLY__ */ +/* -------- PWM_MR : (PWM Offset: 0x00) PWM Mode Register -------- */ +#define PWM_MR_DIVA_Pos 0 +#define PWM_MR_DIVA_Msk (0xffu << PWM_MR_DIVA_Pos) /**< \brief (PWM_MR) CLKA, CLKB Divide Factor */ +#define PWM_MR_DIVA_CLK_OFF (0x0u << 0) /**< \brief (PWM_MR) CLKA, CLKB clock is turned off */ +#define PWM_MR_DIVA_CLK_DIV1 (0x1u << 0) /**< \brief (PWM_MR) CLKA, CLKB clock is clock selected by PREA, PREB */ +#define PWM_MR_PREA_Pos 8 +#define PWM_MR_PREA_Msk (0xfu << PWM_MR_PREA_Pos) /**< \brief (PWM_MR) */ +#define PWM_MR_PREA_MCK (0x0u << 8) /**< \brief (PWM_MR) Master Clock */ +#define PWM_MR_PREA_MCKDIV2 (0x1u << 8) /**< \brief (PWM_MR) Master Clock divided by 2 */ +#define PWM_MR_PREA_MCKDIV4 (0x2u << 8) /**< \brief (PWM_MR) Master Clock divided by 4 */ +#define PWM_MR_PREA_MCKDIV8 (0x3u << 8) /**< \brief (PWM_MR) Master Clock divided by 8 */ +#define PWM_MR_PREA_MCKDIV16 (0x4u << 8) /**< \brief (PWM_MR) Master Clock divided by 16 */ +#define PWM_MR_PREA_MCKDIV32 (0x5u << 8) /**< \brief (PWM_MR) Master Clock divided by 32 */ +#define PWM_MR_PREA_MCKDIV64 (0x6u << 8) /**< \brief (PWM_MR) Master Clock divided by 64 */ +#define PWM_MR_PREA_MCKDIV128 (0x7u << 8) /**< \brief (PWM_MR) Master Clock divided by 128 */ +#define PWM_MR_PREA_MCKDIV256 (0x8u << 8) /**< \brief (PWM_MR) Master Clock divided by 256 */ +#define PWM_MR_PREA_MCKDIV512 (0x9u << 8) /**< \brief (PWM_MR) Master Clock divided by 512 */ +#define PWM_MR_PREA_MCKDIV1024 (0xAu << 8) /**< \brief (PWM_MR) Master Clock divided by 1024 */ +#define PWM_MR_DIVB_Pos 16 +#define PWM_MR_DIVB_Msk (0xffu << PWM_MR_DIVB_Pos) /**< \brief (PWM_MR) CLKA, CLKB Divide Factor */ +#define PWM_MR_DIVB_CLK_OFF (0x0u << 16) /**< \brief (PWM_MR) CLKA, CLKB clock is turned off */ +#define PWM_MR_DIVB_CLK_DIV1 (0x1u << 16) /**< \brief (PWM_MR) CLKA, CLKB clock is clock selected by PREA, PREB */ +#define PWM_MR_PREB_Pos 24 +#define PWM_MR_PREB_Msk (0xfu << PWM_MR_PREB_Pos) /**< \brief (PWM_MR) */ +#define PWM_MR_PREB_MCK (0x0u << 24) /**< \brief (PWM_MR) Master Clock */ +#define PWM_MR_PREB_MCKDIV2 (0x1u << 24) /**< \brief (PWM_MR) Master Clock divided by 2 */ +#define PWM_MR_PREB_MCKDIV4 (0x2u << 24) /**< \brief (PWM_MR) Master Clock divided by 4 */ +#define PWM_MR_PREB_MCKDIV8 (0x3u << 24) /**< \brief (PWM_MR) Master Clock divided by 8 */ +#define PWM_MR_PREB_MCKDIV16 (0x4u << 24) /**< \brief (PWM_MR) Master Clock divided by 16 */ +#define PWM_MR_PREB_MCKDIV32 (0x5u << 24) /**< \brief (PWM_MR) Master Clock divided by 32 */ +#define PWM_MR_PREB_MCKDIV64 (0x6u << 24) /**< \brief (PWM_MR) Master Clock divided by 64 */ +#define PWM_MR_PREB_MCKDIV128 (0x7u << 24) /**< \brief (PWM_MR) Master Clock divided by 128 */ +#define PWM_MR_PREB_MCKDIV256 (0x8u << 24) /**< \brief (PWM_MR) Master Clock divided by 256 */ +#define PWM_MR_PREB_MCKDIV512 (0x9u << 24) /**< \brief (PWM_MR) Master Clock divided by 512 */ +#define PWM_MR_PREB_MCKDIV1024 (0xAu << 24) /**< \brief (PWM_MR) Master Clock divided by 1024 */ +/* -------- PWM_ENA : (PWM Offset: 0x04) PWM Enable Register -------- */ +#define PWM_ENA_CHID0 (0x1u << 0) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID1 (0x1u << 1) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID2 (0x1u << 2) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID3 (0x1u << 3) /**< \brief (PWM_ENA) Channel ID */ +/* -------- PWM_DIS : (PWM Offset: 0x08) PWM Disable Register -------- */ +#define PWM_DIS_CHID0 (0x1u << 0) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID1 (0x1u << 1) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID2 (0x1u << 2) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID3 (0x1u << 3) /**< \brief (PWM_DIS) Channel ID */ +/* -------- PWM_SR : (PWM Offset: 0x0C) PWM Status Register -------- */ +#define PWM_SR_CHID0 (0x1u << 0) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID1 (0x1u << 1) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID2 (0x1u << 2) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID3 (0x1u << 3) /**< \brief (PWM_SR) Channel ID */ +/* -------- PWM_IER : (PWM Offset: 0x10) PWM Interrupt Enable Register -------- */ +#define PWM_IER_CHID0 (0x1u << 0) /**< \brief (PWM_IER) Channel ID. */ +#define PWM_IER_CHID1 (0x1u << 1) /**< \brief (PWM_IER) Channel ID. */ +#define PWM_IER_CHID2 (0x1u << 2) /**< \brief (PWM_IER) Channel ID. */ +#define PWM_IER_CHID3 (0x1u << 3) /**< \brief (PWM_IER) Channel ID. */ +/* -------- PWM_IDR : (PWM Offset: 0x14) PWM Interrupt Disable Register -------- */ +#define PWM_IDR_CHID0 (0x1u << 0) /**< \brief (PWM_IDR) Channel ID. */ +#define PWM_IDR_CHID1 (0x1u << 1) /**< \brief (PWM_IDR) Channel ID. */ +#define PWM_IDR_CHID2 (0x1u << 2) /**< \brief (PWM_IDR) Channel ID. */ +#define PWM_IDR_CHID3 (0x1u << 3) /**< \brief (PWM_IDR) Channel ID. */ +/* -------- PWM_IMR : (PWM Offset: 0x18) PWM Interrupt Mask Register -------- */ +#define PWM_IMR_CHID0 (0x1u << 0) /**< \brief (PWM_IMR) Channel ID. */ +#define PWM_IMR_CHID1 (0x1u << 1) /**< \brief (PWM_IMR) Channel ID. */ +#define PWM_IMR_CHID2 (0x1u << 2) /**< \brief (PWM_IMR) Channel ID. */ +#define PWM_IMR_CHID3 (0x1u << 3) /**< \brief (PWM_IMR) Channel ID. */ +/* -------- PWM_ISR : (PWM Offset: 0x1C) PWM Interrupt Status Register -------- */ +#define PWM_ISR_CHID0 (0x1u << 0) /**< \brief (PWM_ISR) Channel ID */ +#define PWM_ISR_CHID1 (0x1u << 1) /**< \brief (PWM_ISR) Channel ID */ +#define PWM_ISR_CHID2 (0x1u << 2) /**< \brief (PWM_ISR) Channel ID */ +#define PWM_ISR_CHID3 (0x1u << 3) /**< \brief (PWM_ISR) Channel ID */ +/* -------- PWM_CMR : (PWM Offset: N/A) PWM Channel Mode Register -------- */ +#define PWM_CMR_CPRE_Pos 0 +#define PWM_CMR_CPRE_Msk (0xfu << PWM_CMR_CPRE_Pos) /**< \brief (PWM_CMR) Channel Pre-scaler */ +#define PWM_CMR_CPRE_MCK (0x0u << 0) /**< \brief (PWM_CMR) Master Clock */ +#define PWM_CMR_CPRE_MCKDIV2 (0x1u << 0) /**< \brief (PWM_CMR) Master Clock divided by 2 */ +#define PWM_CMR_CPRE_MCKDIV4 (0x2u << 0) /**< \brief (PWM_CMR) Master Clock divided by 4 */ +#define PWM_CMR_CPRE_MCKDIV8 (0x3u << 0) /**< \brief (PWM_CMR) Master Clock divided by 8 */ +#define PWM_CMR_CPRE_MCKDIV16 (0x4u << 0) /**< \brief (PWM_CMR) Master Clock divided by 16 */ +#define PWM_CMR_CPRE_MCKDIV32 (0x5u << 0) /**< \brief (PWM_CMR) Master Clock divided by 32 */ +#define PWM_CMR_CPRE_MCKDIV64 (0x6u << 0) /**< \brief (PWM_CMR) Master Clock divided by 64 */ +#define PWM_CMR_CPRE_MCKDIV128 (0x7u << 0) /**< \brief (PWM_CMR) Master Clock divided by 128 */ +#define PWM_CMR_CPRE_MCKDIV256 (0x8u << 0) /**< \brief (PWM_CMR) Master Clock divided by 256 */ +#define PWM_CMR_CPRE_MCKDIV512 (0x9u << 0) /**< \brief (PWM_CMR) Master Clock divided by 512 */ +#define PWM_CMR_CPRE_MCKDIV1024 (0xAu << 0) /**< \brief (PWM_CMR) Master Clock divided by 1024 */ +#define PWM_CMR_CPRE_CLKA (0xBu << 0) /**< \brief (PWM_CMR) Clock A */ +#define PWM_CMR_CPRE_CLKB (0xCu << 0) /**< \brief (PWM_CMR) Clock B */ +#define PWM_CMR_CALG (0x1u << 8) /**< \brief (PWM_CMR) Channel Alignment */ +#define PWM_CMR_CPOL (0x1u << 9) /**< \brief (PWM_CMR) Channel Polarity */ +#define PWM_CMR_CPD (0x1u << 10) /**< \brief (PWM_CMR) Channel Update Period */ +/* -------- PWM_CDTY : (PWM Offset: N/A) PWM Channel Duty Cycle Register -------- */ +#define PWM_CDTY_CDTY_Pos 0 +#define PWM_CDTY_CDTY_Msk (0xffffffffu << PWM_CDTY_CDTY_Pos) /**< \brief (PWM_CDTY) Channel Duty Cycle */ +#define PWM_CDTY_CDTY(value) ((PWM_CDTY_CDTY_Msk & ((value) << PWM_CDTY_CDTY_Pos))) +/* -------- PWM_CPRD : (PWM Offset: N/A) PWM Channel Period Register -------- */ +#define PWM_CPRD_CPRD_Pos 0 +#define PWM_CPRD_CPRD_Msk (0xffffffffu << PWM_CPRD_CPRD_Pos) /**< \brief (PWM_CPRD) Channel Period */ +#define PWM_CPRD_CPRD(value) ((PWM_CPRD_CPRD_Msk & ((value) << PWM_CPRD_CPRD_Pos))) +/* -------- PWM_CCNT : (PWM Offset: N/A) PWM Channel Counter Register -------- */ +#define PWM_CCNT_CNT_Pos 0 +#define PWM_CCNT_CNT_Msk (0xffffffffu << PWM_CCNT_CNT_Pos) /**< \brief (PWM_CCNT) Channel Counter Register */ +/* -------- PWM_CUPD : (PWM Offset: N/A) PWM Channel Update Register -------- */ +#define PWM_CUPD_CUPD_Pos 0 +#define PWM_CUPD_CUPD_Msk (0xffffffffu << PWM_CUPD_CUPD_Pos) /**< \brief (PWM_CUPD) */ +#define PWM_CUPD_CUPD(value) ((PWM_CUPD_CUPD_Msk & ((value) << PWM_CUPD_CUPD_Pos))) + +/*@}*/ + + +#endif /* _SAM3N_PWM_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_rstc.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_rstc.h new file mode 100644 index 000000000..1ef3fd5ff --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_rstc.h @@ -0,0 +1,73 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_RSTC_COMPONENT_ +#define _SAM3N_RSTC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Reset Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3N_RSTC Reset Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Rstc hardware registers */ +typedef struct { + WoReg RSTC_CR; /**< \brief (Rstc Offset: 0x00) Control Register */ + RoReg RSTC_SR; /**< \brief (Rstc Offset: 0x04) Status Register */ + RwReg RSTC_MR; /**< \brief (Rstc Offset: 0x08) Mode Register */ +} Rstc; +#endif /* __ASSEMBLY__ */ +/* -------- RSTC_CR : (RSTC Offset: 0x00) Control Register -------- */ +#define RSTC_CR_PROCRST (0x1u << 0) /**< \brief (RSTC_CR) Processor Reset */ +#define RSTC_CR_PERRST (0x1u << 2) /**< \brief (RSTC_CR) Peripheral Reset */ +#define RSTC_CR_EXTRST (0x1u << 3) /**< \brief (RSTC_CR) External Reset */ +#define RSTC_CR_KEY_Pos 24 +#define RSTC_CR_KEY_Msk (0xffu << RSTC_CR_KEY_Pos) /**< \brief (RSTC_CR) Password */ +#define RSTC_CR_KEY(value) ((RSTC_CR_KEY_Msk & ((value) << RSTC_CR_KEY_Pos))) +/* -------- RSTC_SR : (RSTC Offset: 0x04) Status Register -------- */ +#define RSTC_SR_URSTS (0x1u << 0) /**< \brief (RSTC_SR) User Reset Status */ +#define RSTC_SR_RSTTYP_Pos 8 +#define RSTC_SR_RSTTYP_Msk (0x7u << RSTC_SR_RSTTYP_Pos) /**< \brief (RSTC_SR) Reset Type */ +#define RSTC_SR_NRSTL (0x1u << 16) /**< \brief (RSTC_SR) NRST Pin Level */ +#define RSTC_SR_SRCMP (0x1u << 17) /**< \brief (RSTC_SR) Software Reset Command in Progress */ +/* -------- RSTC_MR : (RSTC Offset: 0x08) Mode Register -------- */ +#define RSTC_MR_URSTEN (0x1u << 0) /**< \brief (RSTC_MR) User Reset Enable */ +#define RSTC_MR_URSTIEN (0x1u << 4) /**< \brief (RSTC_MR) User Reset Interrupt Enable */ +#define RSTC_MR_ERSTL_Pos 8 +#define RSTC_MR_ERSTL_Msk (0xfu << RSTC_MR_ERSTL_Pos) /**< \brief (RSTC_MR) External Reset Length */ +#define RSTC_MR_ERSTL(value) ((RSTC_MR_ERSTL_Msk & ((value) << RSTC_MR_ERSTL_Pos))) +#define RSTC_MR_KEY_Pos 24 +#define RSTC_MR_KEY_Msk (0xffu << RSTC_MR_KEY_Pos) /**< \brief (RSTC_MR) Password */ +#define RSTC_MR_KEY(value) ((RSTC_MR_KEY_Msk & ((value) << RSTC_MR_KEY_Pos))) + +/*@}*/ + + +#endif /* _SAM3N_RSTC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_rtc.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_rtc.h new file mode 100644 index 000000000..8077c401c --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_rtc.h @@ -0,0 +1,168 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_RTC_COMPONENT_ +#define _SAM3N_RTC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Real-time Clock */ +/* ============================================================================= */ +/** \addtogroup SAM3N_RTC Real-time Clock */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Rtc hardware registers */ +typedef struct { + RwReg RTC_CR; /**< \brief (Rtc Offset: 0x00) Control Register */ + RwReg RTC_MR; /**< \brief (Rtc Offset: 0x04) Mode Register */ + RwReg RTC_TIMR; /**< \brief (Rtc Offset: 0x08) Time Register */ + RwReg RTC_CALR; /**< \brief (Rtc Offset: 0x0C) Calendar Register */ + RwReg RTC_TIMALR; /**< \brief (Rtc Offset: 0x10) Time Alarm Register */ + RwReg RTC_CALALR; /**< \brief (Rtc Offset: 0x14) Calendar Alarm Register */ + RoReg RTC_SR; /**< \brief (Rtc Offset: 0x18) Status Register */ + WoReg RTC_SCCR; /**< \brief (Rtc Offset: 0x1C) Status Clear Command Register */ + WoReg RTC_IER; /**< \brief (Rtc Offset: 0x20) Interrupt Enable Register */ + WoReg RTC_IDR; /**< \brief (Rtc Offset: 0x24) Interrupt Disable Register */ + RoReg RTC_IMR; /**< \brief (Rtc Offset: 0x28) Interrupt Mask Register */ + RoReg RTC_VER; /**< \brief (Rtc Offset: 0x2C) Valid Entry Register */ + RoReg Reserved1[45]; + RwReg RTC_WPMR; /**< \brief (Rtc Offset: 0xE4) Write Protect Mode Register */ +} Rtc; +#endif /* __ASSEMBLY__ */ +/* -------- RTC_CR : (RTC Offset: 0x00) Control Register -------- */ +#define RTC_CR_UPDTIM (0x1u << 0) /**< \brief (RTC_CR) Update Request Time Register */ +#define RTC_CR_UPDCAL (0x1u << 1) /**< \brief (RTC_CR) Update Request Calendar Register */ +#define RTC_CR_TIMEVSEL_Pos 8 +#define RTC_CR_TIMEVSEL_Msk (0x3u << RTC_CR_TIMEVSEL_Pos) /**< \brief (RTC_CR) Time Event Selection */ +#define RTC_CR_TIMEVSEL_MINUTE (0x0u << 8) /**< \brief (RTC_CR) Minute change */ +#define RTC_CR_TIMEVSEL_HOUR (0x1u << 8) /**< \brief (RTC_CR) Hour change */ +#define RTC_CR_TIMEVSEL_MIDNIGHT (0x2u << 8) /**< \brief (RTC_CR) Every day at midnight */ +#define RTC_CR_TIMEVSEL_NOON (0x3u << 8) /**< \brief (RTC_CR) Every day at noon */ +#define RTC_CR_CALEVSEL_Pos 16 +#define RTC_CR_CALEVSEL_Msk (0x3u << RTC_CR_CALEVSEL_Pos) /**< \brief (RTC_CR) Calendar Event Selection */ +#define RTC_CR_CALEVSEL_WEEK (0x0u << 16) /**< \brief (RTC_CR) Week change (every Monday at time 00:00:00) */ +#define RTC_CR_CALEVSEL_MONTH (0x1u << 16) /**< \brief (RTC_CR) Month change (every 01 of each month at time 00:00:00) */ +#define RTC_CR_CALEVSEL_YEAR (0x2u << 16) /**< \brief (RTC_CR) Year change (every January 1 at time 00:00:00) */ +/* -------- RTC_MR : (RTC Offset: 0x04) Mode Register -------- */ +#define RTC_MR_HRMOD (0x1u << 0) /**< \brief (RTC_MR) 12-/24-hour Mode */ +/* -------- RTC_TIMR : (RTC Offset: 0x08) Time Register -------- */ +#define RTC_TIMR_SEC_Pos 0 +#define RTC_TIMR_SEC_Msk (0x7fu << RTC_TIMR_SEC_Pos) /**< \brief (RTC_TIMR) Current Second */ +#define RTC_TIMR_SEC(value) ((RTC_TIMR_SEC_Msk & ((value) << RTC_TIMR_SEC_Pos))) +#define RTC_TIMR_MIN_Pos 8 +#define RTC_TIMR_MIN_Msk (0x7fu << RTC_TIMR_MIN_Pos) /**< \brief (RTC_TIMR) Current Minute */ +#define RTC_TIMR_MIN(value) ((RTC_TIMR_MIN_Msk & ((value) << RTC_TIMR_MIN_Pos))) +#define RTC_TIMR_HOUR_Pos 16 +#define RTC_TIMR_HOUR_Msk (0x3fu << RTC_TIMR_HOUR_Pos) /**< \brief (RTC_TIMR) Current Hour */ +#define RTC_TIMR_HOUR(value) ((RTC_TIMR_HOUR_Msk & ((value) << RTC_TIMR_HOUR_Pos))) +#define RTC_TIMR_AMPM (0x1u << 22) /**< \brief (RTC_TIMR) Ante Meridiem Post Meridiem Indicator */ +/* -------- RTC_CALR : (RTC Offset: 0x0C) Calendar Register -------- */ +#define RTC_CALR_CENT_Pos 0 +#define RTC_CALR_CENT_Msk (0x7fu << RTC_CALR_CENT_Pos) /**< \brief (RTC_CALR) Current Century */ +#define RTC_CALR_CENT(value) ((RTC_CALR_CENT_Msk & ((value) << RTC_CALR_CENT_Pos))) +#define RTC_CALR_YEAR_Pos 8 +#define RTC_CALR_YEAR_Msk (0xffu << RTC_CALR_YEAR_Pos) /**< \brief (RTC_CALR) Current Year */ +#define RTC_CALR_YEAR(value) ((RTC_CALR_YEAR_Msk & ((value) << RTC_CALR_YEAR_Pos))) +#define RTC_CALR_MONTH_Pos 16 +#define RTC_CALR_MONTH_Msk (0x1fu << RTC_CALR_MONTH_Pos) /**< \brief (RTC_CALR) Current Month */ +#define RTC_CALR_MONTH(value) ((RTC_CALR_MONTH_Msk & ((value) << RTC_CALR_MONTH_Pos))) +#define RTC_CALR_DAY_Pos 21 +#define RTC_CALR_DAY_Msk (0x7u << RTC_CALR_DAY_Pos) /**< \brief (RTC_CALR) Current Day in Current Week */ +#define RTC_CALR_DAY(value) ((RTC_CALR_DAY_Msk & ((value) << RTC_CALR_DAY_Pos))) +#define RTC_CALR_DATE_Pos 24 +#define RTC_CALR_DATE_Msk (0x3fu << RTC_CALR_DATE_Pos) /**< \brief (RTC_CALR) Current Day in Current Month */ +#define RTC_CALR_DATE(value) ((RTC_CALR_DATE_Msk & ((value) << RTC_CALR_DATE_Pos))) +/* -------- RTC_TIMALR : (RTC Offset: 0x10) Time Alarm Register -------- */ +#define RTC_TIMALR_SEC_Pos 0 +#define RTC_TIMALR_SEC_Msk (0x7fu << RTC_TIMALR_SEC_Pos) /**< \brief (RTC_TIMALR) Second Alarm */ +#define RTC_TIMALR_SEC(value) ((RTC_TIMALR_SEC_Msk & ((value) << RTC_TIMALR_SEC_Pos))) +#define RTC_TIMALR_SECEN (0x1u << 7) /**< \brief (RTC_TIMALR) Second Alarm Enable */ +#define RTC_TIMALR_MIN_Pos 8 +#define RTC_TIMALR_MIN_Msk (0x7fu << RTC_TIMALR_MIN_Pos) /**< \brief (RTC_TIMALR) Minute Alarm */ +#define RTC_TIMALR_MIN(value) ((RTC_TIMALR_MIN_Msk & ((value) << RTC_TIMALR_MIN_Pos))) +#define RTC_TIMALR_MINEN (0x1u << 15) /**< \brief (RTC_TIMALR) Minute Alarm Enable */ +#define RTC_TIMALR_HOUR_Pos 16 +#define RTC_TIMALR_HOUR_Msk (0x3fu << RTC_TIMALR_HOUR_Pos) /**< \brief (RTC_TIMALR) Hour Alarm */ +#define RTC_TIMALR_HOUR(value) ((RTC_TIMALR_HOUR_Msk & ((value) << RTC_TIMALR_HOUR_Pos))) +#define RTC_TIMALR_AMPM (0x1u << 22) /**< \brief (RTC_TIMALR) AM/PM Indicator */ +#define RTC_TIMALR_HOUREN (0x1u << 23) /**< \brief (RTC_TIMALR) Hour Alarm Enable */ +/* -------- RTC_CALALR : (RTC Offset: 0x14) Calendar Alarm Register -------- */ +#define RTC_CALALR_MONTH_Pos 16 +#define RTC_CALALR_MONTH_Msk (0x1fu << RTC_CALALR_MONTH_Pos) /**< \brief (RTC_CALALR) Month Alarm */ +#define RTC_CALALR_MONTH(value) ((RTC_CALALR_MONTH_Msk & ((value) << RTC_CALALR_MONTH_Pos))) +#define RTC_CALALR_MTHEN (0x1u << 23) /**< \brief (RTC_CALALR) Month Alarm Enable */ +#define RTC_CALALR_DATE_Pos 24 +#define RTC_CALALR_DATE_Msk (0x3fu << RTC_CALALR_DATE_Pos) /**< \brief (RTC_CALALR) Date Alarm */ +#define RTC_CALALR_DATE(value) ((RTC_CALALR_DATE_Msk & ((value) << RTC_CALALR_DATE_Pos))) +#define RTC_CALALR_DATEEN (0x1u << 31) /**< \brief (RTC_CALALR) Date Alarm Enable */ +/* -------- RTC_SR : (RTC Offset: 0x18) Status Register -------- */ +#define RTC_SR_ACKUPD (0x1u << 0) /**< \brief (RTC_SR) Acknowledge for Update */ +#define RTC_SR_ALARM (0x1u << 1) /**< \brief (RTC_SR) Alarm Flag */ +#define RTC_SR_SEC (0x1u << 2) /**< \brief (RTC_SR) Second Event */ +#define RTC_SR_TIMEV (0x1u << 3) /**< \brief (RTC_SR) Time Event */ +#define RTC_SR_CALEV (0x1u << 4) /**< \brief (RTC_SR) Calendar Event */ +/* -------- RTC_SCCR : (RTC Offset: 0x1C) Status Clear Command Register -------- */ +#define RTC_SCCR_ACKCLR (0x1u << 0) /**< \brief (RTC_SCCR) Acknowledge Clear */ +#define RTC_SCCR_ALRCLR (0x1u << 1) /**< \brief (RTC_SCCR) Alarm Clear */ +#define RTC_SCCR_SECCLR (0x1u << 2) /**< \brief (RTC_SCCR) Second Clear */ +#define RTC_SCCR_TIMCLR (0x1u << 3) /**< \brief (RTC_SCCR) Time Clear */ +#define RTC_SCCR_CALCLR (0x1u << 4) /**< \brief (RTC_SCCR) Calendar Clear */ +/* -------- RTC_IER : (RTC Offset: 0x20) Interrupt Enable Register -------- */ +#define RTC_IER_ACKEN (0x1u << 0) /**< \brief (RTC_IER) Acknowledge Update Interrupt Enable */ +#define RTC_IER_ALREN (0x1u << 1) /**< \brief (RTC_IER) Alarm Interrupt Enable */ +#define RTC_IER_SECEN (0x1u << 2) /**< \brief (RTC_IER) Second Event Interrupt Enable */ +#define RTC_IER_TIMEN (0x1u << 3) /**< \brief (RTC_IER) Time Event Interrupt Enable */ +#define RTC_IER_CALEN (0x1u << 4) /**< \brief (RTC_IER) Calendar Event Interrupt Enable */ +/* -------- RTC_IDR : (RTC Offset: 0x24) Interrupt Disable Register -------- */ +#define RTC_IDR_ACKDIS (0x1u << 0) /**< \brief (RTC_IDR) Acknowledge Update Interrupt Disable */ +#define RTC_IDR_ALRDIS (0x1u << 1) /**< \brief (RTC_IDR) Alarm Interrupt Disable */ +#define RTC_IDR_SECDIS (0x1u << 2) /**< \brief (RTC_IDR) Second Event Interrupt Disable */ +#define RTC_IDR_TIMDIS (0x1u << 3) /**< \brief (RTC_IDR) Time Event Interrupt Disable */ +#define RTC_IDR_CALDIS (0x1u << 4) /**< \brief (RTC_IDR) Calendar Event Interrupt Disable */ +/* -------- RTC_IMR : (RTC Offset: 0x28) Interrupt Mask Register -------- */ +#define RTC_IMR_ACK (0x1u << 0) /**< \brief (RTC_IMR) Acknowledge Update Interrupt Mask */ +#define RTC_IMR_ALR (0x1u << 1) /**< \brief (RTC_IMR) Alarm Interrupt Mask */ +#define RTC_IMR_SEC (0x1u << 2) /**< \brief (RTC_IMR) Second Event Interrupt Mask */ +#define RTC_IMR_TIM (0x1u << 3) /**< \brief (RTC_IMR) Time Event Interrupt Mask */ +#define RTC_IMR_CAL (0x1u << 4) /**< \brief (RTC_IMR) Calendar Event Interrupt Mask */ +/* -------- RTC_VER : (RTC Offset: 0x2C) Valid Entry Register -------- */ +#define RTC_VER_NVTIM (0x1u << 0) /**< \brief (RTC_VER) Non-valid Time */ +#define RTC_VER_NVCAL (0x1u << 1) /**< \brief (RTC_VER) Non-valid Calendar */ +#define RTC_VER_NVTIMALR (0x1u << 2) /**< \brief (RTC_VER) Non-valid Time Alarm */ +#define RTC_VER_NVCALALR (0x1u << 3) /**< \brief (RTC_VER) Non-valid Calendar Alarm */ +/* -------- RTC_WPMR : (RTC Offset: 0xE4) Write Protect Mode Register -------- */ +#define RTC_WPMR_WPEN (0x1u << 0) /**< \brief (RTC_WPMR) Write Protect Enable */ +#define RTC_WPMR_WPKEY_Pos 8 +#define RTC_WPMR_WPKEY_Msk (0xffffffu << RTC_WPMR_WPKEY_Pos) /**< \brief (RTC_WPMR) */ +#define RTC_WPMR_WPKEY(value) ((RTC_WPMR_WPKEY_Msk & ((value) << RTC_WPMR_WPKEY_Pos))) + +/*@}*/ + + +#endif /* _SAM3N_RTC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_rtt.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_rtt.h new file mode 100644 index 000000000..17d2ac764 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_rtt.h @@ -0,0 +1,69 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_RTT_COMPONENT_ +#define _SAM3N_RTT_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Real-time Timer */ +/* ============================================================================= */ +/** \addtogroup SAM3N_RTT Real-time Timer */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Rtt hardware registers */ +typedef struct { + RwReg RTT_MR; /**< \brief (Rtt Offset: 0x00) Mode Register */ + RwReg RTT_AR; /**< \brief (Rtt Offset: 0x04) Alarm Register */ + RoReg RTT_VR; /**< \brief (Rtt Offset: 0x08) Value Register */ + RoReg RTT_SR; /**< \brief (Rtt Offset: 0x0C) Status Register */ +} Rtt; +#endif /* __ASSEMBLY__ */ +/* -------- RTT_MR : (RTT Offset: 0x00) Mode Register -------- */ +#define RTT_MR_RTPRES_Pos 0 +#define RTT_MR_RTPRES_Msk (0xffffu << RTT_MR_RTPRES_Pos) /**< \brief (RTT_MR) Real-time Timer Prescaler Value */ +#define RTT_MR_RTPRES(value) ((RTT_MR_RTPRES_Msk & ((value) << RTT_MR_RTPRES_Pos))) +#define RTT_MR_ALMIEN (0x1u << 16) /**< \brief (RTT_MR) Alarm Interrupt Enable */ +#define RTT_MR_RTTINCIEN (0x1u << 17) /**< \brief (RTT_MR) Real-time Timer Increment Interrupt Enable */ +#define RTT_MR_RTTRST (0x1u << 18) /**< \brief (RTT_MR) Real-time Timer Restart */ +/* -------- RTT_AR : (RTT Offset: 0x04) Alarm Register -------- */ +#define RTT_AR_ALMV_Pos 0 +#define RTT_AR_ALMV_Msk (0xffffffffu << RTT_AR_ALMV_Pos) /**< \brief (RTT_AR) Alarm Value */ +#define RTT_AR_ALMV(value) ((RTT_AR_ALMV_Msk & ((value) << RTT_AR_ALMV_Pos))) +/* -------- RTT_VR : (RTT Offset: 0x08) Value Register -------- */ +#define RTT_VR_CRTV_Pos 0 +#define RTT_VR_CRTV_Msk (0xffffffffu << RTT_VR_CRTV_Pos) /**< \brief (RTT_VR) Current Real-time Value */ +/* -------- RTT_SR : (RTT Offset: 0x0C) Status Register -------- */ +#define RTT_SR_ALMS (0x1u << 0) /**< \brief (RTT_SR) Real-time Alarm Status */ +#define RTT_SR_RTTINC (0x1u << 1) /**< \brief (RTT_SR) Real-time Timer Increment */ + +/*@}*/ + + +#endif /* _SAM3N_RTT_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_spi.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_spi.h new file mode 100644 index 000000000..a3a3f0253 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_spi.h @@ -0,0 +1,227 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_SPI_COMPONENT_ +#define _SAM3N_SPI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Serial Peripheral Interface */ +/* ============================================================================= */ +/** \addtogroup SAM3N_SPI Serial Peripheral Interface */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Spi hardware registers */ +typedef struct { + WoReg SPI_CR; /**< \brief (Spi Offset: 0x00) Control Register */ + RwReg SPI_MR; /**< \brief (Spi Offset: 0x04) Mode Register */ + RoReg SPI_RDR; /**< \brief (Spi Offset: 0x08) Receive Data Register */ + WoReg SPI_TDR; /**< \brief (Spi Offset: 0x0C) Transmit Data Register */ + RoReg SPI_SR; /**< \brief (Spi Offset: 0x10) Status Register */ + WoReg SPI_IER; /**< \brief (Spi Offset: 0x14) Interrupt Enable Register */ + WoReg SPI_IDR; /**< \brief (Spi Offset: 0x18) Interrupt Disable Register */ + RoReg SPI_IMR; /**< \brief (Spi Offset: 0x1C) Interrupt Mask Register */ + RoReg Reserved1[4]; + RwReg SPI_CSR[4]; /**< \brief (Spi Offset: 0x30) Chip Select Register */ + RoReg Reserved2[41]; + RwReg SPI_WPMR; /**< \brief (Spi Offset: 0xE4) Write Protection Control Register */ + RoReg SPI_WPSR; /**< \brief (Spi Offset: 0xE8) Write Protection Status Register */ + RoReg Reserved3[5]; + RwReg SPI_RPR; /**< \brief (Spi Offset: 0x100) Receive Pointer Register */ + RwReg SPI_RCR; /**< \brief (Spi Offset: 0x104) Receive Counter Register */ + RwReg SPI_TPR; /**< \brief (Spi Offset: 0x108) Transmit Pointer Register */ + RwReg SPI_TCR; /**< \brief (Spi Offset: 0x10C) Transmit Counter Register */ + RwReg SPI_RNPR; /**< \brief (Spi Offset: 0x110) Receive Next Pointer Register */ + RwReg SPI_RNCR; /**< \brief (Spi Offset: 0x114) Receive Next Counter Register */ + RwReg SPI_TNPR; /**< \brief (Spi Offset: 0x118) Transmit Next Pointer Register */ + RwReg SPI_TNCR; /**< \brief (Spi Offset: 0x11C) Transmit Next Counter Register */ + WoReg SPI_PTCR; /**< \brief (Spi Offset: 0x120) Transfer Control Register */ + RoReg SPI_PTSR; /**< \brief (Spi Offset: 0x124) Transfer Status Register */ +} Spi; +#endif /* __ASSEMBLY__ */ +/* -------- SPI_CR : (SPI Offset: 0x00) Control Register -------- */ +#define SPI_CR_SPIEN (0x1u << 0) /**< \brief (SPI_CR) SPI Enable */ +#define SPI_CR_SPIDIS (0x1u << 1) /**< \brief (SPI_CR) SPI Disable */ +#define SPI_CR_SWRST (0x1u << 7) /**< \brief (SPI_CR) SPI Software Reset */ +#define SPI_CR_LASTXFER (0x1u << 24) /**< \brief (SPI_CR) Last Transfer */ +/* -------- SPI_MR : (SPI Offset: 0x04) Mode Register -------- */ +#define SPI_MR_MSTR (0x1u << 0) /**< \brief (SPI_MR) Master/Slave Mode */ +#define SPI_MR_PS (0x1u << 1) /**< \brief (SPI_MR) Peripheral Select */ +#define SPI_MR_PCSDEC (0x1u << 2) /**< \brief (SPI_MR) Chip Select Decode */ +#define SPI_MR_MODFDIS (0x1u << 4) /**< \brief (SPI_MR) Mode Fault Detection */ +#define SPI_MR_WDRBT (0x1u << 5) /**< \brief (SPI_MR) Wait Data Read Before Transfer */ +#define SPI_MR_LLB (0x1u << 7) /**< \brief (SPI_MR) Local Loopback Enable */ +#define SPI_MR_PCS_Pos 16 +#define SPI_MR_PCS_Msk (0xfu << SPI_MR_PCS_Pos) /**< \brief (SPI_MR) Peripheral Chip Select */ +#define SPI_MR_PCS(value) ((SPI_MR_PCS_Msk & ((value) << SPI_MR_PCS_Pos))) +#define SPI_MR_DLYBCS_Pos 24 +#define SPI_MR_DLYBCS_Msk (0xffu << SPI_MR_DLYBCS_Pos) /**< \brief (SPI_MR) Delay Between Chip Selects */ +#define SPI_MR_DLYBCS(value) ((SPI_MR_DLYBCS_Msk & ((value) << SPI_MR_DLYBCS_Pos))) +/* -------- SPI_RDR : (SPI Offset: 0x08) Receive Data Register -------- */ +#define SPI_RDR_RD_Pos 0 +#define SPI_RDR_RD_Msk (0xffffu << SPI_RDR_RD_Pos) /**< \brief (SPI_RDR) Receive Data */ +#define SPI_RDR_PCS_Pos 16 +#define SPI_RDR_PCS_Msk (0xfu << SPI_RDR_PCS_Pos) /**< \brief (SPI_RDR) Peripheral Chip Select */ +/* -------- SPI_TDR : (SPI Offset: 0x0C) Transmit Data Register -------- */ +#define SPI_TDR_TD_Pos 0 +#define SPI_TDR_TD_Msk (0xffffu << SPI_TDR_TD_Pos) /**< \brief (SPI_TDR) Transmit Data */ +#define SPI_TDR_TD(value) ((SPI_TDR_TD_Msk & ((value) << SPI_TDR_TD_Pos))) +#define SPI_TDR_PCS_Pos 16 +#define SPI_TDR_PCS_Msk (0xfu << SPI_TDR_PCS_Pos) /**< \brief (SPI_TDR) Peripheral Chip Select */ +#define SPI_TDR_PCS(value) ((SPI_TDR_PCS_Msk & ((value) << SPI_TDR_PCS_Pos))) +#define SPI_TDR_LASTXFER (0x1u << 24) /**< \brief (SPI_TDR) Last Transfer */ +/* -------- SPI_SR : (SPI Offset: 0x10) Status Register -------- */ +#define SPI_SR_RDRF (0x1u << 0) /**< \brief (SPI_SR) Receive Data Register Full */ +#define SPI_SR_TDRE (0x1u << 1) /**< \brief (SPI_SR) Transmit Data Register Empty */ +#define SPI_SR_MODF (0x1u << 2) /**< \brief (SPI_SR) Mode Fault Error */ +#define SPI_SR_OVRES (0x1u << 3) /**< \brief (SPI_SR) Overrun Error Status */ +#define SPI_SR_ENDRX (0x1u << 4) /**< \brief (SPI_SR) End of RX buffer */ +#define SPI_SR_ENDTX (0x1u << 5) /**< \brief (SPI_SR) End of TX buffer */ +#define SPI_SR_RXBUFF (0x1u << 6) /**< \brief (SPI_SR) RX Buffer Full */ +#define SPI_SR_TXBUFE (0x1u << 7) /**< \brief (SPI_SR) TX Buffer Empty */ +#define SPI_SR_NSSR (0x1u << 8) /**< \brief (SPI_SR) NSS Rising */ +#define SPI_SR_TXEMPTY (0x1u << 9) /**< \brief (SPI_SR) Transmission Registers Empty */ +#define SPI_SR_UNDES (0x1u << 10) /**< \brief (SPI_SR) Underrun Error Status (Slave Mode Only) */ +#define SPI_SR_SPIENS (0x1u << 16) /**< \brief (SPI_SR) SPI Enable Status */ +/* -------- SPI_IER : (SPI Offset: 0x14) Interrupt Enable Register -------- */ +#define SPI_IER_RDRF (0x1u << 0) /**< \brief (SPI_IER) Receive Data Register Full Interrupt Enable */ +#define SPI_IER_TDRE (0x1u << 1) /**< \brief (SPI_IER) SPI Transmit Data Register Empty Interrupt Enable */ +#define SPI_IER_MODF (0x1u << 2) /**< \brief (SPI_IER) Mode Fault Error Interrupt Enable */ +#define SPI_IER_OVRES (0x1u << 3) /**< \brief (SPI_IER) Overrun Error Interrupt Enable */ +#define SPI_IER_ENDRX (0x1u << 4) /**< \brief (SPI_IER) End of Receive Buffer Interrupt Enable */ +#define SPI_IER_ENDTX (0x1u << 5) /**< \brief (SPI_IER) End of Transmit Buffer Interrupt Enable */ +#define SPI_IER_RXBUFF (0x1u << 6) /**< \brief (SPI_IER) Receive Buffer Full Interrupt Enable */ +#define SPI_IER_TXBUFE (0x1u << 7) /**< \brief (SPI_IER) Transmit Buffer Empty Interrupt Enable */ +#define SPI_IER_NSSR (0x1u << 8) /**< \brief (SPI_IER) NSS Rising Interrupt Enable */ +#define SPI_IER_TXEMPTY (0x1u << 9) /**< \brief (SPI_IER) Transmission Registers Empty Enable */ +#define SPI_IER_UNDES (0x1u << 10) /**< \brief (SPI_IER) Underrun Error Interrupt Enable */ +/* -------- SPI_IDR : (SPI Offset: 0x18) Interrupt Disable Register -------- */ +#define SPI_IDR_RDRF (0x1u << 0) /**< \brief (SPI_IDR) Receive Data Register Full Interrupt Disable */ +#define SPI_IDR_TDRE (0x1u << 1) /**< \brief (SPI_IDR) SPI Transmit Data Register Empty Interrupt Disable */ +#define SPI_IDR_MODF (0x1u << 2) /**< \brief (SPI_IDR) Mode Fault Error Interrupt Disable */ +#define SPI_IDR_OVRES (0x1u << 3) /**< \brief (SPI_IDR) Overrun Error Interrupt Disable */ +#define SPI_IDR_ENDRX (0x1u << 4) /**< \brief (SPI_IDR) End of Receive Buffer Interrupt Disable */ +#define SPI_IDR_ENDTX (0x1u << 5) /**< \brief (SPI_IDR) End of Transmit Buffer Interrupt Disable */ +#define SPI_IDR_RXBUFF (0x1u << 6) /**< \brief (SPI_IDR) Receive Buffer Full Interrupt Disable */ +#define SPI_IDR_TXBUFE (0x1u << 7) /**< \brief (SPI_IDR) Transmit Buffer Empty Interrupt Disable */ +#define SPI_IDR_NSSR (0x1u << 8) /**< \brief (SPI_IDR) NSS Rising Interrupt Disable */ +#define SPI_IDR_TXEMPTY (0x1u << 9) /**< \brief (SPI_IDR) Transmission Registers Empty Disable */ +#define SPI_IDR_UNDES (0x1u << 10) /**< \brief (SPI_IDR) Underrun Error Interrupt Disable */ +/* -------- SPI_IMR : (SPI Offset: 0x1C) Interrupt Mask Register -------- */ +#define SPI_IMR_RDRF (0x1u << 0) /**< \brief (SPI_IMR) Receive Data Register Full Interrupt Mask */ +#define SPI_IMR_TDRE (0x1u << 1) /**< \brief (SPI_IMR) SPI Transmit Data Register Empty Interrupt Mask */ +#define SPI_IMR_MODF (0x1u << 2) /**< \brief (SPI_IMR) Mode Fault Error Interrupt Mask */ +#define SPI_IMR_OVRES (0x1u << 3) /**< \brief (SPI_IMR) Overrun Error Interrupt Mask */ +#define SPI_IMR_ENDRX (0x1u << 4) /**< \brief (SPI_IMR) End of Receive Buffer Interrupt Mask */ +#define SPI_IMR_ENDTX (0x1u << 5) /**< \brief (SPI_IMR) End of Transmit Buffer Interrupt Mask */ +#define SPI_IMR_RXBUFF (0x1u << 6) /**< \brief (SPI_IMR) Receive Buffer Full Interrupt Mask */ +#define SPI_IMR_TXBUFE (0x1u << 7) /**< \brief (SPI_IMR) Transmit Buffer Empty Interrupt Mask */ +#define SPI_IMR_NSSR (0x1u << 8) /**< \brief (SPI_IMR) NSS Rising Interrupt Mask */ +#define SPI_IMR_TXEMPTY (0x1u << 9) /**< \brief (SPI_IMR) Transmission Registers Empty Mask */ +#define SPI_IMR_UNDES (0x1u << 10) /**< \brief (SPI_IMR) Underrun Error Interrupt Mask */ +/* -------- SPI_CSR[4] : (SPI Offset: 0x30) Chip Select Register -------- */ +#define SPI_CSR_CPOL (0x1u << 0) /**< \brief (SPI_CSR[4]) Clock Polarity */ +#define SPI_CSR_NCPHA (0x1u << 1) /**< \brief (SPI_CSR[4]) Clock Phase */ +#define SPI_CSR_CSNAAT (0x1u << 2) /**< \brief (SPI_CSR[4]) Chip Select Not Active After Transfer (Ignored if CSAAT = 1) */ +#define SPI_CSR_CSAAT (0x1u << 3) /**< \brief (SPI_CSR[4]) Chip Select Not Active After Transfer (Ignored if CSAAT = 1) */ +#define SPI_CSR_BITS_Pos 4 +#define SPI_CSR_BITS_Msk (0xfu << SPI_CSR_BITS_Pos) /**< \brief (SPI_CSR[4]) Bits Per Transfer */ +#define SPI_CSR_BITS_8_BIT (0x0u << 4) /**< \brief (SPI_CSR[4]) 8 bits for transfer */ +#define SPI_CSR_BITS_9_BIT (0x1u << 4) /**< \brief (SPI_CSR[4]) 9 bits for transfer */ +#define SPI_CSR_BITS_10_BIT (0x2u << 4) /**< \brief (SPI_CSR[4]) 10 bits for transfer */ +#define SPI_CSR_BITS_11_BIT (0x3u << 4) /**< \brief (SPI_CSR[4]) 11 bits for transfer */ +#define SPI_CSR_BITS_12_BIT (0x4u << 4) /**< \brief (SPI_CSR[4]) 12 bits for transfer */ +#define SPI_CSR_BITS_13_BIT (0x5u << 4) /**< \brief (SPI_CSR[4]) 13 bits for transfer */ +#define SPI_CSR_BITS_14_BIT (0x6u << 4) /**< \brief (SPI_CSR[4]) 14 bits for transfer */ +#define SPI_CSR_BITS_15_BIT (0x7u << 4) /**< \brief (SPI_CSR[4]) 15 bits for transfer */ +#define SPI_CSR_BITS_16_BIT (0x8u << 4) /**< \brief (SPI_CSR[4]) 16 bits for transfer */ +#define SPI_CSR_SCBR_Pos 8 +#define SPI_CSR_SCBR_Msk (0xffu << SPI_CSR_SCBR_Pos) /**< \brief (SPI_CSR[4]) Serial Clock Baud Rate */ +#define SPI_CSR_SCBR(value) ((SPI_CSR_SCBR_Msk & ((value) << SPI_CSR_SCBR_Pos))) +#define SPI_CSR_DLYBS_Pos 16 +#define SPI_CSR_DLYBS_Msk (0xffu << SPI_CSR_DLYBS_Pos) /**< \brief (SPI_CSR[4]) Delay Before SPCK */ +#define SPI_CSR_DLYBS(value) ((SPI_CSR_DLYBS_Msk & ((value) << SPI_CSR_DLYBS_Pos))) +#define SPI_CSR_DLYBCT_Pos 24 +#define SPI_CSR_DLYBCT_Msk (0xffu << SPI_CSR_DLYBCT_Pos) /**< \brief (SPI_CSR[4]) Delay Between Consecutive Transfers */ +#define SPI_CSR_DLYBCT(value) ((SPI_CSR_DLYBCT_Msk & ((value) << SPI_CSR_DLYBCT_Pos))) +/* -------- SPI_WPMR : (SPI Offset: 0xE4) Write Protection Control Register -------- */ +#define SPI_WPMR_SPIWPEN (0x1u << 0) /**< \brief (SPI_WPMR) SPI Write Protection Enable */ +#define SPI_WPMR_SPIWPKEY_Pos 8 +#define SPI_WPMR_SPIWPKEY_Msk (0xffffffu << SPI_WPMR_SPIWPKEY_Pos) /**< \brief (SPI_WPMR) SPI Write Protection Key Password */ +#define SPI_WPMR_SPIWPKEY(value) ((SPI_WPMR_SPIWPKEY_Msk & ((value) << SPI_WPMR_SPIWPKEY_Pos))) +/* -------- SPI_WPSR : (SPI Offset: 0xE8) Write Protection Status Register -------- */ +#define SPI_WPSR_SPIWPVS_Pos 0 +#define SPI_WPSR_SPIWPVS_Msk (0x7u << SPI_WPSR_SPIWPVS_Pos) /**< \brief (SPI_WPSR) SPI Write Protection Violation Status */ +#define SPI_WPSR_SPIWPVSRC_Pos 8 +#define SPI_WPSR_SPIWPVSRC_Msk (0xffu << SPI_WPSR_SPIWPVSRC_Pos) /**< \brief (SPI_WPSR) SPI Write Protection Violation Source */ +/* -------- SPI_RPR : (SPI Offset: 0x100) Receive Pointer Register -------- */ +#define SPI_RPR_RXPTR_Pos 0 +#define SPI_RPR_RXPTR_Msk (0xffffffffu << SPI_RPR_RXPTR_Pos) /**< \brief (SPI_RPR) Receive Pointer Register */ +#define SPI_RPR_RXPTR(value) ((SPI_RPR_RXPTR_Msk & ((value) << SPI_RPR_RXPTR_Pos))) +/* -------- SPI_RCR : (SPI Offset: 0x104) Receive Counter Register -------- */ +#define SPI_RCR_RXCTR_Pos 0 +#define SPI_RCR_RXCTR_Msk (0xffffu << SPI_RCR_RXCTR_Pos) /**< \brief (SPI_RCR) Receive Counter Register */ +#define SPI_RCR_RXCTR(value) ((SPI_RCR_RXCTR_Msk & ((value) << SPI_RCR_RXCTR_Pos))) +/* -------- SPI_TPR : (SPI Offset: 0x108) Transmit Pointer Register -------- */ +#define SPI_TPR_TXPTR_Pos 0 +#define SPI_TPR_TXPTR_Msk (0xffffffffu << SPI_TPR_TXPTR_Pos) /**< \brief (SPI_TPR) Transmit Counter Register */ +#define SPI_TPR_TXPTR(value) ((SPI_TPR_TXPTR_Msk & ((value) << SPI_TPR_TXPTR_Pos))) +/* -------- SPI_TCR : (SPI Offset: 0x10C) Transmit Counter Register -------- */ +#define SPI_TCR_TXCTR_Pos 0 +#define SPI_TCR_TXCTR_Msk (0xffffu << SPI_TCR_TXCTR_Pos) /**< \brief (SPI_TCR) Transmit Counter Register */ +#define SPI_TCR_TXCTR(value) ((SPI_TCR_TXCTR_Msk & ((value) << SPI_TCR_TXCTR_Pos))) +/* -------- SPI_RNPR : (SPI Offset: 0x110) Receive Next Pointer Register -------- */ +#define SPI_RNPR_RXNPTR_Pos 0 +#define SPI_RNPR_RXNPTR_Msk (0xffffffffu << SPI_RNPR_RXNPTR_Pos) /**< \brief (SPI_RNPR) Receive Next Pointer */ +#define SPI_RNPR_RXNPTR(value) ((SPI_RNPR_RXNPTR_Msk & ((value) << SPI_RNPR_RXNPTR_Pos))) +/* -------- SPI_RNCR : (SPI Offset: 0x114) Receive Next Counter Register -------- */ +#define SPI_RNCR_RXNCTR_Pos 0 +#define SPI_RNCR_RXNCTR_Msk (0xffffu << SPI_RNCR_RXNCTR_Pos) /**< \brief (SPI_RNCR) Receive Next Counter */ +#define SPI_RNCR_RXNCTR(value) ((SPI_RNCR_RXNCTR_Msk & ((value) << SPI_RNCR_RXNCTR_Pos))) +/* -------- SPI_TNPR : (SPI Offset: 0x118) Transmit Next Pointer Register -------- */ +#define SPI_TNPR_TXNPTR_Pos 0 +#define SPI_TNPR_TXNPTR_Msk (0xffffffffu << SPI_TNPR_TXNPTR_Pos) /**< \brief (SPI_TNPR) Transmit Next Pointer */ +#define SPI_TNPR_TXNPTR(value) ((SPI_TNPR_TXNPTR_Msk & ((value) << SPI_TNPR_TXNPTR_Pos))) +/* -------- SPI_TNCR : (SPI Offset: 0x11C) Transmit Next Counter Register -------- */ +#define SPI_TNCR_TXNCTR_Pos 0 +#define SPI_TNCR_TXNCTR_Msk (0xffffu << SPI_TNCR_TXNCTR_Pos) /**< \brief (SPI_TNCR) Transmit Counter Next */ +#define SPI_TNCR_TXNCTR(value) ((SPI_TNCR_TXNCTR_Msk & ((value) << SPI_TNCR_TXNCTR_Pos))) +/* -------- SPI_PTCR : (SPI Offset: 0x120) Transfer Control Register -------- */ +#define SPI_PTCR_RXTEN (0x1u << 0) /**< \brief (SPI_PTCR) Receiver Transfer Enable */ +#define SPI_PTCR_RXTDIS (0x1u << 1) /**< \brief (SPI_PTCR) Receiver Transfer Disable */ +#define SPI_PTCR_TXTEN (0x1u << 8) /**< \brief (SPI_PTCR) Transmitter Transfer Enable */ +#define SPI_PTCR_TXTDIS (0x1u << 9) /**< \brief (SPI_PTCR) Transmitter Transfer Disable */ +/* -------- SPI_PTSR : (SPI Offset: 0x124) Transfer Status Register -------- */ +#define SPI_PTSR_RXTEN (0x1u << 0) /**< \brief (SPI_PTSR) Receiver Transfer Enable */ +#define SPI_PTSR_TXTEN (0x1u << 8) /**< \brief (SPI_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3N_SPI_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_supc.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_supc.h new file mode 100644 index 000000000..f264c05fa --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_supc.h @@ -0,0 +1,297 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_SUPC_COMPONENT_ +#define _SAM3N_SUPC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Supply Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3N_SUPC Supply Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Supc hardware registers */ +typedef struct { + WoReg SUPC_CR; /**< \brief (Supc Offset: 0x00) Supply Controller Control Register */ + RwReg SUPC_SMMR; /**< \brief (Supc Offset: 0x04) Supply Controller Supply Monitor Mode Register */ + RwReg SUPC_MR; /**< \brief (Supc Offset: 0x08) Supply Controller Mode Register */ + RwReg SUPC_WUMR; /**< \brief (Supc Offset: 0x0C) Supply Controller Wake Up Mode Register */ + RwReg SUPC_WUIR; /**< \brief (Supc Offset: 0x10) Supply Controller Wake Up Inputs Register */ + RoReg SUPC_SR; /**< \brief (Supc Offset: 0x14) Supply Controller Status Register */ +} Supc; +#endif /* __ASSEMBLY__ */ +/* -------- SUPC_CR : (SUPC Offset: 0x00) Supply Controller Control Register -------- */ +#define SUPC_CR_VROFF (0x1u << 2) /**< \brief (SUPC_CR) Voltage Regulator Off */ +#define SUPC_CR_VROFF_NO_EFFECT (0x0u << 2) /**< \brief (SUPC_CR) no effect. */ +#define SUPC_CR_VROFF_STOP_VREG (0x1u << 2) /**< \brief (SUPC_CR) if KEY is correct, asserts vddcore_nreset and stops the voltage regulator. */ +#define SUPC_CR_XTALSEL (0x1u << 3) /**< \brief (SUPC_CR) Crystal Oscillator Select */ +#define SUPC_CR_XTALSEL_NO_EFFECT (0x0u << 3) /**< \brief (SUPC_CR) no effect. */ +#define SUPC_CR_XTALSEL_CRYSTAL_SEL (0x1u << 3) /**< \brief (SUPC_CR) if KEY is correct, switches the slow clock on the crystal oscillator output. */ +#define SUPC_CR_KEY_Pos 24 +#define SUPC_CR_KEY_Msk (0xffu << SUPC_CR_KEY_Pos) /**< \brief (SUPC_CR) Password */ +#define SUPC_CR_KEY(value) ((SUPC_CR_KEY_Msk & ((value) << SUPC_CR_KEY_Pos))) +/* -------- SUPC_SMMR : (SUPC Offset: 0x04) Supply Controller Supply Monitor Mode Register -------- */ +#define SUPC_SMMR_SMTH_Pos 0 +#define SUPC_SMMR_SMTH_Msk (0xfu << SUPC_SMMR_SMTH_Pos) /**< \brief (SUPC_SMMR) Supply Monitor Threshold */ +#define SUPC_SMMR_SMTH_1_9V (0x0u << 0) /**< \brief (SUPC_SMMR) 1.9 V */ +#define SUPC_SMMR_SMTH_2_0V (0x1u << 0) /**< \brief (SUPC_SMMR) 2.0 V */ +#define SUPC_SMMR_SMTH_2_1V (0x2u << 0) /**< \brief (SUPC_SMMR) 2.1 V */ +#define SUPC_SMMR_SMTH_2_2V (0x3u << 0) /**< \brief (SUPC_SMMR) 2.2 V */ +#define SUPC_SMMR_SMTH_2_3V (0x4u << 0) /**< \brief (SUPC_SMMR) 2.3 V */ +#define SUPC_SMMR_SMTH_2_4V (0x5u << 0) /**< \brief (SUPC_SMMR) 2.4 V */ +#define SUPC_SMMR_SMTH_2_5V (0x6u << 0) /**< \brief (SUPC_SMMR) 2.5 V */ +#define SUPC_SMMR_SMTH_2_6V (0x7u << 0) /**< \brief (SUPC_SMMR) 2.6 V */ +#define SUPC_SMMR_SMTH_2_7V (0x8u << 0) /**< \brief (SUPC_SMMR) 2.7 V */ +#define SUPC_SMMR_SMTH_2_8V (0x9u << 0) /**< \brief (SUPC_SMMR) 2.8 V */ +#define SUPC_SMMR_SMTH_2_9V (0xAu << 0) /**< \brief (SUPC_SMMR) 2.9 V */ +#define SUPC_SMMR_SMTH_3_0V (0xBu << 0) /**< \brief (SUPC_SMMR) 3.0 V */ +#define SUPC_SMMR_SMTH_3_1V (0xCu << 0) /**< \brief (SUPC_SMMR) 3.1 V */ +#define SUPC_SMMR_SMTH_3_2V (0xDu << 0) /**< \brief (SUPC_SMMR) 3.2 V */ +#define SUPC_SMMR_SMTH_3_3V (0xEu << 0) /**< \brief (SUPC_SMMR) 3.3 V */ +#define SUPC_SMMR_SMTH_3_4V (0xFu << 0) /**< \brief (SUPC_SMMR) 3.4 V */ +#define SUPC_SMMR_SMSMPL_Pos 8 +#define SUPC_SMMR_SMSMPL_Msk (0x7u << SUPC_SMMR_SMSMPL_Pos) /**< \brief (SUPC_SMMR) Supply Monitor Sampling Period */ +#define SUPC_SMMR_SMSMPL_SMD (0x0u << 8) /**< \brief (SUPC_SMMR) Supply Monitor disabled */ +#define SUPC_SMMR_SMSMPL_CSM (0x1u << 8) /**< \brief (SUPC_SMMR) Continuous Supply Monitor */ +#define SUPC_SMMR_SMSMPL_32SLCK (0x2u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 32 SLCK periods */ +#define SUPC_SMMR_SMSMPL_256SLCK (0x3u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 256 SLCK periods */ +#define SUPC_SMMR_SMSMPL_2048SLCK (0x4u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 2,048 SLCK periods */ +#define SUPC_SMMR_SMRSTEN (0x1u << 12) /**< \brief (SUPC_SMMR) Supply Monitor Reset Enable */ +#define SUPC_SMMR_SMRSTEN_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_SMMR) the core reset signal "vddcore_nreset" is not affected when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMRSTEN_ENABLE (0x1u << 12) /**< \brief (SUPC_SMMR) the core reset signal, vddcore_nreset is asserted when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMIEN (0x1u << 13) /**< \brief (SUPC_SMMR) Supply Monitor Interrupt Enable */ +#define SUPC_SMMR_SMIEN_NOT_ENABLE (0x0u << 13) /**< \brief (SUPC_SMMR) the SUPC interrupt signal is not affected when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMIEN_ENABLE (0x1u << 13) /**< \brief (SUPC_SMMR) the SUPC interrupt signal is asserted when a supply monitor detection occurs. */ +/* -------- SUPC_MR : (SUPC Offset: 0x08) Supply Controller Mode Register -------- */ +#define SUPC_MR_BODRSTEN (0x1u << 12) /**< \brief (SUPC_MR) Brownout Detector Reset Enable */ +#define SUPC_MR_BODRSTEN_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_MR) the core reset signal "vddcore_nreset" is not affected when a brownout detection occurs. */ +#define SUPC_MR_BODRSTEN_ENABLE (0x1u << 12) /**< \brief (SUPC_MR) the core reset signal, vddcore_nreset is asserted when a brownout detection occurs. */ +#define SUPC_MR_BODDIS (0x1u << 13) /**< \brief (SUPC_MR) Brownout Detector Disable */ +#define SUPC_MR_BODDIS_ENABLE (0x0u << 13) /**< \brief (SUPC_MR) the core brownout detector is enabled. */ +#define SUPC_MR_BODDIS_DISABLE (0x1u << 13) /**< \brief (SUPC_MR) the core brownout detector is disabled. */ +#define SUPC_MR_ONREG (0x1u << 14) /**< \brief (SUPC_MR) Voltage Regulator enable */ +#define SUPC_MR_ONREG_ONREG_UNUSED (0x0u << 14) /**< \brief (SUPC_MR) Voltage Regulator is not used */ +#define SUPC_MR_ONREG_ONREG_USED (0x1u << 14) /**< \brief (SUPC_MR) Voltage Regulator is used */ +#define SUPC_MR_OSCBYPASS (0x1u << 20) /**< \brief (SUPC_MR) Oscillator Bypass */ +#define SUPC_MR_OSCBYPASS_NO_EFFECT (0x0u << 20) /**< \brief (SUPC_MR) no effect. Clock selection depends on XTALSEL value. */ +#define SUPC_MR_OSCBYPASS_BYPASS (0x1u << 20) /**< \brief (SUPC_MR) the 32-KHz XTAL oscillator is selected and is put in bypass mode. */ +#define SUPC_MR_KEY_Pos 24 +#define SUPC_MR_KEY_Msk (0xffu << SUPC_MR_KEY_Pos) /**< \brief (SUPC_MR) Password Key */ +#define SUPC_MR_KEY(value) ((SUPC_MR_KEY_Msk & ((value) << SUPC_MR_KEY_Pos))) +/* -------- SUPC_WUMR : (SUPC Offset: 0x0C) Supply Controller Wake Up Mode Register -------- */ +#define SUPC_WUMR_SMEN (0x1u << 1) /**< \brief (SUPC_WUMR) Supply Monitor Wake Up Enable */ +#define SUPC_WUMR_SMEN_NOT_ENABLE (0x0u << 1) /**< \brief (SUPC_WUMR) the supply monitor detection has no wake up effect. */ +#define SUPC_WUMR_SMEN_ENABLE (0x1u << 1) /**< \brief (SUPC_WUMR) the supply monitor detection forces the wake up of the core power supply. */ +#define SUPC_WUMR_RTTEN (0x1u << 2) /**< \brief (SUPC_WUMR) Real Time Timer Wake Up Enable */ +#define SUPC_WUMR_RTTEN_NOT_ENABLE (0x0u << 2) /**< \brief (SUPC_WUMR) the RTT alarm signal has no wake up effect. */ +#define SUPC_WUMR_RTTEN_ENABLE (0x1u << 2) /**< \brief (SUPC_WUMR) the RTT alarm signal forces the wake up of the core power supply. */ +#define SUPC_WUMR_RTCEN (0x1u << 3) /**< \brief (SUPC_WUMR) Real Time Clock Wake Up Enable */ +#define SUPC_WUMR_RTCEN_NOT_ENABLE (0x0u << 3) /**< \brief (SUPC_WUMR) the RTC alarm signal has no wake up effect. */ +#define SUPC_WUMR_RTCEN_ENABLE (0x1u << 3) /**< \brief (SUPC_WUMR) the RTC alarm signal forces the wake up of the core power supply. */ +#define SUPC_WUMR_WKUPDBC_Pos 12 +#define SUPC_WUMR_WKUPDBC_Msk (0x7u << SUPC_WUMR_WKUPDBC_Pos) /**< \brief (SUPC_WUMR) Wake Up Inputs Debouncer Period */ +#define SUPC_WUMR_WKUPDBC_IMMEDIATE (0x0u << 12) /**< \brief (SUPC_WUMR) Immediate, no debouncing, detected active at least on one Slow Clock edge. */ +#define SUPC_WUMR_WKUPDBC_3_SCLK (0x1u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 3 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_32_SCLK (0x2u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 32 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_512_SCLK (0x3u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 512 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_4096_SCLK (0x4u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 4,096 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_32768_SCLK (0x5u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 32,768 SLCK periods */ +/* -------- SUPC_WUIR : (SUPC Offset: 0x10) Supply Controller Wake Up Inputs Register -------- */ +#define SUPC_WUIR_WKUPEN0 (0x1u << 0) /**< \brief (SUPC_WUIR) Wake Up Input Enable 0 */ +#define SUPC_WUIR_WKUPEN0_NOT_ENABLE (0x0u << 0) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN0_ENABLE (0x1u << 0) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN1 (0x1u << 1) /**< \brief (SUPC_WUIR) Wake Up Input Enable 1 */ +#define SUPC_WUIR_WKUPEN1_NOT_ENABLE (0x0u << 1) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN1_ENABLE (0x1u << 1) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN2 (0x1u << 2) /**< \brief (SUPC_WUIR) Wake Up Input Enable 2 */ +#define SUPC_WUIR_WKUPEN2_NOT_ENABLE (0x0u << 2) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN2_ENABLE (0x1u << 2) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN3 (0x1u << 3) /**< \brief (SUPC_WUIR) Wake Up Input Enable 3 */ +#define SUPC_WUIR_WKUPEN3_NOT_ENABLE (0x0u << 3) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN3_ENABLE (0x1u << 3) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN4 (0x1u << 4) /**< \brief (SUPC_WUIR) Wake Up Input Enable 4 */ +#define SUPC_WUIR_WKUPEN4_NOT_ENABLE (0x0u << 4) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN4_ENABLE (0x1u << 4) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN5 (0x1u << 5) /**< \brief (SUPC_WUIR) Wake Up Input Enable 5 */ +#define SUPC_WUIR_WKUPEN5_NOT_ENABLE (0x0u << 5) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN5_ENABLE (0x1u << 5) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN6 (0x1u << 6) /**< \brief (SUPC_WUIR) Wake Up Input Enable 6 */ +#define SUPC_WUIR_WKUPEN6_NOT_ENABLE (0x0u << 6) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN6_ENABLE (0x1u << 6) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN7 (0x1u << 7) /**< \brief (SUPC_WUIR) Wake Up Input Enable 7 */ +#define SUPC_WUIR_WKUPEN7_NOT_ENABLE (0x0u << 7) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN7_ENABLE (0x1u << 7) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN8 (0x1u << 8) /**< \brief (SUPC_WUIR) Wake Up Input Enable 8 */ +#define SUPC_WUIR_WKUPEN8_NOT_ENABLE (0x0u << 8) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN8_ENABLE (0x1u << 8) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN9 (0x1u << 9) /**< \brief (SUPC_WUIR) Wake Up Input Enable 9 */ +#define SUPC_WUIR_WKUPEN9_NOT_ENABLE (0x0u << 9) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN9_ENABLE (0x1u << 9) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN10 (0x1u << 10) /**< \brief (SUPC_WUIR) Wake Up Input Enable 10 */ +#define SUPC_WUIR_WKUPEN10_NOT_ENABLE (0x0u << 10) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN10_ENABLE (0x1u << 10) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN11 (0x1u << 11) /**< \brief (SUPC_WUIR) Wake Up Input Enable 11 */ +#define SUPC_WUIR_WKUPEN11_NOT_ENABLE (0x0u << 11) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN11_ENABLE (0x1u << 11) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN12 (0x1u << 12) /**< \brief (SUPC_WUIR) Wake Up Input Enable 12 */ +#define SUPC_WUIR_WKUPEN12_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN12_ENABLE (0x1u << 12) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN13 (0x1u << 13) /**< \brief (SUPC_WUIR) Wake Up Input Enable 13 */ +#define SUPC_WUIR_WKUPEN13_NOT_ENABLE (0x0u << 13) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN13_ENABLE (0x1u << 13) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN14 (0x1u << 14) /**< \brief (SUPC_WUIR) Wake Up Input Enable 14 */ +#define SUPC_WUIR_WKUPEN14_NOT_ENABLE (0x0u << 14) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN14_ENABLE (0x1u << 14) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN15 (0x1u << 15) /**< \brief (SUPC_WUIR) Wake Up Input Enable 15 */ +#define SUPC_WUIR_WKUPEN15_NOT_ENABLE (0x0u << 15) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN15_ENABLE (0x1u << 15) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT0 (0x1u << 16) /**< \brief (SUPC_WUIR) Wake Up Input Transition 0 */ +#define SUPC_WUIR_WKUPT0_HIGH_TO_LOW (0x0u << 16) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT0_LOW_TO_HIGH (0x1u << 16) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT1 (0x1u << 17) /**< \brief (SUPC_WUIR) Wake Up Input Transition 1 */ +#define SUPC_WUIR_WKUPT1_HIGH_TO_LOW (0x0u << 17) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT1_LOW_TO_HIGH (0x1u << 17) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT2 (0x1u << 18) /**< \brief (SUPC_WUIR) Wake Up Input Transition 2 */ +#define SUPC_WUIR_WKUPT2_HIGH_TO_LOW (0x0u << 18) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT2_LOW_TO_HIGH (0x1u << 18) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT3 (0x1u << 19) /**< \brief (SUPC_WUIR) Wake Up Input Transition 3 */ +#define SUPC_WUIR_WKUPT3_HIGH_TO_LOW (0x0u << 19) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT3_LOW_TO_HIGH (0x1u << 19) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT4 (0x1u << 20) /**< \brief (SUPC_WUIR) Wake Up Input Transition 4 */ +#define SUPC_WUIR_WKUPT4_HIGH_TO_LOW (0x0u << 20) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT4_LOW_TO_HIGH (0x1u << 20) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT5 (0x1u << 21) /**< \brief (SUPC_WUIR) Wake Up Input Transition 5 */ +#define SUPC_WUIR_WKUPT5_HIGH_TO_LOW (0x0u << 21) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT5_LOW_TO_HIGH (0x1u << 21) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT6 (0x1u << 22) /**< \brief (SUPC_WUIR) Wake Up Input Transition 6 */ +#define SUPC_WUIR_WKUPT6_HIGH_TO_LOW (0x0u << 22) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT6_LOW_TO_HIGH (0x1u << 22) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT7 (0x1u << 23) /**< \brief (SUPC_WUIR) Wake Up Input Transition 7 */ +#define SUPC_WUIR_WKUPT7_HIGH_TO_LOW (0x0u << 23) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT7_LOW_TO_HIGH (0x1u << 23) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT8 (0x1u << 24) /**< \brief (SUPC_WUIR) Wake Up Input Transition 8 */ +#define SUPC_WUIR_WKUPT8_HIGH_TO_LOW (0x0u << 24) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT8_LOW_TO_HIGH (0x1u << 24) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT9 (0x1u << 25) /**< \brief (SUPC_WUIR) Wake Up Input Transition 9 */ +#define SUPC_WUIR_WKUPT9_HIGH_TO_LOW (0x0u << 25) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT9_LOW_TO_HIGH (0x1u << 25) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT10 (0x1u << 26) /**< \brief (SUPC_WUIR) Wake Up Input Transition 10 */ +#define SUPC_WUIR_WKUPT10_HIGH_TO_LOW (0x0u << 26) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT10_LOW_TO_HIGH (0x1u << 26) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT11 (0x1u << 27) /**< \brief (SUPC_WUIR) Wake Up Input Transition 11 */ +#define SUPC_WUIR_WKUPT11_HIGH_TO_LOW (0x0u << 27) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT11_LOW_TO_HIGH (0x1u << 27) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT12 (0x1u << 28) /**< \brief (SUPC_WUIR) Wake Up Input Transition 12 */ +#define SUPC_WUIR_WKUPT12_HIGH_TO_LOW (0x0u << 28) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT12_LOW_TO_HIGH (0x1u << 28) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT13 (0x1u << 29) /**< \brief (SUPC_WUIR) Wake Up Input Transition 13 */ +#define SUPC_WUIR_WKUPT13_HIGH_TO_LOW (0x0u << 29) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT13_LOW_TO_HIGH (0x1u << 29) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT14 (0x1u << 30) /**< \brief (SUPC_WUIR) Wake Up Input Transition 14 */ +#define SUPC_WUIR_WKUPT14_HIGH_TO_LOW (0x0u << 30) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT14_LOW_TO_HIGH (0x1u << 30) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT15 (0x1u << 31) /**< \brief (SUPC_WUIR) Wake Up Input Transition 15 */ +#define SUPC_WUIR_WKUPT15_HIGH_TO_LOW (0x0u << 31) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT15_LOW_TO_HIGH (0x1u << 31) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +/* -------- SUPC_SR : (SUPC Offset: 0x14) Supply Controller Status Register -------- */ +#define SUPC_SR_WKUPS (0x1u << 1) /**< \brief (SUPC_SR) WKUP Wake Up Status */ +#define SUPC_SR_WKUPS_NO (0x0u << 1) /**< \brief (SUPC_SR) no wake up due to the assertion of the WKUP pins has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPS_PRESENT (0x1u << 1) /**< \brief (SUPC_SR) at least one wake up due to the assertion of the WKUP pins has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_SMWS (0x1u << 2) /**< \brief (SUPC_SR) Supply Monitor Detection Wake Up Status */ +#define SUPC_SR_SMWS_NO (0x0u << 2) /**< \brief (SUPC_SR) no wake up due to a supply monitor detection has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_SMWS_PRESENT (0x1u << 2) /**< \brief (SUPC_SR) at least one wake up due to a supply monitor detection has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_BODRSTS (0x1u << 3) /**< \brief (SUPC_SR) Brownout Detector Reset Status */ +#define SUPC_SR_BODRSTS_NO (0x0u << 3) /**< \brief (SUPC_SR) no core brownout rising edge event has been detected since the last read of the SUPC_SR. */ +#define SUPC_SR_BODRSTS_PRESENT (0x1u << 3) /**< \brief (SUPC_SR) at least one brownout output rising edge event has been detected since the last read of the SUPC_SR. */ +#define SUPC_SR_SMRSTS (0x1u << 4) /**< \brief (SUPC_SR) Supply Monitor Reset Status */ +#define SUPC_SR_SMRSTS_NO (0x0u << 4) /**< \brief (SUPC_SR) no supply monitor detection has generated a core reset since the last read of the SUPC_SR. */ +#define SUPC_SR_SMRSTS_PRESENT (0x1u << 4) /**< \brief (SUPC_SR) at least one supply monitor detection has generated a core reset since the last read of the SUPC_SR. */ +#define SUPC_SR_SMS (0x1u << 5) /**< \brief (SUPC_SR) Supply Monitor Status */ +#define SUPC_SR_SMS_NO (0x0u << 5) /**< \brief (SUPC_SR) no supply monitor detection since the last read of SUPC_SR. */ +#define SUPC_SR_SMS_PRESENT (0x1u << 5) /**< \brief (SUPC_SR) at least one supply monitor detection since the last read of SUPC_SR. */ +#define SUPC_SR_SMOS (0x1u << 6) /**< \brief (SUPC_SR) Supply Monitor Output Status */ +#define SUPC_SR_SMOS_HIGH (0x0u << 6) /**< \brief (SUPC_SR) the supply monitor detected VDDIO higher than its threshold at its last measurement. */ +#define SUPC_SR_SMOS_LOW (0x1u << 6) /**< \brief (SUPC_SR) the supply monitor detected VDDIO lower than its threshold at its last measurement. */ +#define SUPC_SR_OSCSEL (0x1u << 7) /**< \brief (SUPC_SR) 32-kHz Oscillator Selection Status */ +#define SUPC_SR_OSCSEL_RC (0x0u << 7) /**< \brief (SUPC_SR) the slow clock, SLCK is generated by the embedded 32-kHz RC oscillator. */ +#define SUPC_SR_OSCSEL_CRYST (0x1u << 7) /**< \brief (SUPC_SR) the slow clock, SLCK is generated by the 32-kHz crystal oscillator. */ +#define SUPC_SR_WKUPIS0 (0x1u << 16) /**< \brief (SUPC_SR) WKUP Input Status 0 */ +#define SUPC_SR_WKUPIS0_DIS (0x0u << 16) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS0_EN (0x1u << 16) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS1 (0x1u << 17) /**< \brief (SUPC_SR) WKUP Input Status 1 */ +#define SUPC_SR_WKUPIS1_DIS (0x0u << 17) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS1_EN (0x1u << 17) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS2 (0x1u << 18) /**< \brief (SUPC_SR) WKUP Input Status 2 */ +#define SUPC_SR_WKUPIS2_DIS (0x0u << 18) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS2_EN (0x1u << 18) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS3 (0x1u << 19) /**< \brief (SUPC_SR) WKUP Input Status 3 */ +#define SUPC_SR_WKUPIS3_DIS (0x0u << 19) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS3_EN (0x1u << 19) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS4 (0x1u << 20) /**< \brief (SUPC_SR) WKUP Input Status 4 */ +#define SUPC_SR_WKUPIS4_DIS (0x0u << 20) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS4_EN (0x1u << 20) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS5 (0x1u << 21) /**< \brief (SUPC_SR) WKUP Input Status 5 */ +#define SUPC_SR_WKUPIS5_DIS (0x0u << 21) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS5_EN (0x1u << 21) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS6 (0x1u << 22) /**< \brief (SUPC_SR) WKUP Input Status 6 */ +#define SUPC_SR_WKUPIS6_DIS (0x0u << 22) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS6_EN (0x1u << 22) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS7 (0x1u << 23) /**< \brief (SUPC_SR) WKUP Input Status 7 */ +#define SUPC_SR_WKUPIS7_DIS (0x0u << 23) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS7_EN (0x1u << 23) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS8 (0x1u << 24) /**< \brief (SUPC_SR) WKUP Input Status 8 */ +#define SUPC_SR_WKUPIS8_DIS (0x0u << 24) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS8_EN (0x1u << 24) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS9 (0x1u << 25) /**< \brief (SUPC_SR) WKUP Input Status 9 */ +#define SUPC_SR_WKUPIS9_DIS (0x0u << 25) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS9_EN (0x1u << 25) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS10 (0x1u << 26) /**< \brief (SUPC_SR) WKUP Input Status 10 */ +#define SUPC_SR_WKUPIS10_DIS (0x0u << 26) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS10_EN (0x1u << 26) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS11 (0x1u << 27) /**< \brief (SUPC_SR) WKUP Input Status 11 */ +#define SUPC_SR_WKUPIS11_DIS (0x0u << 27) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS11_EN (0x1u << 27) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS12 (0x1u << 28) /**< \brief (SUPC_SR) WKUP Input Status 12 */ +#define SUPC_SR_WKUPIS12_DIS (0x0u << 28) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS12_EN (0x1u << 28) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS13 (0x1u << 29) /**< \brief (SUPC_SR) WKUP Input Status 13 */ +#define SUPC_SR_WKUPIS13_DIS (0x0u << 29) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS13_EN (0x1u << 29) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS14 (0x1u << 30) /**< \brief (SUPC_SR) WKUP Input Status 14 */ +#define SUPC_SR_WKUPIS14_DIS (0x0u << 30) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS14_EN (0x1u << 30) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS15 (0x1u << 31) /**< \brief (SUPC_SR) WKUP Input Status 15 */ +#define SUPC_SR_WKUPIS15_DIS (0x0u << 31) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS15_EN (0x1u << 31) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ + +/*@}*/ + + +#endif /* _SAM3N_SUPC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_tc.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_tc.h new file mode 100644 index 000000000..7dbeba940 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_tc.h @@ -0,0 +1,299 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_TC_COMPONENT_ +#define _SAM3N_TC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Timer Counter */ +/* ============================================================================= */ +/** \addtogroup SAM3N_TC Timer Counter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief TcChannel hardware registers */ +typedef struct { + RwReg TC_CCR; /**< \brief (TcChannel Offset: 0x0) Channel Control Register */ + RwReg TC_CMR; /**< \brief (TcChannel Offset: 0x4) Channel Mode Register */ + RwReg TC_SMMR; /**< \brief (TcChannel Offset: 0x8) Stepper Motor Mode Register */ + RoReg Reserved1[1]; + RwReg TC_CV; /**< \brief (TcChannel Offset: 0x10) Counter Value */ + RwReg TC_RA; /**< \brief (TcChannel Offset: 0x14) Register A */ + RwReg TC_RB; /**< \brief (TcChannel Offset: 0x18) Register B */ + RwReg TC_RC; /**< \brief (TcChannel Offset: 0x1C) Register C */ + RwReg TC_SR; /**< \brief (TcChannel Offset: 0x20) Status Register */ + RwReg TC_IER; /**< \brief (TcChannel Offset: 0x24) Interrupt Enable Register */ + RwReg TC_IDR; /**< \brief (TcChannel Offset: 0x28) Interrupt Disable Register */ + RwReg TC_IMR; /**< \brief (TcChannel Offset: 0x2C) Interrupt Mask Register */ + RoReg Reserved2[4]; +} TcChannel; +/** \brief Tc hardware registers */ +#define TCCHANNEL_NUMBER 3 +typedef struct { + TcChannel TC_CHANNEL[TCCHANNEL_NUMBER]; /**< \brief (Tc Offset: 0x0) channel = 0 .. 2 */ + WoReg TC_BCR; /**< \brief (Tc Offset: 0xC0) Block Control Register */ + RwReg TC_BMR; /**< \brief (Tc Offset: 0xC4) Block Mode Register */ + WoReg TC_QIER; /**< \brief (Tc Offset: 0xC8) QDEC Interrupt Enable Register */ + WoReg TC_QIDR; /**< \brief (Tc Offset: 0xCC) QDEC Interrupt Disable Register */ + RoReg TC_QIMR; /**< \brief (Tc Offset: 0xD0) QDEC Interrupt Mask Register */ + RoReg TC_QISR; /**< \brief (Tc Offset: 0xD4) QDEC Interrupt Status Register */ + RoReg Reserved1[3]; + RwReg TC_WPMR; /**< \brief (Tc Offset: 0xE4) Write Protect Mode Register */ +} Tc; +#endif /* __ASSEMBLY__ */ +/* -------- TC_CCR : (TC Offset: N/A) Channel Control Register -------- */ +#define TC_CCR_CLKEN (0x1u << 0) /**< \brief (TC_CCR) Counter Clock Enable Command */ +#define TC_CCR_CLKDIS (0x1u << 1) /**< \brief (TC_CCR) Counter Clock Disable Command */ +#define TC_CCR_SWTRG (0x1u << 2) /**< \brief (TC_CCR) Software Trigger Command */ +/* -------- TC_CMR : (TC Offset: N/A) Channel Mode Register -------- */ +#define TC_CMR_TCCLKS_Pos 0 +#define TC_CMR_TCCLKS_Msk (0x7u << TC_CMR_TCCLKS_Pos) /**< \brief (TC_CMR) Clock Selection */ +#define TC_CMR_TCCLKS_TIMER_CLOCK1 (0x0u << 0) /**< \brief (TC_CMR) Clock selected: TCLK1 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK2 (0x1u << 0) /**< \brief (TC_CMR) Clock selected: TCLK2 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK3 (0x2u << 0) /**< \brief (TC_CMR) Clock selected: TCLK3 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK4 (0x3u << 0) /**< \brief (TC_CMR) Clock selected: TCLK4 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK5 (0x4u << 0) /**< \brief (TC_CMR) Clock selected: TCLK5 */ +#define TC_CMR_TCCLKS_XC0 (0x5u << 0) /**< \brief (TC_CMR) Clock selected: XC0 */ +#define TC_CMR_TCCLKS_XC1 (0x6u << 0) /**< \brief (TC_CMR) Clock selected: XC1 */ +#define TC_CMR_TCCLKS_XC2 (0x7u << 0) /**< \brief (TC_CMR) Clock selected: XC2 */ +#define TC_CMR_CLKI (0x1u << 3) /**< \brief (TC_CMR) Clock Invert */ +#define TC_CMR_BURST_Pos 4 +#define TC_CMR_BURST_Msk (0x3u << TC_CMR_BURST_Pos) /**< \brief (TC_CMR) Burst Signal Selection */ +#define TC_CMR_BURST_NONE (0x0u << 4) /**< \brief (TC_CMR) The clock is not gated by an external signal. */ +#define TC_CMR_BURST_XC0 (0x1u << 4) /**< \brief (TC_CMR) XC0 is ANDed with the selected clock. */ +#define TC_CMR_BURST_XC1 (0x2u << 4) /**< \brief (TC_CMR) XC1 is ANDed with the selected clock. */ +#define TC_CMR_BURST_XC2 (0x3u << 4) /**< \brief (TC_CMR) XC2 is ANDed with the selected clock. */ +#define TC_CMR_LDBSTOP (0x1u << 6) /**< \brief (TC_CMR) Counter Clock Stopped with RB Loading */ +#define TC_CMR_LDBDIS (0x1u << 7) /**< \brief (TC_CMR) Counter Clock Disable with RB Loading */ +#define TC_CMR_ETRGEDG_Pos 8 +#define TC_CMR_ETRGEDG_Msk (0x3u << TC_CMR_ETRGEDG_Pos) /**< \brief (TC_CMR) External Trigger Edge Selection */ +#define TC_CMR_ETRGEDG_NONE (0x0u << 8) /**< \brief (TC_CMR) The clock is not gated by an external signal. */ +#define TC_CMR_ETRGEDG_RISING (0x1u << 8) /**< \brief (TC_CMR) Rising edge */ +#define TC_CMR_ETRGEDG_FALLING (0x2u << 8) /**< \brief (TC_CMR) Falling edge */ +#define TC_CMR_ETRGEDG_EDGE (0x3u << 8) /**< \brief (TC_CMR) Each edge */ +#define TC_CMR_ABETRG (0x1u << 10) /**< \brief (TC_CMR) TIOA or TIOB External Trigger Selection */ +#define TC_CMR_CPCTRG (0x1u << 14) /**< \brief (TC_CMR) RC Compare Trigger Enable */ +#define TC_CMR_WAVE (0x1u << 15) /**< \brief (TC_CMR) Waveform Mode */ +#define TC_CMR_LDRA_Pos 16 +#define TC_CMR_LDRA_Msk (0x3u << TC_CMR_LDRA_Pos) /**< \brief (TC_CMR) RA Loading Edge Selection */ +#define TC_CMR_LDRA_NONE (0x0u << 16) /**< \brief (TC_CMR) None */ +#define TC_CMR_LDRA_RISING (0x1u << 16) /**< \brief (TC_CMR) Rising edge of TIOA */ +#define TC_CMR_LDRA_FALLING (0x2u << 16) /**< \brief (TC_CMR) Falling edge of TIOA */ +#define TC_CMR_LDRA_EDGE (0x3u << 16) /**< \brief (TC_CMR) Each edge of TIOA */ +#define TC_CMR_LDRB_Pos 18 +#define TC_CMR_LDRB_Msk (0x3u << TC_CMR_LDRB_Pos) /**< \brief (TC_CMR) RB Loading Edge Selection */ +#define TC_CMR_LDRB_NONE (0x0u << 18) /**< \brief (TC_CMR) None */ +#define TC_CMR_LDRB_RISING (0x1u << 18) /**< \brief (TC_CMR) Rising edge of TIOA */ +#define TC_CMR_LDRB_FALLING (0x2u << 18) /**< \brief (TC_CMR) Falling edge of TIOA */ +#define TC_CMR_LDRB_EDGE (0x3u << 18) /**< \brief (TC_CMR) Each edge of TIOA */ +#define TC_CMR_CPCSTOP (0x1u << 6) /**< \brief (TC_CMR) Counter Clock Stopped with RC Compare */ +#define TC_CMR_CPCDIS (0x1u << 7) /**< \brief (TC_CMR) Counter Clock Disable with RC Compare */ +#define TC_CMR_EEVTEDG_Pos 8 +#define TC_CMR_EEVTEDG_Msk (0x3u << TC_CMR_EEVTEDG_Pos) /**< \brief (TC_CMR) External Event Edge Selection */ +#define TC_CMR_EEVTEDG_NONE (0x0u << 8) /**< \brief (TC_CMR) None */ +#define TC_CMR_EEVTEDG_RISING (0x1u << 8) /**< \brief (TC_CMR) Rising edge */ +#define TC_CMR_EEVTEDG_FALLING (0x2u << 8) /**< \brief (TC_CMR) Falling edge */ +#define TC_CMR_EEVTEDG_EDGE (0x3u << 8) /**< \brief (TC_CMR) Each edge */ +#define TC_CMR_EEVT_Pos 10 +#define TC_CMR_EEVT_Msk (0x3u << TC_CMR_EEVT_Pos) /**< \brief (TC_CMR) External Event Selection */ +#define TC_CMR_EEVT_TIOB (0x0u << 10) /**< \brief (TC_CMR) TIOB */ +#define TC_CMR_EEVT_XC0 (0x1u << 10) /**< \brief (TC_CMR) XC0 */ +#define TC_CMR_EEVT_XC1 (0x2u << 10) /**< \brief (TC_CMR) XC1 */ +#define TC_CMR_EEVT_XC2 (0x3u << 10) /**< \brief (TC_CMR) XC2 */ +#define TC_CMR_ENETRG (0x1u << 12) /**< \brief (TC_CMR) External Event Trigger Enable */ +#define TC_CMR_WAVSEL_Pos 13 +#define TC_CMR_WAVSEL_Msk (0x3u << TC_CMR_WAVSEL_Pos) /**< \brief (TC_CMR) Waveform Selection */ +#define TC_CMR_WAVSEL_UP (0x0u << 13) /**< \brief (TC_CMR) UP mode without automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UPDOWN (0x1u << 13) /**< \brief (TC_CMR) UPDOWN mode without automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UP_RC (0x2u << 13) /**< \brief (TC_CMR) UP mode with automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UPDOWN_RC (0x3u << 13) /**< \brief (TC_CMR) UPDOWN mode with automatic trigger on RC Compare */ +#define TC_CMR_ACPA_Pos 16 +#define TC_CMR_ACPA_Msk (0x3u << TC_CMR_ACPA_Pos) /**< \brief (TC_CMR) RA Compare Effect on TIOA */ +#define TC_CMR_ACPA_NONE (0x0u << 16) /**< \brief (TC_CMR) None */ +#define TC_CMR_ACPA_SET (0x1u << 16) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ACPA_CLEAR (0x2u << 16) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ACPA_TOGGLE (0x3u << 16) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_ACPC_Pos 18 +#define TC_CMR_ACPC_Msk (0x3u << TC_CMR_ACPC_Pos) /**< \brief (TC_CMR) RC Compare Effect on TIOA */ +#define TC_CMR_ACPC_NONE (0x0u << 18) /**< \brief (TC_CMR) None */ +#define TC_CMR_ACPC_SET (0x1u << 18) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ACPC_CLEAR (0x2u << 18) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ACPC_TOGGLE (0x3u << 18) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_AEEVT_Pos 20 +#define TC_CMR_AEEVT_Msk (0x3u << TC_CMR_AEEVT_Pos) /**< \brief (TC_CMR) External Event Effect on TIOA */ +#define TC_CMR_AEEVT_NONE (0x0u << 20) /**< \brief (TC_CMR) None */ +#define TC_CMR_AEEVT_SET (0x1u << 20) /**< \brief (TC_CMR) Set */ +#define TC_CMR_AEEVT_CLEAR (0x2u << 20) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_AEEVT_TOGGLE (0x3u << 20) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_ASWTRG_Pos 22 +#define TC_CMR_ASWTRG_Msk (0x3u << TC_CMR_ASWTRG_Pos) /**< \brief (TC_CMR) Software Trigger Effect on TIOA */ +#define TC_CMR_ASWTRG_NONE (0x0u << 22) /**< \brief (TC_CMR) None */ +#define TC_CMR_ASWTRG_SET (0x1u << 22) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ASWTRG_CLEAR (0x2u << 22) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ASWTRG_TOGGLE (0x3u << 22) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BCPB_Pos 24 +#define TC_CMR_BCPB_Msk (0x3u << TC_CMR_BCPB_Pos) /**< \brief (TC_CMR) RB Compare Effect on TIOB */ +#define TC_CMR_BCPB_NONE (0x0u << 24) /**< \brief (TC_CMR) None */ +#define TC_CMR_BCPB_SET (0x1u << 24) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BCPB_CLEAR (0x2u << 24) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BCPB_TOGGLE (0x3u << 24) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BCPC_Pos 26 +#define TC_CMR_BCPC_Msk (0x3u << TC_CMR_BCPC_Pos) /**< \brief (TC_CMR) RC Compare Effect on TIOB */ +#define TC_CMR_BCPC_NONE (0x0u << 26) /**< \brief (TC_CMR) None */ +#define TC_CMR_BCPC_SET (0x1u << 26) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BCPC_CLEAR (0x2u << 26) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BCPC_TOGGLE (0x3u << 26) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BEEVT_Pos 28 +#define TC_CMR_BEEVT_Msk (0x3u << TC_CMR_BEEVT_Pos) /**< \brief (TC_CMR) External Event Effect on TIOB */ +#define TC_CMR_BEEVT_NONE (0x0u << 28) /**< \brief (TC_CMR) None */ +#define TC_CMR_BEEVT_SET (0x1u << 28) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BEEVT_CLEAR (0x2u << 28) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BEEVT_TOGGLE (0x3u << 28) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BSWTRG_Pos 30 +#define TC_CMR_BSWTRG_Msk (0x3u << TC_CMR_BSWTRG_Pos) /**< \brief (TC_CMR) Software Trigger Effect on TIOB */ +#define TC_CMR_BSWTRG_NONE (0x0u << 30) /**< \brief (TC_CMR) None */ +#define TC_CMR_BSWTRG_SET (0x1u << 30) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BSWTRG_CLEAR (0x2u << 30) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BSWTRG_TOGGLE (0x3u << 30) /**< \brief (TC_CMR) Toggle */ +/* -------- TC_SMMR : (TC Offset: N/A) Stepper Motor Mode Register -------- */ +#define TC_SMMR_GCEN (0x1u << 0) /**< \brief (TC_SMMR) Gray Count Enable */ +#define TC_SMMR_DOWN (0x1u << 1) /**< \brief (TC_SMMR) DOWN Count */ +/* -------- TC_CV : (TC Offset: N/A) Counter Value -------- */ +#define TC_CV_CV_Pos 0 +#define TC_CV_CV_Msk (0xffffffffu << TC_CV_CV_Pos) /**< \brief (TC_CV) Counter Value */ +/* -------- TC_RA : (TC Offset: N/A) Register A -------- */ +#define TC_RA_RA_Pos 0 +#define TC_RA_RA_Msk (0xffffffffu << TC_RA_RA_Pos) /**< \brief (TC_RA) Register A */ +#define TC_RA_RA(value) ((TC_RA_RA_Msk & ((value) << TC_RA_RA_Pos))) +/* -------- TC_RB : (TC Offset: N/A) Register B -------- */ +#define TC_RB_RB_Pos 0 +#define TC_RB_RB_Msk (0xffffffffu << TC_RB_RB_Pos) /**< \brief (TC_RB) Register B */ +#define TC_RB_RB(value) ((TC_RB_RB_Msk & ((value) << TC_RB_RB_Pos))) +/* -------- TC_RC : (TC Offset: N/A) Register C -------- */ +#define TC_RC_RC_Pos 0 +#define TC_RC_RC_Msk (0xffffffffu << TC_RC_RC_Pos) /**< \brief (TC_RC) Register C */ +#define TC_RC_RC(value) ((TC_RC_RC_Msk & ((value) << TC_RC_RC_Pos))) +/* -------- TC_SR : (TC Offset: N/A) Status Register -------- */ +#define TC_SR_COVFS (0x1u << 0) /**< \brief (TC_SR) Counter Overflow Status */ +#define TC_SR_LOVRS (0x1u << 1) /**< \brief (TC_SR) Load Overrun Status */ +#define TC_SR_CPAS (0x1u << 2) /**< \brief (TC_SR) RA Compare Status */ +#define TC_SR_CPBS (0x1u << 3) /**< \brief (TC_SR) RB Compare Status */ +#define TC_SR_CPCS (0x1u << 4) /**< \brief (TC_SR) RC Compare Status */ +#define TC_SR_LDRAS (0x1u << 5) /**< \brief (TC_SR) RA Loading Status */ +#define TC_SR_LDRBS (0x1u << 6) /**< \brief (TC_SR) RB Loading Status */ +#define TC_SR_ETRGS (0x1u << 7) /**< \brief (TC_SR) External Trigger Status */ +#define TC_SR_CLKSTA (0x1u << 16) /**< \brief (TC_SR) Clock Enabling Status */ +#define TC_SR_MTIOA (0x1u << 17) /**< \brief (TC_SR) TIOA Mirror */ +#define TC_SR_MTIOB (0x1u << 18) /**< \brief (TC_SR) TIOB Mirror */ +/* -------- TC_IER : (TC Offset: N/A) Interrupt Enable Register -------- */ +#define TC_IER_COVFS (0x1u << 0) /**< \brief (TC_IER) Counter Overflow */ +#define TC_IER_LOVRS (0x1u << 1) /**< \brief (TC_IER) Load Overrun */ +#define TC_IER_CPAS (0x1u << 2) /**< \brief (TC_IER) RA Compare */ +#define TC_IER_CPBS (0x1u << 3) /**< \brief (TC_IER) RB Compare */ +#define TC_IER_CPCS (0x1u << 4) /**< \brief (TC_IER) RC Compare */ +#define TC_IER_LDRAS (0x1u << 5) /**< \brief (TC_IER) RA Loading */ +#define TC_IER_LDRBS (0x1u << 6) /**< \brief (TC_IER) RB Loading */ +#define TC_IER_ETRGS (0x1u << 7) /**< \brief (TC_IER) External Trigger */ +/* -------- TC_IDR : (TC Offset: N/A) Interrupt Disable Register -------- */ +#define TC_IDR_COVFS (0x1u << 0) /**< \brief (TC_IDR) Counter Overflow */ +#define TC_IDR_LOVRS (0x1u << 1) /**< \brief (TC_IDR) Load Overrun */ +#define TC_IDR_CPAS (0x1u << 2) /**< \brief (TC_IDR) RA Compare */ +#define TC_IDR_CPBS (0x1u << 3) /**< \brief (TC_IDR) RB Compare */ +#define TC_IDR_CPCS (0x1u << 4) /**< \brief (TC_IDR) RC Compare */ +#define TC_IDR_LDRAS (0x1u << 5) /**< \brief (TC_IDR) RA Loading */ +#define TC_IDR_LDRBS (0x1u << 6) /**< \brief (TC_IDR) RB Loading */ +#define TC_IDR_ETRGS (0x1u << 7) /**< \brief (TC_IDR) External Trigger */ +/* -------- TC_IMR : (TC Offset: N/A) Interrupt Mask Register -------- */ +#define TC_IMR_COVFS (0x1u << 0) /**< \brief (TC_IMR) Counter Overflow */ +#define TC_IMR_LOVRS (0x1u << 1) /**< \brief (TC_IMR) Load Overrun */ +#define TC_IMR_CPAS (0x1u << 2) /**< \brief (TC_IMR) RA Compare */ +#define TC_IMR_CPBS (0x1u << 3) /**< \brief (TC_IMR) RB Compare */ +#define TC_IMR_CPCS (0x1u << 4) /**< \brief (TC_IMR) RC Compare */ +#define TC_IMR_LDRAS (0x1u << 5) /**< \brief (TC_IMR) RA Loading */ +#define TC_IMR_LDRBS (0x1u << 6) /**< \brief (TC_IMR) RB Loading */ +#define TC_IMR_ETRGS (0x1u << 7) /**< \brief (TC_IMR) External Trigger */ +/* -------- TC_BCR : (TC Offset: 0xC0) Block Control Register -------- */ +#define TC_BCR_SYNC (0x1u << 0) /**< \brief (TC_BCR) Synchro Command */ +/* -------- TC_BMR : (TC Offset: 0xC4) Block Mode Register -------- */ +#define TC_BMR_TC0XC0S_Pos 0 +#define TC_BMR_TC0XC0S_Msk (0x3u << TC_BMR_TC0XC0S_Pos) /**< \brief (TC_BMR) External Clock Signal 0 Selection */ +#define TC_BMR_TC0XC0S_TCLK0 (0x0u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TCLK0 */ +#define TC_BMR_TC0XC0S_TIOA1 (0x2u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TIOA1 */ +#define TC_BMR_TC0XC0S_TIOA2 (0x3u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TIOA2 */ +#define TC_BMR_TC1XC1S_Pos 2 +#define TC_BMR_TC1XC1S_Msk (0x3u << TC_BMR_TC1XC1S_Pos) /**< \brief (TC_BMR) External Clock Signal 1 Selection */ +#define TC_BMR_TC1XC1S_TCLK1 (0x0u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TCLK1 */ +#define TC_BMR_TC1XC1S_TIOA0 (0x2u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TIOA0 */ +#define TC_BMR_TC1XC1S_TIOA2 (0x3u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TIOA2 */ +#define TC_BMR_TC2XC2S_Pos 4 +#define TC_BMR_TC2XC2S_Msk (0x3u << TC_BMR_TC2XC2S_Pos) /**< \brief (TC_BMR) External Clock Signal 2 Selection */ +#define TC_BMR_TC2XC2S_TCLK2 (0x0u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TCLK2 */ +#define TC_BMR_TC2XC2S_TIOA1 (0x2u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TIOA1 */ +#define TC_BMR_TC2XC2S_TIOA2 (0x3u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TIOA2 */ +#define TC_BMR_QDEN (0x1u << 8) /**< \brief (TC_BMR) Quadrature Decoder ENabled */ +#define TC_BMR_POSEN (0x1u << 9) /**< \brief (TC_BMR) POSition ENabled */ +#define TC_BMR_SPEEDEN (0x1u << 10) /**< \brief (TC_BMR) SPEED ENabled */ +#define TC_BMR_QDTRANS (0x1u << 11) /**< \brief (TC_BMR) Quadrature Decoding TRANSparent */ +#define TC_BMR_EDGPHA (0x1u << 12) /**< \brief (TC_BMR) EDGe on PHA count mode */ +#define TC_BMR_INVA (0x1u << 13) /**< \brief (TC_BMR) INVerted phA */ +#define TC_BMR_INVB (0x1u << 14) /**< \brief (TC_BMR) INVerted phB */ +#define TC_BMR_INVIDX (0x1u << 15) /**< \brief (TC_BMR) INVerted InDeX */ +#define TC_BMR_SWAP (0x1u << 16) /**< \brief (TC_BMR) SWAP PHA and PHB */ +#define TC_BMR_IDXPHB (0x1u << 17) /**< \brief (TC_BMR) InDeX pin is PHB pin */ +#define TC_BMR_FILTER (0x1u << 19) /**< \brief (TC_BMR) */ +#define TC_BMR_MAXFILT_Pos 20 +#define TC_BMR_MAXFILT_Msk (0x3fu << TC_BMR_MAXFILT_Pos) /**< \brief (TC_BMR) MAXimum FILTer */ +#define TC_BMR_MAXFILT(value) ((TC_BMR_MAXFILT_Msk & ((value) << TC_BMR_MAXFILT_Pos))) +/* -------- TC_QIER : (TC Offset: 0xC8) QDEC Interrupt Enable Register -------- */ +#define TC_QIER_IDX (0x1u << 0) /**< \brief (TC_QIER) InDeX */ +#define TC_QIER_DIRCHG (0x1u << 1) /**< \brief (TC_QIER) DIRection CHanGe */ +#define TC_QIER_QERR (0x1u << 2) /**< \brief (TC_QIER) Quadrature ERRor */ +/* -------- TC_QIDR : (TC Offset: 0xCC) QDEC Interrupt Disable Register -------- */ +#define TC_QIDR_IDX (0x1u << 0) /**< \brief (TC_QIDR) InDeX */ +#define TC_QIDR_DIRCHG (0x1u << 1) /**< \brief (TC_QIDR) DIRection CHanGe */ +#define TC_QIDR_QERR (0x1u << 2) /**< \brief (TC_QIDR) Quadrature ERRor */ +/* -------- TC_QIMR : (TC Offset: 0xD0) QDEC Interrupt Mask Register -------- */ +#define TC_QIMR_IDX (0x1u << 0) /**< \brief (TC_QIMR) InDeX */ +#define TC_QIMR_DIRCHG (0x1u << 1) /**< \brief (TC_QIMR) DIRection CHanGe */ +#define TC_QIMR_QERR (0x1u << 2) /**< \brief (TC_QIMR) Quadrature ERRor */ +/* -------- TC_QISR : (TC Offset: 0xD4) QDEC Interrupt Status Register -------- */ +#define TC_QISR_IDX (0x1u << 0) /**< \brief (TC_QISR) InDeX */ +#define TC_QISR_DIRCHG (0x1u << 1) /**< \brief (TC_QISR) DIRection CHanGe */ +#define TC_QISR_QERR (0x1u << 2) /**< \brief (TC_QISR) Quadrature ERRor */ +#define TC_QISR_DIR (0x1u << 8) /**< \brief (TC_QISR) Direction */ +/* -------- TC_WPMR : (TC Offset: 0xE4) Write Protect Mode Register -------- */ +#define TC_WPMR_WPEN (0x1u << 0) /**< \brief (TC_WPMR) Write Protect Enable */ +#define TC_WPMR_WPKEY_Pos 8 +#define TC_WPMR_WPKEY_Msk (0xffffffu << TC_WPMR_WPKEY_Pos) /**< \brief (TC_WPMR) Write Protect KEY */ +#define TC_WPMR_WPKEY(value) ((TC_WPMR_WPKEY_Msk & ((value) << TC_WPMR_WPKEY_Pos))) + +/*@}*/ + + +#endif /* _SAM3N_TC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_twi.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_twi.h new file mode 100644 index 000000000..0bfed3297 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_twi.h @@ -0,0 +1,217 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_TWI_COMPONENT_ +#define _SAM3N_TWI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Two-wire Interface */ +/* ============================================================================= */ +/** \addtogroup SAM3N_TWI Two-wire Interface */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Twi hardware registers */ +typedef struct { + WoReg TWI_CR; /**< \brief (Twi Offset: 0x00) Control Register */ + RwReg TWI_MMR; /**< \brief (Twi Offset: 0x04) Master Mode Register */ + RwReg TWI_SMR; /**< \brief (Twi Offset: 0x08) Slave Mode Register */ + RwReg TWI_IADR; /**< \brief (Twi Offset: 0x0C) Internal Address Register */ + RwReg TWI_CWGR; /**< \brief (Twi Offset: 0x10) Clock Waveform Generator Register */ + RoReg Reserved1[3]; + RoReg TWI_SR; /**< \brief (Twi Offset: 0x20) Status Register */ + WoReg TWI_IER; /**< \brief (Twi Offset: 0x24) Interrupt Enable Register */ + WoReg TWI_IDR; /**< \brief (Twi Offset: 0x28) Interrupt Disable Register */ + RoReg TWI_IMR; /**< \brief (Twi Offset: 0x2C) Interrupt Mask Register */ + RoReg TWI_RHR; /**< \brief (Twi Offset: 0x30) Receive Holding Register */ + WoReg TWI_THR; /**< \brief (Twi Offset: 0x34) Transmit Holding Register */ + RoReg Reserved2[50]; + RwReg TWI_RPR; /**< \brief (Twi Offset: 0x100) Receive Pointer Register */ + RwReg TWI_RCR; /**< \brief (Twi Offset: 0x104) Receive Counter Register */ + RwReg TWI_TPR; /**< \brief (Twi Offset: 0x108) Transmit Pointer Register */ + RwReg TWI_TCR; /**< \brief (Twi Offset: 0x10C) Transmit Counter Register */ + RwReg TWI_RNPR; /**< \brief (Twi Offset: 0x110) Receive Next Pointer Register */ + RwReg TWI_RNCR; /**< \brief (Twi Offset: 0x114) Receive Next Counter Register */ + RwReg TWI_TNPR; /**< \brief (Twi Offset: 0x118) Transmit Next Pointer Register */ + RwReg TWI_TNCR; /**< \brief (Twi Offset: 0x11C) Transmit Next Counter Register */ + WoReg TWI_PTCR; /**< \brief (Twi Offset: 0x120) Transfer Control Register */ + RoReg TWI_PTSR; /**< \brief (Twi Offset: 0x124) Transfer Status Register */ +} Twi; +#endif /* __ASSEMBLY__ */ +/* -------- TWI_CR : (TWI Offset: 0x00) Control Register -------- */ +#define TWI_CR_START (0x1u << 0) /**< \brief (TWI_CR) Send a START Condition */ +#define TWI_CR_STOP (0x1u << 1) /**< \brief (TWI_CR) Send a STOP Condition */ +#define TWI_CR_MSEN (0x1u << 2) /**< \brief (TWI_CR) TWI Master Mode Enabled */ +#define TWI_CR_MSDIS (0x1u << 3) /**< \brief (TWI_CR) TWI Master Mode Disabled */ +#define TWI_CR_SVEN (0x1u << 4) /**< \brief (TWI_CR) TWI Slave Mode Enabled */ +#define TWI_CR_SVDIS (0x1u << 5) /**< \brief (TWI_CR) TWI Slave Mode Disabled */ +#define TWI_CR_QUICK (0x1u << 6) /**< \brief (TWI_CR) SMBUS Quick Command */ +#define TWI_CR_SWRST (0x1u << 7) /**< \brief (TWI_CR) Software Reset */ +/* -------- TWI_MMR : (TWI Offset: 0x04) Master Mode Register -------- */ +#define TWI_MMR_IADRSZ_Pos 8 +#define TWI_MMR_IADRSZ_Msk (0x3u << TWI_MMR_IADRSZ_Pos) /**< \brief (TWI_MMR) Internal Device Address Size */ +#define TWI_MMR_IADRSZ_NONE (0x0u << 8) /**< \brief (TWI_MMR) No internal device address */ +#define TWI_MMR_IADRSZ_1_BYTE (0x1u << 8) /**< \brief (TWI_MMR) One-byte internal device address */ +#define TWI_MMR_IADRSZ_2_BYTE (0x2u << 8) /**< \brief (TWI_MMR) Two-byte internal device address */ +#define TWI_MMR_IADRSZ_3_BYTE (0x3u << 8) /**< \brief (TWI_MMR) Three-byte internal device address */ +#define TWI_MMR_MREAD (0x1u << 12) /**< \brief (TWI_MMR) Master Read Direction */ +#define TWI_MMR_DADR_Pos 16 +#define TWI_MMR_DADR_Msk (0x7fu << TWI_MMR_DADR_Pos) /**< \brief (TWI_MMR) Device Address */ +#define TWI_MMR_DADR(value) ((TWI_MMR_DADR_Msk & ((value) << TWI_MMR_DADR_Pos))) +/* -------- TWI_SMR : (TWI Offset: 0x08) Slave Mode Register -------- */ +#define TWI_SMR_SADR_Pos 16 +#define TWI_SMR_SADR_Msk (0x7fu << TWI_SMR_SADR_Pos) /**< \brief (TWI_SMR) Slave Address */ +#define TWI_SMR_SADR(value) ((TWI_SMR_SADR_Msk & ((value) << TWI_SMR_SADR_Pos))) +/* -------- TWI_IADR : (TWI Offset: 0x0C) Internal Address Register -------- */ +#define TWI_IADR_IADR_Pos 0 +#define TWI_IADR_IADR_Msk (0xffffffu << TWI_IADR_IADR_Pos) /**< \brief (TWI_IADR) Internal Address */ +#define TWI_IADR_IADR(value) ((TWI_IADR_IADR_Msk & ((value) << TWI_IADR_IADR_Pos))) +/* -------- TWI_CWGR : (TWI Offset: 0x10) Clock Waveform Generator Register -------- */ +#define TWI_CWGR_CLDIV_Pos 0 +#define TWI_CWGR_CLDIV_Msk (0xffu << TWI_CWGR_CLDIV_Pos) /**< \brief (TWI_CWGR) Clock Low Divider */ +#define TWI_CWGR_CLDIV(value) ((TWI_CWGR_CLDIV_Msk & ((value) << TWI_CWGR_CLDIV_Pos))) +#define TWI_CWGR_CHDIV_Pos 8 +#define TWI_CWGR_CHDIV_Msk (0xffu << TWI_CWGR_CHDIV_Pos) /**< \brief (TWI_CWGR) Clock High Divider */ +#define TWI_CWGR_CHDIV(value) ((TWI_CWGR_CHDIV_Msk & ((value) << TWI_CWGR_CHDIV_Pos))) +#define TWI_CWGR_CKDIV_Pos 16 +#define TWI_CWGR_CKDIV_Msk (0x7u << TWI_CWGR_CKDIV_Pos) /**< \brief (TWI_CWGR) Clock Divider */ +#define TWI_CWGR_CKDIV(value) ((TWI_CWGR_CKDIV_Msk & ((value) << TWI_CWGR_CKDIV_Pos))) +/* -------- TWI_SR : (TWI Offset: 0x20) Status Register -------- */ +#define TWI_SR_TXCOMP (0x1u << 0) /**< \brief (TWI_SR) Transmission Completed (automatically set / reset) */ +#define TWI_SR_RXRDY (0x1u << 1) /**< \brief (TWI_SR) Receive Holding Register Ready (automatically set / reset) */ +#define TWI_SR_TXRDY (0x1u << 2) /**< \brief (TWI_SR) Transmit Holding Register Ready (automatically set / reset) */ +#define TWI_SR_SVREAD (0x1u << 3) /**< \brief (TWI_SR) Slave Read (automatically set / reset) */ +#define TWI_SR_SVACC (0x1u << 4) /**< \brief (TWI_SR) Slave Access (automatically set / reset) */ +#define TWI_SR_GACC (0x1u << 5) /**< \brief (TWI_SR) General Call Access (clear on read) */ +#define TWI_SR_OVRE (0x1u << 6) /**< \brief (TWI_SR) Overrun Error (clear on read) */ +#define TWI_SR_NACK (0x1u << 8) /**< \brief (TWI_SR) Not Acknowledged (clear on read) */ +#define TWI_SR_ARBLST (0x1u << 9) /**< \brief (TWI_SR) Arbitration Lost (clear on read) */ +#define TWI_SR_SCLWS (0x1u << 10) /**< \brief (TWI_SR) Clock Wait State (automatically set / reset) */ +#define TWI_SR_EOSACC (0x1u << 11) /**< \brief (TWI_SR) End Of Slave Access (clear on read) */ +#define TWI_SR_ENDRX (0x1u << 12) /**< \brief (TWI_SR) End of RX buffer */ +#define TWI_SR_ENDTX (0x1u << 13) /**< \brief (TWI_SR) End of TX buffer */ +#define TWI_SR_RXBUFF (0x1u << 14) /**< \brief (TWI_SR) RX Buffer Full */ +#define TWI_SR_TXBUFE (0x1u << 15) /**< \brief (TWI_SR) TX Buffer Empty */ +/* -------- TWI_IER : (TWI Offset: 0x24) Interrupt Enable Register -------- */ +#define TWI_IER_TXCOMP (0x1u << 0) /**< \brief (TWI_IER) Transmission Completed Interrupt Enable */ +#define TWI_IER_RXRDY (0x1u << 1) /**< \brief (TWI_IER) Receive Holding Register Ready Interrupt Enable */ +#define TWI_IER_TXRDY (0x1u << 2) /**< \brief (TWI_IER) Transmit Holding Register Ready Interrupt Enable */ +#define TWI_IER_SVACC (0x1u << 4) /**< \brief (TWI_IER) Slave Access Interrupt Enable */ +#define TWI_IER_GACC (0x1u << 5) /**< \brief (TWI_IER) General Call Access Interrupt Enable */ +#define TWI_IER_OVRE (0x1u << 6) /**< \brief (TWI_IER) Overrun Error Interrupt Enable */ +#define TWI_IER_NACK (0x1u << 8) /**< \brief (TWI_IER) Not Acknowledge Interrupt Enable */ +#define TWI_IER_ARBLST (0x1u << 9) /**< \brief (TWI_IER) Arbitration Lost Interrupt Enable */ +#define TWI_IER_SCL_WS (0x1u << 10) /**< \brief (TWI_IER) Clock Wait State Interrupt Enable */ +#define TWI_IER_EOSACC (0x1u << 11) /**< \brief (TWI_IER) End Of Slave Access Interrupt Enable */ +#define TWI_IER_ENDRX (0x1u << 12) /**< \brief (TWI_IER) End of Receive Buffer Interrupt Enable */ +#define TWI_IER_ENDTX (0x1u << 13) /**< \brief (TWI_IER) End of Transmit Buffer Interrupt Enable */ +#define TWI_IER_RXBUFF (0x1u << 14) /**< \brief (TWI_IER) Receive Buffer Full Interrupt Enable */ +#define TWI_IER_TXBUFE (0x1u << 15) /**< \brief (TWI_IER) Transmit Buffer Empty Interrupt Enable */ +/* -------- TWI_IDR : (TWI Offset: 0x28) Interrupt Disable Register -------- */ +#define TWI_IDR_TXCOMP (0x1u << 0) /**< \brief (TWI_IDR) Transmission Completed Interrupt Disable */ +#define TWI_IDR_RXRDY (0x1u << 1) /**< \brief (TWI_IDR) Receive Holding Register Ready Interrupt Disable */ +#define TWI_IDR_TXRDY (0x1u << 2) /**< \brief (TWI_IDR) Transmit Holding Register Ready Interrupt Disable */ +#define TWI_IDR_SVACC (0x1u << 4) /**< \brief (TWI_IDR) Slave Access Interrupt Disable */ +#define TWI_IDR_GACC (0x1u << 5) /**< \brief (TWI_IDR) General Call Access Interrupt Disable */ +#define TWI_IDR_OVRE (0x1u << 6) /**< \brief (TWI_IDR) Overrun Error Interrupt Disable */ +#define TWI_IDR_NACK (0x1u << 8) /**< \brief (TWI_IDR) Not Acknowledge Interrupt Disable */ +#define TWI_IDR_ARBLST (0x1u << 9) /**< \brief (TWI_IDR) Arbitration Lost Interrupt Disable */ +#define TWI_IDR_SCL_WS (0x1u << 10) /**< \brief (TWI_IDR) Clock Wait State Interrupt Disable */ +#define TWI_IDR_EOSACC (0x1u << 11) /**< \brief (TWI_IDR) End Of Slave Access Interrupt Disable */ +#define TWI_IDR_ENDRX (0x1u << 12) /**< \brief (TWI_IDR) End of Receive Buffer Interrupt Disable */ +#define TWI_IDR_ENDTX (0x1u << 13) /**< \brief (TWI_IDR) End of Transmit Buffer Interrupt Disable */ +#define TWI_IDR_RXBUFF (0x1u << 14) /**< \brief (TWI_IDR) Receive Buffer Full Interrupt Disable */ +#define TWI_IDR_TXBUFE (0x1u << 15) /**< \brief (TWI_IDR) Transmit Buffer Empty Interrupt Disable */ +/* -------- TWI_IMR : (TWI Offset: 0x2C) Interrupt Mask Register -------- */ +#define TWI_IMR_TXCOMP (0x1u << 0) /**< \brief (TWI_IMR) Transmission Completed Interrupt Mask */ +#define TWI_IMR_RXRDY (0x1u << 1) /**< \brief (TWI_IMR) Receive Holding Register Ready Interrupt Mask */ +#define TWI_IMR_TXRDY (0x1u << 2) /**< \brief (TWI_IMR) Transmit Holding Register Ready Interrupt Mask */ +#define TWI_IMR_SVACC (0x1u << 4) /**< \brief (TWI_IMR) Slave Access Interrupt Mask */ +#define TWI_IMR_GACC (0x1u << 5) /**< \brief (TWI_IMR) General Call Access Interrupt Mask */ +#define TWI_IMR_OVRE (0x1u << 6) /**< \brief (TWI_IMR) Overrun Error Interrupt Mask */ +#define TWI_IMR_NACK (0x1u << 8) /**< \brief (TWI_IMR) Not Acknowledge Interrupt Mask */ +#define TWI_IMR_ARBLST (0x1u << 9) /**< \brief (TWI_IMR) Arbitration Lost Interrupt Mask */ +#define TWI_IMR_SCL_WS (0x1u << 10) /**< \brief (TWI_IMR) Clock Wait State Interrupt Mask */ +#define TWI_IMR_EOSACC (0x1u << 11) /**< \brief (TWI_IMR) End Of Slave Access Interrupt Mask */ +#define TWI_IMR_ENDRX (0x1u << 12) /**< \brief (TWI_IMR) End of Receive Buffer Interrupt Mask */ +#define TWI_IMR_ENDTX (0x1u << 13) /**< \brief (TWI_IMR) End of Transmit Buffer Interrupt Mask */ +#define TWI_IMR_RXBUFF (0x1u << 14) /**< \brief (TWI_IMR) Receive Buffer Full Interrupt Mask */ +#define TWI_IMR_TXBUFE (0x1u << 15) /**< \brief (TWI_IMR) Transmit Buffer Empty Interrupt Mask */ +/* -------- TWI_RHR : (TWI Offset: 0x30) Receive Holding Register -------- */ +#define TWI_RHR_RXDATA_Pos 0 +#define TWI_RHR_RXDATA_Msk (0xffu << TWI_RHR_RXDATA_Pos) /**< \brief (TWI_RHR) Master or Slave Receive Holding Data */ +/* -------- TWI_THR : (TWI Offset: 0x34) Transmit Holding Register -------- */ +#define TWI_THR_TXDATA_Pos 0 +#define TWI_THR_TXDATA_Msk (0xffu << TWI_THR_TXDATA_Pos) /**< \brief (TWI_THR) Master or Slave Transmit Holding Data */ +#define TWI_THR_TXDATA(value) ((TWI_THR_TXDATA_Msk & ((value) << TWI_THR_TXDATA_Pos))) +/* -------- TWI_RPR : (TWI Offset: 0x100) Receive Pointer Register -------- */ +#define TWI_RPR_RXPTR_Pos 0 +#define TWI_RPR_RXPTR_Msk (0xffffffffu << TWI_RPR_RXPTR_Pos) /**< \brief (TWI_RPR) Receive Pointer Register */ +#define TWI_RPR_RXPTR(value) ((TWI_RPR_RXPTR_Msk & ((value) << TWI_RPR_RXPTR_Pos))) +/* -------- TWI_RCR : (TWI Offset: 0x104) Receive Counter Register -------- */ +#define TWI_RCR_RXCTR_Pos 0 +#define TWI_RCR_RXCTR_Msk (0xffffu << TWI_RCR_RXCTR_Pos) /**< \brief (TWI_RCR) Receive Counter Register */ +#define TWI_RCR_RXCTR(value) ((TWI_RCR_RXCTR_Msk & ((value) << TWI_RCR_RXCTR_Pos))) +/* -------- TWI_TPR : (TWI Offset: 0x108) Transmit Pointer Register -------- */ +#define TWI_TPR_TXPTR_Pos 0 +#define TWI_TPR_TXPTR_Msk (0xffffffffu << TWI_TPR_TXPTR_Pos) /**< \brief (TWI_TPR) Transmit Counter Register */ +#define TWI_TPR_TXPTR(value) ((TWI_TPR_TXPTR_Msk & ((value) << TWI_TPR_TXPTR_Pos))) +/* -------- TWI_TCR : (TWI Offset: 0x10C) Transmit Counter Register -------- */ +#define TWI_TCR_TXCTR_Pos 0 +#define TWI_TCR_TXCTR_Msk (0xffffu << TWI_TCR_TXCTR_Pos) /**< \brief (TWI_TCR) Transmit Counter Register */ +#define TWI_TCR_TXCTR(value) ((TWI_TCR_TXCTR_Msk & ((value) << TWI_TCR_TXCTR_Pos))) +/* -------- TWI_RNPR : (TWI Offset: 0x110) Receive Next Pointer Register -------- */ +#define TWI_RNPR_RXNPTR_Pos 0 +#define TWI_RNPR_RXNPTR_Msk (0xffffffffu << TWI_RNPR_RXNPTR_Pos) /**< \brief (TWI_RNPR) Receive Next Pointer */ +#define TWI_RNPR_RXNPTR(value) ((TWI_RNPR_RXNPTR_Msk & ((value) << TWI_RNPR_RXNPTR_Pos))) +/* -------- TWI_RNCR : (TWI Offset: 0x114) Receive Next Counter Register -------- */ +#define TWI_RNCR_RXNCTR_Pos 0 +#define TWI_RNCR_RXNCTR_Msk (0xffffu << TWI_RNCR_RXNCTR_Pos) /**< \brief (TWI_RNCR) Receive Next Counter */ +#define TWI_RNCR_RXNCTR(value) ((TWI_RNCR_RXNCTR_Msk & ((value) << TWI_RNCR_RXNCTR_Pos))) +/* -------- TWI_TNPR : (TWI Offset: 0x118) Transmit Next Pointer Register -------- */ +#define TWI_TNPR_TXNPTR_Pos 0 +#define TWI_TNPR_TXNPTR_Msk (0xffffffffu << TWI_TNPR_TXNPTR_Pos) /**< \brief (TWI_TNPR) Transmit Next Pointer */ +#define TWI_TNPR_TXNPTR(value) ((TWI_TNPR_TXNPTR_Msk & ((value) << TWI_TNPR_TXNPTR_Pos))) +/* -------- TWI_TNCR : (TWI Offset: 0x11C) Transmit Next Counter Register -------- */ +#define TWI_TNCR_TXNCTR_Pos 0 +#define TWI_TNCR_TXNCTR_Msk (0xffffu << TWI_TNCR_TXNCTR_Pos) /**< \brief (TWI_TNCR) Transmit Counter Next */ +#define TWI_TNCR_TXNCTR(value) ((TWI_TNCR_TXNCTR_Msk & ((value) << TWI_TNCR_TXNCTR_Pos))) +/* -------- TWI_PTCR : (TWI Offset: 0x120) Transfer Control Register -------- */ +#define TWI_PTCR_RXTEN (0x1u << 0) /**< \brief (TWI_PTCR) Receiver Transfer Enable */ +#define TWI_PTCR_RXTDIS (0x1u << 1) /**< \brief (TWI_PTCR) Receiver Transfer Disable */ +#define TWI_PTCR_TXTEN (0x1u << 8) /**< \brief (TWI_PTCR) Transmitter Transfer Enable */ +#define TWI_PTCR_TXTDIS (0x1u << 9) /**< \brief (TWI_PTCR) Transmitter Transfer Disable */ +/* -------- TWI_PTSR : (TWI Offset: 0x124) Transfer Status Register -------- */ +#define TWI_PTSR_RXTEN (0x1u << 0) /**< \brief (TWI_PTSR) Receiver Transfer Enable */ +#define TWI_PTSR_TXTEN (0x1u << 8) /**< \brief (TWI_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3N_TWI_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_uart.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_uart.h new file mode 100644 index 000000000..9ad0dd077 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_uart.h @@ -0,0 +1,185 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_UART_COMPONENT_ +#define _SAM3N_UART_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Universal Asynchronous Receiver Transmitter */ +/* ============================================================================= */ +/** \addtogroup SAM3N_UART Universal Asynchronous Receiver Transmitter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Uart hardware registers */ +typedef struct { + WoReg UART_CR; /**< \brief (Uart Offset: 0x0000) Control Register */ + RwReg UART_MR; /**< \brief (Uart Offset: 0x0004) Mode Register */ + WoReg UART_IER; /**< \brief (Uart Offset: 0x0008) Interrupt Enable Register */ + WoReg UART_IDR; /**< \brief (Uart Offset: 0x000C) Interrupt Disable Register */ + RoReg UART_IMR; /**< \brief (Uart Offset: 0x0010) Interrupt Mask Register */ + RoReg UART_SR; /**< \brief (Uart Offset: 0x0014) Status Register */ + RoReg UART_RHR; /**< \brief (Uart Offset: 0x0018) Receive Holding Register */ + WoReg UART_THR; /**< \brief (Uart Offset: 0x001C) Transmit Holding Register */ + RwReg UART_BRGR; /**< \brief (Uart Offset: 0x0020) Baud Rate Generator Register */ + RoReg Reserved1[55]; + RwReg UART_RPR; /**< \brief (Uart Offset: 0x100) Receive Pointer Register */ + RwReg UART_RCR; /**< \brief (Uart Offset: 0x104) Receive Counter Register */ + RwReg UART_TPR; /**< \brief (Uart Offset: 0x108) Transmit Pointer Register */ + RwReg UART_TCR; /**< \brief (Uart Offset: 0x10C) Transmit Counter Register */ + RwReg UART_RNPR; /**< \brief (Uart Offset: 0x110) Receive Next Pointer Register */ + RwReg UART_RNCR; /**< \brief (Uart Offset: 0x114) Receive Next Counter Register */ + RwReg UART_TNPR; /**< \brief (Uart Offset: 0x118) Transmit Next Pointer Register */ + RwReg UART_TNCR; /**< \brief (Uart Offset: 0x11C) Transmit Next Counter Register */ + WoReg UART_PTCR; /**< \brief (Uart Offset: 0x120) Transfer Control Register */ + RoReg UART_PTSR; /**< \brief (Uart Offset: 0x124) Transfer Status Register */ +} Uart; +#endif /* __ASSEMBLY__ */ +/* -------- UART_CR : (UART Offset: 0x0000) Control Register -------- */ +#define UART_CR_RSTRX (0x1u << 2) /**< \brief (UART_CR) Reset Receiver */ +#define UART_CR_RSTTX (0x1u << 3) /**< \brief (UART_CR) Reset Transmitter */ +#define UART_CR_RXEN (0x1u << 4) /**< \brief (UART_CR) Receiver Enable */ +#define UART_CR_RXDIS (0x1u << 5) /**< \brief (UART_CR) Receiver Disable */ +#define UART_CR_TXEN (0x1u << 6) /**< \brief (UART_CR) Transmitter Enable */ +#define UART_CR_TXDIS (0x1u << 7) /**< \brief (UART_CR) Transmitter Disable */ +#define UART_CR_RSTSTA (0x1u << 8) /**< \brief (UART_CR) Reset Status Bits */ +/* -------- UART_MR : (UART Offset: 0x0004) Mode Register -------- */ +#define UART_MR_PAR_Pos 9 +#define UART_MR_PAR_Msk (0x7u << UART_MR_PAR_Pos) /**< \brief (UART_MR) Parity Type */ +#define UART_MR_PAR_EVEN (0x0u << 9) /**< \brief (UART_MR) Even parity */ +#define UART_MR_PAR_ODD (0x1u << 9) /**< \brief (UART_MR) Odd parity */ +#define UART_MR_PAR_SPACE (0x2u << 9) /**< \brief (UART_MR) Space: parity forced to 0 */ +#define UART_MR_PAR_MARK (0x3u << 9) /**< \brief (UART_MR) Mark: parity forced to 1 */ +#define UART_MR_PAR_NO (0x4u << 9) /**< \brief (UART_MR) No parity */ +#define UART_MR_CHMODE_Pos 14 +#define UART_MR_CHMODE_Msk (0x3u << UART_MR_CHMODE_Pos) /**< \brief (UART_MR) Channel Mode */ +#define UART_MR_CHMODE_NORMAL (0x0u << 14) /**< \brief (UART_MR) Normal Mode */ +#define UART_MR_CHMODE_AUTOMATIC (0x1u << 14) /**< \brief (UART_MR) Automatic Echo */ +#define UART_MR_CHMODE_LOCAL_LOOPBACK (0x2u << 14) /**< \brief (UART_MR) Local Loopback */ +#define UART_MR_CHMODE_REMOTE_LOOPBACK (0x3u << 14) /**< \brief (UART_MR) Remote Loopback */ +/* -------- UART_IER : (UART Offset: 0x0008) Interrupt Enable Register -------- */ +#define UART_IER_RXRDY (0x1u << 0) /**< \brief (UART_IER) Enable RXRDY Interrupt */ +#define UART_IER_TXRDY (0x1u << 1) /**< \brief (UART_IER) Enable TXRDY Interrupt */ +#define UART_IER_ENDRX (0x1u << 3) /**< \brief (UART_IER) Enable End of Receive Transfer Interrupt */ +#define UART_IER_ENDTX (0x1u << 4) /**< \brief (UART_IER) Enable End of Transmit Interrupt */ +#define UART_IER_OVRE (0x1u << 5) /**< \brief (UART_IER) Enable Overrun Error Interrupt */ +#define UART_IER_FRAME (0x1u << 6) /**< \brief (UART_IER) Enable Framing Error Interrupt */ +#define UART_IER_PARE (0x1u << 7) /**< \brief (UART_IER) Enable Parity Error Interrupt */ +#define UART_IER_TXEMPTY (0x1u << 9) /**< \brief (UART_IER) Enable TXEMPTY Interrupt */ +#define UART_IER_TXBUFE (0x1u << 11) /**< \brief (UART_IER) Enable Buffer Empty Interrupt */ +#define UART_IER_RXBUFF (0x1u << 12) /**< \brief (UART_IER) Enable Buffer Full Interrupt */ +/* -------- UART_IDR : (UART Offset: 0x000C) Interrupt Disable Register -------- */ +#define UART_IDR_RXRDY (0x1u << 0) /**< \brief (UART_IDR) Disable RXRDY Interrupt */ +#define UART_IDR_TXRDY (0x1u << 1) /**< \brief (UART_IDR) Disable TXRDY Interrupt */ +#define UART_IDR_ENDRX (0x1u << 3) /**< \brief (UART_IDR) Disable End of Receive Transfer Interrupt */ +#define UART_IDR_ENDTX (0x1u << 4) /**< \brief (UART_IDR) Disable End of Transmit Interrupt */ +#define UART_IDR_OVRE (0x1u << 5) /**< \brief (UART_IDR) Disable Overrun Error Interrupt */ +#define UART_IDR_FRAME (0x1u << 6) /**< \brief (UART_IDR) Disable Framing Error Interrupt */ +#define UART_IDR_PARE (0x1u << 7) /**< \brief (UART_IDR) Disable Parity Error Interrupt */ +#define UART_IDR_TXEMPTY (0x1u << 9) /**< \brief (UART_IDR) Disable TXEMPTY Interrupt */ +#define UART_IDR_TXBUFE (0x1u << 11) /**< \brief (UART_IDR) Disable Buffer Empty Interrupt */ +#define UART_IDR_RXBUFF (0x1u << 12) /**< \brief (UART_IDR) Disable Buffer Full Interrupt */ +/* -------- UART_IMR : (UART Offset: 0x0010) Interrupt Mask Register -------- */ +#define UART_IMR_RXRDY (0x1u << 0) /**< \brief (UART_IMR) Mask RXRDY Interrupt */ +#define UART_IMR_TXRDY (0x1u << 1) /**< \brief (UART_IMR) Disable TXRDY Interrupt */ +#define UART_IMR_ENDRX (0x1u << 3) /**< \brief (UART_IMR) Mask End of Receive Transfer Interrupt */ +#define UART_IMR_ENDTX (0x1u << 4) /**< \brief (UART_IMR) Mask End of Transmit Interrupt */ +#define UART_IMR_OVRE (0x1u << 5) /**< \brief (UART_IMR) Mask Overrun Error Interrupt */ +#define UART_IMR_FRAME (0x1u << 6) /**< \brief (UART_IMR) Mask Framing Error Interrupt */ +#define UART_IMR_PARE (0x1u << 7) /**< \brief (UART_IMR) Mask Parity Error Interrupt */ +#define UART_IMR_TXEMPTY (0x1u << 9) /**< \brief (UART_IMR) Mask TXEMPTY Interrupt */ +#define UART_IMR_TXBUFE (0x1u << 11) /**< \brief (UART_IMR) Mask TXBUFE Interrupt */ +#define UART_IMR_RXBUFF (0x1u << 12) /**< \brief (UART_IMR) Mask RXBUFF Interrupt */ +/* -------- UART_SR : (UART Offset: 0x0014) Status Register -------- */ +#define UART_SR_RXRDY (0x1u << 0) /**< \brief (UART_SR) Receiver Ready */ +#define UART_SR_TXRDY (0x1u << 1) /**< \brief (UART_SR) Transmitter Ready */ +#define UART_SR_ENDRX (0x1u << 3) /**< \brief (UART_SR) End of Receiver Transfer */ +#define UART_SR_ENDTX (0x1u << 4) /**< \brief (UART_SR) End of Transmitter Transfer */ +#define UART_SR_OVRE (0x1u << 5) /**< \brief (UART_SR) Overrun Error */ +#define UART_SR_FRAME (0x1u << 6) /**< \brief (UART_SR) Framing Error */ +#define UART_SR_PARE (0x1u << 7) /**< \brief (UART_SR) Parity Error */ +#define UART_SR_TXEMPTY (0x1u << 9) /**< \brief (UART_SR) Transmitter Empty */ +#define UART_SR_TXBUFE (0x1u << 11) /**< \brief (UART_SR) Transmission Buffer Empty */ +#define UART_SR_RXBUFF (0x1u << 12) /**< \brief (UART_SR) Receive Buffer Full */ +/* -------- UART_RHR : (UART Offset: 0x0018) Receive Holding Register -------- */ +#define UART_RHR_RXCHR_Pos 0 +#define UART_RHR_RXCHR_Msk (0xffu << UART_RHR_RXCHR_Pos) /**< \brief (UART_RHR) Received Character */ +/* -------- UART_THR : (UART Offset: 0x001C) Transmit Holding Register -------- */ +#define UART_THR_TXCHR_Pos 0 +#define UART_THR_TXCHR_Msk (0xffu << UART_THR_TXCHR_Pos) /**< \brief (UART_THR) Character to be Transmitted */ +#define UART_THR_TXCHR(value) ((UART_THR_TXCHR_Msk & ((value) << UART_THR_TXCHR_Pos))) +/* -------- UART_BRGR : (UART Offset: 0x0020) Baud Rate Generator Register -------- */ +#define UART_BRGR_CD_Pos 0 +#define UART_BRGR_CD_Msk (0xffffu << UART_BRGR_CD_Pos) /**< \brief (UART_BRGR) Clock Divisor */ +#define UART_BRGR_CD(value) ((UART_BRGR_CD_Msk & ((value) << UART_BRGR_CD_Pos))) +/* -------- UART_RPR : (UART Offset: 0x100) Receive Pointer Register -------- */ +#define UART_RPR_RXPTR_Pos 0 +#define UART_RPR_RXPTR_Msk (0xffffffffu << UART_RPR_RXPTR_Pos) /**< \brief (UART_RPR) Receive Pointer Register */ +#define UART_RPR_RXPTR(value) ((UART_RPR_RXPTR_Msk & ((value) << UART_RPR_RXPTR_Pos))) +/* -------- UART_RCR : (UART Offset: 0x104) Receive Counter Register -------- */ +#define UART_RCR_RXCTR_Pos 0 +#define UART_RCR_RXCTR_Msk (0xffffu << UART_RCR_RXCTR_Pos) /**< \brief (UART_RCR) Receive Counter Register */ +#define UART_RCR_RXCTR(value) ((UART_RCR_RXCTR_Msk & ((value) << UART_RCR_RXCTR_Pos))) +/* -------- UART_TPR : (UART Offset: 0x108) Transmit Pointer Register -------- */ +#define UART_TPR_TXPTR_Pos 0 +#define UART_TPR_TXPTR_Msk (0xffffffffu << UART_TPR_TXPTR_Pos) /**< \brief (UART_TPR) Transmit Counter Register */ +#define UART_TPR_TXPTR(value) ((UART_TPR_TXPTR_Msk & ((value) << UART_TPR_TXPTR_Pos))) +/* -------- UART_TCR : (UART Offset: 0x10C) Transmit Counter Register -------- */ +#define UART_TCR_TXCTR_Pos 0 +#define UART_TCR_TXCTR_Msk (0xffffu << UART_TCR_TXCTR_Pos) /**< \brief (UART_TCR) Transmit Counter Register */ +#define UART_TCR_TXCTR(value) ((UART_TCR_TXCTR_Msk & ((value) << UART_TCR_TXCTR_Pos))) +/* -------- UART_RNPR : (UART Offset: 0x110) Receive Next Pointer Register -------- */ +#define UART_RNPR_RXNPTR_Pos 0 +#define UART_RNPR_RXNPTR_Msk (0xffffffffu << UART_RNPR_RXNPTR_Pos) /**< \brief (UART_RNPR) Receive Next Pointer */ +#define UART_RNPR_RXNPTR(value) ((UART_RNPR_RXNPTR_Msk & ((value) << UART_RNPR_RXNPTR_Pos))) +/* -------- UART_RNCR : (UART Offset: 0x114) Receive Next Counter Register -------- */ +#define UART_RNCR_RXNCTR_Pos 0 +#define UART_RNCR_RXNCTR_Msk (0xffffu << UART_RNCR_RXNCTR_Pos) /**< \brief (UART_RNCR) Receive Next Counter */ +#define UART_RNCR_RXNCTR(value) ((UART_RNCR_RXNCTR_Msk & ((value) << UART_RNCR_RXNCTR_Pos))) +/* -------- UART_TNPR : (UART Offset: 0x118) Transmit Next Pointer Register -------- */ +#define UART_TNPR_TXNPTR_Pos 0 +#define UART_TNPR_TXNPTR_Msk (0xffffffffu << UART_TNPR_TXNPTR_Pos) /**< \brief (UART_TNPR) Transmit Next Pointer */ +#define UART_TNPR_TXNPTR(value) ((UART_TNPR_TXNPTR_Msk & ((value) << UART_TNPR_TXNPTR_Pos))) +/* -------- UART_TNCR : (UART Offset: 0x11C) Transmit Next Counter Register -------- */ +#define UART_TNCR_TXNCTR_Pos 0 +#define UART_TNCR_TXNCTR_Msk (0xffffu << UART_TNCR_TXNCTR_Pos) /**< \brief (UART_TNCR) Transmit Counter Next */ +#define UART_TNCR_TXNCTR(value) ((UART_TNCR_TXNCTR_Msk & ((value) << UART_TNCR_TXNCTR_Pos))) +/* -------- UART_PTCR : (UART Offset: 0x120) Transfer Control Register -------- */ +#define UART_PTCR_RXTEN (0x1u << 0) /**< \brief (UART_PTCR) Receiver Transfer Enable */ +#define UART_PTCR_RXTDIS (0x1u << 1) /**< \brief (UART_PTCR) Receiver Transfer Disable */ +#define UART_PTCR_TXTEN (0x1u << 8) /**< \brief (UART_PTCR) Transmitter Transfer Enable */ +#define UART_PTCR_TXTDIS (0x1u << 9) /**< \brief (UART_PTCR) Transmitter Transfer Disable */ +/* -------- UART_PTSR : (UART Offset: 0x124) Transfer Status Register -------- */ +#define UART_PTSR_RXTEN (0x1u << 0) /**< \brief (UART_PTSR) Receiver Transfer Enable */ +#define UART_PTSR_TXTEN (0x1u << 8) /**< \brief (UART_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3N_UART_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_usart.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_usart.h new file mode 100644 index 000000000..f944a30f7 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_usart.h @@ -0,0 +1,305 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_USART_COMPONENT_ +#define _SAM3N_USART_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Universal Synchronous Asynchronous Receiver Transmitter */ +/* ============================================================================= */ +/** \addtogroup SAM3N_USART Universal Synchronous Asynchronous Receiver Transmitter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Usart hardware registers */ +typedef struct { + WoReg US_CR; /**< \brief (Usart Offset: 0x0000) Control Register */ + RwReg US_MR; /**< \brief (Usart Offset: 0x0004) Mode Register */ + WoReg US_IER; /**< \brief (Usart Offset: 0x0008) Interrupt Enable Register */ + WoReg US_IDR; /**< \brief (Usart Offset: 0x000C) Interrupt Disable Register */ + RoReg US_IMR; /**< \brief (Usart Offset: 0x0010) Interrupt Mask Register */ + RoReg US_CSR; /**< \brief (Usart Offset: 0x0014) Channel Status Register */ + RoReg US_RHR; /**< \brief (Usart Offset: 0x0018) Receiver Holding Register */ + WoReg US_THR; /**< \brief (Usart Offset: 0x001C) Transmitter Holding Register */ + RwReg US_BRGR; /**< \brief (Usart Offset: 0x0020) Baud Rate Generator Register */ + RwReg US_RTOR; /**< \brief (Usart Offset: 0x0024) Receiver Time-out Register */ + RwReg US_TTGR; /**< \brief (Usart Offset: 0x0028) Transmitter Timeguard Register */ + RoReg Reserved1[5]; + RwReg US_FIDI; /**< \brief (Usart Offset: 0x0040) FI DI Ratio Register */ + RoReg US_NER; /**< \brief (Usart Offset: 0x0044) Number of Errors Register */ + RoReg Reserved2[1]; + RwReg US_IF; /**< \brief (Usart Offset: 0x004C) IrDA Filter Register */ + RoReg Reserved3[37]; + RwReg US_WPMR; /**< \brief (Usart Offset: 0xE4) Write Protect Mode Register */ + RoReg US_WPSR; /**< \brief (Usart Offset: 0xE8) Write Protect Status Register */ + RoReg Reserved4[5]; + RwReg US_RPR; /**< \brief (Usart Offset: 0x100) Receive Pointer Register */ + RwReg US_RCR; /**< \brief (Usart Offset: 0x104) Receive Counter Register */ + RwReg US_TPR; /**< \brief (Usart Offset: 0x108) Transmit Pointer Register */ + RwReg US_TCR; /**< \brief (Usart Offset: 0x10C) Transmit Counter Register */ + RwReg US_RNPR; /**< \brief (Usart Offset: 0x110) Receive Next Pointer Register */ + RwReg US_RNCR; /**< \brief (Usart Offset: 0x114) Receive Next Counter Register */ + RwReg US_TNPR; /**< \brief (Usart Offset: 0x118) Transmit Next Pointer Register */ + RwReg US_TNCR; /**< \brief (Usart Offset: 0x11C) Transmit Next Counter Register */ + WoReg US_PTCR; /**< \brief (Usart Offset: 0x120) Transfer Control Register */ + RoReg US_PTSR; /**< \brief (Usart Offset: 0x124) Transfer Status Register */ +} Usart; +#endif /* __ASSEMBLY__ */ +/* -------- US_CR : (USART Offset: 0x0000) Control Register -------- */ +#define US_CR_RSTRX (0x1u << 2) /**< \brief (US_CR) Reset Receiver */ +#define US_CR_RSTTX (0x1u << 3) /**< \brief (US_CR) Reset Transmitter */ +#define US_CR_RXEN (0x1u << 4) /**< \brief (US_CR) Receiver Enable */ +#define US_CR_RXDIS (0x1u << 5) /**< \brief (US_CR) Receiver Disable */ +#define US_CR_TXEN (0x1u << 6) /**< \brief (US_CR) Transmitter Enable */ +#define US_CR_TXDIS (0x1u << 7) /**< \brief (US_CR) Transmitter Disable */ +#define US_CR_RSTSTA (0x1u << 8) /**< \brief (US_CR) Reset Status Bits */ +#define US_CR_STTBRK (0x1u << 9) /**< \brief (US_CR) Start Break */ +#define US_CR_STPBRK (0x1u << 10) /**< \brief (US_CR) Stop Break */ +#define US_CR_STTTO (0x1u << 11) /**< \brief (US_CR) Start Time-out */ +#define US_CR_SENDA (0x1u << 12) /**< \brief (US_CR) Send Address */ +#define US_CR_RSTIT (0x1u << 13) /**< \brief (US_CR) Reset Iterations */ +#define US_CR_RSTNACK (0x1u << 14) /**< \brief (US_CR) Reset Non Acknowledge */ +#define US_CR_RETTO (0x1u << 15) /**< \brief (US_CR) Rearm Time-out */ +#define US_CR_RTSEN (0x1u << 18) /**< \brief (US_CR) Request to Send Enable */ +#define US_CR_FCS (0x1u << 18) /**< \brief (US_CR) Force SPI Chip Select */ +#define US_CR_RTSDIS (0x1u << 19) /**< \brief (US_CR) Request to Send Disable */ +#define US_CR_RCS (0x1u << 19) /**< \brief (US_CR) Release SPI Chip Select */ +/* -------- US_MR : (USART Offset: 0x0004) Mode Register -------- */ +#define US_MR_USART_MODE_Pos 0 +#define US_MR_USART_MODE_Msk (0xfu << US_MR_USART_MODE_Pos) /**< \brief (US_MR) */ +#define US_MR_USART_MODE_NORMAL (0x0u << 0) /**< \brief (US_MR) Normal mode */ +#define US_MR_USART_MODE_RS485 (0x1u << 0) /**< \brief (US_MR) RS485 */ +#define US_MR_USART_MODE_HW_HANDSHAKING (0x2u << 0) /**< \brief (US_MR) Hardware Handshaking */ +#define US_MR_USART_MODE_IS07816_T_0 (0x4u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 0 */ +#define US_MR_USART_MODE_IS07816_T_1 (0x6u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 1 */ +#define US_MR_USART_MODE_IRDA (0x8u << 0) /**< \brief (US_MR) IrDA */ +#define US_MR_USART_MODE_SPI_MASTER (0xEu << 0) /**< \brief (US_MR) SPI Master */ +#define US_MR_USART_MODE_SPI_SLAVE (0xFu << 0) /**< \brief (US_MR) SPI Slave */ +#define US_MR_USCLKS_Pos 4 +#define US_MR_USCLKS_Msk (0x3u << US_MR_USCLKS_Pos) /**< \brief (US_MR) Clock Selection */ +#define US_MR_USCLKS_MCK (0x0u << 4) /**< \brief (US_MR) Master Clock MCK is selected */ +#define US_MR_USCLKS_DIV (0x1u << 4) /**< \brief (US_MR) Internal Clock Divided MCK/DIV (DIV=8) is selected */ +#define US_MR_USCLKS_SCK (0x3u << 4) /**< \brief (US_MR) Serial Clock SLK is selected */ +#define US_MR_CHRL_Pos 6 +#define US_MR_CHRL_Msk (0x3u << US_MR_CHRL_Pos) /**< \brief (US_MR) Character Length. */ +#define US_MR_CHRL_5_BIT (0x0u << 6) /**< \brief (US_MR) Character length is 5 bits */ +#define US_MR_CHRL_6_BIT (0x1u << 6) /**< \brief (US_MR) Character length is 6 bits */ +#define US_MR_CHRL_7_BIT (0x2u << 6) /**< \brief (US_MR) Character length is 7 bits */ +#define US_MR_CHRL_8_BIT (0x3u << 6) /**< \brief (US_MR) Character length is 8 bits */ +#define US_MR_SYNC (0x1u << 8) /**< \brief (US_MR) Synchronous Mode Select */ +#define US_MR_CPHA (0x1u << 8) /**< \brief (US_MR) SPI Clock Phase */ +#define US_MR_PAR_Pos 9 +#define US_MR_PAR_Msk (0x7u << US_MR_PAR_Pos) /**< \brief (US_MR) Parity Type */ +#define US_MR_PAR_EVEN (0x0u << 9) /**< \brief (US_MR) Even parity */ +#define US_MR_PAR_ODD (0x1u << 9) /**< \brief (US_MR) Odd parity */ +#define US_MR_PAR_SPACE (0x2u << 9) /**< \brief (US_MR) Parity forced to 0 (Space) */ +#define US_MR_PAR_MARK (0x3u << 9) /**< \brief (US_MR) Parity forced to 1 (Mark) */ +#define US_MR_PAR_NO (0x4u << 9) /**< \brief (US_MR) No parity */ +#define US_MR_PAR_MULTIDROP (0x6u << 9) /**< \brief (US_MR) Multidrop mode */ +#define US_MR_NBSTOP_Pos 12 +#define US_MR_NBSTOP_Msk (0x3u << US_MR_NBSTOP_Pos) /**< \brief (US_MR) Number of Stop Bits */ +#define US_MR_NBSTOP_1_BIT (0x0u << 12) /**< \brief (US_MR) 1 stop bit */ +#define US_MR_NBSTOP_1_5_BIT (0x1u << 12) /**< \brief (US_MR) 1.5 stop bit (SYNC = 0) or reserved (SYNC = 1) */ +#define US_MR_NBSTOP_2_BIT (0x2u << 12) /**< \brief (US_MR) 2 stop bits */ +#define US_MR_CHMODE_Pos 14 +#define US_MR_CHMODE_Msk (0x3u << US_MR_CHMODE_Pos) /**< \brief (US_MR) Channel Mode */ +#define US_MR_CHMODE_NORMAL (0x0u << 14) /**< \brief (US_MR) Normal Mode */ +#define US_MR_CHMODE_AUTOMATIC (0x1u << 14) /**< \brief (US_MR) Automatic Echo. Receiver input is connected to the TXD pin. */ +#define US_MR_CHMODE_LOCAL_LOOPBACK (0x2u << 14) /**< \brief (US_MR) Local Loopback. Transmitter output is connected to the Receiver Input. */ +#define US_MR_CHMODE_REMOTE_LOOPBACK (0x3u << 14) /**< \brief (US_MR) Remote Loopback. RXD pin is internally connected to the TXD pin. */ +#define US_MR_MSBF (0x1u << 16) /**< \brief (US_MR) Bit Order */ +#define US_MR_CPOL (0x1u << 16) /**< \brief (US_MR) SPI Clock Polarity */ +#define US_MR_MODE9 (0x1u << 17) /**< \brief (US_MR) 9-bit Character Length */ +#define US_MR_CLKO (0x1u << 18) /**< \brief (US_MR) Clock Output Select */ +#define US_MR_OVER (0x1u << 19) /**< \brief (US_MR) Oversampling Mode */ +#define US_MR_INACK (0x1u << 20) /**< \brief (US_MR) Inhibit Non Acknowledge */ +#define US_MR_DSNACK (0x1u << 21) /**< \brief (US_MR) Disable Successive NACK */ +#define US_MR_INVDATA (0x1u << 23) /**< \brief (US_MR) INverted Data */ +#define US_MR_MAX_ITERATION_Pos 24 +#define US_MR_MAX_ITERATION_Msk (0x7u << US_MR_MAX_ITERATION_Pos) /**< \brief (US_MR) */ +#define US_MR_MAX_ITERATION(value) ((US_MR_MAX_ITERATION_Msk & ((value) << US_MR_MAX_ITERATION_Pos))) +#define US_MR_FILTER (0x1u << 28) /**< \brief (US_MR) Infrared Receive Line Filter */ +/* -------- US_IER : (USART Offset: 0x0008) Interrupt Enable Register -------- */ +#define US_IER_RXRDY (0x1u << 0) /**< \brief (US_IER) RXRDY Interrupt Enable */ +#define US_IER_TXRDY (0x1u << 1) /**< \brief (US_IER) TXRDY Interrupt Enable */ +#define US_IER_RXBRK (0x1u << 2) /**< \brief (US_IER) Receiver Break Interrupt Enable */ +#define US_IER_ENDRX (0x1u << 3) /**< \brief (US_IER) End of Receive Transfer Interrupt Enable */ +#define US_IER_ENDTX (0x1u << 4) /**< \brief (US_IER) End of Transmit Interrupt Enable */ +#define US_IER_OVRE (0x1u << 5) /**< \brief (US_IER) Overrun Error Interrupt Enable */ +#define US_IER_FRAME (0x1u << 6) /**< \brief (US_IER) Framing Error Interrupt Enable */ +#define US_IER_PARE (0x1u << 7) /**< \brief (US_IER) Parity Error Interrupt Enable */ +#define US_IER_TIMEOUT (0x1u << 8) /**< \brief (US_IER) Time-out Interrupt Enable */ +#define US_IER_TXEMPTY (0x1u << 9) /**< \brief (US_IER) TXEMPTY Interrupt Enable */ +#define US_IER_ITER (0x1u << 10) /**< \brief (US_IER) Max number of Repetitions Reached */ +#define US_IER_UNRE (0x1u << 10) /**< \brief (US_IER) SPI Underrun Error */ +#define US_IER_TXBUFE (0x1u << 11) /**< \brief (US_IER) Buffer Empty Interrupt Enable */ +#define US_IER_RXBUFF (0x1u << 12) /**< \brief (US_IER) Buffer Full Interrupt Enable */ +#define US_IER_NACK (0x1u << 13) /**< \brief (US_IER) Non AcknowledgeInterrupt Enable */ +#define US_IER_CTSIC (0x1u << 19) /**< \brief (US_IER) Clear to Send Input Change Interrupt Enable */ +/* -------- US_IDR : (USART Offset: 0x000C) Interrupt Disable Register -------- */ +#define US_IDR_RXRDY (0x1u << 0) /**< \brief (US_IDR) RXRDY Interrupt Disable */ +#define US_IDR_TXRDY (0x1u << 1) /**< \brief (US_IDR) TXRDY Interrupt Disable */ +#define US_IDR_RXBRK (0x1u << 2) /**< \brief (US_IDR) Receiver Break Interrupt Disable */ +#define US_IDR_ENDRX (0x1u << 3) /**< \brief (US_IDR) End of Receive Transfer Interrupt Disable */ +#define US_IDR_ENDTX (0x1u << 4) /**< \brief (US_IDR) End of Transmit Interrupt Disable */ +#define US_IDR_OVRE (0x1u << 5) /**< \brief (US_IDR) Overrun Error Interrupt Disable */ +#define US_IDR_FRAME (0x1u << 6) /**< \brief (US_IDR) Framing Error Interrupt Disable */ +#define US_IDR_PARE (0x1u << 7) /**< \brief (US_IDR) Parity Error Interrupt Disable */ +#define US_IDR_TIMEOUT (0x1u << 8) /**< \brief (US_IDR) Time-out Interrupt Disable */ +#define US_IDR_TXEMPTY (0x1u << 9) /**< \brief (US_IDR) TXEMPTY Interrupt Disable */ +#define US_IDR_ITER (0x1u << 10) /**< \brief (US_IDR) Max number of Repetitions Reached Disable */ +#define US_IDR_UNRE (0x1u << 10) /**< \brief (US_IDR) SPI Underrun Error Disable */ +#define US_IDR_TXBUFE (0x1u << 11) /**< \brief (US_IDR) Buffer Empty Interrupt Disable */ +#define US_IDR_RXBUFF (0x1u << 12) /**< \brief (US_IDR) Buffer Full Interrupt Disable */ +#define US_IDR_NACK (0x1u << 13) /**< \brief (US_IDR) Non AcknowledgeInterrupt Disable */ +#define US_IDR_CTSIC (0x1u << 19) /**< \brief (US_IDR) Clear to Send Input Change Interrupt Disable */ +/* -------- US_IMR : (USART Offset: 0x0010) Interrupt Mask Register -------- */ +#define US_IMR_RXRDY (0x1u << 0) /**< \brief (US_IMR) RXRDY Interrupt Mask */ +#define US_IMR_TXRDY (0x1u << 1) /**< \brief (US_IMR) TXRDY Interrupt Mask */ +#define US_IMR_RXBRK (0x1u << 2) /**< \brief (US_IMR) Receiver Break Interrupt Mask */ +#define US_IMR_ENDRX (0x1u << 3) /**< \brief (US_IMR) End of Receive Transfer Interrupt Mask */ +#define US_IMR_ENDTX (0x1u << 4) /**< \brief (US_IMR) End of Transmit Interrupt Mask */ +#define US_IMR_OVRE (0x1u << 5) /**< \brief (US_IMR) Overrun Error Interrupt Mask */ +#define US_IMR_FRAME (0x1u << 6) /**< \brief (US_IMR) Framing Error Interrupt Mask */ +#define US_IMR_PARE (0x1u << 7) /**< \brief (US_IMR) Parity Error Interrupt Mask */ +#define US_IMR_TIMEOUT (0x1u << 8) /**< \brief (US_IMR) Time-out Interrupt Mask */ +#define US_IMR_TXEMPTY (0x1u << 9) /**< \brief (US_IMR) TXEMPTY Interrupt Mask */ +#define US_IMR_ITER (0x1u << 10) /**< \brief (US_IMR) Max number of Repetitions Reached Mask */ +#define US_IMR_UNRE (0x1u << 10) /**< \brief (US_IMR) SPI Underrun Error Mask */ +#define US_IMR_TXBUFE (0x1u << 11) /**< \brief (US_IMR) Buffer Empty Interrupt Mask */ +#define US_IMR_RXBUFF (0x1u << 12) /**< \brief (US_IMR) Buffer Full Interrupt Mask */ +#define US_IMR_NACK (0x1u << 13) /**< \brief (US_IMR) Non AcknowledgeInterrupt Mask */ +#define US_IMR_CTSIC (0x1u << 19) /**< \brief (US_IMR) Clear to Send Input Change Interrupt Mask */ +/* -------- US_CSR : (USART Offset: 0x0014) Channel Status Register -------- */ +#define US_CSR_RXRDY (0x1u << 0) /**< \brief (US_CSR) Receiver Ready */ +#define US_CSR_TXRDY (0x1u << 1) /**< \brief (US_CSR) Transmitter Ready */ +#define US_CSR_RXBRK (0x1u << 2) /**< \brief (US_CSR) Break Received/End of Break */ +#define US_CSR_ENDRX (0x1u << 3) /**< \brief (US_CSR) End of Receiver Transfer */ +#define US_CSR_ENDTX (0x1u << 4) /**< \brief (US_CSR) End of Transmitter Transfer */ +#define US_CSR_OVRE (0x1u << 5) /**< \brief (US_CSR) Overrun Error */ +#define US_CSR_FRAME (0x1u << 6) /**< \brief (US_CSR) Framing Error */ +#define US_CSR_PARE (0x1u << 7) /**< \brief (US_CSR) Parity Error */ +#define US_CSR_TIMEOUT (0x1u << 8) /**< \brief (US_CSR) Receiver Time-out */ +#define US_CSR_TXEMPTY (0x1u << 9) /**< \brief (US_CSR) Transmitter Empty */ +#define US_CSR_ITER (0x1u << 10) /**< \brief (US_CSR) Max number of Repetitions Reached */ +#define US_CSR_UNRE (0x1u << 10) /**< \brief (US_CSR) SPI Underrun Error */ +#define US_CSR_TXBUFE (0x1u << 11) /**< \brief (US_CSR) Transmission Buffer Empty */ +#define US_CSR_RXBUFF (0x1u << 12) /**< \brief (US_CSR) Reception Buffer Full */ +#define US_CSR_NACK (0x1u << 13) /**< \brief (US_CSR) Non AcknowledgeInterrupt */ +#define US_CSR_CTSIC (0x1u << 19) /**< \brief (US_CSR) Clear to Send Input Change Flag */ +#define US_CSR_CTS (0x1u << 23) /**< \brief (US_CSR) Image of CTS Input */ +/* -------- US_RHR : (USART Offset: 0x0018) Receiver Holding Register -------- */ +#define US_RHR_RXCHR_Pos 0 +#define US_RHR_RXCHR_Msk (0x1ffu << US_RHR_RXCHR_Pos) /**< \brief (US_RHR) Received Character */ +#define US_RHR_RXSYNH (0x1u << 15) /**< \brief (US_RHR) Received Sync */ +/* -------- US_THR : (USART Offset: 0x001C) Transmitter Holding Register -------- */ +#define US_THR_TXCHR_Pos 0 +#define US_THR_TXCHR_Msk (0x1ffu << US_THR_TXCHR_Pos) /**< \brief (US_THR) Character to be Transmitted */ +#define US_THR_TXCHR(value) ((US_THR_TXCHR_Msk & ((value) << US_THR_TXCHR_Pos))) +#define US_THR_TXSYNH (0x1u << 15) /**< \brief (US_THR) Sync Field to be transmitted */ +/* -------- US_BRGR : (USART Offset: 0x0020) Baud Rate Generator Register -------- */ +#define US_BRGR_CD_Pos 0 +#define US_BRGR_CD_Msk (0xffffu << US_BRGR_CD_Pos) /**< \brief (US_BRGR) Clock Divider */ +#define US_BRGR_CD(value) ((US_BRGR_CD_Msk & ((value) << US_BRGR_CD_Pos))) +#define US_BRGR_FP_Pos 16 +#define US_BRGR_FP_Msk (0x7u << US_BRGR_FP_Pos) /**< \brief (US_BRGR) Fractional Part */ +#define US_BRGR_FP(value) ((US_BRGR_FP_Msk & ((value) << US_BRGR_FP_Pos))) +/* -------- US_RTOR : (USART Offset: 0x0024) Receiver Time-out Register -------- */ +#define US_RTOR_TO_Pos 0 +#define US_RTOR_TO_Msk (0xffffu << US_RTOR_TO_Pos) /**< \brief (US_RTOR) Time-out Value */ +#define US_RTOR_TO(value) ((US_RTOR_TO_Msk & ((value) << US_RTOR_TO_Pos))) +/* -------- US_TTGR : (USART Offset: 0x0028) Transmitter Timeguard Register -------- */ +#define US_TTGR_TG_Pos 0 +#define US_TTGR_TG_Msk (0xffu << US_TTGR_TG_Pos) /**< \brief (US_TTGR) Timeguard Value */ +#define US_TTGR_TG(value) ((US_TTGR_TG_Msk & ((value) << US_TTGR_TG_Pos))) +/* -------- US_FIDI : (USART Offset: 0x0040) FI DI Ratio Register -------- */ +#define US_FIDI_FI_DI_RATIO_Pos 0 +#define US_FIDI_FI_DI_RATIO_Msk (0x7ffu << US_FIDI_FI_DI_RATIO_Pos) /**< \brief (US_FIDI) FI Over DI Ratio Value */ +#define US_FIDI_FI_DI_RATIO(value) ((US_FIDI_FI_DI_RATIO_Msk & ((value) << US_FIDI_FI_DI_RATIO_Pos))) +/* -------- US_NER : (USART Offset: 0x0044) Number of Errors Register -------- */ +#define US_NER_NB_ERRORS_Pos 0 +#define US_NER_NB_ERRORS_Msk (0xffu << US_NER_NB_ERRORS_Pos) /**< \brief (US_NER) Number of Errors */ +/* -------- US_IF : (USART Offset: 0x004C) IrDA Filter Register -------- */ +#define US_IF_IRDA_FILTER_Pos 0 +#define US_IF_IRDA_FILTER_Msk (0xffu << US_IF_IRDA_FILTER_Pos) /**< \brief (US_IF) IrDA Filter */ +#define US_IF_IRDA_FILTER(value) ((US_IF_IRDA_FILTER_Msk & ((value) << US_IF_IRDA_FILTER_Pos))) +/* -------- US_WPMR : (USART Offset: 0xE4) Write Protect Mode Register -------- */ +#define US_WPMR_WPEN (0x1u << 0) /**< \brief (US_WPMR) Write Protect Enable */ +#define US_WPMR_WPKEY_Pos 8 +#define US_WPMR_WPKEY_Msk (0xffffffu << US_WPMR_WPKEY_Pos) /**< \brief (US_WPMR) Write Protect KEY */ +#define US_WPMR_WPKEY(value) ((US_WPMR_WPKEY_Msk & ((value) << US_WPMR_WPKEY_Pos))) +/* -------- US_WPSR : (USART Offset: 0xE8) Write Protect Status Register -------- */ +#define US_WPSR_WPVS (0x1u << 0) /**< \brief (US_WPSR) Write Protect Violation Status */ +#define US_WPSR_WPVSRC_Pos 8 +#define US_WPSR_WPVSRC_Msk (0xffffu << US_WPSR_WPVSRC_Pos) /**< \brief (US_WPSR) Write Protect Violation Source */ +/* -------- US_RPR : (USART Offset: 0x100) Receive Pointer Register -------- */ +#define US_RPR_RXPTR_Pos 0 +#define US_RPR_RXPTR_Msk (0xffffffffu << US_RPR_RXPTR_Pos) /**< \brief (US_RPR) Receive Pointer Register */ +#define US_RPR_RXPTR(value) ((US_RPR_RXPTR_Msk & ((value) << US_RPR_RXPTR_Pos))) +/* -------- US_RCR : (USART Offset: 0x104) Receive Counter Register -------- */ +#define US_RCR_RXCTR_Pos 0 +#define US_RCR_RXCTR_Msk (0xffffu << US_RCR_RXCTR_Pos) /**< \brief (US_RCR) Receive Counter Register */ +#define US_RCR_RXCTR(value) ((US_RCR_RXCTR_Msk & ((value) << US_RCR_RXCTR_Pos))) +/* -------- US_TPR : (USART Offset: 0x108) Transmit Pointer Register -------- */ +#define US_TPR_TXPTR_Pos 0 +#define US_TPR_TXPTR_Msk (0xffffffffu << US_TPR_TXPTR_Pos) /**< \brief (US_TPR) Transmit Counter Register */ +#define US_TPR_TXPTR(value) ((US_TPR_TXPTR_Msk & ((value) << US_TPR_TXPTR_Pos))) +/* -------- US_TCR : (USART Offset: 0x10C) Transmit Counter Register -------- */ +#define US_TCR_TXCTR_Pos 0 +#define US_TCR_TXCTR_Msk (0xffffu << US_TCR_TXCTR_Pos) /**< \brief (US_TCR) Transmit Counter Register */ +#define US_TCR_TXCTR(value) ((US_TCR_TXCTR_Msk & ((value) << US_TCR_TXCTR_Pos))) +/* -------- US_RNPR : (USART Offset: 0x110) Receive Next Pointer Register -------- */ +#define US_RNPR_RXNPTR_Pos 0 +#define US_RNPR_RXNPTR_Msk (0xffffffffu << US_RNPR_RXNPTR_Pos) /**< \brief (US_RNPR) Receive Next Pointer */ +#define US_RNPR_RXNPTR(value) ((US_RNPR_RXNPTR_Msk & ((value) << US_RNPR_RXNPTR_Pos))) +/* -------- US_RNCR : (USART Offset: 0x114) Receive Next Counter Register -------- */ +#define US_RNCR_RXNCTR_Pos 0 +#define US_RNCR_RXNCTR_Msk (0xffffu << US_RNCR_RXNCTR_Pos) /**< \brief (US_RNCR) Receive Next Counter */ +#define US_RNCR_RXNCTR(value) ((US_RNCR_RXNCTR_Msk & ((value) << US_RNCR_RXNCTR_Pos))) +/* -------- US_TNPR : (USART Offset: 0x118) Transmit Next Pointer Register -------- */ +#define US_TNPR_TXNPTR_Pos 0 +#define US_TNPR_TXNPTR_Msk (0xffffffffu << US_TNPR_TXNPTR_Pos) /**< \brief (US_TNPR) Transmit Next Pointer */ +#define US_TNPR_TXNPTR(value) ((US_TNPR_TXNPTR_Msk & ((value) << US_TNPR_TXNPTR_Pos))) +/* -------- US_TNCR : (USART Offset: 0x11C) Transmit Next Counter Register -------- */ +#define US_TNCR_TXNCTR_Pos 0 +#define US_TNCR_TXNCTR_Msk (0xffffu << US_TNCR_TXNCTR_Pos) /**< \brief (US_TNCR) Transmit Counter Next */ +#define US_TNCR_TXNCTR(value) ((US_TNCR_TXNCTR_Msk & ((value) << US_TNCR_TXNCTR_Pos))) +/* -------- US_PTCR : (USART Offset: 0x120) Transfer Control Register -------- */ +#define US_PTCR_RXTEN (0x1u << 0) /**< \brief (US_PTCR) Receiver Transfer Enable */ +#define US_PTCR_RXTDIS (0x1u << 1) /**< \brief (US_PTCR) Receiver Transfer Disable */ +#define US_PTCR_TXTEN (0x1u << 8) /**< \brief (US_PTCR) Transmitter Transfer Enable */ +#define US_PTCR_TXTDIS (0x1u << 9) /**< \brief (US_PTCR) Transmitter Transfer Disable */ +/* -------- US_PTSR : (USART Offset: 0x124) Transfer Status Register -------- */ +#define US_PTSR_RXTEN (0x1u << 0) /**< \brief (US_PTSR) Receiver Transfer Enable */ +#define US_PTSR_TXTEN (0x1u << 8) /**< \brief (US_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3N_USART_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_wdt.h b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_wdt.h new file mode 100644 index 000000000..41b038831 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/component/component_wdt.h @@ -0,0 +1,72 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_WDT_COMPONENT_ +#define _SAM3N_WDT_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Watchdog Timer */ +/* ============================================================================= */ +/** \addtogroup SAM3N_WDT Watchdog Timer */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Wdt hardware registers */ +typedef struct { + WoReg WDT_CR; /**< \brief (Wdt Offset: 0x00) Control Register */ + RwReg WDT_MR; /**< \brief (Wdt Offset: 0x04) Mode Register */ + RoReg WDT_SR; /**< \brief (Wdt Offset: 0x08) Status Register */ +} Wdt; +#endif /* __ASSEMBLY__ */ +/* -------- WDT_CR : (WDT Offset: 0x00) Control Register -------- */ +#define WDT_CR_WDRSTT (0x1u << 0) /**< \brief (WDT_CR) Watchdog Restart */ +#define WDT_CR_KEY_Pos 24 +#define WDT_CR_KEY_Msk (0xffu << WDT_CR_KEY_Pos) /**< \brief (WDT_CR) Password */ +#define WDT_CR_KEY(value) ((WDT_CR_KEY_Msk & ((value) << WDT_CR_KEY_Pos))) +/* -------- WDT_MR : (WDT Offset: 0x04) Mode Register -------- */ +#define WDT_MR_WDV_Pos 0 +#define WDT_MR_WDV_Msk (0xfffu << WDT_MR_WDV_Pos) /**< \brief (WDT_MR) Watchdog Counter Value */ +#define WDT_MR_WDV(value) ((WDT_MR_WDV_Msk & ((value) << WDT_MR_WDV_Pos))) +#define WDT_MR_WDFIEN (0x1u << 12) /**< \brief (WDT_MR) Watchdog Fault Interrupt Enable */ +#define WDT_MR_WDRSTEN (0x1u << 13) /**< \brief (WDT_MR) Watchdog Reset Enable */ +#define WDT_MR_WDRPROC (0x1u << 14) /**< \brief (WDT_MR) Watchdog Reset Processor */ +#define WDT_MR_WDDIS (0x1u << 15) /**< \brief (WDT_MR) Watchdog Disable */ +#define WDT_MR_WDD_Pos 16 +#define WDT_MR_WDD_Msk (0xfffu << WDT_MR_WDD_Pos) /**< \brief (WDT_MR) Watchdog Delta Value */ +#define WDT_MR_WDD(value) ((WDT_MR_WDD_Msk & ((value) << WDT_MR_WDD_Pos))) +#define WDT_MR_WDDBGHLT (0x1u << 28) /**< \brief (WDT_MR) Watchdog Debug Halt */ +#define WDT_MR_WDIDLEHLT (0x1u << 29) /**< \brief (WDT_MR) Watchdog Idle Halt */ +/* -------- WDT_SR : (WDT Offset: 0x08) Status Register -------- */ +#define WDT_SR_WDUNF (0x1u << 0) /**< \brief (WDT_SR) Watchdog Underflow */ +#define WDT_SR_WDERR (0x1u << 1) /**< \brief (WDT_SR) Watchdog Error */ + +/*@}*/ + + +#endif /* _SAM3N_WDT_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_adc.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_adc.h new file mode 100644 index 000000000..d19255b9c --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_adc.h @@ -0,0 +1,96 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_ADC_INSTANCE_ +#define _SAM3N_ADC_INSTANCE_ + +/* ========== Register definition for ADC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_ADC_CR (0x40038000U) /**< \brief (ADC) Control Register */ +#define REG_ADC_MR (0x40038004U) /**< \brief (ADC) Mode Register */ +#define REG_ADC_SEQR1 (0x40038008U) /**< \brief (ADC) Channel Sequence Register 1 */ +#define REG_ADC_SEQR2 (0x4003800CU) /**< \brief (ADC) Channel Sequence Register 2 */ +#define REG_ADC_CHER (0x40038010U) /**< \brief (ADC) Channel Enable Register */ +#define REG_ADC_CHDR (0x40038014U) /**< \brief (ADC) Channel Disable Register */ +#define REG_ADC_CHSR (0x40038018U) /**< \brief (ADC) Channel Status Register */ +#define REG_ADC_LCDR (0x40038020U) /**< \brief (ADC) Last Converted Data Register */ +#define REG_ADC_IER (0x40038024U) /**< \brief (ADC) Interrupt Enable Register */ +#define REG_ADC_IDR (0x40038028U) /**< \brief (ADC) Interrupt Disable Register */ +#define REG_ADC_IMR (0x4003802CU) /**< \brief (ADC) Interrupt Mask Register */ +#define REG_ADC_ISR (0x40038030U) /**< \brief (ADC) Interrupt Status Register */ +#define REG_ADC_OVER (0x4003803CU) /**< \brief (ADC) Overrun Status Register */ +#define REG_ADC_EMR (0x40038040U) /**< \brief (ADC) Extended Mode Register */ +#define REG_ADC_CWR (0x40038044U) /**< \brief (ADC) Compare Window Register */ +#define REG_ADC_CDR (0x40038050U) /**< \brief (ADC) Channel Data Register */ +#define REG_ADC_TRGR (0x400380C0U) /**< \brief (ADC) Trigger Register */ +#define REG_ADC_WPMR (0x400380E4U) /**< \brief (ADC) Write Protect Mode Register */ +#define REG_ADC_WPSR (0x400380E8U) /**< \brief (ADC) Write Protect Status Register */ +#define REG_ADC_RPR (0x40038100U) /**< \brief (ADC) Receive Pointer Register */ +#define REG_ADC_RCR (0x40038104U) /**< \brief (ADC) Receive Counter Register */ +#define REG_ADC_TPR (0x40038108U) /**< \brief (ADC) Transmit Pointer Register */ +#define REG_ADC_TCR (0x4003810CU) /**< \brief (ADC) Transmit Counter Register */ +#define REG_ADC_RNPR (0x40038110U) /**< \brief (ADC) Receive Next Pointer Register */ +#define REG_ADC_RNCR (0x40038114U) /**< \brief (ADC) Receive Next Counter Register */ +#define REG_ADC_TNPR (0x40038118U) /**< \brief (ADC) Transmit Next Pointer Register */ +#define REG_ADC_TNCR (0x4003811CU) /**< \brief (ADC) Transmit Next Counter Register */ +#define REG_ADC_PTCR (0x40038120U) /**< \brief (ADC) Transfer Control Register */ +#define REG_ADC_PTSR (0x40038124U) /**< \brief (ADC) Transfer Status Register */ +#else +#define REG_ADC_CR (*(WoReg*)0x40038000U) /**< \brief (ADC) Control Register */ +#define REG_ADC_MR (*(RwReg*)0x40038004U) /**< \brief (ADC) Mode Register */ +#define REG_ADC_SEQR1 (*(RwReg*)0x40038008U) /**< \brief (ADC) Channel Sequence Register 1 */ +#define REG_ADC_SEQR2 (*(RwReg*)0x4003800CU) /**< \brief (ADC) Channel Sequence Register 2 */ +#define REG_ADC_CHER (*(WoReg*)0x40038010U) /**< \brief (ADC) Channel Enable Register */ +#define REG_ADC_CHDR (*(WoReg*)0x40038014U) /**< \brief (ADC) Channel Disable Register */ +#define REG_ADC_CHSR (*(RoReg*)0x40038018U) /**< \brief (ADC) Channel Status Register */ +#define REG_ADC_LCDR (*(RoReg*)0x40038020U) /**< \brief (ADC) Last Converted Data Register */ +#define REG_ADC_IER (*(WoReg*)0x40038024U) /**< \brief (ADC) Interrupt Enable Register */ +#define REG_ADC_IDR (*(WoReg*)0x40038028U) /**< \brief (ADC) Interrupt Disable Register */ +#define REG_ADC_IMR (*(RoReg*)0x4003802CU) /**< \brief (ADC) Interrupt Mask Register */ +#define REG_ADC_ISR (*(RoReg*)0x40038030U) /**< \brief (ADC) Interrupt Status Register */ +#define REG_ADC_OVER (*(RoReg*)0x4003803CU) /**< \brief (ADC) Overrun Status Register */ +#define REG_ADC_EMR (*(RwReg*)0x40038040U) /**< \brief (ADC) Extended Mode Register */ +#define REG_ADC_CWR (*(RwReg*)0x40038044U) /**< \brief (ADC) Compare Window Register */ +#define REG_ADC_CDR (*(RoReg*)0x40038050U) /**< \brief (ADC) Channel Data Register */ +#define REG_ADC_TRGR (*(RwReg*)0x400380C0U) /**< \brief (ADC) Trigger Register */ +#define REG_ADC_WPMR (*(RwReg*)0x400380E4U) /**< \brief (ADC) Write Protect Mode Register */ +#define REG_ADC_WPSR (*(RoReg*)0x400380E8U) /**< \brief (ADC) Write Protect Status Register */ +#define REG_ADC_RPR (*(RwReg*)0x40038100U) /**< \brief (ADC) Receive Pointer Register */ +#define REG_ADC_RCR (*(RwReg*)0x40038104U) /**< \brief (ADC) Receive Counter Register */ +#define REG_ADC_TPR (*(RwReg*)0x40038108U) /**< \brief (ADC) Transmit Pointer Register */ +#define REG_ADC_TCR (*(RwReg*)0x4003810CU) /**< \brief (ADC) Transmit Counter Register */ +#define REG_ADC_RNPR (*(RwReg*)0x40038110U) /**< \brief (ADC) Receive Next Pointer Register */ +#define REG_ADC_RNCR (*(RwReg*)0x40038114U) /**< \brief (ADC) Receive Next Counter Register */ +#define REG_ADC_TNPR (*(RwReg*)0x40038118U) /**< \brief (ADC) Transmit Next Pointer Register */ +#define REG_ADC_TNCR (*(RwReg*)0x4003811CU) /**< \brief (ADC) Transmit Next Counter Register */ +#define REG_ADC_PTCR (*(WoReg*)0x40038120U) /**< \brief (ADC) Transfer Control Register */ +#define REG_ADC_PTSR (*(RoReg*)0x40038124U) /**< \brief (ADC) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_ADC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_chipid.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_chipid.h new file mode 100644 index 000000000..8c6c112c3 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_chipid.h @@ -0,0 +1,42 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_CHIPID_INSTANCE_ +#define _SAM3N_CHIPID_INSTANCE_ + +/* ========== Register definition for CHIPID peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_CHIPID_CIDR (0x400E0740U) /**< \brief (CHIPID) Chip ID Register */ +#define REG_CHIPID_EXID (0x400E0744U) /**< \brief (CHIPID) Chip ID Extension Register */ +#else +#define REG_CHIPID_CIDR (*(RoReg*)0x400E0740U) /**< \brief (CHIPID) Chip ID Register */ +#define REG_CHIPID_EXID (*(RoReg*)0x400E0744U) /**< \brief (CHIPID) Chip ID Extension Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_CHIPID_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_dacc.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_dacc.h new file mode 100644 index 000000000..0fac96ac3 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_dacc.h @@ -0,0 +1,76 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_DACC_INSTANCE_ +#define _SAM3N_DACC_INSTANCE_ + +/* ========== Register definition for DACC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_DACC_CR (0x4003C000U) /**< \brief (DACC) Control Register */ +#define REG_DACC_MR (0x4003C004U) /**< \brief (DACC) Mode Register */ +#define REG_DACC_CDR (0x4003C008U) /**< \brief (DACC) Conversion Data Register */ +#define REG_DACC_IER (0x4003C00CU) /**< \brief (DACC) Interrupt Enable Register */ +#define REG_DACC_IDR (0x4003C010U) /**< \brief (DACC) Interrupt Disable Register */ +#define REG_DACC_IMR (0x4003C014U) /**< \brief (DACC) Interrupt Mask Register */ +#define REG_DACC_ISR (0x4003C018U) /**< \brief (DACC) Interrupt Status Register */ +#define REG_DACC_WPMR (0x4003C0E4U) /**< \brief (DACC) Write Protect Mode Register */ +#define REG_DACC_WPSR (0x4003C0E8U) /**< \brief (DACC) Write Protect Status Register */ +#define REG_DACC_RPR (0x4003C100U) /**< \brief (DACC) Receive Pointer Register */ +#define REG_DACC_RCR (0x4003C104U) /**< \brief (DACC) Receive Counter Register */ +#define REG_DACC_TPR (0x4003C108U) /**< \brief (DACC) Transmit Pointer Register */ +#define REG_DACC_TCR (0x4003C10CU) /**< \brief (DACC) Transmit Counter Register */ +#define REG_DACC_RNPR (0x4003C110U) /**< \brief (DACC) Receive Next Pointer Register */ +#define REG_DACC_RNCR (0x4003C114U) /**< \brief (DACC) Receive Next Counter Register */ +#define REG_DACC_TNPR (0x4003C118U) /**< \brief (DACC) Transmit Next Pointer Register */ +#define REG_DACC_TNCR (0x4003C11CU) /**< \brief (DACC) Transmit Next Counter Register */ +#define REG_DACC_PTCR (0x4003C120U) /**< \brief (DACC) Transfer Control Register */ +#define REG_DACC_PTSR (0x4003C124U) /**< \brief (DACC) Transfer Status Register */ +#else +#define REG_DACC_CR (*(WoReg*)0x4003C000U) /**< \brief (DACC) Control Register */ +#define REG_DACC_MR (*(RwReg*)0x4003C004U) /**< \brief (DACC) Mode Register */ +#define REG_DACC_CDR (*(WoReg*)0x4003C008U) /**< \brief (DACC) Conversion Data Register */ +#define REG_DACC_IER (*(WoReg*)0x4003C00CU) /**< \brief (DACC) Interrupt Enable Register */ +#define REG_DACC_IDR (*(WoReg*)0x4003C010U) /**< \brief (DACC) Interrupt Disable Register */ +#define REG_DACC_IMR (*(RoReg*)0x4003C014U) /**< \brief (DACC) Interrupt Mask Register */ +#define REG_DACC_ISR (*(RoReg*)0x4003C018U) /**< \brief (DACC) Interrupt Status Register */ +#define REG_DACC_WPMR (*(RwReg*)0x4003C0E4U) /**< \brief (DACC) Write Protect Mode Register */ +#define REG_DACC_WPSR (*(RoReg*)0x4003C0E8U) /**< \brief (DACC) Write Protect Status Register */ +#define REG_DACC_RPR (*(RwReg*)0x4003C100U) /**< \brief (DACC) Receive Pointer Register */ +#define REG_DACC_RCR (*(RwReg*)0x4003C104U) /**< \brief (DACC) Receive Counter Register */ +#define REG_DACC_TPR (*(RwReg*)0x4003C108U) /**< \brief (DACC) Transmit Pointer Register */ +#define REG_DACC_TCR (*(RwReg*)0x4003C10CU) /**< \brief (DACC) Transmit Counter Register */ +#define REG_DACC_RNPR (*(RwReg*)0x4003C110U) /**< \brief (DACC) Receive Next Pointer Register */ +#define REG_DACC_RNCR (*(RwReg*)0x4003C114U) /**< \brief (DACC) Receive Next Counter Register */ +#define REG_DACC_TNPR (*(RwReg*)0x4003C118U) /**< \brief (DACC) Transmit Next Pointer Register */ +#define REG_DACC_TNCR (*(RwReg*)0x4003C11CU) /**< \brief (DACC) Transmit Next Counter Register */ +#define REG_DACC_PTCR (*(WoReg*)0x4003C120U) /**< \brief (DACC) Transfer Control Register */ +#define REG_DACC_PTSR (*(RoReg*)0x4003C124U) /**< \brief (DACC) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_DACC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_efc.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_efc.h new file mode 100644 index 000000000..88d6a66ff --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_efc.h @@ -0,0 +1,46 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_EFC_INSTANCE_ +#define _SAM3N_EFC_INSTANCE_ + +/* ========== Register definition for EFC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_EFC_FMR (0x400E0A00U) /**< \brief (EFC) EEFC Flash Mode Register */ +#define REG_EFC_FCR (0x400E0A04U) /**< \brief (EFC) EEFC Flash Command Register */ +#define REG_EFC_FSR (0x400E0A08U) /**< \brief (EFC) EEFC Flash Status Register */ +#define REG_EFC_FRR (0x400E0A0CU) /**< \brief (EFC) EEFC Flash Result Register */ +#else +#define REG_EFC_FMR (*(RwReg*)0x400E0A00U) /**< \brief (EFC) EEFC Flash Mode Register */ +#define REG_EFC_FCR (*(WoReg*)0x400E0A04U) /**< \brief (EFC) EEFC Flash Command Register */ +#define REG_EFC_FSR (*(RoReg*)0x400E0A08U) /**< \brief (EFC) EEFC Flash Status Register */ +#define REG_EFC_FRR (*(RoReg*)0x400E0A0CU) /**< \brief (EFC) EEFC Flash Result Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_EFC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_gpbr.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_gpbr.h new file mode 100644 index 000000000..e872de813 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_gpbr.h @@ -0,0 +1,40 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_GPBR_INSTANCE_ +#define _SAM3N_GPBR_INSTANCE_ + +/* ========== Register definition for GPBR peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_GPBR_GPBR (0x400E1490U) /**< \brief (GPBR) General Purpose Backup Register */ +#else +#define REG_GPBR_GPBR (*(RwReg*)0x400E1490U) /**< \brief (GPBR) General Purpose Backup Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_GPBR_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_matrix.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_matrix.h new file mode 100644 index 000000000..fee8e9ebc --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_matrix.h @@ -0,0 +1,56 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_MATRIX_INSTANCE_ +#define _SAM3N_MATRIX_INSTANCE_ + +/* ========== Register definition for MATRIX peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_MATRIX_MCFG (0x400E0200U) /**< \brief (MATRIX) Master Configuration Register */ +#define REG_MATRIX_SCFG (0x400E0240U) /**< \brief (MATRIX) Slave Configuration Register */ +#define REG_MATRIX_PRAS0 (0x400E0280U) /**< \brief (MATRIX) Priority Register A for Slave 0 */ +#define REG_MATRIX_PRAS1 (0x400E0288U) /**< \brief (MATRIX) Priority Register A for Slave 1 */ +#define REG_MATRIX_PRAS2 (0x400E0290U) /**< \brief (MATRIX) Priority Register A for Slave 2 */ +#define REG_MATRIX_PRAS3 (0x400E0298U) /**< \brief (MATRIX) Priority Register A for Slave 3 */ +#define REG_CCFG_SYSIO (0x400E0314U) /**< \brief (MATRIX) System I/O Configuration register */ +#define REG_MATRIX_WPMR (0x400E03E4U) /**< \brief (MATRIX) Write Protect Mode Register */ +#define REG_MATRIX_WPSR (0x400E03E8U) /**< \brief (MATRIX) Write Protect Status Register */ +#else +#define REG_MATRIX_MCFG (*(RwReg*)0x400E0200U) /**< \brief (MATRIX) Master Configuration Register */ +#define REG_MATRIX_SCFG (*(RwReg*)0x400E0240U) /**< \brief (MATRIX) Slave Configuration Register */ +#define REG_MATRIX_PRAS0 (*(RwReg*)0x400E0280U) /**< \brief (MATRIX) Priority Register A for Slave 0 */ +#define REG_MATRIX_PRAS1 (*(RwReg*)0x400E0288U) /**< \brief (MATRIX) Priority Register A for Slave 1 */ +#define REG_MATRIX_PRAS2 (*(RwReg*)0x400E0290U) /**< \brief (MATRIX) Priority Register A for Slave 2 */ +#define REG_MATRIX_PRAS3 (*(RwReg*)0x400E0298U) /**< \brief (MATRIX) Priority Register A for Slave 3 */ +#define REG_CCFG_SYSIO (*(RwReg*)0x400E0314U) /**< \brief (MATRIX) System I/O Configuration register */ +#define REG_MATRIX_WPMR (*(RwReg*)0x400E03E4U) /**< \brief (MATRIX) Write Protect Mode Register */ +#define REG_MATRIX_WPSR (*(RoReg*)0x400E03E8U) /**< \brief (MATRIX) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_MATRIX_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_pioa.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_pioa.h new file mode 100644 index 000000000..484e6996c --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_pioa.h @@ -0,0 +1,132 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_PIOA_INSTANCE_ +#define _SAM3N_PIOA_INSTANCE_ + +/* ========== Register definition for PIOA peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PIOA_PER (0x400E0E00U) /**< \brief (PIOA) PIO Enable Register */ +#define REG_PIOA_PDR (0x400E0E04U) /**< \brief (PIOA) PIO Disable Register */ +#define REG_PIOA_PSR (0x400E0E08U) /**< \brief (PIOA) PIO Status Register */ +#define REG_PIOA_OER (0x400E0E10U) /**< \brief (PIOA) Output Enable Register */ +#define REG_PIOA_ODR (0x400E0E14U) /**< \brief (PIOA) Output Disable Register */ +#define REG_PIOA_OSR (0x400E0E18U) /**< \brief (PIOA) Output Status Register */ +#define REG_PIOA_IFER (0x400E0E20U) /**< \brief (PIOA) Glitch Input Filter Enable Register */ +#define REG_PIOA_IFDR (0x400E0E24U) /**< \brief (PIOA) Glitch Input Filter Disable Register */ +#define REG_PIOA_IFSR (0x400E0E28U) /**< \brief (PIOA) Glitch Input Filter Status Register */ +#define REG_PIOA_SODR (0x400E0E30U) /**< \brief (PIOA) Set Output Data Register */ +#define REG_PIOA_CODR (0x400E0E34U) /**< \brief (PIOA) Clear Output Data Register */ +#define REG_PIOA_ODSR (0x400E0E38U) /**< \brief (PIOA) Output Data Status Register */ +#define REG_PIOA_PDSR (0x400E0E3CU) /**< \brief (PIOA) Pin Data Status Register */ +#define REG_PIOA_IER (0x400E0E40U) /**< \brief (PIOA) Interrupt Enable Register */ +#define REG_PIOA_IDR (0x400E0E44U) /**< \brief (PIOA) Interrupt Disable Register */ +#define REG_PIOA_IMR (0x400E0E48U) /**< \brief (PIOA) Interrupt Mask Register */ +#define REG_PIOA_ISR (0x400E0E4CU) /**< \brief (PIOA) Interrupt Status Register */ +#define REG_PIOA_MDER (0x400E0E50U) /**< \brief (PIOA) Multi-driver Enable Register */ +#define REG_PIOA_MDDR (0x400E0E54U) /**< \brief (PIOA) Multi-driver Disable Register */ +#define REG_PIOA_MDSR (0x400E0E58U) /**< \brief (PIOA) Multi-driver Status Register */ +#define REG_PIOA_PUDR (0x400E0E60U) /**< \brief (PIOA) Pull-up Disable Register */ +#define REG_PIOA_PUER (0x400E0E64U) /**< \brief (PIOA) Pull-up Enable Register */ +#define REG_PIOA_PUSR (0x400E0E68U) /**< \brief (PIOA) Pad Pull-up Status Register */ +#define REG_PIOA_ABCDSR (0x400E0E70U) /**< \brief (PIOA) Peripheral Select Register */ +#define REG_PIOA_IFSCDR (0x400E0E80U) /**< \brief (PIOA) Input Filter Slow Clock Disable Register */ +#define REG_PIOA_IFSCER (0x400E0E84U) /**< \brief (PIOA) Input Filter Slow Clock Enable Register */ +#define REG_PIOA_IFSCSR (0x400E0E88U) /**< \brief (PIOA) Input Filter Slow Clock Status Register */ +#define REG_PIOA_SCDR (0x400E0E8CU) /**< \brief (PIOA) Slow Clock Divider Debouncing Register */ +#define REG_PIOA_PPDDR (0x400E0E90U) /**< \brief (PIOA) Pad Pull-down Disable Register */ +#define REG_PIOA_PPDER (0x400E0E94U) /**< \brief (PIOA) Pad Pull-down Enable Register */ +#define REG_PIOA_PPDSR (0x400E0E98U) /**< \brief (PIOA) Pad Pull-down Status Register */ +#define REG_PIOA_OWER (0x400E0EA0U) /**< \brief (PIOA) Output Write Enable */ +#define REG_PIOA_OWDR (0x400E0EA4U) /**< \brief (PIOA) Output Write Disable */ +#define REG_PIOA_OWSR (0x400E0EA8U) /**< \brief (PIOA) Output Write Status Register */ +#define REG_PIOA_AIMER (0x400E0EB0U) /**< \brief (PIOA) Additional Interrupt Modes Enable Register */ +#define REG_PIOA_AIMDR (0x400E0EB4U) /**< \brief (PIOA) Additional Interrupt Modes Disables Register */ +#define REG_PIOA_AIMMR (0x400E0EB8U) /**< \brief (PIOA) Additional Interrupt Modes Mask Register */ +#define REG_PIOA_ESR (0x400E0EC0U) /**< \brief (PIOA) Edge Select Register */ +#define REG_PIOA_LSR (0x400E0EC4U) /**< \brief (PIOA) Level Select Register */ +#define REG_PIOA_ELSR (0x400E0EC8U) /**< \brief (PIOA) Edge/Level Status Register */ +#define REG_PIOA_FELLSR (0x400E0ED0U) /**< \brief (PIOA) Falling Edge/Low Level Select Register */ +#define REG_PIOA_REHLSR (0x400E0ED4U) /**< \brief (PIOA) Rising Edge/ High Level Select Register */ +#define REG_PIOA_FRLHSR (0x400E0ED8U) /**< \brief (PIOA) Fall/Rise - Low/High Status Register */ +#define REG_PIOA_LOCKSR (0x400E0EE0U) /**< \brief (PIOA) Lock Status */ +#define REG_PIOA_WPMR (0x400E0EE4U) /**< \brief (PIOA) Write Protect Mode Register */ +#define REG_PIOA_WPSR (0x400E0EE8U) /**< \brief (PIOA) Write Protect Status Register */ +#define REG_PIOA_SCHMITT (0x400E0F00U) /**< \brief (PIOA) Schmitt Trigger Register */ +#else +#define REG_PIOA_PER (*(WoReg*)0x400E0E00U) /**< \brief (PIOA) PIO Enable Register */ +#define REG_PIOA_PDR (*(WoReg*)0x400E0E04U) /**< \brief (PIOA) PIO Disable Register */ +#define REG_PIOA_PSR (*(RoReg*)0x400E0E08U) /**< \brief (PIOA) PIO Status Register */ +#define REG_PIOA_OER (*(WoReg*)0x400E0E10U) /**< \brief (PIOA) Output Enable Register */ +#define REG_PIOA_ODR (*(WoReg*)0x400E0E14U) /**< \brief (PIOA) Output Disable Register */ +#define REG_PIOA_OSR (*(RoReg*)0x400E0E18U) /**< \brief (PIOA) Output Status Register */ +#define REG_PIOA_IFER (*(WoReg*)0x400E0E20U) /**< \brief (PIOA) Glitch Input Filter Enable Register */ +#define REG_PIOA_IFDR (*(WoReg*)0x400E0E24U) /**< \brief (PIOA) Glitch Input Filter Disable Register */ +#define REG_PIOA_IFSR (*(RoReg*)0x400E0E28U) /**< \brief (PIOA) Glitch Input Filter Status Register */ +#define REG_PIOA_SODR (*(WoReg*)0x400E0E30U) /**< \brief (PIOA) Set Output Data Register */ +#define REG_PIOA_CODR (*(WoReg*)0x400E0E34U) /**< \brief (PIOA) Clear Output Data Register */ +#define REG_PIOA_ODSR (*(RwReg*)0x400E0E38U) /**< \brief (PIOA) Output Data Status Register */ +#define REG_PIOA_PDSR (*(RoReg*)0x400E0E3CU) /**< \brief (PIOA) Pin Data Status Register */ +#define REG_PIOA_IER (*(WoReg*)0x400E0E40U) /**< \brief (PIOA) Interrupt Enable Register */ +#define REG_PIOA_IDR (*(WoReg*)0x400E0E44U) /**< \brief (PIOA) Interrupt Disable Register */ +#define REG_PIOA_IMR (*(RoReg*)0x400E0E48U) /**< \brief (PIOA) Interrupt Mask Register */ +#define REG_PIOA_ISR (*(RoReg*)0x400E0E4CU) /**< \brief (PIOA) Interrupt Status Register */ +#define REG_PIOA_MDER (*(WoReg*)0x400E0E50U) /**< \brief (PIOA) Multi-driver Enable Register */ +#define REG_PIOA_MDDR (*(WoReg*)0x400E0E54U) /**< \brief (PIOA) Multi-driver Disable Register */ +#define REG_PIOA_MDSR (*(RoReg*)0x400E0E58U) /**< \brief (PIOA) Multi-driver Status Register */ +#define REG_PIOA_PUDR (*(WoReg*)0x400E0E60U) /**< \brief (PIOA) Pull-up Disable Register */ +#define REG_PIOA_PUER (*(WoReg*)0x400E0E64U) /**< \brief (PIOA) Pull-up Enable Register */ +#define REG_PIOA_PUSR (*(RoReg*)0x400E0E68U) /**< \brief (PIOA) Pad Pull-up Status Register */ +#define REG_PIOA_ABCDSR (*(RwReg*)0x400E0E70U) /**< \brief (PIOA) Peripheral Select Register */ +#define REG_PIOA_IFSCDR (*(WoReg*)0x400E0E80U) /**< \brief (PIOA) Input Filter Slow Clock Disable Register */ +#define REG_PIOA_IFSCER (*(WoReg*)0x400E0E84U) /**< \brief (PIOA) Input Filter Slow Clock Enable Register */ +#define REG_PIOA_IFSCSR (*(RoReg*)0x400E0E88U) /**< \brief (PIOA) Input Filter Slow Clock Status Register */ +#define REG_PIOA_SCDR (*(RwReg*)0x400E0E8CU) /**< \brief (PIOA) Slow Clock Divider Debouncing Register */ +#define REG_PIOA_PPDDR (*(WoReg*)0x400E0E90U) /**< \brief (PIOA) Pad Pull-down Disable Register */ +#define REG_PIOA_PPDER (*(WoReg*)0x400E0E94U) /**< \brief (PIOA) Pad Pull-down Enable Register */ +#define REG_PIOA_PPDSR (*(RoReg*)0x400E0E98U) /**< \brief (PIOA) Pad Pull-down Status Register */ +#define REG_PIOA_OWER (*(WoReg*)0x400E0EA0U) /**< \brief (PIOA) Output Write Enable */ +#define REG_PIOA_OWDR (*(WoReg*)0x400E0EA4U) /**< \brief (PIOA) Output Write Disable */ +#define REG_PIOA_OWSR (*(RoReg*)0x400E0EA8U) /**< \brief (PIOA) Output Write Status Register */ +#define REG_PIOA_AIMER (*(WoReg*)0x400E0EB0U) /**< \brief (PIOA) Additional Interrupt Modes Enable Register */ +#define REG_PIOA_AIMDR (*(WoReg*)0x400E0EB4U) /**< \brief (PIOA) Additional Interrupt Modes Disables Register */ +#define REG_PIOA_AIMMR (*(RoReg*)0x400E0EB8U) /**< \brief (PIOA) Additional Interrupt Modes Mask Register */ +#define REG_PIOA_ESR (*(WoReg*)0x400E0EC0U) /**< \brief (PIOA) Edge Select Register */ +#define REG_PIOA_LSR (*(WoReg*)0x400E0EC4U) /**< \brief (PIOA) Level Select Register */ +#define REG_PIOA_ELSR (*(RoReg*)0x400E0EC8U) /**< \brief (PIOA) Edge/Level Status Register */ +#define REG_PIOA_FELLSR (*(WoReg*)0x400E0ED0U) /**< \brief (PIOA) Falling Edge/Low Level Select Register */ +#define REG_PIOA_REHLSR (*(WoReg*)0x400E0ED4U) /**< \brief (PIOA) Rising Edge/ High Level Select Register */ +#define REG_PIOA_FRLHSR (*(RoReg*)0x400E0ED8U) /**< \brief (PIOA) Fall/Rise - Low/High Status Register */ +#define REG_PIOA_LOCKSR (*(RoReg*)0x400E0EE0U) /**< \brief (PIOA) Lock Status */ +#define REG_PIOA_WPMR (*(RwReg*)0x400E0EE4U) /**< \brief (PIOA) Write Protect Mode Register */ +#define REG_PIOA_WPSR (*(RoReg*)0x400E0EE8U) /**< \brief (PIOA) Write Protect Status Register */ +#define REG_PIOA_SCHMITT (*(RwReg*)0x400E0F00U) /**< \brief (PIOA) Schmitt Trigger Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_PIOA_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_piob.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_piob.h new file mode 100644 index 000000000..fb87acb2e --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_piob.h @@ -0,0 +1,132 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_PIOB_INSTANCE_ +#define _SAM3N_PIOB_INSTANCE_ + +/* ========== Register definition for PIOB peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PIOB_PER (0x400E1000U) /**< \brief (PIOB) PIO Enable Register */ +#define REG_PIOB_PDR (0x400E1004U) /**< \brief (PIOB) PIO Disable Register */ +#define REG_PIOB_PSR (0x400E1008U) /**< \brief (PIOB) PIO Status Register */ +#define REG_PIOB_OER (0x400E1010U) /**< \brief (PIOB) Output Enable Register */ +#define REG_PIOB_ODR (0x400E1014U) /**< \brief (PIOB) Output Disable Register */ +#define REG_PIOB_OSR (0x400E1018U) /**< \brief (PIOB) Output Status Register */ +#define REG_PIOB_IFER (0x400E1020U) /**< \brief (PIOB) Glitch Input Filter Enable Register */ +#define REG_PIOB_IFDR (0x400E1024U) /**< \brief (PIOB) Glitch Input Filter Disable Register */ +#define REG_PIOB_IFSR (0x400E1028U) /**< \brief (PIOB) Glitch Input Filter Status Register */ +#define REG_PIOB_SODR (0x400E1030U) /**< \brief (PIOB) Set Output Data Register */ +#define REG_PIOB_CODR (0x400E1034U) /**< \brief (PIOB) Clear Output Data Register */ +#define REG_PIOB_ODSR (0x400E1038U) /**< \brief (PIOB) Output Data Status Register */ +#define REG_PIOB_PDSR (0x400E103CU) /**< \brief (PIOB) Pin Data Status Register */ +#define REG_PIOB_IER (0x400E1040U) /**< \brief (PIOB) Interrupt Enable Register */ +#define REG_PIOB_IDR (0x400E1044U) /**< \brief (PIOB) Interrupt Disable Register */ +#define REG_PIOB_IMR (0x400E1048U) /**< \brief (PIOB) Interrupt Mask Register */ +#define REG_PIOB_ISR (0x400E104CU) /**< \brief (PIOB) Interrupt Status Register */ +#define REG_PIOB_MDER (0x400E1050U) /**< \brief (PIOB) Multi-driver Enable Register */ +#define REG_PIOB_MDDR (0x400E1054U) /**< \brief (PIOB) Multi-driver Disable Register */ +#define REG_PIOB_MDSR (0x400E1058U) /**< \brief (PIOB) Multi-driver Status Register */ +#define REG_PIOB_PUDR (0x400E1060U) /**< \brief (PIOB) Pull-up Disable Register */ +#define REG_PIOB_PUER (0x400E1064U) /**< \brief (PIOB) Pull-up Enable Register */ +#define REG_PIOB_PUSR (0x400E1068U) /**< \brief (PIOB) Pad Pull-up Status Register */ +#define REG_PIOB_ABCDSR (0x400E1070U) /**< \brief (PIOB) Peripheral Select Register */ +#define REG_PIOB_IFSCDR (0x400E1080U) /**< \brief (PIOB) Input Filter Slow Clock Disable Register */ +#define REG_PIOB_IFSCER (0x400E1084U) /**< \brief (PIOB) Input Filter Slow Clock Enable Register */ +#define REG_PIOB_IFSCSR (0x400E1088U) /**< \brief (PIOB) Input Filter Slow Clock Status Register */ +#define REG_PIOB_SCDR (0x400E108CU) /**< \brief (PIOB) Slow Clock Divider Debouncing Register */ +#define REG_PIOB_PPDDR (0x400E1090U) /**< \brief (PIOB) Pad Pull-down Disable Register */ +#define REG_PIOB_PPDER (0x400E1094U) /**< \brief (PIOB) Pad Pull-down Enable Register */ +#define REG_PIOB_PPDSR (0x400E1098U) /**< \brief (PIOB) Pad Pull-down Status Register */ +#define REG_PIOB_OWER (0x400E10A0U) /**< \brief (PIOB) Output Write Enable */ +#define REG_PIOB_OWDR (0x400E10A4U) /**< \brief (PIOB) Output Write Disable */ +#define REG_PIOB_OWSR (0x400E10A8U) /**< \brief (PIOB) Output Write Status Register */ +#define REG_PIOB_AIMER (0x400E10B0U) /**< \brief (PIOB) Additional Interrupt Modes Enable Register */ +#define REG_PIOB_AIMDR (0x400E10B4U) /**< \brief (PIOB) Additional Interrupt Modes Disables Register */ +#define REG_PIOB_AIMMR (0x400E10B8U) /**< \brief (PIOB) Additional Interrupt Modes Mask Register */ +#define REG_PIOB_ESR (0x400E10C0U) /**< \brief (PIOB) Edge Select Register */ +#define REG_PIOB_LSR (0x400E10C4U) /**< \brief (PIOB) Level Select Register */ +#define REG_PIOB_ELSR (0x400E10C8U) /**< \brief (PIOB) Edge/Level Status Register */ +#define REG_PIOB_FELLSR (0x400E10D0U) /**< \brief (PIOB) Falling Edge/Low Level Select Register */ +#define REG_PIOB_REHLSR (0x400E10D4U) /**< \brief (PIOB) Rising Edge/ High Level Select Register */ +#define REG_PIOB_FRLHSR (0x400E10D8U) /**< \brief (PIOB) Fall/Rise - Low/High Status Register */ +#define REG_PIOB_LOCKSR (0x400E10E0U) /**< \brief (PIOB) Lock Status */ +#define REG_PIOB_WPMR (0x400E10E4U) /**< \brief (PIOB) Write Protect Mode Register */ +#define REG_PIOB_WPSR (0x400E10E8U) /**< \brief (PIOB) Write Protect Status Register */ +#define REG_PIOB_SCHMITT (0x400E1100U) /**< \brief (PIOB) Schmitt Trigger Register */ +#else +#define REG_PIOB_PER (*(WoReg*)0x400E1000U) /**< \brief (PIOB) PIO Enable Register */ +#define REG_PIOB_PDR (*(WoReg*)0x400E1004U) /**< \brief (PIOB) PIO Disable Register */ +#define REG_PIOB_PSR (*(RoReg*)0x400E1008U) /**< \brief (PIOB) PIO Status Register */ +#define REG_PIOB_OER (*(WoReg*)0x400E1010U) /**< \brief (PIOB) Output Enable Register */ +#define REG_PIOB_ODR (*(WoReg*)0x400E1014U) /**< \brief (PIOB) Output Disable Register */ +#define REG_PIOB_OSR (*(RoReg*)0x400E1018U) /**< \brief (PIOB) Output Status Register */ +#define REG_PIOB_IFER (*(WoReg*)0x400E1020U) /**< \brief (PIOB) Glitch Input Filter Enable Register */ +#define REG_PIOB_IFDR (*(WoReg*)0x400E1024U) /**< \brief (PIOB) Glitch Input Filter Disable Register */ +#define REG_PIOB_IFSR (*(RoReg*)0x400E1028U) /**< \brief (PIOB) Glitch Input Filter Status Register */ +#define REG_PIOB_SODR (*(WoReg*)0x400E1030U) /**< \brief (PIOB) Set Output Data Register */ +#define REG_PIOB_CODR (*(WoReg*)0x400E1034U) /**< \brief (PIOB) Clear Output Data Register */ +#define REG_PIOB_ODSR (*(RwReg*)0x400E1038U) /**< \brief (PIOB) Output Data Status Register */ +#define REG_PIOB_PDSR (*(RoReg*)0x400E103CU) /**< \brief (PIOB) Pin Data Status Register */ +#define REG_PIOB_IER (*(WoReg*)0x400E1040U) /**< \brief (PIOB) Interrupt Enable Register */ +#define REG_PIOB_IDR (*(WoReg*)0x400E1044U) /**< \brief (PIOB) Interrupt Disable Register */ +#define REG_PIOB_IMR (*(RoReg*)0x400E1048U) /**< \brief (PIOB) Interrupt Mask Register */ +#define REG_PIOB_ISR (*(RoReg*)0x400E104CU) /**< \brief (PIOB) Interrupt Status Register */ +#define REG_PIOB_MDER (*(WoReg*)0x400E1050U) /**< \brief (PIOB) Multi-driver Enable Register */ +#define REG_PIOB_MDDR (*(WoReg*)0x400E1054U) /**< \brief (PIOB) Multi-driver Disable Register */ +#define REG_PIOB_MDSR (*(RoReg*)0x400E1058U) /**< \brief (PIOB) Multi-driver Status Register */ +#define REG_PIOB_PUDR (*(WoReg*)0x400E1060U) /**< \brief (PIOB) Pull-up Disable Register */ +#define REG_PIOB_PUER (*(WoReg*)0x400E1064U) /**< \brief (PIOB) Pull-up Enable Register */ +#define REG_PIOB_PUSR (*(RoReg*)0x400E1068U) /**< \brief (PIOB) Pad Pull-up Status Register */ +#define REG_PIOB_ABCDSR (*(RwReg*)0x400E1070U) /**< \brief (PIOB) Peripheral Select Register */ +#define REG_PIOB_IFSCDR (*(WoReg*)0x400E1080U) /**< \brief (PIOB) Input Filter Slow Clock Disable Register */ +#define REG_PIOB_IFSCER (*(WoReg*)0x400E1084U) /**< \brief (PIOB) Input Filter Slow Clock Enable Register */ +#define REG_PIOB_IFSCSR (*(RoReg*)0x400E1088U) /**< \brief (PIOB) Input Filter Slow Clock Status Register */ +#define REG_PIOB_SCDR (*(RwReg*)0x400E108CU) /**< \brief (PIOB) Slow Clock Divider Debouncing Register */ +#define REG_PIOB_PPDDR (*(WoReg*)0x400E1090U) /**< \brief (PIOB) Pad Pull-down Disable Register */ +#define REG_PIOB_PPDER (*(WoReg*)0x400E1094U) /**< \brief (PIOB) Pad Pull-down Enable Register */ +#define REG_PIOB_PPDSR (*(RoReg*)0x400E1098U) /**< \brief (PIOB) Pad Pull-down Status Register */ +#define REG_PIOB_OWER (*(WoReg*)0x400E10A0U) /**< \brief (PIOB) Output Write Enable */ +#define REG_PIOB_OWDR (*(WoReg*)0x400E10A4U) /**< \brief (PIOB) Output Write Disable */ +#define REG_PIOB_OWSR (*(RoReg*)0x400E10A8U) /**< \brief (PIOB) Output Write Status Register */ +#define REG_PIOB_AIMER (*(WoReg*)0x400E10B0U) /**< \brief (PIOB) Additional Interrupt Modes Enable Register */ +#define REG_PIOB_AIMDR (*(WoReg*)0x400E10B4U) /**< \brief (PIOB) Additional Interrupt Modes Disables Register */ +#define REG_PIOB_AIMMR (*(RoReg*)0x400E10B8U) /**< \brief (PIOB) Additional Interrupt Modes Mask Register */ +#define REG_PIOB_ESR (*(WoReg*)0x400E10C0U) /**< \brief (PIOB) Edge Select Register */ +#define REG_PIOB_LSR (*(WoReg*)0x400E10C4U) /**< \brief (PIOB) Level Select Register */ +#define REG_PIOB_ELSR (*(RoReg*)0x400E10C8U) /**< \brief (PIOB) Edge/Level Status Register */ +#define REG_PIOB_FELLSR (*(WoReg*)0x400E10D0U) /**< \brief (PIOB) Falling Edge/Low Level Select Register */ +#define REG_PIOB_REHLSR (*(WoReg*)0x400E10D4U) /**< \brief (PIOB) Rising Edge/ High Level Select Register */ +#define REG_PIOB_FRLHSR (*(RoReg*)0x400E10D8U) /**< \brief (PIOB) Fall/Rise - Low/High Status Register */ +#define REG_PIOB_LOCKSR (*(RoReg*)0x400E10E0U) /**< \brief (PIOB) Lock Status */ +#define REG_PIOB_WPMR (*(RwReg*)0x400E10E4U) /**< \brief (PIOB) Write Protect Mode Register */ +#define REG_PIOB_WPSR (*(RoReg*)0x400E10E8U) /**< \brief (PIOB) Write Protect Status Register */ +#define REG_PIOB_SCHMITT (*(RwReg*)0x400E1100U) /**< \brief (PIOB) Schmitt Trigger Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_PIOB_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_pioc.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_pioc.h new file mode 100644 index 000000000..c684e8013 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_pioc.h @@ -0,0 +1,132 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_PIOC_INSTANCE_ +#define _SAM3N_PIOC_INSTANCE_ + +/* ========== Register definition for PIOC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PIOC_PER (0x400E1200U) /**< \brief (PIOC) PIO Enable Register */ +#define REG_PIOC_PDR (0x400E1204U) /**< \brief (PIOC) PIO Disable Register */ +#define REG_PIOC_PSR (0x400E1208U) /**< \brief (PIOC) PIO Status Register */ +#define REG_PIOC_OER (0x400E1210U) /**< \brief (PIOC) Output Enable Register */ +#define REG_PIOC_ODR (0x400E1214U) /**< \brief (PIOC) Output Disable Register */ +#define REG_PIOC_OSR (0x400E1218U) /**< \brief (PIOC) Output Status Register */ +#define REG_PIOC_IFER (0x400E1220U) /**< \brief (PIOC) Glitch Input Filter Enable Register */ +#define REG_PIOC_IFDR (0x400E1224U) /**< \brief (PIOC) Glitch Input Filter Disable Register */ +#define REG_PIOC_IFSR (0x400E1228U) /**< \brief (PIOC) Glitch Input Filter Status Register */ +#define REG_PIOC_SODR (0x400E1230U) /**< \brief (PIOC) Set Output Data Register */ +#define REG_PIOC_CODR (0x400E1234U) /**< \brief (PIOC) Clear Output Data Register */ +#define REG_PIOC_ODSR (0x400E1238U) /**< \brief (PIOC) Output Data Status Register */ +#define REG_PIOC_PDSR (0x400E123CU) /**< \brief (PIOC) Pin Data Status Register */ +#define REG_PIOC_IER (0x400E1240U) /**< \brief (PIOC) Interrupt Enable Register */ +#define REG_PIOC_IDR (0x400E1244U) /**< \brief (PIOC) Interrupt Disable Register */ +#define REG_PIOC_IMR (0x400E1248U) /**< \brief (PIOC) Interrupt Mask Register */ +#define REG_PIOC_ISR (0x400E124CU) /**< \brief (PIOC) Interrupt Status Register */ +#define REG_PIOC_MDER (0x400E1250U) /**< \brief (PIOC) Multi-driver Enable Register */ +#define REG_PIOC_MDDR (0x400E1254U) /**< \brief (PIOC) Multi-driver Disable Register */ +#define REG_PIOC_MDSR (0x400E1258U) /**< \brief (PIOC) Multi-driver Status Register */ +#define REG_PIOC_PUDR (0x400E1260U) /**< \brief (PIOC) Pull-up Disable Register */ +#define REG_PIOC_PUER (0x400E1264U) /**< \brief (PIOC) Pull-up Enable Register */ +#define REG_PIOC_PUSR (0x400E1268U) /**< \brief (PIOC) Pad Pull-up Status Register */ +#define REG_PIOC_ABCDSR (0x400E1270U) /**< \brief (PIOC) Peripheral Select Register */ +#define REG_PIOC_IFSCDR (0x400E1280U) /**< \brief (PIOC) Input Filter Slow Clock Disable Register */ +#define REG_PIOC_IFSCER (0x400E1284U) /**< \brief (PIOC) Input Filter Slow Clock Enable Register */ +#define REG_PIOC_IFSCSR (0x400E1288U) /**< \brief (PIOC) Input Filter Slow Clock Status Register */ +#define REG_PIOC_SCDR (0x400E128CU) /**< \brief (PIOC) Slow Clock Divider Debouncing Register */ +#define REG_PIOC_PPDDR (0x400E1290U) /**< \brief (PIOC) Pad Pull-down Disable Register */ +#define REG_PIOC_PPDER (0x400E1294U) /**< \brief (PIOC) Pad Pull-down Enable Register */ +#define REG_PIOC_PPDSR (0x400E1298U) /**< \brief (PIOC) Pad Pull-down Status Register */ +#define REG_PIOC_OWER (0x400E12A0U) /**< \brief (PIOC) Output Write Enable */ +#define REG_PIOC_OWDR (0x400E12A4U) /**< \brief (PIOC) Output Write Disable */ +#define REG_PIOC_OWSR (0x400E12A8U) /**< \brief (PIOC) Output Write Status Register */ +#define REG_PIOC_AIMER (0x400E12B0U) /**< \brief (PIOC) Additional Interrupt Modes Enable Register */ +#define REG_PIOC_AIMDR (0x400E12B4U) /**< \brief (PIOC) Additional Interrupt Modes Disables Register */ +#define REG_PIOC_AIMMR (0x400E12B8U) /**< \brief (PIOC) Additional Interrupt Modes Mask Register */ +#define REG_PIOC_ESR (0x400E12C0U) /**< \brief (PIOC) Edge Select Register */ +#define REG_PIOC_LSR (0x400E12C4U) /**< \brief (PIOC) Level Select Register */ +#define REG_PIOC_ELSR (0x400E12C8U) /**< \brief (PIOC) Edge/Level Status Register */ +#define REG_PIOC_FELLSR (0x400E12D0U) /**< \brief (PIOC) Falling Edge/Low Level Select Register */ +#define REG_PIOC_REHLSR (0x400E12D4U) /**< \brief (PIOC) Rising Edge/ High Level Select Register */ +#define REG_PIOC_FRLHSR (0x400E12D8U) /**< \brief (PIOC) Fall/Rise - Low/High Status Register */ +#define REG_PIOC_LOCKSR (0x400E12E0U) /**< \brief (PIOC) Lock Status */ +#define REG_PIOC_WPMR (0x400E12E4U) /**< \brief (PIOC) Write Protect Mode Register */ +#define REG_PIOC_WPSR (0x400E12E8U) /**< \brief (PIOC) Write Protect Status Register */ +#define REG_PIOC_SCHMITT (0x400E1300U) /**< \brief (PIOC) Schmitt Trigger Register */ +#else +#define REG_PIOC_PER (*(WoReg*)0x400E1200U) /**< \brief (PIOC) PIO Enable Register */ +#define REG_PIOC_PDR (*(WoReg*)0x400E1204U) /**< \brief (PIOC) PIO Disable Register */ +#define REG_PIOC_PSR (*(RoReg*)0x400E1208U) /**< \brief (PIOC) PIO Status Register */ +#define REG_PIOC_OER (*(WoReg*)0x400E1210U) /**< \brief (PIOC) Output Enable Register */ +#define REG_PIOC_ODR (*(WoReg*)0x400E1214U) /**< \brief (PIOC) Output Disable Register */ +#define REG_PIOC_OSR (*(RoReg*)0x400E1218U) /**< \brief (PIOC) Output Status Register */ +#define REG_PIOC_IFER (*(WoReg*)0x400E1220U) /**< \brief (PIOC) Glitch Input Filter Enable Register */ +#define REG_PIOC_IFDR (*(WoReg*)0x400E1224U) /**< \brief (PIOC) Glitch Input Filter Disable Register */ +#define REG_PIOC_IFSR (*(RoReg*)0x400E1228U) /**< \brief (PIOC) Glitch Input Filter Status Register */ +#define REG_PIOC_SODR (*(WoReg*)0x400E1230U) /**< \brief (PIOC) Set Output Data Register */ +#define REG_PIOC_CODR (*(WoReg*)0x400E1234U) /**< \brief (PIOC) Clear Output Data Register */ +#define REG_PIOC_ODSR (*(RwReg*)0x400E1238U) /**< \brief (PIOC) Output Data Status Register */ +#define REG_PIOC_PDSR (*(RoReg*)0x400E123CU) /**< \brief (PIOC) Pin Data Status Register */ +#define REG_PIOC_IER (*(WoReg*)0x400E1240U) /**< \brief (PIOC) Interrupt Enable Register */ +#define REG_PIOC_IDR (*(WoReg*)0x400E1244U) /**< \brief (PIOC) Interrupt Disable Register */ +#define REG_PIOC_IMR (*(RoReg*)0x400E1248U) /**< \brief (PIOC) Interrupt Mask Register */ +#define REG_PIOC_ISR (*(RoReg*)0x400E124CU) /**< \brief (PIOC) Interrupt Status Register */ +#define REG_PIOC_MDER (*(WoReg*)0x400E1250U) /**< \brief (PIOC) Multi-driver Enable Register */ +#define REG_PIOC_MDDR (*(WoReg*)0x400E1254U) /**< \brief (PIOC) Multi-driver Disable Register */ +#define REG_PIOC_MDSR (*(RoReg*)0x400E1258U) /**< \brief (PIOC) Multi-driver Status Register */ +#define REG_PIOC_PUDR (*(WoReg*)0x400E1260U) /**< \brief (PIOC) Pull-up Disable Register */ +#define REG_PIOC_PUER (*(WoReg*)0x400E1264U) /**< \brief (PIOC) Pull-up Enable Register */ +#define REG_PIOC_PUSR (*(RoReg*)0x400E1268U) /**< \brief (PIOC) Pad Pull-up Status Register */ +#define REG_PIOC_ABCDSR (*(RwReg*)0x400E1270U) /**< \brief (PIOC) Peripheral Select Register */ +#define REG_PIOC_IFSCDR (*(WoReg*)0x400E1280U) /**< \brief (PIOC) Input Filter Slow Clock Disable Register */ +#define REG_PIOC_IFSCER (*(WoReg*)0x400E1284U) /**< \brief (PIOC) Input Filter Slow Clock Enable Register */ +#define REG_PIOC_IFSCSR (*(RoReg*)0x400E1288U) /**< \brief (PIOC) Input Filter Slow Clock Status Register */ +#define REG_PIOC_SCDR (*(RwReg*)0x400E128CU) /**< \brief (PIOC) Slow Clock Divider Debouncing Register */ +#define REG_PIOC_PPDDR (*(WoReg*)0x400E1290U) /**< \brief (PIOC) Pad Pull-down Disable Register */ +#define REG_PIOC_PPDER (*(WoReg*)0x400E1294U) /**< \brief (PIOC) Pad Pull-down Enable Register */ +#define REG_PIOC_PPDSR (*(RoReg*)0x400E1298U) /**< \brief (PIOC) Pad Pull-down Status Register */ +#define REG_PIOC_OWER (*(WoReg*)0x400E12A0U) /**< \brief (PIOC) Output Write Enable */ +#define REG_PIOC_OWDR (*(WoReg*)0x400E12A4U) /**< \brief (PIOC) Output Write Disable */ +#define REG_PIOC_OWSR (*(RoReg*)0x400E12A8U) /**< \brief (PIOC) Output Write Status Register */ +#define REG_PIOC_AIMER (*(WoReg*)0x400E12B0U) /**< \brief (PIOC) Additional Interrupt Modes Enable Register */ +#define REG_PIOC_AIMDR (*(WoReg*)0x400E12B4U) /**< \brief (PIOC) Additional Interrupt Modes Disables Register */ +#define REG_PIOC_AIMMR (*(RoReg*)0x400E12B8U) /**< \brief (PIOC) Additional Interrupt Modes Mask Register */ +#define REG_PIOC_ESR (*(WoReg*)0x400E12C0U) /**< \brief (PIOC) Edge Select Register */ +#define REG_PIOC_LSR (*(WoReg*)0x400E12C4U) /**< \brief (PIOC) Level Select Register */ +#define REG_PIOC_ELSR (*(RoReg*)0x400E12C8U) /**< \brief (PIOC) Edge/Level Status Register */ +#define REG_PIOC_FELLSR (*(WoReg*)0x400E12D0U) /**< \brief (PIOC) Falling Edge/Low Level Select Register */ +#define REG_PIOC_REHLSR (*(WoReg*)0x400E12D4U) /**< \brief (PIOC) Rising Edge/ High Level Select Register */ +#define REG_PIOC_FRLHSR (*(RoReg*)0x400E12D8U) /**< \brief (PIOC) Fall/Rise - Low/High Status Register */ +#define REG_PIOC_LOCKSR (*(RoReg*)0x400E12E0U) /**< \brief (PIOC) Lock Status */ +#define REG_PIOC_WPMR (*(RwReg*)0x400E12E4U) /**< \brief (PIOC) Write Protect Mode Register */ +#define REG_PIOC_WPSR (*(RoReg*)0x400E12E8U) /**< \brief (PIOC) Write Protect Status Register */ +#define REG_PIOC_SCHMITT (*(RwReg*)0x400E1300U) /**< \brief (PIOC) Schmitt Trigger Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_PIOC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_pmc.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_pmc.h new file mode 100644 index 000000000..8dfd17247 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_pmc.h @@ -0,0 +1,78 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_PMC_INSTANCE_ +#define _SAM3N_PMC_INSTANCE_ + +/* ========== Register definition for PMC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PMC_SCER (0x400E0400U) /**< \brief (PMC) System Clock Enable Register */ +#define REG_PMC_SCDR (0x400E0404U) /**< \brief (PMC) System Clock Disable Register */ +#define REG_PMC_SCSR (0x400E0408U) /**< \brief (PMC) System Clock Status Register */ +#define REG_PMC_PCER0 (0x400E0410U) /**< \brief (PMC) Peripheral Clock Enable Register 0 */ +#define REG_PMC_PCDR0 (0x400E0414U) /**< \brief (PMC) Peripheral Clock Disable Register 0 */ +#define REG_PMC_PCSR0 (0x400E0418U) /**< \brief (PMC) Peripheral Clock Status Register 0 */ +#define REG_CKGR_MOR (0x400E0420U) /**< \brief (PMC) Main Oscillator Register */ +#define REG_CKGR_MCFR (0x400E0424U) /**< \brief (PMC) Main Clock Frequency Register */ +#define REG_CKGR_PLLAR (0x400E0428U) /**< \brief (PMC) PLLA Register */ +#define REG_PMC_MCKR (0x400E0430U) /**< \brief (PMC) Master Clock Register */ +#define REG_PMC_PCK (0x400E0440U) /**< \brief (PMC) Programmable Clock 0 Register */ +#define REG_PMC_IER (0x400E0460U) /**< \brief (PMC) Interrupt Enable Register */ +#define REG_PMC_IDR (0x400E0464U) /**< \brief (PMC) Interrupt Disable Register */ +#define REG_PMC_SR (0x400E0468U) /**< \brief (PMC) Status Register */ +#define REG_PMC_IMR (0x400E046CU) /**< \brief (PMC) Interrupt Mask Register */ +#define REG_PMC_FSMR (0x400E0470U) /**< \brief (PMC) Fast Startup Mode Register */ +#define REG_PMC_FSPR (0x400E0474U) /**< \brief (PMC) Fast Startup Polarity Register */ +#define REG_PMC_FOCR (0x400E0478U) /**< \brief (PMC) Fault Output Clear Register */ +#define REG_PMC_WPMR (0x400E04E4U) /**< \brief (PMC) Write Protect Mode Register */ +#define REG_PMC_WPSR (0x400E04E8U) /**< \brief (PMC) Write Protect Status Register */ +#else +#define REG_PMC_SCER (*(WoReg*)0x400E0400U) /**< \brief (PMC) System Clock Enable Register */ +#define REG_PMC_SCDR (*(WoReg*)0x400E0404U) /**< \brief (PMC) System Clock Disable Register */ +#define REG_PMC_SCSR (*(RoReg*)0x400E0408U) /**< \brief (PMC) System Clock Status Register */ +#define REG_PMC_PCER0 (*(WoReg*)0x400E0410U) /**< \brief (PMC) Peripheral Clock Enable Register 0 */ +#define REG_PMC_PCDR0 (*(WoReg*)0x400E0414U) /**< \brief (PMC) Peripheral Clock Disable Register 0 */ +#define REG_PMC_PCSR0 (*(RoReg*)0x400E0418U) /**< \brief (PMC) Peripheral Clock Status Register 0 */ +#define REG_CKGR_MOR (*(RwReg*)0x400E0420U) /**< \brief (PMC) Main Oscillator Register */ +#define REG_CKGR_MCFR (*(RoReg*)0x400E0424U) /**< \brief (PMC) Main Clock Frequency Register */ +#define REG_CKGR_PLLAR (*(RwReg*)0x400E0428U) /**< \brief (PMC) PLLA Register */ +#define REG_PMC_MCKR (*(RwReg*)0x400E0430U) /**< \brief (PMC) Master Clock Register */ +#define REG_PMC_PCK (*(RwReg*)0x400E0440U) /**< \brief (PMC) Programmable Clock 0 Register */ +#define REG_PMC_IER (*(WoReg*)0x400E0460U) /**< \brief (PMC) Interrupt Enable Register */ +#define REG_PMC_IDR (*(WoReg*)0x400E0464U) /**< \brief (PMC) Interrupt Disable Register */ +#define REG_PMC_SR (*(RoReg*)0x400E0468U) /**< \brief (PMC) Status Register */ +#define REG_PMC_IMR (*(RoReg*)0x400E046CU) /**< \brief (PMC) Interrupt Mask Register */ +#define REG_PMC_FSMR (*(RwReg*)0x400E0470U) /**< \brief (PMC) Fast Startup Mode Register */ +#define REG_PMC_FSPR (*(RwReg*)0x400E0474U) /**< \brief (PMC) Fast Startup Polarity Register */ +#define REG_PMC_FOCR (*(WoReg*)0x400E0478U) /**< \brief (PMC) Fault Output Clear Register */ +#define REG_PMC_WPMR (*(RwReg*)0x400E04E4U) /**< \brief (PMC) Write Protect Mode Register */ +#define REG_PMC_WPSR (*(RoReg*)0x400E04E8U) /**< \brief (PMC) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_PMC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_pwm.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_pwm.h new file mode 100644 index 000000000..53aec885c --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_pwm.h @@ -0,0 +1,94 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_PWM_INSTANCE_ +#define _SAM3N_PWM_INSTANCE_ + +/* ========== Register definition for PWM peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PWM_MR (0x40020000U) /**< \brief (PWM) PWM Mode Register */ +#define REG_PWM_ENA (0x40020004U) /**< \brief (PWM) PWM Enable Register */ +#define REG_PWM_DIS (0x40020008U) /**< \brief (PWM) PWM Disable Register */ +#define REG_PWM_SR (0x4002000CU) /**< \brief (PWM) PWM Status Register */ +#define REG_PWM_IER (0x40020010U) /**< \brief (PWM) PWM Interrupt Enable Register */ +#define REG_PWM_IDR (0x40020014U) /**< \brief (PWM) PWM Interrupt Disable Register */ +#define REG_PWM_IMR (0x40020018U) /**< \brief (PWM) PWM Interrupt Mask Register */ +#define REG_PWM_ISR (0x4002001CU) /**< \brief (PWM) PWM Interrupt Status Register */ +#define REG_PWM_CMR0 (0x40020200U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 0) */ +#define REG_PWM_CDTY0 (0x40020204U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 0) */ +#define REG_PWM_CPRD0 (0x40020208U) /**< \brief (PWM) PWM Channel Period Register (ch_num = 0) */ +#define REG_PWM_CCNT0 (0x4002020CU) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 0) */ +#define REG_PWM_CUPD0 (0x40020210U) /**< \brief (PWM) PWM Channel Update Register (ch_num = 0) */ +#define REG_PWM_CMR1 (0x40020220U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 1) */ +#define REG_PWM_CDTY1 (0x40020224U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 1) */ +#define REG_PWM_CPRD1 (0x40020228U) /**< \brief (PWM) PWM Channel Period Register (ch_num = 1) */ +#define REG_PWM_CCNT1 (0x4002022CU) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 1) */ +#define REG_PWM_CUPD1 (0x40020230U) /**< \brief (PWM) PWM Channel Update Register (ch_num = 1) */ +#define REG_PWM_CMR2 (0x40020240U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 2) */ +#define REG_PWM_CDTY2 (0x40020244U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 2) */ +#define REG_PWM_CPRD2 (0x40020248U) /**< \brief (PWM) PWM Channel Period Register (ch_num = 2) */ +#define REG_PWM_CCNT2 (0x4002024CU) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 2) */ +#define REG_PWM_CUPD2 (0x40020250U) /**< \brief (PWM) PWM Channel Update Register (ch_num = 2) */ +#define REG_PWM_CMR3 (0x40020260U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 3) */ +#define REG_PWM_CDTY3 (0x40020264U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 3) */ +#define REG_PWM_CPRD3 (0x40020268U) /**< \brief (PWM) PWM Channel Period Register (ch_num = 3) */ +#define REG_PWM_CCNT3 (0x4002026CU) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 3) */ +#define REG_PWM_CUPD3 (0x40020270U) /**< \brief (PWM) PWM Channel Update Register (ch_num = 3) */ +#else +#define REG_PWM_MR (*(RwReg*)0x40020000U) /**< \brief (PWM) PWM Mode Register */ +#define REG_PWM_ENA (*(WoReg*)0x40020004U) /**< \brief (PWM) PWM Enable Register */ +#define REG_PWM_DIS (*(WoReg*)0x40020008U) /**< \brief (PWM) PWM Disable Register */ +#define REG_PWM_SR (*(RoReg*)0x4002000CU) /**< \brief (PWM) PWM Status Register */ +#define REG_PWM_IER (*(WoReg*)0x40020010U) /**< \brief (PWM) PWM Interrupt Enable Register */ +#define REG_PWM_IDR (*(WoReg*)0x40020014U) /**< \brief (PWM) PWM Interrupt Disable Register */ +#define REG_PWM_IMR (*(RoReg*)0x40020018U) /**< \brief (PWM) PWM Interrupt Mask Register */ +#define REG_PWM_ISR (*(RoReg*)0x4002001CU) /**< \brief (PWM) PWM Interrupt Status Register */ +#define REG_PWM_CMR0 (*(RwReg*)0x40020200U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 0) */ +#define REG_PWM_CDTY0 (*(RwReg*)0x40020204U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 0) */ +#define REG_PWM_CPRD0 (*(RwReg*)0x40020208U) /**< \brief (PWM) PWM Channel Period Register (ch_num = 0) */ +#define REG_PWM_CCNT0 (*(RoReg*)0x4002020CU) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 0) */ +#define REG_PWM_CUPD0 (*(WoReg*)0x40020210U) /**< \brief (PWM) PWM Channel Update Register (ch_num = 0) */ +#define REG_PWM_CMR1 (*(RwReg*)0x40020220U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 1) */ +#define REG_PWM_CDTY1 (*(RwReg*)0x40020224U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 1) */ +#define REG_PWM_CPRD1 (*(RwReg*)0x40020228U) /**< \brief (PWM) PWM Channel Period Register (ch_num = 1) */ +#define REG_PWM_CCNT1 (*(RoReg*)0x4002022CU) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 1) */ +#define REG_PWM_CUPD1 (*(WoReg*)0x40020230U) /**< \brief (PWM) PWM Channel Update Register (ch_num = 1) */ +#define REG_PWM_CMR2 (*(RwReg*)0x40020240U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 2) */ +#define REG_PWM_CDTY2 (*(RwReg*)0x40020244U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 2) */ +#define REG_PWM_CPRD2 (*(RwReg*)0x40020248U) /**< \brief (PWM) PWM Channel Period Register (ch_num = 2) */ +#define REG_PWM_CCNT2 (*(RoReg*)0x4002024CU) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 2) */ +#define REG_PWM_CUPD2 (*(WoReg*)0x40020250U) /**< \brief (PWM) PWM Channel Update Register (ch_num = 2) */ +#define REG_PWM_CMR3 (*(RwReg*)0x40020260U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 3) */ +#define REG_PWM_CDTY3 (*(RwReg*)0x40020264U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 3) */ +#define REG_PWM_CPRD3 (*(RwReg*)0x40020268U) /**< \brief (PWM) PWM Channel Period Register (ch_num = 3) */ +#define REG_PWM_CCNT3 (*(RoReg*)0x4002026CU) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 3) */ +#define REG_PWM_CUPD3 (*(WoReg*)0x40020270U) /**< \brief (PWM) PWM Channel Update Register (ch_num = 3) */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_PWM_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_rstc.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_rstc.h new file mode 100644 index 000000000..6feb7e70b --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_rstc.h @@ -0,0 +1,44 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_RSTC_INSTANCE_ +#define _SAM3N_RSTC_INSTANCE_ + +/* ========== Register definition for RSTC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_RSTC_CR (0x400E1400U) /**< \brief (RSTC) Control Register */ +#define REG_RSTC_SR (0x400E1404U) /**< \brief (RSTC) Status Register */ +#define REG_RSTC_MR (0x400E1408U) /**< \brief (RSTC) Mode Register */ +#else +#define REG_RSTC_CR (*(WoReg*)0x400E1400U) /**< \brief (RSTC) Control Register */ +#define REG_RSTC_SR (*(RoReg*)0x400E1404U) /**< \brief (RSTC) Status Register */ +#define REG_RSTC_MR (*(RwReg*)0x400E1408U) /**< \brief (RSTC) Mode Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_RSTC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_rtc.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_rtc.h new file mode 100644 index 000000000..9af94a706 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_rtc.h @@ -0,0 +1,64 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_RTC_INSTANCE_ +#define _SAM3N_RTC_INSTANCE_ + +/* ========== Register definition for RTC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_RTC_CR (0x400E1460U) /**< \brief (RTC) Control Register */ +#define REG_RTC_MR (0x400E1464U) /**< \brief (RTC) Mode Register */ +#define REG_RTC_TIMR (0x400E1468U) /**< \brief (RTC) Time Register */ +#define REG_RTC_CALR (0x400E146CU) /**< \brief (RTC) Calendar Register */ +#define REG_RTC_TIMALR (0x400E1470U) /**< \brief (RTC) Time Alarm Register */ +#define REG_RTC_CALALR (0x400E1474U) /**< \brief (RTC) Calendar Alarm Register */ +#define REG_RTC_SR (0x400E1478U) /**< \brief (RTC) Status Register */ +#define REG_RTC_SCCR (0x400E147CU) /**< \brief (RTC) Status Clear Command Register */ +#define REG_RTC_IER (0x400E1480U) /**< \brief (RTC) Interrupt Enable Register */ +#define REG_RTC_IDR (0x400E1484U) /**< \brief (RTC) Interrupt Disable Register */ +#define REG_RTC_IMR (0x400E1488U) /**< \brief (RTC) Interrupt Mask Register */ +#define REG_RTC_VER (0x400E148CU) /**< \brief (RTC) Valid Entry Register */ +#define REG_RTC_WPMR (0x400E1544U) /**< \brief (RTC) Write Protect Mode Register */ +#else +#define REG_RTC_CR (*(RwReg*)0x400E1460U) /**< \brief (RTC) Control Register */ +#define REG_RTC_MR (*(RwReg*)0x400E1464U) /**< \brief (RTC) Mode Register */ +#define REG_RTC_TIMR (*(RwReg*)0x400E1468U) /**< \brief (RTC) Time Register */ +#define REG_RTC_CALR (*(RwReg*)0x400E146CU) /**< \brief (RTC) Calendar Register */ +#define REG_RTC_TIMALR (*(RwReg*)0x400E1470U) /**< \brief (RTC) Time Alarm Register */ +#define REG_RTC_CALALR (*(RwReg*)0x400E1474U) /**< \brief (RTC) Calendar Alarm Register */ +#define REG_RTC_SR (*(RoReg*)0x400E1478U) /**< \brief (RTC) Status Register */ +#define REG_RTC_SCCR (*(WoReg*)0x400E147CU) /**< \brief (RTC) Status Clear Command Register */ +#define REG_RTC_IER (*(WoReg*)0x400E1480U) /**< \brief (RTC) Interrupt Enable Register */ +#define REG_RTC_IDR (*(WoReg*)0x400E1484U) /**< \brief (RTC) Interrupt Disable Register */ +#define REG_RTC_IMR (*(RoReg*)0x400E1488U) /**< \brief (RTC) Interrupt Mask Register */ +#define REG_RTC_VER (*(RoReg*)0x400E148CU) /**< \brief (RTC) Valid Entry Register */ +#define REG_RTC_WPMR (*(RwReg*)0x400E1544U) /**< \brief (RTC) Write Protect Mode Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_RTC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_rtt.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_rtt.h new file mode 100644 index 000000000..ef32565c9 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_rtt.h @@ -0,0 +1,46 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_RTT_INSTANCE_ +#define _SAM3N_RTT_INSTANCE_ + +/* ========== Register definition for RTT peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_RTT_MR (0x400E1430U) /**< \brief (RTT) Mode Register */ +#define REG_RTT_AR (0x400E1434U) /**< \brief (RTT) Alarm Register */ +#define REG_RTT_VR (0x400E1438U) /**< \brief (RTT) Value Register */ +#define REG_RTT_SR (0x400E143CU) /**< \brief (RTT) Status Register */ +#else +#define REG_RTT_MR (*(RwReg*)0x400E1430U) /**< \brief (RTT) Mode Register */ +#define REG_RTT_AR (*(RwReg*)0x400E1434U) /**< \brief (RTT) Alarm Register */ +#define REG_RTT_VR (*(RoReg*)0x400E1438U) /**< \brief (RTT) Value Register */ +#define REG_RTT_SR (*(RoReg*)0x400E143CU) /**< \brief (RTT) Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_RTT_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_spi.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_spi.h new file mode 100644 index 000000000..659e194f8 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_spi.h @@ -0,0 +1,80 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_SPI_INSTANCE_ +#define _SAM3N_SPI_INSTANCE_ + +/* ========== Register definition for SPI peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SPI_CR (0x40008000U) /**< \brief (SPI) Control Register */ +#define REG_SPI_MR (0x40008004U) /**< \brief (SPI) Mode Register */ +#define REG_SPI_RDR (0x40008008U) /**< \brief (SPI) Receive Data Register */ +#define REG_SPI_TDR (0x4000800CU) /**< \brief (SPI) Transmit Data Register */ +#define REG_SPI_SR (0x40008010U) /**< \brief (SPI) Status Register */ +#define REG_SPI_IER (0x40008014U) /**< \brief (SPI) Interrupt Enable Register */ +#define REG_SPI_IDR (0x40008018U) /**< \brief (SPI) Interrupt Disable Register */ +#define REG_SPI_IMR (0x4000801CU) /**< \brief (SPI) Interrupt Mask Register */ +#define REG_SPI_CSR (0x40008030U) /**< \brief (SPI) Chip Select Register */ +#define REG_SPI_WPMR (0x400080E4U) /**< \brief (SPI) Write Protection Control Register */ +#define REG_SPI_WPSR (0x400080E8U) /**< \brief (SPI) Write Protection Status Register */ +#define REG_SPI_RPR (0x40008100U) /**< \brief (SPI) Receive Pointer Register */ +#define REG_SPI_RCR (0x40008104U) /**< \brief (SPI) Receive Counter Register */ +#define REG_SPI_TPR (0x40008108U) /**< \brief (SPI) Transmit Pointer Register */ +#define REG_SPI_TCR (0x4000810CU) /**< \brief (SPI) Transmit Counter Register */ +#define REG_SPI_RNPR (0x40008110U) /**< \brief (SPI) Receive Next Pointer Register */ +#define REG_SPI_RNCR (0x40008114U) /**< \brief (SPI) Receive Next Counter Register */ +#define REG_SPI_TNPR (0x40008118U) /**< \brief (SPI) Transmit Next Pointer Register */ +#define REG_SPI_TNCR (0x4000811CU) /**< \brief (SPI) Transmit Next Counter Register */ +#define REG_SPI_PTCR (0x40008120U) /**< \brief (SPI) Transfer Control Register */ +#define REG_SPI_PTSR (0x40008124U) /**< \brief (SPI) Transfer Status Register */ +#else +#define REG_SPI_CR (*(WoReg*)0x40008000U) /**< \brief (SPI) Control Register */ +#define REG_SPI_MR (*(RwReg*)0x40008004U) /**< \brief (SPI) Mode Register */ +#define REG_SPI_RDR (*(RoReg*)0x40008008U) /**< \brief (SPI) Receive Data Register */ +#define REG_SPI_TDR (*(WoReg*)0x4000800CU) /**< \brief (SPI) Transmit Data Register */ +#define REG_SPI_SR (*(RoReg*)0x40008010U) /**< \brief (SPI) Status Register */ +#define REG_SPI_IER (*(WoReg*)0x40008014U) /**< \brief (SPI) Interrupt Enable Register */ +#define REG_SPI_IDR (*(WoReg*)0x40008018U) /**< \brief (SPI) Interrupt Disable Register */ +#define REG_SPI_IMR (*(RoReg*)0x4000801CU) /**< \brief (SPI) Interrupt Mask Register */ +#define REG_SPI_CSR (*(RwReg*)0x40008030U) /**< \brief (SPI) Chip Select Register */ +#define REG_SPI_WPMR (*(RwReg*)0x400080E4U) /**< \brief (SPI) Write Protection Control Register */ +#define REG_SPI_WPSR (*(RoReg*)0x400080E8U) /**< \brief (SPI) Write Protection Status Register */ +#define REG_SPI_RPR (*(RwReg*)0x40008100U) /**< \brief (SPI) Receive Pointer Register */ +#define REG_SPI_RCR (*(RwReg*)0x40008104U) /**< \brief (SPI) Receive Counter Register */ +#define REG_SPI_TPR (*(RwReg*)0x40008108U) /**< \brief (SPI) Transmit Pointer Register */ +#define REG_SPI_TCR (*(RwReg*)0x4000810CU) /**< \brief (SPI) Transmit Counter Register */ +#define REG_SPI_RNPR (*(RwReg*)0x40008110U) /**< \brief (SPI) Receive Next Pointer Register */ +#define REG_SPI_RNCR (*(RwReg*)0x40008114U) /**< \brief (SPI) Receive Next Counter Register */ +#define REG_SPI_TNPR (*(RwReg*)0x40008118U) /**< \brief (SPI) Transmit Next Pointer Register */ +#define REG_SPI_TNCR (*(RwReg*)0x4000811CU) /**< \brief (SPI) Transmit Next Counter Register */ +#define REG_SPI_PTCR (*(WoReg*)0x40008120U) /**< \brief (SPI) Transfer Control Register */ +#define REG_SPI_PTSR (*(RoReg*)0x40008124U) /**< \brief (SPI) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_SPI_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_supc.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_supc.h new file mode 100644 index 000000000..bb743121a --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_supc.h @@ -0,0 +1,50 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_SUPC_INSTANCE_ +#define _SAM3N_SUPC_INSTANCE_ + +/* ========== Register definition for SUPC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SUPC_CR (0x400E1410U) /**< \brief (SUPC) Supply Controller Control Register */ +#define REG_SUPC_SMMR (0x400E1414U) /**< \brief (SUPC) Supply Controller Supply Monitor Mode Register */ +#define REG_SUPC_MR (0x400E1418U) /**< \brief (SUPC) Supply Controller Mode Register */ +#define REG_SUPC_WUMR (0x400E141CU) /**< \brief (SUPC) Supply Controller Wake Up Mode Register */ +#define REG_SUPC_WUIR (0x400E1420U) /**< \brief (SUPC) Supply Controller Wake Up Inputs Register */ +#define REG_SUPC_SR (0x400E1424U) /**< \brief (SUPC) Supply Controller Status Register */ +#else +#define REG_SUPC_CR (*(WoReg*)0x400E1410U) /**< \brief (SUPC) Supply Controller Control Register */ +#define REG_SUPC_SMMR (*(RwReg*)0x400E1414U) /**< \brief (SUPC) Supply Controller Supply Monitor Mode Register */ +#define REG_SUPC_MR (*(RwReg*)0x400E1418U) /**< \brief (SUPC) Supply Controller Mode Register */ +#define REG_SUPC_WUMR (*(RwReg*)0x400E141CU) /**< \brief (SUPC) Supply Controller Wake Up Mode Register */ +#define REG_SUPC_WUIR (*(RwReg*)0x400E1420U) /**< \brief (SUPC) Supply Controller Wake Up Inputs Register */ +#define REG_SUPC_SR (*(RoReg*)0x400E1424U) /**< \brief (SUPC) Supply Controller Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_SUPC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_tc0.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_tc0.h new file mode 100644 index 000000000..223ff6070 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_tc0.h @@ -0,0 +1,118 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_TC0_INSTANCE_ +#define _SAM3N_TC0_INSTANCE_ + +/* ========== Register definition for TC0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TC0_CCR0 (0x40010000U) /**< \brief (TC0) Channel Control Register (channel = 0) */ +#define REG_TC0_CMR0 (0x40010004U) /**< \brief (TC0) Channel Mode Register (channel = 0) */ +#define REG_TC0_SMMR0 (0x40010008U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC0_CV0 (0x40010010U) /**< \brief (TC0) Counter Value (channel = 0) */ +#define REG_TC0_RA0 (0x40010014U) /**< \brief (TC0) Register A (channel = 0) */ +#define REG_TC0_RB0 (0x40010018U) /**< \brief (TC0) Register B (channel = 0) */ +#define REG_TC0_RC0 (0x4001001CU) /**< \brief (TC0) Register C (channel = 0) */ +#define REG_TC0_SR0 (0x40010020U) /**< \brief (TC0) Status Register (channel = 0) */ +#define REG_TC0_IER0 (0x40010024U) /**< \brief (TC0) Interrupt Enable Register (channel = 0) */ +#define REG_TC0_IDR0 (0x40010028U) /**< \brief (TC0) Interrupt Disable Register (channel = 0) */ +#define REG_TC0_IMR0 (0x4001002CU) /**< \brief (TC0) Interrupt Mask Register (channel = 0) */ +#define REG_TC0_CCR1 (0x40010040U) /**< \brief (TC0) Channel Control Register (channel = 1) */ +#define REG_TC0_CMR1 (0x40010044U) /**< \brief (TC0) Channel Mode Register (channel = 1) */ +#define REG_TC0_SMMR1 (0x40010048U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC0_CV1 (0x40010050U) /**< \brief (TC0) Counter Value (channel = 1) */ +#define REG_TC0_RA1 (0x40010054U) /**< \brief (TC0) Register A (channel = 1) */ +#define REG_TC0_RB1 (0x40010058U) /**< \brief (TC0) Register B (channel = 1) */ +#define REG_TC0_RC1 (0x4001005CU) /**< \brief (TC0) Register C (channel = 1) */ +#define REG_TC0_SR1 (0x40010060U) /**< \brief (TC0) Status Register (channel = 1) */ +#define REG_TC0_IER1 (0x40010064U) /**< \brief (TC0) Interrupt Enable Register (channel = 1) */ +#define REG_TC0_IDR1 (0x40010068U) /**< \brief (TC0) Interrupt Disable Register (channel = 1) */ +#define REG_TC0_IMR1 (0x4001006CU) /**< \brief (TC0) Interrupt Mask Register (channel = 1) */ +#define REG_TC0_CCR2 (0x40010080U) /**< \brief (TC0) Channel Control Register (channel = 2) */ +#define REG_TC0_CMR2 (0x40010084U) /**< \brief (TC0) Channel Mode Register (channel = 2) */ +#define REG_TC0_SMMR2 (0x40010088U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC0_CV2 (0x40010090U) /**< \brief (TC0) Counter Value (channel = 2) */ +#define REG_TC0_RA2 (0x40010094U) /**< \brief (TC0) Register A (channel = 2) */ +#define REG_TC0_RB2 (0x40010098U) /**< \brief (TC0) Register B (channel = 2) */ +#define REG_TC0_RC2 (0x4001009CU) /**< \brief (TC0) Register C (channel = 2) */ +#define REG_TC0_SR2 (0x400100A0U) /**< \brief (TC0) Status Register (channel = 2) */ +#define REG_TC0_IER2 (0x400100A4U) /**< \brief (TC0) Interrupt Enable Register (channel = 2) */ +#define REG_TC0_IDR2 (0x400100A8U) /**< \brief (TC0) Interrupt Disable Register (channel = 2) */ +#define REG_TC0_IMR2 (0x400100ACU) /**< \brief (TC0) Interrupt Mask Register (channel = 2) */ +#define REG_TC0_BCR (0x400100C0U) /**< \brief (TC0) Block Control Register */ +#define REG_TC0_BMR (0x400100C4U) /**< \brief (TC0) Block Mode Register */ +#define REG_TC0_QIER (0x400100C8U) /**< \brief (TC0) QDEC Interrupt Enable Register */ +#define REG_TC0_QIDR (0x400100CCU) /**< \brief (TC0) QDEC Interrupt Disable Register */ +#define REG_TC0_QIMR (0x400100D0U) /**< \brief (TC0) QDEC Interrupt Mask Register */ +#define REG_TC0_QISR (0x400100D4U) /**< \brief (TC0) QDEC Interrupt Status Register */ +#define REG_TC0_WPMR (0x400100E4U) /**< \brief (TC0) Write Protect Mode Register */ +#else +#define REG_TC0_CCR0 (*(WoReg*)0x40010000U) /**< \brief (TC0) Channel Control Register (channel = 0) */ +#define REG_TC0_CMR0 (*(RwReg*)0x40010004U) /**< \brief (TC0) Channel Mode Register (channel = 0) */ +#define REG_TC0_SMMR0 (*(RwReg*)0x40010008U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC0_CV0 (*(RoReg*)0x40010010U) /**< \brief (TC0) Counter Value (channel = 0) */ +#define REG_TC0_RA0 (*(RwReg*)0x40010014U) /**< \brief (TC0) Register A (channel = 0) */ +#define REG_TC0_RB0 (*(RwReg*)0x40010018U) /**< \brief (TC0) Register B (channel = 0) */ +#define REG_TC0_RC0 (*(RwReg*)0x4001001CU) /**< \brief (TC0) Register C (channel = 0) */ +#define REG_TC0_SR0 (*(RoReg*)0x40010020U) /**< \brief (TC0) Status Register (channel = 0) */ +#define REG_TC0_IER0 (*(WoReg*)0x40010024U) /**< \brief (TC0) Interrupt Enable Register (channel = 0) */ +#define REG_TC0_IDR0 (*(WoReg*)0x40010028U) /**< \brief (TC0) Interrupt Disable Register (channel = 0) */ +#define REG_TC0_IMR0 (*(RoReg*)0x4001002CU) /**< \brief (TC0) Interrupt Mask Register (channel = 0) */ +#define REG_TC0_CCR1 (*(WoReg*)0x40010040U) /**< \brief (TC0) Channel Control Register (channel = 1) */ +#define REG_TC0_CMR1 (*(RwReg*)0x40010044U) /**< \brief (TC0) Channel Mode Register (channel = 1) */ +#define REG_TC0_SMMR1 (*(RwReg*)0x40010048U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC0_CV1 (*(RoReg*)0x40010050U) /**< \brief (TC0) Counter Value (channel = 1) */ +#define REG_TC0_RA1 (*(RwReg*)0x40010054U) /**< \brief (TC0) Register A (channel = 1) */ +#define REG_TC0_RB1 (*(RwReg*)0x40010058U) /**< \brief (TC0) Register B (channel = 1) */ +#define REG_TC0_RC1 (*(RwReg*)0x4001005CU) /**< \brief (TC0) Register C (channel = 1) */ +#define REG_TC0_SR1 (*(RoReg*)0x40010060U) /**< \brief (TC0) Status Register (channel = 1) */ +#define REG_TC0_IER1 (*(WoReg*)0x40010064U) /**< \brief (TC0) Interrupt Enable Register (channel = 1) */ +#define REG_TC0_IDR1 (*(WoReg*)0x40010068U) /**< \brief (TC0) Interrupt Disable Register (channel = 1) */ +#define REG_TC0_IMR1 (*(RoReg*)0x4001006CU) /**< \brief (TC0) Interrupt Mask Register (channel = 1) */ +#define REG_TC0_CCR2 (*(WoReg*)0x40010080U) /**< \brief (TC0) Channel Control Register (channel = 2) */ +#define REG_TC0_CMR2 (*(RwReg*)0x40010084U) /**< \brief (TC0) Channel Mode Register (channel = 2) */ +#define REG_TC0_SMMR2 (*(RwReg*)0x40010088U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC0_CV2 (*(RoReg*)0x40010090U) /**< \brief (TC0) Counter Value (channel = 2) */ +#define REG_TC0_RA2 (*(RwReg*)0x40010094U) /**< \brief (TC0) Register A (channel = 2) */ +#define REG_TC0_RB2 (*(RwReg*)0x40010098U) /**< \brief (TC0) Register B (channel = 2) */ +#define REG_TC0_RC2 (*(RwReg*)0x4001009CU) /**< \brief (TC0) Register C (channel = 2) */ +#define REG_TC0_SR2 (*(RoReg*)0x400100A0U) /**< \brief (TC0) Status Register (channel = 2) */ +#define REG_TC0_IER2 (*(WoReg*)0x400100A4U) /**< \brief (TC0) Interrupt Enable Register (channel = 2) */ +#define REG_TC0_IDR2 (*(WoReg*)0x400100A8U) /**< \brief (TC0) Interrupt Disable Register (channel = 2) */ +#define REG_TC0_IMR2 (*(RoReg*)0x400100ACU) /**< \brief (TC0) Interrupt Mask Register (channel = 2) */ +#define REG_TC0_BCR (*(WoReg*)0x400100C0U) /**< \brief (TC0) Block Control Register */ +#define REG_TC0_BMR (*(RwReg*)0x400100C4U) /**< \brief (TC0) Block Mode Register */ +#define REG_TC0_QIER (*(WoReg*)0x400100C8U) /**< \brief (TC0) QDEC Interrupt Enable Register */ +#define REG_TC0_QIDR (*(WoReg*)0x400100CCU) /**< \brief (TC0) QDEC Interrupt Disable Register */ +#define REG_TC0_QIMR (*(RoReg*)0x400100D0U) /**< \brief (TC0) QDEC Interrupt Mask Register */ +#define REG_TC0_QISR (*(RoReg*)0x400100D4U) /**< \brief (TC0) QDEC Interrupt Status Register */ +#define REG_TC0_WPMR (*(RwReg*)0x400100E4U) /**< \brief (TC0) Write Protect Mode Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_TC0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_tc1.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_tc1.h new file mode 100644 index 000000000..819faebc6 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_tc1.h @@ -0,0 +1,118 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_TC1_INSTANCE_ +#define _SAM3N_TC1_INSTANCE_ + +/* ========== Register definition for TC1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TC1_CCR0 (0x40014000U) /**< \brief (TC1) Channel Control Register (channel = 0) */ +#define REG_TC1_CMR0 (0x40014004U) /**< \brief (TC1) Channel Mode Register (channel = 0) */ +#define REG_TC1_SMMR0 (0x40014008U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC1_CV0 (0x40014010U) /**< \brief (TC1) Counter Value (channel = 0) */ +#define REG_TC1_RA0 (0x40014014U) /**< \brief (TC1) Register A (channel = 0) */ +#define REG_TC1_RB0 (0x40014018U) /**< \brief (TC1) Register B (channel = 0) */ +#define REG_TC1_RC0 (0x4001401CU) /**< \brief (TC1) Register C (channel = 0) */ +#define REG_TC1_SR0 (0x40014020U) /**< \brief (TC1) Status Register (channel = 0) */ +#define REG_TC1_IER0 (0x40014024U) /**< \brief (TC1) Interrupt Enable Register (channel = 0) */ +#define REG_TC1_IDR0 (0x40014028U) /**< \brief (TC1) Interrupt Disable Register (channel = 0) */ +#define REG_TC1_IMR0 (0x4001402CU) /**< \brief (TC1) Interrupt Mask Register (channel = 0) */ +#define REG_TC1_CCR1 (0x40014040U) /**< \brief (TC1) Channel Control Register (channel = 1) */ +#define REG_TC1_CMR1 (0x40014044U) /**< \brief (TC1) Channel Mode Register (channel = 1) */ +#define REG_TC1_SMMR1 (0x40014048U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC1_CV1 (0x40014050U) /**< \brief (TC1) Counter Value (channel = 1) */ +#define REG_TC1_RA1 (0x40014054U) /**< \brief (TC1) Register A (channel = 1) */ +#define REG_TC1_RB1 (0x40014058U) /**< \brief (TC1) Register B (channel = 1) */ +#define REG_TC1_RC1 (0x4001405CU) /**< \brief (TC1) Register C (channel = 1) */ +#define REG_TC1_SR1 (0x40014060U) /**< \brief (TC1) Status Register (channel = 1) */ +#define REG_TC1_IER1 (0x40014064U) /**< \brief (TC1) Interrupt Enable Register (channel = 1) */ +#define REG_TC1_IDR1 (0x40014068U) /**< \brief (TC1) Interrupt Disable Register (channel = 1) */ +#define REG_TC1_IMR1 (0x4001406CU) /**< \brief (TC1) Interrupt Mask Register (channel = 1) */ +#define REG_TC1_CCR2 (0x40014080U) /**< \brief (TC1) Channel Control Register (channel = 2) */ +#define REG_TC1_CMR2 (0x40014084U) /**< \brief (TC1) Channel Mode Register (channel = 2) */ +#define REG_TC1_SMMR2 (0x40014088U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC1_CV2 (0x40014090U) /**< \brief (TC1) Counter Value (channel = 2) */ +#define REG_TC1_RA2 (0x40014094U) /**< \brief (TC1) Register A (channel = 2) */ +#define REG_TC1_RB2 (0x40014098U) /**< \brief (TC1) Register B (channel = 2) */ +#define REG_TC1_RC2 (0x4001409CU) /**< \brief (TC1) Register C (channel = 2) */ +#define REG_TC1_SR2 (0x400140A0U) /**< \brief (TC1) Status Register (channel = 2) */ +#define REG_TC1_IER2 (0x400140A4U) /**< \brief (TC1) Interrupt Enable Register (channel = 2) */ +#define REG_TC1_IDR2 (0x400140A8U) /**< \brief (TC1) Interrupt Disable Register (channel = 2) */ +#define REG_TC1_IMR2 (0x400140ACU) /**< \brief (TC1) Interrupt Mask Register (channel = 2) */ +#define REG_TC1_BCR (0x400140C0U) /**< \brief (TC1) Block Control Register */ +#define REG_TC1_BMR (0x400140C4U) /**< \brief (TC1) Block Mode Register */ +#define REG_TC1_QIER (0x400140C8U) /**< \brief (TC1) QDEC Interrupt Enable Register */ +#define REG_TC1_QIDR (0x400140CCU) /**< \brief (TC1) QDEC Interrupt Disable Register */ +#define REG_TC1_QIMR (0x400140D0U) /**< \brief (TC1) QDEC Interrupt Mask Register */ +#define REG_TC1_QISR (0x400140D4U) /**< \brief (TC1) QDEC Interrupt Status Register */ +#define REG_TC1_WPMR (0x400140E4U) /**< \brief (TC1) Write Protect Mode Register */ +#else +#define REG_TC1_CCR0 (*(WoReg*)0x40014000U) /**< \brief (TC1) Channel Control Register (channel = 0) */ +#define REG_TC1_CMR0 (*(RwReg*)0x40014004U) /**< \brief (TC1) Channel Mode Register (channel = 0) */ +#define REG_TC1_SMMR0 (*(RwReg*)0x40014008U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC1_CV0 (*(RoReg*)0x40014010U) /**< \brief (TC1) Counter Value (channel = 0) */ +#define REG_TC1_RA0 (*(RwReg*)0x40014014U) /**< \brief (TC1) Register A (channel = 0) */ +#define REG_TC1_RB0 (*(RwReg*)0x40014018U) /**< \brief (TC1) Register B (channel = 0) */ +#define REG_TC1_RC0 (*(RwReg*)0x4001401CU) /**< \brief (TC1) Register C (channel = 0) */ +#define REG_TC1_SR0 (*(RoReg*)0x40014020U) /**< \brief (TC1) Status Register (channel = 0) */ +#define REG_TC1_IER0 (*(WoReg*)0x40014024U) /**< \brief (TC1) Interrupt Enable Register (channel = 0) */ +#define REG_TC1_IDR0 (*(WoReg*)0x40014028U) /**< \brief (TC1) Interrupt Disable Register (channel = 0) */ +#define REG_TC1_IMR0 (*(RoReg*)0x4001402CU) /**< \brief (TC1) Interrupt Mask Register (channel = 0) */ +#define REG_TC1_CCR1 (*(WoReg*)0x40014040U) /**< \brief (TC1) Channel Control Register (channel = 1) */ +#define REG_TC1_CMR1 (*(RwReg*)0x40014044U) /**< \brief (TC1) Channel Mode Register (channel = 1) */ +#define REG_TC1_SMMR1 (*(RwReg*)0x40014048U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC1_CV1 (*(RoReg*)0x40014050U) /**< \brief (TC1) Counter Value (channel = 1) */ +#define REG_TC1_RA1 (*(RwReg*)0x40014054U) /**< \brief (TC1) Register A (channel = 1) */ +#define REG_TC1_RB1 (*(RwReg*)0x40014058U) /**< \brief (TC1) Register B (channel = 1) */ +#define REG_TC1_RC1 (*(RwReg*)0x4001405CU) /**< \brief (TC1) Register C (channel = 1) */ +#define REG_TC1_SR1 (*(RoReg*)0x40014060U) /**< \brief (TC1) Status Register (channel = 1) */ +#define REG_TC1_IER1 (*(WoReg*)0x40014064U) /**< \brief (TC1) Interrupt Enable Register (channel = 1) */ +#define REG_TC1_IDR1 (*(WoReg*)0x40014068U) /**< \brief (TC1) Interrupt Disable Register (channel = 1) */ +#define REG_TC1_IMR1 (*(RoReg*)0x4001406CU) /**< \brief (TC1) Interrupt Mask Register (channel = 1) */ +#define REG_TC1_CCR2 (*(WoReg*)0x40014080U) /**< \brief (TC1) Channel Control Register (channel = 2) */ +#define REG_TC1_CMR2 (*(RwReg*)0x40014084U) /**< \brief (TC1) Channel Mode Register (channel = 2) */ +#define REG_TC1_SMMR2 (*(RwReg*)0x40014088U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC1_CV2 (*(RoReg*)0x40014090U) /**< \brief (TC1) Counter Value (channel = 2) */ +#define REG_TC1_RA2 (*(RwReg*)0x40014094U) /**< \brief (TC1) Register A (channel = 2) */ +#define REG_TC1_RB2 (*(RwReg*)0x40014098U) /**< \brief (TC1) Register B (channel = 2) */ +#define REG_TC1_RC2 (*(RwReg*)0x4001409CU) /**< \brief (TC1) Register C (channel = 2) */ +#define REG_TC1_SR2 (*(RoReg*)0x400140A0U) /**< \brief (TC1) Status Register (channel = 2) */ +#define REG_TC1_IER2 (*(WoReg*)0x400140A4U) /**< \brief (TC1) Interrupt Enable Register (channel = 2) */ +#define REG_TC1_IDR2 (*(WoReg*)0x400140A8U) /**< \brief (TC1) Interrupt Disable Register (channel = 2) */ +#define REG_TC1_IMR2 (*(RoReg*)0x400140ACU) /**< \brief (TC1) Interrupt Mask Register (channel = 2) */ +#define REG_TC1_BCR (*(WoReg*)0x400140C0U) /**< \brief (TC1) Block Control Register */ +#define REG_TC1_BMR (*(RwReg*)0x400140C4U) /**< \brief (TC1) Block Mode Register */ +#define REG_TC1_QIER (*(WoReg*)0x400140C8U) /**< \brief (TC1) QDEC Interrupt Enable Register */ +#define REG_TC1_QIDR (*(WoReg*)0x400140CCU) /**< \brief (TC1) QDEC Interrupt Disable Register */ +#define REG_TC1_QIMR (*(RoReg*)0x400140D0U) /**< \brief (TC1) QDEC Interrupt Mask Register */ +#define REG_TC1_QISR (*(RoReg*)0x400140D4U) /**< \brief (TC1) QDEC Interrupt Status Register */ +#define REG_TC1_WPMR (*(RwReg*)0x400140E4U) /**< \brief (TC1) Write Protect Mode Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_TC1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_twi0.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_twi0.h new file mode 100644 index 000000000..1bd648e09 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_twi0.h @@ -0,0 +1,80 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_TWI0_INSTANCE_ +#define _SAM3N_TWI0_INSTANCE_ + +/* ========== Register definition for TWI0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TWI0_CR (0x40018000U) /**< \brief (TWI0) Control Register */ +#define REG_TWI0_MMR (0x40018004U) /**< \brief (TWI0) Master Mode Register */ +#define REG_TWI0_SMR (0x40018008U) /**< \brief (TWI0) Slave Mode Register */ +#define REG_TWI0_IADR (0x4001800CU) /**< \brief (TWI0) Internal Address Register */ +#define REG_TWI0_CWGR (0x40018010U) /**< \brief (TWI0) Clock Waveform Generator Register */ +#define REG_TWI0_SR (0x40018020U) /**< \brief (TWI0) Status Register */ +#define REG_TWI0_IER (0x40018024U) /**< \brief (TWI0) Interrupt Enable Register */ +#define REG_TWI0_IDR (0x40018028U) /**< \brief (TWI0) Interrupt Disable Register */ +#define REG_TWI0_IMR (0x4001802CU) /**< \brief (TWI0) Interrupt Mask Register */ +#define REG_TWI0_RHR (0x40018030U) /**< \brief (TWI0) Receive Holding Register */ +#define REG_TWI0_THR (0x40018034U) /**< \brief (TWI0) Transmit Holding Register */ +#define REG_TWI0_RPR (0x40018100U) /**< \brief (TWI0) Receive Pointer Register */ +#define REG_TWI0_RCR (0x40018104U) /**< \brief (TWI0) Receive Counter Register */ +#define REG_TWI0_TPR (0x40018108U) /**< \brief (TWI0) Transmit Pointer Register */ +#define REG_TWI0_TCR (0x4001810CU) /**< \brief (TWI0) Transmit Counter Register */ +#define REG_TWI0_RNPR (0x40018110U) /**< \brief (TWI0) Receive Next Pointer Register */ +#define REG_TWI0_RNCR (0x40018114U) /**< \brief (TWI0) Receive Next Counter Register */ +#define REG_TWI0_TNPR (0x40018118U) /**< \brief (TWI0) Transmit Next Pointer Register */ +#define REG_TWI0_TNCR (0x4001811CU) /**< \brief (TWI0) Transmit Next Counter Register */ +#define REG_TWI0_PTCR (0x40018120U) /**< \brief (TWI0) Transfer Control Register */ +#define REG_TWI0_PTSR (0x40018124U) /**< \brief (TWI0) Transfer Status Register */ +#else +#define REG_TWI0_CR (*(WoReg*)0x40018000U) /**< \brief (TWI0) Control Register */ +#define REG_TWI0_MMR (*(RwReg*)0x40018004U) /**< \brief (TWI0) Master Mode Register */ +#define REG_TWI0_SMR (*(RwReg*)0x40018008U) /**< \brief (TWI0) Slave Mode Register */ +#define REG_TWI0_IADR (*(RwReg*)0x4001800CU) /**< \brief (TWI0) Internal Address Register */ +#define REG_TWI0_CWGR (*(RwReg*)0x40018010U) /**< \brief (TWI0) Clock Waveform Generator Register */ +#define REG_TWI0_SR (*(RoReg*)0x40018020U) /**< \brief (TWI0) Status Register */ +#define REG_TWI0_IER (*(WoReg*)0x40018024U) /**< \brief (TWI0) Interrupt Enable Register */ +#define REG_TWI0_IDR (*(WoReg*)0x40018028U) /**< \brief (TWI0) Interrupt Disable Register */ +#define REG_TWI0_IMR (*(RoReg*)0x4001802CU) /**< \brief (TWI0) Interrupt Mask Register */ +#define REG_TWI0_RHR (*(RoReg*)0x40018030U) /**< \brief (TWI0) Receive Holding Register */ +#define REG_TWI0_THR (*(WoReg*)0x40018034U) /**< \brief (TWI0) Transmit Holding Register */ +#define REG_TWI0_RPR (*(RwReg*)0x40018100U) /**< \brief (TWI0) Receive Pointer Register */ +#define REG_TWI0_RCR (*(RwReg*)0x40018104U) /**< \brief (TWI0) Receive Counter Register */ +#define REG_TWI0_TPR (*(RwReg*)0x40018108U) /**< \brief (TWI0) Transmit Pointer Register */ +#define REG_TWI0_TCR (*(RwReg*)0x4001810CU) /**< \brief (TWI0) Transmit Counter Register */ +#define REG_TWI0_RNPR (*(RwReg*)0x40018110U) /**< \brief (TWI0) Receive Next Pointer Register */ +#define REG_TWI0_RNCR (*(RwReg*)0x40018114U) /**< \brief (TWI0) Receive Next Counter Register */ +#define REG_TWI0_TNPR (*(RwReg*)0x40018118U) /**< \brief (TWI0) Transmit Next Pointer Register */ +#define REG_TWI0_TNCR (*(RwReg*)0x4001811CU) /**< \brief (TWI0) Transmit Next Counter Register */ +#define REG_TWI0_PTCR (*(WoReg*)0x40018120U) /**< \brief (TWI0) Transfer Control Register */ +#define REG_TWI0_PTSR (*(RoReg*)0x40018124U) /**< \brief (TWI0) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_TWI0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_twi1.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_twi1.h new file mode 100644 index 000000000..80027043f --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_twi1.h @@ -0,0 +1,60 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_TWI1_INSTANCE_ +#define _SAM3N_TWI1_INSTANCE_ + +/* ========== Register definition for TWI1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TWI1_CR (0x4001C000U) /**< \brief (TWI1) Control Register */ +#define REG_TWI1_MMR (0x4001C004U) /**< \brief (TWI1) Master Mode Register */ +#define REG_TWI1_SMR (0x4001C008U) /**< \brief (TWI1) Slave Mode Register */ +#define REG_TWI1_IADR (0x4001C00CU) /**< \brief (TWI1) Internal Address Register */ +#define REG_TWI1_CWGR (0x4001C010U) /**< \brief (TWI1) Clock Waveform Generator Register */ +#define REG_TWI1_SR (0x4001C020U) /**< \brief (TWI1) Status Register */ +#define REG_TWI1_IER (0x4001C024U) /**< \brief (TWI1) Interrupt Enable Register */ +#define REG_TWI1_IDR (0x4001C028U) /**< \brief (TWI1) Interrupt Disable Register */ +#define REG_TWI1_IMR (0x4001C02CU) /**< \brief (TWI1) Interrupt Mask Register */ +#define REG_TWI1_RHR (0x4001C030U) /**< \brief (TWI1) Receive Holding Register */ +#define REG_TWI1_THR (0x4001C034U) /**< \brief (TWI1) Transmit Holding Register */ +#else +#define REG_TWI1_CR (*(WoReg*)0x4001C000U) /**< \brief (TWI1) Control Register */ +#define REG_TWI1_MMR (*(RwReg*)0x4001C004U) /**< \brief (TWI1) Master Mode Register */ +#define REG_TWI1_SMR (*(RwReg*)0x4001C008U) /**< \brief (TWI1) Slave Mode Register */ +#define REG_TWI1_IADR (*(RwReg*)0x4001C00CU) /**< \brief (TWI1) Internal Address Register */ +#define REG_TWI1_CWGR (*(RwReg*)0x4001C010U) /**< \brief (TWI1) Clock Waveform Generator Register */ +#define REG_TWI1_SR (*(RoReg*)0x4001C020U) /**< \brief (TWI1) Status Register */ +#define REG_TWI1_IER (*(WoReg*)0x4001C024U) /**< \brief (TWI1) Interrupt Enable Register */ +#define REG_TWI1_IDR (*(WoReg*)0x4001C028U) /**< \brief (TWI1) Interrupt Disable Register */ +#define REG_TWI1_IMR (*(RoReg*)0x4001C02CU) /**< \brief (TWI1) Interrupt Mask Register */ +#define REG_TWI1_RHR (*(RoReg*)0x4001C030U) /**< \brief (TWI1) Receive Holding Register */ +#define REG_TWI1_THR (*(WoReg*)0x4001C034U) /**< \brief (TWI1) Transmit Holding Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_TWI1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_uart0.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_uart0.h new file mode 100644 index 000000000..8df44997c --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_uart0.h @@ -0,0 +1,76 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_UART0_INSTANCE_ +#define _SAM3N_UART0_INSTANCE_ + +/* ========== Register definition for UART0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_UART0_CR (0x400E0600U) /**< \brief (UART0) Control Register */ +#define REG_UART0_MR (0x400E0604U) /**< \brief (UART0) Mode Register */ +#define REG_UART0_IER (0x400E0608U) /**< \brief (UART0) Interrupt Enable Register */ +#define REG_UART0_IDR (0x400E060CU) /**< \brief (UART0) Interrupt Disable Register */ +#define REG_UART0_IMR (0x400E0610U) /**< \brief (UART0) Interrupt Mask Register */ +#define REG_UART0_SR (0x400E0614U) /**< \brief (UART0) Status Register */ +#define REG_UART0_RHR (0x400E0618U) /**< \brief (UART0) Receive Holding Register */ +#define REG_UART0_THR (0x400E061CU) /**< \brief (UART0) Transmit Holding Register */ +#define REG_UART0_BRGR (0x400E0620U) /**< \brief (UART0) Baud Rate Generator Register */ +#define REG_UART0_RPR (0x400E0700U) /**< \brief (UART0) Receive Pointer Register */ +#define REG_UART0_RCR (0x400E0704U) /**< \brief (UART0) Receive Counter Register */ +#define REG_UART0_TPR (0x400E0708U) /**< \brief (UART0) Transmit Pointer Register */ +#define REG_UART0_TCR (0x400E070CU) /**< \brief (UART0) Transmit Counter Register */ +#define REG_UART0_RNPR (0x400E0710U) /**< \brief (UART0) Receive Next Pointer Register */ +#define REG_UART0_RNCR (0x400E0714U) /**< \brief (UART0) Receive Next Counter Register */ +#define REG_UART0_TNPR (0x400E0718U) /**< \brief (UART0) Transmit Next Pointer Register */ +#define REG_UART0_TNCR (0x400E071CU) /**< \brief (UART0) Transmit Next Counter Register */ +#define REG_UART0_PTCR (0x400E0720U) /**< \brief (UART0) Transfer Control Register */ +#define REG_UART0_PTSR (0x400E0724U) /**< \brief (UART0) Transfer Status Register */ +#else +#define REG_UART0_CR (*(WoReg*)0x400E0600U) /**< \brief (UART0) Control Register */ +#define REG_UART0_MR (*(RwReg*)0x400E0604U) /**< \brief (UART0) Mode Register */ +#define REG_UART0_IER (*(WoReg*)0x400E0608U) /**< \brief (UART0) Interrupt Enable Register */ +#define REG_UART0_IDR (*(WoReg*)0x400E060CU) /**< \brief (UART0) Interrupt Disable Register */ +#define REG_UART0_IMR (*(RoReg*)0x400E0610U) /**< \brief (UART0) Interrupt Mask Register */ +#define REG_UART0_SR (*(RoReg*)0x400E0614U) /**< \brief (UART0) Status Register */ +#define REG_UART0_RHR (*(RoReg*)0x400E0618U) /**< \brief (UART0) Receive Holding Register */ +#define REG_UART0_THR (*(WoReg*)0x400E061CU) /**< \brief (UART0) Transmit Holding Register */ +#define REG_UART0_BRGR (*(RwReg*)0x400E0620U) /**< \brief (UART0) Baud Rate Generator Register */ +#define REG_UART0_RPR (*(RwReg*)0x400E0700U) /**< \brief (UART0) Receive Pointer Register */ +#define REG_UART0_RCR (*(RwReg*)0x400E0704U) /**< \brief (UART0) Receive Counter Register */ +#define REG_UART0_TPR (*(RwReg*)0x400E0708U) /**< \brief (UART0) Transmit Pointer Register */ +#define REG_UART0_TCR (*(RwReg*)0x400E070CU) /**< \brief (UART0) Transmit Counter Register */ +#define REG_UART0_RNPR (*(RwReg*)0x400E0710U) /**< \brief (UART0) Receive Next Pointer Register */ +#define REG_UART0_RNCR (*(RwReg*)0x400E0714U) /**< \brief (UART0) Receive Next Counter Register */ +#define REG_UART0_TNPR (*(RwReg*)0x400E0718U) /**< \brief (UART0) Transmit Next Pointer Register */ +#define REG_UART0_TNCR (*(RwReg*)0x400E071CU) /**< \brief (UART0) Transmit Next Counter Register */ +#define REG_UART0_PTCR (*(WoReg*)0x400E0720U) /**< \brief (UART0) Transfer Control Register */ +#define REG_UART0_PTSR (*(RoReg*)0x400E0724U) /**< \brief (UART0) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_UART0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_uart1.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_uart1.h new file mode 100644 index 000000000..970f792ec --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_uart1.h @@ -0,0 +1,56 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_UART1_INSTANCE_ +#define _SAM3N_UART1_INSTANCE_ + +/* ========== Register definition for UART1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_UART1_CR (0x400E0800U) /**< \brief (UART1) Control Register */ +#define REG_UART1_MR (0x400E0804U) /**< \brief (UART1) Mode Register */ +#define REG_UART1_IER (0x400E0808U) /**< \brief (UART1) Interrupt Enable Register */ +#define REG_UART1_IDR (0x400E080CU) /**< \brief (UART1) Interrupt Disable Register */ +#define REG_UART1_IMR (0x400E0810U) /**< \brief (UART1) Interrupt Mask Register */ +#define REG_UART1_SR (0x400E0814U) /**< \brief (UART1) Status Register */ +#define REG_UART1_RHR (0x400E0818U) /**< \brief (UART1) Receive Holding Register */ +#define REG_UART1_THR (0x400E081CU) /**< \brief (UART1) Transmit Holding Register */ +#define REG_UART1_BRGR (0x400E0820U) /**< \brief (UART1) Baud Rate Generator Register */ +#else +#define REG_UART1_CR (*(WoReg*)0x400E0800U) /**< \brief (UART1) Control Register */ +#define REG_UART1_MR (*(RwReg*)0x400E0804U) /**< \brief (UART1) Mode Register */ +#define REG_UART1_IER (*(WoReg*)0x400E0808U) /**< \brief (UART1) Interrupt Enable Register */ +#define REG_UART1_IDR (*(WoReg*)0x400E080CU) /**< \brief (UART1) Interrupt Disable Register */ +#define REG_UART1_IMR (*(RoReg*)0x400E0810U) /**< \brief (UART1) Interrupt Mask Register */ +#define REG_UART1_SR (*(RoReg*)0x400E0814U) /**< \brief (UART1) Status Register */ +#define REG_UART1_RHR (*(RoReg*)0x400E0818U) /**< \brief (UART1) Receive Holding Register */ +#define REG_UART1_THR (*(WoReg*)0x400E081CU) /**< \brief (UART1) Transmit Holding Register */ +#define REG_UART1_BRGR (*(RwReg*)0x400E0820U) /**< \brief (UART1) Baud Rate Generator Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_UART1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_usart0.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_usart0.h new file mode 100644 index 000000000..a974b6af6 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_usart0.h @@ -0,0 +1,90 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_USART0_INSTANCE_ +#define _SAM3N_USART0_INSTANCE_ + +/* ========== Register definition for USART0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_USART0_CR (0x40024000U) /**< \brief (USART0) Control Register */ +#define REG_USART0_MR (0x40024004U) /**< \brief (USART0) Mode Register */ +#define REG_USART0_IER (0x40024008U) /**< \brief (USART0) Interrupt Enable Register */ +#define REG_USART0_IDR (0x4002400CU) /**< \brief (USART0) Interrupt Disable Register */ +#define REG_USART0_IMR (0x40024010U) /**< \brief (USART0) Interrupt Mask Register */ +#define REG_USART0_CSR (0x40024014U) /**< \brief (USART0) Channel Status Register */ +#define REG_USART0_RHR (0x40024018U) /**< \brief (USART0) Receiver Holding Register */ +#define REG_USART0_THR (0x4002401CU) /**< \brief (USART0) Transmitter Holding Register */ +#define REG_USART0_BRGR (0x40024020U) /**< \brief (USART0) Baud Rate Generator Register */ +#define REG_USART0_RTOR (0x40024024U) /**< \brief (USART0) Receiver Time-out Register */ +#define REG_USART0_TTGR (0x40024028U) /**< \brief (USART0) Transmitter Timeguard Register */ +#define REG_USART0_FIDI (0x40024040U) /**< \brief (USART0) FI DI Ratio Register */ +#define REG_USART0_NER (0x40024044U) /**< \brief (USART0) Number of Errors Register */ +#define REG_USART0_IF (0x4002404CU) /**< \brief (USART0) IrDA Filter Register */ +#define REG_USART0_WPMR (0x400240E4U) /**< \brief (USART0) Write Protect Mode Register */ +#define REG_USART0_WPSR (0x400240E8U) /**< \brief (USART0) Write Protect Status Register */ +#define REG_USART0_RPR (0x40024100U) /**< \brief (USART0) Receive Pointer Register */ +#define REG_USART0_RCR (0x40024104U) /**< \brief (USART0) Receive Counter Register */ +#define REG_USART0_TPR (0x40024108U) /**< \brief (USART0) Transmit Pointer Register */ +#define REG_USART0_TCR (0x4002410CU) /**< \brief (USART0) Transmit Counter Register */ +#define REG_USART0_RNPR (0x40024110U) /**< \brief (USART0) Receive Next Pointer Register */ +#define REG_USART0_RNCR (0x40024114U) /**< \brief (USART0) Receive Next Counter Register */ +#define REG_USART0_TNPR (0x40024118U) /**< \brief (USART0) Transmit Next Pointer Register */ +#define REG_USART0_TNCR (0x4002411CU) /**< \brief (USART0) Transmit Next Counter Register */ +#define REG_USART0_PTCR (0x40024120U) /**< \brief (USART0) Transfer Control Register */ +#define REG_USART0_PTSR (0x40024124U) /**< \brief (USART0) Transfer Status Register */ +#else +#define REG_USART0_CR (*(WoReg*)0x40024000U) /**< \brief (USART0) Control Register */ +#define REG_USART0_MR (*(RwReg*)0x40024004U) /**< \brief (USART0) Mode Register */ +#define REG_USART0_IER (*(WoReg*)0x40024008U) /**< \brief (USART0) Interrupt Enable Register */ +#define REG_USART0_IDR (*(WoReg*)0x4002400CU) /**< \brief (USART0) Interrupt Disable Register */ +#define REG_USART0_IMR (*(RoReg*)0x40024010U) /**< \brief (USART0) Interrupt Mask Register */ +#define REG_USART0_CSR (*(RoReg*)0x40024014U) /**< \brief (USART0) Channel Status Register */ +#define REG_USART0_RHR (*(RoReg*)0x40024018U) /**< \brief (USART0) Receiver Holding Register */ +#define REG_USART0_THR (*(WoReg*)0x4002401CU) /**< \brief (USART0) Transmitter Holding Register */ +#define REG_USART0_BRGR (*(RwReg*)0x40024020U) /**< \brief (USART0) Baud Rate Generator Register */ +#define REG_USART0_RTOR (*(RwReg*)0x40024024U) /**< \brief (USART0) Receiver Time-out Register */ +#define REG_USART0_TTGR (*(RwReg*)0x40024028U) /**< \brief (USART0) Transmitter Timeguard Register */ +#define REG_USART0_FIDI (*(RwReg*)0x40024040U) /**< \brief (USART0) FI DI Ratio Register */ +#define REG_USART0_NER (*(RoReg*)0x40024044U) /**< \brief (USART0) Number of Errors Register */ +#define REG_USART0_IF (*(RwReg*)0x4002404CU) /**< \brief (USART0) IrDA Filter Register */ +#define REG_USART0_WPMR (*(RwReg*)0x400240E4U) /**< \brief (USART0) Write Protect Mode Register */ +#define REG_USART0_WPSR (*(RoReg*)0x400240E8U) /**< \brief (USART0) Write Protect Status Register */ +#define REG_USART0_RPR (*(RwReg*)0x40024100U) /**< \brief (USART0) Receive Pointer Register */ +#define REG_USART0_RCR (*(RwReg*)0x40024104U) /**< \brief (USART0) Receive Counter Register */ +#define REG_USART0_TPR (*(RwReg*)0x40024108U) /**< \brief (USART0) Transmit Pointer Register */ +#define REG_USART0_TCR (*(RwReg*)0x4002410CU) /**< \brief (USART0) Transmit Counter Register */ +#define REG_USART0_RNPR (*(RwReg*)0x40024110U) /**< \brief (USART0) Receive Next Pointer Register */ +#define REG_USART0_RNCR (*(RwReg*)0x40024114U) /**< \brief (USART0) Receive Next Counter Register */ +#define REG_USART0_TNPR (*(RwReg*)0x40024118U) /**< \brief (USART0) Transmit Next Pointer Register */ +#define REG_USART0_TNCR (*(RwReg*)0x4002411CU) /**< \brief (USART0) Transmit Next Counter Register */ +#define REG_USART0_PTCR (*(WoReg*)0x40024120U) /**< \brief (USART0) Transfer Control Register */ +#define REG_USART0_PTSR (*(RoReg*)0x40024124U) /**< \brief (USART0) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_USART0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_usart1.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_usart1.h new file mode 100644 index 000000000..cf49ff402 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_usart1.h @@ -0,0 +1,70 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_USART1_INSTANCE_ +#define _SAM3N_USART1_INSTANCE_ + +/* ========== Register definition for USART1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_USART1_CR (0x40028000U) /**< \brief (USART1) Control Register */ +#define REG_USART1_MR (0x40028004U) /**< \brief (USART1) Mode Register */ +#define REG_USART1_IER (0x40028008U) /**< \brief (USART1) Interrupt Enable Register */ +#define REG_USART1_IDR (0x4002800CU) /**< \brief (USART1) Interrupt Disable Register */ +#define REG_USART1_IMR (0x40028010U) /**< \brief (USART1) Interrupt Mask Register */ +#define REG_USART1_CSR (0x40028014U) /**< \brief (USART1) Channel Status Register */ +#define REG_USART1_RHR (0x40028018U) /**< \brief (USART1) Receiver Holding Register */ +#define REG_USART1_THR (0x4002801CU) /**< \brief (USART1) Transmitter Holding Register */ +#define REG_USART1_BRGR (0x40028020U) /**< \brief (USART1) Baud Rate Generator Register */ +#define REG_USART1_RTOR (0x40028024U) /**< \brief (USART1) Receiver Time-out Register */ +#define REG_USART1_TTGR (0x40028028U) /**< \brief (USART1) Transmitter Timeguard Register */ +#define REG_USART1_FIDI (0x40028040U) /**< \brief (USART1) FI DI Ratio Register */ +#define REG_USART1_NER (0x40028044U) /**< \brief (USART1) Number of Errors Register */ +#define REG_USART1_IF (0x4002804CU) /**< \brief (USART1) IrDA Filter Register */ +#define REG_USART1_WPMR (0x400280E4U) /**< \brief (USART1) Write Protect Mode Register */ +#define REG_USART1_WPSR (0x400280E8U) /**< \brief (USART1) Write Protect Status Register */ +#else +#define REG_USART1_CR (*(WoReg*)0x40028000U) /**< \brief (USART1) Control Register */ +#define REG_USART1_MR (*(RwReg*)0x40028004U) /**< \brief (USART1) Mode Register */ +#define REG_USART1_IER (*(WoReg*)0x40028008U) /**< \brief (USART1) Interrupt Enable Register */ +#define REG_USART1_IDR (*(WoReg*)0x4002800CU) /**< \brief (USART1) Interrupt Disable Register */ +#define REG_USART1_IMR (*(RoReg*)0x40028010U) /**< \brief (USART1) Interrupt Mask Register */ +#define REG_USART1_CSR (*(RoReg*)0x40028014U) /**< \brief (USART1) Channel Status Register */ +#define REG_USART1_RHR (*(RoReg*)0x40028018U) /**< \brief (USART1) Receiver Holding Register */ +#define REG_USART1_THR (*(WoReg*)0x4002801CU) /**< \brief (USART1) Transmitter Holding Register */ +#define REG_USART1_BRGR (*(RwReg*)0x40028020U) /**< \brief (USART1) Baud Rate Generator Register */ +#define REG_USART1_RTOR (*(RwReg*)0x40028024U) /**< \brief (USART1) Receiver Time-out Register */ +#define REG_USART1_TTGR (*(RwReg*)0x40028028U) /**< \brief (USART1) Transmitter Timeguard Register */ +#define REG_USART1_FIDI (*(RwReg*)0x40028040U) /**< \brief (USART1) FI DI Ratio Register */ +#define REG_USART1_NER (*(RoReg*)0x40028044U) /**< \brief (USART1) Number of Errors Register */ +#define REG_USART1_IF (*(RwReg*)0x4002804CU) /**< \brief (USART1) IrDA Filter Register */ +#define REG_USART1_WPMR (*(RwReg*)0x400280E4U) /**< \brief (USART1) Write Protect Mode Register */ +#define REG_USART1_WPSR (*(RoReg*)0x400280E8U) /**< \brief (USART1) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_USART1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_wdt.h b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_wdt.h new file mode 100644 index 000000000..7dd688377 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/instance/instance_wdt.h @@ -0,0 +1,44 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_WDT_INSTANCE_ +#define _SAM3N_WDT_INSTANCE_ + +/* ========== Register definition for WDT peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_WDT_CR (0x400E1450U) /**< \brief (WDT) Control Register */ +#define REG_WDT_MR (0x400E1454U) /**< \brief (WDT) Mode Register */ +#define REG_WDT_SR (0x400E1458U) /**< \brief (WDT) Status Register */ +#else +#define REG_WDT_CR (*(WoReg*)0x400E1450U) /**< \brief (WDT) Control Register */ +#define REG_WDT_MR (*(RwReg*)0x400E1454U) /**< \brief (WDT) Mode Register */ +#define REG_WDT_SR (*(RoReg*)0x400E1458U) /**< \brief (WDT) Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3N_WDT_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n1a.h b/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n1a.h new file mode 100644 index 000000000..2c8269454 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n1a.h @@ -0,0 +1,207 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N1A_PIO_ +#define _SAM3N1A_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PC31X1_AD15 (1u << 31) /**< \brief Adc signal: AD15 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PC16B_PCK0 (1u << 16) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PC17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PC14B_PCK2 (1u << 14) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA0A_PWM0 (1u << 0) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA11B_PWM0 (1u << 11) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA23B_PWM0 (1u << 23) /**< \brief Pwm signal: PWM0 */ +#define PIO_PB0A_PWM0 (1u << 0) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC8B_PWM0 (1u << 8) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC18B_PWM0 (1u << 18) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC22B_PWM0 (1u << 22) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA1A_PWM1 (1u << 1) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA12B_PWM1 (1u << 12) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA24B_PWM1 (1u << 24) /**< \brief Pwm signal: PWM1 */ +#define PIO_PB1A_PWM1 (1u << 1) /**< \brief Pwm signal: PWM1 */ +#define PIO_PC9B_PWM1 (1u << 9) /**< \brief Pwm signal: PWM1 */ +#define PIO_PC19B_PWM1 (1u << 19) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA2A_PWM2 (1u << 2) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA13B_PWM2 (1u << 13) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA25B_PWM2 (1u << 25) /**< \brief Pwm signal: PWM2 */ +#define PIO_PB4B_PWM2 (1u << 4) /**< \brief Pwm signal: PWM2 */ +#define PIO_PC10B_PWM2 (1u << 10) /**< \brief Pwm signal: PWM2 */ +#define PIO_PC20B_PWM2 (1u << 20) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA7B_PWM3 (1u << 7) /**< \brief Pwm signal: PWM3 */ +#define PIO_PA14B_PWM3 (1u << 14) /**< \brief Pwm signal: PWM3 */ +#define PIO_PB14B_PWM3 (1u << 14) /**< \brief Pwm signal: PWM3 */ +#define PIO_PC11B_PWM3 (1u << 11) /**< \brief Pwm signal: PWM3 */ +#define PIO_PC21B_PWM3 (1u << 21) /**< \brief Pwm signal: PWM3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC7B_NPCS2 (1u << 7) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 + +#endif /* _SAM3N1A_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n1b.h b/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n1b.h new file mode 100644 index 000000000..7ad975cc4 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n1b.h @@ -0,0 +1,239 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N1B_PIO_ +#define _SAM3N1B_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PC31X1_AD15 (1u << 31) /**< \brief Adc signal: AD15 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PC16B_PCK0 (1u << 16) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PC17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PC14B_PCK2 (1u << 14) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA0A_PWM0 (1u << 0) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA11B_PWM0 (1u << 11) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA23B_PWM0 (1u << 23) /**< \brief Pwm signal: PWM0 */ +#define PIO_PB0A_PWM0 (1u << 0) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC8B_PWM0 (1u << 8) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC18B_PWM0 (1u << 18) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC22B_PWM0 (1u << 22) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA1A_PWM1 (1u << 1) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA12B_PWM1 (1u << 12) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA24B_PWM1 (1u << 24) /**< \brief Pwm signal: PWM1 */ +#define PIO_PB1A_PWM1 (1u << 1) /**< \brief Pwm signal: PWM1 */ +#define PIO_PC9B_PWM1 (1u << 9) /**< \brief Pwm signal: PWM1 */ +#define PIO_PC19B_PWM1 (1u << 19) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA2A_PWM2 (1u << 2) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA13B_PWM2 (1u << 13) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA25B_PWM2 (1u << 25) /**< \brief Pwm signal: PWM2 */ +#define PIO_PB4B_PWM2 (1u << 4) /**< \brief Pwm signal: PWM2 */ +#define PIO_PC10B_PWM2 (1u << 10) /**< \brief Pwm signal: PWM2 */ +#define PIO_PC20B_PWM2 (1u << 20) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA7B_PWM3 (1u << 7) /**< \brief Pwm signal: PWM3 */ +#define PIO_PA14B_PWM3 (1u << 14) /**< \brief Pwm signal: PWM3 */ +#define PIO_PB14B_PWM3 (1u << 14) /**< \brief Pwm signal: PWM3 */ +#define PIO_PC11B_PWM3 (1u << 11) /**< \brief Pwm signal: PWM3 */ +#define PIO_PC21B_PWM3 (1u << 21) /**< \brief Pwm signal: PWM3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC7B_NPCS2 (1u << 7) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 + +#endif /* _SAM3N1B_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n1c.h b/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n1c.h new file mode 100644 index 000000000..34b412fc5 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n1c.h @@ -0,0 +1,313 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N1C_PIO_ +#define _SAM3N1C_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PC31X1_AD15 (1u << 31) /**< \brief Adc signal: AD15 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PC16B_PCK0 (1u << 16) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PC17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PC14B_PCK2 (1u << 14) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA0A_PWM0 (1u << 0) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA11B_PWM0 (1u << 11) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA23B_PWM0 (1u << 23) /**< \brief Pwm signal: PWM0 */ +#define PIO_PB0A_PWM0 (1u << 0) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC8B_PWM0 (1u << 8) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC18B_PWM0 (1u << 18) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC22B_PWM0 (1u << 22) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA1A_PWM1 (1u << 1) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA12B_PWM1 (1u << 12) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA24B_PWM1 (1u << 24) /**< \brief Pwm signal: PWM1 */ +#define PIO_PB1A_PWM1 (1u << 1) /**< \brief Pwm signal: PWM1 */ +#define PIO_PC9B_PWM1 (1u << 9) /**< \brief Pwm signal: PWM1 */ +#define PIO_PC19B_PWM1 (1u << 19) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA2A_PWM2 (1u << 2) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA13B_PWM2 (1u << 13) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA25B_PWM2 (1u << 25) /**< \brief Pwm signal: PWM2 */ +#define PIO_PB4B_PWM2 (1u << 4) /**< \brief Pwm signal: PWM2 */ +#define PIO_PC10B_PWM2 (1u << 10) /**< \brief Pwm signal: PWM2 */ +#define PIO_PC20B_PWM2 (1u << 20) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA7B_PWM3 (1u << 7) /**< \brief Pwm signal: PWM3 */ +#define PIO_PA14B_PWM3 (1u << 14) /**< \brief Pwm signal: PWM3 */ +#define PIO_PB14B_PWM3 (1u << 14) /**< \brief Pwm signal: PWM3 */ +#define PIO_PC11B_PWM3 (1u << 11) /**< \brief Pwm signal: PWM3 */ +#define PIO_PC21B_PWM3 (1u << 21) /**< \brief Pwm signal: PWM3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC7B_NPCS2 (1u << 7) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 + +#endif /* _SAM3N1C_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n2a.h b/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n2a.h new file mode 100644 index 000000000..f116941ba --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n2a.h @@ -0,0 +1,207 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N2A_PIO_ +#define _SAM3N2A_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PC31X1_AD15 (1u << 31) /**< \brief Adc signal: AD15 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PC16B_PCK0 (1u << 16) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PC17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PC14B_PCK2 (1u << 14) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA0A_PWM0 (1u << 0) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA11B_PWM0 (1u << 11) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA23B_PWM0 (1u << 23) /**< \brief Pwm signal: PWM0 */ +#define PIO_PB0A_PWM0 (1u << 0) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC8B_PWM0 (1u << 8) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC18B_PWM0 (1u << 18) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC22B_PWM0 (1u << 22) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA1A_PWM1 (1u << 1) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA12B_PWM1 (1u << 12) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA24B_PWM1 (1u << 24) /**< \brief Pwm signal: PWM1 */ +#define PIO_PB1A_PWM1 (1u << 1) /**< \brief Pwm signal: PWM1 */ +#define PIO_PC9B_PWM1 (1u << 9) /**< \brief Pwm signal: PWM1 */ +#define PIO_PC19B_PWM1 (1u << 19) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA2A_PWM2 (1u << 2) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA13B_PWM2 (1u << 13) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA25B_PWM2 (1u << 25) /**< \brief Pwm signal: PWM2 */ +#define PIO_PB4B_PWM2 (1u << 4) /**< \brief Pwm signal: PWM2 */ +#define PIO_PC10B_PWM2 (1u << 10) /**< \brief Pwm signal: PWM2 */ +#define PIO_PC20B_PWM2 (1u << 20) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA7B_PWM3 (1u << 7) /**< \brief Pwm signal: PWM3 */ +#define PIO_PA14B_PWM3 (1u << 14) /**< \brief Pwm signal: PWM3 */ +#define PIO_PB14B_PWM3 (1u << 14) /**< \brief Pwm signal: PWM3 */ +#define PIO_PC11B_PWM3 (1u << 11) /**< \brief Pwm signal: PWM3 */ +#define PIO_PC21B_PWM3 (1u << 21) /**< \brief Pwm signal: PWM3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC7B_NPCS2 (1u << 7) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 + +#endif /* _SAM3N2A_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n2b.h b/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n2b.h new file mode 100644 index 000000000..fdca60545 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n2b.h @@ -0,0 +1,239 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N2B_PIO_ +#define _SAM3N2B_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PC31X1_AD15 (1u << 31) /**< \brief Adc signal: AD15 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PC16B_PCK0 (1u << 16) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PC17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PC14B_PCK2 (1u << 14) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA0A_PWM0 (1u << 0) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA11B_PWM0 (1u << 11) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA23B_PWM0 (1u << 23) /**< \brief Pwm signal: PWM0 */ +#define PIO_PB0A_PWM0 (1u << 0) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC8B_PWM0 (1u << 8) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC18B_PWM0 (1u << 18) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC22B_PWM0 (1u << 22) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA1A_PWM1 (1u << 1) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA12B_PWM1 (1u << 12) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA24B_PWM1 (1u << 24) /**< \brief Pwm signal: PWM1 */ +#define PIO_PB1A_PWM1 (1u << 1) /**< \brief Pwm signal: PWM1 */ +#define PIO_PC9B_PWM1 (1u << 9) /**< \brief Pwm signal: PWM1 */ +#define PIO_PC19B_PWM1 (1u << 19) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA2A_PWM2 (1u << 2) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA13B_PWM2 (1u << 13) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA25B_PWM2 (1u << 25) /**< \brief Pwm signal: PWM2 */ +#define PIO_PB4B_PWM2 (1u << 4) /**< \brief Pwm signal: PWM2 */ +#define PIO_PC10B_PWM2 (1u << 10) /**< \brief Pwm signal: PWM2 */ +#define PIO_PC20B_PWM2 (1u << 20) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA7B_PWM3 (1u << 7) /**< \brief Pwm signal: PWM3 */ +#define PIO_PA14B_PWM3 (1u << 14) /**< \brief Pwm signal: PWM3 */ +#define PIO_PB14B_PWM3 (1u << 14) /**< \brief Pwm signal: PWM3 */ +#define PIO_PC11B_PWM3 (1u << 11) /**< \brief Pwm signal: PWM3 */ +#define PIO_PC21B_PWM3 (1u << 21) /**< \brief Pwm signal: PWM3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC7B_NPCS2 (1u << 7) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 + +#endif /* _SAM3N2B_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n2c.h b/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n2c.h new file mode 100644 index 000000000..6238d66ad --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n2c.h @@ -0,0 +1,313 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N2C_PIO_ +#define _SAM3N2C_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PC31X1_AD15 (1u << 31) /**< \brief Adc signal: AD15 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PC16B_PCK0 (1u << 16) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PC17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PC14B_PCK2 (1u << 14) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA0A_PWM0 (1u << 0) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA11B_PWM0 (1u << 11) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA23B_PWM0 (1u << 23) /**< \brief Pwm signal: PWM0 */ +#define PIO_PB0A_PWM0 (1u << 0) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC8B_PWM0 (1u << 8) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC18B_PWM0 (1u << 18) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC22B_PWM0 (1u << 22) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA1A_PWM1 (1u << 1) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA12B_PWM1 (1u << 12) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA24B_PWM1 (1u << 24) /**< \brief Pwm signal: PWM1 */ +#define PIO_PB1A_PWM1 (1u << 1) /**< \brief Pwm signal: PWM1 */ +#define PIO_PC9B_PWM1 (1u << 9) /**< \brief Pwm signal: PWM1 */ +#define PIO_PC19B_PWM1 (1u << 19) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA2A_PWM2 (1u << 2) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA13B_PWM2 (1u << 13) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA25B_PWM2 (1u << 25) /**< \brief Pwm signal: PWM2 */ +#define PIO_PB4B_PWM2 (1u << 4) /**< \brief Pwm signal: PWM2 */ +#define PIO_PC10B_PWM2 (1u << 10) /**< \brief Pwm signal: PWM2 */ +#define PIO_PC20B_PWM2 (1u << 20) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA7B_PWM3 (1u << 7) /**< \brief Pwm signal: PWM3 */ +#define PIO_PA14B_PWM3 (1u << 14) /**< \brief Pwm signal: PWM3 */ +#define PIO_PB14B_PWM3 (1u << 14) /**< \brief Pwm signal: PWM3 */ +#define PIO_PC11B_PWM3 (1u << 11) /**< \brief Pwm signal: PWM3 */ +#define PIO_PC21B_PWM3 (1u << 21) /**< \brief Pwm signal: PWM3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC7B_NPCS2 (1u << 7) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 + +#endif /* _SAM3N2C_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n4a.h b/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n4a.h new file mode 100644 index 000000000..0f3c1f280 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n4a.h @@ -0,0 +1,207 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N4A_PIO_ +#define _SAM3N4A_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PC31X1_AD15 (1u << 31) /**< \brief Adc signal: AD15 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PC16B_PCK0 (1u << 16) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PC17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PC14B_PCK2 (1u << 14) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA0A_PWM0 (1u << 0) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA11B_PWM0 (1u << 11) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA23B_PWM0 (1u << 23) /**< \brief Pwm signal: PWM0 */ +#define PIO_PB0A_PWM0 (1u << 0) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC8B_PWM0 (1u << 8) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC18B_PWM0 (1u << 18) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC22B_PWM0 (1u << 22) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA1A_PWM1 (1u << 1) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA12B_PWM1 (1u << 12) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA24B_PWM1 (1u << 24) /**< \brief Pwm signal: PWM1 */ +#define PIO_PB1A_PWM1 (1u << 1) /**< \brief Pwm signal: PWM1 */ +#define PIO_PC9B_PWM1 (1u << 9) /**< \brief Pwm signal: PWM1 */ +#define PIO_PC19B_PWM1 (1u << 19) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA2A_PWM2 (1u << 2) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA13B_PWM2 (1u << 13) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA25B_PWM2 (1u << 25) /**< \brief Pwm signal: PWM2 */ +#define PIO_PB4B_PWM2 (1u << 4) /**< \brief Pwm signal: PWM2 */ +#define PIO_PC10B_PWM2 (1u << 10) /**< \brief Pwm signal: PWM2 */ +#define PIO_PC20B_PWM2 (1u << 20) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA7B_PWM3 (1u << 7) /**< \brief Pwm signal: PWM3 */ +#define PIO_PA14B_PWM3 (1u << 14) /**< \brief Pwm signal: PWM3 */ +#define PIO_PB14B_PWM3 (1u << 14) /**< \brief Pwm signal: PWM3 */ +#define PIO_PC11B_PWM3 (1u << 11) /**< \brief Pwm signal: PWM3 */ +#define PIO_PC21B_PWM3 (1u << 21) /**< \brief Pwm signal: PWM3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC7B_NPCS2 (1u << 7) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 + +#endif /* _SAM3N4A_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n4b.h b/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n4b.h new file mode 100644 index 000000000..ee99ea68e --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n4b.h @@ -0,0 +1,239 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N4B_PIO_ +#define _SAM3N4B_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PC31X1_AD15 (1u << 31) /**< \brief Adc signal: AD15 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PC16B_PCK0 (1u << 16) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PC17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PC14B_PCK2 (1u << 14) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA0A_PWM0 (1u << 0) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA11B_PWM0 (1u << 11) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA23B_PWM0 (1u << 23) /**< \brief Pwm signal: PWM0 */ +#define PIO_PB0A_PWM0 (1u << 0) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC8B_PWM0 (1u << 8) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC18B_PWM0 (1u << 18) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC22B_PWM0 (1u << 22) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA1A_PWM1 (1u << 1) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA12B_PWM1 (1u << 12) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA24B_PWM1 (1u << 24) /**< \brief Pwm signal: PWM1 */ +#define PIO_PB1A_PWM1 (1u << 1) /**< \brief Pwm signal: PWM1 */ +#define PIO_PC9B_PWM1 (1u << 9) /**< \brief Pwm signal: PWM1 */ +#define PIO_PC19B_PWM1 (1u << 19) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA2A_PWM2 (1u << 2) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA13B_PWM2 (1u << 13) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA25B_PWM2 (1u << 25) /**< \brief Pwm signal: PWM2 */ +#define PIO_PB4B_PWM2 (1u << 4) /**< \brief Pwm signal: PWM2 */ +#define PIO_PC10B_PWM2 (1u << 10) /**< \brief Pwm signal: PWM2 */ +#define PIO_PC20B_PWM2 (1u << 20) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA7B_PWM3 (1u << 7) /**< \brief Pwm signal: PWM3 */ +#define PIO_PA14B_PWM3 (1u << 14) /**< \brief Pwm signal: PWM3 */ +#define PIO_PB14B_PWM3 (1u << 14) /**< \brief Pwm signal: PWM3 */ +#define PIO_PC11B_PWM3 (1u << 11) /**< \brief Pwm signal: PWM3 */ +#define PIO_PC21B_PWM3 (1u << 21) /**< \brief Pwm signal: PWM3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC7B_NPCS2 (1u << 7) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 + +#endif /* _SAM3N4B_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n4c.h b/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n4c.h new file mode 100644 index 000000000..30f256f7d --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/pio/pio_sam3n4c.h @@ -0,0 +1,313 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N4C_PIO_ +#define _SAM3N4C_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PC31X1_AD15 (1u << 31) /**< \brief Adc signal: AD15 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PC16B_PCK0 (1u << 16) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PC17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PC14B_PCK2 (1u << 14) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA0A_PWM0 (1u << 0) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA11B_PWM0 (1u << 11) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA23B_PWM0 (1u << 23) /**< \brief Pwm signal: PWM0 */ +#define PIO_PB0A_PWM0 (1u << 0) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC8B_PWM0 (1u << 8) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC18B_PWM0 (1u << 18) /**< \brief Pwm signal: PWM0 */ +#define PIO_PC22B_PWM0 (1u << 22) /**< \brief Pwm signal: PWM0 */ +#define PIO_PA1A_PWM1 (1u << 1) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA12B_PWM1 (1u << 12) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA24B_PWM1 (1u << 24) /**< \brief Pwm signal: PWM1 */ +#define PIO_PB1A_PWM1 (1u << 1) /**< \brief Pwm signal: PWM1 */ +#define PIO_PC9B_PWM1 (1u << 9) /**< \brief Pwm signal: PWM1 */ +#define PIO_PC19B_PWM1 (1u << 19) /**< \brief Pwm signal: PWM1 */ +#define PIO_PA2A_PWM2 (1u << 2) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA13B_PWM2 (1u << 13) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA25B_PWM2 (1u << 25) /**< \brief Pwm signal: PWM2 */ +#define PIO_PB4B_PWM2 (1u << 4) /**< \brief Pwm signal: PWM2 */ +#define PIO_PC10B_PWM2 (1u << 10) /**< \brief Pwm signal: PWM2 */ +#define PIO_PC20B_PWM2 (1u << 20) /**< \brief Pwm signal: PWM2 */ +#define PIO_PA7B_PWM3 (1u << 7) /**< \brief Pwm signal: PWM3 */ +#define PIO_PA14B_PWM3 (1u << 14) /**< \brief Pwm signal: PWM3 */ +#define PIO_PB14B_PWM3 (1u << 14) /**< \brief Pwm signal: PWM3 */ +#define PIO_PC11B_PWM3 (1u << 11) /**< \brief Pwm signal: PWM3 */ +#define PIO_PC21B_PWM3 (1u << 21) /**< \brief Pwm signal: PWM3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC7B_NPCS2 (1u << 7) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 + +#endif /* _SAM3N4C_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n.h b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n.h new file mode 100644 index 000000000..5fab9c49a --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n.h @@ -0,0 +1,55 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N_ +#define _SAM3N_ + +#if defined __SAM3N1A__ + #include "sam3n1a.h" +#elif defined __SAM3N1B__ + #include "sam3n1b.h" +#elif defined __SAM3N1C__ + #include "sam3n1c.h" +#elif defined __SAM3N2A__ + #include "sam3n2a.h" +#elif defined __SAM3N2B__ + #include "sam3n2b.h" +#elif defined __SAM3N2C__ + #include "sam3n2c.h" +#elif defined __SAM3N4A__ + #include "sam3n4a.h" +#elif defined __SAM3N4B__ + #include "sam3n4b.h" +#elif defined __SAM3N4C__ + #include "sam3n4c.h" +#else + #error Library does not support the specified device. +#endif + +#endif /* _SAM3N_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n1a.h b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n1a.h new file mode 100644 index 000000000..f3550a462 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n1a.h @@ -0,0 +1,316 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N1A_ +#define _SAM3N1A_ + +/** \addtogroup SAM3N1A_definitions SAM3N1A definitions + This file defines all structures and symbols for SAM3N1A: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3N1A */ +/* ************************************************************************** */ +/** \addtogroup SAM3N1A_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3N1A specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3N1A Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3N1A Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3N1A Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3N1A Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3N1A Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3N1A Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3N1A Enhanced Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3N1A UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3N1A UART 1 (UART1) */ + PIOA_IRQn = 11, /**< 11 SAM3N1A Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3N1A Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 14, /**< 14 SAM3N1A USART 0 (USART0) */ + TWI0_IRQn = 19, /**< 19 SAM3N1A Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3N1A Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3N1A Serial Peripheral Interface (SPI) */ + TC0_IRQn = 23, /**< 23 SAM3N1A Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3N1A Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3N1A Timer/Counter 2 (TC2) */ + ADC_IRQn = 29, /**< 29 SAM3N1A Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3N1A Digital To Analog Converter (DACC) */ + PWM_IRQn = 31 /**< 31 SAM3N1A Pulse Width Modulation (PWM) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3N1A core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 0 /**< SAM3N1A does not provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3N1A uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3N1A */ +/* ************************************************************************** */ +/** \addtogroup SAM3N1A_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3N1A */ +/* ************************************************************************** */ +/** \addtogroup SAM3N1A_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3N1A */ +/* ************************************************************************** */ +/** \addtogroup SAM3N1A_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3N1A */ +/* ************************************************************************** */ +/** \addtogroup SAM3N1A_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3N1A */ +/* ************************************************************************** */ +/** \addtogroup SAM3N1A_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3n1a.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3N1A */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x10000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (256u) +#define IFLASH_NB_OF_LOCK_BITS (4u) +#define IRAM_SIZE (0x2000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3N1A */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (48000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3N1A_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n1b.h b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n1b.h new file mode 100644 index 000000000..1e0e63243 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n1b.h @@ -0,0 +1,321 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N1B_ +#define _SAM3N1B_ + +/** \addtogroup SAM3N1B_definitions SAM3N1B definitions + This file defines all structures and symbols for SAM3N1B: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3N1B */ +/* ************************************************************************** */ +/** \addtogroup SAM3N1B_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3N1B specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3N1B Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3N1B Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3N1B Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3N1B Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3N1B Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3N1B Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3N1B Enhanced Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3N1B UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3N1B UART 1 (UART1) */ + PIOA_IRQn = 11, /**< 11 SAM3N1B Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3N1B Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 14, /**< 14 SAM3N1B USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM3N1B USART 1 (USART1) */ + TWI0_IRQn = 19, /**< 19 SAM3N1B Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3N1B Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3N1B Serial Peripheral Interface (SPI) */ + TC0_IRQn = 23, /**< 23 SAM3N1B Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3N1B Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3N1B Timer/Counter 2 (TC2) */ + ADC_IRQn = 29, /**< 29 SAM3N1B Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3N1B Digital To Analog Converter (DACC) */ + PWM_IRQn = 31 /**< 31 SAM3N1B Pulse Width Modulation (PWM) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3N1B core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 0 /**< SAM3N1B does not provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3N1B uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3N1B */ +/* ************************************************************************** */ +/** \addtogroup SAM3N1B_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3N1B */ +/* ************************************************************************** */ +/** \addtogroup SAM3N1B_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3N1B */ +/* ************************************************************************** */ +/** \addtogroup SAM3N1B_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3N1B */ +/* ************************************************************************** */ +/** \addtogroup SAM3N1B_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1 ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1 ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3N1B */ +/* ************************************************************************** */ +/** \addtogroup SAM3N1B_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3n1b.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3N1B */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x10000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (256u) +#define IFLASH_NB_OF_LOCK_BITS (4u) +#define IRAM_SIZE (0x2000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3N1B */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (48000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3N1B_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n1c.h b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n1c.h new file mode 100644 index 000000000..49b67392e --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n1c.h @@ -0,0 +1,335 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N1C_ +#define _SAM3N1C_ + +/** \addtogroup SAM3N1C_definitions SAM3N1C definitions + This file defines all structures and symbols for SAM3N1C: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3N1C */ +/* ************************************************************************** */ +/** \addtogroup SAM3N1C_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3N1C specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3N1C Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3N1C Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3N1C Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3N1C Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3N1C Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3N1C Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3N1C Enhanced Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3N1C UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3N1C UART 1 (UART1) */ + PIOA_IRQn = 11, /**< 11 SAM3N1C Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3N1C Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 13, /**< 13 SAM3N1C Parallel I/O Controller C (PIOC) */ + USART0_IRQn = 14, /**< 14 SAM3N1C USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM3N1C USART 1 (USART1) */ + TWI0_IRQn = 19, /**< 19 SAM3N1C Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3N1C Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3N1C Serial Peripheral Interface (SPI) */ + TC0_IRQn = 23, /**< 23 SAM3N1C Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3N1C Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3N1C Timer/Counter 2 (TC2) */ + TC3_IRQn = 26, /**< 26 SAM3N1C Timer/Counter 3 (TC3) */ + TC4_IRQn = 27, /**< 27 SAM3N1C Timer/Counter 4 (TC4) */ + TC5_IRQn = 28, /**< 28 SAM3N1C Timer/Counter 5 (TC5) */ + ADC_IRQn = 29, /**< 29 SAM3N1C Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3N1C Digital To Analog Converter (DACC) */ + PWM_IRQn = 31 /**< 31 SAM3N1C Pulse Width Modulation (PWM) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3N1C core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 0 /**< SAM3N1C does not provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3N1C uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3N1C */ +/* ************************************************************************** */ +/** \addtogroup SAM3N1C_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3N1C */ +/* ************************************************************************** */ +/** \addtogroup SAM3N1C_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_tc1.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_pioc.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3N1C */ +/* ************************************************************************** */ +/** \addtogroup SAM3N1C_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (13) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_TC3 (26) /**< \brief Timer/Counter 3 (TC3) */ +#define ID_TC4 (27) /**< \brief Timer/Counter 4 (TC4) */ +#define ID_TC5 (28) /**< \brief Timer/Counter 5 (TC5) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3N1C */ +/* ************************************************************************** */ +/** \addtogroup SAM3N1C_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40014000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1 ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40014000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1 ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3N1C */ +/* ************************************************************************** */ +/** \addtogroup SAM3N1C_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3n1c.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3N1C */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x10000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (256u) +#define IFLASH_NB_OF_LOCK_BITS (4u) +#define IRAM_SIZE (0x2000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3N1C */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (48000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3N1C_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n2a.h b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n2a.h new file mode 100644 index 000000000..7bece6d33 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n2a.h @@ -0,0 +1,316 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N2A_ +#define _SAM3N2A_ + +/** \addtogroup SAM3N2A_definitions SAM3N2A definitions + This file defines all structures and symbols for SAM3N2A: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3N2A */ +/* ************************************************************************** */ +/** \addtogroup SAM3N2A_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3N2A specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3N2A Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3N2A Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3N2A Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3N2A Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3N2A Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3N2A Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3N2A Enhanced Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3N2A UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3N2A UART 1 (UART1) */ + PIOA_IRQn = 11, /**< 11 SAM3N2A Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3N2A Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 14, /**< 14 SAM3N2A USART 0 (USART0) */ + TWI0_IRQn = 19, /**< 19 SAM3N2A Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3N2A Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3N2A Serial Peripheral Interface (SPI) */ + TC0_IRQn = 23, /**< 23 SAM3N2A Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3N2A Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3N2A Timer/Counter 2 (TC2) */ + ADC_IRQn = 29, /**< 29 SAM3N2A Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3N2A Digital To Analog Converter (DACC) */ + PWM_IRQn = 31 /**< 31 SAM3N2A Pulse Width Modulation (PWM) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3N2A core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 0 /**< SAM3N2A does not provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3N2A uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3N2A */ +/* ************************************************************************** */ +/** \addtogroup SAM3N2A_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3N2A */ +/* ************************************************************************** */ +/** \addtogroup SAM3N2A_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3N2A */ +/* ************************************************************************** */ +/** \addtogroup SAM3N2A_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3N2A */ +/* ************************************************************************** */ +/** \addtogroup SAM3N2A_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3N2A */ +/* ************************************************************************** */ +/** \addtogroup SAM3N2A_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3n2a.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3N2A */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x20000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (512u) +#define IFLASH_NB_OF_LOCK_BITS (8u) +#define IRAM_SIZE (0x4000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3N2A */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (48000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3N2A_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n2b.h b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n2b.h new file mode 100644 index 000000000..075fa2aae --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n2b.h @@ -0,0 +1,321 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N2B_ +#define _SAM3N2B_ + +/** \addtogroup SAM3N2B_definitions SAM3N2B definitions + This file defines all structures and symbols for SAM3N2B: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3N2B */ +/* ************************************************************************** */ +/** \addtogroup SAM3N2B_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3N2B specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3N2B Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3N2B Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3N2B Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3N2B Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3N2B Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3N2B Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3N2B Enhanced Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3N2B UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3N2B UART 1 (UART1) */ + PIOA_IRQn = 11, /**< 11 SAM3N2B Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3N2B Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 14, /**< 14 SAM3N2B USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM3N2B USART 1 (USART1) */ + TWI0_IRQn = 19, /**< 19 SAM3N2B Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3N2B Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3N2B Serial Peripheral Interface (SPI) */ + TC0_IRQn = 23, /**< 23 SAM3N2B Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3N2B Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3N2B Timer/Counter 2 (TC2) */ + ADC_IRQn = 29, /**< 29 SAM3N2B Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3N2B Digital To Analog Converter (DACC) */ + PWM_IRQn = 31 /**< 31 SAM3N2B Pulse Width Modulation (PWM) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3N2B core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 0 /**< SAM3N2B does not provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3N2B uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3N2B */ +/* ************************************************************************** */ +/** \addtogroup SAM3N2B_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3N2B */ +/* ************************************************************************** */ +/** \addtogroup SAM3N2B_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3N2B */ +/* ************************************************************************** */ +/** \addtogroup SAM3N2B_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3N2B */ +/* ************************************************************************** */ +/** \addtogroup SAM3N2B_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1 ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1 ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3N2B */ +/* ************************************************************************** */ +/** \addtogroup SAM3N2B_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3n2b.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3N2B */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x20000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (512u) +#define IFLASH_NB_OF_LOCK_BITS (8u) +#define IRAM_SIZE (0x4000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3N2B */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (48000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3N2B_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n2c.h b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n2c.h new file mode 100644 index 000000000..2e47fac70 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n2c.h @@ -0,0 +1,335 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N2C_ +#define _SAM3N2C_ + +/** \addtogroup SAM3N2C_definitions SAM3N2C definitions + This file defines all structures and symbols for SAM3N2C: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3N2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3N2C_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3N2C specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3N2C Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3N2C Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3N2C Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3N2C Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3N2C Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3N2C Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3N2C Enhanced Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3N2C UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3N2C UART 1 (UART1) */ + PIOA_IRQn = 11, /**< 11 SAM3N2C Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3N2C Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 13, /**< 13 SAM3N2C Parallel I/O Controller C (PIOC) */ + USART0_IRQn = 14, /**< 14 SAM3N2C USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM3N2C USART 1 (USART1) */ + TWI0_IRQn = 19, /**< 19 SAM3N2C Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3N2C Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3N2C Serial Peripheral Interface (SPI) */ + TC0_IRQn = 23, /**< 23 SAM3N2C Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3N2C Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3N2C Timer/Counter 2 (TC2) */ + TC3_IRQn = 26, /**< 26 SAM3N2C Timer/Counter 3 (TC3) */ + TC4_IRQn = 27, /**< 27 SAM3N2C Timer/Counter 4 (TC4) */ + TC5_IRQn = 28, /**< 28 SAM3N2C Timer/Counter 5 (TC5) */ + ADC_IRQn = 29, /**< 29 SAM3N2C Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3N2C Digital To Analog Converter (DACC) */ + PWM_IRQn = 31 /**< 31 SAM3N2C Pulse Width Modulation (PWM) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3N2C core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 0 /**< SAM3N2C does not provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3N2C uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3N2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3N2C_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3N2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3N2C_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_tc1.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_pioc.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3N2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3N2C_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (13) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_TC3 (26) /**< \brief Timer/Counter 3 (TC3) */ +#define ID_TC4 (27) /**< \brief Timer/Counter 4 (TC4) */ +#define ID_TC5 (28) /**< \brief Timer/Counter 5 (TC5) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3N2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3N2C_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40014000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1 ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40014000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1 ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3N2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3N2C_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3n2c.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3N2C */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x20000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (512u) +#define IFLASH_NB_OF_LOCK_BITS (8u) +#define IRAM_SIZE (0x4000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3N2C */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (48000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3N2C_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n4a.h b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n4a.h new file mode 100644 index 000000000..a303cb3a4 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n4a.h @@ -0,0 +1,316 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N4A_ +#define _SAM3N4A_ + +/** \addtogroup SAM3N4A_definitions SAM3N4A definitions + This file defines all structures and symbols for SAM3N4A: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3N4A */ +/* ************************************************************************** */ +/** \addtogroup SAM3N4A_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3N4A specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3N4A Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3N4A Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3N4A Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3N4A Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3N4A Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3N4A Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3N4A Enhanced Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3N4A UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3N4A UART 1 (UART1) */ + PIOA_IRQn = 11, /**< 11 SAM3N4A Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3N4A Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 14, /**< 14 SAM3N4A USART 0 (USART0) */ + TWI0_IRQn = 19, /**< 19 SAM3N4A Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3N4A Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3N4A Serial Peripheral Interface (SPI) */ + TC0_IRQn = 23, /**< 23 SAM3N4A Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3N4A Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3N4A Timer/Counter 2 (TC2) */ + ADC_IRQn = 29, /**< 29 SAM3N4A Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3N4A Digital To Analog Converter (DACC) */ + PWM_IRQn = 31 /**< 31 SAM3N4A Pulse Width Modulation (PWM) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3N4A core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 0 /**< SAM3N4A does not provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3N4A uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3N4A */ +/* ************************************************************************** */ +/** \addtogroup SAM3N4A_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3N4A */ +/* ************************************************************************** */ +/** \addtogroup SAM3N4A_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3N4A */ +/* ************************************************************************** */ +/** \addtogroup SAM3N4A_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3N4A */ +/* ************************************************************************** */ +/** \addtogroup SAM3N4A_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3N4A */ +/* ************************************************************************** */ +/** \addtogroup SAM3N4A_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3n4a.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3N4A */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x40000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (1024u) +#define IFLASH_NB_OF_LOCK_BITS (16u) +#define IRAM_SIZE (0x6000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3N4A */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (48000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3N4A_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n4b.h b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n4b.h new file mode 100644 index 000000000..0c7a6763b --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n4b.h @@ -0,0 +1,321 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N4B_ +#define _SAM3N4B_ + +/** \addtogroup SAM3N4B_definitions SAM3N4B definitions + This file defines all structures and symbols for SAM3N4B: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3N4B */ +/* ************************************************************************** */ +/** \addtogroup SAM3N4B_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3N4B specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3N4B Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3N4B Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3N4B Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3N4B Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3N4B Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3N4B Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3N4B Enhanced Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3N4B UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3N4B UART 1 (UART1) */ + PIOA_IRQn = 11, /**< 11 SAM3N4B Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3N4B Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 14, /**< 14 SAM3N4B USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM3N4B USART 1 (USART1) */ + TWI0_IRQn = 19, /**< 19 SAM3N4B Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3N4B Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3N4B Serial Peripheral Interface (SPI) */ + TC0_IRQn = 23, /**< 23 SAM3N4B Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3N4B Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3N4B Timer/Counter 2 (TC2) */ + ADC_IRQn = 29, /**< 29 SAM3N4B Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3N4B Digital To Analog Converter (DACC) */ + PWM_IRQn = 31 /**< 31 SAM3N4B Pulse Width Modulation (PWM) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3N4B core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 0 /**< SAM3N4B does not provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3N4B uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3N4B */ +/* ************************************************************************** */ +/** \addtogroup SAM3N4B_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3N4B */ +/* ************************************************************************** */ +/** \addtogroup SAM3N4B_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3N4B */ +/* ************************************************************************** */ +/** \addtogroup SAM3N4B_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3N4B */ +/* ************************************************************************** */ +/** \addtogroup SAM3N4B_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1 ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1 ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3N4B */ +/* ************************************************************************** */ +/** \addtogroup SAM3N4B_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3n4b.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3N4B */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x40000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (1024u) +#define IFLASH_NB_OF_LOCK_BITS (16u) +#define IRAM_SIZE (0x6000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3N4B */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (48000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3N4B_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n4c.h b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n4c.h new file mode 100644 index 000000000..90541382f --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/include/sam3n4c.h @@ -0,0 +1,335 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3N4C_ +#define _SAM3N4C_ + +/** \addtogroup SAM3N4C_definitions SAM3N4C definitions + This file defines all structures and symbols for SAM3N4C: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3N4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3N4C_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3N4C specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3N4C Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3N4C Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3N4C Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3N4C Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3N4C Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3N4C Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3N4C Enhanced Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3N4C UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3N4C UART 1 (UART1) */ + PIOA_IRQn = 11, /**< 11 SAM3N4C Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3N4C Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 13, /**< 13 SAM3N4C Parallel I/O Controller C (PIOC) */ + USART0_IRQn = 14, /**< 14 SAM3N4C USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM3N4C USART 1 (USART1) */ + TWI0_IRQn = 19, /**< 19 SAM3N4C Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3N4C Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3N4C Serial Peripheral Interface (SPI) */ + TC0_IRQn = 23, /**< 23 SAM3N4C Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3N4C Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3N4C Timer/Counter 2 (TC2) */ + TC3_IRQn = 26, /**< 26 SAM3N4C Timer/Counter 3 (TC3) */ + TC4_IRQn = 27, /**< 27 SAM3N4C Timer/Counter 4 (TC4) */ + TC5_IRQn = 28, /**< 28 SAM3N4C Timer/Counter 5 (TC5) */ + ADC_IRQn = 29, /**< 29 SAM3N4C Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3N4C Digital To Analog Converter (DACC) */ + PWM_IRQn = 31 /**< 31 SAM3N4C Pulse Width Modulation (PWM) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3N4C core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 0 /**< SAM3N4C does not provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3N4C uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3N4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3N4C_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3N4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3N4C_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_tc1.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_pioc.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3N4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3N4C_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (13) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_TC3 (26) /**< \brief Timer/Counter 3 (TC3) */ +#define ID_TC4 (27) /**< \brief Timer/Counter 4 (TC4) */ +#define ID_TC5 (28) /**< \brief Timer/Counter 5 (TC5) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3N4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3N4C_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40014000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1 ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40014000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1 ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3N4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3N4C_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3n4c.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3N4C */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x40000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (1024u) +#define IFLASH_NB_OF_LOCK_BITS (16u) +#define IRAM_SIZE (0x6000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3N4C */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (48000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3N4C_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/source/templates/exceptions.c b/hardware/sam/system/libsam/cmsis/sam3n/source/templates/exceptions.c new file mode 100644 index 000000000..4e9831ac1 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/source/templates/exceptions.c @@ -0,0 +1,131 @@ +/*! \file ********************************************************************* + * + * \brief This file contains the default exception handlers. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \note + * The exception handler has weak aliases. + * As they are weak aliases, any function with the same name will override + * this definition. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#include "exceptions.h" + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +#ifdef __GNUC__ +/* Cortex-M3 core handlers */ +void Reset_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void NMI_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void MemManage_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void BusFault_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void UsageFault_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVC_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void DebugMon_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void SUPC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void RSTC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTT_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PMC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void EFC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void UART0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void UART1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOA_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOB_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void USART0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void USART1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TWI0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TWI1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SPI_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC2_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void ADC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void DACC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PWM_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* __GNUC__ */ + +#ifdef __ICCARM__ +/* Cortex-M3 core handlers */ +#pragma weak Reset_Handler=Dummy_Handler +#pragma weak NMI_Handler=Dummy_Handler +#pragma weak HardFault_Handler=Dummy_Handler +#pragma weak MemManage_Handler=Dummy_Handler +#pragma weak BusFault_Handler=Dummy_Handler +#pragma weak UsageFault_Handler=Dummy_Handler +#pragma weak SVC_Handler=Dummy_Handler +#pragma weak DebugMon_Handler=Dummy_Handler +#pragma weak PendSV_Handler=Dummy_Handler +#pragma weak SysTick_Handler=Dummy_Handler + +/* Peripherals handlers */ +#pragma weak SUPC_IrqHandler=Dummy_Handler +#pragma weak RSTC_IrqHandler=Dummy_Handler +#pragma weak RTC_IrqHandler=Dummy_Handler +#pragma weak RTT_IrqHandler=Dummy_Handler +#pragma weak WDT_IrqHandler=Dummy_Handler +#pragma weak PMC_IrqHandler=Dummy_Handler +#pragma weak EFC_IrqHandler=Dummy_Handler +#pragma weak UART0_IrqHandler=Dummy_Handler +#pragma weak UART1_IrqHandler=Dummy_Handler +#pragma weak PIOA_IrqHandler=Dummy_Handler +#pragma weak PIOB_IrqHandler=Dummy_Handler +#pragma weak PIOC_IrqHandler=Dummy_Handler +#pragma weak USART0_IrqHandler=Dummy_Handler +#pragma weak USART1_IrqHandler=Dummy_Handler +#pragma weak TWI0_IrqHandler=Dummy_Handler +#pragma weak TWI1_IrqHandler=Dummy_Handler +#pragma weak SPI_IrqHandler=Dummy_Handler +#pragma weak TC0_IrqHandler=Dummy_Handler +#pragma weak TC1_IrqHandler=Dummy_Handler +#pragma weak TC2_IrqHandler=Dummy_Handler +#pragma weak TC3_IrqHandler=Dummy_Handler +#pragma weak TC4_IrqHandler=Dummy_Handler +#pragma weak TC5_IrqHandler=Dummy_Handler +#pragma weak ADC_IrqHandler=Dummy_Handler +#pragma weak DACC_IrqHandler=Dummy_Handler +#pragma weak PWM_IrqHandler=Dummy_Handler +#endif /* __ICCARM__ */ + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/source/templates/exceptions.h b/hardware/sam/system/libsam/cmsis/sam3n/source/templates/exceptions.h new file mode 100644 index 000000000..6130e1e78 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/source/templates/exceptions.h @@ -0,0 +1,82 @@ +/*! \file ********************************************************************* + * + * \brief This file contains the interface for default exception handlers. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#ifndef EXCEPTIONS_H_INCLUDED +#define EXCEPTIONS_H_INCLUDED + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +/* Function prototype for exception table items (interrupt handler). */ +typedef void (*IntFunc) (void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M3 core handlers */ +void Reset_Handler(void); +void NMI_Handler(void); +void HardFault_Handler(void); +void MemManage_Handler(void); +void BusFault_Handler(void); +void UsageFault_Handler(void); +void SVC_Handler(void); +void DebugMon_Handler(void); +void PendSV_Handler(void); +void SysTick_Handler(void); + +/* Peripherals handlers */ +void SUPC_IrqHandler(void); +void RSTC_IrqHandler(void); +void RTC_IrqHandler(void); +void RTT_IrqHandler(void); +void WDT_IrqHandler(void); +void PMC_IrqHandler(void); +void EFC_IrqHandler(void); +void UART0_IrqHandler(void); +void UART1_IrqHandler(void); +void PIOA_IrqHandler(void); +void PIOB_IrqHandler(void); +void PIOC_IrqHandler(void); +void USART0_IrqHandler(void); +void USART1_IrqHandler(void); +void TWI0_IrqHandler(void); +void TWI1_IrqHandler(void); +void SPI_IrqHandler(void); +void TC0_IrqHandler(void); +void TC1_IrqHandler(void); +void TC2_IrqHandler(void); +void TC3_IrqHandler(void); +void TC4_IrqHandler(void); +void TC5_IrqHandler(void); +void ADC_IrqHandler(void); +void DACC_IrqHandler(void); +void PWM_IrqHandler(void); + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ + +#endif /* EXCEPTIONS_H_INCLUDED */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/source/templates/gcc/startup_sam3n.c b/hardware/sam/system/libsam/cmsis/sam3n/source/templates/gcc/startup_sam3n.c new file mode 100644 index 000000000..7ccde5fcb --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/source/templates/gcc/startup_sam3n.c @@ -0,0 +1,134 @@ +/*! \file ********************************************************************* + * + * \brief Startup file for SAM3N. + * + * $asf_license$ + * + * This file defines common SAM series. + * + * - Compiler: ARMGCC + * - Supported devices: All SAM3N devices can be used. + * - AppNote: + * + ******************************************************************************/ + +#include "../exceptions.h" +#include "sam3.h" + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +IntFunc exception_table[] = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + (IntFunc) (&_estack), + Reset_Handler, + + NMI_Handler, + HardFault_Handler, + MemManage_Handler, + BusFault_Handler, + UsageFault_Handler, + 0, 0, 0, 0, /* Reserved */ + SVC_Handler, + DebugMon_Handler, + 0, /* Reserved */ + PendSV_Handler, + SysTick_Handler, + + /* Configurable interrupts */ + SUPC_IrqHandler, /* 0 Supply Controller */ + RSTC_IrqHandler, /* 1 Reset Controller */ + RTC_IrqHandler, /* 2 Real Time Clock */ + RTT_IrqHandler, /* 3 Real Time Timer */ + WDT_IrqHandler, /* 4 Watchdog Timer */ + PMC_IrqHandler, /* 5 PMC */ + EFC_IrqHandler, /* 6 EEFC */ + Dummy_Handler, /* 7 Reserved */ + UART0_IrqHandler, /* 8 UART0 */ + UART1_IrqHandler, /* 9 UART1 */ + Dummy_Handler, /* 10 Reserved */ + PIOA_IrqHandler, /* 11 Parallel IO Controller A */ + PIOB_IrqHandler, /* 12 Parallel IO Controller B */ + PIOC_IrqHandler, /* 13 Parallel IO Controller C */ + USART0_IrqHandler, /* 14 USART 0 */ + USART1_IrqHandler, /* 15 USART 1 */ + Dummy_Handler, /* 16 Reserved */ + Dummy_Handler, /* 17 Reserved */ + Dummy_Handler, /* 18 Reserved */ + TWI0_IrqHandler, /* 19 TWI 0 */ + TWI1_IrqHandler, /* 20 TWI 1 */ + SPI_IrqHandler, /* 21 SPI */ + Dummy_Handler, /* 22 Reserved */ + TC0_IrqHandler, /* 23 Timer Counter 0 */ + TC1_IrqHandler, /* 24 Timer Counter 1 */ + TC2_IrqHandler, /* 25 Timer Counter 2 */ + TC3_IrqHandler, /* 26 Timer Counter 3 */ + TC4_IrqHandler, /* 27 Timer Counter 4 */ + TC5_IrqHandler, /* 28 Timer Counter 5 */ + ADC_IrqHandler, /* 29 ADC controller */ + DACC_IrqHandler, /* 30 DAC controller */ + PWM_IrqHandler, /* 31 PWM */ + Dummy_Handler /* 32 not used */ +}; + +/* TEMPORARY PATCH FOR SCB */ +#define SCB_VTOR_TBLBASE_Pos 29 /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + if (((uint32_t) pSrc >= IRAM_ADDR) && ((uint32_t) pSrc < IRAM_ADDR + IRAM_SIZE)) { + SCB->VTOR |= 1 << SCB_VTOR_TBLBASE_Pos; + } + + /* Initialize the C library */ + __libc_init_array(); + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} diff --git a/hardware/sam/system/libsam/cmsis/sam3n/source/templates/iar/startup_sam3n.c b/hardware/sam/system/libsam/cmsis/sam3n/source/templates/iar/startup_sam3n.c new file mode 100644 index 000000000..292af9a69 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/source/templates/iar/startup_sam3n.c @@ -0,0 +1,110 @@ +/*! \file ********************************************************************* + * + * \brief Startup file for SAM3N. + * + * $asf_license$ + * + * This file defines common SAM series. + * + * - Compiler: IAR EWARM + * - Supported devices: All SAM3N devices can be used. + * - AppNote: + * + ******************************************************************************/ + +#include "../exceptions.h" +#include "sam3.h" + +typedef void (*intfunc) (void); +typedef union { intfunc __fun; void * __ptr; } intvec_elem; + +void __iar_program_start(void); +int __low_level_init(void); + +/* Exception Table */ +#pragma language=extended +#pragma segment="CSTACK" + +/* The name "__vector_table" has special meaning for C-SPY: */ +/* it is where the SP start value is found, and the NVIC vector */ +/* table register (VTOR) is initialized to this address if != 0 */ + +#pragma section = ".intvec" +#pragma location = ".intvec" +const intvec_elem __vector_table[] = { + {.__ptr = __sfe("CSTACK")}, + Reset_Handler, + + NMI_Handler, + HardFault_Handler, + MemManage_Handler, + BusFault_Handler, + UsageFault_Handler, + 0, 0, 0, 0, /* Reserved */ + SVC_Handler, + DebugMon_Handler, + 0, /* Reserved */ + PendSV_Handler, + SysTick_Handler, + + /* Configurable interrupts */ + SUPC_IrqHandler, /* 0 Supply Controller */ + RSTC_IrqHandler, /* 1 Reset Controller */ + RTC_IrqHandler, /* 2 Real Time Clock */ + RTT_IrqHandler, /* 3 Real Time Timer */ + WDT_IrqHandler, /* 4 Watchdog Timer */ + PMC_IrqHandler, /* 5 PMC */ + EFC_IrqHandler, /* 6 EEFC */ + Dummy_Handler, /* 7 Reserved */ + UART0_IrqHandler, /* 8 UART0 */ + UART1_IrqHandler, /* 9 UART1 */ + Dummy_Handler, /* 10 Reserved */ + PIOA_IrqHandler, /* 11 Parallel IO Controller A */ + PIOB_IrqHandler, /* 12 Parallel IO Controller B */ + PIOC_IrqHandler, /* 13 Parallel IO Controller C */ + USART0_IrqHandler, /* 14 USART 0 */ + USART1_IrqHandler, /* 15 USART 1 */ + Dummy_Handler, /* 16 Reserved */ + Dummy_Handler, /* 17 Reserved */ + Dummy_Handler, /* 18 Reserved */ + TWI0_IrqHandler, /* 19 TWI 0 */ + TWI1_IrqHandler, /* 20 TWI 1 */ + SPI_IrqHandler, /* 21 SPI */ + Dummy_Handler, /* 22 Reserved */ + TC0_IrqHandler, /* 23 Timer Counter 0 */ + TC1_IrqHandler, /* 24 Timer Counter 1 */ + TC2_IrqHandler, /* 25 Timer Counter 2 */ + TC3_IrqHandler, /* 26 Timer Counter 3 */ + TC4_IrqHandler, /* 27 Timer Counter 4 */ + TC5_IrqHandler, /* 28 Timer Counter 5 */ + ADC_IrqHandler, /* 29 ADC controller */ + DACC_IrqHandler, /* 30 DAC controller */ + PWM_IrqHandler, /* 31 PWM */ + Dummy_Handler /* 32 not used */ +}; + +/**------------------------------------------------------------------------------ + * This is the code that gets called on processor reset. To initialize the + * device. + *------------------------------------------------------------------------------*/ +int __low_level_init(void) +{ + uint32_t *pSrc = __section_begin(".intvec"); + + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + if (((uint32_t) pSrc >= IRAM_ADDR) && ((uint32_t) pSrc < IRAM_ADDR + IRAM_SIZE)) { + SCB->VTOR |= 1 << SCB_VTOR_TBLBASE_Pos; + } + + return 1; /* if return 0, the data sections will not be initialized */ +} + +/**------------------------------------------------------------------------------ + * This is the code that gets called on processor reset. To initialize the + * device. + *------------------------------------------------------------------------------*/ +void Reset_Handler(void) +{ + __iar_program_start(); +} diff --git a/hardware/sam/system/libsam/cmsis/sam3n/source/templates/system_sam3n.c b/hardware/sam/system/libsam/cmsis/sam3n/source/templates/system_sam3n.c new file mode 100644 index 000000000..59b99d8a1 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/source/templates/system_sam3n.c @@ -0,0 +1,191 @@ +/*! \file ********************************************************************* + * + * \brief Provides the low-level initialization functions that called + * on chip startup. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#include "system_sam3n.h" +#include "sam3n.h" + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +/* Clock settings (48MHz) */ +#define SYS_BOARD_OSCOUNT (CKGR_MOR_MOSCXTST(0x8)) +#define SYS_BOARD_PLLAR (CKGR_PLLAR_ONE \ + | CKGR_PLLAR_MULA(0x3) \ + | CKGR_PLLAR_PLLACOUNT(0x3f) \ + | CKGR_PLLAR_DIVA(0x1)) +#define SYS_BOARD_MCKR (PMC_MCKR_PRES_CLK_1 | PMC_MCKR_CSS_PLLA_CLK) + +/* Clock Definitions */ +#define SYS_FREQ_XTAL_32K (32768UL) /* External 32K crystal frequency */ +#define SYS_FREQ_XTAL_XTAL12M (12000000UL) /* External 12M crystal frequency */ + +#define SYS_FREQ_FWS_0 (21000000UL) /* Maximum operating frequency when FWS is 0 */ +#define SYS_FREQ_FWS_1 (32000000UL) /* Maximum operating frequency when FWS is 1 */ +#define SYS_FREQ_FWS_2 (48000000UL) /* Maximum operating frequency when FWS is 2 */ + + +#define SYS_CKGR_MOR_KEY_VALUE CKGR_MOR_KEY(0x37U) /* Key to unlock MOR register */ + +/* FIXME: should be generated by sock */ +uint32_t SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + +/** + * \brief Setup the microcontroller system. + * Initialize the System and update the SystemFrequency variable. + */ +void SystemInit(void) +{ + /* Set 3 FWS for Embedded Flash Access */ + EFC->EEFC_FMR = EEFC_FMR_FWS(CHIP_FLASH_WAIT_STATE); + + /* Initialize main oscillator */ + if (!(PMC->CKGR_MOR & CKGR_MOR_MOSCSEL)) { + PMC->CKGR_MOR = SYS_CKGR_MOR_KEY_VALUE | SYS_BOARD_OSCOUNT | + CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN; + while (!(PMC->PMC_SR & PMC_SR_MOSCXTS)) { + } + } + + /* Switch to 3-20MHz Xtal oscillator */ + PMC->CKGR_MOR = SYS_CKGR_MOR_KEY_VALUE | SYS_BOARD_OSCOUNT | + CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN | CKGR_MOR_MOSCSEL; + + while (!(PMC->PMC_SR & PMC_SR_MOSCSELS)) { + } + PMC->PMC_MCKR = (PMC->PMC_MCKR & ~(uint32_t)PMC_MCKR_CSS_Msk) | + PMC_MCKR_CSS_MAIN_CLK; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)) { + } + + /* Initialize PLL */ + PMC->CKGR_PLLAR = SYS_BOARD_PLLAR; + while (!(PMC->PMC_SR & PMC_SR_LOCKA)) { + } + + /* Switch to main clock */ + PMC->PMC_MCKR = (SYS_BOARD_MCKR & ~PMC_MCKR_CSS_Msk) | + PMC_MCKR_CSS_MAIN_CLK; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)) { + } + + /* Switch to PLLA */ + PMC->PMC_MCKR = SYS_BOARD_MCKR; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)) { + } + + SystemCoreClock = CHIP_FREQ_CPU_MAX; +} + +void SystemCoreClockUpdate(void) +{ + /* Determine clock frequency according to clock register values */ + switch (PMC->PMC_MCKR & PMC_MCKR_CSS_Msk) { + case PMC_MCKR_CSS_SLOW_CLK: /* Slow clock */ + if (SUPC->SUPC_SR & SUPC_SR_OSCSEL) { + SystemCoreClock = SYS_FREQ_XTAL_32K; + } else { + SystemCoreClock = CHIP_FREQ_SLCK_RC; + } + break; + case PMC_MCKR_CSS_MAIN_CLK: /* Main clock */ + if (PMC->CKGR_MOR & CKGR_MOR_MOSCSEL) { + SystemCoreClock = SYS_FREQ_XTAL_XTAL12M; + } else { + SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + + switch (PMC->CKGR_MOR & CKGR_MOR_MOSCRCF_Msk) { + case CKGR_MOR_MOSCRCF_4_MHz: + break; + case CKGR_MOR_MOSCRCF_8_MHz: + SystemCoreClock *= 2U; + break; + case CKGR_MOR_MOSCRCF_12_MHz: + SystemCoreClock *= 3U; + break; + default: + break; + } + } + break; + case PMC_MCKR_CSS_PLLA_CLK: /* PLLA clock */ + if (PMC->CKGR_MOR & CKGR_MOR_MOSCSEL) { + SystemCoreClock = SYS_FREQ_XTAL_XTAL12M; + } else { + SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + + switch (PMC->CKGR_MOR & CKGR_MOR_MOSCRCF_Msk) { + case CKGR_MOR_MOSCRCF_4_MHz: + break; + case CKGR_MOR_MOSCRCF_8_MHz: + SystemCoreClock *= 2U; + break; + case CKGR_MOR_MOSCRCF_12_MHz: + SystemCoreClock *= 3U; + break; + default: + break; + } + } + SystemCoreClock *= ((((PMC->CKGR_PLLAR) & CKGR_PLLAR_MULA_Msk) >> + CKGR_PLLAR_MULA_Pos) + 1U); + SystemCoreClock /= ((((PMC->CKGR_PLLAR) & CKGR_PLLAR_DIVA_Msk) >> + CKGR_PLLAR_DIVA_Pos)); + break; + } + + if ((PMC->PMC_MCKR & PMC_MCKR_PRES_Msk) == PMC_MCKR_PRES_CLK_3) { + SystemCoreClock /= 3U; + } else { + SystemCoreClock >>= ((PMC->PMC_MCKR & PMC_MCKR_PRES_Msk) >> + PMC_MCKR_PRES_Pos); + } +} + +/** + * Initialize flash and watchdog. + */ +void system_init_flash_and_watchdog(uint32_t dw_clk) +{ + /* Set FWS for embedded Flash access according to operating frequency */ + if (dw_clk < SYS_FREQ_FWS_0) { + EFC->EEFC_FMR = EEFC_FMR_FWS(0); + } else if (dw_clk < SYS_FREQ_FWS_1) { + EFC->EEFC_FMR = EEFC_FMR_FWS(1); + } else if (dw_clk < SYS_FREQ_FWS_2) { + EFC->EEFC_FMR = EEFC_FMR_FWS(2); + } else { + EFC->EEFC_FMR = EEFC_FMR_FWS(3); + } + +#ifndef CONFIG_KEEP_WATCHDOG_AFTER_INIT + /* Disable the watchdog */ + WDT->WDT_MR = WDT_MR_WDDIS; +#endif +} + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ diff --git a/hardware/sam/system/libsam/cmsis/sam3n/source/templates/system_sam3n.h b/hardware/sam/system/libsam/cmsis/sam3n/source/templates/system_sam3n.h new file mode 100644 index 000000000..a2427b239 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3n/source/templates/system_sam3n.h @@ -0,0 +1,58 @@ +/*! \file ********************************************************************* + * + * \brief CMSIS Cortex-M# Device Peripheral Access Layer Header File + * for SAM3 devices. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#ifndef SYSTEM_SAM3N_H_INCLUDED +#define SYSTEM_SAM3N_H_INCLUDED + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +#include + +extern uint32_t SystemCoreClock; /* System Clock Frequency (Core Clock) */ + +/** + * @brief Setup the microcontroller system. + * Initialize the System and update the SystemCoreClock variable. + */ +void SystemInit(void); + +/** + * @brief Updates the SystemCoreClock with current core Clock + * retrieved from cpu registers. + */ +void SystemCoreClockUpdate(void); + +/** + * Initialize flash and watchdog. + */ +void system_init_flash_and_watchdog(uint32_t dw_clk); + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ + +#endif /* SYSTEM_SAM3N_H_INCLUDED */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_acc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_acc.h new file mode 100644 index 000000000..490c8bfac --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_acc.h @@ -0,0 +1,124 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_ACC_COMPONENT_ +#define _SAM3S_ACC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Analog Comparator Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S_ACC Analog Comparator Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Acc hardware registers */ +typedef struct { + WoReg ACC_CR; /**< \brief (Acc Offset: 0x00) Control Register */ + RwReg ACC_MR; /**< \brief (Acc Offset: 0x04) Mode Register */ + RoReg Reserved1[7]; + WoReg ACC_IER; /**< \brief (Acc Offset: 0x24) Interrupt Enable Register */ + WoReg ACC_IDR; /**< \brief (Acc Offset: 0x28) Interrupt Disable Register */ + RoReg ACC_IMR; /**< \brief (Acc Offset: 0x2C) Interrupt Mask Register */ + RoReg ACC_ISR; /**< \brief (Acc Offset: 0x30) Interrupt Status Register */ + RoReg Reserved2[24]; + RwReg ACC_ACR; /**< \brief (Acc Offset: 0x94) Analog Control Register */ + RoReg Reserved3[19]; + RwReg ACC_WPMR; /**< \brief (Acc Offset: 0xE4) Write Protect Mode Register */ + RoReg ACC_WPSR; /**< \brief (Acc Offset: 0xE8) Write Protect Status Register */ +} Acc; +#endif /* __ASSEMBLY__ */ +/* -------- ACC_CR : (ACC Offset: 0x00) Control Register -------- */ +#define ACC_CR_SWRST (0x1u << 0) /**< \brief (ACC_CR) SoftWare ReSeT */ +/* -------- ACC_MR : (ACC Offset: 0x04) Mode Register -------- */ +#define ACC_MR_SELMINUS_Pos 0 +#define ACC_MR_SELMINUS_Msk (0x7u << ACC_MR_SELMINUS_Pos) /**< \brief (ACC_MR) SELection for MINUS comparator input */ +#define ACC_MR_SELMINUS_TS (0x0u << 0) /**< \brief (ACC_MR) SelectTS */ +#define ACC_MR_SELMINUS_ADVREF (0x1u << 0) /**< \brief (ACC_MR) Select ADVREF */ +#define ACC_MR_SELMINUS_DAC0 (0x2u << 0) /**< \brief (ACC_MR) Select DAC0 */ +#define ACC_MR_SELMINUS_DAC1 (0x3u << 0) /**< \brief (ACC_MR) Select DAC1 */ +#define ACC_MR_SELMINUS_AD0 (0x4u << 0) /**< \brief (ACC_MR) Select AD0 */ +#define ACC_MR_SELMINUS_AD1 (0x5u << 0) /**< \brief (ACC_MR) Select AD1 */ +#define ACC_MR_SELMINUS_AD2 (0x6u << 0) /**< \brief (ACC_MR) Select AD2 */ +#define ACC_MR_SELMINUS_AD3 (0x7u << 0) /**< \brief (ACC_MR) Select AD3 */ +#define ACC_MR_SELPLUS_Pos 4 +#define ACC_MR_SELPLUS_Msk (0x7u << ACC_MR_SELPLUS_Pos) /**< \brief (ACC_MR) SELection for PLUS comparator input */ +#define ACC_MR_SELPLUS_AD0 (0x0u << 4) /**< \brief (ACC_MR) Select AD0 */ +#define ACC_MR_SELPLUS_AD1 (0x1u << 4) /**< \brief (ACC_MR) Select AD1 */ +#define ACC_MR_SELPLUS_AD2 (0x2u << 4) /**< \brief (ACC_MR) Select AD2 */ +#define ACC_MR_SELPLUS_AD3 (0x3u << 4) /**< \brief (ACC_MR) Select AD3 */ +#define ACC_MR_SELPLUS_AD4 (0x4u << 4) /**< \brief (ACC_MR) Select AD4 */ +#define ACC_MR_SELPLUS_AD5 (0x5u << 4) /**< \brief (ACC_MR) Select AD5 */ +#define ACC_MR_SELPLUS_AD6 (0x6u << 4) /**< \brief (ACC_MR) Select AD6 */ +#define ACC_MR_SELPLUS_AD7 (0x7u << 4) /**< \brief (ACC_MR) Select AD7 */ +#define ACC_MR_ACEN (0x1u << 8) /**< \brief (ACC_MR) Analog Comparator ENable */ +#define ACC_MR_ACEN_DIS (0x0u << 8) /**< \brief (ACC_MR) Analog Comparator Disabled. */ +#define ACC_MR_ACEN_EN (0x1u << 8) /**< \brief (ACC_MR) Analog Comparator Enabled. */ +#define ACC_MR_EDGETYP_Pos 9 +#define ACC_MR_EDGETYP_Msk (0x3u << ACC_MR_EDGETYP_Pos) /**< \brief (ACC_MR) EDGE TYPe */ +#define ACC_MR_EDGETYP_RISING (0x0u << 9) /**< \brief (ACC_MR) only rising edge of comparator output */ +#define ACC_MR_EDGETYP_FALLING (0x1u << 9) /**< \brief (ACC_MR) falling edge of comparator output */ +#define ACC_MR_EDGETYP_ANY (0x2u << 9) /**< \brief (ACC_MR) any edge of comparator output */ +#define ACC_MR_INV (0x1u << 12) /**< \brief (ACC_MR) INVert comparator output */ +#define ACC_MR_INV_DIS (0x0u << 12) /**< \brief (ACC_MR) Analog Comparator output is directly processed. */ +#define ACC_MR_INV_EN (0x1u << 12) /**< \brief (ACC_MR) Analog Comparator output is inverted prior to being processed. */ +#define ACC_MR_SELFS (0x1u << 13) /**< \brief (ACC_MR) SELection of Fault Source */ +#define ACC_MR_SELFS_CF (0x0u << 13) /**< \brief (ACC_MR) the CF flag is used to drive the FAULT output. */ +#define ACC_MR_SELFS_OUTPUT (0x1u << 13) /**< \brief (ACC_MR) the output of the Analog Comparator flag is used to drive the FAULT output. */ +#define ACC_MR_FE (0x1u << 14) /**< \brief (ACC_MR) Fault Enable */ +#define ACC_MR_FE_DIS (0x0u << 14) /**< \brief (ACC_MR) the FAULT output is tied to 0. */ +#define ACC_MR_FE_EN (0x1u << 14) /**< \brief (ACC_MR) the FAULT output is driven by the signal defined by SELFS. */ +/* -------- ACC_IER : (ACC Offset: 0x24) Interrupt Enable Register -------- */ +#define ACC_IER_CE (0x1u << 0) /**< \brief (ACC_IER) Comparison Edge */ +/* -------- ACC_IDR : (ACC Offset: 0x28) Interrupt Disable Register -------- */ +#define ACC_IDR_CE (0x1u << 0) /**< \brief (ACC_IDR) Comparison Edge */ +/* -------- ACC_IMR : (ACC Offset: 0x2C) Interrupt Mask Register -------- */ +#define ACC_IMR_CE (0x1u << 0) /**< \brief (ACC_IMR) Comparison Edge */ +/* -------- ACC_ISR : (ACC Offset: 0x30) Interrupt Status Register -------- */ +#define ACC_ISR_CE (0x1u << 0) /**< \brief (ACC_ISR) Comparison Edge */ +#define ACC_ISR_SCO (0x1u << 1) /**< \brief (ACC_ISR) Synchronized Comparator Output */ +#define ACC_ISR_MASK (0x1u << 31) /**< \brief (ACC_ISR) */ +/* -------- ACC_ACR : (ACC Offset: 0x94) Analog Control Register -------- */ +#define ACC_ACR_ISEL (0x1u << 0) /**< \brief (ACC_ACR) Current SELection */ +#define ACC_ACR_ISEL_LOPW (0x0u << 0) /**< \brief (ACC_ACR) low power option. */ +#define ACC_ACR_ISEL_HISP (0x1u << 0) /**< \brief (ACC_ACR) high speed option. */ +#define ACC_ACR_HYST_Pos 1 +#define ACC_ACR_HYST_Msk (0x3u << ACC_ACR_HYST_Pos) /**< \brief (ACC_ACR) HYSTeresis selection */ +#define ACC_ACR_HYST(value) ((ACC_ACR_HYST_Msk & ((value) << ACC_ACR_HYST_Pos))) +/* -------- ACC_WPMR : (ACC Offset: 0xE4) Write Protect Mode Register -------- */ +#define ACC_WPMR_WPEN (0x1u << 0) /**< \brief (ACC_WPMR) Write Protect Enable */ +#define ACC_WPMR_WPKEY_Pos 8 +#define ACC_WPMR_WPKEY_Msk (0xffffffu << ACC_WPMR_WPKEY_Pos) /**< \brief (ACC_WPMR) Write Protect KEY */ +#define ACC_WPMR_WPKEY(value) ((ACC_WPMR_WPKEY_Msk & ((value) << ACC_WPMR_WPKEY_Pos))) +/* -------- ACC_WPSR : (ACC Offset: 0xE8) Write Protect Status Register -------- */ +#define ACC_WPSR_WPROTERR (0x1u << 0) /**< \brief (ACC_WPSR) Write PROTection ERRor */ + +/*@}*/ + + +#endif /* _SAM3S_ACC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_adc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_adc.h new file mode 100644 index 000000000..9137596ad --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_adc.h @@ -0,0 +1,519 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_ADC_COMPONENT_ +#define _SAM3S_ADC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Analog-to-digital Converter */ +/* ============================================================================= */ +/** \addtogroup SAM3S_ADC Analog-to-digital Converter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Adc hardware registers */ +typedef struct { + WoReg ADC_CR; /**< \brief (Adc Offset: 0x00) Control Register */ + RwReg ADC_MR; /**< \brief (Adc Offset: 0x04) Mode Register */ + RwReg ADC_SEQR1; /**< \brief (Adc Offset: 0x08) Channel Sequence Register 1 */ + RwReg ADC_SEQR2; /**< \brief (Adc Offset: 0x0C) Channel Sequence Register 2 */ + WoReg ADC_CHER; /**< \brief (Adc Offset: 0x10) Channel Enable Register */ + WoReg ADC_CHDR; /**< \brief (Adc Offset: 0x14) Channel Disable Register */ + RoReg ADC_CHSR; /**< \brief (Adc Offset: 0x18) Channel Status Register */ + RoReg Reserved1[1]; + RoReg ADC_LCDR; /**< \brief (Adc Offset: 0x20) Last Converted Data Register */ + WoReg ADC_IER; /**< \brief (Adc Offset: 0x24) Interrupt Enable Register */ + WoReg ADC_IDR; /**< \brief (Adc Offset: 0x28) Interrupt Disable Register */ + RoReg ADC_IMR; /**< \brief (Adc Offset: 0x2C) Interrupt Mask Register */ + RoReg ADC_ISR; /**< \brief (Adc Offset: 0x30) Interrupt Status Register */ + RoReg Reserved2[2]; + RoReg ADC_OVER; /**< \brief (Adc Offset: 0x3C) Overrun Status Register */ + RwReg ADC_EMR; /**< \brief (Adc Offset: 0x40) Extended Mode Register */ + RwReg ADC_CWR; /**< \brief (Adc Offset: 0x44) Compare Window Register */ + RwReg ADC_CGR; /**< \brief (Adc Offset: 0x48) Channel Gain Register */ + RwReg ADC_COR; /**< \brief (Adc Offset: 0x4C) Channel Offset Register */ + RoReg ADC_CDR[15]; /**< \brief (Adc Offset: 0x50) Channel Data Register */ + RoReg Reserved3[2]; + RwReg ADC_ACR; /**< \brief (Adc Offset: 0x94) Analog Control Register */ + RoReg Reserved4[19]; + RwReg ADC_WPMR; /**< \brief (Adc Offset: 0xE4) Write Protect Mode Register */ + RoReg ADC_WPSR; /**< \brief (Adc Offset: 0xE8) Write Protect Status Register */ + RoReg Reserved5[5]; + RwReg ADC_RPR; /**< \brief (Adc Offset: 0x100) Receive Pointer Register */ + RwReg ADC_RCR; /**< \brief (Adc Offset: 0x104) Receive Counter Register */ + RwReg ADC_TPR; /**< \brief (Adc Offset: 0x108) Transmit Pointer Register */ + RwReg ADC_TCR; /**< \brief (Adc Offset: 0x10C) Transmit Counter Register */ + RwReg ADC_RNPR; /**< \brief (Adc Offset: 0x110) Receive Next Pointer Register */ + RwReg ADC_RNCR; /**< \brief (Adc Offset: 0x114) Receive Next Counter Register */ + RwReg ADC_TNPR; /**< \brief (Adc Offset: 0x118) Transmit Next Pointer Register */ + RwReg ADC_TNCR; /**< \brief (Adc Offset: 0x11C) Transmit Next Counter Register */ + WoReg ADC_PTCR; /**< \brief (Adc Offset: 0x120) Transfer Control Register */ + RoReg ADC_PTSR; /**< \brief (Adc Offset: 0x124) Transfer Status Register */ +} Adc; +#endif /* __ASSEMBLY__ */ +/* -------- ADC_CR : (ADC Offset: 0x00) Control Register -------- */ +#define ADC_CR_SWRST (0x1u << 0) /**< \brief (ADC_CR) Software Reset */ +#define ADC_CR_START (0x1u << 1) /**< \brief (ADC_CR) Start Conversion */ +/* -------- ADC_MR : (ADC Offset: 0x04) Mode Register -------- */ +#define ADC_MR_TRGEN (0x1u << 0) /**< \brief (ADC_MR) Trigger Enable */ +#define ADC_MR_TRGEN_DIS (0x0u << 0) /**< \brief (ADC_MR) Hardware triggers are disabled. Starting a conversion is only possible by software. */ +#define ADC_MR_TRGEN_EN (0x1u << 0) /**< \brief (ADC_MR) Hardware trigger selected by TRGSEL field is enabled. */ +#define ADC_MR_TRGSEL_Pos 1 +#define ADC_MR_TRGSEL_Msk (0x7u << ADC_MR_TRGSEL_Pos) /**< \brief (ADC_MR) Trigger Selection */ +#define ADC_MR_TRGSEL_ADC_TRIG0 (0x0u << 1) /**< \brief (ADC_MR) External trigger */ +#define ADC_MR_TRGSEL_ADC_TRIG1 (0x1u << 1) /**< \brief (ADC_MR) TIO Output of the Timer Counter Channel 0 */ +#define ADC_MR_TRGSEL_ADC_TRIG2 (0x2u << 1) /**< \brief (ADC_MR) TIO Output of the Timer Counter Channel 1 */ +#define ADC_MR_TRGSEL_ADC_TRIG3 (0x3u << 1) /**< \brief (ADC_MR) TIO Output of the Timer Counter Channel 2 */ +#define ADC_MR_TRGSEL_ADC_TRIG4 (0x4u << 1) /**< \brief (ADC_MR) PWM Event Line 0 */ +#define ADC_MR_TRGSEL_ADC_TRIG5 (0x5u << 1) /**< \brief (ADC_MR) PWM Event Line 1 */ +#define ADC_MR_LOWRES (0x1u << 4) /**< \brief (ADC_MR) Resolution */ +#define ADC_MR_LOWRES_BITS_12 (0x0u << 4) /**< \brief (ADC_MR) 12-bit resolution */ +#define ADC_MR_LOWRES_BITS_10 (0x1u << 4) /**< \brief (ADC_MR) 10-bit resolution */ +#define ADC_MR_SLEEP (0x1u << 5) /**< \brief (ADC_MR) Sleep Mode */ +#define ADC_MR_SLEEP_NORMAL (0x0u << 5) /**< \brief (ADC_MR) Normal Mode: The ADC Core and reference voltage circuitry are kept ON between conversions */ +#define ADC_MR_SLEEP_SLEEP (0x1u << 5) /**< \brief (ADC_MR) Sleep Mode: The ADC Core and reference voltage circuitry are OFF between conversions */ +#define ADC_MR_FWUP (0x1u << 6) /**< \brief (ADC_MR) Fast Wake Up */ +#define ADC_MR_FWUP_OFF (0x0u << 6) /**< \brief (ADC_MR) Normal Sleep Mode: The sleep mode is defined by the SLEEP bit */ +#define ADC_MR_FWUP_ON (0x1u << 6) /**< \brief (ADC_MR) Fast Wake Up Sleep Mode: The Voltage reference is ON between conversions and ADC Core is OFF */ +#define ADC_MR_FREERUN (0x1u << 7) /**< \brief (ADC_MR) Free Run Mode */ +#define ADC_MR_FREERUN_OFF (0x0u << 7) /**< \brief (ADC_MR) Normal Mode */ +#define ADC_MR_FREERUN_ON (0x1u << 7) /**< \brief (ADC_MR) Free Run Mode: Never wait for any trigger. */ +#define ADC_MR_PRESCAL_Pos 8 +#define ADC_MR_PRESCAL_Msk (0xffu << ADC_MR_PRESCAL_Pos) /**< \brief (ADC_MR) Prescaler Rate Selection */ +#define ADC_MR_PRESCAL(value) ((ADC_MR_PRESCAL_Msk & ((value) << ADC_MR_PRESCAL_Pos))) +#define ADC_MR_STARTUP_Pos 16 +#define ADC_MR_STARTUP_Msk (0xfu << ADC_MR_STARTUP_Pos) /**< \brief (ADC_MR) Start Up Time */ +#define ADC_MR_STARTUP_SUT0 (0x0u << 16) /**< \brief (ADC_MR) 0 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT8 (0x1u << 16) /**< \brief (ADC_MR) 8 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT16 (0x2u << 16) /**< \brief (ADC_MR) 16 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT24 (0x3u << 16) /**< \brief (ADC_MR) 24 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT64 (0x4u << 16) /**< \brief (ADC_MR) 64 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT80 (0x5u << 16) /**< \brief (ADC_MR) 80 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT96 (0x6u << 16) /**< \brief (ADC_MR) 96 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT112 (0x7u << 16) /**< \brief (ADC_MR) 112 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT512 (0x8u << 16) /**< \brief (ADC_MR) 512 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT576 (0x9u << 16) /**< \brief (ADC_MR) 576 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT640 (0xAu << 16) /**< \brief (ADC_MR) 640 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT704 (0xBu << 16) /**< \brief (ADC_MR) 704 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT768 (0xCu << 16) /**< \brief (ADC_MR) 768 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT832 (0xDu << 16) /**< \brief (ADC_MR) 832 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT896 (0xEu << 16) /**< \brief (ADC_MR) 896 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT960 (0xFu << 16) /**< \brief (ADC_MR) 960 periods of ADCClock */ +#define ADC_MR_SETTLING_Pos 20 +#define ADC_MR_SETTLING_Msk (0x3u << ADC_MR_SETTLING_Pos) /**< \brief (ADC_MR) Analog Settling Time */ +#define ADC_MR_SETTLING_AST3 (0x0u << 20) /**< \brief (ADC_MR) 3 periods of ADCClock */ +#define ADC_MR_SETTLING_AST5 (0x1u << 20) /**< \brief (ADC_MR) 5 periods of ADCClock */ +#define ADC_MR_SETTLING_AST9 (0x2u << 20) /**< \brief (ADC_MR) 9 periods of ADCClock */ +#define ADC_MR_SETTLING_AST17 (0x3u << 20) /**< \brief (ADC_MR) 17 periods of ADCClock */ +#define ADC_MR_ANACH (0x1u << 23) /**< \brief (ADC_MR) Analog Change */ +#define ADC_MR_ANACH_NONE (0x0u << 23) /**< \brief (ADC_MR) No analog change on channel switching: DIFF0, GAIN0 and OFF0 are used for all channels */ +#define ADC_MR_ANACH_ALLOWED (0x1u << 23) /**< \brief (ADC_MR) Allows different analog settings for each channel. See ADC_CGR and ADC_COR Registers */ +#define ADC_MR_TRACKTIM_Pos 24 +#define ADC_MR_TRACKTIM_Msk (0xfu << ADC_MR_TRACKTIM_Pos) /**< \brief (ADC_MR) Tracking Time */ +#define ADC_MR_TRACKTIM(value) ((ADC_MR_TRACKTIM_Msk & ((value) << ADC_MR_TRACKTIM_Pos))) +#define ADC_MR_TRANSFER_Pos 28 +#define ADC_MR_TRANSFER_Msk (0x3u << ADC_MR_TRANSFER_Pos) /**< \brief (ADC_MR) Transfer Period */ +#define ADC_MR_TRANSFER(value) ((ADC_MR_TRANSFER_Msk & ((value) << ADC_MR_TRANSFER_Pos))) +#define ADC_MR_USEQ (0x1u << 31) /**< \brief (ADC_MR) Use Sequence Enable */ +#define ADC_MR_USEQ_NUM_ORDER (0x0u << 31) /**< \brief (ADC_MR) Normal Mode: The controller converts channels in a simple numeric order. */ +#define ADC_MR_USEQ_REG_ORDER (0x1u << 31) /**< \brief (ADC_MR) User Sequence Mode: The sequence respects what is defined in ADC_SEQR1 and ADC_SEQR2 registers. */ +/* -------- ADC_SEQR1 : (ADC Offset: 0x08) Channel Sequence Register 1 -------- */ +#define ADC_SEQR1_USCH1_Pos 0 +#define ADC_SEQR1_USCH1_Msk (0x7u << ADC_SEQR1_USCH1_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 1 */ +#define ADC_SEQR1_USCH1(value) ((ADC_SEQR1_USCH1_Msk & ((value) << ADC_SEQR1_USCH1_Pos))) +#define ADC_SEQR1_USCH2_Pos 4 +#define ADC_SEQR1_USCH2_Msk (0x7u << ADC_SEQR1_USCH2_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 2 */ +#define ADC_SEQR1_USCH2(value) ((ADC_SEQR1_USCH2_Msk & ((value) << ADC_SEQR1_USCH2_Pos))) +#define ADC_SEQR1_USCH3_Pos 8 +#define ADC_SEQR1_USCH3_Msk (0x7u << ADC_SEQR1_USCH3_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 3 */ +#define ADC_SEQR1_USCH3(value) ((ADC_SEQR1_USCH3_Msk & ((value) << ADC_SEQR1_USCH3_Pos))) +#define ADC_SEQR1_USCH4_Pos 12 +#define ADC_SEQR1_USCH4_Msk (0x7u << ADC_SEQR1_USCH4_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 4 */ +#define ADC_SEQR1_USCH4(value) ((ADC_SEQR1_USCH4_Msk & ((value) << ADC_SEQR1_USCH4_Pos))) +#define ADC_SEQR1_USCH5_Pos 16 +#define ADC_SEQR1_USCH5_Msk (0x7u << ADC_SEQR1_USCH5_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 5 */ +#define ADC_SEQR1_USCH5(value) ((ADC_SEQR1_USCH5_Msk & ((value) << ADC_SEQR1_USCH5_Pos))) +#define ADC_SEQR1_USCH6_Pos 20 +#define ADC_SEQR1_USCH6_Msk (0x7u << ADC_SEQR1_USCH6_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 6 */ +#define ADC_SEQR1_USCH6(value) ((ADC_SEQR1_USCH6_Msk & ((value) << ADC_SEQR1_USCH6_Pos))) +#define ADC_SEQR1_USCH7_Pos 24 +#define ADC_SEQR1_USCH7_Msk (0x7u << ADC_SEQR1_USCH7_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 7 */ +#define ADC_SEQR1_USCH7(value) ((ADC_SEQR1_USCH7_Msk & ((value) << ADC_SEQR1_USCH7_Pos))) +#define ADC_SEQR1_USCH8_Pos 28 +#define ADC_SEQR1_USCH8_Msk (0x7u << ADC_SEQR1_USCH8_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 8 */ +#define ADC_SEQR1_USCH8(value) ((ADC_SEQR1_USCH8_Msk & ((value) << ADC_SEQR1_USCH8_Pos))) +/* -------- ADC_SEQR2 : (ADC Offset: 0x0C) Channel Sequence Register 2 -------- */ +#define ADC_SEQR2_USCH9_Pos 0 +#define ADC_SEQR2_USCH9_Msk (0x7u << ADC_SEQR2_USCH9_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 9 */ +#define ADC_SEQR2_USCH9(value) ((ADC_SEQR2_USCH9_Msk & ((value) << ADC_SEQR2_USCH9_Pos))) +#define ADC_SEQR2_USCH10_Pos 4 +#define ADC_SEQR2_USCH10_Msk (0x7u << ADC_SEQR2_USCH10_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 10 */ +#define ADC_SEQR2_USCH10(value) ((ADC_SEQR2_USCH10_Msk & ((value) << ADC_SEQR2_USCH10_Pos))) +#define ADC_SEQR2_USCH11_Pos 8 +#define ADC_SEQR2_USCH11_Msk (0x7u << ADC_SEQR2_USCH11_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 11 */ +#define ADC_SEQR2_USCH11(value) ((ADC_SEQR2_USCH11_Msk & ((value) << ADC_SEQR2_USCH11_Pos))) +#define ADC_SEQR2_USCH12_Pos 12 +#define ADC_SEQR2_USCH12_Msk (0x7u << ADC_SEQR2_USCH12_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 12 */ +#define ADC_SEQR2_USCH12(value) ((ADC_SEQR2_USCH12_Msk & ((value) << ADC_SEQR2_USCH12_Pos))) +#define ADC_SEQR2_USCH13_Pos 16 +#define ADC_SEQR2_USCH13_Msk (0x7u << ADC_SEQR2_USCH13_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 13 */ +#define ADC_SEQR2_USCH13(value) ((ADC_SEQR2_USCH13_Msk & ((value) << ADC_SEQR2_USCH13_Pos))) +#define ADC_SEQR2_USCH14_Pos 20 +#define ADC_SEQR2_USCH14_Msk (0x7u << ADC_SEQR2_USCH14_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 14 */ +#define ADC_SEQR2_USCH14(value) ((ADC_SEQR2_USCH14_Msk & ((value) << ADC_SEQR2_USCH14_Pos))) +#define ADC_SEQR2_USCH15_Pos 24 +#define ADC_SEQR2_USCH15_Msk (0x7u << ADC_SEQR2_USCH15_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 15 */ +#define ADC_SEQR2_USCH15(value) ((ADC_SEQR2_USCH15_Msk & ((value) << ADC_SEQR2_USCH15_Pos))) +#define ADC_SEQR2_USCH16_Pos 28 +#define ADC_SEQR2_USCH16_Msk (0x7u << ADC_SEQR2_USCH16_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 16 */ +#define ADC_SEQR2_USCH16(value) ((ADC_SEQR2_USCH16_Msk & ((value) << ADC_SEQR2_USCH16_Pos))) +/* -------- ADC_CHER : (ADC Offset: 0x10) Channel Enable Register -------- */ +#define ADC_CHER_CH0 (0x1u << 0) /**< \brief (ADC_CHER) Channel 0 Enable */ +#define ADC_CHER_CH1 (0x1u << 1) /**< \brief (ADC_CHER) Channel 1 Enable */ +#define ADC_CHER_CH2 (0x1u << 2) /**< \brief (ADC_CHER) Channel 2 Enable */ +#define ADC_CHER_CH3 (0x1u << 3) /**< \brief (ADC_CHER) Channel 3 Enable */ +#define ADC_CHER_CH4 (0x1u << 4) /**< \brief (ADC_CHER) Channel 4 Enable */ +#define ADC_CHER_CH5 (0x1u << 5) /**< \brief (ADC_CHER) Channel 5 Enable */ +#define ADC_CHER_CH6 (0x1u << 6) /**< \brief (ADC_CHER) Channel 6 Enable */ +#define ADC_CHER_CH7 (0x1u << 7) /**< \brief (ADC_CHER) Channel 7 Enable */ +#define ADC_CHER_CH8 (0x1u << 8) /**< \brief (ADC_CHER) Channel 8 Enable */ +#define ADC_CHER_CH9 (0x1u << 9) /**< \brief (ADC_CHER) Channel 9 Enable */ +#define ADC_CHER_CH10 (0x1u << 10) /**< \brief (ADC_CHER) Channel 10 Enable */ +#define ADC_CHER_CH11 (0x1u << 11) /**< \brief (ADC_CHER) Channel 11 Enable */ +#define ADC_CHER_CH12 (0x1u << 12) /**< \brief (ADC_CHER) Channel 12 Enable */ +#define ADC_CHER_CH13 (0x1u << 13) /**< \brief (ADC_CHER) Channel 13 Enable */ +#define ADC_CHER_CH14 (0x1u << 14) /**< \brief (ADC_CHER) Channel 14 Enable */ +#define ADC_CHER_CH15 (0x1u << 15) /**< \brief (ADC_CHER) Channel 15 Enable */ +/* -------- ADC_CHDR : (ADC Offset: 0x14) Channel Disable Register -------- */ +#define ADC_CHDR_CH0 (0x1u << 0) /**< \brief (ADC_CHDR) Channel 0 Disable */ +#define ADC_CHDR_CH1 (0x1u << 1) /**< \brief (ADC_CHDR) Channel 1 Disable */ +#define ADC_CHDR_CH2 (0x1u << 2) /**< \brief (ADC_CHDR) Channel 2 Disable */ +#define ADC_CHDR_CH3 (0x1u << 3) /**< \brief (ADC_CHDR) Channel 3 Disable */ +#define ADC_CHDR_CH4 (0x1u << 4) /**< \brief (ADC_CHDR) Channel 4 Disable */ +#define ADC_CHDR_CH5 (0x1u << 5) /**< \brief (ADC_CHDR) Channel 5 Disable */ +#define ADC_CHDR_CH6 (0x1u << 6) /**< \brief (ADC_CHDR) Channel 6 Disable */ +#define ADC_CHDR_CH7 (0x1u << 7) /**< \brief (ADC_CHDR) Channel 7 Disable */ +#define ADC_CHDR_CH8 (0x1u << 8) /**< \brief (ADC_CHDR) Channel 8 Disable */ +#define ADC_CHDR_CH9 (0x1u << 9) /**< \brief (ADC_CHDR) Channel 9 Disable */ +#define ADC_CHDR_CH10 (0x1u << 10) /**< \brief (ADC_CHDR) Channel 10 Disable */ +#define ADC_CHDR_CH11 (0x1u << 11) /**< \brief (ADC_CHDR) Channel 11 Disable */ +#define ADC_CHDR_CH12 (0x1u << 12) /**< \brief (ADC_CHDR) Channel 12 Disable */ +#define ADC_CHDR_CH13 (0x1u << 13) /**< \brief (ADC_CHDR) Channel 13 Disable */ +#define ADC_CHDR_CH14 (0x1u << 14) /**< \brief (ADC_CHDR) Channel 14 Disable */ +#define ADC_CHDR_CH15 (0x1u << 15) /**< \brief (ADC_CHDR) Channel 15 Disable */ +/* -------- ADC_CHSR : (ADC Offset: 0x18) Channel Status Register -------- */ +#define ADC_CHSR_CH0 (0x1u << 0) /**< \brief (ADC_CHSR) Channel 0 Status */ +#define ADC_CHSR_CH1 (0x1u << 1) /**< \brief (ADC_CHSR) Channel 1 Status */ +#define ADC_CHSR_CH2 (0x1u << 2) /**< \brief (ADC_CHSR) Channel 2 Status */ +#define ADC_CHSR_CH3 (0x1u << 3) /**< \brief (ADC_CHSR) Channel 3 Status */ +#define ADC_CHSR_CH4 (0x1u << 4) /**< \brief (ADC_CHSR) Channel 4 Status */ +#define ADC_CHSR_CH5 (0x1u << 5) /**< \brief (ADC_CHSR) Channel 5 Status */ +#define ADC_CHSR_CH6 (0x1u << 6) /**< \brief (ADC_CHSR) Channel 6 Status */ +#define ADC_CHSR_CH7 (0x1u << 7) /**< \brief (ADC_CHSR) Channel 7 Status */ +#define ADC_CHSR_CH8 (0x1u << 8) /**< \brief (ADC_CHSR) Channel 8 Status */ +#define ADC_CHSR_CH9 (0x1u << 9) /**< \brief (ADC_CHSR) Channel 9 Status */ +#define ADC_CHSR_CH10 (0x1u << 10) /**< \brief (ADC_CHSR) Channel 10 Status */ +#define ADC_CHSR_CH11 (0x1u << 11) /**< \brief (ADC_CHSR) Channel 11 Status */ +#define ADC_CHSR_CH12 (0x1u << 12) /**< \brief (ADC_CHSR) Channel 12 Status */ +#define ADC_CHSR_CH13 (0x1u << 13) /**< \brief (ADC_CHSR) Channel 13 Status */ +#define ADC_CHSR_CH14 (0x1u << 14) /**< \brief (ADC_CHSR) Channel 14 Status */ +#define ADC_CHSR_CH15 (0x1u << 15) /**< \brief (ADC_CHSR) Channel 15 Status */ +/* -------- ADC_LCDR : (ADC Offset: 0x20) Last Converted Data Register -------- */ +#define ADC_LCDR_LDATA_Pos 0 +#define ADC_LCDR_LDATA_Msk (0xfffu << ADC_LCDR_LDATA_Pos) /**< \brief (ADC_LCDR) Last Data Converted */ +#define ADC_LCDR_CHNB_Pos 12 +#define ADC_LCDR_CHNB_Msk (0xfu << ADC_LCDR_CHNB_Pos) /**< \brief (ADC_LCDR) Channel Number */ +/* -------- ADC_IER : (ADC Offset: 0x24) Interrupt Enable Register -------- */ +#define ADC_IER_EOC0 (0x1u << 0) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 0 */ +#define ADC_IER_EOC1 (0x1u << 1) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 1 */ +#define ADC_IER_EOC2 (0x1u << 2) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 2 */ +#define ADC_IER_EOC3 (0x1u << 3) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 3 */ +#define ADC_IER_EOC4 (0x1u << 4) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 4 */ +#define ADC_IER_EOC5 (0x1u << 5) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 5 */ +#define ADC_IER_EOC6 (0x1u << 6) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 6 */ +#define ADC_IER_EOC7 (0x1u << 7) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 7 */ +#define ADC_IER_EOC8 (0x1u << 8) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 8 */ +#define ADC_IER_EOC9 (0x1u << 9) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 9 */ +#define ADC_IER_EOC10 (0x1u << 10) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 10 */ +#define ADC_IER_EOC11 (0x1u << 11) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 11 */ +#define ADC_IER_EOC12 (0x1u << 12) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 12 */ +#define ADC_IER_EOC13 (0x1u << 13) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 13 */ +#define ADC_IER_EOC14 (0x1u << 14) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 14 */ +#define ADC_IER_EOC15 (0x1u << 15) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 15 */ +#define ADC_IER_DRDY (0x1u << 24) /**< \brief (ADC_IER) Data Ready Interrupt Enable */ +#define ADC_IER_GOVRE (0x1u << 25) /**< \brief (ADC_IER) General Overrun Error Interrupt Enable */ +#define ADC_IER_COMPE (0x1u << 26) /**< \brief (ADC_IER) Comparison Event Interrupt Enable */ +#define ADC_IER_ENDRX (0x1u << 27) /**< \brief (ADC_IER) End of Receive Buffer Interrupt Enable */ +#define ADC_IER_RXBUFF (0x1u << 28) /**< \brief (ADC_IER) Receive Buffer Full Interrupt Enable */ +/* -------- ADC_IDR : (ADC Offset: 0x28) Interrupt Disable Register -------- */ +#define ADC_IDR_EOC0 (0x1u << 0) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 0 */ +#define ADC_IDR_EOC1 (0x1u << 1) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 1 */ +#define ADC_IDR_EOC2 (0x1u << 2) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 2 */ +#define ADC_IDR_EOC3 (0x1u << 3) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 3 */ +#define ADC_IDR_EOC4 (0x1u << 4) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 4 */ +#define ADC_IDR_EOC5 (0x1u << 5) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 5 */ +#define ADC_IDR_EOC6 (0x1u << 6) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 6 */ +#define ADC_IDR_EOC7 (0x1u << 7) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 7 */ +#define ADC_IDR_EOC8 (0x1u << 8) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 8 */ +#define ADC_IDR_EOC9 (0x1u << 9) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 9 */ +#define ADC_IDR_EOC10 (0x1u << 10) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 10 */ +#define ADC_IDR_EOC11 (0x1u << 11) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 11 */ +#define ADC_IDR_EOC12 (0x1u << 12) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 12 */ +#define ADC_IDR_EOC13 (0x1u << 13) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 13 */ +#define ADC_IDR_EOC14 (0x1u << 14) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 14 */ +#define ADC_IDR_EOC15 (0x1u << 15) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 15 */ +#define ADC_IDR_DRDY (0x1u << 24) /**< \brief (ADC_IDR) Data Ready Interrupt Disable */ +#define ADC_IDR_GOVRE (0x1u << 25) /**< \brief (ADC_IDR) General Overrun Error Interrupt Disable */ +#define ADC_IDR_COMPE (0x1u << 26) /**< \brief (ADC_IDR) Comparison Event Interrupt Disable */ +#define ADC_IDR_ENDRX (0x1u << 27) /**< \brief (ADC_IDR) End of Receive Buffer Interrupt Disable */ +#define ADC_IDR_RXBUFF (0x1u << 28) /**< \brief (ADC_IDR) Receive Buffer Full Interrupt Disable */ +/* -------- ADC_IMR : (ADC Offset: 0x2C) Interrupt Mask Register -------- */ +#define ADC_IMR_EOC0 (0x1u << 0) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 0 */ +#define ADC_IMR_EOC1 (0x1u << 1) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 1 */ +#define ADC_IMR_EOC2 (0x1u << 2) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 2 */ +#define ADC_IMR_EOC3 (0x1u << 3) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 3 */ +#define ADC_IMR_EOC4 (0x1u << 4) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 4 */ +#define ADC_IMR_EOC5 (0x1u << 5) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 5 */ +#define ADC_IMR_EOC6 (0x1u << 6) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 6 */ +#define ADC_IMR_EOC7 (0x1u << 7) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 7 */ +#define ADC_IMR_EOC8 (0x1u << 8) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 8 */ +#define ADC_IMR_EOC9 (0x1u << 9) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 9 */ +#define ADC_IMR_EOC10 (0x1u << 10) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 10 */ +#define ADC_IMR_EOC11 (0x1u << 11) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 11 */ +#define ADC_IMR_EOC12 (0x1u << 12) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 12 */ +#define ADC_IMR_EOC13 (0x1u << 13) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 13 */ +#define ADC_IMR_EOC14 (0x1u << 14) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 14 */ +#define ADC_IMR_EOC15 (0x1u << 15) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 15 */ +#define ADC_IMR_DRDY (0x1u << 24) /**< \brief (ADC_IMR) Data Ready Interrupt Mask */ +#define ADC_IMR_GOVRE (0x1u << 25) /**< \brief (ADC_IMR) General Overrun Error Interrupt Mask */ +#define ADC_IMR_COMPE (0x1u << 26) /**< \brief (ADC_IMR) Comparison Event Interrupt Mask */ +#define ADC_IMR_ENDRX (0x1u << 27) /**< \brief (ADC_IMR) End of Receive Buffer Interrupt Mask */ +#define ADC_IMR_RXBUFF (0x1u << 28) /**< \brief (ADC_IMR) Receive Buffer Full Interrupt Mask */ +/* -------- ADC_ISR : (ADC Offset: 0x30) Interrupt Status Register -------- */ +#define ADC_ISR_EOC0 (0x1u << 0) /**< \brief (ADC_ISR) End of Conversion 0 */ +#define ADC_ISR_EOC1 (0x1u << 1) /**< \brief (ADC_ISR) End of Conversion 1 */ +#define ADC_ISR_EOC2 (0x1u << 2) /**< \brief (ADC_ISR) End of Conversion 2 */ +#define ADC_ISR_EOC3 (0x1u << 3) /**< \brief (ADC_ISR) End of Conversion 3 */ +#define ADC_ISR_EOC4 (0x1u << 4) /**< \brief (ADC_ISR) End of Conversion 4 */ +#define ADC_ISR_EOC5 (0x1u << 5) /**< \brief (ADC_ISR) End of Conversion 5 */ +#define ADC_ISR_EOC6 (0x1u << 6) /**< \brief (ADC_ISR) End of Conversion 6 */ +#define ADC_ISR_EOC7 (0x1u << 7) /**< \brief (ADC_ISR) End of Conversion 7 */ +#define ADC_ISR_EOC8 (0x1u << 8) /**< \brief (ADC_ISR) End of Conversion 8 */ +#define ADC_ISR_EOC9 (0x1u << 9) /**< \brief (ADC_ISR) End of Conversion 9 */ +#define ADC_ISR_EOC10 (0x1u << 10) /**< \brief (ADC_ISR) End of Conversion 10 */ +#define ADC_ISR_EOC11 (0x1u << 11) /**< \brief (ADC_ISR) End of Conversion 11 */ +#define ADC_ISR_EOC12 (0x1u << 12) /**< \brief (ADC_ISR) End of Conversion 12 */ +#define ADC_ISR_EOC13 (0x1u << 13) /**< \brief (ADC_ISR) End of Conversion 13 */ +#define ADC_ISR_EOC14 (0x1u << 14) /**< \brief (ADC_ISR) End of Conversion 14 */ +#define ADC_ISR_EOC15 (0x1u << 15) /**< \brief (ADC_ISR) End of Conversion 15 */ +#define ADC_ISR_DRDY (0x1u << 24) /**< \brief (ADC_ISR) Data Ready */ +#define ADC_ISR_GOVRE (0x1u << 25) /**< \brief (ADC_ISR) General Overrun Error */ +#define ADC_ISR_COMPE (0x1u << 26) /**< \brief (ADC_ISR) Comparison Error */ +#define ADC_ISR_ENDRX (0x1u << 27) /**< \brief (ADC_ISR) End of RX Buffer */ +#define ADC_ISR_RXBUFF (0x1u << 28) /**< \brief (ADC_ISR) RX Buffer Full */ +/* -------- ADC_OVER : (ADC Offset: 0x3C) Overrun Status Register -------- */ +#define ADC_OVER_OVRE0 (0x1u << 0) /**< \brief (ADC_OVER) Overrun Error 0 */ +#define ADC_OVER_OVRE1 (0x1u << 1) /**< \brief (ADC_OVER) Overrun Error 1 */ +#define ADC_OVER_OVRE2 (0x1u << 2) /**< \brief (ADC_OVER) Overrun Error 2 */ +#define ADC_OVER_OVRE3 (0x1u << 3) /**< \brief (ADC_OVER) Overrun Error 3 */ +#define ADC_OVER_OVRE4 (0x1u << 4) /**< \brief (ADC_OVER) Overrun Error 4 */ +#define ADC_OVER_OVRE5 (0x1u << 5) /**< \brief (ADC_OVER) Overrun Error 5 */ +#define ADC_OVER_OVRE6 (0x1u << 6) /**< \brief (ADC_OVER) Overrun Error 6 */ +#define ADC_OVER_OVRE7 (0x1u << 7) /**< \brief (ADC_OVER) Overrun Error 7 */ +#define ADC_OVER_OVRE8 (0x1u << 8) /**< \brief (ADC_OVER) Overrun Error 8 */ +#define ADC_OVER_OVRE9 (0x1u << 9) /**< \brief (ADC_OVER) Overrun Error 9 */ +#define ADC_OVER_OVRE10 (0x1u << 10) /**< \brief (ADC_OVER) Overrun Error 10 */ +#define ADC_OVER_OVRE11 (0x1u << 11) /**< \brief (ADC_OVER) Overrun Error 11 */ +#define ADC_OVER_OVRE12 (0x1u << 12) /**< \brief (ADC_OVER) Overrun Error 12 */ +#define ADC_OVER_OVRE13 (0x1u << 13) /**< \brief (ADC_OVER) Overrun Error 13 */ +#define ADC_OVER_OVRE14 (0x1u << 14) /**< \brief (ADC_OVER) Overrun Error 14 */ +#define ADC_OVER_OVRE15 (0x1u << 15) /**< \brief (ADC_OVER) Overrun Error 15 */ +/* -------- ADC_EMR : (ADC Offset: 0x40) Extended Mode Register -------- */ +#define ADC_EMR_CMPMODE_Pos 0 +#define ADC_EMR_CMPMODE_Msk (0x3u << ADC_EMR_CMPMODE_Pos) /**< \brief (ADC_EMR) Comparison Mode */ +#define ADC_EMR_CMPMODE_LOW (0x0u << 0) /**< \brief (ADC_EMR) Generates an event when the converted data is lower than the low threshold of the window. */ +#define ADC_EMR_CMPMODE_HIGH (0x1u << 0) /**< \brief (ADC_EMR) Generates an event when the converted data is higher than the high threshold of the window. */ +#define ADC_EMR_CMPMODE_IN (0x2u << 0) /**< \brief (ADC_EMR) Generates an event when the converted data is in the comparison window. */ +#define ADC_EMR_CMPMODE_OUT (0x3u << 0) /**< \brief (ADC_EMR) Generates an event when the converted data is out of the comparison window. */ +#define ADC_EMR_CMPSEL_Pos 4 +#define ADC_EMR_CMPSEL_Msk (0xfu << ADC_EMR_CMPSEL_Pos) /**< \brief (ADC_EMR) Comparison Selected Channel */ +#define ADC_EMR_CMPSEL(value) ((ADC_EMR_CMPSEL_Msk & ((value) << ADC_EMR_CMPSEL_Pos))) +#define ADC_EMR_CMPALL (0x1u << 9) /**< \brief (ADC_EMR) Compare All Channels */ +#define ADC_EMR_TAG (0x1u << 24) /**< \brief (ADC_EMR) TAG of ADC_LDCR register */ +/* -------- ADC_CWR : (ADC Offset: 0x44) Compare Window Register -------- */ +#define ADC_CWR_LOWTHRES_Pos 0 +#define ADC_CWR_LOWTHRES_Msk (0xfffu << ADC_CWR_LOWTHRES_Pos) /**< \brief (ADC_CWR) Low Threshold */ +#define ADC_CWR_LOWTHRES(value) ((ADC_CWR_LOWTHRES_Msk & ((value) << ADC_CWR_LOWTHRES_Pos))) +#define ADC_CWR_HIGHTHRES_Pos 16 +#define ADC_CWR_HIGHTHRES_Msk (0xfffu << ADC_CWR_HIGHTHRES_Pos) /**< \brief (ADC_CWR) High Threshold */ +#define ADC_CWR_HIGHTHRES(value) ((ADC_CWR_HIGHTHRES_Msk & ((value) << ADC_CWR_HIGHTHRES_Pos))) +/* -------- ADC_CGR : (ADC Offset: 0x48) Channel Gain Register -------- */ +#define ADC_CGR_GAIN0_Pos 0 +#define ADC_CGR_GAIN0_Msk (0x3u << ADC_CGR_GAIN0_Pos) /**< \brief (ADC_CGR) Gain for channel 0 */ +#define ADC_CGR_GAIN0(value) ((ADC_CGR_GAIN0_Msk & ((value) << ADC_CGR_GAIN0_Pos))) +#define ADC_CGR_GAIN1_Pos 2 +#define ADC_CGR_GAIN1_Msk (0x3u << ADC_CGR_GAIN1_Pos) /**< \brief (ADC_CGR) Gain for channel 1 */ +#define ADC_CGR_GAIN1(value) ((ADC_CGR_GAIN1_Msk & ((value) << ADC_CGR_GAIN1_Pos))) +#define ADC_CGR_GAIN2_Pos 4 +#define ADC_CGR_GAIN2_Msk (0x3u << ADC_CGR_GAIN2_Pos) /**< \brief (ADC_CGR) Gain for channel 2 */ +#define ADC_CGR_GAIN2(value) ((ADC_CGR_GAIN2_Msk & ((value) << ADC_CGR_GAIN2_Pos))) +#define ADC_CGR_GAIN3_Pos 6 +#define ADC_CGR_GAIN3_Msk (0x3u << ADC_CGR_GAIN3_Pos) /**< \brief (ADC_CGR) Gain for channel 3 */ +#define ADC_CGR_GAIN3(value) ((ADC_CGR_GAIN3_Msk & ((value) << ADC_CGR_GAIN3_Pos))) +#define ADC_CGR_GAIN4_Pos 8 +#define ADC_CGR_GAIN4_Msk (0x3u << ADC_CGR_GAIN4_Pos) /**< \brief (ADC_CGR) Gain for channel 4 */ +#define ADC_CGR_GAIN4(value) ((ADC_CGR_GAIN4_Msk & ((value) << ADC_CGR_GAIN4_Pos))) +#define ADC_CGR_GAIN5_Pos 10 +#define ADC_CGR_GAIN5_Msk (0x3u << ADC_CGR_GAIN5_Pos) /**< \brief (ADC_CGR) Gain for channel 5 */ +#define ADC_CGR_GAIN5(value) ((ADC_CGR_GAIN5_Msk & ((value) << ADC_CGR_GAIN5_Pos))) +#define ADC_CGR_GAIN6_Pos 12 +#define ADC_CGR_GAIN6_Msk (0x3u << ADC_CGR_GAIN6_Pos) /**< \brief (ADC_CGR) Gain for channel 6 */ +#define ADC_CGR_GAIN6(value) ((ADC_CGR_GAIN6_Msk & ((value) << ADC_CGR_GAIN6_Pos))) +#define ADC_CGR_GAIN7_Pos 14 +#define ADC_CGR_GAIN7_Msk (0x3u << ADC_CGR_GAIN7_Pos) /**< \brief (ADC_CGR) Gain for channel 7 */ +#define ADC_CGR_GAIN7(value) ((ADC_CGR_GAIN7_Msk & ((value) << ADC_CGR_GAIN7_Pos))) +#define ADC_CGR_GAIN8_Pos 16 +#define ADC_CGR_GAIN8_Msk (0x3u << ADC_CGR_GAIN8_Pos) /**< \brief (ADC_CGR) Gain for channel 8 */ +#define ADC_CGR_GAIN8(value) ((ADC_CGR_GAIN8_Msk & ((value) << ADC_CGR_GAIN8_Pos))) +#define ADC_CGR_GAIN9_Pos 18 +#define ADC_CGR_GAIN9_Msk (0x3u << ADC_CGR_GAIN9_Pos) /**< \brief (ADC_CGR) Gain for channel 9 */ +#define ADC_CGR_GAIN9(value) ((ADC_CGR_GAIN9_Msk & ((value) << ADC_CGR_GAIN9_Pos))) +#define ADC_CGR_GAIN10_Pos 20 +#define ADC_CGR_GAIN10_Msk (0x3u << ADC_CGR_GAIN10_Pos) /**< \brief (ADC_CGR) Gain for channel 10 */ +#define ADC_CGR_GAIN10(value) ((ADC_CGR_GAIN10_Msk & ((value) << ADC_CGR_GAIN10_Pos))) +#define ADC_CGR_GAIN11_Pos 22 +#define ADC_CGR_GAIN11_Msk (0x3u << ADC_CGR_GAIN11_Pos) /**< \brief (ADC_CGR) Gain for channel 11 */ +#define ADC_CGR_GAIN11(value) ((ADC_CGR_GAIN11_Msk & ((value) << ADC_CGR_GAIN11_Pos))) +#define ADC_CGR_GAIN12_Pos 24 +#define ADC_CGR_GAIN12_Msk (0x3u << ADC_CGR_GAIN12_Pos) /**< \brief (ADC_CGR) Gain for channel 12 */ +#define ADC_CGR_GAIN12(value) ((ADC_CGR_GAIN12_Msk & ((value) << ADC_CGR_GAIN12_Pos))) +#define ADC_CGR_GAIN13_Pos 26 +#define ADC_CGR_GAIN13_Msk (0x3u << ADC_CGR_GAIN13_Pos) /**< \brief (ADC_CGR) Gain for channel 13 */ +#define ADC_CGR_GAIN13(value) ((ADC_CGR_GAIN13_Msk & ((value) << ADC_CGR_GAIN13_Pos))) +#define ADC_CGR_GAIN14_Pos 28 +#define ADC_CGR_GAIN14_Msk (0x3u << ADC_CGR_GAIN14_Pos) /**< \brief (ADC_CGR) Gain for channel 14 */ +#define ADC_CGR_GAIN14(value) ((ADC_CGR_GAIN14_Msk & ((value) << ADC_CGR_GAIN14_Pos))) +#define ADC_CGR_GAIN15_Pos 30 +#define ADC_CGR_GAIN15_Msk (0x3u << ADC_CGR_GAIN15_Pos) /**< \brief (ADC_CGR) Gain for channel 15 */ +#define ADC_CGR_GAIN15(value) ((ADC_CGR_GAIN15_Msk & ((value) << ADC_CGR_GAIN15_Pos))) +/* -------- ADC_COR : (ADC Offset: 0x4C) Channel Offset Register -------- */ +#define ADC_COR_OFF0 (0x1u << 0) /**< \brief (ADC_COR) Offset for channel 0 */ +#define ADC_COR_OFF1 (0x1u << 1) /**< \brief (ADC_COR) Offset for channel 1 */ +#define ADC_COR_OFF2 (0x1u << 2) /**< \brief (ADC_COR) Offset for channel 2 */ +#define ADC_COR_OFF3 (0x1u << 3) /**< \brief (ADC_COR) Offset for channel 3 */ +#define ADC_COR_OFF4 (0x1u << 4) /**< \brief (ADC_COR) Offset for channel 4 */ +#define ADC_COR_OFF5 (0x1u << 5) /**< \brief (ADC_COR) Offset for channel 5 */ +#define ADC_COR_OFF6 (0x1u << 6) /**< \brief (ADC_COR) Offset for channel 6 */ +#define ADC_COR_OFF7 (0x1u << 7) /**< \brief (ADC_COR) Offset for channel 7 */ +#define ADC_COR_OFF8 (0x1u << 8) /**< \brief (ADC_COR) Offset for channel 8 */ +#define ADC_COR_OFF9 (0x1u << 9) /**< \brief (ADC_COR) Offset for channel 9 */ +#define ADC_COR_OFF10 (0x1u << 10) /**< \brief (ADC_COR) Offset for channel 10 */ +#define ADC_COR_OFF11 (0x1u << 11) /**< \brief (ADC_COR) Offset for channel 11 */ +#define ADC_COR_OFF12 (0x1u << 12) /**< \brief (ADC_COR) Offset for channel 12 */ +#define ADC_COR_OFF13 (0x1u << 13) /**< \brief (ADC_COR) Offset for channel 13 */ +#define ADC_COR_OFF14 (0x1u << 14) /**< \brief (ADC_COR) Offset for channel 14 */ +#define ADC_COR_OFF15 (0x1u << 15) /**< \brief (ADC_COR) Offset for channel 15 */ +#define ADC_COR_DIFF0 (0x1u << 16) /**< \brief (ADC_COR) Differential inputs for channel 0 */ +#define ADC_COR_DIFF1 (0x1u << 17) /**< \brief (ADC_COR) Differential inputs for channel 1 */ +#define ADC_COR_DIFF2 (0x1u << 18) /**< \brief (ADC_COR) Differential inputs for channel 2 */ +#define ADC_COR_DIFF3 (0x1u << 19) /**< \brief (ADC_COR) Differential inputs for channel 3 */ +#define ADC_COR_DIFF4 (0x1u << 20) /**< \brief (ADC_COR) Differential inputs for channel 4 */ +#define ADC_COR_DIFF5 (0x1u << 21) /**< \brief (ADC_COR) Differential inputs for channel 5 */ +#define ADC_COR_DIFF6 (0x1u << 22) /**< \brief (ADC_COR) Differential inputs for channel 6 */ +#define ADC_COR_DIFF7 (0x1u << 23) /**< \brief (ADC_COR) Differential inputs for channel 7 */ +#define ADC_COR_DIFF8 (0x1u << 24) /**< \brief (ADC_COR) Differential inputs for channel 8 */ +#define ADC_COR_DIFF9 (0x1u << 25) /**< \brief (ADC_COR) Differential inputs for channel 9 */ +#define ADC_COR_DIFF10 (0x1u << 26) /**< \brief (ADC_COR) Differential inputs for channel 10 */ +#define ADC_COR_DIFF11 (0x1u << 27) /**< \brief (ADC_COR) Differential inputs for channel 11 */ +#define ADC_COR_DIFF12 (0x1u << 28) /**< \brief (ADC_COR) Differential inputs for channel 12 */ +#define ADC_COR_DIFF13 (0x1u << 29) /**< \brief (ADC_COR) Differential inputs for channel 13 */ +#define ADC_COR_DIFF14 (0x1u << 30) /**< \brief (ADC_COR) Differential inputs for channel 14 */ +#define ADC_COR_DIFF15 (0x1u << 31) /**< \brief (ADC_COR) Differential inputs for channel 15 */ +/* -------- ADC_CDR[15] : (ADC Offset: 0x50) Channel Data Register -------- */ +#define ADC_CDR_DATA_Pos 0 +#define ADC_CDR_DATA_Msk (0xfffu << ADC_CDR_DATA_Pos) /**< \brief (ADC_CDR[15]) Converted Data */ +/* -------- ADC_ACR : (ADC Offset: 0x94) Analog Control Register -------- */ +#define ADC_ACR_TSON (0x1u << 4) /**< \brief (ADC_ACR) Temperature Sensor On */ +#define ADC_ACR_IBCTL_Pos 8 +#define ADC_ACR_IBCTL_Msk (0x3u << ADC_ACR_IBCTL_Pos) /**< \brief (ADC_ACR) ADC Bias Current Control */ +#define ADC_ACR_IBCTL(value) ((ADC_ACR_IBCTL_Msk & ((value) << ADC_ACR_IBCTL_Pos))) +/* -------- ADC_WPMR : (ADC Offset: 0xE4) Write Protect Mode Register -------- */ +#define ADC_WPMR_WPEN (0x1u << 0) /**< \brief (ADC_WPMR) Write Protect Enable */ +#define ADC_WPMR_WPKEY_Pos 8 +#define ADC_WPMR_WPKEY_Msk (0xffffffu << ADC_WPMR_WPKEY_Pos) /**< \brief (ADC_WPMR) Write Protect KEY */ +#define ADC_WPMR_WPKEY(value) ((ADC_WPMR_WPKEY_Msk & ((value) << ADC_WPMR_WPKEY_Pos))) +/* -------- ADC_WPSR : (ADC Offset: 0xE8) Write Protect Status Register -------- */ +#define ADC_WPSR_WPVS (0x1u << 0) /**< \brief (ADC_WPSR) Write Protect Violation Status */ +#define ADC_WPSR_WPVSRC_Pos 8 +#define ADC_WPSR_WPVSRC_Msk (0xffffu << ADC_WPSR_WPVSRC_Pos) /**< \brief (ADC_WPSR) Write Protect Violation Source */ +/* -------- ADC_RPR : (ADC Offset: 0x100) Receive Pointer Register -------- */ +#define ADC_RPR_RXPTR_Pos 0 +#define ADC_RPR_RXPTR_Msk (0xffffffffu << ADC_RPR_RXPTR_Pos) /**< \brief (ADC_RPR) Receive Pointer Register */ +#define ADC_RPR_RXPTR(value) ((ADC_RPR_RXPTR_Msk & ((value) << ADC_RPR_RXPTR_Pos))) +/* -------- ADC_RCR : (ADC Offset: 0x104) Receive Counter Register -------- */ +#define ADC_RCR_RXCTR_Pos 0 +#define ADC_RCR_RXCTR_Msk (0xffffu << ADC_RCR_RXCTR_Pos) /**< \brief (ADC_RCR) Receive Counter Register */ +#define ADC_RCR_RXCTR(value) ((ADC_RCR_RXCTR_Msk & ((value) << ADC_RCR_RXCTR_Pos))) +/* -------- ADC_TPR : (ADC Offset: 0x108) Transmit Pointer Register -------- */ +#define ADC_TPR_TXPTR_Pos 0 +#define ADC_TPR_TXPTR_Msk (0xffffffffu << ADC_TPR_TXPTR_Pos) /**< \brief (ADC_TPR) Transmit Counter Register */ +#define ADC_TPR_TXPTR(value) ((ADC_TPR_TXPTR_Msk & ((value) << ADC_TPR_TXPTR_Pos))) +/* -------- ADC_TCR : (ADC Offset: 0x10C) Transmit Counter Register -------- */ +#define ADC_TCR_TXCTR_Pos 0 +#define ADC_TCR_TXCTR_Msk (0xffffu << ADC_TCR_TXCTR_Pos) /**< \brief (ADC_TCR) Transmit Counter Register */ +#define ADC_TCR_TXCTR(value) ((ADC_TCR_TXCTR_Msk & ((value) << ADC_TCR_TXCTR_Pos))) +/* -------- ADC_RNPR : (ADC Offset: 0x110) Receive Next Pointer Register -------- */ +#define ADC_RNPR_RXNPTR_Pos 0 +#define ADC_RNPR_RXNPTR_Msk (0xffffffffu << ADC_RNPR_RXNPTR_Pos) /**< \brief (ADC_RNPR) Receive Next Pointer */ +#define ADC_RNPR_RXNPTR(value) ((ADC_RNPR_RXNPTR_Msk & ((value) << ADC_RNPR_RXNPTR_Pos))) +/* -------- ADC_RNCR : (ADC Offset: 0x114) Receive Next Counter Register -------- */ +#define ADC_RNCR_RXNCTR_Pos 0 +#define ADC_RNCR_RXNCTR_Msk (0xffffu << ADC_RNCR_RXNCTR_Pos) /**< \brief (ADC_RNCR) Receive Next Counter */ +#define ADC_RNCR_RXNCTR(value) ((ADC_RNCR_RXNCTR_Msk & ((value) << ADC_RNCR_RXNCTR_Pos))) +/* -------- ADC_TNPR : (ADC Offset: 0x118) Transmit Next Pointer Register -------- */ +#define ADC_TNPR_TXNPTR_Pos 0 +#define ADC_TNPR_TXNPTR_Msk (0xffffffffu << ADC_TNPR_TXNPTR_Pos) /**< \brief (ADC_TNPR) Transmit Next Pointer */ +#define ADC_TNPR_TXNPTR(value) ((ADC_TNPR_TXNPTR_Msk & ((value) << ADC_TNPR_TXNPTR_Pos))) +/* -------- ADC_TNCR : (ADC Offset: 0x11C) Transmit Next Counter Register -------- */ +#define ADC_TNCR_TXNCTR_Pos 0 +#define ADC_TNCR_TXNCTR_Msk (0xffffu << ADC_TNCR_TXNCTR_Pos) /**< \brief (ADC_TNCR) Transmit Counter Next */ +#define ADC_TNCR_TXNCTR(value) ((ADC_TNCR_TXNCTR_Msk & ((value) << ADC_TNCR_TXNCTR_Pos))) +/* -------- ADC_PTCR : (ADC Offset: 0x120) Transfer Control Register -------- */ +#define ADC_PTCR_RXTEN (0x1u << 0) /**< \brief (ADC_PTCR) Receiver Transfer Enable */ +#define ADC_PTCR_RXTDIS (0x1u << 1) /**< \brief (ADC_PTCR) Receiver Transfer Disable */ +#define ADC_PTCR_TXTEN (0x1u << 8) /**< \brief (ADC_PTCR) Transmitter Transfer Enable */ +#define ADC_PTCR_TXTDIS (0x1u << 9) /**< \brief (ADC_PTCR) Transmitter Transfer Disable */ +/* -------- ADC_PTSR : (ADC Offset: 0x124) Transfer Status Register -------- */ +#define ADC_PTSR_RXTEN (0x1u << 0) /**< \brief (ADC_PTSR) Receiver Transfer Enable */ +#define ADC_PTSR_TXTEN (0x1u << 8) /**< \brief (ADC_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3S_ADC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_chipid.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_chipid.h new file mode 100644 index 000000000..a3f52bf5e --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_chipid.h @@ -0,0 +1,159 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_CHIPID_COMPONENT_ +#define _SAM3S_CHIPID_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Chip Identifier */ +/* ============================================================================= */ +/** \addtogroup SAM3S_CHIPID Chip Identifier */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Chipid hardware registers */ +typedef struct { + RoReg CHIPID_CIDR; /**< \brief (Chipid Offset: 0x0) Chip ID Register */ + RoReg CHIPID_EXID; /**< \brief (Chipid Offset: 0x4) Chip ID Extension Register */ +} Chipid; +#endif /* __ASSEMBLY__ */ +/* -------- CHIPID_CIDR : (CHIPID Offset: 0x0) Chip ID Register -------- */ +#define CHIPID_CIDR_VERSION_Pos 0 +#define CHIPID_CIDR_VERSION_Msk (0x1fu << CHIPID_CIDR_VERSION_Pos) /**< \brief (CHIPID_CIDR) Version of the Device */ +#define CHIPID_CIDR_EPROC_Pos 5 +#define CHIPID_CIDR_EPROC_Msk (0x7u << CHIPID_CIDR_EPROC_Pos) /**< \brief (CHIPID_CIDR) Embedded Processor */ +#define CHIPID_CIDR_EPROC_ARM946ES (0x1u << 5) /**< \brief (CHIPID_CIDR) ARM946ES */ +#define CHIPID_CIDR_EPROC_ARM7TDMI (0x2u << 5) /**< \brief (CHIPID_CIDR) ARM7TDMI */ +#define CHIPID_CIDR_EPROC_CM3 (0x3u << 5) /**< \brief (CHIPID_CIDR) Cortex-M3 */ +#define CHIPID_CIDR_EPROC_ARM920T (0x4u << 5) /**< \brief (CHIPID_CIDR) ARM920T */ +#define CHIPID_CIDR_EPROC_ARM926EJS (0x5u << 5) /**< \brief (CHIPID_CIDR) ARM926EJS */ +#define CHIPID_CIDR_EPROC_CA5 (0x6u << 5) /**< \brief (CHIPID_CIDR) Cortex-A5 */ +#define CHIPID_CIDR_EPROC_CM4 (0x7u << 5) /**< \brief (CHIPID_CIDR) Cortex-M4 */ +#define CHIPID_CIDR_NVPSIZ_Pos 8 +#define CHIPID_CIDR_NVPSIZ_Msk (0xfu << CHIPID_CIDR_NVPSIZ_Pos) /**< \brief (CHIPID_CIDR) Nonvolatile Program Memory Size */ +#define CHIPID_CIDR_NVPSIZ_NONE (0x0u << 8) /**< \brief (CHIPID_CIDR) None */ +#define CHIPID_CIDR_NVPSIZ_8K (0x1u << 8) /**< \brief (CHIPID_CIDR) 8K bytes */ +#define CHIPID_CIDR_NVPSIZ_16K (0x2u << 8) /**< \brief (CHIPID_CIDR) 16K bytes */ +#define CHIPID_CIDR_NVPSIZ_32K (0x3u << 8) /**< \brief (CHIPID_CIDR) 32K bytes */ +#define CHIPID_CIDR_NVPSIZ_64K (0x5u << 8) /**< \brief (CHIPID_CIDR) 64K bytes */ +#define CHIPID_CIDR_NVPSIZ_128K (0x7u << 8) /**< \brief (CHIPID_CIDR) 128K bytes */ +#define CHIPID_CIDR_NVPSIZ_256K (0x9u << 8) /**< \brief (CHIPID_CIDR) 256K bytes */ +#define CHIPID_CIDR_NVPSIZ_512K (0xAu << 8) /**< \brief (CHIPID_CIDR) 512K bytes */ +#define CHIPID_CIDR_NVPSIZ_1024K (0xCu << 8) /**< \brief (CHIPID_CIDR) 1024K bytes */ +#define CHIPID_CIDR_NVPSIZ_2048K (0xEu << 8) /**< \brief (CHIPID_CIDR) 2048K bytes */ +#define CHIPID_CIDR_NVPSIZ2_Pos 12 +#define CHIPID_CIDR_NVPSIZ2_Msk (0xfu << CHIPID_CIDR_NVPSIZ2_Pos) /**< \brief (CHIPID_CIDR) Second Nonvolatile Program Memory Size */ +#define CHIPID_CIDR_NVPSIZ2_NONE (0x0u << 12) /**< \brief (CHIPID_CIDR) None */ +#define CHIPID_CIDR_NVPSIZ2_8K (0x1u << 12) /**< \brief (CHIPID_CIDR) 8K bytes */ +#define CHIPID_CIDR_NVPSIZ2_16K (0x2u << 12) /**< \brief (CHIPID_CIDR) 16K bytes */ +#define CHIPID_CIDR_NVPSIZ2_32K (0x3u << 12) /**< \brief (CHIPID_CIDR) 32K bytes */ +#define CHIPID_CIDR_NVPSIZ2_64K (0x5u << 12) /**< \brief (CHIPID_CIDR) 64K bytes */ +#define CHIPID_CIDR_NVPSIZ2_128K (0x7u << 12) /**< \brief (CHIPID_CIDR) 128K bytes */ +#define CHIPID_CIDR_NVPSIZ2_256K (0x9u << 12) /**< \brief (CHIPID_CIDR) 256K bytes */ +#define CHIPID_CIDR_NVPSIZ2_512K (0xAu << 12) /**< \brief (CHIPID_CIDR) 512K bytes */ +#define CHIPID_CIDR_NVPSIZ2_1024K (0xCu << 12) /**< \brief (CHIPID_CIDR) 1024K bytes */ +#define CHIPID_CIDR_NVPSIZ2_2048K (0xEu << 12) /**< \brief (CHIPID_CIDR) 2048K bytes */ +#define CHIPID_CIDR_SRAMSIZ_Pos 16 +#define CHIPID_CIDR_SRAMSIZ_Msk (0xfu << CHIPID_CIDR_SRAMSIZ_Pos) /**< \brief (CHIPID_CIDR) Internal SRAM Size */ +#define CHIPID_CIDR_SRAMSIZ_48K (0x0u << 16) /**< \brief (CHIPID_CIDR) 48K bytes */ +#define CHIPID_CIDR_SRAMSIZ_1K (0x1u << 16) /**< \brief (CHIPID_CIDR) 1K bytes */ +#define CHIPID_CIDR_SRAMSIZ_2K (0x2u << 16) /**< \brief (CHIPID_CIDR) 2K bytes */ +#define CHIPID_CIDR_SRAMSIZ_6K (0x3u << 16) /**< \brief (CHIPID_CIDR) 6K bytes */ +#define CHIPID_CIDR_SRAMSIZ_24K (0x4u << 16) /**< \brief (CHIPID_CIDR) 24K bytes */ +#define CHIPID_CIDR_SRAMSIZ_4K (0x5u << 16) /**< \brief (CHIPID_CIDR) 4K bytes */ +#define CHIPID_CIDR_SRAMSIZ_80K (0x6u << 16) /**< \brief (CHIPID_CIDR) 80K bytes */ +#define CHIPID_CIDR_SRAMSIZ_160K (0x7u << 16) /**< \brief (CHIPID_CIDR) 160K bytes */ +#define CHIPID_CIDR_SRAMSIZ_8K (0x8u << 16) /**< \brief (CHIPID_CIDR) 8K bytes */ +#define CHIPID_CIDR_SRAMSIZ_16K (0x9u << 16) /**< \brief (CHIPID_CIDR) 16K bytes */ +#define CHIPID_CIDR_SRAMSIZ_32K (0xAu << 16) /**< \brief (CHIPID_CIDR) 32K bytes */ +#define CHIPID_CIDR_SRAMSIZ_64K (0xBu << 16) /**< \brief (CHIPID_CIDR) 64K bytes */ +#define CHIPID_CIDR_SRAMSIZ_128K (0xCu << 16) /**< \brief (CHIPID_CIDR) 128K bytes */ +#define CHIPID_CIDR_SRAMSIZ_256K (0xDu << 16) /**< \brief (CHIPID_CIDR) 256K bytes */ +#define CHIPID_CIDR_SRAMSIZ_96K (0xEu << 16) /**< \brief (CHIPID_CIDR) 96K bytes */ +#define CHIPID_CIDR_SRAMSIZ_512K (0xFu << 16) /**< \brief (CHIPID_CIDR) 512K bytes */ +#define CHIPID_CIDR_ARCH_Pos 20 +#define CHIPID_CIDR_ARCH_Msk (0xffu << CHIPID_CIDR_ARCH_Pos) /**< \brief (CHIPID_CIDR) Architecture Identifier */ +#define CHIPID_CIDR_ARCH_AT91SAM9xx (0x19u << 20) /**< \brief (CHIPID_CIDR) AT91SAM9xx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM9XExx (0x29u << 20) /**< \brief (CHIPID_CIDR) AT91SAM9XExx Series */ +#define CHIPID_CIDR_ARCH_AT91x34 (0x34u << 20) /**< \brief (CHIPID_CIDR) AT91x34 Series */ +#define CHIPID_CIDR_ARCH_CAP7 (0x37u << 20) /**< \brief (CHIPID_CIDR) CAP7 Series */ +#define CHIPID_CIDR_ARCH_CAP9 (0x39u << 20) /**< \brief (CHIPID_CIDR) CAP9 Series */ +#define CHIPID_CIDR_ARCH_CAP11 (0x3Bu << 20) /**< \brief (CHIPID_CIDR) CAP11 Series */ +#define CHIPID_CIDR_ARCH_AT91x40 (0x40u << 20) /**< \brief (CHIPID_CIDR) AT91x40 Series */ +#define CHIPID_CIDR_ARCH_AT91x42 (0x42u << 20) /**< \brief (CHIPID_CIDR) AT91x42 Series */ +#define CHIPID_CIDR_ARCH_AT91x55 (0x55u << 20) /**< \brief (CHIPID_CIDR) AT91x55 Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Axx (0x60u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Axx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7AQxx (0x61u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7AQxx Series */ +#define CHIPID_CIDR_ARCH_AT91x63 (0x63u << 20) /**< \brief (CHIPID_CIDR) AT91x63 Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Sxx (0x70u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Sxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7XCxx (0x71u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7XCxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7SExx (0x72u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7SExx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Lxx (0x73u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Lxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Xxx (0x75u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Xxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7SLxx (0x76u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7SLxx Series */ +#define CHIPID_CIDR_ARCH_SAM3UxC (0x80u << 20) /**< \brief (CHIPID_CIDR) SAM3UxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3UxE (0x81u << 20) /**< \brief (CHIPID_CIDR) SAM3UxE Series (144-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3AxC (0x83u << 20) /**< \brief (CHIPID_CIDR) SAM3AxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4AxC (0x83u << 20) /**< \brief (CHIPID_CIDR) SAM4AxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3XxC (0x84u << 20) /**< \brief (CHIPID_CIDR) SAM3XxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4XxC (0x84u << 20) /**< \brief (CHIPID_CIDR) SAM4XxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3XxE (0x85u << 20) /**< \brief (CHIPID_CIDR) SAM3XxE Series (144-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4XxE (0x85u << 20) /**< \brief (CHIPID_CIDR) SAM4XxE Series (144-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3XxG (0x86u << 20) /**< \brief (CHIPID_CIDR) SAM3XxG Series (208/217-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4XxG (0x86u << 20) /**< \brief (CHIPID_CIDR) SAM4XxG Series (208/217-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SxA (0x88u << 20) /**< \brief (CHIPID_CIDR) SAM3SxASeries (48-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4SxA (0x88u << 20) /**< \brief (CHIPID_CIDR) SAM4SxA Series (48-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SxB (0x89u << 20) /**< \brief (CHIPID_CIDR) SAM3SxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4SxB (0x89u << 20) /**< \brief (CHIPID_CIDR) SAM4SxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SxC (0x8Au << 20) /**< \brief (CHIPID_CIDR) SAM3SxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4SxC (0x8Au << 20) /**< \brief (CHIPID_CIDR) SAM4SxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_AT91x92 (0x92u << 20) /**< \brief (CHIPID_CIDR) AT91x92 Series */ +#define CHIPID_CIDR_ARCH_SAM3NxA (0x93u << 20) /**< \brief (CHIPID_CIDR) SAM3NxA Series (48-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3NxB (0x94u << 20) /**< \brief (CHIPID_CIDR) SAM3NxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3NxC (0x95u << 20) /**< \brief (CHIPID_CIDR) SAM3NxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SDxB (0x99u << 20) /**< \brief (CHIPID_CIDR) SAM3SDxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SDxC (0x9Au << 20) /**< \brief (CHIPID_CIDR) SAM3SDxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM5A (0xA5u << 20) /**< \brief (CHIPID_CIDR) SAM5A */ +#define CHIPID_CIDR_ARCH_AT75Cxx (0xF0u << 20) /**< \brief (CHIPID_CIDR) AT75Cxx Series */ +#define CHIPID_CIDR_NVPTYP_Pos 28 +#define CHIPID_CIDR_NVPTYP_Msk (0x7u << CHIPID_CIDR_NVPTYP_Pos) /**< \brief (CHIPID_CIDR) Nonvolatile Program Memory Type */ +#define CHIPID_CIDR_NVPTYP_ROM (0x0u << 28) /**< \brief (CHIPID_CIDR) ROM */ +#define CHIPID_CIDR_NVPTYP_ROMLESS (0x1u << 28) /**< \brief (CHIPID_CIDR) ROMless or on-chip Flash */ +#define CHIPID_CIDR_NVPTYP_FLASH (0x2u << 28) /**< \brief (CHIPID_CIDR) Embedded Flash Memory */ +#define CHIPID_CIDR_NVPTYP_ROM_FLASH (0x3u << 28) /**< \brief (CHIPID_CIDR) ROM and Embedded Flash MemoryNVPSIZ is ROM size NVPSIZ2 is Flash size */ +#define CHIPID_CIDR_NVPTYP_SRAM (0x4u << 28) /**< \brief (CHIPID_CIDR) SRAM emulating ROM */ +#define CHIPID_CIDR_EXT (0x1u << 31) /**< \brief (CHIPID_CIDR) Extension Flag */ +/* -------- CHIPID_EXID : (CHIPID Offset: 0x4) Chip ID Extension Register -------- */ +#define CHIPID_EXID_EXID_Pos 0 +#define CHIPID_EXID_EXID_Msk (0xffffffffu << CHIPID_EXID_EXID_Pos) /**< \brief (CHIPID_EXID) Chip ID Extension */ + +/*@}*/ + + +#endif /* _SAM3S_CHIPID_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_crccu.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_crccu.h new file mode 100644 index 000000000..c53302745 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_crccu.h @@ -0,0 +1,107 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_CRCCU_COMPONENT_ +#define _SAM3S_CRCCU_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Cyclic Redundancy Check Calculation Unit */ +/* ============================================================================= */ +/** \addtogroup SAM3S_CRCCU Cyclic Redundancy Check Calculation Unit */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Crccu hardware registers */ +typedef struct { + RwReg CRCCU_DSCR; /**< \brief (Crccu Offset: 0x00000000) CRCCU Descriptor Base Register */ + RoReg Reserved1[1]; + WoReg CRCCU_DMA_EN; /**< \brief (Crccu Offset: 0x00000008) CRCCU DMA Enable Register */ + WoReg CRCCU_DMA_DIS; /**< \brief (Crccu Offset: 0x0000000C) CRCCU DMA Disable Register */ + RoReg CRCCU_DMA_SR; /**< \brief (Crccu Offset: 0x00000010) CRCCU DMA Status Register */ + WoReg CRCCU_DMA_IER; /**< \brief (Crccu Offset: 0x00000014) CRCCU DMA Interrupt Enable Register */ + WoReg CRCCU_DMA_IDR; /**< \brief (Crccu Offset: 0x00000018) CRCCU DMA Interrupt Disable Register */ + RoReg CRCCU_DMA_IMR; /**< \brief (Crccu Offset: 0x0000001C) CRCCU DMA Interrupt Mask Register */ + RoReg CRCCU_DMA_ISR; /**< \brief (Crccu Offset: 0x00000020) CRCCU DMA Interrupt Status Register */ + RoReg Reserved2[4]; + WoReg CRCCU_CR; /**< \brief (Crccu Offset: 0x00000034) CRCCU Control Register */ + RwReg CRCCU_MR; /**< \brief (Crccu Offset: 0x00000038) CRCCU Mode Register */ + RoReg CRCCU_SR; /**< \brief (Crccu Offset: 0x0000003C) CRCCU Status Register */ + WoReg CRCCU_IER; /**< \brief (Crccu Offset: 0x00000040) CRCCU Interrupt Enable Register */ + WoReg CRCCU_IDR; /**< \brief (Crccu Offset: 0x00000044) CRCCU Interrupt Disable Register */ + RoReg CRCCU_IMR; /**< \brief (Crccu Offset: 0x00000048) CRCCU Interrupt Mask Register */ + RoReg CRCCU_ISR; /**< \brief (Crccu Offset: 0x0000004C) CRCCU Interrupt Status Register */ +} Crccu; +#endif /* __ASSEMBLY__ */ +/* -------- CRCCU_DSCR : (CRCCU Offset: 0x00000000) CRCCU Descriptor Base Register -------- */ +#define CRCCU_DSCR_DSCR_Pos 9 +#define CRCCU_DSCR_DSCR_Msk (0x7fffffu << CRCCU_DSCR_DSCR_Pos) /**< \brief (CRCCU_DSCR) Descriptor Base Address */ +#define CRCCU_DSCR_DSCR(value) ((CRCCU_DSCR_DSCR_Msk & ((value) << CRCCU_DSCR_DSCR_Pos))) +/* -------- CRCCU_DMA_EN : (CRCCU Offset: 0x00000008) CRCCU DMA Enable Register -------- */ +#define CRCCU_DMA_EN_DMAEN (0x1u << 0) /**< \brief (CRCCU_DMA_EN) DMA Enable Register */ +/* -------- CRCCU_DMA_DIS : (CRCCU Offset: 0x0000000C) CRCCU DMA Disable Register -------- */ +#define CRCCU_DMA_DIS_DMADIS (0x1u << 0) /**< \brief (CRCCU_DMA_DIS) DMA Disable Register */ +/* -------- CRCCU_DMA_SR : (CRCCU Offset: 0x00000010) CRCCU DMA Status Register -------- */ +#define CRCCU_DMA_SR_DMASR (0x1u << 0) /**< \brief (CRCCU_DMA_SR) DMA Status Register */ +/* -------- CRCCU_DMA_IER : (CRCCU Offset: 0x00000014) CRCCU DMA Interrupt Enable Register -------- */ +#define CRCCU_DMA_IER_DMAIER (0x1u << 0) /**< \brief (CRCCU_DMA_IER) Interrupt Enable register */ +/* -------- CRCCU_DMA_IDR : (CRCCU Offset: 0x00000018) CRCCU DMA Interrupt Disable Register -------- */ +#define CRCCU_DMA_IDR_DMAIDR (0x1u << 0) /**< \brief (CRCCU_DMA_IDR) Interrupt Disable register */ +/* -------- CRCCU_DMA_IMR : (CRCCU Offset: 0x0000001C) CRCCU DMA Interrupt Mask Register -------- */ +#define CRCCU_DMA_IMR_DMAIMR (0x1u << 0) /**< \brief (CRCCU_DMA_IMR) Interrupt Mask Register */ +/* -------- CRCCU_DMA_ISR : (CRCCU Offset: 0x00000020) CRCCU DMA Interrupt Status Register -------- */ +#define CRCCU_DMA_ISR_DMAISR (0x1u << 0) /**< \brief (CRCCU_DMA_ISR) Interrupt Status register */ +/* -------- CRCCU_CR : (CRCCU Offset: 0x00000034) CRCCU Control Register -------- */ +#define CRCCU_CR_RESET (0x1u << 0) /**< \brief (CRCCU_CR) CRC Computation Reset */ +/* -------- CRCCU_MR : (CRCCU Offset: 0x00000038) CRCCU Mode Register -------- */ +#define CRCCU_MR_ENABLE (0x1u << 0) /**< \brief (CRCCU_MR) CRC Enable */ +#define CRCCU_MR_COMPARE (0x1u << 1) /**< \brief (CRCCU_MR) CRC Compare */ +#define CRCCU_MR_PTYPE_Pos 2 +#define CRCCU_MR_PTYPE_Msk (0x3u << CRCCU_MR_PTYPE_Pos) /**< \brief (CRCCU_MR) Primitive Polynomial */ +#define CRCCU_MR_PTYPE_CCITT8023 (0x0u << 2) /**< \brief (CRCCU_MR) Polynom 0x04C11DB7 */ +#define CRCCU_MR_PTYPE_CASTAGNOLI (0x1u << 2) /**< \brief (CRCCU_MR) Polynom 0x1EDC6F41 */ +#define CRCCU_MR_PTYPE_CCITT16 (0x2u << 2) /**< \brief (CRCCU_MR) Polynom 0x1021 */ +#define CRCCU_MR_DIVIDER_Pos 4 +#define CRCCU_MR_DIVIDER_Msk (0xfu << CRCCU_MR_DIVIDER_Pos) /**< \brief (CRCCU_MR) Request Divider */ +#define CRCCU_MR_DIVIDER(value) ((CRCCU_MR_DIVIDER_Msk & ((value) << CRCCU_MR_DIVIDER_Pos))) +/* -------- CRCCU_SR : (CRCCU Offset: 0x0000003C) CRCCU Status Register -------- */ +#define CRCCU_SR_CRC_Pos 0 +#define CRCCU_SR_CRC_Msk (0xffffffffu << CRCCU_SR_CRC_Pos) /**< \brief (CRCCU_SR) Cyclic Redundancy Check Value */ +/* -------- CRCCU_IER : (CRCCU Offset: 0x00000040) CRCCU Interrupt Enable Register -------- */ +#define CRCCU_IER_ERRIER (0x1u << 0) /**< \brief (CRCCU_IER) CRC Error Interrupt Enable */ +/* -------- CRCCU_IDR : (CRCCU Offset: 0x00000044) CRCCU Interrupt Disable Register -------- */ +#define CRCCU_IDR_ERRIDR (0x1u << 0) /**< \brief (CRCCU_IDR) CRC Error Interrupt Disable */ +/* -------- CRCCU_IMR : (CRCCU Offset: 0x00000048) CRCCU Interrupt Mask Register -------- */ +#define CRCCU_IMR_ERRIMR (0x1u << 0) /**< \brief (CRCCU_IMR) CRC Error Interrupt Mask */ +/* -------- CRCCU_ISR : (CRCCU Offset: 0x0000004C) CRCCU Interrupt Status Register -------- */ +#define CRCCU_ISR_ERRISR (0x1u << 0) /**< \brief (CRCCU_ISR) CRC Error Interrupt Status */ + +/*@}*/ + + +#endif /* _SAM3S_CRCCU_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_dacc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_dacc.h new file mode 100644 index 000000000..69271175a --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_dacc.h @@ -0,0 +1,227 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_DACC_COMPONENT_ +#define _SAM3S_DACC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Digital-to-Analog Converter Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S_DACC Digital-to-Analog Converter Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Dacc hardware registers */ +typedef struct { + WoReg DACC_CR; /**< \brief (Dacc Offset: 0x00) Control Register */ + RwReg DACC_MR; /**< \brief (Dacc Offset: 0x04) Mode Register */ + RoReg Reserved1[2]; + WoReg DACC_CHER; /**< \brief (Dacc Offset: 0x10) Channel Enable Register */ + WoReg DACC_CHDR; /**< \brief (Dacc Offset: 0x14) Channel Disable Register */ + RoReg DACC_CHSR; /**< \brief (Dacc Offset: 0x18) Channel Status Register */ + RoReg Reserved2[1]; + WoReg DACC_CDR; /**< \brief (Dacc Offset: 0x20) Conversion Data Register */ + WoReg DACC_IER; /**< \brief (Dacc Offset: 0x24) Interrupt Enable Register */ + WoReg DACC_IDR; /**< \brief (Dacc Offset: 0x28) Interrupt Disable Register */ + RoReg DACC_IMR; /**< \brief (Dacc Offset: 0x2C) Interrupt Mask Register */ + RoReg DACC_ISR; /**< \brief (Dacc Offset: 0x30) Interrupt Status Register */ + RoReg Reserved3[24]; + RwReg DACC_ACR; /**< \brief (Dacc Offset: 0x94) Analog Current Register */ + RoReg Reserved4[19]; + RwReg DACC_WPMR; /**< \brief (Dacc Offset: 0xE4) Write Protect Mode register */ + RoReg DACC_WPSR; /**< \brief (Dacc Offset: 0xE8) Write Protect Status register */ + RoReg Reserved5[5]; + RwReg DACC_RPR; /**< \brief (Dacc Offset: 0x100) Receive Pointer Register */ + RwReg DACC_RCR; /**< \brief (Dacc Offset: 0x104) Receive Counter Register */ + RwReg DACC_TPR; /**< \brief (Dacc Offset: 0x108) Transmit Pointer Register */ + RwReg DACC_TCR; /**< \brief (Dacc Offset: 0x10C) Transmit Counter Register */ + RwReg DACC_RNPR; /**< \brief (Dacc Offset: 0x110) Receive Next Pointer Register */ + RwReg DACC_RNCR; /**< \brief (Dacc Offset: 0x114) Receive Next Counter Register */ + RwReg DACC_TNPR; /**< \brief (Dacc Offset: 0x118) Transmit Next Pointer Register */ + RwReg DACC_TNCR; /**< \brief (Dacc Offset: 0x11C) Transmit Next Counter Register */ + WoReg DACC_PTCR; /**< \brief (Dacc Offset: 0x120) Transfer Control Register */ + RoReg DACC_PTSR; /**< \brief (Dacc Offset: 0x124) Transfer Status Register */ +} Dacc; +#endif /* __ASSEMBLY__ */ +/* -------- DACC_CR : (DACC Offset: 0x00) Control Register -------- */ +#define DACC_CR_SWRST (0x1u << 0) /**< \brief (DACC_CR) Software Reset */ +/* -------- DACC_MR : (DACC Offset: 0x04) Mode Register -------- */ +#define DACC_MR_TRGEN (0x1u << 0) /**< \brief (DACC_MR) Trigger Enable */ +#define DACC_MR_TRGEN_DIS (0x0u << 0) /**< \brief (DACC_MR) External trigger mode disabled. DACC in free running mode. */ +#define DACC_MR_TRGEN_EN (0x1u << 0) /**< \brief (DACC_MR) External trigger mode enabled. */ +#define DACC_MR_TRGSEL_Pos 1 +#define DACC_MR_TRGSEL_Msk (0x7u << DACC_MR_TRGSEL_Pos) /**< \brief (DACC_MR) Trigger Selection */ +#define DACC_MR_TRGSEL(value) ((DACC_MR_TRGSEL_Msk & ((value) << DACC_MR_TRGSEL_Pos))) +#define DACC_MR_WORD (0x1u << 4) /**< \brief (DACC_MR) Word Transfer */ +#define DACC_MR_WORD_HALF (0x0u << 4) /**< \brief (DACC_MR) Half-Word transfer */ +#define DACC_MR_WORD_WORD (0x1u << 4) /**< \brief (DACC_MR) Word Transfer */ +#define DACC_MR_SLEEP (0x1u << 5) /**< \brief (DACC_MR) Sleep Mode */ +#define DACC_MR_FASTWKUP (0x1u << 6) /**< \brief (DACC_MR) Fast Wake up Mode */ +#define DACC_MR_REFRESH_Pos 8 +#define DACC_MR_REFRESH_Msk (0xffu << DACC_MR_REFRESH_Pos) /**< \brief (DACC_MR) Refresh Period */ +#define DACC_MR_REFRESH(value) ((DACC_MR_REFRESH_Msk & ((value) << DACC_MR_REFRESH_Pos))) +#define DACC_MR_USER_SEL_Pos 16 +#define DACC_MR_USER_SEL_Msk (0x3u << DACC_MR_USER_SEL_Pos) /**< \brief (DACC_MR) User Channel Selection */ +#define DACC_MR_USER_SEL_CHANNEL0 (0x0u << 16) /**< \brief (DACC_MR) Channel 0 */ +#define DACC_MR_USER_SEL_CHANNEL1 (0x1u << 16) /**< \brief (DACC_MR) Channel 1 */ +#define DACC_MR_TAG (0x1u << 20) /**< \brief (DACC_MR) Tag Selection Mode */ +#define DACC_MR_TAG_DIS (0x0u << 20) /**< \brief (DACC_MR) Tag selection mode disabled. Using USER_SEL to select the channel for the conversion. */ +#define DACC_MR_TAG_EN (0x1u << 20) /**< \brief (DACC_MR) Tag selection mode enabled */ +#define DACC_MR_MAXS (0x1u << 21) /**< \brief (DACC_MR) Max Speed Mode */ +#define DACC_MR_STARTUP_Pos 24 +#define DACC_MR_STARTUP_Msk (0x3fu << DACC_MR_STARTUP_Pos) /**< \brief (DACC_MR) Startup Time Selection */ +#define DACC_MR_STARTUP_0 (0x0u << 24) /**< \brief (DACC_MR) 0 periods of DACClock */ +#define DACC_MR_STARTUP_8 (0x1u << 24) /**< \brief (DACC_MR) 8 periods of DACClock */ +#define DACC_MR_STARTUP_16 (0x2u << 24) /**< \brief (DACC_MR) 16 periods of DACClock */ +#define DACC_MR_STARTUP_24 (0x3u << 24) /**< \brief (DACC_MR) 24 periods of DACClock */ +#define DACC_MR_STARTUP_64 (0x4u << 24) /**< \brief (DACC_MR) 64 periods of DACClock */ +#define DACC_MR_STARTUP_80 (0x5u << 24) /**< \brief (DACC_MR) 80 periods of DACClock */ +#define DACC_MR_STARTUP_96 (0x6u << 24) /**< \brief (DACC_MR) 96 periods of DACClock */ +#define DACC_MR_STARTUP_112 (0x7u << 24) /**< \brief (DACC_MR) 112 periods of DACClock */ +#define DACC_MR_STARTUP_512 (0x8u << 24) /**< \brief (DACC_MR) 512 periods of DACClock */ +#define DACC_MR_STARTUP_576 (0x9u << 24) /**< \brief (DACC_MR) 576 periods of DACClock */ +#define DACC_MR_STARTUP_640 (0xAu << 24) /**< \brief (DACC_MR) 640 periods of DACClock */ +#define DACC_MR_STARTUP_704 (0xBu << 24) /**< \brief (DACC_MR) 704 periods of DACClock */ +#define DACC_MR_STARTUP_768 (0xCu << 24) /**< \brief (DACC_MR) 768 periods of DACClock */ +#define DACC_MR_STARTUP_832 (0xDu << 24) /**< \brief (DACC_MR) 832 periods of DACClock */ +#define DACC_MR_STARTUP_896 (0xEu << 24) /**< \brief (DACC_MR) 896 periods of DACClock */ +#define DACC_MR_STARTUP_960 (0xFu << 24) /**< \brief (DACC_MR) 960 periods of DACClock */ +#define DACC_MR_STARTUP_1024 (0x10u << 24) /**< \brief (DACC_MR) 1024 periods of DACClock */ +#define DACC_MR_STARTUP_1088 (0x11u << 24) /**< \brief (DACC_MR) 1088 periods of DACClock */ +#define DACC_MR_STARTUP_1152 (0x12u << 24) /**< \brief (DACC_MR) 1152 periods of DACClock */ +#define DACC_MR_STARTUP_1216 (0x13u << 24) /**< \brief (DACC_MR) 1216 periods of DACClock */ +#define DACC_MR_STARTUP_1280 (0x14u << 24) /**< \brief (DACC_MR) 1280 periods of DACClock */ +#define DACC_MR_STARTUP_1344 (0x15u << 24) /**< \brief (DACC_MR) 1344 periods of DACClock */ +#define DACC_MR_STARTUP_1408 (0x16u << 24) /**< \brief (DACC_MR) 1408 periods of DACClock */ +#define DACC_MR_STARTUP_1472 (0x17u << 24) /**< \brief (DACC_MR) 1472 periods of DACClock */ +#define DACC_MR_STARTUP_1536 (0x18u << 24) /**< \brief (DACC_MR) 1536 periods of DACClock */ +#define DACC_MR_STARTUP_1600 (0x19u << 24) /**< \brief (DACC_MR) 1600 periods of DACClock */ +#define DACC_MR_STARTUP_1664 (0x1Au << 24) /**< \brief (DACC_MR) 1664 periods of DACClock */ +#define DACC_MR_STARTUP_1728 (0x1Bu << 24) /**< \brief (DACC_MR) 1728 periods of DACClock */ +#define DACC_MR_STARTUP_1792 (0x1Cu << 24) /**< \brief (DACC_MR) 1792 periods of DACClock */ +#define DACC_MR_STARTUP_1856 (0x1Du << 24) /**< \brief (DACC_MR) 1856 periods of DACClock */ +#define DACC_MR_STARTUP_1920 (0x1Eu << 24) /**< \brief (DACC_MR) 1920 periods of DACClock */ +#define DACC_MR_STARTUP_1984 (0x1Fu << 24) /**< \brief (DACC_MR) 1984 periods of DACClock */ +/* -------- DACC_CHER : (DACC Offset: 0x10) Channel Enable Register -------- */ +#define DACC_CHER_CH0 (0x1u << 0) /**< \brief (DACC_CHER) Channel 0 Enable */ +#define DACC_CHER_CH1 (0x1u << 1) /**< \brief (DACC_CHER) Channel 1 Enable */ +/* -------- DACC_CHDR : (DACC Offset: 0x14) Channel Disable Register -------- */ +#define DACC_CHDR_CH0 (0x1u << 0) /**< \brief (DACC_CHDR) Channel 0 Disable */ +#define DACC_CHDR_CH1 (0x1u << 1) /**< \brief (DACC_CHDR) Channel 1 Disable */ +/* -------- DACC_CHSR : (DACC Offset: 0x18) Channel Status Register -------- */ +#define DACC_CHSR_CH0 (0x1u << 0) /**< \brief (DACC_CHSR) Channel 0 Status */ +#define DACC_CHSR_CH1 (0x1u << 1) /**< \brief (DACC_CHSR) Channel 1 Status */ +/* -------- DACC_CDR : (DACC Offset: 0x20) Conversion Data Register -------- */ +#define DACC_CDR_DATA_Pos 0 +#define DACC_CDR_DATA_Msk (0xffffffffu << DACC_CDR_DATA_Pos) /**< \brief (DACC_CDR) Data to Convert */ +#define DACC_CDR_DATA(value) ((DACC_CDR_DATA_Msk & ((value) << DACC_CDR_DATA_Pos))) +/* -------- DACC_IER : (DACC Offset: 0x24) Interrupt Enable Register -------- */ +#define DACC_IER_TXRDY (0x1u << 0) /**< \brief (DACC_IER) Transmit Ready Interrupt Enable */ +#define DACC_IER_EOC (0x1u << 1) /**< \brief (DACC_IER) End of Conversion Interrupt Enable */ +#define DACC_IER_ENDTX (0x1u << 2) /**< \brief (DACC_IER) End of Transmit Buffer Interrupt Enable */ +#define DACC_IER_TXBUFE (0x1u << 3) /**< \brief (DACC_IER) Transmit Buffer Empty Interrupt Enable */ +/* -------- DACC_IDR : (DACC Offset: 0x28) Interrupt Disable Register -------- */ +#define DACC_IDR_TXRDY (0x1u << 0) /**< \brief (DACC_IDR) Transmit Ready Interrupt Disable. */ +#define DACC_IDR_EOC (0x1u << 1) /**< \brief (DACC_IDR) End of Conversion Interrupt Disable */ +#define DACC_IDR_ENDTX (0x1u << 2) /**< \brief (DACC_IDR) End of Transmit Buffer Interrupt Disable */ +#define DACC_IDR_TXBUFE (0x1u << 3) /**< \brief (DACC_IDR) Transmit Buffer Empty Interrupt Disable */ +/* -------- DACC_IMR : (DACC Offset: 0x2C) Interrupt Mask Register -------- */ +#define DACC_IMR_TXRDY (0x1u << 0) /**< \brief (DACC_IMR) Transmit Ready Interrupt Mask */ +#define DACC_IMR_EOC (0x1u << 1) /**< \brief (DACC_IMR) End of Conversion Interrupt Mask */ +#define DACC_IMR_ENDTX (0x1u << 2) /**< \brief (DACC_IMR) End of Transmit Buffer Interrupt Mask */ +#define DACC_IMR_TXBUFE (0x1u << 3) /**< \brief (DACC_IMR) Transmit Buffer Empty Interrupt Mask */ +/* -------- DACC_ISR : (DACC Offset: 0x30) Interrupt Status Register -------- */ +#define DACC_ISR_TXRDY (0x1u << 0) /**< \brief (DACC_ISR) Transmit Ready Interrupt Flag */ +#define DACC_ISR_EOC (0x1u << 1) /**< \brief (DACC_ISR) End of Conversion Interrupt Flag */ +#define DACC_ISR_ENDTX (0x1u << 2) /**< \brief (DACC_ISR) End of DMA Interrupt Flag */ +#define DACC_ISR_TXBUFE (0x1u << 3) /**< \brief (DACC_ISR) Transmit Buffer Empty */ +/* -------- DACC_ACR : (DACC Offset: 0x94) Analog Current Register -------- */ +#define DACC_ACR_IBCTLCH0_Pos 0 +#define DACC_ACR_IBCTLCH0_Msk (0x3u << DACC_ACR_IBCTLCH0_Pos) /**< \brief (DACC_ACR) Analog Output Current Control */ +#define DACC_ACR_IBCTLCH0(value) ((DACC_ACR_IBCTLCH0_Msk & ((value) << DACC_ACR_IBCTLCH0_Pos))) +#define DACC_ACR_IBCTLCH1_Pos 2 +#define DACC_ACR_IBCTLCH1_Msk (0x3u << DACC_ACR_IBCTLCH1_Pos) /**< \brief (DACC_ACR) Analog Output Current Control */ +#define DACC_ACR_IBCTLCH1(value) ((DACC_ACR_IBCTLCH1_Msk & ((value) << DACC_ACR_IBCTLCH1_Pos))) +#define DACC_ACR_IBCTLDACCORE_Pos 8 +#define DACC_ACR_IBCTLDACCORE_Msk (0x3u << DACC_ACR_IBCTLDACCORE_Pos) /**< \brief (DACC_ACR) Bias Current Control for DAC Core */ +#define DACC_ACR_IBCTLDACCORE(value) ((DACC_ACR_IBCTLDACCORE_Msk & ((value) << DACC_ACR_IBCTLDACCORE_Pos))) +/* -------- DACC_WPMR : (DACC Offset: 0xE4) Write Protect Mode register -------- */ +#define DACC_WPMR_WPEN (0x1u << 0) /**< \brief (DACC_WPMR) Write Protect Enable */ +#define DACC_WPMR_WPKEY_Pos 8 +#define DACC_WPMR_WPKEY_Msk (0xffffffu << DACC_WPMR_WPKEY_Pos) /**< \brief (DACC_WPMR) Write Protect KEY */ +#define DACC_WPMR_WPKEY(value) ((DACC_WPMR_WPKEY_Msk & ((value) << DACC_WPMR_WPKEY_Pos))) +/* -------- DACC_WPSR : (DACC Offset: 0xE8) Write Protect Status register -------- */ +#define DACC_WPSR_WPROTERR (0x1u << 0) /**< \brief (DACC_WPSR) Write protection error */ +#define DACC_WPSR_WPROTADDR_Pos 8 +#define DACC_WPSR_WPROTADDR_Msk (0xffu << DACC_WPSR_WPROTADDR_Pos) /**< \brief (DACC_WPSR) Write protection error address */ +/* -------- DACC_RPR : (DACC Offset: 0x100) Receive Pointer Register -------- */ +#define DACC_RPR_RXPTR_Pos 0 +#define DACC_RPR_RXPTR_Msk (0xffffffffu << DACC_RPR_RXPTR_Pos) /**< \brief (DACC_RPR) Receive Pointer Register */ +#define DACC_RPR_RXPTR(value) ((DACC_RPR_RXPTR_Msk & ((value) << DACC_RPR_RXPTR_Pos))) +/* -------- DACC_RCR : (DACC Offset: 0x104) Receive Counter Register -------- */ +#define DACC_RCR_RXCTR_Pos 0 +#define DACC_RCR_RXCTR_Msk (0xffffu << DACC_RCR_RXCTR_Pos) /**< \brief (DACC_RCR) Receive Counter Register */ +#define DACC_RCR_RXCTR(value) ((DACC_RCR_RXCTR_Msk & ((value) << DACC_RCR_RXCTR_Pos))) +/* -------- DACC_TPR : (DACC Offset: 0x108) Transmit Pointer Register -------- */ +#define DACC_TPR_TXPTR_Pos 0 +#define DACC_TPR_TXPTR_Msk (0xffffffffu << DACC_TPR_TXPTR_Pos) /**< \brief (DACC_TPR) Transmit Counter Register */ +#define DACC_TPR_TXPTR(value) ((DACC_TPR_TXPTR_Msk & ((value) << DACC_TPR_TXPTR_Pos))) +/* -------- DACC_TCR : (DACC Offset: 0x10C) Transmit Counter Register -------- */ +#define DACC_TCR_TXCTR_Pos 0 +#define DACC_TCR_TXCTR_Msk (0xffffu << DACC_TCR_TXCTR_Pos) /**< \brief (DACC_TCR) Transmit Counter Register */ +#define DACC_TCR_TXCTR(value) ((DACC_TCR_TXCTR_Msk & ((value) << DACC_TCR_TXCTR_Pos))) +/* -------- DACC_RNPR : (DACC Offset: 0x110) Receive Next Pointer Register -------- */ +#define DACC_RNPR_RXNPTR_Pos 0 +#define DACC_RNPR_RXNPTR_Msk (0xffffffffu << DACC_RNPR_RXNPTR_Pos) /**< \brief (DACC_RNPR) Receive Next Pointer */ +#define DACC_RNPR_RXNPTR(value) ((DACC_RNPR_RXNPTR_Msk & ((value) << DACC_RNPR_RXNPTR_Pos))) +/* -------- DACC_RNCR : (DACC Offset: 0x114) Receive Next Counter Register -------- */ +#define DACC_RNCR_RXNCTR_Pos 0 +#define DACC_RNCR_RXNCTR_Msk (0xffffu << DACC_RNCR_RXNCTR_Pos) /**< \brief (DACC_RNCR) Receive Next Counter */ +#define DACC_RNCR_RXNCTR(value) ((DACC_RNCR_RXNCTR_Msk & ((value) << DACC_RNCR_RXNCTR_Pos))) +/* -------- DACC_TNPR : (DACC Offset: 0x118) Transmit Next Pointer Register -------- */ +#define DACC_TNPR_TXNPTR_Pos 0 +#define DACC_TNPR_TXNPTR_Msk (0xffffffffu << DACC_TNPR_TXNPTR_Pos) /**< \brief (DACC_TNPR) Transmit Next Pointer */ +#define DACC_TNPR_TXNPTR(value) ((DACC_TNPR_TXNPTR_Msk & ((value) << DACC_TNPR_TXNPTR_Pos))) +/* -------- DACC_TNCR : (DACC Offset: 0x11C) Transmit Next Counter Register -------- */ +#define DACC_TNCR_TXNCTR_Pos 0 +#define DACC_TNCR_TXNCTR_Msk (0xffffu << DACC_TNCR_TXNCTR_Pos) /**< \brief (DACC_TNCR) Transmit Counter Next */ +#define DACC_TNCR_TXNCTR(value) ((DACC_TNCR_TXNCTR_Msk & ((value) << DACC_TNCR_TXNCTR_Pos))) +/* -------- DACC_PTCR : (DACC Offset: 0x120) Transfer Control Register -------- */ +#define DACC_PTCR_RXTEN (0x1u << 0) /**< \brief (DACC_PTCR) Receiver Transfer Enable */ +#define DACC_PTCR_RXTDIS (0x1u << 1) /**< \brief (DACC_PTCR) Receiver Transfer Disable */ +#define DACC_PTCR_TXTEN (0x1u << 8) /**< \brief (DACC_PTCR) Transmitter Transfer Enable */ +#define DACC_PTCR_TXTDIS (0x1u << 9) /**< \brief (DACC_PTCR) Transmitter Transfer Disable */ +/* -------- DACC_PTSR : (DACC Offset: 0x124) Transfer Status Register -------- */ +#define DACC_PTSR_RXTEN (0x1u << 0) /**< \brief (DACC_PTSR) Receiver Transfer Enable */ +#define DACC_PTSR_TXTEN (0x1u << 8) /**< \brief (DACC_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3S_DACC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_efc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_efc.h new file mode 100644 index 000000000..f3ff9e65e --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_efc.h @@ -0,0 +1,76 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_EFC_COMPONENT_ +#define _SAM3S_EFC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Embedded Flash Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S_EFC Embedded Flash Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Efc hardware registers */ +typedef struct { + RwReg EEFC_FMR; /**< \brief (Efc Offset: 0x00) EEFC Flash Mode Register */ + WoReg EEFC_FCR; /**< \brief (Efc Offset: 0x04) EEFC Flash Command Register */ + RoReg EEFC_FSR; /**< \brief (Efc Offset: 0x08) EEFC Flash Status Register */ + RoReg EEFC_FRR; /**< \brief (Efc Offset: 0x0C) EEFC Flash Result Register */ +} Efc; +#endif /* __ASSEMBLY__ */ +/* -------- EEFC_FMR : (EFC Offset: 0x00) EEFC Flash Mode Register -------- */ +#define EEFC_FMR_FRDY (0x1u << 0) /**< \brief (EEFC_FMR) Ready Interrupt Enable */ +#define EEFC_FMR_FWS_Pos 8 +#define EEFC_FMR_FWS_Msk (0xfu << EEFC_FMR_FWS_Pos) /**< \brief (EEFC_FMR) Flash Wait State */ +#define EEFC_FMR_FWS(value) ((EEFC_FMR_FWS_Msk & ((value) << EEFC_FMR_FWS_Pos))) +#define EEFC_FMR_SCOD (0x1u << 16) /**< \brief (EEFC_FMR) Sequential Code Optimization Disable */ +#define EEFC_FMR_FAM (0x1u << 24) /**< \brief (EEFC_FMR) Flash Access Mode */ +/* -------- EEFC_FCR : (EFC Offset: 0x04) EEFC Flash Command Register -------- */ +#define EEFC_FCR_FCMD_Pos 0 +#define EEFC_FCR_FCMD_Msk (0xffu << EEFC_FCR_FCMD_Pos) /**< \brief (EEFC_FCR) Flash Command */ +#define EEFC_FCR_FCMD(value) ((EEFC_FCR_FCMD_Msk & ((value) << EEFC_FCR_FCMD_Pos))) +#define EEFC_FCR_FARG_Pos 8 +#define EEFC_FCR_FARG_Msk (0xffffu << EEFC_FCR_FARG_Pos) /**< \brief (EEFC_FCR) Flash Command Argument */ +#define EEFC_FCR_FARG(value) ((EEFC_FCR_FARG_Msk & ((value) << EEFC_FCR_FARG_Pos))) +#define EEFC_FCR_FKEY_Pos 24 +#define EEFC_FCR_FKEY_Msk (0xffu << EEFC_FCR_FKEY_Pos) /**< \brief (EEFC_FCR) Flash Writing Protection Key */ +#define EEFC_FCR_FKEY(value) ((EEFC_FCR_FKEY_Msk & ((value) << EEFC_FCR_FKEY_Pos))) +/* -------- EEFC_FSR : (EFC Offset: 0x08) EEFC Flash Status Register -------- */ +#define EEFC_FSR_FRDY (0x1u << 0) /**< \brief (EEFC_FSR) Flash Ready Status */ +#define EEFC_FSR_FCMDE (0x1u << 1) /**< \brief (EEFC_FSR) Flash Command Error Status */ +#define EEFC_FSR_FLOCKE (0x1u << 2) /**< \brief (EEFC_FSR) Flash Lock Error Status */ +/* -------- EEFC_FRR : (EFC Offset: 0x0C) EEFC Flash Result Register -------- */ +#define EEFC_FRR_FVALUE_Pos 0 +#define EEFC_FRR_FVALUE_Msk (0xffffffffu << EEFC_FRR_FVALUE_Pos) /**< \brief (EEFC_FRR) Flash Result Value */ + +/*@}*/ + + +#endif /* _SAM3S_EFC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_gpbr.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_gpbr.h new file mode 100644 index 000000000..a7122df98 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_gpbr.h @@ -0,0 +1,53 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_GPBR_COMPONENT_ +#define _SAM3S_GPBR_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR General Purpose Backup Register */ +/* ============================================================================= */ +/** \addtogroup SAM3S_GPBR General Purpose Backup Register */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Gpbr hardware registers */ +typedef struct { + RwReg SYS_GPBR[8]; /**< \brief (Gpbr Offset: 0x0) General Purpose Backup Register */ +} Gpbr; +#endif /* __ASSEMBLY__ */ +/* -------- SYS_GPBR[8] : (GPBR Offset: 0x0) General Purpose Backup Register -------- */ +#define SYS_GPBR_GPBR_VALUE_Pos 0 +#define SYS_GPBR_GPBR_VALUE_Msk (0xffffffffu << SYS_GPBR_GPBR_VALUE_Pos) /**< \brief (SYS_GPBR[8]) Value of GPBR x */ +#define SYS_GPBR_GPBR_VALUE(value) ((SYS_GPBR_GPBR_VALUE_Msk & ((value) << SYS_GPBR_GPBR_VALUE_Pos))) + +/*@}*/ + + +#endif /* _SAM3S_GPBR_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_hsmci.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_hsmci.h new file mode 100644 index 000000000..35e709b39 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_hsmci.h @@ -0,0 +1,388 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_HSMCI_COMPONENT_ +#define _SAM3S_HSMCI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR High Speed MultiMedia Card Interface */ +/* ============================================================================= */ +/** \addtogroup SAM3S_HSMCI High Speed MultiMedia Card Interface */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Hsmci hardware registers */ +typedef struct { + WoReg HSMCI_CR; /**< \brief (Hsmci Offset: 0x00) Control Register */ + RwReg HSMCI_MR; /**< \brief (Hsmci Offset: 0x04) Mode Register */ + RwReg HSMCI_DTOR; /**< \brief (Hsmci Offset: 0x08) Data Timeout Register */ + RwReg HSMCI_SDCR; /**< \brief (Hsmci Offset: 0x0C) SD/SDIO Card Register */ + RwReg HSMCI_ARGR; /**< \brief (Hsmci Offset: 0x10) Argument Register */ + WoReg HSMCI_CMDR; /**< \brief (Hsmci Offset: 0x14) Command Register */ + RwReg HSMCI_BLKR; /**< \brief (Hsmci Offset: 0x18) Block Register */ + RwReg HSMCI_CSTOR; /**< \brief (Hsmci Offset: 0x1C) Completion Signal Timeout Register */ + RoReg HSMCI_RSPR[4]; /**< \brief (Hsmci Offset: 0x20) Response Register */ + RoReg HSMCI_RDR; /**< \brief (Hsmci Offset: 0x30) Receive Data Register */ + WoReg HSMCI_TDR; /**< \brief (Hsmci Offset: 0x34) Transmit Data Register */ + RoReg Reserved1[2]; + RoReg HSMCI_SR; /**< \brief (Hsmci Offset: 0x40) Status Register */ + WoReg HSMCI_IER; /**< \brief (Hsmci Offset: 0x44) Interrupt Enable Register */ + WoReg HSMCI_IDR; /**< \brief (Hsmci Offset: 0x48) Interrupt Disable Register */ + RoReg HSMCI_IMR; /**< \brief (Hsmci Offset: 0x4C) Interrupt Mask Register */ + RoReg Reserved2[1]; + RwReg HSMCI_CFG; /**< \brief (Hsmci Offset: 0x54) Configuration Register */ + RoReg Reserved3[35]; + RwReg HSMCI_WPMR; /**< \brief (Hsmci Offset: 0xE4) Write Protection Mode Register */ + RoReg HSMCI_WPSR; /**< \brief (Hsmci Offset: 0xE8) Write Protection Status Register */ + RoReg Reserved4[5]; + RwReg HSMCI_RPR; /**< \brief (Hsmci Offset: 0x100) Receive Pointer Register */ + RwReg HSMCI_RCR; /**< \brief (Hsmci Offset: 0x104) Receive Counter Register */ + RwReg HSMCI_TPR; /**< \brief (Hsmci Offset: 0x108) Transmit Pointer Register */ + RwReg HSMCI_TCR; /**< \brief (Hsmci Offset: 0x10C) Transmit Counter Register */ + RwReg HSMCI_RNPR; /**< \brief (Hsmci Offset: 0x110) Receive Next Pointer Register */ + RwReg HSMCI_RNCR; /**< \brief (Hsmci Offset: 0x114) Receive Next Counter Register */ + RwReg HSMCI_TNPR; /**< \brief (Hsmci Offset: 0x118) Transmit Next Pointer Register */ + RwReg HSMCI_TNCR; /**< \brief (Hsmci Offset: 0x11C) Transmit Next Counter Register */ + WoReg HSMCI_PTCR; /**< \brief (Hsmci Offset: 0x120) Transfer Control Register */ + RoReg HSMCI_PTSR; /**< \brief (Hsmci Offset: 0x124) Transfer Status Register */ + RoReg Reserved5[54]; + RwReg HSMCI_FIFO[256]; /**< \brief (Hsmci Offset: 0x200) FIFO Memory Aperture0 */ +} Hsmci; +#endif /* __ASSEMBLY__ */ +/* -------- HSMCI_CR : (HSMCI Offset: 0x00) Control Register -------- */ +#define HSMCI_CR_MCIEN (0x1u << 0) /**< \brief (HSMCI_CR) Multi-Media Interface Enable */ +#define HSMCI_CR_MCIDIS (0x1u << 1) /**< \brief (HSMCI_CR) Multi-Media Interface Disable */ +#define HSMCI_CR_PWSEN (0x1u << 2) /**< \brief (HSMCI_CR) Power Save Mode Enable */ +#define HSMCI_CR_PWSDIS (0x1u << 3) /**< \brief (HSMCI_CR) Power Save Mode Disable */ +#define HSMCI_CR_SWRST (0x1u << 7) /**< \brief (HSMCI_CR) Software Reset */ +/* -------- HSMCI_MR : (HSMCI Offset: 0x04) Mode Register -------- */ +#define HSMCI_MR_CLKDIV_Pos 0 +#define HSMCI_MR_CLKDIV_Msk (0xffu << HSMCI_MR_CLKDIV_Pos) /**< \brief (HSMCI_MR) Clock Divider */ +#define HSMCI_MR_CLKDIV(value) ((HSMCI_MR_CLKDIV_Msk & ((value) << HSMCI_MR_CLKDIV_Pos))) +#define HSMCI_MR_PWSDIV_Pos 8 +#define HSMCI_MR_PWSDIV_Msk (0x7u << HSMCI_MR_PWSDIV_Pos) /**< \brief (HSMCI_MR) Power Saving Divider */ +#define HSMCI_MR_PWSDIV(value) ((HSMCI_MR_PWSDIV_Msk & ((value) << HSMCI_MR_PWSDIV_Pos))) +#define HSMCI_MR_RDPROOF (0x1u << 11) /**< \brief (HSMCI_MR) */ +#define HSMCI_MR_WRPROOF (0x1u << 12) /**< \brief (HSMCI_MR) */ +#define HSMCI_MR_FBYTE (0x1u << 13) /**< \brief (HSMCI_MR) Force Byte Transfer */ +#define HSMCI_MR_PADV (0x1u << 14) /**< \brief (HSMCI_MR) Padding Value */ +#define HSMCI_MR_PDCMODE (0x1u << 15) /**< \brief (HSMCI_MR) PDC-oriented Mode */ +/* -------- HSMCI_DTOR : (HSMCI Offset: 0x08) Data Timeout Register -------- */ +#define HSMCI_DTOR_DTOCYC_Pos 0 +#define HSMCI_DTOR_DTOCYC_Msk (0xfu << HSMCI_DTOR_DTOCYC_Pos) /**< \brief (HSMCI_DTOR) Data Timeout Cycle Number */ +#define HSMCI_DTOR_DTOCYC(value) ((HSMCI_DTOR_DTOCYC_Msk & ((value) << HSMCI_DTOR_DTOCYC_Pos))) +#define HSMCI_DTOR_DTOMUL_Pos 4 +#define HSMCI_DTOR_DTOMUL_Msk (0x7u << HSMCI_DTOR_DTOMUL_Pos) /**< \brief (HSMCI_DTOR) Data Timeout Multiplier */ +#define HSMCI_DTOR_DTOMUL_1 (0x0u << 4) /**< \brief (HSMCI_DTOR) DTOCYC */ +#define HSMCI_DTOR_DTOMUL_16 (0x1u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 16 */ +#define HSMCI_DTOR_DTOMUL_128 (0x2u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 128 */ +#define HSMCI_DTOR_DTOMUL_256 (0x3u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 256 */ +#define HSMCI_DTOR_DTOMUL_1024 (0x4u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 1024 */ +#define HSMCI_DTOR_DTOMUL_4096 (0x5u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 4096 */ +#define HSMCI_DTOR_DTOMUL_65536 (0x6u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 65536 */ +#define HSMCI_DTOR_DTOMUL_1048576 (0x7u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 1048576 */ +/* -------- HSMCI_SDCR : (HSMCI Offset: 0x0C) SD/SDIO Card Register -------- */ +#define HSMCI_SDCR_SDCSEL_Pos 0 +#define HSMCI_SDCR_SDCSEL_Msk (0x3u << HSMCI_SDCR_SDCSEL_Pos) /**< \brief (HSMCI_SDCR) SDCard/SDIO Slot */ +#define HSMCI_SDCR_SDCSEL_SLOTA (0x0u << 0) /**< \brief (HSMCI_SDCR) Slot A is selected. */ +#define HSMCI_SDCR_SDCSEL_SLOTB (0x1u << 0) /**< \brief (HSMCI_SDCR) - */ +#define HSMCI_SDCR_SDCSEL_SLOTC (0x2u << 0) /**< \brief (HSMCI_SDCR) - */ +#define HSMCI_SDCR_SDCSEL_SLOTD (0x3u << 0) /**< \brief (HSMCI_SDCR) - */ +#define HSMCI_SDCR_SDCBUS_Pos 6 +#define HSMCI_SDCR_SDCBUS_Msk (0x3u << HSMCI_SDCR_SDCBUS_Pos) /**< \brief (HSMCI_SDCR) SDCard/SDIO Bus Width */ +#define HSMCI_SDCR_SDCBUS_1 (0x0u << 6) /**< \brief (HSMCI_SDCR) 1 bit */ +#define HSMCI_SDCR_SDCBUS_4 (0x2u << 6) /**< \brief (HSMCI_SDCR) 4 bit */ +#define HSMCI_SDCR_SDCBUS_8 (0x3u << 6) /**< \brief (HSMCI_SDCR) 8 bit */ +/* -------- HSMCI_ARGR : (HSMCI Offset: 0x10) Argument Register -------- */ +#define HSMCI_ARGR_ARG_Pos 0 +#define HSMCI_ARGR_ARG_Msk (0xffffffffu << HSMCI_ARGR_ARG_Pos) /**< \brief (HSMCI_ARGR) Command Argument */ +#define HSMCI_ARGR_ARG(value) ((HSMCI_ARGR_ARG_Msk & ((value) << HSMCI_ARGR_ARG_Pos))) +/* -------- HSMCI_CMDR : (HSMCI Offset: 0x14) Command Register -------- */ +#define HSMCI_CMDR_CMDNB_Pos 0 +#define HSMCI_CMDR_CMDNB_Msk (0x3fu << HSMCI_CMDR_CMDNB_Pos) /**< \brief (HSMCI_CMDR) Command Number */ +#define HSMCI_CMDR_CMDNB(value) ((HSMCI_CMDR_CMDNB_Msk & ((value) << HSMCI_CMDR_CMDNB_Pos))) +#define HSMCI_CMDR_RSPTYP_Pos 6 +#define HSMCI_CMDR_RSPTYP_Msk (0x3u << HSMCI_CMDR_RSPTYP_Pos) /**< \brief (HSMCI_CMDR) Response Type */ +#define HSMCI_CMDR_RSPTYP_NORESP (0x0u << 6) /**< \brief (HSMCI_CMDR) No response. */ +#define HSMCI_CMDR_RSPTYP_48_BIT (0x1u << 6) /**< \brief (HSMCI_CMDR) 48-bit response. */ +#define HSMCI_CMDR_RSPTYP_136_BIT (0x2u << 6) /**< \brief (HSMCI_CMDR) 136-bit response. */ +#define HSMCI_CMDR_RSPTYP_R1B (0x3u << 6) /**< \brief (HSMCI_CMDR) R1b response type */ +#define HSMCI_CMDR_SPCMD_Pos 8 +#define HSMCI_CMDR_SPCMD_Msk (0x7u << HSMCI_CMDR_SPCMD_Pos) /**< \brief (HSMCI_CMDR) Special Command */ +#define HSMCI_CMDR_SPCMD_STD (0x0u << 8) /**< \brief (HSMCI_CMDR) Not a special CMD. */ +#define HSMCI_CMDR_SPCMD_INIT (0x1u << 8) /**< \brief (HSMCI_CMDR) Initialization CMD: 74 clock cycles for initialization sequence. */ +#define HSMCI_CMDR_SPCMD_SYNC (0x2u << 8) /**< \brief (HSMCI_CMDR) Synchronized CMD: Wait for the end of the current data block transfer before sending the pending command. */ +#define HSMCI_CMDR_SPCMD_CE_ATA (0x3u << 8) /**< \brief (HSMCI_CMDR) CE-ATA Completion Signal disable Command. The host cancels the ability for the device to return a command completion signal on the command line. */ +#define HSMCI_CMDR_SPCMD_IT_CMD (0x4u << 8) /**< \brief (HSMCI_CMDR) Interrupt command: Corresponds to the Interrupt Mode (CMD40). */ +#define HSMCI_CMDR_SPCMD_IT_RESP (0x5u << 8) /**< \brief (HSMCI_CMDR) Interrupt response: Corresponds to the Interrupt Mode (CMD40). */ +#define HSMCI_CMDR_SPCMD_BOR (0x6u << 8) /**< \brief (HSMCI_CMDR) Boot Operation Request. Start a boot operation mode, the host processor can read boot data from the MMC device directly. */ +#define HSMCI_CMDR_SPCMD_EBO (0x7u << 8) /**< \brief (HSMCI_CMDR) End Boot Operation. This command allows the host processor to terminate the boot operation mode. */ +#define HSMCI_CMDR_OPDCMD (0x1u << 11) /**< \brief (HSMCI_CMDR) Open Drain Command */ +#define HSMCI_CMDR_OPDCMD_PUSHPULL (0x0u << 11) /**< \brief (HSMCI_CMDR) Push pull command. */ +#define HSMCI_CMDR_OPDCMD_OPENDRAIN (0x1u << 11) /**< \brief (HSMCI_CMDR) Open drain command. */ +#define HSMCI_CMDR_MAXLAT (0x1u << 12) /**< \brief (HSMCI_CMDR) Max Latency for Command to Response */ +#define HSMCI_CMDR_MAXLAT_5 (0x0u << 12) /**< \brief (HSMCI_CMDR) 5-cycle max latency. */ +#define HSMCI_CMDR_MAXLAT_64 (0x1u << 12) /**< \brief (HSMCI_CMDR) 64-cycle max latency. */ +#define HSMCI_CMDR_TRCMD_Pos 16 +#define HSMCI_CMDR_TRCMD_Msk (0x3u << HSMCI_CMDR_TRCMD_Pos) /**< \brief (HSMCI_CMDR) Transfer Command */ +#define HSMCI_CMDR_TRCMD_NO_DATA (0x0u << 16) /**< \brief (HSMCI_CMDR) No data transfer */ +#define HSMCI_CMDR_TRCMD_START_DATA (0x1u << 16) /**< \brief (HSMCI_CMDR) Start data transfer */ +#define HSMCI_CMDR_TRCMD_STOP_DATA (0x2u << 16) /**< \brief (HSMCI_CMDR) Stop data transfer */ +#define HSMCI_CMDR_TRDIR (0x1u << 18) /**< \brief (HSMCI_CMDR) Transfer Direction */ +#define HSMCI_CMDR_TRDIR_WRITE (0x0u << 18) /**< \brief (HSMCI_CMDR) Write. */ +#define HSMCI_CMDR_TRDIR_READ (0x1u << 18) /**< \brief (HSMCI_CMDR) Read. */ +#define HSMCI_CMDR_TRTYP_Pos 19 +#define HSMCI_CMDR_TRTYP_Msk (0x7u << HSMCI_CMDR_TRTYP_Pos) /**< \brief (HSMCI_CMDR) Transfer Type */ +#define HSMCI_CMDR_TRTYP_SINGLE (0x0u << 19) /**< \brief (HSMCI_CMDR) MMC/SDCard Single Block */ +#define HSMCI_CMDR_TRTYP_MULTIPLE (0x1u << 19) /**< \brief (HSMCI_CMDR) MMC/SDCard Multiple Block */ +#define HSMCI_CMDR_TRTYP_STREAM (0x2u << 19) /**< \brief (HSMCI_CMDR) MMC Stream */ +#define HSMCI_CMDR_TRTYP_BYTE (0x4u << 19) /**< \brief (HSMCI_CMDR) SDIO Byte */ +#define HSMCI_CMDR_TRTYP_BLOCK (0x5u << 19) /**< \brief (HSMCI_CMDR) SDIO Block */ +#define HSMCI_CMDR_IOSPCMD_Pos 24 +#define HSMCI_CMDR_IOSPCMD_Msk (0x3u << HSMCI_CMDR_IOSPCMD_Pos) /**< \brief (HSMCI_CMDR) SDIO Special Command */ +#define HSMCI_CMDR_IOSPCMD_STD (0x0u << 24) /**< \brief (HSMCI_CMDR) Not an SDIO Special Command */ +#define HSMCI_CMDR_IOSPCMD_SUSPEND (0x1u << 24) /**< \brief (HSMCI_CMDR) SDIO Suspend Command */ +#define HSMCI_CMDR_IOSPCMD_RESUME (0x2u << 24) /**< \brief (HSMCI_CMDR) SDIO Resume Command */ +#define HSMCI_CMDR_ATACS (0x1u << 26) /**< \brief (HSMCI_CMDR) ATA with Command Completion Signal */ +#define HSMCI_CMDR_ATACS_NORMAL (0x0u << 26) /**< \brief (HSMCI_CMDR) Normal operation mode. */ +#define HSMCI_CMDR_ATACS_COMPLETION (0x1u << 26) /**< \brief (HSMCI_CMDR) This bit indicates that a completion signal is expected within a programmed amount of time (HSMCI_CSTOR). */ +#define HSMCI_CMDR_BOOT_ACK (0x1u << 27) /**< \brief (HSMCI_CMDR) Boot Operation Acknowledge. */ +/* -------- HSMCI_BLKR : (HSMCI Offset: 0x18) Block Register -------- */ +#define HSMCI_BLKR_BCNT_Pos 0 +#define HSMCI_BLKR_BCNT_Msk (0xffffu << HSMCI_BLKR_BCNT_Pos) /**< \brief (HSMCI_BLKR) MMC/SDIO Block Count - SDIO Byte Count */ +#define HSMCI_BLKR_BCNT_MULTIPLE (0x0u << 0) /**< \brief (HSMCI_BLKR) MMC/SDCARD Multiple BlockFrom 1 to 65635: Value 0 corresponds to an infinite block transfer. */ +#define HSMCI_BLKR_BCNT_BYTE (0x4u << 0) /**< \brief (HSMCI_BLKR) SDIO ByteFrom 1 to 512 bytes: Value 0 corresponds to a 512-byte transfer.Values from 0x200 to 0xFFFF are forbidden. */ +#define HSMCI_BLKR_BCNT_BLOCK (0x5u << 0) /**< \brief (HSMCI_BLKR) SDIO BlockFrom 1 to 511 blocks: Value 0 corresponds to an infinite block transfer.Values from 0x200 to 0xFFFF are forbidden. */ +#define HSMCI_BLKR_BLKLEN_Pos 16 +#define HSMCI_BLKR_BLKLEN_Msk (0xffffu << HSMCI_BLKR_BLKLEN_Pos) /**< \brief (HSMCI_BLKR) Data Block Length */ +#define HSMCI_BLKR_BLKLEN(value) ((HSMCI_BLKR_BLKLEN_Msk & ((value) << HSMCI_BLKR_BLKLEN_Pos))) +/* -------- HSMCI_CSTOR : (HSMCI Offset: 0x1C) Completion Signal Timeout Register -------- */ +#define HSMCI_CSTOR_CSTOCYC_Pos 0 +#define HSMCI_CSTOR_CSTOCYC_Msk (0xfu << HSMCI_CSTOR_CSTOCYC_Pos) /**< \brief (HSMCI_CSTOR) Completion Signal Timeout Cycle Number */ +#define HSMCI_CSTOR_CSTOCYC(value) ((HSMCI_CSTOR_CSTOCYC_Msk & ((value) << HSMCI_CSTOR_CSTOCYC_Pos))) +#define HSMCI_CSTOR_CSTOMUL_Pos 4 +#define HSMCI_CSTOR_CSTOMUL_Msk (0x7u << HSMCI_CSTOR_CSTOMUL_Pos) /**< \brief (HSMCI_CSTOR) Completion Signal Timeout Multiplier */ +#define HSMCI_CSTOR_CSTOMUL_1 (0x0u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1 */ +#define HSMCI_CSTOR_CSTOMUL_16 (0x1u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 16 */ +#define HSMCI_CSTOR_CSTOMUL_128 (0x2u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 128 */ +#define HSMCI_CSTOR_CSTOMUL_256 (0x3u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 256 */ +#define HSMCI_CSTOR_CSTOMUL_1024 (0x4u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1024 */ +#define HSMCI_CSTOR_CSTOMUL_4096 (0x5u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 4096 */ +#define HSMCI_CSTOR_CSTOMUL_65536 (0x6u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 65536 */ +#define HSMCI_CSTOR_CSTOMUL_1048576 (0x7u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1048576 */ +/* -------- HSMCI_RSPR[4] : (HSMCI Offset: 0x20) Response Register -------- */ +#define HSMCI_RSPR_RSP_Pos 0 +#define HSMCI_RSPR_RSP_Msk (0xffffffffu << HSMCI_RSPR_RSP_Pos) /**< \brief (HSMCI_RSPR[4]) Response */ +/* -------- HSMCI_RDR : (HSMCI Offset: 0x30) Receive Data Register -------- */ +#define HSMCI_RDR_DATA_Pos 0 +#define HSMCI_RDR_DATA_Msk (0xffffffffu << HSMCI_RDR_DATA_Pos) /**< \brief (HSMCI_RDR) Data to Read */ +/* -------- HSMCI_TDR : (HSMCI Offset: 0x34) Transmit Data Register -------- */ +#define HSMCI_TDR_DATA_Pos 0 +#define HSMCI_TDR_DATA_Msk (0xffffffffu << HSMCI_TDR_DATA_Pos) /**< \brief (HSMCI_TDR) Data to Write */ +#define HSMCI_TDR_DATA(value) ((HSMCI_TDR_DATA_Msk & ((value) << HSMCI_TDR_DATA_Pos))) +/* -------- HSMCI_SR : (HSMCI Offset: 0x40) Status Register -------- */ +#define HSMCI_SR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_SR) Command Ready */ +#define HSMCI_SR_RXRDY (0x1u << 1) /**< \brief (HSMCI_SR) Receiver Ready */ +#define HSMCI_SR_TXRDY (0x1u << 2) /**< \brief (HSMCI_SR) Transmit Ready */ +#define HSMCI_SR_BLKE (0x1u << 3) /**< \brief (HSMCI_SR) Data Block Ended */ +#define HSMCI_SR_DTIP (0x1u << 4) /**< \brief (HSMCI_SR) Data Transfer in Progress */ +#define HSMCI_SR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_SR) HSMCI Not Busy */ +#define HSMCI_SR_ENDRX (0x1u << 6) /**< \brief (HSMCI_SR) End of RX Buffer */ +#define HSMCI_SR_ENDTX (0x1u << 7) /**< \brief (HSMCI_SR) End of TX Buffer */ +#define HSMCI_SR_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_SR) SDIO Interrupt for Slot A */ +#define HSMCI_SR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_SR) SDIO Read Wait Operation Status */ +#define HSMCI_SR_CSRCV (0x1u << 13) /**< \brief (HSMCI_SR) CE-ATA Completion Signal Received */ +#define HSMCI_SR_RXBUFF (0x1u << 14) /**< \brief (HSMCI_SR) RX Buffer Full */ +#define HSMCI_SR_TXBUFE (0x1u << 15) /**< \brief (HSMCI_SR) TX Buffer Empty */ +#define HSMCI_SR_RINDE (0x1u << 16) /**< \brief (HSMCI_SR) Response Index Error */ +#define HSMCI_SR_RDIRE (0x1u << 17) /**< \brief (HSMCI_SR) Response Direction Error */ +#define HSMCI_SR_RCRCE (0x1u << 18) /**< \brief (HSMCI_SR) Response CRC Error */ +#define HSMCI_SR_RENDE (0x1u << 19) /**< \brief (HSMCI_SR) Response End Bit Error */ +#define HSMCI_SR_RTOE (0x1u << 20) /**< \brief (HSMCI_SR) Response Time-out Error */ +#define HSMCI_SR_DCRCE (0x1u << 21) /**< \brief (HSMCI_SR) Data CRC Error */ +#define HSMCI_SR_DTOE (0x1u << 22) /**< \brief (HSMCI_SR) Data Time-out Error */ +#define HSMCI_SR_CSTOE (0x1u << 23) /**< \brief (HSMCI_SR) Completion Signal Time-out Error */ +#define HSMCI_SR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_SR) FIFO empty flag */ +#define HSMCI_SR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_SR) Transfer Done flag */ +#define HSMCI_SR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_SR) Boot Operation Acknowledge Received */ +#define HSMCI_SR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_SR) Boot Operation Acknowledge Error */ +#define HSMCI_SR_OVRE (0x1u << 30) /**< \brief (HSMCI_SR) Overrun */ +#define HSMCI_SR_UNRE (0x1u << 31) /**< \brief (HSMCI_SR) Underrun */ +/* -------- HSMCI_IER : (HSMCI Offset: 0x44) Interrupt Enable Register -------- */ +#define HSMCI_IER_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IER) Command Ready Interrupt Enable */ +#define HSMCI_IER_RXRDY (0x1u << 1) /**< \brief (HSMCI_IER) Receiver Ready Interrupt Enable */ +#define HSMCI_IER_TXRDY (0x1u << 2) /**< \brief (HSMCI_IER) Transmit Ready Interrupt Enable */ +#define HSMCI_IER_BLKE (0x1u << 3) /**< \brief (HSMCI_IER) Data Block Ended Interrupt Enable */ +#define HSMCI_IER_DTIP (0x1u << 4) /**< \brief (HSMCI_IER) Data Transfer in Progress Interrupt Enable */ +#define HSMCI_IER_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IER) Data Not Busy Interrupt Enable */ +#define HSMCI_IER_ENDRX (0x1u << 6) /**< \brief (HSMCI_IER) End of Receive Buffer Interrupt Enable */ +#define HSMCI_IER_ENDTX (0x1u << 7) /**< \brief (HSMCI_IER) End of Transmit Buffer Interrupt Enable */ +#define HSMCI_IER_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_IER) SDIO Interrupt for Slot A Interrupt Enable */ +#define HSMCI_IER_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IER) SDIO Read Wait Operation Status Interrupt Enable */ +#define HSMCI_IER_CSRCV (0x1u << 13) /**< \brief (HSMCI_IER) Completion Signal Received Interrupt Enable */ +#define HSMCI_IER_RXBUFF (0x1u << 14) /**< \brief (HSMCI_IER) Receive Buffer Full Interrupt Enable */ +#define HSMCI_IER_TXBUFE (0x1u << 15) /**< \brief (HSMCI_IER) Transmit Buffer Empty Interrupt Enable */ +#define HSMCI_IER_RINDE (0x1u << 16) /**< \brief (HSMCI_IER) Response Index Error Interrupt Enable */ +#define HSMCI_IER_RDIRE (0x1u << 17) /**< \brief (HSMCI_IER) Response Direction Error Interrupt Enable */ +#define HSMCI_IER_RCRCE (0x1u << 18) /**< \brief (HSMCI_IER) Response CRC Error Interrupt Enable */ +#define HSMCI_IER_RENDE (0x1u << 19) /**< \brief (HSMCI_IER) Response End Bit Error Interrupt Enable */ +#define HSMCI_IER_RTOE (0x1u << 20) /**< \brief (HSMCI_IER) Response Time-out Error Interrupt Enable */ +#define HSMCI_IER_DCRCE (0x1u << 21) /**< \brief (HSMCI_IER) Data CRC Error Interrupt Enable */ +#define HSMCI_IER_DTOE (0x1u << 22) /**< \brief (HSMCI_IER) Data Time-out Error Interrupt Enable */ +#define HSMCI_IER_CSTOE (0x1u << 23) /**< \brief (HSMCI_IER) Completion Signal Timeout Error Interrupt Enable */ +#define HSMCI_IER_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IER) FIFO empty Interrupt enable */ +#define HSMCI_IER_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IER) Transfer Done Interrupt enable */ +#define HSMCI_IER_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IER) Boot Acknowledge Interrupt Enable */ +#define HSMCI_IER_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IER) Boot Acknowledge Error Interrupt Enable */ +#define HSMCI_IER_OVRE (0x1u << 30) /**< \brief (HSMCI_IER) Overrun Interrupt Enable */ +#define HSMCI_IER_UNRE (0x1u << 31) /**< \brief (HSMCI_IER) Underrun Interrupt Enable */ +/* -------- HSMCI_IDR : (HSMCI Offset: 0x48) Interrupt Disable Register -------- */ +#define HSMCI_IDR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IDR) Command Ready Interrupt Disable */ +#define HSMCI_IDR_RXRDY (0x1u << 1) /**< \brief (HSMCI_IDR) Receiver Ready Interrupt Disable */ +#define HSMCI_IDR_TXRDY (0x1u << 2) /**< \brief (HSMCI_IDR) Transmit Ready Interrupt Disable */ +#define HSMCI_IDR_BLKE (0x1u << 3) /**< \brief (HSMCI_IDR) Data Block Ended Interrupt Disable */ +#define HSMCI_IDR_DTIP (0x1u << 4) /**< \brief (HSMCI_IDR) Data Transfer in Progress Interrupt Disable */ +#define HSMCI_IDR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IDR) Data Not Busy Interrupt Disable */ +#define HSMCI_IDR_ENDRX (0x1u << 6) /**< \brief (HSMCI_IDR) End of Receive Buffer Interrupt Disable */ +#define HSMCI_IDR_ENDTX (0x1u << 7) /**< \brief (HSMCI_IDR) End of Transmit Buffer Interrupt Disable */ +#define HSMCI_IDR_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_IDR) SDIO Interrupt for Slot A Interrupt Disable */ +#define HSMCI_IDR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IDR) SDIO Read Wait Operation Status Interrupt Disable */ +#define HSMCI_IDR_CSRCV (0x1u << 13) /**< \brief (HSMCI_IDR) Completion Signal received interrupt Disable */ +#define HSMCI_IDR_RXBUFF (0x1u << 14) /**< \brief (HSMCI_IDR) Receive Buffer Full Interrupt Disable */ +#define HSMCI_IDR_TXBUFE (0x1u << 15) /**< \brief (HSMCI_IDR) Transmit Buffer Empty Interrupt Disable */ +#define HSMCI_IDR_RINDE (0x1u << 16) /**< \brief (HSMCI_IDR) Response Index Error Interrupt Disable */ +#define HSMCI_IDR_RDIRE (0x1u << 17) /**< \brief (HSMCI_IDR) Response Direction Error Interrupt Disable */ +#define HSMCI_IDR_RCRCE (0x1u << 18) /**< \brief (HSMCI_IDR) Response CRC Error Interrupt Disable */ +#define HSMCI_IDR_RENDE (0x1u << 19) /**< \brief (HSMCI_IDR) Response End Bit Error Interrupt Disable */ +#define HSMCI_IDR_RTOE (0x1u << 20) /**< \brief (HSMCI_IDR) Response Time-out Error Interrupt Disable */ +#define HSMCI_IDR_DCRCE (0x1u << 21) /**< \brief (HSMCI_IDR) Data CRC Error Interrupt Disable */ +#define HSMCI_IDR_DTOE (0x1u << 22) /**< \brief (HSMCI_IDR) Data Time-out Error Interrupt Disable */ +#define HSMCI_IDR_CSTOE (0x1u << 23) /**< \brief (HSMCI_IDR) Completion Signal Time out Error Interrupt Disable */ +#define HSMCI_IDR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IDR) FIFO empty Interrupt Disable */ +#define HSMCI_IDR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IDR) Transfer Done Interrupt Disable */ +#define HSMCI_IDR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IDR) Boot Acknowledge Interrupt Disable */ +#define HSMCI_IDR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IDR) Boot Acknowledge Error Interrupt Disable */ +#define HSMCI_IDR_OVRE (0x1u << 30) /**< \brief (HSMCI_IDR) Overrun Interrupt Disable */ +#define HSMCI_IDR_UNRE (0x1u << 31) /**< \brief (HSMCI_IDR) Underrun Interrupt Disable */ +/* -------- HSMCI_IMR : (HSMCI Offset: 0x4C) Interrupt Mask Register -------- */ +#define HSMCI_IMR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IMR) Command Ready Interrupt Mask */ +#define HSMCI_IMR_RXRDY (0x1u << 1) /**< \brief (HSMCI_IMR) Receiver Ready Interrupt Mask */ +#define HSMCI_IMR_TXRDY (0x1u << 2) /**< \brief (HSMCI_IMR) Transmit Ready Interrupt Mask */ +#define HSMCI_IMR_BLKE (0x1u << 3) /**< \brief (HSMCI_IMR) Data Block Ended Interrupt Mask */ +#define HSMCI_IMR_DTIP (0x1u << 4) /**< \brief (HSMCI_IMR) Data Transfer in Progress Interrupt Mask */ +#define HSMCI_IMR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IMR) Data Not Busy Interrupt Mask */ +#define HSMCI_IMR_ENDRX (0x1u << 6) /**< \brief (HSMCI_IMR) End of Receive Buffer Interrupt Mask */ +#define HSMCI_IMR_ENDTX (0x1u << 7) /**< \brief (HSMCI_IMR) End of Transmit Buffer Interrupt Mask */ +#define HSMCI_IMR_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_IMR) SDIO Interrupt for Slot A Interrupt Mask */ +#define HSMCI_IMR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IMR) SDIO Read Wait Operation Status Interrupt Mask */ +#define HSMCI_IMR_CSRCV (0x1u << 13) /**< \brief (HSMCI_IMR) Completion Signal Received Interrupt Mask */ +#define HSMCI_IMR_RXBUFF (0x1u << 14) /**< \brief (HSMCI_IMR) Receive Buffer Full Interrupt Mask */ +#define HSMCI_IMR_TXBUFE (0x1u << 15) /**< \brief (HSMCI_IMR) Transmit Buffer Empty Interrupt Mask */ +#define HSMCI_IMR_RINDE (0x1u << 16) /**< \brief (HSMCI_IMR) Response Index Error Interrupt Mask */ +#define HSMCI_IMR_RDIRE (0x1u << 17) /**< \brief (HSMCI_IMR) Response Direction Error Interrupt Mask */ +#define HSMCI_IMR_RCRCE (0x1u << 18) /**< \brief (HSMCI_IMR) Response CRC Error Interrupt Mask */ +#define HSMCI_IMR_RENDE (0x1u << 19) /**< \brief (HSMCI_IMR) Response End Bit Error Interrupt Mask */ +#define HSMCI_IMR_RTOE (0x1u << 20) /**< \brief (HSMCI_IMR) Response Time-out Error Interrupt Mask */ +#define HSMCI_IMR_DCRCE (0x1u << 21) /**< \brief (HSMCI_IMR) Data CRC Error Interrupt Mask */ +#define HSMCI_IMR_DTOE (0x1u << 22) /**< \brief (HSMCI_IMR) Data Time-out Error Interrupt Mask */ +#define HSMCI_IMR_CSTOE (0x1u << 23) /**< \brief (HSMCI_IMR) Completion Signal Time-out Error Interrupt Mask */ +#define HSMCI_IMR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IMR) FIFO Empty Interrupt Mask */ +#define HSMCI_IMR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IMR) Transfer Done Interrupt Mask */ +#define HSMCI_IMR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IMR) Boot Operation Acknowledge Received Interrupt Mask */ +#define HSMCI_IMR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IMR) Boot Operation Acknowledge Error Interrupt Mask */ +#define HSMCI_IMR_OVRE (0x1u << 30) /**< \brief (HSMCI_IMR) Overrun Interrupt Mask */ +#define HSMCI_IMR_UNRE (0x1u << 31) /**< \brief (HSMCI_IMR) Underrun Interrupt Mask */ +/* -------- HSMCI_CFG : (HSMCI Offset: 0x54) Configuration Register -------- */ +#define HSMCI_CFG_FIFOMODE (0x1u << 0) /**< \brief (HSMCI_CFG) HSMCI Internal FIFO control mode */ +#define HSMCI_CFG_FERRCTRL (0x1u << 4) /**< \brief (HSMCI_CFG) Flow Error flag reset control mode */ +#define HSMCI_CFG_HSMODE (0x1u << 8) /**< \brief (HSMCI_CFG) High Speed Mode */ +#define HSMCI_CFG_LSYNC (0x1u << 12) /**< \brief (HSMCI_CFG) Synchronize on the last block */ +/* -------- HSMCI_WPMR : (HSMCI Offset: 0xE4) Write Protection Mode Register -------- */ +#define HSMCI_WPMR_WP_EN (0x1u << 0) /**< \brief (HSMCI_WPMR) Write Protection Enable */ +#define HSMCI_WPMR_WP_KEY_Pos 8 +#define HSMCI_WPMR_WP_KEY_Msk (0xffffffu << HSMCI_WPMR_WP_KEY_Pos) /**< \brief (HSMCI_WPMR) Write Protection Key password */ +#define HSMCI_WPMR_WP_KEY(value) ((HSMCI_WPMR_WP_KEY_Msk & ((value) << HSMCI_WPMR_WP_KEY_Pos))) +/* -------- HSMCI_WPSR : (HSMCI Offset: 0xE8) Write Protection Status Register -------- */ +#define HSMCI_WPSR_WP_VS_Pos 0 +#define HSMCI_WPSR_WP_VS_Msk (0xfu << HSMCI_WPSR_WP_VS_Pos) /**< \brief (HSMCI_WPSR) Write Protection Violation Status */ +#define HSMCI_WPSR_WP_VS_NONE (0x0u << 0) /**< \brief (HSMCI_WPSR) No Write Protection Violation occurred since the last read of this register (WP_SR) */ +#define HSMCI_WPSR_WP_VS_WRITE (0x1u << 0) /**< \brief (HSMCI_WPSR) Write Protection detected unauthorized attempt to write a control register had occurred (since the last read.) */ +#define HSMCI_WPSR_WP_VS_RESET (0x2u << 0) /**< \brief (HSMCI_WPSR) Software reset had been performed while Write Protection was enabled (since the last read). */ +#define HSMCI_WPSR_WP_VS_BOTH (0x3u << 0) /**< \brief (HSMCI_WPSR) Both Write Protection violation and software reset with Write Protection enabled have occurred since the last read. */ +#define HSMCI_WPSR_WP_VSRC_Pos 8 +#define HSMCI_WPSR_WP_VSRC_Msk (0xffffu << HSMCI_WPSR_WP_VSRC_Pos) /**< \brief (HSMCI_WPSR) Write Protection Violation SouRCe */ +/* -------- HSMCI_RPR : (HSMCI Offset: 0x100) Receive Pointer Register -------- */ +#define HSMCI_RPR_RXPTR_Pos 0 +#define HSMCI_RPR_RXPTR_Msk (0xffffffffu << HSMCI_RPR_RXPTR_Pos) /**< \brief (HSMCI_RPR) Receive Pointer Register */ +#define HSMCI_RPR_RXPTR(value) ((HSMCI_RPR_RXPTR_Msk & ((value) << HSMCI_RPR_RXPTR_Pos))) +/* -------- HSMCI_RCR : (HSMCI Offset: 0x104) Receive Counter Register -------- */ +#define HSMCI_RCR_RXCTR_Pos 0 +#define HSMCI_RCR_RXCTR_Msk (0xffffu << HSMCI_RCR_RXCTR_Pos) /**< \brief (HSMCI_RCR) Receive Counter Register */ +#define HSMCI_RCR_RXCTR(value) ((HSMCI_RCR_RXCTR_Msk & ((value) << HSMCI_RCR_RXCTR_Pos))) +/* -------- HSMCI_TPR : (HSMCI Offset: 0x108) Transmit Pointer Register -------- */ +#define HSMCI_TPR_TXPTR_Pos 0 +#define HSMCI_TPR_TXPTR_Msk (0xffffffffu << HSMCI_TPR_TXPTR_Pos) /**< \brief (HSMCI_TPR) Transmit Counter Register */ +#define HSMCI_TPR_TXPTR(value) ((HSMCI_TPR_TXPTR_Msk & ((value) << HSMCI_TPR_TXPTR_Pos))) +/* -------- HSMCI_TCR : (HSMCI Offset: 0x10C) Transmit Counter Register -------- */ +#define HSMCI_TCR_TXCTR_Pos 0 +#define HSMCI_TCR_TXCTR_Msk (0xffffu << HSMCI_TCR_TXCTR_Pos) /**< \brief (HSMCI_TCR) Transmit Counter Register */ +#define HSMCI_TCR_TXCTR(value) ((HSMCI_TCR_TXCTR_Msk & ((value) << HSMCI_TCR_TXCTR_Pos))) +/* -------- HSMCI_RNPR : (HSMCI Offset: 0x110) Receive Next Pointer Register -------- */ +#define HSMCI_RNPR_RXNPTR_Pos 0 +#define HSMCI_RNPR_RXNPTR_Msk (0xffffffffu << HSMCI_RNPR_RXNPTR_Pos) /**< \brief (HSMCI_RNPR) Receive Next Pointer */ +#define HSMCI_RNPR_RXNPTR(value) ((HSMCI_RNPR_RXNPTR_Msk & ((value) << HSMCI_RNPR_RXNPTR_Pos))) +/* -------- HSMCI_RNCR : (HSMCI Offset: 0x114) Receive Next Counter Register -------- */ +#define HSMCI_RNCR_RXNCTR_Pos 0 +#define HSMCI_RNCR_RXNCTR_Msk (0xffffu << HSMCI_RNCR_RXNCTR_Pos) /**< \brief (HSMCI_RNCR) Receive Next Counter */ +#define HSMCI_RNCR_RXNCTR(value) ((HSMCI_RNCR_RXNCTR_Msk & ((value) << HSMCI_RNCR_RXNCTR_Pos))) +/* -------- HSMCI_TNPR : (HSMCI Offset: 0x118) Transmit Next Pointer Register -------- */ +#define HSMCI_TNPR_TXNPTR_Pos 0 +#define HSMCI_TNPR_TXNPTR_Msk (0xffffffffu << HSMCI_TNPR_TXNPTR_Pos) /**< \brief (HSMCI_TNPR) Transmit Next Pointer */ +#define HSMCI_TNPR_TXNPTR(value) ((HSMCI_TNPR_TXNPTR_Msk & ((value) << HSMCI_TNPR_TXNPTR_Pos))) +/* -------- HSMCI_TNCR : (HSMCI Offset: 0x11C) Transmit Next Counter Register -------- */ +#define HSMCI_TNCR_TXNCTR_Pos 0 +#define HSMCI_TNCR_TXNCTR_Msk (0xffffu << HSMCI_TNCR_TXNCTR_Pos) /**< \brief (HSMCI_TNCR) Transmit Counter Next */ +#define HSMCI_TNCR_TXNCTR(value) ((HSMCI_TNCR_TXNCTR_Msk & ((value) << HSMCI_TNCR_TXNCTR_Pos))) +/* -------- HSMCI_PTCR : (HSMCI Offset: 0x120) Transfer Control Register -------- */ +#define HSMCI_PTCR_RXTEN (0x1u << 0) /**< \brief (HSMCI_PTCR) Receiver Transfer Enable */ +#define HSMCI_PTCR_RXTDIS (0x1u << 1) /**< \brief (HSMCI_PTCR) Receiver Transfer Disable */ +#define HSMCI_PTCR_TXTEN (0x1u << 8) /**< \brief (HSMCI_PTCR) Transmitter Transfer Enable */ +#define HSMCI_PTCR_TXTDIS (0x1u << 9) /**< \brief (HSMCI_PTCR) Transmitter Transfer Disable */ +/* -------- HSMCI_PTSR : (HSMCI Offset: 0x124) Transfer Status Register -------- */ +#define HSMCI_PTSR_RXTEN (0x1u << 0) /**< \brief (HSMCI_PTSR) Receiver Transfer Enable */ +#define HSMCI_PTSR_TXTEN (0x1u << 8) /**< \brief (HSMCI_PTSR) Transmitter Transfer Enable */ +/* -------- HSMCI_FIFO[256] : (HSMCI Offset: 0x200) FIFO Memory Aperture0 -------- */ +#define HSMCI_FIFO_DATA_Pos 0 +#define HSMCI_FIFO_DATA_Msk (0xffffffffu << HSMCI_FIFO_DATA_Pos) /**< \brief (HSMCI_FIFO[256]) Data to Read or Data to Write */ +#define HSMCI_FIFO_DATA(value) ((HSMCI_FIFO_DATA_Msk & ((value) << HSMCI_FIFO_DATA_Pos))) + +/*@}*/ + + +#endif /* _SAM3S_HSMCI_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_matrix.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_matrix.h new file mode 100644 index 000000000..71fcc67dd --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_matrix.h @@ -0,0 +1,188 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_MATRIX_COMPONENT_ +#define _SAM3S_MATRIX_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR AHB Bus Matrix */ +/* ============================================================================= */ +/** \addtogroup SAM3S_MATRIX AHB Bus Matrix */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Matrix hardware registers */ +typedef struct { + RwReg MATRIX_MCFG[4]; /**< \brief (Matrix Offset: 0x0000) Master Configuration Register */ + RoReg Reserved1[12]; + RwReg MATRIX_SCFG[5]; /**< \brief (Matrix Offset: 0x0040) Slave Configuration Register */ + RoReg Reserved2[11]; + RwReg MATRIX_PRAS0; /**< \brief (Matrix Offset: 0x0080) Priority Register A for Slave 0 */ + RoReg Reserved3[1]; + RwReg MATRIX_PRAS1; /**< \brief (Matrix Offset: 0x0088) Priority Register A for Slave 1 */ + RoReg Reserved4[1]; + RwReg MATRIX_PRAS2; /**< \brief (Matrix Offset: 0x0090) Priority Register A for Slave 2 */ + RoReg Reserved5[1]; + RwReg MATRIX_PRAS3; /**< \brief (Matrix Offset: 0x0098) Priority Register A for Slave 3 */ + RoReg Reserved6[1]; + RwReg MATRIX_PRAS4; /**< \brief (Matrix Offset: 0x00A0) Priority Register A for Slave 4 */ + RoReg Reserved7[1]; + RoReg Reserved8[27]; + RwReg CCFG_SYSIO; /**< \brief (Matrix Offset: 0x0114) System I/O Configuration register */ + RoReg Reserved9[1]; + RwReg CCFG_SMCNFCS; /**< \brief (Matrix Offset: 0x011C) SMC Chip Select NAND Flash Assignment Register */ + RoReg Reserved10[49]; + RwReg MATRIX_WPMR; /**< \brief (Matrix Offset: 0x1E4) Write Protect Mode Register */ + RoReg MATRIX_WPSR; /**< \brief (Matrix Offset: 0x1E8) Write Protect Status Register */ +} Matrix; +#endif /* __ASSEMBLY__ */ +/* -------- MATRIX_MCFG[4] : (MATRIX Offset: 0x0000) Master Configuration Register -------- */ +#define MATRIX_MCFG_ULBT_Pos 0 +#define MATRIX_MCFG_ULBT_Msk (0x7u << MATRIX_MCFG_ULBT_Pos) /**< \brief (MATRIX_MCFG[4]) Undefined Length Burst Type */ +#define MATRIX_MCFG_ULBT(value) ((MATRIX_MCFG_ULBT_Msk & ((value) << MATRIX_MCFG_ULBT_Pos))) +/* -------- MATRIX_SCFG[5] : (MATRIX Offset: 0x0040) Slave Configuration Register -------- */ +#define MATRIX_SCFG_SLOT_CYCLE_Pos 0 +#define MATRIX_SCFG_SLOT_CYCLE_Msk (0xffu << MATRIX_SCFG_SLOT_CYCLE_Pos) /**< \brief (MATRIX_SCFG[5]) Maximum Number of Allowed Cycles for a Burst */ +#define MATRIX_SCFG_SLOT_CYCLE(value) ((MATRIX_SCFG_SLOT_CYCLE_Msk & ((value) << MATRIX_SCFG_SLOT_CYCLE_Pos))) +#define MATRIX_SCFG_DEFMSTR_TYPE_Pos 16 +#define MATRIX_SCFG_DEFMSTR_TYPE_Msk (0x3u << MATRIX_SCFG_DEFMSTR_TYPE_Pos) /**< \brief (MATRIX_SCFG[5]) Default Master Type */ +#define MATRIX_SCFG_DEFMSTR_TYPE(value) ((MATRIX_SCFG_DEFMSTR_TYPE_Msk & ((value) << MATRIX_SCFG_DEFMSTR_TYPE_Pos))) +#define MATRIX_SCFG_FIXED_DEFMSTR_Pos 18 +#define MATRIX_SCFG_FIXED_DEFMSTR_Msk (0x7u << MATRIX_SCFG_FIXED_DEFMSTR_Pos) /**< \brief (MATRIX_SCFG[5]) Fixed Default Master */ +#define MATRIX_SCFG_FIXED_DEFMSTR(value) ((MATRIX_SCFG_FIXED_DEFMSTR_Msk & ((value) << MATRIX_SCFG_FIXED_DEFMSTR_Pos))) +#define MATRIX_SCFG_ARBT_Pos 24 +#define MATRIX_SCFG_ARBT_Msk (0x3u << MATRIX_SCFG_ARBT_Pos) /**< \brief (MATRIX_SCFG[5]) Arbitration Type */ +#define MATRIX_SCFG_ARBT(value) ((MATRIX_SCFG_ARBT_Msk & ((value) << MATRIX_SCFG_ARBT_Pos))) +/* -------- MATRIX_PRAS0 : (MATRIX Offset: 0x0080) Priority Register A for Slave 0 -------- */ +#define MATRIX_PRAS0_M0PR_Pos 0 +#define MATRIX_PRAS0_M0PR_Msk (0x3u << MATRIX_PRAS0_M0PR_Pos) /**< \brief (MATRIX_PRAS0) Master 0 Priority */ +#define MATRIX_PRAS0_M0PR(value) ((MATRIX_PRAS0_M0PR_Msk & ((value) << MATRIX_PRAS0_M0PR_Pos))) +#define MATRIX_PRAS0_M1PR_Pos 4 +#define MATRIX_PRAS0_M1PR_Msk (0x3u << MATRIX_PRAS0_M1PR_Pos) /**< \brief (MATRIX_PRAS0) Master 1 Priority */ +#define MATRIX_PRAS0_M1PR(value) ((MATRIX_PRAS0_M1PR_Msk & ((value) << MATRIX_PRAS0_M1PR_Pos))) +#define MATRIX_PRAS0_M2PR_Pos 8 +#define MATRIX_PRAS0_M2PR_Msk (0x3u << MATRIX_PRAS0_M2PR_Pos) /**< \brief (MATRIX_PRAS0) Master 2 Priority */ +#define MATRIX_PRAS0_M2PR(value) ((MATRIX_PRAS0_M2PR_Msk & ((value) << MATRIX_PRAS0_M2PR_Pos))) +#define MATRIX_PRAS0_M3PR_Pos 12 +#define MATRIX_PRAS0_M3PR_Msk (0x3u << MATRIX_PRAS0_M3PR_Pos) /**< \brief (MATRIX_PRAS0) Master 3 Priority */ +#define MATRIX_PRAS0_M3PR(value) ((MATRIX_PRAS0_M3PR_Msk & ((value) << MATRIX_PRAS0_M3PR_Pos))) +#define MATRIX_PRAS0_M4PR_Pos 16 +#define MATRIX_PRAS0_M4PR_Msk (0x3u << MATRIX_PRAS0_M4PR_Pos) /**< \brief (MATRIX_PRAS0) Master 4 Priority */ +#define MATRIX_PRAS0_M4PR(value) ((MATRIX_PRAS0_M4PR_Msk & ((value) << MATRIX_PRAS0_M4PR_Pos))) +/* -------- MATRIX_PRAS1 : (MATRIX Offset: 0x0088) Priority Register A for Slave 1 -------- */ +#define MATRIX_PRAS1_M0PR_Pos 0 +#define MATRIX_PRAS1_M0PR_Msk (0x3u << MATRIX_PRAS1_M0PR_Pos) /**< \brief (MATRIX_PRAS1) Master 0 Priority */ +#define MATRIX_PRAS1_M0PR(value) ((MATRIX_PRAS1_M0PR_Msk & ((value) << MATRIX_PRAS1_M0PR_Pos))) +#define MATRIX_PRAS1_M1PR_Pos 4 +#define MATRIX_PRAS1_M1PR_Msk (0x3u << MATRIX_PRAS1_M1PR_Pos) /**< \brief (MATRIX_PRAS1) Master 1 Priority */ +#define MATRIX_PRAS1_M1PR(value) ((MATRIX_PRAS1_M1PR_Msk & ((value) << MATRIX_PRAS1_M1PR_Pos))) +#define MATRIX_PRAS1_M2PR_Pos 8 +#define MATRIX_PRAS1_M2PR_Msk (0x3u << MATRIX_PRAS1_M2PR_Pos) /**< \brief (MATRIX_PRAS1) Master 2 Priority */ +#define MATRIX_PRAS1_M2PR(value) ((MATRIX_PRAS1_M2PR_Msk & ((value) << MATRIX_PRAS1_M2PR_Pos))) +#define MATRIX_PRAS1_M3PR_Pos 12 +#define MATRIX_PRAS1_M3PR_Msk (0x3u << MATRIX_PRAS1_M3PR_Pos) /**< \brief (MATRIX_PRAS1) Master 3 Priority */ +#define MATRIX_PRAS1_M3PR(value) ((MATRIX_PRAS1_M3PR_Msk & ((value) << MATRIX_PRAS1_M3PR_Pos))) +#define MATRIX_PRAS1_M4PR_Pos 16 +#define MATRIX_PRAS1_M4PR_Msk (0x3u << MATRIX_PRAS1_M4PR_Pos) /**< \brief (MATRIX_PRAS1) Master 4 Priority */ +#define MATRIX_PRAS1_M4PR(value) ((MATRIX_PRAS1_M4PR_Msk & ((value) << MATRIX_PRAS1_M4PR_Pos))) +/* -------- MATRIX_PRAS2 : (MATRIX Offset: 0x0090) Priority Register A for Slave 2 -------- */ +#define MATRIX_PRAS2_M0PR_Pos 0 +#define MATRIX_PRAS2_M0PR_Msk (0x3u << MATRIX_PRAS2_M0PR_Pos) /**< \brief (MATRIX_PRAS2) Master 0 Priority */ +#define MATRIX_PRAS2_M0PR(value) ((MATRIX_PRAS2_M0PR_Msk & ((value) << MATRIX_PRAS2_M0PR_Pos))) +#define MATRIX_PRAS2_M1PR_Pos 4 +#define MATRIX_PRAS2_M1PR_Msk (0x3u << MATRIX_PRAS2_M1PR_Pos) /**< \brief (MATRIX_PRAS2) Master 1 Priority */ +#define MATRIX_PRAS2_M1PR(value) ((MATRIX_PRAS2_M1PR_Msk & ((value) << MATRIX_PRAS2_M1PR_Pos))) +#define MATRIX_PRAS2_M2PR_Pos 8 +#define MATRIX_PRAS2_M2PR_Msk (0x3u << MATRIX_PRAS2_M2PR_Pos) /**< \brief (MATRIX_PRAS2) Master 2 Priority */ +#define MATRIX_PRAS2_M2PR(value) ((MATRIX_PRAS2_M2PR_Msk & ((value) << MATRIX_PRAS2_M2PR_Pos))) +#define MATRIX_PRAS2_M3PR_Pos 12 +#define MATRIX_PRAS2_M3PR_Msk (0x3u << MATRIX_PRAS2_M3PR_Pos) /**< \brief (MATRIX_PRAS2) Master 3 Priority */ +#define MATRIX_PRAS2_M3PR(value) ((MATRIX_PRAS2_M3PR_Msk & ((value) << MATRIX_PRAS2_M3PR_Pos))) +#define MATRIX_PRAS2_M4PR_Pos 16 +#define MATRIX_PRAS2_M4PR_Msk (0x3u << MATRIX_PRAS2_M4PR_Pos) /**< \brief (MATRIX_PRAS2) Master 4 Priority */ +#define MATRIX_PRAS2_M4PR(value) ((MATRIX_PRAS2_M4PR_Msk & ((value) << MATRIX_PRAS2_M4PR_Pos))) +/* -------- MATRIX_PRAS3 : (MATRIX Offset: 0x0098) Priority Register A for Slave 3 -------- */ +#define MATRIX_PRAS3_M0PR_Pos 0 +#define MATRIX_PRAS3_M0PR_Msk (0x3u << MATRIX_PRAS3_M0PR_Pos) /**< \brief (MATRIX_PRAS3) Master 0 Priority */ +#define MATRIX_PRAS3_M0PR(value) ((MATRIX_PRAS3_M0PR_Msk & ((value) << MATRIX_PRAS3_M0PR_Pos))) +#define MATRIX_PRAS3_M1PR_Pos 4 +#define MATRIX_PRAS3_M1PR_Msk (0x3u << MATRIX_PRAS3_M1PR_Pos) /**< \brief (MATRIX_PRAS3) Master 1 Priority */ +#define MATRIX_PRAS3_M1PR(value) ((MATRIX_PRAS3_M1PR_Msk & ((value) << MATRIX_PRAS3_M1PR_Pos))) +#define MATRIX_PRAS3_M2PR_Pos 8 +#define MATRIX_PRAS3_M2PR_Msk (0x3u << MATRIX_PRAS3_M2PR_Pos) /**< \brief (MATRIX_PRAS3) Master 2 Priority */ +#define MATRIX_PRAS3_M2PR(value) ((MATRIX_PRAS3_M2PR_Msk & ((value) << MATRIX_PRAS3_M2PR_Pos))) +#define MATRIX_PRAS3_M3PR_Pos 12 +#define MATRIX_PRAS3_M3PR_Msk (0x3u << MATRIX_PRAS3_M3PR_Pos) /**< \brief (MATRIX_PRAS3) Master 3 Priority */ +#define MATRIX_PRAS3_M3PR(value) ((MATRIX_PRAS3_M3PR_Msk & ((value) << MATRIX_PRAS3_M3PR_Pos))) +#define MATRIX_PRAS3_M4PR_Pos 16 +#define MATRIX_PRAS3_M4PR_Msk (0x3u << MATRIX_PRAS3_M4PR_Pos) /**< \brief (MATRIX_PRAS3) Master 4 Priority */ +#define MATRIX_PRAS3_M4PR(value) ((MATRIX_PRAS3_M4PR_Msk & ((value) << MATRIX_PRAS3_M4PR_Pos))) +/* -------- MATRIX_PRAS4 : (MATRIX Offset: 0x00A0) Priority Register A for Slave 4 -------- */ +#define MATRIX_PRAS4_M0PR_Pos 0 +#define MATRIX_PRAS4_M0PR_Msk (0x3u << MATRIX_PRAS4_M0PR_Pos) /**< \brief (MATRIX_PRAS4) Master 0 Priority */ +#define MATRIX_PRAS4_M0PR(value) ((MATRIX_PRAS4_M0PR_Msk & ((value) << MATRIX_PRAS4_M0PR_Pos))) +#define MATRIX_PRAS4_M1PR_Pos 4 +#define MATRIX_PRAS4_M1PR_Msk (0x3u << MATRIX_PRAS4_M1PR_Pos) /**< \brief (MATRIX_PRAS4) Master 1 Priority */ +#define MATRIX_PRAS4_M1PR(value) ((MATRIX_PRAS4_M1PR_Msk & ((value) << MATRIX_PRAS4_M1PR_Pos))) +#define MATRIX_PRAS4_M2PR_Pos 8 +#define MATRIX_PRAS4_M2PR_Msk (0x3u << MATRIX_PRAS4_M2PR_Pos) /**< \brief (MATRIX_PRAS4) Master 2 Priority */ +#define MATRIX_PRAS4_M2PR(value) ((MATRIX_PRAS4_M2PR_Msk & ((value) << MATRIX_PRAS4_M2PR_Pos))) +#define MATRIX_PRAS4_M3PR_Pos 12 +#define MATRIX_PRAS4_M3PR_Msk (0x3u << MATRIX_PRAS4_M3PR_Pos) /**< \brief (MATRIX_PRAS4) Master 3 Priority */ +#define MATRIX_PRAS4_M3PR(value) ((MATRIX_PRAS4_M3PR_Msk & ((value) << MATRIX_PRAS4_M3PR_Pos))) +#define MATRIX_PRAS4_M4PR_Pos 16 +#define MATRIX_PRAS4_M4PR_Msk (0x3u << MATRIX_PRAS4_M4PR_Pos) /**< \brief (MATRIX_PRAS4) Master 4 Priority */ +#define MATRIX_PRAS4_M4PR(value) ((MATRIX_PRAS4_M4PR_Msk & ((value) << MATRIX_PRAS4_M4PR_Pos))) +/* -------- CCFG_SYSIO : (MATRIX Offset: 0x0114) System I/O Configuration register -------- */ +#define CCFG_SYSIO_SYSIO4 (0x1u << 4) /**< \brief (CCFG_SYSIO) PB4 or TDI Assignment */ +#define CCFG_SYSIO_SYSIO5 (0x1u << 5) /**< \brief (CCFG_SYSIO) PB5 or TDO/TRACESWO Assignment */ +#define CCFG_SYSIO_SYSIO6 (0x1u << 6) /**< \brief (CCFG_SYSIO) PB6 or TMS/SWDIO Assignment */ +#define CCFG_SYSIO_SYSIO7 (0x1u << 7) /**< \brief (CCFG_SYSIO) PB7 or TCK/SWCLK Assignment */ +#define CCFG_SYSIO_SYSIO10 (0x1u << 10) /**< \brief (CCFG_SYSIO) PB10 or DDM Assignment */ +#define CCFG_SYSIO_SYSIO11 (0x1u << 11) /**< \brief (CCFG_SYSIO) PB11 or DDP Assignment */ +#define CCFG_SYSIO_SYSIO12 (0x1u << 12) /**< \brief (CCFG_SYSIO) PB12 or ERASE Assignment */ +/* -------- CCFG_SMCNFCS : (MATRIX Offset: 0x011C) SMC Chip Select NAND Flash Assignment Register -------- */ +#define CCFG_SMCNFCS_SMC_NFCS0 (0x1u << 0) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 0 Assignment */ +#define CCFG_SMCNFCS_SMC_NFCS1 (0x1u << 1) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 1 Assignment */ +#define CCFG_SMCNFCS_SMC_NFCS2 (0x1u << 2) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 2 Assignment */ +#define CCFG_SMCNFCS_SMC_NFCS3 (0x1u << 3) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 3 Assignment */ +/* -------- MATRIX_WPMR : (MATRIX Offset: 0x1E4) Write Protect Mode Register -------- */ +#define MATRIX_WPMR_WPEN (0x1u << 0) /**< \brief (MATRIX_WPMR) Write Protect ENable */ +#define MATRIX_WPMR_WPKEY_Pos 8 +#define MATRIX_WPMR_WPKEY_Msk (0xffffffu << MATRIX_WPMR_WPKEY_Pos) /**< \brief (MATRIX_WPMR) Write Protect KEY (Write-only) */ +#define MATRIX_WPMR_WPKEY(value) ((MATRIX_WPMR_WPKEY_Msk & ((value) << MATRIX_WPMR_WPKEY_Pos))) +/* -------- MATRIX_WPSR : (MATRIX Offset: 0x1E8) Write Protect Status Register -------- */ +#define MATRIX_WPSR_WPVS (0x1u << 0) /**< \brief (MATRIX_WPSR) Write Protect Violation Status */ +#define MATRIX_WPSR_WPVSRC_Pos 8 +#define MATRIX_WPSR_WPVSRC_Msk (0xffffu << MATRIX_WPSR_WPVSRC_Pos) /**< \brief (MATRIX_WPSR) Write Protect Violation Source */ + +/*@}*/ + + +#endif /* _SAM3S_MATRIX_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_pdc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_pdc.h new file mode 100644 index 000000000..ab02d9497 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_pdc.h @@ -0,0 +1,98 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_PDC_COMPONENT_ +#define _SAM3S_PDC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Peripheral DMA Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S_PDC Peripheral DMA Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Pdc hardware registers */ +typedef struct { + RwReg PERIPH_RPR; /**< \brief (Pdc Offset: 0x0) Receive Pointer Register */ + RwReg PERIPH_RCR; /**< \brief (Pdc Offset: 0x4) Receive Counter Register */ + RwReg PERIPH_TPR; /**< \brief (Pdc Offset: 0x8) Transmit Pointer Register */ + RwReg PERIPH_TCR; /**< \brief (Pdc Offset: 0xC) Transmit Counter Register */ + RwReg PERIPH_RNPR; /**< \brief (Pdc Offset: 0x10) Receive Next Pointer Register */ + RwReg PERIPH_RNCR; /**< \brief (Pdc Offset: 0x14) Receive Next Counter Register */ + RwReg PERIPH_TNPR; /**< \brief (Pdc Offset: 0x18) Transmit Next Pointer Register */ + RwReg PERIPH_TNCR; /**< \brief (Pdc Offset: 0x1C) Transmit Next Counter Register */ + WoReg PERIPH_PTCR; /**< \brief (Pdc Offset: 0x20) Transfer Control Register */ + RoReg PERIPH_PTSR; /**< \brief (Pdc Offset: 0x24) Transfer Status Register */ +} Pdc; +#endif /* __ASSEMBLY__ */ +/* -------- PERIPH_RPR : (PDC Offset: 0x0) Receive Pointer Register -------- */ +#define PERIPH_RPR_RXPTR_Pos 0 +#define PERIPH_RPR_RXPTR_Msk (0xffffffffu << PERIPH_RPR_RXPTR_Pos) /**< \brief (PERIPH_RPR) Receive Pointer Register */ +#define PERIPH_RPR_RXPTR(value) ((PERIPH_RPR_RXPTR_Msk & ((value) << PERIPH_RPR_RXPTR_Pos))) +/* -------- PERIPH_RCR : (PDC Offset: 0x4) Receive Counter Register -------- */ +#define PERIPH_RCR_RXCTR_Pos 0 +#define PERIPH_RCR_RXCTR_Msk (0xffffu << PERIPH_RCR_RXCTR_Pos) /**< \brief (PERIPH_RCR) Receive Counter Register */ +#define PERIPH_RCR_RXCTR(value) ((PERIPH_RCR_RXCTR_Msk & ((value) << PERIPH_RCR_RXCTR_Pos))) +/* -------- PERIPH_TPR : (PDC Offset: 0x8) Transmit Pointer Register -------- */ +#define PERIPH_TPR_TXPTR_Pos 0 +#define PERIPH_TPR_TXPTR_Msk (0xffffffffu << PERIPH_TPR_TXPTR_Pos) /**< \brief (PERIPH_TPR) Transmit Counter Register */ +#define PERIPH_TPR_TXPTR(value) ((PERIPH_TPR_TXPTR_Msk & ((value) << PERIPH_TPR_TXPTR_Pos))) +/* -------- PERIPH_TCR : (PDC Offset: 0xC) Transmit Counter Register -------- */ +#define PERIPH_TCR_TXCTR_Pos 0 +#define PERIPH_TCR_TXCTR_Msk (0xffffu << PERIPH_TCR_TXCTR_Pos) /**< \brief (PERIPH_TCR) Transmit Counter Register */ +#define PERIPH_TCR_TXCTR(value) ((PERIPH_TCR_TXCTR_Msk & ((value) << PERIPH_TCR_TXCTR_Pos))) +/* -------- PERIPH_RNPR : (PDC Offset: 0x10) Receive Next Pointer Register -------- */ +#define PERIPH_RNPR_RXNPTR_Pos 0 +#define PERIPH_RNPR_RXNPTR_Msk (0xffffffffu << PERIPH_RNPR_RXNPTR_Pos) /**< \brief (PERIPH_RNPR) Receive Next Pointer */ +#define PERIPH_RNPR_RXNPTR(value) ((PERIPH_RNPR_RXNPTR_Msk & ((value) << PERIPH_RNPR_RXNPTR_Pos))) +/* -------- PERIPH_RNCR : (PDC Offset: 0x14) Receive Next Counter Register -------- */ +#define PERIPH_RNCR_RXNCTR_Pos 0 +#define PERIPH_RNCR_RXNCTR_Msk (0xffffu << PERIPH_RNCR_RXNCTR_Pos) /**< \brief (PERIPH_RNCR) Receive Next Counter */ +#define PERIPH_RNCR_RXNCTR(value) ((PERIPH_RNCR_RXNCTR_Msk & ((value) << PERIPH_RNCR_RXNCTR_Pos))) +/* -------- PERIPH_TNPR : (PDC Offset: 0x18) Transmit Next Pointer Register -------- */ +#define PERIPH_TNPR_TXNPTR_Pos 0 +#define PERIPH_TNPR_TXNPTR_Msk (0xffffffffu << PERIPH_TNPR_TXNPTR_Pos) /**< \brief (PERIPH_TNPR) Transmit Next Pointer */ +#define PERIPH_TNPR_TXNPTR(value) ((PERIPH_TNPR_TXNPTR_Msk & ((value) << PERIPH_TNPR_TXNPTR_Pos))) +/* -------- PERIPH_TNCR : (PDC Offset: 0x1C) Transmit Next Counter Register -------- */ +#define PERIPH_TNCR_TXNCTR_Pos 0 +#define PERIPH_TNCR_TXNCTR_Msk (0xffffu << PERIPH_TNCR_TXNCTR_Pos) /**< \brief (PERIPH_TNCR) Transmit Counter Next */ +#define PERIPH_TNCR_TXNCTR(value) ((PERIPH_TNCR_TXNCTR_Msk & ((value) << PERIPH_TNCR_TXNCTR_Pos))) +/* -------- PERIPH_PTCR : (PDC Offset: 0x20) Transfer Control Register -------- */ +#define PERIPH_PTCR_RXTEN (0x1u << 0) /**< \brief (PERIPH_PTCR) Receiver Transfer Enable */ +#define PERIPH_PTCR_RXTDIS (0x1u << 1) /**< \brief (PERIPH_PTCR) Receiver Transfer Disable */ +#define PERIPH_PTCR_TXTEN (0x1u << 8) /**< \brief (PERIPH_PTCR) Transmitter Transfer Enable */ +#define PERIPH_PTCR_TXTDIS (0x1u << 9) /**< \brief (PERIPH_PTCR) Transmitter Transfer Disable */ +/* -------- PERIPH_PTSR : (PDC Offset: 0x24) Transfer Status Register -------- */ +#define PERIPH_PTSR_RXTEN (0x1u << 0) /**< \brief (PERIPH_PTSR) Receiver Transfer Enable */ +#define PERIPH_PTSR_TXTEN (0x1u << 8) /**< \brief (PERIPH_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3S_PDC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_pio.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_pio.h new file mode 100644 index 000000000..985ca5041 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_pio.h @@ -0,0 +1,1662 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_PIO_COMPONENT_ +#define _SAM3S_PIO_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Parallel Input/Output Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S_PIO Parallel Input/Output Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Pio hardware registers */ +typedef struct { + WoReg PIO_PER; /**< \brief (Pio Offset: 0x0000) PIO Enable Register */ + WoReg PIO_PDR; /**< \brief (Pio Offset: 0x0004) PIO Disable Register */ + RoReg PIO_PSR; /**< \brief (Pio Offset: 0x0008) PIO Status Register */ + RoReg Reserved1[1]; + WoReg PIO_OER; /**< \brief (Pio Offset: 0x0010) Output Enable Register */ + WoReg PIO_ODR; /**< \brief (Pio Offset: 0x0014) Output Disable Register */ + RoReg PIO_OSR; /**< \brief (Pio Offset: 0x0018) Output Status Register */ + RoReg Reserved2[1]; + WoReg PIO_IFER; /**< \brief (Pio Offset: 0x0020) Glitch Input Filter Enable Register */ + WoReg PIO_IFDR; /**< \brief (Pio Offset: 0x0024) Glitch Input Filter Disable Register */ + RoReg PIO_IFSR; /**< \brief (Pio Offset: 0x0028) Glitch Input Filter Status Register */ + RoReg Reserved3[1]; + WoReg PIO_SODR; /**< \brief (Pio Offset: 0x0030) Set Output Data Register */ + WoReg PIO_CODR; /**< \brief (Pio Offset: 0x0034) Clear Output Data Register */ + RwReg PIO_ODSR; /**< \brief (Pio Offset: 0x0038) Output Data Status Register */ + RoReg PIO_PDSR; /**< \brief (Pio Offset: 0x003C) Pin Data Status Register */ + WoReg PIO_IER; /**< \brief (Pio Offset: 0x0040) Interrupt Enable Register */ + WoReg PIO_IDR; /**< \brief (Pio Offset: 0x0044) Interrupt Disable Register */ + RoReg PIO_IMR; /**< \brief (Pio Offset: 0x0048) Interrupt Mask Register */ + RoReg PIO_ISR; /**< \brief (Pio Offset: 0x004C) Interrupt Status Register */ + WoReg PIO_MDER; /**< \brief (Pio Offset: 0x0050) Multi-driver Enable Register */ + WoReg PIO_MDDR; /**< \brief (Pio Offset: 0x0054) Multi-driver Disable Register */ + RoReg PIO_MDSR; /**< \brief (Pio Offset: 0x0058) Multi-driver Status Register */ + RoReg Reserved4[1]; + WoReg PIO_PUDR; /**< \brief (Pio Offset: 0x0060) Pull-up Disable Register */ + WoReg PIO_PUER; /**< \brief (Pio Offset: 0x0064) Pull-up Enable Register */ + RoReg PIO_PUSR; /**< \brief (Pio Offset: 0x0068) Pad Pull-up Status Register */ + RoReg Reserved5[1]; + RwReg PIO_ABCDSR[2]; /**< \brief (Pio Offset: 0x0070) Peripheral Select Register */ + RoReg Reserved6[2]; + WoReg PIO_IFSCDR; /**< \brief (Pio Offset: 0x0080) Input Filter Slow Clock Disable Register */ + WoReg PIO_IFSCER; /**< \brief (Pio Offset: 0x0084) Input Filter Slow Clock Enable Register */ + RoReg PIO_IFSCSR; /**< \brief (Pio Offset: 0x0088) Input Filter Slow Clock Status Register */ + RwReg PIO_SCDR; /**< \brief (Pio Offset: 0x008C) Slow Clock Divider Debouncing Register */ + WoReg PIO_PPDDR; /**< \brief (Pio Offset: 0x0090) Pad Pull-down Disable Register */ + WoReg PIO_PPDER; /**< \brief (Pio Offset: 0x0094) Pad Pull-down Enable Register */ + RoReg PIO_PPDSR; /**< \brief (Pio Offset: 0x0098) Pad Pull-down Status Register */ + RoReg Reserved7[1]; + WoReg PIO_OWER; /**< \brief (Pio Offset: 0x00A0) Output Write Enable */ + WoReg PIO_OWDR; /**< \brief (Pio Offset: 0x00A4) Output Write Disable */ + RoReg PIO_OWSR; /**< \brief (Pio Offset: 0x00A8) Output Write Status Register */ + RoReg Reserved8[1]; + WoReg PIO_AIMER; /**< \brief (Pio Offset: 0x00B0) Additional Interrupt Modes Enable Register */ + WoReg PIO_AIMDR; /**< \brief (Pio Offset: 0x00B4) Additional Interrupt Modes Disables Register */ + RoReg PIO_AIMMR; /**< \brief (Pio Offset: 0x00B8) Additional Interrupt Modes Mask Register */ + RoReg Reserved9[1]; + WoReg PIO_ESR; /**< \brief (Pio Offset: 0x00C0) Edge Select Register */ + WoReg PIO_LSR; /**< \brief (Pio Offset: 0x00C4) Level Select Register */ + RoReg PIO_ELSR; /**< \brief (Pio Offset: 0x00C8) Edge/Level Status Register */ + RoReg Reserved10[1]; + WoReg PIO_FELLSR; /**< \brief (Pio Offset: 0x00D0) Falling Edge/Low Level Select Register */ + WoReg PIO_REHLSR; /**< \brief (Pio Offset: 0x00D4) Rising Edge/ High Level Select Register */ + RoReg PIO_FRLHSR; /**< \brief (Pio Offset: 0x00D8) Fall/Rise - Low/High Status Register */ + RoReg Reserved11[1]; + RoReg PIO_LOCKSR; /**< \brief (Pio Offset: 0x00E0) Lock Status */ + RwReg PIO_WPMR; /**< \brief (Pio Offset: 0x00E4) Write Protect Mode Register */ + RoReg PIO_WPSR; /**< \brief (Pio Offset: 0x00E8) Write Protect Status Register */ + RoReg Reserved12[5]; + RwReg PIO_SCHMITT; /**< \brief (Pio Offset: 0x0100) Schmitt Trigger Register */ + RoReg Reserved13[19]; + RwReg PIO_PCMR; /**< \brief (Pio Offset: 0x150) Parallel Capture Mode Register */ + WoReg PIO_PCIER; /**< \brief (Pio Offset: 0x154) Parallel Capture Interrupt Enable Register */ + WoReg PIO_PCIDR; /**< \brief (Pio Offset: 0x158) Parallel Capture Interrupt Disable Register */ + RoReg PIO_PCIMR; /**< \brief (Pio Offset: 0x15C) Parallel Capture Interrupt Mask Register */ + RoReg PIO_PCISR; /**< \brief (Pio Offset: 0x160) Parallel Capture Interrupt Status Register */ + RoReg PIO_PCRHR; /**< \brief (Pio Offset: 0x164) Parallel Capture Reception Holding Register */ + RwReg PIO_RPR; /**< \brief (Pio Offset: 0x168) Receive Pointer Register */ + RwReg PIO_RCR; /**< \brief (Pio Offset: 0x16C) Receive Counter Register */ + RwReg PIO_TPR; /**< \brief (Pio Offset: 0x170) Transmit Pointer Register */ + RwReg PIO_TCR; /**< \brief (Pio Offset: 0x174) Transmit Counter Register */ + RwReg PIO_RNPR; /**< \brief (Pio Offset: 0x178) Receive Next Pointer Register */ + RwReg PIO_RNCR; /**< \brief (Pio Offset: 0x17C) Receive Next Counter Register */ + RwReg PIO_TNPR; /**< \brief (Pio Offset: 0x180) Transmit Next Pointer Register */ + RwReg PIO_TNCR; /**< \brief (Pio Offset: 0x184) Transmit Next Counter Register */ + WoReg PIO_PTCR; /**< \brief (Pio Offset: 0x188) Transfer Control Register */ + RoReg PIO_PTSR; /**< \brief (Pio Offset: 0x18C) Transfer Status Register */ +} Pio; +#endif /* __ASSEMBLY__ */ +/* -------- PIO_PER : (PIO Offset: 0x0000) PIO Enable Register -------- */ +#define PIO_PER_P0 (0x1u << 0) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P1 (0x1u << 1) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P2 (0x1u << 2) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P3 (0x1u << 3) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P4 (0x1u << 4) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P5 (0x1u << 5) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P6 (0x1u << 6) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P7 (0x1u << 7) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P8 (0x1u << 8) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P9 (0x1u << 9) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P10 (0x1u << 10) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P11 (0x1u << 11) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P12 (0x1u << 12) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P13 (0x1u << 13) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P14 (0x1u << 14) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P15 (0x1u << 15) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P16 (0x1u << 16) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P17 (0x1u << 17) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P18 (0x1u << 18) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P19 (0x1u << 19) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P20 (0x1u << 20) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P21 (0x1u << 21) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P22 (0x1u << 22) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P23 (0x1u << 23) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P24 (0x1u << 24) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P25 (0x1u << 25) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P26 (0x1u << 26) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P27 (0x1u << 27) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P28 (0x1u << 28) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P29 (0x1u << 29) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P30 (0x1u << 30) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P31 (0x1u << 31) /**< \brief (PIO_PER) PIO Enable */ +/* -------- PIO_PDR : (PIO Offset: 0x0004) PIO Disable Register -------- */ +#define PIO_PDR_P0 (0x1u << 0) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P1 (0x1u << 1) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P2 (0x1u << 2) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P3 (0x1u << 3) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P4 (0x1u << 4) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P5 (0x1u << 5) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P6 (0x1u << 6) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P7 (0x1u << 7) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P8 (0x1u << 8) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P9 (0x1u << 9) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P10 (0x1u << 10) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P11 (0x1u << 11) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P12 (0x1u << 12) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P13 (0x1u << 13) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P14 (0x1u << 14) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P15 (0x1u << 15) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P16 (0x1u << 16) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P17 (0x1u << 17) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P18 (0x1u << 18) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P19 (0x1u << 19) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P20 (0x1u << 20) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P21 (0x1u << 21) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P22 (0x1u << 22) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P23 (0x1u << 23) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P24 (0x1u << 24) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P25 (0x1u << 25) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P26 (0x1u << 26) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P27 (0x1u << 27) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P28 (0x1u << 28) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P29 (0x1u << 29) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P30 (0x1u << 30) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P31 (0x1u << 31) /**< \brief (PIO_PDR) PIO Disable */ +/* -------- PIO_PSR : (PIO Offset: 0x0008) PIO Status Register -------- */ +#define PIO_PSR_P0 (0x1u << 0) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P1 (0x1u << 1) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P2 (0x1u << 2) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P3 (0x1u << 3) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P4 (0x1u << 4) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P5 (0x1u << 5) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P6 (0x1u << 6) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P7 (0x1u << 7) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P8 (0x1u << 8) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P9 (0x1u << 9) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P10 (0x1u << 10) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P11 (0x1u << 11) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P12 (0x1u << 12) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P13 (0x1u << 13) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P14 (0x1u << 14) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P15 (0x1u << 15) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P16 (0x1u << 16) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P17 (0x1u << 17) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P18 (0x1u << 18) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P19 (0x1u << 19) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P20 (0x1u << 20) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P21 (0x1u << 21) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P22 (0x1u << 22) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P23 (0x1u << 23) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P24 (0x1u << 24) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P25 (0x1u << 25) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P26 (0x1u << 26) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P27 (0x1u << 27) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P28 (0x1u << 28) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P29 (0x1u << 29) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P30 (0x1u << 30) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P31 (0x1u << 31) /**< \brief (PIO_PSR) PIO Status */ +/* -------- PIO_OER : (PIO Offset: 0x0010) Output Enable Register -------- */ +#define PIO_OER_P0 (0x1u << 0) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P1 (0x1u << 1) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P2 (0x1u << 2) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P3 (0x1u << 3) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P4 (0x1u << 4) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P5 (0x1u << 5) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P6 (0x1u << 6) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P7 (0x1u << 7) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P8 (0x1u << 8) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P9 (0x1u << 9) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P10 (0x1u << 10) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P11 (0x1u << 11) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P12 (0x1u << 12) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P13 (0x1u << 13) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P14 (0x1u << 14) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P15 (0x1u << 15) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P16 (0x1u << 16) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P17 (0x1u << 17) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P18 (0x1u << 18) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P19 (0x1u << 19) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P20 (0x1u << 20) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P21 (0x1u << 21) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P22 (0x1u << 22) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P23 (0x1u << 23) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P24 (0x1u << 24) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P25 (0x1u << 25) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P26 (0x1u << 26) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P27 (0x1u << 27) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P28 (0x1u << 28) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P29 (0x1u << 29) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P30 (0x1u << 30) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P31 (0x1u << 31) /**< \brief (PIO_OER) Output Enable */ +/* -------- PIO_ODR : (PIO Offset: 0x0014) Output Disable Register -------- */ +#define PIO_ODR_P0 (0x1u << 0) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P1 (0x1u << 1) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P2 (0x1u << 2) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P3 (0x1u << 3) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P4 (0x1u << 4) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P5 (0x1u << 5) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P6 (0x1u << 6) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P7 (0x1u << 7) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P8 (0x1u << 8) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P9 (0x1u << 9) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P10 (0x1u << 10) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P11 (0x1u << 11) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P12 (0x1u << 12) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P13 (0x1u << 13) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P14 (0x1u << 14) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P15 (0x1u << 15) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P16 (0x1u << 16) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P17 (0x1u << 17) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P18 (0x1u << 18) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P19 (0x1u << 19) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P20 (0x1u << 20) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P21 (0x1u << 21) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P22 (0x1u << 22) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P23 (0x1u << 23) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P24 (0x1u << 24) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P25 (0x1u << 25) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P26 (0x1u << 26) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P27 (0x1u << 27) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P28 (0x1u << 28) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P29 (0x1u << 29) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P30 (0x1u << 30) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P31 (0x1u << 31) /**< \brief (PIO_ODR) Output Disable */ +/* -------- PIO_OSR : (PIO Offset: 0x0018) Output Status Register -------- */ +#define PIO_OSR_P0 (0x1u << 0) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P1 (0x1u << 1) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P2 (0x1u << 2) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P3 (0x1u << 3) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P4 (0x1u << 4) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P5 (0x1u << 5) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P6 (0x1u << 6) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P7 (0x1u << 7) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P8 (0x1u << 8) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P9 (0x1u << 9) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P10 (0x1u << 10) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P11 (0x1u << 11) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P12 (0x1u << 12) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P13 (0x1u << 13) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P14 (0x1u << 14) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P15 (0x1u << 15) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P16 (0x1u << 16) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P17 (0x1u << 17) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P18 (0x1u << 18) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P19 (0x1u << 19) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P20 (0x1u << 20) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P21 (0x1u << 21) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P22 (0x1u << 22) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P23 (0x1u << 23) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P24 (0x1u << 24) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P25 (0x1u << 25) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P26 (0x1u << 26) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P27 (0x1u << 27) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P28 (0x1u << 28) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P29 (0x1u << 29) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P30 (0x1u << 30) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P31 (0x1u << 31) /**< \brief (PIO_OSR) Output Status */ +/* -------- PIO_IFER : (PIO Offset: 0x0020) Glitch Input Filter Enable Register -------- */ +#define PIO_IFER_P0 (0x1u << 0) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P1 (0x1u << 1) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P2 (0x1u << 2) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P3 (0x1u << 3) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P4 (0x1u << 4) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P5 (0x1u << 5) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P6 (0x1u << 6) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P7 (0x1u << 7) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P8 (0x1u << 8) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P9 (0x1u << 9) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P10 (0x1u << 10) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P11 (0x1u << 11) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P12 (0x1u << 12) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P13 (0x1u << 13) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P14 (0x1u << 14) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P15 (0x1u << 15) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P16 (0x1u << 16) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P17 (0x1u << 17) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P18 (0x1u << 18) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P19 (0x1u << 19) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P20 (0x1u << 20) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P21 (0x1u << 21) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P22 (0x1u << 22) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P23 (0x1u << 23) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P24 (0x1u << 24) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P25 (0x1u << 25) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P26 (0x1u << 26) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P27 (0x1u << 27) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P28 (0x1u << 28) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P29 (0x1u << 29) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P30 (0x1u << 30) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P31 (0x1u << 31) /**< \brief (PIO_IFER) Input Filter Enable */ +/* -------- PIO_IFDR : (PIO Offset: 0x0024) Glitch Input Filter Disable Register -------- */ +#define PIO_IFDR_P0 (0x1u << 0) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P1 (0x1u << 1) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P2 (0x1u << 2) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P3 (0x1u << 3) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P4 (0x1u << 4) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P5 (0x1u << 5) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P6 (0x1u << 6) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P7 (0x1u << 7) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P8 (0x1u << 8) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P9 (0x1u << 9) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P10 (0x1u << 10) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P11 (0x1u << 11) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P12 (0x1u << 12) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P13 (0x1u << 13) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P14 (0x1u << 14) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P15 (0x1u << 15) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P16 (0x1u << 16) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P17 (0x1u << 17) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P18 (0x1u << 18) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P19 (0x1u << 19) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P20 (0x1u << 20) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P21 (0x1u << 21) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P22 (0x1u << 22) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P23 (0x1u << 23) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P24 (0x1u << 24) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P25 (0x1u << 25) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P26 (0x1u << 26) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P27 (0x1u << 27) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P28 (0x1u << 28) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P29 (0x1u << 29) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P30 (0x1u << 30) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P31 (0x1u << 31) /**< \brief (PIO_IFDR) Input Filter Disable */ +/* -------- PIO_IFSR : (PIO Offset: 0x0028) Glitch Input Filter Status Register -------- */ +#define PIO_IFSR_P0 (0x1u << 0) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P1 (0x1u << 1) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P2 (0x1u << 2) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P3 (0x1u << 3) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P4 (0x1u << 4) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P5 (0x1u << 5) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P6 (0x1u << 6) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P7 (0x1u << 7) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P8 (0x1u << 8) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P9 (0x1u << 9) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P10 (0x1u << 10) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P11 (0x1u << 11) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P12 (0x1u << 12) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P13 (0x1u << 13) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P14 (0x1u << 14) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P15 (0x1u << 15) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P16 (0x1u << 16) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P17 (0x1u << 17) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P18 (0x1u << 18) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P19 (0x1u << 19) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P20 (0x1u << 20) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P21 (0x1u << 21) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P22 (0x1u << 22) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P23 (0x1u << 23) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P24 (0x1u << 24) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P25 (0x1u << 25) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P26 (0x1u << 26) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P27 (0x1u << 27) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P28 (0x1u << 28) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P29 (0x1u << 29) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P30 (0x1u << 30) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P31 (0x1u << 31) /**< \brief (PIO_IFSR) Input Filer Status */ +/* -------- PIO_SODR : (PIO Offset: 0x0030) Set Output Data Register -------- */ +#define PIO_SODR_P0 (0x1u << 0) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P1 (0x1u << 1) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P2 (0x1u << 2) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P3 (0x1u << 3) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P4 (0x1u << 4) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P5 (0x1u << 5) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P6 (0x1u << 6) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P7 (0x1u << 7) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P8 (0x1u << 8) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P9 (0x1u << 9) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P10 (0x1u << 10) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P11 (0x1u << 11) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P12 (0x1u << 12) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P13 (0x1u << 13) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P14 (0x1u << 14) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P15 (0x1u << 15) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P16 (0x1u << 16) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P17 (0x1u << 17) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P18 (0x1u << 18) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P19 (0x1u << 19) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P20 (0x1u << 20) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P21 (0x1u << 21) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P22 (0x1u << 22) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P23 (0x1u << 23) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P24 (0x1u << 24) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P25 (0x1u << 25) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P26 (0x1u << 26) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P27 (0x1u << 27) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P28 (0x1u << 28) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P29 (0x1u << 29) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P30 (0x1u << 30) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P31 (0x1u << 31) /**< \brief (PIO_SODR) Set Output Data */ +/* -------- PIO_CODR : (PIO Offset: 0x0034) Clear Output Data Register -------- */ +#define PIO_CODR_P0 (0x1u << 0) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P1 (0x1u << 1) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P2 (0x1u << 2) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P3 (0x1u << 3) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P4 (0x1u << 4) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P5 (0x1u << 5) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P6 (0x1u << 6) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P7 (0x1u << 7) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P8 (0x1u << 8) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P9 (0x1u << 9) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P10 (0x1u << 10) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P11 (0x1u << 11) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P12 (0x1u << 12) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P13 (0x1u << 13) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P14 (0x1u << 14) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P15 (0x1u << 15) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P16 (0x1u << 16) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P17 (0x1u << 17) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P18 (0x1u << 18) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P19 (0x1u << 19) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P20 (0x1u << 20) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P21 (0x1u << 21) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P22 (0x1u << 22) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P23 (0x1u << 23) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P24 (0x1u << 24) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P25 (0x1u << 25) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P26 (0x1u << 26) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P27 (0x1u << 27) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P28 (0x1u << 28) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P29 (0x1u << 29) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P30 (0x1u << 30) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P31 (0x1u << 31) /**< \brief (PIO_CODR) Clear Output Data */ +/* -------- PIO_ODSR : (PIO Offset: 0x0038) Output Data Status Register -------- */ +#define PIO_ODSR_P0 (0x1u << 0) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P1 (0x1u << 1) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P2 (0x1u << 2) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P3 (0x1u << 3) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P4 (0x1u << 4) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P5 (0x1u << 5) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P6 (0x1u << 6) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P7 (0x1u << 7) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P8 (0x1u << 8) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P9 (0x1u << 9) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P10 (0x1u << 10) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P11 (0x1u << 11) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P12 (0x1u << 12) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P13 (0x1u << 13) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P14 (0x1u << 14) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P15 (0x1u << 15) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P16 (0x1u << 16) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P17 (0x1u << 17) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P18 (0x1u << 18) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P19 (0x1u << 19) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P20 (0x1u << 20) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P21 (0x1u << 21) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P22 (0x1u << 22) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P23 (0x1u << 23) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P24 (0x1u << 24) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P25 (0x1u << 25) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P26 (0x1u << 26) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P27 (0x1u << 27) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P28 (0x1u << 28) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P29 (0x1u << 29) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P30 (0x1u << 30) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P31 (0x1u << 31) /**< \brief (PIO_ODSR) Output Data Status */ +/* -------- PIO_PDSR : (PIO Offset: 0x003C) Pin Data Status Register -------- */ +#define PIO_PDSR_P0 (0x1u << 0) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P1 (0x1u << 1) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P2 (0x1u << 2) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P3 (0x1u << 3) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P4 (0x1u << 4) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P5 (0x1u << 5) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P6 (0x1u << 6) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P7 (0x1u << 7) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P8 (0x1u << 8) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P9 (0x1u << 9) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P10 (0x1u << 10) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P11 (0x1u << 11) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P12 (0x1u << 12) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P13 (0x1u << 13) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P14 (0x1u << 14) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P15 (0x1u << 15) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P16 (0x1u << 16) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P17 (0x1u << 17) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P18 (0x1u << 18) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P19 (0x1u << 19) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P20 (0x1u << 20) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P21 (0x1u << 21) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P22 (0x1u << 22) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P23 (0x1u << 23) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P24 (0x1u << 24) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P25 (0x1u << 25) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P26 (0x1u << 26) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P27 (0x1u << 27) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P28 (0x1u << 28) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P29 (0x1u << 29) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P30 (0x1u << 30) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P31 (0x1u << 31) /**< \brief (PIO_PDSR) Output Data Status */ +/* -------- PIO_IER : (PIO Offset: 0x0040) Interrupt Enable Register -------- */ +#define PIO_IER_P0 (0x1u << 0) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P1 (0x1u << 1) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P2 (0x1u << 2) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P3 (0x1u << 3) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P4 (0x1u << 4) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P5 (0x1u << 5) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P6 (0x1u << 6) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P7 (0x1u << 7) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P8 (0x1u << 8) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P9 (0x1u << 9) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P10 (0x1u << 10) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P11 (0x1u << 11) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P12 (0x1u << 12) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P13 (0x1u << 13) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P14 (0x1u << 14) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P15 (0x1u << 15) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P16 (0x1u << 16) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P17 (0x1u << 17) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P18 (0x1u << 18) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P19 (0x1u << 19) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P20 (0x1u << 20) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P21 (0x1u << 21) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P22 (0x1u << 22) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P23 (0x1u << 23) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P24 (0x1u << 24) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P25 (0x1u << 25) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P26 (0x1u << 26) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P27 (0x1u << 27) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P28 (0x1u << 28) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P29 (0x1u << 29) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P30 (0x1u << 30) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P31 (0x1u << 31) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +/* -------- PIO_IDR : (PIO Offset: 0x0044) Interrupt Disable Register -------- */ +#define PIO_IDR_P0 (0x1u << 0) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P1 (0x1u << 1) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P2 (0x1u << 2) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P3 (0x1u << 3) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P4 (0x1u << 4) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P5 (0x1u << 5) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P6 (0x1u << 6) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P7 (0x1u << 7) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P8 (0x1u << 8) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P9 (0x1u << 9) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P10 (0x1u << 10) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P11 (0x1u << 11) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P12 (0x1u << 12) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P13 (0x1u << 13) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P14 (0x1u << 14) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P15 (0x1u << 15) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P16 (0x1u << 16) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P17 (0x1u << 17) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P18 (0x1u << 18) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P19 (0x1u << 19) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P20 (0x1u << 20) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P21 (0x1u << 21) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P22 (0x1u << 22) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P23 (0x1u << 23) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P24 (0x1u << 24) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P25 (0x1u << 25) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P26 (0x1u << 26) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P27 (0x1u << 27) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P28 (0x1u << 28) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P29 (0x1u << 29) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P30 (0x1u << 30) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P31 (0x1u << 31) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +/* -------- PIO_IMR : (PIO Offset: 0x0048) Interrupt Mask Register -------- */ +#define PIO_IMR_P0 (0x1u << 0) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P1 (0x1u << 1) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P2 (0x1u << 2) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P3 (0x1u << 3) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P4 (0x1u << 4) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P5 (0x1u << 5) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P6 (0x1u << 6) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P7 (0x1u << 7) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P8 (0x1u << 8) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P9 (0x1u << 9) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P10 (0x1u << 10) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P11 (0x1u << 11) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P12 (0x1u << 12) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P13 (0x1u << 13) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P14 (0x1u << 14) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P15 (0x1u << 15) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P16 (0x1u << 16) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P17 (0x1u << 17) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P18 (0x1u << 18) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P19 (0x1u << 19) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P20 (0x1u << 20) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P21 (0x1u << 21) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P22 (0x1u << 22) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P23 (0x1u << 23) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P24 (0x1u << 24) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P25 (0x1u << 25) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P26 (0x1u << 26) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P27 (0x1u << 27) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P28 (0x1u << 28) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P29 (0x1u << 29) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P30 (0x1u << 30) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P31 (0x1u << 31) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +/* -------- PIO_ISR : (PIO Offset: 0x004C) Interrupt Status Register -------- */ +#define PIO_ISR_P0 (0x1u << 0) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P1 (0x1u << 1) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P2 (0x1u << 2) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P3 (0x1u << 3) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P4 (0x1u << 4) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P5 (0x1u << 5) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P6 (0x1u << 6) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P7 (0x1u << 7) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P8 (0x1u << 8) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P9 (0x1u << 9) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P10 (0x1u << 10) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P11 (0x1u << 11) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P12 (0x1u << 12) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P13 (0x1u << 13) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P14 (0x1u << 14) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P15 (0x1u << 15) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P16 (0x1u << 16) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P17 (0x1u << 17) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P18 (0x1u << 18) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P19 (0x1u << 19) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P20 (0x1u << 20) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P21 (0x1u << 21) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P22 (0x1u << 22) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P23 (0x1u << 23) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P24 (0x1u << 24) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P25 (0x1u << 25) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P26 (0x1u << 26) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P27 (0x1u << 27) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P28 (0x1u << 28) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P29 (0x1u << 29) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P30 (0x1u << 30) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P31 (0x1u << 31) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +/* -------- PIO_MDER : (PIO Offset: 0x0050) Multi-driver Enable Register -------- */ +#define PIO_MDER_P0 (0x1u << 0) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P1 (0x1u << 1) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P2 (0x1u << 2) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P3 (0x1u << 3) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P4 (0x1u << 4) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P5 (0x1u << 5) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P6 (0x1u << 6) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P7 (0x1u << 7) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P8 (0x1u << 8) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P9 (0x1u << 9) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P10 (0x1u << 10) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P11 (0x1u << 11) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P12 (0x1u << 12) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P13 (0x1u << 13) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P14 (0x1u << 14) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P15 (0x1u << 15) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P16 (0x1u << 16) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P17 (0x1u << 17) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P18 (0x1u << 18) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P19 (0x1u << 19) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P20 (0x1u << 20) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P21 (0x1u << 21) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P22 (0x1u << 22) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P23 (0x1u << 23) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P24 (0x1u << 24) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P25 (0x1u << 25) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P26 (0x1u << 26) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P27 (0x1u << 27) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P28 (0x1u << 28) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P29 (0x1u << 29) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P30 (0x1u << 30) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P31 (0x1u << 31) /**< \brief (PIO_MDER) Multi Drive Enable. */ +/* -------- PIO_MDDR : (PIO Offset: 0x0054) Multi-driver Disable Register -------- */ +#define PIO_MDDR_P0 (0x1u << 0) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P1 (0x1u << 1) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P2 (0x1u << 2) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P3 (0x1u << 3) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P4 (0x1u << 4) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P5 (0x1u << 5) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P6 (0x1u << 6) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P7 (0x1u << 7) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P8 (0x1u << 8) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P9 (0x1u << 9) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P10 (0x1u << 10) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P11 (0x1u << 11) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P12 (0x1u << 12) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P13 (0x1u << 13) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P14 (0x1u << 14) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P15 (0x1u << 15) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P16 (0x1u << 16) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P17 (0x1u << 17) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P18 (0x1u << 18) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P19 (0x1u << 19) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P20 (0x1u << 20) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P21 (0x1u << 21) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P22 (0x1u << 22) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P23 (0x1u << 23) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P24 (0x1u << 24) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P25 (0x1u << 25) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P26 (0x1u << 26) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P27 (0x1u << 27) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P28 (0x1u << 28) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P29 (0x1u << 29) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P30 (0x1u << 30) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P31 (0x1u << 31) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +/* -------- PIO_MDSR : (PIO Offset: 0x0058) Multi-driver Status Register -------- */ +#define PIO_MDSR_P0 (0x1u << 0) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P1 (0x1u << 1) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P2 (0x1u << 2) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P3 (0x1u << 3) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P4 (0x1u << 4) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P5 (0x1u << 5) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P6 (0x1u << 6) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P7 (0x1u << 7) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P8 (0x1u << 8) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P9 (0x1u << 9) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P10 (0x1u << 10) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P11 (0x1u << 11) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P12 (0x1u << 12) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P13 (0x1u << 13) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P14 (0x1u << 14) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P15 (0x1u << 15) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P16 (0x1u << 16) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P17 (0x1u << 17) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P18 (0x1u << 18) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P19 (0x1u << 19) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P20 (0x1u << 20) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P21 (0x1u << 21) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P22 (0x1u << 22) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P23 (0x1u << 23) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P24 (0x1u << 24) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P25 (0x1u << 25) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P26 (0x1u << 26) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P27 (0x1u << 27) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P28 (0x1u << 28) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P29 (0x1u << 29) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P30 (0x1u << 30) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P31 (0x1u << 31) /**< \brief (PIO_MDSR) Multi Drive Status. */ +/* -------- PIO_PUDR : (PIO Offset: 0x0060) Pull-up Disable Register -------- */ +#define PIO_PUDR_P0 (0x1u << 0) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P1 (0x1u << 1) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P2 (0x1u << 2) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P3 (0x1u << 3) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P4 (0x1u << 4) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P5 (0x1u << 5) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P6 (0x1u << 6) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P7 (0x1u << 7) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P8 (0x1u << 8) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P9 (0x1u << 9) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P10 (0x1u << 10) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P11 (0x1u << 11) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P12 (0x1u << 12) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P13 (0x1u << 13) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P14 (0x1u << 14) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P15 (0x1u << 15) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P16 (0x1u << 16) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P17 (0x1u << 17) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P18 (0x1u << 18) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P19 (0x1u << 19) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P20 (0x1u << 20) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P21 (0x1u << 21) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P22 (0x1u << 22) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P23 (0x1u << 23) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P24 (0x1u << 24) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P25 (0x1u << 25) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P26 (0x1u << 26) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P27 (0x1u << 27) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P28 (0x1u << 28) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P29 (0x1u << 29) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P30 (0x1u << 30) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P31 (0x1u << 31) /**< \brief (PIO_PUDR) Pull Up Disable. */ +/* -------- PIO_PUER : (PIO Offset: 0x0064) Pull-up Enable Register -------- */ +#define PIO_PUER_P0 (0x1u << 0) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P1 (0x1u << 1) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P2 (0x1u << 2) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P3 (0x1u << 3) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P4 (0x1u << 4) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P5 (0x1u << 5) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P6 (0x1u << 6) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P7 (0x1u << 7) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P8 (0x1u << 8) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P9 (0x1u << 9) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P10 (0x1u << 10) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P11 (0x1u << 11) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P12 (0x1u << 12) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P13 (0x1u << 13) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P14 (0x1u << 14) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P15 (0x1u << 15) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P16 (0x1u << 16) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P17 (0x1u << 17) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P18 (0x1u << 18) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P19 (0x1u << 19) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P20 (0x1u << 20) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P21 (0x1u << 21) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P22 (0x1u << 22) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P23 (0x1u << 23) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P24 (0x1u << 24) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P25 (0x1u << 25) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P26 (0x1u << 26) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P27 (0x1u << 27) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P28 (0x1u << 28) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P29 (0x1u << 29) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P30 (0x1u << 30) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P31 (0x1u << 31) /**< \brief (PIO_PUER) Pull Up Enable. */ +/* -------- PIO_PUSR : (PIO Offset: 0x0068) Pad Pull-up Status Register -------- */ +#define PIO_PUSR_P0 (0x1u << 0) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P1 (0x1u << 1) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P2 (0x1u << 2) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P3 (0x1u << 3) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P4 (0x1u << 4) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P5 (0x1u << 5) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P6 (0x1u << 6) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P7 (0x1u << 7) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P8 (0x1u << 8) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P9 (0x1u << 9) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P10 (0x1u << 10) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P11 (0x1u << 11) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P12 (0x1u << 12) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P13 (0x1u << 13) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P14 (0x1u << 14) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P15 (0x1u << 15) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P16 (0x1u << 16) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P17 (0x1u << 17) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P18 (0x1u << 18) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P19 (0x1u << 19) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P20 (0x1u << 20) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P21 (0x1u << 21) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P22 (0x1u << 22) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P23 (0x1u << 23) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P24 (0x1u << 24) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P25 (0x1u << 25) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P26 (0x1u << 26) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P27 (0x1u << 27) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P28 (0x1u << 28) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P29 (0x1u << 29) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P30 (0x1u << 30) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P31 (0x1u << 31) /**< \brief (PIO_PUSR) Pull Up Status. */ +/* -------- PIO_ABCDSR[2] : (PIO Offset: 0x0070) Peripheral Select Register -------- */ +#define PIO_ABCDSR_P0 (0x1u << 0) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P1 (0x1u << 1) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P2 (0x1u << 2) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P3 (0x1u << 3) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P4 (0x1u << 4) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P5 (0x1u << 5) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P6 (0x1u << 6) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P7 (0x1u << 7) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P8 (0x1u << 8) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P9 (0x1u << 9) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P10 (0x1u << 10) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P11 (0x1u << 11) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P12 (0x1u << 12) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P13 (0x1u << 13) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P14 (0x1u << 14) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P15 (0x1u << 15) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P16 (0x1u << 16) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P17 (0x1u << 17) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P18 (0x1u << 18) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P19 (0x1u << 19) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P20 (0x1u << 20) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P21 (0x1u << 21) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P22 (0x1u << 22) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P23 (0x1u << 23) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P24 (0x1u << 24) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P25 (0x1u << 25) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P26 (0x1u << 26) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P27 (0x1u << 27) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P28 (0x1u << 28) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P29 (0x1u << 29) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P30 (0x1u << 30) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P31 (0x1u << 31) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +/* -------- PIO_IFSCDR : (PIO Offset: 0x0080) Input Filter Slow Clock Disable Register -------- */ +#define PIO_IFSCDR_P0 (0x1u << 0) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P1 (0x1u << 1) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P2 (0x1u << 2) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P3 (0x1u << 3) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P4 (0x1u << 4) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P5 (0x1u << 5) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P6 (0x1u << 6) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P7 (0x1u << 7) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P8 (0x1u << 8) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P9 (0x1u << 9) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P10 (0x1u << 10) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P11 (0x1u << 11) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P12 (0x1u << 12) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P13 (0x1u << 13) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P14 (0x1u << 14) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P15 (0x1u << 15) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P16 (0x1u << 16) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P17 (0x1u << 17) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P18 (0x1u << 18) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P19 (0x1u << 19) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P20 (0x1u << 20) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P21 (0x1u << 21) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P22 (0x1u << 22) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P23 (0x1u << 23) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P24 (0x1u << 24) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P25 (0x1u << 25) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P26 (0x1u << 26) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P27 (0x1u << 27) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P28 (0x1u << 28) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P29 (0x1u << 29) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P30 (0x1u << 30) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P31 (0x1u << 31) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +/* -------- PIO_IFSCER : (PIO Offset: 0x0084) Input Filter Slow Clock Enable Register -------- */ +#define PIO_IFSCER_P0 (0x1u << 0) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P1 (0x1u << 1) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P2 (0x1u << 2) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P3 (0x1u << 3) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P4 (0x1u << 4) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P5 (0x1u << 5) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P6 (0x1u << 6) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P7 (0x1u << 7) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P8 (0x1u << 8) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P9 (0x1u << 9) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P10 (0x1u << 10) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P11 (0x1u << 11) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P12 (0x1u << 12) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P13 (0x1u << 13) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P14 (0x1u << 14) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P15 (0x1u << 15) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P16 (0x1u << 16) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P17 (0x1u << 17) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P18 (0x1u << 18) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P19 (0x1u << 19) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P20 (0x1u << 20) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P21 (0x1u << 21) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P22 (0x1u << 22) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P23 (0x1u << 23) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P24 (0x1u << 24) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P25 (0x1u << 25) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P26 (0x1u << 26) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P27 (0x1u << 27) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P28 (0x1u << 28) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P29 (0x1u << 29) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P30 (0x1u << 30) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P31 (0x1u << 31) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +/* -------- PIO_IFSCSR : (PIO Offset: 0x0088) Input Filter Slow Clock Status Register -------- */ +#define PIO_IFSCSR_P0 (0x1u << 0) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P1 (0x1u << 1) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P2 (0x1u << 2) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P3 (0x1u << 3) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P4 (0x1u << 4) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P5 (0x1u << 5) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P6 (0x1u << 6) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P7 (0x1u << 7) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P8 (0x1u << 8) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P9 (0x1u << 9) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P10 (0x1u << 10) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P11 (0x1u << 11) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P12 (0x1u << 12) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P13 (0x1u << 13) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P14 (0x1u << 14) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P15 (0x1u << 15) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P16 (0x1u << 16) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P17 (0x1u << 17) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P18 (0x1u << 18) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P19 (0x1u << 19) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P20 (0x1u << 20) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P21 (0x1u << 21) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P22 (0x1u << 22) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P23 (0x1u << 23) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P24 (0x1u << 24) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P25 (0x1u << 25) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P26 (0x1u << 26) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P27 (0x1u << 27) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P28 (0x1u << 28) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P29 (0x1u << 29) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P30 (0x1u << 30) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P31 (0x1u << 31) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +/* -------- PIO_SCDR : (PIO Offset: 0x008C) Slow Clock Divider Debouncing Register -------- */ +#define PIO_SCDR_DIV_Pos 0 +#define PIO_SCDR_DIV_Msk (0x3fffu << PIO_SCDR_DIV_Pos) /**< \brief (PIO_SCDR) */ +#define PIO_SCDR_DIV(value) ((PIO_SCDR_DIV_Msk & ((value) << PIO_SCDR_DIV_Pos))) +/* -------- PIO_PPDDR : (PIO Offset: 0x0090) Pad Pull-down Disable Register -------- */ +#define PIO_PPDDR_P0 (0x1u << 0) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P1 (0x1u << 1) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P2 (0x1u << 2) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P3 (0x1u << 3) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P4 (0x1u << 4) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P5 (0x1u << 5) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P6 (0x1u << 6) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P7 (0x1u << 7) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P8 (0x1u << 8) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P9 (0x1u << 9) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P10 (0x1u << 10) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P11 (0x1u << 11) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P12 (0x1u << 12) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P13 (0x1u << 13) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P14 (0x1u << 14) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P15 (0x1u << 15) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P16 (0x1u << 16) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P17 (0x1u << 17) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P18 (0x1u << 18) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P19 (0x1u << 19) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P20 (0x1u << 20) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P21 (0x1u << 21) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P22 (0x1u << 22) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P23 (0x1u << 23) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P24 (0x1u << 24) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P25 (0x1u << 25) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P26 (0x1u << 26) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P27 (0x1u << 27) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P28 (0x1u << 28) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P29 (0x1u << 29) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P30 (0x1u << 30) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P31 (0x1u << 31) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +/* -------- PIO_PPDER : (PIO Offset: 0x0094) Pad Pull-down Enable Register -------- */ +#define PIO_PPDER_P0 (0x1u << 0) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P1 (0x1u << 1) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P2 (0x1u << 2) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P3 (0x1u << 3) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P4 (0x1u << 4) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P5 (0x1u << 5) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P6 (0x1u << 6) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P7 (0x1u << 7) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P8 (0x1u << 8) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P9 (0x1u << 9) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P10 (0x1u << 10) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P11 (0x1u << 11) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P12 (0x1u << 12) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P13 (0x1u << 13) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P14 (0x1u << 14) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P15 (0x1u << 15) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P16 (0x1u << 16) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P17 (0x1u << 17) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P18 (0x1u << 18) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P19 (0x1u << 19) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P20 (0x1u << 20) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P21 (0x1u << 21) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P22 (0x1u << 22) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P23 (0x1u << 23) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P24 (0x1u << 24) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P25 (0x1u << 25) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P26 (0x1u << 26) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P27 (0x1u << 27) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P28 (0x1u << 28) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P29 (0x1u << 29) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P30 (0x1u << 30) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P31 (0x1u << 31) /**< \brief (PIO_PPDER) Pull Down Enable. */ +/* -------- PIO_PPDSR : (PIO Offset: 0x0098) Pad Pull-down Status Register -------- */ +#define PIO_PPDSR_P0 (0x1u << 0) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P1 (0x1u << 1) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P2 (0x1u << 2) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P3 (0x1u << 3) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P4 (0x1u << 4) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P5 (0x1u << 5) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P6 (0x1u << 6) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P7 (0x1u << 7) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P8 (0x1u << 8) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P9 (0x1u << 9) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P10 (0x1u << 10) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P11 (0x1u << 11) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P12 (0x1u << 12) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P13 (0x1u << 13) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P14 (0x1u << 14) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P15 (0x1u << 15) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P16 (0x1u << 16) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P17 (0x1u << 17) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P18 (0x1u << 18) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P19 (0x1u << 19) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P20 (0x1u << 20) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P21 (0x1u << 21) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P22 (0x1u << 22) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P23 (0x1u << 23) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P24 (0x1u << 24) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P25 (0x1u << 25) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P26 (0x1u << 26) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P27 (0x1u << 27) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P28 (0x1u << 28) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P29 (0x1u << 29) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P30 (0x1u << 30) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P31 (0x1u << 31) /**< \brief (PIO_PPDSR) Pull Down Status. */ +/* -------- PIO_OWER : (PIO Offset: 0x00A0) Output Write Enable -------- */ +#define PIO_OWER_P0 (0x1u << 0) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P1 (0x1u << 1) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P2 (0x1u << 2) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P3 (0x1u << 3) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P4 (0x1u << 4) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P5 (0x1u << 5) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P6 (0x1u << 6) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P7 (0x1u << 7) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P8 (0x1u << 8) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P9 (0x1u << 9) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P10 (0x1u << 10) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P11 (0x1u << 11) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P12 (0x1u << 12) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P13 (0x1u << 13) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P14 (0x1u << 14) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P15 (0x1u << 15) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P16 (0x1u << 16) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P17 (0x1u << 17) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P18 (0x1u << 18) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P19 (0x1u << 19) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P20 (0x1u << 20) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P21 (0x1u << 21) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P22 (0x1u << 22) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P23 (0x1u << 23) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P24 (0x1u << 24) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P25 (0x1u << 25) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P26 (0x1u << 26) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P27 (0x1u << 27) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P28 (0x1u << 28) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P29 (0x1u << 29) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P30 (0x1u << 30) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P31 (0x1u << 31) /**< \brief (PIO_OWER) Output Write Enable. */ +/* -------- PIO_OWDR : (PIO Offset: 0x00A4) Output Write Disable -------- */ +#define PIO_OWDR_P0 (0x1u << 0) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P1 (0x1u << 1) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P2 (0x1u << 2) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P3 (0x1u << 3) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P4 (0x1u << 4) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P5 (0x1u << 5) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P6 (0x1u << 6) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P7 (0x1u << 7) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P8 (0x1u << 8) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P9 (0x1u << 9) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P10 (0x1u << 10) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P11 (0x1u << 11) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P12 (0x1u << 12) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P13 (0x1u << 13) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P14 (0x1u << 14) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P15 (0x1u << 15) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P16 (0x1u << 16) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P17 (0x1u << 17) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P18 (0x1u << 18) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P19 (0x1u << 19) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P20 (0x1u << 20) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P21 (0x1u << 21) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P22 (0x1u << 22) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P23 (0x1u << 23) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P24 (0x1u << 24) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P25 (0x1u << 25) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P26 (0x1u << 26) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P27 (0x1u << 27) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P28 (0x1u << 28) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P29 (0x1u << 29) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P30 (0x1u << 30) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P31 (0x1u << 31) /**< \brief (PIO_OWDR) Output Write Disable. */ +/* -------- PIO_OWSR : (PIO Offset: 0x00A8) Output Write Status Register -------- */ +#define PIO_OWSR_P0 (0x1u << 0) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P1 (0x1u << 1) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P2 (0x1u << 2) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P3 (0x1u << 3) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P4 (0x1u << 4) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P5 (0x1u << 5) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P6 (0x1u << 6) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P7 (0x1u << 7) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P8 (0x1u << 8) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P9 (0x1u << 9) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P10 (0x1u << 10) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P11 (0x1u << 11) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P12 (0x1u << 12) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P13 (0x1u << 13) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P14 (0x1u << 14) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P15 (0x1u << 15) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P16 (0x1u << 16) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P17 (0x1u << 17) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P18 (0x1u << 18) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P19 (0x1u << 19) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P20 (0x1u << 20) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P21 (0x1u << 21) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P22 (0x1u << 22) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P23 (0x1u << 23) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P24 (0x1u << 24) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P25 (0x1u << 25) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P26 (0x1u << 26) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P27 (0x1u << 27) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P28 (0x1u << 28) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P29 (0x1u << 29) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P30 (0x1u << 30) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P31 (0x1u << 31) /**< \brief (PIO_OWSR) Output Write Status. */ +/* -------- PIO_AIMER : (PIO Offset: 0x00B0) Additional Interrupt Modes Enable Register -------- */ +#define PIO_AIMER_P0 (0x1u << 0) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P1 (0x1u << 1) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P2 (0x1u << 2) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P3 (0x1u << 3) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P4 (0x1u << 4) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P5 (0x1u << 5) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P6 (0x1u << 6) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P7 (0x1u << 7) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P8 (0x1u << 8) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P9 (0x1u << 9) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P10 (0x1u << 10) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P11 (0x1u << 11) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P12 (0x1u << 12) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P13 (0x1u << 13) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P14 (0x1u << 14) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P15 (0x1u << 15) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P16 (0x1u << 16) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P17 (0x1u << 17) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P18 (0x1u << 18) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P19 (0x1u << 19) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P20 (0x1u << 20) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P21 (0x1u << 21) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P22 (0x1u << 22) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P23 (0x1u << 23) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P24 (0x1u << 24) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P25 (0x1u << 25) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P26 (0x1u << 26) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P27 (0x1u << 27) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P28 (0x1u << 28) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P29 (0x1u << 29) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P30 (0x1u << 30) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P31 (0x1u << 31) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +/* -------- PIO_AIMDR : (PIO Offset: 0x00B4) Additional Interrupt Modes Disables Register -------- */ +#define PIO_AIMDR_P0 (0x1u << 0) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P1 (0x1u << 1) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P2 (0x1u << 2) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P3 (0x1u << 3) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P4 (0x1u << 4) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P5 (0x1u << 5) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P6 (0x1u << 6) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P7 (0x1u << 7) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P8 (0x1u << 8) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P9 (0x1u << 9) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P10 (0x1u << 10) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P11 (0x1u << 11) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P12 (0x1u << 12) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P13 (0x1u << 13) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P14 (0x1u << 14) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P15 (0x1u << 15) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P16 (0x1u << 16) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P17 (0x1u << 17) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P18 (0x1u << 18) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P19 (0x1u << 19) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P20 (0x1u << 20) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P21 (0x1u << 21) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P22 (0x1u << 22) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P23 (0x1u << 23) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P24 (0x1u << 24) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P25 (0x1u << 25) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P26 (0x1u << 26) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P27 (0x1u << 27) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P28 (0x1u << 28) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P29 (0x1u << 29) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P30 (0x1u << 30) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P31 (0x1u << 31) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +/* -------- PIO_AIMMR : (PIO Offset: 0x00B8) Additional Interrupt Modes Mask Register -------- */ +#define PIO_AIMMR_P0 (0x1u << 0) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P1 (0x1u << 1) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P2 (0x1u << 2) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P3 (0x1u << 3) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P4 (0x1u << 4) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P5 (0x1u << 5) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P6 (0x1u << 6) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P7 (0x1u << 7) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P8 (0x1u << 8) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P9 (0x1u << 9) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P10 (0x1u << 10) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P11 (0x1u << 11) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P12 (0x1u << 12) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P13 (0x1u << 13) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P14 (0x1u << 14) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P15 (0x1u << 15) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P16 (0x1u << 16) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P17 (0x1u << 17) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P18 (0x1u << 18) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P19 (0x1u << 19) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P20 (0x1u << 20) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P21 (0x1u << 21) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P22 (0x1u << 22) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P23 (0x1u << 23) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P24 (0x1u << 24) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P25 (0x1u << 25) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P26 (0x1u << 26) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P27 (0x1u << 27) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P28 (0x1u << 28) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P29 (0x1u << 29) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P30 (0x1u << 30) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P31 (0x1u << 31) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +/* -------- PIO_ESR : (PIO Offset: 0x00C0) Edge Select Register -------- */ +#define PIO_ESR_P0 (0x1u << 0) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P1 (0x1u << 1) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P2 (0x1u << 2) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P3 (0x1u << 3) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P4 (0x1u << 4) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P5 (0x1u << 5) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P6 (0x1u << 6) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P7 (0x1u << 7) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P8 (0x1u << 8) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P9 (0x1u << 9) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P10 (0x1u << 10) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P11 (0x1u << 11) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P12 (0x1u << 12) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P13 (0x1u << 13) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P14 (0x1u << 14) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P15 (0x1u << 15) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P16 (0x1u << 16) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P17 (0x1u << 17) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P18 (0x1u << 18) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P19 (0x1u << 19) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P20 (0x1u << 20) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P21 (0x1u << 21) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P22 (0x1u << 22) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P23 (0x1u << 23) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P24 (0x1u << 24) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P25 (0x1u << 25) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P26 (0x1u << 26) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P27 (0x1u << 27) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P28 (0x1u << 28) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P29 (0x1u << 29) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P30 (0x1u << 30) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P31 (0x1u << 31) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +/* -------- PIO_LSR : (PIO Offset: 0x00C4) Level Select Register -------- */ +#define PIO_LSR_P0 (0x1u << 0) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P1 (0x1u << 1) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P2 (0x1u << 2) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P3 (0x1u << 3) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P4 (0x1u << 4) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P5 (0x1u << 5) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P6 (0x1u << 6) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P7 (0x1u << 7) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P8 (0x1u << 8) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P9 (0x1u << 9) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P10 (0x1u << 10) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P11 (0x1u << 11) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P12 (0x1u << 12) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P13 (0x1u << 13) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P14 (0x1u << 14) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P15 (0x1u << 15) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P16 (0x1u << 16) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P17 (0x1u << 17) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P18 (0x1u << 18) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P19 (0x1u << 19) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P20 (0x1u << 20) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P21 (0x1u << 21) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P22 (0x1u << 22) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P23 (0x1u << 23) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P24 (0x1u << 24) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P25 (0x1u << 25) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P26 (0x1u << 26) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P27 (0x1u << 27) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P28 (0x1u << 28) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P29 (0x1u << 29) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P30 (0x1u << 30) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P31 (0x1u << 31) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +/* -------- PIO_ELSR : (PIO Offset: 0x00C8) Edge/Level Status Register -------- */ +#define PIO_ELSR_P0 (0x1u << 0) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P1 (0x1u << 1) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P2 (0x1u << 2) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P3 (0x1u << 3) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P4 (0x1u << 4) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P5 (0x1u << 5) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P6 (0x1u << 6) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P7 (0x1u << 7) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P8 (0x1u << 8) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P9 (0x1u << 9) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P10 (0x1u << 10) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P11 (0x1u << 11) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P12 (0x1u << 12) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P13 (0x1u << 13) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P14 (0x1u << 14) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P15 (0x1u << 15) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P16 (0x1u << 16) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P17 (0x1u << 17) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P18 (0x1u << 18) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P19 (0x1u << 19) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P20 (0x1u << 20) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P21 (0x1u << 21) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P22 (0x1u << 22) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P23 (0x1u << 23) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P24 (0x1u << 24) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P25 (0x1u << 25) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P26 (0x1u << 26) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P27 (0x1u << 27) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P28 (0x1u << 28) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P29 (0x1u << 29) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P30 (0x1u << 30) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P31 (0x1u << 31) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +/* -------- PIO_FELLSR : (PIO Offset: 0x00D0) Falling Edge/Low Level Select Register -------- */ +#define PIO_FELLSR_P0 (0x1u << 0) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P1 (0x1u << 1) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P2 (0x1u << 2) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P3 (0x1u << 3) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P4 (0x1u << 4) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P5 (0x1u << 5) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P6 (0x1u << 6) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P7 (0x1u << 7) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P8 (0x1u << 8) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P9 (0x1u << 9) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P10 (0x1u << 10) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P11 (0x1u << 11) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P12 (0x1u << 12) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P13 (0x1u << 13) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P14 (0x1u << 14) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P15 (0x1u << 15) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P16 (0x1u << 16) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P17 (0x1u << 17) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P18 (0x1u << 18) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P19 (0x1u << 19) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P20 (0x1u << 20) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P21 (0x1u << 21) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P22 (0x1u << 22) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P23 (0x1u << 23) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P24 (0x1u << 24) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P25 (0x1u << 25) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P26 (0x1u << 26) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P27 (0x1u << 27) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P28 (0x1u << 28) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P29 (0x1u << 29) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P30 (0x1u << 30) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P31 (0x1u << 31) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +/* -------- PIO_REHLSR : (PIO Offset: 0x00D4) Rising Edge/ High Level Select Register -------- */ +#define PIO_REHLSR_P0 (0x1u << 0) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P1 (0x1u << 1) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P2 (0x1u << 2) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P3 (0x1u << 3) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P4 (0x1u << 4) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P5 (0x1u << 5) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P6 (0x1u << 6) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P7 (0x1u << 7) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P8 (0x1u << 8) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P9 (0x1u << 9) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P10 (0x1u << 10) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P11 (0x1u << 11) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P12 (0x1u << 12) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P13 (0x1u << 13) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P14 (0x1u << 14) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P15 (0x1u << 15) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P16 (0x1u << 16) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P17 (0x1u << 17) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P18 (0x1u << 18) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P19 (0x1u << 19) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P20 (0x1u << 20) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P21 (0x1u << 21) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P22 (0x1u << 22) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P23 (0x1u << 23) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P24 (0x1u << 24) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P25 (0x1u << 25) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P26 (0x1u << 26) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P27 (0x1u << 27) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P28 (0x1u << 28) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P29 (0x1u << 29) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P30 (0x1u << 30) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P31 (0x1u << 31) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +/* -------- PIO_FRLHSR : (PIO Offset: 0x00D8) Fall/Rise - Low/High Status Register -------- */ +#define PIO_FRLHSR_P0 (0x1u << 0) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P1 (0x1u << 1) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P2 (0x1u << 2) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P3 (0x1u << 3) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P4 (0x1u << 4) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P5 (0x1u << 5) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P6 (0x1u << 6) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P7 (0x1u << 7) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P8 (0x1u << 8) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P9 (0x1u << 9) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P10 (0x1u << 10) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P11 (0x1u << 11) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P12 (0x1u << 12) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P13 (0x1u << 13) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P14 (0x1u << 14) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P15 (0x1u << 15) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P16 (0x1u << 16) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P17 (0x1u << 17) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P18 (0x1u << 18) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P19 (0x1u << 19) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P20 (0x1u << 20) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P21 (0x1u << 21) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P22 (0x1u << 22) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P23 (0x1u << 23) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P24 (0x1u << 24) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P25 (0x1u << 25) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P26 (0x1u << 26) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P27 (0x1u << 27) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P28 (0x1u << 28) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P29 (0x1u << 29) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P30 (0x1u << 30) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P31 (0x1u << 31) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +/* -------- PIO_LOCKSR : (PIO Offset: 0x00E0) Lock Status -------- */ +#define PIO_LOCKSR_P0 (0x1u << 0) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P1 (0x1u << 1) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P2 (0x1u << 2) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P3 (0x1u << 3) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P4 (0x1u << 4) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P5 (0x1u << 5) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P6 (0x1u << 6) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P7 (0x1u << 7) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P8 (0x1u << 8) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P9 (0x1u << 9) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P10 (0x1u << 10) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P11 (0x1u << 11) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P12 (0x1u << 12) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P13 (0x1u << 13) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P14 (0x1u << 14) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P15 (0x1u << 15) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P16 (0x1u << 16) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P17 (0x1u << 17) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P18 (0x1u << 18) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P19 (0x1u << 19) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P20 (0x1u << 20) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P21 (0x1u << 21) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P22 (0x1u << 22) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P23 (0x1u << 23) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P24 (0x1u << 24) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P25 (0x1u << 25) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P26 (0x1u << 26) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P27 (0x1u << 27) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P28 (0x1u << 28) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P29 (0x1u << 29) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P30 (0x1u << 30) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P31 (0x1u << 31) /**< \brief (PIO_LOCKSR) Lock Status. */ +/* -------- PIO_WPMR : (PIO Offset: 0x00E4) Write Protect Mode Register -------- */ +#define PIO_WPMR_WPEN (0x1u << 0) /**< \brief (PIO_WPMR) Write Protect Enable */ +#define PIO_WPMR_WPKEY_Pos 8 +#define PIO_WPMR_WPKEY_Msk (0xffffffu << PIO_WPMR_WPKEY_Pos) /**< \brief (PIO_WPMR) Write Protect KEY */ +#define PIO_WPMR_WPKEY(value) ((PIO_WPMR_WPKEY_Msk & ((value) << PIO_WPMR_WPKEY_Pos))) +/* -------- PIO_WPSR : (PIO Offset: 0x00E8) Write Protect Status Register -------- */ +#define PIO_WPSR_WPVS (0x1u << 0) /**< \brief (PIO_WPSR) Write Protect Violation Status */ +#define PIO_WPSR_WPVSRC_Pos 8 +#define PIO_WPSR_WPVSRC_Msk (0xffffu << PIO_WPSR_WPVSRC_Pos) /**< \brief (PIO_WPSR) Write Protect Violation Source */ +/* -------- PIO_SCHMITT : (PIO Offset: 0x0100) Schmitt Trigger Register -------- */ +#define PIO_SCHMITT_SCHMITT0 (0x1u << 0) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT1 (0x1u << 1) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT2 (0x1u << 2) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT3 (0x1u << 3) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT4 (0x1u << 4) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT5 (0x1u << 5) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT6 (0x1u << 6) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT7 (0x1u << 7) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT8 (0x1u << 8) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT9 (0x1u << 9) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT10 (0x1u << 10) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT11 (0x1u << 11) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT12 (0x1u << 12) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT13 (0x1u << 13) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT14 (0x1u << 14) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT15 (0x1u << 15) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT16 (0x1u << 16) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT17 (0x1u << 17) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT18 (0x1u << 18) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT19 (0x1u << 19) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT20 (0x1u << 20) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT21 (0x1u << 21) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT22 (0x1u << 22) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT23 (0x1u << 23) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT24 (0x1u << 24) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT25 (0x1u << 25) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT26 (0x1u << 26) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT27 (0x1u << 27) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT28 (0x1u << 28) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT29 (0x1u << 29) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT30 (0x1u << 30) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT31 (0x1u << 31) /**< \brief (PIO_SCHMITT) */ +/* -------- PIO_PCMR : (PIO Offset: 0x150) Parallel Capture Mode Register -------- */ +#define PIO_PCMR_PCEN (0x1u << 0) /**< \brief (PIO_PCMR) Parallel Capture Mode Enable */ +#define PIO_PCMR_DSIZE_Pos 4 +#define PIO_PCMR_DSIZE_Msk (0x3u << PIO_PCMR_DSIZE_Pos) /**< \brief (PIO_PCMR) Parallel Capture Mode Data Size */ +#define PIO_PCMR_DSIZE_BYTE (0x0u << 4) /**< \brief (PIO_PCMR) The reception data in the PIO_PCRHR register is a BYTE (8-bit) */ +#define PIO_PCMR_DSIZE_HALFWORD (0x1u << 4) /**< \brief (PIO_PCMR) The reception data in the PIO_PCRHR register is a HALF-WORD (16-bit) */ +#define PIO_PCMR_DSIZE_WORD (0x2u << 4) /**< \brief (PIO_PCMR) The reception data in the PIO_PCRHR register is a WORD (32-bit) */ +#define PIO_PCMR_ALWYS (0x1u << 9) /**< \brief (PIO_PCMR) Parallel Capture Mode Always Sampling */ +#define PIO_PCMR_HALFS (0x1u << 10) /**< \brief (PIO_PCMR) Parallel Capture Mode Half Sampling */ +#define PIO_PCMR_FRSTS (0x1u << 11) /**< \brief (PIO_PCMR) Parallel Capture Mode First Sample */ +/* -------- PIO_PCIER : (PIO Offset: 0x154) Parallel Capture Interrupt Enable Register -------- */ +#define PIO_PCIER_DRDY (0x1u << 0) /**< \brief (PIO_PCIER) Parallel Capture Mode Data Ready Interrupt Enable */ +#define PIO_PCIER_OVRE (0x1u << 1) /**< \brief (PIO_PCIER) Parallel Capture Mode Overrun Error Interrupt Enable */ +#define PIO_PCIER_ENDRX (0x1u << 2) /**< \brief (PIO_PCIER) End of Reception Transfer Interrupt Enable */ +#define PIO_PCIER_RXBUFF (0x1u << 3) /**< \brief (PIO_PCIER) Reception Buffer Full Interrupt Enable */ +/* -------- PIO_PCIDR : (PIO Offset: 0x158) Parallel Capture Interrupt Disable Register -------- */ +#define PIO_PCIDR_DRDY (0x1u << 0) /**< \brief (PIO_PCIDR) Parallel Capture Mode Data Ready Interrupt Disable */ +#define PIO_PCIDR_OVRE (0x1u << 1) /**< \brief (PIO_PCIDR) Parallel Capture Mode Overrun Error Interrupt Disable */ +#define PIO_PCIDR_ENDRX (0x1u << 2) /**< \brief (PIO_PCIDR) End of Reception Transfer Interrupt Disable */ +#define PIO_PCIDR_RXBUFF (0x1u << 3) /**< \brief (PIO_PCIDR) Reception Buffer Full Interrupt Disable */ +/* -------- PIO_PCIMR : (PIO Offset: 0x15C) Parallel Capture Interrupt Mask Register -------- */ +#define PIO_PCIMR_DRDY (0x1u << 0) /**< \brief (PIO_PCIMR) Parallel Capture Mode Data Ready Interrupt Mask */ +#define PIO_PCIMR_OVRE (0x1u << 1) /**< \brief (PIO_PCIMR) Parallel Capture Mode Overrun Error Interrupt Mask */ +#define PIO_PCIMR_ENDRX (0x1u << 2) /**< \brief (PIO_PCIMR) End of Reception Transfer Interrupt Mask */ +#define PIO_PCIMR_RXBUFF (0x1u << 3) /**< \brief (PIO_PCIMR) Reception Buffer Full Interrupt Mask */ +/* -------- PIO_PCISR : (PIO Offset: 0x160) Parallel Capture Interrupt Status Register -------- */ +#define PIO_PCISR_DRDY (0x1u << 0) /**< \brief (PIO_PCISR) Parallel Capture Mode Data Ready */ +#define PIO_PCISR_OVRE (0x1u << 1) /**< \brief (PIO_PCISR) Parallel Capture Mode Overrun Error. */ +#define PIO_PCISR_ENDRX (0x1u << 2) /**< \brief (PIO_PCISR) End of Reception Transfer. */ +#define PIO_PCISR_RXBUFF (0x1u << 3) /**< \brief (PIO_PCISR) Reception Buffer Full */ +/* -------- PIO_PCRHR : (PIO Offset: 0x164) Parallel Capture Reception Holding Register -------- */ +#define PIO_PCRHR_RDATA_Pos 0 +#define PIO_PCRHR_RDATA_Msk (0xffffffffu << PIO_PCRHR_RDATA_Pos) /**< \brief (PIO_PCRHR) Parallel Capture Mode Reception Data. */ +/* -------- PIO_RPR : (PIO Offset: 0x168) Receive Pointer Register -------- */ +#define PIO_RPR_RXPTR_Pos 0 +#define PIO_RPR_RXPTR_Msk (0xffffffffu << PIO_RPR_RXPTR_Pos) /**< \brief (PIO_RPR) Receive Pointer Register */ +#define PIO_RPR_RXPTR(value) ((PIO_RPR_RXPTR_Msk & ((value) << PIO_RPR_RXPTR_Pos))) +/* -------- PIO_RCR : (PIO Offset: 0x16C) Receive Counter Register -------- */ +#define PIO_RCR_RXCTR_Pos 0 +#define PIO_RCR_RXCTR_Msk (0xffffu << PIO_RCR_RXCTR_Pos) /**< \brief (PIO_RCR) Receive Counter Register */ +#define PIO_RCR_RXCTR(value) ((PIO_RCR_RXCTR_Msk & ((value) << PIO_RCR_RXCTR_Pos))) +/* -------- PIO_TPR : (PIO Offset: 0x170) Transmit Pointer Register -------- */ +#define PIO_TPR_TXPTR_Pos 0 +#define PIO_TPR_TXPTR_Msk (0xffffffffu << PIO_TPR_TXPTR_Pos) /**< \brief (PIO_TPR) Transmit Counter Register */ +#define PIO_TPR_TXPTR(value) ((PIO_TPR_TXPTR_Msk & ((value) << PIO_TPR_TXPTR_Pos))) +/* -------- PIO_TCR : (PIO Offset: 0x174) Transmit Counter Register -------- */ +#define PIO_TCR_TXCTR_Pos 0 +#define PIO_TCR_TXCTR_Msk (0xffffu << PIO_TCR_TXCTR_Pos) /**< \brief (PIO_TCR) Transmit Counter Register */ +#define PIO_TCR_TXCTR(value) ((PIO_TCR_TXCTR_Msk & ((value) << PIO_TCR_TXCTR_Pos))) +/* -------- PIO_RNPR : (PIO Offset: 0x178) Receive Next Pointer Register -------- */ +#define PIO_RNPR_RXNPTR_Pos 0 +#define PIO_RNPR_RXNPTR_Msk (0xffffffffu << PIO_RNPR_RXNPTR_Pos) /**< \brief (PIO_RNPR) Receive Next Pointer */ +#define PIO_RNPR_RXNPTR(value) ((PIO_RNPR_RXNPTR_Msk & ((value) << PIO_RNPR_RXNPTR_Pos))) +/* -------- PIO_RNCR : (PIO Offset: 0x17C) Receive Next Counter Register -------- */ +#define PIO_RNCR_RXNCTR_Pos 0 +#define PIO_RNCR_RXNCTR_Msk (0xffffu << PIO_RNCR_RXNCTR_Pos) /**< \brief (PIO_RNCR) Receive Next Counter */ +#define PIO_RNCR_RXNCTR(value) ((PIO_RNCR_RXNCTR_Msk & ((value) << PIO_RNCR_RXNCTR_Pos))) +/* -------- PIO_TNPR : (PIO Offset: 0x180) Transmit Next Pointer Register -------- */ +#define PIO_TNPR_TXNPTR_Pos 0 +#define PIO_TNPR_TXNPTR_Msk (0xffffffffu << PIO_TNPR_TXNPTR_Pos) /**< \brief (PIO_TNPR) Transmit Next Pointer */ +#define PIO_TNPR_TXNPTR(value) ((PIO_TNPR_TXNPTR_Msk & ((value) << PIO_TNPR_TXNPTR_Pos))) +/* -------- PIO_TNCR : (PIO Offset: 0x184) Transmit Next Counter Register -------- */ +#define PIO_TNCR_TXNCTR_Pos 0 +#define PIO_TNCR_TXNCTR_Msk (0xffffu << PIO_TNCR_TXNCTR_Pos) /**< \brief (PIO_TNCR) Transmit Counter Next */ +#define PIO_TNCR_TXNCTR(value) ((PIO_TNCR_TXNCTR_Msk & ((value) << PIO_TNCR_TXNCTR_Pos))) +/* -------- PIO_PTCR : (PIO Offset: 0x188) Transfer Control Register -------- */ +#define PIO_PTCR_RXTEN (0x1u << 0) /**< \brief (PIO_PTCR) Receiver Transfer Enable */ +#define PIO_PTCR_RXTDIS (0x1u << 1) /**< \brief (PIO_PTCR) Receiver Transfer Disable */ +#define PIO_PTCR_TXTEN (0x1u << 8) /**< \brief (PIO_PTCR) Transmitter Transfer Enable */ +#define PIO_PTCR_TXTDIS (0x1u << 9) /**< \brief (PIO_PTCR) Transmitter Transfer Disable */ +/* -------- PIO_PTSR : (PIO Offset: 0x18C) Transfer Status Register -------- */ +#define PIO_PTSR_RXTEN (0x1u << 0) /**< \brief (PIO_PTSR) Receiver Transfer Enable */ +#define PIO_PTSR_TXTEN (0x1u << 8) /**< \brief (PIO_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3S_PIO_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_pmc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_pmc.h new file mode 100644 index 000000000..c726e5569 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_pmc.h @@ -0,0 +1,482 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_PMC_COMPONENT_ +#define _SAM3S_PMC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Power Management Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S_PMC Power Management Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Pmc hardware registers */ +typedef struct { + WoReg PMC_SCER; /**< \brief (Pmc Offset: 0x0000) System Clock Enable Register */ + WoReg PMC_SCDR; /**< \brief (Pmc Offset: 0x0004) System Clock Disable Register */ + RoReg PMC_SCSR; /**< \brief (Pmc Offset: 0x0008) System Clock Status Register */ + RoReg Reserved1[1]; + WoReg PMC_PCER0; /**< \brief (Pmc Offset: 0x0010) Peripheral Clock Enable Register 0 */ + WoReg PMC_PCDR0; /**< \brief (Pmc Offset: 0x0014) Peripheral Clock Disable Register 0 */ + RoReg PMC_PCSR0; /**< \brief (Pmc Offset: 0x0018) Peripheral Clock Status Register 0 */ + RoReg Reserved2[1]; + RwReg CKGR_MOR; /**< \brief (Pmc Offset: 0x0020) Main Oscillator Register */ + RoReg CKGR_MCFR; /**< \brief (Pmc Offset: 0x0024) Main Clock Frequency Register */ + RwReg CKGR_PLLAR; /**< \brief (Pmc Offset: 0x0028) PLLA Register */ + RwReg CKGR_PLLBR; /**< \brief (Pmc Offset: 0x002C) PLLB Register */ + RwReg PMC_MCKR; /**< \brief (Pmc Offset: 0x0030) Master Clock Register */ + RoReg Reserved3[1]; + RwReg PMC_USB; /**< \brief (Pmc Offset: 0x0038) USB Clock Register */ + RoReg Reserved4[1]; + RwReg PMC_PCK[3]; /**< \brief (Pmc Offset: 0x0040) Programmable Clock 0 Register */ + RoReg Reserved5[5]; + WoReg PMC_IER; /**< \brief (Pmc Offset: 0x0060) Interrupt Enable Register */ + WoReg PMC_IDR; /**< \brief (Pmc Offset: 0x0064) Interrupt Disable Register */ + RoReg PMC_SR; /**< \brief (Pmc Offset: 0x0068) Status Register */ + RoReg PMC_IMR; /**< \brief (Pmc Offset: 0x006C) Interrupt Mask Register */ + RwReg PMC_FSMR; /**< \brief (Pmc Offset: 0x0070) Fast Startup Mode Register */ + RwReg PMC_FSPR; /**< \brief (Pmc Offset: 0x0074) Fast Startup Polarity Register */ + WoReg PMC_FOCR; /**< \brief (Pmc Offset: 0x0078) Fault Output Clear Register */ + RoReg Reserved6[26]; + RwReg PMC_WPMR; /**< \brief (Pmc Offset: 0x00E4) Write Protect Mode Register */ + RoReg PMC_WPSR; /**< \brief (Pmc Offset: 0x00E8) Write Protect Status Register */ + RoReg Reserved7[5]; + WoReg PMC_PCER1; /**< \brief (Pmc Offset: 0x0100) Peripheral Clock Enable Register 1 */ + WoReg PMC_PCDR1; /**< \brief (Pmc Offset: 0x0104) Peripheral Clock Disable Register 1 */ + RoReg PMC_PCSR1; /**< \brief (Pmc Offset: 0x0108) Peripheral Clock Status Register 1 */ + RoReg Reserved8[1]; + RwReg PMC_OCR; /**< \brief (Pmc Offset: 0x0110) Oscillator Calibration Register */ +} Pmc; +#endif /* __ASSEMBLY__ */ +/* -------- PMC_SCER : (PMC Offset: 0x0000) System Clock Enable Register -------- */ +#define PMC_SCER_UDP (0x1u << 7) /**< \brief (PMC_SCER) USB Device Port Clock Enable */ +#define PMC_SCER_PCK0 (0x1u << 8) /**< \brief (PMC_SCER) Programmable Clock 0 Output Enable */ +#define PMC_SCER_PCK1 (0x1u << 9) /**< \brief (PMC_SCER) Programmable Clock 1 Output Enable */ +#define PMC_SCER_PCK2 (0x1u << 10) /**< \brief (PMC_SCER) Programmable Clock 2 Output Enable */ +/* -------- PMC_SCDR : (PMC Offset: 0x0004) System Clock Disable Register -------- */ +#define PMC_SCDR_UDP (0x1u << 7) /**< \brief (PMC_SCDR) USB Device Port Clock Disable */ +#define PMC_SCDR_PCK0 (0x1u << 8) /**< \brief (PMC_SCDR) Programmable Clock 0 Output Disable */ +#define PMC_SCDR_PCK1 (0x1u << 9) /**< \brief (PMC_SCDR) Programmable Clock 1 Output Disable */ +#define PMC_SCDR_PCK2 (0x1u << 10) /**< \brief (PMC_SCDR) Programmable Clock 2 Output Disable */ +/* -------- PMC_SCSR : (PMC Offset: 0x0008) System Clock Status Register -------- */ +#define PMC_SCSR_UDP (0x1u << 7) /**< \brief (PMC_SCSR) USB Device Port Clock Status */ +#define PMC_SCSR_PCK0 (0x1u << 8) /**< \brief (PMC_SCSR) Programmable Clock 0 Output Status */ +#define PMC_SCSR_PCK1 (0x1u << 9) /**< \brief (PMC_SCSR) Programmable Clock 1 Output Status */ +#define PMC_SCSR_PCK2 (0x1u << 10) /**< \brief (PMC_SCSR) Programmable Clock 2 Output Status */ +/* -------- PMC_PCER0 : (PMC Offset: 0x0010) Peripheral Clock Enable Register 0 -------- */ +#define PMC_PCER0_PID2 (0x1u << 2) /**< \brief (PMC_PCER0) Peripheral Clock 2 Enable */ +#define PMC_PCER0_PID3 (0x1u << 3) /**< \brief (PMC_PCER0) Peripheral Clock 3 Enable */ +#define PMC_PCER0_PID4 (0x1u << 4) /**< \brief (PMC_PCER0) Peripheral Clock 4 Enable */ +#define PMC_PCER0_PID5 (0x1u << 5) /**< \brief (PMC_PCER0) Peripheral Clock 5 Enable */ +#define PMC_PCER0_PID6 (0x1u << 6) /**< \brief (PMC_PCER0) Peripheral Clock 6 Enable */ +#define PMC_PCER0_PID7 (0x1u << 7) /**< \brief (PMC_PCER0) Peripheral Clock 7 Enable */ +#define PMC_PCER0_PID8 (0x1u << 8) /**< \brief (PMC_PCER0) Peripheral Clock 8 Enable */ +#define PMC_PCER0_PID9 (0x1u << 9) /**< \brief (PMC_PCER0) Peripheral Clock 9 Enable */ +#define PMC_PCER0_PID10 (0x1u << 10) /**< \brief (PMC_PCER0) Peripheral Clock 10 Enable */ +#define PMC_PCER0_PID11 (0x1u << 11) /**< \brief (PMC_PCER0) Peripheral Clock 11 Enable */ +#define PMC_PCER0_PID12 (0x1u << 12) /**< \brief (PMC_PCER0) Peripheral Clock 12 Enable */ +#define PMC_PCER0_PID13 (0x1u << 13) /**< \brief (PMC_PCER0) Peripheral Clock 13 Enable */ +#define PMC_PCER0_PID14 (0x1u << 14) /**< \brief (PMC_PCER0) Peripheral Clock 14 Enable */ +#define PMC_PCER0_PID15 (0x1u << 15) /**< \brief (PMC_PCER0) Peripheral Clock 15 Enable */ +#define PMC_PCER0_PID16 (0x1u << 16) /**< \brief (PMC_PCER0) Peripheral Clock 16 Enable */ +#define PMC_PCER0_PID17 (0x1u << 17) /**< \brief (PMC_PCER0) Peripheral Clock 17 Enable */ +#define PMC_PCER0_PID18 (0x1u << 18) /**< \brief (PMC_PCER0) Peripheral Clock 18 Enable */ +#define PMC_PCER0_PID19 (0x1u << 19) /**< \brief (PMC_PCER0) Peripheral Clock 19 Enable */ +#define PMC_PCER0_PID20 (0x1u << 20) /**< \brief (PMC_PCER0) Peripheral Clock 20 Enable */ +#define PMC_PCER0_PID21 (0x1u << 21) /**< \brief (PMC_PCER0) Peripheral Clock 21 Enable */ +#define PMC_PCER0_PID22 (0x1u << 22) /**< \brief (PMC_PCER0) Peripheral Clock 22 Enable */ +#define PMC_PCER0_PID23 (0x1u << 23) /**< \brief (PMC_PCER0) Peripheral Clock 23 Enable */ +#define PMC_PCER0_PID24 (0x1u << 24) /**< \brief (PMC_PCER0) Peripheral Clock 24 Enable */ +#define PMC_PCER0_PID25 (0x1u << 25) /**< \brief (PMC_PCER0) Peripheral Clock 25 Enable */ +#define PMC_PCER0_PID26 (0x1u << 26) /**< \brief (PMC_PCER0) Peripheral Clock 26 Enable */ +#define PMC_PCER0_PID27 (0x1u << 27) /**< \brief (PMC_PCER0) Peripheral Clock 27 Enable */ +#define PMC_PCER0_PID28 (0x1u << 28) /**< \brief (PMC_PCER0) Peripheral Clock 28 Enable */ +#define PMC_PCER0_PID29 (0x1u << 29) /**< \brief (PMC_PCER0) Peripheral Clock 29 Enable */ +#define PMC_PCER0_PID30 (0x1u << 30) /**< \brief (PMC_PCER0) Peripheral Clock 30 Enable */ +#define PMC_PCER0_PID31 (0x1u << 31) /**< \brief (PMC_PCER0) Peripheral Clock 31 Enable */ +/* -------- PMC_PCDR0 : (PMC Offset: 0x0014) Peripheral Clock Disable Register 0 -------- */ +#define PMC_PCDR0_PID2 (0x1u << 2) /**< \brief (PMC_PCDR0) Peripheral Clock 2 Disable */ +#define PMC_PCDR0_PID3 (0x1u << 3) /**< \brief (PMC_PCDR0) Peripheral Clock 3 Disable */ +#define PMC_PCDR0_PID4 (0x1u << 4) /**< \brief (PMC_PCDR0) Peripheral Clock 4 Disable */ +#define PMC_PCDR0_PID5 (0x1u << 5) /**< \brief (PMC_PCDR0) Peripheral Clock 5 Disable */ +#define PMC_PCDR0_PID6 (0x1u << 6) /**< \brief (PMC_PCDR0) Peripheral Clock 6 Disable */ +#define PMC_PCDR0_PID7 (0x1u << 7) /**< \brief (PMC_PCDR0) Peripheral Clock 7 Disable */ +#define PMC_PCDR0_PID8 (0x1u << 8) /**< \brief (PMC_PCDR0) Peripheral Clock 8 Disable */ +#define PMC_PCDR0_PID9 (0x1u << 9) /**< \brief (PMC_PCDR0) Peripheral Clock 9 Disable */ +#define PMC_PCDR0_PID10 (0x1u << 10) /**< \brief (PMC_PCDR0) Peripheral Clock 10 Disable */ +#define PMC_PCDR0_PID11 (0x1u << 11) /**< \brief (PMC_PCDR0) Peripheral Clock 11 Disable */ +#define PMC_PCDR0_PID12 (0x1u << 12) /**< \brief (PMC_PCDR0) Peripheral Clock 12 Disable */ +#define PMC_PCDR0_PID13 (0x1u << 13) /**< \brief (PMC_PCDR0) Peripheral Clock 13 Disable */ +#define PMC_PCDR0_PID14 (0x1u << 14) /**< \brief (PMC_PCDR0) Peripheral Clock 14 Disable */ +#define PMC_PCDR0_PID15 (0x1u << 15) /**< \brief (PMC_PCDR0) Peripheral Clock 15 Disable */ +#define PMC_PCDR0_PID16 (0x1u << 16) /**< \brief (PMC_PCDR0) Peripheral Clock 16 Disable */ +#define PMC_PCDR0_PID17 (0x1u << 17) /**< \brief (PMC_PCDR0) Peripheral Clock 17 Disable */ +#define PMC_PCDR0_PID18 (0x1u << 18) /**< \brief (PMC_PCDR0) Peripheral Clock 18 Disable */ +#define PMC_PCDR0_PID19 (0x1u << 19) /**< \brief (PMC_PCDR0) Peripheral Clock 19 Disable */ +#define PMC_PCDR0_PID20 (0x1u << 20) /**< \brief (PMC_PCDR0) Peripheral Clock 20 Disable */ +#define PMC_PCDR0_PID21 (0x1u << 21) /**< \brief (PMC_PCDR0) Peripheral Clock 21 Disable */ +#define PMC_PCDR0_PID22 (0x1u << 22) /**< \brief (PMC_PCDR0) Peripheral Clock 22 Disable */ +#define PMC_PCDR0_PID23 (0x1u << 23) /**< \brief (PMC_PCDR0) Peripheral Clock 23 Disable */ +#define PMC_PCDR0_PID24 (0x1u << 24) /**< \brief (PMC_PCDR0) Peripheral Clock 24 Disable */ +#define PMC_PCDR0_PID25 (0x1u << 25) /**< \brief (PMC_PCDR0) Peripheral Clock 25 Disable */ +#define PMC_PCDR0_PID26 (0x1u << 26) /**< \brief (PMC_PCDR0) Peripheral Clock 26 Disable */ +#define PMC_PCDR0_PID27 (0x1u << 27) /**< \brief (PMC_PCDR0) Peripheral Clock 27 Disable */ +#define PMC_PCDR0_PID28 (0x1u << 28) /**< \brief (PMC_PCDR0) Peripheral Clock 28 Disable */ +#define PMC_PCDR0_PID29 (0x1u << 29) /**< \brief (PMC_PCDR0) Peripheral Clock 29 Disable */ +#define PMC_PCDR0_PID30 (0x1u << 30) /**< \brief (PMC_PCDR0) Peripheral Clock 30 Disable */ +#define PMC_PCDR0_PID31 (0x1u << 31) /**< \brief (PMC_PCDR0) Peripheral Clock 31 Disable */ +/* -------- PMC_PCSR0 : (PMC Offset: 0x0018) Peripheral Clock Status Register 0 -------- */ +#define PMC_PCSR0_PID2 (0x1u << 2) /**< \brief (PMC_PCSR0) Peripheral Clock 2 Status */ +#define PMC_PCSR0_PID3 (0x1u << 3) /**< \brief (PMC_PCSR0) Peripheral Clock 3 Status */ +#define PMC_PCSR0_PID4 (0x1u << 4) /**< \brief (PMC_PCSR0) Peripheral Clock 4 Status */ +#define PMC_PCSR0_PID5 (0x1u << 5) /**< \brief (PMC_PCSR0) Peripheral Clock 5 Status */ +#define PMC_PCSR0_PID6 (0x1u << 6) /**< \brief (PMC_PCSR0) Peripheral Clock 6 Status */ +#define PMC_PCSR0_PID7 (0x1u << 7) /**< \brief (PMC_PCSR0) Peripheral Clock 7 Status */ +#define PMC_PCSR0_PID8 (0x1u << 8) /**< \brief (PMC_PCSR0) Peripheral Clock 8 Status */ +#define PMC_PCSR0_PID9 (0x1u << 9) /**< \brief (PMC_PCSR0) Peripheral Clock 9 Status */ +#define PMC_PCSR0_PID10 (0x1u << 10) /**< \brief (PMC_PCSR0) Peripheral Clock 10 Status */ +#define PMC_PCSR0_PID11 (0x1u << 11) /**< \brief (PMC_PCSR0) Peripheral Clock 11 Status */ +#define PMC_PCSR0_PID12 (0x1u << 12) /**< \brief (PMC_PCSR0) Peripheral Clock 12 Status */ +#define PMC_PCSR0_PID13 (0x1u << 13) /**< \brief (PMC_PCSR0) Peripheral Clock 13 Status */ +#define PMC_PCSR0_PID14 (0x1u << 14) /**< \brief (PMC_PCSR0) Peripheral Clock 14 Status */ +#define PMC_PCSR0_PID15 (0x1u << 15) /**< \brief (PMC_PCSR0) Peripheral Clock 15 Status */ +#define PMC_PCSR0_PID16 (0x1u << 16) /**< \brief (PMC_PCSR0) Peripheral Clock 16 Status */ +#define PMC_PCSR0_PID17 (0x1u << 17) /**< \brief (PMC_PCSR0) Peripheral Clock 17 Status */ +#define PMC_PCSR0_PID18 (0x1u << 18) /**< \brief (PMC_PCSR0) Peripheral Clock 18 Status */ +#define PMC_PCSR0_PID19 (0x1u << 19) /**< \brief (PMC_PCSR0) Peripheral Clock 19 Status */ +#define PMC_PCSR0_PID20 (0x1u << 20) /**< \brief (PMC_PCSR0) Peripheral Clock 20 Status */ +#define PMC_PCSR0_PID21 (0x1u << 21) /**< \brief (PMC_PCSR0) Peripheral Clock 21 Status */ +#define PMC_PCSR0_PID22 (0x1u << 22) /**< \brief (PMC_PCSR0) Peripheral Clock 22 Status */ +#define PMC_PCSR0_PID23 (0x1u << 23) /**< \brief (PMC_PCSR0) Peripheral Clock 23 Status */ +#define PMC_PCSR0_PID24 (0x1u << 24) /**< \brief (PMC_PCSR0) Peripheral Clock 24 Status */ +#define PMC_PCSR0_PID25 (0x1u << 25) /**< \brief (PMC_PCSR0) Peripheral Clock 25 Status */ +#define PMC_PCSR0_PID26 (0x1u << 26) /**< \brief (PMC_PCSR0) Peripheral Clock 26 Status */ +#define PMC_PCSR0_PID27 (0x1u << 27) /**< \brief (PMC_PCSR0) Peripheral Clock 27 Status */ +#define PMC_PCSR0_PID28 (0x1u << 28) /**< \brief (PMC_PCSR0) Peripheral Clock 28 Status */ +#define PMC_PCSR0_PID29 (0x1u << 29) /**< \brief (PMC_PCSR0) Peripheral Clock 29 Status */ +#define PMC_PCSR0_PID30 (0x1u << 30) /**< \brief (PMC_PCSR0) Peripheral Clock 30 Status */ +#define PMC_PCSR0_PID31 (0x1u << 31) /**< \brief (PMC_PCSR0) Peripheral Clock 31 Status */ +/* -------- CKGR_MOR : (PMC Offset: 0x0020) Main Oscillator Register -------- */ +#define CKGR_MOR_MOSCXTEN (0x1u << 0) /**< \brief (CKGR_MOR) Main Crystal Oscillator Enable */ +#define CKGR_MOR_MOSCXTBY (0x1u << 1) /**< \brief (CKGR_MOR) Main Crystal Oscillator Bypass */ +#define CKGR_MOR_MOSCRCEN (0x1u << 3) /**< \brief (CKGR_MOR) Main On-Chip RC Oscillator Enable */ +#define CKGR_MOR_MOSCRCF_Pos 4 +#define CKGR_MOR_MOSCRCF_Msk (0x7u << CKGR_MOR_MOSCRCF_Pos) /**< \brief (CKGR_MOR) Main On-Chip RC Oscillator Frequency Selection */ +#define CKGR_MOR_MOSCRCF_4_MHz (0x0u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 4 MHz (default) */ +#define CKGR_MOR_MOSCRCF_8_MHz (0x1u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 8 MHz */ +#define CKGR_MOR_MOSCRCF_12_MHz (0x2u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 12 MHz */ +#define CKGR_MOR_MOSCXTST_Pos 8 +#define CKGR_MOR_MOSCXTST_Msk (0xffu << CKGR_MOR_MOSCXTST_Pos) /**< \brief (CKGR_MOR) Main Crystal Oscillator Start-up Time */ +#define CKGR_MOR_MOSCXTST(value) ((CKGR_MOR_MOSCXTST_Msk & ((value) << CKGR_MOR_MOSCXTST_Pos))) +#define CKGR_MOR_KEY_Pos 16 +#define CKGR_MOR_KEY_Msk (0xffu << CKGR_MOR_KEY_Pos) /**< \brief (CKGR_MOR) Password */ +#define CKGR_MOR_KEY(value) ((CKGR_MOR_KEY_Msk & ((value) << CKGR_MOR_KEY_Pos))) +#define CKGR_MOR_MOSCSEL (0x1u << 24) /**< \brief (CKGR_MOR) Main Oscillator Selection */ +#define CKGR_MOR_CFDEN (0x1u << 25) /**< \brief (CKGR_MOR) Clock Failure Detector Enable */ +/* -------- CKGR_MCFR : (PMC Offset: 0x0024) Main Clock Frequency Register -------- */ +#define CKGR_MCFR_MAINF_Pos 0 +#define CKGR_MCFR_MAINF_Msk (0xffffu << CKGR_MCFR_MAINF_Pos) /**< \brief (CKGR_MCFR) Main Clock Frequency */ +#define CKGR_MCFR_MAINFRDY (0x1u << 16) /**< \brief (CKGR_MCFR) Main Clock Ready */ +/* -------- CKGR_PLLAR : (PMC Offset: 0x0028) PLLA Register -------- */ +#define CKGR_PLLAR_DIVA_Pos 0 +#define CKGR_PLLAR_DIVA_Msk (0xffu << CKGR_PLLAR_DIVA_Pos) /**< \brief (CKGR_PLLAR) Divider */ +#define CKGR_PLLAR_DIVA(value) ((CKGR_PLLAR_DIVA_Msk & ((value) << CKGR_PLLAR_DIVA_Pos))) +#define CKGR_PLLAR_PLLACOUNT_Pos 8 +#define CKGR_PLLAR_PLLACOUNT_Msk (0x3fu << CKGR_PLLAR_PLLACOUNT_Pos) /**< \brief (CKGR_PLLAR) PLLA Counter */ +#define CKGR_PLLAR_PLLACOUNT(value) ((CKGR_PLLAR_PLLACOUNT_Msk & ((value) << CKGR_PLLAR_PLLACOUNT_Pos))) +#define CKGR_PLLAR_MULA_Pos 16 +#define CKGR_PLLAR_MULA_Msk (0x7ffu << CKGR_PLLAR_MULA_Pos) /**< \brief (CKGR_PLLAR) PLLA Multiplier */ +#define CKGR_PLLAR_MULA(value) ((CKGR_PLLAR_MULA_Msk & ((value) << CKGR_PLLAR_MULA_Pos))) +#define CKGR_PLLAR_ONE (0x1u << 29) /**< \brief (CKGR_PLLAR) Must Be Set to 1 */ +/* -------- CKGR_PLLBR : (PMC Offset: 0x002C) PLLB Register -------- */ +#define CKGR_PLLBR_DIVB_Pos 0 +#define CKGR_PLLBR_DIVB_Msk (0xffu << CKGR_PLLBR_DIVB_Pos) /**< \brief (CKGR_PLLBR) Divider */ +#define CKGR_PLLBR_DIVB(value) ((CKGR_PLLBR_DIVB_Msk & ((value) << CKGR_PLLBR_DIVB_Pos))) +#define CKGR_PLLBR_PLLBCOUNT_Pos 8 +#define CKGR_PLLBR_PLLBCOUNT_Msk (0x3fu << CKGR_PLLBR_PLLBCOUNT_Pos) /**< \brief (CKGR_PLLBR) PLLB Counter */ +#define CKGR_PLLBR_PLLBCOUNT(value) ((CKGR_PLLBR_PLLBCOUNT_Msk & ((value) << CKGR_PLLBR_PLLBCOUNT_Pos))) +#define CKGR_PLLBR_MULB_Pos 16 +#define CKGR_PLLBR_MULB_Msk (0x7ffu << CKGR_PLLBR_MULB_Pos) /**< \brief (CKGR_PLLBR) PLLB Multiplier */ +#define CKGR_PLLBR_MULB(value) ((CKGR_PLLBR_MULB_Msk & ((value) << CKGR_PLLBR_MULB_Pos))) +/* -------- PMC_MCKR : (PMC Offset: 0x0030) Master Clock Register -------- */ +#define PMC_MCKR_CSS_Pos 0 +#define PMC_MCKR_CSS_Msk (0x3u << PMC_MCKR_CSS_Pos) /**< \brief (PMC_MCKR) Master Clock Source Selection */ +#define PMC_MCKR_CSS_SLOW_CLK (0x0u << 0) /**< \brief (PMC_MCKR) Slow Clock is selected */ +#define PMC_MCKR_CSS_MAIN_CLK (0x1u << 0) /**< \brief (PMC_MCKR) Main Clock is selected */ +#define PMC_MCKR_CSS_PLLA_CLK (0x2u << 0) /**< \brief (PMC_MCKR) PLLA Clock is selected */ +#define PMC_MCKR_CSS_PLLB_CLK (0x3u << 0) /**< \brief (PMC_MCKR) PLLBClock is selected */ +#define PMC_MCKR_PRES_Pos 4 +#define PMC_MCKR_PRES_Msk (0x7u << PMC_MCKR_PRES_Pos) /**< \brief (PMC_MCKR) Processor Clock Prescaler */ +#define PMC_MCKR_PRES_CLK_1 (0x0u << 4) /**< \brief (PMC_MCKR) Selected clock */ +#define PMC_MCKR_PRES_CLK_2 (0x1u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 2 */ +#define PMC_MCKR_PRES_CLK_4 (0x2u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 4 */ +#define PMC_MCKR_PRES_CLK_8 (0x3u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 8 */ +#define PMC_MCKR_PRES_CLK_16 (0x4u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 16 */ +#define PMC_MCKR_PRES_CLK_32 (0x5u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 32 */ +#define PMC_MCKR_PRES_CLK_64 (0x6u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 64 */ +#define PMC_MCKR_PRES_CLK_3 (0x7u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 3 */ +#define PMC_MCKR_PLLADIV2 (0x1u << 12) /**< \brief (PMC_MCKR) PLLA Divisor by 2 */ +#define PMC_MCKR_PLLBDIV2 (0x1u << 13) /**< \brief (PMC_MCKR) PLLB Divisor by 2 */ +/* -------- PMC_USB : (PMC Offset: 0x0038) USB Clock Register -------- */ +#define PMC_USB_USBS (0x1u << 0) /**< \brief (PMC_USB) USB Input Clock Selection */ +#define PMC_USB_USBDIV_Pos 8 +#define PMC_USB_USBDIV_Msk (0xfu << PMC_USB_USBDIV_Pos) /**< \brief (PMC_USB) Divider for USB Clock. */ +#define PMC_USB_USBDIV(value) ((PMC_USB_USBDIV_Msk & ((value) << PMC_USB_USBDIV_Pos))) +/* -------- PMC_PCK[3] : (PMC Offset: 0x0040) Programmable Clock 0 Register -------- */ +#define PMC_PCK_CSS_Pos 0 +#define PMC_PCK_CSS_Msk (0x7u << PMC_PCK_CSS_Pos) /**< \brief (PMC_PCK[3]) Master Clock Source Selection */ +#define PMC_PCK_CSS_SLOW_CLK (0x0u << 0) /**< \brief (PMC_PCK[3]) Slow Clock is selected */ +#define PMC_PCK_CSS_MAIN_CLK (0x1u << 0) /**< \brief (PMC_PCK[3]) Main Clock is selected */ +#define PMC_PCK_CSS_PLLA_CLK (0x2u << 0) /**< \brief (PMC_PCK[3]) PLLA Clock is selected */ +#define PMC_PCK_CSS_PLLB_CLK (0x3u << 0) /**< \brief (PMC_PCK[3]) PLLB Clock is selected */ +#define PMC_PCK_CSS_MCK (0x4u << 0) /**< \brief (PMC_PCK[3]) Master Clock is selected */ +#define PMC_PCK_PRES_Pos 4 +#define PMC_PCK_PRES_Msk (0x7u << PMC_PCK_PRES_Pos) /**< \brief (PMC_PCK[3]) Programmable Clock Prescaler */ +#define PMC_PCK_PRES(value) ((PMC_PCK_PRES_Msk & ((value) << PMC_PCK_PRES_Pos))) +#define PMC_PCK_PRES_CLK_1 (0x0u << 4) /**< \brief (PMC_PCK[3]) Selected clock */ +#define PMC_PCK_PRES_CLK_2 (0x1u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 2 */ +#define PMC_PCK_PRES_CLK_4 (0x2u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 4 */ +#define PMC_PCK_PRES_CLK_8 (0x3u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 8 */ +#define PMC_PCK_PRES_CLK_16 (0x4u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 16 */ +#define PMC_PCK_PRES_CLK_32 (0x5u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 32 */ +#define PMC_PCK_PRES_CLK_64 (0x6u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 64 */ +/* -------- PMC_IER : (PMC Offset: 0x0060) Interrupt Enable Register -------- */ +#define PMC_IER_MOSCXTS (0x1u << 0) /**< \brief (PMC_IER) Main Crystal Oscillator Status Interrupt Enable */ +#define PMC_IER_LOCKA (0x1u << 1) /**< \brief (PMC_IER) PLLA Lock Interrupt Enable */ +#define PMC_IER_LOCKB (0x1u << 2) /**< \brief (PMC_IER) PLLB Lock Interrupt Enable */ +#define PMC_IER_MCKRDY (0x1u << 3) /**< \brief (PMC_IER) Master Clock Ready Interrupt Enable */ +#define PMC_IER_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IER) Programmable Clock Ready 0 Interrupt Enable */ +#define PMC_IER_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IER) Programmable Clock Ready 1 Interrupt Enable */ +#define PMC_IER_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IER) Programmable Clock Ready 2 Interrupt Enable */ +#define PMC_IER_MOSCSELS (0x1u << 16) /**< \brief (PMC_IER) Main Oscillator Selection Status Interrupt Enable */ +#define PMC_IER_MOSCRCS (0x1u << 17) /**< \brief (PMC_IER) Main On-Chip RC Status Interrupt Enable */ +#define PMC_IER_CFDEV (0x1u << 18) /**< \brief (PMC_IER) Clock Failure Detector Event Interrupt Enable */ +/* -------- PMC_IDR : (PMC Offset: 0x0064) Interrupt Disable Register -------- */ +#define PMC_IDR_MOSCXTS (0x1u << 0) /**< \brief (PMC_IDR) Main Crystal Oscillator Status Interrupt Disable */ +#define PMC_IDR_LOCKA (0x1u << 1) /**< \brief (PMC_IDR) PLLA Lock Interrupt Disable */ +#define PMC_IDR_LOCKB (0x1u << 2) /**< \brief (PMC_IDR) PLLB Lock Interrupt Disable */ +#define PMC_IDR_MCKRDY (0x1u << 3) /**< \brief (PMC_IDR) Master Clock Ready Interrupt Disable */ +#define PMC_IDR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IDR) Programmable Clock Ready 0 Interrupt Disable */ +#define PMC_IDR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IDR) Programmable Clock Ready 1 Interrupt Disable */ +#define PMC_IDR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IDR) Programmable Clock Ready 2 Interrupt Disable */ +#define PMC_IDR_MOSCSELS (0x1u << 16) /**< \brief (PMC_IDR) Main Oscillator Selection Status Interrupt Disable */ +#define PMC_IDR_MOSCRCS (0x1u << 17) /**< \brief (PMC_IDR) Main On-Chip RC Status Interrupt Disable */ +#define PMC_IDR_CFDEV (0x1u << 18) /**< \brief (PMC_IDR) Clock Failure Detector Event Interrupt Disable */ +/* -------- PMC_SR : (PMC Offset: 0x0068) Status Register -------- */ +#define PMC_SR_MOSCXTS (0x1u << 0) /**< \brief (PMC_SR) Main XTAL Oscillator Status */ +#define PMC_SR_LOCKA (0x1u << 1) /**< \brief (PMC_SR) PLLA Lock Status */ +#define PMC_SR_LOCKB (0x1u << 2) /**< \brief (PMC_SR) PLLB Lock Status */ +#define PMC_SR_MCKRDY (0x1u << 3) /**< \brief (PMC_SR) Master Clock Status */ +#define PMC_SR_OSCSELS (0x1u << 7) /**< \brief (PMC_SR) Slow Clock Oscillator Selection */ +#define PMC_SR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_MOSCSELS (0x1u << 16) /**< \brief (PMC_SR) Main Oscillator Selection Status */ +#define PMC_SR_MOSCRCS (0x1u << 17) /**< \brief (PMC_SR) Main On-Chip RC Oscillator Status */ +#define PMC_SR_CFDEV (0x1u << 18) /**< \brief (PMC_SR) Clock Failure Detector Event */ +#define PMC_SR_CFDS (0x1u << 19) /**< \brief (PMC_SR) Clock Failure Detector Status */ +#define PMC_SR_FOS (0x1u << 20) /**< \brief (PMC_SR) Clock Failure Detector Fault Output Status */ +/* -------- PMC_IMR : (PMC Offset: 0x006C) Interrupt Mask Register -------- */ +#define PMC_IMR_MOSCXTS (0x1u << 0) /**< \brief (PMC_IMR) Main Crystal Oscillator Status Interrupt Mask */ +#define PMC_IMR_LOCKA (0x1u << 1) /**< \brief (PMC_IMR) PLLA Lock Interrupt Mask */ +#define PMC_IMR_LOCKB (0x1u << 2) /**< \brief (PMC_IMR) PLLB Lock Interrupt Mask */ +#define PMC_IMR_MCKRDY (0x1u << 3) /**< \brief (PMC_IMR) Master Clock Ready Interrupt Mask */ +#define PMC_IMR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IMR) Programmable Clock Ready 0 Interrupt Mask */ +#define PMC_IMR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IMR) Programmable Clock Ready 1 Interrupt Mask */ +#define PMC_IMR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IMR) Programmable Clock Ready 2 Interrupt Mask */ +#define PMC_IMR_MOSCSELS (0x1u << 16) /**< \brief (PMC_IMR) Main Oscillator Selection Status Interrupt Mask */ +#define PMC_IMR_MOSCRCS (0x1u << 17) /**< \brief (PMC_IMR) Main On-Chip RC Status Interrupt Mask */ +#define PMC_IMR_CFDEV (0x1u << 18) /**< \brief (PMC_IMR) Clock Failure Detector Event Interrupt Mask */ +/* -------- PMC_FSMR : (PMC Offset: 0x0070) Fast Startup Mode Register -------- */ +#define PMC_FSMR_FSTT0 (0x1u << 0) /**< \brief (PMC_FSMR) Fast Startup Input Enable 0 */ +#define PMC_FSMR_FSTT1 (0x1u << 1) /**< \brief (PMC_FSMR) Fast Startup Input Enable 1 */ +#define PMC_FSMR_FSTT2 (0x1u << 2) /**< \brief (PMC_FSMR) Fast Startup Input Enable 2 */ +#define PMC_FSMR_FSTT3 (0x1u << 3) /**< \brief (PMC_FSMR) Fast Startup Input Enable 3 */ +#define PMC_FSMR_FSTT4 (0x1u << 4) /**< \brief (PMC_FSMR) Fast Startup Input Enable 4 */ +#define PMC_FSMR_FSTT5 (0x1u << 5) /**< \brief (PMC_FSMR) Fast Startup Input Enable 5 */ +#define PMC_FSMR_FSTT6 (0x1u << 6) /**< \brief (PMC_FSMR) Fast Startup Input Enable 6 */ +#define PMC_FSMR_FSTT7 (0x1u << 7) /**< \brief (PMC_FSMR) Fast Startup Input Enable 7 */ +#define PMC_FSMR_FSTT8 (0x1u << 8) /**< \brief (PMC_FSMR) Fast Startup Input Enable 8 */ +#define PMC_FSMR_FSTT9 (0x1u << 9) /**< \brief (PMC_FSMR) Fast Startup Input Enable 9 */ +#define PMC_FSMR_FSTT10 (0x1u << 10) /**< \brief (PMC_FSMR) Fast Startup Input Enable 10 */ +#define PMC_FSMR_FSTT11 (0x1u << 11) /**< \brief (PMC_FSMR) Fast Startup Input Enable 11 */ +#define PMC_FSMR_FSTT12 (0x1u << 12) /**< \brief (PMC_FSMR) Fast Startup Input Enable 12 */ +#define PMC_FSMR_FSTT13 (0x1u << 13) /**< \brief (PMC_FSMR) Fast Startup Input Enable 13 */ +#define PMC_FSMR_FSTT14 (0x1u << 14) /**< \brief (PMC_FSMR) Fast Startup Input Enable 14 */ +#define PMC_FSMR_FSTT15 (0x1u << 15) /**< \brief (PMC_FSMR) Fast Startup Input Enable 15 */ +#define PMC_FSMR_RTTAL (0x1u << 16) /**< \brief (PMC_FSMR) RTT Alarm Enable */ +#define PMC_FSMR_RTCAL (0x1u << 17) /**< \brief (PMC_FSMR) RTC Alarm Enable */ +#define PMC_FSMR_USBAL (0x1u << 18) /**< \brief (PMC_FSMR) USB Alarm Enable */ +#define PMC_FSMR_LPM (0x1u << 20) /**< \brief (PMC_FSMR) Low Power Mode */ +/* -------- PMC_FSPR : (PMC Offset: 0x0074) Fast Startup Polarity Register -------- */ +#define PMC_FSPR_FSTP0 (0x1u << 0) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP1 (0x1u << 1) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP2 (0x1u << 2) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP3 (0x1u << 3) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP4 (0x1u << 4) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP5 (0x1u << 5) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP6 (0x1u << 6) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP7 (0x1u << 7) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP8 (0x1u << 8) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP9 (0x1u << 9) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP10 (0x1u << 10) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP11 (0x1u << 11) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP12 (0x1u << 12) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP13 (0x1u << 13) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP14 (0x1u << 14) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP15 (0x1u << 15) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +/* -------- PMC_FOCR : (PMC Offset: 0x0078) Fault Output Clear Register -------- */ +#define PMC_FOCR_FOCLR (0x1u << 0) /**< \brief (PMC_FOCR) Fault Output Clear */ +/* -------- PMC_WPMR : (PMC Offset: 0x00E4) Write Protect Mode Register -------- */ +#define PMC_WPMR_WPEN (0x1u << 0) /**< \brief (PMC_WPMR) Write Protect Enable */ +#define PMC_WPMR_WPKEY_Pos 8 +#define PMC_WPMR_WPKEY_Msk (0xffffffu << PMC_WPMR_WPKEY_Pos) /**< \brief (PMC_WPMR) Write Protect KEY */ +#define PMC_WPMR_WPKEY(value) ((PMC_WPMR_WPKEY_Msk & ((value) << PMC_WPMR_WPKEY_Pos))) +/* -------- PMC_WPSR : (PMC Offset: 0x00E8) Write Protect Status Register -------- */ +#define PMC_WPSR_WPVS (0x1u << 0) /**< \brief (PMC_WPSR) Write Protect Violation Status */ +#define PMC_WPSR_WPVSRC_Pos 8 +#define PMC_WPSR_WPVSRC_Msk (0xffffu << PMC_WPSR_WPVSRC_Pos) /**< \brief (PMC_WPSR) Write Protect Violation Source */ +/* -------- PMC_PCER1 : (PMC Offset: 0x0100) Peripheral Clock Enable Register 1 -------- */ +#define PMC_PCER1_PID32 (0x1u << 0) /**< \brief (PMC_PCER1) Peripheral Clock 32 Enable */ +#define PMC_PCER1_PID33 (0x1u << 1) /**< \brief (PMC_PCER1) Peripheral Clock 33 Enable */ +#define PMC_PCER1_PID34 (0x1u << 2) /**< \brief (PMC_PCER1) Peripheral Clock 34 Enable */ +#define PMC_PCER1_PID35 (0x1u << 3) /**< \brief (PMC_PCER1) Peripheral Clock 35 Enable */ +#define PMC_PCER1_PID36 (0x1u << 4) /**< \brief (PMC_PCER1) Peripheral Clock 36 Enable */ +#define PMC_PCER1_PID37 (0x1u << 5) /**< \brief (PMC_PCER1) Peripheral Clock 37 Enable */ +#define PMC_PCER1_PID38 (0x1u << 6) /**< \brief (PMC_PCER1) Peripheral Clock 38 Enable */ +#define PMC_PCER1_PID39 (0x1u << 7) /**< \brief (PMC_PCER1) Peripheral Clock 39 Enable */ +#define PMC_PCER1_PID40 (0x1u << 8) /**< \brief (PMC_PCER1) Peripheral Clock 40 Enable */ +#define PMC_PCER1_PID41 (0x1u << 9) /**< \brief (PMC_PCER1) Peripheral Clock 41 Enable */ +#define PMC_PCER1_PID42 (0x1u << 10) /**< \brief (PMC_PCER1) Peripheral Clock 42 Enable */ +#define PMC_PCER1_PID43 (0x1u << 11) /**< \brief (PMC_PCER1) Peripheral Clock 43 Enable */ +#define PMC_PCER1_PID44 (0x1u << 12) /**< \brief (PMC_PCER1) Peripheral Clock 44 Enable */ +#define PMC_PCER1_PID45 (0x1u << 13) /**< \brief (PMC_PCER1) Peripheral Clock 45 Enable */ +#define PMC_PCER1_PID46 (0x1u << 14) /**< \brief (PMC_PCER1) Peripheral Clock 46 Enable */ +#define PMC_PCER1_PID47 (0x1u << 15) /**< \brief (PMC_PCER1) Peripheral Clock 47 Enable */ +#define PMC_PCER1_PID48 (0x1u << 16) /**< \brief (PMC_PCER1) Peripheral Clock 48 Enable */ +#define PMC_PCER1_PID49 (0x1u << 17) /**< \brief (PMC_PCER1) Peripheral Clock 49 Enable */ +#define PMC_PCER1_PID50 (0x1u << 18) /**< \brief (PMC_PCER1) Peripheral Clock 50 Enable */ +#define PMC_PCER1_PID51 (0x1u << 19) /**< \brief (PMC_PCER1) Peripheral Clock 51 Enable */ +#define PMC_PCER1_PID52 (0x1u << 20) /**< \brief (PMC_PCER1) Peripheral Clock 52 Enable */ +#define PMC_PCER1_PID53 (0x1u << 21) /**< \brief (PMC_PCER1) Peripheral Clock 53 Enable */ +#define PMC_PCER1_PID54 (0x1u << 22) /**< \brief (PMC_PCER1) Peripheral Clock 54 Enable */ +#define PMC_PCER1_PID55 (0x1u << 23) /**< \brief (PMC_PCER1) Peripheral Clock 55 Enable */ +#define PMC_PCER1_PID56 (0x1u << 24) /**< \brief (PMC_PCER1) Peripheral Clock 56 Enable */ +#define PMC_PCER1_PID57 (0x1u << 25) /**< \brief (PMC_PCER1) Peripheral Clock 57 Enable */ +#define PMC_PCER1_PID58 (0x1u << 26) /**< \brief (PMC_PCER1) Peripheral Clock 58 Enable */ +#define PMC_PCER1_PID59 (0x1u << 27) /**< \brief (PMC_PCER1) Peripheral Clock 59 Enable */ +#define PMC_PCER1_PID60 (0x1u << 28) /**< \brief (PMC_PCER1) Peripheral Clock 60 Enable */ +#define PMC_PCER1_PID61 (0x1u << 29) /**< \brief (PMC_PCER1) Peripheral Clock 61 Enable */ +#define PMC_PCER1_PID62 (0x1u << 30) /**< \brief (PMC_PCER1) Peripheral Clock 62 Enable */ +#define PMC_PCER1_PID63 (0x1u << 31) /**< \brief (PMC_PCER1) Peripheral Clock 63 Enable */ +/* -------- PMC_PCDR1 : (PMC Offset: 0x0104) Peripheral Clock Disable Register 1 -------- */ +#define PMC_PCDR1_PID32 (0x1u << 0) /**< \brief (PMC_PCDR1) Peripheral Clock 32 Disable */ +#define PMC_PCDR1_PID33 (0x1u << 1) /**< \brief (PMC_PCDR1) Peripheral Clock 33 Disable */ +#define PMC_PCDR1_PID34 (0x1u << 2) /**< \brief (PMC_PCDR1) Peripheral Clock 34 Disable */ +#define PMC_PCDR1_PID35 (0x1u << 3) /**< \brief (PMC_PCDR1) Peripheral Clock 35 Disable */ +#define PMC_PCDR1_PID36 (0x1u << 4) /**< \brief (PMC_PCDR1) Peripheral Clock 36 Disable */ +#define PMC_PCDR1_PID37 (0x1u << 5) /**< \brief (PMC_PCDR1) Peripheral Clock 37 Disable */ +#define PMC_PCDR1_PID38 (0x1u << 6) /**< \brief (PMC_PCDR1) Peripheral Clock 38 Disable */ +#define PMC_PCDR1_PID39 (0x1u << 7) /**< \brief (PMC_PCDR1) Peripheral Clock 39 Disable */ +#define PMC_PCDR1_PID40 (0x1u << 8) /**< \brief (PMC_PCDR1) Peripheral Clock 40 Disable */ +#define PMC_PCDR1_PID41 (0x1u << 9) /**< \brief (PMC_PCDR1) Peripheral Clock 41 Disable */ +#define PMC_PCDR1_PID42 (0x1u << 10) /**< \brief (PMC_PCDR1) Peripheral Clock 42 Disable */ +#define PMC_PCDR1_PID43 (0x1u << 11) /**< \brief (PMC_PCDR1) Peripheral Clock 43 Disable */ +#define PMC_PCDR1_PID44 (0x1u << 12) /**< \brief (PMC_PCDR1) Peripheral Clock 44 Disable */ +#define PMC_PCDR1_PID45 (0x1u << 13) /**< \brief (PMC_PCDR1) Peripheral Clock 45 Disable */ +#define PMC_PCDR1_PID46 (0x1u << 14) /**< \brief (PMC_PCDR1) Peripheral Clock 46 Disable */ +#define PMC_PCDR1_PID47 (0x1u << 15) /**< \brief (PMC_PCDR1) Peripheral Clock 47 Disable */ +#define PMC_PCDR1_PID48 (0x1u << 16) /**< \brief (PMC_PCDR1) Peripheral Clock 48 Disable */ +#define PMC_PCDR1_PID49 (0x1u << 17) /**< \brief (PMC_PCDR1) Peripheral Clock 49 Disable */ +#define PMC_PCDR1_PID50 (0x1u << 18) /**< \brief (PMC_PCDR1) Peripheral Clock 50 Disable */ +#define PMC_PCDR1_PID51 (0x1u << 19) /**< \brief (PMC_PCDR1) Peripheral Clock 51 Disable */ +#define PMC_PCDR1_PID52 (0x1u << 20) /**< \brief (PMC_PCDR1) Peripheral Clock 52 Disable */ +#define PMC_PCDR1_PID53 (0x1u << 21) /**< \brief (PMC_PCDR1) Peripheral Clock 53 Disable */ +#define PMC_PCDR1_PID54 (0x1u << 22) /**< \brief (PMC_PCDR1) Peripheral Clock 54 Disable */ +#define PMC_PCDR1_PID55 (0x1u << 23) /**< \brief (PMC_PCDR1) Peripheral Clock 55 Disable */ +#define PMC_PCDR1_PID56 (0x1u << 24) /**< \brief (PMC_PCDR1) Peripheral Clock 56 Disable */ +#define PMC_PCDR1_PID57 (0x1u << 25) /**< \brief (PMC_PCDR1) Peripheral Clock 57 Disable */ +#define PMC_PCDR1_PID58 (0x1u << 26) /**< \brief (PMC_PCDR1) Peripheral Clock 58 Disable */ +#define PMC_PCDR1_PID59 (0x1u << 27) /**< \brief (PMC_PCDR1) Peripheral Clock 59 Disable */ +#define PMC_PCDR1_PID60 (0x1u << 28) /**< \brief (PMC_PCDR1) Peripheral Clock 60 Disable */ +#define PMC_PCDR1_PID61 (0x1u << 29) /**< \brief (PMC_PCDR1) Peripheral Clock 61 Disable */ +#define PMC_PCDR1_PID62 (0x1u << 30) /**< \brief (PMC_PCDR1) Peripheral Clock 62 Disable */ +#define PMC_PCDR1_PID63 (0x1u << 31) /**< \brief (PMC_PCDR1) Peripheral Clock 63 Disable */ +/* -------- PMC_PCSR1 : (PMC Offset: 0x0108) Peripheral Clock Status Register 1 -------- */ +#define PMC_PCSR1_PID32 (0x1u << 0) /**< \brief (PMC_PCSR1) Peripheral Clock 32 Status */ +#define PMC_PCSR1_PID33 (0x1u << 1) /**< \brief (PMC_PCSR1) Peripheral Clock 33 Status */ +#define PMC_PCSR1_PID34 (0x1u << 2) /**< \brief (PMC_PCSR1) Peripheral Clock 34 Status */ +#define PMC_PCSR1_PID35 (0x1u << 3) /**< \brief (PMC_PCSR1) Peripheral Clock 35 Status */ +#define PMC_PCSR1_PID36 (0x1u << 4) /**< \brief (PMC_PCSR1) Peripheral Clock 36 Status */ +#define PMC_PCSR1_PID37 (0x1u << 5) /**< \brief (PMC_PCSR1) Peripheral Clock 37 Status */ +#define PMC_PCSR1_PID38 (0x1u << 6) /**< \brief (PMC_PCSR1) Peripheral Clock 38 Status */ +#define PMC_PCSR1_PID39 (0x1u << 7) /**< \brief (PMC_PCSR1) Peripheral Clock 39 Status */ +#define PMC_PCSR1_PID40 (0x1u << 8) /**< \brief (PMC_PCSR1) Peripheral Clock 40 Status */ +#define PMC_PCSR1_PID41 (0x1u << 9) /**< \brief (PMC_PCSR1) Peripheral Clock 41 Status */ +#define PMC_PCSR1_PID42 (0x1u << 10) /**< \brief (PMC_PCSR1) Peripheral Clock 42 Status */ +#define PMC_PCSR1_PID43 (0x1u << 11) /**< \brief (PMC_PCSR1) Peripheral Clock 43 Status */ +#define PMC_PCSR1_PID44 (0x1u << 12) /**< \brief (PMC_PCSR1) Peripheral Clock 44 Status */ +#define PMC_PCSR1_PID45 (0x1u << 13) /**< \brief (PMC_PCSR1) Peripheral Clock 45 Status */ +#define PMC_PCSR1_PID46 (0x1u << 14) /**< \brief (PMC_PCSR1) Peripheral Clock 46 Status */ +#define PMC_PCSR1_PID47 (0x1u << 15) /**< \brief (PMC_PCSR1) Peripheral Clock 47 Status */ +#define PMC_PCSR1_PID48 (0x1u << 16) /**< \brief (PMC_PCSR1) Peripheral Clock 48 Status */ +#define PMC_PCSR1_PID49 (0x1u << 17) /**< \brief (PMC_PCSR1) Peripheral Clock 49 Status */ +#define PMC_PCSR1_PID50 (0x1u << 18) /**< \brief (PMC_PCSR1) Peripheral Clock 50 Status */ +#define PMC_PCSR1_PID51 (0x1u << 19) /**< \brief (PMC_PCSR1) Peripheral Clock 51 Status */ +#define PMC_PCSR1_PID52 (0x1u << 20) /**< \brief (PMC_PCSR1) Peripheral Clock 52 Status */ +#define PMC_PCSR1_PID53 (0x1u << 21) /**< \brief (PMC_PCSR1) Peripheral Clock 53 Status */ +#define PMC_PCSR1_PID54 (0x1u << 22) /**< \brief (PMC_PCSR1) Peripheral Clock 54 Status */ +#define PMC_PCSR1_PID55 (0x1u << 23) /**< \brief (PMC_PCSR1) Peripheral Clock 55 Status */ +#define PMC_PCSR1_PID56 (0x1u << 24) /**< \brief (PMC_PCSR1) Peripheral Clock 56 Status */ +#define PMC_PCSR1_PID57 (0x1u << 25) /**< \brief (PMC_PCSR1) Peripheral Clock 57 Status */ +#define PMC_PCSR1_PID58 (0x1u << 26) /**< \brief (PMC_PCSR1) Peripheral Clock 58 Status */ +#define PMC_PCSR1_PID59 (0x1u << 27) /**< \brief (PMC_PCSR1) Peripheral Clock 59 Status */ +#define PMC_PCSR1_PID60 (0x1u << 28) /**< \brief (PMC_PCSR1) Peripheral Clock 60 Status */ +#define PMC_PCSR1_PID61 (0x1u << 29) /**< \brief (PMC_PCSR1) Peripheral Clock 61 Status */ +#define PMC_PCSR1_PID62 (0x1u << 30) /**< \brief (PMC_PCSR1) Peripheral Clock 62 Status */ +#define PMC_PCSR1_PID63 (0x1u << 31) /**< \brief (PMC_PCSR1) Peripheral Clock 63 Status */ +/* -------- PMC_OCR : (PMC Offset: 0x0110) Oscillator Calibration Register -------- */ +#define PMC_OCR_CAL4_Pos 0 +#define PMC_OCR_CAL4_Msk (0x7fu << PMC_OCR_CAL4_Pos) /**< \brief (PMC_OCR) RC Oscillator Calibration bits for 4 Mhz */ +#define PMC_OCR_CAL4(value) ((PMC_OCR_CAL4_Msk & ((value) << PMC_OCR_CAL4_Pos))) +#define PMC_OCR_SEL4 (0x1u << 7) /**< \brief (PMC_OCR) Selection of RC Oscillator Calibration bits for 4 Mhz */ +#define PMC_OCR_CAL8_Pos 8 +#define PMC_OCR_CAL8_Msk (0x7fu << PMC_OCR_CAL8_Pos) /**< \brief (PMC_OCR) RC Oscillator Calibration bits for 8 Mhz */ +#define PMC_OCR_CAL8(value) ((PMC_OCR_CAL8_Msk & ((value) << PMC_OCR_CAL8_Pos))) +#define PMC_OCR_SEL8 (0x1u << 15) /**< \brief (PMC_OCR) Selection of RC Oscillator Calibration bits for 8 Mhz */ +#define PMC_OCR_CAL12_Pos 16 +#define PMC_OCR_CAL12_Msk (0x7fu << PMC_OCR_CAL12_Pos) /**< \brief (PMC_OCR) RC Oscillator Calibration bits for 12 Mhz */ +#define PMC_OCR_CAL12(value) ((PMC_OCR_CAL12_Msk & ((value) << PMC_OCR_CAL12_Pos))) +#define PMC_OCR_SEL12 (0x1u << 23) /**< \brief (PMC_OCR) Selection of RC Oscillator Calibration bits for 12 Mhz */ + +/*@}*/ + + +#endif /* _SAM3S_PMC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_pwm.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_pwm.h new file mode 100644 index 000000000..788c14ab0 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_pwm.h @@ -0,0 +1,564 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_PWM_COMPONENT_ +#define _SAM3S_PWM_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Pulse Width Modulation Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S_PWM Pulse Width Modulation Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief PwmCh_num hardware registers */ +typedef struct { + RwReg PWM_CMR; /**< \brief (PwmCh_num Offset: 0x0) PWM Channel Mode Register */ + RwReg PWM_CDTY; /**< \brief (PwmCh_num Offset: 0x4) PWM Channel Duty Cycle Register */ + RwReg PWM_CDTYUPD; /**< \brief (PwmCh_num Offset: 0x8) PWM Channel Duty Cycle Update Register */ + RwReg PWM_CPRD; /**< \brief (PwmCh_num Offset: 0xC) PWM Channel Period Register */ + RwReg PWM_CPRDUPD; /**< \brief (PwmCh_num Offset: 0x10) PWM Channel Period Update Register */ + RwReg PWM_CCNT; /**< \brief (PwmCh_num Offset: 0x14) PWM Channel Counter Register */ + RwReg PWM_DT; /**< \brief (PwmCh_num Offset: 0x18) PWM Channel Dead Time Register */ + RwReg PWM_DTUPD; /**< \brief (PwmCh_num Offset: 0x1C) PWM Channel Dead Time Update Register */ +} PwmCh_num; +/** \brief PwmCmp hardware registers */ +typedef struct { + RwReg PWM_CMPV; /**< \brief (PwmCmp Offset: 0x0) PWM Comparison 0 Value Register */ + RwReg PWM_CMPVUPD; /**< \brief (PwmCmp Offset: 0x4) PWM Comparison 0 Value Update Register */ + RwReg PWM_CMPM; /**< \brief (PwmCmp Offset: 0x8) PWM Comparison 0 Mode Register */ + RwReg PWM_CMPMUPD; /**< \brief (PwmCmp Offset: 0xC) PWM Comparison 0 Mode Update Register */ +} PwmCmp; +/** \brief Pwm hardware registers */ +#define PWMCMP_NUMBER 8 +#define PWMCH_NUM_NUMBER 4 +typedef struct { + RwReg PWM_CLK; /**< \brief (Pwm Offset: 0x00) PWM Clock Register */ + WoReg PWM_ENA; /**< \brief (Pwm Offset: 0x04) PWM Enable Register */ + WoReg PWM_DIS; /**< \brief (Pwm Offset: 0x08) PWM Disable Register */ + RoReg PWM_SR; /**< \brief (Pwm Offset: 0x0C) PWM Status Register */ + WoReg PWM_IER1; /**< \brief (Pwm Offset: 0x10) PWM Interrupt Enable Register 1 */ + WoReg PWM_IDR1; /**< \brief (Pwm Offset: 0x14) PWM Interrupt Disable Register 1 */ + RoReg PWM_IMR1; /**< \brief (Pwm Offset: 0x18) PWM Interrupt Mask Register 1 */ + RoReg PWM_ISR1; /**< \brief (Pwm Offset: 0x1C) PWM Interrupt Status Register 1 */ + RwReg PWM_SCM; /**< \brief (Pwm Offset: 0x20) PWM Sync Channels Mode Register */ + RoReg Reserved1[1]; + RwReg PWM_SCUC; /**< \brief (Pwm Offset: 0x28) PWM Sync Channels Update Control Register */ + RwReg PWM_SCUP; /**< \brief (Pwm Offset: 0x2C) PWM Sync Channels Update Period Register */ + WoReg PWM_SCUPUPD; /**< \brief (Pwm Offset: 0x30) PWM Sync Channels Update Period Update Register */ + WoReg PWM_IER2; /**< \brief (Pwm Offset: 0x34) PWM Interrupt Enable Register 2 */ + WoReg PWM_IDR2; /**< \brief (Pwm Offset: 0x38) PWM Interrupt Disable Register 2 */ + RoReg PWM_IMR2; /**< \brief (Pwm Offset: 0x3C) PWM Interrupt Mask Register 2 */ + RoReg PWM_ISR2; /**< \brief (Pwm Offset: 0x40) PWM Interrupt Status Register 2 */ + RwReg PWM_OOV; /**< \brief (Pwm Offset: 0x44) PWM Output Override Value Register */ + RwReg PWM_OS; /**< \brief (Pwm Offset: 0x48) PWM Output Selection Register */ + WoReg PWM_OSS; /**< \brief (Pwm Offset: 0x4C) PWM Output Selection Set Register */ + WoReg PWM_OSC; /**< \brief (Pwm Offset: 0x50) PWM Output Selection Clear Register */ + WoReg PWM_OSSUPD; /**< \brief (Pwm Offset: 0x54) PWM Output Selection Set Update Register */ + WoReg PWM_OSCUPD; /**< \brief (Pwm Offset: 0x58) PWM Output Selection Clear Update Register */ + RwReg PWM_FMR; /**< \brief (Pwm Offset: 0x5C) PWM Fault Mode Register */ + RoReg PWM_FSR; /**< \brief (Pwm Offset: 0x60) PWM Fault Status Register */ + WoReg PWM_FCR; /**< \brief (Pwm Offset: 0x64) PWM Fault Clear Register */ + RwReg PWM_FPV; /**< \brief (Pwm Offset: 0x68) PWM Fault Protection Value Register */ + RwReg PWM_FPE; /**< \brief (Pwm Offset: 0x6C) PWM Fault Protection Enable Register */ + RoReg Reserved2[3]; + RwReg PWM_ELMR[2]; /**< \brief (Pwm Offset: 0x7C) PWM Event Line 0 Mode Register */ + RoReg Reserved3[11]; + RwReg PWM_SMMR; /**< \brief (Pwm Offset: 0xB0) PWM Stepper Motor Mode Register */ + RoReg Reserved4[12]; + WoReg PWM_WPCR; /**< \brief (Pwm Offset: 0xE4) PWM Write Protect Control Register */ + RoReg PWM_WPSR; /**< \brief (Pwm Offset: 0xE8) PWM Write Protect Status Register */ + RoReg Reserved5[5]; + RwReg PWM_RPR; /**< \brief (Pwm Offset: 0x100) Receive Pointer Register */ + RwReg PWM_RCR; /**< \brief (Pwm Offset: 0x104) Receive Counter Register */ + RwReg PWM_TPR; /**< \brief (Pwm Offset: 0x108) Transmit Pointer Register */ + RwReg PWM_TCR; /**< \brief (Pwm Offset: 0x10C) Transmit Counter Register */ + RwReg PWM_RNPR; /**< \brief (Pwm Offset: 0x110) Receive Next Pointer Register */ + RwReg PWM_RNCR; /**< \brief (Pwm Offset: 0x114) Receive Next Counter Register */ + RwReg PWM_TNPR; /**< \brief (Pwm Offset: 0x118) Transmit Next Pointer Register */ + RwReg PWM_TNCR; /**< \brief (Pwm Offset: 0x11C) Transmit Next Counter Register */ + WoReg PWM_PTCR; /**< \brief (Pwm Offset: 0x120) Transfer Control Register */ + RoReg PWM_PTSR; /**< \brief (Pwm Offset: 0x124) Transfer Status Register */ + RoReg Reserved6[2]; + PwmCmp PWM_CMP[PWMCMP_NUMBER]; /**< \brief (Pwm Offset: 0x130) 0 .. 7 */ + RoReg Reserved7[20]; + PwmCh_num PWM_CH_NUM[PWMCH_NUM_NUMBER]; /**< \brief (Pwm Offset: 0x200) ch_num = 0 .. 3 */ +} Pwm; +#endif /* __ASSEMBLY__ */ +/* -------- PWM_CLK : (PWM Offset: 0x00) PWM Clock Register -------- */ +#define PWM_CLK_DIVA_Pos 0 +#define PWM_CLK_DIVA_Msk (0xffu << PWM_CLK_DIVA_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Divide Factor */ +#define PWM_CLK_DIVA(value) ((PWM_CLK_DIVA_Msk & ((value) << PWM_CLK_DIVA_Pos))) +#define PWM_CLK_PREA_Pos 8 +#define PWM_CLK_PREA_Msk (0xfu << PWM_CLK_PREA_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Source Clock Selection */ +#define PWM_CLK_PREA(value) ((PWM_CLK_PREA_Msk & ((value) << PWM_CLK_PREA_Pos))) +#define PWM_CLK_DIVB_Pos 16 +#define PWM_CLK_DIVB_Msk (0xffu << PWM_CLK_DIVB_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Divide Factor */ +#define PWM_CLK_DIVB(value) ((PWM_CLK_DIVB_Msk & ((value) << PWM_CLK_DIVB_Pos))) +#define PWM_CLK_PREB_Pos 24 +#define PWM_CLK_PREB_Msk (0xfu << PWM_CLK_PREB_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Source Clock Selection */ +#define PWM_CLK_PREB(value) ((PWM_CLK_PREB_Msk & ((value) << PWM_CLK_PREB_Pos))) +/* -------- PWM_ENA : (PWM Offset: 0x04) PWM Enable Register -------- */ +#define PWM_ENA_CHID0 (0x1u << 0) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID1 (0x1u << 1) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID2 (0x1u << 2) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID3 (0x1u << 3) /**< \brief (PWM_ENA) Channel ID */ +/* -------- PWM_DIS : (PWM Offset: 0x08) PWM Disable Register -------- */ +#define PWM_DIS_CHID0 (0x1u << 0) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID1 (0x1u << 1) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID2 (0x1u << 2) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID3 (0x1u << 3) /**< \brief (PWM_DIS) Channel ID */ +/* -------- PWM_SR : (PWM Offset: 0x0C) PWM Status Register -------- */ +#define PWM_SR_CHID0 (0x1u << 0) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID1 (0x1u << 1) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID2 (0x1u << 2) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID3 (0x1u << 3) /**< \brief (PWM_SR) Channel ID */ +/* -------- PWM_IER1 : (PWM Offset: 0x10) PWM Interrupt Enable Register 1 -------- */ +#define PWM_IER1_CHID0 (0x1u << 0) /**< \brief (PWM_IER1) Counter Event on Channel 0 Interrupt Enable */ +#define PWM_IER1_CHID1 (0x1u << 1) /**< \brief (PWM_IER1) Counter Event on Channel 1 Interrupt Enable */ +#define PWM_IER1_CHID2 (0x1u << 2) /**< \brief (PWM_IER1) Counter Event on Channel 2 Interrupt Enable */ +#define PWM_IER1_CHID3 (0x1u << 3) /**< \brief (PWM_IER1) Counter Event on Channel 3 Interrupt Enable */ +#define PWM_IER1_FCHID0 (0x1u << 16) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 0 Interrupt Enable */ +#define PWM_IER1_FCHID1 (0x1u << 17) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 1 Interrupt Enable */ +#define PWM_IER1_FCHID2 (0x1u << 18) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 2 Interrupt Enable */ +#define PWM_IER1_FCHID3 (0x1u << 19) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 3 Interrupt Enable */ +/* -------- PWM_IDR1 : (PWM Offset: 0x14) PWM Interrupt Disable Register 1 -------- */ +#define PWM_IDR1_CHID0 (0x1u << 0) /**< \brief (PWM_IDR1) Counter Event on Channel 0 Interrupt Disable */ +#define PWM_IDR1_CHID1 (0x1u << 1) /**< \brief (PWM_IDR1) Counter Event on Channel 1 Interrupt Disable */ +#define PWM_IDR1_CHID2 (0x1u << 2) /**< \brief (PWM_IDR1) Counter Event on Channel 2 Interrupt Disable */ +#define PWM_IDR1_CHID3 (0x1u << 3) /**< \brief (PWM_IDR1) Counter Event on Channel 3 Interrupt Disable */ +#define PWM_IDR1_FCHID0 (0x1u << 16) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 0 Interrupt Disable */ +#define PWM_IDR1_FCHID1 (0x1u << 17) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 1 Interrupt Disable */ +#define PWM_IDR1_FCHID2 (0x1u << 18) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 2 Interrupt Disable */ +#define PWM_IDR1_FCHID3 (0x1u << 19) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 3 Interrupt Disable */ +/* -------- PWM_IMR1 : (PWM Offset: 0x18) PWM Interrupt Mask Register 1 -------- */ +#define PWM_IMR1_CHID0 (0x1u << 0) /**< \brief (PWM_IMR1) Counter Event on Channel 0 Interrupt Mask */ +#define PWM_IMR1_CHID1 (0x1u << 1) /**< \brief (PWM_IMR1) Counter Event on Channel 1 Interrupt Mask */ +#define PWM_IMR1_CHID2 (0x1u << 2) /**< \brief (PWM_IMR1) Counter Event on Channel 2 Interrupt Mask */ +#define PWM_IMR1_CHID3 (0x1u << 3) /**< \brief (PWM_IMR1) Counter Event on Channel 3 Interrupt Mask */ +#define PWM_IMR1_FCHID0 (0x1u << 16) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 0 Interrupt Mask */ +#define PWM_IMR1_FCHID1 (0x1u << 17) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 1 Interrupt Mask */ +#define PWM_IMR1_FCHID2 (0x1u << 18) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 2 Interrupt Mask */ +#define PWM_IMR1_FCHID3 (0x1u << 19) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 3 Interrupt Mask */ +/* -------- PWM_ISR1 : (PWM Offset: 0x1C) PWM Interrupt Status Register 1 -------- */ +#define PWM_ISR1_CHID0 (0x1u << 0) /**< \brief (PWM_ISR1) Counter Event on Channel 0 */ +#define PWM_ISR1_CHID1 (0x1u << 1) /**< \brief (PWM_ISR1) Counter Event on Channel 1 */ +#define PWM_ISR1_CHID2 (0x1u << 2) /**< \brief (PWM_ISR1) Counter Event on Channel 2 */ +#define PWM_ISR1_CHID3 (0x1u << 3) /**< \brief (PWM_ISR1) Counter Event on Channel 3 */ +#define PWM_ISR1_FCHID0 (0x1u << 16) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 0 */ +#define PWM_ISR1_FCHID1 (0x1u << 17) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 1 */ +#define PWM_ISR1_FCHID2 (0x1u << 18) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 2 */ +#define PWM_ISR1_FCHID3 (0x1u << 19) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 3 */ +/* -------- PWM_SCM : (PWM Offset: 0x20) PWM Sync Channels Mode Register -------- */ +#define PWM_SCM_SYNC0 (0x1u << 0) /**< \brief (PWM_SCM) Synchronous Channel 0 */ +#define PWM_SCM_SYNC1 (0x1u << 1) /**< \brief (PWM_SCM) Synchronous Channel 1 */ +#define PWM_SCM_SYNC2 (0x1u << 2) /**< \brief (PWM_SCM) Synchronous Channel 2 */ +#define PWM_SCM_SYNC3 (0x1u << 3) /**< \brief (PWM_SCM) Synchronous Channel 3 */ +#define PWM_SCM_UPDM_Pos 16 +#define PWM_SCM_UPDM_Msk (0x3u << PWM_SCM_UPDM_Pos) /**< \brief (PWM_SCM) Synchronous Channels Update Mode */ +#define PWM_SCM_UPDM_MODE0 (0x0u << 16) /**< \brief (PWM_SCM) Manual write of double buffer registers and manual update of synchronous channels */ +#define PWM_SCM_UPDM_MODE1 (0x1u << 16) /**< \brief (PWM_SCM) Manual write of double buffer registers and automatic update of synchronous channels */ +#define PWM_SCM_UPDM_MODE2 (0x2u << 16) /**< \brief (PWM_SCM) Automatic write of duty-cycle update registers by the PDC and automatic update of synchronous channels */ +#define PWM_SCM_PTRM (0x1u << 20) /**< \brief (PWM_SCM) PDC Transfer Request Mode */ +#define PWM_SCM_PTRCS_Pos 21 +#define PWM_SCM_PTRCS_Msk (0x7u << PWM_SCM_PTRCS_Pos) /**< \brief (PWM_SCM) PDC Transfer Request Comparison Selection */ +#define PWM_SCM_PTRCS(value) ((PWM_SCM_PTRCS_Msk & ((value) << PWM_SCM_PTRCS_Pos))) +/* -------- PWM_SCUC : (PWM Offset: 0x28) PWM Sync Channels Update Control Register -------- */ +#define PWM_SCUC_UPDULOCK (0x1u << 0) /**< \brief (PWM_SCUC) Synchronous Channels Update Unlock */ +/* -------- PWM_SCUP : (PWM Offset: 0x2C) PWM Sync Channels Update Period Register -------- */ +#define PWM_SCUP_UPR_Pos 0 +#define PWM_SCUP_UPR_Msk (0xfu << PWM_SCUP_UPR_Pos) /**< \brief (PWM_SCUP) Update Period */ +#define PWM_SCUP_UPR(value) ((PWM_SCUP_UPR_Msk & ((value) << PWM_SCUP_UPR_Pos))) +#define PWM_SCUP_UPRCNT_Pos 4 +#define PWM_SCUP_UPRCNT_Msk (0xfu << PWM_SCUP_UPRCNT_Pos) /**< \brief (PWM_SCUP) Update Period Counter */ +#define PWM_SCUP_UPRCNT(value) ((PWM_SCUP_UPRCNT_Msk & ((value) << PWM_SCUP_UPRCNT_Pos))) +/* -------- PWM_SCUPUPD : (PWM Offset: 0x30) PWM Sync Channels Update Period Update Register -------- */ +#define PWM_SCUPUPD_UPRUPD_Pos 0 +#define PWM_SCUPUPD_UPRUPD_Msk (0xfu << PWM_SCUPUPD_UPRUPD_Pos) /**< \brief (PWM_SCUPUPD) Update Period Update */ +#define PWM_SCUPUPD_UPRUPD(value) ((PWM_SCUPUPD_UPRUPD_Msk & ((value) << PWM_SCUPUPD_UPRUPD_Pos))) +/* -------- PWM_IER2 : (PWM Offset: 0x34) PWM Interrupt Enable Register 2 -------- */ +#define PWM_IER2_WRDY (0x1u << 0) /**< \brief (PWM_IER2) Write Ready for Synchronous Channels Update Interrupt Enable */ +#define PWM_IER2_ENDTX (0x1u << 1) /**< \brief (PWM_IER2) PDC End of TX Buffer Interrupt Enable */ +#define PWM_IER2_TXBUFE (0x1u << 2) /**< \brief (PWM_IER2) PDC TX Buffer Empty Interrupt Enable */ +#define PWM_IER2_UNRE (0x1u << 3) /**< \brief (PWM_IER2) Synchronous Channels Update Underrun Error Interrupt Enable */ +#define PWM_IER2_CMPM0 (0x1u << 8) /**< \brief (PWM_IER2) Comparison 0 Match Interrupt Enable */ +#define PWM_IER2_CMPM1 (0x1u << 9) /**< \brief (PWM_IER2) Comparison 1 Match Interrupt Enable */ +#define PWM_IER2_CMPM2 (0x1u << 10) /**< \brief (PWM_IER2) Comparison 2 Match Interrupt Enable */ +#define PWM_IER2_CMPM3 (0x1u << 11) /**< \brief (PWM_IER2) Comparison 3 Match Interrupt Enable */ +#define PWM_IER2_CMPM4 (0x1u << 12) /**< \brief (PWM_IER2) Comparison 4 Match Interrupt Enable */ +#define PWM_IER2_CMPM5 (0x1u << 13) /**< \brief (PWM_IER2) Comparison 5 Match Interrupt Enable */ +#define PWM_IER2_CMPM6 (0x1u << 14) /**< \brief (PWM_IER2) Comparison 6 Match Interrupt Enable */ +#define PWM_IER2_CMPM7 (0x1u << 15) /**< \brief (PWM_IER2) Comparison 7 Match Interrupt Enable */ +#define PWM_IER2_CMPU0 (0x1u << 16) /**< \brief (PWM_IER2) Comparison 0 Update Interrupt Enable */ +#define PWM_IER2_CMPU1 (0x1u << 17) /**< \brief (PWM_IER2) Comparison 1 Update Interrupt Enable */ +#define PWM_IER2_CMPU2 (0x1u << 18) /**< \brief (PWM_IER2) Comparison 2 Update Interrupt Enable */ +#define PWM_IER2_CMPU3 (0x1u << 19) /**< \brief (PWM_IER2) Comparison 3 Update Interrupt Enable */ +#define PWM_IER2_CMPU4 (0x1u << 20) /**< \brief (PWM_IER2) Comparison 4 Update Interrupt Enable */ +#define PWM_IER2_CMPU5 (0x1u << 21) /**< \brief (PWM_IER2) Comparison 5 Update Interrupt Enable */ +#define PWM_IER2_CMPU6 (0x1u << 22) /**< \brief (PWM_IER2) Comparison 6 Update Interrupt Enable */ +#define PWM_IER2_CMPU7 (0x1u << 23) /**< \brief (PWM_IER2) Comparison 7 Update Interrupt Enable */ +/* -------- PWM_IDR2 : (PWM Offset: 0x38) PWM Interrupt Disable Register 2 -------- */ +#define PWM_IDR2_WRDY (0x1u << 0) /**< \brief (PWM_IDR2) Write Ready for Synchronous Channels Update Interrupt Disable */ +#define PWM_IDR2_ENDTX (0x1u << 1) /**< \brief (PWM_IDR2) PDC End of TX Buffer Interrupt Disable */ +#define PWM_IDR2_TXBUFE (0x1u << 2) /**< \brief (PWM_IDR2) PDC TX Buffer Empty Interrupt Disable */ +#define PWM_IDR2_UNRE (0x1u << 3) /**< \brief (PWM_IDR2) Synchronous Channels Update Underrun Error Interrupt Disable */ +#define PWM_IDR2_CMPM0 (0x1u << 8) /**< \brief (PWM_IDR2) Comparison 0 Match Interrupt Disable */ +#define PWM_IDR2_CMPM1 (0x1u << 9) /**< \brief (PWM_IDR2) Comparison 1 Match Interrupt Disable */ +#define PWM_IDR2_CMPM2 (0x1u << 10) /**< \brief (PWM_IDR2) Comparison 2 Match Interrupt Disable */ +#define PWM_IDR2_CMPM3 (0x1u << 11) /**< \brief (PWM_IDR2) Comparison 3 Match Interrupt Disable */ +#define PWM_IDR2_CMPM4 (0x1u << 12) /**< \brief (PWM_IDR2) Comparison 4 Match Interrupt Disable */ +#define PWM_IDR2_CMPM5 (0x1u << 13) /**< \brief (PWM_IDR2) Comparison 5 Match Interrupt Disable */ +#define PWM_IDR2_CMPM6 (0x1u << 14) /**< \brief (PWM_IDR2) Comparison 6 Match Interrupt Disable */ +#define PWM_IDR2_CMPM7 (0x1u << 15) /**< \brief (PWM_IDR2) Comparison 7 Match Interrupt Disable */ +#define PWM_IDR2_CMPU0 (0x1u << 16) /**< \brief (PWM_IDR2) Comparison 0 Update Interrupt Disable */ +#define PWM_IDR2_CMPU1 (0x1u << 17) /**< \brief (PWM_IDR2) Comparison 1 Update Interrupt Disable */ +#define PWM_IDR2_CMPU2 (0x1u << 18) /**< \brief (PWM_IDR2) Comparison 2 Update Interrupt Disable */ +#define PWM_IDR2_CMPU3 (0x1u << 19) /**< \brief (PWM_IDR2) Comparison 3 Update Interrupt Disable */ +#define PWM_IDR2_CMPU4 (0x1u << 20) /**< \brief (PWM_IDR2) Comparison 4 Update Interrupt Disable */ +#define PWM_IDR2_CMPU5 (0x1u << 21) /**< \brief (PWM_IDR2) Comparison 5 Update Interrupt Disable */ +#define PWM_IDR2_CMPU6 (0x1u << 22) /**< \brief (PWM_IDR2) Comparison 6 Update Interrupt Disable */ +#define PWM_IDR2_CMPU7 (0x1u << 23) /**< \brief (PWM_IDR2) Comparison 7 Update Interrupt Disable */ +/* -------- PWM_IMR2 : (PWM Offset: 0x3C) PWM Interrupt Mask Register 2 -------- */ +#define PWM_IMR2_WRDY (0x1u << 0) /**< \brief (PWM_IMR2) Write Ready for Synchronous Channels Update Interrupt Mask */ +#define PWM_IMR2_ENDTX (0x1u << 1) /**< \brief (PWM_IMR2) PDC End of TX Buffer Interrupt Mask */ +#define PWM_IMR2_TXBUFE (0x1u << 2) /**< \brief (PWM_IMR2) PDC TX Buffer Empty Interrupt Mask */ +#define PWM_IMR2_UNRE (0x1u << 3) /**< \brief (PWM_IMR2) Synchronous Channels Update Underrun Error Interrupt Mask */ +#define PWM_IMR2_CMPM0 (0x1u << 8) /**< \brief (PWM_IMR2) Comparison 0 Match Interrupt Mask */ +#define PWM_IMR2_CMPM1 (0x1u << 9) /**< \brief (PWM_IMR2) Comparison 1 Match Interrupt Mask */ +#define PWM_IMR2_CMPM2 (0x1u << 10) /**< \brief (PWM_IMR2) Comparison 2 Match Interrupt Mask */ +#define PWM_IMR2_CMPM3 (0x1u << 11) /**< \brief (PWM_IMR2) Comparison 3 Match Interrupt Mask */ +#define PWM_IMR2_CMPM4 (0x1u << 12) /**< \brief (PWM_IMR2) Comparison 4 Match Interrupt Mask */ +#define PWM_IMR2_CMPM5 (0x1u << 13) /**< \brief (PWM_IMR2) Comparison 5 Match Interrupt Mask */ +#define PWM_IMR2_CMPM6 (0x1u << 14) /**< \brief (PWM_IMR2) Comparison 6 Match Interrupt Mask */ +#define PWM_IMR2_CMPM7 (0x1u << 15) /**< \brief (PWM_IMR2) Comparison 7 Match Interrupt Mask */ +#define PWM_IMR2_CMPU0 (0x1u << 16) /**< \brief (PWM_IMR2) Comparison 0 Update Interrupt Mask */ +#define PWM_IMR2_CMPU1 (0x1u << 17) /**< \brief (PWM_IMR2) Comparison 1 Update Interrupt Mask */ +#define PWM_IMR2_CMPU2 (0x1u << 18) /**< \brief (PWM_IMR2) Comparison 2 Update Interrupt Mask */ +#define PWM_IMR2_CMPU3 (0x1u << 19) /**< \brief (PWM_IMR2) Comparison 3 Update Interrupt Mask */ +#define PWM_IMR2_CMPU4 (0x1u << 20) /**< \brief (PWM_IMR2) Comparison 4 Update Interrupt Mask */ +#define PWM_IMR2_CMPU5 (0x1u << 21) /**< \brief (PWM_IMR2) Comparison 5 Update Interrupt Mask */ +#define PWM_IMR2_CMPU6 (0x1u << 22) /**< \brief (PWM_IMR2) Comparison 6 Update Interrupt Mask */ +#define PWM_IMR2_CMPU7 (0x1u << 23) /**< \brief (PWM_IMR2) Comparison 7 Update Interrupt Mask */ +/* -------- PWM_ISR2 : (PWM Offset: 0x40) PWM Interrupt Status Register 2 -------- */ +#define PWM_ISR2_WRDY (0x1u << 0) /**< \brief (PWM_ISR2) Write Ready for Synchronous Channels Update */ +#define PWM_ISR2_ENDTX (0x1u << 1) /**< \brief (PWM_ISR2) PDC End of TX Buffer */ +#define PWM_ISR2_TXBUFE (0x1u << 2) /**< \brief (PWM_ISR2) PDC TX Buffer Empty */ +#define PWM_ISR2_UNRE (0x1u << 3) /**< \brief (PWM_ISR2) Synchronous Channels Update Underrun Error */ +#define PWM_ISR2_CMPM0 (0x1u << 8) /**< \brief (PWM_ISR2) Comparison 0 Match */ +#define PWM_ISR2_CMPM1 (0x1u << 9) /**< \brief (PWM_ISR2) Comparison 1 Match */ +#define PWM_ISR2_CMPM2 (0x1u << 10) /**< \brief (PWM_ISR2) Comparison 2 Match */ +#define PWM_ISR2_CMPM3 (0x1u << 11) /**< \brief (PWM_ISR2) Comparison 3 Match */ +#define PWM_ISR2_CMPM4 (0x1u << 12) /**< \brief (PWM_ISR2) Comparison 4 Match */ +#define PWM_ISR2_CMPM5 (0x1u << 13) /**< \brief (PWM_ISR2) Comparison 5 Match */ +#define PWM_ISR2_CMPM6 (0x1u << 14) /**< \brief (PWM_ISR2) Comparison 6 Match */ +#define PWM_ISR2_CMPM7 (0x1u << 15) /**< \brief (PWM_ISR2) Comparison 7 Match */ +#define PWM_ISR2_CMPU0 (0x1u << 16) /**< \brief (PWM_ISR2) Comparison 0 Update */ +#define PWM_ISR2_CMPU1 (0x1u << 17) /**< \brief (PWM_ISR2) Comparison 1 Update */ +#define PWM_ISR2_CMPU2 (0x1u << 18) /**< \brief (PWM_ISR2) Comparison 2 Update */ +#define PWM_ISR2_CMPU3 (0x1u << 19) /**< \brief (PWM_ISR2) Comparison 3 Update */ +#define PWM_ISR2_CMPU4 (0x1u << 20) /**< \brief (PWM_ISR2) Comparison 4 Update */ +#define PWM_ISR2_CMPU5 (0x1u << 21) /**< \brief (PWM_ISR2) Comparison 5 Update */ +#define PWM_ISR2_CMPU6 (0x1u << 22) /**< \brief (PWM_ISR2) Comparison 6 Update */ +#define PWM_ISR2_CMPU7 (0x1u << 23) /**< \brief (PWM_ISR2) Comparison 7 Update */ +/* -------- PWM_OOV : (PWM Offset: 0x44) PWM Output Override Value Register -------- */ +#define PWM_OOV_OOVH0 (0x1u << 0) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 0 */ +#define PWM_OOV_OOVH1 (0x1u << 1) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 1 */ +#define PWM_OOV_OOVH2 (0x1u << 2) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 2 */ +#define PWM_OOV_OOVH3 (0x1u << 3) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 3 */ +#define PWM_OOV_OOVL0 (0x1u << 16) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 0 */ +#define PWM_OOV_OOVL1 (0x1u << 17) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 1 */ +#define PWM_OOV_OOVL2 (0x1u << 18) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 2 */ +#define PWM_OOV_OOVL3 (0x1u << 19) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 3 */ +/* -------- PWM_OS : (PWM Offset: 0x48) PWM Output Selection Register -------- */ +#define PWM_OS_OSH0 (0x1u << 0) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 0 */ +#define PWM_OS_OSH1 (0x1u << 1) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 1 */ +#define PWM_OS_OSH2 (0x1u << 2) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 2 */ +#define PWM_OS_OSH3 (0x1u << 3) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 3 */ +#define PWM_OS_OSL0 (0x1u << 16) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 0 */ +#define PWM_OS_OSL1 (0x1u << 17) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 1 */ +#define PWM_OS_OSL2 (0x1u << 18) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 2 */ +#define PWM_OS_OSL3 (0x1u << 19) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 3 */ +/* -------- PWM_OSS : (PWM Offset: 0x4C) PWM Output Selection Set Register -------- */ +#define PWM_OSS_OSSH0 (0x1u << 0) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 0 */ +#define PWM_OSS_OSSH1 (0x1u << 1) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 1 */ +#define PWM_OSS_OSSH2 (0x1u << 2) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 2 */ +#define PWM_OSS_OSSH3 (0x1u << 3) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 3 */ +#define PWM_OSS_OSSL0 (0x1u << 16) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 0 */ +#define PWM_OSS_OSSL1 (0x1u << 17) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 1 */ +#define PWM_OSS_OSSL2 (0x1u << 18) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 2 */ +#define PWM_OSS_OSSL3 (0x1u << 19) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 3 */ +/* -------- PWM_OSC : (PWM Offset: 0x50) PWM Output Selection Clear Register -------- */ +#define PWM_OSC_OSCH0 (0x1u << 0) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 0 */ +#define PWM_OSC_OSCH1 (0x1u << 1) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 1 */ +#define PWM_OSC_OSCH2 (0x1u << 2) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 2 */ +#define PWM_OSC_OSCH3 (0x1u << 3) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 3 */ +#define PWM_OSC_OSCL0 (0x1u << 16) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 0 */ +#define PWM_OSC_OSCL1 (0x1u << 17) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 1 */ +#define PWM_OSC_OSCL2 (0x1u << 18) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 2 */ +#define PWM_OSC_OSCL3 (0x1u << 19) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 3 */ +/* -------- PWM_OSSUPD : (PWM Offset: 0x54) PWM Output Selection Set Update Register -------- */ +#define PWM_OSSUPD_OSSUPH0 (0x1u << 0) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 0 */ +#define PWM_OSSUPD_OSSUPH1 (0x1u << 1) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 1 */ +#define PWM_OSSUPD_OSSUPH2 (0x1u << 2) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 2 */ +#define PWM_OSSUPD_OSSUPH3 (0x1u << 3) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 3 */ +#define PWM_OSSUPD_OSSUPL0 (0x1u << 16) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 0 */ +#define PWM_OSSUPD_OSSUPL1 (0x1u << 17) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 1 */ +#define PWM_OSSUPD_OSSUPL2 (0x1u << 18) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 2 */ +#define PWM_OSSUPD_OSSUPL3 (0x1u << 19) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 3 */ +/* -------- PWM_OSCUPD : (PWM Offset: 0x58) PWM Output Selection Clear Update Register -------- */ +#define PWM_OSCUPD_OSCUPH0 (0x1u << 0) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 0 */ +#define PWM_OSCUPD_OSCUPH1 (0x1u << 1) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 1 */ +#define PWM_OSCUPD_OSCUPH2 (0x1u << 2) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 2 */ +#define PWM_OSCUPD_OSCUPH3 (0x1u << 3) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 3 */ +#define PWM_OSCUPD_OSCUPL0 (0x1u << 16) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 0 */ +#define PWM_OSCUPD_OSCUPL1 (0x1u << 17) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 1 */ +#define PWM_OSCUPD_OSCUPL2 (0x1u << 18) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 2 */ +#define PWM_OSCUPD_OSCUPL3 (0x1u << 19) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 3 */ +/* -------- PWM_FMR : (PWM Offset: 0x5C) PWM Fault Mode Register -------- */ +#define PWM_FMR_FPOL_Pos 0 +#define PWM_FMR_FPOL_Msk (0xffu << PWM_FMR_FPOL_Pos) /**< \brief (PWM_FMR) Fault Polarity (fault input bit varies from 0 to 5) */ +#define PWM_FMR_FPOL(value) ((PWM_FMR_FPOL_Msk & ((value) << PWM_FMR_FPOL_Pos))) +#define PWM_FMR_FMOD_Pos 8 +#define PWM_FMR_FMOD_Msk (0xffu << PWM_FMR_FMOD_Pos) /**< \brief (PWM_FMR) Fault Activation Mode (fault input bit varies from 0 to 5) */ +#define PWM_FMR_FMOD(value) ((PWM_FMR_FMOD_Msk & ((value) << PWM_FMR_FMOD_Pos))) +#define PWM_FMR_FFIL_Pos 16 +#define PWM_FMR_FFIL_Msk (0xffu << PWM_FMR_FFIL_Pos) /**< \brief (PWM_FMR) Fault Filtering (fault input bit varies from 0 to 5) */ +#define PWM_FMR_FFIL(value) ((PWM_FMR_FFIL_Msk & ((value) << PWM_FMR_FFIL_Pos))) +/* -------- PWM_FSR : (PWM Offset: 0x60) PWM Fault Status Register -------- */ +#define PWM_FSR_FIV_Pos 0 +#define PWM_FSR_FIV_Msk (0xffu << PWM_FSR_FIV_Pos) /**< \brief (PWM_FSR) Fault Input Value (fault input bit varies from 0 to 5) */ +#define PWM_FSR_FS_Pos 8 +#define PWM_FSR_FS_Msk (0xffu << PWM_FSR_FS_Pos) /**< \brief (PWM_FSR) Fault Status (fault input bit varies from 0 to 5) */ +/* -------- PWM_FCR : (PWM Offset: 0x64) PWM Fault Clear Register -------- */ +#define PWM_FCR_FCLR_Pos 0 +#define PWM_FCR_FCLR_Msk (0xffu << PWM_FCR_FCLR_Pos) /**< \brief (PWM_FCR) Fault Clear (fault input bit varies from 0 to 5) */ +#define PWM_FCR_FCLR(value) ((PWM_FCR_FCLR_Msk & ((value) << PWM_FCR_FCLR_Pos))) +/* -------- PWM_FPV : (PWM Offset: 0x68) PWM Fault Protection Value Register -------- */ +#define PWM_FPV_FPVH0 (0x1u << 0) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 0 */ +#define PWM_FPV_FPVH1 (0x1u << 1) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 1 */ +#define PWM_FPV_FPVH2 (0x1u << 2) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 2 */ +#define PWM_FPV_FPVH3 (0x1u << 3) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 3 */ +#define PWM_FPV_FPVL0 (0x1u << 16) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 0 */ +#define PWM_FPV_FPVL1 (0x1u << 17) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 1 */ +#define PWM_FPV_FPVL2 (0x1u << 18) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 2 */ +#define PWM_FPV_FPVL3 (0x1u << 19) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 3 */ +/* -------- PWM_FPE : (PWM Offset: 0x6C) PWM Fault Protection Enable Register -------- */ +#define PWM_FPE_FPE0_Pos 0 +#define PWM_FPE_FPE0_Msk (0xffu << PWM_FPE_FPE0_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 0 (fault input bit varies from 0 to 5) */ +#define PWM_FPE_FPE0(value) ((PWM_FPE_FPE0_Msk & ((value) << PWM_FPE_FPE0_Pos))) +#define PWM_FPE_FPE1_Pos 8 +#define PWM_FPE_FPE1_Msk (0xffu << PWM_FPE_FPE1_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 1 (fault input bit varies from 0 to 5) */ +#define PWM_FPE_FPE1(value) ((PWM_FPE_FPE1_Msk & ((value) << PWM_FPE_FPE1_Pos))) +#define PWM_FPE_FPE2_Pos 16 +#define PWM_FPE_FPE2_Msk (0xffu << PWM_FPE_FPE2_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 2 (fault input bit varies from 0 to 5) */ +#define PWM_FPE_FPE2(value) ((PWM_FPE_FPE2_Msk & ((value) << PWM_FPE_FPE2_Pos))) +#define PWM_FPE_FPE3_Pos 24 +#define PWM_FPE_FPE3_Msk (0xffu << PWM_FPE_FPE3_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 3 (fault input bit varies from 0 to 5) */ +#define PWM_FPE_FPE3(value) ((PWM_FPE_FPE3_Msk & ((value) << PWM_FPE_FPE3_Pos))) +/* -------- PWM_ELMR[2] : (PWM Offset: 0x7C) PWM Event Line 0 Mode Register -------- */ +#define PWM_ELMR_CSEL0 (0x1u << 0) /**< \brief (PWM_ELMR[2]) Comparison 0 Selection */ +#define PWM_ELMR_CSEL1 (0x1u << 1) /**< \brief (PWM_ELMR[2]) Comparison 1 Selection */ +#define PWM_ELMR_CSEL2 (0x1u << 2) /**< \brief (PWM_ELMR[2]) Comparison 2 Selection */ +#define PWM_ELMR_CSEL3 (0x1u << 3) /**< \brief (PWM_ELMR[2]) Comparison 3 Selection */ +#define PWM_ELMR_CSEL4 (0x1u << 4) /**< \brief (PWM_ELMR[2]) Comparison 4 Selection */ +#define PWM_ELMR_CSEL5 (0x1u << 5) /**< \brief (PWM_ELMR[2]) Comparison 5 Selection */ +#define PWM_ELMR_CSEL6 (0x1u << 6) /**< \brief (PWM_ELMR[2]) Comparison 6 Selection */ +#define PWM_ELMR_CSEL7 (0x1u << 7) /**< \brief (PWM_ELMR[2]) Comparison 7 Selection */ +/* -------- PWM_SMMR : (PWM Offset: 0xB0) PWM Stepper Motor Mode Register -------- */ +#define PWM_SMMR_GCEN0 (0x1u << 0) /**< \brief (PWM_SMMR) Gray Count ENable */ +#define PWM_SMMR_GCEN1 (0x1u << 1) /**< \brief (PWM_SMMR) Gray Count ENable */ +#define PWM_SMMR_DOWN0 (0x1u << 16) /**< \brief (PWM_SMMR) DOWN Count */ +#define PWM_SMMR_DOWN1 (0x1u << 17) /**< \brief (PWM_SMMR) DOWN Count */ +/* -------- PWM_WPCR : (PWM Offset: 0xE4) PWM Write Protect Control Register -------- */ +#define PWM_WPCR_WPCMD_Pos 0 +#define PWM_WPCR_WPCMD_Msk (0x3u << PWM_WPCR_WPCMD_Pos) /**< \brief (PWM_WPCR) Write Protect Command */ +#define PWM_WPCR_WPCMD(value) ((PWM_WPCR_WPCMD_Msk & ((value) << PWM_WPCR_WPCMD_Pos))) +#define PWM_WPCR_WPRG0 (0x1u << 2) /**< \brief (PWM_WPCR) Write Protect Register Group 0 */ +#define PWM_WPCR_WPRG1 (0x1u << 3) /**< \brief (PWM_WPCR) Write Protect Register Group 1 */ +#define PWM_WPCR_WPRG2 (0x1u << 4) /**< \brief (PWM_WPCR) Write Protect Register Group 2 */ +#define PWM_WPCR_WPRG3 (0x1u << 5) /**< \brief (PWM_WPCR) Write Protect Register Group 3 */ +#define PWM_WPCR_WPRG4 (0x1u << 6) /**< \brief (PWM_WPCR) Write Protect Register Group 4 */ +#define PWM_WPCR_WPRG5 (0x1u << 7) /**< \brief (PWM_WPCR) Write Protect Register Group 5 */ +#define PWM_WPCR_WPKEY_Pos 8 +#define PWM_WPCR_WPKEY_Msk (0xffffffu << PWM_WPCR_WPKEY_Pos) /**< \brief (PWM_WPCR) Write Protect Key */ +#define PWM_WPCR_WPKEY(value) ((PWM_WPCR_WPKEY_Msk & ((value) << PWM_WPCR_WPKEY_Pos))) +/* -------- PWM_WPSR : (PWM Offset: 0xE8) PWM Write Protect Status Register -------- */ +#define PWM_WPSR_WPSWS0 (0x1u << 0) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS1 (0x1u << 1) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS2 (0x1u << 2) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS3 (0x1u << 3) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS4 (0x1u << 4) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS5 (0x1u << 5) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPVS (0x1u << 7) /**< \brief (PWM_WPSR) Write Protect Violation Status */ +#define PWM_WPSR_WPHWS0 (0x1u << 8) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS1 (0x1u << 9) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS2 (0x1u << 10) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS3 (0x1u << 11) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS4 (0x1u << 12) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS5 (0x1u << 13) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPVSRC_Pos 16 +#define PWM_WPSR_WPVSRC_Msk (0xffffu << PWM_WPSR_WPVSRC_Pos) /**< \brief (PWM_WPSR) Write Protect Violation Source */ +/* -------- PWM_RPR : (PWM Offset: 0x100) Receive Pointer Register -------- */ +#define PWM_RPR_RXPTR_Pos 0 +#define PWM_RPR_RXPTR_Msk (0xffffffffu << PWM_RPR_RXPTR_Pos) /**< \brief (PWM_RPR) Receive Pointer Register */ +#define PWM_RPR_RXPTR(value) ((PWM_RPR_RXPTR_Msk & ((value) << PWM_RPR_RXPTR_Pos))) +/* -------- PWM_RCR : (PWM Offset: 0x104) Receive Counter Register -------- */ +#define PWM_RCR_RXCTR_Pos 0 +#define PWM_RCR_RXCTR_Msk (0xffffu << PWM_RCR_RXCTR_Pos) /**< \brief (PWM_RCR) Receive Counter Register */ +#define PWM_RCR_RXCTR(value) ((PWM_RCR_RXCTR_Msk & ((value) << PWM_RCR_RXCTR_Pos))) +/* -------- PWM_TPR : (PWM Offset: 0x108) Transmit Pointer Register -------- */ +#define PWM_TPR_TXPTR_Pos 0 +#define PWM_TPR_TXPTR_Msk (0xffffffffu << PWM_TPR_TXPTR_Pos) /**< \brief (PWM_TPR) Transmit Counter Register */ +#define PWM_TPR_TXPTR(value) ((PWM_TPR_TXPTR_Msk & ((value) << PWM_TPR_TXPTR_Pos))) +/* -------- PWM_TCR : (PWM Offset: 0x10C) Transmit Counter Register -------- */ +#define PWM_TCR_TXCTR_Pos 0 +#define PWM_TCR_TXCTR_Msk (0xffffu << PWM_TCR_TXCTR_Pos) /**< \brief (PWM_TCR) Transmit Counter Register */ +#define PWM_TCR_TXCTR(value) ((PWM_TCR_TXCTR_Msk & ((value) << PWM_TCR_TXCTR_Pos))) +/* -------- PWM_RNPR : (PWM Offset: 0x110) Receive Next Pointer Register -------- */ +#define PWM_RNPR_RXNPTR_Pos 0 +#define PWM_RNPR_RXNPTR_Msk (0xffffffffu << PWM_RNPR_RXNPTR_Pos) /**< \brief (PWM_RNPR) Receive Next Pointer */ +#define PWM_RNPR_RXNPTR(value) ((PWM_RNPR_RXNPTR_Msk & ((value) << PWM_RNPR_RXNPTR_Pos))) +/* -------- PWM_RNCR : (PWM Offset: 0x114) Receive Next Counter Register -------- */ +#define PWM_RNCR_RXNCTR_Pos 0 +#define PWM_RNCR_RXNCTR_Msk (0xffffu << PWM_RNCR_RXNCTR_Pos) /**< \brief (PWM_RNCR) Receive Next Counter */ +#define PWM_RNCR_RXNCTR(value) ((PWM_RNCR_RXNCTR_Msk & ((value) << PWM_RNCR_RXNCTR_Pos))) +/* -------- PWM_TNPR : (PWM Offset: 0x118) Transmit Next Pointer Register -------- */ +#define PWM_TNPR_TXNPTR_Pos 0 +#define PWM_TNPR_TXNPTR_Msk (0xffffffffu << PWM_TNPR_TXNPTR_Pos) /**< \brief (PWM_TNPR) Transmit Next Pointer */ +#define PWM_TNPR_TXNPTR(value) ((PWM_TNPR_TXNPTR_Msk & ((value) << PWM_TNPR_TXNPTR_Pos))) +/* -------- PWM_TNCR : (PWM Offset: 0x11C) Transmit Next Counter Register -------- */ +#define PWM_TNCR_TXNCTR_Pos 0 +#define PWM_TNCR_TXNCTR_Msk (0xffffu << PWM_TNCR_TXNCTR_Pos) /**< \brief (PWM_TNCR) Transmit Counter Next */ +#define PWM_TNCR_TXNCTR(value) ((PWM_TNCR_TXNCTR_Msk & ((value) << PWM_TNCR_TXNCTR_Pos))) +/* -------- PWM_PTCR : (PWM Offset: 0x120) Transfer Control Register -------- */ +#define PWM_PTCR_RXTEN (0x1u << 0) /**< \brief (PWM_PTCR) Receiver Transfer Enable */ +#define PWM_PTCR_RXTDIS (0x1u << 1) /**< \brief (PWM_PTCR) Receiver Transfer Disable */ +#define PWM_PTCR_TXTEN (0x1u << 8) /**< \brief (PWM_PTCR) Transmitter Transfer Enable */ +#define PWM_PTCR_TXTDIS (0x1u << 9) /**< \brief (PWM_PTCR) Transmitter Transfer Disable */ +/* -------- PWM_PTSR : (PWM Offset: 0x124) Transfer Status Register -------- */ +#define PWM_PTSR_RXTEN (0x1u << 0) /**< \brief (PWM_PTSR) Receiver Transfer Enable */ +#define PWM_PTSR_TXTEN (0x1u << 8) /**< \brief (PWM_PTSR) Transmitter Transfer Enable */ +/* -------- PWM_CMPV : (PWM Offset: N/A) PWM Comparison 0 Value Register -------- */ +#define PWM_CMPV_CV_Pos 0 +#define PWM_CMPV_CV_Msk (0xffffffu << PWM_CMPV_CV_Pos) /**< \brief (PWM_CMPV) Comparison x Value */ +#define PWM_CMPV_CV(value) ((PWM_CMPV_CV_Msk & ((value) << PWM_CMPV_CV_Pos))) +#define PWM_CMPV_CVM (0x1u << 24) /**< \brief (PWM_CMPV) Comparison x Value Mode */ +/* -------- PWM_CMPVUPD : (PWM Offset: N/A) PWM Comparison 0 Value Update Register -------- */ +#define PWM_CMPVUPD_CVUPD_Pos 0 +#define PWM_CMPVUPD_CVUPD_Msk (0xffffffu << PWM_CMPVUPD_CVUPD_Pos) /**< \brief (PWM_CMPVUPD) Comparison x Value Update */ +#define PWM_CMPVUPD_CVUPD(value) ((PWM_CMPVUPD_CVUPD_Msk & ((value) << PWM_CMPVUPD_CVUPD_Pos))) +#define PWM_CMPVUPD_CVMUPD (0x1u << 24) /**< \brief (PWM_CMPVUPD) Comparison x Value Mode Update */ +/* -------- PWM_CMPM : (PWM Offset: N/A) PWM Comparison 0 Mode Register -------- */ +#define PWM_CMPM_CEN (0x1u << 0) /**< \brief (PWM_CMPM) Comparison x Enable */ +#define PWM_CMPM_CTR_Pos 4 +#define PWM_CMPM_CTR_Msk (0xfu << PWM_CMPM_CTR_Pos) /**< \brief (PWM_CMPM) Comparison x Trigger */ +#define PWM_CMPM_CTR(value) ((PWM_CMPM_CTR_Msk & ((value) << PWM_CMPM_CTR_Pos))) +#define PWM_CMPM_CPR_Pos 8 +#define PWM_CMPM_CPR_Msk (0xfu << PWM_CMPM_CPR_Pos) /**< \brief (PWM_CMPM) Comparison x Period */ +#define PWM_CMPM_CPR(value) ((PWM_CMPM_CPR_Msk & ((value) << PWM_CMPM_CPR_Pos))) +#define PWM_CMPM_CPRCNT_Pos 12 +#define PWM_CMPM_CPRCNT_Msk (0xfu << PWM_CMPM_CPRCNT_Pos) /**< \brief (PWM_CMPM) Comparison x Period Counter */ +#define PWM_CMPM_CPRCNT(value) ((PWM_CMPM_CPRCNT_Msk & ((value) << PWM_CMPM_CPRCNT_Pos))) +#define PWM_CMPM_CUPR_Pos 16 +#define PWM_CMPM_CUPR_Msk (0xfu << PWM_CMPM_CUPR_Pos) /**< \brief (PWM_CMPM) Comparison x Update Period */ +#define PWM_CMPM_CUPR(value) ((PWM_CMPM_CUPR_Msk & ((value) << PWM_CMPM_CUPR_Pos))) +#define PWM_CMPM_CUPRCNT_Pos 20 +#define PWM_CMPM_CUPRCNT_Msk (0xfu << PWM_CMPM_CUPRCNT_Pos) /**< \brief (PWM_CMPM) Comparison x Update Period Counter */ +#define PWM_CMPM_CUPRCNT(value) ((PWM_CMPM_CUPRCNT_Msk & ((value) << PWM_CMPM_CUPRCNT_Pos))) +/* -------- PWM_CMPMUPD : (PWM Offset: N/A) PWM Comparison 0 Mode Update Register -------- */ +#define PWM_CMPMUPD_CENUPD (0x1u << 0) /**< \brief (PWM_CMPMUPD) Comparison x Enable Update */ +#define PWM_CMPMUPD_CTRUPD_Pos 4 +#define PWM_CMPMUPD_CTRUPD_Msk (0xfu << PWM_CMPMUPD_CTRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Trigger Update */ +#define PWM_CMPMUPD_CTRUPD(value) ((PWM_CMPMUPD_CTRUPD_Msk & ((value) << PWM_CMPMUPD_CTRUPD_Pos))) +#define PWM_CMPMUPD_CPRUPD_Pos 8 +#define PWM_CMPMUPD_CPRUPD_Msk (0xfu << PWM_CMPMUPD_CPRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Period Update */ +#define PWM_CMPMUPD_CPRUPD(value) ((PWM_CMPMUPD_CPRUPD_Msk & ((value) << PWM_CMPMUPD_CPRUPD_Pos))) +#define PWM_CMPMUPD_CUPRUPD_Pos 16 +#define PWM_CMPMUPD_CUPRUPD_Msk (0xfu << PWM_CMPMUPD_CUPRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Update Period Update */ +#define PWM_CMPMUPD_CUPRUPD(value) ((PWM_CMPMUPD_CUPRUPD_Msk & ((value) << PWM_CMPMUPD_CUPRUPD_Pos))) +/* -------- PWM_CMR : (PWM Offset: N/A) PWM Channel Mode Register -------- */ +#define PWM_CMR_CPRE_Pos 0 +#define PWM_CMR_CPRE_Msk (0xfu << PWM_CMR_CPRE_Pos) /**< \brief (PWM_CMR) Channel Pre-scaler */ +#define PWM_CMR_CPRE_MCK (0x0u << 0) /**< \brief (PWM_CMR) Master clock */ +#define PWM_CMR_CPRE_MCK_DIV_2 (0x1u << 0) /**< \brief (PWM_CMR) Master clock/2 */ +#define PWM_CMR_CPRE_MCK_DIV_4 (0x2u << 0) /**< \brief (PWM_CMR) Master clock/4 */ +#define PWM_CMR_CPRE_MCK_DIV_8 (0x3u << 0) /**< \brief (PWM_CMR) Master clock/8 */ +#define PWM_CMR_CPRE_MCK_DIV_16 (0x4u << 0) /**< \brief (PWM_CMR) Master clock/16 */ +#define PWM_CMR_CPRE_MCK_DIV_32 (0x5u << 0) /**< \brief (PWM_CMR) Master clock/32 */ +#define PWM_CMR_CPRE_MCK_DIV_64 (0x6u << 0) /**< \brief (PWM_CMR) Master clock/64 */ +#define PWM_CMR_CPRE_MCK_DIV_128 (0x7u << 0) /**< \brief (PWM_CMR) Master clock/128 */ +#define PWM_CMR_CPRE_MCK_DIV_256 (0x8u << 0) /**< \brief (PWM_CMR) Master clock/256 */ +#define PWM_CMR_CPRE_MCK_DIV_512 (0x9u << 0) /**< \brief (PWM_CMR) Master clock/512 */ +#define PWM_CMR_CPRE_MCK_DIV_1024 (0xAu << 0) /**< \brief (PWM_CMR) Master clock/1024 */ +#define PWM_CMR_CPRE_CLKA (0xBu << 0) /**< \brief (PWM_CMR) Clock A */ +#define PWM_CMR_CPRE_CLKB (0xCu << 0) /**< \brief (PWM_CMR) Clock B */ +#define PWM_CMR_CALG (0x1u << 8) /**< \brief (PWM_CMR) Channel Alignment */ +#define PWM_CMR_CPOL (0x1u << 9) /**< \brief (PWM_CMR) Channel Polarity */ +#define PWM_CMR_CES (0x1u << 10) /**< \brief (PWM_CMR) Counter Event Selection */ +#define PWM_CMR_DTE (0x1u << 16) /**< \brief (PWM_CMR) Dead-Time Generator Enable */ +#define PWM_CMR_DTHI (0x1u << 17) /**< \brief (PWM_CMR) Dead-Time PWMHx Output Inverted */ +#define PWM_CMR_DTLI (0x1u << 18) /**< \brief (PWM_CMR) Dead-Time PWMLx Output Inverted */ +/* -------- PWM_CDTY : (PWM Offset: N/A) PWM Channel Duty Cycle Register -------- */ +#define PWM_CDTY_CDTY_Pos 0 +#define PWM_CDTY_CDTY_Msk (0xffffffu << PWM_CDTY_CDTY_Pos) /**< \brief (PWM_CDTY) Channel Duty-Cycle */ +#define PWM_CDTY_CDTY(value) ((PWM_CDTY_CDTY_Msk & ((value) << PWM_CDTY_CDTY_Pos))) +/* -------- PWM_CDTYUPD : (PWM Offset: N/A) PWM Channel Duty Cycle Update Register -------- */ +#define PWM_CDTYUPD_CDTYUPD_Pos 0 +#define PWM_CDTYUPD_CDTYUPD_Msk (0xffffffu << PWM_CDTYUPD_CDTYUPD_Pos) /**< \brief (PWM_CDTYUPD) Channel Duty-Cycle Update */ +#define PWM_CDTYUPD_CDTYUPD(value) ((PWM_CDTYUPD_CDTYUPD_Msk & ((value) << PWM_CDTYUPD_CDTYUPD_Pos))) +/* -------- PWM_CPRD : (PWM Offset: N/A) PWM Channel Period Register -------- */ +#define PWM_CPRD_CPRD_Pos 0 +#define PWM_CPRD_CPRD_Msk (0xffffffu << PWM_CPRD_CPRD_Pos) /**< \brief (PWM_CPRD) Channel Period */ +#define PWM_CPRD_CPRD(value) ((PWM_CPRD_CPRD_Msk & ((value) << PWM_CPRD_CPRD_Pos))) +/* -------- PWM_CPRDUPD : (PWM Offset: N/A) PWM Channel Period Update Register -------- */ +#define PWM_CPRDUPD_CPRDUPD_Pos 0 +#define PWM_CPRDUPD_CPRDUPD_Msk (0xffffffu << PWM_CPRDUPD_CPRDUPD_Pos) /**< \brief (PWM_CPRDUPD) Channel Period Update */ +#define PWM_CPRDUPD_CPRDUPD(value) ((PWM_CPRDUPD_CPRDUPD_Msk & ((value) << PWM_CPRDUPD_CPRDUPD_Pos))) +/* -------- PWM_CCNT : (PWM Offset: N/A) PWM Channel Counter Register -------- */ +#define PWM_CCNT_CNT_Pos 0 +#define PWM_CCNT_CNT_Msk (0xffffffu << PWM_CCNT_CNT_Pos) /**< \brief (PWM_CCNT) Channel Counter Register */ +/* -------- PWM_DT : (PWM Offset: N/A) PWM Channel Dead Time Register -------- */ +#define PWM_DT_DTH_Pos 0 +#define PWM_DT_DTH_Msk (0xffffu << PWM_DT_DTH_Pos) /**< \brief (PWM_DT) Dead-Time Value for PWMHx Output */ +#define PWM_DT_DTH(value) ((PWM_DT_DTH_Msk & ((value) << PWM_DT_DTH_Pos))) +#define PWM_DT_DTL_Pos 16 +#define PWM_DT_DTL_Msk (0xffffu << PWM_DT_DTL_Pos) /**< \brief (PWM_DT) Dead-Time Value for PWMLx Output */ +#define PWM_DT_DTL(value) ((PWM_DT_DTL_Msk & ((value) << PWM_DT_DTL_Pos))) +/* -------- PWM_DTUPD : (PWM Offset: N/A) PWM Channel Dead Time Update Register -------- */ +#define PWM_DTUPD_DTHUPD_Pos 0 +#define PWM_DTUPD_DTHUPD_Msk (0xffffu << PWM_DTUPD_DTHUPD_Pos) /**< \brief (PWM_DTUPD) Dead-Time Value Update for PWMHx Output */ +#define PWM_DTUPD_DTHUPD(value) ((PWM_DTUPD_DTHUPD_Msk & ((value) << PWM_DTUPD_DTHUPD_Pos))) +#define PWM_DTUPD_DTLUPD_Pos 16 +#define PWM_DTUPD_DTLUPD_Msk (0xffffu << PWM_DTUPD_DTLUPD_Pos) /**< \brief (PWM_DTUPD) Dead-Time Value Update for PWMLx Output */ +#define PWM_DTUPD_DTLUPD(value) ((PWM_DTUPD_DTLUPD_Msk & ((value) << PWM_DTUPD_DTLUPD_Pos))) + +/*@}*/ + + +#endif /* _SAM3S_PWM_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_rstc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_rstc.h new file mode 100644 index 000000000..09cf75abe --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_rstc.h @@ -0,0 +1,73 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_RSTC_COMPONENT_ +#define _SAM3S_RSTC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Reset Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S_RSTC Reset Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Rstc hardware registers */ +typedef struct { + WoReg RSTC_CR; /**< \brief (Rstc Offset: 0x00) Control Register */ + RoReg RSTC_SR; /**< \brief (Rstc Offset: 0x04) Status Register */ + RwReg RSTC_MR; /**< \brief (Rstc Offset: 0x08) Mode Register */ +} Rstc; +#endif /* __ASSEMBLY__ */ +/* -------- RSTC_CR : (RSTC Offset: 0x00) Control Register -------- */ +#define RSTC_CR_PROCRST (0x1u << 0) /**< \brief (RSTC_CR) Processor Reset */ +#define RSTC_CR_PERRST (0x1u << 2) /**< \brief (RSTC_CR) Peripheral Reset */ +#define RSTC_CR_EXTRST (0x1u << 3) /**< \brief (RSTC_CR) External Reset */ +#define RSTC_CR_KEY_Pos 24 +#define RSTC_CR_KEY_Msk (0xffu << RSTC_CR_KEY_Pos) /**< \brief (RSTC_CR) Password */ +#define RSTC_CR_KEY(value) ((RSTC_CR_KEY_Msk & ((value) << RSTC_CR_KEY_Pos))) +/* -------- RSTC_SR : (RSTC Offset: 0x04) Status Register -------- */ +#define RSTC_SR_URSTS (0x1u << 0) /**< \brief (RSTC_SR) User Reset Status */ +#define RSTC_SR_RSTTYP_Pos 8 +#define RSTC_SR_RSTTYP_Msk (0x7u << RSTC_SR_RSTTYP_Pos) /**< \brief (RSTC_SR) Reset Type */ +#define RSTC_SR_NRSTL (0x1u << 16) /**< \brief (RSTC_SR) NRST Pin Level */ +#define RSTC_SR_SRCMP (0x1u << 17) /**< \brief (RSTC_SR) Software Reset Command in Progress */ +/* -------- RSTC_MR : (RSTC Offset: 0x08) Mode Register -------- */ +#define RSTC_MR_URSTEN (0x1u << 0) /**< \brief (RSTC_MR) User Reset Enable */ +#define RSTC_MR_URSTIEN (0x1u << 4) /**< \brief (RSTC_MR) User Reset Interrupt Enable */ +#define RSTC_MR_ERSTL_Pos 8 +#define RSTC_MR_ERSTL_Msk (0xfu << RSTC_MR_ERSTL_Pos) /**< \brief (RSTC_MR) External Reset Length */ +#define RSTC_MR_ERSTL(value) ((RSTC_MR_ERSTL_Msk & ((value) << RSTC_MR_ERSTL_Pos))) +#define RSTC_MR_KEY_Pos 24 +#define RSTC_MR_KEY_Msk (0xffu << RSTC_MR_KEY_Pos) /**< \brief (RSTC_MR) Password */ +#define RSTC_MR_KEY(value) ((RSTC_MR_KEY_Msk & ((value) << RSTC_MR_KEY_Pos))) + +/*@}*/ + + +#endif /* _SAM3S_RSTC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_rtc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_rtc.h new file mode 100644 index 000000000..598c8dc43 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_rtc.h @@ -0,0 +1,161 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_RTC_COMPONENT_ +#define _SAM3S_RTC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Real-time Clock */ +/* ============================================================================= */ +/** \addtogroup SAM3S_RTC Real-time Clock */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Rtc hardware registers */ +typedef struct { + RwReg RTC_CR; /**< \brief (Rtc Offset: 0x00) Control Register */ + RwReg RTC_MR; /**< \brief (Rtc Offset: 0x04) Mode Register */ + RwReg RTC_TIMR; /**< \brief (Rtc Offset: 0x08) Time Register */ + RwReg RTC_CALR; /**< \brief (Rtc Offset: 0x0C) Calendar Register */ + RwReg RTC_TIMALR; /**< \brief (Rtc Offset: 0x10) Time Alarm Register */ + RwReg RTC_CALALR; /**< \brief (Rtc Offset: 0x14) Calendar Alarm Register */ + RoReg RTC_SR; /**< \brief (Rtc Offset: 0x18) Status Register */ + WoReg RTC_SCCR; /**< \brief (Rtc Offset: 0x1C) Status Clear Command Register */ + WoReg RTC_IER; /**< \brief (Rtc Offset: 0x20) Interrupt Enable Register */ + WoReg RTC_IDR; /**< \brief (Rtc Offset: 0x24) Interrupt Disable Register */ + RoReg RTC_IMR; /**< \brief (Rtc Offset: 0x28) Interrupt Mask Register */ + RoReg RTC_VER; /**< \brief (Rtc Offset: 0x2C) Valid Entry Register */ +} Rtc; +#endif /* __ASSEMBLY__ */ +/* -------- RTC_CR : (RTC Offset: 0x00) Control Register -------- */ +#define RTC_CR_UPDTIM (0x1u << 0) /**< \brief (RTC_CR) Update Request Time Register */ +#define RTC_CR_UPDCAL (0x1u << 1) /**< \brief (RTC_CR) Update Request Calendar Register */ +#define RTC_CR_TIMEVSEL_Pos 8 +#define RTC_CR_TIMEVSEL_Msk (0x3u << RTC_CR_TIMEVSEL_Pos) /**< \brief (RTC_CR) Time Event Selection */ +#define RTC_CR_TIMEVSEL_MINUTE (0x0u << 8) /**< \brief (RTC_CR) Minute change */ +#define RTC_CR_TIMEVSEL_HOUR (0x1u << 8) /**< \brief (RTC_CR) Hour change */ +#define RTC_CR_TIMEVSEL_MIDNIGHT (0x2u << 8) /**< \brief (RTC_CR) Every day at midnight */ +#define RTC_CR_TIMEVSEL_NOON (0x3u << 8) /**< \brief (RTC_CR) Every day at noon */ +#define RTC_CR_CALEVSEL_Pos 16 +#define RTC_CR_CALEVSEL_Msk (0x3u << RTC_CR_CALEVSEL_Pos) /**< \brief (RTC_CR) Calendar Event Selection */ +#define RTC_CR_CALEVSEL_WEEK (0x0u << 16) /**< \brief (RTC_CR) Week change (every Monday at time 00:00:00) */ +#define RTC_CR_CALEVSEL_MONTH (0x1u << 16) /**< \brief (RTC_CR) Month change (every 01 of each month at time 00:00:00) */ +#define RTC_CR_CALEVSEL_YEAR (0x2u << 16) /**< \brief (RTC_CR) Year change (every January 1 at time 00:00:00) */ +/* -------- RTC_MR : (RTC Offset: 0x04) Mode Register -------- */ +#define RTC_MR_HRMOD (0x1u << 0) /**< \brief (RTC_MR) 12-/24-hour Mode */ +/* -------- RTC_TIMR : (RTC Offset: 0x08) Time Register -------- */ +#define RTC_TIMR_SEC_Pos 0 +#define RTC_TIMR_SEC_Msk (0x7fu << RTC_TIMR_SEC_Pos) /**< \brief (RTC_TIMR) Current Second */ +#define RTC_TIMR_SEC(value) ((RTC_TIMR_SEC_Msk & ((value) << RTC_TIMR_SEC_Pos))) +#define RTC_TIMR_MIN_Pos 8 +#define RTC_TIMR_MIN_Msk (0x7fu << RTC_TIMR_MIN_Pos) /**< \brief (RTC_TIMR) Current Minute */ +#define RTC_TIMR_MIN(value) ((RTC_TIMR_MIN_Msk & ((value) << RTC_TIMR_MIN_Pos))) +#define RTC_TIMR_HOUR_Pos 16 +#define RTC_TIMR_HOUR_Msk (0x3fu << RTC_TIMR_HOUR_Pos) /**< \brief (RTC_TIMR) Current Hour */ +#define RTC_TIMR_HOUR(value) ((RTC_TIMR_HOUR_Msk & ((value) << RTC_TIMR_HOUR_Pos))) +#define RTC_TIMR_AMPM (0x1u << 22) /**< \brief (RTC_TIMR) Ante Meridiem Post Meridiem Indicator */ +/* -------- RTC_CALR : (RTC Offset: 0x0C) Calendar Register -------- */ +#define RTC_CALR_CENT_Pos 0 +#define RTC_CALR_CENT_Msk (0x7fu << RTC_CALR_CENT_Pos) /**< \brief (RTC_CALR) Current Century */ +#define RTC_CALR_CENT(value) ((RTC_CALR_CENT_Msk & ((value) << RTC_CALR_CENT_Pos))) +#define RTC_CALR_YEAR_Pos 8 +#define RTC_CALR_YEAR_Msk (0xffu << RTC_CALR_YEAR_Pos) /**< \brief (RTC_CALR) Current Year */ +#define RTC_CALR_YEAR(value) ((RTC_CALR_YEAR_Msk & ((value) << RTC_CALR_YEAR_Pos))) +#define RTC_CALR_MONTH_Pos 16 +#define RTC_CALR_MONTH_Msk (0x1fu << RTC_CALR_MONTH_Pos) /**< \brief (RTC_CALR) Current Month */ +#define RTC_CALR_MONTH(value) ((RTC_CALR_MONTH_Msk & ((value) << RTC_CALR_MONTH_Pos))) +#define RTC_CALR_DAY_Pos 21 +#define RTC_CALR_DAY_Msk (0x7u << RTC_CALR_DAY_Pos) /**< \brief (RTC_CALR) Current Day in Current Week */ +#define RTC_CALR_DAY(value) ((RTC_CALR_DAY_Msk & ((value) << RTC_CALR_DAY_Pos))) +#define RTC_CALR_DATE_Pos 24 +#define RTC_CALR_DATE_Msk (0x3fu << RTC_CALR_DATE_Pos) /**< \brief (RTC_CALR) Current Day in Current Month */ +#define RTC_CALR_DATE(value) ((RTC_CALR_DATE_Msk & ((value) << RTC_CALR_DATE_Pos))) +/* -------- RTC_TIMALR : (RTC Offset: 0x10) Time Alarm Register -------- */ +#define RTC_TIMALR_SEC_Pos 0 +#define RTC_TIMALR_SEC_Msk (0x7fu << RTC_TIMALR_SEC_Pos) /**< \brief (RTC_TIMALR) Second Alarm */ +#define RTC_TIMALR_SEC(value) ((RTC_TIMALR_SEC_Msk & ((value) << RTC_TIMALR_SEC_Pos))) +#define RTC_TIMALR_SECEN (0x1u << 7) /**< \brief (RTC_TIMALR) Second Alarm Enable */ +#define RTC_TIMALR_MIN_Pos 8 +#define RTC_TIMALR_MIN_Msk (0x7fu << RTC_TIMALR_MIN_Pos) /**< \brief (RTC_TIMALR) Minute Alarm */ +#define RTC_TIMALR_MIN(value) ((RTC_TIMALR_MIN_Msk & ((value) << RTC_TIMALR_MIN_Pos))) +#define RTC_TIMALR_MINEN (0x1u << 15) /**< \brief (RTC_TIMALR) Minute Alarm Enable */ +#define RTC_TIMALR_HOUR_Pos 16 +#define RTC_TIMALR_HOUR_Msk (0x3fu << RTC_TIMALR_HOUR_Pos) /**< \brief (RTC_TIMALR) Hour Alarm */ +#define RTC_TIMALR_HOUR(value) ((RTC_TIMALR_HOUR_Msk & ((value) << RTC_TIMALR_HOUR_Pos))) +#define RTC_TIMALR_AMPM (0x1u << 22) /**< \brief (RTC_TIMALR) AM/PM Indicator */ +#define RTC_TIMALR_HOUREN (0x1u << 23) /**< \brief (RTC_TIMALR) Hour Alarm Enable */ +/* -------- RTC_CALALR : (RTC Offset: 0x14) Calendar Alarm Register -------- */ +#define RTC_CALALR_MONTH_Pos 16 +#define RTC_CALALR_MONTH_Msk (0x1fu << RTC_CALALR_MONTH_Pos) /**< \brief (RTC_CALALR) Month Alarm */ +#define RTC_CALALR_MONTH(value) ((RTC_CALALR_MONTH_Msk & ((value) << RTC_CALALR_MONTH_Pos))) +#define RTC_CALALR_MTHEN (0x1u << 23) /**< \brief (RTC_CALALR) Month Alarm Enable */ +#define RTC_CALALR_DATE_Pos 24 +#define RTC_CALALR_DATE_Msk (0x3fu << RTC_CALALR_DATE_Pos) /**< \brief (RTC_CALALR) Date Alarm */ +#define RTC_CALALR_DATE(value) ((RTC_CALALR_DATE_Msk & ((value) << RTC_CALALR_DATE_Pos))) +#define RTC_CALALR_DATEEN (0x1u << 31) /**< \brief (RTC_CALALR) Date Alarm Enable */ +/* -------- RTC_SR : (RTC Offset: 0x18) Status Register -------- */ +#define RTC_SR_ACKUPD (0x1u << 0) /**< \brief (RTC_SR) Acknowledge for Update */ +#define RTC_SR_ALARM (0x1u << 1) /**< \brief (RTC_SR) Alarm Flag */ +#define RTC_SR_SEC (0x1u << 2) /**< \brief (RTC_SR) Second Event */ +#define RTC_SR_TIMEV (0x1u << 3) /**< \brief (RTC_SR) Time Event */ +#define RTC_SR_CALEV (0x1u << 4) /**< \brief (RTC_SR) Calendar Event */ +/* -------- RTC_SCCR : (RTC Offset: 0x1C) Status Clear Command Register -------- */ +#define RTC_SCCR_ACKCLR (0x1u << 0) /**< \brief (RTC_SCCR) Acknowledge Clear */ +#define RTC_SCCR_ALRCLR (0x1u << 1) /**< \brief (RTC_SCCR) Alarm Clear */ +#define RTC_SCCR_SECCLR (0x1u << 2) /**< \brief (RTC_SCCR) Second Clear */ +#define RTC_SCCR_TIMCLR (0x1u << 3) /**< \brief (RTC_SCCR) Time Clear */ +#define RTC_SCCR_CALCLR (0x1u << 4) /**< \brief (RTC_SCCR) Calendar Clear */ +/* -------- RTC_IER : (RTC Offset: 0x20) Interrupt Enable Register -------- */ +#define RTC_IER_ACKEN (0x1u << 0) /**< \brief (RTC_IER) Acknowledge Update Interrupt Enable */ +#define RTC_IER_ALREN (0x1u << 1) /**< \brief (RTC_IER) Alarm Interrupt Enable */ +#define RTC_IER_SECEN (0x1u << 2) /**< \brief (RTC_IER) Second Event Interrupt Enable */ +#define RTC_IER_TIMEN (0x1u << 3) /**< \brief (RTC_IER) Time Event Interrupt Enable */ +#define RTC_IER_CALEN (0x1u << 4) /**< \brief (RTC_IER) Calendar Event Interrupt Enable */ +/* -------- RTC_IDR : (RTC Offset: 0x24) Interrupt Disable Register -------- */ +#define RTC_IDR_ACKDIS (0x1u << 0) /**< \brief (RTC_IDR) Acknowledge Update Interrupt Disable */ +#define RTC_IDR_ALRDIS (0x1u << 1) /**< \brief (RTC_IDR) Alarm Interrupt Disable */ +#define RTC_IDR_SECDIS (0x1u << 2) /**< \brief (RTC_IDR) Second Event Interrupt Disable */ +#define RTC_IDR_TIMDIS (0x1u << 3) /**< \brief (RTC_IDR) Time Event Interrupt Disable */ +#define RTC_IDR_CALDIS (0x1u << 4) /**< \brief (RTC_IDR) Calendar Event Interrupt Disable */ +/* -------- RTC_IMR : (RTC Offset: 0x28) Interrupt Mask Register -------- */ +#define RTC_IMR_ACK (0x1u << 0) /**< \brief (RTC_IMR) Acknowledge Update Interrupt Mask */ +#define RTC_IMR_ALR (0x1u << 1) /**< \brief (RTC_IMR) Alarm Interrupt Mask */ +#define RTC_IMR_SEC (0x1u << 2) /**< \brief (RTC_IMR) Second Event Interrupt Mask */ +#define RTC_IMR_TIM (0x1u << 3) /**< \brief (RTC_IMR) Time Event Interrupt Mask */ +#define RTC_IMR_CAL (0x1u << 4) /**< \brief (RTC_IMR) Calendar Event Interrupt Mask */ +/* -------- RTC_VER : (RTC Offset: 0x2C) Valid Entry Register -------- */ +#define RTC_VER_NVTIM (0x1u << 0) /**< \brief (RTC_VER) Non-valid Time */ +#define RTC_VER_NVCAL (0x1u << 1) /**< \brief (RTC_VER) Non-valid Calendar */ +#define RTC_VER_NVTIMALR (0x1u << 2) /**< \brief (RTC_VER) Non-valid Time Alarm */ +#define RTC_VER_NVCALALR (0x1u << 3) /**< \brief (RTC_VER) Non-valid Calendar Alarm */ + +/*@}*/ + + +#endif /* _SAM3S_RTC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_rtt.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_rtt.h new file mode 100644 index 000000000..df096229b --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_rtt.h @@ -0,0 +1,69 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_RTT_COMPONENT_ +#define _SAM3S_RTT_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Real-time Timer */ +/* ============================================================================= */ +/** \addtogroup SAM3S_RTT Real-time Timer */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Rtt hardware registers */ +typedef struct { + RwReg RTT_MR; /**< \brief (Rtt Offset: 0x00) Mode Register */ + RwReg RTT_AR; /**< \brief (Rtt Offset: 0x04) Alarm Register */ + RoReg RTT_VR; /**< \brief (Rtt Offset: 0x08) Value Register */ + RoReg RTT_SR; /**< \brief (Rtt Offset: 0x0C) Status Register */ +} Rtt; +#endif /* __ASSEMBLY__ */ +/* -------- RTT_MR : (RTT Offset: 0x00) Mode Register -------- */ +#define RTT_MR_RTPRES_Pos 0 +#define RTT_MR_RTPRES_Msk (0xffffu << RTT_MR_RTPRES_Pos) /**< \brief (RTT_MR) Real-time Timer Prescaler Value */ +#define RTT_MR_RTPRES(value) ((RTT_MR_RTPRES_Msk & ((value) << RTT_MR_RTPRES_Pos))) +#define RTT_MR_ALMIEN (0x1u << 16) /**< \brief (RTT_MR) Alarm Interrupt Enable */ +#define RTT_MR_RTTINCIEN (0x1u << 17) /**< \brief (RTT_MR) Real-time Timer Increment Interrupt Enable */ +#define RTT_MR_RTTRST (0x1u << 18) /**< \brief (RTT_MR) Real-time Timer Restart */ +/* -------- RTT_AR : (RTT Offset: 0x04) Alarm Register -------- */ +#define RTT_AR_ALMV_Pos 0 +#define RTT_AR_ALMV_Msk (0xffffffffu << RTT_AR_ALMV_Pos) /**< \brief (RTT_AR) Alarm Value */ +#define RTT_AR_ALMV(value) ((RTT_AR_ALMV_Msk & ((value) << RTT_AR_ALMV_Pos))) +/* -------- RTT_VR : (RTT Offset: 0x08) Value Register -------- */ +#define RTT_VR_CRTV_Pos 0 +#define RTT_VR_CRTV_Msk (0xffffffffu << RTT_VR_CRTV_Pos) /**< \brief (RTT_VR) Current Real-time Value */ +/* -------- RTT_SR : (RTT Offset: 0x0C) Status Register -------- */ +#define RTT_SR_ALMS (0x1u << 0) /**< \brief (RTT_SR) Real-time Alarm Status */ +#define RTT_SR_RTTINC (0x1u << 1) /**< \brief (RTT_SR) Real-time Timer Increment */ + +/*@}*/ + + +#endif /* _SAM3S_RTT_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_smc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_smc.h new file mode 100644 index 000000000..4797a6100 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_smc.h @@ -0,0 +1,144 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_SMC_COMPONENT_ +#define _SAM3S_SMC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Static Memory Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S_SMC Static Memory Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief SmcCs_number hardware registers */ +typedef struct { + RwReg SMC_SETUP; /**< \brief (SmcCs_number Offset: 0x0) SMC Setup Register */ + RwReg SMC_PULSE; /**< \brief (SmcCs_number Offset: 0x4) SMC Pulse Register */ + RwReg SMC_CYCLE; /**< \brief (SmcCs_number Offset: 0x8) SMC Cycle Register */ + RwReg SMC_MODE; /**< \brief (SmcCs_number Offset: 0xC) SMC Mode Register */ +} SmcCs_number; +/** \brief Smc hardware registers */ +#define SMCCS_NUMBER_NUMBER 5 +typedef struct { + SmcCs_number SMC_CS_NUMBER[SMCCS_NUMBER_NUMBER]; /**< \brief (Smc Offset: 0x0) CS_number = 0 .. 4 */ + RoReg Reserved1[12]; + RwReg SMC_OCMS; /**< \brief (Smc Offset: 0x80) SMC OCMS MODE Register */ + WoReg SMC_KEY1; /**< \brief (Smc Offset: 0x84) SMC OCMS KEY1 Register */ + WoReg SMC_KEY2; /**< \brief (Smc Offset: 0x88) SMC OCMS KEY2 Register */ + RoReg Reserved2[22]; + RwReg SMC_WPMR; /**< \brief (Smc Offset: 0xE4) SMC Write Protect Mode Register */ + RoReg SMC_WPSR; /**< \brief (Smc Offset: 0xE8) SMC Write Protect Status Register */ +} Smc; +#endif /* __ASSEMBLY__ */ +/* -------- SMC_SETUP : (SMC Offset: N/A) SMC Setup Register -------- */ +#define SMC_SETUP_NWE_SETUP_Pos 0 +#define SMC_SETUP_NWE_SETUP_Msk (0x3fu << SMC_SETUP_NWE_SETUP_Pos) /**< \brief (SMC_SETUP) NWE Setup Length */ +#define SMC_SETUP_NWE_SETUP(value) ((SMC_SETUP_NWE_SETUP_Msk & ((value) << SMC_SETUP_NWE_SETUP_Pos))) +#define SMC_SETUP_NCS_WR_SETUP_Pos 8 +#define SMC_SETUP_NCS_WR_SETUP_Msk (0x3fu << SMC_SETUP_NCS_WR_SETUP_Pos) /**< \brief (SMC_SETUP) NCS Setup Length in WRITE Access */ +#define SMC_SETUP_NCS_WR_SETUP(value) ((SMC_SETUP_NCS_WR_SETUP_Msk & ((value) << SMC_SETUP_NCS_WR_SETUP_Pos))) +#define SMC_SETUP_NRD_SETUP_Pos 16 +#define SMC_SETUP_NRD_SETUP_Msk (0x3fu << SMC_SETUP_NRD_SETUP_Pos) /**< \brief (SMC_SETUP) NRD Setup Length */ +#define SMC_SETUP_NRD_SETUP(value) ((SMC_SETUP_NRD_SETUP_Msk & ((value) << SMC_SETUP_NRD_SETUP_Pos))) +#define SMC_SETUP_NCS_RD_SETUP_Pos 24 +#define SMC_SETUP_NCS_RD_SETUP_Msk (0x3fu << SMC_SETUP_NCS_RD_SETUP_Pos) /**< \brief (SMC_SETUP) NCS Setup Length in READ Access */ +#define SMC_SETUP_NCS_RD_SETUP(value) ((SMC_SETUP_NCS_RD_SETUP_Msk & ((value) << SMC_SETUP_NCS_RD_SETUP_Pos))) +/* -------- SMC_PULSE : (SMC Offset: N/A) SMC Pulse Register -------- */ +#define SMC_PULSE_NWE_PULSE_Pos 0 +#define SMC_PULSE_NWE_PULSE_Msk (0x7fu << SMC_PULSE_NWE_PULSE_Pos) /**< \brief (SMC_PULSE) NWE Pulse Length */ +#define SMC_PULSE_NWE_PULSE(value) ((SMC_PULSE_NWE_PULSE_Msk & ((value) << SMC_PULSE_NWE_PULSE_Pos))) +#define SMC_PULSE_NCS_WR_PULSE_Pos 8 +#define SMC_PULSE_NCS_WR_PULSE_Msk (0x7fu << SMC_PULSE_NCS_WR_PULSE_Pos) /**< \brief (SMC_PULSE) NCS Pulse Length in WRITE Access */ +#define SMC_PULSE_NCS_WR_PULSE(value) ((SMC_PULSE_NCS_WR_PULSE_Msk & ((value) << SMC_PULSE_NCS_WR_PULSE_Pos))) +#define SMC_PULSE_NRD_PULSE_Pos 16 +#define SMC_PULSE_NRD_PULSE_Msk (0x7fu << SMC_PULSE_NRD_PULSE_Pos) /**< \brief (SMC_PULSE) NRD Pulse Length */ +#define SMC_PULSE_NRD_PULSE(value) ((SMC_PULSE_NRD_PULSE_Msk & ((value) << SMC_PULSE_NRD_PULSE_Pos))) +#define SMC_PULSE_NCS_RD_PULSE_Pos 24 +#define SMC_PULSE_NCS_RD_PULSE_Msk (0x7fu << SMC_PULSE_NCS_RD_PULSE_Pos) /**< \brief (SMC_PULSE) NCS Pulse Length in READ Access */ +#define SMC_PULSE_NCS_RD_PULSE(value) ((SMC_PULSE_NCS_RD_PULSE_Msk & ((value) << SMC_PULSE_NCS_RD_PULSE_Pos))) +/* -------- SMC_CYCLE : (SMC Offset: N/A) SMC Cycle Register -------- */ +#define SMC_CYCLE_NWE_CYCLE_Pos 0 +#define SMC_CYCLE_NWE_CYCLE_Msk (0x1ffu << SMC_CYCLE_NWE_CYCLE_Pos) /**< \brief (SMC_CYCLE) Total Write Cycle Length */ +#define SMC_CYCLE_NWE_CYCLE(value) ((SMC_CYCLE_NWE_CYCLE_Msk & ((value) << SMC_CYCLE_NWE_CYCLE_Pos))) +#define SMC_CYCLE_NRD_CYCLE_Pos 16 +#define SMC_CYCLE_NRD_CYCLE_Msk (0x1ffu << SMC_CYCLE_NRD_CYCLE_Pos) /**< \brief (SMC_CYCLE) Total Read Cycle Length */ +#define SMC_CYCLE_NRD_CYCLE(value) ((SMC_CYCLE_NRD_CYCLE_Msk & ((value) << SMC_CYCLE_NRD_CYCLE_Pos))) +/* -------- SMC_MODE : (SMC Offset: N/A) SMC Mode Register -------- */ +#define SMC_MODE_READ_MODE (0x1u << 0) /**< \brief (SMC_MODE) */ +#define SMC_MODE_WRITE_MODE (0x1u << 1) /**< \brief (SMC_MODE) */ +#define SMC_MODE_EXNW_MODE_Pos 4 +#define SMC_MODE_EXNW_MODE_Msk (0x3u << SMC_MODE_EXNW_MODE_Pos) /**< \brief (SMC_MODE) NWAIT Mode */ +#define SMC_MODE_EXNW_MODE_DISABLED (0x0u << 4) /**< \brief (SMC_MODE) Disabled */ +#define SMC_MODE_EXNW_MODE_FROZEN (0x2u << 4) /**< \brief (SMC_MODE) Frozen Mode */ +#define SMC_MODE_EXNW_MODE_READY (0x3u << 4) /**< \brief (SMC_MODE) Ready Mode */ +#define SMC_MODE_DBW_Pos 12 +#define SMC_MODE_DBW_Msk (0x3u << SMC_MODE_DBW_Pos) /**< \brief (SMC_MODE) Data Bus Width */ +#define SMC_MODE_DBW_8_BIT (0x0u << 12) /**< \brief (SMC_MODE) 8-bit bus */ +#define SMC_MODE_DBW_16_BIT (0x1u << 12) /**< \brief (SMC_MODE) 16-bit bus */ +#define SMC_MODE_DBW_32_BIT (0x2u << 12) /**< \brief (SMC_MODE) 32-bit bus */ +#define SMC_MODE_TDF_CYCLES_Pos 16 +#define SMC_MODE_TDF_CYCLES_Msk (0xfu << SMC_MODE_TDF_CYCLES_Pos) /**< \brief (SMC_MODE) Data Float Time */ +#define SMC_MODE_TDF_CYCLES(value) ((SMC_MODE_TDF_CYCLES_Msk & ((value) << SMC_MODE_TDF_CYCLES_Pos))) +#define SMC_MODE_TDF_MODE (0x1u << 20) /**< \brief (SMC_MODE) TDF Optimization */ +#define SMC_MODE_PMEN (0x1u << 24) /**< \brief (SMC_MODE) Page Mode Enabled */ +#define SMC_MODE_PS_Pos 28 +#define SMC_MODE_PS_Msk (0x3u << SMC_MODE_PS_Pos) /**< \brief (SMC_MODE) Page Size */ +#define SMC_MODE_PS_4_BYTE (0x0u << 28) /**< \brief (SMC_MODE) 4-byte page */ +#define SMC_MODE_PS_8_BYTE (0x1u << 28) /**< \brief (SMC_MODE) 8-byte page */ +#define SMC_MODE_PS_16_BYTE (0x2u << 28) /**< \brief (SMC_MODE) 16-byte page */ +#define SMC_MODE_PS_32_BYTE (0x3u << 28) /**< \brief (SMC_MODE) 32-byte page */ +/* -------- SMC_OCMS : (SMC Offset: 0x80) SMC OCMS MODE Register -------- */ +#define SMC_OCMS_SMSE (0x1u << 0) /**< \brief (SMC_OCMS) Static Memory Controller Scrambling Enable */ +#define SMC_OCMS_CS0SE (0x1u << 16) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ +#define SMC_OCMS_CS1SE (0x1u << 17) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ +#define SMC_OCMS_CS2SE (0x1u << 18) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ +#define SMC_OCMS_CS3SE (0x1u << 19) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ +/* -------- SMC_KEY1 : (SMC Offset: 0x84) SMC OCMS KEY1 Register -------- */ +#define SMC_KEY1_KEY1_Pos 0 +#define SMC_KEY1_KEY1_Msk (0xffffffffu << SMC_KEY1_KEY1_Pos) /**< \brief (SMC_KEY1) Off Chip Memory Scrambling (OCMS) Key Part 1 */ +#define SMC_KEY1_KEY1(value) ((SMC_KEY1_KEY1_Msk & ((value) << SMC_KEY1_KEY1_Pos))) +/* -------- SMC_KEY2 : (SMC Offset: 0x88) SMC OCMS KEY2 Register -------- */ +#define SMC_KEY2_KEY2_Pos 0 +#define SMC_KEY2_KEY2_Msk (0xffffffffu << SMC_KEY2_KEY2_Pos) /**< \brief (SMC_KEY2) Off Chip Memory Scrambling (OCMS) Key Part 2 */ +#define SMC_KEY2_KEY2(value) ((SMC_KEY2_KEY2_Msk & ((value) << SMC_KEY2_KEY2_Pos))) +/* -------- SMC_WPMR : (SMC Offset: 0xE4) SMC Write Protect Mode Register -------- */ +#define SMC_WPMR_WPEN (0x1u << 0) /**< \brief (SMC_WPMR) Write Protect Enable */ +#define SMC_WPMR_WPKEY_Pos 8 +#define SMC_WPMR_WPKEY_Msk (0xffffffu << SMC_WPMR_WPKEY_Pos) /**< \brief (SMC_WPMR) Write Protect KEY */ +#define SMC_WPMR_WPKEY(value) ((SMC_WPMR_WPKEY_Msk & ((value) << SMC_WPMR_WPKEY_Pos))) +/* -------- SMC_WPSR : (SMC Offset: 0xE8) SMC Write Protect Status Register -------- */ +#define SMC_WPSR_WPVS (0x1u << 0) /**< \brief (SMC_WPSR) Write Protect Enable */ +#define SMC_WPSR_WPVSRC_Pos 8 +#define SMC_WPSR_WPVSRC_Msk (0xffffu << SMC_WPSR_WPVSRC_Pos) /**< \brief (SMC_WPSR) Write Protect Violation Source */ + +/*@}*/ + + +#endif /* _SAM3S_SMC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_spi.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_spi.h new file mode 100644 index 000000000..fed4db1c3 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_spi.h @@ -0,0 +1,227 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_SPI_COMPONENT_ +#define _SAM3S_SPI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Serial Peripheral Interface */ +/* ============================================================================= */ +/** \addtogroup SAM3S_SPI Serial Peripheral Interface */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Spi hardware registers */ +typedef struct { + WoReg SPI_CR; /**< \brief (Spi Offset: 0x00) Control Register */ + RwReg SPI_MR; /**< \brief (Spi Offset: 0x04) Mode Register */ + RoReg SPI_RDR; /**< \brief (Spi Offset: 0x08) Receive Data Register */ + WoReg SPI_TDR; /**< \brief (Spi Offset: 0x0C) Transmit Data Register */ + RoReg SPI_SR; /**< \brief (Spi Offset: 0x10) Status Register */ + WoReg SPI_IER; /**< \brief (Spi Offset: 0x14) Interrupt Enable Register */ + WoReg SPI_IDR; /**< \brief (Spi Offset: 0x18) Interrupt Disable Register */ + RoReg SPI_IMR; /**< \brief (Spi Offset: 0x1C) Interrupt Mask Register */ + RoReg Reserved1[4]; + RwReg SPI_CSR[4]; /**< \brief (Spi Offset: 0x30) Chip Select Register */ + RoReg Reserved2[41]; + RwReg SPI_WPMR; /**< \brief (Spi Offset: 0xE4) Write Protection Control Register */ + RoReg SPI_WPSR; /**< \brief (Spi Offset: 0xE8) Write Protection Status Register */ + RoReg Reserved3[5]; + RwReg SPI_RPR; /**< \brief (Spi Offset: 0x100) Receive Pointer Register */ + RwReg SPI_RCR; /**< \brief (Spi Offset: 0x104) Receive Counter Register */ + RwReg SPI_TPR; /**< \brief (Spi Offset: 0x108) Transmit Pointer Register */ + RwReg SPI_TCR; /**< \brief (Spi Offset: 0x10C) Transmit Counter Register */ + RwReg SPI_RNPR; /**< \brief (Spi Offset: 0x110) Receive Next Pointer Register */ + RwReg SPI_RNCR; /**< \brief (Spi Offset: 0x114) Receive Next Counter Register */ + RwReg SPI_TNPR; /**< \brief (Spi Offset: 0x118) Transmit Next Pointer Register */ + RwReg SPI_TNCR; /**< \brief (Spi Offset: 0x11C) Transmit Next Counter Register */ + WoReg SPI_PTCR; /**< \brief (Spi Offset: 0x120) Transfer Control Register */ + RoReg SPI_PTSR; /**< \brief (Spi Offset: 0x124) Transfer Status Register */ +} Spi; +#endif /* __ASSEMBLY__ */ +/* -------- SPI_CR : (SPI Offset: 0x00) Control Register -------- */ +#define SPI_CR_SPIEN (0x1u << 0) /**< \brief (SPI_CR) SPI Enable */ +#define SPI_CR_SPIDIS (0x1u << 1) /**< \brief (SPI_CR) SPI Disable */ +#define SPI_CR_SWRST (0x1u << 7) /**< \brief (SPI_CR) SPI Software Reset */ +#define SPI_CR_LASTXFER (0x1u << 24) /**< \brief (SPI_CR) Last Transfer */ +/* -------- SPI_MR : (SPI Offset: 0x04) Mode Register -------- */ +#define SPI_MR_MSTR (0x1u << 0) /**< \brief (SPI_MR) Master/Slave Mode */ +#define SPI_MR_PS (0x1u << 1) /**< \brief (SPI_MR) Peripheral Select */ +#define SPI_MR_PCSDEC (0x1u << 2) /**< \brief (SPI_MR) Chip Select Decode */ +#define SPI_MR_MODFDIS (0x1u << 4) /**< \brief (SPI_MR) Mode Fault Detection */ +#define SPI_MR_WDRBT (0x1u << 5) /**< \brief (SPI_MR) Wait Data Read Before Transfer */ +#define SPI_MR_LLB (0x1u << 7) /**< \brief (SPI_MR) Local Loopback Enable */ +#define SPI_MR_PCS_Pos 16 +#define SPI_MR_PCS_Msk (0xfu << SPI_MR_PCS_Pos) /**< \brief (SPI_MR) Peripheral Chip Select */ +#define SPI_MR_PCS(value) ((SPI_MR_PCS_Msk & ((value) << SPI_MR_PCS_Pos))) +#define SPI_MR_DLYBCS_Pos 24 +#define SPI_MR_DLYBCS_Msk (0xffu << SPI_MR_DLYBCS_Pos) /**< \brief (SPI_MR) Delay Between Chip Selects */ +#define SPI_MR_DLYBCS(value) ((SPI_MR_DLYBCS_Msk & ((value) << SPI_MR_DLYBCS_Pos))) +/* -------- SPI_RDR : (SPI Offset: 0x08) Receive Data Register -------- */ +#define SPI_RDR_RD_Pos 0 +#define SPI_RDR_RD_Msk (0xffffu << SPI_RDR_RD_Pos) /**< \brief (SPI_RDR) Receive Data */ +#define SPI_RDR_PCS_Pos 16 +#define SPI_RDR_PCS_Msk (0xfu << SPI_RDR_PCS_Pos) /**< \brief (SPI_RDR) Peripheral Chip Select */ +/* -------- SPI_TDR : (SPI Offset: 0x0C) Transmit Data Register -------- */ +#define SPI_TDR_TD_Pos 0 +#define SPI_TDR_TD_Msk (0xffffu << SPI_TDR_TD_Pos) /**< \brief (SPI_TDR) Transmit Data */ +#define SPI_TDR_TD(value) ((SPI_TDR_TD_Msk & ((value) << SPI_TDR_TD_Pos))) +#define SPI_TDR_PCS_Pos 16 +#define SPI_TDR_PCS_Msk (0xfu << SPI_TDR_PCS_Pos) /**< \brief (SPI_TDR) Peripheral Chip Select */ +#define SPI_TDR_PCS(value) ((SPI_TDR_PCS_Msk & ((value) << SPI_TDR_PCS_Pos))) +#define SPI_TDR_LASTXFER (0x1u << 24) /**< \brief (SPI_TDR) Last Transfer */ +/* -------- SPI_SR : (SPI Offset: 0x10) Status Register -------- */ +#define SPI_SR_RDRF (0x1u << 0) /**< \brief (SPI_SR) Receive Data Register Full */ +#define SPI_SR_TDRE (0x1u << 1) /**< \brief (SPI_SR) Transmit Data Register Empty */ +#define SPI_SR_MODF (0x1u << 2) /**< \brief (SPI_SR) Mode Fault Error */ +#define SPI_SR_OVRES (0x1u << 3) /**< \brief (SPI_SR) Overrun Error Status */ +#define SPI_SR_ENDRX (0x1u << 4) /**< \brief (SPI_SR) End of RX buffer */ +#define SPI_SR_ENDTX (0x1u << 5) /**< \brief (SPI_SR) End of TX buffer */ +#define SPI_SR_RXBUFF (0x1u << 6) /**< \brief (SPI_SR) RX Buffer Full */ +#define SPI_SR_TXBUFE (0x1u << 7) /**< \brief (SPI_SR) TX Buffer Empty */ +#define SPI_SR_NSSR (0x1u << 8) /**< \brief (SPI_SR) NSS Rising */ +#define SPI_SR_TXEMPTY (0x1u << 9) /**< \brief (SPI_SR) Transmission Registers Empty */ +#define SPI_SR_UNDES (0x1u << 10) /**< \brief (SPI_SR) Underrun Error Status (Slave Mode Only) */ +#define SPI_SR_SPIENS (0x1u << 16) /**< \brief (SPI_SR) SPI Enable Status */ +/* -------- SPI_IER : (SPI Offset: 0x14) Interrupt Enable Register -------- */ +#define SPI_IER_RDRF (0x1u << 0) /**< \brief (SPI_IER) Receive Data Register Full Interrupt Enable */ +#define SPI_IER_TDRE (0x1u << 1) /**< \brief (SPI_IER) SPI Transmit Data Register Empty Interrupt Enable */ +#define SPI_IER_MODF (0x1u << 2) /**< \brief (SPI_IER) Mode Fault Error Interrupt Enable */ +#define SPI_IER_OVRES (0x1u << 3) /**< \brief (SPI_IER) Overrun Error Interrupt Enable */ +#define SPI_IER_ENDRX (0x1u << 4) /**< \brief (SPI_IER) End of Receive Buffer Interrupt Enable */ +#define SPI_IER_ENDTX (0x1u << 5) /**< \brief (SPI_IER) End of Transmit Buffer Interrupt Enable */ +#define SPI_IER_RXBUFF (0x1u << 6) /**< \brief (SPI_IER) Receive Buffer Full Interrupt Enable */ +#define SPI_IER_TXBUFE (0x1u << 7) /**< \brief (SPI_IER) Transmit Buffer Empty Interrupt Enable */ +#define SPI_IER_NSSR (0x1u << 8) /**< \brief (SPI_IER) NSS Rising Interrupt Enable */ +#define SPI_IER_TXEMPTY (0x1u << 9) /**< \brief (SPI_IER) Transmission Registers Empty Enable */ +#define SPI_IER_UNDES (0x1u << 10) /**< \brief (SPI_IER) Underrun Error Interrupt Enable */ +/* -------- SPI_IDR : (SPI Offset: 0x18) Interrupt Disable Register -------- */ +#define SPI_IDR_RDRF (0x1u << 0) /**< \brief (SPI_IDR) Receive Data Register Full Interrupt Disable */ +#define SPI_IDR_TDRE (0x1u << 1) /**< \brief (SPI_IDR) SPI Transmit Data Register Empty Interrupt Disable */ +#define SPI_IDR_MODF (0x1u << 2) /**< \brief (SPI_IDR) Mode Fault Error Interrupt Disable */ +#define SPI_IDR_OVRES (0x1u << 3) /**< \brief (SPI_IDR) Overrun Error Interrupt Disable */ +#define SPI_IDR_ENDRX (0x1u << 4) /**< \brief (SPI_IDR) End of Receive Buffer Interrupt Disable */ +#define SPI_IDR_ENDTX (0x1u << 5) /**< \brief (SPI_IDR) End of Transmit Buffer Interrupt Disable */ +#define SPI_IDR_RXBUFF (0x1u << 6) /**< \brief (SPI_IDR) Receive Buffer Full Interrupt Disable */ +#define SPI_IDR_TXBUFE (0x1u << 7) /**< \brief (SPI_IDR) Transmit Buffer Empty Interrupt Disable */ +#define SPI_IDR_NSSR (0x1u << 8) /**< \brief (SPI_IDR) NSS Rising Interrupt Disable */ +#define SPI_IDR_TXEMPTY (0x1u << 9) /**< \brief (SPI_IDR) Transmission Registers Empty Disable */ +#define SPI_IDR_UNDES (0x1u << 10) /**< \brief (SPI_IDR) Underrun Error Interrupt Disable */ +/* -------- SPI_IMR : (SPI Offset: 0x1C) Interrupt Mask Register -------- */ +#define SPI_IMR_RDRF (0x1u << 0) /**< \brief (SPI_IMR) Receive Data Register Full Interrupt Mask */ +#define SPI_IMR_TDRE (0x1u << 1) /**< \brief (SPI_IMR) SPI Transmit Data Register Empty Interrupt Mask */ +#define SPI_IMR_MODF (0x1u << 2) /**< \brief (SPI_IMR) Mode Fault Error Interrupt Mask */ +#define SPI_IMR_OVRES (0x1u << 3) /**< \brief (SPI_IMR) Overrun Error Interrupt Mask */ +#define SPI_IMR_ENDRX (0x1u << 4) /**< \brief (SPI_IMR) End of Receive Buffer Interrupt Mask */ +#define SPI_IMR_ENDTX (0x1u << 5) /**< \brief (SPI_IMR) End of Transmit Buffer Interrupt Mask */ +#define SPI_IMR_RXBUFF (0x1u << 6) /**< \brief (SPI_IMR) Receive Buffer Full Interrupt Mask */ +#define SPI_IMR_TXBUFE (0x1u << 7) /**< \brief (SPI_IMR) Transmit Buffer Empty Interrupt Mask */ +#define SPI_IMR_NSSR (0x1u << 8) /**< \brief (SPI_IMR) NSS Rising Interrupt Mask */ +#define SPI_IMR_TXEMPTY (0x1u << 9) /**< \brief (SPI_IMR) Transmission Registers Empty Mask */ +#define SPI_IMR_UNDES (0x1u << 10) /**< \brief (SPI_IMR) Underrun Error Interrupt Mask */ +/* -------- SPI_CSR[4] : (SPI Offset: 0x30) Chip Select Register -------- */ +#define SPI_CSR_CPOL (0x1u << 0) /**< \brief (SPI_CSR[4]) Clock Polarity */ +#define SPI_CSR_NCPHA (0x1u << 1) /**< \brief (SPI_CSR[4]) Clock Phase */ +#define SPI_CSR_CSNAAT (0x1u << 2) /**< \brief (SPI_CSR[4]) Chip Select Not Active After Transfer (Ignored if CSAAT = 1) */ +#define SPI_CSR_CSAAT (0x1u << 3) /**< \brief (SPI_CSR[4]) Chip Select Not Active After Transfer (Ignored if CSAAT = 1) */ +#define SPI_CSR_BITS_Pos 4 +#define SPI_CSR_BITS_Msk (0xfu << SPI_CSR_BITS_Pos) /**< \brief (SPI_CSR[4]) Bits Per Transfer */ +#define SPI_CSR_BITS_8_BIT (0x0u << 4) /**< \brief (SPI_CSR[4]) 8 bits for transfer */ +#define SPI_CSR_BITS_9_BIT (0x1u << 4) /**< \brief (SPI_CSR[4]) 9 bits for transfer */ +#define SPI_CSR_BITS_10_BIT (0x2u << 4) /**< \brief (SPI_CSR[4]) 10 bits for transfer */ +#define SPI_CSR_BITS_11_BIT (0x3u << 4) /**< \brief (SPI_CSR[4]) 11 bits for transfer */ +#define SPI_CSR_BITS_12_BIT (0x4u << 4) /**< \brief (SPI_CSR[4]) 12 bits for transfer */ +#define SPI_CSR_BITS_13_BIT (0x5u << 4) /**< \brief (SPI_CSR[4]) 13 bits for transfer */ +#define SPI_CSR_BITS_14_BIT (0x6u << 4) /**< \brief (SPI_CSR[4]) 14 bits for transfer */ +#define SPI_CSR_BITS_15_BIT (0x7u << 4) /**< \brief (SPI_CSR[4]) 15 bits for transfer */ +#define SPI_CSR_BITS_16_BIT (0x8u << 4) /**< \brief (SPI_CSR[4]) 16 bits for transfer */ +#define SPI_CSR_SCBR_Pos 8 +#define SPI_CSR_SCBR_Msk (0xffu << SPI_CSR_SCBR_Pos) /**< \brief (SPI_CSR[4]) Serial Clock Baud Rate */ +#define SPI_CSR_SCBR(value) ((SPI_CSR_SCBR_Msk & ((value) << SPI_CSR_SCBR_Pos))) +#define SPI_CSR_DLYBS_Pos 16 +#define SPI_CSR_DLYBS_Msk (0xffu << SPI_CSR_DLYBS_Pos) /**< \brief (SPI_CSR[4]) Delay Before SPCK */ +#define SPI_CSR_DLYBS(value) ((SPI_CSR_DLYBS_Msk & ((value) << SPI_CSR_DLYBS_Pos))) +#define SPI_CSR_DLYBCT_Pos 24 +#define SPI_CSR_DLYBCT_Msk (0xffu << SPI_CSR_DLYBCT_Pos) /**< \brief (SPI_CSR[4]) Delay Between Consecutive Transfers */ +#define SPI_CSR_DLYBCT(value) ((SPI_CSR_DLYBCT_Msk & ((value) << SPI_CSR_DLYBCT_Pos))) +/* -------- SPI_WPMR : (SPI Offset: 0xE4) Write Protection Control Register -------- */ +#define SPI_WPMR_SPIWPEN (0x1u << 0) /**< \brief (SPI_WPMR) SPI Write Protection Enable */ +#define SPI_WPMR_SPIWPKEY_Pos 8 +#define SPI_WPMR_SPIWPKEY_Msk (0xffffffu << SPI_WPMR_SPIWPKEY_Pos) /**< \brief (SPI_WPMR) SPI Write Protection Key Password */ +#define SPI_WPMR_SPIWPKEY(value) ((SPI_WPMR_SPIWPKEY_Msk & ((value) << SPI_WPMR_SPIWPKEY_Pos))) +/* -------- SPI_WPSR : (SPI Offset: 0xE8) Write Protection Status Register -------- */ +#define SPI_WPSR_SPIWPVS_Pos 0 +#define SPI_WPSR_SPIWPVS_Msk (0x7u << SPI_WPSR_SPIWPVS_Pos) /**< \brief (SPI_WPSR) SPI Write Protection Violation Status */ +#define SPI_WPSR_SPIWPVSRC_Pos 8 +#define SPI_WPSR_SPIWPVSRC_Msk (0xffu << SPI_WPSR_SPIWPVSRC_Pos) /**< \brief (SPI_WPSR) SPI Write Protection Violation Source */ +/* -------- SPI_RPR : (SPI Offset: 0x100) Receive Pointer Register -------- */ +#define SPI_RPR_RXPTR_Pos 0 +#define SPI_RPR_RXPTR_Msk (0xffffffffu << SPI_RPR_RXPTR_Pos) /**< \brief (SPI_RPR) Receive Pointer Register */ +#define SPI_RPR_RXPTR(value) ((SPI_RPR_RXPTR_Msk & ((value) << SPI_RPR_RXPTR_Pos))) +/* -------- SPI_RCR : (SPI Offset: 0x104) Receive Counter Register -------- */ +#define SPI_RCR_RXCTR_Pos 0 +#define SPI_RCR_RXCTR_Msk (0xffffu << SPI_RCR_RXCTR_Pos) /**< \brief (SPI_RCR) Receive Counter Register */ +#define SPI_RCR_RXCTR(value) ((SPI_RCR_RXCTR_Msk & ((value) << SPI_RCR_RXCTR_Pos))) +/* -------- SPI_TPR : (SPI Offset: 0x108) Transmit Pointer Register -------- */ +#define SPI_TPR_TXPTR_Pos 0 +#define SPI_TPR_TXPTR_Msk (0xffffffffu << SPI_TPR_TXPTR_Pos) /**< \brief (SPI_TPR) Transmit Counter Register */ +#define SPI_TPR_TXPTR(value) ((SPI_TPR_TXPTR_Msk & ((value) << SPI_TPR_TXPTR_Pos))) +/* -------- SPI_TCR : (SPI Offset: 0x10C) Transmit Counter Register -------- */ +#define SPI_TCR_TXCTR_Pos 0 +#define SPI_TCR_TXCTR_Msk (0xffffu << SPI_TCR_TXCTR_Pos) /**< \brief (SPI_TCR) Transmit Counter Register */ +#define SPI_TCR_TXCTR(value) ((SPI_TCR_TXCTR_Msk & ((value) << SPI_TCR_TXCTR_Pos))) +/* -------- SPI_RNPR : (SPI Offset: 0x110) Receive Next Pointer Register -------- */ +#define SPI_RNPR_RXNPTR_Pos 0 +#define SPI_RNPR_RXNPTR_Msk (0xffffffffu << SPI_RNPR_RXNPTR_Pos) /**< \brief (SPI_RNPR) Receive Next Pointer */ +#define SPI_RNPR_RXNPTR(value) ((SPI_RNPR_RXNPTR_Msk & ((value) << SPI_RNPR_RXNPTR_Pos))) +/* -------- SPI_RNCR : (SPI Offset: 0x114) Receive Next Counter Register -------- */ +#define SPI_RNCR_RXNCTR_Pos 0 +#define SPI_RNCR_RXNCTR_Msk (0xffffu << SPI_RNCR_RXNCTR_Pos) /**< \brief (SPI_RNCR) Receive Next Counter */ +#define SPI_RNCR_RXNCTR(value) ((SPI_RNCR_RXNCTR_Msk & ((value) << SPI_RNCR_RXNCTR_Pos))) +/* -------- SPI_TNPR : (SPI Offset: 0x118) Transmit Next Pointer Register -------- */ +#define SPI_TNPR_TXNPTR_Pos 0 +#define SPI_TNPR_TXNPTR_Msk (0xffffffffu << SPI_TNPR_TXNPTR_Pos) /**< \brief (SPI_TNPR) Transmit Next Pointer */ +#define SPI_TNPR_TXNPTR(value) ((SPI_TNPR_TXNPTR_Msk & ((value) << SPI_TNPR_TXNPTR_Pos))) +/* -------- SPI_TNCR : (SPI Offset: 0x11C) Transmit Next Counter Register -------- */ +#define SPI_TNCR_TXNCTR_Pos 0 +#define SPI_TNCR_TXNCTR_Msk (0xffffu << SPI_TNCR_TXNCTR_Pos) /**< \brief (SPI_TNCR) Transmit Counter Next */ +#define SPI_TNCR_TXNCTR(value) ((SPI_TNCR_TXNCTR_Msk & ((value) << SPI_TNCR_TXNCTR_Pos))) +/* -------- SPI_PTCR : (SPI Offset: 0x120) Transfer Control Register -------- */ +#define SPI_PTCR_RXTEN (0x1u << 0) /**< \brief (SPI_PTCR) Receiver Transfer Enable */ +#define SPI_PTCR_RXTDIS (0x1u << 1) /**< \brief (SPI_PTCR) Receiver Transfer Disable */ +#define SPI_PTCR_TXTEN (0x1u << 8) /**< \brief (SPI_PTCR) Transmitter Transfer Enable */ +#define SPI_PTCR_TXTDIS (0x1u << 9) /**< \brief (SPI_PTCR) Transmitter Transfer Disable */ +/* -------- SPI_PTSR : (SPI Offset: 0x124) Transfer Status Register -------- */ +#define SPI_PTSR_RXTEN (0x1u << 0) /**< \brief (SPI_PTSR) Receiver Transfer Enable */ +#define SPI_PTSR_TXTEN (0x1u << 8) /**< \brief (SPI_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3S_SPI_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_ssc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_ssc.h new file mode 100644 index 000000000..954006152 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_ssc.h @@ -0,0 +1,337 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_SSC_COMPONENT_ +#define _SAM3S_SSC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Synchronous Serial Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S_SSC Synchronous Serial Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Ssc hardware registers */ +typedef struct { + WoReg SSC_CR; /**< \brief (Ssc Offset: 0x0) Control Register */ + RwReg SSC_CMR; /**< \brief (Ssc Offset: 0x4) Clock Mode Register */ + RoReg Reserved1[2]; + RwReg SSC_RCMR; /**< \brief (Ssc Offset: 0x10) Receive Clock Mode Register */ + RwReg SSC_RFMR; /**< \brief (Ssc Offset: 0x14) Receive Frame Mode Register */ + RwReg SSC_TCMR; /**< \brief (Ssc Offset: 0x18) Transmit Clock Mode Register */ + RwReg SSC_TFMR; /**< \brief (Ssc Offset: 0x1C) Transmit Frame Mode Register */ + RoReg SSC_RHR; /**< \brief (Ssc Offset: 0x20) Receive Holding Register */ + WoReg SSC_THR; /**< \brief (Ssc Offset: 0x24) Transmit Holding Register */ + RoReg Reserved2[2]; + RoReg SSC_RSHR; /**< \brief (Ssc Offset: 0x30) Receive Sync. Holding Register */ + RwReg SSC_TSHR; /**< \brief (Ssc Offset: 0x34) Transmit Sync. Holding Register */ + RwReg SSC_RC0R; /**< \brief (Ssc Offset: 0x38) Receive Compare 0 Register */ + RwReg SSC_RC1R; /**< \brief (Ssc Offset: 0x3C) Receive Compare 1 Register */ + RoReg SSC_SR; /**< \brief (Ssc Offset: 0x40) Status Register */ + WoReg SSC_IER; /**< \brief (Ssc Offset: 0x44) Interrupt Enable Register */ + WoReg SSC_IDR; /**< \brief (Ssc Offset: 0x48) Interrupt Disable Register */ + RoReg SSC_IMR; /**< \brief (Ssc Offset: 0x4C) Interrupt Mask Register */ + RoReg Reserved3[37]; + RwReg SSC_WPMR; /**< \brief (Ssc Offset: 0xE4) Write Protect Mode Register */ + RoReg SSC_WPSR; /**< \brief (Ssc Offset: 0xE8) Write Protect Status Register */ + RoReg Reserved4[5]; + RwReg SSC_RPR; /**< \brief (Ssc Offset: 0x100) Receive Pointer Register */ + RwReg SSC_RCR; /**< \brief (Ssc Offset: 0x104) Receive Counter Register */ + RwReg SSC_TPR; /**< \brief (Ssc Offset: 0x108) Transmit Pointer Register */ + RwReg SSC_TCR; /**< \brief (Ssc Offset: 0x10C) Transmit Counter Register */ + RwReg SSC_RNPR; /**< \brief (Ssc Offset: 0x110) Receive Next Pointer Register */ + RwReg SSC_RNCR; /**< \brief (Ssc Offset: 0x114) Receive Next Counter Register */ + RwReg SSC_TNPR; /**< \brief (Ssc Offset: 0x118) Transmit Next Pointer Register */ + RwReg SSC_TNCR; /**< \brief (Ssc Offset: 0x11C) Transmit Next Counter Register */ + WoReg SSC_PTCR; /**< \brief (Ssc Offset: 0x120) Transfer Control Register */ + RoReg SSC_PTSR; /**< \brief (Ssc Offset: 0x124) Transfer Status Register */ +} Ssc; +#endif /* __ASSEMBLY__ */ +/* -------- SSC_CR : (SSC Offset: 0x0) Control Register -------- */ +#define SSC_CR_RXEN (0x1u << 0) /**< \brief (SSC_CR) Receive Enable */ +#define SSC_CR_RXDIS (0x1u << 1) /**< \brief (SSC_CR) Receive Disable */ +#define SSC_CR_TXEN (0x1u << 8) /**< \brief (SSC_CR) Transmit Enable */ +#define SSC_CR_TXDIS (0x1u << 9) /**< \brief (SSC_CR) Transmit Disable */ +#define SSC_CR_SWRST (0x1u << 15) /**< \brief (SSC_CR) Software Reset */ +/* -------- SSC_CMR : (SSC Offset: 0x4) Clock Mode Register -------- */ +#define SSC_CMR_DIV_Pos 0 +#define SSC_CMR_DIV_Msk (0xfffu << SSC_CMR_DIV_Pos) /**< \brief (SSC_CMR) Clock Divider */ +#define SSC_CMR_DIV(value) ((SSC_CMR_DIV_Msk & ((value) << SSC_CMR_DIV_Pos))) +/* -------- SSC_RCMR : (SSC Offset: 0x10) Receive Clock Mode Register -------- */ +#define SSC_RCMR_CKS_Pos 0 +#define SSC_RCMR_CKS_Msk (0x3u << SSC_RCMR_CKS_Pos) /**< \brief (SSC_RCMR) Receive Clock Selection */ +#define SSC_RCMR_CKS_MCK (0x0u << 0) /**< \brief (SSC_RCMR) Divided Clock */ +#define SSC_RCMR_CKS_TK (0x1u << 0) /**< \brief (SSC_RCMR) TK Clock signal */ +#define SSC_RCMR_CKS_RK (0x2u << 0) /**< \brief (SSC_RCMR) RK pin */ +#define SSC_RCMR_CKO_Pos 2 +#define SSC_RCMR_CKO_Msk (0x7u << SSC_RCMR_CKO_Pos) /**< \brief (SSC_RCMR) Receive Clock Output Mode Selection */ +#define SSC_RCMR_CKO_NONE (0x0u << 2) /**< \brief (SSC_RCMR) None */ +#define SSC_RCMR_CKO_CONTINUOUS (0x1u << 2) /**< \brief (SSC_RCMR) Continuous Receive Clock */ +#define SSC_RCMR_CKO_TRANSFER (0x2u << 2) /**< \brief (SSC_RCMR) Receive Clock only during data transfers */ +#define SSC_RCMR_CKI (0x1u << 5) /**< \brief (SSC_RCMR) Receive Clock Inversion */ +#define SSC_RCMR_CKG_Pos 6 +#define SSC_RCMR_CKG_Msk (0x3u << SSC_RCMR_CKG_Pos) /**< \brief (SSC_RCMR) Receive Clock Gating Selection */ +#define SSC_RCMR_CKG_NONE (0x0u << 6) /**< \brief (SSC_RCMR) None */ +#define SSC_RCMR_CKG_CONTINUOUS (0x1u << 6) /**< \brief (SSC_RCMR) Continuous Receive Clock */ +#define SSC_RCMR_CKG_TRANSFER (0x2u << 6) /**< \brief (SSC_RCMR) Receive Clock only during data transfers */ +#define SSC_RCMR_START_Pos 8 +#define SSC_RCMR_START_Msk (0xfu << SSC_RCMR_START_Pos) /**< \brief (SSC_RCMR) Receive Start Selection */ +#define SSC_RCMR_START_CONTINUOUS (0x0u << 8) /**< \brief (SSC_RCMR) Continuous, as soon as the receiver is enabled, and immediately after the end of transfer of the previous data. */ +#define SSC_RCMR_START_TRANSMIT (0x1u << 8) /**< \brief (SSC_RCMR) Transmit start */ +#define SSC_RCMR_START_RF_LOW (0x2u << 8) /**< \brief (SSC_RCMR) Detection of a low level on RF signal */ +#define SSC_RCMR_START_RF_HIGH (0x3u << 8) /**< \brief (SSC_RCMR) Detection of a high level on RF signal */ +#define SSC_RCMR_START_RF_FALLING (0x4u << 8) /**< \brief (SSC_RCMR) Detection of a falling edge on RF signal */ +#define SSC_RCMR_START_RF_RISING (0x5u << 8) /**< \brief (SSC_RCMR) Detection of a rising edge on RF signal */ +#define SSC_RCMR_START_RF_LEVEL (0x6u << 8) /**< \brief (SSC_RCMR) Detection of any level change on RF signal */ +#define SSC_RCMR_START_RF_EDGE (0x7u << 8) /**< \brief (SSC_RCMR) Detection of any edge on RF signal */ +#define SSC_RCMR_START_CMP_0 (0x8u << 8) /**< \brief (SSC_RCMR) Compare 0 */ +#define SSC_RCMR_STOP (0x1u << 12) /**< \brief (SSC_RCMR) Receive Stop Selection */ +#define SSC_RCMR_STTDLY_Pos 16 +#define SSC_RCMR_STTDLY_Msk (0xffu << SSC_RCMR_STTDLY_Pos) /**< \brief (SSC_RCMR) Receive Start Delay */ +#define SSC_RCMR_STTDLY(value) ((SSC_RCMR_STTDLY_Msk & ((value) << SSC_RCMR_STTDLY_Pos))) +#define SSC_RCMR_PERIOD_Pos 24 +#define SSC_RCMR_PERIOD_Msk (0xffu << SSC_RCMR_PERIOD_Pos) /**< \brief (SSC_RCMR) Receive Period Divider Selection */ +#define SSC_RCMR_PERIOD(value) ((SSC_RCMR_PERIOD_Msk & ((value) << SSC_RCMR_PERIOD_Pos))) +/* -------- SSC_RFMR : (SSC Offset: 0x14) Receive Frame Mode Register -------- */ +#define SSC_RFMR_DATLEN_Pos 0 +#define SSC_RFMR_DATLEN_Msk (0x1fu << SSC_RFMR_DATLEN_Pos) /**< \brief (SSC_RFMR) Data Length */ +#define SSC_RFMR_DATLEN(value) ((SSC_RFMR_DATLEN_Msk & ((value) << SSC_RFMR_DATLEN_Pos))) +#define SSC_RFMR_LOOP (0x1u << 5) /**< \brief (SSC_RFMR) Loop Mode */ +#define SSC_RFMR_MSBF (0x1u << 7) /**< \brief (SSC_RFMR) Most Significant Bit First */ +#define SSC_RFMR_DATNB_Pos 8 +#define SSC_RFMR_DATNB_Msk (0xfu << SSC_RFMR_DATNB_Pos) /**< \brief (SSC_RFMR) Data Number per Frame */ +#define SSC_RFMR_DATNB(value) ((SSC_RFMR_DATNB_Msk & ((value) << SSC_RFMR_DATNB_Pos))) +#define SSC_RFMR_FSLEN_Pos 16 +#define SSC_RFMR_FSLEN_Msk (0xfu << SSC_RFMR_FSLEN_Pos) /**< \brief (SSC_RFMR) Receive Frame Sync Length */ +#define SSC_RFMR_FSLEN(value) ((SSC_RFMR_FSLEN_Msk & ((value) << SSC_RFMR_FSLEN_Pos))) +#define SSC_RFMR_FSOS_Pos 20 +#define SSC_RFMR_FSOS_Msk (0x7u << SSC_RFMR_FSOS_Pos) /**< \brief (SSC_RFMR) Receive Frame Sync Output Selection */ +#define SSC_RFMR_FSOS_NONE (0x0u << 20) /**< \brief (SSC_RFMR) None */ +#define SSC_RFMR_FSOS_NEGATIVE (0x1u << 20) /**< \brief (SSC_RFMR) Negative Pulse */ +#define SSC_RFMR_FSOS_POSITIVE (0x2u << 20) /**< \brief (SSC_RFMR) Positive Pulse */ +#define SSC_RFMR_FSOS_LOW (0x3u << 20) /**< \brief (SSC_RFMR) Driven Low during data transfer */ +#define SSC_RFMR_FSOS_HIGH (0x4u << 20) /**< \brief (SSC_RFMR) Driven High during data transfer */ +#define SSC_RFMR_FSOS_TOGGLING (0x5u << 20) /**< \brief (SSC_RFMR) Toggling at each start of data transfer */ +#define SSC_RFMR_FSEDGE (0x1u << 24) /**< \brief (SSC_RFMR) Frame Sync Edge Detection */ +#define SSC_RFMR_FSEDGE_POSITIVE (0x0u << 24) /**< \brief (SSC_RFMR) Positive Edge Detection */ +#define SSC_RFMR_FSEDGE_NEGATIVE (0x1u << 24) /**< \brief (SSC_RFMR) Negative Edge Detection */ +#define SSC_RFMR_FSLEN_EXT_Pos 28 +#define SSC_RFMR_FSLEN_EXT_Msk (0xfu << SSC_RFMR_FSLEN_EXT_Pos) /**< \brief (SSC_RFMR) FSLEN Field Extension */ +#define SSC_RFMR_FSLEN_EXT(value) ((SSC_RFMR_FSLEN_EXT_Msk & ((value) << SSC_RFMR_FSLEN_EXT_Pos))) +/* -------- SSC_TCMR : (SSC Offset: 0x18) Transmit Clock Mode Register -------- */ +#define SSC_TCMR_CKS_Pos 0 +#define SSC_TCMR_CKS_Msk (0x3u << SSC_TCMR_CKS_Pos) /**< \brief (SSC_TCMR) Transmit Clock Selection */ +#define SSC_TCMR_CKS_MCK (0x0u << 0) /**< \brief (SSC_TCMR) Divided Clock */ +#define SSC_TCMR_CKS_TK (0x1u << 0) /**< \brief (SSC_TCMR) TK Clock signal */ +#define SSC_TCMR_CKS_RK (0x2u << 0) /**< \brief (SSC_TCMR) RK pin */ +#define SSC_TCMR_CKO_Pos 2 +#define SSC_TCMR_CKO_Msk (0x7u << SSC_TCMR_CKO_Pos) /**< \brief (SSC_TCMR) Transmit Clock Output Mode Selection */ +#define SSC_TCMR_CKO_NONE (0x0u << 2) /**< \brief (SSC_TCMR) None */ +#define SSC_TCMR_CKO_CONTINUOUS (0x1u << 2) /**< \brief (SSC_TCMR) Continuous Receive Clock */ +#define SSC_TCMR_CKO_TRANSFER (0x2u << 2) /**< \brief (SSC_TCMR) Transmit Clock only during data transfers */ +#define SSC_TCMR_CKI (0x1u << 5) /**< \brief (SSC_TCMR) Transmit Clock Inversion */ +#define SSC_TCMR_CKG_Pos 6 +#define SSC_TCMR_CKG_Msk (0x3u << SSC_TCMR_CKG_Pos) /**< \brief (SSC_TCMR) Transmit Clock Gating Selection */ +#define SSC_TCMR_CKG_NONE (0x0u << 6) /**< \brief (SSC_TCMR) None */ +#define SSC_TCMR_CKG_CONTINUOUS (0x1u << 6) /**< \brief (SSC_TCMR) Transmit Clock enabled only if TF Low */ +#define SSC_TCMR_CKG_TRANSFER (0x2u << 6) /**< \brief (SSC_TCMR) Transmit Clock enabled only if TF High */ +#define SSC_TCMR_START_Pos 8 +#define SSC_TCMR_START_Msk (0xfu << SSC_TCMR_START_Pos) /**< \brief (SSC_TCMR) Transmit Start Selection */ +#define SSC_TCMR_START_CONTINUOUS (0x0u << 8) /**< \brief (SSC_TCMR) Continuous, as soon as a word is written in the SSC_THR Register (if Transmit is enabled), and immediately after the end of transfer of the previous data. */ +#define SSC_TCMR_START_RECEIVE (0x1u << 8) /**< \brief (SSC_TCMR) Receive start */ +#define SSC_TCMR_START_RF_LOW (0x2u << 8) /**< \brief (SSC_TCMR) Detection of a low level on TF signal */ +#define SSC_TCMR_START_RF_HIGH (0x3u << 8) /**< \brief (SSC_TCMR) Detection of a high level on TF signal */ +#define SSC_TCMR_START_RF_FALLING (0x4u << 8) /**< \brief (SSC_TCMR) Detection of a falling edge on TF signal */ +#define SSC_TCMR_START_RF_RISING (0x5u << 8) /**< \brief (SSC_TCMR) Detection of a rising edge on TF signal */ +#define SSC_TCMR_START_RF_LEVEL (0x6u << 8) /**< \brief (SSC_TCMR) Detection of any level change on TF signal */ +#define SSC_TCMR_START_RF_EDGE (0x7u << 8) /**< \brief (SSC_TCMR) Detection of any edge on TF signal */ +#define SSC_TCMR_START_CMP_0 (0x8u << 8) /**< \brief (SSC_TCMR) Compare 0 */ +#define SSC_TCMR_STTDLY_Pos 16 +#define SSC_TCMR_STTDLY_Msk (0xffu << SSC_TCMR_STTDLY_Pos) /**< \brief (SSC_TCMR) Transmit Start Delay */ +#define SSC_TCMR_STTDLY(value) ((SSC_TCMR_STTDLY_Msk & ((value) << SSC_TCMR_STTDLY_Pos))) +#define SSC_TCMR_PERIOD_Pos 24 +#define SSC_TCMR_PERIOD_Msk (0xffu << SSC_TCMR_PERIOD_Pos) /**< \brief (SSC_TCMR) Transmit Period Divider Selection */ +#define SSC_TCMR_PERIOD(value) ((SSC_TCMR_PERIOD_Msk & ((value) << SSC_TCMR_PERIOD_Pos))) +/* -------- SSC_TFMR : (SSC Offset: 0x1C) Transmit Frame Mode Register -------- */ +#define SSC_TFMR_DATLEN_Pos 0 +#define SSC_TFMR_DATLEN_Msk (0x1fu << SSC_TFMR_DATLEN_Pos) /**< \brief (SSC_TFMR) Data Length */ +#define SSC_TFMR_DATLEN(value) ((SSC_TFMR_DATLEN_Msk & ((value) << SSC_TFMR_DATLEN_Pos))) +#define SSC_TFMR_DATDEF (0x1u << 5) /**< \brief (SSC_TFMR) Data Default Value */ +#define SSC_TFMR_MSBF (0x1u << 7) /**< \brief (SSC_TFMR) Most Significant Bit First */ +#define SSC_TFMR_DATNB_Pos 8 +#define SSC_TFMR_DATNB_Msk (0xfu << SSC_TFMR_DATNB_Pos) /**< \brief (SSC_TFMR) Data Number per frame */ +#define SSC_TFMR_DATNB(value) ((SSC_TFMR_DATNB_Msk & ((value) << SSC_TFMR_DATNB_Pos))) +#define SSC_TFMR_FSLEN_Pos 16 +#define SSC_TFMR_FSLEN_Msk (0xfu << SSC_TFMR_FSLEN_Pos) /**< \brief (SSC_TFMR) Transmit Frame Sync Length */ +#define SSC_TFMR_FSLEN(value) ((SSC_TFMR_FSLEN_Msk & ((value) << SSC_TFMR_FSLEN_Pos))) +#define SSC_TFMR_FSOS_Pos 20 +#define SSC_TFMR_FSOS_Msk (0x7u << SSC_TFMR_FSOS_Pos) /**< \brief (SSC_TFMR) Transmit Frame Sync Output Selection */ +#define SSC_TFMR_FSOS_NONE (0x0u << 20) /**< \brief (SSC_TFMR) None */ +#define SSC_TFMR_FSOS_NEGATIVE (0x1u << 20) /**< \brief (SSC_TFMR) Negative Pulse */ +#define SSC_TFMR_FSOS_POSITIVE (0x2u << 20) /**< \brief (SSC_TFMR) Positive Pulse */ +#define SSC_TFMR_FSOS_LOW (0x3u << 20) /**< \brief (SSC_TFMR) Driven Low during data transfer */ +#define SSC_TFMR_FSOS_HIGH (0x4u << 20) /**< \brief (SSC_TFMR) Driven High during data transfer */ +#define SSC_TFMR_FSOS_TOGGLING (0x5u << 20) /**< \brief (SSC_TFMR) Toggling at each start of data transfer */ +#define SSC_TFMR_FSDEN (0x1u << 23) /**< \brief (SSC_TFMR) Frame Sync Data Enable */ +#define SSC_TFMR_FSEDGE (0x1u << 24) /**< \brief (SSC_TFMR) Frame Sync Edge Detection */ +#define SSC_TFMR_FSEDGE_POSITIVE (0x0u << 24) /**< \brief (SSC_TFMR) Positive Edge Detection */ +#define SSC_TFMR_FSEDGE_NEGATIVE (0x1u << 24) /**< \brief (SSC_TFMR) Negative Edge Detection */ +#define SSC_TFMR_FSLEN_EXT_Pos 28 +#define SSC_TFMR_FSLEN_EXT_Msk (0xfu << SSC_TFMR_FSLEN_EXT_Pos) /**< \brief (SSC_TFMR) FSLEN Field Extension */ +#define SSC_TFMR_FSLEN_EXT(value) ((SSC_TFMR_FSLEN_EXT_Msk & ((value) << SSC_TFMR_FSLEN_EXT_Pos))) +/* -------- SSC_RHR : (SSC Offset: 0x20) Receive Holding Register -------- */ +#define SSC_RHR_RDAT_Pos 0 +#define SSC_RHR_RDAT_Msk (0xffffffffu << SSC_RHR_RDAT_Pos) /**< \brief (SSC_RHR) Receive Data */ +/* -------- SSC_THR : (SSC Offset: 0x24) Transmit Holding Register -------- */ +#define SSC_THR_TDAT_Pos 0 +#define SSC_THR_TDAT_Msk (0xffffffffu << SSC_THR_TDAT_Pos) /**< \brief (SSC_THR) Transmit Data */ +#define SSC_THR_TDAT(value) ((SSC_THR_TDAT_Msk & ((value) << SSC_THR_TDAT_Pos))) +/* -------- SSC_RSHR : (SSC Offset: 0x30) Receive Sync. Holding Register -------- */ +#define SSC_RSHR_RSDAT_Pos 0 +#define SSC_RSHR_RSDAT_Msk (0xffffu << SSC_RSHR_RSDAT_Pos) /**< \brief (SSC_RSHR) Receive Synchronization Data */ +/* -------- SSC_TSHR : (SSC Offset: 0x34) Transmit Sync. Holding Register -------- */ +#define SSC_TSHR_TSDAT_Pos 0 +#define SSC_TSHR_TSDAT_Msk (0xffffu << SSC_TSHR_TSDAT_Pos) /**< \brief (SSC_TSHR) Transmit Synchronization Data */ +#define SSC_TSHR_TSDAT(value) ((SSC_TSHR_TSDAT_Msk & ((value) << SSC_TSHR_TSDAT_Pos))) +/* -------- SSC_RC0R : (SSC Offset: 0x38) Receive Compare 0 Register -------- */ +#define SSC_RC0R_CP0_Pos 0 +#define SSC_RC0R_CP0_Msk (0xffffu << SSC_RC0R_CP0_Pos) /**< \brief (SSC_RC0R) Receive Compare Data 0 */ +#define SSC_RC0R_CP0(value) ((SSC_RC0R_CP0_Msk & ((value) << SSC_RC0R_CP0_Pos))) +/* -------- SSC_RC1R : (SSC Offset: 0x3C) Receive Compare 1 Register -------- */ +#define SSC_RC1R_CP1_Pos 0 +#define SSC_RC1R_CP1_Msk (0xffffu << SSC_RC1R_CP1_Pos) /**< \brief (SSC_RC1R) Receive Compare Data 1 */ +#define SSC_RC1R_CP1(value) ((SSC_RC1R_CP1_Msk & ((value) << SSC_RC1R_CP1_Pos))) +/* -------- SSC_SR : (SSC Offset: 0x40) Status Register -------- */ +#define SSC_SR_TXRDY (0x1u << 0) /**< \brief (SSC_SR) Transmit Ready */ +#define SSC_SR_TXEMPTY (0x1u << 1) /**< \brief (SSC_SR) Transmit Empty */ +#define SSC_SR_ENDTX (0x1u << 2) /**< \brief (SSC_SR) End of Transmission */ +#define SSC_SR_TXBUFE (0x1u << 3) /**< \brief (SSC_SR) Transmit Buffer Empty */ +#define SSC_SR_RXRDY (0x1u << 4) /**< \brief (SSC_SR) Receive Ready */ +#define SSC_SR_OVRUN (0x1u << 5) /**< \brief (SSC_SR) Receive Overrun */ +#define SSC_SR_ENDRX (0x1u << 6) /**< \brief (SSC_SR) End of Reception */ +#define SSC_SR_RXBUFF (0x1u << 7) /**< \brief (SSC_SR) Receive Buffer Full */ +#define SSC_SR_CP0 (0x1u << 8) /**< \brief (SSC_SR) Compare 0 */ +#define SSC_SR_CP1 (0x1u << 9) /**< \brief (SSC_SR) Compare 1 */ +#define SSC_SR_TXSYN (0x1u << 10) /**< \brief (SSC_SR) Transmit Sync */ +#define SSC_SR_RXSYN (0x1u << 11) /**< \brief (SSC_SR) Receive Sync */ +#define SSC_SR_TXEN (0x1u << 16) /**< \brief (SSC_SR) Transmit Enable */ +#define SSC_SR_RXEN (0x1u << 17) /**< \brief (SSC_SR) Receive Enable */ +/* -------- SSC_IER : (SSC Offset: 0x44) Interrupt Enable Register -------- */ +#define SSC_IER_TXRDY (0x1u << 0) /**< \brief (SSC_IER) Transmit Ready Interrupt Enable */ +#define SSC_IER_TXEMPTY (0x1u << 1) /**< \brief (SSC_IER) Transmit Empty Interrupt Enable */ +#define SSC_IER_ENDTX (0x1u << 2) /**< \brief (SSC_IER) End of Transmission Interrupt Enable */ +#define SSC_IER_TXBUFE (0x1u << 3) /**< \brief (SSC_IER) Transmit Buffer Empty Interrupt Enable */ +#define SSC_IER_RXRDY (0x1u << 4) /**< \brief (SSC_IER) Receive Ready Interrupt Enable */ +#define SSC_IER_OVRUN (0x1u << 5) /**< \brief (SSC_IER) Receive Overrun Interrupt Enable */ +#define SSC_IER_ENDRX (0x1u << 6) /**< \brief (SSC_IER) End of Reception Interrupt Enable */ +#define SSC_IER_RXBUFF (0x1u << 7) /**< \brief (SSC_IER) Receive Buffer Full Interrupt Enable */ +#define SSC_IER_CP0 (0x1u << 8) /**< \brief (SSC_IER) Compare 0 Interrupt Enable */ +#define SSC_IER_CP1 (0x1u << 9) /**< \brief (SSC_IER) Compare 1 Interrupt Enable */ +#define SSC_IER_TXSYN (0x1u << 10) /**< \brief (SSC_IER) Tx Sync Interrupt Enable */ +#define SSC_IER_RXSYN (0x1u << 11) /**< \brief (SSC_IER) Rx Sync Interrupt Enable */ +/* -------- SSC_IDR : (SSC Offset: 0x48) Interrupt Disable Register -------- */ +#define SSC_IDR_TXRDY (0x1u << 0) /**< \brief (SSC_IDR) Transmit Ready Interrupt Disable */ +#define SSC_IDR_TXEMPTY (0x1u << 1) /**< \brief (SSC_IDR) Transmit Empty Interrupt Disable */ +#define SSC_IDR_ENDTX (0x1u << 2) /**< \brief (SSC_IDR) End of Transmission Interrupt Disable */ +#define SSC_IDR_TXBUFE (0x1u << 3) /**< \brief (SSC_IDR) Transmit Buffer Empty Interrupt Disable */ +#define SSC_IDR_RXRDY (0x1u << 4) /**< \brief (SSC_IDR) Receive Ready Interrupt Disable */ +#define SSC_IDR_OVRUN (0x1u << 5) /**< \brief (SSC_IDR) Receive Overrun Interrupt Disable */ +#define SSC_IDR_ENDRX (0x1u << 6) /**< \brief (SSC_IDR) End of Reception Interrupt Disable */ +#define SSC_IDR_RXBUFF (0x1u << 7) /**< \brief (SSC_IDR) Receive Buffer Full Interrupt Disable */ +#define SSC_IDR_CP0 (0x1u << 8) /**< \brief (SSC_IDR) Compare 0 Interrupt Disable */ +#define SSC_IDR_CP1 (0x1u << 9) /**< \brief (SSC_IDR) Compare 1 Interrupt Disable */ +#define SSC_IDR_TXSYN (0x1u << 10) /**< \brief (SSC_IDR) Tx Sync Interrupt Enable */ +#define SSC_IDR_RXSYN (0x1u << 11) /**< \brief (SSC_IDR) Rx Sync Interrupt Enable */ +/* -------- SSC_IMR : (SSC Offset: 0x4C) Interrupt Mask Register -------- */ +#define SSC_IMR_TXRDY (0x1u << 0) /**< \brief (SSC_IMR) Transmit Ready Interrupt Mask */ +#define SSC_IMR_TXEMPTY (0x1u << 1) /**< \brief (SSC_IMR) Transmit Empty Interrupt Mask */ +#define SSC_IMR_ENDTX (0x1u << 2) /**< \brief (SSC_IMR) End of Transmission Interrupt Mask */ +#define SSC_IMR_TXBUFE (0x1u << 3) /**< \brief (SSC_IMR) Transmit Buffer Empty Interrupt Mask */ +#define SSC_IMR_RXRDY (0x1u << 4) /**< \brief (SSC_IMR) Receive Ready Interrupt Mask */ +#define SSC_IMR_OVRUN (0x1u << 5) /**< \brief (SSC_IMR) Receive Overrun Interrupt Mask */ +#define SSC_IMR_ENDRX (0x1u << 6) /**< \brief (SSC_IMR) End of Reception Interrupt Mask */ +#define SSC_IMR_RXBUFF (0x1u << 7) /**< \brief (SSC_IMR) Receive Buffer Full Interrupt Mask */ +#define SSC_IMR_CP0 (0x1u << 8) /**< \brief (SSC_IMR) Compare 0 Interrupt Mask */ +#define SSC_IMR_CP1 (0x1u << 9) /**< \brief (SSC_IMR) Compare 1 Interrupt Mask */ +#define SSC_IMR_TXSYN (0x1u << 10) /**< \brief (SSC_IMR) Tx Sync Interrupt Mask */ +#define SSC_IMR_RXSYN (0x1u << 11) /**< \brief (SSC_IMR) Rx Sync Interrupt Mask */ +/* -------- SSC_WPMR : (SSC Offset: 0xE4) Write Protect Mode Register -------- */ +#define SSC_WPMR_WPEN (0x1u << 0) /**< \brief (SSC_WPMR) Write Protect Enable */ +#define SSC_WPMR_WPKEY_Pos 8 +#define SSC_WPMR_WPKEY_Msk (0xffffffu << SSC_WPMR_WPKEY_Pos) /**< \brief (SSC_WPMR) Write Protect KEY */ +#define SSC_WPMR_WPKEY(value) ((SSC_WPMR_WPKEY_Msk & ((value) << SSC_WPMR_WPKEY_Pos))) +/* -------- SSC_WPSR : (SSC Offset: 0xE8) Write Protect Status Register -------- */ +#define SSC_WPSR_WPVS (0x1u << 0) /**< \brief (SSC_WPSR) Write Protect Violation Status */ +#define SSC_WPSR_WPVSRC_Pos 8 +#define SSC_WPSR_WPVSRC_Msk (0xffffu << SSC_WPSR_WPVSRC_Pos) /**< \brief (SSC_WPSR) Write Protect Violation Source */ +/* -------- SSC_RPR : (SSC Offset: 0x100) Receive Pointer Register -------- */ +#define SSC_RPR_RXPTR_Pos 0 +#define SSC_RPR_RXPTR_Msk (0xffffffffu << SSC_RPR_RXPTR_Pos) /**< \brief (SSC_RPR) Receive Pointer Register */ +#define SSC_RPR_RXPTR(value) ((SSC_RPR_RXPTR_Msk & ((value) << SSC_RPR_RXPTR_Pos))) +/* -------- SSC_RCR : (SSC Offset: 0x104) Receive Counter Register -------- */ +#define SSC_RCR_RXCTR_Pos 0 +#define SSC_RCR_RXCTR_Msk (0xffffu << SSC_RCR_RXCTR_Pos) /**< \brief (SSC_RCR) Receive Counter Register */ +#define SSC_RCR_RXCTR(value) ((SSC_RCR_RXCTR_Msk & ((value) << SSC_RCR_RXCTR_Pos))) +/* -------- SSC_TPR : (SSC Offset: 0x108) Transmit Pointer Register -------- */ +#define SSC_TPR_TXPTR_Pos 0 +#define SSC_TPR_TXPTR_Msk (0xffffffffu << SSC_TPR_TXPTR_Pos) /**< \brief (SSC_TPR) Transmit Counter Register */ +#define SSC_TPR_TXPTR(value) ((SSC_TPR_TXPTR_Msk & ((value) << SSC_TPR_TXPTR_Pos))) +/* -------- SSC_TCR : (SSC Offset: 0x10C) Transmit Counter Register -------- */ +#define SSC_TCR_TXCTR_Pos 0 +#define SSC_TCR_TXCTR_Msk (0xffffu << SSC_TCR_TXCTR_Pos) /**< \brief (SSC_TCR) Transmit Counter Register */ +#define SSC_TCR_TXCTR(value) ((SSC_TCR_TXCTR_Msk & ((value) << SSC_TCR_TXCTR_Pos))) +/* -------- SSC_RNPR : (SSC Offset: 0x110) Receive Next Pointer Register -------- */ +#define SSC_RNPR_RXNPTR_Pos 0 +#define SSC_RNPR_RXNPTR_Msk (0xffffffffu << SSC_RNPR_RXNPTR_Pos) /**< \brief (SSC_RNPR) Receive Next Pointer */ +#define SSC_RNPR_RXNPTR(value) ((SSC_RNPR_RXNPTR_Msk & ((value) << SSC_RNPR_RXNPTR_Pos))) +/* -------- SSC_RNCR : (SSC Offset: 0x114) Receive Next Counter Register -------- */ +#define SSC_RNCR_RXNCTR_Pos 0 +#define SSC_RNCR_RXNCTR_Msk (0xffffu << SSC_RNCR_RXNCTR_Pos) /**< \brief (SSC_RNCR) Receive Next Counter */ +#define SSC_RNCR_RXNCTR(value) ((SSC_RNCR_RXNCTR_Msk & ((value) << SSC_RNCR_RXNCTR_Pos))) +/* -------- SSC_TNPR : (SSC Offset: 0x118) Transmit Next Pointer Register -------- */ +#define SSC_TNPR_TXNPTR_Pos 0 +#define SSC_TNPR_TXNPTR_Msk (0xffffffffu << SSC_TNPR_TXNPTR_Pos) /**< \brief (SSC_TNPR) Transmit Next Pointer */ +#define SSC_TNPR_TXNPTR(value) ((SSC_TNPR_TXNPTR_Msk & ((value) << SSC_TNPR_TXNPTR_Pos))) +/* -------- SSC_TNCR : (SSC Offset: 0x11C) Transmit Next Counter Register -------- */ +#define SSC_TNCR_TXNCTR_Pos 0 +#define SSC_TNCR_TXNCTR_Msk (0xffffu << SSC_TNCR_TXNCTR_Pos) /**< \brief (SSC_TNCR) Transmit Counter Next */ +#define SSC_TNCR_TXNCTR(value) ((SSC_TNCR_TXNCTR_Msk & ((value) << SSC_TNCR_TXNCTR_Pos))) +/* -------- SSC_PTCR : (SSC Offset: 0x120) Transfer Control Register -------- */ +#define SSC_PTCR_RXTEN (0x1u << 0) /**< \brief (SSC_PTCR) Receiver Transfer Enable */ +#define SSC_PTCR_RXTDIS (0x1u << 1) /**< \brief (SSC_PTCR) Receiver Transfer Disable */ +#define SSC_PTCR_TXTEN (0x1u << 8) /**< \brief (SSC_PTCR) Transmitter Transfer Enable */ +#define SSC_PTCR_TXTDIS (0x1u << 9) /**< \brief (SSC_PTCR) Transmitter Transfer Disable */ +/* -------- SSC_PTSR : (SSC Offset: 0x124) Transfer Status Register -------- */ +#define SSC_PTSR_RXTEN (0x1u << 0) /**< \brief (SSC_PTSR) Receiver Transfer Enable */ +#define SSC_PTSR_TXTEN (0x1u << 8) /**< \brief (SSC_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3S_SSC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_supc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_supc.h new file mode 100644 index 000000000..4dbcb0402 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_supc.h @@ -0,0 +1,297 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_SUPC_COMPONENT_ +#define _SAM3S_SUPC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Supply Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S_SUPC Supply Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Supc hardware registers */ +typedef struct { + WoReg SUPC_CR; /**< \brief (Supc Offset: 0x00) Supply Controller Control Register */ + RwReg SUPC_SMMR; /**< \brief (Supc Offset: 0x04) Supply Controller Supply Monitor Mode Register */ + RwReg SUPC_MR; /**< \brief (Supc Offset: 0x08) Supply Controller Mode Register */ + RwReg SUPC_WUMR; /**< \brief (Supc Offset: 0x0C) Supply Controller Wake Up Mode Register */ + RwReg SUPC_WUIR; /**< \brief (Supc Offset: 0x10) Supply Controller Wake Up Inputs Register */ + RoReg SUPC_SR; /**< \brief (Supc Offset: 0x14) Supply Controller Status Register */ +} Supc; +#endif /* __ASSEMBLY__ */ +/* -------- SUPC_CR : (SUPC Offset: 0x00) Supply Controller Control Register -------- */ +#define SUPC_CR_VROFF (0x1u << 2) /**< \brief (SUPC_CR) Voltage Regulator Off */ +#define SUPC_CR_VROFF_NO_EFFECT (0x0u << 2) /**< \brief (SUPC_CR) no effect. */ +#define SUPC_CR_VROFF_STOP_VREG (0x1u << 2) /**< \brief (SUPC_CR) if KEY is correct, asserts vddcore_nreset and stops the voltage regulator. */ +#define SUPC_CR_XTALSEL (0x1u << 3) /**< \brief (SUPC_CR) Crystal Oscillator Select */ +#define SUPC_CR_XTALSEL_NO_EFFECT (0x0u << 3) /**< \brief (SUPC_CR) no effect. */ +#define SUPC_CR_XTALSEL_CRYSTAL_SEL (0x1u << 3) /**< \brief (SUPC_CR) if KEY is correct, switches the slow clock on the crystal oscillator output. */ +#define SUPC_CR_KEY_Pos 24 +#define SUPC_CR_KEY_Msk (0xffu << SUPC_CR_KEY_Pos) /**< \brief (SUPC_CR) Password */ +#define SUPC_CR_KEY(value) ((SUPC_CR_KEY_Msk & ((value) << SUPC_CR_KEY_Pos))) +/* -------- SUPC_SMMR : (SUPC Offset: 0x04) Supply Controller Supply Monitor Mode Register -------- */ +#define SUPC_SMMR_SMTH_Pos 0 +#define SUPC_SMMR_SMTH_Msk (0xfu << SUPC_SMMR_SMTH_Pos) /**< \brief (SUPC_SMMR) Supply Monitor Threshold */ +#define SUPC_SMMR_SMTH_1_9V (0x0u << 0) /**< \brief (SUPC_SMMR) 1.9 V */ +#define SUPC_SMMR_SMTH_2_0V (0x1u << 0) /**< \brief (SUPC_SMMR) 2.0 V */ +#define SUPC_SMMR_SMTH_2_1V (0x2u << 0) /**< \brief (SUPC_SMMR) 2.1 V */ +#define SUPC_SMMR_SMTH_2_2V (0x3u << 0) /**< \brief (SUPC_SMMR) 2.2 V */ +#define SUPC_SMMR_SMTH_2_3V (0x4u << 0) /**< \brief (SUPC_SMMR) 2.3 V */ +#define SUPC_SMMR_SMTH_2_4V (0x5u << 0) /**< \brief (SUPC_SMMR) 2.4 V */ +#define SUPC_SMMR_SMTH_2_5V (0x6u << 0) /**< \brief (SUPC_SMMR) 2.5 V */ +#define SUPC_SMMR_SMTH_2_6V (0x7u << 0) /**< \brief (SUPC_SMMR) 2.6 V */ +#define SUPC_SMMR_SMTH_2_7V (0x8u << 0) /**< \brief (SUPC_SMMR) 2.7 V */ +#define SUPC_SMMR_SMTH_2_8V (0x9u << 0) /**< \brief (SUPC_SMMR) 2.8 V */ +#define SUPC_SMMR_SMTH_2_9V (0xAu << 0) /**< \brief (SUPC_SMMR) 2.9 V */ +#define SUPC_SMMR_SMTH_3_0V (0xBu << 0) /**< \brief (SUPC_SMMR) 3.0 V */ +#define SUPC_SMMR_SMTH_3_1V (0xCu << 0) /**< \brief (SUPC_SMMR) 3.1 V */ +#define SUPC_SMMR_SMTH_3_2V (0xDu << 0) /**< \brief (SUPC_SMMR) 3.2 V */ +#define SUPC_SMMR_SMTH_3_3V (0xEu << 0) /**< \brief (SUPC_SMMR) 3.3 V */ +#define SUPC_SMMR_SMTH_3_4V (0xFu << 0) /**< \brief (SUPC_SMMR) 3.4 V */ +#define SUPC_SMMR_SMSMPL_Pos 8 +#define SUPC_SMMR_SMSMPL_Msk (0x7u << SUPC_SMMR_SMSMPL_Pos) /**< \brief (SUPC_SMMR) Supply Monitor Sampling Period */ +#define SUPC_SMMR_SMSMPL_SMD (0x0u << 8) /**< \brief (SUPC_SMMR) Supply Monitor disabled */ +#define SUPC_SMMR_SMSMPL_CSM (0x1u << 8) /**< \brief (SUPC_SMMR) Continuous Supply Monitor */ +#define SUPC_SMMR_SMSMPL_32SLCK (0x2u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 32 SLCK periods */ +#define SUPC_SMMR_SMSMPL_256SLCK (0x3u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 256 SLCK periods */ +#define SUPC_SMMR_SMSMPL_2048SLCK (0x4u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 2,048 SLCK periods */ +#define SUPC_SMMR_SMRSTEN (0x1u << 12) /**< \brief (SUPC_SMMR) Supply Monitor Reset Enable */ +#define SUPC_SMMR_SMRSTEN_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_SMMR) the core reset signal "vddcore_nreset" is not affected when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMRSTEN_ENABLE (0x1u << 12) /**< \brief (SUPC_SMMR) the core reset signal, vddcore_nreset is asserted when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMIEN (0x1u << 13) /**< \brief (SUPC_SMMR) Supply Monitor Interrupt Enable */ +#define SUPC_SMMR_SMIEN_NOT_ENABLE (0x0u << 13) /**< \brief (SUPC_SMMR) the SUPC interrupt signal is not affected when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMIEN_ENABLE (0x1u << 13) /**< \brief (SUPC_SMMR) the SUPC interrupt signal is asserted when a supply monitor detection occurs. */ +/* -------- SUPC_MR : (SUPC Offset: 0x08) Supply Controller Mode Register -------- */ +#define SUPC_MR_BODRSTEN (0x1u << 12) /**< \brief (SUPC_MR) Brownout Detector Reset Enable */ +#define SUPC_MR_BODRSTEN_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_MR) the core reset signal "vddcore_nreset" is not affected when a brownout detection occurs. */ +#define SUPC_MR_BODRSTEN_ENABLE (0x1u << 12) /**< \brief (SUPC_MR) the core reset signal, vddcore_nreset is asserted when a brownout detection occurs. */ +#define SUPC_MR_BODDIS (0x1u << 13) /**< \brief (SUPC_MR) Brownout Detector Disable */ +#define SUPC_MR_BODDIS_ENABLE (0x0u << 13) /**< \brief (SUPC_MR) the core brownout detector is enabled. */ +#define SUPC_MR_BODDIS_DISABLE (0x1u << 13) /**< \brief (SUPC_MR) the core brownout detector is disabled. */ +#define SUPC_MR_ONREG (0x1u << 14) /**< \brief (SUPC_MR) Voltage Regulator enable */ +#define SUPC_MR_ONREG_ONREG_UNUSED (0x0u << 14) /**< \brief (SUPC_MR) Voltage Regulator is not used */ +#define SUPC_MR_ONREG_ONREG_USED (0x1u << 14) /**< \brief (SUPC_MR) Voltage Regulator is used */ +#define SUPC_MR_OSCBYPASS (0x1u << 20) /**< \brief (SUPC_MR) Oscillator Bypass */ +#define SUPC_MR_OSCBYPASS_NO_EFFECT (0x0u << 20) /**< \brief (SUPC_MR) no effect. Clock selection depends on XTALSEL value. */ +#define SUPC_MR_OSCBYPASS_BYPASS (0x1u << 20) /**< \brief (SUPC_MR) the 32-KHz XTAL oscillator is selected and is put in bypass mode. */ +#define SUPC_MR_KEY_Pos 24 +#define SUPC_MR_KEY_Msk (0xffu << SUPC_MR_KEY_Pos) /**< \brief (SUPC_MR) Password Key */ +#define SUPC_MR_KEY(value) ((SUPC_MR_KEY_Msk & ((value) << SUPC_MR_KEY_Pos))) +/* -------- SUPC_WUMR : (SUPC Offset: 0x0C) Supply Controller Wake Up Mode Register -------- */ +#define SUPC_WUMR_SMEN (0x1u << 1) /**< \brief (SUPC_WUMR) Supply Monitor Wake Up Enable */ +#define SUPC_WUMR_SMEN_NOT_ENABLE (0x0u << 1) /**< \brief (SUPC_WUMR) the supply monitor detection has no wake up effect. */ +#define SUPC_WUMR_SMEN_ENABLE (0x1u << 1) /**< \brief (SUPC_WUMR) the supply monitor detection forces the wake up of the core power supply. */ +#define SUPC_WUMR_RTTEN (0x1u << 2) /**< \brief (SUPC_WUMR) Real Time Timer Wake Up Enable */ +#define SUPC_WUMR_RTTEN_NOT_ENABLE (0x0u << 2) /**< \brief (SUPC_WUMR) the RTT alarm signal has no wake up effect. */ +#define SUPC_WUMR_RTTEN_ENABLE (0x1u << 2) /**< \brief (SUPC_WUMR) the RTT alarm signal forces the wake up of the core power supply. */ +#define SUPC_WUMR_RTCEN (0x1u << 3) /**< \brief (SUPC_WUMR) Real Time Clock Wake Up Enable */ +#define SUPC_WUMR_RTCEN_NOT_ENABLE (0x0u << 3) /**< \brief (SUPC_WUMR) the RTC alarm signal has no wake up effect. */ +#define SUPC_WUMR_RTCEN_ENABLE (0x1u << 3) /**< \brief (SUPC_WUMR) the RTC alarm signal forces the wake up of the core power supply. */ +#define SUPC_WUMR_WKUPDBC_Pos 12 +#define SUPC_WUMR_WKUPDBC_Msk (0x7u << SUPC_WUMR_WKUPDBC_Pos) /**< \brief (SUPC_WUMR) Wake Up Inputs Debouncer Period */ +#define SUPC_WUMR_WKUPDBC_IMMEDIATE (0x0u << 12) /**< \brief (SUPC_WUMR) Immediate, no debouncing, detected active at least on one Slow Clock edge. */ +#define SUPC_WUMR_WKUPDBC_3_SCLK (0x1u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 3 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_32_SCLK (0x2u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 32 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_512_SCLK (0x3u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 512 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_4096_SCLK (0x4u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 4,096 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_32768_SCLK (0x5u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 32,768 SLCK periods */ +/* -------- SUPC_WUIR : (SUPC Offset: 0x10) Supply Controller Wake Up Inputs Register -------- */ +#define SUPC_WUIR_WKUPEN0 (0x1u << 0) /**< \brief (SUPC_WUIR) Wake Up Input Enable 0 */ +#define SUPC_WUIR_WKUPEN0_NOT_ENABLE (0x0u << 0) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN0_ENABLE (0x1u << 0) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN1 (0x1u << 1) /**< \brief (SUPC_WUIR) Wake Up Input Enable 1 */ +#define SUPC_WUIR_WKUPEN1_NOT_ENABLE (0x0u << 1) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN1_ENABLE (0x1u << 1) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN2 (0x1u << 2) /**< \brief (SUPC_WUIR) Wake Up Input Enable 2 */ +#define SUPC_WUIR_WKUPEN2_NOT_ENABLE (0x0u << 2) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN2_ENABLE (0x1u << 2) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN3 (0x1u << 3) /**< \brief (SUPC_WUIR) Wake Up Input Enable 3 */ +#define SUPC_WUIR_WKUPEN3_NOT_ENABLE (0x0u << 3) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN3_ENABLE (0x1u << 3) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN4 (0x1u << 4) /**< \brief (SUPC_WUIR) Wake Up Input Enable 4 */ +#define SUPC_WUIR_WKUPEN4_NOT_ENABLE (0x0u << 4) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN4_ENABLE (0x1u << 4) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN5 (0x1u << 5) /**< \brief (SUPC_WUIR) Wake Up Input Enable 5 */ +#define SUPC_WUIR_WKUPEN5_NOT_ENABLE (0x0u << 5) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN5_ENABLE (0x1u << 5) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN6 (0x1u << 6) /**< \brief (SUPC_WUIR) Wake Up Input Enable 6 */ +#define SUPC_WUIR_WKUPEN6_NOT_ENABLE (0x0u << 6) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN6_ENABLE (0x1u << 6) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN7 (0x1u << 7) /**< \brief (SUPC_WUIR) Wake Up Input Enable 7 */ +#define SUPC_WUIR_WKUPEN7_NOT_ENABLE (0x0u << 7) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN7_ENABLE (0x1u << 7) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN8 (0x1u << 8) /**< \brief (SUPC_WUIR) Wake Up Input Enable 8 */ +#define SUPC_WUIR_WKUPEN8_NOT_ENABLE (0x0u << 8) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN8_ENABLE (0x1u << 8) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN9 (0x1u << 9) /**< \brief (SUPC_WUIR) Wake Up Input Enable 9 */ +#define SUPC_WUIR_WKUPEN9_NOT_ENABLE (0x0u << 9) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN9_ENABLE (0x1u << 9) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN10 (0x1u << 10) /**< \brief (SUPC_WUIR) Wake Up Input Enable 10 */ +#define SUPC_WUIR_WKUPEN10_NOT_ENABLE (0x0u << 10) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN10_ENABLE (0x1u << 10) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN11 (0x1u << 11) /**< \brief (SUPC_WUIR) Wake Up Input Enable 11 */ +#define SUPC_WUIR_WKUPEN11_NOT_ENABLE (0x0u << 11) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN11_ENABLE (0x1u << 11) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN12 (0x1u << 12) /**< \brief (SUPC_WUIR) Wake Up Input Enable 12 */ +#define SUPC_WUIR_WKUPEN12_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN12_ENABLE (0x1u << 12) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN13 (0x1u << 13) /**< \brief (SUPC_WUIR) Wake Up Input Enable 13 */ +#define SUPC_WUIR_WKUPEN13_NOT_ENABLE (0x0u << 13) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN13_ENABLE (0x1u << 13) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN14 (0x1u << 14) /**< \brief (SUPC_WUIR) Wake Up Input Enable 14 */ +#define SUPC_WUIR_WKUPEN14_NOT_ENABLE (0x0u << 14) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN14_ENABLE (0x1u << 14) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN15 (0x1u << 15) /**< \brief (SUPC_WUIR) Wake Up Input Enable 15 */ +#define SUPC_WUIR_WKUPEN15_NOT_ENABLE (0x0u << 15) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN15_ENABLE (0x1u << 15) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT0 (0x1u << 16) /**< \brief (SUPC_WUIR) Wake Up Input Transition 0 */ +#define SUPC_WUIR_WKUPT0_HIGH_TO_LOW (0x0u << 16) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT0_LOW_TO_HIGH (0x1u << 16) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT1 (0x1u << 17) /**< \brief (SUPC_WUIR) Wake Up Input Transition 1 */ +#define SUPC_WUIR_WKUPT1_HIGH_TO_LOW (0x0u << 17) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT1_LOW_TO_HIGH (0x1u << 17) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT2 (0x1u << 18) /**< \brief (SUPC_WUIR) Wake Up Input Transition 2 */ +#define SUPC_WUIR_WKUPT2_HIGH_TO_LOW (0x0u << 18) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT2_LOW_TO_HIGH (0x1u << 18) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT3 (0x1u << 19) /**< \brief (SUPC_WUIR) Wake Up Input Transition 3 */ +#define SUPC_WUIR_WKUPT3_HIGH_TO_LOW (0x0u << 19) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT3_LOW_TO_HIGH (0x1u << 19) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT4 (0x1u << 20) /**< \brief (SUPC_WUIR) Wake Up Input Transition 4 */ +#define SUPC_WUIR_WKUPT4_HIGH_TO_LOW (0x0u << 20) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT4_LOW_TO_HIGH (0x1u << 20) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT5 (0x1u << 21) /**< \brief (SUPC_WUIR) Wake Up Input Transition 5 */ +#define SUPC_WUIR_WKUPT5_HIGH_TO_LOW (0x0u << 21) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT5_LOW_TO_HIGH (0x1u << 21) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT6 (0x1u << 22) /**< \brief (SUPC_WUIR) Wake Up Input Transition 6 */ +#define SUPC_WUIR_WKUPT6_HIGH_TO_LOW (0x0u << 22) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT6_LOW_TO_HIGH (0x1u << 22) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT7 (0x1u << 23) /**< \brief (SUPC_WUIR) Wake Up Input Transition 7 */ +#define SUPC_WUIR_WKUPT7_HIGH_TO_LOW (0x0u << 23) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT7_LOW_TO_HIGH (0x1u << 23) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT8 (0x1u << 24) /**< \brief (SUPC_WUIR) Wake Up Input Transition 8 */ +#define SUPC_WUIR_WKUPT8_HIGH_TO_LOW (0x0u << 24) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT8_LOW_TO_HIGH (0x1u << 24) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT9 (0x1u << 25) /**< \brief (SUPC_WUIR) Wake Up Input Transition 9 */ +#define SUPC_WUIR_WKUPT9_HIGH_TO_LOW (0x0u << 25) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT9_LOW_TO_HIGH (0x1u << 25) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT10 (0x1u << 26) /**< \brief (SUPC_WUIR) Wake Up Input Transition 10 */ +#define SUPC_WUIR_WKUPT10_HIGH_TO_LOW (0x0u << 26) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT10_LOW_TO_HIGH (0x1u << 26) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT11 (0x1u << 27) /**< \brief (SUPC_WUIR) Wake Up Input Transition 11 */ +#define SUPC_WUIR_WKUPT11_HIGH_TO_LOW (0x0u << 27) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT11_LOW_TO_HIGH (0x1u << 27) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT12 (0x1u << 28) /**< \brief (SUPC_WUIR) Wake Up Input Transition 12 */ +#define SUPC_WUIR_WKUPT12_HIGH_TO_LOW (0x0u << 28) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT12_LOW_TO_HIGH (0x1u << 28) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT13 (0x1u << 29) /**< \brief (SUPC_WUIR) Wake Up Input Transition 13 */ +#define SUPC_WUIR_WKUPT13_HIGH_TO_LOW (0x0u << 29) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT13_LOW_TO_HIGH (0x1u << 29) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT14 (0x1u << 30) /**< \brief (SUPC_WUIR) Wake Up Input Transition 14 */ +#define SUPC_WUIR_WKUPT14_HIGH_TO_LOW (0x0u << 30) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT14_LOW_TO_HIGH (0x1u << 30) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT15 (0x1u << 31) /**< \brief (SUPC_WUIR) Wake Up Input Transition 15 */ +#define SUPC_WUIR_WKUPT15_HIGH_TO_LOW (0x0u << 31) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT15_LOW_TO_HIGH (0x1u << 31) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +/* -------- SUPC_SR : (SUPC Offset: 0x14) Supply Controller Status Register -------- */ +#define SUPC_SR_WKUPS (0x1u << 1) /**< \brief (SUPC_SR) WKUP Wake Up Status */ +#define SUPC_SR_WKUPS_NO (0x0u << 1) /**< \brief (SUPC_SR) no wake up due to the assertion of the WKUP pins has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPS_PRESENT (0x1u << 1) /**< \brief (SUPC_SR) at least one wake up due to the assertion of the WKUP pins has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_SMWS (0x1u << 2) /**< \brief (SUPC_SR) Supply Monitor Detection Wake Up Status */ +#define SUPC_SR_SMWS_NO (0x0u << 2) /**< \brief (SUPC_SR) no wake up due to a supply monitor detection has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_SMWS_PRESENT (0x1u << 2) /**< \brief (SUPC_SR) at least one wake up due to a supply monitor detection has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_BODRSTS (0x1u << 3) /**< \brief (SUPC_SR) Brownout Detector Reset Status */ +#define SUPC_SR_BODRSTS_NO (0x0u << 3) /**< \brief (SUPC_SR) no core brownout rising edge event has been detected since the last read of the SUPC_SR. */ +#define SUPC_SR_BODRSTS_PRESENT (0x1u << 3) /**< \brief (SUPC_SR) at least one brownout output rising edge event has been detected since the last read of the SUPC_SR. */ +#define SUPC_SR_SMRSTS (0x1u << 4) /**< \brief (SUPC_SR) Supply Monitor Reset Status */ +#define SUPC_SR_SMRSTS_NO (0x0u << 4) /**< \brief (SUPC_SR) no supply monitor detection has generated a core reset since the last read of the SUPC_SR. */ +#define SUPC_SR_SMRSTS_PRESENT (0x1u << 4) /**< \brief (SUPC_SR) at least one supply monitor detection has generated a core reset since the last read of the SUPC_SR. */ +#define SUPC_SR_SMS (0x1u << 5) /**< \brief (SUPC_SR) Supply Monitor Status */ +#define SUPC_SR_SMS_NO (0x0u << 5) /**< \brief (SUPC_SR) no supply monitor detection since the last read of SUPC_SR. */ +#define SUPC_SR_SMS_PRESENT (0x1u << 5) /**< \brief (SUPC_SR) at least one supply monitor detection since the last read of SUPC_SR. */ +#define SUPC_SR_SMOS (0x1u << 6) /**< \brief (SUPC_SR) Supply Monitor Output Status */ +#define SUPC_SR_SMOS_HIGH (0x0u << 6) /**< \brief (SUPC_SR) the supply monitor detected VDDIO higher than its threshold at its last measurement. */ +#define SUPC_SR_SMOS_LOW (0x1u << 6) /**< \brief (SUPC_SR) the supply monitor detected VDDIO lower than its threshold at its last measurement. */ +#define SUPC_SR_OSCSEL (0x1u << 7) /**< \brief (SUPC_SR) 32-kHz Oscillator Selection Status */ +#define SUPC_SR_OSCSEL_RC (0x0u << 7) /**< \brief (SUPC_SR) the slow clock, SLCK is generated by the embedded 32-kHz RC oscillator. */ +#define SUPC_SR_OSCSEL_CRYST (0x1u << 7) /**< \brief (SUPC_SR) the slow clock, SLCK is generated by the 32-kHz crystal oscillator. */ +#define SUPC_SR_WKUPIS0 (0x1u << 16) /**< \brief (SUPC_SR) WKUP Input Status 0 */ +#define SUPC_SR_WKUPIS0_DIS (0x0u << 16) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS0_EN (0x1u << 16) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS1 (0x1u << 17) /**< \brief (SUPC_SR) WKUP Input Status 1 */ +#define SUPC_SR_WKUPIS1_DIS (0x0u << 17) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS1_EN (0x1u << 17) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS2 (0x1u << 18) /**< \brief (SUPC_SR) WKUP Input Status 2 */ +#define SUPC_SR_WKUPIS2_DIS (0x0u << 18) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS2_EN (0x1u << 18) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS3 (0x1u << 19) /**< \brief (SUPC_SR) WKUP Input Status 3 */ +#define SUPC_SR_WKUPIS3_DIS (0x0u << 19) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS3_EN (0x1u << 19) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS4 (0x1u << 20) /**< \brief (SUPC_SR) WKUP Input Status 4 */ +#define SUPC_SR_WKUPIS4_DIS (0x0u << 20) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS4_EN (0x1u << 20) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS5 (0x1u << 21) /**< \brief (SUPC_SR) WKUP Input Status 5 */ +#define SUPC_SR_WKUPIS5_DIS (0x0u << 21) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS5_EN (0x1u << 21) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS6 (0x1u << 22) /**< \brief (SUPC_SR) WKUP Input Status 6 */ +#define SUPC_SR_WKUPIS6_DIS (0x0u << 22) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS6_EN (0x1u << 22) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS7 (0x1u << 23) /**< \brief (SUPC_SR) WKUP Input Status 7 */ +#define SUPC_SR_WKUPIS7_DIS (0x0u << 23) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS7_EN (0x1u << 23) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS8 (0x1u << 24) /**< \brief (SUPC_SR) WKUP Input Status 8 */ +#define SUPC_SR_WKUPIS8_DIS (0x0u << 24) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS8_EN (0x1u << 24) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS9 (0x1u << 25) /**< \brief (SUPC_SR) WKUP Input Status 9 */ +#define SUPC_SR_WKUPIS9_DIS (0x0u << 25) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS9_EN (0x1u << 25) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS10 (0x1u << 26) /**< \brief (SUPC_SR) WKUP Input Status 10 */ +#define SUPC_SR_WKUPIS10_DIS (0x0u << 26) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS10_EN (0x1u << 26) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS11 (0x1u << 27) /**< \brief (SUPC_SR) WKUP Input Status 11 */ +#define SUPC_SR_WKUPIS11_DIS (0x0u << 27) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS11_EN (0x1u << 27) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS12 (0x1u << 28) /**< \brief (SUPC_SR) WKUP Input Status 12 */ +#define SUPC_SR_WKUPIS12_DIS (0x0u << 28) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS12_EN (0x1u << 28) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS13 (0x1u << 29) /**< \brief (SUPC_SR) WKUP Input Status 13 */ +#define SUPC_SR_WKUPIS13_DIS (0x0u << 29) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS13_EN (0x1u << 29) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS14 (0x1u << 30) /**< \brief (SUPC_SR) WKUP Input Status 14 */ +#define SUPC_SR_WKUPIS14_DIS (0x0u << 30) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS14_EN (0x1u << 30) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS15 (0x1u << 31) /**< \brief (SUPC_SR) WKUP Input Status 15 */ +#define SUPC_SR_WKUPIS15_DIS (0x0u << 31) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS15_EN (0x1u << 31) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ + +/*@}*/ + + +#endif /* _SAM3S_SUPC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_tc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_tc.h new file mode 100644 index 000000000..531aab046 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_tc.h @@ -0,0 +1,303 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_TC_COMPONENT_ +#define _SAM3S_TC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Timer Counter */ +/* ============================================================================= */ +/** \addtogroup SAM3S_TC Timer Counter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief TcChannel hardware registers */ +typedef struct { + RwReg TC_CCR; /**< \brief (TcChannel Offset: 0x0) Channel Control Register */ + RwReg TC_CMR; /**< \brief (TcChannel Offset: 0x4) Channel Mode Register */ + RwReg TC_SMMR; /**< \brief (TcChannel Offset: 0x8) Stepper Motor Mode Register */ + RoReg Reserved1[1]; + RwReg TC_CV; /**< \brief (TcChannel Offset: 0x10) Counter Value */ + RwReg TC_RA; /**< \brief (TcChannel Offset: 0x14) Register A */ + RwReg TC_RB; /**< \brief (TcChannel Offset: 0x18) Register B */ + RwReg TC_RC; /**< \brief (TcChannel Offset: 0x1C) Register C */ + RwReg TC_SR; /**< \brief (TcChannel Offset: 0x20) Status Register */ + RwReg TC_IER; /**< \brief (TcChannel Offset: 0x24) Interrupt Enable Register */ + RwReg TC_IDR; /**< \brief (TcChannel Offset: 0x28) Interrupt Disable Register */ + RwReg TC_IMR; /**< \brief (TcChannel Offset: 0x2C) Interrupt Mask Register */ + RoReg Reserved2[4]; +} TcChannel; +/** \brief Tc hardware registers */ +#define TCCHANNEL_NUMBER 3 +typedef struct { + TcChannel TC_CHANNEL[TCCHANNEL_NUMBER]; /**< \brief (Tc Offset: 0x0) channel = 0 .. 2 */ + WoReg TC_BCR; /**< \brief (Tc Offset: 0xC0) Block Control Register */ + RwReg TC_BMR; /**< \brief (Tc Offset: 0xC4) Block Mode Register */ + WoReg TC_QIER; /**< \brief (Tc Offset: 0xC8) QDEC Interrupt Enable Register */ + WoReg TC_QIDR; /**< \brief (Tc Offset: 0xCC) QDEC Interrupt Disable Register */ + RoReg TC_QIMR; /**< \brief (Tc Offset: 0xD0) QDEC Interrupt Mask Register */ + RoReg TC_QISR; /**< \brief (Tc Offset: 0xD4) QDEC Interrupt Status Register */ + RwReg TC_FMR; /**< \brief (Tc Offset: 0xD8) Fault Mode Register */ + RoReg Reserved1[2]; + RwReg TC_WPMR; /**< \brief (Tc Offset: 0xE4) Write Protect Mode Register */ +} Tc; +#endif /* __ASSEMBLY__ */ +/* -------- TC_CCR : (TC Offset: N/A) Channel Control Register -------- */ +#define TC_CCR_CLKEN (0x1u << 0) /**< \brief (TC_CCR) Counter Clock Enable Command */ +#define TC_CCR_CLKDIS (0x1u << 1) /**< \brief (TC_CCR) Counter Clock Disable Command */ +#define TC_CCR_SWTRG (0x1u << 2) /**< \brief (TC_CCR) Software Trigger Command */ +/* -------- TC_CMR : (TC Offset: N/A) Channel Mode Register -------- */ +#define TC_CMR_TCCLKS_Pos 0 +#define TC_CMR_TCCLKS_Msk (0x7u << TC_CMR_TCCLKS_Pos) /**< \brief (TC_CMR) Clock Selection */ +#define TC_CMR_TCCLKS_TIMER_CLOCK1 (0x0u << 0) /**< \brief (TC_CMR) Clock selected: TCLK1 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK2 (0x1u << 0) /**< \brief (TC_CMR) Clock selected: TCLK2 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK3 (0x2u << 0) /**< \brief (TC_CMR) Clock selected: TCLK3 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK4 (0x3u << 0) /**< \brief (TC_CMR) Clock selected: TCLK4 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK5 (0x4u << 0) /**< \brief (TC_CMR) Clock selected: TCLK5 */ +#define TC_CMR_TCCLKS_XC0 (0x5u << 0) /**< \brief (TC_CMR) Clock selected: XC0 */ +#define TC_CMR_TCCLKS_XC1 (0x6u << 0) /**< \brief (TC_CMR) Clock selected: XC1 */ +#define TC_CMR_TCCLKS_XC2 (0x7u << 0) /**< \brief (TC_CMR) Clock selected: XC2 */ +#define TC_CMR_CLKI (0x1u << 3) /**< \brief (TC_CMR) Clock Invert */ +#define TC_CMR_BURST_Pos 4 +#define TC_CMR_BURST_Msk (0x3u << TC_CMR_BURST_Pos) /**< \brief (TC_CMR) Burst Signal Selection */ +#define TC_CMR_BURST_NONE (0x0u << 4) /**< \brief (TC_CMR) The clock is not gated by an external signal. */ +#define TC_CMR_BURST_XC0 (0x1u << 4) /**< \brief (TC_CMR) XC0 is ANDed with the selected clock. */ +#define TC_CMR_BURST_XC1 (0x2u << 4) /**< \brief (TC_CMR) XC1 is ANDed with the selected clock. */ +#define TC_CMR_BURST_XC2 (0x3u << 4) /**< \brief (TC_CMR) XC2 is ANDed with the selected clock. */ +#define TC_CMR_LDBSTOP (0x1u << 6) /**< \brief (TC_CMR) Counter Clock Stopped with RB Loading */ +#define TC_CMR_LDBDIS (0x1u << 7) /**< \brief (TC_CMR) Counter Clock Disable with RB Loading */ +#define TC_CMR_ETRGEDG_Pos 8 +#define TC_CMR_ETRGEDG_Msk (0x3u << TC_CMR_ETRGEDG_Pos) /**< \brief (TC_CMR) External Trigger Edge Selection */ +#define TC_CMR_ETRGEDG_NONE (0x0u << 8) /**< \brief (TC_CMR) The clock is not gated by an external signal. */ +#define TC_CMR_ETRGEDG_RISING (0x1u << 8) /**< \brief (TC_CMR) Rising edge */ +#define TC_CMR_ETRGEDG_FALLING (0x2u << 8) /**< \brief (TC_CMR) Falling edge */ +#define TC_CMR_ETRGEDG_EDGE (0x3u << 8) /**< \brief (TC_CMR) Each edge */ +#define TC_CMR_ABETRG (0x1u << 10) /**< \brief (TC_CMR) TIOA or TIOB External Trigger Selection */ +#define TC_CMR_CPCTRG (0x1u << 14) /**< \brief (TC_CMR) RC Compare Trigger Enable */ +#define TC_CMR_WAVE (0x1u << 15) /**< \brief (TC_CMR) Waveform Mode */ +#define TC_CMR_LDRA_Pos 16 +#define TC_CMR_LDRA_Msk (0x3u << TC_CMR_LDRA_Pos) /**< \brief (TC_CMR) RA Loading Edge Selection */ +#define TC_CMR_LDRA_NONE (0x0u << 16) /**< \brief (TC_CMR) None */ +#define TC_CMR_LDRA_RISING (0x1u << 16) /**< \brief (TC_CMR) Rising edge of TIOA */ +#define TC_CMR_LDRA_FALLING (0x2u << 16) /**< \brief (TC_CMR) Falling edge of TIOA */ +#define TC_CMR_LDRA_EDGE (0x3u << 16) /**< \brief (TC_CMR) Each edge of TIOA */ +#define TC_CMR_LDRB_Pos 18 +#define TC_CMR_LDRB_Msk (0x3u << TC_CMR_LDRB_Pos) /**< \brief (TC_CMR) RB Loading Edge Selection */ +#define TC_CMR_LDRB_NONE (0x0u << 18) /**< \brief (TC_CMR) None */ +#define TC_CMR_LDRB_RISING (0x1u << 18) /**< \brief (TC_CMR) Rising edge of TIOA */ +#define TC_CMR_LDRB_FALLING (0x2u << 18) /**< \brief (TC_CMR) Falling edge of TIOA */ +#define TC_CMR_LDRB_EDGE (0x3u << 18) /**< \brief (TC_CMR) Each edge of TIOA */ +#define TC_CMR_CPCSTOP (0x1u << 6) /**< \brief (TC_CMR) Counter Clock Stopped with RC Compare */ +#define TC_CMR_CPCDIS (0x1u << 7) /**< \brief (TC_CMR) Counter Clock Disable with RC Compare */ +#define TC_CMR_EEVTEDG_Pos 8 +#define TC_CMR_EEVTEDG_Msk (0x3u << TC_CMR_EEVTEDG_Pos) /**< \brief (TC_CMR) External Event Edge Selection */ +#define TC_CMR_EEVTEDG_NONE (0x0u << 8) /**< \brief (TC_CMR) None */ +#define TC_CMR_EEVTEDG_RISING (0x1u << 8) /**< \brief (TC_CMR) Rising edge */ +#define TC_CMR_EEVTEDG_FALLING (0x2u << 8) /**< \brief (TC_CMR) Falling edge */ +#define TC_CMR_EEVTEDG_EDGE (0x3u << 8) /**< \brief (TC_CMR) Each edge */ +#define TC_CMR_EEVT_Pos 10 +#define TC_CMR_EEVT_Msk (0x3u << TC_CMR_EEVT_Pos) /**< \brief (TC_CMR) External Event Selection */ +#define TC_CMR_EEVT_TIOB (0x0u << 10) /**< \brief (TC_CMR) TIOB */ +#define TC_CMR_EEVT_XC0 (0x1u << 10) /**< \brief (TC_CMR) XC0 */ +#define TC_CMR_EEVT_XC1 (0x2u << 10) /**< \brief (TC_CMR) XC1 */ +#define TC_CMR_EEVT_XC2 (0x3u << 10) /**< \brief (TC_CMR) XC2 */ +#define TC_CMR_ENETRG (0x1u << 12) /**< \brief (TC_CMR) External Event Trigger Enable */ +#define TC_CMR_WAVSEL_Pos 13 +#define TC_CMR_WAVSEL_Msk (0x3u << TC_CMR_WAVSEL_Pos) /**< \brief (TC_CMR) Waveform Selection */ +#define TC_CMR_WAVSEL_UP (0x0u << 13) /**< \brief (TC_CMR) UP mode without automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UPDOWN (0x1u << 13) /**< \brief (TC_CMR) UPDOWN mode without automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UP_RC (0x2u << 13) /**< \brief (TC_CMR) UP mode with automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UPDOWN_RC (0x3u << 13) /**< \brief (TC_CMR) UPDOWN mode with automatic trigger on RC Compare */ +#define TC_CMR_ACPA_Pos 16 +#define TC_CMR_ACPA_Msk (0x3u << TC_CMR_ACPA_Pos) /**< \brief (TC_CMR) RA Compare Effect on TIOA */ +#define TC_CMR_ACPA_NONE (0x0u << 16) /**< \brief (TC_CMR) None */ +#define TC_CMR_ACPA_SET (0x1u << 16) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ACPA_CLEAR (0x2u << 16) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ACPA_TOGGLE (0x3u << 16) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_ACPC_Pos 18 +#define TC_CMR_ACPC_Msk (0x3u << TC_CMR_ACPC_Pos) /**< \brief (TC_CMR) RC Compare Effect on TIOA */ +#define TC_CMR_ACPC_NONE (0x0u << 18) /**< \brief (TC_CMR) None */ +#define TC_CMR_ACPC_SET (0x1u << 18) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ACPC_CLEAR (0x2u << 18) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ACPC_TOGGLE (0x3u << 18) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_AEEVT_Pos 20 +#define TC_CMR_AEEVT_Msk (0x3u << TC_CMR_AEEVT_Pos) /**< \brief (TC_CMR) External Event Effect on TIOA */ +#define TC_CMR_AEEVT_NONE (0x0u << 20) /**< \brief (TC_CMR) None */ +#define TC_CMR_AEEVT_SET (0x1u << 20) /**< \brief (TC_CMR) Set */ +#define TC_CMR_AEEVT_CLEAR (0x2u << 20) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_AEEVT_TOGGLE (0x3u << 20) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_ASWTRG_Pos 22 +#define TC_CMR_ASWTRG_Msk (0x3u << TC_CMR_ASWTRG_Pos) /**< \brief (TC_CMR) Software Trigger Effect on TIOA */ +#define TC_CMR_ASWTRG_NONE (0x0u << 22) /**< \brief (TC_CMR) None */ +#define TC_CMR_ASWTRG_SET (0x1u << 22) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ASWTRG_CLEAR (0x2u << 22) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ASWTRG_TOGGLE (0x3u << 22) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BCPB_Pos 24 +#define TC_CMR_BCPB_Msk (0x3u << TC_CMR_BCPB_Pos) /**< \brief (TC_CMR) RB Compare Effect on TIOB */ +#define TC_CMR_BCPB_NONE (0x0u << 24) /**< \brief (TC_CMR) None */ +#define TC_CMR_BCPB_SET (0x1u << 24) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BCPB_CLEAR (0x2u << 24) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BCPB_TOGGLE (0x3u << 24) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BCPC_Pos 26 +#define TC_CMR_BCPC_Msk (0x3u << TC_CMR_BCPC_Pos) /**< \brief (TC_CMR) RC Compare Effect on TIOB */ +#define TC_CMR_BCPC_NONE (0x0u << 26) /**< \brief (TC_CMR) None */ +#define TC_CMR_BCPC_SET (0x1u << 26) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BCPC_CLEAR (0x2u << 26) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BCPC_TOGGLE (0x3u << 26) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BEEVT_Pos 28 +#define TC_CMR_BEEVT_Msk (0x3u << TC_CMR_BEEVT_Pos) /**< \brief (TC_CMR) External Event Effect on TIOB */ +#define TC_CMR_BEEVT_NONE (0x0u << 28) /**< \brief (TC_CMR) None */ +#define TC_CMR_BEEVT_SET (0x1u << 28) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BEEVT_CLEAR (0x2u << 28) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BEEVT_TOGGLE (0x3u << 28) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BSWTRG_Pos 30 +#define TC_CMR_BSWTRG_Msk (0x3u << TC_CMR_BSWTRG_Pos) /**< \brief (TC_CMR) Software Trigger Effect on TIOB */ +#define TC_CMR_BSWTRG_NONE (0x0u << 30) /**< \brief (TC_CMR) None */ +#define TC_CMR_BSWTRG_SET (0x1u << 30) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BSWTRG_CLEAR (0x2u << 30) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BSWTRG_TOGGLE (0x3u << 30) /**< \brief (TC_CMR) Toggle */ +/* -------- TC_SMMR : (TC Offset: N/A) Stepper Motor Mode Register -------- */ +#define TC_SMMR_GCEN (0x1u << 0) /**< \brief (TC_SMMR) Gray Count Enable */ +#define TC_SMMR_DOWN (0x1u << 1) /**< \brief (TC_SMMR) DOWN Count */ +/* -------- TC_CV : (TC Offset: N/A) Counter Value -------- */ +#define TC_CV_CV_Pos 0 +#define TC_CV_CV_Msk (0xffffffffu << TC_CV_CV_Pos) /**< \brief (TC_CV) Counter Value */ +/* -------- TC_RA : (TC Offset: N/A) Register A -------- */ +#define TC_RA_RA_Pos 0 +#define TC_RA_RA_Msk (0xffffffffu << TC_RA_RA_Pos) /**< \brief (TC_RA) Register A */ +#define TC_RA_RA(value) ((TC_RA_RA_Msk & ((value) << TC_RA_RA_Pos))) +/* -------- TC_RB : (TC Offset: N/A) Register B -------- */ +#define TC_RB_RB_Pos 0 +#define TC_RB_RB_Msk (0xffffffffu << TC_RB_RB_Pos) /**< \brief (TC_RB) Register B */ +#define TC_RB_RB(value) ((TC_RB_RB_Msk & ((value) << TC_RB_RB_Pos))) +/* -------- TC_RC : (TC Offset: N/A) Register C -------- */ +#define TC_RC_RC_Pos 0 +#define TC_RC_RC_Msk (0xffffffffu << TC_RC_RC_Pos) /**< \brief (TC_RC) Register C */ +#define TC_RC_RC(value) ((TC_RC_RC_Msk & ((value) << TC_RC_RC_Pos))) +/* -------- TC_SR : (TC Offset: N/A) Status Register -------- */ +#define TC_SR_COVFS (0x1u << 0) /**< \brief (TC_SR) Counter Overflow Status */ +#define TC_SR_LOVRS (0x1u << 1) /**< \brief (TC_SR) Load Overrun Status */ +#define TC_SR_CPAS (0x1u << 2) /**< \brief (TC_SR) RA Compare Status */ +#define TC_SR_CPBS (0x1u << 3) /**< \brief (TC_SR) RB Compare Status */ +#define TC_SR_CPCS (0x1u << 4) /**< \brief (TC_SR) RC Compare Status */ +#define TC_SR_LDRAS (0x1u << 5) /**< \brief (TC_SR) RA Loading Status */ +#define TC_SR_LDRBS (0x1u << 6) /**< \brief (TC_SR) RB Loading Status */ +#define TC_SR_ETRGS (0x1u << 7) /**< \brief (TC_SR) External Trigger Status */ +#define TC_SR_CLKSTA (0x1u << 16) /**< \brief (TC_SR) Clock Enabling Status */ +#define TC_SR_MTIOA (0x1u << 17) /**< \brief (TC_SR) TIOA Mirror */ +#define TC_SR_MTIOB (0x1u << 18) /**< \brief (TC_SR) TIOB Mirror */ +/* -------- TC_IER : (TC Offset: N/A) Interrupt Enable Register -------- */ +#define TC_IER_COVFS (0x1u << 0) /**< \brief (TC_IER) Counter Overflow */ +#define TC_IER_LOVRS (0x1u << 1) /**< \brief (TC_IER) Load Overrun */ +#define TC_IER_CPAS (0x1u << 2) /**< \brief (TC_IER) RA Compare */ +#define TC_IER_CPBS (0x1u << 3) /**< \brief (TC_IER) RB Compare */ +#define TC_IER_CPCS (0x1u << 4) /**< \brief (TC_IER) RC Compare */ +#define TC_IER_LDRAS (0x1u << 5) /**< \brief (TC_IER) RA Loading */ +#define TC_IER_LDRBS (0x1u << 6) /**< \brief (TC_IER) RB Loading */ +#define TC_IER_ETRGS (0x1u << 7) /**< \brief (TC_IER) External Trigger */ +/* -------- TC_IDR : (TC Offset: N/A) Interrupt Disable Register -------- */ +#define TC_IDR_COVFS (0x1u << 0) /**< \brief (TC_IDR) Counter Overflow */ +#define TC_IDR_LOVRS (0x1u << 1) /**< \brief (TC_IDR) Load Overrun */ +#define TC_IDR_CPAS (0x1u << 2) /**< \brief (TC_IDR) RA Compare */ +#define TC_IDR_CPBS (0x1u << 3) /**< \brief (TC_IDR) RB Compare */ +#define TC_IDR_CPCS (0x1u << 4) /**< \brief (TC_IDR) RC Compare */ +#define TC_IDR_LDRAS (0x1u << 5) /**< \brief (TC_IDR) RA Loading */ +#define TC_IDR_LDRBS (0x1u << 6) /**< \brief (TC_IDR) RB Loading */ +#define TC_IDR_ETRGS (0x1u << 7) /**< \brief (TC_IDR) External Trigger */ +/* -------- TC_IMR : (TC Offset: N/A) Interrupt Mask Register -------- */ +#define TC_IMR_COVFS (0x1u << 0) /**< \brief (TC_IMR) Counter Overflow */ +#define TC_IMR_LOVRS (0x1u << 1) /**< \brief (TC_IMR) Load Overrun */ +#define TC_IMR_CPAS (0x1u << 2) /**< \brief (TC_IMR) RA Compare */ +#define TC_IMR_CPBS (0x1u << 3) /**< \brief (TC_IMR) RB Compare */ +#define TC_IMR_CPCS (0x1u << 4) /**< \brief (TC_IMR) RC Compare */ +#define TC_IMR_LDRAS (0x1u << 5) /**< \brief (TC_IMR) RA Loading */ +#define TC_IMR_LDRBS (0x1u << 6) /**< \brief (TC_IMR) RB Loading */ +#define TC_IMR_ETRGS (0x1u << 7) /**< \brief (TC_IMR) External Trigger */ +/* -------- TC_BCR : (TC Offset: 0xC0) Block Control Register -------- */ +#define TC_BCR_SYNC (0x1u << 0) /**< \brief (TC_BCR) Synchro Command */ +/* -------- TC_BMR : (TC Offset: 0xC4) Block Mode Register -------- */ +#define TC_BMR_TC0XC0S_Pos 0 +#define TC_BMR_TC0XC0S_Msk (0x3u << TC_BMR_TC0XC0S_Pos) /**< \brief (TC_BMR) External Clock Signal 0 Selection */ +#define TC_BMR_TC0XC0S_TCLK0 (0x0u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TCLK0 */ +#define TC_BMR_TC0XC0S_TIOA1 (0x2u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TIOA1 */ +#define TC_BMR_TC0XC0S_TIOA2 (0x3u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TIOA2 */ +#define TC_BMR_TC1XC1S_Pos 2 +#define TC_BMR_TC1XC1S_Msk (0x3u << TC_BMR_TC1XC1S_Pos) /**< \brief (TC_BMR) External Clock Signal 1 Selection */ +#define TC_BMR_TC1XC1S_TCLK1 (0x0u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TCLK1 */ +#define TC_BMR_TC1XC1S_TIOA0 (0x2u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TIOA0 */ +#define TC_BMR_TC1XC1S_TIOA2 (0x3u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TIOA2 */ +#define TC_BMR_TC2XC2S_Pos 4 +#define TC_BMR_TC2XC2S_Msk (0x3u << TC_BMR_TC2XC2S_Pos) /**< \brief (TC_BMR) External Clock Signal 2 Selection */ +#define TC_BMR_TC2XC2S_TCLK2 (0x0u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TCLK2 */ +#define TC_BMR_TC2XC2S_TIOA1 (0x2u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TIOA1 */ +#define TC_BMR_TC2XC2S_TIOA2 (0x3u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TIOA2 */ +#define TC_BMR_QDEN (0x1u << 8) /**< \brief (TC_BMR) Quadrature Decoder ENabled */ +#define TC_BMR_POSEN (0x1u << 9) /**< \brief (TC_BMR) POSition ENabled */ +#define TC_BMR_SPEEDEN (0x1u << 10) /**< \brief (TC_BMR) SPEED ENabled */ +#define TC_BMR_QDTRANS (0x1u << 11) /**< \brief (TC_BMR) Quadrature Decoding TRANSparent */ +#define TC_BMR_EDGPHA (0x1u << 12) /**< \brief (TC_BMR) EDGe on PHA count mode */ +#define TC_BMR_INVA (0x1u << 13) /**< \brief (TC_BMR) INVerted phA */ +#define TC_BMR_INVB (0x1u << 14) /**< \brief (TC_BMR) INVerted phB */ +#define TC_BMR_INVIDX (0x1u << 15) /**< \brief (TC_BMR) INVerted InDeX */ +#define TC_BMR_SWAP (0x1u << 16) /**< \brief (TC_BMR) SWAP PHA and PHB */ +#define TC_BMR_IDXPHB (0x1u << 17) /**< \brief (TC_BMR) InDeX pin is PHB pin */ +#define TC_BMR_FILTER (0x1u << 19) /**< \brief (TC_BMR) */ +#define TC_BMR_MAXFILT_Pos 20 +#define TC_BMR_MAXFILT_Msk (0x3fu << TC_BMR_MAXFILT_Pos) /**< \brief (TC_BMR) MAXimum FILTer */ +#define TC_BMR_MAXFILT(value) ((TC_BMR_MAXFILT_Msk & ((value) << TC_BMR_MAXFILT_Pos))) +/* -------- TC_QIER : (TC Offset: 0xC8) QDEC Interrupt Enable Register -------- */ +#define TC_QIER_IDX (0x1u << 0) /**< \brief (TC_QIER) InDeX */ +#define TC_QIER_DIRCHG (0x1u << 1) /**< \brief (TC_QIER) DIRection CHanGe */ +#define TC_QIER_QERR (0x1u << 2) /**< \brief (TC_QIER) Quadrature ERRor */ +/* -------- TC_QIDR : (TC Offset: 0xCC) QDEC Interrupt Disable Register -------- */ +#define TC_QIDR_IDX (0x1u << 0) /**< \brief (TC_QIDR) InDeX */ +#define TC_QIDR_DIRCHG (0x1u << 1) /**< \brief (TC_QIDR) DIRection CHanGe */ +#define TC_QIDR_QERR (0x1u << 2) /**< \brief (TC_QIDR) Quadrature ERRor */ +/* -------- TC_QIMR : (TC Offset: 0xD0) QDEC Interrupt Mask Register -------- */ +#define TC_QIMR_IDX (0x1u << 0) /**< \brief (TC_QIMR) InDeX */ +#define TC_QIMR_DIRCHG (0x1u << 1) /**< \brief (TC_QIMR) DIRection CHanGe */ +#define TC_QIMR_QERR (0x1u << 2) /**< \brief (TC_QIMR) Quadrature ERRor */ +/* -------- TC_QISR : (TC Offset: 0xD4) QDEC Interrupt Status Register -------- */ +#define TC_QISR_IDX (0x1u << 0) /**< \brief (TC_QISR) InDeX */ +#define TC_QISR_DIRCHG (0x1u << 1) /**< \brief (TC_QISR) DIRection CHanGe */ +#define TC_QISR_QERR (0x1u << 2) /**< \brief (TC_QISR) Quadrature ERRor */ +#define TC_QISR_DIR (0x1u << 8) /**< \brief (TC_QISR) Direction */ +/* -------- TC_FMR : (TC Offset: 0xD8) Fault Mode Register -------- */ +#define TC_FMR_ENCF0 (0x1u << 0) /**< \brief (TC_FMR) ENable Compare Fault Channel 0 */ +#define TC_FMR_ENCF1 (0x1u << 1) /**< \brief (TC_FMR) ENable Compare Fault Channel 1 */ +/* -------- TC_WPMR : (TC Offset: 0xE4) Write Protect Mode Register -------- */ +#define TC_WPMR_WPEN (0x1u << 0) /**< \brief (TC_WPMR) Write Protect Enable */ +#define TC_WPMR_WPKEY_Pos 8 +#define TC_WPMR_WPKEY_Msk (0xffffffu << TC_WPMR_WPKEY_Pos) /**< \brief (TC_WPMR) Write Protect KEY */ +#define TC_WPMR_WPKEY(value) ((TC_WPMR_WPKEY_Msk & ((value) << TC_WPMR_WPKEY_Pos))) + +/*@}*/ + + +#endif /* _SAM3S_TC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_twi.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_twi.h new file mode 100644 index 000000000..f009592a6 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_twi.h @@ -0,0 +1,217 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_TWI_COMPONENT_ +#define _SAM3S_TWI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Two-wire Interface */ +/* ============================================================================= */ +/** \addtogroup SAM3S_TWI Two-wire Interface */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Twi hardware registers */ +typedef struct { + WoReg TWI_CR; /**< \brief (Twi Offset: 0x00) Control Register */ + RwReg TWI_MMR; /**< \brief (Twi Offset: 0x04) Master Mode Register */ + RwReg TWI_SMR; /**< \brief (Twi Offset: 0x08) Slave Mode Register */ + RwReg TWI_IADR; /**< \brief (Twi Offset: 0x0C) Internal Address Register */ + RwReg TWI_CWGR; /**< \brief (Twi Offset: 0x10) Clock Waveform Generator Register */ + RoReg Reserved1[3]; + RoReg TWI_SR; /**< \brief (Twi Offset: 0x20) Status Register */ + WoReg TWI_IER; /**< \brief (Twi Offset: 0x24) Interrupt Enable Register */ + WoReg TWI_IDR; /**< \brief (Twi Offset: 0x28) Interrupt Disable Register */ + RoReg TWI_IMR; /**< \brief (Twi Offset: 0x2C) Interrupt Mask Register */ + RoReg TWI_RHR; /**< \brief (Twi Offset: 0x30) Receive Holding Register */ + WoReg TWI_THR; /**< \brief (Twi Offset: 0x34) Transmit Holding Register */ + RoReg Reserved2[50]; + RwReg TWI_RPR; /**< \brief (Twi Offset: 0x100) Receive Pointer Register */ + RwReg TWI_RCR; /**< \brief (Twi Offset: 0x104) Receive Counter Register */ + RwReg TWI_TPR; /**< \brief (Twi Offset: 0x108) Transmit Pointer Register */ + RwReg TWI_TCR; /**< \brief (Twi Offset: 0x10C) Transmit Counter Register */ + RwReg TWI_RNPR; /**< \brief (Twi Offset: 0x110) Receive Next Pointer Register */ + RwReg TWI_RNCR; /**< \brief (Twi Offset: 0x114) Receive Next Counter Register */ + RwReg TWI_TNPR; /**< \brief (Twi Offset: 0x118) Transmit Next Pointer Register */ + RwReg TWI_TNCR; /**< \brief (Twi Offset: 0x11C) Transmit Next Counter Register */ + WoReg TWI_PTCR; /**< \brief (Twi Offset: 0x120) Transfer Control Register */ + RoReg TWI_PTSR; /**< \brief (Twi Offset: 0x124) Transfer Status Register */ +} Twi; +#endif /* __ASSEMBLY__ */ +/* -------- TWI_CR : (TWI Offset: 0x00) Control Register -------- */ +#define TWI_CR_START (0x1u << 0) /**< \brief (TWI_CR) Send a START Condition */ +#define TWI_CR_STOP (0x1u << 1) /**< \brief (TWI_CR) Send a STOP Condition */ +#define TWI_CR_MSEN (0x1u << 2) /**< \brief (TWI_CR) TWI Master Mode Enabled */ +#define TWI_CR_MSDIS (0x1u << 3) /**< \brief (TWI_CR) TWI Master Mode Disabled */ +#define TWI_CR_SVEN (0x1u << 4) /**< \brief (TWI_CR) TWI Slave Mode Enabled */ +#define TWI_CR_SVDIS (0x1u << 5) /**< \brief (TWI_CR) TWI Slave Mode Disabled */ +#define TWI_CR_QUICK (0x1u << 6) /**< \brief (TWI_CR) SMBUS Quick Command */ +#define TWI_CR_SWRST (0x1u << 7) /**< \brief (TWI_CR) Software Reset */ +/* -------- TWI_MMR : (TWI Offset: 0x04) Master Mode Register -------- */ +#define TWI_MMR_IADRSZ_Pos 8 +#define TWI_MMR_IADRSZ_Msk (0x3u << TWI_MMR_IADRSZ_Pos) /**< \brief (TWI_MMR) Internal Device Address Size */ +#define TWI_MMR_IADRSZ_NONE (0x0u << 8) /**< \brief (TWI_MMR) No internal device address */ +#define TWI_MMR_IADRSZ_1_BYTE (0x1u << 8) /**< \brief (TWI_MMR) One-byte internal device address */ +#define TWI_MMR_IADRSZ_2_BYTE (0x2u << 8) /**< \brief (TWI_MMR) Two-byte internal device address */ +#define TWI_MMR_IADRSZ_3_BYTE (0x3u << 8) /**< \brief (TWI_MMR) Three-byte internal device address */ +#define TWI_MMR_MREAD (0x1u << 12) /**< \brief (TWI_MMR) Master Read Direction */ +#define TWI_MMR_DADR_Pos 16 +#define TWI_MMR_DADR_Msk (0x7fu << TWI_MMR_DADR_Pos) /**< \brief (TWI_MMR) Device Address */ +#define TWI_MMR_DADR(value) ((TWI_MMR_DADR_Msk & ((value) << TWI_MMR_DADR_Pos))) +/* -------- TWI_SMR : (TWI Offset: 0x08) Slave Mode Register -------- */ +#define TWI_SMR_SADR_Pos 16 +#define TWI_SMR_SADR_Msk (0x7fu << TWI_SMR_SADR_Pos) /**< \brief (TWI_SMR) Slave Address */ +#define TWI_SMR_SADR(value) ((TWI_SMR_SADR_Msk & ((value) << TWI_SMR_SADR_Pos))) +/* -------- TWI_IADR : (TWI Offset: 0x0C) Internal Address Register -------- */ +#define TWI_IADR_IADR_Pos 0 +#define TWI_IADR_IADR_Msk (0xffffffu << TWI_IADR_IADR_Pos) /**< \brief (TWI_IADR) Internal Address */ +#define TWI_IADR_IADR(value) ((TWI_IADR_IADR_Msk & ((value) << TWI_IADR_IADR_Pos))) +/* -------- TWI_CWGR : (TWI Offset: 0x10) Clock Waveform Generator Register -------- */ +#define TWI_CWGR_CLDIV_Pos 0 +#define TWI_CWGR_CLDIV_Msk (0xffu << TWI_CWGR_CLDIV_Pos) /**< \brief (TWI_CWGR) Clock Low Divider */ +#define TWI_CWGR_CLDIV(value) ((TWI_CWGR_CLDIV_Msk & ((value) << TWI_CWGR_CLDIV_Pos))) +#define TWI_CWGR_CHDIV_Pos 8 +#define TWI_CWGR_CHDIV_Msk (0xffu << TWI_CWGR_CHDIV_Pos) /**< \brief (TWI_CWGR) Clock High Divider */ +#define TWI_CWGR_CHDIV(value) ((TWI_CWGR_CHDIV_Msk & ((value) << TWI_CWGR_CHDIV_Pos))) +#define TWI_CWGR_CKDIV_Pos 16 +#define TWI_CWGR_CKDIV_Msk (0x7u << TWI_CWGR_CKDIV_Pos) /**< \brief (TWI_CWGR) Clock Divider */ +#define TWI_CWGR_CKDIV(value) ((TWI_CWGR_CKDIV_Msk & ((value) << TWI_CWGR_CKDIV_Pos))) +/* -------- TWI_SR : (TWI Offset: 0x20) Status Register -------- */ +#define TWI_SR_TXCOMP (0x1u << 0) /**< \brief (TWI_SR) Transmission Completed (automatically set / reset) */ +#define TWI_SR_RXRDY (0x1u << 1) /**< \brief (TWI_SR) Receive Holding Register Ready (automatically set / reset) */ +#define TWI_SR_TXRDY (0x1u << 2) /**< \brief (TWI_SR) Transmit Holding Register Ready (automatically set / reset) */ +#define TWI_SR_SVREAD (0x1u << 3) /**< \brief (TWI_SR) Slave Read (automatically set / reset) */ +#define TWI_SR_SVACC (0x1u << 4) /**< \brief (TWI_SR) Slave Access (automatically set / reset) */ +#define TWI_SR_GACC (0x1u << 5) /**< \brief (TWI_SR) General Call Access (clear on read) */ +#define TWI_SR_OVRE (0x1u << 6) /**< \brief (TWI_SR) Overrun Error (clear on read) */ +#define TWI_SR_NACK (0x1u << 8) /**< \brief (TWI_SR) Not Acknowledged (clear on read) */ +#define TWI_SR_ARBLST (0x1u << 9) /**< \brief (TWI_SR) Arbitration Lost (clear on read) */ +#define TWI_SR_SCLWS (0x1u << 10) /**< \brief (TWI_SR) Clock Wait State (automatically set / reset) */ +#define TWI_SR_EOSACC (0x1u << 11) /**< \brief (TWI_SR) End Of Slave Access (clear on read) */ +#define TWI_SR_ENDRX (0x1u << 12) /**< \brief (TWI_SR) End of RX buffer */ +#define TWI_SR_ENDTX (0x1u << 13) /**< \brief (TWI_SR) End of TX buffer */ +#define TWI_SR_RXBUFF (0x1u << 14) /**< \brief (TWI_SR) RX Buffer Full */ +#define TWI_SR_TXBUFE (0x1u << 15) /**< \brief (TWI_SR) TX Buffer Empty */ +/* -------- TWI_IER : (TWI Offset: 0x24) Interrupt Enable Register -------- */ +#define TWI_IER_TXCOMP (0x1u << 0) /**< \brief (TWI_IER) Transmission Completed Interrupt Enable */ +#define TWI_IER_RXRDY (0x1u << 1) /**< \brief (TWI_IER) Receive Holding Register Ready Interrupt Enable */ +#define TWI_IER_TXRDY (0x1u << 2) /**< \brief (TWI_IER) Transmit Holding Register Ready Interrupt Enable */ +#define TWI_IER_SVACC (0x1u << 4) /**< \brief (TWI_IER) Slave Access Interrupt Enable */ +#define TWI_IER_GACC (0x1u << 5) /**< \brief (TWI_IER) General Call Access Interrupt Enable */ +#define TWI_IER_OVRE (0x1u << 6) /**< \brief (TWI_IER) Overrun Error Interrupt Enable */ +#define TWI_IER_NACK (0x1u << 8) /**< \brief (TWI_IER) Not Acknowledge Interrupt Enable */ +#define TWI_IER_ARBLST (0x1u << 9) /**< \brief (TWI_IER) Arbitration Lost Interrupt Enable */ +#define TWI_IER_SCL_WS (0x1u << 10) /**< \brief (TWI_IER) Clock Wait State Interrupt Enable */ +#define TWI_IER_EOSACC (0x1u << 11) /**< \brief (TWI_IER) End Of Slave Access Interrupt Enable */ +#define TWI_IER_ENDRX (0x1u << 12) /**< \brief (TWI_IER) End of Receive Buffer Interrupt Enable */ +#define TWI_IER_ENDTX (0x1u << 13) /**< \brief (TWI_IER) End of Transmit Buffer Interrupt Enable */ +#define TWI_IER_RXBUFF (0x1u << 14) /**< \brief (TWI_IER) Receive Buffer Full Interrupt Enable */ +#define TWI_IER_TXBUFE (0x1u << 15) /**< \brief (TWI_IER) Transmit Buffer Empty Interrupt Enable */ +/* -------- TWI_IDR : (TWI Offset: 0x28) Interrupt Disable Register -------- */ +#define TWI_IDR_TXCOMP (0x1u << 0) /**< \brief (TWI_IDR) Transmission Completed Interrupt Disable */ +#define TWI_IDR_RXRDY (0x1u << 1) /**< \brief (TWI_IDR) Receive Holding Register Ready Interrupt Disable */ +#define TWI_IDR_TXRDY (0x1u << 2) /**< \brief (TWI_IDR) Transmit Holding Register Ready Interrupt Disable */ +#define TWI_IDR_SVACC (0x1u << 4) /**< \brief (TWI_IDR) Slave Access Interrupt Disable */ +#define TWI_IDR_GACC (0x1u << 5) /**< \brief (TWI_IDR) General Call Access Interrupt Disable */ +#define TWI_IDR_OVRE (0x1u << 6) /**< \brief (TWI_IDR) Overrun Error Interrupt Disable */ +#define TWI_IDR_NACK (0x1u << 8) /**< \brief (TWI_IDR) Not Acknowledge Interrupt Disable */ +#define TWI_IDR_ARBLST (0x1u << 9) /**< \brief (TWI_IDR) Arbitration Lost Interrupt Disable */ +#define TWI_IDR_SCL_WS (0x1u << 10) /**< \brief (TWI_IDR) Clock Wait State Interrupt Disable */ +#define TWI_IDR_EOSACC (0x1u << 11) /**< \brief (TWI_IDR) End Of Slave Access Interrupt Disable */ +#define TWI_IDR_ENDRX (0x1u << 12) /**< \brief (TWI_IDR) End of Receive Buffer Interrupt Disable */ +#define TWI_IDR_ENDTX (0x1u << 13) /**< \brief (TWI_IDR) End of Transmit Buffer Interrupt Disable */ +#define TWI_IDR_RXBUFF (0x1u << 14) /**< \brief (TWI_IDR) Receive Buffer Full Interrupt Disable */ +#define TWI_IDR_TXBUFE (0x1u << 15) /**< \brief (TWI_IDR) Transmit Buffer Empty Interrupt Disable */ +/* -------- TWI_IMR : (TWI Offset: 0x2C) Interrupt Mask Register -------- */ +#define TWI_IMR_TXCOMP (0x1u << 0) /**< \brief (TWI_IMR) Transmission Completed Interrupt Mask */ +#define TWI_IMR_RXRDY (0x1u << 1) /**< \brief (TWI_IMR) Receive Holding Register Ready Interrupt Mask */ +#define TWI_IMR_TXRDY (0x1u << 2) /**< \brief (TWI_IMR) Transmit Holding Register Ready Interrupt Mask */ +#define TWI_IMR_SVACC (0x1u << 4) /**< \brief (TWI_IMR) Slave Access Interrupt Mask */ +#define TWI_IMR_GACC (0x1u << 5) /**< \brief (TWI_IMR) General Call Access Interrupt Mask */ +#define TWI_IMR_OVRE (0x1u << 6) /**< \brief (TWI_IMR) Overrun Error Interrupt Mask */ +#define TWI_IMR_NACK (0x1u << 8) /**< \brief (TWI_IMR) Not Acknowledge Interrupt Mask */ +#define TWI_IMR_ARBLST (0x1u << 9) /**< \brief (TWI_IMR) Arbitration Lost Interrupt Mask */ +#define TWI_IMR_SCL_WS (0x1u << 10) /**< \brief (TWI_IMR) Clock Wait State Interrupt Mask */ +#define TWI_IMR_EOSACC (0x1u << 11) /**< \brief (TWI_IMR) End Of Slave Access Interrupt Mask */ +#define TWI_IMR_ENDRX (0x1u << 12) /**< \brief (TWI_IMR) End of Receive Buffer Interrupt Mask */ +#define TWI_IMR_ENDTX (0x1u << 13) /**< \brief (TWI_IMR) End of Transmit Buffer Interrupt Mask */ +#define TWI_IMR_RXBUFF (0x1u << 14) /**< \brief (TWI_IMR) Receive Buffer Full Interrupt Mask */ +#define TWI_IMR_TXBUFE (0x1u << 15) /**< \brief (TWI_IMR) Transmit Buffer Empty Interrupt Mask */ +/* -------- TWI_RHR : (TWI Offset: 0x30) Receive Holding Register -------- */ +#define TWI_RHR_RXDATA_Pos 0 +#define TWI_RHR_RXDATA_Msk (0xffu << TWI_RHR_RXDATA_Pos) /**< \brief (TWI_RHR) Master or Slave Receive Holding Data */ +/* -------- TWI_THR : (TWI Offset: 0x34) Transmit Holding Register -------- */ +#define TWI_THR_TXDATA_Pos 0 +#define TWI_THR_TXDATA_Msk (0xffu << TWI_THR_TXDATA_Pos) /**< \brief (TWI_THR) Master or Slave Transmit Holding Data */ +#define TWI_THR_TXDATA(value) ((TWI_THR_TXDATA_Msk & ((value) << TWI_THR_TXDATA_Pos))) +/* -------- TWI_RPR : (TWI Offset: 0x100) Receive Pointer Register -------- */ +#define TWI_RPR_RXPTR_Pos 0 +#define TWI_RPR_RXPTR_Msk (0xffffffffu << TWI_RPR_RXPTR_Pos) /**< \brief (TWI_RPR) Receive Pointer Register */ +#define TWI_RPR_RXPTR(value) ((TWI_RPR_RXPTR_Msk & ((value) << TWI_RPR_RXPTR_Pos))) +/* -------- TWI_RCR : (TWI Offset: 0x104) Receive Counter Register -------- */ +#define TWI_RCR_RXCTR_Pos 0 +#define TWI_RCR_RXCTR_Msk (0xffffu << TWI_RCR_RXCTR_Pos) /**< \brief (TWI_RCR) Receive Counter Register */ +#define TWI_RCR_RXCTR(value) ((TWI_RCR_RXCTR_Msk & ((value) << TWI_RCR_RXCTR_Pos))) +/* -------- TWI_TPR : (TWI Offset: 0x108) Transmit Pointer Register -------- */ +#define TWI_TPR_TXPTR_Pos 0 +#define TWI_TPR_TXPTR_Msk (0xffffffffu << TWI_TPR_TXPTR_Pos) /**< \brief (TWI_TPR) Transmit Counter Register */ +#define TWI_TPR_TXPTR(value) ((TWI_TPR_TXPTR_Msk & ((value) << TWI_TPR_TXPTR_Pos))) +/* -------- TWI_TCR : (TWI Offset: 0x10C) Transmit Counter Register -------- */ +#define TWI_TCR_TXCTR_Pos 0 +#define TWI_TCR_TXCTR_Msk (0xffffu << TWI_TCR_TXCTR_Pos) /**< \brief (TWI_TCR) Transmit Counter Register */ +#define TWI_TCR_TXCTR(value) ((TWI_TCR_TXCTR_Msk & ((value) << TWI_TCR_TXCTR_Pos))) +/* -------- TWI_RNPR : (TWI Offset: 0x110) Receive Next Pointer Register -------- */ +#define TWI_RNPR_RXNPTR_Pos 0 +#define TWI_RNPR_RXNPTR_Msk (0xffffffffu << TWI_RNPR_RXNPTR_Pos) /**< \brief (TWI_RNPR) Receive Next Pointer */ +#define TWI_RNPR_RXNPTR(value) ((TWI_RNPR_RXNPTR_Msk & ((value) << TWI_RNPR_RXNPTR_Pos))) +/* -------- TWI_RNCR : (TWI Offset: 0x114) Receive Next Counter Register -------- */ +#define TWI_RNCR_RXNCTR_Pos 0 +#define TWI_RNCR_RXNCTR_Msk (0xffffu << TWI_RNCR_RXNCTR_Pos) /**< \brief (TWI_RNCR) Receive Next Counter */ +#define TWI_RNCR_RXNCTR(value) ((TWI_RNCR_RXNCTR_Msk & ((value) << TWI_RNCR_RXNCTR_Pos))) +/* -------- TWI_TNPR : (TWI Offset: 0x118) Transmit Next Pointer Register -------- */ +#define TWI_TNPR_TXNPTR_Pos 0 +#define TWI_TNPR_TXNPTR_Msk (0xffffffffu << TWI_TNPR_TXNPTR_Pos) /**< \brief (TWI_TNPR) Transmit Next Pointer */ +#define TWI_TNPR_TXNPTR(value) ((TWI_TNPR_TXNPTR_Msk & ((value) << TWI_TNPR_TXNPTR_Pos))) +/* -------- TWI_TNCR : (TWI Offset: 0x11C) Transmit Next Counter Register -------- */ +#define TWI_TNCR_TXNCTR_Pos 0 +#define TWI_TNCR_TXNCTR_Msk (0xffffu << TWI_TNCR_TXNCTR_Pos) /**< \brief (TWI_TNCR) Transmit Counter Next */ +#define TWI_TNCR_TXNCTR(value) ((TWI_TNCR_TXNCTR_Msk & ((value) << TWI_TNCR_TXNCTR_Pos))) +/* -------- TWI_PTCR : (TWI Offset: 0x120) Transfer Control Register -------- */ +#define TWI_PTCR_RXTEN (0x1u << 0) /**< \brief (TWI_PTCR) Receiver Transfer Enable */ +#define TWI_PTCR_RXTDIS (0x1u << 1) /**< \brief (TWI_PTCR) Receiver Transfer Disable */ +#define TWI_PTCR_TXTEN (0x1u << 8) /**< \brief (TWI_PTCR) Transmitter Transfer Enable */ +#define TWI_PTCR_TXTDIS (0x1u << 9) /**< \brief (TWI_PTCR) Transmitter Transfer Disable */ +/* -------- TWI_PTSR : (TWI Offset: 0x124) Transfer Status Register -------- */ +#define TWI_PTSR_RXTEN (0x1u << 0) /**< \brief (TWI_PTSR) Receiver Transfer Enable */ +#define TWI_PTSR_TXTEN (0x1u << 8) /**< \brief (TWI_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3S_TWI_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_uart.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_uart.h new file mode 100644 index 000000000..9e0daefd6 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_uart.h @@ -0,0 +1,185 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_UART_COMPONENT_ +#define _SAM3S_UART_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Universal Asynchronous Receiver Transmitter */ +/* ============================================================================= */ +/** \addtogroup SAM3S_UART Universal Asynchronous Receiver Transmitter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Uart hardware registers */ +typedef struct { + WoReg UART_CR; /**< \brief (Uart Offset: 0x0000) Control Register */ + RwReg UART_MR; /**< \brief (Uart Offset: 0x0004) Mode Register */ + WoReg UART_IER; /**< \brief (Uart Offset: 0x0008) Interrupt Enable Register */ + WoReg UART_IDR; /**< \brief (Uart Offset: 0x000C) Interrupt Disable Register */ + RoReg UART_IMR; /**< \brief (Uart Offset: 0x0010) Interrupt Mask Register */ + RoReg UART_SR; /**< \brief (Uart Offset: 0x0014) Status Register */ + RoReg UART_RHR; /**< \brief (Uart Offset: 0x0018) Receive Holding Register */ + WoReg UART_THR; /**< \brief (Uart Offset: 0x001C) Transmit Holding Register */ + RwReg UART_BRGR; /**< \brief (Uart Offset: 0x0020) Baud Rate Generator Register */ + RoReg Reserved1[55]; + RwReg UART_RPR; /**< \brief (Uart Offset: 0x100) Receive Pointer Register */ + RwReg UART_RCR; /**< \brief (Uart Offset: 0x104) Receive Counter Register */ + RwReg UART_TPR; /**< \brief (Uart Offset: 0x108) Transmit Pointer Register */ + RwReg UART_TCR; /**< \brief (Uart Offset: 0x10C) Transmit Counter Register */ + RwReg UART_RNPR; /**< \brief (Uart Offset: 0x110) Receive Next Pointer Register */ + RwReg UART_RNCR; /**< \brief (Uart Offset: 0x114) Receive Next Counter Register */ + RwReg UART_TNPR; /**< \brief (Uart Offset: 0x118) Transmit Next Pointer Register */ + RwReg UART_TNCR; /**< \brief (Uart Offset: 0x11C) Transmit Next Counter Register */ + WoReg UART_PTCR; /**< \brief (Uart Offset: 0x120) Transfer Control Register */ + RoReg UART_PTSR; /**< \brief (Uart Offset: 0x124) Transfer Status Register */ +} Uart; +#endif /* __ASSEMBLY__ */ +/* -------- UART_CR : (UART Offset: 0x0000) Control Register -------- */ +#define UART_CR_RSTRX (0x1u << 2) /**< \brief (UART_CR) Reset Receiver */ +#define UART_CR_RSTTX (0x1u << 3) /**< \brief (UART_CR) Reset Transmitter */ +#define UART_CR_RXEN (0x1u << 4) /**< \brief (UART_CR) Receiver Enable */ +#define UART_CR_RXDIS (0x1u << 5) /**< \brief (UART_CR) Receiver Disable */ +#define UART_CR_TXEN (0x1u << 6) /**< \brief (UART_CR) Transmitter Enable */ +#define UART_CR_TXDIS (0x1u << 7) /**< \brief (UART_CR) Transmitter Disable */ +#define UART_CR_RSTSTA (0x1u << 8) /**< \brief (UART_CR) Reset Status Bits */ +/* -------- UART_MR : (UART Offset: 0x0004) Mode Register -------- */ +#define UART_MR_PAR_Pos 9 +#define UART_MR_PAR_Msk (0x7u << UART_MR_PAR_Pos) /**< \brief (UART_MR) Parity Type */ +#define UART_MR_PAR_EVEN (0x0u << 9) /**< \brief (UART_MR) Even parity */ +#define UART_MR_PAR_ODD (0x1u << 9) /**< \brief (UART_MR) Odd parity */ +#define UART_MR_PAR_SPACE (0x2u << 9) /**< \brief (UART_MR) Space: parity forced to 0 */ +#define UART_MR_PAR_MARK (0x3u << 9) /**< \brief (UART_MR) Mark: parity forced to 1 */ +#define UART_MR_PAR_NO (0x4u << 9) /**< \brief (UART_MR) No parity */ +#define UART_MR_CHMODE_Pos 14 +#define UART_MR_CHMODE_Msk (0x3u << UART_MR_CHMODE_Pos) /**< \brief (UART_MR) Channel Mode */ +#define UART_MR_CHMODE_NORMAL (0x0u << 14) /**< \brief (UART_MR) Normal Mode */ +#define UART_MR_CHMODE_AUTOMATIC (0x1u << 14) /**< \brief (UART_MR) Automatic Echo */ +#define UART_MR_CHMODE_LOCAL_LOOPBACK (0x2u << 14) /**< \brief (UART_MR) Local Loopback */ +#define UART_MR_CHMODE_REMOTE_LOOPBACK (0x3u << 14) /**< \brief (UART_MR) Remote Loopback */ +/* -------- UART_IER : (UART Offset: 0x0008) Interrupt Enable Register -------- */ +#define UART_IER_RXRDY (0x1u << 0) /**< \brief (UART_IER) Enable RXRDY Interrupt */ +#define UART_IER_TXRDY (0x1u << 1) /**< \brief (UART_IER) Enable TXRDY Interrupt */ +#define UART_IER_ENDRX (0x1u << 3) /**< \brief (UART_IER) Enable End of Receive Transfer Interrupt */ +#define UART_IER_ENDTX (0x1u << 4) /**< \brief (UART_IER) Enable End of Transmit Interrupt */ +#define UART_IER_OVRE (0x1u << 5) /**< \brief (UART_IER) Enable Overrun Error Interrupt */ +#define UART_IER_FRAME (0x1u << 6) /**< \brief (UART_IER) Enable Framing Error Interrupt */ +#define UART_IER_PARE (0x1u << 7) /**< \brief (UART_IER) Enable Parity Error Interrupt */ +#define UART_IER_TXEMPTY (0x1u << 9) /**< \brief (UART_IER) Enable TXEMPTY Interrupt */ +#define UART_IER_TXBUFE (0x1u << 11) /**< \brief (UART_IER) Enable Buffer Empty Interrupt */ +#define UART_IER_RXBUFF (0x1u << 12) /**< \brief (UART_IER) Enable Buffer Full Interrupt */ +/* -------- UART_IDR : (UART Offset: 0x000C) Interrupt Disable Register -------- */ +#define UART_IDR_RXRDY (0x1u << 0) /**< \brief (UART_IDR) Disable RXRDY Interrupt */ +#define UART_IDR_TXRDY (0x1u << 1) /**< \brief (UART_IDR) Disable TXRDY Interrupt */ +#define UART_IDR_ENDRX (0x1u << 3) /**< \brief (UART_IDR) Disable End of Receive Transfer Interrupt */ +#define UART_IDR_ENDTX (0x1u << 4) /**< \brief (UART_IDR) Disable End of Transmit Interrupt */ +#define UART_IDR_OVRE (0x1u << 5) /**< \brief (UART_IDR) Disable Overrun Error Interrupt */ +#define UART_IDR_FRAME (0x1u << 6) /**< \brief (UART_IDR) Disable Framing Error Interrupt */ +#define UART_IDR_PARE (0x1u << 7) /**< \brief (UART_IDR) Disable Parity Error Interrupt */ +#define UART_IDR_TXEMPTY (0x1u << 9) /**< \brief (UART_IDR) Disable TXEMPTY Interrupt */ +#define UART_IDR_TXBUFE (0x1u << 11) /**< \brief (UART_IDR) Disable Buffer Empty Interrupt */ +#define UART_IDR_RXBUFF (0x1u << 12) /**< \brief (UART_IDR) Disable Buffer Full Interrupt */ +/* -------- UART_IMR : (UART Offset: 0x0010) Interrupt Mask Register -------- */ +#define UART_IMR_RXRDY (0x1u << 0) /**< \brief (UART_IMR) Mask RXRDY Interrupt */ +#define UART_IMR_TXRDY (0x1u << 1) /**< \brief (UART_IMR) Disable TXRDY Interrupt */ +#define UART_IMR_ENDRX (0x1u << 3) /**< \brief (UART_IMR) Mask End of Receive Transfer Interrupt */ +#define UART_IMR_ENDTX (0x1u << 4) /**< \brief (UART_IMR) Mask End of Transmit Interrupt */ +#define UART_IMR_OVRE (0x1u << 5) /**< \brief (UART_IMR) Mask Overrun Error Interrupt */ +#define UART_IMR_FRAME (0x1u << 6) /**< \brief (UART_IMR) Mask Framing Error Interrupt */ +#define UART_IMR_PARE (0x1u << 7) /**< \brief (UART_IMR) Mask Parity Error Interrupt */ +#define UART_IMR_TXEMPTY (0x1u << 9) /**< \brief (UART_IMR) Mask TXEMPTY Interrupt */ +#define UART_IMR_TXBUFE (0x1u << 11) /**< \brief (UART_IMR) Mask TXBUFE Interrupt */ +#define UART_IMR_RXBUFF (0x1u << 12) /**< \brief (UART_IMR) Mask RXBUFF Interrupt */ +/* -------- UART_SR : (UART Offset: 0x0014) Status Register -------- */ +#define UART_SR_RXRDY (0x1u << 0) /**< \brief (UART_SR) Receiver Ready */ +#define UART_SR_TXRDY (0x1u << 1) /**< \brief (UART_SR) Transmitter Ready */ +#define UART_SR_ENDRX (0x1u << 3) /**< \brief (UART_SR) End of Receiver Transfer */ +#define UART_SR_ENDTX (0x1u << 4) /**< \brief (UART_SR) End of Transmitter Transfer */ +#define UART_SR_OVRE (0x1u << 5) /**< \brief (UART_SR) Overrun Error */ +#define UART_SR_FRAME (0x1u << 6) /**< \brief (UART_SR) Framing Error */ +#define UART_SR_PARE (0x1u << 7) /**< \brief (UART_SR) Parity Error */ +#define UART_SR_TXEMPTY (0x1u << 9) /**< \brief (UART_SR) Transmitter Empty */ +#define UART_SR_TXBUFE (0x1u << 11) /**< \brief (UART_SR) Transmission Buffer Empty */ +#define UART_SR_RXBUFF (0x1u << 12) /**< \brief (UART_SR) Receive Buffer Full */ +/* -------- UART_RHR : (UART Offset: 0x0018) Receive Holding Register -------- */ +#define UART_RHR_RXCHR_Pos 0 +#define UART_RHR_RXCHR_Msk (0xffu << UART_RHR_RXCHR_Pos) /**< \brief (UART_RHR) Received Character */ +/* -------- UART_THR : (UART Offset: 0x001C) Transmit Holding Register -------- */ +#define UART_THR_TXCHR_Pos 0 +#define UART_THR_TXCHR_Msk (0xffu << UART_THR_TXCHR_Pos) /**< \brief (UART_THR) Character to be Transmitted */ +#define UART_THR_TXCHR(value) ((UART_THR_TXCHR_Msk & ((value) << UART_THR_TXCHR_Pos))) +/* -------- UART_BRGR : (UART Offset: 0x0020) Baud Rate Generator Register -------- */ +#define UART_BRGR_CD_Pos 0 +#define UART_BRGR_CD_Msk (0xffffu << UART_BRGR_CD_Pos) /**< \brief (UART_BRGR) Clock Divisor */ +#define UART_BRGR_CD(value) ((UART_BRGR_CD_Msk & ((value) << UART_BRGR_CD_Pos))) +/* -------- UART_RPR : (UART Offset: 0x100) Receive Pointer Register -------- */ +#define UART_RPR_RXPTR_Pos 0 +#define UART_RPR_RXPTR_Msk (0xffffffffu << UART_RPR_RXPTR_Pos) /**< \brief (UART_RPR) Receive Pointer Register */ +#define UART_RPR_RXPTR(value) ((UART_RPR_RXPTR_Msk & ((value) << UART_RPR_RXPTR_Pos))) +/* -------- UART_RCR : (UART Offset: 0x104) Receive Counter Register -------- */ +#define UART_RCR_RXCTR_Pos 0 +#define UART_RCR_RXCTR_Msk (0xffffu << UART_RCR_RXCTR_Pos) /**< \brief (UART_RCR) Receive Counter Register */ +#define UART_RCR_RXCTR(value) ((UART_RCR_RXCTR_Msk & ((value) << UART_RCR_RXCTR_Pos))) +/* -------- UART_TPR : (UART Offset: 0x108) Transmit Pointer Register -------- */ +#define UART_TPR_TXPTR_Pos 0 +#define UART_TPR_TXPTR_Msk (0xffffffffu << UART_TPR_TXPTR_Pos) /**< \brief (UART_TPR) Transmit Counter Register */ +#define UART_TPR_TXPTR(value) ((UART_TPR_TXPTR_Msk & ((value) << UART_TPR_TXPTR_Pos))) +/* -------- UART_TCR : (UART Offset: 0x10C) Transmit Counter Register -------- */ +#define UART_TCR_TXCTR_Pos 0 +#define UART_TCR_TXCTR_Msk (0xffffu << UART_TCR_TXCTR_Pos) /**< \brief (UART_TCR) Transmit Counter Register */ +#define UART_TCR_TXCTR(value) ((UART_TCR_TXCTR_Msk & ((value) << UART_TCR_TXCTR_Pos))) +/* -------- UART_RNPR : (UART Offset: 0x110) Receive Next Pointer Register -------- */ +#define UART_RNPR_RXNPTR_Pos 0 +#define UART_RNPR_RXNPTR_Msk (0xffffffffu << UART_RNPR_RXNPTR_Pos) /**< \brief (UART_RNPR) Receive Next Pointer */ +#define UART_RNPR_RXNPTR(value) ((UART_RNPR_RXNPTR_Msk & ((value) << UART_RNPR_RXNPTR_Pos))) +/* -------- UART_RNCR : (UART Offset: 0x114) Receive Next Counter Register -------- */ +#define UART_RNCR_RXNCTR_Pos 0 +#define UART_RNCR_RXNCTR_Msk (0xffffu << UART_RNCR_RXNCTR_Pos) /**< \brief (UART_RNCR) Receive Next Counter */ +#define UART_RNCR_RXNCTR(value) ((UART_RNCR_RXNCTR_Msk & ((value) << UART_RNCR_RXNCTR_Pos))) +/* -------- UART_TNPR : (UART Offset: 0x118) Transmit Next Pointer Register -------- */ +#define UART_TNPR_TXNPTR_Pos 0 +#define UART_TNPR_TXNPTR_Msk (0xffffffffu << UART_TNPR_TXNPTR_Pos) /**< \brief (UART_TNPR) Transmit Next Pointer */ +#define UART_TNPR_TXNPTR(value) ((UART_TNPR_TXNPTR_Msk & ((value) << UART_TNPR_TXNPTR_Pos))) +/* -------- UART_TNCR : (UART Offset: 0x11C) Transmit Next Counter Register -------- */ +#define UART_TNCR_TXNCTR_Pos 0 +#define UART_TNCR_TXNCTR_Msk (0xffffu << UART_TNCR_TXNCTR_Pos) /**< \brief (UART_TNCR) Transmit Counter Next */ +#define UART_TNCR_TXNCTR(value) ((UART_TNCR_TXNCTR_Msk & ((value) << UART_TNCR_TXNCTR_Pos))) +/* -------- UART_PTCR : (UART Offset: 0x120) Transfer Control Register -------- */ +#define UART_PTCR_RXTEN (0x1u << 0) /**< \brief (UART_PTCR) Receiver Transfer Enable */ +#define UART_PTCR_RXTDIS (0x1u << 1) /**< \brief (UART_PTCR) Receiver Transfer Disable */ +#define UART_PTCR_TXTEN (0x1u << 8) /**< \brief (UART_PTCR) Transmitter Transfer Enable */ +#define UART_PTCR_TXTDIS (0x1u << 9) /**< \brief (UART_PTCR) Transmitter Transfer Disable */ +/* -------- UART_PTSR : (UART Offset: 0x124) Transfer Status Register -------- */ +#define UART_PTSR_RXTEN (0x1u << 0) /**< \brief (UART_PTSR) Receiver Transfer Enable */ +#define UART_PTSR_TXTEN (0x1u << 8) /**< \brief (UART_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3S_UART_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_udp.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_udp.h new file mode 100644 index 000000000..be2b7b5dc --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_udp.h @@ -0,0 +1,185 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_UDP_COMPONENT_ +#define _SAM3S_UDP_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR USB Device Port */ +/* ============================================================================= */ +/** \addtogroup SAM3S_UDP USB Device Port */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Udp hardware registers */ +typedef struct { + RoReg UDP_FRM_NUM; /**< \brief (Udp Offset: 0x000) Frame Number Register */ + RwReg UDP_GLB_STAT; /**< \brief (Udp Offset: 0x004) Global State Register */ + RwReg UDP_FADDR; /**< \brief (Udp Offset: 0x008) Function Address Register */ + RoReg Reserved1[1]; + WoReg UDP_IER; /**< \brief (Udp Offset: 0x010) Interrupt Enable Register */ + WoReg UDP_IDR; /**< \brief (Udp Offset: 0x014) Interrupt Disable Register */ + RoReg UDP_IMR; /**< \brief (Udp Offset: 0x018) Interrupt Mask Register */ + RoReg UDP_ISR; /**< \brief (Udp Offset: 0x01C) Interrupt Status Register */ + WoReg UDP_ICR; /**< \brief (Udp Offset: 0x020) Interrupt Clear Register */ + RoReg Reserved2[1]; + RwReg UDP_RST_EP; /**< \brief (Udp Offset: 0x028) Reset Endpoint Register */ + RoReg Reserved3[1]; + RwReg UDP_CSR[8]; /**< \brief (Udp Offset: 0x030) Endpoint Control and Status Register */ + RwReg UDP_FDR[8]; /**< \brief (Udp Offset: 0x050) Endpoint FIFO Data Register */ + RoReg Reserved4[1]; + RwReg UDP_TXVC; /**< \brief (Udp Offset: 0x074) Transceiver Control Register */ +} Udp; +#endif /* __ASSEMBLY__ */ +/* -------- UDP_FRM_NUM : (UDP Offset: 0x000) Frame Number Register -------- */ +#define UDP_FRM_NUM_FRM_NUM_Pos 0 +#define UDP_FRM_NUM_FRM_NUM_Msk (0x7ffu << UDP_FRM_NUM_FRM_NUM_Pos) /**< \brief (UDP_FRM_NUM) Frame Number as Defined in the Packet Field Formats */ +#define UDP_FRM_NUM_FRM_ERR (0x1u << 16) /**< \brief (UDP_FRM_NUM) Frame Error */ +#define UDP_FRM_NUM_FRM_OK (0x1u << 17) /**< \brief (UDP_FRM_NUM) Frame OK */ +/* -------- UDP_GLB_STAT : (UDP Offset: 0x004) Global State Register -------- */ +#define UDP_GLB_STAT_FADDEN (0x1u << 0) /**< \brief (UDP_GLB_STAT) Function Address Enable */ +#define UDP_GLB_STAT_CONFG (0x1u << 1) /**< \brief (UDP_GLB_STAT) Configured */ +#define UDP_GLB_STAT_ESR (0x1u << 2) /**< \brief (UDP_GLB_STAT) Enable Send Resume */ +#define UDP_GLB_STAT_RSMINPR (0x1u << 3) /**< \brief (UDP_GLB_STAT) */ +#define UDP_GLB_STAT_RMWUPE (0x1u << 4) /**< \brief (UDP_GLB_STAT) Remote Wake Up Enable */ +/* -------- UDP_FADDR : (UDP Offset: 0x008) Function Address Register -------- */ +#define UDP_FADDR_FADD_Pos 0 +#define UDP_FADDR_FADD_Msk (0x7fu << UDP_FADDR_FADD_Pos) /**< \brief (UDP_FADDR) Function Address Value */ +#define UDP_FADDR_FADD(value) ((UDP_FADDR_FADD_Msk & ((value) << UDP_FADDR_FADD_Pos))) +#define UDP_FADDR_FEN (0x1u << 8) /**< \brief (UDP_FADDR) Function Enable */ +/* -------- UDP_IER : (UDP Offset: 0x010) Interrupt Enable Register -------- */ +#define UDP_IER_EP0INT (0x1u << 0) /**< \brief (UDP_IER) Enable Endpoint 0 Interrupt */ +#define UDP_IER_EP1INT (0x1u << 1) /**< \brief (UDP_IER) Enable Endpoint 1 Interrupt */ +#define UDP_IER_EP2INT (0x1u << 2) /**< \brief (UDP_IER) Enable Endpoint 2Interrupt */ +#define UDP_IER_EP3INT (0x1u << 3) /**< \brief (UDP_IER) Enable Endpoint 3 Interrupt */ +#define UDP_IER_EP4INT (0x1u << 4) /**< \brief (UDP_IER) Enable Endpoint 4 Interrupt */ +#define UDP_IER_EP5INT (0x1u << 5) /**< \brief (UDP_IER) Enable Endpoint 5 Interrupt */ +#define UDP_IER_EP6INT (0x1u << 6) /**< \brief (UDP_IER) Enable Endpoint 6 Interrupt */ +#define UDP_IER_EP7INT (0x1u << 7) /**< \brief (UDP_IER) Enable Endpoint 7 Interrupt */ +#define UDP_IER_RXSUSP (0x1u << 8) /**< \brief (UDP_IER) Enable UDP Suspend Interrupt */ +#define UDP_IER_RXRSM (0x1u << 9) /**< \brief (UDP_IER) Enable UDP Resume Interrupt */ +#define UDP_IER_EXTRSM (0x1u << 10) /**< \brief (UDP_IER) */ +#define UDP_IER_SOFINT (0x1u << 11) /**< \brief (UDP_IER) Enable Start Of Frame Interrupt */ +#define UDP_IER_WAKEUP (0x1u << 13) /**< \brief (UDP_IER) Enable UDP bus Wakeup Interrupt */ +/* -------- UDP_IDR : (UDP Offset: 0x014) Interrupt Disable Register -------- */ +#define UDP_IDR_EP0INT (0x1u << 0) /**< \brief (UDP_IDR) Disable Endpoint 0 Interrupt */ +#define UDP_IDR_EP1INT (0x1u << 1) /**< \brief (UDP_IDR) Disable Endpoint 1 Interrupt */ +#define UDP_IDR_EP2INT (0x1u << 2) /**< \brief (UDP_IDR) Disable Endpoint 2 Interrupt */ +#define UDP_IDR_EP3INT (0x1u << 3) /**< \brief (UDP_IDR) Disable Endpoint 3 Interrupt */ +#define UDP_IDR_EP4INT (0x1u << 4) /**< \brief (UDP_IDR) Disable Endpoint 4 Interrupt */ +#define UDP_IDR_EP5INT (0x1u << 5) /**< \brief (UDP_IDR) Disable Endpoint 5 Interrupt */ +#define UDP_IDR_EP6INT (0x1u << 6) /**< \brief (UDP_IDR) Disable Endpoint 6 Interrupt */ +#define UDP_IDR_EP7INT (0x1u << 7) /**< \brief (UDP_IDR) Disable Endpoint 7 Interrupt */ +#define UDP_IDR_RXSUSP (0x1u << 8) /**< \brief (UDP_IDR) Disable UDP Suspend Interrupt */ +#define UDP_IDR_RXRSM (0x1u << 9) /**< \brief (UDP_IDR) Disable UDP Resume Interrupt */ +#define UDP_IDR_EXTRSM (0x1u << 10) /**< \brief (UDP_IDR) */ +#define UDP_IDR_SOFINT (0x1u << 11) /**< \brief (UDP_IDR) Disable Start Of Frame Interrupt */ +#define UDP_IDR_WAKEUP (0x1u << 13) /**< \brief (UDP_IDR) Disable USB Bus Interrupt */ +/* -------- UDP_IMR : (UDP Offset: 0x018) Interrupt Mask Register -------- */ +#define UDP_IMR_EP0INT (0x1u << 0) /**< \brief (UDP_IMR) Mask Endpoint 0 Interrupt */ +#define UDP_IMR_EP1INT (0x1u << 1) /**< \brief (UDP_IMR) Mask Endpoint 1 Interrupt */ +#define UDP_IMR_EP2INT (0x1u << 2) /**< \brief (UDP_IMR) Mask Endpoint 2 Interrupt */ +#define UDP_IMR_EP3INT (0x1u << 3) /**< \brief (UDP_IMR) Mask Endpoint 3 Interrupt */ +#define UDP_IMR_EP4INT (0x1u << 4) /**< \brief (UDP_IMR) Mask Endpoint 4 Interrupt */ +#define UDP_IMR_EP5INT (0x1u << 5) /**< \brief (UDP_IMR) Mask Endpoint 5 Interrupt */ +#define UDP_IMR_EP6INT (0x1u << 6) /**< \brief (UDP_IMR) Mask Endpoint 6 Interrupt */ +#define UDP_IMR_EP7INT (0x1u << 7) /**< \brief (UDP_IMR) Mask Endpoint 7 Interrupt */ +#define UDP_IMR_RXSUSP (0x1u << 8) /**< \brief (UDP_IMR) Mask UDP Suspend Interrupt */ +#define UDP_IMR_RXRSM (0x1u << 9) /**< \brief (UDP_IMR) Mask UDP Resume Interrupt. */ +#define UDP_IMR_EXTRSM (0x1u << 10) /**< \brief (UDP_IMR) */ +#define UDP_IMR_SOFINT (0x1u << 11) /**< \brief (UDP_IMR) Mask Start Of Frame Interrupt */ +#define UDP_IMR_BIT12 (0x1u << 12) /**< \brief (UDP_IMR) UDP_IMR Bit 12 */ +#define UDP_IMR_WAKEUP (0x1u << 13) /**< \brief (UDP_IMR) USB Bus WAKEUP Interrupt */ +/* -------- UDP_ISR : (UDP Offset: 0x01C) Interrupt Status Register -------- */ +#define UDP_ISR_EP0INT (0x1u << 0) /**< \brief (UDP_ISR) Endpoint 0 Interrupt Status */ +#define UDP_ISR_EP1INT (0x1u << 1) /**< \brief (UDP_ISR) Endpoint 1 Interrupt Status */ +#define UDP_ISR_EP2INT (0x1u << 2) /**< \brief (UDP_ISR) Endpoint 2 Interrupt Status */ +#define UDP_ISR_EP3INT (0x1u << 3) /**< \brief (UDP_ISR) Endpoint 3 Interrupt Status */ +#define UDP_ISR_EP4INT (0x1u << 4) /**< \brief (UDP_ISR) Endpoint 4 Interrupt Status */ +#define UDP_ISR_EP5INT (0x1u << 5) /**< \brief (UDP_ISR) Endpoint 5 Interrupt Status */ +#define UDP_ISR_EP6INT (0x1u << 6) /**< \brief (UDP_ISR) Endpoint 6 Interrupt Status */ +#define UDP_ISR_EP7INT (0x1u << 7) /**< \brief (UDP_ISR) Endpoint 7Interrupt Status */ +#define UDP_ISR_RXSUSP (0x1u << 8) /**< \brief (UDP_ISR) UDP Suspend Interrupt Status */ +#define UDP_ISR_RXRSM (0x1u << 9) /**< \brief (UDP_ISR) UDP Resume Interrupt Status */ +#define UDP_ISR_EXTRSM (0x1u << 10) /**< \brief (UDP_ISR) */ +#define UDP_ISR_SOFINT (0x1u << 11) /**< \brief (UDP_ISR) Start of Frame Interrupt Status */ +#define UDP_ISR_ENDBUSRES (0x1u << 12) /**< \brief (UDP_ISR) End of BUS Reset Interrupt Status */ +#define UDP_ISR_WAKEUP (0x1u << 13) /**< \brief (UDP_ISR) UDP Resume Interrupt Status */ +/* -------- UDP_ICR : (UDP Offset: 0x020) Interrupt Clear Register -------- */ +#define UDP_ICR_RXSUSP (0x1u << 8) /**< \brief (UDP_ICR) Clear UDP Suspend Interrupt */ +#define UDP_ICR_RXRSM (0x1u << 9) /**< \brief (UDP_ICR) Clear UDP Resume Interrupt */ +#define UDP_ICR_EXTRSM (0x1u << 10) /**< \brief (UDP_ICR) */ +#define UDP_ICR_SOFINT (0x1u << 11) /**< \brief (UDP_ICR) Clear Start Of Frame Interrupt */ +#define UDP_ICR_ENDBUSRES (0x1u << 12) /**< \brief (UDP_ICR) Clear End of Bus Reset Interrupt */ +#define UDP_ICR_WAKEUP (0x1u << 13) /**< \brief (UDP_ICR) Clear Wakeup Interrupt */ +/* -------- UDP_RST_EP : (UDP Offset: 0x028) Reset Endpoint Register -------- */ +#define UDP_RST_EP_EP0 (0x1u << 0) /**< \brief (UDP_RST_EP) Reset Endpoint 0 */ +#define UDP_RST_EP_EP1 (0x1u << 1) /**< \brief (UDP_RST_EP) Reset Endpoint 1 */ +#define UDP_RST_EP_EP2 (0x1u << 2) /**< \brief (UDP_RST_EP) Reset Endpoint 2 */ +#define UDP_RST_EP_EP3 (0x1u << 3) /**< \brief (UDP_RST_EP) Reset Endpoint 3 */ +#define UDP_RST_EP_EP4 (0x1u << 4) /**< \brief (UDP_RST_EP) Reset Endpoint 4 */ +#define UDP_RST_EP_EP5 (0x1u << 5) /**< \brief (UDP_RST_EP) Reset Endpoint 5 */ +#define UDP_RST_EP_EP6 (0x1u << 6) /**< \brief (UDP_RST_EP) Reset Endpoint 6 */ +#define UDP_RST_EP_EP7 (0x1u << 7) /**< \brief (UDP_RST_EP) Reset Endpoint 7 */ +/* -------- UDP_CSR[8] : (UDP Offset: 0x030) Endpoint Control and Status Register -------- */ +#define UDP_CSR_TXCOMP (0x1u << 0) /**< \brief (UDP_CSR[8]) Generates an IN Packet with Data Previously Written in the DPR */ +#define UDP_CSR_RX_DATA_BK0 (0x1u << 1) /**< \brief (UDP_CSR[8]) Receive Data Bank 0 */ +#define UDP_CSR_RXSETUP (0x1u << 2) /**< \brief (UDP_CSR[8]) Received Setup */ +#define UDP_CSR_STALLSENT (0x1u << 3) /**< \brief (UDP_CSR[8]) Stall Sent (Control, Bulk Interrupt Endpoints)/ISOERROR (Isochronous Endpoints) */ +#define UDP_CSR_ISOERROR (0x1u << 3) /**< \brief (UDP_CSR[8]) Stall Sent (Control, Bulk Interrupt Endpoints)/ISOERROR (Isochronous Endpoints) */ +#define UDP_CSR_TXPKTRDY (0x1u << 4) /**< \brief (UDP_CSR[8]) Transmit Packet Ready */ +#define UDP_CSR_FORCESTALL (0x1u << 5) /**< \brief (UDP_CSR[8]) Force Stall (used by Control, Bulk and Isochronous Endpoints) */ +#define UDP_CSR_RX_DATA_BK1 (0x1u << 6) /**< \brief (UDP_CSR[8]) Receive Data Bank 1 (only used by endpoints with ping-pong attributes) */ +#define UDP_CSR_DIR (0x1u << 7) /**< \brief (UDP_CSR[8]) Transfer Direction (only available for control endpoints) */ +#define UDP_CSR_EPTYPE_Pos 8 +#define UDP_CSR_EPTYPE_Msk (0x7u << UDP_CSR_EPTYPE_Pos) /**< \brief (UDP_CSR[8]) Endpoint Type */ +#define UDP_CSR_EPTYPE_CTRL (0x0u << 8) /**< \brief (UDP_CSR[8]) Control */ +#define UDP_CSR_EPTYPE_ISO_OUT (0x1u << 8) /**< \brief (UDP_CSR[8]) Isochronous OUT */ +#define UDP_CSR_EPTYPE_BULK_OUT (0x2u << 8) /**< \brief (UDP_CSR[8]) Bulk OUT */ +#define UDP_CSR_EPTYPE_INT_OUT (0x3u << 8) /**< \brief (UDP_CSR[8]) Interrupt OUT */ +#define UDP_CSR_EPTYPE_ISO_IN (0x5u << 8) /**< \brief (UDP_CSR[8]) Isochronous IN */ +#define UDP_CSR_EPTYPE_BULK_IN (0x6u << 8) /**< \brief (UDP_CSR[8]) Bulk IN */ +#define UDP_CSR_EPTYPE_INT_IN (0x7u << 8) /**< \brief (UDP_CSR[8]) Interrupt IN */ +#define UDP_CSR_DTGLE (0x1u << 11) /**< \brief (UDP_CSR[8]) Data Toggle */ +#define UDP_CSR_EPEDS (0x1u << 15) /**< \brief (UDP_CSR[8]) Endpoint Enable Disable */ +#define UDP_CSR_RXBYTECNT_Pos 16 +#define UDP_CSR_RXBYTECNT_Msk (0x7ffu << UDP_CSR_RXBYTECNT_Pos) /**< \brief (UDP_CSR[8]) Number of Bytes Available in the FIFO */ +#define UDP_CSR_RXBYTECNT(value) ((UDP_CSR_RXBYTECNT_Msk & ((value) << UDP_CSR_RXBYTECNT_Pos))) +/* -------- UDP_FDR[8] : (UDP Offset: 0x050) Endpoint FIFO Data Register -------- */ +#define UDP_FDR_FIFO_DATA_Pos 0 +#define UDP_FDR_FIFO_DATA_Msk (0xffu << UDP_FDR_FIFO_DATA_Pos) /**< \brief (UDP_FDR[8]) FIFO Data Value */ +#define UDP_FDR_FIFO_DATA(value) ((UDP_FDR_FIFO_DATA_Msk & ((value) << UDP_FDR_FIFO_DATA_Pos))) +/* -------- UDP_TXVC : (UDP Offset: 0x074) Transceiver Control Register -------- */ +#define UDP_TXVC_TXVDIS (0x1u << 8) /**< \brief (UDP_TXVC) Transceiver Disable */ +#define UDP_TXVC_PUON (0x1u << 9) /**< \brief (UDP_TXVC) Pullup On */ + +/*@}*/ + + +#endif /* _SAM3S_UDP_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_usart.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_usart.h new file mode 100644 index 000000000..83dd265d8 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_usart.h @@ -0,0 +1,361 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_USART_COMPONENT_ +#define _SAM3S_USART_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Universal Synchronous Asynchronous Receiver Transmitter */ +/* ============================================================================= */ +/** \addtogroup SAM3S_USART Universal Synchronous Asynchronous Receiver Transmitter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Usart hardware registers */ +typedef struct { + WoReg US_CR; /**< \brief (Usart Offset: 0x0000) Control Register */ + RwReg US_MR; /**< \brief (Usart Offset: 0x0004) Mode Register */ + WoReg US_IER; /**< \brief (Usart Offset: 0x0008) Interrupt Enable Register */ + WoReg US_IDR; /**< \brief (Usart Offset: 0x000C) Interrupt Disable Register */ + RoReg US_IMR; /**< \brief (Usart Offset: 0x0010) Interrupt Mask Register */ + RoReg US_CSR; /**< \brief (Usart Offset: 0x0014) Channel Status Register */ + RoReg US_RHR; /**< \brief (Usart Offset: 0x0018) Receiver Holding Register */ + WoReg US_THR; /**< \brief (Usart Offset: 0x001C) Transmitter Holding Register */ + RwReg US_BRGR; /**< \brief (Usart Offset: 0x0020) Baud Rate Generator Register */ + RwReg US_RTOR; /**< \brief (Usart Offset: 0x0024) Receiver Time-out Register */ + RwReg US_TTGR; /**< \brief (Usart Offset: 0x0028) Transmitter Timeguard Register */ + RoReg Reserved1[5]; + RwReg US_FIDI; /**< \brief (Usart Offset: 0x0040) FI DI Ratio Register */ + RoReg US_NER; /**< \brief (Usart Offset: 0x0044) Number of Errors Register */ + RoReg Reserved2[1]; + RwReg US_IF; /**< \brief (Usart Offset: 0x004C) IrDA Filter Register */ + RwReg US_MAN; /**< \brief (Usart Offset: 0x0050) Manchester Encoder Decoder Register */ + RoReg Reserved3[36]; + RwReg US_WPMR; /**< \brief (Usart Offset: 0xE4) Write Protect Mode Register */ + RoReg US_WPSR; /**< \brief (Usart Offset: 0xE8) Write Protect Status Register */ + RoReg Reserved4[4]; + RoReg US_VERSION; /**< \brief (Usart Offset: 0xFC) Version Register */ + RwReg US_RPR; /**< \brief (Usart Offset: 0x100) Receive Pointer Register */ + RwReg US_RCR; /**< \brief (Usart Offset: 0x104) Receive Counter Register */ + RwReg US_TPR; /**< \brief (Usart Offset: 0x108) Transmit Pointer Register */ + RwReg US_TCR; /**< \brief (Usart Offset: 0x10C) Transmit Counter Register */ + RwReg US_RNPR; /**< \brief (Usart Offset: 0x110) Receive Next Pointer Register */ + RwReg US_RNCR; /**< \brief (Usart Offset: 0x114) Receive Next Counter Register */ + RwReg US_TNPR; /**< \brief (Usart Offset: 0x118) Transmit Next Pointer Register */ + RwReg US_TNCR; /**< \brief (Usart Offset: 0x11C) Transmit Next Counter Register */ + WoReg US_PTCR; /**< \brief (Usart Offset: 0x120) Transfer Control Register */ + RoReg US_PTSR; /**< \brief (Usart Offset: 0x124) Transfer Status Register */ +} Usart; +#endif /* __ASSEMBLY__ */ +/* -------- US_CR : (USART Offset: 0x0000) Control Register -------- */ +#define US_CR_RSTRX (0x1u << 2) /**< \brief (US_CR) Reset Receiver */ +#define US_CR_RSTTX (0x1u << 3) /**< \brief (US_CR) Reset Transmitter */ +#define US_CR_RXEN (0x1u << 4) /**< \brief (US_CR) Receiver Enable */ +#define US_CR_RXDIS (0x1u << 5) /**< \brief (US_CR) Receiver Disable */ +#define US_CR_TXEN (0x1u << 6) /**< \brief (US_CR) Transmitter Enable */ +#define US_CR_TXDIS (0x1u << 7) /**< \brief (US_CR) Transmitter Disable */ +#define US_CR_RSTSTA (0x1u << 8) /**< \brief (US_CR) Reset Status Bits */ +#define US_CR_STTBRK (0x1u << 9) /**< \brief (US_CR) Start Break */ +#define US_CR_STPBRK (0x1u << 10) /**< \brief (US_CR) Stop Break */ +#define US_CR_STTTO (0x1u << 11) /**< \brief (US_CR) Start Time-out */ +#define US_CR_SENDA (0x1u << 12) /**< \brief (US_CR) Send Address */ +#define US_CR_RSTIT (0x1u << 13) /**< \brief (US_CR) Reset Iterations */ +#define US_CR_RSTNACK (0x1u << 14) /**< \brief (US_CR) Reset Non Acknowledge */ +#define US_CR_RETTO (0x1u << 15) /**< \brief (US_CR) Rearm Time-out */ +#define US_CR_DTREN (0x1u << 16) /**< \brief (US_CR) Data Terminal Ready Enable */ +#define US_CR_DTRDIS (0x1u << 17) /**< \brief (US_CR) Data Terminal Ready Disable */ +#define US_CR_RTSEN (0x1u << 18) /**< \brief (US_CR) Request to Send Enable */ +#define US_CR_FCS (0x1u << 18) /**< \brief (US_CR) Force SPI Chip Select */ +#define US_CR_RTSDIS (0x1u << 19) /**< \brief (US_CR) Request to Send Disable */ +#define US_CR_RCS (0x1u << 19) /**< \brief (US_CR) Release SPI Chip Select */ +/* -------- US_MR : (USART Offset: 0x0004) Mode Register -------- */ +#define US_MR_USART_MODE_Pos 0 +#define US_MR_USART_MODE_Msk (0xfu << US_MR_USART_MODE_Pos) /**< \brief (US_MR) */ +#define US_MR_USART_MODE_NORMAL (0x0u << 0) /**< \brief (US_MR) Normal mode */ +#define US_MR_USART_MODE_RS485 (0x1u << 0) /**< \brief (US_MR) RS485 */ +#define US_MR_USART_MODE_HW_HANDSHAKING (0x2u << 0) /**< \brief (US_MR) Hardware Handshaking */ +#define US_MR_USART_MODE_MODEM (0x3u << 0) /**< \brief (US_MR) Modem */ +#define US_MR_USART_MODE_IS07816_T_0 (0x4u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 0 */ +#define US_MR_USART_MODE_IS07816_T_1 (0x6u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 1 */ +#define US_MR_USART_MODE_IRDA (0x8u << 0) /**< \brief (US_MR) IrDA */ +#define US_MR_USART_MODE_SPI_MASTER (0xEu << 0) /**< \brief (US_MR) SPI Master */ +#define US_MR_USART_MODE_SPI_SLAVE (0xFu << 0) /**< \brief (US_MR) SPI Slave */ +#define US_MR_USCLKS_Pos 4 +#define US_MR_USCLKS_Msk (0x3u << US_MR_USCLKS_Pos) /**< \brief (US_MR) Clock Selection */ +#define US_MR_USCLKS_MCK (0x0u << 4) /**< \brief (US_MR) Master Clock MCK is selected */ +#define US_MR_USCLKS_DIV (0x1u << 4) /**< \brief (US_MR) Internal Clock Divided MCK/DIV (DIV=8) is selected */ +#define US_MR_USCLKS_SCK (0x3u << 4) /**< \brief (US_MR) Serial Clock SLK is selected */ +#define US_MR_CHRL_Pos 6 +#define US_MR_CHRL_Msk (0x3u << US_MR_CHRL_Pos) /**< \brief (US_MR) Character Length. */ +#define US_MR_CHRL_5_BIT (0x0u << 6) /**< \brief (US_MR) Character length is 5 bits */ +#define US_MR_CHRL_6_BIT (0x1u << 6) /**< \brief (US_MR) Character length is 6 bits */ +#define US_MR_CHRL_7_BIT (0x2u << 6) /**< \brief (US_MR) Character length is 7 bits */ +#define US_MR_CHRL_8_BIT (0x3u << 6) /**< \brief (US_MR) Character length is 8 bits */ +#define US_MR_SYNC (0x1u << 8) /**< \brief (US_MR) Synchronous Mode Select */ +#define US_MR_CPHA (0x1u << 8) /**< \brief (US_MR) SPI Clock Phase */ +#define US_MR_PAR_Pos 9 +#define US_MR_PAR_Msk (0x7u << US_MR_PAR_Pos) /**< \brief (US_MR) Parity Type */ +#define US_MR_PAR_EVEN (0x0u << 9) /**< \brief (US_MR) Even parity */ +#define US_MR_PAR_ODD (0x1u << 9) /**< \brief (US_MR) Odd parity */ +#define US_MR_PAR_SPACE (0x2u << 9) /**< \brief (US_MR) Parity forced to 0 (Space) */ +#define US_MR_PAR_MARK (0x3u << 9) /**< \brief (US_MR) Parity forced to 1 (Mark) */ +#define US_MR_PAR_NO (0x4u << 9) /**< \brief (US_MR) No parity */ +#define US_MR_PAR_MULTIDROP (0x6u << 9) /**< \brief (US_MR) Multidrop mode */ +#define US_MR_NBSTOP_Pos 12 +#define US_MR_NBSTOP_Msk (0x3u << US_MR_NBSTOP_Pos) /**< \brief (US_MR) Number of Stop Bits */ +#define US_MR_NBSTOP_1_BIT (0x0u << 12) /**< \brief (US_MR) 1 stop bit */ +#define US_MR_NBSTOP_1_5_BIT (0x1u << 12) /**< \brief (US_MR) 1.5 stop bit (SYNC = 0) or reserved (SYNC = 1) */ +#define US_MR_NBSTOP_2_BIT (0x2u << 12) /**< \brief (US_MR) 2 stop bits */ +#define US_MR_CHMODE_Pos 14 +#define US_MR_CHMODE_Msk (0x3u << US_MR_CHMODE_Pos) /**< \brief (US_MR) Channel Mode */ +#define US_MR_CHMODE_NORMAL (0x0u << 14) /**< \brief (US_MR) Normal Mode */ +#define US_MR_CHMODE_AUTOMATIC (0x1u << 14) /**< \brief (US_MR) Automatic Echo. Receiver input is connected to the TXD pin. */ +#define US_MR_CHMODE_LOCAL_LOOPBACK (0x2u << 14) /**< \brief (US_MR) Local Loopback. Transmitter output is connected to the Receiver Input. */ +#define US_MR_CHMODE_REMOTE_LOOPBACK (0x3u << 14) /**< \brief (US_MR) Remote Loopback. RXD pin is internally connected to the TXD pin. */ +#define US_MR_MSBF (0x1u << 16) /**< \brief (US_MR) Bit Order */ +#define US_MR_CPOL (0x1u << 16) /**< \brief (US_MR) SPI Clock Polarity */ +#define US_MR_MODE9 (0x1u << 17) /**< \brief (US_MR) 9-bit Character Length */ +#define US_MR_CLKO (0x1u << 18) /**< \brief (US_MR) Clock Output Select */ +#define US_MR_OVER (0x1u << 19) /**< \brief (US_MR) Oversampling Mode */ +#define US_MR_INACK (0x1u << 20) /**< \brief (US_MR) Inhibit Non Acknowledge */ +#define US_MR_DSNACK (0x1u << 21) /**< \brief (US_MR) Disable Successive NACK */ +#define US_MR_VAR_SYNC (0x1u << 22) /**< \brief (US_MR) Variable Synchronization of Command/Data Sync Start Frame Delimiter */ +#define US_MR_INVDATA (0x1u << 23) /**< \brief (US_MR) INverted Data */ +#define US_MR_MAX_ITERATION_Pos 24 +#define US_MR_MAX_ITERATION_Msk (0x7u << US_MR_MAX_ITERATION_Pos) /**< \brief (US_MR) */ +#define US_MR_MAX_ITERATION(value) ((US_MR_MAX_ITERATION_Msk & ((value) << US_MR_MAX_ITERATION_Pos))) +#define US_MR_FILTER (0x1u << 28) /**< \brief (US_MR) Infrared Receive Line Filter */ +#define US_MR_MAN (0x1u << 29) /**< \brief (US_MR) Manchester Encoder/Decoder Enable */ +#define US_MR_MODSYNC (0x1u << 30) /**< \brief (US_MR) Manchester Synchronization Mode */ +#define US_MR_ONEBIT (0x1u << 31) /**< \brief (US_MR) Start Frame Delimiter Selector */ +/* -------- US_IER : (USART Offset: 0x0008) Interrupt Enable Register -------- */ +#define US_IER_RXRDY (0x1u << 0) /**< \brief (US_IER) RXRDY Interrupt Enable */ +#define US_IER_TXRDY (0x1u << 1) /**< \brief (US_IER) TXRDY Interrupt Enable */ +#define US_IER_RXBRK (0x1u << 2) /**< \brief (US_IER) Receiver Break Interrupt Enable */ +#define US_IER_ENDRX (0x1u << 3) /**< \brief (US_IER) End of Receive Transfer Interrupt Enable */ +#define US_IER_ENDTX (0x1u << 4) /**< \brief (US_IER) End of Transmit Interrupt Enable */ +#define US_IER_OVRE (0x1u << 5) /**< \brief (US_IER) Overrun Error Interrupt Enable */ +#define US_IER_FRAME (0x1u << 6) /**< \brief (US_IER) Framing Error Interrupt Enable */ +#define US_IER_PARE (0x1u << 7) /**< \brief (US_IER) Parity Error Interrupt Enable */ +#define US_IER_TIMEOUT (0x1u << 8) /**< \brief (US_IER) Time-out Interrupt Enable */ +#define US_IER_TXEMPTY (0x1u << 9) /**< \brief (US_IER) TXEMPTY Interrupt Enable */ +#define US_IER_ITER (0x1u << 10) /**< \brief (US_IER) Max number of Repetitions Reached */ +#define US_IER_UNRE (0x1u << 10) /**< \brief (US_IER) SPI Underrun Error */ +#define US_IER_TXBUFE (0x1u << 11) /**< \brief (US_IER) Buffer Empty Interrupt Enable */ +#define US_IER_RXBUFF (0x1u << 12) /**< \brief (US_IER) Buffer Full Interrupt Enable */ +#define US_IER_NACK (0x1u << 13) /**< \brief (US_IER) Non AcknowledgeInterrupt Enable */ +#define US_IER_RIIC (0x1u << 16) /**< \brief (US_IER) Ring Indicator Input Change Enable */ +#define US_IER_DSRIC (0x1u << 17) /**< \brief (US_IER) Data Set Ready Input Change Enable */ +#define US_IER_DCDIC (0x1u << 18) /**< \brief (US_IER) Data Carrier Detect Input Change Interrupt Enable */ +#define US_IER_CTSIC (0x1u << 19) /**< \brief (US_IER) Clear to Send Input Change Interrupt Enable */ +#define US_IER_MANE (0x1u << 24) /**< \brief (US_IER) Manchester Error Interrupt Enable */ +/* -------- US_IDR : (USART Offset: 0x000C) Interrupt Disable Register -------- */ +#define US_IDR_RXRDY (0x1u << 0) /**< \brief (US_IDR) RXRDY Interrupt Disable */ +#define US_IDR_TXRDY (0x1u << 1) /**< \brief (US_IDR) TXRDY Interrupt Disable */ +#define US_IDR_RXBRK (0x1u << 2) /**< \brief (US_IDR) Receiver Break Interrupt Disable */ +#define US_IDR_ENDRX (0x1u << 3) /**< \brief (US_IDR) End of Receive Transfer Interrupt Disable */ +#define US_IDR_ENDTX (0x1u << 4) /**< \brief (US_IDR) End of Transmit Interrupt Disable */ +#define US_IDR_OVRE (0x1u << 5) /**< \brief (US_IDR) Overrun Error Interrupt Disable */ +#define US_IDR_FRAME (0x1u << 6) /**< \brief (US_IDR) Framing Error Interrupt Disable */ +#define US_IDR_PARE (0x1u << 7) /**< \brief (US_IDR) Parity Error Interrupt Disable */ +#define US_IDR_TIMEOUT (0x1u << 8) /**< \brief (US_IDR) Time-out Interrupt Disable */ +#define US_IDR_TXEMPTY (0x1u << 9) /**< \brief (US_IDR) TXEMPTY Interrupt Disable */ +#define US_IDR_ITER (0x1u << 10) /**< \brief (US_IDR) Max number of Repetitions Reached Disable */ +#define US_IDR_UNRE (0x1u << 10) /**< \brief (US_IDR) SPI Underrun Error Disable */ +#define US_IDR_TXBUFE (0x1u << 11) /**< \brief (US_IDR) Buffer Empty Interrupt Disable */ +#define US_IDR_RXBUFF (0x1u << 12) /**< \brief (US_IDR) Buffer Full Interrupt Disable */ +#define US_IDR_NACK (0x1u << 13) /**< \brief (US_IDR) Non AcknowledgeInterrupt Disable */ +#define US_IDR_RIIC (0x1u << 16) /**< \brief (US_IDR) Ring Indicator Input Change Disable */ +#define US_IDR_DSRIC (0x1u << 17) /**< \brief (US_IDR) Data Set Ready Input Change Disable */ +#define US_IDR_DCDIC (0x1u << 18) /**< \brief (US_IDR) Data Carrier Detect Input Change Interrupt Disable */ +#define US_IDR_CTSIC (0x1u << 19) /**< \brief (US_IDR) Clear to Send Input Change Interrupt Disable */ +#define US_IDR_MANE (0x1u << 24) /**< \brief (US_IDR) Manchester Error Interrupt Disable */ +/* -------- US_IMR : (USART Offset: 0x0010) Interrupt Mask Register -------- */ +#define US_IMR_RXRDY (0x1u << 0) /**< \brief (US_IMR) RXRDY Interrupt Mask */ +#define US_IMR_TXRDY (0x1u << 1) /**< \brief (US_IMR) TXRDY Interrupt Mask */ +#define US_IMR_RXBRK (0x1u << 2) /**< \brief (US_IMR) Receiver Break Interrupt Mask */ +#define US_IMR_ENDRX (0x1u << 3) /**< \brief (US_IMR) End of Receive Transfer Interrupt Mask */ +#define US_IMR_ENDTX (0x1u << 4) /**< \brief (US_IMR) End of Transmit Interrupt Mask */ +#define US_IMR_OVRE (0x1u << 5) /**< \brief (US_IMR) Overrun Error Interrupt Mask */ +#define US_IMR_FRAME (0x1u << 6) /**< \brief (US_IMR) Framing Error Interrupt Mask */ +#define US_IMR_PARE (0x1u << 7) /**< \brief (US_IMR) Parity Error Interrupt Mask */ +#define US_IMR_TIMEOUT (0x1u << 8) /**< \brief (US_IMR) Time-out Interrupt Mask */ +#define US_IMR_TXEMPTY (0x1u << 9) /**< \brief (US_IMR) TXEMPTY Interrupt Mask */ +#define US_IMR_ITER (0x1u << 10) /**< \brief (US_IMR) Max number of Repetitions Reached Mask */ +#define US_IMR_UNRE (0x1u << 10) /**< \brief (US_IMR) SPI Underrun Error Mask */ +#define US_IMR_TXBUFE (0x1u << 11) /**< \brief (US_IMR) Buffer Empty Interrupt Mask */ +#define US_IMR_RXBUFF (0x1u << 12) /**< \brief (US_IMR) Buffer Full Interrupt Mask */ +#define US_IMR_NACK (0x1u << 13) /**< \brief (US_IMR) Non AcknowledgeInterrupt Mask */ +#define US_IMR_RIIC (0x1u << 16) /**< \brief (US_IMR) Ring Indicator Input Change Mask */ +#define US_IMR_DSRIC (0x1u << 17) /**< \brief (US_IMR) Data Set Ready Input Change Mask */ +#define US_IMR_DCDIC (0x1u << 18) /**< \brief (US_IMR) Data Carrier Detect Input Change Interrupt Mask */ +#define US_IMR_CTSIC (0x1u << 19) /**< \brief (US_IMR) Clear to Send Input Change Interrupt Mask */ +#define US_IMR_MANE (0x1u << 24) /**< \brief (US_IMR) Manchester Error Interrupt Mask */ +/* -------- US_CSR : (USART Offset: 0x0014) Channel Status Register -------- */ +#define US_CSR_RXRDY (0x1u << 0) /**< \brief (US_CSR) Receiver Ready */ +#define US_CSR_TXRDY (0x1u << 1) /**< \brief (US_CSR) Transmitter Ready */ +#define US_CSR_RXBRK (0x1u << 2) /**< \brief (US_CSR) Break Received/End of Break */ +#define US_CSR_ENDRX (0x1u << 3) /**< \brief (US_CSR) End of Receiver Transfer */ +#define US_CSR_ENDTX (0x1u << 4) /**< \brief (US_CSR) End of Transmitter Transfer */ +#define US_CSR_OVRE (0x1u << 5) /**< \brief (US_CSR) Overrun Error */ +#define US_CSR_FRAME (0x1u << 6) /**< \brief (US_CSR) Framing Error */ +#define US_CSR_PARE (0x1u << 7) /**< \brief (US_CSR) Parity Error */ +#define US_CSR_TIMEOUT (0x1u << 8) /**< \brief (US_CSR) Receiver Time-out */ +#define US_CSR_TXEMPTY (0x1u << 9) /**< \brief (US_CSR) Transmitter Empty */ +#define US_CSR_ITER (0x1u << 10) /**< \brief (US_CSR) Max number of Repetitions Reached */ +#define US_CSR_UNRE (0x1u << 10) /**< \brief (US_CSR) SPI Underrun Error */ +#define US_CSR_TXBUFE (0x1u << 11) /**< \brief (US_CSR) Transmission Buffer Empty */ +#define US_CSR_RXBUFF (0x1u << 12) /**< \brief (US_CSR) Reception Buffer Full */ +#define US_CSR_NACK (0x1u << 13) /**< \brief (US_CSR) Non AcknowledgeInterrupt */ +#define US_CSR_RIIC (0x1u << 16) /**< \brief (US_CSR) Ring Indicator Input Change Flag */ +#define US_CSR_DSRIC (0x1u << 17) /**< \brief (US_CSR) Data Set Ready Input Change Flag */ +#define US_CSR_DCDIC (0x1u << 18) /**< \brief (US_CSR) Data Carrier Detect Input Change Flag */ +#define US_CSR_CTSIC (0x1u << 19) /**< \brief (US_CSR) Clear to Send Input Change Flag */ +#define US_CSR_RI (0x1u << 20) /**< \brief (US_CSR) Image of RI Input */ +#define US_CSR_DSR (0x1u << 21) /**< \brief (US_CSR) Image of DSR Input */ +#define US_CSR_DCD (0x1u << 22) /**< \brief (US_CSR) Image of DCD Input */ +#define US_CSR_CTS (0x1u << 23) /**< \brief (US_CSR) Image of CTS Input */ +#define US_CSR_MANERR (0x1u << 24) /**< \brief (US_CSR) Manchester Error */ +/* -------- US_RHR : (USART Offset: 0x0018) Receiver Holding Register -------- */ +#define US_RHR_RXCHR_Pos 0 +#define US_RHR_RXCHR_Msk (0x1ffu << US_RHR_RXCHR_Pos) /**< \brief (US_RHR) Received Character */ +#define US_RHR_RXSYNH (0x1u << 15) /**< \brief (US_RHR) Received Sync */ +/* -------- US_THR : (USART Offset: 0x001C) Transmitter Holding Register -------- */ +#define US_THR_TXCHR_Pos 0 +#define US_THR_TXCHR_Msk (0x1ffu << US_THR_TXCHR_Pos) /**< \brief (US_THR) Character to be Transmitted */ +#define US_THR_TXCHR(value) ((US_THR_TXCHR_Msk & ((value) << US_THR_TXCHR_Pos))) +#define US_THR_TXSYNH (0x1u << 15) /**< \brief (US_THR) Sync Field to be transmitted */ +/* -------- US_BRGR : (USART Offset: 0x0020) Baud Rate Generator Register -------- */ +#define US_BRGR_CD_Pos 0 +#define US_BRGR_CD_Msk (0xffffu << US_BRGR_CD_Pos) /**< \brief (US_BRGR) Clock Divider */ +#define US_BRGR_CD(value) ((US_BRGR_CD_Msk & ((value) << US_BRGR_CD_Pos))) +#define US_BRGR_FP_Pos 16 +#define US_BRGR_FP_Msk (0x7u << US_BRGR_FP_Pos) /**< \brief (US_BRGR) Fractional Part */ +#define US_BRGR_FP(value) ((US_BRGR_FP_Msk & ((value) << US_BRGR_FP_Pos))) +/* -------- US_RTOR : (USART Offset: 0x0024) Receiver Time-out Register -------- */ +#define US_RTOR_TO_Pos 0 +#define US_RTOR_TO_Msk (0xffffu << US_RTOR_TO_Pos) /**< \brief (US_RTOR) Time-out Value */ +#define US_RTOR_TO(value) ((US_RTOR_TO_Msk & ((value) << US_RTOR_TO_Pos))) +/* -------- US_TTGR : (USART Offset: 0x0028) Transmitter Timeguard Register -------- */ +#define US_TTGR_TG_Pos 0 +#define US_TTGR_TG_Msk (0xffu << US_TTGR_TG_Pos) /**< \brief (US_TTGR) Timeguard Value */ +#define US_TTGR_TG(value) ((US_TTGR_TG_Msk & ((value) << US_TTGR_TG_Pos))) +/* -------- US_FIDI : (USART Offset: 0x0040) FI DI Ratio Register -------- */ +#define US_FIDI_FI_DI_RATIO_Pos 0 +#define US_FIDI_FI_DI_RATIO_Msk (0x7ffu << US_FIDI_FI_DI_RATIO_Pos) /**< \brief (US_FIDI) FI Over DI Ratio Value */ +#define US_FIDI_FI_DI_RATIO(value) ((US_FIDI_FI_DI_RATIO_Msk & ((value) << US_FIDI_FI_DI_RATIO_Pos))) +/* -------- US_NER : (USART Offset: 0x0044) Number of Errors Register -------- */ +#define US_NER_NB_ERRORS_Pos 0 +#define US_NER_NB_ERRORS_Msk (0xffu << US_NER_NB_ERRORS_Pos) /**< \brief (US_NER) Number of Errors */ +/* -------- US_IF : (USART Offset: 0x004C) IrDA Filter Register -------- */ +#define US_IF_IRDA_FILTER_Pos 0 +#define US_IF_IRDA_FILTER_Msk (0xffu << US_IF_IRDA_FILTER_Pos) /**< \brief (US_IF) IrDA Filter */ +#define US_IF_IRDA_FILTER(value) ((US_IF_IRDA_FILTER_Msk & ((value) << US_IF_IRDA_FILTER_Pos))) +/* -------- US_MAN : (USART Offset: 0x0050) Manchester Encoder Decoder Register -------- */ +#define US_MAN_TX_PL_Pos 0 +#define US_MAN_TX_PL_Msk (0xfu << US_MAN_TX_PL_Pos) /**< \brief (US_MAN) Transmitter Preamble Length */ +#define US_MAN_TX_PL(value) ((US_MAN_TX_PL_Msk & ((value) << US_MAN_TX_PL_Pos))) +#define US_MAN_TX_PP_Pos 8 +#define US_MAN_TX_PP_Msk (0x3u << US_MAN_TX_PP_Pos) /**< \brief (US_MAN) Transmitter Preamble Pattern */ +#define US_MAN_TX_PP_ALL_ONE (0x0u << 8) /**< \brief (US_MAN) The preamble is composed of '1's */ +#define US_MAN_TX_PP_ALL_ZERO (0x1u << 8) /**< \brief (US_MAN) The preamble is composed of '0's */ +#define US_MAN_TX_PP_ZERO_ONE (0x2u << 8) /**< \brief (US_MAN) The preamble is composed of '01's */ +#define US_MAN_TX_PP_ONE_ZERO (0x3u << 8) /**< \brief (US_MAN) The preamble is composed of '10's */ +#define US_MAN_TX_MPOL (0x1u << 12) /**< \brief (US_MAN) Transmitter Manchester Polarity */ +#define US_MAN_RX_PL_Pos 16 +#define US_MAN_RX_PL_Msk (0xfu << US_MAN_RX_PL_Pos) /**< \brief (US_MAN) Receiver Preamble Length */ +#define US_MAN_RX_PL(value) ((US_MAN_RX_PL_Msk & ((value) << US_MAN_RX_PL_Pos))) +#define US_MAN_RX_PP_Pos 24 +#define US_MAN_RX_PP_Msk (0x3u << US_MAN_RX_PP_Pos) /**< \brief (US_MAN) Receiver Preamble Pattern detected */ +#define US_MAN_RX_PP_ALL_ONE (0x0u << 24) /**< \brief (US_MAN) The preamble is composed of '1's */ +#define US_MAN_RX_PP_ALL_ZERO (0x1u << 24) /**< \brief (US_MAN) The preamble is composed of '0's */ +#define US_MAN_RX_PP_ZERO_ONE (0x2u << 24) /**< \brief (US_MAN) The preamble is composed of '01's */ +#define US_MAN_RX_PP_ONE_ZERO (0x3u << 24) /**< \brief (US_MAN) The preamble is composed of '10's */ +#define US_MAN_RX_MPOL (0x1u << 28) /**< \brief (US_MAN) Receiver Manchester Polarity */ +#define US_MAN_STUCKTO1 (0x1u << 29) /**< \brief (US_MAN) */ +#define US_MAN_DRIFT (0x1u << 30) /**< \brief (US_MAN) Drift compensation */ +/* -------- US_WPMR : (USART Offset: 0xE4) Write Protect Mode Register -------- */ +#define US_WPMR_WPEN (0x1u << 0) /**< \brief (US_WPMR) Write Protect Enable */ +#define US_WPMR_WPKEY_Pos 8 +#define US_WPMR_WPKEY_Msk (0xffffffu << US_WPMR_WPKEY_Pos) /**< \brief (US_WPMR) Write Protect KEY */ +#define US_WPMR_WPKEY(value) ((US_WPMR_WPKEY_Msk & ((value) << US_WPMR_WPKEY_Pos))) +/* -------- US_WPSR : (USART Offset: 0xE8) Write Protect Status Register -------- */ +#define US_WPSR_WPVS (0x1u << 0) /**< \brief (US_WPSR) Write Protect Violation Status */ +#define US_WPSR_WPVSRC_Pos 8 +#define US_WPSR_WPVSRC_Msk (0xffffu << US_WPSR_WPVSRC_Pos) /**< \brief (US_WPSR) Write Protect Violation Source */ +/* -------- US_VERSION : (USART Offset: 0xFC) Version Register -------- */ +#define US_VERSION_VERSION_Pos 0 +#define US_VERSION_VERSION_Msk (0xfffu << US_VERSION_VERSION_Pos) /**< \brief (US_VERSION) */ +#define US_VERSION_MFN_Pos 16 +#define US_VERSION_MFN_Msk (0x7u << US_VERSION_MFN_Pos) /**< \brief (US_VERSION) */ +/* -------- US_RPR : (USART Offset: 0x100) Receive Pointer Register -------- */ +#define US_RPR_RXPTR_Pos 0 +#define US_RPR_RXPTR_Msk (0xffffffffu << US_RPR_RXPTR_Pos) /**< \brief (US_RPR) Receive Pointer Register */ +#define US_RPR_RXPTR(value) ((US_RPR_RXPTR_Msk & ((value) << US_RPR_RXPTR_Pos))) +/* -------- US_RCR : (USART Offset: 0x104) Receive Counter Register -------- */ +#define US_RCR_RXCTR_Pos 0 +#define US_RCR_RXCTR_Msk (0xffffu << US_RCR_RXCTR_Pos) /**< \brief (US_RCR) Receive Counter Register */ +#define US_RCR_RXCTR(value) ((US_RCR_RXCTR_Msk & ((value) << US_RCR_RXCTR_Pos))) +/* -------- US_TPR : (USART Offset: 0x108) Transmit Pointer Register -------- */ +#define US_TPR_TXPTR_Pos 0 +#define US_TPR_TXPTR_Msk (0xffffffffu << US_TPR_TXPTR_Pos) /**< \brief (US_TPR) Transmit Counter Register */ +#define US_TPR_TXPTR(value) ((US_TPR_TXPTR_Msk & ((value) << US_TPR_TXPTR_Pos))) +/* -------- US_TCR : (USART Offset: 0x10C) Transmit Counter Register -------- */ +#define US_TCR_TXCTR_Pos 0 +#define US_TCR_TXCTR_Msk (0xffffu << US_TCR_TXCTR_Pos) /**< \brief (US_TCR) Transmit Counter Register */ +#define US_TCR_TXCTR(value) ((US_TCR_TXCTR_Msk & ((value) << US_TCR_TXCTR_Pos))) +/* -------- US_RNPR : (USART Offset: 0x110) Receive Next Pointer Register -------- */ +#define US_RNPR_RXNPTR_Pos 0 +#define US_RNPR_RXNPTR_Msk (0xffffffffu << US_RNPR_RXNPTR_Pos) /**< \brief (US_RNPR) Receive Next Pointer */ +#define US_RNPR_RXNPTR(value) ((US_RNPR_RXNPTR_Msk & ((value) << US_RNPR_RXNPTR_Pos))) +/* -------- US_RNCR : (USART Offset: 0x114) Receive Next Counter Register -------- */ +#define US_RNCR_RXNCTR_Pos 0 +#define US_RNCR_RXNCTR_Msk (0xffffu << US_RNCR_RXNCTR_Pos) /**< \brief (US_RNCR) Receive Next Counter */ +#define US_RNCR_RXNCTR(value) ((US_RNCR_RXNCTR_Msk & ((value) << US_RNCR_RXNCTR_Pos))) +/* -------- US_TNPR : (USART Offset: 0x118) Transmit Next Pointer Register -------- */ +#define US_TNPR_TXNPTR_Pos 0 +#define US_TNPR_TXNPTR_Msk (0xffffffffu << US_TNPR_TXNPTR_Pos) /**< \brief (US_TNPR) Transmit Next Pointer */ +#define US_TNPR_TXNPTR(value) ((US_TNPR_TXNPTR_Msk & ((value) << US_TNPR_TXNPTR_Pos))) +/* -------- US_TNCR : (USART Offset: 0x11C) Transmit Next Counter Register -------- */ +#define US_TNCR_TXNCTR_Pos 0 +#define US_TNCR_TXNCTR_Msk (0xffffu << US_TNCR_TXNCTR_Pos) /**< \brief (US_TNCR) Transmit Counter Next */ +#define US_TNCR_TXNCTR(value) ((US_TNCR_TXNCTR_Msk & ((value) << US_TNCR_TXNCTR_Pos))) +/* -------- US_PTCR : (USART Offset: 0x120) Transfer Control Register -------- */ +#define US_PTCR_RXTEN (0x1u << 0) /**< \brief (US_PTCR) Receiver Transfer Enable */ +#define US_PTCR_RXTDIS (0x1u << 1) /**< \brief (US_PTCR) Receiver Transfer Disable */ +#define US_PTCR_TXTEN (0x1u << 8) /**< \brief (US_PTCR) Transmitter Transfer Enable */ +#define US_PTCR_TXTDIS (0x1u << 9) /**< \brief (US_PTCR) Transmitter Transfer Disable */ +/* -------- US_PTSR : (USART Offset: 0x124) Transfer Status Register -------- */ +#define US_PTSR_RXTEN (0x1u << 0) /**< \brief (US_PTSR) Receiver Transfer Enable */ +#define US_PTSR_TXTEN (0x1u << 8) /**< \brief (US_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3S_USART_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_wdt.h b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_wdt.h new file mode 100644 index 000000000..842198ad8 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/component/component_wdt.h @@ -0,0 +1,72 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_WDT_COMPONENT_ +#define _SAM3S_WDT_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Watchdog Timer */ +/* ============================================================================= */ +/** \addtogroup SAM3S_WDT Watchdog Timer */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Wdt hardware registers */ +typedef struct { + WoReg WDT_CR; /**< \brief (Wdt Offset: 0x00) Control Register */ + RwReg WDT_MR; /**< \brief (Wdt Offset: 0x04) Mode Register */ + RoReg WDT_SR; /**< \brief (Wdt Offset: 0x08) Status Register */ +} Wdt; +#endif /* __ASSEMBLY__ */ +/* -------- WDT_CR : (WDT Offset: 0x00) Control Register -------- */ +#define WDT_CR_WDRSTT (0x1u << 0) /**< \brief (WDT_CR) Watchdog Restart */ +#define WDT_CR_KEY_Pos 24 +#define WDT_CR_KEY_Msk (0xffu << WDT_CR_KEY_Pos) /**< \brief (WDT_CR) Password */ +#define WDT_CR_KEY(value) ((WDT_CR_KEY_Msk & ((value) << WDT_CR_KEY_Pos))) +/* -------- WDT_MR : (WDT Offset: 0x04) Mode Register -------- */ +#define WDT_MR_WDV_Pos 0 +#define WDT_MR_WDV_Msk (0xfffu << WDT_MR_WDV_Pos) /**< \brief (WDT_MR) Watchdog Counter Value */ +#define WDT_MR_WDV(value) ((WDT_MR_WDV_Msk & ((value) << WDT_MR_WDV_Pos))) +#define WDT_MR_WDFIEN (0x1u << 12) /**< \brief (WDT_MR) Watchdog Fault Interrupt Enable */ +#define WDT_MR_WDRSTEN (0x1u << 13) /**< \brief (WDT_MR) Watchdog Reset Enable */ +#define WDT_MR_WDRPROC (0x1u << 14) /**< \brief (WDT_MR) Watchdog Reset Processor */ +#define WDT_MR_WDDIS (0x1u << 15) /**< \brief (WDT_MR) Watchdog Disable */ +#define WDT_MR_WDD_Pos 16 +#define WDT_MR_WDD_Msk (0xfffu << WDT_MR_WDD_Pos) /**< \brief (WDT_MR) Watchdog Delta Value */ +#define WDT_MR_WDD(value) ((WDT_MR_WDD_Msk & ((value) << WDT_MR_WDD_Pos))) +#define WDT_MR_WDDBGHLT (0x1u << 28) /**< \brief (WDT_MR) Watchdog Debug Halt */ +#define WDT_MR_WDIDLEHLT (0x1u << 29) /**< \brief (WDT_MR) Watchdog Idle Halt */ +/* -------- WDT_SR : (WDT Offset: 0x08) Status Register -------- */ +#define WDT_SR_WDUNF (0x1u << 0) /**< \brief (WDT_SR) Watchdog Underflow */ +#define WDT_SR_WDERR (0x1u << 1) /**< \brief (WDT_SR) Watchdog Error */ + +/*@}*/ + + +#endif /* _SAM3S_WDT_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_acc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_acc.h new file mode 100644 index 000000000..c8db6714f --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_acc.h @@ -0,0 +1,56 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_ACC_INSTANCE_ +#define _SAM3S_ACC_INSTANCE_ + +/* ========== Register definition for ACC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_ACC_CR (0x40040000U) /**< \brief (ACC) Control Register */ +#define REG_ACC_MR (0x40040004U) /**< \brief (ACC) Mode Register */ +#define REG_ACC_IER (0x40040024U) /**< \brief (ACC) Interrupt Enable Register */ +#define REG_ACC_IDR (0x40040028U) /**< \brief (ACC) Interrupt Disable Register */ +#define REG_ACC_IMR (0x4004002CU) /**< \brief (ACC) Interrupt Mask Register */ +#define REG_ACC_ISR (0x40040030U) /**< \brief (ACC) Interrupt Status Register */ +#define REG_ACC_ACR (0x40040094U) /**< \brief (ACC) Analog Control Register */ +#define REG_ACC_WPMR (0x400400E4U) /**< \brief (ACC) Write Protect Mode Register */ +#define REG_ACC_WPSR (0x400400E8U) /**< \brief (ACC) Write Protect Status Register */ +#else +#define REG_ACC_CR (*(WoReg*)0x40040000U) /**< \brief (ACC) Control Register */ +#define REG_ACC_MR (*(RwReg*)0x40040004U) /**< \brief (ACC) Mode Register */ +#define REG_ACC_IER (*(WoReg*)0x40040024U) /**< \brief (ACC) Interrupt Enable Register */ +#define REG_ACC_IDR (*(WoReg*)0x40040028U) /**< \brief (ACC) Interrupt Disable Register */ +#define REG_ACC_IMR (*(RoReg*)0x4004002CU) /**< \brief (ACC) Interrupt Mask Register */ +#define REG_ACC_ISR (*(RoReg*)0x40040030U) /**< \brief (ACC) Interrupt Status Register */ +#define REG_ACC_ACR (*(RwReg*)0x40040094U) /**< \brief (ACC) Analog Control Register */ +#define REG_ACC_WPMR (*(RwReg*)0x400400E4U) /**< \brief (ACC) Write Protect Mode Register */ +#define REG_ACC_WPSR (*(RoReg*)0x400400E8U) /**< \brief (ACC) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_ACC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_adc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_adc.h new file mode 100644 index 000000000..763483e7e --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_adc.h @@ -0,0 +1,100 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_ADC_INSTANCE_ +#define _SAM3S_ADC_INSTANCE_ + +/* ========== Register definition for ADC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_ADC_CR (0x40038000U) /**< \brief (ADC) Control Register */ +#define REG_ADC_MR (0x40038004U) /**< \brief (ADC) Mode Register */ +#define REG_ADC_SEQR1 (0x40038008U) /**< \brief (ADC) Channel Sequence Register 1 */ +#define REG_ADC_SEQR2 (0x4003800CU) /**< \brief (ADC) Channel Sequence Register 2 */ +#define REG_ADC_CHER (0x40038010U) /**< \brief (ADC) Channel Enable Register */ +#define REG_ADC_CHDR (0x40038014U) /**< \brief (ADC) Channel Disable Register */ +#define REG_ADC_CHSR (0x40038018U) /**< \brief (ADC) Channel Status Register */ +#define REG_ADC_LCDR (0x40038020U) /**< \brief (ADC) Last Converted Data Register */ +#define REG_ADC_IER (0x40038024U) /**< \brief (ADC) Interrupt Enable Register */ +#define REG_ADC_IDR (0x40038028U) /**< \brief (ADC) Interrupt Disable Register */ +#define REG_ADC_IMR (0x4003802CU) /**< \brief (ADC) Interrupt Mask Register */ +#define REG_ADC_ISR (0x40038030U) /**< \brief (ADC) Interrupt Status Register */ +#define REG_ADC_OVER (0x4003803CU) /**< \brief (ADC) Overrun Status Register */ +#define REG_ADC_EMR (0x40038040U) /**< \brief (ADC) Extended Mode Register */ +#define REG_ADC_CWR (0x40038044U) /**< \brief (ADC) Compare Window Register */ +#define REG_ADC_CGR (0x40038048U) /**< \brief (ADC) Channel Gain Register */ +#define REG_ADC_COR (0x4003804CU) /**< \brief (ADC) Channel Offset Register */ +#define REG_ADC_CDR (0x40038050U) /**< \brief (ADC) Channel Data Register */ +#define REG_ADC_ACR (0x40038094U) /**< \brief (ADC) Analog Control Register */ +#define REG_ADC_WPMR (0x400380E4U) /**< \brief (ADC) Write Protect Mode Register */ +#define REG_ADC_WPSR (0x400380E8U) /**< \brief (ADC) Write Protect Status Register */ +#define REG_ADC_RPR (0x40038100U) /**< \brief (ADC) Receive Pointer Register */ +#define REG_ADC_RCR (0x40038104U) /**< \brief (ADC) Receive Counter Register */ +#define REG_ADC_TPR (0x40038108U) /**< \brief (ADC) Transmit Pointer Register */ +#define REG_ADC_TCR (0x4003810CU) /**< \brief (ADC) Transmit Counter Register */ +#define REG_ADC_RNPR (0x40038110U) /**< \brief (ADC) Receive Next Pointer Register */ +#define REG_ADC_RNCR (0x40038114U) /**< \brief (ADC) Receive Next Counter Register */ +#define REG_ADC_TNPR (0x40038118U) /**< \brief (ADC) Transmit Next Pointer Register */ +#define REG_ADC_TNCR (0x4003811CU) /**< \brief (ADC) Transmit Next Counter Register */ +#define REG_ADC_PTCR (0x40038120U) /**< \brief (ADC) Transfer Control Register */ +#define REG_ADC_PTSR (0x40038124U) /**< \brief (ADC) Transfer Status Register */ +#else +#define REG_ADC_CR (*(WoReg*)0x40038000U) /**< \brief (ADC) Control Register */ +#define REG_ADC_MR (*(RwReg*)0x40038004U) /**< \brief (ADC) Mode Register */ +#define REG_ADC_SEQR1 (*(RwReg*)0x40038008U) /**< \brief (ADC) Channel Sequence Register 1 */ +#define REG_ADC_SEQR2 (*(RwReg*)0x4003800CU) /**< \brief (ADC) Channel Sequence Register 2 */ +#define REG_ADC_CHER (*(WoReg*)0x40038010U) /**< \brief (ADC) Channel Enable Register */ +#define REG_ADC_CHDR (*(WoReg*)0x40038014U) /**< \brief (ADC) Channel Disable Register */ +#define REG_ADC_CHSR (*(RoReg*)0x40038018U) /**< \brief (ADC) Channel Status Register */ +#define REG_ADC_LCDR (*(RoReg*)0x40038020U) /**< \brief (ADC) Last Converted Data Register */ +#define REG_ADC_IER (*(WoReg*)0x40038024U) /**< \brief (ADC) Interrupt Enable Register */ +#define REG_ADC_IDR (*(WoReg*)0x40038028U) /**< \brief (ADC) Interrupt Disable Register */ +#define REG_ADC_IMR (*(RoReg*)0x4003802CU) /**< \brief (ADC) Interrupt Mask Register */ +#define REG_ADC_ISR (*(RoReg*)0x40038030U) /**< \brief (ADC) Interrupt Status Register */ +#define REG_ADC_OVER (*(RoReg*)0x4003803CU) /**< \brief (ADC) Overrun Status Register */ +#define REG_ADC_EMR (*(RwReg*)0x40038040U) /**< \brief (ADC) Extended Mode Register */ +#define REG_ADC_CWR (*(RwReg*)0x40038044U) /**< \brief (ADC) Compare Window Register */ +#define REG_ADC_CGR (*(RwReg*)0x40038048U) /**< \brief (ADC) Channel Gain Register */ +#define REG_ADC_COR (*(RwReg*)0x4003804CU) /**< \brief (ADC) Channel Offset Register */ +#define REG_ADC_CDR (*(RoReg*)0x40038050U) /**< \brief (ADC) Channel Data Register */ +#define REG_ADC_ACR (*(RwReg*)0x40038094U) /**< \brief (ADC) Analog Control Register */ +#define REG_ADC_WPMR (*(RwReg*)0x400380E4U) /**< \brief (ADC) Write Protect Mode Register */ +#define REG_ADC_WPSR (*(RoReg*)0x400380E8U) /**< \brief (ADC) Write Protect Status Register */ +#define REG_ADC_RPR (*(RwReg*)0x40038100U) /**< \brief (ADC) Receive Pointer Register */ +#define REG_ADC_RCR (*(RwReg*)0x40038104U) /**< \brief (ADC) Receive Counter Register */ +#define REG_ADC_TPR (*(RwReg*)0x40038108U) /**< \brief (ADC) Transmit Pointer Register */ +#define REG_ADC_TCR (*(RwReg*)0x4003810CU) /**< \brief (ADC) Transmit Counter Register */ +#define REG_ADC_RNPR (*(RwReg*)0x40038110U) /**< \brief (ADC) Receive Next Pointer Register */ +#define REG_ADC_RNCR (*(RwReg*)0x40038114U) /**< \brief (ADC) Receive Next Counter Register */ +#define REG_ADC_TNPR (*(RwReg*)0x40038118U) /**< \brief (ADC) Transmit Next Pointer Register */ +#define REG_ADC_TNCR (*(RwReg*)0x4003811CU) /**< \brief (ADC) Transmit Next Counter Register */ +#define REG_ADC_PTCR (*(WoReg*)0x40038120U) /**< \brief (ADC) Transfer Control Register */ +#define REG_ADC_PTSR (*(RoReg*)0x40038124U) /**< \brief (ADC) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_ADC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_chipid.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_chipid.h new file mode 100644 index 000000000..1954f13e8 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_chipid.h @@ -0,0 +1,42 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_CHIPID_INSTANCE_ +#define _SAM3S_CHIPID_INSTANCE_ + +/* ========== Register definition for CHIPID peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_CHIPID_CIDR (0x400E0740U) /**< \brief (CHIPID) Chip ID Register */ +#define REG_CHIPID_EXID (0x400E0744U) /**< \brief (CHIPID) Chip ID Extension Register */ +#else +#define REG_CHIPID_CIDR (*(RoReg*)0x400E0740U) /**< \brief (CHIPID) Chip ID Register */ +#define REG_CHIPID_EXID (*(RoReg*)0x400E0744U) /**< \brief (CHIPID) Chip ID Extension Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_CHIPID_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_crccu.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_crccu.h new file mode 100644 index 000000000..f374c1e20 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_crccu.h @@ -0,0 +1,68 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_CRCCU_INSTANCE_ +#define _SAM3S_CRCCU_INSTANCE_ + +/* ========== Register definition for CRCCU peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_CRCCU_DSCR (0x40044000U) /**< \brief (CRCCU) CRCCU Descriptor Base Register */ +#define REG_CRCCU_DMA_EN (0x40044008U) /**< \brief (CRCCU) CRCCU DMA Enable Register */ +#define REG_CRCCU_DMA_DIS (0x4004400CU) /**< \brief (CRCCU) CRCCU DMA Disable Register */ +#define REG_CRCCU_DMA_SR (0x40044010U) /**< \brief (CRCCU) CRCCU DMA Status Register */ +#define REG_CRCCU_DMA_IER (0x40044014U) /**< \brief (CRCCU) CRCCU DMA Interrupt Enable Register */ +#define REG_CRCCU_DMA_IDR (0x40044018U) /**< \brief (CRCCU) CRCCU DMA Interrupt Disable Register */ +#define REG_CRCCU_DMA_IMR (0x4004401CU) /**< \brief (CRCCU) CRCCU DMA Interrupt Mask Register */ +#define REG_CRCCU_DMA_ISR (0x40044020U) /**< \brief (CRCCU) CRCCU DMA Interrupt Status Register */ +#define REG_CRCCU_CR (0x40044034U) /**< \brief (CRCCU) CRCCU Control Register */ +#define REG_CRCCU_MR (0x40044038U) /**< \brief (CRCCU) CRCCU Mode Register */ +#define REG_CRCCU_SR (0x4004403CU) /**< \brief (CRCCU) CRCCU Status Register */ +#define REG_CRCCU_IER (0x40044040U) /**< \brief (CRCCU) CRCCU Interrupt Enable Register */ +#define REG_CRCCU_IDR (0x40044044U) /**< \brief (CRCCU) CRCCU Interrupt Disable Register */ +#define REG_CRCCU_IMR (0x40044048U) /**< \brief (CRCCU) CRCCU Interrupt Mask Register */ +#define REG_CRCCU_ISR (0x4004404CU) /**< \brief (CRCCU) CRCCU Interrupt Status Register */ +#else +#define REG_CRCCU_DSCR (*(RwReg*)0x40044000U) /**< \brief (CRCCU) CRCCU Descriptor Base Register */ +#define REG_CRCCU_DMA_EN (*(WoReg*)0x40044008U) /**< \brief (CRCCU) CRCCU DMA Enable Register */ +#define REG_CRCCU_DMA_DIS (*(WoReg*)0x4004400CU) /**< \brief (CRCCU) CRCCU DMA Disable Register */ +#define REG_CRCCU_DMA_SR (*(RoReg*)0x40044010U) /**< \brief (CRCCU) CRCCU DMA Status Register */ +#define REG_CRCCU_DMA_IER (*(WoReg*)0x40044014U) /**< \brief (CRCCU) CRCCU DMA Interrupt Enable Register */ +#define REG_CRCCU_DMA_IDR (*(WoReg*)0x40044018U) /**< \brief (CRCCU) CRCCU DMA Interrupt Disable Register */ +#define REG_CRCCU_DMA_IMR (*(RoReg*)0x4004401CU) /**< \brief (CRCCU) CRCCU DMA Interrupt Mask Register */ +#define REG_CRCCU_DMA_ISR (*(RoReg*)0x40044020U) /**< \brief (CRCCU) CRCCU DMA Interrupt Status Register */ +#define REG_CRCCU_CR (*(WoReg*)0x40044034U) /**< \brief (CRCCU) CRCCU Control Register */ +#define REG_CRCCU_MR (*(RwReg*)0x40044038U) /**< \brief (CRCCU) CRCCU Mode Register */ +#define REG_CRCCU_SR (*(RoReg*)0x4004403CU) /**< \brief (CRCCU) CRCCU Status Register */ +#define REG_CRCCU_IER (*(WoReg*)0x40044040U) /**< \brief (CRCCU) CRCCU Interrupt Enable Register */ +#define REG_CRCCU_IDR (*(WoReg*)0x40044044U) /**< \brief (CRCCU) CRCCU Interrupt Disable Register */ +#define REG_CRCCU_IMR (*(RoReg*)0x40044048U) /**< \brief (CRCCU) CRCCU Interrupt Mask Register */ +#define REG_CRCCU_ISR (*(RoReg*)0x4004404CU) /**< \brief (CRCCU) CRCCU Interrupt Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_CRCCU_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_dacc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_dacc.h new file mode 100644 index 000000000..dc5581b94 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_dacc.h @@ -0,0 +1,84 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_DACC_INSTANCE_ +#define _SAM3S_DACC_INSTANCE_ + +/* ========== Register definition for DACC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_DACC_CR (0x4003C000U) /**< \brief (DACC) Control Register */ +#define REG_DACC_MR (0x4003C004U) /**< \brief (DACC) Mode Register */ +#define REG_DACC_CHER (0x4003C010U) /**< \brief (DACC) Channel Enable Register */ +#define REG_DACC_CHDR (0x4003C014U) /**< \brief (DACC) Channel Disable Register */ +#define REG_DACC_CHSR (0x4003C018U) /**< \brief (DACC) Channel Status Register */ +#define REG_DACC_CDR (0x4003C020U) /**< \brief (DACC) Conversion Data Register */ +#define REG_DACC_IER (0x4003C024U) /**< \brief (DACC) Interrupt Enable Register */ +#define REG_DACC_IDR (0x4003C028U) /**< \brief (DACC) Interrupt Disable Register */ +#define REG_DACC_IMR (0x4003C02CU) /**< \brief (DACC) Interrupt Mask Register */ +#define REG_DACC_ISR (0x4003C030U) /**< \brief (DACC) Interrupt Status Register */ +#define REG_DACC_ACR (0x4003C094U) /**< \brief (DACC) Analog Current Register */ +#define REG_DACC_WPMR (0x4003C0E4U) /**< \brief (DACC) Write Protect Mode register */ +#define REG_DACC_WPSR (0x4003C0E8U) /**< \brief (DACC) Write Protect Status register */ +#define REG_DACC_RPR (0x4003C100U) /**< \brief (DACC) Receive Pointer Register */ +#define REG_DACC_RCR (0x4003C104U) /**< \brief (DACC) Receive Counter Register */ +#define REG_DACC_TPR (0x4003C108U) /**< \brief (DACC) Transmit Pointer Register */ +#define REG_DACC_TCR (0x4003C10CU) /**< \brief (DACC) Transmit Counter Register */ +#define REG_DACC_RNPR (0x4003C110U) /**< \brief (DACC) Receive Next Pointer Register */ +#define REG_DACC_RNCR (0x4003C114U) /**< \brief (DACC) Receive Next Counter Register */ +#define REG_DACC_TNPR (0x4003C118U) /**< \brief (DACC) Transmit Next Pointer Register */ +#define REG_DACC_TNCR (0x4003C11CU) /**< \brief (DACC) Transmit Next Counter Register */ +#define REG_DACC_PTCR (0x4003C120U) /**< \brief (DACC) Transfer Control Register */ +#define REG_DACC_PTSR (0x4003C124U) /**< \brief (DACC) Transfer Status Register */ +#else +#define REG_DACC_CR (*(WoReg*)0x4003C000U) /**< \brief (DACC) Control Register */ +#define REG_DACC_MR (*(RwReg*)0x4003C004U) /**< \brief (DACC) Mode Register */ +#define REG_DACC_CHER (*(WoReg*)0x4003C010U) /**< \brief (DACC) Channel Enable Register */ +#define REG_DACC_CHDR (*(WoReg*)0x4003C014U) /**< \brief (DACC) Channel Disable Register */ +#define REG_DACC_CHSR (*(RoReg*)0x4003C018U) /**< \brief (DACC) Channel Status Register */ +#define REG_DACC_CDR (*(WoReg*)0x4003C020U) /**< \brief (DACC) Conversion Data Register */ +#define REG_DACC_IER (*(WoReg*)0x4003C024U) /**< \brief (DACC) Interrupt Enable Register */ +#define REG_DACC_IDR (*(WoReg*)0x4003C028U) /**< \brief (DACC) Interrupt Disable Register */ +#define REG_DACC_IMR (*(RoReg*)0x4003C02CU) /**< \brief (DACC) Interrupt Mask Register */ +#define REG_DACC_ISR (*(RoReg*)0x4003C030U) /**< \brief (DACC) Interrupt Status Register */ +#define REG_DACC_ACR (*(RwReg*)0x4003C094U) /**< \brief (DACC) Analog Current Register */ +#define REG_DACC_WPMR (*(RwReg*)0x4003C0E4U) /**< \brief (DACC) Write Protect Mode register */ +#define REG_DACC_WPSR (*(RoReg*)0x4003C0E8U) /**< \brief (DACC) Write Protect Status register */ +#define REG_DACC_RPR (*(RwReg*)0x4003C100U) /**< \brief (DACC) Receive Pointer Register */ +#define REG_DACC_RCR (*(RwReg*)0x4003C104U) /**< \brief (DACC) Receive Counter Register */ +#define REG_DACC_TPR (*(RwReg*)0x4003C108U) /**< \brief (DACC) Transmit Pointer Register */ +#define REG_DACC_TCR (*(RwReg*)0x4003C10CU) /**< \brief (DACC) Transmit Counter Register */ +#define REG_DACC_RNPR (*(RwReg*)0x4003C110U) /**< \brief (DACC) Receive Next Pointer Register */ +#define REG_DACC_RNCR (*(RwReg*)0x4003C114U) /**< \brief (DACC) Receive Next Counter Register */ +#define REG_DACC_TNPR (*(RwReg*)0x4003C118U) /**< \brief (DACC) Transmit Next Pointer Register */ +#define REG_DACC_TNCR (*(RwReg*)0x4003C11CU) /**< \brief (DACC) Transmit Next Counter Register */ +#define REG_DACC_PTCR (*(WoReg*)0x4003C120U) /**< \brief (DACC) Transfer Control Register */ +#define REG_DACC_PTSR (*(RoReg*)0x4003C124U) /**< \brief (DACC) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_DACC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_efc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_efc.h new file mode 100644 index 000000000..1348be6fe --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_efc.h @@ -0,0 +1,46 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_EFC_INSTANCE_ +#define _SAM3S_EFC_INSTANCE_ + +/* ========== Register definition for EFC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_EFC_FMR (0x400E0A00U) /**< \brief (EFC) EEFC Flash Mode Register */ +#define REG_EFC_FCR (0x400E0A04U) /**< \brief (EFC) EEFC Flash Command Register */ +#define REG_EFC_FSR (0x400E0A08U) /**< \brief (EFC) EEFC Flash Status Register */ +#define REG_EFC_FRR (0x400E0A0CU) /**< \brief (EFC) EEFC Flash Result Register */ +#else +#define REG_EFC_FMR (*(RwReg*)0x400E0A00U) /**< \brief (EFC) EEFC Flash Mode Register */ +#define REG_EFC_FCR (*(WoReg*)0x400E0A04U) /**< \brief (EFC) EEFC Flash Command Register */ +#define REG_EFC_FSR (*(RoReg*)0x400E0A08U) /**< \brief (EFC) EEFC Flash Status Register */ +#define REG_EFC_FRR (*(RoReg*)0x400E0A0CU) /**< \brief (EFC) EEFC Flash Result Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_EFC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_gpbr.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_gpbr.h new file mode 100644 index 000000000..7f3aba1f5 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_gpbr.h @@ -0,0 +1,40 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_GPBR_INSTANCE_ +#define _SAM3S_GPBR_INSTANCE_ + +/* ========== Register definition for GPBR peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_GPBR_GPBR (0x400E1490U) /**< \brief (GPBR) General Purpose Backup Register */ +#else +#define REG_GPBR_GPBR (*(RwReg*)0x400E1490U) /**< \brief (GPBR) General Purpose Backup Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_GPBR_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_hsmci.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_hsmci.h new file mode 100644 index 000000000..b07b43c59 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_hsmci.h @@ -0,0 +1,96 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_HSMCI_INSTANCE_ +#define _SAM3S_HSMCI_INSTANCE_ + +/* ========== Register definition for HSMCI peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_HSMCI_CR (0x40000000U) /**< \brief (HSMCI) Control Register */ +#define REG_HSMCI_MR (0x40000004U) /**< \brief (HSMCI) Mode Register */ +#define REG_HSMCI_DTOR (0x40000008U) /**< \brief (HSMCI) Data Timeout Register */ +#define REG_HSMCI_SDCR (0x4000000CU) /**< \brief (HSMCI) SD/SDIO Card Register */ +#define REG_HSMCI_ARGR (0x40000010U) /**< \brief (HSMCI) Argument Register */ +#define REG_HSMCI_CMDR (0x40000014U) /**< \brief (HSMCI) Command Register */ +#define REG_HSMCI_BLKR (0x40000018U) /**< \brief (HSMCI) Block Register */ +#define REG_HSMCI_CSTOR (0x4000001CU) /**< \brief (HSMCI) Completion Signal Timeout Register */ +#define REG_HSMCI_RSPR (0x40000020U) /**< \brief (HSMCI) Response Register */ +#define REG_HSMCI_RDR (0x40000030U) /**< \brief (HSMCI) Receive Data Register */ +#define REG_HSMCI_TDR (0x40000034U) /**< \brief (HSMCI) Transmit Data Register */ +#define REG_HSMCI_SR (0x40000040U) /**< \brief (HSMCI) Status Register */ +#define REG_HSMCI_IER (0x40000044U) /**< \brief (HSMCI) Interrupt Enable Register */ +#define REG_HSMCI_IDR (0x40000048U) /**< \brief (HSMCI) Interrupt Disable Register */ +#define REG_HSMCI_IMR (0x4000004CU) /**< \brief (HSMCI) Interrupt Mask Register */ +#define REG_HSMCI_CFG (0x40000054U) /**< \brief (HSMCI) Configuration Register */ +#define REG_HSMCI_WPMR (0x400000E4U) /**< \brief (HSMCI) Write Protection Mode Register */ +#define REG_HSMCI_WPSR (0x400000E8U) /**< \brief (HSMCI) Write Protection Status Register */ +#define REG_HSMCI_RPR (0x40000100U) /**< \brief (HSMCI) Receive Pointer Register */ +#define REG_HSMCI_RCR (0x40000104U) /**< \brief (HSMCI) Receive Counter Register */ +#define REG_HSMCI_TPR (0x40000108U) /**< \brief (HSMCI) Transmit Pointer Register */ +#define REG_HSMCI_TCR (0x4000010CU) /**< \brief (HSMCI) Transmit Counter Register */ +#define REG_HSMCI_RNPR (0x40000110U) /**< \brief (HSMCI) Receive Next Pointer Register */ +#define REG_HSMCI_RNCR (0x40000114U) /**< \brief (HSMCI) Receive Next Counter Register */ +#define REG_HSMCI_TNPR (0x40000118U) /**< \brief (HSMCI) Transmit Next Pointer Register */ +#define REG_HSMCI_TNCR (0x4000011CU) /**< \brief (HSMCI) Transmit Next Counter Register */ +#define REG_HSMCI_PTCR (0x40000120U) /**< \brief (HSMCI) Transfer Control Register */ +#define REG_HSMCI_PTSR (0x40000124U) /**< \brief (HSMCI) Transfer Status Register */ +#define REG_HSMCI_FIFO (0x40000200U) /**< \brief (HSMCI) FIFO Memory Aperture0 */ +#else +#define REG_HSMCI_CR (*(WoReg*)0x40000000U) /**< \brief (HSMCI) Control Register */ +#define REG_HSMCI_MR (*(RwReg*)0x40000004U) /**< \brief (HSMCI) Mode Register */ +#define REG_HSMCI_DTOR (*(RwReg*)0x40000008U) /**< \brief (HSMCI) Data Timeout Register */ +#define REG_HSMCI_SDCR (*(RwReg*)0x4000000CU) /**< \brief (HSMCI) SD/SDIO Card Register */ +#define REG_HSMCI_ARGR (*(RwReg*)0x40000010U) /**< \brief (HSMCI) Argument Register */ +#define REG_HSMCI_CMDR (*(WoReg*)0x40000014U) /**< \brief (HSMCI) Command Register */ +#define REG_HSMCI_BLKR (*(RwReg*)0x40000018U) /**< \brief (HSMCI) Block Register */ +#define REG_HSMCI_CSTOR (*(RwReg*)0x4000001CU) /**< \brief (HSMCI) Completion Signal Timeout Register */ +#define REG_HSMCI_RSPR (*(RoReg*)0x40000020U) /**< \brief (HSMCI) Response Register */ +#define REG_HSMCI_RDR (*(RoReg*)0x40000030U) /**< \brief (HSMCI) Receive Data Register */ +#define REG_HSMCI_TDR (*(WoReg*)0x40000034U) /**< \brief (HSMCI) Transmit Data Register */ +#define REG_HSMCI_SR (*(RoReg*)0x40000040U) /**< \brief (HSMCI) Status Register */ +#define REG_HSMCI_IER (*(WoReg*)0x40000044U) /**< \brief (HSMCI) Interrupt Enable Register */ +#define REG_HSMCI_IDR (*(WoReg*)0x40000048U) /**< \brief (HSMCI) Interrupt Disable Register */ +#define REG_HSMCI_IMR (*(RoReg*)0x4000004CU) /**< \brief (HSMCI) Interrupt Mask Register */ +#define REG_HSMCI_CFG (*(RwReg*)0x40000054U) /**< \brief (HSMCI) Configuration Register */ +#define REG_HSMCI_WPMR (*(RwReg*)0x400000E4U) /**< \brief (HSMCI) Write Protection Mode Register */ +#define REG_HSMCI_WPSR (*(RoReg*)0x400000E8U) /**< \brief (HSMCI) Write Protection Status Register */ +#define REG_HSMCI_RPR (*(RwReg*)0x40000100U) /**< \brief (HSMCI) Receive Pointer Register */ +#define REG_HSMCI_RCR (*(RwReg*)0x40000104U) /**< \brief (HSMCI) Receive Counter Register */ +#define REG_HSMCI_TPR (*(RwReg*)0x40000108U) /**< \brief (HSMCI) Transmit Pointer Register */ +#define REG_HSMCI_TCR (*(RwReg*)0x4000010CU) /**< \brief (HSMCI) Transmit Counter Register */ +#define REG_HSMCI_RNPR (*(RwReg*)0x40000110U) /**< \brief (HSMCI) Receive Next Pointer Register */ +#define REG_HSMCI_RNCR (*(RwReg*)0x40000114U) /**< \brief (HSMCI) Receive Next Counter Register */ +#define REG_HSMCI_TNPR (*(RwReg*)0x40000118U) /**< \brief (HSMCI) Transmit Next Pointer Register */ +#define REG_HSMCI_TNCR (*(RwReg*)0x4000011CU) /**< \brief (HSMCI) Transmit Next Counter Register */ +#define REG_HSMCI_PTCR (*(WoReg*)0x40000120U) /**< \brief (HSMCI) Transfer Control Register */ +#define REG_HSMCI_PTSR (*(RoReg*)0x40000124U) /**< \brief (HSMCI) Transfer Status Register */ +#define REG_HSMCI_FIFO (*(RwReg*)0x40000200U) /**< \brief (HSMCI) FIFO Memory Aperture0 */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_HSMCI_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_matrix.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_matrix.h new file mode 100644 index 000000000..c5c34f77e --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_matrix.h @@ -0,0 +1,60 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_MATRIX_INSTANCE_ +#define _SAM3S_MATRIX_INSTANCE_ + +/* ========== Register definition for MATRIX peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_MATRIX_MCFG (0x400E0200U) /**< \brief (MATRIX) Master Configuration Register */ +#define REG_MATRIX_SCFG (0x400E0240U) /**< \brief (MATRIX) Slave Configuration Register */ +#define REG_MATRIX_PRAS0 (0x400E0280U) /**< \brief (MATRIX) Priority Register A for Slave 0 */ +#define REG_MATRIX_PRAS1 (0x400E0288U) /**< \brief (MATRIX) Priority Register A for Slave 1 */ +#define REG_MATRIX_PRAS2 (0x400E0290U) /**< \brief (MATRIX) Priority Register A for Slave 2 */ +#define REG_MATRIX_PRAS3 (0x400E0298U) /**< \brief (MATRIX) Priority Register A for Slave 3 */ +#define REG_MATRIX_PRAS4 (0x400E02A0U) /**< \brief (MATRIX) Priority Register A for Slave 4 */ +#define REG_CCFG_SYSIO (0x400E0314U) /**< \brief (MATRIX) System I/O Configuration register */ +#define REG_CCFG_SMCNFCS (0x400E031CU) /**< \brief (MATRIX) SMC Chip Select NAND Flash Assignment Register */ +#define REG_MATRIX_WPMR (0x400E03E4U) /**< \brief (MATRIX) Write Protect Mode Register */ +#define REG_MATRIX_WPSR (0x400E03E8U) /**< \brief (MATRIX) Write Protect Status Register */ +#else +#define REG_MATRIX_MCFG (*(RwReg*)0x400E0200U) /**< \brief (MATRIX) Master Configuration Register */ +#define REG_MATRIX_SCFG (*(RwReg*)0x400E0240U) /**< \brief (MATRIX) Slave Configuration Register */ +#define REG_MATRIX_PRAS0 (*(RwReg*)0x400E0280U) /**< \brief (MATRIX) Priority Register A for Slave 0 */ +#define REG_MATRIX_PRAS1 (*(RwReg*)0x400E0288U) /**< \brief (MATRIX) Priority Register A for Slave 1 */ +#define REG_MATRIX_PRAS2 (*(RwReg*)0x400E0290U) /**< \brief (MATRIX) Priority Register A for Slave 2 */ +#define REG_MATRIX_PRAS3 (*(RwReg*)0x400E0298U) /**< \brief (MATRIX) Priority Register A for Slave 3 */ +#define REG_MATRIX_PRAS4 (*(RwReg*)0x400E02A0U) /**< \brief (MATRIX) Priority Register A for Slave 4 */ +#define REG_CCFG_SYSIO (*(RwReg*)0x400E0314U) /**< \brief (MATRIX) System I/O Configuration register */ +#define REG_CCFG_SMCNFCS (*(RwReg*)0x400E031CU) /**< \brief (MATRIX) SMC Chip Select NAND Flash Assignment Register */ +#define REG_MATRIX_WPMR (*(RwReg*)0x400E03E4U) /**< \brief (MATRIX) Write Protect Mode Register */ +#define REG_MATRIX_WPSR (*(RoReg*)0x400E03E8U) /**< \brief (MATRIX) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_MATRIX_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_pioa.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_pioa.h new file mode 100644 index 000000000..19c23f2d7 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_pioa.h @@ -0,0 +1,164 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_PIOA_INSTANCE_ +#define _SAM3S_PIOA_INSTANCE_ + +/* ========== Register definition for PIOA peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PIOA_PER (0x400E0E00U) /**< \brief (PIOA) PIO Enable Register */ +#define REG_PIOA_PDR (0x400E0E04U) /**< \brief (PIOA) PIO Disable Register */ +#define REG_PIOA_PSR (0x400E0E08U) /**< \brief (PIOA) PIO Status Register */ +#define REG_PIOA_OER (0x400E0E10U) /**< \brief (PIOA) Output Enable Register */ +#define REG_PIOA_ODR (0x400E0E14U) /**< \brief (PIOA) Output Disable Register */ +#define REG_PIOA_OSR (0x400E0E18U) /**< \brief (PIOA) Output Status Register */ +#define REG_PIOA_IFER (0x400E0E20U) /**< \brief (PIOA) Glitch Input Filter Enable Register */ +#define REG_PIOA_IFDR (0x400E0E24U) /**< \brief (PIOA) Glitch Input Filter Disable Register */ +#define REG_PIOA_IFSR (0x400E0E28U) /**< \brief (PIOA) Glitch Input Filter Status Register */ +#define REG_PIOA_SODR (0x400E0E30U) /**< \brief (PIOA) Set Output Data Register */ +#define REG_PIOA_CODR (0x400E0E34U) /**< \brief (PIOA) Clear Output Data Register */ +#define REG_PIOA_ODSR (0x400E0E38U) /**< \brief (PIOA) Output Data Status Register */ +#define REG_PIOA_PDSR (0x400E0E3CU) /**< \brief (PIOA) Pin Data Status Register */ +#define REG_PIOA_IER (0x400E0E40U) /**< \brief (PIOA) Interrupt Enable Register */ +#define REG_PIOA_IDR (0x400E0E44U) /**< \brief (PIOA) Interrupt Disable Register */ +#define REG_PIOA_IMR (0x400E0E48U) /**< \brief (PIOA) Interrupt Mask Register */ +#define REG_PIOA_ISR (0x400E0E4CU) /**< \brief (PIOA) Interrupt Status Register */ +#define REG_PIOA_MDER (0x400E0E50U) /**< \brief (PIOA) Multi-driver Enable Register */ +#define REG_PIOA_MDDR (0x400E0E54U) /**< \brief (PIOA) Multi-driver Disable Register */ +#define REG_PIOA_MDSR (0x400E0E58U) /**< \brief (PIOA) Multi-driver Status Register */ +#define REG_PIOA_PUDR (0x400E0E60U) /**< \brief (PIOA) Pull-up Disable Register */ +#define REG_PIOA_PUER (0x400E0E64U) /**< \brief (PIOA) Pull-up Enable Register */ +#define REG_PIOA_PUSR (0x400E0E68U) /**< \brief (PIOA) Pad Pull-up Status Register */ +#define REG_PIOA_ABCDSR (0x400E0E70U) /**< \brief (PIOA) Peripheral Select Register */ +#define REG_PIOA_IFSCDR (0x400E0E80U) /**< \brief (PIOA) Input Filter Slow Clock Disable Register */ +#define REG_PIOA_IFSCER (0x400E0E84U) /**< \brief (PIOA) Input Filter Slow Clock Enable Register */ +#define REG_PIOA_IFSCSR (0x400E0E88U) /**< \brief (PIOA) Input Filter Slow Clock Status Register */ +#define REG_PIOA_SCDR (0x400E0E8CU) /**< \brief (PIOA) Slow Clock Divider Debouncing Register */ +#define REG_PIOA_PPDDR (0x400E0E90U) /**< \brief (PIOA) Pad Pull-down Disable Register */ +#define REG_PIOA_PPDER (0x400E0E94U) /**< \brief (PIOA) Pad Pull-down Enable Register */ +#define REG_PIOA_PPDSR (0x400E0E98U) /**< \brief (PIOA) Pad Pull-down Status Register */ +#define REG_PIOA_OWER (0x400E0EA0U) /**< \brief (PIOA) Output Write Enable */ +#define REG_PIOA_OWDR (0x400E0EA4U) /**< \brief (PIOA) Output Write Disable */ +#define REG_PIOA_OWSR (0x400E0EA8U) /**< \brief (PIOA) Output Write Status Register */ +#define REG_PIOA_AIMER (0x400E0EB0U) /**< \brief (PIOA) Additional Interrupt Modes Enable Register */ +#define REG_PIOA_AIMDR (0x400E0EB4U) /**< \brief (PIOA) Additional Interrupt Modes Disables Register */ +#define REG_PIOA_AIMMR (0x400E0EB8U) /**< \brief (PIOA) Additional Interrupt Modes Mask Register */ +#define REG_PIOA_ESR (0x400E0EC0U) /**< \brief (PIOA) Edge Select Register */ +#define REG_PIOA_LSR (0x400E0EC4U) /**< \brief (PIOA) Level Select Register */ +#define REG_PIOA_ELSR (0x400E0EC8U) /**< \brief (PIOA) Edge/Level Status Register */ +#define REG_PIOA_FELLSR (0x400E0ED0U) /**< \brief (PIOA) Falling Edge/Low Level Select Register */ +#define REG_PIOA_REHLSR (0x400E0ED4U) /**< \brief (PIOA) Rising Edge/ High Level Select Register */ +#define REG_PIOA_FRLHSR (0x400E0ED8U) /**< \brief (PIOA) Fall/Rise - Low/High Status Register */ +#define REG_PIOA_LOCKSR (0x400E0EE0U) /**< \brief (PIOA) Lock Status */ +#define REG_PIOA_WPMR (0x400E0EE4U) /**< \brief (PIOA) Write Protect Mode Register */ +#define REG_PIOA_WPSR (0x400E0EE8U) /**< \brief (PIOA) Write Protect Status Register */ +#define REG_PIOA_SCHMITT (0x400E0F00U) /**< \brief (PIOA) Schmitt Trigger Register */ +#define REG_PIOA_PCMR (0x400E0F50U) /**< \brief (PIOA) Parallel Capture Mode Register */ +#define REG_PIOA_PCIER (0x400E0F54U) /**< \brief (PIOA) Parallel Capture Interrupt Enable Register */ +#define REG_PIOA_PCIDR (0x400E0F58U) /**< \brief (PIOA) Parallel Capture Interrupt Disable Register */ +#define REG_PIOA_PCIMR (0x400E0F5CU) /**< \brief (PIOA) Parallel Capture Interrupt Mask Register */ +#define REG_PIOA_PCISR (0x400E0F60U) /**< \brief (PIOA) Parallel Capture Interrupt Status Register */ +#define REG_PIOA_PCRHR (0x400E0F64U) /**< \brief (PIOA) Parallel Capture Reception Holding Register */ +#define REG_PIOA_RPR (0x400E0F68U) /**< \brief (PIOA) Receive Pointer Register */ +#define REG_PIOA_RCR (0x400E0F6CU) /**< \brief (PIOA) Receive Counter Register */ +#define REG_PIOA_TPR (0x400E0F70U) /**< \brief (PIOA) Transmit Pointer Register */ +#define REG_PIOA_TCR (0x400E0F74U) /**< \brief (PIOA) Transmit Counter Register */ +#define REG_PIOA_RNPR (0x400E0F78U) /**< \brief (PIOA) Receive Next Pointer Register */ +#define REG_PIOA_RNCR (0x400E0F7CU) /**< \brief (PIOA) Receive Next Counter Register */ +#define REG_PIOA_TNPR (0x400E0F80U) /**< \brief (PIOA) Transmit Next Pointer Register */ +#define REG_PIOA_TNCR (0x400E0F84U) /**< \brief (PIOA) Transmit Next Counter Register */ +#define REG_PIOA_PTCR (0x400E0F88U) /**< \brief (PIOA) Transfer Control Register */ +#define REG_PIOA_PTSR (0x400E0F8CU) /**< \brief (PIOA) Transfer Status Register */ +#else +#define REG_PIOA_PER (*(WoReg*)0x400E0E00U) /**< \brief (PIOA) PIO Enable Register */ +#define REG_PIOA_PDR (*(WoReg*)0x400E0E04U) /**< \brief (PIOA) PIO Disable Register */ +#define REG_PIOA_PSR (*(RoReg*)0x400E0E08U) /**< \brief (PIOA) PIO Status Register */ +#define REG_PIOA_OER (*(WoReg*)0x400E0E10U) /**< \brief (PIOA) Output Enable Register */ +#define REG_PIOA_ODR (*(WoReg*)0x400E0E14U) /**< \brief (PIOA) Output Disable Register */ +#define REG_PIOA_OSR (*(RoReg*)0x400E0E18U) /**< \brief (PIOA) Output Status Register */ +#define REG_PIOA_IFER (*(WoReg*)0x400E0E20U) /**< \brief (PIOA) Glitch Input Filter Enable Register */ +#define REG_PIOA_IFDR (*(WoReg*)0x400E0E24U) /**< \brief (PIOA) Glitch Input Filter Disable Register */ +#define REG_PIOA_IFSR (*(RoReg*)0x400E0E28U) /**< \brief (PIOA) Glitch Input Filter Status Register */ +#define REG_PIOA_SODR (*(WoReg*)0x400E0E30U) /**< \brief (PIOA) Set Output Data Register */ +#define REG_PIOA_CODR (*(WoReg*)0x400E0E34U) /**< \brief (PIOA) Clear Output Data Register */ +#define REG_PIOA_ODSR (*(RwReg*)0x400E0E38U) /**< \brief (PIOA) Output Data Status Register */ +#define REG_PIOA_PDSR (*(RoReg*)0x400E0E3CU) /**< \brief (PIOA) Pin Data Status Register */ +#define REG_PIOA_IER (*(WoReg*)0x400E0E40U) /**< \brief (PIOA) Interrupt Enable Register */ +#define REG_PIOA_IDR (*(WoReg*)0x400E0E44U) /**< \brief (PIOA) Interrupt Disable Register */ +#define REG_PIOA_IMR (*(RoReg*)0x400E0E48U) /**< \brief (PIOA) Interrupt Mask Register */ +#define REG_PIOA_ISR (*(RoReg*)0x400E0E4CU) /**< \brief (PIOA) Interrupt Status Register */ +#define REG_PIOA_MDER (*(WoReg*)0x400E0E50U) /**< \brief (PIOA) Multi-driver Enable Register */ +#define REG_PIOA_MDDR (*(WoReg*)0x400E0E54U) /**< \brief (PIOA) Multi-driver Disable Register */ +#define REG_PIOA_MDSR (*(RoReg*)0x400E0E58U) /**< \brief (PIOA) Multi-driver Status Register */ +#define REG_PIOA_PUDR (*(WoReg*)0x400E0E60U) /**< \brief (PIOA) Pull-up Disable Register */ +#define REG_PIOA_PUER (*(WoReg*)0x400E0E64U) /**< \brief (PIOA) Pull-up Enable Register */ +#define REG_PIOA_PUSR (*(RoReg*)0x400E0E68U) /**< \brief (PIOA) Pad Pull-up Status Register */ +#define REG_PIOA_ABCDSR (*(RwReg*)0x400E0E70U) /**< \brief (PIOA) Peripheral Select Register */ +#define REG_PIOA_IFSCDR (*(WoReg*)0x400E0E80U) /**< \brief (PIOA) Input Filter Slow Clock Disable Register */ +#define REG_PIOA_IFSCER (*(WoReg*)0x400E0E84U) /**< \brief (PIOA) Input Filter Slow Clock Enable Register */ +#define REG_PIOA_IFSCSR (*(RoReg*)0x400E0E88U) /**< \brief (PIOA) Input Filter Slow Clock Status Register */ +#define REG_PIOA_SCDR (*(RwReg*)0x400E0E8CU) /**< \brief (PIOA) Slow Clock Divider Debouncing Register */ +#define REG_PIOA_PPDDR (*(WoReg*)0x400E0E90U) /**< \brief (PIOA) Pad Pull-down Disable Register */ +#define REG_PIOA_PPDER (*(WoReg*)0x400E0E94U) /**< \brief (PIOA) Pad Pull-down Enable Register */ +#define REG_PIOA_PPDSR (*(RoReg*)0x400E0E98U) /**< \brief (PIOA) Pad Pull-down Status Register */ +#define REG_PIOA_OWER (*(WoReg*)0x400E0EA0U) /**< \brief (PIOA) Output Write Enable */ +#define REG_PIOA_OWDR (*(WoReg*)0x400E0EA4U) /**< \brief (PIOA) Output Write Disable */ +#define REG_PIOA_OWSR (*(RoReg*)0x400E0EA8U) /**< \brief (PIOA) Output Write Status Register */ +#define REG_PIOA_AIMER (*(WoReg*)0x400E0EB0U) /**< \brief (PIOA) Additional Interrupt Modes Enable Register */ +#define REG_PIOA_AIMDR (*(WoReg*)0x400E0EB4U) /**< \brief (PIOA) Additional Interrupt Modes Disables Register */ +#define REG_PIOA_AIMMR (*(RoReg*)0x400E0EB8U) /**< \brief (PIOA) Additional Interrupt Modes Mask Register */ +#define REG_PIOA_ESR (*(WoReg*)0x400E0EC0U) /**< \brief (PIOA) Edge Select Register */ +#define REG_PIOA_LSR (*(WoReg*)0x400E0EC4U) /**< \brief (PIOA) Level Select Register */ +#define REG_PIOA_ELSR (*(RoReg*)0x400E0EC8U) /**< \brief (PIOA) Edge/Level Status Register */ +#define REG_PIOA_FELLSR (*(WoReg*)0x400E0ED0U) /**< \brief (PIOA) Falling Edge/Low Level Select Register */ +#define REG_PIOA_REHLSR (*(WoReg*)0x400E0ED4U) /**< \brief (PIOA) Rising Edge/ High Level Select Register */ +#define REG_PIOA_FRLHSR (*(RoReg*)0x400E0ED8U) /**< \brief (PIOA) Fall/Rise - Low/High Status Register */ +#define REG_PIOA_LOCKSR (*(RoReg*)0x400E0EE0U) /**< \brief (PIOA) Lock Status */ +#define REG_PIOA_WPMR (*(RwReg*)0x400E0EE4U) /**< \brief (PIOA) Write Protect Mode Register */ +#define REG_PIOA_WPSR (*(RoReg*)0x400E0EE8U) /**< \brief (PIOA) Write Protect Status Register */ +#define REG_PIOA_SCHMITT (*(RwReg*)0x400E0F00U) /**< \brief (PIOA) Schmitt Trigger Register */ +#define REG_PIOA_PCMR (*(RwReg*)0x400E0F50U) /**< \brief (PIOA) Parallel Capture Mode Register */ +#define REG_PIOA_PCIER (*(WoReg*)0x400E0F54U) /**< \brief (PIOA) Parallel Capture Interrupt Enable Register */ +#define REG_PIOA_PCIDR (*(WoReg*)0x400E0F58U) /**< \brief (PIOA) Parallel Capture Interrupt Disable Register */ +#define REG_PIOA_PCIMR (*(RoReg*)0x400E0F5CU) /**< \brief (PIOA) Parallel Capture Interrupt Mask Register */ +#define REG_PIOA_PCISR (*(RoReg*)0x400E0F60U) /**< \brief (PIOA) Parallel Capture Interrupt Status Register */ +#define REG_PIOA_PCRHR (*(RoReg*)0x400E0F64U) /**< \brief (PIOA) Parallel Capture Reception Holding Register */ +#define REG_PIOA_RPR (*(RwReg*)0x400E0F68U) /**< \brief (PIOA) Receive Pointer Register */ +#define REG_PIOA_RCR (*(RwReg*)0x400E0F6CU) /**< \brief (PIOA) Receive Counter Register */ +#define REG_PIOA_TPR (*(RwReg*)0x400E0F70U) /**< \brief (PIOA) Transmit Pointer Register */ +#define REG_PIOA_TCR (*(RwReg*)0x400E0F74U) /**< \brief (PIOA) Transmit Counter Register */ +#define REG_PIOA_RNPR (*(RwReg*)0x400E0F78U) /**< \brief (PIOA) Receive Next Pointer Register */ +#define REG_PIOA_RNCR (*(RwReg*)0x400E0F7CU) /**< \brief (PIOA) Receive Next Counter Register */ +#define REG_PIOA_TNPR (*(RwReg*)0x400E0F80U) /**< \brief (PIOA) Transmit Next Pointer Register */ +#define REG_PIOA_TNCR (*(RwReg*)0x400E0F84U) /**< \brief (PIOA) Transmit Next Counter Register */ +#define REG_PIOA_PTCR (*(WoReg*)0x400E0F88U) /**< \brief (PIOA) Transfer Control Register */ +#define REG_PIOA_PTSR (*(RoReg*)0x400E0F8CU) /**< \brief (PIOA) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_PIOA_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_piob.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_piob.h new file mode 100644 index 000000000..4858f39d6 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_piob.h @@ -0,0 +1,144 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_PIOB_INSTANCE_ +#define _SAM3S_PIOB_INSTANCE_ + +/* ========== Register definition for PIOB peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PIOB_PER (0x400E1000U) /**< \brief (PIOB) PIO Enable Register */ +#define REG_PIOB_PDR (0x400E1004U) /**< \brief (PIOB) PIO Disable Register */ +#define REG_PIOB_PSR (0x400E1008U) /**< \brief (PIOB) PIO Status Register */ +#define REG_PIOB_OER (0x400E1010U) /**< \brief (PIOB) Output Enable Register */ +#define REG_PIOB_ODR (0x400E1014U) /**< \brief (PIOB) Output Disable Register */ +#define REG_PIOB_OSR (0x400E1018U) /**< \brief (PIOB) Output Status Register */ +#define REG_PIOB_IFER (0x400E1020U) /**< \brief (PIOB) Glitch Input Filter Enable Register */ +#define REG_PIOB_IFDR (0x400E1024U) /**< \brief (PIOB) Glitch Input Filter Disable Register */ +#define REG_PIOB_IFSR (0x400E1028U) /**< \brief (PIOB) Glitch Input Filter Status Register */ +#define REG_PIOB_SODR (0x400E1030U) /**< \brief (PIOB) Set Output Data Register */ +#define REG_PIOB_CODR (0x400E1034U) /**< \brief (PIOB) Clear Output Data Register */ +#define REG_PIOB_ODSR (0x400E1038U) /**< \brief (PIOB) Output Data Status Register */ +#define REG_PIOB_PDSR (0x400E103CU) /**< \brief (PIOB) Pin Data Status Register */ +#define REG_PIOB_IER (0x400E1040U) /**< \brief (PIOB) Interrupt Enable Register */ +#define REG_PIOB_IDR (0x400E1044U) /**< \brief (PIOB) Interrupt Disable Register */ +#define REG_PIOB_IMR (0x400E1048U) /**< \brief (PIOB) Interrupt Mask Register */ +#define REG_PIOB_ISR (0x400E104CU) /**< \brief (PIOB) Interrupt Status Register */ +#define REG_PIOB_MDER (0x400E1050U) /**< \brief (PIOB) Multi-driver Enable Register */ +#define REG_PIOB_MDDR (0x400E1054U) /**< \brief (PIOB) Multi-driver Disable Register */ +#define REG_PIOB_MDSR (0x400E1058U) /**< \brief (PIOB) Multi-driver Status Register */ +#define REG_PIOB_PUDR (0x400E1060U) /**< \brief (PIOB) Pull-up Disable Register */ +#define REG_PIOB_PUER (0x400E1064U) /**< \brief (PIOB) Pull-up Enable Register */ +#define REG_PIOB_PUSR (0x400E1068U) /**< \brief (PIOB) Pad Pull-up Status Register */ +#define REG_PIOB_ABCDSR (0x400E1070U) /**< \brief (PIOB) Peripheral Select Register */ +#define REG_PIOB_IFSCDR (0x400E1080U) /**< \brief (PIOB) Input Filter Slow Clock Disable Register */ +#define REG_PIOB_IFSCER (0x400E1084U) /**< \brief (PIOB) Input Filter Slow Clock Enable Register */ +#define REG_PIOB_IFSCSR (0x400E1088U) /**< \brief (PIOB) Input Filter Slow Clock Status Register */ +#define REG_PIOB_SCDR (0x400E108CU) /**< \brief (PIOB) Slow Clock Divider Debouncing Register */ +#define REG_PIOB_PPDDR (0x400E1090U) /**< \brief (PIOB) Pad Pull-down Disable Register */ +#define REG_PIOB_PPDER (0x400E1094U) /**< \brief (PIOB) Pad Pull-down Enable Register */ +#define REG_PIOB_PPDSR (0x400E1098U) /**< \brief (PIOB) Pad Pull-down Status Register */ +#define REG_PIOB_OWER (0x400E10A0U) /**< \brief (PIOB) Output Write Enable */ +#define REG_PIOB_OWDR (0x400E10A4U) /**< \brief (PIOB) Output Write Disable */ +#define REG_PIOB_OWSR (0x400E10A8U) /**< \brief (PIOB) Output Write Status Register */ +#define REG_PIOB_AIMER (0x400E10B0U) /**< \brief (PIOB) Additional Interrupt Modes Enable Register */ +#define REG_PIOB_AIMDR (0x400E10B4U) /**< \brief (PIOB) Additional Interrupt Modes Disables Register */ +#define REG_PIOB_AIMMR (0x400E10B8U) /**< \brief (PIOB) Additional Interrupt Modes Mask Register */ +#define REG_PIOB_ESR (0x400E10C0U) /**< \brief (PIOB) Edge Select Register */ +#define REG_PIOB_LSR (0x400E10C4U) /**< \brief (PIOB) Level Select Register */ +#define REG_PIOB_ELSR (0x400E10C8U) /**< \brief (PIOB) Edge/Level Status Register */ +#define REG_PIOB_FELLSR (0x400E10D0U) /**< \brief (PIOB) Falling Edge/Low Level Select Register */ +#define REG_PIOB_REHLSR (0x400E10D4U) /**< \brief (PIOB) Rising Edge/ High Level Select Register */ +#define REG_PIOB_FRLHSR (0x400E10D8U) /**< \brief (PIOB) Fall/Rise - Low/High Status Register */ +#define REG_PIOB_LOCKSR (0x400E10E0U) /**< \brief (PIOB) Lock Status */ +#define REG_PIOB_WPMR (0x400E10E4U) /**< \brief (PIOB) Write Protect Mode Register */ +#define REG_PIOB_WPSR (0x400E10E8U) /**< \brief (PIOB) Write Protect Status Register */ +#define REG_PIOB_SCHMITT (0x400E1100U) /**< \brief (PIOB) Schmitt Trigger Register */ +#define REG_PIOB_PCMR (0x400E1150U) /**< \brief (PIOB) Parallel Capture Mode Register */ +#define REG_PIOB_PCIER (0x400E1154U) /**< \brief (PIOB) Parallel Capture Interrupt Enable Register */ +#define REG_PIOB_PCIDR (0x400E1158U) /**< \brief (PIOB) Parallel Capture Interrupt Disable Register */ +#define REG_PIOB_PCIMR (0x400E115CU) /**< \brief (PIOB) Parallel Capture Interrupt Mask Register */ +#define REG_PIOB_PCISR (0x400E1160U) /**< \brief (PIOB) Parallel Capture Interrupt Status Register */ +#define REG_PIOB_PCRHR (0x400E1164U) /**< \brief (PIOB) Parallel Capture Reception Holding Register */ +#else +#define REG_PIOB_PER (*(WoReg*)0x400E1000U) /**< \brief (PIOB) PIO Enable Register */ +#define REG_PIOB_PDR (*(WoReg*)0x400E1004U) /**< \brief (PIOB) PIO Disable Register */ +#define REG_PIOB_PSR (*(RoReg*)0x400E1008U) /**< \brief (PIOB) PIO Status Register */ +#define REG_PIOB_OER (*(WoReg*)0x400E1010U) /**< \brief (PIOB) Output Enable Register */ +#define REG_PIOB_ODR (*(WoReg*)0x400E1014U) /**< \brief (PIOB) Output Disable Register */ +#define REG_PIOB_OSR (*(RoReg*)0x400E1018U) /**< \brief (PIOB) Output Status Register */ +#define REG_PIOB_IFER (*(WoReg*)0x400E1020U) /**< \brief (PIOB) Glitch Input Filter Enable Register */ +#define REG_PIOB_IFDR (*(WoReg*)0x400E1024U) /**< \brief (PIOB) Glitch Input Filter Disable Register */ +#define REG_PIOB_IFSR (*(RoReg*)0x400E1028U) /**< \brief (PIOB) Glitch Input Filter Status Register */ +#define REG_PIOB_SODR (*(WoReg*)0x400E1030U) /**< \brief (PIOB) Set Output Data Register */ +#define REG_PIOB_CODR (*(WoReg*)0x400E1034U) /**< \brief (PIOB) Clear Output Data Register */ +#define REG_PIOB_ODSR (*(RwReg*)0x400E1038U) /**< \brief (PIOB) Output Data Status Register */ +#define REG_PIOB_PDSR (*(RoReg*)0x400E103CU) /**< \brief (PIOB) Pin Data Status Register */ +#define REG_PIOB_IER (*(WoReg*)0x400E1040U) /**< \brief (PIOB) Interrupt Enable Register */ +#define REG_PIOB_IDR (*(WoReg*)0x400E1044U) /**< \brief (PIOB) Interrupt Disable Register */ +#define REG_PIOB_IMR (*(RoReg*)0x400E1048U) /**< \brief (PIOB) Interrupt Mask Register */ +#define REG_PIOB_ISR (*(RoReg*)0x400E104CU) /**< \brief (PIOB) Interrupt Status Register */ +#define REG_PIOB_MDER (*(WoReg*)0x400E1050U) /**< \brief (PIOB) Multi-driver Enable Register */ +#define REG_PIOB_MDDR (*(WoReg*)0x400E1054U) /**< \brief (PIOB) Multi-driver Disable Register */ +#define REG_PIOB_MDSR (*(RoReg*)0x400E1058U) /**< \brief (PIOB) Multi-driver Status Register */ +#define REG_PIOB_PUDR (*(WoReg*)0x400E1060U) /**< \brief (PIOB) Pull-up Disable Register */ +#define REG_PIOB_PUER (*(WoReg*)0x400E1064U) /**< \brief (PIOB) Pull-up Enable Register */ +#define REG_PIOB_PUSR (*(RoReg*)0x400E1068U) /**< \brief (PIOB) Pad Pull-up Status Register */ +#define REG_PIOB_ABCDSR (*(RwReg*)0x400E1070U) /**< \brief (PIOB) Peripheral Select Register */ +#define REG_PIOB_IFSCDR (*(WoReg*)0x400E1080U) /**< \brief (PIOB) Input Filter Slow Clock Disable Register */ +#define REG_PIOB_IFSCER (*(WoReg*)0x400E1084U) /**< \brief (PIOB) Input Filter Slow Clock Enable Register */ +#define REG_PIOB_IFSCSR (*(RoReg*)0x400E1088U) /**< \brief (PIOB) Input Filter Slow Clock Status Register */ +#define REG_PIOB_SCDR (*(RwReg*)0x400E108CU) /**< \brief (PIOB) Slow Clock Divider Debouncing Register */ +#define REG_PIOB_PPDDR (*(WoReg*)0x400E1090U) /**< \brief (PIOB) Pad Pull-down Disable Register */ +#define REG_PIOB_PPDER (*(WoReg*)0x400E1094U) /**< \brief (PIOB) Pad Pull-down Enable Register */ +#define REG_PIOB_PPDSR (*(RoReg*)0x400E1098U) /**< \brief (PIOB) Pad Pull-down Status Register */ +#define REG_PIOB_OWER (*(WoReg*)0x400E10A0U) /**< \brief (PIOB) Output Write Enable */ +#define REG_PIOB_OWDR (*(WoReg*)0x400E10A4U) /**< \brief (PIOB) Output Write Disable */ +#define REG_PIOB_OWSR (*(RoReg*)0x400E10A8U) /**< \brief (PIOB) Output Write Status Register */ +#define REG_PIOB_AIMER (*(WoReg*)0x400E10B0U) /**< \brief (PIOB) Additional Interrupt Modes Enable Register */ +#define REG_PIOB_AIMDR (*(WoReg*)0x400E10B4U) /**< \brief (PIOB) Additional Interrupt Modes Disables Register */ +#define REG_PIOB_AIMMR (*(RoReg*)0x400E10B8U) /**< \brief (PIOB) Additional Interrupt Modes Mask Register */ +#define REG_PIOB_ESR (*(WoReg*)0x400E10C0U) /**< \brief (PIOB) Edge Select Register */ +#define REG_PIOB_LSR (*(WoReg*)0x400E10C4U) /**< \brief (PIOB) Level Select Register */ +#define REG_PIOB_ELSR (*(RoReg*)0x400E10C8U) /**< \brief (PIOB) Edge/Level Status Register */ +#define REG_PIOB_FELLSR (*(WoReg*)0x400E10D0U) /**< \brief (PIOB) Falling Edge/Low Level Select Register */ +#define REG_PIOB_REHLSR (*(WoReg*)0x400E10D4U) /**< \brief (PIOB) Rising Edge/ High Level Select Register */ +#define REG_PIOB_FRLHSR (*(RoReg*)0x400E10D8U) /**< \brief (PIOB) Fall/Rise - Low/High Status Register */ +#define REG_PIOB_LOCKSR (*(RoReg*)0x400E10E0U) /**< \brief (PIOB) Lock Status */ +#define REG_PIOB_WPMR (*(RwReg*)0x400E10E4U) /**< \brief (PIOB) Write Protect Mode Register */ +#define REG_PIOB_WPSR (*(RoReg*)0x400E10E8U) /**< \brief (PIOB) Write Protect Status Register */ +#define REG_PIOB_SCHMITT (*(RwReg*)0x400E1100U) /**< \brief (PIOB) Schmitt Trigger Register */ +#define REG_PIOB_PCMR (*(RwReg*)0x400E1150U) /**< \brief (PIOB) Parallel Capture Mode Register */ +#define REG_PIOB_PCIER (*(WoReg*)0x400E1154U) /**< \brief (PIOB) Parallel Capture Interrupt Enable Register */ +#define REG_PIOB_PCIDR (*(WoReg*)0x400E1158U) /**< \brief (PIOB) Parallel Capture Interrupt Disable Register */ +#define REG_PIOB_PCIMR (*(RoReg*)0x400E115CU) /**< \brief (PIOB) Parallel Capture Interrupt Mask Register */ +#define REG_PIOB_PCISR (*(RoReg*)0x400E1160U) /**< \brief (PIOB) Parallel Capture Interrupt Status Register */ +#define REG_PIOB_PCRHR (*(RoReg*)0x400E1164U) /**< \brief (PIOB) Parallel Capture Reception Holding Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_PIOB_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_pioc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_pioc.h new file mode 100644 index 000000000..ebb15f158 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_pioc.h @@ -0,0 +1,144 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_PIOC_INSTANCE_ +#define _SAM3S_PIOC_INSTANCE_ + +/* ========== Register definition for PIOC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PIOC_PER (0x400E1200U) /**< \brief (PIOC) PIO Enable Register */ +#define REG_PIOC_PDR (0x400E1204U) /**< \brief (PIOC) PIO Disable Register */ +#define REG_PIOC_PSR (0x400E1208U) /**< \brief (PIOC) PIO Status Register */ +#define REG_PIOC_OER (0x400E1210U) /**< \brief (PIOC) Output Enable Register */ +#define REG_PIOC_ODR (0x400E1214U) /**< \brief (PIOC) Output Disable Register */ +#define REG_PIOC_OSR (0x400E1218U) /**< \brief (PIOC) Output Status Register */ +#define REG_PIOC_IFER (0x400E1220U) /**< \brief (PIOC) Glitch Input Filter Enable Register */ +#define REG_PIOC_IFDR (0x400E1224U) /**< \brief (PIOC) Glitch Input Filter Disable Register */ +#define REG_PIOC_IFSR (0x400E1228U) /**< \brief (PIOC) Glitch Input Filter Status Register */ +#define REG_PIOC_SODR (0x400E1230U) /**< \brief (PIOC) Set Output Data Register */ +#define REG_PIOC_CODR (0x400E1234U) /**< \brief (PIOC) Clear Output Data Register */ +#define REG_PIOC_ODSR (0x400E1238U) /**< \brief (PIOC) Output Data Status Register */ +#define REG_PIOC_PDSR (0x400E123CU) /**< \brief (PIOC) Pin Data Status Register */ +#define REG_PIOC_IER (0x400E1240U) /**< \brief (PIOC) Interrupt Enable Register */ +#define REG_PIOC_IDR (0x400E1244U) /**< \brief (PIOC) Interrupt Disable Register */ +#define REG_PIOC_IMR (0x400E1248U) /**< \brief (PIOC) Interrupt Mask Register */ +#define REG_PIOC_ISR (0x400E124CU) /**< \brief (PIOC) Interrupt Status Register */ +#define REG_PIOC_MDER (0x400E1250U) /**< \brief (PIOC) Multi-driver Enable Register */ +#define REG_PIOC_MDDR (0x400E1254U) /**< \brief (PIOC) Multi-driver Disable Register */ +#define REG_PIOC_MDSR (0x400E1258U) /**< \brief (PIOC) Multi-driver Status Register */ +#define REG_PIOC_PUDR (0x400E1260U) /**< \brief (PIOC) Pull-up Disable Register */ +#define REG_PIOC_PUER (0x400E1264U) /**< \brief (PIOC) Pull-up Enable Register */ +#define REG_PIOC_PUSR (0x400E1268U) /**< \brief (PIOC) Pad Pull-up Status Register */ +#define REG_PIOC_ABCDSR (0x400E1270U) /**< \brief (PIOC) Peripheral Select Register */ +#define REG_PIOC_IFSCDR (0x400E1280U) /**< \brief (PIOC) Input Filter Slow Clock Disable Register */ +#define REG_PIOC_IFSCER (0x400E1284U) /**< \brief (PIOC) Input Filter Slow Clock Enable Register */ +#define REG_PIOC_IFSCSR (0x400E1288U) /**< \brief (PIOC) Input Filter Slow Clock Status Register */ +#define REG_PIOC_SCDR (0x400E128CU) /**< \brief (PIOC) Slow Clock Divider Debouncing Register */ +#define REG_PIOC_PPDDR (0x400E1290U) /**< \brief (PIOC) Pad Pull-down Disable Register */ +#define REG_PIOC_PPDER (0x400E1294U) /**< \brief (PIOC) Pad Pull-down Enable Register */ +#define REG_PIOC_PPDSR (0x400E1298U) /**< \brief (PIOC) Pad Pull-down Status Register */ +#define REG_PIOC_OWER (0x400E12A0U) /**< \brief (PIOC) Output Write Enable */ +#define REG_PIOC_OWDR (0x400E12A4U) /**< \brief (PIOC) Output Write Disable */ +#define REG_PIOC_OWSR (0x400E12A8U) /**< \brief (PIOC) Output Write Status Register */ +#define REG_PIOC_AIMER (0x400E12B0U) /**< \brief (PIOC) Additional Interrupt Modes Enable Register */ +#define REG_PIOC_AIMDR (0x400E12B4U) /**< \brief (PIOC) Additional Interrupt Modes Disables Register */ +#define REG_PIOC_AIMMR (0x400E12B8U) /**< \brief (PIOC) Additional Interrupt Modes Mask Register */ +#define REG_PIOC_ESR (0x400E12C0U) /**< \brief (PIOC) Edge Select Register */ +#define REG_PIOC_LSR (0x400E12C4U) /**< \brief (PIOC) Level Select Register */ +#define REG_PIOC_ELSR (0x400E12C8U) /**< \brief (PIOC) Edge/Level Status Register */ +#define REG_PIOC_FELLSR (0x400E12D0U) /**< \brief (PIOC) Falling Edge/Low Level Select Register */ +#define REG_PIOC_REHLSR (0x400E12D4U) /**< \brief (PIOC) Rising Edge/ High Level Select Register */ +#define REG_PIOC_FRLHSR (0x400E12D8U) /**< \brief (PIOC) Fall/Rise - Low/High Status Register */ +#define REG_PIOC_LOCKSR (0x400E12E0U) /**< \brief (PIOC) Lock Status */ +#define REG_PIOC_WPMR (0x400E12E4U) /**< \brief (PIOC) Write Protect Mode Register */ +#define REG_PIOC_WPSR (0x400E12E8U) /**< \brief (PIOC) Write Protect Status Register */ +#define REG_PIOC_SCHMITT (0x400E1300U) /**< \brief (PIOC) Schmitt Trigger Register */ +#define REG_PIOC_PCMR (0x400E1350U) /**< \brief (PIOC) Parallel Capture Mode Register */ +#define REG_PIOC_PCIER (0x400E1354U) /**< \brief (PIOC) Parallel Capture Interrupt Enable Register */ +#define REG_PIOC_PCIDR (0x400E1358U) /**< \brief (PIOC) Parallel Capture Interrupt Disable Register */ +#define REG_PIOC_PCIMR (0x400E135CU) /**< \brief (PIOC) Parallel Capture Interrupt Mask Register */ +#define REG_PIOC_PCISR (0x400E1360U) /**< \brief (PIOC) Parallel Capture Interrupt Status Register */ +#define REG_PIOC_PCRHR (0x400E1364U) /**< \brief (PIOC) Parallel Capture Reception Holding Register */ +#else +#define REG_PIOC_PER (*(WoReg*)0x400E1200U) /**< \brief (PIOC) PIO Enable Register */ +#define REG_PIOC_PDR (*(WoReg*)0x400E1204U) /**< \brief (PIOC) PIO Disable Register */ +#define REG_PIOC_PSR (*(RoReg*)0x400E1208U) /**< \brief (PIOC) PIO Status Register */ +#define REG_PIOC_OER (*(WoReg*)0x400E1210U) /**< \brief (PIOC) Output Enable Register */ +#define REG_PIOC_ODR (*(WoReg*)0x400E1214U) /**< \brief (PIOC) Output Disable Register */ +#define REG_PIOC_OSR (*(RoReg*)0x400E1218U) /**< \brief (PIOC) Output Status Register */ +#define REG_PIOC_IFER (*(WoReg*)0x400E1220U) /**< \brief (PIOC) Glitch Input Filter Enable Register */ +#define REG_PIOC_IFDR (*(WoReg*)0x400E1224U) /**< \brief (PIOC) Glitch Input Filter Disable Register */ +#define REG_PIOC_IFSR (*(RoReg*)0x400E1228U) /**< \brief (PIOC) Glitch Input Filter Status Register */ +#define REG_PIOC_SODR (*(WoReg*)0x400E1230U) /**< \brief (PIOC) Set Output Data Register */ +#define REG_PIOC_CODR (*(WoReg*)0x400E1234U) /**< \brief (PIOC) Clear Output Data Register */ +#define REG_PIOC_ODSR (*(RwReg*)0x400E1238U) /**< \brief (PIOC) Output Data Status Register */ +#define REG_PIOC_PDSR (*(RoReg*)0x400E123CU) /**< \brief (PIOC) Pin Data Status Register */ +#define REG_PIOC_IER (*(WoReg*)0x400E1240U) /**< \brief (PIOC) Interrupt Enable Register */ +#define REG_PIOC_IDR (*(WoReg*)0x400E1244U) /**< \brief (PIOC) Interrupt Disable Register */ +#define REG_PIOC_IMR (*(RoReg*)0x400E1248U) /**< \brief (PIOC) Interrupt Mask Register */ +#define REG_PIOC_ISR (*(RoReg*)0x400E124CU) /**< \brief (PIOC) Interrupt Status Register */ +#define REG_PIOC_MDER (*(WoReg*)0x400E1250U) /**< \brief (PIOC) Multi-driver Enable Register */ +#define REG_PIOC_MDDR (*(WoReg*)0x400E1254U) /**< \brief (PIOC) Multi-driver Disable Register */ +#define REG_PIOC_MDSR (*(RoReg*)0x400E1258U) /**< \brief (PIOC) Multi-driver Status Register */ +#define REG_PIOC_PUDR (*(WoReg*)0x400E1260U) /**< \brief (PIOC) Pull-up Disable Register */ +#define REG_PIOC_PUER (*(WoReg*)0x400E1264U) /**< \brief (PIOC) Pull-up Enable Register */ +#define REG_PIOC_PUSR (*(RoReg*)0x400E1268U) /**< \brief (PIOC) Pad Pull-up Status Register */ +#define REG_PIOC_ABCDSR (*(RwReg*)0x400E1270U) /**< \brief (PIOC) Peripheral Select Register */ +#define REG_PIOC_IFSCDR (*(WoReg*)0x400E1280U) /**< \brief (PIOC) Input Filter Slow Clock Disable Register */ +#define REG_PIOC_IFSCER (*(WoReg*)0x400E1284U) /**< \brief (PIOC) Input Filter Slow Clock Enable Register */ +#define REG_PIOC_IFSCSR (*(RoReg*)0x400E1288U) /**< \brief (PIOC) Input Filter Slow Clock Status Register */ +#define REG_PIOC_SCDR (*(RwReg*)0x400E128CU) /**< \brief (PIOC) Slow Clock Divider Debouncing Register */ +#define REG_PIOC_PPDDR (*(WoReg*)0x400E1290U) /**< \brief (PIOC) Pad Pull-down Disable Register */ +#define REG_PIOC_PPDER (*(WoReg*)0x400E1294U) /**< \brief (PIOC) Pad Pull-down Enable Register */ +#define REG_PIOC_PPDSR (*(RoReg*)0x400E1298U) /**< \brief (PIOC) Pad Pull-down Status Register */ +#define REG_PIOC_OWER (*(WoReg*)0x400E12A0U) /**< \brief (PIOC) Output Write Enable */ +#define REG_PIOC_OWDR (*(WoReg*)0x400E12A4U) /**< \brief (PIOC) Output Write Disable */ +#define REG_PIOC_OWSR (*(RoReg*)0x400E12A8U) /**< \brief (PIOC) Output Write Status Register */ +#define REG_PIOC_AIMER (*(WoReg*)0x400E12B0U) /**< \brief (PIOC) Additional Interrupt Modes Enable Register */ +#define REG_PIOC_AIMDR (*(WoReg*)0x400E12B4U) /**< \brief (PIOC) Additional Interrupt Modes Disables Register */ +#define REG_PIOC_AIMMR (*(RoReg*)0x400E12B8U) /**< \brief (PIOC) Additional Interrupt Modes Mask Register */ +#define REG_PIOC_ESR (*(WoReg*)0x400E12C0U) /**< \brief (PIOC) Edge Select Register */ +#define REG_PIOC_LSR (*(WoReg*)0x400E12C4U) /**< \brief (PIOC) Level Select Register */ +#define REG_PIOC_ELSR (*(RoReg*)0x400E12C8U) /**< \brief (PIOC) Edge/Level Status Register */ +#define REG_PIOC_FELLSR (*(WoReg*)0x400E12D0U) /**< \brief (PIOC) Falling Edge/Low Level Select Register */ +#define REG_PIOC_REHLSR (*(WoReg*)0x400E12D4U) /**< \brief (PIOC) Rising Edge/ High Level Select Register */ +#define REG_PIOC_FRLHSR (*(RoReg*)0x400E12D8U) /**< \brief (PIOC) Fall/Rise - Low/High Status Register */ +#define REG_PIOC_LOCKSR (*(RoReg*)0x400E12E0U) /**< \brief (PIOC) Lock Status */ +#define REG_PIOC_WPMR (*(RwReg*)0x400E12E4U) /**< \brief (PIOC) Write Protect Mode Register */ +#define REG_PIOC_WPSR (*(RoReg*)0x400E12E8U) /**< \brief (PIOC) Write Protect Status Register */ +#define REG_PIOC_SCHMITT (*(RwReg*)0x400E1300U) /**< \brief (PIOC) Schmitt Trigger Register */ +#define REG_PIOC_PCMR (*(RwReg*)0x400E1350U) /**< \brief (PIOC) Parallel Capture Mode Register */ +#define REG_PIOC_PCIER (*(WoReg*)0x400E1354U) /**< \brief (PIOC) Parallel Capture Interrupt Enable Register */ +#define REG_PIOC_PCIDR (*(WoReg*)0x400E1358U) /**< \brief (PIOC) Parallel Capture Interrupt Disable Register */ +#define REG_PIOC_PCIMR (*(RoReg*)0x400E135CU) /**< \brief (PIOC) Parallel Capture Interrupt Mask Register */ +#define REG_PIOC_PCISR (*(RoReg*)0x400E1360U) /**< \brief (PIOC) Parallel Capture Interrupt Status Register */ +#define REG_PIOC_PCRHR (*(RoReg*)0x400E1364U) /**< \brief (PIOC) Parallel Capture Reception Holding Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_PIOC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_pmc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_pmc.h new file mode 100644 index 000000000..7646f73c9 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_pmc.h @@ -0,0 +1,90 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_PMC_INSTANCE_ +#define _SAM3S_PMC_INSTANCE_ + +/* ========== Register definition for PMC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PMC_SCER (0x400E0400U) /**< \brief (PMC) System Clock Enable Register */ +#define REG_PMC_SCDR (0x400E0404U) /**< \brief (PMC) System Clock Disable Register */ +#define REG_PMC_SCSR (0x400E0408U) /**< \brief (PMC) System Clock Status Register */ +#define REG_PMC_PCER0 (0x400E0410U) /**< \brief (PMC) Peripheral Clock Enable Register 0 */ +#define REG_PMC_PCDR0 (0x400E0414U) /**< \brief (PMC) Peripheral Clock Disable Register 0 */ +#define REG_PMC_PCSR0 (0x400E0418U) /**< \brief (PMC) Peripheral Clock Status Register 0 */ +#define REG_CKGR_MOR (0x400E0420U) /**< \brief (PMC) Main Oscillator Register */ +#define REG_CKGR_MCFR (0x400E0424U) /**< \brief (PMC) Main Clock Frequency Register */ +#define REG_CKGR_PLLAR (0x400E0428U) /**< \brief (PMC) PLLA Register */ +#define REG_CKGR_PLLBR (0x400E042CU) /**< \brief (PMC) PLLB Register */ +#define REG_PMC_MCKR (0x400E0430U) /**< \brief (PMC) Master Clock Register */ +#define REG_PMC_USB (0x400E0438U) /**< \brief (PMC) USB Clock Register */ +#define REG_PMC_PCK (0x400E0440U) /**< \brief (PMC) Programmable Clock 0 Register */ +#define REG_PMC_IER (0x400E0460U) /**< \brief (PMC) Interrupt Enable Register */ +#define REG_PMC_IDR (0x400E0464U) /**< \brief (PMC) Interrupt Disable Register */ +#define REG_PMC_SR (0x400E0468U) /**< \brief (PMC) Status Register */ +#define REG_PMC_IMR (0x400E046CU) /**< \brief (PMC) Interrupt Mask Register */ +#define REG_PMC_FSMR (0x400E0470U) /**< \brief (PMC) Fast Startup Mode Register */ +#define REG_PMC_FSPR (0x400E0474U) /**< \brief (PMC) Fast Startup Polarity Register */ +#define REG_PMC_FOCR (0x400E0478U) /**< \brief (PMC) Fault Output Clear Register */ +#define REG_PMC_WPMR (0x400E04E4U) /**< \brief (PMC) Write Protect Mode Register */ +#define REG_PMC_WPSR (0x400E04E8U) /**< \brief (PMC) Write Protect Status Register */ +#define REG_PMC_PCER1 (0x400E0500U) /**< \brief (PMC) Peripheral Clock Enable Register 1 */ +#define REG_PMC_PCDR1 (0x400E0504U) /**< \brief (PMC) Peripheral Clock Disable Register 1 */ +#define REG_PMC_PCSR1 (0x400E0508U) /**< \brief (PMC) Peripheral Clock Status Register 1 */ +#define REG_PMC_OCR (0x400E0510U) /**< \brief (PMC) Oscillator Calibration Register */ +#else +#define REG_PMC_SCER (*(WoReg*)0x400E0400U) /**< \brief (PMC) System Clock Enable Register */ +#define REG_PMC_SCDR (*(WoReg*)0x400E0404U) /**< \brief (PMC) System Clock Disable Register */ +#define REG_PMC_SCSR (*(RoReg*)0x400E0408U) /**< \brief (PMC) System Clock Status Register */ +#define REG_PMC_PCER0 (*(WoReg*)0x400E0410U) /**< \brief (PMC) Peripheral Clock Enable Register 0 */ +#define REG_PMC_PCDR0 (*(WoReg*)0x400E0414U) /**< \brief (PMC) Peripheral Clock Disable Register 0 */ +#define REG_PMC_PCSR0 (*(RoReg*)0x400E0418U) /**< \brief (PMC) Peripheral Clock Status Register 0 */ +#define REG_CKGR_MOR (*(RwReg*)0x400E0420U) /**< \brief (PMC) Main Oscillator Register */ +#define REG_CKGR_MCFR (*(RoReg*)0x400E0424U) /**< \brief (PMC) Main Clock Frequency Register */ +#define REG_CKGR_PLLAR (*(RwReg*)0x400E0428U) /**< \brief (PMC) PLLA Register */ +#define REG_CKGR_PLLBR (*(RwReg*)0x400E042CU) /**< \brief (PMC) PLLB Register */ +#define REG_PMC_MCKR (*(RwReg*)0x400E0430U) /**< \brief (PMC) Master Clock Register */ +#define REG_PMC_USB (*(RwReg*)0x400E0438U) /**< \brief (PMC) USB Clock Register */ +#define REG_PMC_PCK (*(RwReg*)0x400E0440U) /**< \brief (PMC) Programmable Clock 0 Register */ +#define REG_PMC_IER (*(WoReg*)0x400E0460U) /**< \brief (PMC) Interrupt Enable Register */ +#define REG_PMC_IDR (*(WoReg*)0x400E0464U) /**< \brief (PMC) Interrupt Disable Register */ +#define REG_PMC_SR (*(RoReg*)0x400E0468U) /**< \brief (PMC) Status Register */ +#define REG_PMC_IMR (*(RoReg*)0x400E046CU) /**< \brief (PMC) Interrupt Mask Register */ +#define REG_PMC_FSMR (*(RwReg*)0x400E0470U) /**< \brief (PMC) Fast Startup Mode Register */ +#define REG_PMC_FSPR (*(RwReg*)0x400E0474U) /**< \brief (PMC) Fast Startup Polarity Register */ +#define REG_PMC_FOCR (*(WoReg*)0x400E0478U) /**< \brief (PMC) Fault Output Clear Register */ +#define REG_PMC_WPMR (*(RwReg*)0x400E04E4U) /**< \brief (PMC) Write Protect Mode Register */ +#define REG_PMC_WPSR (*(RoReg*)0x400E04E8U) /**< \brief (PMC) Write Protect Status Register */ +#define REG_PMC_PCER1 (*(WoReg*)0x400E0500U) /**< \brief (PMC) Peripheral Clock Enable Register 1 */ +#define REG_PMC_PCDR1 (*(WoReg*)0x400E0504U) /**< \brief (PMC) Peripheral Clock Disable Register 1 */ +#define REG_PMC_PCSR1 (*(RoReg*)0x400E0508U) /**< \brief (PMC) Peripheral Clock Status Register 1 */ +#define REG_PMC_OCR (*(RwReg*)0x400E0510U) /**< \brief (PMC) Oscillator Calibration Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_PMC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_pwm.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_pwm.h new file mode 100644 index 000000000..729709457 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_pwm.h @@ -0,0 +1,248 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_PWM_INSTANCE_ +#define _SAM3S_PWM_INSTANCE_ + +/* ========== Register definition for PWM peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PWM_CLK (0x40020000U) /**< \brief (PWM) PWM Clock Register */ +#define REG_PWM_ENA (0x40020004U) /**< \brief (PWM) PWM Enable Register */ +#define REG_PWM_DIS (0x40020008U) /**< \brief (PWM) PWM Disable Register */ +#define REG_PWM_SR (0x4002000CU) /**< \brief (PWM) PWM Status Register */ +#define REG_PWM_IER1 (0x40020010U) /**< \brief (PWM) PWM Interrupt Enable Register 1 */ +#define REG_PWM_IDR1 (0x40020014U) /**< \brief (PWM) PWM Interrupt Disable Register 1 */ +#define REG_PWM_IMR1 (0x40020018U) /**< \brief (PWM) PWM Interrupt Mask Register 1 */ +#define REG_PWM_ISR1 (0x4002001CU) /**< \brief (PWM) PWM Interrupt Status Register 1 */ +#define REG_PWM_SCM (0x40020020U) /**< \brief (PWM) PWM Sync Channels Mode Register */ +#define REG_PWM_SCUC (0x40020028U) /**< \brief (PWM) PWM Sync Channels Update Control Register */ +#define REG_PWM_SCUP (0x4002002CU) /**< \brief (PWM) PWM Sync Channels Update Period Register */ +#define REG_PWM_SCUPUPD (0x40020030U) /**< \brief (PWM) PWM Sync Channels Update Period Update Register */ +#define REG_PWM_IER2 (0x40020034U) /**< \brief (PWM) PWM Interrupt Enable Register 2 */ +#define REG_PWM_IDR2 (0x40020038U) /**< \brief (PWM) PWM Interrupt Disable Register 2 */ +#define REG_PWM_IMR2 (0x4002003CU) /**< \brief (PWM) PWM Interrupt Mask Register 2 */ +#define REG_PWM_ISR2 (0x40020040U) /**< \brief (PWM) PWM Interrupt Status Register 2 */ +#define REG_PWM_OOV (0x40020044U) /**< \brief (PWM) PWM Output Override Value Register */ +#define REG_PWM_OS (0x40020048U) /**< \brief (PWM) PWM Output Selection Register */ +#define REG_PWM_OSS (0x4002004CU) /**< \brief (PWM) PWM Output Selection Set Register */ +#define REG_PWM_OSC (0x40020050U) /**< \brief (PWM) PWM Output Selection Clear Register */ +#define REG_PWM_OSSUPD (0x40020054U) /**< \brief (PWM) PWM Output Selection Set Update Register */ +#define REG_PWM_OSCUPD (0x40020058U) /**< \brief (PWM) PWM Output Selection Clear Update Register */ +#define REG_PWM_FMR (0x4002005CU) /**< \brief (PWM) PWM Fault Mode Register */ +#define REG_PWM_FSR (0x40020060U) /**< \brief (PWM) PWM Fault Status Register */ +#define REG_PWM_FCR (0x40020064U) /**< \brief (PWM) PWM Fault Clear Register */ +#define REG_PWM_FPV (0x40020068U) /**< \brief (PWM) PWM Fault Protection Value Register */ +#define REG_PWM_FPE (0x4002006CU) /**< \brief (PWM) PWM Fault Protection Enable Register */ +#define REG_PWM_ELMR (0x4002007CU) /**< \brief (PWM) PWM Event Line 0 Mode Register */ +#define REG_PWM_SMMR (0x400200B0U) /**< \brief (PWM) PWM Stepper Motor Mode Register */ +#define REG_PWM_WPCR (0x400200E4U) /**< \brief (PWM) PWM Write Protect Control Register */ +#define REG_PWM_WPSR (0x400200E8U) /**< \brief (PWM) PWM Write Protect Status Register */ +#define REG_PWM_RPR (0x40020100U) /**< \brief (PWM) Receive Pointer Register */ +#define REG_PWM_RCR (0x40020104U) /**< \brief (PWM) Receive Counter Register */ +#define REG_PWM_TPR (0x40020108U) /**< \brief (PWM) Transmit Pointer Register */ +#define REG_PWM_TCR (0x4002010CU) /**< \brief (PWM) Transmit Counter Register */ +#define REG_PWM_RNPR (0x40020110U) /**< \brief (PWM) Receive Next Pointer Register */ +#define REG_PWM_RNCR (0x40020114U) /**< \brief (PWM) Receive Next Counter Register */ +#define REG_PWM_TNPR (0x40020118U) /**< \brief (PWM) Transmit Next Pointer Register */ +#define REG_PWM_TNCR (0x4002011CU) /**< \brief (PWM) Transmit Next Counter Register */ +#define REG_PWM_PTCR (0x40020120U) /**< \brief (PWM) Transfer Control Register */ +#define REG_PWM_PTSR (0x40020124U) /**< \brief (PWM) Transfer Status Register */ +#define REG_PWM_CMPV0 (0x40020130U) /**< \brief (PWM) PWM Comparison 0 Value Register */ +#define REG_PWM_CMPVUPD0 (0x40020134U) /**< \brief (PWM) PWM Comparison 0 Value Update Register */ +#define REG_PWM_CMPM0 (0x40020138U) /**< \brief (PWM) PWM Comparison 0 Mode Register */ +#define REG_PWM_CMPMUPD0 (0x4002013CU) /**< \brief (PWM) PWM Comparison 0 Mode Update Register */ +#define REG_PWM_CMPV1 (0x40020140U) /**< \brief (PWM) PWM Comparison 1 Value Register */ +#define REG_PWM_CMPVUPD1 (0x40020144U) /**< \brief (PWM) PWM Comparison 1 Value Update Register */ +#define REG_PWM_CMPM1 (0x40020148U) /**< \brief (PWM) PWM Comparison 1 Mode Register */ +#define REG_PWM_CMPMUPD1 (0x4002014CU) /**< \brief (PWM) PWM Comparison 1 Mode Update Register */ +#define REG_PWM_CMPV2 (0x40020150U) /**< \brief (PWM) PWM Comparison 2 Value Register */ +#define REG_PWM_CMPVUPD2 (0x40020154U) /**< \brief (PWM) PWM Comparison 2 Value Update Register */ +#define REG_PWM_CMPM2 (0x40020158U) /**< \brief (PWM) PWM Comparison 2 Mode Register */ +#define REG_PWM_CMPMUPD2 (0x4002015CU) /**< \brief (PWM) PWM Comparison 2 Mode Update Register */ +#define REG_PWM_CMPV3 (0x40020160U) /**< \brief (PWM) PWM Comparison 3 Value Register */ +#define REG_PWM_CMPVUPD3 (0x40020164U) /**< \brief (PWM) PWM Comparison 3 Value Update Register */ +#define REG_PWM_CMPM3 (0x40020168U) /**< \brief (PWM) PWM Comparison 3 Mode Register */ +#define REG_PWM_CMPMUPD3 (0x4002016CU) /**< \brief (PWM) PWM Comparison 3 Mode Update Register */ +#define REG_PWM_CMPV4 (0x40020170U) /**< \brief (PWM) PWM Comparison 4 Value Register */ +#define REG_PWM_CMPVUPD4 (0x40020174U) /**< \brief (PWM) PWM Comparison 4 Value Update Register */ +#define REG_PWM_CMPM4 (0x40020178U) /**< \brief (PWM) PWM Comparison 4 Mode Register */ +#define REG_PWM_CMPMUPD4 (0x4002017CU) /**< \brief (PWM) PWM Comparison 4 Mode Update Register */ +#define REG_PWM_CMPV5 (0x40020180U) /**< \brief (PWM) PWM Comparison 5 Value Register */ +#define REG_PWM_CMPVUPD5 (0x40020184U) /**< \brief (PWM) PWM Comparison 5 Value Update Register */ +#define REG_PWM_CMPM5 (0x40020188U) /**< \brief (PWM) PWM Comparison 5 Mode Register */ +#define REG_PWM_CMPMUPD5 (0x4002018CU) /**< \brief (PWM) PWM Comparison 5 Mode Update Register */ +#define REG_PWM_CMPV6 (0x40020190U) /**< \brief (PWM) PWM Comparison 6 Value Register */ +#define REG_PWM_CMPVUPD6 (0x40020194U) /**< \brief (PWM) PWM Comparison 6 Value Update Register */ +#define REG_PWM_CMPM6 (0x40020198U) /**< \brief (PWM) PWM Comparison 6 Mode Register */ +#define REG_PWM_CMPMUPD6 (0x4002019CU) /**< \brief (PWM) PWM Comparison 6 Mode Update Register */ +#define REG_PWM_CMPV7 (0x400201A0U) /**< \brief (PWM) PWM Comparison 7 Value Register */ +#define REG_PWM_CMPVUPD7 (0x400201A4U) /**< \brief (PWM) PWM Comparison 7 Value Update Register */ +#define REG_PWM_CMPM7 (0x400201A8U) /**< \brief (PWM) PWM Comparison 7 Mode Register */ +#define REG_PWM_CMPMUPD7 (0x400201ACU) /**< \brief (PWM) PWM Comparison 7 Mode Update Register */ +#define REG_PWM_CMR0 (0x40020200U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 0) */ +#define REG_PWM_CDTY0 (0x40020204U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 0) */ +#define REG_PWM_CDTYUPD0 (0x40020208U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 0) */ +#define REG_PWM_CPRD0 (0x4002020CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 0) */ +#define REG_PWM_CPRDUPD0 (0x40020210U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 0) */ +#define REG_PWM_CCNT0 (0x40020214U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 0) */ +#define REG_PWM_DT0 (0x40020218U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 0) */ +#define REG_PWM_DTUPD0 (0x4002021CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 0) */ +#define REG_PWM_CMR1 (0x40020220U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 1) */ +#define REG_PWM_CDTY1 (0x40020224U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 1) */ +#define REG_PWM_CDTYUPD1 (0x40020228U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 1) */ +#define REG_PWM_CPRD1 (0x4002022CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 1) */ +#define REG_PWM_CPRDUPD1 (0x40020230U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 1) */ +#define REG_PWM_CCNT1 (0x40020234U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 1) */ +#define REG_PWM_DT1 (0x40020238U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 1) */ +#define REG_PWM_DTUPD1 (0x4002023CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 1) */ +#define REG_PWM_CMR2 (0x40020240U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 2) */ +#define REG_PWM_CDTY2 (0x40020244U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 2) */ +#define REG_PWM_CDTYUPD2 (0x40020248U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 2) */ +#define REG_PWM_CPRD2 (0x4002024CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 2) */ +#define REG_PWM_CPRDUPD2 (0x40020250U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 2) */ +#define REG_PWM_CCNT2 (0x40020254U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 2) */ +#define REG_PWM_DT2 (0x40020258U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 2) */ +#define REG_PWM_DTUPD2 (0x4002025CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 2) */ +#define REG_PWM_CMR3 (0x40020260U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 3) */ +#define REG_PWM_CDTY3 (0x40020264U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 3) */ +#define REG_PWM_CDTYUPD3 (0x40020268U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 3) */ +#define REG_PWM_CPRD3 (0x4002026CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 3) */ +#define REG_PWM_CPRDUPD3 (0x40020270U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 3) */ +#define REG_PWM_CCNT3 (0x40020274U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 3) */ +#define REG_PWM_DT3 (0x40020278U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 3) */ +#define REG_PWM_DTUPD3 (0x4002027CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 3) */ +#else +#define REG_PWM_CLK (*(RwReg*)0x40020000U) /**< \brief (PWM) PWM Clock Register */ +#define REG_PWM_ENA (*(WoReg*)0x40020004U) /**< \brief (PWM) PWM Enable Register */ +#define REG_PWM_DIS (*(WoReg*)0x40020008U) /**< \brief (PWM) PWM Disable Register */ +#define REG_PWM_SR (*(RoReg*)0x4002000CU) /**< \brief (PWM) PWM Status Register */ +#define REG_PWM_IER1 (*(WoReg*)0x40020010U) /**< \brief (PWM) PWM Interrupt Enable Register 1 */ +#define REG_PWM_IDR1 (*(WoReg*)0x40020014U) /**< \brief (PWM) PWM Interrupt Disable Register 1 */ +#define REG_PWM_IMR1 (*(RoReg*)0x40020018U) /**< \brief (PWM) PWM Interrupt Mask Register 1 */ +#define REG_PWM_ISR1 (*(RoReg*)0x4002001CU) /**< \brief (PWM) PWM Interrupt Status Register 1 */ +#define REG_PWM_SCM (*(RwReg*)0x40020020U) /**< \brief (PWM) PWM Sync Channels Mode Register */ +#define REG_PWM_SCUC (*(RwReg*)0x40020028U) /**< \brief (PWM) PWM Sync Channels Update Control Register */ +#define REG_PWM_SCUP (*(RwReg*)0x4002002CU) /**< \brief (PWM) PWM Sync Channels Update Period Register */ +#define REG_PWM_SCUPUPD (*(WoReg*)0x40020030U) /**< \brief (PWM) PWM Sync Channels Update Period Update Register */ +#define REG_PWM_IER2 (*(WoReg*)0x40020034U) /**< \brief (PWM) PWM Interrupt Enable Register 2 */ +#define REG_PWM_IDR2 (*(WoReg*)0x40020038U) /**< \brief (PWM) PWM Interrupt Disable Register 2 */ +#define REG_PWM_IMR2 (*(RoReg*)0x4002003CU) /**< \brief (PWM) PWM Interrupt Mask Register 2 */ +#define REG_PWM_ISR2 (*(RoReg*)0x40020040U) /**< \brief (PWM) PWM Interrupt Status Register 2 */ +#define REG_PWM_OOV (*(RwReg*)0x40020044U) /**< \brief (PWM) PWM Output Override Value Register */ +#define REG_PWM_OS (*(RwReg*)0x40020048U) /**< \brief (PWM) PWM Output Selection Register */ +#define REG_PWM_OSS (*(WoReg*)0x4002004CU) /**< \brief (PWM) PWM Output Selection Set Register */ +#define REG_PWM_OSC (*(WoReg*)0x40020050U) /**< \brief (PWM) PWM Output Selection Clear Register */ +#define REG_PWM_OSSUPD (*(WoReg*)0x40020054U) /**< \brief (PWM) PWM Output Selection Set Update Register */ +#define REG_PWM_OSCUPD (*(WoReg*)0x40020058U) /**< \brief (PWM) PWM Output Selection Clear Update Register */ +#define REG_PWM_FMR (*(RwReg*)0x4002005CU) /**< \brief (PWM) PWM Fault Mode Register */ +#define REG_PWM_FSR (*(RoReg*)0x40020060U) /**< \brief (PWM) PWM Fault Status Register */ +#define REG_PWM_FCR (*(WoReg*)0x40020064U) /**< \brief (PWM) PWM Fault Clear Register */ +#define REG_PWM_FPV (*(RwReg*)0x40020068U) /**< \brief (PWM) PWM Fault Protection Value Register */ +#define REG_PWM_FPE (*(RwReg*)0x4002006CU) /**< \brief (PWM) PWM Fault Protection Enable Register */ +#define REG_PWM_ELMR (*(RwReg*)0x4002007CU) /**< \brief (PWM) PWM Event Line 0 Mode Register */ +#define REG_PWM_SMMR (*(RwReg*)0x400200B0U) /**< \brief (PWM) PWM Stepper Motor Mode Register */ +#define REG_PWM_WPCR (*(WoReg*)0x400200E4U) /**< \brief (PWM) PWM Write Protect Control Register */ +#define REG_PWM_WPSR (*(RoReg*)0x400200E8U) /**< \brief (PWM) PWM Write Protect Status Register */ +#define REG_PWM_RPR (*(RwReg*)0x40020100U) /**< \brief (PWM) Receive Pointer Register */ +#define REG_PWM_RCR (*(RwReg*)0x40020104U) /**< \brief (PWM) Receive Counter Register */ +#define REG_PWM_TPR (*(RwReg*)0x40020108U) /**< \brief (PWM) Transmit Pointer Register */ +#define REG_PWM_TCR (*(RwReg*)0x4002010CU) /**< \brief (PWM) Transmit Counter Register */ +#define REG_PWM_RNPR (*(RwReg*)0x40020110U) /**< \brief (PWM) Receive Next Pointer Register */ +#define REG_PWM_RNCR (*(RwReg*)0x40020114U) /**< \brief (PWM) Receive Next Counter Register */ +#define REG_PWM_TNPR (*(RwReg*)0x40020118U) /**< \brief (PWM) Transmit Next Pointer Register */ +#define REG_PWM_TNCR (*(RwReg*)0x4002011CU) /**< \brief (PWM) Transmit Next Counter Register */ +#define REG_PWM_PTCR (*(WoReg*)0x40020120U) /**< \brief (PWM) Transfer Control Register */ +#define REG_PWM_PTSR (*(RoReg*)0x40020124U) /**< \brief (PWM) Transfer Status Register */ +#define REG_PWM_CMPV0 (*(RwReg*)0x40020130U) /**< \brief (PWM) PWM Comparison 0 Value Register */ +#define REG_PWM_CMPVUPD0 (*(WoReg*)0x40020134U) /**< \brief (PWM) PWM Comparison 0 Value Update Register */ +#define REG_PWM_CMPM0 (*(RwReg*)0x40020138U) /**< \brief (PWM) PWM Comparison 0 Mode Register */ +#define REG_PWM_CMPMUPD0 (*(WoReg*)0x4002013CU) /**< \brief (PWM) PWM Comparison 0 Mode Update Register */ +#define REG_PWM_CMPV1 (*(RwReg*)0x40020140U) /**< \brief (PWM) PWM Comparison 1 Value Register */ +#define REG_PWM_CMPVUPD1 (*(WoReg*)0x40020144U) /**< \brief (PWM) PWM Comparison 1 Value Update Register */ +#define REG_PWM_CMPM1 (*(RwReg*)0x40020148U) /**< \brief (PWM) PWM Comparison 1 Mode Register */ +#define REG_PWM_CMPMUPD1 (*(WoReg*)0x4002014CU) /**< \brief (PWM) PWM Comparison 1 Mode Update Register */ +#define REG_PWM_CMPV2 (*(RwReg*)0x40020150U) /**< \brief (PWM) PWM Comparison 2 Value Register */ +#define REG_PWM_CMPVUPD2 (*(WoReg*)0x40020154U) /**< \brief (PWM) PWM Comparison 2 Value Update Register */ +#define REG_PWM_CMPM2 (*(RwReg*)0x40020158U) /**< \brief (PWM) PWM Comparison 2 Mode Register */ +#define REG_PWM_CMPMUPD2 (*(WoReg*)0x4002015CU) /**< \brief (PWM) PWM Comparison 2 Mode Update Register */ +#define REG_PWM_CMPV3 (*(RwReg*)0x40020160U) /**< \brief (PWM) PWM Comparison 3 Value Register */ +#define REG_PWM_CMPVUPD3 (*(WoReg*)0x40020164U) /**< \brief (PWM) PWM Comparison 3 Value Update Register */ +#define REG_PWM_CMPM3 (*(RwReg*)0x40020168U) /**< \brief (PWM) PWM Comparison 3 Mode Register */ +#define REG_PWM_CMPMUPD3 (*(WoReg*)0x4002016CU) /**< \brief (PWM) PWM Comparison 3 Mode Update Register */ +#define REG_PWM_CMPV4 (*(RwReg*)0x40020170U) /**< \brief (PWM) PWM Comparison 4 Value Register */ +#define REG_PWM_CMPVUPD4 (*(WoReg*)0x40020174U) /**< \brief (PWM) PWM Comparison 4 Value Update Register */ +#define REG_PWM_CMPM4 (*(RwReg*)0x40020178U) /**< \brief (PWM) PWM Comparison 4 Mode Register */ +#define REG_PWM_CMPMUPD4 (*(WoReg*)0x4002017CU) /**< \brief (PWM) PWM Comparison 4 Mode Update Register */ +#define REG_PWM_CMPV5 (*(RwReg*)0x40020180U) /**< \brief (PWM) PWM Comparison 5 Value Register */ +#define REG_PWM_CMPVUPD5 (*(WoReg*)0x40020184U) /**< \brief (PWM) PWM Comparison 5 Value Update Register */ +#define REG_PWM_CMPM5 (*(RwReg*)0x40020188U) /**< \brief (PWM) PWM Comparison 5 Mode Register */ +#define REG_PWM_CMPMUPD5 (*(WoReg*)0x4002018CU) /**< \brief (PWM) PWM Comparison 5 Mode Update Register */ +#define REG_PWM_CMPV6 (*(RwReg*)0x40020190U) /**< \brief (PWM) PWM Comparison 6 Value Register */ +#define REG_PWM_CMPVUPD6 (*(WoReg*)0x40020194U) /**< \brief (PWM) PWM Comparison 6 Value Update Register */ +#define REG_PWM_CMPM6 (*(RwReg*)0x40020198U) /**< \brief (PWM) PWM Comparison 6 Mode Register */ +#define REG_PWM_CMPMUPD6 (*(WoReg*)0x4002019CU) /**< \brief (PWM) PWM Comparison 6 Mode Update Register */ +#define REG_PWM_CMPV7 (*(RwReg*)0x400201A0U) /**< \brief (PWM) PWM Comparison 7 Value Register */ +#define REG_PWM_CMPVUPD7 (*(WoReg*)0x400201A4U) /**< \brief (PWM) PWM Comparison 7 Value Update Register */ +#define REG_PWM_CMPM7 (*(RwReg*)0x400201A8U) /**< \brief (PWM) PWM Comparison 7 Mode Register */ +#define REG_PWM_CMPMUPD7 (*(WoReg*)0x400201ACU) /**< \brief (PWM) PWM Comparison 7 Mode Update Register */ +#define REG_PWM_CMR0 (*(RwReg*)0x40020200U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 0) */ +#define REG_PWM_CDTY0 (*(RwReg*)0x40020204U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 0) */ +#define REG_PWM_CDTYUPD0 (*(WoReg*)0x40020208U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 0) */ +#define REG_PWM_CPRD0 (*(RwReg*)0x4002020CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 0) */ +#define REG_PWM_CPRDUPD0 (*(WoReg*)0x40020210U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 0) */ +#define REG_PWM_CCNT0 (*(RoReg*)0x40020214U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 0) */ +#define REG_PWM_DT0 (*(RwReg*)0x40020218U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 0) */ +#define REG_PWM_DTUPD0 (*(WoReg*)0x4002021CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 0) */ +#define REG_PWM_CMR1 (*(RwReg*)0x40020220U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 1) */ +#define REG_PWM_CDTY1 (*(RwReg*)0x40020224U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 1) */ +#define REG_PWM_CDTYUPD1 (*(WoReg*)0x40020228U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 1) */ +#define REG_PWM_CPRD1 (*(RwReg*)0x4002022CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 1) */ +#define REG_PWM_CPRDUPD1 (*(WoReg*)0x40020230U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 1) */ +#define REG_PWM_CCNT1 (*(RoReg*)0x40020234U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 1) */ +#define REG_PWM_DT1 (*(RwReg*)0x40020238U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 1) */ +#define REG_PWM_DTUPD1 (*(WoReg*)0x4002023CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 1) */ +#define REG_PWM_CMR2 (*(RwReg*)0x40020240U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 2) */ +#define REG_PWM_CDTY2 (*(RwReg*)0x40020244U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 2) */ +#define REG_PWM_CDTYUPD2 (*(WoReg*)0x40020248U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 2) */ +#define REG_PWM_CPRD2 (*(RwReg*)0x4002024CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 2) */ +#define REG_PWM_CPRDUPD2 (*(WoReg*)0x40020250U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 2) */ +#define REG_PWM_CCNT2 (*(RoReg*)0x40020254U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 2) */ +#define REG_PWM_DT2 (*(RwReg*)0x40020258U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 2) */ +#define REG_PWM_DTUPD2 (*(WoReg*)0x4002025CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 2) */ +#define REG_PWM_CMR3 (*(RwReg*)0x40020260U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 3) */ +#define REG_PWM_CDTY3 (*(RwReg*)0x40020264U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 3) */ +#define REG_PWM_CDTYUPD3 (*(WoReg*)0x40020268U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 3) */ +#define REG_PWM_CPRD3 (*(RwReg*)0x4002026CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 3) */ +#define REG_PWM_CPRDUPD3 (*(WoReg*)0x40020270U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 3) */ +#define REG_PWM_CCNT3 (*(RoReg*)0x40020274U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 3) */ +#define REG_PWM_DT3 (*(RwReg*)0x40020278U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 3) */ +#define REG_PWM_DTUPD3 (*(WoReg*)0x4002027CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 3) */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_PWM_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_rstc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_rstc.h new file mode 100644 index 000000000..85bc90e8a --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_rstc.h @@ -0,0 +1,44 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_RSTC_INSTANCE_ +#define _SAM3S_RSTC_INSTANCE_ + +/* ========== Register definition for RSTC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_RSTC_CR (0x400E1400U) /**< \brief (RSTC) Control Register */ +#define REG_RSTC_SR (0x400E1404U) /**< \brief (RSTC) Status Register */ +#define REG_RSTC_MR (0x400E1408U) /**< \brief (RSTC) Mode Register */ +#else +#define REG_RSTC_CR (*(WoReg*)0x400E1400U) /**< \brief (RSTC) Control Register */ +#define REG_RSTC_SR (*(RoReg*)0x400E1404U) /**< \brief (RSTC) Status Register */ +#define REG_RSTC_MR (*(RwReg*)0x400E1408U) /**< \brief (RSTC) Mode Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_RSTC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_rtc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_rtc.h new file mode 100644 index 000000000..abe37184f --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_rtc.h @@ -0,0 +1,62 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_RTC_INSTANCE_ +#define _SAM3S_RTC_INSTANCE_ + +/* ========== Register definition for RTC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_RTC_CR (0x400E1460U) /**< \brief (RTC) Control Register */ +#define REG_RTC_MR (0x400E1464U) /**< \brief (RTC) Mode Register */ +#define REG_RTC_TIMR (0x400E1468U) /**< \brief (RTC) Time Register */ +#define REG_RTC_CALR (0x400E146CU) /**< \brief (RTC) Calendar Register */ +#define REG_RTC_TIMALR (0x400E1470U) /**< \brief (RTC) Time Alarm Register */ +#define REG_RTC_CALALR (0x400E1474U) /**< \brief (RTC) Calendar Alarm Register */ +#define REG_RTC_SR (0x400E1478U) /**< \brief (RTC) Status Register */ +#define REG_RTC_SCCR (0x400E147CU) /**< \brief (RTC) Status Clear Command Register */ +#define REG_RTC_IER (0x400E1480U) /**< \brief (RTC) Interrupt Enable Register */ +#define REG_RTC_IDR (0x400E1484U) /**< \brief (RTC) Interrupt Disable Register */ +#define REG_RTC_IMR (0x400E1488U) /**< \brief (RTC) Interrupt Mask Register */ +#define REG_RTC_VER (0x400E148CU) /**< \brief (RTC) Valid Entry Register */ +#else +#define REG_RTC_CR (*(RwReg*)0x400E1460U) /**< \brief (RTC) Control Register */ +#define REG_RTC_MR (*(RwReg*)0x400E1464U) /**< \brief (RTC) Mode Register */ +#define REG_RTC_TIMR (*(RwReg*)0x400E1468U) /**< \brief (RTC) Time Register */ +#define REG_RTC_CALR (*(RwReg*)0x400E146CU) /**< \brief (RTC) Calendar Register */ +#define REG_RTC_TIMALR (*(RwReg*)0x400E1470U) /**< \brief (RTC) Time Alarm Register */ +#define REG_RTC_CALALR (*(RwReg*)0x400E1474U) /**< \brief (RTC) Calendar Alarm Register */ +#define REG_RTC_SR (*(RoReg*)0x400E1478U) /**< \brief (RTC) Status Register */ +#define REG_RTC_SCCR (*(WoReg*)0x400E147CU) /**< \brief (RTC) Status Clear Command Register */ +#define REG_RTC_IER (*(WoReg*)0x400E1480U) /**< \brief (RTC) Interrupt Enable Register */ +#define REG_RTC_IDR (*(WoReg*)0x400E1484U) /**< \brief (RTC) Interrupt Disable Register */ +#define REG_RTC_IMR (*(RoReg*)0x400E1488U) /**< \brief (RTC) Interrupt Mask Register */ +#define REG_RTC_VER (*(RoReg*)0x400E148CU) /**< \brief (RTC) Valid Entry Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_RTC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_rtt.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_rtt.h new file mode 100644 index 000000000..87917ca6c --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_rtt.h @@ -0,0 +1,46 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_RTT_INSTANCE_ +#define _SAM3S_RTT_INSTANCE_ + +/* ========== Register definition for RTT peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_RTT_MR (0x400E1430U) /**< \brief (RTT) Mode Register */ +#define REG_RTT_AR (0x400E1434U) /**< \brief (RTT) Alarm Register */ +#define REG_RTT_VR (0x400E1438U) /**< \brief (RTT) Value Register */ +#define REG_RTT_SR (0x400E143CU) /**< \brief (RTT) Status Register */ +#else +#define REG_RTT_MR (*(RwReg*)0x400E1430U) /**< \brief (RTT) Mode Register */ +#define REG_RTT_AR (*(RwReg*)0x400E1434U) /**< \brief (RTT) Alarm Register */ +#define REG_RTT_VR (*(RoReg*)0x400E1438U) /**< \brief (RTT) Value Register */ +#define REG_RTT_SR (*(RoReg*)0x400E143CU) /**< \brief (RTT) Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_RTT_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_smc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_smc.h new file mode 100644 index 000000000..af0bcbc02 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_smc.h @@ -0,0 +1,88 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_SMC_INSTANCE_ +#define _SAM3S_SMC_INSTANCE_ + +/* ========== Register definition for SMC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SMC_SETUP0 (0x400E0000U) /**< \brief (SMC) SMC Setup Register (CS_number = 0) */ +#define REG_SMC_PULSE0 (0x400E0004U) /**< \brief (SMC) SMC Pulse Register (CS_number = 0) */ +#define REG_SMC_CYCLE0 (0x400E0008U) /**< \brief (SMC) SMC Cycle Register (CS_number = 0) */ +#define REG_SMC_MODE0 (0x400E000CU) /**< \brief (SMC) SMC Mode Register (CS_number = 0) */ +#define REG_SMC_SETUP1 (0x400E0010U) /**< \brief (SMC) SMC Setup Register (CS_number = 1) */ +#define REG_SMC_PULSE1 (0x400E0014U) /**< \brief (SMC) SMC Pulse Register (CS_number = 1) */ +#define REG_SMC_CYCLE1 (0x400E0018U) /**< \brief (SMC) SMC Cycle Register (CS_number = 1) */ +#define REG_SMC_MODE1 (0x400E001CU) /**< \brief (SMC) SMC Mode Register (CS_number = 1) */ +#define REG_SMC_SETUP2 (0x400E0020U) /**< \brief (SMC) SMC Setup Register (CS_number = 2) */ +#define REG_SMC_PULSE2 (0x400E0024U) /**< \brief (SMC) SMC Pulse Register (CS_number = 2) */ +#define REG_SMC_CYCLE2 (0x400E0028U) /**< \brief (SMC) SMC Cycle Register (CS_number = 2) */ +#define REG_SMC_MODE2 (0x400E002CU) /**< \brief (SMC) SMC Mode Register (CS_number = 2) */ +#define REG_SMC_SETUP3 (0x400E0030U) /**< \brief (SMC) SMC Setup Register (CS_number = 3) */ +#define REG_SMC_PULSE3 (0x400E0034U) /**< \brief (SMC) SMC Pulse Register (CS_number = 3) */ +#define REG_SMC_CYCLE3 (0x400E0038U) /**< \brief (SMC) SMC Cycle Register (CS_number = 3) */ +#define REG_SMC_MODE3 (0x400E003CU) /**< \brief (SMC) SMC Mode Register (CS_number = 3) */ +#define REG_SMC_SETUP4 (0x400E0040U) /**< \brief (SMC) SMC Setup Register (CS_number = 4) */ +#define REG_SMC_PULSE4 (0x400E0044U) /**< \brief (SMC) SMC Pulse Register (CS_number = 4) */ +#define REG_SMC_CYCLE4 (0x400E0048U) /**< \brief (SMC) SMC Cycle Register (CS_number = 4) */ +#define REG_SMC_MODE4 (0x400E004CU) /**< \brief (SMC) SMC Mode Register (CS_number = 4) */ +#define REG_SMC_OCMS (0x400E0080U) /**< \brief (SMC) SMC OCMS MODE Register */ +#define REG_SMC_KEY1 (0x400E0084U) /**< \brief (SMC) SMC OCMS KEY1 Register */ +#define REG_SMC_KEY2 (0x400E0088U) /**< \brief (SMC) SMC OCMS KEY2 Register */ +#define REG_SMC_WPMR (0x400E00E4U) /**< \brief (SMC) SMC Write Protect Mode Register */ +#define REG_SMC_WPSR (0x400E00E8U) /**< \brief (SMC) SMC Write Protect Status Register */ +#else +#define REG_SMC_SETUP0 (*(RwReg*)0x400E0000U) /**< \brief (SMC) SMC Setup Register (CS_number = 0) */ +#define REG_SMC_PULSE0 (*(RwReg*)0x400E0004U) /**< \brief (SMC) SMC Pulse Register (CS_number = 0) */ +#define REG_SMC_CYCLE0 (*(RwReg*)0x400E0008U) /**< \brief (SMC) SMC Cycle Register (CS_number = 0) */ +#define REG_SMC_MODE0 (*(RwReg*)0x400E000CU) /**< \brief (SMC) SMC Mode Register (CS_number = 0) */ +#define REG_SMC_SETUP1 (*(RwReg*)0x400E0010U) /**< \brief (SMC) SMC Setup Register (CS_number = 1) */ +#define REG_SMC_PULSE1 (*(RwReg*)0x400E0014U) /**< \brief (SMC) SMC Pulse Register (CS_number = 1) */ +#define REG_SMC_CYCLE1 (*(RwReg*)0x400E0018U) /**< \brief (SMC) SMC Cycle Register (CS_number = 1) */ +#define REG_SMC_MODE1 (*(RwReg*)0x400E001CU) /**< \brief (SMC) SMC Mode Register (CS_number = 1) */ +#define REG_SMC_SETUP2 (*(RwReg*)0x400E0020U) /**< \brief (SMC) SMC Setup Register (CS_number = 2) */ +#define REG_SMC_PULSE2 (*(RwReg*)0x400E0024U) /**< \brief (SMC) SMC Pulse Register (CS_number = 2) */ +#define REG_SMC_CYCLE2 (*(RwReg*)0x400E0028U) /**< \brief (SMC) SMC Cycle Register (CS_number = 2) */ +#define REG_SMC_MODE2 (*(RwReg*)0x400E002CU) /**< \brief (SMC) SMC Mode Register (CS_number = 2) */ +#define REG_SMC_SETUP3 (*(RwReg*)0x400E0030U) /**< \brief (SMC) SMC Setup Register (CS_number = 3) */ +#define REG_SMC_PULSE3 (*(RwReg*)0x400E0034U) /**< \brief (SMC) SMC Pulse Register (CS_number = 3) */ +#define REG_SMC_CYCLE3 (*(RwReg*)0x400E0038U) /**< \brief (SMC) SMC Cycle Register (CS_number = 3) */ +#define REG_SMC_MODE3 (*(RwReg*)0x400E003CU) /**< \brief (SMC) SMC Mode Register (CS_number = 3) */ +#define REG_SMC_SETUP4 (*(RwReg*)0x400E0040U) /**< \brief (SMC) SMC Setup Register (CS_number = 4) */ +#define REG_SMC_PULSE4 (*(RwReg*)0x400E0044U) /**< \brief (SMC) SMC Pulse Register (CS_number = 4) */ +#define REG_SMC_CYCLE4 (*(RwReg*)0x400E0048U) /**< \brief (SMC) SMC Cycle Register (CS_number = 4) */ +#define REG_SMC_MODE4 (*(RwReg*)0x400E004CU) /**< \brief (SMC) SMC Mode Register (CS_number = 4) */ +#define REG_SMC_OCMS (*(RwReg*)0x400E0080U) /**< \brief (SMC) SMC OCMS MODE Register */ +#define REG_SMC_KEY1 (*(WoReg*)0x400E0084U) /**< \brief (SMC) SMC OCMS KEY1 Register */ +#define REG_SMC_KEY2 (*(WoReg*)0x400E0088U) /**< \brief (SMC) SMC OCMS KEY2 Register */ +#define REG_SMC_WPMR (*(RwReg*)0x400E00E4U) /**< \brief (SMC) SMC Write Protect Mode Register */ +#define REG_SMC_WPSR (*(RoReg*)0x400E00E8U) /**< \brief (SMC) SMC Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_SMC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_spi.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_spi.h new file mode 100644 index 000000000..ee59a26ee --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_spi.h @@ -0,0 +1,80 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_SPI_INSTANCE_ +#define _SAM3S_SPI_INSTANCE_ + +/* ========== Register definition for SPI peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SPI_CR (0x40008000U) /**< \brief (SPI) Control Register */ +#define REG_SPI_MR (0x40008004U) /**< \brief (SPI) Mode Register */ +#define REG_SPI_RDR (0x40008008U) /**< \brief (SPI) Receive Data Register */ +#define REG_SPI_TDR (0x4000800CU) /**< \brief (SPI) Transmit Data Register */ +#define REG_SPI_SR (0x40008010U) /**< \brief (SPI) Status Register */ +#define REG_SPI_IER (0x40008014U) /**< \brief (SPI) Interrupt Enable Register */ +#define REG_SPI_IDR (0x40008018U) /**< \brief (SPI) Interrupt Disable Register */ +#define REG_SPI_IMR (0x4000801CU) /**< \brief (SPI) Interrupt Mask Register */ +#define REG_SPI_CSR (0x40008030U) /**< \brief (SPI) Chip Select Register */ +#define REG_SPI_WPMR (0x400080E4U) /**< \brief (SPI) Write Protection Control Register */ +#define REG_SPI_WPSR (0x400080E8U) /**< \brief (SPI) Write Protection Status Register */ +#define REG_SPI_RPR (0x40008100U) /**< \brief (SPI) Receive Pointer Register */ +#define REG_SPI_RCR (0x40008104U) /**< \brief (SPI) Receive Counter Register */ +#define REG_SPI_TPR (0x40008108U) /**< \brief (SPI) Transmit Pointer Register */ +#define REG_SPI_TCR (0x4000810CU) /**< \brief (SPI) Transmit Counter Register */ +#define REG_SPI_RNPR (0x40008110U) /**< \brief (SPI) Receive Next Pointer Register */ +#define REG_SPI_RNCR (0x40008114U) /**< \brief (SPI) Receive Next Counter Register */ +#define REG_SPI_TNPR (0x40008118U) /**< \brief (SPI) Transmit Next Pointer Register */ +#define REG_SPI_TNCR (0x4000811CU) /**< \brief (SPI) Transmit Next Counter Register */ +#define REG_SPI_PTCR (0x40008120U) /**< \brief (SPI) Transfer Control Register */ +#define REG_SPI_PTSR (0x40008124U) /**< \brief (SPI) Transfer Status Register */ +#else +#define REG_SPI_CR (*(WoReg*)0x40008000U) /**< \brief (SPI) Control Register */ +#define REG_SPI_MR (*(RwReg*)0x40008004U) /**< \brief (SPI) Mode Register */ +#define REG_SPI_RDR (*(RoReg*)0x40008008U) /**< \brief (SPI) Receive Data Register */ +#define REG_SPI_TDR (*(WoReg*)0x4000800CU) /**< \brief (SPI) Transmit Data Register */ +#define REG_SPI_SR (*(RoReg*)0x40008010U) /**< \brief (SPI) Status Register */ +#define REG_SPI_IER (*(WoReg*)0x40008014U) /**< \brief (SPI) Interrupt Enable Register */ +#define REG_SPI_IDR (*(WoReg*)0x40008018U) /**< \brief (SPI) Interrupt Disable Register */ +#define REG_SPI_IMR (*(RoReg*)0x4000801CU) /**< \brief (SPI) Interrupt Mask Register */ +#define REG_SPI_CSR (*(RwReg*)0x40008030U) /**< \brief (SPI) Chip Select Register */ +#define REG_SPI_WPMR (*(RwReg*)0x400080E4U) /**< \brief (SPI) Write Protection Control Register */ +#define REG_SPI_WPSR (*(RoReg*)0x400080E8U) /**< \brief (SPI) Write Protection Status Register */ +#define REG_SPI_RPR (*(RwReg*)0x40008100U) /**< \brief (SPI) Receive Pointer Register */ +#define REG_SPI_RCR (*(RwReg*)0x40008104U) /**< \brief (SPI) Receive Counter Register */ +#define REG_SPI_TPR (*(RwReg*)0x40008108U) /**< \brief (SPI) Transmit Pointer Register */ +#define REG_SPI_TCR (*(RwReg*)0x4000810CU) /**< \brief (SPI) Transmit Counter Register */ +#define REG_SPI_RNPR (*(RwReg*)0x40008110U) /**< \brief (SPI) Receive Next Pointer Register */ +#define REG_SPI_RNCR (*(RwReg*)0x40008114U) /**< \brief (SPI) Receive Next Counter Register */ +#define REG_SPI_TNPR (*(RwReg*)0x40008118U) /**< \brief (SPI) Transmit Next Pointer Register */ +#define REG_SPI_TNCR (*(RwReg*)0x4000811CU) /**< \brief (SPI) Transmit Next Counter Register */ +#define REG_SPI_PTCR (*(WoReg*)0x40008120U) /**< \brief (SPI) Transfer Control Register */ +#define REG_SPI_PTSR (*(RoReg*)0x40008124U) /**< \brief (SPI) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_SPI_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_ssc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_ssc.h new file mode 100644 index 000000000..ce9623814 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_ssc.h @@ -0,0 +1,94 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_SSC_INSTANCE_ +#define _SAM3S_SSC_INSTANCE_ + +/* ========== Register definition for SSC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SSC_CR (0x40004000U) /**< \brief (SSC) Control Register */ +#define REG_SSC_CMR (0x40004004U) /**< \brief (SSC) Clock Mode Register */ +#define REG_SSC_RCMR (0x40004010U) /**< \brief (SSC) Receive Clock Mode Register */ +#define REG_SSC_RFMR (0x40004014U) /**< \brief (SSC) Receive Frame Mode Register */ +#define REG_SSC_TCMR (0x40004018U) /**< \brief (SSC) Transmit Clock Mode Register */ +#define REG_SSC_TFMR (0x4000401CU) /**< \brief (SSC) Transmit Frame Mode Register */ +#define REG_SSC_RHR (0x40004020U) /**< \brief (SSC) Receive Holding Register */ +#define REG_SSC_THR (0x40004024U) /**< \brief (SSC) Transmit Holding Register */ +#define REG_SSC_RSHR (0x40004030U) /**< \brief (SSC) Receive Sync. Holding Register */ +#define REG_SSC_TSHR (0x40004034U) /**< \brief (SSC) Transmit Sync. Holding Register */ +#define REG_SSC_RC0R (0x40004038U) /**< \brief (SSC) Receive Compare 0 Register */ +#define REG_SSC_RC1R (0x4000403CU) /**< \brief (SSC) Receive Compare 1 Register */ +#define REG_SSC_SR (0x40004040U) /**< \brief (SSC) Status Register */ +#define REG_SSC_IER (0x40004044U) /**< \brief (SSC) Interrupt Enable Register */ +#define REG_SSC_IDR (0x40004048U) /**< \brief (SSC) Interrupt Disable Register */ +#define REG_SSC_IMR (0x4000404CU) /**< \brief (SSC) Interrupt Mask Register */ +#define REG_SSC_WPMR (0x400040E4U) /**< \brief (SSC) Write Protect Mode Register */ +#define REG_SSC_WPSR (0x400040E8U) /**< \brief (SSC) Write Protect Status Register */ +#define REG_SSC_RPR (0x40004100U) /**< \brief (SSC) Receive Pointer Register */ +#define REG_SSC_RCR (0x40004104U) /**< \brief (SSC) Receive Counter Register */ +#define REG_SSC_TPR (0x40004108U) /**< \brief (SSC) Transmit Pointer Register */ +#define REG_SSC_TCR (0x4000410CU) /**< \brief (SSC) Transmit Counter Register */ +#define REG_SSC_RNPR (0x40004110U) /**< \brief (SSC) Receive Next Pointer Register */ +#define REG_SSC_RNCR (0x40004114U) /**< \brief (SSC) Receive Next Counter Register */ +#define REG_SSC_TNPR (0x40004118U) /**< \brief (SSC) Transmit Next Pointer Register */ +#define REG_SSC_TNCR (0x4000411CU) /**< \brief (SSC) Transmit Next Counter Register */ +#define REG_SSC_PTCR (0x40004120U) /**< \brief (SSC) Transfer Control Register */ +#define REG_SSC_PTSR (0x40004124U) /**< \brief (SSC) Transfer Status Register */ +#else +#define REG_SSC_CR (*(WoReg*)0x40004000U) /**< \brief (SSC) Control Register */ +#define REG_SSC_CMR (*(RwReg*)0x40004004U) /**< \brief (SSC) Clock Mode Register */ +#define REG_SSC_RCMR (*(RwReg*)0x40004010U) /**< \brief (SSC) Receive Clock Mode Register */ +#define REG_SSC_RFMR (*(RwReg*)0x40004014U) /**< \brief (SSC) Receive Frame Mode Register */ +#define REG_SSC_TCMR (*(RwReg*)0x40004018U) /**< \brief (SSC) Transmit Clock Mode Register */ +#define REG_SSC_TFMR (*(RwReg*)0x4000401CU) /**< \brief (SSC) Transmit Frame Mode Register */ +#define REG_SSC_RHR (*(RoReg*)0x40004020U) /**< \brief (SSC) Receive Holding Register */ +#define REG_SSC_THR (*(WoReg*)0x40004024U) /**< \brief (SSC) Transmit Holding Register */ +#define REG_SSC_RSHR (*(RoReg*)0x40004030U) /**< \brief (SSC) Receive Sync. Holding Register */ +#define REG_SSC_TSHR (*(RwReg*)0x40004034U) /**< \brief (SSC) Transmit Sync. Holding Register */ +#define REG_SSC_RC0R (*(RwReg*)0x40004038U) /**< \brief (SSC) Receive Compare 0 Register */ +#define REG_SSC_RC1R (*(RwReg*)0x4000403CU) /**< \brief (SSC) Receive Compare 1 Register */ +#define REG_SSC_SR (*(RoReg*)0x40004040U) /**< \brief (SSC) Status Register */ +#define REG_SSC_IER (*(WoReg*)0x40004044U) /**< \brief (SSC) Interrupt Enable Register */ +#define REG_SSC_IDR (*(WoReg*)0x40004048U) /**< \brief (SSC) Interrupt Disable Register */ +#define REG_SSC_IMR (*(RoReg*)0x4000404CU) /**< \brief (SSC) Interrupt Mask Register */ +#define REG_SSC_WPMR (*(RwReg*)0x400040E4U) /**< \brief (SSC) Write Protect Mode Register */ +#define REG_SSC_WPSR (*(RoReg*)0x400040E8U) /**< \brief (SSC) Write Protect Status Register */ +#define REG_SSC_RPR (*(RwReg*)0x40004100U) /**< \brief (SSC) Receive Pointer Register */ +#define REG_SSC_RCR (*(RwReg*)0x40004104U) /**< \brief (SSC) Receive Counter Register */ +#define REG_SSC_TPR (*(RwReg*)0x40004108U) /**< \brief (SSC) Transmit Pointer Register */ +#define REG_SSC_TCR (*(RwReg*)0x4000410CU) /**< \brief (SSC) Transmit Counter Register */ +#define REG_SSC_RNPR (*(RwReg*)0x40004110U) /**< \brief (SSC) Receive Next Pointer Register */ +#define REG_SSC_RNCR (*(RwReg*)0x40004114U) /**< \brief (SSC) Receive Next Counter Register */ +#define REG_SSC_TNPR (*(RwReg*)0x40004118U) /**< \brief (SSC) Transmit Next Pointer Register */ +#define REG_SSC_TNCR (*(RwReg*)0x4000411CU) /**< \brief (SSC) Transmit Next Counter Register */ +#define REG_SSC_PTCR (*(WoReg*)0x40004120U) /**< \brief (SSC) Transfer Control Register */ +#define REG_SSC_PTSR (*(RoReg*)0x40004124U) /**< \brief (SSC) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_SSC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_supc.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_supc.h new file mode 100644 index 000000000..7a05575e3 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_supc.h @@ -0,0 +1,50 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_SUPC_INSTANCE_ +#define _SAM3S_SUPC_INSTANCE_ + +/* ========== Register definition for SUPC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SUPC_CR (0x400E1410U) /**< \brief (SUPC) Supply Controller Control Register */ +#define REG_SUPC_SMMR (0x400E1414U) /**< \brief (SUPC) Supply Controller Supply Monitor Mode Register */ +#define REG_SUPC_MR (0x400E1418U) /**< \brief (SUPC) Supply Controller Mode Register */ +#define REG_SUPC_WUMR (0x400E141CU) /**< \brief (SUPC) Supply Controller Wake Up Mode Register */ +#define REG_SUPC_WUIR (0x400E1420U) /**< \brief (SUPC) Supply Controller Wake Up Inputs Register */ +#define REG_SUPC_SR (0x400E1424U) /**< \brief (SUPC) Supply Controller Status Register */ +#else +#define REG_SUPC_CR (*(WoReg*)0x400E1410U) /**< \brief (SUPC) Supply Controller Control Register */ +#define REG_SUPC_SMMR (*(RwReg*)0x400E1414U) /**< \brief (SUPC) Supply Controller Supply Monitor Mode Register */ +#define REG_SUPC_MR (*(RwReg*)0x400E1418U) /**< \brief (SUPC) Supply Controller Mode Register */ +#define REG_SUPC_WUMR (*(RwReg*)0x400E141CU) /**< \brief (SUPC) Supply Controller Wake Up Mode Register */ +#define REG_SUPC_WUIR (*(RwReg*)0x400E1420U) /**< \brief (SUPC) Supply Controller Wake Up Inputs Register */ +#define REG_SUPC_SR (*(RoReg*)0x400E1424U) /**< \brief (SUPC) Supply Controller Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_SUPC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_tc0.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_tc0.h new file mode 100644 index 000000000..24b829ad8 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_tc0.h @@ -0,0 +1,120 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_TC0_INSTANCE_ +#define _SAM3S_TC0_INSTANCE_ + +/* ========== Register definition for TC0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TC0_CCR0 (0x40010000U) /**< \brief (TC0) Channel Control Register (channel = 0) */ +#define REG_TC0_CMR0 (0x40010004U) /**< \brief (TC0) Channel Mode Register (channel = 0) */ +#define REG_TC0_SMMR0 (0x40010008U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC0_CV0 (0x40010010U) /**< \brief (TC0) Counter Value (channel = 0) */ +#define REG_TC0_RA0 (0x40010014U) /**< \brief (TC0) Register A (channel = 0) */ +#define REG_TC0_RB0 (0x40010018U) /**< \brief (TC0) Register B (channel = 0) */ +#define REG_TC0_RC0 (0x4001001CU) /**< \brief (TC0) Register C (channel = 0) */ +#define REG_TC0_SR0 (0x40010020U) /**< \brief (TC0) Status Register (channel = 0) */ +#define REG_TC0_IER0 (0x40010024U) /**< \brief (TC0) Interrupt Enable Register (channel = 0) */ +#define REG_TC0_IDR0 (0x40010028U) /**< \brief (TC0) Interrupt Disable Register (channel = 0) */ +#define REG_TC0_IMR0 (0x4001002CU) /**< \brief (TC0) Interrupt Mask Register (channel = 0) */ +#define REG_TC0_CCR1 (0x40010040U) /**< \brief (TC0) Channel Control Register (channel = 1) */ +#define REG_TC0_CMR1 (0x40010044U) /**< \brief (TC0) Channel Mode Register (channel = 1) */ +#define REG_TC0_SMMR1 (0x40010048U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC0_CV1 (0x40010050U) /**< \brief (TC0) Counter Value (channel = 1) */ +#define REG_TC0_RA1 (0x40010054U) /**< \brief (TC0) Register A (channel = 1) */ +#define REG_TC0_RB1 (0x40010058U) /**< \brief (TC0) Register B (channel = 1) */ +#define REG_TC0_RC1 (0x4001005CU) /**< \brief (TC0) Register C (channel = 1) */ +#define REG_TC0_SR1 (0x40010060U) /**< \brief (TC0) Status Register (channel = 1) */ +#define REG_TC0_IER1 (0x40010064U) /**< \brief (TC0) Interrupt Enable Register (channel = 1) */ +#define REG_TC0_IDR1 (0x40010068U) /**< \brief (TC0) Interrupt Disable Register (channel = 1) */ +#define REG_TC0_IMR1 (0x4001006CU) /**< \brief (TC0) Interrupt Mask Register (channel = 1) */ +#define REG_TC0_CCR2 (0x40010080U) /**< \brief (TC0) Channel Control Register (channel = 2) */ +#define REG_TC0_CMR2 (0x40010084U) /**< \brief (TC0) Channel Mode Register (channel = 2) */ +#define REG_TC0_SMMR2 (0x40010088U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC0_CV2 (0x40010090U) /**< \brief (TC0) Counter Value (channel = 2) */ +#define REG_TC0_RA2 (0x40010094U) /**< \brief (TC0) Register A (channel = 2) */ +#define REG_TC0_RB2 (0x40010098U) /**< \brief (TC0) Register B (channel = 2) */ +#define REG_TC0_RC2 (0x4001009CU) /**< \brief (TC0) Register C (channel = 2) */ +#define REG_TC0_SR2 (0x400100A0U) /**< \brief (TC0) Status Register (channel = 2) */ +#define REG_TC0_IER2 (0x400100A4U) /**< \brief (TC0) Interrupt Enable Register (channel = 2) */ +#define REG_TC0_IDR2 (0x400100A8U) /**< \brief (TC0) Interrupt Disable Register (channel = 2) */ +#define REG_TC0_IMR2 (0x400100ACU) /**< \brief (TC0) Interrupt Mask Register (channel = 2) */ +#define REG_TC0_BCR (0x400100C0U) /**< \brief (TC0) Block Control Register */ +#define REG_TC0_BMR (0x400100C4U) /**< \brief (TC0) Block Mode Register */ +#define REG_TC0_QIER (0x400100C8U) /**< \brief (TC0) QDEC Interrupt Enable Register */ +#define REG_TC0_QIDR (0x400100CCU) /**< \brief (TC0) QDEC Interrupt Disable Register */ +#define REG_TC0_QIMR (0x400100D0U) /**< \brief (TC0) QDEC Interrupt Mask Register */ +#define REG_TC0_QISR (0x400100D4U) /**< \brief (TC0) QDEC Interrupt Status Register */ +#define REG_TC0_FMR (0x400100D8U) /**< \brief (TC0) Fault Mode Register */ +#define REG_TC0_WPMR (0x400100E4U) /**< \brief (TC0) Write Protect Mode Register */ +#else +#define REG_TC0_CCR0 (*(WoReg*)0x40010000U) /**< \brief (TC0) Channel Control Register (channel = 0) */ +#define REG_TC0_CMR0 (*(RwReg*)0x40010004U) /**< \brief (TC0) Channel Mode Register (channel = 0) */ +#define REG_TC0_SMMR0 (*(RwReg*)0x40010008U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC0_CV0 (*(RoReg*)0x40010010U) /**< \brief (TC0) Counter Value (channel = 0) */ +#define REG_TC0_RA0 (*(RwReg*)0x40010014U) /**< \brief (TC0) Register A (channel = 0) */ +#define REG_TC0_RB0 (*(RwReg*)0x40010018U) /**< \brief (TC0) Register B (channel = 0) */ +#define REG_TC0_RC0 (*(RwReg*)0x4001001CU) /**< \brief (TC0) Register C (channel = 0) */ +#define REG_TC0_SR0 (*(RoReg*)0x40010020U) /**< \brief (TC0) Status Register (channel = 0) */ +#define REG_TC0_IER0 (*(WoReg*)0x40010024U) /**< \brief (TC0) Interrupt Enable Register (channel = 0) */ +#define REG_TC0_IDR0 (*(WoReg*)0x40010028U) /**< \brief (TC0) Interrupt Disable Register (channel = 0) */ +#define REG_TC0_IMR0 (*(RoReg*)0x4001002CU) /**< \brief (TC0) Interrupt Mask Register (channel = 0) */ +#define REG_TC0_CCR1 (*(WoReg*)0x40010040U) /**< \brief (TC0) Channel Control Register (channel = 1) */ +#define REG_TC0_CMR1 (*(RwReg*)0x40010044U) /**< \brief (TC0) Channel Mode Register (channel = 1) */ +#define REG_TC0_SMMR1 (*(RwReg*)0x40010048U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC0_CV1 (*(RoReg*)0x40010050U) /**< \brief (TC0) Counter Value (channel = 1) */ +#define REG_TC0_RA1 (*(RwReg*)0x40010054U) /**< \brief (TC0) Register A (channel = 1) */ +#define REG_TC0_RB1 (*(RwReg*)0x40010058U) /**< \brief (TC0) Register B (channel = 1) */ +#define REG_TC0_RC1 (*(RwReg*)0x4001005CU) /**< \brief (TC0) Register C (channel = 1) */ +#define REG_TC0_SR1 (*(RoReg*)0x40010060U) /**< \brief (TC0) Status Register (channel = 1) */ +#define REG_TC0_IER1 (*(WoReg*)0x40010064U) /**< \brief (TC0) Interrupt Enable Register (channel = 1) */ +#define REG_TC0_IDR1 (*(WoReg*)0x40010068U) /**< \brief (TC0) Interrupt Disable Register (channel = 1) */ +#define REG_TC0_IMR1 (*(RoReg*)0x4001006CU) /**< \brief (TC0) Interrupt Mask Register (channel = 1) */ +#define REG_TC0_CCR2 (*(WoReg*)0x40010080U) /**< \brief (TC0) Channel Control Register (channel = 2) */ +#define REG_TC0_CMR2 (*(RwReg*)0x40010084U) /**< \brief (TC0) Channel Mode Register (channel = 2) */ +#define REG_TC0_SMMR2 (*(RwReg*)0x40010088U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC0_CV2 (*(RoReg*)0x40010090U) /**< \brief (TC0) Counter Value (channel = 2) */ +#define REG_TC0_RA2 (*(RwReg*)0x40010094U) /**< \brief (TC0) Register A (channel = 2) */ +#define REG_TC0_RB2 (*(RwReg*)0x40010098U) /**< \brief (TC0) Register B (channel = 2) */ +#define REG_TC0_RC2 (*(RwReg*)0x4001009CU) /**< \brief (TC0) Register C (channel = 2) */ +#define REG_TC0_SR2 (*(RoReg*)0x400100A0U) /**< \brief (TC0) Status Register (channel = 2) */ +#define REG_TC0_IER2 (*(WoReg*)0x400100A4U) /**< \brief (TC0) Interrupt Enable Register (channel = 2) */ +#define REG_TC0_IDR2 (*(WoReg*)0x400100A8U) /**< \brief (TC0) Interrupt Disable Register (channel = 2) */ +#define REG_TC0_IMR2 (*(RoReg*)0x400100ACU) /**< \brief (TC0) Interrupt Mask Register (channel = 2) */ +#define REG_TC0_BCR (*(WoReg*)0x400100C0U) /**< \brief (TC0) Block Control Register */ +#define REG_TC0_BMR (*(RwReg*)0x400100C4U) /**< \brief (TC0) Block Mode Register */ +#define REG_TC0_QIER (*(WoReg*)0x400100C8U) /**< \brief (TC0) QDEC Interrupt Enable Register */ +#define REG_TC0_QIDR (*(WoReg*)0x400100CCU) /**< \brief (TC0) QDEC Interrupt Disable Register */ +#define REG_TC0_QIMR (*(RoReg*)0x400100D0U) /**< \brief (TC0) QDEC Interrupt Mask Register */ +#define REG_TC0_QISR (*(RoReg*)0x400100D4U) /**< \brief (TC0) QDEC Interrupt Status Register */ +#define REG_TC0_FMR (*(RwReg*)0x400100D8U) /**< \brief (TC0) Fault Mode Register */ +#define REG_TC0_WPMR (*(RwReg*)0x400100E4U) /**< \brief (TC0) Write Protect Mode Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_TC0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_tc1.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_tc1.h new file mode 100644 index 000000000..9a21a125f --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_tc1.h @@ -0,0 +1,120 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_TC1_INSTANCE_ +#define _SAM3S_TC1_INSTANCE_ + +/* ========== Register definition for TC1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TC1_CCR0 (0x40014000U) /**< \brief (TC1) Channel Control Register (channel = 0) */ +#define REG_TC1_CMR0 (0x40014004U) /**< \brief (TC1) Channel Mode Register (channel = 0) */ +#define REG_TC1_SMMR0 (0x40014008U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC1_CV0 (0x40014010U) /**< \brief (TC1) Counter Value (channel = 0) */ +#define REG_TC1_RA0 (0x40014014U) /**< \brief (TC1) Register A (channel = 0) */ +#define REG_TC1_RB0 (0x40014018U) /**< \brief (TC1) Register B (channel = 0) */ +#define REG_TC1_RC0 (0x4001401CU) /**< \brief (TC1) Register C (channel = 0) */ +#define REG_TC1_SR0 (0x40014020U) /**< \brief (TC1) Status Register (channel = 0) */ +#define REG_TC1_IER0 (0x40014024U) /**< \brief (TC1) Interrupt Enable Register (channel = 0) */ +#define REG_TC1_IDR0 (0x40014028U) /**< \brief (TC1) Interrupt Disable Register (channel = 0) */ +#define REG_TC1_IMR0 (0x4001402CU) /**< \brief (TC1) Interrupt Mask Register (channel = 0) */ +#define REG_TC1_CCR1 (0x40014040U) /**< \brief (TC1) Channel Control Register (channel = 1) */ +#define REG_TC1_CMR1 (0x40014044U) /**< \brief (TC1) Channel Mode Register (channel = 1) */ +#define REG_TC1_SMMR1 (0x40014048U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC1_CV1 (0x40014050U) /**< \brief (TC1) Counter Value (channel = 1) */ +#define REG_TC1_RA1 (0x40014054U) /**< \brief (TC1) Register A (channel = 1) */ +#define REG_TC1_RB1 (0x40014058U) /**< \brief (TC1) Register B (channel = 1) */ +#define REG_TC1_RC1 (0x4001405CU) /**< \brief (TC1) Register C (channel = 1) */ +#define REG_TC1_SR1 (0x40014060U) /**< \brief (TC1) Status Register (channel = 1) */ +#define REG_TC1_IER1 (0x40014064U) /**< \brief (TC1) Interrupt Enable Register (channel = 1) */ +#define REG_TC1_IDR1 (0x40014068U) /**< \brief (TC1) Interrupt Disable Register (channel = 1) */ +#define REG_TC1_IMR1 (0x4001406CU) /**< \brief (TC1) Interrupt Mask Register (channel = 1) */ +#define REG_TC1_CCR2 (0x40014080U) /**< \brief (TC1) Channel Control Register (channel = 2) */ +#define REG_TC1_CMR2 (0x40014084U) /**< \brief (TC1) Channel Mode Register (channel = 2) */ +#define REG_TC1_SMMR2 (0x40014088U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC1_CV2 (0x40014090U) /**< \brief (TC1) Counter Value (channel = 2) */ +#define REG_TC1_RA2 (0x40014094U) /**< \brief (TC1) Register A (channel = 2) */ +#define REG_TC1_RB2 (0x40014098U) /**< \brief (TC1) Register B (channel = 2) */ +#define REG_TC1_RC2 (0x4001409CU) /**< \brief (TC1) Register C (channel = 2) */ +#define REG_TC1_SR2 (0x400140A0U) /**< \brief (TC1) Status Register (channel = 2) */ +#define REG_TC1_IER2 (0x400140A4U) /**< \brief (TC1) Interrupt Enable Register (channel = 2) */ +#define REG_TC1_IDR2 (0x400140A8U) /**< \brief (TC1) Interrupt Disable Register (channel = 2) */ +#define REG_TC1_IMR2 (0x400140ACU) /**< \brief (TC1) Interrupt Mask Register (channel = 2) */ +#define REG_TC1_BCR (0x400140C0U) /**< \brief (TC1) Block Control Register */ +#define REG_TC1_BMR (0x400140C4U) /**< \brief (TC1) Block Mode Register */ +#define REG_TC1_QIER (0x400140C8U) /**< \brief (TC1) QDEC Interrupt Enable Register */ +#define REG_TC1_QIDR (0x400140CCU) /**< \brief (TC1) QDEC Interrupt Disable Register */ +#define REG_TC1_QIMR (0x400140D0U) /**< \brief (TC1) QDEC Interrupt Mask Register */ +#define REG_TC1_QISR (0x400140D4U) /**< \brief (TC1) QDEC Interrupt Status Register */ +#define REG_TC1_FMR (0x400140D8U) /**< \brief (TC1) Fault Mode Register */ +#define REG_TC1_WPMR (0x400140E4U) /**< \brief (TC1) Write Protect Mode Register */ +#else +#define REG_TC1_CCR0 (*(WoReg*)0x40014000U) /**< \brief (TC1) Channel Control Register (channel = 0) */ +#define REG_TC1_CMR0 (*(RwReg*)0x40014004U) /**< \brief (TC1) Channel Mode Register (channel = 0) */ +#define REG_TC1_SMMR0 (*(RwReg*)0x40014008U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC1_CV0 (*(RoReg*)0x40014010U) /**< \brief (TC1) Counter Value (channel = 0) */ +#define REG_TC1_RA0 (*(RwReg*)0x40014014U) /**< \brief (TC1) Register A (channel = 0) */ +#define REG_TC1_RB0 (*(RwReg*)0x40014018U) /**< \brief (TC1) Register B (channel = 0) */ +#define REG_TC1_RC0 (*(RwReg*)0x4001401CU) /**< \brief (TC1) Register C (channel = 0) */ +#define REG_TC1_SR0 (*(RoReg*)0x40014020U) /**< \brief (TC1) Status Register (channel = 0) */ +#define REG_TC1_IER0 (*(WoReg*)0x40014024U) /**< \brief (TC1) Interrupt Enable Register (channel = 0) */ +#define REG_TC1_IDR0 (*(WoReg*)0x40014028U) /**< \brief (TC1) Interrupt Disable Register (channel = 0) */ +#define REG_TC1_IMR0 (*(RoReg*)0x4001402CU) /**< \brief (TC1) Interrupt Mask Register (channel = 0) */ +#define REG_TC1_CCR1 (*(WoReg*)0x40014040U) /**< \brief (TC1) Channel Control Register (channel = 1) */ +#define REG_TC1_CMR1 (*(RwReg*)0x40014044U) /**< \brief (TC1) Channel Mode Register (channel = 1) */ +#define REG_TC1_SMMR1 (*(RwReg*)0x40014048U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC1_CV1 (*(RoReg*)0x40014050U) /**< \brief (TC1) Counter Value (channel = 1) */ +#define REG_TC1_RA1 (*(RwReg*)0x40014054U) /**< \brief (TC1) Register A (channel = 1) */ +#define REG_TC1_RB1 (*(RwReg*)0x40014058U) /**< \brief (TC1) Register B (channel = 1) */ +#define REG_TC1_RC1 (*(RwReg*)0x4001405CU) /**< \brief (TC1) Register C (channel = 1) */ +#define REG_TC1_SR1 (*(RoReg*)0x40014060U) /**< \brief (TC1) Status Register (channel = 1) */ +#define REG_TC1_IER1 (*(WoReg*)0x40014064U) /**< \brief (TC1) Interrupt Enable Register (channel = 1) */ +#define REG_TC1_IDR1 (*(WoReg*)0x40014068U) /**< \brief (TC1) Interrupt Disable Register (channel = 1) */ +#define REG_TC1_IMR1 (*(RoReg*)0x4001406CU) /**< \brief (TC1) Interrupt Mask Register (channel = 1) */ +#define REG_TC1_CCR2 (*(WoReg*)0x40014080U) /**< \brief (TC1) Channel Control Register (channel = 2) */ +#define REG_TC1_CMR2 (*(RwReg*)0x40014084U) /**< \brief (TC1) Channel Mode Register (channel = 2) */ +#define REG_TC1_SMMR2 (*(RwReg*)0x40014088U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC1_CV2 (*(RoReg*)0x40014090U) /**< \brief (TC1) Counter Value (channel = 2) */ +#define REG_TC1_RA2 (*(RwReg*)0x40014094U) /**< \brief (TC1) Register A (channel = 2) */ +#define REG_TC1_RB2 (*(RwReg*)0x40014098U) /**< \brief (TC1) Register B (channel = 2) */ +#define REG_TC1_RC2 (*(RwReg*)0x4001409CU) /**< \brief (TC1) Register C (channel = 2) */ +#define REG_TC1_SR2 (*(RoReg*)0x400140A0U) /**< \brief (TC1) Status Register (channel = 2) */ +#define REG_TC1_IER2 (*(WoReg*)0x400140A4U) /**< \brief (TC1) Interrupt Enable Register (channel = 2) */ +#define REG_TC1_IDR2 (*(WoReg*)0x400140A8U) /**< \brief (TC1) Interrupt Disable Register (channel = 2) */ +#define REG_TC1_IMR2 (*(RoReg*)0x400140ACU) /**< \brief (TC1) Interrupt Mask Register (channel = 2) */ +#define REG_TC1_BCR (*(WoReg*)0x400140C0U) /**< \brief (TC1) Block Control Register */ +#define REG_TC1_BMR (*(RwReg*)0x400140C4U) /**< \brief (TC1) Block Mode Register */ +#define REG_TC1_QIER (*(WoReg*)0x400140C8U) /**< \brief (TC1) QDEC Interrupt Enable Register */ +#define REG_TC1_QIDR (*(WoReg*)0x400140CCU) /**< \brief (TC1) QDEC Interrupt Disable Register */ +#define REG_TC1_QIMR (*(RoReg*)0x400140D0U) /**< \brief (TC1) QDEC Interrupt Mask Register */ +#define REG_TC1_QISR (*(RoReg*)0x400140D4U) /**< \brief (TC1) QDEC Interrupt Status Register */ +#define REG_TC1_FMR (*(RwReg*)0x400140D8U) /**< \brief (TC1) Fault Mode Register */ +#define REG_TC1_WPMR (*(RwReg*)0x400140E4U) /**< \brief (TC1) Write Protect Mode Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_TC1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_twi0.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_twi0.h new file mode 100644 index 000000000..cd8cb0a5b --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_twi0.h @@ -0,0 +1,80 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_TWI0_INSTANCE_ +#define _SAM3S_TWI0_INSTANCE_ + +/* ========== Register definition for TWI0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TWI0_CR (0x40018000U) /**< \brief (TWI0) Control Register */ +#define REG_TWI0_MMR (0x40018004U) /**< \brief (TWI0) Master Mode Register */ +#define REG_TWI0_SMR (0x40018008U) /**< \brief (TWI0) Slave Mode Register */ +#define REG_TWI0_IADR (0x4001800CU) /**< \brief (TWI0) Internal Address Register */ +#define REG_TWI0_CWGR (0x40018010U) /**< \brief (TWI0) Clock Waveform Generator Register */ +#define REG_TWI0_SR (0x40018020U) /**< \brief (TWI0) Status Register */ +#define REG_TWI0_IER (0x40018024U) /**< \brief (TWI0) Interrupt Enable Register */ +#define REG_TWI0_IDR (0x40018028U) /**< \brief (TWI0) Interrupt Disable Register */ +#define REG_TWI0_IMR (0x4001802CU) /**< \brief (TWI0) Interrupt Mask Register */ +#define REG_TWI0_RHR (0x40018030U) /**< \brief (TWI0) Receive Holding Register */ +#define REG_TWI0_THR (0x40018034U) /**< \brief (TWI0) Transmit Holding Register */ +#define REG_TWI0_RPR (0x40018100U) /**< \brief (TWI0) Receive Pointer Register */ +#define REG_TWI0_RCR (0x40018104U) /**< \brief (TWI0) Receive Counter Register */ +#define REG_TWI0_TPR (0x40018108U) /**< \brief (TWI0) Transmit Pointer Register */ +#define REG_TWI0_TCR (0x4001810CU) /**< \brief (TWI0) Transmit Counter Register */ +#define REG_TWI0_RNPR (0x40018110U) /**< \brief (TWI0) Receive Next Pointer Register */ +#define REG_TWI0_RNCR (0x40018114U) /**< \brief (TWI0) Receive Next Counter Register */ +#define REG_TWI0_TNPR (0x40018118U) /**< \brief (TWI0) Transmit Next Pointer Register */ +#define REG_TWI0_TNCR (0x4001811CU) /**< \brief (TWI0) Transmit Next Counter Register */ +#define REG_TWI0_PTCR (0x40018120U) /**< \brief (TWI0) Transfer Control Register */ +#define REG_TWI0_PTSR (0x40018124U) /**< \brief (TWI0) Transfer Status Register */ +#else +#define REG_TWI0_CR (*(WoReg*)0x40018000U) /**< \brief (TWI0) Control Register */ +#define REG_TWI0_MMR (*(RwReg*)0x40018004U) /**< \brief (TWI0) Master Mode Register */ +#define REG_TWI0_SMR (*(RwReg*)0x40018008U) /**< \brief (TWI0) Slave Mode Register */ +#define REG_TWI0_IADR (*(RwReg*)0x4001800CU) /**< \brief (TWI0) Internal Address Register */ +#define REG_TWI0_CWGR (*(RwReg*)0x40018010U) /**< \brief (TWI0) Clock Waveform Generator Register */ +#define REG_TWI0_SR (*(RoReg*)0x40018020U) /**< \brief (TWI0) Status Register */ +#define REG_TWI0_IER (*(WoReg*)0x40018024U) /**< \brief (TWI0) Interrupt Enable Register */ +#define REG_TWI0_IDR (*(WoReg*)0x40018028U) /**< \brief (TWI0) Interrupt Disable Register */ +#define REG_TWI0_IMR (*(RoReg*)0x4001802CU) /**< \brief (TWI0) Interrupt Mask Register */ +#define REG_TWI0_RHR (*(RoReg*)0x40018030U) /**< \brief (TWI0) Receive Holding Register */ +#define REG_TWI0_THR (*(WoReg*)0x40018034U) /**< \brief (TWI0) Transmit Holding Register */ +#define REG_TWI0_RPR (*(RwReg*)0x40018100U) /**< \brief (TWI0) Receive Pointer Register */ +#define REG_TWI0_RCR (*(RwReg*)0x40018104U) /**< \brief (TWI0) Receive Counter Register */ +#define REG_TWI0_TPR (*(RwReg*)0x40018108U) /**< \brief (TWI0) Transmit Pointer Register */ +#define REG_TWI0_TCR (*(RwReg*)0x4001810CU) /**< \brief (TWI0) Transmit Counter Register */ +#define REG_TWI0_RNPR (*(RwReg*)0x40018110U) /**< \brief (TWI0) Receive Next Pointer Register */ +#define REG_TWI0_RNCR (*(RwReg*)0x40018114U) /**< \brief (TWI0) Receive Next Counter Register */ +#define REG_TWI0_TNPR (*(RwReg*)0x40018118U) /**< \brief (TWI0) Transmit Next Pointer Register */ +#define REG_TWI0_TNCR (*(RwReg*)0x4001811CU) /**< \brief (TWI0) Transmit Next Counter Register */ +#define REG_TWI0_PTCR (*(WoReg*)0x40018120U) /**< \brief (TWI0) Transfer Control Register */ +#define REG_TWI0_PTSR (*(RoReg*)0x40018124U) /**< \brief (TWI0) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_TWI0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_twi1.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_twi1.h new file mode 100644 index 000000000..8a64ec1a3 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_twi1.h @@ -0,0 +1,80 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_TWI1_INSTANCE_ +#define _SAM3S_TWI1_INSTANCE_ + +/* ========== Register definition for TWI1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TWI1_CR (0x4001C000U) /**< \brief (TWI1) Control Register */ +#define REG_TWI1_MMR (0x4001C004U) /**< \brief (TWI1) Master Mode Register */ +#define REG_TWI1_SMR (0x4001C008U) /**< \brief (TWI1) Slave Mode Register */ +#define REG_TWI1_IADR (0x4001C00CU) /**< \brief (TWI1) Internal Address Register */ +#define REG_TWI1_CWGR (0x4001C010U) /**< \brief (TWI1) Clock Waveform Generator Register */ +#define REG_TWI1_SR (0x4001C020U) /**< \brief (TWI1) Status Register */ +#define REG_TWI1_IER (0x4001C024U) /**< \brief (TWI1) Interrupt Enable Register */ +#define REG_TWI1_IDR (0x4001C028U) /**< \brief (TWI1) Interrupt Disable Register */ +#define REG_TWI1_IMR (0x4001C02CU) /**< \brief (TWI1) Interrupt Mask Register */ +#define REG_TWI1_RHR (0x4001C030U) /**< \brief (TWI1) Receive Holding Register */ +#define REG_TWI1_THR (0x4001C034U) /**< \brief (TWI1) Transmit Holding Register */ +#define REG_TWI1_RPR (0x4001C100U) /**< \brief (TWI1) Receive Pointer Register */ +#define REG_TWI1_RCR (0x4001C104U) /**< \brief (TWI1) Receive Counter Register */ +#define REG_TWI1_TPR (0x4001C108U) /**< \brief (TWI1) Transmit Pointer Register */ +#define REG_TWI1_TCR (0x4001C10CU) /**< \brief (TWI1) Transmit Counter Register */ +#define REG_TWI1_RNPR (0x4001C110U) /**< \brief (TWI1) Receive Next Pointer Register */ +#define REG_TWI1_RNCR (0x4001C114U) /**< \brief (TWI1) Receive Next Counter Register */ +#define REG_TWI1_TNPR (0x4001C118U) /**< \brief (TWI1) Transmit Next Pointer Register */ +#define REG_TWI1_TNCR (0x4001C11CU) /**< \brief (TWI1) Transmit Next Counter Register */ +#define REG_TWI1_PTCR (0x4001C120U) /**< \brief (TWI1) Transfer Control Register */ +#define REG_TWI1_PTSR (0x4001C124U) /**< \brief (TWI1) Transfer Status Register */ +#else +#define REG_TWI1_CR (*(WoReg*)0x4001C000U) /**< \brief (TWI1) Control Register */ +#define REG_TWI1_MMR (*(RwReg*)0x4001C004U) /**< \brief (TWI1) Master Mode Register */ +#define REG_TWI1_SMR (*(RwReg*)0x4001C008U) /**< \brief (TWI1) Slave Mode Register */ +#define REG_TWI1_IADR (*(RwReg*)0x4001C00CU) /**< \brief (TWI1) Internal Address Register */ +#define REG_TWI1_CWGR (*(RwReg*)0x4001C010U) /**< \brief (TWI1) Clock Waveform Generator Register */ +#define REG_TWI1_SR (*(RoReg*)0x4001C020U) /**< \brief (TWI1) Status Register */ +#define REG_TWI1_IER (*(WoReg*)0x4001C024U) /**< \brief (TWI1) Interrupt Enable Register */ +#define REG_TWI1_IDR (*(WoReg*)0x4001C028U) /**< \brief (TWI1) Interrupt Disable Register */ +#define REG_TWI1_IMR (*(RoReg*)0x4001C02CU) /**< \brief (TWI1) Interrupt Mask Register */ +#define REG_TWI1_RHR (*(RoReg*)0x4001C030U) /**< \brief (TWI1) Receive Holding Register */ +#define REG_TWI1_THR (*(WoReg*)0x4001C034U) /**< \brief (TWI1) Transmit Holding Register */ +#define REG_TWI1_RPR (*(RwReg*)0x4001C100U) /**< \brief (TWI1) Receive Pointer Register */ +#define REG_TWI1_RCR (*(RwReg*)0x4001C104U) /**< \brief (TWI1) Receive Counter Register */ +#define REG_TWI1_TPR (*(RwReg*)0x4001C108U) /**< \brief (TWI1) Transmit Pointer Register */ +#define REG_TWI1_TCR (*(RwReg*)0x4001C10CU) /**< \brief (TWI1) Transmit Counter Register */ +#define REG_TWI1_RNPR (*(RwReg*)0x4001C110U) /**< \brief (TWI1) Receive Next Pointer Register */ +#define REG_TWI1_RNCR (*(RwReg*)0x4001C114U) /**< \brief (TWI1) Receive Next Counter Register */ +#define REG_TWI1_TNPR (*(RwReg*)0x4001C118U) /**< \brief (TWI1) Transmit Next Pointer Register */ +#define REG_TWI1_TNCR (*(RwReg*)0x4001C11CU) /**< \brief (TWI1) Transmit Next Counter Register */ +#define REG_TWI1_PTCR (*(WoReg*)0x4001C120U) /**< \brief (TWI1) Transfer Control Register */ +#define REG_TWI1_PTSR (*(RoReg*)0x4001C124U) /**< \brief (TWI1) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_TWI1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_uart0.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_uart0.h new file mode 100644 index 000000000..ae95c8d37 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_uart0.h @@ -0,0 +1,76 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_UART0_INSTANCE_ +#define _SAM3S_UART0_INSTANCE_ + +/* ========== Register definition for UART0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_UART0_CR (0x400E0600U) /**< \brief (UART0) Control Register */ +#define REG_UART0_MR (0x400E0604U) /**< \brief (UART0) Mode Register */ +#define REG_UART0_IER (0x400E0608U) /**< \brief (UART0) Interrupt Enable Register */ +#define REG_UART0_IDR (0x400E060CU) /**< \brief (UART0) Interrupt Disable Register */ +#define REG_UART0_IMR (0x400E0610U) /**< \brief (UART0) Interrupt Mask Register */ +#define REG_UART0_SR (0x400E0614U) /**< \brief (UART0) Status Register */ +#define REG_UART0_RHR (0x400E0618U) /**< \brief (UART0) Receive Holding Register */ +#define REG_UART0_THR (0x400E061CU) /**< \brief (UART0) Transmit Holding Register */ +#define REG_UART0_BRGR (0x400E0620U) /**< \brief (UART0) Baud Rate Generator Register */ +#define REG_UART0_RPR (0x400E0700U) /**< \brief (UART0) Receive Pointer Register */ +#define REG_UART0_RCR (0x400E0704U) /**< \brief (UART0) Receive Counter Register */ +#define REG_UART0_TPR (0x400E0708U) /**< \brief (UART0) Transmit Pointer Register */ +#define REG_UART0_TCR (0x400E070CU) /**< \brief (UART0) Transmit Counter Register */ +#define REG_UART0_RNPR (0x400E0710U) /**< \brief (UART0) Receive Next Pointer Register */ +#define REG_UART0_RNCR (0x400E0714U) /**< \brief (UART0) Receive Next Counter Register */ +#define REG_UART0_TNPR (0x400E0718U) /**< \brief (UART0) Transmit Next Pointer Register */ +#define REG_UART0_TNCR (0x400E071CU) /**< \brief (UART0) Transmit Next Counter Register */ +#define REG_UART0_PTCR (0x400E0720U) /**< \brief (UART0) Transfer Control Register */ +#define REG_UART0_PTSR (0x400E0724U) /**< \brief (UART0) Transfer Status Register */ +#else +#define REG_UART0_CR (*(WoReg*)0x400E0600U) /**< \brief (UART0) Control Register */ +#define REG_UART0_MR (*(RwReg*)0x400E0604U) /**< \brief (UART0) Mode Register */ +#define REG_UART0_IER (*(WoReg*)0x400E0608U) /**< \brief (UART0) Interrupt Enable Register */ +#define REG_UART0_IDR (*(WoReg*)0x400E060CU) /**< \brief (UART0) Interrupt Disable Register */ +#define REG_UART0_IMR (*(RoReg*)0x400E0610U) /**< \brief (UART0) Interrupt Mask Register */ +#define REG_UART0_SR (*(RoReg*)0x400E0614U) /**< \brief (UART0) Status Register */ +#define REG_UART0_RHR (*(RoReg*)0x400E0618U) /**< \brief (UART0) Receive Holding Register */ +#define REG_UART0_THR (*(WoReg*)0x400E061CU) /**< \brief (UART0) Transmit Holding Register */ +#define REG_UART0_BRGR (*(RwReg*)0x400E0620U) /**< \brief (UART0) Baud Rate Generator Register */ +#define REG_UART0_RPR (*(RwReg*)0x400E0700U) /**< \brief (UART0) Receive Pointer Register */ +#define REG_UART0_RCR (*(RwReg*)0x400E0704U) /**< \brief (UART0) Receive Counter Register */ +#define REG_UART0_TPR (*(RwReg*)0x400E0708U) /**< \brief (UART0) Transmit Pointer Register */ +#define REG_UART0_TCR (*(RwReg*)0x400E070CU) /**< \brief (UART0) Transmit Counter Register */ +#define REG_UART0_RNPR (*(RwReg*)0x400E0710U) /**< \brief (UART0) Receive Next Pointer Register */ +#define REG_UART0_RNCR (*(RwReg*)0x400E0714U) /**< \brief (UART0) Receive Next Counter Register */ +#define REG_UART0_TNPR (*(RwReg*)0x400E0718U) /**< \brief (UART0) Transmit Next Pointer Register */ +#define REG_UART0_TNCR (*(RwReg*)0x400E071CU) /**< \brief (UART0) Transmit Next Counter Register */ +#define REG_UART0_PTCR (*(WoReg*)0x400E0720U) /**< \brief (UART0) Transfer Control Register */ +#define REG_UART0_PTSR (*(RoReg*)0x400E0724U) /**< \brief (UART0) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_UART0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_uart1.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_uart1.h new file mode 100644 index 000000000..9a9a844ac --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_uart1.h @@ -0,0 +1,76 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_UART1_INSTANCE_ +#define _SAM3S_UART1_INSTANCE_ + +/* ========== Register definition for UART1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_UART1_CR (0x400E0800U) /**< \brief (UART1) Control Register */ +#define REG_UART1_MR (0x400E0804U) /**< \brief (UART1) Mode Register */ +#define REG_UART1_IER (0x400E0808U) /**< \brief (UART1) Interrupt Enable Register */ +#define REG_UART1_IDR (0x400E080CU) /**< \brief (UART1) Interrupt Disable Register */ +#define REG_UART1_IMR (0x400E0810U) /**< \brief (UART1) Interrupt Mask Register */ +#define REG_UART1_SR (0x400E0814U) /**< \brief (UART1) Status Register */ +#define REG_UART1_RHR (0x400E0818U) /**< \brief (UART1) Receive Holding Register */ +#define REG_UART1_THR (0x400E081CU) /**< \brief (UART1) Transmit Holding Register */ +#define REG_UART1_BRGR (0x400E0820U) /**< \brief (UART1) Baud Rate Generator Register */ +#define REG_UART1_RPR (0x400E0900U) /**< \brief (UART1) Receive Pointer Register */ +#define REG_UART1_RCR (0x400E0904U) /**< \brief (UART1) Receive Counter Register */ +#define REG_UART1_TPR (0x400E0908U) /**< \brief (UART1) Transmit Pointer Register */ +#define REG_UART1_TCR (0x400E090CU) /**< \brief (UART1) Transmit Counter Register */ +#define REG_UART1_RNPR (0x400E0910U) /**< \brief (UART1) Receive Next Pointer Register */ +#define REG_UART1_RNCR (0x400E0914U) /**< \brief (UART1) Receive Next Counter Register */ +#define REG_UART1_TNPR (0x400E0918U) /**< \brief (UART1) Transmit Next Pointer Register */ +#define REG_UART1_TNCR (0x400E091CU) /**< \brief (UART1) Transmit Next Counter Register */ +#define REG_UART1_PTCR (0x400E0920U) /**< \brief (UART1) Transfer Control Register */ +#define REG_UART1_PTSR (0x400E0924U) /**< \brief (UART1) Transfer Status Register */ +#else +#define REG_UART1_CR (*(WoReg*)0x400E0800U) /**< \brief (UART1) Control Register */ +#define REG_UART1_MR (*(RwReg*)0x400E0804U) /**< \brief (UART1) Mode Register */ +#define REG_UART1_IER (*(WoReg*)0x400E0808U) /**< \brief (UART1) Interrupt Enable Register */ +#define REG_UART1_IDR (*(WoReg*)0x400E080CU) /**< \brief (UART1) Interrupt Disable Register */ +#define REG_UART1_IMR (*(RoReg*)0x400E0810U) /**< \brief (UART1) Interrupt Mask Register */ +#define REG_UART1_SR (*(RoReg*)0x400E0814U) /**< \brief (UART1) Status Register */ +#define REG_UART1_RHR (*(RoReg*)0x400E0818U) /**< \brief (UART1) Receive Holding Register */ +#define REG_UART1_THR (*(WoReg*)0x400E081CU) /**< \brief (UART1) Transmit Holding Register */ +#define REG_UART1_BRGR (*(RwReg*)0x400E0820U) /**< \brief (UART1) Baud Rate Generator Register */ +#define REG_UART1_RPR (*(RwReg*)0x400E0900U) /**< \brief (UART1) Receive Pointer Register */ +#define REG_UART1_RCR (*(RwReg*)0x400E0904U) /**< \brief (UART1) Receive Counter Register */ +#define REG_UART1_TPR (*(RwReg*)0x400E0908U) /**< \brief (UART1) Transmit Pointer Register */ +#define REG_UART1_TCR (*(RwReg*)0x400E090CU) /**< \brief (UART1) Transmit Counter Register */ +#define REG_UART1_RNPR (*(RwReg*)0x400E0910U) /**< \brief (UART1) Receive Next Pointer Register */ +#define REG_UART1_RNCR (*(RwReg*)0x400E0914U) /**< \brief (UART1) Receive Next Counter Register */ +#define REG_UART1_TNPR (*(RwReg*)0x400E0918U) /**< \brief (UART1) Transmit Next Pointer Register */ +#define REG_UART1_TNCR (*(RwReg*)0x400E091CU) /**< \brief (UART1) Transmit Next Counter Register */ +#define REG_UART1_PTCR (*(WoReg*)0x400E0920U) /**< \brief (UART1) Transfer Control Register */ +#define REG_UART1_PTSR (*(RoReg*)0x400E0924U) /**< \brief (UART1) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_UART1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_udp.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_udp.h new file mode 100644 index 000000000..431799182 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_udp.h @@ -0,0 +1,62 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_UDP_INSTANCE_ +#define _SAM3S_UDP_INSTANCE_ + +/* ========== Register definition for UDP peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_UDP_FRM_NUM (0x40034000U) /**< \brief (UDP) Frame Number Register */ +#define REG_UDP_GLB_STAT (0x40034004U) /**< \brief (UDP) Global State Register */ +#define REG_UDP_FADDR (0x40034008U) /**< \brief (UDP) Function Address Register */ +#define REG_UDP_IER (0x40034010U) /**< \brief (UDP) Interrupt Enable Register */ +#define REG_UDP_IDR (0x40034014U) /**< \brief (UDP) Interrupt Disable Register */ +#define REG_UDP_IMR (0x40034018U) /**< \brief (UDP) Interrupt Mask Register */ +#define REG_UDP_ISR (0x4003401CU) /**< \brief (UDP) Interrupt Status Register */ +#define REG_UDP_ICR (0x40034020U) /**< \brief (UDP) Interrupt Clear Register */ +#define REG_UDP_RST_EP (0x40034028U) /**< \brief (UDP) Reset Endpoint Register */ +#define REG_UDP_CSR (0x40034030U) /**< \brief (UDP) Endpoint Control and Status Register */ +#define REG_UDP_FDR (0x40034050U) /**< \brief (UDP) Endpoint FIFO Data Register */ +#define REG_UDP_TXVC (0x40034074U) /**< \brief (UDP) Transceiver Control Register */ +#else +#define REG_UDP_FRM_NUM (*(RoReg*)0x40034000U) /**< \brief (UDP) Frame Number Register */ +#define REG_UDP_GLB_STAT (*(RwReg*)0x40034004U) /**< \brief (UDP) Global State Register */ +#define REG_UDP_FADDR (*(RwReg*)0x40034008U) /**< \brief (UDP) Function Address Register */ +#define REG_UDP_IER (*(WoReg*)0x40034010U) /**< \brief (UDP) Interrupt Enable Register */ +#define REG_UDP_IDR (*(WoReg*)0x40034014U) /**< \brief (UDP) Interrupt Disable Register */ +#define REG_UDP_IMR (*(RoReg*)0x40034018U) /**< \brief (UDP) Interrupt Mask Register */ +#define REG_UDP_ISR (*(RoReg*)0x4003401CU) /**< \brief (UDP) Interrupt Status Register */ +#define REG_UDP_ICR (*(WoReg*)0x40034020U) /**< \brief (UDP) Interrupt Clear Register */ +#define REG_UDP_RST_EP (*(RwReg*)0x40034028U) /**< \brief (UDP) Reset Endpoint Register */ +#define REG_UDP_CSR (*(RwReg*)0x40034030U) /**< \brief (UDP) Endpoint Control and Status Register */ +#define REG_UDP_FDR (*(RwReg*)0x40034050U) /**< \brief (UDP) Endpoint FIFO Data Register */ +#define REG_UDP_TXVC (*(RwReg*)0x40034074U) /**< \brief (UDP) Transceiver Control Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_UDP_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_usart0.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_usart0.h new file mode 100644 index 000000000..85a80872e --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_usart0.h @@ -0,0 +1,94 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_USART0_INSTANCE_ +#define _SAM3S_USART0_INSTANCE_ + +/* ========== Register definition for USART0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_USART0_CR (0x40024000U) /**< \brief (USART0) Control Register */ +#define REG_USART0_MR (0x40024004U) /**< \brief (USART0) Mode Register */ +#define REG_USART0_IER (0x40024008U) /**< \brief (USART0) Interrupt Enable Register */ +#define REG_USART0_IDR (0x4002400CU) /**< \brief (USART0) Interrupt Disable Register */ +#define REG_USART0_IMR (0x40024010U) /**< \brief (USART0) Interrupt Mask Register */ +#define REG_USART0_CSR (0x40024014U) /**< \brief (USART0) Channel Status Register */ +#define REG_USART0_RHR (0x40024018U) /**< \brief (USART0) Receiver Holding Register */ +#define REG_USART0_THR (0x4002401CU) /**< \brief (USART0) Transmitter Holding Register */ +#define REG_USART0_BRGR (0x40024020U) /**< \brief (USART0) Baud Rate Generator Register */ +#define REG_USART0_RTOR (0x40024024U) /**< \brief (USART0) Receiver Time-out Register */ +#define REG_USART0_TTGR (0x40024028U) /**< \brief (USART0) Transmitter Timeguard Register */ +#define REG_USART0_FIDI (0x40024040U) /**< \brief (USART0) FI DI Ratio Register */ +#define REG_USART0_NER (0x40024044U) /**< \brief (USART0) Number of Errors Register */ +#define REG_USART0_IF (0x4002404CU) /**< \brief (USART0) IrDA Filter Register */ +#define REG_USART0_MAN (0x40024050U) /**< \brief (USART0) Manchester Encoder Decoder Register */ +#define REG_USART0_WPMR (0x400240E4U) /**< \brief (USART0) Write Protect Mode Register */ +#define REG_USART0_WPSR (0x400240E8U) /**< \brief (USART0) Write Protect Status Register */ +#define REG_USART0_VERSION (0x400240FCU) /**< \brief (USART0) Version Register */ +#define REG_USART0_RPR (0x40024100U) /**< \brief (USART0) Receive Pointer Register */ +#define REG_USART0_RCR (0x40024104U) /**< \brief (USART0) Receive Counter Register */ +#define REG_USART0_TPR (0x40024108U) /**< \brief (USART0) Transmit Pointer Register */ +#define REG_USART0_TCR (0x4002410CU) /**< \brief (USART0) Transmit Counter Register */ +#define REG_USART0_RNPR (0x40024110U) /**< \brief (USART0) Receive Next Pointer Register */ +#define REG_USART0_RNCR (0x40024114U) /**< \brief (USART0) Receive Next Counter Register */ +#define REG_USART0_TNPR (0x40024118U) /**< \brief (USART0) Transmit Next Pointer Register */ +#define REG_USART0_TNCR (0x4002411CU) /**< \brief (USART0) Transmit Next Counter Register */ +#define REG_USART0_PTCR (0x40024120U) /**< \brief (USART0) Transfer Control Register */ +#define REG_USART0_PTSR (0x40024124U) /**< \brief (USART0) Transfer Status Register */ +#else +#define REG_USART0_CR (*(WoReg*)0x40024000U) /**< \brief (USART0) Control Register */ +#define REG_USART0_MR (*(RwReg*)0x40024004U) /**< \brief (USART0) Mode Register */ +#define REG_USART0_IER (*(WoReg*)0x40024008U) /**< \brief (USART0) Interrupt Enable Register */ +#define REG_USART0_IDR (*(WoReg*)0x4002400CU) /**< \brief (USART0) Interrupt Disable Register */ +#define REG_USART0_IMR (*(RoReg*)0x40024010U) /**< \brief (USART0) Interrupt Mask Register */ +#define REG_USART0_CSR (*(RoReg*)0x40024014U) /**< \brief (USART0) Channel Status Register */ +#define REG_USART0_RHR (*(RoReg*)0x40024018U) /**< \brief (USART0) Receiver Holding Register */ +#define REG_USART0_THR (*(WoReg*)0x4002401CU) /**< \brief (USART0) Transmitter Holding Register */ +#define REG_USART0_BRGR (*(RwReg*)0x40024020U) /**< \brief (USART0) Baud Rate Generator Register */ +#define REG_USART0_RTOR (*(RwReg*)0x40024024U) /**< \brief (USART0) Receiver Time-out Register */ +#define REG_USART0_TTGR (*(RwReg*)0x40024028U) /**< \brief (USART0) Transmitter Timeguard Register */ +#define REG_USART0_FIDI (*(RwReg*)0x40024040U) /**< \brief (USART0) FI DI Ratio Register */ +#define REG_USART0_NER (*(RoReg*)0x40024044U) /**< \brief (USART0) Number of Errors Register */ +#define REG_USART0_IF (*(RwReg*)0x4002404CU) /**< \brief (USART0) IrDA Filter Register */ +#define REG_USART0_MAN (*(RwReg*)0x40024050U) /**< \brief (USART0) Manchester Encoder Decoder Register */ +#define REG_USART0_WPMR (*(RwReg*)0x400240E4U) /**< \brief (USART0) Write Protect Mode Register */ +#define REG_USART0_WPSR (*(RoReg*)0x400240E8U) /**< \brief (USART0) Write Protect Status Register */ +#define REG_USART0_VERSION (*(RoReg*)0x400240FCU) /**< \brief (USART0) Version Register */ +#define REG_USART0_RPR (*(RwReg*)0x40024100U) /**< \brief (USART0) Receive Pointer Register */ +#define REG_USART0_RCR (*(RwReg*)0x40024104U) /**< \brief (USART0) Receive Counter Register */ +#define REG_USART0_TPR (*(RwReg*)0x40024108U) /**< \brief (USART0) Transmit Pointer Register */ +#define REG_USART0_TCR (*(RwReg*)0x4002410CU) /**< \brief (USART0) Transmit Counter Register */ +#define REG_USART0_RNPR (*(RwReg*)0x40024110U) /**< \brief (USART0) Receive Next Pointer Register */ +#define REG_USART0_RNCR (*(RwReg*)0x40024114U) /**< \brief (USART0) Receive Next Counter Register */ +#define REG_USART0_TNPR (*(RwReg*)0x40024118U) /**< \brief (USART0) Transmit Next Pointer Register */ +#define REG_USART0_TNCR (*(RwReg*)0x4002411CU) /**< \brief (USART0) Transmit Next Counter Register */ +#define REG_USART0_PTCR (*(WoReg*)0x40024120U) /**< \brief (USART0) Transfer Control Register */ +#define REG_USART0_PTSR (*(RoReg*)0x40024124U) /**< \brief (USART0) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_USART0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_usart1.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_usart1.h new file mode 100644 index 000000000..380eb086f --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_usart1.h @@ -0,0 +1,94 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_USART1_INSTANCE_ +#define _SAM3S_USART1_INSTANCE_ + +/* ========== Register definition for USART1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_USART1_CR (0x40028000U) /**< \brief (USART1) Control Register */ +#define REG_USART1_MR (0x40028004U) /**< \brief (USART1) Mode Register */ +#define REG_USART1_IER (0x40028008U) /**< \brief (USART1) Interrupt Enable Register */ +#define REG_USART1_IDR (0x4002800CU) /**< \brief (USART1) Interrupt Disable Register */ +#define REG_USART1_IMR (0x40028010U) /**< \brief (USART1) Interrupt Mask Register */ +#define REG_USART1_CSR (0x40028014U) /**< \brief (USART1) Channel Status Register */ +#define REG_USART1_RHR (0x40028018U) /**< \brief (USART1) Receiver Holding Register */ +#define REG_USART1_THR (0x4002801CU) /**< \brief (USART1) Transmitter Holding Register */ +#define REG_USART1_BRGR (0x40028020U) /**< \brief (USART1) Baud Rate Generator Register */ +#define REG_USART1_RTOR (0x40028024U) /**< \brief (USART1) Receiver Time-out Register */ +#define REG_USART1_TTGR (0x40028028U) /**< \brief (USART1) Transmitter Timeguard Register */ +#define REG_USART1_FIDI (0x40028040U) /**< \brief (USART1) FI DI Ratio Register */ +#define REG_USART1_NER (0x40028044U) /**< \brief (USART1) Number of Errors Register */ +#define REG_USART1_IF (0x4002804CU) /**< \brief (USART1) IrDA Filter Register */ +#define REG_USART1_MAN (0x40028050U) /**< \brief (USART1) Manchester Encoder Decoder Register */ +#define REG_USART1_WPMR (0x400280E4U) /**< \brief (USART1) Write Protect Mode Register */ +#define REG_USART1_WPSR (0x400280E8U) /**< \brief (USART1) Write Protect Status Register */ +#define REG_USART1_VERSION (0x400280FCU) /**< \brief (USART1) Version Register */ +#define REG_USART1_RPR (0x40028100U) /**< \brief (USART1) Receive Pointer Register */ +#define REG_USART1_RCR (0x40028104U) /**< \brief (USART1) Receive Counter Register */ +#define REG_USART1_TPR (0x40028108U) /**< \brief (USART1) Transmit Pointer Register */ +#define REG_USART1_TCR (0x4002810CU) /**< \brief (USART1) Transmit Counter Register */ +#define REG_USART1_RNPR (0x40028110U) /**< \brief (USART1) Receive Next Pointer Register */ +#define REG_USART1_RNCR (0x40028114U) /**< \brief (USART1) Receive Next Counter Register */ +#define REG_USART1_TNPR (0x40028118U) /**< \brief (USART1) Transmit Next Pointer Register */ +#define REG_USART1_TNCR (0x4002811CU) /**< \brief (USART1) Transmit Next Counter Register */ +#define REG_USART1_PTCR (0x40028120U) /**< \brief (USART1) Transfer Control Register */ +#define REG_USART1_PTSR (0x40028124U) /**< \brief (USART1) Transfer Status Register */ +#else +#define REG_USART1_CR (*(WoReg*)0x40028000U) /**< \brief (USART1) Control Register */ +#define REG_USART1_MR (*(RwReg*)0x40028004U) /**< \brief (USART1) Mode Register */ +#define REG_USART1_IER (*(WoReg*)0x40028008U) /**< \brief (USART1) Interrupt Enable Register */ +#define REG_USART1_IDR (*(WoReg*)0x4002800CU) /**< \brief (USART1) Interrupt Disable Register */ +#define REG_USART1_IMR (*(RoReg*)0x40028010U) /**< \brief (USART1) Interrupt Mask Register */ +#define REG_USART1_CSR (*(RoReg*)0x40028014U) /**< \brief (USART1) Channel Status Register */ +#define REG_USART1_RHR (*(RoReg*)0x40028018U) /**< \brief (USART1) Receiver Holding Register */ +#define REG_USART1_THR (*(WoReg*)0x4002801CU) /**< \brief (USART1) Transmitter Holding Register */ +#define REG_USART1_BRGR (*(RwReg*)0x40028020U) /**< \brief (USART1) Baud Rate Generator Register */ +#define REG_USART1_RTOR (*(RwReg*)0x40028024U) /**< \brief (USART1) Receiver Time-out Register */ +#define REG_USART1_TTGR (*(RwReg*)0x40028028U) /**< \brief (USART1) Transmitter Timeguard Register */ +#define REG_USART1_FIDI (*(RwReg*)0x40028040U) /**< \brief (USART1) FI DI Ratio Register */ +#define REG_USART1_NER (*(RoReg*)0x40028044U) /**< \brief (USART1) Number of Errors Register */ +#define REG_USART1_IF (*(RwReg*)0x4002804CU) /**< \brief (USART1) IrDA Filter Register */ +#define REG_USART1_MAN (*(RwReg*)0x40028050U) /**< \brief (USART1) Manchester Encoder Decoder Register */ +#define REG_USART1_WPMR (*(RwReg*)0x400280E4U) /**< \brief (USART1) Write Protect Mode Register */ +#define REG_USART1_WPSR (*(RoReg*)0x400280E8U) /**< \brief (USART1) Write Protect Status Register */ +#define REG_USART1_VERSION (*(RoReg*)0x400280FCU) /**< \brief (USART1) Version Register */ +#define REG_USART1_RPR (*(RwReg*)0x40028100U) /**< \brief (USART1) Receive Pointer Register */ +#define REG_USART1_RCR (*(RwReg*)0x40028104U) /**< \brief (USART1) Receive Counter Register */ +#define REG_USART1_TPR (*(RwReg*)0x40028108U) /**< \brief (USART1) Transmit Pointer Register */ +#define REG_USART1_TCR (*(RwReg*)0x4002810CU) /**< \brief (USART1) Transmit Counter Register */ +#define REG_USART1_RNPR (*(RwReg*)0x40028110U) /**< \brief (USART1) Receive Next Pointer Register */ +#define REG_USART1_RNCR (*(RwReg*)0x40028114U) /**< \brief (USART1) Receive Next Counter Register */ +#define REG_USART1_TNPR (*(RwReg*)0x40028118U) /**< \brief (USART1) Transmit Next Pointer Register */ +#define REG_USART1_TNCR (*(RwReg*)0x4002811CU) /**< \brief (USART1) Transmit Next Counter Register */ +#define REG_USART1_PTCR (*(WoReg*)0x40028120U) /**< \brief (USART1) Transfer Control Register */ +#define REG_USART1_PTSR (*(RoReg*)0x40028124U) /**< \brief (USART1) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_USART1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_wdt.h b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_wdt.h new file mode 100644 index 000000000..42d37576c --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/instance/instance_wdt.h @@ -0,0 +1,44 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_WDT_INSTANCE_ +#define _SAM3S_WDT_INSTANCE_ + +/* ========== Register definition for WDT peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_WDT_CR (0x400E1450U) /**< \brief (WDT) Control Register */ +#define REG_WDT_MR (0x400E1454U) /**< \brief (WDT) Mode Register */ +#define REG_WDT_SR (0x400E1458U) /**< \brief (WDT) Status Register */ +#else +#define REG_WDT_CR (*(WoReg*)0x400E1450U) /**< \brief (WDT) Control Register */ +#define REG_WDT_MR (*(RwReg*)0x400E1454U) /**< \brief (WDT) Mode Register */ +#define REG_WDT_SR (*(RoReg*)0x400E1458U) /**< \brief (WDT) Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S_WDT_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s1a.h b/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s1a.h new file mode 100644 index 000000000..f17c79fa4 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s1a.h @@ -0,0 +1,230 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S1A_PIO_ +#define _SAM3S1A_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA24D_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA25D_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ +#define PIO_PA26D_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ +#define PIO_PA27D_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ +#define PIO_PA28D_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA29D_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ +#define PIO_PA30D_PIODC6 (1u << 30) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA31D_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA23D_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA15D_PIODCEN1 (1u << 15) /**< \brief Pioa signal: PIODCEN1 */ +#define PIO_PA16D_PIODCEN2 (1u << 16) /**< \brief Pioa signal: PIODCEN2 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PA20A_RF (1u << 20) /**< \brief Ssc signal: RF */ +#define PIO_PA19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA17A_TD (1u << 17) /**< \brief Ssc signal: TD */ +#define PIO_PA15A_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA16A_TK (1u << 16) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 + +#endif /* _SAM3S1A_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s1b.h b/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s1b.h new file mode 100644 index 000000000..60b1f207b --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s1b.h @@ -0,0 +1,277 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S1B_PIO_ +#define _SAM3S1B_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA29C_MCCK (1u << 29) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA24D_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA25D_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ +#define PIO_PA26D_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ +#define PIO_PA27D_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ +#define PIO_PA28D_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA29D_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ +#define PIO_PA30D_PIODC6 (1u << 30) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA31D_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA23D_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA15D_PIODCEN1 (1u << 15) /**< \brief Pioa signal: PIODCEN1 */ +#define PIO_PA16D_PIODCEN2 (1u << 16) /**< \brief Pioa signal: PIODCEN2 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PA20A_RF (1u << 20) /**< \brief Ssc signal: RF */ +#define PIO_PA19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA17A_TD (1u << 17) /**< \brief Ssc signal: TD */ +#define PIO_PA15A_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA16A_TK (1u << 16) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 + +#endif /* _SAM3S1B_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s1c.h b/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s1c.h new file mode 100644 index 000000000..10c6b06ef --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s1c.h @@ -0,0 +1,395 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S1C_PIO_ +#define _SAM3S1C_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PC18A_A0 (1u << 18) /**< \brief Ebi signal: A0 */ +#define PIO_PC19A_A1 (1u << 19) /**< \brief Ebi signal: A1 */ +#define PIO_PC28A_A10 (1u << 28) /**< \brief Ebi signal: A10 */ +#define PIO_PC29A_A11 (1u << 29) /**< \brief Ebi signal: A11 */ +#define PIO_PC30A_A12 (1u << 30) /**< \brief Ebi signal: A12 */ +#define PIO_PC31A_A13 (1u << 31) /**< \brief Ebi signal: A13 */ +#define PIO_PA18C_A14 (1u << 18) /**< \brief Ebi signal: A14 */ +#define PIO_PA19C_A15 (1u << 19) /**< \brief Ebi signal: A15 */ +#define PIO_PA20C_A16 (1u << 20) /**< \brief Ebi signal: A16 */ +#define PIO_PA0C_A17 (1u << 0) /**< \brief Ebi signal: A17 */ +#define PIO_PA1C_A18 (1u << 1) /**< \brief Ebi signal: A18 */ +#define PIO_PA23C_A19 (1u << 23) /**< \brief Ebi signal: A19 */ +#define PIO_PC20A_A2 (1u << 20) /**< \brief Ebi signal: A2 */ +#define PIO_PA24C_A20 (1u << 24) /**< \brief Ebi signal: A20 */ +#define PIO_PC16A_A21 (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC16A_NANDALE (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC17A_A22 (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PC17A_NANDCLE (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PA25C_A23 (1u << 25) /**< \brief Ebi signal: A23 */ +#define PIO_PC21A_A3 (1u << 21) /**< \brief Ebi signal: A3 */ +#define PIO_PC22A_A4 (1u << 22) /**< \brief Ebi signal: A4 */ +#define PIO_PC23A_A5 (1u << 23) /**< \brief Ebi signal: A5 */ +#define PIO_PC24A_A6 (1u << 24) /**< \brief Ebi signal: A6 */ +#define PIO_PC25A_A7 (1u << 25) /**< \brief Ebi signal: A7 */ +#define PIO_PC26A_A8 (1u << 26) /**< \brief Ebi signal: A8 */ +#define PIO_PC27A_A9 (1u << 27) /**< \brief Ebi signal: A9 */ +#define PIO_PC0A_D0 (1u << 0) /**< \brief Ebi signal: D0 */ +#define PIO_PC1A_D1 (1u << 1) /**< \brief Ebi signal: D1 */ +#define PIO_PC2A_D2 (1u << 2) /**< \brief Ebi signal: D2 */ +#define PIO_PC3A_D3 (1u << 3) /**< \brief Ebi signal: D3 */ +#define PIO_PC4A_D4 (1u << 4) /**< \brief Ebi signal: D4 */ +#define PIO_PC5A_D5 (1u << 5) /**< \brief Ebi signal: D5 */ +#define PIO_PC6A_D6 (1u << 6) /**< \brief Ebi signal: D6 */ +#define PIO_PC7A_D7 (1u << 7) /**< \brief Ebi signal: D7 */ +#define PIO_PC9A_NANDOE (1u << 9) /**< \brief Ebi signal: NANDOE */ +#define PIO_PC10A_NANDWE (1u << 10) /**< \brief Ebi signal: NANDWE */ +#define PIO_PC14A_NCS0 (1u << 14) /**< \brief Ebi signal: NCS0 */ +#define PIO_PC15A_NCS1 (1u << 15) /**< \brief Ebi signal: NCS1 */ +#define PIO_PA22C_NCS2 (1u << 22) /**< \brief Ebi signal: NCS2 */ +#define PIO_PC12A_NCS3 (1u << 12) /**< \brief Ebi signal: NCS3 */ +#define PIO_PC11A_NRD (1u << 11) /**< \brief Ebi signal: NRD */ +#define PIO_PC13A_NWAIT (1u << 13) /**< \brief Ebi signal: NWAIT */ +#define PIO_PC8A_NWE (1u << 8) /**< \brief Ebi signal: NWE */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA29C_MCCK (1u << 29) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA24D_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA25D_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ +#define PIO_PA26D_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ +#define PIO_PA27D_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ +#define PIO_PA28D_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA29D_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ +#define PIO_PA30D_PIODC6 (1u << 30) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA31D_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA23D_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA15D_PIODCEN1 (1u << 15) /**< \brief Pioa signal: PIODCEN1 */ +#define PIO_PA16D_PIODCEN2 (1u << 16) /**< \brief Pioa signal: PIODCEN2 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PA20A_RF (1u << 20) /**< \brief Ssc signal: RF */ +#define PIO_PA19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA17A_TD (1u << 17) /**< \brief Ssc signal: TD */ +#define PIO_PA15A_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA16A_TK (1u << 16) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 + +#endif /* _SAM3S1C_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s2a.h b/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s2a.h new file mode 100644 index 000000000..7c195be1c --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s2a.h @@ -0,0 +1,230 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S2A_PIO_ +#define _SAM3S2A_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA24D_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA25D_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ +#define PIO_PA26D_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ +#define PIO_PA27D_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ +#define PIO_PA28D_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA29D_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ +#define PIO_PA30D_PIODC6 (1u << 30) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA31D_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA23D_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA15D_PIODCEN1 (1u << 15) /**< \brief Pioa signal: PIODCEN1 */ +#define PIO_PA16D_PIODCEN2 (1u << 16) /**< \brief Pioa signal: PIODCEN2 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PA20A_RF (1u << 20) /**< \brief Ssc signal: RF */ +#define PIO_PA19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA17A_TD (1u << 17) /**< \brief Ssc signal: TD */ +#define PIO_PA15A_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA16A_TK (1u << 16) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 + +#endif /* _SAM3S2A_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s2b.h b/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s2b.h new file mode 100644 index 000000000..21483f577 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s2b.h @@ -0,0 +1,277 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S2B_PIO_ +#define _SAM3S2B_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA29C_MCCK (1u << 29) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA24D_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA25D_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ +#define PIO_PA26D_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ +#define PIO_PA27D_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ +#define PIO_PA28D_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA29D_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ +#define PIO_PA30D_PIODC6 (1u << 30) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA31D_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA23D_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA15D_PIODCEN1 (1u << 15) /**< \brief Pioa signal: PIODCEN1 */ +#define PIO_PA16D_PIODCEN2 (1u << 16) /**< \brief Pioa signal: PIODCEN2 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PA20A_RF (1u << 20) /**< \brief Ssc signal: RF */ +#define PIO_PA19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA17A_TD (1u << 17) /**< \brief Ssc signal: TD */ +#define PIO_PA15A_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA16A_TK (1u << 16) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 + +#endif /* _SAM3S2B_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s2c.h b/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s2c.h new file mode 100644 index 000000000..42b5d82f8 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s2c.h @@ -0,0 +1,395 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S2C_PIO_ +#define _SAM3S2C_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PC18A_A0 (1u << 18) /**< \brief Ebi signal: A0 */ +#define PIO_PC19A_A1 (1u << 19) /**< \brief Ebi signal: A1 */ +#define PIO_PC28A_A10 (1u << 28) /**< \brief Ebi signal: A10 */ +#define PIO_PC29A_A11 (1u << 29) /**< \brief Ebi signal: A11 */ +#define PIO_PC30A_A12 (1u << 30) /**< \brief Ebi signal: A12 */ +#define PIO_PC31A_A13 (1u << 31) /**< \brief Ebi signal: A13 */ +#define PIO_PA18C_A14 (1u << 18) /**< \brief Ebi signal: A14 */ +#define PIO_PA19C_A15 (1u << 19) /**< \brief Ebi signal: A15 */ +#define PIO_PA20C_A16 (1u << 20) /**< \brief Ebi signal: A16 */ +#define PIO_PA0C_A17 (1u << 0) /**< \brief Ebi signal: A17 */ +#define PIO_PA1C_A18 (1u << 1) /**< \brief Ebi signal: A18 */ +#define PIO_PA23C_A19 (1u << 23) /**< \brief Ebi signal: A19 */ +#define PIO_PC20A_A2 (1u << 20) /**< \brief Ebi signal: A2 */ +#define PIO_PA24C_A20 (1u << 24) /**< \brief Ebi signal: A20 */ +#define PIO_PC16A_A21 (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC16A_NANDALE (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC17A_A22 (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PC17A_NANDCLE (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PA25C_A23 (1u << 25) /**< \brief Ebi signal: A23 */ +#define PIO_PC21A_A3 (1u << 21) /**< \brief Ebi signal: A3 */ +#define PIO_PC22A_A4 (1u << 22) /**< \brief Ebi signal: A4 */ +#define PIO_PC23A_A5 (1u << 23) /**< \brief Ebi signal: A5 */ +#define PIO_PC24A_A6 (1u << 24) /**< \brief Ebi signal: A6 */ +#define PIO_PC25A_A7 (1u << 25) /**< \brief Ebi signal: A7 */ +#define PIO_PC26A_A8 (1u << 26) /**< \brief Ebi signal: A8 */ +#define PIO_PC27A_A9 (1u << 27) /**< \brief Ebi signal: A9 */ +#define PIO_PC0A_D0 (1u << 0) /**< \brief Ebi signal: D0 */ +#define PIO_PC1A_D1 (1u << 1) /**< \brief Ebi signal: D1 */ +#define PIO_PC2A_D2 (1u << 2) /**< \brief Ebi signal: D2 */ +#define PIO_PC3A_D3 (1u << 3) /**< \brief Ebi signal: D3 */ +#define PIO_PC4A_D4 (1u << 4) /**< \brief Ebi signal: D4 */ +#define PIO_PC5A_D5 (1u << 5) /**< \brief Ebi signal: D5 */ +#define PIO_PC6A_D6 (1u << 6) /**< \brief Ebi signal: D6 */ +#define PIO_PC7A_D7 (1u << 7) /**< \brief Ebi signal: D7 */ +#define PIO_PC9A_NANDOE (1u << 9) /**< \brief Ebi signal: NANDOE */ +#define PIO_PC10A_NANDWE (1u << 10) /**< \brief Ebi signal: NANDWE */ +#define PIO_PC14A_NCS0 (1u << 14) /**< \brief Ebi signal: NCS0 */ +#define PIO_PC15A_NCS1 (1u << 15) /**< \brief Ebi signal: NCS1 */ +#define PIO_PA22C_NCS2 (1u << 22) /**< \brief Ebi signal: NCS2 */ +#define PIO_PC12A_NCS3 (1u << 12) /**< \brief Ebi signal: NCS3 */ +#define PIO_PC11A_NRD (1u << 11) /**< \brief Ebi signal: NRD */ +#define PIO_PC13A_NWAIT (1u << 13) /**< \brief Ebi signal: NWAIT */ +#define PIO_PC8A_NWE (1u << 8) /**< \brief Ebi signal: NWE */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA29C_MCCK (1u << 29) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA24D_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA25D_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ +#define PIO_PA26D_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ +#define PIO_PA27D_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ +#define PIO_PA28D_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA29D_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ +#define PIO_PA30D_PIODC6 (1u << 30) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA31D_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA23D_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA15D_PIODCEN1 (1u << 15) /**< \brief Pioa signal: PIODCEN1 */ +#define PIO_PA16D_PIODCEN2 (1u << 16) /**< \brief Pioa signal: PIODCEN2 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PA20A_RF (1u << 20) /**< \brief Ssc signal: RF */ +#define PIO_PA19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA17A_TD (1u << 17) /**< \brief Ssc signal: TD */ +#define PIO_PA15A_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA16A_TK (1u << 16) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 + +#endif /* _SAM3S2C_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s4a.h b/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s4a.h new file mode 100644 index 000000000..d73ff2705 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s4a.h @@ -0,0 +1,230 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S4A_PIO_ +#define _SAM3S4A_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA24D_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA25D_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ +#define PIO_PA26D_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ +#define PIO_PA27D_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ +#define PIO_PA28D_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA29D_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ +#define PIO_PA30D_PIODC6 (1u << 30) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA31D_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA23D_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA15D_PIODCEN1 (1u << 15) /**< \brief Pioa signal: PIODCEN1 */ +#define PIO_PA16D_PIODCEN2 (1u << 16) /**< \brief Pioa signal: PIODCEN2 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PA20A_RF (1u << 20) /**< \brief Ssc signal: RF */ +#define PIO_PA19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA17A_TD (1u << 17) /**< \brief Ssc signal: TD */ +#define PIO_PA15A_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA16A_TK (1u << 16) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 + +#endif /* _SAM3S4A_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s4b.h b/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s4b.h new file mode 100644 index 000000000..2d27ee5bc --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s4b.h @@ -0,0 +1,277 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S4B_PIO_ +#define _SAM3S4B_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA29C_MCCK (1u << 29) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA24D_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA25D_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ +#define PIO_PA26D_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ +#define PIO_PA27D_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ +#define PIO_PA28D_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA29D_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ +#define PIO_PA30D_PIODC6 (1u << 30) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA31D_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA23D_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA15D_PIODCEN1 (1u << 15) /**< \brief Pioa signal: PIODCEN1 */ +#define PIO_PA16D_PIODCEN2 (1u << 16) /**< \brief Pioa signal: PIODCEN2 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PA20A_RF (1u << 20) /**< \brief Ssc signal: RF */ +#define PIO_PA19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA17A_TD (1u << 17) /**< \brief Ssc signal: TD */ +#define PIO_PA15A_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA16A_TK (1u << 16) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 + +#endif /* _SAM3S4B_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s4c.h b/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s4c.h new file mode 100644 index 000000000..f9e512892 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/pio/pio_sam3s4c.h @@ -0,0 +1,395 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S4C_PIO_ +#define _SAM3S4C_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PC18A_A0 (1u << 18) /**< \brief Ebi signal: A0 */ +#define PIO_PC19A_A1 (1u << 19) /**< \brief Ebi signal: A1 */ +#define PIO_PC28A_A10 (1u << 28) /**< \brief Ebi signal: A10 */ +#define PIO_PC29A_A11 (1u << 29) /**< \brief Ebi signal: A11 */ +#define PIO_PC30A_A12 (1u << 30) /**< \brief Ebi signal: A12 */ +#define PIO_PC31A_A13 (1u << 31) /**< \brief Ebi signal: A13 */ +#define PIO_PA18C_A14 (1u << 18) /**< \brief Ebi signal: A14 */ +#define PIO_PA19C_A15 (1u << 19) /**< \brief Ebi signal: A15 */ +#define PIO_PA20C_A16 (1u << 20) /**< \brief Ebi signal: A16 */ +#define PIO_PA0C_A17 (1u << 0) /**< \brief Ebi signal: A17 */ +#define PIO_PA1C_A18 (1u << 1) /**< \brief Ebi signal: A18 */ +#define PIO_PA23C_A19 (1u << 23) /**< \brief Ebi signal: A19 */ +#define PIO_PC20A_A2 (1u << 20) /**< \brief Ebi signal: A2 */ +#define PIO_PA24C_A20 (1u << 24) /**< \brief Ebi signal: A20 */ +#define PIO_PC16A_A21 (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC16A_NANDALE (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC17A_A22 (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PC17A_NANDCLE (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PA25C_A23 (1u << 25) /**< \brief Ebi signal: A23 */ +#define PIO_PC21A_A3 (1u << 21) /**< \brief Ebi signal: A3 */ +#define PIO_PC22A_A4 (1u << 22) /**< \brief Ebi signal: A4 */ +#define PIO_PC23A_A5 (1u << 23) /**< \brief Ebi signal: A5 */ +#define PIO_PC24A_A6 (1u << 24) /**< \brief Ebi signal: A6 */ +#define PIO_PC25A_A7 (1u << 25) /**< \brief Ebi signal: A7 */ +#define PIO_PC26A_A8 (1u << 26) /**< \brief Ebi signal: A8 */ +#define PIO_PC27A_A9 (1u << 27) /**< \brief Ebi signal: A9 */ +#define PIO_PC0A_D0 (1u << 0) /**< \brief Ebi signal: D0 */ +#define PIO_PC1A_D1 (1u << 1) /**< \brief Ebi signal: D1 */ +#define PIO_PC2A_D2 (1u << 2) /**< \brief Ebi signal: D2 */ +#define PIO_PC3A_D3 (1u << 3) /**< \brief Ebi signal: D3 */ +#define PIO_PC4A_D4 (1u << 4) /**< \brief Ebi signal: D4 */ +#define PIO_PC5A_D5 (1u << 5) /**< \brief Ebi signal: D5 */ +#define PIO_PC6A_D6 (1u << 6) /**< \brief Ebi signal: D6 */ +#define PIO_PC7A_D7 (1u << 7) /**< \brief Ebi signal: D7 */ +#define PIO_PC9A_NANDOE (1u << 9) /**< \brief Ebi signal: NANDOE */ +#define PIO_PC10A_NANDWE (1u << 10) /**< \brief Ebi signal: NANDWE */ +#define PIO_PC14A_NCS0 (1u << 14) /**< \brief Ebi signal: NCS0 */ +#define PIO_PC15A_NCS1 (1u << 15) /**< \brief Ebi signal: NCS1 */ +#define PIO_PA22C_NCS2 (1u << 22) /**< \brief Ebi signal: NCS2 */ +#define PIO_PC12A_NCS3 (1u << 12) /**< \brief Ebi signal: NCS3 */ +#define PIO_PC11A_NRD (1u << 11) /**< \brief Ebi signal: NRD */ +#define PIO_PC13A_NWAIT (1u << 13) /**< \brief Ebi signal: NWAIT */ +#define PIO_PC8A_NWE (1u << 8) /**< \brief Ebi signal: NWE */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA29C_MCCK (1u << 29) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA24D_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA25D_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ +#define PIO_PA26D_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ +#define PIO_PA27D_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ +#define PIO_PA28D_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA29D_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ +#define PIO_PA30D_PIODC6 (1u << 30) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA31D_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA23D_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA15D_PIODCEN1 (1u << 15) /**< \brief Pioa signal: PIODCEN1 */ +#define PIO_PA16D_PIODCEN2 (1u << 16) /**< \brief Pioa signal: PIODCEN2 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PA20A_RF (1u << 20) /**< \brief Ssc signal: RF */ +#define PIO_PA19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA17A_TD (1u << 17) /**< \brief Ssc signal: TD */ +#define PIO_PA15A_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA16A_TK (1u << 16) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 + +#endif /* _SAM3S4C_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s.h b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s.h new file mode 100644 index 000000000..f5627c0df --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s.h @@ -0,0 +1,55 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S_ +#define _SAM3S_ + +#if defined __SAM3S1A__ + #include "sam3s1a.h" +#elif defined __SAM3S1B__ + #include "sam3s1b.h" +#elif defined __SAM3S1C__ + #include "sam3s1c.h" +#elif defined __SAM3S2A__ + #include "sam3s2a.h" +#elif defined __SAM3S2B__ + #include "sam3s2b.h" +#elif defined __SAM3S2C__ + #include "sam3s2c.h" +#elif defined __SAM3S4A__ + #include "sam3s4a.h" +#elif defined __SAM3S4B__ + #include "sam3s4b.h" +#elif defined __SAM3S4C__ + #include "sam3s4c.h" +#else + #error Library does not support the specified device. +#endif + +#endif /* _SAM3S_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s1a.h b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s1a.h new file mode 100644 index 000000000..bc8623a7b --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s1a.h @@ -0,0 +1,346 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S1A_ +#define _SAM3S1A_ + +/** \addtogroup SAM3S1A_definitions SAM3S1A definitions + This file defines all structures and symbols for SAM3S1A: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3S1A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S1A_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3S1A specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3S1A Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3S1A Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3S1A Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3S1A Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3S1A Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3S1A Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3S1A Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3S1A UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3S1A UART 1 (UART1) */ + PIOA_IRQn = 11, /**< 11 SAM3S1A Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3S1A Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 14, /**< 14 SAM3S1A USART 0 (USART0) */ + TWI0_IRQn = 19, /**< 19 SAM3S1A Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3S1A Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3S1A Serial Peripheral Interface (SPI) */ + SSC_IRQn = 22, /**< 22 SAM3S1A Synchronous Serial Controler (SSC) */ + TC0_IRQn = 23, /**< 23 SAM3S1A Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3S1A Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3S1A Timer/Counter 2 (TC2) */ + ADC_IRQn = 29, /**< 29 SAM3S1A Analog To Digital Converter (ADC) */ + PWM_IRQn = 31, /**< 31 SAM3S1A Pulse Width Modulation (PWM) */ + CRCCU_IRQn = 32, /**< 32 SAM3S1A CRC Calculation Unit (CRCCU) */ + ACC_IRQn = 33, /**< 33 SAM3S1A Analog Comparator (ACC) */ + UDP_IRQn = 34 /**< 34 SAM3S1A USB Device Port (UDP) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3S1A core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3S1A does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3S1A uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3S1A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S1A_api Peripheral Software API */ +/*@{*/ + +#include "component/component_acc.h" +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_crccu.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udp.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3S1A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S1A_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_udp.h" +#include "instance/instance_adc.h" +#include "instance/instance_acc.h" +#include "instance/instance_crccu.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3S1A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S1A_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controler (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +#define ID_CRCCU (32) /**< \brief CRC Calculation Unit (CRCCU) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_UDP (34) /**< \brief USB Device Port (UDP) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3S1A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S1A_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC (0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define UDP (0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define ACC (0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 (0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC ((Pdc *)0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define UDP ((Udp *)0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define ACC ((Acc *)0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 ((Pdc *)0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3S1A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S1A_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3s1a.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3S1A */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x10000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (256u) +#define IFLASH_NB_OF_LOCK_BITS (4u) +#define IRAM_SIZE (0x4000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3S1A */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (64000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3S1A_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s1b.h b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s1b.h new file mode 100644 index 000000000..f9b011d70 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s1b.h @@ -0,0 +1,369 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S1B_ +#define _SAM3S1B_ + +/** \addtogroup SAM3S1B_definitions SAM3S1B definitions + This file defines all structures and symbols for SAM3S1B: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3S1B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S1B_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3S1B specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3S1B Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3S1B Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3S1B Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3S1B Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3S1B Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3S1B Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3S1B Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3S1B UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3S1B UART 1 (UART1) */ + PIOA_IRQn = 11, /**< 11 SAM3S1B Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3S1B Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 14, /**< 14 SAM3S1B USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM3S1B USART 1 (USART1) */ + HSMCI_IRQn = 18, /**< 18 SAM3S1B Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 19, /**< 19 SAM3S1B Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3S1B Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3S1B Serial Peripheral Interface (SPI) */ + SSC_IRQn = 22, /**< 22 SAM3S1B Synchronous Serial Controler (SSC) */ + TC0_IRQn = 23, /**< 23 SAM3S1B Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3S1B Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3S1B Timer/Counter 2 (TC2) */ + ADC_IRQn = 29, /**< 29 SAM3S1B Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3S1B Digital To Analog Converter (DACC) */ + PWM_IRQn = 31, /**< 31 SAM3S1B Pulse Width Modulation (PWM) */ + CRCCU_IRQn = 32, /**< 32 SAM3S1B CRC Calculation Unit (CRCCU) */ + ACC_IRQn = 33, /**< 33 SAM3S1B Analog Comparator (ACC) */ + UDP_IRQn = 34 /**< 34 SAM3S1B USB Device Port (UDP) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3S1B core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3S1B does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3S1B uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3S1B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S1B_api Peripheral Software API */ +/*@{*/ + +#include "component/component_acc.h" +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_crccu.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udp.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3S1B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S1B_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_udp.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_acc.h" +#include "instance/instance_crccu.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3S1B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S1B_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controler (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +#define ID_CRCCU (32) /**< \brief CRC Calculation Unit (CRCCU) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_UDP (34) /**< \brief USB Device Port (UDP) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3S1B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S1B_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI (0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC (0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define UDP (0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC (0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 (0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI ((Pdc *)0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC ((Pdc *)0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define UDP ((Udp *)0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC ((Acc *)0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 ((Pdc *)0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3S1B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S1B_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3s1b.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3S1B */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x10000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (256u) +#define IFLASH_NB_OF_LOCK_BITS (4u) +#define IRAM_SIZE (0x4000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3S1B */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (64000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3S1B_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s1c.h b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s1c.h new file mode 100644 index 000000000..c849b07c8 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s1c.h @@ -0,0 +1,389 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S1C_ +#define _SAM3S1C_ + +/** \addtogroup SAM3S1C_definitions SAM3S1C definitions + This file defines all structures and symbols for SAM3S1C: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3S1C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S1C_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3S1C specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3S1C Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3S1C Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3S1C Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3S1C Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3S1C Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3S1C Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3S1C Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3S1C UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3S1C UART 1 (UART1) */ + SMC_IRQn = 10, /**< 10 SAM3S1C Static Memory Controller (SMC) */ + PIOA_IRQn = 11, /**< 11 SAM3S1C Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3S1C Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 13, /**< 13 SAM3S1C Parallel I/O Controller C (PIOC) */ + USART0_IRQn = 14, /**< 14 SAM3S1C USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM3S1C USART 1 (USART1) */ + HSMCI_IRQn = 18, /**< 18 SAM3S1C Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 19, /**< 19 SAM3S1C Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3S1C Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3S1C Serial Peripheral Interface (SPI) */ + SSC_IRQn = 22, /**< 22 SAM3S1C Synchronous Serial Controler (SSC) */ + TC0_IRQn = 23, /**< 23 SAM3S1C Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3S1C Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3S1C Timer/Counter 2 (TC2) */ + TC3_IRQn = 26, /**< 26 SAM3S1C Timer/Counter 3 (TC3) */ + TC4_IRQn = 27, /**< 27 SAM3S1C Timer/Counter 4 (TC4) */ + TC5_IRQn = 28, /**< 28 SAM3S1C Timer/Counter 5 (TC5) */ + ADC_IRQn = 29, /**< 29 SAM3S1C Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3S1C Digital To Analog Converter (DACC) */ + PWM_IRQn = 31, /**< 31 SAM3S1C Pulse Width Modulation (PWM) */ + CRCCU_IRQn = 32, /**< 32 SAM3S1C CRC Calculation Unit (CRCCU) */ + ACC_IRQn = 33, /**< 33 SAM3S1C Analog Comparator (ACC) */ + UDP_IRQn = 34 /**< 34 SAM3S1C USB Device Port (UDP) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3S1C core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3S1C does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3S1C uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3S1C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S1C_api Peripheral Software API */ +/*@{*/ + +#include "component/component_acc.h" +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_crccu.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_smc.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udp.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3S1C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S1C_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_tc1.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_udp.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_acc.h" +#include "instance/instance_crccu.h" +#include "instance/instance_smc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_pioc.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3S1C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S1C_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_SMC (10) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (13) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controler (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_TC3 (26) /**< \brief Timer/Counter 3 (TC3) */ +#define ID_TC4 (27) /**< \brief Timer/Counter 4 (TC4) */ +#define ID_TC5 (28) /**< \brief Timer/Counter 5 (TC5) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +#define ID_CRCCU (32) /**< \brief CRC Calculation Unit (CRCCU) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_UDP (34) /**< \brief USB Device Port (UDP) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3S1C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S1C_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI (0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC (0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40014000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define UDP (0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC (0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define SMC (0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 (0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI ((Pdc *)0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC ((Pdc *)0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40014000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define UDP ((Udp *)0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC ((Acc *)0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define SMC ((Smc *)0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 ((Pdc *)0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3S1C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S1C_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3s1c.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3S1C */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x10000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (256u) +#define IFLASH_NB_OF_LOCK_BITS (4u) +#define IRAM_SIZE (0x4000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3S1C */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (64000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3S1C_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s2a.h b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s2a.h new file mode 100644 index 000000000..5d21cc47a --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s2a.h @@ -0,0 +1,346 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S2A_ +#define _SAM3S2A_ + +/** \addtogroup SAM3S2A_definitions SAM3S2A definitions + This file defines all structures and symbols for SAM3S2A: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3S2A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S2A_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3S2A specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3S2A Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3S2A Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3S2A Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3S2A Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3S2A Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3S2A Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3S2A Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3S2A UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3S2A UART 1 (UART1) */ + PIOA_IRQn = 11, /**< 11 SAM3S2A Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3S2A Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 14, /**< 14 SAM3S2A USART 0 (USART0) */ + TWI0_IRQn = 19, /**< 19 SAM3S2A Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3S2A Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3S2A Serial Peripheral Interface (SPI) */ + SSC_IRQn = 22, /**< 22 SAM3S2A Synchronous Serial Controler (SSC) */ + TC0_IRQn = 23, /**< 23 SAM3S2A Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3S2A Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3S2A Timer/Counter 2 (TC2) */ + ADC_IRQn = 29, /**< 29 SAM3S2A Analog To Digital Converter (ADC) */ + PWM_IRQn = 31, /**< 31 SAM3S2A Pulse Width Modulation (PWM) */ + CRCCU_IRQn = 32, /**< 32 SAM3S2A CRC Calculation Unit (CRCCU) */ + ACC_IRQn = 33, /**< 33 SAM3S2A Analog Comparator (ACC) */ + UDP_IRQn = 34 /**< 34 SAM3S2A USB Device Port (UDP) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3S2A core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3S2A does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3S2A uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3S2A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S2A_api Peripheral Software API */ +/*@{*/ + +#include "component/component_acc.h" +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_crccu.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udp.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3S2A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S2A_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_udp.h" +#include "instance/instance_adc.h" +#include "instance/instance_acc.h" +#include "instance/instance_crccu.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3S2A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S2A_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controler (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +#define ID_CRCCU (32) /**< \brief CRC Calculation Unit (CRCCU) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_UDP (34) /**< \brief USB Device Port (UDP) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3S2A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S2A_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC (0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define UDP (0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define ACC (0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 (0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC ((Pdc *)0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define UDP ((Udp *)0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define ACC ((Acc *)0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 ((Pdc *)0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3S2A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S2A_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3s2a.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3S2A */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x20000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (512u) +#define IFLASH_NB_OF_LOCK_BITS (8u) +#define IRAM_SIZE (0x8000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3S2A */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (64000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3S2A_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s2b.h b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s2b.h new file mode 100644 index 000000000..859c3cbc3 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s2b.h @@ -0,0 +1,369 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S2B_ +#define _SAM3S2B_ + +/** \addtogroup SAM3S2B_definitions SAM3S2B definitions + This file defines all structures and symbols for SAM3S2B: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3S2B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S2B_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3S2B specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3S2B Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3S2B Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3S2B Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3S2B Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3S2B Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3S2B Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3S2B Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3S2B UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3S2B UART 1 (UART1) */ + PIOA_IRQn = 11, /**< 11 SAM3S2B Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3S2B Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 14, /**< 14 SAM3S2B USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM3S2B USART 1 (USART1) */ + HSMCI_IRQn = 18, /**< 18 SAM3S2B Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 19, /**< 19 SAM3S2B Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3S2B Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3S2B Serial Peripheral Interface (SPI) */ + SSC_IRQn = 22, /**< 22 SAM3S2B Synchronous Serial Controler (SSC) */ + TC0_IRQn = 23, /**< 23 SAM3S2B Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3S2B Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3S2B Timer/Counter 2 (TC2) */ + ADC_IRQn = 29, /**< 29 SAM3S2B Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3S2B Digital To Analog Converter (DACC) */ + PWM_IRQn = 31, /**< 31 SAM3S2B Pulse Width Modulation (PWM) */ + CRCCU_IRQn = 32, /**< 32 SAM3S2B CRC Calculation Unit (CRCCU) */ + ACC_IRQn = 33, /**< 33 SAM3S2B Analog Comparator (ACC) */ + UDP_IRQn = 34 /**< 34 SAM3S2B USB Device Port (UDP) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3S2B core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3S2B does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3S2B uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3S2B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S2B_api Peripheral Software API */ +/*@{*/ + +#include "component/component_acc.h" +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_crccu.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udp.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3S2B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S2B_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_udp.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_acc.h" +#include "instance/instance_crccu.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3S2B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S2B_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controler (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +#define ID_CRCCU (32) /**< \brief CRC Calculation Unit (CRCCU) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_UDP (34) /**< \brief USB Device Port (UDP) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3S2B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S2B_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI (0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC (0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define UDP (0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC (0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 (0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI ((Pdc *)0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC ((Pdc *)0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define UDP ((Udp *)0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC ((Acc *)0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 ((Pdc *)0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3S2B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S2B_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3s2b.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3S2B */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x20000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (512u) +#define IFLASH_NB_OF_LOCK_BITS (8u) +#define IRAM_SIZE (0x8000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3S2B */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (64000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3S2B_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s2c.h b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s2c.h new file mode 100644 index 000000000..26956ca4f --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s2c.h @@ -0,0 +1,389 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S2C_ +#define _SAM3S2C_ + +/** \addtogroup SAM3S2C_definitions SAM3S2C definitions + This file defines all structures and symbols for SAM3S2C: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3S2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S2C_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3S2C specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3S2C Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3S2C Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3S2C Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3S2C Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3S2C Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3S2C Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3S2C Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3S2C UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3S2C UART 1 (UART1) */ + SMC_IRQn = 10, /**< 10 SAM3S2C Static Memory Controller (SMC) */ + PIOA_IRQn = 11, /**< 11 SAM3S2C Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3S2C Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 13, /**< 13 SAM3S2C Parallel I/O Controller C (PIOC) */ + USART0_IRQn = 14, /**< 14 SAM3S2C USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM3S2C USART 1 (USART1) */ + HSMCI_IRQn = 18, /**< 18 SAM3S2C Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 19, /**< 19 SAM3S2C Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3S2C Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3S2C Serial Peripheral Interface (SPI) */ + SSC_IRQn = 22, /**< 22 SAM3S2C Synchronous Serial Controler (SSC) */ + TC0_IRQn = 23, /**< 23 SAM3S2C Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3S2C Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3S2C Timer/Counter 2 (TC2) */ + TC3_IRQn = 26, /**< 26 SAM3S2C Timer/Counter 3 (TC3) */ + TC4_IRQn = 27, /**< 27 SAM3S2C Timer/Counter 4 (TC4) */ + TC5_IRQn = 28, /**< 28 SAM3S2C Timer/Counter 5 (TC5) */ + ADC_IRQn = 29, /**< 29 SAM3S2C Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3S2C Digital To Analog Converter (DACC) */ + PWM_IRQn = 31, /**< 31 SAM3S2C Pulse Width Modulation (PWM) */ + CRCCU_IRQn = 32, /**< 32 SAM3S2C CRC Calculation Unit (CRCCU) */ + ACC_IRQn = 33, /**< 33 SAM3S2C Analog Comparator (ACC) */ + UDP_IRQn = 34 /**< 34 SAM3S2C USB Device Port (UDP) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3S2C core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3S2C does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3S2C uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3S2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S2C_api Peripheral Software API */ +/*@{*/ + +#include "component/component_acc.h" +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_crccu.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_smc.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udp.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3S2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S2C_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_tc1.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_udp.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_acc.h" +#include "instance/instance_crccu.h" +#include "instance/instance_smc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_pioc.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3S2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S2C_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_SMC (10) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (13) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controler (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_TC3 (26) /**< \brief Timer/Counter 3 (TC3) */ +#define ID_TC4 (27) /**< \brief Timer/Counter 4 (TC4) */ +#define ID_TC5 (28) /**< \brief Timer/Counter 5 (TC5) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +#define ID_CRCCU (32) /**< \brief CRC Calculation Unit (CRCCU) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_UDP (34) /**< \brief USB Device Port (UDP) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3S2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S2C_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI (0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC (0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40014000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define UDP (0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC (0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define SMC (0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 (0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI ((Pdc *)0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC ((Pdc *)0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40014000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define UDP ((Udp *)0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC ((Acc *)0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define SMC ((Smc *)0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 ((Pdc *)0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3S2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S2C_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3s2c.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3S2C */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x20000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (512u) +#define IFLASH_NB_OF_LOCK_BITS (8u) +#define IRAM_SIZE (0x8000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3S2C */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (64000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3S2C_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s4a.h b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s4a.h new file mode 100644 index 000000000..9e8974820 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s4a.h @@ -0,0 +1,346 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S4A_ +#define _SAM3S4A_ + +/** \addtogroup SAM3S4A_definitions SAM3S4A definitions + This file defines all structures and symbols for SAM3S4A: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3S4A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S4A_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3S4A specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3S4A Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3S4A Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3S4A Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3S4A Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3S4A Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3S4A Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3S4A Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3S4A UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3S4A UART 1 (UART1) */ + PIOA_IRQn = 11, /**< 11 SAM3S4A Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3S4A Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 14, /**< 14 SAM3S4A USART 0 (USART0) */ + TWI0_IRQn = 19, /**< 19 SAM3S4A Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3S4A Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3S4A Serial Peripheral Interface (SPI) */ + SSC_IRQn = 22, /**< 22 SAM3S4A Synchronous Serial Controler (SSC) */ + TC0_IRQn = 23, /**< 23 SAM3S4A Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3S4A Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3S4A Timer/Counter 2 (TC2) */ + ADC_IRQn = 29, /**< 29 SAM3S4A Analog To Digital Converter (ADC) */ + PWM_IRQn = 31, /**< 31 SAM3S4A Pulse Width Modulation (PWM) */ + CRCCU_IRQn = 32, /**< 32 SAM3S4A CRC Calculation Unit (CRCCU) */ + ACC_IRQn = 33, /**< 33 SAM3S4A Analog Comparator (ACC) */ + UDP_IRQn = 34 /**< 34 SAM3S4A USB Device Port (UDP) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3S4A core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3S4A does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3S4A uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3S4A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S4A_api Peripheral Software API */ +/*@{*/ + +#include "component/component_acc.h" +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_crccu.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udp.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3S4A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S4A_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_udp.h" +#include "instance/instance_adc.h" +#include "instance/instance_acc.h" +#include "instance/instance_crccu.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3S4A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S4A_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controler (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +#define ID_CRCCU (32) /**< \brief CRC Calculation Unit (CRCCU) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_UDP (34) /**< \brief USB Device Port (UDP) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3S4A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S4A_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC (0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define UDP (0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define ACC (0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 (0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC ((Pdc *)0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define UDP ((Udp *)0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define ACC ((Acc *)0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 ((Pdc *)0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3S4A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S4A_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3s4a.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3S4A */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x40000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (1024u) +#define IFLASH_NB_OF_LOCK_BITS (16u) +#define IRAM_SIZE (0xC000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3S4A */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (64000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3S4A_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s4b.h b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s4b.h new file mode 100644 index 000000000..c4f695e5d --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s4b.h @@ -0,0 +1,369 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S4B_ +#define _SAM3S4B_ + +/** \addtogroup SAM3S4B_definitions SAM3S4B definitions + This file defines all structures and symbols for SAM3S4B: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3S4B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S4B_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3S4B specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3S4B Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3S4B Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3S4B Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3S4B Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3S4B Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3S4B Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3S4B Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3S4B UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3S4B UART 1 (UART1) */ + PIOA_IRQn = 11, /**< 11 SAM3S4B Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3S4B Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 14, /**< 14 SAM3S4B USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM3S4B USART 1 (USART1) */ + HSMCI_IRQn = 18, /**< 18 SAM3S4B Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 19, /**< 19 SAM3S4B Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3S4B Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3S4B Serial Peripheral Interface (SPI) */ + SSC_IRQn = 22, /**< 22 SAM3S4B Synchronous Serial Controler (SSC) */ + TC0_IRQn = 23, /**< 23 SAM3S4B Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3S4B Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3S4B Timer/Counter 2 (TC2) */ + ADC_IRQn = 29, /**< 29 SAM3S4B Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3S4B Digital To Analog Converter (DACC) */ + PWM_IRQn = 31, /**< 31 SAM3S4B Pulse Width Modulation (PWM) */ + CRCCU_IRQn = 32, /**< 32 SAM3S4B CRC Calculation Unit (CRCCU) */ + ACC_IRQn = 33, /**< 33 SAM3S4B Analog Comparator (ACC) */ + UDP_IRQn = 34 /**< 34 SAM3S4B USB Device Port (UDP) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3S4B core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3S4B does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3S4B uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3S4B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S4B_api Peripheral Software API */ +/*@{*/ + +#include "component/component_acc.h" +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_crccu.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udp.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3S4B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S4B_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_udp.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_acc.h" +#include "instance/instance_crccu.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3S4B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S4B_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controler (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +#define ID_CRCCU (32) /**< \brief CRC Calculation Unit (CRCCU) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_UDP (34) /**< \brief USB Device Port (UDP) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3S4B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S4B_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI (0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC (0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define UDP (0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC (0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 (0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI ((Pdc *)0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC ((Pdc *)0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define UDP ((Udp *)0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC ((Acc *)0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 ((Pdc *)0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3S4B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S4B_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3s4b.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3S4B */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x40000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (1024u) +#define IFLASH_NB_OF_LOCK_BITS (16u) +#define IRAM_SIZE (0xC000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3S4B */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (64000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3S4B_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s4c.h b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s4c.h new file mode 100644 index 000000000..f20237359 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/include/sam3s4c.h @@ -0,0 +1,389 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S4C_ +#define _SAM3S4C_ + +/** \addtogroup SAM3S4C_definitions SAM3S4C definitions + This file defines all structures and symbols for SAM3S4C: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3S4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S4C_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3S4C specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3S4C Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3S4C Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3S4C Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3S4C Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3S4C Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3S4C Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3S4C Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3S4C UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3S4C UART 1 (UART1) */ + SMC_IRQn = 10, /**< 10 SAM3S4C Static Memory Controller (SMC) */ + PIOA_IRQn = 11, /**< 11 SAM3S4C Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3S4C Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 13, /**< 13 SAM3S4C Parallel I/O Controller C (PIOC) */ + USART0_IRQn = 14, /**< 14 SAM3S4C USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM3S4C USART 1 (USART1) */ + HSMCI_IRQn = 18, /**< 18 SAM3S4C Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 19, /**< 19 SAM3S4C Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3S4C Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3S4C Serial Peripheral Interface (SPI) */ + SSC_IRQn = 22, /**< 22 SAM3S4C Synchronous Serial Controler (SSC) */ + TC0_IRQn = 23, /**< 23 SAM3S4C Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3S4C Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3S4C Timer/Counter 2 (TC2) */ + TC3_IRQn = 26, /**< 26 SAM3S4C Timer/Counter 3 (TC3) */ + TC4_IRQn = 27, /**< 27 SAM3S4C Timer/Counter 4 (TC4) */ + TC5_IRQn = 28, /**< 28 SAM3S4C Timer/Counter 5 (TC5) */ + ADC_IRQn = 29, /**< 29 SAM3S4C Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3S4C Digital To Analog Converter (DACC) */ + PWM_IRQn = 31, /**< 31 SAM3S4C Pulse Width Modulation (PWM) */ + CRCCU_IRQn = 32, /**< 32 SAM3S4C CRC Calculation Unit (CRCCU) */ + ACC_IRQn = 33, /**< 33 SAM3S4C Analog Comparator (ACC) */ + UDP_IRQn = 34 /**< 34 SAM3S4C USB Device Port (UDP) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3S4C core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3S4C does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3S4C uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3S4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S4C_api Peripheral Software API */ +/*@{*/ + +#include "component/component_acc.h" +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_crccu.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_smc.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udp.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3S4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S4C_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_tc1.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_udp.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_acc.h" +#include "instance/instance_crccu.h" +#include "instance/instance_smc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_pioc.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3S4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S4C_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_SMC (10) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (13) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controler (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_TC3 (26) /**< \brief Timer/Counter 3 (TC3) */ +#define ID_TC4 (27) /**< \brief Timer/Counter 4 (TC4) */ +#define ID_TC5 (28) /**< \brief Timer/Counter 5 (TC5) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +#define ID_CRCCU (32) /**< \brief CRC Calculation Unit (CRCCU) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_UDP (34) /**< \brief USB Device Port (UDP) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3S4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S4C_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI (0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC (0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40014000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define UDP (0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC (0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define SMC (0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 (0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI ((Pdc *)0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC ((Pdc *)0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40014000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define UDP ((Udp *)0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC ((Acc *)0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define SMC ((Smc *)0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 ((Pdc *)0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3S4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S4C_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3s4c.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3S4C */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x40000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (1024u) +#define IFLASH_NB_OF_LOCK_BITS (16u) +#define IRAM_SIZE (0xC000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3S4C */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (64000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3S4C_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/source/templates/exceptions.c b/hardware/sam/system/libsam/cmsis/sam3s/source/templates/exceptions.c new file mode 100644 index 000000000..a7c89fcf9 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/source/templates/exceptions.c @@ -0,0 +1,143 @@ +/*! \file ********************************************************************* + * + * \brief This file contains the default exception handlers. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \note + * The exception handler has weak aliases. + * As they are weak aliases, any function with the same name will override + * this definition. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#include "exceptions.h" + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +#ifdef __GNUC__ +/* Cortex-M3 core handlers */ +//void Reset_Handler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +void NMI_Handler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +//void HardFault_Handler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +void MemManage_Handler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +void BusFault_Handler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +void UsageFault_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVC_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void DebugMon_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void ACC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void ADC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void CRCCU_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void DAC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void EEFC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void MCI_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOA_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOB_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PMC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PWM_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void RSTC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTT_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SMC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SPI_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SSC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SUPC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC2_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TWI0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TWI1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void UART0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void UART1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void USART0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void USART1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void USBD_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* __GNUC__ */ + +#ifdef __ICCARM__ +/* Cortex-M3 core handlers */ +//#pragma weak Reset_Handler=Dummy_Handler +#pragma weak NMI_Handler=Dummy_Handler +//#pragma weak HardFault_Handler=Dummy_Handler +#pragma weak MemManage_Handler=Dummy_Handler +#pragma weak BusFault_Handler=Dummy_Handler +#pragma weak UsageFault_Handler=Dummy_Handler +#pragma weak SVC_Handler=Dummy_Handler +#pragma weak DebugMon_Handler=Dummy_Handler +#pragma weak PendSV_Handler=Dummy_Handler +#pragma weak SysTick_Handler=Dummy_Handler + +/* Peripherals handlers */ +#pragma weak ACC_IrqHandler=Dummy_Handler +#pragma weak ADC_IrqHandler=Dummy_Handler +#pragma weak CRCCU_IrqHandler=Dummy_Handler +#pragma weak DAC_IrqHandler=Dummy_Handler +#pragma weak EEFC_IrqHandler=Dummy_Handler +#pragma weak MCI_IrqHandler=Dummy_Handler +#pragma weak PIOA_IrqHandler=Dummy_Handler +#pragma weak PIOB_IrqHandler=Dummy_Handler +#pragma weak PIOC_IrqHandler=Dummy_Handler +#pragma weak PMC_IrqHandler=Dummy_Handler +#pragma weak PWM_IrqHandler=Dummy_Handler +#pragma weak RSTC_IrqHandler=Dummy_Handler +#pragma weak RTC_IrqHandler=Dummy_Handler +#pragma weak RTT_IrqHandler=Dummy_Handler +#pragma weak SMC_IrqHandler=Dummy_Handler +#pragma weak SPI_IrqHandler=Dummy_Handler +#pragma weak SSC_IrqHandler=Dummy_Handler +#pragma weak SUPC_IrqHandler=Dummy_Handler +#pragma weak TC0_IrqHandler=Dummy_Handler +#pragma weak TC1_IrqHandler=Dummy_Handler +#pragma weak TC2_IrqHandler=Dummy_Handler +#pragma weak TC3_IrqHandler=Dummy_Handler +#pragma weak TC4_IrqHandler=Dummy_Handler +#pragma weak TC5_IrqHandler=Dummy_Handler +#pragma weak TWI0_IrqHandler=Dummy_Handler +#pragma weak TWI1_IrqHandler=Dummy_Handler +#pragma weak UART0_IrqHandler=Dummy_Handler +#pragma weak UART1_IrqHandler=Dummy_Handler +#pragma weak USART0_IrqHandler=Dummy_Handler +#pragma weak USART1_IrqHandler=Dummy_Handler +#pragma weak USBD_IrqHandler=Dummy_Handler +#pragma weak WDT_IrqHandler=Dummy_Handler +#endif /* __ICCARM__ */ + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/source/templates/exceptions.h b/hardware/sam/system/libsam/cmsis/sam3s/source/templates/exceptions.h new file mode 100644 index 000000000..9fe540757 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/source/templates/exceptions.h @@ -0,0 +1,88 @@ +/*! \file ********************************************************************* + * + * \brief This file contains the interface for default exception handlers. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#ifndef EXCEPTIONS_H_INCLUDED +#define EXCEPTIONS_H_INCLUDED + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +/* Function prototype for exception table items (interrupt handler). */ +typedef void (*IntFunc) (void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M3 core handlers */ +void Reset_Handler(void); +void NMI_Handler(void); +void HardFault_Handler(void); +void MemManage_Handler(void); +void BusFault_Handler(void); +void UsageFault_Handler(void); +void SVC_Handler(void); +void DebugMon_Handler(void); +void PendSV_Handler(void); +void SysTick_Handler(void); + +/* Peripherals handlers */ +void ACC_IrqHandler(void); +void ADC_IrqHandler(void); +void CRCCU_IrqHandler(void); +void DAC_IrqHandler(void); +void EEFC_IrqHandler(void); +void MCI_IrqHandler(void); +void PIOA_IrqHandler(void); +void PIOB_IrqHandler(void); +void PIOC_IrqHandler(void); +void PMC_IrqHandler(void); +void PWM_IrqHandler(void); +void RSTC_IrqHandler(void); +void RTC_IrqHandler(void); +void RTT_IrqHandler(void); +void SMC_IrqHandler(void); +void SPI_IrqHandler(void); +void SSC_IrqHandler(void); +void SUPC_IrqHandler(void); +void TC0_IrqHandler(void); +void TC1_IrqHandler(void); +void TC2_IrqHandler(void); +void TC3_IrqHandler(void); +void TC4_IrqHandler(void); +void TC5_IrqHandler(void); +void TWI0_IrqHandler(void); +void TWI1_IrqHandler(void); +void UART0_IrqHandler(void); +void UART1_IrqHandler(void); +void USART0_IrqHandler(void); +void USART1_IrqHandler(void); +void USBD_IrqHandler(void); +void WDT_IrqHandler(void); + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ + +#endif /* EXCEPTIONS_H_INCLUDED */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/source/templates/gcc/startup_sam3s.c b/hardware/sam/system/libsam/cmsis/sam3s/source/templates/gcc/startup_sam3s.c new file mode 100644 index 000000000..93d837d10 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/source/templates/gcc/startup_sam3s.c @@ -0,0 +1,137 @@ +/*! \file ********************************************************************* + * + * \brief Startup file for SAM3S. + * + * $asf_license$ + * + * This file defines common SAM series. + * + * - Compiler: ARMGCC + * - Supported devices: All SAM3S devices can be used. + * - AppNote: + * + ******************************************************************************/ + +#include "../exceptions.h" +#include "sam3.h" + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +IntFunc exception_table[] = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + (IntFunc) (&_estack), + Reset_Handler, + + NMI_Handler, + HardFault_Handler, + MemManage_Handler, + BusFault_Handler, + UsageFault_Handler, + 0, 0, 0, 0, /* Reserved */ + SVC_Handler, + DebugMon_Handler, + 0, /* Reserved */ + PendSV_Handler, + SysTick_Handler, + + /* Configurable interrupts */ + SUPC_IrqHandler, /* 0 Supply Controller */ + RSTC_IrqHandler, /* 1 Reset Controller */ + RTC_IrqHandler, /* 2 Real Time Clock */ + RTT_IrqHandler, /* 3 Real Time Timer */ + WDT_IrqHandler, /* 4 Watchdog Timer */ + PMC_IrqHandler, /* 5 PMC */ + EEFC_IrqHandler, /* 6 EEFC */ + Dummy_Handler, /* 7 Reserved */ + UART0_IrqHandler, /* 8 UART0 */ + UART1_IrqHandler, /* 9 UART1 */ + SMC_IrqHandler, /* 10 SMC */ + PIOA_IrqHandler, /* 11 Parallel IO Controller A */ + PIOB_IrqHandler, /* 12 Parallel IO Controller B */ + PIOC_IrqHandler, /* 13 Parallel IO Controller C */ + USART0_IrqHandler, /* 14 USART 0 */ + USART1_IrqHandler, /* 15 USART 1 */ + Dummy_Handler, /* 16 Reserved */ + Dummy_Handler, /* 17 Reserved */ + MCI_IrqHandler, /* 18 MCI */ + TWI0_IrqHandler, /* 19 TWI 0 */ + TWI1_IrqHandler, /* 20 TWI 1 */ + SPI_IrqHandler, /* 21 SPI */ + SSC_IrqHandler, /* 22 SSC */ + TC0_IrqHandler, /* 23 Timer Counter 0 */ + TC1_IrqHandler, /* 24 Timer Counter 1 */ + TC2_IrqHandler, /* 25 Timer Counter 2 */ + TC3_IrqHandler, /* 26 Timer Counter 3 */ + TC4_IrqHandler, /* 27 Timer Counter 4 */ + TC5_IrqHandler, /* 28 Timer Counter 5 */ + ADC_IrqHandler, /* 29 ADC controller */ + DAC_IrqHandler, /* 30 DAC controller */ + PWM_IrqHandler, /* 31 PWM */ + CRCCU_IrqHandler, /* 32 CRC Calculation Unit */ + ACC_IrqHandler, /* 33 Analog Comparator */ + USBD_IrqHandler, /* 34 USB Device Port */ + Dummy_Handler /* 35 not used */ +}; + +/* TEMPORARY PATCH FOR SCB */ +#define SCB_VTOR_TBLBASE_Pos 29 /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + if (((uint32_t) pSrc >= IRAM_ADDR) && ((uint32_t) pSrc < IRAM_ADDR + IRAM_SIZE)) { + SCB->VTOR |= 1 << SCB_VTOR_TBLBASE_Pos; + } + + /* Initialize the C library */ + __libc_init_array(); + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} diff --git a/hardware/sam/system/libsam/cmsis/sam3s/source/templates/iar/startup_sam3s.c b/hardware/sam/system/libsam/cmsis/sam3s/source/templates/iar/startup_sam3s.c new file mode 100644 index 000000000..73a55087b --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/source/templates/iar/startup_sam3s.c @@ -0,0 +1,113 @@ +/*! \file ********************************************************************* + * + * \brief Startup file for SAM3S. + * + * $asf_license$ + * + * This file defines common SAM series. + * + * - Compiler: IAR EWARM + * - Supported devices: All SAM3S devices can be used. + * - AppNote: + * + ******************************************************************************/ + +#include "../exceptions.h" +#include "sam3.h" + +typedef void (*intfunc) (void); +typedef union { intfunc __fun; void * __ptr; } intvec_elem; + +void __iar_program_start(void); +int __low_level_init(void); + +/* Exception Table */ +#pragma language=extended +#pragma segment="CSTACK" + +/* The name "__vector_table" has special meaning for C-SPY: */ +/* it is where the SP start value is found, and the NVIC vector */ +/* table register (VTOR) is initialized to this address if != 0 */ + +#pragma section = ".intvec" +#pragma location = ".intvec" +const intvec_elem __vector_table[] = { + {.__ptr = __sfe("CSTACK")}, + {Reset_Handler}, + + {NMI_Handler}, + {HardFault_Handler}, + {MemManage_Handler}, + {BusFault_Handler}, + {UsageFault_Handler}, + {0}, {0}, {0}, {0}, /* Reserved */ + {SVC_Handler}, + {DebugMon_Handler}, + {0}, /* Reserved */ + {PendSV_Handler}, + {SysTick_Handler}, + + /* Configurable interrupts */ + {SUPC_IrqHandler}, /* 0 Supply Controller */ + {RSTC_IrqHandler}, /* 1 Reset Controller */ + {RTC_IrqHandler}, /* 2 Real Time Clock */ + {RTT_IrqHandler}, /* 3 Real Time Timer */ + {WDT_IrqHandler}, /* 4 Watchdog Timer */ + {PMC_IrqHandler}, /* 5 PMC */ + {EEFC_IrqHandler}, /* 6 EEFC */ + {Dummy_Handler}, /* 7 Reserved */ + {UART0_IrqHandler}, /* 8 UART0 */ + {UART1_IrqHandler}, /* 9 UART1 */ + {SMC_IrqHandler}, /* 10 SMC */ + {PIOA_IrqHandler}, /* 11 Parallel IO Controller A */ + {PIOB_IrqHandler}, /* 12 Parallel IO Controller B */ + {PIOC_IrqHandler}, /* 13 Parallel IO Controller C */ + {USART0_IrqHandler}, /* 14 USART 0 */ + {USART1_IrqHandler}, /* 15 USART 1 */ + {Dummy_Handler}, /* 16 Reserved */ + {Dummy_Handler}, /* 17 Reserved */ + {MCI_IrqHandler}, /* 18 MCI */ + {TWI0_IrqHandler}, /* 19 TWI 0 */ + {TWI1_IrqHandler}, /* 20 TWI 1 */ + {SPI_IrqHandler}, /* 21 SPI */ + {SSC_IrqHandler}, /* 22 SSC */ + {TC0_IrqHandler}, /* 23 Timer Counter 0 */ + {TC1_IrqHandler}, /* 24 Timer Counter 1 */ + {TC2_IrqHandler}, /* 25 Timer Counter 2 */ + {TC3_IrqHandler}, /* 26 Timer Counter 3 */ + {TC4_IrqHandler}, /* 27 Timer Counter 4 */ + {TC5_IrqHandler}, /* 28 Timer Counter 5 */ + {ADC_IrqHandler}, /* 29 ADC controller */ + {DAC_IrqHandler}, /* 30 DAC controller */ + {PWM_IrqHandler}, /* 31 PWM */ + {CRCCU_IrqHandler}, /* 32 CRC Calculation Unit */ + {ACC_IrqHandler}, /* 33 Analog Comparator */ + {USBD_IrqHandler}, /* 34 USB Device Port */ + {Dummy_Handler} /* 35 not used */ +}; + +/**------------------------------------------------------------------------------ + * This is the code that gets called on processor reset. To initialize the + * device. + *------------------------------------------------------------------------------*/ +int __low_level_init(void) +{ + uint32_t *pSrc = __section_begin(".intvec"); + + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + if (((uint32_t) pSrc >= IRAM_ADDR) && ((uint32_t) pSrc < (uint32_t) IRAM_ADDR + (uint32_t) IRAM_SIZE)) { + SCB->VTOR |= (uint32_t) (1 << SCB_VTOR_TBLBASE_Pos); + } + + return 1; /* if return 0, the data sections will not be initialized */ +} + +/**------------------------------------------------------------------------------ + * This is the code that gets called on processor reset. To initialize the + * device. + *------------------------------------------------------------------------------*/ +void Reset_Handler(void) +{ + __iar_program_start(); +} diff --git a/hardware/sam/system/libsam/cmsis/sam3s/source/templates/system_sam3s.c b/hardware/sam/system/libsam/cmsis/sam3s/source/templates/system_sam3s.c new file mode 100644 index 000000000..6219a6437 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/source/templates/system_sam3s.c @@ -0,0 +1,197 @@ +/*! \file ********************************************************************* + * + * \brief Provides the low-level initialization functions that called + * on chip startup. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#include "sam3.h" + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +/* Clock Settings (64MHz) */ +#define SYS_BOARD_OSCOUNT (CKGR_MOR_MOSCXTST(0x8U)) +#define SYS_BOARD_PLLAR (CKGR_PLLAR_ONE \ + | CKGR_PLLAR_MULA(0xfU) \ + | CKGR_PLLAR_PLLACOUNT(0x3fU) \ + | CKGR_PLLAR_DIVA(0x3U)) +#define SYS_BOARD_MCKR (PMC_MCKR_PRES_CLK_1 | PMC_MCKR_CSS_PLLA_CLK) + +/* Clock Definitions */ +#define SYS_FREQ_XTAL_32K (32768UL) /* External 32K crystal frequency */ +#define SYS_FREQ_XTAL_XTAL12M (12000000UL) /* External 12M crystal frequency */ + +#define SYS_FREQ_FWS_0 (17000000UL) /* Maximum operating frequency when FWS is 0 */ +#define SYS_FREQ_FWS_1 (30000000UL) /* Maximum operating frequency when FWS is 1 */ +#define SYS_FREQ_FWS_2 (54000000UL) /* Maximum operating frequency when FWS is 2 */ + +#define SYS_CKGR_MOR_KEY_VALUE CKGR_MOR_KEY(0x37) /* Key to unlock MOR register */ + +/* FIXME: should be generated by sock */ +uint32_t SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + +/** + * \brief Setup the microcontroller system. + * Initialize the System and update the SystemFrequency variable. + */ +void SystemInit(void) +{ + /* Set 3 FWS for Embedded Flash Access */ + EFC->EEFC_FMR = EEFC_FMR_FWS(CHIP_FLASH_WAIT_STATE); + + /* Initialize main oscillator */ + if (!(PMC->CKGR_MOR & CKGR_MOR_MOSCSEL)) { + PMC->CKGR_MOR = SYS_CKGR_MOR_KEY_VALUE | SYS_BOARD_OSCOUNT | + CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN; + while (!(PMC->PMC_SR & PMC_SR_MOSCXTS)) { + } + } + + /* Switch to 3-20MHz Xtal oscillator */ + PMC->CKGR_MOR = SYS_CKGR_MOR_KEY_VALUE | SYS_BOARD_OSCOUNT | + CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN | CKGR_MOR_MOSCSEL; + + while (!(PMC->PMC_SR & PMC_SR_MOSCSELS)) { + } + PMC->PMC_MCKR = (PMC->PMC_MCKR & ~(uint32_t)PMC_MCKR_CSS_Msk) | + PMC_MCKR_CSS_MAIN_CLK; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)) { + } + + /* Initialize PLLA */ + PMC->CKGR_PLLAR = SYS_BOARD_PLLAR; + while (!(PMC->PMC_SR & PMC_SR_LOCKA)) { + } + + /* Switch to main clock */ + PMC->PMC_MCKR = (SYS_BOARD_MCKR & ~PMC_MCKR_CSS_Msk) | PMC_MCKR_CSS_MAIN_CLK; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)) { + } + + /* Switch to PLLA */ + PMC->PMC_MCKR = SYS_BOARD_MCKR; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)) { + } + + SystemCoreClock = CHIP_FREQ_CPU_MAX; +} + +void SystemCoreClockUpdate(void) +{ + /* Determine clock frequency according to clock register values */ + switch (PMC->PMC_MCKR & (uint32_t) PMC_MCKR_CSS_Msk) { + case PMC_MCKR_CSS_SLOW_CLK: /* Slow clock */ + if (SUPC->SUPC_SR & SUPC_SR_OSCSEL) { + SystemCoreClock = SYS_FREQ_XTAL_32K; + } else { + SystemCoreClock = CHIP_FREQ_SLCK_RC; + } + break; + case PMC_MCKR_CSS_MAIN_CLK: /* Main clock */ + if (PMC->CKGR_MOR & CKGR_MOR_MOSCSEL) { + SystemCoreClock = SYS_FREQ_XTAL_XTAL12M; + } else { + SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + + switch (PMC->CKGR_MOR & CKGR_MOR_MOSCRCF_Msk) { + case CKGR_MOR_MOSCRCF_4_MHz: + break; + case CKGR_MOR_MOSCRCF_8_MHz: + SystemCoreClock *= 2U; + break; + case CKGR_MOR_MOSCRCF_12_MHz: + SystemCoreClock *= 3U; + break; + default: + break; + } + } + break; + case PMC_MCKR_CSS_PLLA_CLK: /* PLLA clock */ + case PMC_MCKR_CSS_PLLB_CLK: /* PLLB clock */ + if (PMC->CKGR_MOR & CKGR_MOR_MOSCSEL) { + SystemCoreClock = SYS_FREQ_XTAL_XTAL12M; + } else { + SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + + switch (PMC->CKGR_MOR & CKGR_MOR_MOSCRCF_Msk) { + case CKGR_MOR_MOSCRCF_4_MHz: + break; + case CKGR_MOR_MOSCRCF_8_MHz: + SystemCoreClock *= 2U; + break; + case CKGR_MOR_MOSCRCF_12_MHz: + SystemCoreClock *= 3U; + break; + default: + break; + } + } + if ((uint32_t) (PMC->PMC_MCKR & (uint32_t) PMC_MCKR_CSS_Msk) == PMC_MCKR_CSS_PLLA_CLK) { + SystemCoreClock *= ((((PMC->CKGR_PLLAR) & CKGR_PLLAR_MULA_Msk) >> + CKGR_PLLAR_MULA_Pos) + 1U); + SystemCoreClock /= ((((PMC->CKGR_PLLAR) & CKGR_PLLAR_DIVA_Msk) >> + CKGR_PLLAR_DIVA_Pos)); + } else { + SystemCoreClock *= ((((PMC->CKGR_PLLBR) & CKGR_PLLBR_MULB_Msk) >> + CKGR_PLLBR_MULB_Pos) + 1U); + SystemCoreClock /= ((((PMC->CKGR_PLLBR) & CKGR_PLLBR_DIVB_Msk) >> + CKGR_PLLBR_DIVB_Pos)); + } + break; + default: + break; + } + + if ((PMC->PMC_MCKR & PMC_MCKR_PRES_Msk) == PMC_MCKR_PRES_CLK_3) { + SystemCoreClock /= 3U; + } else { + SystemCoreClock >>= ((PMC->PMC_MCKR & PMC_MCKR_PRES_Msk) >> PMC_MCKR_PRES_Pos); + } +} + +/** + * Initialize flash and watchdog. + */ +void system_init_flash_and_watchdog(uint32_t dw_clk) +{ + /* Set FWS for embedded Flash access according to operating frequency */ + if (dw_clk < SYS_FREQ_FWS_0) { + EFC->EEFC_FMR = EEFC_FMR_FWS(0); + } else if (dw_clk < SYS_FREQ_FWS_1) { + EFC->EEFC_FMR = EEFC_FMR_FWS(1); + } else if (dw_clk < SYS_FREQ_FWS_2) { + EFC->EEFC_FMR = EEFC_FMR_FWS(2); + } else { + EFC->EEFC_FMR = EEFC_FMR_FWS(3); + } + +#ifndef CONFIG_KEEP_WATCHDOG_AFTER_INIT + /* Disable the watchdog */ + WDT->WDT_MR = WDT_MR_WDDIS; +#endif +} + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ diff --git a/hardware/sam/system/libsam/cmsis/sam3s/source/templates/system_sam3s.h b/hardware/sam/system/libsam/cmsis/sam3s/source/templates/system_sam3s.h new file mode 100644 index 000000000..e5c32e9c4 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3s/source/templates/system_sam3s.h @@ -0,0 +1,58 @@ +/*! \file ********************************************************************* + * + * \brief CMSIS Cortex-M# Device Peripheral Access Layer Header File + * for SAM3 devices. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#ifndef SYSTEM_SAM3S_H_INCLUDED +#define SYSTEM_SAM3S_H_INCLUDED + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +#include + +extern uint32_t SystemCoreClock; /* System Clock Frequency (Core Clock) */ + +/** + * @brief Setup the microcontroller system. + * Initialize the System and update the SystemCoreClock variable. + */ +void SystemInit(void); + +/** + * @brief Updates the SystemCoreClock with current core Clock + * retrieved from cpu registers. + */ +void SystemCoreClockUpdate(void); + +/** + * Initialize flash and watchdog. + */ +void system_init_flash_and_watchdog(uint32_t dw_clk); + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ + +#endif /* SYSTEM_SAM3S_H_INCLUDED */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_acc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_acc.h new file mode 100644 index 000000000..f4d28244a --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_acc.h @@ -0,0 +1,124 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_ACC_COMPONENT_ +#define _SAM3S8_ACC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Analog Comparator Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_ACC Analog Comparator Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Acc hardware registers */ +typedef struct { + WoReg ACC_CR; /**< \brief (Acc Offset: 0x00) Control Register */ + RwReg ACC_MR; /**< \brief (Acc Offset: 0x04) Mode Register */ + RoReg Reserved1[7]; + WoReg ACC_IER; /**< \brief (Acc Offset: 0x24) Interrupt Enable Register */ + WoReg ACC_IDR; /**< \brief (Acc Offset: 0x28) Interrupt Disable Register */ + RoReg ACC_IMR; /**< \brief (Acc Offset: 0x2C) Interrupt Mask Register */ + RoReg ACC_ISR; /**< \brief (Acc Offset: 0x30) Interrupt Status Register */ + RoReg Reserved2[24]; + RwReg ACC_ACR; /**< \brief (Acc Offset: 0x94) Analog Control Register */ + RoReg Reserved3[19]; + RwReg ACC_WPMR; /**< \brief (Acc Offset: 0xE4) Write Protect Mode Register */ + RoReg ACC_WPSR; /**< \brief (Acc Offset: 0xE8) Write Protect Status Register */ +} Acc; +#endif /* __ASSEMBLY__ */ +/* -------- ACC_CR : (ACC Offset: 0x00) Control Register -------- */ +#define ACC_CR_SWRST (0x1u << 0) /**< \brief (ACC_CR) SoftWare ReSeT */ +/* -------- ACC_MR : (ACC Offset: 0x04) Mode Register -------- */ +#define ACC_MR_SELMINUS_Pos 0 +#define ACC_MR_SELMINUS_Msk (0x7u << ACC_MR_SELMINUS_Pos) /**< \brief (ACC_MR) SELection for MINUS comparator input */ +#define ACC_MR_SELMINUS_TS (0x0u << 0) /**< \brief (ACC_MR) SelectTS */ +#define ACC_MR_SELMINUS_ADVREF (0x1u << 0) /**< \brief (ACC_MR) Select ADVREF */ +#define ACC_MR_SELMINUS_DAC0 (0x2u << 0) /**< \brief (ACC_MR) Select DAC0 */ +#define ACC_MR_SELMINUS_DAC1 (0x3u << 0) /**< \brief (ACC_MR) Select DAC1 */ +#define ACC_MR_SELMINUS_AD0 (0x4u << 0) /**< \brief (ACC_MR) Select AD0 */ +#define ACC_MR_SELMINUS_AD1 (0x5u << 0) /**< \brief (ACC_MR) Select AD1 */ +#define ACC_MR_SELMINUS_AD2 (0x6u << 0) /**< \brief (ACC_MR) Select AD2 */ +#define ACC_MR_SELMINUS_AD3 (0x7u << 0) /**< \brief (ACC_MR) Select AD3 */ +#define ACC_MR_SELPLUS_Pos 4 +#define ACC_MR_SELPLUS_Msk (0x7u << ACC_MR_SELPLUS_Pos) /**< \brief (ACC_MR) SELection for PLUS comparator input */ +#define ACC_MR_SELPLUS_AD0 (0x0u << 4) /**< \brief (ACC_MR) Select AD0 */ +#define ACC_MR_SELPLUS_AD1 (0x1u << 4) /**< \brief (ACC_MR) Select AD1 */ +#define ACC_MR_SELPLUS_AD2 (0x2u << 4) /**< \brief (ACC_MR) Select AD2 */ +#define ACC_MR_SELPLUS_AD3 (0x3u << 4) /**< \brief (ACC_MR) Select AD3 */ +#define ACC_MR_SELPLUS_AD4 (0x4u << 4) /**< \brief (ACC_MR) Select AD4 */ +#define ACC_MR_SELPLUS_AD5 (0x5u << 4) /**< \brief (ACC_MR) Select AD5 */ +#define ACC_MR_SELPLUS_AD6 (0x6u << 4) /**< \brief (ACC_MR) Select AD6 */ +#define ACC_MR_SELPLUS_AD7 (0x7u << 4) /**< \brief (ACC_MR) Select AD7 */ +#define ACC_MR_ACEN (0x1u << 8) /**< \brief (ACC_MR) Analog Comparator ENable */ +#define ACC_MR_ACEN_DIS (0x0u << 8) /**< \brief (ACC_MR) Analog Comparator Disabled. */ +#define ACC_MR_ACEN_EN (0x1u << 8) /**< \brief (ACC_MR) Analog Comparator Enabled. */ +#define ACC_MR_EDGETYP_Pos 9 +#define ACC_MR_EDGETYP_Msk (0x3u << ACC_MR_EDGETYP_Pos) /**< \brief (ACC_MR) EDGE TYPe */ +#define ACC_MR_EDGETYP_RISING (0x0u << 9) /**< \brief (ACC_MR) only rising edge of comparator output */ +#define ACC_MR_EDGETYP_FALLING (0x1u << 9) /**< \brief (ACC_MR) falling edge of comparator output */ +#define ACC_MR_EDGETYP_ANY (0x2u << 9) /**< \brief (ACC_MR) any edge of comparator output */ +#define ACC_MR_INV (0x1u << 12) /**< \brief (ACC_MR) INVert comparator output */ +#define ACC_MR_INV_DIS (0x0u << 12) /**< \brief (ACC_MR) Analog Comparator output is directly processed. */ +#define ACC_MR_INV_EN (0x1u << 12) /**< \brief (ACC_MR) Analog Comparator output is inverted prior to being processed. */ +#define ACC_MR_SELFS (0x1u << 13) /**< \brief (ACC_MR) SELection of Fault Source */ +#define ACC_MR_SELFS_CF (0x0u << 13) /**< \brief (ACC_MR) the CF flag is used to drive the FAULT output. */ +#define ACC_MR_SELFS_OUTPUT (0x1u << 13) /**< \brief (ACC_MR) the output of the Analog Comparator flag is used to drive the FAULT output. */ +#define ACC_MR_FE (0x1u << 14) /**< \brief (ACC_MR) Fault Enable */ +#define ACC_MR_FE_DIS (0x0u << 14) /**< \brief (ACC_MR) the FAULT output is tied to 0. */ +#define ACC_MR_FE_EN (0x1u << 14) /**< \brief (ACC_MR) the FAULT output is driven by the signal defined by SELFS. */ +/* -------- ACC_IER : (ACC Offset: 0x24) Interrupt Enable Register -------- */ +#define ACC_IER_CE (0x1u << 0) /**< \brief (ACC_IER) Comparison Edge */ +/* -------- ACC_IDR : (ACC Offset: 0x28) Interrupt Disable Register -------- */ +#define ACC_IDR_CE (0x1u << 0) /**< \brief (ACC_IDR) Comparison Edge */ +/* -------- ACC_IMR : (ACC Offset: 0x2C) Interrupt Mask Register -------- */ +#define ACC_IMR_CE (0x1u << 0) /**< \brief (ACC_IMR) Comparison Edge */ +/* -------- ACC_ISR : (ACC Offset: 0x30) Interrupt Status Register -------- */ +#define ACC_ISR_CE (0x1u << 0) /**< \brief (ACC_ISR) Comparison Edge */ +#define ACC_ISR_SCO (0x1u << 1) /**< \brief (ACC_ISR) Synchronized Comparator Output */ +#define ACC_ISR_MASK (0x1u << 31) /**< \brief (ACC_ISR) */ +/* -------- ACC_ACR : (ACC Offset: 0x94) Analog Control Register -------- */ +#define ACC_ACR_ISEL (0x1u << 0) /**< \brief (ACC_ACR) Current SELection */ +#define ACC_ACR_ISEL_LOPW (0x0u << 0) /**< \brief (ACC_ACR) low power option. */ +#define ACC_ACR_ISEL_HISP (0x1u << 0) /**< \brief (ACC_ACR) high speed option. */ +#define ACC_ACR_HYST_Pos 1 +#define ACC_ACR_HYST_Msk (0x3u << ACC_ACR_HYST_Pos) /**< \brief (ACC_ACR) HYSTeresis selection */ +#define ACC_ACR_HYST(value) ((ACC_ACR_HYST_Msk & ((value) << ACC_ACR_HYST_Pos))) +/* -------- ACC_WPMR : (ACC Offset: 0xE4) Write Protect Mode Register -------- */ +#define ACC_WPMR_WPEN (0x1u << 0) /**< \brief (ACC_WPMR) Write Protect Enable */ +#define ACC_WPMR_WPKEY_Pos 8 +#define ACC_WPMR_WPKEY_Msk (0xffffffu << ACC_WPMR_WPKEY_Pos) /**< \brief (ACC_WPMR) Write Protect KEY */ +#define ACC_WPMR_WPKEY(value) ((ACC_WPMR_WPKEY_Msk & ((value) << ACC_WPMR_WPKEY_Pos))) +/* -------- ACC_WPSR : (ACC Offset: 0xE8) Write Protect Status Register -------- */ +#define ACC_WPSR_WPROTERR (0x1u << 0) /**< \brief (ACC_WPSR) Write PROTection ERRor */ + +/*@}*/ + + +#endif /* _SAM3S8_ACC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_adc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_adc.h new file mode 100644 index 000000000..ea035adce --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_adc.h @@ -0,0 +1,527 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_ADC_COMPONENT_ +#define _SAM3S8_ADC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Analog-to-digital Converter */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_ADC Analog-to-digital Converter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Adc hardware registers */ +typedef struct { + WoReg ADC_CR; /**< \brief (Adc Offset: 0x00) Control Register */ + RwReg ADC_MR; /**< \brief (Adc Offset: 0x04) Mode Register */ + RwReg ADC_SEQR1; /**< \brief (Adc Offset: 0x08) Channel Sequence Register 1 */ + RwReg ADC_SEQR2; /**< \brief (Adc Offset: 0x0C) Channel Sequence Register 2 */ + WoReg ADC_CHER; /**< \brief (Adc Offset: 0x10) Channel Enable Register */ + WoReg ADC_CHDR; /**< \brief (Adc Offset: 0x14) Channel Disable Register */ + RoReg ADC_CHSR; /**< \brief (Adc Offset: 0x18) Channel Status Register */ + RoReg Reserved1[1]; + RoReg ADC_LCDR; /**< \brief (Adc Offset: 0x20) Last Converted Data Register */ + WoReg ADC_IER; /**< \brief (Adc Offset: 0x24) Interrupt Enable Register */ + WoReg ADC_IDR; /**< \brief (Adc Offset: 0x28) Interrupt Disable Register */ + RoReg ADC_IMR; /**< \brief (Adc Offset: 0x2C) Interrupt Mask Register */ + RoReg ADC_ISR; /**< \brief (Adc Offset: 0x30) Interrupt Status Register */ + RoReg Reserved2[2]; + RoReg ADC_OVER; /**< \brief (Adc Offset: 0x3C) Overrun Status Register */ + RwReg ADC_EMR; /**< \brief (Adc Offset: 0x40) Extended Mode Register */ + RwReg ADC_CWR; /**< \brief (Adc Offset: 0x44) Compare Window Register */ + RwReg ADC_CGR; /**< \brief (Adc Offset: 0x48) Channel Gain Register */ + RwReg ADC_COR; /**< \brief (Adc Offset: 0x4C) Channel Offset Register */ + RoReg ADC_CDR[15]; /**< \brief (Adc Offset: 0x50) Channel Data Register */ + RoReg Reserved3[2]; + RwReg ADC_ACR; /**< \brief (Adc Offset: 0x94) Analog Control Register */ + RoReg Reserved4[19]; + RwReg ADC_WPMR; /**< \brief (Adc Offset: 0xE4) Write Protect Mode Register */ + RoReg ADC_WPSR; /**< \brief (Adc Offset: 0xE8) Write Protect Status Register */ + RoReg Reserved5[5]; + RwReg ADC_RPR; /**< \brief (Adc Offset: 0x100) Receive Pointer Register */ + RwReg ADC_RCR; /**< \brief (Adc Offset: 0x104) Receive Counter Register */ + RwReg ADC_TPR; /**< \brief (Adc Offset: 0x108) Transmit Pointer Register */ + RwReg ADC_TCR; /**< \brief (Adc Offset: 0x10C) Transmit Counter Register */ + RwReg ADC_RNPR; /**< \brief (Adc Offset: 0x110) Receive Next Pointer Register */ + RwReg ADC_RNCR; /**< \brief (Adc Offset: 0x114) Receive Next Counter Register */ + RwReg ADC_TNPR; /**< \brief (Adc Offset: 0x118) Transmit Next Pointer Register */ + RwReg ADC_TNCR; /**< \brief (Adc Offset: 0x11C) Transmit Next Counter Register */ + WoReg ADC_PTCR; /**< \brief (Adc Offset: 0x120) Transfer Control Register */ + RoReg ADC_PTSR; /**< \brief (Adc Offset: 0x124) Transfer Status Register */ +} Adc; +#endif /* __ASSEMBLY__ */ +/* -------- ADC_CR : (ADC Offset: 0x00) Control Register -------- */ +#define ADC_CR_SWRST (0x1u << 0) /**< \brief (ADC_CR) Software Reset */ +#define ADC_CR_START (0x1u << 1) /**< \brief (ADC_CR) Start Conversion */ +#define ADC_CR_AUTOCAL (0x1u << 3) /**< \brief (ADC_CR) Automatic Calibration of ADC */ +/* -------- ADC_MR : (ADC Offset: 0x04) Mode Register -------- */ +#define ADC_MR_TRGEN (0x1u << 0) /**< \brief (ADC_MR) Trigger Enable */ +#define ADC_MR_TRGEN_DIS (0x0u << 0) /**< \brief (ADC_MR) Hardware triggers are disabled. Starting a conversion is only possible by software. */ +#define ADC_MR_TRGEN_EN (0x1u << 0) /**< \brief (ADC_MR) Hardware trigger selected by TRGSEL field is enabled. */ +#define ADC_MR_TRGSEL_Pos 1 +#define ADC_MR_TRGSEL_Msk (0x7u << ADC_MR_TRGSEL_Pos) /**< \brief (ADC_MR) Trigger Selection */ +#define ADC_MR_TRGSEL_ADC_TRIG0 (0x0u << 1) /**< \brief (ADC_MR) External trigger */ +#define ADC_MR_TRGSEL_ADC_TRIG1 (0x1u << 1) /**< \brief (ADC_MR) TIO Output of the Timer Counter Channel 0 */ +#define ADC_MR_TRGSEL_ADC_TRIG2 (0x2u << 1) /**< \brief (ADC_MR) TIO Output of the Timer Counter Channel 1 */ +#define ADC_MR_TRGSEL_ADC_TRIG3 (0x3u << 1) /**< \brief (ADC_MR) TIO Output of the Timer Counter Channel 2 */ +#define ADC_MR_TRGSEL_ADC_TRIG4 (0x4u << 1) /**< \brief (ADC_MR) PWM Event Line 0 */ +#define ADC_MR_TRGSEL_ADC_TRIG5 (0x5u << 1) /**< \brief (ADC_MR) PWM Event Line 1 */ +#define ADC_MR_LOWRES (0x1u << 4) /**< \brief (ADC_MR) Resolution */ +#define ADC_MR_LOWRES_BITS_12 (0x0u << 4) /**< \brief (ADC_MR) 12-bit resolution */ +#define ADC_MR_LOWRES_BITS_10 (0x1u << 4) /**< \brief (ADC_MR) 10-bit resolution */ +#define ADC_MR_SLEEP (0x1u << 5) /**< \brief (ADC_MR) Sleep Mode */ +#define ADC_MR_SLEEP_NORMAL (0x0u << 5) /**< \brief (ADC_MR) Normal Mode: The ADC Core and reference voltage circuitry are kept ON between conversions */ +#define ADC_MR_SLEEP_SLEEP (0x1u << 5) /**< \brief (ADC_MR) Sleep Mode: The ADC Core and reference voltage circuitry are OFF between conversions */ +#define ADC_MR_FWUP (0x1u << 6) /**< \brief (ADC_MR) Fast Wake Up */ +#define ADC_MR_FWUP_OFF (0x0u << 6) /**< \brief (ADC_MR) Normal Sleep Mode: The sleep mode is defined by the SLEEP bit */ +#define ADC_MR_FWUP_ON (0x1u << 6) /**< \brief (ADC_MR) Fast Wake Up Sleep Mode: The Voltage reference is ON between conversions and ADC Core is OFF */ +#define ADC_MR_FREERUN (0x1u << 7) /**< \brief (ADC_MR) Free Run Mode */ +#define ADC_MR_FREERUN_OFF (0x0u << 7) /**< \brief (ADC_MR) Normal Mode */ +#define ADC_MR_FREERUN_ON (0x1u << 7) /**< \brief (ADC_MR) Free Run Mode: Never wait for any trigger. */ +#define ADC_MR_PRESCAL_Pos 8 +#define ADC_MR_PRESCAL_Msk (0xffu << ADC_MR_PRESCAL_Pos) /**< \brief (ADC_MR) Prescaler Rate Selection */ +#define ADC_MR_PRESCAL(value) ((ADC_MR_PRESCAL_Msk & ((value) << ADC_MR_PRESCAL_Pos))) +#define ADC_MR_STARTUP_Pos 16 +#define ADC_MR_STARTUP_Msk (0xfu << ADC_MR_STARTUP_Pos) /**< \brief (ADC_MR) Start Up Time */ +#define ADC_MR_STARTUP_SUT0 (0x0u << 16) /**< \brief (ADC_MR) 0 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT8 (0x1u << 16) /**< \brief (ADC_MR) 8 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT16 (0x2u << 16) /**< \brief (ADC_MR) 16 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT24 (0x3u << 16) /**< \brief (ADC_MR) 24 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT64 (0x4u << 16) /**< \brief (ADC_MR) 64 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT80 (0x5u << 16) /**< \brief (ADC_MR) 80 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT96 (0x6u << 16) /**< \brief (ADC_MR) 96 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT112 (0x7u << 16) /**< \brief (ADC_MR) 112 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT512 (0x8u << 16) /**< \brief (ADC_MR) 512 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT576 (0x9u << 16) /**< \brief (ADC_MR) 576 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT640 (0xAu << 16) /**< \brief (ADC_MR) 640 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT704 (0xBu << 16) /**< \brief (ADC_MR) 704 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT768 (0xCu << 16) /**< \brief (ADC_MR) 768 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT832 (0xDu << 16) /**< \brief (ADC_MR) 832 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT896 (0xEu << 16) /**< \brief (ADC_MR) 896 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT960 (0xFu << 16) /**< \brief (ADC_MR) 960 periods of ADCClock */ +#define ADC_MR_SETTLING_Pos 20 +#define ADC_MR_SETTLING_Msk (0x3u << ADC_MR_SETTLING_Pos) /**< \brief (ADC_MR) Analog Settling Time */ +#define ADC_MR_SETTLING_AST3 (0x0u << 20) /**< \brief (ADC_MR) 3 periods of ADCClock */ +#define ADC_MR_SETTLING_AST5 (0x1u << 20) /**< \brief (ADC_MR) 5 periods of ADCClock */ +#define ADC_MR_SETTLING_AST9 (0x2u << 20) /**< \brief (ADC_MR) 9 periods of ADCClock */ +#define ADC_MR_SETTLING_AST17 (0x3u << 20) /**< \brief (ADC_MR) 17 periods of ADCClock */ +#define ADC_MR_ANACH (0x1u << 23) /**< \brief (ADC_MR) Analog Change */ +#define ADC_MR_ANACH_NONE (0x0u << 23) /**< \brief (ADC_MR) No analog change on channel switching: DIFF0, GAIN0 and OFF0 are used for all channels */ +#define ADC_MR_ANACH_ALLOWED (0x1u << 23) /**< \brief (ADC_MR) Allows different analog settings for each channel. See ADC_CGR and ADC_COR Registers */ +#define ADC_MR_TRACKTIM_Pos 24 +#define ADC_MR_TRACKTIM_Msk (0xfu << ADC_MR_TRACKTIM_Pos) /**< \brief (ADC_MR) Tracking Time */ +#define ADC_MR_TRACKTIM(value) ((ADC_MR_TRACKTIM_Msk & ((value) << ADC_MR_TRACKTIM_Pos))) +#define ADC_MR_TRANSFER_Pos 28 +#define ADC_MR_TRANSFER_Msk (0x3u << ADC_MR_TRANSFER_Pos) /**< \brief (ADC_MR) Transfer Period */ +#define ADC_MR_TRANSFER(value) ((ADC_MR_TRANSFER_Msk & ((value) << ADC_MR_TRANSFER_Pos))) +#define ADC_MR_USEQ (0x1u << 31) /**< \brief (ADC_MR) Use Sequence Enable */ +#define ADC_MR_USEQ_NUM_ORDER (0x0u << 31) /**< \brief (ADC_MR) Normal Mode: The controller converts channels in a simple numeric order. */ +#define ADC_MR_USEQ_REG_ORDER (0x1u << 31) /**< \brief (ADC_MR) User Sequence Mode: The sequence respects what is defined in ADC_SEQR1 and ADC_SEQR2 registers. */ +/* -------- ADC_SEQR1 : (ADC Offset: 0x08) Channel Sequence Register 1 -------- */ +#define ADC_SEQR1_USCH1_Pos 0 +#define ADC_SEQR1_USCH1_Msk (0x7u << ADC_SEQR1_USCH1_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 1 */ +#define ADC_SEQR1_USCH1(value) ((ADC_SEQR1_USCH1_Msk & ((value) << ADC_SEQR1_USCH1_Pos))) +#define ADC_SEQR1_USCH2_Pos 4 +#define ADC_SEQR1_USCH2_Msk (0x7u << ADC_SEQR1_USCH2_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 2 */ +#define ADC_SEQR1_USCH2(value) ((ADC_SEQR1_USCH2_Msk & ((value) << ADC_SEQR1_USCH2_Pos))) +#define ADC_SEQR1_USCH3_Pos 8 +#define ADC_SEQR1_USCH3_Msk (0x7u << ADC_SEQR1_USCH3_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 3 */ +#define ADC_SEQR1_USCH3(value) ((ADC_SEQR1_USCH3_Msk & ((value) << ADC_SEQR1_USCH3_Pos))) +#define ADC_SEQR1_USCH4_Pos 12 +#define ADC_SEQR1_USCH4_Msk (0x7u << ADC_SEQR1_USCH4_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 4 */ +#define ADC_SEQR1_USCH4(value) ((ADC_SEQR1_USCH4_Msk & ((value) << ADC_SEQR1_USCH4_Pos))) +#define ADC_SEQR1_USCH5_Pos 16 +#define ADC_SEQR1_USCH5_Msk (0x7u << ADC_SEQR1_USCH5_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 5 */ +#define ADC_SEQR1_USCH5(value) ((ADC_SEQR1_USCH5_Msk & ((value) << ADC_SEQR1_USCH5_Pos))) +#define ADC_SEQR1_USCH6_Pos 20 +#define ADC_SEQR1_USCH6_Msk (0x7u << ADC_SEQR1_USCH6_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 6 */ +#define ADC_SEQR1_USCH6(value) ((ADC_SEQR1_USCH6_Msk & ((value) << ADC_SEQR1_USCH6_Pos))) +#define ADC_SEQR1_USCH7_Pos 24 +#define ADC_SEQR1_USCH7_Msk (0x7u << ADC_SEQR1_USCH7_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 7 */ +#define ADC_SEQR1_USCH7(value) ((ADC_SEQR1_USCH7_Msk & ((value) << ADC_SEQR1_USCH7_Pos))) +#define ADC_SEQR1_USCH8_Pos 28 +#define ADC_SEQR1_USCH8_Msk (0x7u << ADC_SEQR1_USCH8_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 8 */ +#define ADC_SEQR1_USCH8(value) ((ADC_SEQR1_USCH8_Msk & ((value) << ADC_SEQR1_USCH8_Pos))) +/* -------- ADC_SEQR2 : (ADC Offset: 0x0C) Channel Sequence Register 2 -------- */ +#define ADC_SEQR2_USCH9_Pos 0 +#define ADC_SEQR2_USCH9_Msk (0x7u << ADC_SEQR2_USCH9_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 9 */ +#define ADC_SEQR2_USCH9(value) ((ADC_SEQR2_USCH9_Msk & ((value) << ADC_SEQR2_USCH9_Pos))) +#define ADC_SEQR2_USCH10_Pos 4 +#define ADC_SEQR2_USCH10_Msk (0x7u << ADC_SEQR2_USCH10_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 10 */ +#define ADC_SEQR2_USCH10(value) ((ADC_SEQR2_USCH10_Msk & ((value) << ADC_SEQR2_USCH10_Pos))) +#define ADC_SEQR2_USCH11_Pos 8 +#define ADC_SEQR2_USCH11_Msk (0x7u << ADC_SEQR2_USCH11_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 11 */ +#define ADC_SEQR2_USCH11(value) ((ADC_SEQR2_USCH11_Msk & ((value) << ADC_SEQR2_USCH11_Pos))) +#define ADC_SEQR2_USCH12_Pos 12 +#define ADC_SEQR2_USCH12_Msk (0x7u << ADC_SEQR2_USCH12_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 12 */ +#define ADC_SEQR2_USCH12(value) ((ADC_SEQR2_USCH12_Msk & ((value) << ADC_SEQR2_USCH12_Pos))) +#define ADC_SEQR2_USCH13_Pos 16 +#define ADC_SEQR2_USCH13_Msk (0x7u << ADC_SEQR2_USCH13_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 13 */ +#define ADC_SEQR2_USCH13(value) ((ADC_SEQR2_USCH13_Msk & ((value) << ADC_SEQR2_USCH13_Pos))) +#define ADC_SEQR2_USCH14_Pos 20 +#define ADC_SEQR2_USCH14_Msk (0x7u << ADC_SEQR2_USCH14_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 14 */ +#define ADC_SEQR2_USCH14(value) ((ADC_SEQR2_USCH14_Msk & ((value) << ADC_SEQR2_USCH14_Pos))) +#define ADC_SEQR2_USCH15_Pos 24 +#define ADC_SEQR2_USCH15_Msk (0x7u << ADC_SEQR2_USCH15_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 15 */ +#define ADC_SEQR2_USCH15(value) ((ADC_SEQR2_USCH15_Msk & ((value) << ADC_SEQR2_USCH15_Pos))) +#define ADC_SEQR2_USCH16_Pos 28 +#define ADC_SEQR2_USCH16_Msk (0x7u << ADC_SEQR2_USCH16_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 16 */ +#define ADC_SEQR2_USCH16(value) ((ADC_SEQR2_USCH16_Msk & ((value) << ADC_SEQR2_USCH16_Pos))) +/* -------- ADC_CHER : (ADC Offset: 0x10) Channel Enable Register -------- */ +#define ADC_CHER_CH0 (0x1u << 0) /**< \brief (ADC_CHER) Channel 0 Enable */ +#define ADC_CHER_CH1 (0x1u << 1) /**< \brief (ADC_CHER) Channel 1 Enable */ +#define ADC_CHER_CH2 (0x1u << 2) /**< \brief (ADC_CHER) Channel 2 Enable */ +#define ADC_CHER_CH3 (0x1u << 3) /**< \brief (ADC_CHER) Channel 3 Enable */ +#define ADC_CHER_CH4 (0x1u << 4) /**< \brief (ADC_CHER) Channel 4 Enable */ +#define ADC_CHER_CH5 (0x1u << 5) /**< \brief (ADC_CHER) Channel 5 Enable */ +#define ADC_CHER_CH6 (0x1u << 6) /**< \brief (ADC_CHER) Channel 6 Enable */ +#define ADC_CHER_CH7 (0x1u << 7) /**< \brief (ADC_CHER) Channel 7 Enable */ +#define ADC_CHER_CH8 (0x1u << 8) /**< \brief (ADC_CHER) Channel 8 Enable */ +#define ADC_CHER_CH9 (0x1u << 9) /**< \brief (ADC_CHER) Channel 9 Enable */ +#define ADC_CHER_CH10 (0x1u << 10) /**< \brief (ADC_CHER) Channel 10 Enable */ +#define ADC_CHER_CH11 (0x1u << 11) /**< \brief (ADC_CHER) Channel 11 Enable */ +#define ADC_CHER_CH12 (0x1u << 12) /**< \brief (ADC_CHER) Channel 12 Enable */ +#define ADC_CHER_CH13 (0x1u << 13) /**< \brief (ADC_CHER) Channel 13 Enable */ +#define ADC_CHER_CH14 (0x1u << 14) /**< \brief (ADC_CHER) Channel 14 Enable */ +#define ADC_CHER_CH15 (0x1u << 15) /**< \brief (ADC_CHER) Channel 15 Enable */ +/* -------- ADC_CHDR : (ADC Offset: 0x14) Channel Disable Register -------- */ +#define ADC_CHDR_CH0 (0x1u << 0) /**< \brief (ADC_CHDR) Channel 0 Disable */ +#define ADC_CHDR_CH1 (0x1u << 1) /**< \brief (ADC_CHDR) Channel 1 Disable */ +#define ADC_CHDR_CH2 (0x1u << 2) /**< \brief (ADC_CHDR) Channel 2 Disable */ +#define ADC_CHDR_CH3 (0x1u << 3) /**< \brief (ADC_CHDR) Channel 3 Disable */ +#define ADC_CHDR_CH4 (0x1u << 4) /**< \brief (ADC_CHDR) Channel 4 Disable */ +#define ADC_CHDR_CH5 (0x1u << 5) /**< \brief (ADC_CHDR) Channel 5 Disable */ +#define ADC_CHDR_CH6 (0x1u << 6) /**< \brief (ADC_CHDR) Channel 6 Disable */ +#define ADC_CHDR_CH7 (0x1u << 7) /**< \brief (ADC_CHDR) Channel 7 Disable */ +#define ADC_CHDR_CH8 (0x1u << 8) /**< \brief (ADC_CHDR) Channel 8 Disable */ +#define ADC_CHDR_CH9 (0x1u << 9) /**< \brief (ADC_CHDR) Channel 9 Disable */ +#define ADC_CHDR_CH10 (0x1u << 10) /**< \brief (ADC_CHDR) Channel 10 Disable */ +#define ADC_CHDR_CH11 (0x1u << 11) /**< \brief (ADC_CHDR) Channel 11 Disable */ +#define ADC_CHDR_CH12 (0x1u << 12) /**< \brief (ADC_CHDR) Channel 12 Disable */ +#define ADC_CHDR_CH13 (0x1u << 13) /**< \brief (ADC_CHDR) Channel 13 Disable */ +#define ADC_CHDR_CH14 (0x1u << 14) /**< \brief (ADC_CHDR) Channel 14 Disable */ +#define ADC_CHDR_CH15 (0x1u << 15) /**< \brief (ADC_CHDR) Channel 15 Disable */ +/* -------- ADC_CHSR : (ADC Offset: 0x18) Channel Status Register -------- */ +#define ADC_CHSR_CH0 (0x1u << 0) /**< \brief (ADC_CHSR) Channel 0 Status */ +#define ADC_CHSR_CH1 (0x1u << 1) /**< \brief (ADC_CHSR) Channel 1 Status */ +#define ADC_CHSR_CH2 (0x1u << 2) /**< \brief (ADC_CHSR) Channel 2 Status */ +#define ADC_CHSR_CH3 (0x1u << 3) /**< \brief (ADC_CHSR) Channel 3 Status */ +#define ADC_CHSR_CH4 (0x1u << 4) /**< \brief (ADC_CHSR) Channel 4 Status */ +#define ADC_CHSR_CH5 (0x1u << 5) /**< \brief (ADC_CHSR) Channel 5 Status */ +#define ADC_CHSR_CH6 (0x1u << 6) /**< \brief (ADC_CHSR) Channel 6 Status */ +#define ADC_CHSR_CH7 (0x1u << 7) /**< \brief (ADC_CHSR) Channel 7 Status */ +#define ADC_CHSR_CH8 (0x1u << 8) /**< \brief (ADC_CHSR) Channel 8 Status */ +#define ADC_CHSR_CH9 (0x1u << 9) /**< \brief (ADC_CHSR) Channel 9 Status */ +#define ADC_CHSR_CH10 (0x1u << 10) /**< \brief (ADC_CHSR) Channel 10 Status */ +#define ADC_CHSR_CH11 (0x1u << 11) /**< \brief (ADC_CHSR) Channel 11 Status */ +#define ADC_CHSR_CH12 (0x1u << 12) /**< \brief (ADC_CHSR) Channel 12 Status */ +#define ADC_CHSR_CH13 (0x1u << 13) /**< \brief (ADC_CHSR) Channel 13 Status */ +#define ADC_CHSR_CH14 (0x1u << 14) /**< \brief (ADC_CHSR) Channel 14 Status */ +#define ADC_CHSR_CH15 (0x1u << 15) /**< \brief (ADC_CHSR) Channel 15 Status */ +/* -------- ADC_LCDR : (ADC Offset: 0x20) Last Converted Data Register -------- */ +#define ADC_LCDR_LDATA_Pos 0 +#define ADC_LCDR_LDATA_Msk (0xfffu << ADC_LCDR_LDATA_Pos) /**< \brief (ADC_LCDR) Last Data Converted */ +#define ADC_LCDR_CHNB_Pos 12 +#define ADC_LCDR_CHNB_Msk (0xfu << ADC_LCDR_CHNB_Pos) /**< \brief (ADC_LCDR) Channel Number */ +/* -------- ADC_IER : (ADC Offset: 0x24) Interrupt Enable Register -------- */ +#define ADC_IER_EOC0 (0x1u << 0) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 0 */ +#define ADC_IER_EOC1 (0x1u << 1) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 1 */ +#define ADC_IER_EOC2 (0x1u << 2) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 2 */ +#define ADC_IER_EOC3 (0x1u << 3) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 3 */ +#define ADC_IER_EOC4 (0x1u << 4) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 4 */ +#define ADC_IER_EOC5 (0x1u << 5) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 5 */ +#define ADC_IER_EOC6 (0x1u << 6) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 6 */ +#define ADC_IER_EOC7 (0x1u << 7) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 7 */ +#define ADC_IER_EOC8 (0x1u << 8) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 8 */ +#define ADC_IER_EOC9 (0x1u << 9) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 9 */ +#define ADC_IER_EOC10 (0x1u << 10) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 10 */ +#define ADC_IER_EOC11 (0x1u << 11) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 11 */ +#define ADC_IER_EOC12 (0x1u << 12) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 12 */ +#define ADC_IER_EOC13 (0x1u << 13) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 13 */ +#define ADC_IER_EOC14 (0x1u << 14) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 14 */ +#define ADC_IER_EOC15 (0x1u << 15) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 15 */ +#define ADC_IER_EOCAL (0x1u << 23) /**< \brief (ADC_IER) End of Calibration Sequence */ +#define ADC_IER_DRDY (0x1u << 24) /**< \brief (ADC_IER) Data Ready Interrupt Enable */ +#define ADC_IER_GOVRE (0x1u << 25) /**< \brief (ADC_IER) General Overrun Error Interrupt Enable */ +#define ADC_IER_COMPE (0x1u << 26) /**< \brief (ADC_IER) Comparison Event Interrupt Enable */ +#define ADC_IER_ENDRX (0x1u << 27) /**< \brief (ADC_IER) End of Receive Buffer Interrupt Enable */ +#define ADC_IER_RXBUFF (0x1u << 28) /**< \brief (ADC_IER) Receive Buffer Full Interrupt Enable */ +/* -------- ADC_IDR : (ADC Offset: 0x28) Interrupt Disable Register -------- */ +#define ADC_IDR_EOC0 (0x1u << 0) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 0 */ +#define ADC_IDR_EOC1 (0x1u << 1) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 1 */ +#define ADC_IDR_EOC2 (0x1u << 2) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 2 */ +#define ADC_IDR_EOC3 (0x1u << 3) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 3 */ +#define ADC_IDR_EOC4 (0x1u << 4) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 4 */ +#define ADC_IDR_EOC5 (0x1u << 5) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 5 */ +#define ADC_IDR_EOC6 (0x1u << 6) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 6 */ +#define ADC_IDR_EOC7 (0x1u << 7) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 7 */ +#define ADC_IDR_EOC8 (0x1u << 8) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 8 */ +#define ADC_IDR_EOC9 (0x1u << 9) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 9 */ +#define ADC_IDR_EOC10 (0x1u << 10) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 10 */ +#define ADC_IDR_EOC11 (0x1u << 11) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 11 */ +#define ADC_IDR_EOC12 (0x1u << 12) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 12 */ +#define ADC_IDR_EOC13 (0x1u << 13) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 13 */ +#define ADC_IDR_EOC14 (0x1u << 14) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 14 */ +#define ADC_IDR_EOC15 (0x1u << 15) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 15 */ +#define ADC_IDR_EOCAL (0x1u << 23) /**< \brief (ADC_IDR) End of Calibration Sequence */ +#define ADC_IDR_DRDY (0x1u << 24) /**< \brief (ADC_IDR) Data Ready Interrupt Disable */ +#define ADC_IDR_GOVRE (0x1u << 25) /**< \brief (ADC_IDR) General Overrun Error Interrupt Disable */ +#define ADC_IDR_COMPE (0x1u << 26) /**< \brief (ADC_IDR) Comparison Event Interrupt Disable */ +#define ADC_IDR_ENDRX (0x1u << 27) /**< \brief (ADC_IDR) End of Receive Buffer Interrupt Disable */ +#define ADC_IDR_RXBUFF (0x1u << 28) /**< \brief (ADC_IDR) Receive Buffer Full Interrupt Disable */ +/* -------- ADC_IMR : (ADC Offset: 0x2C) Interrupt Mask Register -------- */ +#define ADC_IMR_EOC0 (0x1u << 0) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 0 */ +#define ADC_IMR_EOC1 (0x1u << 1) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 1 */ +#define ADC_IMR_EOC2 (0x1u << 2) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 2 */ +#define ADC_IMR_EOC3 (0x1u << 3) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 3 */ +#define ADC_IMR_EOC4 (0x1u << 4) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 4 */ +#define ADC_IMR_EOC5 (0x1u << 5) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 5 */ +#define ADC_IMR_EOC6 (0x1u << 6) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 6 */ +#define ADC_IMR_EOC7 (0x1u << 7) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 7 */ +#define ADC_IMR_EOC8 (0x1u << 8) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 8 */ +#define ADC_IMR_EOC9 (0x1u << 9) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 9 */ +#define ADC_IMR_EOC10 (0x1u << 10) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 10 */ +#define ADC_IMR_EOC11 (0x1u << 11) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 11 */ +#define ADC_IMR_EOC12 (0x1u << 12) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 12 */ +#define ADC_IMR_EOC13 (0x1u << 13) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 13 */ +#define ADC_IMR_EOC14 (0x1u << 14) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 14 */ +#define ADC_IMR_EOC15 (0x1u << 15) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 15 */ +#define ADC_IMR_EOCAL (0x1u << 23) /**< \brief (ADC_IMR) End of Calibration Sequence */ +#define ADC_IMR_DRDY (0x1u << 24) /**< \brief (ADC_IMR) Data Ready Interrupt Mask */ +#define ADC_IMR_GOVRE (0x1u << 25) /**< \brief (ADC_IMR) General Overrun Error Interrupt Mask */ +#define ADC_IMR_COMPE (0x1u << 26) /**< \brief (ADC_IMR) Comparison Event Interrupt Mask */ +#define ADC_IMR_ENDRX (0x1u << 27) /**< \brief (ADC_IMR) End of Receive Buffer Interrupt Mask */ +#define ADC_IMR_RXBUFF (0x1u << 28) /**< \brief (ADC_IMR) Receive Buffer Full Interrupt Mask */ +/* -------- ADC_ISR : (ADC Offset: 0x30) Interrupt Status Register -------- */ +#define ADC_ISR_EOC0 (0x1u << 0) /**< \brief (ADC_ISR) End of Conversion 0 */ +#define ADC_ISR_EOC1 (0x1u << 1) /**< \brief (ADC_ISR) End of Conversion 1 */ +#define ADC_ISR_EOC2 (0x1u << 2) /**< \brief (ADC_ISR) End of Conversion 2 */ +#define ADC_ISR_EOC3 (0x1u << 3) /**< \brief (ADC_ISR) End of Conversion 3 */ +#define ADC_ISR_EOC4 (0x1u << 4) /**< \brief (ADC_ISR) End of Conversion 4 */ +#define ADC_ISR_EOC5 (0x1u << 5) /**< \brief (ADC_ISR) End of Conversion 5 */ +#define ADC_ISR_EOC6 (0x1u << 6) /**< \brief (ADC_ISR) End of Conversion 6 */ +#define ADC_ISR_EOC7 (0x1u << 7) /**< \brief (ADC_ISR) End of Conversion 7 */ +#define ADC_ISR_EOC8 (0x1u << 8) /**< \brief (ADC_ISR) End of Conversion 8 */ +#define ADC_ISR_EOC9 (0x1u << 9) /**< \brief (ADC_ISR) End of Conversion 9 */ +#define ADC_ISR_EOC10 (0x1u << 10) /**< \brief (ADC_ISR) End of Conversion 10 */ +#define ADC_ISR_EOC11 (0x1u << 11) /**< \brief (ADC_ISR) End of Conversion 11 */ +#define ADC_ISR_EOC12 (0x1u << 12) /**< \brief (ADC_ISR) End of Conversion 12 */ +#define ADC_ISR_EOC13 (0x1u << 13) /**< \brief (ADC_ISR) End of Conversion 13 */ +#define ADC_ISR_EOC14 (0x1u << 14) /**< \brief (ADC_ISR) End of Conversion 14 */ +#define ADC_ISR_EOC15 (0x1u << 15) /**< \brief (ADC_ISR) End of Conversion 15 */ +#define ADC_ISR_EOCAL (0x1u << 23) /**< \brief (ADC_ISR) End of Calibration Sequence */ +#define ADC_ISR_DRDY (0x1u << 24) /**< \brief (ADC_ISR) Data Ready */ +#define ADC_ISR_GOVRE (0x1u << 25) /**< \brief (ADC_ISR) General Overrun Error */ +#define ADC_ISR_COMPE (0x1u << 26) /**< \brief (ADC_ISR) Comparison Error */ +#define ADC_ISR_ENDRX (0x1u << 27) /**< \brief (ADC_ISR) End of RX Buffer */ +#define ADC_ISR_RXBUFF (0x1u << 28) /**< \brief (ADC_ISR) RX Buffer Full */ +/* -------- ADC_OVER : (ADC Offset: 0x3C) Overrun Status Register -------- */ +#define ADC_OVER_OVRE0 (0x1u << 0) /**< \brief (ADC_OVER) Overrun Error 0 */ +#define ADC_OVER_OVRE1 (0x1u << 1) /**< \brief (ADC_OVER) Overrun Error 1 */ +#define ADC_OVER_OVRE2 (0x1u << 2) /**< \brief (ADC_OVER) Overrun Error 2 */ +#define ADC_OVER_OVRE3 (0x1u << 3) /**< \brief (ADC_OVER) Overrun Error 3 */ +#define ADC_OVER_OVRE4 (0x1u << 4) /**< \brief (ADC_OVER) Overrun Error 4 */ +#define ADC_OVER_OVRE5 (0x1u << 5) /**< \brief (ADC_OVER) Overrun Error 5 */ +#define ADC_OVER_OVRE6 (0x1u << 6) /**< \brief (ADC_OVER) Overrun Error 6 */ +#define ADC_OVER_OVRE7 (0x1u << 7) /**< \brief (ADC_OVER) Overrun Error 7 */ +#define ADC_OVER_OVRE8 (0x1u << 8) /**< \brief (ADC_OVER) Overrun Error 8 */ +#define ADC_OVER_OVRE9 (0x1u << 9) /**< \brief (ADC_OVER) Overrun Error 9 */ +#define ADC_OVER_OVRE10 (0x1u << 10) /**< \brief (ADC_OVER) Overrun Error 10 */ +#define ADC_OVER_OVRE11 (0x1u << 11) /**< \brief (ADC_OVER) Overrun Error 11 */ +#define ADC_OVER_OVRE12 (0x1u << 12) /**< \brief (ADC_OVER) Overrun Error 12 */ +#define ADC_OVER_OVRE13 (0x1u << 13) /**< \brief (ADC_OVER) Overrun Error 13 */ +#define ADC_OVER_OVRE14 (0x1u << 14) /**< \brief (ADC_OVER) Overrun Error 14 */ +#define ADC_OVER_OVRE15 (0x1u << 15) /**< \brief (ADC_OVER) Overrun Error 15 */ +/* -------- ADC_EMR : (ADC Offset: 0x40) Extended Mode Register -------- */ +#define ADC_EMR_CMPMODE_Pos 0 +#define ADC_EMR_CMPMODE_Msk (0x3u << ADC_EMR_CMPMODE_Pos) /**< \brief (ADC_EMR) Comparison Mode */ +#define ADC_EMR_CMPMODE_LOW (0x0u << 0) /**< \brief (ADC_EMR) Generates an event when the converted data is lower than the low threshold of the window. */ +#define ADC_EMR_CMPMODE_HIGH (0x1u << 0) /**< \brief (ADC_EMR) Generates an event when the converted data is higher than the high threshold of the window. */ +#define ADC_EMR_CMPMODE_IN (0x2u << 0) /**< \brief (ADC_EMR) Generates an event when the converted data is in the comparison window. */ +#define ADC_EMR_CMPMODE_OUT (0x3u << 0) /**< \brief (ADC_EMR) Generates an event when the converted data is out of the comparison window. */ +#define ADC_EMR_CMPSEL_Pos 4 +#define ADC_EMR_CMPSEL_Msk (0xfu << ADC_EMR_CMPSEL_Pos) /**< \brief (ADC_EMR) Comparison Selected Channel */ +#define ADC_EMR_CMPSEL(value) ((ADC_EMR_CMPSEL_Msk & ((value) << ADC_EMR_CMPSEL_Pos))) +#define ADC_EMR_CMPALL (0x1u << 9) /**< \brief (ADC_EMR) Compare All Channels */ +#define ADC_EMR_CMPFILTER_Pos 12 +#define ADC_EMR_CMPFILTER_Msk (0x3u << ADC_EMR_CMPFILTER_Pos) /**< \brief (ADC_EMR) Compare Event Filtering */ +#define ADC_EMR_CMPFILTER(value) ((ADC_EMR_CMPFILTER_Msk & ((value) << ADC_EMR_CMPFILTER_Pos))) +#define ADC_EMR_TAG (0x1u << 24) /**< \brief (ADC_EMR) TAG of ADC_LDCR register */ +/* -------- ADC_CWR : (ADC Offset: 0x44) Compare Window Register -------- */ +#define ADC_CWR_LOWTHRES_Pos 0 +#define ADC_CWR_LOWTHRES_Msk (0xfffu << ADC_CWR_LOWTHRES_Pos) /**< \brief (ADC_CWR) Low Threshold */ +#define ADC_CWR_LOWTHRES(value) ((ADC_CWR_LOWTHRES_Msk & ((value) << ADC_CWR_LOWTHRES_Pos))) +#define ADC_CWR_HIGHTHRES_Pos 16 +#define ADC_CWR_HIGHTHRES_Msk (0xfffu << ADC_CWR_HIGHTHRES_Pos) /**< \brief (ADC_CWR) High Threshold */ +#define ADC_CWR_HIGHTHRES(value) ((ADC_CWR_HIGHTHRES_Msk & ((value) << ADC_CWR_HIGHTHRES_Pos))) +/* -------- ADC_CGR : (ADC Offset: 0x48) Channel Gain Register -------- */ +#define ADC_CGR_GAIN0_Pos 0 +#define ADC_CGR_GAIN0_Msk (0x3u << ADC_CGR_GAIN0_Pos) /**< \brief (ADC_CGR) Gain for channel 0 */ +#define ADC_CGR_GAIN0(value) ((ADC_CGR_GAIN0_Msk & ((value) << ADC_CGR_GAIN0_Pos))) +#define ADC_CGR_GAIN1_Pos 2 +#define ADC_CGR_GAIN1_Msk (0x3u << ADC_CGR_GAIN1_Pos) /**< \brief (ADC_CGR) Gain for channel 1 */ +#define ADC_CGR_GAIN1(value) ((ADC_CGR_GAIN1_Msk & ((value) << ADC_CGR_GAIN1_Pos))) +#define ADC_CGR_GAIN2_Pos 4 +#define ADC_CGR_GAIN2_Msk (0x3u << ADC_CGR_GAIN2_Pos) /**< \brief (ADC_CGR) Gain for channel 2 */ +#define ADC_CGR_GAIN2(value) ((ADC_CGR_GAIN2_Msk & ((value) << ADC_CGR_GAIN2_Pos))) +#define ADC_CGR_GAIN3_Pos 6 +#define ADC_CGR_GAIN3_Msk (0x3u << ADC_CGR_GAIN3_Pos) /**< \brief (ADC_CGR) Gain for channel 3 */ +#define ADC_CGR_GAIN3(value) ((ADC_CGR_GAIN3_Msk & ((value) << ADC_CGR_GAIN3_Pos))) +#define ADC_CGR_GAIN4_Pos 8 +#define ADC_CGR_GAIN4_Msk (0x3u << ADC_CGR_GAIN4_Pos) /**< \brief (ADC_CGR) Gain for channel 4 */ +#define ADC_CGR_GAIN4(value) ((ADC_CGR_GAIN4_Msk & ((value) << ADC_CGR_GAIN4_Pos))) +#define ADC_CGR_GAIN5_Pos 10 +#define ADC_CGR_GAIN5_Msk (0x3u << ADC_CGR_GAIN5_Pos) /**< \brief (ADC_CGR) Gain for channel 5 */ +#define ADC_CGR_GAIN5(value) ((ADC_CGR_GAIN5_Msk & ((value) << ADC_CGR_GAIN5_Pos))) +#define ADC_CGR_GAIN6_Pos 12 +#define ADC_CGR_GAIN6_Msk (0x3u << ADC_CGR_GAIN6_Pos) /**< \brief (ADC_CGR) Gain for channel 6 */ +#define ADC_CGR_GAIN6(value) ((ADC_CGR_GAIN6_Msk & ((value) << ADC_CGR_GAIN6_Pos))) +#define ADC_CGR_GAIN7_Pos 14 +#define ADC_CGR_GAIN7_Msk (0x3u << ADC_CGR_GAIN7_Pos) /**< \brief (ADC_CGR) Gain for channel 7 */ +#define ADC_CGR_GAIN7(value) ((ADC_CGR_GAIN7_Msk & ((value) << ADC_CGR_GAIN7_Pos))) +#define ADC_CGR_GAIN8_Pos 16 +#define ADC_CGR_GAIN8_Msk (0x3u << ADC_CGR_GAIN8_Pos) /**< \brief (ADC_CGR) Gain for channel 8 */ +#define ADC_CGR_GAIN8(value) ((ADC_CGR_GAIN8_Msk & ((value) << ADC_CGR_GAIN8_Pos))) +#define ADC_CGR_GAIN9_Pos 18 +#define ADC_CGR_GAIN9_Msk (0x3u << ADC_CGR_GAIN9_Pos) /**< \brief (ADC_CGR) Gain for channel 9 */ +#define ADC_CGR_GAIN9(value) ((ADC_CGR_GAIN9_Msk & ((value) << ADC_CGR_GAIN9_Pos))) +#define ADC_CGR_GAIN10_Pos 20 +#define ADC_CGR_GAIN10_Msk (0x3u << ADC_CGR_GAIN10_Pos) /**< \brief (ADC_CGR) Gain for channel 10 */ +#define ADC_CGR_GAIN10(value) ((ADC_CGR_GAIN10_Msk & ((value) << ADC_CGR_GAIN10_Pos))) +#define ADC_CGR_GAIN11_Pos 22 +#define ADC_CGR_GAIN11_Msk (0x3u << ADC_CGR_GAIN11_Pos) /**< \brief (ADC_CGR) Gain for channel 11 */ +#define ADC_CGR_GAIN11(value) ((ADC_CGR_GAIN11_Msk & ((value) << ADC_CGR_GAIN11_Pos))) +#define ADC_CGR_GAIN12_Pos 24 +#define ADC_CGR_GAIN12_Msk (0x3u << ADC_CGR_GAIN12_Pos) /**< \brief (ADC_CGR) Gain for channel 12 */ +#define ADC_CGR_GAIN12(value) ((ADC_CGR_GAIN12_Msk & ((value) << ADC_CGR_GAIN12_Pos))) +#define ADC_CGR_GAIN13_Pos 26 +#define ADC_CGR_GAIN13_Msk (0x3u << ADC_CGR_GAIN13_Pos) /**< \brief (ADC_CGR) Gain for channel 13 */ +#define ADC_CGR_GAIN13(value) ((ADC_CGR_GAIN13_Msk & ((value) << ADC_CGR_GAIN13_Pos))) +#define ADC_CGR_GAIN14_Pos 28 +#define ADC_CGR_GAIN14_Msk (0x3u << ADC_CGR_GAIN14_Pos) /**< \brief (ADC_CGR) Gain for channel 14 */ +#define ADC_CGR_GAIN14(value) ((ADC_CGR_GAIN14_Msk & ((value) << ADC_CGR_GAIN14_Pos))) +#define ADC_CGR_GAIN15_Pos 30 +#define ADC_CGR_GAIN15_Msk (0x3u << ADC_CGR_GAIN15_Pos) /**< \brief (ADC_CGR) Gain for channel 15 */ +#define ADC_CGR_GAIN15(value) ((ADC_CGR_GAIN15_Msk & ((value) << ADC_CGR_GAIN15_Pos))) +/* -------- ADC_COR : (ADC Offset: 0x4C) Channel Offset Register -------- */ +#define ADC_COR_OFF0 (0x1u << 0) /**< \brief (ADC_COR) Offset for channel 0 */ +#define ADC_COR_OFF1 (0x1u << 1) /**< \brief (ADC_COR) Offset for channel 1 */ +#define ADC_COR_OFF2 (0x1u << 2) /**< \brief (ADC_COR) Offset for channel 2 */ +#define ADC_COR_OFF3 (0x1u << 3) /**< \brief (ADC_COR) Offset for channel 3 */ +#define ADC_COR_OFF4 (0x1u << 4) /**< \brief (ADC_COR) Offset for channel 4 */ +#define ADC_COR_OFF5 (0x1u << 5) /**< \brief (ADC_COR) Offset for channel 5 */ +#define ADC_COR_OFF6 (0x1u << 6) /**< \brief (ADC_COR) Offset for channel 6 */ +#define ADC_COR_OFF7 (0x1u << 7) /**< \brief (ADC_COR) Offset for channel 7 */ +#define ADC_COR_OFF8 (0x1u << 8) /**< \brief (ADC_COR) Offset for channel 8 */ +#define ADC_COR_OFF9 (0x1u << 9) /**< \brief (ADC_COR) Offset for channel 9 */ +#define ADC_COR_OFF10 (0x1u << 10) /**< \brief (ADC_COR) Offset for channel 10 */ +#define ADC_COR_OFF11 (0x1u << 11) /**< \brief (ADC_COR) Offset for channel 11 */ +#define ADC_COR_OFF12 (0x1u << 12) /**< \brief (ADC_COR) Offset for channel 12 */ +#define ADC_COR_OFF13 (0x1u << 13) /**< \brief (ADC_COR) Offset for channel 13 */ +#define ADC_COR_OFF14 (0x1u << 14) /**< \brief (ADC_COR) Offset for channel 14 */ +#define ADC_COR_OFF15 (0x1u << 15) /**< \brief (ADC_COR) Offset for channel 15 */ +#define ADC_COR_DIFF0 (0x1u << 16) /**< \brief (ADC_COR) Differential inputs for channel 0 */ +#define ADC_COR_DIFF1 (0x1u << 17) /**< \brief (ADC_COR) Differential inputs for channel 1 */ +#define ADC_COR_DIFF2 (0x1u << 18) /**< \brief (ADC_COR) Differential inputs for channel 2 */ +#define ADC_COR_DIFF3 (0x1u << 19) /**< \brief (ADC_COR) Differential inputs for channel 3 */ +#define ADC_COR_DIFF4 (0x1u << 20) /**< \brief (ADC_COR) Differential inputs for channel 4 */ +#define ADC_COR_DIFF5 (0x1u << 21) /**< \brief (ADC_COR) Differential inputs for channel 5 */ +#define ADC_COR_DIFF6 (0x1u << 22) /**< \brief (ADC_COR) Differential inputs for channel 6 */ +#define ADC_COR_DIFF7 (0x1u << 23) /**< \brief (ADC_COR) Differential inputs for channel 7 */ +#define ADC_COR_DIFF8 (0x1u << 24) /**< \brief (ADC_COR) Differential inputs for channel 8 */ +#define ADC_COR_DIFF9 (0x1u << 25) /**< \brief (ADC_COR) Differential inputs for channel 9 */ +#define ADC_COR_DIFF10 (0x1u << 26) /**< \brief (ADC_COR) Differential inputs for channel 10 */ +#define ADC_COR_DIFF11 (0x1u << 27) /**< \brief (ADC_COR) Differential inputs for channel 11 */ +#define ADC_COR_DIFF12 (0x1u << 28) /**< \brief (ADC_COR) Differential inputs for channel 12 */ +#define ADC_COR_DIFF13 (0x1u << 29) /**< \brief (ADC_COR) Differential inputs for channel 13 */ +#define ADC_COR_DIFF14 (0x1u << 30) /**< \brief (ADC_COR) Differential inputs for channel 14 */ +#define ADC_COR_DIFF15 (0x1u << 31) /**< \brief (ADC_COR) Differential inputs for channel 15 */ +/* -------- ADC_CDR[15] : (ADC Offset: 0x50) Channel Data Register -------- */ +#define ADC_CDR_DATA_Pos 0 +#define ADC_CDR_DATA_Msk (0xfffu << ADC_CDR_DATA_Pos) /**< \brief (ADC_CDR[15]) Converted Data */ +/* -------- ADC_ACR : (ADC Offset: 0x94) Analog Control Register -------- */ +#define ADC_ACR_TSON (0x1u << 4) /**< \brief (ADC_ACR) Temperature Sensor On */ +#define ADC_ACR_IBCTL_Pos 8 +#define ADC_ACR_IBCTL_Msk (0x3u << ADC_ACR_IBCTL_Pos) /**< \brief (ADC_ACR) ADC Bias Current Control */ +#define ADC_ACR_IBCTL(value) ((ADC_ACR_IBCTL_Msk & ((value) << ADC_ACR_IBCTL_Pos))) +/* -------- ADC_WPMR : (ADC Offset: 0xE4) Write Protect Mode Register -------- */ +#define ADC_WPMR_WPEN (0x1u << 0) /**< \brief (ADC_WPMR) Write Protect Enable */ +#define ADC_WPMR_WPKEY_Pos 8 +#define ADC_WPMR_WPKEY_Msk (0xffffffu << ADC_WPMR_WPKEY_Pos) /**< \brief (ADC_WPMR) Write Protect KEY */ +#define ADC_WPMR_WPKEY(value) ((ADC_WPMR_WPKEY_Msk & ((value) << ADC_WPMR_WPKEY_Pos))) +/* -------- ADC_WPSR : (ADC Offset: 0xE8) Write Protect Status Register -------- */ +#define ADC_WPSR_WPVS (0x1u << 0) /**< \brief (ADC_WPSR) Write Protect Violation Status */ +#define ADC_WPSR_WPVSRC_Pos 8 +#define ADC_WPSR_WPVSRC_Msk (0xffffu << ADC_WPSR_WPVSRC_Pos) /**< \brief (ADC_WPSR) Write Protect Violation Source */ +/* -------- ADC_RPR : (ADC Offset: 0x100) Receive Pointer Register -------- */ +#define ADC_RPR_RXPTR_Pos 0 +#define ADC_RPR_RXPTR_Msk (0xffffffffu << ADC_RPR_RXPTR_Pos) /**< \brief (ADC_RPR) Receive Pointer Register */ +#define ADC_RPR_RXPTR(value) ((ADC_RPR_RXPTR_Msk & ((value) << ADC_RPR_RXPTR_Pos))) +/* -------- ADC_RCR : (ADC Offset: 0x104) Receive Counter Register -------- */ +#define ADC_RCR_RXCTR_Pos 0 +#define ADC_RCR_RXCTR_Msk (0xffffu << ADC_RCR_RXCTR_Pos) /**< \brief (ADC_RCR) Receive Counter Register */ +#define ADC_RCR_RXCTR(value) ((ADC_RCR_RXCTR_Msk & ((value) << ADC_RCR_RXCTR_Pos))) +/* -------- ADC_TPR : (ADC Offset: 0x108) Transmit Pointer Register -------- */ +#define ADC_TPR_TXPTR_Pos 0 +#define ADC_TPR_TXPTR_Msk (0xffffffffu << ADC_TPR_TXPTR_Pos) /**< \brief (ADC_TPR) Transmit Counter Register */ +#define ADC_TPR_TXPTR(value) ((ADC_TPR_TXPTR_Msk & ((value) << ADC_TPR_TXPTR_Pos))) +/* -------- ADC_TCR : (ADC Offset: 0x10C) Transmit Counter Register -------- */ +#define ADC_TCR_TXCTR_Pos 0 +#define ADC_TCR_TXCTR_Msk (0xffffu << ADC_TCR_TXCTR_Pos) /**< \brief (ADC_TCR) Transmit Counter Register */ +#define ADC_TCR_TXCTR(value) ((ADC_TCR_TXCTR_Msk & ((value) << ADC_TCR_TXCTR_Pos))) +/* -------- ADC_RNPR : (ADC Offset: 0x110) Receive Next Pointer Register -------- */ +#define ADC_RNPR_RXNPTR_Pos 0 +#define ADC_RNPR_RXNPTR_Msk (0xffffffffu << ADC_RNPR_RXNPTR_Pos) /**< \brief (ADC_RNPR) Receive Next Pointer */ +#define ADC_RNPR_RXNPTR(value) ((ADC_RNPR_RXNPTR_Msk & ((value) << ADC_RNPR_RXNPTR_Pos))) +/* -------- ADC_RNCR : (ADC Offset: 0x114) Receive Next Counter Register -------- */ +#define ADC_RNCR_RXNCTR_Pos 0 +#define ADC_RNCR_RXNCTR_Msk (0xffffu << ADC_RNCR_RXNCTR_Pos) /**< \brief (ADC_RNCR) Receive Next Counter */ +#define ADC_RNCR_RXNCTR(value) ((ADC_RNCR_RXNCTR_Msk & ((value) << ADC_RNCR_RXNCTR_Pos))) +/* -------- ADC_TNPR : (ADC Offset: 0x118) Transmit Next Pointer Register -------- */ +#define ADC_TNPR_TXNPTR_Pos 0 +#define ADC_TNPR_TXNPTR_Msk (0xffffffffu << ADC_TNPR_TXNPTR_Pos) /**< \brief (ADC_TNPR) Transmit Next Pointer */ +#define ADC_TNPR_TXNPTR(value) ((ADC_TNPR_TXNPTR_Msk & ((value) << ADC_TNPR_TXNPTR_Pos))) +/* -------- ADC_TNCR : (ADC Offset: 0x11C) Transmit Next Counter Register -------- */ +#define ADC_TNCR_TXNCTR_Pos 0 +#define ADC_TNCR_TXNCTR_Msk (0xffffu << ADC_TNCR_TXNCTR_Pos) /**< \brief (ADC_TNCR) Transmit Counter Next */ +#define ADC_TNCR_TXNCTR(value) ((ADC_TNCR_TXNCTR_Msk & ((value) << ADC_TNCR_TXNCTR_Pos))) +/* -------- ADC_PTCR : (ADC Offset: 0x120) Transfer Control Register -------- */ +#define ADC_PTCR_RXTEN (0x1u << 0) /**< \brief (ADC_PTCR) Receiver Transfer Enable */ +#define ADC_PTCR_RXTDIS (0x1u << 1) /**< \brief (ADC_PTCR) Receiver Transfer Disable */ +#define ADC_PTCR_TXTEN (0x1u << 8) /**< \brief (ADC_PTCR) Transmitter Transfer Enable */ +#define ADC_PTCR_TXTDIS (0x1u << 9) /**< \brief (ADC_PTCR) Transmitter Transfer Disable */ +/* -------- ADC_PTSR : (ADC Offset: 0x124) Transfer Status Register -------- */ +#define ADC_PTSR_RXTEN (0x1u << 0) /**< \brief (ADC_PTSR) Receiver Transfer Enable */ +#define ADC_PTSR_TXTEN (0x1u << 8) /**< \brief (ADC_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3S8_ADC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_chipid.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_chipid.h new file mode 100644 index 000000000..91839ba4f --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_chipid.h @@ -0,0 +1,159 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_CHIPID_COMPONENT_ +#define _SAM3S8_CHIPID_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Chip Identifier */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_CHIPID Chip Identifier */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Chipid hardware registers */ +typedef struct { + RoReg CHIPID_CIDR; /**< \brief (Chipid Offset: 0x0) Chip ID Register */ + RoReg CHIPID_EXID; /**< \brief (Chipid Offset: 0x4) Chip ID Extension Register */ +} Chipid; +#endif /* __ASSEMBLY__ */ +/* -------- CHIPID_CIDR : (CHIPID Offset: 0x0) Chip ID Register -------- */ +#define CHIPID_CIDR_VERSION_Pos 0 +#define CHIPID_CIDR_VERSION_Msk (0x1fu << CHIPID_CIDR_VERSION_Pos) /**< \brief (CHIPID_CIDR) Version of the Device */ +#define CHIPID_CIDR_EPROC_Pos 5 +#define CHIPID_CIDR_EPROC_Msk (0x7u << CHIPID_CIDR_EPROC_Pos) /**< \brief (CHIPID_CIDR) Embedded Processor */ +#define CHIPID_CIDR_EPROC_ARM946ES (0x1u << 5) /**< \brief (CHIPID_CIDR) ARM946ES */ +#define CHIPID_CIDR_EPROC_ARM7TDMI (0x2u << 5) /**< \brief (CHIPID_CIDR) ARM7TDMI */ +#define CHIPID_CIDR_EPROC_CM3 (0x3u << 5) /**< \brief (CHIPID_CIDR) Cortex-M3 */ +#define CHIPID_CIDR_EPROC_ARM920T (0x4u << 5) /**< \brief (CHIPID_CIDR) ARM920T */ +#define CHIPID_CIDR_EPROC_ARM926EJS (0x5u << 5) /**< \brief (CHIPID_CIDR) ARM926EJS */ +#define CHIPID_CIDR_EPROC_CA5 (0x6u << 5) /**< \brief (CHIPID_CIDR) Cortex-A5 */ +#define CHIPID_CIDR_EPROC_CM4 (0x7u << 5) /**< \brief (CHIPID_CIDR) Cortex-M4 */ +#define CHIPID_CIDR_NVPSIZ_Pos 8 +#define CHIPID_CIDR_NVPSIZ_Msk (0xfu << CHIPID_CIDR_NVPSIZ_Pos) /**< \brief (CHIPID_CIDR) Nonvolatile Program Memory Size */ +#define CHIPID_CIDR_NVPSIZ_NONE (0x0u << 8) /**< \brief (CHIPID_CIDR) None */ +#define CHIPID_CIDR_NVPSIZ_8K (0x1u << 8) /**< \brief (CHIPID_CIDR) 8K bytes */ +#define CHIPID_CIDR_NVPSIZ_16K (0x2u << 8) /**< \brief (CHIPID_CIDR) 16K bytes */ +#define CHIPID_CIDR_NVPSIZ_32K (0x3u << 8) /**< \brief (CHIPID_CIDR) 32K bytes */ +#define CHIPID_CIDR_NVPSIZ_64K (0x5u << 8) /**< \brief (CHIPID_CIDR) 64K bytes */ +#define CHIPID_CIDR_NVPSIZ_128K (0x7u << 8) /**< \brief (CHIPID_CIDR) 128K bytes */ +#define CHIPID_CIDR_NVPSIZ_256K (0x9u << 8) /**< \brief (CHIPID_CIDR) 256K bytes */ +#define CHIPID_CIDR_NVPSIZ_512K (0xAu << 8) /**< \brief (CHIPID_CIDR) 512K bytes */ +#define CHIPID_CIDR_NVPSIZ_1024K (0xCu << 8) /**< \brief (CHIPID_CIDR) 1024K bytes */ +#define CHIPID_CIDR_NVPSIZ_2048K (0xEu << 8) /**< \brief (CHIPID_CIDR) 2048K bytes */ +#define CHIPID_CIDR_NVPSIZ2_Pos 12 +#define CHIPID_CIDR_NVPSIZ2_Msk (0xfu << CHIPID_CIDR_NVPSIZ2_Pos) /**< \brief (CHIPID_CIDR) Second Nonvolatile Program Memory Size */ +#define CHIPID_CIDR_NVPSIZ2_NONE (0x0u << 12) /**< \brief (CHIPID_CIDR) None */ +#define CHIPID_CIDR_NVPSIZ2_8K (0x1u << 12) /**< \brief (CHIPID_CIDR) 8K bytes */ +#define CHIPID_CIDR_NVPSIZ2_16K (0x2u << 12) /**< \brief (CHIPID_CIDR) 16K bytes */ +#define CHIPID_CIDR_NVPSIZ2_32K (0x3u << 12) /**< \brief (CHIPID_CIDR) 32K bytes */ +#define CHIPID_CIDR_NVPSIZ2_64K (0x5u << 12) /**< \brief (CHIPID_CIDR) 64K bytes */ +#define CHIPID_CIDR_NVPSIZ2_128K (0x7u << 12) /**< \brief (CHIPID_CIDR) 128K bytes */ +#define CHIPID_CIDR_NVPSIZ2_256K (0x9u << 12) /**< \brief (CHIPID_CIDR) 256K bytes */ +#define CHIPID_CIDR_NVPSIZ2_512K (0xAu << 12) /**< \brief (CHIPID_CIDR) 512K bytes */ +#define CHIPID_CIDR_NVPSIZ2_1024K (0xCu << 12) /**< \brief (CHIPID_CIDR) 1024K bytes */ +#define CHIPID_CIDR_NVPSIZ2_2048K (0xEu << 12) /**< \brief (CHIPID_CIDR) 2048K bytes */ +#define CHIPID_CIDR_SRAMSIZ_Pos 16 +#define CHIPID_CIDR_SRAMSIZ_Msk (0xfu << CHIPID_CIDR_SRAMSIZ_Pos) /**< \brief (CHIPID_CIDR) Internal SRAM Size */ +#define CHIPID_CIDR_SRAMSIZ_48K (0x0u << 16) /**< \brief (CHIPID_CIDR) 48K bytes */ +#define CHIPID_CIDR_SRAMSIZ_1K (0x1u << 16) /**< \brief (CHIPID_CIDR) 1K bytes */ +#define CHIPID_CIDR_SRAMSIZ_2K (0x2u << 16) /**< \brief (CHIPID_CIDR) 2K bytes */ +#define CHIPID_CIDR_SRAMSIZ_6K (0x3u << 16) /**< \brief (CHIPID_CIDR) 6K bytes */ +#define CHIPID_CIDR_SRAMSIZ_24K (0x4u << 16) /**< \brief (CHIPID_CIDR) 24K bytes */ +#define CHIPID_CIDR_SRAMSIZ_4K (0x5u << 16) /**< \brief (CHIPID_CIDR) 4K bytes */ +#define CHIPID_CIDR_SRAMSIZ_80K (0x6u << 16) /**< \brief (CHIPID_CIDR) 80K bytes */ +#define CHIPID_CIDR_SRAMSIZ_160K (0x7u << 16) /**< \brief (CHIPID_CIDR) 160K bytes */ +#define CHIPID_CIDR_SRAMSIZ_8K (0x8u << 16) /**< \brief (CHIPID_CIDR) 8K bytes */ +#define CHIPID_CIDR_SRAMSIZ_16K (0x9u << 16) /**< \brief (CHIPID_CIDR) 16K bytes */ +#define CHIPID_CIDR_SRAMSIZ_32K (0xAu << 16) /**< \brief (CHIPID_CIDR) 32K bytes */ +#define CHIPID_CIDR_SRAMSIZ_64K (0xBu << 16) /**< \brief (CHIPID_CIDR) 64K bytes */ +#define CHIPID_CIDR_SRAMSIZ_128K (0xCu << 16) /**< \brief (CHIPID_CIDR) 128K bytes */ +#define CHIPID_CIDR_SRAMSIZ_256K (0xDu << 16) /**< \brief (CHIPID_CIDR) 256K bytes */ +#define CHIPID_CIDR_SRAMSIZ_96K (0xEu << 16) /**< \brief (CHIPID_CIDR) 96K bytes */ +#define CHIPID_CIDR_SRAMSIZ_512K (0xFu << 16) /**< \brief (CHIPID_CIDR) 512K bytes */ +#define CHIPID_CIDR_ARCH_Pos 20 +#define CHIPID_CIDR_ARCH_Msk (0xffu << CHIPID_CIDR_ARCH_Pos) /**< \brief (CHIPID_CIDR) Architecture Identifier */ +#define CHIPID_CIDR_ARCH_AT91SAM9xx (0x19u << 20) /**< \brief (CHIPID_CIDR) AT91SAM9xx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM9XExx (0x29u << 20) /**< \brief (CHIPID_CIDR) AT91SAM9XExx Series */ +#define CHIPID_CIDR_ARCH_AT91x34 (0x34u << 20) /**< \brief (CHIPID_CIDR) AT91x34 Series */ +#define CHIPID_CIDR_ARCH_CAP7 (0x37u << 20) /**< \brief (CHIPID_CIDR) CAP7 Series */ +#define CHIPID_CIDR_ARCH_CAP9 (0x39u << 20) /**< \brief (CHIPID_CIDR) CAP9 Series */ +#define CHIPID_CIDR_ARCH_CAP11 (0x3Bu << 20) /**< \brief (CHIPID_CIDR) CAP11 Series */ +#define CHIPID_CIDR_ARCH_AT91x40 (0x40u << 20) /**< \brief (CHIPID_CIDR) AT91x40 Series */ +#define CHIPID_CIDR_ARCH_AT91x42 (0x42u << 20) /**< \brief (CHIPID_CIDR) AT91x42 Series */ +#define CHIPID_CIDR_ARCH_AT91x55 (0x55u << 20) /**< \brief (CHIPID_CIDR) AT91x55 Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Axx (0x60u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Axx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7AQxx (0x61u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7AQxx Series */ +#define CHIPID_CIDR_ARCH_AT91x63 (0x63u << 20) /**< \brief (CHIPID_CIDR) AT91x63 Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Sxx (0x70u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Sxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7XCxx (0x71u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7XCxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7SExx (0x72u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7SExx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Lxx (0x73u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Lxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Xxx (0x75u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Xxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7SLxx (0x76u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7SLxx Series */ +#define CHIPID_CIDR_ARCH_SAM3UxC (0x80u << 20) /**< \brief (CHIPID_CIDR) SAM3UxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3UxE (0x81u << 20) /**< \brief (CHIPID_CIDR) SAM3UxE Series (144-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3AxC (0x83u << 20) /**< \brief (CHIPID_CIDR) SAM3AxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4AxC (0x83u << 20) /**< \brief (CHIPID_CIDR) SAM4AxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3XxC (0x84u << 20) /**< \brief (CHIPID_CIDR) SAM3XxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4XxC (0x84u << 20) /**< \brief (CHIPID_CIDR) SAM4XxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3XxE (0x85u << 20) /**< \brief (CHIPID_CIDR) SAM3XxE Series (144-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4XxE (0x85u << 20) /**< \brief (CHIPID_CIDR) SAM4XxE Series (144-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3XxG (0x86u << 20) /**< \brief (CHIPID_CIDR) SAM3XxG Series (208/217-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4XxG (0x86u << 20) /**< \brief (CHIPID_CIDR) SAM4XxG Series (208/217-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SxA (0x88u << 20) /**< \brief (CHIPID_CIDR) SAM3SxASeries (48-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4SxA (0x88u << 20) /**< \brief (CHIPID_CIDR) SAM4SxA Series (48-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SxB (0x89u << 20) /**< \brief (CHIPID_CIDR) SAM3SxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4SxB (0x89u << 20) /**< \brief (CHIPID_CIDR) SAM4SxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SxC (0x8Au << 20) /**< \brief (CHIPID_CIDR) SAM3SxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4SxC (0x8Au << 20) /**< \brief (CHIPID_CIDR) SAM4SxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_AT91x92 (0x92u << 20) /**< \brief (CHIPID_CIDR) AT91x92 Series */ +#define CHIPID_CIDR_ARCH_SAM3NxA (0x93u << 20) /**< \brief (CHIPID_CIDR) SAM3NxA Series (48-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3NxB (0x94u << 20) /**< \brief (CHIPID_CIDR) SAM3NxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3NxC (0x95u << 20) /**< \brief (CHIPID_CIDR) SAM3NxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SDxB (0x99u << 20) /**< \brief (CHIPID_CIDR) SAM3SDxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SDxC (0x9Au << 20) /**< \brief (CHIPID_CIDR) SAM3SDxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM5A (0xA5u << 20) /**< \brief (CHIPID_CIDR) SAM5A */ +#define CHIPID_CIDR_ARCH_AT75Cxx (0xF0u << 20) /**< \brief (CHIPID_CIDR) AT75Cxx Series */ +#define CHIPID_CIDR_NVPTYP_Pos 28 +#define CHIPID_CIDR_NVPTYP_Msk (0x7u << CHIPID_CIDR_NVPTYP_Pos) /**< \brief (CHIPID_CIDR) Nonvolatile Program Memory Type */ +#define CHIPID_CIDR_NVPTYP_ROM (0x0u << 28) /**< \brief (CHIPID_CIDR) ROM */ +#define CHIPID_CIDR_NVPTYP_ROMLESS (0x1u << 28) /**< \brief (CHIPID_CIDR) ROMless or on-chip Flash */ +#define CHIPID_CIDR_NVPTYP_FLASH (0x2u << 28) /**< \brief (CHIPID_CIDR) Embedded Flash Memory */ +#define CHIPID_CIDR_NVPTYP_ROM_FLASH (0x3u << 28) /**< \brief (CHIPID_CIDR) ROM and Embedded Flash MemoryNVPSIZ is ROM size NVPSIZ2 is Flash size */ +#define CHIPID_CIDR_NVPTYP_SRAM (0x4u << 28) /**< \brief (CHIPID_CIDR) SRAM emulating ROM */ +#define CHIPID_CIDR_EXT (0x1u << 31) /**< \brief (CHIPID_CIDR) Extension Flag */ +/* -------- CHIPID_EXID : (CHIPID Offset: 0x4) Chip ID Extension Register -------- */ +#define CHIPID_EXID_EXID_Pos 0 +#define CHIPID_EXID_EXID_Msk (0xffffffffu << CHIPID_EXID_EXID_Pos) /**< \brief (CHIPID_EXID) Chip ID Extension */ + +/*@}*/ + + +#endif /* _SAM3S8_CHIPID_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_crccu.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_crccu.h new file mode 100644 index 000000000..ad2e79be2 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_crccu.h @@ -0,0 +1,107 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_CRCCU_COMPONENT_ +#define _SAM3S8_CRCCU_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Cyclic Redundancy Check Calculation Unit */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_CRCCU Cyclic Redundancy Check Calculation Unit */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Crccu hardware registers */ +typedef struct { + RwReg CRCCU_DSCR; /**< \brief (Crccu Offset: 0x00000000) CRCCU Descriptor Base Register */ + RoReg Reserved1[1]; + WoReg CRCCU_DMA_EN; /**< \brief (Crccu Offset: 0x00000008) CRCCU DMA Enable Register */ + WoReg CRCCU_DMA_DIS; /**< \brief (Crccu Offset: 0x0000000C) CRCCU DMA Disable Register */ + RoReg CRCCU_DMA_SR; /**< \brief (Crccu Offset: 0x00000010) CRCCU DMA Status Register */ + WoReg CRCCU_DMA_IER; /**< \brief (Crccu Offset: 0x00000014) CRCCU DMA Interrupt Enable Register */ + WoReg CRCCU_DMA_IDR; /**< \brief (Crccu Offset: 0x00000018) CRCCU DMA Interrupt Disable Register */ + RoReg CRCCU_DMA_IMR; /**< \brief (Crccu Offset: 0x0000001C) CRCCU DMA Interrupt Mask Register */ + RoReg CRCCU_DMA_ISR; /**< \brief (Crccu Offset: 0x00000020) CRCCU DMA Interrupt Status Register */ + RoReg Reserved2[4]; + WoReg CRCCU_CR; /**< \brief (Crccu Offset: 0x00000034) CRCCU Control Register */ + RwReg CRCCU_MR; /**< \brief (Crccu Offset: 0x00000038) CRCCU Mode Register */ + RoReg CRCCU_SR; /**< \brief (Crccu Offset: 0x0000003C) CRCCU Status Register */ + WoReg CRCCU_IER; /**< \brief (Crccu Offset: 0x00000040) CRCCU Interrupt Enable Register */ + WoReg CRCCU_IDR; /**< \brief (Crccu Offset: 0x00000044) CRCCU Interrupt Disable Register */ + RoReg CRCCU_IMR; /**< \brief (Crccu Offset: 0x00000048) CRCCU Interrupt Mask Register */ + RoReg CRCCU_ISR; /**< \brief (Crccu Offset: 0x0000004C) CRCCU Interrupt Status Register */ +} Crccu; +#endif /* __ASSEMBLY__ */ +/* -------- CRCCU_DSCR : (CRCCU Offset: 0x00000000) CRCCU Descriptor Base Register -------- */ +#define CRCCU_DSCR_DSCR_Pos 9 +#define CRCCU_DSCR_DSCR_Msk (0x7fffffu << CRCCU_DSCR_DSCR_Pos) /**< \brief (CRCCU_DSCR) Descriptor Base Address */ +#define CRCCU_DSCR_DSCR(value) ((CRCCU_DSCR_DSCR_Msk & ((value) << CRCCU_DSCR_DSCR_Pos))) +/* -------- CRCCU_DMA_EN : (CRCCU Offset: 0x00000008) CRCCU DMA Enable Register -------- */ +#define CRCCU_DMA_EN_DMAEN (0x1u << 0) /**< \brief (CRCCU_DMA_EN) DMA Enable Register */ +/* -------- CRCCU_DMA_DIS : (CRCCU Offset: 0x0000000C) CRCCU DMA Disable Register -------- */ +#define CRCCU_DMA_DIS_DMADIS (0x1u << 0) /**< \brief (CRCCU_DMA_DIS) DMA Disable Register */ +/* -------- CRCCU_DMA_SR : (CRCCU Offset: 0x00000010) CRCCU DMA Status Register -------- */ +#define CRCCU_DMA_SR_DMASR (0x1u << 0) /**< \brief (CRCCU_DMA_SR) DMA Status Register */ +/* -------- CRCCU_DMA_IER : (CRCCU Offset: 0x00000014) CRCCU DMA Interrupt Enable Register -------- */ +#define CRCCU_DMA_IER_DMAIER (0x1u << 0) /**< \brief (CRCCU_DMA_IER) Interrupt Enable register */ +/* -------- CRCCU_DMA_IDR : (CRCCU Offset: 0x00000018) CRCCU DMA Interrupt Disable Register -------- */ +#define CRCCU_DMA_IDR_DMAIDR (0x1u << 0) /**< \brief (CRCCU_DMA_IDR) Interrupt Disable register */ +/* -------- CRCCU_DMA_IMR : (CRCCU Offset: 0x0000001C) CRCCU DMA Interrupt Mask Register -------- */ +#define CRCCU_DMA_IMR_DMAIMR (0x1u << 0) /**< \brief (CRCCU_DMA_IMR) Interrupt Mask Register */ +/* -------- CRCCU_DMA_ISR : (CRCCU Offset: 0x00000020) CRCCU DMA Interrupt Status Register -------- */ +#define CRCCU_DMA_ISR_DMAISR (0x1u << 0) /**< \brief (CRCCU_DMA_ISR) Interrupt Status register */ +/* -------- CRCCU_CR : (CRCCU Offset: 0x00000034) CRCCU Control Register -------- */ +#define CRCCU_CR_RESET (0x1u << 0) /**< \brief (CRCCU_CR) CRC Computation Reset */ +/* -------- CRCCU_MR : (CRCCU Offset: 0x00000038) CRCCU Mode Register -------- */ +#define CRCCU_MR_ENABLE (0x1u << 0) /**< \brief (CRCCU_MR) CRC Enable */ +#define CRCCU_MR_COMPARE (0x1u << 1) /**< \brief (CRCCU_MR) CRC Compare */ +#define CRCCU_MR_PTYPE_Pos 2 +#define CRCCU_MR_PTYPE_Msk (0x3u << CRCCU_MR_PTYPE_Pos) /**< \brief (CRCCU_MR) Primitive Polynomial */ +#define CRCCU_MR_PTYPE_CCITT8023 (0x0u << 2) /**< \brief (CRCCU_MR) Polynom 0x04C11DB7 */ +#define CRCCU_MR_PTYPE_CASTAGNOLI (0x1u << 2) /**< \brief (CRCCU_MR) Polynom 0x1EDC6F41 */ +#define CRCCU_MR_PTYPE_CCITT16 (0x2u << 2) /**< \brief (CRCCU_MR) Polynom 0x1021 */ +#define CRCCU_MR_DIVIDER_Pos 4 +#define CRCCU_MR_DIVIDER_Msk (0xfu << CRCCU_MR_DIVIDER_Pos) /**< \brief (CRCCU_MR) Request Divider */ +#define CRCCU_MR_DIVIDER(value) ((CRCCU_MR_DIVIDER_Msk & ((value) << CRCCU_MR_DIVIDER_Pos))) +/* -------- CRCCU_SR : (CRCCU Offset: 0x0000003C) CRCCU Status Register -------- */ +#define CRCCU_SR_CRC_Pos 0 +#define CRCCU_SR_CRC_Msk (0xffffffffu << CRCCU_SR_CRC_Pos) /**< \brief (CRCCU_SR) Cyclic Redundancy Check Value */ +/* -------- CRCCU_IER : (CRCCU Offset: 0x00000040) CRCCU Interrupt Enable Register -------- */ +#define CRCCU_IER_ERRIER (0x1u << 0) /**< \brief (CRCCU_IER) CRC Error Interrupt Enable */ +/* -------- CRCCU_IDR : (CRCCU Offset: 0x00000044) CRCCU Interrupt Disable Register -------- */ +#define CRCCU_IDR_ERRIDR (0x1u << 0) /**< \brief (CRCCU_IDR) CRC Error Interrupt Disable */ +/* -------- CRCCU_IMR : (CRCCU Offset: 0x00000048) CRCCU Interrupt Mask Register -------- */ +#define CRCCU_IMR_ERRIMR (0x1u << 0) /**< \brief (CRCCU_IMR) CRC Error Interrupt Mask */ +/* -------- CRCCU_ISR : (CRCCU Offset: 0x0000004C) CRCCU Interrupt Status Register -------- */ +#define CRCCU_ISR_ERRISR (0x1u << 0) /**< \brief (CRCCU_ISR) CRC Error Interrupt Status */ + +/*@}*/ + + +#endif /* _SAM3S8_CRCCU_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_dacc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_dacc.h new file mode 100644 index 000000000..e82e25965 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_dacc.h @@ -0,0 +1,227 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_DACC_COMPONENT_ +#define _SAM3S8_DACC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Digital-to-Analog Converter Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_DACC Digital-to-Analog Converter Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Dacc hardware registers */ +typedef struct { + WoReg DACC_CR; /**< \brief (Dacc Offset: 0x00) Control Register */ + RwReg DACC_MR; /**< \brief (Dacc Offset: 0x04) Mode Register */ + RoReg Reserved1[2]; + WoReg DACC_CHER; /**< \brief (Dacc Offset: 0x10) Channel Enable Register */ + WoReg DACC_CHDR; /**< \brief (Dacc Offset: 0x14) Channel Disable Register */ + RoReg DACC_CHSR; /**< \brief (Dacc Offset: 0x18) Channel Status Register */ + RoReg Reserved2[1]; + WoReg DACC_CDR; /**< \brief (Dacc Offset: 0x20) Conversion Data Register */ + WoReg DACC_IER; /**< \brief (Dacc Offset: 0x24) Interrupt Enable Register */ + WoReg DACC_IDR; /**< \brief (Dacc Offset: 0x28) Interrupt Disable Register */ + RoReg DACC_IMR; /**< \brief (Dacc Offset: 0x2C) Interrupt Mask Register */ + RoReg DACC_ISR; /**< \brief (Dacc Offset: 0x30) Interrupt Status Register */ + RoReg Reserved3[24]; + RwReg DACC_ACR; /**< \brief (Dacc Offset: 0x94) Analog Current Register */ + RoReg Reserved4[19]; + RwReg DACC_WPMR; /**< \brief (Dacc Offset: 0xE4) Write Protect Mode register */ + RoReg DACC_WPSR; /**< \brief (Dacc Offset: 0xE8) Write Protect Status register */ + RoReg Reserved5[5]; + RwReg DACC_RPR; /**< \brief (Dacc Offset: 0x100) Receive Pointer Register */ + RwReg DACC_RCR; /**< \brief (Dacc Offset: 0x104) Receive Counter Register */ + RwReg DACC_TPR; /**< \brief (Dacc Offset: 0x108) Transmit Pointer Register */ + RwReg DACC_TCR; /**< \brief (Dacc Offset: 0x10C) Transmit Counter Register */ + RwReg DACC_RNPR; /**< \brief (Dacc Offset: 0x110) Receive Next Pointer Register */ + RwReg DACC_RNCR; /**< \brief (Dacc Offset: 0x114) Receive Next Counter Register */ + RwReg DACC_TNPR; /**< \brief (Dacc Offset: 0x118) Transmit Next Pointer Register */ + RwReg DACC_TNCR; /**< \brief (Dacc Offset: 0x11C) Transmit Next Counter Register */ + WoReg DACC_PTCR; /**< \brief (Dacc Offset: 0x120) Transfer Control Register */ + RoReg DACC_PTSR; /**< \brief (Dacc Offset: 0x124) Transfer Status Register */ +} Dacc; +#endif /* __ASSEMBLY__ */ +/* -------- DACC_CR : (DACC Offset: 0x00) Control Register -------- */ +#define DACC_CR_SWRST (0x1u << 0) /**< \brief (DACC_CR) Software Reset */ +/* -------- DACC_MR : (DACC Offset: 0x04) Mode Register -------- */ +#define DACC_MR_TRGEN (0x1u << 0) /**< \brief (DACC_MR) Trigger Enable */ +#define DACC_MR_TRGEN_DIS (0x0u << 0) /**< \brief (DACC_MR) External trigger mode disabled. DACC in free running mode. */ +#define DACC_MR_TRGEN_EN (0x1u << 0) /**< \brief (DACC_MR) External trigger mode enabled. */ +#define DACC_MR_TRGSEL_Pos 1 +#define DACC_MR_TRGSEL_Msk (0x7u << DACC_MR_TRGSEL_Pos) /**< \brief (DACC_MR) Trigger Selection */ +#define DACC_MR_TRGSEL(value) ((DACC_MR_TRGSEL_Msk & ((value) << DACC_MR_TRGSEL_Pos))) +#define DACC_MR_WORD (0x1u << 4) /**< \brief (DACC_MR) Word Transfer */ +#define DACC_MR_WORD_HALF (0x0u << 4) /**< \brief (DACC_MR) Half-Word transfer */ +#define DACC_MR_WORD_WORD (0x1u << 4) /**< \brief (DACC_MR) Word Transfer */ +#define DACC_MR_SLEEP (0x1u << 5) /**< \brief (DACC_MR) Sleep Mode */ +#define DACC_MR_FASTWKUP (0x1u << 6) /**< \brief (DACC_MR) Fast Wake up Mode */ +#define DACC_MR_REFRESH_Pos 8 +#define DACC_MR_REFRESH_Msk (0xffu << DACC_MR_REFRESH_Pos) /**< \brief (DACC_MR) Refresh Period */ +#define DACC_MR_REFRESH(value) ((DACC_MR_REFRESH_Msk & ((value) << DACC_MR_REFRESH_Pos))) +#define DACC_MR_USER_SEL_Pos 16 +#define DACC_MR_USER_SEL_Msk (0x3u << DACC_MR_USER_SEL_Pos) /**< \brief (DACC_MR) User Channel Selection */ +#define DACC_MR_USER_SEL_CHANNEL0 (0x0u << 16) /**< \brief (DACC_MR) Channel 0 */ +#define DACC_MR_USER_SEL_CHANNEL1 (0x1u << 16) /**< \brief (DACC_MR) Channel 1 */ +#define DACC_MR_TAG (0x1u << 20) /**< \brief (DACC_MR) Tag Selection Mode */ +#define DACC_MR_TAG_DIS (0x0u << 20) /**< \brief (DACC_MR) Tag selection mode disabled. Using USER_SEL to select the channel for the conversion. */ +#define DACC_MR_TAG_EN (0x1u << 20) /**< \brief (DACC_MR) Tag selection mode enabled */ +#define DACC_MR_MAXS (0x1u << 21) /**< \brief (DACC_MR) Max Speed Mode */ +#define DACC_MR_STARTUP_Pos 24 +#define DACC_MR_STARTUP_Msk (0x3fu << DACC_MR_STARTUP_Pos) /**< \brief (DACC_MR) Startup Time Selection */ +#define DACC_MR_STARTUP_0 (0x0u << 24) /**< \brief (DACC_MR) 0 periods of DACClock */ +#define DACC_MR_STARTUP_8 (0x1u << 24) /**< \brief (DACC_MR) 8 periods of DACClock */ +#define DACC_MR_STARTUP_16 (0x2u << 24) /**< \brief (DACC_MR) 16 periods of DACClock */ +#define DACC_MR_STARTUP_24 (0x3u << 24) /**< \brief (DACC_MR) 24 periods of DACClock */ +#define DACC_MR_STARTUP_64 (0x4u << 24) /**< \brief (DACC_MR) 64 periods of DACClock */ +#define DACC_MR_STARTUP_80 (0x5u << 24) /**< \brief (DACC_MR) 80 periods of DACClock */ +#define DACC_MR_STARTUP_96 (0x6u << 24) /**< \brief (DACC_MR) 96 periods of DACClock */ +#define DACC_MR_STARTUP_112 (0x7u << 24) /**< \brief (DACC_MR) 112 periods of DACClock */ +#define DACC_MR_STARTUP_512 (0x8u << 24) /**< \brief (DACC_MR) 512 periods of DACClock */ +#define DACC_MR_STARTUP_576 (0x9u << 24) /**< \brief (DACC_MR) 576 periods of DACClock */ +#define DACC_MR_STARTUP_640 (0xAu << 24) /**< \brief (DACC_MR) 640 periods of DACClock */ +#define DACC_MR_STARTUP_704 (0xBu << 24) /**< \brief (DACC_MR) 704 periods of DACClock */ +#define DACC_MR_STARTUP_768 (0xCu << 24) /**< \brief (DACC_MR) 768 periods of DACClock */ +#define DACC_MR_STARTUP_832 (0xDu << 24) /**< \brief (DACC_MR) 832 periods of DACClock */ +#define DACC_MR_STARTUP_896 (0xEu << 24) /**< \brief (DACC_MR) 896 periods of DACClock */ +#define DACC_MR_STARTUP_960 (0xFu << 24) /**< \brief (DACC_MR) 960 periods of DACClock */ +#define DACC_MR_STARTUP_1024 (0x10u << 24) /**< \brief (DACC_MR) 1024 periods of DACClock */ +#define DACC_MR_STARTUP_1088 (0x11u << 24) /**< \brief (DACC_MR) 1088 periods of DACClock */ +#define DACC_MR_STARTUP_1152 (0x12u << 24) /**< \brief (DACC_MR) 1152 periods of DACClock */ +#define DACC_MR_STARTUP_1216 (0x13u << 24) /**< \brief (DACC_MR) 1216 periods of DACClock */ +#define DACC_MR_STARTUP_1280 (0x14u << 24) /**< \brief (DACC_MR) 1280 periods of DACClock */ +#define DACC_MR_STARTUP_1344 (0x15u << 24) /**< \brief (DACC_MR) 1344 periods of DACClock */ +#define DACC_MR_STARTUP_1408 (0x16u << 24) /**< \brief (DACC_MR) 1408 periods of DACClock */ +#define DACC_MR_STARTUP_1472 (0x17u << 24) /**< \brief (DACC_MR) 1472 periods of DACClock */ +#define DACC_MR_STARTUP_1536 (0x18u << 24) /**< \brief (DACC_MR) 1536 periods of DACClock */ +#define DACC_MR_STARTUP_1600 (0x19u << 24) /**< \brief (DACC_MR) 1600 periods of DACClock */ +#define DACC_MR_STARTUP_1664 (0x1Au << 24) /**< \brief (DACC_MR) 1664 periods of DACClock */ +#define DACC_MR_STARTUP_1728 (0x1Bu << 24) /**< \brief (DACC_MR) 1728 periods of DACClock */ +#define DACC_MR_STARTUP_1792 (0x1Cu << 24) /**< \brief (DACC_MR) 1792 periods of DACClock */ +#define DACC_MR_STARTUP_1856 (0x1Du << 24) /**< \brief (DACC_MR) 1856 periods of DACClock */ +#define DACC_MR_STARTUP_1920 (0x1Eu << 24) /**< \brief (DACC_MR) 1920 periods of DACClock */ +#define DACC_MR_STARTUP_1984 (0x1Fu << 24) /**< \brief (DACC_MR) 1984 periods of DACClock */ +/* -------- DACC_CHER : (DACC Offset: 0x10) Channel Enable Register -------- */ +#define DACC_CHER_CH0 (0x1u << 0) /**< \brief (DACC_CHER) Channel 0 Enable */ +#define DACC_CHER_CH1 (0x1u << 1) /**< \brief (DACC_CHER) Channel 1 Enable */ +/* -------- DACC_CHDR : (DACC Offset: 0x14) Channel Disable Register -------- */ +#define DACC_CHDR_CH0 (0x1u << 0) /**< \brief (DACC_CHDR) Channel 0 Disable */ +#define DACC_CHDR_CH1 (0x1u << 1) /**< \brief (DACC_CHDR) Channel 1 Disable */ +/* -------- DACC_CHSR : (DACC Offset: 0x18) Channel Status Register -------- */ +#define DACC_CHSR_CH0 (0x1u << 0) /**< \brief (DACC_CHSR) Channel 0 Status */ +#define DACC_CHSR_CH1 (0x1u << 1) /**< \brief (DACC_CHSR) Channel 1 Status */ +/* -------- DACC_CDR : (DACC Offset: 0x20) Conversion Data Register -------- */ +#define DACC_CDR_DATA_Pos 0 +#define DACC_CDR_DATA_Msk (0xffffffffu << DACC_CDR_DATA_Pos) /**< \brief (DACC_CDR) Data to Convert */ +#define DACC_CDR_DATA(value) ((DACC_CDR_DATA_Msk & ((value) << DACC_CDR_DATA_Pos))) +/* -------- DACC_IER : (DACC Offset: 0x24) Interrupt Enable Register -------- */ +#define DACC_IER_TXRDY (0x1u << 0) /**< \brief (DACC_IER) Transmit Ready Interrupt Enable */ +#define DACC_IER_EOC (0x1u << 1) /**< \brief (DACC_IER) End of Conversion Interrupt Enable */ +#define DACC_IER_ENDTX (0x1u << 2) /**< \brief (DACC_IER) End of Transmit Buffer Interrupt Enable */ +#define DACC_IER_TXBUFE (0x1u << 3) /**< \brief (DACC_IER) Transmit Buffer Empty Interrupt Enable */ +/* -------- DACC_IDR : (DACC Offset: 0x28) Interrupt Disable Register -------- */ +#define DACC_IDR_TXRDY (0x1u << 0) /**< \brief (DACC_IDR) Transmit Ready Interrupt Disable. */ +#define DACC_IDR_EOC (0x1u << 1) /**< \brief (DACC_IDR) End of Conversion Interrupt Disable */ +#define DACC_IDR_ENDTX (0x1u << 2) /**< \brief (DACC_IDR) End of Transmit Buffer Interrupt Disable */ +#define DACC_IDR_TXBUFE (0x1u << 3) /**< \brief (DACC_IDR) Transmit Buffer Empty Interrupt Disable */ +/* -------- DACC_IMR : (DACC Offset: 0x2C) Interrupt Mask Register -------- */ +#define DACC_IMR_TXRDY (0x1u << 0) /**< \brief (DACC_IMR) Transmit Ready Interrupt Mask */ +#define DACC_IMR_EOC (0x1u << 1) /**< \brief (DACC_IMR) End of Conversion Interrupt Mask */ +#define DACC_IMR_ENDTX (0x1u << 2) /**< \brief (DACC_IMR) End of Transmit Buffer Interrupt Mask */ +#define DACC_IMR_TXBUFE (0x1u << 3) /**< \brief (DACC_IMR) Transmit Buffer Empty Interrupt Mask */ +/* -------- DACC_ISR : (DACC Offset: 0x30) Interrupt Status Register -------- */ +#define DACC_ISR_TXRDY (0x1u << 0) /**< \brief (DACC_ISR) Transmit Ready Interrupt Flag */ +#define DACC_ISR_EOC (0x1u << 1) /**< \brief (DACC_ISR) End of Conversion Interrupt Flag */ +#define DACC_ISR_ENDTX (0x1u << 2) /**< \brief (DACC_ISR) End of DMA Interrupt Flag */ +#define DACC_ISR_TXBUFE (0x1u << 3) /**< \brief (DACC_ISR) Transmit Buffer Empty */ +/* -------- DACC_ACR : (DACC Offset: 0x94) Analog Current Register -------- */ +#define DACC_ACR_IBCTLCH0_Pos 0 +#define DACC_ACR_IBCTLCH0_Msk (0x3u << DACC_ACR_IBCTLCH0_Pos) /**< \brief (DACC_ACR) Analog Output Current Control */ +#define DACC_ACR_IBCTLCH0(value) ((DACC_ACR_IBCTLCH0_Msk & ((value) << DACC_ACR_IBCTLCH0_Pos))) +#define DACC_ACR_IBCTLCH1_Pos 2 +#define DACC_ACR_IBCTLCH1_Msk (0x3u << DACC_ACR_IBCTLCH1_Pos) /**< \brief (DACC_ACR) Analog Output Current Control */ +#define DACC_ACR_IBCTLCH1(value) ((DACC_ACR_IBCTLCH1_Msk & ((value) << DACC_ACR_IBCTLCH1_Pos))) +#define DACC_ACR_IBCTLDACCORE_Pos 8 +#define DACC_ACR_IBCTLDACCORE_Msk (0x3u << DACC_ACR_IBCTLDACCORE_Pos) /**< \brief (DACC_ACR) Bias Current Control for DAC Core */ +#define DACC_ACR_IBCTLDACCORE(value) ((DACC_ACR_IBCTLDACCORE_Msk & ((value) << DACC_ACR_IBCTLDACCORE_Pos))) +/* -------- DACC_WPMR : (DACC Offset: 0xE4) Write Protect Mode register -------- */ +#define DACC_WPMR_WPEN (0x1u << 0) /**< \brief (DACC_WPMR) Write Protect Enable */ +#define DACC_WPMR_WPKEY_Pos 8 +#define DACC_WPMR_WPKEY_Msk (0xffffffu << DACC_WPMR_WPKEY_Pos) /**< \brief (DACC_WPMR) Write Protect KEY */ +#define DACC_WPMR_WPKEY(value) ((DACC_WPMR_WPKEY_Msk & ((value) << DACC_WPMR_WPKEY_Pos))) +/* -------- DACC_WPSR : (DACC Offset: 0xE8) Write Protect Status register -------- */ +#define DACC_WPSR_WPROTERR (0x1u << 0) /**< \brief (DACC_WPSR) Write protection error */ +#define DACC_WPSR_WPROTADDR_Pos 8 +#define DACC_WPSR_WPROTADDR_Msk (0xffu << DACC_WPSR_WPROTADDR_Pos) /**< \brief (DACC_WPSR) Write protection error address */ +/* -------- DACC_RPR : (DACC Offset: 0x100) Receive Pointer Register -------- */ +#define DACC_RPR_RXPTR_Pos 0 +#define DACC_RPR_RXPTR_Msk (0xffffffffu << DACC_RPR_RXPTR_Pos) /**< \brief (DACC_RPR) Receive Pointer Register */ +#define DACC_RPR_RXPTR(value) ((DACC_RPR_RXPTR_Msk & ((value) << DACC_RPR_RXPTR_Pos))) +/* -------- DACC_RCR : (DACC Offset: 0x104) Receive Counter Register -------- */ +#define DACC_RCR_RXCTR_Pos 0 +#define DACC_RCR_RXCTR_Msk (0xffffu << DACC_RCR_RXCTR_Pos) /**< \brief (DACC_RCR) Receive Counter Register */ +#define DACC_RCR_RXCTR(value) ((DACC_RCR_RXCTR_Msk & ((value) << DACC_RCR_RXCTR_Pos))) +/* -------- DACC_TPR : (DACC Offset: 0x108) Transmit Pointer Register -------- */ +#define DACC_TPR_TXPTR_Pos 0 +#define DACC_TPR_TXPTR_Msk (0xffffffffu << DACC_TPR_TXPTR_Pos) /**< \brief (DACC_TPR) Transmit Counter Register */ +#define DACC_TPR_TXPTR(value) ((DACC_TPR_TXPTR_Msk & ((value) << DACC_TPR_TXPTR_Pos))) +/* -------- DACC_TCR : (DACC Offset: 0x10C) Transmit Counter Register -------- */ +#define DACC_TCR_TXCTR_Pos 0 +#define DACC_TCR_TXCTR_Msk (0xffffu << DACC_TCR_TXCTR_Pos) /**< \brief (DACC_TCR) Transmit Counter Register */ +#define DACC_TCR_TXCTR(value) ((DACC_TCR_TXCTR_Msk & ((value) << DACC_TCR_TXCTR_Pos))) +/* -------- DACC_RNPR : (DACC Offset: 0x110) Receive Next Pointer Register -------- */ +#define DACC_RNPR_RXNPTR_Pos 0 +#define DACC_RNPR_RXNPTR_Msk (0xffffffffu << DACC_RNPR_RXNPTR_Pos) /**< \brief (DACC_RNPR) Receive Next Pointer */ +#define DACC_RNPR_RXNPTR(value) ((DACC_RNPR_RXNPTR_Msk & ((value) << DACC_RNPR_RXNPTR_Pos))) +/* -------- DACC_RNCR : (DACC Offset: 0x114) Receive Next Counter Register -------- */ +#define DACC_RNCR_RXNCTR_Pos 0 +#define DACC_RNCR_RXNCTR_Msk (0xffffu << DACC_RNCR_RXNCTR_Pos) /**< \brief (DACC_RNCR) Receive Next Counter */ +#define DACC_RNCR_RXNCTR(value) ((DACC_RNCR_RXNCTR_Msk & ((value) << DACC_RNCR_RXNCTR_Pos))) +/* -------- DACC_TNPR : (DACC Offset: 0x118) Transmit Next Pointer Register -------- */ +#define DACC_TNPR_TXNPTR_Pos 0 +#define DACC_TNPR_TXNPTR_Msk (0xffffffffu << DACC_TNPR_TXNPTR_Pos) /**< \brief (DACC_TNPR) Transmit Next Pointer */ +#define DACC_TNPR_TXNPTR(value) ((DACC_TNPR_TXNPTR_Msk & ((value) << DACC_TNPR_TXNPTR_Pos))) +/* -------- DACC_TNCR : (DACC Offset: 0x11C) Transmit Next Counter Register -------- */ +#define DACC_TNCR_TXNCTR_Pos 0 +#define DACC_TNCR_TXNCTR_Msk (0xffffu << DACC_TNCR_TXNCTR_Pos) /**< \brief (DACC_TNCR) Transmit Counter Next */ +#define DACC_TNCR_TXNCTR(value) ((DACC_TNCR_TXNCTR_Msk & ((value) << DACC_TNCR_TXNCTR_Pos))) +/* -------- DACC_PTCR : (DACC Offset: 0x120) Transfer Control Register -------- */ +#define DACC_PTCR_RXTEN (0x1u << 0) /**< \brief (DACC_PTCR) Receiver Transfer Enable */ +#define DACC_PTCR_RXTDIS (0x1u << 1) /**< \brief (DACC_PTCR) Receiver Transfer Disable */ +#define DACC_PTCR_TXTEN (0x1u << 8) /**< \brief (DACC_PTCR) Transmitter Transfer Enable */ +#define DACC_PTCR_TXTDIS (0x1u << 9) /**< \brief (DACC_PTCR) Transmitter Transfer Disable */ +/* -------- DACC_PTSR : (DACC Offset: 0x124) Transfer Status Register -------- */ +#define DACC_PTSR_RXTEN (0x1u << 0) /**< \brief (DACC_PTSR) Receiver Transfer Enable */ +#define DACC_PTSR_TXTEN (0x1u << 8) /**< \brief (DACC_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3S8_DACC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_efc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_efc.h new file mode 100644 index 000000000..ac672a709 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_efc.h @@ -0,0 +1,76 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_EFC_COMPONENT_ +#define _SAM3S8_EFC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Embedded Flash Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_EFC Embedded Flash Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Efc hardware registers */ +typedef struct { + RwReg EEFC_FMR; /**< \brief (Efc Offset: 0x00) EEFC Flash Mode Register */ + WoReg EEFC_FCR; /**< \brief (Efc Offset: 0x04) EEFC Flash Command Register */ + RoReg EEFC_FSR; /**< \brief (Efc Offset: 0x08) EEFC Flash Status Register */ + RoReg EEFC_FRR; /**< \brief (Efc Offset: 0x0C) EEFC Flash Result Register */ +} Efc; +#endif /* __ASSEMBLY__ */ +/* -------- EEFC_FMR : (EFC Offset: 0x00) EEFC Flash Mode Register -------- */ +#define EEFC_FMR_FRDY (0x1u << 0) /**< \brief (EEFC_FMR) Ready Interrupt Enable */ +#define EEFC_FMR_FWS_Pos 8 +#define EEFC_FMR_FWS_Msk (0xfu << EEFC_FMR_FWS_Pos) /**< \brief (EEFC_FMR) Flash Wait State */ +#define EEFC_FMR_FWS(value) ((EEFC_FMR_FWS_Msk & ((value) << EEFC_FMR_FWS_Pos))) +#define EEFC_FMR_SCOD (0x1u << 16) /**< \brief (EEFC_FMR) Sequential Code Optimization Disable */ +#define EEFC_FMR_FAM (0x1u << 24) /**< \brief (EEFC_FMR) Flash Access Mode */ +/* -------- EEFC_FCR : (EFC Offset: 0x04) EEFC Flash Command Register -------- */ +#define EEFC_FCR_FCMD_Pos 0 +#define EEFC_FCR_FCMD_Msk (0xffu << EEFC_FCR_FCMD_Pos) /**< \brief (EEFC_FCR) Flash Command */ +#define EEFC_FCR_FCMD(value) ((EEFC_FCR_FCMD_Msk & ((value) << EEFC_FCR_FCMD_Pos))) +#define EEFC_FCR_FARG_Pos 8 +#define EEFC_FCR_FARG_Msk (0xffffu << EEFC_FCR_FARG_Pos) /**< \brief (EEFC_FCR) Flash Command Argument */ +#define EEFC_FCR_FARG(value) ((EEFC_FCR_FARG_Msk & ((value) << EEFC_FCR_FARG_Pos))) +#define EEFC_FCR_FKEY_Pos 24 +#define EEFC_FCR_FKEY_Msk (0xffu << EEFC_FCR_FKEY_Pos) /**< \brief (EEFC_FCR) Flash Writing Protection Key */ +#define EEFC_FCR_FKEY(value) ((EEFC_FCR_FKEY_Msk & ((value) << EEFC_FCR_FKEY_Pos))) +/* -------- EEFC_FSR : (EFC Offset: 0x08) EEFC Flash Status Register -------- */ +#define EEFC_FSR_FRDY (0x1u << 0) /**< \brief (EEFC_FSR) Flash Ready Status */ +#define EEFC_FSR_FCMDE (0x1u << 1) /**< \brief (EEFC_FSR) Flash Command Error Status */ +#define EEFC_FSR_FLOCKE (0x1u << 2) /**< \brief (EEFC_FSR) Flash Lock Error Status */ +/* -------- EEFC_FRR : (EFC Offset: 0x0C) EEFC Flash Result Register -------- */ +#define EEFC_FRR_FVALUE_Pos 0 +#define EEFC_FRR_FVALUE_Msk (0xffffffffu << EEFC_FRR_FVALUE_Pos) /**< \brief (EEFC_FRR) Flash Result Value */ + +/*@}*/ + + +#endif /* _SAM3S8_EFC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_gpbr.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_gpbr.h new file mode 100644 index 000000000..489b77c82 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_gpbr.h @@ -0,0 +1,53 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_GPBR_COMPONENT_ +#define _SAM3S8_GPBR_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR General Purpose Backup Register */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_GPBR General Purpose Backup Register */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Gpbr hardware registers */ +typedef struct { + RwReg SYS_GPBR[8]; /**< \brief (Gpbr Offset: 0x0) General Purpose Backup Register */ +} Gpbr; +#endif /* __ASSEMBLY__ */ +/* -------- SYS_GPBR[8] : (GPBR Offset: 0x0) General Purpose Backup Register -------- */ +#define SYS_GPBR_GPBR_VALUE_Pos 0 +#define SYS_GPBR_GPBR_VALUE_Msk (0xffffffffu << SYS_GPBR_GPBR_VALUE_Pos) /**< \brief (SYS_GPBR[8]) Value of GPBR x */ +#define SYS_GPBR_GPBR_VALUE(value) ((SYS_GPBR_GPBR_VALUE_Msk & ((value) << SYS_GPBR_GPBR_VALUE_Pos))) + +/*@}*/ + + +#endif /* _SAM3S8_GPBR_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_hsmci.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_hsmci.h new file mode 100644 index 000000000..4132a460b --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_hsmci.h @@ -0,0 +1,384 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_HSMCI_COMPONENT_ +#define _SAM3S8_HSMCI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR High Speed MultiMedia Card Interface */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_HSMCI High Speed MultiMedia Card Interface */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Hsmci hardware registers */ +typedef struct { + WoReg HSMCI_CR; /**< \brief (Hsmci Offset: 0x00) Control Register */ + RwReg HSMCI_MR; /**< \brief (Hsmci Offset: 0x04) Mode Register */ + RwReg HSMCI_DTOR; /**< \brief (Hsmci Offset: 0x08) Data Timeout Register */ + RwReg HSMCI_SDCR; /**< \brief (Hsmci Offset: 0x0C) SD/SDIO Card Register */ + RwReg HSMCI_ARGR; /**< \brief (Hsmci Offset: 0x10) Argument Register */ + WoReg HSMCI_CMDR; /**< \brief (Hsmci Offset: 0x14) Command Register */ + RwReg HSMCI_BLKR; /**< \brief (Hsmci Offset: 0x18) Block Register */ + RwReg HSMCI_CSTOR; /**< \brief (Hsmci Offset: 0x1C) Completion Signal Timeout Register */ + RoReg HSMCI_RSPR[4]; /**< \brief (Hsmci Offset: 0x20) Response Register */ + RoReg HSMCI_RDR; /**< \brief (Hsmci Offset: 0x30) Receive Data Register */ + WoReg HSMCI_TDR; /**< \brief (Hsmci Offset: 0x34) Transmit Data Register */ + RoReg Reserved1[2]; + RoReg HSMCI_SR; /**< \brief (Hsmci Offset: 0x40) Status Register */ + WoReg HSMCI_IER; /**< \brief (Hsmci Offset: 0x44) Interrupt Enable Register */ + WoReg HSMCI_IDR; /**< \brief (Hsmci Offset: 0x48) Interrupt Disable Register */ + RoReg HSMCI_IMR; /**< \brief (Hsmci Offset: 0x4C) Interrupt Mask Register */ + RoReg Reserved2[1]; + RwReg HSMCI_CFG; /**< \brief (Hsmci Offset: 0x54) Configuration Register */ + RoReg Reserved3[35]; + RwReg HSMCI_WPMR; /**< \brief (Hsmci Offset: 0xE4) Write Protection Mode Register */ + RoReg HSMCI_WPSR; /**< \brief (Hsmci Offset: 0xE8) Write Protection Status Register */ + RoReg Reserved4[5]; + RwReg HSMCI_RPR; /**< \brief (Hsmci Offset: 0x100) Receive Pointer Register */ + RwReg HSMCI_RCR; /**< \brief (Hsmci Offset: 0x104) Receive Counter Register */ + RwReg HSMCI_TPR; /**< \brief (Hsmci Offset: 0x108) Transmit Pointer Register */ + RwReg HSMCI_TCR; /**< \brief (Hsmci Offset: 0x10C) Transmit Counter Register */ + RwReg HSMCI_RNPR; /**< \brief (Hsmci Offset: 0x110) Receive Next Pointer Register */ + RwReg HSMCI_RNCR; /**< \brief (Hsmci Offset: 0x114) Receive Next Counter Register */ + RwReg HSMCI_TNPR; /**< \brief (Hsmci Offset: 0x118) Transmit Next Pointer Register */ + RwReg HSMCI_TNCR; /**< \brief (Hsmci Offset: 0x11C) Transmit Next Counter Register */ + WoReg HSMCI_PTCR; /**< \brief (Hsmci Offset: 0x120) Transfer Control Register */ + RoReg HSMCI_PTSR; /**< \brief (Hsmci Offset: 0x124) Transfer Status Register */ + RoReg Reserved5[54]; + RwReg HSMCI_FIFO[256]; /**< \brief (Hsmci Offset: 0x200) FIFO Memory Aperture0 */ +} Hsmci; +#endif /* __ASSEMBLY__ */ +/* -------- HSMCI_CR : (HSMCI Offset: 0x00) Control Register -------- */ +#define HSMCI_CR_MCIEN (0x1u << 0) /**< \brief (HSMCI_CR) Multi-Media Interface Enable */ +#define HSMCI_CR_MCIDIS (0x1u << 1) /**< \brief (HSMCI_CR) Multi-Media Interface Disable */ +#define HSMCI_CR_PWSEN (0x1u << 2) /**< \brief (HSMCI_CR) Power Save Mode Enable */ +#define HSMCI_CR_PWSDIS (0x1u << 3) /**< \brief (HSMCI_CR) Power Save Mode Disable */ +#define HSMCI_CR_SWRST (0x1u << 7) /**< \brief (HSMCI_CR) Software Reset */ +/* -------- HSMCI_MR : (HSMCI Offset: 0x04) Mode Register -------- */ +#define HSMCI_MR_CLKDIV_Pos 0 +#define HSMCI_MR_CLKDIV_Msk (0xffu << HSMCI_MR_CLKDIV_Pos) /**< \brief (HSMCI_MR) Clock Divider */ +#define HSMCI_MR_CLKDIV(value) ((HSMCI_MR_CLKDIV_Msk & ((value) << HSMCI_MR_CLKDIV_Pos))) +#define HSMCI_MR_PWSDIV_Pos 8 +#define HSMCI_MR_PWSDIV_Msk (0x7u << HSMCI_MR_PWSDIV_Pos) /**< \brief (HSMCI_MR) Power Saving Divider */ +#define HSMCI_MR_PWSDIV(value) ((HSMCI_MR_PWSDIV_Msk & ((value) << HSMCI_MR_PWSDIV_Pos))) +#define HSMCI_MR_RDPROOF (0x1u << 11) /**< \brief (HSMCI_MR) */ +#define HSMCI_MR_WRPROOF (0x1u << 12) /**< \brief (HSMCI_MR) */ +#define HSMCI_MR_FBYTE (0x1u << 13) /**< \brief (HSMCI_MR) Force Byte Transfer */ +#define HSMCI_MR_PADV (0x1u << 14) /**< \brief (HSMCI_MR) Padding Value */ +#define HSMCI_MR_PDCMODE (0x1u << 15) /**< \brief (HSMCI_MR) PDC-oriented Mode */ +/* -------- HSMCI_DTOR : (HSMCI Offset: 0x08) Data Timeout Register -------- */ +#define HSMCI_DTOR_DTOCYC_Pos 0 +#define HSMCI_DTOR_DTOCYC_Msk (0xfu << HSMCI_DTOR_DTOCYC_Pos) /**< \brief (HSMCI_DTOR) Data Timeout Cycle Number */ +#define HSMCI_DTOR_DTOCYC(value) ((HSMCI_DTOR_DTOCYC_Msk & ((value) << HSMCI_DTOR_DTOCYC_Pos))) +#define HSMCI_DTOR_DTOMUL_Pos 4 +#define HSMCI_DTOR_DTOMUL_Msk (0x7u << HSMCI_DTOR_DTOMUL_Pos) /**< \brief (HSMCI_DTOR) Data Timeout Multiplier */ +#define HSMCI_DTOR_DTOMUL_1 (0x0u << 4) /**< \brief (HSMCI_DTOR) DTOCYC */ +#define HSMCI_DTOR_DTOMUL_16 (0x1u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 16 */ +#define HSMCI_DTOR_DTOMUL_128 (0x2u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 128 */ +#define HSMCI_DTOR_DTOMUL_256 (0x3u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 256 */ +#define HSMCI_DTOR_DTOMUL_1024 (0x4u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 1024 */ +#define HSMCI_DTOR_DTOMUL_4096 (0x5u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 4096 */ +#define HSMCI_DTOR_DTOMUL_65536 (0x6u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 65536 */ +#define HSMCI_DTOR_DTOMUL_1048576 (0x7u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 1048576 */ +/* -------- HSMCI_SDCR : (HSMCI Offset: 0x0C) SD/SDIO Card Register -------- */ +#define HSMCI_SDCR_SDCSEL_Pos 0 +#define HSMCI_SDCR_SDCSEL_Msk (0x3u << HSMCI_SDCR_SDCSEL_Pos) /**< \brief (HSMCI_SDCR) SDCard/SDIO Slot */ +#define HSMCI_SDCR_SDCSEL_SLOTA (0x0u << 0) /**< \brief (HSMCI_SDCR) Slot A is selected. */ +#define HSMCI_SDCR_SDCSEL_SLOTB (0x1u << 0) /**< \brief (HSMCI_SDCR) - */ +#define HSMCI_SDCR_SDCSEL_SLOTC (0x2u << 0) /**< \brief (HSMCI_SDCR) - */ +#define HSMCI_SDCR_SDCSEL_SLOTD (0x3u << 0) /**< \brief (HSMCI_SDCR) - */ +#define HSMCI_SDCR_SDCBUS_Pos 6 +#define HSMCI_SDCR_SDCBUS_Msk (0x3u << HSMCI_SDCR_SDCBUS_Pos) /**< \brief (HSMCI_SDCR) SDCard/SDIO Bus Width */ +#define HSMCI_SDCR_SDCBUS_1 (0x0u << 6) /**< \brief (HSMCI_SDCR) 1 bit */ +#define HSMCI_SDCR_SDCBUS_4 (0x2u << 6) /**< \brief (HSMCI_SDCR) 4 bit */ +#define HSMCI_SDCR_SDCBUS_8 (0x3u << 6) /**< \brief (HSMCI_SDCR) 8 bit */ +/* -------- HSMCI_ARGR : (HSMCI Offset: 0x10) Argument Register -------- */ +#define HSMCI_ARGR_ARG_Pos 0 +#define HSMCI_ARGR_ARG_Msk (0xffffffffu << HSMCI_ARGR_ARG_Pos) /**< \brief (HSMCI_ARGR) Command Argument */ +#define HSMCI_ARGR_ARG(value) ((HSMCI_ARGR_ARG_Msk & ((value) << HSMCI_ARGR_ARG_Pos))) +/* -------- HSMCI_CMDR : (HSMCI Offset: 0x14) Command Register -------- */ +#define HSMCI_CMDR_CMDNB_Pos 0 +#define HSMCI_CMDR_CMDNB_Msk (0x3fu << HSMCI_CMDR_CMDNB_Pos) /**< \brief (HSMCI_CMDR) Command Number */ +#define HSMCI_CMDR_CMDNB(value) ((HSMCI_CMDR_CMDNB_Msk & ((value) << HSMCI_CMDR_CMDNB_Pos))) +#define HSMCI_CMDR_RSPTYP_Pos 6 +#define HSMCI_CMDR_RSPTYP_Msk (0x3u << HSMCI_CMDR_RSPTYP_Pos) /**< \brief (HSMCI_CMDR) Response Type */ +#define HSMCI_CMDR_RSPTYP_NORESP (0x0u << 6) /**< \brief (HSMCI_CMDR) No response. */ +#define HSMCI_CMDR_RSPTYP_48_BIT (0x1u << 6) /**< \brief (HSMCI_CMDR) 48-bit response. */ +#define HSMCI_CMDR_RSPTYP_136_BIT (0x2u << 6) /**< \brief (HSMCI_CMDR) 136-bit response. */ +#define HSMCI_CMDR_RSPTYP_R1B (0x3u << 6) /**< \brief (HSMCI_CMDR) R1b response type */ +#define HSMCI_CMDR_SPCMD_Pos 8 +#define HSMCI_CMDR_SPCMD_Msk (0x7u << HSMCI_CMDR_SPCMD_Pos) /**< \brief (HSMCI_CMDR) Special Command */ +#define HSMCI_CMDR_SPCMD_STD (0x0u << 8) /**< \brief (HSMCI_CMDR) Not a special CMD. */ +#define HSMCI_CMDR_SPCMD_INIT (0x1u << 8) /**< \brief (HSMCI_CMDR) Initialization CMD: 74 clock cycles for initialization sequence. */ +#define HSMCI_CMDR_SPCMD_SYNC (0x2u << 8) /**< \brief (HSMCI_CMDR) Synchronized CMD: Wait for the end of the current data block transfer before sending the pending command. */ +#define HSMCI_CMDR_SPCMD_CE_ATA (0x3u << 8) /**< \brief (HSMCI_CMDR) CE-ATA Completion Signal disable Command. The host cancels the ability for the device to return a command completion signal on the command line. */ +#define HSMCI_CMDR_SPCMD_IT_CMD (0x4u << 8) /**< \brief (HSMCI_CMDR) Interrupt command: Corresponds to the Interrupt Mode (CMD40). */ +#define HSMCI_CMDR_SPCMD_IT_RESP (0x5u << 8) /**< \brief (HSMCI_CMDR) Interrupt response: Corresponds to the Interrupt Mode (CMD40). */ +#define HSMCI_CMDR_SPCMD_BOR (0x6u << 8) /**< \brief (HSMCI_CMDR) Boot Operation Request. Start a boot operation mode, the host processor can read boot data from the MMC device directly. */ +#define HSMCI_CMDR_SPCMD_EBO (0x7u << 8) /**< \brief (HSMCI_CMDR) End Boot Operation. This command allows the host processor to terminate the boot operation mode. */ +#define HSMCI_CMDR_OPDCMD (0x1u << 11) /**< \brief (HSMCI_CMDR) Open Drain Command */ +#define HSMCI_CMDR_OPDCMD_PUSHPULL (0x0u << 11) /**< \brief (HSMCI_CMDR) Push pull command. */ +#define HSMCI_CMDR_OPDCMD_OPENDRAIN (0x1u << 11) /**< \brief (HSMCI_CMDR) Open drain command. */ +#define HSMCI_CMDR_MAXLAT (0x1u << 12) /**< \brief (HSMCI_CMDR) Max Latency for Command to Response */ +#define HSMCI_CMDR_MAXLAT_5 (0x0u << 12) /**< \brief (HSMCI_CMDR) 5-cycle max latency. */ +#define HSMCI_CMDR_MAXLAT_64 (0x1u << 12) /**< \brief (HSMCI_CMDR) 64-cycle max latency. */ +#define HSMCI_CMDR_TRCMD_Pos 16 +#define HSMCI_CMDR_TRCMD_Msk (0x3u << HSMCI_CMDR_TRCMD_Pos) /**< \brief (HSMCI_CMDR) Transfer Command */ +#define HSMCI_CMDR_TRCMD_NO_DATA (0x0u << 16) /**< \brief (HSMCI_CMDR) No data transfer */ +#define HSMCI_CMDR_TRCMD_START_DATA (0x1u << 16) /**< \brief (HSMCI_CMDR) Start data transfer */ +#define HSMCI_CMDR_TRCMD_STOP_DATA (0x2u << 16) /**< \brief (HSMCI_CMDR) Stop data transfer */ +#define HSMCI_CMDR_TRDIR (0x1u << 18) /**< \brief (HSMCI_CMDR) Transfer Direction */ +#define HSMCI_CMDR_TRDIR_WRITE (0x0u << 18) /**< \brief (HSMCI_CMDR) Write. */ +#define HSMCI_CMDR_TRDIR_READ (0x1u << 18) /**< \brief (HSMCI_CMDR) Read. */ +#define HSMCI_CMDR_TRTYP_Pos 19 +#define HSMCI_CMDR_TRTYP_Msk (0x7u << HSMCI_CMDR_TRTYP_Pos) /**< \brief (HSMCI_CMDR) Transfer Type */ +#define HSMCI_CMDR_TRTYP_SINGLE (0x0u << 19) /**< \brief (HSMCI_CMDR) MMC/SDCard Single Block */ +#define HSMCI_CMDR_TRTYP_MULTIPLE (0x1u << 19) /**< \brief (HSMCI_CMDR) MMC/SDCard Multiple Block */ +#define HSMCI_CMDR_TRTYP_STREAM (0x2u << 19) /**< \brief (HSMCI_CMDR) MMC Stream */ +#define HSMCI_CMDR_TRTYP_BYTE (0x4u << 19) /**< \brief (HSMCI_CMDR) SDIO Byte */ +#define HSMCI_CMDR_TRTYP_BLOCK (0x5u << 19) /**< \brief (HSMCI_CMDR) SDIO Block */ +#define HSMCI_CMDR_IOSPCMD_Pos 24 +#define HSMCI_CMDR_IOSPCMD_Msk (0x3u << HSMCI_CMDR_IOSPCMD_Pos) /**< \brief (HSMCI_CMDR) SDIO Special Command */ +#define HSMCI_CMDR_IOSPCMD_STD (0x0u << 24) /**< \brief (HSMCI_CMDR) Not an SDIO Special Command */ +#define HSMCI_CMDR_IOSPCMD_SUSPEND (0x1u << 24) /**< \brief (HSMCI_CMDR) SDIO Suspend Command */ +#define HSMCI_CMDR_IOSPCMD_RESUME (0x2u << 24) /**< \brief (HSMCI_CMDR) SDIO Resume Command */ +#define HSMCI_CMDR_ATACS (0x1u << 26) /**< \brief (HSMCI_CMDR) ATA with Command Completion Signal */ +#define HSMCI_CMDR_ATACS_NORMAL (0x0u << 26) /**< \brief (HSMCI_CMDR) Normal operation mode. */ +#define HSMCI_CMDR_ATACS_COMPLETION (0x1u << 26) /**< \brief (HSMCI_CMDR) This bit indicates that a completion signal is expected within a programmed amount of time (HSMCI_CSTOR). */ +#define HSMCI_CMDR_BOOT_ACK (0x1u << 27) /**< \brief (HSMCI_CMDR) Boot Operation Acknowledge. */ +/* -------- HSMCI_BLKR : (HSMCI Offset: 0x18) Block Register -------- */ +#define HSMCI_BLKR_BCNT_Pos 0 +#define HSMCI_BLKR_BCNT_Msk (0xffffu << HSMCI_BLKR_BCNT_Pos) /**< \brief (HSMCI_BLKR) MMC/SDIO Block Count - SDIO Byte Count */ +#define HSMCI_BLKR_BCNT_MULTIPLE (0x0u << 0) /**< \brief (HSMCI_BLKR) MMC/SDCARD Multiple BlockFrom 1 to 65635: Value 0 corresponds to an infinite block transfer. */ +#define HSMCI_BLKR_BCNT_BYTE (0x4u << 0) /**< \brief (HSMCI_BLKR) SDIO ByteFrom 1 to 512 bytes: Value 0 corresponds to a 512-byte transfer.Values from 0x200 to 0xFFFF are forbidden. */ +#define HSMCI_BLKR_BCNT_BLOCK (0x5u << 0) /**< \brief (HSMCI_BLKR) SDIO BlockFrom 1 to 511 blocks: Value 0 corresponds to an infinite block transfer.Values from 0x200 to 0xFFFF are forbidden. */ +#define HSMCI_BLKR_BLKLEN_Pos 16 +#define HSMCI_BLKR_BLKLEN_Msk (0xffffu << HSMCI_BLKR_BLKLEN_Pos) /**< \brief (HSMCI_BLKR) Data Block Length */ +#define HSMCI_BLKR_BLKLEN(value) ((HSMCI_BLKR_BLKLEN_Msk & ((value) << HSMCI_BLKR_BLKLEN_Pos))) +/* -------- HSMCI_CSTOR : (HSMCI Offset: 0x1C) Completion Signal Timeout Register -------- */ +#define HSMCI_CSTOR_CSTOCYC_Pos 0 +#define HSMCI_CSTOR_CSTOCYC_Msk (0xfu << HSMCI_CSTOR_CSTOCYC_Pos) /**< \brief (HSMCI_CSTOR) Completion Signal Timeout Cycle Number */ +#define HSMCI_CSTOR_CSTOCYC(value) ((HSMCI_CSTOR_CSTOCYC_Msk & ((value) << HSMCI_CSTOR_CSTOCYC_Pos))) +#define HSMCI_CSTOR_CSTOMUL_Pos 4 +#define HSMCI_CSTOR_CSTOMUL_Msk (0x7u << HSMCI_CSTOR_CSTOMUL_Pos) /**< \brief (HSMCI_CSTOR) Completion Signal Timeout Multiplier */ +#define HSMCI_CSTOR_CSTOMUL_1 (0x0u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1 */ +#define HSMCI_CSTOR_CSTOMUL_16 (0x1u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 16 */ +#define HSMCI_CSTOR_CSTOMUL_128 (0x2u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 128 */ +#define HSMCI_CSTOR_CSTOMUL_256 (0x3u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 256 */ +#define HSMCI_CSTOR_CSTOMUL_1024 (0x4u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1024 */ +#define HSMCI_CSTOR_CSTOMUL_4096 (0x5u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 4096 */ +#define HSMCI_CSTOR_CSTOMUL_65536 (0x6u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 65536 */ +#define HSMCI_CSTOR_CSTOMUL_1048576 (0x7u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1048576 */ +/* -------- HSMCI_RSPR[4] : (HSMCI Offset: 0x20) Response Register -------- */ +#define HSMCI_RSPR_RSP_Pos 0 +#define HSMCI_RSPR_RSP_Msk (0xffffffffu << HSMCI_RSPR_RSP_Pos) /**< \brief (HSMCI_RSPR[4]) Response */ +/* -------- HSMCI_RDR : (HSMCI Offset: 0x30) Receive Data Register -------- */ +#define HSMCI_RDR_DATA_Pos 0 +#define HSMCI_RDR_DATA_Msk (0xffffffffu << HSMCI_RDR_DATA_Pos) /**< \brief (HSMCI_RDR) Data to Read */ +/* -------- HSMCI_TDR : (HSMCI Offset: 0x34) Transmit Data Register -------- */ +#define HSMCI_TDR_DATA_Pos 0 +#define HSMCI_TDR_DATA_Msk (0xffffffffu << HSMCI_TDR_DATA_Pos) /**< \brief (HSMCI_TDR) Data to Write */ +#define HSMCI_TDR_DATA(value) ((HSMCI_TDR_DATA_Msk & ((value) << HSMCI_TDR_DATA_Pos))) +/* -------- HSMCI_SR : (HSMCI Offset: 0x40) Status Register -------- */ +#define HSMCI_SR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_SR) Command Ready */ +#define HSMCI_SR_RXRDY (0x1u << 1) /**< \brief (HSMCI_SR) Receiver Ready */ +#define HSMCI_SR_TXRDY (0x1u << 2) /**< \brief (HSMCI_SR) Transmit Ready */ +#define HSMCI_SR_BLKE (0x1u << 3) /**< \brief (HSMCI_SR) Data Block Ended */ +#define HSMCI_SR_DTIP (0x1u << 4) /**< \brief (HSMCI_SR) Data Transfer in Progress */ +#define HSMCI_SR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_SR) HSMCI Not Busy */ +#define HSMCI_SR_ENDRX (0x1u << 6) /**< \brief (HSMCI_SR) End of RX Buffer */ +#define HSMCI_SR_ENDTX (0x1u << 7) /**< \brief (HSMCI_SR) End of TX Buffer */ +#define HSMCI_SR_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_SR) SDIO Interrupt for Slot A */ +#define HSMCI_SR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_SR) SDIO Read Wait Operation Status */ +#define HSMCI_SR_CSRCV (0x1u << 13) /**< \brief (HSMCI_SR) CE-ATA Completion Signal Received */ +#define HSMCI_SR_RXBUFF (0x1u << 14) /**< \brief (HSMCI_SR) RX Buffer Full */ +#define HSMCI_SR_TXBUFE (0x1u << 15) /**< \brief (HSMCI_SR) TX Buffer Empty */ +#define HSMCI_SR_RINDE (0x1u << 16) /**< \brief (HSMCI_SR) Response Index Error */ +#define HSMCI_SR_RDIRE (0x1u << 17) /**< \brief (HSMCI_SR) Response Direction Error */ +#define HSMCI_SR_RCRCE (0x1u << 18) /**< \brief (HSMCI_SR) Response CRC Error */ +#define HSMCI_SR_RENDE (0x1u << 19) /**< \brief (HSMCI_SR) Response End Bit Error */ +#define HSMCI_SR_RTOE (0x1u << 20) /**< \brief (HSMCI_SR) Response Time-out Error */ +#define HSMCI_SR_DCRCE (0x1u << 21) /**< \brief (HSMCI_SR) Data CRC Error */ +#define HSMCI_SR_DTOE (0x1u << 22) /**< \brief (HSMCI_SR) Data Time-out Error */ +#define HSMCI_SR_CSTOE (0x1u << 23) /**< \brief (HSMCI_SR) Completion Signal Time-out Error */ +#define HSMCI_SR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_SR) FIFO empty flag */ +#define HSMCI_SR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_SR) Transfer Done flag */ +#define HSMCI_SR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_SR) Boot Operation Acknowledge Received */ +#define HSMCI_SR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_SR) Boot Operation Acknowledge Error */ +#define HSMCI_SR_OVRE (0x1u << 30) /**< \brief (HSMCI_SR) Overrun */ +#define HSMCI_SR_UNRE (0x1u << 31) /**< \brief (HSMCI_SR) Underrun */ +/* -------- HSMCI_IER : (HSMCI Offset: 0x44) Interrupt Enable Register -------- */ +#define HSMCI_IER_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IER) Command Ready Interrupt Enable */ +#define HSMCI_IER_RXRDY (0x1u << 1) /**< \brief (HSMCI_IER) Receiver Ready Interrupt Enable */ +#define HSMCI_IER_TXRDY (0x1u << 2) /**< \brief (HSMCI_IER) Transmit Ready Interrupt Enable */ +#define HSMCI_IER_BLKE (0x1u << 3) /**< \brief (HSMCI_IER) Data Block Ended Interrupt Enable */ +#define HSMCI_IER_DTIP (0x1u << 4) /**< \brief (HSMCI_IER) Data Transfer in Progress Interrupt Enable */ +#define HSMCI_IER_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IER) Data Not Busy Interrupt Enable */ +#define HSMCI_IER_ENDRX (0x1u << 6) /**< \brief (HSMCI_IER) End of Receive Buffer Interrupt Enable */ +#define HSMCI_IER_ENDTX (0x1u << 7) /**< \brief (HSMCI_IER) End of Transmit Buffer Interrupt Enable */ +#define HSMCI_IER_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_IER) SDIO Interrupt for Slot A Interrupt Enable */ +#define HSMCI_IER_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IER) SDIO Read Wait Operation Status Interrupt Enable */ +#define HSMCI_IER_CSRCV (0x1u << 13) /**< \brief (HSMCI_IER) Completion Signal Received Interrupt Enable */ +#define HSMCI_IER_RXBUFF (0x1u << 14) /**< \brief (HSMCI_IER) Receive Buffer Full Interrupt Enable */ +#define HSMCI_IER_TXBUFE (0x1u << 15) /**< \brief (HSMCI_IER) Transmit Buffer Empty Interrupt Enable */ +#define HSMCI_IER_RINDE (0x1u << 16) /**< \brief (HSMCI_IER) Response Index Error Interrupt Enable */ +#define HSMCI_IER_RDIRE (0x1u << 17) /**< \brief (HSMCI_IER) Response Direction Error Interrupt Enable */ +#define HSMCI_IER_RCRCE (0x1u << 18) /**< \brief (HSMCI_IER) Response CRC Error Interrupt Enable */ +#define HSMCI_IER_RENDE (0x1u << 19) /**< \brief (HSMCI_IER) Response End Bit Error Interrupt Enable */ +#define HSMCI_IER_RTOE (0x1u << 20) /**< \brief (HSMCI_IER) Response Time-out Error Interrupt Enable */ +#define HSMCI_IER_DCRCE (0x1u << 21) /**< \brief (HSMCI_IER) Data CRC Error Interrupt Enable */ +#define HSMCI_IER_DTOE (0x1u << 22) /**< \brief (HSMCI_IER) Data Time-out Error Interrupt Enable */ +#define HSMCI_IER_CSTOE (0x1u << 23) /**< \brief (HSMCI_IER) Completion Signal Timeout Error Interrupt Enable */ +#define HSMCI_IER_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IER) FIFO empty Interrupt enable */ +#define HSMCI_IER_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IER) Transfer Done Interrupt enable */ +#define HSMCI_IER_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IER) Boot Acknowledge Interrupt Enable */ +#define HSMCI_IER_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IER) Boot Acknowledge Error Interrupt Enable */ +#define HSMCI_IER_OVRE (0x1u << 30) /**< \brief (HSMCI_IER) Overrun Interrupt Enable */ +#define HSMCI_IER_UNRE (0x1u << 31) /**< \brief (HSMCI_IER) Underrun Interrupt Enable */ +/* -------- HSMCI_IDR : (HSMCI Offset: 0x48) Interrupt Disable Register -------- */ +#define HSMCI_IDR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IDR) Command Ready Interrupt Disable */ +#define HSMCI_IDR_RXRDY (0x1u << 1) /**< \brief (HSMCI_IDR) Receiver Ready Interrupt Disable */ +#define HSMCI_IDR_TXRDY (0x1u << 2) /**< \brief (HSMCI_IDR) Transmit Ready Interrupt Disable */ +#define HSMCI_IDR_BLKE (0x1u << 3) /**< \brief (HSMCI_IDR) Data Block Ended Interrupt Disable */ +#define HSMCI_IDR_DTIP (0x1u << 4) /**< \brief (HSMCI_IDR) Data Transfer in Progress Interrupt Disable */ +#define HSMCI_IDR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IDR) Data Not Busy Interrupt Disable */ +#define HSMCI_IDR_ENDRX (0x1u << 6) /**< \brief (HSMCI_IDR) End of Receive Buffer Interrupt Disable */ +#define HSMCI_IDR_ENDTX (0x1u << 7) /**< \brief (HSMCI_IDR) End of Transmit Buffer Interrupt Disable */ +#define HSMCI_IDR_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_IDR) SDIO Interrupt for Slot A Interrupt Disable */ +#define HSMCI_IDR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IDR) SDIO Read Wait Operation Status Interrupt Disable */ +#define HSMCI_IDR_CSRCV (0x1u << 13) /**< \brief (HSMCI_IDR) Completion Signal received interrupt Disable */ +#define HSMCI_IDR_RXBUFF (0x1u << 14) /**< \brief (HSMCI_IDR) Receive Buffer Full Interrupt Disable */ +#define HSMCI_IDR_TXBUFE (0x1u << 15) /**< \brief (HSMCI_IDR) Transmit Buffer Empty Interrupt Disable */ +#define HSMCI_IDR_RINDE (0x1u << 16) /**< \brief (HSMCI_IDR) Response Index Error Interrupt Disable */ +#define HSMCI_IDR_RDIRE (0x1u << 17) /**< \brief (HSMCI_IDR) Response Direction Error Interrupt Disable */ +#define HSMCI_IDR_RCRCE (0x1u << 18) /**< \brief (HSMCI_IDR) Response CRC Error Interrupt Disable */ +#define HSMCI_IDR_RENDE (0x1u << 19) /**< \brief (HSMCI_IDR) Response End Bit Error Interrupt Disable */ +#define HSMCI_IDR_RTOE (0x1u << 20) /**< \brief (HSMCI_IDR) Response Time-out Error Interrupt Disable */ +#define HSMCI_IDR_DCRCE (0x1u << 21) /**< \brief (HSMCI_IDR) Data CRC Error Interrupt Disable */ +#define HSMCI_IDR_DTOE (0x1u << 22) /**< \brief (HSMCI_IDR) Data Time-out Error Interrupt Disable */ +#define HSMCI_IDR_CSTOE (0x1u << 23) /**< \brief (HSMCI_IDR) Completion Signal Time out Error Interrupt Disable */ +#define HSMCI_IDR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IDR) FIFO empty Interrupt Disable */ +#define HSMCI_IDR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IDR) Transfer Done Interrupt Disable */ +#define HSMCI_IDR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IDR) Boot Acknowledge Interrupt Disable */ +#define HSMCI_IDR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IDR) Boot Acknowledge Error Interrupt Disable */ +#define HSMCI_IDR_OVRE (0x1u << 30) /**< \brief (HSMCI_IDR) Overrun Interrupt Disable */ +#define HSMCI_IDR_UNRE (0x1u << 31) /**< \brief (HSMCI_IDR) Underrun Interrupt Disable */ +/* -------- HSMCI_IMR : (HSMCI Offset: 0x4C) Interrupt Mask Register -------- */ +#define HSMCI_IMR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IMR) Command Ready Interrupt Mask */ +#define HSMCI_IMR_RXRDY (0x1u << 1) /**< \brief (HSMCI_IMR) Receiver Ready Interrupt Mask */ +#define HSMCI_IMR_TXRDY (0x1u << 2) /**< \brief (HSMCI_IMR) Transmit Ready Interrupt Mask */ +#define HSMCI_IMR_BLKE (0x1u << 3) /**< \brief (HSMCI_IMR) Data Block Ended Interrupt Mask */ +#define HSMCI_IMR_DTIP (0x1u << 4) /**< \brief (HSMCI_IMR) Data Transfer in Progress Interrupt Mask */ +#define HSMCI_IMR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IMR) Data Not Busy Interrupt Mask */ +#define HSMCI_IMR_ENDRX (0x1u << 6) /**< \brief (HSMCI_IMR) End of Receive Buffer Interrupt Mask */ +#define HSMCI_IMR_ENDTX (0x1u << 7) /**< \brief (HSMCI_IMR) End of Transmit Buffer Interrupt Mask */ +#define HSMCI_IMR_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_IMR) SDIO Interrupt for Slot A Interrupt Mask */ +#define HSMCI_IMR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IMR) SDIO Read Wait Operation Status Interrupt Mask */ +#define HSMCI_IMR_CSRCV (0x1u << 13) /**< \brief (HSMCI_IMR) Completion Signal Received Interrupt Mask */ +#define HSMCI_IMR_RXBUFF (0x1u << 14) /**< \brief (HSMCI_IMR) Receive Buffer Full Interrupt Mask */ +#define HSMCI_IMR_TXBUFE (0x1u << 15) /**< \brief (HSMCI_IMR) Transmit Buffer Empty Interrupt Mask */ +#define HSMCI_IMR_RINDE (0x1u << 16) /**< \brief (HSMCI_IMR) Response Index Error Interrupt Mask */ +#define HSMCI_IMR_RDIRE (0x1u << 17) /**< \brief (HSMCI_IMR) Response Direction Error Interrupt Mask */ +#define HSMCI_IMR_RCRCE (0x1u << 18) /**< \brief (HSMCI_IMR) Response CRC Error Interrupt Mask */ +#define HSMCI_IMR_RENDE (0x1u << 19) /**< \brief (HSMCI_IMR) Response End Bit Error Interrupt Mask */ +#define HSMCI_IMR_RTOE (0x1u << 20) /**< \brief (HSMCI_IMR) Response Time-out Error Interrupt Mask */ +#define HSMCI_IMR_DCRCE (0x1u << 21) /**< \brief (HSMCI_IMR) Data CRC Error Interrupt Mask */ +#define HSMCI_IMR_DTOE (0x1u << 22) /**< \brief (HSMCI_IMR) Data Time-out Error Interrupt Mask */ +#define HSMCI_IMR_CSTOE (0x1u << 23) /**< \brief (HSMCI_IMR) Completion Signal Time-out Error Interrupt Mask */ +#define HSMCI_IMR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IMR) FIFO Empty Interrupt Mask */ +#define HSMCI_IMR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IMR) Transfer Done Interrupt Mask */ +#define HSMCI_IMR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IMR) Boot Operation Acknowledge Received Interrupt Mask */ +#define HSMCI_IMR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IMR) Boot Operation Acknowledge Error Interrupt Mask */ +#define HSMCI_IMR_OVRE (0x1u << 30) /**< \brief (HSMCI_IMR) Overrun Interrupt Mask */ +#define HSMCI_IMR_UNRE (0x1u << 31) /**< \brief (HSMCI_IMR) Underrun Interrupt Mask */ +/* -------- HSMCI_CFG : (HSMCI Offset: 0x54) Configuration Register -------- */ +#define HSMCI_CFG_FIFOMODE (0x1u << 0) /**< \brief (HSMCI_CFG) HSMCI Internal FIFO control mode */ +#define HSMCI_CFG_FERRCTRL (0x1u << 4) /**< \brief (HSMCI_CFG) Flow Error flag reset control mode */ +#define HSMCI_CFG_HSMODE (0x1u << 8) /**< \brief (HSMCI_CFG) High Speed Mode */ +#define HSMCI_CFG_LSYNC (0x1u << 12) /**< \brief (HSMCI_CFG) Synchronize on the last block */ +/* -------- HSMCI_WPMR : (HSMCI Offset: 0xE4) Write Protection Mode Register -------- */ +#define HSMCI_WPMR_WP_EN (0x1u << 0) /**< \brief (HSMCI_WPMR) Write Protection Enable */ +#define HSMCI_WPMR_WP_KEY_Pos 8 +#define HSMCI_WPMR_WP_KEY_Msk (0xffffffu << HSMCI_WPMR_WP_KEY_Pos) /**< \brief (HSMCI_WPMR) Write Protection Key password */ +#define HSMCI_WPMR_WP_KEY(value) ((HSMCI_WPMR_WP_KEY_Msk & ((value) << HSMCI_WPMR_WP_KEY_Pos))) +/* -------- HSMCI_WPSR : (HSMCI Offset: 0xE8) Write Protection Status Register -------- */ +#define HSMCI_WPSR_WP_VS_Pos 0 +#define HSMCI_WPSR_WP_VS_Msk (0xfu << HSMCI_WPSR_WP_VS_Pos) /**< \brief (HSMCI_WPSR) Write Protection Violation Status */ +#define HSMCI_WPSR_WP_VS_NONE (0x0u << 0) /**< \brief (HSMCI_WPSR) No Write Protection Violation occurred since the last read of this register (WP_SR) */ +#define HSMCI_WPSR_WP_VS_WRITE (0x1u << 0) /**< \brief (HSMCI_WPSR) Write Protection detected unauthorized attempt to write a control register had occurred (since the last read.) */ +#define HSMCI_WPSR_WP_VS_RESET (0x2u << 0) /**< \brief (HSMCI_WPSR) Software reset had been performed while Write Protection was enabled (since the last read). */ +#define HSMCI_WPSR_WP_VS_BOTH (0x3u << 0) /**< \brief (HSMCI_WPSR) Both Write Protection violation and software reset with Write Protection enabled have occurred since the last read. */ +#define HSMCI_WPSR_WP_VSRC_Pos 8 +#define HSMCI_WPSR_WP_VSRC_Msk (0xffffu << HSMCI_WPSR_WP_VSRC_Pos) /**< \brief (HSMCI_WPSR) Write Protection Violation SouRCe */ +/* -------- HSMCI_RPR : (HSMCI Offset: 0x100) Receive Pointer Register -------- */ +#define HSMCI_RPR_RXPTR_Pos 0 +#define HSMCI_RPR_RXPTR_Msk (0xffffffffu << HSMCI_RPR_RXPTR_Pos) /**< \brief (HSMCI_RPR) Receive Pointer Register */ +#define HSMCI_RPR_RXPTR(value) ((HSMCI_RPR_RXPTR_Msk & ((value) << HSMCI_RPR_RXPTR_Pos))) +/* -------- HSMCI_RCR : (HSMCI Offset: 0x104) Receive Counter Register -------- */ +#define HSMCI_RCR_RXCTR_Pos 0 +#define HSMCI_RCR_RXCTR_Msk (0xffffu << HSMCI_RCR_RXCTR_Pos) /**< \brief (HSMCI_RCR) Receive Counter Register */ +#define HSMCI_RCR_RXCTR(value) ((HSMCI_RCR_RXCTR_Msk & ((value) << HSMCI_RCR_RXCTR_Pos))) +/* -------- HSMCI_TPR : (HSMCI Offset: 0x108) Transmit Pointer Register -------- */ +#define HSMCI_TPR_TXPTR_Pos 0 +#define HSMCI_TPR_TXPTR_Msk (0xffffffffu << HSMCI_TPR_TXPTR_Pos) /**< \brief (HSMCI_TPR) Transmit Counter Register */ +#define HSMCI_TPR_TXPTR(value) ((HSMCI_TPR_TXPTR_Msk & ((value) << HSMCI_TPR_TXPTR_Pos))) +/* -------- HSMCI_TCR : (HSMCI Offset: 0x10C) Transmit Counter Register -------- */ +#define HSMCI_TCR_TXCTR_Pos 0 +#define HSMCI_TCR_TXCTR_Msk (0xffffu << HSMCI_TCR_TXCTR_Pos) /**< \brief (HSMCI_TCR) Transmit Counter Register */ +#define HSMCI_TCR_TXCTR(value) ((HSMCI_TCR_TXCTR_Msk & ((value) << HSMCI_TCR_TXCTR_Pos))) +/* -------- HSMCI_RNPR : (HSMCI Offset: 0x110) Receive Next Pointer Register -------- */ +#define HSMCI_RNPR_RXNPTR_Pos 0 +#define HSMCI_RNPR_RXNPTR_Msk (0xffffffffu << HSMCI_RNPR_RXNPTR_Pos) /**< \brief (HSMCI_RNPR) Receive Next Pointer */ +#define HSMCI_RNPR_RXNPTR(value) ((HSMCI_RNPR_RXNPTR_Msk & ((value) << HSMCI_RNPR_RXNPTR_Pos))) +/* -------- HSMCI_RNCR : (HSMCI Offset: 0x114) Receive Next Counter Register -------- */ +#define HSMCI_RNCR_RXNCTR_Pos 0 +#define HSMCI_RNCR_RXNCTR_Msk (0xffffu << HSMCI_RNCR_RXNCTR_Pos) /**< \brief (HSMCI_RNCR) Receive Next Counter */ +#define HSMCI_RNCR_RXNCTR(value) ((HSMCI_RNCR_RXNCTR_Msk & ((value) << HSMCI_RNCR_RXNCTR_Pos))) +/* -------- HSMCI_TNPR : (HSMCI Offset: 0x118) Transmit Next Pointer Register -------- */ +#define HSMCI_TNPR_TXNPTR_Pos 0 +#define HSMCI_TNPR_TXNPTR_Msk (0xffffffffu << HSMCI_TNPR_TXNPTR_Pos) /**< \brief (HSMCI_TNPR) Transmit Next Pointer */ +#define HSMCI_TNPR_TXNPTR(value) ((HSMCI_TNPR_TXNPTR_Msk & ((value) << HSMCI_TNPR_TXNPTR_Pos))) +/* -------- HSMCI_TNCR : (HSMCI Offset: 0x11C) Transmit Next Counter Register -------- */ +#define HSMCI_TNCR_TXNCTR_Pos 0 +#define HSMCI_TNCR_TXNCTR_Msk (0xffffu << HSMCI_TNCR_TXNCTR_Pos) /**< \brief (HSMCI_TNCR) Transmit Counter Next */ +#define HSMCI_TNCR_TXNCTR(value) ((HSMCI_TNCR_TXNCTR_Msk & ((value) << HSMCI_TNCR_TXNCTR_Pos))) +/* -------- HSMCI_PTCR : (HSMCI Offset: 0x120) Transfer Control Register -------- */ +#define HSMCI_PTCR_RXTEN (0x1u << 0) /**< \brief (HSMCI_PTCR) Receiver Transfer Enable */ +#define HSMCI_PTCR_RXTDIS (0x1u << 1) /**< \brief (HSMCI_PTCR) Receiver Transfer Disable */ +#define HSMCI_PTCR_TXTEN (0x1u << 8) /**< \brief (HSMCI_PTCR) Transmitter Transfer Enable */ +#define HSMCI_PTCR_TXTDIS (0x1u << 9) /**< \brief (HSMCI_PTCR) Transmitter Transfer Disable */ +/* -------- HSMCI_PTSR : (HSMCI Offset: 0x124) Transfer Status Register -------- */ +#define HSMCI_PTSR_RXTEN (0x1u << 0) /**< \brief (HSMCI_PTSR) Receiver Transfer Enable */ +#define HSMCI_PTSR_TXTEN (0x1u << 8) /**< \brief (HSMCI_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3S8_HSMCI_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_matrix.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_matrix.h new file mode 100644 index 000000000..053917d80 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_matrix.h @@ -0,0 +1,188 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_MATRIX_COMPONENT_ +#define _SAM3S8_MATRIX_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR AHB Bus Matrix */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_MATRIX AHB Bus Matrix */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Matrix hardware registers */ +typedef struct { + RwReg MATRIX_MCFG[4]; /**< \brief (Matrix Offset: 0x0000) Master Configuration Register */ + RoReg Reserved1[12]; + RwReg MATRIX_SCFG[5]; /**< \brief (Matrix Offset: 0x0040) Slave Configuration Register */ + RoReg Reserved2[11]; + RwReg MATRIX_PRAS0; /**< \brief (Matrix Offset: 0x0080) Priority Register A for Slave 0 */ + RoReg Reserved3[1]; + RwReg MATRIX_PRAS1; /**< \brief (Matrix Offset: 0x0088) Priority Register A for Slave 1 */ + RoReg Reserved4[1]; + RwReg MATRIX_PRAS2; /**< \brief (Matrix Offset: 0x0090) Priority Register A for Slave 2 */ + RoReg Reserved5[1]; + RwReg MATRIX_PRAS3; /**< \brief (Matrix Offset: 0x0098) Priority Register A for Slave 3 */ + RoReg Reserved6[1]; + RwReg MATRIX_PRAS4; /**< \brief (Matrix Offset: 0x00A0) Priority Register A for Slave 4 */ + RoReg Reserved7[1]; + RoReg Reserved8[27]; + RwReg CCFG_SYSIO; /**< \brief (Matrix Offset: 0x0114) System I/O Configuration register */ + RoReg Reserved9[1]; + RwReg CCFG_SMCNFCS; /**< \brief (Matrix Offset: 0x011C) SMC Chip Select NAND Flash Assignment Register */ + RoReg Reserved10[49]; + RwReg MATRIX_WPMR; /**< \brief (Matrix Offset: 0x1E4) Write Protect Mode Register */ + RoReg MATRIX_WPSR; /**< \brief (Matrix Offset: 0x1E8) Write Protect Status Register */ +} Matrix; +#endif /* __ASSEMBLY__ */ +/* -------- MATRIX_MCFG[4] : (MATRIX Offset: 0x0000) Master Configuration Register -------- */ +#define MATRIX_MCFG_ULBT_Pos 0 +#define MATRIX_MCFG_ULBT_Msk (0x7u << MATRIX_MCFG_ULBT_Pos) /**< \brief (MATRIX_MCFG[4]) Undefined Length Burst Type */ +#define MATRIX_MCFG_ULBT(value) ((MATRIX_MCFG_ULBT_Msk & ((value) << MATRIX_MCFG_ULBT_Pos))) +/* -------- MATRIX_SCFG[5] : (MATRIX Offset: 0x0040) Slave Configuration Register -------- */ +#define MATRIX_SCFG_SLOT_CYCLE_Pos 0 +#define MATRIX_SCFG_SLOT_CYCLE_Msk (0xffu << MATRIX_SCFG_SLOT_CYCLE_Pos) /**< \brief (MATRIX_SCFG[5]) Maximum Number of Allowed Cycles for a Burst */ +#define MATRIX_SCFG_SLOT_CYCLE(value) ((MATRIX_SCFG_SLOT_CYCLE_Msk & ((value) << MATRIX_SCFG_SLOT_CYCLE_Pos))) +#define MATRIX_SCFG_DEFMSTR_TYPE_Pos 16 +#define MATRIX_SCFG_DEFMSTR_TYPE_Msk (0x3u << MATRIX_SCFG_DEFMSTR_TYPE_Pos) /**< \brief (MATRIX_SCFG[5]) Default Master Type */ +#define MATRIX_SCFG_DEFMSTR_TYPE(value) ((MATRIX_SCFG_DEFMSTR_TYPE_Msk & ((value) << MATRIX_SCFG_DEFMSTR_TYPE_Pos))) +#define MATRIX_SCFG_FIXED_DEFMSTR_Pos 18 +#define MATRIX_SCFG_FIXED_DEFMSTR_Msk (0x7u << MATRIX_SCFG_FIXED_DEFMSTR_Pos) /**< \brief (MATRIX_SCFG[5]) Fixed Default Master */ +#define MATRIX_SCFG_FIXED_DEFMSTR(value) ((MATRIX_SCFG_FIXED_DEFMSTR_Msk & ((value) << MATRIX_SCFG_FIXED_DEFMSTR_Pos))) +#define MATRIX_SCFG_ARBT_Pos 24 +#define MATRIX_SCFG_ARBT_Msk (0x3u << MATRIX_SCFG_ARBT_Pos) /**< \brief (MATRIX_SCFG[5]) Arbitration Type */ +#define MATRIX_SCFG_ARBT(value) ((MATRIX_SCFG_ARBT_Msk & ((value) << MATRIX_SCFG_ARBT_Pos))) +/* -------- MATRIX_PRAS0 : (MATRIX Offset: 0x0080) Priority Register A for Slave 0 -------- */ +#define MATRIX_PRAS0_M0PR_Pos 0 +#define MATRIX_PRAS0_M0PR_Msk (0x3u << MATRIX_PRAS0_M0PR_Pos) /**< \brief (MATRIX_PRAS0) Master 0 Priority */ +#define MATRIX_PRAS0_M0PR(value) ((MATRIX_PRAS0_M0PR_Msk & ((value) << MATRIX_PRAS0_M0PR_Pos))) +#define MATRIX_PRAS0_M1PR_Pos 4 +#define MATRIX_PRAS0_M1PR_Msk (0x3u << MATRIX_PRAS0_M1PR_Pos) /**< \brief (MATRIX_PRAS0) Master 1 Priority */ +#define MATRIX_PRAS0_M1PR(value) ((MATRIX_PRAS0_M1PR_Msk & ((value) << MATRIX_PRAS0_M1PR_Pos))) +#define MATRIX_PRAS0_M2PR_Pos 8 +#define MATRIX_PRAS0_M2PR_Msk (0x3u << MATRIX_PRAS0_M2PR_Pos) /**< \brief (MATRIX_PRAS0) Master 2 Priority */ +#define MATRIX_PRAS0_M2PR(value) ((MATRIX_PRAS0_M2PR_Msk & ((value) << MATRIX_PRAS0_M2PR_Pos))) +#define MATRIX_PRAS0_M3PR_Pos 12 +#define MATRIX_PRAS0_M3PR_Msk (0x3u << MATRIX_PRAS0_M3PR_Pos) /**< \brief (MATRIX_PRAS0) Master 3 Priority */ +#define MATRIX_PRAS0_M3PR(value) ((MATRIX_PRAS0_M3PR_Msk & ((value) << MATRIX_PRAS0_M3PR_Pos))) +#define MATRIX_PRAS0_M4PR_Pos 16 +#define MATRIX_PRAS0_M4PR_Msk (0x3u << MATRIX_PRAS0_M4PR_Pos) /**< \brief (MATRIX_PRAS0) Master 4 Priority */ +#define MATRIX_PRAS0_M4PR(value) ((MATRIX_PRAS0_M4PR_Msk & ((value) << MATRIX_PRAS0_M4PR_Pos))) +/* -------- MATRIX_PRAS1 : (MATRIX Offset: 0x0088) Priority Register A for Slave 1 -------- */ +#define MATRIX_PRAS1_M0PR_Pos 0 +#define MATRIX_PRAS1_M0PR_Msk (0x3u << MATRIX_PRAS1_M0PR_Pos) /**< \brief (MATRIX_PRAS1) Master 0 Priority */ +#define MATRIX_PRAS1_M0PR(value) ((MATRIX_PRAS1_M0PR_Msk & ((value) << MATRIX_PRAS1_M0PR_Pos))) +#define MATRIX_PRAS1_M1PR_Pos 4 +#define MATRIX_PRAS1_M1PR_Msk (0x3u << MATRIX_PRAS1_M1PR_Pos) /**< \brief (MATRIX_PRAS1) Master 1 Priority */ +#define MATRIX_PRAS1_M1PR(value) ((MATRIX_PRAS1_M1PR_Msk & ((value) << MATRIX_PRAS1_M1PR_Pos))) +#define MATRIX_PRAS1_M2PR_Pos 8 +#define MATRIX_PRAS1_M2PR_Msk (0x3u << MATRIX_PRAS1_M2PR_Pos) /**< \brief (MATRIX_PRAS1) Master 2 Priority */ +#define MATRIX_PRAS1_M2PR(value) ((MATRIX_PRAS1_M2PR_Msk & ((value) << MATRIX_PRAS1_M2PR_Pos))) +#define MATRIX_PRAS1_M3PR_Pos 12 +#define MATRIX_PRAS1_M3PR_Msk (0x3u << MATRIX_PRAS1_M3PR_Pos) /**< \brief (MATRIX_PRAS1) Master 3 Priority */ +#define MATRIX_PRAS1_M3PR(value) ((MATRIX_PRAS1_M3PR_Msk & ((value) << MATRIX_PRAS1_M3PR_Pos))) +#define MATRIX_PRAS1_M4PR_Pos 16 +#define MATRIX_PRAS1_M4PR_Msk (0x3u << MATRIX_PRAS1_M4PR_Pos) /**< \brief (MATRIX_PRAS1) Master 4 Priority */ +#define MATRIX_PRAS1_M4PR(value) ((MATRIX_PRAS1_M4PR_Msk & ((value) << MATRIX_PRAS1_M4PR_Pos))) +/* -------- MATRIX_PRAS2 : (MATRIX Offset: 0x0090) Priority Register A for Slave 2 -------- */ +#define MATRIX_PRAS2_M0PR_Pos 0 +#define MATRIX_PRAS2_M0PR_Msk (0x3u << MATRIX_PRAS2_M0PR_Pos) /**< \brief (MATRIX_PRAS2) Master 0 Priority */ +#define MATRIX_PRAS2_M0PR(value) ((MATRIX_PRAS2_M0PR_Msk & ((value) << MATRIX_PRAS2_M0PR_Pos))) +#define MATRIX_PRAS2_M1PR_Pos 4 +#define MATRIX_PRAS2_M1PR_Msk (0x3u << MATRIX_PRAS2_M1PR_Pos) /**< \brief (MATRIX_PRAS2) Master 1 Priority */ +#define MATRIX_PRAS2_M1PR(value) ((MATRIX_PRAS2_M1PR_Msk & ((value) << MATRIX_PRAS2_M1PR_Pos))) +#define MATRIX_PRAS2_M2PR_Pos 8 +#define MATRIX_PRAS2_M2PR_Msk (0x3u << MATRIX_PRAS2_M2PR_Pos) /**< \brief (MATRIX_PRAS2) Master 2 Priority */ +#define MATRIX_PRAS2_M2PR(value) ((MATRIX_PRAS2_M2PR_Msk & ((value) << MATRIX_PRAS2_M2PR_Pos))) +#define MATRIX_PRAS2_M3PR_Pos 12 +#define MATRIX_PRAS2_M3PR_Msk (0x3u << MATRIX_PRAS2_M3PR_Pos) /**< \brief (MATRIX_PRAS2) Master 3 Priority */ +#define MATRIX_PRAS2_M3PR(value) ((MATRIX_PRAS2_M3PR_Msk & ((value) << MATRIX_PRAS2_M3PR_Pos))) +#define MATRIX_PRAS2_M4PR_Pos 16 +#define MATRIX_PRAS2_M4PR_Msk (0x3u << MATRIX_PRAS2_M4PR_Pos) /**< \brief (MATRIX_PRAS2) Master 4 Priority */ +#define MATRIX_PRAS2_M4PR(value) ((MATRIX_PRAS2_M4PR_Msk & ((value) << MATRIX_PRAS2_M4PR_Pos))) +/* -------- MATRIX_PRAS3 : (MATRIX Offset: 0x0098) Priority Register A for Slave 3 -------- */ +#define MATRIX_PRAS3_M0PR_Pos 0 +#define MATRIX_PRAS3_M0PR_Msk (0x3u << MATRIX_PRAS3_M0PR_Pos) /**< \brief (MATRIX_PRAS3) Master 0 Priority */ +#define MATRIX_PRAS3_M0PR(value) ((MATRIX_PRAS3_M0PR_Msk & ((value) << MATRIX_PRAS3_M0PR_Pos))) +#define MATRIX_PRAS3_M1PR_Pos 4 +#define MATRIX_PRAS3_M1PR_Msk (0x3u << MATRIX_PRAS3_M1PR_Pos) /**< \brief (MATRIX_PRAS3) Master 1 Priority */ +#define MATRIX_PRAS3_M1PR(value) ((MATRIX_PRAS3_M1PR_Msk & ((value) << MATRIX_PRAS3_M1PR_Pos))) +#define MATRIX_PRAS3_M2PR_Pos 8 +#define MATRIX_PRAS3_M2PR_Msk (0x3u << MATRIX_PRAS3_M2PR_Pos) /**< \brief (MATRIX_PRAS3) Master 2 Priority */ +#define MATRIX_PRAS3_M2PR(value) ((MATRIX_PRAS3_M2PR_Msk & ((value) << MATRIX_PRAS3_M2PR_Pos))) +#define MATRIX_PRAS3_M3PR_Pos 12 +#define MATRIX_PRAS3_M3PR_Msk (0x3u << MATRIX_PRAS3_M3PR_Pos) /**< \brief (MATRIX_PRAS3) Master 3 Priority */ +#define MATRIX_PRAS3_M3PR(value) ((MATRIX_PRAS3_M3PR_Msk & ((value) << MATRIX_PRAS3_M3PR_Pos))) +#define MATRIX_PRAS3_M4PR_Pos 16 +#define MATRIX_PRAS3_M4PR_Msk (0x3u << MATRIX_PRAS3_M4PR_Pos) /**< \brief (MATRIX_PRAS3) Master 4 Priority */ +#define MATRIX_PRAS3_M4PR(value) ((MATRIX_PRAS3_M4PR_Msk & ((value) << MATRIX_PRAS3_M4PR_Pos))) +/* -------- MATRIX_PRAS4 : (MATRIX Offset: 0x00A0) Priority Register A for Slave 4 -------- */ +#define MATRIX_PRAS4_M0PR_Pos 0 +#define MATRIX_PRAS4_M0PR_Msk (0x3u << MATRIX_PRAS4_M0PR_Pos) /**< \brief (MATRIX_PRAS4) Master 0 Priority */ +#define MATRIX_PRAS4_M0PR(value) ((MATRIX_PRAS4_M0PR_Msk & ((value) << MATRIX_PRAS4_M0PR_Pos))) +#define MATRIX_PRAS4_M1PR_Pos 4 +#define MATRIX_PRAS4_M1PR_Msk (0x3u << MATRIX_PRAS4_M1PR_Pos) /**< \brief (MATRIX_PRAS4) Master 1 Priority */ +#define MATRIX_PRAS4_M1PR(value) ((MATRIX_PRAS4_M1PR_Msk & ((value) << MATRIX_PRAS4_M1PR_Pos))) +#define MATRIX_PRAS4_M2PR_Pos 8 +#define MATRIX_PRAS4_M2PR_Msk (0x3u << MATRIX_PRAS4_M2PR_Pos) /**< \brief (MATRIX_PRAS4) Master 2 Priority */ +#define MATRIX_PRAS4_M2PR(value) ((MATRIX_PRAS4_M2PR_Msk & ((value) << MATRIX_PRAS4_M2PR_Pos))) +#define MATRIX_PRAS4_M3PR_Pos 12 +#define MATRIX_PRAS4_M3PR_Msk (0x3u << MATRIX_PRAS4_M3PR_Pos) /**< \brief (MATRIX_PRAS4) Master 3 Priority */ +#define MATRIX_PRAS4_M3PR(value) ((MATRIX_PRAS4_M3PR_Msk & ((value) << MATRIX_PRAS4_M3PR_Pos))) +#define MATRIX_PRAS4_M4PR_Pos 16 +#define MATRIX_PRAS4_M4PR_Msk (0x3u << MATRIX_PRAS4_M4PR_Pos) /**< \brief (MATRIX_PRAS4) Master 4 Priority */ +#define MATRIX_PRAS4_M4PR(value) ((MATRIX_PRAS4_M4PR_Msk & ((value) << MATRIX_PRAS4_M4PR_Pos))) +/* -------- CCFG_SYSIO : (MATRIX Offset: 0x0114) System I/O Configuration register -------- */ +#define CCFG_SYSIO_SYSIO4 (0x1u << 4) /**< \brief (CCFG_SYSIO) PB4 or TDI Assignment */ +#define CCFG_SYSIO_SYSIO5 (0x1u << 5) /**< \brief (CCFG_SYSIO) PB5 or TDO/TRACESWO Assignment */ +#define CCFG_SYSIO_SYSIO6 (0x1u << 6) /**< \brief (CCFG_SYSIO) PB6 or TMS/SWDIO Assignment */ +#define CCFG_SYSIO_SYSIO7 (0x1u << 7) /**< \brief (CCFG_SYSIO) PB7 or TCK/SWCLK Assignment */ +#define CCFG_SYSIO_SYSIO10 (0x1u << 10) /**< \brief (CCFG_SYSIO) PB10 or DDM Assignment */ +#define CCFG_SYSIO_SYSIO11 (0x1u << 11) /**< \brief (CCFG_SYSIO) PB11 or DDP Assignment */ +#define CCFG_SYSIO_SYSIO12 (0x1u << 12) /**< \brief (CCFG_SYSIO) PB12 or ERASE Assignment */ +/* -------- CCFG_SMCNFCS : (MATRIX Offset: 0x011C) SMC Chip Select NAND Flash Assignment Register -------- */ +#define CCFG_SMCNFCS_SMC_NFCS0 (0x1u << 0) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 0 Assignment */ +#define CCFG_SMCNFCS_SMC_NFCS1 (0x1u << 1) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 1 Assignment */ +#define CCFG_SMCNFCS_SMC_NFCS2 (0x1u << 2) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 2 Assignment */ +#define CCFG_SMCNFCS_SMC_NFCS3 (0x1u << 3) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 3 Assignment */ +/* -------- MATRIX_WPMR : (MATRIX Offset: 0x1E4) Write Protect Mode Register -------- */ +#define MATRIX_WPMR_WPEN (0x1u << 0) /**< \brief (MATRIX_WPMR) Write Protect ENable */ +#define MATRIX_WPMR_WPKEY_Pos 8 +#define MATRIX_WPMR_WPKEY_Msk (0xffffffu << MATRIX_WPMR_WPKEY_Pos) /**< \brief (MATRIX_WPMR) Write Protect KEY (Write-only) */ +#define MATRIX_WPMR_WPKEY(value) ((MATRIX_WPMR_WPKEY_Msk & ((value) << MATRIX_WPMR_WPKEY_Pos))) +/* -------- MATRIX_WPSR : (MATRIX Offset: 0x1E8) Write Protect Status Register -------- */ +#define MATRIX_WPSR_WPVS (0x1u << 0) /**< \brief (MATRIX_WPSR) Write Protect Violation Status */ +#define MATRIX_WPSR_WPVSRC_Pos 8 +#define MATRIX_WPSR_WPVSRC_Msk (0xffffu << MATRIX_WPSR_WPVSRC_Pos) /**< \brief (MATRIX_WPSR) Write Protect Violation Source */ + +/*@}*/ + + +#endif /* _SAM3S8_MATRIX_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_pdc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_pdc.h new file mode 100644 index 000000000..770a44746 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_pdc.h @@ -0,0 +1,98 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_PDC_COMPONENT_ +#define _SAM3S8_PDC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Peripheral DMA Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_PDC Peripheral DMA Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Pdc hardware registers */ +typedef struct { + RwReg PERIPH_RPR; /**< \brief (Pdc Offset: 0x0) Receive Pointer Register */ + RwReg PERIPH_RCR; /**< \brief (Pdc Offset: 0x4) Receive Counter Register */ + RwReg PERIPH_TPR; /**< \brief (Pdc Offset: 0x8) Transmit Pointer Register */ + RwReg PERIPH_TCR; /**< \brief (Pdc Offset: 0xC) Transmit Counter Register */ + RwReg PERIPH_RNPR; /**< \brief (Pdc Offset: 0x10) Receive Next Pointer Register */ + RwReg PERIPH_RNCR; /**< \brief (Pdc Offset: 0x14) Receive Next Counter Register */ + RwReg PERIPH_TNPR; /**< \brief (Pdc Offset: 0x18) Transmit Next Pointer Register */ + RwReg PERIPH_TNCR; /**< \brief (Pdc Offset: 0x1C) Transmit Next Counter Register */ + WoReg PERIPH_PTCR; /**< \brief (Pdc Offset: 0x20) Transfer Control Register */ + RoReg PERIPH_PTSR; /**< \brief (Pdc Offset: 0x24) Transfer Status Register */ +} Pdc; +#endif /* __ASSEMBLY__ */ +/* -------- PERIPH_RPR : (PDC Offset: 0x0) Receive Pointer Register -------- */ +#define PERIPH_RPR_RXPTR_Pos 0 +#define PERIPH_RPR_RXPTR_Msk (0xffffffffu << PERIPH_RPR_RXPTR_Pos) /**< \brief (PERIPH_RPR) Receive Pointer Register */ +#define PERIPH_RPR_RXPTR(value) ((PERIPH_RPR_RXPTR_Msk & ((value) << PERIPH_RPR_RXPTR_Pos))) +/* -------- PERIPH_RCR : (PDC Offset: 0x4) Receive Counter Register -------- */ +#define PERIPH_RCR_RXCTR_Pos 0 +#define PERIPH_RCR_RXCTR_Msk (0xffffu << PERIPH_RCR_RXCTR_Pos) /**< \brief (PERIPH_RCR) Receive Counter Register */ +#define PERIPH_RCR_RXCTR(value) ((PERIPH_RCR_RXCTR_Msk & ((value) << PERIPH_RCR_RXCTR_Pos))) +/* -------- PERIPH_TPR : (PDC Offset: 0x8) Transmit Pointer Register -------- */ +#define PERIPH_TPR_TXPTR_Pos 0 +#define PERIPH_TPR_TXPTR_Msk (0xffffffffu << PERIPH_TPR_TXPTR_Pos) /**< \brief (PERIPH_TPR) Transmit Counter Register */ +#define PERIPH_TPR_TXPTR(value) ((PERIPH_TPR_TXPTR_Msk & ((value) << PERIPH_TPR_TXPTR_Pos))) +/* -------- PERIPH_TCR : (PDC Offset: 0xC) Transmit Counter Register -------- */ +#define PERIPH_TCR_TXCTR_Pos 0 +#define PERIPH_TCR_TXCTR_Msk (0xffffu << PERIPH_TCR_TXCTR_Pos) /**< \brief (PERIPH_TCR) Transmit Counter Register */ +#define PERIPH_TCR_TXCTR(value) ((PERIPH_TCR_TXCTR_Msk & ((value) << PERIPH_TCR_TXCTR_Pos))) +/* -------- PERIPH_RNPR : (PDC Offset: 0x10) Receive Next Pointer Register -------- */ +#define PERIPH_RNPR_RXNPTR_Pos 0 +#define PERIPH_RNPR_RXNPTR_Msk (0xffffffffu << PERIPH_RNPR_RXNPTR_Pos) /**< \brief (PERIPH_RNPR) Receive Next Pointer */ +#define PERIPH_RNPR_RXNPTR(value) ((PERIPH_RNPR_RXNPTR_Msk & ((value) << PERIPH_RNPR_RXNPTR_Pos))) +/* -------- PERIPH_RNCR : (PDC Offset: 0x14) Receive Next Counter Register -------- */ +#define PERIPH_RNCR_RXNCTR_Pos 0 +#define PERIPH_RNCR_RXNCTR_Msk (0xffffu << PERIPH_RNCR_RXNCTR_Pos) /**< \brief (PERIPH_RNCR) Receive Next Counter */ +#define PERIPH_RNCR_RXNCTR(value) ((PERIPH_RNCR_RXNCTR_Msk & ((value) << PERIPH_RNCR_RXNCTR_Pos))) +/* -------- PERIPH_TNPR : (PDC Offset: 0x18) Transmit Next Pointer Register -------- */ +#define PERIPH_TNPR_TXNPTR_Pos 0 +#define PERIPH_TNPR_TXNPTR_Msk (0xffffffffu << PERIPH_TNPR_TXNPTR_Pos) /**< \brief (PERIPH_TNPR) Transmit Next Pointer */ +#define PERIPH_TNPR_TXNPTR(value) ((PERIPH_TNPR_TXNPTR_Msk & ((value) << PERIPH_TNPR_TXNPTR_Pos))) +/* -------- PERIPH_TNCR : (PDC Offset: 0x1C) Transmit Next Counter Register -------- */ +#define PERIPH_TNCR_TXNCTR_Pos 0 +#define PERIPH_TNCR_TXNCTR_Msk (0xffffu << PERIPH_TNCR_TXNCTR_Pos) /**< \brief (PERIPH_TNCR) Transmit Counter Next */ +#define PERIPH_TNCR_TXNCTR(value) ((PERIPH_TNCR_TXNCTR_Msk & ((value) << PERIPH_TNCR_TXNCTR_Pos))) +/* -------- PERIPH_PTCR : (PDC Offset: 0x20) Transfer Control Register -------- */ +#define PERIPH_PTCR_RXTEN (0x1u << 0) /**< \brief (PERIPH_PTCR) Receiver Transfer Enable */ +#define PERIPH_PTCR_RXTDIS (0x1u << 1) /**< \brief (PERIPH_PTCR) Receiver Transfer Disable */ +#define PERIPH_PTCR_TXTEN (0x1u << 8) /**< \brief (PERIPH_PTCR) Transmitter Transfer Enable */ +#define PERIPH_PTCR_TXTDIS (0x1u << 9) /**< \brief (PERIPH_PTCR) Transmitter Transfer Disable */ +/* -------- PERIPH_PTSR : (PDC Offset: 0x24) Transfer Status Register -------- */ +#define PERIPH_PTSR_RXTEN (0x1u << 0) /**< \brief (PERIPH_PTSR) Receiver Transfer Enable */ +#define PERIPH_PTSR_TXTEN (0x1u << 8) /**< \brief (PERIPH_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3S8_PDC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_pio.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_pio.h new file mode 100644 index 000000000..a519a3c51 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_pio.h @@ -0,0 +1,1662 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_PIO_COMPONENT_ +#define _SAM3S8_PIO_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Parallel Input/Output Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_PIO Parallel Input/Output Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Pio hardware registers */ +typedef struct { + WoReg PIO_PER; /**< \brief (Pio Offset: 0x0000) PIO Enable Register */ + WoReg PIO_PDR; /**< \brief (Pio Offset: 0x0004) PIO Disable Register */ + RoReg PIO_PSR; /**< \brief (Pio Offset: 0x0008) PIO Status Register */ + RoReg Reserved1[1]; + WoReg PIO_OER; /**< \brief (Pio Offset: 0x0010) Output Enable Register */ + WoReg PIO_ODR; /**< \brief (Pio Offset: 0x0014) Output Disable Register */ + RoReg PIO_OSR; /**< \brief (Pio Offset: 0x0018) Output Status Register */ + RoReg Reserved2[1]; + WoReg PIO_IFER; /**< \brief (Pio Offset: 0x0020) Glitch Input Filter Enable Register */ + WoReg PIO_IFDR; /**< \brief (Pio Offset: 0x0024) Glitch Input Filter Disable Register */ + RoReg PIO_IFSR; /**< \brief (Pio Offset: 0x0028) Glitch Input Filter Status Register */ + RoReg Reserved3[1]; + WoReg PIO_SODR; /**< \brief (Pio Offset: 0x0030) Set Output Data Register */ + WoReg PIO_CODR; /**< \brief (Pio Offset: 0x0034) Clear Output Data Register */ + RwReg PIO_ODSR; /**< \brief (Pio Offset: 0x0038) Output Data Status Register */ + RoReg PIO_PDSR; /**< \brief (Pio Offset: 0x003C) Pin Data Status Register */ + WoReg PIO_IER; /**< \brief (Pio Offset: 0x0040) Interrupt Enable Register */ + WoReg PIO_IDR; /**< \brief (Pio Offset: 0x0044) Interrupt Disable Register */ + RoReg PIO_IMR; /**< \brief (Pio Offset: 0x0048) Interrupt Mask Register */ + RoReg PIO_ISR; /**< \brief (Pio Offset: 0x004C) Interrupt Status Register */ + WoReg PIO_MDER; /**< \brief (Pio Offset: 0x0050) Multi-driver Enable Register */ + WoReg PIO_MDDR; /**< \brief (Pio Offset: 0x0054) Multi-driver Disable Register */ + RoReg PIO_MDSR; /**< \brief (Pio Offset: 0x0058) Multi-driver Status Register */ + RoReg Reserved4[1]; + WoReg PIO_PUDR; /**< \brief (Pio Offset: 0x0060) Pull-up Disable Register */ + WoReg PIO_PUER; /**< \brief (Pio Offset: 0x0064) Pull-up Enable Register */ + RoReg PIO_PUSR; /**< \brief (Pio Offset: 0x0068) Pad Pull-up Status Register */ + RoReg Reserved5[1]; + RwReg PIO_ABCDSR[2]; /**< \brief (Pio Offset: 0x0070) Peripheral Select Register */ + RoReg Reserved6[2]; + WoReg PIO_IFSCDR; /**< \brief (Pio Offset: 0x0080) Input Filter Slow Clock Disable Register */ + WoReg PIO_IFSCER; /**< \brief (Pio Offset: 0x0084) Input Filter Slow Clock Enable Register */ + RoReg PIO_IFSCSR; /**< \brief (Pio Offset: 0x0088) Input Filter Slow Clock Status Register */ + RwReg PIO_SCDR; /**< \brief (Pio Offset: 0x008C) Slow Clock Divider Debouncing Register */ + WoReg PIO_PPDDR; /**< \brief (Pio Offset: 0x0090) Pad Pull-down Disable Register */ + WoReg PIO_PPDER; /**< \brief (Pio Offset: 0x0094) Pad Pull-down Enable Register */ + RoReg PIO_PPDSR; /**< \brief (Pio Offset: 0x0098) Pad Pull-down Status Register */ + RoReg Reserved7[1]; + WoReg PIO_OWER; /**< \brief (Pio Offset: 0x00A0) Output Write Enable */ + WoReg PIO_OWDR; /**< \brief (Pio Offset: 0x00A4) Output Write Disable */ + RoReg PIO_OWSR; /**< \brief (Pio Offset: 0x00A8) Output Write Status Register */ + RoReg Reserved8[1]; + WoReg PIO_AIMER; /**< \brief (Pio Offset: 0x00B0) Additional Interrupt Modes Enable Register */ + WoReg PIO_AIMDR; /**< \brief (Pio Offset: 0x00B4) Additional Interrupt Modes Disables Register */ + RoReg PIO_AIMMR; /**< \brief (Pio Offset: 0x00B8) Additional Interrupt Modes Mask Register */ + RoReg Reserved9[1]; + WoReg PIO_ESR; /**< \brief (Pio Offset: 0x00C0) Edge Select Register */ + WoReg PIO_LSR; /**< \brief (Pio Offset: 0x00C4) Level Select Register */ + RoReg PIO_ELSR; /**< \brief (Pio Offset: 0x00C8) Edge/Level Status Register */ + RoReg Reserved10[1]; + WoReg PIO_FELLSR; /**< \brief (Pio Offset: 0x00D0) Falling Edge/Low Level Select Register */ + WoReg PIO_REHLSR; /**< \brief (Pio Offset: 0x00D4) Rising Edge/ High Level Select Register */ + RoReg PIO_FRLHSR; /**< \brief (Pio Offset: 0x00D8) Fall/Rise - Low/High Status Register */ + RoReg Reserved11[1]; + RoReg PIO_LOCKSR; /**< \brief (Pio Offset: 0x00E0) Lock Status */ + RwReg PIO_WPMR; /**< \brief (Pio Offset: 0x00E4) Write Protect Mode Register */ + RoReg PIO_WPSR; /**< \brief (Pio Offset: 0x00E8) Write Protect Status Register */ + RoReg Reserved12[5]; + RwReg PIO_SCHMITT; /**< \brief (Pio Offset: 0x0100) Schmitt Trigger Register */ + RoReg Reserved13[19]; + RwReg PIO_PCMR; /**< \brief (Pio Offset: 0x150) Parallel Capture Mode Register */ + WoReg PIO_PCIER; /**< \brief (Pio Offset: 0x154) Parallel Capture Interrupt Enable Register */ + WoReg PIO_PCIDR; /**< \brief (Pio Offset: 0x158) Parallel Capture Interrupt Disable Register */ + RoReg PIO_PCIMR; /**< \brief (Pio Offset: 0x15C) Parallel Capture Interrupt Mask Register */ + RoReg PIO_PCISR; /**< \brief (Pio Offset: 0x160) Parallel Capture Interrupt Status Register */ + RoReg PIO_PCRHR; /**< \brief (Pio Offset: 0x164) Parallel Capture Reception Holding Register */ + RwReg PIO_RPR; /**< \brief (Pio Offset: 0x168) Receive Pointer Register */ + RwReg PIO_RCR; /**< \brief (Pio Offset: 0x16C) Receive Counter Register */ + RwReg PIO_TPR; /**< \brief (Pio Offset: 0x170) Transmit Pointer Register */ + RwReg PIO_TCR; /**< \brief (Pio Offset: 0x174) Transmit Counter Register */ + RwReg PIO_RNPR; /**< \brief (Pio Offset: 0x178) Receive Next Pointer Register */ + RwReg PIO_RNCR; /**< \brief (Pio Offset: 0x17C) Receive Next Counter Register */ + RwReg PIO_TNPR; /**< \brief (Pio Offset: 0x180) Transmit Next Pointer Register */ + RwReg PIO_TNCR; /**< \brief (Pio Offset: 0x184) Transmit Next Counter Register */ + WoReg PIO_PTCR; /**< \brief (Pio Offset: 0x188) Transfer Control Register */ + RoReg PIO_PTSR; /**< \brief (Pio Offset: 0x18C) Transfer Status Register */ +} Pio; +#endif /* __ASSEMBLY__ */ +/* -------- PIO_PER : (PIO Offset: 0x0000) PIO Enable Register -------- */ +#define PIO_PER_P0 (0x1u << 0) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P1 (0x1u << 1) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P2 (0x1u << 2) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P3 (0x1u << 3) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P4 (0x1u << 4) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P5 (0x1u << 5) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P6 (0x1u << 6) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P7 (0x1u << 7) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P8 (0x1u << 8) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P9 (0x1u << 9) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P10 (0x1u << 10) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P11 (0x1u << 11) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P12 (0x1u << 12) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P13 (0x1u << 13) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P14 (0x1u << 14) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P15 (0x1u << 15) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P16 (0x1u << 16) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P17 (0x1u << 17) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P18 (0x1u << 18) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P19 (0x1u << 19) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P20 (0x1u << 20) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P21 (0x1u << 21) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P22 (0x1u << 22) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P23 (0x1u << 23) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P24 (0x1u << 24) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P25 (0x1u << 25) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P26 (0x1u << 26) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P27 (0x1u << 27) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P28 (0x1u << 28) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P29 (0x1u << 29) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P30 (0x1u << 30) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P31 (0x1u << 31) /**< \brief (PIO_PER) PIO Enable */ +/* -------- PIO_PDR : (PIO Offset: 0x0004) PIO Disable Register -------- */ +#define PIO_PDR_P0 (0x1u << 0) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P1 (0x1u << 1) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P2 (0x1u << 2) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P3 (0x1u << 3) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P4 (0x1u << 4) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P5 (0x1u << 5) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P6 (0x1u << 6) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P7 (0x1u << 7) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P8 (0x1u << 8) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P9 (0x1u << 9) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P10 (0x1u << 10) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P11 (0x1u << 11) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P12 (0x1u << 12) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P13 (0x1u << 13) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P14 (0x1u << 14) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P15 (0x1u << 15) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P16 (0x1u << 16) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P17 (0x1u << 17) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P18 (0x1u << 18) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P19 (0x1u << 19) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P20 (0x1u << 20) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P21 (0x1u << 21) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P22 (0x1u << 22) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P23 (0x1u << 23) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P24 (0x1u << 24) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P25 (0x1u << 25) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P26 (0x1u << 26) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P27 (0x1u << 27) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P28 (0x1u << 28) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P29 (0x1u << 29) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P30 (0x1u << 30) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P31 (0x1u << 31) /**< \brief (PIO_PDR) PIO Disable */ +/* -------- PIO_PSR : (PIO Offset: 0x0008) PIO Status Register -------- */ +#define PIO_PSR_P0 (0x1u << 0) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P1 (0x1u << 1) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P2 (0x1u << 2) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P3 (0x1u << 3) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P4 (0x1u << 4) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P5 (0x1u << 5) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P6 (0x1u << 6) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P7 (0x1u << 7) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P8 (0x1u << 8) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P9 (0x1u << 9) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P10 (0x1u << 10) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P11 (0x1u << 11) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P12 (0x1u << 12) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P13 (0x1u << 13) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P14 (0x1u << 14) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P15 (0x1u << 15) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P16 (0x1u << 16) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P17 (0x1u << 17) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P18 (0x1u << 18) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P19 (0x1u << 19) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P20 (0x1u << 20) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P21 (0x1u << 21) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P22 (0x1u << 22) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P23 (0x1u << 23) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P24 (0x1u << 24) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P25 (0x1u << 25) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P26 (0x1u << 26) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P27 (0x1u << 27) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P28 (0x1u << 28) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P29 (0x1u << 29) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P30 (0x1u << 30) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P31 (0x1u << 31) /**< \brief (PIO_PSR) PIO Status */ +/* -------- PIO_OER : (PIO Offset: 0x0010) Output Enable Register -------- */ +#define PIO_OER_P0 (0x1u << 0) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P1 (0x1u << 1) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P2 (0x1u << 2) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P3 (0x1u << 3) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P4 (0x1u << 4) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P5 (0x1u << 5) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P6 (0x1u << 6) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P7 (0x1u << 7) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P8 (0x1u << 8) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P9 (0x1u << 9) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P10 (0x1u << 10) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P11 (0x1u << 11) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P12 (0x1u << 12) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P13 (0x1u << 13) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P14 (0x1u << 14) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P15 (0x1u << 15) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P16 (0x1u << 16) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P17 (0x1u << 17) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P18 (0x1u << 18) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P19 (0x1u << 19) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P20 (0x1u << 20) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P21 (0x1u << 21) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P22 (0x1u << 22) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P23 (0x1u << 23) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P24 (0x1u << 24) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P25 (0x1u << 25) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P26 (0x1u << 26) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P27 (0x1u << 27) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P28 (0x1u << 28) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P29 (0x1u << 29) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P30 (0x1u << 30) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P31 (0x1u << 31) /**< \brief (PIO_OER) Output Enable */ +/* -------- PIO_ODR : (PIO Offset: 0x0014) Output Disable Register -------- */ +#define PIO_ODR_P0 (0x1u << 0) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P1 (0x1u << 1) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P2 (0x1u << 2) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P3 (0x1u << 3) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P4 (0x1u << 4) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P5 (0x1u << 5) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P6 (0x1u << 6) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P7 (0x1u << 7) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P8 (0x1u << 8) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P9 (0x1u << 9) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P10 (0x1u << 10) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P11 (0x1u << 11) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P12 (0x1u << 12) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P13 (0x1u << 13) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P14 (0x1u << 14) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P15 (0x1u << 15) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P16 (0x1u << 16) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P17 (0x1u << 17) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P18 (0x1u << 18) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P19 (0x1u << 19) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P20 (0x1u << 20) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P21 (0x1u << 21) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P22 (0x1u << 22) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P23 (0x1u << 23) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P24 (0x1u << 24) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P25 (0x1u << 25) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P26 (0x1u << 26) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P27 (0x1u << 27) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P28 (0x1u << 28) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P29 (0x1u << 29) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P30 (0x1u << 30) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P31 (0x1u << 31) /**< \brief (PIO_ODR) Output Disable */ +/* -------- PIO_OSR : (PIO Offset: 0x0018) Output Status Register -------- */ +#define PIO_OSR_P0 (0x1u << 0) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P1 (0x1u << 1) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P2 (0x1u << 2) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P3 (0x1u << 3) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P4 (0x1u << 4) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P5 (0x1u << 5) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P6 (0x1u << 6) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P7 (0x1u << 7) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P8 (0x1u << 8) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P9 (0x1u << 9) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P10 (0x1u << 10) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P11 (0x1u << 11) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P12 (0x1u << 12) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P13 (0x1u << 13) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P14 (0x1u << 14) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P15 (0x1u << 15) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P16 (0x1u << 16) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P17 (0x1u << 17) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P18 (0x1u << 18) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P19 (0x1u << 19) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P20 (0x1u << 20) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P21 (0x1u << 21) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P22 (0x1u << 22) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P23 (0x1u << 23) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P24 (0x1u << 24) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P25 (0x1u << 25) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P26 (0x1u << 26) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P27 (0x1u << 27) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P28 (0x1u << 28) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P29 (0x1u << 29) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P30 (0x1u << 30) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P31 (0x1u << 31) /**< \brief (PIO_OSR) Output Status */ +/* -------- PIO_IFER : (PIO Offset: 0x0020) Glitch Input Filter Enable Register -------- */ +#define PIO_IFER_P0 (0x1u << 0) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P1 (0x1u << 1) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P2 (0x1u << 2) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P3 (0x1u << 3) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P4 (0x1u << 4) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P5 (0x1u << 5) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P6 (0x1u << 6) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P7 (0x1u << 7) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P8 (0x1u << 8) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P9 (0x1u << 9) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P10 (0x1u << 10) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P11 (0x1u << 11) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P12 (0x1u << 12) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P13 (0x1u << 13) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P14 (0x1u << 14) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P15 (0x1u << 15) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P16 (0x1u << 16) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P17 (0x1u << 17) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P18 (0x1u << 18) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P19 (0x1u << 19) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P20 (0x1u << 20) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P21 (0x1u << 21) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P22 (0x1u << 22) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P23 (0x1u << 23) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P24 (0x1u << 24) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P25 (0x1u << 25) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P26 (0x1u << 26) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P27 (0x1u << 27) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P28 (0x1u << 28) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P29 (0x1u << 29) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P30 (0x1u << 30) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P31 (0x1u << 31) /**< \brief (PIO_IFER) Input Filter Enable */ +/* -------- PIO_IFDR : (PIO Offset: 0x0024) Glitch Input Filter Disable Register -------- */ +#define PIO_IFDR_P0 (0x1u << 0) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P1 (0x1u << 1) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P2 (0x1u << 2) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P3 (0x1u << 3) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P4 (0x1u << 4) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P5 (0x1u << 5) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P6 (0x1u << 6) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P7 (0x1u << 7) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P8 (0x1u << 8) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P9 (0x1u << 9) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P10 (0x1u << 10) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P11 (0x1u << 11) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P12 (0x1u << 12) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P13 (0x1u << 13) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P14 (0x1u << 14) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P15 (0x1u << 15) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P16 (0x1u << 16) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P17 (0x1u << 17) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P18 (0x1u << 18) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P19 (0x1u << 19) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P20 (0x1u << 20) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P21 (0x1u << 21) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P22 (0x1u << 22) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P23 (0x1u << 23) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P24 (0x1u << 24) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P25 (0x1u << 25) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P26 (0x1u << 26) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P27 (0x1u << 27) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P28 (0x1u << 28) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P29 (0x1u << 29) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P30 (0x1u << 30) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P31 (0x1u << 31) /**< \brief (PIO_IFDR) Input Filter Disable */ +/* -------- PIO_IFSR : (PIO Offset: 0x0028) Glitch Input Filter Status Register -------- */ +#define PIO_IFSR_P0 (0x1u << 0) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P1 (0x1u << 1) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P2 (0x1u << 2) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P3 (0x1u << 3) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P4 (0x1u << 4) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P5 (0x1u << 5) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P6 (0x1u << 6) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P7 (0x1u << 7) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P8 (0x1u << 8) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P9 (0x1u << 9) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P10 (0x1u << 10) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P11 (0x1u << 11) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P12 (0x1u << 12) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P13 (0x1u << 13) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P14 (0x1u << 14) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P15 (0x1u << 15) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P16 (0x1u << 16) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P17 (0x1u << 17) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P18 (0x1u << 18) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P19 (0x1u << 19) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P20 (0x1u << 20) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P21 (0x1u << 21) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P22 (0x1u << 22) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P23 (0x1u << 23) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P24 (0x1u << 24) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P25 (0x1u << 25) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P26 (0x1u << 26) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P27 (0x1u << 27) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P28 (0x1u << 28) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P29 (0x1u << 29) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P30 (0x1u << 30) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P31 (0x1u << 31) /**< \brief (PIO_IFSR) Input Filer Status */ +/* -------- PIO_SODR : (PIO Offset: 0x0030) Set Output Data Register -------- */ +#define PIO_SODR_P0 (0x1u << 0) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P1 (0x1u << 1) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P2 (0x1u << 2) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P3 (0x1u << 3) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P4 (0x1u << 4) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P5 (0x1u << 5) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P6 (0x1u << 6) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P7 (0x1u << 7) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P8 (0x1u << 8) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P9 (0x1u << 9) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P10 (0x1u << 10) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P11 (0x1u << 11) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P12 (0x1u << 12) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P13 (0x1u << 13) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P14 (0x1u << 14) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P15 (0x1u << 15) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P16 (0x1u << 16) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P17 (0x1u << 17) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P18 (0x1u << 18) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P19 (0x1u << 19) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P20 (0x1u << 20) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P21 (0x1u << 21) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P22 (0x1u << 22) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P23 (0x1u << 23) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P24 (0x1u << 24) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P25 (0x1u << 25) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P26 (0x1u << 26) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P27 (0x1u << 27) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P28 (0x1u << 28) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P29 (0x1u << 29) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P30 (0x1u << 30) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P31 (0x1u << 31) /**< \brief (PIO_SODR) Set Output Data */ +/* -------- PIO_CODR : (PIO Offset: 0x0034) Clear Output Data Register -------- */ +#define PIO_CODR_P0 (0x1u << 0) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P1 (0x1u << 1) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P2 (0x1u << 2) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P3 (0x1u << 3) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P4 (0x1u << 4) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P5 (0x1u << 5) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P6 (0x1u << 6) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P7 (0x1u << 7) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P8 (0x1u << 8) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P9 (0x1u << 9) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P10 (0x1u << 10) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P11 (0x1u << 11) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P12 (0x1u << 12) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P13 (0x1u << 13) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P14 (0x1u << 14) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P15 (0x1u << 15) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P16 (0x1u << 16) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P17 (0x1u << 17) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P18 (0x1u << 18) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P19 (0x1u << 19) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P20 (0x1u << 20) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P21 (0x1u << 21) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P22 (0x1u << 22) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P23 (0x1u << 23) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P24 (0x1u << 24) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P25 (0x1u << 25) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P26 (0x1u << 26) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P27 (0x1u << 27) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P28 (0x1u << 28) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P29 (0x1u << 29) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P30 (0x1u << 30) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P31 (0x1u << 31) /**< \brief (PIO_CODR) Clear Output Data */ +/* -------- PIO_ODSR : (PIO Offset: 0x0038) Output Data Status Register -------- */ +#define PIO_ODSR_P0 (0x1u << 0) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P1 (0x1u << 1) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P2 (0x1u << 2) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P3 (0x1u << 3) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P4 (0x1u << 4) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P5 (0x1u << 5) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P6 (0x1u << 6) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P7 (0x1u << 7) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P8 (0x1u << 8) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P9 (0x1u << 9) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P10 (0x1u << 10) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P11 (0x1u << 11) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P12 (0x1u << 12) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P13 (0x1u << 13) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P14 (0x1u << 14) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P15 (0x1u << 15) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P16 (0x1u << 16) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P17 (0x1u << 17) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P18 (0x1u << 18) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P19 (0x1u << 19) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P20 (0x1u << 20) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P21 (0x1u << 21) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P22 (0x1u << 22) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P23 (0x1u << 23) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P24 (0x1u << 24) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P25 (0x1u << 25) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P26 (0x1u << 26) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P27 (0x1u << 27) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P28 (0x1u << 28) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P29 (0x1u << 29) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P30 (0x1u << 30) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P31 (0x1u << 31) /**< \brief (PIO_ODSR) Output Data Status */ +/* -------- PIO_PDSR : (PIO Offset: 0x003C) Pin Data Status Register -------- */ +#define PIO_PDSR_P0 (0x1u << 0) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P1 (0x1u << 1) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P2 (0x1u << 2) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P3 (0x1u << 3) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P4 (0x1u << 4) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P5 (0x1u << 5) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P6 (0x1u << 6) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P7 (0x1u << 7) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P8 (0x1u << 8) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P9 (0x1u << 9) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P10 (0x1u << 10) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P11 (0x1u << 11) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P12 (0x1u << 12) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P13 (0x1u << 13) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P14 (0x1u << 14) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P15 (0x1u << 15) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P16 (0x1u << 16) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P17 (0x1u << 17) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P18 (0x1u << 18) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P19 (0x1u << 19) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P20 (0x1u << 20) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P21 (0x1u << 21) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P22 (0x1u << 22) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P23 (0x1u << 23) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P24 (0x1u << 24) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P25 (0x1u << 25) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P26 (0x1u << 26) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P27 (0x1u << 27) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P28 (0x1u << 28) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P29 (0x1u << 29) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P30 (0x1u << 30) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P31 (0x1u << 31) /**< \brief (PIO_PDSR) Output Data Status */ +/* -------- PIO_IER : (PIO Offset: 0x0040) Interrupt Enable Register -------- */ +#define PIO_IER_P0 (0x1u << 0) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P1 (0x1u << 1) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P2 (0x1u << 2) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P3 (0x1u << 3) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P4 (0x1u << 4) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P5 (0x1u << 5) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P6 (0x1u << 6) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P7 (0x1u << 7) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P8 (0x1u << 8) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P9 (0x1u << 9) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P10 (0x1u << 10) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P11 (0x1u << 11) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P12 (0x1u << 12) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P13 (0x1u << 13) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P14 (0x1u << 14) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P15 (0x1u << 15) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P16 (0x1u << 16) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P17 (0x1u << 17) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P18 (0x1u << 18) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P19 (0x1u << 19) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P20 (0x1u << 20) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P21 (0x1u << 21) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P22 (0x1u << 22) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P23 (0x1u << 23) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P24 (0x1u << 24) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P25 (0x1u << 25) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P26 (0x1u << 26) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P27 (0x1u << 27) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P28 (0x1u << 28) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P29 (0x1u << 29) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P30 (0x1u << 30) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P31 (0x1u << 31) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +/* -------- PIO_IDR : (PIO Offset: 0x0044) Interrupt Disable Register -------- */ +#define PIO_IDR_P0 (0x1u << 0) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P1 (0x1u << 1) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P2 (0x1u << 2) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P3 (0x1u << 3) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P4 (0x1u << 4) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P5 (0x1u << 5) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P6 (0x1u << 6) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P7 (0x1u << 7) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P8 (0x1u << 8) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P9 (0x1u << 9) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P10 (0x1u << 10) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P11 (0x1u << 11) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P12 (0x1u << 12) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P13 (0x1u << 13) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P14 (0x1u << 14) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P15 (0x1u << 15) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P16 (0x1u << 16) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P17 (0x1u << 17) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P18 (0x1u << 18) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P19 (0x1u << 19) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P20 (0x1u << 20) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P21 (0x1u << 21) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P22 (0x1u << 22) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P23 (0x1u << 23) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P24 (0x1u << 24) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P25 (0x1u << 25) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P26 (0x1u << 26) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P27 (0x1u << 27) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P28 (0x1u << 28) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P29 (0x1u << 29) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P30 (0x1u << 30) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P31 (0x1u << 31) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +/* -------- PIO_IMR : (PIO Offset: 0x0048) Interrupt Mask Register -------- */ +#define PIO_IMR_P0 (0x1u << 0) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P1 (0x1u << 1) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P2 (0x1u << 2) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P3 (0x1u << 3) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P4 (0x1u << 4) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P5 (0x1u << 5) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P6 (0x1u << 6) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P7 (0x1u << 7) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P8 (0x1u << 8) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P9 (0x1u << 9) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P10 (0x1u << 10) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P11 (0x1u << 11) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P12 (0x1u << 12) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P13 (0x1u << 13) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P14 (0x1u << 14) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P15 (0x1u << 15) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P16 (0x1u << 16) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P17 (0x1u << 17) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P18 (0x1u << 18) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P19 (0x1u << 19) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P20 (0x1u << 20) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P21 (0x1u << 21) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P22 (0x1u << 22) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P23 (0x1u << 23) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P24 (0x1u << 24) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P25 (0x1u << 25) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P26 (0x1u << 26) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P27 (0x1u << 27) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P28 (0x1u << 28) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P29 (0x1u << 29) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P30 (0x1u << 30) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P31 (0x1u << 31) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +/* -------- PIO_ISR : (PIO Offset: 0x004C) Interrupt Status Register -------- */ +#define PIO_ISR_P0 (0x1u << 0) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P1 (0x1u << 1) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P2 (0x1u << 2) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P3 (0x1u << 3) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P4 (0x1u << 4) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P5 (0x1u << 5) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P6 (0x1u << 6) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P7 (0x1u << 7) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P8 (0x1u << 8) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P9 (0x1u << 9) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P10 (0x1u << 10) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P11 (0x1u << 11) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P12 (0x1u << 12) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P13 (0x1u << 13) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P14 (0x1u << 14) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P15 (0x1u << 15) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P16 (0x1u << 16) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P17 (0x1u << 17) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P18 (0x1u << 18) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P19 (0x1u << 19) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P20 (0x1u << 20) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P21 (0x1u << 21) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P22 (0x1u << 22) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P23 (0x1u << 23) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P24 (0x1u << 24) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P25 (0x1u << 25) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P26 (0x1u << 26) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P27 (0x1u << 27) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P28 (0x1u << 28) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P29 (0x1u << 29) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P30 (0x1u << 30) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P31 (0x1u << 31) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +/* -------- PIO_MDER : (PIO Offset: 0x0050) Multi-driver Enable Register -------- */ +#define PIO_MDER_P0 (0x1u << 0) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P1 (0x1u << 1) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P2 (0x1u << 2) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P3 (0x1u << 3) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P4 (0x1u << 4) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P5 (0x1u << 5) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P6 (0x1u << 6) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P7 (0x1u << 7) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P8 (0x1u << 8) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P9 (0x1u << 9) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P10 (0x1u << 10) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P11 (0x1u << 11) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P12 (0x1u << 12) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P13 (0x1u << 13) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P14 (0x1u << 14) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P15 (0x1u << 15) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P16 (0x1u << 16) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P17 (0x1u << 17) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P18 (0x1u << 18) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P19 (0x1u << 19) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P20 (0x1u << 20) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P21 (0x1u << 21) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P22 (0x1u << 22) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P23 (0x1u << 23) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P24 (0x1u << 24) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P25 (0x1u << 25) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P26 (0x1u << 26) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P27 (0x1u << 27) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P28 (0x1u << 28) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P29 (0x1u << 29) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P30 (0x1u << 30) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P31 (0x1u << 31) /**< \brief (PIO_MDER) Multi Drive Enable. */ +/* -------- PIO_MDDR : (PIO Offset: 0x0054) Multi-driver Disable Register -------- */ +#define PIO_MDDR_P0 (0x1u << 0) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P1 (0x1u << 1) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P2 (0x1u << 2) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P3 (0x1u << 3) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P4 (0x1u << 4) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P5 (0x1u << 5) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P6 (0x1u << 6) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P7 (0x1u << 7) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P8 (0x1u << 8) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P9 (0x1u << 9) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P10 (0x1u << 10) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P11 (0x1u << 11) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P12 (0x1u << 12) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P13 (0x1u << 13) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P14 (0x1u << 14) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P15 (0x1u << 15) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P16 (0x1u << 16) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P17 (0x1u << 17) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P18 (0x1u << 18) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P19 (0x1u << 19) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P20 (0x1u << 20) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P21 (0x1u << 21) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P22 (0x1u << 22) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P23 (0x1u << 23) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P24 (0x1u << 24) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P25 (0x1u << 25) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P26 (0x1u << 26) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P27 (0x1u << 27) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P28 (0x1u << 28) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P29 (0x1u << 29) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P30 (0x1u << 30) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P31 (0x1u << 31) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +/* -------- PIO_MDSR : (PIO Offset: 0x0058) Multi-driver Status Register -------- */ +#define PIO_MDSR_P0 (0x1u << 0) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P1 (0x1u << 1) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P2 (0x1u << 2) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P3 (0x1u << 3) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P4 (0x1u << 4) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P5 (0x1u << 5) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P6 (0x1u << 6) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P7 (0x1u << 7) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P8 (0x1u << 8) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P9 (0x1u << 9) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P10 (0x1u << 10) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P11 (0x1u << 11) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P12 (0x1u << 12) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P13 (0x1u << 13) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P14 (0x1u << 14) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P15 (0x1u << 15) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P16 (0x1u << 16) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P17 (0x1u << 17) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P18 (0x1u << 18) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P19 (0x1u << 19) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P20 (0x1u << 20) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P21 (0x1u << 21) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P22 (0x1u << 22) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P23 (0x1u << 23) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P24 (0x1u << 24) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P25 (0x1u << 25) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P26 (0x1u << 26) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P27 (0x1u << 27) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P28 (0x1u << 28) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P29 (0x1u << 29) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P30 (0x1u << 30) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P31 (0x1u << 31) /**< \brief (PIO_MDSR) Multi Drive Status. */ +/* -------- PIO_PUDR : (PIO Offset: 0x0060) Pull-up Disable Register -------- */ +#define PIO_PUDR_P0 (0x1u << 0) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P1 (0x1u << 1) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P2 (0x1u << 2) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P3 (0x1u << 3) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P4 (0x1u << 4) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P5 (0x1u << 5) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P6 (0x1u << 6) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P7 (0x1u << 7) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P8 (0x1u << 8) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P9 (0x1u << 9) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P10 (0x1u << 10) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P11 (0x1u << 11) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P12 (0x1u << 12) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P13 (0x1u << 13) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P14 (0x1u << 14) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P15 (0x1u << 15) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P16 (0x1u << 16) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P17 (0x1u << 17) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P18 (0x1u << 18) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P19 (0x1u << 19) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P20 (0x1u << 20) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P21 (0x1u << 21) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P22 (0x1u << 22) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P23 (0x1u << 23) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P24 (0x1u << 24) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P25 (0x1u << 25) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P26 (0x1u << 26) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P27 (0x1u << 27) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P28 (0x1u << 28) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P29 (0x1u << 29) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P30 (0x1u << 30) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P31 (0x1u << 31) /**< \brief (PIO_PUDR) Pull Up Disable. */ +/* -------- PIO_PUER : (PIO Offset: 0x0064) Pull-up Enable Register -------- */ +#define PIO_PUER_P0 (0x1u << 0) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P1 (0x1u << 1) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P2 (0x1u << 2) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P3 (0x1u << 3) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P4 (0x1u << 4) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P5 (0x1u << 5) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P6 (0x1u << 6) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P7 (0x1u << 7) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P8 (0x1u << 8) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P9 (0x1u << 9) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P10 (0x1u << 10) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P11 (0x1u << 11) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P12 (0x1u << 12) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P13 (0x1u << 13) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P14 (0x1u << 14) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P15 (0x1u << 15) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P16 (0x1u << 16) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P17 (0x1u << 17) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P18 (0x1u << 18) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P19 (0x1u << 19) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P20 (0x1u << 20) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P21 (0x1u << 21) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P22 (0x1u << 22) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P23 (0x1u << 23) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P24 (0x1u << 24) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P25 (0x1u << 25) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P26 (0x1u << 26) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P27 (0x1u << 27) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P28 (0x1u << 28) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P29 (0x1u << 29) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P30 (0x1u << 30) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P31 (0x1u << 31) /**< \brief (PIO_PUER) Pull Up Enable. */ +/* -------- PIO_PUSR : (PIO Offset: 0x0068) Pad Pull-up Status Register -------- */ +#define PIO_PUSR_P0 (0x1u << 0) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P1 (0x1u << 1) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P2 (0x1u << 2) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P3 (0x1u << 3) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P4 (0x1u << 4) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P5 (0x1u << 5) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P6 (0x1u << 6) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P7 (0x1u << 7) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P8 (0x1u << 8) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P9 (0x1u << 9) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P10 (0x1u << 10) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P11 (0x1u << 11) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P12 (0x1u << 12) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P13 (0x1u << 13) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P14 (0x1u << 14) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P15 (0x1u << 15) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P16 (0x1u << 16) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P17 (0x1u << 17) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P18 (0x1u << 18) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P19 (0x1u << 19) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P20 (0x1u << 20) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P21 (0x1u << 21) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P22 (0x1u << 22) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P23 (0x1u << 23) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P24 (0x1u << 24) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P25 (0x1u << 25) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P26 (0x1u << 26) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P27 (0x1u << 27) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P28 (0x1u << 28) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P29 (0x1u << 29) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P30 (0x1u << 30) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P31 (0x1u << 31) /**< \brief (PIO_PUSR) Pull Up Status. */ +/* -------- PIO_ABCDSR[2] : (PIO Offset: 0x0070) Peripheral Select Register -------- */ +#define PIO_ABCDSR_P0 (0x1u << 0) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P1 (0x1u << 1) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P2 (0x1u << 2) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P3 (0x1u << 3) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P4 (0x1u << 4) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P5 (0x1u << 5) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P6 (0x1u << 6) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P7 (0x1u << 7) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P8 (0x1u << 8) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P9 (0x1u << 9) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P10 (0x1u << 10) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P11 (0x1u << 11) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P12 (0x1u << 12) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P13 (0x1u << 13) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P14 (0x1u << 14) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P15 (0x1u << 15) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P16 (0x1u << 16) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P17 (0x1u << 17) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P18 (0x1u << 18) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P19 (0x1u << 19) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P20 (0x1u << 20) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P21 (0x1u << 21) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P22 (0x1u << 22) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P23 (0x1u << 23) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P24 (0x1u << 24) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P25 (0x1u << 25) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P26 (0x1u << 26) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P27 (0x1u << 27) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P28 (0x1u << 28) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P29 (0x1u << 29) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P30 (0x1u << 30) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +#define PIO_ABCDSR_P31 (0x1u << 31) /**< \brief (PIO_ABCDSR[2]) Peripheral Select. */ +/* -------- PIO_IFSCDR : (PIO Offset: 0x0080) Input Filter Slow Clock Disable Register -------- */ +#define PIO_IFSCDR_P0 (0x1u << 0) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P1 (0x1u << 1) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P2 (0x1u << 2) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P3 (0x1u << 3) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P4 (0x1u << 4) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P5 (0x1u << 5) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P6 (0x1u << 6) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P7 (0x1u << 7) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P8 (0x1u << 8) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P9 (0x1u << 9) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P10 (0x1u << 10) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P11 (0x1u << 11) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P12 (0x1u << 12) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P13 (0x1u << 13) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P14 (0x1u << 14) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P15 (0x1u << 15) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P16 (0x1u << 16) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P17 (0x1u << 17) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P18 (0x1u << 18) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P19 (0x1u << 19) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P20 (0x1u << 20) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P21 (0x1u << 21) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P22 (0x1u << 22) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P23 (0x1u << 23) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P24 (0x1u << 24) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P25 (0x1u << 25) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P26 (0x1u << 26) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P27 (0x1u << 27) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P28 (0x1u << 28) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P29 (0x1u << 29) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P30 (0x1u << 30) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +#define PIO_IFSCDR_P31 (0x1u << 31) /**< \brief (PIO_IFSCDR) PIO Clock Glitch Filtering Select. */ +/* -------- PIO_IFSCER : (PIO Offset: 0x0084) Input Filter Slow Clock Enable Register -------- */ +#define PIO_IFSCER_P0 (0x1u << 0) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P1 (0x1u << 1) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P2 (0x1u << 2) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P3 (0x1u << 3) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P4 (0x1u << 4) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P5 (0x1u << 5) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P6 (0x1u << 6) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P7 (0x1u << 7) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P8 (0x1u << 8) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P9 (0x1u << 9) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P10 (0x1u << 10) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P11 (0x1u << 11) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P12 (0x1u << 12) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P13 (0x1u << 13) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P14 (0x1u << 14) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P15 (0x1u << 15) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P16 (0x1u << 16) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P17 (0x1u << 17) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P18 (0x1u << 18) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P19 (0x1u << 19) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P20 (0x1u << 20) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P21 (0x1u << 21) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P22 (0x1u << 22) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P23 (0x1u << 23) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P24 (0x1u << 24) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P25 (0x1u << 25) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P26 (0x1u << 26) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P27 (0x1u << 27) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P28 (0x1u << 28) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P29 (0x1u << 29) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P30 (0x1u << 30) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +#define PIO_IFSCER_P31 (0x1u << 31) /**< \brief (PIO_IFSCER) Debouncing Filtering Select. */ +/* -------- PIO_IFSCSR : (PIO Offset: 0x0088) Input Filter Slow Clock Status Register -------- */ +#define PIO_IFSCSR_P0 (0x1u << 0) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P1 (0x1u << 1) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P2 (0x1u << 2) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P3 (0x1u << 3) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P4 (0x1u << 4) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P5 (0x1u << 5) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P6 (0x1u << 6) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P7 (0x1u << 7) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P8 (0x1u << 8) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P9 (0x1u << 9) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P10 (0x1u << 10) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P11 (0x1u << 11) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P12 (0x1u << 12) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P13 (0x1u << 13) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P14 (0x1u << 14) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P15 (0x1u << 15) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P16 (0x1u << 16) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P17 (0x1u << 17) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P18 (0x1u << 18) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P19 (0x1u << 19) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P20 (0x1u << 20) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P21 (0x1u << 21) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P22 (0x1u << 22) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P23 (0x1u << 23) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P24 (0x1u << 24) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P25 (0x1u << 25) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P26 (0x1u << 26) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P27 (0x1u << 27) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P28 (0x1u << 28) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P29 (0x1u << 29) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P30 (0x1u << 30) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P31 (0x1u << 31) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +/* -------- PIO_SCDR : (PIO Offset: 0x008C) Slow Clock Divider Debouncing Register -------- */ +#define PIO_SCDR_DIV_Pos 0 +#define PIO_SCDR_DIV_Msk (0x3fffu << PIO_SCDR_DIV_Pos) /**< \brief (PIO_SCDR) */ +#define PIO_SCDR_DIV(value) ((PIO_SCDR_DIV_Msk & ((value) << PIO_SCDR_DIV_Pos))) +/* -------- PIO_PPDDR : (PIO Offset: 0x0090) Pad Pull-down Disable Register -------- */ +#define PIO_PPDDR_P0 (0x1u << 0) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P1 (0x1u << 1) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P2 (0x1u << 2) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P3 (0x1u << 3) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P4 (0x1u << 4) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P5 (0x1u << 5) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P6 (0x1u << 6) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P7 (0x1u << 7) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P8 (0x1u << 8) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P9 (0x1u << 9) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P10 (0x1u << 10) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P11 (0x1u << 11) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P12 (0x1u << 12) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P13 (0x1u << 13) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P14 (0x1u << 14) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P15 (0x1u << 15) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P16 (0x1u << 16) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P17 (0x1u << 17) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P18 (0x1u << 18) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P19 (0x1u << 19) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P20 (0x1u << 20) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P21 (0x1u << 21) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P22 (0x1u << 22) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P23 (0x1u << 23) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P24 (0x1u << 24) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P25 (0x1u << 25) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P26 (0x1u << 26) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P27 (0x1u << 27) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P28 (0x1u << 28) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P29 (0x1u << 29) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P30 (0x1u << 30) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +#define PIO_PPDDR_P31 (0x1u << 31) /**< \brief (PIO_PPDDR) Pull Down Disable. */ +/* -------- PIO_PPDER : (PIO Offset: 0x0094) Pad Pull-down Enable Register -------- */ +#define PIO_PPDER_P0 (0x1u << 0) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P1 (0x1u << 1) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P2 (0x1u << 2) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P3 (0x1u << 3) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P4 (0x1u << 4) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P5 (0x1u << 5) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P6 (0x1u << 6) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P7 (0x1u << 7) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P8 (0x1u << 8) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P9 (0x1u << 9) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P10 (0x1u << 10) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P11 (0x1u << 11) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P12 (0x1u << 12) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P13 (0x1u << 13) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P14 (0x1u << 14) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P15 (0x1u << 15) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P16 (0x1u << 16) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P17 (0x1u << 17) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P18 (0x1u << 18) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P19 (0x1u << 19) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P20 (0x1u << 20) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P21 (0x1u << 21) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P22 (0x1u << 22) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P23 (0x1u << 23) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P24 (0x1u << 24) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P25 (0x1u << 25) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P26 (0x1u << 26) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P27 (0x1u << 27) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P28 (0x1u << 28) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P29 (0x1u << 29) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P30 (0x1u << 30) /**< \brief (PIO_PPDER) Pull Down Enable. */ +#define PIO_PPDER_P31 (0x1u << 31) /**< \brief (PIO_PPDER) Pull Down Enable. */ +/* -------- PIO_PPDSR : (PIO Offset: 0x0098) Pad Pull-down Status Register -------- */ +#define PIO_PPDSR_P0 (0x1u << 0) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P1 (0x1u << 1) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P2 (0x1u << 2) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P3 (0x1u << 3) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P4 (0x1u << 4) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P5 (0x1u << 5) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P6 (0x1u << 6) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P7 (0x1u << 7) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P8 (0x1u << 8) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P9 (0x1u << 9) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P10 (0x1u << 10) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P11 (0x1u << 11) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P12 (0x1u << 12) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P13 (0x1u << 13) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P14 (0x1u << 14) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P15 (0x1u << 15) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P16 (0x1u << 16) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P17 (0x1u << 17) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P18 (0x1u << 18) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P19 (0x1u << 19) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P20 (0x1u << 20) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P21 (0x1u << 21) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P22 (0x1u << 22) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P23 (0x1u << 23) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P24 (0x1u << 24) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P25 (0x1u << 25) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P26 (0x1u << 26) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P27 (0x1u << 27) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P28 (0x1u << 28) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P29 (0x1u << 29) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P30 (0x1u << 30) /**< \brief (PIO_PPDSR) Pull Down Status. */ +#define PIO_PPDSR_P31 (0x1u << 31) /**< \brief (PIO_PPDSR) Pull Down Status. */ +/* -------- PIO_OWER : (PIO Offset: 0x00A0) Output Write Enable -------- */ +#define PIO_OWER_P0 (0x1u << 0) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P1 (0x1u << 1) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P2 (0x1u << 2) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P3 (0x1u << 3) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P4 (0x1u << 4) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P5 (0x1u << 5) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P6 (0x1u << 6) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P7 (0x1u << 7) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P8 (0x1u << 8) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P9 (0x1u << 9) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P10 (0x1u << 10) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P11 (0x1u << 11) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P12 (0x1u << 12) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P13 (0x1u << 13) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P14 (0x1u << 14) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P15 (0x1u << 15) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P16 (0x1u << 16) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P17 (0x1u << 17) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P18 (0x1u << 18) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P19 (0x1u << 19) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P20 (0x1u << 20) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P21 (0x1u << 21) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P22 (0x1u << 22) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P23 (0x1u << 23) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P24 (0x1u << 24) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P25 (0x1u << 25) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P26 (0x1u << 26) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P27 (0x1u << 27) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P28 (0x1u << 28) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P29 (0x1u << 29) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P30 (0x1u << 30) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P31 (0x1u << 31) /**< \brief (PIO_OWER) Output Write Enable. */ +/* -------- PIO_OWDR : (PIO Offset: 0x00A4) Output Write Disable -------- */ +#define PIO_OWDR_P0 (0x1u << 0) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P1 (0x1u << 1) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P2 (0x1u << 2) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P3 (0x1u << 3) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P4 (0x1u << 4) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P5 (0x1u << 5) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P6 (0x1u << 6) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P7 (0x1u << 7) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P8 (0x1u << 8) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P9 (0x1u << 9) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P10 (0x1u << 10) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P11 (0x1u << 11) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P12 (0x1u << 12) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P13 (0x1u << 13) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P14 (0x1u << 14) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P15 (0x1u << 15) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P16 (0x1u << 16) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P17 (0x1u << 17) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P18 (0x1u << 18) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P19 (0x1u << 19) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P20 (0x1u << 20) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P21 (0x1u << 21) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P22 (0x1u << 22) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P23 (0x1u << 23) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P24 (0x1u << 24) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P25 (0x1u << 25) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P26 (0x1u << 26) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P27 (0x1u << 27) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P28 (0x1u << 28) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P29 (0x1u << 29) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P30 (0x1u << 30) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P31 (0x1u << 31) /**< \brief (PIO_OWDR) Output Write Disable. */ +/* -------- PIO_OWSR : (PIO Offset: 0x00A8) Output Write Status Register -------- */ +#define PIO_OWSR_P0 (0x1u << 0) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P1 (0x1u << 1) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P2 (0x1u << 2) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P3 (0x1u << 3) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P4 (0x1u << 4) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P5 (0x1u << 5) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P6 (0x1u << 6) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P7 (0x1u << 7) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P8 (0x1u << 8) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P9 (0x1u << 9) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P10 (0x1u << 10) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P11 (0x1u << 11) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P12 (0x1u << 12) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P13 (0x1u << 13) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P14 (0x1u << 14) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P15 (0x1u << 15) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P16 (0x1u << 16) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P17 (0x1u << 17) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P18 (0x1u << 18) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P19 (0x1u << 19) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P20 (0x1u << 20) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P21 (0x1u << 21) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P22 (0x1u << 22) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P23 (0x1u << 23) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P24 (0x1u << 24) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P25 (0x1u << 25) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P26 (0x1u << 26) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P27 (0x1u << 27) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P28 (0x1u << 28) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P29 (0x1u << 29) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P30 (0x1u << 30) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P31 (0x1u << 31) /**< \brief (PIO_OWSR) Output Write Status. */ +/* -------- PIO_AIMER : (PIO Offset: 0x00B0) Additional Interrupt Modes Enable Register -------- */ +#define PIO_AIMER_P0 (0x1u << 0) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P1 (0x1u << 1) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P2 (0x1u << 2) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P3 (0x1u << 3) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P4 (0x1u << 4) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P5 (0x1u << 5) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P6 (0x1u << 6) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P7 (0x1u << 7) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P8 (0x1u << 8) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P9 (0x1u << 9) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P10 (0x1u << 10) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P11 (0x1u << 11) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P12 (0x1u << 12) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P13 (0x1u << 13) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P14 (0x1u << 14) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P15 (0x1u << 15) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P16 (0x1u << 16) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P17 (0x1u << 17) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P18 (0x1u << 18) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P19 (0x1u << 19) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P20 (0x1u << 20) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P21 (0x1u << 21) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P22 (0x1u << 22) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P23 (0x1u << 23) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P24 (0x1u << 24) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P25 (0x1u << 25) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P26 (0x1u << 26) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P27 (0x1u << 27) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P28 (0x1u << 28) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P29 (0x1u << 29) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P30 (0x1u << 30) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P31 (0x1u << 31) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +/* -------- PIO_AIMDR : (PIO Offset: 0x00B4) Additional Interrupt Modes Disables Register -------- */ +#define PIO_AIMDR_P0 (0x1u << 0) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P1 (0x1u << 1) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P2 (0x1u << 2) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P3 (0x1u << 3) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P4 (0x1u << 4) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P5 (0x1u << 5) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P6 (0x1u << 6) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P7 (0x1u << 7) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P8 (0x1u << 8) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P9 (0x1u << 9) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P10 (0x1u << 10) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P11 (0x1u << 11) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P12 (0x1u << 12) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P13 (0x1u << 13) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P14 (0x1u << 14) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P15 (0x1u << 15) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P16 (0x1u << 16) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P17 (0x1u << 17) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P18 (0x1u << 18) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P19 (0x1u << 19) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P20 (0x1u << 20) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P21 (0x1u << 21) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P22 (0x1u << 22) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P23 (0x1u << 23) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P24 (0x1u << 24) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P25 (0x1u << 25) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P26 (0x1u << 26) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P27 (0x1u << 27) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P28 (0x1u << 28) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P29 (0x1u << 29) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P30 (0x1u << 30) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P31 (0x1u << 31) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +/* -------- PIO_AIMMR : (PIO Offset: 0x00B8) Additional Interrupt Modes Mask Register -------- */ +#define PIO_AIMMR_P0 (0x1u << 0) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P1 (0x1u << 1) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P2 (0x1u << 2) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P3 (0x1u << 3) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P4 (0x1u << 4) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P5 (0x1u << 5) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P6 (0x1u << 6) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P7 (0x1u << 7) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P8 (0x1u << 8) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P9 (0x1u << 9) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P10 (0x1u << 10) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P11 (0x1u << 11) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P12 (0x1u << 12) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P13 (0x1u << 13) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P14 (0x1u << 14) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P15 (0x1u << 15) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P16 (0x1u << 16) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P17 (0x1u << 17) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P18 (0x1u << 18) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P19 (0x1u << 19) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P20 (0x1u << 20) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P21 (0x1u << 21) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P22 (0x1u << 22) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P23 (0x1u << 23) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P24 (0x1u << 24) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P25 (0x1u << 25) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P26 (0x1u << 26) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P27 (0x1u << 27) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P28 (0x1u << 28) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P29 (0x1u << 29) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P30 (0x1u << 30) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P31 (0x1u << 31) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +/* -------- PIO_ESR : (PIO Offset: 0x00C0) Edge Select Register -------- */ +#define PIO_ESR_P0 (0x1u << 0) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P1 (0x1u << 1) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P2 (0x1u << 2) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P3 (0x1u << 3) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P4 (0x1u << 4) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P5 (0x1u << 5) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P6 (0x1u << 6) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P7 (0x1u << 7) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P8 (0x1u << 8) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P9 (0x1u << 9) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P10 (0x1u << 10) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P11 (0x1u << 11) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P12 (0x1u << 12) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P13 (0x1u << 13) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P14 (0x1u << 14) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P15 (0x1u << 15) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P16 (0x1u << 16) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P17 (0x1u << 17) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P18 (0x1u << 18) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P19 (0x1u << 19) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P20 (0x1u << 20) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P21 (0x1u << 21) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P22 (0x1u << 22) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P23 (0x1u << 23) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P24 (0x1u << 24) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P25 (0x1u << 25) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P26 (0x1u << 26) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P27 (0x1u << 27) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P28 (0x1u << 28) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P29 (0x1u << 29) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P30 (0x1u << 30) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P31 (0x1u << 31) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +/* -------- PIO_LSR : (PIO Offset: 0x00C4) Level Select Register -------- */ +#define PIO_LSR_P0 (0x1u << 0) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P1 (0x1u << 1) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P2 (0x1u << 2) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P3 (0x1u << 3) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P4 (0x1u << 4) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P5 (0x1u << 5) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P6 (0x1u << 6) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P7 (0x1u << 7) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P8 (0x1u << 8) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P9 (0x1u << 9) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P10 (0x1u << 10) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P11 (0x1u << 11) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P12 (0x1u << 12) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P13 (0x1u << 13) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P14 (0x1u << 14) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P15 (0x1u << 15) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P16 (0x1u << 16) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P17 (0x1u << 17) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P18 (0x1u << 18) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P19 (0x1u << 19) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P20 (0x1u << 20) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P21 (0x1u << 21) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P22 (0x1u << 22) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P23 (0x1u << 23) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P24 (0x1u << 24) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P25 (0x1u << 25) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P26 (0x1u << 26) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P27 (0x1u << 27) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P28 (0x1u << 28) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P29 (0x1u << 29) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P30 (0x1u << 30) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P31 (0x1u << 31) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +/* -------- PIO_ELSR : (PIO Offset: 0x00C8) Edge/Level Status Register -------- */ +#define PIO_ELSR_P0 (0x1u << 0) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P1 (0x1u << 1) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P2 (0x1u << 2) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P3 (0x1u << 3) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P4 (0x1u << 4) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P5 (0x1u << 5) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P6 (0x1u << 6) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P7 (0x1u << 7) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P8 (0x1u << 8) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P9 (0x1u << 9) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P10 (0x1u << 10) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P11 (0x1u << 11) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P12 (0x1u << 12) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P13 (0x1u << 13) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P14 (0x1u << 14) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P15 (0x1u << 15) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P16 (0x1u << 16) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P17 (0x1u << 17) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P18 (0x1u << 18) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P19 (0x1u << 19) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P20 (0x1u << 20) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P21 (0x1u << 21) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P22 (0x1u << 22) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P23 (0x1u << 23) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P24 (0x1u << 24) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P25 (0x1u << 25) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P26 (0x1u << 26) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P27 (0x1u << 27) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P28 (0x1u << 28) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P29 (0x1u << 29) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P30 (0x1u << 30) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P31 (0x1u << 31) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +/* -------- PIO_FELLSR : (PIO Offset: 0x00D0) Falling Edge/Low Level Select Register -------- */ +#define PIO_FELLSR_P0 (0x1u << 0) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P1 (0x1u << 1) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P2 (0x1u << 2) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P3 (0x1u << 3) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P4 (0x1u << 4) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P5 (0x1u << 5) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P6 (0x1u << 6) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P7 (0x1u << 7) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P8 (0x1u << 8) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P9 (0x1u << 9) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P10 (0x1u << 10) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P11 (0x1u << 11) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P12 (0x1u << 12) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P13 (0x1u << 13) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P14 (0x1u << 14) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P15 (0x1u << 15) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P16 (0x1u << 16) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P17 (0x1u << 17) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P18 (0x1u << 18) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P19 (0x1u << 19) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P20 (0x1u << 20) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P21 (0x1u << 21) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P22 (0x1u << 22) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P23 (0x1u << 23) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P24 (0x1u << 24) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P25 (0x1u << 25) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P26 (0x1u << 26) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P27 (0x1u << 27) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P28 (0x1u << 28) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P29 (0x1u << 29) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P30 (0x1u << 30) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P31 (0x1u << 31) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +/* -------- PIO_REHLSR : (PIO Offset: 0x00D4) Rising Edge/ High Level Select Register -------- */ +#define PIO_REHLSR_P0 (0x1u << 0) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P1 (0x1u << 1) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P2 (0x1u << 2) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P3 (0x1u << 3) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P4 (0x1u << 4) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P5 (0x1u << 5) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P6 (0x1u << 6) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P7 (0x1u << 7) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P8 (0x1u << 8) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P9 (0x1u << 9) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P10 (0x1u << 10) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P11 (0x1u << 11) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P12 (0x1u << 12) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P13 (0x1u << 13) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P14 (0x1u << 14) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P15 (0x1u << 15) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P16 (0x1u << 16) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P17 (0x1u << 17) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P18 (0x1u << 18) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P19 (0x1u << 19) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P20 (0x1u << 20) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P21 (0x1u << 21) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P22 (0x1u << 22) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P23 (0x1u << 23) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P24 (0x1u << 24) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P25 (0x1u << 25) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P26 (0x1u << 26) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P27 (0x1u << 27) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P28 (0x1u << 28) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P29 (0x1u << 29) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P30 (0x1u << 30) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P31 (0x1u << 31) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +/* -------- PIO_FRLHSR : (PIO Offset: 0x00D8) Fall/Rise - Low/High Status Register -------- */ +#define PIO_FRLHSR_P0 (0x1u << 0) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P1 (0x1u << 1) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P2 (0x1u << 2) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P3 (0x1u << 3) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P4 (0x1u << 4) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P5 (0x1u << 5) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P6 (0x1u << 6) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P7 (0x1u << 7) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P8 (0x1u << 8) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P9 (0x1u << 9) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P10 (0x1u << 10) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P11 (0x1u << 11) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P12 (0x1u << 12) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P13 (0x1u << 13) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P14 (0x1u << 14) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P15 (0x1u << 15) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P16 (0x1u << 16) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P17 (0x1u << 17) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P18 (0x1u << 18) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P19 (0x1u << 19) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P20 (0x1u << 20) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P21 (0x1u << 21) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P22 (0x1u << 22) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P23 (0x1u << 23) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P24 (0x1u << 24) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P25 (0x1u << 25) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P26 (0x1u << 26) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P27 (0x1u << 27) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P28 (0x1u << 28) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P29 (0x1u << 29) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P30 (0x1u << 30) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P31 (0x1u << 31) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +/* -------- PIO_LOCKSR : (PIO Offset: 0x00E0) Lock Status -------- */ +#define PIO_LOCKSR_P0 (0x1u << 0) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P1 (0x1u << 1) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P2 (0x1u << 2) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P3 (0x1u << 3) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P4 (0x1u << 4) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P5 (0x1u << 5) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P6 (0x1u << 6) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P7 (0x1u << 7) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P8 (0x1u << 8) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P9 (0x1u << 9) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P10 (0x1u << 10) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P11 (0x1u << 11) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P12 (0x1u << 12) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P13 (0x1u << 13) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P14 (0x1u << 14) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P15 (0x1u << 15) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P16 (0x1u << 16) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P17 (0x1u << 17) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P18 (0x1u << 18) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P19 (0x1u << 19) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P20 (0x1u << 20) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P21 (0x1u << 21) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P22 (0x1u << 22) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P23 (0x1u << 23) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P24 (0x1u << 24) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P25 (0x1u << 25) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P26 (0x1u << 26) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P27 (0x1u << 27) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P28 (0x1u << 28) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P29 (0x1u << 29) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P30 (0x1u << 30) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P31 (0x1u << 31) /**< \brief (PIO_LOCKSR) Lock Status. */ +/* -------- PIO_WPMR : (PIO Offset: 0x00E4) Write Protect Mode Register -------- */ +#define PIO_WPMR_WPEN (0x1u << 0) /**< \brief (PIO_WPMR) Write Protect Enable */ +#define PIO_WPMR_WPKEY_Pos 8 +#define PIO_WPMR_WPKEY_Msk (0xffffffu << PIO_WPMR_WPKEY_Pos) /**< \brief (PIO_WPMR) Write Protect KEY */ +#define PIO_WPMR_WPKEY(value) ((PIO_WPMR_WPKEY_Msk & ((value) << PIO_WPMR_WPKEY_Pos))) +/* -------- PIO_WPSR : (PIO Offset: 0x00E8) Write Protect Status Register -------- */ +#define PIO_WPSR_WPVS (0x1u << 0) /**< \brief (PIO_WPSR) Write Protect Violation Status */ +#define PIO_WPSR_WPVSRC_Pos 8 +#define PIO_WPSR_WPVSRC_Msk (0xffffu << PIO_WPSR_WPVSRC_Pos) /**< \brief (PIO_WPSR) Write Protect Violation Source */ +/* -------- PIO_SCHMITT : (PIO Offset: 0x0100) Schmitt Trigger Register -------- */ +#define PIO_SCHMITT_SCHMITT0 (0x1u << 0) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT1 (0x1u << 1) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT2 (0x1u << 2) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT3 (0x1u << 3) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT4 (0x1u << 4) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT5 (0x1u << 5) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT6 (0x1u << 6) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT7 (0x1u << 7) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT8 (0x1u << 8) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT9 (0x1u << 9) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT10 (0x1u << 10) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT11 (0x1u << 11) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT12 (0x1u << 12) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT13 (0x1u << 13) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT14 (0x1u << 14) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT15 (0x1u << 15) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT16 (0x1u << 16) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT17 (0x1u << 17) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT18 (0x1u << 18) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT19 (0x1u << 19) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT20 (0x1u << 20) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT21 (0x1u << 21) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT22 (0x1u << 22) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT23 (0x1u << 23) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT24 (0x1u << 24) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT25 (0x1u << 25) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT26 (0x1u << 26) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT27 (0x1u << 27) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT28 (0x1u << 28) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT29 (0x1u << 29) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT30 (0x1u << 30) /**< \brief (PIO_SCHMITT) */ +#define PIO_SCHMITT_SCHMITT31 (0x1u << 31) /**< \brief (PIO_SCHMITT) */ +/* -------- PIO_PCMR : (PIO Offset: 0x150) Parallel Capture Mode Register -------- */ +#define PIO_PCMR_PCEN (0x1u << 0) /**< \brief (PIO_PCMR) Parallel Capture Mode Enable */ +#define PIO_PCMR_DSIZE_Pos 4 +#define PIO_PCMR_DSIZE_Msk (0x3u << PIO_PCMR_DSIZE_Pos) /**< \brief (PIO_PCMR) Parallel Capture Mode Data Size */ +#define PIO_PCMR_DSIZE_BYTE (0x0u << 4) /**< \brief (PIO_PCMR) The reception data in the PIO_PCRHR register is a BYTE (8-bit) */ +#define PIO_PCMR_DSIZE_HALFWORD (0x1u << 4) /**< \brief (PIO_PCMR) The reception data in the PIO_PCRHR register is a HALF-WORD (16-bit) */ +#define PIO_PCMR_DSIZE_WORD (0x2u << 4) /**< \brief (PIO_PCMR) The reception data in the PIO_PCRHR register is a WORD (32-bit) */ +#define PIO_PCMR_ALWYS (0x1u << 9) /**< \brief (PIO_PCMR) Parallel Capture Mode Always Sampling */ +#define PIO_PCMR_HALFS (0x1u << 10) /**< \brief (PIO_PCMR) Parallel Capture Mode Half Sampling */ +#define PIO_PCMR_FRSTS (0x1u << 11) /**< \brief (PIO_PCMR) Parallel Capture Mode First Sample */ +/* -------- PIO_PCIER : (PIO Offset: 0x154) Parallel Capture Interrupt Enable Register -------- */ +#define PIO_PCIER_DRDY (0x1u << 0) /**< \brief (PIO_PCIER) Parallel Capture Mode Data Ready Interrupt Enable */ +#define PIO_PCIER_OVRE (0x1u << 1) /**< \brief (PIO_PCIER) Parallel Capture Mode Overrun Error Interrupt Enable */ +#define PIO_PCIER_ENDRX (0x1u << 2) /**< \brief (PIO_PCIER) End of Reception Transfer Interrupt Enable */ +#define PIO_PCIER_RXBUFF (0x1u << 3) /**< \brief (PIO_PCIER) Reception Buffer Full Interrupt Enable */ +/* -------- PIO_PCIDR : (PIO Offset: 0x158) Parallel Capture Interrupt Disable Register -------- */ +#define PIO_PCIDR_DRDY (0x1u << 0) /**< \brief (PIO_PCIDR) Parallel Capture Mode Data Ready Interrupt Disable */ +#define PIO_PCIDR_OVRE (0x1u << 1) /**< \brief (PIO_PCIDR) Parallel Capture Mode Overrun Error Interrupt Disable */ +#define PIO_PCIDR_ENDRX (0x1u << 2) /**< \brief (PIO_PCIDR) End of Reception Transfer Interrupt Disable */ +#define PIO_PCIDR_RXBUFF (0x1u << 3) /**< \brief (PIO_PCIDR) Reception Buffer Full Interrupt Disable */ +/* -------- PIO_PCIMR : (PIO Offset: 0x15C) Parallel Capture Interrupt Mask Register -------- */ +#define PIO_PCIMR_DRDY (0x1u << 0) /**< \brief (PIO_PCIMR) Parallel Capture Mode Data Ready Interrupt Mask */ +#define PIO_PCIMR_OVRE (0x1u << 1) /**< \brief (PIO_PCIMR) Parallel Capture Mode Overrun Error Interrupt Mask */ +#define PIO_PCIMR_ENDRX (0x1u << 2) /**< \brief (PIO_PCIMR) End of Reception Transfer Interrupt Mask */ +#define PIO_PCIMR_RXBUFF (0x1u << 3) /**< \brief (PIO_PCIMR) Reception Buffer Full Interrupt Mask */ +/* -------- PIO_PCISR : (PIO Offset: 0x160) Parallel Capture Interrupt Status Register -------- */ +#define PIO_PCISR_DRDY (0x1u << 0) /**< \brief (PIO_PCISR) Parallel Capture Mode Data Ready */ +#define PIO_PCISR_OVRE (0x1u << 1) /**< \brief (PIO_PCISR) Parallel Capture Mode Overrun Error. */ +#define PIO_PCISR_ENDRX (0x1u << 2) /**< \brief (PIO_PCISR) End of Reception Transfer. */ +#define PIO_PCISR_RXBUFF (0x1u << 3) /**< \brief (PIO_PCISR) Reception Buffer Full */ +/* -------- PIO_PCRHR : (PIO Offset: 0x164) Parallel Capture Reception Holding Register -------- */ +#define PIO_PCRHR_RDATA_Pos 0 +#define PIO_PCRHR_RDATA_Msk (0xffffffffu << PIO_PCRHR_RDATA_Pos) /**< \brief (PIO_PCRHR) Parallel Capture Mode Reception Data. */ +/* -------- PIO_RPR : (PIO Offset: 0x168) Receive Pointer Register -------- */ +#define PIO_RPR_RXPTR_Pos 0 +#define PIO_RPR_RXPTR_Msk (0xffffffffu << PIO_RPR_RXPTR_Pos) /**< \brief (PIO_RPR) Receive Pointer Register */ +#define PIO_RPR_RXPTR(value) ((PIO_RPR_RXPTR_Msk & ((value) << PIO_RPR_RXPTR_Pos))) +/* -------- PIO_RCR : (PIO Offset: 0x16C) Receive Counter Register -------- */ +#define PIO_RCR_RXCTR_Pos 0 +#define PIO_RCR_RXCTR_Msk (0xffffu << PIO_RCR_RXCTR_Pos) /**< \brief (PIO_RCR) Receive Counter Register */ +#define PIO_RCR_RXCTR(value) ((PIO_RCR_RXCTR_Msk & ((value) << PIO_RCR_RXCTR_Pos))) +/* -------- PIO_TPR : (PIO Offset: 0x170) Transmit Pointer Register -------- */ +#define PIO_TPR_TXPTR_Pos 0 +#define PIO_TPR_TXPTR_Msk (0xffffffffu << PIO_TPR_TXPTR_Pos) /**< \brief (PIO_TPR) Transmit Counter Register */ +#define PIO_TPR_TXPTR(value) ((PIO_TPR_TXPTR_Msk & ((value) << PIO_TPR_TXPTR_Pos))) +/* -------- PIO_TCR : (PIO Offset: 0x174) Transmit Counter Register -------- */ +#define PIO_TCR_TXCTR_Pos 0 +#define PIO_TCR_TXCTR_Msk (0xffffu << PIO_TCR_TXCTR_Pos) /**< \brief (PIO_TCR) Transmit Counter Register */ +#define PIO_TCR_TXCTR(value) ((PIO_TCR_TXCTR_Msk & ((value) << PIO_TCR_TXCTR_Pos))) +/* -------- PIO_RNPR : (PIO Offset: 0x178) Receive Next Pointer Register -------- */ +#define PIO_RNPR_RXNPTR_Pos 0 +#define PIO_RNPR_RXNPTR_Msk (0xffffffffu << PIO_RNPR_RXNPTR_Pos) /**< \brief (PIO_RNPR) Receive Next Pointer */ +#define PIO_RNPR_RXNPTR(value) ((PIO_RNPR_RXNPTR_Msk & ((value) << PIO_RNPR_RXNPTR_Pos))) +/* -------- PIO_RNCR : (PIO Offset: 0x17C) Receive Next Counter Register -------- */ +#define PIO_RNCR_RXNCTR_Pos 0 +#define PIO_RNCR_RXNCTR_Msk (0xffffu << PIO_RNCR_RXNCTR_Pos) /**< \brief (PIO_RNCR) Receive Next Counter */ +#define PIO_RNCR_RXNCTR(value) ((PIO_RNCR_RXNCTR_Msk & ((value) << PIO_RNCR_RXNCTR_Pos))) +/* -------- PIO_TNPR : (PIO Offset: 0x180) Transmit Next Pointer Register -------- */ +#define PIO_TNPR_TXNPTR_Pos 0 +#define PIO_TNPR_TXNPTR_Msk (0xffffffffu << PIO_TNPR_TXNPTR_Pos) /**< \brief (PIO_TNPR) Transmit Next Pointer */ +#define PIO_TNPR_TXNPTR(value) ((PIO_TNPR_TXNPTR_Msk & ((value) << PIO_TNPR_TXNPTR_Pos))) +/* -------- PIO_TNCR : (PIO Offset: 0x184) Transmit Next Counter Register -------- */ +#define PIO_TNCR_TXNCTR_Pos 0 +#define PIO_TNCR_TXNCTR_Msk (0xffffu << PIO_TNCR_TXNCTR_Pos) /**< \brief (PIO_TNCR) Transmit Counter Next */ +#define PIO_TNCR_TXNCTR(value) ((PIO_TNCR_TXNCTR_Msk & ((value) << PIO_TNCR_TXNCTR_Pos))) +/* -------- PIO_PTCR : (PIO Offset: 0x188) Transfer Control Register -------- */ +#define PIO_PTCR_RXTEN (0x1u << 0) /**< \brief (PIO_PTCR) Receiver Transfer Enable */ +#define PIO_PTCR_RXTDIS (0x1u << 1) /**< \brief (PIO_PTCR) Receiver Transfer Disable */ +#define PIO_PTCR_TXTEN (0x1u << 8) /**< \brief (PIO_PTCR) Transmitter Transfer Enable */ +#define PIO_PTCR_TXTDIS (0x1u << 9) /**< \brief (PIO_PTCR) Transmitter Transfer Disable */ +/* -------- PIO_PTSR : (PIO Offset: 0x18C) Transfer Status Register -------- */ +#define PIO_PTSR_RXTEN (0x1u << 0) /**< \brief (PIO_PTSR) Receiver Transfer Enable */ +#define PIO_PTSR_TXTEN (0x1u << 8) /**< \brief (PIO_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3S8_PIO_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_pmc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_pmc.h new file mode 100644 index 000000000..47cca67d0 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_pmc.h @@ -0,0 +1,394 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_PMC_COMPONENT_ +#define _SAM3S8_PMC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Power Management Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_PMC Power Management Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Pmc hardware registers */ +typedef struct { + WoReg PMC_SCER; /**< \brief (Pmc Offset: 0x0000) System Clock Enable Register */ + WoReg PMC_SCDR; /**< \brief (Pmc Offset: 0x0004) System Clock Disable Register */ + RoReg PMC_SCSR; /**< \brief (Pmc Offset: 0x0008) System Clock Status Register */ + RoReg Reserved1[1]; + WoReg PMC_PCER0; /**< \brief (Pmc Offset: 0x0010) Peripheral Clock Enable Register 0 */ + WoReg PMC_PCDR0; /**< \brief (Pmc Offset: 0x0014) Peripheral Clock Disable Register 0 */ + RoReg PMC_PCSR0; /**< \brief (Pmc Offset: 0x0018) Peripheral Clock Status Register 0 */ + RoReg Reserved2[1]; + RwReg CKGR_MOR; /**< \brief (Pmc Offset: 0x0020) Main Oscillator Register */ + RwReg CKGR_MCFR; /**< \brief (Pmc Offset: 0x0024) Main Clock Frequency Register */ + RwReg CKGR_PLLAR; /**< \brief (Pmc Offset: 0x0028) PLLA Register */ + RwReg CKGR_PLLBR; /**< \brief (Pmc Offset: 0x002C) PLLB Register */ + RwReg PMC_MCKR; /**< \brief (Pmc Offset: 0x0030) Master Clock Register */ + RoReg Reserved3[1]; + RwReg PMC_USB; /**< \brief (Pmc Offset: 0x0038) USB Clock Register */ + RoReg Reserved4[1]; + RwReg PMC_PCK[3]; /**< \brief (Pmc Offset: 0x0040) Programmable Clock 0 Register */ + RoReg Reserved5[5]; + WoReg PMC_IER; /**< \brief (Pmc Offset: 0x0060) Interrupt Enable Register */ + WoReg PMC_IDR; /**< \brief (Pmc Offset: 0x0064) Interrupt Disable Register */ + RoReg PMC_SR; /**< \brief (Pmc Offset: 0x0068) Status Register */ + RoReg PMC_IMR; /**< \brief (Pmc Offset: 0x006C) Interrupt Mask Register */ + RwReg PMC_FSMR; /**< \brief (Pmc Offset: 0x0070) Fast Startup Mode Register */ + RwReg PMC_FSPR; /**< \brief (Pmc Offset: 0x0074) Fast Startup Polarity Register */ + WoReg PMC_FOCR; /**< \brief (Pmc Offset: 0x0078) Fault Output Clear Register */ + RoReg Reserved6[26]; + RwReg PMC_WPMR; /**< \brief (Pmc Offset: 0x00E4) Write Protect Mode Register */ + RoReg PMC_WPSR; /**< \brief (Pmc Offset: 0x00E8) Write Protect Status Register */ + RoReg Reserved7[5]; + WoReg PMC_PCER1; /**< \brief (Pmc Offset: 0x0100) Peripheral Clock Enable Register 1 */ + WoReg PMC_PCDR1; /**< \brief (Pmc Offset: 0x0104) Peripheral Clock Disable Register 1 */ + RoReg PMC_PCSR1; /**< \brief (Pmc Offset: 0x0108) Peripheral Clock Status Register 1 */ + RoReg Reserved8[1]; + RwReg PMC_OCR; /**< \brief (Pmc Offset: 0x0110) Oscillator Calibration Register */ +} Pmc; +#endif /* __ASSEMBLY__ */ +/* -------- PMC_SCER : (PMC Offset: 0x0000) System Clock Enable Register -------- */ +#define PMC_SCER_UDP (0x1u << 7) /**< \brief (PMC_SCER) USB Device Port Clock Enable */ +#define PMC_SCER_PCK0 (0x1u << 8) /**< \brief (PMC_SCER) Programmable Clock 0 Output Enable */ +#define PMC_SCER_PCK1 (0x1u << 9) /**< \brief (PMC_SCER) Programmable Clock 1 Output Enable */ +#define PMC_SCER_PCK2 (0x1u << 10) /**< \brief (PMC_SCER) Programmable Clock 2 Output Enable */ +/* -------- PMC_SCDR : (PMC Offset: 0x0004) System Clock Disable Register -------- */ +#define PMC_SCDR_UDP (0x1u << 7) /**< \brief (PMC_SCDR) USB Device Port Clock Disable */ +#define PMC_SCDR_PCK0 (0x1u << 8) /**< \brief (PMC_SCDR) Programmable Clock 0 Output Disable */ +#define PMC_SCDR_PCK1 (0x1u << 9) /**< \brief (PMC_SCDR) Programmable Clock 1 Output Disable */ +#define PMC_SCDR_PCK2 (0x1u << 10) /**< \brief (PMC_SCDR) Programmable Clock 2 Output Disable */ +/* -------- PMC_SCSR : (PMC Offset: 0x0008) System Clock Status Register -------- */ +#define PMC_SCSR_UDP (0x1u << 7) /**< \brief (PMC_SCSR) USB Device Port Clock Status */ +#define PMC_SCSR_PCK0 (0x1u << 8) /**< \brief (PMC_SCSR) Programmable Clock 0 Output Status */ +#define PMC_SCSR_PCK1 (0x1u << 9) /**< \brief (PMC_SCSR) Programmable Clock 1 Output Status */ +#define PMC_SCSR_PCK2 (0x1u << 10) /**< \brief (PMC_SCSR) Programmable Clock 2 Output Status */ +/* -------- PMC_PCER0 : (PMC Offset: 0x0010) Peripheral Clock Enable Register 0 -------- */ +#define PMC_PCER0_PID2 (0x1u << 2) /**< \brief (PMC_PCER0) Peripheral Clock 2 Enable */ +#define PMC_PCER0_PID3 (0x1u << 3) /**< \brief (PMC_PCER0) Peripheral Clock 3 Enable */ +#define PMC_PCER0_PID4 (0x1u << 4) /**< \brief (PMC_PCER0) Peripheral Clock 4 Enable */ +#define PMC_PCER0_PID5 (0x1u << 5) /**< \brief (PMC_PCER0) Peripheral Clock 5 Enable */ +#define PMC_PCER0_PID6 (0x1u << 6) /**< \brief (PMC_PCER0) Peripheral Clock 6 Enable */ +#define PMC_PCER0_PID7 (0x1u << 7) /**< \brief (PMC_PCER0) Peripheral Clock 7 Enable */ +#define PMC_PCER0_PID8 (0x1u << 8) /**< \brief (PMC_PCER0) Peripheral Clock 8 Enable */ +#define PMC_PCER0_PID9 (0x1u << 9) /**< \brief (PMC_PCER0) Peripheral Clock 9 Enable */ +#define PMC_PCER0_PID10 (0x1u << 10) /**< \brief (PMC_PCER0) Peripheral Clock 10 Enable */ +#define PMC_PCER0_PID11 (0x1u << 11) /**< \brief (PMC_PCER0) Peripheral Clock 11 Enable */ +#define PMC_PCER0_PID12 (0x1u << 12) /**< \brief (PMC_PCER0) Peripheral Clock 12 Enable */ +#define PMC_PCER0_PID13 (0x1u << 13) /**< \brief (PMC_PCER0) Peripheral Clock 13 Enable */ +#define PMC_PCER0_PID14 (0x1u << 14) /**< \brief (PMC_PCER0) Peripheral Clock 14 Enable */ +#define PMC_PCER0_PID15 (0x1u << 15) /**< \brief (PMC_PCER0) Peripheral Clock 15 Enable */ +#define PMC_PCER0_PID16 (0x1u << 16) /**< \brief (PMC_PCER0) Peripheral Clock 16 Enable */ +#define PMC_PCER0_PID18 (0x1u << 18) /**< \brief (PMC_PCER0) Peripheral Clock 18 Enable */ +#define PMC_PCER0_PID19 (0x1u << 19) /**< \brief (PMC_PCER0) Peripheral Clock 19 Enable */ +#define PMC_PCER0_PID20 (0x1u << 20) /**< \brief (PMC_PCER0) Peripheral Clock 20 Enable */ +#define PMC_PCER0_PID21 (0x1u << 21) /**< \brief (PMC_PCER0) Peripheral Clock 21 Enable */ +#define PMC_PCER0_PID22 (0x1u << 22) /**< \brief (PMC_PCER0) Peripheral Clock 22 Enable */ +#define PMC_PCER0_PID23 (0x1u << 23) /**< \brief (PMC_PCER0) Peripheral Clock 23 Enable */ +#define PMC_PCER0_PID24 (0x1u << 24) /**< \brief (PMC_PCER0) Peripheral Clock 24 Enable */ +#define PMC_PCER0_PID25 (0x1u << 25) /**< \brief (PMC_PCER0) Peripheral Clock 25 Enable */ +#define PMC_PCER0_PID26 (0x1u << 26) /**< \brief (PMC_PCER0) Peripheral Clock 26 Enable */ +#define PMC_PCER0_PID27 (0x1u << 27) /**< \brief (PMC_PCER0) Peripheral Clock 27 Enable */ +#define PMC_PCER0_PID28 (0x1u << 28) /**< \brief (PMC_PCER0) Peripheral Clock 28 Enable */ +#define PMC_PCER0_PID29 (0x1u << 29) /**< \brief (PMC_PCER0) Peripheral Clock 29 Enable */ +#define PMC_PCER0_PID30 (0x1u << 30) /**< \brief (PMC_PCER0) Peripheral Clock 30 Enable */ +#define PMC_PCER0_PID31 (0x1u << 31) /**< \brief (PMC_PCER0) Peripheral Clock 31 Enable */ +/* -------- PMC_PCDR0 : (PMC Offset: 0x0014) Peripheral Clock Disable Register 0 -------- */ +#define PMC_PCDR0_PID2 (0x1u << 2) /**< \brief (PMC_PCDR0) Peripheral Clock 2 Disable */ +#define PMC_PCDR0_PID3 (0x1u << 3) /**< \brief (PMC_PCDR0) Peripheral Clock 3 Disable */ +#define PMC_PCDR0_PID4 (0x1u << 4) /**< \brief (PMC_PCDR0) Peripheral Clock 4 Disable */ +#define PMC_PCDR0_PID5 (0x1u << 5) /**< \brief (PMC_PCDR0) Peripheral Clock 5 Disable */ +#define PMC_PCDR0_PID6 (0x1u << 6) /**< \brief (PMC_PCDR0) Peripheral Clock 6 Disable */ +#define PMC_PCDR0_PID7 (0x1u << 7) /**< \brief (PMC_PCDR0) Peripheral Clock 7 Disable */ +#define PMC_PCDR0_PID8 (0x1u << 8) /**< \brief (PMC_PCDR0) Peripheral Clock 8 Disable */ +#define PMC_PCDR0_PID9 (0x1u << 9) /**< \brief (PMC_PCDR0) Peripheral Clock 9 Disable */ +#define PMC_PCDR0_PID10 (0x1u << 10) /**< \brief (PMC_PCDR0) Peripheral Clock 10 Disable */ +#define PMC_PCDR0_PID11 (0x1u << 11) /**< \brief (PMC_PCDR0) Peripheral Clock 11 Disable */ +#define PMC_PCDR0_PID12 (0x1u << 12) /**< \brief (PMC_PCDR0) Peripheral Clock 12 Disable */ +#define PMC_PCDR0_PID13 (0x1u << 13) /**< \brief (PMC_PCDR0) Peripheral Clock 13 Disable */ +#define PMC_PCDR0_PID14 (0x1u << 14) /**< \brief (PMC_PCDR0) Peripheral Clock 14 Disable */ +#define PMC_PCDR0_PID15 (0x1u << 15) /**< \brief (PMC_PCDR0) Peripheral Clock 15 Disable */ +#define PMC_PCDR0_PID16 (0x1u << 16) /**< \brief (PMC_PCDR0) Peripheral Clock 16 Disable */ +#define PMC_PCDR0_PID18 (0x1u << 18) /**< \brief (PMC_PCDR0) Peripheral Clock 18 Disable */ +#define PMC_PCDR0_PID19 (0x1u << 19) /**< \brief (PMC_PCDR0) Peripheral Clock 19 Disable */ +#define PMC_PCDR0_PID20 (0x1u << 20) /**< \brief (PMC_PCDR0) Peripheral Clock 20 Disable */ +#define PMC_PCDR0_PID21 (0x1u << 21) /**< \brief (PMC_PCDR0) Peripheral Clock 21 Disable */ +#define PMC_PCDR0_PID22 (0x1u << 22) /**< \brief (PMC_PCDR0) Peripheral Clock 22 Disable */ +#define PMC_PCDR0_PID23 (0x1u << 23) /**< \brief (PMC_PCDR0) Peripheral Clock 23 Disable */ +#define PMC_PCDR0_PID24 (0x1u << 24) /**< \brief (PMC_PCDR0) Peripheral Clock 24 Disable */ +#define PMC_PCDR0_PID25 (0x1u << 25) /**< \brief (PMC_PCDR0) Peripheral Clock 25 Disable */ +#define PMC_PCDR0_PID26 (0x1u << 26) /**< \brief (PMC_PCDR0) Peripheral Clock 26 Disable */ +#define PMC_PCDR0_PID27 (0x1u << 27) /**< \brief (PMC_PCDR0) Peripheral Clock 27 Disable */ +#define PMC_PCDR0_PID28 (0x1u << 28) /**< \brief (PMC_PCDR0) Peripheral Clock 28 Disable */ +#define PMC_PCDR0_PID29 (0x1u << 29) /**< \brief (PMC_PCDR0) Peripheral Clock 29 Disable */ +#define PMC_PCDR0_PID30 (0x1u << 30) /**< \brief (PMC_PCDR0) Peripheral Clock 30 Disable */ +#define PMC_PCDR0_PID31 (0x1u << 31) /**< \brief (PMC_PCDR0) Peripheral Clock 31 Disable */ +/* -------- PMC_PCSR0 : (PMC Offset: 0x0018) Peripheral Clock Status Register 0 -------- */ +#define PMC_PCSR0_PID2 (0x1u << 2) /**< \brief (PMC_PCSR0) Peripheral Clock 2 Status */ +#define PMC_PCSR0_PID3 (0x1u << 3) /**< \brief (PMC_PCSR0) Peripheral Clock 3 Status */ +#define PMC_PCSR0_PID4 (0x1u << 4) /**< \brief (PMC_PCSR0) Peripheral Clock 4 Status */ +#define PMC_PCSR0_PID5 (0x1u << 5) /**< \brief (PMC_PCSR0) Peripheral Clock 5 Status */ +#define PMC_PCSR0_PID6 (0x1u << 6) /**< \brief (PMC_PCSR0) Peripheral Clock 6 Status */ +#define PMC_PCSR0_PID7 (0x1u << 7) /**< \brief (PMC_PCSR0) Peripheral Clock 7 Status */ +#define PMC_PCSR0_PID8 (0x1u << 8) /**< \brief (PMC_PCSR0) Peripheral Clock 8 Status */ +#define PMC_PCSR0_PID9 (0x1u << 9) /**< \brief (PMC_PCSR0) Peripheral Clock 9 Status */ +#define PMC_PCSR0_PID10 (0x1u << 10) /**< \brief (PMC_PCSR0) Peripheral Clock 10 Status */ +#define PMC_PCSR0_PID11 (0x1u << 11) /**< \brief (PMC_PCSR0) Peripheral Clock 11 Status */ +#define PMC_PCSR0_PID12 (0x1u << 12) /**< \brief (PMC_PCSR0) Peripheral Clock 12 Status */ +#define PMC_PCSR0_PID13 (0x1u << 13) /**< \brief (PMC_PCSR0) Peripheral Clock 13 Status */ +#define PMC_PCSR0_PID14 (0x1u << 14) /**< \brief (PMC_PCSR0) Peripheral Clock 14 Status */ +#define PMC_PCSR0_PID15 (0x1u << 15) /**< \brief (PMC_PCSR0) Peripheral Clock 15 Status */ +#define PMC_PCSR0_PID16 (0x1u << 16) /**< \brief (PMC_PCSR0) Peripheral Clock 16 Status */ +#define PMC_PCSR0_PID18 (0x1u << 18) /**< \brief (PMC_PCSR0) Peripheral Clock 18 Status */ +#define PMC_PCSR0_PID19 (0x1u << 19) /**< \brief (PMC_PCSR0) Peripheral Clock 19 Status */ +#define PMC_PCSR0_PID20 (0x1u << 20) /**< \brief (PMC_PCSR0) Peripheral Clock 20 Status */ +#define PMC_PCSR0_PID21 (0x1u << 21) /**< \brief (PMC_PCSR0) Peripheral Clock 21 Status */ +#define PMC_PCSR0_PID22 (0x1u << 22) /**< \brief (PMC_PCSR0) Peripheral Clock 22 Status */ +#define PMC_PCSR0_PID23 (0x1u << 23) /**< \brief (PMC_PCSR0) Peripheral Clock 23 Status */ +#define PMC_PCSR0_PID24 (0x1u << 24) /**< \brief (PMC_PCSR0) Peripheral Clock 24 Status */ +#define PMC_PCSR0_PID25 (0x1u << 25) /**< \brief (PMC_PCSR0) Peripheral Clock 25 Status */ +#define PMC_PCSR0_PID26 (0x1u << 26) /**< \brief (PMC_PCSR0) Peripheral Clock 26 Status */ +#define PMC_PCSR0_PID27 (0x1u << 27) /**< \brief (PMC_PCSR0) Peripheral Clock 27 Status */ +#define PMC_PCSR0_PID28 (0x1u << 28) /**< \brief (PMC_PCSR0) Peripheral Clock 28 Status */ +#define PMC_PCSR0_PID29 (0x1u << 29) /**< \brief (PMC_PCSR0) Peripheral Clock 29 Status */ +#define PMC_PCSR0_PID30 (0x1u << 30) /**< \brief (PMC_PCSR0) Peripheral Clock 30 Status */ +#define PMC_PCSR0_PID31 (0x1u << 31) /**< \brief (PMC_PCSR0) Peripheral Clock 31 Status */ +/* -------- CKGR_MOR : (PMC Offset: 0x0020) Main Oscillator Register -------- */ +#define CKGR_MOR_MOSCXTEN (0x1u << 0) /**< \brief (CKGR_MOR) Main Crystal Oscillator Enable */ +#define CKGR_MOR_MOSCXTBY (0x1u << 1) /**< \brief (CKGR_MOR) Main Crystal Oscillator Bypass */ +#define CKGR_MOR_MOSCRCEN (0x1u << 3) /**< \brief (CKGR_MOR) Main On-Chip RC Oscillator Enable */ +#define CKGR_MOR_MOSCRCF_Pos 4 +#define CKGR_MOR_MOSCRCF_Msk (0x7u << CKGR_MOR_MOSCRCF_Pos) /**< \brief (CKGR_MOR) Main On-Chip RC Oscillator Frequency Selection */ +#define CKGR_MOR_MOSCRCF_4_MHz (0x0u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 4 MHz (default) */ +#define CKGR_MOR_MOSCRCF_8_MHz (0x1u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 8 MHz */ +#define CKGR_MOR_MOSCRCF_12_MHz (0x2u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 12 MHz */ +#define CKGR_MOR_MOSCXTST_Pos 8 +#define CKGR_MOR_MOSCXTST_Msk (0xffu << CKGR_MOR_MOSCXTST_Pos) /**< \brief (CKGR_MOR) Main Crystal Oscillator Start-up Time */ +#define CKGR_MOR_MOSCXTST(value) ((CKGR_MOR_MOSCXTST_Msk & ((value) << CKGR_MOR_MOSCXTST_Pos))) +#define CKGR_MOR_KEY_Pos 16 +#define CKGR_MOR_KEY_Msk (0xffu << CKGR_MOR_KEY_Pos) /**< \brief (CKGR_MOR) Password */ +#define CKGR_MOR_KEY(value) ((CKGR_MOR_KEY_Msk & ((value) << CKGR_MOR_KEY_Pos))) +#define CKGR_MOR_MOSCSEL (0x1u << 24) /**< \brief (CKGR_MOR) Main Oscillator Selection */ +#define CKGR_MOR_CFDEN (0x1u << 25) /**< \brief (CKGR_MOR) Clock Failure Detector Enable */ +/* -------- CKGR_MCFR : (PMC Offset: 0x0024) Main Clock Frequency Register -------- */ +#define CKGR_MCFR_MAINF_Pos 0 +#define CKGR_MCFR_MAINF_Msk (0xffffu << CKGR_MCFR_MAINF_Pos) /**< \brief (CKGR_MCFR) Main Clock Frequency */ +#define CKGR_MCFR_MAINF(value) ((CKGR_MCFR_MAINF_Msk & ((value) << CKGR_MCFR_MAINF_Pos))) +#define CKGR_MCFR_MAINFRDY (0x1u << 16) /**< \brief (CKGR_MCFR) Main Clock Ready */ +#define CKGR_MCFR_RCMEAS (0x1u << 20) /**< \brief (CKGR_MCFR) RC Oscillator Frequency Measure (write-only) */ +/* -------- CKGR_PLLAR : (PMC Offset: 0x0028) PLLA Register -------- */ +#define CKGR_PLLAR_DIVA_Pos 0 +#define CKGR_PLLAR_DIVA_Msk (0xffu << CKGR_PLLAR_DIVA_Pos) /**< \brief (CKGR_PLLAR) Divider */ +#define CKGR_PLLAR_DIVA(value) ((CKGR_PLLAR_DIVA_Msk & ((value) << CKGR_PLLAR_DIVA_Pos))) +#define CKGR_PLLAR_PLLACOUNT_Pos 8 +#define CKGR_PLLAR_PLLACOUNT_Msk (0x3fu << CKGR_PLLAR_PLLACOUNT_Pos) /**< \brief (CKGR_PLLAR) PLLA Counter */ +#define CKGR_PLLAR_PLLACOUNT(value) ((CKGR_PLLAR_PLLACOUNT_Msk & ((value) << CKGR_PLLAR_PLLACOUNT_Pos))) +#define CKGR_PLLAR_MULA_Pos 16 +#define CKGR_PLLAR_MULA_Msk (0x7ffu << CKGR_PLLAR_MULA_Pos) /**< \brief (CKGR_PLLAR) PLLA Multiplier */ +#define CKGR_PLLAR_MULA(value) ((CKGR_PLLAR_MULA_Msk & ((value) << CKGR_PLLAR_MULA_Pos))) +#define CKGR_PLLAR_ONE (0x1u << 29) /**< \brief (CKGR_PLLAR) Must Be Set to 1 */ +/* -------- CKGR_PLLBR : (PMC Offset: 0x002C) PLLB Register -------- */ +#define CKGR_PLLBR_DIVB_Pos 0 +#define CKGR_PLLBR_DIVB_Msk (0xffu << CKGR_PLLBR_DIVB_Pos) /**< \brief (CKGR_PLLBR) Divider */ +#define CKGR_PLLBR_DIVB(value) ((CKGR_PLLBR_DIVB_Msk & ((value) << CKGR_PLLBR_DIVB_Pos))) +#define CKGR_PLLBR_PLLBCOUNT_Pos 8 +#define CKGR_PLLBR_PLLBCOUNT_Msk (0x3fu << CKGR_PLLBR_PLLBCOUNT_Pos) /**< \brief (CKGR_PLLBR) PLLB Counter */ +#define CKGR_PLLBR_PLLBCOUNT(value) ((CKGR_PLLBR_PLLBCOUNT_Msk & ((value) << CKGR_PLLBR_PLLBCOUNT_Pos))) +#define CKGR_PLLBR_MULB_Pos 16 +#define CKGR_PLLBR_MULB_Msk (0x7ffu << CKGR_PLLBR_MULB_Pos) /**< \brief (CKGR_PLLBR) PLLB Multiplier */ +#define CKGR_PLLBR_MULB(value) ((CKGR_PLLBR_MULB_Msk & ((value) << CKGR_PLLBR_MULB_Pos))) +/* -------- PMC_MCKR : (PMC Offset: 0x0030) Master Clock Register -------- */ +#define PMC_MCKR_CSS_Pos 0 +#define PMC_MCKR_CSS_Msk (0x3u << PMC_MCKR_CSS_Pos) /**< \brief (PMC_MCKR) Master Clock Source Selection */ +#define PMC_MCKR_CSS_SLOW_CLK (0x0u << 0) /**< \brief (PMC_MCKR) Slow Clock is selected */ +#define PMC_MCKR_CSS_MAIN_CLK (0x1u << 0) /**< \brief (PMC_MCKR) Main Clock is selected */ +#define PMC_MCKR_CSS_PLLA_CLK (0x2u << 0) /**< \brief (PMC_MCKR) PLLA Clock is selected */ +#define PMC_MCKR_CSS_PLLB_CLK (0x3u << 0) /**< \brief (PMC_MCKR) PLLBClock is selected */ +#define PMC_MCKR_PRES_Pos 4 +#define PMC_MCKR_PRES_Msk (0x7u << PMC_MCKR_PRES_Pos) /**< \brief (PMC_MCKR) Processor Clock Prescaler */ +#define PMC_MCKR_PRES_CLK_1 (0x0u << 4) /**< \brief (PMC_MCKR) Selected clock */ +#define PMC_MCKR_PRES_CLK_2 (0x1u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 2 */ +#define PMC_MCKR_PRES_CLK_4 (0x2u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 4 */ +#define PMC_MCKR_PRES_CLK_8 (0x3u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 8 */ +#define PMC_MCKR_PRES_CLK_16 (0x4u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 16 */ +#define PMC_MCKR_PRES_CLK_32 (0x5u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 32 */ +#define PMC_MCKR_PRES_CLK_64 (0x6u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 64 */ +#define PMC_MCKR_PRES_CLK_3 (0x7u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 3 */ +#define PMC_MCKR_PLLADIV2 (0x1u << 12) /**< \brief (PMC_MCKR) PLLA Divisor by 2 */ +#define PMC_MCKR_PLLBDIV2 (0x1u << 13) /**< \brief (PMC_MCKR) PLLB Divisor by 2 */ +/* -------- PMC_USB : (PMC Offset: 0x0038) USB Clock Register -------- */ +#define PMC_USB_USBS (0x1u << 0) /**< \brief (PMC_USB) USB Input Clock Selection */ +#define PMC_USB_USBDIV_Pos 8 +#define PMC_USB_USBDIV_Msk (0xfu << PMC_USB_USBDIV_Pos) /**< \brief (PMC_USB) Divider for USB Clock. */ +#define PMC_USB_USBDIV(value) ((PMC_USB_USBDIV_Msk & ((value) << PMC_USB_USBDIV_Pos))) +/* -------- PMC_PCK[3] : (PMC Offset: 0x0040) Programmable Clock 0 Register -------- */ +#define PMC_PCK_CSS_Pos 0 +#define PMC_PCK_CSS_Msk (0x7u << PMC_PCK_CSS_Pos) /**< \brief (PMC_PCK[3]) Master Clock Source Selection */ +#define PMC_PCK_CSS_SLOW_CLK (0x0u << 0) /**< \brief (PMC_PCK[3]) Slow Clock is selected */ +#define PMC_PCK_CSS_MAIN_CLK (0x1u << 0) /**< \brief (PMC_PCK[3]) Main Clock is selected */ +#define PMC_PCK_CSS_PLLA_CLK (0x2u << 0) /**< \brief (PMC_PCK[3]) PLLA Clock is selected */ +#define PMC_PCK_CSS_PLLB_CLK (0x3u << 0) /**< \brief (PMC_PCK[3]) PLLB Clock is selected */ +#define PMC_PCK_CSS_MCK (0x4u << 0) /**< \brief (PMC_PCK[3]) Master Clock is selected */ +#define PMC_PCK_PRES_Pos 4 +#define PMC_PCK_PRES_Msk (0x7u << PMC_PCK_PRES_Pos) /**< \brief (PMC_PCK[3]) Programmable Clock Prescaler */ +#define PMC_PCK_PRES(value) ((PMC_PCK_PRES_Msk & ((value) << PMC_PCK_PRES_Pos))) +#define PMC_PCK_PRES_CLK_1 (0x0u << 4) /**< \brief (PMC_PCK[3]) Selected clock */ +#define PMC_PCK_PRES_CLK_2 (0x1u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 2 */ +#define PMC_PCK_PRES_CLK_4 (0x2u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 4 */ +#define PMC_PCK_PRES_CLK_8 (0x3u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 8 */ +#define PMC_PCK_PRES_CLK_16 (0x4u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 16 */ +#define PMC_PCK_PRES_CLK_32 (0x5u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 32 */ +#define PMC_PCK_PRES_CLK_64 (0x6u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 64 */ +/* -------- PMC_IER : (PMC Offset: 0x0060) Interrupt Enable Register -------- */ +#define PMC_IER_MOSCXTS (0x1u << 0) /**< \brief (PMC_IER) Main Crystal Oscillator Status Interrupt Enable */ +#define PMC_IER_LOCKA (0x1u << 1) /**< \brief (PMC_IER) PLLA Lock Interrupt Enable */ +#define PMC_IER_LOCKB (0x1u << 2) /**< \brief (PMC_IER) PLLB Lock Interrupt Enable */ +#define PMC_IER_MCKRDY (0x1u << 3) /**< \brief (PMC_IER) Master Clock Ready Interrupt Enable */ +#define PMC_IER_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IER) Programmable Clock Ready 0 Interrupt Enable */ +#define PMC_IER_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IER) Programmable Clock Ready 1 Interrupt Enable */ +#define PMC_IER_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IER) Programmable Clock Ready 2 Interrupt Enable */ +#define PMC_IER_MOSCSELS (0x1u << 16) /**< \brief (PMC_IER) Main Oscillator Selection Status Interrupt Enable */ +#define PMC_IER_MOSCRCS (0x1u << 17) /**< \brief (PMC_IER) Main On-Chip RC Status Interrupt Enable */ +#define PMC_IER_CFDEV (0x1u << 18) /**< \brief (PMC_IER) Clock Failure Detector Event Interrupt Enable */ +/* -------- PMC_IDR : (PMC Offset: 0x0064) Interrupt Disable Register -------- */ +#define PMC_IDR_MOSCXTS (0x1u << 0) /**< \brief (PMC_IDR) Main Crystal Oscillator Status Interrupt Disable */ +#define PMC_IDR_LOCKA (0x1u << 1) /**< \brief (PMC_IDR) PLLA Lock Interrupt Disable */ +#define PMC_IDR_LOCKB (0x1u << 2) /**< \brief (PMC_IDR) PLLB Lock Interrupt Disable */ +#define PMC_IDR_MCKRDY (0x1u << 3) /**< \brief (PMC_IDR) Master Clock Ready Interrupt Disable */ +#define PMC_IDR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IDR) Programmable Clock Ready 0 Interrupt Disable */ +#define PMC_IDR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IDR) Programmable Clock Ready 1 Interrupt Disable */ +#define PMC_IDR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IDR) Programmable Clock Ready 2 Interrupt Disable */ +#define PMC_IDR_MOSCSELS (0x1u << 16) /**< \brief (PMC_IDR) Main Oscillator Selection Status Interrupt Disable */ +#define PMC_IDR_MOSCRCS (0x1u << 17) /**< \brief (PMC_IDR) Main On-Chip RC Status Interrupt Disable */ +#define PMC_IDR_CFDEV (0x1u << 18) /**< \brief (PMC_IDR) Clock Failure Detector Event Interrupt Disable */ +/* -------- PMC_SR : (PMC Offset: 0x0068) Status Register -------- */ +#define PMC_SR_MOSCXTS (0x1u << 0) /**< \brief (PMC_SR) Main XTAL Oscillator Status */ +#define PMC_SR_LOCKA (0x1u << 1) /**< \brief (PMC_SR) PLLA Lock Status */ +#define PMC_SR_LOCKB (0x1u << 2) /**< \brief (PMC_SR) PLLB Lock Status */ +#define PMC_SR_MCKRDY (0x1u << 3) /**< \brief (PMC_SR) Master Clock Status */ +#define PMC_SR_OSCSELS (0x1u << 7) /**< \brief (PMC_SR) Slow Clock Oscillator Selection */ +#define PMC_SR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_MOSCSELS (0x1u << 16) /**< \brief (PMC_SR) Main Oscillator Selection Status */ +#define PMC_SR_MOSCRCS (0x1u << 17) /**< \brief (PMC_SR) Main On-Chip RC Oscillator Status */ +#define PMC_SR_CFDEV (0x1u << 18) /**< \brief (PMC_SR) Clock Failure Detector Event */ +#define PMC_SR_CFDS (0x1u << 19) /**< \brief (PMC_SR) Clock Failure Detector Status */ +#define PMC_SR_FOS (0x1u << 20) /**< \brief (PMC_SR) Clock Failure Detector Fault Output Status */ +/* -------- PMC_IMR : (PMC Offset: 0x006C) Interrupt Mask Register -------- */ +#define PMC_IMR_MOSCXTS (0x1u << 0) /**< \brief (PMC_IMR) Main Crystal Oscillator Status Interrupt Mask */ +#define PMC_IMR_LOCKA (0x1u << 1) /**< \brief (PMC_IMR) PLLA Lock Interrupt Mask */ +#define PMC_IMR_LOCKB (0x1u << 2) /**< \brief (PMC_IMR) PLLB Lock Interrupt Mask */ +#define PMC_IMR_MCKRDY (0x1u << 3) /**< \brief (PMC_IMR) Master Clock Ready Interrupt Mask */ +#define PMC_IMR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IMR) Programmable Clock Ready 0 Interrupt Mask */ +#define PMC_IMR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IMR) Programmable Clock Ready 1 Interrupt Mask */ +#define PMC_IMR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IMR) Programmable Clock Ready 2 Interrupt Mask */ +#define PMC_IMR_MOSCSELS (0x1u << 16) /**< \brief (PMC_IMR) Main Oscillator Selection Status Interrupt Mask */ +#define PMC_IMR_MOSCRCS (0x1u << 17) /**< \brief (PMC_IMR) Main On-Chip RC Status Interrupt Mask */ +#define PMC_IMR_CFDEV (0x1u << 18) /**< \brief (PMC_IMR) Clock Failure Detector Event Interrupt Mask */ +/* -------- PMC_FSMR : (PMC Offset: 0x0070) Fast Startup Mode Register -------- */ +#define PMC_FSMR_FSTT0 (0x1u << 0) /**< \brief (PMC_FSMR) Fast Startup Input Enable 0 */ +#define PMC_FSMR_FSTT1 (0x1u << 1) /**< \brief (PMC_FSMR) Fast Startup Input Enable 1 */ +#define PMC_FSMR_FSTT2 (0x1u << 2) /**< \brief (PMC_FSMR) Fast Startup Input Enable 2 */ +#define PMC_FSMR_FSTT3 (0x1u << 3) /**< \brief (PMC_FSMR) Fast Startup Input Enable 3 */ +#define PMC_FSMR_FSTT4 (0x1u << 4) /**< \brief (PMC_FSMR) Fast Startup Input Enable 4 */ +#define PMC_FSMR_FSTT5 (0x1u << 5) /**< \brief (PMC_FSMR) Fast Startup Input Enable 5 */ +#define PMC_FSMR_FSTT6 (0x1u << 6) /**< \brief (PMC_FSMR) Fast Startup Input Enable 6 */ +#define PMC_FSMR_FSTT7 (0x1u << 7) /**< \brief (PMC_FSMR) Fast Startup Input Enable 7 */ +#define PMC_FSMR_FSTT8 (0x1u << 8) /**< \brief (PMC_FSMR) Fast Startup Input Enable 8 */ +#define PMC_FSMR_FSTT9 (0x1u << 9) /**< \brief (PMC_FSMR) Fast Startup Input Enable 9 */ +#define PMC_FSMR_FSTT10 (0x1u << 10) /**< \brief (PMC_FSMR) Fast Startup Input Enable 10 */ +#define PMC_FSMR_FSTT11 (0x1u << 11) /**< \brief (PMC_FSMR) Fast Startup Input Enable 11 */ +#define PMC_FSMR_FSTT12 (0x1u << 12) /**< \brief (PMC_FSMR) Fast Startup Input Enable 12 */ +#define PMC_FSMR_FSTT13 (0x1u << 13) /**< \brief (PMC_FSMR) Fast Startup Input Enable 13 */ +#define PMC_FSMR_FSTT14 (0x1u << 14) /**< \brief (PMC_FSMR) Fast Startup Input Enable 14 */ +#define PMC_FSMR_FSTT15 (0x1u << 15) /**< \brief (PMC_FSMR) Fast Startup Input Enable 15 */ +#define PMC_FSMR_RTTAL (0x1u << 16) /**< \brief (PMC_FSMR) RTT Alarm Enable */ +#define PMC_FSMR_RTCAL (0x1u << 17) /**< \brief (PMC_FSMR) RTC Alarm Enable */ +#define PMC_FSMR_USBAL (0x1u << 18) /**< \brief (PMC_FSMR) USB Alarm Enable */ +#define PMC_FSMR_LPM (0x1u << 20) /**< \brief (PMC_FSMR) Low Power Mode */ +/* -------- PMC_FSPR : (PMC Offset: 0x0074) Fast Startup Polarity Register -------- */ +#define PMC_FSPR_FSTP0 (0x1u << 0) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP1 (0x1u << 1) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP2 (0x1u << 2) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP3 (0x1u << 3) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP4 (0x1u << 4) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP5 (0x1u << 5) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP6 (0x1u << 6) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP7 (0x1u << 7) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP8 (0x1u << 8) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP9 (0x1u << 9) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP10 (0x1u << 10) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP11 (0x1u << 11) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP12 (0x1u << 12) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP13 (0x1u << 13) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP14 (0x1u << 14) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP15 (0x1u << 15) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +/* -------- PMC_FOCR : (PMC Offset: 0x0078) Fault Output Clear Register -------- */ +#define PMC_FOCR_FOCLR (0x1u << 0) /**< \brief (PMC_FOCR) Fault Output Clear */ +/* -------- PMC_WPMR : (PMC Offset: 0x00E4) Write Protect Mode Register -------- */ +#define PMC_WPMR_WPEN (0x1u << 0) /**< \brief (PMC_WPMR) Write Protect Enable */ +#define PMC_WPMR_WPKEY_Pos 8 +#define PMC_WPMR_WPKEY_Msk (0xffffffu << PMC_WPMR_WPKEY_Pos) /**< \brief (PMC_WPMR) Write Protect KEY */ +#define PMC_WPMR_WPKEY(value) ((PMC_WPMR_WPKEY_Msk & ((value) << PMC_WPMR_WPKEY_Pos))) +/* -------- PMC_WPSR : (PMC Offset: 0x00E8) Write Protect Status Register -------- */ +#define PMC_WPSR_WPVS (0x1u << 0) /**< \brief (PMC_WPSR) Write Protect Violation Status */ +#define PMC_WPSR_WPVSRC_Pos 8 +#define PMC_WPSR_WPVSRC_Msk (0xffffu << PMC_WPSR_WPVSRC_Pos) /**< \brief (PMC_WPSR) Write Protect Violation Source */ +/* -------- PMC_PCER1 : (PMC Offset: 0x0100) Peripheral Clock Enable Register 1 -------- */ +#define PMC_PCER1_PID32 (0x1u << 0) /**< \brief (PMC_PCER1) Peripheral Clock 32 Enable */ +#define PMC_PCER1_PID33 (0x1u << 1) /**< \brief (PMC_PCER1) Peripheral Clock 33 Enable */ +#define PMC_PCER1_PID34 (0x1u << 2) /**< \brief (PMC_PCER1) Peripheral Clock 34 Enable */ +/* -------- PMC_PCDR1 : (PMC Offset: 0x0104) Peripheral Clock Disable Register 1 -------- */ +#define PMC_PCDR1_PID32 (0x1u << 0) /**< \brief (PMC_PCDR1) Peripheral Clock 32 Disable */ +#define PMC_PCDR1_PID33 (0x1u << 1) /**< \brief (PMC_PCDR1) Peripheral Clock 33 Disable */ +#define PMC_PCDR1_PID34 (0x1u << 2) /**< \brief (PMC_PCDR1) Peripheral Clock 34 Disable */ +/* -------- PMC_PCSR1 : (PMC Offset: 0x0108) Peripheral Clock Status Register 1 -------- */ +#define PMC_PCSR1_PID32 (0x1u << 0) /**< \brief (PMC_PCSR1) Peripheral Clock 32 Status */ +#define PMC_PCSR1_PID33 (0x1u << 1) /**< \brief (PMC_PCSR1) Peripheral Clock 33 Status */ +#define PMC_PCSR1_PID34 (0x1u << 2) /**< \brief (PMC_PCSR1) Peripheral Clock 34 Status */ +/* -------- PMC_OCR : (PMC Offset: 0x0110) Oscillator Calibration Register -------- */ +#define PMC_OCR_CAL4_Pos 0 +#define PMC_OCR_CAL4_Msk (0x7fu << PMC_OCR_CAL4_Pos) /**< \brief (PMC_OCR) RC Oscillator Calibration bits for 4 Mhz */ +#define PMC_OCR_CAL4(value) ((PMC_OCR_CAL4_Msk & ((value) << PMC_OCR_CAL4_Pos))) +#define PMC_OCR_SEL4 (0x1u << 7) /**< \brief (PMC_OCR) Selection of RC Oscillator Calibration bits for 4 Mhz */ +#define PMC_OCR_CAL8_Pos 8 +#define PMC_OCR_CAL8_Msk (0x7fu << PMC_OCR_CAL8_Pos) /**< \brief (PMC_OCR) RC Oscillator Calibration bits for 8 Mhz */ +#define PMC_OCR_CAL8(value) ((PMC_OCR_CAL8_Msk & ((value) << PMC_OCR_CAL8_Pos))) +#define PMC_OCR_SEL8 (0x1u << 15) /**< \brief (PMC_OCR) Selection of RC Oscillator Calibration bits for 8 Mhz */ +#define PMC_OCR_CAL12_Pos 16 +#define PMC_OCR_CAL12_Msk (0x7fu << PMC_OCR_CAL12_Pos) /**< \brief (PMC_OCR) RC Oscillator Calibration bits for 12 Mhz */ +#define PMC_OCR_CAL12(value) ((PMC_OCR_CAL12_Msk & ((value) << PMC_OCR_CAL12_Pos))) +#define PMC_OCR_SEL12 (0x1u << 23) /**< \brief (PMC_OCR) Selection of RC Oscillator Calibration bits for 12 Mhz */ + +/*@}*/ + + +#endif /* _SAM3S8_PMC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_pwm.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_pwm.h new file mode 100644 index 000000000..ad63587dc --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_pwm.h @@ -0,0 +1,564 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_PWM_COMPONENT_ +#define _SAM3S8_PWM_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Pulse Width Modulation Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_PWM Pulse Width Modulation Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief PwmCh_num hardware registers */ +typedef struct { + RwReg PWM_CMR; /**< \brief (PwmCh_num Offset: 0x0) PWM Channel Mode Register */ + RwReg PWM_CDTY; /**< \brief (PwmCh_num Offset: 0x4) PWM Channel Duty Cycle Register */ + RwReg PWM_CDTYUPD; /**< \brief (PwmCh_num Offset: 0x8) PWM Channel Duty Cycle Update Register */ + RwReg PWM_CPRD; /**< \brief (PwmCh_num Offset: 0xC) PWM Channel Period Register */ + RwReg PWM_CPRDUPD; /**< \brief (PwmCh_num Offset: 0x10) PWM Channel Period Update Register */ + RwReg PWM_CCNT; /**< \brief (PwmCh_num Offset: 0x14) PWM Channel Counter Register */ + RwReg PWM_DT; /**< \brief (PwmCh_num Offset: 0x18) PWM Channel Dead Time Register */ + RwReg PWM_DTUPD; /**< \brief (PwmCh_num Offset: 0x1C) PWM Channel Dead Time Update Register */ +} PwmCh_num; +/** \brief PwmCmp hardware registers */ +typedef struct { + RwReg PWM_CMPV; /**< \brief (PwmCmp Offset: 0x0) PWM Comparison 0 Value Register */ + RwReg PWM_CMPVUPD; /**< \brief (PwmCmp Offset: 0x4) PWM Comparison 0 Value Update Register */ + RwReg PWM_CMPM; /**< \brief (PwmCmp Offset: 0x8) PWM Comparison 0 Mode Register */ + RwReg PWM_CMPMUPD; /**< \brief (PwmCmp Offset: 0xC) PWM Comparison 0 Mode Update Register */ +} PwmCmp; +/** \brief Pwm hardware registers */ +#define PWMCMP_NUMBER 8 +#define PWMCH_NUM_NUMBER 4 +typedef struct { + RwReg PWM_CLK; /**< \brief (Pwm Offset: 0x00) PWM Clock Register */ + WoReg PWM_ENA; /**< \brief (Pwm Offset: 0x04) PWM Enable Register */ + WoReg PWM_DIS; /**< \brief (Pwm Offset: 0x08) PWM Disable Register */ + RoReg PWM_SR; /**< \brief (Pwm Offset: 0x0C) PWM Status Register */ + WoReg PWM_IER1; /**< \brief (Pwm Offset: 0x10) PWM Interrupt Enable Register 1 */ + WoReg PWM_IDR1; /**< \brief (Pwm Offset: 0x14) PWM Interrupt Disable Register 1 */ + RoReg PWM_IMR1; /**< \brief (Pwm Offset: 0x18) PWM Interrupt Mask Register 1 */ + RoReg PWM_ISR1; /**< \brief (Pwm Offset: 0x1C) PWM Interrupt Status Register 1 */ + RwReg PWM_SCM; /**< \brief (Pwm Offset: 0x20) PWM Sync Channels Mode Register */ + RoReg Reserved1[1]; + RwReg PWM_SCUC; /**< \brief (Pwm Offset: 0x28) PWM Sync Channels Update Control Register */ + RwReg PWM_SCUP; /**< \brief (Pwm Offset: 0x2C) PWM Sync Channels Update Period Register */ + WoReg PWM_SCUPUPD; /**< \brief (Pwm Offset: 0x30) PWM Sync Channels Update Period Update Register */ + WoReg PWM_IER2; /**< \brief (Pwm Offset: 0x34) PWM Interrupt Enable Register 2 */ + WoReg PWM_IDR2; /**< \brief (Pwm Offset: 0x38) PWM Interrupt Disable Register 2 */ + RoReg PWM_IMR2; /**< \brief (Pwm Offset: 0x3C) PWM Interrupt Mask Register 2 */ + RoReg PWM_ISR2; /**< \brief (Pwm Offset: 0x40) PWM Interrupt Status Register 2 */ + RwReg PWM_OOV; /**< \brief (Pwm Offset: 0x44) PWM Output Override Value Register */ + RwReg PWM_OS; /**< \brief (Pwm Offset: 0x48) PWM Output Selection Register */ + WoReg PWM_OSS; /**< \brief (Pwm Offset: 0x4C) PWM Output Selection Set Register */ + WoReg PWM_OSC; /**< \brief (Pwm Offset: 0x50) PWM Output Selection Clear Register */ + WoReg PWM_OSSUPD; /**< \brief (Pwm Offset: 0x54) PWM Output Selection Set Update Register */ + WoReg PWM_OSCUPD; /**< \brief (Pwm Offset: 0x58) PWM Output Selection Clear Update Register */ + RwReg PWM_FMR; /**< \brief (Pwm Offset: 0x5C) PWM Fault Mode Register */ + RoReg PWM_FSR; /**< \brief (Pwm Offset: 0x60) PWM Fault Status Register */ + WoReg PWM_FCR; /**< \brief (Pwm Offset: 0x64) PWM Fault Clear Register */ + RwReg PWM_FPV; /**< \brief (Pwm Offset: 0x68) PWM Fault Protection Value Register */ + RwReg PWM_FPE; /**< \brief (Pwm Offset: 0x6C) PWM Fault Protection Enable Register */ + RoReg Reserved2[3]; + RwReg PWM_ELMR[2]; /**< \brief (Pwm Offset: 0x7C) PWM Event Line 0 Mode Register */ + RoReg Reserved3[11]; + RwReg PWM_SMMR; /**< \brief (Pwm Offset: 0xB0) PWM Stepper Motor Mode Register */ + RoReg Reserved4[12]; + WoReg PWM_WPCR; /**< \brief (Pwm Offset: 0xE4) PWM Write Protect Control Register */ + RoReg PWM_WPSR; /**< \brief (Pwm Offset: 0xE8) PWM Write Protect Status Register */ + RoReg Reserved5[5]; + RwReg PWM_RPR; /**< \brief (Pwm Offset: 0x100) Receive Pointer Register */ + RwReg PWM_RCR; /**< \brief (Pwm Offset: 0x104) Receive Counter Register */ + RwReg PWM_TPR; /**< \brief (Pwm Offset: 0x108) Transmit Pointer Register */ + RwReg PWM_TCR; /**< \brief (Pwm Offset: 0x10C) Transmit Counter Register */ + RwReg PWM_RNPR; /**< \brief (Pwm Offset: 0x110) Receive Next Pointer Register */ + RwReg PWM_RNCR; /**< \brief (Pwm Offset: 0x114) Receive Next Counter Register */ + RwReg PWM_TNPR; /**< \brief (Pwm Offset: 0x118) Transmit Next Pointer Register */ + RwReg PWM_TNCR; /**< \brief (Pwm Offset: 0x11C) Transmit Next Counter Register */ + WoReg PWM_PTCR; /**< \brief (Pwm Offset: 0x120) Transfer Control Register */ + RoReg PWM_PTSR; /**< \brief (Pwm Offset: 0x124) Transfer Status Register */ + RoReg Reserved6[2]; + PwmCmp PWM_CMP[PWMCMP_NUMBER]; /**< \brief (Pwm Offset: 0x130) 0 .. 7 */ + RoReg Reserved7[20]; + PwmCh_num PWM_CH_NUM[PWMCH_NUM_NUMBER]; /**< \brief (Pwm Offset: 0x200) ch_num = 0 .. 3 */ +} Pwm; +#endif /* __ASSEMBLY__ */ +/* -------- PWM_CLK : (PWM Offset: 0x00) PWM Clock Register -------- */ +#define PWM_CLK_DIVA_Pos 0 +#define PWM_CLK_DIVA_Msk (0xffu << PWM_CLK_DIVA_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Divide Factor */ +#define PWM_CLK_DIVA(value) ((PWM_CLK_DIVA_Msk & ((value) << PWM_CLK_DIVA_Pos))) +#define PWM_CLK_PREA_Pos 8 +#define PWM_CLK_PREA_Msk (0xfu << PWM_CLK_PREA_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Source Clock Selection */ +#define PWM_CLK_PREA(value) ((PWM_CLK_PREA_Msk & ((value) << PWM_CLK_PREA_Pos))) +#define PWM_CLK_DIVB_Pos 16 +#define PWM_CLK_DIVB_Msk (0xffu << PWM_CLK_DIVB_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Divide Factor */ +#define PWM_CLK_DIVB(value) ((PWM_CLK_DIVB_Msk & ((value) << PWM_CLK_DIVB_Pos))) +#define PWM_CLK_PREB_Pos 24 +#define PWM_CLK_PREB_Msk (0xfu << PWM_CLK_PREB_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Source Clock Selection */ +#define PWM_CLK_PREB(value) ((PWM_CLK_PREB_Msk & ((value) << PWM_CLK_PREB_Pos))) +/* -------- PWM_ENA : (PWM Offset: 0x04) PWM Enable Register -------- */ +#define PWM_ENA_CHID0 (0x1u << 0) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID1 (0x1u << 1) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID2 (0x1u << 2) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID3 (0x1u << 3) /**< \brief (PWM_ENA) Channel ID */ +/* -------- PWM_DIS : (PWM Offset: 0x08) PWM Disable Register -------- */ +#define PWM_DIS_CHID0 (0x1u << 0) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID1 (0x1u << 1) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID2 (0x1u << 2) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID3 (0x1u << 3) /**< \brief (PWM_DIS) Channel ID */ +/* -------- PWM_SR : (PWM Offset: 0x0C) PWM Status Register -------- */ +#define PWM_SR_CHID0 (0x1u << 0) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID1 (0x1u << 1) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID2 (0x1u << 2) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID3 (0x1u << 3) /**< \brief (PWM_SR) Channel ID */ +/* -------- PWM_IER1 : (PWM Offset: 0x10) PWM Interrupt Enable Register 1 -------- */ +#define PWM_IER1_CHID0 (0x1u << 0) /**< \brief (PWM_IER1) Counter Event on Channel 0 Interrupt Enable */ +#define PWM_IER1_CHID1 (0x1u << 1) /**< \brief (PWM_IER1) Counter Event on Channel 1 Interrupt Enable */ +#define PWM_IER1_CHID2 (0x1u << 2) /**< \brief (PWM_IER1) Counter Event on Channel 2 Interrupt Enable */ +#define PWM_IER1_CHID3 (0x1u << 3) /**< \brief (PWM_IER1) Counter Event on Channel 3 Interrupt Enable */ +#define PWM_IER1_FCHID0 (0x1u << 16) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 0 Interrupt Enable */ +#define PWM_IER1_FCHID1 (0x1u << 17) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 1 Interrupt Enable */ +#define PWM_IER1_FCHID2 (0x1u << 18) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 2 Interrupt Enable */ +#define PWM_IER1_FCHID3 (0x1u << 19) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 3 Interrupt Enable */ +/* -------- PWM_IDR1 : (PWM Offset: 0x14) PWM Interrupt Disable Register 1 -------- */ +#define PWM_IDR1_CHID0 (0x1u << 0) /**< \brief (PWM_IDR1) Counter Event on Channel 0 Interrupt Disable */ +#define PWM_IDR1_CHID1 (0x1u << 1) /**< \brief (PWM_IDR1) Counter Event on Channel 1 Interrupt Disable */ +#define PWM_IDR1_CHID2 (0x1u << 2) /**< \brief (PWM_IDR1) Counter Event on Channel 2 Interrupt Disable */ +#define PWM_IDR1_CHID3 (0x1u << 3) /**< \brief (PWM_IDR1) Counter Event on Channel 3 Interrupt Disable */ +#define PWM_IDR1_FCHID0 (0x1u << 16) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 0 Interrupt Disable */ +#define PWM_IDR1_FCHID1 (0x1u << 17) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 1 Interrupt Disable */ +#define PWM_IDR1_FCHID2 (0x1u << 18) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 2 Interrupt Disable */ +#define PWM_IDR1_FCHID3 (0x1u << 19) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 3 Interrupt Disable */ +/* -------- PWM_IMR1 : (PWM Offset: 0x18) PWM Interrupt Mask Register 1 -------- */ +#define PWM_IMR1_CHID0 (0x1u << 0) /**< \brief (PWM_IMR1) Counter Event on Channel 0 Interrupt Mask */ +#define PWM_IMR1_CHID1 (0x1u << 1) /**< \brief (PWM_IMR1) Counter Event on Channel 1 Interrupt Mask */ +#define PWM_IMR1_CHID2 (0x1u << 2) /**< \brief (PWM_IMR1) Counter Event on Channel 2 Interrupt Mask */ +#define PWM_IMR1_CHID3 (0x1u << 3) /**< \brief (PWM_IMR1) Counter Event on Channel 3 Interrupt Mask */ +#define PWM_IMR1_FCHID0 (0x1u << 16) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 0 Interrupt Mask */ +#define PWM_IMR1_FCHID1 (0x1u << 17) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 1 Interrupt Mask */ +#define PWM_IMR1_FCHID2 (0x1u << 18) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 2 Interrupt Mask */ +#define PWM_IMR1_FCHID3 (0x1u << 19) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 3 Interrupt Mask */ +/* -------- PWM_ISR1 : (PWM Offset: 0x1C) PWM Interrupt Status Register 1 -------- */ +#define PWM_ISR1_CHID0 (0x1u << 0) /**< \brief (PWM_ISR1) Counter Event on Channel 0 */ +#define PWM_ISR1_CHID1 (0x1u << 1) /**< \brief (PWM_ISR1) Counter Event on Channel 1 */ +#define PWM_ISR1_CHID2 (0x1u << 2) /**< \brief (PWM_ISR1) Counter Event on Channel 2 */ +#define PWM_ISR1_CHID3 (0x1u << 3) /**< \brief (PWM_ISR1) Counter Event on Channel 3 */ +#define PWM_ISR1_FCHID0 (0x1u << 16) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 0 */ +#define PWM_ISR1_FCHID1 (0x1u << 17) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 1 */ +#define PWM_ISR1_FCHID2 (0x1u << 18) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 2 */ +#define PWM_ISR1_FCHID3 (0x1u << 19) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 3 */ +/* -------- PWM_SCM : (PWM Offset: 0x20) PWM Sync Channels Mode Register -------- */ +#define PWM_SCM_SYNC0 (0x1u << 0) /**< \brief (PWM_SCM) Synchronous Channel 0 */ +#define PWM_SCM_SYNC1 (0x1u << 1) /**< \brief (PWM_SCM) Synchronous Channel 1 */ +#define PWM_SCM_SYNC2 (0x1u << 2) /**< \brief (PWM_SCM) Synchronous Channel 2 */ +#define PWM_SCM_SYNC3 (0x1u << 3) /**< \brief (PWM_SCM) Synchronous Channel 3 */ +#define PWM_SCM_UPDM_Pos 16 +#define PWM_SCM_UPDM_Msk (0x3u << PWM_SCM_UPDM_Pos) /**< \brief (PWM_SCM) Synchronous Channels Update Mode */ +#define PWM_SCM_UPDM_MODE0 (0x0u << 16) /**< \brief (PWM_SCM) Manual write of double buffer registers and manual update of synchronous channels */ +#define PWM_SCM_UPDM_MODE1 (0x1u << 16) /**< \brief (PWM_SCM) Manual write of double buffer registers and automatic update of synchronous channels */ +#define PWM_SCM_UPDM_MODE2 (0x2u << 16) /**< \brief (PWM_SCM) Automatic write of duty-cycle update registers by the PDC and automatic update of synchronous channels */ +#define PWM_SCM_PTRM (0x1u << 20) /**< \brief (PWM_SCM) PDC Transfer Request Mode */ +#define PWM_SCM_PTRCS_Pos 21 +#define PWM_SCM_PTRCS_Msk (0x7u << PWM_SCM_PTRCS_Pos) /**< \brief (PWM_SCM) PDC Transfer Request Comparison Selection */ +#define PWM_SCM_PTRCS(value) ((PWM_SCM_PTRCS_Msk & ((value) << PWM_SCM_PTRCS_Pos))) +/* -------- PWM_SCUC : (PWM Offset: 0x28) PWM Sync Channels Update Control Register -------- */ +#define PWM_SCUC_UPDULOCK (0x1u << 0) /**< \brief (PWM_SCUC) Synchronous Channels Update Unlock */ +/* -------- PWM_SCUP : (PWM Offset: 0x2C) PWM Sync Channels Update Period Register -------- */ +#define PWM_SCUP_UPR_Pos 0 +#define PWM_SCUP_UPR_Msk (0xfu << PWM_SCUP_UPR_Pos) /**< \brief (PWM_SCUP) Update Period */ +#define PWM_SCUP_UPR(value) ((PWM_SCUP_UPR_Msk & ((value) << PWM_SCUP_UPR_Pos))) +#define PWM_SCUP_UPRCNT_Pos 4 +#define PWM_SCUP_UPRCNT_Msk (0xfu << PWM_SCUP_UPRCNT_Pos) /**< \brief (PWM_SCUP) Update Period Counter */ +#define PWM_SCUP_UPRCNT(value) ((PWM_SCUP_UPRCNT_Msk & ((value) << PWM_SCUP_UPRCNT_Pos))) +/* -------- PWM_SCUPUPD : (PWM Offset: 0x30) PWM Sync Channels Update Period Update Register -------- */ +#define PWM_SCUPUPD_UPRUPD_Pos 0 +#define PWM_SCUPUPD_UPRUPD_Msk (0xfu << PWM_SCUPUPD_UPRUPD_Pos) /**< \brief (PWM_SCUPUPD) Update Period Update */ +#define PWM_SCUPUPD_UPRUPD(value) ((PWM_SCUPUPD_UPRUPD_Msk & ((value) << PWM_SCUPUPD_UPRUPD_Pos))) +/* -------- PWM_IER2 : (PWM Offset: 0x34) PWM Interrupt Enable Register 2 -------- */ +#define PWM_IER2_WRDY (0x1u << 0) /**< \brief (PWM_IER2) Write Ready for Synchronous Channels Update Interrupt Enable */ +#define PWM_IER2_ENDTX (0x1u << 1) /**< \brief (PWM_IER2) PDC End of TX Buffer Interrupt Enable */ +#define PWM_IER2_TXBUFE (0x1u << 2) /**< \brief (PWM_IER2) PDC TX Buffer Empty Interrupt Enable */ +#define PWM_IER2_UNRE (0x1u << 3) /**< \brief (PWM_IER2) Synchronous Channels Update Underrun Error Interrupt Enable */ +#define PWM_IER2_CMPM0 (0x1u << 8) /**< \brief (PWM_IER2) Comparison 0 Match Interrupt Enable */ +#define PWM_IER2_CMPM1 (0x1u << 9) /**< \brief (PWM_IER2) Comparison 1 Match Interrupt Enable */ +#define PWM_IER2_CMPM2 (0x1u << 10) /**< \brief (PWM_IER2) Comparison 2 Match Interrupt Enable */ +#define PWM_IER2_CMPM3 (0x1u << 11) /**< \brief (PWM_IER2) Comparison 3 Match Interrupt Enable */ +#define PWM_IER2_CMPM4 (0x1u << 12) /**< \brief (PWM_IER2) Comparison 4 Match Interrupt Enable */ +#define PWM_IER2_CMPM5 (0x1u << 13) /**< \brief (PWM_IER2) Comparison 5 Match Interrupt Enable */ +#define PWM_IER2_CMPM6 (0x1u << 14) /**< \brief (PWM_IER2) Comparison 6 Match Interrupt Enable */ +#define PWM_IER2_CMPM7 (0x1u << 15) /**< \brief (PWM_IER2) Comparison 7 Match Interrupt Enable */ +#define PWM_IER2_CMPU0 (0x1u << 16) /**< \brief (PWM_IER2) Comparison 0 Update Interrupt Enable */ +#define PWM_IER2_CMPU1 (0x1u << 17) /**< \brief (PWM_IER2) Comparison 1 Update Interrupt Enable */ +#define PWM_IER2_CMPU2 (0x1u << 18) /**< \brief (PWM_IER2) Comparison 2 Update Interrupt Enable */ +#define PWM_IER2_CMPU3 (0x1u << 19) /**< \brief (PWM_IER2) Comparison 3 Update Interrupt Enable */ +#define PWM_IER2_CMPU4 (0x1u << 20) /**< \brief (PWM_IER2) Comparison 4 Update Interrupt Enable */ +#define PWM_IER2_CMPU5 (0x1u << 21) /**< \brief (PWM_IER2) Comparison 5 Update Interrupt Enable */ +#define PWM_IER2_CMPU6 (0x1u << 22) /**< \brief (PWM_IER2) Comparison 6 Update Interrupt Enable */ +#define PWM_IER2_CMPU7 (0x1u << 23) /**< \brief (PWM_IER2) Comparison 7 Update Interrupt Enable */ +/* -------- PWM_IDR2 : (PWM Offset: 0x38) PWM Interrupt Disable Register 2 -------- */ +#define PWM_IDR2_WRDY (0x1u << 0) /**< \brief (PWM_IDR2) Write Ready for Synchronous Channels Update Interrupt Disable */ +#define PWM_IDR2_ENDTX (0x1u << 1) /**< \brief (PWM_IDR2) PDC End of TX Buffer Interrupt Disable */ +#define PWM_IDR2_TXBUFE (0x1u << 2) /**< \brief (PWM_IDR2) PDC TX Buffer Empty Interrupt Disable */ +#define PWM_IDR2_UNRE (0x1u << 3) /**< \brief (PWM_IDR2) Synchronous Channels Update Underrun Error Interrupt Disable */ +#define PWM_IDR2_CMPM0 (0x1u << 8) /**< \brief (PWM_IDR2) Comparison 0 Match Interrupt Disable */ +#define PWM_IDR2_CMPM1 (0x1u << 9) /**< \brief (PWM_IDR2) Comparison 1 Match Interrupt Disable */ +#define PWM_IDR2_CMPM2 (0x1u << 10) /**< \brief (PWM_IDR2) Comparison 2 Match Interrupt Disable */ +#define PWM_IDR2_CMPM3 (0x1u << 11) /**< \brief (PWM_IDR2) Comparison 3 Match Interrupt Disable */ +#define PWM_IDR2_CMPM4 (0x1u << 12) /**< \brief (PWM_IDR2) Comparison 4 Match Interrupt Disable */ +#define PWM_IDR2_CMPM5 (0x1u << 13) /**< \brief (PWM_IDR2) Comparison 5 Match Interrupt Disable */ +#define PWM_IDR2_CMPM6 (0x1u << 14) /**< \brief (PWM_IDR2) Comparison 6 Match Interrupt Disable */ +#define PWM_IDR2_CMPM7 (0x1u << 15) /**< \brief (PWM_IDR2) Comparison 7 Match Interrupt Disable */ +#define PWM_IDR2_CMPU0 (0x1u << 16) /**< \brief (PWM_IDR2) Comparison 0 Update Interrupt Disable */ +#define PWM_IDR2_CMPU1 (0x1u << 17) /**< \brief (PWM_IDR2) Comparison 1 Update Interrupt Disable */ +#define PWM_IDR2_CMPU2 (0x1u << 18) /**< \brief (PWM_IDR2) Comparison 2 Update Interrupt Disable */ +#define PWM_IDR2_CMPU3 (0x1u << 19) /**< \brief (PWM_IDR2) Comparison 3 Update Interrupt Disable */ +#define PWM_IDR2_CMPU4 (0x1u << 20) /**< \brief (PWM_IDR2) Comparison 4 Update Interrupt Disable */ +#define PWM_IDR2_CMPU5 (0x1u << 21) /**< \brief (PWM_IDR2) Comparison 5 Update Interrupt Disable */ +#define PWM_IDR2_CMPU6 (0x1u << 22) /**< \brief (PWM_IDR2) Comparison 6 Update Interrupt Disable */ +#define PWM_IDR2_CMPU7 (0x1u << 23) /**< \brief (PWM_IDR2) Comparison 7 Update Interrupt Disable */ +/* -------- PWM_IMR2 : (PWM Offset: 0x3C) PWM Interrupt Mask Register 2 -------- */ +#define PWM_IMR2_WRDY (0x1u << 0) /**< \brief (PWM_IMR2) Write Ready for Synchronous Channels Update Interrupt Mask */ +#define PWM_IMR2_ENDTX (0x1u << 1) /**< \brief (PWM_IMR2) PDC End of TX Buffer Interrupt Mask */ +#define PWM_IMR2_TXBUFE (0x1u << 2) /**< \brief (PWM_IMR2) PDC TX Buffer Empty Interrupt Mask */ +#define PWM_IMR2_UNRE (0x1u << 3) /**< \brief (PWM_IMR2) Synchronous Channels Update Underrun Error Interrupt Mask */ +#define PWM_IMR2_CMPM0 (0x1u << 8) /**< \brief (PWM_IMR2) Comparison 0 Match Interrupt Mask */ +#define PWM_IMR2_CMPM1 (0x1u << 9) /**< \brief (PWM_IMR2) Comparison 1 Match Interrupt Mask */ +#define PWM_IMR2_CMPM2 (0x1u << 10) /**< \brief (PWM_IMR2) Comparison 2 Match Interrupt Mask */ +#define PWM_IMR2_CMPM3 (0x1u << 11) /**< \brief (PWM_IMR2) Comparison 3 Match Interrupt Mask */ +#define PWM_IMR2_CMPM4 (0x1u << 12) /**< \brief (PWM_IMR2) Comparison 4 Match Interrupt Mask */ +#define PWM_IMR2_CMPM5 (0x1u << 13) /**< \brief (PWM_IMR2) Comparison 5 Match Interrupt Mask */ +#define PWM_IMR2_CMPM6 (0x1u << 14) /**< \brief (PWM_IMR2) Comparison 6 Match Interrupt Mask */ +#define PWM_IMR2_CMPM7 (0x1u << 15) /**< \brief (PWM_IMR2) Comparison 7 Match Interrupt Mask */ +#define PWM_IMR2_CMPU0 (0x1u << 16) /**< \brief (PWM_IMR2) Comparison 0 Update Interrupt Mask */ +#define PWM_IMR2_CMPU1 (0x1u << 17) /**< \brief (PWM_IMR2) Comparison 1 Update Interrupt Mask */ +#define PWM_IMR2_CMPU2 (0x1u << 18) /**< \brief (PWM_IMR2) Comparison 2 Update Interrupt Mask */ +#define PWM_IMR2_CMPU3 (0x1u << 19) /**< \brief (PWM_IMR2) Comparison 3 Update Interrupt Mask */ +#define PWM_IMR2_CMPU4 (0x1u << 20) /**< \brief (PWM_IMR2) Comparison 4 Update Interrupt Mask */ +#define PWM_IMR2_CMPU5 (0x1u << 21) /**< \brief (PWM_IMR2) Comparison 5 Update Interrupt Mask */ +#define PWM_IMR2_CMPU6 (0x1u << 22) /**< \brief (PWM_IMR2) Comparison 6 Update Interrupt Mask */ +#define PWM_IMR2_CMPU7 (0x1u << 23) /**< \brief (PWM_IMR2) Comparison 7 Update Interrupt Mask */ +/* -------- PWM_ISR2 : (PWM Offset: 0x40) PWM Interrupt Status Register 2 -------- */ +#define PWM_ISR2_WRDY (0x1u << 0) /**< \brief (PWM_ISR2) Write Ready for Synchronous Channels Update */ +#define PWM_ISR2_ENDTX (0x1u << 1) /**< \brief (PWM_ISR2) PDC End of TX Buffer */ +#define PWM_ISR2_TXBUFE (0x1u << 2) /**< \brief (PWM_ISR2) PDC TX Buffer Empty */ +#define PWM_ISR2_UNRE (0x1u << 3) /**< \brief (PWM_ISR2) Synchronous Channels Update Underrun Error */ +#define PWM_ISR2_CMPM0 (0x1u << 8) /**< \brief (PWM_ISR2) Comparison 0 Match */ +#define PWM_ISR2_CMPM1 (0x1u << 9) /**< \brief (PWM_ISR2) Comparison 1 Match */ +#define PWM_ISR2_CMPM2 (0x1u << 10) /**< \brief (PWM_ISR2) Comparison 2 Match */ +#define PWM_ISR2_CMPM3 (0x1u << 11) /**< \brief (PWM_ISR2) Comparison 3 Match */ +#define PWM_ISR2_CMPM4 (0x1u << 12) /**< \brief (PWM_ISR2) Comparison 4 Match */ +#define PWM_ISR2_CMPM5 (0x1u << 13) /**< \brief (PWM_ISR2) Comparison 5 Match */ +#define PWM_ISR2_CMPM6 (0x1u << 14) /**< \brief (PWM_ISR2) Comparison 6 Match */ +#define PWM_ISR2_CMPM7 (0x1u << 15) /**< \brief (PWM_ISR2) Comparison 7 Match */ +#define PWM_ISR2_CMPU0 (0x1u << 16) /**< \brief (PWM_ISR2) Comparison 0 Update */ +#define PWM_ISR2_CMPU1 (0x1u << 17) /**< \brief (PWM_ISR2) Comparison 1 Update */ +#define PWM_ISR2_CMPU2 (0x1u << 18) /**< \brief (PWM_ISR2) Comparison 2 Update */ +#define PWM_ISR2_CMPU3 (0x1u << 19) /**< \brief (PWM_ISR2) Comparison 3 Update */ +#define PWM_ISR2_CMPU4 (0x1u << 20) /**< \brief (PWM_ISR2) Comparison 4 Update */ +#define PWM_ISR2_CMPU5 (0x1u << 21) /**< \brief (PWM_ISR2) Comparison 5 Update */ +#define PWM_ISR2_CMPU6 (0x1u << 22) /**< \brief (PWM_ISR2) Comparison 6 Update */ +#define PWM_ISR2_CMPU7 (0x1u << 23) /**< \brief (PWM_ISR2) Comparison 7 Update */ +/* -------- PWM_OOV : (PWM Offset: 0x44) PWM Output Override Value Register -------- */ +#define PWM_OOV_OOVH0 (0x1u << 0) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 0 */ +#define PWM_OOV_OOVH1 (0x1u << 1) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 1 */ +#define PWM_OOV_OOVH2 (0x1u << 2) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 2 */ +#define PWM_OOV_OOVH3 (0x1u << 3) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 3 */ +#define PWM_OOV_OOVL0 (0x1u << 16) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 0 */ +#define PWM_OOV_OOVL1 (0x1u << 17) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 1 */ +#define PWM_OOV_OOVL2 (0x1u << 18) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 2 */ +#define PWM_OOV_OOVL3 (0x1u << 19) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 3 */ +/* -------- PWM_OS : (PWM Offset: 0x48) PWM Output Selection Register -------- */ +#define PWM_OS_OSH0 (0x1u << 0) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 0 */ +#define PWM_OS_OSH1 (0x1u << 1) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 1 */ +#define PWM_OS_OSH2 (0x1u << 2) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 2 */ +#define PWM_OS_OSH3 (0x1u << 3) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 3 */ +#define PWM_OS_OSL0 (0x1u << 16) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 0 */ +#define PWM_OS_OSL1 (0x1u << 17) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 1 */ +#define PWM_OS_OSL2 (0x1u << 18) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 2 */ +#define PWM_OS_OSL3 (0x1u << 19) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 3 */ +/* -------- PWM_OSS : (PWM Offset: 0x4C) PWM Output Selection Set Register -------- */ +#define PWM_OSS_OSSH0 (0x1u << 0) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 0 */ +#define PWM_OSS_OSSH1 (0x1u << 1) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 1 */ +#define PWM_OSS_OSSH2 (0x1u << 2) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 2 */ +#define PWM_OSS_OSSH3 (0x1u << 3) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 3 */ +#define PWM_OSS_OSSL0 (0x1u << 16) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 0 */ +#define PWM_OSS_OSSL1 (0x1u << 17) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 1 */ +#define PWM_OSS_OSSL2 (0x1u << 18) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 2 */ +#define PWM_OSS_OSSL3 (0x1u << 19) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 3 */ +/* -------- PWM_OSC : (PWM Offset: 0x50) PWM Output Selection Clear Register -------- */ +#define PWM_OSC_OSCH0 (0x1u << 0) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 0 */ +#define PWM_OSC_OSCH1 (0x1u << 1) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 1 */ +#define PWM_OSC_OSCH2 (0x1u << 2) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 2 */ +#define PWM_OSC_OSCH3 (0x1u << 3) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 3 */ +#define PWM_OSC_OSCL0 (0x1u << 16) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 0 */ +#define PWM_OSC_OSCL1 (0x1u << 17) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 1 */ +#define PWM_OSC_OSCL2 (0x1u << 18) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 2 */ +#define PWM_OSC_OSCL3 (0x1u << 19) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 3 */ +/* -------- PWM_OSSUPD : (PWM Offset: 0x54) PWM Output Selection Set Update Register -------- */ +#define PWM_OSSUPD_OSSUPH0 (0x1u << 0) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 0 */ +#define PWM_OSSUPD_OSSUPH1 (0x1u << 1) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 1 */ +#define PWM_OSSUPD_OSSUPH2 (0x1u << 2) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 2 */ +#define PWM_OSSUPD_OSSUPH3 (0x1u << 3) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 3 */ +#define PWM_OSSUPD_OSSUPL0 (0x1u << 16) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 0 */ +#define PWM_OSSUPD_OSSUPL1 (0x1u << 17) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 1 */ +#define PWM_OSSUPD_OSSUPL2 (0x1u << 18) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 2 */ +#define PWM_OSSUPD_OSSUPL3 (0x1u << 19) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 3 */ +/* -------- PWM_OSCUPD : (PWM Offset: 0x58) PWM Output Selection Clear Update Register -------- */ +#define PWM_OSCUPD_OSCUPH0 (0x1u << 0) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 0 */ +#define PWM_OSCUPD_OSCUPH1 (0x1u << 1) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 1 */ +#define PWM_OSCUPD_OSCUPH2 (0x1u << 2) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 2 */ +#define PWM_OSCUPD_OSCUPH3 (0x1u << 3) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 3 */ +#define PWM_OSCUPD_OSCUPL0 (0x1u << 16) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 0 */ +#define PWM_OSCUPD_OSCUPL1 (0x1u << 17) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 1 */ +#define PWM_OSCUPD_OSCUPL2 (0x1u << 18) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 2 */ +#define PWM_OSCUPD_OSCUPL3 (0x1u << 19) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 3 */ +/* -------- PWM_FMR : (PWM Offset: 0x5C) PWM Fault Mode Register -------- */ +#define PWM_FMR_FPOL_Pos 0 +#define PWM_FMR_FPOL_Msk (0xffu << PWM_FMR_FPOL_Pos) /**< \brief (PWM_FMR) Fault Polarity (fault input bit varies from 0 to 5) */ +#define PWM_FMR_FPOL(value) ((PWM_FMR_FPOL_Msk & ((value) << PWM_FMR_FPOL_Pos))) +#define PWM_FMR_FMOD_Pos 8 +#define PWM_FMR_FMOD_Msk (0xffu << PWM_FMR_FMOD_Pos) /**< \brief (PWM_FMR) Fault Activation Mode (fault input bit varies from 0 to 5) */ +#define PWM_FMR_FMOD(value) ((PWM_FMR_FMOD_Msk & ((value) << PWM_FMR_FMOD_Pos))) +#define PWM_FMR_FFIL_Pos 16 +#define PWM_FMR_FFIL_Msk (0xffu << PWM_FMR_FFIL_Pos) /**< \brief (PWM_FMR) Fault Filtering (fault input bit varies from 0 to 5) */ +#define PWM_FMR_FFIL(value) ((PWM_FMR_FFIL_Msk & ((value) << PWM_FMR_FFIL_Pos))) +/* -------- PWM_FSR : (PWM Offset: 0x60) PWM Fault Status Register -------- */ +#define PWM_FSR_FIV_Pos 0 +#define PWM_FSR_FIV_Msk (0xffu << PWM_FSR_FIV_Pos) /**< \brief (PWM_FSR) Fault Input Value (fault input bit varies from 0 to 5) */ +#define PWM_FSR_FS_Pos 8 +#define PWM_FSR_FS_Msk (0xffu << PWM_FSR_FS_Pos) /**< \brief (PWM_FSR) Fault Status (fault input bit varies from 0 to 5) */ +/* -------- PWM_FCR : (PWM Offset: 0x64) PWM Fault Clear Register -------- */ +#define PWM_FCR_FCLR_Pos 0 +#define PWM_FCR_FCLR_Msk (0xffu << PWM_FCR_FCLR_Pos) /**< \brief (PWM_FCR) Fault Clear (fault input bit varies from 0 to 5) */ +#define PWM_FCR_FCLR(value) ((PWM_FCR_FCLR_Msk & ((value) << PWM_FCR_FCLR_Pos))) +/* -------- PWM_FPV : (PWM Offset: 0x68) PWM Fault Protection Value Register -------- */ +#define PWM_FPV_FPVH0 (0x1u << 0) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 0 */ +#define PWM_FPV_FPVH1 (0x1u << 1) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 1 */ +#define PWM_FPV_FPVH2 (0x1u << 2) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 2 */ +#define PWM_FPV_FPVH3 (0x1u << 3) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 3 */ +#define PWM_FPV_FPVL0 (0x1u << 16) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 0 */ +#define PWM_FPV_FPVL1 (0x1u << 17) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 1 */ +#define PWM_FPV_FPVL2 (0x1u << 18) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 2 */ +#define PWM_FPV_FPVL3 (0x1u << 19) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 3 */ +/* -------- PWM_FPE : (PWM Offset: 0x6C) PWM Fault Protection Enable Register -------- */ +#define PWM_FPE_FPE0_Pos 0 +#define PWM_FPE_FPE0_Msk (0xffu << PWM_FPE_FPE0_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 0 (fault input bit varies from 0 to 5) */ +#define PWM_FPE_FPE0(value) ((PWM_FPE_FPE0_Msk & ((value) << PWM_FPE_FPE0_Pos))) +#define PWM_FPE_FPE1_Pos 8 +#define PWM_FPE_FPE1_Msk (0xffu << PWM_FPE_FPE1_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 1 (fault input bit varies from 0 to 5) */ +#define PWM_FPE_FPE1(value) ((PWM_FPE_FPE1_Msk & ((value) << PWM_FPE_FPE1_Pos))) +#define PWM_FPE_FPE2_Pos 16 +#define PWM_FPE_FPE2_Msk (0xffu << PWM_FPE_FPE2_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 2 (fault input bit varies from 0 to 5) */ +#define PWM_FPE_FPE2(value) ((PWM_FPE_FPE2_Msk & ((value) << PWM_FPE_FPE2_Pos))) +#define PWM_FPE_FPE3_Pos 24 +#define PWM_FPE_FPE3_Msk (0xffu << PWM_FPE_FPE3_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 3 (fault input bit varies from 0 to 5) */ +#define PWM_FPE_FPE3(value) ((PWM_FPE_FPE3_Msk & ((value) << PWM_FPE_FPE3_Pos))) +/* -------- PWM_ELMR[2] : (PWM Offset: 0x7C) PWM Event Line 0 Mode Register -------- */ +#define PWM_ELMR_CSEL0 (0x1u << 0) /**< \brief (PWM_ELMR[2]) Comparison 0 Selection */ +#define PWM_ELMR_CSEL1 (0x1u << 1) /**< \brief (PWM_ELMR[2]) Comparison 1 Selection */ +#define PWM_ELMR_CSEL2 (0x1u << 2) /**< \brief (PWM_ELMR[2]) Comparison 2 Selection */ +#define PWM_ELMR_CSEL3 (0x1u << 3) /**< \brief (PWM_ELMR[2]) Comparison 3 Selection */ +#define PWM_ELMR_CSEL4 (0x1u << 4) /**< \brief (PWM_ELMR[2]) Comparison 4 Selection */ +#define PWM_ELMR_CSEL5 (0x1u << 5) /**< \brief (PWM_ELMR[2]) Comparison 5 Selection */ +#define PWM_ELMR_CSEL6 (0x1u << 6) /**< \brief (PWM_ELMR[2]) Comparison 6 Selection */ +#define PWM_ELMR_CSEL7 (0x1u << 7) /**< \brief (PWM_ELMR[2]) Comparison 7 Selection */ +/* -------- PWM_SMMR : (PWM Offset: 0xB0) PWM Stepper Motor Mode Register -------- */ +#define PWM_SMMR_GCEN0 (0x1u << 0) /**< \brief (PWM_SMMR) Gray Count ENable */ +#define PWM_SMMR_GCEN1 (0x1u << 1) /**< \brief (PWM_SMMR) Gray Count ENable */ +#define PWM_SMMR_DOWN0 (0x1u << 16) /**< \brief (PWM_SMMR) DOWN Count */ +#define PWM_SMMR_DOWN1 (0x1u << 17) /**< \brief (PWM_SMMR) DOWN Count */ +/* -------- PWM_WPCR : (PWM Offset: 0xE4) PWM Write Protect Control Register -------- */ +#define PWM_WPCR_WPCMD_Pos 0 +#define PWM_WPCR_WPCMD_Msk (0x3u << PWM_WPCR_WPCMD_Pos) /**< \brief (PWM_WPCR) Write Protect Command */ +#define PWM_WPCR_WPCMD(value) ((PWM_WPCR_WPCMD_Msk & ((value) << PWM_WPCR_WPCMD_Pos))) +#define PWM_WPCR_WPRG0 (0x1u << 2) /**< \brief (PWM_WPCR) Write Protect Register Group 0 */ +#define PWM_WPCR_WPRG1 (0x1u << 3) /**< \brief (PWM_WPCR) Write Protect Register Group 1 */ +#define PWM_WPCR_WPRG2 (0x1u << 4) /**< \brief (PWM_WPCR) Write Protect Register Group 2 */ +#define PWM_WPCR_WPRG3 (0x1u << 5) /**< \brief (PWM_WPCR) Write Protect Register Group 3 */ +#define PWM_WPCR_WPRG4 (0x1u << 6) /**< \brief (PWM_WPCR) Write Protect Register Group 4 */ +#define PWM_WPCR_WPRG5 (0x1u << 7) /**< \brief (PWM_WPCR) Write Protect Register Group 5 */ +#define PWM_WPCR_WPKEY_Pos 8 +#define PWM_WPCR_WPKEY_Msk (0xffffffu << PWM_WPCR_WPKEY_Pos) /**< \brief (PWM_WPCR) Write Protect Key */ +#define PWM_WPCR_WPKEY(value) ((PWM_WPCR_WPKEY_Msk & ((value) << PWM_WPCR_WPKEY_Pos))) +/* -------- PWM_WPSR : (PWM Offset: 0xE8) PWM Write Protect Status Register -------- */ +#define PWM_WPSR_WPSWS0 (0x1u << 0) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS1 (0x1u << 1) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS2 (0x1u << 2) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS3 (0x1u << 3) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS4 (0x1u << 4) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS5 (0x1u << 5) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPVS (0x1u << 7) /**< \brief (PWM_WPSR) Write Protect Violation Status */ +#define PWM_WPSR_WPHWS0 (0x1u << 8) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS1 (0x1u << 9) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS2 (0x1u << 10) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS3 (0x1u << 11) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS4 (0x1u << 12) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS5 (0x1u << 13) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPVSRC_Pos 16 +#define PWM_WPSR_WPVSRC_Msk (0xffffu << PWM_WPSR_WPVSRC_Pos) /**< \brief (PWM_WPSR) Write Protect Violation Source */ +/* -------- PWM_RPR : (PWM Offset: 0x100) Receive Pointer Register -------- */ +#define PWM_RPR_RXPTR_Pos 0 +#define PWM_RPR_RXPTR_Msk (0xffffffffu << PWM_RPR_RXPTR_Pos) /**< \brief (PWM_RPR) Receive Pointer Register */ +#define PWM_RPR_RXPTR(value) ((PWM_RPR_RXPTR_Msk & ((value) << PWM_RPR_RXPTR_Pos))) +/* -------- PWM_RCR : (PWM Offset: 0x104) Receive Counter Register -------- */ +#define PWM_RCR_RXCTR_Pos 0 +#define PWM_RCR_RXCTR_Msk (0xffffu << PWM_RCR_RXCTR_Pos) /**< \brief (PWM_RCR) Receive Counter Register */ +#define PWM_RCR_RXCTR(value) ((PWM_RCR_RXCTR_Msk & ((value) << PWM_RCR_RXCTR_Pos))) +/* -------- PWM_TPR : (PWM Offset: 0x108) Transmit Pointer Register -------- */ +#define PWM_TPR_TXPTR_Pos 0 +#define PWM_TPR_TXPTR_Msk (0xffffffffu << PWM_TPR_TXPTR_Pos) /**< \brief (PWM_TPR) Transmit Counter Register */ +#define PWM_TPR_TXPTR(value) ((PWM_TPR_TXPTR_Msk & ((value) << PWM_TPR_TXPTR_Pos))) +/* -------- PWM_TCR : (PWM Offset: 0x10C) Transmit Counter Register -------- */ +#define PWM_TCR_TXCTR_Pos 0 +#define PWM_TCR_TXCTR_Msk (0xffffu << PWM_TCR_TXCTR_Pos) /**< \brief (PWM_TCR) Transmit Counter Register */ +#define PWM_TCR_TXCTR(value) ((PWM_TCR_TXCTR_Msk & ((value) << PWM_TCR_TXCTR_Pos))) +/* -------- PWM_RNPR : (PWM Offset: 0x110) Receive Next Pointer Register -------- */ +#define PWM_RNPR_RXNPTR_Pos 0 +#define PWM_RNPR_RXNPTR_Msk (0xffffffffu << PWM_RNPR_RXNPTR_Pos) /**< \brief (PWM_RNPR) Receive Next Pointer */ +#define PWM_RNPR_RXNPTR(value) ((PWM_RNPR_RXNPTR_Msk & ((value) << PWM_RNPR_RXNPTR_Pos))) +/* -------- PWM_RNCR : (PWM Offset: 0x114) Receive Next Counter Register -------- */ +#define PWM_RNCR_RXNCTR_Pos 0 +#define PWM_RNCR_RXNCTR_Msk (0xffffu << PWM_RNCR_RXNCTR_Pos) /**< \brief (PWM_RNCR) Receive Next Counter */ +#define PWM_RNCR_RXNCTR(value) ((PWM_RNCR_RXNCTR_Msk & ((value) << PWM_RNCR_RXNCTR_Pos))) +/* -------- PWM_TNPR : (PWM Offset: 0x118) Transmit Next Pointer Register -------- */ +#define PWM_TNPR_TXNPTR_Pos 0 +#define PWM_TNPR_TXNPTR_Msk (0xffffffffu << PWM_TNPR_TXNPTR_Pos) /**< \brief (PWM_TNPR) Transmit Next Pointer */ +#define PWM_TNPR_TXNPTR(value) ((PWM_TNPR_TXNPTR_Msk & ((value) << PWM_TNPR_TXNPTR_Pos))) +/* -------- PWM_TNCR : (PWM Offset: 0x11C) Transmit Next Counter Register -------- */ +#define PWM_TNCR_TXNCTR_Pos 0 +#define PWM_TNCR_TXNCTR_Msk (0xffffu << PWM_TNCR_TXNCTR_Pos) /**< \brief (PWM_TNCR) Transmit Counter Next */ +#define PWM_TNCR_TXNCTR(value) ((PWM_TNCR_TXNCTR_Msk & ((value) << PWM_TNCR_TXNCTR_Pos))) +/* -------- PWM_PTCR : (PWM Offset: 0x120) Transfer Control Register -------- */ +#define PWM_PTCR_RXTEN (0x1u << 0) /**< \brief (PWM_PTCR) Receiver Transfer Enable */ +#define PWM_PTCR_RXTDIS (0x1u << 1) /**< \brief (PWM_PTCR) Receiver Transfer Disable */ +#define PWM_PTCR_TXTEN (0x1u << 8) /**< \brief (PWM_PTCR) Transmitter Transfer Enable */ +#define PWM_PTCR_TXTDIS (0x1u << 9) /**< \brief (PWM_PTCR) Transmitter Transfer Disable */ +/* -------- PWM_PTSR : (PWM Offset: 0x124) Transfer Status Register -------- */ +#define PWM_PTSR_RXTEN (0x1u << 0) /**< \brief (PWM_PTSR) Receiver Transfer Enable */ +#define PWM_PTSR_TXTEN (0x1u << 8) /**< \brief (PWM_PTSR) Transmitter Transfer Enable */ +/* -------- PWM_CMPV : (PWM Offset: N/A) PWM Comparison 0 Value Register -------- */ +#define PWM_CMPV_CV_Pos 0 +#define PWM_CMPV_CV_Msk (0xffffffu << PWM_CMPV_CV_Pos) /**< \brief (PWM_CMPV) Comparison x Value */ +#define PWM_CMPV_CV(value) ((PWM_CMPV_CV_Msk & ((value) << PWM_CMPV_CV_Pos))) +#define PWM_CMPV_CVM (0x1u << 24) /**< \brief (PWM_CMPV) Comparison x Value Mode */ +/* -------- PWM_CMPVUPD : (PWM Offset: N/A) PWM Comparison 0 Value Update Register -------- */ +#define PWM_CMPVUPD_CVUPD_Pos 0 +#define PWM_CMPVUPD_CVUPD_Msk (0xffffffu << PWM_CMPVUPD_CVUPD_Pos) /**< \brief (PWM_CMPVUPD) Comparison x Value Update */ +#define PWM_CMPVUPD_CVUPD(value) ((PWM_CMPVUPD_CVUPD_Msk & ((value) << PWM_CMPVUPD_CVUPD_Pos))) +#define PWM_CMPVUPD_CVMUPD (0x1u << 24) /**< \brief (PWM_CMPVUPD) Comparison x Value Mode Update */ +/* -------- PWM_CMPM : (PWM Offset: N/A) PWM Comparison 0 Mode Register -------- */ +#define PWM_CMPM_CEN (0x1u << 0) /**< \brief (PWM_CMPM) Comparison x Enable */ +#define PWM_CMPM_CTR_Pos 4 +#define PWM_CMPM_CTR_Msk (0xfu << PWM_CMPM_CTR_Pos) /**< \brief (PWM_CMPM) Comparison x Trigger */ +#define PWM_CMPM_CTR(value) ((PWM_CMPM_CTR_Msk & ((value) << PWM_CMPM_CTR_Pos))) +#define PWM_CMPM_CPR_Pos 8 +#define PWM_CMPM_CPR_Msk (0xfu << PWM_CMPM_CPR_Pos) /**< \brief (PWM_CMPM) Comparison x Period */ +#define PWM_CMPM_CPR(value) ((PWM_CMPM_CPR_Msk & ((value) << PWM_CMPM_CPR_Pos))) +#define PWM_CMPM_CPRCNT_Pos 12 +#define PWM_CMPM_CPRCNT_Msk (0xfu << PWM_CMPM_CPRCNT_Pos) /**< \brief (PWM_CMPM) Comparison x Period Counter */ +#define PWM_CMPM_CPRCNT(value) ((PWM_CMPM_CPRCNT_Msk & ((value) << PWM_CMPM_CPRCNT_Pos))) +#define PWM_CMPM_CUPR_Pos 16 +#define PWM_CMPM_CUPR_Msk (0xfu << PWM_CMPM_CUPR_Pos) /**< \brief (PWM_CMPM) Comparison x Update Period */ +#define PWM_CMPM_CUPR(value) ((PWM_CMPM_CUPR_Msk & ((value) << PWM_CMPM_CUPR_Pos))) +#define PWM_CMPM_CUPRCNT_Pos 20 +#define PWM_CMPM_CUPRCNT_Msk (0xfu << PWM_CMPM_CUPRCNT_Pos) /**< \brief (PWM_CMPM) Comparison x Update Period Counter */ +#define PWM_CMPM_CUPRCNT(value) ((PWM_CMPM_CUPRCNT_Msk & ((value) << PWM_CMPM_CUPRCNT_Pos))) +/* -------- PWM_CMPMUPD : (PWM Offset: N/A) PWM Comparison 0 Mode Update Register -------- */ +#define PWM_CMPMUPD_CENUPD (0x1u << 0) /**< \brief (PWM_CMPMUPD) Comparison x Enable Update */ +#define PWM_CMPMUPD_CTRUPD_Pos 4 +#define PWM_CMPMUPD_CTRUPD_Msk (0xfu << PWM_CMPMUPD_CTRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Trigger Update */ +#define PWM_CMPMUPD_CTRUPD(value) ((PWM_CMPMUPD_CTRUPD_Msk & ((value) << PWM_CMPMUPD_CTRUPD_Pos))) +#define PWM_CMPMUPD_CPRUPD_Pos 8 +#define PWM_CMPMUPD_CPRUPD_Msk (0xfu << PWM_CMPMUPD_CPRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Period Update */ +#define PWM_CMPMUPD_CPRUPD(value) ((PWM_CMPMUPD_CPRUPD_Msk & ((value) << PWM_CMPMUPD_CPRUPD_Pos))) +#define PWM_CMPMUPD_CUPRUPD_Pos 16 +#define PWM_CMPMUPD_CUPRUPD_Msk (0xfu << PWM_CMPMUPD_CUPRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Update Period Update */ +#define PWM_CMPMUPD_CUPRUPD(value) ((PWM_CMPMUPD_CUPRUPD_Msk & ((value) << PWM_CMPMUPD_CUPRUPD_Pos))) +/* -------- PWM_CMR : (PWM Offset: N/A) PWM Channel Mode Register -------- */ +#define PWM_CMR_CPRE_Pos 0 +#define PWM_CMR_CPRE_Msk (0xfu << PWM_CMR_CPRE_Pos) /**< \brief (PWM_CMR) Channel Pre-scaler */ +#define PWM_CMR_CPRE_MCK (0x0u << 0) /**< \brief (PWM_CMR) Master clock */ +#define PWM_CMR_CPRE_MCK_DIV_2 (0x1u << 0) /**< \brief (PWM_CMR) Master clock/2 */ +#define PWM_CMR_CPRE_MCK_DIV_4 (0x2u << 0) /**< \brief (PWM_CMR) Master clock/4 */ +#define PWM_CMR_CPRE_MCK_DIV_8 (0x3u << 0) /**< \brief (PWM_CMR) Master clock/8 */ +#define PWM_CMR_CPRE_MCK_DIV_16 (0x4u << 0) /**< \brief (PWM_CMR) Master clock/16 */ +#define PWM_CMR_CPRE_MCK_DIV_32 (0x5u << 0) /**< \brief (PWM_CMR) Master clock/32 */ +#define PWM_CMR_CPRE_MCK_DIV_64 (0x6u << 0) /**< \brief (PWM_CMR) Master clock/64 */ +#define PWM_CMR_CPRE_MCK_DIV_128 (0x7u << 0) /**< \brief (PWM_CMR) Master clock/128 */ +#define PWM_CMR_CPRE_MCK_DIV_256 (0x8u << 0) /**< \brief (PWM_CMR) Master clock/256 */ +#define PWM_CMR_CPRE_MCK_DIV_512 (0x9u << 0) /**< \brief (PWM_CMR) Master clock/512 */ +#define PWM_CMR_CPRE_MCK_DIV_1024 (0xAu << 0) /**< \brief (PWM_CMR) Master clock/1024 */ +#define PWM_CMR_CPRE_CLKA (0xBu << 0) /**< \brief (PWM_CMR) Clock A */ +#define PWM_CMR_CPRE_CLKB (0xCu << 0) /**< \brief (PWM_CMR) Clock B */ +#define PWM_CMR_CALG (0x1u << 8) /**< \brief (PWM_CMR) Channel Alignment */ +#define PWM_CMR_CPOL (0x1u << 9) /**< \brief (PWM_CMR) Channel Polarity */ +#define PWM_CMR_CES (0x1u << 10) /**< \brief (PWM_CMR) Counter Event Selection */ +#define PWM_CMR_DTE (0x1u << 16) /**< \brief (PWM_CMR) Dead-Time Generator Enable */ +#define PWM_CMR_DTHI (0x1u << 17) /**< \brief (PWM_CMR) Dead-Time PWMHx Output Inverted */ +#define PWM_CMR_DTLI (0x1u << 18) /**< \brief (PWM_CMR) Dead-Time PWMLx Output Inverted */ +/* -------- PWM_CDTY : (PWM Offset: N/A) PWM Channel Duty Cycle Register -------- */ +#define PWM_CDTY_CDTY_Pos 0 +#define PWM_CDTY_CDTY_Msk (0xffffffu << PWM_CDTY_CDTY_Pos) /**< \brief (PWM_CDTY) Channel Duty-Cycle */ +#define PWM_CDTY_CDTY(value) ((PWM_CDTY_CDTY_Msk & ((value) << PWM_CDTY_CDTY_Pos))) +/* -------- PWM_CDTYUPD : (PWM Offset: N/A) PWM Channel Duty Cycle Update Register -------- */ +#define PWM_CDTYUPD_CDTYUPD_Pos 0 +#define PWM_CDTYUPD_CDTYUPD_Msk (0xffffffu << PWM_CDTYUPD_CDTYUPD_Pos) /**< \brief (PWM_CDTYUPD) Channel Duty-Cycle Update */ +#define PWM_CDTYUPD_CDTYUPD(value) ((PWM_CDTYUPD_CDTYUPD_Msk & ((value) << PWM_CDTYUPD_CDTYUPD_Pos))) +/* -------- PWM_CPRD : (PWM Offset: N/A) PWM Channel Period Register -------- */ +#define PWM_CPRD_CPRD_Pos 0 +#define PWM_CPRD_CPRD_Msk (0xffffffu << PWM_CPRD_CPRD_Pos) /**< \brief (PWM_CPRD) Channel Period */ +#define PWM_CPRD_CPRD(value) ((PWM_CPRD_CPRD_Msk & ((value) << PWM_CPRD_CPRD_Pos))) +/* -------- PWM_CPRDUPD : (PWM Offset: N/A) PWM Channel Period Update Register -------- */ +#define PWM_CPRDUPD_CPRDUPD_Pos 0 +#define PWM_CPRDUPD_CPRDUPD_Msk (0xffffffu << PWM_CPRDUPD_CPRDUPD_Pos) /**< \brief (PWM_CPRDUPD) Channel Period Update */ +#define PWM_CPRDUPD_CPRDUPD(value) ((PWM_CPRDUPD_CPRDUPD_Msk & ((value) << PWM_CPRDUPD_CPRDUPD_Pos))) +/* -------- PWM_CCNT : (PWM Offset: N/A) PWM Channel Counter Register -------- */ +#define PWM_CCNT_CNT_Pos 0 +#define PWM_CCNT_CNT_Msk (0xffffffu << PWM_CCNT_CNT_Pos) /**< \brief (PWM_CCNT) Channel Counter Register */ +/* -------- PWM_DT : (PWM Offset: N/A) PWM Channel Dead Time Register -------- */ +#define PWM_DT_DTH_Pos 0 +#define PWM_DT_DTH_Msk (0xffffu << PWM_DT_DTH_Pos) /**< \brief (PWM_DT) Dead-Time Value for PWMHx Output */ +#define PWM_DT_DTH(value) ((PWM_DT_DTH_Msk & ((value) << PWM_DT_DTH_Pos))) +#define PWM_DT_DTL_Pos 16 +#define PWM_DT_DTL_Msk (0xffffu << PWM_DT_DTL_Pos) /**< \brief (PWM_DT) Dead-Time Value for PWMLx Output */ +#define PWM_DT_DTL(value) ((PWM_DT_DTL_Msk & ((value) << PWM_DT_DTL_Pos))) +/* -------- PWM_DTUPD : (PWM Offset: N/A) PWM Channel Dead Time Update Register -------- */ +#define PWM_DTUPD_DTHUPD_Pos 0 +#define PWM_DTUPD_DTHUPD_Msk (0xffffu << PWM_DTUPD_DTHUPD_Pos) /**< \brief (PWM_DTUPD) Dead-Time Value Update for PWMHx Output */ +#define PWM_DTUPD_DTHUPD(value) ((PWM_DTUPD_DTHUPD_Msk & ((value) << PWM_DTUPD_DTHUPD_Pos))) +#define PWM_DTUPD_DTLUPD_Pos 16 +#define PWM_DTUPD_DTLUPD_Msk (0xffffu << PWM_DTUPD_DTLUPD_Pos) /**< \brief (PWM_DTUPD) Dead-Time Value Update for PWMLx Output */ +#define PWM_DTUPD_DTLUPD(value) ((PWM_DTUPD_DTLUPD_Msk & ((value) << PWM_DTUPD_DTLUPD_Pos))) + +/*@}*/ + + +#endif /* _SAM3S8_PWM_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_rstc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_rstc.h new file mode 100644 index 000000000..17af99e3e --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_rstc.h @@ -0,0 +1,73 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_RSTC_COMPONENT_ +#define _SAM3S8_RSTC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Reset Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_RSTC Reset Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Rstc hardware registers */ +typedef struct { + WoReg RSTC_CR; /**< \brief (Rstc Offset: 0x00) Control Register */ + RoReg RSTC_SR; /**< \brief (Rstc Offset: 0x04) Status Register */ + RwReg RSTC_MR; /**< \brief (Rstc Offset: 0x08) Mode Register */ +} Rstc; +#endif /* __ASSEMBLY__ */ +/* -------- RSTC_CR : (RSTC Offset: 0x00) Control Register -------- */ +#define RSTC_CR_PROCRST (0x1u << 0) /**< \brief (RSTC_CR) Processor Reset */ +#define RSTC_CR_PERRST (0x1u << 2) /**< \brief (RSTC_CR) Peripheral Reset */ +#define RSTC_CR_EXTRST (0x1u << 3) /**< \brief (RSTC_CR) External Reset */ +#define RSTC_CR_KEY_Pos 24 +#define RSTC_CR_KEY_Msk (0xffu << RSTC_CR_KEY_Pos) /**< \brief (RSTC_CR) Password */ +#define RSTC_CR_KEY(value) ((RSTC_CR_KEY_Msk & ((value) << RSTC_CR_KEY_Pos))) +/* -------- RSTC_SR : (RSTC Offset: 0x04) Status Register -------- */ +#define RSTC_SR_URSTS (0x1u << 0) /**< \brief (RSTC_SR) User Reset Status */ +#define RSTC_SR_RSTTYP_Pos 8 +#define RSTC_SR_RSTTYP_Msk (0x7u << RSTC_SR_RSTTYP_Pos) /**< \brief (RSTC_SR) Reset Type */ +#define RSTC_SR_NRSTL (0x1u << 16) /**< \brief (RSTC_SR) NRST Pin Level */ +#define RSTC_SR_SRCMP (0x1u << 17) /**< \brief (RSTC_SR) Software Reset Command in Progress */ +/* -------- RSTC_MR : (RSTC Offset: 0x08) Mode Register -------- */ +#define RSTC_MR_URSTEN (0x1u << 0) /**< \brief (RSTC_MR) User Reset Enable */ +#define RSTC_MR_URSTIEN (0x1u << 4) /**< \brief (RSTC_MR) User Reset Interrupt Enable */ +#define RSTC_MR_ERSTL_Pos 8 +#define RSTC_MR_ERSTL_Msk (0xfu << RSTC_MR_ERSTL_Pos) /**< \brief (RSTC_MR) External Reset Length */ +#define RSTC_MR_ERSTL(value) ((RSTC_MR_ERSTL_Msk & ((value) << RSTC_MR_ERSTL_Pos))) +#define RSTC_MR_KEY_Pos 24 +#define RSTC_MR_KEY_Msk (0xffu << RSTC_MR_KEY_Pos) /**< \brief (RSTC_MR) Password */ +#define RSTC_MR_KEY(value) ((RSTC_MR_KEY_Msk & ((value) << RSTC_MR_KEY_Pos))) + +/*@}*/ + + +#endif /* _SAM3S8_RSTC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_rtc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_rtc.h new file mode 100644 index 000000000..285d88cda --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_rtc.h @@ -0,0 +1,203 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_RTC_COMPONENT_ +#define _SAM3S8_RTC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Real-time Clock */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_RTC Real-time Clock */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Rtc hardware registers */ +typedef struct { + RwReg RTC_CR; /**< \brief (Rtc Offset: 0x00) Control Register */ + RwReg RTC_MR; /**< \brief (Rtc Offset: 0x04) Mode Register */ + RwReg RTC_TIMR; /**< \brief (Rtc Offset: 0x08) Time Register */ + RwReg RTC_CALR; /**< \brief (Rtc Offset: 0x0C) Calendar Register */ + RwReg RTC_TIMALR; /**< \brief (Rtc Offset: 0x10) Time Alarm Register */ + RwReg RTC_CALALR; /**< \brief (Rtc Offset: 0x14) Calendar Alarm Register */ + RoReg RTC_SR; /**< \brief (Rtc Offset: 0x18) Status Register */ + WoReg RTC_SCCR; /**< \brief (Rtc Offset: 0x1C) Status Clear Command Register */ + WoReg RTC_IER; /**< \brief (Rtc Offset: 0x20) Interrupt Enable Register */ + WoReg RTC_IDR; /**< \brief (Rtc Offset: 0x24) Interrupt Disable Register */ + RoReg RTC_IMR; /**< \brief (Rtc Offset: 0x28) Interrupt Mask Register */ + RoReg RTC_VER; /**< \brief (Rtc Offset: 0x2C) Valid Entry Register */ +} Rtc; +#endif /* __ASSEMBLY__ */ +/* -------- RTC_CR : (RTC Offset: 0x00) Control Register -------- */ +#define RTC_CR_UPDTIM (0x1u << 0) /**< \brief (RTC_CR) Update Request Time Register */ +#define RTC_CR_UPDCAL (0x1u << 1) /**< \brief (RTC_CR) Update Request Calendar Register */ +#define RTC_CR_TIMEVSEL_Pos 8 +#define RTC_CR_TIMEVSEL_Msk (0x3u << RTC_CR_TIMEVSEL_Pos) /**< \brief (RTC_CR) Time Event Selection */ +#define RTC_CR_TIMEVSEL_MINUTE (0x0u << 8) /**< \brief (RTC_CR) Minute change */ +#define RTC_CR_TIMEVSEL_HOUR (0x1u << 8) /**< \brief (RTC_CR) Hour change */ +#define RTC_CR_TIMEVSEL_MIDNIGHT (0x2u << 8) /**< \brief (RTC_CR) Every day at midnight */ +#define RTC_CR_TIMEVSEL_NOON (0x3u << 8) /**< \brief (RTC_CR) Every day at noon */ +#define RTC_CR_CALEVSEL_Pos 16 +#define RTC_CR_CALEVSEL_Msk (0x3u << RTC_CR_CALEVSEL_Pos) /**< \brief (RTC_CR) Calendar Event Selection */ +#define RTC_CR_CALEVSEL_WEEK (0x0u << 16) /**< \brief (RTC_CR) Week change (every Monday at time 00:00:00) */ +#define RTC_CR_CALEVSEL_MONTH (0x1u << 16) /**< \brief (RTC_CR) Month change (every 01 of each month at time 00:00:00) */ +#define RTC_CR_CALEVSEL_YEAR (0x2u << 16) /**< \brief (RTC_CR) Year change (every January 1 at time 00:00:00) */ +/* -------- RTC_MR : (RTC Offset: 0x04) Mode Register -------- */ +#define RTC_MR_HRMOD (0x1u << 0) /**< \brief (RTC_MR) 12-/24-hour Mode */ +#define RTC_MR_PERSIAN (0x1u << 1) /**< \brief (RTC_MR) PERSIAN Calendar */ +#define RTC_MR_NEGPPM (0x1u << 4) /**< \brief (RTC_MR) NEGative PPM Correction */ +#define RTC_MR_CORRECTION_Pos 8 +#define RTC_MR_CORRECTION_Msk (0x7fu << RTC_MR_CORRECTION_Pos) /**< \brief (RTC_MR) */ +#define RTC_MR_CORRECTION(value) ((RTC_MR_CORRECTION_Msk & ((value) << RTC_MR_CORRECTION_Pos))) +#define RTC_MR_HIGHPPM (0x1u << 15) /**< \brief (RTC_MR) HIGH PPM Correction */ +#define RTC_MR_OUT0_Pos 16 +#define RTC_MR_OUT0_Msk (0x7u << RTC_MR_OUT0_Pos) /**< \brief (RTC_MR) RTCOUT0 Output Source Selection */ +#define RTC_MR_OUT0_NO_WAVE (0x0u << 16) /**< \brief (RTC_MR) no waveform, stuck at '0' */ +#define RTC_MR_OUT0_FREQ1HZ (0x1u << 16) /**< \brief (RTC_MR) 1 Hz square wave */ +#define RTC_MR_OUT0_FREQ32HZ (0x2u << 16) /**< \brief (RTC_MR) 32 Hz square wave */ +#define RTC_MR_OUT0_FREQ64HZ (0x3u << 16) /**< \brief (RTC_MR) 64 Hz square wave */ +#define RTC_MR_OUT0_FREQ512HZ (0x4u << 16) /**< \brief (RTC_MR) 512 Hz square wave */ +#define RTC_MR_OUT0_ALARM_TOGGLE (0x5u << 16) /**< \brief (RTC_MR) output toggles when alarm flag rises */ +#define RTC_MR_OUT0_ALARM_FLAG (0x6u << 16) /**< \brief (RTC_MR) output is a copy of the alarm flag */ +#define RTC_MR_OUT0_PROG_PULSE (0x7u << 16) /**< \brief (RTC_MR) duty cycle programmable pulse */ +#define RTC_MR_OUT1_Pos 20 +#define RTC_MR_OUT1_Msk (0x7u << RTC_MR_OUT1_Pos) /**< \brief (RTC_MR) RTCOUT1 Output Source Selection */ +#define RTC_MR_OUT1_NO_WAVE (0x0u << 20) /**< \brief (RTC_MR) no waveform, stuck at '0' */ +#define RTC_MR_OUT1_FREQ1HZ (0x1u << 20) /**< \brief (RTC_MR) 1 Hz square wave */ +#define RTC_MR_OUT1_FREQ32HZ (0x2u << 20) /**< \brief (RTC_MR) 32 Hz square wave */ +#define RTC_MR_OUT1_FREQ64HZ (0x3u << 20) /**< \brief (RTC_MR) 64 Hz square wave */ +#define RTC_MR_OUT1_FREQ512HZ (0x4u << 20) /**< \brief (RTC_MR) 512 Hz square wave */ +#define RTC_MR_OUT1_ALARM_TOGGLE (0x5u << 20) /**< \brief (RTC_MR) output toggles when alarm flag rises */ +#define RTC_MR_OUT1_ALARM_FLAG (0x6u << 20) /**< \brief (RTC_MR) output is a copy of the alarm flag */ +#define RTC_MR_OUT1_PROG_PULSE (0x7u << 20) /**< \brief (RTC_MR) duty cycle programmable pulse */ +#define RTC_MR_THIGH_Pos 24 +#define RTC_MR_THIGH_Msk (0x7u << RTC_MR_THIGH_Pos) /**< \brief (RTC_MR) High Duration of the Output Pulse */ +#define RTC_MR_THIGH_H_31MS (0x0u << 24) /**< \brief (RTC_MR) 31.2 ms */ +#define RTC_MR_THIGH_H_16MS (0x1u << 24) /**< \brief (RTC_MR) 15.6 ms */ +#define RTC_MR_THIGH_H_4MS (0x2u << 24) /**< \brief (RTC_MR) 3.91 ms */ +#define RTC_MR_THIGH_H_967US (0x3u << 24) /**< \brief (RTC_MR) 967 \xb5 s */ +#define RTC_MR_THIGH_H_488US (0x4u << 24) /**< \brief (RTC_MR) 488 \xb5 s */ +#define RTC_MR_THIGH_H_122US (0x5u << 24) /**< \brief (RTC_MR) 122 \xb5 s */ +#define RTC_MR_THIGH_H_30US (0x6u << 24) /**< \brief (RTC_MR) 30.5 \xb5 s */ +#define RTC_MR_THIGH_H_15US (0x7u << 24) /**< \brief (RTC_MR) 15.2 \xb5 s */ +#define RTC_MR_TPERIOD_Pos 28 +#define RTC_MR_TPERIOD_Msk (0x3u << RTC_MR_TPERIOD_Pos) /**< \brief (RTC_MR) Period of the Output Pulse */ +#define RTC_MR_TPERIOD_P_1S (0x0u << 28) /**< \brief (RTC_MR) 1 second */ +#define RTC_MR_TPERIOD_P_500MS (0x1u << 28) /**< \brief (RTC_MR) 500 ms */ +#define RTC_MR_TPERIOD_P_250MS (0x2u << 28) /**< \brief (RTC_MR) 250 ms */ +#define RTC_MR_TPERIOD_P_125MS (0x3u << 28) /**< \brief (RTC_MR) 125 ms */ +/* -------- RTC_TIMR : (RTC Offset: 0x08) Time Register -------- */ +#define RTC_TIMR_SEC_Pos 0 +#define RTC_TIMR_SEC_Msk (0x7fu << RTC_TIMR_SEC_Pos) /**< \brief (RTC_TIMR) Current Second */ +#define RTC_TIMR_SEC(value) ((RTC_TIMR_SEC_Msk & ((value) << RTC_TIMR_SEC_Pos))) +#define RTC_TIMR_MIN_Pos 8 +#define RTC_TIMR_MIN_Msk (0x7fu << RTC_TIMR_MIN_Pos) /**< \brief (RTC_TIMR) Current Minute */ +#define RTC_TIMR_MIN(value) ((RTC_TIMR_MIN_Msk & ((value) << RTC_TIMR_MIN_Pos))) +#define RTC_TIMR_HOUR_Pos 16 +#define RTC_TIMR_HOUR_Msk (0x3fu << RTC_TIMR_HOUR_Pos) /**< \brief (RTC_TIMR) Current Hour */ +#define RTC_TIMR_HOUR(value) ((RTC_TIMR_HOUR_Msk & ((value) << RTC_TIMR_HOUR_Pos))) +#define RTC_TIMR_AMPM (0x1u << 22) /**< \brief (RTC_TIMR) Ante Meridiem Post Meridiem Indicator */ +/* -------- RTC_CALR : (RTC Offset: 0x0C) Calendar Register -------- */ +#define RTC_CALR_CENT_Pos 0 +#define RTC_CALR_CENT_Msk (0x7fu << RTC_CALR_CENT_Pos) /**< \brief (RTC_CALR) Current Century */ +#define RTC_CALR_CENT(value) ((RTC_CALR_CENT_Msk & ((value) << RTC_CALR_CENT_Pos))) +#define RTC_CALR_YEAR_Pos 8 +#define RTC_CALR_YEAR_Msk (0xffu << RTC_CALR_YEAR_Pos) /**< \brief (RTC_CALR) Current Year */ +#define RTC_CALR_YEAR(value) ((RTC_CALR_YEAR_Msk & ((value) << RTC_CALR_YEAR_Pos))) +#define RTC_CALR_MONTH_Pos 16 +#define RTC_CALR_MONTH_Msk (0x1fu << RTC_CALR_MONTH_Pos) /**< \brief (RTC_CALR) Current Month */ +#define RTC_CALR_MONTH(value) ((RTC_CALR_MONTH_Msk & ((value) << RTC_CALR_MONTH_Pos))) +#define RTC_CALR_DAY_Pos 21 +#define RTC_CALR_DAY_Msk (0x7u << RTC_CALR_DAY_Pos) /**< \brief (RTC_CALR) Current Day in Current Week */ +#define RTC_CALR_DAY(value) ((RTC_CALR_DAY_Msk & ((value) << RTC_CALR_DAY_Pos))) +#define RTC_CALR_DATE_Pos 24 +#define RTC_CALR_DATE_Msk (0x3fu << RTC_CALR_DATE_Pos) /**< \brief (RTC_CALR) Current Day in Current Month */ +#define RTC_CALR_DATE(value) ((RTC_CALR_DATE_Msk & ((value) << RTC_CALR_DATE_Pos))) +/* -------- RTC_TIMALR : (RTC Offset: 0x10) Time Alarm Register -------- */ +#define RTC_TIMALR_SEC_Pos 0 +#define RTC_TIMALR_SEC_Msk (0x7fu << RTC_TIMALR_SEC_Pos) /**< \brief (RTC_TIMALR) Second Alarm */ +#define RTC_TIMALR_SEC(value) ((RTC_TIMALR_SEC_Msk & ((value) << RTC_TIMALR_SEC_Pos))) +#define RTC_TIMALR_SECEN (0x1u << 7) /**< \brief (RTC_TIMALR) Second Alarm Enable */ +#define RTC_TIMALR_MIN_Pos 8 +#define RTC_TIMALR_MIN_Msk (0x7fu << RTC_TIMALR_MIN_Pos) /**< \brief (RTC_TIMALR) Minute Alarm */ +#define RTC_TIMALR_MIN(value) ((RTC_TIMALR_MIN_Msk & ((value) << RTC_TIMALR_MIN_Pos))) +#define RTC_TIMALR_MINEN (0x1u << 15) /**< \brief (RTC_TIMALR) Minute Alarm Enable */ +#define RTC_TIMALR_HOUR_Pos 16 +#define RTC_TIMALR_HOUR_Msk (0x3fu << RTC_TIMALR_HOUR_Pos) /**< \brief (RTC_TIMALR) Hour Alarm */ +#define RTC_TIMALR_HOUR(value) ((RTC_TIMALR_HOUR_Msk & ((value) << RTC_TIMALR_HOUR_Pos))) +#define RTC_TIMALR_AMPM (0x1u << 22) /**< \brief (RTC_TIMALR) AM/PM Indicator */ +#define RTC_TIMALR_HOUREN (0x1u << 23) /**< \brief (RTC_TIMALR) Hour Alarm Enable */ +/* -------- RTC_CALALR : (RTC Offset: 0x14) Calendar Alarm Register -------- */ +#define RTC_CALALR_MONTH_Pos 16 +#define RTC_CALALR_MONTH_Msk (0x1fu << RTC_CALALR_MONTH_Pos) /**< \brief (RTC_CALALR) Month Alarm */ +#define RTC_CALALR_MONTH(value) ((RTC_CALALR_MONTH_Msk & ((value) << RTC_CALALR_MONTH_Pos))) +#define RTC_CALALR_MTHEN (0x1u << 23) /**< \brief (RTC_CALALR) Month Alarm Enable */ +#define RTC_CALALR_DATE_Pos 24 +#define RTC_CALALR_DATE_Msk (0x3fu << RTC_CALALR_DATE_Pos) /**< \brief (RTC_CALALR) Date Alarm */ +#define RTC_CALALR_DATE(value) ((RTC_CALALR_DATE_Msk & ((value) << RTC_CALALR_DATE_Pos))) +#define RTC_CALALR_DATEEN (0x1u << 31) /**< \brief (RTC_CALALR) Date Alarm Enable */ +/* -------- RTC_SR : (RTC Offset: 0x18) Status Register -------- */ +#define RTC_SR_ACKUPD (0x1u << 0) /**< \brief (RTC_SR) Acknowledge for Update */ +#define RTC_SR_ALARM (0x1u << 1) /**< \brief (RTC_SR) Alarm Flag */ +#define RTC_SR_SEC (0x1u << 2) /**< \brief (RTC_SR) Second Event */ +#define RTC_SR_TIMEV (0x1u << 3) /**< \brief (RTC_SR) Time Event */ +#define RTC_SR_CALEV (0x1u << 4) /**< \brief (RTC_SR) Calendar Event */ +/* -------- RTC_SCCR : (RTC Offset: 0x1C) Status Clear Command Register -------- */ +#define RTC_SCCR_ACKCLR (0x1u << 0) /**< \brief (RTC_SCCR) Acknowledge Clear */ +#define RTC_SCCR_ALRCLR (0x1u << 1) /**< \brief (RTC_SCCR) Alarm Clear */ +#define RTC_SCCR_SECCLR (0x1u << 2) /**< \brief (RTC_SCCR) Second Clear */ +#define RTC_SCCR_TIMCLR (0x1u << 3) /**< \brief (RTC_SCCR) Time Clear */ +#define RTC_SCCR_CALCLR (0x1u << 4) /**< \brief (RTC_SCCR) Calendar Clear */ +/* -------- RTC_IER : (RTC Offset: 0x20) Interrupt Enable Register -------- */ +#define RTC_IER_ACKEN (0x1u << 0) /**< \brief (RTC_IER) Acknowledge Update Interrupt Enable */ +#define RTC_IER_ALREN (0x1u << 1) /**< \brief (RTC_IER) Alarm Interrupt Enable */ +#define RTC_IER_SECEN (0x1u << 2) /**< \brief (RTC_IER) Second Event Interrupt Enable */ +#define RTC_IER_TIMEN (0x1u << 3) /**< \brief (RTC_IER) Time Event Interrupt Enable */ +#define RTC_IER_CALEN (0x1u << 4) /**< \brief (RTC_IER) Calendar Event Interrupt Enable */ +/* -------- RTC_IDR : (RTC Offset: 0x24) Interrupt Disable Register -------- */ +#define RTC_IDR_ACKDIS (0x1u << 0) /**< \brief (RTC_IDR) Acknowledge Update Interrupt Disable */ +#define RTC_IDR_ALRDIS (0x1u << 1) /**< \brief (RTC_IDR) Alarm Interrupt Disable */ +#define RTC_IDR_SECDIS (0x1u << 2) /**< \brief (RTC_IDR) Second Event Interrupt Disable */ +#define RTC_IDR_TIMDIS (0x1u << 3) /**< \brief (RTC_IDR) Time Event Interrupt Disable */ +#define RTC_IDR_CALDIS (0x1u << 4) /**< \brief (RTC_IDR) Calendar Event Interrupt Disable */ +/* -------- RTC_IMR : (RTC Offset: 0x28) Interrupt Mask Register -------- */ +#define RTC_IMR_ACK (0x1u << 0) /**< \brief (RTC_IMR) Acknowledge Update Interrupt Mask */ +#define RTC_IMR_ALR (0x1u << 1) /**< \brief (RTC_IMR) Alarm Interrupt Mask */ +#define RTC_IMR_SEC (0x1u << 2) /**< \brief (RTC_IMR) Second Event Interrupt Mask */ +#define RTC_IMR_TIM (0x1u << 3) /**< \brief (RTC_IMR) Time Event Interrupt Mask */ +#define RTC_IMR_CAL (0x1u << 4) /**< \brief (RTC_IMR) Calendar Event Interrupt Mask */ +/* -------- RTC_VER : (RTC Offset: 0x2C) Valid Entry Register -------- */ +#define RTC_VER_NVTIM (0x1u << 0) /**< \brief (RTC_VER) Non-valid Time */ +#define RTC_VER_NVCAL (0x1u << 1) /**< \brief (RTC_VER) Non-valid Calendar */ +#define RTC_VER_NVTIMALR (0x1u << 2) /**< \brief (RTC_VER) Non-valid Time Alarm */ +#define RTC_VER_NVCALALR (0x1u << 3) /**< \brief (RTC_VER) Non-valid Calendar Alarm */ + +/*@}*/ + + +#endif /* _SAM3S8_RTC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_rtt.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_rtt.h new file mode 100644 index 000000000..a9b965449 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_rtt.h @@ -0,0 +1,71 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_RTT_COMPONENT_ +#define _SAM3S8_RTT_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Real-time Timer */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_RTT Real-time Timer */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Rtt hardware registers */ +typedef struct { + RwReg RTT_MR; /**< \brief (Rtt Offset: 0x00) Mode Register */ + RwReg RTT_AR; /**< \brief (Rtt Offset: 0x04) Alarm Register */ + RoReg RTT_VR; /**< \brief (Rtt Offset: 0x08) Value Register */ + RoReg RTT_SR; /**< \brief (Rtt Offset: 0x0C) Status Register */ +} Rtt; +#endif /* __ASSEMBLY__ */ +/* -------- RTT_MR : (RTT Offset: 0x00) Mode Register -------- */ +#define RTT_MR_RTPRES_Pos 0 +#define RTT_MR_RTPRES_Msk (0xffffu << RTT_MR_RTPRES_Pos) /**< \brief (RTT_MR) Real-time Timer Prescaler Value */ +#define RTT_MR_RTPRES(value) ((RTT_MR_RTPRES_Msk & ((value) << RTT_MR_RTPRES_Pos))) +#define RTT_MR_ALMIEN (0x1u << 16) /**< \brief (RTT_MR) Alarm Interrupt Enable */ +#define RTT_MR_RTTINCIEN (0x1u << 17) /**< \brief (RTT_MR) Real-time Timer Increment Interrupt Enable */ +#define RTT_MR_RTTRST (0x1u << 18) /**< \brief (RTT_MR) Real-time Timer Restart */ +#define RTT_MR_RTTDIS (0x1u << 20) /**< \brief (RTT_MR) Real-time Timer Disable */ +#define RTT_MR_RTC1HZ (0x1u << 24) /**< \brief (RTT_MR) Real-Time Clock 1Hz Clock Selection */ +/* -------- RTT_AR : (RTT Offset: 0x04) Alarm Register -------- */ +#define RTT_AR_ALMV_Pos 0 +#define RTT_AR_ALMV_Msk (0xffffffffu << RTT_AR_ALMV_Pos) /**< \brief (RTT_AR) Alarm Value */ +#define RTT_AR_ALMV(value) ((RTT_AR_ALMV_Msk & ((value) << RTT_AR_ALMV_Pos))) +/* -------- RTT_VR : (RTT Offset: 0x08) Value Register -------- */ +#define RTT_VR_CRTV_Pos 0 +#define RTT_VR_CRTV_Msk (0xffffffffu << RTT_VR_CRTV_Pos) /**< \brief (RTT_VR) Current Real-time Value */ +/* -------- RTT_SR : (RTT Offset: 0x0C) Status Register -------- */ +#define RTT_SR_ALMS (0x1u << 0) /**< \brief (RTT_SR) Real-time Alarm Status */ +#define RTT_SR_RTTINC (0x1u << 1) /**< \brief (RTT_SR) Real-time Timer Increment */ + +/*@}*/ + + +#endif /* _SAM3S8_RTT_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_smc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_smc.h new file mode 100644 index 000000000..8c3050d9e --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_smc.h @@ -0,0 +1,144 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_SMC_COMPONENT_ +#define _SAM3S8_SMC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Static Memory Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_SMC Static Memory Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief SmcCs_number hardware registers */ +typedef struct { + RwReg SMC_SETUP; /**< \brief (SmcCs_number Offset: 0x0) SMC Setup Register */ + RwReg SMC_PULSE; /**< \brief (SmcCs_number Offset: 0x4) SMC Pulse Register */ + RwReg SMC_CYCLE; /**< \brief (SmcCs_number Offset: 0x8) SMC Cycle Register */ + RwReg SMC_MODE; /**< \brief (SmcCs_number Offset: 0xC) SMC Mode Register */ +} SmcCs_number; +/** \brief Smc hardware registers */ +#define SMCCS_NUMBER_NUMBER 5 +typedef struct { + SmcCs_number SMC_CS_NUMBER[SMCCS_NUMBER_NUMBER]; /**< \brief (Smc Offset: 0x0) CS_number = 0 .. 4 */ + RoReg Reserved1[12]; + RwReg SMC_OCMS; /**< \brief (Smc Offset: 0x80) SMC OCMS MODE Register */ + WoReg SMC_KEY1; /**< \brief (Smc Offset: 0x84) SMC OCMS KEY1 Register */ + WoReg SMC_KEY2; /**< \brief (Smc Offset: 0x88) SMC OCMS KEY2 Register */ + RoReg Reserved2[22]; + RwReg SMC_WPMR; /**< \brief (Smc Offset: 0xE4) SMC Write Protect Mode Register */ + RoReg SMC_WPSR; /**< \brief (Smc Offset: 0xE8) SMC Write Protect Status Register */ +} Smc; +#endif /* __ASSEMBLY__ */ +/* -------- SMC_SETUP : (SMC Offset: N/A) SMC Setup Register -------- */ +#define SMC_SETUP_NWE_SETUP_Pos 0 +#define SMC_SETUP_NWE_SETUP_Msk (0x3fu << SMC_SETUP_NWE_SETUP_Pos) /**< \brief (SMC_SETUP) NWE Setup Length */ +#define SMC_SETUP_NWE_SETUP(value) ((SMC_SETUP_NWE_SETUP_Msk & ((value) << SMC_SETUP_NWE_SETUP_Pos))) +#define SMC_SETUP_NCS_WR_SETUP_Pos 8 +#define SMC_SETUP_NCS_WR_SETUP_Msk (0x3fu << SMC_SETUP_NCS_WR_SETUP_Pos) /**< \brief (SMC_SETUP) NCS Setup Length in WRITE Access */ +#define SMC_SETUP_NCS_WR_SETUP(value) ((SMC_SETUP_NCS_WR_SETUP_Msk & ((value) << SMC_SETUP_NCS_WR_SETUP_Pos))) +#define SMC_SETUP_NRD_SETUP_Pos 16 +#define SMC_SETUP_NRD_SETUP_Msk (0x3fu << SMC_SETUP_NRD_SETUP_Pos) /**< \brief (SMC_SETUP) NRD Setup Length */ +#define SMC_SETUP_NRD_SETUP(value) ((SMC_SETUP_NRD_SETUP_Msk & ((value) << SMC_SETUP_NRD_SETUP_Pos))) +#define SMC_SETUP_NCS_RD_SETUP_Pos 24 +#define SMC_SETUP_NCS_RD_SETUP_Msk (0x3fu << SMC_SETUP_NCS_RD_SETUP_Pos) /**< \brief (SMC_SETUP) NCS Setup Length in READ Access */ +#define SMC_SETUP_NCS_RD_SETUP(value) ((SMC_SETUP_NCS_RD_SETUP_Msk & ((value) << SMC_SETUP_NCS_RD_SETUP_Pos))) +/* -------- SMC_PULSE : (SMC Offset: N/A) SMC Pulse Register -------- */ +#define SMC_PULSE_NWE_PULSE_Pos 0 +#define SMC_PULSE_NWE_PULSE_Msk (0x7fu << SMC_PULSE_NWE_PULSE_Pos) /**< \brief (SMC_PULSE) NWE Pulse Length */ +#define SMC_PULSE_NWE_PULSE(value) ((SMC_PULSE_NWE_PULSE_Msk & ((value) << SMC_PULSE_NWE_PULSE_Pos))) +#define SMC_PULSE_NCS_WR_PULSE_Pos 8 +#define SMC_PULSE_NCS_WR_PULSE_Msk (0x7fu << SMC_PULSE_NCS_WR_PULSE_Pos) /**< \brief (SMC_PULSE) NCS Pulse Length in WRITE Access */ +#define SMC_PULSE_NCS_WR_PULSE(value) ((SMC_PULSE_NCS_WR_PULSE_Msk & ((value) << SMC_PULSE_NCS_WR_PULSE_Pos))) +#define SMC_PULSE_NRD_PULSE_Pos 16 +#define SMC_PULSE_NRD_PULSE_Msk (0x7fu << SMC_PULSE_NRD_PULSE_Pos) /**< \brief (SMC_PULSE) NRD Pulse Length */ +#define SMC_PULSE_NRD_PULSE(value) ((SMC_PULSE_NRD_PULSE_Msk & ((value) << SMC_PULSE_NRD_PULSE_Pos))) +#define SMC_PULSE_NCS_RD_PULSE_Pos 24 +#define SMC_PULSE_NCS_RD_PULSE_Msk (0x7fu << SMC_PULSE_NCS_RD_PULSE_Pos) /**< \brief (SMC_PULSE) NCS Pulse Length in READ Access */ +#define SMC_PULSE_NCS_RD_PULSE(value) ((SMC_PULSE_NCS_RD_PULSE_Msk & ((value) << SMC_PULSE_NCS_RD_PULSE_Pos))) +/* -------- SMC_CYCLE : (SMC Offset: N/A) SMC Cycle Register -------- */ +#define SMC_CYCLE_NWE_CYCLE_Pos 0 +#define SMC_CYCLE_NWE_CYCLE_Msk (0x1ffu << SMC_CYCLE_NWE_CYCLE_Pos) /**< \brief (SMC_CYCLE) Total Write Cycle Length */ +#define SMC_CYCLE_NWE_CYCLE(value) ((SMC_CYCLE_NWE_CYCLE_Msk & ((value) << SMC_CYCLE_NWE_CYCLE_Pos))) +#define SMC_CYCLE_NRD_CYCLE_Pos 16 +#define SMC_CYCLE_NRD_CYCLE_Msk (0x1ffu << SMC_CYCLE_NRD_CYCLE_Pos) /**< \brief (SMC_CYCLE) Total Read Cycle Length */ +#define SMC_CYCLE_NRD_CYCLE(value) ((SMC_CYCLE_NRD_CYCLE_Msk & ((value) << SMC_CYCLE_NRD_CYCLE_Pos))) +/* -------- SMC_MODE : (SMC Offset: N/A) SMC Mode Register -------- */ +#define SMC_MODE_READ_MODE (0x1u << 0) /**< \brief (SMC_MODE) */ +#define SMC_MODE_WRITE_MODE (0x1u << 1) /**< \brief (SMC_MODE) */ +#define SMC_MODE_EXNW_MODE_Pos 4 +#define SMC_MODE_EXNW_MODE_Msk (0x3u << SMC_MODE_EXNW_MODE_Pos) /**< \brief (SMC_MODE) NWAIT Mode */ +#define SMC_MODE_EXNW_MODE_DISABLED (0x0u << 4) /**< \brief (SMC_MODE) Disabled */ +#define SMC_MODE_EXNW_MODE_FROZEN (0x2u << 4) /**< \brief (SMC_MODE) Frozen Mode */ +#define SMC_MODE_EXNW_MODE_READY (0x3u << 4) /**< \brief (SMC_MODE) Ready Mode */ +#define SMC_MODE_DBW_Pos 12 +#define SMC_MODE_DBW_Msk (0x3u << SMC_MODE_DBW_Pos) /**< \brief (SMC_MODE) Data Bus Width */ +#define SMC_MODE_DBW_8_BIT (0x0u << 12) /**< \brief (SMC_MODE) 8-bit bus */ +#define SMC_MODE_DBW_16_BIT (0x1u << 12) /**< \brief (SMC_MODE) 16-bit bus */ +#define SMC_MODE_DBW_32_BIT (0x2u << 12) /**< \brief (SMC_MODE) 32-bit bus */ +#define SMC_MODE_TDF_CYCLES_Pos 16 +#define SMC_MODE_TDF_CYCLES_Msk (0xfu << SMC_MODE_TDF_CYCLES_Pos) /**< \brief (SMC_MODE) Data Float Time */ +#define SMC_MODE_TDF_CYCLES(value) ((SMC_MODE_TDF_CYCLES_Msk & ((value) << SMC_MODE_TDF_CYCLES_Pos))) +#define SMC_MODE_TDF_MODE (0x1u << 20) /**< \brief (SMC_MODE) TDF Optimization */ +#define SMC_MODE_PMEN (0x1u << 24) /**< \brief (SMC_MODE) Page Mode Enabled */ +#define SMC_MODE_PS_Pos 28 +#define SMC_MODE_PS_Msk (0x3u << SMC_MODE_PS_Pos) /**< \brief (SMC_MODE) Page Size */ +#define SMC_MODE_PS_4_BYTE (0x0u << 28) /**< \brief (SMC_MODE) 4-byte page */ +#define SMC_MODE_PS_8_BYTE (0x1u << 28) /**< \brief (SMC_MODE) 8-byte page */ +#define SMC_MODE_PS_16_BYTE (0x2u << 28) /**< \brief (SMC_MODE) 16-byte page */ +#define SMC_MODE_PS_32_BYTE (0x3u << 28) /**< \brief (SMC_MODE) 32-byte page */ +/* -------- SMC_OCMS : (SMC Offset: 0x80) SMC OCMS MODE Register -------- */ +#define SMC_OCMS_SMSE (0x1u << 0) /**< \brief (SMC_OCMS) Static Memory Controller Scrambling Enable */ +#define SMC_OCMS_CS0SE (0x1u << 16) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ +#define SMC_OCMS_CS1SE (0x1u << 17) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ +#define SMC_OCMS_CS2SE (0x1u << 18) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ +#define SMC_OCMS_CS3SE (0x1u << 19) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ +/* -------- SMC_KEY1 : (SMC Offset: 0x84) SMC OCMS KEY1 Register -------- */ +#define SMC_KEY1_KEY1_Pos 0 +#define SMC_KEY1_KEY1_Msk (0xffffffffu << SMC_KEY1_KEY1_Pos) /**< \brief (SMC_KEY1) Off Chip Memory Scrambling (OCMS) Key Part 1 */ +#define SMC_KEY1_KEY1(value) ((SMC_KEY1_KEY1_Msk & ((value) << SMC_KEY1_KEY1_Pos))) +/* -------- SMC_KEY2 : (SMC Offset: 0x88) SMC OCMS KEY2 Register -------- */ +#define SMC_KEY2_KEY2_Pos 0 +#define SMC_KEY2_KEY2_Msk (0xffffffffu << SMC_KEY2_KEY2_Pos) /**< \brief (SMC_KEY2) Off Chip Memory Scrambling (OCMS) Key Part 2 */ +#define SMC_KEY2_KEY2(value) ((SMC_KEY2_KEY2_Msk & ((value) << SMC_KEY2_KEY2_Pos))) +/* -------- SMC_WPMR : (SMC Offset: 0xE4) SMC Write Protect Mode Register -------- */ +#define SMC_WPMR_WPEN (0x1u << 0) /**< \brief (SMC_WPMR) Write Protect Enable */ +#define SMC_WPMR_WPKEY_Pos 8 +#define SMC_WPMR_WPKEY_Msk (0xffffffu << SMC_WPMR_WPKEY_Pos) /**< \brief (SMC_WPMR) Write Protect KEY */ +#define SMC_WPMR_WPKEY(value) ((SMC_WPMR_WPKEY_Msk & ((value) << SMC_WPMR_WPKEY_Pos))) +/* -------- SMC_WPSR : (SMC Offset: 0xE8) SMC Write Protect Status Register -------- */ +#define SMC_WPSR_WPVS (0x1u << 0) /**< \brief (SMC_WPSR) Write Protect Enable */ +#define SMC_WPSR_WPVSRC_Pos 8 +#define SMC_WPSR_WPVSRC_Msk (0xffffu << SMC_WPSR_WPVSRC_Pos) /**< \brief (SMC_WPSR) Write Protect Violation Source */ + +/*@}*/ + + +#endif /* _SAM3S8_SMC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_spi.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_spi.h new file mode 100644 index 000000000..88153749e --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_spi.h @@ -0,0 +1,227 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_SPI_COMPONENT_ +#define _SAM3S8_SPI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Serial Peripheral Interface */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_SPI Serial Peripheral Interface */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Spi hardware registers */ +typedef struct { + WoReg SPI_CR; /**< \brief (Spi Offset: 0x00) Control Register */ + RwReg SPI_MR; /**< \brief (Spi Offset: 0x04) Mode Register */ + RoReg SPI_RDR; /**< \brief (Spi Offset: 0x08) Receive Data Register */ + WoReg SPI_TDR; /**< \brief (Spi Offset: 0x0C) Transmit Data Register */ + RoReg SPI_SR; /**< \brief (Spi Offset: 0x10) Status Register */ + WoReg SPI_IER; /**< \brief (Spi Offset: 0x14) Interrupt Enable Register */ + WoReg SPI_IDR; /**< \brief (Spi Offset: 0x18) Interrupt Disable Register */ + RoReg SPI_IMR; /**< \brief (Spi Offset: 0x1C) Interrupt Mask Register */ + RoReg Reserved1[4]; + RwReg SPI_CSR[4]; /**< \brief (Spi Offset: 0x30) Chip Select Register */ + RoReg Reserved2[41]; + RwReg SPI_WPMR; /**< \brief (Spi Offset: 0xE4) Write Protection Control Register */ + RoReg SPI_WPSR; /**< \brief (Spi Offset: 0xE8) Write Protection Status Register */ + RoReg Reserved3[5]; + RwReg SPI_RPR; /**< \brief (Spi Offset: 0x100) Receive Pointer Register */ + RwReg SPI_RCR; /**< \brief (Spi Offset: 0x104) Receive Counter Register */ + RwReg SPI_TPR; /**< \brief (Spi Offset: 0x108) Transmit Pointer Register */ + RwReg SPI_TCR; /**< \brief (Spi Offset: 0x10C) Transmit Counter Register */ + RwReg SPI_RNPR; /**< \brief (Spi Offset: 0x110) Receive Next Pointer Register */ + RwReg SPI_RNCR; /**< \brief (Spi Offset: 0x114) Receive Next Counter Register */ + RwReg SPI_TNPR; /**< \brief (Spi Offset: 0x118) Transmit Next Pointer Register */ + RwReg SPI_TNCR; /**< \brief (Spi Offset: 0x11C) Transmit Next Counter Register */ + WoReg SPI_PTCR; /**< \brief (Spi Offset: 0x120) Transfer Control Register */ + RoReg SPI_PTSR; /**< \brief (Spi Offset: 0x124) Transfer Status Register */ +} Spi; +#endif /* __ASSEMBLY__ */ +/* -------- SPI_CR : (SPI Offset: 0x00) Control Register -------- */ +#define SPI_CR_SPIEN (0x1u << 0) /**< \brief (SPI_CR) SPI Enable */ +#define SPI_CR_SPIDIS (0x1u << 1) /**< \brief (SPI_CR) SPI Disable */ +#define SPI_CR_SWRST (0x1u << 7) /**< \brief (SPI_CR) SPI Software Reset */ +#define SPI_CR_LASTXFER (0x1u << 24) /**< \brief (SPI_CR) Last Transfer */ +/* -------- SPI_MR : (SPI Offset: 0x04) Mode Register -------- */ +#define SPI_MR_MSTR (0x1u << 0) /**< \brief (SPI_MR) Master/Slave Mode */ +#define SPI_MR_PS (0x1u << 1) /**< \brief (SPI_MR) Peripheral Select */ +#define SPI_MR_PCSDEC (0x1u << 2) /**< \brief (SPI_MR) Chip Select Decode */ +#define SPI_MR_MODFDIS (0x1u << 4) /**< \brief (SPI_MR) Mode Fault Detection */ +#define SPI_MR_WDRBT (0x1u << 5) /**< \brief (SPI_MR) Wait Data Read Before Transfer */ +#define SPI_MR_LLB (0x1u << 7) /**< \brief (SPI_MR) Local Loopback Enable */ +#define SPI_MR_PCS_Pos 16 +#define SPI_MR_PCS_Msk (0xfu << SPI_MR_PCS_Pos) /**< \brief (SPI_MR) Peripheral Chip Select */ +#define SPI_MR_PCS(value) ((SPI_MR_PCS_Msk & ((value) << SPI_MR_PCS_Pos))) +#define SPI_MR_DLYBCS_Pos 24 +#define SPI_MR_DLYBCS_Msk (0xffu << SPI_MR_DLYBCS_Pos) /**< \brief (SPI_MR) Delay Between Chip Selects */ +#define SPI_MR_DLYBCS(value) ((SPI_MR_DLYBCS_Msk & ((value) << SPI_MR_DLYBCS_Pos))) +/* -------- SPI_RDR : (SPI Offset: 0x08) Receive Data Register -------- */ +#define SPI_RDR_RD_Pos 0 +#define SPI_RDR_RD_Msk (0xffffu << SPI_RDR_RD_Pos) /**< \brief (SPI_RDR) Receive Data */ +#define SPI_RDR_PCS_Pos 16 +#define SPI_RDR_PCS_Msk (0xfu << SPI_RDR_PCS_Pos) /**< \brief (SPI_RDR) Peripheral Chip Select */ +/* -------- SPI_TDR : (SPI Offset: 0x0C) Transmit Data Register -------- */ +#define SPI_TDR_TD_Pos 0 +#define SPI_TDR_TD_Msk (0xffffu << SPI_TDR_TD_Pos) /**< \brief (SPI_TDR) Transmit Data */ +#define SPI_TDR_TD(value) ((SPI_TDR_TD_Msk & ((value) << SPI_TDR_TD_Pos))) +#define SPI_TDR_PCS_Pos 16 +#define SPI_TDR_PCS_Msk (0xfu << SPI_TDR_PCS_Pos) /**< \brief (SPI_TDR) Peripheral Chip Select */ +#define SPI_TDR_PCS(value) ((SPI_TDR_PCS_Msk & ((value) << SPI_TDR_PCS_Pos))) +#define SPI_TDR_LASTXFER (0x1u << 24) /**< \brief (SPI_TDR) Last Transfer */ +/* -------- SPI_SR : (SPI Offset: 0x10) Status Register -------- */ +#define SPI_SR_RDRF (0x1u << 0) /**< \brief (SPI_SR) Receive Data Register Full */ +#define SPI_SR_TDRE (0x1u << 1) /**< \brief (SPI_SR) Transmit Data Register Empty */ +#define SPI_SR_MODF (0x1u << 2) /**< \brief (SPI_SR) Mode Fault Error */ +#define SPI_SR_OVRES (0x1u << 3) /**< \brief (SPI_SR) Overrun Error Status */ +#define SPI_SR_ENDRX (0x1u << 4) /**< \brief (SPI_SR) End of RX buffer */ +#define SPI_SR_ENDTX (0x1u << 5) /**< \brief (SPI_SR) End of TX buffer */ +#define SPI_SR_RXBUFF (0x1u << 6) /**< \brief (SPI_SR) RX Buffer Full */ +#define SPI_SR_TXBUFE (0x1u << 7) /**< \brief (SPI_SR) TX Buffer Empty */ +#define SPI_SR_NSSR (0x1u << 8) /**< \brief (SPI_SR) NSS Rising */ +#define SPI_SR_TXEMPTY (0x1u << 9) /**< \brief (SPI_SR) Transmission Registers Empty */ +#define SPI_SR_UNDES (0x1u << 10) /**< \brief (SPI_SR) Underrun Error Status (Slave Mode Only) */ +#define SPI_SR_SPIENS (0x1u << 16) /**< \brief (SPI_SR) SPI Enable Status */ +/* -------- SPI_IER : (SPI Offset: 0x14) Interrupt Enable Register -------- */ +#define SPI_IER_RDRF (0x1u << 0) /**< \brief (SPI_IER) Receive Data Register Full Interrupt Enable */ +#define SPI_IER_TDRE (0x1u << 1) /**< \brief (SPI_IER) SPI Transmit Data Register Empty Interrupt Enable */ +#define SPI_IER_MODF (0x1u << 2) /**< \brief (SPI_IER) Mode Fault Error Interrupt Enable */ +#define SPI_IER_OVRES (0x1u << 3) /**< \brief (SPI_IER) Overrun Error Interrupt Enable */ +#define SPI_IER_ENDRX (0x1u << 4) /**< \brief (SPI_IER) End of Receive Buffer Interrupt Enable */ +#define SPI_IER_ENDTX (0x1u << 5) /**< \brief (SPI_IER) End of Transmit Buffer Interrupt Enable */ +#define SPI_IER_RXBUFF (0x1u << 6) /**< \brief (SPI_IER) Receive Buffer Full Interrupt Enable */ +#define SPI_IER_TXBUFE (0x1u << 7) /**< \brief (SPI_IER) Transmit Buffer Empty Interrupt Enable */ +#define SPI_IER_NSSR (0x1u << 8) /**< \brief (SPI_IER) NSS Rising Interrupt Enable */ +#define SPI_IER_TXEMPTY (0x1u << 9) /**< \brief (SPI_IER) Transmission Registers Empty Enable */ +#define SPI_IER_UNDES (0x1u << 10) /**< \brief (SPI_IER) Underrun Error Interrupt Enable */ +/* -------- SPI_IDR : (SPI Offset: 0x18) Interrupt Disable Register -------- */ +#define SPI_IDR_RDRF (0x1u << 0) /**< \brief (SPI_IDR) Receive Data Register Full Interrupt Disable */ +#define SPI_IDR_TDRE (0x1u << 1) /**< \brief (SPI_IDR) SPI Transmit Data Register Empty Interrupt Disable */ +#define SPI_IDR_MODF (0x1u << 2) /**< \brief (SPI_IDR) Mode Fault Error Interrupt Disable */ +#define SPI_IDR_OVRES (0x1u << 3) /**< \brief (SPI_IDR) Overrun Error Interrupt Disable */ +#define SPI_IDR_ENDRX (0x1u << 4) /**< \brief (SPI_IDR) End of Receive Buffer Interrupt Disable */ +#define SPI_IDR_ENDTX (0x1u << 5) /**< \brief (SPI_IDR) End of Transmit Buffer Interrupt Disable */ +#define SPI_IDR_RXBUFF (0x1u << 6) /**< \brief (SPI_IDR) Receive Buffer Full Interrupt Disable */ +#define SPI_IDR_TXBUFE (0x1u << 7) /**< \brief (SPI_IDR) Transmit Buffer Empty Interrupt Disable */ +#define SPI_IDR_NSSR (0x1u << 8) /**< \brief (SPI_IDR) NSS Rising Interrupt Disable */ +#define SPI_IDR_TXEMPTY (0x1u << 9) /**< \brief (SPI_IDR) Transmission Registers Empty Disable */ +#define SPI_IDR_UNDES (0x1u << 10) /**< \brief (SPI_IDR) Underrun Error Interrupt Disable */ +/* -------- SPI_IMR : (SPI Offset: 0x1C) Interrupt Mask Register -------- */ +#define SPI_IMR_RDRF (0x1u << 0) /**< \brief (SPI_IMR) Receive Data Register Full Interrupt Mask */ +#define SPI_IMR_TDRE (0x1u << 1) /**< \brief (SPI_IMR) SPI Transmit Data Register Empty Interrupt Mask */ +#define SPI_IMR_MODF (0x1u << 2) /**< \brief (SPI_IMR) Mode Fault Error Interrupt Mask */ +#define SPI_IMR_OVRES (0x1u << 3) /**< \brief (SPI_IMR) Overrun Error Interrupt Mask */ +#define SPI_IMR_ENDRX (0x1u << 4) /**< \brief (SPI_IMR) End of Receive Buffer Interrupt Mask */ +#define SPI_IMR_ENDTX (0x1u << 5) /**< \brief (SPI_IMR) End of Transmit Buffer Interrupt Mask */ +#define SPI_IMR_RXBUFF (0x1u << 6) /**< \brief (SPI_IMR) Receive Buffer Full Interrupt Mask */ +#define SPI_IMR_TXBUFE (0x1u << 7) /**< \brief (SPI_IMR) Transmit Buffer Empty Interrupt Mask */ +#define SPI_IMR_NSSR (0x1u << 8) /**< \brief (SPI_IMR) NSS Rising Interrupt Mask */ +#define SPI_IMR_TXEMPTY (0x1u << 9) /**< \brief (SPI_IMR) Transmission Registers Empty Mask */ +#define SPI_IMR_UNDES (0x1u << 10) /**< \brief (SPI_IMR) Underrun Error Interrupt Mask */ +/* -------- SPI_CSR[4] : (SPI Offset: 0x30) Chip Select Register -------- */ +#define SPI_CSR_CPOL (0x1u << 0) /**< \brief (SPI_CSR[4]) Clock Polarity */ +#define SPI_CSR_NCPHA (0x1u << 1) /**< \brief (SPI_CSR[4]) Clock Phase */ +#define SPI_CSR_CSNAAT (0x1u << 2) /**< \brief (SPI_CSR[4]) Chip Select Not Active After Transfer (Ignored if CSAAT = 1) */ +#define SPI_CSR_CSAAT (0x1u << 3) /**< \brief (SPI_CSR[4]) Chip Select Not Active After Transfer (Ignored if CSAAT = 1) */ +#define SPI_CSR_BITS_Pos 4 +#define SPI_CSR_BITS_Msk (0xfu << SPI_CSR_BITS_Pos) /**< \brief (SPI_CSR[4]) Bits Per Transfer */ +#define SPI_CSR_BITS_8_BIT (0x0u << 4) /**< \brief (SPI_CSR[4]) 8 bits for transfer */ +#define SPI_CSR_BITS_9_BIT (0x1u << 4) /**< \brief (SPI_CSR[4]) 9 bits for transfer */ +#define SPI_CSR_BITS_10_BIT (0x2u << 4) /**< \brief (SPI_CSR[4]) 10 bits for transfer */ +#define SPI_CSR_BITS_11_BIT (0x3u << 4) /**< \brief (SPI_CSR[4]) 11 bits for transfer */ +#define SPI_CSR_BITS_12_BIT (0x4u << 4) /**< \brief (SPI_CSR[4]) 12 bits for transfer */ +#define SPI_CSR_BITS_13_BIT (0x5u << 4) /**< \brief (SPI_CSR[4]) 13 bits for transfer */ +#define SPI_CSR_BITS_14_BIT (0x6u << 4) /**< \brief (SPI_CSR[4]) 14 bits for transfer */ +#define SPI_CSR_BITS_15_BIT (0x7u << 4) /**< \brief (SPI_CSR[4]) 15 bits for transfer */ +#define SPI_CSR_BITS_16_BIT (0x8u << 4) /**< \brief (SPI_CSR[4]) 16 bits for transfer */ +#define SPI_CSR_SCBR_Pos 8 +#define SPI_CSR_SCBR_Msk (0xffu << SPI_CSR_SCBR_Pos) /**< \brief (SPI_CSR[4]) Serial Clock Baud Rate */ +#define SPI_CSR_SCBR(value) ((SPI_CSR_SCBR_Msk & ((value) << SPI_CSR_SCBR_Pos))) +#define SPI_CSR_DLYBS_Pos 16 +#define SPI_CSR_DLYBS_Msk (0xffu << SPI_CSR_DLYBS_Pos) /**< \brief (SPI_CSR[4]) Delay Before SPCK */ +#define SPI_CSR_DLYBS(value) ((SPI_CSR_DLYBS_Msk & ((value) << SPI_CSR_DLYBS_Pos))) +#define SPI_CSR_DLYBCT_Pos 24 +#define SPI_CSR_DLYBCT_Msk (0xffu << SPI_CSR_DLYBCT_Pos) /**< \brief (SPI_CSR[4]) Delay Between Consecutive Transfers */ +#define SPI_CSR_DLYBCT(value) ((SPI_CSR_DLYBCT_Msk & ((value) << SPI_CSR_DLYBCT_Pos))) +/* -------- SPI_WPMR : (SPI Offset: 0xE4) Write Protection Control Register -------- */ +#define SPI_WPMR_SPIWPEN (0x1u << 0) /**< \brief (SPI_WPMR) SPI Write Protection Enable */ +#define SPI_WPMR_SPIWPKEY_Pos 8 +#define SPI_WPMR_SPIWPKEY_Msk (0xffffffu << SPI_WPMR_SPIWPKEY_Pos) /**< \brief (SPI_WPMR) SPI Write Protection Key Password */ +#define SPI_WPMR_SPIWPKEY(value) ((SPI_WPMR_SPIWPKEY_Msk & ((value) << SPI_WPMR_SPIWPKEY_Pos))) +/* -------- SPI_WPSR : (SPI Offset: 0xE8) Write Protection Status Register -------- */ +#define SPI_WPSR_SPIWPVS_Pos 0 +#define SPI_WPSR_SPIWPVS_Msk (0x7u << SPI_WPSR_SPIWPVS_Pos) /**< \brief (SPI_WPSR) SPI Write Protection Violation Status */ +#define SPI_WPSR_SPIWPVSRC_Pos 8 +#define SPI_WPSR_SPIWPVSRC_Msk (0xffu << SPI_WPSR_SPIWPVSRC_Pos) /**< \brief (SPI_WPSR) SPI Write Protection Violation Source */ +/* -------- SPI_RPR : (SPI Offset: 0x100) Receive Pointer Register -------- */ +#define SPI_RPR_RXPTR_Pos 0 +#define SPI_RPR_RXPTR_Msk (0xffffffffu << SPI_RPR_RXPTR_Pos) /**< \brief (SPI_RPR) Receive Pointer Register */ +#define SPI_RPR_RXPTR(value) ((SPI_RPR_RXPTR_Msk & ((value) << SPI_RPR_RXPTR_Pos))) +/* -------- SPI_RCR : (SPI Offset: 0x104) Receive Counter Register -------- */ +#define SPI_RCR_RXCTR_Pos 0 +#define SPI_RCR_RXCTR_Msk (0xffffu << SPI_RCR_RXCTR_Pos) /**< \brief (SPI_RCR) Receive Counter Register */ +#define SPI_RCR_RXCTR(value) ((SPI_RCR_RXCTR_Msk & ((value) << SPI_RCR_RXCTR_Pos))) +/* -------- SPI_TPR : (SPI Offset: 0x108) Transmit Pointer Register -------- */ +#define SPI_TPR_TXPTR_Pos 0 +#define SPI_TPR_TXPTR_Msk (0xffffffffu << SPI_TPR_TXPTR_Pos) /**< \brief (SPI_TPR) Transmit Counter Register */ +#define SPI_TPR_TXPTR(value) ((SPI_TPR_TXPTR_Msk & ((value) << SPI_TPR_TXPTR_Pos))) +/* -------- SPI_TCR : (SPI Offset: 0x10C) Transmit Counter Register -------- */ +#define SPI_TCR_TXCTR_Pos 0 +#define SPI_TCR_TXCTR_Msk (0xffffu << SPI_TCR_TXCTR_Pos) /**< \brief (SPI_TCR) Transmit Counter Register */ +#define SPI_TCR_TXCTR(value) ((SPI_TCR_TXCTR_Msk & ((value) << SPI_TCR_TXCTR_Pos))) +/* -------- SPI_RNPR : (SPI Offset: 0x110) Receive Next Pointer Register -------- */ +#define SPI_RNPR_RXNPTR_Pos 0 +#define SPI_RNPR_RXNPTR_Msk (0xffffffffu << SPI_RNPR_RXNPTR_Pos) /**< \brief (SPI_RNPR) Receive Next Pointer */ +#define SPI_RNPR_RXNPTR(value) ((SPI_RNPR_RXNPTR_Msk & ((value) << SPI_RNPR_RXNPTR_Pos))) +/* -------- SPI_RNCR : (SPI Offset: 0x114) Receive Next Counter Register -------- */ +#define SPI_RNCR_RXNCTR_Pos 0 +#define SPI_RNCR_RXNCTR_Msk (0xffffu << SPI_RNCR_RXNCTR_Pos) /**< \brief (SPI_RNCR) Receive Next Counter */ +#define SPI_RNCR_RXNCTR(value) ((SPI_RNCR_RXNCTR_Msk & ((value) << SPI_RNCR_RXNCTR_Pos))) +/* -------- SPI_TNPR : (SPI Offset: 0x118) Transmit Next Pointer Register -------- */ +#define SPI_TNPR_TXNPTR_Pos 0 +#define SPI_TNPR_TXNPTR_Msk (0xffffffffu << SPI_TNPR_TXNPTR_Pos) /**< \brief (SPI_TNPR) Transmit Next Pointer */ +#define SPI_TNPR_TXNPTR(value) ((SPI_TNPR_TXNPTR_Msk & ((value) << SPI_TNPR_TXNPTR_Pos))) +/* -------- SPI_TNCR : (SPI Offset: 0x11C) Transmit Next Counter Register -------- */ +#define SPI_TNCR_TXNCTR_Pos 0 +#define SPI_TNCR_TXNCTR_Msk (0xffffu << SPI_TNCR_TXNCTR_Pos) /**< \brief (SPI_TNCR) Transmit Counter Next */ +#define SPI_TNCR_TXNCTR(value) ((SPI_TNCR_TXNCTR_Msk & ((value) << SPI_TNCR_TXNCTR_Pos))) +/* -------- SPI_PTCR : (SPI Offset: 0x120) Transfer Control Register -------- */ +#define SPI_PTCR_RXTEN (0x1u << 0) /**< \brief (SPI_PTCR) Receiver Transfer Enable */ +#define SPI_PTCR_RXTDIS (0x1u << 1) /**< \brief (SPI_PTCR) Receiver Transfer Disable */ +#define SPI_PTCR_TXTEN (0x1u << 8) /**< \brief (SPI_PTCR) Transmitter Transfer Enable */ +#define SPI_PTCR_TXTDIS (0x1u << 9) /**< \brief (SPI_PTCR) Transmitter Transfer Disable */ +/* -------- SPI_PTSR : (SPI Offset: 0x124) Transfer Status Register -------- */ +#define SPI_PTSR_RXTEN (0x1u << 0) /**< \brief (SPI_PTSR) Receiver Transfer Enable */ +#define SPI_PTSR_TXTEN (0x1u << 8) /**< \brief (SPI_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3S8_SPI_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_ssc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_ssc.h new file mode 100644 index 000000000..ffaed3b56 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_ssc.h @@ -0,0 +1,337 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_SSC_COMPONENT_ +#define _SAM3S8_SSC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Synchronous Serial Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_SSC Synchronous Serial Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Ssc hardware registers */ +typedef struct { + WoReg SSC_CR; /**< \brief (Ssc Offset: 0x0) Control Register */ + RwReg SSC_CMR; /**< \brief (Ssc Offset: 0x4) Clock Mode Register */ + RoReg Reserved1[2]; + RwReg SSC_RCMR; /**< \brief (Ssc Offset: 0x10) Receive Clock Mode Register */ + RwReg SSC_RFMR; /**< \brief (Ssc Offset: 0x14) Receive Frame Mode Register */ + RwReg SSC_TCMR; /**< \brief (Ssc Offset: 0x18) Transmit Clock Mode Register */ + RwReg SSC_TFMR; /**< \brief (Ssc Offset: 0x1C) Transmit Frame Mode Register */ + RoReg SSC_RHR; /**< \brief (Ssc Offset: 0x20) Receive Holding Register */ + WoReg SSC_THR; /**< \brief (Ssc Offset: 0x24) Transmit Holding Register */ + RoReg Reserved2[2]; + RoReg SSC_RSHR; /**< \brief (Ssc Offset: 0x30) Receive Sync. Holding Register */ + RwReg SSC_TSHR; /**< \brief (Ssc Offset: 0x34) Transmit Sync. Holding Register */ + RwReg SSC_RC0R; /**< \brief (Ssc Offset: 0x38) Receive Compare 0 Register */ + RwReg SSC_RC1R; /**< \brief (Ssc Offset: 0x3C) Receive Compare 1 Register */ + RoReg SSC_SR; /**< \brief (Ssc Offset: 0x40) Status Register */ + WoReg SSC_IER; /**< \brief (Ssc Offset: 0x44) Interrupt Enable Register */ + WoReg SSC_IDR; /**< \brief (Ssc Offset: 0x48) Interrupt Disable Register */ + RoReg SSC_IMR; /**< \brief (Ssc Offset: 0x4C) Interrupt Mask Register */ + RoReg Reserved3[37]; + RwReg SSC_WPMR; /**< \brief (Ssc Offset: 0xE4) Write Protect Mode Register */ + RoReg SSC_WPSR; /**< \brief (Ssc Offset: 0xE8) Write Protect Status Register */ + RoReg Reserved4[5]; + RwReg SSC_RPR; /**< \brief (Ssc Offset: 0x100) Receive Pointer Register */ + RwReg SSC_RCR; /**< \brief (Ssc Offset: 0x104) Receive Counter Register */ + RwReg SSC_TPR; /**< \brief (Ssc Offset: 0x108) Transmit Pointer Register */ + RwReg SSC_TCR; /**< \brief (Ssc Offset: 0x10C) Transmit Counter Register */ + RwReg SSC_RNPR; /**< \brief (Ssc Offset: 0x110) Receive Next Pointer Register */ + RwReg SSC_RNCR; /**< \brief (Ssc Offset: 0x114) Receive Next Counter Register */ + RwReg SSC_TNPR; /**< \brief (Ssc Offset: 0x118) Transmit Next Pointer Register */ + RwReg SSC_TNCR; /**< \brief (Ssc Offset: 0x11C) Transmit Next Counter Register */ + WoReg SSC_PTCR; /**< \brief (Ssc Offset: 0x120) Transfer Control Register */ + RoReg SSC_PTSR; /**< \brief (Ssc Offset: 0x124) Transfer Status Register */ +} Ssc; +#endif /* __ASSEMBLY__ */ +/* -------- SSC_CR : (SSC Offset: 0x0) Control Register -------- */ +#define SSC_CR_RXEN (0x1u << 0) /**< \brief (SSC_CR) Receive Enable */ +#define SSC_CR_RXDIS (0x1u << 1) /**< \brief (SSC_CR) Receive Disable */ +#define SSC_CR_TXEN (0x1u << 8) /**< \brief (SSC_CR) Transmit Enable */ +#define SSC_CR_TXDIS (0x1u << 9) /**< \brief (SSC_CR) Transmit Disable */ +#define SSC_CR_SWRST (0x1u << 15) /**< \brief (SSC_CR) Software Reset */ +/* -------- SSC_CMR : (SSC Offset: 0x4) Clock Mode Register -------- */ +#define SSC_CMR_DIV_Pos 0 +#define SSC_CMR_DIV_Msk (0xfffu << SSC_CMR_DIV_Pos) /**< \brief (SSC_CMR) Clock Divider */ +#define SSC_CMR_DIV(value) ((SSC_CMR_DIV_Msk & ((value) << SSC_CMR_DIV_Pos))) +/* -------- SSC_RCMR : (SSC Offset: 0x10) Receive Clock Mode Register -------- */ +#define SSC_RCMR_CKS_Pos 0 +#define SSC_RCMR_CKS_Msk (0x3u << SSC_RCMR_CKS_Pos) /**< \brief (SSC_RCMR) Receive Clock Selection */ +#define SSC_RCMR_CKS_MCK (0x0u << 0) /**< \brief (SSC_RCMR) Divided Clock */ +#define SSC_RCMR_CKS_TK (0x1u << 0) /**< \brief (SSC_RCMR) TK Clock signal */ +#define SSC_RCMR_CKS_RK (0x2u << 0) /**< \brief (SSC_RCMR) RK pin */ +#define SSC_RCMR_CKO_Pos 2 +#define SSC_RCMR_CKO_Msk (0x7u << SSC_RCMR_CKO_Pos) /**< \brief (SSC_RCMR) Receive Clock Output Mode Selection */ +#define SSC_RCMR_CKO_NONE (0x0u << 2) /**< \brief (SSC_RCMR) None */ +#define SSC_RCMR_CKO_CONTINUOUS (0x1u << 2) /**< \brief (SSC_RCMR) Continuous Receive Clock */ +#define SSC_RCMR_CKO_TRANSFER (0x2u << 2) /**< \brief (SSC_RCMR) Receive Clock only during data transfers */ +#define SSC_RCMR_CKI (0x1u << 5) /**< \brief (SSC_RCMR) Receive Clock Inversion */ +#define SSC_RCMR_CKG_Pos 6 +#define SSC_RCMR_CKG_Msk (0x3u << SSC_RCMR_CKG_Pos) /**< \brief (SSC_RCMR) Receive Clock Gating Selection */ +#define SSC_RCMR_CKG_NONE (0x0u << 6) /**< \brief (SSC_RCMR) None */ +#define SSC_RCMR_CKG_CONTINUOUS (0x1u << 6) /**< \brief (SSC_RCMR) Continuous Receive Clock */ +#define SSC_RCMR_CKG_TRANSFER (0x2u << 6) /**< \brief (SSC_RCMR) Receive Clock only during data transfers */ +#define SSC_RCMR_START_Pos 8 +#define SSC_RCMR_START_Msk (0xfu << SSC_RCMR_START_Pos) /**< \brief (SSC_RCMR) Receive Start Selection */ +#define SSC_RCMR_START_CONTINUOUS (0x0u << 8) /**< \brief (SSC_RCMR) Continuous, as soon as the receiver is enabled, and immediately after the end of transfer of the previous data. */ +#define SSC_RCMR_START_TRANSMIT (0x1u << 8) /**< \brief (SSC_RCMR) Transmit start */ +#define SSC_RCMR_START_RF_LOW (0x2u << 8) /**< \brief (SSC_RCMR) Detection of a low level on RF signal */ +#define SSC_RCMR_START_RF_HIGH (0x3u << 8) /**< \brief (SSC_RCMR) Detection of a high level on RF signal */ +#define SSC_RCMR_START_RF_FALLING (0x4u << 8) /**< \brief (SSC_RCMR) Detection of a falling edge on RF signal */ +#define SSC_RCMR_START_RF_RISING (0x5u << 8) /**< \brief (SSC_RCMR) Detection of a rising edge on RF signal */ +#define SSC_RCMR_START_RF_LEVEL (0x6u << 8) /**< \brief (SSC_RCMR) Detection of any level change on RF signal */ +#define SSC_RCMR_START_RF_EDGE (0x7u << 8) /**< \brief (SSC_RCMR) Detection of any edge on RF signal */ +#define SSC_RCMR_START_CMP_0 (0x8u << 8) /**< \brief (SSC_RCMR) Compare 0 */ +#define SSC_RCMR_STOP (0x1u << 12) /**< \brief (SSC_RCMR) Receive Stop Selection */ +#define SSC_RCMR_STTDLY_Pos 16 +#define SSC_RCMR_STTDLY_Msk (0xffu << SSC_RCMR_STTDLY_Pos) /**< \brief (SSC_RCMR) Receive Start Delay */ +#define SSC_RCMR_STTDLY(value) ((SSC_RCMR_STTDLY_Msk & ((value) << SSC_RCMR_STTDLY_Pos))) +#define SSC_RCMR_PERIOD_Pos 24 +#define SSC_RCMR_PERIOD_Msk (0xffu << SSC_RCMR_PERIOD_Pos) /**< \brief (SSC_RCMR) Receive Period Divider Selection */ +#define SSC_RCMR_PERIOD(value) ((SSC_RCMR_PERIOD_Msk & ((value) << SSC_RCMR_PERIOD_Pos))) +/* -------- SSC_RFMR : (SSC Offset: 0x14) Receive Frame Mode Register -------- */ +#define SSC_RFMR_DATLEN_Pos 0 +#define SSC_RFMR_DATLEN_Msk (0x1fu << SSC_RFMR_DATLEN_Pos) /**< \brief (SSC_RFMR) Data Length */ +#define SSC_RFMR_DATLEN(value) ((SSC_RFMR_DATLEN_Msk & ((value) << SSC_RFMR_DATLEN_Pos))) +#define SSC_RFMR_LOOP (0x1u << 5) /**< \brief (SSC_RFMR) Loop Mode */ +#define SSC_RFMR_MSBF (0x1u << 7) /**< \brief (SSC_RFMR) Most Significant Bit First */ +#define SSC_RFMR_DATNB_Pos 8 +#define SSC_RFMR_DATNB_Msk (0xfu << SSC_RFMR_DATNB_Pos) /**< \brief (SSC_RFMR) Data Number per Frame */ +#define SSC_RFMR_DATNB(value) ((SSC_RFMR_DATNB_Msk & ((value) << SSC_RFMR_DATNB_Pos))) +#define SSC_RFMR_FSLEN_Pos 16 +#define SSC_RFMR_FSLEN_Msk (0xfu << SSC_RFMR_FSLEN_Pos) /**< \brief (SSC_RFMR) Receive Frame Sync Length */ +#define SSC_RFMR_FSLEN(value) ((SSC_RFMR_FSLEN_Msk & ((value) << SSC_RFMR_FSLEN_Pos))) +#define SSC_RFMR_FSOS_Pos 20 +#define SSC_RFMR_FSOS_Msk (0x7u << SSC_RFMR_FSOS_Pos) /**< \brief (SSC_RFMR) Receive Frame Sync Output Selection */ +#define SSC_RFMR_FSOS_NONE (0x0u << 20) /**< \brief (SSC_RFMR) None */ +#define SSC_RFMR_FSOS_NEGATIVE (0x1u << 20) /**< \brief (SSC_RFMR) Negative Pulse */ +#define SSC_RFMR_FSOS_POSITIVE (0x2u << 20) /**< \brief (SSC_RFMR) Positive Pulse */ +#define SSC_RFMR_FSOS_LOW (0x3u << 20) /**< \brief (SSC_RFMR) Driven Low during data transfer */ +#define SSC_RFMR_FSOS_HIGH (0x4u << 20) /**< \brief (SSC_RFMR) Driven High during data transfer */ +#define SSC_RFMR_FSOS_TOGGLING (0x5u << 20) /**< \brief (SSC_RFMR) Toggling at each start of data transfer */ +#define SSC_RFMR_FSEDGE (0x1u << 24) /**< \brief (SSC_RFMR) Frame Sync Edge Detection */ +#define SSC_RFMR_FSEDGE_POSITIVE (0x0u << 24) /**< \brief (SSC_RFMR) Positive Edge Detection */ +#define SSC_RFMR_FSEDGE_NEGATIVE (0x1u << 24) /**< \brief (SSC_RFMR) Negative Edge Detection */ +#define SSC_RFMR_FSLEN_EXT_Pos 28 +#define SSC_RFMR_FSLEN_EXT_Msk (0xfu << SSC_RFMR_FSLEN_EXT_Pos) /**< \brief (SSC_RFMR) FSLEN Field Extension */ +#define SSC_RFMR_FSLEN_EXT(value) ((SSC_RFMR_FSLEN_EXT_Msk & ((value) << SSC_RFMR_FSLEN_EXT_Pos))) +/* -------- SSC_TCMR : (SSC Offset: 0x18) Transmit Clock Mode Register -------- */ +#define SSC_TCMR_CKS_Pos 0 +#define SSC_TCMR_CKS_Msk (0x3u << SSC_TCMR_CKS_Pos) /**< \brief (SSC_TCMR) Transmit Clock Selection */ +#define SSC_TCMR_CKS_MCK (0x0u << 0) /**< \brief (SSC_TCMR) Divided Clock */ +#define SSC_TCMR_CKS_TK (0x1u << 0) /**< \brief (SSC_TCMR) TK Clock signal */ +#define SSC_TCMR_CKS_RK (0x2u << 0) /**< \brief (SSC_TCMR) RK pin */ +#define SSC_TCMR_CKO_Pos 2 +#define SSC_TCMR_CKO_Msk (0x7u << SSC_TCMR_CKO_Pos) /**< \brief (SSC_TCMR) Transmit Clock Output Mode Selection */ +#define SSC_TCMR_CKO_NONE (0x0u << 2) /**< \brief (SSC_TCMR) None */ +#define SSC_TCMR_CKO_CONTINUOUS (0x1u << 2) /**< \brief (SSC_TCMR) Continuous Receive Clock */ +#define SSC_TCMR_CKO_TRANSFER (0x2u << 2) /**< \brief (SSC_TCMR) Transmit Clock only during data transfers */ +#define SSC_TCMR_CKI (0x1u << 5) /**< \brief (SSC_TCMR) Transmit Clock Inversion */ +#define SSC_TCMR_CKG_Pos 6 +#define SSC_TCMR_CKG_Msk (0x3u << SSC_TCMR_CKG_Pos) /**< \brief (SSC_TCMR) Transmit Clock Gating Selection */ +#define SSC_TCMR_CKG_NONE (0x0u << 6) /**< \brief (SSC_TCMR) None */ +#define SSC_TCMR_CKG_CONTINUOUS (0x1u << 6) /**< \brief (SSC_TCMR) Transmit Clock enabled only if TF Low */ +#define SSC_TCMR_CKG_TRANSFER (0x2u << 6) /**< \brief (SSC_TCMR) Transmit Clock enabled only if TF High */ +#define SSC_TCMR_START_Pos 8 +#define SSC_TCMR_START_Msk (0xfu << SSC_TCMR_START_Pos) /**< \brief (SSC_TCMR) Transmit Start Selection */ +#define SSC_TCMR_START_CONTINUOUS (0x0u << 8) /**< \brief (SSC_TCMR) Continuous, as soon as a word is written in the SSC_THR Register (if Transmit is enabled), and immediately after the end of transfer of the previous data. */ +#define SSC_TCMR_START_RECEIVE (0x1u << 8) /**< \brief (SSC_TCMR) Receive start */ +#define SSC_TCMR_START_RF_LOW (0x2u << 8) /**< \brief (SSC_TCMR) Detection of a low level on TF signal */ +#define SSC_TCMR_START_RF_HIGH (0x3u << 8) /**< \brief (SSC_TCMR) Detection of a high level on TF signal */ +#define SSC_TCMR_START_RF_FALLING (0x4u << 8) /**< \brief (SSC_TCMR) Detection of a falling edge on TF signal */ +#define SSC_TCMR_START_RF_RISING (0x5u << 8) /**< \brief (SSC_TCMR) Detection of a rising edge on TF signal */ +#define SSC_TCMR_START_RF_LEVEL (0x6u << 8) /**< \brief (SSC_TCMR) Detection of any level change on TF signal */ +#define SSC_TCMR_START_RF_EDGE (0x7u << 8) /**< \brief (SSC_TCMR) Detection of any edge on TF signal */ +#define SSC_TCMR_START_CMP_0 (0x8u << 8) /**< \brief (SSC_TCMR) Compare 0 */ +#define SSC_TCMR_STTDLY_Pos 16 +#define SSC_TCMR_STTDLY_Msk (0xffu << SSC_TCMR_STTDLY_Pos) /**< \brief (SSC_TCMR) Transmit Start Delay */ +#define SSC_TCMR_STTDLY(value) ((SSC_TCMR_STTDLY_Msk & ((value) << SSC_TCMR_STTDLY_Pos))) +#define SSC_TCMR_PERIOD_Pos 24 +#define SSC_TCMR_PERIOD_Msk (0xffu << SSC_TCMR_PERIOD_Pos) /**< \brief (SSC_TCMR) Transmit Period Divider Selection */ +#define SSC_TCMR_PERIOD(value) ((SSC_TCMR_PERIOD_Msk & ((value) << SSC_TCMR_PERIOD_Pos))) +/* -------- SSC_TFMR : (SSC Offset: 0x1C) Transmit Frame Mode Register -------- */ +#define SSC_TFMR_DATLEN_Pos 0 +#define SSC_TFMR_DATLEN_Msk (0x1fu << SSC_TFMR_DATLEN_Pos) /**< \brief (SSC_TFMR) Data Length */ +#define SSC_TFMR_DATLEN(value) ((SSC_TFMR_DATLEN_Msk & ((value) << SSC_TFMR_DATLEN_Pos))) +#define SSC_TFMR_DATDEF (0x1u << 5) /**< \brief (SSC_TFMR) Data Default Value */ +#define SSC_TFMR_MSBF (0x1u << 7) /**< \brief (SSC_TFMR) Most Significant Bit First */ +#define SSC_TFMR_DATNB_Pos 8 +#define SSC_TFMR_DATNB_Msk (0xfu << SSC_TFMR_DATNB_Pos) /**< \brief (SSC_TFMR) Data Number per frame */ +#define SSC_TFMR_DATNB(value) ((SSC_TFMR_DATNB_Msk & ((value) << SSC_TFMR_DATNB_Pos))) +#define SSC_TFMR_FSLEN_Pos 16 +#define SSC_TFMR_FSLEN_Msk (0xfu << SSC_TFMR_FSLEN_Pos) /**< \brief (SSC_TFMR) Transmit Frame Sync Length */ +#define SSC_TFMR_FSLEN(value) ((SSC_TFMR_FSLEN_Msk & ((value) << SSC_TFMR_FSLEN_Pos))) +#define SSC_TFMR_FSOS_Pos 20 +#define SSC_TFMR_FSOS_Msk (0x7u << SSC_TFMR_FSOS_Pos) /**< \brief (SSC_TFMR) Transmit Frame Sync Output Selection */ +#define SSC_TFMR_FSOS_NONE (0x0u << 20) /**< \brief (SSC_TFMR) None */ +#define SSC_TFMR_FSOS_NEGATIVE (0x1u << 20) /**< \brief (SSC_TFMR) Negative Pulse */ +#define SSC_TFMR_FSOS_POSITIVE (0x2u << 20) /**< \brief (SSC_TFMR) Positive Pulse */ +#define SSC_TFMR_FSOS_LOW (0x3u << 20) /**< \brief (SSC_TFMR) Driven Low during data transfer */ +#define SSC_TFMR_FSOS_HIGH (0x4u << 20) /**< \brief (SSC_TFMR) Driven High during data transfer */ +#define SSC_TFMR_FSOS_TOGGLING (0x5u << 20) /**< \brief (SSC_TFMR) Toggling at each start of data transfer */ +#define SSC_TFMR_FSDEN (0x1u << 23) /**< \brief (SSC_TFMR) Frame Sync Data Enable */ +#define SSC_TFMR_FSEDGE (0x1u << 24) /**< \brief (SSC_TFMR) Frame Sync Edge Detection */ +#define SSC_TFMR_FSEDGE_POSITIVE (0x0u << 24) /**< \brief (SSC_TFMR) Positive Edge Detection */ +#define SSC_TFMR_FSEDGE_NEGATIVE (0x1u << 24) /**< \brief (SSC_TFMR) Negative Edge Detection */ +#define SSC_TFMR_FSLEN_EXT_Pos 28 +#define SSC_TFMR_FSLEN_EXT_Msk (0xfu << SSC_TFMR_FSLEN_EXT_Pos) /**< \brief (SSC_TFMR) FSLEN Field Extension */ +#define SSC_TFMR_FSLEN_EXT(value) ((SSC_TFMR_FSLEN_EXT_Msk & ((value) << SSC_TFMR_FSLEN_EXT_Pos))) +/* -------- SSC_RHR : (SSC Offset: 0x20) Receive Holding Register -------- */ +#define SSC_RHR_RDAT_Pos 0 +#define SSC_RHR_RDAT_Msk (0xffffffffu << SSC_RHR_RDAT_Pos) /**< \brief (SSC_RHR) Receive Data */ +/* -------- SSC_THR : (SSC Offset: 0x24) Transmit Holding Register -------- */ +#define SSC_THR_TDAT_Pos 0 +#define SSC_THR_TDAT_Msk (0xffffffffu << SSC_THR_TDAT_Pos) /**< \brief (SSC_THR) Transmit Data */ +#define SSC_THR_TDAT(value) ((SSC_THR_TDAT_Msk & ((value) << SSC_THR_TDAT_Pos))) +/* -------- SSC_RSHR : (SSC Offset: 0x30) Receive Sync. Holding Register -------- */ +#define SSC_RSHR_RSDAT_Pos 0 +#define SSC_RSHR_RSDAT_Msk (0xffffu << SSC_RSHR_RSDAT_Pos) /**< \brief (SSC_RSHR) Receive Synchronization Data */ +/* -------- SSC_TSHR : (SSC Offset: 0x34) Transmit Sync. Holding Register -------- */ +#define SSC_TSHR_TSDAT_Pos 0 +#define SSC_TSHR_TSDAT_Msk (0xffffu << SSC_TSHR_TSDAT_Pos) /**< \brief (SSC_TSHR) Transmit Synchronization Data */ +#define SSC_TSHR_TSDAT(value) ((SSC_TSHR_TSDAT_Msk & ((value) << SSC_TSHR_TSDAT_Pos))) +/* -------- SSC_RC0R : (SSC Offset: 0x38) Receive Compare 0 Register -------- */ +#define SSC_RC0R_CP0_Pos 0 +#define SSC_RC0R_CP0_Msk (0xffffu << SSC_RC0R_CP0_Pos) /**< \brief (SSC_RC0R) Receive Compare Data 0 */ +#define SSC_RC0R_CP0(value) ((SSC_RC0R_CP0_Msk & ((value) << SSC_RC0R_CP0_Pos))) +/* -------- SSC_RC1R : (SSC Offset: 0x3C) Receive Compare 1 Register -------- */ +#define SSC_RC1R_CP1_Pos 0 +#define SSC_RC1R_CP1_Msk (0xffffu << SSC_RC1R_CP1_Pos) /**< \brief (SSC_RC1R) Receive Compare Data 1 */ +#define SSC_RC1R_CP1(value) ((SSC_RC1R_CP1_Msk & ((value) << SSC_RC1R_CP1_Pos))) +/* -------- SSC_SR : (SSC Offset: 0x40) Status Register -------- */ +#define SSC_SR_TXRDY (0x1u << 0) /**< \brief (SSC_SR) Transmit Ready */ +#define SSC_SR_TXEMPTY (0x1u << 1) /**< \brief (SSC_SR) Transmit Empty */ +#define SSC_SR_ENDTX (0x1u << 2) /**< \brief (SSC_SR) End of Transmission */ +#define SSC_SR_TXBUFE (0x1u << 3) /**< \brief (SSC_SR) Transmit Buffer Empty */ +#define SSC_SR_RXRDY (0x1u << 4) /**< \brief (SSC_SR) Receive Ready */ +#define SSC_SR_OVRUN (0x1u << 5) /**< \brief (SSC_SR) Receive Overrun */ +#define SSC_SR_ENDRX (0x1u << 6) /**< \brief (SSC_SR) End of Reception */ +#define SSC_SR_RXBUFF (0x1u << 7) /**< \brief (SSC_SR) Receive Buffer Full */ +#define SSC_SR_CP0 (0x1u << 8) /**< \brief (SSC_SR) Compare 0 */ +#define SSC_SR_CP1 (0x1u << 9) /**< \brief (SSC_SR) Compare 1 */ +#define SSC_SR_TXSYN (0x1u << 10) /**< \brief (SSC_SR) Transmit Sync */ +#define SSC_SR_RXSYN (0x1u << 11) /**< \brief (SSC_SR) Receive Sync */ +#define SSC_SR_TXEN (0x1u << 16) /**< \brief (SSC_SR) Transmit Enable */ +#define SSC_SR_RXEN (0x1u << 17) /**< \brief (SSC_SR) Receive Enable */ +/* -------- SSC_IER : (SSC Offset: 0x44) Interrupt Enable Register -------- */ +#define SSC_IER_TXRDY (0x1u << 0) /**< \brief (SSC_IER) Transmit Ready Interrupt Enable */ +#define SSC_IER_TXEMPTY (0x1u << 1) /**< \brief (SSC_IER) Transmit Empty Interrupt Enable */ +#define SSC_IER_ENDTX (0x1u << 2) /**< \brief (SSC_IER) End of Transmission Interrupt Enable */ +#define SSC_IER_TXBUFE (0x1u << 3) /**< \brief (SSC_IER) Transmit Buffer Empty Interrupt Enable */ +#define SSC_IER_RXRDY (0x1u << 4) /**< \brief (SSC_IER) Receive Ready Interrupt Enable */ +#define SSC_IER_OVRUN (0x1u << 5) /**< \brief (SSC_IER) Receive Overrun Interrupt Enable */ +#define SSC_IER_ENDRX (0x1u << 6) /**< \brief (SSC_IER) End of Reception Interrupt Enable */ +#define SSC_IER_RXBUFF (0x1u << 7) /**< \brief (SSC_IER) Receive Buffer Full Interrupt Enable */ +#define SSC_IER_CP0 (0x1u << 8) /**< \brief (SSC_IER) Compare 0 Interrupt Enable */ +#define SSC_IER_CP1 (0x1u << 9) /**< \brief (SSC_IER) Compare 1 Interrupt Enable */ +#define SSC_IER_TXSYN (0x1u << 10) /**< \brief (SSC_IER) Tx Sync Interrupt Enable */ +#define SSC_IER_RXSYN (0x1u << 11) /**< \brief (SSC_IER) Rx Sync Interrupt Enable */ +/* -------- SSC_IDR : (SSC Offset: 0x48) Interrupt Disable Register -------- */ +#define SSC_IDR_TXRDY (0x1u << 0) /**< \brief (SSC_IDR) Transmit Ready Interrupt Disable */ +#define SSC_IDR_TXEMPTY (0x1u << 1) /**< \brief (SSC_IDR) Transmit Empty Interrupt Disable */ +#define SSC_IDR_ENDTX (0x1u << 2) /**< \brief (SSC_IDR) End of Transmission Interrupt Disable */ +#define SSC_IDR_TXBUFE (0x1u << 3) /**< \brief (SSC_IDR) Transmit Buffer Empty Interrupt Disable */ +#define SSC_IDR_RXRDY (0x1u << 4) /**< \brief (SSC_IDR) Receive Ready Interrupt Disable */ +#define SSC_IDR_OVRUN (0x1u << 5) /**< \brief (SSC_IDR) Receive Overrun Interrupt Disable */ +#define SSC_IDR_ENDRX (0x1u << 6) /**< \brief (SSC_IDR) End of Reception Interrupt Disable */ +#define SSC_IDR_RXBUFF (0x1u << 7) /**< \brief (SSC_IDR) Receive Buffer Full Interrupt Disable */ +#define SSC_IDR_CP0 (0x1u << 8) /**< \brief (SSC_IDR) Compare 0 Interrupt Disable */ +#define SSC_IDR_CP1 (0x1u << 9) /**< \brief (SSC_IDR) Compare 1 Interrupt Disable */ +#define SSC_IDR_TXSYN (0x1u << 10) /**< \brief (SSC_IDR) Tx Sync Interrupt Enable */ +#define SSC_IDR_RXSYN (0x1u << 11) /**< \brief (SSC_IDR) Rx Sync Interrupt Enable */ +/* -------- SSC_IMR : (SSC Offset: 0x4C) Interrupt Mask Register -------- */ +#define SSC_IMR_TXRDY (0x1u << 0) /**< \brief (SSC_IMR) Transmit Ready Interrupt Mask */ +#define SSC_IMR_TXEMPTY (0x1u << 1) /**< \brief (SSC_IMR) Transmit Empty Interrupt Mask */ +#define SSC_IMR_ENDTX (0x1u << 2) /**< \brief (SSC_IMR) End of Transmission Interrupt Mask */ +#define SSC_IMR_TXBUFE (0x1u << 3) /**< \brief (SSC_IMR) Transmit Buffer Empty Interrupt Mask */ +#define SSC_IMR_RXRDY (0x1u << 4) /**< \brief (SSC_IMR) Receive Ready Interrupt Mask */ +#define SSC_IMR_OVRUN (0x1u << 5) /**< \brief (SSC_IMR) Receive Overrun Interrupt Mask */ +#define SSC_IMR_ENDRX (0x1u << 6) /**< \brief (SSC_IMR) End of Reception Interrupt Mask */ +#define SSC_IMR_RXBUFF (0x1u << 7) /**< \brief (SSC_IMR) Receive Buffer Full Interrupt Mask */ +#define SSC_IMR_CP0 (0x1u << 8) /**< \brief (SSC_IMR) Compare 0 Interrupt Mask */ +#define SSC_IMR_CP1 (0x1u << 9) /**< \brief (SSC_IMR) Compare 1 Interrupt Mask */ +#define SSC_IMR_TXSYN (0x1u << 10) /**< \brief (SSC_IMR) Tx Sync Interrupt Mask */ +#define SSC_IMR_RXSYN (0x1u << 11) /**< \brief (SSC_IMR) Rx Sync Interrupt Mask */ +/* -------- SSC_WPMR : (SSC Offset: 0xE4) Write Protect Mode Register -------- */ +#define SSC_WPMR_WPEN (0x1u << 0) /**< \brief (SSC_WPMR) Write Protect Enable */ +#define SSC_WPMR_WPKEY_Pos 8 +#define SSC_WPMR_WPKEY_Msk (0xffffffu << SSC_WPMR_WPKEY_Pos) /**< \brief (SSC_WPMR) Write Protect KEY */ +#define SSC_WPMR_WPKEY(value) ((SSC_WPMR_WPKEY_Msk & ((value) << SSC_WPMR_WPKEY_Pos))) +/* -------- SSC_WPSR : (SSC Offset: 0xE8) Write Protect Status Register -------- */ +#define SSC_WPSR_WPVS (0x1u << 0) /**< \brief (SSC_WPSR) Write Protect Violation Status */ +#define SSC_WPSR_WPVSRC_Pos 8 +#define SSC_WPSR_WPVSRC_Msk (0xffffu << SSC_WPSR_WPVSRC_Pos) /**< \brief (SSC_WPSR) Write Protect Violation Source */ +/* -------- SSC_RPR : (SSC Offset: 0x100) Receive Pointer Register -------- */ +#define SSC_RPR_RXPTR_Pos 0 +#define SSC_RPR_RXPTR_Msk (0xffffffffu << SSC_RPR_RXPTR_Pos) /**< \brief (SSC_RPR) Receive Pointer Register */ +#define SSC_RPR_RXPTR(value) ((SSC_RPR_RXPTR_Msk & ((value) << SSC_RPR_RXPTR_Pos))) +/* -------- SSC_RCR : (SSC Offset: 0x104) Receive Counter Register -------- */ +#define SSC_RCR_RXCTR_Pos 0 +#define SSC_RCR_RXCTR_Msk (0xffffu << SSC_RCR_RXCTR_Pos) /**< \brief (SSC_RCR) Receive Counter Register */ +#define SSC_RCR_RXCTR(value) ((SSC_RCR_RXCTR_Msk & ((value) << SSC_RCR_RXCTR_Pos))) +/* -------- SSC_TPR : (SSC Offset: 0x108) Transmit Pointer Register -------- */ +#define SSC_TPR_TXPTR_Pos 0 +#define SSC_TPR_TXPTR_Msk (0xffffffffu << SSC_TPR_TXPTR_Pos) /**< \brief (SSC_TPR) Transmit Counter Register */ +#define SSC_TPR_TXPTR(value) ((SSC_TPR_TXPTR_Msk & ((value) << SSC_TPR_TXPTR_Pos))) +/* -------- SSC_TCR : (SSC Offset: 0x10C) Transmit Counter Register -------- */ +#define SSC_TCR_TXCTR_Pos 0 +#define SSC_TCR_TXCTR_Msk (0xffffu << SSC_TCR_TXCTR_Pos) /**< \brief (SSC_TCR) Transmit Counter Register */ +#define SSC_TCR_TXCTR(value) ((SSC_TCR_TXCTR_Msk & ((value) << SSC_TCR_TXCTR_Pos))) +/* -------- SSC_RNPR : (SSC Offset: 0x110) Receive Next Pointer Register -------- */ +#define SSC_RNPR_RXNPTR_Pos 0 +#define SSC_RNPR_RXNPTR_Msk (0xffffffffu << SSC_RNPR_RXNPTR_Pos) /**< \brief (SSC_RNPR) Receive Next Pointer */ +#define SSC_RNPR_RXNPTR(value) ((SSC_RNPR_RXNPTR_Msk & ((value) << SSC_RNPR_RXNPTR_Pos))) +/* -------- SSC_RNCR : (SSC Offset: 0x114) Receive Next Counter Register -------- */ +#define SSC_RNCR_RXNCTR_Pos 0 +#define SSC_RNCR_RXNCTR_Msk (0xffffu << SSC_RNCR_RXNCTR_Pos) /**< \brief (SSC_RNCR) Receive Next Counter */ +#define SSC_RNCR_RXNCTR(value) ((SSC_RNCR_RXNCTR_Msk & ((value) << SSC_RNCR_RXNCTR_Pos))) +/* -------- SSC_TNPR : (SSC Offset: 0x118) Transmit Next Pointer Register -------- */ +#define SSC_TNPR_TXNPTR_Pos 0 +#define SSC_TNPR_TXNPTR_Msk (0xffffffffu << SSC_TNPR_TXNPTR_Pos) /**< \brief (SSC_TNPR) Transmit Next Pointer */ +#define SSC_TNPR_TXNPTR(value) ((SSC_TNPR_TXNPTR_Msk & ((value) << SSC_TNPR_TXNPTR_Pos))) +/* -------- SSC_TNCR : (SSC Offset: 0x11C) Transmit Next Counter Register -------- */ +#define SSC_TNCR_TXNCTR_Pos 0 +#define SSC_TNCR_TXNCTR_Msk (0xffffu << SSC_TNCR_TXNCTR_Pos) /**< \brief (SSC_TNCR) Transmit Counter Next */ +#define SSC_TNCR_TXNCTR(value) ((SSC_TNCR_TXNCTR_Msk & ((value) << SSC_TNCR_TXNCTR_Pos))) +/* -------- SSC_PTCR : (SSC Offset: 0x120) Transfer Control Register -------- */ +#define SSC_PTCR_RXTEN (0x1u << 0) /**< \brief (SSC_PTCR) Receiver Transfer Enable */ +#define SSC_PTCR_RXTDIS (0x1u << 1) /**< \brief (SSC_PTCR) Receiver Transfer Disable */ +#define SSC_PTCR_TXTEN (0x1u << 8) /**< \brief (SSC_PTCR) Transmitter Transfer Enable */ +#define SSC_PTCR_TXTDIS (0x1u << 9) /**< \brief (SSC_PTCR) Transmitter Transfer Disable */ +/* -------- SSC_PTSR : (SSC Offset: 0x124) Transfer Status Register -------- */ +#define SSC_PTSR_RXTEN (0x1u << 0) /**< \brief (SSC_PTSR) Receiver Transfer Enable */ +#define SSC_PTSR_TXTEN (0x1u << 8) /**< \brief (SSC_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3S8_SSC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_supc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_supc.h new file mode 100644 index 000000000..609e2bf4b --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_supc.h @@ -0,0 +1,322 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_SUPC_COMPONENT_ +#define _SAM3S8_SUPC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Supply Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_SUPC Supply Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Supc hardware registers */ +typedef struct { + WoReg SUPC_CR; /**< \brief (Supc Offset: 0x00) Supply Controller Control Register */ + RwReg SUPC_SMMR; /**< \brief (Supc Offset: 0x04) Supply Controller Supply Monitor Mode Register */ + RwReg SUPC_MR; /**< \brief (Supc Offset: 0x08) Supply Controller Mode Register */ + RwReg SUPC_WUMR; /**< \brief (Supc Offset: 0x0C) Supply Controller Wake Up Mode Register */ + RwReg SUPC_WUIR; /**< \brief (Supc Offset: 0x10) Supply Controller Wake Up Inputs Register */ + RoReg SUPC_SR; /**< \brief (Supc Offset: 0x14) Supply Controller Status Register */ +} Supc; +#endif /* __ASSEMBLY__ */ +/* -------- SUPC_CR : (SUPC Offset: 0x00) Supply Controller Control Register -------- */ +#define SUPC_CR_VROFF (0x1u << 2) /**< \brief (SUPC_CR) Voltage Regulator Off */ +#define SUPC_CR_VROFF_NO_EFFECT (0x0u << 2) /**< \brief (SUPC_CR) no effect. */ +#define SUPC_CR_VROFF_STOP_VREG (0x1u << 2) /**< \brief (SUPC_CR) if KEY is correct, asserts vddcore_nreset and stops the voltage regulator. */ +#define SUPC_CR_XTALSEL (0x1u << 3) /**< \brief (SUPC_CR) Crystal Oscillator Select */ +#define SUPC_CR_XTALSEL_NO_EFFECT (0x0u << 3) /**< \brief (SUPC_CR) no effect. */ +#define SUPC_CR_XTALSEL_CRYSTAL_SEL (0x1u << 3) /**< \brief (SUPC_CR) if KEY is correct, switches the slow clock on the crystal oscillator output. */ +#define SUPC_CR_KEY_Pos 24 +#define SUPC_CR_KEY_Msk (0xffu << SUPC_CR_KEY_Pos) /**< \brief (SUPC_CR) Password */ +#define SUPC_CR_KEY(value) ((SUPC_CR_KEY_Msk & ((value) << SUPC_CR_KEY_Pos))) +/* -------- SUPC_SMMR : (SUPC Offset: 0x04) Supply Controller Supply Monitor Mode Register -------- */ +#define SUPC_SMMR_SMTH_Pos 0 +#define SUPC_SMMR_SMTH_Msk (0xfu << SUPC_SMMR_SMTH_Pos) /**< \brief (SUPC_SMMR) Supply Monitor Threshold */ +#define SUPC_SMMR_SMTH_1_9V (0x0u << 0) /**< \brief (SUPC_SMMR) 1.9 V */ +#define SUPC_SMMR_SMTH_2_0V (0x1u << 0) /**< \brief (SUPC_SMMR) 2.0 V */ +#define SUPC_SMMR_SMTH_2_1V (0x2u << 0) /**< \brief (SUPC_SMMR) 2.1 V */ +#define SUPC_SMMR_SMTH_2_2V (0x3u << 0) /**< \brief (SUPC_SMMR) 2.2 V */ +#define SUPC_SMMR_SMTH_2_3V (0x4u << 0) /**< \brief (SUPC_SMMR) 2.3 V */ +#define SUPC_SMMR_SMTH_2_4V (0x5u << 0) /**< \brief (SUPC_SMMR) 2.4 V */ +#define SUPC_SMMR_SMTH_2_5V (0x6u << 0) /**< \brief (SUPC_SMMR) 2.5 V */ +#define SUPC_SMMR_SMTH_2_6V (0x7u << 0) /**< \brief (SUPC_SMMR) 2.6 V */ +#define SUPC_SMMR_SMTH_2_7V (0x8u << 0) /**< \brief (SUPC_SMMR) 2.7 V */ +#define SUPC_SMMR_SMTH_2_8V (0x9u << 0) /**< \brief (SUPC_SMMR) 2.8 V */ +#define SUPC_SMMR_SMTH_2_9V (0xAu << 0) /**< \brief (SUPC_SMMR) 2.9 V */ +#define SUPC_SMMR_SMTH_3_0V (0xBu << 0) /**< \brief (SUPC_SMMR) 3.0 V */ +#define SUPC_SMMR_SMTH_3_1V (0xCu << 0) /**< \brief (SUPC_SMMR) 3.1 V */ +#define SUPC_SMMR_SMTH_3_2V (0xDu << 0) /**< \brief (SUPC_SMMR) 3.2 V */ +#define SUPC_SMMR_SMTH_3_3V (0xEu << 0) /**< \brief (SUPC_SMMR) 3.3 V */ +#define SUPC_SMMR_SMTH_3_4V (0xFu << 0) /**< \brief (SUPC_SMMR) 3.4 V */ +#define SUPC_SMMR_SMSMPL_Pos 8 +#define SUPC_SMMR_SMSMPL_Msk (0x7u << SUPC_SMMR_SMSMPL_Pos) /**< \brief (SUPC_SMMR) Supply Monitor Sampling Period */ +#define SUPC_SMMR_SMSMPL_SMD (0x0u << 8) /**< \brief (SUPC_SMMR) Supply Monitor disabled */ +#define SUPC_SMMR_SMSMPL_CSM (0x1u << 8) /**< \brief (SUPC_SMMR) Continuous Supply Monitor */ +#define SUPC_SMMR_SMSMPL_32SLCK (0x2u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 32 SLCK periods */ +#define SUPC_SMMR_SMSMPL_256SLCK (0x3u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 256 SLCK periods */ +#define SUPC_SMMR_SMSMPL_2048SLCK (0x4u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 2,048 SLCK periods */ +#define SUPC_SMMR_SMRSTEN (0x1u << 12) /**< \brief (SUPC_SMMR) Supply Monitor Reset Enable */ +#define SUPC_SMMR_SMRSTEN_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_SMMR) the core reset signal "vddcore_nreset" is not affected when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMRSTEN_ENABLE (0x1u << 12) /**< \brief (SUPC_SMMR) the core reset signal, vddcore_nreset is asserted when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMIEN (0x1u << 13) /**< \brief (SUPC_SMMR) Supply Monitor Interrupt Enable */ +#define SUPC_SMMR_SMIEN_NOT_ENABLE (0x0u << 13) /**< \brief (SUPC_SMMR) the SUPC interrupt signal is not affected when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMIEN_ENABLE (0x1u << 13) /**< \brief (SUPC_SMMR) the SUPC interrupt signal is asserted when a supply monitor detection occurs. */ +/* -------- SUPC_MR : (SUPC Offset: 0x08) Supply Controller Mode Register -------- */ +#define SUPC_MR_BODRSTEN (0x1u << 12) /**< \brief (SUPC_MR) Brownout Detector Reset Enable */ +#define SUPC_MR_BODRSTEN_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_MR) the core reset signal "vddcore_nreset" is not affected when a brownout detection occurs. */ +#define SUPC_MR_BODRSTEN_ENABLE (0x1u << 12) /**< \brief (SUPC_MR) the core reset signal, vddcore_nreset is asserted when a brownout detection occurs. */ +#define SUPC_MR_BODDIS (0x1u << 13) /**< \brief (SUPC_MR) Brownout Detector Disable */ +#define SUPC_MR_BODDIS_ENABLE (0x0u << 13) /**< \brief (SUPC_MR) the core brownout detector is enabled. */ +#define SUPC_MR_BODDIS_DISABLE (0x1u << 13) /**< \brief (SUPC_MR) the core brownout detector is disabled. */ +#define SUPC_MR_ONREG (0x1u << 14) /**< \brief (SUPC_MR) Voltage Regulator enable */ +#define SUPC_MR_ONREG_ONREG_UNUSED (0x0u << 14) /**< \brief (SUPC_MR) Voltage Regulator is not used */ +#define SUPC_MR_ONREG_ONREG_USED (0x1u << 14) /**< \brief (SUPC_MR) Voltage Regulator is used */ +#define SUPC_MR_OSCBYPASS (0x1u << 20) /**< \brief (SUPC_MR) Oscillator Bypass */ +#define SUPC_MR_OSCBYPASS_NO_EFFECT (0x0u << 20) /**< \brief (SUPC_MR) no effect. Clock selection depends on XTALSEL value. */ +#define SUPC_MR_OSCBYPASS_BYPASS (0x1u << 20) /**< \brief (SUPC_MR) the 32-KHz XTAL oscillator is selected and is put in bypass mode. */ +#define SUPC_MR_KEY_Pos 24 +#define SUPC_MR_KEY_Msk (0xffu << SUPC_MR_KEY_Pos) /**< \brief (SUPC_MR) Password Key */ +#define SUPC_MR_KEY(value) ((SUPC_MR_KEY_Msk & ((value) << SUPC_MR_KEY_Pos))) +/* -------- SUPC_WUMR : (SUPC Offset: 0x0C) Supply Controller Wake Up Mode Register -------- */ +#define SUPC_WUMR_SMEN (0x1u << 1) /**< \brief (SUPC_WUMR) Supply Monitor Wake Up Enable */ +#define SUPC_WUMR_SMEN_NOT_ENABLE (0x0u << 1) /**< \brief (SUPC_WUMR) the supply monitor detection has no wake up effect. */ +#define SUPC_WUMR_SMEN_ENABLE (0x1u << 1) /**< \brief (SUPC_WUMR) the supply monitor detection forces the wake up of the core power supply. */ +#define SUPC_WUMR_RTTEN (0x1u << 2) /**< \brief (SUPC_WUMR) Real Time Timer Wake Up Enable */ +#define SUPC_WUMR_RTTEN_NOT_ENABLE (0x0u << 2) /**< \brief (SUPC_WUMR) the RTT alarm signal has no wake up effect. */ +#define SUPC_WUMR_RTTEN_ENABLE (0x1u << 2) /**< \brief (SUPC_WUMR) the RTT alarm signal forces the wake up of the core power supply. */ +#define SUPC_WUMR_RTCEN (0x1u << 3) /**< \brief (SUPC_WUMR) Real Time Clock Wake Up Enable */ +#define SUPC_WUMR_RTCEN_NOT_ENABLE (0x0u << 3) /**< \brief (SUPC_WUMR) the RTC alarm signal has no wake up effect. */ +#define SUPC_WUMR_RTCEN_ENABLE (0x1u << 3) /**< \brief (SUPC_WUMR) the RTC alarm signal forces the wake up of the core power supply. */ +#define SUPC_WUMR_LPDBCEN0 (0x1u << 5) /**< \brief (SUPC_WUMR) Low power Debouncer ENable WKUP0 */ +#define SUPC_WUMR_LPDBCEN0_NOT_ENABLE (0x0u << 5) /**< \brief (SUPC_WUMR) the WKUP0 input pin is not connected with low power debouncer. */ +#define SUPC_WUMR_LPDBCEN0_ENABLE (0x1u << 5) /**< \brief (SUPC_WUMR) the WKUP0 input pin is connected with low power debouncer and can force the a core wake up. */ +#define SUPC_WUMR_LPDBCEN1 (0x1u << 6) /**< \brief (SUPC_WUMR) Low power Debouncer ENable WKUP1 */ +#define SUPC_WUMR_LPDBCEN1_NOT_ENABLE (0x0u << 6) /**< \brief (SUPC_WUMR) the WKUP1input pin is not connected with low power debouncer. */ +#define SUPC_WUMR_LPDBCEN1_ENABLE (0x1u << 6) /**< \brief (SUPC_WUMR) the WKUP1 input pin is connected with low power debouncer and can force the a core wake up. */ +#define SUPC_WUMR_LPDBCCLR (0x1u << 7) /**< \brief (SUPC_WUMR) Low power Debouncer Clear */ +#define SUPC_WUMR_LPDBCCLR_NOT_ENABLE (0x0u << 7) /**< \brief (SUPC_WUMR) a low power debounce event does not create an immediate clear on half GPBR registers. */ +#define SUPC_WUMR_LPDBCCLR_ENABLE (0x1u << 7) /**< \brief (SUPC_WUMR) a low power debounce event on WKUP0 or WKUP1 generates an immediate clear on half GPBR registers. */ +#define SUPC_WUMR_WKUPDBC_Pos 12 +#define SUPC_WUMR_WKUPDBC_Msk (0x7u << SUPC_WUMR_WKUPDBC_Pos) /**< \brief (SUPC_WUMR) Wake Up Inputs Debouncer Period */ +#define SUPC_WUMR_WKUPDBC_IMMEDIATE (0x0u << 12) /**< \brief (SUPC_WUMR) Immediate, no debouncing, detected active at least on one Slow Clock edge. */ +#define SUPC_WUMR_WKUPDBC_3_SCLK (0x1u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 3 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_32_SCLK (0x2u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 32 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_512_SCLK (0x3u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 512 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_4096_SCLK (0x4u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 4,096 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_32768_SCLK (0x5u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 32,768 SLCK periods */ +#define SUPC_WUMR_LPDBC_Pos 16 +#define SUPC_WUMR_LPDBC_Msk (0x7u << SUPC_WUMR_LPDBC_Pos) /**< \brief (SUPC_WUMR) Low Power DeBounCer Period */ +#define SUPC_WUMR_LPDBC_DISABLE (0x0u << 16) /**< \brief (SUPC_WUMR) Disable the low power debouncer. */ +#define SUPC_WUMR_LPDBC_2_RTCOUT0 (0x1u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 2 RTCOUT0 periods */ +#define SUPC_WUMR_LPDBC_3_RTCOUT0 (0x2u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 3 RTCOUT0 periods */ +#define SUPC_WUMR_LPDBC_4_RTCOUT0 (0x3u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 4 RTCOUT0 periods */ +#define SUPC_WUMR_LPDBC_5_RTCOUT0 (0x4u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 5 RTCOUT0 periods */ +#define SUPC_WUMR_LPDBC_6_RTCOUT0 (0x5u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 6 RTCOUT0 periods */ +#define SUPC_WUMR_LPDBC_7_RTCOUT0 (0x6u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 7 RTCOUT0 periods */ +#define SUPC_WUMR_LPDBC_8_RTCOUT0 (0x7u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in its active state for at least 8 RTCOUT0 periods */ +/* -------- SUPC_WUIR : (SUPC Offset: 0x10) Supply Controller Wake Up Inputs Register -------- */ +#define SUPC_WUIR_WKUPEN0 (0x1u << 0) /**< \brief (SUPC_WUIR) Wake Up Input Enable 0 */ +#define SUPC_WUIR_WKUPEN0_NOT_ENABLE (0x0u << 0) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN0_ENABLE (0x1u << 0) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN1 (0x1u << 1) /**< \brief (SUPC_WUIR) Wake Up Input Enable 1 */ +#define SUPC_WUIR_WKUPEN1_NOT_ENABLE (0x0u << 1) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN1_ENABLE (0x1u << 1) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN2 (0x1u << 2) /**< \brief (SUPC_WUIR) Wake Up Input Enable 2 */ +#define SUPC_WUIR_WKUPEN2_NOT_ENABLE (0x0u << 2) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN2_ENABLE (0x1u << 2) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN3 (0x1u << 3) /**< \brief (SUPC_WUIR) Wake Up Input Enable 3 */ +#define SUPC_WUIR_WKUPEN3_NOT_ENABLE (0x0u << 3) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN3_ENABLE (0x1u << 3) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN4 (0x1u << 4) /**< \brief (SUPC_WUIR) Wake Up Input Enable 4 */ +#define SUPC_WUIR_WKUPEN4_NOT_ENABLE (0x0u << 4) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN4_ENABLE (0x1u << 4) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN5 (0x1u << 5) /**< \brief (SUPC_WUIR) Wake Up Input Enable 5 */ +#define SUPC_WUIR_WKUPEN5_NOT_ENABLE (0x0u << 5) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN5_ENABLE (0x1u << 5) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN6 (0x1u << 6) /**< \brief (SUPC_WUIR) Wake Up Input Enable 6 */ +#define SUPC_WUIR_WKUPEN6_NOT_ENABLE (0x0u << 6) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN6_ENABLE (0x1u << 6) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN7 (0x1u << 7) /**< \brief (SUPC_WUIR) Wake Up Input Enable 7 */ +#define SUPC_WUIR_WKUPEN7_NOT_ENABLE (0x0u << 7) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN7_ENABLE (0x1u << 7) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN8 (0x1u << 8) /**< \brief (SUPC_WUIR) Wake Up Input Enable 8 */ +#define SUPC_WUIR_WKUPEN8_NOT_ENABLE (0x0u << 8) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN8_ENABLE (0x1u << 8) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN9 (0x1u << 9) /**< \brief (SUPC_WUIR) Wake Up Input Enable 9 */ +#define SUPC_WUIR_WKUPEN9_NOT_ENABLE (0x0u << 9) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN9_ENABLE (0x1u << 9) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN10 (0x1u << 10) /**< \brief (SUPC_WUIR) Wake Up Input Enable 10 */ +#define SUPC_WUIR_WKUPEN10_NOT_ENABLE (0x0u << 10) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN10_ENABLE (0x1u << 10) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN11 (0x1u << 11) /**< \brief (SUPC_WUIR) Wake Up Input Enable 11 */ +#define SUPC_WUIR_WKUPEN11_NOT_ENABLE (0x0u << 11) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN11_ENABLE (0x1u << 11) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN12 (0x1u << 12) /**< \brief (SUPC_WUIR) Wake Up Input Enable 12 */ +#define SUPC_WUIR_WKUPEN12_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN12_ENABLE (0x1u << 12) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN13 (0x1u << 13) /**< \brief (SUPC_WUIR) Wake Up Input Enable 13 */ +#define SUPC_WUIR_WKUPEN13_NOT_ENABLE (0x0u << 13) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN13_ENABLE (0x1u << 13) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN14 (0x1u << 14) /**< \brief (SUPC_WUIR) Wake Up Input Enable 14 */ +#define SUPC_WUIR_WKUPEN14_NOT_ENABLE (0x0u << 14) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN14_ENABLE (0x1u << 14) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN15 (0x1u << 15) /**< \brief (SUPC_WUIR) Wake Up Input Enable 15 */ +#define SUPC_WUIR_WKUPEN15_NOT_ENABLE (0x0u << 15) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN15_ENABLE (0x1u << 15) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT0 (0x1u << 16) /**< \brief (SUPC_WUIR) Wake Up Input Transition 0 */ +#define SUPC_WUIR_WKUPT0_HIGH_TO_LOW (0x0u << 16) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT0_LOW_TO_HIGH (0x1u << 16) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT1 (0x1u << 17) /**< \brief (SUPC_WUIR) Wake Up Input Transition 1 */ +#define SUPC_WUIR_WKUPT1_HIGH_TO_LOW (0x0u << 17) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT1_LOW_TO_HIGH (0x1u << 17) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT2 (0x1u << 18) /**< \brief (SUPC_WUIR) Wake Up Input Transition 2 */ +#define SUPC_WUIR_WKUPT2_HIGH_TO_LOW (0x0u << 18) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT2_LOW_TO_HIGH (0x1u << 18) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT3 (0x1u << 19) /**< \brief (SUPC_WUIR) Wake Up Input Transition 3 */ +#define SUPC_WUIR_WKUPT3_HIGH_TO_LOW (0x0u << 19) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT3_LOW_TO_HIGH (0x1u << 19) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT4 (0x1u << 20) /**< \brief (SUPC_WUIR) Wake Up Input Transition 4 */ +#define SUPC_WUIR_WKUPT4_HIGH_TO_LOW (0x0u << 20) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT4_LOW_TO_HIGH (0x1u << 20) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT5 (0x1u << 21) /**< \brief (SUPC_WUIR) Wake Up Input Transition 5 */ +#define SUPC_WUIR_WKUPT5_HIGH_TO_LOW (0x0u << 21) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT5_LOW_TO_HIGH (0x1u << 21) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT6 (0x1u << 22) /**< \brief (SUPC_WUIR) Wake Up Input Transition 6 */ +#define SUPC_WUIR_WKUPT6_HIGH_TO_LOW (0x0u << 22) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT6_LOW_TO_HIGH (0x1u << 22) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT7 (0x1u << 23) /**< \brief (SUPC_WUIR) Wake Up Input Transition 7 */ +#define SUPC_WUIR_WKUPT7_HIGH_TO_LOW (0x0u << 23) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT7_LOW_TO_HIGH (0x1u << 23) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT8 (0x1u << 24) /**< \brief (SUPC_WUIR) Wake Up Input Transition 8 */ +#define SUPC_WUIR_WKUPT8_HIGH_TO_LOW (0x0u << 24) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT8_LOW_TO_HIGH (0x1u << 24) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT9 (0x1u << 25) /**< \brief (SUPC_WUIR) Wake Up Input Transition 9 */ +#define SUPC_WUIR_WKUPT9_HIGH_TO_LOW (0x0u << 25) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT9_LOW_TO_HIGH (0x1u << 25) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT10 (0x1u << 26) /**< \brief (SUPC_WUIR) Wake Up Input Transition 10 */ +#define SUPC_WUIR_WKUPT10_HIGH_TO_LOW (0x0u << 26) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT10_LOW_TO_HIGH (0x1u << 26) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT11 (0x1u << 27) /**< \brief (SUPC_WUIR) Wake Up Input Transition 11 */ +#define SUPC_WUIR_WKUPT11_HIGH_TO_LOW (0x0u << 27) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT11_LOW_TO_HIGH (0x1u << 27) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT12 (0x1u << 28) /**< \brief (SUPC_WUIR) Wake Up Input Transition 12 */ +#define SUPC_WUIR_WKUPT12_HIGH_TO_LOW (0x0u << 28) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT12_LOW_TO_HIGH (0x1u << 28) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT13 (0x1u << 29) /**< \brief (SUPC_WUIR) Wake Up Input Transition 13 */ +#define SUPC_WUIR_WKUPT13_HIGH_TO_LOW (0x0u << 29) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT13_LOW_TO_HIGH (0x1u << 29) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT14 (0x1u << 30) /**< \brief (SUPC_WUIR) Wake Up Input Transition 14 */ +#define SUPC_WUIR_WKUPT14_HIGH_TO_LOW (0x0u << 30) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT14_LOW_TO_HIGH (0x1u << 30) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT15 (0x1u << 31) /**< \brief (SUPC_WUIR) Wake Up Input Transition 15 */ +#define SUPC_WUIR_WKUPT15_HIGH_TO_LOW (0x0u << 31) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT15_LOW_TO_HIGH (0x1u << 31) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +/* -------- SUPC_SR : (SUPC Offset: 0x14) Supply Controller Status Register -------- */ +#define SUPC_SR_WKUPS (0x1u << 1) /**< \brief (SUPC_SR) WKUP Wake Up Status */ +#define SUPC_SR_WKUPS_NO (0x0u << 1) /**< \brief (SUPC_SR) no wake up due to the assertion of the WKUP pins has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPS_PRESENT (0x1u << 1) /**< \brief (SUPC_SR) at least one wake up due to the assertion of the WKUP pins has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_SMWS (0x1u << 2) /**< \brief (SUPC_SR) Supply Monitor Detection Wake Up Status */ +#define SUPC_SR_SMWS_NO (0x0u << 2) /**< \brief (SUPC_SR) no wake up due to a supply monitor detection has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_SMWS_PRESENT (0x1u << 2) /**< \brief (SUPC_SR) at least one wake up due to a supply monitor detection has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_BODRSTS (0x1u << 3) /**< \brief (SUPC_SR) Brownout Detector Reset Status */ +#define SUPC_SR_BODRSTS_NO (0x0u << 3) /**< \brief (SUPC_SR) no core brownout rising edge event has been detected since the last read of the SUPC_SR. */ +#define SUPC_SR_BODRSTS_PRESENT (0x1u << 3) /**< \brief (SUPC_SR) at least one brownout output rising edge event has been detected since the last read of the SUPC_SR. */ +#define SUPC_SR_SMRSTS (0x1u << 4) /**< \brief (SUPC_SR) Supply Monitor Reset Status */ +#define SUPC_SR_SMRSTS_NO (0x0u << 4) /**< \brief (SUPC_SR) no supply monitor detection has generated a core reset since the last read of the SUPC_SR. */ +#define SUPC_SR_SMRSTS_PRESENT (0x1u << 4) /**< \brief (SUPC_SR) at least one supply monitor detection has generated a core reset since the last read of the SUPC_SR. */ +#define SUPC_SR_SMS (0x1u << 5) /**< \brief (SUPC_SR) Supply Monitor Status */ +#define SUPC_SR_SMS_NO (0x0u << 5) /**< \brief (SUPC_SR) no supply monitor detection since the last read of SUPC_SR. */ +#define SUPC_SR_SMS_PRESENT (0x1u << 5) /**< \brief (SUPC_SR) at least one supply monitor detection since the last read of SUPC_SR. */ +#define SUPC_SR_SMOS (0x1u << 6) /**< \brief (SUPC_SR) Supply Monitor Output Status */ +#define SUPC_SR_SMOS_HIGH (0x0u << 6) /**< \brief (SUPC_SR) the supply monitor detected VDDIO higher than its threshold at its last measurement. */ +#define SUPC_SR_SMOS_LOW (0x1u << 6) /**< \brief (SUPC_SR) the supply monitor detected VDDIO lower than its threshold at its last measurement. */ +#define SUPC_SR_OSCSEL (0x1u << 7) /**< \brief (SUPC_SR) 32-kHz Oscillator Selection Status */ +#define SUPC_SR_OSCSEL_RC (0x0u << 7) /**< \brief (SUPC_SR) the slow clock, SLCK is generated by the embedded 32-kHz RC oscillator. */ +#define SUPC_SR_OSCSEL_CRYST (0x1u << 7) /**< \brief (SUPC_SR) the slow clock, SLCK is generated by the 32-kHz crystal oscillator. */ +#define SUPC_SR_LPDBCS0 (0x1u << 13) /**< \brief (SUPC_SR) Low Power Debouncer Wake Up Status on WKUP0 */ +#define SUPC_SR_LPDBCS0_NO (0x0u << 13) /**< \brief (SUPC_SR) no wake up due to the assertion of the WKUP0 pin has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_LPDBCS0_PRESENT (0x1u << 13) /**< \brief (SUPC_SR) at least one wake up due to the assertion of the WKUP0 pin has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_LPDBCS1 (0x1u << 14) /**< \brief (SUPC_SR) Low Power Debouncer Wake Up Status on WKUP1 */ +#define SUPC_SR_LPDBCS1_NO (0x0u << 14) /**< \brief (SUPC_SR) no wake up due to the assertion of the WKUP1 pin has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_LPDBCS1_PRESENT (0x1u << 14) /**< \brief (SUPC_SR) at least one wake up due to the assertion of the WKUP1 pin has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPIS0 (0x1u << 16) /**< \brief (SUPC_SR) WKUP Input Status 0 */ +#define SUPC_SR_WKUPIS0_DIS (0x0u << 16) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS0_EN (0x1u << 16) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS1 (0x1u << 17) /**< \brief (SUPC_SR) WKUP Input Status 1 */ +#define SUPC_SR_WKUPIS1_DIS (0x0u << 17) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS1_EN (0x1u << 17) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS2 (0x1u << 18) /**< \brief (SUPC_SR) WKUP Input Status 2 */ +#define SUPC_SR_WKUPIS2_DIS (0x0u << 18) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS2_EN (0x1u << 18) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS3 (0x1u << 19) /**< \brief (SUPC_SR) WKUP Input Status 3 */ +#define SUPC_SR_WKUPIS3_DIS (0x0u << 19) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS3_EN (0x1u << 19) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS4 (0x1u << 20) /**< \brief (SUPC_SR) WKUP Input Status 4 */ +#define SUPC_SR_WKUPIS4_DIS (0x0u << 20) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS4_EN (0x1u << 20) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS5 (0x1u << 21) /**< \brief (SUPC_SR) WKUP Input Status 5 */ +#define SUPC_SR_WKUPIS5_DIS (0x0u << 21) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS5_EN (0x1u << 21) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS6 (0x1u << 22) /**< \brief (SUPC_SR) WKUP Input Status 6 */ +#define SUPC_SR_WKUPIS6_DIS (0x0u << 22) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS6_EN (0x1u << 22) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS7 (0x1u << 23) /**< \brief (SUPC_SR) WKUP Input Status 7 */ +#define SUPC_SR_WKUPIS7_DIS (0x0u << 23) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS7_EN (0x1u << 23) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS8 (0x1u << 24) /**< \brief (SUPC_SR) WKUP Input Status 8 */ +#define SUPC_SR_WKUPIS8_DIS (0x0u << 24) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS8_EN (0x1u << 24) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS9 (0x1u << 25) /**< \brief (SUPC_SR) WKUP Input Status 9 */ +#define SUPC_SR_WKUPIS9_DIS (0x0u << 25) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS9_EN (0x1u << 25) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS10 (0x1u << 26) /**< \brief (SUPC_SR) WKUP Input Status 10 */ +#define SUPC_SR_WKUPIS10_DIS (0x0u << 26) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS10_EN (0x1u << 26) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS11 (0x1u << 27) /**< \brief (SUPC_SR) WKUP Input Status 11 */ +#define SUPC_SR_WKUPIS11_DIS (0x0u << 27) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS11_EN (0x1u << 27) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS12 (0x1u << 28) /**< \brief (SUPC_SR) WKUP Input Status 12 */ +#define SUPC_SR_WKUPIS12_DIS (0x0u << 28) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS12_EN (0x1u << 28) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS13 (0x1u << 29) /**< \brief (SUPC_SR) WKUP Input Status 13 */ +#define SUPC_SR_WKUPIS13_DIS (0x0u << 29) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS13_EN (0x1u << 29) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS14 (0x1u << 30) /**< \brief (SUPC_SR) WKUP Input Status 14 */ +#define SUPC_SR_WKUPIS14_DIS (0x0u << 30) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS14_EN (0x1u << 30) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS15 (0x1u << 31) /**< \brief (SUPC_SR) WKUP Input Status 15 */ +#define SUPC_SR_WKUPIS15_DIS (0x0u << 31) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS15_EN (0x1u << 31) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ + +/*@}*/ + + +#endif /* _SAM3S8_SUPC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_tc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_tc.h new file mode 100644 index 000000000..0a209e177 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_tc.h @@ -0,0 +1,303 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_TC_COMPONENT_ +#define _SAM3S8_TC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Timer Counter */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_TC Timer Counter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief TcChannel hardware registers */ +typedef struct { + RwReg TC_CCR; /**< \brief (TcChannel Offset: 0x0) Channel Control Register */ + RwReg TC_CMR; /**< \brief (TcChannel Offset: 0x4) Channel Mode Register */ + RwReg TC_SMMR; /**< \brief (TcChannel Offset: 0x8) Stepper Motor Mode Register */ + RoReg Reserved1[1]; + RwReg TC_CV; /**< \brief (TcChannel Offset: 0x10) Counter Value */ + RwReg TC_RA; /**< \brief (TcChannel Offset: 0x14) Register A */ + RwReg TC_RB; /**< \brief (TcChannel Offset: 0x18) Register B */ + RwReg TC_RC; /**< \brief (TcChannel Offset: 0x1C) Register C */ + RwReg TC_SR; /**< \brief (TcChannel Offset: 0x20) Status Register */ + RwReg TC_IER; /**< \brief (TcChannel Offset: 0x24) Interrupt Enable Register */ + RwReg TC_IDR; /**< \brief (TcChannel Offset: 0x28) Interrupt Disable Register */ + RwReg TC_IMR; /**< \brief (TcChannel Offset: 0x2C) Interrupt Mask Register */ + RoReg Reserved2[4]; +} TcChannel; +/** \brief Tc hardware registers */ +#define TCCHANNEL_NUMBER 3 +typedef struct { + TcChannel TC_CHANNEL[TCCHANNEL_NUMBER]; /**< \brief (Tc Offset: 0x0) channel = 0 .. 2 */ + WoReg TC_BCR; /**< \brief (Tc Offset: 0xC0) Block Control Register */ + RwReg TC_BMR; /**< \brief (Tc Offset: 0xC4) Block Mode Register */ + WoReg TC_QIER; /**< \brief (Tc Offset: 0xC8) QDEC Interrupt Enable Register */ + WoReg TC_QIDR; /**< \brief (Tc Offset: 0xCC) QDEC Interrupt Disable Register */ + RoReg TC_QIMR; /**< \brief (Tc Offset: 0xD0) QDEC Interrupt Mask Register */ + RoReg TC_QISR; /**< \brief (Tc Offset: 0xD4) QDEC Interrupt Status Register */ + RwReg TC_FMR; /**< \brief (Tc Offset: 0xD8) Fault Mode Register */ + RoReg Reserved1[2]; + RwReg TC_WPMR; /**< \brief (Tc Offset: 0xE4) Write Protect Mode Register */ +} Tc; +#endif /* __ASSEMBLY__ */ +/* -------- TC_CCR : (TC Offset: N/A) Channel Control Register -------- */ +#define TC_CCR_CLKEN (0x1u << 0) /**< \brief (TC_CCR) Counter Clock Enable Command */ +#define TC_CCR_CLKDIS (0x1u << 1) /**< \brief (TC_CCR) Counter Clock Disable Command */ +#define TC_CCR_SWTRG (0x1u << 2) /**< \brief (TC_CCR) Software Trigger Command */ +/* -------- TC_CMR : (TC Offset: N/A) Channel Mode Register -------- */ +#define TC_CMR_TCCLKS_Pos 0 +#define TC_CMR_TCCLKS_Msk (0x7u << TC_CMR_TCCLKS_Pos) /**< \brief (TC_CMR) Clock Selection */ +#define TC_CMR_TCCLKS_TIMER_CLOCK1 (0x0u << 0) /**< \brief (TC_CMR) Clock selected: TCLK1 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK2 (0x1u << 0) /**< \brief (TC_CMR) Clock selected: TCLK2 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK3 (0x2u << 0) /**< \brief (TC_CMR) Clock selected: TCLK3 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK4 (0x3u << 0) /**< \brief (TC_CMR) Clock selected: TCLK4 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK5 (0x4u << 0) /**< \brief (TC_CMR) Clock selected: TCLK5 */ +#define TC_CMR_TCCLKS_XC0 (0x5u << 0) /**< \brief (TC_CMR) Clock selected: XC0 */ +#define TC_CMR_TCCLKS_XC1 (0x6u << 0) /**< \brief (TC_CMR) Clock selected: XC1 */ +#define TC_CMR_TCCLKS_XC2 (0x7u << 0) /**< \brief (TC_CMR) Clock selected: XC2 */ +#define TC_CMR_CLKI (0x1u << 3) /**< \brief (TC_CMR) Clock Invert */ +#define TC_CMR_BURST_Pos 4 +#define TC_CMR_BURST_Msk (0x3u << TC_CMR_BURST_Pos) /**< \brief (TC_CMR) Burst Signal Selection */ +#define TC_CMR_BURST_NONE (0x0u << 4) /**< \brief (TC_CMR) The clock is not gated by an external signal. */ +#define TC_CMR_BURST_XC0 (0x1u << 4) /**< \brief (TC_CMR) XC0 is ANDed with the selected clock. */ +#define TC_CMR_BURST_XC1 (0x2u << 4) /**< \brief (TC_CMR) XC1 is ANDed with the selected clock. */ +#define TC_CMR_BURST_XC2 (0x3u << 4) /**< \brief (TC_CMR) XC2 is ANDed with the selected clock. */ +#define TC_CMR_LDBSTOP (0x1u << 6) /**< \brief (TC_CMR) Counter Clock Stopped with RB Loading */ +#define TC_CMR_LDBDIS (0x1u << 7) /**< \brief (TC_CMR) Counter Clock Disable with RB Loading */ +#define TC_CMR_ETRGEDG_Pos 8 +#define TC_CMR_ETRGEDG_Msk (0x3u << TC_CMR_ETRGEDG_Pos) /**< \brief (TC_CMR) External Trigger Edge Selection */ +#define TC_CMR_ETRGEDG_NONE (0x0u << 8) /**< \brief (TC_CMR) The clock is not gated by an external signal. */ +#define TC_CMR_ETRGEDG_RISING (0x1u << 8) /**< \brief (TC_CMR) Rising edge */ +#define TC_CMR_ETRGEDG_FALLING (0x2u << 8) /**< \brief (TC_CMR) Falling edge */ +#define TC_CMR_ETRGEDG_EDGE (0x3u << 8) /**< \brief (TC_CMR) Each edge */ +#define TC_CMR_ABETRG (0x1u << 10) /**< \brief (TC_CMR) TIOA or TIOB External Trigger Selection */ +#define TC_CMR_CPCTRG (0x1u << 14) /**< \brief (TC_CMR) RC Compare Trigger Enable */ +#define TC_CMR_WAVE (0x1u << 15) /**< \brief (TC_CMR) Waveform Mode */ +#define TC_CMR_LDRA_Pos 16 +#define TC_CMR_LDRA_Msk (0x3u << TC_CMR_LDRA_Pos) /**< \brief (TC_CMR) RA Loading Edge Selection */ +#define TC_CMR_LDRA_NONE (0x0u << 16) /**< \brief (TC_CMR) None */ +#define TC_CMR_LDRA_RISING (0x1u << 16) /**< \brief (TC_CMR) Rising edge of TIOA */ +#define TC_CMR_LDRA_FALLING (0x2u << 16) /**< \brief (TC_CMR) Falling edge of TIOA */ +#define TC_CMR_LDRA_EDGE (0x3u << 16) /**< \brief (TC_CMR) Each edge of TIOA */ +#define TC_CMR_LDRB_Pos 18 +#define TC_CMR_LDRB_Msk (0x3u << TC_CMR_LDRB_Pos) /**< \brief (TC_CMR) RB Loading Edge Selection */ +#define TC_CMR_LDRB_NONE (0x0u << 18) /**< \brief (TC_CMR) None */ +#define TC_CMR_LDRB_RISING (0x1u << 18) /**< \brief (TC_CMR) Rising edge of TIOA */ +#define TC_CMR_LDRB_FALLING (0x2u << 18) /**< \brief (TC_CMR) Falling edge of TIOA */ +#define TC_CMR_LDRB_EDGE (0x3u << 18) /**< \brief (TC_CMR) Each edge of TIOA */ +#define TC_CMR_CPCSTOP (0x1u << 6) /**< \brief (TC_CMR) Counter Clock Stopped with RC Compare */ +#define TC_CMR_CPCDIS (0x1u << 7) /**< \brief (TC_CMR) Counter Clock Disable with RC Compare */ +#define TC_CMR_EEVTEDG_Pos 8 +#define TC_CMR_EEVTEDG_Msk (0x3u << TC_CMR_EEVTEDG_Pos) /**< \brief (TC_CMR) External Event Edge Selection */ +#define TC_CMR_EEVTEDG_NONE (0x0u << 8) /**< \brief (TC_CMR) None */ +#define TC_CMR_EEVTEDG_RISING (0x1u << 8) /**< \brief (TC_CMR) Rising edge */ +#define TC_CMR_EEVTEDG_FALLING (0x2u << 8) /**< \brief (TC_CMR) Falling edge */ +#define TC_CMR_EEVTEDG_EDGE (0x3u << 8) /**< \brief (TC_CMR) Each edge */ +#define TC_CMR_EEVT_Pos 10 +#define TC_CMR_EEVT_Msk (0x3u << TC_CMR_EEVT_Pos) /**< \brief (TC_CMR) External Event Selection */ +#define TC_CMR_EEVT_TIOB (0x0u << 10) /**< \brief (TC_CMR) TIOB */ +#define TC_CMR_EEVT_XC0 (0x1u << 10) /**< \brief (TC_CMR) XC0 */ +#define TC_CMR_EEVT_XC1 (0x2u << 10) /**< \brief (TC_CMR) XC1 */ +#define TC_CMR_EEVT_XC2 (0x3u << 10) /**< \brief (TC_CMR) XC2 */ +#define TC_CMR_ENETRG (0x1u << 12) /**< \brief (TC_CMR) External Event Trigger Enable */ +#define TC_CMR_WAVSEL_Pos 13 +#define TC_CMR_WAVSEL_Msk (0x3u << TC_CMR_WAVSEL_Pos) /**< \brief (TC_CMR) Waveform Selection */ +#define TC_CMR_WAVSEL_UP (0x0u << 13) /**< \brief (TC_CMR) UP mode without automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UPDOWN (0x1u << 13) /**< \brief (TC_CMR) UPDOWN mode without automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UP_RC (0x2u << 13) /**< \brief (TC_CMR) UP mode with automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UPDOWN_RC (0x3u << 13) /**< \brief (TC_CMR) UPDOWN mode with automatic trigger on RC Compare */ +#define TC_CMR_ACPA_Pos 16 +#define TC_CMR_ACPA_Msk (0x3u << TC_CMR_ACPA_Pos) /**< \brief (TC_CMR) RA Compare Effect on TIOA */ +#define TC_CMR_ACPA_NONE (0x0u << 16) /**< \brief (TC_CMR) None */ +#define TC_CMR_ACPA_SET (0x1u << 16) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ACPA_CLEAR (0x2u << 16) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ACPA_TOGGLE (0x3u << 16) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_ACPC_Pos 18 +#define TC_CMR_ACPC_Msk (0x3u << TC_CMR_ACPC_Pos) /**< \brief (TC_CMR) RC Compare Effect on TIOA */ +#define TC_CMR_ACPC_NONE (0x0u << 18) /**< \brief (TC_CMR) None */ +#define TC_CMR_ACPC_SET (0x1u << 18) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ACPC_CLEAR (0x2u << 18) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ACPC_TOGGLE (0x3u << 18) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_AEEVT_Pos 20 +#define TC_CMR_AEEVT_Msk (0x3u << TC_CMR_AEEVT_Pos) /**< \brief (TC_CMR) External Event Effect on TIOA */ +#define TC_CMR_AEEVT_NONE (0x0u << 20) /**< \brief (TC_CMR) None */ +#define TC_CMR_AEEVT_SET (0x1u << 20) /**< \brief (TC_CMR) Set */ +#define TC_CMR_AEEVT_CLEAR (0x2u << 20) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_AEEVT_TOGGLE (0x3u << 20) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_ASWTRG_Pos 22 +#define TC_CMR_ASWTRG_Msk (0x3u << TC_CMR_ASWTRG_Pos) /**< \brief (TC_CMR) Software Trigger Effect on TIOA */ +#define TC_CMR_ASWTRG_NONE (0x0u << 22) /**< \brief (TC_CMR) None */ +#define TC_CMR_ASWTRG_SET (0x1u << 22) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ASWTRG_CLEAR (0x2u << 22) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ASWTRG_TOGGLE (0x3u << 22) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BCPB_Pos 24 +#define TC_CMR_BCPB_Msk (0x3u << TC_CMR_BCPB_Pos) /**< \brief (TC_CMR) RB Compare Effect on TIOB */ +#define TC_CMR_BCPB_NONE (0x0u << 24) /**< \brief (TC_CMR) None */ +#define TC_CMR_BCPB_SET (0x1u << 24) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BCPB_CLEAR (0x2u << 24) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BCPB_TOGGLE (0x3u << 24) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BCPC_Pos 26 +#define TC_CMR_BCPC_Msk (0x3u << TC_CMR_BCPC_Pos) /**< \brief (TC_CMR) RC Compare Effect on TIOB */ +#define TC_CMR_BCPC_NONE (0x0u << 26) /**< \brief (TC_CMR) None */ +#define TC_CMR_BCPC_SET (0x1u << 26) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BCPC_CLEAR (0x2u << 26) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BCPC_TOGGLE (0x3u << 26) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BEEVT_Pos 28 +#define TC_CMR_BEEVT_Msk (0x3u << TC_CMR_BEEVT_Pos) /**< \brief (TC_CMR) External Event Effect on TIOB */ +#define TC_CMR_BEEVT_NONE (0x0u << 28) /**< \brief (TC_CMR) None */ +#define TC_CMR_BEEVT_SET (0x1u << 28) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BEEVT_CLEAR (0x2u << 28) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BEEVT_TOGGLE (0x3u << 28) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BSWTRG_Pos 30 +#define TC_CMR_BSWTRG_Msk (0x3u << TC_CMR_BSWTRG_Pos) /**< \brief (TC_CMR) Software Trigger Effect on TIOB */ +#define TC_CMR_BSWTRG_NONE (0x0u << 30) /**< \brief (TC_CMR) None */ +#define TC_CMR_BSWTRG_SET (0x1u << 30) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BSWTRG_CLEAR (0x2u << 30) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BSWTRG_TOGGLE (0x3u << 30) /**< \brief (TC_CMR) Toggle */ +/* -------- TC_SMMR : (TC Offset: N/A) Stepper Motor Mode Register -------- */ +#define TC_SMMR_GCEN (0x1u << 0) /**< \brief (TC_SMMR) Gray Count Enable */ +#define TC_SMMR_DOWN (0x1u << 1) /**< \brief (TC_SMMR) DOWN Count */ +/* -------- TC_CV : (TC Offset: N/A) Counter Value -------- */ +#define TC_CV_CV_Pos 0 +#define TC_CV_CV_Msk (0xffffffffu << TC_CV_CV_Pos) /**< \brief (TC_CV) Counter Value */ +/* -------- TC_RA : (TC Offset: N/A) Register A -------- */ +#define TC_RA_RA_Pos 0 +#define TC_RA_RA_Msk (0xffffffffu << TC_RA_RA_Pos) /**< \brief (TC_RA) Register A */ +#define TC_RA_RA(value) ((TC_RA_RA_Msk & ((value) << TC_RA_RA_Pos))) +/* -------- TC_RB : (TC Offset: N/A) Register B -------- */ +#define TC_RB_RB_Pos 0 +#define TC_RB_RB_Msk (0xffffffffu << TC_RB_RB_Pos) /**< \brief (TC_RB) Register B */ +#define TC_RB_RB(value) ((TC_RB_RB_Msk & ((value) << TC_RB_RB_Pos))) +/* -------- TC_RC : (TC Offset: N/A) Register C -------- */ +#define TC_RC_RC_Pos 0 +#define TC_RC_RC_Msk (0xffffffffu << TC_RC_RC_Pos) /**< \brief (TC_RC) Register C */ +#define TC_RC_RC(value) ((TC_RC_RC_Msk & ((value) << TC_RC_RC_Pos))) +/* -------- TC_SR : (TC Offset: N/A) Status Register -------- */ +#define TC_SR_COVFS (0x1u << 0) /**< \brief (TC_SR) Counter Overflow Status */ +#define TC_SR_LOVRS (0x1u << 1) /**< \brief (TC_SR) Load Overrun Status */ +#define TC_SR_CPAS (0x1u << 2) /**< \brief (TC_SR) RA Compare Status */ +#define TC_SR_CPBS (0x1u << 3) /**< \brief (TC_SR) RB Compare Status */ +#define TC_SR_CPCS (0x1u << 4) /**< \brief (TC_SR) RC Compare Status */ +#define TC_SR_LDRAS (0x1u << 5) /**< \brief (TC_SR) RA Loading Status */ +#define TC_SR_LDRBS (0x1u << 6) /**< \brief (TC_SR) RB Loading Status */ +#define TC_SR_ETRGS (0x1u << 7) /**< \brief (TC_SR) External Trigger Status */ +#define TC_SR_CLKSTA (0x1u << 16) /**< \brief (TC_SR) Clock Enabling Status */ +#define TC_SR_MTIOA (0x1u << 17) /**< \brief (TC_SR) TIOA Mirror */ +#define TC_SR_MTIOB (0x1u << 18) /**< \brief (TC_SR) TIOB Mirror */ +/* -------- TC_IER : (TC Offset: N/A) Interrupt Enable Register -------- */ +#define TC_IER_COVFS (0x1u << 0) /**< \brief (TC_IER) Counter Overflow */ +#define TC_IER_LOVRS (0x1u << 1) /**< \brief (TC_IER) Load Overrun */ +#define TC_IER_CPAS (0x1u << 2) /**< \brief (TC_IER) RA Compare */ +#define TC_IER_CPBS (0x1u << 3) /**< \brief (TC_IER) RB Compare */ +#define TC_IER_CPCS (0x1u << 4) /**< \brief (TC_IER) RC Compare */ +#define TC_IER_LDRAS (0x1u << 5) /**< \brief (TC_IER) RA Loading */ +#define TC_IER_LDRBS (0x1u << 6) /**< \brief (TC_IER) RB Loading */ +#define TC_IER_ETRGS (0x1u << 7) /**< \brief (TC_IER) External Trigger */ +/* -------- TC_IDR : (TC Offset: N/A) Interrupt Disable Register -------- */ +#define TC_IDR_COVFS (0x1u << 0) /**< \brief (TC_IDR) Counter Overflow */ +#define TC_IDR_LOVRS (0x1u << 1) /**< \brief (TC_IDR) Load Overrun */ +#define TC_IDR_CPAS (0x1u << 2) /**< \brief (TC_IDR) RA Compare */ +#define TC_IDR_CPBS (0x1u << 3) /**< \brief (TC_IDR) RB Compare */ +#define TC_IDR_CPCS (0x1u << 4) /**< \brief (TC_IDR) RC Compare */ +#define TC_IDR_LDRAS (0x1u << 5) /**< \brief (TC_IDR) RA Loading */ +#define TC_IDR_LDRBS (0x1u << 6) /**< \brief (TC_IDR) RB Loading */ +#define TC_IDR_ETRGS (0x1u << 7) /**< \brief (TC_IDR) External Trigger */ +/* -------- TC_IMR : (TC Offset: N/A) Interrupt Mask Register -------- */ +#define TC_IMR_COVFS (0x1u << 0) /**< \brief (TC_IMR) Counter Overflow */ +#define TC_IMR_LOVRS (0x1u << 1) /**< \brief (TC_IMR) Load Overrun */ +#define TC_IMR_CPAS (0x1u << 2) /**< \brief (TC_IMR) RA Compare */ +#define TC_IMR_CPBS (0x1u << 3) /**< \brief (TC_IMR) RB Compare */ +#define TC_IMR_CPCS (0x1u << 4) /**< \brief (TC_IMR) RC Compare */ +#define TC_IMR_LDRAS (0x1u << 5) /**< \brief (TC_IMR) RA Loading */ +#define TC_IMR_LDRBS (0x1u << 6) /**< \brief (TC_IMR) RB Loading */ +#define TC_IMR_ETRGS (0x1u << 7) /**< \brief (TC_IMR) External Trigger */ +/* -------- TC_BCR : (TC Offset: 0xC0) Block Control Register -------- */ +#define TC_BCR_SYNC (0x1u << 0) /**< \brief (TC_BCR) Synchro Command */ +/* -------- TC_BMR : (TC Offset: 0xC4) Block Mode Register -------- */ +#define TC_BMR_TC0XC0S_Pos 0 +#define TC_BMR_TC0XC0S_Msk (0x3u << TC_BMR_TC0XC0S_Pos) /**< \brief (TC_BMR) External Clock Signal 0 Selection */ +#define TC_BMR_TC0XC0S_TCLK0 (0x0u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TCLK0 */ +#define TC_BMR_TC0XC0S_TIOA1 (0x2u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TIOA1 */ +#define TC_BMR_TC0XC0S_TIOA2 (0x3u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TIOA2 */ +#define TC_BMR_TC1XC1S_Pos 2 +#define TC_BMR_TC1XC1S_Msk (0x3u << TC_BMR_TC1XC1S_Pos) /**< \brief (TC_BMR) External Clock Signal 1 Selection */ +#define TC_BMR_TC1XC1S_TCLK1 (0x0u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TCLK1 */ +#define TC_BMR_TC1XC1S_TIOA0 (0x2u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TIOA0 */ +#define TC_BMR_TC1XC1S_TIOA2 (0x3u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TIOA2 */ +#define TC_BMR_TC2XC2S_Pos 4 +#define TC_BMR_TC2XC2S_Msk (0x3u << TC_BMR_TC2XC2S_Pos) /**< \brief (TC_BMR) External Clock Signal 2 Selection */ +#define TC_BMR_TC2XC2S_TCLK2 (0x0u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TCLK2 */ +#define TC_BMR_TC2XC2S_TIOA1 (0x2u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TIOA1 */ +#define TC_BMR_TC2XC2S_TIOA2 (0x3u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TIOA2 */ +#define TC_BMR_QDEN (0x1u << 8) /**< \brief (TC_BMR) Quadrature Decoder ENabled */ +#define TC_BMR_POSEN (0x1u << 9) /**< \brief (TC_BMR) POSition ENabled */ +#define TC_BMR_SPEEDEN (0x1u << 10) /**< \brief (TC_BMR) SPEED ENabled */ +#define TC_BMR_QDTRANS (0x1u << 11) /**< \brief (TC_BMR) Quadrature Decoding TRANSparent */ +#define TC_BMR_EDGPHA (0x1u << 12) /**< \brief (TC_BMR) EDGe on PHA count mode */ +#define TC_BMR_INVA (0x1u << 13) /**< \brief (TC_BMR) INVerted phA */ +#define TC_BMR_INVB (0x1u << 14) /**< \brief (TC_BMR) INVerted phB */ +#define TC_BMR_INVIDX (0x1u << 15) /**< \brief (TC_BMR) INVerted InDeX */ +#define TC_BMR_SWAP (0x1u << 16) /**< \brief (TC_BMR) SWAP PHA and PHB */ +#define TC_BMR_IDXPHB (0x1u << 17) /**< \brief (TC_BMR) InDeX pin is PHB pin */ +#define TC_BMR_FILTER (0x1u << 19) /**< \brief (TC_BMR) */ +#define TC_BMR_MAXFILT_Pos 20 +#define TC_BMR_MAXFILT_Msk (0x3fu << TC_BMR_MAXFILT_Pos) /**< \brief (TC_BMR) MAXimum FILTer */ +#define TC_BMR_MAXFILT(value) ((TC_BMR_MAXFILT_Msk & ((value) << TC_BMR_MAXFILT_Pos))) +/* -------- TC_QIER : (TC Offset: 0xC8) QDEC Interrupt Enable Register -------- */ +#define TC_QIER_IDX (0x1u << 0) /**< \brief (TC_QIER) InDeX */ +#define TC_QIER_DIRCHG (0x1u << 1) /**< \brief (TC_QIER) DIRection CHanGe */ +#define TC_QIER_QERR (0x1u << 2) /**< \brief (TC_QIER) Quadrature ERRor */ +/* -------- TC_QIDR : (TC Offset: 0xCC) QDEC Interrupt Disable Register -------- */ +#define TC_QIDR_IDX (0x1u << 0) /**< \brief (TC_QIDR) InDeX */ +#define TC_QIDR_DIRCHG (0x1u << 1) /**< \brief (TC_QIDR) DIRection CHanGe */ +#define TC_QIDR_QERR (0x1u << 2) /**< \brief (TC_QIDR) Quadrature ERRor */ +/* -------- TC_QIMR : (TC Offset: 0xD0) QDEC Interrupt Mask Register -------- */ +#define TC_QIMR_IDX (0x1u << 0) /**< \brief (TC_QIMR) InDeX */ +#define TC_QIMR_DIRCHG (0x1u << 1) /**< \brief (TC_QIMR) DIRection CHanGe */ +#define TC_QIMR_QERR (0x1u << 2) /**< \brief (TC_QIMR) Quadrature ERRor */ +/* -------- TC_QISR : (TC Offset: 0xD4) QDEC Interrupt Status Register -------- */ +#define TC_QISR_IDX (0x1u << 0) /**< \brief (TC_QISR) InDeX */ +#define TC_QISR_DIRCHG (0x1u << 1) /**< \brief (TC_QISR) DIRection CHanGe */ +#define TC_QISR_QERR (0x1u << 2) /**< \brief (TC_QISR) Quadrature ERRor */ +#define TC_QISR_DIR (0x1u << 8) /**< \brief (TC_QISR) Direction */ +/* -------- TC_FMR : (TC Offset: 0xD8) Fault Mode Register -------- */ +#define TC_FMR_ENCF0 (0x1u << 0) /**< \brief (TC_FMR) ENable Compare Fault Channel 0 */ +#define TC_FMR_ENCF1 (0x1u << 1) /**< \brief (TC_FMR) ENable Compare Fault Channel 1 */ +/* -------- TC_WPMR : (TC Offset: 0xE4) Write Protect Mode Register -------- */ +#define TC_WPMR_WPEN (0x1u << 0) /**< \brief (TC_WPMR) Write Protect Enable */ +#define TC_WPMR_WPKEY_Pos 8 +#define TC_WPMR_WPKEY_Msk (0xffffffu << TC_WPMR_WPKEY_Pos) /**< \brief (TC_WPMR) Write Protect KEY */ +#define TC_WPMR_WPKEY(value) ((TC_WPMR_WPKEY_Msk & ((value) << TC_WPMR_WPKEY_Pos))) + +/*@}*/ + + +#endif /* _SAM3S8_TC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_twi.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_twi.h new file mode 100644 index 000000000..cdcb2e4a0 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_twi.h @@ -0,0 +1,217 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_TWI_COMPONENT_ +#define _SAM3S8_TWI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Two-wire Interface */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_TWI Two-wire Interface */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Twi hardware registers */ +typedef struct { + WoReg TWI_CR; /**< \brief (Twi Offset: 0x00) Control Register */ + RwReg TWI_MMR; /**< \brief (Twi Offset: 0x04) Master Mode Register */ + RwReg TWI_SMR; /**< \brief (Twi Offset: 0x08) Slave Mode Register */ + RwReg TWI_IADR; /**< \brief (Twi Offset: 0x0C) Internal Address Register */ + RwReg TWI_CWGR; /**< \brief (Twi Offset: 0x10) Clock Waveform Generator Register */ + RoReg Reserved1[3]; + RoReg TWI_SR; /**< \brief (Twi Offset: 0x20) Status Register */ + WoReg TWI_IER; /**< \brief (Twi Offset: 0x24) Interrupt Enable Register */ + WoReg TWI_IDR; /**< \brief (Twi Offset: 0x28) Interrupt Disable Register */ + RoReg TWI_IMR; /**< \brief (Twi Offset: 0x2C) Interrupt Mask Register */ + RoReg TWI_RHR; /**< \brief (Twi Offset: 0x30) Receive Holding Register */ + WoReg TWI_THR; /**< \brief (Twi Offset: 0x34) Transmit Holding Register */ + RoReg Reserved2[50]; + RwReg TWI_RPR; /**< \brief (Twi Offset: 0x100) Receive Pointer Register */ + RwReg TWI_RCR; /**< \brief (Twi Offset: 0x104) Receive Counter Register */ + RwReg TWI_TPR; /**< \brief (Twi Offset: 0x108) Transmit Pointer Register */ + RwReg TWI_TCR; /**< \brief (Twi Offset: 0x10C) Transmit Counter Register */ + RwReg TWI_RNPR; /**< \brief (Twi Offset: 0x110) Receive Next Pointer Register */ + RwReg TWI_RNCR; /**< \brief (Twi Offset: 0x114) Receive Next Counter Register */ + RwReg TWI_TNPR; /**< \brief (Twi Offset: 0x118) Transmit Next Pointer Register */ + RwReg TWI_TNCR; /**< \brief (Twi Offset: 0x11C) Transmit Next Counter Register */ + WoReg TWI_PTCR; /**< \brief (Twi Offset: 0x120) Transfer Control Register */ + RoReg TWI_PTSR; /**< \brief (Twi Offset: 0x124) Transfer Status Register */ +} Twi; +#endif /* __ASSEMBLY__ */ +/* -------- TWI_CR : (TWI Offset: 0x00) Control Register -------- */ +#define TWI_CR_START (0x1u << 0) /**< \brief (TWI_CR) Send a START Condition */ +#define TWI_CR_STOP (0x1u << 1) /**< \brief (TWI_CR) Send a STOP Condition */ +#define TWI_CR_MSEN (0x1u << 2) /**< \brief (TWI_CR) TWI Master Mode Enabled */ +#define TWI_CR_MSDIS (0x1u << 3) /**< \brief (TWI_CR) TWI Master Mode Disabled */ +#define TWI_CR_SVEN (0x1u << 4) /**< \brief (TWI_CR) TWI Slave Mode Enabled */ +#define TWI_CR_SVDIS (0x1u << 5) /**< \brief (TWI_CR) TWI Slave Mode Disabled */ +#define TWI_CR_QUICK (0x1u << 6) /**< \brief (TWI_CR) SMBUS Quick Command */ +#define TWI_CR_SWRST (0x1u << 7) /**< \brief (TWI_CR) Software Reset */ +/* -------- TWI_MMR : (TWI Offset: 0x04) Master Mode Register -------- */ +#define TWI_MMR_IADRSZ_Pos 8 +#define TWI_MMR_IADRSZ_Msk (0x3u << TWI_MMR_IADRSZ_Pos) /**< \brief (TWI_MMR) Internal Device Address Size */ +#define TWI_MMR_IADRSZ_NONE (0x0u << 8) /**< \brief (TWI_MMR) No internal device address */ +#define TWI_MMR_IADRSZ_1_BYTE (0x1u << 8) /**< \brief (TWI_MMR) One-byte internal device address */ +#define TWI_MMR_IADRSZ_2_BYTE (0x2u << 8) /**< \brief (TWI_MMR) Two-byte internal device address */ +#define TWI_MMR_IADRSZ_3_BYTE (0x3u << 8) /**< \brief (TWI_MMR) Three-byte internal device address */ +#define TWI_MMR_MREAD (0x1u << 12) /**< \brief (TWI_MMR) Master Read Direction */ +#define TWI_MMR_DADR_Pos 16 +#define TWI_MMR_DADR_Msk (0x7fu << TWI_MMR_DADR_Pos) /**< \brief (TWI_MMR) Device Address */ +#define TWI_MMR_DADR(value) ((TWI_MMR_DADR_Msk & ((value) << TWI_MMR_DADR_Pos))) +/* -------- TWI_SMR : (TWI Offset: 0x08) Slave Mode Register -------- */ +#define TWI_SMR_SADR_Pos 16 +#define TWI_SMR_SADR_Msk (0x7fu << TWI_SMR_SADR_Pos) /**< \brief (TWI_SMR) Slave Address */ +#define TWI_SMR_SADR(value) ((TWI_SMR_SADR_Msk & ((value) << TWI_SMR_SADR_Pos))) +/* -------- TWI_IADR : (TWI Offset: 0x0C) Internal Address Register -------- */ +#define TWI_IADR_IADR_Pos 0 +#define TWI_IADR_IADR_Msk (0xffffffu << TWI_IADR_IADR_Pos) /**< \brief (TWI_IADR) Internal Address */ +#define TWI_IADR_IADR(value) ((TWI_IADR_IADR_Msk & ((value) << TWI_IADR_IADR_Pos))) +/* -------- TWI_CWGR : (TWI Offset: 0x10) Clock Waveform Generator Register -------- */ +#define TWI_CWGR_CLDIV_Pos 0 +#define TWI_CWGR_CLDIV_Msk (0xffu << TWI_CWGR_CLDIV_Pos) /**< \brief (TWI_CWGR) Clock Low Divider */ +#define TWI_CWGR_CLDIV(value) ((TWI_CWGR_CLDIV_Msk & ((value) << TWI_CWGR_CLDIV_Pos))) +#define TWI_CWGR_CHDIV_Pos 8 +#define TWI_CWGR_CHDIV_Msk (0xffu << TWI_CWGR_CHDIV_Pos) /**< \brief (TWI_CWGR) Clock High Divider */ +#define TWI_CWGR_CHDIV(value) ((TWI_CWGR_CHDIV_Msk & ((value) << TWI_CWGR_CHDIV_Pos))) +#define TWI_CWGR_CKDIV_Pos 16 +#define TWI_CWGR_CKDIV_Msk (0x7u << TWI_CWGR_CKDIV_Pos) /**< \brief (TWI_CWGR) Clock Divider */ +#define TWI_CWGR_CKDIV(value) ((TWI_CWGR_CKDIV_Msk & ((value) << TWI_CWGR_CKDIV_Pos))) +/* -------- TWI_SR : (TWI Offset: 0x20) Status Register -------- */ +#define TWI_SR_TXCOMP (0x1u << 0) /**< \brief (TWI_SR) Transmission Completed (automatically set / reset) */ +#define TWI_SR_RXRDY (0x1u << 1) /**< \brief (TWI_SR) Receive Holding Register Ready (automatically set / reset) */ +#define TWI_SR_TXRDY (0x1u << 2) /**< \brief (TWI_SR) Transmit Holding Register Ready (automatically set / reset) */ +#define TWI_SR_SVREAD (0x1u << 3) /**< \brief (TWI_SR) Slave Read (automatically set / reset) */ +#define TWI_SR_SVACC (0x1u << 4) /**< \brief (TWI_SR) Slave Access (automatically set / reset) */ +#define TWI_SR_GACC (0x1u << 5) /**< \brief (TWI_SR) General Call Access (clear on read) */ +#define TWI_SR_OVRE (0x1u << 6) /**< \brief (TWI_SR) Overrun Error (clear on read) */ +#define TWI_SR_NACK (0x1u << 8) /**< \brief (TWI_SR) Not Acknowledged (clear on read) */ +#define TWI_SR_ARBLST (0x1u << 9) /**< \brief (TWI_SR) Arbitration Lost (clear on read) */ +#define TWI_SR_SCLWS (0x1u << 10) /**< \brief (TWI_SR) Clock Wait State (automatically set / reset) */ +#define TWI_SR_EOSACC (0x1u << 11) /**< \brief (TWI_SR) End Of Slave Access (clear on read) */ +#define TWI_SR_ENDRX (0x1u << 12) /**< \brief (TWI_SR) End of RX buffer */ +#define TWI_SR_ENDTX (0x1u << 13) /**< \brief (TWI_SR) End of TX buffer */ +#define TWI_SR_RXBUFF (0x1u << 14) /**< \brief (TWI_SR) RX Buffer Full */ +#define TWI_SR_TXBUFE (0x1u << 15) /**< \brief (TWI_SR) TX Buffer Empty */ +/* -------- TWI_IER : (TWI Offset: 0x24) Interrupt Enable Register -------- */ +#define TWI_IER_TXCOMP (0x1u << 0) /**< \brief (TWI_IER) Transmission Completed Interrupt Enable */ +#define TWI_IER_RXRDY (0x1u << 1) /**< \brief (TWI_IER) Receive Holding Register Ready Interrupt Enable */ +#define TWI_IER_TXRDY (0x1u << 2) /**< \brief (TWI_IER) Transmit Holding Register Ready Interrupt Enable */ +#define TWI_IER_SVACC (0x1u << 4) /**< \brief (TWI_IER) Slave Access Interrupt Enable */ +#define TWI_IER_GACC (0x1u << 5) /**< \brief (TWI_IER) General Call Access Interrupt Enable */ +#define TWI_IER_OVRE (0x1u << 6) /**< \brief (TWI_IER) Overrun Error Interrupt Enable */ +#define TWI_IER_NACK (0x1u << 8) /**< \brief (TWI_IER) Not Acknowledge Interrupt Enable */ +#define TWI_IER_ARBLST (0x1u << 9) /**< \brief (TWI_IER) Arbitration Lost Interrupt Enable */ +#define TWI_IER_SCL_WS (0x1u << 10) /**< \brief (TWI_IER) Clock Wait State Interrupt Enable */ +#define TWI_IER_EOSACC (0x1u << 11) /**< \brief (TWI_IER) End Of Slave Access Interrupt Enable */ +#define TWI_IER_ENDRX (0x1u << 12) /**< \brief (TWI_IER) End of Receive Buffer Interrupt Enable */ +#define TWI_IER_ENDTX (0x1u << 13) /**< \brief (TWI_IER) End of Transmit Buffer Interrupt Enable */ +#define TWI_IER_RXBUFF (0x1u << 14) /**< \brief (TWI_IER) Receive Buffer Full Interrupt Enable */ +#define TWI_IER_TXBUFE (0x1u << 15) /**< \brief (TWI_IER) Transmit Buffer Empty Interrupt Enable */ +/* -------- TWI_IDR : (TWI Offset: 0x28) Interrupt Disable Register -------- */ +#define TWI_IDR_TXCOMP (0x1u << 0) /**< \brief (TWI_IDR) Transmission Completed Interrupt Disable */ +#define TWI_IDR_RXRDY (0x1u << 1) /**< \brief (TWI_IDR) Receive Holding Register Ready Interrupt Disable */ +#define TWI_IDR_TXRDY (0x1u << 2) /**< \brief (TWI_IDR) Transmit Holding Register Ready Interrupt Disable */ +#define TWI_IDR_SVACC (0x1u << 4) /**< \brief (TWI_IDR) Slave Access Interrupt Disable */ +#define TWI_IDR_GACC (0x1u << 5) /**< \brief (TWI_IDR) General Call Access Interrupt Disable */ +#define TWI_IDR_OVRE (0x1u << 6) /**< \brief (TWI_IDR) Overrun Error Interrupt Disable */ +#define TWI_IDR_NACK (0x1u << 8) /**< \brief (TWI_IDR) Not Acknowledge Interrupt Disable */ +#define TWI_IDR_ARBLST (0x1u << 9) /**< \brief (TWI_IDR) Arbitration Lost Interrupt Disable */ +#define TWI_IDR_SCL_WS (0x1u << 10) /**< \brief (TWI_IDR) Clock Wait State Interrupt Disable */ +#define TWI_IDR_EOSACC (0x1u << 11) /**< \brief (TWI_IDR) End Of Slave Access Interrupt Disable */ +#define TWI_IDR_ENDRX (0x1u << 12) /**< \brief (TWI_IDR) End of Receive Buffer Interrupt Disable */ +#define TWI_IDR_ENDTX (0x1u << 13) /**< \brief (TWI_IDR) End of Transmit Buffer Interrupt Disable */ +#define TWI_IDR_RXBUFF (0x1u << 14) /**< \brief (TWI_IDR) Receive Buffer Full Interrupt Disable */ +#define TWI_IDR_TXBUFE (0x1u << 15) /**< \brief (TWI_IDR) Transmit Buffer Empty Interrupt Disable */ +/* -------- TWI_IMR : (TWI Offset: 0x2C) Interrupt Mask Register -------- */ +#define TWI_IMR_TXCOMP (0x1u << 0) /**< \brief (TWI_IMR) Transmission Completed Interrupt Mask */ +#define TWI_IMR_RXRDY (0x1u << 1) /**< \brief (TWI_IMR) Receive Holding Register Ready Interrupt Mask */ +#define TWI_IMR_TXRDY (0x1u << 2) /**< \brief (TWI_IMR) Transmit Holding Register Ready Interrupt Mask */ +#define TWI_IMR_SVACC (0x1u << 4) /**< \brief (TWI_IMR) Slave Access Interrupt Mask */ +#define TWI_IMR_GACC (0x1u << 5) /**< \brief (TWI_IMR) General Call Access Interrupt Mask */ +#define TWI_IMR_OVRE (0x1u << 6) /**< \brief (TWI_IMR) Overrun Error Interrupt Mask */ +#define TWI_IMR_NACK (0x1u << 8) /**< \brief (TWI_IMR) Not Acknowledge Interrupt Mask */ +#define TWI_IMR_ARBLST (0x1u << 9) /**< \brief (TWI_IMR) Arbitration Lost Interrupt Mask */ +#define TWI_IMR_SCL_WS (0x1u << 10) /**< \brief (TWI_IMR) Clock Wait State Interrupt Mask */ +#define TWI_IMR_EOSACC (0x1u << 11) /**< \brief (TWI_IMR) End Of Slave Access Interrupt Mask */ +#define TWI_IMR_ENDRX (0x1u << 12) /**< \brief (TWI_IMR) End of Receive Buffer Interrupt Mask */ +#define TWI_IMR_ENDTX (0x1u << 13) /**< \brief (TWI_IMR) End of Transmit Buffer Interrupt Mask */ +#define TWI_IMR_RXBUFF (0x1u << 14) /**< \brief (TWI_IMR) Receive Buffer Full Interrupt Mask */ +#define TWI_IMR_TXBUFE (0x1u << 15) /**< \brief (TWI_IMR) Transmit Buffer Empty Interrupt Mask */ +/* -------- TWI_RHR : (TWI Offset: 0x30) Receive Holding Register -------- */ +#define TWI_RHR_RXDATA_Pos 0 +#define TWI_RHR_RXDATA_Msk (0xffu << TWI_RHR_RXDATA_Pos) /**< \brief (TWI_RHR) Master or Slave Receive Holding Data */ +/* -------- TWI_THR : (TWI Offset: 0x34) Transmit Holding Register -------- */ +#define TWI_THR_TXDATA_Pos 0 +#define TWI_THR_TXDATA_Msk (0xffu << TWI_THR_TXDATA_Pos) /**< \brief (TWI_THR) Master or Slave Transmit Holding Data */ +#define TWI_THR_TXDATA(value) ((TWI_THR_TXDATA_Msk & ((value) << TWI_THR_TXDATA_Pos))) +/* -------- TWI_RPR : (TWI Offset: 0x100) Receive Pointer Register -------- */ +#define TWI_RPR_RXPTR_Pos 0 +#define TWI_RPR_RXPTR_Msk (0xffffffffu << TWI_RPR_RXPTR_Pos) /**< \brief (TWI_RPR) Receive Pointer Register */ +#define TWI_RPR_RXPTR(value) ((TWI_RPR_RXPTR_Msk & ((value) << TWI_RPR_RXPTR_Pos))) +/* -------- TWI_RCR : (TWI Offset: 0x104) Receive Counter Register -------- */ +#define TWI_RCR_RXCTR_Pos 0 +#define TWI_RCR_RXCTR_Msk (0xffffu << TWI_RCR_RXCTR_Pos) /**< \brief (TWI_RCR) Receive Counter Register */ +#define TWI_RCR_RXCTR(value) ((TWI_RCR_RXCTR_Msk & ((value) << TWI_RCR_RXCTR_Pos))) +/* -------- TWI_TPR : (TWI Offset: 0x108) Transmit Pointer Register -------- */ +#define TWI_TPR_TXPTR_Pos 0 +#define TWI_TPR_TXPTR_Msk (0xffffffffu << TWI_TPR_TXPTR_Pos) /**< \brief (TWI_TPR) Transmit Counter Register */ +#define TWI_TPR_TXPTR(value) ((TWI_TPR_TXPTR_Msk & ((value) << TWI_TPR_TXPTR_Pos))) +/* -------- TWI_TCR : (TWI Offset: 0x10C) Transmit Counter Register -------- */ +#define TWI_TCR_TXCTR_Pos 0 +#define TWI_TCR_TXCTR_Msk (0xffffu << TWI_TCR_TXCTR_Pos) /**< \brief (TWI_TCR) Transmit Counter Register */ +#define TWI_TCR_TXCTR(value) ((TWI_TCR_TXCTR_Msk & ((value) << TWI_TCR_TXCTR_Pos))) +/* -------- TWI_RNPR : (TWI Offset: 0x110) Receive Next Pointer Register -------- */ +#define TWI_RNPR_RXNPTR_Pos 0 +#define TWI_RNPR_RXNPTR_Msk (0xffffffffu << TWI_RNPR_RXNPTR_Pos) /**< \brief (TWI_RNPR) Receive Next Pointer */ +#define TWI_RNPR_RXNPTR(value) ((TWI_RNPR_RXNPTR_Msk & ((value) << TWI_RNPR_RXNPTR_Pos))) +/* -------- TWI_RNCR : (TWI Offset: 0x114) Receive Next Counter Register -------- */ +#define TWI_RNCR_RXNCTR_Pos 0 +#define TWI_RNCR_RXNCTR_Msk (0xffffu << TWI_RNCR_RXNCTR_Pos) /**< \brief (TWI_RNCR) Receive Next Counter */ +#define TWI_RNCR_RXNCTR(value) ((TWI_RNCR_RXNCTR_Msk & ((value) << TWI_RNCR_RXNCTR_Pos))) +/* -------- TWI_TNPR : (TWI Offset: 0x118) Transmit Next Pointer Register -------- */ +#define TWI_TNPR_TXNPTR_Pos 0 +#define TWI_TNPR_TXNPTR_Msk (0xffffffffu << TWI_TNPR_TXNPTR_Pos) /**< \brief (TWI_TNPR) Transmit Next Pointer */ +#define TWI_TNPR_TXNPTR(value) ((TWI_TNPR_TXNPTR_Msk & ((value) << TWI_TNPR_TXNPTR_Pos))) +/* -------- TWI_TNCR : (TWI Offset: 0x11C) Transmit Next Counter Register -------- */ +#define TWI_TNCR_TXNCTR_Pos 0 +#define TWI_TNCR_TXNCTR_Msk (0xffffu << TWI_TNCR_TXNCTR_Pos) /**< \brief (TWI_TNCR) Transmit Counter Next */ +#define TWI_TNCR_TXNCTR(value) ((TWI_TNCR_TXNCTR_Msk & ((value) << TWI_TNCR_TXNCTR_Pos))) +/* -------- TWI_PTCR : (TWI Offset: 0x120) Transfer Control Register -------- */ +#define TWI_PTCR_RXTEN (0x1u << 0) /**< \brief (TWI_PTCR) Receiver Transfer Enable */ +#define TWI_PTCR_RXTDIS (0x1u << 1) /**< \brief (TWI_PTCR) Receiver Transfer Disable */ +#define TWI_PTCR_TXTEN (0x1u << 8) /**< \brief (TWI_PTCR) Transmitter Transfer Enable */ +#define TWI_PTCR_TXTDIS (0x1u << 9) /**< \brief (TWI_PTCR) Transmitter Transfer Disable */ +/* -------- TWI_PTSR : (TWI Offset: 0x124) Transfer Status Register -------- */ +#define TWI_PTSR_RXTEN (0x1u << 0) /**< \brief (TWI_PTSR) Receiver Transfer Enable */ +#define TWI_PTSR_TXTEN (0x1u << 8) /**< \brief (TWI_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3S8_TWI_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_uart.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_uart.h new file mode 100644 index 000000000..4b74609fc --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_uart.h @@ -0,0 +1,185 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_UART_COMPONENT_ +#define _SAM3S8_UART_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Universal Asynchronous Receiver Transmitter */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_UART Universal Asynchronous Receiver Transmitter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Uart hardware registers */ +typedef struct { + WoReg UART_CR; /**< \brief (Uart Offset: 0x0000) Control Register */ + RwReg UART_MR; /**< \brief (Uart Offset: 0x0004) Mode Register */ + WoReg UART_IER; /**< \brief (Uart Offset: 0x0008) Interrupt Enable Register */ + WoReg UART_IDR; /**< \brief (Uart Offset: 0x000C) Interrupt Disable Register */ + RoReg UART_IMR; /**< \brief (Uart Offset: 0x0010) Interrupt Mask Register */ + RoReg UART_SR; /**< \brief (Uart Offset: 0x0014) Status Register */ + RoReg UART_RHR; /**< \brief (Uart Offset: 0x0018) Receive Holding Register */ + WoReg UART_THR; /**< \brief (Uart Offset: 0x001C) Transmit Holding Register */ + RwReg UART_BRGR; /**< \brief (Uart Offset: 0x0020) Baud Rate Generator Register */ + RoReg Reserved1[55]; + RwReg UART_RPR; /**< \brief (Uart Offset: 0x100) Receive Pointer Register */ + RwReg UART_RCR; /**< \brief (Uart Offset: 0x104) Receive Counter Register */ + RwReg UART_TPR; /**< \brief (Uart Offset: 0x108) Transmit Pointer Register */ + RwReg UART_TCR; /**< \brief (Uart Offset: 0x10C) Transmit Counter Register */ + RwReg UART_RNPR; /**< \brief (Uart Offset: 0x110) Receive Next Pointer Register */ + RwReg UART_RNCR; /**< \brief (Uart Offset: 0x114) Receive Next Counter Register */ + RwReg UART_TNPR; /**< \brief (Uart Offset: 0x118) Transmit Next Pointer Register */ + RwReg UART_TNCR; /**< \brief (Uart Offset: 0x11C) Transmit Next Counter Register */ + WoReg UART_PTCR; /**< \brief (Uart Offset: 0x120) Transfer Control Register */ + RoReg UART_PTSR; /**< \brief (Uart Offset: 0x124) Transfer Status Register */ +} Uart; +#endif /* __ASSEMBLY__ */ +/* -------- UART_CR : (UART Offset: 0x0000) Control Register -------- */ +#define UART_CR_RSTRX (0x1u << 2) /**< \brief (UART_CR) Reset Receiver */ +#define UART_CR_RSTTX (0x1u << 3) /**< \brief (UART_CR) Reset Transmitter */ +#define UART_CR_RXEN (0x1u << 4) /**< \brief (UART_CR) Receiver Enable */ +#define UART_CR_RXDIS (0x1u << 5) /**< \brief (UART_CR) Receiver Disable */ +#define UART_CR_TXEN (0x1u << 6) /**< \brief (UART_CR) Transmitter Enable */ +#define UART_CR_TXDIS (0x1u << 7) /**< \brief (UART_CR) Transmitter Disable */ +#define UART_CR_RSTSTA (0x1u << 8) /**< \brief (UART_CR) Reset Status Bits */ +/* -------- UART_MR : (UART Offset: 0x0004) Mode Register -------- */ +#define UART_MR_PAR_Pos 9 +#define UART_MR_PAR_Msk (0x7u << UART_MR_PAR_Pos) /**< \brief (UART_MR) Parity Type */ +#define UART_MR_PAR_EVEN (0x0u << 9) /**< \brief (UART_MR) Even parity */ +#define UART_MR_PAR_ODD (0x1u << 9) /**< \brief (UART_MR) Odd parity */ +#define UART_MR_PAR_SPACE (0x2u << 9) /**< \brief (UART_MR) Space: parity forced to 0 */ +#define UART_MR_PAR_MARK (0x3u << 9) /**< \brief (UART_MR) Mark: parity forced to 1 */ +#define UART_MR_PAR_NO (0x4u << 9) /**< \brief (UART_MR) No parity */ +#define UART_MR_CHMODE_Pos 14 +#define UART_MR_CHMODE_Msk (0x3u << UART_MR_CHMODE_Pos) /**< \brief (UART_MR) Channel Mode */ +#define UART_MR_CHMODE_NORMAL (0x0u << 14) /**< \brief (UART_MR) Normal Mode */ +#define UART_MR_CHMODE_AUTOMATIC (0x1u << 14) /**< \brief (UART_MR) Automatic Echo */ +#define UART_MR_CHMODE_LOCAL_LOOPBACK (0x2u << 14) /**< \brief (UART_MR) Local Loopback */ +#define UART_MR_CHMODE_REMOTE_LOOPBACK (0x3u << 14) /**< \brief (UART_MR) Remote Loopback */ +/* -------- UART_IER : (UART Offset: 0x0008) Interrupt Enable Register -------- */ +#define UART_IER_RXRDY (0x1u << 0) /**< \brief (UART_IER) Enable RXRDY Interrupt */ +#define UART_IER_TXRDY (0x1u << 1) /**< \brief (UART_IER) Enable TXRDY Interrupt */ +#define UART_IER_ENDRX (0x1u << 3) /**< \brief (UART_IER) Enable End of Receive Transfer Interrupt */ +#define UART_IER_ENDTX (0x1u << 4) /**< \brief (UART_IER) Enable End of Transmit Interrupt */ +#define UART_IER_OVRE (0x1u << 5) /**< \brief (UART_IER) Enable Overrun Error Interrupt */ +#define UART_IER_FRAME (0x1u << 6) /**< \brief (UART_IER) Enable Framing Error Interrupt */ +#define UART_IER_PARE (0x1u << 7) /**< \brief (UART_IER) Enable Parity Error Interrupt */ +#define UART_IER_TXEMPTY (0x1u << 9) /**< \brief (UART_IER) Enable TXEMPTY Interrupt */ +#define UART_IER_TXBUFE (0x1u << 11) /**< \brief (UART_IER) Enable Buffer Empty Interrupt */ +#define UART_IER_RXBUFF (0x1u << 12) /**< \brief (UART_IER) Enable Buffer Full Interrupt */ +/* -------- UART_IDR : (UART Offset: 0x000C) Interrupt Disable Register -------- */ +#define UART_IDR_RXRDY (0x1u << 0) /**< \brief (UART_IDR) Disable RXRDY Interrupt */ +#define UART_IDR_TXRDY (0x1u << 1) /**< \brief (UART_IDR) Disable TXRDY Interrupt */ +#define UART_IDR_ENDRX (0x1u << 3) /**< \brief (UART_IDR) Disable End of Receive Transfer Interrupt */ +#define UART_IDR_ENDTX (0x1u << 4) /**< \brief (UART_IDR) Disable End of Transmit Interrupt */ +#define UART_IDR_OVRE (0x1u << 5) /**< \brief (UART_IDR) Disable Overrun Error Interrupt */ +#define UART_IDR_FRAME (0x1u << 6) /**< \brief (UART_IDR) Disable Framing Error Interrupt */ +#define UART_IDR_PARE (0x1u << 7) /**< \brief (UART_IDR) Disable Parity Error Interrupt */ +#define UART_IDR_TXEMPTY (0x1u << 9) /**< \brief (UART_IDR) Disable TXEMPTY Interrupt */ +#define UART_IDR_TXBUFE (0x1u << 11) /**< \brief (UART_IDR) Disable Buffer Empty Interrupt */ +#define UART_IDR_RXBUFF (0x1u << 12) /**< \brief (UART_IDR) Disable Buffer Full Interrupt */ +/* -------- UART_IMR : (UART Offset: 0x0010) Interrupt Mask Register -------- */ +#define UART_IMR_RXRDY (0x1u << 0) /**< \brief (UART_IMR) Mask RXRDY Interrupt */ +#define UART_IMR_TXRDY (0x1u << 1) /**< \brief (UART_IMR) Disable TXRDY Interrupt */ +#define UART_IMR_ENDRX (0x1u << 3) /**< \brief (UART_IMR) Mask End of Receive Transfer Interrupt */ +#define UART_IMR_ENDTX (0x1u << 4) /**< \brief (UART_IMR) Mask End of Transmit Interrupt */ +#define UART_IMR_OVRE (0x1u << 5) /**< \brief (UART_IMR) Mask Overrun Error Interrupt */ +#define UART_IMR_FRAME (0x1u << 6) /**< \brief (UART_IMR) Mask Framing Error Interrupt */ +#define UART_IMR_PARE (0x1u << 7) /**< \brief (UART_IMR) Mask Parity Error Interrupt */ +#define UART_IMR_TXEMPTY (0x1u << 9) /**< \brief (UART_IMR) Mask TXEMPTY Interrupt */ +#define UART_IMR_TXBUFE (0x1u << 11) /**< \brief (UART_IMR) Mask TXBUFE Interrupt */ +#define UART_IMR_RXBUFF (0x1u << 12) /**< \brief (UART_IMR) Mask RXBUFF Interrupt */ +/* -------- UART_SR : (UART Offset: 0x0014) Status Register -------- */ +#define UART_SR_RXRDY (0x1u << 0) /**< \brief (UART_SR) Receiver Ready */ +#define UART_SR_TXRDY (0x1u << 1) /**< \brief (UART_SR) Transmitter Ready */ +#define UART_SR_ENDRX (0x1u << 3) /**< \brief (UART_SR) End of Receiver Transfer */ +#define UART_SR_ENDTX (0x1u << 4) /**< \brief (UART_SR) End of Transmitter Transfer */ +#define UART_SR_OVRE (0x1u << 5) /**< \brief (UART_SR) Overrun Error */ +#define UART_SR_FRAME (0x1u << 6) /**< \brief (UART_SR) Framing Error */ +#define UART_SR_PARE (0x1u << 7) /**< \brief (UART_SR) Parity Error */ +#define UART_SR_TXEMPTY (0x1u << 9) /**< \brief (UART_SR) Transmitter Empty */ +#define UART_SR_TXBUFE (0x1u << 11) /**< \brief (UART_SR) Transmission Buffer Empty */ +#define UART_SR_RXBUFF (0x1u << 12) /**< \brief (UART_SR) Receive Buffer Full */ +/* -------- UART_RHR : (UART Offset: 0x0018) Receive Holding Register -------- */ +#define UART_RHR_RXCHR_Pos 0 +#define UART_RHR_RXCHR_Msk (0xffu << UART_RHR_RXCHR_Pos) /**< \brief (UART_RHR) Received Character */ +/* -------- UART_THR : (UART Offset: 0x001C) Transmit Holding Register -------- */ +#define UART_THR_TXCHR_Pos 0 +#define UART_THR_TXCHR_Msk (0xffu << UART_THR_TXCHR_Pos) /**< \brief (UART_THR) Character to be Transmitted */ +#define UART_THR_TXCHR(value) ((UART_THR_TXCHR_Msk & ((value) << UART_THR_TXCHR_Pos))) +/* -------- UART_BRGR : (UART Offset: 0x0020) Baud Rate Generator Register -------- */ +#define UART_BRGR_CD_Pos 0 +#define UART_BRGR_CD_Msk (0xffffu << UART_BRGR_CD_Pos) /**< \brief (UART_BRGR) Clock Divisor */ +#define UART_BRGR_CD(value) ((UART_BRGR_CD_Msk & ((value) << UART_BRGR_CD_Pos))) +/* -------- UART_RPR : (UART Offset: 0x100) Receive Pointer Register -------- */ +#define UART_RPR_RXPTR_Pos 0 +#define UART_RPR_RXPTR_Msk (0xffffffffu << UART_RPR_RXPTR_Pos) /**< \brief (UART_RPR) Receive Pointer Register */ +#define UART_RPR_RXPTR(value) ((UART_RPR_RXPTR_Msk & ((value) << UART_RPR_RXPTR_Pos))) +/* -------- UART_RCR : (UART Offset: 0x104) Receive Counter Register -------- */ +#define UART_RCR_RXCTR_Pos 0 +#define UART_RCR_RXCTR_Msk (0xffffu << UART_RCR_RXCTR_Pos) /**< \brief (UART_RCR) Receive Counter Register */ +#define UART_RCR_RXCTR(value) ((UART_RCR_RXCTR_Msk & ((value) << UART_RCR_RXCTR_Pos))) +/* -------- UART_TPR : (UART Offset: 0x108) Transmit Pointer Register -------- */ +#define UART_TPR_TXPTR_Pos 0 +#define UART_TPR_TXPTR_Msk (0xffffffffu << UART_TPR_TXPTR_Pos) /**< \brief (UART_TPR) Transmit Counter Register */ +#define UART_TPR_TXPTR(value) ((UART_TPR_TXPTR_Msk & ((value) << UART_TPR_TXPTR_Pos))) +/* -------- UART_TCR : (UART Offset: 0x10C) Transmit Counter Register -------- */ +#define UART_TCR_TXCTR_Pos 0 +#define UART_TCR_TXCTR_Msk (0xffffu << UART_TCR_TXCTR_Pos) /**< \brief (UART_TCR) Transmit Counter Register */ +#define UART_TCR_TXCTR(value) ((UART_TCR_TXCTR_Msk & ((value) << UART_TCR_TXCTR_Pos))) +/* -------- UART_RNPR : (UART Offset: 0x110) Receive Next Pointer Register -------- */ +#define UART_RNPR_RXNPTR_Pos 0 +#define UART_RNPR_RXNPTR_Msk (0xffffffffu << UART_RNPR_RXNPTR_Pos) /**< \brief (UART_RNPR) Receive Next Pointer */ +#define UART_RNPR_RXNPTR(value) ((UART_RNPR_RXNPTR_Msk & ((value) << UART_RNPR_RXNPTR_Pos))) +/* -------- UART_RNCR : (UART Offset: 0x114) Receive Next Counter Register -------- */ +#define UART_RNCR_RXNCTR_Pos 0 +#define UART_RNCR_RXNCTR_Msk (0xffffu << UART_RNCR_RXNCTR_Pos) /**< \brief (UART_RNCR) Receive Next Counter */ +#define UART_RNCR_RXNCTR(value) ((UART_RNCR_RXNCTR_Msk & ((value) << UART_RNCR_RXNCTR_Pos))) +/* -------- UART_TNPR : (UART Offset: 0x118) Transmit Next Pointer Register -------- */ +#define UART_TNPR_TXNPTR_Pos 0 +#define UART_TNPR_TXNPTR_Msk (0xffffffffu << UART_TNPR_TXNPTR_Pos) /**< \brief (UART_TNPR) Transmit Next Pointer */ +#define UART_TNPR_TXNPTR(value) ((UART_TNPR_TXNPTR_Msk & ((value) << UART_TNPR_TXNPTR_Pos))) +/* -------- UART_TNCR : (UART Offset: 0x11C) Transmit Next Counter Register -------- */ +#define UART_TNCR_TXNCTR_Pos 0 +#define UART_TNCR_TXNCTR_Msk (0xffffu << UART_TNCR_TXNCTR_Pos) /**< \brief (UART_TNCR) Transmit Counter Next */ +#define UART_TNCR_TXNCTR(value) ((UART_TNCR_TXNCTR_Msk & ((value) << UART_TNCR_TXNCTR_Pos))) +/* -------- UART_PTCR : (UART Offset: 0x120) Transfer Control Register -------- */ +#define UART_PTCR_RXTEN (0x1u << 0) /**< \brief (UART_PTCR) Receiver Transfer Enable */ +#define UART_PTCR_RXTDIS (0x1u << 1) /**< \brief (UART_PTCR) Receiver Transfer Disable */ +#define UART_PTCR_TXTEN (0x1u << 8) /**< \brief (UART_PTCR) Transmitter Transfer Enable */ +#define UART_PTCR_TXTDIS (0x1u << 9) /**< \brief (UART_PTCR) Transmitter Transfer Disable */ +/* -------- UART_PTSR : (UART Offset: 0x124) Transfer Status Register -------- */ +#define UART_PTSR_RXTEN (0x1u << 0) /**< \brief (UART_PTSR) Receiver Transfer Enable */ +#define UART_PTSR_TXTEN (0x1u << 8) /**< \brief (UART_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3S8_UART_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_udp.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_udp.h new file mode 100644 index 000000000..6de4d8b1f --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_udp.h @@ -0,0 +1,185 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_UDP_COMPONENT_ +#define _SAM3S8_UDP_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR USB Device Port */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_UDP USB Device Port */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Udp hardware registers */ +typedef struct { + RoReg UDP_FRM_NUM; /**< \brief (Udp Offset: 0x000) Frame Number Register */ + RwReg UDP_GLB_STAT; /**< \brief (Udp Offset: 0x004) Global State Register */ + RwReg UDP_FADDR; /**< \brief (Udp Offset: 0x008) Function Address Register */ + RoReg Reserved1[1]; + WoReg UDP_IER; /**< \brief (Udp Offset: 0x010) Interrupt Enable Register */ + WoReg UDP_IDR; /**< \brief (Udp Offset: 0x014) Interrupt Disable Register */ + RoReg UDP_IMR; /**< \brief (Udp Offset: 0x018) Interrupt Mask Register */ + RoReg UDP_ISR; /**< \brief (Udp Offset: 0x01C) Interrupt Status Register */ + WoReg UDP_ICR; /**< \brief (Udp Offset: 0x020) Interrupt Clear Register */ + RoReg Reserved2[1]; + RwReg UDP_RST_EP; /**< \brief (Udp Offset: 0x028) Reset Endpoint Register */ + RoReg Reserved3[1]; + RwReg UDP_CSR[8]; /**< \brief (Udp Offset: 0x030) Endpoint Control and Status Register */ + RwReg UDP_FDR[8]; /**< \brief (Udp Offset: 0x050) Endpoint FIFO Data Register */ + RoReg Reserved4[1]; + RwReg UDP_TXVC; /**< \brief (Udp Offset: 0x074) Transceiver Control Register */ +} Udp; +#endif /* __ASSEMBLY__ */ +/* -------- UDP_FRM_NUM : (UDP Offset: 0x000) Frame Number Register -------- */ +#define UDP_FRM_NUM_FRM_NUM_Pos 0 +#define UDP_FRM_NUM_FRM_NUM_Msk (0x7ffu << UDP_FRM_NUM_FRM_NUM_Pos) /**< \brief (UDP_FRM_NUM) Frame Number as Defined in the Packet Field Formats */ +#define UDP_FRM_NUM_FRM_ERR (0x1u << 16) /**< \brief (UDP_FRM_NUM) Frame Error */ +#define UDP_FRM_NUM_FRM_OK (0x1u << 17) /**< \brief (UDP_FRM_NUM) Frame OK */ +/* -------- UDP_GLB_STAT : (UDP Offset: 0x004) Global State Register -------- */ +#define UDP_GLB_STAT_FADDEN (0x1u << 0) /**< \brief (UDP_GLB_STAT) Function Address Enable */ +#define UDP_GLB_STAT_CONFG (0x1u << 1) /**< \brief (UDP_GLB_STAT) Configured */ +#define UDP_GLB_STAT_ESR (0x1u << 2) /**< \brief (UDP_GLB_STAT) Enable Send Resume */ +#define UDP_GLB_STAT_RSMINPR (0x1u << 3) /**< \brief (UDP_GLB_STAT) */ +#define UDP_GLB_STAT_RMWUPE (0x1u << 4) /**< \brief (UDP_GLB_STAT) Remote Wake Up Enable */ +/* -------- UDP_FADDR : (UDP Offset: 0x008) Function Address Register -------- */ +#define UDP_FADDR_FADD_Pos 0 +#define UDP_FADDR_FADD_Msk (0x7fu << UDP_FADDR_FADD_Pos) /**< \brief (UDP_FADDR) Function Address Value */ +#define UDP_FADDR_FADD(value) ((UDP_FADDR_FADD_Msk & ((value) << UDP_FADDR_FADD_Pos))) +#define UDP_FADDR_FEN (0x1u << 8) /**< \brief (UDP_FADDR) Function Enable */ +/* -------- UDP_IER : (UDP Offset: 0x010) Interrupt Enable Register -------- */ +#define UDP_IER_EP0INT (0x1u << 0) /**< \brief (UDP_IER) Enable Endpoint 0 Interrupt */ +#define UDP_IER_EP1INT (0x1u << 1) /**< \brief (UDP_IER) Enable Endpoint 1 Interrupt */ +#define UDP_IER_EP2INT (0x1u << 2) /**< \brief (UDP_IER) Enable Endpoint 2Interrupt */ +#define UDP_IER_EP3INT (0x1u << 3) /**< \brief (UDP_IER) Enable Endpoint 3 Interrupt */ +#define UDP_IER_EP4INT (0x1u << 4) /**< \brief (UDP_IER) Enable Endpoint 4 Interrupt */ +#define UDP_IER_EP5INT (0x1u << 5) /**< \brief (UDP_IER) Enable Endpoint 5 Interrupt */ +#define UDP_IER_EP6INT (0x1u << 6) /**< \brief (UDP_IER) Enable Endpoint 6 Interrupt */ +#define UDP_IER_EP7INT (0x1u << 7) /**< \brief (UDP_IER) Enable Endpoint 7 Interrupt */ +#define UDP_IER_RXSUSP (0x1u << 8) /**< \brief (UDP_IER) Enable UDP Suspend Interrupt */ +#define UDP_IER_RXRSM (0x1u << 9) /**< \brief (UDP_IER) Enable UDP Resume Interrupt */ +#define UDP_IER_EXTRSM (0x1u << 10) /**< \brief (UDP_IER) */ +#define UDP_IER_SOFINT (0x1u << 11) /**< \brief (UDP_IER) Enable Start Of Frame Interrupt */ +#define UDP_IER_WAKEUP (0x1u << 13) /**< \brief (UDP_IER) Enable UDP bus Wakeup Interrupt */ +/* -------- UDP_IDR : (UDP Offset: 0x014) Interrupt Disable Register -------- */ +#define UDP_IDR_EP0INT (0x1u << 0) /**< \brief (UDP_IDR) Disable Endpoint 0 Interrupt */ +#define UDP_IDR_EP1INT (0x1u << 1) /**< \brief (UDP_IDR) Disable Endpoint 1 Interrupt */ +#define UDP_IDR_EP2INT (0x1u << 2) /**< \brief (UDP_IDR) Disable Endpoint 2 Interrupt */ +#define UDP_IDR_EP3INT (0x1u << 3) /**< \brief (UDP_IDR) Disable Endpoint 3 Interrupt */ +#define UDP_IDR_EP4INT (0x1u << 4) /**< \brief (UDP_IDR) Disable Endpoint 4 Interrupt */ +#define UDP_IDR_EP5INT (0x1u << 5) /**< \brief (UDP_IDR) Disable Endpoint 5 Interrupt */ +#define UDP_IDR_EP6INT (0x1u << 6) /**< \brief (UDP_IDR) Disable Endpoint 6 Interrupt */ +#define UDP_IDR_EP7INT (0x1u << 7) /**< \brief (UDP_IDR) Disable Endpoint 7 Interrupt */ +#define UDP_IDR_RXSUSP (0x1u << 8) /**< \brief (UDP_IDR) Disable UDP Suspend Interrupt */ +#define UDP_IDR_RXRSM (0x1u << 9) /**< \brief (UDP_IDR) Disable UDP Resume Interrupt */ +#define UDP_IDR_EXTRSM (0x1u << 10) /**< \brief (UDP_IDR) */ +#define UDP_IDR_SOFINT (0x1u << 11) /**< \brief (UDP_IDR) Disable Start Of Frame Interrupt */ +#define UDP_IDR_WAKEUP (0x1u << 13) /**< \brief (UDP_IDR) Disable USB Bus Interrupt */ +/* -------- UDP_IMR : (UDP Offset: 0x018) Interrupt Mask Register -------- */ +#define UDP_IMR_EP0INT (0x1u << 0) /**< \brief (UDP_IMR) Mask Endpoint 0 Interrupt */ +#define UDP_IMR_EP1INT (0x1u << 1) /**< \brief (UDP_IMR) Mask Endpoint 1 Interrupt */ +#define UDP_IMR_EP2INT (0x1u << 2) /**< \brief (UDP_IMR) Mask Endpoint 2 Interrupt */ +#define UDP_IMR_EP3INT (0x1u << 3) /**< \brief (UDP_IMR) Mask Endpoint 3 Interrupt */ +#define UDP_IMR_EP4INT (0x1u << 4) /**< \brief (UDP_IMR) Mask Endpoint 4 Interrupt */ +#define UDP_IMR_EP5INT (0x1u << 5) /**< \brief (UDP_IMR) Mask Endpoint 5 Interrupt */ +#define UDP_IMR_EP6INT (0x1u << 6) /**< \brief (UDP_IMR) Mask Endpoint 6 Interrupt */ +#define UDP_IMR_EP7INT (0x1u << 7) /**< \brief (UDP_IMR) Mask Endpoint 7 Interrupt */ +#define UDP_IMR_RXSUSP (0x1u << 8) /**< \brief (UDP_IMR) Mask UDP Suspend Interrupt */ +#define UDP_IMR_RXRSM (0x1u << 9) /**< \brief (UDP_IMR) Mask UDP Resume Interrupt. */ +#define UDP_IMR_EXTRSM (0x1u << 10) /**< \brief (UDP_IMR) */ +#define UDP_IMR_SOFINT (0x1u << 11) /**< \brief (UDP_IMR) Mask Start Of Frame Interrupt */ +#define UDP_IMR_BIT12 (0x1u << 12) /**< \brief (UDP_IMR) UDP_IMR Bit 12 */ +#define UDP_IMR_WAKEUP (0x1u << 13) /**< \brief (UDP_IMR) USB Bus WAKEUP Interrupt */ +/* -------- UDP_ISR : (UDP Offset: 0x01C) Interrupt Status Register -------- */ +#define UDP_ISR_EP0INT (0x1u << 0) /**< \brief (UDP_ISR) Endpoint 0 Interrupt Status */ +#define UDP_ISR_EP1INT (0x1u << 1) /**< \brief (UDP_ISR) Endpoint 1 Interrupt Status */ +#define UDP_ISR_EP2INT (0x1u << 2) /**< \brief (UDP_ISR) Endpoint 2 Interrupt Status */ +#define UDP_ISR_EP3INT (0x1u << 3) /**< \brief (UDP_ISR) Endpoint 3 Interrupt Status */ +#define UDP_ISR_EP4INT (0x1u << 4) /**< \brief (UDP_ISR) Endpoint 4 Interrupt Status */ +#define UDP_ISR_EP5INT (0x1u << 5) /**< \brief (UDP_ISR) Endpoint 5 Interrupt Status */ +#define UDP_ISR_EP6INT (0x1u << 6) /**< \brief (UDP_ISR) Endpoint 6 Interrupt Status */ +#define UDP_ISR_EP7INT (0x1u << 7) /**< \brief (UDP_ISR) Endpoint 7Interrupt Status */ +#define UDP_ISR_RXSUSP (0x1u << 8) /**< \brief (UDP_ISR) UDP Suspend Interrupt Status */ +#define UDP_ISR_RXRSM (0x1u << 9) /**< \brief (UDP_ISR) UDP Resume Interrupt Status */ +#define UDP_ISR_EXTRSM (0x1u << 10) /**< \brief (UDP_ISR) */ +#define UDP_ISR_SOFINT (0x1u << 11) /**< \brief (UDP_ISR) Start of Frame Interrupt Status */ +#define UDP_ISR_ENDBUSRES (0x1u << 12) /**< \brief (UDP_ISR) End of BUS Reset Interrupt Status */ +#define UDP_ISR_WAKEUP (0x1u << 13) /**< \brief (UDP_ISR) UDP Resume Interrupt Status */ +/* -------- UDP_ICR : (UDP Offset: 0x020) Interrupt Clear Register -------- */ +#define UDP_ICR_RXSUSP (0x1u << 8) /**< \brief (UDP_ICR) Clear UDP Suspend Interrupt */ +#define UDP_ICR_RXRSM (0x1u << 9) /**< \brief (UDP_ICR) Clear UDP Resume Interrupt */ +#define UDP_ICR_EXTRSM (0x1u << 10) /**< \brief (UDP_ICR) */ +#define UDP_ICR_SOFINT (0x1u << 11) /**< \brief (UDP_ICR) Clear Start Of Frame Interrupt */ +#define UDP_ICR_ENDBUSRES (0x1u << 12) /**< \brief (UDP_ICR) Clear End of Bus Reset Interrupt */ +#define UDP_ICR_WAKEUP (0x1u << 13) /**< \brief (UDP_ICR) Clear Wakeup Interrupt */ +/* -------- UDP_RST_EP : (UDP Offset: 0x028) Reset Endpoint Register -------- */ +#define UDP_RST_EP_EP0 (0x1u << 0) /**< \brief (UDP_RST_EP) Reset Endpoint 0 */ +#define UDP_RST_EP_EP1 (0x1u << 1) /**< \brief (UDP_RST_EP) Reset Endpoint 1 */ +#define UDP_RST_EP_EP2 (0x1u << 2) /**< \brief (UDP_RST_EP) Reset Endpoint 2 */ +#define UDP_RST_EP_EP3 (0x1u << 3) /**< \brief (UDP_RST_EP) Reset Endpoint 3 */ +#define UDP_RST_EP_EP4 (0x1u << 4) /**< \brief (UDP_RST_EP) Reset Endpoint 4 */ +#define UDP_RST_EP_EP5 (0x1u << 5) /**< \brief (UDP_RST_EP) Reset Endpoint 5 */ +#define UDP_RST_EP_EP6 (0x1u << 6) /**< \brief (UDP_RST_EP) Reset Endpoint 6 */ +#define UDP_RST_EP_EP7 (0x1u << 7) /**< \brief (UDP_RST_EP) Reset Endpoint 7 */ +/* -------- UDP_CSR[8] : (UDP Offset: 0x030) Endpoint Control and Status Register -------- */ +#define UDP_CSR_TXCOMP (0x1u << 0) /**< \brief (UDP_CSR[8]) Generates an IN Packet with Data Previously Written in the DPR */ +#define UDP_CSR_RX_DATA_BK0 (0x1u << 1) /**< \brief (UDP_CSR[8]) Receive Data Bank 0 */ +#define UDP_CSR_RXSETUP (0x1u << 2) /**< \brief (UDP_CSR[8]) Received Setup */ +#define UDP_CSR_STALLSENT (0x1u << 3) /**< \brief (UDP_CSR[8]) Stall Sent (Control, Bulk Interrupt Endpoints)/ISOERROR (Isochronous Endpoints) */ +#define UDP_CSR_ISOERROR (0x1u << 3) /**< \brief (UDP_CSR[8]) Stall Sent (Control, Bulk Interrupt Endpoints)/ISOERROR (Isochronous Endpoints) */ +#define UDP_CSR_TXPKTRDY (0x1u << 4) /**< \brief (UDP_CSR[8]) Transmit Packet Ready */ +#define UDP_CSR_FORCESTALL (0x1u << 5) /**< \brief (UDP_CSR[8]) Force Stall (used by Control, Bulk and Isochronous Endpoints) */ +#define UDP_CSR_RX_DATA_BK1 (0x1u << 6) /**< \brief (UDP_CSR[8]) Receive Data Bank 1 (only used by endpoints with ping-pong attributes) */ +#define UDP_CSR_DIR (0x1u << 7) /**< \brief (UDP_CSR[8]) Transfer Direction (only available for control endpoints) */ +#define UDP_CSR_EPTYPE_Pos 8 +#define UDP_CSR_EPTYPE_Msk (0x7u << UDP_CSR_EPTYPE_Pos) /**< \brief (UDP_CSR[8]) Endpoint Type */ +#define UDP_CSR_EPTYPE_CTRL (0x0u << 8) /**< \brief (UDP_CSR[8]) Control */ +#define UDP_CSR_EPTYPE_ISO_OUT (0x1u << 8) /**< \brief (UDP_CSR[8]) Isochronous OUT */ +#define UDP_CSR_EPTYPE_BULK_OUT (0x2u << 8) /**< \brief (UDP_CSR[8]) Bulk OUT */ +#define UDP_CSR_EPTYPE_INT_OUT (0x3u << 8) /**< \brief (UDP_CSR[8]) Interrupt OUT */ +#define UDP_CSR_EPTYPE_ISO_IN (0x5u << 8) /**< \brief (UDP_CSR[8]) Isochronous IN */ +#define UDP_CSR_EPTYPE_BULK_IN (0x6u << 8) /**< \brief (UDP_CSR[8]) Bulk IN */ +#define UDP_CSR_EPTYPE_INT_IN (0x7u << 8) /**< \brief (UDP_CSR[8]) Interrupt IN */ +#define UDP_CSR_DTGLE (0x1u << 11) /**< \brief (UDP_CSR[8]) Data Toggle */ +#define UDP_CSR_EPEDS (0x1u << 15) /**< \brief (UDP_CSR[8]) Endpoint Enable Disable */ +#define UDP_CSR_RXBYTECNT_Pos 16 +#define UDP_CSR_RXBYTECNT_Msk (0x7ffu << UDP_CSR_RXBYTECNT_Pos) /**< \brief (UDP_CSR[8]) Number of Bytes Available in the FIFO */ +#define UDP_CSR_RXBYTECNT(value) ((UDP_CSR_RXBYTECNT_Msk & ((value) << UDP_CSR_RXBYTECNT_Pos))) +/* -------- UDP_FDR[8] : (UDP Offset: 0x050) Endpoint FIFO Data Register -------- */ +#define UDP_FDR_FIFO_DATA_Pos 0 +#define UDP_FDR_FIFO_DATA_Msk (0xffu << UDP_FDR_FIFO_DATA_Pos) /**< \brief (UDP_FDR[8]) FIFO Data Value */ +#define UDP_FDR_FIFO_DATA(value) ((UDP_FDR_FIFO_DATA_Msk & ((value) << UDP_FDR_FIFO_DATA_Pos))) +/* -------- UDP_TXVC : (UDP Offset: 0x074) Transceiver Control Register -------- */ +#define UDP_TXVC_TXVDIS (0x1u << 8) /**< \brief (UDP_TXVC) Transceiver Disable */ +#define UDP_TXVC_PUON (0x1u << 9) /**< \brief (UDP_TXVC) Pullup On */ + +/*@}*/ + + +#endif /* _SAM3S8_UDP_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_usart.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_usart.h new file mode 100644 index 000000000..664fdd27c --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_usart.h @@ -0,0 +1,361 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_USART_COMPONENT_ +#define _SAM3S8_USART_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Universal Synchronous Asynchronous Receiver Transmitter */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_USART Universal Synchronous Asynchronous Receiver Transmitter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Usart hardware registers */ +typedef struct { + WoReg US_CR; /**< \brief (Usart Offset: 0x0000) Control Register */ + RwReg US_MR; /**< \brief (Usart Offset: 0x0004) Mode Register */ + WoReg US_IER; /**< \brief (Usart Offset: 0x0008) Interrupt Enable Register */ + WoReg US_IDR; /**< \brief (Usart Offset: 0x000C) Interrupt Disable Register */ + RoReg US_IMR; /**< \brief (Usart Offset: 0x0010) Interrupt Mask Register */ + RoReg US_CSR; /**< \brief (Usart Offset: 0x0014) Channel Status Register */ + RoReg US_RHR; /**< \brief (Usart Offset: 0x0018) Receiver Holding Register */ + WoReg US_THR; /**< \brief (Usart Offset: 0x001C) Transmitter Holding Register */ + RwReg US_BRGR; /**< \brief (Usart Offset: 0x0020) Baud Rate Generator Register */ + RwReg US_RTOR; /**< \brief (Usart Offset: 0x0024) Receiver Time-out Register */ + RwReg US_TTGR; /**< \brief (Usart Offset: 0x0028) Transmitter Timeguard Register */ + RoReg Reserved1[5]; + RwReg US_FIDI; /**< \brief (Usart Offset: 0x0040) FI DI Ratio Register */ + RoReg US_NER; /**< \brief (Usart Offset: 0x0044) Number of Errors Register */ + RoReg Reserved2[1]; + RwReg US_IF; /**< \brief (Usart Offset: 0x004C) IrDA Filter Register */ + RwReg US_MAN; /**< \brief (Usart Offset: 0x0050) Manchester Encoder Decoder Register */ + RoReg Reserved3[36]; + RwReg US_WPMR; /**< \brief (Usart Offset: 0xE4) Write Protect Mode Register */ + RoReg US_WPSR; /**< \brief (Usart Offset: 0xE8) Write Protect Status Register */ + RoReg Reserved4[4]; + RoReg US_VERSION; /**< \brief (Usart Offset: 0xFC) Version Register */ + RwReg US_RPR; /**< \brief (Usart Offset: 0x100) Receive Pointer Register */ + RwReg US_RCR; /**< \brief (Usart Offset: 0x104) Receive Counter Register */ + RwReg US_TPR; /**< \brief (Usart Offset: 0x108) Transmit Pointer Register */ + RwReg US_TCR; /**< \brief (Usart Offset: 0x10C) Transmit Counter Register */ + RwReg US_RNPR; /**< \brief (Usart Offset: 0x110) Receive Next Pointer Register */ + RwReg US_RNCR; /**< \brief (Usart Offset: 0x114) Receive Next Counter Register */ + RwReg US_TNPR; /**< \brief (Usart Offset: 0x118) Transmit Next Pointer Register */ + RwReg US_TNCR; /**< \brief (Usart Offset: 0x11C) Transmit Next Counter Register */ + WoReg US_PTCR; /**< \brief (Usart Offset: 0x120) Transfer Control Register */ + RoReg US_PTSR; /**< \brief (Usart Offset: 0x124) Transfer Status Register */ +} Usart; +#endif /* __ASSEMBLY__ */ +/* -------- US_CR : (USART Offset: 0x0000) Control Register -------- */ +#define US_CR_RSTRX (0x1u << 2) /**< \brief (US_CR) Reset Receiver */ +#define US_CR_RSTTX (0x1u << 3) /**< \brief (US_CR) Reset Transmitter */ +#define US_CR_RXEN (0x1u << 4) /**< \brief (US_CR) Receiver Enable */ +#define US_CR_RXDIS (0x1u << 5) /**< \brief (US_CR) Receiver Disable */ +#define US_CR_TXEN (0x1u << 6) /**< \brief (US_CR) Transmitter Enable */ +#define US_CR_TXDIS (0x1u << 7) /**< \brief (US_CR) Transmitter Disable */ +#define US_CR_RSTSTA (0x1u << 8) /**< \brief (US_CR) Reset Status Bits */ +#define US_CR_STTBRK (0x1u << 9) /**< \brief (US_CR) Start Break */ +#define US_CR_STPBRK (0x1u << 10) /**< \brief (US_CR) Stop Break */ +#define US_CR_STTTO (0x1u << 11) /**< \brief (US_CR) Start Time-out */ +#define US_CR_SENDA (0x1u << 12) /**< \brief (US_CR) Send Address */ +#define US_CR_RSTIT (0x1u << 13) /**< \brief (US_CR) Reset Iterations */ +#define US_CR_RSTNACK (0x1u << 14) /**< \brief (US_CR) Reset Non Acknowledge */ +#define US_CR_RETTO (0x1u << 15) /**< \brief (US_CR) Rearm Time-out */ +#define US_CR_DTREN (0x1u << 16) /**< \brief (US_CR) Data Terminal Ready Enable */ +#define US_CR_DTRDIS (0x1u << 17) /**< \brief (US_CR) Data Terminal Ready Disable */ +#define US_CR_RTSEN (0x1u << 18) /**< \brief (US_CR) Request to Send Enable */ +#define US_CR_FCS (0x1u << 18) /**< \brief (US_CR) Force SPI Chip Select */ +#define US_CR_RTSDIS (0x1u << 19) /**< \brief (US_CR) Request to Send Disable */ +#define US_CR_RCS (0x1u << 19) /**< \brief (US_CR) Release SPI Chip Select */ +/* -------- US_MR : (USART Offset: 0x0004) Mode Register -------- */ +#define US_MR_USART_MODE_Pos 0 +#define US_MR_USART_MODE_Msk (0xfu << US_MR_USART_MODE_Pos) /**< \brief (US_MR) */ +#define US_MR_USART_MODE_NORMAL (0x0u << 0) /**< \brief (US_MR) Normal mode */ +#define US_MR_USART_MODE_RS485 (0x1u << 0) /**< \brief (US_MR) RS485 */ +#define US_MR_USART_MODE_HW_HANDSHAKING (0x2u << 0) /**< \brief (US_MR) Hardware Handshaking */ +#define US_MR_USART_MODE_MODEM (0x3u << 0) /**< \brief (US_MR) Modem */ +#define US_MR_USART_MODE_IS07816_T_0 (0x4u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 0 */ +#define US_MR_USART_MODE_IS07816_T_1 (0x6u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 1 */ +#define US_MR_USART_MODE_IRDA (0x8u << 0) /**< \brief (US_MR) IrDA */ +#define US_MR_USART_MODE_SPI_MASTER (0xEu << 0) /**< \brief (US_MR) SPI Master */ +#define US_MR_USART_MODE_SPI_SLAVE (0xFu << 0) /**< \brief (US_MR) SPI Slave */ +#define US_MR_USCLKS_Pos 4 +#define US_MR_USCLKS_Msk (0x3u << US_MR_USCLKS_Pos) /**< \brief (US_MR) Clock Selection */ +#define US_MR_USCLKS_MCK (0x0u << 4) /**< \brief (US_MR) Master Clock MCK is selected */ +#define US_MR_USCLKS_DIV (0x1u << 4) /**< \brief (US_MR) Internal Clock Divided MCK/DIV (DIV=8) is selected */ +#define US_MR_USCLKS_SCK (0x3u << 4) /**< \brief (US_MR) Serial Clock SLK is selected */ +#define US_MR_CHRL_Pos 6 +#define US_MR_CHRL_Msk (0x3u << US_MR_CHRL_Pos) /**< \brief (US_MR) Character Length. */ +#define US_MR_CHRL_5_BIT (0x0u << 6) /**< \brief (US_MR) Character length is 5 bits */ +#define US_MR_CHRL_6_BIT (0x1u << 6) /**< \brief (US_MR) Character length is 6 bits */ +#define US_MR_CHRL_7_BIT (0x2u << 6) /**< \brief (US_MR) Character length is 7 bits */ +#define US_MR_CHRL_8_BIT (0x3u << 6) /**< \brief (US_MR) Character length is 8 bits */ +#define US_MR_SYNC (0x1u << 8) /**< \brief (US_MR) Synchronous Mode Select */ +#define US_MR_CPHA (0x1u << 8) /**< \brief (US_MR) SPI Clock Phase */ +#define US_MR_PAR_Pos 9 +#define US_MR_PAR_Msk (0x7u << US_MR_PAR_Pos) /**< \brief (US_MR) Parity Type */ +#define US_MR_PAR_EVEN (0x0u << 9) /**< \brief (US_MR) Even parity */ +#define US_MR_PAR_ODD (0x1u << 9) /**< \brief (US_MR) Odd parity */ +#define US_MR_PAR_SPACE (0x2u << 9) /**< \brief (US_MR) Parity forced to 0 (Space) */ +#define US_MR_PAR_MARK (0x3u << 9) /**< \brief (US_MR) Parity forced to 1 (Mark) */ +#define US_MR_PAR_NO (0x4u << 9) /**< \brief (US_MR) No parity */ +#define US_MR_PAR_MULTIDROP (0x6u << 9) /**< \brief (US_MR) Multidrop mode */ +#define US_MR_NBSTOP_Pos 12 +#define US_MR_NBSTOP_Msk (0x3u << US_MR_NBSTOP_Pos) /**< \brief (US_MR) Number of Stop Bits */ +#define US_MR_NBSTOP_1_BIT (0x0u << 12) /**< \brief (US_MR) 1 stop bit */ +#define US_MR_NBSTOP_1_5_BIT (0x1u << 12) /**< \brief (US_MR) 1.5 stop bit (SYNC = 0) or reserved (SYNC = 1) */ +#define US_MR_NBSTOP_2_BIT (0x2u << 12) /**< \brief (US_MR) 2 stop bits */ +#define US_MR_CHMODE_Pos 14 +#define US_MR_CHMODE_Msk (0x3u << US_MR_CHMODE_Pos) /**< \brief (US_MR) Channel Mode */ +#define US_MR_CHMODE_NORMAL (0x0u << 14) /**< \brief (US_MR) Normal Mode */ +#define US_MR_CHMODE_AUTOMATIC (0x1u << 14) /**< \brief (US_MR) Automatic Echo. Receiver input is connected to the TXD pin. */ +#define US_MR_CHMODE_LOCAL_LOOPBACK (0x2u << 14) /**< \brief (US_MR) Local Loopback. Transmitter output is connected to the Receiver Input. */ +#define US_MR_CHMODE_REMOTE_LOOPBACK (0x3u << 14) /**< \brief (US_MR) Remote Loopback. RXD pin is internally connected to the TXD pin. */ +#define US_MR_MSBF (0x1u << 16) /**< \brief (US_MR) Bit Order */ +#define US_MR_CPOL (0x1u << 16) /**< \brief (US_MR) SPI Clock Polarity */ +#define US_MR_MODE9 (0x1u << 17) /**< \brief (US_MR) 9-bit Character Length */ +#define US_MR_CLKO (0x1u << 18) /**< \brief (US_MR) Clock Output Select */ +#define US_MR_OVER (0x1u << 19) /**< \brief (US_MR) Oversampling Mode */ +#define US_MR_INACK (0x1u << 20) /**< \brief (US_MR) Inhibit Non Acknowledge */ +#define US_MR_DSNACK (0x1u << 21) /**< \brief (US_MR) Disable Successive NACK */ +#define US_MR_VAR_SYNC (0x1u << 22) /**< \brief (US_MR) Variable Synchronization of Command/Data Sync Start Frame Delimiter */ +#define US_MR_INVDATA (0x1u << 23) /**< \brief (US_MR) INverted Data */ +#define US_MR_MAX_ITERATION_Pos 24 +#define US_MR_MAX_ITERATION_Msk (0x7u << US_MR_MAX_ITERATION_Pos) /**< \brief (US_MR) */ +#define US_MR_MAX_ITERATION(value) ((US_MR_MAX_ITERATION_Msk & ((value) << US_MR_MAX_ITERATION_Pos))) +#define US_MR_FILTER (0x1u << 28) /**< \brief (US_MR) Infrared Receive Line Filter */ +#define US_MR_MAN (0x1u << 29) /**< \brief (US_MR) Manchester Encoder/Decoder Enable */ +#define US_MR_MODSYNC (0x1u << 30) /**< \brief (US_MR) Manchester Synchronization Mode */ +#define US_MR_ONEBIT (0x1u << 31) /**< \brief (US_MR) Start Frame Delimiter Selector */ +/* -------- US_IER : (USART Offset: 0x0008) Interrupt Enable Register -------- */ +#define US_IER_RXRDY (0x1u << 0) /**< \brief (US_IER) RXRDY Interrupt Enable */ +#define US_IER_TXRDY (0x1u << 1) /**< \brief (US_IER) TXRDY Interrupt Enable */ +#define US_IER_RXBRK (0x1u << 2) /**< \brief (US_IER) Receiver Break Interrupt Enable */ +#define US_IER_ENDRX (0x1u << 3) /**< \brief (US_IER) End of Receive Transfer Interrupt Enable */ +#define US_IER_ENDTX (0x1u << 4) /**< \brief (US_IER) End of Transmit Interrupt Enable */ +#define US_IER_OVRE (0x1u << 5) /**< \brief (US_IER) Overrun Error Interrupt Enable */ +#define US_IER_FRAME (0x1u << 6) /**< \brief (US_IER) Framing Error Interrupt Enable */ +#define US_IER_PARE (0x1u << 7) /**< \brief (US_IER) Parity Error Interrupt Enable */ +#define US_IER_TIMEOUT (0x1u << 8) /**< \brief (US_IER) Time-out Interrupt Enable */ +#define US_IER_TXEMPTY (0x1u << 9) /**< \brief (US_IER) TXEMPTY Interrupt Enable */ +#define US_IER_ITER (0x1u << 10) /**< \brief (US_IER) Max number of Repetitions Reached */ +#define US_IER_UNRE (0x1u << 10) /**< \brief (US_IER) SPI Underrun Error */ +#define US_IER_TXBUFE (0x1u << 11) /**< \brief (US_IER) Buffer Empty Interrupt Enable */ +#define US_IER_RXBUFF (0x1u << 12) /**< \brief (US_IER) Buffer Full Interrupt Enable */ +#define US_IER_NACK (0x1u << 13) /**< \brief (US_IER) Non AcknowledgeInterrupt Enable */ +#define US_IER_RIIC (0x1u << 16) /**< \brief (US_IER) Ring Indicator Input Change Enable */ +#define US_IER_DSRIC (0x1u << 17) /**< \brief (US_IER) Data Set Ready Input Change Enable */ +#define US_IER_DCDIC (0x1u << 18) /**< \brief (US_IER) Data Carrier Detect Input Change Interrupt Enable */ +#define US_IER_CTSIC (0x1u << 19) /**< \brief (US_IER) Clear to Send Input Change Interrupt Enable */ +#define US_IER_MANE (0x1u << 24) /**< \brief (US_IER) Manchester Error Interrupt Enable */ +/* -------- US_IDR : (USART Offset: 0x000C) Interrupt Disable Register -------- */ +#define US_IDR_RXRDY (0x1u << 0) /**< \brief (US_IDR) RXRDY Interrupt Disable */ +#define US_IDR_TXRDY (0x1u << 1) /**< \brief (US_IDR) TXRDY Interrupt Disable */ +#define US_IDR_RXBRK (0x1u << 2) /**< \brief (US_IDR) Receiver Break Interrupt Disable */ +#define US_IDR_ENDRX (0x1u << 3) /**< \brief (US_IDR) End of Receive Transfer Interrupt Disable */ +#define US_IDR_ENDTX (0x1u << 4) /**< \brief (US_IDR) End of Transmit Interrupt Disable */ +#define US_IDR_OVRE (0x1u << 5) /**< \brief (US_IDR) Overrun Error Interrupt Disable */ +#define US_IDR_FRAME (0x1u << 6) /**< \brief (US_IDR) Framing Error Interrupt Disable */ +#define US_IDR_PARE (0x1u << 7) /**< \brief (US_IDR) Parity Error Interrupt Disable */ +#define US_IDR_TIMEOUT (0x1u << 8) /**< \brief (US_IDR) Time-out Interrupt Disable */ +#define US_IDR_TXEMPTY (0x1u << 9) /**< \brief (US_IDR) TXEMPTY Interrupt Disable */ +#define US_IDR_ITER (0x1u << 10) /**< \brief (US_IDR) Max number of Repetitions Reached Disable */ +#define US_IDR_UNRE (0x1u << 10) /**< \brief (US_IDR) SPI Underrun Error Disable */ +#define US_IDR_TXBUFE (0x1u << 11) /**< \brief (US_IDR) Buffer Empty Interrupt Disable */ +#define US_IDR_RXBUFF (0x1u << 12) /**< \brief (US_IDR) Buffer Full Interrupt Disable */ +#define US_IDR_NACK (0x1u << 13) /**< \brief (US_IDR) Non AcknowledgeInterrupt Disable */ +#define US_IDR_RIIC (0x1u << 16) /**< \brief (US_IDR) Ring Indicator Input Change Disable */ +#define US_IDR_DSRIC (0x1u << 17) /**< \brief (US_IDR) Data Set Ready Input Change Disable */ +#define US_IDR_DCDIC (0x1u << 18) /**< \brief (US_IDR) Data Carrier Detect Input Change Interrupt Disable */ +#define US_IDR_CTSIC (0x1u << 19) /**< \brief (US_IDR) Clear to Send Input Change Interrupt Disable */ +#define US_IDR_MANE (0x1u << 24) /**< \brief (US_IDR) Manchester Error Interrupt Disable */ +/* -------- US_IMR : (USART Offset: 0x0010) Interrupt Mask Register -------- */ +#define US_IMR_RXRDY (0x1u << 0) /**< \brief (US_IMR) RXRDY Interrupt Mask */ +#define US_IMR_TXRDY (0x1u << 1) /**< \brief (US_IMR) TXRDY Interrupt Mask */ +#define US_IMR_RXBRK (0x1u << 2) /**< \brief (US_IMR) Receiver Break Interrupt Mask */ +#define US_IMR_ENDRX (0x1u << 3) /**< \brief (US_IMR) End of Receive Transfer Interrupt Mask */ +#define US_IMR_ENDTX (0x1u << 4) /**< \brief (US_IMR) End of Transmit Interrupt Mask */ +#define US_IMR_OVRE (0x1u << 5) /**< \brief (US_IMR) Overrun Error Interrupt Mask */ +#define US_IMR_FRAME (0x1u << 6) /**< \brief (US_IMR) Framing Error Interrupt Mask */ +#define US_IMR_PARE (0x1u << 7) /**< \brief (US_IMR) Parity Error Interrupt Mask */ +#define US_IMR_TIMEOUT (0x1u << 8) /**< \brief (US_IMR) Time-out Interrupt Mask */ +#define US_IMR_TXEMPTY (0x1u << 9) /**< \brief (US_IMR) TXEMPTY Interrupt Mask */ +#define US_IMR_ITER (0x1u << 10) /**< \brief (US_IMR) Max number of Repetitions Reached Mask */ +#define US_IMR_UNRE (0x1u << 10) /**< \brief (US_IMR) SPI Underrun Error Mask */ +#define US_IMR_TXBUFE (0x1u << 11) /**< \brief (US_IMR) Buffer Empty Interrupt Mask */ +#define US_IMR_RXBUFF (0x1u << 12) /**< \brief (US_IMR) Buffer Full Interrupt Mask */ +#define US_IMR_NACK (0x1u << 13) /**< \brief (US_IMR) Non AcknowledgeInterrupt Mask */ +#define US_IMR_RIIC (0x1u << 16) /**< \brief (US_IMR) Ring Indicator Input Change Mask */ +#define US_IMR_DSRIC (0x1u << 17) /**< \brief (US_IMR) Data Set Ready Input Change Mask */ +#define US_IMR_DCDIC (0x1u << 18) /**< \brief (US_IMR) Data Carrier Detect Input Change Interrupt Mask */ +#define US_IMR_CTSIC (0x1u << 19) /**< \brief (US_IMR) Clear to Send Input Change Interrupt Mask */ +#define US_IMR_MANE (0x1u << 24) /**< \brief (US_IMR) Manchester Error Interrupt Mask */ +/* -------- US_CSR : (USART Offset: 0x0014) Channel Status Register -------- */ +#define US_CSR_RXRDY (0x1u << 0) /**< \brief (US_CSR) Receiver Ready */ +#define US_CSR_TXRDY (0x1u << 1) /**< \brief (US_CSR) Transmitter Ready */ +#define US_CSR_RXBRK (0x1u << 2) /**< \brief (US_CSR) Break Received/End of Break */ +#define US_CSR_ENDRX (0x1u << 3) /**< \brief (US_CSR) End of Receiver Transfer */ +#define US_CSR_ENDTX (0x1u << 4) /**< \brief (US_CSR) End of Transmitter Transfer */ +#define US_CSR_OVRE (0x1u << 5) /**< \brief (US_CSR) Overrun Error */ +#define US_CSR_FRAME (0x1u << 6) /**< \brief (US_CSR) Framing Error */ +#define US_CSR_PARE (0x1u << 7) /**< \brief (US_CSR) Parity Error */ +#define US_CSR_TIMEOUT (0x1u << 8) /**< \brief (US_CSR) Receiver Time-out */ +#define US_CSR_TXEMPTY (0x1u << 9) /**< \brief (US_CSR) Transmitter Empty */ +#define US_CSR_ITER (0x1u << 10) /**< \brief (US_CSR) Max number of Repetitions Reached */ +#define US_CSR_UNRE (0x1u << 10) /**< \brief (US_CSR) SPI Underrun Error */ +#define US_CSR_TXBUFE (0x1u << 11) /**< \brief (US_CSR) Transmission Buffer Empty */ +#define US_CSR_RXBUFF (0x1u << 12) /**< \brief (US_CSR) Reception Buffer Full */ +#define US_CSR_NACK (0x1u << 13) /**< \brief (US_CSR) Non AcknowledgeInterrupt */ +#define US_CSR_RIIC (0x1u << 16) /**< \brief (US_CSR) Ring Indicator Input Change Flag */ +#define US_CSR_DSRIC (0x1u << 17) /**< \brief (US_CSR) Data Set Ready Input Change Flag */ +#define US_CSR_DCDIC (0x1u << 18) /**< \brief (US_CSR) Data Carrier Detect Input Change Flag */ +#define US_CSR_CTSIC (0x1u << 19) /**< \brief (US_CSR) Clear to Send Input Change Flag */ +#define US_CSR_RI (0x1u << 20) /**< \brief (US_CSR) Image of RI Input */ +#define US_CSR_DSR (0x1u << 21) /**< \brief (US_CSR) Image of DSR Input */ +#define US_CSR_DCD (0x1u << 22) /**< \brief (US_CSR) Image of DCD Input */ +#define US_CSR_CTS (0x1u << 23) /**< \brief (US_CSR) Image of CTS Input */ +#define US_CSR_MANERR (0x1u << 24) /**< \brief (US_CSR) Manchester Error */ +/* -------- US_RHR : (USART Offset: 0x0018) Receiver Holding Register -------- */ +#define US_RHR_RXCHR_Pos 0 +#define US_RHR_RXCHR_Msk (0x1ffu << US_RHR_RXCHR_Pos) /**< \brief (US_RHR) Received Character */ +#define US_RHR_RXSYNH (0x1u << 15) /**< \brief (US_RHR) Received Sync */ +/* -------- US_THR : (USART Offset: 0x001C) Transmitter Holding Register -------- */ +#define US_THR_TXCHR_Pos 0 +#define US_THR_TXCHR_Msk (0x1ffu << US_THR_TXCHR_Pos) /**< \brief (US_THR) Character to be Transmitted */ +#define US_THR_TXCHR(value) ((US_THR_TXCHR_Msk & ((value) << US_THR_TXCHR_Pos))) +#define US_THR_TXSYNH (0x1u << 15) /**< \brief (US_THR) Sync Field to be transmitted */ +/* -------- US_BRGR : (USART Offset: 0x0020) Baud Rate Generator Register -------- */ +#define US_BRGR_CD_Pos 0 +#define US_BRGR_CD_Msk (0xffffu << US_BRGR_CD_Pos) /**< \brief (US_BRGR) Clock Divider */ +#define US_BRGR_CD(value) ((US_BRGR_CD_Msk & ((value) << US_BRGR_CD_Pos))) +#define US_BRGR_FP_Pos 16 +#define US_BRGR_FP_Msk (0x7u << US_BRGR_FP_Pos) /**< \brief (US_BRGR) Fractional Part */ +#define US_BRGR_FP(value) ((US_BRGR_FP_Msk & ((value) << US_BRGR_FP_Pos))) +/* -------- US_RTOR : (USART Offset: 0x0024) Receiver Time-out Register -------- */ +#define US_RTOR_TO_Pos 0 +#define US_RTOR_TO_Msk (0xffffu << US_RTOR_TO_Pos) /**< \brief (US_RTOR) Time-out Value */ +#define US_RTOR_TO(value) ((US_RTOR_TO_Msk & ((value) << US_RTOR_TO_Pos))) +/* -------- US_TTGR : (USART Offset: 0x0028) Transmitter Timeguard Register -------- */ +#define US_TTGR_TG_Pos 0 +#define US_TTGR_TG_Msk (0xffu << US_TTGR_TG_Pos) /**< \brief (US_TTGR) Timeguard Value */ +#define US_TTGR_TG(value) ((US_TTGR_TG_Msk & ((value) << US_TTGR_TG_Pos))) +/* -------- US_FIDI : (USART Offset: 0x0040) FI DI Ratio Register -------- */ +#define US_FIDI_FI_DI_RATIO_Pos 0 +#define US_FIDI_FI_DI_RATIO_Msk (0x7ffu << US_FIDI_FI_DI_RATIO_Pos) /**< \brief (US_FIDI) FI Over DI Ratio Value */ +#define US_FIDI_FI_DI_RATIO(value) ((US_FIDI_FI_DI_RATIO_Msk & ((value) << US_FIDI_FI_DI_RATIO_Pos))) +/* -------- US_NER : (USART Offset: 0x0044) Number of Errors Register -------- */ +#define US_NER_NB_ERRORS_Pos 0 +#define US_NER_NB_ERRORS_Msk (0xffu << US_NER_NB_ERRORS_Pos) /**< \brief (US_NER) Number of Errors */ +/* -------- US_IF : (USART Offset: 0x004C) IrDA Filter Register -------- */ +#define US_IF_IRDA_FILTER_Pos 0 +#define US_IF_IRDA_FILTER_Msk (0xffu << US_IF_IRDA_FILTER_Pos) /**< \brief (US_IF) IrDA Filter */ +#define US_IF_IRDA_FILTER(value) ((US_IF_IRDA_FILTER_Msk & ((value) << US_IF_IRDA_FILTER_Pos))) +/* -------- US_MAN : (USART Offset: 0x0050) Manchester Encoder Decoder Register -------- */ +#define US_MAN_TX_PL_Pos 0 +#define US_MAN_TX_PL_Msk (0xfu << US_MAN_TX_PL_Pos) /**< \brief (US_MAN) Transmitter Preamble Length */ +#define US_MAN_TX_PL(value) ((US_MAN_TX_PL_Msk & ((value) << US_MAN_TX_PL_Pos))) +#define US_MAN_TX_PP_Pos 8 +#define US_MAN_TX_PP_Msk (0x3u << US_MAN_TX_PP_Pos) /**< \brief (US_MAN) Transmitter Preamble Pattern */ +#define US_MAN_TX_PP_ALL_ONE (0x0u << 8) /**< \brief (US_MAN) The preamble is composed of '1's */ +#define US_MAN_TX_PP_ALL_ZERO (0x1u << 8) /**< \brief (US_MAN) The preamble is composed of '0's */ +#define US_MAN_TX_PP_ZERO_ONE (0x2u << 8) /**< \brief (US_MAN) The preamble is composed of '01's */ +#define US_MAN_TX_PP_ONE_ZERO (0x3u << 8) /**< \brief (US_MAN) The preamble is composed of '10's */ +#define US_MAN_TX_MPOL (0x1u << 12) /**< \brief (US_MAN) Transmitter Manchester Polarity */ +#define US_MAN_RX_PL_Pos 16 +#define US_MAN_RX_PL_Msk (0xfu << US_MAN_RX_PL_Pos) /**< \brief (US_MAN) Receiver Preamble Length */ +#define US_MAN_RX_PL(value) ((US_MAN_RX_PL_Msk & ((value) << US_MAN_RX_PL_Pos))) +#define US_MAN_RX_PP_Pos 24 +#define US_MAN_RX_PP_Msk (0x3u << US_MAN_RX_PP_Pos) /**< \brief (US_MAN) Receiver Preamble Pattern detected */ +#define US_MAN_RX_PP_ALL_ONE (0x0u << 24) /**< \brief (US_MAN) The preamble is composed of '1's */ +#define US_MAN_RX_PP_ALL_ZERO (0x1u << 24) /**< \brief (US_MAN) The preamble is composed of '0's */ +#define US_MAN_RX_PP_ZERO_ONE (0x2u << 24) /**< \brief (US_MAN) The preamble is composed of '01's */ +#define US_MAN_RX_PP_ONE_ZERO (0x3u << 24) /**< \brief (US_MAN) The preamble is composed of '10's */ +#define US_MAN_RX_MPOL (0x1u << 28) /**< \brief (US_MAN) Receiver Manchester Polarity */ +#define US_MAN_STUCKTO1 (0x1u << 29) /**< \brief (US_MAN) */ +#define US_MAN_DRIFT (0x1u << 30) /**< \brief (US_MAN) Drift compensation */ +/* -------- US_WPMR : (USART Offset: 0xE4) Write Protect Mode Register -------- */ +#define US_WPMR_WPEN (0x1u << 0) /**< \brief (US_WPMR) Write Protect Enable */ +#define US_WPMR_WPKEY_Pos 8 +#define US_WPMR_WPKEY_Msk (0xffffffu << US_WPMR_WPKEY_Pos) /**< \brief (US_WPMR) Write Protect KEY */ +#define US_WPMR_WPKEY(value) ((US_WPMR_WPKEY_Msk & ((value) << US_WPMR_WPKEY_Pos))) +/* -------- US_WPSR : (USART Offset: 0xE8) Write Protect Status Register -------- */ +#define US_WPSR_WPVS (0x1u << 0) /**< \brief (US_WPSR) Write Protect Violation Status */ +#define US_WPSR_WPVSRC_Pos 8 +#define US_WPSR_WPVSRC_Msk (0xffffu << US_WPSR_WPVSRC_Pos) /**< \brief (US_WPSR) Write Protect Violation Source */ +/* -------- US_VERSION : (USART Offset: 0xFC) Version Register -------- */ +#define US_VERSION_VERSION_Pos 0 +#define US_VERSION_VERSION_Msk (0xfffu << US_VERSION_VERSION_Pos) /**< \brief (US_VERSION) */ +#define US_VERSION_MFN_Pos 16 +#define US_VERSION_MFN_Msk (0x7u << US_VERSION_MFN_Pos) /**< \brief (US_VERSION) */ +/* -------- US_RPR : (USART Offset: 0x100) Receive Pointer Register -------- */ +#define US_RPR_RXPTR_Pos 0 +#define US_RPR_RXPTR_Msk (0xffffffffu << US_RPR_RXPTR_Pos) /**< \brief (US_RPR) Receive Pointer Register */ +#define US_RPR_RXPTR(value) ((US_RPR_RXPTR_Msk & ((value) << US_RPR_RXPTR_Pos))) +/* -------- US_RCR : (USART Offset: 0x104) Receive Counter Register -------- */ +#define US_RCR_RXCTR_Pos 0 +#define US_RCR_RXCTR_Msk (0xffffu << US_RCR_RXCTR_Pos) /**< \brief (US_RCR) Receive Counter Register */ +#define US_RCR_RXCTR(value) ((US_RCR_RXCTR_Msk & ((value) << US_RCR_RXCTR_Pos))) +/* -------- US_TPR : (USART Offset: 0x108) Transmit Pointer Register -------- */ +#define US_TPR_TXPTR_Pos 0 +#define US_TPR_TXPTR_Msk (0xffffffffu << US_TPR_TXPTR_Pos) /**< \brief (US_TPR) Transmit Counter Register */ +#define US_TPR_TXPTR(value) ((US_TPR_TXPTR_Msk & ((value) << US_TPR_TXPTR_Pos))) +/* -------- US_TCR : (USART Offset: 0x10C) Transmit Counter Register -------- */ +#define US_TCR_TXCTR_Pos 0 +#define US_TCR_TXCTR_Msk (0xffffu << US_TCR_TXCTR_Pos) /**< \brief (US_TCR) Transmit Counter Register */ +#define US_TCR_TXCTR(value) ((US_TCR_TXCTR_Msk & ((value) << US_TCR_TXCTR_Pos))) +/* -------- US_RNPR : (USART Offset: 0x110) Receive Next Pointer Register -------- */ +#define US_RNPR_RXNPTR_Pos 0 +#define US_RNPR_RXNPTR_Msk (0xffffffffu << US_RNPR_RXNPTR_Pos) /**< \brief (US_RNPR) Receive Next Pointer */ +#define US_RNPR_RXNPTR(value) ((US_RNPR_RXNPTR_Msk & ((value) << US_RNPR_RXNPTR_Pos))) +/* -------- US_RNCR : (USART Offset: 0x114) Receive Next Counter Register -------- */ +#define US_RNCR_RXNCTR_Pos 0 +#define US_RNCR_RXNCTR_Msk (0xffffu << US_RNCR_RXNCTR_Pos) /**< \brief (US_RNCR) Receive Next Counter */ +#define US_RNCR_RXNCTR(value) ((US_RNCR_RXNCTR_Msk & ((value) << US_RNCR_RXNCTR_Pos))) +/* -------- US_TNPR : (USART Offset: 0x118) Transmit Next Pointer Register -------- */ +#define US_TNPR_TXNPTR_Pos 0 +#define US_TNPR_TXNPTR_Msk (0xffffffffu << US_TNPR_TXNPTR_Pos) /**< \brief (US_TNPR) Transmit Next Pointer */ +#define US_TNPR_TXNPTR(value) ((US_TNPR_TXNPTR_Msk & ((value) << US_TNPR_TXNPTR_Pos))) +/* -------- US_TNCR : (USART Offset: 0x11C) Transmit Next Counter Register -------- */ +#define US_TNCR_TXNCTR_Pos 0 +#define US_TNCR_TXNCTR_Msk (0xffffu << US_TNCR_TXNCTR_Pos) /**< \brief (US_TNCR) Transmit Counter Next */ +#define US_TNCR_TXNCTR(value) ((US_TNCR_TXNCTR_Msk & ((value) << US_TNCR_TXNCTR_Pos))) +/* -------- US_PTCR : (USART Offset: 0x120) Transfer Control Register -------- */ +#define US_PTCR_RXTEN (0x1u << 0) /**< \brief (US_PTCR) Receiver Transfer Enable */ +#define US_PTCR_RXTDIS (0x1u << 1) /**< \brief (US_PTCR) Receiver Transfer Disable */ +#define US_PTCR_TXTEN (0x1u << 8) /**< \brief (US_PTCR) Transmitter Transfer Enable */ +#define US_PTCR_TXTDIS (0x1u << 9) /**< \brief (US_PTCR) Transmitter Transfer Disable */ +/* -------- US_PTSR : (USART Offset: 0x124) Transfer Status Register -------- */ +#define US_PTSR_RXTEN (0x1u << 0) /**< \brief (US_PTSR) Receiver Transfer Enable */ +#define US_PTSR_TXTEN (0x1u << 8) /**< \brief (US_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3S8_USART_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_wdt.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_wdt.h new file mode 100644 index 000000000..228e31be5 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/component/component_wdt.h @@ -0,0 +1,72 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_WDT_COMPONENT_ +#define _SAM3S8_WDT_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Watchdog Timer */ +/* ============================================================================= */ +/** \addtogroup SAM3S8_WDT Watchdog Timer */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Wdt hardware registers */ +typedef struct { + WoReg WDT_CR; /**< \brief (Wdt Offset: 0x00) Control Register */ + RwReg WDT_MR; /**< \brief (Wdt Offset: 0x04) Mode Register */ + RoReg WDT_SR; /**< \brief (Wdt Offset: 0x08) Status Register */ +} Wdt; +#endif /* __ASSEMBLY__ */ +/* -------- WDT_CR : (WDT Offset: 0x00) Control Register -------- */ +#define WDT_CR_WDRSTT (0x1u << 0) /**< \brief (WDT_CR) Watchdog Restart */ +#define WDT_CR_KEY_Pos 24 +#define WDT_CR_KEY_Msk (0xffu << WDT_CR_KEY_Pos) /**< \brief (WDT_CR) Password */ +#define WDT_CR_KEY(value) ((WDT_CR_KEY_Msk & ((value) << WDT_CR_KEY_Pos))) +/* -------- WDT_MR : (WDT Offset: 0x04) Mode Register -------- */ +#define WDT_MR_WDV_Pos 0 +#define WDT_MR_WDV_Msk (0xfffu << WDT_MR_WDV_Pos) /**< \brief (WDT_MR) Watchdog Counter Value */ +#define WDT_MR_WDV(value) ((WDT_MR_WDV_Msk & ((value) << WDT_MR_WDV_Pos))) +#define WDT_MR_WDFIEN (0x1u << 12) /**< \brief (WDT_MR) Watchdog Fault Interrupt Enable */ +#define WDT_MR_WDRSTEN (0x1u << 13) /**< \brief (WDT_MR) Watchdog Reset Enable */ +#define WDT_MR_WDRPROC (0x1u << 14) /**< \brief (WDT_MR) Watchdog Reset Processor */ +#define WDT_MR_WDDIS (0x1u << 15) /**< \brief (WDT_MR) Watchdog Disable */ +#define WDT_MR_WDD_Pos 16 +#define WDT_MR_WDD_Msk (0xfffu << WDT_MR_WDD_Pos) /**< \brief (WDT_MR) Watchdog Delta Value */ +#define WDT_MR_WDD(value) ((WDT_MR_WDD_Msk & ((value) << WDT_MR_WDD_Pos))) +#define WDT_MR_WDDBGHLT (0x1u << 28) /**< \brief (WDT_MR) Watchdog Debug Halt */ +#define WDT_MR_WDIDLEHLT (0x1u << 29) /**< \brief (WDT_MR) Watchdog Idle Halt */ +/* -------- WDT_SR : (WDT Offset: 0x08) Status Register -------- */ +#define WDT_SR_WDUNF (0x1u << 0) /**< \brief (WDT_SR) Watchdog Underflow */ +#define WDT_SR_WDERR (0x1u << 1) /**< \brief (WDT_SR) Watchdog Error */ + +/*@}*/ + + +#endif /* _SAM3S8_WDT_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_acc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_acc.h new file mode 100644 index 000000000..3a644c14d --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_acc.h @@ -0,0 +1,56 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_ACC_INSTANCE_ +#define _SAM3S8_ACC_INSTANCE_ + +/* ========== Register definition for ACC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_ACC_CR (0x40040000U) /**< \brief (ACC) Control Register */ +#define REG_ACC_MR (0x40040004U) /**< \brief (ACC) Mode Register */ +#define REG_ACC_IER (0x40040024U) /**< \brief (ACC) Interrupt Enable Register */ +#define REG_ACC_IDR (0x40040028U) /**< \brief (ACC) Interrupt Disable Register */ +#define REG_ACC_IMR (0x4004002CU) /**< \brief (ACC) Interrupt Mask Register */ +#define REG_ACC_ISR (0x40040030U) /**< \brief (ACC) Interrupt Status Register */ +#define REG_ACC_ACR (0x40040094U) /**< \brief (ACC) Analog Control Register */ +#define REG_ACC_WPMR (0x400400E4U) /**< \brief (ACC) Write Protect Mode Register */ +#define REG_ACC_WPSR (0x400400E8U) /**< \brief (ACC) Write Protect Status Register */ +#else +#define REG_ACC_CR (*(WoReg*)0x40040000U) /**< \brief (ACC) Control Register */ +#define REG_ACC_MR (*(RwReg*)0x40040004U) /**< \brief (ACC) Mode Register */ +#define REG_ACC_IER (*(WoReg*)0x40040024U) /**< \brief (ACC) Interrupt Enable Register */ +#define REG_ACC_IDR (*(WoReg*)0x40040028U) /**< \brief (ACC) Interrupt Disable Register */ +#define REG_ACC_IMR (*(RoReg*)0x4004002CU) /**< \brief (ACC) Interrupt Mask Register */ +#define REG_ACC_ISR (*(RoReg*)0x40040030U) /**< \brief (ACC) Interrupt Status Register */ +#define REG_ACC_ACR (*(RwReg*)0x40040094U) /**< \brief (ACC) Analog Control Register */ +#define REG_ACC_WPMR (*(RwReg*)0x400400E4U) /**< \brief (ACC) Write Protect Mode Register */ +#define REG_ACC_WPSR (*(RoReg*)0x400400E8U) /**< \brief (ACC) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_ACC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_adc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_adc.h new file mode 100644 index 000000000..d6cc39f71 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_adc.h @@ -0,0 +1,100 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_ADC_INSTANCE_ +#define _SAM3S8_ADC_INSTANCE_ + +/* ========== Register definition for ADC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_ADC_CR (0x40038000U) /**< \brief (ADC) Control Register */ +#define REG_ADC_MR (0x40038004U) /**< \brief (ADC) Mode Register */ +#define REG_ADC_SEQR1 (0x40038008U) /**< \brief (ADC) Channel Sequence Register 1 */ +#define REG_ADC_SEQR2 (0x4003800CU) /**< \brief (ADC) Channel Sequence Register 2 */ +#define REG_ADC_CHER (0x40038010U) /**< \brief (ADC) Channel Enable Register */ +#define REG_ADC_CHDR (0x40038014U) /**< \brief (ADC) Channel Disable Register */ +#define REG_ADC_CHSR (0x40038018U) /**< \brief (ADC) Channel Status Register */ +#define REG_ADC_LCDR (0x40038020U) /**< \brief (ADC) Last Converted Data Register */ +#define REG_ADC_IER (0x40038024U) /**< \brief (ADC) Interrupt Enable Register */ +#define REG_ADC_IDR (0x40038028U) /**< \brief (ADC) Interrupt Disable Register */ +#define REG_ADC_IMR (0x4003802CU) /**< \brief (ADC) Interrupt Mask Register */ +#define REG_ADC_ISR (0x40038030U) /**< \brief (ADC) Interrupt Status Register */ +#define REG_ADC_OVER (0x4003803CU) /**< \brief (ADC) Overrun Status Register */ +#define REG_ADC_EMR (0x40038040U) /**< \brief (ADC) Extended Mode Register */ +#define REG_ADC_CWR (0x40038044U) /**< \brief (ADC) Compare Window Register */ +#define REG_ADC_CGR (0x40038048U) /**< \brief (ADC) Channel Gain Register */ +#define REG_ADC_COR (0x4003804CU) /**< \brief (ADC) Channel Offset Register */ +#define REG_ADC_CDR (0x40038050U) /**< \brief (ADC) Channel Data Register */ +#define REG_ADC_ACR (0x40038094U) /**< \brief (ADC) Analog Control Register */ +#define REG_ADC_WPMR (0x400380E4U) /**< \brief (ADC) Write Protect Mode Register */ +#define REG_ADC_WPSR (0x400380E8U) /**< \brief (ADC) Write Protect Status Register */ +#define REG_ADC_RPR (0x40038100U) /**< \brief (ADC) Receive Pointer Register */ +#define REG_ADC_RCR (0x40038104U) /**< \brief (ADC) Receive Counter Register */ +#define REG_ADC_TPR (0x40038108U) /**< \brief (ADC) Transmit Pointer Register */ +#define REG_ADC_TCR (0x4003810CU) /**< \brief (ADC) Transmit Counter Register */ +#define REG_ADC_RNPR (0x40038110U) /**< \brief (ADC) Receive Next Pointer Register */ +#define REG_ADC_RNCR (0x40038114U) /**< \brief (ADC) Receive Next Counter Register */ +#define REG_ADC_TNPR (0x40038118U) /**< \brief (ADC) Transmit Next Pointer Register */ +#define REG_ADC_TNCR (0x4003811CU) /**< \brief (ADC) Transmit Next Counter Register */ +#define REG_ADC_PTCR (0x40038120U) /**< \brief (ADC) Transfer Control Register */ +#define REG_ADC_PTSR (0x40038124U) /**< \brief (ADC) Transfer Status Register */ +#else +#define REG_ADC_CR (*(WoReg*)0x40038000U) /**< \brief (ADC) Control Register */ +#define REG_ADC_MR (*(RwReg*)0x40038004U) /**< \brief (ADC) Mode Register */ +#define REG_ADC_SEQR1 (*(RwReg*)0x40038008U) /**< \brief (ADC) Channel Sequence Register 1 */ +#define REG_ADC_SEQR2 (*(RwReg*)0x4003800CU) /**< \brief (ADC) Channel Sequence Register 2 */ +#define REG_ADC_CHER (*(WoReg*)0x40038010U) /**< \brief (ADC) Channel Enable Register */ +#define REG_ADC_CHDR (*(WoReg*)0x40038014U) /**< \brief (ADC) Channel Disable Register */ +#define REG_ADC_CHSR (*(RoReg*)0x40038018U) /**< \brief (ADC) Channel Status Register */ +#define REG_ADC_LCDR (*(RoReg*)0x40038020U) /**< \brief (ADC) Last Converted Data Register */ +#define REG_ADC_IER (*(WoReg*)0x40038024U) /**< \brief (ADC) Interrupt Enable Register */ +#define REG_ADC_IDR (*(WoReg*)0x40038028U) /**< \brief (ADC) Interrupt Disable Register */ +#define REG_ADC_IMR (*(RoReg*)0x4003802CU) /**< \brief (ADC) Interrupt Mask Register */ +#define REG_ADC_ISR (*(RoReg*)0x40038030U) /**< \brief (ADC) Interrupt Status Register */ +#define REG_ADC_OVER (*(RoReg*)0x4003803CU) /**< \brief (ADC) Overrun Status Register */ +#define REG_ADC_EMR (*(RwReg*)0x40038040U) /**< \brief (ADC) Extended Mode Register */ +#define REG_ADC_CWR (*(RwReg*)0x40038044U) /**< \brief (ADC) Compare Window Register */ +#define REG_ADC_CGR (*(RwReg*)0x40038048U) /**< \brief (ADC) Channel Gain Register */ +#define REG_ADC_COR (*(RwReg*)0x4003804CU) /**< \brief (ADC) Channel Offset Register */ +#define REG_ADC_CDR (*(RoReg*)0x40038050U) /**< \brief (ADC) Channel Data Register */ +#define REG_ADC_ACR (*(RwReg*)0x40038094U) /**< \brief (ADC) Analog Control Register */ +#define REG_ADC_WPMR (*(RwReg*)0x400380E4U) /**< \brief (ADC) Write Protect Mode Register */ +#define REG_ADC_WPSR (*(RoReg*)0x400380E8U) /**< \brief (ADC) Write Protect Status Register */ +#define REG_ADC_RPR (*(RwReg*)0x40038100U) /**< \brief (ADC) Receive Pointer Register */ +#define REG_ADC_RCR (*(RwReg*)0x40038104U) /**< \brief (ADC) Receive Counter Register */ +#define REG_ADC_TPR (*(RwReg*)0x40038108U) /**< \brief (ADC) Transmit Pointer Register */ +#define REG_ADC_TCR (*(RwReg*)0x4003810CU) /**< \brief (ADC) Transmit Counter Register */ +#define REG_ADC_RNPR (*(RwReg*)0x40038110U) /**< \brief (ADC) Receive Next Pointer Register */ +#define REG_ADC_RNCR (*(RwReg*)0x40038114U) /**< \brief (ADC) Receive Next Counter Register */ +#define REG_ADC_TNPR (*(RwReg*)0x40038118U) /**< \brief (ADC) Transmit Next Pointer Register */ +#define REG_ADC_TNCR (*(RwReg*)0x4003811CU) /**< \brief (ADC) Transmit Next Counter Register */ +#define REG_ADC_PTCR (*(WoReg*)0x40038120U) /**< \brief (ADC) Transfer Control Register */ +#define REG_ADC_PTSR (*(RoReg*)0x40038124U) /**< \brief (ADC) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_ADC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_chipid.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_chipid.h new file mode 100644 index 000000000..eeeeeae9b --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_chipid.h @@ -0,0 +1,42 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_CHIPID_INSTANCE_ +#define _SAM3S8_CHIPID_INSTANCE_ + +/* ========== Register definition for CHIPID peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_CHIPID_CIDR (0x400E0740U) /**< \brief (CHIPID) Chip ID Register */ +#define REG_CHIPID_EXID (0x400E0744U) /**< \brief (CHIPID) Chip ID Extension Register */ +#else +#define REG_CHIPID_CIDR (*(RoReg*)0x400E0740U) /**< \brief (CHIPID) Chip ID Register */ +#define REG_CHIPID_EXID (*(RoReg*)0x400E0744U) /**< \brief (CHIPID) Chip ID Extension Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_CHIPID_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_crccu.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_crccu.h new file mode 100644 index 000000000..d37627396 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_crccu.h @@ -0,0 +1,68 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_CRCCU_INSTANCE_ +#define _SAM3S8_CRCCU_INSTANCE_ + +/* ========== Register definition for CRCCU peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_CRCCU_DSCR (0x40044000U) /**< \brief (CRCCU) CRCCU Descriptor Base Register */ +#define REG_CRCCU_DMA_EN (0x40044008U) /**< \brief (CRCCU) CRCCU DMA Enable Register */ +#define REG_CRCCU_DMA_DIS (0x4004400CU) /**< \brief (CRCCU) CRCCU DMA Disable Register */ +#define REG_CRCCU_DMA_SR (0x40044010U) /**< \brief (CRCCU) CRCCU DMA Status Register */ +#define REG_CRCCU_DMA_IER (0x40044014U) /**< \brief (CRCCU) CRCCU DMA Interrupt Enable Register */ +#define REG_CRCCU_DMA_IDR (0x40044018U) /**< \brief (CRCCU) CRCCU DMA Interrupt Disable Register */ +#define REG_CRCCU_DMA_IMR (0x4004401CU) /**< \brief (CRCCU) CRCCU DMA Interrupt Mask Register */ +#define REG_CRCCU_DMA_ISR (0x40044020U) /**< \brief (CRCCU) CRCCU DMA Interrupt Status Register */ +#define REG_CRCCU_CR (0x40044034U) /**< \brief (CRCCU) CRCCU Control Register */ +#define REG_CRCCU_MR (0x40044038U) /**< \brief (CRCCU) CRCCU Mode Register */ +#define REG_CRCCU_SR (0x4004403CU) /**< \brief (CRCCU) CRCCU Status Register */ +#define REG_CRCCU_IER (0x40044040U) /**< \brief (CRCCU) CRCCU Interrupt Enable Register */ +#define REG_CRCCU_IDR (0x40044044U) /**< \brief (CRCCU) CRCCU Interrupt Disable Register */ +#define REG_CRCCU_IMR (0x40044048U) /**< \brief (CRCCU) CRCCU Interrupt Mask Register */ +#define REG_CRCCU_ISR (0x4004404CU) /**< \brief (CRCCU) CRCCU Interrupt Status Register */ +#else +#define REG_CRCCU_DSCR (*(RwReg*)0x40044000U) /**< \brief (CRCCU) CRCCU Descriptor Base Register */ +#define REG_CRCCU_DMA_EN (*(WoReg*)0x40044008U) /**< \brief (CRCCU) CRCCU DMA Enable Register */ +#define REG_CRCCU_DMA_DIS (*(WoReg*)0x4004400CU) /**< \brief (CRCCU) CRCCU DMA Disable Register */ +#define REG_CRCCU_DMA_SR (*(RoReg*)0x40044010U) /**< \brief (CRCCU) CRCCU DMA Status Register */ +#define REG_CRCCU_DMA_IER (*(WoReg*)0x40044014U) /**< \brief (CRCCU) CRCCU DMA Interrupt Enable Register */ +#define REG_CRCCU_DMA_IDR (*(WoReg*)0x40044018U) /**< \brief (CRCCU) CRCCU DMA Interrupt Disable Register */ +#define REG_CRCCU_DMA_IMR (*(RoReg*)0x4004401CU) /**< \brief (CRCCU) CRCCU DMA Interrupt Mask Register */ +#define REG_CRCCU_DMA_ISR (*(RoReg*)0x40044020U) /**< \brief (CRCCU) CRCCU DMA Interrupt Status Register */ +#define REG_CRCCU_CR (*(WoReg*)0x40044034U) /**< \brief (CRCCU) CRCCU Control Register */ +#define REG_CRCCU_MR (*(RwReg*)0x40044038U) /**< \brief (CRCCU) CRCCU Mode Register */ +#define REG_CRCCU_SR (*(RoReg*)0x4004403CU) /**< \brief (CRCCU) CRCCU Status Register */ +#define REG_CRCCU_IER (*(WoReg*)0x40044040U) /**< \brief (CRCCU) CRCCU Interrupt Enable Register */ +#define REG_CRCCU_IDR (*(WoReg*)0x40044044U) /**< \brief (CRCCU) CRCCU Interrupt Disable Register */ +#define REG_CRCCU_IMR (*(RoReg*)0x40044048U) /**< \brief (CRCCU) CRCCU Interrupt Mask Register */ +#define REG_CRCCU_ISR (*(RoReg*)0x4004404CU) /**< \brief (CRCCU) CRCCU Interrupt Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_CRCCU_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_dacc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_dacc.h new file mode 100644 index 000000000..582ed9396 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_dacc.h @@ -0,0 +1,84 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_DACC_INSTANCE_ +#define _SAM3S8_DACC_INSTANCE_ + +/* ========== Register definition for DACC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_DACC_CR (0x4003C000U) /**< \brief (DACC) Control Register */ +#define REG_DACC_MR (0x4003C004U) /**< \brief (DACC) Mode Register */ +#define REG_DACC_CHER (0x4003C010U) /**< \brief (DACC) Channel Enable Register */ +#define REG_DACC_CHDR (0x4003C014U) /**< \brief (DACC) Channel Disable Register */ +#define REG_DACC_CHSR (0x4003C018U) /**< \brief (DACC) Channel Status Register */ +#define REG_DACC_CDR (0x4003C020U) /**< \brief (DACC) Conversion Data Register */ +#define REG_DACC_IER (0x4003C024U) /**< \brief (DACC) Interrupt Enable Register */ +#define REG_DACC_IDR (0x4003C028U) /**< \brief (DACC) Interrupt Disable Register */ +#define REG_DACC_IMR (0x4003C02CU) /**< \brief (DACC) Interrupt Mask Register */ +#define REG_DACC_ISR (0x4003C030U) /**< \brief (DACC) Interrupt Status Register */ +#define REG_DACC_ACR (0x4003C094U) /**< \brief (DACC) Analog Current Register */ +#define REG_DACC_WPMR (0x4003C0E4U) /**< \brief (DACC) Write Protect Mode register */ +#define REG_DACC_WPSR (0x4003C0E8U) /**< \brief (DACC) Write Protect Status register */ +#define REG_DACC_RPR (0x4003C100U) /**< \brief (DACC) Receive Pointer Register */ +#define REG_DACC_RCR (0x4003C104U) /**< \brief (DACC) Receive Counter Register */ +#define REG_DACC_TPR (0x4003C108U) /**< \brief (DACC) Transmit Pointer Register */ +#define REG_DACC_TCR (0x4003C10CU) /**< \brief (DACC) Transmit Counter Register */ +#define REG_DACC_RNPR (0x4003C110U) /**< \brief (DACC) Receive Next Pointer Register */ +#define REG_DACC_RNCR (0x4003C114U) /**< \brief (DACC) Receive Next Counter Register */ +#define REG_DACC_TNPR (0x4003C118U) /**< \brief (DACC) Transmit Next Pointer Register */ +#define REG_DACC_TNCR (0x4003C11CU) /**< \brief (DACC) Transmit Next Counter Register */ +#define REG_DACC_PTCR (0x4003C120U) /**< \brief (DACC) Transfer Control Register */ +#define REG_DACC_PTSR (0x4003C124U) /**< \brief (DACC) Transfer Status Register */ +#else +#define REG_DACC_CR (*(WoReg*)0x4003C000U) /**< \brief (DACC) Control Register */ +#define REG_DACC_MR (*(RwReg*)0x4003C004U) /**< \brief (DACC) Mode Register */ +#define REG_DACC_CHER (*(WoReg*)0x4003C010U) /**< \brief (DACC) Channel Enable Register */ +#define REG_DACC_CHDR (*(WoReg*)0x4003C014U) /**< \brief (DACC) Channel Disable Register */ +#define REG_DACC_CHSR (*(RoReg*)0x4003C018U) /**< \brief (DACC) Channel Status Register */ +#define REG_DACC_CDR (*(WoReg*)0x4003C020U) /**< \brief (DACC) Conversion Data Register */ +#define REG_DACC_IER (*(WoReg*)0x4003C024U) /**< \brief (DACC) Interrupt Enable Register */ +#define REG_DACC_IDR (*(WoReg*)0x4003C028U) /**< \brief (DACC) Interrupt Disable Register */ +#define REG_DACC_IMR (*(RoReg*)0x4003C02CU) /**< \brief (DACC) Interrupt Mask Register */ +#define REG_DACC_ISR (*(RoReg*)0x4003C030U) /**< \brief (DACC) Interrupt Status Register */ +#define REG_DACC_ACR (*(RwReg*)0x4003C094U) /**< \brief (DACC) Analog Current Register */ +#define REG_DACC_WPMR (*(RwReg*)0x4003C0E4U) /**< \brief (DACC) Write Protect Mode register */ +#define REG_DACC_WPSR (*(RoReg*)0x4003C0E8U) /**< \brief (DACC) Write Protect Status register */ +#define REG_DACC_RPR (*(RwReg*)0x4003C100U) /**< \brief (DACC) Receive Pointer Register */ +#define REG_DACC_RCR (*(RwReg*)0x4003C104U) /**< \brief (DACC) Receive Counter Register */ +#define REG_DACC_TPR (*(RwReg*)0x4003C108U) /**< \brief (DACC) Transmit Pointer Register */ +#define REG_DACC_TCR (*(RwReg*)0x4003C10CU) /**< \brief (DACC) Transmit Counter Register */ +#define REG_DACC_RNPR (*(RwReg*)0x4003C110U) /**< \brief (DACC) Receive Next Pointer Register */ +#define REG_DACC_RNCR (*(RwReg*)0x4003C114U) /**< \brief (DACC) Receive Next Counter Register */ +#define REG_DACC_TNPR (*(RwReg*)0x4003C118U) /**< \brief (DACC) Transmit Next Pointer Register */ +#define REG_DACC_TNCR (*(RwReg*)0x4003C11CU) /**< \brief (DACC) Transmit Next Counter Register */ +#define REG_DACC_PTCR (*(WoReg*)0x4003C120U) /**< \brief (DACC) Transfer Control Register */ +#define REG_DACC_PTSR (*(RoReg*)0x4003C124U) /**< \brief (DACC) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_DACC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_efc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_efc.h new file mode 100644 index 000000000..7d1b09910 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_efc.h @@ -0,0 +1,46 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_EFC_INSTANCE_ +#define _SAM3S8_EFC_INSTANCE_ + +/* ========== Register definition for EFC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_EFC_FMR (0x400E0A00U) /**< \brief (EFC) EEFC Flash Mode Register */ +#define REG_EFC_FCR (0x400E0A04U) /**< \brief (EFC) EEFC Flash Command Register */ +#define REG_EFC_FSR (0x400E0A08U) /**< \brief (EFC) EEFC Flash Status Register */ +#define REG_EFC_FRR (0x400E0A0CU) /**< \brief (EFC) EEFC Flash Result Register */ +#else +#define REG_EFC_FMR (*(RwReg*)0x400E0A00U) /**< \brief (EFC) EEFC Flash Mode Register */ +#define REG_EFC_FCR (*(WoReg*)0x400E0A04U) /**< \brief (EFC) EEFC Flash Command Register */ +#define REG_EFC_FSR (*(RoReg*)0x400E0A08U) /**< \brief (EFC) EEFC Flash Status Register */ +#define REG_EFC_FRR (*(RoReg*)0x400E0A0CU) /**< \brief (EFC) EEFC Flash Result Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_EFC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_gpbr.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_gpbr.h new file mode 100644 index 000000000..b0a6fa782 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_gpbr.h @@ -0,0 +1,40 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_GPBR_INSTANCE_ +#define _SAM3S8_GPBR_INSTANCE_ + +/* ========== Register definition for GPBR peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_GPBR_GPBR (0x400E1490U) /**< \brief (GPBR) General Purpose Backup Register */ +#else +#define REG_GPBR_GPBR (*(RwReg*)0x400E1490U) /**< \brief (GPBR) General Purpose Backup Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_GPBR_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_hsmci.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_hsmci.h new file mode 100644 index 000000000..9efebbebc --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_hsmci.h @@ -0,0 +1,96 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_HSMCI_INSTANCE_ +#define _SAM3S8_HSMCI_INSTANCE_ + +/* ========== Register definition for HSMCI peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_HSMCI_CR (0x40000000U) /**< \brief (HSMCI) Control Register */ +#define REG_HSMCI_MR (0x40000004U) /**< \brief (HSMCI) Mode Register */ +#define REG_HSMCI_DTOR (0x40000008U) /**< \brief (HSMCI) Data Timeout Register */ +#define REG_HSMCI_SDCR (0x4000000CU) /**< \brief (HSMCI) SD/SDIO Card Register */ +#define REG_HSMCI_ARGR (0x40000010U) /**< \brief (HSMCI) Argument Register */ +#define REG_HSMCI_CMDR (0x40000014U) /**< \brief (HSMCI) Command Register */ +#define REG_HSMCI_BLKR (0x40000018U) /**< \brief (HSMCI) Block Register */ +#define REG_HSMCI_CSTOR (0x4000001CU) /**< \brief (HSMCI) Completion Signal Timeout Register */ +#define REG_HSMCI_RSPR (0x40000020U) /**< \brief (HSMCI) Response Register */ +#define REG_HSMCI_RDR (0x40000030U) /**< \brief (HSMCI) Receive Data Register */ +#define REG_HSMCI_TDR (0x40000034U) /**< \brief (HSMCI) Transmit Data Register */ +#define REG_HSMCI_SR (0x40000040U) /**< \brief (HSMCI) Status Register */ +#define REG_HSMCI_IER (0x40000044U) /**< \brief (HSMCI) Interrupt Enable Register */ +#define REG_HSMCI_IDR (0x40000048U) /**< \brief (HSMCI) Interrupt Disable Register */ +#define REG_HSMCI_IMR (0x4000004CU) /**< \brief (HSMCI) Interrupt Mask Register */ +#define REG_HSMCI_CFG (0x40000054U) /**< \brief (HSMCI) Configuration Register */ +#define REG_HSMCI_WPMR (0x400000E4U) /**< \brief (HSMCI) Write Protection Mode Register */ +#define REG_HSMCI_WPSR (0x400000E8U) /**< \brief (HSMCI) Write Protection Status Register */ +#define REG_HSMCI_RPR (0x40000100U) /**< \brief (HSMCI) Receive Pointer Register */ +#define REG_HSMCI_RCR (0x40000104U) /**< \brief (HSMCI) Receive Counter Register */ +#define REG_HSMCI_TPR (0x40000108U) /**< \brief (HSMCI) Transmit Pointer Register */ +#define REG_HSMCI_TCR (0x4000010CU) /**< \brief (HSMCI) Transmit Counter Register */ +#define REG_HSMCI_RNPR (0x40000110U) /**< \brief (HSMCI) Receive Next Pointer Register */ +#define REG_HSMCI_RNCR (0x40000114U) /**< \brief (HSMCI) Receive Next Counter Register */ +#define REG_HSMCI_TNPR (0x40000118U) /**< \brief (HSMCI) Transmit Next Pointer Register */ +#define REG_HSMCI_TNCR (0x4000011CU) /**< \brief (HSMCI) Transmit Next Counter Register */ +#define REG_HSMCI_PTCR (0x40000120U) /**< \brief (HSMCI) Transfer Control Register */ +#define REG_HSMCI_PTSR (0x40000124U) /**< \brief (HSMCI) Transfer Status Register */ +#define REG_HSMCI_FIFO (0x40000200U) /**< \brief (HSMCI) FIFO Memory Aperture0 */ +#else +#define REG_HSMCI_CR (*(WoReg*)0x40000000U) /**< \brief (HSMCI) Control Register */ +#define REG_HSMCI_MR (*(RwReg*)0x40000004U) /**< \brief (HSMCI) Mode Register */ +#define REG_HSMCI_DTOR (*(RwReg*)0x40000008U) /**< \brief (HSMCI) Data Timeout Register */ +#define REG_HSMCI_SDCR (*(RwReg*)0x4000000CU) /**< \brief (HSMCI) SD/SDIO Card Register */ +#define REG_HSMCI_ARGR (*(RwReg*)0x40000010U) /**< \brief (HSMCI) Argument Register */ +#define REG_HSMCI_CMDR (*(WoReg*)0x40000014U) /**< \brief (HSMCI) Command Register */ +#define REG_HSMCI_BLKR (*(RwReg*)0x40000018U) /**< \brief (HSMCI) Block Register */ +#define REG_HSMCI_CSTOR (*(RwReg*)0x4000001CU) /**< \brief (HSMCI) Completion Signal Timeout Register */ +#define REG_HSMCI_RSPR (*(RoReg*)0x40000020U) /**< \brief (HSMCI) Response Register */ +#define REG_HSMCI_RDR (*(RoReg*)0x40000030U) /**< \brief (HSMCI) Receive Data Register */ +#define REG_HSMCI_TDR (*(WoReg*)0x40000034U) /**< \brief (HSMCI) Transmit Data Register */ +#define REG_HSMCI_SR (*(RoReg*)0x40000040U) /**< \brief (HSMCI) Status Register */ +#define REG_HSMCI_IER (*(WoReg*)0x40000044U) /**< \brief (HSMCI) Interrupt Enable Register */ +#define REG_HSMCI_IDR (*(WoReg*)0x40000048U) /**< \brief (HSMCI) Interrupt Disable Register */ +#define REG_HSMCI_IMR (*(RoReg*)0x4000004CU) /**< \brief (HSMCI) Interrupt Mask Register */ +#define REG_HSMCI_CFG (*(RwReg*)0x40000054U) /**< \brief (HSMCI) Configuration Register */ +#define REG_HSMCI_WPMR (*(RwReg*)0x400000E4U) /**< \brief (HSMCI) Write Protection Mode Register */ +#define REG_HSMCI_WPSR (*(RoReg*)0x400000E8U) /**< \brief (HSMCI) Write Protection Status Register */ +#define REG_HSMCI_RPR (*(RwReg*)0x40000100U) /**< \brief (HSMCI) Receive Pointer Register */ +#define REG_HSMCI_RCR (*(RwReg*)0x40000104U) /**< \brief (HSMCI) Receive Counter Register */ +#define REG_HSMCI_TPR (*(RwReg*)0x40000108U) /**< \brief (HSMCI) Transmit Pointer Register */ +#define REG_HSMCI_TCR (*(RwReg*)0x4000010CU) /**< \brief (HSMCI) Transmit Counter Register */ +#define REG_HSMCI_RNPR (*(RwReg*)0x40000110U) /**< \brief (HSMCI) Receive Next Pointer Register */ +#define REG_HSMCI_RNCR (*(RwReg*)0x40000114U) /**< \brief (HSMCI) Receive Next Counter Register */ +#define REG_HSMCI_TNPR (*(RwReg*)0x40000118U) /**< \brief (HSMCI) Transmit Next Pointer Register */ +#define REG_HSMCI_TNCR (*(RwReg*)0x4000011CU) /**< \brief (HSMCI) Transmit Next Counter Register */ +#define REG_HSMCI_PTCR (*(WoReg*)0x40000120U) /**< \brief (HSMCI) Transfer Control Register */ +#define REG_HSMCI_PTSR (*(RoReg*)0x40000124U) /**< \brief (HSMCI) Transfer Status Register */ +#define REG_HSMCI_FIFO (*(RwReg*)0x40000200U) /**< \brief (HSMCI) FIFO Memory Aperture0 */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_HSMCI_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_matrix.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_matrix.h new file mode 100644 index 000000000..b11f4e12e --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_matrix.h @@ -0,0 +1,60 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_MATRIX_INSTANCE_ +#define _SAM3S8_MATRIX_INSTANCE_ + +/* ========== Register definition for MATRIX peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_MATRIX_MCFG (0x400E0200U) /**< \brief (MATRIX) Master Configuration Register */ +#define REG_MATRIX_SCFG (0x400E0240U) /**< \brief (MATRIX) Slave Configuration Register */ +#define REG_MATRIX_PRAS0 (0x400E0280U) /**< \brief (MATRIX) Priority Register A for Slave 0 */ +#define REG_MATRIX_PRAS1 (0x400E0288U) /**< \brief (MATRIX) Priority Register A for Slave 1 */ +#define REG_MATRIX_PRAS2 (0x400E0290U) /**< \brief (MATRIX) Priority Register A for Slave 2 */ +#define REG_MATRIX_PRAS3 (0x400E0298U) /**< \brief (MATRIX) Priority Register A for Slave 3 */ +#define REG_MATRIX_PRAS4 (0x400E02A0U) /**< \brief (MATRIX) Priority Register A for Slave 4 */ +#define REG_CCFG_SYSIO (0x400E0314U) /**< \brief (MATRIX) System I/O Configuration register */ +#define REG_CCFG_SMCNFCS (0x400E031CU) /**< \brief (MATRIX) SMC Chip Select NAND Flash Assignment Register */ +#define REG_MATRIX_WPMR (0x400E03E4U) /**< \brief (MATRIX) Write Protect Mode Register */ +#define REG_MATRIX_WPSR (0x400E03E8U) /**< \brief (MATRIX) Write Protect Status Register */ +#else +#define REG_MATRIX_MCFG (*(RwReg*)0x400E0200U) /**< \brief (MATRIX) Master Configuration Register */ +#define REG_MATRIX_SCFG (*(RwReg*)0x400E0240U) /**< \brief (MATRIX) Slave Configuration Register */ +#define REG_MATRIX_PRAS0 (*(RwReg*)0x400E0280U) /**< \brief (MATRIX) Priority Register A for Slave 0 */ +#define REG_MATRIX_PRAS1 (*(RwReg*)0x400E0288U) /**< \brief (MATRIX) Priority Register A for Slave 1 */ +#define REG_MATRIX_PRAS2 (*(RwReg*)0x400E0290U) /**< \brief (MATRIX) Priority Register A for Slave 2 */ +#define REG_MATRIX_PRAS3 (*(RwReg*)0x400E0298U) /**< \brief (MATRIX) Priority Register A for Slave 3 */ +#define REG_MATRIX_PRAS4 (*(RwReg*)0x400E02A0U) /**< \brief (MATRIX) Priority Register A for Slave 4 */ +#define REG_CCFG_SYSIO (*(RwReg*)0x400E0314U) /**< \brief (MATRIX) System I/O Configuration register */ +#define REG_CCFG_SMCNFCS (*(RwReg*)0x400E031CU) /**< \brief (MATRIX) SMC Chip Select NAND Flash Assignment Register */ +#define REG_MATRIX_WPMR (*(RwReg*)0x400E03E4U) /**< \brief (MATRIX) Write Protect Mode Register */ +#define REG_MATRIX_WPSR (*(RoReg*)0x400E03E8U) /**< \brief (MATRIX) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_MATRIX_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_pioa.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_pioa.h new file mode 100644 index 000000000..1545f891a --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_pioa.h @@ -0,0 +1,164 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_PIOA_INSTANCE_ +#define _SAM3S8_PIOA_INSTANCE_ + +/* ========== Register definition for PIOA peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PIOA_PER (0x400E0E00U) /**< \brief (PIOA) PIO Enable Register */ +#define REG_PIOA_PDR (0x400E0E04U) /**< \brief (PIOA) PIO Disable Register */ +#define REG_PIOA_PSR (0x400E0E08U) /**< \brief (PIOA) PIO Status Register */ +#define REG_PIOA_OER (0x400E0E10U) /**< \brief (PIOA) Output Enable Register */ +#define REG_PIOA_ODR (0x400E0E14U) /**< \brief (PIOA) Output Disable Register */ +#define REG_PIOA_OSR (0x400E0E18U) /**< \brief (PIOA) Output Status Register */ +#define REG_PIOA_IFER (0x400E0E20U) /**< \brief (PIOA) Glitch Input Filter Enable Register */ +#define REG_PIOA_IFDR (0x400E0E24U) /**< \brief (PIOA) Glitch Input Filter Disable Register */ +#define REG_PIOA_IFSR (0x400E0E28U) /**< \brief (PIOA) Glitch Input Filter Status Register */ +#define REG_PIOA_SODR (0x400E0E30U) /**< \brief (PIOA) Set Output Data Register */ +#define REG_PIOA_CODR (0x400E0E34U) /**< \brief (PIOA) Clear Output Data Register */ +#define REG_PIOA_ODSR (0x400E0E38U) /**< \brief (PIOA) Output Data Status Register */ +#define REG_PIOA_PDSR (0x400E0E3CU) /**< \brief (PIOA) Pin Data Status Register */ +#define REG_PIOA_IER (0x400E0E40U) /**< \brief (PIOA) Interrupt Enable Register */ +#define REG_PIOA_IDR (0x400E0E44U) /**< \brief (PIOA) Interrupt Disable Register */ +#define REG_PIOA_IMR (0x400E0E48U) /**< \brief (PIOA) Interrupt Mask Register */ +#define REG_PIOA_ISR (0x400E0E4CU) /**< \brief (PIOA) Interrupt Status Register */ +#define REG_PIOA_MDER (0x400E0E50U) /**< \brief (PIOA) Multi-driver Enable Register */ +#define REG_PIOA_MDDR (0x400E0E54U) /**< \brief (PIOA) Multi-driver Disable Register */ +#define REG_PIOA_MDSR (0x400E0E58U) /**< \brief (PIOA) Multi-driver Status Register */ +#define REG_PIOA_PUDR (0x400E0E60U) /**< \brief (PIOA) Pull-up Disable Register */ +#define REG_PIOA_PUER (0x400E0E64U) /**< \brief (PIOA) Pull-up Enable Register */ +#define REG_PIOA_PUSR (0x400E0E68U) /**< \brief (PIOA) Pad Pull-up Status Register */ +#define REG_PIOA_ABCDSR (0x400E0E70U) /**< \brief (PIOA) Peripheral Select Register */ +#define REG_PIOA_IFSCDR (0x400E0E80U) /**< \brief (PIOA) Input Filter Slow Clock Disable Register */ +#define REG_PIOA_IFSCER (0x400E0E84U) /**< \brief (PIOA) Input Filter Slow Clock Enable Register */ +#define REG_PIOA_IFSCSR (0x400E0E88U) /**< \brief (PIOA) Input Filter Slow Clock Status Register */ +#define REG_PIOA_SCDR (0x400E0E8CU) /**< \brief (PIOA) Slow Clock Divider Debouncing Register */ +#define REG_PIOA_PPDDR (0x400E0E90U) /**< \brief (PIOA) Pad Pull-down Disable Register */ +#define REG_PIOA_PPDER (0x400E0E94U) /**< \brief (PIOA) Pad Pull-down Enable Register */ +#define REG_PIOA_PPDSR (0x400E0E98U) /**< \brief (PIOA) Pad Pull-down Status Register */ +#define REG_PIOA_OWER (0x400E0EA0U) /**< \brief (PIOA) Output Write Enable */ +#define REG_PIOA_OWDR (0x400E0EA4U) /**< \brief (PIOA) Output Write Disable */ +#define REG_PIOA_OWSR (0x400E0EA8U) /**< \brief (PIOA) Output Write Status Register */ +#define REG_PIOA_AIMER (0x400E0EB0U) /**< \brief (PIOA) Additional Interrupt Modes Enable Register */ +#define REG_PIOA_AIMDR (0x400E0EB4U) /**< \brief (PIOA) Additional Interrupt Modes Disables Register */ +#define REG_PIOA_AIMMR (0x400E0EB8U) /**< \brief (PIOA) Additional Interrupt Modes Mask Register */ +#define REG_PIOA_ESR (0x400E0EC0U) /**< \brief (PIOA) Edge Select Register */ +#define REG_PIOA_LSR (0x400E0EC4U) /**< \brief (PIOA) Level Select Register */ +#define REG_PIOA_ELSR (0x400E0EC8U) /**< \brief (PIOA) Edge/Level Status Register */ +#define REG_PIOA_FELLSR (0x400E0ED0U) /**< \brief (PIOA) Falling Edge/Low Level Select Register */ +#define REG_PIOA_REHLSR (0x400E0ED4U) /**< \brief (PIOA) Rising Edge/ High Level Select Register */ +#define REG_PIOA_FRLHSR (0x400E0ED8U) /**< \brief (PIOA) Fall/Rise - Low/High Status Register */ +#define REG_PIOA_LOCKSR (0x400E0EE0U) /**< \brief (PIOA) Lock Status */ +#define REG_PIOA_WPMR (0x400E0EE4U) /**< \brief (PIOA) Write Protect Mode Register */ +#define REG_PIOA_WPSR (0x400E0EE8U) /**< \brief (PIOA) Write Protect Status Register */ +#define REG_PIOA_SCHMITT (0x400E0F00U) /**< \brief (PIOA) Schmitt Trigger Register */ +#define REG_PIOA_PCMR (0x400E0F50U) /**< \brief (PIOA) Parallel Capture Mode Register */ +#define REG_PIOA_PCIER (0x400E0F54U) /**< \brief (PIOA) Parallel Capture Interrupt Enable Register */ +#define REG_PIOA_PCIDR (0x400E0F58U) /**< \brief (PIOA) Parallel Capture Interrupt Disable Register */ +#define REG_PIOA_PCIMR (0x400E0F5CU) /**< \brief (PIOA) Parallel Capture Interrupt Mask Register */ +#define REG_PIOA_PCISR (0x400E0F60U) /**< \brief (PIOA) Parallel Capture Interrupt Status Register */ +#define REG_PIOA_PCRHR (0x400E0F64U) /**< \brief (PIOA) Parallel Capture Reception Holding Register */ +#define REG_PIOA_RPR (0x400E0F68U) /**< \brief (PIOA) Receive Pointer Register */ +#define REG_PIOA_RCR (0x400E0F6CU) /**< \brief (PIOA) Receive Counter Register */ +#define REG_PIOA_TPR (0x400E0F70U) /**< \brief (PIOA) Transmit Pointer Register */ +#define REG_PIOA_TCR (0x400E0F74U) /**< \brief (PIOA) Transmit Counter Register */ +#define REG_PIOA_RNPR (0x400E0F78U) /**< \brief (PIOA) Receive Next Pointer Register */ +#define REG_PIOA_RNCR (0x400E0F7CU) /**< \brief (PIOA) Receive Next Counter Register */ +#define REG_PIOA_TNPR (0x400E0F80U) /**< \brief (PIOA) Transmit Next Pointer Register */ +#define REG_PIOA_TNCR (0x400E0F84U) /**< \brief (PIOA) Transmit Next Counter Register */ +#define REG_PIOA_PTCR (0x400E0F88U) /**< \brief (PIOA) Transfer Control Register */ +#define REG_PIOA_PTSR (0x400E0F8CU) /**< \brief (PIOA) Transfer Status Register */ +#else +#define REG_PIOA_PER (*(WoReg*)0x400E0E00U) /**< \brief (PIOA) PIO Enable Register */ +#define REG_PIOA_PDR (*(WoReg*)0x400E0E04U) /**< \brief (PIOA) PIO Disable Register */ +#define REG_PIOA_PSR (*(RoReg*)0x400E0E08U) /**< \brief (PIOA) PIO Status Register */ +#define REG_PIOA_OER (*(WoReg*)0x400E0E10U) /**< \brief (PIOA) Output Enable Register */ +#define REG_PIOA_ODR (*(WoReg*)0x400E0E14U) /**< \brief (PIOA) Output Disable Register */ +#define REG_PIOA_OSR (*(RoReg*)0x400E0E18U) /**< \brief (PIOA) Output Status Register */ +#define REG_PIOA_IFER (*(WoReg*)0x400E0E20U) /**< \brief (PIOA) Glitch Input Filter Enable Register */ +#define REG_PIOA_IFDR (*(WoReg*)0x400E0E24U) /**< \brief (PIOA) Glitch Input Filter Disable Register */ +#define REG_PIOA_IFSR (*(RoReg*)0x400E0E28U) /**< \brief (PIOA) Glitch Input Filter Status Register */ +#define REG_PIOA_SODR (*(WoReg*)0x400E0E30U) /**< \brief (PIOA) Set Output Data Register */ +#define REG_PIOA_CODR (*(WoReg*)0x400E0E34U) /**< \brief (PIOA) Clear Output Data Register */ +#define REG_PIOA_ODSR (*(RwReg*)0x400E0E38U) /**< \brief (PIOA) Output Data Status Register */ +#define REG_PIOA_PDSR (*(RoReg*)0x400E0E3CU) /**< \brief (PIOA) Pin Data Status Register */ +#define REG_PIOA_IER (*(WoReg*)0x400E0E40U) /**< \brief (PIOA) Interrupt Enable Register */ +#define REG_PIOA_IDR (*(WoReg*)0x400E0E44U) /**< \brief (PIOA) Interrupt Disable Register */ +#define REG_PIOA_IMR (*(RoReg*)0x400E0E48U) /**< \brief (PIOA) Interrupt Mask Register */ +#define REG_PIOA_ISR (*(RoReg*)0x400E0E4CU) /**< \brief (PIOA) Interrupt Status Register */ +#define REG_PIOA_MDER (*(WoReg*)0x400E0E50U) /**< \brief (PIOA) Multi-driver Enable Register */ +#define REG_PIOA_MDDR (*(WoReg*)0x400E0E54U) /**< \brief (PIOA) Multi-driver Disable Register */ +#define REG_PIOA_MDSR (*(RoReg*)0x400E0E58U) /**< \brief (PIOA) Multi-driver Status Register */ +#define REG_PIOA_PUDR (*(WoReg*)0x400E0E60U) /**< \brief (PIOA) Pull-up Disable Register */ +#define REG_PIOA_PUER (*(WoReg*)0x400E0E64U) /**< \brief (PIOA) Pull-up Enable Register */ +#define REG_PIOA_PUSR (*(RoReg*)0x400E0E68U) /**< \brief (PIOA) Pad Pull-up Status Register */ +#define REG_PIOA_ABCDSR (*(RwReg*)0x400E0E70U) /**< \brief (PIOA) Peripheral Select Register */ +#define REG_PIOA_IFSCDR (*(WoReg*)0x400E0E80U) /**< \brief (PIOA) Input Filter Slow Clock Disable Register */ +#define REG_PIOA_IFSCER (*(WoReg*)0x400E0E84U) /**< \brief (PIOA) Input Filter Slow Clock Enable Register */ +#define REG_PIOA_IFSCSR (*(RoReg*)0x400E0E88U) /**< \brief (PIOA) Input Filter Slow Clock Status Register */ +#define REG_PIOA_SCDR (*(RwReg*)0x400E0E8CU) /**< \brief (PIOA) Slow Clock Divider Debouncing Register */ +#define REG_PIOA_PPDDR (*(WoReg*)0x400E0E90U) /**< \brief (PIOA) Pad Pull-down Disable Register */ +#define REG_PIOA_PPDER (*(WoReg*)0x400E0E94U) /**< \brief (PIOA) Pad Pull-down Enable Register */ +#define REG_PIOA_PPDSR (*(RoReg*)0x400E0E98U) /**< \brief (PIOA) Pad Pull-down Status Register */ +#define REG_PIOA_OWER (*(WoReg*)0x400E0EA0U) /**< \brief (PIOA) Output Write Enable */ +#define REG_PIOA_OWDR (*(WoReg*)0x400E0EA4U) /**< \brief (PIOA) Output Write Disable */ +#define REG_PIOA_OWSR (*(RoReg*)0x400E0EA8U) /**< \brief (PIOA) Output Write Status Register */ +#define REG_PIOA_AIMER (*(WoReg*)0x400E0EB0U) /**< \brief (PIOA) Additional Interrupt Modes Enable Register */ +#define REG_PIOA_AIMDR (*(WoReg*)0x400E0EB4U) /**< \brief (PIOA) Additional Interrupt Modes Disables Register */ +#define REG_PIOA_AIMMR (*(RoReg*)0x400E0EB8U) /**< \brief (PIOA) Additional Interrupt Modes Mask Register */ +#define REG_PIOA_ESR (*(WoReg*)0x400E0EC0U) /**< \brief (PIOA) Edge Select Register */ +#define REG_PIOA_LSR (*(WoReg*)0x400E0EC4U) /**< \brief (PIOA) Level Select Register */ +#define REG_PIOA_ELSR (*(RoReg*)0x400E0EC8U) /**< \brief (PIOA) Edge/Level Status Register */ +#define REG_PIOA_FELLSR (*(WoReg*)0x400E0ED0U) /**< \brief (PIOA) Falling Edge/Low Level Select Register */ +#define REG_PIOA_REHLSR (*(WoReg*)0x400E0ED4U) /**< \brief (PIOA) Rising Edge/ High Level Select Register */ +#define REG_PIOA_FRLHSR (*(RoReg*)0x400E0ED8U) /**< \brief (PIOA) Fall/Rise - Low/High Status Register */ +#define REG_PIOA_LOCKSR (*(RoReg*)0x400E0EE0U) /**< \brief (PIOA) Lock Status */ +#define REG_PIOA_WPMR (*(RwReg*)0x400E0EE4U) /**< \brief (PIOA) Write Protect Mode Register */ +#define REG_PIOA_WPSR (*(RoReg*)0x400E0EE8U) /**< \brief (PIOA) Write Protect Status Register */ +#define REG_PIOA_SCHMITT (*(RwReg*)0x400E0F00U) /**< \brief (PIOA) Schmitt Trigger Register */ +#define REG_PIOA_PCMR (*(RwReg*)0x400E0F50U) /**< \brief (PIOA) Parallel Capture Mode Register */ +#define REG_PIOA_PCIER (*(WoReg*)0x400E0F54U) /**< \brief (PIOA) Parallel Capture Interrupt Enable Register */ +#define REG_PIOA_PCIDR (*(WoReg*)0x400E0F58U) /**< \brief (PIOA) Parallel Capture Interrupt Disable Register */ +#define REG_PIOA_PCIMR (*(RoReg*)0x400E0F5CU) /**< \brief (PIOA) Parallel Capture Interrupt Mask Register */ +#define REG_PIOA_PCISR (*(RoReg*)0x400E0F60U) /**< \brief (PIOA) Parallel Capture Interrupt Status Register */ +#define REG_PIOA_PCRHR (*(RoReg*)0x400E0F64U) /**< \brief (PIOA) Parallel Capture Reception Holding Register */ +#define REG_PIOA_RPR (*(RwReg*)0x400E0F68U) /**< \brief (PIOA) Receive Pointer Register */ +#define REG_PIOA_RCR (*(RwReg*)0x400E0F6CU) /**< \brief (PIOA) Receive Counter Register */ +#define REG_PIOA_TPR (*(RwReg*)0x400E0F70U) /**< \brief (PIOA) Transmit Pointer Register */ +#define REG_PIOA_TCR (*(RwReg*)0x400E0F74U) /**< \brief (PIOA) Transmit Counter Register */ +#define REG_PIOA_RNPR (*(RwReg*)0x400E0F78U) /**< \brief (PIOA) Receive Next Pointer Register */ +#define REG_PIOA_RNCR (*(RwReg*)0x400E0F7CU) /**< \brief (PIOA) Receive Next Counter Register */ +#define REG_PIOA_TNPR (*(RwReg*)0x400E0F80U) /**< \brief (PIOA) Transmit Next Pointer Register */ +#define REG_PIOA_TNCR (*(RwReg*)0x400E0F84U) /**< \brief (PIOA) Transmit Next Counter Register */ +#define REG_PIOA_PTCR (*(WoReg*)0x400E0F88U) /**< \brief (PIOA) Transfer Control Register */ +#define REG_PIOA_PTSR (*(RoReg*)0x400E0F8CU) /**< \brief (PIOA) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_PIOA_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_piob.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_piob.h new file mode 100644 index 000000000..0ab9b1b1f --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_piob.h @@ -0,0 +1,144 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_PIOB_INSTANCE_ +#define _SAM3S8_PIOB_INSTANCE_ + +/* ========== Register definition for PIOB peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PIOB_PER (0x400E1000U) /**< \brief (PIOB) PIO Enable Register */ +#define REG_PIOB_PDR (0x400E1004U) /**< \brief (PIOB) PIO Disable Register */ +#define REG_PIOB_PSR (0x400E1008U) /**< \brief (PIOB) PIO Status Register */ +#define REG_PIOB_OER (0x400E1010U) /**< \brief (PIOB) Output Enable Register */ +#define REG_PIOB_ODR (0x400E1014U) /**< \brief (PIOB) Output Disable Register */ +#define REG_PIOB_OSR (0x400E1018U) /**< \brief (PIOB) Output Status Register */ +#define REG_PIOB_IFER (0x400E1020U) /**< \brief (PIOB) Glitch Input Filter Enable Register */ +#define REG_PIOB_IFDR (0x400E1024U) /**< \brief (PIOB) Glitch Input Filter Disable Register */ +#define REG_PIOB_IFSR (0x400E1028U) /**< \brief (PIOB) Glitch Input Filter Status Register */ +#define REG_PIOB_SODR (0x400E1030U) /**< \brief (PIOB) Set Output Data Register */ +#define REG_PIOB_CODR (0x400E1034U) /**< \brief (PIOB) Clear Output Data Register */ +#define REG_PIOB_ODSR (0x400E1038U) /**< \brief (PIOB) Output Data Status Register */ +#define REG_PIOB_PDSR (0x400E103CU) /**< \brief (PIOB) Pin Data Status Register */ +#define REG_PIOB_IER (0x400E1040U) /**< \brief (PIOB) Interrupt Enable Register */ +#define REG_PIOB_IDR (0x400E1044U) /**< \brief (PIOB) Interrupt Disable Register */ +#define REG_PIOB_IMR (0x400E1048U) /**< \brief (PIOB) Interrupt Mask Register */ +#define REG_PIOB_ISR (0x400E104CU) /**< \brief (PIOB) Interrupt Status Register */ +#define REG_PIOB_MDER (0x400E1050U) /**< \brief (PIOB) Multi-driver Enable Register */ +#define REG_PIOB_MDDR (0x400E1054U) /**< \brief (PIOB) Multi-driver Disable Register */ +#define REG_PIOB_MDSR (0x400E1058U) /**< \brief (PIOB) Multi-driver Status Register */ +#define REG_PIOB_PUDR (0x400E1060U) /**< \brief (PIOB) Pull-up Disable Register */ +#define REG_PIOB_PUER (0x400E1064U) /**< \brief (PIOB) Pull-up Enable Register */ +#define REG_PIOB_PUSR (0x400E1068U) /**< \brief (PIOB) Pad Pull-up Status Register */ +#define REG_PIOB_ABCDSR (0x400E1070U) /**< \brief (PIOB) Peripheral Select Register */ +#define REG_PIOB_IFSCDR (0x400E1080U) /**< \brief (PIOB) Input Filter Slow Clock Disable Register */ +#define REG_PIOB_IFSCER (0x400E1084U) /**< \brief (PIOB) Input Filter Slow Clock Enable Register */ +#define REG_PIOB_IFSCSR (0x400E1088U) /**< \brief (PIOB) Input Filter Slow Clock Status Register */ +#define REG_PIOB_SCDR (0x400E108CU) /**< \brief (PIOB) Slow Clock Divider Debouncing Register */ +#define REG_PIOB_PPDDR (0x400E1090U) /**< \brief (PIOB) Pad Pull-down Disable Register */ +#define REG_PIOB_PPDER (0x400E1094U) /**< \brief (PIOB) Pad Pull-down Enable Register */ +#define REG_PIOB_PPDSR (0x400E1098U) /**< \brief (PIOB) Pad Pull-down Status Register */ +#define REG_PIOB_OWER (0x400E10A0U) /**< \brief (PIOB) Output Write Enable */ +#define REG_PIOB_OWDR (0x400E10A4U) /**< \brief (PIOB) Output Write Disable */ +#define REG_PIOB_OWSR (0x400E10A8U) /**< \brief (PIOB) Output Write Status Register */ +#define REG_PIOB_AIMER (0x400E10B0U) /**< \brief (PIOB) Additional Interrupt Modes Enable Register */ +#define REG_PIOB_AIMDR (0x400E10B4U) /**< \brief (PIOB) Additional Interrupt Modes Disables Register */ +#define REG_PIOB_AIMMR (0x400E10B8U) /**< \brief (PIOB) Additional Interrupt Modes Mask Register */ +#define REG_PIOB_ESR (0x400E10C0U) /**< \brief (PIOB) Edge Select Register */ +#define REG_PIOB_LSR (0x400E10C4U) /**< \brief (PIOB) Level Select Register */ +#define REG_PIOB_ELSR (0x400E10C8U) /**< \brief (PIOB) Edge/Level Status Register */ +#define REG_PIOB_FELLSR (0x400E10D0U) /**< \brief (PIOB) Falling Edge/Low Level Select Register */ +#define REG_PIOB_REHLSR (0x400E10D4U) /**< \brief (PIOB) Rising Edge/ High Level Select Register */ +#define REG_PIOB_FRLHSR (0x400E10D8U) /**< \brief (PIOB) Fall/Rise - Low/High Status Register */ +#define REG_PIOB_LOCKSR (0x400E10E0U) /**< \brief (PIOB) Lock Status */ +#define REG_PIOB_WPMR (0x400E10E4U) /**< \brief (PIOB) Write Protect Mode Register */ +#define REG_PIOB_WPSR (0x400E10E8U) /**< \brief (PIOB) Write Protect Status Register */ +#define REG_PIOB_SCHMITT (0x400E1100U) /**< \brief (PIOB) Schmitt Trigger Register */ +#define REG_PIOB_PCMR (0x400E1150U) /**< \brief (PIOB) Parallel Capture Mode Register */ +#define REG_PIOB_PCIER (0x400E1154U) /**< \brief (PIOB) Parallel Capture Interrupt Enable Register */ +#define REG_PIOB_PCIDR (0x400E1158U) /**< \brief (PIOB) Parallel Capture Interrupt Disable Register */ +#define REG_PIOB_PCIMR (0x400E115CU) /**< \brief (PIOB) Parallel Capture Interrupt Mask Register */ +#define REG_PIOB_PCISR (0x400E1160U) /**< \brief (PIOB) Parallel Capture Interrupt Status Register */ +#define REG_PIOB_PCRHR (0x400E1164U) /**< \brief (PIOB) Parallel Capture Reception Holding Register */ +#else +#define REG_PIOB_PER (*(WoReg*)0x400E1000U) /**< \brief (PIOB) PIO Enable Register */ +#define REG_PIOB_PDR (*(WoReg*)0x400E1004U) /**< \brief (PIOB) PIO Disable Register */ +#define REG_PIOB_PSR (*(RoReg*)0x400E1008U) /**< \brief (PIOB) PIO Status Register */ +#define REG_PIOB_OER (*(WoReg*)0x400E1010U) /**< \brief (PIOB) Output Enable Register */ +#define REG_PIOB_ODR (*(WoReg*)0x400E1014U) /**< \brief (PIOB) Output Disable Register */ +#define REG_PIOB_OSR (*(RoReg*)0x400E1018U) /**< \brief (PIOB) Output Status Register */ +#define REG_PIOB_IFER (*(WoReg*)0x400E1020U) /**< \brief (PIOB) Glitch Input Filter Enable Register */ +#define REG_PIOB_IFDR (*(WoReg*)0x400E1024U) /**< \brief (PIOB) Glitch Input Filter Disable Register */ +#define REG_PIOB_IFSR (*(RoReg*)0x400E1028U) /**< \brief (PIOB) Glitch Input Filter Status Register */ +#define REG_PIOB_SODR (*(WoReg*)0x400E1030U) /**< \brief (PIOB) Set Output Data Register */ +#define REG_PIOB_CODR (*(WoReg*)0x400E1034U) /**< \brief (PIOB) Clear Output Data Register */ +#define REG_PIOB_ODSR (*(RwReg*)0x400E1038U) /**< \brief (PIOB) Output Data Status Register */ +#define REG_PIOB_PDSR (*(RoReg*)0x400E103CU) /**< \brief (PIOB) Pin Data Status Register */ +#define REG_PIOB_IER (*(WoReg*)0x400E1040U) /**< \brief (PIOB) Interrupt Enable Register */ +#define REG_PIOB_IDR (*(WoReg*)0x400E1044U) /**< \brief (PIOB) Interrupt Disable Register */ +#define REG_PIOB_IMR (*(RoReg*)0x400E1048U) /**< \brief (PIOB) Interrupt Mask Register */ +#define REG_PIOB_ISR (*(RoReg*)0x400E104CU) /**< \brief (PIOB) Interrupt Status Register */ +#define REG_PIOB_MDER (*(WoReg*)0x400E1050U) /**< \brief (PIOB) Multi-driver Enable Register */ +#define REG_PIOB_MDDR (*(WoReg*)0x400E1054U) /**< \brief (PIOB) Multi-driver Disable Register */ +#define REG_PIOB_MDSR (*(RoReg*)0x400E1058U) /**< \brief (PIOB) Multi-driver Status Register */ +#define REG_PIOB_PUDR (*(WoReg*)0x400E1060U) /**< \brief (PIOB) Pull-up Disable Register */ +#define REG_PIOB_PUER (*(WoReg*)0x400E1064U) /**< \brief (PIOB) Pull-up Enable Register */ +#define REG_PIOB_PUSR (*(RoReg*)0x400E1068U) /**< \brief (PIOB) Pad Pull-up Status Register */ +#define REG_PIOB_ABCDSR (*(RwReg*)0x400E1070U) /**< \brief (PIOB) Peripheral Select Register */ +#define REG_PIOB_IFSCDR (*(WoReg*)0x400E1080U) /**< \brief (PIOB) Input Filter Slow Clock Disable Register */ +#define REG_PIOB_IFSCER (*(WoReg*)0x400E1084U) /**< \brief (PIOB) Input Filter Slow Clock Enable Register */ +#define REG_PIOB_IFSCSR (*(RoReg*)0x400E1088U) /**< \brief (PIOB) Input Filter Slow Clock Status Register */ +#define REG_PIOB_SCDR (*(RwReg*)0x400E108CU) /**< \brief (PIOB) Slow Clock Divider Debouncing Register */ +#define REG_PIOB_PPDDR (*(WoReg*)0x400E1090U) /**< \brief (PIOB) Pad Pull-down Disable Register */ +#define REG_PIOB_PPDER (*(WoReg*)0x400E1094U) /**< \brief (PIOB) Pad Pull-down Enable Register */ +#define REG_PIOB_PPDSR (*(RoReg*)0x400E1098U) /**< \brief (PIOB) Pad Pull-down Status Register */ +#define REG_PIOB_OWER (*(WoReg*)0x400E10A0U) /**< \brief (PIOB) Output Write Enable */ +#define REG_PIOB_OWDR (*(WoReg*)0x400E10A4U) /**< \brief (PIOB) Output Write Disable */ +#define REG_PIOB_OWSR (*(RoReg*)0x400E10A8U) /**< \brief (PIOB) Output Write Status Register */ +#define REG_PIOB_AIMER (*(WoReg*)0x400E10B0U) /**< \brief (PIOB) Additional Interrupt Modes Enable Register */ +#define REG_PIOB_AIMDR (*(WoReg*)0x400E10B4U) /**< \brief (PIOB) Additional Interrupt Modes Disables Register */ +#define REG_PIOB_AIMMR (*(RoReg*)0x400E10B8U) /**< \brief (PIOB) Additional Interrupt Modes Mask Register */ +#define REG_PIOB_ESR (*(WoReg*)0x400E10C0U) /**< \brief (PIOB) Edge Select Register */ +#define REG_PIOB_LSR (*(WoReg*)0x400E10C4U) /**< \brief (PIOB) Level Select Register */ +#define REG_PIOB_ELSR (*(RoReg*)0x400E10C8U) /**< \brief (PIOB) Edge/Level Status Register */ +#define REG_PIOB_FELLSR (*(WoReg*)0x400E10D0U) /**< \brief (PIOB) Falling Edge/Low Level Select Register */ +#define REG_PIOB_REHLSR (*(WoReg*)0x400E10D4U) /**< \brief (PIOB) Rising Edge/ High Level Select Register */ +#define REG_PIOB_FRLHSR (*(RoReg*)0x400E10D8U) /**< \brief (PIOB) Fall/Rise - Low/High Status Register */ +#define REG_PIOB_LOCKSR (*(RoReg*)0x400E10E0U) /**< \brief (PIOB) Lock Status */ +#define REG_PIOB_WPMR (*(RwReg*)0x400E10E4U) /**< \brief (PIOB) Write Protect Mode Register */ +#define REG_PIOB_WPSR (*(RoReg*)0x400E10E8U) /**< \brief (PIOB) Write Protect Status Register */ +#define REG_PIOB_SCHMITT (*(RwReg*)0x400E1100U) /**< \brief (PIOB) Schmitt Trigger Register */ +#define REG_PIOB_PCMR (*(RwReg*)0x400E1150U) /**< \brief (PIOB) Parallel Capture Mode Register */ +#define REG_PIOB_PCIER (*(WoReg*)0x400E1154U) /**< \brief (PIOB) Parallel Capture Interrupt Enable Register */ +#define REG_PIOB_PCIDR (*(WoReg*)0x400E1158U) /**< \brief (PIOB) Parallel Capture Interrupt Disable Register */ +#define REG_PIOB_PCIMR (*(RoReg*)0x400E115CU) /**< \brief (PIOB) Parallel Capture Interrupt Mask Register */ +#define REG_PIOB_PCISR (*(RoReg*)0x400E1160U) /**< \brief (PIOB) Parallel Capture Interrupt Status Register */ +#define REG_PIOB_PCRHR (*(RoReg*)0x400E1164U) /**< \brief (PIOB) Parallel Capture Reception Holding Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_PIOB_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_pioc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_pioc.h new file mode 100644 index 000000000..1d2de8a8b --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_pioc.h @@ -0,0 +1,144 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_PIOC_INSTANCE_ +#define _SAM3S8_PIOC_INSTANCE_ + +/* ========== Register definition for PIOC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PIOC_PER (0x400E1200U) /**< \brief (PIOC) PIO Enable Register */ +#define REG_PIOC_PDR (0x400E1204U) /**< \brief (PIOC) PIO Disable Register */ +#define REG_PIOC_PSR (0x400E1208U) /**< \brief (PIOC) PIO Status Register */ +#define REG_PIOC_OER (0x400E1210U) /**< \brief (PIOC) Output Enable Register */ +#define REG_PIOC_ODR (0x400E1214U) /**< \brief (PIOC) Output Disable Register */ +#define REG_PIOC_OSR (0x400E1218U) /**< \brief (PIOC) Output Status Register */ +#define REG_PIOC_IFER (0x400E1220U) /**< \brief (PIOC) Glitch Input Filter Enable Register */ +#define REG_PIOC_IFDR (0x400E1224U) /**< \brief (PIOC) Glitch Input Filter Disable Register */ +#define REG_PIOC_IFSR (0x400E1228U) /**< \brief (PIOC) Glitch Input Filter Status Register */ +#define REG_PIOC_SODR (0x400E1230U) /**< \brief (PIOC) Set Output Data Register */ +#define REG_PIOC_CODR (0x400E1234U) /**< \brief (PIOC) Clear Output Data Register */ +#define REG_PIOC_ODSR (0x400E1238U) /**< \brief (PIOC) Output Data Status Register */ +#define REG_PIOC_PDSR (0x400E123CU) /**< \brief (PIOC) Pin Data Status Register */ +#define REG_PIOC_IER (0x400E1240U) /**< \brief (PIOC) Interrupt Enable Register */ +#define REG_PIOC_IDR (0x400E1244U) /**< \brief (PIOC) Interrupt Disable Register */ +#define REG_PIOC_IMR (0x400E1248U) /**< \brief (PIOC) Interrupt Mask Register */ +#define REG_PIOC_ISR (0x400E124CU) /**< \brief (PIOC) Interrupt Status Register */ +#define REG_PIOC_MDER (0x400E1250U) /**< \brief (PIOC) Multi-driver Enable Register */ +#define REG_PIOC_MDDR (0x400E1254U) /**< \brief (PIOC) Multi-driver Disable Register */ +#define REG_PIOC_MDSR (0x400E1258U) /**< \brief (PIOC) Multi-driver Status Register */ +#define REG_PIOC_PUDR (0x400E1260U) /**< \brief (PIOC) Pull-up Disable Register */ +#define REG_PIOC_PUER (0x400E1264U) /**< \brief (PIOC) Pull-up Enable Register */ +#define REG_PIOC_PUSR (0x400E1268U) /**< \brief (PIOC) Pad Pull-up Status Register */ +#define REG_PIOC_ABCDSR (0x400E1270U) /**< \brief (PIOC) Peripheral Select Register */ +#define REG_PIOC_IFSCDR (0x400E1280U) /**< \brief (PIOC) Input Filter Slow Clock Disable Register */ +#define REG_PIOC_IFSCER (0x400E1284U) /**< \brief (PIOC) Input Filter Slow Clock Enable Register */ +#define REG_PIOC_IFSCSR (0x400E1288U) /**< \brief (PIOC) Input Filter Slow Clock Status Register */ +#define REG_PIOC_SCDR (0x400E128CU) /**< \brief (PIOC) Slow Clock Divider Debouncing Register */ +#define REG_PIOC_PPDDR (0x400E1290U) /**< \brief (PIOC) Pad Pull-down Disable Register */ +#define REG_PIOC_PPDER (0x400E1294U) /**< \brief (PIOC) Pad Pull-down Enable Register */ +#define REG_PIOC_PPDSR (0x400E1298U) /**< \brief (PIOC) Pad Pull-down Status Register */ +#define REG_PIOC_OWER (0x400E12A0U) /**< \brief (PIOC) Output Write Enable */ +#define REG_PIOC_OWDR (0x400E12A4U) /**< \brief (PIOC) Output Write Disable */ +#define REG_PIOC_OWSR (0x400E12A8U) /**< \brief (PIOC) Output Write Status Register */ +#define REG_PIOC_AIMER (0x400E12B0U) /**< \brief (PIOC) Additional Interrupt Modes Enable Register */ +#define REG_PIOC_AIMDR (0x400E12B4U) /**< \brief (PIOC) Additional Interrupt Modes Disables Register */ +#define REG_PIOC_AIMMR (0x400E12B8U) /**< \brief (PIOC) Additional Interrupt Modes Mask Register */ +#define REG_PIOC_ESR (0x400E12C0U) /**< \brief (PIOC) Edge Select Register */ +#define REG_PIOC_LSR (0x400E12C4U) /**< \brief (PIOC) Level Select Register */ +#define REG_PIOC_ELSR (0x400E12C8U) /**< \brief (PIOC) Edge/Level Status Register */ +#define REG_PIOC_FELLSR (0x400E12D0U) /**< \brief (PIOC) Falling Edge/Low Level Select Register */ +#define REG_PIOC_REHLSR (0x400E12D4U) /**< \brief (PIOC) Rising Edge/ High Level Select Register */ +#define REG_PIOC_FRLHSR (0x400E12D8U) /**< \brief (PIOC) Fall/Rise - Low/High Status Register */ +#define REG_PIOC_LOCKSR (0x400E12E0U) /**< \brief (PIOC) Lock Status */ +#define REG_PIOC_WPMR (0x400E12E4U) /**< \brief (PIOC) Write Protect Mode Register */ +#define REG_PIOC_WPSR (0x400E12E8U) /**< \brief (PIOC) Write Protect Status Register */ +#define REG_PIOC_SCHMITT (0x400E1300U) /**< \brief (PIOC) Schmitt Trigger Register */ +#define REG_PIOC_PCMR (0x400E1350U) /**< \brief (PIOC) Parallel Capture Mode Register */ +#define REG_PIOC_PCIER (0x400E1354U) /**< \brief (PIOC) Parallel Capture Interrupt Enable Register */ +#define REG_PIOC_PCIDR (0x400E1358U) /**< \brief (PIOC) Parallel Capture Interrupt Disable Register */ +#define REG_PIOC_PCIMR (0x400E135CU) /**< \brief (PIOC) Parallel Capture Interrupt Mask Register */ +#define REG_PIOC_PCISR (0x400E1360U) /**< \brief (PIOC) Parallel Capture Interrupt Status Register */ +#define REG_PIOC_PCRHR (0x400E1364U) /**< \brief (PIOC) Parallel Capture Reception Holding Register */ +#else +#define REG_PIOC_PER (*(WoReg*)0x400E1200U) /**< \brief (PIOC) PIO Enable Register */ +#define REG_PIOC_PDR (*(WoReg*)0x400E1204U) /**< \brief (PIOC) PIO Disable Register */ +#define REG_PIOC_PSR (*(RoReg*)0x400E1208U) /**< \brief (PIOC) PIO Status Register */ +#define REG_PIOC_OER (*(WoReg*)0x400E1210U) /**< \brief (PIOC) Output Enable Register */ +#define REG_PIOC_ODR (*(WoReg*)0x400E1214U) /**< \brief (PIOC) Output Disable Register */ +#define REG_PIOC_OSR (*(RoReg*)0x400E1218U) /**< \brief (PIOC) Output Status Register */ +#define REG_PIOC_IFER (*(WoReg*)0x400E1220U) /**< \brief (PIOC) Glitch Input Filter Enable Register */ +#define REG_PIOC_IFDR (*(WoReg*)0x400E1224U) /**< \brief (PIOC) Glitch Input Filter Disable Register */ +#define REG_PIOC_IFSR (*(RoReg*)0x400E1228U) /**< \brief (PIOC) Glitch Input Filter Status Register */ +#define REG_PIOC_SODR (*(WoReg*)0x400E1230U) /**< \brief (PIOC) Set Output Data Register */ +#define REG_PIOC_CODR (*(WoReg*)0x400E1234U) /**< \brief (PIOC) Clear Output Data Register */ +#define REG_PIOC_ODSR (*(RwReg*)0x400E1238U) /**< \brief (PIOC) Output Data Status Register */ +#define REG_PIOC_PDSR (*(RoReg*)0x400E123CU) /**< \brief (PIOC) Pin Data Status Register */ +#define REG_PIOC_IER (*(WoReg*)0x400E1240U) /**< \brief (PIOC) Interrupt Enable Register */ +#define REG_PIOC_IDR (*(WoReg*)0x400E1244U) /**< \brief (PIOC) Interrupt Disable Register */ +#define REG_PIOC_IMR (*(RoReg*)0x400E1248U) /**< \brief (PIOC) Interrupt Mask Register */ +#define REG_PIOC_ISR (*(RoReg*)0x400E124CU) /**< \brief (PIOC) Interrupt Status Register */ +#define REG_PIOC_MDER (*(WoReg*)0x400E1250U) /**< \brief (PIOC) Multi-driver Enable Register */ +#define REG_PIOC_MDDR (*(WoReg*)0x400E1254U) /**< \brief (PIOC) Multi-driver Disable Register */ +#define REG_PIOC_MDSR (*(RoReg*)0x400E1258U) /**< \brief (PIOC) Multi-driver Status Register */ +#define REG_PIOC_PUDR (*(WoReg*)0x400E1260U) /**< \brief (PIOC) Pull-up Disable Register */ +#define REG_PIOC_PUER (*(WoReg*)0x400E1264U) /**< \brief (PIOC) Pull-up Enable Register */ +#define REG_PIOC_PUSR (*(RoReg*)0x400E1268U) /**< \brief (PIOC) Pad Pull-up Status Register */ +#define REG_PIOC_ABCDSR (*(RwReg*)0x400E1270U) /**< \brief (PIOC) Peripheral Select Register */ +#define REG_PIOC_IFSCDR (*(WoReg*)0x400E1280U) /**< \brief (PIOC) Input Filter Slow Clock Disable Register */ +#define REG_PIOC_IFSCER (*(WoReg*)0x400E1284U) /**< \brief (PIOC) Input Filter Slow Clock Enable Register */ +#define REG_PIOC_IFSCSR (*(RoReg*)0x400E1288U) /**< \brief (PIOC) Input Filter Slow Clock Status Register */ +#define REG_PIOC_SCDR (*(RwReg*)0x400E128CU) /**< \brief (PIOC) Slow Clock Divider Debouncing Register */ +#define REG_PIOC_PPDDR (*(WoReg*)0x400E1290U) /**< \brief (PIOC) Pad Pull-down Disable Register */ +#define REG_PIOC_PPDER (*(WoReg*)0x400E1294U) /**< \brief (PIOC) Pad Pull-down Enable Register */ +#define REG_PIOC_PPDSR (*(RoReg*)0x400E1298U) /**< \brief (PIOC) Pad Pull-down Status Register */ +#define REG_PIOC_OWER (*(WoReg*)0x400E12A0U) /**< \brief (PIOC) Output Write Enable */ +#define REG_PIOC_OWDR (*(WoReg*)0x400E12A4U) /**< \brief (PIOC) Output Write Disable */ +#define REG_PIOC_OWSR (*(RoReg*)0x400E12A8U) /**< \brief (PIOC) Output Write Status Register */ +#define REG_PIOC_AIMER (*(WoReg*)0x400E12B0U) /**< \brief (PIOC) Additional Interrupt Modes Enable Register */ +#define REG_PIOC_AIMDR (*(WoReg*)0x400E12B4U) /**< \brief (PIOC) Additional Interrupt Modes Disables Register */ +#define REG_PIOC_AIMMR (*(RoReg*)0x400E12B8U) /**< \brief (PIOC) Additional Interrupt Modes Mask Register */ +#define REG_PIOC_ESR (*(WoReg*)0x400E12C0U) /**< \brief (PIOC) Edge Select Register */ +#define REG_PIOC_LSR (*(WoReg*)0x400E12C4U) /**< \brief (PIOC) Level Select Register */ +#define REG_PIOC_ELSR (*(RoReg*)0x400E12C8U) /**< \brief (PIOC) Edge/Level Status Register */ +#define REG_PIOC_FELLSR (*(WoReg*)0x400E12D0U) /**< \brief (PIOC) Falling Edge/Low Level Select Register */ +#define REG_PIOC_REHLSR (*(WoReg*)0x400E12D4U) /**< \brief (PIOC) Rising Edge/ High Level Select Register */ +#define REG_PIOC_FRLHSR (*(RoReg*)0x400E12D8U) /**< \brief (PIOC) Fall/Rise - Low/High Status Register */ +#define REG_PIOC_LOCKSR (*(RoReg*)0x400E12E0U) /**< \brief (PIOC) Lock Status */ +#define REG_PIOC_WPMR (*(RwReg*)0x400E12E4U) /**< \brief (PIOC) Write Protect Mode Register */ +#define REG_PIOC_WPSR (*(RoReg*)0x400E12E8U) /**< \brief (PIOC) Write Protect Status Register */ +#define REG_PIOC_SCHMITT (*(RwReg*)0x400E1300U) /**< \brief (PIOC) Schmitt Trigger Register */ +#define REG_PIOC_PCMR (*(RwReg*)0x400E1350U) /**< \brief (PIOC) Parallel Capture Mode Register */ +#define REG_PIOC_PCIER (*(WoReg*)0x400E1354U) /**< \brief (PIOC) Parallel Capture Interrupt Enable Register */ +#define REG_PIOC_PCIDR (*(WoReg*)0x400E1358U) /**< \brief (PIOC) Parallel Capture Interrupt Disable Register */ +#define REG_PIOC_PCIMR (*(RoReg*)0x400E135CU) /**< \brief (PIOC) Parallel Capture Interrupt Mask Register */ +#define REG_PIOC_PCISR (*(RoReg*)0x400E1360U) /**< \brief (PIOC) Parallel Capture Interrupt Status Register */ +#define REG_PIOC_PCRHR (*(RoReg*)0x400E1364U) /**< \brief (PIOC) Parallel Capture Reception Holding Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_PIOC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_pmc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_pmc.h new file mode 100644 index 000000000..b4b0d05a7 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_pmc.h @@ -0,0 +1,90 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_PMC_INSTANCE_ +#define _SAM3S8_PMC_INSTANCE_ + +/* ========== Register definition for PMC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PMC_SCER (0x400E0400U) /**< \brief (PMC) System Clock Enable Register */ +#define REG_PMC_SCDR (0x400E0404U) /**< \brief (PMC) System Clock Disable Register */ +#define REG_PMC_SCSR (0x400E0408U) /**< \brief (PMC) System Clock Status Register */ +#define REG_PMC_PCER0 (0x400E0410U) /**< \brief (PMC) Peripheral Clock Enable Register 0 */ +#define REG_PMC_PCDR0 (0x400E0414U) /**< \brief (PMC) Peripheral Clock Disable Register 0 */ +#define REG_PMC_PCSR0 (0x400E0418U) /**< \brief (PMC) Peripheral Clock Status Register 0 */ +#define REG_CKGR_MOR (0x400E0420U) /**< \brief (PMC) Main Oscillator Register */ +#define REG_CKGR_MCFR (0x400E0424U) /**< \brief (PMC) Main Clock Frequency Register */ +#define REG_CKGR_PLLAR (0x400E0428U) /**< \brief (PMC) PLLA Register */ +#define REG_CKGR_PLLBR (0x400E042CU) /**< \brief (PMC) PLLB Register */ +#define REG_PMC_MCKR (0x400E0430U) /**< \brief (PMC) Master Clock Register */ +#define REG_PMC_USB (0x400E0438U) /**< \brief (PMC) USB Clock Register */ +#define REG_PMC_PCK (0x400E0440U) /**< \brief (PMC) Programmable Clock 0 Register */ +#define REG_PMC_IER (0x400E0460U) /**< \brief (PMC) Interrupt Enable Register */ +#define REG_PMC_IDR (0x400E0464U) /**< \brief (PMC) Interrupt Disable Register */ +#define REG_PMC_SR (0x400E0468U) /**< \brief (PMC) Status Register */ +#define REG_PMC_IMR (0x400E046CU) /**< \brief (PMC) Interrupt Mask Register */ +#define REG_PMC_FSMR (0x400E0470U) /**< \brief (PMC) Fast Startup Mode Register */ +#define REG_PMC_FSPR (0x400E0474U) /**< \brief (PMC) Fast Startup Polarity Register */ +#define REG_PMC_FOCR (0x400E0478U) /**< \brief (PMC) Fault Output Clear Register */ +#define REG_PMC_WPMR (0x400E04E4U) /**< \brief (PMC) Write Protect Mode Register */ +#define REG_PMC_WPSR (0x400E04E8U) /**< \brief (PMC) Write Protect Status Register */ +#define REG_PMC_PCER1 (0x400E0500U) /**< \brief (PMC) Peripheral Clock Enable Register 1 */ +#define REG_PMC_PCDR1 (0x400E0504U) /**< \brief (PMC) Peripheral Clock Disable Register 1 */ +#define REG_PMC_PCSR1 (0x400E0508U) /**< \brief (PMC) Peripheral Clock Status Register 1 */ +#define REG_PMC_OCR (0x400E0510U) /**< \brief (PMC) Oscillator Calibration Register */ +#else +#define REG_PMC_SCER (*(WoReg*)0x400E0400U) /**< \brief (PMC) System Clock Enable Register */ +#define REG_PMC_SCDR (*(WoReg*)0x400E0404U) /**< \brief (PMC) System Clock Disable Register */ +#define REG_PMC_SCSR (*(RoReg*)0x400E0408U) /**< \brief (PMC) System Clock Status Register */ +#define REG_PMC_PCER0 (*(WoReg*)0x400E0410U) /**< \brief (PMC) Peripheral Clock Enable Register 0 */ +#define REG_PMC_PCDR0 (*(WoReg*)0x400E0414U) /**< \brief (PMC) Peripheral Clock Disable Register 0 */ +#define REG_PMC_PCSR0 (*(RoReg*)0x400E0418U) /**< \brief (PMC) Peripheral Clock Status Register 0 */ +#define REG_CKGR_MOR (*(RwReg*)0x400E0420U) /**< \brief (PMC) Main Oscillator Register */ +#define REG_CKGR_MCFR (*(RwReg*)0x400E0424U) /**< \brief (PMC) Main Clock Frequency Register */ +#define REG_CKGR_PLLAR (*(RwReg*)0x400E0428U) /**< \brief (PMC) PLLA Register */ +#define REG_CKGR_PLLBR (*(RwReg*)0x400E042CU) /**< \brief (PMC) PLLB Register */ +#define REG_PMC_MCKR (*(RwReg*)0x400E0430U) /**< \brief (PMC) Master Clock Register */ +#define REG_PMC_USB (*(RwReg*)0x400E0438U) /**< \brief (PMC) USB Clock Register */ +#define REG_PMC_PCK (*(RwReg*)0x400E0440U) /**< \brief (PMC) Programmable Clock 0 Register */ +#define REG_PMC_IER (*(WoReg*)0x400E0460U) /**< \brief (PMC) Interrupt Enable Register */ +#define REG_PMC_IDR (*(WoReg*)0x400E0464U) /**< \brief (PMC) Interrupt Disable Register */ +#define REG_PMC_SR (*(RoReg*)0x400E0468U) /**< \brief (PMC) Status Register */ +#define REG_PMC_IMR (*(RoReg*)0x400E046CU) /**< \brief (PMC) Interrupt Mask Register */ +#define REG_PMC_FSMR (*(RwReg*)0x400E0470U) /**< \brief (PMC) Fast Startup Mode Register */ +#define REG_PMC_FSPR (*(RwReg*)0x400E0474U) /**< \brief (PMC) Fast Startup Polarity Register */ +#define REG_PMC_FOCR (*(WoReg*)0x400E0478U) /**< \brief (PMC) Fault Output Clear Register */ +#define REG_PMC_WPMR (*(RwReg*)0x400E04E4U) /**< \brief (PMC) Write Protect Mode Register */ +#define REG_PMC_WPSR (*(RoReg*)0x400E04E8U) /**< \brief (PMC) Write Protect Status Register */ +#define REG_PMC_PCER1 (*(WoReg*)0x400E0500U) /**< \brief (PMC) Peripheral Clock Enable Register 1 */ +#define REG_PMC_PCDR1 (*(WoReg*)0x400E0504U) /**< \brief (PMC) Peripheral Clock Disable Register 1 */ +#define REG_PMC_PCSR1 (*(RoReg*)0x400E0508U) /**< \brief (PMC) Peripheral Clock Status Register 1 */ +#define REG_PMC_OCR (*(RwReg*)0x400E0510U) /**< \brief (PMC) Oscillator Calibration Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_PMC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_pwm.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_pwm.h new file mode 100644 index 000000000..033a0fd5e --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_pwm.h @@ -0,0 +1,248 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_PWM_INSTANCE_ +#define _SAM3S8_PWM_INSTANCE_ + +/* ========== Register definition for PWM peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PWM_CLK (0x40020000U) /**< \brief (PWM) PWM Clock Register */ +#define REG_PWM_ENA (0x40020004U) /**< \brief (PWM) PWM Enable Register */ +#define REG_PWM_DIS (0x40020008U) /**< \brief (PWM) PWM Disable Register */ +#define REG_PWM_SR (0x4002000CU) /**< \brief (PWM) PWM Status Register */ +#define REG_PWM_IER1 (0x40020010U) /**< \brief (PWM) PWM Interrupt Enable Register 1 */ +#define REG_PWM_IDR1 (0x40020014U) /**< \brief (PWM) PWM Interrupt Disable Register 1 */ +#define REG_PWM_IMR1 (0x40020018U) /**< \brief (PWM) PWM Interrupt Mask Register 1 */ +#define REG_PWM_ISR1 (0x4002001CU) /**< \brief (PWM) PWM Interrupt Status Register 1 */ +#define REG_PWM_SCM (0x40020020U) /**< \brief (PWM) PWM Sync Channels Mode Register */ +#define REG_PWM_SCUC (0x40020028U) /**< \brief (PWM) PWM Sync Channels Update Control Register */ +#define REG_PWM_SCUP (0x4002002CU) /**< \brief (PWM) PWM Sync Channels Update Period Register */ +#define REG_PWM_SCUPUPD (0x40020030U) /**< \brief (PWM) PWM Sync Channels Update Period Update Register */ +#define REG_PWM_IER2 (0x40020034U) /**< \brief (PWM) PWM Interrupt Enable Register 2 */ +#define REG_PWM_IDR2 (0x40020038U) /**< \brief (PWM) PWM Interrupt Disable Register 2 */ +#define REG_PWM_IMR2 (0x4002003CU) /**< \brief (PWM) PWM Interrupt Mask Register 2 */ +#define REG_PWM_ISR2 (0x40020040U) /**< \brief (PWM) PWM Interrupt Status Register 2 */ +#define REG_PWM_OOV (0x40020044U) /**< \brief (PWM) PWM Output Override Value Register */ +#define REG_PWM_OS (0x40020048U) /**< \brief (PWM) PWM Output Selection Register */ +#define REG_PWM_OSS (0x4002004CU) /**< \brief (PWM) PWM Output Selection Set Register */ +#define REG_PWM_OSC (0x40020050U) /**< \brief (PWM) PWM Output Selection Clear Register */ +#define REG_PWM_OSSUPD (0x40020054U) /**< \brief (PWM) PWM Output Selection Set Update Register */ +#define REG_PWM_OSCUPD (0x40020058U) /**< \brief (PWM) PWM Output Selection Clear Update Register */ +#define REG_PWM_FMR (0x4002005CU) /**< \brief (PWM) PWM Fault Mode Register */ +#define REG_PWM_FSR (0x40020060U) /**< \brief (PWM) PWM Fault Status Register */ +#define REG_PWM_FCR (0x40020064U) /**< \brief (PWM) PWM Fault Clear Register */ +#define REG_PWM_FPV (0x40020068U) /**< \brief (PWM) PWM Fault Protection Value Register */ +#define REG_PWM_FPE (0x4002006CU) /**< \brief (PWM) PWM Fault Protection Enable Register */ +#define REG_PWM_ELMR (0x4002007CU) /**< \brief (PWM) PWM Event Line 0 Mode Register */ +#define REG_PWM_SMMR (0x400200B0U) /**< \brief (PWM) PWM Stepper Motor Mode Register */ +#define REG_PWM_WPCR (0x400200E4U) /**< \brief (PWM) PWM Write Protect Control Register */ +#define REG_PWM_WPSR (0x400200E8U) /**< \brief (PWM) PWM Write Protect Status Register */ +#define REG_PWM_RPR (0x40020100U) /**< \brief (PWM) Receive Pointer Register */ +#define REG_PWM_RCR (0x40020104U) /**< \brief (PWM) Receive Counter Register */ +#define REG_PWM_TPR (0x40020108U) /**< \brief (PWM) Transmit Pointer Register */ +#define REG_PWM_TCR (0x4002010CU) /**< \brief (PWM) Transmit Counter Register */ +#define REG_PWM_RNPR (0x40020110U) /**< \brief (PWM) Receive Next Pointer Register */ +#define REG_PWM_RNCR (0x40020114U) /**< \brief (PWM) Receive Next Counter Register */ +#define REG_PWM_TNPR (0x40020118U) /**< \brief (PWM) Transmit Next Pointer Register */ +#define REG_PWM_TNCR (0x4002011CU) /**< \brief (PWM) Transmit Next Counter Register */ +#define REG_PWM_PTCR (0x40020120U) /**< \brief (PWM) Transfer Control Register */ +#define REG_PWM_PTSR (0x40020124U) /**< \brief (PWM) Transfer Status Register */ +#define REG_PWM_CMPV0 (0x40020130U) /**< \brief (PWM) PWM Comparison 0 Value Register */ +#define REG_PWM_CMPVUPD0 (0x40020134U) /**< \brief (PWM) PWM Comparison 0 Value Update Register */ +#define REG_PWM_CMPM0 (0x40020138U) /**< \brief (PWM) PWM Comparison 0 Mode Register */ +#define REG_PWM_CMPMUPD0 (0x4002013CU) /**< \brief (PWM) PWM Comparison 0 Mode Update Register */ +#define REG_PWM_CMPV1 (0x40020140U) /**< \brief (PWM) PWM Comparison 1 Value Register */ +#define REG_PWM_CMPVUPD1 (0x40020144U) /**< \brief (PWM) PWM Comparison 1 Value Update Register */ +#define REG_PWM_CMPM1 (0x40020148U) /**< \brief (PWM) PWM Comparison 1 Mode Register */ +#define REG_PWM_CMPMUPD1 (0x4002014CU) /**< \brief (PWM) PWM Comparison 1 Mode Update Register */ +#define REG_PWM_CMPV2 (0x40020150U) /**< \brief (PWM) PWM Comparison 2 Value Register */ +#define REG_PWM_CMPVUPD2 (0x40020154U) /**< \brief (PWM) PWM Comparison 2 Value Update Register */ +#define REG_PWM_CMPM2 (0x40020158U) /**< \brief (PWM) PWM Comparison 2 Mode Register */ +#define REG_PWM_CMPMUPD2 (0x4002015CU) /**< \brief (PWM) PWM Comparison 2 Mode Update Register */ +#define REG_PWM_CMPV3 (0x40020160U) /**< \brief (PWM) PWM Comparison 3 Value Register */ +#define REG_PWM_CMPVUPD3 (0x40020164U) /**< \brief (PWM) PWM Comparison 3 Value Update Register */ +#define REG_PWM_CMPM3 (0x40020168U) /**< \brief (PWM) PWM Comparison 3 Mode Register */ +#define REG_PWM_CMPMUPD3 (0x4002016CU) /**< \brief (PWM) PWM Comparison 3 Mode Update Register */ +#define REG_PWM_CMPV4 (0x40020170U) /**< \brief (PWM) PWM Comparison 4 Value Register */ +#define REG_PWM_CMPVUPD4 (0x40020174U) /**< \brief (PWM) PWM Comparison 4 Value Update Register */ +#define REG_PWM_CMPM4 (0x40020178U) /**< \brief (PWM) PWM Comparison 4 Mode Register */ +#define REG_PWM_CMPMUPD4 (0x4002017CU) /**< \brief (PWM) PWM Comparison 4 Mode Update Register */ +#define REG_PWM_CMPV5 (0x40020180U) /**< \brief (PWM) PWM Comparison 5 Value Register */ +#define REG_PWM_CMPVUPD5 (0x40020184U) /**< \brief (PWM) PWM Comparison 5 Value Update Register */ +#define REG_PWM_CMPM5 (0x40020188U) /**< \brief (PWM) PWM Comparison 5 Mode Register */ +#define REG_PWM_CMPMUPD5 (0x4002018CU) /**< \brief (PWM) PWM Comparison 5 Mode Update Register */ +#define REG_PWM_CMPV6 (0x40020190U) /**< \brief (PWM) PWM Comparison 6 Value Register */ +#define REG_PWM_CMPVUPD6 (0x40020194U) /**< \brief (PWM) PWM Comparison 6 Value Update Register */ +#define REG_PWM_CMPM6 (0x40020198U) /**< \brief (PWM) PWM Comparison 6 Mode Register */ +#define REG_PWM_CMPMUPD6 (0x4002019CU) /**< \brief (PWM) PWM Comparison 6 Mode Update Register */ +#define REG_PWM_CMPV7 (0x400201A0U) /**< \brief (PWM) PWM Comparison 7 Value Register */ +#define REG_PWM_CMPVUPD7 (0x400201A4U) /**< \brief (PWM) PWM Comparison 7 Value Update Register */ +#define REG_PWM_CMPM7 (0x400201A8U) /**< \brief (PWM) PWM Comparison 7 Mode Register */ +#define REG_PWM_CMPMUPD7 (0x400201ACU) /**< \brief (PWM) PWM Comparison 7 Mode Update Register */ +#define REG_PWM_CMR0 (0x40020200U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 0) */ +#define REG_PWM_CDTY0 (0x40020204U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 0) */ +#define REG_PWM_CDTYUPD0 (0x40020208U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 0) */ +#define REG_PWM_CPRD0 (0x4002020CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 0) */ +#define REG_PWM_CPRDUPD0 (0x40020210U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 0) */ +#define REG_PWM_CCNT0 (0x40020214U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 0) */ +#define REG_PWM_DT0 (0x40020218U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 0) */ +#define REG_PWM_DTUPD0 (0x4002021CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 0) */ +#define REG_PWM_CMR1 (0x40020220U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 1) */ +#define REG_PWM_CDTY1 (0x40020224U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 1) */ +#define REG_PWM_CDTYUPD1 (0x40020228U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 1) */ +#define REG_PWM_CPRD1 (0x4002022CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 1) */ +#define REG_PWM_CPRDUPD1 (0x40020230U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 1) */ +#define REG_PWM_CCNT1 (0x40020234U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 1) */ +#define REG_PWM_DT1 (0x40020238U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 1) */ +#define REG_PWM_DTUPD1 (0x4002023CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 1) */ +#define REG_PWM_CMR2 (0x40020240U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 2) */ +#define REG_PWM_CDTY2 (0x40020244U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 2) */ +#define REG_PWM_CDTYUPD2 (0x40020248U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 2) */ +#define REG_PWM_CPRD2 (0x4002024CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 2) */ +#define REG_PWM_CPRDUPD2 (0x40020250U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 2) */ +#define REG_PWM_CCNT2 (0x40020254U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 2) */ +#define REG_PWM_DT2 (0x40020258U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 2) */ +#define REG_PWM_DTUPD2 (0x4002025CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 2) */ +#define REG_PWM_CMR3 (0x40020260U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 3) */ +#define REG_PWM_CDTY3 (0x40020264U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 3) */ +#define REG_PWM_CDTYUPD3 (0x40020268U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 3) */ +#define REG_PWM_CPRD3 (0x4002026CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 3) */ +#define REG_PWM_CPRDUPD3 (0x40020270U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 3) */ +#define REG_PWM_CCNT3 (0x40020274U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 3) */ +#define REG_PWM_DT3 (0x40020278U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 3) */ +#define REG_PWM_DTUPD3 (0x4002027CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 3) */ +#else +#define REG_PWM_CLK (*(RwReg*)0x40020000U) /**< \brief (PWM) PWM Clock Register */ +#define REG_PWM_ENA (*(WoReg*)0x40020004U) /**< \brief (PWM) PWM Enable Register */ +#define REG_PWM_DIS (*(WoReg*)0x40020008U) /**< \brief (PWM) PWM Disable Register */ +#define REG_PWM_SR (*(RoReg*)0x4002000CU) /**< \brief (PWM) PWM Status Register */ +#define REG_PWM_IER1 (*(WoReg*)0x40020010U) /**< \brief (PWM) PWM Interrupt Enable Register 1 */ +#define REG_PWM_IDR1 (*(WoReg*)0x40020014U) /**< \brief (PWM) PWM Interrupt Disable Register 1 */ +#define REG_PWM_IMR1 (*(RoReg*)0x40020018U) /**< \brief (PWM) PWM Interrupt Mask Register 1 */ +#define REG_PWM_ISR1 (*(RoReg*)0x4002001CU) /**< \brief (PWM) PWM Interrupt Status Register 1 */ +#define REG_PWM_SCM (*(RwReg*)0x40020020U) /**< \brief (PWM) PWM Sync Channels Mode Register */ +#define REG_PWM_SCUC (*(RwReg*)0x40020028U) /**< \brief (PWM) PWM Sync Channels Update Control Register */ +#define REG_PWM_SCUP (*(RwReg*)0x4002002CU) /**< \brief (PWM) PWM Sync Channels Update Period Register */ +#define REG_PWM_SCUPUPD (*(WoReg*)0x40020030U) /**< \brief (PWM) PWM Sync Channels Update Period Update Register */ +#define REG_PWM_IER2 (*(WoReg*)0x40020034U) /**< \brief (PWM) PWM Interrupt Enable Register 2 */ +#define REG_PWM_IDR2 (*(WoReg*)0x40020038U) /**< \brief (PWM) PWM Interrupt Disable Register 2 */ +#define REG_PWM_IMR2 (*(RoReg*)0x4002003CU) /**< \brief (PWM) PWM Interrupt Mask Register 2 */ +#define REG_PWM_ISR2 (*(RoReg*)0x40020040U) /**< \brief (PWM) PWM Interrupt Status Register 2 */ +#define REG_PWM_OOV (*(RwReg*)0x40020044U) /**< \brief (PWM) PWM Output Override Value Register */ +#define REG_PWM_OS (*(RwReg*)0x40020048U) /**< \brief (PWM) PWM Output Selection Register */ +#define REG_PWM_OSS (*(WoReg*)0x4002004CU) /**< \brief (PWM) PWM Output Selection Set Register */ +#define REG_PWM_OSC (*(WoReg*)0x40020050U) /**< \brief (PWM) PWM Output Selection Clear Register */ +#define REG_PWM_OSSUPD (*(WoReg*)0x40020054U) /**< \brief (PWM) PWM Output Selection Set Update Register */ +#define REG_PWM_OSCUPD (*(WoReg*)0x40020058U) /**< \brief (PWM) PWM Output Selection Clear Update Register */ +#define REG_PWM_FMR (*(RwReg*)0x4002005CU) /**< \brief (PWM) PWM Fault Mode Register */ +#define REG_PWM_FSR (*(RoReg*)0x40020060U) /**< \brief (PWM) PWM Fault Status Register */ +#define REG_PWM_FCR (*(WoReg*)0x40020064U) /**< \brief (PWM) PWM Fault Clear Register */ +#define REG_PWM_FPV (*(RwReg*)0x40020068U) /**< \brief (PWM) PWM Fault Protection Value Register */ +#define REG_PWM_FPE (*(RwReg*)0x4002006CU) /**< \brief (PWM) PWM Fault Protection Enable Register */ +#define REG_PWM_ELMR (*(RwReg*)0x4002007CU) /**< \brief (PWM) PWM Event Line 0 Mode Register */ +#define REG_PWM_SMMR (*(RwReg*)0x400200B0U) /**< \brief (PWM) PWM Stepper Motor Mode Register */ +#define REG_PWM_WPCR (*(WoReg*)0x400200E4U) /**< \brief (PWM) PWM Write Protect Control Register */ +#define REG_PWM_WPSR (*(RoReg*)0x400200E8U) /**< \brief (PWM) PWM Write Protect Status Register */ +#define REG_PWM_RPR (*(RwReg*)0x40020100U) /**< \brief (PWM) Receive Pointer Register */ +#define REG_PWM_RCR (*(RwReg*)0x40020104U) /**< \brief (PWM) Receive Counter Register */ +#define REG_PWM_TPR (*(RwReg*)0x40020108U) /**< \brief (PWM) Transmit Pointer Register */ +#define REG_PWM_TCR (*(RwReg*)0x4002010CU) /**< \brief (PWM) Transmit Counter Register */ +#define REG_PWM_RNPR (*(RwReg*)0x40020110U) /**< \brief (PWM) Receive Next Pointer Register */ +#define REG_PWM_RNCR (*(RwReg*)0x40020114U) /**< \brief (PWM) Receive Next Counter Register */ +#define REG_PWM_TNPR (*(RwReg*)0x40020118U) /**< \brief (PWM) Transmit Next Pointer Register */ +#define REG_PWM_TNCR (*(RwReg*)0x4002011CU) /**< \brief (PWM) Transmit Next Counter Register */ +#define REG_PWM_PTCR (*(WoReg*)0x40020120U) /**< \brief (PWM) Transfer Control Register */ +#define REG_PWM_PTSR (*(RoReg*)0x40020124U) /**< \brief (PWM) Transfer Status Register */ +#define REG_PWM_CMPV0 (*(RwReg*)0x40020130U) /**< \brief (PWM) PWM Comparison 0 Value Register */ +#define REG_PWM_CMPVUPD0 (*(WoReg*)0x40020134U) /**< \brief (PWM) PWM Comparison 0 Value Update Register */ +#define REG_PWM_CMPM0 (*(RwReg*)0x40020138U) /**< \brief (PWM) PWM Comparison 0 Mode Register */ +#define REG_PWM_CMPMUPD0 (*(WoReg*)0x4002013CU) /**< \brief (PWM) PWM Comparison 0 Mode Update Register */ +#define REG_PWM_CMPV1 (*(RwReg*)0x40020140U) /**< \brief (PWM) PWM Comparison 1 Value Register */ +#define REG_PWM_CMPVUPD1 (*(WoReg*)0x40020144U) /**< \brief (PWM) PWM Comparison 1 Value Update Register */ +#define REG_PWM_CMPM1 (*(RwReg*)0x40020148U) /**< \brief (PWM) PWM Comparison 1 Mode Register */ +#define REG_PWM_CMPMUPD1 (*(WoReg*)0x4002014CU) /**< \brief (PWM) PWM Comparison 1 Mode Update Register */ +#define REG_PWM_CMPV2 (*(RwReg*)0x40020150U) /**< \brief (PWM) PWM Comparison 2 Value Register */ +#define REG_PWM_CMPVUPD2 (*(WoReg*)0x40020154U) /**< \brief (PWM) PWM Comparison 2 Value Update Register */ +#define REG_PWM_CMPM2 (*(RwReg*)0x40020158U) /**< \brief (PWM) PWM Comparison 2 Mode Register */ +#define REG_PWM_CMPMUPD2 (*(WoReg*)0x4002015CU) /**< \brief (PWM) PWM Comparison 2 Mode Update Register */ +#define REG_PWM_CMPV3 (*(RwReg*)0x40020160U) /**< \brief (PWM) PWM Comparison 3 Value Register */ +#define REG_PWM_CMPVUPD3 (*(WoReg*)0x40020164U) /**< \brief (PWM) PWM Comparison 3 Value Update Register */ +#define REG_PWM_CMPM3 (*(RwReg*)0x40020168U) /**< \brief (PWM) PWM Comparison 3 Mode Register */ +#define REG_PWM_CMPMUPD3 (*(WoReg*)0x4002016CU) /**< \brief (PWM) PWM Comparison 3 Mode Update Register */ +#define REG_PWM_CMPV4 (*(RwReg*)0x40020170U) /**< \brief (PWM) PWM Comparison 4 Value Register */ +#define REG_PWM_CMPVUPD4 (*(WoReg*)0x40020174U) /**< \brief (PWM) PWM Comparison 4 Value Update Register */ +#define REG_PWM_CMPM4 (*(RwReg*)0x40020178U) /**< \brief (PWM) PWM Comparison 4 Mode Register */ +#define REG_PWM_CMPMUPD4 (*(WoReg*)0x4002017CU) /**< \brief (PWM) PWM Comparison 4 Mode Update Register */ +#define REG_PWM_CMPV5 (*(RwReg*)0x40020180U) /**< \brief (PWM) PWM Comparison 5 Value Register */ +#define REG_PWM_CMPVUPD5 (*(WoReg*)0x40020184U) /**< \brief (PWM) PWM Comparison 5 Value Update Register */ +#define REG_PWM_CMPM5 (*(RwReg*)0x40020188U) /**< \brief (PWM) PWM Comparison 5 Mode Register */ +#define REG_PWM_CMPMUPD5 (*(WoReg*)0x4002018CU) /**< \brief (PWM) PWM Comparison 5 Mode Update Register */ +#define REG_PWM_CMPV6 (*(RwReg*)0x40020190U) /**< \brief (PWM) PWM Comparison 6 Value Register */ +#define REG_PWM_CMPVUPD6 (*(WoReg*)0x40020194U) /**< \brief (PWM) PWM Comparison 6 Value Update Register */ +#define REG_PWM_CMPM6 (*(RwReg*)0x40020198U) /**< \brief (PWM) PWM Comparison 6 Mode Register */ +#define REG_PWM_CMPMUPD6 (*(WoReg*)0x4002019CU) /**< \brief (PWM) PWM Comparison 6 Mode Update Register */ +#define REG_PWM_CMPV7 (*(RwReg*)0x400201A0U) /**< \brief (PWM) PWM Comparison 7 Value Register */ +#define REG_PWM_CMPVUPD7 (*(WoReg*)0x400201A4U) /**< \brief (PWM) PWM Comparison 7 Value Update Register */ +#define REG_PWM_CMPM7 (*(RwReg*)0x400201A8U) /**< \brief (PWM) PWM Comparison 7 Mode Register */ +#define REG_PWM_CMPMUPD7 (*(WoReg*)0x400201ACU) /**< \brief (PWM) PWM Comparison 7 Mode Update Register */ +#define REG_PWM_CMR0 (*(RwReg*)0x40020200U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 0) */ +#define REG_PWM_CDTY0 (*(RwReg*)0x40020204U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 0) */ +#define REG_PWM_CDTYUPD0 (*(WoReg*)0x40020208U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 0) */ +#define REG_PWM_CPRD0 (*(RwReg*)0x4002020CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 0) */ +#define REG_PWM_CPRDUPD0 (*(WoReg*)0x40020210U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 0) */ +#define REG_PWM_CCNT0 (*(RoReg*)0x40020214U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 0) */ +#define REG_PWM_DT0 (*(RwReg*)0x40020218U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 0) */ +#define REG_PWM_DTUPD0 (*(WoReg*)0x4002021CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 0) */ +#define REG_PWM_CMR1 (*(RwReg*)0x40020220U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 1) */ +#define REG_PWM_CDTY1 (*(RwReg*)0x40020224U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 1) */ +#define REG_PWM_CDTYUPD1 (*(WoReg*)0x40020228U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 1) */ +#define REG_PWM_CPRD1 (*(RwReg*)0x4002022CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 1) */ +#define REG_PWM_CPRDUPD1 (*(WoReg*)0x40020230U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 1) */ +#define REG_PWM_CCNT1 (*(RoReg*)0x40020234U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 1) */ +#define REG_PWM_DT1 (*(RwReg*)0x40020238U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 1) */ +#define REG_PWM_DTUPD1 (*(WoReg*)0x4002023CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 1) */ +#define REG_PWM_CMR2 (*(RwReg*)0x40020240U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 2) */ +#define REG_PWM_CDTY2 (*(RwReg*)0x40020244U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 2) */ +#define REG_PWM_CDTYUPD2 (*(WoReg*)0x40020248U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 2) */ +#define REG_PWM_CPRD2 (*(RwReg*)0x4002024CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 2) */ +#define REG_PWM_CPRDUPD2 (*(WoReg*)0x40020250U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 2) */ +#define REG_PWM_CCNT2 (*(RoReg*)0x40020254U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 2) */ +#define REG_PWM_DT2 (*(RwReg*)0x40020258U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 2) */ +#define REG_PWM_DTUPD2 (*(WoReg*)0x4002025CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 2) */ +#define REG_PWM_CMR3 (*(RwReg*)0x40020260U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 3) */ +#define REG_PWM_CDTY3 (*(RwReg*)0x40020264U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 3) */ +#define REG_PWM_CDTYUPD3 (*(WoReg*)0x40020268U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 3) */ +#define REG_PWM_CPRD3 (*(RwReg*)0x4002026CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 3) */ +#define REG_PWM_CPRDUPD3 (*(WoReg*)0x40020270U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 3) */ +#define REG_PWM_CCNT3 (*(RoReg*)0x40020274U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 3) */ +#define REG_PWM_DT3 (*(RwReg*)0x40020278U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 3) */ +#define REG_PWM_DTUPD3 (*(WoReg*)0x4002027CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 3) */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_PWM_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_rstc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_rstc.h new file mode 100644 index 000000000..a4460f498 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_rstc.h @@ -0,0 +1,44 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_RSTC_INSTANCE_ +#define _SAM3S8_RSTC_INSTANCE_ + +/* ========== Register definition for RSTC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_RSTC_CR (0x400E1400U) /**< \brief (RSTC) Control Register */ +#define REG_RSTC_SR (0x400E1404U) /**< \brief (RSTC) Status Register */ +#define REG_RSTC_MR (0x400E1408U) /**< \brief (RSTC) Mode Register */ +#else +#define REG_RSTC_CR (*(WoReg*)0x400E1400U) /**< \brief (RSTC) Control Register */ +#define REG_RSTC_SR (*(RoReg*)0x400E1404U) /**< \brief (RSTC) Status Register */ +#define REG_RSTC_MR (*(RwReg*)0x400E1408U) /**< \brief (RSTC) Mode Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_RSTC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_rtc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_rtc.h new file mode 100644 index 000000000..1579d422c --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_rtc.h @@ -0,0 +1,62 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_RTC_INSTANCE_ +#define _SAM3S8_RTC_INSTANCE_ + +/* ========== Register definition for RTC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_RTC_CR (0x400E1460U) /**< \brief (RTC) Control Register */ +#define REG_RTC_MR (0x400E1464U) /**< \brief (RTC) Mode Register */ +#define REG_RTC_TIMR (0x400E1468U) /**< \brief (RTC) Time Register */ +#define REG_RTC_CALR (0x400E146CU) /**< \brief (RTC) Calendar Register */ +#define REG_RTC_TIMALR (0x400E1470U) /**< \brief (RTC) Time Alarm Register */ +#define REG_RTC_CALALR (0x400E1474U) /**< \brief (RTC) Calendar Alarm Register */ +#define REG_RTC_SR (0x400E1478U) /**< \brief (RTC) Status Register */ +#define REG_RTC_SCCR (0x400E147CU) /**< \brief (RTC) Status Clear Command Register */ +#define REG_RTC_IER (0x400E1480U) /**< \brief (RTC) Interrupt Enable Register */ +#define REG_RTC_IDR (0x400E1484U) /**< \brief (RTC) Interrupt Disable Register */ +#define REG_RTC_IMR (0x400E1488U) /**< \brief (RTC) Interrupt Mask Register */ +#define REG_RTC_VER (0x400E148CU) /**< \brief (RTC) Valid Entry Register */ +#else +#define REG_RTC_CR (*(RwReg*)0x400E1460U) /**< \brief (RTC) Control Register */ +#define REG_RTC_MR (*(RwReg*)0x400E1464U) /**< \brief (RTC) Mode Register */ +#define REG_RTC_TIMR (*(RwReg*)0x400E1468U) /**< \brief (RTC) Time Register */ +#define REG_RTC_CALR (*(RwReg*)0x400E146CU) /**< \brief (RTC) Calendar Register */ +#define REG_RTC_TIMALR (*(RwReg*)0x400E1470U) /**< \brief (RTC) Time Alarm Register */ +#define REG_RTC_CALALR (*(RwReg*)0x400E1474U) /**< \brief (RTC) Calendar Alarm Register */ +#define REG_RTC_SR (*(RoReg*)0x400E1478U) /**< \brief (RTC) Status Register */ +#define REG_RTC_SCCR (*(WoReg*)0x400E147CU) /**< \brief (RTC) Status Clear Command Register */ +#define REG_RTC_IER (*(WoReg*)0x400E1480U) /**< \brief (RTC) Interrupt Enable Register */ +#define REG_RTC_IDR (*(WoReg*)0x400E1484U) /**< \brief (RTC) Interrupt Disable Register */ +#define REG_RTC_IMR (*(RoReg*)0x400E1488U) /**< \brief (RTC) Interrupt Mask Register */ +#define REG_RTC_VER (*(RoReg*)0x400E148CU) /**< \brief (RTC) Valid Entry Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_RTC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_rtt.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_rtt.h new file mode 100644 index 000000000..47fc384be --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_rtt.h @@ -0,0 +1,46 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_RTT_INSTANCE_ +#define _SAM3S8_RTT_INSTANCE_ + +/* ========== Register definition for RTT peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_RTT_MR (0x400E1430U) /**< \brief (RTT) Mode Register */ +#define REG_RTT_AR (0x400E1434U) /**< \brief (RTT) Alarm Register */ +#define REG_RTT_VR (0x400E1438U) /**< \brief (RTT) Value Register */ +#define REG_RTT_SR (0x400E143CU) /**< \brief (RTT) Status Register */ +#else +#define REG_RTT_MR (*(RwReg*)0x400E1430U) /**< \brief (RTT) Mode Register */ +#define REG_RTT_AR (*(RwReg*)0x400E1434U) /**< \brief (RTT) Alarm Register */ +#define REG_RTT_VR (*(RoReg*)0x400E1438U) /**< \brief (RTT) Value Register */ +#define REG_RTT_SR (*(RoReg*)0x400E143CU) /**< \brief (RTT) Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_RTT_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_smc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_smc.h new file mode 100644 index 000000000..43da6421e --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_smc.h @@ -0,0 +1,88 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_SMC_INSTANCE_ +#define _SAM3S8_SMC_INSTANCE_ + +/* ========== Register definition for SMC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SMC_SETUP0 (0x400E0000U) /**< \brief (SMC) SMC Setup Register (CS_number = 0) */ +#define REG_SMC_PULSE0 (0x400E0004U) /**< \brief (SMC) SMC Pulse Register (CS_number = 0) */ +#define REG_SMC_CYCLE0 (0x400E0008U) /**< \brief (SMC) SMC Cycle Register (CS_number = 0) */ +#define REG_SMC_MODE0 (0x400E000CU) /**< \brief (SMC) SMC Mode Register (CS_number = 0) */ +#define REG_SMC_SETUP1 (0x400E0010U) /**< \brief (SMC) SMC Setup Register (CS_number = 1) */ +#define REG_SMC_PULSE1 (0x400E0014U) /**< \brief (SMC) SMC Pulse Register (CS_number = 1) */ +#define REG_SMC_CYCLE1 (0x400E0018U) /**< \brief (SMC) SMC Cycle Register (CS_number = 1) */ +#define REG_SMC_MODE1 (0x400E001CU) /**< \brief (SMC) SMC Mode Register (CS_number = 1) */ +#define REG_SMC_SETUP2 (0x400E0020U) /**< \brief (SMC) SMC Setup Register (CS_number = 2) */ +#define REG_SMC_PULSE2 (0x400E0024U) /**< \brief (SMC) SMC Pulse Register (CS_number = 2) */ +#define REG_SMC_CYCLE2 (0x400E0028U) /**< \brief (SMC) SMC Cycle Register (CS_number = 2) */ +#define REG_SMC_MODE2 (0x400E002CU) /**< \brief (SMC) SMC Mode Register (CS_number = 2) */ +#define REG_SMC_SETUP3 (0x400E0030U) /**< \brief (SMC) SMC Setup Register (CS_number = 3) */ +#define REG_SMC_PULSE3 (0x400E0034U) /**< \brief (SMC) SMC Pulse Register (CS_number = 3) */ +#define REG_SMC_CYCLE3 (0x400E0038U) /**< \brief (SMC) SMC Cycle Register (CS_number = 3) */ +#define REG_SMC_MODE3 (0x400E003CU) /**< \brief (SMC) SMC Mode Register (CS_number = 3) */ +#define REG_SMC_SETUP4 (0x400E0040U) /**< \brief (SMC) SMC Setup Register (CS_number = 4) */ +#define REG_SMC_PULSE4 (0x400E0044U) /**< \brief (SMC) SMC Pulse Register (CS_number = 4) */ +#define REG_SMC_CYCLE4 (0x400E0048U) /**< \brief (SMC) SMC Cycle Register (CS_number = 4) */ +#define REG_SMC_MODE4 (0x400E004CU) /**< \brief (SMC) SMC Mode Register (CS_number = 4) */ +#define REG_SMC_OCMS (0x400E0080U) /**< \brief (SMC) SMC OCMS MODE Register */ +#define REG_SMC_KEY1 (0x400E0084U) /**< \brief (SMC) SMC OCMS KEY1 Register */ +#define REG_SMC_KEY2 (0x400E0088U) /**< \brief (SMC) SMC OCMS KEY2 Register */ +#define REG_SMC_WPMR (0x400E00E4U) /**< \brief (SMC) SMC Write Protect Mode Register */ +#define REG_SMC_WPSR (0x400E00E8U) /**< \brief (SMC) SMC Write Protect Status Register */ +#else +#define REG_SMC_SETUP0 (*(RwReg*)0x400E0000U) /**< \brief (SMC) SMC Setup Register (CS_number = 0) */ +#define REG_SMC_PULSE0 (*(RwReg*)0x400E0004U) /**< \brief (SMC) SMC Pulse Register (CS_number = 0) */ +#define REG_SMC_CYCLE0 (*(RwReg*)0x400E0008U) /**< \brief (SMC) SMC Cycle Register (CS_number = 0) */ +#define REG_SMC_MODE0 (*(RwReg*)0x400E000CU) /**< \brief (SMC) SMC Mode Register (CS_number = 0) */ +#define REG_SMC_SETUP1 (*(RwReg*)0x400E0010U) /**< \brief (SMC) SMC Setup Register (CS_number = 1) */ +#define REG_SMC_PULSE1 (*(RwReg*)0x400E0014U) /**< \brief (SMC) SMC Pulse Register (CS_number = 1) */ +#define REG_SMC_CYCLE1 (*(RwReg*)0x400E0018U) /**< \brief (SMC) SMC Cycle Register (CS_number = 1) */ +#define REG_SMC_MODE1 (*(RwReg*)0x400E001CU) /**< \brief (SMC) SMC Mode Register (CS_number = 1) */ +#define REG_SMC_SETUP2 (*(RwReg*)0x400E0020U) /**< \brief (SMC) SMC Setup Register (CS_number = 2) */ +#define REG_SMC_PULSE2 (*(RwReg*)0x400E0024U) /**< \brief (SMC) SMC Pulse Register (CS_number = 2) */ +#define REG_SMC_CYCLE2 (*(RwReg*)0x400E0028U) /**< \brief (SMC) SMC Cycle Register (CS_number = 2) */ +#define REG_SMC_MODE2 (*(RwReg*)0x400E002CU) /**< \brief (SMC) SMC Mode Register (CS_number = 2) */ +#define REG_SMC_SETUP3 (*(RwReg*)0x400E0030U) /**< \brief (SMC) SMC Setup Register (CS_number = 3) */ +#define REG_SMC_PULSE3 (*(RwReg*)0x400E0034U) /**< \brief (SMC) SMC Pulse Register (CS_number = 3) */ +#define REG_SMC_CYCLE3 (*(RwReg*)0x400E0038U) /**< \brief (SMC) SMC Cycle Register (CS_number = 3) */ +#define REG_SMC_MODE3 (*(RwReg*)0x400E003CU) /**< \brief (SMC) SMC Mode Register (CS_number = 3) */ +#define REG_SMC_SETUP4 (*(RwReg*)0x400E0040U) /**< \brief (SMC) SMC Setup Register (CS_number = 4) */ +#define REG_SMC_PULSE4 (*(RwReg*)0x400E0044U) /**< \brief (SMC) SMC Pulse Register (CS_number = 4) */ +#define REG_SMC_CYCLE4 (*(RwReg*)0x400E0048U) /**< \brief (SMC) SMC Cycle Register (CS_number = 4) */ +#define REG_SMC_MODE4 (*(RwReg*)0x400E004CU) /**< \brief (SMC) SMC Mode Register (CS_number = 4) */ +#define REG_SMC_OCMS (*(RwReg*)0x400E0080U) /**< \brief (SMC) SMC OCMS MODE Register */ +#define REG_SMC_KEY1 (*(WoReg*)0x400E0084U) /**< \brief (SMC) SMC OCMS KEY1 Register */ +#define REG_SMC_KEY2 (*(WoReg*)0x400E0088U) /**< \brief (SMC) SMC OCMS KEY2 Register */ +#define REG_SMC_WPMR (*(RwReg*)0x400E00E4U) /**< \brief (SMC) SMC Write Protect Mode Register */ +#define REG_SMC_WPSR (*(RoReg*)0x400E00E8U) /**< \brief (SMC) SMC Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_SMC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_spi.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_spi.h new file mode 100644 index 000000000..f35286dd6 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_spi.h @@ -0,0 +1,80 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_SPI_INSTANCE_ +#define _SAM3S8_SPI_INSTANCE_ + +/* ========== Register definition for SPI peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SPI_CR (0x40008000U) /**< \brief (SPI) Control Register */ +#define REG_SPI_MR (0x40008004U) /**< \brief (SPI) Mode Register */ +#define REG_SPI_RDR (0x40008008U) /**< \brief (SPI) Receive Data Register */ +#define REG_SPI_TDR (0x4000800CU) /**< \brief (SPI) Transmit Data Register */ +#define REG_SPI_SR (0x40008010U) /**< \brief (SPI) Status Register */ +#define REG_SPI_IER (0x40008014U) /**< \brief (SPI) Interrupt Enable Register */ +#define REG_SPI_IDR (0x40008018U) /**< \brief (SPI) Interrupt Disable Register */ +#define REG_SPI_IMR (0x4000801CU) /**< \brief (SPI) Interrupt Mask Register */ +#define REG_SPI_CSR (0x40008030U) /**< \brief (SPI) Chip Select Register */ +#define REG_SPI_WPMR (0x400080E4U) /**< \brief (SPI) Write Protection Control Register */ +#define REG_SPI_WPSR (0x400080E8U) /**< \brief (SPI) Write Protection Status Register */ +#define REG_SPI_RPR (0x40008100U) /**< \brief (SPI) Receive Pointer Register */ +#define REG_SPI_RCR (0x40008104U) /**< \brief (SPI) Receive Counter Register */ +#define REG_SPI_TPR (0x40008108U) /**< \brief (SPI) Transmit Pointer Register */ +#define REG_SPI_TCR (0x4000810CU) /**< \brief (SPI) Transmit Counter Register */ +#define REG_SPI_RNPR (0x40008110U) /**< \brief (SPI) Receive Next Pointer Register */ +#define REG_SPI_RNCR (0x40008114U) /**< \brief (SPI) Receive Next Counter Register */ +#define REG_SPI_TNPR (0x40008118U) /**< \brief (SPI) Transmit Next Pointer Register */ +#define REG_SPI_TNCR (0x4000811CU) /**< \brief (SPI) Transmit Next Counter Register */ +#define REG_SPI_PTCR (0x40008120U) /**< \brief (SPI) Transfer Control Register */ +#define REG_SPI_PTSR (0x40008124U) /**< \brief (SPI) Transfer Status Register */ +#else +#define REG_SPI_CR (*(WoReg*)0x40008000U) /**< \brief (SPI) Control Register */ +#define REG_SPI_MR (*(RwReg*)0x40008004U) /**< \brief (SPI) Mode Register */ +#define REG_SPI_RDR (*(RoReg*)0x40008008U) /**< \brief (SPI) Receive Data Register */ +#define REG_SPI_TDR (*(WoReg*)0x4000800CU) /**< \brief (SPI) Transmit Data Register */ +#define REG_SPI_SR (*(RoReg*)0x40008010U) /**< \brief (SPI) Status Register */ +#define REG_SPI_IER (*(WoReg*)0x40008014U) /**< \brief (SPI) Interrupt Enable Register */ +#define REG_SPI_IDR (*(WoReg*)0x40008018U) /**< \brief (SPI) Interrupt Disable Register */ +#define REG_SPI_IMR (*(RoReg*)0x4000801CU) /**< \brief (SPI) Interrupt Mask Register */ +#define REG_SPI_CSR (*(RwReg*)0x40008030U) /**< \brief (SPI) Chip Select Register */ +#define REG_SPI_WPMR (*(RwReg*)0x400080E4U) /**< \brief (SPI) Write Protection Control Register */ +#define REG_SPI_WPSR (*(RoReg*)0x400080E8U) /**< \brief (SPI) Write Protection Status Register */ +#define REG_SPI_RPR (*(RwReg*)0x40008100U) /**< \brief (SPI) Receive Pointer Register */ +#define REG_SPI_RCR (*(RwReg*)0x40008104U) /**< \brief (SPI) Receive Counter Register */ +#define REG_SPI_TPR (*(RwReg*)0x40008108U) /**< \brief (SPI) Transmit Pointer Register */ +#define REG_SPI_TCR (*(RwReg*)0x4000810CU) /**< \brief (SPI) Transmit Counter Register */ +#define REG_SPI_RNPR (*(RwReg*)0x40008110U) /**< \brief (SPI) Receive Next Pointer Register */ +#define REG_SPI_RNCR (*(RwReg*)0x40008114U) /**< \brief (SPI) Receive Next Counter Register */ +#define REG_SPI_TNPR (*(RwReg*)0x40008118U) /**< \brief (SPI) Transmit Next Pointer Register */ +#define REG_SPI_TNCR (*(RwReg*)0x4000811CU) /**< \brief (SPI) Transmit Next Counter Register */ +#define REG_SPI_PTCR (*(WoReg*)0x40008120U) /**< \brief (SPI) Transfer Control Register */ +#define REG_SPI_PTSR (*(RoReg*)0x40008124U) /**< \brief (SPI) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_SPI_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_ssc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_ssc.h new file mode 100644 index 000000000..c5f9f00a0 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_ssc.h @@ -0,0 +1,94 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_SSC_INSTANCE_ +#define _SAM3S8_SSC_INSTANCE_ + +/* ========== Register definition for SSC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SSC_CR (0x40004000U) /**< \brief (SSC) Control Register */ +#define REG_SSC_CMR (0x40004004U) /**< \brief (SSC) Clock Mode Register */ +#define REG_SSC_RCMR (0x40004010U) /**< \brief (SSC) Receive Clock Mode Register */ +#define REG_SSC_RFMR (0x40004014U) /**< \brief (SSC) Receive Frame Mode Register */ +#define REG_SSC_TCMR (0x40004018U) /**< \brief (SSC) Transmit Clock Mode Register */ +#define REG_SSC_TFMR (0x4000401CU) /**< \brief (SSC) Transmit Frame Mode Register */ +#define REG_SSC_RHR (0x40004020U) /**< \brief (SSC) Receive Holding Register */ +#define REG_SSC_THR (0x40004024U) /**< \brief (SSC) Transmit Holding Register */ +#define REG_SSC_RSHR (0x40004030U) /**< \brief (SSC) Receive Sync. Holding Register */ +#define REG_SSC_TSHR (0x40004034U) /**< \brief (SSC) Transmit Sync. Holding Register */ +#define REG_SSC_RC0R (0x40004038U) /**< \brief (SSC) Receive Compare 0 Register */ +#define REG_SSC_RC1R (0x4000403CU) /**< \brief (SSC) Receive Compare 1 Register */ +#define REG_SSC_SR (0x40004040U) /**< \brief (SSC) Status Register */ +#define REG_SSC_IER (0x40004044U) /**< \brief (SSC) Interrupt Enable Register */ +#define REG_SSC_IDR (0x40004048U) /**< \brief (SSC) Interrupt Disable Register */ +#define REG_SSC_IMR (0x4000404CU) /**< \brief (SSC) Interrupt Mask Register */ +#define REG_SSC_WPMR (0x400040E4U) /**< \brief (SSC) Write Protect Mode Register */ +#define REG_SSC_WPSR (0x400040E8U) /**< \brief (SSC) Write Protect Status Register */ +#define REG_SSC_RPR (0x40004100U) /**< \brief (SSC) Receive Pointer Register */ +#define REG_SSC_RCR (0x40004104U) /**< \brief (SSC) Receive Counter Register */ +#define REG_SSC_TPR (0x40004108U) /**< \brief (SSC) Transmit Pointer Register */ +#define REG_SSC_TCR (0x4000410CU) /**< \brief (SSC) Transmit Counter Register */ +#define REG_SSC_RNPR (0x40004110U) /**< \brief (SSC) Receive Next Pointer Register */ +#define REG_SSC_RNCR (0x40004114U) /**< \brief (SSC) Receive Next Counter Register */ +#define REG_SSC_TNPR (0x40004118U) /**< \brief (SSC) Transmit Next Pointer Register */ +#define REG_SSC_TNCR (0x4000411CU) /**< \brief (SSC) Transmit Next Counter Register */ +#define REG_SSC_PTCR (0x40004120U) /**< \brief (SSC) Transfer Control Register */ +#define REG_SSC_PTSR (0x40004124U) /**< \brief (SSC) Transfer Status Register */ +#else +#define REG_SSC_CR (*(WoReg*)0x40004000U) /**< \brief (SSC) Control Register */ +#define REG_SSC_CMR (*(RwReg*)0x40004004U) /**< \brief (SSC) Clock Mode Register */ +#define REG_SSC_RCMR (*(RwReg*)0x40004010U) /**< \brief (SSC) Receive Clock Mode Register */ +#define REG_SSC_RFMR (*(RwReg*)0x40004014U) /**< \brief (SSC) Receive Frame Mode Register */ +#define REG_SSC_TCMR (*(RwReg*)0x40004018U) /**< \brief (SSC) Transmit Clock Mode Register */ +#define REG_SSC_TFMR (*(RwReg*)0x4000401CU) /**< \brief (SSC) Transmit Frame Mode Register */ +#define REG_SSC_RHR (*(RoReg*)0x40004020U) /**< \brief (SSC) Receive Holding Register */ +#define REG_SSC_THR (*(WoReg*)0x40004024U) /**< \brief (SSC) Transmit Holding Register */ +#define REG_SSC_RSHR (*(RoReg*)0x40004030U) /**< \brief (SSC) Receive Sync. Holding Register */ +#define REG_SSC_TSHR (*(RwReg*)0x40004034U) /**< \brief (SSC) Transmit Sync. Holding Register */ +#define REG_SSC_RC0R (*(RwReg*)0x40004038U) /**< \brief (SSC) Receive Compare 0 Register */ +#define REG_SSC_RC1R (*(RwReg*)0x4000403CU) /**< \brief (SSC) Receive Compare 1 Register */ +#define REG_SSC_SR (*(RoReg*)0x40004040U) /**< \brief (SSC) Status Register */ +#define REG_SSC_IER (*(WoReg*)0x40004044U) /**< \brief (SSC) Interrupt Enable Register */ +#define REG_SSC_IDR (*(WoReg*)0x40004048U) /**< \brief (SSC) Interrupt Disable Register */ +#define REG_SSC_IMR (*(RoReg*)0x4000404CU) /**< \brief (SSC) Interrupt Mask Register */ +#define REG_SSC_WPMR (*(RwReg*)0x400040E4U) /**< \brief (SSC) Write Protect Mode Register */ +#define REG_SSC_WPSR (*(RoReg*)0x400040E8U) /**< \brief (SSC) Write Protect Status Register */ +#define REG_SSC_RPR (*(RwReg*)0x40004100U) /**< \brief (SSC) Receive Pointer Register */ +#define REG_SSC_RCR (*(RwReg*)0x40004104U) /**< \brief (SSC) Receive Counter Register */ +#define REG_SSC_TPR (*(RwReg*)0x40004108U) /**< \brief (SSC) Transmit Pointer Register */ +#define REG_SSC_TCR (*(RwReg*)0x4000410CU) /**< \brief (SSC) Transmit Counter Register */ +#define REG_SSC_RNPR (*(RwReg*)0x40004110U) /**< \brief (SSC) Receive Next Pointer Register */ +#define REG_SSC_RNCR (*(RwReg*)0x40004114U) /**< \brief (SSC) Receive Next Counter Register */ +#define REG_SSC_TNPR (*(RwReg*)0x40004118U) /**< \brief (SSC) Transmit Next Pointer Register */ +#define REG_SSC_TNCR (*(RwReg*)0x4000411CU) /**< \brief (SSC) Transmit Next Counter Register */ +#define REG_SSC_PTCR (*(WoReg*)0x40004120U) /**< \brief (SSC) Transfer Control Register */ +#define REG_SSC_PTSR (*(RoReg*)0x40004124U) /**< \brief (SSC) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_SSC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_supc.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_supc.h new file mode 100644 index 000000000..29dd98385 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_supc.h @@ -0,0 +1,50 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_SUPC_INSTANCE_ +#define _SAM3S8_SUPC_INSTANCE_ + +/* ========== Register definition for SUPC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SUPC_CR (0x400E1410U) /**< \brief (SUPC) Supply Controller Control Register */ +#define REG_SUPC_SMMR (0x400E1414U) /**< \brief (SUPC) Supply Controller Supply Monitor Mode Register */ +#define REG_SUPC_MR (0x400E1418U) /**< \brief (SUPC) Supply Controller Mode Register */ +#define REG_SUPC_WUMR (0x400E141CU) /**< \brief (SUPC) Supply Controller Wake Up Mode Register */ +#define REG_SUPC_WUIR (0x400E1420U) /**< \brief (SUPC) Supply Controller Wake Up Inputs Register */ +#define REG_SUPC_SR (0x400E1424U) /**< \brief (SUPC) Supply Controller Status Register */ +#else +#define REG_SUPC_CR (*(WoReg*)0x400E1410U) /**< \brief (SUPC) Supply Controller Control Register */ +#define REG_SUPC_SMMR (*(RwReg*)0x400E1414U) /**< \brief (SUPC) Supply Controller Supply Monitor Mode Register */ +#define REG_SUPC_MR (*(RwReg*)0x400E1418U) /**< \brief (SUPC) Supply Controller Mode Register */ +#define REG_SUPC_WUMR (*(RwReg*)0x400E141CU) /**< \brief (SUPC) Supply Controller Wake Up Mode Register */ +#define REG_SUPC_WUIR (*(RwReg*)0x400E1420U) /**< \brief (SUPC) Supply Controller Wake Up Inputs Register */ +#define REG_SUPC_SR (*(RoReg*)0x400E1424U) /**< \brief (SUPC) Supply Controller Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_SUPC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_tc0.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_tc0.h new file mode 100644 index 000000000..44c6787d1 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_tc0.h @@ -0,0 +1,120 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_TC0_INSTANCE_ +#define _SAM3S8_TC0_INSTANCE_ + +/* ========== Register definition for TC0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TC0_CCR0 (0x40010000U) /**< \brief (TC0) Channel Control Register (channel = 0) */ +#define REG_TC0_CMR0 (0x40010004U) /**< \brief (TC0) Channel Mode Register (channel = 0) */ +#define REG_TC0_SMMR0 (0x40010008U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC0_CV0 (0x40010010U) /**< \brief (TC0) Counter Value (channel = 0) */ +#define REG_TC0_RA0 (0x40010014U) /**< \brief (TC0) Register A (channel = 0) */ +#define REG_TC0_RB0 (0x40010018U) /**< \brief (TC0) Register B (channel = 0) */ +#define REG_TC0_RC0 (0x4001001CU) /**< \brief (TC0) Register C (channel = 0) */ +#define REG_TC0_SR0 (0x40010020U) /**< \brief (TC0) Status Register (channel = 0) */ +#define REG_TC0_IER0 (0x40010024U) /**< \brief (TC0) Interrupt Enable Register (channel = 0) */ +#define REG_TC0_IDR0 (0x40010028U) /**< \brief (TC0) Interrupt Disable Register (channel = 0) */ +#define REG_TC0_IMR0 (0x4001002CU) /**< \brief (TC0) Interrupt Mask Register (channel = 0) */ +#define REG_TC0_CCR1 (0x40010040U) /**< \brief (TC0) Channel Control Register (channel = 1) */ +#define REG_TC0_CMR1 (0x40010044U) /**< \brief (TC0) Channel Mode Register (channel = 1) */ +#define REG_TC0_SMMR1 (0x40010048U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC0_CV1 (0x40010050U) /**< \brief (TC0) Counter Value (channel = 1) */ +#define REG_TC0_RA1 (0x40010054U) /**< \brief (TC0) Register A (channel = 1) */ +#define REG_TC0_RB1 (0x40010058U) /**< \brief (TC0) Register B (channel = 1) */ +#define REG_TC0_RC1 (0x4001005CU) /**< \brief (TC0) Register C (channel = 1) */ +#define REG_TC0_SR1 (0x40010060U) /**< \brief (TC0) Status Register (channel = 1) */ +#define REG_TC0_IER1 (0x40010064U) /**< \brief (TC0) Interrupt Enable Register (channel = 1) */ +#define REG_TC0_IDR1 (0x40010068U) /**< \brief (TC0) Interrupt Disable Register (channel = 1) */ +#define REG_TC0_IMR1 (0x4001006CU) /**< \brief (TC0) Interrupt Mask Register (channel = 1) */ +#define REG_TC0_CCR2 (0x40010080U) /**< \brief (TC0) Channel Control Register (channel = 2) */ +#define REG_TC0_CMR2 (0x40010084U) /**< \brief (TC0) Channel Mode Register (channel = 2) */ +#define REG_TC0_SMMR2 (0x40010088U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC0_CV2 (0x40010090U) /**< \brief (TC0) Counter Value (channel = 2) */ +#define REG_TC0_RA2 (0x40010094U) /**< \brief (TC0) Register A (channel = 2) */ +#define REG_TC0_RB2 (0x40010098U) /**< \brief (TC0) Register B (channel = 2) */ +#define REG_TC0_RC2 (0x4001009CU) /**< \brief (TC0) Register C (channel = 2) */ +#define REG_TC0_SR2 (0x400100A0U) /**< \brief (TC0) Status Register (channel = 2) */ +#define REG_TC0_IER2 (0x400100A4U) /**< \brief (TC0) Interrupt Enable Register (channel = 2) */ +#define REG_TC0_IDR2 (0x400100A8U) /**< \brief (TC0) Interrupt Disable Register (channel = 2) */ +#define REG_TC0_IMR2 (0x400100ACU) /**< \brief (TC0) Interrupt Mask Register (channel = 2) */ +#define REG_TC0_BCR (0x400100C0U) /**< \brief (TC0) Block Control Register */ +#define REG_TC0_BMR (0x400100C4U) /**< \brief (TC0) Block Mode Register */ +#define REG_TC0_QIER (0x400100C8U) /**< \brief (TC0) QDEC Interrupt Enable Register */ +#define REG_TC0_QIDR (0x400100CCU) /**< \brief (TC0) QDEC Interrupt Disable Register */ +#define REG_TC0_QIMR (0x400100D0U) /**< \brief (TC0) QDEC Interrupt Mask Register */ +#define REG_TC0_QISR (0x400100D4U) /**< \brief (TC0) QDEC Interrupt Status Register */ +#define REG_TC0_FMR (0x400100D8U) /**< \brief (TC0) Fault Mode Register */ +#define REG_TC0_WPMR (0x400100E4U) /**< \brief (TC0) Write Protect Mode Register */ +#else +#define REG_TC0_CCR0 (*(WoReg*)0x40010000U) /**< \brief (TC0) Channel Control Register (channel = 0) */ +#define REG_TC0_CMR0 (*(RwReg*)0x40010004U) /**< \brief (TC0) Channel Mode Register (channel = 0) */ +#define REG_TC0_SMMR0 (*(RwReg*)0x40010008U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC0_CV0 (*(RoReg*)0x40010010U) /**< \brief (TC0) Counter Value (channel = 0) */ +#define REG_TC0_RA0 (*(RwReg*)0x40010014U) /**< \brief (TC0) Register A (channel = 0) */ +#define REG_TC0_RB0 (*(RwReg*)0x40010018U) /**< \brief (TC0) Register B (channel = 0) */ +#define REG_TC0_RC0 (*(RwReg*)0x4001001CU) /**< \brief (TC0) Register C (channel = 0) */ +#define REG_TC0_SR0 (*(RoReg*)0x40010020U) /**< \brief (TC0) Status Register (channel = 0) */ +#define REG_TC0_IER0 (*(WoReg*)0x40010024U) /**< \brief (TC0) Interrupt Enable Register (channel = 0) */ +#define REG_TC0_IDR0 (*(WoReg*)0x40010028U) /**< \brief (TC0) Interrupt Disable Register (channel = 0) */ +#define REG_TC0_IMR0 (*(RoReg*)0x4001002CU) /**< \brief (TC0) Interrupt Mask Register (channel = 0) */ +#define REG_TC0_CCR1 (*(WoReg*)0x40010040U) /**< \brief (TC0) Channel Control Register (channel = 1) */ +#define REG_TC0_CMR1 (*(RwReg*)0x40010044U) /**< \brief (TC0) Channel Mode Register (channel = 1) */ +#define REG_TC0_SMMR1 (*(RwReg*)0x40010048U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC0_CV1 (*(RoReg*)0x40010050U) /**< \brief (TC0) Counter Value (channel = 1) */ +#define REG_TC0_RA1 (*(RwReg*)0x40010054U) /**< \brief (TC0) Register A (channel = 1) */ +#define REG_TC0_RB1 (*(RwReg*)0x40010058U) /**< \brief (TC0) Register B (channel = 1) */ +#define REG_TC0_RC1 (*(RwReg*)0x4001005CU) /**< \brief (TC0) Register C (channel = 1) */ +#define REG_TC0_SR1 (*(RoReg*)0x40010060U) /**< \brief (TC0) Status Register (channel = 1) */ +#define REG_TC0_IER1 (*(WoReg*)0x40010064U) /**< \brief (TC0) Interrupt Enable Register (channel = 1) */ +#define REG_TC0_IDR1 (*(WoReg*)0x40010068U) /**< \brief (TC0) Interrupt Disable Register (channel = 1) */ +#define REG_TC0_IMR1 (*(RoReg*)0x4001006CU) /**< \brief (TC0) Interrupt Mask Register (channel = 1) */ +#define REG_TC0_CCR2 (*(WoReg*)0x40010080U) /**< \brief (TC0) Channel Control Register (channel = 2) */ +#define REG_TC0_CMR2 (*(RwReg*)0x40010084U) /**< \brief (TC0) Channel Mode Register (channel = 2) */ +#define REG_TC0_SMMR2 (*(RwReg*)0x40010088U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC0_CV2 (*(RoReg*)0x40010090U) /**< \brief (TC0) Counter Value (channel = 2) */ +#define REG_TC0_RA2 (*(RwReg*)0x40010094U) /**< \brief (TC0) Register A (channel = 2) */ +#define REG_TC0_RB2 (*(RwReg*)0x40010098U) /**< \brief (TC0) Register B (channel = 2) */ +#define REG_TC0_RC2 (*(RwReg*)0x4001009CU) /**< \brief (TC0) Register C (channel = 2) */ +#define REG_TC0_SR2 (*(RoReg*)0x400100A0U) /**< \brief (TC0) Status Register (channel = 2) */ +#define REG_TC0_IER2 (*(WoReg*)0x400100A4U) /**< \brief (TC0) Interrupt Enable Register (channel = 2) */ +#define REG_TC0_IDR2 (*(WoReg*)0x400100A8U) /**< \brief (TC0) Interrupt Disable Register (channel = 2) */ +#define REG_TC0_IMR2 (*(RoReg*)0x400100ACU) /**< \brief (TC0) Interrupt Mask Register (channel = 2) */ +#define REG_TC0_BCR (*(WoReg*)0x400100C0U) /**< \brief (TC0) Block Control Register */ +#define REG_TC0_BMR (*(RwReg*)0x400100C4U) /**< \brief (TC0) Block Mode Register */ +#define REG_TC0_QIER (*(WoReg*)0x400100C8U) /**< \brief (TC0) QDEC Interrupt Enable Register */ +#define REG_TC0_QIDR (*(WoReg*)0x400100CCU) /**< \brief (TC0) QDEC Interrupt Disable Register */ +#define REG_TC0_QIMR (*(RoReg*)0x400100D0U) /**< \brief (TC0) QDEC Interrupt Mask Register */ +#define REG_TC0_QISR (*(RoReg*)0x400100D4U) /**< \brief (TC0) QDEC Interrupt Status Register */ +#define REG_TC0_FMR (*(RwReg*)0x400100D8U) /**< \brief (TC0) Fault Mode Register */ +#define REG_TC0_WPMR (*(RwReg*)0x400100E4U) /**< \brief (TC0) Write Protect Mode Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_TC0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_tc1.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_tc1.h new file mode 100644 index 000000000..1cda78bef --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_tc1.h @@ -0,0 +1,120 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_TC1_INSTANCE_ +#define _SAM3S8_TC1_INSTANCE_ + +/* ========== Register definition for TC1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TC1_CCR0 (0x40014000U) /**< \brief (TC1) Channel Control Register (channel = 0) */ +#define REG_TC1_CMR0 (0x40014004U) /**< \brief (TC1) Channel Mode Register (channel = 0) */ +#define REG_TC1_SMMR0 (0x40014008U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC1_CV0 (0x40014010U) /**< \brief (TC1) Counter Value (channel = 0) */ +#define REG_TC1_RA0 (0x40014014U) /**< \brief (TC1) Register A (channel = 0) */ +#define REG_TC1_RB0 (0x40014018U) /**< \brief (TC1) Register B (channel = 0) */ +#define REG_TC1_RC0 (0x4001401CU) /**< \brief (TC1) Register C (channel = 0) */ +#define REG_TC1_SR0 (0x40014020U) /**< \brief (TC1) Status Register (channel = 0) */ +#define REG_TC1_IER0 (0x40014024U) /**< \brief (TC1) Interrupt Enable Register (channel = 0) */ +#define REG_TC1_IDR0 (0x40014028U) /**< \brief (TC1) Interrupt Disable Register (channel = 0) */ +#define REG_TC1_IMR0 (0x4001402CU) /**< \brief (TC1) Interrupt Mask Register (channel = 0) */ +#define REG_TC1_CCR1 (0x40014040U) /**< \brief (TC1) Channel Control Register (channel = 1) */ +#define REG_TC1_CMR1 (0x40014044U) /**< \brief (TC1) Channel Mode Register (channel = 1) */ +#define REG_TC1_SMMR1 (0x40014048U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC1_CV1 (0x40014050U) /**< \brief (TC1) Counter Value (channel = 1) */ +#define REG_TC1_RA1 (0x40014054U) /**< \brief (TC1) Register A (channel = 1) */ +#define REG_TC1_RB1 (0x40014058U) /**< \brief (TC1) Register B (channel = 1) */ +#define REG_TC1_RC1 (0x4001405CU) /**< \brief (TC1) Register C (channel = 1) */ +#define REG_TC1_SR1 (0x40014060U) /**< \brief (TC1) Status Register (channel = 1) */ +#define REG_TC1_IER1 (0x40014064U) /**< \brief (TC1) Interrupt Enable Register (channel = 1) */ +#define REG_TC1_IDR1 (0x40014068U) /**< \brief (TC1) Interrupt Disable Register (channel = 1) */ +#define REG_TC1_IMR1 (0x4001406CU) /**< \brief (TC1) Interrupt Mask Register (channel = 1) */ +#define REG_TC1_CCR2 (0x40014080U) /**< \brief (TC1) Channel Control Register (channel = 2) */ +#define REG_TC1_CMR2 (0x40014084U) /**< \brief (TC1) Channel Mode Register (channel = 2) */ +#define REG_TC1_SMMR2 (0x40014088U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC1_CV2 (0x40014090U) /**< \brief (TC1) Counter Value (channel = 2) */ +#define REG_TC1_RA2 (0x40014094U) /**< \brief (TC1) Register A (channel = 2) */ +#define REG_TC1_RB2 (0x40014098U) /**< \brief (TC1) Register B (channel = 2) */ +#define REG_TC1_RC2 (0x4001409CU) /**< \brief (TC1) Register C (channel = 2) */ +#define REG_TC1_SR2 (0x400140A0U) /**< \brief (TC1) Status Register (channel = 2) */ +#define REG_TC1_IER2 (0x400140A4U) /**< \brief (TC1) Interrupt Enable Register (channel = 2) */ +#define REG_TC1_IDR2 (0x400140A8U) /**< \brief (TC1) Interrupt Disable Register (channel = 2) */ +#define REG_TC1_IMR2 (0x400140ACU) /**< \brief (TC1) Interrupt Mask Register (channel = 2) */ +#define REG_TC1_BCR (0x400140C0U) /**< \brief (TC1) Block Control Register */ +#define REG_TC1_BMR (0x400140C4U) /**< \brief (TC1) Block Mode Register */ +#define REG_TC1_QIER (0x400140C8U) /**< \brief (TC1) QDEC Interrupt Enable Register */ +#define REG_TC1_QIDR (0x400140CCU) /**< \brief (TC1) QDEC Interrupt Disable Register */ +#define REG_TC1_QIMR (0x400140D0U) /**< \brief (TC1) QDEC Interrupt Mask Register */ +#define REG_TC1_QISR (0x400140D4U) /**< \brief (TC1) QDEC Interrupt Status Register */ +#define REG_TC1_FMR (0x400140D8U) /**< \brief (TC1) Fault Mode Register */ +#define REG_TC1_WPMR (0x400140E4U) /**< \brief (TC1) Write Protect Mode Register */ +#else +#define REG_TC1_CCR0 (*(WoReg*)0x40014000U) /**< \brief (TC1) Channel Control Register (channel = 0) */ +#define REG_TC1_CMR0 (*(RwReg*)0x40014004U) /**< \brief (TC1) Channel Mode Register (channel = 0) */ +#define REG_TC1_SMMR0 (*(RwReg*)0x40014008U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC1_CV0 (*(RoReg*)0x40014010U) /**< \brief (TC1) Counter Value (channel = 0) */ +#define REG_TC1_RA0 (*(RwReg*)0x40014014U) /**< \brief (TC1) Register A (channel = 0) */ +#define REG_TC1_RB0 (*(RwReg*)0x40014018U) /**< \brief (TC1) Register B (channel = 0) */ +#define REG_TC1_RC0 (*(RwReg*)0x4001401CU) /**< \brief (TC1) Register C (channel = 0) */ +#define REG_TC1_SR0 (*(RoReg*)0x40014020U) /**< \brief (TC1) Status Register (channel = 0) */ +#define REG_TC1_IER0 (*(WoReg*)0x40014024U) /**< \brief (TC1) Interrupt Enable Register (channel = 0) */ +#define REG_TC1_IDR0 (*(WoReg*)0x40014028U) /**< \brief (TC1) Interrupt Disable Register (channel = 0) */ +#define REG_TC1_IMR0 (*(RoReg*)0x4001402CU) /**< \brief (TC1) Interrupt Mask Register (channel = 0) */ +#define REG_TC1_CCR1 (*(WoReg*)0x40014040U) /**< \brief (TC1) Channel Control Register (channel = 1) */ +#define REG_TC1_CMR1 (*(RwReg*)0x40014044U) /**< \brief (TC1) Channel Mode Register (channel = 1) */ +#define REG_TC1_SMMR1 (*(RwReg*)0x40014048U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC1_CV1 (*(RoReg*)0x40014050U) /**< \brief (TC1) Counter Value (channel = 1) */ +#define REG_TC1_RA1 (*(RwReg*)0x40014054U) /**< \brief (TC1) Register A (channel = 1) */ +#define REG_TC1_RB1 (*(RwReg*)0x40014058U) /**< \brief (TC1) Register B (channel = 1) */ +#define REG_TC1_RC1 (*(RwReg*)0x4001405CU) /**< \brief (TC1) Register C (channel = 1) */ +#define REG_TC1_SR1 (*(RoReg*)0x40014060U) /**< \brief (TC1) Status Register (channel = 1) */ +#define REG_TC1_IER1 (*(WoReg*)0x40014064U) /**< \brief (TC1) Interrupt Enable Register (channel = 1) */ +#define REG_TC1_IDR1 (*(WoReg*)0x40014068U) /**< \brief (TC1) Interrupt Disable Register (channel = 1) */ +#define REG_TC1_IMR1 (*(RoReg*)0x4001406CU) /**< \brief (TC1) Interrupt Mask Register (channel = 1) */ +#define REG_TC1_CCR2 (*(WoReg*)0x40014080U) /**< \brief (TC1) Channel Control Register (channel = 2) */ +#define REG_TC1_CMR2 (*(RwReg*)0x40014084U) /**< \brief (TC1) Channel Mode Register (channel = 2) */ +#define REG_TC1_SMMR2 (*(RwReg*)0x40014088U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC1_CV2 (*(RoReg*)0x40014090U) /**< \brief (TC1) Counter Value (channel = 2) */ +#define REG_TC1_RA2 (*(RwReg*)0x40014094U) /**< \brief (TC1) Register A (channel = 2) */ +#define REG_TC1_RB2 (*(RwReg*)0x40014098U) /**< \brief (TC1) Register B (channel = 2) */ +#define REG_TC1_RC2 (*(RwReg*)0x4001409CU) /**< \brief (TC1) Register C (channel = 2) */ +#define REG_TC1_SR2 (*(RoReg*)0x400140A0U) /**< \brief (TC1) Status Register (channel = 2) */ +#define REG_TC1_IER2 (*(WoReg*)0x400140A4U) /**< \brief (TC1) Interrupt Enable Register (channel = 2) */ +#define REG_TC1_IDR2 (*(WoReg*)0x400140A8U) /**< \brief (TC1) Interrupt Disable Register (channel = 2) */ +#define REG_TC1_IMR2 (*(RoReg*)0x400140ACU) /**< \brief (TC1) Interrupt Mask Register (channel = 2) */ +#define REG_TC1_BCR (*(WoReg*)0x400140C0U) /**< \brief (TC1) Block Control Register */ +#define REG_TC1_BMR (*(RwReg*)0x400140C4U) /**< \brief (TC1) Block Mode Register */ +#define REG_TC1_QIER (*(WoReg*)0x400140C8U) /**< \brief (TC1) QDEC Interrupt Enable Register */ +#define REG_TC1_QIDR (*(WoReg*)0x400140CCU) /**< \brief (TC1) QDEC Interrupt Disable Register */ +#define REG_TC1_QIMR (*(RoReg*)0x400140D0U) /**< \brief (TC1) QDEC Interrupt Mask Register */ +#define REG_TC1_QISR (*(RoReg*)0x400140D4U) /**< \brief (TC1) QDEC Interrupt Status Register */ +#define REG_TC1_FMR (*(RwReg*)0x400140D8U) /**< \brief (TC1) Fault Mode Register */ +#define REG_TC1_WPMR (*(RwReg*)0x400140E4U) /**< \brief (TC1) Write Protect Mode Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_TC1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_twi0.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_twi0.h new file mode 100644 index 000000000..ac6a6e852 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_twi0.h @@ -0,0 +1,80 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_TWI0_INSTANCE_ +#define _SAM3S8_TWI0_INSTANCE_ + +/* ========== Register definition for TWI0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TWI0_CR (0x40018000U) /**< \brief (TWI0) Control Register */ +#define REG_TWI0_MMR (0x40018004U) /**< \brief (TWI0) Master Mode Register */ +#define REG_TWI0_SMR (0x40018008U) /**< \brief (TWI0) Slave Mode Register */ +#define REG_TWI0_IADR (0x4001800CU) /**< \brief (TWI0) Internal Address Register */ +#define REG_TWI0_CWGR (0x40018010U) /**< \brief (TWI0) Clock Waveform Generator Register */ +#define REG_TWI0_SR (0x40018020U) /**< \brief (TWI0) Status Register */ +#define REG_TWI0_IER (0x40018024U) /**< \brief (TWI0) Interrupt Enable Register */ +#define REG_TWI0_IDR (0x40018028U) /**< \brief (TWI0) Interrupt Disable Register */ +#define REG_TWI0_IMR (0x4001802CU) /**< \brief (TWI0) Interrupt Mask Register */ +#define REG_TWI0_RHR (0x40018030U) /**< \brief (TWI0) Receive Holding Register */ +#define REG_TWI0_THR (0x40018034U) /**< \brief (TWI0) Transmit Holding Register */ +#define REG_TWI0_RPR (0x40018100U) /**< \brief (TWI0) Receive Pointer Register */ +#define REG_TWI0_RCR (0x40018104U) /**< \brief (TWI0) Receive Counter Register */ +#define REG_TWI0_TPR (0x40018108U) /**< \brief (TWI0) Transmit Pointer Register */ +#define REG_TWI0_TCR (0x4001810CU) /**< \brief (TWI0) Transmit Counter Register */ +#define REG_TWI0_RNPR (0x40018110U) /**< \brief (TWI0) Receive Next Pointer Register */ +#define REG_TWI0_RNCR (0x40018114U) /**< \brief (TWI0) Receive Next Counter Register */ +#define REG_TWI0_TNPR (0x40018118U) /**< \brief (TWI0) Transmit Next Pointer Register */ +#define REG_TWI0_TNCR (0x4001811CU) /**< \brief (TWI0) Transmit Next Counter Register */ +#define REG_TWI0_PTCR (0x40018120U) /**< \brief (TWI0) Transfer Control Register */ +#define REG_TWI0_PTSR (0x40018124U) /**< \brief (TWI0) Transfer Status Register */ +#else +#define REG_TWI0_CR (*(WoReg*)0x40018000U) /**< \brief (TWI0) Control Register */ +#define REG_TWI0_MMR (*(RwReg*)0x40018004U) /**< \brief (TWI0) Master Mode Register */ +#define REG_TWI0_SMR (*(RwReg*)0x40018008U) /**< \brief (TWI0) Slave Mode Register */ +#define REG_TWI0_IADR (*(RwReg*)0x4001800CU) /**< \brief (TWI0) Internal Address Register */ +#define REG_TWI0_CWGR (*(RwReg*)0x40018010U) /**< \brief (TWI0) Clock Waveform Generator Register */ +#define REG_TWI0_SR (*(RoReg*)0x40018020U) /**< \brief (TWI0) Status Register */ +#define REG_TWI0_IER (*(WoReg*)0x40018024U) /**< \brief (TWI0) Interrupt Enable Register */ +#define REG_TWI0_IDR (*(WoReg*)0x40018028U) /**< \brief (TWI0) Interrupt Disable Register */ +#define REG_TWI0_IMR (*(RoReg*)0x4001802CU) /**< \brief (TWI0) Interrupt Mask Register */ +#define REG_TWI0_RHR (*(RoReg*)0x40018030U) /**< \brief (TWI0) Receive Holding Register */ +#define REG_TWI0_THR (*(WoReg*)0x40018034U) /**< \brief (TWI0) Transmit Holding Register */ +#define REG_TWI0_RPR (*(RwReg*)0x40018100U) /**< \brief (TWI0) Receive Pointer Register */ +#define REG_TWI0_RCR (*(RwReg*)0x40018104U) /**< \brief (TWI0) Receive Counter Register */ +#define REG_TWI0_TPR (*(RwReg*)0x40018108U) /**< \brief (TWI0) Transmit Pointer Register */ +#define REG_TWI0_TCR (*(RwReg*)0x4001810CU) /**< \brief (TWI0) Transmit Counter Register */ +#define REG_TWI0_RNPR (*(RwReg*)0x40018110U) /**< \brief (TWI0) Receive Next Pointer Register */ +#define REG_TWI0_RNCR (*(RwReg*)0x40018114U) /**< \brief (TWI0) Receive Next Counter Register */ +#define REG_TWI0_TNPR (*(RwReg*)0x40018118U) /**< \brief (TWI0) Transmit Next Pointer Register */ +#define REG_TWI0_TNCR (*(RwReg*)0x4001811CU) /**< \brief (TWI0) Transmit Next Counter Register */ +#define REG_TWI0_PTCR (*(WoReg*)0x40018120U) /**< \brief (TWI0) Transfer Control Register */ +#define REG_TWI0_PTSR (*(RoReg*)0x40018124U) /**< \brief (TWI0) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_TWI0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_twi1.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_twi1.h new file mode 100644 index 000000000..f4bdeb96c --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_twi1.h @@ -0,0 +1,80 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_TWI1_INSTANCE_ +#define _SAM3S8_TWI1_INSTANCE_ + +/* ========== Register definition for TWI1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TWI1_CR (0x4001C000U) /**< \brief (TWI1) Control Register */ +#define REG_TWI1_MMR (0x4001C004U) /**< \brief (TWI1) Master Mode Register */ +#define REG_TWI1_SMR (0x4001C008U) /**< \brief (TWI1) Slave Mode Register */ +#define REG_TWI1_IADR (0x4001C00CU) /**< \brief (TWI1) Internal Address Register */ +#define REG_TWI1_CWGR (0x4001C010U) /**< \brief (TWI1) Clock Waveform Generator Register */ +#define REG_TWI1_SR (0x4001C020U) /**< \brief (TWI1) Status Register */ +#define REG_TWI1_IER (0x4001C024U) /**< \brief (TWI1) Interrupt Enable Register */ +#define REG_TWI1_IDR (0x4001C028U) /**< \brief (TWI1) Interrupt Disable Register */ +#define REG_TWI1_IMR (0x4001C02CU) /**< \brief (TWI1) Interrupt Mask Register */ +#define REG_TWI1_RHR (0x4001C030U) /**< \brief (TWI1) Receive Holding Register */ +#define REG_TWI1_THR (0x4001C034U) /**< \brief (TWI1) Transmit Holding Register */ +#define REG_TWI1_RPR (0x4001C100U) /**< \brief (TWI1) Receive Pointer Register */ +#define REG_TWI1_RCR (0x4001C104U) /**< \brief (TWI1) Receive Counter Register */ +#define REG_TWI1_TPR (0x4001C108U) /**< \brief (TWI1) Transmit Pointer Register */ +#define REG_TWI1_TCR (0x4001C10CU) /**< \brief (TWI1) Transmit Counter Register */ +#define REG_TWI1_RNPR (0x4001C110U) /**< \brief (TWI1) Receive Next Pointer Register */ +#define REG_TWI1_RNCR (0x4001C114U) /**< \brief (TWI1) Receive Next Counter Register */ +#define REG_TWI1_TNPR (0x4001C118U) /**< \brief (TWI1) Transmit Next Pointer Register */ +#define REG_TWI1_TNCR (0x4001C11CU) /**< \brief (TWI1) Transmit Next Counter Register */ +#define REG_TWI1_PTCR (0x4001C120U) /**< \brief (TWI1) Transfer Control Register */ +#define REG_TWI1_PTSR (0x4001C124U) /**< \brief (TWI1) Transfer Status Register */ +#else +#define REG_TWI1_CR (*(WoReg*)0x4001C000U) /**< \brief (TWI1) Control Register */ +#define REG_TWI1_MMR (*(RwReg*)0x4001C004U) /**< \brief (TWI1) Master Mode Register */ +#define REG_TWI1_SMR (*(RwReg*)0x4001C008U) /**< \brief (TWI1) Slave Mode Register */ +#define REG_TWI1_IADR (*(RwReg*)0x4001C00CU) /**< \brief (TWI1) Internal Address Register */ +#define REG_TWI1_CWGR (*(RwReg*)0x4001C010U) /**< \brief (TWI1) Clock Waveform Generator Register */ +#define REG_TWI1_SR (*(RoReg*)0x4001C020U) /**< \brief (TWI1) Status Register */ +#define REG_TWI1_IER (*(WoReg*)0x4001C024U) /**< \brief (TWI1) Interrupt Enable Register */ +#define REG_TWI1_IDR (*(WoReg*)0x4001C028U) /**< \brief (TWI1) Interrupt Disable Register */ +#define REG_TWI1_IMR (*(RoReg*)0x4001C02CU) /**< \brief (TWI1) Interrupt Mask Register */ +#define REG_TWI1_RHR (*(RoReg*)0x4001C030U) /**< \brief (TWI1) Receive Holding Register */ +#define REG_TWI1_THR (*(WoReg*)0x4001C034U) /**< \brief (TWI1) Transmit Holding Register */ +#define REG_TWI1_RPR (*(RwReg*)0x4001C100U) /**< \brief (TWI1) Receive Pointer Register */ +#define REG_TWI1_RCR (*(RwReg*)0x4001C104U) /**< \brief (TWI1) Receive Counter Register */ +#define REG_TWI1_TPR (*(RwReg*)0x4001C108U) /**< \brief (TWI1) Transmit Pointer Register */ +#define REG_TWI1_TCR (*(RwReg*)0x4001C10CU) /**< \brief (TWI1) Transmit Counter Register */ +#define REG_TWI1_RNPR (*(RwReg*)0x4001C110U) /**< \brief (TWI1) Receive Next Pointer Register */ +#define REG_TWI1_RNCR (*(RwReg*)0x4001C114U) /**< \brief (TWI1) Receive Next Counter Register */ +#define REG_TWI1_TNPR (*(RwReg*)0x4001C118U) /**< \brief (TWI1) Transmit Next Pointer Register */ +#define REG_TWI1_TNCR (*(RwReg*)0x4001C11CU) /**< \brief (TWI1) Transmit Next Counter Register */ +#define REG_TWI1_PTCR (*(WoReg*)0x4001C120U) /**< \brief (TWI1) Transfer Control Register */ +#define REG_TWI1_PTSR (*(RoReg*)0x4001C124U) /**< \brief (TWI1) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_TWI1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_uart0.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_uart0.h new file mode 100644 index 000000000..09ada8544 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_uart0.h @@ -0,0 +1,76 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_UART0_INSTANCE_ +#define _SAM3S8_UART0_INSTANCE_ + +/* ========== Register definition for UART0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_UART0_CR (0x400E0600U) /**< \brief (UART0) Control Register */ +#define REG_UART0_MR (0x400E0604U) /**< \brief (UART0) Mode Register */ +#define REG_UART0_IER (0x400E0608U) /**< \brief (UART0) Interrupt Enable Register */ +#define REG_UART0_IDR (0x400E060CU) /**< \brief (UART0) Interrupt Disable Register */ +#define REG_UART0_IMR (0x400E0610U) /**< \brief (UART0) Interrupt Mask Register */ +#define REG_UART0_SR (0x400E0614U) /**< \brief (UART0) Status Register */ +#define REG_UART0_RHR (0x400E0618U) /**< \brief (UART0) Receive Holding Register */ +#define REG_UART0_THR (0x400E061CU) /**< \brief (UART0) Transmit Holding Register */ +#define REG_UART0_BRGR (0x400E0620U) /**< \brief (UART0) Baud Rate Generator Register */ +#define REG_UART0_RPR (0x400E0700U) /**< \brief (UART0) Receive Pointer Register */ +#define REG_UART0_RCR (0x400E0704U) /**< \brief (UART0) Receive Counter Register */ +#define REG_UART0_TPR (0x400E0708U) /**< \brief (UART0) Transmit Pointer Register */ +#define REG_UART0_TCR (0x400E070CU) /**< \brief (UART0) Transmit Counter Register */ +#define REG_UART0_RNPR (0x400E0710U) /**< \brief (UART0) Receive Next Pointer Register */ +#define REG_UART0_RNCR (0x400E0714U) /**< \brief (UART0) Receive Next Counter Register */ +#define REG_UART0_TNPR (0x400E0718U) /**< \brief (UART0) Transmit Next Pointer Register */ +#define REG_UART0_TNCR (0x400E071CU) /**< \brief (UART0) Transmit Next Counter Register */ +#define REG_UART0_PTCR (0x400E0720U) /**< \brief (UART0) Transfer Control Register */ +#define REG_UART0_PTSR (0x400E0724U) /**< \brief (UART0) Transfer Status Register */ +#else +#define REG_UART0_CR (*(WoReg*)0x400E0600U) /**< \brief (UART0) Control Register */ +#define REG_UART0_MR (*(RwReg*)0x400E0604U) /**< \brief (UART0) Mode Register */ +#define REG_UART0_IER (*(WoReg*)0x400E0608U) /**< \brief (UART0) Interrupt Enable Register */ +#define REG_UART0_IDR (*(WoReg*)0x400E060CU) /**< \brief (UART0) Interrupt Disable Register */ +#define REG_UART0_IMR (*(RoReg*)0x400E0610U) /**< \brief (UART0) Interrupt Mask Register */ +#define REG_UART0_SR (*(RoReg*)0x400E0614U) /**< \brief (UART0) Status Register */ +#define REG_UART0_RHR (*(RoReg*)0x400E0618U) /**< \brief (UART0) Receive Holding Register */ +#define REG_UART0_THR (*(WoReg*)0x400E061CU) /**< \brief (UART0) Transmit Holding Register */ +#define REG_UART0_BRGR (*(RwReg*)0x400E0620U) /**< \brief (UART0) Baud Rate Generator Register */ +#define REG_UART0_RPR (*(RwReg*)0x400E0700U) /**< \brief (UART0) Receive Pointer Register */ +#define REG_UART0_RCR (*(RwReg*)0x400E0704U) /**< \brief (UART0) Receive Counter Register */ +#define REG_UART0_TPR (*(RwReg*)0x400E0708U) /**< \brief (UART0) Transmit Pointer Register */ +#define REG_UART0_TCR (*(RwReg*)0x400E070CU) /**< \brief (UART0) Transmit Counter Register */ +#define REG_UART0_RNPR (*(RwReg*)0x400E0710U) /**< \brief (UART0) Receive Next Pointer Register */ +#define REG_UART0_RNCR (*(RwReg*)0x400E0714U) /**< \brief (UART0) Receive Next Counter Register */ +#define REG_UART0_TNPR (*(RwReg*)0x400E0718U) /**< \brief (UART0) Transmit Next Pointer Register */ +#define REG_UART0_TNCR (*(RwReg*)0x400E071CU) /**< \brief (UART0) Transmit Next Counter Register */ +#define REG_UART0_PTCR (*(WoReg*)0x400E0720U) /**< \brief (UART0) Transfer Control Register */ +#define REG_UART0_PTSR (*(RoReg*)0x400E0724U) /**< \brief (UART0) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_UART0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_uart1.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_uart1.h new file mode 100644 index 000000000..d8d328665 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_uart1.h @@ -0,0 +1,76 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_UART1_INSTANCE_ +#define _SAM3S8_UART1_INSTANCE_ + +/* ========== Register definition for UART1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_UART1_CR (0x400E0800U) /**< \brief (UART1) Control Register */ +#define REG_UART1_MR (0x400E0804U) /**< \brief (UART1) Mode Register */ +#define REG_UART1_IER (0x400E0808U) /**< \brief (UART1) Interrupt Enable Register */ +#define REG_UART1_IDR (0x400E080CU) /**< \brief (UART1) Interrupt Disable Register */ +#define REG_UART1_IMR (0x400E0810U) /**< \brief (UART1) Interrupt Mask Register */ +#define REG_UART1_SR (0x400E0814U) /**< \brief (UART1) Status Register */ +#define REG_UART1_RHR (0x400E0818U) /**< \brief (UART1) Receive Holding Register */ +#define REG_UART1_THR (0x400E081CU) /**< \brief (UART1) Transmit Holding Register */ +#define REG_UART1_BRGR (0x400E0820U) /**< \brief (UART1) Baud Rate Generator Register */ +#define REG_UART1_RPR (0x400E0900U) /**< \brief (UART1) Receive Pointer Register */ +#define REG_UART1_RCR (0x400E0904U) /**< \brief (UART1) Receive Counter Register */ +#define REG_UART1_TPR (0x400E0908U) /**< \brief (UART1) Transmit Pointer Register */ +#define REG_UART1_TCR (0x400E090CU) /**< \brief (UART1) Transmit Counter Register */ +#define REG_UART1_RNPR (0x400E0910U) /**< \brief (UART1) Receive Next Pointer Register */ +#define REG_UART1_RNCR (0x400E0914U) /**< \brief (UART1) Receive Next Counter Register */ +#define REG_UART1_TNPR (0x400E0918U) /**< \brief (UART1) Transmit Next Pointer Register */ +#define REG_UART1_TNCR (0x400E091CU) /**< \brief (UART1) Transmit Next Counter Register */ +#define REG_UART1_PTCR (0x400E0920U) /**< \brief (UART1) Transfer Control Register */ +#define REG_UART1_PTSR (0x400E0924U) /**< \brief (UART1) Transfer Status Register */ +#else +#define REG_UART1_CR (*(WoReg*)0x400E0800U) /**< \brief (UART1) Control Register */ +#define REG_UART1_MR (*(RwReg*)0x400E0804U) /**< \brief (UART1) Mode Register */ +#define REG_UART1_IER (*(WoReg*)0x400E0808U) /**< \brief (UART1) Interrupt Enable Register */ +#define REG_UART1_IDR (*(WoReg*)0x400E080CU) /**< \brief (UART1) Interrupt Disable Register */ +#define REG_UART1_IMR (*(RoReg*)0x400E0810U) /**< \brief (UART1) Interrupt Mask Register */ +#define REG_UART1_SR (*(RoReg*)0x400E0814U) /**< \brief (UART1) Status Register */ +#define REG_UART1_RHR (*(RoReg*)0x400E0818U) /**< \brief (UART1) Receive Holding Register */ +#define REG_UART1_THR (*(WoReg*)0x400E081CU) /**< \brief (UART1) Transmit Holding Register */ +#define REG_UART1_BRGR (*(RwReg*)0x400E0820U) /**< \brief (UART1) Baud Rate Generator Register */ +#define REG_UART1_RPR (*(RwReg*)0x400E0900U) /**< \brief (UART1) Receive Pointer Register */ +#define REG_UART1_RCR (*(RwReg*)0x400E0904U) /**< \brief (UART1) Receive Counter Register */ +#define REG_UART1_TPR (*(RwReg*)0x400E0908U) /**< \brief (UART1) Transmit Pointer Register */ +#define REG_UART1_TCR (*(RwReg*)0x400E090CU) /**< \brief (UART1) Transmit Counter Register */ +#define REG_UART1_RNPR (*(RwReg*)0x400E0910U) /**< \brief (UART1) Receive Next Pointer Register */ +#define REG_UART1_RNCR (*(RwReg*)0x400E0914U) /**< \brief (UART1) Receive Next Counter Register */ +#define REG_UART1_TNPR (*(RwReg*)0x400E0918U) /**< \brief (UART1) Transmit Next Pointer Register */ +#define REG_UART1_TNCR (*(RwReg*)0x400E091CU) /**< \brief (UART1) Transmit Next Counter Register */ +#define REG_UART1_PTCR (*(WoReg*)0x400E0920U) /**< \brief (UART1) Transfer Control Register */ +#define REG_UART1_PTSR (*(RoReg*)0x400E0924U) /**< \brief (UART1) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_UART1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_udp.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_udp.h new file mode 100644 index 000000000..ff4ada3dc --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_udp.h @@ -0,0 +1,62 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_UDP_INSTANCE_ +#define _SAM3S8_UDP_INSTANCE_ + +/* ========== Register definition for UDP peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_UDP_FRM_NUM (0x40034000U) /**< \brief (UDP) Frame Number Register */ +#define REG_UDP_GLB_STAT (0x40034004U) /**< \brief (UDP) Global State Register */ +#define REG_UDP_FADDR (0x40034008U) /**< \brief (UDP) Function Address Register */ +#define REG_UDP_IER (0x40034010U) /**< \brief (UDP) Interrupt Enable Register */ +#define REG_UDP_IDR (0x40034014U) /**< \brief (UDP) Interrupt Disable Register */ +#define REG_UDP_IMR (0x40034018U) /**< \brief (UDP) Interrupt Mask Register */ +#define REG_UDP_ISR (0x4003401CU) /**< \brief (UDP) Interrupt Status Register */ +#define REG_UDP_ICR (0x40034020U) /**< \brief (UDP) Interrupt Clear Register */ +#define REG_UDP_RST_EP (0x40034028U) /**< \brief (UDP) Reset Endpoint Register */ +#define REG_UDP_CSR (0x40034030U) /**< \brief (UDP) Endpoint Control and Status Register */ +#define REG_UDP_FDR (0x40034050U) /**< \brief (UDP) Endpoint FIFO Data Register */ +#define REG_UDP_TXVC (0x40034074U) /**< \brief (UDP) Transceiver Control Register */ +#else +#define REG_UDP_FRM_NUM (*(RoReg*)0x40034000U) /**< \brief (UDP) Frame Number Register */ +#define REG_UDP_GLB_STAT (*(RwReg*)0x40034004U) /**< \brief (UDP) Global State Register */ +#define REG_UDP_FADDR (*(RwReg*)0x40034008U) /**< \brief (UDP) Function Address Register */ +#define REG_UDP_IER (*(WoReg*)0x40034010U) /**< \brief (UDP) Interrupt Enable Register */ +#define REG_UDP_IDR (*(WoReg*)0x40034014U) /**< \brief (UDP) Interrupt Disable Register */ +#define REG_UDP_IMR (*(RoReg*)0x40034018U) /**< \brief (UDP) Interrupt Mask Register */ +#define REG_UDP_ISR (*(RoReg*)0x4003401CU) /**< \brief (UDP) Interrupt Status Register */ +#define REG_UDP_ICR (*(WoReg*)0x40034020U) /**< \brief (UDP) Interrupt Clear Register */ +#define REG_UDP_RST_EP (*(RwReg*)0x40034028U) /**< \brief (UDP) Reset Endpoint Register */ +#define REG_UDP_CSR (*(RwReg*)0x40034030U) /**< \brief (UDP) Endpoint Control and Status Register */ +#define REG_UDP_FDR (*(RwReg*)0x40034050U) /**< \brief (UDP) Endpoint FIFO Data Register */ +#define REG_UDP_TXVC (*(RwReg*)0x40034074U) /**< \brief (UDP) Transceiver Control Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_UDP_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_usart0.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_usart0.h new file mode 100644 index 000000000..04ee15c8e --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_usart0.h @@ -0,0 +1,94 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_USART0_INSTANCE_ +#define _SAM3S8_USART0_INSTANCE_ + +/* ========== Register definition for USART0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_USART0_CR (0x40024000U) /**< \brief (USART0) Control Register */ +#define REG_USART0_MR (0x40024004U) /**< \brief (USART0) Mode Register */ +#define REG_USART0_IER (0x40024008U) /**< \brief (USART0) Interrupt Enable Register */ +#define REG_USART0_IDR (0x4002400CU) /**< \brief (USART0) Interrupt Disable Register */ +#define REG_USART0_IMR (0x40024010U) /**< \brief (USART0) Interrupt Mask Register */ +#define REG_USART0_CSR (0x40024014U) /**< \brief (USART0) Channel Status Register */ +#define REG_USART0_RHR (0x40024018U) /**< \brief (USART0) Receiver Holding Register */ +#define REG_USART0_THR (0x4002401CU) /**< \brief (USART0) Transmitter Holding Register */ +#define REG_USART0_BRGR (0x40024020U) /**< \brief (USART0) Baud Rate Generator Register */ +#define REG_USART0_RTOR (0x40024024U) /**< \brief (USART0) Receiver Time-out Register */ +#define REG_USART0_TTGR (0x40024028U) /**< \brief (USART0) Transmitter Timeguard Register */ +#define REG_USART0_FIDI (0x40024040U) /**< \brief (USART0) FI DI Ratio Register */ +#define REG_USART0_NER (0x40024044U) /**< \brief (USART0) Number of Errors Register */ +#define REG_USART0_IF (0x4002404CU) /**< \brief (USART0) IrDA Filter Register */ +#define REG_USART0_MAN (0x40024050U) /**< \brief (USART0) Manchester Encoder Decoder Register */ +#define REG_USART0_WPMR (0x400240E4U) /**< \brief (USART0) Write Protect Mode Register */ +#define REG_USART0_WPSR (0x400240E8U) /**< \brief (USART0) Write Protect Status Register */ +#define REG_USART0_VERSION (0x400240FCU) /**< \brief (USART0) Version Register */ +#define REG_USART0_RPR (0x40024100U) /**< \brief (USART0) Receive Pointer Register */ +#define REG_USART0_RCR (0x40024104U) /**< \brief (USART0) Receive Counter Register */ +#define REG_USART0_TPR (0x40024108U) /**< \brief (USART0) Transmit Pointer Register */ +#define REG_USART0_TCR (0x4002410CU) /**< \brief (USART0) Transmit Counter Register */ +#define REG_USART0_RNPR (0x40024110U) /**< \brief (USART0) Receive Next Pointer Register */ +#define REG_USART0_RNCR (0x40024114U) /**< \brief (USART0) Receive Next Counter Register */ +#define REG_USART0_TNPR (0x40024118U) /**< \brief (USART0) Transmit Next Pointer Register */ +#define REG_USART0_TNCR (0x4002411CU) /**< \brief (USART0) Transmit Next Counter Register */ +#define REG_USART0_PTCR (0x40024120U) /**< \brief (USART0) Transfer Control Register */ +#define REG_USART0_PTSR (0x40024124U) /**< \brief (USART0) Transfer Status Register */ +#else +#define REG_USART0_CR (*(WoReg*)0x40024000U) /**< \brief (USART0) Control Register */ +#define REG_USART0_MR (*(RwReg*)0x40024004U) /**< \brief (USART0) Mode Register */ +#define REG_USART0_IER (*(WoReg*)0x40024008U) /**< \brief (USART0) Interrupt Enable Register */ +#define REG_USART0_IDR (*(WoReg*)0x4002400CU) /**< \brief (USART0) Interrupt Disable Register */ +#define REG_USART0_IMR (*(RoReg*)0x40024010U) /**< \brief (USART0) Interrupt Mask Register */ +#define REG_USART0_CSR (*(RoReg*)0x40024014U) /**< \brief (USART0) Channel Status Register */ +#define REG_USART0_RHR (*(RoReg*)0x40024018U) /**< \brief (USART0) Receiver Holding Register */ +#define REG_USART0_THR (*(WoReg*)0x4002401CU) /**< \brief (USART0) Transmitter Holding Register */ +#define REG_USART0_BRGR (*(RwReg*)0x40024020U) /**< \brief (USART0) Baud Rate Generator Register */ +#define REG_USART0_RTOR (*(RwReg*)0x40024024U) /**< \brief (USART0) Receiver Time-out Register */ +#define REG_USART0_TTGR (*(RwReg*)0x40024028U) /**< \brief (USART0) Transmitter Timeguard Register */ +#define REG_USART0_FIDI (*(RwReg*)0x40024040U) /**< \brief (USART0) FI DI Ratio Register */ +#define REG_USART0_NER (*(RoReg*)0x40024044U) /**< \brief (USART0) Number of Errors Register */ +#define REG_USART0_IF (*(RwReg*)0x4002404CU) /**< \brief (USART0) IrDA Filter Register */ +#define REG_USART0_MAN (*(RwReg*)0x40024050U) /**< \brief (USART0) Manchester Encoder Decoder Register */ +#define REG_USART0_WPMR (*(RwReg*)0x400240E4U) /**< \brief (USART0) Write Protect Mode Register */ +#define REG_USART0_WPSR (*(RoReg*)0x400240E8U) /**< \brief (USART0) Write Protect Status Register */ +#define REG_USART0_VERSION (*(RoReg*)0x400240FCU) /**< \brief (USART0) Version Register */ +#define REG_USART0_RPR (*(RwReg*)0x40024100U) /**< \brief (USART0) Receive Pointer Register */ +#define REG_USART0_RCR (*(RwReg*)0x40024104U) /**< \brief (USART0) Receive Counter Register */ +#define REG_USART0_TPR (*(RwReg*)0x40024108U) /**< \brief (USART0) Transmit Pointer Register */ +#define REG_USART0_TCR (*(RwReg*)0x4002410CU) /**< \brief (USART0) Transmit Counter Register */ +#define REG_USART0_RNPR (*(RwReg*)0x40024110U) /**< \brief (USART0) Receive Next Pointer Register */ +#define REG_USART0_RNCR (*(RwReg*)0x40024114U) /**< \brief (USART0) Receive Next Counter Register */ +#define REG_USART0_TNPR (*(RwReg*)0x40024118U) /**< \brief (USART0) Transmit Next Pointer Register */ +#define REG_USART0_TNCR (*(RwReg*)0x4002411CU) /**< \brief (USART0) Transmit Next Counter Register */ +#define REG_USART0_PTCR (*(WoReg*)0x40024120U) /**< \brief (USART0) Transfer Control Register */ +#define REG_USART0_PTSR (*(RoReg*)0x40024124U) /**< \brief (USART0) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_USART0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_usart1.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_usart1.h new file mode 100644 index 000000000..1d83320ba --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_usart1.h @@ -0,0 +1,94 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_USART1_INSTANCE_ +#define _SAM3S8_USART1_INSTANCE_ + +/* ========== Register definition for USART1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_USART1_CR (0x40028000U) /**< \brief (USART1) Control Register */ +#define REG_USART1_MR (0x40028004U) /**< \brief (USART1) Mode Register */ +#define REG_USART1_IER (0x40028008U) /**< \brief (USART1) Interrupt Enable Register */ +#define REG_USART1_IDR (0x4002800CU) /**< \brief (USART1) Interrupt Disable Register */ +#define REG_USART1_IMR (0x40028010U) /**< \brief (USART1) Interrupt Mask Register */ +#define REG_USART1_CSR (0x40028014U) /**< \brief (USART1) Channel Status Register */ +#define REG_USART1_RHR (0x40028018U) /**< \brief (USART1) Receiver Holding Register */ +#define REG_USART1_THR (0x4002801CU) /**< \brief (USART1) Transmitter Holding Register */ +#define REG_USART1_BRGR (0x40028020U) /**< \brief (USART1) Baud Rate Generator Register */ +#define REG_USART1_RTOR (0x40028024U) /**< \brief (USART1) Receiver Time-out Register */ +#define REG_USART1_TTGR (0x40028028U) /**< \brief (USART1) Transmitter Timeguard Register */ +#define REG_USART1_FIDI (0x40028040U) /**< \brief (USART1) FI DI Ratio Register */ +#define REG_USART1_NER (0x40028044U) /**< \brief (USART1) Number of Errors Register */ +#define REG_USART1_IF (0x4002804CU) /**< \brief (USART1) IrDA Filter Register */ +#define REG_USART1_MAN (0x40028050U) /**< \brief (USART1) Manchester Encoder Decoder Register */ +#define REG_USART1_WPMR (0x400280E4U) /**< \brief (USART1) Write Protect Mode Register */ +#define REG_USART1_WPSR (0x400280E8U) /**< \brief (USART1) Write Protect Status Register */ +#define REG_USART1_VERSION (0x400280FCU) /**< \brief (USART1) Version Register */ +#define REG_USART1_RPR (0x40028100U) /**< \brief (USART1) Receive Pointer Register */ +#define REG_USART1_RCR (0x40028104U) /**< \brief (USART1) Receive Counter Register */ +#define REG_USART1_TPR (0x40028108U) /**< \brief (USART1) Transmit Pointer Register */ +#define REG_USART1_TCR (0x4002810CU) /**< \brief (USART1) Transmit Counter Register */ +#define REG_USART1_RNPR (0x40028110U) /**< \brief (USART1) Receive Next Pointer Register */ +#define REG_USART1_RNCR (0x40028114U) /**< \brief (USART1) Receive Next Counter Register */ +#define REG_USART1_TNPR (0x40028118U) /**< \brief (USART1) Transmit Next Pointer Register */ +#define REG_USART1_TNCR (0x4002811CU) /**< \brief (USART1) Transmit Next Counter Register */ +#define REG_USART1_PTCR (0x40028120U) /**< \brief (USART1) Transfer Control Register */ +#define REG_USART1_PTSR (0x40028124U) /**< \brief (USART1) Transfer Status Register */ +#else +#define REG_USART1_CR (*(WoReg*)0x40028000U) /**< \brief (USART1) Control Register */ +#define REG_USART1_MR (*(RwReg*)0x40028004U) /**< \brief (USART1) Mode Register */ +#define REG_USART1_IER (*(WoReg*)0x40028008U) /**< \brief (USART1) Interrupt Enable Register */ +#define REG_USART1_IDR (*(WoReg*)0x4002800CU) /**< \brief (USART1) Interrupt Disable Register */ +#define REG_USART1_IMR (*(RoReg*)0x40028010U) /**< \brief (USART1) Interrupt Mask Register */ +#define REG_USART1_CSR (*(RoReg*)0x40028014U) /**< \brief (USART1) Channel Status Register */ +#define REG_USART1_RHR (*(RoReg*)0x40028018U) /**< \brief (USART1) Receiver Holding Register */ +#define REG_USART1_THR (*(WoReg*)0x4002801CU) /**< \brief (USART1) Transmitter Holding Register */ +#define REG_USART1_BRGR (*(RwReg*)0x40028020U) /**< \brief (USART1) Baud Rate Generator Register */ +#define REG_USART1_RTOR (*(RwReg*)0x40028024U) /**< \brief (USART1) Receiver Time-out Register */ +#define REG_USART1_TTGR (*(RwReg*)0x40028028U) /**< \brief (USART1) Transmitter Timeguard Register */ +#define REG_USART1_FIDI (*(RwReg*)0x40028040U) /**< \brief (USART1) FI DI Ratio Register */ +#define REG_USART1_NER (*(RoReg*)0x40028044U) /**< \brief (USART1) Number of Errors Register */ +#define REG_USART1_IF (*(RwReg*)0x4002804CU) /**< \brief (USART1) IrDA Filter Register */ +#define REG_USART1_MAN (*(RwReg*)0x40028050U) /**< \brief (USART1) Manchester Encoder Decoder Register */ +#define REG_USART1_WPMR (*(RwReg*)0x400280E4U) /**< \brief (USART1) Write Protect Mode Register */ +#define REG_USART1_WPSR (*(RoReg*)0x400280E8U) /**< \brief (USART1) Write Protect Status Register */ +#define REG_USART1_VERSION (*(RoReg*)0x400280FCU) /**< \brief (USART1) Version Register */ +#define REG_USART1_RPR (*(RwReg*)0x40028100U) /**< \brief (USART1) Receive Pointer Register */ +#define REG_USART1_RCR (*(RwReg*)0x40028104U) /**< \brief (USART1) Receive Counter Register */ +#define REG_USART1_TPR (*(RwReg*)0x40028108U) /**< \brief (USART1) Transmit Pointer Register */ +#define REG_USART1_TCR (*(RwReg*)0x4002810CU) /**< \brief (USART1) Transmit Counter Register */ +#define REG_USART1_RNPR (*(RwReg*)0x40028110U) /**< \brief (USART1) Receive Next Pointer Register */ +#define REG_USART1_RNCR (*(RwReg*)0x40028114U) /**< \brief (USART1) Receive Next Counter Register */ +#define REG_USART1_TNPR (*(RwReg*)0x40028118U) /**< \brief (USART1) Transmit Next Pointer Register */ +#define REG_USART1_TNCR (*(RwReg*)0x4002811CU) /**< \brief (USART1) Transmit Next Counter Register */ +#define REG_USART1_PTCR (*(WoReg*)0x40028120U) /**< \brief (USART1) Transfer Control Register */ +#define REG_USART1_PTSR (*(RoReg*)0x40028124U) /**< \brief (USART1) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_USART1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_usart2.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_usart2.h new file mode 100644 index 000000000..cc909ce68 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_usart2.h @@ -0,0 +1,94 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_USART2_INSTANCE_ +#define _SAM3S8_USART2_INSTANCE_ + +/* ========== Register definition for USART2 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_USART2_CR (0x4002C000U) /**< \brief (USART2) Control Register */ +#define REG_USART2_MR (0x4002C004U) /**< \brief (USART2) Mode Register */ +#define REG_USART2_IER (0x4002C008U) /**< \brief (USART2) Interrupt Enable Register */ +#define REG_USART2_IDR (0x4002C00CU) /**< \brief (USART2) Interrupt Disable Register */ +#define REG_USART2_IMR (0x4002C010U) /**< \brief (USART2) Interrupt Mask Register */ +#define REG_USART2_CSR (0x4002C014U) /**< \brief (USART2) Channel Status Register */ +#define REG_USART2_RHR (0x4002C018U) /**< \brief (USART2) Receiver Holding Register */ +#define REG_USART2_THR (0x4002C01CU) /**< \brief (USART2) Transmitter Holding Register */ +#define REG_USART2_BRGR (0x4002C020U) /**< \brief (USART2) Baud Rate Generator Register */ +#define REG_USART2_RTOR (0x4002C024U) /**< \brief (USART2) Receiver Time-out Register */ +#define REG_USART2_TTGR (0x4002C028U) /**< \brief (USART2) Transmitter Timeguard Register */ +#define REG_USART2_FIDI (0x4002C040U) /**< \brief (USART2) FI DI Ratio Register */ +#define REG_USART2_NER (0x4002C044U) /**< \brief (USART2) Number of Errors Register */ +#define REG_USART2_IF (0x4002C04CU) /**< \brief (USART2) IrDA Filter Register */ +#define REG_USART2_MAN (0x4002C050U) /**< \brief (USART2) Manchester Encoder Decoder Register */ +#define REG_USART2_WPMR (0x4002C0E4U) /**< \brief (USART2) Write Protect Mode Register */ +#define REG_USART2_WPSR (0x4002C0E8U) /**< \brief (USART2) Write Protect Status Register */ +#define REG_USART2_VERSION (0x4002C0FCU) /**< \brief (USART2) Version Register */ +#define REG_USART2_RPR (0x4002C100U) /**< \brief (USART2) Receive Pointer Register */ +#define REG_USART2_RCR (0x4002C104U) /**< \brief (USART2) Receive Counter Register */ +#define REG_USART2_TPR (0x4002C108U) /**< \brief (USART2) Transmit Pointer Register */ +#define REG_USART2_TCR (0x4002C10CU) /**< \brief (USART2) Transmit Counter Register */ +#define REG_USART2_RNPR (0x4002C110U) /**< \brief (USART2) Receive Next Pointer Register */ +#define REG_USART2_RNCR (0x4002C114U) /**< \brief (USART2) Receive Next Counter Register */ +#define REG_USART2_TNPR (0x4002C118U) /**< \brief (USART2) Transmit Next Pointer Register */ +#define REG_USART2_TNCR (0x4002C11CU) /**< \brief (USART2) Transmit Next Counter Register */ +#define REG_USART2_PTCR (0x4002C120U) /**< \brief (USART2) Transfer Control Register */ +#define REG_USART2_PTSR (0x4002C124U) /**< \brief (USART2) Transfer Status Register */ +#else +#define REG_USART2_CR (*(WoReg*)0x4002C000U) /**< \brief (USART2) Control Register */ +#define REG_USART2_MR (*(RwReg*)0x4002C004U) /**< \brief (USART2) Mode Register */ +#define REG_USART2_IER (*(WoReg*)0x4002C008U) /**< \brief (USART2) Interrupt Enable Register */ +#define REG_USART2_IDR (*(WoReg*)0x4002C00CU) /**< \brief (USART2) Interrupt Disable Register */ +#define REG_USART2_IMR (*(RoReg*)0x4002C010U) /**< \brief (USART2) Interrupt Mask Register */ +#define REG_USART2_CSR (*(RoReg*)0x4002C014U) /**< \brief (USART2) Channel Status Register */ +#define REG_USART2_RHR (*(RoReg*)0x4002C018U) /**< \brief (USART2) Receiver Holding Register */ +#define REG_USART2_THR (*(WoReg*)0x4002C01CU) /**< \brief (USART2) Transmitter Holding Register */ +#define REG_USART2_BRGR (*(RwReg*)0x4002C020U) /**< \brief (USART2) Baud Rate Generator Register */ +#define REG_USART2_RTOR (*(RwReg*)0x4002C024U) /**< \brief (USART2) Receiver Time-out Register */ +#define REG_USART2_TTGR (*(RwReg*)0x4002C028U) /**< \brief (USART2) Transmitter Timeguard Register */ +#define REG_USART2_FIDI (*(RwReg*)0x4002C040U) /**< \brief (USART2) FI DI Ratio Register */ +#define REG_USART2_NER (*(RoReg*)0x4002C044U) /**< \brief (USART2) Number of Errors Register */ +#define REG_USART2_IF (*(RwReg*)0x4002C04CU) /**< \brief (USART2) IrDA Filter Register */ +#define REG_USART2_MAN (*(RwReg*)0x4002C050U) /**< \brief (USART2) Manchester Encoder Decoder Register */ +#define REG_USART2_WPMR (*(RwReg*)0x4002C0E4U) /**< \brief (USART2) Write Protect Mode Register */ +#define REG_USART2_WPSR (*(RoReg*)0x4002C0E8U) /**< \brief (USART2) Write Protect Status Register */ +#define REG_USART2_VERSION (*(RoReg*)0x4002C0FCU) /**< \brief (USART2) Version Register */ +#define REG_USART2_RPR (*(RwReg*)0x4002C100U) /**< \brief (USART2) Receive Pointer Register */ +#define REG_USART2_RCR (*(RwReg*)0x4002C104U) /**< \brief (USART2) Receive Counter Register */ +#define REG_USART2_TPR (*(RwReg*)0x4002C108U) /**< \brief (USART2) Transmit Pointer Register */ +#define REG_USART2_TCR (*(RwReg*)0x4002C10CU) /**< \brief (USART2) Transmit Counter Register */ +#define REG_USART2_RNPR (*(RwReg*)0x4002C110U) /**< \brief (USART2) Receive Next Pointer Register */ +#define REG_USART2_RNCR (*(RwReg*)0x4002C114U) /**< \brief (USART2) Receive Next Counter Register */ +#define REG_USART2_TNPR (*(RwReg*)0x4002C118U) /**< \brief (USART2) Transmit Next Pointer Register */ +#define REG_USART2_TNCR (*(RwReg*)0x4002C11CU) /**< \brief (USART2) Transmit Next Counter Register */ +#define REG_USART2_PTCR (*(WoReg*)0x4002C120U) /**< \brief (USART2) Transfer Control Register */ +#define REG_USART2_PTSR (*(RoReg*)0x4002C124U) /**< \brief (USART2) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_USART2_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_wdt.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_wdt.h new file mode 100644 index 000000000..6d89ffbb3 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/instance/instance_wdt.h @@ -0,0 +1,44 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_WDT_INSTANCE_ +#define _SAM3S8_WDT_INSTANCE_ + +/* ========== Register definition for WDT peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_WDT_CR (0x400E1450U) /**< \brief (WDT) Control Register */ +#define REG_WDT_MR (0x400E1454U) /**< \brief (WDT) Mode Register */ +#define REG_WDT_SR (0x400E1458U) /**< \brief (WDT) Status Register */ +#else +#define REG_WDT_CR (*(WoReg*)0x400E1450U) /**< \brief (WDT) Control Register */ +#define REG_WDT_MR (*(RwReg*)0x400E1454U) /**< \brief (WDT) Mode Register */ +#define REG_WDT_SR (*(RoReg*)0x400E1458U) /**< \brief (WDT) Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3S8_WDT_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/pio/pio_sam3s8a.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/pio/pio_sam3s8a.h new file mode 100644 index 000000000..26850a101 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/pio/pio_sam3s8a.h @@ -0,0 +1,236 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8A_PIO_ +#define _SAM3S8A_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Adc signal: AD4/RTCOUT0 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Adc signal: AD5/RTCOUT1 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA24D_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA25D_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ +#define PIO_PA26D_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ +#define PIO_PA27D_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ +#define PIO_PA28D_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA29D_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ +#define PIO_PA30D_PIODC6 (1u << 30) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA31D_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA23D_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA15D_PIODCEN1 (1u << 15) /**< \brief Pioa signal: PIODCEN1 */ +#define PIO_PA16D_PIODCEN2 (1u << 16) /**< \brief Pioa signal: PIODCEN2 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PA20A_RF (1u << 20) /**< \brief Ssc signal: RF */ +#define PIO_PA19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA17A_TD (1u << 17) /**< \brief Ssc signal: TD */ +#define PIO_PA15A_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA16A_TK (1u << 16) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 + +#endif /* _SAM3S8A_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/pio/pio_sam3s8b.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/pio/pio_sam3s8b.h new file mode 100644 index 000000000..9f942a976 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/pio/pio_sam3s8b.h @@ -0,0 +1,279 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8B_PIO_ +#define _SAM3S8B_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Adc signal: AD4/RTCOUT0 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Adc signal: AD5/RTCOUT1 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA29C_MCCK (1u << 29) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA24D_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA25D_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ +#define PIO_PA26D_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ +#define PIO_PA27D_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ +#define PIO_PA28D_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA29D_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ +#define PIO_PA30D_PIODC6 (1u << 30) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA31D_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA23D_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA15D_PIODCEN1 (1u << 15) /**< \brief Pioa signal: PIODCEN1 */ +#define PIO_PA16D_PIODCEN2 (1u << 16) /**< \brief Pioa signal: PIODCEN2 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PA20A_RF (1u << 20) /**< \brief Ssc signal: RF */ +#define PIO_PA19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA17A_TD (1u << 17) /**< \brief Ssc signal: TD */ +#define PIO_PA15A_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA16A_TK (1u << 16) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 + +#endif /* _SAM3S8B_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/pio/pio_sam3s8c.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/pio/pio_sam3s8c.h new file mode 100644 index 000000000..0d8a5ab44 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/pio/pio_sam3s8c.h @@ -0,0 +1,403 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8C_PIO_ +#define _SAM3S8C_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Adc signal: AD4/RTCOUT0 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Adc signal: AD5/RTCOUT1 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PC18A_A0 (1u << 18) /**< \brief Ebi signal: A0 */ +#define PIO_PC19A_A1 (1u << 19) /**< \brief Ebi signal: A1 */ +#define PIO_PC28A_A10 (1u << 28) /**< \brief Ebi signal: A10 */ +#define PIO_PC29A_A11 (1u << 29) /**< \brief Ebi signal: A11 */ +#define PIO_PC30A_A12 (1u << 30) /**< \brief Ebi signal: A12 */ +#define PIO_PC31A_A13 (1u << 31) /**< \brief Ebi signal: A13 */ +#define PIO_PA18C_A14 (1u << 18) /**< \brief Ebi signal: A14 */ +#define PIO_PA19C_A15 (1u << 19) /**< \brief Ebi signal: A15 */ +#define PIO_PA20C_A16 (1u << 20) /**< \brief Ebi signal: A16 */ +#define PIO_PA0C_A17 (1u << 0) /**< \brief Ebi signal: A17 */ +#define PIO_PA1C_A18 (1u << 1) /**< \brief Ebi signal: A18 */ +#define PIO_PA23C_A19 (1u << 23) /**< \brief Ebi signal: A19 */ +#define PIO_PC20A_A2 (1u << 20) /**< \brief Ebi signal: A2 */ +#define PIO_PA24C_A20 (1u << 24) /**< \brief Ebi signal: A20 */ +#define PIO_PC16A_A21 (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC16A_NANDALE (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC17A_A22 (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PC17A_NANDCLE (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PA25C_A23 (1u << 25) /**< \brief Ebi signal: A23 */ +#define PIO_PC21A_A3 (1u << 21) /**< \brief Ebi signal: A3 */ +#define PIO_PC22A_A4 (1u << 22) /**< \brief Ebi signal: A4 */ +#define PIO_PC23A_A5 (1u << 23) /**< \brief Ebi signal: A5 */ +#define PIO_PC24A_A6 (1u << 24) /**< \brief Ebi signal: A6 */ +#define PIO_PC25A_A7 (1u << 25) /**< \brief Ebi signal: A7 */ +#define PIO_PC26A_A8 (1u << 26) /**< \brief Ebi signal: A8 */ +#define PIO_PC27A_A9 (1u << 27) /**< \brief Ebi signal: A9 */ +#define PIO_PC0A_D0 (1u << 0) /**< \brief Ebi signal: D0 */ +#define PIO_PC1A_D1 (1u << 1) /**< \brief Ebi signal: D1 */ +#define PIO_PC2A_D2 (1u << 2) /**< \brief Ebi signal: D2 */ +#define PIO_PC3A_D3 (1u << 3) /**< \brief Ebi signal: D3 */ +#define PIO_PC4A_D4 (1u << 4) /**< \brief Ebi signal: D4 */ +#define PIO_PC5A_D5 (1u << 5) /**< \brief Ebi signal: D5 */ +#define PIO_PC6A_D6 (1u << 6) /**< \brief Ebi signal: D6 */ +#define PIO_PC7A_D7 (1u << 7) /**< \brief Ebi signal: D7 */ +#define PIO_PC9A_NANDOE (1u << 9) /**< \brief Ebi signal: NANDOE */ +#define PIO_PC10A_NANDWE (1u << 10) /**< \brief Ebi signal: NANDWE */ +#define PIO_PC14A_NCS0 (1u << 14) /**< \brief Ebi signal: NCS0 */ +#define PIO_PC15A_NCS1 (1u << 15) /**< \brief Ebi signal: NCS1 */ +#define PIO_PA22C_NCS2 (1u << 22) /**< \brief Ebi signal: NCS2 */ +#define PIO_PC12A_NCS3 (1u << 12) /**< \brief Ebi signal: NCS3 */ +#define PIO_PC11A_NRD (1u << 11) /**< \brief Ebi signal: NRD */ +#define PIO_PC13A_NWAIT (1u << 13) /**< \brief Ebi signal: NWAIT */ +#define PIO_PC8A_NWE (1u << 8) /**< \brief Ebi signal: NWE */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA29C_MCCK (1u << 29) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA24D_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA25D_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ +#define PIO_PA26D_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ +#define PIO_PA27D_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ +#define PIO_PA28D_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA29D_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ +#define PIO_PA30D_PIODC6 (1u << 30) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA31D_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA23D_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA15D_PIODCEN1 (1u << 15) /**< \brief Pioa signal: PIODCEN1 */ +#define PIO_PA16D_PIODCEN2 (1u << 16) /**< \brief Pioa signal: PIODCEN2 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PA20A_RF (1u << 20) /**< \brief Ssc signal: RF */ +#define PIO_PA19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA17A_TD (1u << 17) /**< \brief Ssc signal: TD */ +#define PIO_PA15A_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA16A_TK (1u << 16) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PC17B_CTS2 (1u << 17) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PC16B_RTS2 (1u << 16) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PC9B_RXD2 (1u << 9) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PC14B_SCK2 (1u << 14) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PC10B_TXD2 (1u << 10) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 + +#endif /* _SAM3S8C_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/pio/pio_sam3sd8a.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/pio/pio_sam3sd8a.h new file mode 100644 index 000000000..189f4c3dd --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/pio/pio_sam3sd8a.h @@ -0,0 +1,236 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3SD8A_PIO_ +#define _SAM3SD8A_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Adc signal: AD4/RTCOUT0 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Adc signal: AD5/RTCOUT1 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA24D_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA25D_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ +#define PIO_PA26D_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ +#define PIO_PA27D_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ +#define PIO_PA28D_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA29D_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ +#define PIO_PA30D_PIODC6 (1u << 30) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA31D_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA23D_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA15D_PIODCEN1 (1u << 15) /**< \brief Pioa signal: PIODCEN1 */ +#define PIO_PA16D_PIODCEN2 (1u << 16) /**< \brief Pioa signal: PIODCEN2 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PA20A_RF (1u << 20) /**< \brief Ssc signal: RF */ +#define PIO_PA19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA17A_TD (1u << 17) /**< \brief Ssc signal: TD */ +#define PIO_PA15A_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA16A_TK (1u << 16) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 + +#endif /* _SAM3SD8A_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/pio/pio_sam3sd8b.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/pio/pio_sam3sd8b.h new file mode 100644 index 000000000..37c7658c2 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/pio/pio_sam3sd8b.h @@ -0,0 +1,279 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3SD8B_PIO_ +#define _SAM3SD8B_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Adc signal: AD4/RTCOUT0 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Adc signal: AD5/RTCOUT1 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA29C_MCCK (1u << 29) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA24D_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA25D_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ +#define PIO_PA26D_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ +#define PIO_PA27D_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ +#define PIO_PA28D_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA29D_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ +#define PIO_PA30D_PIODC6 (1u << 30) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA31D_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA23D_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA15D_PIODCEN1 (1u << 15) /**< \brief Pioa signal: PIODCEN1 */ +#define PIO_PA16D_PIODCEN2 (1u << 16) /**< \brief Pioa signal: PIODCEN2 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PA20A_RF (1u << 20) /**< \brief Ssc signal: RF */ +#define PIO_PA19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA17A_TD (1u << 17) /**< \brief Ssc signal: TD */ +#define PIO_PA15A_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA16A_TK (1u << 16) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 + +#endif /* _SAM3SD8B_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/pio/pio_sam3sd8c.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/pio/pio_sam3sd8c.h new file mode 100644 index 000000000..8c186e14c --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/pio/pio_sam3sd8c.h @@ -0,0 +1,403 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3SD8C_PIO_ +#define _SAM3SD8C_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA17X1_AD0 (1u << 17) /**< \brief Adc signal: AD0 */ +#define PIO_PA18X1_AD1 (1u << 18) /**< \brief Adc signal: AD1 */ +#define PIO_PC13X1_AD10 (1u << 13) /**< \brief Adc signal: AD10 */ +#define PIO_PC15X1_AD11 (1u << 15) /**< \brief Adc signal: AD11 */ +#define PIO_PC12X1_AD12 (1u << 12) /**< \brief Adc signal: AD12 */ +#define PIO_PC29X1_AD13 (1u << 29) /**< \brief Adc signal: AD13 */ +#define PIO_PC30X1_AD14 (1u << 30) /**< \brief Adc signal: AD14 */ +#define PIO_PA19X1_AD2 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Adc signal: AD2/WKUP9 */ +#define PIO_PA20X1_AD3 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Adc signal: AD3/WKUP10 */ +#define PIO_PB0X1_AD4 (1u << 0) /**< \brief Adc signal: AD4/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Adc signal: AD4/RTCOUT0 */ +#define PIO_PB1X1_AD5 (1u << 1) /**< \brief Adc signal: AD5/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Adc signal: AD5/RTCOUT1 */ +#define PIO_PB2X1_AD6 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB2X1_WKUP12 (1u << 2) /**< \brief Adc signal: AD6/WKUP12 */ +#define PIO_PB3X1_AD7 (1u << 3) /**< \brief Adc signal: AD7 */ +#define PIO_PA21X1_AD8 (1u << 21) /**< \brief Adc signal: AD8 */ +#define PIO_PA22X1_AD9 (1u << 22) /**< \brief Adc signal: AD9 */ +#define PIO_PA8B_ADTRG (1u << 8) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PB14X1_DAC1 (1u << 14) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PC18A_A0 (1u << 18) /**< \brief Ebi signal: A0 */ +#define PIO_PC19A_A1 (1u << 19) /**< \brief Ebi signal: A1 */ +#define PIO_PC28A_A10 (1u << 28) /**< \brief Ebi signal: A10 */ +#define PIO_PC29A_A11 (1u << 29) /**< \brief Ebi signal: A11 */ +#define PIO_PC30A_A12 (1u << 30) /**< \brief Ebi signal: A12 */ +#define PIO_PC31A_A13 (1u << 31) /**< \brief Ebi signal: A13 */ +#define PIO_PA18C_A14 (1u << 18) /**< \brief Ebi signal: A14 */ +#define PIO_PA19C_A15 (1u << 19) /**< \brief Ebi signal: A15 */ +#define PIO_PA20C_A16 (1u << 20) /**< \brief Ebi signal: A16 */ +#define PIO_PA0C_A17 (1u << 0) /**< \brief Ebi signal: A17 */ +#define PIO_PA1C_A18 (1u << 1) /**< \brief Ebi signal: A18 */ +#define PIO_PA23C_A19 (1u << 23) /**< \brief Ebi signal: A19 */ +#define PIO_PC20A_A2 (1u << 20) /**< \brief Ebi signal: A2 */ +#define PIO_PA24C_A20 (1u << 24) /**< \brief Ebi signal: A20 */ +#define PIO_PC16A_A21 (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC16A_NANDALE (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC17A_A22 (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PC17A_NANDCLE (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PA25C_A23 (1u << 25) /**< \brief Ebi signal: A23 */ +#define PIO_PC21A_A3 (1u << 21) /**< \brief Ebi signal: A3 */ +#define PIO_PC22A_A4 (1u << 22) /**< \brief Ebi signal: A4 */ +#define PIO_PC23A_A5 (1u << 23) /**< \brief Ebi signal: A5 */ +#define PIO_PC24A_A6 (1u << 24) /**< \brief Ebi signal: A6 */ +#define PIO_PC25A_A7 (1u << 25) /**< \brief Ebi signal: A7 */ +#define PIO_PC26A_A8 (1u << 26) /**< \brief Ebi signal: A8 */ +#define PIO_PC27A_A9 (1u << 27) /**< \brief Ebi signal: A9 */ +#define PIO_PC0A_D0 (1u << 0) /**< \brief Ebi signal: D0 */ +#define PIO_PC1A_D1 (1u << 1) /**< \brief Ebi signal: D1 */ +#define PIO_PC2A_D2 (1u << 2) /**< \brief Ebi signal: D2 */ +#define PIO_PC3A_D3 (1u << 3) /**< \brief Ebi signal: D3 */ +#define PIO_PC4A_D4 (1u << 4) /**< \brief Ebi signal: D4 */ +#define PIO_PC5A_D5 (1u << 5) /**< \brief Ebi signal: D5 */ +#define PIO_PC6A_D6 (1u << 6) /**< \brief Ebi signal: D6 */ +#define PIO_PC7A_D7 (1u << 7) /**< \brief Ebi signal: D7 */ +#define PIO_PC9A_NANDOE (1u << 9) /**< \brief Ebi signal: NANDOE */ +#define PIO_PC10A_NANDWE (1u << 10) /**< \brief Ebi signal: NANDWE */ +#define PIO_PC14A_NCS0 (1u << 14) /**< \brief Ebi signal: NCS0 */ +#define PIO_PC15A_NCS1 (1u << 15) /**< \brief Ebi signal: NCS1 */ +#define PIO_PA22C_NCS2 (1u << 22) /**< \brief Ebi signal: NCS2 */ +#define PIO_PC12A_NCS3 (1u << 12) /**< \brief Ebi signal: NCS3 */ +#define PIO_PC11A_NRD (1u << 11) /**< \brief Ebi signal: NRD */ +#define PIO_PC13A_NWAIT (1u << 13) /**< \brief Ebi signal: NWAIT */ +#define PIO_PC8A_NWE (1u << 8) /**< \brief Ebi signal: NWE */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA29C_MCCK (1u << 29) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA24D_PIODC0 (1u << 24) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA25D_PIODC1 (1u << 25) /**< \brief Pioa signal: PIODC1 */ +#define PIO_PA26D_PIODC2 (1u << 26) /**< \brief Pioa signal: PIODC2 */ +#define PIO_PA27D_PIODC3 (1u << 27) /**< \brief Pioa signal: PIODC3 */ +#define PIO_PA28D_PIODC4 (1u << 28) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA29D_PIODC5 (1u << 29) /**< \brief Pioa signal: PIODC5 */ +#define PIO_PA30D_PIODC6 (1u << 30) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA31D_PIODC7 (1u << 31) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA23D_PIODCCLK (1u << 23) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA15D_PIODCEN1 (1u << 15) /**< \brief Pioa signal: PIODCEN1 */ +#define PIO_PA16D_PIODCEN2 (1u << 16) /**< \brief Pioa signal: PIODCEN2 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA9C_PWMFI0 (1u << 9) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA11B_PWMH0 (1u << 11) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA23B_PWMH0 (1u << 23) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC18B_PWMH0 (1u << 18) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA12B_PWMH1 (1u << 12) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA24B_PWMH1 (1u << 24) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA25B_PWMH2 (1u << 25) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB4B_PWMH2 (1u << 4) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC20B_PWMH2 (1u << 20) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA7B_PWMH3 (1u << 7) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA17C_PWMH3 (1u << 17) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB14B_PWMH3 (1u << 14) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC21B_PWMH3 (1u << 21) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA19B_PWML0 (1u << 19) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB5B_PWML0 (1u << 5) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC0B_PWML0 (1u << 0) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC13B_PWML0 (1u << 13) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA20B_PWML1 (1u << 20) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB12A_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC1B_PWML1 (1u << 1) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC15B_PWML1 (1u << 15) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA16C_PWML2 (1u << 16) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA30A_PWML2 (1u << 30) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB13A_PWML2 (1u << 13) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC2B_PWML2 (1u << 2) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA15C_PWML3 (1u << 15) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC3B_PWML3 (1u << 3) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC22B_PWML3 (1u << 22) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA12A_MISO (1u << 12) /**< \brief Spi signal: MISO */ +#define PIO_PA13A_MOSI (1u << 13) /**< \brief Spi signal: MOSI */ +#define PIO_PA11A_NPCS0 (1u << 11) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA9B_NPCS1 (1u << 9) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA31A_NPCS1 (1u << 31) /**< \brief Spi signal: NPCS1 */ +#define PIO_PB14A_NPCS1 (1u << 14) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC4B_NPCS1 (1u << 4) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA10B_NPCS2 (1u << 10) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA30B_NPCS2 (1u << 30) /**< \brief Spi signal: NPCS2 */ +#define PIO_PB2B_NPCS2 (1u << 2) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA3B_NPCS3 (1u << 3) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA22B_NPCS3 (1u << 22) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA14A_SPCK (1u << 14) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PA20A_RF (1u << 20) /**< \brief Ssc signal: RF */ +#define PIO_PA19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA17A_TD (1u << 17) /**< \brief Ssc signal: TD */ +#define PIO_PA15A_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA16A_TK (1u << 16) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PB2A_URXD1 (1u << 2) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PB3A_UTXD1 (1u << 3) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PA8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PA7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA5A_RXD0 (1u << 5) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA2B_SCK0 (1u << 2) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA6A_TXD0 (1u << 6) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA22A_TXD1 (1u << 22) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PC17B_CTS2 (1u << 17) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PC16B_RTS2 (1u << 16) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PC9B_RXD2 (1u << 9) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PC14B_SCK2 (1u << 14) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PC10B_TXD2 (1u << 10) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 + +#endif /* _SAM3SD8C_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3s8.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3s8.h new file mode 100644 index 000000000..0550476b3 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3s8.h @@ -0,0 +1,49 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8_ +#define _SAM3S8_ + +#if defined __SAM3SD8A__ + #include "sam3sd8a.h" +#elif defined __SAM3SD8B__ + #include "sam3sd8b.h" +#elif defined __SAM3SD8C__ + #include "sam3sd8c.h" +#elif defined __SAM3S8A__ + #include "sam3s8a.h" +#elif defined __SAM3S8B__ + #include "sam3s8b.h" +#elif defined __SAM3S8C__ + #include "sam3s8c.h" +#else + #error Library does not support the specified device. +#endif + +#endif /* _SAM3S8_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3s8a.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3s8a.h new file mode 100644 index 000000000..abcf69d0a --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3s8a.h @@ -0,0 +1,358 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8A_ +#define _SAM3S8A_ + +/** \addtogroup SAM3S8A_definitions SAM3S8A definitions + This file defines all structures and symbols for SAM3S8A: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3S8A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S8A_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3S8A specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3S8A Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3S8A Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3S8A Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3S8A Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3S8A Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3S8A Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3S8A Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3S8A UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3S8A UART 1 (UART1) */ + PIOA_IRQn = 11, /**< 11 SAM3S8A Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3S8A Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 14, /**< 14 SAM3S8A USART 0 (USART0) */ + TWI0_IRQn = 19, /**< 19 SAM3S8A Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3S8A Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3S8A Serial Peripheral Interface (SPI) */ + SSC_IRQn = 22, /**< 22 SAM3S8A Synchronous Serial Controler (SSC) */ + TC0_IRQn = 23, /**< 23 SAM3S8A Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3S8A Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3S8A Timer/Counter 2 (TC2) */ + ADC_IRQn = 29, /**< 29 SAM3S8A Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3S8A Digital To Analog Converter (DACC) */ + PWM_IRQn = 31, /**< 31 SAM3S8A Pulse Width Modulation (PWM) */ + CRCCU_IRQn = 32, /**< 32 SAM3S8A CRC Calculation Unit (CRCCU) */ + ACC_IRQn = 33, /**< 33 SAM3S8A Analog Comparator (ACC) */ + UDP_IRQn = 34 /**< 34 SAM3S8A USB Device Port (UDP) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3S8A core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3S8A does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3S8A uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3S8A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S8A_api Peripheral Software API */ +/*@{*/ + +#include "component/component_acc.h" +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_crccu.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udp.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3S8A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S8A_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_udp.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_acc.h" +#include "instance/instance_crccu.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3S8A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S8A_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controler (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +#define ID_CRCCU (32) /**< \brief CRC Calculation Unit (CRCCU) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_UDP (34) /**< \brief USB Device Port (UDP) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3S8A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S8A_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC (0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define UDP (0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC (0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 (0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC ((Pdc *)0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define UDP ((Udp *)0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC ((Acc *)0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 ((Pdc *)0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3S8A */ +/* ************************************************************************** */ +/** \addtogroup SAM3S8A_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3s8a.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3S8A */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x80000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (2048u) +#define IFLASH_NB_OF_LOCK_BITS (16u) +#define IRAM_SIZE (0x10000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IFLASH0_ADDR (0x00400000u) /**< Internal Flash 0 base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3S8A */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (64000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3S8A_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3s8b.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3s8b.h new file mode 100644 index 000000000..a4d517ef4 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3s8b.h @@ -0,0 +1,373 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8B_ +#define _SAM3S8B_ + +/** \addtogroup SAM3S8B_definitions SAM3S8B definitions + This file defines all structures and symbols for SAM3S8B: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3S8B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S8B_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3S8B specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3S8B Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3S8B Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3S8B Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3S8B Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3S8B Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3S8B Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3S8B Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3S8B UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3S8B UART 1 (UART1) */ + PIOA_IRQn = 11, /**< 11 SAM3S8B Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3S8B Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 14, /**< 14 SAM3S8B USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM3S8B USART 1 (USART1) */ + HSMCI_IRQn = 18, /**< 18 SAM3S8B Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 19, /**< 19 SAM3S8B Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3S8B Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3S8B Serial Peripheral Interface (SPI) */ + SSC_IRQn = 22, /**< 22 SAM3S8B Synchronous Serial Controler (SSC) */ + TC0_IRQn = 23, /**< 23 SAM3S8B Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3S8B Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3S8B Timer/Counter 2 (TC2) */ + ADC_IRQn = 29, /**< 29 SAM3S8B Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3S8B Digital To Analog Converter (DACC) */ + PWM_IRQn = 31, /**< 31 SAM3S8B Pulse Width Modulation (PWM) */ + CRCCU_IRQn = 32, /**< 32 SAM3S8B CRC Calculation Unit (CRCCU) */ + ACC_IRQn = 33, /**< 33 SAM3S8B Analog Comparator (ACC) */ + UDP_IRQn = 34 /**< 34 SAM3S8B USB Device Port (UDP) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3S8B core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3S8B does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3S8B uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3S8B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S8B_api Peripheral Software API */ +/*@{*/ + +#include "component/component_acc.h" +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_crccu.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udp.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3S8B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S8B_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_udp.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_acc.h" +#include "instance/instance_crccu.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3S8B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S8B_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controler (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +#define ID_CRCCU (32) /**< \brief CRC Calculation Unit (CRCCU) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_UDP (34) /**< \brief USB Device Port (UDP) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3S8B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S8B_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI (0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC (0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define UDP (0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC (0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 (0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI ((Pdc *)0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC ((Pdc *)0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define UDP ((Udp *)0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC ((Acc *)0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 ((Pdc *)0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3S8B */ +/* ************************************************************************** */ +/** \addtogroup SAM3S8B_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3s8b.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3S8B */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x80000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (2048u) +#define IFLASH_NB_OF_LOCK_BITS (16u) +#define IRAM_SIZE (0x10000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IFLASH0_ADDR (0x00400000u) /**< Internal Flash 0 base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3S8B */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (64000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3S8B_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3s8c.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3s8c.h new file mode 100644 index 000000000..d1bf39f60 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3s8c.h @@ -0,0 +1,400 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3S8C_ +#define _SAM3S8C_ + +/** \addtogroup SAM3S8C_definitions SAM3S8C definitions + This file defines all structures and symbols for SAM3S8C: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3S8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S8C_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3S8C specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3S8C Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3S8C Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3S8C Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3S8C Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3S8C Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3S8C Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3S8C Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3S8C UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3S8C UART 1 (UART1) */ + SMC_IRQn = 10, /**< 10 SAM3S8C Static Memory Controller (SMC) */ + PIOA_IRQn = 11, /**< 11 SAM3S8C Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3S8C Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 13, /**< 13 SAM3S8C Parallel I/O Controller C (PIOC) */ + USART0_IRQn = 14, /**< 14 SAM3S8C USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM3S8C USART 1 (USART1) */ + USART2_IRQn = 16, /**< 16 SAM3S8C USART 2 (SAM3SD8 100 pins only) (USART2) */ + HSMCI_IRQn = 18, /**< 18 SAM3S8C Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 19, /**< 19 SAM3S8C Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3S8C Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3S8C Serial Peripheral Interface (SPI) */ + SSC_IRQn = 22, /**< 22 SAM3S8C Synchronous Serial Controler (SSC) */ + TC0_IRQn = 23, /**< 23 SAM3S8C Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3S8C Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3S8C Timer/Counter 2 (TC2) */ + TC3_IRQn = 26, /**< 26 SAM3S8C Timer/Counter 3 (TC3) */ + TC4_IRQn = 27, /**< 27 SAM3S8C Timer/Counter 4 (TC4) */ + TC5_IRQn = 28, /**< 28 SAM3S8C Timer/Counter 5 (TC5) */ + ADC_IRQn = 29, /**< 29 SAM3S8C Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3S8C Digital To Analog Converter (DACC) */ + PWM_IRQn = 31, /**< 31 SAM3S8C Pulse Width Modulation (PWM) */ + CRCCU_IRQn = 32, /**< 32 SAM3S8C CRC Calculation Unit (CRCCU) */ + ACC_IRQn = 33, /**< 33 SAM3S8C Analog Comparator (ACC) */ + UDP_IRQn = 34 /**< 34 SAM3S8C USB Device Port (UDP) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3S8C core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3S8C does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3S8C uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3S8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S8C_api Peripheral Software API */ +/*@{*/ + +#include "component/component_acc.h" +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_crccu.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_smc.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udp.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3S8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S8C_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_tc1.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_usart2.h" +#include "instance/instance_udp.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_acc.h" +#include "instance/instance_crccu.h" +#include "instance/instance_smc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_pioc.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3S8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S8C_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_SMC (10) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (13) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (16) /**< \brief USART 2 (SAM3SD8 100 pins only) (USART2) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controler (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_TC3 (26) /**< \brief Timer/Counter 3 (TC3) */ +#define ID_TC4 (27) /**< \brief Timer/Counter 4 (TC4) */ +#define ID_TC5 (28) /**< \brief Timer/Counter 5 (TC5) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +#define ID_CRCCU (32) /**< \brief CRC Calculation Unit (CRCCU) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_UDP (34) /**< \brief USB Device Port (UDP) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3S8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S8C_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI (0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC (0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40014000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 (0x4002C000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 (0x4002C100U) /**< \brief (PDC_USART2) Base Address */ +#define UDP (0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC (0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define SMC (0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 (0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI ((Pdc *)0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC ((Pdc *)0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40014000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 ((Usart *)0x4002C000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 ((Pdc *)0x4002C100U) /**< \brief (PDC_USART2) Base Address */ +#define UDP ((Udp *)0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC ((Acc *)0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define SMC ((Smc *)0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 ((Pdc *)0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3S8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3S8C_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3s8c.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3S8C */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x80000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (2048u) +#define IFLASH_NB_OF_LOCK_BITS (16u) +#define IRAM_SIZE (0x10000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IFLASH0_ADDR (0x00400000u) /**< Internal Flash 0 base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3S8C */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (64000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3S8C_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3sd8a.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3sd8a.h new file mode 100644 index 000000000..d118aae17 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3sd8a.h @@ -0,0 +1,364 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3SD8A_ +#define _SAM3SD8A_ + +/** \addtogroup SAM3SD8A_definitions SAM3SD8A definitions + This file defines all structures and symbols for SAM3SD8A: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3SD8A */ +/* ************************************************************************** */ +/** \addtogroup SAM3SD8A_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3SD8A specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3SD8A Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3SD8A Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3SD8A Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3SD8A Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3SD8A Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3SD8A Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3SD8A Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3SD8A UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3SD8A UART 1 (UART1) */ + PIOA_IRQn = 11, /**< 11 SAM3SD8A Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3SD8A Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 14, /**< 14 SAM3SD8A USART 0 (USART0) */ + TWI0_IRQn = 19, /**< 19 SAM3SD8A Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3SD8A Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3SD8A Serial Peripheral Interface (SPI) */ + SSC_IRQn = 22, /**< 22 SAM3SD8A Synchronous Serial Controler (SSC) */ + TC0_IRQn = 23, /**< 23 SAM3SD8A Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3SD8A Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3SD8A Timer/Counter 2 (TC2) */ + ADC_IRQn = 29, /**< 29 SAM3SD8A Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3SD8A Digital To Analog Converter (DACC) */ + PWM_IRQn = 31, /**< 31 SAM3SD8A Pulse Width Modulation (PWM) */ + CRCCU_IRQn = 32, /**< 32 SAM3SD8A CRC Calculation Unit (CRCCU) */ + ACC_IRQn = 33, /**< 33 SAM3SD8A Analog Comparator (ACC) */ + UDP_IRQn = 34 /**< 34 SAM3SD8A USB Device Port (UDP) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3SD8A core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3SD8A does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3SD8A uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3SD8A */ +/* ************************************************************************** */ +/** \addtogroup SAM3SD8A_api Peripheral Software API */ +/*@{*/ + +#include "component/component_acc.h" +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_crccu.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udp.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3SD8A */ +/* ************************************************************************** */ +/** \addtogroup SAM3SD8A_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_udp.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_acc.h" +#include "instance/instance_crccu.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3SD8A */ +/* ************************************************************************** */ +/** \addtogroup SAM3SD8A_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controler (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +#define ID_CRCCU (32) /**< \brief CRC Calculation Unit (CRCCU) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_UDP (34) /**< \brief USB Device Port (UDP) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3SD8A */ +/* ************************************************************************** */ +/** \addtogroup SAM3SD8A_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC (0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define UDP (0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC (0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 (0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC ((Pdc *)0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define UDP ((Udp *)0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC ((Acc *)0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 ((Pdc *)0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3SD8A */ +/* ************************************************************************** */ +/** \addtogroup SAM3SD8A_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3sd8a.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3SD8A */ +/* ************************************************************************** */ + +#define IFLASH0_SIZE (0x40000u) +#define IFLASH0_PAGE_SIZE (256u) +#define IFLASH0_LOCK_REGION_SIZE (16384u) +#define IFLASH0_NB_OF_PAGES (1024u) +#define IFLASH0_NB_OF_LOCK_BITS (16u) +#define IFLASH1_SIZE (0x40000u) +#define IFLASH1_PAGE_SIZE (256u) +#define IFLASH1_LOCK_REGION_SIZE (16384u) +#define IFLASH1_NB_OF_PAGES (1024u) +#define IFLASH1_NB_OF_LOCK_BITS (16u) +#define IRAM_SIZE (0x10000u) +#define IFLASH_SIZE (0x80000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IFLASH0_ADDR (0x00400000u) /**< Internal Flash 0 base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3SD8A */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (64000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3SD8A_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3sd8b.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3sd8b.h new file mode 100644 index 000000000..bfab73420 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3sd8b.h @@ -0,0 +1,379 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3SD8B_ +#define _SAM3SD8B_ + +/** \addtogroup SAM3SD8B_definitions SAM3SD8B definitions + This file defines all structures and symbols for SAM3SD8B: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3SD8B */ +/* ************************************************************************** */ +/** \addtogroup SAM3SD8B_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3SD8B specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3SD8B Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3SD8B Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3SD8B Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3SD8B Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3SD8B Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3SD8B Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3SD8B Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3SD8B UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3SD8B UART 1 (UART1) */ + PIOA_IRQn = 11, /**< 11 SAM3SD8B Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3SD8B Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 14, /**< 14 SAM3SD8B USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM3SD8B USART 1 (USART1) */ + HSMCI_IRQn = 18, /**< 18 SAM3SD8B Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 19, /**< 19 SAM3SD8B Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3SD8B Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3SD8B Serial Peripheral Interface (SPI) */ + SSC_IRQn = 22, /**< 22 SAM3SD8B Synchronous Serial Controler (SSC) */ + TC0_IRQn = 23, /**< 23 SAM3SD8B Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3SD8B Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3SD8B Timer/Counter 2 (TC2) */ + ADC_IRQn = 29, /**< 29 SAM3SD8B Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3SD8B Digital To Analog Converter (DACC) */ + PWM_IRQn = 31, /**< 31 SAM3SD8B Pulse Width Modulation (PWM) */ + CRCCU_IRQn = 32, /**< 32 SAM3SD8B CRC Calculation Unit (CRCCU) */ + ACC_IRQn = 33, /**< 33 SAM3SD8B Analog Comparator (ACC) */ + UDP_IRQn = 34 /**< 34 SAM3SD8B USB Device Port (UDP) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3SD8B core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3SD8B does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3SD8B uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3SD8B */ +/* ************************************************************************** */ +/** \addtogroup SAM3SD8B_api Peripheral Software API */ +/*@{*/ + +#include "component/component_acc.h" +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_crccu.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udp.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3SD8B */ +/* ************************************************************************** */ +/** \addtogroup SAM3SD8B_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_udp.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_acc.h" +#include "instance/instance_crccu.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3SD8B */ +/* ************************************************************************** */ +/** \addtogroup SAM3SD8B_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controler (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +#define ID_CRCCU (32) /**< \brief CRC Calculation Unit (CRCCU) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_UDP (34) /**< \brief USB Device Port (UDP) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3SD8B */ +/* ************************************************************************** */ +/** \addtogroup SAM3SD8B_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI (0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC (0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define UDP (0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC (0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 (0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI ((Pdc *)0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC ((Pdc *)0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define UDP ((Udp *)0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC ((Acc *)0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 ((Pdc *)0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3SD8B */ +/* ************************************************************************** */ +/** \addtogroup SAM3SD8B_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3sd8b.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3SD8B */ +/* ************************************************************************** */ + +#define IFLASH0_SIZE (0x40000u) +#define IFLASH0_PAGE_SIZE (256u) +#define IFLASH0_LOCK_REGION_SIZE (16384u) +#define IFLASH0_NB_OF_PAGES (1024u) +#define IFLASH0_NB_OF_LOCK_BITS (16u) +#define IFLASH1_SIZE (0x40000u) +#define IFLASH1_PAGE_SIZE (256u) +#define IFLASH1_LOCK_REGION_SIZE (16384u) +#define IFLASH1_NB_OF_PAGES (1024u) +#define IFLASH1_NB_OF_LOCK_BITS (16u) +#define IRAM_SIZE (0x10000u) +#define IFLASH_SIZE (0x80000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IFLASH0_ADDR (0x00400000u) /**< Internal Flash 0 base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3SD8B */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (64000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3SD8B_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3sd8c.h b/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3sd8c.h new file mode 100644 index 000000000..08ddfcb68 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/include/sam3sd8c.h @@ -0,0 +1,406 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3SD8C_ +#define _SAM3SD8C_ + +/** \addtogroup SAM3SD8C_definitions SAM3SD8C definitions + This file defines all structures and symbols for SAM3SD8C: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3SD8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3SD8C_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3SD8C specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3SD8C Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3SD8C Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3SD8C Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3SD8C Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3SD8C Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3SD8C Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAM3SD8C Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 8, /**< 8 SAM3SD8C UART 0 (UART0) */ + UART1_IRQn = 9, /**< 9 SAM3SD8C UART 1 (UART1) */ + SMC_IRQn = 10, /**< 10 SAM3SD8C Static Memory Controller (SMC) */ + PIOA_IRQn = 11, /**< 11 SAM3SD8C Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3SD8C Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 13, /**< 13 SAM3SD8C Parallel I/O Controller C (PIOC) */ + USART0_IRQn = 14, /**< 14 SAM3SD8C USART 0 (USART0) */ + USART1_IRQn = 15, /**< 15 SAM3SD8C USART 1 (USART1) */ + USART2_IRQn = 16, /**< 16 SAM3SD8C USART 2 (SAM3SD8 100 pins only) (USART2) */ + HSMCI_IRQn = 18, /**< 18 SAM3SD8C Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 19, /**< 19 SAM3SD8C Two Wire Interface 0 (TWI0) */ + TWI1_IRQn = 20, /**< 20 SAM3SD8C Two Wire Interface 1 (TWI1) */ + SPI_IRQn = 21, /**< 21 SAM3SD8C Serial Peripheral Interface (SPI) */ + SSC_IRQn = 22, /**< 22 SAM3SD8C Synchronous Serial Controler (SSC) */ + TC0_IRQn = 23, /**< 23 SAM3SD8C Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAM3SD8C Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAM3SD8C Timer/Counter 2 (TC2) */ + TC3_IRQn = 26, /**< 26 SAM3SD8C Timer/Counter 3 (TC3) */ + TC4_IRQn = 27, /**< 27 SAM3SD8C Timer/Counter 4 (TC4) */ + TC5_IRQn = 28, /**< 28 SAM3SD8C Timer/Counter 5 (TC5) */ + ADC_IRQn = 29, /**< 29 SAM3SD8C Analog To Digital Converter (ADC) */ + DACC_IRQn = 30, /**< 30 SAM3SD8C Digital To Analog Converter (DACC) */ + PWM_IRQn = 31, /**< 31 SAM3SD8C Pulse Width Modulation (PWM) */ + CRCCU_IRQn = 32, /**< 32 SAM3SD8C CRC Calculation Unit (CRCCU) */ + ACC_IRQn = 33, /**< 33 SAM3SD8C Analog Comparator (ACC) */ + UDP_IRQn = 34 /**< 34 SAM3SD8C USB Device Port (UDP) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3SD8C core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3SD8C does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3SD8C uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3SD8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3SD8C_api Peripheral Software API */ +/*@{*/ + +#include "component/component_acc.h" +#include "component/component_adc.h" +#include "component/component_chipid.h" +#include "component/component_crccu.h" +#include "component/component_dacc.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_smc.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udp.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3SD8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3SD8C_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_tc1.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_usart2.h" +#include "instance/instance_udp.h" +#include "instance/instance_adc.h" +#include "instance/instance_dacc.h" +#include "instance/instance_acc.h" +#include "instance/instance_crccu.h" +#include "instance/instance_smc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart0.h" +#include "instance/instance_chipid.h" +#include "instance/instance_uart1.h" +#include "instance/instance_efc.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_pioc.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3SD8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3SD8C_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 8) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 9) /**< \brief UART 1 (UART1) */ +#define ID_SMC (10) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (13) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_USART0 (14) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (15) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (16) /**< \brief USART 2 (SAM3SD8 100 pins only) (USART2) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (19) /**< \brief Two Wire Interface 0 (TWI0) */ +#define ID_TWI1 (20) /**< \brief Two Wire Interface 1 (TWI1) */ +#define ID_SPI (21) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controler (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_TC3 (26) /**< \brief Timer/Counter 3 (TC3) */ +#define ID_TC4 (27) /**< \brief Timer/Counter 4 (TC4) */ +#define ID_TC5 (28) /**< \brief Timer/Counter 5 (TC5) */ +#define ID_ADC (29) /**< \brief Analog To Digital Converter (ADC) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM (31) /**< \brief Pulse Width Modulation (PWM) */ +#define ID_CRCCU (32) /**< \brief CRC Calculation Unit (CRCCU) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_UDP (34) /**< \brief USB Device Port (UDP) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3SD8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3SD8C_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI (0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC (0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI (0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 (0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40014000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 (0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 (0x4002C000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 (0x4002C100U) /**< \brief (PDC_USART2) Base Address */ +#define UDP (0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC (0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC (0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC (0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU (0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define SMC (0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 (0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 (0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 (0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC (0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA (0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC (0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1490U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define PDC_HSMCI ((Pdc *)0x40000100U) /**< \brief (PDC_HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define PDC_SSC ((Pdc *)0x40004100U) /**< \brief (PDC_SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define PDC_SPI ((Pdc *)0x40008100U) /**< \brief (PDC_SPI ) Base Address */ +#define TC0 ((Tc *)0x40010000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40014000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 ((Twi *)0x40018000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40018100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x4001C000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x4001C100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40020000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40020100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40024100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x40028100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 ((Usart *)0x4002C000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 ((Pdc *)0x4002C100U) /**< \brief (PDC_USART2) Base Address */ +#define UDP ((Udp *)0x40034000U) /**< \brief (UDP ) Base Address */ +#define ADC ((Adc *)0x40038000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x40038100U) /**< \brief (PDC_ADC ) Base Address */ +#define DACC ((Dacc *)0x4003C000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x4003C100U) /**< \brief (PDC_DACC ) Base Address */ +#define ACC ((Acc *)0x40040000U) /**< \brief (ACC ) Base Address */ +#define CRCCU ((Crccu *)0x40044000U) /**< \brief (CRCCU ) Base Address */ +#define SMC ((Smc *)0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */ +#define PDC_UART0 ((Pdc *)0x400E0700U) /**< \brief (PDC_UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define UART1 ((Uart *)0x400E0800U) /**< \brief (UART1 ) Base Address */ +#define PDC_UART1 ((Pdc *)0x400E0900U) /**< \brief (PDC_UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0A00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PDC_PIOA ((Pdc *)0x400E0F68U) /**< \brief (PDC_PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define RSTC ((Rstc *)0x400E1400U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1410U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1430U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1450U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1460U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1490U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3SD8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3SD8C_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3sd8c.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3SD8C */ +/* ************************************************************************** */ + +#define IFLASH0_SIZE (0x40000u) +#define IFLASH0_PAGE_SIZE (256u) +#define IFLASH0_LOCK_REGION_SIZE (16384u) +#define IFLASH0_NB_OF_PAGES (1024u) +#define IFLASH0_NB_OF_LOCK_BITS (16u) +#define IFLASH1_SIZE (0x40000u) +#define IFLASH1_PAGE_SIZE (256u) +#define IFLASH1_LOCK_REGION_SIZE (16384u) +#define IFLASH1_NB_OF_PAGES (1024u) +#define IFLASH1_NB_OF_LOCK_BITS (16u) +#define IRAM_SIZE (0x10000u) +#define IFLASH_SIZE (0x80000u) + +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IFLASH0_ADDR (0x00400000u) /**< Internal Flash 0 base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IRAM_ADDR (0x20000000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3SD8C */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (64000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3SD8C_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/source/templates/exceptions.c b/hardware/sam/system/libsam/cmsis/sam3sd8/source/templates/exceptions.c new file mode 100644 index 000000000..f67d1b6a3 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/source/templates/exceptions.c @@ -0,0 +1,143 @@ +/*! \file ********************************************************************* + * + * \brief This file contains the default exception handlers. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \note + * The exception handler has weak aliases. + * As they are weak aliases, any function with the same name will override + * this definition. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#include "exceptions.h" + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +#ifdef __GNUC__ +/* Cortex-M3 core handlers */ +void Reset_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void NMI_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void MemManage_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void BusFault_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void UsageFault_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVC_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void DebugMon_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void ACC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void ADC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void CRCCU_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void DAC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void EEFC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void MCI_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOA_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOB_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PMC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PWM_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void RSTC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTT_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SMC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SPI_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SSC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SUPC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC2_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TWI0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TWI1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void UART0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void UART1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void USART0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void USART1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void USBD_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* __GNUC__ */ + +#ifdef __ICCARM__ +/* Cortex-M3 core handlers */ +#pragma weak Reset_Handler=Dummy_Handler +#pragma weak NMI_Handler=Dummy_Handler +#pragma weak HardFault_Handler=Dummy_Handler +#pragma weak MemManage_Handler=Dummy_Handler +#pragma weak BusFault_Handler=Dummy_Handler +#pragma weak UsageFault_Handler=Dummy_Handler +#pragma weak SVC_Handler=Dummy_Handler +#pragma weak DebugMon_Handler=Dummy_Handler +#pragma weak PendSV_Handler=Dummy_Handler +#pragma weak SysTick_Handler=Dummy_Handler + +/* Peripherals handlers */ +#pragma weak ACC_IrqHandler=Dummy_Handler +#pragma weak ADC_IrqHandler=Dummy_Handler +#pragma weak CRCCU_IrqHandler=Dummy_Handler +#pragma weak DAC_IrqHandler=Dummy_Handler +#pragma weak EEFC_IrqHandler=Dummy_Handler +#pragma weak MCI_IrqHandler=Dummy_Handler +#pragma weak PIOA_IrqHandler=Dummy_Handler +#pragma weak PIOB_IrqHandler=Dummy_Handler +#pragma weak PIOC_IrqHandler=Dummy_Handler +#pragma weak PMC_IrqHandler=Dummy_Handler +#pragma weak PWM_IrqHandler=Dummy_Handler +#pragma weak RSTC_IrqHandler=Dummy_Handler +#pragma weak RTC_IrqHandler=Dummy_Handler +#pragma weak RTT_IrqHandler=Dummy_Handler +#pragma weak SMC_IrqHandler=Dummy_Handler +#pragma weak SPI_IrqHandler=Dummy_Handler +#pragma weak SSC_IrqHandler=Dummy_Handler +#pragma weak SUPC_IrqHandler=Dummy_Handler +#pragma weak TC0_IrqHandler=Dummy_Handler +#pragma weak TC1_IrqHandler=Dummy_Handler +#pragma weak TC2_IrqHandler=Dummy_Handler +#pragma weak TC3_IrqHandler=Dummy_Handler +#pragma weak TC4_IrqHandler=Dummy_Handler +#pragma weak TC5_IrqHandler=Dummy_Handler +#pragma weak TWI0_IrqHandler=Dummy_Handler +#pragma weak TWI1_IrqHandler=Dummy_Handler +#pragma weak UART0_IrqHandler=Dummy_Handler +#pragma weak UART1_IrqHandler=Dummy_Handler +#pragma weak USART0_IrqHandler=Dummy_Handler +#pragma weak USART1_IrqHandler=Dummy_Handler +#pragma weak USBD_IrqHandler=Dummy_Handler +#pragma weak WDT_IrqHandler=Dummy_Handler +#endif /* __ICCARM__ */ + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/source/templates/exceptions.h b/hardware/sam/system/libsam/cmsis/sam3sd8/source/templates/exceptions.h new file mode 100644 index 000000000..9fe540757 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/source/templates/exceptions.h @@ -0,0 +1,88 @@ +/*! \file ********************************************************************* + * + * \brief This file contains the interface for default exception handlers. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#ifndef EXCEPTIONS_H_INCLUDED +#define EXCEPTIONS_H_INCLUDED + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +/* Function prototype for exception table items (interrupt handler). */ +typedef void (*IntFunc) (void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M3 core handlers */ +void Reset_Handler(void); +void NMI_Handler(void); +void HardFault_Handler(void); +void MemManage_Handler(void); +void BusFault_Handler(void); +void UsageFault_Handler(void); +void SVC_Handler(void); +void DebugMon_Handler(void); +void PendSV_Handler(void); +void SysTick_Handler(void); + +/* Peripherals handlers */ +void ACC_IrqHandler(void); +void ADC_IrqHandler(void); +void CRCCU_IrqHandler(void); +void DAC_IrqHandler(void); +void EEFC_IrqHandler(void); +void MCI_IrqHandler(void); +void PIOA_IrqHandler(void); +void PIOB_IrqHandler(void); +void PIOC_IrqHandler(void); +void PMC_IrqHandler(void); +void PWM_IrqHandler(void); +void RSTC_IrqHandler(void); +void RTC_IrqHandler(void); +void RTT_IrqHandler(void); +void SMC_IrqHandler(void); +void SPI_IrqHandler(void); +void SSC_IrqHandler(void); +void SUPC_IrqHandler(void); +void TC0_IrqHandler(void); +void TC1_IrqHandler(void); +void TC2_IrqHandler(void); +void TC3_IrqHandler(void); +void TC4_IrqHandler(void); +void TC5_IrqHandler(void); +void TWI0_IrqHandler(void); +void TWI1_IrqHandler(void); +void UART0_IrqHandler(void); +void UART1_IrqHandler(void); +void USART0_IrqHandler(void); +void USART1_IrqHandler(void); +void USBD_IrqHandler(void); +void WDT_IrqHandler(void); + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ + +#endif /* EXCEPTIONS_H_INCLUDED */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/source/templates/gcc/startup_sam3sd8.c b/hardware/sam/system/libsam/cmsis/sam3sd8/source/templates/gcc/startup_sam3sd8.c new file mode 100644 index 000000000..67c3d62b4 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/source/templates/gcc/startup_sam3sd8.c @@ -0,0 +1,137 @@ +/*! \file ********************************************************************* + * + * \brief Startup file for SAM3S8/SAM3SD. + * + * $asf_license$ + * + * This file defines common SAM series. + * + * - Compiler: ARMGCC + * - Supported devices: All SAM3S8/SAM3SD devices can be used. + * - AppNote: + * + ******************************************************************************/ + +#include "../exceptions.h" +#include "sam3.h" + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +IntFunc exception_table[] = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + (IntFunc) (&_estack), + Reset_Handler, + + NMI_Handler, + HardFault_Handler, + MemManage_Handler, + BusFault_Handler, + UsageFault_Handler, + 0, 0, 0, 0, /* Reserved */ + SVC_Handler, + DebugMon_Handler, + 0, /* Reserved */ + PendSV_Handler, + SysTick_Handler, + + /* Configurable interrupts */ + SUPC_IrqHandler, /* 0 Supply Controller */ + RSTC_IrqHandler, /* 1 Reset Controller */ + RTC_IrqHandler, /* 2 Real Time Clock */ + RTT_IrqHandler, /* 3 Real Time Timer */ + WDT_IrqHandler, /* 4 Watchdog Timer */ + PMC_IrqHandler, /* 5 PMC */ + EEFC_IrqHandler, /* 6 EEFC */ + Dummy_Handler, /* 7 Reserved */ + UART0_IrqHandler, /* 8 UART0 */ + UART1_IrqHandler, /* 9 UART1 */ + SMC_IrqHandler, /* 10 SMC */ + PIOA_IrqHandler, /* 11 Parallel IO Controller A */ + PIOB_IrqHandler, /* 12 Parallel IO Controller B */ + PIOC_IrqHandler, /* 13 Parallel IO Controller C */ + USART0_IrqHandler, /* 14 USART 0 */ + USART1_IrqHandler, /* 15 USART 1 */ + Dummy_Handler, /* 16 Reserved */ + Dummy_Handler, /* 17 Reserved */ + MCI_IrqHandler, /* 18 MCI */ + TWI0_IrqHandler, /* 19 TWI 0 */ + TWI1_IrqHandler, /* 20 TWI 1 */ + SPI_IrqHandler, /* 21 SPI */ + SSC_IrqHandler, /* 22 SSC */ + TC0_IrqHandler, /* 23 Timer Counter 0 */ + TC1_IrqHandler, /* 24 Timer Counter 1 */ + TC2_IrqHandler, /* 25 Timer Counter 2 */ + TC3_IrqHandler, /* 26 Timer Counter 3 */ + TC4_IrqHandler, /* 27 Timer Counter 4 */ + TC5_IrqHandler, /* 28 Timer Counter 5 */ + ADC_IrqHandler, /* 29 ADC controller */ + DAC_IrqHandler, /* 30 DAC controller */ + PWM_IrqHandler, /* 31 PWM */ + CRCCU_IrqHandler, /* 32 CRC Calculation Unit */ + ACC_IrqHandler, /* 33 Analog Comparator */ + USBD_IrqHandler, /* 34 USB Device Port */ + Dummy_Handler /* 35 not used */ +}; + +/* TEMPORARY PATCH FOR SCB */ +#define SCB_VTOR_TBLBASE_Pos 29 /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + if (((uint32_t) pSrc >= IRAM_ADDR) && ((uint32_t) pSrc < IRAM_ADDR + IRAM_SIZE)) { + SCB->VTOR |= 1 << SCB_VTOR_TBLBASE_Pos; + } + + /* Initialize the C library */ + __libc_init_array(); + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/source/templates/iar/startup_sam3sd8.c b/hardware/sam/system/libsam/cmsis/sam3sd8/source/templates/iar/startup_sam3sd8.c new file mode 100644 index 000000000..4e025ce4f --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/source/templates/iar/startup_sam3sd8.c @@ -0,0 +1,113 @@ +/*! \file ********************************************************************* + * + * \brief Startup file for SAM3S8/SAM3SD. + * + * $asf_license$ + * + * This file defines common SAM series. + * + * - Compiler: IAR EWARM + * - Supported devices: All SAM3S8/SAM3SD devices can be used. + * - AppNote: + * + ******************************************************************************/ + +#include "../exceptions.h" +#include "sam3.h" + +typedef void (*intfunc) (void); +typedef union { intfunc __fun; void * __ptr; } intvec_elem; + +void __iar_program_start(void); +int __low_level_init(void); + +/* Exception Table */ +#pragma language=extended +#pragma segment="CSTACK" + +/* The name "__vector_table" has special meaning for C-SPY: */ +/* it is where the SP start value is found, and the NVIC vector */ +/* table register (VTOR) is initialized to this address if != 0 */ + +#pragma section = ".intvec" +#pragma location = ".intvec" +const intvec_elem __vector_table[] = { + {.__ptr = __sfe("CSTACK")}, + Reset_Handler, + + NMI_Handler, + HardFault_Handler, + MemManage_Handler, + BusFault_Handler, + UsageFault_Handler, + 0, 0, 0, 0, /* Reserved */ + SVC_Handler, + DebugMon_Handler, + 0, /* Reserved */ + PendSV_Handler, + SysTick_Handler, + + /* Configurable interrupts */ + SUPC_IrqHandler, /* 0 Supply Controller */ + RSTC_IrqHandler, /* 1 Reset Controller */ + RTC_IrqHandler, /* 2 Real Time Clock */ + RTT_IrqHandler, /* 3 Real Time Timer */ + WDT_IrqHandler, /* 4 Watchdog Timer */ + PMC_IrqHandler, /* 5 PMC */ + EEFC_IrqHandler, /* 6 EEFC */ + Dummy_Handler, /* 7 Reserved */ + UART0_IrqHandler, /* 8 UART0 */ + UART1_IrqHandler, /* 9 UART1 */ + SMC_IrqHandler, /* 10 SMC */ + PIOA_IrqHandler, /* 11 Parallel IO Controller A */ + PIOB_IrqHandler, /* 12 Parallel IO Controller B */ + PIOC_IrqHandler, /* 13 Parallel IO Controller C */ + USART0_IrqHandler, /* 14 USART 0 */ + USART1_IrqHandler, /* 15 USART 1 */ + Dummy_Handler, /* 16 Reserved */ + Dummy_Handler, /* 17 Reserved */ + MCI_IrqHandler, /* 18 MCI */ + TWI0_IrqHandler, /* 19 TWI 0 */ + TWI1_IrqHandler, /* 20 TWI 1 */ + SPI_IrqHandler, /* 21 SPI */ + SSC_IrqHandler, /* 22 SSC */ + TC0_IrqHandler, /* 23 Timer Counter 0 */ + TC1_IrqHandler, /* 24 Timer Counter 1 */ + TC2_IrqHandler, /* 25 Timer Counter 2 */ + TC3_IrqHandler, /* 26 Timer Counter 3 */ + TC4_IrqHandler, /* 27 Timer Counter 4 */ + TC5_IrqHandler, /* 28 Timer Counter 5 */ + ADC_IrqHandler, /* 29 ADC controller */ + DAC_IrqHandler, /* 30 DAC controller */ + PWM_IrqHandler, /* 31 PWM */ + CRCCU_IrqHandler, /* 32 CRC Calculation Unit */ + ACC_IrqHandler, /* 33 Analog Comparator */ + USBD_IrqHandler, /* 34 USB Device Port */ + Dummy_Handler /* 35 not used */ +}; + +/**------------------------------------------------------------------------------ + * This is the code that gets called on processor reset. To initialize the + * device. + *------------------------------------------------------------------------------*/ +int __low_level_init(void) +{ + uint32_t *pSrc = __section_begin(".intvec"); + + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + if (((uint32_t) pSrc >= IRAM_ADDR) && ((uint32_t) pSrc < IRAM_ADDR + IRAM_SIZE)) { + SCB->VTOR |= 1 << SCB_VTOR_TBLBASE_Pos; + } + + return 1; /* if return 0, the data sections will not be initialized */ +} + +/**------------------------------------------------------------------------------ + * This is the code that gets called on processor reset. To initialize the + * device. + *------------------------------------------------------------------------------*/ +void Reset_Handler(void) +{ + __iar_program_start(); +} diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/source/templates/system_sam3sd8.c b/hardware/sam/system/libsam/cmsis/sam3sd8/source/templates/system_sam3sd8.c new file mode 100644 index 000000000..507f74499 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/source/templates/system_sam3sd8.c @@ -0,0 +1,196 @@ +/*! \file ********************************************************************* + * + * \brief Provides the low-level initialization functions that called + * on chip startup. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#include "system_sam3sd8.h" +#include "sam3s8.h" + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +/* Clock settings (64MHz) */ +#define SYS_BOARD_OSCOUNT (CKGR_MOR_MOSCXTST(0x8)) +#define SYS_BOARD_PLLAR (CKGR_PLLAR_ONE \ + | CKGR_PLLAR_MULA(0xf) \ + | CKGR_PLLAR_PLLACOUNT(0x3f) \ + | CKGR_PLLAR_DIVA(0x3)) +#define SYS_BOARD_MCKR (PMC_MCKR_PRES_CLK_1 | PMC_MCKR_CSS_PLLA_CLK) + +/* Clock Definitions */ +#define SYS_FREQ_XTAL_32K (32768UL) /* External 32K crystal frequency */ +#define SYS_FREQ_XTAL_XTAL12M (12000000UL) /* External 12M crystal frequency */ + +#define SYS_FREQ_FWS_0 (21000000UL) /* Maximum operating frequency when FWS is 0 */ +#define SYS_FREQ_FWS_1 (35000000UL) /* Maximum operating frequency when FWS is 1 */ +#define SYS_FREQ_FWS_2 (60000000UL) /* Maximum operating frequency when FWS is 2 */ + +#define SYS_CKGR_MOR_KEY_VALUE CKGR_MOR_KEY(0x37) /* Key to unlock MOR register */ + +/* FIXME: should be generated by sock */ +uint32_t SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + +/** + * \brief Setup the microcontroller system. + * Initialize the System and update the SystemFrequency variable. + */ +void SystemInit(void) +{ + /* Set 3 FWS for Embedded Flash Access */ + EFC->EEFC_FMR = EEFC_FMR_FWS(CHIP_FLASH_WAIT_STATE); + + /* Initialize main oscillator */ + if (!(PMC->CKGR_MOR & CKGR_MOR_MOSCSEL)) { + PMC->CKGR_MOR = SYS_CKGR_MOR_KEY_VALUE | SYS_BOARD_OSCOUNT | + CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN; + while (!(PMC->PMC_SR & PMC_SR_MOSCXTS)) { + } + } + + /* Switch to 3-20MHz Xtal oscillator */ + PMC->CKGR_MOR = SYS_CKGR_MOR_KEY_VALUE | SYS_BOARD_OSCOUNT | CKGR_MOR_MOSCRCEN | + CKGR_MOR_MOSCXTEN | CKGR_MOR_MOSCSEL; + + while (!(PMC->PMC_SR & PMC_SR_MOSCSELS)) { + } + PMC->PMC_MCKR = (PMC->PMC_MCKR & ~(uint32_t)PMC_MCKR_CSS_Msk) | PMC_MCKR_CSS_MAIN_CLK; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)) { + } + + /* Initialize PLLA */ + PMC->CKGR_PLLAR = SYS_BOARD_PLLAR; + while (!(PMC->PMC_SR & PMC_SR_LOCKA)) { + } + + /* Switch to main clock */ + PMC->PMC_MCKR = (SYS_BOARD_MCKR & ~PMC_MCKR_CSS_Msk) | PMC_MCKR_CSS_MAIN_CLK; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)) { + } + + /* Switch to PLLA */ + PMC->PMC_MCKR = SYS_BOARD_MCKR; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)) { + } + + SystemCoreClock = CHIP_FREQ_CPU_MAX; +} + +void SystemCoreClockUpdate(void) +{ + /* Determine clock frequency according to clock register values */ + switch (PMC->PMC_MCKR & PMC_MCKR_CSS_Msk) { + case PMC_MCKR_CSS_SLOW_CLK: /* Slow clock */ + if (SUPC->SUPC_SR & SUPC_SR_OSCSEL) { + SystemCoreClock = SYS_FREQ_XTAL_32K; + } else { + SystemCoreClock = CHIP_FREQ_SLCK_RC; + } + break; + case PMC_MCKR_CSS_MAIN_CLK: /* Main clock */ + if (PMC->CKGR_MOR & CKGR_MOR_MOSCSEL) { + SystemCoreClock = SYS_FREQ_XTAL_XTAL12M; + } else { + SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + + switch (PMC->CKGR_MOR & CKGR_MOR_MOSCRCF_Msk) { + case CKGR_MOR_MOSCRCF_4_MHz: + break; + case CKGR_MOR_MOSCRCF_8_MHz: + SystemCoreClock *= 2U; + break; + case CKGR_MOR_MOSCRCF_12_MHz: + SystemCoreClock *= 3U; + break; + default: + break; + } + } + break; + case PMC_MCKR_CSS_PLLA_CLK: /* PLLA clock */ + case PMC_MCKR_CSS_PLLB_CLK: /* PLLB clock */ + if (PMC->CKGR_MOR & CKGR_MOR_MOSCSEL) { + SystemCoreClock = SYS_FREQ_XTAL_XTAL12M; + } else { + SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + + switch (PMC->CKGR_MOR & CKGR_MOR_MOSCRCF_Msk) { + case CKGR_MOR_MOSCRCF_4_MHz: + break; + case CKGR_MOR_MOSCRCF_8_MHz: + SystemCoreClock *= 2U; + break; + case CKGR_MOR_MOSCRCF_12_MHz: + SystemCoreClock *= 3U; + break; + default: + break; + } + } + if ((PMC->PMC_MCKR & PMC_MCKR_CSS_Msk) == PMC_MCKR_CSS_PLLA_CLK) { + SystemCoreClock *= ((((PMC->CKGR_PLLAR) & CKGR_PLLAR_MULA_Msk) >> + CKGR_PLLAR_MULA_Pos) + 1U); + SystemCoreClock /= ((((PMC->CKGR_PLLAR) & CKGR_PLLAR_DIVA_Msk) >> + CKGR_PLLAR_DIVA_Pos)); + } else { + SystemCoreClock *= ((((PMC->CKGR_PLLBR) & CKGR_PLLBR_MULB_Msk) >> + CKGR_PLLBR_MULB_Pos) + 1U); + SystemCoreClock /= ((((PMC->CKGR_PLLBR) & CKGR_PLLBR_DIVB_Msk) >> + CKGR_PLLBR_DIVB_Pos)); + } + break; + } + + if ((PMC->PMC_MCKR & PMC_MCKR_PRES_Msk) == PMC_MCKR_PRES_CLK_3) { + SystemCoreClock /= 3U; + } else { + SystemCoreClock >>= ((PMC->PMC_MCKR & PMC_MCKR_PRES_Msk) >> + PMC_MCKR_PRES_Pos); + } +} + +/** + * Initialize flash and watchdog. + */ +void system_init_flash_and_watchdog(uint32_t dw_clk) +{ + /* Set FWS for embedded Flash access according to operating frequency */ + if (dw_clk < SYS_FREQ_FWS_0) { + EFC->EEFC_FMR = EEFC_FMR_FWS(0); + } else if (dw_clk < SYS_FREQ_FWS_1) { + EFC->EEFC_FMR = EEFC_FMR_FWS(1); + } else if (dw_clk < SYS_FREQ_FWS_2) { + EFC->EEFC_FMR = EEFC_FMR_FWS(2); + } else { + EFC->EEFC_FMR = EEFC_FMR_FWS(3); + } + +#ifndef CONFIG_KEEP_WATCHDOG_AFTER_INIT + /* Disable the watchdog */ + WDT->WDT_MR = WDT_MR_WDDIS; +#endif +} + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ diff --git a/hardware/sam/system/libsam/cmsis/sam3sd8/source/templates/system_sam3sd8.h b/hardware/sam/system/libsam/cmsis/sam3sd8/source/templates/system_sam3sd8.h new file mode 100644 index 000000000..b40962425 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3sd8/source/templates/system_sam3sd8.h @@ -0,0 +1,58 @@ +/*! \file ********************************************************************* + * + * \brief CMSIS Cortex-M# Device Peripheral Access Layer Header File + * for SAM3 devices. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#ifndef SYSTEM_SAM3SD8_H_INCLUDED +#define SYSTEM_SAM3SD8_H_INCLUDED + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +#include + +extern uint32_t SystemCoreClock; /* System Clock Frequency (Core Clock) */ + +/** + * @brief Setup the microcontroller system. + * Initialize the System and update the SystemCoreClock variable. + */ +void SystemInit(void); + +/** + * @brief Updates the SystemCoreClock with current core Clock + * retrieved from cpu registers. + */ +void SystemCoreClockUpdate(void); + +/** + * Initialize flash and watchdog. + */ +void system_init_flash_and_watchdog(uint32_t dw_clk); + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ + +#endif /* SYSTEM_SAM3SD8_H_INCLUDED */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_adc.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_adc.h new file mode 100644 index 000000000..d83700636 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_adc.h @@ -0,0 +1,263 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_ADC_COMPONENT_ +#define _SAM3U_ADC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Analog-to-digital Converter */ +/* ============================================================================= */ +/** \addtogroup SAM3U_ADC Analog-to-digital Converter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Adc hardware registers */ +typedef struct { + WoReg ADC_CR; /**< \brief (Adc Offset: 0x00) Control Register */ + RwReg ADC_MR; /**< \brief (Adc Offset: 0x04) Mode Register */ + RoReg Reserved1[2]; + WoReg ADC_CHER; /**< \brief (Adc Offset: 0x10) Channel Enable Register */ + WoReg ADC_CHDR; /**< \brief (Adc Offset: 0x14) Channel Disable Register */ + RoReg ADC_CHSR; /**< \brief (Adc Offset: 0x18) Channel Status Register */ + RoReg ADC_SR; /**< \brief (Adc Offset: 0x1C) Status Register */ + RoReg ADC_LCDR; /**< \brief (Adc Offset: 0x20) Last Converted Data Register */ + WoReg ADC_IER; /**< \brief (Adc Offset: 0x24) Interrupt Enable Register */ + WoReg ADC_IDR; /**< \brief (Adc Offset: 0x28) Interrupt Disable Register */ + RoReg ADC_IMR; /**< \brief (Adc Offset: 0x2C) Interrupt Mask Register */ + RoReg ADC_CDR[8]; /**< \brief (Adc Offset: 0x30) Channel Data Register */ + RoReg Reserved2[44]; + RwReg ADC_RPR; /**< \brief (Adc Offset: 0x100) Receive Pointer Register */ + RwReg ADC_RCR; /**< \brief (Adc Offset: 0x104) Receive Counter Register */ + RwReg ADC_TPR; /**< \brief (Adc Offset: 0x108) Transmit Pointer Register */ + RwReg ADC_TCR; /**< \brief (Adc Offset: 0x10C) Transmit Counter Register */ + RwReg ADC_RNPR; /**< \brief (Adc Offset: 0x110) Receive Next Pointer Register */ + RwReg ADC_RNCR; /**< \brief (Adc Offset: 0x114) Receive Next Counter Register */ + RwReg ADC_TNPR; /**< \brief (Adc Offset: 0x118) Transmit Next Pointer Register */ + RwReg ADC_TNCR; /**< \brief (Adc Offset: 0x11C) Transmit Next Counter Register */ + WoReg ADC_PTCR; /**< \brief (Adc Offset: 0x120) Transfer Control Register */ + RoReg ADC_PTSR; /**< \brief (Adc Offset: 0x124) Transfer Status Register */ +} Adc; +#endif /* __ASSEMBLY__ */ +/* -------- ADC_CR : (ADC Offset: 0x00) Control Register -------- */ +#define ADC_CR_SWRST (0x1u << 0) /**< \brief (ADC_CR) Software Reset */ +#define ADC_CR_START (0x1u << 1) /**< \brief (ADC_CR) Start Conversion */ +/* -------- ADC_MR : (ADC Offset: 0x04) Mode Register -------- */ +#define ADC_MR_TRGEN (0x1u << 0) /**< \brief (ADC_MR) Trigger Enable */ +#define ADC_MR_TRGEN_DIS (0x0u << 0) /**< \brief (ADC_MR) Hardware triggers are disabled. Starting a conversion is only possible by software. */ +#define ADC_MR_TRGEN_EN (0x1u << 0) /**< \brief (ADC_MR) Hardware trigger selected by TRGSEL field is enabled. */ +#define ADC_MR_TRGSEL_Pos 1 +#define ADC_MR_TRGSEL_Msk (0x7u << ADC_MR_TRGSEL_Pos) /**< \brief (ADC_MR) Trigger Selection */ +#define ADC_MR_TRGSEL(value) ((ADC_MR_TRGSEL_Msk & ((value) << ADC_MR_TRGSEL_Pos))) +#define ADC_MR_TRGSEL_ADC_TRIG0 (0x0u << 1) /**< \brief (ADC_MR) External trigger */ +#define ADC_MR_TRGSEL_ADC_TRIG1 (0x1u << 1) /**< \brief (ADC_MR) TIO Output of the Timer Counter Channel 0 */ +#define ADC_MR_TRGSEL_ADC_TRIG2 (0x2u << 1) /**< \brief (ADC_MR) TIO Output of the Timer Counter Channel 1 */ +#define ADC_MR_TRGSEL_ADC_TRIG3 (0x3u << 1) /**< \brief (ADC_MR) TIO Output of the Timer Counter Channel 2 */ +#define ADC_MR_TRGSEL_ADC_TRIG4 (0x4u << 1) /**< \brief (ADC_MR) PWM Event Line 0 */ +#define ADC_MR_TRGSEL_ADC_TRIG5 (0x5u << 1) /**< \brief (ADC_MR) PWM Event Line 1 */ +#define ADC_MR_LOWRES (0x1u << 4) /**< \brief (ADC_MR) Resolution */ +#define ADC_MR_LOWRES_BITS_10 (0x0u << 4) /**< \brief (ADC_MR) 10-bit resolution */ +#define ADC_MR_LOWRES_BITS_8 (0x1u << 4) /**< \brief (ADC_MR) 8-bit resolution */ +#define ADC_MR_SLEEP (0x1u << 5) /**< \brief (ADC_MR) Sleep Mode */ +#define ADC_MR_SLEEP_NORMAL (0x0u << 5) /**< \brief (ADC_MR) Normal Mode: The ADC Core and reference voltage circuitry are kept ON between conversions */ +#define ADC_MR_SLEEP_SLEEP (0x1u << 5) /**< \brief (ADC_MR) Sleep Mode: The ADC Core and reference voltage circuitry are OFF between conversions */ +#define ADC_MR_PRESCAL_Pos 8 +#define ADC_MR_PRESCAL_Msk (0xffu << ADC_MR_PRESCAL_Pos) /**< \brief (ADC_MR) Prescaler Rate Selection */ +#define ADC_MR_PRESCAL(value) ((ADC_MR_PRESCAL_Msk & ((value) << ADC_MR_PRESCAL_Pos))) +#define ADC_MR_STARTUP_Pos 16 +#define ADC_MR_STARTUP_Msk (0x7fu << ADC_MR_STARTUP_Pos) /**< \brief (ADC_MR) Start Up Time */ +#define ADC_MR_STARTUP(value) ((ADC_MR_STARTUP_Msk & ((value) << ADC_MR_STARTUP_Pos))) +#define ADC_MR_SHTIM_Pos 24 +#define ADC_MR_SHTIM_Msk (0xfu << ADC_MR_SHTIM_Pos) /**< \brief (ADC_MR) Sample & Hold Time */ +#define ADC_MR_SHTIM(value) ((ADC_MR_SHTIM_Msk & ((value) << ADC_MR_SHTIM_Pos))) +/* -------- ADC_CHER : (ADC Offset: 0x10) Channel Enable Register -------- */ +#define ADC_CHER_CH0 (0x1u << 0) /**< \brief (ADC_CHER) Channel 0 Enable */ +#define ADC_CHER_CH1 (0x1u << 1) /**< \brief (ADC_CHER) Channel 1 Enable */ +#define ADC_CHER_CH2 (0x1u << 2) /**< \brief (ADC_CHER) Channel 2 Enable */ +#define ADC_CHER_CH3 (0x1u << 3) /**< \brief (ADC_CHER) Channel 3 Enable */ +#define ADC_CHER_CH4 (0x1u << 4) /**< \brief (ADC_CHER) Channel 4 Enable */ +#define ADC_CHER_CH5 (0x1u << 5) /**< \brief (ADC_CHER) Channel 5 Enable */ +#define ADC_CHER_CH6 (0x1u << 6) /**< \brief (ADC_CHER) Channel 6 Enable */ +#define ADC_CHER_CH7 (0x1u << 7) /**< \brief (ADC_CHER) Channel 7 Enable */ +/* -------- ADC_CHDR : (ADC Offset: 0x14) Channel Disable Register -------- */ +#define ADC_CHDR_CH0 (0x1u << 0) /**< \brief (ADC_CHDR) Channel 0 Disable */ +#define ADC_CHDR_CH1 (0x1u << 1) /**< \brief (ADC_CHDR) Channel 1 Disable */ +#define ADC_CHDR_CH2 (0x1u << 2) /**< \brief (ADC_CHDR) Channel 2 Disable */ +#define ADC_CHDR_CH3 (0x1u << 3) /**< \brief (ADC_CHDR) Channel 3 Disable */ +#define ADC_CHDR_CH4 (0x1u << 4) /**< \brief (ADC_CHDR) Channel 4 Disable */ +#define ADC_CHDR_CH5 (0x1u << 5) /**< \brief (ADC_CHDR) Channel 5 Disable */ +#define ADC_CHDR_CH6 (0x1u << 6) /**< \brief (ADC_CHDR) Channel 6 Disable */ +#define ADC_CHDR_CH7 (0x1u << 7) /**< \brief (ADC_CHDR) Channel 7 Disable */ +/* -------- ADC_CHSR : (ADC Offset: 0x18) Channel Status Register -------- */ +#define ADC_CHSR_CH0 (0x1u << 0) /**< \brief (ADC_CHSR) Channel 0 Status */ +#define ADC_CHSR_CH1 (0x1u << 1) /**< \brief (ADC_CHSR) Channel 1 Status */ +#define ADC_CHSR_CH2 (0x1u << 2) /**< \brief (ADC_CHSR) Channel 2 Status */ +#define ADC_CHSR_CH3 (0x1u << 3) /**< \brief (ADC_CHSR) Channel 3 Status */ +#define ADC_CHSR_CH4 (0x1u << 4) /**< \brief (ADC_CHSR) Channel 4 Status */ +#define ADC_CHSR_CH5 (0x1u << 5) /**< \brief (ADC_CHSR) Channel 5 Status */ +#define ADC_CHSR_CH6 (0x1u << 6) /**< \brief (ADC_CHSR) Channel 6 Status */ +#define ADC_CHSR_CH7 (0x1u << 7) /**< \brief (ADC_CHSR) Channel 7 Status */ +/* -------- ADC_SR : (ADC Offset: 0x1C) Status Register -------- */ +#define ADC_SR_EOC0 (0x1u << 0) /**< \brief (ADC_SR) End of Conversion 0 */ +#define ADC_SR_EOC1 (0x1u << 1) /**< \brief (ADC_SR) End of Conversion 1 */ +#define ADC_SR_EOC2 (0x1u << 2) /**< \brief (ADC_SR) End of Conversion 2 */ +#define ADC_SR_EOC3 (0x1u << 3) /**< \brief (ADC_SR) End of Conversion 3 */ +#define ADC_SR_EOC4 (0x1u << 4) /**< \brief (ADC_SR) End of Conversion 4 */ +#define ADC_SR_EOC5 (0x1u << 5) /**< \brief (ADC_SR) End of Conversion 5 */ +#define ADC_SR_EOC6 (0x1u << 6) /**< \brief (ADC_SR) End of Conversion 6 */ +#define ADC_SR_EOC7 (0x1u << 7) /**< \brief (ADC_SR) End of Conversion 7 */ +#define ADC_SR_OVRE0 (0x1u << 8) /**< \brief (ADC_SR) Overrun Error 0 */ +#define ADC_SR_OVRE1 (0x1u << 9) /**< \brief (ADC_SR) Overrun Error 1 */ +#define ADC_SR_OVRE2 (0x1u << 10) /**< \brief (ADC_SR) Overrun Error 2 */ +#define ADC_SR_OVRE3 (0x1u << 11) /**< \brief (ADC_SR) Overrun Error 3 */ +#define ADC_SR_OVRE4 (0x1u << 12) /**< \brief (ADC_SR) Overrun Error 4 */ +#define ADC_SR_OVRE5 (0x1u << 13) /**< \brief (ADC_SR) Overrun Error 5 */ +#define ADC_SR_OVRE6 (0x1u << 14) /**< \brief (ADC_SR) Overrun Error 6 */ +#define ADC_SR_OVRE7 (0x1u << 15) /**< \brief (ADC_SR) Overrun Error 7 */ +#define ADC_SR_DRDY (0x1u << 16) /**< \brief (ADC_SR) Data Ready */ +#define ADC_SR_GOVRE (0x1u << 17) /**< \brief (ADC_SR) General Overrun Error */ +#define ADC_SR_ENDRX (0x1u << 18) /**< \brief (ADC_SR) End of RX Buffer */ +#define ADC_SR_RXBUFF (0x1u << 19) /**< \brief (ADC_SR) RX Buffer Full */ +/* -------- ADC_LCDR : (ADC Offset: 0x20) Last Converted Data Register -------- */ +#define ADC_LCDR_LDATA_Pos 0 +#define ADC_LCDR_LDATA_Msk (0x3ffu << ADC_LCDR_LDATA_Pos) /**< \brief (ADC_LCDR) Last Data Converted */ +/* -------- ADC_IER : (ADC Offset: 0x24) Interrupt Enable Register -------- */ +#define ADC_IER_EOC0 (0x1u << 0) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 0 */ +#define ADC_IER_EOC1 (0x1u << 1) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 1 */ +#define ADC_IER_EOC2 (0x1u << 2) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 2 */ +#define ADC_IER_EOC3 (0x1u << 3) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 3 */ +#define ADC_IER_EOC4 (0x1u << 4) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 4 */ +#define ADC_IER_EOC5 (0x1u << 5) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 5 */ +#define ADC_IER_EOC6 (0x1u << 6) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 6 */ +#define ADC_IER_EOC7 (0x1u << 7) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 7 */ +#define ADC_IER_OVRE0 (0x1u << 8) /**< \brief (ADC_IER) Overrun Error Interrupt Enable 0 */ +#define ADC_IER_OVRE1 (0x1u << 9) /**< \brief (ADC_IER) Overrun Error Interrupt Enable 1 */ +#define ADC_IER_OVRE2 (0x1u << 10) /**< \brief (ADC_IER) Overrun Error Interrupt Enable 2 */ +#define ADC_IER_OVRE3 (0x1u << 11) /**< \brief (ADC_IER) Overrun Error Interrupt Enable 3 */ +#define ADC_IER_OVRE4 (0x1u << 12) /**< \brief (ADC_IER) Overrun Error Interrupt Enable 4 */ +#define ADC_IER_OVRE5 (0x1u << 13) /**< \brief (ADC_IER) Overrun Error Interrupt Enable 5 */ +#define ADC_IER_OVRE6 (0x1u << 14) /**< \brief (ADC_IER) Overrun Error Interrupt Enable 6 */ +#define ADC_IER_OVRE7 (0x1u << 15) /**< \brief (ADC_IER) Overrun Error Interrupt Enable 7 */ +#define ADC_IER_DRDY (0x1u << 16) /**< \brief (ADC_IER) Data Ready Interrupt Enable */ +#define ADC_IER_GOVRE (0x1u << 17) /**< \brief (ADC_IER) General Overrun Error Interrupt Enable */ +#define ADC_IER_ENDRX (0x1u << 18) /**< \brief (ADC_IER) End of Receive Buffer Interrupt Enable */ +#define ADC_IER_RXBUFF (0x1u << 19) /**< \brief (ADC_IER) Receive Buffer Full Interrupt Enable */ +/* -------- ADC_IDR : (ADC Offset: 0x28) Interrupt Disable Register -------- */ +#define ADC_IDR_EOC0 (0x1u << 0) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 0 */ +#define ADC_IDR_EOC1 (0x1u << 1) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 1 */ +#define ADC_IDR_EOC2 (0x1u << 2) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 2 */ +#define ADC_IDR_EOC3 (0x1u << 3) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 3 */ +#define ADC_IDR_EOC4 (0x1u << 4) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 4 */ +#define ADC_IDR_EOC5 (0x1u << 5) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 5 */ +#define ADC_IDR_EOC6 (0x1u << 6) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 6 */ +#define ADC_IDR_EOC7 (0x1u << 7) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 7 */ +#define ADC_IDR_OVRE0 (0x1u << 8) /**< \brief (ADC_IDR) Overrun Error Interrupt Disable 0 */ +#define ADC_IDR_OVRE1 (0x1u << 9) /**< \brief (ADC_IDR) Overrun Error Interrupt Disable 1 */ +#define ADC_IDR_OVRE2 (0x1u << 10) /**< \brief (ADC_IDR) Overrun Error Interrupt Disable 2 */ +#define ADC_IDR_OVRE3 (0x1u << 11) /**< \brief (ADC_IDR) Overrun Error Interrupt Disable 3 */ +#define ADC_IDR_OVRE4 (0x1u << 12) /**< \brief (ADC_IDR) Overrun Error Interrupt Disable 4 */ +#define ADC_IDR_OVRE5 (0x1u << 13) /**< \brief (ADC_IDR) Overrun Error Interrupt Disable 5 */ +#define ADC_IDR_OVRE6 (0x1u << 14) /**< \brief (ADC_IDR) Overrun Error Interrupt Disable 6 */ +#define ADC_IDR_OVRE7 (0x1u << 15) /**< \brief (ADC_IDR) Overrun Error Interrupt Disable 7 */ +#define ADC_IDR_DRDY (0x1u << 16) /**< \brief (ADC_IDR) Data Ready Interrupt Disable */ +#define ADC_IDR_GOVRE (0x1u << 17) /**< \brief (ADC_IDR) General Overrun Error Interrupt Disable */ +#define ADC_IDR_ENDRX (0x1u << 18) /**< \brief (ADC_IDR) End of Receive Buffer Interrupt Disable */ +#define ADC_IDR_RXBUFF (0x1u << 19) /**< \brief (ADC_IDR) Receive Buffer Full Interrupt Disable */ +/* -------- ADC_IMR : (ADC Offset: 0x2C) Interrupt Mask Register -------- */ +#define ADC_IMR_EOC0 (0x1u << 0) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 0 */ +#define ADC_IMR_EOC1 (0x1u << 1) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 1 */ +#define ADC_IMR_EOC2 (0x1u << 2) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 2 */ +#define ADC_IMR_EOC3 (0x1u << 3) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 3 */ +#define ADC_IMR_EOC4 (0x1u << 4) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 4 */ +#define ADC_IMR_EOC5 (0x1u << 5) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 5 */ +#define ADC_IMR_EOC6 (0x1u << 6) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 6 */ +#define ADC_IMR_EOC7 (0x1u << 7) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 7 */ +#define ADC_IMR_OVRE0 (0x1u << 8) /**< \brief (ADC_IMR) Overrun Error Interrupt Mask 0 */ +#define ADC_IMR_OVRE1 (0x1u << 9) /**< \brief (ADC_IMR) Overrun Error Interrupt Mask 1 */ +#define ADC_IMR_OVRE2 (0x1u << 10) /**< \brief (ADC_IMR) Overrun Error Interrupt Mask 2 */ +#define ADC_IMR_OVRE3 (0x1u << 11) /**< \brief (ADC_IMR) Overrun Error Interrupt Mask 3 */ +#define ADC_IMR_OVRE4 (0x1u << 12) /**< \brief (ADC_IMR) Overrun Error Interrupt Mask 4 */ +#define ADC_IMR_OVRE5 (0x1u << 13) /**< \brief (ADC_IMR) Overrun Error Interrupt Mask 5 */ +#define ADC_IMR_OVRE6 (0x1u << 14) /**< \brief (ADC_IMR) Overrun Error Interrupt Mask 6 */ +#define ADC_IMR_OVRE7 (0x1u << 15) /**< \brief (ADC_IMR) Overrun Error Interrupt Mask 7 */ +#define ADC_IMR_DRDY (0x1u << 16) /**< \brief (ADC_IMR) Data Ready Interrupt Mask */ +#define ADC_IMR_GOVRE (0x1u << 17) /**< \brief (ADC_IMR) General Overrun Error Interrupt Mask */ +#define ADC_IMR_ENDRX (0x1u << 18) /**< \brief (ADC_IMR) End of Receive Buffer Interrupt Mask */ +#define ADC_IMR_RXBUFF (0x1u << 19) /**< \brief (ADC_IMR) Receive Buffer Full Interrupt Mask */ +/* -------- ADC_CDR[8] : (ADC Offset: 0x30) Channel Data Register -------- */ +#define ADC_CDR_DATA_Pos 0 +#define ADC_CDR_DATA_Msk (0x3ffu << ADC_CDR_DATA_Pos) /**< \brief (ADC_CDR[8]) Converted Data */ +/* -------- ADC_ACR : (ADC Offset: 0x94) Analog Control Register -------- */ +#define ADC_ACR_IBCTL_Pos 8 +#define ADC_ACR_IBCTL_Msk (0x3u << ADC_ACR_IBCTL_Pos) /**< \brief (ADC_ACR) ADC Bias Current Control */ +#define ADC_ACR_IBCTL(value) ((ADC_ACR_IBCTL_Msk & ((value) << ADC_ACR_IBCTL_Pos))) +/* -------- ADC_RPR : (ADC Offset: 0x100) Receive Pointer Register -------- */ +#define ADC_RPR_RXPTR_Pos 0 +#define ADC_RPR_RXPTR_Msk (0xffffffffu << ADC_RPR_RXPTR_Pos) /**< \brief (ADC_RPR) Receive Pointer Register */ +#define ADC_RPR_RXPTR(value) ((ADC_RPR_RXPTR_Msk & ((value) << ADC_RPR_RXPTR_Pos))) +/* -------- ADC_RCR : (ADC Offset: 0x104) Receive Counter Register -------- */ +#define ADC_RCR_RXCTR_Pos 0 +#define ADC_RCR_RXCTR_Msk (0xffffu << ADC_RCR_RXCTR_Pos) /**< \brief (ADC_RCR) Receive Counter Register */ +#define ADC_RCR_RXCTR(value) ((ADC_RCR_RXCTR_Msk & ((value) << ADC_RCR_RXCTR_Pos))) +/* -------- ADC_TPR : (ADC Offset: 0x108) Transmit Pointer Register -------- */ +#define ADC_TPR_TXPTR_Pos 0 +#define ADC_TPR_TXPTR_Msk (0xffffffffu << ADC_TPR_TXPTR_Pos) /**< \brief (ADC_TPR) Transmit Counter Register */ +#define ADC_TPR_TXPTR(value) ((ADC_TPR_TXPTR_Msk & ((value) << ADC_TPR_TXPTR_Pos))) +/* -------- ADC_TCR : (ADC Offset: 0x10C) Transmit Counter Register -------- */ +#define ADC_TCR_TXCTR_Pos 0 +#define ADC_TCR_TXCTR_Msk (0xffffu << ADC_TCR_TXCTR_Pos) /**< \brief (ADC_TCR) Transmit Counter Register */ +#define ADC_TCR_TXCTR(value) ((ADC_TCR_TXCTR_Msk & ((value) << ADC_TCR_TXCTR_Pos))) +/* -------- ADC_RNPR : (ADC Offset: 0x110) Receive Next Pointer Register -------- */ +#define ADC_RNPR_RXNPTR_Pos 0 +#define ADC_RNPR_RXNPTR_Msk (0xffffffffu << ADC_RNPR_RXNPTR_Pos) /**< \brief (ADC_RNPR) Receive Next Pointer */ +#define ADC_RNPR_RXNPTR(value) ((ADC_RNPR_RXNPTR_Msk & ((value) << ADC_RNPR_RXNPTR_Pos))) +/* -------- ADC_RNCR : (ADC Offset: 0x114) Receive Next Counter Register -------- */ +#define ADC_RNCR_RXNCTR_Pos 0 +#define ADC_RNCR_RXNCTR_Msk (0xffffu << ADC_RNCR_RXNCTR_Pos) /**< \brief (ADC_RNCR) Receive Next Counter */ +#define ADC_RNCR_RXNCTR(value) ((ADC_RNCR_RXNCTR_Msk & ((value) << ADC_RNCR_RXNCTR_Pos))) +/* -------- ADC_TNPR : (ADC Offset: 0x118) Transmit Next Pointer Register -------- */ +#define ADC_TNPR_TXNPTR_Pos 0 +#define ADC_TNPR_TXNPTR_Msk (0xffffffffu << ADC_TNPR_TXNPTR_Pos) /**< \brief (ADC_TNPR) Transmit Next Pointer */ +#define ADC_TNPR_TXNPTR(value) ((ADC_TNPR_TXNPTR_Msk & ((value) << ADC_TNPR_TXNPTR_Pos))) +/* -------- ADC_TNCR : (ADC Offset: 0x11C) Transmit Next Counter Register -------- */ +#define ADC_TNCR_TXNCTR_Pos 0 +#define ADC_TNCR_TXNCTR_Msk (0xffffu << ADC_TNCR_TXNCTR_Pos) /**< \brief (ADC_TNCR) Transmit Counter Next */ +#define ADC_TNCR_TXNCTR(value) ((ADC_TNCR_TXNCTR_Msk & ((value) << ADC_TNCR_TXNCTR_Pos))) +/* -------- ADC_PTCR : (ADC Offset: 0x120) Transfer Control Register -------- */ +#define ADC_PTCR_RXTEN (0x1u << 0) /**< \brief (ADC_PTCR) Receiver Transfer Enable */ +#define ADC_PTCR_RXTDIS (0x1u << 1) /**< \brief (ADC_PTCR) Receiver Transfer Disable */ +#define ADC_PTCR_TXTEN (0x1u << 8) /**< \brief (ADC_PTCR) Transmitter Transfer Enable */ +#define ADC_PTCR_TXTDIS (0x1u << 9) /**< \brief (ADC_PTCR) Transmitter Transfer Disable */ +/* -------- ADC_PTSR : (ADC Offset: 0x124) Transfer Status Register -------- */ +#define ADC_PTSR_RXTEN (0x1u << 0) /**< \brief (ADC_PTSR) Receiver Transfer Enable */ +#define ADC_PTSR_TXTEN (0x1u << 8) /**< \brief (ADC_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3U_ADC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_adc12b.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_adc12b.h new file mode 100644 index 000000000..21f72a1d8 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_adc12b.h @@ -0,0 +1,266 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_ADC12B_COMPONENT_ +#define _SAM3U_ADC12B_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Analog-to-Digital-Converter 12bits */ +/* ============================================================================= */ +/** \addtogroup SAM3U_ADC12B Analog-to-Digital-Converter 12bits */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Adc12b hardware registers */ +typedef struct { + WoReg ADC12B_CR; /**< \brief (Adc12b Offset: 0x00) Control Register */ + RwReg ADC12B_MR; /**< \brief (Adc12b Offset: 0x04) Mode Register */ + RoReg Reserved1[2]; + WoReg ADC12B_CHER; /**< \brief (Adc12b Offset: 0x10) Channel Enable Register */ + WoReg ADC12B_CHDR; /**< \brief (Adc12b Offset: 0x14) Channel Disable Register */ + RoReg ADC12B_CHSR; /**< \brief (Adc12b Offset: 0x18) Channel Status Register */ + RoReg ADC12B_SR; /**< \brief (Adc12b Offset: 0x1C) Status Register */ + RoReg ADC12B_LCDR; /**< \brief (Adc12b Offset: 0x20) Last Converted Data Register */ + WoReg ADC12B_IER; /**< \brief (Adc12b Offset: 0x24) Interrupt Enable Register */ + WoReg ADC12B_IDR; /**< \brief (Adc12b Offset: 0x28) Interrupt Disable Register */ + RoReg ADC12B_IMR; /**< \brief (Adc12b Offset: 0x2C) Interrupt Mask Register */ + RoReg ADC12B_CDR[8]; /**< \brief (Adc12b Offset: 0x30) Channel Data Register */ + RoReg Reserved2[5]; + RwReg ADC12B_ACR; /**< \brief (Adc12b Offset: 0x64) Analog Control Register */ + RwReg ADC12B_EMR; /**< \brief (Adc12b Offset: 0x68) Extended Mode Register */ + RoReg Reserved3[37]; + RwReg ADC12B_RPR; /**< \brief (Adc12b Offset: 0x100) Receive Pointer Register */ + RwReg ADC12B_RCR; /**< \brief (Adc12b Offset: 0x104) Receive Counter Register */ + RwReg ADC12B_TPR; /**< \brief (Adc12b Offset: 0x108) Transmit Pointer Register */ + RwReg ADC12B_TCR; /**< \brief (Adc12b Offset: 0x10C) Transmit Counter Register */ + RwReg ADC12B_RNPR; /**< \brief (Adc12b Offset: 0x110) Receive Next Pointer Register */ + RwReg ADC12B_RNCR; /**< \brief (Adc12b Offset: 0x114) Receive Next Counter Register */ + RwReg ADC12B_TNPR; /**< \brief (Adc12b Offset: 0x118) Transmit Next Pointer Register */ + RwReg ADC12B_TNCR; /**< \brief (Adc12b Offset: 0x11C) Transmit Next Counter Register */ + WoReg ADC12B_PTCR; /**< \brief (Adc12b Offset: 0x120) Transfer Control Register */ + RoReg ADC12B_PTSR; /**< \brief (Adc12b Offset: 0x124) Transfer Status Register */ +} Adc12b; +#endif /* __ASSEMBLY__ */ +/* -------- ADC12B_CR : (ADC12B Offset: 0x00) Control Register -------- */ +#define ADC12B_CR_SWRST (0x1u << 0) /**< \brief (ADC12B_CR) Software Reset */ +#define ADC12B_CR_START (0x1u << 1) /**< \brief (ADC12B_CR) Start Conversion */ +/* -------- ADC12B_MR : (ADC12B Offset: 0x04) Mode Register -------- */ +#define ADC12B_MR_TRGEN (0x1u << 0) /**< \brief (ADC12B_MR) Trigger Enable */ +#define ADC12B_MR_TRGSEL_Pos 1 +#define ADC12B_MR_TRGSEL_Msk (0x7u << ADC12B_MR_TRGSEL_Pos) /**< \brief (ADC12B_MR) Trigger Selection */ +#define ADC12B_MR_TRGSEL(value) ((ADC12B_MR_TRGSEL_Msk & ((value) << ADC12B_MR_TRGSEL_Pos))) +#define ADC12B_MR_LOWRES (0x1u << 4) /**< \brief (ADC12B_MR) Resolution */ +#define ADC12B_MR_LOWRES_BITS_12 (0x0u << 4) /**< \brief (ADC12B_MR) 10-bit resolution */ +#define ADC12B_MR_LOWRES_BITS_10 (0x1u << 4) /**< \brief (ADC12B_MR) 8-bit resolution */ +#define ADC12B_MR_SLEEP (0x1u << 5) /**< \brief (ADC12B_MR) Sleep Mode */ +#define ADC12B_MR_PRESCAL_Pos 8 +#define ADC12B_MR_PRESCAL_Msk (0xffu << ADC12B_MR_PRESCAL_Pos) /**< \brief (ADC12B_MR) Prescaler Rate Selection */ +#define ADC12B_MR_PRESCAL(value) ((ADC12B_MR_PRESCAL_Msk & ((value) << ADC12B_MR_PRESCAL_Pos))) +#define ADC12B_MR_STARTUP_Pos 16 +#define ADC12B_MR_STARTUP_Msk (0xffu << ADC12B_MR_STARTUP_Pos) /**< \brief (ADC12B_MR) Start Up Time */ +#define ADC12B_MR_STARTUP(value) ((ADC12B_MR_STARTUP_Msk & ((value) << ADC12B_MR_STARTUP_Pos))) +#define ADC12B_MR_SHTIM_Pos 24 +#define ADC12B_MR_SHTIM_Msk (0xfu << ADC12B_MR_SHTIM_Pos) /**< \brief (ADC12B_MR) Sample & Hold Time */ +#define ADC12B_MR_SHTIM(value) ((ADC12B_MR_SHTIM_Msk & ((value) << ADC12B_MR_SHTIM_Pos))) +/* -------- ADC12B_CHER : (ADC12B Offset: 0x10) Channel Enable Register -------- */ +#define ADC12B_CHER_CH0 (0x1u << 0) /**< \brief (ADC12B_CHER) Channel 0 Enable */ +#define ADC12B_CHER_CH1 (0x1u << 1) /**< \brief (ADC12B_CHER) Channel 1 Enable */ +#define ADC12B_CHER_CH2 (0x1u << 2) /**< \brief (ADC12B_CHER) Channel 2 Enable */ +#define ADC12B_CHER_CH3 (0x1u << 3) /**< \brief (ADC12B_CHER) Channel 3 Enable */ +#define ADC12B_CHER_CH4 (0x1u << 4) /**< \brief (ADC12B_CHER) Channel 4 Enable */ +#define ADC12B_CHER_CH5 (0x1u << 5) /**< \brief (ADC12B_CHER) Channel 5 Enable */ +#define ADC12B_CHER_CH6 (0x1u << 6) /**< \brief (ADC12B_CHER) Channel 6 Enable */ +#define ADC12B_CHER_CH7 (0x1u << 7) /**< \brief (ADC12B_CHER) Channel 7 Enable */ +/* -------- ADC12B_CHDR : (ADC12B Offset: 0x14) Channel Disable Register -------- */ +#define ADC12B_CHDR_CH0 (0x1u << 0) /**< \brief (ADC12B_CHDR) */ +#define ADC12B_CHDR_CH1 (0x1u << 1) /**< \brief (ADC12B_CHDR) */ +#define ADC12B_CHDR_CH2 (0x1u << 2) /**< \brief (ADC12B_CHDR) */ +#define ADC12B_CHDR_CH3 (0x1u << 3) /**< \brief (ADC12B_CHDR) */ +#define ADC12B_CHDR_CH4 (0x1u << 4) /**< \brief (ADC12B_CHDR) */ +#define ADC12B_CHDR_CH5 (0x1u << 5) /**< \brief (ADC12B_CHDR) */ +#define ADC12B_CHDR_CH6 (0x1u << 6) /**< \brief (ADC12B_CHDR) */ +#define ADC12B_CHDR_CH7 (0x1u << 7) /**< \brief (ADC12B_CHDR) */ +/* -------- ADC12B_CHSR : (ADC12B Offset: 0x18) Channel Status Register -------- */ +#define ADC12B_CHSR_CH0 (0x1u << 0) /**< \brief (ADC12B_CHSR) Channel 0 Status */ +#define ADC12B_CHSR_CH1 (0x1u << 1) /**< \brief (ADC12B_CHSR) Channel 1 Status */ +#define ADC12B_CHSR_CH2 (0x1u << 2) /**< \brief (ADC12B_CHSR) Channel 2 Status */ +#define ADC12B_CHSR_CH3 (0x1u << 3) /**< \brief (ADC12B_CHSR) Channel 3 Status */ +#define ADC12B_CHSR_CH4 (0x1u << 4) /**< \brief (ADC12B_CHSR) Channel 4 Status */ +#define ADC12B_CHSR_CH5 (0x1u << 5) /**< \brief (ADC12B_CHSR) Channel 5 Status */ +#define ADC12B_CHSR_CH6 (0x1u << 6) /**< \brief (ADC12B_CHSR) Channel 6 Status */ +#define ADC12B_CHSR_CH7 (0x1u << 7) /**< \brief (ADC12B_CHSR) Channel 7 Status */ +/* -------- ADC12B_SR : (ADC12B Offset: 0x1C) Status Register -------- */ +#define ADC12B_SR_EOC0 (0x1u << 0) /**< \brief (ADC12B_SR) End of Conversion 0 */ +#define ADC12B_SR_EOC1 (0x1u << 1) /**< \brief (ADC12B_SR) End of Conversion 1 */ +#define ADC12B_SR_EOC2 (0x1u << 2) /**< \brief (ADC12B_SR) End of Conversion 2 */ +#define ADC12B_SR_EOC3 (0x1u << 3) /**< \brief (ADC12B_SR) End of Conversion 3 */ +#define ADC12B_SR_EOC4 (0x1u << 4) /**< \brief (ADC12B_SR) End of Conversion 4 */ +#define ADC12B_SR_EOC5 (0x1u << 5) /**< \brief (ADC12B_SR) End of Conversion 5 */ +#define ADC12B_SR_EOC6 (0x1u << 6) /**< \brief (ADC12B_SR) End of Conversion 6 */ +#define ADC12B_SR_EOC7 (0x1u << 7) /**< \brief (ADC12B_SR) End of Conversion 7 */ +#define ADC12B_SR_OVRE0 (0x1u << 8) /**< \brief (ADC12B_SR) Overrun Error 0 */ +#define ADC12B_SR_OVRE1 (0x1u << 9) /**< \brief (ADC12B_SR) Overrun Error 1 */ +#define ADC12B_SR_OVRE2 (0x1u << 10) /**< \brief (ADC12B_SR) Overrun Error 2 */ +#define ADC12B_SR_OVRE3 (0x1u << 11) /**< \brief (ADC12B_SR) Overrun Error 3 */ +#define ADC12B_SR_OVRE4 (0x1u << 12) /**< \brief (ADC12B_SR) Overrun Error 4 */ +#define ADC12B_SR_OVRE5 (0x1u << 13) /**< \brief (ADC12B_SR) Overrun Error 5 */ +#define ADC12B_SR_OVRE6 (0x1u << 14) /**< \brief (ADC12B_SR) Overrun Error 6 */ +#define ADC12B_SR_OVRE7 (0x1u << 15) /**< \brief (ADC12B_SR) Overrun Error 7 */ +#define ADC12B_SR_DRDY (0x1u << 16) /**< \brief (ADC12B_SR) Data Ready */ +#define ADC12B_SR_GOVRE (0x1u << 17) /**< \brief (ADC12B_SR) General Overrun Error */ +#define ADC12B_SR_ENDRX (0x1u << 18) /**< \brief (ADC12B_SR) End of RX Buffer */ +#define ADC12B_SR_RXBUFF (0x1u << 19) /**< \brief (ADC12B_SR) RX Buffer Full */ +/* -------- ADC12B_LCDR : (ADC12B Offset: 0x20) Last Converted Data Register -------- */ +#define ADC12B_LCDR_LDATA_Pos 0 +#define ADC12B_LCDR_LDATA_Msk (0xfffu << ADC12B_LCDR_LDATA_Pos) /**< \brief (ADC12B_LCDR) Last Data Converted */ +/* -------- ADC12B_IER : (ADC12B Offset: 0x24) Interrupt Enable Register -------- */ +#define ADC12B_IER_EOC0 (0x1u << 0) /**< \brief (ADC12B_IER) End of Conversion Interrupt Enable 0 */ +#define ADC12B_IER_EOC1 (0x1u << 1) /**< \brief (ADC12B_IER) End of Conversion Interrupt Enable 1 */ +#define ADC12B_IER_EOC2 (0x1u << 2) /**< \brief (ADC12B_IER) End of Conversion Interrupt Enable 2 */ +#define ADC12B_IER_EOC3 (0x1u << 3) /**< \brief (ADC12B_IER) End of Conversion Interrupt Enable 3 */ +#define ADC12B_IER_EOC4 (0x1u << 4) /**< \brief (ADC12B_IER) End of Conversion Interrupt Enable 4 */ +#define ADC12B_IER_EOC5 (0x1u << 5) /**< \brief (ADC12B_IER) End of Conversion Interrupt Enable 5 */ +#define ADC12B_IER_EOC6 (0x1u << 6) /**< \brief (ADC12B_IER) End of Conversion Interrupt Enable 6 */ +#define ADC12B_IER_EOC7 (0x1u << 7) /**< \brief (ADC12B_IER) End of Conversion Interrupt Enable 7 */ +#define ADC12B_IER_OVRE0 (0x1u << 8) /**< \brief (ADC12B_IER) Overrun Error Interrupt Enable 0 */ +#define ADC12B_IER_OVRE1 (0x1u << 9) /**< \brief (ADC12B_IER) Overrun Error Interrupt Enable 1 */ +#define ADC12B_IER_OVRE2 (0x1u << 10) /**< \brief (ADC12B_IER) Overrun Error Interrupt Enable 2 */ +#define ADC12B_IER_OVRE3 (0x1u << 11) /**< \brief (ADC12B_IER) Overrun Error Interrupt Enable 3 */ +#define ADC12B_IER_OVRE4 (0x1u << 12) /**< \brief (ADC12B_IER) Overrun Error Interrupt Enable 4 */ +#define ADC12B_IER_OVRE5 (0x1u << 13) /**< \brief (ADC12B_IER) Overrun Error Interrupt Enable 5 */ +#define ADC12B_IER_OVRE6 (0x1u << 14) /**< \brief (ADC12B_IER) Overrun Error Interrupt Enable 6 */ +#define ADC12B_IER_OVRE7 (0x1u << 15) /**< \brief (ADC12B_IER) Overrun Error Interrupt Enable 7 */ +#define ADC12B_IER_DRDY (0x1u << 16) /**< \brief (ADC12B_IER) Data Ready Interrupt Enable */ +#define ADC12B_IER_GOVRE (0x1u << 17) /**< \brief (ADC12B_IER) General Overrun Error Interrupt Enable */ +#define ADC12B_IER_ENDRX (0x1u << 18) /**< \brief (ADC12B_IER) End of Receive Buffer Interrupt Enable */ +#define ADC12B_IER_RXBUFF (0x1u << 19) /**< \brief (ADC12B_IER) Receive Buffer Full Interrupt Enable */ +/* -------- ADC12B_IDR : (ADC12B Offset: 0x28) Interrupt Disable Register -------- */ +#define ADC12B_IDR_EOC0 (0x1u << 0) /**< \brief (ADC12B_IDR) End of Conversion Interrupt Disable 0 */ +#define ADC12B_IDR_EOC1 (0x1u << 1) /**< \brief (ADC12B_IDR) End of Conversion Interrupt Disable 1 */ +#define ADC12B_IDR_EOC2 (0x1u << 2) /**< \brief (ADC12B_IDR) End of Conversion Interrupt Disable 2 */ +#define ADC12B_IDR_EOC3 (0x1u << 3) /**< \brief (ADC12B_IDR) End of Conversion Interrupt Disable 3 */ +#define ADC12B_IDR_EOC4 (0x1u << 4) /**< \brief (ADC12B_IDR) End of Conversion Interrupt Disable 4 */ +#define ADC12B_IDR_EOC5 (0x1u << 5) /**< \brief (ADC12B_IDR) End of Conversion Interrupt Disable 5 */ +#define ADC12B_IDR_EOC6 (0x1u << 6) /**< \brief (ADC12B_IDR) End of Conversion Interrupt Disable 6 */ +#define ADC12B_IDR_EOC7 (0x1u << 7) /**< \brief (ADC12B_IDR) End of Conversion Interrupt Disable 7 */ +#define ADC12B_IDR_OVRE0 (0x1u << 8) /**< \brief (ADC12B_IDR) Overrun Error Interrupt Disable 0 */ +#define ADC12B_IDR_OVRE1 (0x1u << 9) /**< \brief (ADC12B_IDR) Overrun Error Interrupt Disable 1 */ +#define ADC12B_IDR_OVRE2 (0x1u << 10) /**< \brief (ADC12B_IDR) Overrun Error Interrupt Disable 2 */ +#define ADC12B_IDR_OVRE3 (0x1u << 11) /**< \brief (ADC12B_IDR) Overrun Error Interrupt Disable 3 */ +#define ADC12B_IDR_OVRE4 (0x1u << 12) /**< \brief (ADC12B_IDR) Overrun Error Interrupt Disable 4 */ +#define ADC12B_IDR_OVRE5 (0x1u << 13) /**< \brief (ADC12B_IDR) Overrun Error Interrupt Disable 5 */ +#define ADC12B_IDR_OVRE6 (0x1u << 14) /**< \brief (ADC12B_IDR) Overrun Error Interrupt Disable 6 */ +#define ADC12B_IDR_OVRE7 (0x1u << 15) /**< \brief (ADC12B_IDR) Overrun Error Interrupt Disable 7 */ +#define ADC12B_IDR_DRDY (0x1u << 16) /**< \brief (ADC12B_IDR) Data Ready Interrupt Disable */ +#define ADC12B_IDR_GOVRE (0x1u << 17) /**< \brief (ADC12B_IDR) General Overrun Error Interrupt Disable */ +#define ADC12B_IDR_ENDRX (0x1u << 18) /**< \brief (ADC12B_IDR) End of Receive Buffer Interrupt Disable */ +#define ADC12B_IDR_RXBUFF (0x1u << 19) /**< \brief (ADC12B_IDR) Receive Buffer Full Interrupt Disable */ +/* -------- ADC12B_IMR : (ADC12B Offset: 0x2C) Interrupt Mask Register -------- */ +#define ADC12B_IMR_EOC0 (0x1u << 0) /**< \brief (ADC12B_IMR) End of Conversion Interrupt Mask 0 */ +#define ADC12B_IMR_EOC1 (0x1u << 1) /**< \brief (ADC12B_IMR) End of Conversion Interrupt Mask 1 */ +#define ADC12B_IMR_EOC2 (0x1u << 2) /**< \brief (ADC12B_IMR) End of Conversion Interrupt Mask 2 */ +#define ADC12B_IMR_EOC3 (0x1u << 3) /**< \brief (ADC12B_IMR) End of Conversion Interrupt Mask 3 */ +#define ADC12B_IMR_EOC4 (0x1u << 4) /**< \brief (ADC12B_IMR) End of Conversion Interrupt Mask 4 */ +#define ADC12B_IMR_EOC5 (0x1u << 5) /**< \brief (ADC12B_IMR) End of Conversion Interrupt Mask 5 */ +#define ADC12B_IMR_EOC6 (0x1u << 6) /**< \brief (ADC12B_IMR) End of Conversion Interrupt Mask 6 */ +#define ADC12B_IMR_EOC7 (0x1u << 7) /**< \brief (ADC12B_IMR) End of Conversion Interrupt Mask 7 */ +#define ADC12B_IMR_OVRE0 (0x1u << 8) /**< \brief (ADC12B_IMR) Overrun Error Interrupt Mask 0 */ +#define ADC12B_IMR_OVRE1 (0x1u << 9) /**< \brief (ADC12B_IMR) Overrun Error Interrupt Mask 1 */ +#define ADC12B_IMR_OVRE2 (0x1u << 10) /**< \brief (ADC12B_IMR) Overrun Error Interrupt Mask 2 */ +#define ADC12B_IMR_OVRE3 (0x1u << 11) /**< \brief (ADC12B_IMR) Overrun Error Interrupt Mask 3 */ +#define ADC12B_IMR_OVRE4 (0x1u << 12) /**< \brief (ADC12B_IMR) Overrun Error Interrupt Mask 4 */ +#define ADC12B_IMR_OVRE5 (0x1u << 13) /**< \brief (ADC12B_IMR) Overrun Error Interrupt Mask 5 */ +#define ADC12B_IMR_OVRE6 (0x1u << 14) /**< \brief (ADC12B_IMR) Overrun Error Interrupt Mask 6 */ +#define ADC12B_IMR_OVRE7 (0x1u << 15) /**< \brief (ADC12B_IMR) Overrun Error Interrupt Mask 7 */ +#define ADC12B_IMR_DRDY (0x1u << 16) /**< \brief (ADC12B_IMR) Data Ready Interrupt Mask */ +#define ADC12B_IMR_GOVRE (0x1u << 17) /**< \brief (ADC12B_IMR) General Overrun Error Interrupt Mask */ +#define ADC12B_IMR_ENDRX (0x1u << 18) /**< \brief (ADC12B_IMR) End of Receive Buffer Interrupt Mask */ +#define ADC12B_IMR_RXBUFF (0x1u << 19) /**< \brief (ADC12B_IMR) Receive Buffer Full Interrupt Mask */ +/* -------- ADC12B_CDR[8] : (ADC12B Offset: 0x30) Channel Data Register -------- */ +#define ADC12B_CDR_DATA_Pos 0 +#define ADC12B_CDR_DATA_Msk (0xfffu << ADC12B_CDR_DATA_Pos) /**< \brief (ADC12B_CDR[8]) Converted Data */ +/* -------- ADC12B_ACR : (ADC12B Offset: 0x64) Analog Control Register -------- */ +#define ADC12B_ACR_GAIN_Pos 0 +#define ADC12B_ACR_GAIN_Msk (0x3u << ADC12B_ACR_GAIN_Pos) /**< \brief (ADC12B_ACR) Input Gain */ +#define ADC12B_ACR_GAIN(value) ((ADC12B_ACR_GAIN_Msk & ((value) << ADC12B_ACR_GAIN_Pos))) +#define ADC12B_ACR_IBCTL_Pos 8 +#define ADC12B_ACR_IBCTL_Msk (0x3u << ADC12B_ACR_IBCTL_Pos) /**< \brief (ADC12B_ACR) Bias Current Control */ +#define ADC12B_ACR_IBCTL(value) ((ADC12B_ACR_IBCTL_Msk & ((value) << ADC12B_ACR_IBCTL_Pos))) +#define ADC12B_ACR_DIFF (0x1u << 16) /**< \brief (ADC12B_ACR) Differential Mode */ +#define ADC12B_ACR_OFFSET (0x1u << 17) /**< \brief (ADC12B_ACR) Input OFFSET */ +/* -------- ADC12B_EMR : (ADC12B Offset: 0x68) Extended Mode Register -------- */ +#define ADC12B_EMR_OFFMODES (0x1u << 0) /**< \brief (ADC12B_EMR) Off Mode if Sleep Bit (ADC12B_MR) = 1 */ +#define ADC12B_EMR_OFF_MODE_STARTUP_TIME_Pos 16 +#define ADC12B_EMR_OFF_MODE_STARTUP_TIME_Msk (0xffu << ADC12B_EMR_OFF_MODE_STARTUP_TIME_Pos) /**< \brief (ADC12B_EMR) Startup Time */ +#define ADC12B_EMR_OFF_MODE_STARTUP_TIME(value) ((ADC12B_EMR_OFF_MODE_STARTUP_TIME_Msk & ((value) << ADC12B_EMR_OFF_MODE_STARTUP_TIME_Pos))) +/* -------- ADC12B_RPR : (ADC12B Offset: 0x100) Receive Pointer Register -------- */ +#define ADC12B_RPR_RXPTR_Pos 0 +#define ADC12B_RPR_RXPTR_Msk (0xffffffffu << ADC12B_RPR_RXPTR_Pos) /**< \brief (ADC12B_RPR) Receive Pointer Register */ +#define ADC12B_RPR_RXPTR(value) ((ADC12B_RPR_RXPTR_Msk & ((value) << ADC12B_RPR_RXPTR_Pos))) +/* -------- ADC12B_RCR : (ADC12B Offset: 0x104) Receive Counter Register -------- */ +#define ADC12B_RCR_RXCTR_Pos 0 +#define ADC12B_RCR_RXCTR_Msk (0xffffu << ADC12B_RCR_RXCTR_Pos) /**< \brief (ADC12B_RCR) Receive Counter Register */ +#define ADC12B_RCR_RXCTR(value) ((ADC12B_RCR_RXCTR_Msk & ((value) << ADC12B_RCR_RXCTR_Pos))) +/* -------- ADC12B_TPR : (ADC12B Offset: 0x108) Transmit Pointer Register -------- */ +#define ADC12B_TPR_TXPTR_Pos 0 +#define ADC12B_TPR_TXPTR_Msk (0xffffffffu << ADC12B_TPR_TXPTR_Pos) /**< \brief (ADC12B_TPR) Transmit Counter Register */ +#define ADC12B_TPR_TXPTR(value) ((ADC12B_TPR_TXPTR_Msk & ((value) << ADC12B_TPR_TXPTR_Pos))) +/* -------- ADC12B_TCR : (ADC12B Offset: 0x10C) Transmit Counter Register -------- */ +#define ADC12B_TCR_TXCTR_Pos 0 +#define ADC12B_TCR_TXCTR_Msk (0xffffu << ADC12B_TCR_TXCTR_Pos) /**< \brief (ADC12B_TCR) Transmit Counter Register */ +#define ADC12B_TCR_TXCTR(value) ((ADC12B_TCR_TXCTR_Msk & ((value) << ADC12B_TCR_TXCTR_Pos))) +/* -------- ADC12B_RNPR : (ADC12B Offset: 0x110) Receive Next Pointer Register -------- */ +#define ADC12B_RNPR_RXNPTR_Pos 0 +#define ADC12B_RNPR_RXNPTR_Msk (0xffffffffu << ADC12B_RNPR_RXNPTR_Pos) /**< \brief (ADC12B_RNPR) Receive Next Pointer */ +#define ADC12B_RNPR_RXNPTR(value) ((ADC12B_RNPR_RXNPTR_Msk & ((value) << ADC12B_RNPR_RXNPTR_Pos))) +/* -------- ADC12B_RNCR : (ADC12B Offset: 0x114) Receive Next Counter Register -------- */ +#define ADC12B_RNCR_RXNCTR_Pos 0 +#define ADC12B_RNCR_RXNCTR_Msk (0xffffu << ADC12B_RNCR_RXNCTR_Pos) /**< \brief (ADC12B_RNCR) Receive Next Counter */ +#define ADC12B_RNCR_RXNCTR(value) ((ADC12B_RNCR_RXNCTR_Msk & ((value) << ADC12B_RNCR_RXNCTR_Pos))) +/* -------- ADC12B_TNPR : (ADC12B Offset: 0x118) Transmit Next Pointer Register -------- */ +#define ADC12B_TNPR_TXNPTR_Pos 0 +#define ADC12B_TNPR_TXNPTR_Msk (0xffffffffu << ADC12B_TNPR_TXNPTR_Pos) /**< \brief (ADC12B_TNPR) Transmit Next Pointer */ +#define ADC12B_TNPR_TXNPTR(value) ((ADC12B_TNPR_TXNPTR_Msk & ((value) << ADC12B_TNPR_TXNPTR_Pos))) +/* -------- ADC12B_TNCR : (ADC12B Offset: 0x11C) Transmit Next Counter Register -------- */ +#define ADC12B_TNCR_TXNCTR_Pos 0 +#define ADC12B_TNCR_TXNCTR_Msk (0xffffu << ADC12B_TNCR_TXNCTR_Pos) /**< \brief (ADC12B_TNCR) Transmit Counter Next */ +#define ADC12B_TNCR_TXNCTR(value) ((ADC12B_TNCR_TXNCTR_Msk & ((value) << ADC12B_TNCR_TXNCTR_Pos))) +/* -------- ADC12B_PTCR : (ADC12B Offset: 0x120) Transfer Control Register -------- */ +#define ADC12B_PTCR_RXTEN (0x1u << 0) /**< \brief (ADC12B_PTCR) Receiver Transfer Enable */ +#define ADC12B_PTCR_RXTDIS (0x1u << 1) /**< \brief (ADC12B_PTCR) Receiver Transfer Disable */ +#define ADC12B_PTCR_TXTEN (0x1u << 8) /**< \brief (ADC12B_PTCR) Transmitter Transfer Enable */ +#define ADC12B_PTCR_TXTDIS (0x1u << 9) /**< \brief (ADC12B_PTCR) Transmitter Transfer Disable */ +/* -------- ADC12B_PTSR : (ADC12B Offset: 0x124) Transfer Status Register -------- */ +#define ADC12B_PTSR_RXTEN (0x1u << 0) /**< \brief (ADC12B_PTSR) Receiver Transfer Enable */ +#define ADC12B_PTSR_TXTEN (0x1u << 8) /**< \brief (ADC12B_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3U_ADC12B_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_chipid.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_chipid.h new file mode 100644 index 000000000..19949240b --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_chipid.h @@ -0,0 +1,159 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_CHIPID_COMPONENT_ +#define _SAM3U_CHIPID_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Chip Identifier */ +/* ============================================================================= */ +/** \addtogroup SAM3U_CHIPID Chip Identifier */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Chipid hardware registers */ +typedef struct { + RoReg CHIPID_CIDR; /**< \brief (Chipid Offset: 0x0) Chip ID Register */ + RoReg CHIPID_EXID; /**< \brief (Chipid Offset: 0x4) Chip ID Extension Register */ +} Chipid; +#endif /* __ASSEMBLY__ */ +/* -------- CHIPID_CIDR : (CHIPID Offset: 0x0) Chip ID Register -------- */ +#define CHIPID_CIDR_VERSION_Pos 0 +#define CHIPID_CIDR_VERSION_Msk (0x1fu << CHIPID_CIDR_VERSION_Pos) /**< \brief (CHIPID_CIDR) Version of the Device */ +#define CHIPID_CIDR_EPROC_Pos 5 +#define CHIPID_CIDR_EPROC_Msk (0x7u << CHIPID_CIDR_EPROC_Pos) /**< \brief (CHIPID_CIDR) Embedded Processor */ +#define CHIPID_CIDR_EPROC_ARM946ES (0x1u << 5) /**< \brief (CHIPID_CIDR) ARM946ES */ +#define CHIPID_CIDR_EPROC_ARM7TDMI (0x2u << 5) /**< \brief (CHIPID_CIDR) ARM7TDMI */ +#define CHIPID_CIDR_EPROC_CM3 (0x3u << 5) /**< \brief (CHIPID_CIDR) Cortex-M3 */ +#define CHIPID_CIDR_EPROC_ARM920T (0x4u << 5) /**< \brief (CHIPID_CIDR) ARM920T */ +#define CHIPID_CIDR_EPROC_ARM926EJS (0x5u << 5) /**< \brief (CHIPID_CIDR) ARM926EJS */ +#define CHIPID_CIDR_EPROC_CA5 (0x6u << 5) /**< \brief (CHIPID_CIDR) Cortex-A5 */ +#define CHIPID_CIDR_EPROC_CM4 (0x7u << 5) /**< \brief (CHIPID_CIDR) Cortex-M4 */ +#define CHIPID_CIDR_NVPSIZ_Pos 8 +#define CHIPID_CIDR_NVPSIZ_Msk (0xfu << CHIPID_CIDR_NVPSIZ_Pos) /**< \brief (CHIPID_CIDR) Nonvolatile Program Memory Size */ +#define CHIPID_CIDR_NVPSIZ_NONE (0x0u << 8) /**< \brief (CHIPID_CIDR) None */ +#define CHIPID_CIDR_NVPSIZ_8K (0x1u << 8) /**< \brief (CHIPID_CIDR) 8K bytes */ +#define CHIPID_CIDR_NVPSIZ_16K (0x2u << 8) /**< \brief (CHIPID_CIDR) 16K bytes */ +#define CHIPID_CIDR_NVPSIZ_32K (0x3u << 8) /**< \brief (CHIPID_CIDR) 32K bytes */ +#define CHIPID_CIDR_NVPSIZ_64K (0x5u << 8) /**< \brief (CHIPID_CIDR) 64K bytes */ +#define CHIPID_CIDR_NVPSIZ_128K (0x7u << 8) /**< \brief (CHIPID_CIDR) 128K bytes */ +#define CHIPID_CIDR_NVPSIZ_256K (0x9u << 8) /**< \brief (CHIPID_CIDR) 256K bytes */ +#define CHIPID_CIDR_NVPSIZ_512K (0xAu << 8) /**< \brief (CHIPID_CIDR) 512K bytes */ +#define CHIPID_CIDR_NVPSIZ_1024K (0xCu << 8) /**< \brief (CHIPID_CIDR) 1024K bytes */ +#define CHIPID_CIDR_NVPSIZ_2048K (0xEu << 8) /**< \brief (CHIPID_CIDR) 2048K bytes */ +#define CHIPID_CIDR_NVPSIZ2_Pos 12 +#define CHIPID_CIDR_NVPSIZ2_Msk (0xfu << CHIPID_CIDR_NVPSIZ2_Pos) /**< \brief (CHIPID_CIDR) Second Nonvolatile Program Memory Size */ +#define CHIPID_CIDR_NVPSIZ2_NONE (0x0u << 12) /**< \brief (CHIPID_CIDR) None */ +#define CHIPID_CIDR_NVPSIZ2_8K (0x1u << 12) /**< \brief (CHIPID_CIDR) 8K bytes */ +#define CHIPID_CIDR_NVPSIZ2_16K (0x2u << 12) /**< \brief (CHIPID_CIDR) 16K bytes */ +#define CHIPID_CIDR_NVPSIZ2_32K (0x3u << 12) /**< \brief (CHIPID_CIDR) 32K bytes */ +#define CHIPID_CIDR_NVPSIZ2_64K (0x5u << 12) /**< \brief (CHIPID_CIDR) 64K bytes */ +#define CHIPID_CIDR_NVPSIZ2_128K (0x7u << 12) /**< \brief (CHIPID_CIDR) 128K bytes */ +#define CHIPID_CIDR_NVPSIZ2_256K (0x9u << 12) /**< \brief (CHIPID_CIDR) 256K bytes */ +#define CHIPID_CIDR_NVPSIZ2_512K (0xAu << 12) /**< \brief (CHIPID_CIDR) 512K bytes */ +#define CHIPID_CIDR_NVPSIZ2_1024K (0xCu << 12) /**< \brief (CHIPID_CIDR) 1024K bytes */ +#define CHIPID_CIDR_NVPSIZ2_2048K (0xEu << 12) /**< \brief (CHIPID_CIDR) 2048K bytes */ +#define CHIPID_CIDR_SRAMSIZ_Pos 16 +#define CHIPID_CIDR_SRAMSIZ_Msk (0xfu << CHIPID_CIDR_SRAMSIZ_Pos) /**< \brief (CHIPID_CIDR) Internal SRAM Size */ +#define CHIPID_CIDR_SRAMSIZ_48K (0x0u << 16) /**< \brief (CHIPID_CIDR) 48K bytes */ +#define CHIPID_CIDR_SRAMSIZ_1K (0x1u << 16) /**< \brief (CHIPID_CIDR) 1K bytes */ +#define CHIPID_CIDR_SRAMSIZ_2K (0x2u << 16) /**< \brief (CHIPID_CIDR) 2K bytes */ +#define CHIPID_CIDR_SRAMSIZ_6K (0x3u << 16) /**< \brief (CHIPID_CIDR) 6K bytes */ +#define CHIPID_CIDR_SRAMSIZ_24K (0x4u << 16) /**< \brief (CHIPID_CIDR) 24K bytes */ +#define CHIPID_CIDR_SRAMSIZ_4K (0x5u << 16) /**< \brief (CHIPID_CIDR) 4K bytes */ +#define CHIPID_CIDR_SRAMSIZ_80K (0x6u << 16) /**< \brief (CHIPID_CIDR) 80K bytes */ +#define CHIPID_CIDR_SRAMSIZ_160K (0x7u << 16) /**< \brief (CHIPID_CIDR) 160K bytes */ +#define CHIPID_CIDR_SRAMSIZ_8K (0x8u << 16) /**< \brief (CHIPID_CIDR) 8K bytes */ +#define CHIPID_CIDR_SRAMSIZ_16K (0x9u << 16) /**< \brief (CHIPID_CIDR) 16K bytes */ +#define CHIPID_CIDR_SRAMSIZ_32K (0xAu << 16) /**< \brief (CHIPID_CIDR) 32K bytes */ +#define CHIPID_CIDR_SRAMSIZ_64K (0xBu << 16) /**< \brief (CHIPID_CIDR) 64K bytes */ +#define CHIPID_CIDR_SRAMSIZ_128K (0xCu << 16) /**< \brief (CHIPID_CIDR) 128K bytes */ +#define CHIPID_CIDR_SRAMSIZ_256K (0xDu << 16) /**< \brief (CHIPID_CIDR) 256K bytes */ +#define CHIPID_CIDR_SRAMSIZ_96K (0xEu << 16) /**< \brief (CHIPID_CIDR) 96K bytes */ +#define CHIPID_CIDR_SRAMSIZ_512K (0xFu << 16) /**< \brief (CHIPID_CIDR) 512K bytes */ +#define CHIPID_CIDR_ARCH_Pos 20 +#define CHIPID_CIDR_ARCH_Msk (0xffu << CHIPID_CIDR_ARCH_Pos) /**< \brief (CHIPID_CIDR) Architecture Identifier */ +#define CHIPID_CIDR_ARCH_AT91SAM9xx (0x19u << 20) /**< \brief (CHIPID_CIDR) AT91SAM9xx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM9XExx (0x29u << 20) /**< \brief (CHIPID_CIDR) AT91SAM9XExx Series */ +#define CHIPID_CIDR_ARCH_AT91x34 (0x34u << 20) /**< \brief (CHIPID_CIDR) AT91x34 Series */ +#define CHIPID_CIDR_ARCH_CAP7 (0x37u << 20) /**< \brief (CHIPID_CIDR) CAP7 Series */ +#define CHIPID_CIDR_ARCH_CAP9 (0x39u << 20) /**< \brief (CHIPID_CIDR) CAP9 Series */ +#define CHIPID_CIDR_ARCH_CAP11 (0x3Bu << 20) /**< \brief (CHIPID_CIDR) CAP11 Series */ +#define CHIPID_CIDR_ARCH_AT91x40 (0x40u << 20) /**< \brief (CHIPID_CIDR) AT91x40 Series */ +#define CHIPID_CIDR_ARCH_AT91x42 (0x42u << 20) /**< \brief (CHIPID_CIDR) AT91x42 Series */ +#define CHIPID_CIDR_ARCH_AT91x55 (0x55u << 20) /**< \brief (CHIPID_CIDR) AT91x55 Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Axx (0x60u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Axx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7AQxx (0x61u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7AQxx Series */ +#define CHIPID_CIDR_ARCH_AT91x63 (0x63u << 20) /**< \brief (CHIPID_CIDR) AT91x63 Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Sxx (0x70u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Sxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7XCxx (0x71u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7XCxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7SExx (0x72u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7SExx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Lxx (0x73u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Lxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Xxx (0x75u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Xxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7SLxx (0x76u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7SLxx Series */ +#define CHIPID_CIDR_ARCH_SAM3UxC (0x80u << 20) /**< \brief (CHIPID_CIDR) SAM3UxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3UxE (0x81u << 20) /**< \brief (CHIPID_CIDR) SAM3UxE Series (144-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3AxC (0x83u << 20) /**< \brief (CHIPID_CIDR) SAM3AxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4AxC (0x83u << 20) /**< \brief (CHIPID_CIDR) SAM4AxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3XxC (0x84u << 20) /**< \brief (CHIPID_CIDR) SAM3XxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4XxC (0x84u << 20) /**< \brief (CHIPID_CIDR) SAM4XxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3XxE (0x85u << 20) /**< \brief (CHIPID_CIDR) SAM3XxE Series (144-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4XxE (0x85u << 20) /**< \brief (CHIPID_CIDR) SAM4XxE Series (144-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3XxG (0x86u << 20) /**< \brief (CHIPID_CIDR) SAM3XxG Series (208/217-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4XxG (0x86u << 20) /**< \brief (CHIPID_CIDR) SAM4XxG Series (208/217-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SxA (0x88u << 20) /**< \brief (CHIPID_CIDR) SAM3SxASeries (48-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4SxA (0x88u << 20) /**< \brief (CHIPID_CIDR) SAM4SxA Series (48-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SxB (0x89u << 20) /**< \brief (CHIPID_CIDR) SAM3SxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4SxB (0x89u << 20) /**< \brief (CHIPID_CIDR) SAM4SxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SxC (0x8Au << 20) /**< \brief (CHIPID_CIDR) SAM3SxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4SxC (0x8Au << 20) /**< \brief (CHIPID_CIDR) SAM4SxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_AT91x92 (0x92u << 20) /**< \brief (CHIPID_CIDR) AT91x92 Series */ +#define CHIPID_CIDR_ARCH_SAM3NxA (0x93u << 20) /**< \brief (CHIPID_CIDR) SAM3NxA Series (48-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3NxB (0x94u << 20) /**< \brief (CHIPID_CIDR) SAM3NxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3NxC (0x95u << 20) /**< \brief (CHIPID_CIDR) SAM3NxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SDxB (0x99u << 20) /**< \brief (CHIPID_CIDR) SAM3SDxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SDxC (0x9Au << 20) /**< \brief (CHIPID_CIDR) SAM3SDxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM5A (0xA5u << 20) /**< \brief (CHIPID_CIDR) SAM5A */ +#define CHIPID_CIDR_ARCH_AT75Cxx (0xF0u << 20) /**< \brief (CHIPID_CIDR) AT75Cxx Series */ +#define CHIPID_CIDR_NVPTYP_Pos 28 +#define CHIPID_CIDR_NVPTYP_Msk (0x7u << CHIPID_CIDR_NVPTYP_Pos) /**< \brief (CHIPID_CIDR) Nonvolatile Program Memory Type */ +#define CHIPID_CIDR_NVPTYP_ROM (0x0u << 28) /**< \brief (CHIPID_CIDR) ROM */ +#define CHIPID_CIDR_NVPTYP_ROMLESS (0x1u << 28) /**< \brief (CHIPID_CIDR) ROMless or on-chip Flash */ +#define CHIPID_CIDR_NVPTYP_FLASH (0x2u << 28) /**< \brief (CHIPID_CIDR) Embedded Flash Memory */ +#define CHIPID_CIDR_NVPTYP_ROM_FLASH (0x3u << 28) /**< \brief (CHIPID_CIDR) ROM and Embedded Flash MemoryNVPSIZ is ROM size NVPSIZ2 is Flash size */ +#define CHIPID_CIDR_NVPTYP_SRAM (0x4u << 28) /**< \brief (CHIPID_CIDR) SRAM emulating ROM */ +#define CHIPID_CIDR_EXT (0x1u << 31) /**< \brief (CHIPID_CIDR) Extension Flag */ +/* -------- CHIPID_EXID : (CHIPID Offset: 0x4) Chip ID Extension Register -------- */ +#define CHIPID_EXID_EXID_Pos 0 +#define CHIPID_EXID_EXID_Msk (0xffffffffu << CHIPID_EXID_EXID_Pos) /**< \brief (CHIPID_EXID) Chip ID Extension */ + +/*@}*/ + + +#endif /* _SAM3U_CHIPID_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_dmac.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_dmac.h new file mode 100644 index 000000000..c15eafe73 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_dmac.h @@ -0,0 +1,249 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_DMAC_COMPONENT_ +#define _SAM3U_DMAC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR DMA Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3U_DMAC DMA Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief DmacCh_num hardware registers */ +typedef struct { + RwReg DMAC_SADDR; /**< \brief (DmacCh_num Offset: 0x0) DMAC Channel Source Address Register */ + RwReg DMAC_DADDR; /**< \brief (DmacCh_num Offset: 0x4) DMAC Channel Destination Address Register */ + RwReg DMAC_DSCR; /**< \brief (DmacCh_num Offset: 0x8) DMAC Channel Descriptor Address Register */ + RwReg DMAC_CTRLA; /**< \brief (DmacCh_num Offset: 0xC) DMAC Channel Control A Register */ + RwReg DMAC_CTRLB; /**< \brief (DmacCh_num Offset: 0x10) DMAC Channel Control B Register */ + RwReg DMAC_CFG; /**< \brief (DmacCh_num Offset: 0x14) DMAC Channel Configuration Register */ + RoReg Reserved1[4]; +} DmacCh_num; +/** \brief Dmac hardware registers */ +#define DMACCH_NUM_NUMBER 4 +typedef struct { + RwReg DMAC_GCFG; /**< \brief (Dmac Offset: 0x000) DMAC Global Configuration Register */ + RwReg DMAC_EN; /**< \brief (Dmac Offset: 0x004) DMAC Enable Register */ + RwReg DMAC_SREQ; /**< \brief (Dmac Offset: 0x008) DMAC Software Single Request Register */ + RwReg DMAC_CREQ; /**< \brief (Dmac Offset: 0x00C) DMAC Software Chunk Transfer Request Register */ + RwReg DMAC_LAST; /**< \brief (Dmac Offset: 0x010) DMAC Software Last Transfer Flag Register */ + RoReg Reserved1[1]; + WoReg DMAC_EBCIER; /**< \brief (Dmac Offset: 0x018) DMAC Error, Chained Buffer transfer completed and Buffer transfer completed Interrupt Enable register. */ + WoReg DMAC_EBCIDR; /**< \brief (Dmac Offset: 0x01C) DMAC Error, Chained Buffer transfer completed and Buffer transfer completed Interrupt Disable register. */ + RoReg DMAC_EBCIMR; /**< \brief (Dmac Offset: 0x020) DMAC Error, Chained Buffer transfer completed and Buffer transfer completed Mask Register. */ + RoReg DMAC_EBCISR; /**< \brief (Dmac Offset: 0x024) DMAC Error, Chained Buffer transfer completed and Buffer transfer completed Status Register. */ + WoReg DMAC_CHER; /**< \brief (Dmac Offset: 0x028) DMAC Channel Handler Enable Register */ + WoReg DMAC_CHDR; /**< \brief (Dmac Offset: 0x02C) DMAC Channel Handler Disable Register */ + RoReg DMAC_CHSR; /**< \brief (Dmac Offset: 0x030) DMAC Channel Handler Status Register */ + RoReg Reserved2[2]; + DmacCh_num DMAC_CH_NUM[DMACCH_NUM_NUMBER]; /**< \brief (Dmac Offset: 0x3C) ch_num = 0 .. 3 */ +} Dmac; +#endif /* __ASSEMBLY__ */ +/* -------- DMAC_GCFG : (DMAC Offset: 0x000) DMAC Global Configuration Register -------- */ +#define DMAC_GCFG_ARB_CFG (0x1u << 4) /**< \brief (DMAC_GCFG) */ +/* -------- DMAC_EN : (DMAC Offset: 0x004) DMAC Enable Register -------- */ +#define DMAC_EN_ENABLE (0x1u << 0) /**< \brief (DMAC_EN) */ +/* -------- DMAC_SREQ : (DMAC Offset: 0x008) DMAC Software Single Request Register -------- */ +#define DMAC_SREQ_SSREQ0 (0x1u << 0) /**< \brief (DMAC_SREQ) */ +#define DMAC_SREQ_DSREQ0 (0x1u << 1) /**< \brief (DMAC_SREQ) */ +#define DMAC_SREQ_SSREQ1 (0x1u << 2) /**< \brief (DMAC_SREQ) */ +#define DMAC_SREQ_DSREQ1 (0x1u << 3) /**< \brief (DMAC_SREQ) */ +#define DMAC_SREQ_SSREQ3 (0x1u << 6) /**< \brief (DMAC_SREQ) */ +#define DMAC_SREQ_DSREQ3 (0x1u << 7) /**< \brief (DMAC_SREQ) */ +/* -------- DMAC_CREQ : (DMAC Offset: 0x00C) DMAC Software Chunk Transfer Request Register -------- */ +#define DMAC_CREQ_SCREQ0 (0x1u << 0) /**< \brief (DMAC_CREQ) */ +#define DMAC_CREQ_DCREQ0 (0x1u << 1) /**< \brief (DMAC_CREQ) */ +#define DMAC_CREQ_SCREQ1 (0x1u << 2) /**< \brief (DMAC_CREQ) */ +#define DMAC_CREQ_DCREQ1 (0x1u << 3) /**< \brief (DMAC_CREQ) */ +#define DMAC_CREQ_SCREQ3 (0x1u << 6) /**< \brief (DMAC_CREQ) */ +#define DMAC_CREQ_DCREQ3 (0x1u << 7) /**< \brief (DMAC_CREQ) */ +/* -------- DMAC_LAST : (DMAC Offset: 0x010) DMAC Software Last Transfer Flag Register -------- */ +#define DMAC_LAST_SLAST0 (0x1u << 0) /**< \brief (DMAC_LAST) */ +#define DMAC_LAST_DLAST0 (0x1u << 1) /**< \brief (DMAC_LAST) */ +#define DMAC_LAST_SLAST1 (0x1u << 2) /**< \brief (DMAC_LAST) */ +#define DMAC_LAST_DLAST1 (0x1u << 3) /**< \brief (DMAC_LAST) */ +#define DMAC_LAST_SLAST2 (0x1u << 4) /**< \brief (DMAC_LAST) */ +#define DMAC_LAST_DLAST2 (0x1u << 5) /**< \brief (DMAC_LAST) */ +#define DMAC_LAST_SLAST3 (0x1u << 6) /**< \brief (DMAC_LAST) */ +#define DMAC_LAST_DLAST3 (0x1u << 7) /**< \brief (DMAC_LAST) */ +/* -------- DMAC_EBCIER : (DMAC Offset: 0x018) DMAC Error, Chained Buffer transfer completed and Buffer transfer completed Interrupt Enable register. -------- */ +#define DMAC_EBCIER_BTC0 (0x1u << 0) /**< \brief (DMAC_EBCIER) */ +#define DMAC_EBCIER_BTC1 (0x1u << 1) /**< \brief (DMAC_EBCIER) */ +#define DMAC_EBCIER_BTC2 (0x1u << 2) /**< \brief (DMAC_EBCIER) */ +#define DMAC_EBCIER_BTC3 (0x1u << 3) /**< \brief (DMAC_EBCIER) */ +#define DMAC_EBCIER_CBTC0 (0x1u << 8) /**< \brief (DMAC_EBCIER) */ +#define DMAC_EBCIER_CBTC1 (0x1u << 9) /**< \brief (DMAC_EBCIER) */ +#define DMAC_EBCIER_CBTC2 (0x1u << 10) /**< \brief (DMAC_EBCIER) */ +#define DMAC_EBCIER_CBTC3 (0x1u << 11) /**< \brief (DMAC_EBCIER) */ +#define DMAC_EBCIER_ERR0 (0x1u << 16) /**< \brief (DMAC_EBCIER) */ +#define DMAC_EBCIER_ERR1 (0x1u << 17) /**< \brief (DMAC_EBCIER) */ +#define DMAC_EBCIER_ERR2 (0x1u << 18) /**< \brief (DMAC_EBCIER) */ +#define DMAC_EBCIER_ERR3 (0x1u << 19) /**< \brief (DMAC_EBCIER) */ +/* -------- DMAC_EBCIDR : (DMAC Offset: 0x01C) DMAC Error, Chained Buffer transfer completed and Buffer transfer completed Interrupt Disable register. -------- */ +#define DMAC_EBCIDR_BTC0 (0x1u << 0) /**< \brief (DMAC_EBCIDR) */ +#define DMAC_EBCIDR_BTC1 (0x1u << 1) /**< \brief (DMAC_EBCIDR) */ +#define DMAC_EBCIDR_BTC2 (0x1u << 2) /**< \brief (DMAC_EBCIDR) */ +#define DMAC_EBCIDR_BTC3 (0x1u << 3) /**< \brief (DMAC_EBCIDR) */ +#define DMAC_EBCIDR_CBTC0 (0x1u << 8) /**< \brief (DMAC_EBCIDR) */ +#define DMAC_EBCIDR_CBTC1 (0x1u << 9) /**< \brief (DMAC_EBCIDR) */ +#define DMAC_EBCIDR_CBTC2 (0x1u << 10) /**< \brief (DMAC_EBCIDR) */ +#define DMAC_EBCIDR_CBTC3 (0x1u << 11) /**< \brief (DMAC_EBCIDR) */ +#define DMAC_EBCIDR_ERR0 (0x1u << 16) /**< \brief (DMAC_EBCIDR) */ +#define DMAC_EBCIDR_ERR1 (0x1u << 17) /**< \brief (DMAC_EBCIDR) */ +#define DMAC_EBCIDR_ERR2 (0x1u << 18) /**< \brief (DMAC_EBCIDR) */ +#define DMAC_EBCIDR_ERR3 (0x1u << 19) /**< \brief (DMAC_EBCIDR) */ +/* -------- DMAC_EBCIMR : (DMAC Offset: 0x020) DMAC Error, Chained Buffer transfer completed and Buffer transfer completed Mask Register. -------- */ +#define DMAC_EBCIMR_BTC0 (0x1u << 0) /**< \brief (DMAC_EBCIMR) */ +#define DMAC_EBCIMR_BTC1 (0x1u << 1) /**< \brief (DMAC_EBCIMR) */ +#define DMAC_EBCIMR_BTC2 (0x1u << 2) /**< \brief (DMAC_EBCIMR) */ +#define DMAC_EBCIMR_BTC3 (0x1u << 3) /**< \brief (DMAC_EBCIMR) */ +#define DMAC_EBCIMR_CBTC0 (0x1u << 8) /**< \brief (DMAC_EBCIMR) */ +#define DMAC_EBCIMR_CBTC1 (0x1u << 9) /**< \brief (DMAC_EBCIMR) */ +#define DMAC_EBCIMR_CBTC2 (0x1u << 10) /**< \brief (DMAC_EBCIMR) */ +#define DMAC_EBCIMR_CBTC3 (0x1u << 11) /**< \brief (DMAC_EBCIMR) */ +#define DMAC_EBCIMR_ERR0 (0x1u << 16) /**< \brief (DMAC_EBCIMR) */ +#define DMAC_EBCIMR_ERR1 (0x1u << 17) /**< \brief (DMAC_EBCIMR) */ +#define DMAC_EBCIMR_ERR2 (0x1u << 18) /**< \brief (DMAC_EBCIMR) */ +#define DMAC_EBCIMR_ERR3 (0x1u << 19) /**< \brief (DMAC_EBCIMR) */ +/* -------- DMAC_EBCISR : (DMAC Offset: 0x024) DMAC Error, Chained Buffer transfer completed and Buffer transfer completed Status Register. -------- */ +#define DMAC_EBCISR_BTC0 (0x1u << 0) /**< \brief (DMAC_EBCISR) */ +#define DMAC_EBCISR_BTC1 (0x1u << 1) /**< \brief (DMAC_EBCISR) */ +#define DMAC_EBCISR_BTC2 (0x1u << 2) /**< \brief (DMAC_EBCISR) */ +#define DMAC_EBCISR_BTC3 (0x1u << 3) /**< \brief (DMAC_EBCISR) */ +#define DMAC_EBCISR_CBTC0 (0x1u << 8) /**< \brief (DMAC_EBCISR) */ +#define DMAC_EBCISR_CBTC1 (0x1u << 9) /**< \brief (DMAC_EBCISR) */ +#define DMAC_EBCISR_CBTC2 (0x1u << 10) /**< \brief (DMAC_EBCISR) */ +#define DMAC_EBCISR_CBTC3 (0x1u << 11) /**< \brief (DMAC_EBCISR) */ +#define DMAC_EBCISR_ERR0 (0x1u << 16) /**< \brief (DMAC_EBCISR) */ +#define DMAC_EBCISR_ERR1 (0x1u << 17) /**< \brief (DMAC_EBCISR) */ +#define DMAC_EBCISR_ERR2 (0x1u << 18) /**< \brief (DMAC_EBCISR) */ +#define DMAC_EBCISR_ERR3 (0x1u << 19) /**< \brief (DMAC_EBCISR) */ +/* -------- DMAC_CHER : (DMAC Offset: 0x028) DMAC Channel Handler Enable Register -------- */ +#define DMAC_CHER_ENA0 (0x1u << 0) /**< \brief (DMAC_CHER) */ +#define DMAC_CHER_ENA1 (0x1u << 1) /**< \brief (DMAC_CHER) */ +#define DMAC_CHER_ENA2 (0x1u << 2) /**< \brief (DMAC_CHER) */ +#define DMAC_CHER_ENA3 (0x1u << 3) /**< \brief (DMAC_CHER) */ +#define DMAC_CHER_SUSP0 (0x1u << 8) /**< \brief (DMAC_CHER) */ +#define DMAC_CHER_SUSP1 (0x1u << 9) /**< \brief (DMAC_CHER) */ +#define DMAC_CHER_SUSP2 (0x1u << 10) /**< \brief (DMAC_CHER) */ +#define DMAC_CHER_SUSP3 (0x1u << 11) /**< \brief (DMAC_CHER) */ +#define DMAC_CHER_KEEP0 (0x1u << 24) /**< \brief (DMAC_CHER) */ +#define DMAC_CHER_KEEP1 (0x1u << 25) /**< \brief (DMAC_CHER) */ +#define DMAC_CHER_KEEP2 (0x1u << 26) /**< \brief (DMAC_CHER) */ +#define DMAC_CHER_KEEP3 (0x1u << 27) /**< \brief (DMAC_CHER) */ +/* -------- DMAC_CHDR : (DMAC Offset: 0x02C) DMAC Channel Handler Disable Register -------- */ +#define DMAC_CHDR_DIS0 (0x1u << 0) /**< \brief (DMAC_CHDR) */ +#define DMAC_CHDR_DIS1 (0x1u << 1) /**< \brief (DMAC_CHDR) */ +#define DMAC_CHDR_DIS2 (0x1u << 2) /**< \brief (DMAC_CHDR) */ +#define DMAC_CHDR_DIS3 (0x1u << 3) /**< \brief (DMAC_CHDR) */ +#define DMAC_CHDR_RES0 (0x1u << 8) /**< \brief (DMAC_CHDR) */ +#define DMAC_CHDR_RES1 (0x1u << 9) /**< \brief (DMAC_CHDR) */ +#define DMAC_CHDR_RES2 (0x1u << 10) /**< \brief (DMAC_CHDR) */ +#define DMAC_CHDR_RES3 (0x1u << 11) /**< \brief (DMAC_CHDR) */ +/* -------- DMAC_CHSR : (DMAC Offset: 0x030) DMAC Channel Handler Status Register -------- */ +#define DMAC_CHSR_ENA0 (0x1u << 0) /**< \brief (DMAC_CHSR) */ +#define DMAC_CHSR_ENA1 (0x1u << 1) /**< \brief (DMAC_CHSR) */ +#define DMAC_CHSR_ENA2 (0x1u << 2) /**< \brief (DMAC_CHSR) */ +#define DMAC_CHSR_ENA3 (0x1u << 3) /**< \brief (DMAC_CHSR) */ +#define DMAC_CHSR_SUSP0 (0x1u << 8) /**< \brief (DMAC_CHSR) */ +#define DMAC_CHSR_SUSP1 (0x1u << 9) /**< \brief (DMAC_CHSR) */ +#define DMAC_CHSR_SUSP2 (0x1u << 10) /**< \brief (DMAC_CHSR) */ +#define DMAC_CHSR_SUSP3 (0x1u << 11) /**< \brief (DMAC_CHSR) */ +#define DMAC_CHSR_EMPT0 (0x1u << 16) /**< \brief (DMAC_CHSR) */ +#define DMAC_CHSR_EMPT1 (0x1u << 17) /**< \brief (DMAC_CHSR) */ +#define DMAC_CHSR_EMPT2 (0x1u << 18) /**< \brief (DMAC_CHSR) */ +#define DMAC_CHSR_EMPT3 (0x1u << 19) /**< \brief (DMAC_CHSR) */ +#define DMAC_CHSR_STAL0 (0x1u << 24) /**< \brief (DMAC_CHSR) */ +#define DMAC_CHSR_STAL1 (0x1u << 25) /**< \brief (DMAC_CHSR) */ +#define DMAC_CHSR_STAL2 (0x1u << 26) /**< \brief (DMAC_CHSR) */ +#define DMAC_CHSR_STAL3 (0x1u << 27) /**< \brief (DMAC_CHSR) */ +/* -------- DMAC_SADDR : (DMAC Offset: N/A) DMAC Channel Source Address Register -------- */ +#define DMAC_SADDR_SADDRx_Pos 0 +#define DMAC_SADDR_SADDRx_Msk (0xffffffffu << DMAC_SADDR_SADDRx_Pos) /**< \brief (DMAC_SADDR) */ +#define DMAC_SADDR_SADDRx(value) ((DMAC_SADDR_SADDRx_Msk & ((value) << DMAC_SADDR_SADDRx_Pos))) +/* -------- DMAC_DADDR : (DMAC Offset: N/A) DMAC Channel Destination Address Register -------- */ +#define DMAC_DADDR_DADDRx_Pos 0 +#define DMAC_DADDR_DADDRx_Msk (0xffffffffu << DMAC_DADDR_DADDRx_Pos) /**< \brief (DMAC_DADDR) */ +#define DMAC_DADDR_DADDRx(value) ((DMAC_DADDR_DADDRx_Msk & ((value) << DMAC_DADDR_DADDRx_Pos))) +/* -------- DMAC_DSCR : (DMAC Offset: N/A) DMAC Channel Descriptor Address Register -------- */ +#define DMAC_DSCR_DSCRx_Pos 2 +#define DMAC_DSCR_DSCRx_Msk (0x3fffffffu << DMAC_DSCR_DSCRx_Pos) /**< \brief (DMAC_DSCR) */ +#define DMAC_DSCR_DSCRx(value) ((DMAC_DSCR_DSCRx_Msk & ((value) << DMAC_DSCR_DSCRx_Pos))) +/* -------- DMAC_CTRLA : (DMAC Offset: N/A) DMAC Channel Control A Register -------- */ +#define DMAC_CTRLA_BTSIZE_Pos 0 +#define DMAC_CTRLA_BTSIZE_Msk (0xfffu << DMAC_CTRLA_BTSIZE_Pos) /**< \brief (DMAC_CTRLA) */ +#define DMAC_CTRLA_BTSIZE(value) ((DMAC_CTRLA_BTSIZE_Msk & ((value) << DMAC_CTRLA_BTSIZE_Pos))) +#define DMAC_CTRLA_SCSIZE (0x1u << 16) /**< \brief (DMAC_CTRLA) */ +#define DMAC_CTRLA_DCSIZE (0x1u << 20) /**< \brief (DMAC_CTRLA) */ +#define DMAC_CTRLA_SRC_WIDTH_Pos 24 +#define DMAC_CTRLA_SRC_WIDTH_Msk (0x3u << DMAC_CTRLA_SRC_WIDTH_Pos) /**< \brief (DMAC_CTRLA) */ +#define DMAC_CTRLA_SRC_WIDTH(value) ((DMAC_CTRLA_SRC_WIDTH_Msk & ((value) << DMAC_CTRLA_SRC_WIDTH_Pos))) +#define DMAC_CTRLA_DST_WIDTH_Pos 28 +#define DMAC_CTRLA_DST_WIDTH_Msk (0x3u << DMAC_CTRLA_DST_WIDTH_Pos) /**< \brief (DMAC_CTRLA) */ +#define DMAC_CTRLA_DST_WIDTH(value) ((DMAC_CTRLA_DST_WIDTH_Msk & ((value) << DMAC_CTRLA_DST_WIDTH_Pos))) +#define DMAC_CTRLA_DONE (0x1u << 31) /**< \brief (DMAC_CTRLA) */ +/* -------- DMAC_CTRLB : (DMAC Offset: N/A) DMAC Channel Control B Register -------- */ +#define DMAC_CTRLB_SRC_DSCR (0x1u << 16) /**< \brief (DMAC_CTRLB) */ +#define DMAC_CTRLB_DST_DSCR (0x1u << 20) /**< \brief (DMAC_CTRLB) */ +#define DMAC_CTRLB_FC_Pos 21 +#define DMAC_CTRLB_FC_Msk (0x3u << DMAC_CTRLB_FC_Pos) /**< \brief (DMAC_CTRLB) */ +#define DMAC_CTRLB_FC(value) ((DMAC_CTRLB_FC_Msk & ((value) << DMAC_CTRLB_FC_Pos))) +#define DMAC_CTRLB_SRC_INCR_Pos 24 +#define DMAC_CTRLB_SRC_INCR_Msk (0x3u << DMAC_CTRLB_SRC_INCR_Pos) /**< \brief (DMAC_CTRLB) */ +#define DMAC_CTRLB_SRC_INCR(value) ((DMAC_CTRLB_SRC_INCR_Msk & ((value) << DMAC_CTRLB_SRC_INCR_Pos))) +#define DMAC_CTRLB_DST_INCR_Pos 28 +#define DMAC_CTRLB_DST_INCR_Msk (0x3u << DMAC_CTRLB_DST_INCR_Pos) /**< \brief (DMAC_CTRLB) */ +#define DMAC_CTRLB_DST_INCR(value) ((DMAC_CTRLB_DST_INCR_Msk & ((value) << DMAC_CTRLB_DST_INCR_Pos))) +#define DMAC_CTRLB_IEN (0x1u << 30) /**< \brief (DMAC_CTRLB) */ +/* -------- DMAC_CFG : (DMAC Offset: N/A) DMAC Channel Configuration Register -------- */ +#define DMAC_CFG_SRC_PER_Pos 0 +#define DMAC_CFG_SRC_PER_Msk (0xfu << DMAC_CFG_SRC_PER_Pos) /**< \brief (DMAC_CFG) */ +#define DMAC_CFG_SRC_PER(value) ((DMAC_CFG_SRC_PER_Msk & ((value) << DMAC_CFG_SRC_PER_Pos))) +#define DMAC_CFG_DST_PER_Pos 4 +#define DMAC_CFG_DST_PER_Msk (0xfu << DMAC_CFG_DST_PER_Pos) /**< \brief (DMAC_CFG) */ +#define DMAC_CFG_DST_PER(value) ((DMAC_CFG_DST_PER_Msk & ((value) << DMAC_CFG_DST_PER_Pos))) +#define DMAC_CFG_SRC_H2SEL (0x1u << 9) /**< \brief (DMAC_CFG) */ +#define DMAC_CFG_DST_H2SEL (0x1u << 13) /**< \brief (DMAC_CFG) */ +#define DMAC_CFG_SOD (0x1u << 16) /**< \brief (DMAC_CFG) */ +#define DMAC_CFG_LOCK_IF (0x1u << 20) /**< \brief (DMAC_CFG) */ +#define DMAC_CFG_LOCK_B (0x1u << 21) /**< \brief (DMAC_CFG) */ +#define DMAC_CFG_LOCK_IF_L (0x1u << 22) /**< \brief (DMAC_CFG) */ +#define DMAC_CFG_AHB_PROT_Pos 24 +#define DMAC_CFG_AHB_PROT_Msk (0x7u << DMAC_CFG_AHB_PROT_Pos) /**< \brief (DMAC_CFG) */ +#define DMAC_CFG_AHB_PROT(value) ((DMAC_CFG_AHB_PROT_Msk & ((value) << DMAC_CFG_AHB_PROT_Pos))) +#define DMAC_CFG_FIFOCFG_Pos 28 +#define DMAC_CFG_FIFOCFG_Msk (0x3u << DMAC_CFG_FIFOCFG_Pos) /**< \brief (DMAC_CFG) */ +#define DMAC_CFG_FIFOCFG(value) ((DMAC_CFG_FIFOCFG_Msk & ((value) << DMAC_CFG_FIFOCFG_Pos))) + +/*@}*/ + + +#endif /* _SAM3U_DMAC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_efc.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_efc.h new file mode 100644 index 000000000..03ecd9d1d --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_efc.h @@ -0,0 +1,76 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_EFC_COMPONENT_ +#define _SAM3U_EFC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Embedded Flash Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3U_EFC Embedded Flash Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Efc hardware registers */ +typedef struct { + RwReg EEFC_FMR; /**< \brief (Efc Offset: 0x00) EEFC Flash Mode Register */ + WoReg EEFC_FCR; /**< \brief (Efc Offset: 0x04) EEFC Flash Command Register */ + RoReg EEFC_FSR; /**< \brief (Efc Offset: 0x08) EEFC Flash Status Register */ + RoReg EEFC_FRR; /**< \brief (Efc Offset: 0x0C) EEFC Flash Result Register */ +} Efc; +#endif /* __ASSEMBLY__ */ +/* -------- EEFC_FMR : (EFC Offset: 0x00) EEFC Flash Mode Register -------- */ +#define EEFC_FMR_FRDY (0x1u << 0) /**< \brief (EEFC_FMR) Ready Interrupt Enable */ +#define EEFC_FMR_FWS_Pos 8 +#define EEFC_FMR_FWS_Msk (0xfu << EEFC_FMR_FWS_Pos) /**< \brief (EEFC_FMR) Flash Wait State */ +#define EEFC_FMR_FWS(value) ((EEFC_FMR_FWS_Msk & ((value) << EEFC_FMR_FWS_Pos))) +#define EEFC_FMR_SCOD (0x1u << 16) /**< \brief (EEFC_FMR) Sequential Code Optimization Disable */ +#define EEFC_FMR_FAM (0x1u << 24) /**< \brief (EEFC_FMR) Flash Access Mode */ +/* -------- EEFC_FCR : (EFC Offset: 0x04) EEFC Flash Command Register -------- */ +#define EEFC_FCR_FCMD_Pos 0 +#define EEFC_FCR_FCMD_Msk (0xffu << EEFC_FCR_FCMD_Pos) /**< \brief (EEFC_FCR) Flash Command */ +#define EEFC_FCR_FCMD(value) ((EEFC_FCR_FCMD_Msk & ((value) << EEFC_FCR_FCMD_Pos))) +#define EEFC_FCR_FARG_Pos 8 +#define EEFC_FCR_FARG_Msk (0xffffu << EEFC_FCR_FARG_Pos) /**< \brief (EEFC_FCR) Flash Command Argument */ +#define EEFC_FCR_FARG(value) ((EEFC_FCR_FARG_Msk & ((value) << EEFC_FCR_FARG_Pos))) +#define EEFC_FCR_FKEY_Pos 24 +#define EEFC_FCR_FKEY_Msk (0xffu << EEFC_FCR_FKEY_Pos) /**< \brief (EEFC_FCR) Flash Writing Protection Key */ +#define EEFC_FCR_FKEY(value) ((EEFC_FCR_FKEY_Msk & ((value) << EEFC_FCR_FKEY_Pos))) +/* -------- EEFC_FSR : (EFC Offset: 0x08) EEFC Flash Status Register -------- */ +#define EEFC_FSR_FRDY (0x1u << 0) /**< \brief (EEFC_FSR) Flash Ready Status */ +#define EEFC_FSR_FCMDE (0x1u << 1) /**< \brief (EEFC_FSR) Flash Command Error Status */ +#define EEFC_FSR_FLOCKE (0x1u << 2) /**< \brief (EEFC_FSR) Flash Lock Error Status */ +/* -------- EEFC_FRR : (EFC Offset: 0x0C) EEFC Flash Result Register -------- */ +#define EEFC_FRR_FVALUE_Pos 0 +#define EEFC_FRR_FVALUE_Msk (0xffffffffu << EEFC_FRR_FVALUE_Pos) /**< \brief (EEFC_FRR) Flash Result Value */ + +/*@}*/ + + +#endif /* _SAM3U_EFC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_gpbr.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_gpbr.h new file mode 100644 index 000000000..03449f32f --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_gpbr.h @@ -0,0 +1,53 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_GPBR_COMPONENT_ +#define _SAM3U_GPBR_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR General Purpose Backup Register */ +/* ============================================================================= */ +/** \addtogroup SAM3U_GPBR General Purpose Backup Register */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Gpbr hardware registers */ +typedef struct { + RwReg SYS_GPBR[4]; /**< \brief (Gpbr Offset: 0x0) General Purpose Backup Register */ +} Gpbr; +#endif /* __ASSEMBLY__ */ +/* -------- SYS_GPBR[4] : (GPBR Offset: 0x0) General Purpose Backup Register -------- */ +#define SYS_GPBR_GPBR_VALUE_Pos 0 +#define SYS_GPBR_GPBR_VALUE_Msk (0xffffffffu << SYS_GPBR_GPBR_VALUE_Pos) /**< \brief (SYS_GPBR[4]) Value of GPBR x */ +#define SYS_GPBR_GPBR_VALUE(value) ((SYS_GPBR_GPBR_VALUE_Msk & ((value) << SYS_GPBR_GPBR_VALUE_Pos))) + +/*@}*/ + + +#endif /* _SAM3U_GPBR_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_hsmci.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_hsmci.h new file mode 100644 index 000000000..7f6afe5ba --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_hsmci.h @@ -0,0 +1,337 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_HSMCI_COMPONENT_ +#define _SAM3U_HSMCI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR High Speed MultiMedia Card Interface */ +/* ============================================================================= */ +/** \addtogroup SAM3U_HSMCI High Speed MultiMedia Card Interface */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Hsmci hardware registers */ +typedef struct { + WoReg HSMCI_CR; /**< \brief (Hsmci Offset: 0x00) Control Register */ + RwReg HSMCI_MR; /**< \brief (Hsmci Offset: 0x04) Mode Register */ + RwReg HSMCI_DTOR; /**< \brief (Hsmci Offset: 0x08) Data Timeout Register */ + RwReg HSMCI_SDCR; /**< \brief (Hsmci Offset: 0x0C) SD/SDIO Card Register */ + RwReg HSMCI_ARGR; /**< \brief (Hsmci Offset: 0x10) Argument Register */ + WoReg HSMCI_CMDR; /**< \brief (Hsmci Offset: 0x14) Command Register */ + RwReg HSMCI_BLKR; /**< \brief (Hsmci Offset: 0x18) Block Register */ + RwReg HSMCI_CSTOR; /**< \brief (Hsmci Offset: 0x1C) Completion Signal Timeout Register */ + RoReg HSMCI_RSPR[4]; /**< \brief (Hsmci Offset: 0x20) Response Register */ + RoReg HSMCI_RDR; /**< \brief (Hsmci Offset: 0x30) Receive Data Register */ + WoReg HSMCI_TDR; /**< \brief (Hsmci Offset: 0x34) Transmit Data Register */ + RoReg Reserved1[2]; + RoReg HSMCI_SR; /**< \brief (Hsmci Offset: 0x40) Status Register */ + WoReg HSMCI_IER; /**< \brief (Hsmci Offset: 0x44) Interrupt Enable Register */ + WoReg HSMCI_IDR; /**< \brief (Hsmci Offset: 0x48) Interrupt Disable Register */ + RoReg HSMCI_IMR; /**< \brief (Hsmci Offset: 0x4C) Interrupt Mask Register */ + RwReg HSMCI_DMA; /**< \brief (Hsmci Offset: 0x50) DMA Configuration Register */ + RwReg HSMCI_CFG; /**< \brief (Hsmci Offset: 0x54) Configuration Register */ + RoReg Reserved2[35]; + RwReg HSMCI_WPMR; /**< \brief (Hsmci Offset: 0xE4) Write Protection Mode Register */ + RoReg HSMCI_WPSR; /**< \brief (Hsmci Offset: 0xE8) Write Protection Status Register */ + RoReg Reserved3[69]; + RwReg HSMCI_FIFO[256]; /**< \brief (Hsmci Offset: 0x200) FIFO Memory Aperture0 */ +} Hsmci; +#endif /* __ASSEMBLY__ */ +/* -------- HSMCI_CR : (HSMCI Offset: 0x00) Control Register -------- */ +#define HSMCI_CR_MCIEN (0x1u << 0) /**< \brief (HSMCI_CR) Multi-Media Interface Enable */ +#define HSMCI_CR_MCIDIS (0x1u << 1) /**< \brief (HSMCI_CR) Multi-Media Interface Disable */ +#define HSMCI_CR_PWSEN (0x1u << 2) /**< \brief (HSMCI_CR) Power Save Mode Enable */ +#define HSMCI_CR_PWSDIS (0x1u << 3) /**< \brief (HSMCI_CR) Power Save Mode Disable */ +#define HSMCI_CR_SWRST (0x1u << 7) /**< \brief (HSMCI_CR) Software Reset */ +/* -------- HSMCI_MR : (HSMCI Offset: 0x04) Mode Register -------- */ +#define HSMCI_MR_CLKDIV_Pos 0 +#define HSMCI_MR_CLKDIV_Msk (0xffu << HSMCI_MR_CLKDIV_Pos) /**< \brief (HSMCI_MR) Clock Divider */ +#define HSMCI_MR_CLKDIV(value) ((HSMCI_MR_CLKDIV_Msk & ((value) << HSMCI_MR_CLKDIV_Pos))) +#define HSMCI_MR_PWSDIV_Pos 8 +#define HSMCI_MR_PWSDIV_Msk (0x7u << HSMCI_MR_PWSDIV_Pos) /**< \brief (HSMCI_MR) Power Saving Divider */ +#define HSMCI_MR_PWSDIV(value) ((HSMCI_MR_PWSDIV_Msk & ((value) << HSMCI_MR_PWSDIV_Pos))) +#define HSMCI_MR_RDPROOF (0x1u << 11) /**< \brief (HSMCI_MR) */ +#define HSMCI_MR_WRPROOF (0x1u << 12) /**< \brief (HSMCI_MR) */ +#define HSMCI_MR_FBYTE (0x1u << 13) /**< \brief (HSMCI_MR) Force Byte Transfer */ +#define HSMCI_MR_PADV (0x1u << 14) /**< \brief (HSMCI_MR) Padding Value */ +/* -------- HSMCI_DTOR : (HSMCI Offset: 0x08) Data Timeout Register -------- */ +#define HSMCI_DTOR_DTOCYC_Pos 0 +#define HSMCI_DTOR_DTOCYC_Msk (0xfu << HSMCI_DTOR_DTOCYC_Pos) /**< \brief (HSMCI_DTOR) Data Timeout Cycle Number */ +#define HSMCI_DTOR_DTOCYC(value) ((HSMCI_DTOR_DTOCYC_Msk & ((value) << HSMCI_DTOR_DTOCYC_Pos))) +#define HSMCI_DTOR_DTOMUL_Pos 4 +#define HSMCI_DTOR_DTOMUL_Msk (0x7u << HSMCI_DTOR_DTOMUL_Pos) /**< \brief (HSMCI_DTOR) Data Timeout Multiplier */ +#define HSMCI_DTOR_DTOMUL_1 (0x0u << 4) /**< \brief (HSMCI_DTOR) DTOCYC */ +#define HSMCI_DTOR_DTOMUL_16 (0x1u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 16 */ +#define HSMCI_DTOR_DTOMUL_128 (0x2u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 128 */ +#define HSMCI_DTOR_DTOMUL_256 (0x3u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 256 */ +#define HSMCI_DTOR_DTOMUL_1024 (0x4u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 1024 */ +#define HSMCI_DTOR_DTOMUL_4096 (0x5u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 4096 */ +#define HSMCI_DTOR_DTOMUL_65536 (0x6u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 65536 */ +#define HSMCI_DTOR_DTOMUL_1048576 (0x7u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 1048576 */ +/* -------- HSMCI_SDCR : (HSMCI Offset: 0x0C) SD/SDIO Card Register -------- */ +#define HSMCI_SDCR_SDCSEL_Pos 0 +#define HSMCI_SDCR_SDCSEL_Msk (0x3u << HSMCI_SDCR_SDCSEL_Pos) /**< \brief (HSMCI_SDCR) SDCard/SDIO Slot */ +#define HSMCI_SDCR_SDCSEL_SLOTA (0x0u << 0) /**< \brief (HSMCI_SDCR) Slot A is selected. */ +#define HSMCI_SDCR_SDCSEL_SLOTB (0x1u << 0) /**< \brief (HSMCI_SDCR) - */ +#define HSMCI_SDCR_SDCSEL_SLOTC (0x2u << 0) /**< \brief (HSMCI_SDCR) - */ +#define HSMCI_SDCR_SDCSEL_SLOTD (0x3u << 0) /**< \brief (HSMCI_SDCR) - */ +#define HSMCI_SDCR_SDCBUS_Pos 6 +#define HSMCI_SDCR_SDCBUS_Msk (0x3u << HSMCI_SDCR_SDCBUS_Pos) /**< \brief (HSMCI_SDCR) SDCard/SDIO Bus Width */ +#define HSMCI_SDCR_SDCBUS_1 (0x0u << 6) /**< \brief (HSMCI_SDCR) 1 bit */ +#define HSMCI_SDCR_SDCBUS_4 (0x2u << 6) /**< \brief (HSMCI_SDCR) 4 bit */ +#define HSMCI_SDCR_SDCBUS_8 (0x3u << 6) /**< \brief (HSMCI_SDCR) 8 bit */ +/* -------- HSMCI_ARGR : (HSMCI Offset: 0x10) Argument Register -------- */ +#define HSMCI_ARGR_ARG_Pos 0 +#define HSMCI_ARGR_ARG_Msk (0xffffffffu << HSMCI_ARGR_ARG_Pos) /**< \brief (HSMCI_ARGR) Command Argument */ +#define HSMCI_ARGR_ARG(value) ((HSMCI_ARGR_ARG_Msk & ((value) << HSMCI_ARGR_ARG_Pos))) +/* -------- HSMCI_CMDR : (HSMCI Offset: 0x14) Command Register -------- */ +#define HSMCI_CMDR_CMDNB_Pos 0 +#define HSMCI_CMDR_CMDNB_Msk (0x3fu << HSMCI_CMDR_CMDNB_Pos) /**< \brief (HSMCI_CMDR) Command Number */ +#define HSMCI_CMDR_CMDNB(value) ((HSMCI_CMDR_CMDNB_Msk & ((value) << HSMCI_CMDR_CMDNB_Pos))) +#define HSMCI_CMDR_RSPTYP_Pos 6 +#define HSMCI_CMDR_RSPTYP_Msk (0x3u << HSMCI_CMDR_RSPTYP_Pos) /**< \brief (HSMCI_CMDR) Response Type */ +#define HSMCI_CMDR_RSPTYP_NORESP (0x0u << 6) /**< \brief (HSMCI_CMDR) No response. */ +#define HSMCI_CMDR_RSPTYP_48_BIT (0x1u << 6) /**< \brief (HSMCI_CMDR) 48-bit response. */ +#define HSMCI_CMDR_RSPTYP_136_BIT (0x2u << 6) /**< \brief (HSMCI_CMDR) 136-bit response. */ +#define HSMCI_CMDR_RSPTYP_R1B (0x3u << 6) /**< \brief (HSMCI_CMDR) R1b response type */ +#define HSMCI_CMDR_SPCMD_Pos 8 +#define HSMCI_CMDR_SPCMD_Msk (0x7u << HSMCI_CMDR_SPCMD_Pos) /**< \brief (HSMCI_CMDR) Special Command */ +#define HSMCI_CMDR_SPCMD_STD (0x0u << 8) /**< \brief (HSMCI_CMDR) Not a special CMD. */ +#define HSMCI_CMDR_SPCMD_INIT (0x1u << 8) /**< \brief (HSMCI_CMDR) Initialization CMD: 74 clock cycles for initialization sequence. */ +#define HSMCI_CMDR_SPCMD_SYNC (0x2u << 8) /**< \brief (HSMCI_CMDR) Synchronized CMD: Wait for the end of the current data block transfer before sending the pending command. */ +#define HSMCI_CMDR_SPCMD_CE_ATA (0x3u << 8) /**< \brief (HSMCI_CMDR) CE-ATA Completion Signal disable Command. The host cancels the ability for the device to return a command completion signal on the command line. */ +#define HSMCI_CMDR_SPCMD_IT_CMD (0x4u << 8) /**< \brief (HSMCI_CMDR) Interrupt command: Corresponds to the Interrupt Mode (CMD40). */ +#define HSMCI_CMDR_SPCMD_IT_RESP (0x5u << 8) /**< \brief (HSMCI_CMDR) Interrupt response: Corresponds to the Interrupt Mode (CMD40). */ +#define HSMCI_CMDR_SPCMD_BOR (0x6u << 8) /**< \brief (HSMCI_CMDR) Boot Operation Request. Start a boot operation mode, the host processor can read boot data from the MMC device directly. */ +#define HSMCI_CMDR_SPCMD_EBO (0x7u << 8) /**< \brief (HSMCI_CMDR) End Boot Operation. This command allows the host processor to terminate the boot operation mode. */ +#define HSMCI_CMDR_OPDCMD (0x1u << 11) /**< \brief (HSMCI_CMDR) Open Drain Command */ +#define HSMCI_CMDR_OPDCMD_PUSHPULL (0x0u << 11) /**< \brief (HSMCI_CMDR) Push pull command. */ +#define HSMCI_CMDR_OPDCMD_OPENDRAIN (0x1u << 11) /**< \brief (HSMCI_CMDR) Open drain command. */ +#define HSMCI_CMDR_MAXLAT (0x1u << 12) /**< \brief (HSMCI_CMDR) Max Latency for Command to Response */ +#define HSMCI_CMDR_MAXLAT_5 (0x0u << 12) /**< \brief (HSMCI_CMDR) 5-cycle max latency. */ +#define HSMCI_CMDR_MAXLAT_64 (0x1u << 12) /**< \brief (HSMCI_CMDR) 64-cycle max latency. */ +#define HSMCI_CMDR_TRCMD_Pos 16 +#define HSMCI_CMDR_TRCMD_Msk (0x3u << HSMCI_CMDR_TRCMD_Pos) /**< \brief (HSMCI_CMDR) Transfer Command */ +#define HSMCI_CMDR_TRCMD_NO_DATA (0x0u << 16) /**< \brief (HSMCI_CMDR) No data transfer */ +#define HSMCI_CMDR_TRCMD_START_DATA (0x1u << 16) /**< \brief (HSMCI_CMDR) Start data transfer */ +#define HSMCI_CMDR_TRCMD_STOP_DATA (0x2u << 16) /**< \brief (HSMCI_CMDR) Stop data transfer */ +#define HSMCI_CMDR_TRDIR (0x1u << 18) /**< \brief (HSMCI_CMDR) Transfer Direction */ +#define HSMCI_CMDR_TRDIR_WRITE (0x0u << 18) /**< \brief (HSMCI_CMDR) Write. */ +#define HSMCI_CMDR_TRDIR_READ (0x1u << 18) /**< \brief (HSMCI_CMDR) Read. */ +#define HSMCI_CMDR_TRTYP_Pos 19 +#define HSMCI_CMDR_TRTYP_Msk (0x7u << HSMCI_CMDR_TRTYP_Pos) /**< \brief (HSMCI_CMDR) Transfer Type */ +#define HSMCI_CMDR_TRTYP_SINGLE (0x0u << 19) /**< \brief (HSMCI_CMDR) MMC/SDCard Single Block */ +#define HSMCI_CMDR_TRTYP_MULTIPLE (0x1u << 19) /**< \brief (HSMCI_CMDR) MMC/SDCard Multiple Block */ +#define HSMCI_CMDR_TRTYP_STREAM (0x2u << 19) /**< \brief (HSMCI_CMDR) MMC Stream */ +#define HSMCI_CMDR_TRTYP_BYTE (0x4u << 19) /**< \brief (HSMCI_CMDR) SDIO Byte */ +#define HSMCI_CMDR_TRTYP_BLOCK (0x5u << 19) /**< \brief (HSMCI_CMDR) SDIO Block */ +#define HSMCI_CMDR_IOSPCMD_Pos 24 +#define HSMCI_CMDR_IOSPCMD_Msk (0x3u << HSMCI_CMDR_IOSPCMD_Pos) /**< \brief (HSMCI_CMDR) SDIO Special Command */ +#define HSMCI_CMDR_IOSPCMD_STD (0x0u << 24) /**< \brief (HSMCI_CMDR) Not an SDIO Special Command */ +#define HSMCI_CMDR_IOSPCMD_SUSPEND (0x1u << 24) /**< \brief (HSMCI_CMDR) SDIO Suspend Command */ +#define HSMCI_CMDR_IOSPCMD_RESUME (0x2u << 24) /**< \brief (HSMCI_CMDR) SDIO Resume Command */ +#define HSMCI_CMDR_ATACS (0x1u << 26) /**< \brief (HSMCI_CMDR) ATA with Command Completion Signal */ +#define HSMCI_CMDR_ATACS_NORMAL (0x0u << 26) /**< \brief (HSMCI_CMDR) Normal operation mode. */ +#define HSMCI_CMDR_ATACS_COMPLETION (0x1u << 26) /**< \brief (HSMCI_CMDR) This bit indicates that a completion signal is expected within a programmed amount of time (HSMCI_CSTOR). */ +#define HSMCI_CMDR_BOOT_ACK (0x1u << 27) /**< \brief (HSMCI_CMDR) Boot Operation Acknowledge. */ +/* -------- HSMCI_BLKR : (HSMCI Offset: 0x18) Block Register -------- */ +#define HSMCI_BLKR_BCNT_Pos 0 +#define HSMCI_BLKR_BCNT_Msk (0xffffu << HSMCI_BLKR_BCNT_Pos) /**< \brief (HSMCI_BLKR) MMC/SDIO Block Count - SDIO Byte Count */ +#define HSMCI_BLKR_BCNT_MULTIPLE (0x0u << 0) /**< \brief (HSMCI_BLKR) MMC/SDCARD Multiple BlockFrom 1 to 65635: Value 0 corresponds to an infinite block transfer. */ +#define HSMCI_BLKR_BCNT_BYTE (0x4u << 0) /**< \brief (HSMCI_BLKR) SDIO ByteFrom 1 to 512 bytes: Value 0 corresponds to a 512-byte transfer.Values from 0x200 to 0xFFFF are forbidden. */ +#define HSMCI_BLKR_BCNT_BLOCK (0x5u << 0) /**< \brief (HSMCI_BLKR) SDIO BlockFrom 1 to 511 blocks: Value 0 corresponds to an infinite block transfer.Values from 0x200 to 0xFFFF are forbidden. */ +#define HSMCI_BLKR_BLKLEN_Pos 16 +#define HSMCI_BLKR_BLKLEN_Msk (0xffffu << HSMCI_BLKR_BLKLEN_Pos) /**< \brief (HSMCI_BLKR) Data Block Length */ +#define HSMCI_BLKR_BLKLEN(value) ((HSMCI_BLKR_BLKLEN_Msk & ((value) << HSMCI_BLKR_BLKLEN_Pos))) +/* -------- HSMCI_CSTOR : (HSMCI Offset: 0x1C) Completion Signal Timeout Register -------- */ +#define HSMCI_CSTOR_CSTOCYC_Pos 0 +#define HSMCI_CSTOR_CSTOCYC_Msk (0xfu << HSMCI_CSTOR_CSTOCYC_Pos) /**< \brief (HSMCI_CSTOR) Completion Signal Timeout Cycle Number */ +#define HSMCI_CSTOR_CSTOCYC(value) ((HSMCI_CSTOR_CSTOCYC_Msk & ((value) << HSMCI_CSTOR_CSTOCYC_Pos))) +#define HSMCI_CSTOR_CSTOMUL_Pos 4 +#define HSMCI_CSTOR_CSTOMUL_Msk (0x7u << HSMCI_CSTOR_CSTOMUL_Pos) /**< \brief (HSMCI_CSTOR) Completion Signal Timeout Multiplier */ +#define HSMCI_CSTOR_CSTOMUL_1 (0x0u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1 */ +#define HSMCI_CSTOR_CSTOMUL_16 (0x1u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 16 */ +#define HSMCI_CSTOR_CSTOMUL_128 (0x2u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 128 */ +#define HSMCI_CSTOR_CSTOMUL_256 (0x3u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 256 */ +#define HSMCI_CSTOR_CSTOMUL_1024 (0x4u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1024 */ +#define HSMCI_CSTOR_CSTOMUL_4096 (0x5u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 4096 */ +#define HSMCI_CSTOR_CSTOMUL_65536 (0x6u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 65536 */ +#define HSMCI_CSTOR_CSTOMUL_1048576 (0x7u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1048576 */ +/* -------- HSMCI_RSPR[4] : (HSMCI Offset: 0x20) Response Register -------- */ +#define HSMCI_RSPR_RSP_Pos 0 +#define HSMCI_RSPR_RSP_Msk (0xffffffffu << HSMCI_RSPR_RSP_Pos) /**< \brief (HSMCI_RSPR[4]) Response */ +/* -------- HSMCI_RDR : (HSMCI Offset: 0x30) Receive Data Register -------- */ +#define HSMCI_RDR_DATA_Pos 0 +#define HSMCI_RDR_DATA_Msk (0xffffffffu << HSMCI_RDR_DATA_Pos) /**< \brief (HSMCI_RDR) Data to Read */ +/* -------- HSMCI_TDR : (HSMCI Offset: 0x34) Transmit Data Register -------- */ +#define HSMCI_TDR_DATA_Pos 0 +#define HSMCI_TDR_DATA_Msk (0xffffffffu << HSMCI_TDR_DATA_Pos) /**< \brief (HSMCI_TDR) Data to Write */ +#define HSMCI_TDR_DATA(value) ((HSMCI_TDR_DATA_Msk & ((value) << HSMCI_TDR_DATA_Pos))) +/* -------- HSMCI_SR : (HSMCI Offset: 0x40) Status Register -------- */ +#define HSMCI_SR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_SR) Command Ready */ +#define HSMCI_SR_RXRDY (0x1u << 1) /**< \brief (HSMCI_SR) Receiver Ready */ +#define HSMCI_SR_TXRDY (0x1u << 2) /**< \brief (HSMCI_SR) Transmit Ready */ +#define HSMCI_SR_BLKE (0x1u << 3) /**< \brief (HSMCI_SR) Data Block Ended */ +#define HSMCI_SR_DTIP (0x1u << 4) /**< \brief (HSMCI_SR) Data Transfer in Progress */ +#define HSMCI_SR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_SR) HSMCI Not Busy */ +#define HSMCI_SR_MCI_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_SR) */ +#define HSMCI_SR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_SR) SDIO Read Wait Operation Status */ +#define HSMCI_SR_CSRCV (0x1u << 13) /**< \brief (HSMCI_SR) CE-ATA Completion Signal Received */ +#define HSMCI_SR_RINDE (0x1u << 16) /**< \brief (HSMCI_SR) Response Index Error */ +#define HSMCI_SR_RDIRE (0x1u << 17) /**< \brief (HSMCI_SR) Response Direction Error */ +#define HSMCI_SR_RCRCE (0x1u << 18) /**< \brief (HSMCI_SR) Response CRC Error */ +#define HSMCI_SR_RENDE (0x1u << 19) /**< \brief (HSMCI_SR) Response End Bit Error */ +#define HSMCI_SR_RTOE (0x1u << 20) /**< \brief (HSMCI_SR) Response Time-out Error */ +#define HSMCI_SR_DCRCE (0x1u << 21) /**< \brief (HSMCI_SR) Data CRC Error */ +#define HSMCI_SR_DTOE (0x1u << 22) /**< \brief (HSMCI_SR) Data Time-out Error */ +#define HSMCI_SR_CSTOE (0x1u << 23) /**< \brief (HSMCI_SR) Completion Signal Time-out Error */ +#define HSMCI_SR_BLKOVRE (0x1u << 24) /**< \brief (HSMCI_SR) DMA Block Overrun Error */ +#define HSMCI_SR_DMADONE (0x1u << 25) /**< \brief (HSMCI_SR) DMA Transfer done */ +#define HSMCI_SR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_SR) FIFO empty flag */ +#define HSMCI_SR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_SR) Transfer Done flag */ +#define HSMCI_SR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_SR) Boot Operation Acknowledge Received */ +#define HSMCI_SR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_SR) Boot Operation Acknowledge Error */ +#define HSMCI_SR_OVRE (0x1u << 30) /**< \brief (HSMCI_SR) Overrun */ +#define HSMCI_SR_UNRE (0x1u << 31) /**< \brief (HSMCI_SR) Underrun */ +/* -------- HSMCI_IER : (HSMCI Offset: 0x44) Interrupt Enable Register -------- */ +#define HSMCI_IER_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IER) Command Ready Interrupt Enable */ +#define HSMCI_IER_RXRDY (0x1u << 1) /**< \brief (HSMCI_IER) Receiver Ready Interrupt Enable */ +#define HSMCI_IER_TXRDY (0x1u << 2) /**< \brief (HSMCI_IER) Transmit Ready Interrupt Enable */ +#define HSMCI_IER_BLKE (0x1u << 3) /**< \brief (HSMCI_IER) Data Block Ended Interrupt Enable */ +#define HSMCI_IER_DTIP (0x1u << 4) /**< \brief (HSMCI_IER) Data Transfer in Progress Interrupt Enable */ +#define HSMCI_IER_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IER) Data Not Busy Interrupt Enable */ +#define HSMCI_IER_MCI_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_IER) */ +#define HSMCI_IER_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IER) SDIO Read Wait Operation Status Interrupt Enable */ +#define HSMCI_IER_CSRCV (0x1u << 13) /**< \brief (HSMCI_IER) Completion Signal Received Interrupt Enable */ +#define HSMCI_IER_RINDE (0x1u << 16) /**< \brief (HSMCI_IER) Response Index Error Interrupt Enable */ +#define HSMCI_IER_RDIRE (0x1u << 17) /**< \brief (HSMCI_IER) Response Direction Error Interrupt Enable */ +#define HSMCI_IER_RCRCE (0x1u << 18) /**< \brief (HSMCI_IER) Response CRC Error Interrupt Enable */ +#define HSMCI_IER_RENDE (0x1u << 19) /**< \brief (HSMCI_IER) Response End Bit Error Interrupt Enable */ +#define HSMCI_IER_RTOE (0x1u << 20) /**< \brief (HSMCI_IER) Response Time-out Error Interrupt Enable */ +#define HSMCI_IER_DCRCE (0x1u << 21) /**< \brief (HSMCI_IER) Data CRC Error Interrupt Enable */ +#define HSMCI_IER_DTOE (0x1u << 22) /**< \brief (HSMCI_IER) Data Time-out Error Interrupt Enable */ +#define HSMCI_IER_CSTOE (0x1u << 23) /**< \brief (HSMCI_IER) Completion Signal Timeout Error Interrupt Enable */ +#define HSMCI_IER_BLKOVRE (0x1u << 24) /**< \brief (HSMCI_IER) DMA Block Overrun Error Interrupt Enable */ +#define HSMCI_IER_DMADONE (0x1u << 25) /**< \brief (HSMCI_IER) DMA Transfer completed Interrupt Enable */ +#define HSMCI_IER_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IER) FIFO empty Interrupt enable */ +#define HSMCI_IER_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IER) Transfer Done Interrupt enable */ +#define HSMCI_IER_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IER) Boot Acknowledge Interrupt Enable */ +#define HSMCI_IER_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IER) Boot Acknowledge Error Interrupt Enable */ +#define HSMCI_IER_OVRE (0x1u << 30) /**< \brief (HSMCI_IER) Overrun Interrupt Enable */ +#define HSMCI_IER_UNRE (0x1u << 31) /**< \brief (HSMCI_IER) Underrun Interrupt Enable */ +/* -------- HSMCI_IDR : (HSMCI Offset: 0x48) Interrupt Disable Register -------- */ +#define HSMCI_IDR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IDR) Command Ready Interrupt Disable */ +#define HSMCI_IDR_RXRDY (0x1u << 1) /**< \brief (HSMCI_IDR) Receiver Ready Interrupt Disable */ +#define HSMCI_IDR_TXRDY (0x1u << 2) /**< \brief (HSMCI_IDR) Transmit Ready Interrupt Disable */ +#define HSMCI_IDR_BLKE (0x1u << 3) /**< \brief (HSMCI_IDR) Data Block Ended Interrupt Disable */ +#define HSMCI_IDR_DTIP (0x1u << 4) /**< \brief (HSMCI_IDR) Data Transfer in Progress Interrupt Disable */ +#define HSMCI_IDR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IDR) Data Not Busy Interrupt Disable */ +#define HSMCI_IDR_MCI_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_IDR) */ +#define HSMCI_IDR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IDR) SDIO Read Wait Operation Status Interrupt Disable */ +#define HSMCI_IDR_CSRCV (0x1u << 13) /**< \brief (HSMCI_IDR) Completion Signal received interrupt Disable */ +#define HSMCI_IDR_RINDE (0x1u << 16) /**< \brief (HSMCI_IDR) Response Index Error Interrupt Disable */ +#define HSMCI_IDR_RDIRE (0x1u << 17) /**< \brief (HSMCI_IDR) Response Direction Error Interrupt Disable */ +#define HSMCI_IDR_RCRCE (0x1u << 18) /**< \brief (HSMCI_IDR) Response CRC Error Interrupt Disable */ +#define HSMCI_IDR_RENDE (0x1u << 19) /**< \brief (HSMCI_IDR) Response End Bit Error Interrupt Disable */ +#define HSMCI_IDR_RTOE (0x1u << 20) /**< \brief (HSMCI_IDR) Response Time-out Error Interrupt Disable */ +#define HSMCI_IDR_DCRCE (0x1u << 21) /**< \brief (HSMCI_IDR) Data CRC Error Interrupt Disable */ +#define HSMCI_IDR_DTOE (0x1u << 22) /**< \brief (HSMCI_IDR) Data Time-out Error Interrupt Disable */ +#define HSMCI_IDR_CSTOE (0x1u << 23) /**< \brief (HSMCI_IDR) Completion Signal Time out Error Interrupt Disable */ +#define HSMCI_IDR_BLKOVRE (0x1u << 24) /**< \brief (HSMCI_IDR) DMA Block Overrun Error Interrupt Disable */ +#define HSMCI_IDR_DMADONE (0x1u << 25) /**< \brief (HSMCI_IDR) DMA Transfer completed Interrupt Disable */ +#define HSMCI_IDR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IDR) FIFO empty Interrupt Disable */ +#define HSMCI_IDR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IDR) Transfer Done Interrupt Disable */ +#define HSMCI_IDR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IDR) Boot Acknowledge Interrupt Disable */ +#define HSMCI_IDR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IDR) Boot Acknowledge Error Interrupt Disable */ +#define HSMCI_IDR_OVRE (0x1u << 30) /**< \brief (HSMCI_IDR) Overrun Interrupt Disable */ +#define HSMCI_IDR_UNRE (0x1u << 31) /**< \brief (HSMCI_IDR) Underrun Interrupt Disable */ +/* -------- HSMCI_IMR : (HSMCI Offset: 0x4C) Interrupt Mask Register -------- */ +#define HSMCI_IMR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IMR) Command Ready Interrupt Mask */ +#define HSMCI_IMR_RXRDY (0x1u << 1) /**< \brief (HSMCI_IMR) Receiver Ready Interrupt Mask */ +#define HSMCI_IMR_TXRDY (0x1u << 2) /**< \brief (HSMCI_IMR) Transmit Ready Interrupt Mask */ +#define HSMCI_IMR_BLKE (0x1u << 3) /**< \brief (HSMCI_IMR) Data Block Ended Interrupt Mask */ +#define HSMCI_IMR_DTIP (0x1u << 4) /**< \brief (HSMCI_IMR) Data Transfer in Progress Interrupt Mask */ +#define HSMCI_IMR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IMR) Data Not Busy Interrupt Mask */ +#define HSMCI_IMR_MCI_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_IMR) */ +#define HSMCI_IMR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IMR) SDIO Read Wait Operation Status Interrupt Mask */ +#define HSMCI_IMR_CSRCV (0x1u << 13) /**< \brief (HSMCI_IMR) Completion Signal Received Interrupt Mask */ +#define HSMCI_IMR_RINDE (0x1u << 16) /**< \brief (HSMCI_IMR) Response Index Error Interrupt Mask */ +#define HSMCI_IMR_RDIRE (0x1u << 17) /**< \brief (HSMCI_IMR) Response Direction Error Interrupt Mask */ +#define HSMCI_IMR_RCRCE (0x1u << 18) /**< \brief (HSMCI_IMR) Response CRC Error Interrupt Mask */ +#define HSMCI_IMR_RENDE (0x1u << 19) /**< \brief (HSMCI_IMR) Response End Bit Error Interrupt Mask */ +#define HSMCI_IMR_RTOE (0x1u << 20) /**< \brief (HSMCI_IMR) Response Time-out Error Interrupt Mask */ +#define HSMCI_IMR_DCRCE (0x1u << 21) /**< \brief (HSMCI_IMR) Data CRC Error Interrupt Mask */ +#define HSMCI_IMR_DTOE (0x1u << 22) /**< \brief (HSMCI_IMR) Data Time-out Error Interrupt Mask */ +#define HSMCI_IMR_CSTOE (0x1u << 23) /**< \brief (HSMCI_IMR) Completion Signal Time-out Error Interrupt Mask */ +#define HSMCI_IMR_BLKOVRE (0x1u << 24) /**< \brief (HSMCI_IMR) DMA Block Overrun Error Interrupt Mask */ +#define HSMCI_IMR_DMADONE (0x1u << 25) /**< \brief (HSMCI_IMR) DMA Transfer Completed Interrupt Mask */ +#define HSMCI_IMR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IMR) FIFO Empty Interrupt Mask */ +#define HSMCI_IMR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IMR) Transfer Done Interrupt Mask */ +#define HSMCI_IMR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IMR) Boot Operation Acknowledge Received Interrupt Mask */ +#define HSMCI_IMR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IMR) Boot Operation Acknowledge Error Interrupt Mask */ +#define HSMCI_IMR_OVRE (0x1u << 30) /**< \brief (HSMCI_IMR) Overrun Interrupt Mask */ +#define HSMCI_IMR_UNRE (0x1u << 31) /**< \brief (HSMCI_IMR) Underrun Interrupt Mask */ +/* -------- HSMCI_DMA : (HSMCI Offset: 0x50) DMA Configuration Register -------- */ +#define HSMCI_DMA_OFFSET_Pos 0 +#define HSMCI_DMA_OFFSET_Msk (0x3u << HSMCI_DMA_OFFSET_Pos) /**< \brief (HSMCI_DMA) DMA Write Buffer Offset */ +#define HSMCI_DMA_OFFSET(value) ((HSMCI_DMA_OFFSET_Msk & ((value) << HSMCI_DMA_OFFSET_Pos))) +#define HSMCI_DMA_CHKSIZE (0x1u << 4) /**< \brief (HSMCI_DMA) DMA Channel Read and Write Chunk Size */ +#define HSMCI_DMA_CHKSIZE_1 (0x0u << 4) /**< \brief (HSMCI_DMA) 1 data available */ +#define HSMCI_DMA_CHKSIZE_4 (0x1u << 4) /**< \brief (HSMCI_DMA) 4 data available */ +#define HSMCI_DMA_DMAEN (0x1u << 8) /**< \brief (HSMCI_DMA) DMA Hardware Handshaking Enable */ +#define HSMCI_DMA_ROPT (0x1u << 12) /**< \brief (HSMCI_DMA) Read Optimization with padding */ +/* -------- HSMCI_CFG : (HSMCI Offset: 0x54) Configuration Register -------- */ +#define HSMCI_CFG_FIFOMODE (0x1u << 0) /**< \brief (HSMCI_CFG) HSMCI Internal FIFO control mode */ +#define HSMCI_CFG_FERRCTRL (0x1u << 4) /**< \brief (HSMCI_CFG) Flow Error flag reset control mode */ +#define HSMCI_CFG_HSMODE (0x1u << 8) /**< \brief (HSMCI_CFG) High Speed Mode */ +#define HSMCI_CFG_LSYNC (0x1u << 12) /**< \brief (HSMCI_CFG) Synchronize on the last block */ +/* -------- HSMCI_WPMR : (HSMCI Offset: 0xE4) Write Protection Mode Register -------- */ +#define HSMCI_WPMR_WP_EN (0x1u << 0) /**< \brief (HSMCI_WPMR) Write Protection Enable */ +#define HSMCI_WPMR_WP_KEY_Pos 8 +#define HSMCI_WPMR_WP_KEY_Msk (0xffffffu << HSMCI_WPMR_WP_KEY_Pos) /**< \brief (HSMCI_WPMR) Write Protection Key password */ +#define HSMCI_WPMR_WP_KEY(value) ((HSMCI_WPMR_WP_KEY_Msk & ((value) << HSMCI_WPMR_WP_KEY_Pos))) +/* -------- HSMCI_WPSR : (HSMCI Offset: 0xE8) Write Protection Status Register -------- */ +#define HSMCI_WPSR_WP_VS_Pos 0 +#define HSMCI_WPSR_WP_VS_Msk (0xfu << HSMCI_WPSR_WP_VS_Pos) /**< \brief (HSMCI_WPSR) Write Protection Violation Status */ +#define HSMCI_WPSR_WP_VS_NONE (0x0u << 0) /**< \brief (HSMCI_WPSR) No Write Protection Violation occurred since the last read of this register (WP_SR) */ +#define HSMCI_WPSR_WP_VS_WRITE (0x1u << 0) /**< \brief (HSMCI_WPSR) Write Protection detected unauthorized attempt to write a control register had occurred (since the last read.) */ +#define HSMCI_WPSR_WP_VS_RESET (0x2u << 0) /**< \brief (HSMCI_WPSR) Software reset had been performed while Write Protection was enabled (since the last read). */ +#define HSMCI_WPSR_WP_VS_BOTH (0x3u << 0) /**< \brief (HSMCI_WPSR) Both Write Protection violation and software reset with Write Protection enabled have occurred since the last read. */ +#define HSMCI_WPSR_WP_VSRC_Pos 8 +#define HSMCI_WPSR_WP_VSRC_Msk (0xffffu << HSMCI_WPSR_WP_VSRC_Pos) /**< \brief (HSMCI_WPSR) Write Protection Violation SouRCe */ +/* -------- HSMCI_FIFO[256] : (HSMCI Offset: 0x200) FIFO Memory Aperture0 -------- */ +#define HSMCI_FIFO_DATA_Pos 0 +#define HSMCI_FIFO_DATA_Msk (0xffffffffu << HSMCI_FIFO_DATA_Pos) /**< \brief (HSMCI_FIFO[256]) Data to Read or Data to Write */ +#define HSMCI_FIFO_DATA(value) ((HSMCI_FIFO_DATA_Msk & ((value) << HSMCI_FIFO_DATA_Pos))) + +/*@}*/ + + +#endif /* _SAM3U_HSMCI_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_matrix.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_matrix.h new file mode 100644 index 000000000..5d4c5616b --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_matrix.h @@ -0,0 +1,269 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_MATRIX_COMPONENT_ +#define _SAM3U_MATRIX_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR AHB Bus Matrix */ +/* ============================================================================= */ +/** \addtogroup SAM3U_MATRIX AHB Bus Matrix */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Matrix hardware registers */ +typedef struct { + RwReg MATRIX_MCFG[5]; /**< \brief (Matrix Offset: 0x0000) Master Configuration Register */ + RoReg Reserved1[11]; + RwReg MATRIX_SCFG[10]; /**< \brief (Matrix Offset: 0x0040) Slave Configuration Register */ + RoReg Reserved2[6]; + RwReg MATRIX_PRAS0; /**< \brief (Matrix Offset: 0x0080) Priority Register A for Slave 0 */ + RoReg Reserved3[1]; + RwReg MATRIX_PRAS1; /**< \brief (Matrix Offset: 0x0088) Priority Register A for Slave 1 */ + RoReg Reserved4[1]; + RwReg MATRIX_PRAS2; /**< \brief (Matrix Offset: 0x0090) Priority Register A for Slave 2 */ + RoReg Reserved5[1]; + RwReg MATRIX_PRAS3; /**< \brief (Matrix Offset: 0x0098) Priority Register A for Slave 3 */ + RoReg Reserved6[1]; + RwReg MATRIX_PRAS4; /**< \brief (Matrix Offset: 0x00A0) Priority Register A for Slave 4 */ + RoReg Reserved7[1]; + RwReg MATRIX_PRAS5; /**< \brief (Matrix Offset: 0x00A8) Priority Register A for Slave 5 */ + RoReg Reserved8[1]; + RwReg MATRIX_PRAS6; /**< \brief (Matrix Offset: 0x00B0) Priority Register A for Slave 6 */ + RoReg Reserved9[1]; + RwReg MATRIX_PRAS7; /**< \brief (Matrix Offset: 0x00B8) Priority Register A for Slave 7 */ + RoReg Reserved10[1]; + RwReg MATRIX_PRAS8; /**< \brief (Matrix Offset: 0x00C0) Priority Register A for Slave 8 */ + RoReg Reserved11[1]; + RwReg MATRIX_PRAS9; /**< \brief (Matrix Offset: 0x00C8) Priority Register A for Slave 9 */ + RoReg Reserved12[1]; + RoReg Reserved13[12]; + RwReg MATRIX_MRCR; /**< \brief (Matrix Offset: 0x0100) Master Remap Control Register */ + RoReg Reserved14[56]; + RwReg MATRIX_WPMR; /**< \brief (Matrix Offset: 0x1E4) Write Protect Mode Register */ + RoReg MATRIX_WPSR; /**< \brief (Matrix Offset: 0x1E8) Write Protect Status Register */ +} Matrix; +#endif /* __ASSEMBLY__ */ +/* -------- MATRIX_MCFG[5] : (MATRIX Offset: 0x0000) Master Configuration Register -------- */ +#define MATRIX_MCFG_ULBT_Pos 0 +#define MATRIX_MCFG_ULBT_Msk (0x7u << MATRIX_MCFG_ULBT_Pos) /**< \brief (MATRIX_MCFG[5]) Undefined Length Burst Type */ +#define MATRIX_MCFG_ULBT(value) ((MATRIX_MCFG_ULBT_Msk & ((value) << MATRIX_MCFG_ULBT_Pos))) +/* -------- MATRIX_SCFG[10] : (MATRIX Offset: 0x0040) Slave Configuration Register -------- */ +#define MATRIX_SCFG_SLOT_CYCLE_Pos 0 +#define MATRIX_SCFG_SLOT_CYCLE_Msk (0xffu << MATRIX_SCFG_SLOT_CYCLE_Pos) /**< \brief (MATRIX_SCFG[10]) Maximum Number of Allowed Cycles for a Burst */ +#define MATRIX_SCFG_SLOT_CYCLE(value) ((MATRIX_SCFG_SLOT_CYCLE_Msk & ((value) << MATRIX_SCFG_SLOT_CYCLE_Pos))) +#define MATRIX_SCFG_DEFMSTR_TYPE_Pos 16 +#define MATRIX_SCFG_DEFMSTR_TYPE_Msk (0x3u << MATRIX_SCFG_DEFMSTR_TYPE_Pos) /**< \brief (MATRIX_SCFG[10]) Default Master Type */ +#define MATRIX_SCFG_DEFMSTR_TYPE(value) ((MATRIX_SCFG_DEFMSTR_TYPE_Msk & ((value) << MATRIX_SCFG_DEFMSTR_TYPE_Pos))) +#define MATRIX_SCFG_FIXED_DEFMSTR_Pos 18 +#define MATRIX_SCFG_FIXED_DEFMSTR_Msk (0x7u << MATRIX_SCFG_FIXED_DEFMSTR_Pos) /**< \brief (MATRIX_SCFG[10]) Fixed Default Master */ +#define MATRIX_SCFG_FIXED_DEFMSTR(value) ((MATRIX_SCFG_FIXED_DEFMSTR_Msk & ((value) << MATRIX_SCFG_FIXED_DEFMSTR_Pos))) +#define MATRIX_SCFG_ARBT_Pos 24 +#define MATRIX_SCFG_ARBT_Msk (0x3u << MATRIX_SCFG_ARBT_Pos) /**< \brief (MATRIX_SCFG[10]) Arbitration Type */ +#define MATRIX_SCFG_ARBT(value) ((MATRIX_SCFG_ARBT_Msk & ((value) << MATRIX_SCFG_ARBT_Pos))) +/* -------- MATRIX_PRAS0 : (MATRIX Offset: 0x0080) Priority Register A for Slave 0 -------- */ +#define MATRIX_PRAS0_M0PR_Pos 0 +#define MATRIX_PRAS0_M0PR_Msk (0x3u << MATRIX_PRAS0_M0PR_Pos) /**< \brief (MATRIX_PRAS0) Master 0 Priority */ +#define MATRIX_PRAS0_M0PR(value) ((MATRIX_PRAS0_M0PR_Msk & ((value) << MATRIX_PRAS0_M0PR_Pos))) +#define MATRIX_PRAS0_M1PR_Pos 4 +#define MATRIX_PRAS0_M1PR_Msk (0x3u << MATRIX_PRAS0_M1PR_Pos) /**< \brief (MATRIX_PRAS0) Master 1 Priority */ +#define MATRIX_PRAS0_M1PR(value) ((MATRIX_PRAS0_M1PR_Msk & ((value) << MATRIX_PRAS0_M1PR_Pos))) +#define MATRIX_PRAS0_M2PR_Pos 8 +#define MATRIX_PRAS0_M2PR_Msk (0x3u << MATRIX_PRAS0_M2PR_Pos) /**< \brief (MATRIX_PRAS0) Master 2 Priority */ +#define MATRIX_PRAS0_M2PR(value) ((MATRIX_PRAS0_M2PR_Msk & ((value) << MATRIX_PRAS0_M2PR_Pos))) +#define MATRIX_PRAS0_M3PR_Pos 12 +#define MATRIX_PRAS0_M3PR_Msk (0x3u << MATRIX_PRAS0_M3PR_Pos) /**< \brief (MATRIX_PRAS0) Master 3 Priority */ +#define MATRIX_PRAS0_M3PR(value) ((MATRIX_PRAS0_M3PR_Msk & ((value) << MATRIX_PRAS0_M3PR_Pos))) +#define MATRIX_PRAS0_M4PR_Pos 16 +#define MATRIX_PRAS0_M4PR_Msk (0x3u << MATRIX_PRAS0_M4PR_Pos) /**< \brief (MATRIX_PRAS0) Master 4 Priority */ +#define MATRIX_PRAS0_M4PR(value) ((MATRIX_PRAS0_M4PR_Msk & ((value) << MATRIX_PRAS0_M4PR_Pos))) +/* -------- MATRIX_PRAS1 : (MATRIX Offset: 0x0088) Priority Register A for Slave 1 -------- */ +#define MATRIX_PRAS1_M0PR_Pos 0 +#define MATRIX_PRAS1_M0PR_Msk (0x3u << MATRIX_PRAS1_M0PR_Pos) /**< \brief (MATRIX_PRAS1) Master 0 Priority */ +#define MATRIX_PRAS1_M0PR(value) ((MATRIX_PRAS1_M0PR_Msk & ((value) << MATRIX_PRAS1_M0PR_Pos))) +#define MATRIX_PRAS1_M1PR_Pos 4 +#define MATRIX_PRAS1_M1PR_Msk (0x3u << MATRIX_PRAS1_M1PR_Pos) /**< \brief (MATRIX_PRAS1) Master 1 Priority */ +#define MATRIX_PRAS1_M1PR(value) ((MATRIX_PRAS1_M1PR_Msk & ((value) << MATRIX_PRAS1_M1PR_Pos))) +#define MATRIX_PRAS1_M2PR_Pos 8 +#define MATRIX_PRAS1_M2PR_Msk (0x3u << MATRIX_PRAS1_M2PR_Pos) /**< \brief (MATRIX_PRAS1) Master 2 Priority */ +#define MATRIX_PRAS1_M2PR(value) ((MATRIX_PRAS1_M2PR_Msk & ((value) << MATRIX_PRAS1_M2PR_Pos))) +#define MATRIX_PRAS1_M3PR_Pos 12 +#define MATRIX_PRAS1_M3PR_Msk (0x3u << MATRIX_PRAS1_M3PR_Pos) /**< \brief (MATRIX_PRAS1) Master 3 Priority */ +#define MATRIX_PRAS1_M3PR(value) ((MATRIX_PRAS1_M3PR_Msk & ((value) << MATRIX_PRAS1_M3PR_Pos))) +#define MATRIX_PRAS1_M4PR_Pos 16 +#define MATRIX_PRAS1_M4PR_Msk (0x3u << MATRIX_PRAS1_M4PR_Pos) /**< \brief (MATRIX_PRAS1) Master 4 Priority */ +#define MATRIX_PRAS1_M4PR(value) ((MATRIX_PRAS1_M4PR_Msk & ((value) << MATRIX_PRAS1_M4PR_Pos))) +/* -------- MATRIX_PRAS2 : (MATRIX Offset: 0x0090) Priority Register A for Slave 2 -------- */ +#define MATRIX_PRAS2_M0PR_Pos 0 +#define MATRIX_PRAS2_M0PR_Msk (0x3u << MATRIX_PRAS2_M0PR_Pos) /**< \brief (MATRIX_PRAS2) Master 0 Priority */ +#define MATRIX_PRAS2_M0PR(value) ((MATRIX_PRAS2_M0PR_Msk & ((value) << MATRIX_PRAS2_M0PR_Pos))) +#define MATRIX_PRAS2_M1PR_Pos 4 +#define MATRIX_PRAS2_M1PR_Msk (0x3u << MATRIX_PRAS2_M1PR_Pos) /**< \brief (MATRIX_PRAS2) Master 1 Priority */ +#define MATRIX_PRAS2_M1PR(value) ((MATRIX_PRAS2_M1PR_Msk & ((value) << MATRIX_PRAS2_M1PR_Pos))) +#define MATRIX_PRAS2_M2PR_Pos 8 +#define MATRIX_PRAS2_M2PR_Msk (0x3u << MATRIX_PRAS2_M2PR_Pos) /**< \brief (MATRIX_PRAS2) Master 2 Priority */ +#define MATRIX_PRAS2_M2PR(value) ((MATRIX_PRAS2_M2PR_Msk & ((value) << MATRIX_PRAS2_M2PR_Pos))) +#define MATRIX_PRAS2_M3PR_Pos 12 +#define MATRIX_PRAS2_M3PR_Msk (0x3u << MATRIX_PRAS2_M3PR_Pos) /**< \brief (MATRIX_PRAS2) Master 3 Priority */ +#define MATRIX_PRAS2_M3PR(value) ((MATRIX_PRAS2_M3PR_Msk & ((value) << MATRIX_PRAS2_M3PR_Pos))) +#define MATRIX_PRAS2_M4PR_Pos 16 +#define MATRIX_PRAS2_M4PR_Msk (0x3u << MATRIX_PRAS2_M4PR_Pos) /**< \brief (MATRIX_PRAS2) Master 4 Priority */ +#define MATRIX_PRAS2_M4PR(value) ((MATRIX_PRAS2_M4PR_Msk & ((value) << MATRIX_PRAS2_M4PR_Pos))) +/* -------- MATRIX_PRAS3 : (MATRIX Offset: 0x0098) Priority Register A for Slave 3 -------- */ +#define MATRIX_PRAS3_M0PR_Pos 0 +#define MATRIX_PRAS3_M0PR_Msk (0x3u << MATRIX_PRAS3_M0PR_Pos) /**< \brief (MATRIX_PRAS3) Master 0 Priority */ +#define MATRIX_PRAS3_M0PR(value) ((MATRIX_PRAS3_M0PR_Msk & ((value) << MATRIX_PRAS3_M0PR_Pos))) +#define MATRIX_PRAS3_M1PR_Pos 4 +#define MATRIX_PRAS3_M1PR_Msk (0x3u << MATRIX_PRAS3_M1PR_Pos) /**< \brief (MATRIX_PRAS3) Master 1 Priority */ +#define MATRIX_PRAS3_M1PR(value) ((MATRIX_PRAS3_M1PR_Msk & ((value) << MATRIX_PRAS3_M1PR_Pos))) +#define MATRIX_PRAS3_M2PR_Pos 8 +#define MATRIX_PRAS3_M2PR_Msk (0x3u << MATRIX_PRAS3_M2PR_Pos) /**< \brief (MATRIX_PRAS3) Master 2 Priority */ +#define MATRIX_PRAS3_M2PR(value) ((MATRIX_PRAS3_M2PR_Msk & ((value) << MATRIX_PRAS3_M2PR_Pos))) +#define MATRIX_PRAS3_M3PR_Pos 12 +#define MATRIX_PRAS3_M3PR_Msk (0x3u << MATRIX_PRAS3_M3PR_Pos) /**< \brief (MATRIX_PRAS3) Master 3 Priority */ +#define MATRIX_PRAS3_M3PR(value) ((MATRIX_PRAS3_M3PR_Msk & ((value) << MATRIX_PRAS3_M3PR_Pos))) +#define MATRIX_PRAS3_M4PR_Pos 16 +#define MATRIX_PRAS3_M4PR_Msk (0x3u << MATRIX_PRAS3_M4PR_Pos) /**< \brief (MATRIX_PRAS3) Master 4 Priority */ +#define MATRIX_PRAS3_M4PR(value) ((MATRIX_PRAS3_M4PR_Msk & ((value) << MATRIX_PRAS3_M4PR_Pos))) +/* -------- MATRIX_PRAS4 : (MATRIX Offset: 0x00A0) Priority Register A for Slave 4 -------- */ +#define MATRIX_PRAS4_M0PR_Pos 0 +#define MATRIX_PRAS4_M0PR_Msk (0x3u << MATRIX_PRAS4_M0PR_Pos) /**< \brief (MATRIX_PRAS4) Master 0 Priority */ +#define MATRIX_PRAS4_M0PR(value) ((MATRIX_PRAS4_M0PR_Msk & ((value) << MATRIX_PRAS4_M0PR_Pos))) +#define MATRIX_PRAS4_M1PR_Pos 4 +#define MATRIX_PRAS4_M1PR_Msk (0x3u << MATRIX_PRAS4_M1PR_Pos) /**< \brief (MATRIX_PRAS4) Master 1 Priority */ +#define MATRIX_PRAS4_M1PR(value) ((MATRIX_PRAS4_M1PR_Msk & ((value) << MATRIX_PRAS4_M1PR_Pos))) +#define MATRIX_PRAS4_M2PR_Pos 8 +#define MATRIX_PRAS4_M2PR_Msk (0x3u << MATRIX_PRAS4_M2PR_Pos) /**< \brief (MATRIX_PRAS4) Master 2 Priority */ +#define MATRIX_PRAS4_M2PR(value) ((MATRIX_PRAS4_M2PR_Msk & ((value) << MATRIX_PRAS4_M2PR_Pos))) +#define MATRIX_PRAS4_M3PR_Pos 12 +#define MATRIX_PRAS4_M3PR_Msk (0x3u << MATRIX_PRAS4_M3PR_Pos) /**< \brief (MATRIX_PRAS4) Master 3 Priority */ +#define MATRIX_PRAS4_M3PR(value) ((MATRIX_PRAS4_M3PR_Msk & ((value) << MATRIX_PRAS4_M3PR_Pos))) +#define MATRIX_PRAS4_M4PR_Pos 16 +#define MATRIX_PRAS4_M4PR_Msk (0x3u << MATRIX_PRAS4_M4PR_Pos) /**< \brief (MATRIX_PRAS4) Master 4 Priority */ +#define MATRIX_PRAS4_M4PR(value) ((MATRIX_PRAS4_M4PR_Msk & ((value) << MATRIX_PRAS4_M4PR_Pos))) +/* -------- MATRIX_PRAS5 : (MATRIX Offset: 0x00A8) Priority Register A for Slave 5 -------- */ +#define MATRIX_PRAS5_M0PR_Pos 0 +#define MATRIX_PRAS5_M0PR_Msk (0x3u << MATRIX_PRAS5_M0PR_Pos) /**< \brief (MATRIX_PRAS5) Master 0 Priority */ +#define MATRIX_PRAS5_M0PR(value) ((MATRIX_PRAS5_M0PR_Msk & ((value) << MATRIX_PRAS5_M0PR_Pos))) +#define MATRIX_PRAS5_M1PR_Pos 4 +#define MATRIX_PRAS5_M1PR_Msk (0x3u << MATRIX_PRAS5_M1PR_Pos) /**< \brief (MATRIX_PRAS5) Master 1 Priority */ +#define MATRIX_PRAS5_M1PR(value) ((MATRIX_PRAS5_M1PR_Msk & ((value) << MATRIX_PRAS5_M1PR_Pos))) +#define MATRIX_PRAS5_M2PR_Pos 8 +#define MATRIX_PRAS5_M2PR_Msk (0x3u << MATRIX_PRAS5_M2PR_Pos) /**< \brief (MATRIX_PRAS5) Master 2 Priority */ +#define MATRIX_PRAS5_M2PR(value) ((MATRIX_PRAS5_M2PR_Msk & ((value) << MATRIX_PRAS5_M2PR_Pos))) +#define MATRIX_PRAS5_M3PR_Pos 12 +#define MATRIX_PRAS5_M3PR_Msk (0x3u << MATRIX_PRAS5_M3PR_Pos) /**< \brief (MATRIX_PRAS5) Master 3 Priority */ +#define MATRIX_PRAS5_M3PR(value) ((MATRIX_PRAS5_M3PR_Msk & ((value) << MATRIX_PRAS5_M3PR_Pos))) +#define MATRIX_PRAS5_M4PR_Pos 16 +#define MATRIX_PRAS5_M4PR_Msk (0x3u << MATRIX_PRAS5_M4PR_Pos) /**< \brief (MATRIX_PRAS5) Master 4 Priority */ +#define MATRIX_PRAS5_M4PR(value) ((MATRIX_PRAS5_M4PR_Msk & ((value) << MATRIX_PRAS5_M4PR_Pos))) +/* -------- MATRIX_PRAS6 : (MATRIX Offset: 0x00B0) Priority Register A for Slave 6 -------- */ +#define MATRIX_PRAS6_M0PR_Pos 0 +#define MATRIX_PRAS6_M0PR_Msk (0x3u << MATRIX_PRAS6_M0PR_Pos) /**< \brief (MATRIX_PRAS6) Master 0 Priority */ +#define MATRIX_PRAS6_M0PR(value) ((MATRIX_PRAS6_M0PR_Msk & ((value) << MATRIX_PRAS6_M0PR_Pos))) +#define MATRIX_PRAS6_M1PR_Pos 4 +#define MATRIX_PRAS6_M1PR_Msk (0x3u << MATRIX_PRAS6_M1PR_Pos) /**< \brief (MATRIX_PRAS6) Master 1 Priority */ +#define MATRIX_PRAS6_M1PR(value) ((MATRIX_PRAS6_M1PR_Msk & ((value) << MATRIX_PRAS6_M1PR_Pos))) +#define MATRIX_PRAS6_M2PR_Pos 8 +#define MATRIX_PRAS6_M2PR_Msk (0x3u << MATRIX_PRAS6_M2PR_Pos) /**< \brief (MATRIX_PRAS6) Master 2 Priority */ +#define MATRIX_PRAS6_M2PR(value) ((MATRIX_PRAS6_M2PR_Msk & ((value) << MATRIX_PRAS6_M2PR_Pos))) +#define MATRIX_PRAS6_M3PR_Pos 12 +#define MATRIX_PRAS6_M3PR_Msk (0x3u << MATRIX_PRAS6_M3PR_Pos) /**< \brief (MATRIX_PRAS6) Master 3 Priority */ +#define MATRIX_PRAS6_M3PR(value) ((MATRIX_PRAS6_M3PR_Msk & ((value) << MATRIX_PRAS6_M3PR_Pos))) +#define MATRIX_PRAS6_M4PR_Pos 16 +#define MATRIX_PRAS6_M4PR_Msk (0x3u << MATRIX_PRAS6_M4PR_Pos) /**< \brief (MATRIX_PRAS6) Master 4 Priority */ +#define MATRIX_PRAS6_M4PR(value) ((MATRIX_PRAS6_M4PR_Msk & ((value) << MATRIX_PRAS6_M4PR_Pos))) +/* -------- MATRIX_PRAS7 : (MATRIX Offset: 0x00B8) Priority Register A for Slave 7 -------- */ +#define MATRIX_PRAS7_M0PR_Pos 0 +#define MATRIX_PRAS7_M0PR_Msk (0x3u << MATRIX_PRAS7_M0PR_Pos) /**< \brief (MATRIX_PRAS7) Master 0 Priority */ +#define MATRIX_PRAS7_M0PR(value) ((MATRIX_PRAS7_M0PR_Msk & ((value) << MATRIX_PRAS7_M0PR_Pos))) +#define MATRIX_PRAS7_M1PR_Pos 4 +#define MATRIX_PRAS7_M1PR_Msk (0x3u << MATRIX_PRAS7_M1PR_Pos) /**< \brief (MATRIX_PRAS7) Master 1 Priority */ +#define MATRIX_PRAS7_M1PR(value) ((MATRIX_PRAS7_M1PR_Msk & ((value) << MATRIX_PRAS7_M1PR_Pos))) +#define MATRIX_PRAS7_M2PR_Pos 8 +#define MATRIX_PRAS7_M2PR_Msk (0x3u << MATRIX_PRAS7_M2PR_Pos) /**< \brief (MATRIX_PRAS7) Master 2 Priority */ +#define MATRIX_PRAS7_M2PR(value) ((MATRIX_PRAS7_M2PR_Msk & ((value) << MATRIX_PRAS7_M2PR_Pos))) +#define MATRIX_PRAS7_M3PR_Pos 12 +#define MATRIX_PRAS7_M3PR_Msk (0x3u << MATRIX_PRAS7_M3PR_Pos) /**< \brief (MATRIX_PRAS7) Master 3 Priority */ +#define MATRIX_PRAS7_M3PR(value) ((MATRIX_PRAS7_M3PR_Msk & ((value) << MATRIX_PRAS7_M3PR_Pos))) +#define MATRIX_PRAS7_M4PR_Pos 16 +#define MATRIX_PRAS7_M4PR_Msk (0x3u << MATRIX_PRAS7_M4PR_Pos) /**< \brief (MATRIX_PRAS7) Master 4 Priority */ +#define MATRIX_PRAS7_M4PR(value) ((MATRIX_PRAS7_M4PR_Msk & ((value) << MATRIX_PRAS7_M4PR_Pos))) +/* -------- MATRIX_PRAS8 : (MATRIX Offset: 0x00C0) Priority Register A for Slave 8 -------- */ +#define MATRIX_PRAS8_M0PR_Pos 0 +#define MATRIX_PRAS8_M0PR_Msk (0x3u << MATRIX_PRAS8_M0PR_Pos) /**< \brief (MATRIX_PRAS8) Master 0 Priority */ +#define MATRIX_PRAS8_M0PR(value) ((MATRIX_PRAS8_M0PR_Msk & ((value) << MATRIX_PRAS8_M0PR_Pos))) +#define MATRIX_PRAS8_M1PR_Pos 4 +#define MATRIX_PRAS8_M1PR_Msk (0x3u << MATRIX_PRAS8_M1PR_Pos) /**< \brief (MATRIX_PRAS8) Master 1 Priority */ +#define MATRIX_PRAS8_M1PR(value) ((MATRIX_PRAS8_M1PR_Msk & ((value) << MATRIX_PRAS8_M1PR_Pos))) +#define MATRIX_PRAS8_M2PR_Pos 8 +#define MATRIX_PRAS8_M2PR_Msk (0x3u << MATRIX_PRAS8_M2PR_Pos) /**< \brief (MATRIX_PRAS8) Master 2 Priority */ +#define MATRIX_PRAS8_M2PR(value) ((MATRIX_PRAS8_M2PR_Msk & ((value) << MATRIX_PRAS8_M2PR_Pos))) +#define MATRIX_PRAS8_M3PR_Pos 12 +#define MATRIX_PRAS8_M3PR_Msk (0x3u << MATRIX_PRAS8_M3PR_Pos) /**< \brief (MATRIX_PRAS8) Master 3 Priority */ +#define MATRIX_PRAS8_M3PR(value) ((MATRIX_PRAS8_M3PR_Msk & ((value) << MATRIX_PRAS8_M3PR_Pos))) +#define MATRIX_PRAS8_M4PR_Pos 16 +#define MATRIX_PRAS8_M4PR_Msk (0x3u << MATRIX_PRAS8_M4PR_Pos) /**< \brief (MATRIX_PRAS8) Master 4 Priority */ +#define MATRIX_PRAS8_M4PR(value) ((MATRIX_PRAS8_M4PR_Msk & ((value) << MATRIX_PRAS8_M4PR_Pos))) +/* -------- MATRIX_PRAS9 : (MATRIX Offset: 0x00C8) Priority Register A for Slave 9 -------- */ +#define MATRIX_PRAS9_M0PR_Pos 0 +#define MATRIX_PRAS9_M0PR_Msk (0x3u << MATRIX_PRAS9_M0PR_Pos) /**< \brief (MATRIX_PRAS9) Master 0 Priority */ +#define MATRIX_PRAS9_M0PR(value) ((MATRIX_PRAS9_M0PR_Msk & ((value) << MATRIX_PRAS9_M0PR_Pos))) +#define MATRIX_PRAS9_M1PR_Pos 4 +#define MATRIX_PRAS9_M1PR_Msk (0x3u << MATRIX_PRAS9_M1PR_Pos) /**< \brief (MATRIX_PRAS9) Master 1 Priority */ +#define MATRIX_PRAS9_M1PR(value) ((MATRIX_PRAS9_M1PR_Msk & ((value) << MATRIX_PRAS9_M1PR_Pos))) +#define MATRIX_PRAS9_M2PR_Pos 8 +#define MATRIX_PRAS9_M2PR_Msk (0x3u << MATRIX_PRAS9_M2PR_Pos) /**< \brief (MATRIX_PRAS9) Master 2 Priority */ +#define MATRIX_PRAS9_M2PR(value) ((MATRIX_PRAS9_M2PR_Msk & ((value) << MATRIX_PRAS9_M2PR_Pos))) +#define MATRIX_PRAS9_M3PR_Pos 12 +#define MATRIX_PRAS9_M3PR_Msk (0x3u << MATRIX_PRAS9_M3PR_Pos) /**< \brief (MATRIX_PRAS9) Master 3 Priority */ +#define MATRIX_PRAS9_M3PR(value) ((MATRIX_PRAS9_M3PR_Msk & ((value) << MATRIX_PRAS9_M3PR_Pos))) +#define MATRIX_PRAS9_M4PR_Pos 16 +#define MATRIX_PRAS9_M4PR_Msk (0x3u << MATRIX_PRAS9_M4PR_Pos) /**< \brief (MATRIX_PRAS9) Master 4 Priority */ +#define MATRIX_PRAS9_M4PR(value) ((MATRIX_PRAS9_M4PR_Msk & ((value) << MATRIX_PRAS9_M4PR_Pos))) +/* -------- MATRIX_MRCR : (MATRIX Offset: 0x0100) Master Remap Control Register -------- */ +#define MATRIX_MRCR_RCB0 (0x1u << 0) /**< \brief (MATRIX_MRCR) Remap Command Bit for AHB Master 0 */ +#define MATRIX_MRCR_RCB1 (0x1u << 1) /**< \brief (MATRIX_MRCR) Remap Command Bit for AHB Master 1 */ +#define MATRIX_MRCR_RCB2 (0x1u << 2) /**< \brief (MATRIX_MRCR) Remap Command Bit for AHB Master 2 */ +#define MATRIX_MRCR_RCB3 (0x1u << 3) /**< \brief (MATRIX_MRCR) Remap Command Bit for AHB Master 3 */ +#define MATRIX_MRCR_RCB4 (0x1u << 4) /**< \brief (MATRIX_MRCR) Remap Command Bit for AHB Master 4 */ +/* -------- MATRIX_WPMR : (MATRIX Offset: 0x1E4) Write Protect Mode Register -------- */ +#define MATRIX_WPMR_WPEN (0x1u << 0) /**< \brief (MATRIX_WPMR) Write Protect ENable */ +#define MATRIX_WPMR_WPKEY_Pos 8 +#define MATRIX_WPMR_WPKEY_Msk (0xffffffu << MATRIX_WPMR_WPKEY_Pos) /**< \brief (MATRIX_WPMR) Write Protect KEY (Write-only) */ +#define MATRIX_WPMR_WPKEY(value) ((MATRIX_WPMR_WPKEY_Msk & ((value) << MATRIX_WPMR_WPKEY_Pos))) +/* -------- MATRIX_WPSR : (MATRIX Offset: 0x1E8) Write Protect Status Register -------- */ +#define MATRIX_WPSR_WPVS (0x1u << 0) /**< \brief (MATRIX_WPSR) Write Protect Violation Status */ +#define MATRIX_WPSR_WPVSRC_Pos 8 +#define MATRIX_WPSR_WPVSRC_Msk (0xffffu << MATRIX_WPSR_WPVSRC_Pos) /**< \brief (MATRIX_WPSR) Write Protect Violation Source */ + +/*@}*/ + + +#endif /* _SAM3U_MATRIX_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_pdc.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_pdc.h new file mode 100644 index 000000000..373accd4e --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_pdc.h @@ -0,0 +1,98 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_PDC_COMPONENT_ +#define _SAM3U_PDC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Peripheral DMA Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3U_PDC Peripheral DMA Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Pdc hardware registers */ +typedef struct { + RwReg PERIPH_RPR; /**< \brief (Pdc Offset: 0x0) Receive Pointer Register */ + RwReg PERIPH_RCR; /**< \brief (Pdc Offset: 0x4) Receive Counter Register */ + RwReg PERIPH_TPR; /**< \brief (Pdc Offset: 0x8) Transmit Pointer Register */ + RwReg PERIPH_TCR; /**< \brief (Pdc Offset: 0xC) Transmit Counter Register */ + RwReg PERIPH_RNPR; /**< \brief (Pdc Offset: 0x10) Receive Next Pointer Register */ + RwReg PERIPH_RNCR; /**< \brief (Pdc Offset: 0x14) Receive Next Counter Register */ + RwReg PERIPH_TNPR; /**< \brief (Pdc Offset: 0x18) Transmit Next Pointer Register */ + RwReg PERIPH_TNCR; /**< \brief (Pdc Offset: 0x1C) Transmit Next Counter Register */ + WoReg PERIPH_PTCR; /**< \brief (Pdc Offset: 0x20) Transfer Control Register */ + RoReg PERIPH_PTSR; /**< \brief (Pdc Offset: 0x24) Transfer Status Register */ +} Pdc; +#endif /* __ASSEMBLY__ */ +/* -------- PERIPH_RPR : (PDC Offset: 0x0) Receive Pointer Register -------- */ +#define PERIPH_RPR_RXPTR_Pos 0 +#define PERIPH_RPR_RXPTR_Msk (0xffffffffu << PERIPH_RPR_RXPTR_Pos) /**< \brief (PERIPH_RPR) Receive Pointer Register */ +#define PERIPH_RPR_RXPTR(value) ((PERIPH_RPR_RXPTR_Msk & ((value) << PERIPH_RPR_RXPTR_Pos))) +/* -------- PERIPH_RCR : (PDC Offset: 0x4) Receive Counter Register -------- */ +#define PERIPH_RCR_RXCTR_Pos 0 +#define PERIPH_RCR_RXCTR_Msk (0xffffu << PERIPH_RCR_RXCTR_Pos) /**< \brief (PERIPH_RCR) Receive Counter Register */ +#define PERIPH_RCR_RXCTR(value) ((PERIPH_RCR_RXCTR_Msk & ((value) << PERIPH_RCR_RXCTR_Pos))) +/* -------- PERIPH_TPR : (PDC Offset: 0x8) Transmit Pointer Register -------- */ +#define PERIPH_TPR_TXPTR_Pos 0 +#define PERIPH_TPR_TXPTR_Msk (0xffffffffu << PERIPH_TPR_TXPTR_Pos) /**< \brief (PERIPH_TPR) Transmit Counter Register */ +#define PERIPH_TPR_TXPTR(value) ((PERIPH_TPR_TXPTR_Msk & ((value) << PERIPH_TPR_TXPTR_Pos))) +/* -------- PERIPH_TCR : (PDC Offset: 0xC) Transmit Counter Register -------- */ +#define PERIPH_TCR_TXCTR_Pos 0 +#define PERIPH_TCR_TXCTR_Msk (0xffffu << PERIPH_TCR_TXCTR_Pos) /**< \brief (PERIPH_TCR) Transmit Counter Register */ +#define PERIPH_TCR_TXCTR(value) ((PERIPH_TCR_TXCTR_Msk & ((value) << PERIPH_TCR_TXCTR_Pos))) +/* -------- PERIPH_RNPR : (PDC Offset: 0x10) Receive Next Pointer Register -------- */ +#define PERIPH_RNPR_RXNPTR_Pos 0 +#define PERIPH_RNPR_RXNPTR_Msk (0xffffffffu << PERIPH_RNPR_RXNPTR_Pos) /**< \brief (PERIPH_RNPR) Receive Next Pointer */ +#define PERIPH_RNPR_RXNPTR(value) ((PERIPH_RNPR_RXNPTR_Msk & ((value) << PERIPH_RNPR_RXNPTR_Pos))) +/* -------- PERIPH_RNCR : (PDC Offset: 0x14) Receive Next Counter Register -------- */ +#define PERIPH_RNCR_RXNCTR_Pos 0 +#define PERIPH_RNCR_RXNCTR_Msk (0xffffu << PERIPH_RNCR_RXNCTR_Pos) /**< \brief (PERIPH_RNCR) Receive Next Counter */ +#define PERIPH_RNCR_RXNCTR(value) ((PERIPH_RNCR_RXNCTR_Msk & ((value) << PERIPH_RNCR_RXNCTR_Pos))) +/* -------- PERIPH_TNPR : (PDC Offset: 0x18) Transmit Next Pointer Register -------- */ +#define PERIPH_TNPR_TXNPTR_Pos 0 +#define PERIPH_TNPR_TXNPTR_Msk (0xffffffffu << PERIPH_TNPR_TXNPTR_Pos) /**< \brief (PERIPH_TNPR) Transmit Next Pointer */ +#define PERIPH_TNPR_TXNPTR(value) ((PERIPH_TNPR_TXNPTR_Msk & ((value) << PERIPH_TNPR_TXNPTR_Pos))) +/* -------- PERIPH_TNCR : (PDC Offset: 0x1C) Transmit Next Counter Register -------- */ +#define PERIPH_TNCR_TXNCTR_Pos 0 +#define PERIPH_TNCR_TXNCTR_Msk (0xffffu << PERIPH_TNCR_TXNCTR_Pos) /**< \brief (PERIPH_TNCR) Transmit Counter Next */ +#define PERIPH_TNCR_TXNCTR(value) ((PERIPH_TNCR_TXNCTR_Msk & ((value) << PERIPH_TNCR_TXNCTR_Pos))) +/* -------- PERIPH_PTCR : (PDC Offset: 0x20) Transfer Control Register -------- */ +#define PERIPH_PTCR_RXTEN (0x1u << 0) /**< \brief (PERIPH_PTCR) Receiver Transfer Enable */ +#define PERIPH_PTCR_RXTDIS (0x1u << 1) /**< \brief (PERIPH_PTCR) Receiver Transfer Disable */ +#define PERIPH_PTCR_TXTEN (0x1u << 8) /**< \brief (PERIPH_PTCR) Transmitter Transfer Enable */ +#define PERIPH_PTCR_TXTDIS (0x1u << 9) /**< \brief (PERIPH_PTCR) Transmitter Transfer Disable */ +/* -------- PERIPH_PTSR : (PDC Offset: 0x24) Transfer Status Register -------- */ +#define PERIPH_PTSR_RXTEN (0x1u << 0) /**< \brief (PERIPH_PTSR) Receiver Transfer Enable */ +#define PERIPH_PTSR_TXTEN (0x1u << 8) /**< \brief (PERIPH_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3U_PDC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_pio.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_pio.h new file mode 100644 index 000000000..8a65ee762 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_pio.h @@ -0,0 +1,1435 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_PIO_COMPONENT_ +#define _SAM3U_PIO_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Parallel Input/Output Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3U_PIO Parallel Input/Output Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Pio hardware registers */ +typedef struct { + WoReg PIO_PER; /**< \brief (Pio Offset: 0x0000) PIO Enable Register */ + WoReg PIO_PDR; /**< \brief (Pio Offset: 0x0004) PIO Disable Register */ + RoReg PIO_PSR; /**< \brief (Pio Offset: 0x0008) PIO Status Register */ + RoReg Reserved1[1]; + WoReg PIO_OER; /**< \brief (Pio Offset: 0x0010) Output Enable Register */ + WoReg PIO_ODR; /**< \brief (Pio Offset: 0x0014) Output Disable Register */ + RoReg PIO_OSR; /**< \brief (Pio Offset: 0x0018) Output Status Register */ + RoReg Reserved2[1]; + WoReg PIO_IFER; /**< \brief (Pio Offset: 0x0020) Glitch Input Filter Enable Register */ + WoReg PIO_IFDR; /**< \brief (Pio Offset: 0x0024) Glitch Input Filter Disable Register */ + RoReg PIO_IFSR; /**< \brief (Pio Offset: 0x0028) Glitch Input Filter Status Register */ + RoReg Reserved3[1]; + WoReg PIO_SODR; /**< \brief (Pio Offset: 0x0030) Set Output Data Register */ + WoReg PIO_CODR; /**< \brief (Pio Offset: 0x0034) Clear Output Data Register */ + RwReg PIO_ODSR; /**< \brief (Pio Offset: 0x0038) Output Data Status Register */ + RoReg PIO_PDSR; /**< \brief (Pio Offset: 0x003C) Pin Data Status Register */ + WoReg PIO_IER; /**< \brief (Pio Offset: 0x0040) Interrupt Enable Register */ + WoReg PIO_IDR; /**< \brief (Pio Offset: 0x0044) Interrupt Disable Register */ + RoReg PIO_IMR; /**< \brief (Pio Offset: 0x0048) Interrupt Mask Register */ + RoReg PIO_ISR; /**< \brief (Pio Offset: 0x004C) Interrupt Status Register */ + WoReg PIO_MDER; /**< \brief (Pio Offset: 0x0050) Multi-driver Enable Register */ + WoReg PIO_MDDR; /**< \brief (Pio Offset: 0x0054) Multi-driver Disable Register */ + RoReg PIO_MDSR; /**< \brief (Pio Offset: 0x0058) Multi-driver Status Register */ + RoReg Reserved4[1]; + WoReg PIO_PUDR; /**< \brief (Pio Offset: 0x0060) Pull-up Disable Register */ + WoReg PIO_PUER; /**< \brief (Pio Offset: 0x0064) Pull-up Enable Register */ + RoReg PIO_PUSR; /**< \brief (Pio Offset: 0x0068) Pad Pull-up Status Register */ + RoReg Reserved5[1]; + RwReg PIO_ABSR; /**< \brief (Pio Offset: 0x0070) Peripheral AB Select Register */ + RoReg Reserved6[3]; + WoReg PIO_SCIFSR; /**< \brief (Pio Offset: 0x0080) System Clock Glitch Input Filter Select Register */ + WoReg PIO_DIFSR; /**< \brief (Pio Offset: 0x0084) Debouncing Input Filter Select Register */ + RoReg PIO_IFDGSR; /**< \brief (Pio Offset: 0x0088) Glitch or Debouncing Input Filter Clock Selection Status Register */ + RwReg PIO_SCDR; /**< \brief (Pio Offset: 0x008C) Slow Clock Divider Debouncing Register */ + RoReg Reserved7[4]; + WoReg PIO_OWER; /**< \brief (Pio Offset: 0x00A0) Output Write Enable */ + WoReg PIO_OWDR; /**< \brief (Pio Offset: 0x00A4) Output Write Disable */ + RoReg PIO_OWSR; /**< \brief (Pio Offset: 0x00A8) Output Write Status Register */ + RoReg Reserved8[1]; + WoReg PIO_AIMER; /**< \brief (Pio Offset: 0x00B0) Additional Interrupt Modes Enable Register */ + WoReg PIO_AIMDR; /**< \brief (Pio Offset: 0x00B4) Additional Interrupt Modes Disables Register */ + RoReg PIO_AIMMR; /**< \brief (Pio Offset: 0x00B8) Additional Interrupt Modes Mask Register */ + RoReg Reserved9[1]; + WoReg PIO_ESR; /**< \brief (Pio Offset: 0x00C0) Edge Select Register */ + WoReg PIO_LSR; /**< \brief (Pio Offset: 0x00C4) Level Select Register */ + RoReg PIO_ELSR; /**< \brief (Pio Offset: 0x00C8) Edge/Level Status Register */ + RoReg Reserved10[1]; + WoReg PIO_FELLSR; /**< \brief (Pio Offset: 0x00D0) Falling Edge/Low Level Select Register */ + WoReg PIO_REHLSR; /**< \brief (Pio Offset: 0x00D4) Rising Edge/ High Level Select Register */ + RoReg PIO_FRLHSR; /**< \brief (Pio Offset: 0x00D8) Fall/Rise - Low/High Status Register */ + RoReg Reserved11[1]; + RoReg PIO_LOCKSR; /**< \brief (Pio Offset: 0x00E0) Lock Status */ + RwReg PIO_WPMR; /**< \brief (Pio Offset: 0x00E4) Write Protect Mode Register */ + RoReg PIO_WPSR; /**< \brief (Pio Offset: 0x00E8) Write Protect Status Register */ +} Pio; +#endif /* __ASSEMBLY__ */ +/* -------- PIO_PER : (PIO Offset: 0x0000) PIO Enable Register -------- */ +#define PIO_PER_P0 (0x1u << 0) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P1 (0x1u << 1) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P2 (0x1u << 2) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P3 (0x1u << 3) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P4 (0x1u << 4) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P5 (0x1u << 5) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P6 (0x1u << 6) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P7 (0x1u << 7) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P8 (0x1u << 8) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P9 (0x1u << 9) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P10 (0x1u << 10) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P11 (0x1u << 11) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P12 (0x1u << 12) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P13 (0x1u << 13) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P14 (0x1u << 14) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P15 (0x1u << 15) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P16 (0x1u << 16) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P17 (0x1u << 17) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P18 (0x1u << 18) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P19 (0x1u << 19) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P20 (0x1u << 20) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P21 (0x1u << 21) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P22 (0x1u << 22) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P23 (0x1u << 23) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P24 (0x1u << 24) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P25 (0x1u << 25) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P26 (0x1u << 26) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P27 (0x1u << 27) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P28 (0x1u << 28) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P29 (0x1u << 29) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P30 (0x1u << 30) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P31 (0x1u << 31) /**< \brief (PIO_PER) PIO Enable */ +/* -------- PIO_PDR : (PIO Offset: 0x0004) PIO Disable Register -------- */ +#define PIO_PDR_P0 (0x1u << 0) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P1 (0x1u << 1) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P2 (0x1u << 2) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P3 (0x1u << 3) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P4 (0x1u << 4) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P5 (0x1u << 5) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P6 (0x1u << 6) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P7 (0x1u << 7) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P8 (0x1u << 8) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P9 (0x1u << 9) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P10 (0x1u << 10) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P11 (0x1u << 11) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P12 (0x1u << 12) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P13 (0x1u << 13) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P14 (0x1u << 14) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P15 (0x1u << 15) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P16 (0x1u << 16) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P17 (0x1u << 17) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P18 (0x1u << 18) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P19 (0x1u << 19) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P20 (0x1u << 20) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P21 (0x1u << 21) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P22 (0x1u << 22) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P23 (0x1u << 23) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P24 (0x1u << 24) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P25 (0x1u << 25) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P26 (0x1u << 26) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P27 (0x1u << 27) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P28 (0x1u << 28) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P29 (0x1u << 29) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P30 (0x1u << 30) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P31 (0x1u << 31) /**< \brief (PIO_PDR) PIO Disable */ +/* -------- PIO_PSR : (PIO Offset: 0x0008) PIO Status Register -------- */ +#define PIO_PSR_P0 (0x1u << 0) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P1 (0x1u << 1) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P2 (0x1u << 2) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P3 (0x1u << 3) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P4 (0x1u << 4) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P5 (0x1u << 5) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P6 (0x1u << 6) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P7 (0x1u << 7) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P8 (0x1u << 8) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P9 (0x1u << 9) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P10 (0x1u << 10) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P11 (0x1u << 11) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P12 (0x1u << 12) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P13 (0x1u << 13) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P14 (0x1u << 14) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P15 (0x1u << 15) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P16 (0x1u << 16) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P17 (0x1u << 17) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P18 (0x1u << 18) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P19 (0x1u << 19) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P20 (0x1u << 20) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P21 (0x1u << 21) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P22 (0x1u << 22) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P23 (0x1u << 23) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P24 (0x1u << 24) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P25 (0x1u << 25) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P26 (0x1u << 26) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P27 (0x1u << 27) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P28 (0x1u << 28) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P29 (0x1u << 29) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P30 (0x1u << 30) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P31 (0x1u << 31) /**< \brief (PIO_PSR) PIO Status */ +/* -------- PIO_OER : (PIO Offset: 0x0010) Output Enable Register -------- */ +#define PIO_OER_P0 (0x1u << 0) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P1 (0x1u << 1) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P2 (0x1u << 2) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P3 (0x1u << 3) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P4 (0x1u << 4) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P5 (0x1u << 5) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P6 (0x1u << 6) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P7 (0x1u << 7) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P8 (0x1u << 8) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P9 (0x1u << 9) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P10 (0x1u << 10) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P11 (0x1u << 11) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P12 (0x1u << 12) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P13 (0x1u << 13) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P14 (0x1u << 14) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P15 (0x1u << 15) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P16 (0x1u << 16) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P17 (0x1u << 17) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P18 (0x1u << 18) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P19 (0x1u << 19) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P20 (0x1u << 20) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P21 (0x1u << 21) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P22 (0x1u << 22) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P23 (0x1u << 23) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P24 (0x1u << 24) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P25 (0x1u << 25) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P26 (0x1u << 26) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P27 (0x1u << 27) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P28 (0x1u << 28) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P29 (0x1u << 29) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P30 (0x1u << 30) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P31 (0x1u << 31) /**< \brief (PIO_OER) Output Enable */ +/* -------- PIO_ODR : (PIO Offset: 0x0014) Output Disable Register -------- */ +#define PIO_ODR_P0 (0x1u << 0) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P1 (0x1u << 1) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P2 (0x1u << 2) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P3 (0x1u << 3) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P4 (0x1u << 4) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P5 (0x1u << 5) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P6 (0x1u << 6) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P7 (0x1u << 7) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P8 (0x1u << 8) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P9 (0x1u << 9) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P10 (0x1u << 10) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P11 (0x1u << 11) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P12 (0x1u << 12) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P13 (0x1u << 13) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P14 (0x1u << 14) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P15 (0x1u << 15) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P16 (0x1u << 16) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P17 (0x1u << 17) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P18 (0x1u << 18) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P19 (0x1u << 19) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P20 (0x1u << 20) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P21 (0x1u << 21) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P22 (0x1u << 22) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P23 (0x1u << 23) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P24 (0x1u << 24) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P25 (0x1u << 25) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P26 (0x1u << 26) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P27 (0x1u << 27) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P28 (0x1u << 28) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P29 (0x1u << 29) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P30 (0x1u << 30) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P31 (0x1u << 31) /**< \brief (PIO_ODR) Output Disable */ +/* -------- PIO_OSR : (PIO Offset: 0x0018) Output Status Register -------- */ +#define PIO_OSR_P0 (0x1u << 0) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P1 (0x1u << 1) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P2 (0x1u << 2) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P3 (0x1u << 3) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P4 (0x1u << 4) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P5 (0x1u << 5) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P6 (0x1u << 6) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P7 (0x1u << 7) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P8 (0x1u << 8) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P9 (0x1u << 9) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P10 (0x1u << 10) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P11 (0x1u << 11) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P12 (0x1u << 12) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P13 (0x1u << 13) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P14 (0x1u << 14) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P15 (0x1u << 15) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P16 (0x1u << 16) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P17 (0x1u << 17) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P18 (0x1u << 18) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P19 (0x1u << 19) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P20 (0x1u << 20) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P21 (0x1u << 21) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P22 (0x1u << 22) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P23 (0x1u << 23) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P24 (0x1u << 24) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P25 (0x1u << 25) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P26 (0x1u << 26) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P27 (0x1u << 27) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P28 (0x1u << 28) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P29 (0x1u << 29) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P30 (0x1u << 30) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P31 (0x1u << 31) /**< \brief (PIO_OSR) Output Status */ +/* -------- PIO_IFER : (PIO Offset: 0x0020) Glitch Input Filter Enable Register -------- */ +#define PIO_IFER_P0 (0x1u << 0) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P1 (0x1u << 1) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P2 (0x1u << 2) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P3 (0x1u << 3) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P4 (0x1u << 4) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P5 (0x1u << 5) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P6 (0x1u << 6) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P7 (0x1u << 7) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P8 (0x1u << 8) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P9 (0x1u << 9) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P10 (0x1u << 10) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P11 (0x1u << 11) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P12 (0x1u << 12) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P13 (0x1u << 13) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P14 (0x1u << 14) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P15 (0x1u << 15) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P16 (0x1u << 16) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P17 (0x1u << 17) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P18 (0x1u << 18) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P19 (0x1u << 19) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P20 (0x1u << 20) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P21 (0x1u << 21) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P22 (0x1u << 22) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P23 (0x1u << 23) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P24 (0x1u << 24) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P25 (0x1u << 25) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P26 (0x1u << 26) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P27 (0x1u << 27) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P28 (0x1u << 28) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P29 (0x1u << 29) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P30 (0x1u << 30) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P31 (0x1u << 31) /**< \brief (PIO_IFER) Input Filter Enable */ +/* -------- PIO_IFDR : (PIO Offset: 0x0024) Glitch Input Filter Disable Register -------- */ +#define PIO_IFDR_P0 (0x1u << 0) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P1 (0x1u << 1) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P2 (0x1u << 2) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P3 (0x1u << 3) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P4 (0x1u << 4) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P5 (0x1u << 5) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P6 (0x1u << 6) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P7 (0x1u << 7) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P8 (0x1u << 8) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P9 (0x1u << 9) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P10 (0x1u << 10) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P11 (0x1u << 11) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P12 (0x1u << 12) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P13 (0x1u << 13) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P14 (0x1u << 14) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P15 (0x1u << 15) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P16 (0x1u << 16) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P17 (0x1u << 17) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P18 (0x1u << 18) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P19 (0x1u << 19) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P20 (0x1u << 20) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P21 (0x1u << 21) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P22 (0x1u << 22) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P23 (0x1u << 23) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P24 (0x1u << 24) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P25 (0x1u << 25) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P26 (0x1u << 26) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P27 (0x1u << 27) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P28 (0x1u << 28) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P29 (0x1u << 29) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P30 (0x1u << 30) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P31 (0x1u << 31) /**< \brief (PIO_IFDR) Input Filter Disable */ +/* -------- PIO_IFSR : (PIO Offset: 0x0028) Glitch Input Filter Status Register -------- */ +#define PIO_IFSR_P0 (0x1u << 0) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P1 (0x1u << 1) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P2 (0x1u << 2) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P3 (0x1u << 3) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P4 (0x1u << 4) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P5 (0x1u << 5) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P6 (0x1u << 6) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P7 (0x1u << 7) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P8 (0x1u << 8) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P9 (0x1u << 9) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P10 (0x1u << 10) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P11 (0x1u << 11) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P12 (0x1u << 12) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P13 (0x1u << 13) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P14 (0x1u << 14) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P15 (0x1u << 15) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P16 (0x1u << 16) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P17 (0x1u << 17) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P18 (0x1u << 18) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P19 (0x1u << 19) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P20 (0x1u << 20) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P21 (0x1u << 21) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P22 (0x1u << 22) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P23 (0x1u << 23) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P24 (0x1u << 24) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P25 (0x1u << 25) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P26 (0x1u << 26) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P27 (0x1u << 27) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P28 (0x1u << 28) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P29 (0x1u << 29) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P30 (0x1u << 30) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P31 (0x1u << 31) /**< \brief (PIO_IFSR) Input Filer Status */ +/* -------- PIO_SODR : (PIO Offset: 0x0030) Set Output Data Register -------- */ +#define PIO_SODR_P0 (0x1u << 0) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P1 (0x1u << 1) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P2 (0x1u << 2) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P3 (0x1u << 3) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P4 (0x1u << 4) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P5 (0x1u << 5) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P6 (0x1u << 6) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P7 (0x1u << 7) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P8 (0x1u << 8) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P9 (0x1u << 9) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P10 (0x1u << 10) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P11 (0x1u << 11) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P12 (0x1u << 12) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P13 (0x1u << 13) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P14 (0x1u << 14) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P15 (0x1u << 15) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P16 (0x1u << 16) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P17 (0x1u << 17) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P18 (0x1u << 18) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P19 (0x1u << 19) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P20 (0x1u << 20) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P21 (0x1u << 21) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P22 (0x1u << 22) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P23 (0x1u << 23) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P24 (0x1u << 24) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P25 (0x1u << 25) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P26 (0x1u << 26) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P27 (0x1u << 27) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P28 (0x1u << 28) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P29 (0x1u << 29) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P30 (0x1u << 30) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P31 (0x1u << 31) /**< \brief (PIO_SODR) Set Output Data */ +/* -------- PIO_CODR : (PIO Offset: 0x0034) Clear Output Data Register -------- */ +#define PIO_CODR_P0 (0x1u << 0) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P1 (0x1u << 1) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P2 (0x1u << 2) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P3 (0x1u << 3) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P4 (0x1u << 4) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P5 (0x1u << 5) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P6 (0x1u << 6) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P7 (0x1u << 7) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P8 (0x1u << 8) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P9 (0x1u << 9) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P10 (0x1u << 10) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P11 (0x1u << 11) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P12 (0x1u << 12) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P13 (0x1u << 13) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P14 (0x1u << 14) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P15 (0x1u << 15) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P16 (0x1u << 16) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P17 (0x1u << 17) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P18 (0x1u << 18) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P19 (0x1u << 19) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P20 (0x1u << 20) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P21 (0x1u << 21) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P22 (0x1u << 22) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P23 (0x1u << 23) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P24 (0x1u << 24) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P25 (0x1u << 25) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P26 (0x1u << 26) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P27 (0x1u << 27) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P28 (0x1u << 28) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P29 (0x1u << 29) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P30 (0x1u << 30) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P31 (0x1u << 31) /**< \brief (PIO_CODR) Clear Output Data */ +/* -------- PIO_ODSR : (PIO Offset: 0x0038) Output Data Status Register -------- */ +#define PIO_ODSR_P0 (0x1u << 0) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P1 (0x1u << 1) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P2 (0x1u << 2) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P3 (0x1u << 3) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P4 (0x1u << 4) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P5 (0x1u << 5) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P6 (0x1u << 6) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P7 (0x1u << 7) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P8 (0x1u << 8) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P9 (0x1u << 9) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P10 (0x1u << 10) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P11 (0x1u << 11) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P12 (0x1u << 12) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P13 (0x1u << 13) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P14 (0x1u << 14) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P15 (0x1u << 15) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P16 (0x1u << 16) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P17 (0x1u << 17) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P18 (0x1u << 18) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P19 (0x1u << 19) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P20 (0x1u << 20) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P21 (0x1u << 21) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P22 (0x1u << 22) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P23 (0x1u << 23) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P24 (0x1u << 24) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P25 (0x1u << 25) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P26 (0x1u << 26) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P27 (0x1u << 27) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P28 (0x1u << 28) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P29 (0x1u << 29) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P30 (0x1u << 30) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P31 (0x1u << 31) /**< \brief (PIO_ODSR) Output Data Status */ +/* -------- PIO_PDSR : (PIO Offset: 0x003C) Pin Data Status Register -------- */ +#define PIO_PDSR_P0 (0x1u << 0) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P1 (0x1u << 1) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P2 (0x1u << 2) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P3 (0x1u << 3) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P4 (0x1u << 4) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P5 (0x1u << 5) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P6 (0x1u << 6) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P7 (0x1u << 7) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P8 (0x1u << 8) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P9 (0x1u << 9) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P10 (0x1u << 10) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P11 (0x1u << 11) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P12 (0x1u << 12) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P13 (0x1u << 13) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P14 (0x1u << 14) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P15 (0x1u << 15) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P16 (0x1u << 16) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P17 (0x1u << 17) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P18 (0x1u << 18) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P19 (0x1u << 19) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P20 (0x1u << 20) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P21 (0x1u << 21) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P22 (0x1u << 22) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P23 (0x1u << 23) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P24 (0x1u << 24) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P25 (0x1u << 25) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P26 (0x1u << 26) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P27 (0x1u << 27) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P28 (0x1u << 28) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P29 (0x1u << 29) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P30 (0x1u << 30) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P31 (0x1u << 31) /**< \brief (PIO_PDSR) Output Data Status */ +/* -------- PIO_IER : (PIO Offset: 0x0040) Interrupt Enable Register -------- */ +#define PIO_IER_P0 (0x1u << 0) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P1 (0x1u << 1) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P2 (0x1u << 2) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P3 (0x1u << 3) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P4 (0x1u << 4) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P5 (0x1u << 5) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P6 (0x1u << 6) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P7 (0x1u << 7) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P8 (0x1u << 8) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P9 (0x1u << 9) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P10 (0x1u << 10) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P11 (0x1u << 11) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P12 (0x1u << 12) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P13 (0x1u << 13) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P14 (0x1u << 14) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P15 (0x1u << 15) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P16 (0x1u << 16) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P17 (0x1u << 17) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P18 (0x1u << 18) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P19 (0x1u << 19) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P20 (0x1u << 20) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P21 (0x1u << 21) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P22 (0x1u << 22) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P23 (0x1u << 23) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P24 (0x1u << 24) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P25 (0x1u << 25) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P26 (0x1u << 26) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P27 (0x1u << 27) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P28 (0x1u << 28) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P29 (0x1u << 29) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P30 (0x1u << 30) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P31 (0x1u << 31) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +/* -------- PIO_IDR : (PIO Offset: 0x0044) Interrupt Disable Register -------- */ +#define PIO_IDR_P0 (0x1u << 0) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P1 (0x1u << 1) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P2 (0x1u << 2) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P3 (0x1u << 3) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P4 (0x1u << 4) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P5 (0x1u << 5) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P6 (0x1u << 6) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P7 (0x1u << 7) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P8 (0x1u << 8) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P9 (0x1u << 9) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P10 (0x1u << 10) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P11 (0x1u << 11) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P12 (0x1u << 12) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P13 (0x1u << 13) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P14 (0x1u << 14) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P15 (0x1u << 15) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P16 (0x1u << 16) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P17 (0x1u << 17) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P18 (0x1u << 18) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P19 (0x1u << 19) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P20 (0x1u << 20) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P21 (0x1u << 21) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P22 (0x1u << 22) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P23 (0x1u << 23) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P24 (0x1u << 24) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P25 (0x1u << 25) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P26 (0x1u << 26) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P27 (0x1u << 27) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P28 (0x1u << 28) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P29 (0x1u << 29) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P30 (0x1u << 30) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P31 (0x1u << 31) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +/* -------- PIO_IMR : (PIO Offset: 0x0048) Interrupt Mask Register -------- */ +#define PIO_IMR_P0 (0x1u << 0) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P1 (0x1u << 1) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P2 (0x1u << 2) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P3 (0x1u << 3) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P4 (0x1u << 4) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P5 (0x1u << 5) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P6 (0x1u << 6) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P7 (0x1u << 7) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P8 (0x1u << 8) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P9 (0x1u << 9) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P10 (0x1u << 10) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P11 (0x1u << 11) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P12 (0x1u << 12) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P13 (0x1u << 13) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P14 (0x1u << 14) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P15 (0x1u << 15) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P16 (0x1u << 16) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P17 (0x1u << 17) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P18 (0x1u << 18) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P19 (0x1u << 19) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P20 (0x1u << 20) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P21 (0x1u << 21) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P22 (0x1u << 22) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P23 (0x1u << 23) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P24 (0x1u << 24) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P25 (0x1u << 25) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P26 (0x1u << 26) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P27 (0x1u << 27) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P28 (0x1u << 28) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P29 (0x1u << 29) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P30 (0x1u << 30) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P31 (0x1u << 31) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +/* -------- PIO_ISR : (PIO Offset: 0x004C) Interrupt Status Register -------- */ +#define PIO_ISR_P0 (0x1u << 0) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P1 (0x1u << 1) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P2 (0x1u << 2) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P3 (0x1u << 3) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P4 (0x1u << 4) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P5 (0x1u << 5) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P6 (0x1u << 6) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P7 (0x1u << 7) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P8 (0x1u << 8) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P9 (0x1u << 9) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P10 (0x1u << 10) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P11 (0x1u << 11) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P12 (0x1u << 12) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P13 (0x1u << 13) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P14 (0x1u << 14) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P15 (0x1u << 15) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P16 (0x1u << 16) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P17 (0x1u << 17) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P18 (0x1u << 18) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P19 (0x1u << 19) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P20 (0x1u << 20) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P21 (0x1u << 21) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P22 (0x1u << 22) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P23 (0x1u << 23) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P24 (0x1u << 24) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P25 (0x1u << 25) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P26 (0x1u << 26) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P27 (0x1u << 27) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P28 (0x1u << 28) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P29 (0x1u << 29) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P30 (0x1u << 30) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P31 (0x1u << 31) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +/* -------- PIO_MDER : (PIO Offset: 0x0050) Multi-driver Enable Register -------- */ +#define PIO_MDER_P0 (0x1u << 0) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P1 (0x1u << 1) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P2 (0x1u << 2) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P3 (0x1u << 3) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P4 (0x1u << 4) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P5 (0x1u << 5) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P6 (0x1u << 6) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P7 (0x1u << 7) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P8 (0x1u << 8) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P9 (0x1u << 9) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P10 (0x1u << 10) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P11 (0x1u << 11) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P12 (0x1u << 12) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P13 (0x1u << 13) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P14 (0x1u << 14) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P15 (0x1u << 15) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P16 (0x1u << 16) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P17 (0x1u << 17) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P18 (0x1u << 18) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P19 (0x1u << 19) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P20 (0x1u << 20) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P21 (0x1u << 21) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P22 (0x1u << 22) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P23 (0x1u << 23) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P24 (0x1u << 24) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P25 (0x1u << 25) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P26 (0x1u << 26) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P27 (0x1u << 27) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P28 (0x1u << 28) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P29 (0x1u << 29) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P30 (0x1u << 30) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P31 (0x1u << 31) /**< \brief (PIO_MDER) Multi Drive Enable. */ +/* -------- PIO_MDDR : (PIO Offset: 0x0054) Multi-driver Disable Register -------- */ +#define PIO_MDDR_P0 (0x1u << 0) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P1 (0x1u << 1) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P2 (0x1u << 2) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P3 (0x1u << 3) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P4 (0x1u << 4) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P5 (0x1u << 5) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P6 (0x1u << 6) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P7 (0x1u << 7) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P8 (0x1u << 8) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P9 (0x1u << 9) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P10 (0x1u << 10) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P11 (0x1u << 11) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P12 (0x1u << 12) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P13 (0x1u << 13) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P14 (0x1u << 14) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P15 (0x1u << 15) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P16 (0x1u << 16) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P17 (0x1u << 17) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P18 (0x1u << 18) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P19 (0x1u << 19) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P20 (0x1u << 20) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P21 (0x1u << 21) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P22 (0x1u << 22) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P23 (0x1u << 23) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P24 (0x1u << 24) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P25 (0x1u << 25) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P26 (0x1u << 26) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P27 (0x1u << 27) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P28 (0x1u << 28) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P29 (0x1u << 29) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P30 (0x1u << 30) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P31 (0x1u << 31) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +/* -------- PIO_MDSR : (PIO Offset: 0x0058) Multi-driver Status Register -------- */ +#define PIO_MDSR_P0 (0x1u << 0) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P1 (0x1u << 1) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P2 (0x1u << 2) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P3 (0x1u << 3) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P4 (0x1u << 4) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P5 (0x1u << 5) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P6 (0x1u << 6) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P7 (0x1u << 7) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P8 (0x1u << 8) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P9 (0x1u << 9) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P10 (0x1u << 10) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P11 (0x1u << 11) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P12 (0x1u << 12) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P13 (0x1u << 13) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P14 (0x1u << 14) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P15 (0x1u << 15) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P16 (0x1u << 16) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P17 (0x1u << 17) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P18 (0x1u << 18) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P19 (0x1u << 19) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P20 (0x1u << 20) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P21 (0x1u << 21) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P22 (0x1u << 22) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P23 (0x1u << 23) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P24 (0x1u << 24) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P25 (0x1u << 25) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P26 (0x1u << 26) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P27 (0x1u << 27) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P28 (0x1u << 28) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P29 (0x1u << 29) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P30 (0x1u << 30) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P31 (0x1u << 31) /**< \brief (PIO_MDSR) Multi Drive Status. */ +/* -------- PIO_PUDR : (PIO Offset: 0x0060) Pull-up Disable Register -------- */ +#define PIO_PUDR_P0 (0x1u << 0) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P1 (0x1u << 1) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P2 (0x1u << 2) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P3 (0x1u << 3) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P4 (0x1u << 4) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P5 (0x1u << 5) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P6 (0x1u << 6) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P7 (0x1u << 7) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P8 (0x1u << 8) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P9 (0x1u << 9) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P10 (0x1u << 10) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P11 (0x1u << 11) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P12 (0x1u << 12) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P13 (0x1u << 13) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P14 (0x1u << 14) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P15 (0x1u << 15) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P16 (0x1u << 16) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P17 (0x1u << 17) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P18 (0x1u << 18) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P19 (0x1u << 19) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P20 (0x1u << 20) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P21 (0x1u << 21) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P22 (0x1u << 22) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P23 (0x1u << 23) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P24 (0x1u << 24) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P25 (0x1u << 25) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P26 (0x1u << 26) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P27 (0x1u << 27) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P28 (0x1u << 28) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P29 (0x1u << 29) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P30 (0x1u << 30) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P31 (0x1u << 31) /**< \brief (PIO_PUDR) Pull Up Disable. */ +/* -------- PIO_PUER : (PIO Offset: 0x0064) Pull-up Enable Register -------- */ +#define PIO_PUER_P0 (0x1u << 0) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P1 (0x1u << 1) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P2 (0x1u << 2) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P3 (0x1u << 3) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P4 (0x1u << 4) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P5 (0x1u << 5) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P6 (0x1u << 6) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P7 (0x1u << 7) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P8 (0x1u << 8) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P9 (0x1u << 9) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P10 (0x1u << 10) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P11 (0x1u << 11) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P12 (0x1u << 12) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P13 (0x1u << 13) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P14 (0x1u << 14) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P15 (0x1u << 15) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P16 (0x1u << 16) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P17 (0x1u << 17) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P18 (0x1u << 18) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P19 (0x1u << 19) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P20 (0x1u << 20) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P21 (0x1u << 21) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P22 (0x1u << 22) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P23 (0x1u << 23) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P24 (0x1u << 24) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P25 (0x1u << 25) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P26 (0x1u << 26) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P27 (0x1u << 27) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P28 (0x1u << 28) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P29 (0x1u << 29) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P30 (0x1u << 30) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P31 (0x1u << 31) /**< \brief (PIO_PUER) Pull Up Enable. */ +/* -------- PIO_PUSR : (PIO Offset: 0x0068) Pad Pull-up Status Register -------- */ +#define PIO_PUSR_P0 (0x1u << 0) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P1 (0x1u << 1) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P2 (0x1u << 2) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P3 (0x1u << 3) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P4 (0x1u << 4) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P5 (0x1u << 5) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P6 (0x1u << 6) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P7 (0x1u << 7) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P8 (0x1u << 8) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P9 (0x1u << 9) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P10 (0x1u << 10) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P11 (0x1u << 11) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P12 (0x1u << 12) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P13 (0x1u << 13) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P14 (0x1u << 14) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P15 (0x1u << 15) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P16 (0x1u << 16) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P17 (0x1u << 17) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P18 (0x1u << 18) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P19 (0x1u << 19) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P20 (0x1u << 20) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P21 (0x1u << 21) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P22 (0x1u << 22) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P23 (0x1u << 23) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P24 (0x1u << 24) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P25 (0x1u << 25) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P26 (0x1u << 26) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P27 (0x1u << 27) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P28 (0x1u << 28) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P29 (0x1u << 29) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P30 (0x1u << 30) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P31 (0x1u << 31) /**< \brief (PIO_PUSR) Pull Up Status. */ +/* -------- PIO_ABSR : (PIO Offset: 0x0070) Peripheral AB Select Register -------- */ +#define PIO_ABSR_P0 (0x1u << 0) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P1 (0x1u << 1) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P2 (0x1u << 2) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P3 (0x1u << 3) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P4 (0x1u << 4) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P5 (0x1u << 5) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P6 (0x1u << 6) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P7 (0x1u << 7) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P8 (0x1u << 8) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P9 (0x1u << 9) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P10 (0x1u << 10) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P11 (0x1u << 11) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P12 (0x1u << 12) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P13 (0x1u << 13) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P14 (0x1u << 14) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P15 (0x1u << 15) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P16 (0x1u << 16) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P17 (0x1u << 17) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P18 (0x1u << 18) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P19 (0x1u << 19) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P20 (0x1u << 20) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P21 (0x1u << 21) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P22 (0x1u << 22) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P23 (0x1u << 23) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P24 (0x1u << 24) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P25 (0x1u << 25) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P26 (0x1u << 26) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P27 (0x1u << 27) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P28 (0x1u << 28) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P29 (0x1u << 29) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P30 (0x1u << 30) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P31 (0x1u << 31) /**< \brief (PIO_ABSR) Peripheral A Select. */ +/* -------- PIO_SCIFSR : (PIO Offset: 0x0080) System Clock Glitch Input Filter Select Register -------- */ +#define PIO_SCIFSR_P0 (0x1u << 0) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P1 (0x1u << 1) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P2 (0x1u << 2) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P3 (0x1u << 3) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P4 (0x1u << 4) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P5 (0x1u << 5) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P6 (0x1u << 6) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P7 (0x1u << 7) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P8 (0x1u << 8) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P9 (0x1u << 9) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P10 (0x1u << 10) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P11 (0x1u << 11) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P12 (0x1u << 12) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P13 (0x1u << 13) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P14 (0x1u << 14) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P15 (0x1u << 15) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P16 (0x1u << 16) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P17 (0x1u << 17) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P18 (0x1u << 18) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P19 (0x1u << 19) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P20 (0x1u << 20) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P21 (0x1u << 21) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P22 (0x1u << 22) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P23 (0x1u << 23) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P24 (0x1u << 24) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P25 (0x1u << 25) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P26 (0x1u << 26) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P27 (0x1u << 27) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P28 (0x1u << 28) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P29 (0x1u << 29) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P30 (0x1u << 30) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P31 (0x1u << 31) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +/* -------- PIO_DIFSR : (PIO Offset: 0x0084) Debouncing Input Filter Select Register -------- */ +#define PIO_DIFSR_P0 (0x1u << 0) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P1 (0x1u << 1) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P2 (0x1u << 2) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P3 (0x1u << 3) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P4 (0x1u << 4) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P5 (0x1u << 5) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P6 (0x1u << 6) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P7 (0x1u << 7) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P8 (0x1u << 8) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P9 (0x1u << 9) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P10 (0x1u << 10) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P11 (0x1u << 11) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P12 (0x1u << 12) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P13 (0x1u << 13) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P14 (0x1u << 14) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P15 (0x1u << 15) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P16 (0x1u << 16) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P17 (0x1u << 17) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P18 (0x1u << 18) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P19 (0x1u << 19) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P20 (0x1u << 20) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P21 (0x1u << 21) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P22 (0x1u << 22) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P23 (0x1u << 23) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P24 (0x1u << 24) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P25 (0x1u << 25) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P26 (0x1u << 26) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P27 (0x1u << 27) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P28 (0x1u << 28) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P29 (0x1u << 29) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P30 (0x1u << 30) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P31 (0x1u << 31) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +/* -------- PIO_IFDGSR : (PIO Offset: 0x0088) Glitch or Debouncing Input Filter Clock Selection Status Register -------- */ +#define PIO_IFDGSR_P0 (0x1u << 0) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P1 (0x1u << 1) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P2 (0x1u << 2) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P3 (0x1u << 3) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P4 (0x1u << 4) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P5 (0x1u << 5) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P6 (0x1u << 6) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P7 (0x1u << 7) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P8 (0x1u << 8) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P9 (0x1u << 9) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P10 (0x1u << 10) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P11 (0x1u << 11) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P12 (0x1u << 12) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P13 (0x1u << 13) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P14 (0x1u << 14) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P15 (0x1u << 15) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P16 (0x1u << 16) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P17 (0x1u << 17) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P18 (0x1u << 18) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P19 (0x1u << 19) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P20 (0x1u << 20) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P21 (0x1u << 21) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P22 (0x1u << 22) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P23 (0x1u << 23) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P24 (0x1u << 24) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P25 (0x1u << 25) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P26 (0x1u << 26) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P27 (0x1u << 27) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P28 (0x1u << 28) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P29 (0x1u << 29) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P30 (0x1u << 30) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P31 (0x1u << 31) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +/* -------- PIO_SCDR : (PIO Offset: 0x008C) Slow Clock Divider Debouncing Register -------- */ +#define PIO_SCDR_DIV_Pos 0 +#define PIO_SCDR_DIV_Msk (0x3fffu << PIO_SCDR_DIV_Pos) /**< \brief (PIO_SCDR) Slow Clock Divider Selection for Debouncing */ +#define PIO_SCDR_DIV(value) ((PIO_SCDR_DIV_Msk & ((value) << PIO_SCDR_DIV_Pos))) +/* -------- PIO_OWER : (PIO Offset: 0x00A0) Output Write Enable -------- */ +#define PIO_OWER_P0 (0x1u << 0) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P1 (0x1u << 1) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P2 (0x1u << 2) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P3 (0x1u << 3) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P4 (0x1u << 4) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P5 (0x1u << 5) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P6 (0x1u << 6) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P7 (0x1u << 7) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P8 (0x1u << 8) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P9 (0x1u << 9) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P10 (0x1u << 10) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P11 (0x1u << 11) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P12 (0x1u << 12) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P13 (0x1u << 13) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P14 (0x1u << 14) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P15 (0x1u << 15) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P16 (0x1u << 16) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P17 (0x1u << 17) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P18 (0x1u << 18) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P19 (0x1u << 19) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P20 (0x1u << 20) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P21 (0x1u << 21) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P22 (0x1u << 22) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P23 (0x1u << 23) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P24 (0x1u << 24) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P25 (0x1u << 25) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P26 (0x1u << 26) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P27 (0x1u << 27) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P28 (0x1u << 28) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P29 (0x1u << 29) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P30 (0x1u << 30) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P31 (0x1u << 31) /**< \brief (PIO_OWER) Output Write Enable. */ +/* -------- PIO_OWDR : (PIO Offset: 0x00A4) Output Write Disable -------- */ +#define PIO_OWDR_P0 (0x1u << 0) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P1 (0x1u << 1) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P2 (0x1u << 2) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P3 (0x1u << 3) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P4 (0x1u << 4) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P5 (0x1u << 5) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P6 (0x1u << 6) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P7 (0x1u << 7) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P8 (0x1u << 8) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P9 (0x1u << 9) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P10 (0x1u << 10) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P11 (0x1u << 11) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P12 (0x1u << 12) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P13 (0x1u << 13) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P14 (0x1u << 14) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P15 (0x1u << 15) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P16 (0x1u << 16) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P17 (0x1u << 17) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P18 (0x1u << 18) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P19 (0x1u << 19) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P20 (0x1u << 20) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P21 (0x1u << 21) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P22 (0x1u << 22) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P23 (0x1u << 23) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P24 (0x1u << 24) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P25 (0x1u << 25) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P26 (0x1u << 26) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P27 (0x1u << 27) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P28 (0x1u << 28) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P29 (0x1u << 29) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P30 (0x1u << 30) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P31 (0x1u << 31) /**< \brief (PIO_OWDR) Output Write Disable. */ +/* -------- PIO_OWSR : (PIO Offset: 0x00A8) Output Write Status Register -------- */ +#define PIO_OWSR_P0 (0x1u << 0) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P1 (0x1u << 1) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P2 (0x1u << 2) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P3 (0x1u << 3) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P4 (0x1u << 4) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P5 (0x1u << 5) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P6 (0x1u << 6) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P7 (0x1u << 7) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P8 (0x1u << 8) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P9 (0x1u << 9) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P10 (0x1u << 10) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P11 (0x1u << 11) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P12 (0x1u << 12) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P13 (0x1u << 13) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P14 (0x1u << 14) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P15 (0x1u << 15) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P16 (0x1u << 16) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P17 (0x1u << 17) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P18 (0x1u << 18) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P19 (0x1u << 19) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P20 (0x1u << 20) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P21 (0x1u << 21) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P22 (0x1u << 22) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P23 (0x1u << 23) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P24 (0x1u << 24) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P25 (0x1u << 25) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P26 (0x1u << 26) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P27 (0x1u << 27) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P28 (0x1u << 28) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P29 (0x1u << 29) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P30 (0x1u << 30) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P31 (0x1u << 31) /**< \brief (PIO_OWSR) Output Write Status. */ +/* -------- PIO_AIMER : (PIO Offset: 0x00B0) Additional Interrupt Modes Enable Register -------- */ +#define PIO_AIMER_P0 (0x1u << 0) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P1 (0x1u << 1) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P2 (0x1u << 2) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P3 (0x1u << 3) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P4 (0x1u << 4) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P5 (0x1u << 5) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P6 (0x1u << 6) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P7 (0x1u << 7) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P8 (0x1u << 8) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P9 (0x1u << 9) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P10 (0x1u << 10) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P11 (0x1u << 11) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P12 (0x1u << 12) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P13 (0x1u << 13) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P14 (0x1u << 14) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P15 (0x1u << 15) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P16 (0x1u << 16) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P17 (0x1u << 17) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P18 (0x1u << 18) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P19 (0x1u << 19) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P20 (0x1u << 20) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P21 (0x1u << 21) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P22 (0x1u << 22) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P23 (0x1u << 23) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P24 (0x1u << 24) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P25 (0x1u << 25) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P26 (0x1u << 26) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P27 (0x1u << 27) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P28 (0x1u << 28) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P29 (0x1u << 29) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P30 (0x1u << 30) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P31 (0x1u << 31) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +/* -------- PIO_AIMDR : (PIO Offset: 0x00B4) Additional Interrupt Modes Disables Register -------- */ +#define PIO_AIMDR_P0 (0x1u << 0) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P1 (0x1u << 1) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P2 (0x1u << 2) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P3 (0x1u << 3) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P4 (0x1u << 4) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P5 (0x1u << 5) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P6 (0x1u << 6) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P7 (0x1u << 7) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P8 (0x1u << 8) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P9 (0x1u << 9) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P10 (0x1u << 10) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P11 (0x1u << 11) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P12 (0x1u << 12) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P13 (0x1u << 13) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P14 (0x1u << 14) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P15 (0x1u << 15) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P16 (0x1u << 16) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P17 (0x1u << 17) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P18 (0x1u << 18) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P19 (0x1u << 19) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P20 (0x1u << 20) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P21 (0x1u << 21) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P22 (0x1u << 22) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P23 (0x1u << 23) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P24 (0x1u << 24) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P25 (0x1u << 25) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P26 (0x1u << 26) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P27 (0x1u << 27) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P28 (0x1u << 28) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P29 (0x1u << 29) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P30 (0x1u << 30) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P31 (0x1u << 31) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +/* -------- PIO_AIMMR : (PIO Offset: 0x00B8) Additional Interrupt Modes Mask Register -------- */ +#define PIO_AIMMR_P0 (0x1u << 0) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P1 (0x1u << 1) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P2 (0x1u << 2) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P3 (0x1u << 3) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P4 (0x1u << 4) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P5 (0x1u << 5) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P6 (0x1u << 6) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P7 (0x1u << 7) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P8 (0x1u << 8) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P9 (0x1u << 9) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P10 (0x1u << 10) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P11 (0x1u << 11) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P12 (0x1u << 12) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P13 (0x1u << 13) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P14 (0x1u << 14) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P15 (0x1u << 15) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P16 (0x1u << 16) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P17 (0x1u << 17) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P18 (0x1u << 18) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P19 (0x1u << 19) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P20 (0x1u << 20) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P21 (0x1u << 21) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P22 (0x1u << 22) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P23 (0x1u << 23) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P24 (0x1u << 24) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P25 (0x1u << 25) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P26 (0x1u << 26) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P27 (0x1u << 27) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P28 (0x1u << 28) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P29 (0x1u << 29) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P30 (0x1u << 30) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P31 (0x1u << 31) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +/* -------- PIO_ESR : (PIO Offset: 0x00C0) Edge Select Register -------- */ +#define PIO_ESR_P0 (0x1u << 0) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P1 (0x1u << 1) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P2 (0x1u << 2) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P3 (0x1u << 3) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P4 (0x1u << 4) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P5 (0x1u << 5) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P6 (0x1u << 6) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P7 (0x1u << 7) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P8 (0x1u << 8) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P9 (0x1u << 9) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P10 (0x1u << 10) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P11 (0x1u << 11) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P12 (0x1u << 12) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P13 (0x1u << 13) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P14 (0x1u << 14) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P15 (0x1u << 15) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P16 (0x1u << 16) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P17 (0x1u << 17) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P18 (0x1u << 18) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P19 (0x1u << 19) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P20 (0x1u << 20) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P21 (0x1u << 21) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P22 (0x1u << 22) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P23 (0x1u << 23) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P24 (0x1u << 24) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P25 (0x1u << 25) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P26 (0x1u << 26) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P27 (0x1u << 27) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P28 (0x1u << 28) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P29 (0x1u << 29) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P30 (0x1u << 30) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P31 (0x1u << 31) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +/* -------- PIO_LSR : (PIO Offset: 0x00C4) Level Select Register -------- */ +#define PIO_LSR_P0 (0x1u << 0) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P1 (0x1u << 1) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P2 (0x1u << 2) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P3 (0x1u << 3) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P4 (0x1u << 4) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P5 (0x1u << 5) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P6 (0x1u << 6) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P7 (0x1u << 7) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P8 (0x1u << 8) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P9 (0x1u << 9) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P10 (0x1u << 10) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P11 (0x1u << 11) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P12 (0x1u << 12) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P13 (0x1u << 13) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P14 (0x1u << 14) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P15 (0x1u << 15) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P16 (0x1u << 16) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P17 (0x1u << 17) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P18 (0x1u << 18) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P19 (0x1u << 19) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P20 (0x1u << 20) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P21 (0x1u << 21) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P22 (0x1u << 22) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P23 (0x1u << 23) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P24 (0x1u << 24) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P25 (0x1u << 25) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P26 (0x1u << 26) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P27 (0x1u << 27) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P28 (0x1u << 28) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P29 (0x1u << 29) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P30 (0x1u << 30) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P31 (0x1u << 31) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +/* -------- PIO_ELSR : (PIO Offset: 0x00C8) Edge/Level Status Register -------- */ +#define PIO_ELSR_P0 (0x1u << 0) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P1 (0x1u << 1) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P2 (0x1u << 2) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P3 (0x1u << 3) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P4 (0x1u << 4) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P5 (0x1u << 5) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P6 (0x1u << 6) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P7 (0x1u << 7) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P8 (0x1u << 8) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P9 (0x1u << 9) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P10 (0x1u << 10) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P11 (0x1u << 11) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P12 (0x1u << 12) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P13 (0x1u << 13) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P14 (0x1u << 14) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P15 (0x1u << 15) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P16 (0x1u << 16) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P17 (0x1u << 17) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P18 (0x1u << 18) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P19 (0x1u << 19) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P20 (0x1u << 20) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P21 (0x1u << 21) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P22 (0x1u << 22) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P23 (0x1u << 23) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P24 (0x1u << 24) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P25 (0x1u << 25) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P26 (0x1u << 26) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P27 (0x1u << 27) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P28 (0x1u << 28) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P29 (0x1u << 29) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P30 (0x1u << 30) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P31 (0x1u << 31) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +/* -------- PIO_FELLSR : (PIO Offset: 0x00D0) Falling Edge/Low Level Select Register -------- */ +#define PIO_FELLSR_P0 (0x1u << 0) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P1 (0x1u << 1) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P2 (0x1u << 2) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P3 (0x1u << 3) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P4 (0x1u << 4) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P5 (0x1u << 5) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P6 (0x1u << 6) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P7 (0x1u << 7) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P8 (0x1u << 8) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P9 (0x1u << 9) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P10 (0x1u << 10) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P11 (0x1u << 11) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P12 (0x1u << 12) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P13 (0x1u << 13) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P14 (0x1u << 14) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P15 (0x1u << 15) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P16 (0x1u << 16) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P17 (0x1u << 17) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P18 (0x1u << 18) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P19 (0x1u << 19) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P20 (0x1u << 20) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P21 (0x1u << 21) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P22 (0x1u << 22) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P23 (0x1u << 23) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P24 (0x1u << 24) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P25 (0x1u << 25) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P26 (0x1u << 26) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P27 (0x1u << 27) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P28 (0x1u << 28) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P29 (0x1u << 29) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P30 (0x1u << 30) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P31 (0x1u << 31) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +/* -------- PIO_REHLSR : (PIO Offset: 0x00D4) Rising Edge/ High Level Select Register -------- */ +#define PIO_REHLSR_P0 (0x1u << 0) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P1 (0x1u << 1) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P2 (0x1u << 2) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P3 (0x1u << 3) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P4 (0x1u << 4) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P5 (0x1u << 5) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P6 (0x1u << 6) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P7 (0x1u << 7) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P8 (0x1u << 8) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P9 (0x1u << 9) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P10 (0x1u << 10) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P11 (0x1u << 11) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P12 (0x1u << 12) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P13 (0x1u << 13) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P14 (0x1u << 14) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P15 (0x1u << 15) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P16 (0x1u << 16) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P17 (0x1u << 17) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P18 (0x1u << 18) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P19 (0x1u << 19) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P20 (0x1u << 20) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P21 (0x1u << 21) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P22 (0x1u << 22) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P23 (0x1u << 23) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P24 (0x1u << 24) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P25 (0x1u << 25) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P26 (0x1u << 26) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P27 (0x1u << 27) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P28 (0x1u << 28) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P29 (0x1u << 29) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P30 (0x1u << 30) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P31 (0x1u << 31) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +/* -------- PIO_FRLHSR : (PIO Offset: 0x00D8) Fall/Rise - Low/High Status Register -------- */ +#define PIO_FRLHSR_P0 (0x1u << 0) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P1 (0x1u << 1) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P2 (0x1u << 2) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P3 (0x1u << 3) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P4 (0x1u << 4) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P5 (0x1u << 5) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P6 (0x1u << 6) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P7 (0x1u << 7) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P8 (0x1u << 8) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P9 (0x1u << 9) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P10 (0x1u << 10) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P11 (0x1u << 11) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P12 (0x1u << 12) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P13 (0x1u << 13) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P14 (0x1u << 14) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P15 (0x1u << 15) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P16 (0x1u << 16) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P17 (0x1u << 17) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P18 (0x1u << 18) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P19 (0x1u << 19) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P20 (0x1u << 20) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P21 (0x1u << 21) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P22 (0x1u << 22) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P23 (0x1u << 23) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P24 (0x1u << 24) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P25 (0x1u << 25) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P26 (0x1u << 26) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P27 (0x1u << 27) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P28 (0x1u << 28) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P29 (0x1u << 29) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P30 (0x1u << 30) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P31 (0x1u << 31) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +/* -------- PIO_LOCKSR : (PIO Offset: 0x00E0) Lock Status -------- */ +#define PIO_LOCKSR_P0 (0x1u << 0) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P1 (0x1u << 1) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P2 (0x1u << 2) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P3 (0x1u << 3) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P4 (0x1u << 4) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P5 (0x1u << 5) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P6 (0x1u << 6) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P7 (0x1u << 7) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P8 (0x1u << 8) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P9 (0x1u << 9) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P10 (0x1u << 10) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P11 (0x1u << 11) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P12 (0x1u << 12) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P13 (0x1u << 13) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P14 (0x1u << 14) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P15 (0x1u << 15) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P16 (0x1u << 16) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P17 (0x1u << 17) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P18 (0x1u << 18) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P19 (0x1u << 19) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P20 (0x1u << 20) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P21 (0x1u << 21) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P22 (0x1u << 22) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P23 (0x1u << 23) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P24 (0x1u << 24) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P25 (0x1u << 25) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P26 (0x1u << 26) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P27 (0x1u << 27) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P28 (0x1u << 28) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P29 (0x1u << 29) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P30 (0x1u << 30) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P31 (0x1u << 31) /**< \brief (PIO_LOCKSR) Lock Status. */ +/* -------- PIO_WPMR : (PIO Offset: 0x00E4) Write Protect Mode Register -------- */ +#define PIO_WPMR_WPEN (0x1u << 0) /**< \brief (PIO_WPMR) Write Protect Enable */ +#define PIO_WPMR_WPKEY_Pos 8 +#define PIO_WPMR_WPKEY_Msk (0xffffffu << PIO_WPMR_WPKEY_Pos) /**< \brief (PIO_WPMR) Write Protect KEY */ +#define PIO_WPMR_WPKEY(value) ((PIO_WPMR_WPKEY_Msk & ((value) << PIO_WPMR_WPKEY_Pos))) +/* -------- PIO_WPSR : (PIO Offset: 0x00E8) Write Protect Status Register -------- */ +#define PIO_WPSR_WPVS (0x1u << 0) /**< \brief (PIO_WPSR) Write Protect Violation Status */ +#define PIO_WPSR_WPVSRC_Pos 8 +#define PIO_WPSR_WPVSRC_Msk (0xffffu << PIO_WPSR_WPVSRC_Pos) /**< \brief (PIO_WPSR) Write Protect Violation Source */ + +/*@}*/ + + +#endif /* _SAM3U_PIO_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_pmc.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_pmc.h new file mode 100644 index 000000000..6cd5dee7a --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_pmc.h @@ -0,0 +1,342 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_PMC_COMPONENT_ +#define _SAM3U_PMC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Power Management Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3U_PMC Power Management Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Pmc hardware registers */ +typedef struct { + WoReg PMC_SCER; /**< \brief (Pmc Offset: 0x0000) System Clock Enable Register */ + WoReg PMC_SCDR; /**< \brief (Pmc Offset: 0x0004) System Clock Disable Register */ + RoReg PMC_SCSR; /**< \brief (Pmc Offset: 0x0008) System Clock Status Register */ + RoReg Reserved1[1]; + WoReg PMC_PCER0; /**< \brief (Pmc Offset: 0x0010) Peripheral Clock Enable Register 0 */ + WoReg PMC_PCDR0; /**< \brief (Pmc Offset: 0x0014) Peripheral Clock Disable Register 0 */ + RoReg PMC_PCSR0; /**< \brief (Pmc Offset: 0x0018) Peripheral Clock Status Register 0 */ + RwReg CKGR_UCKR; /**< \brief (Pmc Offset: 0x001C) UTMI Clock Register */ + RwReg CKGR_MOR; /**< \brief (Pmc Offset: 0x0020) Main Oscillator Register */ + RoReg CKGR_MCFR; /**< \brief (Pmc Offset: 0x0024) Main Clock Frequency Register */ + RwReg CKGR_PLLAR; /**< \brief (Pmc Offset: 0x0028) PLLA Register */ + RoReg Reserved2[1]; + RwReg PMC_MCKR; /**< \brief (Pmc Offset: 0x0030) Master Clock Register */ + RoReg Reserved3[3]; + RwReg PMC_PCK[3]; /**< \brief (Pmc Offset: 0x0040) Programmable Clock 0 Register */ + RoReg Reserved4[5]; + WoReg PMC_IER; /**< \brief (Pmc Offset: 0x0060) Interrupt Enable Register */ + WoReg PMC_IDR; /**< \brief (Pmc Offset: 0x0064) Interrupt Disable Register */ + RoReg PMC_SR; /**< \brief (Pmc Offset: 0x0068) Status Register */ + RoReg PMC_IMR; /**< \brief (Pmc Offset: 0x006C) Interrupt Mask Register */ + RwReg PMC_FSMR; /**< \brief (Pmc Offset: 0x0070) Fast Startup Mode Register */ + RwReg PMC_FSPR; /**< \brief (Pmc Offset: 0x0074) Fast Startup Polarity Register */ + WoReg PMC_FOCR; /**< \brief (Pmc Offset: 0x0078) Fault Output Clear Register */ + RoReg Reserved5[26]; + RwReg PMC_WPMR; /**< \brief (Pmc Offset: 0x00E4) Write Protect Mode Register */ + RoReg PMC_WPSR; /**< \brief (Pmc Offset: 0x00E8) Write Protect Status Register */ +} Pmc; +#endif /* __ASSEMBLY__ */ +/* -------- PMC_SCER : (PMC Offset: 0x0000) System Clock Enable Register -------- */ +#define PMC_SCER_PCK0 (0x1u << 8) /**< \brief (PMC_SCER) Programmable Clock 0 Output Enable */ +#define PMC_SCER_PCK1 (0x1u << 9) /**< \brief (PMC_SCER) Programmable Clock 1 Output Enable */ +#define PMC_SCER_PCK2 (0x1u << 10) /**< \brief (PMC_SCER) Programmable Clock 2 Output Enable */ +/* -------- PMC_SCDR : (PMC Offset: 0x0004) System Clock Disable Register -------- */ +#define PMC_SCDR_PCK0 (0x1u << 8) /**< \brief (PMC_SCDR) Programmable Clock 0 Output Disable */ +#define PMC_SCDR_PCK1 (0x1u << 9) /**< \brief (PMC_SCDR) Programmable Clock 1 Output Disable */ +#define PMC_SCDR_PCK2 (0x1u << 10) /**< \brief (PMC_SCDR) Programmable Clock 2 Output Disable */ +/* -------- PMC_SCSR : (PMC Offset: 0x0008) System Clock Status Register -------- */ +#define PMC_SCSR_PCK0 (0x1u << 8) /**< \brief (PMC_SCSR) Programmable Clock 0 Output Status */ +#define PMC_SCSR_PCK1 (0x1u << 9) /**< \brief (PMC_SCSR) Programmable Clock 1 Output Status */ +#define PMC_SCSR_PCK2 (0x1u << 10) /**< \brief (PMC_SCSR) Programmable Clock 2 Output Status */ +/* -------- PMC_PCER0 : (PMC Offset: 0x0010) Peripheral Clock Enable Register 0 -------- */ +#define PMC_PCER0_PID2 (0x1u << 2) /**< \brief (PMC_PCER0) Peripheral Clock 2 Enable */ +#define PMC_PCER0_PID3 (0x1u << 3) /**< \brief (PMC_PCER0) Peripheral Clock 3 Enable */ +#define PMC_PCER0_PID4 (0x1u << 4) /**< \brief (PMC_PCER0) Peripheral Clock 4 Enable */ +#define PMC_PCER0_PID5 (0x1u << 5) /**< \brief (PMC_PCER0) Peripheral Clock 5 Enable */ +#define PMC_PCER0_PID6 (0x1u << 6) /**< \brief (PMC_PCER0) Peripheral Clock 6 Enable */ +#define PMC_PCER0_PID7 (0x1u << 7) /**< \brief (PMC_PCER0) Peripheral Clock 7 Enable */ +#define PMC_PCER0_PID8 (0x1u << 8) /**< \brief (PMC_PCER0) Peripheral Clock 8 Enable */ +#define PMC_PCER0_PID9 (0x1u << 9) /**< \brief (PMC_PCER0) Peripheral Clock 9 Enable */ +#define PMC_PCER0_PID10 (0x1u << 10) /**< \brief (PMC_PCER0) Peripheral Clock 10 Enable */ +#define PMC_PCER0_PID11 (0x1u << 11) /**< \brief (PMC_PCER0) Peripheral Clock 11 Enable */ +#define PMC_PCER0_PID12 (0x1u << 12) /**< \brief (PMC_PCER0) Peripheral Clock 12 Enable */ +#define PMC_PCER0_PID13 (0x1u << 13) /**< \brief (PMC_PCER0) Peripheral Clock 13 Enable */ +#define PMC_PCER0_PID14 (0x1u << 14) /**< \brief (PMC_PCER0) Peripheral Clock 14 Enable */ +#define PMC_PCER0_PID15 (0x1u << 15) /**< \brief (PMC_PCER0) Peripheral Clock 15 Enable */ +#define PMC_PCER0_PID16 (0x1u << 16) /**< \brief (PMC_PCER0) Peripheral Clock 16 Enable */ +#define PMC_PCER0_PID18 (0x1u << 18) /**< \brief (PMC_PCER0) Peripheral Clock 18 Enable */ +#define PMC_PCER0_PID19 (0x1u << 19) /**< \brief (PMC_PCER0) Peripheral Clock 19 Enable */ +#define PMC_PCER0_PID20 (0x1u << 20) /**< \brief (PMC_PCER0) Peripheral Clock 20 Enable */ +#define PMC_PCER0_PID21 (0x1u << 21) /**< \brief (PMC_PCER0) Peripheral Clock 21 Enable */ +#define PMC_PCER0_PID22 (0x1u << 22) /**< \brief (PMC_PCER0) Peripheral Clock 22 Enable */ +#define PMC_PCER0_PID23 (0x1u << 23) /**< \brief (PMC_PCER0) Peripheral Clock 23 Enable */ +#define PMC_PCER0_PID24 (0x1u << 24) /**< \brief (PMC_PCER0) Peripheral Clock 24 Enable */ +#define PMC_PCER0_PID25 (0x1u << 25) /**< \brief (PMC_PCER0) Peripheral Clock 25 Enable */ +#define PMC_PCER0_PID26 (0x1u << 26) /**< \brief (PMC_PCER0) Peripheral Clock 26 Enable */ +#define PMC_PCER0_PID27 (0x1u << 27) /**< \brief (PMC_PCER0) Peripheral Clock 27 Enable */ +#define PMC_PCER0_PID28 (0x1u << 28) /**< \brief (PMC_PCER0) Peripheral Clock 28 Enable */ +#define PMC_PCER0_PID29 (0x1u << 29) /**< \brief (PMC_PCER0) Peripheral Clock 29 Enable */ +/* -------- PMC_PCDR0 : (PMC Offset: 0x0014) Peripheral Clock Disable Register 0 -------- */ +#define PMC_PCDR0_PID2 (0x1u << 2) /**< \brief (PMC_PCDR0) Peripheral Clock 2 Disable */ +#define PMC_PCDR0_PID3 (0x1u << 3) /**< \brief (PMC_PCDR0) Peripheral Clock 3 Disable */ +#define PMC_PCDR0_PID4 (0x1u << 4) /**< \brief (PMC_PCDR0) Peripheral Clock 4 Disable */ +#define PMC_PCDR0_PID5 (0x1u << 5) /**< \brief (PMC_PCDR0) Peripheral Clock 5 Disable */ +#define PMC_PCDR0_PID6 (0x1u << 6) /**< \brief (PMC_PCDR0) Peripheral Clock 6 Disable */ +#define PMC_PCDR0_PID7 (0x1u << 7) /**< \brief (PMC_PCDR0) Peripheral Clock 7 Disable */ +#define PMC_PCDR0_PID8 (0x1u << 8) /**< \brief (PMC_PCDR0) Peripheral Clock 8 Disable */ +#define PMC_PCDR0_PID9 (0x1u << 9) /**< \brief (PMC_PCDR0) Peripheral Clock 9 Disable */ +#define PMC_PCDR0_PID10 (0x1u << 10) /**< \brief (PMC_PCDR0) Peripheral Clock 10 Disable */ +#define PMC_PCDR0_PID11 (0x1u << 11) /**< \brief (PMC_PCDR0) Peripheral Clock 11 Disable */ +#define PMC_PCDR0_PID12 (0x1u << 12) /**< \brief (PMC_PCDR0) Peripheral Clock 12 Disable */ +#define PMC_PCDR0_PID13 (0x1u << 13) /**< \brief (PMC_PCDR0) Peripheral Clock 13 Disable */ +#define PMC_PCDR0_PID14 (0x1u << 14) /**< \brief (PMC_PCDR0) Peripheral Clock 14 Disable */ +#define PMC_PCDR0_PID15 (0x1u << 15) /**< \brief (PMC_PCDR0) Peripheral Clock 15 Disable */ +#define PMC_PCDR0_PID16 (0x1u << 16) /**< \brief (PMC_PCDR0) Peripheral Clock 16 Disable */ +#define PMC_PCDR0_PID18 (0x1u << 18) /**< \brief (PMC_PCDR0) Peripheral Clock 18 Disable */ +#define PMC_PCDR0_PID19 (0x1u << 19) /**< \brief (PMC_PCDR0) Peripheral Clock 19 Disable */ +#define PMC_PCDR0_PID20 (0x1u << 20) /**< \brief (PMC_PCDR0) Peripheral Clock 20 Disable */ +#define PMC_PCDR0_PID21 (0x1u << 21) /**< \brief (PMC_PCDR0) Peripheral Clock 21 Disable */ +#define PMC_PCDR0_PID22 (0x1u << 22) /**< \brief (PMC_PCDR0) Peripheral Clock 22 Disable */ +#define PMC_PCDR0_PID23 (0x1u << 23) /**< \brief (PMC_PCDR0) Peripheral Clock 23 Disable */ +#define PMC_PCDR0_PID24 (0x1u << 24) /**< \brief (PMC_PCDR0) Peripheral Clock 24 Disable */ +#define PMC_PCDR0_PID25 (0x1u << 25) /**< \brief (PMC_PCDR0) Peripheral Clock 25 Disable */ +#define PMC_PCDR0_PID26 (0x1u << 26) /**< \brief (PMC_PCDR0) Peripheral Clock 26 Disable */ +#define PMC_PCDR0_PID27 (0x1u << 27) /**< \brief (PMC_PCDR0) Peripheral Clock 27 Disable */ +#define PMC_PCDR0_PID28 (0x1u << 28) /**< \brief (PMC_PCDR0) Peripheral Clock 28 Disable */ +#define PMC_PCDR0_PID29 (0x1u << 29) /**< \brief (PMC_PCDR0) Peripheral Clock 29 Disable */ +/* -------- PMC_PCSR0 : (PMC Offset: 0x0018) Peripheral Clock Status Register 0 -------- */ +#define PMC_PCSR0_PID2 (0x1u << 2) /**< \brief (PMC_PCSR0) Peripheral Clock 2 Status */ +#define PMC_PCSR0_PID3 (0x1u << 3) /**< \brief (PMC_PCSR0) Peripheral Clock 3 Status */ +#define PMC_PCSR0_PID4 (0x1u << 4) /**< \brief (PMC_PCSR0) Peripheral Clock 4 Status */ +#define PMC_PCSR0_PID5 (0x1u << 5) /**< \brief (PMC_PCSR0) Peripheral Clock 5 Status */ +#define PMC_PCSR0_PID6 (0x1u << 6) /**< \brief (PMC_PCSR0) Peripheral Clock 6 Status */ +#define PMC_PCSR0_PID7 (0x1u << 7) /**< \brief (PMC_PCSR0) Peripheral Clock 7 Status */ +#define PMC_PCSR0_PID8 (0x1u << 8) /**< \brief (PMC_PCSR0) Peripheral Clock 8 Status */ +#define PMC_PCSR0_PID9 (0x1u << 9) /**< \brief (PMC_PCSR0) Peripheral Clock 9 Status */ +#define PMC_PCSR0_PID10 (0x1u << 10) /**< \brief (PMC_PCSR0) Peripheral Clock 10 Status */ +#define PMC_PCSR0_PID11 (0x1u << 11) /**< \brief (PMC_PCSR0) Peripheral Clock 11 Status */ +#define PMC_PCSR0_PID12 (0x1u << 12) /**< \brief (PMC_PCSR0) Peripheral Clock 12 Status */ +#define PMC_PCSR0_PID13 (0x1u << 13) /**< \brief (PMC_PCSR0) Peripheral Clock 13 Status */ +#define PMC_PCSR0_PID14 (0x1u << 14) /**< \brief (PMC_PCSR0) Peripheral Clock 14 Status */ +#define PMC_PCSR0_PID15 (0x1u << 15) /**< \brief (PMC_PCSR0) Peripheral Clock 15 Status */ +#define PMC_PCSR0_PID16 (0x1u << 16) /**< \brief (PMC_PCSR0) Peripheral Clock 16 Status */ +#define PMC_PCSR0_PID18 (0x1u << 18) /**< \brief (PMC_PCSR0) Peripheral Clock 18 Status */ +#define PMC_PCSR0_PID19 (0x1u << 19) /**< \brief (PMC_PCSR0) Peripheral Clock 19 Status */ +#define PMC_PCSR0_PID20 (0x1u << 20) /**< \brief (PMC_PCSR0) Peripheral Clock 20 Status */ +#define PMC_PCSR0_PID21 (0x1u << 21) /**< \brief (PMC_PCSR0) Peripheral Clock 21 Status */ +#define PMC_PCSR0_PID22 (0x1u << 22) /**< \brief (PMC_PCSR0) Peripheral Clock 22 Status */ +#define PMC_PCSR0_PID23 (0x1u << 23) /**< \brief (PMC_PCSR0) Peripheral Clock 23 Status */ +#define PMC_PCSR0_PID24 (0x1u << 24) /**< \brief (PMC_PCSR0) Peripheral Clock 24 Status */ +#define PMC_PCSR0_PID25 (0x1u << 25) /**< \brief (PMC_PCSR0) Peripheral Clock 25 Status */ +#define PMC_PCSR0_PID26 (0x1u << 26) /**< \brief (PMC_PCSR0) Peripheral Clock 26 Status */ +#define PMC_PCSR0_PID27 (0x1u << 27) /**< \brief (PMC_PCSR0) Peripheral Clock 27 Status */ +#define PMC_PCSR0_PID28 (0x1u << 28) /**< \brief (PMC_PCSR0) Peripheral Clock 28 Status */ +#define PMC_PCSR0_PID29 (0x1u << 29) /**< \brief (PMC_PCSR0) Peripheral Clock 29 Status */ +/* -------- CKGR_UCKR : (PMC Offset: 0x001C) UTMI Clock Register -------- */ +#define CKGR_UCKR_UPLLEN (0x1u << 16) /**< \brief (CKGR_UCKR) UTMI PLL Enable */ +#define CKGR_UCKR_UPLLCOUNT_Pos 20 +#define CKGR_UCKR_UPLLCOUNT_Msk (0xfu << CKGR_UCKR_UPLLCOUNT_Pos) /**< \brief (CKGR_UCKR) UTMI PLL Start-up Time */ +#define CKGR_UCKR_UPLLCOUNT(value) ((CKGR_UCKR_UPLLCOUNT_Msk & ((value) << CKGR_UCKR_UPLLCOUNT_Pos))) +/* -------- CKGR_MOR : (PMC Offset: 0x0020) Main Oscillator Register -------- */ +#define CKGR_MOR_MOSCXTEN (0x1u << 0) /**< \brief (CKGR_MOR) Main Crystal Oscillator Enable */ +#define CKGR_MOR_MOSCXTBY (0x1u << 1) /**< \brief (CKGR_MOR) Main Crystal Oscillator Bypass */ +#define CKGR_MOR_MOSCRCEN (0x1u << 3) /**< \brief (CKGR_MOR) Main On-Chip RC Oscillator Enable */ +#define CKGR_MOR_MOSCRCF_Pos 4 +#define CKGR_MOR_MOSCRCF_Msk (0x7u << CKGR_MOR_MOSCRCF_Pos) /**< \brief (CKGR_MOR) Main On-Chip RC Oscillator Frequency Selection */ +#define CKGR_MOR_MOSCRCF_4_MHz (0x0u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 4 MHz (default) */ +#define CKGR_MOR_MOSCRCF_8_MHz (0x1u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 8 MHz */ +#define CKGR_MOR_MOSCRCF_12_MHz (0x2u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 12 MHz */ +#define CKGR_MOR_MOSCRCF(value) ((CKGR_MOR_MOSCRCF_Msk & ((value) << CKGR_MOR_MOSCRCF_Pos))) +#define CKGR_MOR_MOSCXTST_Pos 8 +#define CKGR_MOR_MOSCXTST_Msk (0xffu << CKGR_MOR_MOSCXTST_Pos) /**< \brief (CKGR_MOR) Main Crystal Oscillator Start-up Time */ +#define CKGR_MOR_MOSCXTST(value) ((CKGR_MOR_MOSCXTST_Msk & ((value) << CKGR_MOR_MOSCXTST_Pos))) +#define CKGR_MOR_KEY_Pos 16 +#define CKGR_MOR_KEY_Msk (0xffu << CKGR_MOR_KEY_Pos) /**< \brief (CKGR_MOR) Password */ +#define CKGR_MOR_KEY(value) ((CKGR_MOR_KEY_Msk & ((value) << CKGR_MOR_KEY_Pos))) +#define CKGR_MOR_MOSCSEL (0x1u << 24) /**< \brief (CKGR_MOR) Main Oscillator Selection */ +#define CKGR_MOR_CFDEN (0x1u << 25) /**< \brief (CKGR_MOR) Clock Failure Detector Enable */ +/* -------- CKGR_MCFR : (PMC Offset: 0x0024) Main Clock Frequency Register -------- */ +#define CKGR_MCFR_MAINF_Pos 0 +#define CKGR_MCFR_MAINF_Msk (0xffffu << CKGR_MCFR_MAINF_Pos) /**< \brief (CKGR_MCFR) Main Clock Frequency */ +#define CKGR_MCFR_MAINFRDY (0x1u << 16) /**< \brief (CKGR_MCFR) Main Clock Ready */ +/* -------- CKGR_PLLAR : (PMC Offset: 0x0028) PLLA Register -------- */ +#define CKGR_PLLAR_DIVA_Pos 0 +#define CKGR_PLLAR_DIVA_Msk (0xffu << CKGR_PLLAR_DIVA_Pos) /**< \brief (CKGR_PLLAR) Divider */ +#define CKGR_PLLAR_DIVA(value) ((CKGR_PLLAR_DIVA_Msk & ((value) << CKGR_PLLAR_DIVA_Pos))) +#define CKGR_PLLAR_PLLACOUNT_Pos 8 +#define CKGR_PLLAR_PLLACOUNT_Msk (0x3fu << CKGR_PLLAR_PLLACOUNT_Pos) /**< \brief (CKGR_PLLAR) PLLA Counter */ +#define CKGR_PLLAR_PLLACOUNT(value) ((CKGR_PLLAR_PLLACOUNT_Msk & ((value) << CKGR_PLLAR_PLLACOUNT_Pos))) +#define CKGR_PLLAR_MULA_Pos 16 +#define CKGR_PLLAR_MULA_Msk (0x7ffu << CKGR_PLLAR_MULA_Pos) /**< \brief (CKGR_PLLAR) PLLA Multiplier */ +#define CKGR_PLLAR_MULA(value) ((CKGR_PLLAR_MULA_Msk & ((value) << CKGR_PLLAR_MULA_Pos))) +#define CKGR_PLLAR_ONE (0x1u << 29) /**< \brief (CKGR_PLLAR) Must Be Set to 1 */ +/* -------- PMC_MCKR : (PMC Offset: 0x0030) Master Clock Register -------- */ +#define PMC_MCKR_CSS_Pos 0 +#define PMC_MCKR_CSS_Msk (0x3u << PMC_MCKR_CSS_Pos) /**< \brief (PMC_MCKR) Master Clock Source Selection */ +#define PMC_MCKR_CSS_SLOW_CLK (0x0u << 0) /**< \brief (PMC_MCKR) Slow Clock is selected */ +#define PMC_MCKR_CSS_MAIN_CLK (0x1u << 0) /**< \brief (PMC_MCKR) Main Clock is selected */ +#define PMC_MCKR_CSS_PLLA_CLK (0x2u << 0) /**< \brief (PMC_MCKR) PLLA Clock is selected */ +#define PMC_MCKR_CSS_UPLL_CLK (0x3u << 0) /**< \brief (PMC_MCKR) UPLLClock is selected */ +#define PMC_MCKR_CSS(value) ((PMC_MCKR_CSS_Msk & ((value) << PMC_MCKR_CSS_Pos))) +#define PMC_MCKR_PRES_Pos 4 +#define PMC_MCKR_PRES_Msk (0x7u << PMC_MCKR_PRES_Pos) /**< \brief (PMC_MCKR) Processor Clock Prescaler */ +#define PMC_MCKR_PRES_CLK_1 (0x0u << 4) /**< \brief (PMC_MCKR) Selected clock */ +#define PMC_MCKR_PRES_CLK_2 (0x1u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 2 */ +#define PMC_MCKR_PRES_CLK_4 (0x2u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 4 */ +#define PMC_MCKR_PRES_CLK_8 (0x3u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 8 */ +#define PMC_MCKR_PRES_CLK_16 (0x4u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 16 */ +#define PMC_MCKR_PRES_CLK_32 (0x5u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 32 */ +#define PMC_MCKR_PRES_CLK_64 (0x6u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 64 */ +#define PMC_MCKR_PRES_CLK_3 (0x7u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 3 */ +#define PMC_MCKR_PLLADIV2 (0x1u << 12) /**< \brief (PMC_MCKR) PLLA Divisor by 2 */ +#define PMC_MCKR_UPLLDIV2 (0x1u << 13) /**< \brief (PMC_MCKR) UPLL Divisor by 2 */ +/* -------- PMC_PCK[3] : (PMC Offset: 0x0040) Programmable Clock 0 Register -------- */ +#define PMC_PCK_CSS_Pos 0 +#define PMC_PCK_CSS_Msk (0x7u << PMC_PCK_CSS_Pos) /**< \brief (PMC_PCK[3]) Master Clock Source Selection */ +#define PMC_PCK_CSS_SLOW_CLK (0x0u << 0) /**< \brief (PMC_PCK[3]) Slow Clock is selected */ +#define PMC_PCK_CSS_MAIN_CLK (0x1u << 0) /**< \brief (PMC_PCK[3]) Main Clock is selected */ +#define PMC_PCK_CSS_PLLA_CLK (0x2u << 0) /**< \brief (PMC_PCK[3]) PLLA Clock is selected */ +#define PMC_PCK_CSS_UPLL_CLK (0x3u << 0) /**< \brief (PMC_PCK[3]) UPLL Clock is selected */ +#define PMC_PCK_CSS_MCK (0x4u << 0) /**< \brief (PMC_PCK[3]) Master Clock is selected */ +#define PMC_PCK_PRES_Pos 4 +#define PMC_PCK_PRES_Msk (0x7u << PMC_PCK_PRES_Pos) /**< \brief (PMC_PCK[3]) Programmable Clock Prescaler */ +#define PMC_PCK_PRES(value) ((PMC_PCK_PRES_Msk & ((value) << PMC_PCK_PRES_Pos))) +#define PMC_PCK_PRES_CLK_1 (0x0u << 4) /**< \brief (PMC_PCK[3]) Selected clock */ +#define PMC_PCK_PRES_CLK_2 (0x1u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 2 */ +#define PMC_PCK_PRES_CLK_4 (0x2u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 4 */ +#define PMC_PCK_PRES_CLK_8 (0x3u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 8 */ +#define PMC_PCK_PRES_CLK_16 (0x4u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 16 */ +#define PMC_PCK_PRES_CLK_32 (0x5u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 32 */ +#define PMC_PCK_PRES_CLK_64 (0x6u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 64 */ +/* -------- PMC_IER : (PMC Offset: 0x0060) Interrupt Enable Register -------- */ +#define PMC_IER_MOSCXTS (0x1u << 0) /**< \brief (PMC_IER) Main Crystal Oscillator Status Interrupt Enable */ +#define PMC_IER_LOCKA (0x1u << 1) /**< \brief (PMC_IER) PLLA Lock Interrupt Enable */ +#define PMC_IER_MCKRDY (0x1u << 3) /**< \brief (PMC_IER) Master Clock Ready Interrupt Enable */ +#define PMC_IER_LOCKU (0x1u << 6) /**< \brief (PMC_IER) UTMI PLL Lock Interrupt Enable */ +#define PMC_IER_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IER) Programmable Clock Ready 0 Interrupt Enable */ +#define PMC_IER_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IER) Programmable Clock Ready 1 Interrupt Enable */ +#define PMC_IER_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IER) Programmable Clock Ready 2 Interrupt Enable */ +#define PMC_IER_MOSCSELS (0x1u << 16) /**< \brief (PMC_IER) Main Oscillator Selection Status Interrupt Enable */ +#define PMC_IER_MOSCRCS (0x1u << 17) /**< \brief (PMC_IER) Main On-Chip RC Status Interrupt Enable */ +#define PMC_IER_CFDEV (0x1u << 18) /**< \brief (PMC_IER) Clock Failure Detector Event Interrupt Enable */ +/* -------- PMC_IDR : (PMC Offset: 0x0064) Interrupt Disable Register -------- */ +#define PMC_IDR_MOSCXTS (0x1u << 0) /**< \brief (PMC_IDR) Main Crystal Oscillator Status Interrupt Disable */ +#define PMC_IDR_LOCKA (0x1u << 1) /**< \brief (PMC_IDR) PLLA Lock Interrupt Disable */ +#define PMC_IDR_MCKRDY (0x1u << 3) /**< \brief (PMC_IDR) Master Clock Ready Interrupt Disable */ +#define PMC_IDR_LOCKU (0x1u << 6) /**< \brief (PMC_IDR) UTMI PLL Lock Interrupt Disable */ +#define PMC_IDR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IDR) Programmable Clock Ready 0 Interrupt Disable */ +#define PMC_IDR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IDR) Programmable Clock Ready 1 Interrupt Disable */ +#define PMC_IDR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IDR) Programmable Clock Ready 2 Interrupt Disable */ +#define PMC_IDR_MOSCSELS (0x1u << 16) /**< \brief (PMC_IDR) Main Oscillator Selection Status Interrupt Disable */ +#define PMC_IDR_MOSCRCS (0x1u << 17) /**< \brief (PMC_IDR) Main On-Chip RC Status Interrupt Disable */ +#define PMC_IDR_CFDEV (0x1u << 18) /**< \brief (PMC_IDR) Clock Failure Detector Event Interrupt Disable */ +/* -------- PMC_SR : (PMC Offset: 0x0068) Status Register -------- */ +#define PMC_SR_MOSCXTS (0x1u << 0) /**< \brief (PMC_SR) Main XTAL Oscillator Status */ +#define PMC_SR_LOCKA (0x1u << 1) /**< \brief (PMC_SR) PLLA Lock Status */ +#define PMC_SR_MCKRDY (0x1u << 3) /**< \brief (PMC_SR) Master Clock Status */ +#define PMC_SR_LOCKU (0x1u << 6) /**< \brief (PMC_SR) UTMI PLL Lock Status */ +#define PMC_SR_OSCSELS (0x1u << 7) /**< \brief (PMC_SR) Slow Clock Oscillator Selection */ +#define PMC_SR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_MOSCSELS (0x1u << 16) /**< \brief (PMC_SR) Main Oscillator Selection Status */ +#define PMC_SR_MOSCRCS (0x1u << 17) /**< \brief (PMC_SR) Main On-Chip RC Oscillator Status */ +#define PMC_SR_CFDEV (0x1u << 18) /**< \brief (PMC_SR) Clock Failure Detector Event */ +#define PMC_SR_CFDS (0x1u << 19) /**< \brief (PMC_SR) Clock Failure Detector Status */ +#define PMC_SR_FOS (0x1u << 20) /**< \brief (PMC_SR) Clock Failure Detector Fault Output Status */ +/* -------- PMC_IMR : (PMC Offset: 0x006C) Interrupt Mask Register -------- */ +#define PMC_IMR_MOSCXTS (0x1u << 0) /**< \brief (PMC_IMR) Main Crystal Oscillator Status Interrupt Mask */ +#define PMC_IMR_LOCKA (0x1u << 1) /**< \brief (PMC_IMR) PLLA Lock Interrupt Mask */ +#define PMC_IMR_MCKRDY (0x1u << 3) /**< \brief (PMC_IMR) Master Clock Ready Interrupt Mask */ +#define PMC_IMR_LOCKU (0x1u << 6) /**< \brief (PMC_IMR) UTMI PLL Lock Interrupt Mask */ +#define PMC_IMR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IMR) Programmable Clock Ready 0 Interrupt Mask */ +#define PMC_IMR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IMR) Programmable Clock Ready 1 Interrupt Mask */ +#define PMC_IMR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IMR) Programmable Clock Ready 2 Interrupt Mask */ +#define PMC_IMR_MOSCSELS (0x1u << 16) /**< \brief (PMC_IMR) Main Oscillator Selection Status Interrupt Mask */ +#define PMC_IMR_MOSCRCS (0x1u << 17) /**< \brief (PMC_IMR) Main On-Chip RC Status Interrupt Mask */ +#define PMC_IMR_CFDEV (0x1u << 18) /**< \brief (PMC_IMR) Clock Failure Detector Event Interrupt Mask */ +/* -------- PMC_FSMR : (PMC Offset: 0x0070) Fast Startup Mode Register -------- */ +#define PMC_FSMR_FSTT0 (0x1u << 0) /**< \brief (PMC_FSMR) Fast Startup Input Enable 0 */ +#define PMC_FSMR_FSTT1 (0x1u << 1) /**< \brief (PMC_FSMR) Fast Startup Input Enable 1 */ +#define PMC_FSMR_FSTT2 (0x1u << 2) /**< \brief (PMC_FSMR) Fast Startup Input Enable 2 */ +#define PMC_FSMR_FSTT3 (0x1u << 3) /**< \brief (PMC_FSMR) Fast Startup Input Enable 3 */ +#define PMC_FSMR_FSTT4 (0x1u << 4) /**< \brief (PMC_FSMR) Fast Startup Input Enable 4 */ +#define PMC_FSMR_FSTT5 (0x1u << 5) /**< \brief (PMC_FSMR) Fast Startup Input Enable 5 */ +#define PMC_FSMR_FSTT6 (0x1u << 6) /**< \brief (PMC_FSMR) Fast Startup Input Enable 6 */ +#define PMC_FSMR_FSTT7 (0x1u << 7) /**< \brief (PMC_FSMR) Fast Startup Input Enable 7 */ +#define PMC_FSMR_FSTT8 (0x1u << 8) /**< \brief (PMC_FSMR) Fast Startup Input Enable 8 */ +#define PMC_FSMR_FSTT9 (0x1u << 9) /**< \brief (PMC_FSMR) Fast Startup Input Enable 9 */ +#define PMC_FSMR_FSTT10 (0x1u << 10) /**< \brief (PMC_FSMR) Fast Startup Input Enable 10 */ +#define PMC_FSMR_FSTT11 (0x1u << 11) /**< \brief (PMC_FSMR) Fast Startup Input Enable 11 */ +#define PMC_FSMR_FSTT12 (0x1u << 12) /**< \brief (PMC_FSMR) Fast Startup Input Enable 12 */ +#define PMC_FSMR_FSTT13 (0x1u << 13) /**< \brief (PMC_FSMR) Fast Startup Input Enable 13 */ +#define PMC_FSMR_FSTT14 (0x1u << 14) /**< \brief (PMC_FSMR) Fast Startup Input Enable 14 */ +#define PMC_FSMR_FSTT15 (0x1u << 15) /**< \brief (PMC_FSMR) Fast Startup Input Enable 15 */ +#define PMC_FSMR_RTTAL (0x1u << 16) /**< \brief (PMC_FSMR) RTT Alarm Enable */ +#define PMC_FSMR_RTCAL (0x1u << 17) /**< \brief (PMC_FSMR) RTC Alarm Enable */ +#define PMC_FSMR_USBAL (0x1u << 18) /**< \brief (PMC_FSMR) USB Alarm Enable */ +#define PMC_FSMR_LPM (0x1u << 20) /**< \brief (PMC_FSMR) Low Power Mode */ +/* -------- PMC_FSPR : (PMC Offset: 0x0074) Fast Startup Polarity Register -------- */ +#define PMC_FSPR_FSTP0 (0x1u << 0) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP1 (0x1u << 1) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP2 (0x1u << 2) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP3 (0x1u << 3) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP4 (0x1u << 4) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP5 (0x1u << 5) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP6 (0x1u << 6) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP7 (0x1u << 7) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP8 (0x1u << 8) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP9 (0x1u << 9) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP10 (0x1u << 10) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP11 (0x1u << 11) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP12 (0x1u << 12) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP13 (0x1u << 13) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP14 (0x1u << 14) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP15 (0x1u << 15) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +/* -------- PMC_FOCR : (PMC Offset: 0x0078) Fault Output Clear Register -------- */ +#define PMC_FOCR_FOCLR (0x1u << 0) /**< \brief (PMC_FOCR) Fault Output Clear */ +/* -------- PMC_WPMR : (PMC Offset: 0x00E4) Write Protect Mode Register -------- */ +#define PMC_WPMR_WPEN (0x1u << 0) /**< \brief (PMC_WPMR) Write Protect Enable */ +#define PMC_WPMR_WPKEY_Pos 8 +#define PMC_WPMR_WPKEY_Msk (0xffffffu << PMC_WPMR_WPKEY_Pos) /**< \brief (PMC_WPMR) Write Protect KEY */ +#define PMC_WPMR_WPKEY(value) ((PMC_WPMR_WPKEY_Msk & ((value) << PMC_WPMR_WPKEY_Pos))) +/* -------- PMC_WPSR : (PMC Offset: 0x00E8) Write Protect Status Register -------- */ +#define PMC_WPSR_WPVS (0x1u << 0) /**< \brief (PMC_WPSR) Write Protect Violation Status */ +#define PMC_WPSR_WPVSRC_Pos 8 +#define PMC_WPSR_WPVSRC_Msk (0xffffu << PMC_WPSR_WPVSRC_Pos) /**< \brief (PMC_WPSR) Write Protect Violation Source */ + +/*@}*/ + + +#endif /* _SAM3U_PMC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_pwm.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_pwm.h new file mode 100644 index 000000000..887bb5dff --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_pwm.h @@ -0,0 +1,557 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_PWM_COMPONENT_ +#define _SAM3U_PWM_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Pulse Width Modulation Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3U_PWM Pulse Width Modulation Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief PwmCh_num hardware registers */ +typedef struct { + RwReg PWM_CMR; /**< \brief (PwmCh_num Offset: 0x0) PWM Channel Mode Register */ + RwReg PWM_CDTY; /**< \brief (PwmCh_num Offset: 0x4) PWM Channel Duty Cycle Register */ + RwReg PWM_CDTYUPD; /**< \brief (PwmCh_num Offset: 0x8) PWM Channel Duty Cycle Update Register */ + RwReg PWM_CPRD; /**< \brief (PwmCh_num Offset: 0xC) PWM Channel Period Register */ + RwReg PWM_CPRDUPD; /**< \brief (PwmCh_num Offset: 0x10) PWM Channel Period Update Register */ + RwReg PWM_CCNT; /**< \brief (PwmCh_num Offset: 0x14) PWM Channel Counter Register */ + RwReg PWM_DT; /**< \brief (PwmCh_num Offset: 0x18) PWM Channel Dead Time Register */ + RwReg PWM_DTUPD; /**< \brief (PwmCh_num Offset: 0x1C) PWM Channel Dead Time Update Register */ +} PwmCh_num; +/** \brief PwmCmp hardware registers */ +typedef struct { + RwReg PWM_CMPV; /**< \brief (PwmCmp Offset: 0x0) PWM Comparison 0 Value Register */ + RwReg PWM_CMPVUPD; /**< \brief (PwmCmp Offset: 0x4) PWM Comparison 0 Value Update Register */ + RwReg PWM_CMPM; /**< \brief (PwmCmp Offset: 0x8) PWM Comparison 0 Mode Register */ + RwReg PWM_CMPMUPD; /**< \brief (PwmCmp Offset: 0xC) PWM Comparison 0 Mode Update Register */ +} PwmCmp; +/** \brief Pwm hardware registers */ +#define PWMCMP_NUMBER 8 +#define PWMCH_NUM_NUMBER 4 +typedef struct { + RwReg PWM_CLK; /**< \brief (Pwm Offset: 0x00) PWM Clock Register */ + WoReg PWM_ENA; /**< \brief (Pwm Offset: 0x04) PWM Enable Register */ + WoReg PWM_DIS; /**< \brief (Pwm Offset: 0x08) PWM Disable Register */ + RoReg PWM_SR; /**< \brief (Pwm Offset: 0x0C) PWM Status Register */ + WoReg PWM_IER1; /**< \brief (Pwm Offset: 0x10) PWM Interrupt Enable Register 1 */ + WoReg PWM_IDR1; /**< \brief (Pwm Offset: 0x14) PWM Interrupt Disable Register 1 */ + RoReg PWM_IMR1; /**< \brief (Pwm Offset: 0x18) PWM Interrupt Mask Register 1 */ + RoReg PWM_ISR1; /**< \brief (Pwm Offset: 0x1C) PWM Interrupt Status Register 1 */ + RwReg PWM_SCM; /**< \brief (Pwm Offset: 0x20) PWM Sync Channels Mode Register */ + RoReg Reserved1[1]; + RwReg PWM_SCUC; /**< \brief (Pwm Offset: 0x28) PWM Sync Channels Update Control Register */ + RwReg PWM_SCUP; /**< \brief (Pwm Offset: 0x2C) PWM Sync Channels Update Period Register */ + WoReg PWM_SCUPUPD; /**< \brief (Pwm Offset: 0x30) PWM Sync Channels Update Period Update Register */ + WoReg PWM_IER2; /**< \brief (Pwm Offset: 0x34) PWM Interrupt Enable Register 2 */ + WoReg PWM_IDR2; /**< \brief (Pwm Offset: 0x38) PWM Interrupt Disable Register 2 */ + RoReg PWM_IMR2; /**< \brief (Pwm Offset: 0x3C) PWM Interrupt Mask Register 2 */ + RoReg PWM_ISR2; /**< \brief (Pwm Offset: 0x40) PWM Interrupt Status Register 2 */ + RwReg PWM_OOV; /**< \brief (Pwm Offset: 0x44) PWM Output Override Value Register */ + RwReg PWM_OS; /**< \brief (Pwm Offset: 0x48) PWM Output Selection Register */ + WoReg PWM_OSS; /**< \brief (Pwm Offset: 0x4C) PWM Output Selection Set Register */ + WoReg PWM_OSC; /**< \brief (Pwm Offset: 0x50) PWM Output Selection Clear Register */ + WoReg PWM_OSSUPD; /**< \brief (Pwm Offset: 0x54) PWM Output Selection Set Update Register */ + WoReg PWM_OSCUPD; /**< \brief (Pwm Offset: 0x58) PWM Output Selection Clear Update Register */ + RwReg PWM_FMR; /**< \brief (Pwm Offset: 0x5C) PWM Fault Mode Register */ + RoReg PWM_FSR; /**< \brief (Pwm Offset: 0x60) PWM Fault Status Register */ + WoReg PWM_FCR; /**< \brief (Pwm Offset: 0x64) PWM Fault Clear Register */ + RwReg PWM_FPV; /**< \brief (Pwm Offset: 0x68) PWM Fault Protection Value Register */ + RwReg PWM_FPE; /**< \brief (Pwm Offset: 0x6C) PWM Fault Protection Enable Register */ + RoReg Reserved2[3]; + RwReg PWM_ELMR[2]; /**< \brief (Pwm Offset: 0x7C) PWM Event Line 0 Mode Register */ + RoReg Reserved3[24]; + WoReg PWM_WPCR; /**< \brief (Pwm Offset: 0xE4) PWM Write Protect Control Register */ + RoReg PWM_WPSR; /**< \brief (Pwm Offset: 0xE8) PWM Write Protect Status Register */ + RoReg Reserved4[5]; + RwReg PWM_RPR; /**< \brief (Pwm Offset: 0x100) Receive Pointer Register */ + RwReg PWM_RCR; /**< \brief (Pwm Offset: 0x104) Receive Counter Register */ + RwReg PWM_TPR; /**< \brief (Pwm Offset: 0x108) Transmit Pointer Register */ + RwReg PWM_TCR; /**< \brief (Pwm Offset: 0x10C) Transmit Counter Register */ + RwReg PWM_RNPR; /**< \brief (Pwm Offset: 0x110) Receive Next Pointer Register */ + RwReg PWM_RNCR; /**< \brief (Pwm Offset: 0x114) Receive Next Counter Register */ + RwReg PWM_TNPR; /**< \brief (Pwm Offset: 0x118) Transmit Next Pointer Register */ + RwReg PWM_TNCR; /**< \brief (Pwm Offset: 0x11C) Transmit Next Counter Register */ + WoReg PWM_PTCR; /**< \brief (Pwm Offset: 0x120) Transfer Control Register */ + RoReg PWM_PTSR; /**< \brief (Pwm Offset: 0x124) Transfer Status Register */ + RoReg Reserved5[2]; + PwmCmp PWM_CMP[PWMCMP_NUMBER]; /**< \brief (Pwm Offset: 0x130) 0 .. 7 */ + RoReg Reserved6[20]; + PwmCh_num PWM_CH_NUM[PWMCH_NUM_NUMBER]; /**< \brief (Pwm Offset: 0x200) ch_num = 0 .. 3 */ +} Pwm; +#endif /* __ASSEMBLY__ */ +/* -------- PWM_CLK : (PWM Offset: 0x00) PWM Clock Register -------- */ +#define PWM_CLK_DIVA_Pos 0 +#define PWM_CLK_DIVA_Msk (0xffu << PWM_CLK_DIVA_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Divide Factor */ +#define PWM_CLK_DIVA(value) ((PWM_CLK_DIVA_Msk & ((value) << PWM_CLK_DIVA_Pos))) +#define PWM_CLK_PREA_Pos 8 +#define PWM_CLK_PREA_Msk (0xfu << PWM_CLK_PREA_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Source Clock Selection */ +#define PWM_CLK_PREA(value) ((PWM_CLK_PREA_Msk & ((value) << PWM_CLK_PREA_Pos))) +#define PWM_CLK_DIVB_Pos 16 +#define PWM_CLK_DIVB_Msk (0xffu << PWM_CLK_DIVB_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Divide Factor */ +#define PWM_CLK_DIVB(value) ((PWM_CLK_DIVB_Msk & ((value) << PWM_CLK_DIVB_Pos))) +#define PWM_CLK_PREB_Pos 24 +#define PWM_CLK_PREB_Msk (0xfu << PWM_CLK_PREB_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Source Clock Selection */ +#define PWM_CLK_PREB(value) ((PWM_CLK_PREB_Msk & ((value) << PWM_CLK_PREB_Pos))) +/* -------- PWM_ENA : (PWM Offset: 0x04) PWM Enable Register -------- */ +#define PWM_ENA_CHID0 (0x1u << 0) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID1 (0x1u << 1) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID2 (0x1u << 2) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID3 (0x1u << 3) /**< \brief (PWM_ENA) Channel ID */ +/* -------- PWM_DIS : (PWM Offset: 0x08) PWM Disable Register -------- */ +#define PWM_DIS_CHID0 (0x1u << 0) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID1 (0x1u << 1) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID2 (0x1u << 2) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID3 (0x1u << 3) /**< \brief (PWM_DIS) Channel ID */ +/* -------- PWM_SR : (PWM Offset: 0x0C) PWM Status Register -------- */ +#define PWM_SR_CHID0 (0x1u << 0) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID1 (0x1u << 1) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID2 (0x1u << 2) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID3 (0x1u << 3) /**< \brief (PWM_SR) Channel ID */ +/* -------- PWM_IER1 : (PWM Offset: 0x10) PWM Interrupt Enable Register 1 -------- */ +#define PWM_IER1_CHID0 (0x1u << 0) /**< \brief (PWM_IER1) Counter Event on Channel 0 Interrupt Enable */ +#define PWM_IER1_CHID1 (0x1u << 1) /**< \brief (PWM_IER1) Counter Event on Channel 1 Interrupt Enable */ +#define PWM_IER1_CHID2 (0x1u << 2) /**< \brief (PWM_IER1) Counter Event on Channel 2 Interrupt Enable */ +#define PWM_IER1_CHID3 (0x1u << 3) /**< \brief (PWM_IER1) Counter Event on Channel 3 Interrupt Enable */ +#define PWM_IER1_FCHID0 (0x1u << 16) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 0 Interrupt Enable */ +#define PWM_IER1_FCHID1 (0x1u << 17) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 1 Interrupt Enable */ +#define PWM_IER1_FCHID2 (0x1u << 18) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 2 Interrupt Enable */ +#define PWM_IER1_FCHID3 (0x1u << 19) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 3 Interrupt Enable */ +/* -------- PWM_IDR1 : (PWM Offset: 0x14) PWM Interrupt Disable Register 1 -------- */ +#define PWM_IDR1_CHID0 (0x1u << 0) /**< \brief (PWM_IDR1) Counter Event on Channel 0 Interrupt Disable */ +#define PWM_IDR1_CHID1 (0x1u << 1) /**< \brief (PWM_IDR1) Counter Event on Channel 1 Interrupt Disable */ +#define PWM_IDR1_CHID2 (0x1u << 2) /**< \brief (PWM_IDR1) Counter Event on Channel 2 Interrupt Disable */ +#define PWM_IDR1_CHID3 (0x1u << 3) /**< \brief (PWM_IDR1) Counter Event on Channel 3 Interrupt Disable */ +#define PWM_IDR1_FCHID0 (0x1u << 16) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 0 Interrupt Disable */ +#define PWM_IDR1_FCHID1 (0x1u << 17) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 1 Interrupt Disable */ +#define PWM_IDR1_FCHID2 (0x1u << 18) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 2 Interrupt Disable */ +#define PWM_IDR1_FCHID3 (0x1u << 19) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 3 Interrupt Disable */ +/* -------- PWM_IMR1 : (PWM Offset: 0x18) PWM Interrupt Mask Register 1 -------- */ +#define PWM_IMR1_CHID0 (0x1u << 0) /**< \brief (PWM_IMR1) Counter Event on Channel 0 Interrupt Mask */ +#define PWM_IMR1_CHID1 (0x1u << 1) /**< \brief (PWM_IMR1) Counter Event on Channel 1 Interrupt Mask */ +#define PWM_IMR1_CHID2 (0x1u << 2) /**< \brief (PWM_IMR1) Counter Event on Channel 2 Interrupt Mask */ +#define PWM_IMR1_CHID3 (0x1u << 3) /**< \brief (PWM_IMR1) Counter Event on Channel 3 Interrupt Mask */ +#define PWM_IMR1_FCHID0 (0x1u << 16) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 0 Interrupt Mask */ +#define PWM_IMR1_FCHID1 (0x1u << 17) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 1 Interrupt Mask */ +#define PWM_IMR1_FCHID2 (0x1u << 18) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 2 Interrupt Mask */ +#define PWM_IMR1_FCHID3 (0x1u << 19) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 3 Interrupt Mask */ +/* -------- PWM_ISR1 : (PWM Offset: 0x1C) PWM Interrupt Status Register 1 -------- */ +#define PWM_ISR1_CHID0 (0x1u << 0) /**< \brief (PWM_ISR1) Counter Event on Channel 0 */ +#define PWM_ISR1_CHID1 (0x1u << 1) /**< \brief (PWM_ISR1) Counter Event on Channel 1 */ +#define PWM_ISR1_CHID2 (0x1u << 2) /**< \brief (PWM_ISR1) Counter Event on Channel 2 */ +#define PWM_ISR1_CHID3 (0x1u << 3) /**< \brief (PWM_ISR1) Counter Event on Channel 3 */ +#define PWM_ISR1_FCHID0 (0x1u << 16) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 0 */ +#define PWM_ISR1_FCHID1 (0x1u << 17) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 1 */ +#define PWM_ISR1_FCHID2 (0x1u << 18) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 2 */ +#define PWM_ISR1_FCHID3 (0x1u << 19) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 3 */ +/* -------- PWM_SCM : (PWM Offset: 0x20) PWM Sync Channels Mode Register -------- */ +#define PWM_SCM_SYNC0 (0x1u << 0) /**< \brief (PWM_SCM) Synchronous Channel 0 */ +#define PWM_SCM_SYNC1 (0x1u << 1) /**< \brief (PWM_SCM) Synchronous Channel 1 */ +#define PWM_SCM_SYNC2 (0x1u << 2) /**< \brief (PWM_SCM) Synchronous Channel 2 */ +#define PWM_SCM_SYNC3 (0x1u << 3) /**< \brief (PWM_SCM) Synchronous Channel 3 */ +#define PWM_SCM_UPDM_Pos 16 +#define PWM_SCM_UPDM_Msk (0x3u << PWM_SCM_UPDM_Pos) /**< \brief (PWM_SCM) Synchronous Channels Update Mode */ +#define PWM_SCM_UPDM_MODE0 (0x0u << 16) /**< \brief (PWM_SCM) Manual write of double buffer registers and manual update of synchronous channels */ +#define PWM_SCM_UPDM_MODE1 (0x1u << 16) /**< \brief (PWM_SCM) Manual write of double buffer registers and automatic update of synchronous channels */ +#define PWM_SCM_UPDM_MODE2 (0x2u << 16) /**< \brief (PWM_SCM) Automatic write of duty-cycle update registers by the PDC and automatic update of synchronous channels */ +#define PWM_SCM_PTRM (0x1u << 20) /**< \brief (PWM_SCM) PDC Transfer Request Mode */ +#define PWM_SCM_PTRCS_Pos 21 +#define PWM_SCM_PTRCS_Msk (0x7u << PWM_SCM_PTRCS_Pos) /**< \brief (PWM_SCM) PDC Transfer Request Comparison Selection */ +#define PWM_SCM_PTRCS(value) ((PWM_SCM_PTRCS_Msk & ((value) << PWM_SCM_PTRCS_Pos))) +/* -------- PWM_SCUC : (PWM Offset: 0x28) PWM Sync Channels Update Control Register -------- */ +#define PWM_SCUC_UPDULOCK (0x1u << 0) /**< \brief (PWM_SCUC) Synchronous Channels Update Unlock */ +/* -------- PWM_SCUP : (PWM Offset: 0x2C) PWM Sync Channels Update Period Register -------- */ +#define PWM_SCUP_UPR_Pos 0 +#define PWM_SCUP_UPR_Msk (0xfu << PWM_SCUP_UPR_Pos) /**< \brief (PWM_SCUP) Update Period */ +#define PWM_SCUP_UPR(value) ((PWM_SCUP_UPR_Msk & ((value) << PWM_SCUP_UPR_Pos))) +#define PWM_SCUP_UPRCNT_Pos 4 +#define PWM_SCUP_UPRCNT_Msk (0xfu << PWM_SCUP_UPRCNT_Pos) /**< \brief (PWM_SCUP) Update Period Counter */ +#define PWM_SCUP_UPRCNT(value) ((PWM_SCUP_UPRCNT_Msk & ((value) << PWM_SCUP_UPRCNT_Pos))) +/* -------- PWM_SCUPUPD : (PWM Offset: 0x30) PWM Sync Channels Update Period Update Register -------- */ +#define PWM_SCUPUPD_UPRUPD_Pos 0 +#define PWM_SCUPUPD_UPRUPD_Msk (0xfu << PWM_SCUPUPD_UPRUPD_Pos) /**< \brief (PWM_SCUPUPD) Update Period Update */ +#define PWM_SCUPUPD_UPRUPD(value) ((PWM_SCUPUPD_UPRUPD_Msk & ((value) << PWM_SCUPUPD_UPRUPD_Pos))) +/* -------- PWM_IER2 : (PWM Offset: 0x34) PWM Interrupt Enable Register 2 -------- */ +#define PWM_IER2_WRDY (0x1u << 0) /**< \brief (PWM_IER2) Write Ready for Synchronous Channels Update Interrupt Enable */ +#define PWM_IER2_ENDTX (0x1u << 1) /**< \brief (PWM_IER2) PDC End of TX Buffer Interrupt Enable */ +#define PWM_IER2_TXBUFE (0x1u << 2) /**< \brief (PWM_IER2) PDC TX Buffer Empty Interrupt Enable */ +#define PWM_IER2_UNRE (0x1u << 3) /**< \brief (PWM_IER2) Synchronous Channels Update Underrun Error Interrupt Enable */ +#define PWM_IER2_CMPM0 (0x1u << 8) /**< \brief (PWM_IER2) Comparison 0 Match Interrupt Enable */ +#define PWM_IER2_CMPM1 (0x1u << 9) /**< \brief (PWM_IER2) Comparison 1 Match Interrupt Enable */ +#define PWM_IER2_CMPM2 (0x1u << 10) /**< \brief (PWM_IER2) Comparison 2 Match Interrupt Enable */ +#define PWM_IER2_CMPM3 (0x1u << 11) /**< \brief (PWM_IER2) Comparison 3 Match Interrupt Enable */ +#define PWM_IER2_CMPM4 (0x1u << 12) /**< \brief (PWM_IER2) Comparison 4 Match Interrupt Enable */ +#define PWM_IER2_CMPM5 (0x1u << 13) /**< \brief (PWM_IER2) Comparison 5 Match Interrupt Enable */ +#define PWM_IER2_CMPM6 (0x1u << 14) /**< \brief (PWM_IER2) Comparison 6 Match Interrupt Enable */ +#define PWM_IER2_CMPM7 (0x1u << 15) /**< \brief (PWM_IER2) Comparison 7 Match Interrupt Enable */ +#define PWM_IER2_CMPU0 (0x1u << 16) /**< \brief (PWM_IER2) Comparison 0 Update Interrupt Enable */ +#define PWM_IER2_CMPU1 (0x1u << 17) /**< \brief (PWM_IER2) Comparison 1 Update Interrupt Enable */ +#define PWM_IER2_CMPU2 (0x1u << 18) /**< \brief (PWM_IER2) Comparison 2 Update Interrupt Enable */ +#define PWM_IER2_CMPU3 (0x1u << 19) /**< \brief (PWM_IER2) Comparison 3 Update Interrupt Enable */ +#define PWM_IER2_CMPU4 (0x1u << 20) /**< \brief (PWM_IER2) Comparison 4 Update Interrupt Enable */ +#define PWM_IER2_CMPU5 (0x1u << 21) /**< \brief (PWM_IER2) Comparison 5 Update Interrupt Enable */ +#define PWM_IER2_CMPU6 (0x1u << 22) /**< \brief (PWM_IER2) Comparison 6 Update Interrupt Enable */ +#define PWM_IER2_CMPU7 (0x1u << 23) /**< \brief (PWM_IER2) Comparison 7 Update Interrupt Enable */ +/* -------- PWM_IDR2 : (PWM Offset: 0x38) PWM Interrupt Disable Register 2 -------- */ +#define PWM_IDR2_WRDY (0x1u << 0) /**< \brief (PWM_IDR2) Write Ready for Synchronous Channels Update Interrupt Disable */ +#define PWM_IDR2_ENDTX (0x1u << 1) /**< \brief (PWM_IDR2) PDC End of TX Buffer Interrupt Disable */ +#define PWM_IDR2_TXBUFE (0x1u << 2) /**< \brief (PWM_IDR2) PDC TX Buffer Empty Interrupt Disable */ +#define PWM_IDR2_UNRE (0x1u << 3) /**< \brief (PWM_IDR2) Synchronous Channels Update Underrun Error Interrupt Disable */ +#define PWM_IDR2_CMPM0 (0x1u << 8) /**< \brief (PWM_IDR2) Comparison 0 Match Interrupt Disable */ +#define PWM_IDR2_CMPM1 (0x1u << 9) /**< \brief (PWM_IDR2) Comparison 1 Match Interrupt Disable */ +#define PWM_IDR2_CMPM2 (0x1u << 10) /**< \brief (PWM_IDR2) Comparison 2 Match Interrupt Disable */ +#define PWM_IDR2_CMPM3 (0x1u << 11) /**< \brief (PWM_IDR2) Comparison 3 Match Interrupt Disable */ +#define PWM_IDR2_CMPM4 (0x1u << 12) /**< \brief (PWM_IDR2) Comparison 4 Match Interrupt Disable */ +#define PWM_IDR2_CMPM5 (0x1u << 13) /**< \brief (PWM_IDR2) Comparison 5 Match Interrupt Disable */ +#define PWM_IDR2_CMPM6 (0x1u << 14) /**< \brief (PWM_IDR2) Comparison 6 Match Interrupt Disable */ +#define PWM_IDR2_CMPM7 (0x1u << 15) /**< \brief (PWM_IDR2) Comparison 7 Match Interrupt Disable */ +#define PWM_IDR2_CMPU0 (0x1u << 16) /**< \brief (PWM_IDR2) Comparison 0 Update Interrupt Disable */ +#define PWM_IDR2_CMPU1 (0x1u << 17) /**< \brief (PWM_IDR2) Comparison 1 Update Interrupt Disable */ +#define PWM_IDR2_CMPU2 (0x1u << 18) /**< \brief (PWM_IDR2) Comparison 2 Update Interrupt Disable */ +#define PWM_IDR2_CMPU3 (0x1u << 19) /**< \brief (PWM_IDR2) Comparison 3 Update Interrupt Disable */ +#define PWM_IDR2_CMPU4 (0x1u << 20) /**< \brief (PWM_IDR2) Comparison 4 Update Interrupt Disable */ +#define PWM_IDR2_CMPU5 (0x1u << 21) /**< \brief (PWM_IDR2) Comparison 5 Update Interrupt Disable */ +#define PWM_IDR2_CMPU6 (0x1u << 22) /**< \brief (PWM_IDR2) Comparison 6 Update Interrupt Disable */ +#define PWM_IDR2_CMPU7 (0x1u << 23) /**< \brief (PWM_IDR2) Comparison 7 Update Interrupt Disable */ +/* -------- PWM_IMR2 : (PWM Offset: 0x3C) PWM Interrupt Mask Register 2 -------- */ +#define PWM_IMR2_WRDY (0x1u << 0) /**< \brief (PWM_IMR2) Write Ready for Synchronous Channels Update Interrupt Mask */ +#define PWM_IMR2_ENDTX (0x1u << 1) /**< \brief (PWM_IMR2) PDC End of TX Buffer Interrupt Mask */ +#define PWM_IMR2_TXBUFE (0x1u << 2) /**< \brief (PWM_IMR2) PDC TX Buffer Empty Interrupt Mask */ +#define PWM_IMR2_UNRE (0x1u << 3) /**< \brief (PWM_IMR2) Synchronous Channels Update Underrun Error Interrupt Mask */ +#define PWM_IMR2_CMPM0 (0x1u << 8) /**< \brief (PWM_IMR2) Comparison 0 Match Interrupt Mask */ +#define PWM_IMR2_CMPM1 (0x1u << 9) /**< \brief (PWM_IMR2) Comparison 1 Match Interrupt Mask */ +#define PWM_IMR2_CMPM2 (0x1u << 10) /**< \brief (PWM_IMR2) Comparison 2 Match Interrupt Mask */ +#define PWM_IMR2_CMPM3 (0x1u << 11) /**< \brief (PWM_IMR2) Comparison 3 Match Interrupt Mask */ +#define PWM_IMR2_CMPM4 (0x1u << 12) /**< \brief (PWM_IMR2) Comparison 4 Match Interrupt Mask */ +#define PWM_IMR2_CMPM5 (0x1u << 13) /**< \brief (PWM_IMR2) Comparison 5 Match Interrupt Mask */ +#define PWM_IMR2_CMPM6 (0x1u << 14) /**< \brief (PWM_IMR2) Comparison 6 Match Interrupt Mask */ +#define PWM_IMR2_CMPM7 (0x1u << 15) /**< \brief (PWM_IMR2) Comparison 7 Match Interrupt Mask */ +#define PWM_IMR2_CMPU0 (0x1u << 16) /**< \brief (PWM_IMR2) Comparison 0 Update Interrupt Mask */ +#define PWM_IMR2_CMPU1 (0x1u << 17) /**< \brief (PWM_IMR2) Comparison 1 Update Interrupt Mask */ +#define PWM_IMR2_CMPU2 (0x1u << 18) /**< \brief (PWM_IMR2) Comparison 2 Update Interrupt Mask */ +#define PWM_IMR2_CMPU3 (0x1u << 19) /**< \brief (PWM_IMR2) Comparison 3 Update Interrupt Mask */ +#define PWM_IMR2_CMPU4 (0x1u << 20) /**< \brief (PWM_IMR2) Comparison 4 Update Interrupt Mask */ +#define PWM_IMR2_CMPU5 (0x1u << 21) /**< \brief (PWM_IMR2) Comparison 5 Update Interrupt Mask */ +#define PWM_IMR2_CMPU6 (0x1u << 22) /**< \brief (PWM_IMR2) Comparison 6 Update Interrupt Mask */ +#define PWM_IMR2_CMPU7 (0x1u << 23) /**< \brief (PWM_IMR2) Comparison 7 Update Interrupt Mask */ +/* -------- PWM_ISR2 : (PWM Offset: 0x40) PWM Interrupt Status Register 2 -------- */ +#define PWM_ISR2_WRDY (0x1u << 0) /**< \brief (PWM_ISR2) Write Ready for Synchronous Channels Update */ +#define PWM_ISR2_ENDTX (0x1u << 1) /**< \brief (PWM_ISR2) PDC End of TX Buffer */ +#define PWM_ISR2_TXBUFE (0x1u << 2) /**< \brief (PWM_ISR2) PDC TX Buffer Empty */ +#define PWM_ISR2_UNRE (0x1u << 3) /**< \brief (PWM_ISR2) Synchronous Channels Update Underrun Error */ +#define PWM_ISR2_CMPM0 (0x1u << 8) /**< \brief (PWM_ISR2) Comparison 0 Match */ +#define PWM_ISR2_CMPM1 (0x1u << 9) /**< \brief (PWM_ISR2) Comparison 1 Match */ +#define PWM_ISR2_CMPM2 (0x1u << 10) /**< \brief (PWM_ISR2) Comparison 2 Match */ +#define PWM_ISR2_CMPM3 (0x1u << 11) /**< \brief (PWM_ISR2) Comparison 3 Match */ +#define PWM_ISR2_CMPM4 (0x1u << 12) /**< \brief (PWM_ISR2) Comparison 4 Match */ +#define PWM_ISR2_CMPM5 (0x1u << 13) /**< \brief (PWM_ISR2) Comparison 5 Match */ +#define PWM_ISR2_CMPM6 (0x1u << 14) /**< \brief (PWM_ISR2) Comparison 6 Match */ +#define PWM_ISR2_CMPM7 (0x1u << 15) /**< \brief (PWM_ISR2) Comparison 7 Match */ +#define PWM_ISR2_CMPU0 (0x1u << 16) /**< \brief (PWM_ISR2) Comparison 0 Update */ +#define PWM_ISR2_CMPU1 (0x1u << 17) /**< \brief (PWM_ISR2) Comparison 1 Update */ +#define PWM_ISR2_CMPU2 (0x1u << 18) /**< \brief (PWM_ISR2) Comparison 2 Update */ +#define PWM_ISR2_CMPU3 (0x1u << 19) /**< \brief (PWM_ISR2) Comparison 3 Update */ +#define PWM_ISR2_CMPU4 (0x1u << 20) /**< \brief (PWM_ISR2) Comparison 4 Update */ +#define PWM_ISR2_CMPU5 (0x1u << 21) /**< \brief (PWM_ISR2) Comparison 5 Update */ +#define PWM_ISR2_CMPU6 (0x1u << 22) /**< \brief (PWM_ISR2) Comparison 6 Update */ +#define PWM_ISR2_CMPU7 (0x1u << 23) /**< \brief (PWM_ISR2) Comparison 7 Update */ +/* -------- PWM_OOV : (PWM Offset: 0x44) PWM Output Override Value Register -------- */ +#define PWM_OOV_OOVH0 (0x1u << 0) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 0 */ +#define PWM_OOV_OOVH1 (0x1u << 1) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 1 */ +#define PWM_OOV_OOVH2 (0x1u << 2) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 2 */ +#define PWM_OOV_OOVH3 (0x1u << 3) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 3 */ +#define PWM_OOV_OOVL0 (0x1u << 16) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 0 */ +#define PWM_OOV_OOVL1 (0x1u << 17) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 1 */ +#define PWM_OOV_OOVL2 (0x1u << 18) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 2 */ +#define PWM_OOV_OOVL3 (0x1u << 19) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 3 */ +/* -------- PWM_OS : (PWM Offset: 0x48) PWM Output Selection Register -------- */ +#define PWM_OS_OSH0 (0x1u << 0) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 0 */ +#define PWM_OS_OSH1 (0x1u << 1) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 1 */ +#define PWM_OS_OSH2 (0x1u << 2) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 2 */ +#define PWM_OS_OSH3 (0x1u << 3) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 3 */ +#define PWM_OS_OSL0 (0x1u << 16) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 0 */ +#define PWM_OS_OSL1 (0x1u << 17) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 1 */ +#define PWM_OS_OSL2 (0x1u << 18) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 2 */ +#define PWM_OS_OSL3 (0x1u << 19) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 3 */ +/* -------- PWM_OSS : (PWM Offset: 0x4C) PWM Output Selection Set Register -------- */ +#define PWM_OSS_OSSH0 (0x1u << 0) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 0 */ +#define PWM_OSS_OSSH1 (0x1u << 1) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 1 */ +#define PWM_OSS_OSSH2 (0x1u << 2) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 2 */ +#define PWM_OSS_OSSH3 (0x1u << 3) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 3 */ +#define PWM_OSS_OSSL0 (0x1u << 16) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 0 */ +#define PWM_OSS_OSSL1 (0x1u << 17) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 1 */ +#define PWM_OSS_OSSL2 (0x1u << 18) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 2 */ +#define PWM_OSS_OSSL3 (0x1u << 19) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 3 */ +/* -------- PWM_OSC : (PWM Offset: 0x50) PWM Output Selection Clear Register -------- */ +#define PWM_OSC_OSCH0 (0x1u << 0) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 0 */ +#define PWM_OSC_OSCH1 (0x1u << 1) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 1 */ +#define PWM_OSC_OSCH2 (0x1u << 2) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 2 */ +#define PWM_OSC_OSCH3 (0x1u << 3) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 3 */ +#define PWM_OSC_OSCL0 (0x1u << 16) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 0 */ +#define PWM_OSC_OSCL1 (0x1u << 17) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 1 */ +#define PWM_OSC_OSCL2 (0x1u << 18) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 2 */ +#define PWM_OSC_OSCL3 (0x1u << 19) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 3 */ +/* -------- PWM_OSSUPD : (PWM Offset: 0x54) PWM Output Selection Set Update Register -------- */ +#define PWM_OSSUPD_OSSUPH0 (0x1u << 0) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 0 */ +#define PWM_OSSUPD_OSSUPH1 (0x1u << 1) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 1 */ +#define PWM_OSSUPD_OSSUPH2 (0x1u << 2) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 2 */ +#define PWM_OSSUPD_OSSUPH3 (0x1u << 3) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 3 */ +#define PWM_OSSUPD_OSSUPL0 (0x1u << 16) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 0 */ +#define PWM_OSSUPD_OSSUPL1 (0x1u << 17) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 1 */ +#define PWM_OSSUPD_OSSUPL2 (0x1u << 18) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 2 */ +#define PWM_OSSUPD_OSSUPL3 (0x1u << 19) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 3 */ +/* -------- PWM_OSCUPD : (PWM Offset: 0x58) PWM Output Selection Clear Update Register -------- */ +#define PWM_OSCUPD_OSCUPH0 (0x1u << 0) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 0 */ +#define PWM_OSCUPD_OSCUPH1 (0x1u << 1) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 1 */ +#define PWM_OSCUPD_OSCUPH2 (0x1u << 2) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 2 */ +#define PWM_OSCUPD_OSCUPH3 (0x1u << 3) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 3 */ +#define PWM_OSCUPD_OSCUPL0 (0x1u << 16) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 0 */ +#define PWM_OSCUPD_OSCUPL1 (0x1u << 17) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 1 */ +#define PWM_OSCUPD_OSCUPL2 (0x1u << 18) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 2 */ +#define PWM_OSCUPD_OSCUPL3 (0x1u << 19) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 3 */ +/* -------- PWM_FMR : (PWM Offset: 0x5C) PWM Fault Mode Register -------- */ +#define PWM_FMR_FPOL_Pos 0 +#define PWM_FMR_FPOL_Msk (0xffu << PWM_FMR_FPOL_Pos) /**< \brief (PWM_FMR) Fault Polarity (fault input bit varies from 0 to 3) */ +#define PWM_FMR_FPOL(value) ((PWM_FMR_FPOL_Msk & ((value) << PWM_FMR_FPOL_Pos))) +#define PWM_FMR_FMOD_Pos 8 +#define PWM_FMR_FMOD_Msk (0xffu << PWM_FMR_FMOD_Pos) /**< \brief (PWM_FMR) Fault Activation Mode (fault input bit varies from 0 to 3) */ +#define PWM_FMR_FMOD(value) ((PWM_FMR_FMOD_Msk & ((value) << PWM_FMR_FMOD_Pos))) +#define PWM_FMR_FFIL_Pos 16 +#define PWM_FMR_FFIL_Msk (0xffu << PWM_FMR_FFIL_Pos) /**< \brief (PWM_FMR) Fault Filtering (fault input bit varies from 0 to 3) */ +#define PWM_FMR_FFIL(value) ((PWM_FMR_FFIL_Msk & ((value) << PWM_FMR_FFIL_Pos))) +/* -------- PWM_FSR : (PWM Offset: 0x60) PWM Fault Status Register -------- */ +#define PWM_FSR_FIV_Pos 0 +#define PWM_FSR_FIV_Msk (0xffu << PWM_FSR_FIV_Pos) /**< \brief (PWM_FSR) Fault Input Value (fault input bit varies from 0 to 3) */ +#define PWM_FSR_FS_Pos 8 +#define PWM_FSR_FS_Msk (0xffu << PWM_FSR_FS_Pos) /**< \brief (PWM_FSR) Fault Status (fault input bit varies from 0 to 3) */ +/* -------- PWM_FCR : (PWM Offset: 0x64) PWM Fault Clear Register -------- */ +#define PWM_FCR_FCLR_Pos 0 +#define PWM_FCR_FCLR_Msk (0xffu << PWM_FCR_FCLR_Pos) /**< \brief (PWM_FCR) Fault Clear (fault input bit varies from 0 to 3) */ +#define PWM_FCR_FCLR(value) ((PWM_FCR_FCLR_Msk & ((value) << PWM_FCR_FCLR_Pos))) +/* -------- PWM_FPV : (PWM Offset: 0x68) PWM Fault Protection Value Register -------- */ +#define PWM_FPV_FPVH0 (0x1u << 0) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 0 */ +#define PWM_FPV_FPVH1 (0x1u << 1) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 1 */ +#define PWM_FPV_FPVH2 (0x1u << 2) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 2 */ +#define PWM_FPV_FPVH3 (0x1u << 3) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 3 */ +#define PWM_FPV_FPVL0 (0x1u << 16) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 0 */ +#define PWM_FPV_FPVL1 (0x1u << 17) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 1 */ +#define PWM_FPV_FPVL2 (0x1u << 18) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 2 */ +#define PWM_FPV_FPVL3 (0x1u << 19) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 3 */ +/* -------- PWM_FPE : (PWM Offset: 0x6C) PWM Fault Protection Enable Register -------- */ +#define PWM_FPE_FPE0_Pos 0 +#define PWM_FPE_FPE0_Msk (0xffu << PWM_FPE_FPE0_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 0 (fault input bit varies from 0 to 3) */ +#define PWM_FPE_FPE0(value) ((PWM_FPE_FPE0_Msk & ((value) << PWM_FPE_FPE0_Pos))) +#define PWM_FPE_FPE1_Pos 8 +#define PWM_FPE_FPE1_Msk (0xffu << PWM_FPE_FPE1_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 1 (fault input bit varies from 0 to 3) */ +#define PWM_FPE_FPE1(value) ((PWM_FPE_FPE1_Msk & ((value) << PWM_FPE_FPE1_Pos))) +#define PWM_FPE_FPE2_Pos 16 +#define PWM_FPE_FPE2_Msk (0xffu << PWM_FPE_FPE2_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 2 (fault input bit varies from 0 to 3) */ +#define PWM_FPE_FPE2(value) ((PWM_FPE_FPE2_Msk & ((value) << PWM_FPE_FPE2_Pos))) +#define PWM_FPE_FPE3_Pos 24 +#define PWM_FPE_FPE3_Msk (0xffu << PWM_FPE_FPE3_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 3 (fault input bit varies from 0 to 3) */ +#define PWM_FPE_FPE3(value) ((PWM_FPE_FPE3_Msk & ((value) << PWM_FPE_FPE3_Pos))) +/* -------- PWM_ELMR[2] : (PWM Offset: 0x7C) PWM Event Line 0 Mode Register -------- */ +#define PWM_ELMR_CSEL0 (0x1u << 0) /**< \brief (PWM_ELMR[2]) Comparison 0 Selection */ +#define PWM_ELMR_CSEL1 (0x1u << 1) /**< \brief (PWM_ELMR[2]) Comparison 1 Selection */ +#define PWM_ELMR_CSEL2 (0x1u << 2) /**< \brief (PWM_ELMR[2]) Comparison 2 Selection */ +#define PWM_ELMR_CSEL3 (0x1u << 3) /**< \brief (PWM_ELMR[2]) Comparison 3 Selection */ +#define PWM_ELMR_CSEL4 (0x1u << 4) /**< \brief (PWM_ELMR[2]) Comparison 4 Selection */ +#define PWM_ELMR_CSEL5 (0x1u << 5) /**< \brief (PWM_ELMR[2]) Comparison 5 Selection */ +#define PWM_ELMR_CSEL6 (0x1u << 6) /**< \brief (PWM_ELMR[2]) Comparison 6 Selection */ +#define PWM_ELMR_CSEL7 (0x1u << 7) /**< \brief (PWM_ELMR[2]) Comparison 7 Selection */ +/* -------- PWM_WPCR : (PWM Offset: 0xE4) PWM Write Protect Control Register -------- */ +#define PWM_WPCR_WPCMD_Pos 0 +#define PWM_WPCR_WPCMD_Msk (0x3u << PWM_WPCR_WPCMD_Pos) /**< \brief (PWM_WPCR) Write Protect Command */ +#define PWM_WPCR_WPCMD(value) ((PWM_WPCR_WPCMD_Msk & ((value) << PWM_WPCR_WPCMD_Pos))) +#define PWM_WPCR_WPRG0 (0x1u << 2) /**< \brief (PWM_WPCR) Write Protect Register Group 0 */ +#define PWM_WPCR_WPRG1 (0x1u << 3) /**< \brief (PWM_WPCR) Write Protect Register Group 1 */ +#define PWM_WPCR_WPRG2 (0x1u << 4) /**< \brief (PWM_WPCR) Write Protect Register Group 2 */ +#define PWM_WPCR_WPRG3 (0x1u << 5) /**< \brief (PWM_WPCR) Write Protect Register Group 3 */ +#define PWM_WPCR_WPRG4 (0x1u << 6) /**< \brief (PWM_WPCR) Write Protect Register Group 4 */ +#define PWM_WPCR_WPRG5 (0x1u << 7) /**< \brief (PWM_WPCR) Write Protect Register Group 5 */ +#define PWM_WPCR_WPKEY_Pos 8 +#define PWM_WPCR_WPKEY_Msk (0xffffffu << PWM_WPCR_WPKEY_Pos) /**< \brief (PWM_WPCR) Write Protect Key */ +#define PWM_WPCR_WPKEY(value) ((PWM_WPCR_WPKEY_Msk & ((value) << PWM_WPCR_WPKEY_Pos))) +/* -------- PWM_WPSR : (PWM Offset: 0xE8) PWM Write Protect Status Register -------- */ +#define PWM_WPSR_WPSWS0 (0x1u << 0) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS1 (0x1u << 1) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS2 (0x1u << 2) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS3 (0x1u << 3) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS4 (0x1u << 4) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS5 (0x1u << 5) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPVS (0x1u << 7) /**< \brief (PWM_WPSR) Write Protect Violation Status */ +#define PWM_WPSR_WPHWS0 (0x1u << 8) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS1 (0x1u << 9) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS2 (0x1u << 10) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS3 (0x1u << 11) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS4 (0x1u << 12) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS5 (0x1u << 13) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPVSRC_Pos 16 +#define PWM_WPSR_WPVSRC_Msk (0xffffu << PWM_WPSR_WPVSRC_Pos) /**< \brief (PWM_WPSR) Write Protect Violation Source */ +/* -------- PWM_RPR : (PWM Offset: 0x100) Receive Pointer Register -------- */ +#define PWM_RPR_RXPTR_Pos 0 +#define PWM_RPR_RXPTR_Msk (0xffffffffu << PWM_RPR_RXPTR_Pos) /**< \brief (PWM_RPR) Receive Pointer Register */ +#define PWM_RPR_RXPTR(value) ((PWM_RPR_RXPTR_Msk & ((value) << PWM_RPR_RXPTR_Pos))) +/* -------- PWM_RCR : (PWM Offset: 0x104) Receive Counter Register -------- */ +#define PWM_RCR_RXCTR_Pos 0 +#define PWM_RCR_RXCTR_Msk (0xffffu << PWM_RCR_RXCTR_Pos) /**< \brief (PWM_RCR) Receive Counter Register */ +#define PWM_RCR_RXCTR(value) ((PWM_RCR_RXCTR_Msk & ((value) << PWM_RCR_RXCTR_Pos))) +/* -------- PWM_TPR : (PWM Offset: 0x108) Transmit Pointer Register -------- */ +#define PWM_TPR_TXPTR_Pos 0 +#define PWM_TPR_TXPTR_Msk (0xffffffffu << PWM_TPR_TXPTR_Pos) /**< \brief (PWM_TPR) Transmit Counter Register */ +#define PWM_TPR_TXPTR(value) ((PWM_TPR_TXPTR_Msk & ((value) << PWM_TPR_TXPTR_Pos))) +/* -------- PWM_TCR : (PWM Offset: 0x10C) Transmit Counter Register -------- */ +#define PWM_TCR_TXCTR_Pos 0 +#define PWM_TCR_TXCTR_Msk (0xffffu << PWM_TCR_TXCTR_Pos) /**< \brief (PWM_TCR) Transmit Counter Register */ +#define PWM_TCR_TXCTR(value) ((PWM_TCR_TXCTR_Msk & ((value) << PWM_TCR_TXCTR_Pos))) +/* -------- PWM_RNPR : (PWM Offset: 0x110) Receive Next Pointer Register -------- */ +#define PWM_RNPR_RXNPTR_Pos 0 +#define PWM_RNPR_RXNPTR_Msk (0xffffffffu << PWM_RNPR_RXNPTR_Pos) /**< \brief (PWM_RNPR) Receive Next Pointer */ +#define PWM_RNPR_RXNPTR(value) ((PWM_RNPR_RXNPTR_Msk & ((value) << PWM_RNPR_RXNPTR_Pos))) +/* -------- PWM_RNCR : (PWM Offset: 0x114) Receive Next Counter Register -------- */ +#define PWM_RNCR_RXNCTR_Pos 0 +#define PWM_RNCR_RXNCTR_Msk (0xffffu << PWM_RNCR_RXNCTR_Pos) /**< \brief (PWM_RNCR) Receive Next Counter */ +#define PWM_RNCR_RXNCTR(value) ((PWM_RNCR_RXNCTR_Msk & ((value) << PWM_RNCR_RXNCTR_Pos))) +/* -------- PWM_TNPR : (PWM Offset: 0x118) Transmit Next Pointer Register -------- */ +#define PWM_TNPR_TXNPTR_Pos 0 +#define PWM_TNPR_TXNPTR_Msk (0xffffffffu << PWM_TNPR_TXNPTR_Pos) /**< \brief (PWM_TNPR) Transmit Next Pointer */ +#define PWM_TNPR_TXNPTR(value) ((PWM_TNPR_TXNPTR_Msk & ((value) << PWM_TNPR_TXNPTR_Pos))) +/* -------- PWM_TNCR : (PWM Offset: 0x11C) Transmit Next Counter Register -------- */ +#define PWM_TNCR_TXNCTR_Pos 0 +#define PWM_TNCR_TXNCTR_Msk (0xffffu << PWM_TNCR_TXNCTR_Pos) /**< \brief (PWM_TNCR) Transmit Counter Next */ +#define PWM_TNCR_TXNCTR(value) ((PWM_TNCR_TXNCTR_Msk & ((value) << PWM_TNCR_TXNCTR_Pos))) +/* -------- PWM_PTCR : (PWM Offset: 0x120) Transfer Control Register -------- */ +#define PWM_PTCR_RXTEN (0x1u << 0) /**< \brief (PWM_PTCR) Receiver Transfer Enable */ +#define PWM_PTCR_RXTDIS (0x1u << 1) /**< \brief (PWM_PTCR) Receiver Transfer Disable */ +#define PWM_PTCR_TXTEN (0x1u << 8) /**< \brief (PWM_PTCR) Transmitter Transfer Enable */ +#define PWM_PTCR_TXTDIS (0x1u << 9) /**< \brief (PWM_PTCR) Transmitter Transfer Disable */ +/* -------- PWM_PTSR : (PWM Offset: 0x124) Transfer Status Register -------- */ +#define PWM_PTSR_RXTEN (0x1u << 0) /**< \brief (PWM_PTSR) Receiver Transfer Enable */ +#define PWM_PTSR_TXTEN (0x1u << 8) /**< \brief (PWM_PTSR) Transmitter Transfer Enable */ +/* -------- PWM_CMPV : (PWM Offset: N/A) PWM Comparison 0 Value Register -------- */ +#define PWM_CMPV_CV_Pos 0 +#define PWM_CMPV_CV_Msk (0xffffffu << PWM_CMPV_CV_Pos) /**< \brief (PWM_CMPV) Comparison x Value */ +#define PWM_CMPV_CV(value) ((PWM_CMPV_CV_Msk & ((value) << PWM_CMPV_CV_Pos))) +#define PWM_CMPV_CVM (0x1u << 24) /**< \brief (PWM_CMPV) Comparison x Value Mode */ +/* -------- PWM_CMPVUPD : (PWM Offset: N/A) PWM Comparison 0 Value Update Register -------- */ +#define PWM_CMPVUPD_CVUPD_Pos 0 +#define PWM_CMPVUPD_CVUPD_Msk (0xffffffu << PWM_CMPVUPD_CVUPD_Pos) /**< \brief (PWM_CMPVUPD) Comparison x Value Update */ +#define PWM_CMPVUPD_CVUPD(value) ((PWM_CMPVUPD_CVUPD_Msk & ((value) << PWM_CMPVUPD_CVUPD_Pos))) +#define PWM_CMPVUPD_CVMUPD (0x1u << 24) /**< \brief (PWM_CMPVUPD) Comparison x Value Mode Update */ +/* -------- PWM_CMPM : (PWM Offset: N/A) PWM Comparison 0 Mode Register -------- */ +#define PWM_CMPM_CEN (0x1u << 0) /**< \brief (PWM_CMPM) Comparison x Enable */ +#define PWM_CMPM_CTR_Pos 4 +#define PWM_CMPM_CTR_Msk (0xfu << PWM_CMPM_CTR_Pos) /**< \brief (PWM_CMPM) Comparison x Trigger */ +#define PWM_CMPM_CTR(value) ((PWM_CMPM_CTR_Msk & ((value) << PWM_CMPM_CTR_Pos))) +#define PWM_CMPM_CPR_Pos 8 +#define PWM_CMPM_CPR_Msk (0xfu << PWM_CMPM_CPR_Pos) /**< \brief (PWM_CMPM) Comparison x Period */ +#define PWM_CMPM_CPR(value) ((PWM_CMPM_CPR_Msk & ((value) << PWM_CMPM_CPR_Pos))) +#define PWM_CMPM_CPRCNT_Pos 12 +#define PWM_CMPM_CPRCNT_Msk (0xfu << PWM_CMPM_CPRCNT_Pos) /**< \brief (PWM_CMPM) Comparison x Period Counter */ +#define PWM_CMPM_CPRCNT(value) ((PWM_CMPM_CPRCNT_Msk & ((value) << PWM_CMPM_CPRCNT_Pos))) +#define PWM_CMPM_CUPR_Pos 16 +#define PWM_CMPM_CUPR_Msk (0xfu << PWM_CMPM_CUPR_Pos) /**< \brief (PWM_CMPM) Comparison x Update Period */ +#define PWM_CMPM_CUPR(value) ((PWM_CMPM_CUPR_Msk & ((value) << PWM_CMPM_CUPR_Pos))) +#define PWM_CMPM_CUPRCNT_Pos 20 +#define PWM_CMPM_CUPRCNT_Msk (0xfu << PWM_CMPM_CUPRCNT_Pos) /**< \brief (PWM_CMPM) Comparison x Update Period Counter */ +#define PWM_CMPM_CUPRCNT(value) ((PWM_CMPM_CUPRCNT_Msk & ((value) << PWM_CMPM_CUPRCNT_Pos))) +/* -------- PWM_CMPMUPD : (PWM Offset: N/A) PWM Comparison 0 Mode Update Register -------- */ +#define PWM_CMPMUPD_CENUPD (0x1u << 0) /**< \brief (PWM_CMPMUPD) Comparison x Enable Update */ +#define PWM_CMPMUPD_CTRUPD_Pos 4 +#define PWM_CMPMUPD_CTRUPD_Msk (0xfu << PWM_CMPMUPD_CTRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Trigger Update */ +#define PWM_CMPMUPD_CTRUPD(value) ((PWM_CMPMUPD_CTRUPD_Msk & ((value) << PWM_CMPMUPD_CTRUPD_Pos))) +#define PWM_CMPMUPD_CPRUPD_Pos 8 +#define PWM_CMPMUPD_CPRUPD_Msk (0xfu << PWM_CMPMUPD_CPRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Period Update */ +#define PWM_CMPMUPD_CPRUPD(value) ((PWM_CMPMUPD_CPRUPD_Msk & ((value) << PWM_CMPMUPD_CPRUPD_Pos))) +#define PWM_CMPMUPD_CUPRUPD_Pos 16 +#define PWM_CMPMUPD_CUPRUPD_Msk (0xfu << PWM_CMPMUPD_CUPRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Update Period Update */ +#define PWM_CMPMUPD_CUPRUPD(value) ((PWM_CMPMUPD_CUPRUPD_Msk & ((value) << PWM_CMPMUPD_CUPRUPD_Pos))) +/* -------- PWM_CMR : (PWM Offset: N/A) PWM Channel Mode Register -------- */ +#define PWM_CMR_CPRE_Pos 0 +#define PWM_CMR_CPRE_Msk (0xfu << PWM_CMR_CPRE_Pos) /**< \brief (PWM_CMR) Channel Pre-scaler */ +#define PWM_CMR_CPRE_MCK (0x0u << 0) /**< \brief (PWM_CMR) Master clock */ +#define PWM_CMR_CPRE_MCK_DIV_2 (0x1u << 0) /**< \brief (PWM_CMR) Master clock/2 */ +#define PWM_CMR_CPRE_MCK_DIV_4 (0x2u << 0) /**< \brief (PWM_CMR) Master clock/4 */ +#define PWM_CMR_CPRE_MCK_DIV_8 (0x3u << 0) /**< \brief (PWM_CMR) Master clock/8 */ +#define PWM_CMR_CPRE_MCK_DIV_16 (0x4u << 0) /**< \brief (PWM_CMR) Master clock/16 */ +#define PWM_CMR_CPRE_MCK_DIV_32 (0x5u << 0) /**< \brief (PWM_CMR) Master clock/32 */ +#define PWM_CMR_CPRE_MCK_DIV_64 (0x6u << 0) /**< \brief (PWM_CMR) Master clock/64 */ +#define PWM_CMR_CPRE_MCK_DIV_128 (0x7u << 0) /**< \brief (PWM_CMR) Master clock/128 */ +#define PWM_CMR_CPRE_MCK_DIV_256 (0x8u << 0) /**< \brief (PWM_CMR) Master clock/256 */ +#define PWM_CMR_CPRE_MCK_DIV_512 (0x9u << 0) /**< \brief (PWM_CMR) Master clock/512 */ +#define PWM_CMR_CPRE_MCK_DIV_1024 (0xAu << 0) /**< \brief (PWM_CMR) Master clock/1024 */ +#define PWM_CMR_CPRE_CLKA (0xBu << 0) /**< \brief (PWM_CMR) Clock A */ +#define PWM_CMR_CPRE_CLKB (0xCu << 0) /**< \brief (PWM_CMR) Clock B */ +#define PWM_CMR_CALG (0x1u << 8) /**< \brief (PWM_CMR) Channel Alignment */ +#define PWM_CMR_CPOL (0x1u << 9) /**< \brief (PWM_CMR) Channel Polarity */ +#define PWM_CMR_CES (0x1u << 10) /**< \brief (PWM_CMR) Counter Event Selection */ +#define PWM_CMR_DTE (0x1u << 16) /**< \brief (PWM_CMR) Dead-Time Generator Enable */ +#define PWM_CMR_DTHI (0x1u << 17) /**< \brief (PWM_CMR) Dead-Time PWMHx Output Inverted */ +#define PWM_CMR_DTLI (0x1u << 18) /**< \brief (PWM_CMR) Dead-Time PWMLx Output Inverted */ +/* -------- PWM_CDTY : (PWM Offset: N/A) PWM Channel Duty Cycle Register -------- */ +#define PWM_CDTY_CDTY_Pos 0 +#define PWM_CDTY_CDTY_Msk (0xffffffu << PWM_CDTY_CDTY_Pos) /**< \brief (PWM_CDTY) Channel Duty-Cycle */ +#define PWM_CDTY_CDTY(value) ((PWM_CDTY_CDTY_Msk & ((value) << PWM_CDTY_CDTY_Pos))) +/* -------- PWM_CDTYUPD : (PWM Offset: N/A) PWM Channel Duty Cycle Update Register -------- */ +#define PWM_CDTYUPD_CDTYUPD_Pos 0 +#define PWM_CDTYUPD_CDTYUPD_Msk (0xffffffu << PWM_CDTYUPD_CDTYUPD_Pos) /**< \brief (PWM_CDTYUPD) Channel Duty-Cycle Update */ +#define PWM_CDTYUPD_CDTYUPD(value) ((PWM_CDTYUPD_CDTYUPD_Msk & ((value) << PWM_CDTYUPD_CDTYUPD_Pos))) +/* -------- PWM_CPRD : (PWM Offset: N/A) PWM Channel Period Register -------- */ +#define PWM_CPRD_CPRD_Pos 0 +#define PWM_CPRD_CPRD_Msk (0xffffffu << PWM_CPRD_CPRD_Pos) /**< \brief (PWM_CPRD) Channel Period */ +#define PWM_CPRD_CPRD(value) ((PWM_CPRD_CPRD_Msk & ((value) << PWM_CPRD_CPRD_Pos))) +/* -------- PWM_CPRDUPD : (PWM Offset: N/A) PWM Channel Period Update Register -------- */ +#define PWM_CPRDUPD_CPRDUPD_Pos 0 +#define PWM_CPRDUPD_CPRDUPD_Msk (0xffffffu << PWM_CPRDUPD_CPRDUPD_Pos) /**< \brief (PWM_CPRDUPD) Channel Period Update */ +#define PWM_CPRDUPD_CPRDUPD(value) ((PWM_CPRDUPD_CPRDUPD_Msk & ((value) << PWM_CPRDUPD_CPRDUPD_Pos))) +/* -------- PWM_CCNT : (PWM Offset: N/A) PWM Channel Counter Register -------- */ +#define PWM_CCNT_CNT_Pos 0 +#define PWM_CCNT_CNT_Msk (0xffffffu << PWM_CCNT_CNT_Pos) /**< \brief (PWM_CCNT) Channel Counter Register */ +/* -------- PWM_DT : (PWM Offset: N/A) PWM Channel Dead Time Register -------- */ +#define PWM_DT_DTH_Pos 0 +#define PWM_DT_DTH_Msk (0xffffu << PWM_DT_DTH_Pos) /**< \brief (PWM_DT) Dead-Time Value for PWMHx Output */ +#define PWM_DT_DTH(value) ((PWM_DT_DTH_Msk & ((value) << PWM_DT_DTH_Pos))) +#define PWM_DT_DTL_Pos 16 +#define PWM_DT_DTL_Msk (0xffffu << PWM_DT_DTL_Pos) /**< \brief (PWM_DT) Dead-Time Value for PWMLx Output */ +#define PWM_DT_DTL(value) ((PWM_DT_DTL_Msk & ((value) << PWM_DT_DTL_Pos))) +/* -------- PWM_DTUPD : (PWM Offset: N/A) PWM Channel Dead Time Update Register -------- */ +#define PWM_DTUPD_DTHUPD_Pos 0 +#define PWM_DTUPD_DTHUPD_Msk (0xffffu << PWM_DTUPD_DTHUPD_Pos) /**< \brief (PWM_DTUPD) Dead-Time Value Update for PWMHx Output */ +#define PWM_DTUPD_DTHUPD(value) ((PWM_DTUPD_DTHUPD_Msk & ((value) << PWM_DTUPD_DTHUPD_Pos))) +#define PWM_DTUPD_DTLUPD_Pos 16 +#define PWM_DTUPD_DTLUPD_Msk (0xffffu << PWM_DTUPD_DTLUPD_Pos) /**< \brief (PWM_DTUPD) Dead-Time Value Update for PWMLx Output */ +#define PWM_DTUPD_DTLUPD(value) ((PWM_DTUPD_DTLUPD_Msk & ((value) << PWM_DTUPD_DTLUPD_Pos))) + +/*@}*/ + + +#endif /* _SAM3U_PWM_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_rstc.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_rstc.h new file mode 100644 index 000000000..f4800780f --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_rstc.h @@ -0,0 +1,73 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_RSTC_COMPONENT_ +#define _SAM3U_RSTC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Reset Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3U_RSTC Reset Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Rstc hardware registers */ +typedef struct { + WoReg RSTC_CR; /**< \brief (Rstc Offset: 0x00) Control Register */ + RoReg RSTC_SR; /**< \brief (Rstc Offset: 0x04) Status Register */ + RwReg RSTC_MR; /**< \brief (Rstc Offset: 0x08) Mode Register */ +} Rstc; +#endif /* __ASSEMBLY__ */ +/* -------- RSTC_CR : (RSTC Offset: 0x00) Control Register -------- */ +#define RSTC_CR_PROCRST (0x1u << 0) /**< \brief (RSTC_CR) Processor Reset */ +#define RSTC_CR_PERRST (0x1u << 2) /**< \brief (RSTC_CR) Peripheral Reset */ +#define RSTC_CR_EXTRST (0x1u << 3) /**< \brief (RSTC_CR) External Reset */ +#define RSTC_CR_KEY_Pos 24 +#define RSTC_CR_KEY_Msk (0xffu << RSTC_CR_KEY_Pos) /**< \brief (RSTC_CR) Password */ +#define RSTC_CR_KEY(value) ((RSTC_CR_KEY_Msk & ((value) << RSTC_CR_KEY_Pos))) +/* -------- RSTC_SR : (RSTC Offset: 0x04) Status Register -------- */ +#define RSTC_SR_URSTS (0x1u << 0) /**< \brief (RSTC_SR) User Reset Status */ +#define RSTC_SR_RSTTYP_Pos 8 +#define RSTC_SR_RSTTYP_Msk (0x7u << RSTC_SR_RSTTYP_Pos) /**< \brief (RSTC_SR) Reset Type */ +#define RSTC_SR_NRSTL (0x1u << 16) /**< \brief (RSTC_SR) NRST Pin Level */ +#define RSTC_SR_SRCMP (0x1u << 17) /**< \brief (RSTC_SR) Software Reset Command in Progress */ +/* -------- RSTC_MR : (RSTC Offset: 0x08) Mode Register -------- */ +#define RSTC_MR_URSTEN (0x1u << 0) /**< \brief (RSTC_MR) User Reset Enable */ +#define RSTC_MR_URSTIEN (0x1u << 4) /**< \brief (RSTC_MR) User Reset Interrupt Enable */ +#define RSTC_MR_ERSTL_Pos 8 +#define RSTC_MR_ERSTL_Msk (0xfu << RSTC_MR_ERSTL_Pos) /**< \brief (RSTC_MR) External Reset Length */ +#define RSTC_MR_ERSTL(value) ((RSTC_MR_ERSTL_Msk & ((value) << RSTC_MR_ERSTL_Pos))) +#define RSTC_MR_KEY_Pos 24 +#define RSTC_MR_KEY_Msk (0xffu << RSTC_MR_KEY_Pos) /**< \brief (RSTC_MR) Password */ +#define RSTC_MR_KEY(value) ((RSTC_MR_KEY_Msk & ((value) << RSTC_MR_KEY_Pos))) + +/*@}*/ + + +#endif /* _SAM3U_RSTC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_rtc.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_rtc.h new file mode 100644 index 000000000..61c906158 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_rtc.h @@ -0,0 +1,168 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_RTC_COMPONENT_ +#define _SAM3U_RTC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Real-time Clock */ +/* ============================================================================= */ +/** \addtogroup SAM3U_RTC Real-time Clock */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Rtc hardware registers */ +typedef struct { + RwReg RTC_CR; /**< \brief (Rtc Offset: 0x00) Control Register */ + RwReg RTC_MR; /**< \brief (Rtc Offset: 0x04) Mode Register */ + RwReg RTC_TIMR; /**< \brief (Rtc Offset: 0x08) Time Register */ + RwReg RTC_CALR; /**< \brief (Rtc Offset: 0x0C) Calendar Register */ + RwReg RTC_TIMALR; /**< \brief (Rtc Offset: 0x10) Time Alarm Register */ + RwReg RTC_CALALR; /**< \brief (Rtc Offset: 0x14) Calendar Alarm Register */ + RoReg RTC_SR; /**< \brief (Rtc Offset: 0x18) Status Register */ + WoReg RTC_SCCR; /**< \brief (Rtc Offset: 0x1C) Status Clear Command Register */ + WoReg RTC_IER; /**< \brief (Rtc Offset: 0x20) Interrupt Enable Register */ + WoReg RTC_IDR; /**< \brief (Rtc Offset: 0x24) Interrupt Disable Register */ + RoReg RTC_IMR; /**< \brief (Rtc Offset: 0x28) Interrupt Mask Register */ + RoReg RTC_VER; /**< \brief (Rtc Offset: 0x2C) Valid Entry Register */ + RoReg Reserved1[45]; + RwReg RTC_WPMR; /**< \brief (Rtc Offset: 0xE4) Write Protect Mode Register */ +} Rtc; +#endif /* __ASSEMBLY__ */ +/* -------- RTC_CR : (RTC Offset: 0x00) Control Register -------- */ +#define RTC_CR_UPDTIM (0x1u << 0) /**< \brief (RTC_CR) Update Request Time Register */ +#define RTC_CR_UPDCAL (0x1u << 1) /**< \brief (RTC_CR) Update Request Calendar Register */ +#define RTC_CR_TIMEVSEL_Pos 8 +#define RTC_CR_TIMEVSEL_Msk (0x3u << RTC_CR_TIMEVSEL_Pos) /**< \brief (RTC_CR) Time Event Selection */ +#define RTC_CR_TIMEVSEL_MINUTE (0x0u << 8) /**< \brief (RTC_CR) Minute change */ +#define RTC_CR_TIMEVSEL_HOUR (0x1u << 8) /**< \brief (RTC_CR) Hour change */ +#define RTC_CR_TIMEVSEL_MIDNIGHT (0x2u << 8) /**< \brief (RTC_CR) Every day at midnight */ +#define RTC_CR_TIMEVSEL_NOON (0x3u << 8) /**< \brief (RTC_CR) Every day at noon */ +#define RTC_CR_CALEVSEL_Pos 16 +#define RTC_CR_CALEVSEL_Msk (0x3u << RTC_CR_CALEVSEL_Pos) /**< \brief (RTC_CR) Calendar Event Selection */ +#define RTC_CR_CALEVSEL_WEEK (0x0u << 16) /**< \brief (RTC_CR) Week change (every Monday at time 00:00:00) */ +#define RTC_CR_CALEVSEL_MONTH (0x1u << 16) /**< \brief (RTC_CR) Month change (every 01 of each month at time 00:00:00) */ +#define RTC_CR_CALEVSEL_YEAR (0x2u << 16) /**< \brief (RTC_CR) Year change (every January 1 at time 00:00:00) */ +/* -------- RTC_MR : (RTC Offset: 0x04) Mode Register -------- */ +#define RTC_MR_HRMOD (0x1u << 0) /**< \brief (RTC_MR) 12-/24-hour Mode */ +/* -------- RTC_TIMR : (RTC Offset: 0x08) Time Register -------- */ +#define RTC_TIMR_SEC_Pos 0 +#define RTC_TIMR_SEC_Msk (0x7fu << RTC_TIMR_SEC_Pos) /**< \brief (RTC_TIMR) Current Second */ +#define RTC_TIMR_SEC(value) ((RTC_TIMR_SEC_Msk & ((value) << RTC_TIMR_SEC_Pos))) +#define RTC_TIMR_MIN_Pos 8 +#define RTC_TIMR_MIN_Msk (0x7fu << RTC_TIMR_MIN_Pos) /**< \brief (RTC_TIMR) Current Minute */ +#define RTC_TIMR_MIN(value) ((RTC_TIMR_MIN_Msk & ((value) << RTC_TIMR_MIN_Pos))) +#define RTC_TIMR_HOUR_Pos 16 +#define RTC_TIMR_HOUR_Msk (0x3fu << RTC_TIMR_HOUR_Pos) /**< \brief (RTC_TIMR) Current Hour */ +#define RTC_TIMR_HOUR(value) ((RTC_TIMR_HOUR_Msk & ((value) << RTC_TIMR_HOUR_Pos))) +#define RTC_TIMR_AMPM (0x1u << 22) /**< \brief (RTC_TIMR) Ante Meridiem Post Meridiem Indicator */ +/* -------- RTC_CALR : (RTC Offset: 0x0C) Calendar Register -------- */ +#define RTC_CALR_CENT_Pos 0 +#define RTC_CALR_CENT_Msk (0x7fu << RTC_CALR_CENT_Pos) /**< \brief (RTC_CALR) Current Century */ +#define RTC_CALR_CENT(value) ((RTC_CALR_CENT_Msk & ((value) << RTC_CALR_CENT_Pos))) +#define RTC_CALR_YEAR_Pos 8 +#define RTC_CALR_YEAR_Msk (0xffu << RTC_CALR_YEAR_Pos) /**< \brief (RTC_CALR) Current Year */ +#define RTC_CALR_YEAR(value) ((RTC_CALR_YEAR_Msk & ((value) << RTC_CALR_YEAR_Pos))) +#define RTC_CALR_MONTH_Pos 16 +#define RTC_CALR_MONTH_Msk (0x1fu << RTC_CALR_MONTH_Pos) /**< \brief (RTC_CALR) Current Month */ +#define RTC_CALR_MONTH(value) ((RTC_CALR_MONTH_Msk & ((value) << RTC_CALR_MONTH_Pos))) +#define RTC_CALR_DAY_Pos 21 +#define RTC_CALR_DAY_Msk (0x7u << RTC_CALR_DAY_Pos) /**< \brief (RTC_CALR) Current Day in Current Week */ +#define RTC_CALR_DAY(value) ((RTC_CALR_DAY_Msk & ((value) << RTC_CALR_DAY_Pos))) +#define RTC_CALR_DATE_Pos 24 +#define RTC_CALR_DATE_Msk (0x3fu << RTC_CALR_DATE_Pos) /**< \brief (RTC_CALR) Current Day in Current Month */ +#define RTC_CALR_DATE(value) ((RTC_CALR_DATE_Msk & ((value) << RTC_CALR_DATE_Pos))) +/* -------- RTC_TIMALR : (RTC Offset: 0x10) Time Alarm Register -------- */ +#define RTC_TIMALR_SEC_Pos 0 +#define RTC_TIMALR_SEC_Msk (0x7fu << RTC_TIMALR_SEC_Pos) /**< \brief (RTC_TIMALR) Second Alarm */ +#define RTC_TIMALR_SEC(value) ((RTC_TIMALR_SEC_Msk & ((value) << RTC_TIMALR_SEC_Pos))) +#define RTC_TIMALR_SECEN (0x1u << 7) /**< \brief (RTC_TIMALR) Second Alarm Enable */ +#define RTC_TIMALR_MIN_Pos 8 +#define RTC_TIMALR_MIN_Msk (0x7fu << RTC_TIMALR_MIN_Pos) /**< \brief (RTC_TIMALR) Minute Alarm */ +#define RTC_TIMALR_MIN(value) ((RTC_TIMALR_MIN_Msk & ((value) << RTC_TIMALR_MIN_Pos))) +#define RTC_TIMALR_MINEN (0x1u << 15) /**< \brief (RTC_TIMALR) Minute Alarm Enable */ +#define RTC_TIMALR_HOUR_Pos 16 +#define RTC_TIMALR_HOUR_Msk (0x3fu << RTC_TIMALR_HOUR_Pos) /**< \brief (RTC_TIMALR) Hour Alarm */ +#define RTC_TIMALR_HOUR(value) ((RTC_TIMALR_HOUR_Msk & ((value) << RTC_TIMALR_HOUR_Pos))) +#define RTC_TIMALR_AMPM (0x1u << 22) /**< \brief (RTC_TIMALR) AM/PM Indicator */ +#define RTC_TIMALR_HOUREN (0x1u << 23) /**< \brief (RTC_TIMALR) Hour Alarm Enable */ +/* -------- RTC_CALALR : (RTC Offset: 0x14) Calendar Alarm Register -------- */ +#define RTC_CALALR_MONTH_Pos 16 +#define RTC_CALALR_MONTH_Msk (0x1fu << RTC_CALALR_MONTH_Pos) /**< \brief (RTC_CALALR) Month Alarm */ +#define RTC_CALALR_MONTH(value) ((RTC_CALALR_MONTH_Msk & ((value) << RTC_CALALR_MONTH_Pos))) +#define RTC_CALALR_MTHEN (0x1u << 23) /**< \brief (RTC_CALALR) Month Alarm Enable */ +#define RTC_CALALR_DATE_Pos 24 +#define RTC_CALALR_DATE_Msk (0x3fu << RTC_CALALR_DATE_Pos) /**< \brief (RTC_CALALR) Date Alarm */ +#define RTC_CALALR_DATE(value) ((RTC_CALALR_DATE_Msk & ((value) << RTC_CALALR_DATE_Pos))) +#define RTC_CALALR_DATEEN (0x1u << 31) /**< \brief (RTC_CALALR) Date Alarm Enable */ +/* -------- RTC_SR : (RTC Offset: 0x18) Status Register -------- */ +#define RTC_SR_ACKUPD (0x1u << 0) /**< \brief (RTC_SR) Acknowledge for Update */ +#define RTC_SR_ALARM (0x1u << 1) /**< \brief (RTC_SR) Alarm Flag */ +#define RTC_SR_SEC (0x1u << 2) /**< \brief (RTC_SR) Second Event */ +#define RTC_SR_TIMEV (0x1u << 3) /**< \brief (RTC_SR) Time Event */ +#define RTC_SR_CALEV (0x1u << 4) /**< \brief (RTC_SR) Calendar Event */ +/* -------- RTC_SCCR : (RTC Offset: 0x1C) Status Clear Command Register -------- */ +#define RTC_SCCR_ACKCLR (0x1u << 0) /**< \brief (RTC_SCCR) Acknowledge Clear */ +#define RTC_SCCR_ALRCLR (0x1u << 1) /**< \brief (RTC_SCCR) Alarm Clear */ +#define RTC_SCCR_SECCLR (0x1u << 2) /**< \brief (RTC_SCCR) Second Clear */ +#define RTC_SCCR_TIMCLR (0x1u << 3) /**< \brief (RTC_SCCR) Time Clear */ +#define RTC_SCCR_CALCLR (0x1u << 4) /**< \brief (RTC_SCCR) Calendar Clear */ +/* -------- RTC_IER : (RTC Offset: 0x20) Interrupt Enable Register -------- */ +#define RTC_IER_ACKEN (0x1u << 0) /**< \brief (RTC_IER) Acknowledge Update Interrupt Enable */ +#define RTC_IER_ALREN (0x1u << 1) /**< \brief (RTC_IER) Alarm Interrupt Enable */ +#define RTC_IER_SECEN (0x1u << 2) /**< \brief (RTC_IER) Second Event Interrupt Enable */ +#define RTC_IER_TIMEN (0x1u << 3) /**< \brief (RTC_IER) Time Event Interrupt Enable */ +#define RTC_IER_CALEN (0x1u << 4) /**< \brief (RTC_IER) Calendar Event Interrupt Enable */ +/* -------- RTC_IDR : (RTC Offset: 0x24) Interrupt Disable Register -------- */ +#define RTC_IDR_ACKDIS (0x1u << 0) /**< \brief (RTC_IDR) Acknowledge Update Interrupt Disable */ +#define RTC_IDR_ALRDIS (0x1u << 1) /**< \brief (RTC_IDR) Alarm Interrupt Disable */ +#define RTC_IDR_SECDIS (0x1u << 2) /**< \brief (RTC_IDR) Second Event Interrupt Disable */ +#define RTC_IDR_TIMDIS (0x1u << 3) /**< \brief (RTC_IDR) Time Event Interrupt Disable */ +#define RTC_IDR_CALDIS (0x1u << 4) /**< \brief (RTC_IDR) Calendar Event Interrupt Disable */ +/* -------- RTC_IMR : (RTC Offset: 0x28) Interrupt Mask Register -------- */ +#define RTC_IMR_ACK (0x1u << 0) /**< \brief (RTC_IMR) Acknowledge Update Interrupt Mask */ +#define RTC_IMR_ALR (0x1u << 1) /**< \brief (RTC_IMR) Alarm Interrupt Mask */ +#define RTC_IMR_SEC (0x1u << 2) /**< \brief (RTC_IMR) Second Event Interrupt Mask */ +#define RTC_IMR_TIM (0x1u << 3) /**< \brief (RTC_IMR) Time Event Interrupt Mask */ +#define RTC_IMR_CAL (0x1u << 4) /**< \brief (RTC_IMR) Calendar Event Interrupt Mask */ +/* -------- RTC_VER : (RTC Offset: 0x2C) Valid Entry Register -------- */ +#define RTC_VER_NVTIM (0x1u << 0) /**< \brief (RTC_VER) Non-valid Time */ +#define RTC_VER_NVCAL (0x1u << 1) /**< \brief (RTC_VER) Non-valid Calendar */ +#define RTC_VER_NVTIMALR (0x1u << 2) /**< \brief (RTC_VER) Non-valid Time Alarm */ +#define RTC_VER_NVCALALR (0x1u << 3) /**< \brief (RTC_VER) Non-valid Calendar Alarm */ +/* -------- RTC_WPMR : (RTC Offset: 0xE4) Write Protect Mode Register -------- */ +#define RTC_WPMR_WPEN (0x1u << 0) /**< \brief (RTC_WPMR) Write Protect Enable */ +#define RTC_WPMR_WPKEY_Pos 8 +#define RTC_WPMR_WPKEY_Msk (0xffffffu << RTC_WPMR_WPKEY_Pos) /**< \brief (RTC_WPMR) */ +#define RTC_WPMR_WPKEY(value) ((RTC_WPMR_WPKEY_Msk & ((value) << RTC_WPMR_WPKEY_Pos))) + +/*@}*/ + + +#endif /* _SAM3U_RTC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_rtt.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_rtt.h new file mode 100644 index 000000000..72780b0d6 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_rtt.h @@ -0,0 +1,69 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_RTT_COMPONENT_ +#define _SAM3U_RTT_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Real-time Timer */ +/* ============================================================================= */ +/** \addtogroup SAM3U_RTT Real-time Timer */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Rtt hardware registers */ +typedef struct { + RwReg RTT_MR; /**< \brief (Rtt Offset: 0x00) Mode Register */ + RwReg RTT_AR; /**< \brief (Rtt Offset: 0x04) Alarm Register */ + RoReg RTT_VR; /**< \brief (Rtt Offset: 0x08) Value Register */ + RoReg RTT_SR; /**< \brief (Rtt Offset: 0x0C) Status Register */ +} Rtt; +#endif /* __ASSEMBLY__ */ +/* -------- RTT_MR : (RTT Offset: 0x00) Mode Register -------- */ +#define RTT_MR_RTPRES_Pos 0 +#define RTT_MR_RTPRES_Msk (0xffffu << RTT_MR_RTPRES_Pos) /**< \brief (RTT_MR) Real-time Timer Prescaler Value */ +#define RTT_MR_RTPRES(value) ((RTT_MR_RTPRES_Msk & ((value) << RTT_MR_RTPRES_Pos))) +#define RTT_MR_ALMIEN (0x1u << 16) /**< \brief (RTT_MR) Alarm Interrupt Enable */ +#define RTT_MR_RTTINCIEN (0x1u << 17) /**< \brief (RTT_MR) Real-time Timer Increment Interrupt Enable */ +#define RTT_MR_RTTRST (0x1u << 18) /**< \brief (RTT_MR) Real-time Timer Restart */ +/* -------- RTT_AR : (RTT Offset: 0x04) Alarm Register -------- */ +#define RTT_AR_ALMV_Pos 0 +#define RTT_AR_ALMV_Msk (0xffffffffu << RTT_AR_ALMV_Pos) /**< \brief (RTT_AR) Alarm Value */ +#define RTT_AR_ALMV(value) ((RTT_AR_ALMV_Msk & ((value) << RTT_AR_ALMV_Pos))) +/* -------- RTT_VR : (RTT Offset: 0x08) Value Register -------- */ +#define RTT_VR_CRTV_Pos 0 +#define RTT_VR_CRTV_Msk (0xffffffffu << RTT_VR_CRTV_Pos) /**< \brief (RTT_VR) Current Real-time Value */ +/* -------- RTT_SR : (RTT Offset: 0x0C) Status Register -------- */ +#define RTT_SR_ALMS (0x1u << 0) /**< \brief (RTT_SR) Real-time Alarm Status */ +#define RTT_SR_RTTINC (0x1u << 1) /**< \brief (RTT_SR) Real-time Timer Increment */ + +/*@}*/ + + +#endif /* _SAM3U_RTT_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_smc.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_smc.h new file mode 100644 index 000000000..8effce490 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_smc.h @@ -0,0 +1,485 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_SMC_COMPONENT_ +#define _SAM3U_SMC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Static Memory Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3U_SMC Static Memory Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief SmcCs_number hardware registers */ +typedef struct { + RwReg SMC_SETUP; /**< \brief (SmcCs_number Offset: 0x0) SMC Setup Register */ + RwReg SMC_PULSE; /**< \brief (SmcCs_number Offset: 0x4) SMC Pulse Register */ + RwReg SMC_CYCLE; /**< \brief (SmcCs_number Offset: 0x8) SMC Cycle Register */ + RwReg SMC_TIMINGS; /**< \brief (SmcCs_number Offset: 0xC) SMC Timings Register */ + RwReg SMC_MODE; /**< \brief (SmcCs_number Offset: 0x10) SMC Mode Register */ +} SmcCs_number; +/** \brief Smc hardware registers */ +#define SMCCS_NUMBER_NUMBER 4 +typedef struct { + RwReg SMC_CFG; /**< \brief (Smc Offset: 0x000) SMC NFC Configuration Register */ + WoReg SMC_CTRL; /**< \brief (Smc Offset: 0x004) SMC NFC Control Register */ + RoReg SMC_SR; /**< \brief (Smc Offset: 0x008) SMC NFC Status Register */ + WoReg SMC_IER; /**< \brief (Smc Offset: 0x00C) SMC NFC Interrupt Enable Register */ + WoReg SMC_IDR; /**< \brief (Smc Offset: 0x010) SMC NFC Interrupt Disable Register */ + RoReg SMC_IMR; /**< \brief (Smc Offset: 0x014) SMC NFC Interrupt Mask Register */ + RwReg SMC_ADDR; /**< \brief (Smc Offset: 0x018) SMC NFC Address Cycle Zero Register */ + RwReg SMC_BANK; /**< \brief (Smc Offset: 0x01C) SMC Bank Address Register */ + WoReg SMC_ECC_CTRL; /**< \brief (Smc Offset: 0x020) SMC ECC Control Register */ + RwReg SMC_ECC_MD; /**< \brief (Smc Offset: 0x024) SMC ECC Mode Register */ + RoReg SMC_ECC_SR1; /**< \brief (Smc Offset: 0x028) SMC ECC Status 1 Register */ + RoReg SMC_ECC_PR0; /**< \brief (Smc Offset: 0x02C) SMC ECC Parity 0 Register */ + RoReg SMC_ECC_PR1; /**< \brief (Smc Offset: 0x030) SMC ECC parity 1 Register */ + RoReg SMC_ECC_SR2; /**< \brief (Smc Offset: 0x034) SMC ECC status 2 Register */ + RoReg SMC_ECC_PR2; /**< \brief (Smc Offset: 0x038) SMC ECC parity 2 Register */ + RoReg SMC_ECC_PR3; /**< \brief (Smc Offset: 0x03C) SMC ECC parity 3 Register */ + RoReg SMC_ECC_PR4; /**< \brief (Smc Offset: 0x040) SMC ECC parity 4 Register */ + RoReg SMC_ECC_PR5; /**< \brief (Smc Offset: 0x044) SMC ECC parity 5 Register */ + RoReg SMC_ECC_PR6; /**< \brief (Smc Offset: 0x048) SMC ECC parity 6 Register */ + RoReg SMC_ECC_PR7; /**< \brief (Smc Offset: 0x04C) SMC ECC parity 7 Register */ + RoReg SMC_ECC_PR8; /**< \brief (Smc Offset: 0x050) SMC ECC parity 8 Register */ + RoReg SMC_ECC_PR9; /**< \brief (Smc Offset: 0x054) SMC ECC parity 9 Register */ + RoReg SMC_ECC_PR10; /**< \brief (Smc Offset: 0x058) SMC ECC parity 10 Register */ + RoReg SMC_ECC_PR11; /**< \brief (Smc Offset: 0x05C) SMC ECC parity 11 Register */ + RoReg SMC_ECC_PR12; /**< \brief (Smc Offset: 0x060) SMC ECC parity 12 Register */ + RoReg SMC_ECC_PR13; /**< \brief (Smc Offset: 0x064) SMC ECC parity 13 Register */ + RoReg SMC_ECC_PR14; /**< \brief (Smc Offset: 0x068) SMC ECC parity 14 Register */ + RoReg SMC_ECC_PR15; /**< \brief (Smc Offset: 0x06C) SMC ECC parity 15 Register */ + SmcCs_number SMC_CS_NUMBER[SMCCS_NUMBER_NUMBER]; /**< \brief (Smc Offset: 0x70) CS_number = 0 .. 3 */ + RoReg Reserved1[20]; + RwReg SMC_OCMS; /**< \brief (Smc Offset: 0x110) SMC OCMS Register */ + WoReg SMC_KEY1; /**< \brief (Smc Offset: 0x114) SMC OCMS KEY1 Register */ + WoReg SMC_KEY2; /**< \brief (Smc Offset: 0x118) SMC OCMS KEY2 Register */ + RoReg Reserved2[50]; + WoReg SMC_WPCR; /**< \brief (Smc Offset: 0x1E4) Write Protection Control Register */ + RoReg SMC_WPSR; /**< \brief (Smc Offset: 0x1E8) Write Protection Status Register */ +} Smc; +#endif /* __ASSEMBLY__ */ +/* -------- SMC_CFG : (SMC Offset: 0x000) SMC NFC Configuration Register -------- */ +#define SMC_CFG_PAGESIZE_Pos 0 +#define SMC_CFG_PAGESIZE_Msk (0x3u << SMC_CFG_PAGESIZE_Pos) /**< \brief (SMC_CFG) */ +#define SMC_CFG_PAGESIZE_PS512_16 (0x0u << 0) /**< \brief (SMC_CFG) Main area 512 Bytes + Spare area 16 Bytes = 528 Bytes */ +#define SMC_CFG_PAGESIZE_PS1024_32 (0x1u << 0) /**< \brief (SMC_CFG) Main area 1024 Bytes + Spare area 32 Bytes = 1056 Bytes */ +#define SMC_CFG_PAGESIZE_PS2048_64 (0x2u << 0) /**< \brief (SMC_CFG) Main area 2048 Bytes + Spare area 64 Bytes = 2112 Bytes */ +#define SMC_CFG_PAGESIZE_PS4096_128 (0x3u << 0) /**< \brief (SMC_CFG) Main area 4096 Bytes + Spare area 128 Bytes = 4224 Bytes */ +#define SMC_CFG_WSPARE (0x1u << 8) /**< \brief (SMC_CFG) Write Spare Area */ +#define SMC_CFG_RSPARE (0x1u << 9) /**< \brief (SMC_CFG) Read Spare Area */ +#define SMC_CFG_EDGECTRL (0x1u << 12) /**< \brief (SMC_CFG) Rising/Falling Edge Detection Control */ +#define SMC_CFG_RBEDGE (0x1u << 13) /**< \brief (SMC_CFG) Ready/Busy Signal Edge Detection */ +#define SMC_CFG_DTOCYC_Pos 16 +#define SMC_CFG_DTOCYC_Msk (0xfu << SMC_CFG_DTOCYC_Pos) /**< \brief (SMC_CFG) Data Timeout Cycle Number */ +#define SMC_CFG_DTOCYC(value) ((SMC_CFG_DTOCYC_Msk & ((value) << SMC_CFG_DTOCYC_Pos))) +#define SMC_CFG_DTOMUL_Pos 20 +#define SMC_CFG_DTOMUL_Msk (0x7u << SMC_CFG_DTOMUL_Pos) /**< \brief (SMC_CFG) Data Timeout Multiplier */ +#define SMC_CFG_DTOMUL_X1 (0x0u << 20) /**< \brief (SMC_CFG) DTOCYC */ +#define SMC_CFG_DTOMUL_X16 (0x1u << 20) /**< \brief (SMC_CFG) DTOCYC x 16 */ +#define SMC_CFG_DTOMUL_X128 (0x2u << 20) /**< \brief (SMC_CFG) DTOCYC x 128 */ +#define SMC_CFG_DTOMUL_X256 (0x3u << 20) /**< \brief (SMC_CFG) DTOCYC x 256 */ +#define SMC_CFG_DTOMUL_X1024 (0x4u << 20) /**< \brief (SMC_CFG) DTOCYC x 1024 */ +#define SMC_CFG_DTOMUL_X4096 (0x5u << 20) /**< \brief (SMC_CFG) DTOCYC x 4096 */ +#define SMC_CFG_DTOMUL_X65536 (0x6u << 20) /**< \brief (SMC_CFG) DTOCYC x 65536 */ +#define SMC_CFG_DTOMUL_X1048576 (0x7u << 20) /**< \brief (SMC_CFG) DTOCYC x 1048576 */ +/* -------- SMC_CTRL : (SMC Offset: 0x004) SMC NFC Control Register -------- */ +#define SMC_CTRL_NFCEN (0x1u << 0) /**< \brief (SMC_CTRL) NAND Flash Controller Enable */ +#define SMC_CTRL_NFCDIS (0x1u << 1) /**< \brief (SMC_CTRL) NAND Flash Controller Disable */ +/* -------- SMC_SR : (SMC Offset: 0x008) SMC NFC Status Register -------- */ +#define SMC_SR_SMCSTS (0x1u << 0) /**< \brief (SMC_SR) NAND Flash Controller status (this field cannot be reset) */ +#define SMC_SR_RB_RISE (0x1u << 4) /**< \brief (SMC_SR) Selected Ready Busy Rising Edge Detected */ +#define SMC_SR_RB_FALL (0x1u << 5) /**< \brief (SMC_SR) Selected Ready Busy Falling Edge Detected */ +#define SMC_SR_NFCBUSY (0x1u << 8) /**< \brief (SMC_SR) NFC Busy (this field cannot be reset) */ +#define SMC_SR_NFCWR (0x1u << 11) /**< \brief (SMC_SR) NFC Write/Read Operation (this field cannot be reset) */ +#define SMC_SR_NFCSID_Pos 12 +#define SMC_SR_NFCSID_Msk (0x7u << SMC_SR_NFCSID_Pos) /**< \brief (SMC_SR) NFC Chip Select ID (this field cannot be reset) */ +#define SMC_SR_XFRDONE (0x1u << 16) /**< \brief (SMC_SR) NFC Data Transfer Terminated */ +#define SMC_SR_CMDDONE (0x1u << 17) /**< \brief (SMC_SR) Command Done */ +#define SMC_SR_DTOE (0x1u << 20) /**< \brief (SMC_SR) Data Timeout Error */ +#define SMC_SR_UNDEF (0x1u << 21) /**< \brief (SMC_SR) Undefined Area Error */ +#define SMC_SR_AWB (0x1u << 22) /**< \brief (SMC_SR) Accessing While Busy */ +#define SMC_SR_NFCASE (0x1u << 23) /**< \brief (SMC_SR) NFC Access Size Error */ +#define SMC_SR_RB_EDGE0 (0x1u << 24) /**< \brief (SMC_SR) Ready/Busy Line 0 Edge Detected */ +/* -------- SMC_IER : (SMC Offset: 0x00C) SMC NFC Interrupt Enable Register -------- */ +#define SMC_IER_RB_RISE (0x1u << 4) /**< \brief (SMC_IER) Ready Busy Rising Edge Detection Interrupt Enable */ +#define SMC_IER_RB_FALL (0x1u << 5) /**< \brief (SMC_IER) Ready Busy Falling Edge Detection Interrupt Enable */ +#define SMC_IER_XFRDONE (0x1u << 16) /**< \brief (SMC_IER) Transfer Done Interrupt Enable */ +#define SMC_IER_CMDDONE (0x1u << 17) /**< \brief (SMC_IER) Command Done Interrupt Enable */ +#define SMC_IER_DTOE (0x1u << 20) /**< \brief (SMC_IER) Data Timeout Error Interrupt Enable */ +#define SMC_IER_UNDEF (0x1u << 21) /**< \brief (SMC_IER) Undefined Area Access Interrupt Enable */ +#define SMC_IER_AWB (0x1u << 22) /**< \brief (SMC_IER) Accessing While Busy Interrupt Enable */ +#define SMC_IER_NFCASE (0x1u << 23) /**< \brief (SMC_IER) NFC Access Size Error Interrupt Enable */ +#define SMC_IER_RB_EDGE0 (0x1u << 24) /**< \brief (SMC_IER) Ready/Busy Line 0 Interrupt Enable */ +/* -------- SMC_IDR : (SMC Offset: 0x010) SMC NFC Interrupt Disable Register -------- */ +#define SMC_IDR_RB_RISE (0x1u << 4) /**< \brief (SMC_IDR) Ready Busy Rising Edge Detection Interrupt Disable */ +#define SMC_IDR_RB_FALL (0x1u << 5) /**< \brief (SMC_IDR) Ready Busy Falling Edge Detection Interrupt Disable */ +#define SMC_IDR_XFRDONE (0x1u << 16) /**< \brief (SMC_IDR) Transfer Done Interrupt Disable */ +#define SMC_IDR_CMDDONE (0x1u << 17) /**< \brief (SMC_IDR) Command Done Interrupt Disable */ +#define SMC_IDR_DTOE (0x1u << 20) /**< \brief (SMC_IDR) Data Timeout Error Interrupt Disable */ +#define SMC_IDR_UNDEF (0x1u << 21) /**< \brief (SMC_IDR) Undefined Area Access Interrupt Disable */ +#define SMC_IDR_AWB (0x1u << 22) /**< \brief (SMC_IDR) Accessing While Busy Interrupt Disable */ +#define SMC_IDR_NFCASE (0x1u << 23) /**< \brief (SMC_IDR) NFC Access Size Error Interrupt Disable */ +#define SMC_IDR_RB_EDGE0 (0x1u << 24) /**< \brief (SMC_IDR) Ready/Busy Line 0 Interrupt Disable */ +/* -------- SMC_IMR : (SMC Offset: 0x014) SMC NFC Interrupt Mask Register -------- */ +#define SMC_IMR_RB_RISE (0x1u << 4) /**< \brief (SMC_IMR) Ready Busy Rising Edge Detection Interrupt Mask */ +#define SMC_IMR_RB_FALL (0x1u << 5) /**< \brief (SMC_IMR) Ready Busy Falling Edge Detection Interrupt Mask */ +#define SMC_IMR_XFRDONE (0x1u << 16) /**< \brief (SMC_IMR) Transfer Done Interrupt Mask */ +#define SMC_IMR_CMDDONE (0x1u << 17) /**< \brief (SMC_IMR) Command Done Interrupt Mask */ +#define SMC_IMR_DTOE (0x1u << 20) /**< \brief (SMC_IMR) Data Timeout Error Interrupt Mask */ +#define SMC_IMR_UNDEF (0x1u << 21) /**< \brief (SMC_IMR) Undefined Area Access Interrupt Mask5 */ +#define SMC_IMR_AWB (0x1u << 22) /**< \brief (SMC_IMR) Accessing While Busy Interrupt Mask */ +#define SMC_IMR_NFCASE (0x1u << 23) /**< \brief (SMC_IMR) NFC Access Size Error Interrupt Mask */ +#define SMC_IMR_RB_EDGE0 (0x1u << 24) /**< \brief (SMC_IMR) Ready/Busy Line 0 Interrupt Mask */ +/* -------- SMC_ADDR : (SMC Offset: 0x018) SMC NFC Address Cycle Zero Register -------- */ +#define SMC_ADDR_ADDR_CYCLE0_Pos 0 +#define SMC_ADDR_ADDR_CYCLE0_Msk (0xffu << SMC_ADDR_ADDR_CYCLE0_Pos) /**< \brief (SMC_ADDR) NAND Flash Array Address cycle 0 */ +#define SMC_ADDR_ADDR_CYCLE0(value) ((SMC_ADDR_ADDR_CYCLE0_Msk & ((value) << SMC_ADDR_ADDR_CYCLE0_Pos))) +/* -------- SMC_BANK : (SMC Offset: 0x01C) SMC Bank Address Register -------- */ +#define SMC_BANK_BANK_Pos 0 +#define SMC_BANK_BANK_Msk (0x7u << SMC_BANK_BANK_Pos) /**< \brief (SMC_BANK) Bank Identifier */ +#define SMC_BANK_BANK(value) ((SMC_BANK_BANK_Msk & ((value) << SMC_BANK_BANK_Pos))) +/* -------- SMC_ECC_CTRL : (SMC Offset: 0x020) SMC ECC Control Register -------- */ +#define SMC_ECC_CTRL_RST (0x1u << 0) /**< \brief (SMC_ECC_CTRL) Reset ECC */ +#define SMC_ECC_CTRL_SWRST (0x1u << 1) /**< \brief (SMC_ECC_CTRL) Software Reset */ +/* -------- SMC_ECC_MD : (SMC Offset: 0x024) SMC ECC Mode Register -------- */ +#define SMC_ECC_MD_ECC_PAGESIZE_Pos 0 +#define SMC_ECC_MD_ECC_PAGESIZE_Msk (0x3u << SMC_ECC_MD_ECC_PAGESIZE_Pos) /**< \brief (SMC_ECC_MD) ECC Page Size */ +#define SMC_ECC_MD_ECC_PAGESIZE_PS512_16 (0x0u << 0) /**< \brief (SMC_ECC_MD) Main area 512 Bytes + Spare area 16 Bytes = 528 Bytes */ +#define SMC_ECC_MD_ECC_PAGESIZE_PS1024_32 (0x1u << 0) /**< \brief (SMC_ECC_MD) Main area 1024 Bytes + Spare area 32 Bytes = 1056 Bytes */ +#define SMC_ECC_MD_ECC_PAGESIZE_PS2048_64 (0x2u << 0) /**< \brief (SMC_ECC_MD) Main area 2048 Bytes + Spare area 64 Bytes = 2112 Bytes */ +#define SMC_ECC_MD_ECC_PAGESIZE_PS4096_128 (0x3u << 0) /**< \brief (SMC_ECC_MD) Main area 4096 Bytes + Spare area 128 Bytes = 4224 Bytes */ +#define SMC_ECC_MD_TYPCORREC_Pos 4 +#define SMC_ECC_MD_TYPCORREC_Msk (0x3u << SMC_ECC_MD_TYPCORREC_Pos) /**< \brief (SMC_ECC_MD) Type of Correction */ +#define SMC_ECC_MD_TYPCORREC_CPAGE (0x0u << 4) /**< \brief (SMC_ECC_MD) 1 bit correction for a page of 512/1024/2048/4096 Bytes (for 8 or 16-bit NAND Flash) */ +#define SMC_ECC_MD_TYPCORREC_C256B (0x1u << 4) /**< \brief (SMC_ECC_MD) 1 bit correction for 256 Bytes of data for a page of 512/2048/4096 bytes (for 8-bit NAND Flash only) */ +#define SMC_ECC_MD_TYPCORREC_C512B (0x2u << 4) /**< \brief (SMC_ECC_MD) 1 bit correction for 512 Bytes of data for a page of 512/2048/4096 bytes (for 8-bit NAND Flash only) */ +/* -------- SMC_ECC_SR1 : (SMC Offset: 0x028) SMC ECC Status 1 Register -------- */ +#define SMC_ECC_SR1_RECERR0 (0x1u << 0) /**< \brief (SMC_ECC_SR1) Recoverable Error */ +#define SMC_ECC_SR1_ECCERR0_Pos 1 +#define SMC_ECC_SR1_ECCERR0_Msk (0x3u << SMC_ECC_SR1_ECCERR0_Pos) /**< \brief (SMC_ECC_SR1) ECC Error */ +#define SMC_ECC_SR1_RECERR1 (0x1u << 4) /**< \brief (SMC_ECC_SR1) Recoverable Error in the page between the 256th and the 511th bytes or the 512nd and the 1023rd bytes */ +#define SMC_ECC_SR1_ECCERR1 (0x1u << 5) /**< \brief (SMC_ECC_SR1) ECC Error in the page between the 256th and the 511th bytes or between the 512nd and the 1023rd bytes */ +#define SMC_ECC_SR1_MULERR1 (0x1u << 6) /**< \brief (SMC_ECC_SR1) Multiple Error in the page between the 256th and the 511th bytes or between the 512nd and the 1023rd bytes */ +#define SMC_ECC_SR1_RECERR2 (0x1u << 8) /**< \brief (SMC_ECC_SR1) Recoverable Error in the page between the 512nd and the 767th bytes or between the 1024th and the 1535th bytes */ +#define SMC_ECC_SR1_ECCERR2 (0x1u << 9) /**< \brief (SMC_ECC_SR1) ECC Error in the page between the 512nd and the 767th bytes or between the 1024th and the 1535th bytes */ +#define SMC_ECC_SR1_MULERR2 (0x1u << 10) /**< \brief (SMC_ECC_SR1) Multiple Error in the page between the 512nd and the 767th bytes or between the 1024th and the 1535th bytes */ +#define SMC_ECC_SR1_RECERR3 (0x1u << 12) /**< \brief (SMC_ECC_SR1) Recoverable Error in the page between the 768th and the 1023rd bytes or between the 1536th and the 2047th bytes */ +#define SMC_ECC_SR1_ECCERR3 (0x1u << 13) /**< \brief (SMC_ECC_SR1) ECC Error in the page between the 768th and the 1023rd bytes or between the 1536th and the 2047th bytes */ +#define SMC_ECC_SR1_MULERR3 (0x1u << 14) /**< \brief (SMC_ECC_SR1) Multiple Error in the page between the 768th and the 1023rd bytes or between the 1536th and the 2047th bytes */ +#define SMC_ECC_SR1_RECERR4 (0x1u << 16) /**< \brief (SMC_ECC_SR1) Recoverable Error in the page between the 1024th and the 1279th bytes or between the 2048th and the 2559th bytes */ +#define SMC_ECC_SR1_ECCERR4_Pos 17 +#define SMC_ECC_SR1_ECCERR4_Msk (0x3u << SMC_ECC_SR1_ECCERR4_Pos) /**< \brief (SMC_ECC_SR1) ECC Error in the page between the 1024th and the 1279th bytes or between the 2048th and the 2559th bytes */ +#define SMC_ECC_SR1_RECERR5 (0x1u << 20) /**< \brief (SMC_ECC_SR1) Recoverable Error in the page between the 1280th and the 1535th bytes or between the 2560th and the 3071st bytes */ +#define SMC_ECC_SR1_ECCERR5_Pos 21 +#define SMC_ECC_SR1_ECCERR5_Msk (0x3u << SMC_ECC_SR1_ECCERR5_Pos) /**< \brief (SMC_ECC_SR1) ECC Error in the page between the 1280th and the 1535th bytes or between the 2560th and the 3071st bytes */ +#define SMC_ECC_SR1_RECERR6 (0x1u << 24) /**< \brief (SMC_ECC_SR1) Recoverable Error in the page between the 1536th and the 1791st bytes or between the 3072nd and the 3583rd bytes */ +#define SMC_ECC_SR1_ECCERR6_Pos 25 +#define SMC_ECC_SR1_ECCERR6_Msk (0x3u << SMC_ECC_SR1_ECCERR6_Pos) /**< \brief (SMC_ECC_SR1) ECC Error in the page between the 1536th and the 1791st bytes or between the 3072nd and the 3583rd bytes */ +#define SMC_ECC_SR1_RECERR7 (0x1u << 28) /**< \brief (SMC_ECC_SR1) Recoverable Error in the page between the 1792nd and the 2047th bytes or between the 3584th and the 4095th bytes */ +#define SMC_ECC_SR1_ECCERR7_Pos 29 +#define SMC_ECC_SR1_ECCERR7_Msk (0x3u << SMC_ECC_SR1_ECCERR7_Pos) /**< \brief (SMC_ECC_SR1) ECC Error in the page between the 1792nd and the 2047th bytes or between the 3584th and the 4095th bytes */ +/* -------- SMC_ECC_PR0 : (SMC Offset: 0x02C) SMC ECC Parity 0 Register -------- */ +#define SMC_ECC_PR0_BITADDR_Pos 0 +#define SMC_ECC_PR0_BITADDR_Msk (0xfu << SMC_ECC_PR0_BITADDR_Pos) /**< \brief (SMC_ECC_PR0) Bit Address */ +#define SMC_ECC_PR0_WORDADDR_Pos 4 +#define SMC_ECC_PR0_WORDADDR_Msk (0xfffu << SMC_ECC_PR0_WORDADDR_Pos) /**< \brief (SMC_ECC_PR0) Word Address */ +#define SMC_ECC_PR0_BITADDR_W9BIT_Pos 0 +#define SMC_ECC_PR0_BITADDR_W9BIT_Msk (0x7u << SMC_ECC_PR0_BITADDR_W9BIT_Pos) /**< \brief (SMC_ECC_PR0) Corrupted Bit Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR0_WORDADDR_W9BIT_Pos 3 +#define SMC_ECC_PR0_WORDADDR_W9BIT_Msk (0x1ffu << SMC_ECC_PR0_WORDADDR_W9BIT_Pos) /**< \brief (SMC_ECC_PR0) Corrupted Word Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR0_NPARITY_Pos 12 +#define SMC_ECC_PR0_NPARITY_Msk (0xfffu << SMC_ECC_PR0_NPARITY_Pos) /**< \brief (SMC_ECC_PR0) Parity N */ +#define SMC_ECC_PR0_BITADDR_W8BIT_Pos 0 +#define SMC_ECC_PR0_BITADDR_W8BIT_Msk (0x7u << SMC_ECC_PR0_BITADDR_W8BIT_Pos) /**< \brief (SMC_ECC_PR0) Corrupted Bit Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR0_WORDADDR_W8BIT_Pos 3 +#define SMC_ECC_PR0_WORDADDR_W8BIT_Msk (0xffu << SMC_ECC_PR0_WORDADDR_W8BIT_Pos) /**< \brief (SMC_ECC_PR0) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR0_NPARITY_W8BIT_Pos 12 +#define SMC_ECC_PR0_NPARITY_W8BIT_Msk (0x7ffu << SMC_ECC_PR0_NPARITY_W8BIT_Pos) /**< \brief (SMC_ECC_PR0) Parity N */ +/* -------- SMC_ECC_PR1 : (SMC Offset: 0x030) SMC ECC parity 1 Register -------- */ +#define SMC_ECC_PR1_NPARITY_Pos 0 +#define SMC_ECC_PR1_NPARITY_Msk (0xffffu << SMC_ECC_PR1_NPARITY_Pos) /**< \brief (SMC_ECC_PR1) Parity N */ +#define SMC_ECC_PR1_BITADDR_Pos 0 +#define SMC_ECC_PR1_BITADDR_Msk (0x7u << SMC_ECC_PR1_BITADDR_Pos) /**< \brief (SMC_ECC_PR1) Corrupted Bit Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR1_WORDADDR_Pos 3 +#define SMC_ECC_PR1_WORDADDR_Msk (0x1ffu << SMC_ECC_PR1_WORDADDR_Pos) /**< \brief (SMC_ECC_PR1) Corrupted Word Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR1_NPARITY_W9BIT_Pos 12 +#define SMC_ECC_PR1_NPARITY_W9BIT_Msk (0xfffu << SMC_ECC_PR1_NPARITY_W9BIT_Pos) /**< \brief (SMC_ECC_PR1) Parity N */ +#define SMC_ECC_PR1_WORDADDR_W8BIT_Pos 3 +#define SMC_ECC_PR1_WORDADDR_W8BIT_Msk (0xffu << SMC_ECC_PR1_WORDADDR_W8BIT_Pos) /**< \brief (SMC_ECC_PR1) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR1_NPARITY_W8BIT_Pos 12 +#define SMC_ECC_PR1_NPARITY_W8BIT_Msk (0x7ffu << SMC_ECC_PR1_NPARITY_W8BIT_Pos) /**< \brief (SMC_ECC_PR1) Parity N */ +/* -------- SMC_ECC_SR2 : (SMC Offset: 0x034) SMC ECC status 2 Register -------- */ +#define SMC_ECC_SR2_RECERR8 (0x1u << 0) /**< \brief (SMC_ECC_SR2) Recoverable Error in the page between the 2048th and the 2303rd bytes */ +#define SMC_ECC_SR2_ECCERR8_Pos 1 +#define SMC_ECC_SR2_ECCERR8_Msk (0x3u << SMC_ECC_SR2_ECCERR8_Pos) /**< \brief (SMC_ECC_SR2) ECC Error in the page between the 2048th and the 2303rd bytes */ +#define SMC_ECC_SR2_RECERR9 (0x1u << 4) /**< \brief (SMC_ECC_SR2) Recoverable Error in the page between the 2304th and the 2559th bytes */ +#define SMC_ECC_SR2_ECCERR9 (0x1u << 5) /**< \brief (SMC_ECC_SR2) ECC Error in the page between the 2304th and the 2559th bytes */ +#define SMC_ECC_SR2_MULERR9 (0x1u << 6) /**< \brief (SMC_ECC_SR2) Multiple Error in the page between the 2304th and the 2559th bytes */ +#define SMC_ECC_SR2_RECERR10 (0x1u << 8) /**< \brief (SMC_ECC_SR2) Recoverable Error in the page between the 2560th and the 2815th bytes */ +#define SMC_ECC_SR2_ECCERR10 (0x1u << 9) /**< \brief (SMC_ECC_SR2) ECC Error in the page between the 2560th and the 2815th bytes */ +#define SMC_ECC_SR2_MULERR10 (0x1u << 10) /**< \brief (SMC_ECC_SR2) Multiple Error in the page between the 2560th and the 2815th bytes */ +#define SMC_ECC_SR2_RECERR11 (0x1u << 12) /**< \brief (SMC_ECC_SR2) Recoverable Error in the page between the 2816th and the 3071st bytes */ +#define SMC_ECC_SR2_ECCERR11 (0x1u << 13) /**< \brief (SMC_ECC_SR2) ECC Error in the page between the 2816th and the 3071st bytes */ +#define SMC_ECC_SR2_MULERR11 (0x1u << 14) /**< \brief (SMC_ECC_SR2) Multiple Error in the page between the 2816th and the 3071st bytes */ +#define SMC_ECC_SR2_RECERR12 (0x1u << 16) /**< \brief (SMC_ECC_SR2) Recoverable Error in the page between the 3072nd and the 3327th bytes */ +#define SMC_ECC_SR2_ECCERR12_Pos 17 +#define SMC_ECC_SR2_ECCERR12_Msk (0x3u << SMC_ECC_SR2_ECCERR12_Pos) /**< \brief (SMC_ECC_SR2) ECC Error in the page between the 3072nd and the 3327th bytes */ +#define SMC_ECC_SR2_RECERR13 (0x1u << 20) /**< \brief (SMC_ECC_SR2) Recoverable Error in the page between the 3328th and the 3583rd bytes */ +#define SMC_ECC_SR2_ECCERR13_Pos 21 +#define SMC_ECC_SR2_ECCERR13_Msk (0x3u << SMC_ECC_SR2_ECCERR13_Pos) /**< \brief (SMC_ECC_SR2) ECC Error in the page between the 3328th and the 3583rd bytes */ +#define SMC_ECC_SR2_RECERR14 (0x1u << 24) /**< \brief (SMC_ECC_SR2) Recoverable Error in the page between the 3584th and the 3839th bytes */ +#define SMC_ECC_SR2_ECCERR14_Pos 25 +#define SMC_ECC_SR2_ECCERR14_Msk (0x3u << SMC_ECC_SR2_ECCERR14_Pos) /**< \brief (SMC_ECC_SR2) ECC Error in the page between the 3584th and the 3839th bytes */ +#define SMC_ECC_SR2_RECERR15 (0x1u << 28) /**< \brief (SMC_ECC_SR2) Recoverable Error in the page between the 3840th and the 4095th bytes */ +#define SMC_ECC_SR2_ECCERR15_Pos 29 +#define SMC_ECC_SR2_ECCERR15_Msk (0x3u << SMC_ECC_SR2_ECCERR15_Pos) /**< \brief (SMC_ECC_SR2) ECC Error in the page between the 3840th and the 4095th bytes */ +/* -------- SMC_ECC_PR2 : (SMC Offset: 0x038) SMC ECC parity 2 Register -------- */ +#define SMC_ECC_PR2_BITADDR_Pos 0 +#define SMC_ECC_PR2_BITADDR_Msk (0x7u << SMC_ECC_PR2_BITADDR_Pos) /**< \brief (SMC_ECC_PR2) Corrupted Bit Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR2_WORDADDR_Pos 3 +#define SMC_ECC_PR2_WORDADDR_Msk (0x1ffu << SMC_ECC_PR2_WORDADDR_Pos) /**< \brief (SMC_ECC_PR2) Corrupted Word Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR2_NPARITY_Pos 12 +#define SMC_ECC_PR2_NPARITY_Msk (0xfffu << SMC_ECC_PR2_NPARITY_Pos) /**< \brief (SMC_ECC_PR2) Parity N */ +#define SMC_ECC_PR2_WORDADDR_W8BIT_Pos 3 +#define SMC_ECC_PR2_WORDADDR_W8BIT_Msk (0xffu << SMC_ECC_PR2_WORDADDR_W8BIT_Pos) /**< \brief (SMC_ECC_PR2) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR2_NPARITY_W8BIT_Pos 12 +#define SMC_ECC_PR2_NPARITY_W8BIT_Msk (0x7ffu << SMC_ECC_PR2_NPARITY_W8BIT_Pos) /**< \brief (SMC_ECC_PR2) Parity N */ +/* -------- SMC_ECC_PR3 : (SMC Offset: 0x03C) SMC ECC parity 3 Register -------- */ +#define SMC_ECC_PR3_BITADDR_Pos 0 +#define SMC_ECC_PR3_BITADDR_Msk (0x7u << SMC_ECC_PR3_BITADDR_Pos) /**< \brief (SMC_ECC_PR3) Corrupted Bit Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR3_WORDADDR_Pos 3 +#define SMC_ECC_PR3_WORDADDR_Msk (0x1ffu << SMC_ECC_PR3_WORDADDR_Pos) /**< \brief (SMC_ECC_PR3) Corrupted Word Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR3_NPARITY_Pos 12 +#define SMC_ECC_PR3_NPARITY_Msk (0xfffu << SMC_ECC_PR3_NPARITY_Pos) /**< \brief (SMC_ECC_PR3) Parity N */ +#define SMC_ECC_PR3_WORDADDR_W8BIT_Pos 3 +#define SMC_ECC_PR3_WORDADDR_W8BIT_Msk (0xffu << SMC_ECC_PR3_WORDADDR_W8BIT_Pos) /**< \brief (SMC_ECC_PR3) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR3_NPARITY_W8BIT_Pos 12 +#define SMC_ECC_PR3_NPARITY_W8BIT_Msk (0x7ffu << SMC_ECC_PR3_NPARITY_W8BIT_Pos) /**< \brief (SMC_ECC_PR3) Parity N */ +/* -------- SMC_ECC_PR4 : (SMC Offset: 0x040) SMC ECC parity 4 Register -------- */ +#define SMC_ECC_PR4_BITADDR_Pos 0 +#define SMC_ECC_PR4_BITADDR_Msk (0x7u << SMC_ECC_PR4_BITADDR_Pos) /**< \brief (SMC_ECC_PR4) Corrupted Bit Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR4_WORDADDR_Pos 3 +#define SMC_ECC_PR4_WORDADDR_Msk (0x1ffu << SMC_ECC_PR4_WORDADDR_Pos) /**< \brief (SMC_ECC_PR4) Corrupted Word Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR4_NPARITY_Pos 12 +#define SMC_ECC_PR4_NPARITY_Msk (0xfffu << SMC_ECC_PR4_NPARITY_Pos) /**< \brief (SMC_ECC_PR4) Parity N */ +#define SMC_ECC_PR4_WORDADDR_W8BIT_Pos 3 +#define SMC_ECC_PR4_WORDADDR_W8BIT_Msk (0xffu << SMC_ECC_PR4_WORDADDR_W8BIT_Pos) /**< \brief (SMC_ECC_PR4) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR4_NPARITY_W8BIT_Pos 12 +#define SMC_ECC_PR4_NPARITY_W8BIT_Msk (0x7ffu << SMC_ECC_PR4_NPARITY_W8BIT_Pos) /**< \brief (SMC_ECC_PR4) Parity N */ +/* -------- SMC_ECC_PR5 : (SMC Offset: 0x044) SMC ECC parity 5 Register -------- */ +#define SMC_ECC_PR5_BITADDR_Pos 0 +#define SMC_ECC_PR5_BITADDR_Msk (0x7u << SMC_ECC_PR5_BITADDR_Pos) /**< \brief (SMC_ECC_PR5) Corrupted Bit Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR5_WORDADDR_Pos 3 +#define SMC_ECC_PR5_WORDADDR_Msk (0x1ffu << SMC_ECC_PR5_WORDADDR_Pos) /**< \brief (SMC_ECC_PR5) Corrupted Word Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR5_NPARITY_Pos 12 +#define SMC_ECC_PR5_NPARITY_Msk (0xfffu << SMC_ECC_PR5_NPARITY_Pos) /**< \brief (SMC_ECC_PR5) Parity N */ +#define SMC_ECC_PR5_WORDADDR_W8BIT_Pos 3 +#define SMC_ECC_PR5_WORDADDR_W8BIT_Msk (0xffu << SMC_ECC_PR5_WORDADDR_W8BIT_Pos) /**< \brief (SMC_ECC_PR5) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR5_NPARITY_W8BIT_Pos 12 +#define SMC_ECC_PR5_NPARITY_W8BIT_Msk (0x7ffu << SMC_ECC_PR5_NPARITY_W8BIT_Pos) /**< \brief (SMC_ECC_PR5) Parity N */ +/* -------- SMC_ECC_PR6 : (SMC Offset: 0x048) SMC ECC parity 6 Register -------- */ +#define SMC_ECC_PR6_BITADDR_Pos 0 +#define SMC_ECC_PR6_BITADDR_Msk (0x7u << SMC_ECC_PR6_BITADDR_Pos) /**< \brief (SMC_ECC_PR6) Corrupted Bit Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR6_WORDADDR_Pos 3 +#define SMC_ECC_PR6_WORDADDR_Msk (0x1ffu << SMC_ECC_PR6_WORDADDR_Pos) /**< \brief (SMC_ECC_PR6) Corrupted Word Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR6_NPARITY_Pos 12 +#define SMC_ECC_PR6_NPARITY_Msk (0xfffu << SMC_ECC_PR6_NPARITY_Pos) /**< \brief (SMC_ECC_PR6) Parity N */ +#define SMC_ECC_PR6_WORDADDR_W8BIT_Pos 3 +#define SMC_ECC_PR6_WORDADDR_W8BIT_Msk (0xffu << SMC_ECC_PR6_WORDADDR_W8BIT_Pos) /**< \brief (SMC_ECC_PR6) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR6_NPARITY_W8BIT_Pos 12 +#define SMC_ECC_PR6_NPARITY_W8BIT_Msk (0x7ffu << SMC_ECC_PR6_NPARITY_W8BIT_Pos) /**< \brief (SMC_ECC_PR6) Parity N */ +/* -------- SMC_ECC_PR7 : (SMC Offset: 0x04C) SMC ECC parity 7 Register -------- */ +#define SMC_ECC_PR7_BITADDR_Pos 0 +#define SMC_ECC_PR7_BITADDR_Msk (0x7u << SMC_ECC_PR7_BITADDR_Pos) /**< \brief (SMC_ECC_PR7) Corrupted Bit Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR7_WORDADDR_Pos 3 +#define SMC_ECC_PR7_WORDADDR_Msk (0x1ffu << SMC_ECC_PR7_WORDADDR_Pos) /**< \brief (SMC_ECC_PR7) Corrupted Word Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR7_NPARITY_Pos 12 +#define SMC_ECC_PR7_NPARITY_Msk (0xfffu << SMC_ECC_PR7_NPARITY_Pos) /**< \brief (SMC_ECC_PR7) Parity N */ +#define SMC_ECC_PR7_WORDADDR_W8BIT_Pos 3 +#define SMC_ECC_PR7_WORDADDR_W8BIT_Msk (0xffu << SMC_ECC_PR7_WORDADDR_W8BIT_Pos) /**< \brief (SMC_ECC_PR7) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR7_NPARITY_W8BIT_Pos 12 +#define SMC_ECC_PR7_NPARITY_W8BIT_Msk (0x7ffu << SMC_ECC_PR7_NPARITY_W8BIT_Pos) /**< \brief (SMC_ECC_PR7) Parity N */ +/* -------- SMC_ECC_PR8 : (SMC Offset: 0x050) SMC ECC parity 8 Register -------- */ +#define SMC_ECC_PR8_BITADDR_Pos 0 +#define SMC_ECC_PR8_BITADDR_Msk (0x7u << SMC_ECC_PR8_BITADDR_Pos) /**< \brief (SMC_ECC_PR8) Corrupted Bit Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR8_WORDADDR_Pos 3 +#define SMC_ECC_PR8_WORDADDR_Msk (0xffu << SMC_ECC_PR8_WORDADDR_Pos) /**< \brief (SMC_ECC_PR8) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR8_NPARITY_Pos 12 +#define SMC_ECC_PR8_NPARITY_Msk (0x7ffu << SMC_ECC_PR8_NPARITY_Pos) /**< \brief (SMC_ECC_PR8) Parity N */ +/* -------- SMC_ECC_PR9 : (SMC Offset: 0x054) SMC ECC parity 9 Register -------- */ +#define SMC_ECC_PR9_BITADDR_Pos 0 +#define SMC_ECC_PR9_BITADDR_Msk (0x7u << SMC_ECC_PR9_BITADDR_Pos) /**< \brief (SMC_ECC_PR9) Corrupted Bit Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR9_WORDADDR_Pos 3 +#define SMC_ECC_PR9_WORDADDR_Msk (0xffu << SMC_ECC_PR9_WORDADDR_Pos) /**< \brief (SMC_ECC_PR9) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR9_NPARITY_Pos 12 +#define SMC_ECC_PR9_NPARITY_Msk (0x7ffu << SMC_ECC_PR9_NPARITY_Pos) /**< \brief (SMC_ECC_PR9) Parity N */ +/* -------- SMC_ECC_PR10 : (SMC Offset: 0x058) SMC ECC parity 10 Register -------- */ +#define SMC_ECC_PR10_BITADDR_Pos 0 +#define SMC_ECC_PR10_BITADDR_Msk (0x7u << SMC_ECC_PR10_BITADDR_Pos) /**< \brief (SMC_ECC_PR10) Corrupted Bit Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR10_WORDADDR_Pos 3 +#define SMC_ECC_PR10_WORDADDR_Msk (0xffu << SMC_ECC_PR10_WORDADDR_Pos) /**< \brief (SMC_ECC_PR10) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR10_NPARITY_Pos 12 +#define SMC_ECC_PR10_NPARITY_Msk (0x7ffu << SMC_ECC_PR10_NPARITY_Pos) /**< \brief (SMC_ECC_PR10) Parity N */ +/* -------- SMC_ECC_PR11 : (SMC Offset: 0x05C) SMC ECC parity 11 Register -------- */ +#define SMC_ECC_PR11_BITADDR_Pos 0 +#define SMC_ECC_PR11_BITADDR_Msk (0x7u << SMC_ECC_PR11_BITADDR_Pos) /**< \brief (SMC_ECC_PR11) Corrupted Bit Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR11_WORDADDR_Pos 3 +#define SMC_ECC_PR11_WORDADDR_Msk (0xffu << SMC_ECC_PR11_WORDADDR_Pos) /**< \brief (SMC_ECC_PR11) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR11_NPARITY_Pos 12 +#define SMC_ECC_PR11_NPARITY_Msk (0x7ffu << SMC_ECC_PR11_NPARITY_Pos) /**< \brief (SMC_ECC_PR11) Parity N */ +/* -------- SMC_ECC_PR12 : (SMC Offset: 0x060) SMC ECC parity 12 Register -------- */ +#define SMC_ECC_PR12_BITADDR_Pos 0 +#define SMC_ECC_PR12_BITADDR_Msk (0x7u << SMC_ECC_PR12_BITADDR_Pos) /**< \brief (SMC_ECC_PR12) Corrupted Bit Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR12_WORDADDR_Pos 3 +#define SMC_ECC_PR12_WORDADDR_Msk (0xffu << SMC_ECC_PR12_WORDADDR_Pos) /**< \brief (SMC_ECC_PR12) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR12_NPARITY_Pos 12 +#define SMC_ECC_PR12_NPARITY_Msk (0x7ffu << SMC_ECC_PR12_NPARITY_Pos) /**< \brief (SMC_ECC_PR12) Parity N */ +/* -------- SMC_ECC_PR13 : (SMC Offset: 0x064) SMC ECC parity 13 Register -------- */ +#define SMC_ECC_PR13_BITADDR_Pos 0 +#define SMC_ECC_PR13_BITADDR_Msk (0x7u << SMC_ECC_PR13_BITADDR_Pos) /**< \brief (SMC_ECC_PR13) Corrupted Bit Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR13_WORDADDR_Pos 3 +#define SMC_ECC_PR13_WORDADDR_Msk (0xffu << SMC_ECC_PR13_WORDADDR_Pos) /**< \brief (SMC_ECC_PR13) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR13_NPARITY_Pos 12 +#define SMC_ECC_PR13_NPARITY_Msk (0x7ffu << SMC_ECC_PR13_NPARITY_Pos) /**< \brief (SMC_ECC_PR13) Parity N */ +/* -------- SMC_ECC_PR14 : (SMC Offset: 0x068) SMC ECC parity 14 Register -------- */ +#define SMC_ECC_PR14_BITADDR_Pos 0 +#define SMC_ECC_PR14_BITADDR_Msk (0x7u << SMC_ECC_PR14_BITADDR_Pos) /**< \brief (SMC_ECC_PR14) Corrupted Bit Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR14_WORDADDR_Pos 3 +#define SMC_ECC_PR14_WORDADDR_Msk (0xffu << SMC_ECC_PR14_WORDADDR_Pos) /**< \brief (SMC_ECC_PR14) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR14_NPARITY_Pos 12 +#define SMC_ECC_PR14_NPARITY_Msk (0x7ffu << SMC_ECC_PR14_NPARITY_Pos) /**< \brief (SMC_ECC_PR14) Parity N */ +/* -------- SMC_ECC_PR15 : (SMC Offset: 0x06C) SMC ECC parity 15 Register -------- */ +#define SMC_ECC_PR15_BITADDR_Pos 0 +#define SMC_ECC_PR15_BITADDR_Msk (0x7u << SMC_ECC_PR15_BITADDR_Pos) /**< \brief (SMC_ECC_PR15) Corrupted Bit Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR15_WORDADDR_Pos 3 +#define SMC_ECC_PR15_WORDADDR_Msk (0xffu << SMC_ECC_PR15_WORDADDR_Pos) /**< \brief (SMC_ECC_PR15) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR15_NPARITY_Pos 12 +#define SMC_ECC_PR15_NPARITY_Msk (0x7ffu << SMC_ECC_PR15_NPARITY_Pos) /**< \brief (SMC_ECC_PR15) Parity N */ +/* -------- SMC_SETUP : (SMC Offset: N/A) SMC Setup Register -------- */ +#define SMC_SETUP_NWE_SETUP_Pos 0 +#define SMC_SETUP_NWE_SETUP_Msk (0x3fu << SMC_SETUP_NWE_SETUP_Pos) /**< \brief (SMC_SETUP) NWE Setup Length */ +#define SMC_SETUP_NWE_SETUP(value) ((SMC_SETUP_NWE_SETUP_Msk & ((value) << SMC_SETUP_NWE_SETUP_Pos))) +#define SMC_SETUP_NCS_WR_SETUP_Pos 8 +#define SMC_SETUP_NCS_WR_SETUP_Msk (0x3fu << SMC_SETUP_NCS_WR_SETUP_Pos) /**< \brief (SMC_SETUP) NCS Setup Length in Write Access */ +#define SMC_SETUP_NCS_WR_SETUP(value) ((SMC_SETUP_NCS_WR_SETUP_Msk & ((value) << SMC_SETUP_NCS_WR_SETUP_Pos))) +#define SMC_SETUP_NRD_SETUP_Pos 16 +#define SMC_SETUP_NRD_SETUP_Msk (0x3fu << SMC_SETUP_NRD_SETUP_Pos) /**< \brief (SMC_SETUP) NRD Setup Length */ +#define SMC_SETUP_NRD_SETUP(value) ((SMC_SETUP_NRD_SETUP_Msk & ((value) << SMC_SETUP_NRD_SETUP_Pos))) +#define SMC_SETUP_NCS_RD_SETUP_Pos 24 +#define SMC_SETUP_NCS_RD_SETUP_Msk (0x3fu << SMC_SETUP_NCS_RD_SETUP_Pos) /**< \brief (SMC_SETUP) NCS Setup Length in Read Access */ +#define SMC_SETUP_NCS_RD_SETUP(value) ((SMC_SETUP_NCS_RD_SETUP_Msk & ((value) << SMC_SETUP_NCS_RD_SETUP_Pos))) +/* -------- SMC_PULSE : (SMC Offset: N/A) SMC Pulse Register -------- */ +#define SMC_PULSE_NWE_PULSE_Pos 0 +#define SMC_PULSE_NWE_PULSE_Msk (0x3fu << SMC_PULSE_NWE_PULSE_Pos) /**< \brief (SMC_PULSE) NWE Pulse Length */ +#define SMC_PULSE_NWE_PULSE(value) ((SMC_PULSE_NWE_PULSE_Msk & ((value) << SMC_PULSE_NWE_PULSE_Pos))) +#define SMC_PULSE_NCS_WR_PULSE_Pos 8 +#define SMC_PULSE_NCS_WR_PULSE_Msk (0x3fu << SMC_PULSE_NCS_WR_PULSE_Pos) /**< \brief (SMC_PULSE) NCS Pulse Length in WRITE Access */ +#define SMC_PULSE_NCS_WR_PULSE(value) ((SMC_PULSE_NCS_WR_PULSE_Msk & ((value) << SMC_PULSE_NCS_WR_PULSE_Pos))) +#define SMC_PULSE_NRD_PULSE_Pos 16 +#define SMC_PULSE_NRD_PULSE_Msk (0x3fu << SMC_PULSE_NRD_PULSE_Pos) /**< \brief (SMC_PULSE) NRD Pulse Length */ +#define SMC_PULSE_NRD_PULSE(value) ((SMC_PULSE_NRD_PULSE_Msk & ((value) << SMC_PULSE_NRD_PULSE_Pos))) +#define SMC_PULSE_NCS_RD_PULSE_Pos 24 +#define SMC_PULSE_NCS_RD_PULSE_Msk (0x3fu << SMC_PULSE_NCS_RD_PULSE_Pos) /**< \brief (SMC_PULSE) NCS Pulse Length in READ Access */ +#define SMC_PULSE_NCS_RD_PULSE(value) ((SMC_PULSE_NCS_RD_PULSE_Msk & ((value) << SMC_PULSE_NCS_RD_PULSE_Pos))) +/* -------- SMC_CYCLE : (SMC Offset: N/A) SMC Cycle Register -------- */ +#define SMC_CYCLE_NWE_CYCLE_Pos 0 +#define SMC_CYCLE_NWE_CYCLE_Msk (0x1ffu << SMC_CYCLE_NWE_CYCLE_Pos) /**< \brief (SMC_CYCLE) Total Write Cycle Length */ +#define SMC_CYCLE_NWE_CYCLE(value) ((SMC_CYCLE_NWE_CYCLE_Msk & ((value) << SMC_CYCLE_NWE_CYCLE_Pos))) +#define SMC_CYCLE_NRD_CYCLE_Pos 16 +#define SMC_CYCLE_NRD_CYCLE_Msk (0x1ffu << SMC_CYCLE_NRD_CYCLE_Pos) /**< \brief (SMC_CYCLE) Total Read Cycle Length */ +#define SMC_CYCLE_NRD_CYCLE(value) ((SMC_CYCLE_NRD_CYCLE_Msk & ((value) << SMC_CYCLE_NRD_CYCLE_Pos))) +/* -------- SMC_TIMINGS : (SMC Offset: N/A) SMC Timings Register -------- */ +#define SMC_TIMINGS_TCLR_Pos 0 +#define SMC_TIMINGS_TCLR_Msk (0xfu << SMC_TIMINGS_TCLR_Pos) /**< \brief (SMC_TIMINGS) CLE to REN Low Delay */ +#define SMC_TIMINGS_TCLR(value) ((SMC_TIMINGS_TCLR_Msk & ((value) << SMC_TIMINGS_TCLR_Pos))) +#define SMC_TIMINGS_TADL_Pos 4 +#define SMC_TIMINGS_TADL_Msk (0xfu << SMC_TIMINGS_TADL_Pos) /**< \brief (SMC_TIMINGS) ALE to Data Start */ +#define SMC_TIMINGS_TADL(value) ((SMC_TIMINGS_TADL_Msk & ((value) << SMC_TIMINGS_TADL_Pos))) +#define SMC_TIMINGS_TAR_Pos 8 +#define SMC_TIMINGS_TAR_Msk (0xfu << SMC_TIMINGS_TAR_Pos) /**< \brief (SMC_TIMINGS) ALE to REN Low Delay */ +#define SMC_TIMINGS_TAR(value) ((SMC_TIMINGS_TAR_Msk & ((value) << SMC_TIMINGS_TAR_Pos))) +#define SMC_TIMINGS_OCMS (0x1u << 12) /**< \brief (SMC_TIMINGS) Off Chip Memory Scrambling Enable */ +#define SMC_TIMINGS_TRR_Pos 16 +#define SMC_TIMINGS_TRR_Msk (0xfu << SMC_TIMINGS_TRR_Pos) /**< \brief (SMC_TIMINGS) Ready to REN Low Delay */ +#define SMC_TIMINGS_TRR(value) ((SMC_TIMINGS_TRR_Msk & ((value) << SMC_TIMINGS_TRR_Pos))) +#define SMC_TIMINGS_TWB_Pos 24 +#define SMC_TIMINGS_TWB_Msk (0xfu << SMC_TIMINGS_TWB_Pos) /**< \brief (SMC_TIMINGS) WEN High to REN to Busy */ +#define SMC_TIMINGS_TWB(value) ((SMC_TIMINGS_TWB_Msk & ((value) << SMC_TIMINGS_TWB_Pos))) +#define SMC_TIMINGS_RBNSEL_Pos 28 +#define SMC_TIMINGS_RBNSEL_Msk (0x7u << SMC_TIMINGS_RBNSEL_Pos) /**< \brief (SMC_TIMINGS) Ready/Busy Line Selection */ +#define SMC_TIMINGS_RBNSEL(value) ((SMC_TIMINGS_RBNSEL_Msk & ((value) << SMC_TIMINGS_RBNSEL_Pos))) +#define SMC_TIMINGS_NFSEL (0x1u << 31) /**< \brief (SMC_TIMINGS) NAND Flash Selection */ +/* -------- SMC_MODE : (SMC Offset: N/A) SMC Mode Register -------- */ +#define SMC_MODE_READ_MODE (0x1u << 0) /**< \brief (SMC_MODE) */ +#define SMC_MODE_READ_MODE_NCS_CTRL (0x0u << 0) /**< \brief (SMC_MODE) The Read operation is controlled by the NCS signal. */ +#define SMC_MODE_READ_MODE_NRD_CTRL (0x1u << 0) /**< \brief (SMC_MODE) The Read operation is controlled by the NRD signal. */ +#define SMC_MODE_WRITE_MODE (0x1u << 1) /**< \brief (SMC_MODE) */ +#define SMC_MODE_WRITE_MODE_NCS_CTRL (0x0u << 1) /**< \brief (SMC_MODE) The Write operation is controller by the NCS signal. */ +#define SMC_MODE_WRITE_MODE_NWE_CTRL (0x1u << 1) /**< \brief (SMC_MODE) The Write operation is controlled by the NWE signal. */ +#define SMC_MODE_EXNW_MODE_Pos 4 +#define SMC_MODE_EXNW_MODE_Msk (0x3u << SMC_MODE_EXNW_MODE_Pos) /**< \brief (SMC_MODE) NWAIT Mode */ +#define SMC_MODE_EXNW_MODE_DISABLED (0x0u << 4) /**< \brief (SMC_MODE) Disabled */ +#define SMC_MODE_EXNW_MODE_FROZEN (0x2u << 4) /**< \brief (SMC_MODE) Frozen Mode */ +#define SMC_MODE_EXNW_MODE_READY (0x3u << 4) /**< \brief (SMC_MODE) Ready Mode */ +#define SMC_MODE_BAT (0x1u << 8) /**< \brief (SMC_MODE) Byte Access Type */ +#define SMC_MODE_DBW (0x1u << 12) /**< \brief (SMC_MODE) Data Bus Width */ +#define SMC_MODE_DBW_BIT_8 (0x0u << 12) /**< \brief (SMC_MODE) 8-bit bus */ +#define SMC_MODE_DBW_BIT_16 (0x1u << 12) /**< \brief (SMC_MODE) 16-bit bus */ +#define SMC_MODE_TDF_CYCLES_Pos 16 +#define SMC_MODE_TDF_CYCLES_Msk (0xfu << SMC_MODE_TDF_CYCLES_Pos) /**< \brief (SMC_MODE) Data Float Time */ +#define SMC_MODE_TDF_CYCLES(value) ((SMC_MODE_TDF_CYCLES_Msk & ((value) << SMC_MODE_TDF_CYCLES_Pos))) +#define SMC_MODE_TDF_MODE (0x1u << 20) /**< \brief (SMC_MODE) TDF Optimization */ +/* -------- SMC_OCMS : (SMC Offset: 0x110) SMC OCMS Register -------- */ +#define SMC_OCMS_SMSE (0x1u << 0) /**< \brief (SMC_OCMS) Static Memory Controller Scrambling Enable */ +#define SMC_OCMS_SRSE (0x1u << 1) /**< \brief (SMC_OCMS) SRAM Scrambling Enable */ +/* -------- SMC_KEY1 : (SMC Offset: 0x114) SMC OCMS KEY1 Register -------- */ +#define SMC_KEY1_KEY1_Pos 0 +#define SMC_KEY1_KEY1_Msk (0xffffffffu << SMC_KEY1_KEY1_Pos) /**< \brief (SMC_KEY1) Off Chip Memory Scrambling (OCMS) Key Part 1 */ +#define SMC_KEY1_KEY1(value) ((SMC_KEY1_KEY1_Msk & ((value) << SMC_KEY1_KEY1_Pos))) +/* -------- SMC_KEY2 : (SMC Offset: 0x118) SMC OCMS KEY2 Register -------- */ +#define SMC_KEY2_KEY2_Pos 0 +#define SMC_KEY2_KEY2_Msk (0xffffffffu << SMC_KEY2_KEY2_Pos) /**< \brief (SMC_KEY2) Off Chip Memory Scrambling (OCMS) Key Part 2 */ +#define SMC_KEY2_KEY2(value) ((SMC_KEY2_KEY2_Msk & ((value) << SMC_KEY2_KEY2_Pos))) +/* -------- SMC_WPCR : (SMC Offset: 0x1E4) Write Protection Control Register -------- */ +#define SMC_WPCR_WP_EN (0x1u << 0) /**< \brief (SMC_WPCR) Write Protection Enable */ +#define SMC_WPCR_WP_KEY_Pos 8 +#define SMC_WPCR_WP_KEY_Msk (0xffffffu << SMC_WPCR_WP_KEY_Pos) /**< \brief (SMC_WPCR) Write Protection KEY password */ +#define SMC_WPCR_WP_KEY(value) ((SMC_WPCR_WP_KEY_Msk & ((value) << SMC_WPCR_WP_KEY_Pos))) +/* -------- SMC_WPSR : (SMC Offset: 0x1E8) Write Protection Status Register -------- */ +#define SMC_WPSR_WP_VS_Pos 0 +#define SMC_WPSR_WP_VS_Msk (0xfu << SMC_WPSR_WP_VS_Pos) /**< \brief (SMC_WPSR) Write Protection Violation Status */ +#define SMC_WPSR_WP_VSRC_Pos 8 +#define SMC_WPSR_WP_VSRC_Msk (0xffffu << SMC_WPSR_WP_VSRC_Pos) /**< \brief (SMC_WPSR) Write Protection Violation Source */ + +/*@}*/ + + +#endif /* _SAM3U_SMC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_spi.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_spi.h new file mode 100644 index 000000000..152546a63 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_spi.h @@ -0,0 +1,160 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_SPI_COMPONENT_ +#define _SAM3U_SPI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Serial Peripheral Interface */ +/* ============================================================================= */ +/** \addtogroup SAM3U_SPI Serial Peripheral Interface */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Spi hardware registers */ +typedef struct { + WoReg SPI_CR; /**< \brief (Spi Offset: 0x00) Control Register */ + RwReg SPI_MR; /**< \brief (Spi Offset: 0x04) Mode Register */ + RoReg SPI_RDR; /**< \brief (Spi Offset: 0x08) Receive Data Register */ + WoReg SPI_TDR; /**< \brief (Spi Offset: 0x0C) Transmit Data Register */ + RoReg SPI_SR; /**< \brief (Spi Offset: 0x10) Status Register */ + WoReg SPI_IER; /**< \brief (Spi Offset: 0x14) Interrupt Enable Register */ + WoReg SPI_IDR; /**< \brief (Spi Offset: 0x18) Interrupt Disable Register */ + RoReg SPI_IMR; /**< \brief (Spi Offset: 0x1C) Interrupt Mask Register */ + RoReg Reserved1[4]; + RwReg SPI_CSR[4]; /**< \brief (Spi Offset: 0x30) Chip Select Register */ + RoReg Reserved2[41]; + RwReg SPI_WPMR; /**< \brief (Spi Offset: 0xE4) Write Protection Control Register */ + RoReg SPI_WPSR; /**< \brief (Spi Offset: 0xE8) Write Protection Status Register */ +} Spi; +#endif /* __ASSEMBLY__ */ +/* -------- SPI_CR : (SPI Offset: 0x00) Control Register -------- */ +#define SPI_CR_SPIEN (0x1u << 0) /**< \brief (SPI_CR) SPI Enable */ +#define SPI_CR_SPIDIS (0x1u << 1) /**< \brief (SPI_CR) SPI Disable */ +#define SPI_CR_SWRST (0x1u << 7) /**< \brief (SPI_CR) SPI Software Reset */ +#define SPI_CR_LASTXFER (0x1u << 24) /**< \brief (SPI_CR) Last Transfer */ +/* -------- SPI_MR : (SPI Offset: 0x04) Mode Register -------- */ +#define SPI_MR_MSTR (0x1u << 0) /**< \brief (SPI_MR) Master/Slave Mode */ +#define SPI_MR_PS (0x1u << 1) /**< \brief (SPI_MR) Peripheral Select */ +#define SPI_MR_PCSDEC (0x1u << 2) /**< \brief (SPI_MR) Chip Select Decode */ +#define SPI_MR_MODFDIS (0x1u << 4) /**< \brief (SPI_MR) Mode Fault Detection */ +#define SPI_MR_WDRBT (0x1u << 5) /**< \brief (SPI_MR) Wait Data Read Before Transfer */ +#define SPI_MR_LLB (0x1u << 7) /**< \brief (SPI_MR) Local Loopback Enable */ +#define SPI_MR_PCS_Pos 16 +#define SPI_MR_PCS_Msk (0xfu << SPI_MR_PCS_Pos) /**< \brief (SPI_MR) Peripheral Chip Select */ +#define SPI_MR_PCS(value) ((SPI_MR_PCS_Msk & ((value) << SPI_MR_PCS_Pos))) +#define SPI_MR_DLYBCS_Pos 24 +#define SPI_MR_DLYBCS_Msk (0xffu << SPI_MR_DLYBCS_Pos) /**< \brief (SPI_MR) Delay Between Chip Selects */ +#define SPI_MR_DLYBCS(value) ((SPI_MR_DLYBCS_Msk & ((value) << SPI_MR_DLYBCS_Pos))) +/* -------- SPI_RDR : (SPI Offset: 0x08) Receive Data Register -------- */ +#define SPI_RDR_RD_Pos 0 +#define SPI_RDR_RD_Msk (0xffffu << SPI_RDR_RD_Pos) /**< \brief (SPI_RDR) Receive Data */ +#define SPI_RDR_PCS_Pos 16 +#define SPI_RDR_PCS_Msk (0xfu << SPI_RDR_PCS_Pos) /**< \brief (SPI_RDR) Peripheral Chip Select */ +/* -------- SPI_TDR : (SPI Offset: 0x0C) Transmit Data Register -------- */ +#define SPI_TDR_TD_Pos 0 +#define SPI_TDR_TD_Msk (0xffffu << SPI_TDR_TD_Pos) /**< \brief (SPI_TDR) Transmit Data */ +#define SPI_TDR_TD(value) ((SPI_TDR_TD_Msk & ((value) << SPI_TDR_TD_Pos))) +#define SPI_TDR_PCS_Pos 16 +#define SPI_TDR_PCS_Msk (0xfu << SPI_TDR_PCS_Pos) /**< \brief (SPI_TDR) Peripheral Chip Select */ +#define SPI_TDR_PCS(value) ((SPI_TDR_PCS_Msk & ((value) << SPI_TDR_PCS_Pos))) +#define SPI_TDR_LASTXFER (0x1u << 24) /**< \brief (SPI_TDR) Last Transfer */ +/* -------- SPI_SR : (SPI Offset: 0x10) Status Register -------- */ +#define SPI_SR_RDRF (0x1u << 0) /**< \brief (SPI_SR) Receive Data Register Full */ +#define SPI_SR_TDRE (0x1u << 1) /**< \brief (SPI_SR) Transmit Data Register Empty */ +#define SPI_SR_MODF (0x1u << 2) /**< \brief (SPI_SR) Mode Fault Error */ +#define SPI_SR_OVRES (0x1u << 3) /**< \brief (SPI_SR) Overrun Error Status */ +#define SPI_SR_NSSR (0x1u << 8) /**< \brief (SPI_SR) NSS Rising */ +#define SPI_SR_TXEMPTY (0x1u << 9) /**< \brief (SPI_SR) Transmission Registers Empty */ +#define SPI_SR_UNDES (0x1u << 10) /**< \brief (SPI_SR) Underrun Error Status (Slave Mode Only) */ +#define SPI_SR_SPIENS (0x1u << 16) /**< \brief (SPI_SR) SPI Enable Status */ +/* -------- SPI_IER : (SPI Offset: 0x14) Interrupt Enable Register -------- */ +#define SPI_IER_RDRF (0x1u << 0) /**< \brief (SPI_IER) Receive Data Register Full Interrupt Enable */ +#define SPI_IER_TDRE (0x1u << 1) /**< \brief (SPI_IER) SPI Transmit Data Register Empty Interrupt Enable */ +#define SPI_IER_MODF (0x1u << 2) /**< \brief (SPI_IER) Mode Fault Error Interrupt Enable */ +#define SPI_IER_OVRES (0x1u << 3) /**< \brief (SPI_IER) Overrun Error Interrupt Enable */ +#define SPI_IER_NSSR (0x1u << 8) /**< \brief (SPI_IER) NSS Rising Interrupt Enable */ +#define SPI_IER_TXEMPTY (0x1u << 9) /**< \brief (SPI_IER) Transmission Registers Empty Enable */ +#define SPI_IER_UNDES (0x1u << 10) /**< \brief (SPI_IER) Underrun Error Interrupt Enable */ +/* -------- SPI_IDR : (SPI Offset: 0x18) Interrupt Disable Register -------- */ +#define SPI_IDR_RDRF (0x1u << 0) /**< \brief (SPI_IDR) Receive Data Register Full Interrupt Disable */ +#define SPI_IDR_TDRE (0x1u << 1) /**< \brief (SPI_IDR) SPI Transmit Data Register Empty Interrupt Disable */ +#define SPI_IDR_MODF (0x1u << 2) /**< \brief (SPI_IDR) Mode Fault Error Interrupt Disable */ +#define SPI_IDR_OVRES (0x1u << 3) /**< \brief (SPI_IDR) Overrun Error Interrupt Disable */ +#define SPI_IDR_NSSR (0x1u << 8) /**< \brief (SPI_IDR) NSS Rising Interrupt Disable */ +#define SPI_IDR_TXEMPTY (0x1u << 9) /**< \brief (SPI_IDR) Transmission Registers Empty Disable */ +#define SPI_IDR_UNDES (0x1u << 10) /**< \brief (SPI_IDR) Underrun Error Interrupt Disable */ +/* -------- SPI_IMR : (SPI Offset: 0x1C) Interrupt Mask Register -------- */ +#define SPI_IMR_RDRF (0x1u << 0) /**< \brief (SPI_IMR) Receive Data Register Full Interrupt Mask */ +#define SPI_IMR_TDRE (0x1u << 1) /**< \brief (SPI_IMR) SPI Transmit Data Register Empty Interrupt Mask */ +#define SPI_IMR_MODF (0x1u << 2) /**< \brief (SPI_IMR) Mode Fault Error Interrupt Mask */ +#define SPI_IMR_OVRES (0x1u << 3) /**< \brief (SPI_IMR) Overrun Error Interrupt Mask */ +#define SPI_IMR_NSSR (0x1u << 8) /**< \brief (SPI_IMR) NSS Rising Interrupt Mask */ +#define SPI_IMR_TXEMPTY (0x1u << 9) /**< \brief (SPI_IMR) Transmission Registers Empty Mask */ +#define SPI_IMR_UNDES (0x1u << 10) /**< \brief (SPI_IMR) Underrun Error Interrupt Mask */ +/* -------- SPI_CSR[4] : (SPI Offset: 0x30) Chip Select Register -------- */ +#define SPI_CSR_CPOL (0x1u << 0) /**< \brief (SPI_CSR[4]) Clock Polarity */ +#define SPI_CSR_NCPHA (0x1u << 1) /**< \brief (SPI_CSR[4]) Clock Phase */ +#define SPI_CSR_CSNAAT (0x1u << 2) /**< \brief (SPI_CSR[4]) Chip Select Not Active After Transfer (Ignored if CSAAT = 1) */ +#define SPI_CSR_CSAAT (0x1u << 3) /**< \brief (SPI_CSR[4]) Chip Select Not Active After Transfer (Ignored if CSAAT = 1) */ +#define SPI_CSR_BITS_Pos 4 +#define SPI_CSR_BITS_Msk (0xfu << SPI_CSR_BITS_Pos) /**< \brief (SPI_CSR[4]) Bits Per Transfer */ +#define SPI_CSR_BITS_8_BIT (0x0u << 4) /**< \brief (SPI_CSR[4]) 8 bits for transfer */ +#define SPI_CSR_BITS_9_BIT (0x1u << 4) /**< \brief (SPI_CSR[4]) 9 bits for transfer */ +#define SPI_CSR_BITS_10_BIT (0x2u << 4) /**< \brief (SPI_CSR[4]) 10 bits for transfer */ +#define SPI_CSR_BITS_11_BIT (0x3u << 4) /**< \brief (SPI_CSR[4]) 11 bits for transfer */ +#define SPI_CSR_BITS_12_BIT (0x4u << 4) /**< \brief (SPI_CSR[4]) 12 bits for transfer */ +#define SPI_CSR_BITS_13_BIT (0x5u << 4) /**< \brief (SPI_CSR[4]) 13 bits for transfer */ +#define SPI_CSR_BITS_14_BIT (0x6u << 4) /**< \brief (SPI_CSR[4]) 14 bits for transfer */ +#define SPI_CSR_BITS_15_BIT (0x7u << 4) /**< \brief (SPI_CSR[4]) 15 bits for transfer */ +#define SPI_CSR_BITS_16_BIT (0x8u << 4) /**< \brief (SPI_CSR[4]) 16 bits for transfer */ +#define SPI_CSR_SCBR_Pos 8 +#define SPI_CSR_SCBR_Msk (0xffu << SPI_CSR_SCBR_Pos) /**< \brief (SPI_CSR[4]) Serial Clock Baud Rate */ +#define SPI_CSR_SCBR(value) ((SPI_CSR_SCBR_Msk & ((value) << SPI_CSR_SCBR_Pos))) +#define SPI_CSR_DLYBS_Pos 16 +#define SPI_CSR_DLYBS_Msk (0xffu << SPI_CSR_DLYBS_Pos) /**< \brief (SPI_CSR[4]) Delay Before SPCK */ +#define SPI_CSR_DLYBS(value) ((SPI_CSR_DLYBS_Msk & ((value) << SPI_CSR_DLYBS_Pos))) +#define SPI_CSR_DLYBCT_Pos 24 +#define SPI_CSR_DLYBCT_Msk (0xffu << SPI_CSR_DLYBCT_Pos) /**< \brief (SPI_CSR[4]) Delay Between Consecutive Transfers */ +#define SPI_CSR_DLYBCT(value) ((SPI_CSR_DLYBCT_Msk & ((value) << SPI_CSR_DLYBCT_Pos))) +/* -------- SPI_WPMR : (SPI Offset: 0xE4) Write Protection Control Register -------- */ +#define SPI_WPMR_SPIWPEN (0x1u << 0) /**< \brief (SPI_WPMR) SPI Write Protection Enable */ +#define SPI_WPMR_SPIWPKEY_Pos 8 +#define SPI_WPMR_SPIWPKEY_Msk (0xffffffu << SPI_WPMR_SPIWPKEY_Pos) /**< \brief (SPI_WPMR) SPI Write Protection Key Password */ +#define SPI_WPMR_SPIWPKEY(value) ((SPI_WPMR_SPIWPKEY_Msk & ((value) << SPI_WPMR_SPIWPKEY_Pos))) +/* -------- SPI_WPSR : (SPI Offset: 0xE8) Write Protection Status Register -------- */ +#define SPI_WPSR_SPIWPVS_Pos 0 +#define SPI_WPSR_SPIWPVS_Msk (0x7u << SPI_WPSR_SPIWPVS_Pos) /**< \brief (SPI_WPSR) SPI Write Protection Violation Status */ +#define SPI_WPSR_SPIWPVSRC_Pos 8 +#define SPI_WPSR_SPIWPVSRC_Msk (0xffu << SPI_WPSR_SPIWPVSRC_Pos) /**< \brief (SPI_WPSR) SPI Write Protection Violation Source */ + +/*@}*/ + + +#endif /* _SAM3U_SPI_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_ssc.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_ssc.h new file mode 100644 index 000000000..d8e36cd59 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_ssc.h @@ -0,0 +1,270 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_SSC_COMPONENT_ +#define _SAM3U_SSC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Synchronous Serial Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3U_SSC Synchronous Serial Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Ssc hardware registers */ +typedef struct { + WoReg SSC_CR; /**< \brief (Ssc Offset: 0x0) Control Register */ + RwReg SSC_CMR; /**< \brief (Ssc Offset: 0x4) Clock Mode Register */ + RoReg Reserved1[2]; + RwReg SSC_RCMR; /**< \brief (Ssc Offset: 0x10) Receive Clock Mode Register */ + RwReg SSC_RFMR; /**< \brief (Ssc Offset: 0x14) Receive Frame Mode Register */ + RwReg SSC_TCMR; /**< \brief (Ssc Offset: 0x18) Transmit Clock Mode Register */ + RwReg SSC_TFMR; /**< \brief (Ssc Offset: 0x1C) Transmit Frame Mode Register */ + RoReg SSC_RHR; /**< \brief (Ssc Offset: 0x20) Receive Holding Register */ + WoReg SSC_THR; /**< \brief (Ssc Offset: 0x24) Transmit Holding Register */ + RoReg Reserved2[2]; + RoReg SSC_RSHR; /**< \brief (Ssc Offset: 0x30) Receive Sync. Holding Register */ + RwReg SSC_TSHR; /**< \brief (Ssc Offset: 0x34) Transmit Sync. Holding Register */ + RwReg SSC_RC0R; /**< \brief (Ssc Offset: 0x38) Receive Compare 0 Register */ + RwReg SSC_RC1R; /**< \brief (Ssc Offset: 0x3C) Receive Compare 1 Register */ + RoReg SSC_SR; /**< \brief (Ssc Offset: 0x40) Status Register */ + WoReg SSC_IER; /**< \brief (Ssc Offset: 0x44) Interrupt Enable Register */ + WoReg SSC_IDR; /**< \brief (Ssc Offset: 0x48) Interrupt Disable Register */ + RoReg SSC_IMR; /**< \brief (Ssc Offset: 0x4C) Interrupt Mask Register */ + RoReg Reserved3[37]; + RwReg SSC_WPMR; /**< \brief (Ssc Offset: 0xE4) Write Protect Mode Register */ + RoReg SSC_WPSR; /**< \brief (Ssc Offset: 0xE8) Write Protect Status Register */ +} Ssc; +#endif /* __ASSEMBLY__ */ +/* -------- SSC_CR : (SSC Offset: 0x0) Control Register -------- */ +#define SSC_CR_RXEN (0x1u << 0) /**< \brief (SSC_CR) Receive Enable */ +#define SSC_CR_RXDIS (0x1u << 1) /**< \brief (SSC_CR) Receive Disable */ +#define SSC_CR_TXEN (0x1u << 8) /**< \brief (SSC_CR) Transmit Enable */ +#define SSC_CR_TXDIS (0x1u << 9) /**< \brief (SSC_CR) Transmit Disable */ +#define SSC_CR_SWRST (0x1u << 15) /**< \brief (SSC_CR) Software Reset */ +/* -------- SSC_CMR : (SSC Offset: 0x4) Clock Mode Register -------- */ +#define SSC_CMR_DIV_Pos 0 +#define SSC_CMR_DIV_Msk (0xfffu << SSC_CMR_DIV_Pos) /**< \brief (SSC_CMR) Clock Divider */ +#define SSC_CMR_DIV(value) ((SSC_CMR_DIV_Msk & ((value) << SSC_CMR_DIV_Pos))) +/* -------- SSC_RCMR : (SSC Offset: 0x10) Receive Clock Mode Register -------- */ +#define SSC_RCMR_CKS_Pos 0 +#define SSC_RCMR_CKS_Msk (0x3u << SSC_RCMR_CKS_Pos) /**< \brief (SSC_RCMR) Receive Clock Selection */ +#define SSC_RCMR_CKS_MCK (0x0u << 0) /**< \brief (SSC_RCMR) Divided Clock */ +#define SSC_RCMR_CKS_TK (0x1u << 0) /**< \brief (SSC_RCMR) TK Clock signal */ +#define SSC_RCMR_CKS_RK (0x2u << 0) /**< \brief (SSC_RCMR) RK pin */ +#define SSC_RCMR_CKO_Pos 2 +#define SSC_RCMR_CKO_Msk (0x7u << SSC_RCMR_CKO_Pos) /**< \brief (SSC_RCMR) Receive Clock Output Mode Selection */ +#define SSC_RCMR_CKO_NONE (0x0u << 2) /**< \brief (SSC_RCMR) None */ +#define SSC_RCMR_CKO_CONTINUOUS (0x1u << 2) /**< \brief (SSC_RCMR) Continuous Receive Clock */ +#define SSC_RCMR_CKO_TRANSFER (0x2u << 2) /**< \brief (SSC_RCMR) Receive Clock only during data transfers */ +#define SSC_RCMR_CKI (0x1u << 5) /**< \brief (SSC_RCMR) Receive Clock Inversion */ +#define SSC_RCMR_CKG_Pos 6 +#define SSC_RCMR_CKG_Msk (0x3u << SSC_RCMR_CKG_Pos) /**< \brief (SSC_RCMR) Receive Clock Gating Selection */ +#define SSC_RCMR_CKG_NONE (0x0u << 6) /**< \brief (SSC_RCMR) None */ +#define SSC_RCMR_CKG_CONTINUOUS (0x1u << 6) /**< \brief (SSC_RCMR) Continuous Receive Clock */ +#define SSC_RCMR_CKG_TRANSFER (0x2u << 6) /**< \brief (SSC_RCMR) Receive Clock only during data transfers */ +#define SSC_RCMR_START_Pos 8 +#define SSC_RCMR_START_Msk (0xfu << SSC_RCMR_START_Pos) /**< \brief (SSC_RCMR) Receive Start Selection */ +#define SSC_RCMR_START_CONTINUOUS (0x0u << 8) /**< \brief (SSC_RCMR) Continuous, as soon as the receiver is enabled, and immediately after the end of transfer of the previous data. */ +#define SSC_RCMR_START_TRANSMIT (0x1u << 8) /**< \brief (SSC_RCMR) Transmit start */ +#define SSC_RCMR_START_RF_LOW (0x2u << 8) /**< \brief (SSC_RCMR) Detection of a low level on RF signal */ +#define SSC_RCMR_START_RF_HIGH (0x3u << 8) /**< \brief (SSC_RCMR) Detection of a high level on RF signal */ +#define SSC_RCMR_START_RF_FALLING (0x4u << 8) /**< \brief (SSC_RCMR) Detection of a falling edge on RF signal */ +#define SSC_RCMR_START_RF_RISING (0x5u << 8) /**< \brief (SSC_RCMR) Detection of a rising edge on RF signal */ +#define SSC_RCMR_START_RF_LEVEL (0x6u << 8) /**< \brief (SSC_RCMR) Detection of any level change on RF signal */ +#define SSC_RCMR_START_RF_EDGE (0x7u << 8) /**< \brief (SSC_RCMR) Detection of any edge on RF signal */ +#define SSC_RCMR_START_CMP_0 (0x8u << 8) /**< \brief (SSC_RCMR) Compare 0 */ +#define SSC_RCMR_STOP (0x1u << 12) /**< \brief (SSC_RCMR) Receive Stop Selection */ +#define SSC_RCMR_STTDLY_Pos 16 +#define SSC_RCMR_STTDLY_Msk (0xffu << SSC_RCMR_STTDLY_Pos) /**< \brief (SSC_RCMR) Receive Start Delay */ +#define SSC_RCMR_STTDLY(value) ((SSC_RCMR_STTDLY_Msk & ((value) << SSC_RCMR_STTDLY_Pos))) +#define SSC_RCMR_PERIOD_Pos 24 +#define SSC_RCMR_PERIOD_Msk (0xffu << SSC_RCMR_PERIOD_Pos) /**< \brief (SSC_RCMR) Receive Period Divider Selection */ +#define SSC_RCMR_PERIOD(value) ((SSC_RCMR_PERIOD_Msk & ((value) << SSC_RCMR_PERIOD_Pos))) +/* -------- SSC_RFMR : (SSC Offset: 0x14) Receive Frame Mode Register -------- */ +#define SSC_RFMR_DATLEN_Pos 0 +#define SSC_RFMR_DATLEN_Msk (0x1fu << SSC_RFMR_DATLEN_Pos) /**< \brief (SSC_RFMR) Data Length */ +#define SSC_RFMR_DATLEN(value) ((SSC_RFMR_DATLEN_Msk & ((value) << SSC_RFMR_DATLEN_Pos))) +#define SSC_RFMR_LOOP (0x1u << 5) /**< \brief (SSC_RFMR) Loop Mode */ +#define SSC_RFMR_MSBF (0x1u << 7) /**< \brief (SSC_RFMR) Most Significant Bit First */ +#define SSC_RFMR_DATNB_Pos 8 +#define SSC_RFMR_DATNB_Msk (0xfu << SSC_RFMR_DATNB_Pos) /**< \brief (SSC_RFMR) Data Number per Frame */ +#define SSC_RFMR_DATNB(value) ((SSC_RFMR_DATNB_Msk & ((value) << SSC_RFMR_DATNB_Pos))) +#define SSC_RFMR_FSLEN_Pos 16 +#define SSC_RFMR_FSLEN_Msk (0xfu << SSC_RFMR_FSLEN_Pos) /**< \brief (SSC_RFMR) Receive Frame Sync Length */ +#define SSC_RFMR_FSLEN(value) ((SSC_RFMR_FSLEN_Msk & ((value) << SSC_RFMR_FSLEN_Pos))) +#define SSC_RFMR_FSOS_Pos 20 +#define SSC_RFMR_FSOS_Msk (0x7u << SSC_RFMR_FSOS_Pos) /**< \brief (SSC_RFMR) Receive Frame Sync Output Selection */ +#define SSC_RFMR_FSOS_NONE (0x0u << 20) /**< \brief (SSC_RFMR) None */ +#define SSC_RFMR_FSOS_NEGATIVE (0x1u << 20) /**< \brief (SSC_RFMR) Negative Pulse */ +#define SSC_RFMR_FSOS_POSITIVE (0x2u << 20) /**< \brief (SSC_RFMR) Positive Pulse */ +#define SSC_RFMR_FSOS_LOW (0x3u << 20) /**< \brief (SSC_RFMR) Driven Low during data transfer */ +#define SSC_RFMR_FSOS_HIGH (0x4u << 20) /**< \brief (SSC_RFMR) Driven High during data transfer */ +#define SSC_RFMR_FSOS_TOGGLING (0x5u << 20) /**< \brief (SSC_RFMR) Toggling at each start of data transfer */ +#define SSC_RFMR_FSEDGE (0x1u << 24) /**< \brief (SSC_RFMR) Frame Sync Edge Detection */ +#define SSC_RFMR_FSEDGE_POSITIVE (0x0u << 24) /**< \brief (SSC_RFMR) Positive Edge Detection */ +#define SSC_RFMR_FSEDGE_NEGATIVE (0x1u << 24) /**< \brief (SSC_RFMR) Negative Edge Detection */ +#define SSC_RFMR_FSLEN_EXT_Pos 28 +#define SSC_RFMR_FSLEN_EXT_Msk (0xfu << SSC_RFMR_FSLEN_EXT_Pos) /**< \brief (SSC_RFMR) FSLEN Field Extension */ +#define SSC_RFMR_FSLEN_EXT(value) ((SSC_RFMR_FSLEN_EXT_Msk & ((value) << SSC_RFMR_FSLEN_EXT_Pos))) +/* -------- SSC_TCMR : (SSC Offset: 0x18) Transmit Clock Mode Register -------- */ +#define SSC_TCMR_CKS_Pos 0 +#define SSC_TCMR_CKS_Msk (0x3u << SSC_TCMR_CKS_Pos) /**< \brief (SSC_TCMR) Transmit Clock Selection */ +#define SSC_TCMR_CKS_MCK (0x0u << 0) /**< \brief (SSC_TCMR) Divided Clock */ +#define SSC_TCMR_CKS_TK (0x1u << 0) /**< \brief (SSC_TCMR) TK Clock signal */ +#define SSC_TCMR_CKS_RK (0x2u << 0) /**< \brief (SSC_TCMR) RK pin */ +#define SSC_TCMR_CKO_Pos 2 +#define SSC_TCMR_CKO_Msk (0x7u << SSC_TCMR_CKO_Pos) /**< \brief (SSC_TCMR) Transmit Clock Output Mode Selection */ +#define SSC_TCMR_CKO_NONE (0x0u << 2) /**< \brief (SSC_TCMR) None */ +#define SSC_TCMR_CKO_CONTINUOUS (0x1u << 2) /**< \brief (SSC_TCMR) Continuous Receive Clock */ +#define SSC_TCMR_CKO_TRANSFER (0x2u << 2) /**< \brief (SSC_TCMR) Transmit Clock only during data transfers */ +#define SSC_TCMR_CKI (0x1u << 5) /**< \brief (SSC_TCMR) Transmit Clock Inversion */ +#define SSC_TCMR_CKG_Pos 6 +#define SSC_TCMR_CKG_Msk (0x3u << SSC_TCMR_CKG_Pos) /**< \brief (SSC_TCMR) Transmit Clock Gating Selection */ +#define SSC_TCMR_CKG_NONE (0x0u << 6) /**< \brief (SSC_TCMR) None */ +#define SSC_TCMR_CKG_CONTINUOUS (0x1u << 6) /**< \brief (SSC_TCMR) Transmit Clock enabled only if TF Low */ +#define SSC_TCMR_CKG_TRANSFER (0x2u << 6) /**< \brief (SSC_TCMR) Transmit Clock enabled only if TF High */ +#define SSC_TCMR_START_Pos 8 +#define SSC_TCMR_START_Msk (0xfu << SSC_TCMR_START_Pos) /**< \brief (SSC_TCMR) Transmit Start Selection */ +#define SSC_TCMR_START_CONTINUOUS (0x0u << 8) /**< \brief (SSC_TCMR) Continuous, as soon as a word is written in the SSC_THR Register (if Transmit is enabled), and immediately after the end of transfer of the previous data. */ +#define SSC_TCMR_START_RECEIVE (0x1u << 8) /**< \brief (SSC_TCMR) Receive start */ +#define SSC_TCMR_START_RF_LOW (0x2u << 8) /**< \brief (SSC_TCMR) Detection of a low level on TF signal */ +#define SSC_TCMR_START_RF_HIGH (0x3u << 8) /**< \brief (SSC_TCMR) Detection of a high level on TF signal */ +#define SSC_TCMR_START_RF_FALLING (0x4u << 8) /**< \brief (SSC_TCMR) Detection of a falling edge on TF signal */ +#define SSC_TCMR_START_RF_RISING (0x5u << 8) /**< \brief (SSC_TCMR) Detection of a rising edge on TF signal */ +#define SSC_TCMR_START_RF_LEVEL (0x6u << 8) /**< \brief (SSC_TCMR) Detection of any level change on TF signal */ +#define SSC_TCMR_START_RF_EDGE (0x7u << 8) /**< \brief (SSC_TCMR) Detection of any edge on TF signal */ +#define SSC_TCMR_START_CMP_0 (0x8u << 8) /**< \brief (SSC_TCMR) Compare 0 */ +#define SSC_TCMR_STTDLY_Pos 16 +#define SSC_TCMR_STTDLY_Msk (0xffu << SSC_TCMR_STTDLY_Pos) /**< \brief (SSC_TCMR) Transmit Start Delay */ +#define SSC_TCMR_STTDLY(value) ((SSC_TCMR_STTDLY_Msk & ((value) << SSC_TCMR_STTDLY_Pos))) +#define SSC_TCMR_PERIOD_Pos 24 +#define SSC_TCMR_PERIOD_Msk (0xffu << SSC_TCMR_PERIOD_Pos) /**< \brief (SSC_TCMR) Transmit Period Divider Selection */ +#define SSC_TCMR_PERIOD(value) ((SSC_TCMR_PERIOD_Msk & ((value) << SSC_TCMR_PERIOD_Pos))) +/* -------- SSC_TFMR : (SSC Offset: 0x1C) Transmit Frame Mode Register -------- */ +#define SSC_TFMR_DATLEN_Pos 0 +#define SSC_TFMR_DATLEN_Msk (0x1fu << SSC_TFMR_DATLEN_Pos) /**< \brief (SSC_TFMR) Data Length */ +#define SSC_TFMR_DATLEN(value) ((SSC_TFMR_DATLEN_Msk & ((value) << SSC_TFMR_DATLEN_Pos))) +#define SSC_TFMR_DATDEF (0x1u << 5) /**< \brief (SSC_TFMR) Data Default Value */ +#define SSC_TFMR_MSBF (0x1u << 7) /**< \brief (SSC_TFMR) Most Significant Bit First */ +#define SSC_TFMR_DATNB_Pos 8 +#define SSC_TFMR_DATNB_Msk (0xfu << SSC_TFMR_DATNB_Pos) /**< \brief (SSC_TFMR) Data Number per frame */ +#define SSC_TFMR_DATNB(value) ((SSC_TFMR_DATNB_Msk & ((value) << SSC_TFMR_DATNB_Pos))) +#define SSC_TFMR_FSLEN_Pos 16 +#define SSC_TFMR_FSLEN_Msk (0xfu << SSC_TFMR_FSLEN_Pos) /**< \brief (SSC_TFMR) Transmit Frame Sync Length */ +#define SSC_TFMR_FSLEN(value) ((SSC_TFMR_FSLEN_Msk & ((value) << SSC_TFMR_FSLEN_Pos))) +#define SSC_TFMR_FSOS_Pos 20 +#define SSC_TFMR_FSOS_Msk (0x7u << SSC_TFMR_FSOS_Pos) /**< \brief (SSC_TFMR) Transmit Frame Sync Output Selection */ +#define SSC_TFMR_FSOS_NONE (0x0u << 20) /**< \brief (SSC_TFMR) None */ +#define SSC_TFMR_FSOS_NEGATIVE (0x1u << 20) /**< \brief (SSC_TFMR) Negative Pulse */ +#define SSC_TFMR_FSOS_POSITIVE (0x2u << 20) /**< \brief (SSC_TFMR) Positive Pulse */ +#define SSC_TFMR_FSOS_LOW (0x3u << 20) /**< \brief (SSC_TFMR) Driven Low during data transfer */ +#define SSC_TFMR_FSOS_HIGH (0x4u << 20) /**< \brief (SSC_TFMR) Driven High during data transfer */ +#define SSC_TFMR_FSOS_TOGGLING (0x5u << 20) /**< \brief (SSC_TFMR) Toggling at each start of data transfer */ +#define SSC_TFMR_FSDEN (0x1u << 23) /**< \brief (SSC_TFMR) Frame Sync Data Enable */ +#define SSC_TFMR_FSEDGE (0x1u << 24) /**< \brief (SSC_TFMR) Frame Sync Edge Detection */ +#define SSC_TFMR_FSEDGE_POSITIVE (0x0u << 24) /**< \brief (SSC_TFMR) Positive Edge Detection */ +#define SSC_TFMR_FSEDGE_NEGATIVE (0x1u << 24) /**< \brief (SSC_TFMR) Negative Edge Detection */ +#define SSC_TFMR_FSLEN_EXT_Pos 28 +#define SSC_TFMR_FSLEN_EXT_Msk (0xfu << SSC_TFMR_FSLEN_EXT_Pos) /**< \brief (SSC_TFMR) FSLEN Field Extension */ +#define SSC_TFMR_FSLEN_EXT(value) ((SSC_TFMR_FSLEN_EXT_Msk & ((value) << SSC_TFMR_FSLEN_EXT_Pos))) +/* -------- SSC_RHR : (SSC Offset: 0x20) Receive Holding Register -------- */ +#define SSC_RHR_RDAT_Pos 0 +#define SSC_RHR_RDAT_Msk (0xffffffffu << SSC_RHR_RDAT_Pos) /**< \brief (SSC_RHR) Receive Data */ +/* -------- SSC_THR : (SSC Offset: 0x24) Transmit Holding Register -------- */ +#define SSC_THR_TDAT_Pos 0 +#define SSC_THR_TDAT_Msk (0xffffffffu << SSC_THR_TDAT_Pos) /**< \brief (SSC_THR) Transmit Data */ +#define SSC_THR_TDAT(value) ((SSC_THR_TDAT_Msk & ((value) << SSC_THR_TDAT_Pos))) +/* -------- SSC_RSHR : (SSC Offset: 0x30) Receive Sync. Holding Register -------- */ +#define SSC_RSHR_RSDAT_Pos 0 +#define SSC_RSHR_RSDAT_Msk (0xffffu << SSC_RSHR_RSDAT_Pos) /**< \brief (SSC_RSHR) Receive Synchronization Data */ +/* -------- SSC_TSHR : (SSC Offset: 0x34) Transmit Sync. Holding Register -------- */ +#define SSC_TSHR_TSDAT_Pos 0 +#define SSC_TSHR_TSDAT_Msk (0xffffu << SSC_TSHR_TSDAT_Pos) /**< \brief (SSC_TSHR) Transmit Synchronization Data */ +#define SSC_TSHR_TSDAT(value) ((SSC_TSHR_TSDAT_Msk & ((value) << SSC_TSHR_TSDAT_Pos))) +/* -------- SSC_RC0R : (SSC Offset: 0x38) Receive Compare 0 Register -------- */ +#define SSC_RC0R_CP0_Pos 0 +#define SSC_RC0R_CP0_Msk (0xffffu << SSC_RC0R_CP0_Pos) /**< \brief (SSC_RC0R) Receive Compare Data 0 */ +#define SSC_RC0R_CP0(value) ((SSC_RC0R_CP0_Msk & ((value) << SSC_RC0R_CP0_Pos))) +/* -------- SSC_RC1R : (SSC Offset: 0x3C) Receive Compare 1 Register -------- */ +#define SSC_RC1R_CP1_Pos 0 +#define SSC_RC1R_CP1_Msk (0xffffu << SSC_RC1R_CP1_Pos) /**< \brief (SSC_RC1R) Receive Compare Data 1 */ +#define SSC_RC1R_CP1(value) ((SSC_RC1R_CP1_Msk & ((value) << SSC_RC1R_CP1_Pos))) +/* -------- SSC_SR : (SSC Offset: 0x40) Status Register -------- */ +#define SSC_SR_TXRDY (0x1u << 0) /**< \brief (SSC_SR) Transmit Ready */ +#define SSC_SR_TXEMPTY (0x1u << 1) /**< \brief (SSC_SR) Transmit Empty */ +#define SSC_SR_RXRDY (0x1u << 4) /**< \brief (SSC_SR) Receive Ready */ +#define SSC_SR_OVRUN (0x1u << 5) /**< \brief (SSC_SR) Receive Overrun */ +#define SSC_SR_CP0 (0x1u << 8) /**< \brief (SSC_SR) Compare 0 */ +#define SSC_SR_CP1 (0x1u << 9) /**< \brief (SSC_SR) Compare 1 */ +#define SSC_SR_TXSYN (0x1u << 10) /**< \brief (SSC_SR) Transmit Sync */ +#define SSC_SR_RXSYN (0x1u << 11) /**< \brief (SSC_SR) Receive Sync */ +#define SSC_SR_TXEN (0x1u << 16) /**< \brief (SSC_SR) Transmit Enable */ +#define SSC_SR_RXEN (0x1u << 17) /**< \brief (SSC_SR) Receive Enable */ +/* -------- SSC_IER : (SSC Offset: 0x44) Interrupt Enable Register -------- */ +#define SSC_IER_TXRDY (0x1u << 0) /**< \brief (SSC_IER) Transmit Ready Interrupt Enable */ +#define SSC_IER_TXEMPTY (0x1u << 1) /**< \brief (SSC_IER) Transmit Empty Interrupt Enable */ +#define SSC_IER_RXRDY (0x1u << 4) /**< \brief (SSC_IER) Receive Ready Interrupt Enable */ +#define SSC_IER_OVRUN (0x1u << 5) /**< \brief (SSC_IER) Receive Overrun Interrupt Enable */ +#define SSC_IER_CP0 (0x1u << 8) /**< \brief (SSC_IER) Compare 0 Interrupt Enable */ +#define SSC_IER_CP1 (0x1u << 9) /**< \brief (SSC_IER) Compare 1 Interrupt Enable */ +#define SSC_IER_TXSYN (0x1u << 10) /**< \brief (SSC_IER) Tx Sync Interrupt Enable */ +#define SSC_IER_RXSYN (0x1u << 11) /**< \brief (SSC_IER) Rx Sync Interrupt Enable */ +/* -------- SSC_IDR : (SSC Offset: 0x48) Interrupt Disable Register -------- */ +#define SSC_IDR_TXRDY (0x1u << 0) /**< \brief (SSC_IDR) Transmit Ready Interrupt Disable */ +#define SSC_IDR_TXEMPTY (0x1u << 1) /**< \brief (SSC_IDR) Transmit Empty Interrupt Disable */ +#define SSC_IDR_RXRDY (0x1u << 4) /**< \brief (SSC_IDR) Receive Ready Interrupt Disable */ +#define SSC_IDR_OVRUN (0x1u << 5) /**< \brief (SSC_IDR) Receive Overrun Interrupt Disable */ +#define SSC_IDR_CP0 (0x1u << 8) /**< \brief (SSC_IDR) Compare 0 Interrupt Disable */ +#define SSC_IDR_CP1 (0x1u << 9) /**< \brief (SSC_IDR) Compare 1 Interrupt Disable */ +#define SSC_IDR_TXSYN (0x1u << 10) /**< \brief (SSC_IDR) Tx Sync Interrupt Enable */ +#define SSC_IDR_RXSYN (0x1u << 11) /**< \brief (SSC_IDR) Rx Sync Interrupt Enable */ +/* -------- SSC_IMR : (SSC Offset: 0x4C) Interrupt Mask Register -------- */ +#define SSC_IMR_TXRDY (0x1u << 0) /**< \brief (SSC_IMR) Transmit Ready Interrupt Mask */ +#define SSC_IMR_TXEMPTY (0x1u << 1) /**< \brief (SSC_IMR) Transmit Empty Interrupt Mask */ +#define SSC_IMR_RXRDY (0x1u << 4) /**< \brief (SSC_IMR) Receive Ready Interrupt Mask */ +#define SSC_IMR_OVRUN (0x1u << 5) /**< \brief (SSC_IMR) Receive Overrun Interrupt Mask */ +#define SSC_IMR_CP0 (0x1u << 8) /**< \brief (SSC_IMR) Compare 0 Interrupt Mask */ +#define SSC_IMR_CP1 (0x1u << 9) /**< \brief (SSC_IMR) Compare 1 Interrupt Mask */ +#define SSC_IMR_TXSYN (0x1u << 10) /**< \brief (SSC_IMR) Tx Sync Interrupt Mask */ +#define SSC_IMR_RXSYN (0x1u << 11) /**< \brief (SSC_IMR) Rx Sync Interrupt Mask */ +/* -------- SSC_WPMR : (SSC Offset: 0xE4) Write Protect Mode Register -------- */ +#define SSC_WPMR_WPEN (0x1u << 0) /**< \brief (SSC_WPMR) Write Protect Enable */ +#define SSC_WPMR_WPKEY_Pos 8 +#define SSC_WPMR_WPKEY_Msk (0xffffffu << SSC_WPMR_WPKEY_Pos) /**< \brief (SSC_WPMR) Write Protect KEY */ +#define SSC_WPMR_WPKEY(value) ((SSC_WPMR_WPKEY_Msk & ((value) << SSC_WPMR_WPKEY_Pos))) +/* -------- SSC_WPSR : (SSC Offset: 0xE8) Write Protect Status Register -------- */ +#define SSC_WPSR_WPVS (0x1u << 0) /**< \brief (SSC_WPSR) Write Protect Violation Status */ +#define SSC_WPSR_WPVSRC_Pos 8 +#define SSC_WPSR_WPVSRC_Msk (0xffffu << SSC_WPSR_WPVSRC_Pos) /**< \brief (SSC_WPSR) Write Protect Violation Source */ + +/*@}*/ + + +#endif /* _SAM3U_SSC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_supc.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_supc.h new file mode 100644 index 000000000..73e7f1fdc --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_supc.h @@ -0,0 +1,312 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_SUPC_COMPONENT_ +#define _SAM3U_SUPC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Supply Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3U_SUPC Supply Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Supc hardware registers */ +typedef struct { + WoReg SUPC_CR; /**< \brief (Supc Offset: 0x00) Supply Controller Control Register */ + RwReg SUPC_SMMR; /**< \brief (Supc Offset: 0x04) Supply Controller Supply Monitor Mode Register */ + RwReg SUPC_MR; /**< \brief (Supc Offset: 0x08) Supply Controller Mode Register */ + RwReg SUPC_WUMR; /**< \brief (Supc Offset: 0x0C) Supply Controller Wake Up Mode Register */ + RwReg SUPC_WUIR; /**< \brief (Supc Offset: 0x10) Supply Controller Wake Up Inputs Register */ + RoReg SUPC_SR; /**< \brief (Supc Offset: 0x14) Supply Controller Status Register */ +} Supc; +#endif /* __ASSEMBLY__ */ +/* -------- SUPC_CR : (SUPC Offset: 0x00) Supply Controller Control Register -------- */ +#define SUPC_CR_VROFF (0x1u << 2) /**< \brief (SUPC_CR) Voltage Regulator Off */ +#define SUPC_CR_VROFF_NO_EFFECT (0x0u << 2) /**< \brief (SUPC_CR) no effect. */ +#define SUPC_CR_VROFF_STOP_VREG (0x1u << 2) /**< \brief (SUPC_CR) if KEY is correct, asserts vddcore_nreset and stops the voltage regulator. */ +#define SUPC_CR_XTALSEL (0x1u << 3) /**< \brief (SUPC_CR) Crystal Oscillator Select */ +#define SUPC_CR_XTALSEL_NO_EFFECT (0x0u << 3) /**< \brief (SUPC_CR) no effect. */ +#define SUPC_CR_XTALSEL_CRYSTAL_SEL (0x1u << 3) /**< \brief (SUPC_CR) if KEY is correct, switches the slow clock on the crystal oscillator output. */ +#define SUPC_CR_KEY_Pos 24 +#define SUPC_CR_KEY_Msk (0xffu << SUPC_CR_KEY_Pos) /**< \brief (SUPC_CR) Password */ +#define SUPC_CR_KEY(value) ((SUPC_CR_KEY_Msk & ((value) << SUPC_CR_KEY_Pos))) +/* -------- SUPC_SMMR : (SUPC Offset: 0x04) Supply Controller Supply Monitor Mode Register -------- */ +#define SUPC_SMMR_SMTH_Pos 0 +#define SUPC_SMMR_SMTH_Msk (0xfu << SUPC_SMMR_SMTH_Pos) /**< \brief (SUPC_SMMR) Supply Monitor Threshold */ +#define SUPC_SMMR_SMTH_1_9V (0x0u << 0) /**< \brief (SUPC_SMMR) 1.9 V */ +#define SUPC_SMMR_SMTH_2_0V (0x1u << 0) /**< \brief (SUPC_SMMR) 2.0 V */ +#define SUPC_SMMR_SMTH_2_1V (0x2u << 0) /**< \brief (SUPC_SMMR) 2.1 V */ +#define SUPC_SMMR_SMTH_2_2V (0x3u << 0) /**< \brief (SUPC_SMMR) 2.2 V */ +#define SUPC_SMMR_SMTH_2_3V (0x4u << 0) /**< \brief (SUPC_SMMR) 2.3 V */ +#define SUPC_SMMR_SMTH_2_4V (0x5u << 0) /**< \brief (SUPC_SMMR) 2.4 V */ +#define SUPC_SMMR_SMTH_2_5V (0x6u << 0) /**< \brief (SUPC_SMMR) 2.5 V */ +#define SUPC_SMMR_SMTH_2_6V (0x7u << 0) /**< \brief (SUPC_SMMR) 2.6 V */ +#define SUPC_SMMR_SMTH_2_7V (0x8u << 0) /**< \brief (SUPC_SMMR) 2.7 V */ +#define SUPC_SMMR_SMTH_2_8V (0x9u << 0) /**< \brief (SUPC_SMMR) 2.8 V */ +#define SUPC_SMMR_SMTH_2_9V (0xAu << 0) /**< \brief (SUPC_SMMR) 2.9 V */ +#define SUPC_SMMR_SMTH_3_0V (0xBu << 0) /**< \brief (SUPC_SMMR) 3.0 V */ +#define SUPC_SMMR_SMTH_3_1V (0xCu << 0) /**< \brief (SUPC_SMMR) 3.1 V */ +#define SUPC_SMMR_SMTH_3_2V (0xDu << 0) /**< \brief (SUPC_SMMR) 3.2 V */ +#define SUPC_SMMR_SMTH_3_3V (0xEu << 0) /**< \brief (SUPC_SMMR) 3.3 V */ +#define SUPC_SMMR_SMTH_3_4V (0xFu << 0) /**< \brief (SUPC_SMMR) 3.4 V */ +#define SUPC_SMMR_SMSMPL_Pos 8 +#define SUPC_SMMR_SMSMPL_Msk (0x7u << SUPC_SMMR_SMSMPL_Pos) /**< \brief (SUPC_SMMR) Supply Monitor Sampling Period */ +#define SUPC_SMMR_SMSMPL_SMD (0x0u << 8) /**< \brief (SUPC_SMMR) Supply Monitor disabled */ +#define SUPC_SMMR_SMSMPL_CSM (0x1u << 8) /**< \brief (SUPC_SMMR) Continuous Supply Monitor */ +#define SUPC_SMMR_SMSMPL_32SLCK (0x2u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 32 SLCK periods */ +#define SUPC_SMMR_SMSMPL_256SLCK (0x3u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 256 SLCK periods */ +#define SUPC_SMMR_SMSMPL_2048SLCK (0x4u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 2,048 SLCK periods */ +#define SUPC_SMMR_SMRSTEN (0x1u << 12) /**< \brief (SUPC_SMMR) Supply Monitor Reset Enable */ +#define SUPC_SMMR_SMRSTEN_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_SMMR) the core reset signal "vddcore_nreset" is not affected when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMRSTEN_ENABLE (0x1u << 12) /**< \brief (SUPC_SMMR) the core reset signal, vddcore_nreset is asserted when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMIEN (0x1u << 13) /**< \brief (SUPC_SMMR) Supply Monitor Interrupt Enable */ +#define SUPC_SMMR_SMIEN_NOT_ENABLE (0x0u << 13) /**< \brief (SUPC_SMMR) the SUPC interrupt signal is not affected when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMIEN_ENABLE (0x1u << 13) /**< \brief (SUPC_SMMR) the SUPC interrupt signal is asserted when a supply monitor detection occurs. */ +/* -------- SUPC_MR : (SUPC Offset: 0x08) Supply Controller Mode Register -------- */ +#define SUPC_MR_BODRSTEN (0x1u << 12) /**< \brief (SUPC_MR) Brownout Detector Reset Enable */ +#define SUPC_MR_BODRSTEN_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_MR) the core reset signal "vddcore_nreset" is not affected when a brownout detection occurs. */ +#define SUPC_MR_BODRSTEN_ENABLE (0x1u << 12) /**< \brief (SUPC_MR) the core reset signal, vddcore_nreset is asserted when a brownout detection occurs. */ +#define SUPC_MR_BODDIS (0x1u << 13) /**< \brief (SUPC_MR) Brownout Detector Disable */ +#define SUPC_MR_BODDIS_ENABLE (0x0u << 13) /**< \brief (SUPC_MR) the core brownout detector is enabled. */ +#define SUPC_MR_BODDIS_DISABLE (0x1u << 13) /**< \brief (SUPC_MR) the core brownout detector is disabled. */ +#define SUPC_MR_VDDIORDYONREG (0x1u << 14) /**< \brief (SUPC_MR) */ +#define SUPC_MR_OSCBYPASS (0x1u << 20) /**< \brief (SUPC_MR) Oscillator Bypass */ +#define SUPC_MR_OSCBYPASS_NO_EFFECT (0x0u << 20) /**< \brief (SUPC_MR) no effect. Clock selection depends on XTALSEL value. */ +#define SUPC_MR_OSCBYPASS_BYPASS (0x1u << 20) /**< \brief (SUPC_MR) the 32-KHz XTAL oscillator is selected and is put in bypass mode. */ +#define SUPC_MR_KEY_Pos 24 +#define SUPC_MR_KEY_Msk (0xffu << SUPC_MR_KEY_Pos) /**< \brief (SUPC_MR) Password Key */ +#define SUPC_MR_KEY(value) ((SUPC_MR_KEY_Msk & ((value) << SUPC_MR_KEY_Pos))) +/* -------- SUPC_WUMR : (SUPC Offset: 0x0C) Supply Controller Wake Up Mode Register -------- */ +#define SUPC_WUMR_FWUPEN (0x1u << 0) /**< \brief (SUPC_WUMR) Force Wake Up Enable */ +#define SUPC_WUMR_FWUPEN_NOT_ENABLE (0x0u << 0) /**< \brief (SUPC_WUMR) the Force Wake Up pin has no wake up effect. */ +#define SUPC_WUMR_FWUPEN_ENABLE (0x1u << 0) /**< \brief (SUPC_WUMR) the Force Wake Up pin low forces the wake up of the core power supply. */ +#define SUPC_WUMR_SMEN (0x1u << 1) /**< \brief (SUPC_WUMR) Supply Monitor Wake Up Enable */ +#define SUPC_WUMR_SMEN_NOT_ENABLE (0x0u << 1) /**< \brief (SUPC_WUMR) the supply monitor detection has no wake up effect. */ +#define SUPC_WUMR_SMEN_ENABLE (0x1u << 1) /**< \brief (SUPC_WUMR) the supply monitor detection forces the wake up of the core power supply. */ +#define SUPC_WUMR_RTTEN (0x1u << 2) /**< \brief (SUPC_WUMR) Real Time Timer Wake Up Enable */ +#define SUPC_WUMR_RTTEN_NOT_ENABLE (0x0u << 2) /**< \brief (SUPC_WUMR) the RTT alarm signal has no wake up effect. */ +#define SUPC_WUMR_RTTEN_ENABLE (0x1u << 2) /**< \brief (SUPC_WUMR) the RTT alarm signal forces the wake up of the core power supply. */ +#define SUPC_WUMR_RTCEN (0x1u << 3) /**< \brief (SUPC_WUMR) Real Time Clock Wake Up Enable */ +#define SUPC_WUMR_RTCEN_NOT_ENABLE (0x0u << 3) /**< \brief (SUPC_WUMR) the RTC alarm signal has no wake up effect. */ +#define SUPC_WUMR_RTCEN_ENABLE (0x1u << 3) /**< \brief (SUPC_WUMR) the RTC alarm signal forces the wake up of the core power supply. */ +#define SUPC_WUMR_FWUPDBC_Pos 8 +#define SUPC_WUMR_FWUPDBC_Msk (0x7u << SUPC_WUMR_FWUPDBC_Pos) /**< \brief (SUPC_WUMR) Force Wake Up Debouncer Period */ +#define SUPC_WUMR_FWUPDBC_IMMEDIATE (0x0u << 8) /**< \brief (SUPC_WUMR) Immediate, no debouncing, detected active at least on one Slow Clock edge. */ +#define SUPC_WUMR_FWUPDBC_3_SCLK (0x1u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 3 SLCK periods */ +#define SUPC_WUMR_FWUPDBC_32_SCLK (0x2u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 32 SLCK periods */ +#define SUPC_WUMR_FWUPDBC_512_SCLK (0x3u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 512 SLCK periods */ +#define SUPC_WUMR_FWUPDBC_4096_SCLK (0x4u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 4,096 SLCK periods */ +#define SUPC_WUMR_FWUPDBC_32768_SCLK (0x5u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 32,768 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_Pos 12 +#define SUPC_WUMR_WKUPDBC_Msk (0x7u << SUPC_WUMR_WKUPDBC_Pos) /**< \brief (SUPC_WUMR) Wake Up Inputs Debouncer Period */ +#define SUPC_WUMR_WKUPDBC_IMMEDIATE (0x0u << 12) /**< \brief (SUPC_WUMR) Immediate, no debouncing, detected active at least on one Slow Clock edge. */ +#define SUPC_WUMR_WKUPDBC_3_SCLK (0x1u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 3 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_32_SCLK (0x2u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 32 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_512_SCLK (0x3u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 512 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_4096_SCLK (0x4u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 4,096 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_32768_SCLK (0x5u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 32,768 SLCK periods */ +/* -------- SUPC_WUIR : (SUPC Offset: 0x10) Supply Controller Wake Up Inputs Register -------- */ +#define SUPC_WUIR_WKUPEN0 (0x1u << 0) /**< \brief (SUPC_WUIR) Wake Up Input Enable 0 */ +#define SUPC_WUIR_WKUPEN0_NOT_ENABLE (0x0u << 0) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN0_ENABLE (0x1u << 0) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN1 (0x1u << 1) /**< \brief (SUPC_WUIR) Wake Up Input Enable 1 */ +#define SUPC_WUIR_WKUPEN1_NOT_ENABLE (0x0u << 1) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN1_ENABLE (0x1u << 1) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN2 (0x1u << 2) /**< \brief (SUPC_WUIR) Wake Up Input Enable 2 */ +#define SUPC_WUIR_WKUPEN2_NOT_ENABLE (0x0u << 2) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN2_ENABLE (0x1u << 2) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN3 (0x1u << 3) /**< \brief (SUPC_WUIR) Wake Up Input Enable 3 */ +#define SUPC_WUIR_WKUPEN3_NOT_ENABLE (0x0u << 3) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN3_ENABLE (0x1u << 3) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN4 (0x1u << 4) /**< \brief (SUPC_WUIR) Wake Up Input Enable 4 */ +#define SUPC_WUIR_WKUPEN4_NOT_ENABLE (0x0u << 4) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN4_ENABLE (0x1u << 4) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN5 (0x1u << 5) /**< \brief (SUPC_WUIR) Wake Up Input Enable 5 */ +#define SUPC_WUIR_WKUPEN5_NOT_ENABLE (0x0u << 5) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN5_ENABLE (0x1u << 5) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN6 (0x1u << 6) /**< \brief (SUPC_WUIR) Wake Up Input Enable 6 */ +#define SUPC_WUIR_WKUPEN6_NOT_ENABLE (0x0u << 6) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN6_ENABLE (0x1u << 6) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN7 (0x1u << 7) /**< \brief (SUPC_WUIR) Wake Up Input Enable 7 */ +#define SUPC_WUIR_WKUPEN7_NOT_ENABLE (0x0u << 7) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN7_ENABLE (0x1u << 7) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN8 (0x1u << 8) /**< \brief (SUPC_WUIR) Wake Up Input Enable 8 */ +#define SUPC_WUIR_WKUPEN8_NOT_ENABLE (0x0u << 8) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN8_ENABLE (0x1u << 8) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN9 (0x1u << 9) /**< \brief (SUPC_WUIR) Wake Up Input Enable 9 */ +#define SUPC_WUIR_WKUPEN9_NOT_ENABLE (0x0u << 9) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN9_ENABLE (0x1u << 9) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN10 (0x1u << 10) /**< \brief (SUPC_WUIR) Wake Up Input Enable 10 */ +#define SUPC_WUIR_WKUPEN10_NOT_ENABLE (0x0u << 10) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN10_ENABLE (0x1u << 10) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN11 (0x1u << 11) /**< \brief (SUPC_WUIR) Wake Up Input Enable 11 */ +#define SUPC_WUIR_WKUPEN11_NOT_ENABLE (0x0u << 11) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN11_ENABLE (0x1u << 11) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN12 (0x1u << 12) /**< \brief (SUPC_WUIR) Wake Up Input Enable 12 */ +#define SUPC_WUIR_WKUPEN12_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN12_ENABLE (0x1u << 12) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN13 (0x1u << 13) /**< \brief (SUPC_WUIR) Wake Up Input Enable 13 */ +#define SUPC_WUIR_WKUPEN13_NOT_ENABLE (0x0u << 13) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN13_ENABLE (0x1u << 13) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN14 (0x1u << 14) /**< \brief (SUPC_WUIR) Wake Up Input Enable 14 */ +#define SUPC_WUIR_WKUPEN14_NOT_ENABLE (0x0u << 14) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN14_ENABLE (0x1u << 14) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN15 (0x1u << 15) /**< \brief (SUPC_WUIR) Wake Up Input Enable 15 */ +#define SUPC_WUIR_WKUPEN15_NOT_ENABLE (0x0u << 15) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN15_ENABLE (0x1u << 15) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT0 (0x1u << 16) /**< \brief (SUPC_WUIR) Wake Up Input Transition 0 */ +#define SUPC_WUIR_WKUPT0_HIGH_TO_LOW (0x0u << 16) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT0_LOW_TO_HIGH (0x1u << 16) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT1 (0x1u << 17) /**< \brief (SUPC_WUIR) Wake Up Input Transition 1 */ +#define SUPC_WUIR_WKUPT1_HIGH_TO_LOW (0x0u << 17) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT1_LOW_TO_HIGH (0x1u << 17) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT2 (0x1u << 18) /**< \brief (SUPC_WUIR) Wake Up Input Transition 2 */ +#define SUPC_WUIR_WKUPT2_HIGH_TO_LOW (0x0u << 18) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT2_LOW_TO_HIGH (0x1u << 18) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT3 (0x1u << 19) /**< \brief (SUPC_WUIR) Wake Up Input Transition 3 */ +#define SUPC_WUIR_WKUPT3_HIGH_TO_LOW (0x0u << 19) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT3_LOW_TO_HIGH (0x1u << 19) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT4 (0x1u << 20) /**< \brief (SUPC_WUIR) Wake Up Input Transition 4 */ +#define SUPC_WUIR_WKUPT4_HIGH_TO_LOW (0x0u << 20) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT4_LOW_TO_HIGH (0x1u << 20) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT5 (0x1u << 21) /**< \brief (SUPC_WUIR) Wake Up Input Transition 5 */ +#define SUPC_WUIR_WKUPT5_HIGH_TO_LOW (0x0u << 21) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT5_LOW_TO_HIGH (0x1u << 21) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT6 (0x1u << 22) /**< \brief (SUPC_WUIR) Wake Up Input Transition 6 */ +#define SUPC_WUIR_WKUPT6_HIGH_TO_LOW (0x0u << 22) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT6_LOW_TO_HIGH (0x1u << 22) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT7 (0x1u << 23) /**< \brief (SUPC_WUIR) Wake Up Input Transition 7 */ +#define SUPC_WUIR_WKUPT7_HIGH_TO_LOW (0x0u << 23) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT7_LOW_TO_HIGH (0x1u << 23) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT8 (0x1u << 24) /**< \brief (SUPC_WUIR) Wake Up Input Transition 8 */ +#define SUPC_WUIR_WKUPT8_HIGH_TO_LOW (0x0u << 24) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT8_LOW_TO_HIGH (0x1u << 24) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT9 (0x1u << 25) /**< \brief (SUPC_WUIR) Wake Up Input Transition 9 */ +#define SUPC_WUIR_WKUPT9_HIGH_TO_LOW (0x0u << 25) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT9_LOW_TO_HIGH (0x1u << 25) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT10 (0x1u << 26) /**< \brief (SUPC_WUIR) Wake Up Input Transition 10 */ +#define SUPC_WUIR_WKUPT10_HIGH_TO_LOW (0x0u << 26) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT10_LOW_TO_HIGH (0x1u << 26) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT11 (0x1u << 27) /**< \brief (SUPC_WUIR) Wake Up Input Transition 11 */ +#define SUPC_WUIR_WKUPT11_HIGH_TO_LOW (0x0u << 27) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT11_LOW_TO_HIGH (0x1u << 27) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT12 (0x1u << 28) /**< \brief (SUPC_WUIR) Wake Up Input Transition 12 */ +#define SUPC_WUIR_WKUPT12_HIGH_TO_LOW (0x0u << 28) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT12_LOW_TO_HIGH (0x1u << 28) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT13 (0x1u << 29) /**< \brief (SUPC_WUIR) Wake Up Input Transition 13 */ +#define SUPC_WUIR_WKUPT13_HIGH_TO_LOW (0x0u << 29) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT13_LOW_TO_HIGH (0x1u << 29) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT14 (0x1u << 30) /**< \brief (SUPC_WUIR) Wake Up Input Transition 14 */ +#define SUPC_WUIR_WKUPT14_HIGH_TO_LOW (0x0u << 30) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT14_LOW_TO_HIGH (0x1u << 30) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT15 (0x1u << 31) /**< \brief (SUPC_WUIR) Wake Up Input Transition 15 */ +#define SUPC_WUIR_WKUPT15_HIGH_TO_LOW (0x0u << 31) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT15_LOW_TO_HIGH (0x1u << 31) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +/* -------- SUPC_SR : (SUPC Offset: 0x14) Supply Controller Status Register -------- */ +#define SUPC_SR_FWUPS (0x1u << 0) /**< \brief (SUPC_SR) FWUP Wake Up Status */ +#define SUPC_SR_FWUPS_NO (0x0u << 0) /**< \brief (SUPC_SR) no wake up due to the assertion of the FWUP pin has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_FWUPS_PRESENT (0x1u << 0) /**< \brief (SUPC_SR) at least one wake up due to the assertion of the FWUP pin has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPS (0x1u << 1) /**< \brief (SUPC_SR) WKUP Wake Up Status */ +#define SUPC_SR_WKUPS_NO (0x0u << 1) /**< \brief (SUPC_SR) no wake up due to the assertion of the WKUP pins has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPS_PRESENT (0x1u << 1) /**< \brief (SUPC_SR) at least one wake up due to the assertion of the WKUP pins has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_SMWS (0x1u << 2) /**< \brief (SUPC_SR) Supply Monitor Detection Wake Up Status */ +#define SUPC_SR_SMWS_NO (0x0u << 2) /**< \brief (SUPC_SR) no wake up due to a supply monitor detection has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_SMWS_PRESENT (0x1u << 2) /**< \brief (SUPC_SR) at least one wake up due to a supply monitor detection has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_BODRSTS (0x1u << 3) /**< \brief (SUPC_SR) Brownout Detector Reset Status */ +#define SUPC_SR_BODRSTS_NO (0x0u << 3) /**< \brief (SUPC_SR) no core brownout rising edge event has been detected since the last read of the SUPC_SR. */ +#define SUPC_SR_BODRSTS_PRESENT (0x1u << 3) /**< \brief (SUPC_SR) at least one brownout output rising edge event has been detected since the last read of the SUPC_SR. */ +#define SUPC_SR_SMRSTS (0x1u << 4) /**< \brief (SUPC_SR) Supply Monitor Reset Status */ +#define SUPC_SR_SMRSTS_NO (0x0u << 4) /**< \brief (SUPC_SR) no supply monitor detection has generated a core reset since the last read of the SUPC_SR. */ +#define SUPC_SR_SMRSTS_PRESENT (0x1u << 4) /**< \brief (SUPC_SR) at least one supply monitor detection has generated a core reset since the last read of the SUPC_SR. */ +#define SUPC_SR_SMS (0x1u << 5) /**< \brief (SUPC_SR) Supply Monitor Status */ +#define SUPC_SR_SMS_NO (0x0u << 5) /**< \brief (SUPC_SR) no supply monitor detection since the last read of SUPC_SR. */ +#define SUPC_SR_SMS_PRESENT (0x1u << 5) /**< \brief (SUPC_SR) at least one supply monitor detection since the last read of SUPC_SR. */ +#define SUPC_SR_SMOS (0x1u << 6) /**< \brief (SUPC_SR) Supply Monitor Output Status */ +#define SUPC_SR_SMOS_HIGH (0x0u << 6) /**< \brief (SUPC_SR) the supply monitor detected VDDUTMI higher than its threshold at its last measurement. */ +#define SUPC_SR_SMOS_LOW (0x1u << 6) /**< \brief (SUPC_SR) the supply monitor detected VDDUTMI lower than its threshold at its last measurement. */ +#define SUPC_SR_OSCSEL (0x1u << 7) /**< \brief (SUPC_SR) 32-kHz Oscillator Selection Status */ +#define SUPC_SR_OSCSEL_RC (0x0u << 7) /**< \brief (SUPC_SR) the slow clock, SLCK is generated by the embedded 32-kHz RC oscillator. */ +#define SUPC_SR_OSCSEL_CRYST (0x1u << 7) /**< \brief (SUPC_SR) the slow clock, SLCK is generated by the 32-kHz crystal oscillator. */ +#define SUPC_SR_FWUPIS (0x1u << 12) /**< \brief (SUPC_SR) FWUP Input Status */ +#define SUPC_SR_FWUPIS_LOW (0x0u << 12) /**< \brief (SUPC_SR) FWUP input is tied low. */ +#define SUPC_SR_FWUPIS_HIGH (0x1u << 12) /**< \brief (SUPC_SR) FWUP input is tied high. */ +#define SUPC_SR_WKUPIS0 (0x1u << 16) /**< \brief (SUPC_SR) WKUP Input Status 0 */ +#define SUPC_SR_WKUPIS0_DIS (0x0u << 16) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS0_EN (0x1u << 16) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS1 (0x1u << 17) /**< \brief (SUPC_SR) WKUP Input Status 1 */ +#define SUPC_SR_WKUPIS1_DIS (0x0u << 17) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS1_EN (0x1u << 17) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS2 (0x1u << 18) /**< \brief (SUPC_SR) WKUP Input Status 2 */ +#define SUPC_SR_WKUPIS2_DIS (0x0u << 18) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS2_EN (0x1u << 18) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS3 (0x1u << 19) /**< \brief (SUPC_SR) WKUP Input Status 3 */ +#define SUPC_SR_WKUPIS3_DIS (0x0u << 19) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS3_EN (0x1u << 19) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS4 (0x1u << 20) /**< \brief (SUPC_SR) WKUP Input Status 4 */ +#define SUPC_SR_WKUPIS4_DIS (0x0u << 20) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS4_EN (0x1u << 20) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS5 (0x1u << 21) /**< \brief (SUPC_SR) WKUP Input Status 5 */ +#define SUPC_SR_WKUPIS5_DIS (0x0u << 21) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS5_EN (0x1u << 21) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS6 (0x1u << 22) /**< \brief (SUPC_SR) WKUP Input Status 6 */ +#define SUPC_SR_WKUPIS6_DIS (0x0u << 22) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS6_EN (0x1u << 22) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS7 (0x1u << 23) /**< \brief (SUPC_SR) WKUP Input Status 7 */ +#define SUPC_SR_WKUPIS7_DIS (0x0u << 23) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS7_EN (0x1u << 23) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS8 (0x1u << 24) /**< \brief (SUPC_SR) WKUP Input Status 8 */ +#define SUPC_SR_WKUPIS8_DIS (0x0u << 24) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS8_EN (0x1u << 24) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS9 (0x1u << 25) /**< \brief (SUPC_SR) WKUP Input Status 9 */ +#define SUPC_SR_WKUPIS9_DIS (0x0u << 25) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS9_EN (0x1u << 25) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS10 (0x1u << 26) /**< \brief (SUPC_SR) WKUP Input Status 10 */ +#define SUPC_SR_WKUPIS10_DIS (0x0u << 26) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS10_EN (0x1u << 26) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS11 (0x1u << 27) /**< \brief (SUPC_SR) WKUP Input Status 11 */ +#define SUPC_SR_WKUPIS11_DIS (0x0u << 27) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS11_EN (0x1u << 27) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS12 (0x1u << 28) /**< \brief (SUPC_SR) WKUP Input Status 12 */ +#define SUPC_SR_WKUPIS12_DIS (0x0u << 28) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS12_EN (0x1u << 28) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS13 (0x1u << 29) /**< \brief (SUPC_SR) WKUP Input Status 13 */ +#define SUPC_SR_WKUPIS13_DIS (0x0u << 29) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS13_EN (0x1u << 29) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS14 (0x1u << 30) /**< \brief (SUPC_SR) WKUP Input Status 14 */ +#define SUPC_SR_WKUPIS14_DIS (0x0u << 30) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS14_EN (0x1u << 30) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS15 (0x1u << 31) /**< \brief (SUPC_SR) WKUP Input Status 15 */ +#define SUPC_SR_WKUPIS15_DIS (0x0u << 31) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS15_EN (0x1u << 31) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ + +/*@}*/ + + +#endif /* _SAM3U_SUPC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_tc.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_tc.h new file mode 100644 index 000000000..5c046acfb --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_tc.h @@ -0,0 +1,288 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_TC_COMPONENT_ +#define _SAM3U_TC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Timer Counter */ +/* ============================================================================= */ +/** \addtogroup SAM3U_TC Timer Counter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief TcChannel hardware registers */ +typedef struct { + RwReg TC_CCR; /**< \brief (TcChannel Offset: 0x0) Channel Control Register */ + RwReg TC_CMR; /**< \brief (TcChannel Offset: 0x4) Channel Mode Register */ + RoReg Reserved1[2]; + RwReg TC_CV; /**< \brief (TcChannel Offset: 0x10) Counter Value */ + RwReg TC_RA; /**< \brief (TcChannel Offset: 0x14) Register A */ + RwReg TC_RB; /**< \brief (TcChannel Offset: 0x18) Register B */ + RwReg TC_RC; /**< \brief (TcChannel Offset: 0x1C) Register C */ + RwReg TC_SR; /**< \brief (TcChannel Offset: 0x20) Status Register */ + RwReg TC_IER; /**< \brief (TcChannel Offset: 0x24) Interrupt Enable Register */ + RwReg TC_IDR; /**< \brief (TcChannel Offset: 0x28) Interrupt Disable Register */ + RwReg TC_IMR; /**< \brief (TcChannel Offset: 0x2C) Interrupt Mask Register */ + RoReg Reserved2[4]; +} TcChannel; +/** \brief Tc hardware registers */ +#define TCCHANNEL_NUMBER 3 +typedef struct { + TcChannel TC_CHANNEL[TCCHANNEL_NUMBER]; /**< \brief (Tc Offset: 0x0) channel = 0 .. 2 */ + WoReg TC_BCR; /**< \brief (Tc Offset: 0xC0) Block Control Register */ + RwReg TC_BMR; /**< \brief (Tc Offset: 0xC4) Block Mode Register */ + WoReg TC_QIER; /**< \brief (Tc Offset: 0xC8) QDEC Interrupt Enable Register */ + WoReg TC_QIDR; /**< \brief (Tc Offset: 0xCC) QDEC Interrupt Disable Register */ + RoReg TC_QIMR; /**< \brief (Tc Offset: 0xD0) QDEC Interrupt Mask Register */ + RoReg TC_QISR; /**< \brief (Tc Offset: 0xD4) QDEC Interrupt Status Register */ +} Tc; +#endif /* __ASSEMBLY__ */ +/* -------- TC_CCR : (TC Offset: N/A) Channel Control Register -------- */ +#define TC_CCR_CLKEN (0x1u << 0) /**< \brief (TC_CCR) Counter Clock Enable Command */ +#define TC_CCR_CLKDIS (0x1u << 1) /**< \brief (TC_CCR) Counter Clock Disable Command */ +#define TC_CCR_SWTRG (0x1u << 2) /**< \brief (TC_CCR) Software Trigger Command */ +/* -------- TC_CMR : (TC Offset: N/A) Channel Mode Register -------- */ +#define TC_CMR_TCCLKS_Pos 0 +#define TC_CMR_TCCLKS_Msk (0x7u << TC_CMR_TCCLKS_Pos) /**< \brief (TC_CMR) Clock Selection */ +#define TC_CMR_TCCLKS_TIMER_CLOCK1 (0x0u << 0) /**< \brief (TC_CMR) Clock selected: TCLK1 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK2 (0x1u << 0) /**< \brief (TC_CMR) Clock selected: TCLK2 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK3 (0x2u << 0) /**< \brief (TC_CMR) Clock selected: TCLK3 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK4 (0x3u << 0) /**< \brief (TC_CMR) Clock selected: TCLK4 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK5 (0x4u << 0) /**< \brief (TC_CMR) Clock selected: TCLK5 */ +#define TC_CMR_TCCLKS_XC0 (0x5u << 0) /**< \brief (TC_CMR) Clock selected: XC0 */ +#define TC_CMR_TCCLKS_XC1 (0x6u << 0) /**< \brief (TC_CMR) Clock selected: XC1 */ +#define TC_CMR_TCCLKS_XC2 (0x7u << 0) /**< \brief (TC_CMR) Clock selected: XC2 */ +#define TC_CMR_CLKI (0x1u << 3) /**< \brief (TC_CMR) Clock Invert */ +#define TC_CMR_BURST_Pos 4 +#define TC_CMR_BURST_Msk (0x3u << TC_CMR_BURST_Pos) /**< \brief (TC_CMR) Burst Signal Selection */ +#define TC_CMR_BURST_NONE (0x0u << 4) /**< \brief (TC_CMR) The clock is not gated by an external signal. */ +#define TC_CMR_BURST_XC0 (0x1u << 4) /**< \brief (TC_CMR) XC0 is ANDed with the selected clock. */ +#define TC_CMR_BURST_XC1 (0x2u << 4) /**< \brief (TC_CMR) XC1 is ANDed with the selected clock. */ +#define TC_CMR_BURST_XC2 (0x3u << 4) /**< \brief (TC_CMR) XC2 is ANDed with the selected clock. */ +#define TC_CMR_LDBSTOP (0x1u << 6) /**< \brief (TC_CMR) Counter Clock Stopped with RB Loading */ +#define TC_CMR_LDBDIS (0x1u << 7) /**< \brief (TC_CMR) Counter Clock Disable with RB Loading */ +#define TC_CMR_ETRGEDG_Pos 8 +#define TC_CMR_ETRGEDG_Msk (0x3u << TC_CMR_ETRGEDG_Pos) /**< \brief (TC_CMR) External Trigger Edge Selection */ +#define TC_CMR_ETRGEDG_NONE (0x0u << 8) /**< \brief (TC_CMR) The clock is not gated by an external signal. */ +#define TC_CMR_ETRGEDG_RISING (0x1u << 8) /**< \brief (TC_CMR) Rising edge */ +#define TC_CMR_ETRGEDG_FALLING (0x2u << 8) /**< \brief (TC_CMR) Falling edge */ +#define TC_CMR_ETRGEDG_EDGE (0x3u << 8) /**< \brief (TC_CMR) Each edge */ +#define TC_CMR_ABETRG (0x1u << 10) /**< \brief (TC_CMR) TIOA or TIOB External Trigger Selection */ +#define TC_CMR_CPCTRG (0x1u << 14) /**< \brief (TC_CMR) RC Compare Trigger Enable */ +#define TC_CMR_WAVE (0x1u << 15) /**< \brief (TC_CMR) Waveform Mode */ +#define TC_CMR_LDRA_Pos 16 +#define TC_CMR_LDRA_Msk (0x3u << TC_CMR_LDRA_Pos) /**< \brief (TC_CMR) RA Loading Edge Selection */ +#define TC_CMR_LDRA_NONE (0x0u << 16) /**< \brief (TC_CMR) None */ +#define TC_CMR_LDRA_RISING (0x1u << 16) /**< \brief (TC_CMR) Rising edge of TIOA */ +#define TC_CMR_LDRA_FALLING (0x2u << 16) /**< \brief (TC_CMR) Falling edge of TIOA */ +#define TC_CMR_LDRA_EDGE (0x3u << 16) /**< \brief (TC_CMR) Each edge of TIOA */ +#define TC_CMR_LDRB_Pos 18 +#define TC_CMR_LDRB_Msk (0x3u << TC_CMR_LDRB_Pos) /**< \brief (TC_CMR) RB Loading Edge Selection */ +#define TC_CMR_LDRB_NONE (0x0u << 18) /**< \brief (TC_CMR) None */ +#define TC_CMR_LDRB_RISING (0x1u << 18) /**< \brief (TC_CMR) Rising edge of TIOA */ +#define TC_CMR_LDRB_FALLING (0x2u << 18) /**< \brief (TC_CMR) Falling edge of TIOA */ +#define TC_CMR_LDRB_EDGE (0x3u << 18) /**< \brief (TC_CMR) Each edge of TIOA */ +#define TC_CMR_CPCSTOP (0x1u << 6) /**< \brief (TC_CMR) Counter Clock Stopped with RC Compare */ +#define TC_CMR_CPCDIS (0x1u << 7) /**< \brief (TC_CMR) Counter Clock Disable with RC Compare */ +#define TC_CMR_EEVTEDG_Pos 8 +#define TC_CMR_EEVTEDG_Msk (0x3u << TC_CMR_EEVTEDG_Pos) /**< \brief (TC_CMR) External Event Edge Selection */ +#define TC_CMR_EEVTEDG_NONE (0x0u << 8) /**< \brief (TC_CMR) None */ +#define TC_CMR_EEVTEDG_RISING (0x1u << 8) /**< \brief (TC_CMR) Rising edge */ +#define TC_CMR_EEVTEDG_FALLING (0x2u << 8) /**< \brief (TC_CMR) Falling edge */ +#define TC_CMR_EEVTEDG_EDGE (0x3u << 8) /**< \brief (TC_CMR) Each edge */ +#define TC_CMR_EEVT_Pos 10 +#define TC_CMR_EEVT_Msk (0x3u << TC_CMR_EEVT_Pos) /**< \brief (TC_CMR) External Event Selection */ +#define TC_CMR_EEVT_TIOB (0x0u << 10) /**< \brief (TC_CMR) TIOB */ +#define TC_CMR_EEVT_XC0 (0x1u << 10) /**< \brief (TC_CMR) XC0 */ +#define TC_CMR_EEVT_XC1 (0x2u << 10) /**< \brief (TC_CMR) XC1 */ +#define TC_CMR_EEVT_XC2 (0x3u << 10) /**< \brief (TC_CMR) XC2 */ +#define TC_CMR_ENETRG (0x1u << 12) /**< \brief (TC_CMR) External Event Trigger Enable */ +#define TC_CMR_WAVSEL_Pos 13 +#define TC_CMR_WAVSEL_Msk (0x3u << TC_CMR_WAVSEL_Pos) /**< \brief (TC_CMR) Waveform Selection */ +#define TC_CMR_WAVSEL_UP (0x0u << 13) /**< \brief (TC_CMR) UP mode without automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UPDOWN (0x1u << 13) /**< \brief (TC_CMR) UPDOWN mode without automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UP_RC (0x2u << 13) /**< \brief (TC_CMR) UP mode with automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UPDOWN_RC (0x3u << 13) /**< \brief (TC_CMR) UPDOWN mode with automatic trigger on RC Compare */ +#define TC_CMR_ACPA_Pos 16 +#define TC_CMR_ACPA_Msk (0x3u << TC_CMR_ACPA_Pos) /**< \brief (TC_CMR) RA Compare Effect on TIOA */ +#define TC_CMR_ACPA_NONE (0x0u << 16) /**< \brief (TC_CMR) None */ +#define TC_CMR_ACPA_SET (0x1u << 16) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ACPA_CLEAR (0x2u << 16) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ACPA_TOGGLE (0x3u << 16) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_ACPC_Pos 18 +#define TC_CMR_ACPC_Msk (0x3u << TC_CMR_ACPC_Pos) /**< \brief (TC_CMR) RC Compare Effect on TIOA */ +#define TC_CMR_ACPC_NONE (0x0u << 18) /**< \brief (TC_CMR) None */ +#define TC_CMR_ACPC_SET (0x1u << 18) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ACPC_CLEAR (0x2u << 18) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ACPC_TOGGLE (0x3u << 18) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_AEEVT_Pos 20 +#define TC_CMR_AEEVT_Msk (0x3u << TC_CMR_AEEVT_Pos) /**< \brief (TC_CMR) External Event Effect on TIOA */ +#define TC_CMR_AEEVT_NONE (0x0u << 20) /**< \brief (TC_CMR) None */ +#define TC_CMR_AEEVT_SET (0x1u << 20) /**< \brief (TC_CMR) Set */ +#define TC_CMR_AEEVT_CLEAR (0x2u << 20) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_AEEVT_TOGGLE (0x3u << 20) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_ASWTRG_Pos 22 +#define TC_CMR_ASWTRG_Msk (0x3u << TC_CMR_ASWTRG_Pos) /**< \brief (TC_CMR) Software Trigger Effect on TIOA */ +#define TC_CMR_ASWTRG_NONE (0x0u << 22) /**< \brief (TC_CMR) None */ +#define TC_CMR_ASWTRG_SET (0x1u << 22) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ASWTRG_CLEAR (0x2u << 22) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ASWTRG_TOGGLE (0x3u << 22) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BCPB_Pos 24 +#define TC_CMR_BCPB_Msk (0x3u << TC_CMR_BCPB_Pos) /**< \brief (TC_CMR) RB Compare Effect on TIOB */ +#define TC_CMR_BCPB_NONE (0x0u << 24) /**< \brief (TC_CMR) None */ +#define TC_CMR_BCPB_SET (0x1u << 24) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BCPB_CLEAR (0x2u << 24) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BCPB_TOGGLE (0x3u << 24) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BCPC_Pos 26 +#define TC_CMR_BCPC_Msk (0x3u << TC_CMR_BCPC_Pos) /**< \brief (TC_CMR) RC Compare Effect on TIOB */ +#define TC_CMR_BCPC_NONE (0x0u << 26) /**< \brief (TC_CMR) None */ +#define TC_CMR_BCPC_SET (0x1u << 26) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BCPC_CLEAR (0x2u << 26) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BCPC_TOGGLE (0x3u << 26) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BEEVT_Pos 28 +#define TC_CMR_BEEVT_Msk (0x3u << TC_CMR_BEEVT_Pos) /**< \brief (TC_CMR) External Event Effect on TIOB */ +#define TC_CMR_BEEVT_NONE (0x0u << 28) /**< \brief (TC_CMR) None */ +#define TC_CMR_BEEVT_SET (0x1u << 28) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BEEVT_CLEAR (0x2u << 28) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BEEVT_TOGGLE (0x3u << 28) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BSWTRG_Pos 30 +#define TC_CMR_BSWTRG_Msk (0x3u << TC_CMR_BSWTRG_Pos) /**< \brief (TC_CMR) Software Trigger Effect on TIOB */ +#define TC_CMR_BSWTRG_NONE (0x0u << 30) /**< \brief (TC_CMR) None */ +#define TC_CMR_BSWTRG_SET (0x1u << 30) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BSWTRG_CLEAR (0x2u << 30) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BSWTRG_TOGGLE (0x3u << 30) /**< \brief (TC_CMR) Toggle */ +/* -------- TC_CV : (TC Offset: N/A) Counter Value -------- */ +#define TC_CV_CV_Pos 0 +#define TC_CV_CV_Msk (0xffffffffu << TC_CV_CV_Pos) /**< \brief (TC_CV) Counter Value */ +/* -------- TC_RA : (TC Offset: N/A) Register A -------- */ +#define TC_RA_RA_Pos 0 +#define TC_RA_RA_Msk (0xffffffffu << TC_RA_RA_Pos) /**< \brief (TC_RA) Register A */ +#define TC_RA_RA(value) ((TC_RA_RA_Msk & ((value) << TC_RA_RA_Pos))) +/* -------- TC_RB : (TC Offset: N/A) Register B -------- */ +#define TC_RB_RB_Pos 0 +#define TC_RB_RB_Msk (0xffffffffu << TC_RB_RB_Pos) /**< \brief (TC_RB) Register B */ +#define TC_RB_RB(value) ((TC_RB_RB_Msk & ((value) << TC_RB_RB_Pos))) +/* -------- TC_RC : (TC Offset: N/A) Register C -------- */ +#define TC_RC_RC_Pos 0 +#define TC_RC_RC_Msk (0xffffffffu << TC_RC_RC_Pos) /**< \brief (TC_RC) Register C */ +#define TC_RC_RC(value) ((TC_RC_RC_Msk & ((value) << TC_RC_RC_Pos))) +/* -------- TC_SR : (TC Offset: N/A) Status Register -------- */ +#define TC_SR_COVFS (0x1u << 0) /**< \brief (TC_SR) Counter Overflow Status */ +#define TC_SR_LOVRS (0x1u << 1) /**< \brief (TC_SR) Load Overrun Status */ +#define TC_SR_CPAS (0x1u << 2) /**< \brief (TC_SR) RA Compare Status */ +#define TC_SR_CPBS (0x1u << 3) /**< \brief (TC_SR) RB Compare Status */ +#define TC_SR_CPCS (0x1u << 4) /**< \brief (TC_SR) RC Compare Status */ +#define TC_SR_LDRAS (0x1u << 5) /**< \brief (TC_SR) RA Loading Status */ +#define TC_SR_LDRBS (0x1u << 6) /**< \brief (TC_SR) RB Loading Status */ +#define TC_SR_ETRGS (0x1u << 7) /**< \brief (TC_SR) External Trigger Status */ +#define TC_SR_CLKSTA (0x1u << 16) /**< \brief (TC_SR) Clock Enabling Status */ +#define TC_SR_MTIOA (0x1u << 17) /**< \brief (TC_SR) TIOA Mirror */ +#define TC_SR_MTIOB (0x1u << 18) /**< \brief (TC_SR) TIOB Mirror */ +/* -------- TC_IER : (TC Offset: N/A) Interrupt Enable Register -------- */ +#define TC_IER_COVFS (0x1u << 0) /**< \brief (TC_IER) Counter Overflow */ +#define TC_IER_LOVRS (0x1u << 1) /**< \brief (TC_IER) Load Overrun */ +#define TC_IER_CPAS (0x1u << 2) /**< \brief (TC_IER) RA Compare */ +#define TC_IER_CPBS (0x1u << 3) /**< \brief (TC_IER) RB Compare */ +#define TC_IER_CPCS (0x1u << 4) /**< \brief (TC_IER) RC Compare */ +#define TC_IER_LDRAS (0x1u << 5) /**< \brief (TC_IER) RA Loading */ +#define TC_IER_LDRBS (0x1u << 6) /**< \brief (TC_IER) RB Loading */ +#define TC_IER_ETRGS (0x1u << 7) /**< \brief (TC_IER) External Trigger */ +/* -------- TC_IDR : (TC Offset: N/A) Interrupt Disable Register -------- */ +#define TC_IDR_COVFS (0x1u << 0) /**< \brief (TC_IDR) Counter Overflow */ +#define TC_IDR_LOVRS (0x1u << 1) /**< \brief (TC_IDR) Load Overrun */ +#define TC_IDR_CPAS (0x1u << 2) /**< \brief (TC_IDR) RA Compare */ +#define TC_IDR_CPBS (0x1u << 3) /**< \brief (TC_IDR) RB Compare */ +#define TC_IDR_CPCS (0x1u << 4) /**< \brief (TC_IDR) RC Compare */ +#define TC_IDR_LDRAS (0x1u << 5) /**< \brief (TC_IDR) RA Loading */ +#define TC_IDR_LDRBS (0x1u << 6) /**< \brief (TC_IDR) RB Loading */ +#define TC_IDR_ETRGS (0x1u << 7) /**< \brief (TC_IDR) External Trigger */ +/* -------- TC_IMR : (TC Offset: N/A) Interrupt Mask Register -------- */ +#define TC_IMR_COVFS (0x1u << 0) /**< \brief (TC_IMR) Counter Overflow */ +#define TC_IMR_LOVRS (0x1u << 1) /**< \brief (TC_IMR) Load Overrun */ +#define TC_IMR_CPAS (0x1u << 2) /**< \brief (TC_IMR) RA Compare */ +#define TC_IMR_CPBS (0x1u << 3) /**< \brief (TC_IMR) RB Compare */ +#define TC_IMR_CPCS (0x1u << 4) /**< \brief (TC_IMR) RC Compare */ +#define TC_IMR_LDRAS (0x1u << 5) /**< \brief (TC_IMR) RA Loading */ +#define TC_IMR_LDRBS (0x1u << 6) /**< \brief (TC_IMR) RB Loading */ +#define TC_IMR_ETRGS (0x1u << 7) /**< \brief (TC_IMR) External Trigger */ +/* -------- TC_BCR : (TC Offset: 0xC0) Block Control Register -------- */ +#define TC_BCR_SYNC (0x1u << 0) /**< \brief (TC_BCR) Synchro Command */ +/* -------- TC_BMR : (TC Offset: 0xC4) Block Mode Register -------- */ +#define TC_BMR_TC0XC0S_Pos 0 +#define TC_BMR_TC0XC0S_Msk (0x3u << TC_BMR_TC0XC0S_Pos) /**< \brief (TC_BMR) External Clock Signal 0 Selection */ +#define TC_BMR_TC0XC0S_TCLK0 (0x0u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TCLK0 */ +#define TC_BMR_TC0XC0S_TIOA1 (0x2u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TIOA1 */ +#define TC_BMR_TC0XC0S_TIOA2 (0x3u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TIOA2 */ +#define TC_BMR_TC1XC1S_Pos 2 +#define TC_BMR_TC1XC1S_Msk (0x3u << TC_BMR_TC1XC1S_Pos) /**< \brief (TC_BMR) External Clock Signal 1 Selection */ +#define TC_BMR_TC1XC1S_TCLK1 (0x0u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TCLK1 */ +#define TC_BMR_TC1XC1S_TIOA0 (0x2u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TIOA0 */ +#define TC_BMR_TC1XC1S_TIOA2 (0x3u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TIOA2 */ +#define TC_BMR_TC2XC2S_Pos 4 +#define TC_BMR_TC2XC2S_Msk (0x3u << TC_BMR_TC2XC2S_Pos) /**< \brief (TC_BMR) External Clock Signal 2 Selection */ +#define TC_BMR_TC2XC2S_TCLK2 (0x0u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TCLK2 */ +#define TC_BMR_TC2XC2S_TIOA1 (0x2u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TIOA1 */ +#define TC_BMR_TC2XC2S_TIOA2 (0x3u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TIOA2 */ +#define TC_BMR_QDEN (0x1u << 8) /**< \brief (TC_BMR) Quadrature Decoder ENabled */ +#define TC_BMR_POSEN (0x1u << 9) /**< \brief (TC_BMR) POSition ENabled */ +#define TC_BMR_SPEEDEN (0x1u << 10) /**< \brief (TC_BMR) SPEED ENabled */ +#define TC_BMR_QDTRANS (0x1u << 11) /**< \brief (TC_BMR) Quadrature Decoding TRANSparent */ +#define TC_BMR_EDGPHA (0x1u << 12) /**< \brief (TC_BMR) EDGe on PHA count mode */ +#define TC_BMR_INVA (0x1u << 13) /**< \brief (TC_BMR) INVerted phA */ +#define TC_BMR_INVB (0x1u << 14) /**< \brief (TC_BMR) INVerted phB */ +#define TC_BMR_INVIDX (0x1u << 15) /**< \brief (TC_BMR) INVerted InDeX */ +#define TC_BMR_SWAP (0x1u << 16) /**< \brief (TC_BMR) SWAP PHA and PHB */ +#define TC_BMR_IDXPHB (0x1u << 17) /**< \brief (TC_BMR) InDeX pin is PHB pin */ +#define TC_BMR_FILTER (0x1u << 19) /**< \brief (TC_BMR) */ +#define TC_BMR_MAXFILT_Pos 20 +#define TC_BMR_MAXFILT_Msk (0x3fu << TC_BMR_MAXFILT_Pos) /**< \brief (TC_BMR) MAXimum FILTer */ +#define TC_BMR_MAXFILT(value) ((TC_BMR_MAXFILT_Msk & ((value) << TC_BMR_MAXFILT_Pos))) +/* -------- TC_QIER : (TC Offset: 0xC8) QDEC Interrupt Enable Register -------- */ +#define TC_QIER_IDX (0x1u << 0) /**< \brief (TC_QIER) InDeX */ +#define TC_QIER_DIRCHG (0x1u << 1) /**< \brief (TC_QIER) DIRection CHanGe */ +#define TC_QIER_QERR (0x1u << 2) /**< \brief (TC_QIER) Quadrature ERRor */ +/* -------- TC_QIDR : (TC Offset: 0xCC) QDEC Interrupt Disable Register -------- */ +#define TC_QIDR_IDX (0x1u << 0) /**< \brief (TC_QIDR) InDeX */ +#define TC_QIDR_DIRCHG (0x1u << 1) /**< \brief (TC_QIDR) DIRection CHanGe */ +#define TC_QIDR_QERR (0x1u << 2) /**< \brief (TC_QIDR) Quadrature ERRor */ +/* -------- TC_QIMR : (TC Offset: 0xD0) QDEC Interrupt Mask Register -------- */ +#define TC_QIMR_IDX (0x1u << 0) /**< \brief (TC_QIMR) InDeX */ +#define TC_QIMR_DIRCHG (0x1u << 1) /**< \brief (TC_QIMR) DIRection CHanGe */ +#define TC_QIMR_QERR (0x1u << 2) /**< \brief (TC_QIMR) Quadrature ERRor */ +/* -------- TC_QISR : (TC Offset: 0xD4) QDEC Interrupt Status Register -------- */ +#define TC_QISR_IDX (0x1u << 0) /**< \brief (TC_QISR) InDeX */ +#define TC_QISR_DIRCHG (0x1u << 1) /**< \brief (TC_QISR) DIRection CHanGe */ +#define TC_QISR_QERR (0x1u << 2) /**< \brief (TC_QISR) Quadrature ERRor */ +#define TC_QISR_DIR (0x1u << 8) /**< \brief (TC_QISR) Direction */ + +/*@}*/ + + +#endif /* _SAM3U_TC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_twi.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_twi.h new file mode 100644 index 000000000..a1816963b --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_twi.h @@ -0,0 +1,217 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_TWI_COMPONENT_ +#define _SAM3U_TWI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Two-wire Interface */ +/* ============================================================================= */ +/** \addtogroup SAM3U_TWI Two-wire Interface */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Twi hardware registers */ +typedef struct { + WoReg TWI_CR; /**< \brief (Twi Offset: 0x00) Control Register */ + RwReg TWI_MMR; /**< \brief (Twi Offset: 0x04) Master Mode Register */ + RwReg TWI_SMR; /**< \brief (Twi Offset: 0x08) Slave Mode Register */ + RwReg TWI_IADR; /**< \brief (Twi Offset: 0x0C) Internal Address Register */ + RwReg TWI_CWGR; /**< \brief (Twi Offset: 0x10) Clock Waveform Generator Register */ + RoReg Reserved1[3]; + RoReg TWI_SR; /**< \brief (Twi Offset: 0x20) Status Register */ + WoReg TWI_IER; /**< \brief (Twi Offset: 0x24) Interrupt Enable Register */ + WoReg TWI_IDR; /**< \brief (Twi Offset: 0x28) Interrupt Disable Register */ + RoReg TWI_IMR; /**< \brief (Twi Offset: 0x2C) Interrupt Mask Register */ + RoReg TWI_RHR; /**< \brief (Twi Offset: 0x30) Receive Holding Register */ + WoReg TWI_THR; /**< \brief (Twi Offset: 0x34) Transmit Holding Register */ + RoReg Reserved2[50]; + RwReg TWI_RPR; /**< \brief (Twi Offset: 0x100) Receive Pointer Register */ + RwReg TWI_RCR; /**< \brief (Twi Offset: 0x104) Receive Counter Register */ + RwReg TWI_TPR; /**< \brief (Twi Offset: 0x108) Transmit Pointer Register */ + RwReg TWI_TCR; /**< \brief (Twi Offset: 0x10C) Transmit Counter Register */ + RwReg TWI_RNPR; /**< \brief (Twi Offset: 0x110) Receive Next Pointer Register */ + RwReg TWI_RNCR; /**< \brief (Twi Offset: 0x114) Receive Next Counter Register */ + RwReg TWI_TNPR; /**< \brief (Twi Offset: 0x118) Transmit Next Pointer Register */ + RwReg TWI_TNCR; /**< \brief (Twi Offset: 0x11C) Transmit Next Counter Register */ + WoReg TWI_PTCR; /**< \brief (Twi Offset: 0x120) Transfer Control Register */ + RoReg TWI_PTSR; /**< \brief (Twi Offset: 0x124) Transfer Status Register */ +} Twi; +#endif /* __ASSEMBLY__ */ +/* -------- TWI_CR : (TWI Offset: 0x00) Control Register -------- */ +#define TWI_CR_START (0x1u << 0) /**< \brief (TWI_CR) Send a START Condition */ +#define TWI_CR_STOP (0x1u << 1) /**< \brief (TWI_CR) Send a STOP Condition */ +#define TWI_CR_MSEN (0x1u << 2) /**< \brief (TWI_CR) TWI Master Mode Enabled */ +#define TWI_CR_MSDIS (0x1u << 3) /**< \brief (TWI_CR) TWI Master Mode Disabled */ +#define TWI_CR_SVEN (0x1u << 4) /**< \brief (TWI_CR) TWI Slave Mode Enabled */ +#define TWI_CR_SVDIS (0x1u << 5) /**< \brief (TWI_CR) TWI Slave Mode Disabled */ +#define TWI_CR_QUICK (0x1u << 6) /**< \brief (TWI_CR) SMBUS Quick Command */ +#define TWI_CR_SWRST (0x1u << 7) /**< \brief (TWI_CR) Software Reset */ +/* -------- TWI_MMR : (TWI Offset: 0x04) Master Mode Register -------- */ +#define TWI_MMR_IADRSZ_Pos 8 +#define TWI_MMR_IADRSZ_Msk (0x3u << TWI_MMR_IADRSZ_Pos) /**< \brief (TWI_MMR) Internal Device Address Size */ +#define TWI_MMR_IADRSZ_NONE (0x0u << 8) /**< \brief (TWI_MMR) No internal device address */ +#define TWI_MMR_IADRSZ_1_BYTE (0x1u << 8) /**< \brief (TWI_MMR) One-byte internal device address */ +#define TWI_MMR_IADRSZ_2_BYTE (0x2u << 8) /**< \brief (TWI_MMR) Two-byte internal device address */ +#define TWI_MMR_IADRSZ_3_BYTE (0x3u << 8) /**< \brief (TWI_MMR) Three-byte internal device address */ +#define TWI_MMR_MREAD (0x1u << 12) /**< \brief (TWI_MMR) Master Read Direction */ +#define TWI_MMR_DADR_Pos 16 +#define TWI_MMR_DADR_Msk (0x7fu << TWI_MMR_DADR_Pos) /**< \brief (TWI_MMR) Device Address */ +#define TWI_MMR_DADR(value) ((TWI_MMR_DADR_Msk & ((value) << TWI_MMR_DADR_Pos))) +/* -------- TWI_SMR : (TWI Offset: 0x08) Slave Mode Register -------- */ +#define TWI_SMR_SADR_Pos 16 +#define TWI_SMR_SADR_Msk (0x7fu << TWI_SMR_SADR_Pos) /**< \brief (TWI_SMR) Slave Address */ +#define TWI_SMR_SADR(value) ((TWI_SMR_SADR_Msk & ((value) << TWI_SMR_SADR_Pos))) +/* -------- TWI_IADR : (TWI Offset: 0x0C) Internal Address Register -------- */ +#define TWI_IADR_IADR_Pos 0 +#define TWI_IADR_IADR_Msk (0xffffffu << TWI_IADR_IADR_Pos) /**< \brief (TWI_IADR) Internal Address */ +#define TWI_IADR_IADR(value) ((TWI_IADR_IADR_Msk & ((value) << TWI_IADR_IADR_Pos))) +/* -------- TWI_CWGR : (TWI Offset: 0x10) Clock Waveform Generator Register -------- */ +#define TWI_CWGR_CLDIV_Pos 0 +#define TWI_CWGR_CLDIV_Msk (0xffu << TWI_CWGR_CLDIV_Pos) /**< \brief (TWI_CWGR) Clock Low Divider */ +#define TWI_CWGR_CLDIV(value) ((TWI_CWGR_CLDIV_Msk & ((value) << TWI_CWGR_CLDIV_Pos))) +#define TWI_CWGR_CHDIV_Pos 8 +#define TWI_CWGR_CHDIV_Msk (0xffu << TWI_CWGR_CHDIV_Pos) /**< \brief (TWI_CWGR) Clock High Divider */ +#define TWI_CWGR_CHDIV(value) ((TWI_CWGR_CHDIV_Msk & ((value) << TWI_CWGR_CHDIV_Pos))) +#define TWI_CWGR_CKDIV_Pos 16 +#define TWI_CWGR_CKDIV_Msk (0x7u << TWI_CWGR_CKDIV_Pos) /**< \brief (TWI_CWGR) Clock Divider */ +#define TWI_CWGR_CKDIV(value) ((TWI_CWGR_CKDIV_Msk & ((value) << TWI_CWGR_CKDIV_Pos))) +/* -------- TWI_SR : (TWI Offset: 0x20) Status Register -------- */ +#define TWI_SR_TXCOMP (0x1u << 0) /**< \brief (TWI_SR) Transmission Completed (automatically set / reset) */ +#define TWI_SR_RXRDY (0x1u << 1) /**< \brief (TWI_SR) Receive Holding Register Ready (automatically set / reset) */ +#define TWI_SR_TXRDY (0x1u << 2) /**< \brief (TWI_SR) Transmit Holding Register Ready (automatically set / reset) */ +#define TWI_SR_SVREAD (0x1u << 3) /**< \brief (TWI_SR) Slave Read (automatically set / reset) */ +#define TWI_SR_SVACC (0x1u << 4) /**< \brief (TWI_SR) Slave Access (automatically set / reset) */ +#define TWI_SR_GACC (0x1u << 5) /**< \brief (TWI_SR) General Call Access (clear on read) */ +#define TWI_SR_OVRE (0x1u << 6) /**< \brief (TWI_SR) Overrun Error (clear on read) */ +#define TWI_SR_NACK (0x1u << 8) /**< \brief (TWI_SR) Not Acknowledged (clear on read) */ +#define TWI_SR_ARBLST (0x1u << 9) /**< \brief (TWI_SR) Arbitration Lost (clear on read) */ +#define TWI_SR_SCLWS (0x1u << 10) /**< \brief (TWI_SR) Clock Wait State (automatically set / reset) */ +#define TWI_SR_EOSACC (0x1u << 11) /**< \brief (TWI_SR) End Of Slave Access (clear on read) */ +#define TWI_SR_ENDRX (0x1u << 12) /**< \brief (TWI_SR) End of RX buffer */ +#define TWI_SR_ENDTX (0x1u << 13) /**< \brief (TWI_SR) End of TX buffer */ +#define TWI_SR_RXBUFF (0x1u << 14) /**< \brief (TWI_SR) RX Buffer Full */ +#define TWI_SR_TXBUFE (0x1u << 15) /**< \brief (TWI_SR) TX Buffer Empty */ +/* -------- TWI_IER : (TWI Offset: 0x24) Interrupt Enable Register -------- */ +#define TWI_IER_TXCOMP (0x1u << 0) /**< \brief (TWI_IER) Transmission Completed Interrupt Enable */ +#define TWI_IER_RXRDY (0x1u << 1) /**< \brief (TWI_IER) Receive Holding Register Ready Interrupt Enable */ +#define TWI_IER_TXRDY (0x1u << 2) /**< \brief (TWI_IER) Transmit Holding Register Ready Interrupt Enable */ +#define TWI_IER_SVACC (0x1u << 4) /**< \brief (TWI_IER) Slave Access Interrupt Enable */ +#define TWI_IER_GACC (0x1u << 5) /**< \brief (TWI_IER) General Call Access Interrupt Enable */ +#define TWI_IER_OVRE (0x1u << 6) /**< \brief (TWI_IER) Overrun Error Interrupt Enable */ +#define TWI_IER_NACK (0x1u << 8) /**< \brief (TWI_IER) Not Acknowledge Interrupt Enable */ +#define TWI_IER_ARBLST (0x1u << 9) /**< \brief (TWI_IER) Arbitration Lost Interrupt Enable */ +#define TWI_IER_SCL_WS (0x1u << 10) /**< \brief (TWI_IER) Clock Wait State Interrupt Enable */ +#define TWI_IER_EOSACC (0x1u << 11) /**< \brief (TWI_IER) End Of Slave Access Interrupt Enable */ +#define TWI_IER_ENDRX (0x1u << 12) /**< \brief (TWI_IER) End of Receive Buffer Interrupt Enable */ +#define TWI_IER_ENDTX (0x1u << 13) /**< \brief (TWI_IER) End of Transmit Buffer Interrupt Enable */ +#define TWI_IER_RXBUFF (0x1u << 14) /**< \brief (TWI_IER) Receive Buffer Full Interrupt Enable */ +#define TWI_IER_TXBUFE (0x1u << 15) /**< \brief (TWI_IER) Transmit Buffer Empty Interrupt Enable */ +/* -------- TWI_IDR : (TWI Offset: 0x28) Interrupt Disable Register -------- */ +#define TWI_IDR_TXCOMP (0x1u << 0) /**< \brief (TWI_IDR) Transmission Completed Interrupt Disable */ +#define TWI_IDR_RXRDY (0x1u << 1) /**< \brief (TWI_IDR) Receive Holding Register Ready Interrupt Disable */ +#define TWI_IDR_TXRDY (0x1u << 2) /**< \brief (TWI_IDR) Transmit Holding Register Ready Interrupt Disable */ +#define TWI_IDR_SVACC (0x1u << 4) /**< \brief (TWI_IDR) Slave Access Interrupt Disable */ +#define TWI_IDR_GACC (0x1u << 5) /**< \brief (TWI_IDR) General Call Access Interrupt Disable */ +#define TWI_IDR_OVRE (0x1u << 6) /**< \brief (TWI_IDR) Overrun Error Interrupt Disable */ +#define TWI_IDR_NACK (0x1u << 8) /**< \brief (TWI_IDR) Not Acknowledge Interrupt Disable */ +#define TWI_IDR_ARBLST (0x1u << 9) /**< \brief (TWI_IDR) Arbitration Lost Interrupt Disable */ +#define TWI_IDR_SCL_WS (0x1u << 10) /**< \brief (TWI_IDR) Clock Wait State Interrupt Disable */ +#define TWI_IDR_EOSACC (0x1u << 11) /**< \brief (TWI_IDR) End Of Slave Access Interrupt Disable */ +#define TWI_IDR_ENDRX (0x1u << 12) /**< \brief (TWI_IDR) End of Receive Buffer Interrupt Disable */ +#define TWI_IDR_ENDTX (0x1u << 13) /**< \brief (TWI_IDR) End of Transmit Buffer Interrupt Disable */ +#define TWI_IDR_RXBUFF (0x1u << 14) /**< \brief (TWI_IDR) Receive Buffer Full Interrupt Disable */ +#define TWI_IDR_TXBUFE (0x1u << 15) /**< \brief (TWI_IDR) Transmit Buffer Empty Interrupt Disable */ +/* -------- TWI_IMR : (TWI Offset: 0x2C) Interrupt Mask Register -------- */ +#define TWI_IMR_TXCOMP (0x1u << 0) /**< \brief (TWI_IMR) Transmission Completed Interrupt Mask */ +#define TWI_IMR_RXRDY (0x1u << 1) /**< \brief (TWI_IMR) Receive Holding Register Ready Interrupt Mask */ +#define TWI_IMR_TXRDY (0x1u << 2) /**< \brief (TWI_IMR) Transmit Holding Register Ready Interrupt Mask */ +#define TWI_IMR_SVACC (0x1u << 4) /**< \brief (TWI_IMR) Slave Access Interrupt Mask */ +#define TWI_IMR_GACC (0x1u << 5) /**< \brief (TWI_IMR) General Call Access Interrupt Mask */ +#define TWI_IMR_OVRE (0x1u << 6) /**< \brief (TWI_IMR) Overrun Error Interrupt Mask */ +#define TWI_IMR_NACK (0x1u << 8) /**< \brief (TWI_IMR) Not Acknowledge Interrupt Mask */ +#define TWI_IMR_ARBLST (0x1u << 9) /**< \brief (TWI_IMR) Arbitration Lost Interrupt Mask */ +#define TWI_IMR_SCL_WS (0x1u << 10) /**< \brief (TWI_IMR) Clock Wait State Interrupt Mask */ +#define TWI_IMR_EOSACC (0x1u << 11) /**< \brief (TWI_IMR) End Of Slave Access Interrupt Mask */ +#define TWI_IMR_ENDRX (0x1u << 12) /**< \brief (TWI_IMR) End of Receive Buffer Interrupt Mask */ +#define TWI_IMR_ENDTX (0x1u << 13) /**< \brief (TWI_IMR) End of Transmit Buffer Interrupt Mask */ +#define TWI_IMR_RXBUFF (0x1u << 14) /**< \brief (TWI_IMR) Receive Buffer Full Interrupt Mask */ +#define TWI_IMR_TXBUFE (0x1u << 15) /**< \brief (TWI_IMR) Transmit Buffer Empty Interrupt Mask */ +/* -------- TWI_RHR : (TWI Offset: 0x30) Receive Holding Register -------- */ +#define TWI_RHR_RXDATA_Pos 0 +#define TWI_RHR_RXDATA_Msk (0xffu << TWI_RHR_RXDATA_Pos) /**< \brief (TWI_RHR) Master or Slave Receive Holding Data */ +/* -------- TWI_THR : (TWI Offset: 0x34) Transmit Holding Register -------- */ +#define TWI_THR_TXDATA_Pos 0 +#define TWI_THR_TXDATA_Msk (0xffu << TWI_THR_TXDATA_Pos) /**< \brief (TWI_THR) Master or Slave Transmit Holding Data */ +#define TWI_THR_TXDATA(value) ((TWI_THR_TXDATA_Msk & ((value) << TWI_THR_TXDATA_Pos))) +/* -------- TWI_RPR : (TWI Offset: 0x100) Receive Pointer Register -------- */ +#define TWI_RPR_RXPTR_Pos 0 +#define TWI_RPR_RXPTR_Msk (0xffffffffu << TWI_RPR_RXPTR_Pos) /**< \brief (TWI_RPR) Receive Pointer Register */ +#define TWI_RPR_RXPTR(value) ((TWI_RPR_RXPTR_Msk & ((value) << TWI_RPR_RXPTR_Pos))) +/* -------- TWI_RCR : (TWI Offset: 0x104) Receive Counter Register -------- */ +#define TWI_RCR_RXCTR_Pos 0 +#define TWI_RCR_RXCTR_Msk (0xffffu << TWI_RCR_RXCTR_Pos) /**< \brief (TWI_RCR) Receive Counter Register */ +#define TWI_RCR_RXCTR(value) ((TWI_RCR_RXCTR_Msk & ((value) << TWI_RCR_RXCTR_Pos))) +/* -------- TWI_TPR : (TWI Offset: 0x108) Transmit Pointer Register -------- */ +#define TWI_TPR_TXPTR_Pos 0 +#define TWI_TPR_TXPTR_Msk (0xffffffffu << TWI_TPR_TXPTR_Pos) /**< \brief (TWI_TPR) Transmit Counter Register */ +#define TWI_TPR_TXPTR(value) ((TWI_TPR_TXPTR_Msk & ((value) << TWI_TPR_TXPTR_Pos))) +/* -------- TWI_TCR : (TWI Offset: 0x10C) Transmit Counter Register -------- */ +#define TWI_TCR_TXCTR_Pos 0 +#define TWI_TCR_TXCTR_Msk (0xffffu << TWI_TCR_TXCTR_Pos) /**< \brief (TWI_TCR) Transmit Counter Register */ +#define TWI_TCR_TXCTR(value) ((TWI_TCR_TXCTR_Msk & ((value) << TWI_TCR_TXCTR_Pos))) +/* -------- TWI_RNPR : (TWI Offset: 0x110) Receive Next Pointer Register -------- */ +#define TWI_RNPR_RXNPTR_Pos 0 +#define TWI_RNPR_RXNPTR_Msk (0xffffffffu << TWI_RNPR_RXNPTR_Pos) /**< \brief (TWI_RNPR) Receive Next Pointer */ +#define TWI_RNPR_RXNPTR(value) ((TWI_RNPR_RXNPTR_Msk & ((value) << TWI_RNPR_RXNPTR_Pos))) +/* -------- TWI_RNCR : (TWI Offset: 0x114) Receive Next Counter Register -------- */ +#define TWI_RNCR_RXNCTR_Pos 0 +#define TWI_RNCR_RXNCTR_Msk (0xffffu << TWI_RNCR_RXNCTR_Pos) /**< \brief (TWI_RNCR) Receive Next Counter */ +#define TWI_RNCR_RXNCTR(value) ((TWI_RNCR_RXNCTR_Msk & ((value) << TWI_RNCR_RXNCTR_Pos))) +/* -------- TWI_TNPR : (TWI Offset: 0x118) Transmit Next Pointer Register -------- */ +#define TWI_TNPR_TXNPTR_Pos 0 +#define TWI_TNPR_TXNPTR_Msk (0xffffffffu << TWI_TNPR_TXNPTR_Pos) /**< \brief (TWI_TNPR) Transmit Next Pointer */ +#define TWI_TNPR_TXNPTR(value) ((TWI_TNPR_TXNPTR_Msk & ((value) << TWI_TNPR_TXNPTR_Pos))) +/* -------- TWI_TNCR : (TWI Offset: 0x11C) Transmit Next Counter Register -------- */ +#define TWI_TNCR_TXNCTR_Pos 0 +#define TWI_TNCR_TXNCTR_Msk (0xffffu << TWI_TNCR_TXNCTR_Pos) /**< \brief (TWI_TNCR) Transmit Counter Next */ +#define TWI_TNCR_TXNCTR(value) ((TWI_TNCR_TXNCTR_Msk & ((value) << TWI_TNCR_TXNCTR_Pos))) +/* -------- TWI_PTCR : (TWI Offset: 0x120) Transfer Control Register -------- */ +#define TWI_PTCR_RXTEN (0x1u << 0) /**< \brief (TWI_PTCR) Receiver Transfer Enable */ +#define TWI_PTCR_RXTDIS (0x1u << 1) /**< \brief (TWI_PTCR) Receiver Transfer Disable */ +#define TWI_PTCR_TXTEN (0x1u << 8) /**< \brief (TWI_PTCR) Transmitter Transfer Enable */ +#define TWI_PTCR_TXTDIS (0x1u << 9) /**< \brief (TWI_PTCR) Transmitter Transfer Disable */ +/* -------- TWI_PTSR : (TWI Offset: 0x124) Transfer Status Register -------- */ +#define TWI_PTSR_RXTEN (0x1u << 0) /**< \brief (TWI_PTSR) Receiver Transfer Enable */ +#define TWI_PTSR_TXTEN (0x1u << 8) /**< \brief (TWI_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3U_TWI_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_uart.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_uart.h new file mode 100644 index 000000000..87cc4c1a4 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_uart.h @@ -0,0 +1,185 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_UART_COMPONENT_ +#define _SAM3U_UART_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Universal Asynchronous Receiver Transmitter */ +/* ============================================================================= */ +/** \addtogroup SAM3U_UART Universal Asynchronous Receiver Transmitter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Uart hardware registers */ +typedef struct { + WoReg UART_CR; /**< \brief (Uart Offset: 0x0000) Control Register */ + RwReg UART_MR; /**< \brief (Uart Offset: 0x0004) Mode Register */ + WoReg UART_IER; /**< \brief (Uart Offset: 0x0008) Interrupt Enable Register */ + WoReg UART_IDR; /**< \brief (Uart Offset: 0x000C) Interrupt Disable Register */ + RoReg UART_IMR; /**< \brief (Uart Offset: 0x0010) Interrupt Mask Register */ + RoReg UART_SR; /**< \brief (Uart Offset: 0x0014) Status Register */ + RoReg UART_RHR; /**< \brief (Uart Offset: 0x0018) Receive Holding Register */ + WoReg UART_THR; /**< \brief (Uart Offset: 0x001C) Transmit Holding Register */ + RwReg UART_BRGR; /**< \brief (Uart Offset: 0x0020) Baud Rate Generator Register */ + RoReg Reserved1[55]; + RwReg UART_RPR; /**< \brief (Uart Offset: 0x100) Receive Pointer Register */ + RwReg UART_RCR; /**< \brief (Uart Offset: 0x104) Receive Counter Register */ + RwReg UART_TPR; /**< \brief (Uart Offset: 0x108) Transmit Pointer Register */ + RwReg UART_TCR; /**< \brief (Uart Offset: 0x10C) Transmit Counter Register */ + RwReg UART_RNPR; /**< \brief (Uart Offset: 0x110) Receive Next Pointer Register */ + RwReg UART_RNCR; /**< \brief (Uart Offset: 0x114) Receive Next Counter Register */ + RwReg UART_TNPR; /**< \brief (Uart Offset: 0x118) Transmit Next Pointer Register */ + RwReg UART_TNCR; /**< \brief (Uart Offset: 0x11C) Transmit Next Counter Register */ + WoReg UART_PTCR; /**< \brief (Uart Offset: 0x120) Transfer Control Register */ + RoReg UART_PTSR; /**< \brief (Uart Offset: 0x124) Transfer Status Register */ +} Uart; +#endif /* __ASSEMBLY__ */ +/* -------- UART_CR : (UART Offset: 0x0000) Control Register -------- */ +#define UART_CR_RSTRX (0x1u << 2) /**< \brief (UART_CR) Reset Receiver */ +#define UART_CR_RSTTX (0x1u << 3) /**< \brief (UART_CR) Reset Transmitter */ +#define UART_CR_RXEN (0x1u << 4) /**< \brief (UART_CR) Receiver Enable */ +#define UART_CR_RXDIS (0x1u << 5) /**< \brief (UART_CR) Receiver Disable */ +#define UART_CR_TXEN (0x1u << 6) /**< \brief (UART_CR) Transmitter Enable */ +#define UART_CR_TXDIS (0x1u << 7) /**< \brief (UART_CR) Transmitter Disable */ +#define UART_CR_RSTSTA (0x1u << 8) /**< \brief (UART_CR) Reset Status Bits */ +/* -------- UART_MR : (UART Offset: 0x0004) Mode Register -------- */ +#define UART_MR_PAR_Pos 9 +#define UART_MR_PAR_Msk (0x7u << UART_MR_PAR_Pos) /**< \brief (UART_MR) Parity Type */ +#define UART_MR_PAR_EVEN (0x0u << 9) /**< \brief (UART_MR) Even parity */ +#define UART_MR_PAR_ODD (0x1u << 9) /**< \brief (UART_MR) Odd parity */ +#define UART_MR_PAR_SPACE (0x2u << 9) /**< \brief (UART_MR) Space: parity forced to 0 */ +#define UART_MR_PAR_MARK (0x3u << 9) /**< \brief (UART_MR) Mark: parity forced to 1 */ +#define UART_MR_PAR_NO (0x4u << 9) /**< \brief (UART_MR) No parity */ +#define UART_MR_CHMODE_Pos 14 +#define UART_MR_CHMODE_Msk (0x3u << UART_MR_CHMODE_Pos) /**< \brief (UART_MR) Channel Mode */ +#define UART_MR_CHMODE_NORMAL (0x0u << 14) /**< \brief (UART_MR) Normal Mode */ +#define UART_MR_CHMODE_AUTOMATIC (0x1u << 14) /**< \brief (UART_MR) Automatic Echo */ +#define UART_MR_CHMODE_LOCAL_LOOPBACK (0x2u << 14) /**< \brief (UART_MR) Local Loopback */ +#define UART_MR_CHMODE_REMOTE_LOOPBACK (0x3u << 14) /**< \brief (UART_MR) Remote Loopback */ +/* -------- UART_IER : (UART Offset: 0x0008) Interrupt Enable Register -------- */ +#define UART_IER_RXRDY (0x1u << 0) /**< \brief (UART_IER) Enable RXRDY Interrupt */ +#define UART_IER_TXRDY (0x1u << 1) /**< \brief (UART_IER) Enable TXRDY Interrupt */ +#define UART_IER_ENDRX (0x1u << 3) /**< \brief (UART_IER) Enable End of Receive Transfer Interrupt */ +#define UART_IER_ENDTX (0x1u << 4) /**< \brief (UART_IER) Enable End of Transmit Interrupt */ +#define UART_IER_OVRE (0x1u << 5) /**< \brief (UART_IER) Enable Overrun Error Interrupt */ +#define UART_IER_FRAME (0x1u << 6) /**< \brief (UART_IER) Enable Framing Error Interrupt */ +#define UART_IER_PARE (0x1u << 7) /**< \brief (UART_IER) Enable Parity Error Interrupt */ +#define UART_IER_TXEMPTY (0x1u << 9) /**< \brief (UART_IER) Enable TXEMPTY Interrupt */ +#define UART_IER_TXBUFE (0x1u << 11) /**< \brief (UART_IER) Enable Buffer Empty Interrupt */ +#define UART_IER_RXBUFF (0x1u << 12) /**< \brief (UART_IER) Enable Buffer Full Interrupt */ +/* -------- UART_IDR : (UART Offset: 0x000C) Interrupt Disable Register -------- */ +#define UART_IDR_RXRDY (0x1u << 0) /**< \brief (UART_IDR) Disable RXRDY Interrupt */ +#define UART_IDR_TXRDY (0x1u << 1) /**< \brief (UART_IDR) Disable TXRDY Interrupt */ +#define UART_IDR_ENDRX (0x1u << 3) /**< \brief (UART_IDR) Disable End of Receive Transfer Interrupt */ +#define UART_IDR_ENDTX (0x1u << 4) /**< \brief (UART_IDR) Disable End of Transmit Interrupt */ +#define UART_IDR_OVRE (0x1u << 5) /**< \brief (UART_IDR) Disable Overrun Error Interrupt */ +#define UART_IDR_FRAME (0x1u << 6) /**< \brief (UART_IDR) Disable Framing Error Interrupt */ +#define UART_IDR_PARE (0x1u << 7) /**< \brief (UART_IDR) Disable Parity Error Interrupt */ +#define UART_IDR_TXEMPTY (0x1u << 9) /**< \brief (UART_IDR) Disable TXEMPTY Interrupt */ +#define UART_IDR_TXBUFE (0x1u << 11) /**< \brief (UART_IDR) Disable Buffer Empty Interrupt */ +#define UART_IDR_RXBUFF (0x1u << 12) /**< \brief (UART_IDR) Disable Buffer Full Interrupt */ +/* -------- UART_IMR : (UART Offset: 0x0010) Interrupt Mask Register -------- */ +#define UART_IMR_RXRDY (0x1u << 0) /**< \brief (UART_IMR) Mask RXRDY Interrupt */ +#define UART_IMR_TXRDY (0x1u << 1) /**< \brief (UART_IMR) Disable TXRDY Interrupt */ +#define UART_IMR_ENDRX (0x1u << 3) /**< \brief (UART_IMR) Mask End of Receive Transfer Interrupt */ +#define UART_IMR_ENDTX (0x1u << 4) /**< \brief (UART_IMR) Mask End of Transmit Interrupt */ +#define UART_IMR_OVRE (0x1u << 5) /**< \brief (UART_IMR) Mask Overrun Error Interrupt */ +#define UART_IMR_FRAME (0x1u << 6) /**< \brief (UART_IMR) Mask Framing Error Interrupt */ +#define UART_IMR_PARE (0x1u << 7) /**< \brief (UART_IMR) Mask Parity Error Interrupt */ +#define UART_IMR_TXEMPTY (0x1u << 9) /**< \brief (UART_IMR) Mask TXEMPTY Interrupt */ +#define UART_IMR_TXBUFE (0x1u << 11) /**< \brief (UART_IMR) Mask TXBUFE Interrupt */ +#define UART_IMR_RXBUFF (0x1u << 12) /**< \brief (UART_IMR) Mask RXBUFF Interrupt */ +/* -------- UART_SR : (UART Offset: 0x0014) Status Register -------- */ +#define UART_SR_RXRDY (0x1u << 0) /**< \brief (UART_SR) Receiver Ready */ +#define UART_SR_TXRDY (0x1u << 1) /**< \brief (UART_SR) Transmitter Ready */ +#define UART_SR_ENDRX (0x1u << 3) /**< \brief (UART_SR) End of Receiver Transfer */ +#define UART_SR_ENDTX (0x1u << 4) /**< \brief (UART_SR) End of Transmitter Transfer */ +#define UART_SR_OVRE (0x1u << 5) /**< \brief (UART_SR) Overrun Error */ +#define UART_SR_FRAME (0x1u << 6) /**< \brief (UART_SR) Framing Error */ +#define UART_SR_PARE (0x1u << 7) /**< \brief (UART_SR) Parity Error */ +#define UART_SR_TXEMPTY (0x1u << 9) /**< \brief (UART_SR) Transmitter Empty */ +#define UART_SR_TXBUFE (0x1u << 11) /**< \brief (UART_SR) Transmission Buffer Empty */ +#define UART_SR_RXBUFF (0x1u << 12) /**< \brief (UART_SR) Receive Buffer Full */ +/* -------- UART_RHR : (UART Offset: 0x0018) Receive Holding Register -------- */ +#define UART_RHR_RXCHR_Pos 0 +#define UART_RHR_RXCHR_Msk (0xffu << UART_RHR_RXCHR_Pos) /**< \brief (UART_RHR) Received Character */ +/* -------- UART_THR : (UART Offset: 0x001C) Transmit Holding Register -------- */ +#define UART_THR_TXCHR_Pos 0 +#define UART_THR_TXCHR_Msk (0xffu << UART_THR_TXCHR_Pos) /**< \brief (UART_THR) Character to be Transmitted */ +#define UART_THR_TXCHR(value) ((UART_THR_TXCHR_Msk & ((value) << UART_THR_TXCHR_Pos))) +/* -------- UART_BRGR : (UART Offset: 0x0020) Baud Rate Generator Register -------- */ +#define UART_BRGR_CD_Pos 0 +#define UART_BRGR_CD_Msk (0xffffu << UART_BRGR_CD_Pos) /**< \brief (UART_BRGR) Clock Divisor */ +#define UART_BRGR_CD(value) ((UART_BRGR_CD_Msk & ((value) << UART_BRGR_CD_Pos))) +/* -------- UART_RPR : (UART Offset: 0x100) Receive Pointer Register -------- */ +#define UART_RPR_RXPTR_Pos 0 +#define UART_RPR_RXPTR_Msk (0xffffffffu << UART_RPR_RXPTR_Pos) /**< \brief (UART_RPR) Receive Pointer Register */ +#define UART_RPR_RXPTR(value) ((UART_RPR_RXPTR_Msk & ((value) << UART_RPR_RXPTR_Pos))) +/* -------- UART_RCR : (UART Offset: 0x104) Receive Counter Register -------- */ +#define UART_RCR_RXCTR_Pos 0 +#define UART_RCR_RXCTR_Msk (0xffffu << UART_RCR_RXCTR_Pos) /**< \brief (UART_RCR) Receive Counter Register */ +#define UART_RCR_RXCTR(value) ((UART_RCR_RXCTR_Msk & ((value) << UART_RCR_RXCTR_Pos))) +/* -------- UART_TPR : (UART Offset: 0x108) Transmit Pointer Register -------- */ +#define UART_TPR_TXPTR_Pos 0 +#define UART_TPR_TXPTR_Msk (0xffffffffu << UART_TPR_TXPTR_Pos) /**< \brief (UART_TPR) Transmit Counter Register */ +#define UART_TPR_TXPTR(value) ((UART_TPR_TXPTR_Msk & ((value) << UART_TPR_TXPTR_Pos))) +/* -------- UART_TCR : (UART Offset: 0x10C) Transmit Counter Register -------- */ +#define UART_TCR_TXCTR_Pos 0 +#define UART_TCR_TXCTR_Msk (0xffffu << UART_TCR_TXCTR_Pos) /**< \brief (UART_TCR) Transmit Counter Register */ +#define UART_TCR_TXCTR(value) ((UART_TCR_TXCTR_Msk & ((value) << UART_TCR_TXCTR_Pos))) +/* -------- UART_RNPR : (UART Offset: 0x110) Receive Next Pointer Register -------- */ +#define UART_RNPR_RXNPTR_Pos 0 +#define UART_RNPR_RXNPTR_Msk (0xffffffffu << UART_RNPR_RXNPTR_Pos) /**< \brief (UART_RNPR) Receive Next Pointer */ +#define UART_RNPR_RXNPTR(value) ((UART_RNPR_RXNPTR_Msk & ((value) << UART_RNPR_RXNPTR_Pos))) +/* -------- UART_RNCR : (UART Offset: 0x114) Receive Next Counter Register -------- */ +#define UART_RNCR_RXNCTR_Pos 0 +#define UART_RNCR_RXNCTR_Msk (0xffffu << UART_RNCR_RXNCTR_Pos) /**< \brief (UART_RNCR) Receive Next Counter */ +#define UART_RNCR_RXNCTR(value) ((UART_RNCR_RXNCTR_Msk & ((value) << UART_RNCR_RXNCTR_Pos))) +/* -------- UART_TNPR : (UART Offset: 0x118) Transmit Next Pointer Register -------- */ +#define UART_TNPR_TXNPTR_Pos 0 +#define UART_TNPR_TXNPTR_Msk (0xffffffffu << UART_TNPR_TXNPTR_Pos) /**< \brief (UART_TNPR) Transmit Next Pointer */ +#define UART_TNPR_TXNPTR(value) ((UART_TNPR_TXNPTR_Msk & ((value) << UART_TNPR_TXNPTR_Pos))) +/* -------- UART_TNCR : (UART Offset: 0x11C) Transmit Next Counter Register -------- */ +#define UART_TNCR_TXNCTR_Pos 0 +#define UART_TNCR_TXNCTR_Msk (0xffffu << UART_TNCR_TXNCTR_Pos) /**< \brief (UART_TNCR) Transmit Counter Next */ +#define UART_TNCR_TXNCTR(value) ((UART_TNCR_TXNCTR_Msk & ((value) << UART_TNCR_TXNCTR_Pos))) +/* -------- UART_PTCR : (UART Offset: 0x120) Transfer Control Register -------- */ +#define UART_PTCR_RXTEN (0x1u << 0) /**< \brief (UART_PTCR) Receiver Transfer Enable */ +#define UART_PTCR_RXTDIS (0x1u << 1) /**< \brief (UART_PTCR) Receiver Transfer Disable */ +#define UART_PTCR_TXTEN (0x1u << 8) /**< \brief (UART_PTCR) Transmitter Transfer Enable */ +#define UART_PTCR_TXTDIS (0x1u << 9) /**< \brief (UART_PTCR) Transmitter Transfer Disable */ +/* -------- UART_PTSR : (UART Offset: 0x124) Transfer Status Register -------- */ +#define UART_PTSR_RXTEN (0x1u << 0) /**< \brief (UART_PTSR) Receiver Transfer Enable */ +#define UART_PTSR_TXTEN (0x1u << 8) /**< \brief (UART_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3U_UART_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_udphs.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_udphs.h new file mode 100644 index 000000000..f80d3d6c2 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_udphs.h @@ -0,0 +1,375 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_UDPHS_COMPONENT_ +#define _SAM3U_UDPHS_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR USB High Speed Device Port */ +/* ============================================================================= */ +/** \addtogroup SAM3U_UDPHS USB High Speed Device Port */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief UdphsDma hardware registers */ +typedef struct { + RwReg UDPHS_DMANXTDSC; /**< \brief (UdphsDma Offset: 0x0) UDPHS DMA Next Descriptor Address Register */ + RwReg UDPHS_DMAADDRESS; /**< \brief (UdphsDma Offset: 0x4) UDPHS DMA Channel Address Register */ + RwReg UDPHS_DMACONTROL; /**< \brief (UdphsDma Offset: 0x8) UDPHS DMA Channel Control Register */ + RwReg UDPHS_DMASTATUS; /**< \brief (UdphsDma Offset: 0xC) UDPHS DMA Channel Status Register */ +} UdphsDma; +/** \brief UdphsEpt hardware registers */ +typedef struct { + RwReg UDPHS_EPTCFG; /**< \brief (UdphsEpt Offset: 0x0) UDPHS Endpoint Configuration Register */ + RwReg UDPHS_EPTCTLENB; /**< \brief (UdphsEpt Offset: 0x4) UDPHS Endpoint Control Enable Register */ + RwReg UDPHS_EPTCTLDIS; /**< \brief (UdphsEpt Offset: 0x8) UDPHS Endpoint Control Disable Register */ + RwReg UDPHS_EPTCTL; /**< \brief (UdphsEpt Offset: 0xC) UDPHS Endpoint Control Register */ + RoReg Reserved1[1]; + RwReg UDPHS_EPTSETSTA; /**< \brief (UdphsEpt Offset: 0x14) UDPHS Endpoint Set Status Register */ + RwReg UDPHS_EPTCLRSTA; /**< \brief (UdphsEpt Offset: 0x18) UDPHS Endpoint Clear Status Register */ + RwReg UDPHS_EPTSTA; /**< \brief (UdphsEpt Offset: 0x1C) UDPHS Endpoint Status Register */ +} UdphsEpt; +/** \brief Udphs hardware registers */ +#define UDPHSEPT_NUMBER 7 +#define UDPHSDMA_NUMBER 6 +typedef struct { + RwReg UDPHS_CTRL; /**< \brief (Udphs Offset: 0x00) UDPHS Control Register */ + RoReg UDPHS_FNUM; /**< \brief (Udphs Offset: 0x04) UDPHS Frame Number Register */ + RoReg Reserved1[2]; + RwReg UDPHS_IEN; /**< \brief (Udphs Offset: 0x10) UDPHS Interrupt Enable Register */ + RoReg UDPHS_INTSTA; /**< \brief (Udphs Offset: 0x14) UDPHS Interrupt Status Register */ + WoReg UDPHS_CLRINT; /**< \brief (Udphs Offset: 0x18) UDPHS Clear Interrupt Register */ + WoReg UDPHS_EPTRST; /**< \brief (Udphs Offset: 0x1C) UDPHS Endpoints Reset Register */ + RoReg Reserved2[48]; + RwReg UDPHS_TST; /**< \brief (Udphs Offset: 0xE0) UDPHS Test Register */ + RoReg Reserved3[3]; + RoReg UDPHS_IPNAME1; /**< \brief (Udphs Offset: 0xF0) UDPHS Name1 Register */ + RoReg UDPHS_IPNAME2; /**< \brief (Udphs Offset: 0xF4) UDPHS Name2 Register */ + RoReg UDPHS_IPFEATURES; /**< \brief (Udphs Offset: 0xF8) UDPHS Features Register */ + RoReg Reserved4[1]; + UdphsEpt UDPHS_EPT[UDPHSEPT_NUMBER]; /**< \brief (Udphs Offset: 0x100) endpoint = 0 .. 6 */ + RoReg Reserved5[72]; + UdphsDma UDPHS_DMA[UDPHSDMA_NUMBER]; /**< \brief (Udphs Offset: 0x300) channel = 0 .. 5 */ +} Udphs; +#endif /* __ASSEMBLY__ */ +/* -------- UDPHS_CTRL : (UDPHS Offset: 0x00) UDPHS Control Register -------- */ +#define UDPHS_CTRL_DEV_ADDR_Pos 0 +#define UDPHS_CTRL_DEV_ADDR_Msk (0x7fu << UDPHS_CTRL_DEV_ADDR_Pos) /**< \brief (UDPHS_CTRL) UDPHS Address */ +#define UDPHS_CTRL_DEV_ADDR(value) ((UDPHS_CTRL_DEV_ADDR_Msk & ((value) << UDPHS_CTRL_DEV_ADDR_Pos))) +#define UDPHS_CTRL_FADDR_EN (0x1u << 7) /**< \brief (UDPHS_CTRL) Function Address Enable */ +#define UDPHS_CTRL_EN_UDPHS (0x1u << 8) /**< \brief (UDPHS_CTRL) UDPHS Enable */ +#define UDPHS_CTRL_DETACH (0x1u << 9) /**< \brief (UDPHS_CTRL) Detach Command */ +#define UDPHS_CTRL_REWAKEUP (0x1u << 10) /**< \brief (UDPHS_CTRL) Send Remote Wake Up */ +#define UDPHS_CTRL_PULLD_DIS (0x1u << 11) /**< \brief (UDPHS_CTRL) Pull-Down Disable */ +/* -------- UDPHS_FNUM : (UDPHS Offset: 0x04) UDPHS Frame Number Register -------- */ +#define UDPHS_FNUM_MICRO_FRAME_NUM_Pos 0 +#define UDPHS_FNUM_MICRO_FRAME_NUM_Msk (0x7u << UDPHS_FNUM_MICRO_FRAME_NUM_Pos) /**< \brief (UDPHS_FNUM) Microframe Number */ +#define UDPHS_FNUM_FRAME_NUMBER_Pos 3 +#define UDPHS_FNUM_FRAME_NUMBER_Msk (0x7ffu << UDPHS_FNUM_FRAME_NUMBER_Pos) /**< \brief (UDPHS_FNUM) Frame Number as defined in the Packet Field Formats */ +#define UDPHS_FNUM_FNUM_ERR (0x1u << 31) /**< \brief (UDPHS_FNUM) Frame Number CRC Error */ +/* -------- UDPHS_IEN : (UDPHS Offset: 0x10) UDPHS Interrupt Enable Register -------- */ +#define UDPHS_IEN_DET_SUSPD (0x1u << 1) /**< \brief (UDPHS_IEN) Suspend Interrupt Enable */ +#define UDPHS_IEN_MICRO_SOF (0x1u << 2) /**< \brief (UDPHS_IEN) Micro-SOF Interrupt Enable */ +#define UDPHS_IEN_INT_SOF (0x1u << 3) /**< \brief (UDPHS_IEN) SOF Interrupt Enable */ +#define UDPHS_IEN_ENDRESET (0x1u << 4) /**< \brief (UDPHS_IEN) End Of Reset Interrupt Enable */ +#define UDPHS_IEN_WAKE_UP (0x1u << 5) /**< \brief (UDPHS_IEN) Wake Up CPU Interrupt Enable */ +#define UDPHS_IEN_ENDOFRSM (0x1u << 6) /**< \brief (UDPHS_IEN) End Of Resume Interrupt Enable */ +#define UDPHS_IEN_UPSTR_RES (0x1u << 7) /**< \brief (UDPHS_IEN) Upstream Resume Interrupt Enable */ +#define UDPHS_IEN_EPT_0 (0x1u << 8) /**< \brief (UDPHS_IEN) Endpoint 0 Interrupt Enable */ +#define UDPHS_IEN_EPT_1 (0x1u << 9) /**< \brief (UDPHS_IEN) Endpoint 1 Interrupt Enable */ +#define UDPHS_IEN_EPT_2 (0x1u << 10) /**< \brief (UDPHS_IEN) Endpoint 2 Interrupt Enable */ +#define UDPHS_IEN_EPT_3 (0x1u << 11) /**< \brief (UDPHS_IEN) Endpoint 3 Interrupt Enable */ +#define UDPHS_IEN_EPT_4 (0x1u << 12) /**< \brief (UDPHS_IEN) Endpoint 4 Interrupt Enable */ +#define UDPHS_IEN_EPT_5 (0x1u << 13) /**< \brief (UDPHS_IEN) Endpoint 5 Interrupt Enable */ +#define UDPHS_IEN_EPT_6 (0x1u << 14) /**< \brief (UDPHS_IEN) Endpoint 6 Interrupt Enable */ +#define UDPHS_IEN_DMA_1 (0x1u << 25) /**< \brief (UDPHS_IEN) DMA Channel 1 Interrupt Enable */ +#define UDPHS_IEN_DMA_2 (0x1u << 26) /**< \brief (UDPHS_IEN) DMA Channel 2 Interrupt Enable */ +#define UDPHS_IEN_DMA_3 (0x1u << 27) /**< \brief (UDPHS_IEN) DMA Channel 3 Interrupt Enable */ +#define UDPHS_IEN_DMA_4 (0x1u << 28) /**< \brief (UDPHS_IEN) DMA Channel 4 Interrupt Enable */ +#define UDPHS_IEN_DMA_5 (0x1u << 29) /**< \brief (UDPHS_IEN) DMA Channel 5 Interrupt Enable */ +#define UDPHS_IEN_DMA_6 (0x1u << 30) /**< \brief (UDPHS_IEN) DMA Channel 6 Interrupt Enable */ +/* -------- UDPHS_INTSTA : (UDPHS Offset: 0x14) UDPHS Interrupt Status Register -------- */ +#define UDPHS_INTSTA_SPEED (0x1u << 0) /**< \brief (UDPHS_INTSTA) Speed Status */ +#define UDPHS_INTSTA_DET_SUSPD (0x1u << 1) /**< \brief (UDPHS_INTSTA) Suspend Interrupt */ +#define UDPHS_INTSTA_MICRO_SOF (0x1u << 2) /**< \brief (UDPHS_INTSTA) Micro Start Of Frame Interrupt */ +#define UDPHS_INTSTA_INT_SOF (0x1u << 3) /**< \brief (UDPHS_INTSTA) Start Of Frame Interrupt */ +#define UDPHS_INTSTA_ENDRESET (0x1u << 4) /**< \brief (UDPHS_INTSTA) End Of Reset Interrupt */ +#define UDPHS_INTSTA_WAKE_UP (0x1u << 5) /**< \brief (UDPHS_INTSTA) Wake Up CPU Interrupt */ +#define UDPHS_INTSTA_ENDOFRSM (0x1u << 6) /**< \brief (UDPHS_INTSTA) End Of Resume Interrupt */ +#define UDPHS_INTSTA_UPSTR_RES (0x1u << 7) /**< \brief (UDPHS_INTSTA) Upstream Resume Interrupt */ +#define UDPHS_INTSTA_EPT_0 (0x1u << 8) /**< \brief (UDPHS_INTSTA) Endpoint 0 Interrupt */ +#define UDPHS_INTSTA_EPT_1 (0x1u << 9) /**< \brief (UDPHS_INTSTA) Endpoint 1 Interrupt */ +#define UDPHS_INTSTA_EPT_2 (0x1u << 10) /**< \brief (UDPHS_INTSTA) Endpoint 2 Interrupt */ +#define UDPHS_INTSTA_EPT_3 (0x1u << 11) /**< \brief (UDPHS_INTSTA) Endpoint 3 Interrupt */ +#define UDPHS_INTSTA_EPT_4 (0x1u << 12) /**< \brief (UDPHS_INTSTA) Endpoint 4 Interrupt */ +#define UDPHS_INTSTA_EPT_5 (0x1u << 13) /**< \brief (UDPHS_INTSTA) Endpoint 5 Interrupt */ +#define UDPHS_INTSTA_EPT_6 (0x1u << 14) /**< \brief (UDPHS_INTSTA) Endpoint 6 Interrupt */ +#define UDPHS_INTSTA_DMA_1 (0x1u << 25) /**< \brief (UDPHS_INTSTA) DMA Channel 1 Interrupt */ +#define UDPHS_INTSTA_DMA_2 (0x1u << 26) /**< \brief (UDPHS_INTSTA) DMA Channel 2 Interrupt */ +#define UDPHS_INTSTA_DMA_3 (0x1u << 27) /**< \brief (UDPHS_INTSTA) DMA Channel 3 Interrupt */ +#define UDPHS_INTSTA_DMA_4 (0x1u << 28) /**< \brief (UDPHS_INTSTA) DMA Channel 4 Interrupt */ +#define UDPHS_INTSTA_DMA_5 (0x1u << 29) /**< \brief (UDPHS_INTSTA) DMA Channel 5 Interrupt */ +#define UDPHS_INTSTA_DMA_6 (0x1u << 30) /**< \brief (UDPHS_INTSTA) DMA Channel 6 Interrupt */ +/* -------- UDPHS_CLRINT : (UDPHS Offset: 0x18) UDPHS Clear Interrupt Register -------- */ +#define UDPHS_CLRINT_DET_SUSPD (0x1u << 1) /**< \brief (UDPHS_CLRINT) Suspend Interrupt Clear */ +#define UDPHS_CLRINT_MICRO_SOF (0x1u << 2) /**< \brief (UDPHS_CLRINT) Micro Start Of Frame Interrupt Clear */ +#define UDPHS_CLRINT_INT_SOF (0x1u << 3) /**< \brief (UDPHS_CLRINT) Start Of Frame Interrupt Clear */ +#define UDPHS_CLRINT_ENDRESET (0x1u << 4) /**< \brief (UDPHS_CLRINT) End Of Reset Interrupt Clear */ +#define UDPHS_CLRINT_WAKE_UP (0x1u << 5) /**< \brief (UDPHS_CLRINT) Wake Up CPU Interrupt Clear */ +#define UDPHS_CLRINT_ENDOFRSM (0x1u << 6) /**< \brief (UDPHS_CLRINT) End Of Resume Interrupt Clear */ +#define UDPHS_CLRINT_UPSTR_RES (0x1u << 7) /**< \brief (UDPHS_CLRINT) Upstream Resume Interrupt Clear */ +/* -------- UDPHS_EPTRST : (UDPHS Offset: 0x1C) UDPHS Endpoints Reset Register -------- */ +#define UDPHS_EPTRST_EPT_0 (0x1u << 0) /**< \brief (UDPHS_EPTRST) Endpoint 0 Reset */ +#define UDPHS_EPTRST_EPT_1 (0x1u << 1) /**< \brief (UDPHS_EPTRST) Endpoint 1 Reset */ +#define UDPHS_EPTRST_EPT_2 (0x1u << 2) /**< \brief (UDPHS_EPTRST) Endpoint 2 Reset */ +#define UDPHS_EPTRST_EPT_3 (0x1u << 3) /**< \brief (UDPHS_EPTRST) Endpoint 3 Reset */ +#define UDPHS_EPTRST_EPT_4 (0x1u << 4) /**< \brief (UDPHS_EPTRST) Endpoint 4 Reset */ +#define UDPHS_EPTRST_EPT_5 (0x1u << 5) /**< \brief (UDPHS_EPTRST) Endpoint 5 Reset */ +#define UDPHS_EPTRST_EPT_6 (0x1u << 6) /**< \brief (UDPHS_EPTRST) Endpoint 6 Reset */ +/* -------- UDPHS_TST : (UDPHS Offset: 0xE0) UDPHS Test Register -------- */ +#define UDPHS_TST_SPEED_CFG_Pos 0 +#define UDPHS_TST_SPEED_CFG_Msk (0x3u << UDPHS_TST_SPEED_CFG_Pos) /**< \brief (UDPHS_TST) Speed Configuration */ +#define UDPHS_TST_SPEED_CFG_NORMAL (0x0u << 0) /**< \brief (UDPHS_TST) Normal Mode: The macro is in Full Speed mode, ready to make a High Speed identification, if the host supports it and then to automatically switch to High Speed mode */ +#define UDPHS_TST_SPEED_CFG_HIGH_SPEED (0x2u << 0) /**< \brief (UDPHS_TST) Force High Speed: Set this value to force the hardware to work in High Speed mode. Only for debug or test purpose. */ +#define UDPHS_TST_SPEED_CFG_FULL_SPEED (0x3u << 0) /**< \brief (UDPHS_TST) Force Full Speed: Set this value to force the hardware to work only in Full Speed mode. In this configuration, the macro will not respond to a High Speed reset handshake. */ +#define UDPHS_TST_TST_J (0x1u << 2) /**< \brief (UDPHS_TST) Test J Mode */ +#define UDPHS_TST_TST_K (0x1u << 3) /**< \brief (UDPHS_TST) Test K Mode */ +#define UDPHS_TST_TST_PKT (0x1u << 4) /**< \brief (UDPHS_TST) Test Packet Mode */ +#define UDPHS_TST_OPMODE2 (0x1u << 5) /**< \brief (UDPHS_TST) OpMode2 */ +/* -------- UDPHS_IPNAME1 : (UDPHS Offset: 0xF0) UDPHS Name1 Register -------- */ +#define UDPHS_IPNAME1_IP_NAME1_Pos 0 +#define UDPHS_IPNAME1_IP_NAME1_Msk (0xffffffffu << UDPHS_IPNAME1_IP_NAME1_Pos) /**< \brief (UDPHS_IPNAME1) */ +/* -------- UDPHS_IPNAME2 : (UDPHS Offset: 0xF4) UDPHS Name2 Register -------- */ +#define UDPHS_IPNAME2_IP_NAME2_Pos 0 +#define UDPHS_IPNAME2_IP_NAME2_Msk (0xffffffffu << UDPHS_IPNAME2_IP_NAME2_Pos) /**< \brief (UDPHS_IPNAME2) */ +/* -------- UDPHS_IPFEATURES : (UDPHS Offset: 0xF8) UDPHS Features Register -------- */ +#define UDPHS_IPFEATURES_EPT_NBR_MAX_Pos 0 +#define UDPHS_IPFEATURES_EPT_NBR_MAX_Msk (0xfu << UDPHS_IPFEATURES_EPT_NBR_MAX_Pos) /**< \brief (UDPHS_IPFEATURES) Max Number of Endpoints */ +#define UDPHS_IPFEATURES_DMA_CHANNEL_NBR_Pos 4 +#define UDPHS_IPFEATURES_DMA_CHANNEL_NBR_Msk (0x7u << UDPHS_IPFEATURES_DMA_CHANNEL_NBR_Pos) /**< \brief (UDPHS_IPFEATURES) Number of DMA Channels */ +#define UDPHS_IPFEATURES_DMA_B_SIZ (0x1u << 7) /**< \brief (UDPHS_IPFEATURES) DMA Buffer Size */ +#define UDPHS_IPFEATURES_DMA_FIFO_WORD_DEPTH_Pos 8 +#define UDPHS_IPFEATURES_DMA_FIFO_WORD_DEPTH_Msk (0xfu << UDPHS_IPFEATURES_DMA_FIFO_WORD_DEPTH_Pos) /**< \brief (UDPHS_IPFEATURES) DMA FIFO Depth in Words */ +#define UDPHS_IPFEATURES_FIFO_MAX_SIZE_Pos 12 +#define UDPHS_IPFEATURES_FIFO_MAX_SIZE_Msk (0x7u << UDPHS_IPFEATURES_FIFO_MAX_SIZE_Pos) /**< \brief (UDPHS_IPFEATURES) DPRAM Size */ +#define UDPHS_IPFEATURES_BW_DPRAM (0x1u << 15) /**< \brief (UDPHS_IPFEATURES) DPRAM Byte Write Capability */ +#define UDPHS_IPFEATURES_DATAB16_8 (0x1u << 16) /**< \brief (UDPHS_IPFEATURES) UTMI DataBus16_8 */ +#define UDPHS_IPFEATURES_ISO_EPT_1 (0x1u << 17) /**< \brief (UDPHS_IPFEATURES) Endpointx High Bandwidth Isochronous Capability */ +#define UDPHS_IPFEATURES_ISO_EPT_2 (0x1u << 18) /**< \brief (UDPHS_IPFEATURES) Endpointx High Bandwidth Isochronous Capability */ +#define UDPHS_IPFEATURES_ISO_EPT_3 (0x1u << 19) /**< \brief (UDPHS_IPFEATURES) Endpointx High Bandwidth Isochronous Capability */ +#define UDPHS_IPFEATURES_ISO_EPT_4 (0x1u << 20) /**< \brief (UDPHS_IPFEATURES) Endpointx High Bandwidth Isochronous Capability */ +#define UDPHS_IPFEATURES_ISO_EPT_5 (0x1u << 21) /**< \brief (UDPHS_IPFEATURES) Endpointx High Bandwidth Isochronous Capability */ +#define UDPHS_IPFEATURES_ISO_EPT_6 (0x1u << 22) /**< \brief (UDPHS_IPFEATURES) Endpointx High Bandwidth Isochronous Capability */ +#define UDPHS_IPFEATURES_ISO_EPT_7 (0x1u << 23) /**< \brief (UDPHS_IPFEATURES) Endpointx High Bandwidth Isochronous Capability */ +#define UDPHS_IPFEATURES_ISO_EPT_8 (0x1u << 24) /**< \brief (UDPHS_IPFEATURES) Endpointx High Bandwidth Isochronous Capability */ +#define UDPHS_IPFEATURES_ISO_EPT_9 (0x1u << 25) /**< \brief (UDPHS_IPFEATURES) Endpointx High Bandwidth Isochronous Capability */ +#define UDPHS_IPFEATURES_ISO_EPT_10 (0x1u << 26) /**< \brief (UDPHS_IPFEATURES) Endpointx High Bandwidth Isochronous Capability */ +#define UDPHS_IPFEATURES_ISO_EPT_11 (0x1u << 27) /**< \brief (UDPHS_IPFEATURES) Endpointx High Bandwidth Isochronous Capability */ +#define UDPHS_IPFEATURES_ISO_EPT_12 (0x1u << 28) /**< \brief (UDPHS_IPFEATURES) Endpointx High Bandwidth Isochronous Capability */ +#define UDPHS_IPFEATURES_ISO_EPT_13 (0x1u << 29) /**< \brief (UDPHS_IPFEATURES) Endpointx High Bandwidth Isochronous Capability */ +#define UDPHS_IPFEATURES_ISO_EPT_14 (0x1u << 30) /**< \brief (UDPHS_IPFEATURES) Endpointx High Bandwidth Isochronous Capability */ +#define UDPHS_IPFEATURES_ISO_EPT_15 (0x1u << 31) /**< \brief (UDPHS_IPFEATURES) Endpointx High Bandwidth Isochronous Capability */ +/* -------- UDPHS_EPTCFG : (UDPHS Offset: N/A) UDPHS Endpoint Configuration Register -------- */ +#define UDPHS_EPTCFG_EPT_SIZE_Pos 0 +#define UDPHS_EPTCFG_EPT_SIZE_Msk (0x7u << UDPHS_EPTCFG_EPT_SIZE_Pos) /**< \brief (UDPHS_EPTCFG) Endpoint Size */ +#define UDPHS_EPTCFG_EPT_SIZE_8 (0x0u << 0) /**< \brief (UDPHS_EPTCFG) 8 bytes */ +#define UDPHS_EPTCFG_EPT_SIZE_16 (0x1u << 0) /**< \brief (UDPHS_EPTCFG) 16 bytes */ +#define UDPHS_EPTCFG_EPT_SIZE_32 (0x2u << 0) /**< \brief (UDPHS_EPTCFG) 32 bytes */ +#define UDPHS_EPTCFG_EPT_SIZE_64 (0x3u << 0) /**< \brief (UDPHS_EPTCFG) 64 bytes */ +#define UDPHS_EPTCFG_EPT_SIZE_128 (0x4u << 0) /**< \brief (UDPHS_EPTCFG) 128 bytes */ +#define UDPHS_EPTCFG_EPT_SIZE_256 (0x5u << 0) /**< \brief (UDPHS_EPTCFG) 256 bytes */ +#define UDPHS_EPTCFG_EPT_SIZE_512 (0x6u << 0) /**< \brief (UDPHS_EPTCFG) 512 bytes */ +#define UDPHS_EPTCFG_EPT_SIZE_1024 (0x7u << 0) /**< \brief (UDPHS_EPTCFG) 1024 bytes */ +#define UDPHS_EPTCFG_EPT_DIR (0x1u << 3) /**< \brief (UDPHS_EPTCFG) Endpoint Direction */ +#define UDPHS_EPTCFG_EPT_TYPE_Pos 4 +#define UDPHS_EPTCFG_EPT_TYPE_Msk (0x3u << UDPHS_EPTCFG_EPT_TYPE_Pos) /**< \brief (UDPHS_EPTCFG) Endpoint Type */ +#define UDPHS_EPTCFG_EPT_TYPE_CTRL8 (0x0u << 4) /**< \brief (UDPHS_EPTCFG) Control endpoint */ +#define UDPHS_EPTCFG_EPT_TYPE_ISO (0x1u << 4) /**< \brief (UDPHS_EPTCFG) Isochronous endpoint */ +#define UDPHS_EPTCFG_EPT_TYPE_BULK (0x2u << 4) /**< \brief (UDPHS_EPTCFG) Bulk endpoint */ +#define UDPHS_EPTCFG_EPT_TYPE_INT (0x3u << 4) /**< \brief (UDPHS_EPTCFG) Interrupt endpoint */ +#define UDPHS_EPTCFG_BK_NUMBER_Pos 6 +#define UDPHS_EPTCFG_BK_NUMBER_Msk (0x3u << UDPHS_EPTCFG_BK_NUMBER_Pos) /**< \brief (UDPHS_EPTCFG) Number of Banks */ +#define UDPHS_EPTCFG_BK_NUMBER_0 (0x0u << 6) /**< \brief (UDPHS_EPTCFG) Zero bank, the endpoint is not mapped in memory */ +#define UDPHS_EPTCFG_BK_NUMBER_1 (0x1u << 6) /**< \brief (UDPHS_EPTCFG) One bank (bank 0) */ +#define UDPHS_EPTCFG_BK_NUMBER_2 (0x2u << 6) /**< \brief (UDPHS_EPTCFG) Double bank (Ping-Pong: bank0/bank1) */ +#define UDPHS_EPTCFG_BK_NUMBER_3 (0x3u << 6) /**< \brief (UDPHS_EPTCFG) Triple bank (bank0/bank1/bank2) */ +#define UDPHS_EPTCFG_NB_TRANS_Pos 8 +#define UDPHS_EPTCFG_NB_TRANS_Msk (0x3u << UDPHS_EPTCFG_NB_TRANS_Pos) /**< \brief (UDPHS_EPTCFG) Number Of Transaction per Microframe */ +#define UDPHS_EPTCFG_NB_TRANS(value) ((UDPHS_EPTCFG_NB_TRANS_Msk & ((value) << UDPHS_EPTCFG_NB_TRANS_Pos))) +#define UDPHS_EPTCFG_EPT_MAPD (0x1u << 31) /**< \brief (UDPHS_EPTCFG) Endpoint Mapped */ +/* -------- UDPHS_EPTCTLENB : (UDPHS Offset: N/A) UDPHS Endpoint Control Enable Register -------- */ +#define UDPHS_EPTCTLENB_EPT_ENABL (0x1u << 0) /**< \brief (UDPHS_EPTCTLENB) Endpoint Enable */ +#define UDPHS_EPTCTLENB_AUTO_VALID (0x1u << 1) /**< \brief (UDPHS_EPTCTLENB) Packet Auto-Valid Enable */ +#define UDPHS_EPTCTLENB_INTDIS_DMA (0x1u << 3) /**< \brief (UDPHS_EPTCTLENB) Interrupts Disable DMA */ +#define UDPHS_EPTCTLENB_NYET_DIS (0x1u << 4) /**< \brief (UDPHS_EPTCTLENB) NYET Disable (Only for High Speed Bulk OUT endpoints) */ +#define UDPHS_EPTCTLENB_DATAX_RX (0x1u << 6) /**< \brief (UDPHS_EPTCTLENB) DATAx Interrupt Enable (Only for high bandwidth Isochronous OUT endpoints) */ +#define UDPHS_EPTCTLENB_MDATA_RX (0x1u << 7) /**< \brief (UDPHS_EPTCTLENB) MDATA Interrupt Enable (Only for high bandwidth Isochronous OUT endpoints) */ +#define UDPHS_EPTCTLENB_ERR_OVFLW (0x1u << 8) /**< \brief (UDPHS_EPTCTLENB) Overflow Error Interrupt Enable */ +#define UDPHS_EPTCTLENB_RX_BK_RDY (0x1u << 9) /**< \brief (UDPHS_EPTCTLENB) Received OUT Data Interrupt Enable */ +#define UDPHS_EPTCTLENB_TX_COMPLT (0x1u << 10) /**< \brief (UDPHS_EPTCTLENB) Transmitted IN Data Complete Interrupt Enable */ +#define UDPHS_EPTCTLENB_TX_PK_RDY (0x1u << 11) /**< \brief (UDPHS_EPTCTLENB) TX Packet Ready/Transaction Error Interrupt Enable */ +#define UDPHS_EPTCTLENB_ERR_TRANS (0x1u << 11) /**< \brief (UDPHS_EPTCTLENB) TX Packet Ready/Transaction Error Interrupt Enable */ +#define UDPHS_EPTCTLENB_RX_SETUP (0x1u << 12) /**< \brief (UDPHS_EPTCTLENB) Received SETUP/Error Flow Interrupt Enable */ +#define UDPHS_EPTCTLENB_ERR_FL_ISO (0x1u << 12) /**< \brief (UDPHS_EPTCTLENB) Received SETUP/Error Flow Interrupt Enable */ +#define UDPHS_EPTCTLENB_STALL_SNT (0x1u << 13) /**< \brief (UDPHS_EPTCTLENB) Stall Sent /ISO CRC Error/Number of Transaction Error Interrupt Enable */ +#define UDPHS_EPTCTLENB_ERR_CRISO (0x1u << 13) /**< \brief (UDPHS_EPTCTLENB) Stall Sent /ISO CRC Error/Number of Transaction Error Interrupt Enable */ +#define UDPHS_EPTCTLENB_ERR_NBTRA (0x1u << 13) /**< \brief (UDPHS_EPTCTLENB) Stall Sent /ISO CRC Error/Number of Transaction Error Interrupt Enable */ +#define UDPHS_EPTCTLENB_NAK_IN (0x1u << 14) /**< \brief (UDPHS_EPTCTLENB) NAKIN/Bank Flush Error Interrupt Enable */ +#define UDPHS_EPTCTLENB_ERR_FLUSH (0x1u << 14) /**< \brief (UDPHS_EPTCTLENB) NAKIN/Bank Flush Error Interrupt Enable */ +#define UDPHS_EPTCTLENB_NAK_OUT (0x1u << 15) /**< \brief (UDPHS_EPTCTLENB) NAKOUT Interrupt Enable */ +#define UDPHS_EPTCTLENB_BUSY_BANK (0x1u << 18) /**< \brief (UDPHS_EPTCTLENB) Busy Bank Interrupt Enable */ +#define UDPHS_EPTCTLENB_SHRT_PCKT (0x1u << 31) /**< \brief (UDPHS_EPTCTLENB) Short Packet Send/Short Packet Interrupt Enable */ +/* -------- UDPHS_EPTCTLDIS : (UDPHS Offset: N/A) UDPHS Endpoint Control Disable Register -------- */ +#define UDPHS_EPTCTLDIS_EPT_DISABL (0x1u << 0) /**< \brief (UDPHS_EPTCTLDIS) Endpoint Disable */ +#define UDPHS_EPTCTLDIS_AUTO_VALID (0x1u << 1) /**< \brief (UDPHS_EPTCTLDIS) Packet Auto-Valid Disable */ +#define UDPHS_EPTCTLDIS_INTDIS_DMA (0x1u << 3) /**< \brief (UDPHS_EPTCTLDIS) Interrupts Disable DMA */ +#define UDPHS_EPTCTLDIS_NYET_DIS (0x1u << 4) /**< \brief (UDPHS_EPTCTLDIS) NYET Enable (Only for High Speed Bulk OUT endpoints) */ +#define UDPHS_EPTCTLDIS_DATAX_RX (0x1u << 6) /**< \brief (UDPHS_EPTCTLDIS) DATAx Interrupt Disable (Only for High Bandwidth Isochronous OUT endpoints) */ +#define UDPHS_EPTCTLDIS_MDATA_RX (0x1u << 7) /**< \brief (UDPHS_EPTCTLDIS) MDATA Interrupt Disable (Only for High Bandwidth Isochronous OUT endpoints) */ +#define UDPHS_EPTCTLDIS_ERR_OVFLW (0x1u << 8) /**< \brief (UDPHS_EPTCTLDIS) Overflow Error Interrupt Disable */ +#define UDPHS_EPTCTLDIS_RX_BK_RDY (0x1u << 9) /**< \brief (UDPHS_EPTCTLDIS) Received OUT Data Interrupt Disable */ +#define UDPHS_EPTCTLDIS_TX_COMPLT (0x1u << 10) /**< \brief (UDPHS_EPTCTLDIS) Transmitted IN Data Complete Interrupt Disable */ +#define UDPHS_EPTCTLDIS_TX_PK_RDY (0x1u << 11) /**< \brief (UDPHS_EPTCTLDIS) TX Packet Ready/Transaction Error Interrupt Disable */ +#define UDPHS_EPTCTLDIS_ERR_TRANS (0x1u << 11) /**< \brief (UDPHS_EPTCTLDIS) TX Packet Ready/Transaction Error Interrupt Disable */ +#define UDPHS_EPTCTLDIS_RX_SETUP (0x1u << 12) /**< \brief (UDPHS_EPTCTLDIS) Received SETUP/Error Flow Interrupt Disable */ +#define UDPHS_EPTCTLDIS_ERR_FL_ISO (0x1u << 12) /**< \brief (UDPHS_EPTCTLDIS) Received SETUP/Error Flow Interrupt Disable */ +#define UDPHS_EPTCTLDIS_STALL_SNT (0x1u << 13) /**< \brief (UDPHS_EPTCTLDIS) Stall Sent/ISO CRC Error/Number of Transaction Error Interrupt Disable */ +#define UDPHS_EPTCTLDIS_ERR_CRISO (0x1u << 13) /**< \brief (UDPHS_EPTCTLDIS) Stall Sent/ISO CRC Error/Number of Transaction Error Interrupt Disable */ +#define UDPHS_EPTCTLDIS_ERR_NBTRA (0x1u << 13) /**< \brief (UDPHS_EPTCTLDIS) Stall Sent/ISO CRC Error/Number of Transaction Error Interrupt Disable */ +#define UDPHS_EPTCTLDIS_NAK_IN (0x1u << 14) /**< \brief (UDPHS_EPTCTLDIS) NAKIN/bank flush error Interrupt Disable */ +#define UDPHS_EPTCTLDIS_ERR_FLUSH (0x1u << 14) /**< \brief (UDPHS_EPTCTLDIS) NAKIN/bank flush error Interrupt Disable */ +#define UDPHS_EPTCTLDIS_NAK_OUT (0x1u << 15) /**< \brief (UDPHS_EPTCTLDIS) NAKOUT Interrupt Disable */ +#define UDPHS_EPTCTLDIS_BUSY_BANK (0x1u << 18) /**< \brief (UDPHS_EPTCTLDIS) Busy Bank Interrupt Disable */ +#define UDPHS_EPTCTLDIS_SHRT_PCKT (0x1u << 31) /**< \brief (UDPHS_EPTCTLDIS) Short Packet Interrupt Disable */ +/* -------- UDPHS_EPTCTL : (UDPHS Offset: N/A) UDPHS Endpoint Control Register -------- */ +#define UDPHS_EPTCTL_EPT_ENABL (0x1u << 0) /**< \brief (UDPHS_EPTCTL) Endpoint Enable */ +#define UDPHS_EPTCTL_AUTO_VALID (0x1u << 1) /**< \brief (UDPHS_EPTCTL) Packet Auto-Valid Enabled (Not for CONTROL Endpoints) */ +#define UDPHS_EPTCTL_INTDIS_DMA (0x1u << 3) /**< \brief (UDPHS_EPTCTL) Interrupt Disables DMA */ +#define UDPHS_EPTCTL_NYET_DIS (0x1u << 4) /**< \brief (UDPHS_EPTCTL) NYET Disable (Only for High Speed Bulk OUT endpoints) */ +#define UDPHS_EPTCTL_DATAX_RX (0x1u << 6) /**< \brief (UDPHS_EPTCTL) DATAx Interrupt Enabled (Only for High Bandwidth Isochronous OUT endpoints) */ +#define UDPHS_EPTCTL_MDATA_RX (0x1u << 7) /**< \brief (UDPHS_EPTCTL) MDATA Interrupt Enabled (Only for High Bandwidth Isochronous OUT endpoints) */ +#define UDPHS_EPTCTL_ERR_OVFLW (0x1u << 8) /**< \brief (UDPHS_EPTCTL) Overflow Error Interrupt Enabled */ +#define UDPHS_EPTCTL_RX_BK_RDY (0x1u << 9) /**< \brief (UDPHS_EPTCTL) Received OUT Data Interrupt Enabled */ +#define UDPHS_EPTCTL_TX_COMPLT (0x1u << 10) /**< \brief (UDPHS_EPTCTL) Transmitted IN Data Complete Interrupt Enabled */ +#define UDPHS_EPTCTL_TX_PK_RDY (0x1u << 11) /**< \brief (UDPHS_EPTCTL) TX Packet Ready/Transaction Error Interrupt Enabled */ +#define UDPHS_EPTCTL_ERR_TRANS (0x1u << 11) /**< \brief (UDPHS_EPTCTL) TX Packet Ready/Transaction Error Interrupt Enabled */ +#define UDPHS_EPTCTL_RX_SETUP (0x1u << 12) /**< \brief (UDPHS_EPTCTL) Received SETUP/Error Flow Interrupt Enabled */ +#define UDPHS_EPTCTL_ERR_FL_ISO (0x1u << 12) /**< \brief (UDPHS_EPTCTL) Received SETUP/Error Flow Interrupt Enabled */ +#define UDPHS_EPTCTL_STALL_SNT (0x1u << 13) /**< \brief (UDPHS_EPTCTL) Stall Sent/ISO CRC Error/Number of Transaction Error Interrupt Enabled */ +#define UDPHS_EPTCTL_ERR_CRISO (0x1u << 13) /**< \brief (UDPHS_EPTCTL) Stall Sent/ISO CRC Error/Number of Transaction Error Interrupt Enabled */ +#define UDPHS_EPTCTL_ERR_NBTRA (0x1u << 13) /**< \brief (UDPHS_EPTCTL) Stall Sent/ISO CRC Error/Number of Transaction Error Interrupt Enabled */ +#define UDPHS_EPTCTL_NAK_IN (0x1u << 14) /**< \brief (UDPHS_EPTCTL) NAKIN/Bank Flush Error Interrupt Enabled */ +#define UDPHS_EPTCTL_ERR_FLUSH (0x1u << 14) /**< \brief (UDPHS_EPTCTL) NAKIN/Bank Flush Error Interrupt Enabled */ +#define UDPHS_EPTCTL_NAK_OUT (0x1u << 15) /**< \brief (UDPHS_EPTCTL) NAKOUT Interrupt Enabled */ +#define UDPHS_EPTCTL_BUSY_BANK (0x1u << 18) /**< \brief (UDPHS_EPTCTL) Busy Bank Interrupt Enabled */ +#define UDPHS_EPTCTL_SHRT_PCKT (0x1u << 31) /**< \brief (UDPHS_EPTCTL) Short Packet Interrupt Enabled */ +/* -------- UDPHS_EPTSETSTA : (UDPHS Offset: N/A) UDPHS Endpoint Set Status Register -------- */ +#define UDPHS_EPTSETSTA_FRCESTALL (0x1u << 5) /**< \brief (UDPHS_EPTSETSTA) Stall Handshake Request Set */ +#define UDPHS_EPTSETSTA_KILL_BANK (0x1u << 9) /**< \brief (UDPHS_EPTSETSTA) KILL Bank Set (for IN Endpoint) */ +#define UDPHS_EPTSETSTA_TX_PK_RDY (0x1u << 11) /**< \brief (UDPHS_EPTSETSTA) TX Packet Ready Set */ +/* -------- UDPHS_EPTCLRSTA : (UDPHS Offset: N/A) UDPHS Endpoint Clear Status Register -------- */ +#define UDPHS_EPTCLRSTA_FRCESTALL (0x1u << 5) /**< \brief (UDPHS_EPTCLRSTA) Stall Handshake Request Clear */ +#define UDPHS_EPTCLRSTA_TOGGLESQ (0x1u << 6) /**< \brief (UDPHS_EPTCLRSTA) Data Toggle Clear */ +#define UDPHS_EPTCLRSTA_RX_BK_RDY (0x1u << 9) /**< \brief (UDPHS_EPTCLRSTA) Received OUT Data Clear */ +#define UDPHS_EPTCLRSTA_TX_COMPLT (0x1u << 10) /**< \brief (UDPHS_EPTCLRSTA) Transmitted IN Data Complete Clear */ +#define UDPHS_EPTCLRSTA_RX_SETUP (0x1u << 12) /**< \brief (UDPHS_EPTCLRSTA) Received SETUP/Error Flow Clear */ +#define UDPHS_EPTCLRSTA_ERR_FL_ISO (0x1u << 12) /**< \brief (UDPHS_EPTCLRSTA) Received SETUP/Error Flow Clear */ +#define UDPHS_EPTCLRSTA_STALL_SNT (0x1u << 13) /**< \brief (UDPHS_EPTCLRSTA) Stall Sent/Number of Transaction Error Clear */ +#define UDPHS_EPTCLRSTA_ERR_NBTRA (0x1u << 13) /**< \brief (UDPHS_EPTCLRSTA) Stall Sent/Number of Transaction Error Clear */ +#define UDPHS_EPTCLRSTA_NAK_IN (0x1u << 14) /**< \brief (UDPHS_EPTCLRSTA) NAKIN/Bank Flush Error Clear */ +#define UDPHS_EPTCLRSTA_ERR_FLUSH (0x1u << 14) /**< \brief (UDPHS_EPTCLRSTA) NAKIN/Bank Flush Error Clear */ +#define UDPHS_EPTCLRSTA_NAK_OUT (0x1u << 15) /**< \brief (UDPHS_EPTCLRSTA) NAKOUT Clear */ +/* -------- UDPHS_EPTSTA : (UDPHS Offset: N/A) UDPHS Endpoint Status Register -------- */ +#define UDPHS_EPTSTA_FRCESTALL (0x1u << 5) /**< \brief (UDPHS_EPTSTA) Stall Handshake Request */ +#define UDPHS_EPTSTA_TOGGLESQ_STA_Pos 6 +#define UDPHS_EPTSTA_TOGGLESQ_STA_Msk (0x3u << UDPHS_EPTSTA_TOGGLESQ_STA_Pos) /**< \brief (UDPHS_EPTSTA) Toggle Sequencing */ +#define UDPHS_EPTSTA_TOGGLESQ_STA_DATA0 (0x0u << 6) /**< \brief (UDPHS_EPTSTA) DATA0 */ +#define UDPHS_EPTSTA_TOGGLESQ_STA_DATA1 (0x1u << 6) /**< \brief (UDPHS_EPTSTA) DATA1 */ +#define UDPHS_EPTSTA_TOGGLESQ_STA_DATA2 (0x2u << 6) /**< \brief (UDPHS_EPTSTA) Data2 (only for High Bandwidth Isochronous Endpoint) */ +#define UDPHS_EPTSTA_TOGGLESQ_STA_MDATA (0x3u << 6) /**< \brief (UDPHS_EPTSTA) MData (only for High Bandwidth Isochronous Endpoint) */ +#define UDPHS_EPTSTA_ERR_OVFLW (0x1u << 8) /**< \brief (UDPHS_EPTSTA) Overflow Error */ +#define UDPHS_EPTSTA_RX_BK_RDY (0x1u << 9) /**< \brief (UDPHS_EPTSTA) Received OUT Data/KILL Bank */ +#define UDPHS_EPTSTA_KILL_BANK (0x1u << 9) /**< \brief (UDPHS_EPTSTA) Received OUT Data/KILL Bank */ +#define UDPHS_EPTSTA_TX_COMPLT (0x1u << 10) /**< \brief (UDPHS_EPTSTA) Transmitted IN Data Complete */ +#define UDPHS_EPTSTA_TX_PK_RDY (0x1u << 11) /**< \brief (UDPHS_EPTSTA) TX Packet Ready/Transaction Error */ +#define UDPHS_EPTSTA_ERR_TRANS (0x1u << 11) /**< \brief (UDPHS_EPTSTA) TX Packet Ready/Transaction Error */ +#define UDPHS_EPTSTA_RX_SETUP (0x1u << 12) /**< \brief (UDPHS_EPTSTA) Received SETUP/Error Flow */ +#define UDPHS_EPTSTA_ERR_FL_ISO (0x1u << 12) /**< \brief (UDPHS_EPTSTA) Received SETUP/Error Flow */ +#define UDPHS_EPTSTA_STALL_SNT (0x1u << 13) /**< \brief (UDPHS_EPTSTA) Stall Sent/CRC ISO Error/Number of Transaction Error */ +#define UDPHS_EPTSTA_ERR_CRISO (0x1u << 13) /**< \brief (UDPHS_EPTSTA) Stall Sent/CRC ISO Error/Number of Transaction Error */ +#define UDPHS_EPTSTA_ERR_NBTRA (0x1u << 13) /**< \brief (UDPHS_EPTSTA) Stall Sent/CRC ISO Error/Number of Transaction Error */ +#define UDPHS_EPTSTA_NAK_IN (0x1u << 14) /**< \brief (UDPHS_EPTSTA) NAK IN/Bank Flush Error */ +#define UDPHS_EPTSTA_ERR_FLUSH (0x1u << 14) /**< \brief (UDPHS_EPTSTA) NAK IN/Bank Flush Error */ +#define UDPHS_EPTSTA_NAK_OUT (0x1u << 15) /**< \brief (UDPHS_EPTSTA) NAK OUT */ +#define UDPHS_EPTSTA_CURRENT_BANK_Pos 16 +#define UDPHS_EPTSTA_CURRENT_BANK_Msk (0x3u << UDPHS_EPTSTA_CURRENT_BANK_Pos) /**< \brief (UDPHS_EPTSTA) Current Bank/Control Direction */ +#define UDPHS_EPTSTA_CONTROL_DIR_Pos 16 +#define UDPHS_EPTSTA_CONTROL_DIR_Msk (0x3u << UDPHS_EPTSTA_CONTROL_DIR_Pos) /**< \brief (UDPHS_EPTSTA) Current Bank/Control Direction */ +#define UDPHS_EPTSTA_BUSY_BANK_STA_Pos 18 +#define UDPHS_EPTSTA_BUSY_BANK_STA_Msk (0x3u << UDPHS_EPTSTA_BUSY_BANK_STA_Pos) /**< \brief (UDPHS_EPTSTA) Busy Bank Number */ +#define UDPHS_EPTSTA_BUSY_BANK_STA_1BUSYBANK (0x0u << 18) /**< \brief (UDPHS_EPTSTA) 1 busy bank */ +#define UDPHS_EPTSTA_BUSY_BANK_STA_2BUSYBANKS (0x1u << 18) /**< \brief (UDPHS_EPTSTA) 2 busy banks */ +#define UDPHS_EPTSTA_BUSY_BANK_STA_3BUSYBANKS (0x2u << 18) /**< \brief (UDPHS_EPTSTA) 3 busy banks */ +#define UDPHS_EPTSTA_BYTE_COUNT_Pos 20 +#define UDPHS_EPTSTA_BYTE_COUNT_Msk (0x7ffu << UDPHS_EPTSTA_BYTE_COUNT_Pos) /**< \brief (UDPHS_EPTSTA) UDPHS Byte Count */ +#define UDPHS_EPTSTA_SHRT_PCKT (0x1u << 31) /**< \brief (UDPHS_EPTSTA) Short Packet */ +/* -------- UDPHS_DMANXTDSC : (UDPHS Offset: N/A) UDPHS DMA Next Descriptor Address Register -------- */ +#define UDPHS_DMANXTDSC_NXT_DSC_ADD_Pos 0 +#define UDPHS_DMANXTDSC_NXT_DSC_ADD_Msk (0xffffffffu << UDPHS_DMANXTDSC_NXT_DSC_ADD_Pos) /**< \brief (UDPHS_DMANXTDSC) */ +#define UDPHS_DMANXTDSC_NXT_DSC_ADD(value) ((UDPHS_DMANXTDSC_NXT_DSC_ADD_Msk & ((value) << UDPHS_DMANXTDSC_NXT_DSC_ADD_Pos))) +/* -------- UDPHS_DMAADDRESS : (UDPHS Offset: N/A) UDPHS DMA Channel Address Register -------- */ +#define UDPHS_DMAADDRESS_BUFF_ADD_Pos 0 +#define UDPHS_DMAADDRESS_BUFF_ADD_Msk (0xffffffffu << UDPHS_DMAADDRESS_BUFF_ADD_Pos) /**< \brief (UDPHS_DMAADDRESS) */ +#define UDPHS_DMAADDRESS_BUFF_ADD(value) ((UDPHS_DMAADDRESS_BUFF_ADD_Msk & ((value) << UDPHS_DMAADDRESS_BUFF_ADD_Pos))) +/* -------- UDPHS_DMACONTROL : (UDPHS Offset: N/A) UDPHS DMA Channel Control Register -------- */ +#define UDPHS_DMACONTROL_CHANN_ENB (0x1u << 0) /**< \brief (UDPHS_DMACONTROL) */ +#define UDPHS_DMACONTROL_LDNXT_DSC (0x1u << 1) /**< \brief (UDPHS_DMACONTROL) Load Next Channel Transfer Descriptor Enable (Command) */ +#define UDPHS_DMACONTROL_END_TR_EN (0x1u << 2) /**< \brief (UDPHS_DMACONTROL) End of Transfer Enable (Control) */ +#define UDPHS_DMACONTROL_END_B_EN (0x1u << 3) /**< \brief (UDPHS_DMACONTROL) End of Buffer Enable (Control) */ +#define UDPHS_DMACONTROL_END_TR_IT (0x1u << 4) /**< \brief (UDPHS_DMACONTROL) End of Transfer Interrupt Enable */ +#define UDPHS_DMACONTROL_END_BUFFIT (0x1u << 5) /**< \brief (UDPHS_DMACONTROL) End of Buffer Interrupt Enable */ +#define UDPHS_DMACONTROL_DESC_LD_IT (0x1u << 6) /**< \brief (UDPHS_DMACONTROL) Descriptor Loaded Interrupt Enable */ +#define UDPHS_DMACONTROL_BURST_LCK (0x1u << 7) /**< \brief (UDPHS_DMACONTROL) Burst Lock Enable */ +#define UDPHS_DMACONTROL_BUFF_LENGTH_Pos 16 +#define UDPHS_DMACONTROL_BUFF_LENGTH_Msk (0xffffu << UDPHS_DMACONTROL_BUFF_LENGTH_Pos) /**< \brief (UDPHS_DMACONTROL) Buffer Byte Length (Write-only) */ +#define UDPHS_DMACONTROL_BUFF_LENGTH(value) ((UDPHS_DMACONTROL_BUFF_LENGTH_Msk & ((value) << UDPHS_DMACONTROL_BUFF_LENGTH_Pos))) +/* -------- UDPHS_DMASTATUS : (UDPHS Offset: N/A) UDPHS DMA Channel Status Register -------- */ +#define UDPHS_DMASTATUS_CHANN_ENB (0x1u << 0) /**< \brief (UDPHS_DMASTATUS) Channel Enable Status */ +#define UDPHS_DMASTATUS_CHANN_ACT (0x1u << 1) /**< \brief (UDPHS_DMASTATUS) Channel Active Status */ +#define UDPHS_DMASTATUS_END_TR_ST (0x1u << 4) /**< \brief (UDPHS_DMASTATUS) End of Channel Transfer Status */ +#define UDPHS_DMASTATUS_END_BF_ST (0x1u << 5) /**< \brief (UDPHS_DMASTATUS) End of Channel Buffer Status */ +#define UDPHS_DMASTATUS_DESC_LDST (0x1u << 6) /**< \brief (UDPHS_DMASTATUS) Descriptor Loaded Status */ +#define UDPHS_DMASTATUS_BUFF_COUNT_Pos 16 +#define UDPHS_DMASTATUS_BUFF_COUNT_Msk (0xffffu << UDPHS_DMASTATUS_BUFF_COUNT_Pos) /**< \brief (UDPHS_DMASTATUS) Buffer Byte Count */ +#define UDPHS_DMASTATUS_BUFF_COUNT(value) ((UDPHS_DMASTATUS_BUFF_COUNT_Msk & ((value) << UDPHS_DMASTATUS_BUFF_COUNT_Pos))) + +/*@}*/ + + +#endif /* _SAM3U_UDPHS_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_usart.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_usart.h new file mode 100644 index 000000000..e90aa6191 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_usart.h @@ -0,0 +1,355 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_USART_COMPONENT_ +#define _SAM3U_USART_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Universal Synchronous Asynchronous Receiver Transmitter */ +/* ============================================================================= */ +/** \addtogroup SAM3U_USART Universal Synchronous Asynchronous Receiver Transmitter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Usart hardware registers */ +typedef struct { + WoReg US_CR; /**< \brief (Usart Offset: 0x0000) Control Register */ + RwReg US_MR; /**< \brief (Usart Offset: 0x0004) Mode Register */ + WoReg US_IER; /**< \brief (Usart Offset: 0x0008) Interrupt Enable Register */ + WoReg US_IDR; /**< \brief (Usart Offset: 0x000C) Interrupt Disable Register */ + RoReg US_IMR; /**< \brief (Usart Offset: 0x0010) Interrupt Mask Register */ + RoReg US_CSR; /**< \brief (Usart Offset: 0x0014) Channel Status Register */ + RoReg US_RHR; /**< \brief (Usart Offset: 0x0018) Receiver Holding Register */ + WoReg US_THR; /**< \brief (Usart Offset: 0x001C) Transmitter Holding Register */ + RwReg US_BRGR; /**< \brief (Usart Offset: 0x0020) Baud Rate Generator Register */ + RwReg US_RTOR; /**< \brief (Usart Offset: 0x0024) Receiver Time-out Register */ + RwReg US_TTGR; /**< \brief (Usart Offset: 0x0028) Transmitter Timeguard Register */ + RoReg Reserved1[5]; + RwReg US_FIDI; /**< \brief (Usart Offset: 0x0040) FI DI Ratio Register */ + RoReg US_NER; /**< \brief (Usart Offset: 0x0044) Number of Errors Register */ + RoReg Reserved2[1]; + RwReg US_IF; /**< \brief (Usart Offset: 0x004C) IrDA Filter Register */ + RwReg US_MAN; /**< \brief (Usart Offset: 0x0050) Manchester Encoder Decoder Register */ + RoReg Reserved3[36]; + RwReg US_WPMR; /**< \brief (Usart Offset: 0xE4) Write Protect Mode Register */ + RoReg US_WPSR; /**< \brief (Usart Offset: 0xE8) Write Protect Status Register */ + RoReg Reserved4[5]; + RwReg US_RPR; /**< \brief (Usart Offset: 0x100) Receive Pointer Register */ + RwReg US_RCR; /**< \brief (Usart Offset: 0x104) Receive Counter Register */ + RwReg US_TPR; /**< \brief (Usart Offset: 0x108) Transmit Pointer Register */ + RwReg US_TCR; /**< \brief (Usart Offset: 0x10C) Transmit Counter Register */ + RwReg US_RNPR; /**< \brief (Usart Offset: 0x110) Receive Next Pointer Register */ + RwReg US_RNCR; /**< \brief (Usart Offset: 0x114) Receive Next Counter Register */ + RwReg US_TNPR; /**< \brief (Usart Offset: 0x118) Transmit Next Pointer Register */ + RwReg US_TNCR; /**< \brief (Usart Offset: 0x11C) Transmit Next Counter Register */ + WoReg US_PTCR; /**< \brief (Usart Offset: 0x120) Transfer Control Register */ + RoReg US_PTSR; /**< \brief (Usart Offset: 0x124) Transfer Status Register */ +} Usart; +#endif /* __ASSEMBLY__ */ +/* -------- US_CR : (USART Offset: 0x0000) Control Register -------- */ +#define US_CR_RSTRX (0x1u << 2) /**< \brief (US_CR) Reset Receiver */ +#define US_CR_RSTTX (0x1u << 3) /**< \brief (US_CR) Reset Transmitter */ +#define US_CR_RXEN (0x1u << 4) /**< \brief (US_CR) Receiver Enable */ +#define US_CR_RXDIS (0x1u << 5) /**< \brief (US_CR) Receiver Disable */ +#define US_CR_TXEN (0x1u << 6) /**< \brief (US_CR) Transmitter Enable */ +#define US_CR_TXDIS (0x1u << 7) /**< \brief (US_CR) Transmitter Disable */ +#define US_CR_RSTSTA (0x1u << 8) /**< \brief (US_CR) Reset Status Bits */ +#define US_CR_STTBRK (0x1u << 9) /**< \brief (US_CR) Start Break */ +#define US_CR_STPBRK (0x1u << 10) /**< \brief (US_CR) Stop Break */ +#define US_CR_STTTO (0x1u << 11) /**< \brief (US_CR) Start Time-out */ +#define US_CR_SENDA (0x1u << 12) /**< \brief (US_CR) Send Address */ +#define US_CR_RSTIT (0x1u << 13) /**< \brief (US_CR) Reset Iterations */ +#define US_CR_RSTNACK (0x1u << 14) /**< \brief (US_CR) Reset Non Acknowledge */ +#define US_CR_RETTO (0x1u << 15) /**< \brief (US_CR) Rearm Time-out */ +#define US_CR_DTREN (0x1u << 16) /**< \brief (US_CR) Data Terminal Ready Enable */ +#define US_CR_DTRDIS (0x1u << 17) /**< \brief (US_CR) Data Terminal Ready Disable */ +#define US_CR_RTSEN (0x1u << 18) /**< \brief (US_CR) Request to Send Enable */ +#define US_CR_FCS (0x1u << 18) /**< \brief (US_CR) Force SPI Chip Select */ +#define US_CR_RTSDIS (0x1u << 19) /**< \brief (US_CR) Request to Send Disable */ +#define US_CR_RCS (0x1u << 19) /**< \brief (US_CR) Release SPI Chip Select */ +/* -------- US_MR : (USART Offset: 0x0004) Mode Register -------- */ +#define US_MR_USART_MODE_Pos 0 +#define US_MR_USART_MODE_Msk (0xfu << US_MR_USART_MODE_Pos) /**< \brief (US_MR) */ +#define US_MR_USART_MODE_NORMAL (0x0u << 0) /**< \brief (US_MR) Normal mode */ +#define US_MR_USART_MODE_RS485 (0x1u << 0) /**< \brief (US_MR) RS485 */ +#define US_MR_USART_MODE_HW_HANDSHAKING (0x2u << 0) /**< \brief (US_MR) Hardware Handshaking */ +#define US_MR_USART_MODE_MODEM (0x3u << 0) /**< \brief (US_MR) Modem */ +#define US_MR_USART_MODE_IS07816_T_0 (0x4u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 0 */ +#define US_MR_USART_MODE_IS07816_T_1 (0x6u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 1 */ +#define US_MR_USART_MODE_IRDA (0x8u << 0) /**< \brief (US_MR) IrDA */ +#define US_MR_USART_MODE_SPI_MASTER (0xEu << 0) /**< \brief (US_MR) SPI Master */ +#define US_MR_USART_MODE_SPI_SLAVE (0xFu << 0) /**< \brief (US_MR) SPI Slave */ +#define US_MR_USCLKS_Pos 4 +#define US_MR_USCLKS_Msk (0x3u << US_MR_USCLKS_Pos) /**< \brief (US_MR) Clock Selection */ +#define US_MR_USCLKS_MCK (0x0u << 4) /**< \brief (US_MR) Master Clock MCK is selected */ +#define US_MR_USCLKS_DIV (0x1u << 4) /**< \brief (US_MR) Internal Clock Divided MCK/DIV (DIV=8) is selected */ +#define US_MR_USCLKS_SCK (0x3u << 4) /**< \brief (US_MR) Serial Clock SLK is selected */ +#define US_MR_CHRL_Pos 6 +#define US_MR_CHRL_Msk (0x3u << US_MR_CHRL_Pos) /**< \brief (US_MR) Character Length. */ +#define US_MR_CHRL_5_BIT (0x0u << 6) /**< \brief (US_MR) Character length is 5 bits */ +#define US_MR_CHRL_6_BIT (0x1u << 6) /**< \brief (US_MR) Character length is 6 bits */ +#define US_MR_CHRL_7_BIT (0x2u << 6) /**< \brief (US_MR) Character length is 7 bits */ +#define US_MR_CHRL_8_BIT (0x3u << 6) /**< \brief (US_MR) Character length is 8 bits */ +#define US_MR_SYNC (0x1u << 8) /**< \brief (US_MR) Synchronous Mode Select */ +#define US_MR_CPHA (0x1u << 8) /**< \brief (US_MR) SPI Clock Phase */ +#define US_MR_PAR_Pos 9 +#define US_MR_PAR_Msk (0x7u << US_MR_PAR_Pos) /**< \brief (US_MR) Parity Type */ +#define US_MR_PAR_EVEN (0x0u << 9) /**< \brief (US_MR) Even parity */ +#define US_MR_PAR_ODD (0x1u << 9) /**< \brief (US_MR) Odd parity */ +#define US_MR_PAR_SPACE (0x2u << 9) /**< \brief (US_MR) Parity forced to 0 (Space) */ +#define US_MR_PAR_MARK (0x3u << 9) /**< \brief (US_MR) Parity forced to 1 (Mark) */ +#define US_MR_PAR_NO (0x4u << 9) /**< \brief (US_MR) No parity */ +#define US_MR_PAR_MULTIDROP (0x6u << 9) /**< \brief (US_MR) Multidrop mode */ +#define US_MR_NBSTOP_Pos 12 +#define US_MR_NBSTOP_Msk (0x3u << US_MR_NBSTOP_Pos) /**< \brief (US_MR) Number of Stop Bits */ +#define US_MR_NBSTOP_1_BIT (0x0u << 12) /**< \brief (US_MR) 1 stop bit */ +#define US_MR_NBSTOP_1_5_BIT (0x1u << 12) /**< \brief (US_MR) 1.5 stop bit (SYNC = 0) or reserved (SYNC = 1) */ +#define US_MR_NBSTOP_2_BIT (0x2u << 12) /**< \brief (US_MR) 2 stop bits */ +#define US_MR_CHMODE_Pos 14 +#define US_MR_CHMODE_Msk (0x3u << US_MR_CHMODE_Pos) /**< \brief (US_MR) Channel Mode */ +#define US_MR_CHMODE_NORMAL (0x0u << 14) /**< \brief (US_MR) Normal Mode */ +#define US_MR_CHMODE_AUTOMATIC (0x1u << 14) /**< \brief (US_MR) Automatic Echo. Receiver input is connected to the TXD pin. */ +#define US_MR_CHMODE_LOCAL_LOOPBACK (0x2u << 14) /**< \brief (US_MR) Local Loopback. Transmitter output is connected to the Receiver Input. */ +#define US_MR_CHMODE_REMOTE_LOOPBACK (0x3u << 14) /**< \brief (US_MR) Remote Loopback. RXD pin is internally connected to the TXD pin. */ +#define US_MR_MSBF (0x1u << 16) /**< \brief (US_MR) Bit Order */ +#define US_MR_CPOL (0x1u << 16) /**< \brief (US_MR) SPI Clock Polarity */ +#define US_MR_MODE9 (0x1u << 17) /**< \brief (US_MR) 9-bit Character Length */ +#define US_MR_CLKO (0x1u << 18) /**< \brief (US_MR) Clock Output Select */ +#define US_MR_OVER (0x1u << 19) /**< \brief (US_MR) Oversampling Mode */ +#define US_MR_INACK (0x1u << 20) /**< \brief (US_MR) Inhibit Non Acknowledge */ +#define US_MR_DSNACK (0x1u << 21) /**< \brief (US_MR) Disable Successive NACK */ +#define US_MR_VAR_SYNC (0x1u << 22) /**< \brief (US_MR) Variable Synchronization of Command/Data Sync Start Frame Delimiter */ +#define US_MR_INVDATA (0x1u << 23) /**< \brief (US_MR) INverted Data */ +#define US_MR_MAX_ITERATION_Pos 24 +#define US_MR_MAX_ITERATION_Msk (0x7u << US_MR_MAX_ITERATION_Pos) /**< \brief (US_MR) */ +#define US_MR_MAX_ITERATION(value) ((US_MR_MAX_ITERATION_Msk & ((value) << US_MR_MAX_ITERATION_Pos))) +#define US_MR_FILTER (0x1u << 28) /**< \brief (US_MR) Infrared Receive Line Filter */ +#define US_MR_MAN (0x1u << 29) /**< \brief (US_MR) Manchester Encoder/Decoder Enable */ +#define US_MR_MODSYNC (0x1u << 30) /**< \brief (US_MR) Manchester Synchronization Mode */ +#define US_MR_ONEBIT (0x1u << 31) /**< \brief (US_MR) Start Frame Delimiter Selector */ +/* -------- US_IER : (USART Offset: 0x0008) Interrupt Enable Register -------- */ +#define US_IER_RXRDY (0x1u << 0) /**< \brief (US_IER) RXRDY Interrupt Enable */ +#define US_IER_TXRDY (0x1u << 1) /**< \brief (US_IER) TXRDY Interrupt Enable */ +#define US_IER_RXBRK (0x1u << 2) /**< \brief (US_IER) Receiver Break Interrupt Enable */ +#define US_IER_ENDRX (0x1u << 3) /**< \brief (US_IER) End of Receive Transfer Interrupt Enable */ +#define US_IER_ENDTX (0x1u << 4) /**< \brief (US_IER) End of Transmit Interrupt Enable */ +#define US_IER_OVRE (0x1u << 5) /**< \brief (US_IER) Overrun Error Interrupt Enable */ +#define US_IER_FRAME (0x1u << 6) /**< \brief (US_IER) Framing Error Interrupt Enable */ +#define US_IER_PARE (0x1u << 7) /**< \brief (US_IER) Parity Error Interrupt Enable */ +#define US_IER_TIMEOUT (0x1u << 8) /**< \brief (US_IER) Time-out Interrupt Enable */ +#define US_IER_TXEMPTY (0x1u << 9) /**< \brief (US_IER) TXEMPTY Interrupt Enable */ +#define US_IER_ITER (0x1u << 10) /**< \brief (US_IER) Max number of Repetitions Reached */ +#define US_IER_UNRE (0x1u << 10) /**< \brief (US_IER) SPI Underrun Error */ +#define US_IER_TXBUFE (0x1u << 11) /**< \brief (US_IER) Buffer Empty Interrupt Enable */ +#define US_IER_RXBUFF (0x1u << 12) /**< \brief (US_IER) Buffer Full Interrupt Enable */ +#define US_IER_NACK (0x1u << 13) /**< \brief (US_IER) Non AcknowledgeInterrupt Enable */ +#define US_IER_RIIC (0x1u << 16) /**< \brief (US_IER) Ring Indicator Input Change Enable */ +#define US_IER_DSRIC (0x1u << 17) /**< \brief (US_IER) Data Set Ready Input Change Enable */ +#define US_IER_DCDIC (0x1u << 18) /**< \brief (US_IER) Data Carrier Detect Input Change Interrupt Enable */ +#define US_IER_CTSIC (0x1u << 19) /**< \brief (US_IER) Clear to Send Input Change Interrupt Enable */ +#define US_IER_MANE (0x1u << 24) /**< \brief (US_IER) Manchester Error Interrupt Enable */ +/* -------- US_IDR : (USART Offset: 0x000C) Interrupt Disable Register -------- */ +#define US_IDR_RXRDY (0x1u << 0) /**< \brief (US_IDR) RXRDY Interrupt Disable */ +#define US_IDR_TXRDY (0x1u << 1) /**< \brief (US_IDR) TXRDY Interrupt Disable */ +#define US_IDR_RXBRK (0x1u << 2) /**< \brief (US_IDR) Receiver Break Interrupt Disable */ +#define US_IDR_ENDRX (0x1u << 3) /**< \brief (US_IDR) End of Receive Transfer Interrupt Disable */ +#define US_IDR_ENDTX (0x1u << 4) /**< \brief (US_IDR) End of Transmit Interrupt Disable */ +#define US_IDR_OVRE (0x1u << 5) /**< \brief (US_IDR) Overrun Error Interrupt Disable */ +#define US_IDR_FRAME (0x1u << 6) /**< \brief (US_IDR) Framing Error Interrupt Disable */ +#define US_IDR_PARE (0x1u << 7) /**< \brief (US_IDR) Parity Error Interrupt Disable */ +#define US_IDR_TIMEOUT (0x1u << 8) /**< \brief (US_IDR) Time-out Interrupt Disable */ +#define US_IDR_TXEMPTY (0x1u << 9) /**< \brief (US_IDR) TXEMPTY Interrupt Disable */ +#define US_IDR_ITER (0x1u << 10) /**< \brief (US_IDR) Max number of Repetitions Reached Disable */ +#define US_IDR_UNRE (0x1u << 10) /**< \brief (US_IDR) SPI Underrun Error Disable */ +#define US_IDR_TXBUFE (0x1u << 11) /**< \brief (US_IDR) Buffer Empty Interrupt Disable */ +#define US_IDR_RXBUFF (0x1u << 12) /**< \brief (US_IDR) Buffer Full Interrupt Disable */ +#define US_IDR_NACK (0x1u << 13) /**< \brief (US_IDR) Non AcknowledgeInterrupt Disable */ +#define US_IDR_RIIC (0x1u << 16) /**< \brief (US_IDR) Ring Indicator Input Change Disable */ +#define US_IDR_DSRIC (0x1u << 17) /**< \brief (US_IDR) Data Set Ready Input Change Disable */ +#define US_IDR_DCDIC (0x1u << 18) /**< \brief (US_IDR) Data Carrier Detect Input Change Interrupt Disable */ +#define US_IDR_CTSIC (0x1u << 19) /**< \brief (US_IDR) Clear to Send Input Change Interrupt Disable */ +#define US_IDR_MANE (0x1u << 24) /**< \brief (US_IDR) Manchester Error Interrupt Disable */ +/* -------- US_IMR : (USART Offset: 0x0010) Interrupt Mask Register -------- */ +#define US_IMR_RXRDY (0x1u << 0) /**< \brief (US_IMR) RXRDY Interrupt Mask */ +#define US_IMR_TXRDY (0x1u << 1) /**< \brief (US_IMR) TXRDY Interrupt Mask */ +#define US_IMR_RXBRK (0x1u << 2) /**< \brief (US_IMR) Receiver Break Interrupt Mask */ +#define US_IMR_ENDRX (0x1u << 3) /**< \brief (US_IMR) End of Receive Transfer Interrupt Mask */ +#define US_IMR_ENDTX (0x1u << 4) /**< \brief (US_IMR) End of Transmit Interrupt Mask */ +#define US_IMR_OVRE (0x1u << 5) /**< \brief (US_IMR) Overrun Error Interrupt Mask */ +#define US_IMR_FRAME (0x1u << 6) /**< \brief (US_IMR) Framing Error Interrupt Mask */ +#define US_IMR_PARE (0x1u << 7) /**< \brief (US_IMR) Parity Error Interrupt Mask */ +#define US_IMR_TIMEOUT (0x1u << 8) /**< \brief (US_IMR) Time-out Interrupt Mask */ +#define US_IMR_TXEMPTY (0x1u << 9) /**< \brief (US_IMR) TXEMPTY Interrupt Mask */ +#define US_IMR_ITER (0x1u << 10) /**< \brief (US_IMR) Max number of Repetitions Reached Mask */ +#define US_IMR_UNRE (0x1u << 10) /**< \brief (US_IMR) SPI Underrun Error Mask */ +#define US_IMR_TXBUFE (0x1u << 11) /**< \brief (US_IMR) Buffer Empty Interrupt Mask */ +#define US_IMR_RXBUFF (0x1u << 12) /**< \brief (US_IMR) Buffer Full Interrupt Mask */ +#define US_IMR_NACK (0x1u << 13) /**< \brief (US_IMR) Non AcknowledgeInterrupt Mask */ +#define US_IMR_RIIC (0x1u << 16) /**< \brief (US_IMR) Ring Indicator Input Change Mask */ +#define US_IMR_DSRIC (0x1u << 17) /**< \brief (US_IMR) Data Set Ready Input Change Mask */ +#define US_IMR_DCDIC (0x1u << 18) /**< \brief (US_IMR) Data Carrier Detect Input Change Interrupt Mask */ +#define US_IMR_CTSIC (0x1u << 19) /**< \brief (US_IMR) Clear to Send Input Change Interrupt Mask */ +#define US_IMR_MANE (0x1u << 24) /**< \brief (US_IMR) Manchester Error Interrupt Mask */ +/* -------- US_CSR : (USART Offset: 0x0014) Channel Status Register -------- */ +#define US_CSR_RXRDY (0x1u << 0) /**< \brief (US_CSR) Receiver Ready */ +#define US_CSR_TXRDY (0x1u << 1) /**< \brief (US_CSR) Transmitter Ready */ +#define US_CSR_RXBRK (0x1u << 2) /**< \brief (US_CSR) Break Received/End of Break */ +#define US_CSR_ENDRX (0x1u << 3) /**< \brief (US_CSR) End of Receiver Transfer */ +#define US_CSR_ENDTX (0x1u << 4) /**< \brief (US_CSR) End of Transmitter Transfer */ +#define US_CSR_OVRE (0x1u << 5) /**< \brief (US_CSR) Overrun Error */ +#define US_CSR_FRAME (0x1u << 6) /**< \brief (US_CSR) Framing Error */ +#define US_CSR_PARE (0x1u << 7) /**< \brief (US_CSR) Parity Error */ +#define US_CSR_TIMEOUT (0x1u << 8) /**< \brief (US_CSR) Receiver Time-out */ +#define US_CSR_TXEMPTY (0x1u << 9) /**< \brief (US_CSR) Transmitter Empty */ +#define US_CSR_ITER (0x1u << 10) /**< \brief (US_CSR) Max number of Repetitions Reached */ +#define US_CSR_UNRE (0x1u << 10) /**< \brief (US_CSR) SPI Underrun Error */ +#define US_CSR_TXBUFE (0x1u << 11) /**< \brief (US_CSR) Transmission Buffer Empty */ +#define US_CSR_RXBUFF (0x1u << 12) /**< \brief (US_CSR) Reception Buffer Full */ +#define US_CSR_NACK (0x1u << 13) /**< \brief (US_CSR) Non AcknowledgeInterrupt */ +#define US_CSR_RIIC (0x1u << 16) /**< \brief (US_CSR) Ring Indicator Input Change Flag */ +#define US_CSR_DSRIC (0x1u << 17) /**< \brief (US_CSR) Data Set Ready Input Change Flag */ +#define US_CSR_DCDIC (0x1u << 18) /**< \brief (US_CSR) Data Carrier Detect Input Change Flag */ +#define US_CSR_CTSIC (0x1u << 19) /**< \brief (US_CSR) Clear to Send Input Change Flag */ +#define US_CSR_RI (0x1u << 20) /**< \brief (US_CSR) Image of RI Input */ +#define US_CSR_DSR (0x1u << 21) /**< \brief (US_CSR) Image of DSR Input */ +#define US_CSR_DCD (0x1u << 22) /**< \brief (US_CSR) Image of DCD Input */ +#define US_CSR_CTS (0x1u << 23) /**< \brief (US_CSR) Image of CTS Input */ +#define US_CSR_MANERR (0x1u << 24) /**< \brief (US_CSR) Manchester Error */ +/* -------- US_RHR : (USART Offset: 0x0018) Receiver Holding Register -------- */ +#define US_RHR_RXCHR_Pos 0 +#define US_RHR_RXCHR_Msk (0x1ffu << US_RHR_RXCHR_Pos) /**< \brief (US_RHR) Received Character */ +#define US_RHR_RXSYNH (0x1u << 15) /**< \brief (US_RHR) Received Sync */ +/* -------- US_THR : (USART Offset: 0x001C) Transmitter Holding Register -------- */ +#define US_THR_TXCHR_Pos 0 +#define US_THR_TXCHR_Msk (0x1ffu << US_THR_TXCHR_Pos) /**< \brief (US_THR) Character to be Transmitted */ +#define US_THR_TXCHR(value) ((US_THR_TXCHR_Msk & ((value) << US_THR_TXCHR_Pos))) +#define US_THR_TXSYNH (0x1u << 15) /**< \brief (US_THR) Sync Field to be transmitted */ +/* -------- US_BRGR : (USART Offset: 0x0020) Baud Rate Generator Register -------- */ +#define US_BRGR_CD_Pos 0 +#define US_BRGR_CD_Msk (0xffffu << US_BRGR_CD_Pos) /**< \brief (US_BRGR) Clock Divider */ +#define US_BRGR_CD(value) ((US_BRGR_CD_Msk & ((value) << US_BRGR_CD_Pos))) +#define US_BRGR_FP_Pos 16 +#define US_BRGR_FP_Msk (0x7u << US_BRGR_FP_Pos) /**< \brief (US_BRGR) Fractional Part */ +#define US_BRGR_FP(value) ((US_BRGR_FP_Msk & ((value) << US_BRGR_FP_Pos))) +/* -------- US_RTOR : (USART Offset: 0x0024) Receiver Time-out Register -------- */ +#define US_RTOR_TO_Pos 0 +#define US_RTOR_TO_Msk (0xffffu << US_RTOR_TO_Pos) /**< \brief (US_RTOR) Time-out Value */ +#define US_RTOR_TO(value) ((US_RTOR_TO_Msk & ((value) << US_RTOR_TO_Pos))) +/* -------- US_TTGR : (USART Offset: 0x0028) Transmitter Timeguard Register -------- */ +#define US_TTGR_TG_Pos 0 +#define US_TTGR_TG_Msk (0xffu << US_TTGR_TG_Pos) /**< \brief (US_TTGR) Timeguard Value */ +#define US_TTGR_TG(value) ((US_TTGR_TG_Msk & ((value) << US_TTGR_TG_Pos))) +/* -------- US_FIDI : (USART Offset: 0x0040) FI DI Ratio Register -------- */ +#define US_FIDI_FI_DI_RATIO_Pos 0 +#define US_FIDI_FI_DI_RATIO_Msk (0x7ffu << US_FIDI_FI_DI_RATIO_Pos) /**< \brief (US_FIDI) FI Over DI Ratio Value */ +#define US_FIDI_FI_DI_RATIO(value) ((US_FIDI_FI_DI_RATIO_Msk & ((value) << US_FIDI_FI_DI_RATIO_Pos))) +/* -------- US_NER : (USART Offset: 0x0044) Number of Errors Register -------- */ +#define US_NER_NB_ERRORS_Pos 0 +#define US_NER_NB_ERRORS_Msk (0xffu << US_NER_NB_ERRORS_Pos) /**< \brief (US_NER) Number of Errors */ +/* -------- US_IF : (USART Offset: 0x004C) IrDA Filter Register -------- */ +#define US_IF_IRDA_FILTER_Pos 0 +#define US_IF_IRDA_FILTER_Msk (0xffu << US_IF_IRDA_FILTER_Pos) /**< \brief (US_IF) IrDA Filter */ +#define US_IF_IRDA_FILTER(value) ((US_IF_IRDA_FILTER_Msk & ((value) << US_IF_IRDA_FILTER_Pos))) +/* -------- US_MAN : (USART Offset: 0x0050) Manchester Encoder Decoder Register -------- */ +#define US_MAN_TX_PL_Pos 0 +#define US_MAN_TX_PL_Msk (0xfu << US_MAN_TX_PL_Pos) /**< \brief (US_MAN) Transmitter Preamble Length */ +#define US_MAN_TX_PL(value) ((US_MAN_TX_PL_Msk & ((value) << US_MAN_TX_PL_Pos))) +#define US_MAN_TX_PP_Pos 8 +#define US_MAN_TX_PP_Msk (0x3u << US_MAN_TX_PP_Pos) /**< \brief (US_MAN) Transmitter Preamble Pattern */ +#define US_MAN_TX_PP_ALL_ONE (0x0u << 8) /**< \brief (US_MAN) The preamble is composed of '1's */ +#define US_MAN_TX_PP_ALL_ZERO (0x1u << 8) /**< \brief (US_MAN) The preamble is composed of '0's */ +#define US_MAN_TX_PP_ZERO_ONE (0x2u << 8) /**< \brief (US_MAN) The preamble is composed of '01's */ +#define US_MAN_TX_PP_ONE_ZERO (0x3u << 8) /**< \brief (US_MAN) The preamble is composed of '10's */ +#define US_MAN_TX_MPOL (0x1u << 12) /**< \brief (US_MAN) Transmitter Manchester Polarity */ +#define US_MAN_RX_PL_Pos 16 +#define US_MAN_RX_PL_Msk (0xfu << US_MAN_RX_PL_Pos) /**< \brief (US_MAN) Receiver Preamble Length */ +#define US_MAN_RX_PL(value) ((US_MAN_RX_PL_Msk & ((value) << US_MAN_RX_PL_Pos))) +#define US_MAN_RX_PP_Pos 24 +#define US_MAN_RX_PP_Msk (0x3u << US_MAN_RX_PP_Pos) /**< \brief (US_MAN) Receiver Preamble Pattern detected */ +#define US_MAN_RX_PP_ALL_ONE (0x0u << 24) /**< \brief (US_MAN) The preamble is composed of '1's */ +#define US_MAN_RX_PP_ALL_ZERO (0x1u << 24) /**< \brief (US_MAN) The preamble is composed of '0's */ +#define US_MAN_RX_PP_ZERO_ONE (0x2u << 24) /**< \brief (US_MAN) The preamble is composed of '01's */ +#define US_MAN_RX_PP_ONE_ZERO (0x3u << 24) /**< \brief (US_MAN) The preamble is composed of '10's */ +#define US_MAN_RX_MPOL (0x1u << 28) /**< \brief (US_MAN) Receiver Manchester Polarity */ +#define US_MAN_STUCKTO1 (0x1u << 29) /**< \brief (US_MAN) */ +#define US_MAN_DRIFT (0x1u << 30) /**< \brief (US_MAN) Drift compensation */ +/* -------- US_WPMR : (USART Offset: 0xE4) Write Protect Mode Register -------- */ +#define US_WPMR_WPEN (0x1u << 0) /**< \brief (US_WPMR) Write Protect Enable */ +#define US_WPMR_WPKEY_Pos 8 +#define US_WPMR_WPKEY_Msk (0xffffffu << US_WPMR_WPKEY_Pos) /**< \brief (US_WPMR) Write Protect KEY */ +#define US_WPMR_WPKEY(value) ((US_WPMR_WPKEY_Msk & ((value) << US_WPMR_WPKEY_Pos))) +/* -------- US_WPSR : (USART Offset: 0xE8) Write Protect Status Register -------- */ +#define US_WPSR_WPVS (0x1u << 0) /**< \brief (US_WPSR) Write Protect Violation Status */ +#define US_WPSR_WPVSRC_Pos 8 +#define US_WPSR_WPVSRC_Msk (0xffffu << US_WPSR_WPVSRC_Pos) /**< \brief (US_WPSR) Write Protect Violation Source */ +/* -------- US_RPR : (USART Offset: 0x100) Receive Pointer Register -------- */ +#define US_RPR_RXPTR_Pos 0 +#define US_RPR_RXPTR_Msk (0xffffffffu << US_RPR_RXPTR_Pos) /**< \brief (US_RPR) Receive Pointer Register */ +#define US_RPR_RXPTR(value) ((US_RPR_RXPTR_Msk & ((value) << US_RPR_RXPTR_Pos))) +/* -------- US_RCR : (USART Offset: 0x104) Receive Counter Register -------- */ +#define US_RCR_RXCTR_Pos 0 +#define US_RCR_RXCTR_Msk (0xffffu << US_RCR_RXCTR_Pos) /**< \brief (US_RCR) Receive Counter Register */ +#define US_RCR_RXCTR(value) ((US_RCR_RXCTR_Msk & ((value) << US_RCR_RXCTR_Pos))) +/* -------- US_TPR : (USART Offset: 0x108) Transmit Pointer Register -------- */ +#define US_TPR_TXPTR_Pos 0 +#define US_TPR_TXPTR_Msk (0xffffffffu << US_TPR_TXPTR_Pos) /**< \brief (US_TPR) Transmit Counter Register */ +#define US_TPR_TXPTR(value) ((US_TPR_TXPTR_Msk & ((value) << US_TPR_TXPTR_Pos))) +/* -------- US_TCR : (USART Offset: 0x10C) Transmit Counter Register -------- */ +#define US_TCR_TXCTR_Pos 0 +#define US_TCR_TXCTR_Msk (0xffffu << US_TCR_TXCTR_Pos) /**< \brief (US_TCR) Transmit Counter Register */ +#define US_TCR_TXCTR(value) ((US_TCR_TXCTR_Msk & ((value) << US_TCR_TXCTR_Pos))) +/* -------- US_RNPR : (USART Offset: 0x110) Receive Next Pointer Register -------- */ +#define US_RNPR_RXNPTR_Pos 0 +#define US_RNPR_RXNPTR_Msk (0xffffffffu << US_RNPR_RXNPTR_Pos) /**< \brief (US_RNPR) Receive Next Pointer */ +#define US_RNPR_RXNPTR(value) ((US_RNPR_RXNPTR_Msk & ((value) << US_RNPR_RXNPTR_Pos))) +/* -------- US_RNCR : (USART Offset: 0x114) Receive Next Counter Register -------- */ +#define US_RNCR_RXNCTR_Pos 0 +#define US_RNCR_RXNCTR_Msk (0xffffu << US_RNCR_RXNCTR_Pos) /**< \brief (US_RNCR) Receive Next Counter */ +#define US_RNCR_RXNCTR(value) ((US_RNCR_RXNCTR_Msk & ((value) << US_RNCR_RXNCTR_Pos))) +/* -------- US_TNPR : (USART Offset: 0x118) Transmit Next Pointer Register -------- */ +#define US_TNPR_TXNPTR_Pos 0 +#define US_TNPR_TXNPTR_Msk (0xffffffffu << US_TNPR_TXNPTR_Pos) /**< \brief (US_TNPR) Transmit Next Pointer */ +#define US_TNPR_TXNPTR(value) ((US_TNPR_TXNPTR_Msk & ((value) << US_TNPR_TXNPTR_Pos))) +/* -------- US_TNCR : (USART Offset: 0x11C) Transmit Next Counter Register -------- */ +#define US_TNCR_TXNCTR_Pos 0 +#define US_TNCR_TXNCTR_Msk (0xffffu << US_TNCR_TXNCTR_Pos) /**< \brief (US_TNCR) Transmit Counter Next */ +#define US_TNCR_TXNCTR(value) ((US_TNCR_TXNCTR_Msk & ((value) << US_TNCR_TXNCTR_Pos))) +/* -------- US_PTCR : (USART Offset: 0x120) Transfer Control Register -------- */ +#define US_PTCR_RXTEN (0x1u << 0) /**< \brief (US_PTCR) Receiver Transfer Enable */ +#define US_PTCR_RXTDIS (0x1u << 1) /**< \brief (US_PTCR) Receiver Transfer Disable */ +#define US_PTCR_TXTEN (0x1u << 8) /**< \brief (US_PTCR) Transmitter Transfer Enable */ +#define US_PTCR_TXTDIS (0x1u << 9) /**< \brief (US_PTCR) Transmitter Transfer Disable */ +/* -------- US_PTSR : (USART Offset: 0x124) Transfer Status Register -------- */ +#define US_PTSR_RXTEN (0x1u << 0) /**< \brief (US_PTSR) Receiver Transfer Enable */ +#define US_PTSR_TXTEN (0x1u << 8) /**< \brief (US_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3U_USART_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_wdt.h b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_wdt.h new file mode 100644 index 000000000..bcf3f478f --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/component/component_wdt.h @@ -0,0 +1,72 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_WDT_COMPONENT_ +#define _SAM3U_WDT_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Watchdog Timer */ +/* ============================================================================= */ +/** \addtogroup SAM3U_WDT Watchdog Timer */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Wdt hardware registers */ +typedef struct { + WoReg WDT_CR; /**< \brief (Wdt Offset: 0x00) Control Register */ + RwReg WDT_MR; /**< \brief (Wdt Offset: 0x04) Mode Register */ + RoReg WDT_SR; /**< \brief (Wdt Offset: 0x08) Status Register */ +} Wdt; +#endif /* __ASSEMBLY__ */ +/* -------- WDT_CR : (WDT Offset: 0x00) Control Register -------- */ +#define WDT_CR_WDRSTT (0x1u << 0) /**< \brief (WDT_CR) Watchdog Restart */ +#define WDT_CR_KEY_Pos 24 +#define WDT_CR_KEY_Msk (0xffu << WDT_CR_KEY_Pos) /**< \brief (WDT_CR) Password */ +#define WDT_CR_KEY(value) ((WDT_CR_KEY_Msk & ((value) << WDT_CR_KEY_Pos))) +/* -------- WDT_MR : (WDT Offset: 0x04) Mode Register -------- */ +#define WDT_MR_WDV_Pos 0 +#define WDT_MR_WDV_Msk (0xfffu << WDT_MR_WDV_Pos) /**< \brief (WDT_MR) Watchdog Counter Value */ +#define WDT_MR_WDV(value) ((WDT_MR_WDV_Msk & ((value) << WDT_MR_WDV_Pos))) +#define WDT_MR_WDFIEN (0x1u << 12) /**< \brief (WDT_MR) Watchdog Fault Interrupt Enable */ +#define WDT_MR_WDRSTEN (0x1u << 13) /**< \brief (WDT_MR) Watchdog Reset Enable */ +#define WDT_MR_WDRPROC (0x1u << 14) /**< \brief (WDT_MR) Watchdog Reset Processor */ +#define WDT_MR_WDDIS (0x1u << 15) /**< \brief (WDT_MR) Watchdog Disable */ +#define WDT_MR_WDD_Pos 16 +#define WDT_MR_WDD_Msk (0xfffu << WDT_MR_WDD_Pos) /**< \brief (WDT_MR) Watchdog Delta Value */ +#define WDT_MR_WDD(value) ((WDT_MR_WDD_Msk & ((value) << WDT_MR_WDD_Pos))) +#define WDT_MR_WDDBGHLT (0x1u << 28) /**< \brief (WDT_MR) Watchdog Debug Halt */ +#define WDT_MR_WDIDLEHLT (0x1u << 29) /**< \brief (WDT_MR) Watchdog Idle Halt */ +/* -------- WDT_SR : (WDT Offset: 0x08) Status Register -------- */ +#define WDT_SR_WDUNF (0x1u << 0) /**< \brief (WDT_SR) Watchdog Underflow */ +#define WDT_SR_WDERR (0x1u << 1) /**< \brief (WDT_SR) Watchdog Error */ + +/*@}*/ + + +#endif /* _SAM3U_WDT_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_adc.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_adc.h new file mode 100644 index 000000000..eb16f3c0d --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_adc.h @@ -0,0 +1,80 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_ADC_INSTANCE_ +#define _SAM3U_ADC_INSTANCE_ + +/* ========== Register definition for ADC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_ADC_CR (0x400AC000U) /**< \brief (ADC) Control Register */ +#define REG_ADC_MR (0x400AC004U) /**< \brief (ADC) Mode Register */ +#define REG_ADC_CHER (0x400AC010U) /**< \brief (ADC) Channel Enable Register */ +#define REG_ADC_CHDR (0x400AC014U) /**< \brief (ADC) Channel Disable Register */ +#define REG_ADC_CHSR (0x400AC018U) /**< \brief (ADC) Channel Status Register */ +#define REG_ADC_SR (0x400AC01CU) /**< \brief (ADC) Status Register */ +#define REG_ADC_LCDR (0x400AC020U) /**< \brief (ADC) Last Converted Data Register */ +#define REG_ADC_IER (0x400AC024U) /**< \brief (ADC) Interrupt Enable Register */ +#define REG_ADC_IDR (0x400AC028U) /**< \brief (ADC) Interrupt Disable Register */ +#define REG_ADC_IMR (0x400AC02CU) /**< \brief (ADC) Interrupt Mask Register */ +#define REG_ADC_CDR (0x400AC030U) /**< \brief (ADC) Channel Data Register */ +#define REG_ADC_RPR (0x400AC100U) /**< \brief (ADC) Receive Pointer Register */ +#define REG_ADC_RCR (0x400AC104U) /**< \brief (ADC) Receive Counter Register */ +#define REG_ADC_TPR (0x400AC108U) /**< \brief (ADC) Transmit Pointer Register */ +#define REG_ADC_TCR (0x400AC10CU) /**< \brief (ADC) Transmit Counter Register */ +#define REG_ADC_RNPR (0x400AC110U) /**< \brief (ADC) Receive Next Pointer Register */ +#define REG_ADC_RNCR (0x400AC114U) /**< \brief (ADC) Receive Next Counter Register */ +#define REG_ADC_TNPR (0x400AC118U) /**< \brief (ADC) Transmit Next Pointer Register */ +#define REG_ADC_TNCR (0x400AC11CU) /**< \brief (ADC) Transmit Next Counter Register */ +#define REG_ADC_PTCR (0x400AC120U) /**< \brief (ADC) Transfer Control Register */ +#define REG_ADC_PTSR (0x400AC124U) /**< \brief (ADC) Transfer Status Register */ +#else +#define REG_ADC_CR (*(WoReg*)0x400AC000U) /**< \brief (ADC) Control Register */ +#define REG_ADC_MR (*(RwReg*)0x400AC004U) /**< \brief (ADC) Mode Register */ +#define REG_ADC_CHER (*(WoReg*)0x400AC010U) /**< \brief (ADC) Channel Enable Register */ +#define REG_ADC_CHDR (*(WoReg*)0x400AC014U) /**< \brief (ADC) Channel Disable Register */ +#define REG_ADC_CHSR (*(RoReg*)0x400AC018U) /**< \brief (ADC) Channel Status Register */ +#define REG_ADC_SR (*(RoReg*)0x400AC01CU) /**< \brief (ADC) Status Register */ +#define REG_ADC_LCDR (*(RoReg*)0x400AC020U) /**< \brief (ADC) Last Converted Data Register */ +#define REG_ADC_IER (*(WoReg*)0x400AC024U) /**< \brief (ADC) Interrupt Enable Register */ +#define REG_ADC_IDR (*(WoReg*)0x400AC028U) /**< \brief (ADC) Interrupt Disable Register */ +#define REG_ADC_IMR (*(RoReg*)0x400AC02CU) /**< \brief (ADC) Interrupt Mask Register */ +#define REG_ADC_CDR (*(RoReg*)0x400AC030U) /**< \brief (ADC) Channel Data Register */ +#define REG_ADC_RPR (*(RwReg*)0x400AC100U) /**< \brief (ADC) Receive Pointer Register */ +#define REG_ADC_RCR (*(RwReg*)0x400AC104U) /**< \brief (ADC) Receive Counter Register */ +#define REG_ADC_TPR (*(RwReg*)0x400AC108U) /**< \brief (ADC) Transmit Pointer Register */ +#define REG_ADC_TCR (*(RwReg*)0x400AC10CU) /**< \brief (ADC) Transmit Counter Register */ +#define REG_ADC_RNPR (*(RwReg*)0x400AC110U) /**< \brief (ADC) Receive Next Pointer Register */ +#define REG_ADC_RNCR (*(RwReg*)0x400AC114U) /**< \brief (ADC) Receive Next Counter Register */ +#define REG_ADC_TNPR (*(RwReg*)0x400AC118U) /**< \brief (ADC) Transmit Next Pointer Register */ +#define REG_ADC_TNCR (*(RwReg*)0x400AC11CU) /**< \brief (ADC) Transmit Next Counter Register */ +#define REG_ADC_PTCR (*(WoReg*)0x400AC120U) /**< \brief (ADC) Transfer Control Register */ +#define REG_ADC_PTSR (*(RoReg*)0x400AC124U) /**< \brief (ADC) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_ADC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_adc12b.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_adc12b.h new file mode 100644 index 000000000..985799389 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_adc12b.h @@ -0,0 +1,84 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_ADC12B_INSTANCE_ +#define _SAM3U_ADC12B_INSTANCE_ + +/* ========== Register definition for ADC12B peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_ADC12B_CR (0x400A8000U) /**< \brief (ADC12B) Control Register */ +#define REG_ADC12B_MR (0x400A8004U) /**< \brief (ADC12B) Mode Register */ +#define REG_ADC12B_CHER (0x400A8010U) /**< \brief (ADC12B) Channel Enable Register */ +#define REG_ADC12B_CHDR (0x400A8014U) /**< \brief (ADC12B) Channel Disable Register */ +#define REG_ADC12B_CHSR (0x400A8018U) /**< \brief (ADC12B) Channel Status Register */ +#define REG_ADC12B_SR (0x400A801CU) /**< \brief (ADC12B) Status Register */ +#define REG_ADC12B_LCDR (0x400A8020U) /**< \brief (ADC12B) Last Converted Data Register */ +#define REG_ADC12B_IER (0x400A8024U) /**< \brief (ADC12B) Interrupt Enable Register */ +#define REG_ADC12B_IDR (0x400A8028U) /**< \brief (ADC12B) Interrupt Disable Register */ +#define REG_ADC12B_IMR (0x400A802CU) /**< \brief (ADC12B) Interrupt Mask Register */ +#define REG_ADC12B_CDR (0x400A8030U) /**< \brief (ADC12B) Channel Data Register */ +#define REG_ADC12B_ACR (0x400A8064U) /**< \brief (ADC12B) Analog Control Register */ +#define REG_ADC12B_EMR (0x400A8068U) /**< \brief (ADC12B) Extended Mode Register */ +#define REG_ADC12B_RPR (0x400A8100U) /**< \brief (ADC12B) Receive Pointer Register */ +#define REG_ADC12B_RCR (0x400A8104U) /**< \brief (ADC12B) Receive Counter Register */ +#define REG_ADC12B_TPR (0x400A8108U) /**< \brief (ADC12B) Transmit Pointer Register */ +#define REG_ADC12B_TCR (0x400A810CU) /**< \brief (ADC12B) Transmit Counter Register */ +#define REG_ADC12B_RNPR (0x400A8110U) /**< \brief (ADC12B) Receive Next Pointer Register */ +#define REG_ADC12B_RNCR (0x400A8114U) /**< \brief (ADC12B) Receive Next Counter Register */ +#define REG_ADC12B_TNPR (0x400A8118U) /**< \brief (ADC12B) Transmit Next Pointer Register */ +#define REG_ADC12B_TNCR (0x400A811CU) /**< \brief (ADC12B) Transmit Next Counter Register */ +#define REG_ADC12B_PTCR (0x400A8120U) /**< \brief (ADC12B) Transfer Control Register */ +#define REG_ADC12B_PTSR (0x400A8124U) /**< \brief (ADC12B) Transfer Status Register */ +#else +#define REG_ADC12B_CR (*(WoReg*)0x400A8000U) /**< \brief (ADC12B) Control Register */ +#define REG_ADC12B_MR (*(RwReg*)0x400A8004U) /**< \brief (ADC12B) Mode Register */ +#define REG_ADC12B_CHER (*(WoReg*)0x400A8010U) /**< \brief (ADC12B) Channel Enable Register */ +#define REG_ADC12B_CHDR (*(WoReg*)0x400A8014U) /**< \brief (ADC12B) Channel Disable Register */ +#define REG_ADC12B_CHSR (*(RoReg*)0x400A8018U) /**< \brief (ADC12B) Channel Status Register */ +#define REG_ADC12B_SR (*(RoReg*)0x400A801CU) /**< \brief (ADC12B) Status Register */ +#define REG_ADC12B_LCDR (*(RoReg*)0x400A8020U) /**< \brief (ADC12B) Last Converted Data Register */ +#define REG_ADC12B_IER (*(WoReg*)0x400A8024U) /**< \brief (ADC12B) Interrupt Enable Register */ +#define REG_ADC12B_IDR (*(WoReg*)0x400A8028U) /**< \brief (ADC12B) Interrupt Disable Register */ +#define REG_ADC12B_IMR (*(RoReg*)0x400A802CU) /**< \brief (ADC12B) Interrupt Mask Register */ +#define REG_ADC12B_CDR (*(RoReg*)0x400A8030U) /**< \brief (ADC12B) Channel Data Register */ +#define REG_ADC12B_ACR (*(RwReg*)0x400A8064U) /**< \brief (ADC12B) Analog Control Register */ +#define REG_ADC12B_EMR (*(RwReg*)0x400A8068U) /**< \brief (ADC12B) Extended Mode Register */ +#define REG_ADC12B_RPR (*(RwReg*)0x400A8100U) /**< \brief (ADC12B) Receive Pointer Register */ +#define REG_ADC12B_RCR (*(RwReg*)0x400A8104U) /**< \brief (ADC12B) Receive Counter Register */ +#define REG_ADC12B_TPR (*(RwReg*)0x400A8108U) /**< \brief (ADC12B) Transmit Pointer Register */ +#define REG_ADC12B_TCR (*(RwReg*)0x400A810CU) /**< \brief (ADC12B) Transmit Counter Register */ +#define REG_ADC12B_RNPR (*(RwReg*)0x400A8110U) /**< \brief (ADC12B) Receive Next Pointer Register */ +#define REG_ADC12B_RNCR (*(RwReg*)0x400A8114U) /**< \brief (ADC12B) Receive Next Counter Register */ +#define REG_ADC12B_TNPR (*(RwReg*)0x400A8118U) /**< \brief (ADC12B) Transmit Next Pointer Register */ +#define REG_ADC12B_TNCR (*(RwReg*)0x400A811CU) /**< \brief (ADC12B) Transmit Next Counter Register */ +#define REG_ADC12B_PTCR (*(WoReg*)0x400A8120U) /**< \brief (ADC12B) Transfer Control Register */ +#define REG_ADC12B_PTSR (*(RoReg*)0x400A8124U) /**< \brief (ADC12B) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_ADC12B_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_chipid.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_chipid.h new file mode 100644 index 000000000..0e26b27fd --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_chipid.h @@ -0,0 +1,42 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_CHIPID_INSTANCE_ +#define _SAM3U_CHIPID_INSTANCE_ + +/* ========== Register definition for CHIPID peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_CHIPID_CIDR (0x400E0740U) /**< \brief (CHIPID) Chip ID Register */ +#define REG_CHIPID_EXID (0x400E0744U) /**< \brief (CHIPID) Chip ID Extension Register */ +#else +#define REG_CHIPID_CIDR (*(RoReg*)0x400E0740U) /**< \brief (CHIPID) Chip ID Register */ +#define REG_CHIPID_EXID (*(RoReg*)0x400E0744U) /**< \brief (CHIPID) Chip ID Extension Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_CHIPID_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_dmac.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_dmac.h new file mode 100644 index 000000000..76972f519 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_dmac.h @@ -0,0 +1,110 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_DMAC_INSTANCE_ +#define _SAM3U_DMAC_INSTANCE_ + +/* ========== Register definition for DMAC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_DMAC_GCFG (0x400B0000U) /**< \brief (DMAC) DMAC Global Configuration Register */ +#define REG_DMAC_EN (0x400B0004U) /**< \brief (DMAC) DMAC Enable Register */ +#define REG_DMAC_SREQ (0x400B0008U) /**< \brief (DMAC) DMAC Software Single Request Register */ +#define REG_DMAC_CREQ (0x400B000CU) /**< \brief (DMAC) DMAC Software Chunk Transfer Request Register */ +#define REG_DMAC_LAST (0x400B0010U) /**< \brief (DMAC) DMAC Software Last Transfer Flag Register */ +#define REG_DMAC_EBCIER (0x400B0018U) /**< \brief (DMAC) DMAC Error, Chained Buffer transfer completed and Buffer transfer completed Interrupt Enable register. */ +#define REG_DMAC_EBCIDR (0x400B001CU) /**< \brief (DMAC) DMAC Error, Chained Buffer transfer completed and Buffer transfer completed Interrupt Disable register. */ +#define REG_DMAC_EBCIMR (0x400B0020U) /**< \brief (DMAC) DMAC Error, Chained Buffer transfer completed and Buffer transfer completed Mask Register. */ +#define REG_DMAC_EBCISR (0x400B0024U) /**< \brief (DMAC) DMAC Error, Chained Buffer transfer completed and Buffer transfer completed Status Register. */ +#define REG_DMAC_CHER (0x400B0028U) /**< \brief (DMAC) DMAC Channel Handler Enable Register */ +#define REG_DMAC_CHDR (0x400B002CU) /**< \brief (DMAC) DMAC Channel Handler Disable Register */ +#define REG_DMAC_CHSR (0x400B0030U) /**< \brief (DMAC) DMAC Channel Handler Status Register */ +#define REG_DMAC_SADDR0 (0x400B003CU) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 0) */ +#define REG_DMAC_DADDR0 (0x400B0040U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 0) */ +#define REG_DMAC_DSCR0 (0x400B0044U) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 0) */ +#define REG_DMAC_CTRLA0 (0x400B0048U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 0) */ +#define REG_DMAC_CTRLB0 (0x400B004CU) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 0) */ +#define REG_DMAC_CFG0 (0x400B0050U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 0) */ +#define REG_DMAC_SADDR1 (0x400B0064U) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 1) */ +#define REG_DMAC_DADDR1 (0x400B0068U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 1) */ +#define REG_DMAC_DSCR1 (0x400B006CU) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 1) */ +#define REG_DMAC_CTRLA1 (0x400B0070U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 1) */ +#define REG_DMAC_CTRLB1 (0x400B0074U) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 1) */ +#define REG_DMAC_CFG1 (0x400B0078U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 1) */ +#define REG_DMAC_SADDR2 (0x400B008CU) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 2) */ +#define REG_DMAC_DADDR2 (0x400B0090U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 2) */ +#define REG_DMAC_DSCR2 (0x400B0094U) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 2) */ +#define REG_DMAC_CTRLA2 (0x400B0098U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 2) */ +#define REG_DMAC_CTRLB2 (0x400B009CU) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 2) */ +#define REG_DMAC_CFG2 (0x400B00A0U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 2) */ +#define REG_DMAC_SADDR3 (0x400B00B4U) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 3) */ +#define REG_DMAC_DADDR3 (0x400B00B8U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 3) */ +#define REG_DMAC_DSCR3 (0x400B00BCU) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 3) */ +#define REG_DMAC_CTRLA3 (0x400B00C0U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 3) */ +#define REG_DMAC_CTRLB3 (0x400B00C4U) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 3) */ +#define REG_DMAC_CFG3 (0x400B00C8U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 3) */ +#else +#define REG_DMAC_GCFG (*(RwReg*)0x400B0000U) /**< \brief (DMAC) DMAC Global Configuration Register */ +#define REG_DMAC_EN (*(RwReg*)0x400B0004U) /**< \brief (DMAC) DMAC Enable Register */ +#define REG_DMAC_SREQ (*(RwReg*)0x400B0008U) /**< \brief (DMAC) DMAC Software Single Request Register */ +#define REG_DMAC_CREQ (*(RwReg*)0x400B000CU) /**< \brief (DMAC) DMAC Software Chunk Transfer Request Register */ +#define REG_DMAC_LAST (*(RwReg*)0x400B0010U) /**< \brief (DMAC) DMAC Software Last Transfer Flag Register */ +#define REG_DMAC_EBCIER (*(WoReg*)0x400B0018U) /**< \brief (DMAC) DMAC Error, Chained Buffer transfer completed and Buffer transfer completed Interrupt Enable register. */ +#define REG_DMAC_EBCIDR (*(WoReg*)0x400B001CU) /**< \brief (DMAC) DMAC Error, Chained Buffer transfer completed and Buffer transfer completed Interrupt Disable register. */ +#define REG_DMAC_EBCIMR (*(RoReg*)0x400B0020U) /**< \brief (DMAC) DMAC Error, Chained Buffer transfer completed and Buffer transfer completed Mask Register. */ +#define REG_DMAC_EBCISR (*(RoReg*)0x400B0024U) /**< \brief (DMAC) DMAC Error, Chained Buffer transfer completed and Buffer transfer completed Status Register. */ +#define REG_DMAC_CHER (*(WoReg*)0x400B0028U) /**< \brief (DMAC) DMAC Channel Handler Enable Register */ +#define REG_DMAC_CHDR (*(WoReg*)0x400B002CU) /**< \brief (DMAC) DMAC Channel Handler Disable Register */ +#define REG_DMAC_CHSR (*(RoReg*)0x400B0030U) /**< \brief (DMAC) DMAC Channel Handler Status Register */ +#define REG_DMAC_SADDR0 (*(RwReg*)0x400B003CU) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 0) */ +#define REG_DMAC_DADDR0 (*(RwReg*)0x400B0040U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 0) */ +#define REG_DMAC_DSCR0 (*(RwReg*)0x400B0044U) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 0) */ +#define REG_DMAC_CTRLA0 (*(RwReg*)0x400B0048U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 0) */ +#define REG_DMAC_CTRLB0 (*(RwReg*)0x400B004CU) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 0) */ +#define REG_DMAC_CFG0 (*(RwReg*)0x400B0050U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 0) */ +#define REG_DMAC_SADDR1 (*(RwReg*)0x400B0064U) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 1) */ +#define REG_DMAC_DADDR1 (*(RwReg*)0x400B0068U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 1) */ +#define REG_DMAC_DSCR1 (*(RwReg*)0x400B006CU) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 1) */ +#define REG_DMAC_CTRLA1 (*(RwReg*)0x400B0070U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 1) */ +#define REG_DMAC_CTRLB1 (*(RwReg*)0x400B0074U) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 1) */ +#define REG_DMAC_CFG1 (*(RwReg*)0x400B0078U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 1) */ +#define REG_DMAC_SADDR2 (*(RwReg*)0x400B008CU) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 2) */ +#define REG_DMAC_DADDR2 (*(RwReg*)0x400B0090U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 2) */ +#define REG_DMAC_DSCR2 (*(RwReg*)0x400B0094U) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 2) */ +#define REG_DMAC_CTRLA2 (*(RwReg*)0x400B0098U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 2) */ +#define REG_DMAC_CTRLB2 (*(RwReg*)0x400B009CU) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 2) */ +#define REG_DMAC_CFG2 (*(RwReg*)0x400B00A0U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 2) */ +#define REG_DMAC_SADDR3 (*(RwReg*)0x400B00B4U) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 3) */ +#define REG_DMAC_DADDR3 (*(RwReg*)0x400B00B8U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 3) */ +#define REG_DMAC_DSCR3 (*(RwReg*)0x400B00BCU) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 3) */ +#define REG_DMAC_CTRLA3 (*(RwReg*)0x400B00C0U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 3) */ +#define REG_DMAC_CTRLB3 (*(RwReg*)0x400B00C4U) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 3) */ +#define REG_DMAC_CFG3 (*(RwReg*)0x400B00C8U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 3) */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_DMAC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_efc0.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_efc0.h new file mode 100644 index 000000000..29041cd7b --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_efc0.h @@ -0,0 +1,46 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_EFC0_INSTANCE_ +#define _SAM3U_EFC0_INSTANCE_ + +/* ========== Register definition for EFC0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_EFC0_FMR (0x400E0800U) /**< \brief (EFC0) EEFC Flash Mode Register */ +#define REG_EFC0_FCR (0x400E0804U) /**< \brief (EFC0) EEFC Flash Command Register */ +#define REG_EFC0_FSR (0x400E0808U) /**< \brief (EFC0) EEFC Flash Status Register */ +#define REG_EFC0_FRR (0x400E080CU) /**< \brief (EFC0) EEFC Flash Result Register */ +#else +#define REG_EFC0_FMR (*(RwReg*)0x400E0800U) /**< \brief (EFC0) EEFC Flash Mode Register */ +#define REG_EFC0_FCR (*(WoReg*)0x400E0804U) /**< \brief (EFC0) EEFC Flash Command Register */ +#define REG_EFC0_FSR (*(RoReg*)0x400E0808U) /**< \brief (EFC0) EEFC Flash Status Register */ +#define REG_EFC0_FRR (*(RoReg*)0x400E080CU) /**< \brief (EFC0) EEFC Flash Result Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_EFC0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_efc1.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_efc1.h new file mode 100644 index 000000000..11f658759 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_efc1.h @@ -0,0 +1,46 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_EFC1_INSTANCE_ +#define _SAM3U_EFC1_INSTANCE_ + +/* ========== Register definition for EFC1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_EFC1_FMR (0x400E0A00U) /**< \brief (EFC1) EEFC Flash Mode Register */ +#define REG_EFC1_FCR (0x400E0A04U) /**< \brief (EFC1) EEFC Flash Command Register */ +#define REG_EFC1_FSR (0x400E0A08U) /**< \brief (EFC1) EEFC Flash Status Register */ +#define REG_EFC1_FRR (0x400E0A0CU) /**< \brief (EFC1) EEFC Flash Result Register */ +#else +#define REG_EFC1_FMR (*(RwReg*)0x400E0A00U) /**< \brief (EFC1) EEFC Flash Mode Register */ +#define REG_EFC1_FCR (*(WoReg*)0x400E0A04U) /**< \brief (EFC1) EEFC Flash Command Register */ +#define REG_EFC1_FSR (*(RoReg*)0x400E0A08U) /**< \brief (EFC1) EEFC Flash Status Register */ +#define REG_EFC1_FRR (*(RoReg*)0x400E0A0CU) /**< \brief (EFC1) EEFC Flash Result Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_EFC1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_gpbr.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_gpbr.h new file mode 100644 index 000000000..3558ec9ec --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_gpbr.h @@ -0,0 +1,40 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_GPBR_INSTANCE_ +#define _SAM3U_GPBR_INSTANCE_ + +/* ========== Register definition for GPBR peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_GPBR_GPBR (0x400E1290U) /**< \brief (GPBR) General Purpose Backup Register */ +#else +#define REG_GPBR_GPBR (*(RwReg*)0x400E1290U) /**< \brief (GPBR) General Purpose Backup Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_GPBR_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_hsmci.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_hsmci.h new file mode 100644 index 000000000..a69746c3c --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_hsmci.h @@ -0,0 +1,78 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_HSMCI_INSTANCE_ +#define _SAM3U_HSMCI_INSTANCE_ + +/* ========== Register definition for HSMCI peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_HSMCI_CR (0x40000000U) /**< \brief (HSMCI) Control Register */ +#define REG_HSMCI_MR (0x40000004U) /**< \brief (HSMCI) Mode Register */ +#define REG_HSMCI_DTOR (0x40000008U) /**< \brief (HSMCI) Data Timeout Register */ +#define REG_HSMCI_SDCR (0x4000000CU) /**< \brief (HSMCI) SD/SDIO Card Register */ +#define REG_HSMCI_ARGR (0x40000010U) /**< \brief (HSMCI) Argument Register */ +#define REG_HSMCI_CMDR (0x40000014U) /**< \brief (HSMCI) Command Register */ +#define REG_HSMCI_BLKR (0x40000018U) /**< \brief (HSMCI) Block Register */ +#define REG_HSMCI_CSTOR (0x4000001CU) /**< \brief (HSMCI) Completion Signal Timeout Register */ +#define REG_HSMCI_RSPR (0x40000020U) /**< \brief (HSMCI) Response Register */ +#define REG_HSMCI_RDR (0x40000030U) /**< \brief (HSMCI) Receive Data Register */ +#define REG_HSMCI_TDR (0x40000034U) /**< \brief (HSMCI) Transmit Data Register */ +#define REG_HSMCI_SR (0x40000040U) /**< \brief (HSMCI) Status Register */ +#define REG_HSMCI_IER (0x40000044U) /**< \brief (HSMCI) Interrupt Enable Register */ +#define REG_HSMCI_IDR (0x40000048U) /**< \brief (HSMCI) Interrupt Disable Register */ +#define REG_HSMCI_IMR (0x4000004CU) /**< \brief (HSMCI) Interrupt Mask Register */ +#define REG_HSMCI_DMA (0x40000050U) /**< \brief (HSMCI) DMA Configuration Register */ +#define REG_HSMCI_CFG (0x40000054U) /**< \brief (HSMCI) Configuration Register */ +#define REG_HSMCI_WPMR (0x400000E4U) /**< \brief (HSMCI) Write Protection Mode Register */ +#define REG_HSMCI_WPSR (0x400000E8U) /**< \brief (HSMCI) Write Protection Status Register */ +#define REG_HSMCI_FIFO (0x40000200U) /**< \brief (HSMCI) FIFO Memory Aperture0 */ +#else +#define REG_HSMCI_CR (*(WoReg*)0x40000000U) /**< \brief (HSMCI) Control Register */ +#define REG_HSMCI_MR (*(RwReg*)0x40000004U) /**< \brief (HSMCI) Mode Register */ +#define REG_HSMCI_DTOR (*(RwReg*)0x40000008U) /**< \brief (HSMCI) Data Timeout Register */ +#define REG_HSMCI_SDCR (*(RwReg*)0x4000000CU) /**< \brief (HSMCI) SD/SDIO Card Register */ +#define REG_HSMCI_ARGR (*(RwReg*)0x40000010U) /**< \brief (HSMCI) Argument Register */ +#define REG_HSMCI_CMDR (*(WoReg*)0x40000014U) /**< \brief (HSMCI) Command Register */ +#define REG_HSMCI_BLKR (*(RwReg*)0x40000018U) /**< \brief (HSMCI) Block Register */ +#define REG_HSMCI_CSTOR (*(RwReg*)0x4000001CU) /**< \brief (HSMCI) Completion Signal Timeout Register */ +#define REG_HSMCI_RSPR (*(RoReg*)0x40000020U) /**< \brief (HSMCI) Response Register */ +#define REG_HSMCI_RDR (*(RoReg*)0x40000030U) /**< \brief (HSMCI) Receive Data Register */ +#define REG_HSMCI_TDR (*(WoReg*)0x40000034U) /**< \brief (HSMCI) Transmit Data Register */ +#define REG_HSMCI_SR (*(RoReg*)0x40000040U) /**< \brief (HSMCI) Status Register */ +#define REG_HSMCI_IER (*(WoReg*)0x40000044U) /**< \brief (HSMCI) Interrupt Enable Register */ +#define REG_HSMCI_IDR (*(WoReg*)0x40000048U) /**< \brief (HSMCI) Interrupt Disable Register */ +#define REG_HSMCI_IMR (*(RoReg*)0x4000004CU) /**< \brief (HSMCI) Interrupt Mask Register */ +#define REG_HSMCI_DMA (*(RwReg*)0x40000050U) /**< \brief (HSMCI) DMA Configuration Register */ +#define REG_HSMCI_CFG (*(RwReg*)0x40000054U) /**< \brief (HSMCI) Configuration Register */ +#define REG_HSMCI_WPMR (*(RwReg*)0x400000E4U) /**< \brief (HSMCI) Write Protection Mode Register */ +#define REG_HSMCI_WPSR (*(RoReg*)0x400000E8U) /**< \brief (HSMCI) Write Protection Status Register */ +#define REG_HSMCI_FIFO (*(RwReg*)0x40000200U) /**< \brief (HSMCI) FIFO Memory Aperture0 */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_HSMCI_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_matrix.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_matrix.h new file mode 100644 index 000000000..ed178fed0 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_matrix.h @@ -0,0 +1,68 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_MATRIX_INSTANCE_ +#define _SAM3U_MATRIX_INSTANCE_ + +/* ========== Register definition for MATRIX peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_MATRIX_MCFG (0x400E0200U) /**< \brief (MATRIX) Master Configuration Register */ +#define REG_MATRIX_SCFG (0x400E0240U) /**< \brief (MATRIX) Slave Configuration Register */ +#define REG_MATRIX_PRAS0 (0x400E0280U) /**< \brief (MATRIX) Priority Register A for Slave 0 */ +#define REG_MATRIX_PRAS1 (0x400E0288U) /**< \brief (MATRIX) Priority Register A for Slave 1 */ +#define REG_MATRIX_PRAS2 (0x400E0290U) /**< \brief (MATRIX) Priority Register A for Slave 2 */ +#define REG_MATRIX_PRAS3 (0x400E0298U) /**< \brief (MATRIX) Priority Register A for Slave 3 */ +#define REG_MATRIX_PRAS4 (0x400E02A0U) /**< \brief (MATRIX) Priority Register A for Slave 4 */ +#define REG_MATRIX_PRAS5 (0x400E02A8U) /**< \brief (MATRIX) Priority Register A for Slave 5 */ +#define REG_MATRIX_PRAS6 (0x400E02B0U) /**< \brief (MATRIX) Priority Register A for Slave 6 */ +#define REG_MATRIX_PRAS7 (0x400E02B8U) /**< \brief (MATRIX) Priority Register A for Slave 7 */ +#define REG_MATRIX_PRAS8 (0x400E02C0U) /**< \brief (MATRIX) Priority Register A for Slave 8 */ +#define REG_MATRIX_PRAS9 (0x400E02C8U) /**< \brief (MATRIX) Priority Register A for Slave 9 */ +#define REG_MATRIX_MRCR (0x400E0300U) /**< \brief (MATRIX) Master Remap Control Register */ +#define REG_MATRIX_WPMR (0x400E03E4U) /**< \brief (MATRIX) Write Protect Mode Register */ +#define REG_MATRIX_WPSR (0x400E03E8U) /**< \brief (MATRIX) Write Protect Status Register */ +#else +#define REG_MATRIX_MCFG (*(RwReg*)0x400E0200U) /**< \brief (MATRIX) Master Configuration Register */ +#define REG_MATRIX_SCFG (*(RwReg*)0x400E0240U) /**< \brief (MATRIX) Slave Configuration Register */ +#define REG_MATRIX_PRAS0 (*(RwReg*)0x400E0280U) /**< \brief (MATRIX) Priority Register A for Slave 0 */ +#define REG_MATRIX_PRAS1 (*(RwReg*)0x400E0288U) /**< \brief (MATRIX) Priority Register A for Slave 1 */ +#define REG_MATRIX_PRAS2 (*(RwReg*)0x400E0290U) /**< \brief (MATRIX) Priority Register A for Slave 2 */ +#define REG_MATRIX_PRAS3 (*(RwReg*)0x400E0298U) /**< \brief (MATRIX) Priority Register A for Slave 3 */ +#define REG_MATRIX_PRAS4 (*(RwReg*)0x400E02A0U) /**< \brief (MATRIX) Priority Register A for Slave 4 */ +#define REG_MATRIX_PRAS5 (*(RwReg*)0x400E02A8U) /**< \brief (MATRIX) Priority Register A for Slave 5 */ +#define REG_MATRIX_PRAS6 (*(RwReg*)0x400E02B0U) /**< \brief (MATRIX) Priority Register A for Slave 6 */ +#define REG_MATRIX_PRAS7 (*(RwReg*)0x400E02B8U) /**< \brief (MATRIX) Priority Register A for Slave 7 */ +#define REG_MATRIX_PRAS8 (*(RwReg*)0x400E02C0U) /**< \brief (MATRIX) Priority Register A for Slave 8 */ +#define REG_MATRIX_PRAS9 (*(RwReg*)0x400E02C8U) /**< \brief (MATRIX) Priority Register A for Slave 9 */ +#define REG_MATRIX_MRCR (*(RwReg*)0x400E0300U) /**< \brief (MATRIX) Master Remap Control Register */ +#define REG_MATRIX_WPMR (*(RwReg*)0x400E03E4U) /**< \brief (MATRIX) Write Protect Mode Register */ +#define REG_MATRIX_WPSR (*(RoReg*)0x400E03E8U) /**< \brief (MATRIX) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_MATRIX_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_pioa.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_pioa.h new file mode 100644 index 000000000..3cecfbf82 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_pioa.h @@ -0,0 +1,124 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_PIOA_INSTANCE_ +#define _SAM3U_PIOA_INSTANCE_ + +/* ========== Register definition for PIOA peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PIOA_PER (0x400E0C00U) /**< \brief (PIOA) PIO Enable Register */ +#define REG_PIOA_PDR (0x400E0C04U) /**< \brief (PIOA) PIO Disable Register */ +#define REG_PIOA_PSR (0x400E0C08U) /**< \brief (PIOA) PIO Status Register */ +#define REG_PIOA_OER (0x400E0C10U) /**< \brief (PIOA) Output Enable Register */ +#define REG_PIOA_ODR (0x400E0C14U) /**< \brief (PIOA) Output Disable Register */ +#define REG_PIOA_OSR (0x400E0C18U) /**< \brief (PIOA) Output Status Register */ +#define REG_PIOA_IFER (0x400E0C20U) /**< \brief (PIOA) Glitch Input Filter Enable Register */ +#define REG_PIOA_IFDR (0x400E0C24U) /**< \brief (PIOA) Glitch Input Filter Disable Register */ +#define REG_PIOA_IFSR (0x400E0C28U) /**< \brief (PIOA) Glitch Input Filter Status Register */ +#define REG_PIOA_SODR (0x400E0C30U) /**< \brief (PIOA) Set Output Data Register */ +#define REG_PIOA_CODR (0x400E0C34U) /**< \brief (PIOA) Clear Output Data Register */ +#define REG_PIOA_ODSR (0x400E0C38U) /**< \brief (PIOA) Output Data Status Register */ +#define REG_PIOA_PDSR (0x400E0C3CU) /**< \brief (PIOA) Pin Data Status Register */ +#define REG_PIOA_IER (0x400E0C40U) /**< \brief (PIOA) Interrupt Enable Register */ +#define REG_PIOA_IDR (0x400E0C44U) /**< \brief (PIOA) Interrupt Disable Register */ +#define REG_PIOA_IMR (0x400E0C48U) /**< \brief (PIOA) Interrupt Mask Register */ +#define REG_PIOA_ISR (0x400E0C4CU) /**< \brief (PIOA) Interrupt Status Register */ +#define REG_PIOA_MDER (0x400E0C50U) /**< \brief (PIOA) Multi-driver Enable Register */ +#define REG_PIOA_MDDR (0x400E0C54U) /**< \brief (PIOA) Multi-driver Disable Register */ +#define REG_PIOA_MDSR (0x400E0C58U) /**< \brief (PIOA) Multi-driver Status Register */ +#define REG_PIOA_PUDR (0x400E0C60U) /**< \brief (PIOA) Pull-up Disable Register */ +#define REG_PIOA_PUER (0x400E0C64U) /**< \brief (PIOA) Pull-up Enable Register */ +#define REG_PIOA_PUSR (0x400E0C68U) /**< \brief (PIOA) Pad Pull-up Status Register */ +#define REG_PIOA_ABSR (0x400E0C70U) /**< \brief (PIOA) Peripheral AB Select Register */ +#define REG_PIOA_SCIFSR (0x400E0C80U) /**< \brief (PIOA) System Clock Glitch Input Filter Select Register */ +#define REG_PIOA_DIFSR (0x400E0C84U) /**< \brief (PIOA) Debouncing Input Filter Select Register */ +#define REG_PIOA_IFDGSR (0x400E0C88U) /**< \brief (PIOA) Glitch or Debouncing Input Filter Clock Selection Status Register */ +#define REG_PIOA_SCDR (0x400E0C8CU) /**< \brief (PIOA) Slow Clock Divider Debouncing Register */ +#define REG_PIOA_OWER (0x400E0CA0U) /**< \brief (PIOA) Output Write Enable */ +#define REG_PIOA_OWDR (0x400E0CA4U) /**< \brief (PIOA) Output Write Disable */ +#define REG_PIOA_OWSR (0x400E0CA8U) /**< \brief (PIOA) Output Write Status Register */ +#define REG_PIOA_AIMER (0x400E0CB0U) /**< \brief (PIOA) Additional Interrupt Modes Enable Register */ +#define REG_PIOA_AIMDR (0x400E0CB4U) /**< \brief (PIOA) Additional Interrupt Modes Disables Register */ +#define REG_PIOA_AIMMR (0x400E0CB8U) /**< \brief (PIOA) Additional Interrupt Modes Mask Register */ +#define REG_PIOA_ESR (0x400E0CC0U) /**< \brief (PIOA) Edge Select Register */ +#define REG_PIOA_LSR (0x400E0CC4U) /**< \brief (PIOA) Level Select Register */ +#define REG_PIOA_ELSR (0x400E0CC8U) /**< \brief (PIOA) Edge/Level Status Register */ +#define REG_PIOA_FELLSR (0x400E0CD0U) /**< \brief (PIOA) Falling Edge/Low Level Select Register */ +#define REG_PIOA_REHLSR (0x400E0CD4U) /**< \brief (PIOA) Rising Edge/ High Level Select Register */ +#define REG_PIOA_FRLHSR (0x400E0CD8U) /**< \brief (PIOA) Fall/Rise - Low/High Status Register */ +#define REG_PIOA_LOCKSR (0x400E0CE0U) /**< \brief (PIOA) Lock Status */ +#define REG_PIOA_WPMR (0x400E0CE4U) /**< \brief (PIOA) Write Protect Mode Register */ +#define REG_PIOA_WPSR (0x400E0CE8U) /**< \brief (PIOA) Write Protect Status Register */ +#else +#define REG_PIOA_PER (*(WoReg*)0x400E0C00U) /**< \brief (PIOA) PIO Enable Register */ +#define REG_PIOA_PDR (*(WoReg*)0x400E0C04U) /**< \brief (PIOA) PIO Disable Register */ +#define REG_PIOA_PSR (*(RoReg*)0x400E0C08U) /**< \brief (PIOA) PIO Status Register */ +#define REG_PIOA_OER (*(WoReg*)0x400E0C10U) /**< \brief (PIOA) Output Enable Register */ +#define REG_PIOA_ODR (*(WoReg*)0x400E0C14U) /**< \brief (PIOA) Output Disable Register */ +#define REG_PIOA_OSR (*(RoReg*)0x400E0C18U) /**< \brief (PIOA) Output Status Register */ +#define REG_PIOA_IFER (*(WoReg*)0x400E0C20U) /**< \brief (PIOA) Glitch Input Filter Enable Register */ +#define REG_PIOA_IFDR (*(WoReg*)0x400E0C24U) /**< \brief (PIOA) Glitch Input Filter Disable Register */ +#define REG_PIOA_IFSR (*(RoReg*)0x400E0C28U) /**< \brief (PIOA) Glitch Input Filter Status Register */ +#define REG_PIOA_SODR (*(WoReg*)0x400E0C30U) /**< \brief (PIOA) Set Output Data Register */ +#define REG_PIOA_CODR (*(WoReg*)0x400E0C34U) /**< \brief (PIOA) Clear Output Data Register */ +#define REG_PIOA_ODSR (*(RwReg*)0x400E0C38U) /**< \brief (PIOA) Output Data Status Register */ +#define REG_PIOA_PDSR (*(RoReg*)0x400E0C3CU) /**< \brief (PIOA) Pin Data Status Register */ +#define REG_PIOA_IER (*(WoReg*)0x400E0C40U) /**< \brief (PIOA) Interrupt Enable Register */ +#define REG_PIOA_IDR (*(WoReg*)0x400E0C44U) /**< \brief (PIOA) Interrupt Disable Register */ +#define REG_PIOA_IMR (*(RoReg*)0x400E0C48U) /**< \brief (PIOA) Interrupt Mask Register */ +#define REG_PIOA_ISR (*(RoReg*)0x400E0C4CU) /**< \brief (PIOA) Interrupt Status Register */ +#define REG_PIOA_MDER (*(WoReg*)0x400E0C50U) /**< \brief (PIOA) Multi-driver Enable Register */ +#define REG_PIOA_MDDR (*(WoReg*)0x400E0C54U) /**< \brief (PIOA) Multi-driver Disable Register */ +#define REG_PIOA_MDSR (*(RoReg*)0x400E0C58U) /**< \brief (PIOA) Multi-driver Status Register */ +#define REG_PIOA_PUDR (*(WoReg*)0x400E0C60U) /**< \brief (PIOA) Pull-up Disable Register */ +#define REG_PIOA_PUER (*(WoReg*)0x400E0C64U) /**< \brief (PIOA) Pull-up Enable Register */ +#define REG_PIOA_PUSR (*(RoReg*)0x400E0C68U) /**< \brief (PIOA) Pad Pull-up Status Register */ +#define REG_PIOA_ABSR (*(RwReg*)0x400E0C70U) /**< \brief (PIOA) Peripheral AB Select Register */ +#define REG_PIOA_SCIFSR (*(WoReg*)0x400E0C80U) /**< \brief (PIOA) System Clock Glitch Input Filter Select Register */ +#define REG_PIOA_DIFSR (*(WoReg*)0x400E0C84U) /**< \brief (PIOA) Debouncing Input Filter Select Register */ +#define REG_PIOA_IFDGSR (*(RoReg*)0x400E0C88U) /**< \brief (PIOA) Glitch or Debouncing Input Filter Clock Selection Status Register */ +#define REG_PIOA_SCDR (*(RwReg*)0x400E0C8CU) /**< \brief (PIOA) Slow Clock Divider Debouncing Register */ +#define REG_PIOA_OWER (*(WoReg*)0x400E0CA0U) /**< \brief (PIOA) Output Write Enable */ +#define REG_PIOA_OWDR (*(WoReg*)0x400E0CA4U) /**< \brief (PIOA) Output Write Disable */ +#define REG_PIOA_OWSR (*(RoReg*)0x400E0CA8U) /**< \brief (PIOA) Output Write Status Register */ +#define REG_PIOA_AIMER (*(WoReg*)0x400E0CB0U) /**< \brief (PIOA) Additional Interrupt Modes Enable Register */ +#define REG_PIOA_AIMDR (*(WoReg*)0x400E0CB4U) /**< \brief (PIOA) Additional Interrupt Modes Disables Register */ +#define REG_PIOA_AIMMR (*(RoReg*)0x400E0CB8U) /**< \brief (PIOA) Additional Interrupt Modes Mask Register */ +#define REG_PIOA_ESR (*(WoReg*)0x400E0CC0U) /**< \brief (PIOA) Edge Select Register */ +#define REG_PIOA_LSR (*(WoReg*)0x400E0CC4U) /**< \brief (PIOA) Level Select Register */ +#define REG_PIOA_ELSR (*(RoReg*)0x400E0CC8U) /**< \brief (PIOA) Edge/Level Status Register */ +#define REG_PIOA_FELLSR (*(WoReg*)0x400E0CD0U) /**< \brief (PIOA) Falling Edge/Low Level Select Register */ +#define REG_PIOA_REHLSR (*(WoReg*)0x400E0CD4U) /**< \brief (PIOA) Rising Edge/ High Level Select Register */ +#define REG_PIOA_FRLHSR (*(RoReg*)0x400E0CD8U) /**< \brief (PIOA) Fall/Rise - Low/High Status Register */ +#define REG_PIOA_LOCKSR (*(RoReg*)0x400E0CE0U) /**< \brief (PIOA) Lock Status */ +#define REG_PIOA_WPMR (*(RwReg*)0x400E0CE4U) /**< \brief (PIOA) Write Protect Mode Register */ +#define REG_PIOA_WPSR (*(RoReg*)0x400E0CE8U) /**< \brief (PIOA) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_PIOA_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_piob.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_piob.h new file mode 100644 index 000000000..a0ad5631b --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_piob.h @@ -0,0 +1,124 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_PIOB_INSTANCE_ +#define _SAM3U_PIOB_INSTANCE_ + +/* ========== Register definition for PIOB peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PIOB_PER (0x400E0E00U) /**< \brief (PIOB) PIO Enable Register */ +#define REG_PIOB_PDR (0x400E0E04U) /**< \brief (PIOB) PIO Disable Register */ +#define REG_PIOB_PSR (0x400E0E08U) /**< \brief (PIOB) PIO Status Register */ +#define REG_PIOB_OER (0x400E0E10U) /**< \brief (PIOB) Output Enable Register */ +#define REG_PIOB_ODR (0x400E0E14U) /**< \brief (PIOB) Output Disable Register */ +#define REG_PIOB_OSR (0x400E0E18U) /**< \brief (PIOB) Output Status Register */ +#define REG_PIOB_IFER (0x400E0E20U) /**< \brief (PIOB) Glitch Input Filter Enable Register */ +#define REG_PIOB_IFDR (0x400E0E24U) /**< \brief (PIOB) Glitch Input Filter Disable Register */ +#define REG_PIOB_IFSR (0x400E0E28U) /**< \brief (PIOB) Glitch Input Filter Status Register */ +#define REG_PIOB_SODR (0x400E0E30U) /**< \brief (PIOB) Set Output Data Register */ +#define REG_PIOB_CODR (0x400E0E34U) /**< \brief (PIOB) Clear Output Data Register */ +#define REG_PIOB_ODSR (0x400E0E38U) /**< \brief (PIOB) Output Data Status Register */ +#define REG_PIOB_PDSR (0x400E0E3CU) /**< \brief (PIOB) Pin Data Status Register */ +#define REG_PIOB_IER (0x400E0E40U) /**< \brief (PIOB) Interrupt Enable Register */ +#define REG_PIOB_IDR (0x400E0E44U) /**< \brief (PIOB) Interrupt Disable Register */ +#define REG_PIOB_IMR (0x400E0E48U) /**< \brief (PIOB) Interrupt Mask Register */ +#define REG_PIOB_ISR (0x400E0E4CU) /**< \brief (PIOB) Interrupt Status Register */ +#define REG_PIOB_MDER (0x400E0E50U) /**< \brief (PIOB) Multi-driver Enable Register */ +#define REG_PIOB_MDDR (0x400E0E54U) /**< \brief (PIOB) Multi-driver Disable Register */ +#define REG_PIOB_MDSR (0x400E0E58U) /**< \brief (PIOB) Multi-driver Status Register */ +#define REG_PIOB_PUDR (0x400E0E60U) /**< \brief (PIOB) Pull-up Disable Register */ +#define REG_PIOB_PUER (0x400E0E64U) /**< \brief (PIOB) Pull-up Enable Register */ +#define REG_PIOB_PUSR (0x400E0E68U) /**< \brief (PIOB) Pad Pull-up Status Register */ +#define REG_PIOB_ABSR (0x400E0E70U) /**< \brief (PIOB) Peripheral AB Select Register */ +#define REG_PIOB_SCIFSR (0x400E0E80U) /**< \brief (PIOB) System Clock Glitch Input Filter Select Register */ +#define REG_PIOB_DIFSR (0x400E0E84U) /**< \brief (PIOB) Debouncing Input Filter Select Register */ +#define REG_PIOB_IFDGSR (0x400E0E88U) /**< \brief (PIOB) Glitch or Debouncing Input Filter Clock Selection Status Register */ +#define REG_PIOB_SCDR (0x400E0E8CU) /**< \brief (PIOB) Slow Clock Divider Debouncing Register */ +#define REG_PIOB_OWER (0x400E0EA0U) /**< \brief (PIOB) Output Write Enable */ +#define REG_PIOB_OWDR (0x400E0EA4U) /**< \brief (PIOB) Output Write Disable */ +#define REG_PIOB_OWSR (0x400E0EA8U) /**< \brief (PIOB) Output Write Status Register */ +#define REG_PIOB_AIMER (0x400E0EB0U) /**< \brief (PIOB) Additional Interrupt Modes Enable Register */ +#define REG_PIOB_AIMDR (0x400E0EB4U) /**< \brief (PIOB) Additional Interrupt Modes Disables Register */ +#define REG_PIOB_AIMMR (0x400E0EB8U) /**< \brief (PIOB) Additional Interrupt Modes Mask Register */ +#define REG_PIOB_ESR (0x400E0EC0U) /**< \brief (PIOB) Edge Select Register */ +#define REG_PIOB_LSR (0x400E0EC4U) /**< \brief (PIOB) Level Select Register */ +#define REG_PIOB_ELSR (0x400E0EC8U) /**< \brief (PIOB) Edge/Level Status Register */ +#define REG_PIOB_FELLSR (0x400E0ED0U) /**< \brief (PIOB) Falling Edge/Low Level Select Register */ +#define REG_PIOB_REHLSR (0x400E0ED4U) /**< \brief (PIOB) Rising Edge/ High Level Select Register */ +#define REG_PIOB_FRLHSR (0x400E0ED8U) /**< \brief (PIOB) Fall/Rise - Low/High Status Register */ +#define REG_PIOB_LOCKSR (0x400E0EE0U) /**< \brief (PIOB) Lock Status */ +#define REG_PIOB_WPMR (0x400E0EE4U) /**< \brief (PIOB) Write Protect Mode Register */ +#define REG_PIOB_WPSR (0x400E0EE8U) /**< \brief (PIOB) Write Protect Status Register */ +#else +#define REG_PIOB_PER (*(WoReg*)0x400E0E00U) /**< \brief (PIOB) PIO Enable Register */ +#define REG_PIOB_PDR (*(WoReg*)0x400E0E04U) /**< \brief (PIOB) PIO Disable Register */ +#define REG_PIOB_PSR (*(RoReg*)0x400E0E08U) /**< \brief (PIOB) PIO Status Register */ +#define REG_PIOB_OER (*(WoReg*)0x400E0E10U) /**< \brief (PIOB) Output Enable Register */ +#define REG_PIOB_ODR (*(WoReg*)0x400E0E14U) /**< \brief (PIOB) Output Disable Register */ +#define REG_PIOB_OSR (*(RoReg*)0x400E0E18U) /**< \brief (PIOB) Output Status Register */ +#define REG_PIOB_IFER (*(WoReg*)0x400E0E20U) /**< \brief (PIOB) Glitch Input Filter Enable Register */ +#define REG_PIOB_IFDR (*(WoReg*)0x400E0E24U) /**< \brief (PIOB) Glitch Input Filter Disable Register */ +#define REG_PIOB_IFSR (*(RoReg*)0x400E0E28U) /**< \brief (PIOB) Glitch Input Filter Status Register */ +#define REG_PIOB_SODR (*(WoReg*)0x400E0E30U) /**< \brief (PIOB) Set Output Data Register */ +#define REG_PIOB_CODR (*(WoReg*)0x400E0E34U) /**< \brief (PIOB) Clear Output Data Register */ +#define REG_PIOB_ODSR (*(RwReg*)0x400E0E38U) /**< \brief (PIOB) Output Data Status Register */ +#define REG_PIOB_PDSR (*(RoReg*)0x400E0E3CU) /**< \brief (PIOB) Pin Data Status Register */ +#define REG_PIOB_IER (*(WoReg*)0x400E0E40U) /**< \brief (PIOB) Interrupt Enable Register */ +#define REG_PIOB_IDR (*(WoReg*)0x400E0E44U) /**< \brief (PIOB) Interrupt Disable Register */ +#define REG_PIOB_IMR (*(RoReg*)0x400E0E48U) /**< \brief (PIOB) Interrupt Mask Register */ +#define REG_PIOB_ISR (*(RoReg*)0x400E0E4CU) /**< \brief (PIOB) Interrupt Status Register */ +#define REG_PIOB_MDER (*(WoReg*)0x400E0E50U) /**< \brief (PIOB) Multi-driver Enable Register */ +#define REG_PIOB_MDDR (*(WoReg*)0x400E0E54U) /**< \brief (PIOB) Multi-driver Disable Register */ +#define REG_PIOB_MDSR (*(RoReg*)0x400E0E58U) /**< \brief (PIOB) Multi-driver Status Register */ +#define REG_PIOB_PUDR (*(WoReg*)0x400E0E60U) /**< \brief (PIOB) Pull-up Disable Register */ +#define REG_PIOB_PUER (*(WoReg*)0x400E0E64U) /**< \brief (PIOB) Pull-up Enable Register */ +#define REG_PIOB_PUSR (*(RoReg*)0x400E0E68U) /**< \brief (PIOB) Pad Pull-up Status Register */ +#define REG_PIOB_ABSR (*(RwReg*)0x400E0E70U) /**< \brief (PIOB) Peripheral AB Select Register */ +#define REG_PIOB_SCIFSR (*(WoReg*)0x400E0E80U) /**< \brief (PIOB) System Clock Glitch Input Filter Select Register */ +#define REG_PIOB_DIFSR (*(WoReg*)0x400E0E84U) /**< \brief (PIOB) Debouncing Input Filter Select Register */ +#define REG_PIOB_IFDGSR (*(RoReg*)0x400E0E88U) /**< \brief (PIOB) Glitch or Debouncing Input Filter Clock Selection Status Register */ +#define REG_PIOB_SCDR (*(RwReg*)0x400E0E8CU) /**< \brief (PIOB) Slow Clock Divider Debouncing Register */ +#define REG_PIOB_OWER (*(WoReg*)0x400E0EA0U) /**< \brief (PIOB) Output Write Enable */ +#define REG_PIOB_OWDR (*(WoReg*)0x400E0EA4U) /**< \brief (PIOB) Output Write Disable */ +#define REG_PIOB_OWSR (*(RoReg*)0x400E0EA8U) /**< \brief (PIOB) Output Write Status Register */ +#define REG_PIOB_AIMER (*(WoReg*)0x400E0EB0U) /**< \brief (PIOB) Additional Interrupt Modes Enable Register */ +#define REG_PIOB_AIMDR (*(WoReg*)0x400E0EB4U) /**< \brief (PIOB) Additional Interrupt Modes Disables Register */ +#define REG_PIOB_AIMMR (*(RoReg*)0x400E0EB8U) /**< \brief (PIOB) Additional Interrupt Modes Mask Register */ +#define REG_PIOB_ESR (*(WoReg*)0x400E0EC0U) /**< \brief (PIOB) Edge Select Register */ +#define REG_PIOB_LSR (*(WoReg*)0x400E0EC4U) /**< \brief (PIOB) Level Select Register */ +#define REG_PIOB_ELSR (*(RoReg*)0x400E0EC8U) /**< \brief (PIOB) Edge/Level Status Register */ +#define REG_PIOB_FELLSR (*(WoReg*)0x400E0ED0U) /**< \brief (PIOB) Falling Edge/Low Level Select Register */ +#define REG_PIOB_REHLSR (*(WoReg*)0x400E0ED4U) /**< \brief (PIOB) Rising Edge/ High Level Select Register */ +#define REG_PIOB_FRLHSR (*(RoReg*)0x400E0ED8U) /**< \brief (PIOB) Fall/Rise - Low/High Status Register */ +#define REG_PIOB_LOCKSR (*(RoReg*)0x400E0EE0U) /**< \brief (PIOB) Lock Status */ +#define REG_PIOB_WPMR (*(RwReg*)0x400E0EE4U) /**< \brief (PIOB) Write Protect Mode Register */ +#define REG_PIOB_WPSR (*(RoReg*)0x400E0EE8U) /**< \brief (PIOB) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_PIOB_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_pioc.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_pioc.h new file mode 100644 index 000000000..f746e2c23 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_pioc.h @@ -0,0 +1,124 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_PIOC_INSTANCE_ +#define _SAM3U_PIOC_INSTANCE_ + +/* ========== Register definition for PIOC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PIOC_PER (0x400E1000U) /**< \brief (PIOC) PIO Enable Register */ +#define REG_PIOC_PDR (0x400E1004U) /**< \brief (PIOC) PIO Disable Register */ +#define REG_PIOC_PSR (0x400E1008U) /**< \brief (PIOC) PIO Status Register */ +#define REG_PIOC_OER (0x400E1010U) /**< \brief (PIOC) Output Enable Register */ +#define REG_PIOC_ODR (0x400E1014U) /**< \brief (PIOC) Output Disable Register */ +#define REG_PIOC_OSR (0x400E1018U) /**< \brief (PIOC) Output Status Register */ +#define REG_PIOC_IFER (0x400E1020U) /**< \brief (PIOC) Glitch Input Filter Enable Register */ +#define REG_PIOC_IFDR (0x400E1024U) /**< \brief (PIOC) Glitch Input Filter Disable Register */ +#define REG_PIOC_IFSR (0x400E1028U) /**< \brief (PIOC) Glitch Input Filter Status Register */ +#define REG_PIOC_SODR (0x400E1030U) /**< \brief (PIOC) Set Output Data Register */ +#define REG_PIOC_CODR (0x400E1034U) /**< \brief (PIOC) Clear Output Data Register */ +#define REG_PIOC_ODSR (0x400E1038U) /**< \brief (PIOC) Output Data Status Register */ +#define REG_PIOC_PDSR (0x400E103CU) /**< \brief (PIOC) Pin Data Status Register */ +#define REG_PIOC_IER (0x400E1040U) /**< \brief (PIOC) Interrupt Enable Register */ +#define REG_PIOC_IDR (0x400E1044U) /**< \brief (PIOC) Interrupt Disable Register */ +#define REG_PIOC_IMR (0x400E1048U) /**< \brief (PIOC) Interrupt Mask Register */ +#define REG_PIOC_ISR (0x400E104CU) /**< \brief (PIOC) Interrupt Status Register */ +#define REG_PIOC_MDER (0x400E1050U) /**< \brief (PIOC) Multi-driver Enable Register */ +#define REG_PIOC_MDDR (0x400E1054U) /**< \brief (PIOC) Multi-driver Disable Register */ +#define REG_PIOC_MDSR (0x400E1058U) /**< \brief (PIOC) Multi-driver Status Register */ +#define REG_PIOC_PUDR (0x400E1060U) /**< \brief (PIOC) Pull-up Disable Register */ +#define REG_PIOC_PUER (0x400E1064U) /**< \brief (PIOC) Pull-up Enable Register */ +#define REG_PIOC_PUSR (0x400E1068U) /**< \brief (PIOC) Pad Pull-up Status Register */ +#define REG_PIOC_ABSR (0x400E1070U) /**< \brief (PIOC) Peripheral AB Select Register */ +#define REG_PIOC_SCIFSR (0x400E1080U) /**< \brief (PIOC) System Clock Glitch Input Filter Select Register */ +#define REG_PIOC_DIFSR (0x400E1084U) /**< \brief (PIOC) Debouncing Input Filter Select Register */ +#define REG_PIOC_IFDGSR (0x400E1088U) /**< \brief (PIOC) Glitch or Debouncing Input Filter Clock Selection Status Register */ +#define REG_PIOC_SCDR (0x400E108CU) /**< \brief (PIOC) Slow Clock Divider Debouncing Register */ +#define REG_PIOC_OWER (0x400E10A0U) /**< \brief (PIOC) Output Write Enable */ +#define REG_PIOC_OWDR (0x400E10A4U) /**< \brief (PIOC) Output Write Disable */ +#define REG_PIOC_OWSR (0x400E10A8U) /**< \brief (PIOC) Output Write Status Register */ +#define REG_PIOC_AIMER (0x400E10B0U) /**< \brief (PIOC) Additional Interrupt Modes Enable Register */ +#define REG_PIOC_AIMDR (0x400E10B4U) /**< \brief (PIOC) Additional Interrupt Modes Disables Register */ +#define REG_PIOC_AIMMR (0x400E10B8U) /**< \brief (PIOC) Additional Interrupt Modes Mask Register */ +#define REG_PIOC_ESR (0x400E10C0U) /**< \brief (PIOC) Edge Select Register */ +#define REG_PIOC_LSR (0x400E10C4U) /**< \brief (PIOC) Level Select Register */ +#define REG_PIOC_ELSR (0x400E10C8U) /**< \brief (PIOC) Edge/Level Status Register */ +#define REG_PIOC_FELLSR (0x400E10D0U) /**< \brief (PIOC) Falling Edge/Low Level Select Register */ +#define REG_PIOC_REHLSR (0x400E10D4U) /**< \brief (PIOC) Rising Edge/ High Level Select Register */ +#define REG_PIOC_FRLHSR (0x400E10D8U) /**< \brief (PIOC) Fall/Rise - Low/High Status Register */ +#define REG_PIOC_LOCKSR (0x400E10E0U) /**< \brief (PIOC) Lock Status */ +#define REG_PIOC_WPMR (0x400E10E4U) /**< \brief (PIOC) Write Protect Mode Register */ +#define REG_PIOC_WPSR (0x400E10E8U) /**< \brief (PIOC) Write Protect Status Register */ +#else +#define REG_PIOC_PER (*(WoReg*)0x400E1000U) /**< \brief (PIOC) PIO Enable Register */ +#define REG_PIOC_PDR (*(WoReg*)0x400E1004U) /**< \brief (PIOC) PIO Disable Register */ +#define REG_PIOC_PSR (*(RoReg*)0x400E1008U) /**< \brief (PIOC) PIO Status Register */ +#define REG_PIOC_OER (*(WoReg*)0x400E1010U) /**< \brief (PIOC) Output Enable Register */ +#define REG_PIOC_ODR (*(WoReg*)0x400E1014U) /**< \brief (PIOC) Output Disable Register */ +#define REG_PIOC_OSR (*(RoReg*)0x400E1018U) /**< \brief (PIOC) Output Status Register */ +#define REG_PIOC_IFER (*(WoReg*)0x400E1020U) /**< \brief (PIOC) Glitch Input Filter Enable Register */ +#define REG_PIOC_IFDR (*(WoReg*)0x400E1024U) /**< \brief (PIOC) Glitch Input Filter Disable Register */ +#define REG_PIOC_IFSR (*(RoReg*)0x400E1028U) /**< \brief (PIOC) Glitch Input Filter Status Register */ +#define REG_PIOC_SODR (*(WoReg*)0x400E1030U) /**< \brief (PIOC) Set Output Data Register */ +#define REG_PIOC_CODR (*(WoReg*)0x400E1034U) /**< \brief (PIOC) Clear Output Data Register */ +#define REG_PIOC_ODSR (*(RwReg*)0x400E1038U) /**< \brief (PIOC) Output Data Status Register */ +#define REG_PIOC_PDSR (*(RoReg*)0x400E103CU) /**< \brief (PIOC) Pin Data Status Register */ +#define REG_PIOC_IER (*(WoReg*)0x400E1040U) /**< \brief (PIOC) Interrupt Enable Register */ +#define REG_PIOC_IDR (*(WoReg*)0x400E1044U) /**< \brief (PIOC) Interrupt Disable Register */ +#define REG_PIOC_IMR (*(RoReg*)0x400E1048U) /**< \brief (PIOC) Interrupt Mask Register */ +#define REG_PIOC_ISR (*(RoReg*)0x400E104CU) /**< \brief (PIOC) Interrupt Status Register */ +#define REG_PIOC_MDER (*(WoReg*)0x400E1050U) /**< \brief (PIOC) Multi-driver Enable Register */ +#define REG_PIOC_MDDR (*(WoReg*)0x400E1054U) /**< \brief (PIOC) Multi-driver Disable Register */ +#define REG_PIOC_MDSR (*(RoReg*)0x400E1058U) /**< \brief (PIOC) Multi-driver Status Register */ +#define REG_PIOC_PUDR (*(WoReg*)0x400E1060U) /**< \brief (PIOC) Pull-up Disable Register */ +#define REG_PIOC_PUER (*(WoReg*)0x400E1064U) /**< \brief (PIOC) Pull-up Enable Register */ +#define REG_PIOC_PUSR (*(RoReg*)0x400E1068U) /**< \brief (PIOC) Pad Pull-up Status Register */ +#define REG_PIOC_ABSR (*(RwReg*)0x400E1070U) /**< \brief (PIOC) Peripheral AB Select Register */ +#define REG_PIOC_SCIFSR (*(WoReg*)0x400E1080U) /**< \brief (PIOC) System Clock Glitch Input Filter Select Register */ +#define REG_PIOC_DIFSR (*(WoReg*)0x400E1084U) /**< \brief (PIOC) Debouncing Input Filter Select Register */ +#define REG_PIOC_IFDGSR (*(RoReg*)0x400E1088U) /**< \brief (PIOC) Glitch or Debouncing Input Filter Clock Selection Status Register */ +#define REG_PIOC_SCDR (*(RwReg*)0x400E108CU) /**< \brief (PIOC) Slow Clock Divider Debouncing Register */ +#define REG_PIOC_OWER (*(WoReg*)0x400E10A0U) /**< \brief (PIOC) Output Write Enable */ +#define REG_PIOC_OWDR (*(WoReg*)0x400E10A4U) /**< \brief (PIOC) Output Write Disable */ +#define REG_PIOC_OWSR (*(RoReg*)0x400E10A8U) /**< \brief (PIOC) Output Write Status Register */ +#define REG_PIOC_AIMER (*(WoReg*)0x400E10B0U) /**< \brief (PIOC) Additional Interrupt Modes Enable Register */ +#define REG_PIOC_AIMDR (*(WoReg*)0x400E10B4U) /**< \brief (PIOC) Additional Interrupt Modes Disables Register */ +#define REG_PIOC_AIMMR (*(RoReg*)0x400E10B8U) /**< \brief (PIOC) Additional Interrupt Modes Mask Register */ +#define REG_PIOC_ESR (*(WoReg*)0x400E10C0U) /**< \brief (PIOC) Edge Select Register */ +#define REG_PIOC_LSR (*(WoReg*)0x400E10C4U) /**< \brief (PIOC) Level Select Register */ +#define REG_PIOC_ELSR (*(RoReg*)0x400E10C8U) /**< \brief (PIOC) Edge/Level Status Register */ +#define REG_PIOC_FELLSR (*(WoReg*)0x400E10D0U) /**< \brief (PIOC) Falling Edge/Low Level Select Register */ +#define REG_PIOC_REHLSR (*(WoReg*)0x400E10D4U) /**< \brief (PIOC) Rising Edge/ High Level Select Register */ +#define REG_PIOC_FRLHSR (*(RoReg*)0x400E10D8U) /**< \brief (PIOC) Fall/Rise - Low/High Status Register */ +#define REG_PIOC_LOCKSR (*(RoReg*)0x400E10E0U) /**< \brief (PIOC) Lock Status */ +#define REG_PIOC_WPMR (*(RwReg*)0x400E10E4U) /**< \brief (PIOC) Write Protect Mode Register */ +#define REG_PIOC_WPSR (*(RoReg*)0x400E10E8U) /**< \brief (PIOC) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_PIOC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_pmc.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_pmc.h new file mode 100644 index 000000000..da2468b96 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_pmc.h @@ -0,0 +1,80 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_PMC_INSTANCE_ +#define _SAM3U_PMC_INSTANCE_ + +/* ========== Register definition for PMC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PMC_SCER (0x400E0400U) /**< \brief (PMC) System Clock Enable Register */ +#define REG_PMC_SCDR (0x400E0404U) /**< \brief (PMC) System Clock Disable Register */ +#define REG_PMC_SCSR (0x400E0408U) /**< \brief (PMC) System Clock Status Register */ +#define REG_PMC_PCER0 (0x400E0410U) /**< \brief (PMC) Peripheral Clock Enable Register 0 */ +#define REG_PMC_PCDR0 (0x400E0414U) /**< \brief (PMC) Peripheral Clock Disable Register 0 */ +#define REG_PMC_PCSR0 (0x400E0418U) /**< \brief (PMC) Peripheral Clock Status Register 0 */ +#define REG_CKGR_UCKR (0x400E041CU) /**< \brief (PMC) UTMI Clock Register */ +#define REG_CKGR_MOR (0x400E0420U) /**< \brief (PMC) Main Oscillator Register */ +#define REG_CKGR_MCFR (0x400E0424U) /**< \brief (PMC) Main Clock Frequency Register */ +#define REG_CKGR_PLLAR (0x400E0428U) /**< \brief (PMC) PLLA Register */ +#define REG_PMC_MCKR (0x400E0430U) /**< \brief (PMC) Master Clock Register */ +#define REG_PMC_PCK (0x400E0440U) /**< \brief (PMC) Programmable Clock 0 Register */ +#define REG_PMC_IER (0x400E0460U) /**< \brief (PMC) Interrupt Enable Register */ +#define REG_PMC_IDR (0x400E0464U) /**< \brief (PMC) Interrupt Disable Register */ +#define REG_PMC_SR (0x400E0468U) /**< \brief (PMC) Status Register */ +#define REG_PMC_IMR (0x400E046CU) /**< \brief (PMC) Interrupt Mask Register */ +#define REG_PMC_FSMR (0x400E0470U) /**< \brief (PMC) Fast Startup Mode Register */ +#define REG_PMC_FSPR (0x400E0474U) /**< \brief (PMC) Fast Startup Polarity Register */ +#define REG_PMC_FOCR (0x400E0478U) /**< \brief (PMC) Fault Output Clear Register */ +#define REG_PMC_WPMR (0x400E04E4U) /**< \brief (PMC) Write Protect Mode Register */ +#define REG_PMC_WPSR (0x400E04E8U) /**< \brief (PMC) Write Protect Status Register */ +#else +#define REG_PMC_SCER (*(WoReg*)0x400E0400U) /**< \brief (PMC) System Clock Enable Register */ +#define REG_PMC_SCDR (*(WoReg*)0x400E0404U) /**< \brief (PMC) System Clock Disable Register */ +#define REG_PMC_SCSR (*(RoReg*)0x400E0408U) /**< \brief (PMC) System Clock Status Register */ +#define REG_PMC_PCER0 (*(WoReg*)0x400E0410U) /**< \brief (PMC) Peripheral Clock Enable Register 0 */ +#define REG_PMC_PCDR0 (*(WoReg*)0x400E0414U) /**< \brief (PMC) Peripheral Clock Disable Register 0 */ +#define REG_PMC_PCSR0 (*(RoReg*)0x400E0418U) /**< \brief (PMC) Peripheral Clock Status Register 0 */ +#define REG_CKGR_UCKR (*(RwReg*)0x400E041CU) /**< \brief (PMC) UTMI Clock Register */ +#define REG_CKGR_MOR (*(RwReg*)0x400E0420U) /**< \brief (PMC) Main Oscillator Register */ +#define REG_CKGR_MCFR (*(RoReg*)0x400E0424U) /**< \brief (PMC) Main Clock Frequency Register */ +#define REG_CKGR_PLLAR (*(RwReg*)0x400E0428U) /**< \brief (PMC) PLLA Register */ +#define REG_PMC_MCKR (*(RwReg*)0x400E0430U) /**< \brief (PMC) Master Clock Register */ +#define REG_PMC_PCK (*(RwReg*)0x400E0440U) /**< \brief (PMC) Programmable Clock 0 Register */ +#define REG_PMC_IER (*(WoReg*)0x400E0460U) /**< \brief (PMC) Interrupt Enable Register */ +#define REG_PMC_IDR (*(WoReg*)0x400E0464U) /**< \brief (PMC) Interrupt Disable Register */ +#define REG_PMC_SR (*(RoReg*)0x400E0468U) /**< \brief (PMC) Status Register */ +#define REG_PMC_IMR (*(RoReg*)0x400E046CU) /**< \brief (PMC) Interrupt Mask Register */ +#define REG_PMC_FSMR (*(RwReg*)0x400E0470U) /**< \brief (PMC) Fast Startup Mode Register */ +#define REG_PMC_FSPR (*(RwReg*)0x400E0474U) /**< \brief (PMC) Fast Startup Polarity Register */ +#define REG_PMC_FOCR (*(WoReg*)0x400E0478U) /**< \brief (PMC) Fault Output Clear Register */ +#define REG_PMC_WPMR (*(RwReg*)0x400E04E4U) /**< \brief (PMC) Write Protect Mode Register */ +#define REG_PMC_WPSR (*(RoReg*)0x400E04E8U) /**< \brief (PMC) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_PMC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_pwm.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_pwm.h new file mode 100644 index 000000000..86e4f5778 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_pwm.h @@ -0,0 +1,246 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_PWM_INSTANCE_ +#define _SAM3U_PWM_INSTANCE_ + +/* ========== Register definition for PWM peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PWM_CLK (0x4008C000U) /**< \brief (PWM) PWM Clock Register */ +#define REG_PWM_ENA (0x4008C004U) /**< \brief (PWM) PWM Enable Register */ +#define REG_PWM_DIS (0x4008C008U) /**< \brief (PWM) PWM Disable Register */ +#define REG_PWM_SR (0x4008C00CU) /**< \brief (PWM) PWM Status Register */ +#define REG_PWM_IER1 (0x4008C010U) /**< \brief (PWM) PWM Interrupt Enable Register 1 */ +#define REG_PWM_IDR1 (0x4008C014U) /**< \brief (PWM) PWM Interrupt Disable Register 1 */ +#define REG_PWM_IMR1 (0x4008C018U) /**< \brief (PWM) PWM Interrupt Mask Register 1 */ +#define REG_PWM_ISR1 (0x4008C01CU) /**< \brief (PWM) PWM Interrupt Status Register 1 */ +#define REG_PWM_SCM (0x4008C020U) /**< \brief (PWM) PWM Sync Channels Mode Register */ +#define REG_PWM_SCUC (0x4008C028U) /**< \brief (PWM) PWM Sync Channels Update Control Register */ +#define REG_PWM_SCUP (0x4008C02CU) /**< \brief (PWM) PWM Sync Channels Update Period Register */ +#define REG_PWM_SCUPUPD (0x4008C030U) /**< \brief (PWM) PWM Sync Channels Update Period Update Register */ +#define REG_PWM_IER2 (0x4008C034U) /**< \brief (PWM) PWM Interrupt Enable Register 2 */ +#define REG_PWM_IDR2 (0x4008C038U) /**< \brief (PWM) PWM Interrupt Disable Register 2 */ +#define REG_PWM_IMR2 (0x4008C03CU) /**< \brief (PWM) PWM Interrupt Mask Register 2 */ +#define REG_PWM_ISR2 (0x4008C040U) /**< \brief (PWM) PWM Interrupt Status Register 2 */ +#define REG_PWM_OOV (0x4008C044U) /**< \brief (PWM) PWM Output Override Value Register */ +#define REG_PWM_OS (0x4008C048U) /**< \brief (PWM) PWM Output Selection Register */ +#define REG_PWM_OSS (0x4008C04CU) /**< \brief (PWM) PWM Output Selection Set Register */ +#define REG_PWM_OSC (0x4008C050U) /**< \brief (PWM) PWM Output Selection Clear Register */ +#define REG_PWM_OSSUPD (0x4008C054U) /**< \brief (PWM) PWM Output Selection Set Update Register */ +#define REG_PWM_OSCUPD (0x4008C058U) /**< \brief (PWM) PWM Output Selection Clear Update Register */ +#define REG_PWM_FMR (0x4008C05CU) /**< \brief (PWM) PWM Fault Mode Register */ +#define REG_PWM_FSR (0x4008C060U) /**< \brief (PWM) PWM Fault Status Register */ +#define REG_PWM_FCR (0x4008C064U) /**< \brief (PWM) PWM Fault Clear Register */ +#define REG_PWM_FPV (0x4008C068U) /**< \brief (PWM) PWM Fault Protection Value Register */ +#define REG_PWM_FPE (0x4008C06CU) /**< \brief (PWM) PWM Fault Protection Enable Register */ +#define REG_PWM_ELMR (0x4008C07CU) /**< \brief (PWM) PWM Event Line 0 Mode Register */ +#define REG_PWM_WPCR (0x4008C0E4U) /**< \brief (PWM) PWM Write Protect Control Register */ +#define REG_PWM_WPSR (0x4008C0E8U) /**< \brief (PWM) PWM Write Protect Status Register */ +#define REG_PWM_RPR (0x4008C100U) /**< \brief (PWM) Receive Pointer Register */ +#define REG_PWM_RCR (0x4008C104U) /**< \brief (PWM) Receive Counter Register */ +#define REG_PWM_TPR (0x4008C108U) /**< \brief (PWM) Transmit Pointer Register */ +#define REG_PWM_TCR (0x4008C10CU) /**< \brief (PWM) Transmit Counter Register */ +#define REG_PWM_RNPR (0x4008C110U) /**< \brief (PWM) Receive Next Pointer Register */ +#define REG_PWM_RNCR (0x4008C114U) /**< \brief (PWM) Receive Next Counter Register */ +#define REG_PWM_TNPR (0x4008C118U) /**< \brief (PWM) Transmit Next Pointer Register */ +#define REG_PWM_TNCR (0x4008C11CU) /**< \brief (PWM) Transmit Next Counter Register */ +#define REG_PWM_PTCR (0x4008C120U) /**< \brief (PWM) Transfer Control Register */ +#define REG_PWM_PTSR (0x4008C124U) /**< \brief (PWM) Transfer Status Register */ +#define REG_PWM_CMPV0 (0x4008C130U) /**< \brief (PWM) PWM Comparison 0 Value Register */ +#define REG_PWM_CMPVUPD0 (0x4008C134U) /**< \brief (PWM) PWM Comparison 0 Value Update Register */ +#define REG_PWM_CMPM0 (0x4008C138U) /**< \brief (PWM) PWM Comparison 0 Mode Register */ +#define REG_PWM_CMPMUPD0 (0x4008C13CU) /**< \brief (PWM) PWM Comparison 0 Mode Update Register */ +#define REG_PWM_CMPV1 (0x4008C140U) /**< \brief (PWM) PWM Comparison 1 Value Register */ +#define REG_PWM_CMPVUPD1 (0x4008C144U) /**< \brief (PWM) PWM Comparison 1 Value Update Register */ +#define REG_PWM_CMPM1 (0x4008C148U) /**< \brief (PWM) PWM Comparison 1 Mode Register */ +#define REG_PWM_CMPMUPD1 (0x4008C14CU) /**< \brief (PWM) PWM Comparison 1 Mode Update Register */ +#define REG_PWM_CMPV2 (0x4008C150U) /**< \brief (PWM) PWM Comparison 2 Value Register */ +#define REG_PWM_CMPVUPD2 (0x4008C154U) /**< \brief (PWM) PWM Comparison 2 Value Update Register */ +#define REG_PWM_CMPM2 (0x4008C158U) /**< \brief (PWM) PWM Comparison 2 Mode Register */ +#define REG_PWM_CMPMUPD2 (0x4008C15CU) /**< \brief (PWM) PWM Comparison 2 Mode Update Register */ +#define REG_PWM_CMPV3 (0x4008C160U) /**< \brief (PWM) PWM Comparison 3 Value Register */ +#define REG_PWM_CMPVUPD3 (0x4008C164U) /**< \brief (PWM) PWM Comparison 3 Value Update Register */ +#define REG_PWM_CMPM3 (0x4008C168U) /**< \brief (PWM) PWM Comparison 3 Mode Register */ +#define REG_PWM_CMPMUPD3 (0x4008C16CU) /**< \brief (PWM) PWM Comparison 3 Mode Update Register */ +#define REG_PWM_CMPV4 (0x4008C170U) /**< \brief (PWM) PWM Comparison 4 Value Register */ +#define REG_PWM_CMPVUPD4 (0x4008C174U) /**< \brief (PWM) PWM Comparison 4 Value Update Register */ +#define REG_PWM_CMPM4 (0x4008C178U) /**< \brief (PWM) PWM Comparison 4 Mode Register */ +#define REG_PWM_CMPMUPD4 (0x4008C17CU) /**< \brief (PWM) PWM Comparison 4 Mode Update Register */ +#define REG_PWM_CMPV5 (0x4008C180U) /**< \brief (PWM) PWM Comparison 5 Value Register */ +#define REG_PWM_CMPVUPD5 (0x4008C184U) /**< \brief (PWM) PWM Comparison 5 Value Update Register */ +#define REG_PWM_CMPM5 (0x4008C188U) /**< \brief (PWM) PWM Comparison 5 Mode Register */ +#define REG_PWM_CMPMUPD5 (0x4008C18CU) /**< \brief (PWM) PWM Comparison 5 Mode Update Register */ +#define REG_PWM_CMPV6 (0x4008C190U) /**< \brief (PWM) PWM Comparison 6 Value Register */ +#define REG_PWM_CMPVUPD6 (0x4008C194U) /**< \brief (PWM) PWM Comparison 6 Value Update Register */ +#define REG_PWM_CMPM6 (0x4008C198U) /**< \brief (PWM) PWM Comparison 6 Mode Register */ +#define REG_PWM_CMPMUPD6 (0x4008C19CU) /**< \brief (PWM) PWM Comparison 6 Mode Update Register */ +#define REG_PWM_CMPV7 (0x4008C1A0U) /**< \brief (PWM) PWM Comparison 7 Value Register */ +#define REG_PWM_CMPVUPD7 (0x4008C1A4U) /**< \brief (PWM) PWM Comparison 7 Value Update Register */ +#define REG_PWM_CMPM7 (0x4008C1A8U) /**< \brief (PWM) PWM Comparison 7 Mode Register */ +#define REG_PWM_CMPMUPD7 (0x4008C1ACU) /**< \brief (PWM) PWM Comparison 7 Mode Update Register */ +#define REG_PWM_CMR0 (0x4008C200U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 0) */ +#define REG_PWM_CDTY0 (0x4008C204U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 0) */ +#define REG_PWM_CDTYUPD0 (0x4008C208U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 0) */ +#define REG_PWM_CPRD0 (0x4008C20CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 0) */ +#define REG_PWM_CPRDUPD0 (0x4008C210U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 0) */ +#define REG_PWM_CCNT0 (0x4008C214U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 0) */ +#define REG_PWM_DT0 (0x4008C218U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 0) */ +#define REG_PWM_DTUPD0 (0x4008C21CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 0) */ +#define REG_PWM_CMR1 (0x4008C220U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 1) */ +#define REG_PWM_CDTY1 (0x4008C224U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 1) */ +#define REG_PWM_CDTYUPD1 (0x4008C228U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 1) */ +#define REG_PWM_CPRD1 (0x4008C22CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 1) */ +#define REG_PWM_CPRDUPD1 (0x4008C230U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 1) */ +#define REG_PWM_CCNT1 (0x4008C234U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 1) */ +#define REG_PWM_DT1 (0x4008C238U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 1) */ +#define REG_PWM_DTUPD1 (0x4008C23CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 1) */ +#define REG_PWM_CMR2 (0x4008C240U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 2) */ +#define REG_PWM_CDTY2 (0x4008C244U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 2) */ +#define REG_PWM_CDTYUPD2 (0x4008C248U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 2) */ +#define REG_PWM_CPRD2 (0x4008C24CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 2) */ +#define REG_PWM_CPRDUPD2 (0x4008C250U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 2) */ +#define REG_PWM_CCNT2 (0x4008C254U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 2) */ +#define REG_PWM_DT2 (0x4008C258U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 2) */ +#define REG_PWM_DTUPD2 (0x4008C25CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 2) */ +#define REG_PWM_CMR3 (0x4008C260U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 3) */ +#define REG_PWM_CDTY3 (0x4008C264U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 3) */ +#define REG_PWM_CDTYUPD3 (0x4008C268U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 3) */ +#define REG_PWM_CPRD3 (0x4008C26CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 3) */ +#define REG_PWM_CPRDUPD3 (0x4008C270U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 3) */ +#define REG_PWM_CCNT3 (0x4008C274U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 3) */ +#define REG_PWM_DT3 (0x4008C278U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 3) */ +#define REG_PWM_DTUPD3 (0x4008C27CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 3) */ +#else +#define REG_PWM_CLK (*(RwReg*)0x4008C000U) /**< \brief (PWM) PWM Clock Register */ +#define REG_PWM_ENA (*(WoReg*)0x4008C004U) /**< \brief (PWM) PWM Enable Register */ +#define REG_PWM_DIS (*(WoReg*)0x4008C008U) /**< \brief (PWM) PWM Disable Register */ +#define REG_PWM_SR (*(RoReg*)0x4008C00CU) /**< \brief (PWM) PWM Status Register */ +#define REG_PWM_IER1 (*(WoReg*)0x4008C010U) /**< \brief (PWM) PWM Interrupt Enable Register 1 */ +#define REG_PWM_IDR1 (*(WoReg*)0x4008C014U) /**< \brief (PWM) PWM Interrupt Disable Register 1 */ +#define REG_PWM_IMR1 (*(RoReg*)0x4008C018U) /**< \brief (PWM) PWM Interrupt Mask Register 1 */ +#define REG_PWM_ISR1 (*(RoReg*)0x4008C01CU) /**< \brief (PWM) PWM Interrupt Status Register 1 */ +#define REG_PWM_SCM (*(RwReg*)0x4008C020U) /**< \brief (PWM) PWM Sync Channels Mode Register */ +#define REG_PWM_SCUC (*(RwReg*)0x4008C028U) /**< \brief (PWM) PWM Sync Channels Update Control Register */ +#define REG_PWM_SCUP (*(RwReg*)0x4008C02CU) /**< \brief (PWM) PWM Sync Channels Update Period Register */ +#define REG_PWM_SCUPUPD (*(WoReg*)0x4008C030U) /**< \brief (PWM) PWM Sync Channels Update Period Update Register */ +#define REG_PWM_IER2 (*(WoReg*)0x4008C034U) /**< \brief (PWM) PWM Interrupt Enable Register 2 */ +#define REG_PWM_IDR2 (*(WoReg*)0x4008C038U) /**< \brief (PWM) PWM Interrupt Disable Register 2 */ +#define REG_PWM_IMR2 (*(RoReg*)0x4008C03CU) /**< \brief (PWM) PWM Interrupt Mask Register 2 */ +#define REG_PWM_ISR2 (*(RoReg*)0x4008C040U) /**< \brief (PWM) PWM Interrupt Status Register 2 */ +#define REG_PWM_OOV (*(RwReg*)0x4008C044U) /**< \brief (PWM) PWM Output Override Value Register */ +#define REG_PWM_OS (*(RwReg*)0x4008C048U) /**< \brief (PWM) PWM Output Selection Register */ +#define REG_PWM_OSS (*(WoReg*)0x4008C04CU) /**< \brief (PWM) PWM Output Selection Set Register */ +#define REG_PWM_OSC (*(WoReg*)0x4008C050U) /**< \brief (PWM) PWM Output Selection Clear Register */ +#define REG_PWM_OSSUPD (*(WoReg*)0x4008C054U) /**< \brief (PWM) PWM Output Selection Set Update Register */ +#define REG_PWM_OSCUPD (*(WoReg*)0x4008C058U) /**< \brief (PWM) PWM Output Selection Clear Update Register */ +#define REG_PWM_FMR (*(RwReg*)0x4008C05CU) /**< \brief (PWM) PWM Fault Mode Register */ +#define REG_PWM_FSR (*(RoReg*)0x4008C060U) /**< \brief (PWM) PWM Fault Status Register */ +#define REG_PWM_FCR (*(WoReg*)0x4008C064U) /**< \brief (PWM) PWM Fault Clear Register */ +#define REG_PWM_FPV (*(RwReg*)0x4008C068U) /**< \brief (PWM) PWM Fault Protection Value Register */ +#define REG_PWM_FPE (*(RwReg*)0x4008C06CU) /**< \brief (PWM) PWM Fault Protection Enable Register */ +#define REG_PWM_ELMR (*(RwReg*)0x4008C07CU) /**< \brief (PWM) PWM Event Line 0 Mode Register */ +#define REG_PWM_WPCR (*(WoReg*)0x4008C0E4U) /**< \brief (PWM) PWM Write Protect Control Register */ +#define REG_PWM_WPSR (*(RoReg*)0x4008C0E8U) /**< \brief (PWM) PWM Write Protect Status Register */ +#define REG_PWM_RPR (*(RwReg*)0x4008C100U) /**< \brief (PWM) Receive Pointer Register */ +#define REG_PWM_RCR (*(RwReg*)0x4008C104U) /**< \brief (PWM) Receive Counter Register */ +#define REG_PWM_TPR (*(RwReg*)0x4008C108U) /**< \brief (PWM) Transmit Pointer Register */ +#define REG_PWM_TCR (*(RwReg*)0x4008C10CU) /**< \brief (PWM) Transmit Counter Register */ +#define REG_PWM_RNPR (*(RwReg*)0x4008C110U) /**< \brief (PWM) Receive Next Pointer Register */ +#define REG_PWM_RNCR (*(RwReg*)0x4008C114U) /**< \brief (PWM) Receive Next Counter Register */ +#define REG_PWM_TNPR (*(RwReg*)0x4008C118U) /**< \brief (PWM) Transmit Next Pointer Register */ +#define REG_PWM_TNCR (*(RwReg*)0x4008C11CU) /**< \brief (PWM) Transmit Next Counter Register */ +#define REG_PWM_PTCR (*(WoReg*)0x4008C120U) /**< \brief (PWM) Transfer Control Register */ +#define REG_PWM_PTSR (*(RoReg*)0x4008C124U) /**< \brief (PWM) Transfer Status Register */ +#define REG_PWM_CMPV0 (*(RwReg*)0x4008C130U) /**< \brief (PWM) PWM Comparison 0 Value Register */ +#define REG_PWM_CMPVUPD0 (*(WoReg*)0x4008C134U) /**< \brief (PWM) PWM Comparison 0 Value Update Register */ +#define REG_PWM_CMPM0 (*(RwReg*)0x4008C138U) /**< \brief (PWM) PWM Comparison 0 Mode Register */ +#define REG_PWM_CMPMUPD0 (*(WoReg*)0x4008C13CU) /**< \brief (PWM) PWM Comparison 0 Mode Update Register */ +#define REG_PWM_CMPV1 (*(RwReg*)0x4008C140U) /**< \brief (PWM) PWM Comparison 1 Value Register */ +#define REG_PWM_CMPVUPD1 (*(WoReg*)0x4008C144U) /**< \brief (PWM) PWM Comparison 1 Value Update Register */ +#define REG_PWM_CMPM1 (*(RwReg*)0x4008C148U) /**< \brief (PWM) PWM Comparison 1 Mode Register */ +#define REG_PWM_CMPMUPD1 (*(WoReg*)0x4008C14CU) /**< \brief (PWM) PWM Comparison 1 Mode Update Register */ +#define REG_PWM_CMPV2 (*(RwReg*)0x4008C150U) /**< \brief (PWM) PWM Comparison 2 Value Register */ +#define REG_PWM_CMPVUPD2 (*(WoReg*)0x4008C154U) /**< \brief (PWM) PWM Comparison 2 Value Update Register */ +#define REG_PWM_CMPM2 (*(RwReg*)0x4008C158U) /**< \brief (PWM) PWM Comparison 2 Mode Register */ +#define REG_PWM_CMPMUPD2 (*(WoReg*)0x4008C15CU) /**< \brief (PWM) PWM Comparison 2 Mode Update Register */ +#define REG_PWM_CMPV3 (*(RwReg*)0x4008C160U) /**< \brief (PWM) PWM Comparison 3 Value Register */ +#define REG_PWM_CMPVUPD3 (*(WoReg*)0x4008C164U) /**< \brief (PWM) PWM Comparison 3 Value Update Register */ +#define REG_PWM_CMPM3 (*(RwReg*)0x4008C168U) /**< \brief (PWM) PWM Comparison 3 Mode Register */ +#define REG_PWM_CMPMUPD3 (*(WoReg*)0x4008C16CU) /**< \brief (PWM) PWM Comparison 3 Mode Update Register */ +#define REG_PWM_CMPV4 (*(RwReg*)0x4008C170U) /**< \brief (PWM) PWM Comparison 4 Value Register */ +#define REG_PWM_CMPVUPD4 (*(WoReg*)0x4008C174U) /**< \brief (PWM) PWM Comparison 4 Value Update Register */ +#define REG_PWM_CMPM4 (*(RwReg*)0x4008C178U) /**< \brief (PWM) PWM Comparison 4 Mode Register */ +#define REG_PWM_CMPMUPD4 (*(WoReg*)0x4008C17CU) /**< \brief (PWM) PWM Comparison 4 Mode Update Register */ +#define REG_PWM_CMPV5 (*(RwReg*)0x4008C180U) /**< \brief (PWM) PWM Comparison 5 Value Register */ +#define REG_PWM_CMPVUPD5 (*(WoReg*)0x4008C184U) /**< \brief (PWM) PWM Comparison 5 Value Update Register */ +#define REG_PWM_CMPM5 (*(RwReg*)0x4008C188U) /**< \brief (PWM) PWM Comparison 5 Mode Register */ +#define REG_PWM_CMPMUPD5 (*(WoReg*)0x4008C18CU) /**< \brief (PWM) PWM Comparison 5 Mode Update Register */ +#define REG_PWM_CMPV6 (*(RwReg*)0x4008C190U) /**< \brief (PWM) PWM Comparison 6 Value Register */ +#define REG_PWM_CMPVUPD6 (*(WoReg*)0x4008C194U) /**< \brief (PWM) PWM Comparison 6 Value Update Register */ +#define REG_PWM_CMPM6 (*(RwReg*)0x4008C198U) /**< \brief (PWM) PWM Comparison 6 Mode Register */ +#define REG_PWM_CMPMUPD6 (*(WoReg*)0x4008C19CU) /**< \brief (PWM) PWM Comparison 6 Mode Update Register */ +#define REG_PWM_CMPV7 (*(RwReg*)0x4008C1A0U) /**< \brief (PWM) PWM Comparison 7 Value Register */ +#define REG_PWM_CMPVUPD7 (*(WoReg*)0x4008C1A4U) /**< \brief (PWM) PWM Comparison 7 Value Update Register */ +#define REG_PWM_CMPM7 (*(RwReg*)0x4008C1A8U) /**< \brief (PWM) PWM Comparison 7 Mode Register */ +#define REG_PWM_CMPMUPD7 (*(WoReg*)0x4008C1ACU) /**< \brief (PWM) PWM Comparison 7 Mode Update Register */ +#define REG_PWM_CMR0 (*(RwReg*)0x4008C200U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 0) */ +#define REG_PWM_CDTY0 (*(RwReg*)0x4008C204U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 0) */ +#define REG_PWM_CDTYUPD0 (*(WoReg*)0x4008C208U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 0) */ +#define REG_PWM_CPRD0 (*(RwReg*)0x4008C20CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 0) */ +#define REG_PWM_CPRDUPD0 (*(WoReg*)0x4008C210U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 0) */ +#define REG_PWM_CCNT0 (*(RoReg*)0x4008C214U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 0) */ +#define REG_PWM_DT0 (*(RwReg*)0x4008C218U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 0) */ +#define REG_PWM_DTUPD0 (*(WoReg*)0x4008C21CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 0) */ +#define REG_PWM_CMR1 (*(RwReg*)0x4008C220U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 1) */ +#define REG_PWM_CDTY1 (*(RwReg*)0x4008C224U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 1) */ +#define REG_PWM_CDTYUPD1 (*(WoReg*)0x4008C228U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 1) */ +#define REG_PWM_CPRD1 (*(RwReg*)0x4008C22CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 1) */ +#define REG_PWM_CPRDUPD1 (*(WoReg*)0x4008C230U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 1) */ +#define REG_PWM_CCNT1 (*(RoReg*)0x4008C234U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 1) */ +#define REG_PWM_DT1 (*(RwReg*)0x4008C238U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 1) */ +#define REG_PWM_DTUPD1 (*(WoReg*)0x4008C23CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 1) */ +#define REG_PWM_CMR2 (*(RwReg*)0x4008C240U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 2) */ +#define REG_PWM_CDTY2 (*(RwReg*)0x4008C244U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 2) */ +#define REG_PWM_CDTYUPD2 (*(WoReg*)0x4008C248U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 2) */ +#define REG_PWM_CPRD2 (*(RwReg*)0x4008C24CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 2) */ +#define REG_PWM_CPRDUPD2 (*(WoReg*)0x4008C250U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 2) */ +#define REG_PWM_CCNT2 (*(RoReg*)0x4008C254U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 2) */ +#define REG_PWM_DT2 (*(RwReg*)0x4008C258U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 2) */ +#define REG_PWM_DTUPD2 (*(WoReg*)0x4008C25CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 2) */ +#define REG_PWM_CMR3 (*(RwReg*)0x4008C260U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 3) */ +#define REG_PWM_CDTY3 (*(RwReg*)0x4008C264U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 3) */ +#define REG_PWM_CDTYUPD3 (*(WoReg*)0x4008C268U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 3) */ +#define REG_PWM_CPRD3 (*(RwReg*)0x4008C26CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 3) */ +#define REG_PWM_CPRDUPD3 (*(WoReg*)0x4008C270U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 3) */ +#define REG_PWM_CCNT3 (*(RoReg*)0x4008C274U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 3) */ +#define REG_PWM_DT3 (*(RwReg*)0x4008C278U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 3) */ +#define REG_PWM_DTUPD3 (*(WoReg*)0x4008C27CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 3) */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_PWM_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_rstc.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_rstc.h new file mode 100644 index 000000000..e4eaafc54 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_rstc.h @@ -0,0 +1,44 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_RSTC_INSTANCE_ +#define _SAM3U_RSTC_INSTANCE_ + +/* ========== Register definition for RSTC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_RSTC_CR (0x400E1200U) /**< \brief (RSTC) Control Register */ +#define REG_RSTC_SR (0x400E1204U) /**< \brief (RSTC) Status Register */ +#define REG_RSTC_MR (0x400E1208U) /**< \brief (RSTC) Mode Register */ +#else +#define REG_RSTC_CR (*(WoReg*)0x400E1200U) /**< \brief (RSTC) Control Register */ +#define REG_RSTC_SR (*(RoReg*)0x400E1204U) /**< \brief (RSTC) Status Register */ +#define REG_RSTC_MR (*(RwReg*)0x400E1208U) /**< \brief (RSTC) Mode Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_RSTC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_rtc.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_rtc.h new file mode 100644 index 000000000..70848a5f1 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_rtc.h @@ -0,0 +1,64 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_RTC_INSTANCE_ +#define _SAM3U_RTC_INSTANCE_ + +/* ========== Register definition for RTC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_RTC_CR (0x400E1260U) /**< \brief (RTC) Control Register */ +#define REG_RTC_MR (0x400E1264U) /**< \brief (RTC) Mode Register */ +#define REG_RTC_TIMR (0x400E1268U) /**< \brief (RTC) Time Register */ +#define REG_RTC_CALR (0x400E126CU) /**< \brief (RTC) Calendar Register */ +#define REG_RTC_TIMALR (0x400E1270U) /**< \brief (RTC) Time Alarm Register */ +#define REG_RTC_CALALR (0x400E1274U) /**< \brief (RTC) Calendar Alarm Register */ +#define REG_RTC_SR (0x400E1278U) /**< \brief (RTC) Status Register */ +#define REG_RTC_SCCR (0x400E127CU) /**< \brief (RTC) Status Clear Command Register */ +#define REG_RTC_IER (0x400E1280U) /**< \brief (RTC) Interrupt Enable Register */ +#define REG_RTC_IDR (0x400E1284U) /**< \brief (RTC) Interrupt Disable Register */ +#define REG_RTC_IMR (0x400E1288U) /**< \brief (RTC) Interrupt Mask Register */ +#define REG_RTC_VER (0x400E128CU) /**< \brief (RTC) Valid Entry Register */ +#define REG_RTC_WPMR (0x400E1344U) /**< \brief (RTC) Write Protect Mode Register */ +#else +#define REG_RTC_CR (*(RwReg*)0x400E1260U) /**< \brief (RTC) Control Register */ +#define REG_RTC_MR (*(RwReg*)0x400E1264U) /**< \brief (RTC) Mode Register */ +#define REG_RTC_TIMR (*(RwReg*)0x400E1268U) /**< \brief (RTC) Time Register */ +#define REG_RTC_CALR (*(RwReg*)0x400E126CU) /**< \brief (RTC) Calendar Register */ +#define REG_RTC_TIMALR (*(RwReg*)0x400E1270U) /**< \brief (RTC) Time Alarm Register */ +#define REG_RTC_CALALR (*(RwReg*)0x400E1274U) /**< \brief (RTC) Calendar Alarm Register */ +#define REG_RTC_SR (*(RoReg*)0x400E1278U) /**< \brief (RTC) Status Register */ +#define REG_RTC_SCCR (*(WoReg*)0x400E127CU) /**< \brief (RTC) Status Clear Command Register */ +#define REG_RTC_IER (*(WoReg*)0x400E1280U) /**< \brief (RTC) Interrupt Enable Register */ +#define REG_RTC_IDR (*(WoReg*)0x400E1284U) /**< \brief (RTC) Interrupt Disable Register */ +#define REG_RTC_IMR (*(RoReg*)0x400E1288U) /**< \brief (RTC) Interrupt Mask Register */ +#define REG_RTC_VER (*(RoReg*)0x400E128CU) /**< \brief (RTC) Valid Entry Register */ +#define REG_RTC_WPMR (*(RwReg*)0x400E1344U) /**< \brief (RTC) Write Protect Mode Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_RTC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_rtt.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_rtt.h new file mode 100644 index 000000000..30fb346a0 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_rtt.h @@ -0,0 +1,46 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_RTT_INSTANCE_ +#define _SAM3U_RTT_INSTANCE_ + +/* ========== Register definition for RTT peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_RTT_MR (0x400E1230U) /**< \brief (RTT) Mode Register */ +#define REG_RTT_AR (0x400E1234U) /**< \brief (RTT) Alarm Register */ +#define REG_RTT_VR (0x400E1238U) /**< \brief (RTT) Value Register */ +#define REG_RTT_SR (0x400E123CU) /**< \brief (RTT) Status Register */ +#else +#define REG_RTT_MR (*(RwReg*)0x400E1230U) /**< \brief (RTT) Mode Register */ +#define REG_RTT_AR (*(RwReg*)0x400E1234U) /**< \brief (RTT) Alarm Register */ +#define REG_RTT_VR (*(RoReg*)0x400E1238U) /**< \brief (RTT) Value Register */ +#define REG_RTT_SR (*(RoReg*)0x400E123CU) /**< \brief (RTT) Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_RTT_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_smc.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_smc.h new file mode 100644 index 000000000..6cc8e8cb3 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_smc.h @@ -0,0 +1,144 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_SMC_INSTANCE_ +#define _SAM3U_SMC_INSTANCE_ + +/* ========== Register definition for SMC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SMC_CFG (0x400E0000U) /**< \brief (SMC) SMC NFC Configuration Register */ +#define REG_SMC_CTRL (0x400E0004U) /**< \brief (SMC) SMC NFC Control Register */ +#define REG_SMC_SR (0x400E0008U) /**< \brief (SMC) SMC NFC Status Register */ +#define REG_SMC_IER (0x400E000CU) /**< \brief (SMC) SMC NFC Interrupt Enable Register */ +#define REG_SMC_IDR (0x400E0010U) /**< \brief (SMC) SMC NFC Interrupt Disable Register */ +#define REG_SMC_IMR (0x400E0014U) /**< \brief (SMC) SMC NFC Interrupt Mask Register */ +#define REG_SMC_ADDR (0x400E0018U) /**< \brief (SMC) SMC NFC Address Cycle Zero Register */ +#define REG_SMC_BANK (0x400E001CU) /**< \brief (SMC) SMC Bank Address Register */ +#define REG_SMC_ECC_CTRL (0x400E0020U) /**< \brief (SMC) SMC ECC Control Register */ +#define REG_SMC_ECC_MD (0x400E0024U) /**< \brief (SMC) SMC ECC Mode Register */ +#define REG_SMC_ECC_SR1 (0x400E0028U) /**< \brief (SMC) SMC ECC Status 1 Register */ +#define REG_SMC_ECC_PR0 (0x400E002CU) /**< \brief (SMC) SMC ECC Parity 0 Register */ +#define REG_SMC_ECC_PR1 (0x400E0030U) /**< \brief (SMC) SMC ECC parity 1 Register */ +#define REG_SMC_ECC_SR2 (0x400E0034U) /**< \brief (SMC) SMC ECC status 2 Register */ +#define REG_SMC_ECC_PR2 (0x400E0038U) /**< \brief (SMC) SMC ECC parity 2 Register */ +#define REG_SMC_ECC_PR3 (0x400E003CU) /**< \brief (SMC) SMC ECC parity 3 Register */ +#define REG_SMC_ECC_PR4 (0x400E0040U) /**< \brief (SMC) SMC ECC parity 4 Register */ +#define REG_SMC_ECC_PR5 (0x400E0044U) /**< \brief (SMC) SMC ECC parity 5 Register */ +#define REG_SMC_ECC_PR6 (0x400E0048U) /**< \brief (SMC) SMC ECC parity 6 Register */ +#define REG_SMC_ECC_PR7 (0x400E004CU) /**< \brief (SMC) SMC ECC parity 7 Register */ +#define REG_SMC_ECC_PR8 (0x400E0050U) /**< \brief (SMC) SMC ECC parity 8 Register */ +#define REG_SMC_ECC_PR9 (0x400E0054U) /**< \brief (SMC) SMC ECC parity 9 Register */ +#define REG_SMC_ECC_PR10 (0x400E0058U) /**< \brief (SMC) SMC ECC parity 10 Register */ +#define REG_SMC_ECC_PR11 (0x400E005CU) /**< \brief (SMC) SMC ECC parity 11 Register */ +#define REG_SMC_ECC_PR12 (0x400E0060U) /**< \brief (SMC) SMC ECC parity 12 Register */ +#define REG_SMC_ECC_PR13 (0x400E0064U) /**< \brief (SMC) SMC ECC parity 13 Register */ +#define REG_SMC_ECC_PR14 (0x400E0068U) /**< \brief (SMC) SMC ECC parity 14 Register */ +#define REG_SMC_ECC_PR15 (0x400E006CU) /**< \brief (SMC) SMC ECC parity 15 Register */ +#define REG_SMC_SETUP0 (0x400E0070U) /**< \brief (SMC) SMC Setup Register (CS_number = 0) */ +#define REG_SMC_PULSE0 (0x400E0074U) /**< \brief (SMC) SMC Pulse Register (CS_number = 0) */ +#define REG_SMC_CYCLE0 (0x400E0078U) /**< \brief (SMC) SMC Cycle Register (CS_number = 0) */ +#define REG_SMC_TIMINGS0 (0x400E007CU) /**< \brief (SMC) SMC Timings Register (CS_number = 0) */ +#define REG_SMC_MODE0 (0x400E0080U) /**< \brief (SMC) SMC Mode Register (CS_number = 0) */ +#define REG_SMC_SETUP1 (0x400E0084U) /**< \brief (SMC) SMC Setup Register (CS_number = 1) */ +#define REG_SMC_PULSE1 (0x400E0088U) /**< \brief (SMC) SMC Pulse Register (CS_number = 1) */ +#define REG_SMC_CYCLE1 (0x400E008CU) /**< \brief (SMC) SMC Cycle Register (CS_number = 1) */ +#define REG_SMC_TIMINGS1 (0x400E0090U) /**< \brief (SMC) SMC Timings Register (CS_number = 1) */ +#define REG_SMC_MODE1 (0x400E0094U) /**< \brief (SMC) SMC Mode Register (CS_number = 1) */ +#define REG_SMC_SETUP2 (0x400E0098U) /**< \brief (SMC) SMC Setup Register (CS_number = 2) */ +#define REG_SMC_PULSE2 (0x400E009CU) /**< \brief (SMC) SMC Pulse Register (CS_number = 2) */ +#define REG_SMC_CYCLE2 (0x400E00A0U) /**< \brief (SMC) SMC Cycle Register (CS_number = 2) */ +#define REG_SMC_TIMINGS2 (0x400E00A4U) /**< \brief (SMC) SMC Timings Register (CS_number = 2) */ +#define REG_SMC_MODE2 (0x400E00A8U) /**< \brief (SMC) SMC Mode Register (CS_number = 2) */ +#define REG_SMC_SETUP3 (0x400E00ACU) /**< \brief (SMC) SMC Setup Register (CS_number = 3) */ +#define REG_SMC_PULSE3 (0x400E00B0U) /**< \brief (SMC) SMC Pulse Register (CS_number = 3) */ +#define REG_SMC_CYCLE3 (0x400E00B4U) /**< \brief (SMC) SMC Cycle Register (CS_number = 3) */ +#define REG_SMC_TIMINGS3 (0x400E00B8U) /**< \brief (SMC) SMC Timings Register (CS_number = 3) */ +#define REG_SMC_MODE3 (0x400E00BCU) /**< \brief (SMC) SMC Mode Register (CS_number = 3) */ +#define REG_SMC_OCMS (0x400E0110U) /**< \brief (SMC) SMC OCMS Register */ +#define REG_SMC_KEY1 (0x400E0114U) /**< \brief (SMC) SMC OCMS KEY1 Register */ +#define REG_SMC_KEY2 (0x400E0118U) /**< \brief (SMC) SMC OCMS KEY2 Register */ +#define REG_SMC_WPCR (0x400E01E4U) /**< \brief (SMC) Write Protection Control Register */ +#define REG_SMC_WPSR (0x400E01E8U) /**< \brief (SMC) Write Protection Status Register */ +#else +#define REG_SMC_CFG (*(RwReg*)0x400E0000U) /**< \brief (SMC) SMC NFC Configuration Register */ +#define REG_SMC_CTRL (*(WoReg*)0x400E0004U) /**< \brief (SMC) SMC NFC Control Register */ +#define REG_SMC_SR (*(RoReg*)0x400E0008U) /**< \brief (SMC) SMC NFC Status Register */ +#define REG_SMC_IER (*(WoReg*)0x400E000CU) /**< \brief (SMC) SMC NFC Interrupt Enable Register */ +#define REG_SMC_IDR (*(WoReg*)0x400E0010U) /**< \brief (SMC) SMC NFC Interrupt Disable Register */ +#define REG_SMC_IMR (*(RoReg*)0x400E0014U) /**< \brief (SMC) SMC NFC Interrupt Mask Register */ +#define REG_SMC_ADDR (*(RwReg*)0x400E0018U) /**< \brief (SMC) SMC NFC Address Cycle Zero Register */ +#define REG_SMC_BANK (*(RwReg*)0x400E001CU) /**< \brief (SMC) SMC Bank Address Register */ +#define REG_SMC_ECC_CTRL (*(WoReg*)0x400E0020U) /**< \brief (SMC) SMC ECC Control Register */ +#define REG_SMC_ECC_MD (*(RwReg*)0x400E0024U) /**< \brief (SMC) SMC ECC Mode Register */ +#define REG_SMC_ECC_SR1 (*(RoReg*)0x400E0028U) /**< \brief (SMC) SMC ECC Status 1 Register */ +#define REG_SMC_ECC_PR0 (*(RoReg*)0x400E002CU) /**< \brief (SMC) SMC ECC Parity 0 Register */ +#define REG_SMC_ECC_PR1 (*(RoReg*)0x400E0030U) /**< \brief (SMC) SMC ECC parity 1 Register */ +#define REG_SMC_ECC_SR2 (*(RoReg*)0x400E0034U) /**< \brief (SMC) SMC ECC status 2 Register */ +#define REG_SMC_ECC_PR2 (*(RoReg*)0x400E0038U) /**< \brief (SMC) SMC ECC parity 2 Register */ +#define REG_SMC_ECC_PR3 (*(RoReg*)0x400E003CU) /**< \brief (SMC) SMC ECC parity 3 Register */ +#define REG_SMC_ECC_PR4 (*(RoReg*)0x400E0040U) /**< \brief (SMC) SMC ECC parity 4 Register */ +#define REG_SMC_ECC_PR5 (*(RoReg*)0x400E0044U) /**< \brief (SMC) SMC ECC parity 5 Register */ +#define REG_SMC_ECC_PR6 (*(RoReg*)0x400E0048U) /**< \brief (SMC) SMC ECC parity 6 Register */ +#define REG_SMC_ECC_PR7 (*(RoReg*)0x400E004CU) /**< \brief (SMC) SMC ECC parity 7 Register */ +#define REG_SMC_ECC_PR8 (*(RoReg*)0x400E0050U) /**< \brief (SMC) SMC ECC parity 8 Register */ +#define REG_SMC_ECC_PR9 (*(RoReg*)0x400E0054U) /**< \brief (SMC) SMC ECC parity 9 Register */ +#define REG_SMC_ECC_PR10 (*(RoReg*)0x400E0058U) /**< \brief (SMC) SMC ECC parity 10 Register */ +#define REG_SMC_ECC_PR11 (*(RoReg*)0x400E005CU) /**< \brief (SMC) SMC ECC parity 11 Register */ +#define REG_SMC_ECC_PR12 (*(RoReg*)0x400E0060U) /**< \brief (SMC) SMC ECC parity 12 Register */ +#define REG_SMC_ECC_PR13 (*(RoReg*)0x400E0064U) /**< \brief (SMC) SMC ECC parity 13 Register */ +#define REG_SMC_ECC_PR14 (*(RoReg*)0x400E0068U) /**< \brief (SMC) SMC ECC parity 14 Register */ +#define REG_SMC_ECC_PR15 (*(RoReg*)0x400E006CU) /**< \brief (SMC) SMC ECC parity 15 Register */ +#define REG_SMC_SETUP0 (*(RwReg*)0x400E0070U) /**< \brief (SMC) SMC Setup Register (CS_number = 0) */ +#define REG_SMC_PULSE0 (*(RwReg*)0x400E0074U) /**< \brief (SMC) SMC Pulse Register (CS_number = 0) */ +#define REG_SMC_CYCLE0 (*(RwReg*)0x400E0078U) /**< \brief (SMC) SMC Cycle Register (CS_number = 0) */ +#define REG_SMC_TIMINGS0 (*(RwReg*)0x400E007CU) /**< \brief (SMC) SMC Timings Register (CS_number = 0) */ +#define REG_SMC_MODE0 (*(RwReg*)0x400E0080U) /**< \brief (SMC) SMC Mode Register (CS_number = 0) */ +#define REG_SMC_SETUP1 (*(RwReg*)0x400E0084U) /**< \brief (SMC) SMC Setup Register (CS_number = 1) */ +#define REG_SMC_PULSE1 (*(RwReg*)0x400E0088U) /**< \brief (SMC) SMC Pulse Register (CS_number = 1) */ +#define REG_SMC_CYCLE1 (*(RwReg*)0x400E008CU) /**< \brief (SMC) SMC Cycle Register (CS_number = 1) */ +#define REG_SMC_TIMINGS1 (*(RwReg*)0x400E0090U) /**< \brief (SMC) SMC Timings Register (CS_number = 1) */ +#define REG_SMC_MODE1 (*(RwReg*)0x400E0094U) /**< \brief (SMC) SMC Mode Register (CS_number = 1) */ +#define REG_SMC_SETUP2 (*(RwReg*)0x400E0098U) /**< \brief (SMC) SMC Setup Register (CS_number = 2) */ +#define REG_SMC_PULSE2 (*(RwReg*)0x400E009CU) /**< \brief (SMC) SMC Pulse Register (CS_number = 2) */ +#define REG_SMC_CYCLE2 (*(RwReg*)0x400E00A0U) /**< \brief (SMC) SMC Cycle Register (CS_number = 2) */ +#define REG_SMC_TIMINGS2 (*(RwReg*)0x400E00A4U) /**< \brief (SMC) SMC Timings Register (CS_number = 2) */ +#define REG_SMC_MODE2 (*(RwReg*)0x400E00A8U) /**< \brief (SMC) SMC Mode Register (CS_number = 2) */ +#define REG_SMC_SETUP3 (*(RwReg*)0x400E00ACU) /**< \brief (SMC) SMC Setup Register (CS_number = 3) */ +#define REG_SMC_PULSE3 (*(RwReg*)0x400E00B0U) /**< \brief (SMC) SMC Pulse Register (CS_number = 3) */ +#define REG_SMC_CYCLE3 (*(RwReg*)0x400E00B4U) /**< \brief (SMC) SMC Cycle Register (CS_number = 3) */ +#define REG_SMC_TIMINGS3 (*(RwReg*)0x400E00B8U) /**< \brief (SMC) SMC Timings Register (CS_number = 3) */ +#define REG_SMC_MODE3 (*(RwReg*)0x400E00BCU) /**< \brief (SMC) SMC Mode Register (CS_number = 3) */ +#define REG_SMC_OCMS (*(RwReg*)0x400E0110U) /**< \brief (SMC) SMC OCMS Register */ +#define REG_SMC_KEY1 (*(WoReg*)0x400E0114U) /**< \brief (SMC) SMC OCMS KEY1 Register */ +#define REG_SMC_KEY2 (*(WoReg*)0x400E0118U) /**< \brief (SMC) SMC OCMS KEY2 Register */ +#define REG_SMC_WPCR (*(WoReg*)0x400E01E4U) /**< \brief (SMC) Write Protection Control Register */ +#define REG_SMC_WPSR (*(RoReg*)0x400E01E8U) /**< \brief (SMC) Write Protection Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_SMC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_spi.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_spi.h new file mode 100644 index 000000000..01da0f3b1 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_spi.h @@ -0,0 +1,60 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_SPI_INSTANCE_ +#define _SAM3U_SPI_INSTANCE_ + +/* ========== Register definition for SPI peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SPI_CR (0x40008000U) /**< \brief (SPI) Control Register */ +#define REG_SPI_MR (0x40008004U) /**< \brief (SPI) Mode Register */ +#define REG_SPI_RDR (0x40008008U) /**< \brief (SPI) Receive Data Register */ +#define REG_SPI_TDR (0x4000800CU) /**< \brief (SPI) Transmit Data Register */ +#define REG_SPI_SR (0x40008010U) /**< \brief (SPI) Status Register */ +#define REG_SPI_IER (0x40008014U) /**< \brief (SPI) Interrupt Enable Register */ +#define REG_SPI_IDR (0x40008018U) /**< \brief (SPI) Interrupt Disable Register */ +#define REG_SPI_IMR (0x4000801CU) /**< \brief (SPI) Interrupt Mask Register */ +#define REG_SPI_CSR (0x40008030U) /**< \brief (SPI) Chip Select Register */ +#define REG_SPI_WPMR (0x400080E4U) /**< \brief (SPI) Write Protection Control Register */ +#define REG_SPI_WPSR (0x400080E8U) /**< \brief (SPI) Write Protection Status Register */ +#else +#define REG_SPI_CR (*(WoReg*)0x40008000U) /**< \brief (SPI) Control Register */ +#define REG_SPI_MR (*(RwReg*)0x40008004U) /**< \brief (SPI) Mode Register */ +#define REG_SPI_RDR (*(RoReg*)0x40008008U) /**< \brief (SPI) Receive Data Register */ +#define REG_SPI_TDR (*(WoReg*)0x4000800CU) /**< \brief (SPI) Transmit Data Register */ +#define REG_SPI_SR (*(RoReg*)0x40008010U) /**< \brief (SPI) Status Register */ +#define REG_SPI_IER (*(WoReg*)0x40008014U) /**< \brief (SPI) Interrupt Enable Register */ +#define REG_SPI_IDR (*(WoReg*)0x40008018U) /**< \brief (SPI) Interrupt Disable Register */ +#define REG_SPI_IMR (*(RoReg*)0x4000801CU) /**< \brief (SPI) Interrupt Mask Register */ +#define REG_SPI_CSR (*(RwReg*)0x40008030U) /**< \brief (SPI) Chip Select Register */ +#define REG_SPI_WPMR (*(RwReg*)0x400080E4U) /**< \brief (SPI) Write Protection Control Register */ +#define REG_SPI_WPSR (*(RoReg*)0x400080E8U) /**< \brief (SPI) Write Protection Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_SPI_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_ssc.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_ssc.h new file mode 100644 index 000000000..8960a1196 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_ssc.h @@ -0,0 +1,74 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_SSC_INSTANCE_ +#define _SAM3U_SSC_INSTANCE_ + +/* ========== Register definition for SSC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SSC_CR (0x40004000U) /**< \brief (SSC) Control Register */ +#define REG_SSC_CMR (0x40004004U) /**< \brief (SSC) Clock Mode Register */ +#define REG_SSC_RCMR (0x40004010U) /**< \brief (SSC) Receive Clock Mode Register */ +#define REG_SSC_RFMR (0x40004014U) /**< \brief (SSC) Receive Frame Mode Register */ +#define REG_SSC_TCMR (0x40004018U) /**< \brief (SSC) Transmit Clock Mode Register */ +#define REG_SSC_TFMR (0x4000401CU) /**< \brief (SSC) Transmit Frame Mode Register */ +#define REG_SSC_RHR (0x40004020U) /**< \brief (SSC) Receive Holding Register */ +#define REG_SSC_THR (0x40004024U) /**< \brief (SSC) Transmit Holding Register */ +#define REG_SSC_RSHR (0x40004030U) /**< \brief (SSC) Receive Sync. Holding Register */ +#define REG_SSC_TSHR (0x40004034U) /**< \brief (SSC) Transmit Sync. Holding Register */ +#define REG_SSC_RC0R (0x40004038U) /**< \brief (SSC) Receive Compare 0 Register */ +#define REG_SSC_RC1R (0x4000403CU) /**< \brief (SSC) Receive Compare 1 Register */ +#define REG_SSC_SR (0x40004040U) /**< \brief (SSC) Status Register */ +#define REG_SSC_IER (0x40004044U) /**< \brief (SSC) Interrupt Enable Register */ +#define REG_SSC_IDR (0x40004048U) /**< \brief (SSC) Interrupt Disable Register */ +#define REG_SSC_IMR (0x4000404CU) /**< \brief (SSC) Interrupt Mask Register */ +#define REG_SSC_WPMR (0x400040E4U) /**< \brief (SSC) Write Protect Mode Register */ +#define REG_SSC_WPSR (0x400040E8U) /**< \brief (SSC) Write Protect Status Register */ +#else +#define REG_SSC_CR (*(WoReg*)0x40004000U) /**< \brief (SSC) Control Register */ +#define REG_SSC_CMR (*(RwReg*)0x40004004U) /**< \brief (SSC) Clock Mode Register */ +#define REG_SSC_RCMR (*(RwReg*)0x40004010U) /**< \brief (SSC) Receive Clock Mode Register */ +#define REG_SSC_RFMR (*(RwReg*)0x40004014U) /**< \brief (SSC) Receive Frame Mode Register */ +#define REG_SSC_TCMR (*(RwReg*)0x40004018U) /**< \brief (SSC) Transmit Clock Mode Register */ +#define REG_SSC_TFMR (*(RwReg*)0x4000401CU) /**< \brief (SSC) Transmit Frame Mode Register */ +#define REG_SSC_RHR (*(RoReg*)0x40004020U) /**< \brief (SSC) Receive Holding Register */ +#define REG_SSC_THR (*(WoReg*)0x40004024U) /**< \brief (SSC) Transmit Holding Register */ +#define REG_SSC_RSHR (*(RoReg*)0x40004030U) /**< \brief (SSC) Receive Sync. Holding Register */ +#define REG_SSC_TSHR (*(RwReg*)0x40004034U) /**< \brief (SSC) Transmit Sync. Holding Register */ +#define REG_SSC_RC0R (*(RwReg*)0x40004038U) /**< \brief (SSC) Receive Compare 0 Register */ +#define REG_SSC_RC1R (*(RwReg*)0x4000403CU) /**< \brief (SSC) Receive Compare 1 Register */ +#define REG_SSC_SR (*(RoReg*)0x40004040U) /**< \brief (SSC) Status Register */ +#define REG_SSC_IER (*(WoReg*)0x40004044U) /**< \brief (SSC) Interrupt Enable Register */ +#define REG_SSC_IDR (*(WoReg*)0x40004048U) /**< \brief (SSC) Interrupt Disable Register */ +#define REG_SSC_IMR (*(RoReg*)0x4000404CU) /**< \brief (SSC) Interrupt Mask Register */ +#define REG_SSC_WPMR (*(RwReg*)0x400040E4U) /**< \brief (SSC) Write Protect Mode Register */ +#define REG_SSC_WPSR (*(RoReg*)0x400040E8U) /**< \brief (SSC) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_SSC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_supc.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_supc.h new file mode 100644 index 000000000..cf26eaf8d --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_supc.h @@ -0,0 +1,50 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_SUPC_INSTANCE_ +#define _SAM3U_SUPC_INSTANCE_ + +/* ========== Register definition for SUPC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SUPC_CR (0x400E1210U) /**< \brief (SUPC) Supply Controller Control Register */ +#define REG_SUPC_SMMR (0x400E1214U) /**< \brief (SUPC) Supply Controller Supply Monitor Mode Register */ +#define REG_SUPC_MR (0x400E1218U) /**< \brief (SUPC) Supply Controller Mode Register */ +#define REG_SUPC_WUMR (0x400E121CU) /**< \brief (SUPC) Supply Controller Wake Up Mode Register */ +#define REG_SUPC_WUIR (0x400E1220U) /**< \brief (SUPC) Supply Controller Wake Up Inputs Register */ +#define REG_SUPC_SR (0x400E1224U) /**< \brief (SUPC) Supply Controller Status Register */ +#else +#define REG_SUPC_CR (*(WoReg*)0x400E1210U) /**< \brief (SUPC) Supply Controller Control Register */ +#define REG_SUPC_SMMR (*(RwReg*)0x400E1214U) /**< \brief (SUPC) Supply Controller Supply Monitor Mode Register */ +#define REG_SUPC_MR (*(RwReg*)0x400E1218U) /**< \brief (SUPC) Supply Controller Mode Register */ +#define REG_SUPC_WUMR (*(RwReg*)0x400E121CU) /**< \brief (SUPC) Supply Controller Wake Up Mode Register */ +#define REG_SUPC_WUIR (*(RwReg*)0x400E1220U) /**< \brief (SUPC) Supply Controller Wake Up Inputs Register */ +#define REG_SUPC_SR (*(RoReg*)0x400E1224U) /**< \brief (SUPC) Supply Controller Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_SUPC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_tc0.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_tc0.h new file mode 100644 index 000000000..ad44c5513 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_tc0.h @@ -0,0 +1,110 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_TC0_INSTANCE_ +#define _SAM3U_TC0_INSTANCE_ + +/* ========== Register definition for TC0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TC0_CCR0 (0x40080000U) /**< \brief (TC0) Channel Control Register (channel = 0) */ +#define REG_TC0_CMR0 (0x40080004U) /**< \brief (TC0) Channel Mode Register (channel = 0) */ +#define REG_TC0_CV0 (0x40080010U) /**< \brief (TC0) Counter Value (channel = 0) */ +#define REG_TC0_RA0 (0x40080014U) /**< \brief (TC0) Register A (channel = 0) */ +#define REG_TC0_RB0 (0x40080018U) /**< \brief (TC0) Register B (channel = 0) */ +#define REG_TC0_RC0 (0x4008001CU) /**< \brief (TC0) Register C (channel = 0) */ +#define REG_TC0_SR0 (0x40080020U) /**< \brief (TC0) Status Register (channel = 0) */ +#define REG_TC0_IER0 (0x40080024U) /**< \brief (TC0) Interrupt Enable Register (channel = 0) */ +#define REG_TC0_IDR0 (0x40080028U) /**< \brief (TC0) Interrupt Disable Register (channel = 0) */ +#define REG_TC0_IMR0 (0x4008002CU) /**< \brief (TC0) Interrupt Mask Register (channel = 0) */ +#define REG_TC0_CCR1 (0x40080040U) /**< \brief (TC0) Channel Control Register (channel = 1) */ +#define REG_TC0_CMR1 (0x40080044U) /**< \brief (TC0) Channel Mode Register (channel = 1) */ +#define REG_TC0_CV1 (0x40080050U) /**< \brief (TC0) Counter Value (channel = 1) */ +#define REG_TC0_RA1 (0x40080054U) /**< \brief (TC0) Register A (channel = 1) */ +#define REG_TC0_RB1 (0x40080058U) /**< \brief (TC0) Register B (channel = 1) */ +#define REG_TC0_RC1 (0x4008005CU) /**< \brief (TC0) Register C (channel = 1) */ +#define REG_TC0_SR1 (0x40080060U) /**< \brief (TC0) Status Register (channel = 1) */ +#define REG_TC0_IER1 (0x40080064U) /**< \brief (TC0) Interrupt Enable Register (channel = 1) */ +#define REG_TC0_IDR1 (0x40080068U) /**< \brief (TC0) Interrupt Disable Register (channel = 1) */ +#define REG_TC0_IMR1 (0x4008006CU) /**< \brief (TC0) Interrupt Mask Register (channel = 1) */ +#define REG_TC0_CCR2 (0x40080080U) /**< \brief (TC0) Channel Control Register (channel = 2) */ +#define REG_TC0_CMR2 (0x40080084U) /**< \brief (TC0) Channel Mode Register (channel = 2) */ +#define REG_TC0_CV2 (0x40080090U) /**< \brief (TC0) Counter Value (channel = 2) */ +#define REG_TC0_RA2 (0x40080094U) /**< \brief (TC0) Register A (channel = 2) */ +#define REG_TC0_RB2 (0x40080098U) /**< \brief (TC0) Register B (channel = 2) */ +#define REG_TC0_RC2 (0x4008009CU) /**< \brief (TC0) Register C (channel = 2) */ +#define REG_TC0_SR2 (0x400800A0U) /**< \brief (TC0) Status Register (channel = 2) */ +#define REG_TC0_IER2 (0x400800A4U) /**< \brief (TC0) Interrupt Enable Register (channel = 2) */ +#define REG_TC0_IDR2 (0x400800A8U) /**< \brief (TC0) Interrupt Disable Register (channel = 2) */ +#define REG_TC0_IMR2 (0x400800ACU) /**< \brief (TC0) Interrupt Mask Register (channel = 2) */ +#define REG_TC0_BCR (0x400800C0U) /**< \brief (TC0) Block Control Register */ +#define REG_TC0_BMR (0x400800C4U) /**< \brief (TC0) Block Mode Register */ +#define REG_TC0_QIER (0x400800C8U) /**< \brief (TC0) QDEC Interrupt Enable Register */ +#define REG_TC0_QIDR (0x400800CCU) /**< \brief (TC0) QDEC Interrupt Disable Register */ +#define REG_TC0_QIMR (0x400800D0U) /**< \brief (TC0) QDEC Interrupt Mask Register */ +#define REG_TC0_QISR (0x400800D4U) /**< \brief (TC0) QDEC Interrupt Status Register */ +#else +#define REG_TC0_CCR0 (*(WoReg*)0x40080000U) /**< \brief (TC0) Channel Control Register (channel = 0) */ +#define REG_TC0_CMR0 (*(RwReg*)0x40080004U) /**< \brief (TC0) Channel Mode Register (channel = 0) */ +#define REG_TC0_CV0 (*(RoReg*)0x40080010U) /**< \brief (TC0) Counter Value (channel = 0) */ +#define REG_TC0_RA0 (*(RwReg*)0x40080014U) /**< \brief (TC0) Register A (channel = 0) */ +#define REG_TC0_RB0 (*(RwReg*)0x40080018U) /**< \brief (TC0) Register B (channel = 0) */ +#define REG_TC0_RC0 (*(RwReg*)0x4008001CU) /**< \brief (TC0) Register C (channel = 0) */ +#define REG_TC0_SR0 (*(RoReg*)0x40080020U) /**< \brief (TC0) Status Register (channel = 0) */ +#define REG_TC0_IER0 (*(WoReg*)0x40080024U) /**< \brief (TC0) Interrupt Enable Register (channel = 0) */ +#define REG_TC0_IDR0 (*(WoReg*)0x40080028U) /**< \brief (TC0) Interrupt Disable Register (channel = 0) */ +#define REG_TC0_IMR0 (*(RoReg*)0x4008002CU) /**< \brief (TC0) Interrupt Mask Register (channel = 0) */ +#define REG_TC0_CCR1 (*(WoReg*)0x40080040U) /**< \brief (TC0) Channel Control Register (channel = 1) */ +#define REG_TC0_CMR1 (*(RwReg*)0x40080044U) /**< \brief (TC0) Channel Mode Register (channel = 1) */ +#define REG_TC0_CV1 (*(RoReg*)0x40080050U) /**< \brief (TC0) Counter Value (channel = 1) */ +#define REG_TC0_RA1 (*(RwReg*)0x40080054U) /**< \brief (TC0) Register A (channel = 1) */ +#define REG_TC0_RB1 (*(RwReg*)0x40080058U) /**< \brief (TC0) Register B (channel = 1) */ +#define REG_TC0_RC1 (*(RwReg*)0x4008005CU) /**< \brief (TC0) Register C (channel = 1) */ +#define REG_TC0_SR1 (*(RoReg*)0x40080060U) /**< \brief (TC0) Status Register (channel = 1) */ +#define REG_TC0_IER1 (*(WoReg*)0x40080064U) /**< \brief (TC0) Interrupt Enable Register (channel = 1) */ +#define REG_TC0_IDR1 (*(WoReg*)0x40080068U) /**< \brief (TC0) Interrupt Disable Register (channel = 1) */ +#define REG_TC0_IMR1 (*(RoReg*)0x4008006CU) /**< \brief (TC0) Interrupt Mask Register (channel = 1) */ +#define REG_TC0_CCR2 (*(WoReg*)0x40080080U) /**< \brief (TC0) Channel Control Register (channel = 2) */ +#define REG_TC0_CMR2 (*(RwReg*)0x40080084U) /**< \brief (TC0) Channel Mode Register (channel = 2) */ +#define REG_TC0_CV2 (*(RoReg*)0x40080090U) /**< \brief (TC0) Counter Value (channel = 2) */ +#define REG_TC0_RA2 (*(RwReg*)0x40080094U) /**< \brief (TC0) Register A (channel = 2) */ +#define REG_TC0_RB2 (*(RwReg*)0x40080098U) /**< \brief (TC0) Register B (channel = 2) */ +#define REG_TC0_RC2 (*(RwReg*)0x4008009CU) /**< \brief (TC0) Register C (channel = 2) */ +#define REG_TC0_SR2 (*(RoReg*)0x400800A0U) /**< \brief (TC0) Status Register (channel = 2) */ +#define REG_TC0_IER2 (*(WoReg*)0x400800A4U) /**< \brief (TC0) Interrupt Enable Register (channel = 2) */ +#define REG_TC0_IDR2 (*(WoReg*)0x400800A8U) /**< \brief (TC0) Interrupt Disable Register (channel = 2) */ +#define REG_TC0_IMR2 (*(RoReg*)0x400800ACU) /**< \brief (TC0) Interrupt Mask Register (channel = 2) */ +#define REG_TC0_BCR (*(WoReg*)0x400800C0U) /**< \brief (TC0) Block Control Register */ +#define REG_TC0_BMR (*(RwReg*)0x400800C4U) /**< \brief (TC0) Block Mode Register */ +#define REG_TC0_QIER (*(WoReg*)0x400800C8U) /**< \brief (TC0) QDEC Interrupt Enable Register */ +#define REG_TC0_QIDR (*(WoReg*)0x400800CCU) /**< \brief (TC0) QDEC Interrupt Disable Register */ +#define REG_TC0_QIMR (*(RoReg*)0x400800D0U) /**< \brief (TC0) QDEC Interrupt Mask Register */ +#define REG_TC0_QISR (*(RoReg*)0x400800D4U) /**< \brief (TC0) QDEC Interrupt Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_TC0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_twi0.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_twi0.h new file mode 100644 index 000000000..6498136c5 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_twi0.h @@ -0,0 +1,80 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_TWI0_INSTANCE_ +#define _SAM3U_TWI0_INSTANCE_ + +/* ========== Register definition for TWI0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TWI0_CR (0x40084000U) /**< \brief (TWI0) Control Register */ +#define REG_TWI0_MMR (0x40084004U) /**< \brief (TWI0) Master Mode Register */ +#define REG_TWI0_SMR (0x40084008U) /**< \brief (TWI0) Slave Mode Register */ +#define REG_TWI0_IADR (0x4008400CU) /**< \brief (TWI0) Internal Address Register */ +#define REG_TWI0_CWGR (0x40084010U) /**< \brief (TWI0) Clock Waveform Generator Register */ +#define REG_TWI0_SR (0x40084020U) /**< \brief (TWI0) Status Register */ +#define REG_TWI0_IER (0x40084024U) /**< \brief (TWI0) Interrupt Enable Register */ +#define REG_TWI0_IDR (0x40084028U) /**< \brief (TWI0) Interrupt Disable Register */ +#define REG_TWI0_IMR (0x4008402CU) /**< \brief (TWI0) Interrupt Mask Register */ +#define REG_TWI0_RHR (0x40084030U) /**< \brief (TWI0) Receive Holding Register */ +#define REG_TWI0_THR (0x40084034U) /**< \brief (TWI0) Transmit Holding Register */ +#define REG_TWI0_RPR (0x40084100U) /**< \brief (TWI0) Receive Pointer Register */ +#define REG_TWI0_RCR (0x40084104U) /**< \brief (TWI0) Receive Counter Register */ +#define REG_TWI0_TPR (0x40084108U) /**< \brief (TWI0) Transmit Pointer Register */ +#define REG_TWI0_TCR (0x4008410CU) /**< \brief (TWI0) Transmit Counter Register */ +#define REG_TWI0_RNPR (0x40084110U) /**< \brief (TWI0) Receive Next Pointer Register */ +#define REG_TWI0_RNCR (0x40084114U) /**< \brief (TWI0) Receive Next Counter Register */ +#define REG_TWI0_TNPR (0x40084118U) /**< \brief (TWI0) Transmit Next Pointer Register */ +#define REG_TWI0_TNCR (0x4008411CU) /**< \brief (TWI0) Transmit Next Counter Register */ +#define REG_TWI0_PTCR (0x40084120U) /**< \brief (TWI0) Transfer Control Register */ +#define REG_TWI0_PTSR (0x40084124U) /**< \brief (TWI0) Transfer Status Register */ +#else +#define REG_TWI0_CR (*(WoReg*)0x40084000U) /**< \brief (TWI0) Control Register */ +#define REG_TWI0_MMR (*(RwReg*)0x40084004U) /**< \brief (TWI0) Master Mode Register */ +#define REG_TWI0_SMR (*(RwReg*)0x40084008U) /**< \brief (TWI0) Slave Mode Register */ +#define REG_TWI0_IADR (*(RwReg*)0x4008400CU) /**< \brief (TWI0) Internal Address Register */ +#define REG_TWI0_CWGR (*(RwReg*)0x40084010U) /**< \brief (TWI0) Clock Waveform Generator Register */ +#define REG_TWI0_SR (*(RoReg*)0x40084020U) /**< \brief (TWI0) Status Register */ +#define REG_TWI0_IER (*(WoReg*)0x40084024U) /**< \brief (TWI0) Interrupt Enable Register */ +#define REG_TWI0_IDR (*(WoReg*)0x40084028U) /**< \brief (TWI0) Interrupt Disable Register */ +#define REG_TWI0_IMR (*(RoReg*)0x4008402CU) /**< \brief (TWI0) Interrupt Mask Register */ +#define REG_TWI0_RHR (*(RoReg*)0x40084030U) /**< \brief (TWI0) Receive Holding Register */ +#define REG_TWI0_THR (*(WoReg*)0x40084034U) /**< \brief (TWI0) Transmit Holding Register */ +#define REG_TWI0_RPR (*(RwReg*)0x40084100U) /**< \brief (TWI0) Receive Pointer Register */ +#define REG_TWI0_RCR (*(RwReg*)0x40084104U) /**< \brief (TWI0) Receive Counter Register */ +#define REG_TWI0_TPR (*(RwReg*)0x40084108U) /**< \brief (TWI0) Transmit Pointer Register */ +#define REG_TWI0_TCR (*(RwReg*)0x4008410CU) /**< \brief (TWI0) Transmit Counter Register */ +#define REG_TWI0_RNPR (*(RwReg*)0x40084110U) /**< \brief (TWI0) Receive Next Pointer Register */ +#define REG_TWI0_RNCR (*(RwReg*)0x40084114U) /**< \brief (TWI0) Receive Next Counter Register */ +#define REG_TWI0_TNPR (*(RwReg*)0x40084118U) /**< \brief (TWI0) Transmit Next Pointer Register */ +#define REG_TWI0_TNCR (*(RwReg*)0x4008411CU) /**< \brief (TWI0) Transmit Next Counter Register */ +#define REG_TWI0_PTCR (*(WoReg*)0x40084120U) /**< \brief (TWI0) Transfer Control Register */ +#define REG_TWI0_PTSR (*(RoReg*)0x40084124U) /**< \brief (TWI0) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_TWI0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_twi1.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_twi1.h new file mode 100644 index 000000000..aabfbad93 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_twi1.h @@ -0,0 +1,80 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_TWI1_INSTANCE_ +#define _SAM3U_TWI1_INSTANCE_ + +/* ========== Register definition for TWI1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TWI1_CR (0x40088000U) /**< \brief (TWI1) Control Register */ +#define REG_TWI1_MMR (0x40088004U) /**< \brief (TWI1) Master Mode Register */ +#define REG_TWI1_SMR (0x40088008U) /**< \brief (TWI1) Slave Mode Register */ +#define REG_TWI1_IADR (0x4008800CU) /**< \brief (TWI1) Internal Address Register */ +#define REG_TWI1_CWGR (0x40088010U) /**< \brief (TWI1) Clock Waveform Generator Register */ +#define REG_TWI1_SR (0x40088020U) /**< \brief (TWI1) Status Register */ +#define REG_TWI1_IER (0x40088024U) /**< \brief (TWI1) Interrupt Enable Register */ +#define REG_TWI1_IDR (0x40088028U) /**< \brief (TWI1) Interrupt Disable Register */ +#define REG_TWI1_IMR (0x4008802CU) /**< \brief (TWI1) Interrupt Mask Register */ +#define REG_TWI1_RHR (0x40088030U) /**< \brief (TWI1) Receive Holding Register */ +#define REG_TWI1_THR (0x40088034U) /**< \brief (TWI1) Transmit Holding Register */ +#define REG_TWI1_RPR (0x40088100U) /**< \brief (TWI1) Receive Pointer Register */ +#define REG_TWI1_RCR (0x40088104U) /**< \brief (TWI1) Receive Counter Register */ +#define REG_TWI1_TPR (0x40088108U) /**< \brief (TWI1) Transmit Pointer Register */ +#define REG_TWI1_TCR (0x4008810CU) /**< \brief (TWI1) Transmit Counter Register */ +#define REG_TWI1_RNPR (0x40088110U) /**< \brief (TWI1) Receive Next Pointer Register */ +#define REG_TWI1_RNCR (0x40088114U) /**< \brief (TWI1) Receive Next Counter Register */ +#define REG_TWI1_TNPR (0x40088118U) /**< \brief (TWI1) Transmit Next Pointer Register */ +#define REG_TWI1_TNCR (0x4008811CU) /**< \brief (TWI1) Transmit Next Counter Register */ +#define REG_TWI1_PTCR (0x40088120U) /**< \brief (TWI1) Transfer Control Register */ +#define REG_TWI1_PTSR (0x40088124U) /**< \brief (TWI1) Transfer Status Register */ +#else +#define REG_TWI1_CR (*(WoReg*)0x40088000U) /**< \brief (TWI1) Control Register */ +#define REG_TWI1_MMR (*(RwReg*)0x40088004U) /**< \brief (TWI1) Master Mode Register */ +#define REG_TWI1_SMR (*(RwReg*)0x40088008U) /**< \brief (TWI1) Slave Mode Register */ +#define REG_TWI1_IADR (*(RwReg*)0x4008800CU) /**< \brief (TWI1) Internal Address Register */ +#define REG_TWI1_CWGR (*(RwReg*)0x40088010U) /**< \brief (TWI1) Clock Waveform Generator Register */ +#define REG_TWI1_SR (*(RoReg*)0x40088020U) /**< \brief (TWI1) Status Register */ +#define REG_TWI1_IER (*(WoReg*)0x40088024U) /**< \brief (TWI1) Interrupt Enable Register */ +#define REG_TWI1_IDR (*(WoReg*)0x40088028U) /**< \brief (TWI1) Interrupt Disable Register */ +#define REG_TWI1_IMR (*(RoReg*)0x4008802CU) /**< \brief (TWI1) Interrupt Mask Register */ +#define REG_TWI1_RHR (*(RoReg*)0x40088030U) /**< \brief (TWI1) Receive Holding Register */ +#define REG_TWI1_THR (*(WoReg*)0x40088034U) /**< \brief (TWI1) Transmit Holding Register */ +#define REG_TWI1_RPR (*(RwReg*)0x40088100U) /**< \brief (TWI1) Receive Pointer Register */ +#define REG_TWI1_RCR (*(RwReg*)0x40088104U) /**< \brief (TWI1) Receive Counter Register */ +#define REG_TWI1_TPR (*(RwReg*)0x40088108U) /**< \brief (TWI1) Transmit Pointer Register */ +#define REG_TWI1_TCR (*(RwReg*)0x4008810CU) /**< \brief (TWI1) Transmit Counter Register */ +#define REG_TWI1_RNPR (*(RwReg*)0x40088110U) /**< \brief (TWI1) Receive Next Pointer Register */ +#define REG_TWI1_RNCR (*(RwReg*)0x40088114U) /**< \brief (TWI1) Receive Next Counter Register */ +#define REG_TWI1_TNPR (*(RwReg*)0x40088118U) /**< \brief (TWI1) Transmit Next Pointer Register */ +#define REG_TWI1_TNCR (*(RwReg*)0x4008811CU) /**< \brief (TWI1) Transmit Next Counter Register */ +#define REG_TWI1_PTCR (*(WoReg*)0x40088120U) /**< \brief (TWI1) Transfer Control Register */ +#define REG_TWI1_PTSR (*(RoReg*)0x40088124U) /**< \brief (TWI1) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_TWI1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_uart.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_uart.h new file mode 100644 index 000000000..f0cf7002c --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_uart.h @@ -0,0 +1,76 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_UART_INSTANCE_ +#define _SAM3U_UART_INSTANCE_ + +/* ========== Register definition for UART peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_UART_CR (0x400E0600U) /**< \brief (UART) Control Register */ +#define REG_UART_MR (0x400E0604U) /**< \brief (UART) Mode Register */ +#define REG_UART_IER (0x400E0608U) /**< \brief (UART) Interrupt Enable Register */ +#define REG_UART_IDR (0x400E060CU) /**< \brief (UART) Interrupt Disable Register */ +#define REG_UART_IMR (0x400E0610U) /**< \brief (UART) Interrupt Mask Register */ +#define REG_UART_SR (0x400E0614U) /**< \brief (UART) Status Register */ +#define REG_UART_RHR (0x400E0618U) /**< \brief (UART) Receive Holding Register */ +#define REG_UART_THR (0x400E061CU) /**< \brief (UART) Transmit Holding Register */ +#define REG_UART_BRGR (0x400E0620U) /**< \brief (UART) Baud Rate Generator Register */ +#define REG_UART_RPR (0x400E0700U) /**< \brief (UART) Receive Pointer Register */ +#define REG_UART_RCR (0x400E0704U) /**< \brief (UART) Receive Counter Register */ +#define REG_UART_TPR (0x400E0708U) /**< \brief (UART) Transmit Pointer Register */ +#define REG_UART_TCR (0x400E070CU) /**< \brief (UART) Transmit Counter Register */ +#define REG_UART_RNPR (0x400E0710U) /**< \brief (UART) Receive Next Pointer Register */ +#define REG_UART_RNCR (0x400E0714U) /**< \brief (UART) Receive Next Counter Register */ +#define REG_UART_TNPR (0x400E0718U) /**< \brief (UART) Transmit Next Pointer Register */ +#define REG_UART_TNCR (0x400E071CU) /**< \brief (UART) Transmit Next Counter Register */ +#define REG_UART_PTCR (0x400E0720U) /**< \brief (UART) Transfer Control Register */ +#define REG_UART_PTSR (0x400E0724U) /**< \brief (UART) Transfer Status Register */ +#else +#define REG_UART_CR (*(WoReg*)0x400E0600U) /**< \brief (UART) Control Register */ +#define REG_UART_MR (*(RwReg*)0x400E0604U) /**< \brief (UART) Mode Register */ +#define REG_UART_IER (*(WoReg*)0x400E0608U) /**< \brief (UART) Interrupt Enable Register */ +#define REG_UART_IDR (*(WoReg*)0x400E060CU) /**< \brief (UART) Interrupt Disable Register */ +#define REG_UART_IMR (*(RoReg*)0x400E0610U) /**< \brief (UART) Interrupt Mask Register */ +#define REG_UART_SR (*(RoReg*)0x400E0614U) /**< \brief (UART) Status Register */ +#define REG_UART_RHR (*(RoReg*)0x400E0618U) /**< \brief (UART) Receive Holding Register */ +#define REG_UART_THR (*(WoReg*)0x400E061CU) /**< \brief (UART) Transmit Holding Register */ +#define REG_UART_BRGR (*(RwReg*)0x400E0620U) /**< \brief (UART) Baud Rate Generator Register */ +#define REG_UART_RPR (*(RwReg*)0x400E0700U) /**< \brief (UART) Receive Pointer Register */ +#define REG_UART_RCR (*(RwReg*)0x400E0704U) /**< \brief (UART) Receive Counter Register */ +#define REG_UART_TPR (*(RwReg*)0x400E0708U) /**< \brief (UART) Transmit Pointer Register */ +#define REG_UART_TCR (*(RwReg*)0x400E070CU) /**< \brief (UART) Transmit Counter Register */ +#define REG_UART_RNPR (*(RwReg*)0x400E0710U) /**< \brief (UART) Receive Next Pointer Register */ +#define REG_UART_RNCR (*(RwReg*)0x400E0714U) /**< \brief (UART) Receive Next Counter Register */ +#define REG_UART_TNPR (*(RwReg*)0x400E0718U) /**< \brief (UART) Transmit Next Pointer Register */ +#define REG_UART_TNCR (*(RwReg*)0x400E071CU) /**< \brief (UART) Transmit Next Counter Register */ +#define REG_UART_PTCR (*(WoReg*)0x400E0720U) /**< \brief (UART) Transfer Control Register */ +#define REG_UART_PTSR (*(RoReg*)0x400E0724U) /**< \brief (UART) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_UART_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_udphs.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_udphs.h new file mode 100644 index 000000000..5b39da837 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_udphs.h @@ -0,0 +1,204 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_UDPHS_INSTANCE_ +#define _SAM3U_UDPHS_INSTANCE_ + +/* ========== Register definition for UDPHS peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_UDPHS_CTRL (0x400A4000U) /**< \brief (UDPHS) UDPHS Control Register */ +#define REG_UDPHS_FNUM (0x400A4004U) /**< \brief (UDPHS) UDPHS Frame Number Register */ +#define REG_UDPHS_IEN (0x400A4010U) /**< \brief (UDPHS) UDPHS Interrupt Enable Register */ +#define REG_UDPHS_INTSTA (0x400A4014U) /**< \brief (UDPHS) UDPHS Interrupt Status Register */ +#define REG_UDPHS_CLRINT (0x400A4018U) /**< \brief (UDPHS) UDPHS Clear Interrupt Register */ +#define REG_UDPHS_EPTRST (0x400A401CU) /**< \brief (UDPHS) UDPHS Endpoints Reset Register */ +#define REG_UDPHS_TST (0x400A40E0U) /**< \brief (UDPHS) UDPHS Test Register */ +#define REG_UDPHS_IPNAME1 (0x400A40F0U) /**< \brief (UDPHS) UDPHS Name1 Register */ +#define REG_UDPHS_IPNAME2 (0x400A40F4U) /**< \brief (UDPHS) UDPHS Name2 Register */ +#define REG_UDPHS_IPFEATURES (0x400A40F8U) /**< \brief (UDPHS) UDPHS Features Register */ +#define REG_UDPHS_EPTCFG0 (0x400A4100U) /**< \brief (UDPHS) UDPHS Endpoint Configuration Register (endpoint = 0) */ +#define REG_UDPHS_EPTCTLENB0 (0x400A4104U) /**< \brief (UDPHS) UDPHS Endpoint Control Enable Register (endpoint = 0) */ +#define REG_UDPHS_EPTCTLDIS0 (0x400A4108U) /**< \brief (UDPHS) UDPHS Endpoint Control Disable Register (endpoint = 0) */ +#define REG_UDPHS_EPTCTL0 (0x400A410CU) /**< \brief (UDPHS) UDPHS Endpoint Control Register (endpoint = 0) */ +#define REG_UDPHS_EPTSETSTA0 (0x400A4114U) /**< \brief (UDPHS) UDPHS Endpoint Set Status Register (endpoint = 0) */ +#define REG_UDPHS_EPTCLRSTA0 (0x400A4118U) /**< \brief (UDPHS) UDPHS Endpoint Clear Status Register (endpoint = 0) */ +#define REG_UDPHS_EPTSTA0 (0x400A411CU) /**< \brief (UDPHS) UDPHS Endpoint Status Register (endpoint = 0) */ +#define REG_UDPHS_EPTCFG1 (0x400A4120U) /**< \brief (UDPHS) UDPHS Endpoint Configuration Register (endpoint = 1) */ +#define REG_UDPHS_EPTCTLENB1 (0x400A4124U) /**< \brief (UDPHS) UDPHS Endpoint Control Enable Register (endpoint = 1) */ +#define REG_UDPHS_EPTCTLDIS1 (0x400A4128U) /**< \brief (UDPHS) UDPHS Endpoint Control Disable Register (endpoint = 1) */ +#define REG_UDPHS_EPTCTL1 (0x400A412CU) /**< \brief (UDPHS) UDPHS Endpoint Control Register (endpoint = 1) */ +#define REG_UDPHS_EPTSETSTA1 (0x400A4134U) /**< \brief (UDPHS) UDPHS Endpoint Set Status Register (endpoint = 1) */ +#define REG_UDPHS_EPTCLRSTA1 (0x400A4138U) /**< \brief (UDPHS) UDPHS Endpoint Clear Status Register (endpoint = 1) */ +#define REG_UDPHS_EPTSTA1 (0x400A413CU) /**< \brief (UDPHS) UDPHS Endpoint Status Register (endpoint = 1) */ +#define REG_UDPHS_EPTCFG2 (0x400A4140U) /**< \brief (UDPHS) UDPHS Endpoint Configuration Register (endpoint = 2) */ +#define REG_UDPHS_EPTCTLENB2 (0x400A4144U) /**< \brief (UDPHS) UDPHS Endpoint Control Enable Register (endpoint = 2) */ +#define REG_UDPHS_EPTCTLDIS2 (0x400A4148U) /**< \brief (UDPHS) UDPHS Endpoint Control Disable Register (endpoint = 2) */ +#define REG_UDPHS_EPTCTL2 (0x400A414CU) /**< \brief (UDPHS) UDPHS Endpoint Control Register (endpoint = 2) */ +#define REG_UDPHS_EPTSETSTA2 (0x400A4154U) /**< \brief (UDPHS) UDPHS Endpoint Set Status Register (endpoint = 2) */ +#define REG_UDPHS_EPTCLRSTA2 (0x400A4158U) /**< \brief (UDPHS) UDPHS Endpoint Clear Status Register (endpoint = 2) */ +#define REG_UDPHS_EPTSTA2 (0x400A415CU) /**< \brief (UDPHS) UDPHS Endpoint Status Register (endpoint = 2) */ +#define REG_UDPHS_EPTCFG3 (0x400A4160U) /**< \brief (UDPHS) UDPHS Endpoint Configuration Register (endpoint = 3) */ +#define REG_UDPHS_EPTCTLENB3 (0x400A4164U) /**< \brief (UDPHS) UDPHS Endpoint Control Enable Register (endpoint = 3) */ +#define REG_UDPHS_EPTCTLDIS3 (0x400A4168U) /**< \brief (UDPHS) UDPHS Endpoint Control Disable Register (endpoint = 3) */ +#define REG_UDPHS_EPTCTL3 (0x400A416CU) /**< \brief (UDPHS) UDPHS Endpoint Control Register (endpoint = 3) */ +#define REG_UDPHS_EPTSETSTA3 (0x400A4174U) /**< \brief (UDPHS) UDPHS Endpoint Set Status Register (endpoint = 3) */ +#define REG_UDPHS_EPTCLRSTA3 (0x400A4178U) /**< \brief (UDPHS) UDPHS Endpoint Clear Status Register (endpoint = 3) */ +#define REG_UDPHS_EPTSTA3 (0x400A417CU) /**< \brief (UDPHS) UDPHS Endpoint Status Register (endpoint = 3) */ +#define REG_UDPHS_EPTCFG4 (0x400A4180U) /**< \brief (UDPHS) UDPHS Endpoint Configuration Register (endpoint = 4) */ +#define REG_UDPHS_EPTCTLENB4 (0x400A4184U) /**< \brief (UDPHS) UDPHS Endpoint Control Enable Register (endpoint = 4) */ +#define REG_UDPHS_EPTCTLDIS4 (0x400A4188U) /**< \brief (UDPHS) UDPHS Endpoint Control Disable Register (endpoint = 4) */ +#define REG_UDPHS_EPTCTL4 (0x400A418CU) /**< \brief (UDPHS) UDPHS Endpoint Control Register (endpoint = 4) */ +#define REG_UDPHS_EPTSETSTA4 (0x400A4194U) /**< \brief (UDPHS) UDPHS Endpoint Set Status Register (endpoint = 4) */ +#define REG_UDPHS_EPTCLRSTA4 (0x400A4198U) /**< \brief (UDPHS) UDPHS Endpoint Clear Status Register (endpoint = 4) */ +#define REG_UDPHS_EPTSTA4 (0x400A419CU) /**< \brief (UDPHS) UDPHS Endpoint Status Register (endpoint = 4) */ +#define REG_UDPHS_EPTCFG5 (0x400A41A0U) /**< \brief (UDPHS) UDPHS Endpoint Configuration Register (endpoint = 5) */ +#define REG_UDPHS_EPTCTLENB5 (0x400A41A4U) /**< \brief (UDPHS) UDPHS Endpoint Control Enable Register (endpoint = 5) */ +#define REG_UDPHS_EPTCTLDIS5 (0x400A41A8U) /**< \brief (UDPHS) UDPHS Endpoint Control Disable Register (endpoint = 5) */ +#define REG_UDPHS_EPTCTL5 (0x400A41ACU) /**< \brief (UDPHS) UDPHS Endpoint Control Register (endpoint = 5) */ +#define REG_UDPHS_EPTSETSTA5 (0x400A41B4U) /**< \brief (UDPHS) UDPHS Endpoint Set Status Register (endpoint = 5) */ +#define REG_UDPHS_EPTCLRSTA5 (0x400A41B8U) /**< \brief (UDPHS) UDPHS Endpoint Clear Status Register (endpoint = 5) */ +#define REG_UDPHS_EPTSTA5 (0x400A41BCU) /**< \brief (UDPHS) UDPHS Endpoint Status Register (endpoint = 5) */ +#define REG_UDPHS_EPTCFG6 (0x400A41C0U) /**< \brief (UDPHS) UDPHS Endpoint Configuration Register (endpoint = 6) */ +#define REG_UDPHS_EPTCTLENB6 (0x400A41C4U) /**< \brief (UDPHS) UDPHS Endpoint Control Enable Register (endpoint = 6) */ +#define REG_UDPHS_EPTCTLDIS6 (0x400A41C8U) /**< \brief (UDPHS) UDPHS Endpoint Control Disable Register (endpoint = 6) */ +#define REG_UDPHS_EPTCTL6 (0x400A41CCU) /**< \brief (UDPHS) UDPHS Endpoint Control Register (endpoint = 6) */ +#define REG_UDPHS_EPTSETSTA6 (0x400A41D4U) /**< \brief (UDPHS) UDPHS Endpoint Set Status Register (endpoint = 6) */ +#define REG_UDPHS_EPTCLRSTA6 (0x400A41D8U) /**< \brief (UDPHS) UDPHS Endpoint Clear Status Register (endpoint = 6) */ +#define REG_UDPHS_EPTSTA6 (0x400A41DCU) /**< \brief (UDPHS) UDPHS Endpoint Status Register (endpoint = 6) */ +#define REG_UDPHS_DMANXTDSC0 (0x400A4300U) /**< \brief (UDPHS) UDPHS DMA Next Descriptor Address Register (channel = 0) */ +#define REG_UDPHS_DMAADDRESS0 (0x400A4304U) /**< \brief (UDPHS) UDPHS DMA Channel Address Register (channel = 0) */ +#define REG_UDPHS_DMACONTROL0 (0x400A4308U) /**< \brief (UDPHS) UDPHS DMA Channel Control Register (channel = 0) */ +#define REG_UDPHS_DMASTATUS0 (0x400A430CU) /**< \brief (UDPHS) UDPHS DMA Channel Status Register (channel = 0) */ +#define REG_UDPHS_DMANXTDSC1 (0x400A4310U) /**< \brief (UDPHS) UDPHS DMA Next Descriptor Address Register (channel = 1) */ +#define REG_UDPHS_DMAADDRESS1 (0x400A4314U) /**< \brief (UDPHS) UDPHS DMA Channel Address Register (channel = 1) */ +#define REG_UDPHS_DMACONTROL1 (0x400A4318U) /**< \brief (UDPHS) UDPHS DMA Channel Control Register (channel = 1) */ +#define REG_UDPHS_DMASTATUS1 (0x400A431CU) /**< \brief (UDPHS) UDPHS DMA Channel Status Register (channel = 1) */ +#define REG_UDPHS_DMANXTDSC2 (0x400A4320U) /**< \brief (UDPHS) UDPHS DMA Next Descriptor Address Register (channel = 2) */ +#define REG_UDPHS_DMAADDRESS2 (0x400A4324U) /**< \brief (UDPHS) UDPHS DMA Channel Address Register (channel = 2) */ +#define REG_UDPHS_DMACONTROL2 (0x400A4328U) /**< \brief (UDPHS) UDPHS DMA Channel Control Register (channel = 2) */ +#define REG_UDPHS_DMASTATUS2 (0x400A432CU) /**< \brief (UDPHS) UDPHS DMA Channel Status Register (channel = 2) */ +#define REG_UDPHS_DMANXTDSC3 (0x400A4330U) /**< \brief (UDPHS) UDPHS DMA Next Descriptor Address Register (channel = 3) */ +#define REG_UDPHS_DMAADDRESS3 (0x400A4334U) /**< \brief (UDPHS) UDPHS DMA Channel Address Register (channel = 3) */ +#define REG_UDPHS_DMACONTROL3 (0x400A4338U) /**< \brief (UDPHS) UDPHS DMA Channel Control Register (channel = 3) */ +#define REG_UDPHS_DMASTATUS3 (0x400A433CU) /**< \brief (UDPHS) UDPHS DMA Channel Status Register (channel = 3) */ +#define REG_UDPHS_DMANXTDSC4 (0x400A4340U) /**< \brief (UDPHS) UDPHS DMA Next Descriptor Address Register (channel = 4) */ +#define REG_UDPHS_DMAADDRESS4 (0x400A4344U) /**< \brief (UDPHS) UDPHS DMA Channel Address Register (channel = 4) */ +#define REG_UDPHS_DMACONTROL4 (0x400A4348U) /**< \brief (UDPHS) UDPHS DMA Channel Control Register (channel = 4) */ +#define REG_UDPHS_DMASTATUS4 (0x400A434CU) /**< \brief (UDPHS) UDPHS DMA Channel Status Register (channel = 4) */ +#define REG_UDPHS_DMANXTDSC5 (0x400A4350U) /**< \brief (UDPHS) UDPHS DMA Next Descriptor Address Register (channel = 5) */ +#define REG_UDPHS_DMAADDRESS5 (0x400A4354U) /**< \brief (UDPHS) UDPHS DMA Channel Address Register (channel = 5) */ +#define REG_UDPHS_DMACONTROL5 (0x400A4358U) /**< \brief (UDPHS) UDPHS DMA Channel Control Register (channel = 5) */ +#define REG_UDPHS_DMASTATUS5 (0x400A435CU) /**< \brief (UDPHS) UDPHS DMA Channel Status Register (channel = 5) */ +#else +#define REG_UDPHS_CTRL (*(RwReg*)0x400A4000U) /**< \brief (UDPHS) UDPHS Control Register */ +#define REG_UDPHS_FNUM (*(RoReg*)0x400A4004U) /**< \brief (UDPHS) UDPHS Frame Number Register */ +#define REG_UDPHS_IEN (*(RwReg*)0x400A4010U) /**< \brief (UDPHS) UDPHS Interrupt Enable Register */ +#define REG_UDPHS_INTSTA (*(RoReg*)0x400A4014U) /**< \brief (UDPHS) UDPHS Interrupt Status Register */ +#define REG_UDPHS_CLRINT (*(WoReg*)0x400A4018U) /**< \brief (UDPHS) UDPHS Clear Interrupt Register */ +#define REG_UDPHS_EPTRST (*(WoReg*)0x400A401CU) /**< \brief (UDPHS) UDPHS Endpoints Reset Register */ +#define REG_UDPHS_TST (*(RwReg*)0x400A40E0U) /**< \brief (UDPHS) UDPHS Test Register */ +#define REG_UDPHS_IPNAME1 (*(RoReg*)0x400A40F0U) /**< \brief (UDPHS) UDPHS Name1 Register */ +#define REG_UDPHS_IPNAME2 (*(RoReg*)0x400A40F4U) /**< \brief (UDPHS) UDPHS Name2 Register */ +#define REG_UDPHS_IPFEATURES (*(RoReg*)0x400A40F8U) /**< \brief (UDPHS) UDPHS Features Register */ +#define REG_UDPHS_EPTCFG0 (*(RwReg*)0x400A4100U) /**< \brief (UDPHS) UDPHS Endpoint Configuration Register (endpoint = 0) */ +#define REG_UDPHS_EPTCTLENB0 (*(WoReg*)0x400A4104U) /**< \brief (UDPHS) UDPHS Endpoint Control Enable Register (endpoint = 0) */ +#define REG_UDPHS_EPTCTLDIS0 (*(WoReg*)0x400A4108U) /**< \brief (UDPHS) UDPHS Endpoint Control Disable Register (endpoint = 0) */ +#define REG_UDPHS_EPTCTL0 (*(RoReg*)0x400A410CU) /**< \brief (UDPHS) UDPHS Endpoint Control Register (endpoint = 0) */ +#define REG_UDPHS_EPTSETSTA0 (*(WoReg*)0x400A4114U) /**< \brief (UDPHS) UDPHS Endpoint Set Status Register (endpoint = 0) */ +#define REG_UDPHS_EPTCLRSTA0 (*(WoReg*)0x400A4118U) /**< \brief (UDPHS) UDPHS Endpoint Clear Status Register (endpoint = 0) */ +#define REG_UDPHS_EPTSTA0 (*(RoReg*)0x400A411CU) /**< \brief (UDPHS) UDPHS Endpoint Status Register (endpoint = 0) */ +#define REG_UDPHS_EPTCFG1 (*(RwReg*)0x400A4120U) /**< \brief (UDPHS) UDPHS Endpoint Configuration Register (endpoint = 1) */ +#define REG_UDPHS_EPTCTLENB1 (*(WoReg*)0x400A4124U) /**< \brief (UDPHS) UDPHS Endpoint Control Enable Register (endpoint = 1) */ +#define REG_UDPHS_EPTCTLDIS1 (*(WoReg*)0x400A4128U) /**< \brief (UDPHS) UDPHS Endpoint Control Disable Register (endpoint = 1) */ +#define REG_UDPHS_EPTCTL1 (*(RoReg*)0x400A412CU) /**< \brief (UDPHS) UDPHS Endpoint Control Register (endpoint = 1) */ +#define REG_UDPHS_EPTSETSTA1 (*(WoReg*)0x400A4134U) /**< \brief (UDPHS) UDPHS Endpoint Set Status Register (endpoint = 1) */ +#define REG_UDPHS_EPTCLRSTA1 (*(WoReg*)0x400A4138U) /**< \brief (UDPHS) UDPHS Endpoint Clear Status Register (endpoint = 1) */ +#define REG_UDPHS_EPTSTA1 (*(RoReg*)0x400A413CU) /**< \brief (UDPHS) UDPHS Endpoint Status Register (endpoint = 1) */ +#define REG_UDPHS_EPTCFG2 (*(RwReg*)0x400A4140U) /**< \brief (UDPHS) UDPHS Endpoint Configuration Register (endpoint = 2) */ +#define REG_UDPHS_EPTCTLENB2 (*(WoReg*)0x400A4144U) /**< \brief (UDPHS) UDPHS Endpoint Control Enable Register (endpoint = 2) */ +#define REG_UDPHS_EPTCTLDIS2 (*(WoReg*)0x400A4148U) /**< \brief (UDPHS) UDPHS Endpoint Control Disable Register (endpoint = 2) */ +#define REG_UDPHS_EPTCTL2 (*(RoReg*)0x400A414CU) /**< \brief (UDPHS) UDPHS Endpoint Control Register (endpoint = 2) */ +#define REG_UDPHS_EPTSETSTA2 (*(WoReg*)0x400A4154U) /**< \brief (UDPHS) UDPHS Endpoint Set Status Register (endpoint = 2) */ +#define REG_UDPHS_EPTCLRSTA2 (*(WoReg*)0x400A4158U) /**< \brief (UDPHS) UDPHS Endpoint Clear Status Register (endpoint = 2) */ +#define REG_UDPHS_EPTSTA2 (*(RoReg*)0x400A415CU) /**< \brief (UDPHS) UDPHS Endpoint Status Register (endpoint = 2) */ +#define REG_UDPHS_EPTCFG3 (*(RwReg*)0x400A4160U) /**< \brief (UDPHS) UDPHS Endpoint Configuration Register (endpoint = 3) */ +#define REG_UDPHS_EPTCTLENB3 (*(WoReg*)0x400A4164U) /**< \brief (UDPHS) UDPHS Endpoint Control Enable Register (endpoint = 3) */ +#define REG_UDPHS_EPTCTLDIS3 (*(WoReg*)0x400A4168U) /**< \brief (UDPHS) UDPHS Endpoint Control Disable Register (endpoint = 3) */ +#define REG_UDPHS_EPTCTL3 (*(RoReg*)0x400A416CU) /**< \brief (UDPHS) UDPHS Endpoint Control Register (endpoint = 3) */ +#define REG_UDPHS_EPTSETSTA3 (*(WoReg*)0x400A4174U) /**< \brief (UDPHS) UDPHS Endpoint Set Status Register (endpoint = 3) */ +#define REG_UDPHS_EPTCLRSTA3 (*(WoReg*)0x400A4178U) /**< \brief (UDPHS) UDPHS Endpoint Clear Status Register (endpoint = 3) */ +#define REG_UDPHS_EPTSTA3 (*(RoReg*)0x400A417CU) /**< \brief (UDPHS) UDPHS Endpoint Status Register (endpoint = 3) */ +#define REG_UDPHS_EPTCFG4 (*(RwReg*)0x400A4180U) /**< \brief (UDPHS) UDPHS Endpoint Configuration Register (endpoint = 4) */ +#define REG_UDPHS_EPTCTLENB4 (*(WoReg*)0x400A4184U) /**< \brief (UDPHS) UDPHS Endpoint Control Enable Register (endpoint = 4) */ +#define REG_UDPHS_EPTCTLDIS4 (*(WoReg*)0x400A4188U) /**< \brief (UDPHS) UDPHS Endpoint Control Disable Register (endpoint = 4) */ +#define REG_UDPHS_EPTCTL4 (*(RoReg*)0x400A418CU) /**< \brief (UDPHS) UDPHS Endpoint Control Register (endpoint = 4) */ +#define REG_UDPHS_EPTSETSTA4 (*(WoReg*)0x400A4194U) /**< \brief (UDPHS) UDPHS Endpoint Set Status Register (endpoint = 4) */ +#define REG_UDPHS_EPTCLRSTA4 (*(WoReg*)0x400A4198U) /**< \brief (UDPHS) UDPHS Endpoint Clear Status Register (endpoint = 4) */ +#define REG_UDPHS_EPTSTA4 (*(RoReg*)0x400A419CU) /**< \brief (UDPHS) UDPHS Endpoint Status Register (endpoint = 4) */ +#define REG_UDPHS_EPTCFG5 (*(RwReg*)0x400A41A0U) /**< \brief (UDPHS) UDPHS Endpoint Configuration Register (endpoint = 5) */ +#define REG_UDPHS_EPTCTLENB5 (*(WoReg*)0x400A41A4U) /**< \brief (UDPHS) UDPHS Endpoint Control Enable Register (endpoint = 5) */ +#define REG_UDPHS_EPTCTLDIS5 (*(WoReg*)0x400A41A8U) /**< \brief (UDPHS) UDPHS Endpoint Control Disable Register (endpoint = 5) */ +#define REG_UDPHS_EPTCTL5 (*(RoReg*)0x400A41ACU) /**< \brief (UDPHS) UDPHS Endpoint Control Register (endpoint = 5) */ +#define REG_UDPHS_EPTSETSTA5 (*(WoReg*)0x400A41B4U) /**< \brief (UDPHS) UDPHS Endpoint Set Status Register (endpoint = 5) */ +#define REG_UDPHS_EPTCLRSTA5 (*(WoReg*)0x400A41B8U) /**< \brief (UDPHS) UDPHS Endpoint Clear Status Register (endpoint = 5) */ +#define REG_UDPHS_EPTSTA5 (*(RoReg*)0x400A41BCU) /**< \brief (UDPHS) UDPHS Endpoint Status Register (endpoint = 5) */ +#define REG_UDPHS_EPTCFG6 (*(RwReg*)0x400A41C0U) /**< \brief (UDPHS) UDPHS Endpoint Configuration Register (endpoint = 6) */ +#define REG_UDPHS_EPTCTLENB6 (*(WoReg*)0x400A41C4U) /**< \brief (UDPHS) UDPHS Endpoint Control Enable Register (endpoint = 6) */ +#define REG_UDPHS_EPTCTLDIS6 (*(WoReg*)0x400A41C8U) /**< \brief (UDPHS) UDPHS Endpoint Control Disable Register (endpoint = 6) */ +#define REG_UDPHS_EPTCTL6 (*(RoReg*)0x400A41CCU) /**< \brief (UDPHS) UDPHS Endpoint Control Register (endpoint = 6) */ +#define REG_UDPHS_EPTSETSTA6 (*(WoReg*)0x400A41D4U) /**< \brief (UDPHS) UDPHS Endpoint Set Status Register (endpoint = 6) */ +#define REG_UDPHS_EPTCLRSTA6 (*(WoReg*)0x400A41D8U) /**< \brief (UDPHS) UDPHS Endpoint Clear Status Register (endpoint = 6) */ +#define REG_UDPHS_EPTSTA6 (*(RoReg*)0x400A41DCU) /**< \brief (UDPHS) UDPHS Endpoint Status Register (endpoint = 6) */ +#define REG_UDPHS_DMANXTDSC0 (*(RwReg*)0x400A4300U) /**< \brief (UDPHS) UDPHS DMA Next Descriptor Address Register (channel = 0) */ +#define REG_UDPHS_DMAADDRESS0 (*(RwReg*)0x400A4304U) /**< \brief (UDPHS) UDPHS DMA Channel Address Register (channel = 0) */ +#define REG_UDPHS_DMACONTROL0 (*(RwReg*)0x400A4308U) /**< \brief (UDPHS) UDPHS DMA Channel Control Register (channel = 0) */ +#define REG_UDPHS_DMASTATUS0 (*(RwReg*)0x400A430CU) /**< \brief (UDPHS) UDPHS DMA Channel Status Register (channel = 0) */ +#define REG_UDPHS_DMANXTDSC1 (*(RwReg*)0x400A4310U) /**< \brief (UDPHS) UDPHS DMA Next Descriptor Address Register (channel = 1) */ +#define REG_UDPHS_DMAADDRESS1 (*(RwReg*)0x400A4314U) /**< \brief (UDPHS) UDPHS DMA Channel Address Register (channel = 1) */ +#define REG_UDPHS_DMACONTROL1 (*(RwReg*)0x400A4318U) /**< \brief (UDPHS) UDPHS DMA Channel Control Register (channel = 1) */ +#define REG_UDPHS_DMASTATUS1 (*(RwReg*)0x400A431CU) /**< \brief (UDPHS) UDPHS DMA Channel Status Register (channel = 1) */ +#define REG_UDPHS_DMANXTDSC2 (*(RwReg*)0x400A4320U) /**< \brief (UDPHS) UDPHS DMA Next Descriptor Address Register (channel = 2) */ +#define REG_UDPHS_DMAADDRESS2 (*(RwReg*)0x400A4324U) /**< \brief (UDPHS) UDPHS DMA Channel Address Register (channel = 2) */ +#define REG_UDPHS_DMACONTROL2 (*(RwReg*)0x400A4328U) /**< \brief (UDPHS) UDPHS DMA Channel Control Register (channel = 2) */ +#define REG_UDPHS_DMASTATUS2 (*(RwReg*)0x400A432CU) /**< \brief (UDPHS) UDPHS DMA Channel Status Register (channel = 2) */ +#define REG_UDPHS_DMANXTDSC3 (*(RwReg*)0x400A4330U) /**< \brief (UDPHS) UDPHS DMA Next Descriptor Address Register (channel = 3) */ +#define REG_UDPHS_DMAADDRESS3 (*(RwReg*)0x400A4334U) /**< \brief (UDPHS) UDPHS DMA Channel Address Register (channel = 3) */ +#define REG_UDPHS_DMACONTROL3 (*(RwReg*)0x400A4338U) /**< \brief (UDPHS) UDPHS DMA Channel Control Register (channel = 3) */ +#define REG_UDPHS_DMASTATUS3 (*(RwReg*)0x400A433CU) /**< \brief (UDPHS) UDPHS DMA Channel Status Register (channel = 3) */ +#define REG_UDPHS_DMANXTDSC4 (*(RwReg*)0x400A4340U) /**< \brief (UDPHS) UDPHS DMA Next Descriptor Address Register (channel = 4) */ +#define REG_UDPHS_DMAADDRESS4 (*(RwReg*)0x400A4344U) /**< \brief (UDPHS) UDPHS DMA Channel Address Register (channel = 4) */ +#define REG_UDPHS_DMACONTROL4 (*(RwReg*)0x400A4348U) /**< \brief (UDPHS) UDPHS DMA Channel Control Register (channel = 4) */ +#define REG_UDPHS_DMASTATUS4 (*(RwReg*)0x400A434CU) /**< \brief (UDPHS) UDPHS DMA Channel Status Register (channel = 4) */ +#define REG_UDPHS_DMANXTDSC5 (*(RwReg*)0x400A4350U) /**< \brief (UDPHS) UDPHS DMA Next Descriptor Address Register (channel = 5) */ +#define REG_UDPHS_DMAADDRESS5 (*(RwReg*)0x400A4354U) /**< \brief (UDPHS) UDPHS DMA Channel Address Register (channel = 5) */ +#define REG_UDPHS_DMACONTROL5 (*(RwReg*)0x400A4358U) /**< \brief (UDPHS) UDPHS DMA Channel Control Register (channel = 5) */ +#define REG_UDPHS_DMASTATUS5 (*(RwReg*)0x400A435CU) /**< \brief (UDPHS) UDPHS DMA Channel Status Register (channel = 5) */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_UDPHS_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_usart0.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_usart0.h new file mode 100644 index 000000000..67cda384d --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_usart0.h @@ -0,0 +1,92 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_USART0_INSTANCE_ +#define _SAM3U_USART0_INSTANCE_ + +/* ========== Register definition for USART0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_USART0_CR (0x40090000U) /**< \brief (USART0) Control Register */ +#define REG_USART0_MR (0x40090004U) /**< \brief (USART0) Mode Register */ +#define REG_USART0_IER (0x40090008U) /**< \brief (USART0) Interrupt Enable Register */ +#define REG_USART0_IDR (0x4009000CU) /**< \brief (USART0) Interrupt Disable Register */ +#define REG_USART0_IMR (0x40090010U) /**< \brief (USART0) Interrupt Mask Register */ +#define REG_USART0_CSR (0x40090014U) /**< \brief (USART0) Channel Status Register */ +#define REG_USART0_RHR (0x40090018U) /**< \brief (USART0) Receiver Holding Register */ +#define REG_USART0_THR (0x4009001CU) /**< \brief (USART0) Transmitter Holding Register */ +#define REG_USART0_BRGR (0x40090020U) /**< \brief (USART0) Baud Rate Generator Register */ +#define REG_USART0_RTOR (0x40090024U) /**< \brief (USART0) Receiver Time-out Register */ +#define REG_USART0_TTGR (0x40090028U) /**< \brief (USART0) Transmitter Timeguard Register */ +#define REG_USART0_FIDI (0x40090040U) /**< \brief (USART0) FI DI Ratio Register */ +#define REG_USART0_NER (0x40090044U) /**< \brief (USART0) Number of Errors Register */ +#define REG_USART0_IF (0x4009004CU) /**< \brief (USART0) IrDA Filter Register */ +#define REG_USART0_MAN (0x40090050U) /**< \brief (USART0) Manchester Encoder Decoder Register */ +#define REG_USART0_WPMR (0x400900E4U) /**< \brief (USART0) Write Protect Mode Register */ +#define REG_USART0_WPSR (0x400900E8U) /**< \brief (USART0) Write Protect Status Register */ +#define REG_USART0_RPR (0x40090100U) /**< \brief (USART0) Receive Pointer Register */ +#define REG_USART0_RCR (0x40090104U) /**< \brief (USART0) Receive Counter Register */ +#define REG_USART0_TPR (0x40090108U) /**< \brief (USART0) Transmit Pointer Register */ +#define REG_USART0_TCR (0x4009010CU) /**< \brief (USART0) Transmit Counter Register */ +#define REG_USART0_RNPR (0x40090110U) /**< \brief (USART0) Receive Next Pointer Register */ +#define REG_USART0_RNCR (0x40090114U) /**< \brief (USART0) Receive Next Counter Register */ +#define REG_USART0_TNPR (0x40090118U) /**< \brief (USART0) Transmit Next Pointer Register */ +#define REG_USART0_TNCR (0x4009011CU) /**< \brief (USART0) Transmit Next Counter Register */ +#define REG_USART0_PTCR (0x40090120U) /**< \brief (USART0) Transfer Control Register */ +#define REG_USART0_PTSR (0x40090124U) /**< \brief (USART0) Transfer Status Register */ +#else +#define REG_USART0_CR (*(WoReg*)0x40090000U) /**< \brief (USART0) Control Register */ +#define REG_USART0_MR (*(RwReg*)0x40090004U) /**< \brief (USART0) Mode Register */ +#define REG_USART0_IER (*(WoReg*)0x40090008U) /**< \brief (USART0) Interrupt Enable Register */ +#define REG_USART0_IDR (*(WoReg*)0x4009000CU) /**< \brief (USART0) Interrupt Disable Register */ +#define REG_USART0_IMR (*(RoReg*)0x40090010U) /**< \brief (USART0) Interrupt Mask Register */ +#define REG_USART0_CSR (*(RoReg*)0x40090014U) /**< \brief (USART0) Channel Status Register */ +#define REG_USART0_RHR (*(RoReg*)0x40090018U) /**< \brief (USART0) Receiver Holding Register */ +#define REG_USART0_THR (*(WoReg*)0x4009001CU) /**< \brief (USART0) Transmitter Holding Register */ +#define REG_USART0_BRGR (*(RwReg*)0x40090020U) /**< \brief (USART0) Baud Rate Generator Register */ +#define REG_USART0_RTOR (*(RwReg*)0x40090024U) /**< \brief (USART0) Receiver Time-out Register */ +#define REG_USART0_TTGR (*(RwReg*)0x40090028U) /**< \brief (USART0) Transmitter Timeguard Register */ +#define REG_USART0_FIDI (*(RwReg*)0x40090040U) /**< \brief (USART0) FI DI Ratio Register */ +#define REG_USART0_NER (*(RoReg*)0x40090044U) /**< \brief (USART0) Number of Errors Register */ +#define REG_USART0_IF (*(RwReg*)0x4009004CU) /**< \brief (USART0) IrDA Filter Register */ +#define REG_USART0_MAN (*(RwReg*)0x40090050U) /**< \brief (USART0) Manchester Encoder Decoder Register */ +#define REG_USART0_WPMR (*(RwReg*)0x400900E4U) /**< \brief (USART0) Write Protect Mode Register */ +#define REG_USART0_WPSR (*(RoReg*)0x400900E8U) /**< \brief (USART0) Write Protect Status Register */ +#define REG_USART0_RPR (*(RwReg*)0x40090100U) /**< \brief (USART0) Receive Pointer Register */ +#define REG_USART0_RCR (*(RwReg*)0x40090104U) /**< \brief (USART0) Receive Counter Register */ +#define REG_USART0_TPR (*(RwReg*)0x40090108U) /**< \brief (USART0) Transmit Pointer Register */ +#define REG_USART0_TCR (*(RwReg*)0x4009010CU) /**< \brief (USART0) Transmit Counter Register */ +#define REG_USART0_RNPR (*(RwReg*)0x40090110U) /**< \brief (USART0) Receive Next Pointer Register */ +#define REG_USART0_RNCR (*(RwReg*)0x40090114U) /**< \brief (USART0) Receive Next Counter Register */ +#define REG_USART0_TNPR (*(RwReg*)0x40090118U) /**< \brief (USART0) Transmit Next Pointer Register */ +#define REG_USART0_TNCR (*(RwReg*)0x4009011CU) /**< \brief (USART0) Transmit Next Counter Register */ +#define REG_USART0_PTCR (*(WoReg*)0x40090120U) /**< \brief (USART0) Transfer Control Register */ +#define REG_USART0_PTSR (*(RoReg*)0x40090124U) /**< \brief (USART0) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_USART0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_usart1.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_usart1.h new file mode 100644 index 000000000..3cae30973 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_usart1.h @@ -0,0 +1,92 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_USART1_INSTANCE_ +#define _SAM3U_USART1_INSTANCE_ + +/* ========== Register definition for USART1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_USART1_CR (0x40094000U) /**< \brief (USART1) Control Register */ +#define REG_USART1_MR (0x40094004U) /**< \brief (USART1) Mode Register */ +#define REG_USART1_IER (0x40094008U) /**< \brief (USART1) Interrupt Enable Register */ +#define REG_USART1_IDR (0x4009400CU) /**< \brief (USART1) Interrupt Disable Register */ +#define REG_USART1_IMR (0x40094010U) /**< \brief (USART1) Interrupt Mask Register */ +#define REG_USART1_CSR (0x40094014U) /**< \brief (USART1) Channel Status Register */ +#define REG_USART1_RHR (0x40094018U) /**< \brief (USART1) Receiver Holding Register */ +#define REG_USART1_THR (0x4009401CU) /**< \brief (USART1) Transmitter Holding Register */ +#define REG_USART1_BRGR (0x40094020U) /**< \brief (USART1) Baud Rate Generator Register */ +#define REG_USART1_RTOR (0x40094024U) /**< \brief (USART1) Receiver Time-out Register */ +#define REG_USART1_TTGR (0x40094028U) /**< \brief (USART1) Transmitter Timeguard Register */ +#define REG_USART1_FIDI (0x40094040U) /**< \brief (USART1) FI DI Ratio Register */ +#define REG_USART1_NER (0x40094044U) /**< \brief (USART1) Number of Errors Register */ +#define REG_USART1_IF (0x4009404CU) /**< \brief (USART1) IrDA Filter Register */ +#define REG_USART1_MAN (0x40094050U) /**< \brief (USART1) Manchester Encoder Decoder Register */ +#define REG_USART1_WPMR (0x400940E4U) /**< \brief (USART1) Write Protect Mode Register */ +#define REG_USART1_WPSR (0x400940E8U) /**< \brief (USART1) Write Protect Status Register */ +#define REG_USART1_RPR (0x40094100U) /**< \brief (USART1) Receive Pointer Register */ +#define REG_USART1_RCR (0x40094104U) /**< \brief (USART1) Receive Counter Register */ +#define REG_USART1_TPR (0x40094108U) /**< \brief (USART1) Transmit Pointer Register */ +#define REG_USART1_TCR (0x4009410CU) /**< \brief (USART1) Transmit Counter Register */ +#define REG_USART1_RNPR (0x40094110U) /**< \brief (USART1) Receive Next Pointer Register */ +#define REG_USART1_RNCR (0x40094114U) /**< \brief (USART1) Receive Next Counter Register */ +#define REG_USART1_TNPR (0x40094118U) /**< \brief (USART1) Transmit Next Pointer Register */ +#define REG_USART1_TNCR (0x4009411CU) /**< \brief (USART1) Transmit Next Counter Register */ +#define REG_USART1_PTCR (0x40094120U) /**< \brief (USART1) Transfer Control Register */ +#define REG_USART1_PTSR (0x40094124U) /**< \brief (USART1) Transfer Status Register */ +#else +#define REG_USART1_CR (*(WoReg*)0x40094000U) /**< \brief (USART1) Control Register */ +#define REG_USART1_MR (*(RwReg*)0x40094004U) /**< \brief (USART1) Mode Register */ +#define REG_USART1_IER (*(WoReg*)0x40094008U) /**< \brief (USART1) Interrupt Enable Register */ +#define REG_USART1_IDR (*(WoReg*)0x4009400CU) /**< \brief (USART1) Interrupt Disable Register */ +#define REG_USART1_IMR (*(RoReg*)0x40094010U) /**< \brief (USART1) Interrupt Mask Register */ +#define REG_USART1_CSR (*(RoReg*)0x40094014U) /**< \brief (USART1) Channel Status Register */ +#define REG_USART1_RHR (*(RoReg*)0x40094018U) /**< \brief (USART1) Receiver Holding Register */ +#define REG_USART1_THR (*(WoReg*)0x4009401CU) /**< \brief (USART1) Transmitter Holding Register */ +#define REG_USART1_BRGR (*(RwReg*)0x40094020U) /**< \brief (USART1) Baud Rate Generator Register */ +#define REG_USART1_RTOR (*(RwReg*)0x40094024U) /**< \brief (USART1) Receiver Time-out Register */ +#define REG_USART1_TTGR (*(RwReg*)0x40094028U) /**< \brief (USART1) Transmitter Timeguard Register */ +#define REG_USART1_FIDI (*(RwReg*)0x40094040U) /**< \brief (USART1) FI DI Ratio Register */ +#define REG_USART1_NER (*(RoReg*)0x40094044U) /**< \brief (USART1) Number of Errors Register */ +#define REG_USART1_IF (*(RwReg*)0x4009404CU) /**< \brief (USART1) IrDA Filter Register */ +#define REG_USART1_MAN (*(RwReg*)0x40094050U) /**< \brief (USART1) Manchester Encoder Decoder Register */ +#define REG_USART1_WPMR (*(RwReg*)0x400940E4U) /**< \brief (USART1) Write Protect Mode Register */ +#define REG_USART1_WPSR (*(RoReg*)0x400940E8U) /**< \brief (USART1) Write Protect Status Register */ +#define REG_USART1_RPR (*(RwReg*)0x40094100U) /**< \brief (USART1) Receive Pointer Register */ +#define REG_USART1_RCR (*(RwReg*)0x40094104U) /**< \brief (USART1) Receive Counter Register */ +#define REG_USART1_TPR (*(RwReg*)0x40094108U) /**< \brief (USART1) Transmit Pointer Register */ +#define REG_USART1_TCR (*(RwReg*)0x4009410CU) /**< \brief (USART1) Transmit Counter Register */ +#define REG_USART1_RNPR (*(RwReg*)0x40094110U) /**< \brief (USART1) Receive Next Pointer Register */ +#define REG_USART1_RNCR (*(RwReg*)0x40094114U) /**< \brief (USART1) Receive Next Counter Register */ +#define REG_USART1_TNPR (*(RwReg*)0x40094118U) /**< \brief (USART1) Transmit Next Pointer Register */ +#define REG_USART1_TNCR (*(RwReg*)0x4009411CU) /**< \brief (USART1) Transmit Next Counter Register */ +#define REG_USART1_PTCR (*(WoReg*)0x40094120U) /**< \brief (USART1) Transfer Control Register */ +#define REG_USART1_PTSR (*(RoReg*)0x40094124U) /**< \brief (USART1) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_USART1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_usart2.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_usart2.h new file mode 100644 index 000000000..02717fa03 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_usart2.h @@ -0,0 +1,92 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_USART2_INSTANCE_ +#define _SAM3U_USART2_INSTANCE_ + +/* ========== Register definition for USART2 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_USART2_CR (0x40098000U) /**< \brief (USART2) Control Register */ +#define REG_USART2_MR (0x40098004U) /**< \brief (USART2) Mode Register */ +#define REG_USART2_IER (0x40098008U) /**< \brief (USART2) Interrupt Enable Register */ +#define REG_USART2_IDR (0x4009800CU) /**< \brief (USART2) Interrupt Disable Register */ +#define REG_USART2_IMR (0x40098010U) /**< \brief (USART2) Interrupt Mask Register */ +#define REG_USART2_CSR (0x40098014U) /**< \brief (USART2) Channel Status Register */ +#define REG_USART2_RHR (0x40098018U) /**< \brief (USART2) Receiver Holding Register */ +#define REG_USART2_THR (0x4009801CU) /**< \brief (USART2) Transmitter Holding Register */ +#define REG_USART2_BRGR (0x40098020U) /**< \brief (USART2) Baud Rate Generator Register */ +#define REG_USART2_RTOR (0x40098024U) /**< \brief (USART2) Receiver Time-out Register */ +#define REG_USART2_TTGR (0x40098028U) /**< \brief (USART2) Transmitter Timeguard Register */ +#define REG_USART2_FIDI (0x40098040U) /**< \brief (USART2) FI DI Ratio Register */ +#define REG_USART2_NER (0x40098044U) /**< \brief (USART2) Number of Errors Register */ +#define REG_USART2_IF (0x4009804CU) /**< \brief (USART2) IrDA Filter Register */ +#define REG_USART2_MAN (0x40098050U) /**< \brief (USART2) Manchester Encoder Decoder Register */ +#define REG_USART2_WPMR (0x400980E4U) /**< \brief (USART2) Write Protect Mode Register */ +#define REG_USART2_WPSR (0x400980E8U) /**< \brief (USART2) Write Protect Status Register */ +#define REG_USART2_RPR (0x40098100U) /**< \brief (USART2) Receive Pointer Register */ +#define REG_USART2_RCR (0x40098104U) /**< \brief (USART2) Receive Counter Register */ +#define REG_USART2_TPR (0x40098108U) /**< \brief (USART2) Transmit Pointer Register */ +#define REG_USART2_TCR (0x4009810CU) /**< \brief (USART2) Transmit Counter Register */ +#define REG_USART2_RNPR (0x40098110U) /**< \brief (USART2) Receive Next Pointer Register */ +#define REG_USART2_RNCR (0x40098114U) /**< \brief (USART2) Receive Next Counter Register */ +#define REG_USART2_TNPR (0x40098118U) /**< \brief (USART2) Transmit Next Pointer Register */ +#define REG_USART2_TNCR (0x4009811CU) /**< \brief (USART2) Transmit Next Counter Register */ +#define REG_USART2_PTCR (0x40098120U) /**< \brief (USART2) Transfer Control Register */ +#define REG_USART2_PTSR (0x40098124U) /**< \brief (USART2) Transfer Status Register */ +#else +#define REG_USART2_CR (*(WoReg*)0x40098000U) /**< \brief (USART2) Control Register */ +#define REG_USART2_MR (*(RwReg*)0x40098004U) /**< \brief (USART2) Mode Register */ +#define REG_USART2_IER (*(WoReg*)0x40098008U) /**< \brief (USART2) Interrupt Enable Register */ +#define REG_USART2_IDR (*(WoReg*)0x4009800CU) /**< \brief (USART2) Interrupt Disable Register */ +#define REG_USART2_IMR (*(RoReg*)0x40098010U) /**< \brief (USART2) Interrupt Mask Register */ +#define REG_USART2_CSR (*(RoReg*)0x40098014U) /**< \brief (USART2) Channel Status Register */ +#define REG_USART2_RHR (*(RoReg*)0x40098018U) /**< \brief (USART2) Receiver Holding Register */ +#define REG_USART2_THR (*(WoReg*)0x4009801CU) /**< \brief (USART2) Transmitter Holding Register */ +#define REG_USART2_BRGR (*(RwReg*)0x40098020U) /**< \brief (USART2) Baud Rate Generator Register */ +#define REG_USART2_RTOR (*(RwReg*)0x40098024U) /**< \brief (USART2) Receiver Time-out Register */ +#define REG_USART2_TTGR (*(RwReg*)0x40098028U) /**< \brief (USART2) Transmitter Timeguard Register */ +#define REG_USART2_FIDI (*(RwReg*)0x40098040U) /**< \brief (USART2) FI DI Ratio Register */ +#define REG_USART2_NER (*(RoReg*)0x40098044U) /**< \brief (USART2) Number of Errors Register */ +#define REG_USART2_IF (*(RwReg*)0x4009804CU) /**< \brief (USART2) IrDA Filter Register */ +#define REG_USART2_MAN (*(RwReg*)0x40098050U) /**< \brief (USART2) Manchester Encoder Decoder Register */ +#define REG_USART2_WPMR (*(RwReg*)0x400980E4U) /**< \brief (USART2) Write Protect Mode Register */ +#define REG_USART2_WPSR (*(RoReg*)0x400980E8U) /**< \brief (USART2) Write Protect Status Register */ +#define REG_USART2_RPR (*(RwReg*)0x40098100U) /**< \brief (USART2) Receive Pointer Register */ +#define REG_USART2_RCR (*(RwReg*)0x40098104U) /**< \brief (USART2) Receive Counter Register */ +#define REG_USART2_TPR (*(RwReg*)0x40098108U) /**< \brief (USART2) Transmit Pointer Register */ +#define REG_USART2_TCR (*(RwReg*)0x4009810CU) /**< \brief (USART2) Transmit Counter Register */ +#define REG_USART2_RNPR (*(RwReg*)0x40098110U) /**< \brief (USART2) Receive Next Pointer Register */ +#define REG_USART2_RNCR (*(RwReg*)0x40098114U) /**< \brief (USART2) Receive Next Counter Register */ +#define REG_USART2_TNPR (*(RwReg*)0x40098118U) /**< \brief (USART2) Transmit Next Pointer Register */ +#define REG_USART2_TNCR (*(RwReg*)0x4009811CU) /**< \brief (USART2) Transmit Next Counter Register */ +#define REG_USART2_PTCR (*(WoReg*)0x40098120U) /**< \brief (USART2) Transfer Control Register */ +#define REG_USART2_PTSR (*(RoReg*)0x40098124U) /**< \brief (USART2) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_USART2_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_usart3.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_usart3.h new file mode 100644 index 000000000..363d309b4 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_usart3.h @@ -0,0 +1,92 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_USART3_INSTANCE_ +#define _SAM3U_USART3_INSTANCE_ + +/* ========== Register definition for USART3 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_USART3_CR (0x4009C000U) /**< \brief (USART3) Control Register */ +#define REG_USART3_MR (0x4009C004U) /**< \brief (USART3) Mode Register */ +#define REG_USART3_IER (0x4009C008U) /**< \brief (USART3) Interrupt Enable Register */ +#define REG_USART3_IDR (0x4009C00CU) /**< \brief (USART3) Interrupt Disable Register */ +#define REG_USART3_IMR (0x4009C010U) /**< \brief (USART3) Interrupt Mask Register */ +#define REG_USART3_CSR (0x4009C014U) /**< \brief (USART3) Channel Status Register */ +#define REG_USART3_RHR (0x4009C018U) /**< \brief (USART3) Receiver Holding Register */ +#define REG_USART3_THR (0x4009C01CU) /**< \brief (USART3) Transmitter Holding Register */ +#define REG_USART3_BRGR (0x4009C020U) /**< \brief (USART3) Baud Rate Generator Register */ +#define REG_USART3_RTOR (0x4009C024U) /**< \brief (USART3) Receiver Time-out Register */ +#define REG_USART3_TTGR (0x4009C028U) /**< \brief (USART3) Transmitter Timeguard Register */ +#define REG_USART3_FIDI (0x4009C040U) /**< \brief (USART3) FI DI Ratio Register */ +#define REG_USART3_NER (0x4009C044U) /**< \brief (USART3) Number of Errors Register */ +#define REG_USART3_IF (0x4009C04CU) /**< \brief (USART3) IrDA Filter Register */ +#define REG_USART3_MAN (0x4009C050U) /**< \brief (USART3) Manchester Encoder Decoder Register */ +#define REG_USART3_WPMR (0x4009C0E4U) /**< \brief (USART3) Write Protect Mode Register */ +#define REG_USART3_WPSR (0x4009C0E8U) /**< \brief (USART3) Write Protect Status Register */ +#define REG_USART3_RPR (0x4009C100U) /**< \brief (USART3) Receive Pointer Register */ +#define REG_USART3_RCR (0x4009C104U) /**< \brief (USART3) Receive Counter Register */ +#define REG_USART3_TPR (0x4009C108U) /**< \brief (USART3) Transmit Pointer Register */ +#define REG_USART3_TCR (0x4009C10CU) /**< \brief (USART3) Transmit Counter Register */ +#define REG_USART3_RNPR (0x4009C110U) /**< \brief (USART3) Receive Next Pointer Register */ +#define REG_USART3_RNCR (0x4009C114U) /**< \brief (USART3) Receive Next Counter Register */ +#define REG_USART3_TNPR (0x4009C118U) /**< \brief (USART3) Transmit Next Pointer Register */ +#define REG_USART3_TNCR (0x4009C11CU) /**< \brief (USART3) Transmit Next Counter Register */ +#define REG_USART3_PTCR (0x4009C120U) /**< \brief (USART3) Transfer Control Register */ +#define REG_USART3_PTSR (0x4009C124U) /**< \brief (USART3) Transfer Status Register */ +#else +#define REG_USART3_CR (*(WoReg*)0x4009C000U) /**< \brief (USART3) Control Register */ +#define REG_USART3_MR (*(RwReg*)0x4009C004U) /**< \brief (USART3) Mode Register */ +#define REG_USART3_IER (*(WoReg*)0x4009C008U) /**< \brief (USART3) Interrupt Enable Register */ +#define REG_USART3_IDR (*(WoReg*)0x4009C00CU) /**< \brief (USART3) Interrupt Disable Register */ +#define REG_USART3_IMR (*(RoReg*)0x4009C010U) /**< \brief (USART3) Interrupt Mask Register */ +#define REG_USART3_CSR (*(RoReg*)0x4009C014U) /**< \brief (USART3) Channel Status Register */ +#define REG_USART3_RHR (*(RoReg*)0x4009C018U) /**< \brief (USART3) Receiver Holding Register */ +#define REG_USART3_THR (*(WoReg*)0x4009C01CU) /**< \brief (USART3) Transmitter Holding Register */ +#define REG_USART3_BRGR (*(RwReg*)0x4009C020U) /**< \brief (USART3) Baud Rate Generator Register */ +#define REG_USART3_RTOR (*(RwReg*)0x4009C024U) /**< \brief (USART3) Receiver Time-out Register */ +#define REG_USART3_TTGR (*(RwReg*)0x4009C028U) /**< \brief (USART3) Transmitter Timeguard Register */ +#define REG_USART3_FIDI (*(RwReg*)0x4009C040U) /**< \brief (USART3) FI DI Ratio Register */ +#define REG_USART3_NER (*(RoReg*)0x4009C044U) /**< \brief (USART3) Number of Errors Register */ +#define REG_USART3_IF (*(RwReg*)0x4009C04CU) /**< \brief (USART3) IrDA Filter Register */ +#define REG_USART3_MAN (*(RwReg*)0x4009C050U) /**< \brief (USART3) Manchester Encoder Decoder Register */ +#define REG_USART3_WPMR (*(RwReg*)0x4009C0E4U) /**< \brief (USART3) Write Protect Mode Register */ +#define REG_USART3_WPSR (*(RoReg*)0x4009C0E8U) /**< \brief (USART3) Write Protect Status Register */ +#define REG_USART3_RPR (*(RwReg*)0x4009C100U) /**< \brief (USART3) Receive Pointer Register */ +#define REG_USART3_RCR (*(RwReg*)0x4009C104U) /**< \brief (USART3) Receive Counter Register */ +#define REG_USART3_TPR (*(RwReg*)0x4009C108U) /**< \brief (USART3) Transmit Pointer Register */ +#define REG_USART3_TCR (*(RwReg*)0x4009C10CU) /**< \brief (USART3) Transmit Counter Register */ +#define REG_USART3_RNPR (*(RwReg*)0x4009C110U) /**< \brief (USART3) Receive Next Pointer Register */ +#define REG_USART3_RNCR (*(RwReg*)0x4009C114U) /**< \brief (USART3) Receive Next Counter Register */ +#define REG_USART3_TNPR (*(RwReg*)0x4009C118U) /**< \brief (USART3) Transmit Next Pointer Register */ +#define REG_USART3_TNCR (*(RwReg*)0x4009C11CU) /**< \brief (USART3) Transmit Next Counter Register */ +#define REG_USART3_PTCR (*(WoReg*)0x4009C120U) /**< \brief (USART3) Transfer Control Register */ +#define REG_USART3_PTSR (*(RoReg*)0x4009C124U) /**< \brief (USART3) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_USART3_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_wdt.h b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_wdt.h new file mode 100644 index 000000000..f17439520 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/instance/instance_wdt.h @@ -0,0 +1,44 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_WDT_INSTANCE_ +#define _SAM3U_WDT_INSTANCE_ + +/* ========== Register definition for WDT peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_WDT_CR (0x400E1250U) /**< \brief (WDT) Control Register */ +#define REG_WDT_MR (0x400E1254U) /**< \brief (WDT) Mode Register */ +#define REG_WDT_SR (0x400E1258U) /**< \brief (WDT) Status Register */ +#else +#define REG_WDT_CR (*(WoReg*)0x400E1250U) /**< \brief (WDT) Control Register */ +#define REG_WDT_MR (*(RwReg*)0x400E1254U) /**< \brief (WDT) Mode Register */ +#define REG_WDT_SR (*(RoReg*)0x400E1258U) /**< \brief (WDT) Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3U_WDT_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/pio/pio_sam3u1c.h b/hardware/sam/system/libsam/cmsis/sam3u/include/pio/pio_sam3u1c.h new file mode 100644 index 000000000..d1a0dea87 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/pio/pio_sam3u1c.h @@ -0,0 +1,356 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U1C_PIO_ +#define _SAM3U1C_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PB15 (1u << 15) /**< \brief Pin Controlled by PB15 */ +#define PIO_PB16 (1u << 16) /**< \brief Pin Controlled by PB16 */ +#define PIO_PB17 (1u << 17) /**< \brief Pin Controlled by PB17 */ +#define PIO_PB18 (1u << 18) /**< \brief Pin Controlled by PB18 */ +#define PIO_PB19 (1u << 19) /**< \brief Pin Controlled by PB19 */ +#define PIO_PB20 (1u << 20) /**< \brief Pin Controlled by PB20 */ +#define PIO_PB21 (1u << 21) /**< \brief Pin Controlled by PB21 */ +#define PIO_PB22 (1u << 22) /**< \brief Pin Controlled by PB22 */ +#define PIO_PB23 (1u << 23) /**< \brief Pin Controlled by PB23 */ +#define PIO_PB24 (1u << 24) /**< \brief Pin Controlled by PB24 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PB5X1_AD0 (1u << 5) /**< \brief Adc signal: AD0 */ +#define PIO_PB6X1_AD1 (1u << 6) /**< \brief Adc signal: AD1 */ +#define PIO_PB7X1_AD2 (1u << 7) /**< \brief Adc signal: AD2 */ +#define PIO_PB8X1_AD3 (1u << 8) /**< \brief Adc signal: AD3 */ +#define PIO_PC28X1_AD4 (1u << 28) /**< \brief Adc signal: AD4 */ +#define PIO_PC29X1_AD5 (1u << 29) /**< \brief Adc signal: AD5 */ +#define PIO_PC30X1_AD6 (1u << 30) /**< \brief Adc signal: AD6 */ +#define PIO_PC31X1_AD7 (1u << 31) /**< \brief Adc signal: AD7 */ +#define PIO_PA17B_ADTRG (1u << 17) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for ADC12B peripheral ========== */ +#define PIO_PA22X1_AD12B0 (1u << 22) /**< \brief Adc12b signal: AD12B0 */ +#define PIO_PA30X1_AD12B1 (1u << 30) /**< \brief Adc12b signal: AD12B1 */ +#define PIO_PB3X1_AD12B2 (1u << 3) /**< \brief Adc12b signal: AD12B2 */ +#define PIO_PB4X1_AD12B3 (1u << 4) /**< \brief Adc12b signal: AD12B3 */ +#define PIO_PC15X1_AD12B4 (1u << 15) /**< \brief Adc12b signal: AD12B4 */ +#define PIO_PC16X1_AD12B5 (1u << 16) /**< \brief Adc12b signal: AD12B5 */ +#define PIO_PC17X1_AD12B6 (1u << 17) /**< \brief Adc12b signal: AD12B6 */ +#define PIO_PC18X1_AD12B7 (1u << 18) /**< \brief Adc12b signal: AD12B7 */ +#define PIO_PA2B_AD12BTRG (1u << 2) /**< \brief Adc12b signal: AD12BTRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PB7B_A0 (1u << 7) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PB7B_NBS0 (1u << 7) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PB8B_A1 (1u << 8) /**< \brief Ebi signal: A1 */ +#define PIO_PC8A_A10 (1u << 8) /**< \brief Ebi signal: A10 */ +#define PIO_PC9A_A11 (1u << 9) /**< \brief Ebi signal: A11 */ +#define PIO_PC10A_A12 (1u << 10) /**< \brief Ebi signal: A12 */ +#define PIO_PC11A_A13 (1u << 11) /**< \brief Ebi signal: A13 */ +#define PIO_PC20A_A14 (1u << 20) /**< \brief Ebi signal: A14 */ +#define PIO_PC21A_A15 (1u << 21) /**< \brief Ebi signal: A15 */ +#define PIO_PC22A_A16 (1u << 22) /**< \brief Ebi signal: A16 */ +#define PIO_PC23A_A17 (1u << 23) /**< \brief Ebi signal: A17 */ +#define PIO_PC24A_A18 (1u << 24) /**< \brief Ebi signal: A18 */ +#define PIO_PC25A_A19 (1u << 25) /**< \brief Ebi signal: A19 */ +#define PIO_PB0B_A2 (1u << 0) /**< \brief Ebi signal: A2 */ +#define PIO_PC0A_A2 (1u << 0) /**< \brief Ebi signal: A2 */ +#define PIO_PC13A_A2 (1u << 13) /**< \brief Ebi signal: A2 */ +#define PIO_PC26A_A20 (1u << 26) /**< \brief Ebi signal: A20 */ +#define PIO_PB21A_A21 (1u << 21) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PB21A_NANDALE (1u << 21) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PB22A_A22 (1u << 22) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PB22A_NANDCLE (1u << 22) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PC27A_A23 (1u << 27) /**< \brief Ebi signal: A23 */ +#define PIO_PB1B_A3 (1u << 1) /**< \brief Ebi signal: A3 */ +#define PIO_PC1A_A3 (1u << 1) /**< \brief Ebi signal: A3 */ +#define PIO_PC14A_A3 (1u << 14) /**< \brief Ebi signal: A3 */ +#define PIO_PB2B_A4 (1u << 2) /**< \brief Ebi signal: A4 */ +#define PIO_PC2A_A4 (1u << 2) /**< \brief Ebi signal: A4 */ +#define PIO_PB3B_A5 (1u << 3) /**< \brief Ebi signal: A5 */ +#define PIO_PC3A_A5 (1u << 3) /**< \brief Ebi signal: A5 */ +#define PIO_PB4B_A6 (1u << 4) /**< \brief Ebi signal: A6 */ +#define PIO_PC4A_A6 (1u << 4) /**< \brief Ebi signal: A6 */ +#define PIO_PB5B_A7 (1u << 5) /**< \brief Ebi signal: A7 */ +#define PIO_PC5A_A7 (1u << 5) /**< \brief Ebi signal: A7 */ +#define PIO_PC6A_A8 (1u << 6) /**< \brief Ebi signal: A8 */ +#define PIO_PC7A_A9 (1u << 7) /**< \brief Ebi signal: A9 */ +#define PIO_PB9A_D0 (1u << 9) /**< \brief Ebi signal: D0 */ +#define PIO_PB10A_D1 (1u << 10) /**< \brief Ebi signal: D1 */ +#define PIO_PB27A_D10 (1u << 27) /**< \brief Ebi signal: D10 */ +#define PIO_PB28A_D11 (1u << 28) /**< \brief Ebi signal: D11 */ +#define PIO_PB29A_D12 (1u << 29) /**< \brief Ebi signal: D12 */ +#define PIO_PB30A_D13 (1u << 30) /**< \brief Ebi signal: D13 */ +#define PIO_PB31A_D14 (1u << 31) /**< \brief Ebi signal: D14 */ +#define PIO_PB6B_D15 (1u << 6) /**< \brief Ebi signal: D15 */ +#define PIO_PB11A_D2 (1u << 11) /**< \brief Ebi signal: D2 */ +#define PIO_PB12A_D3 (1u << 12) /**< \brief Ebi signal: D3 */ +#define PIO_PB13A_D4 (1u << 13) /**< \brief Ebi signal: D4 */ +#define PIO_PB14A_D5 (1u << 14) /**< \brief Ebi signal: D5 */ +#define PIO_PB15A_D6 (1u << 15) /**< \brief Ebi signal: D6 */ +#define PIO_PB16A_D7 (1u << 16) /**< \brief Ebi signal: D7 */ +#define PIO_PB25A_D8 (1u << 25) /**< \brief Ebi signal: D8 */ +#define PIO_PB26A_D9 (1u << 26) /**< \brief Ebi signal: D9 */ +#define PIO_PB17A_NANDOE (1u << 17) /**< \brief Ebi signal: NANDOE */ +#define PIO_PB24A_NANDRDY (1u << 24) /**< \brief Ebi signal: NANDRDY */ +#define PIO_PB18A_NANDWE (1u << 18) /**< \brief Ebi signal: NANDWE */ +#define PIO_PB20A_NCS0 (1u << 20) /**< \brief Ebi signal: NCS0 */ +#define PIO_PA16B_NCS1 (1u << 16) /**< \brief Ebi signal: NCS1 */ +#define PIO_PC12A_NCS1 (1u << 12) /**< \brief Ebi signal: NCS1 */ +#define PIO_PC16A_NCS2 (1u << 16) /**< \brief Ebi signal: NCS2 */ +#define PIO_PC17A_NCS3 (1u << 17) /**< \brief Ebi signal: NCS3 */ +#define PIO_PB19A_NRD (1u << 19) /**< \brief Ebi signal: NRD */ +#define PIO_PC18A_NWAIT (1u << 18) /**< \brief Ebi signal: NWAIT */ +#define PIO_PB23A_NWR0 (1u << 23) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PB23A_NWE (1u << 23) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PC15A_NWR1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PC15A_NBS1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA4A_MCCDA (1u << 4) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA3A_MCCK (1u << 3) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA5A_MCDA0 (1u << 5) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA6A_MCDA1 (1u << 6) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA7A_MCDA2 (1u << 7) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA8A_MCDA3 (1u << 8) /**< \brief Hsmci signal: MCDA3 */ +#define PIO_PC28B_MCDA4 (1u << 28) /**< \brief Hsmci signal: MCDA4 */ +#define PIO_PC29B_MCDA5 (1u << 29) /**< \brief Hsmci signal: MCDA5 */ +#define PIO_PC30B_MCDA6 (1u << 30) /**< \brief Hsmci signal: MCDA6 */ +#define PIO_PC31B_MCDA7 (1u << 31) /**< \brief Hsmci signal: MCDA7 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA21B_PCK0 (1u << 21) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA27B_PCK0 (1u << 27) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA3B_PCK1 (1u << 3) /**< \brief Pmc signal: PCK1 */ +#define PIO_PB24B_PCK1 (1u << 24) /**< \brief Pmc signal: PCK1 */ +#define PIO_PB23B_PCK2 (1u << 23) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA11B_PWMFI0 (1u << 11) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA12B_PWMFI1 (1u << 12) /**< \brief Pwm signal: PWMFI1 */ +#define PIO_PA18B_PWMFI2 (1u << 18) /**< \brief Pwm signal: PWMFI2 */ +#define PIO_PA4B_PWMH0 (1u << 4) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA28B_PWMH0 (1u << 28) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB13B_PWMH0 (1u << 13) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC24B_PWMH0 (1u << 24) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA5B_PWMH1 (1u << 5) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA29B_PWMH1 (1u << 29) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB14B_PWMH1 (1u << 14) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC25B_PWMH1 (1u << 25) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA6B_PWMH2 (1u << 6) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA15B_PWMH2 (1u << 15) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB15B_PWMH2 (1u << 15) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC26B_PWMH2 (1u << 26) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA20B_PWMH3 (1u << 20) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB3A_PWMH3 (1u << 3) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB16B_PWMH3 (1u << 16) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC27B_PWMH3 (1u << 27) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA7B_PWML0 (1u << 7) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB17B_PWML0 (1u << 17) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB25B_PWML0 (1u << 25) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC6B_PWML0 (1u << 6) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC29A_PWML0 (1u << 29) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA8B_PWML1 (1u << 8) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB18B_PWML1 (1u << 18) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB26B_PWML1 (1u << 26) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC7B_PWML1 (1u << 7) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC30A_PWML1 (1u << 30) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA9B_PWML2 (1u << 9) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB19B_PWML2 (1u << 19) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB27B_PWML2 (1u << 27) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC8B_PWML2 (1u << 8) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC31A_PWML2 (1u << 31) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA10B_PWML3 (1u << 10) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB20B_PWML3 (1u << 20) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB28B_PWML3 (1u << 28) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC9B_PWML3 (1u << 9) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC16B_PWML3 (1u << 16) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA13A_MISO (1u << 13) /**< \brief Spi signal: MISO */ +#define PIO_PA14A_MOSI (1u << 14) /**< \brief Spi signal: MOSI */ +#define PIO_PA16A_NPCS0 (1u << 16) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA0B_NPCS1 (1u << 0) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC3B_NPCS1 (1u << 3) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC19B_NPCS1 (1u << 19) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA1B_NPCS2 (1u << 1) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC4B_NPCS2 (1u << 4) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC14B_NPCS2 (1u << 14) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA19B_NPCS3 (1u << 19) /**< \brief Spi signal: NPCS3 */ +#define PIO_PC5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA15A_SPCK (1u << 15) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA27A_RD (1u << 27) /**< \brief Ssc signal: RD */ +#define PIO_PA31A_RF (1u << 31) /**< \brief Ssc signal: RF */ +#define PIO_PA29A_RK (1u << 29) /**< \brief Ssc signal: RK */ +#define PIO_PA26A_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PA30A_TF (1u << 30) /**< \brief Ssc signal: TF */ +#define PIO_PA28A_TK (1u << 28) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA2A_TCLK0 (1u << 2) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PB4A_TCLK1 (1u << 4) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA26B_TCLK2 (1u << 26) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA1A_TIOA0 (1u << 1) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PB5A_TIOA1 (1u << 5) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA30B_TIOA2 (1u << 30) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA0A_TIOB0 (1u << 0) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PB6A_TIOB1 (1u << 6) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA31B_TIOB2 (1u << 31) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA10A_TWCK0 (1u << 10) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA9A_TWD0 (1u << 9) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PA25A_TWCK1 (1u << 25) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PA24A_TWD1 (1u << 24) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART peripheral ========== */ +#define PIO_PA11A_URXD (1u << 11) /**< \brief Uart signal: URXD */ +#define PIO_PA12A_UTXD (1u << 12) /**< \brief Uart signal: UTXD */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PB11B_DCD0 (1u << 11) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PB10B_DSR0 (1u << 10) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PB9B_DTR0 (1u << 9) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PB12B_RI0 (1u << 12) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA19A_RXD0 (1u << 19) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA17A_SCK0 (1u << 17) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA18A_TXD0 (1u << 18) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA23B_CTS1 (1u << 23) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA22B_RTS1 (1u << 22) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA24B_SCK1 (1u << 24) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA20A_TXD1 (1u << 20) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PB22B_CTS2 (1u << 22) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PB21B_RTS2 (1u << 21) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PA23A_RXD2 (1u << 23) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PA25B_SCK2 (1u << 25) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PA22A_TXD2 (1u << 22) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PB15_IDX 47 +#define PIO_PB16_IDX 48 +#define PIO_PB17_IDX 49 +#define PIO_PB18_IDX 50 +#define PIO_PB19_IDX 51 +#define PIO_PB20_IDX 52 +#define PIO_PB21_IDX 53 +#define PIO_PB22_IDX 54 +#define PIO_PB23_IDX 55 +#define PIO_PB24_IDX 56 + +#endif /* _SAM3U1C_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/pio/pio_sam3u1e.h b/hardware/sam/system/libsam/cmsis/sam3u/include/pio/pio_sam3u1e.h new file mode 100644 index 000000000..3a0a48f23 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/pio/pio_sam3u1e.h @@ -0,0 +1,440 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U1E_PIO_ +#define _SAM3U1E_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PB15 (1u << 15) /**< \brief Pin Controlled by PB15 */ +#define PIO_PB16 (1u << 16) /**< \brief Pin Controlled by PB16 */ +#define PIO_PB17 (1u << 17) /**< \brief Pin Controlled by PB17 */ +#define PIO_PB18 (1u << 18) /**< \brief Pin Controlled by PB18 */ +#define PIO_PB19 (1u << 19) /**< \brief Pin Controlled by PB19 */ +#define PIO_PB20 (1u << 20) /**< \brief Pin Controlled by PB20 */ +#define PIO_PB21 (1u << 21) /**< \brief Pin Controlled by PB21 */ +#define PIO_PB22 (1u << 22) /**< \brief Pin Controlled by PB22 */ +#define PIO_PB23 (1u << 23) /**< \brief Pin Controlled by PB23 */ +#define PIO_PB24 (1u << 24) /**< \brief Pin Controlled by PB24 */ +#define PIO_PB25 (1u << 25) /**< \brief Pin Controlled by PB25 */ +#define PIO_PB26 (1u << 26) /**< \brief Pin Controlled by PB26 */ +#define PIO_PB27 (1u << 27) /**< \brief Pin Controlled by PB27 */ +#define PIO_PB28 (1u << 28) /**< \brief Pin Controlled by PB28 */ +#define PIO_PB29 (1u << 29) /**< \brief Pin Controlled by PB29 */ +#define PIO_PB30 (1u << 30) /**< \brief Pin Controlled by PB30 */ +#define PIO_PB31 (1u << 31) /**< \brief Pin Controlled by PB31 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PB5X1_AD0 (1u << 5) /**< \brief Adc signal: AD0 */ +#define PIO_PB6X1_AD1 (1u << 6) /**< \brief Adc signal: AD1 */ +#define PIO_PB7X1_AD2 (1u << 7) /**< \brief Adc signal: AD2 */ +#define PIO_PB8X1_AD3 (1u << 8) /**< \brief Adc signal: AD3 */ +#define PIO_PC28X1_AD4 (1u << 28) /**< \brief Adc signal: AD4 */ +#define PIO_PC29X1_AD5 (1u << 29) /**< \brief Adc signal: AD5 */ +#define PIO_PC30X1_AD6 (1u << 30) /**< \brief Adc signal: AD6 */ +#define PIO_PC31X1_AD7 (1u << 31) /**< \brief Adc signal: AD7 */ +#define PIO_PA17B_ADTRG (1u << 17) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for ADC12B peripheral ========== */ +#define PIO_PA22X1_AD12B0 (1u << 22) /**< \brief Adc12b signal: AD12B0 */ +#define PIO_PA30X1_AD12B1 (1u << 30) /**< \brief Adc12b signal: AD12B1 */ +#define PIO_PB3X1_AD12B2 (1u << 3) /**< \brief Adc12b signal: AD12B2 */ +#define PIO_PB4X1_AD12B3 (1u << 4) /**< \brief Adc12b signal: AD12B3 */ +#define PIO_PC15X1_AD12B4 (1u << 15) /**< \brief Adc12b signal: AD12B4 */ +#define PIO_PC16X1_AD12B5 (1u << 16) /**< \brief Adc12b signal: AD12B5 */ +#define PIO_PC17X1_AD12B6 (1u << 17) /**< \brief Adc12b signal: AD12B6 */ +#define PIO_PC18X1_AD12B7 (1u << 18) /**< \brief Adc12b signal: AD12B7 */ +#define PIO_PA2B_AD12BTRG (1u << 2) /**< \brief Adc12b signal: AD12BTRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PB7B_A0 (1u << 7) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PB7B_NBS0 (1u << 7) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PB8B_A1 (1u << 8) /**< \brief Ebi signal: A1 */ +#define PIO_PC8A_A10 (1u << 8) /**< \brief Ebi signal: A10 */ +#define PIO_PC9A_A11 (1u << 9) /**< \brief Ebi signal: A11 */ +#define PIO_PC10A_A12 (1u << 10) /**< \brief Ebi signal: A12 */ +#define PIO_PC11A_A13 (1u << 11) /**< \brief Ebi signal: A13 */ +#define PIO_PC20A_A14 (1u << 20) /**< \brief Ebi signal: A14 */ +#define PIO_PC21A_A15 (1u << 21) /**< \brief Ebi signal: A15 */ +#define PIO_PC22A_A16 (1u << 22) /**< \brief Ebi signal: A16 */ +#define PIO_PC23A_A17 (1u << 23) /**< \brief Ebi signal: A17 */ +#define PIO_PC24A_A18 (1u << 24) /**< \brief Ebi signal: A18 */ +#define PIO_PC25A_A19 (1u << 25) /**< \brief Ebi signal: A19 */ +#define PIO_PB0B_A2 (1u << 0) /**< \brief Ebi signal: A2 */ +#define PIO_PC0A_A2 (1u << 0) /**< \brief Ebi signal: A2 */ +#define PIO_PC13A_A2 (1u << 13) /**< \brief Ebi signal: A2 */ +#define PIO_PC26A_A20 (1u << 26) /**< \brief Ebi signal: A20 */ +#define PIO_PB21A_A21 (1u << 21) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PB21A_NANDALE (1u << 21) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PB22A_A22 (1u << 22) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PB22A_NANDCLE (1u << 22) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PC27A_A23 (1u << 27) /**< \brief Ebi signal: A23 */ +#define PIO_PB1B_A3 (1u << 1) /**< \brief Ebi signal: A3 */ +#define PIO_PC1A_A3 (1u << 1) /**< \brief Ebi signal: A3 */ +#define PIO_PC14A_A3 (1u << 14) /**< \brief Ebi signal: A3 */ +#define PIO_PB2B_A4 (1u << 2) /**< \brief Ebi signal: A4 */ +#define PIO_PC2A_A4 (1u << 2) /**< \brief Ebi signal: A4 */ +#define PIO_PB3B_A5 (1u << 3) /**< \brief Ebi signal: A5 */ +#define PIO_PC3A_A5 (1u << 3) /**< \brief Ebi signal: A5 */ +#define PIO_PB4B_A6 (1u << 4) /**< \brief Ebi signal: A6 */ +#define PIO_PC4A_A6 (1u << 4) /**< \brief Ebi signal: A6 */ +#define PIO_PB5B_A7 (1u << 5) /**< \brief Ebi signal: A7 */ +#define PIO_PC5A_A7 (1u << 5) /**< \brief Ebi signal: A7 */ +#define PIO_PC6A_A8 (1u << 6) /**< \brief Ebi signal: A8 */ +#define PIO_PC7A_A9 (1u << 7) /**< \brief Ebi signal: A9 */ +#define PIO_PB9A_D0 (1u << 9) /**< \brief Ebi signal: D0 */ +#define PIO_PB10A_D1 (1u << 10) /**< \brief Ebi signal: D1 */ +#define PIO_PB27A_D10 (1u << 27) /**< \brief Ebi signal: D10 */ +#define PIO_PB28A_D11 (1u << 28) /**< \brief Ebi signal: D11 */ +#define PIO_PB29A_D12 (1u << 29) /**< \brief Ebi signal: D12 */ +#define PIO_PB30A_D13 (1u << 30) /**< \brief Ebi signal: D13 */ +#define PIO_PB31A_D14 (1u << 31) /**< \brief Ebi signal: D14 */ +#define PIO_PB6B_D15 (1u << 6) /**< \brief Ebi signal: D15 */ +#define PIO_PB11A_D2 (1u << 11) /**< \brief Ebi signal: D2 */ +#define PIO_PB12A_D3 (1u << 12) /**< \brief Ebi signal: D3 */ +#define PIO_PB13A_D4 (1u << 13) /**< \brief Ebi signal: D4 */ +#define PIO_PB14A_D5 (1u << 14) /**< \brief Ebi signal: D5 */ +#define PIO_PB15A_D6 (1u << 15) /**< \brief Ebi signal: D6 */ +#define PIO_PB16A_D7 (1u << 16) /**< \brief Ebi signal: D7 */ +#define PIO_PB25A_D8 (1u << 25) /**< \brief Ebi signal: D8 */ +#define PIO_PB26A_D9 (1u << 26) /**< \brief Ebi signal: D9 */ +#define PIO_PB17A_NANDOE (1u << 17) /**< \brief Ebi signal: NANDOE */ +#define PIO_PB24A_NANDRDY (1u << 24) /**< \brief Ebi signal: NANDRDY */ +#define PIO_PB18A_NANDWE (1u << 18) /**< \brief Ebi signal: NANDWE */ +#define PIO_PB20A_NCS0 (1u << 20) /**< \brief Ebi signal: NCS0 */ +#define PIO_PA16B_NCS1 (1u << 16) /**< \brief Ebi signal: NCS1 */ +#define PIO_PC12A_NCS1 (1u << 12) /**< \brief Ebi signal: NCS1 */ +#define PIO_PC16A_NCS2 (1u << 16) /**< \brief Ebi signal: NCS2 */ +#define PIO_PC17A_NCS3 (1u << 17) /**< \brief Ebi signal: NCS3 */ +#define PIO_PB19A_NRD (1u << 19) /**< \brief Ebi signal: NRD */ +#define PIO_PC18A_NWAIT (1u << 18) /**< \brief Ebi signal: NWAIT */ +#define PIO_PB23A_NWR0 (1u << 23) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PB23A_NWE (1u << 23) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PC15A_NWR1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PC15A_NBS1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA4A_MCCDA (1u << 4) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA3A_MCCK (1u << 3) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA5A_MCDA0 (1u << 5) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA6A_MCDA1 (1u << 6) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA7A_MCDA2 (1u << 7) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA8A_MCDA3 (1u << 8) /**< \brief Hsmci signal: MCDA3 */ +#define PIO_PC28B_MCDA4 (1u << 28) /**< \brief Hsmci signal: MCDA4 */ +#define PIO_PC29B_MCDA5 (1u << 29) /**< \brief Hsmci signal: MCDA5 */ +#define PIO_PC30B_MCDA6 (1u << 30) /**< \brief Hsmci signal: MCDA6 */ +#define PIO_PC31B_MCDA7 (1u << 31) /**< \brief Hsmci signal: MCDA7 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA21B_PCK0 (1u << 21) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA27B_PCK0 (1u << 27) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA3B_PCK1 (1u << 3) /**< \brief Pmc signal: PCK1 */ +#define PIO_PB24B_PCK1 (1u << 24) /**< \brief Pmc signal: PCK1 */ +#define PIO_PB23B_PCK2 (1u << 23) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA11B_PWMFI0 (1u << 11) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA12B_PWMFI1 (1u << 12) /**< \brief Pwm signal: PWMFI1 */ +#define PIO_PA18B_PWMFI2 (1u << 18) /**< \brief Pwm signal: PWMFI2 */ +#define PIO_PA4B_PWMH0 (1u << 4) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA28B_PWMH0 (1u << 28) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB13B_PWMH0 (1u << 13) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC24B_PWMH0 (1u << 24) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA5B_PWMH1 (1u << 5) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA29B_PWMH1 (1u << 29) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB14B_PWMH1 (1u << 14) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC25B_PWMH1 (1u << 25) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA6B_PWMH2 (1u << 6) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA15B_PWMH2 (1u << 15) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB15B_PWMH2 (1u << 15) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC26B_PWMH2 (1u << 26) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA20B_PWMH3 (1u << 20) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB3A_PWMH3 (1u << 3) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB16B_PWMH3 (1u << 16) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC27B_PWMH3 (1u << 27) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA7B_PWML0 (1u << 7) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB17B_PWML0 (1u << 17) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB25B_PWML0 (1u << 25) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC6B_PWML0 (1u << 6) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC29A_PWML0 (1u << 29) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA8B_PWML1 (1u << 8) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB18B_PWML1 (1u << 18) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB26B_PWML1 (1u << 26) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC7B_PWML1 (1u << 7) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC30A_PWML1 (1u << 30) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA9B_PWML2 (1u << 9) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB19B_PWML2 (1u << 19) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB27B_PWML2 (1u << 27) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC8B_PWML2 (1u << 8) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC31A_PWML2 (1u << 31) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA10B_PWML3 (1u << 10) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB20B_PWML3 (1u << 20) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB28B_PWML3 (1u << 28) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC9B_PWML3 (1u << 9) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC16B_PWML3 (1u << 16) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA13A_MISO (1u << 13) /**< \brief Spi signal: MISO */ +#define PIO_PA14A_MOSI (1u << 14) /**< \brief Spi signal: MOSI */ +#define PIO_PA16A_NPCS0 (1u << 16) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA0B_NPCS1 (1u << 0) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC3B_NPCS1 (1u << 3) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC19B_NPCS1 (1u << 19) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA1B_NPCS2 (1u << 1) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC4B_NPCS2 (1u << 4) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC14B_NPCS2 (1u << 14) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA19B_NPCS3 (1u << 19) /**< \brief Spi signal: NPCS3 */ +#define PIO_PC5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA15A_SPCK (1u << 15) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA27A_RD (1u << 27) /**< \brief Ssc signal: RD */ +#define PIO_PA31A_RF (1u << 31) /**< \brief Ssc signal: RF */ +#define PIO_PA29A_RK (1u << 29) /**< \brief Ssc signal: RK */ +#define PIO_PA26A_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PA30A_TF (1u << 30) /**< \brief Ssc signal: TF */ +#define PIO_PA28A_TK (1u << 28) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA2A_TCLK0 (1u << 2) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PB4A_TCLK1 (1u << 4) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA26B_TCLK2 (1u << 26) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA1A_TIOA0 (1u << 1) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PB5A_TIOA1 (1u << 5) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA30B_TIOA2 (1u << 30) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA0A_TIOB0 (1u << 0) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PB6A_TIOB1 (1u << 6) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA31B_TIOB2 (1u << 31) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA10A_TWCK0 (1u << 10) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA9A_TWD0 (1u << 9) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PA25A_TWCK1 (1u << 25) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PA24A_TWD1 (1u << 24) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART peripheral ========== */ +#define PIO_PA11A_URXD (1u << 11) /**< \brief Uart signal: URXD */ +#define PIO_PA12A_UTXD (1u << 12) /**< \brief Uart signal: UTXD */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PB11B_DCD0 (1u << 11) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PB10B_DSR0 (1u << 10) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PB9B_DTR0 (1u << 9) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PB12B_RI0 (1u << 12) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA19A_RXD0 (1u << 19) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA17A_SCK0 (1u << 17) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA18A_TXD0 (1u << 18) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA23B_CTS1 (1u << 23) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA22B_RTS1 (1u << 22) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA24B_SCK1 (1u << 24) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA20A_TXD1 (1u << 20) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PB22B_CTS2 (1u << 22) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PB21B_RTS2 (1u << 21) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PA23A_RXD2 (1u << 23) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PA25B_SCK2 (1u << 25) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PA22A_TXD2 (1u << 22) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio definition for USART3 peripheral ========== */ +#define PIO_PC10B_CTS3 (1u << 10) /**< \brief Usart3 signal: CTS3 */ +#define PIO_PC11B_RTS3 (1u << 11) /**< \brief Usart3 signal: RTS3 */ +#define PIO_PC13B_RXD3 (1u << 13) /**< \brief Usart3 signal: RXD3 */ +#define PIO_PC19A_SCK3 (1u << 19) /**< \brief Usart3 signal: SCK3 */ +#define PIO_PC12B_TXD3 (1u << 12) /**< \brief Usart3 signal: TXD3 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PB15_IDX 47 +#define PIO_PB16_IDX 48 +#define PIO_PB17_IDX 49 +#define PIO_PB18_IDX 50 +#define PIO_PB19_IDX 51 +#define PIO_PB20_IDX 52 +#define PIO_PB21_IDX 53 +#define PIO_PB22_IDX 54 +#define PIO_PB23_IDX 55 +#define PIO_PB24_IDX 56 +#define PIO_PB25_IDX 57 +#define PIO_PB26_IDX 58 +#define PIO_PB27_IDX 59 +#define PIO_PB28_IDX 60 +#define PIO_PB29_IDX 61 +#define PIO_PB30_IDX 62 +#define PIO_PB31_IDX 63 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 + +#endif /* _SAM3U1E_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/pio/pio_sam3u2c.h b/hardware/sam/system/libsam/cmsis/sam3u/include/pio/pio_sam3u2c.h new file mode 100644 index 000000000..5a3f55661 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/pio/pio_sam3u2c.h @@ -0,0 +1,356 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U2C_PIO_ +#define _SAM3U2C_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PB15 (1u << 15) /**< \brief Pin Controlled by PB15 */ +#define PIO_PB16 (1u << 16) /**< \brief Pin Controlled by PB16 */ +#define PIO_PB17 (1u << 17) /**< \brief Pin Controlled by PB17 */ +#define PIO_PB18 (1u << 18) /**< \brief Pin Controlled by PB18 */ +#define PIO_PB19 (1u << 19) /**< \brief Pin Controlled by PB19 */ +#define PIO_PB20 (1u << 20) /**< \brief Pin Controlled by PB20 */ +#define PIO_PB21 (1u << 21) /**< \brief Pin Controlled by PB21 */ +#define PIO_PB22 (1u << 22) /**< \brief Pin Controlled by PB22 */ +#define PIO_PB23 (1u << 23) /**< \brief Pin Controlled by PB23 */ +#define PIO_PB24 (1u << 24) /**< \brief Pin Controlled by PB24 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PB5X1_AD0 (1u << 5) /**< \brief Adc signal: AD0 */ +#define PIO_PB6X1_AD1 (1u << 6) /**< \brief Adc signal: AD1 */ +#define PIO_PB7X1_AD2 (1u << 7) /**< \brief Adc signal: AD2 */ +#define PIO_PB8X1_AD3 (1u << 8) /**< \brief Adc signal: AD3 */ +#define PIO_PC28X1_AD4 (1u << 28) /**< \brief Adc signal: AD4 */ +#define PIO_PC29X1_AD5 (1u << 29) /**< \brief Adc signal: AD5 */ +#define PIO_PC30X1_AD6 (1u << 30) /**< \brief Adc signal: AD6 */ +#define PIO_PC31X1_AD7 (1u << 31) /**< \brief Adc signal: AD7 */ +#define PIO_PA17B_ADTRG (1u << 17) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for ADC12B peripheral ========== */ +#define PIO_PA22X1_AD12B0 (1u << 22) /**< \brief Adc12b signal: AD12B0 */ +#define PIO_PA30X1_AD12B1 (1u << 30) /**< \brief Adc12b signal: AD12B1 */ +#define PIO_PB3X1_AD12B2 (1u << 3) /**< \brief Adc12b signal: AD12B2 */ +#define PIO_PB4X1_AD12B3 (1u << 4) /**< \brief Adc12b signal: AD12B3 */ +#define PIO_PC15X1_AD12B4 (1u << 15) /**< \brief Adc12b signal: AD12B4 */ +#define PIO_PC16X1_AD12B5 (1u << 16) /**< \brief Adc12b signal: AD12B5 */ +#define PIO_PC17X1_AD12B6 (1u << 17) /**< \brief Adc12b signal: AD12B6 */ +#define PIO_PC18X1_AD12B7 (1u << 18) /**< \brief Adc12b signal: AD12B7 */ +#define PIO_PA2B_AD12BTRG (1u << 2) /**< \brief Adc12b signal: AD12BTRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PB7B_A0 (1u << 7) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PB7B_NBS0 (1u << 7) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PB8B_A1 (1u << 8) /**< \brief Ebi signal: A1 */ +#define PIO_PC8A_A10 (1u << 8) /**< \brief Ebi signal: A10 */ +#define PIO_PC9A_A11 (1u << 9) /**< \brief Ebi signal: A11 */ +#define PIO_PC10A_A12 (1u << 10) /**< \brief Ebi signal: A12 */ +#define PIO_PC11A_A13 (1u << 11) /**< \brief Ebi signal: A13 */ +#define PIO_PC20A_A14 (1u << 20) /**< \brief Ebi signal: A14 */ +#define PIO_PC21A_A15 (1u << 21) /**< \brief Ebi signal: A15 */ +#define PIO_PC22A_A16 (1u << 22) /**< \brief Ebi signal: A16 */ +#define PIO_PC23A_A17 (1u << 23) /**< \brief Ebi signal: A17 */ +#define PIO_PC24A_A18 (1u << 24) /**< \brief Ebi signal: A18 */ +#define PIO_PC25A_A19 (1u << 25) /**< \brief Ebi signal: A19 */ +#define PIO_PB0B_A2 (1u << 0) /**< \brief Ebi signal: A2 */ +#define PIO_PC0A_A2 (1u << 0) /**< \brief Ebi signal: A2 */ +#define PIO_PC13A_A2 (1u << 13) /**< \brief Ebi signal: A2 */ +#define PIO_PC26A_A20 (1u << 26) /**< \brief Ebi signal: A20 */ +#define PIO_PB21A_A21 (1u << 21) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PB21A_NANDALE (1u << 21) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PB22A_A22 (1u << 22) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PB22A_NANDCLE (1u << 22) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PC27A_A23 (1u << 27) /**< \brief Ebi signal: A23 */ +#define PIO_PB1B_A3 (1u << 1) /**< \brief Ebi signal: A3 */ +#define PIO_PC1A_A3 (1u << 1) /**< \brief Ebi signal: A3 */ +#define PIO_PC14A_A3 (1u << 14) /**< \brief Ebi signal: A3 */ +#define PIO_PB2B_A4 (1u << 2) /**< \brief Ebi signal: A4 */ +#define PIO_PC2A_A4 (1u << 2) /**< \brief Ebi signal: A4 */ +#define PIO_PB3B_A5 (1u << 3) /**< \brief Ebi signal: A5 */ +#define PIO_PC3A_A5 (1u << 3) /**< \brief Ebi signal: A5 */ +#define PIO_PB4B_A6 (1u << 4) /**< \brief Ebi signal: A6 */ +#define PIO_PC4A_A6 (1u << 4) /**< \brief Ebi signal: A6 */ +#define PIO_PB5B_A7 (1u << 5) /**< \brief Ebi signal: A7 */ +#define PIO_PC5A_A7 (1u << 5) /**< \brief Ebi signal: A7 */ +#define PIO_PC6A_A8 (1u << 6) /**< \brief Ebi signal: A8 */ +#define PIO_PC7A_A9 (1u << 7) /**< \brief Ebi signal: A9 */ +#define PIO_PB9A_D0 (1u << 9) /**< \brief Ebi signal: D0 */ +#define PIO_PB10A_D1 (1u << 10) /**< \brief Ebi signal: D1 */ +#define PIO_PB27A_D10 (1u << 27) /**< \brief Ebi signal: D10 */ +#define PIO_PB28A_D11 (1u << 28) /**< \brief Ebi signal: D11 */ +#define PIO_PB29A_D12 (1u << 29) /**< \brief Ebi signal: D12 */ +#define PIO_PB30A_D13 (1u << 30) /**< \brief Ebi signal: D13 */ +#define PIO_PB31A_D14 (1u << 31) /**< \brief Ebi signal: D14 */ +#define PIO_PB6B_D15 (1u << 6) /**< \brief Ebi signal: D15 */ +#define PIO_PB11A_D2 (1u << 11) /**< \brief Ebi signal: D2 */ +#define PIO_PB12A_D3 (1u << 12) /**< \brief Ebi signal: D3 */ +#define PIO_PB13A_D4 (1u << 13) /**< \brief Ebi signal: D4 */ +#define PIO_PB14A_D5 (1u << 14) /**< \brief Ebi signal: D5 */ +#define PIO_PB15A_D6 (1u << 15) /**< \brief Ebi signal: D6 */ +#define PIO_PB16A_D7 (1u << 16) /**< \brief Ebi signal: D7 */ +#define PIO_PB25A_D8 (1u << 25) /**< \brief Ebi signal: D8 */ +#define PIO_PB26A_D9 (1u << 26) /**< \brief Ebi signal: D9 */ +#define PIO_PB17A_NANDOE (1u << 17) /**< \brief Ebi signal: NANDOE */ +#define PIO_PB24A_NANDRDY (1u << 24) /**< \brief Ebi signal: NANDRDY */ +#define PIO_PB18A_NANDWE (1u << 18) /**< \brief Ebi signal: NANDWE */ +#define PIO_PB20A_NCS0 (1u << 20) /**< \brief Ebi signal: NCS0 */ +#define PIO_PA16B_NCS1 (1u << 16) /**< \brief Ebi signal: NCS1 */ +#define PIO_PC12A_NCS1 (1u << 12) /**< \brief Ebi signal: NCS1 */ +#define PIO_PC16A_NCS2 (1u << 16) /**< \brief Ebi signal: NCS2 */ +#define PIO_PC17A_NCS3 (1u << 17) /**< \brief Ebi signal: NCS3 */ +#define PIO_PB19A_NRD (1u << 19) /**< \brief Ebi signal: NRD */ +#define PIO_PC18A_NWAIT (1u << 18) /**< \brief Ebi signal: NWAIT */ +#define PIO_PB23A_NWR0 (1u << 23) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PB23A_NWE (1u << 23) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PC15A_NWR1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PC15A_NBS1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA4A_MCCDA (1u << 4) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA3A_MCCK (1u << 3) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA5A_MCDA0 (1u << 5) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA6A_MCDA1 (1u << 6) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA7A_MCDA2 (1u << 7) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA8A_MCDA3 (1u << 8) /**< \brief Hsmci signal: MCDA3 */ +#define PIO_PC28B_MCDA4 (1u << 28) /**< \brief Hsmci signal: MCDA4 */ +#define PIO_PC29B_MCDA5 (1u << 29) /**< \brief Hsmci signal: MCDA5 */ +#define PIO_PC30B_MCDA6 (1u << 30) /**< \brief Hsmci signal: MCDA6 */ +#define PIO_PC31B_MCDA7 (1u << 31) /**< \brief Hsmci signal: MCDA7 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA21B_PCK0 (1u << 21) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA27B_PCK0 (1u << 27) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA3B_PCK1 (1u << 3) /**< \brief Pmc signal: PCK1 */ +#define PIO_PB24B_PCK1 (1u << 24) /**< \brief Pmc signal: PCK1 */ +#define PIO_PB23B_PCK2 (1u << 23) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA11B_PWMFI0 (1u << 11) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA12B_PWMFI1 (1u << 12) /**< \brief Pwm signal: PWMFI1 */ +#define PIO_PA18B_PWMFI2 (1u << 18) /**< \brief Pwm signal: PWMFI2 */ +#define PIO_PA4B_PWMH0 (1u << 4) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA28B_PWMH0 (1u << 28) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB13B_PWMH0 (1u << 13) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC24B_PWMH0 (1u << 24) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA5B_PWMH1 (1u << 5) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA29B_PWMH1 (1u << 29) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB14B_PWMH1 (1u << 14) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC25B_PWMH1 (1u << 25) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA6B_PWMH2 (1u << 6) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA15B_PWMH2 (1u << 15) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB15B_PWMH2 (1u << 15) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC26B_PWMH2 (1u << 26) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA20B_PWMH3 (1u << 20) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB3A_PWMH3 (1u << 3) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB16B_PWMH3 (1u << 16) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC27B_PWMH3 (1u << 27) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA7B_PWML0 (1u << 7) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB17B_PWML0 (1u << 17) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB25B_PWML0 (1u << 25) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC6B_PWML0 (1u << 6) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC29A_PWML0 (1u << 29) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA8B_PWML1 (1u << 8) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB18B_PWML1 (1u << 18) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB26B_PWML1 (1u << 26) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC7B_PWML1 (1u << 7) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC30A_PWML1 (1u << 30) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA9B_PWML2 (1u << 9) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB19B_PWML2 (1u << 19) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB27B_PWML2 (1u << 27) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC8B_PWML2 (1u << 8) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC31A_PWML2 (1u << 31) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA10B_PWML3 (1u << 10) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB20B_PWML3 (1u << 20) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB28B_PWML3 (1u << 28) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC9B_PWML3 (1u << 9) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC16B_PWML3 (1u << 16) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA13A_MISO (1u << 13) /**< \brief Spi signal: MISO */ +#define PIO_PA14A_MOSI (1u << 14) /**< \brief Spi signal: MOSI */ +#define PIO_PA16A_NPCS0 (1u << 16) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA0B_NPCS1 (1u << 0) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC3B_NPCS1 (1u << 3) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC19B_NPCS1 (1u << 19) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA1B_NPCS2 (1u << 1) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC4B_NPCS2 (1u << 4) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC14B_NPCS2 (1u << 14) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA19B_NPCS3 (1u << 19) /**< \brief Spi signal: NPCS3 */ +#define PIO_PC5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA15A_SPCK (1u << 15) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA27A_RD (1u << 27) /**< \brief Ssc signal: RD */ +#define PIO_PA31A_RF (1u << 31) /**< \brief Ssc signal: RF */ +#define PIO_PA29A_RK (1u << 29) /**< \brief Ssc signal: RK */ +#define PIO_PA26A_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PA30A_TF (1u << 30) /**< \brief Ssc signal: TF */ +#define PIO_PA28A_TK (1u << 28) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA2A_TCLK0 (1u << 2) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PB4A_TCLK1 (1u << 4) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA26B_TCLK2 (1u << 26) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA1A_TIOA0 (1u << 1) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PB5A_TIOA1 (1u << 5) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA30B_TIOA2 (1u << 30) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA0A_TIOB0 (1u << 0) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PB6A_TIOB1 (1u << 6) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA31B_TIOB2 (1u << 31) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA10A_TWCK0 (1u << 10) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA9A_TWD0 (1u << 9) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PA25A_TWCK1 (1u << 25) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PA24A_TWD1 (1u << 24) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART peripheral ========== */ +#define PIO_PA11A_URXD (1u << 11) /**< \brief Uart signal: URXD */ +#define PIO_PA12A_UTXD (1u << 12) /**< \brief Uart signal: UTXD */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PB11B_DCD0 (1u << 11) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PB10B_DSR0 (1u << 10) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PB9B_DTR0 (1u << 9) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PB12B_RI0 (1u << 12) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA19A_RXD0 (1u << 19) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA17A_SCK0 (1u << 17) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA18A_TXD0 (1u << 18) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA23B_CTS1 (1u << 23) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA22B_RTS1 (1u << 22) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA24B_SCK1 (1u << 24) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA20A_TXD1 (1u << 20) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PB22B_CTS2 (1u << 22) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PB21B_RTS2 (1u << 21) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PA23A_RXD2 (1u << 23) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PA25B_SCK2 (1u << 25) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PA22A_TXD2 (1u << 22) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PB15_IDX 47 +#define PIO_PB16_IDX 48 +#define PIO_PB17_IDX 49 +#define PIO_PB18_IDX 50 +#define PIO_PB19_IDX 51 +#define PIO_PB20_IDX 52 +#define PIO_PB21_IDX 53 +#define PIO_PB22_IDX 54 +#define PIO_PB23_IDX 55 +#define PIO_PB24_IDX 56 + +#endif /* _SAM3U2C_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/pio/pio_sam3u2e.h b/hardware/sam/system/libsam/cmsis/sam3u/include/pio/pio_sam3u2e.h new file mode 100644 index 000000000..0fa035631 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/pio/pio_sam3u2e.h @@ -0,0 +1,440 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U2E_PIO_ +#define _SAM3U2E_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PB15 (1u << 15) /**< \brief Pin Controlled by PB15 */ +#define PIO_PB16 (1u << 16) /**< \brief Pin Controlled by PB16 */ +#define PIO_PB17 (1u << 17) /**< \brief Pin Controlled by PB17 */ +#define PIO_PB18 (1u << 18) /**< \brief Pin Controlled by PB18 */ +#define PIO_PB19 (1u << 19) /**< \brief Pin Controlled by PB19 */ +#define PIO_PB20 (1u << 20) /**< \brief Pin Controlled by PB20 */ +#define PIO_PB21 (1u << 21) /**< \brief Pin Controlled by PB21 */ +#define PIO_PB22 (1u << 22) /**< \brief Pin Controlled by PB22 */ +#define PIO_PB23 (1u << 23) /**< \brief Pin Controlled by PB23 */ +#define PIO_PB24 (1u << 24) /**< \brief Pin Controlled by PB24 */ +#define PIO_PB25 (1u << 25) /**< \brief Pin Controlled by PB25 */ +#define PIO_PB26 (1u << 26) /**< \brief Pin Controlled by PB26 */ +#define PIO_PB27 (1u << 27) /**< \brief Pin Controlled by PB27 */ +#define PIO_PB28 (1u << 28) /**< \brief Pin Controlled by PB28 */ +#define PIO_PB29 (1u << 29) /**< \brief Pin Controlled by PB29 */ +#define PIO_PB30 (1u << 30) /**< \brief Pin Controlled by PB30 */ +#define PIO_PB31 (1u << 31) /**< \brief Pin Controlled by PB31 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PB5X1_AD0 (1u << 5) /**< \brief Adc signal: AD0 */ +#define PIO_PB6X1_AD1 (1u << 6) /**< \brief Adc signal: AD1 */ +#define PIO_PB7X1_AD2 (1u << 7) /**< \brief Adc signal: AD2 */ +#define PIO_PB8X1_AD3 (1u << 8) /**< \brief Adc signal: AD3 */ +#define PIO_PC28X1_AD4 (1u << 28) /**< \brief Adc signal: AD4 */ +#define PIO_PC29X1_AD5 (1u << 29) /**< \brief Adc signal: AD5 */ +#define PIO_PC30X1_AD6 (1u << 30) /**< \brief Adc signal: AD6 */ +#define PIO_PC31X1_AD7 (1u << 31) /**< \brief Adc signal: AD7 */ +#define PIO_PA17B_ADTRG (1u << 17) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for ADC12B peripheral ========== */ +#define PIO_PA22X1_AD12B0 (1u << 22) /**< \brief Adc12b signal: AD12B0 */ +#define PIO_PA30X1_AD12B1 (1u << 30) /**< \brief Adc12b signal: AD12B1 */ +#define PIO_PB3X1_AD12B2 (1u << 3) /**< \brief Adc12b signal: AD12B2 */ +#define PIO_PB4X1_AD12B3 (1u << 4) /**< \brief Adc12b signal: AD12B3 */ +#define PIO_PC15X1_AD12B4 (1u << 15) /**< \brief Adc12b signal: AD12B4 */ +#define PIO_PC16X1_AD12B5 (1u << 16) /**< \brief Adc12b signal: AD12B5 */ +#define PIO_PC17X1_AD12B6 (1u << 17) /**< \brief Adc12b signal: AD12B6 */ +#define PIO_PC18X1_AD12B7 (1u << 18) /**< \brief Adc12b signal: AD12B7 */ +#define PIO_PA2B_AD12BTRG (1u << 2) /**< \brief Adc12b signal: AD12BTRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PB7B_A0 (1u << 7) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PB7B_NBS0 (1u << 7) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PB8B_A1 (1u << 8) /**< \brief Ebi signal: A1 */ +#define PIO_PC8A_A10 (1u << 8) /**< \brief Ebi signal: A10 */ +#define PIO_PC9A_A11 (1u << 9) /**< \brief Ebi signal: A11 */ +#define PIO_PC10A_A12 (1u << 10) /**< \brief Ebi signal: A12 */ +#define PIO_PC11A_A13 (1u << 11) /**< \brief Ebi signal: A13 */ +#define PIO_PC20A_A14 (1u << 20) /**< \brief Ebi signal: A14 */ +#define PIO_PC21A_A15 (1u << 21) /**< \brief Ebi signal: A15 */ +#define PIO_PC22A_A16 (1u << 22) /**< \brief Ebi signal: A16 */ +#define PIO_PC23A_A17 (1u << 23) /**< \brief Ebi signal: A17 */ +#define PIO_PC24A_A18 (1u << 24) /**< \brief Ebi signal: A18 */ +#define PIO_PC25A_A19 (1u << 25) /**< \brief Ebi signal: A19 */ +#define PIO_PB0B_A2 (1u << 0) /**< \brief Ebi signal: A2 */ +#define PIO_PC0A_A2 (1u << 0) /**< \brief Ebi signal: A2 */ +#define PIO_PC13A_A2 (1u << 13) /**< \brief Ebi signal: A2 */ +#define PIO_PC26A_A20 (1u << 26) /**< \brief Ebi signal: A20 */ +#define PIO_PB21A_A21 (1u << 21) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PB21A_NANDALE (1u << 21) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PB22A_A22 (1u << 22) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PB22A_NANDCLE (1u << 22) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PC27A_A23 (1u << 27) /**< \brief Ebi signal: A23 */ +#define PIO_PB1B_A3 (1u << 1) /**< \brief Ebi signal: A3 */ +#define PIO_PC1A_A3 (1u << 1) /**< \brief Ebi signal: A3 */ +#define PIO_PC14A_A3 (1u << 14) /**< \brief Ebi signal: A3 */ +#define PIO_PB2B_A4 (1u << 2) /**< \brief Ebi signal: A4 */ +#define PIO_PC2A_A4 (1u << 2) /**< \brief Ebi signal: A4 */ +#define PIO_PB3B_A5 (1u << 3) /**< \brief Ebi signal: A5 */ +#define PIO_PC3A_A5 (1u << 3) /**< \brief Ebi signal: A5 */ +#define PIO_PB4B_A6 (1u << 4) /**< \brief Ebi signal: A6 */ +#define PIO_PC4A_A6 (1u << 4) /**< \brief Ebi signal: A6 */ +#define PIO_PB5B_A7 (1u << 5) /**< \brief Ebi signal: A7 */ +#define PIO_PC5A_A7 (1u << 5) /**< \brief Ebi signal: A7 */ +#define PIO_PC6A_A8 (1u << 6) /**< \brief Ebi signal: A8 */ +#define PIO_PC7A_A9 (1u << 7) /**< \brief Ebi signal: A9 */ +#define PIO_PB9A_D0 (1u << 9) /**< \brief Ebi signal: D0 */ +#define PIO_PB10A_D1 (1u << 10) /**< \brief Ebi signal: D1 */ +#define PIO_PB27A_D10 (1u << 27) /**< \brief Ebi signal: D10 */ +#define PIO_PB28A_D11 (1u << 28) /**< \brief Ebi signal: D11 */ +#define PIO_PB29A_D12 (1u << 29) /**< \brief Ebi signal: D12 */ +#define PIO_PB30A_D13 (1u << 30) /**< \brief Ebi signal: D13 */ +#define PIO_PB31A_D14 (1u << 31) /**< \brief Ebi signal: D14 */ +#define PIO_PB6B_D15 (1u << 6) /**< \brief Ebi signal: D15 */ +#define PIO_PB11A_D2 (1u << 11) /**< \brief Ebi signal: D2 */ +#define PIO_PB12A_D3 (1u << 12) /**< \brief Ebi signal: D3 */ +#define PIO_PB13A_D4 (1u << 13) /**< \brief Ebi signal: D4 */ +#define PIO_PB14A_D5 (1u << 14) /**< \brief Ebi signal: D5 */ +#define PIO_PB15A_D6 (1u << 15) /**< \brief Ebi signal: D6 */ +#define PIO_PB16A_D7 (1u << 16) /**< \brief Ebi signal: D7 */ +#define PIO_PB25A_D8 (1u << 25) /**< \brief Ebi signal: D8 */ +#define PIO_PB26A_D9 (1u << 26) /**< \brief Ebi signal: D9 */ +#define PIO_PB17A_NANDOE (1u << 17) /**< \brief Ebi signal: NANDOE */ +#define PIO_PB24A_NANDRDY (1u << 24) /**< \brief Ebi signal: NANDRDY */ +#define PIO_PB18A_NANDWE (1u << 18) /**< \brief Ebi signal: NANDWE */ +#define PIO_PB20A_NCS0 (1u << 20) /**< \brief Ebi signal: NCS0 */ +#define PIO_PA16B_NCS1 (1u << 16) /**< \brief Ebi signal: NCS1 */ +#define PIO_PC12A_NCS1 (1u << 12) /**< \brief Ebi signal: NCS1 */ +#define PIO_PC16A_NCS2 (1u << 16) /**< \brief Ebi signal: NCS2 */ +#define PIO_PC17A_NCS3 (1u << 17) /**< \brief Ebi signal: NCS3 */ +#define PIO_PB19A_NRD (1u << 19) /**< \brief Ebi signal: NRD */ +#define PIO_PC18A_NWAIT (1u << 18) /**< \brief Ebi signal: NWAIT */ +#define PIO_PB23A_NWR0 (1u << 23) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PB23A_NWE (1u << 23) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PC15A_NWR1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PC15A_NBS1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA4A_MCCDA (1u << 4) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA3A_MCCK (1u << 3) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA5A_MCDA0 (1u << 5) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA6A_MCDA1 (1u << 6) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA7A_MCDA2 (1u << 7) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA8A_MCDA3 (1u << 8) /**< \brief Hsmci signal: MCDA3 */ +#define PIO_PC28B_MCDA4 (1u << 28) /**< \brief Hsmci signal: MCDA4 */ +#define PIO_PC29B_MCDA5 (1u << 29) /**< \brief Hsmci signal: MCDA5 */ +#define PIO_PC30B_MCDA6 (1u << 30) /**< \brief Hsmci signal: MCDA6 */ +#define PIO_PC31B_MCDA7 (1u << 31) /**< \brief Hsmci signal: MCDA7 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA21B_PCK0 (1u << 21) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA27B_PCK0 (1u << 27) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA3B_PCK1 (1u << 3) /**< \brief Pmc signal: PCK1 */ +#define PIO_PB24B_PCK1 (1u << 24) /**< \brief Pmc signal: PCK1 */ +#define PIO_PB23B_PCK2 (1u << 23) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA11B_PWMFI0 (1u << 11) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA12B_PWMFI1 (1u << 12) /**< \brief Pwm signal: PWMFI1 */ +#define PIO_PA18B_PWMFI2 (1u << 18) /**< \brief Pwm signal: PWMFI2 */ +#define PIO_PA4B_PWMH0 (1u << 4) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA28B_PWMH0 (1u << 28) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB13B_PWMH0 (1u << 13) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC24B_PWMH0 (1u << 24) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA5B_PWMH1 (1u << 5) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA29B_PWMH1 (1u << 29) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB14B_PWMH1 (1u << 14) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC25B_PWMH1 (1u << 25) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA6B_PWMH2 (1u << 6) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA15B_PWMH2 (1u << 15) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB15B_PWMH2 (1u << 15) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC26B_PWMH2 (1u << 26) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA20B_PWMH3 (1u << 20) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB3A_PWMH3 (1u << 3) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB16B_PWMH3 (1u << 16) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC27B_PWMH3 (1u << 27) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA7B_PWML0 (1u << 7) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB17B_PWML0 (1u << 17) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB25B_PWML0 (1u << 25) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC6B_PWML0 (1u << 6) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC29A_PWML0 (1u << 29) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA8B_PWML1 (1u << 8) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB18B_PWML1 (1u << 18) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB26B_PWML1 (1u << 26) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC7B_PWML1 (1u << 7) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC30A_PWML1 (1u << 30) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA9B_PWML2 (1u << 9) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB19B_PWML2 (1u << 19) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB27B_PWML2 (1u << 27) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC8B_PWML2 (1u << 8) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC31A_PWML2 (1u << 31) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA10B_PWML3 (1u << 10) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB20B_PWML3 (1u << 20) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB28B_PWML3 (1u << 28) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC9B_PWML3 (1u << 9) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC16B_PWML3 (1u << 16) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA13A_MISO (1u << 13) /**< \brief Spi signal: MISO */ +#define PIO_PA14A_MOSI (1u << 14) /**< \brief Spi signal: MOSI */ +#define PIO_PA16A_NPCS0 (1u << 16) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA0B_NPCS1 (1u << 0) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC3B_NPCS1 (1u << 3) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC19B_NPCS1 (1u << 19) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA1B_NPCS2 (1u << 1) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC4B_NPCS2 (1u << 4) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC14B_NPCS2 (1u << 14) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA19B_NPCS3 (1u << 19) /**< \brief Spi signal: NPCS3 */ +#define PIO_PC5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA15A_SPCK (1u << 15) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA27A_RD (1u << 27) /**< \brief Ssc signal: RD */ +#define PIO_PA31A_RF (1u << 31) /**< \brief Ssc signal: RF */ +#define PIO_PA29A_RK (1u << 29) /**< \brief Ssc signal: RK */ +#define PIO_PA26A_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PA30A_TF (1u << 30) /**< \brief Ssc signal: TF */ +#define PIO_PA28A_TK (1u << 28) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA2A_TCLK0 (1u << 2) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PB4A_TCLK1 (1u << 4) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA26B_TCLK2 (1u << 26) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA1A_TIOA0 (1u << 1) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PB5A_TIOA1 (1u << 5) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA30B_TIOA2 (1u << 30) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA0A_TIOB0 (1u << 0) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PB6A_TIOB1 (1u << 6) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA31B_TIOB2 (1u << 31) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA10A_TWCK0 (1u << 10) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA9A_TWD0 (1u << 9) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PA25A_TWCK1 (1u << 25) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PA24A_TWD1 (1u << 24) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART peripheral ========== */ +#define PIO_PA11A_URXD (1u << 11) /**< \brief Uart signal: URXD */ +#define PIO_PA12A_UTXD (1u << 12) /**< \brief Uart signal: UTXD */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PB11B_DCD0 (1u << 11) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PB10B_DSR0 (1u << 10) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PB9B_DTR0 (1u << 9) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PB12B_RI0 (1u << 12) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA19A_RXD0 (1u << 19) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA17A_SCK0 (1u << 17) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA18A_TXD0 (1u << 18) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA23B_CTS1 (1u << 23) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA22B_RTS1 (1u << 22) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA24B_SCK1 (1u << 24) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA20A_TXD1 (1u << 20) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PB22B_CTS2 (1u << 22) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PB21B_RTS2 (1u << 21) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PA23A_RXD2 (1u << 23) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PA25B_SCK2 (1u << 25) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PA22A_TXD2 (1u << 22) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio definition for USART3 peripheral ========== */ +#define PIO_PC10B_CTS3 (1u << 10) /**< \brief Usart3 signal: CTS3 */ +#define PIO_PC11B_RTS3 (1u << 11) /**< \brief Usart3 signal: RTS3 */ +#define PIO_PC13B_RXD3 (1u << 13) /**< \brief Usart3 signal: RXD3 */ +#define PIO_PC19A_SCK3 (1u << 19) /**< \brief Usart3 signal: SCK3 */ +#define PIO_PC12B_TXD3 (1u << 12) /**< \brief Usart3 signal: TXD3 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PB15_IDX 47 +#define PIO_PB16_IDX 48 +#define PIO_PB17_IDX 49 +#define PIO_PB18_IDX 50 +#define PIO_PB19_IDX 51 +#define PIO_PB20_IDX 52 +#define PIO_PB21_IDX 53 +#define PIO_PB22_IDX 54 +#define PIO_PB23_IDX 55 +#define PIO_PB24_IDX 56 +#define PIO_PB25_IDX 57 +#define PIO_PB26_IDX 58 +#define PIO_PB27_IDX 59 +#define PIO_PB28_IDX 60 +#define PIO_PB29_IDX 61 +#define PIO_PB30_IDX 62 +#define PIO_PB31_IDX 63 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 + +#endif /* _SAM3U2E_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/pio/pio_sam3u4c.h b/hardware/sam/system/libsam/cmsis/sam3u/include/pio/pio_sam3u4c.h new file mode 100644 index 000000000..602db8ad8 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/pio/pio_sam3u4c.h @@ -0,0 +1,356 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U4C_PIO_ +#define _SAM3U4C_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PB15 (1u << 15) /**< \brief Pin Controlled by PB15 */ +#define PIO_PB16 (1u << 16) /**< \brief Pin Controlled by PB16 */ +#define PIO_PB17 (1u << 17) /**< \brief Pin Controlled by PB17 */ +#define PIO_PB18 (1u << 18) /**< \brief Pin Controlled by PB18 */ +#define PIO_PB19 (1u << 19) /**< \brief Pin Controlled by PB19 */ +#define PIO_PB20 (1u << 20) /**< \brief Pin Controlled by PB20 */ +#define PIO_PB21 (1u << 21) /**< \brief Pin Controlled by PB21 */ +#define PIO_PB22 (1u << 22) /**< \brief Pin Controlled by PB22 */ +#define PIO_PB23 (1u << 23) /**< \brief Pin Controlled by PB23 */ +#define PIO_PB24 (1u << 24) /**< \brief Pin Controlled by PB24 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PB5X1_AD0 (1u << 5) /**< \brief Adc signal: AD0 */ +#define PIO_PB6X1_AD1 (1u << 6) /**< \brief Adc signal: AD1 */ +#define PIO_PB7X1_AD2 (1u << 7) /**< \brief Adc signal: AD2 */ +#define PIO_PB8X1_AD3 (1u << 8) /**< \brief Adc signal: AD3 */ +#define PIO_PC28X1_AD4 (1u << 28) /**< \brief Adc signal: AD4 */ +#define PIO_PC29X1_AD5 (1u << 29) /**< \brief Adc signal: AD5 */ +#define PIO_PC30X1_AD6 (1u << 30) /**< \brief Adc signal: AD6 */ +#define PIO_PC31X1_AD7 (1u << 31) /**< \brief Adc signal: AD7 */ +#define PIO_PA17B_ADTRG (1u << 17) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for ADC12B peripheral ========== */ +#define PIO_PA22X1_AD12B0 (1u << 22) /**< \brief Adc12b signal: AD12B0 */ +#define PIO_PA30X1_AD12B1 (1u << 30) /**< \brief Adc12b signal: AD12B1 */ +#define PIO_PB3X1_AD12B2 (1u << 3) /**< \brief Adc12b signal: AD12B2 */ +#define PIO_PB4X1_AD12B3 (1u << 4) /**< \brief Adc12b signal: AD12B3 */ +#define PIO_PC15X1_AD12B4 (1u << 15) /**< \brief Adc12b signal: AD12B4 */ +#define PIO_PC16X1_AD12B5 (1u << 16) /**< \brief Adc12b signal: AD12B5 */ +#define PIO_PC17X1_AD12B6 (1u << 17) /**< \brief Adc12b signal: AD12B6 */ +#define PIO_PC18X1_AD12B7 (1u << 18) /**< \brief Adc12b signal: AD12B7 */ +#define PIO_PA2B_AD12BTRG (1u << 2) /**< \brief Adc12b signal: AD12BTRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PB7B_A0 (1u << 7) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PB7B_NBS0 (1u << 7) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PB8B_A1 (1u << 8) /**< \brief Ebi signal: A1 */ +#define PIO_PC8A_A10 (1u << 8) /**< \brief Ebi signal: A10 */ +#define PIO_PC9A_A11 (1u << 9) /**< \brief Ebi signal: A11 */ +#define PIO_PC10A_A12 (1u << 10) /**< \brief Ebi signal: A12 */ +#define PIO_PC11A_A13 (1u << 11) /**< \brief Ebi signal: A13 */ +#define PIO_PC20A_A14 (1u << 20) /**< \brief Ebi signal: A14 */ +#define PIO_PC21A_A15 (1u << 21) /**< \brief Ebi signal: A15 */ +#define PIO_PC22A_A16 (1u << 22) /**< \brief Ebi signal: A16 */ +#define PIO_PC23A_A17 (1u << 23) /**< \brief Ebi signal: A17 */ +#define PIO_PC24A_A18 (1u << 24) /**< \brief Ebi signal: A18 */ +#define PIO_PC25A_A19 (1u << 25) /**< \brief Ebi signal: A19 */ +#define PIO_PB0B_A2 (1u << 0) /**< \brief Ebi signal: A2 */ +#define PIO_PC0A_A2 (1u << 0) /**< \brief Ebi signal: A2 */ +#define PIO_PC13A_A2 (1u << 13) /**< \brief Ebi signal: A2 */ +#define PIO_PC26A_A20 (1u << 26) /**< \brief Ebi signal: A20 */ +#define PIO_PB21A_A21 (1u << 21) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PB21A_NANDALE (1u << 21) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PB22A_A22 (1u << 22) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PB22A_NANDCLE (1u << 22) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PC27A_A23 (1u << 27) /**< \brief Ebi signal: A23 */ +#define PIO_PB1B_A3 (1u << 1) /**< \brief Ebi signal: A3 */ +#define PIO_PC1A_A3 (1u << 1) /**< \brief Ebi signal: A3 */ +#define PIO_PC14A_A3 (1u << 14) /**< \brief Ebi signal: A3 */ +#define PIO_PB2B_A4 (1u << 2) /**< \brief Ebi signal: A4 */ +#define PIO_PC2A_A4 (1u << 2) /**< \brief Ebi signal: A4 */ +#define PIO_PB3B_A5 (1u << 3) /**< \brief Ebi signal: A5 */ +#define PIO_PC3A_A5 (1u << 3) /**< \brief Ebi signal: A5 */ +#define PIO_PB4B_A6 (1u << 4) /**< \brief Ebi signal: A6 */ +#define PIO_PC4A_A6 (1u << 4) /**< \brief Ebi signal: A6 */ +#define PIO_PB5B_A7 (1u << 5) /**< \brief Ebi signal: A7 */ +#define PIO_PC5A_A7 (1u << 5) /**< \brief Ebi signal: A7 */ +#define PIO_PC6A_A8 (1u << 6) /**< \brief Ebi signal: A8 */ +#define PIO_PC7A_A9 (1u << 7) /**< \brief Ebi signal: A9 */ +#define PIO_PB9A_D0 (1u << 9) /**< \brief Ebi signal: D0 */ +#define PIO_PB10A_D1 (1u << 10) /**< \brief Ebi signal: D1 */ +#define PIO_PB27A_D10 (1u << 27) /**< \brief Ebi signal: D10 */ +#define PIO_PB28A_D11 (1u << 28) /**< \brief Ebi signal: D11 */ +#define PIO_PB29A_D12 (1u << 29) /**< \brief Ebi signal: D12 */ +#define PIO_PB30A_D13 (1u << 30) /**< \brief Ebi signal: D13 */ +#define PIO_PB31A_D14 (1u << 31) /**< \brief Ebi signal: D14 */ +#define PIO_PB6B_D15 (1u << 6) /**< \brief Ebi signal: D15 */ +#define PIO_PB11A_D2 (1u << 11) /**< \brief Ebi signal: D2 */ +#define PIO_PB12A_D3 (1u << 12) /**< \brief Ebi signal: D3 */ +#define PIO_PB13A_D4 (1u << 13) /**< \brief Ebi signal: D4 */ +#define PIO_PB14A_D5 (1u << 14) /**< \brief Ebi signal: D5 */ +#define PIO_PB15A_D6 (1u << 15) /**< \brief Ebi signal: D6 */ +#define PIO_PB16A_D7 (1u << 16) /**< \brief Ebi signal: D7 */ +#define PIO_PB25A_D8 (1u << 25) /**< \brief Ebi signal: D8 */ +#define PIO_PB26A_D9 (1u << 26) /**< \brief Ebi signal: D9 */ +#define PIO_PB17A_NANDOE (1u << 17) /**< \brief Ebi signal: NANDOE */ +#define PIO_PB24A_NANDRDY (1u << 24) /**< \brief Ebi signal: NANDRDY */ +#define PIO_PB18A_NANDWE (1u << 18) /**< \brief Ebi signal: NANDWE */ +#define PIO_PB20A_NCS0 (1u << 20) /**< \brief Ebi signal: NCS0 */ +#define PIO_PA16B_NCS1 (1u << 16) /**< \brief Ebi signal: NCS1 */ +#define PIO_PC12A_NCS1 (1u << 12) /**< \brief Ebi signal: NCS1 */ +#define PIO_PC16A_NCS2 (1u << 16) /**< \brief Ebi signal: NCS2 */ +#define PIO_PC17A_NCS3 (1u << 17) /**< \brief Ebi signal: NCS3 */ +#define PIO_PB19A_NRD (1u << 19) /**< \brief Ebi signal: NRD */ +#define PIO_PC18A_NWAIT (1u << 18) /**< \brief Ebi signal: NWAIT */ +#define PIO_PB23A_NWR0 (1u << 23) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PB23A_NWE (1u << 23) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PC15A_NWR1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PC15A_NBS1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA4A_MCCDA (1u << 4) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA3A_MCCK (1u << 3) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA5A_MCDA0 (1u << 5) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA6A_MCDA1 (1u << 6) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA7A_MCDA2 (1u << 7) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA8A_MCDA3 (1u << 8) /**< \brief Hsmci signal: MCDA3 */ +#define PIO_PC28B_MCDA4 (1u << 28) /**< \brief Hsmci signal: MCDA4 */ +#define PIO_PC29B_MCDA5 (1u << 29) /**< \brief Hsmci signal: MCDA5 */ +#define PIO_PC30B_MCDA6 (1u << 30) /**< \brief Hsmci signal: MCDA6 */ +#define PIO_PC31B_MCDA7 (1u << 31) /**< \brief Hsmci signal: MCDA7 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA21B_PCK0 (1u << 21) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA27B_PCK0 (1u << 27) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA3B_PCK1 (1u << 3) /**< \brief Pmc signal: PCK1 */ +#define PIO_PB24B_PCK1 (1u << 24) /**< \brief Pmc signal: PCK1 */ +#define PIO_PB23B_PCK2 (1u << 23) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA11B_PWMFI0 (1u << 11) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA12B_PWMFI1 (1u << 12) /**< \brief Pwm signal: PWMFI1 */ +#define PIO_PA18B_PWMFI2 (1u << 18) /**< \brief Pwm signal: PWMFI2 */ +#define PIO_PA4B_PWMH0 (1u << 4) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA28B_PWMH0 (1u << 28) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB13B_PWMH0 (1u << 13) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC24B_PWMH0 (1u << 24) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA5B_PWMH1 (1u << 5) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA29B_PWMH1 (1u << 29) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB14B_PWMH1 (1u << 14) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC25B_PWMH1 (1u << 25) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA6B_PWMH2 (1u << 6) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA15B_PWMH2 (1u << 15) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB15B_PWMH2 (1u << 15) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC26B_PWMH2 (1u << 26) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA20B_PWMH3 (1u << 20) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB3A_PWMH3 (1u << 3) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB16B_PWMH3 (1u << 16) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC27B_PWMH3 (1u << 27) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA7B_PWML0 (1u << 7) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB17B_PWML0 (1u << 17) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB25B_PWML0 (1u << 25) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC6B_PWML0 (1u << 6) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC29A_PWML0 (1u << 29) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA8B_PWML1 (1u << 8) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB18B_PWML1 (1u << 18) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB26B_PWML1 (1u << 26) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC7B_PWML1 (1u << 7) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC30A_PWML1 (1u << 30) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA9B_PWML2 (1u << 9) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB19B_PWML2 (1u << 19) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB27B_PWML2 (1u << 27) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC8B_PWML2 (1u << 8) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC31A_PWML2 (1u << 31) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA10B_PWML3 (1u << 10) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB20B_PWML3 (1u << 20) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB28B_PWML3 (1u << 28) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC9B_PWML3 (1u << 9) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC16B_PWML3 (1u << 16) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA13A_MISO (1u << 13) /**< \brief Spi signal: MISO */ +#define PIO_PA14A_MOSI (1u << 14) /**< \brief Spi signal: MOSI */ +#define PIO_PA16A_NPCS0 (1u << 16) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA0B_NPCS1 (1u << 0) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC3B_NPCS1 (1u << 3) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC19B_NPCS1 (1u << 19) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA1B_NPCS2 (1u << 1) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC4B_NPCS2 (1u << 4) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC14B_NPCS2 (1u << 14) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA19B_NPCS3 (1u << 19) /**< \brief Spi signal: NPCS3 */ +#define PIO_PC5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA15A_SPCK (1u << 15) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA27A_RD (1u << 27) /**< \brief Ssc signal: RD */ +#define PIO_PA31A_RF (1u << 31) /**< \brief Ssc signal: RF */ +#define PIO_PA29A_RK (1u << 29) /**< \brief Ssc signal: RK */ +#define PIO_PA26A_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PA30A_TF (1u << 30) /**< \brief Ssc signal: TF */ +#define PIO_PA28A_TK (1u << 28) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA2A_TCLK0 (1u << 2) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PB4A_TCLK1 (1u << 4) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA26B_TCLK2 (1u << 26) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA1A_TIOA0 (1u << 1) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PB5A_TIOA1 (1u << 5) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA30B_TIOA2 (1u << 30) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA0A_TIOB0 (1u << 0) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PB6A_TIOB1 (1u << 6) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA31B_TIOB2 (1u << 31) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA10A_TWCK0 (1u << 10) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA9A_TWD0 (1u << 9) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PA25A_TWCK1 (1u << 25) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PA24A_TWD1 (1u << 24) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART peripheral ========== */ +#define PIO_PA11A_URXD (1u << 11) /**< \brief Uart signal: URXD */ +#define PIO_PA12A_UTXD (1u << 12) /**< \brief Uart signal: UTXD */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PB11B_DCD0 (1u << 11) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PB10B_DSR0 (1u << 10) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PB9B_DTR0 (1u << 9) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PB12B_RI0 (1u << 12) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA19A_RXD0 (1u << 19) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA17A_SCK0 (1u << 17) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA18A_TXD0 (1u << 18) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA23B_CTS1 (1u << 23) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA22B_RTS1 (1u << 22) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA24B_SCK1 (1u << 24) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA20A_TXD1 (1u << 20) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PB22B_CTS2 (1u << 22) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PB21B_RTS2 (1u << 21) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PA23A_RXD2 (1u << 23) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PA25B_SCK2 (1u << 25) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PA22A_TXD2 (1u << 22) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PB15_IDX 47 +#define PIO_PB16_IDX 48 +#define PIO_PB17_IDX 49 +#define PIO_PB18_IDX 50 +#define PIO_PB19_IDX 51 +#define PIO_PB20_IDX 52 +#define PIO_PB21_IDX 53 +#define PIO_PB22_IDX 54 +#define PIO_PB23_IDX 55 +#define PIO_PB24_IDX 56 + +#endif /* _SAM3U4C_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/pio/pio_sam3u4e.h b/hardware/sam/system/libsam/cmsis/sam3u/include/pio/pio_sam3u4e.h new file mode 100644 index 000000000..8c8fd7a41 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/pio/pio_sam3u4e.h @@ -0,0 +1,440 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U4E_PIO_ +#define _SAM3U4E_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PB15 (1u << 15) /**< \brief Pin Controlled by PB15 */ +#define PIO_PB16 (1u << 16) /**< \brief Pin Controlled by PB16 */ +#define PIO_PB17 (1u << 17) /**< \brief Pin Controlled by PB17 */ +#define PIO_PB18 (1u << 18) /**< \brief Pin Controlled by PB18 */ +#define PIO_PB19 (1u << 19) /**< \brief Pin Controlled by PB19 */ +#define PIO_PB20 (1u << 20) /**< \brief Pin Controlled by PB20 */ +#define PIO_PB21 (1u << 21) /**< \brief Pin Controlled by PB21 */ +#define PIO_PB22 (1u << 22) /**< \brief Pin Controlled by PB22 */ +#define PIO_PB23 (1u << 23) /**< \brief Pin Controlled by PB23 */ +#define PIO_PB24 (1u << 24) /**< \brief Pin Controlled by PB24 */ +#define PIO_PB25 (1u << 25) /**< \brief Pin Controlled by PB25 */ +#define PIO_PB26 (1u << 26) /**< \brief Pin Controlled by PB26 */ +#define PIO_PB27 (1u << 27) /**< \brief Pin Controlled by PB27 */ +#define PIO_PB28 (1u << 28) /**< \brief Pin Controlled by PB28 */ +#define PIO_PB29 (1u << 29) /**< \brief Pin Controlled by PB29 */ +#define PIO_PB30 (1u << 30) /**< \brief Pin Controlled by PB30 */ +#define PIO_PB31 (1u << 31) /**< \brief Pin Controlled by PB31 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PB5X1_AD0 (1u << 5) /**< \brief Adc signal: AD0 */ +#define PIO_PB6X1_AD1 (1u << 6) /**< \brief Adc signal: AD1 */ +#define PIO_PB7X1_AD2 (1u << 7) /**< \brief Adc signal: AD2 */ +#define PIO_PB8X1_AD3 (1u << 8) /**< \brief Adc signal: AD3 */ +#define PIO_PC28X1_AD4 (1u << 28) /**< \brief Adc signal: AD4 */ +#define PIO_PC29X1_AD5 (1u << 29) /**< \brief Adc signal: AD5 */ +#define PIO_PC30X1_AD6 (1u << 30) /**< \brief Adc signal: AD6 */ +#define PIO_PC31X1_AD7 (1u << 31) /**< \brief Adc signal: AD7 */ +#define PIO_PA17B_ADTRG (1u << 17) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for ADC12B peripheral ========== */ +#define PIO_PA22X1_AD12B0 (1u << 22) /**< \brief Adc12b signal: AD12B0 */ +#define PIO_PA30X1_AD12B1 (1u << 30) /**< \brief Adc12b signal: AD12B1 */ +#define PIO_PB3X1_AD12B2 (1u << 3) /**< \brief Adc12b signal: AD12B2 */ +#define PIO_PB4X1_AD12B3 (1u << 4) /**< \brief Adc12b signal: AD12B3 */ +#define PIO_PC15X1_AD12B4 (1u << 15) /**< \brief Adc12b signal: AD12B4 */ +#define PIO_PC16X1_AD12B5 (1u << 16) /**< \brief Adc12b signal: AD12B5 */ +#define PIO_PC17X1_AD12B6 (1u << 17) /**< \brief Adc12b signal: AD12B6 */ +#define PIO_PC18X1_AD12B7 (1u << 18) /**< \brief Adc12b signal: AD12B7 */ +#define PIO_PA2B_AD12BTRG (1u << 2) /**< \brief Adc12b signal: AD12BTRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PB7B_A0 (1u << 7) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PB7B_NBS0 (1u << 7) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PB8B_A1 (1u << 8) /**< \brief Ebi signal: A1 */ +#define PIO_PC8A_A10 (1u << 8) /**< \brief Ebi signal: A10 */ +#define PIO_PC9A_A11 (1u << 9) /**< \brief Ebi signal: A11 */ +#define PIO_PC10A_A12 (1u << 10) /**< \brief Ebi signal: A12 */ +#define PIO_PC11A_A13 (1u << 11) /**< \brief Ebi signal: A13 */ +#define PIO_PC20A_A14 (1u << 20) /**< \brief Ebi signal: A14 */ +#define PIO_PC21A_A15 (1u << 21) /**< \brief Ebi signal: A15 */ +#define PIO_PC22A_A16 (1u << 22) /**< \brief Ebi signal: A16 */ +#define PIO_PC23A_A17 (1u << 23) /**< \brief Ebi signal: A17 */ +#define PIO_PC24A_A18 (1u << 24) /**< \brief Ebi signal: A18 */ +#define PIO_PC25A_A19 (1u << 25) /**< \brief Ebi signal: A19 */ +#define PIO_PB0B_A2 (1u << 0) /**< \brief Ebi signal: A2 */ +#define PIO_PC0A_A2 (1u << 0) /**< \brief Ebi signal: A2 */ +#define PIO_PC13A_A2 (1u << 13) /**< \brief Ebi signal: A2 */ +#define PIO_PC26A_A20 (1u << 26) /**< \brief Ebi signal: A20 */ +#define PIO_PB21A_A21 (1u << 21) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PB21A_NANDALE (1u << 21) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PB22A_A22 (1u << 22) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PB22A_NANDCLE (1u << 22) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PC27A_A23 (1u << 27) /**< \brief Ebi signal: A23 */ +#define PIO_PB1B_A3 (1u << 1) /**< \brief Ebi signal: A3 */ +#define PIO_PC1A_A3 (1u << 1) /**< \brief Ebi signal: A3 */ +#define PIO_PC14A_A3 (1u << 14) /**< \brief Ebi signal: A3 */ +#define PIO_PB2B_A4 (1u << 2) /**< \brief Ebi signal: A4 */ +#define PIO_PC2A_A4 (1u << 2) /**< \brief Ebi signal: A4 */ +#define PIO_PB3B_A5 (1u << 3) /**< \brief Ebi signal: A5 */ +#define PIO_PC3A_A5 (1u << 3) /**< \brief Ebi signal: A5 */ +#define PIO_PB4B_A6 (1u << 4) /**< \brief Ebi signal: A6 */ +#define PIO_PC4A_A6 (1u << 4) /**< \brief Ebi signal: A6 */ +#define PIO_PB5B_A7 (1u << 5) /**< \brief Ebi signal: A7 */ +#define PIO_PC5A_A7 (1u << 5) /**< \brief Ebi signal: A7 */ +#define PIO_PC6A_A8 (1u << 6) /**< \brief Ebi signal: A8 */ +#define PIO_PC7A_A9 (1u << 7) /**< \brief Ebi signal: A9 */ +#define PIO_PB9A_D0 (1u << 9) /**< \brief Ebi signal: D0 */ +#define PIO_PB10A_D1 (1u << 10) /**< \brief Ebi signal: D1 */ +#define PIO_PB27A_D10 (1u << 27) /**< \brief Ebi signal: D10 */ +#define PIO_PB28A_D11 (1u << 28) /**< \brief Ebi signal: D11 */ +#define PIO_PB29A_D12 (1u << 29) /**< \brief Ebi signal: D12 */ +#define PIO_PB30A_D13 (1u << 30) /**< \brief Ebi signal: D13 */ +#define PIO_PB31A_D14 (1u << 31) /**< \brief Ebi signal: D14 */ +#define PIO_PB6B_D15 (1u << 6) /**< \brief Ebi signal: D15 */ +#define PIO_PB11A_D2 (1u << 11) /**< \brief Ebi signal: D2 */ +#define PIO_PB12A_D3 (1u << 12) /**< \brief Ebi signal: D3 */ +#define PIO_PB13A_D4 (1u << 13) /**< \brief Ebi signal: D4 */ +#define PIO_PB14A_D5 (1u << 14) /**< \brief Ebi signal: D5 */ +#define PIO_PB15A_D6 (1u << 15) /**< \brief Ebi signal: D6 */ +#define PIO_PB16A_D7 (1u << 16) /**< \brief Ebi signal: D7 */ +#define PIO_PB25A_D8 (1u << 25) /**< \brief Ebi signal: D8 */ +#define PIO_PB26A_D9 (1u << 26) /**< \brief Ebi signal: D9 */ +#define PIO_PB17A_NANDOE (1u << 17) /**< \brief Ebi signal: NANDOE */ +#define PIO_PB24A_NANDRDY (1u << 24) /**< \brief Ebi signal: NANDRDY */ +#define PIO_PB18A_NANDWE (1u << 18) /**< \brief Ebi signal: NANDWE */ +#define PIO_PB20A_NCS0 (1u << 20) /**< \brief Ebi signal: NCS0 */ +#define PIO_PA16B_NCS1 (1u << 16) /**< \brief Ebi signal: NCS1 */ +#define PIO_PC12A_NCS1 (1u << 12) /**< \brief Ebi signal: NCS1 */ +#define PIO_PC16A_NCS2 (1u << 16) /**< \brief Ebi signal: NCS2 */ +#define PIO_PC17A_NCS3 (1u << 17) /**< \brief Ebi signal: NCS3 */ +#define PIO_PB19A_NRD (1u << 19) /**< \brief Ebi signal: NRD */ +#define PIO_PC18A_NWAIT (1u << 18) /**< \brief Ebi signal: NWAIT */ +#define PIO_PB23A_NWR0 (1u << 23) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PB23A_NWE (1u << 23) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PC15A_NWR1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PC15A_NBS1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA4A_MCCDA (1u << 4) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA3A_MCCK (1u << 3) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA5A_MCDA0 (1u << 5) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA6A_MCDA1 (1u << 6) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA7A_MCDA2 (1u << 7) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA8A_MCDA3 (1u << 8) /**< \brief Hsmci signal: MCDA3 */ +#define PIO_PC28B_MCDA4 (1u << 28) /**< \brief Hsmci signal: MCDA4 */ +#define PIO_PC29B_MCDA5 (1u << 29) /**< \brief Hsmci signal: MCDA5 */ +#define PIO_PC30B_MCDA6 (1u << 30) /**< \brief Hsmci signal: MCDA6 */ +#define PIO_PC31B_MCDA7 (1u << 31) /**< \brief Hsmci signal: MCDA7 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA21B_PCK0 (1u << 21) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA27B_PCK0 (1u << 27) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA3B_PCK1 (1u << 3) /**< \brief Pmc signal: PCK1 */ +#define PIO_PB24B_PCK1 (1u << 24) /**< \brief Pmc signal: PCK1 */ +#define PIO_PB23B_PCK2 (1u << 23) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA11B_PWMFI0 (1u << 11) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA12B_PWMFI1 (1u << 12) /**< \brief Pwm signal: PWMFI1 */ +#define PIO_PA18B_PWMFI2 (1u << 18) /**< \brief Pwm signal: PWMFI2 */ +#define PIO_PA4B_PWMH0 (1u << 4) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA28B_PWMH0 (1u << 28) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB0A_PWMH0 (1u << 0) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB13B_PWMH0 (1u << 13) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC24B_PWMH0 (1u << 24) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA5B_PWMH1 (1u << 5) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA29B_PWMH1 (1u << 29) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB1A_PWMH1 (1u << 1) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB14B_PWMH1 (1u << 14) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC25B_PWMH1 (1u << 25) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA6B_PWMH2 (1u << 6) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA15B_PWMH2 (1u << 15) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB2A_PWMH2 (1u << 2) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB15B_PWMH2 (1u << 15) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC26B_PWMH2 (1u << 26) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA20B_PWMH3 (1u << 20) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB3A_PWMH3 (1u << 3) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB16B_PWMH3 (1u << 16) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC27B_PWMH3 (1u << 27) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PA7B_PWML0 (1u << 7) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB17B_PWML0 (1u << 17) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB25B_PWML0 (1u << 25) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC6B_PWML0 (1u << 6) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC29A_PWML0 (1u << 29) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA8B_PWML1 (1u << 8) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB18B_PWML1 (1u << 18) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB26B_PWML1 (1u << 26) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC7B_PWML1 (1u << 7) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC30A_PWML1 (1u << 30) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA9B_PWML2 (1u << 9) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB19B_PWML2 (1u << 19) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB27B_PWML2 (1u << 27) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC8B_PWML2 (1u << 8) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC31A_PWML2 (1u << 31) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA10B_PWML3 (1u << 10) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB20B_PWML3 (1u << 20) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB28B_PWML3 (1u << 28) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC9B_PWML3 (1u << 9) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC16B_PWML3 (1u << 16) /**< \brief Pwm signal: PWML3 */ +/* ========== Pio definition for SPI peripheral ========== */ +#define PIO_PA13A_MISO (1u << 13) /**< \brief Spi signal: MISO */ +#define PIO_PA14A_MOSI (1u << 14) /**< \brief Spi signal: MOSI */ +#define PIO_PA16A_NPCS0 (1u << 16) /**< \brief Spi signal: NPCS0 */ +#define PIO_PA0B_NPCS1 (1u << 0) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC3B_NPCS1 (1u << 3) /**< \brief Spi signal: NPCS1 */ +#define PIO_PC19B_NPCS1 (1u << 19) /**< \brief Spi signal: NPCS1 */ +#define PIO_PA1B_NPCS2 (1u << 1) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC4B_NPCS2 (1u << 4) /**< \brief Spi signal: NPCS2 */ +#define PIO_PC14B_NPCS2 (1u << 14) /**< \brief Spi signal: NPCS2 */ +#define PIO_PA19B_NPCS3 (1u << 19) /**< \brief Spi signal: NPCS3 */ +#define PIO_PC5B_NPCS3 (1u << 5) /**< \brief Spi signal: NPCS3 */ +#define PIO_PA15A_SPCK (1u << 15) /**< \brief Spi signal: SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA27A_RD (1u << 27) /**< \brief Ssc signal: RD */ +#define PIO_PA31A_RF (1u << 31) /**< \brief Ssc signal: RF */ +#define PIO_PA29A_RK (1u << 29) /**< \brief Ssc signal: RK */ +#define PIO_PA26A_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PA30A_TF (1u << 30) /**< \brief Ssc signal: TF */ +#define PIO_PA28A_TK (1u << 28) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA2A_TCLK0 (1u << 2) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PB4A_TCLK1 (1u << 4) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA26B_TCLK2 (1u << 26) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA1A_TIOA0 (1u << 1) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PB5A_TIOA1 (1u << 5) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA30B_TIOA2 (1u << 30) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA0A_TIOB0 (1u << 0) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PB6A_TIOB1 (1u << 6) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA31B_TIOB2 (1u << 31) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA10A_TWCK0 (1u << 10) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA9A_TWD0 (1u << 9) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PA25A_TWCK1 (1u << 25) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PA24A_TWD1 (1u << 24) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART peripheral ========== */ +#define PIO_PA11A_URXD (1u << 11) /**< \brief Uart signal: URXD */ +#define PIO_PA12A_UTXD (1u << 12) /**< \brief Uart signal: UTXD */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB8A_CTS0 (1u << 8) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PB11B_DCD0 (1u << 11) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PB10B_DSR0 (1u << 10) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PB9B_DTR0 (1u << 9) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PB12B_RI0 (1u << 12) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB7A_RTS0 (1u << 7) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA19A_RXD0 (1u << 19) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA17A_SCK0 (1u << 17) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA18A_TXD0 (1u << 18) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA23B_CTS1 (1u << 23) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA22B_RTS1 (1u << 22) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA24B_SCK1 (1u << 24) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA20A_TXD1 (1u << 20) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PB22B_CTS2 (1u << 22) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PB21B_RTS2 (1u << 21) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PA23A_RXD2 (1u << 23) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PA25B_SCK2 (1u << 25) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PA22A_TXD2 (1u << 22) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio definition for USART3 peripheral ========== */ +#define PIO_PC10B_CTS3 (1u << 10) /**< \brief Usart3 signal: CTS3 */ +#define PIO_PC11B_RTS3 (1u << 11) /**< \brief Usart3 signal: RTS3 */ +#define PIO_PC13B_RXD3 (1u << 13) /**< \brief Usart3 signal: RXD3 */ +#define PIO_PC19A_SCK3 (1u << 19) /**< \brief Usart3 signal: SCK3 */ +#define PIO_PC12B_TXD3 (1u << 12) /**< \brief Usart3 signal: TXD3 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PB15_IDX 47 +#define PIO_PB16_IDX 48 +#define PIO_PB17_IDX 49 +#define PIO_PB18_IDX 50 +#define PIO_PB19_IDX 51 +#define PIO_PB20_IDX 52 +#define PIO_PB21_IDX 53 +#define PIO_PB22_IDX 54 +#define PIO_PB23_IDX 55 +#define PIO_PB24_IDX 56 +#define PIO_PB25_IDX 57 +#define PIO_PB26_IDX 58 +#define PIO_PB27_IDX 59 +#define PIO_PB28_IDX 60 +#define PIO_PB29_IDX 61 +#define PIO_PB30_IDX 62 +#define PIO_PB31_IDX 63 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 + +#endif /* _SAM3U4E_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u.h b/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u.h new file mode 100644 index 000000000..856c3b1d4 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u.h @@ -0,0 +1,49 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U_ +#define _SAM3U_ + +#if defined __SAM3U1C__ + #include "sam3u1c.h" +#elif defined __SAM3U1E__ + #include "sam3u1e.h" +#elif defined __SAM3U2C__ + #include "sam3u2c.h" +#elif defined __SAM3U2E__ + #include "sam3u2e.h" +#elif defined __SAM3U4C__ + #include "sam3u4c.h" +#elif defined __SAM3U4E__ + #include "sam3u4e.h" +#else + #error Library does not support the specified device. +#endif + +#endif /* _SAM3U_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u1c.h b/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u1c.h new file mode 100644 index 000000000..5dc98fbc8 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u1c.h @@ -0,0 +1,367 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U1C_ +#define _SAM3U1C_ + +/** \addtogroup SAM3U1C_definitions SAM3U1C definitions + This file defines all structures and symbols for SAM3U1C: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3U1C */ +/* ************************************************************************** */ +/** \addtogroup SAM3U1C_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3U1C specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3U1C Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3U1C Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3U1C Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3U1C Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3U1C Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3U1C Power Management Controller (PMC) */ + EFC0_IRQn = 6, /**< 6 SAM3U1C Enhanced Embedded Flash Controller 0 (EFC0) */ + EFC1_IRQn = 7, /**< 7 SAM3U1C Enhanced Embedded Flash Controller 1 (EFC1) */ + UART_IRQn = 8, /**< 8 SAM3U1C Universal Asynchronous Receiver Transmitter (UART) */ + SMC_IRQn = 9, /**< 9 SAM3U1C Static Memory Controller (SMC) */ + PIOA_IRQn = 10, /**< 10 SAM3U1C Parallel I/O Controller A, (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAM3U1C Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 13, /**< 13 SAM3U1C USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAM3U1C USART 1 (USART1) */ + USART2_IRQn = 15, /**< 15 SAM3U1C USART 2 (USART2) */ + HSMCI_IRQn = 17, /**< 17 SAM3U1C High Speed Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 18, /**< 18 SAM3U1C Two-Wire Interface 0 (TWI0) */ + TWI1_IRQn = 19, /**< 19 SAM3U1C Two-Wire Interface 1 (TWI1) */ + SPI_IRQn = 20, /**< 20 SAM3U1C Serial Peripheral Interface (SPI) */ + SSC_IRQn = 21, /**< 21 SAM3U1C Synchronous Serial Controller (SSC) */ + TC0_IRQn = 22, /**< 22 SAM3U1C Timer Counter 0 (TC0) */ + TC1_IRQn = 23, /**< 23 SAM3U1C Timer Counter 1 (TC1) */ + TC2_IRQn = 24, /**< 24 SAM3U1C Timer Counter 2 (TC2) */ + PWM_IRQn = 25, /**< 25 SAM3U1C Pulse Width Modulation Controller (PWM) */ + ADC12B_IRQn = 26, /**< 26 SAM3U1C 12-bit ADC Controller (ADC12B) */ + ADC_IRQn = 27, /**< 27 SAM3U1C 10-bit ADC Controller (ADC) */ + DMAC_IRQn = 28, /**< 28 SAM3U1C DMA Controller (DMAC) */ + UDPHS_IRQn = 29 /**< 29 SAM3U1C USB Device High Speed (UDPHS) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3U1C core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3U1C does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3U1C uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3U1C */ +/* ************************************************************************** */ +/** \addtogroup SAM3U1C_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_adc12b.h" +#include "component/component_chipid.h" +#include "component/component_dmac.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_smc.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udphs.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3U1C */ +/* ************************************************************************** */ +/** \addtogroup SAM3U1C_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_usart2.h" +#include "instance/instance_udphs.h" +#include "instance/instance_adc12b.h" +#include "instance/instance_adc.h" +#include "instance/instance_dmac.h" +#include "instance/instance_smc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart.h" +#include "instance/instance_chipid.h" +#include "instance/instance_efc0.h" +#include "instance/instance_efc1.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3U1C */ +/* ************************************************************************** */ +/** \addtogroup SAM3U1C_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC0 ( 6) /**< \brief Enhanced Embedded Flash Controller 0 (EFC0) */ +#define ID_EFC1 ( 7) /**< \brief Enhanced Embedded Flash Controller 1 (EFC1) */ +#define ID_UART ( 8) /**< \brief Universal Asynchronous Receiver Transmitter (UART) */ +#define ID_SMC ( 9) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A, (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (15) /**< \brief USART 2 (USART2) */ +#define ID_HSMCI (17) /**< \brief High Speed Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (18) /**< \brief Two-Wire Interface 0 (TWI0) */ +#define ID_TWI1 (19) /**< \brief Two-Wire Interface 1 (TWI1) */ +#define ID_SPI (20) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (21) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (22) /**< \brief Timer Counter 0 (TC0) */ +#define ID_TC1 (23) /**< \brief Timer Counter 1 (TC1) */ +#define ID_TC2 (24) /**< \brief Timer Counter 2 (TC2) */ +#define ID_PWM (25) /**< \brief Pulse Width Modulation Controller (PWM) */ +#define ID_ADC12B (26) /**< \brief 12-bit ADC Controller (ADC12B) */ +#define ID_ADC (27) /**< \brief 10-bit ADC Controller (ADC) */ +#define ID_DMAC (28) /**< \brief DMA Controller (DMAC) */ +#define ID_UDPHS (29) /**< \brief USB Device High Speed (UDPHS) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3U1C */ +/* ************************************************************************** */ +/** \addtogroup SAM3U1C_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define TC0 (0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40084000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40084100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x40088000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x40088100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x4008C000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x4008C100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40090000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40090100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40094000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x40094100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 (0x40098000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 (0x40098100U) /**< \brief (PDC_USART2) Base Address */ +#define UDPHS (0x400A4000U) /**< \brief (UDPHS ) Base Address */ +#define ADC12B (0x400A8000U) /**< \brief (ADC12B ) Base Address */ +#define PDC_ADC12B (0x400A8100U) /**< \brief (PDC_ADC12B) Base Address */ +#define ADC (0x400AC000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x400AC100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC (0x400B0000U) /**< \brief (DMAC ) Base Address */ +#define SMC (0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART (0x400E0600U) /**< \brief (UART ) Base Address */ +#define PDC_UART (0x400E0700U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 (0x400E0800U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 (0x400E0A00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA (0x400E0C00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E0E00U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1200U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1210U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1230U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1250U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1260U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1290U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define TC0 ((Tc *)0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40084000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40084100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x40088000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x40088100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x4008C000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x4008C100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40090000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40090100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40094000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x40094100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 ((Usart *)0x40098000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 ((Pdc *)0x40098100U) /**< \brief (PDC_USART2) Base Address */ +#define UDPHS ((Udphs *)0x400A4000U) /**< \brief (UDPHS ) Base Address */ +#define ADC12B ((Adc12b *)0x400A8000U) /**< \brief (ADC12B ) Base Address */ +#define PDC_ADC12B ((Pdc *)0x400A8100U) /**< \brief (PDC_ADC12B) Base Address */ +#define ADC ((Adc *)0x400AC000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x400AC100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC ((Dmac *)0x400B0000U) /**< \brief (DMAC ) Base Address */ +#define SMC ((Smc *)0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART ((Uart *)0x400E0600U) /**< \brief (UART ) Base Address */ +#define PDC_UART ((Pdc *)0x400E0700U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 ((Efc *)0x400E0800U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 ((Efc *)0x400E0A00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA ((Pio *)0x400E0C00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E0E00U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1200U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1210U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1230U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1250U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1260U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1290U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3U1C */ +/* ************************************************************************** */ +/** \addtogroup SAM3U1C_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3u1c.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3U1C */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x10000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (8192u) +#define IFLASH_NB_OF_PAGES (32u) +#define IRAM_SIZE (0x5000u) + +#define IFLASH0_ADDR (0x00080000u) /**< Internal Flash 0 base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IROM_ADDR (0x00180000u) /**< Internal ROM base address */ +#define IRAM0_ADDR (0x20000000u) /**< Internal RAM 0 base address */ +#define IRAM1_ADDR (0x20080000u) /**< Internal RAM 1 base address */ +#define NFC_RAM_ADDR (0x20100000u) /**< NAND Flash Controller RAM base address */ +#define UDPHS_RAM_ADDR (0x20180000u) /**< USB High Speed Device Port RAM base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3U1C */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (96000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3U1C_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u1e.h b/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u1e.h new file mode 100644 index 000000000..94de4a863 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u1e.h @@ -0,0 +1,379 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U1E_ +#define _SAM3U1E_ + +/** \addtogroup SAM3U1E_definitions SAM3U1E definitions + This file defines all structures and symbols for SAM3U1E: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3U1E */ +/* ************************************************************************** */ +/** \addtogroup SAM3U1E_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3U1E specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3U1E Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3U1E Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3U1E Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3U1E Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3U1E Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3U1E Power Management Controller (PMC) */ + EFC0_IRQn = 6, /**< 6 SAM3U1E Enhanced Embedded Flash Controller 0 (EFC0) */ + EFC1_IRQn = 7, /**< 7 SAM3U1E Enhanced Embedded Flash Controller 1 (EFC1) */ + UART_IRQn = 8, /**< 8 SAM3U1E Universal Asynchronous Receiver Transmitter (UART) */ + SMC_IRQn = 9, /**< 9 SAM3U1E Static Memory Controller (SMC) */ + PIOA_IRQn = 10, /**< 10 SAM3U1E Parallel I/O Controller A, (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAM3U1E Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 12, /**< 12 SAM3U1E Parallel I/O Controller C (PIOC) */ + USART0_IRQn = 13, /**< 13 SAM3U1E USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAM3U1E USART 1 (USART1) */ + USART2_IRQn = 15, /**< 15 SAM3U1E USART 2 (USART2) */ + USART3_IRQn = 16, /**< 16 SAM3U1E USART 3 (USART3) */ + HSMCI_IRQn = 17, /**< 17 SAM3U1E High Speed Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 18, /**< 18 SAM3U1E Two-Wire Interface 0 (TWI0) */ + TWI1_IRQn = 19, /**< 19 SAM3U1E Two-Wire Interface 1 (TWI1) */ + SPI_IRQn = 20, /**< 20 SAM3U1E Serial Peripheral Interface (SPI) */ + SSC_IRQn = 21, /**< 21 SAM3U1E Synchronous Serial Controller (SSC) */ + TC0_IRQn = 22, /**< 22 SAM3U1E Timer Counter 0 (TC0) */ + TC1_IRQn = 23, /**< 23 SAM3U1E Timer Counter 1 (TC1) */ + TC2_IRQn = 24, /**< 24 SAM3U1E Timer Counter 2 (TC2) */ + PWM_IRQn = 25, /**< 25 SAM3U1E Pulse Width Modulation Controller (PWM) */ + ADC12B_IRQn = 26, /**< 26 SAM3U1E 12-bit ADC Controller (ADC12B) */ + ADC_IRQn = 27, /**< 27 SAM3U1E 10-bit ADC Controller (ADC) */ + DMAC_IRQn = 28, /**< 28 SAM3U1E DMA Controller (DMAC) */ + UDPHS_IRQn = 29 /**< 29 SAM3U1E USB Device High Speed (UDPHS) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3U1E core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3U1E does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3U1E uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3U1E */ +/* ************************************************************************** */ +/** \addtogroup SAM3U1E_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_adc12b.h" +#include "component/component_chipid.h" +#include "component/component_dmac.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_smc.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udphs.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3U1E */ +/* ************************************************************************** */ +/** \addtogroup SAM3U1E_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_usart2.h" +#include "instance/instance_usart3.h" +#include "instance/instance_udphs.h" +#include "instance/instance_adc12b.h" +#include "instance/instance_adc.h" +#include "instance/instance_dmac.h" +#include "instance/instance_smc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart.h" +#include "instance/instance_chipid.h" +#include "instance/instance_efc0.h" +#include "instance/instance_efc1.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_pioc.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3U1E */ +/* ************************************************************************** */ +/** \addtogroup SAM3U1E_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC0 ( 6) /**< \brief Enhanced Embedded Flash Controller 0 (EFC0) */ +#define ID_EFC1 ( 7) /**< \brief Enhanced Embedded Flash Controller 1 (EFC1) */ +#define ID_UART ( 8) /**< \brief Universal Asynchronous Receiver Transmitter (UART) */ +#define ID_SMC ( 9) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A, (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (12) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (15) /**< \brief USART 2 (USART2) */ +#define ID_USART3 (16) /**< \brief USART 3 (USART3) */ +#define ID_HSMCI (17) /**< \brief High Speed Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (18) /**< \brief Two-Wire Interface 0 (TWI0) */ +#define ID_TWI1 (19) /**< \brief Two-Wire Interface 1 (TWI1) */ +#define ID_SPI (20) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (21) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (22) /**< \brief Timer Counter 0 (TC0) */ +#define ID_TC1 (23) /**< \brief Timer Counter 1 (TC1) */ +#define ID_TC2 (24) /**< \brief Timer Counter 2 (TC2) */ +#define ID_PWM (25) /**< \brief Pulse Width Modulation Controller (PWM) */ +#define ID_ADC12B (26) /**< \brief 12-bit ADC Controller (ADC12B) */ +#define ID_ADC (27) /**< \brief 10-bit ADC Controller (ADC) */ +#define ID_DMAC (28) /**< \brief DMA Controller (DMAC) */ +#define ID_UDPHS (29) /**< \brief USB Device High Speed (UDPHS) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3U1E */ +/* ************************************************************************** */ +/** \addtogroup SAM3U1E_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define TC0 (0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40084000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40084100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x40088000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x40088100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x4008C000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x4008C100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40090000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40090100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40094000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x40094100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 (0x40098000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 (0x40098100U) /**< \brief (PDC_USART2) Base Address */ +#define USART3 (0x4009C000U) /**< \brief (USART3 ) Base Address */ +#define PDC_USART3 (0x4009C100U) /**< \brief (PDC_USART3) Base Address */ +#define UDPHS (0x400A4000U) /**< \brief (UDPHS ) Base Address */ +#define ADC12B (0x400A8000U) /**< \brief (ADC12B ) Base Address */ +#define PDC_ADC12B (0x400A8100U) /**< \brief (PDC_ADC12B) Base Address */ +#define ADC (0x400AC000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x400AC100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC (0x400B0000U) /**< \brief (DMAC ) Base Address */ +#define SMC (0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART (0x400E0600U) /**< \brief (UART ) Base Address */ +#define PDC_UART (0x400E0700U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 (0x400E0800U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 (0x400E0A00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA (0x400E0C00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E0E00U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1000U) /**< \brief (PIOC ) Base Address */ +#define RSTC (0x400E1200U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1210U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1230U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1250U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1260U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1290U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define TC0 ((Tc *)0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40084000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40084100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x40088000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x40088100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x4008C000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x4008C100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40090000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40090100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40094000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x40094100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 ((Usart *)0x40098000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 ((Pdc *)0x40098100U) /**< \brief (PDC_USART2) Base Address */ +#define USART3 ((Usart *)0x4009C000U) /**< \brief (USART3 ) Base Address */ +#define PDC_USART3 ((Pdc *)0x4009C100U) /**< \brief (PDC_USART3) Base Address */ +#define UDPHS ((Udphs *)0x400A4000U) /**< \brief (UDPHS ) Base Address */ +#define ADC12B ((Adc12b *)0x400A8000U) /**< \brief (ADC12B ) Base Address */ +#define PDC_ADC12B ((Pdc *)0x400A8100U) /**< \brief (PDC_ADC12B) Base Address */ +#define ADC ((Adc *)0x400AC000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x400AC100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC ((Dmac *)0x400B0000U) /**< \brief (DMAC ) Base Address */ +#define SMC ((Smc *)0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART ((Uart *)0x400E0600U) /**< \brief (UART ) Base Address */ +#define PDC_UART ((Pdc *)0x400E0700U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 ((Efc *)0x400E0800U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 ((Efc *)0x400E0A00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA ((Pio *)0x400E0C00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E0E00U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1000U) /**< \brief (PIOC ) Base Address */ +#define RSTC ((Rstc *)0x400E1200U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1210U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1230U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1250U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1260U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1290U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3U1E */ +/* ************************************************************************** */ +/** \addtogroup SAM3U1E_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3u1e.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3U1E */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x10000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (8192u) +#define IFLASH_NB_OF_PAGES (32u) +#define IRAM_SIZE (0x5000u) + +#define IFLASH0_ADDR (0x00080000u) /**< Internal Flash 0 base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IROM_ADDR (0x00180000u) /**< Internal ROM base address */ +#define IRAM0_ADDR (0x20000000u) /**< Internal RAM 0 base address */ +#define IRAM1_ADDR (0x20080000u) /**< Internal RAM 1 base address */ +#define NFC_RAM_ADDR (0x20100000u) /**< NAND Flash Controller RAM base address */ +#define UDPHS_RAM_ADDR (0x20180000u) /**< USB High Speed Device Port RAM base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3U1E */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (96000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3U1E_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u2c.h b/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u2c.h new file mode 100644 index 000000000..53f0331e4 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u2c.h @@ -0,0 +1,367 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U2C_ +#define _SAM3U2C_ + +/** \addtogroup SAM3U2C_definitions SAM3U2C definitions + This file defines all structures and symbols for SAM3U2C: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3U2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3U2C_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3U2C specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3U2C Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3U2C Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3U2C Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3U2C Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3U2C Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3U2C Power Management Controller (PMC) */ + EFC0_IRQn = 6, /**< 6 SAM3U2C Enhanced Embedded Flash Controller 0 (EFC0) */ + EFC1_IRQn = 7, /**< 7 SAM3U2C Enhanced Embedded Flash Controller 1 (EFC1) */ + UART_IRQn = 8, /**< 8 SAM3U2C Universal Asynchronous Receiver Transmitter (UART) */ + SMC_IRQn = 9, /**< 9 SAM3U2C Static Memory Controller (SMC) */ + PIOA_IRQn = 10, /**< 10 SAM3U2C Parallel I/O Controller A, (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAM3U2C Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 13, /**< 13 SAM3U2C USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAM3U2C USART 1 (USART1) */ + USART2_IRQn = 15, /**< 15 SAM3U2C USART 2 (USART2) */ + HSMCI_IRQn = 17, /**< 17 SAM3U2C High Speed Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 18, /**< 18 SAM3U2C Two-Wire Interface 0 (TWI0) */ + TWI1_IRQn = 19, /**< 19 SAM3U2C Two-Wire Interface 1 (TWI1) */ + SPI_IRQn = 20, /**< 20 SAM3U2C Serial Peripheral Interface (SPI) */ + SSC_IRQn = 21, /**< 21 SAM3U2C Synchronous Serial Controller (SSC) */ + TC0_IRQn = 22, /**< 22 SAM3U2C Timer Counter 0 (TC0) */ + TC1_IRQn = 23, /**< 23 SAM3U2C Timer Counter 1 (TC1) */ + TC2_IRQn = 24, /**< 24 SAM3U2C Timer Counter 2 (TC2) */ + PWM_IRQn = 25, /**< 25 SAM3U2C Pulse Width Modulation Controller (PWM) */ + ADC12B_IRQn = 26, /**< 26 SAM3U2C 12-bit ADC Controller (ADC12B) */ + ADC_IRQn = 27, /**< 27 SAM3U2C 10-bit ADC Controller (ADC) */ + DMAC_IRQn = 28, /**< 28 SAM3U2C DMA Controller (DMAC) */ + UDPHS_IRQn = 29 /**< 29 SAM3U2C USB Device High Speed (UDPHS) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3U2C core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3U2C does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3U2C uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3U2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3U2C_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_adc12b.h" +#include "component/component_chipid.h" +#include "component/component_dmac.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_smc.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udphs.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3U2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3U2C_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_usart2.h" +#include "instance/instance_udphs.h" +#include "instance/instance_adc12b.h" +#include "instance/instance_adc.h" +#include "instance/instance_dmac.h" +#include "instance/instance_smc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart.h" +#include "instance/instance_chipid.h" +#include "instance/instance_efc0.h" +#include "instance/instance_efc1.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3U2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3U2C_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC0 ( 6) /**< \brief Enhanced Embedded Flash Controller 0 (EFC0) */ +#define ID_EFC1 ( 7) /**< \brief Enhanced Embedded Flash Controller 1 (EFC1) */ +#define ID_UART ( 8) /**< \brief Universal Asynchronous Receiver Transmitter (UART) */ +#define ID_SMC ( 9) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A, (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (15) /**< \brief USART 2 (USART2) */ +#define ID_HSMCI (17) /**< \brief High Speed Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (18) /**< \brief Two-Wire Interface 0 (TWI0) */ +#define ID_TWI1 (19) /**< \brief Two-Wire Interface 1 (TWI1) */ +#define ID_SPI (20) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (21) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (22) /**< \brief Timer Counter 0 (TC0) */ +#define ID_TC1 (23) /**< \brief Timer Counter 1 (TC1) */ +#define ID_TC2 (24) /**< \brief Timer Counter 2 (TC2) */ +#define ID_PWM (25) /**< \brief Pulse Width Modulation Controller (PWM) */ +#define ID_ADC12B (26) /**< \brief 12-bit ADC Controller (ADC12B) */ +#define ID_ADC (27) /**< \brief 10-bit ADC Controller (ADC) */ +#define ID_DMAC (28) /**< \brief DMA Controller (DMAC) */ +#define ID_UDPHS (29) /**< \brief USB Device High Speed (UDPHS) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3U2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3U2C_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define TC0 (0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40084000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40084100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x40088000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x40088100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x4008C000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x4008C100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40090000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40090100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40094000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x40094100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 (0x40098000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 (0x40098100U) /**< \brief (PDC_USART2) Base Address */ +#define UDPHS (0x400A4000U) /**< \brief (UDPHS ) Base Address */ +#define ADC12B (0x400A8000U) /**< \brief (ADC12B ) Base Address */ +#define PDC_ADC12B (0x400A8100U) /**< \brief (PDC_ADC12B) Base Address */ +#define ADC (0x400AC000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x400AC100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC (0x400B0000U) /**< \brief (DMAC ) Base Address */ +#define SMC (0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART (0x400E0600U) /**< \brief (UART ) Base Address */ +#define PDC_UART (0x400E0700U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 (0x400E0800U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 (0x400E0A00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA (0x400E0C00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E0E00U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1200U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1210U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1230U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1250U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1260U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1290U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define TC0 ((Tc *)0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40084000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40084100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x40088000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x40088100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x4008C000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x4008C100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40090000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40090100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40094000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x40094100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 ((Usart *)0x40098000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 ((Pdc *)0x40098100U) /**< \brief (PDC_USART2) Base Address */ +#define UDPHS ((Udphs *)0x400A4000U) /**< \brief (UDPHS ) Base Address */ +#define ADC12B ((Adc12b *)0x400A8000U) /**< \brief (ADC12B ) Base Address */ +#define PDC_ADC12B ((Pdc *)0x400A8100U) /**< \brief (PDC_ADC12B) Base Address */ +#define ADC ((Adc *)0x400AC000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x400AC100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC ((Dmac *)0x400B0000U) /**< \brief (DMAC ) Base Address */ +#define SMC ((Smc *)0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART ((Uart *)0x400E0600U) /**< \brief (UART ) Base Address */ +#define PDC_UART ((Pdc *)0x400E0700U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 ((Efc *)0x400E0800U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 ((Efc *)0x400E0A00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA ((Pio *)0x400E0C00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E0E00U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1200U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1210U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1230U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1250U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1260U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1290U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3U2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3U2C_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3u2c.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3U2C */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x20000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (8192u) +#define IFLASH_NB_OF_PAGES (64u) +#define IRAM_SIZE (0x9000u) + +#define IFLASH0_ADDR (0x00080000u) /**< Internal Flash 0 base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IROM_ADDR (0x00180000u) /**< Internal ROM base address */ +#define IRAM0_ADDR (0x20000000u) /**< Internal RAM 0 base address */ +#define IRAM1_ADDR (0x20080000u) /**< Internal RAM 1 base address */ +#define NFC_RAM_ADDR (0x20100000u) /**< NAND Flash Controller RAM base address */ +#define UDPHS_RAM_ADDR (0x20180000u) /**< USB High Speed Device Port RAM base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3U2C */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (96000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3U2C_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u2e.h b/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u2e.h new file mode 100644 index 000000000..bda7dae88 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u2e.h @@ -0,0 +1,379 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U2E_ +#define _SAM3U2E_ + +/** \addtogroup SAM3U2E_definitions SAM3U2E definitions + This file defines all structures and symbols for SAM3U2E: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3U2E */ +/* ************************************************************************** */ +/** \addtogroup SAM3U2E_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3U2E specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3U2E Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3U2E Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3U2E Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3U2E Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3U2E Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3U2E Power Management Controller (PMC) */ + EFC0_IRQn = 6, /**< 6 SAM3U2E Enhanced Embedded Flash Controller 0 (EFC0) */ + EFC1_IRQn = 7, /**< 7 SAM3U2E Enhanced Embedded Flash Controller 1 (EFC1) */ + UART_IRQn = 8, /**< 8 SAM3U2E Universal Asynchronous Receiver Transmitter (UART) */ + SMC_IRQn = 9, /**< 9 SAM3U2E Static Memory Controller (SMC) */ + PIOA_IRQn = 10, /**< 10 SAM3U2E Parallel I/O Controller A, (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAM3U2E Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 12, /**< 12 SAM3U2E Parallel I/O Controller C (PIOC) */ + USART0_IRQn = 13, /**< 13 SAM3U2E USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAM3U2E USART 1 (USART1) */ + USART2_IRQn = 15, /**< 15 SAM3U2E USART 2 (USART2) */ + USART3_IRQn = 16, /**< 16 SAM3U2E USART 3 (USART3) */ + HSMCI_IRQn = 17, /**< 17 SAM3U2E High Speed Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 18, /**< 18 SAM3U2E Two-Wire Interface 0 (TWI0) */ + TWI1_IRQn = 19, /**< 19 SAM3U2E Two-Wire Interface 1 (TWI1) */ + SPI_IRQn = 20, /**< 20 SAM3U2E Serial Peripheral Interface (SPI) */ + SSC_IRQn = 21, /**< 21 SAM3U2E Synchronous Serial Controller (SSC) */ + TC0_IRQn = 22, /**< 22 SAM3U2E Timer Counter 0 (TC0) */ + TC1_IRQn = 23, /**< 23 SAM3U2E Timer Counter 1 (TC1) */ + TC2_IRQn = 24, /**< 24 SAM3U2E Timer Counter 2 (TC2) */ + PWM_IRQn = 25, /**< 25 SAM3U2E Pulse Width Modulation Controller (PWM) */ + ADC12B_IRQn = 26, /**< 26 SAM3U2E 12-bit ADC Controller (ADC12B) */ + ADC_IRQn = 27, /**< 27 SAM3U2E 10-bit ADC Controller (ADC) */ + DMAC_IRQn = 28, /**< 28 SAM3U2E DMA Controller (DMAC) */ + UDPHS_IRQn = 29 /**< 29 SAM3U2E USB Device High Speed (UDPHS) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3U2E core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3U2E does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3U2E uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3U2E */ +/* ************************************************************************** */ +/** \addtogroup SAM3U2E_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_adc12b.h" +#include "component/component_chipid.h" +#include "component/component_dmac.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_smc.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udphs.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3U2E */ +/* ************************************************************************** */ +/** \addtogroup SAM3U2E_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_usart2.h" +#include "instance/instance_usart3.h" +#include "instance/instance_udphs.h" +#include "instance/instance_adc12b.h" +#include "instance/instance_adc.h" +#include "instance/instance_dmac.h" +#include "instance/instance_smc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart.h" +#include "instance/instance_chipid.h" +#include "instance/instance_efc0.h" +#include "instance/instance_efc1.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_pioc.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3U2E */ +/* ************************************************************************** */ +/** \addtogroup SAM3U2E_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC0 ( 6) /**< \brief Enhanced Embedded Flash Controller 0 (EFC0) */ +#define ID_EFC1 ( 7) /**< \brief Enhanced Embedded Flash Controller 1 (EFC1) */ +#define ID_UART ( 8) /**< \brief Universal Asynchronous Receiver Transmitter (UART) */ +#define ID_SMC ( 9) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A, (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (12) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (15) /**< \brief USART 2 (USART2) */ +#define ID_USART3 (16) /**< \brief USART 3 (USART3) */ +#define ID_HSMCI (17) /**< \brief High Speed Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (18) /**< \brief Two-Wire Interface 0 (TWI0) */ +#define ID_TWI1 (19) /**< \brief Two-Wire Interface 1 (TWI1) */ +#define ID_SPI (20) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (21) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (22) /**< \brief Timer Counter 0 (TC0) */ +#define ID_TC1 (23) /**< \brief Timer Counter 1 (TC1) */ +#define ID_TC2 (24) /**< \brief Timer Counter 2 (TC2) */ +#define ID_PWM (25) /**< \brief Pulse Width Modulation Controller (PWM) */ +#define ID_ADC12B (26) /**< \brief 12-bit ADC Controller (ADC12B) */ +#define ID_ADC (27) /**< \brief 10-bit ADC Controller (ADC) */ +#define ID_DMAC (28) /**< \brief DMA Controller (DMAC) */ +#define ID_UDPHS (29) /**< \brief USB Device High Speed (UDPHS) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3U2E */ +/* ************************************************************************** */ +/** \addtogroup SAM3U2E_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define TC0 (0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40084000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40084100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x40088000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x40088100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x4008C000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x4008C100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40090000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40090100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40094000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x40094100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 (0x40098000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 (0x40098100U) /**< \brief (PDC_USART2) Base Address */ +#define USART3 (0x4009C000U) /**< \brief (USART3 ) Base Address */ +#define PDC_USART3 (0x4009C100U) /**< \brief (PDC_USART3) Base Address */ +#define UDPHS (0x400A4000U) /**< \brief (UDPHS ) Base Address */ +#define ADC12B (0x400A8000U) /**< \brief (ADC12B ) Base Address */ +#define PDC_ADC12B (0x400A8100U) /**< \brief (PDC_ADC12B) Base Address */ +#define ADC (0x400AC000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x400AC100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC (0x400B0000U) /**< \brief (DMAC ) Base Address */ +#define SMC (0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART (0x400E0600U) /**< \brief (UART ) Base Address */ +#define PDC_UART (0x400E0700U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 (0x400E0800U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 (0x400E0A00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA (0x400E0C00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E0E00U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1000U) /**< \brief (PIOC ) Base Address */ +#define RSTC (0x400E1200U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1210U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1230U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1250U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1260U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1290U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define TC0 ((Tc *)0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40084000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40084100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x40088000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x40088100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x4008C000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x4008C100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40090000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40090100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40094000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x40094100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 ((Usart *)0x40098000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 ((Pdc *)0x40098100U) /**< \brief (PDC_USART2) Base Address */ +#define USART3 ((Usart *)0x4009C000U) /**< \brief (USART3 ) Base Address */ +#define PDC_USART3 ((Pdc *)0x4009C100U) /**< \brief (PDC_USART3) Base Address */ +#define UDPHS ((Udphs *)0x400A4000U) /**< \brief (UDPHS ) Base Address */ +#define ADC12B ((Adc12b *)0x400A8000U) /**< \brief (ADC12B ) Base Address */ +#define PDC_ADC12B ((Pdc *)0x400A8100U) /**< \brief (PDC_ADC12B) Base Address */ +#define ADC ((Adc *)0x400AC000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x400AC100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC ((Dmac *)0x400B0000U) /**< \brief (DMAC ) Base Address */ +#define SMC ((Smc *)0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART ((Uart *)0x400E0600U) /**< \brief (UART ) Base Address */ +#define PDC_UART ((Pdc *)0x400E0700U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 ((Efc *)0x400E0800U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 ((Efc *)0x400E0A00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA ((Pio *)0x400E0C00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E0E00U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1000U) /**< \brief (PIOC ) Base Address */ +#define RSTC ((Rstc *)0x400E1200U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1210U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1230U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1250U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1260U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1290U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3U2E */ +/* ************************************************************************** */ +/** \addtogroup SAM3U2E_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3u2e.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3U2E */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x20000u) +#define IFLASH_PAGE_SIZE (256u) +#define IFLASH_LOCK_REGION_SIZE (8192u) +#define IFLASH_NB_OF_PAGES (64u) +#define IRAM_SIZE (0x9000u) + +#define IFLASH0_ADDR (0x00080000u) /**< Internal Flash 0 base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IROM_ADDR (0x00180000u) /**< Internal ROM base address */ +#define IRAM0_ADDR (0x20000000u) /**< Internal RAM 0 base address */ +#define IRAM1_ADDR (0x20080000u) /**< Internal RAM 1 base address */ +#define NFC_RAM_ADDR (0x20100000u) /**< NAND Flash Controller RAM base address */ +#define UDPHS_RAM_ADDR (0x20180000u) /**< USB High Speed Device Port RAM base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3U2E */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (96000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3U2E_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u4c.h b/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u4c.h new file mode 100644 index 000000000..3f28f60a8 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u4c.h @@ -0,0 +1,372 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U4C_ +#define _SAM3U4C_ + +/** \addtogroup SAM3U4C_definitions SAM3U4C definitions + This file defines all structures and symbols for SAM3U4C: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3U4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3U4C_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3U4C specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3U4C Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3U4C Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3U4C Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3U4C Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3U4C Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3U4C Power Management Controller (PMC) */ + EFC0_IRQn = 6, /**< 6 SAM3U4C Enhanced Embedded Flash Controller 0 (EFC0) */ + EFC1_IRQn = 7, /**< 7 SAM3U4C Enhanced Embedded Flash Controller 1 (EFC1) */ + UART_IRQn = 8, /**< 8 SAM3U4C Universal Asynchronous Receiver Transmitter (UART) */ + SMC_IRQn = 9, /**< 9 SAM3U4C Static Memory Controller (SMC) */ + PIOA_IRQn = 10, /**< 10 SAM3U4C Parallel I/O Controller A, (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAM3U4C Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 13, /**< 13 SAM3U4C USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAM3U4C USART 1 (USART1) */ + USART2_IRQn = 15, /**< 15 SAM3U4C USART 2 (USART2) */ + HSMCI_IRQn = 17, /**< 17 SAM3U4C High Speed Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 18, /**< 18 SAM3U4C Two-Wire Interface 0 (TWI0) */ + TWI1_IRQn = 19, /**< 19 SAM3U4C Two-Wire Interface 1 (TWI1) */ + SPI_IRQn = 20, /**< 20 SAM3U4C Serial Peripheral Interface (SPI) */ + SSC_IRQn = 21, /**< 21 SAM3U4C Synchronous Serial Controller (SSC) */ + TC0_IRQn = 22, /**< 22 SAM3U4C Timer Counter 0 (TC0) */ + TC1_IRQn = 23, /**< 23 SAM3U4C Timer Counter 1 (TC1) */ + TC2_IRQn = 24, /**< 24 SAM3U4C Timer Counter 2 (TC2) */ + PWM_IRQn = 25, /**< 25 SAM3U4C Pulse Width Modulation Controller (PWM) */ + ADC12B_IRQn = 26, /**< 26 SAM3U4C 12-bit ADC Controller (ADC12B) */ + ADC_IRQn = 27, /**< 27 SAM3U4C 10-bit ADC Controller (ADC) */ + DMAC_IRQn = 28, /**< 28 SAM3U4C DMA Controller (DMAC) */ + UDPHS_IRQn = 29 /**< 29 SAM3U4C USB Device High Speed (UDPHS) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3U4C core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3U4C does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3U4C uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3U4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3U4C_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_adc12b.h" +#include "component/component_chipid.h" +#include "component/component_dmac.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_smc.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udphs.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3U4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3U4C_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_usart2.h" +#include "instance/instance_udphs.h" +#include "instance/instance_adc12b.h" +#include "instance/instance_adc.h" +#include "instance/instance_dmac.h" +#include "instance/instance_smc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart.h" +#include "instance/instance_chipid.h" +#include "instance/instance_efc0.h" +#include "instance/instance_efc1.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3U4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3U4C_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC0 ( 6) /**< \brief Enhanced Embedded Flash Controller 0 (EFC0) */ +#define ID_EFC1 ( 7) /**< \brief Enhanced Embedded Flash Controller 1 (EFC1) */ +#define ID_UART ( 8) /**< \brief Universal Asynchronous Receiver Transmitter (UART) */ +#define ID_SMC ( 9) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A, (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (15) /**< \brief USART 2 (USART2) */ +#define ID_HSMCI (17) /**< \brief High Speed Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (18) /**< \brief Two-Wire Interface 0 (TWI0) */ +#define ID_TWI1 (19) /**< \brief Two-Wire Interface 1 (TWI1) */ +#define ID_SPI (20) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (21) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (22) /**< \brief Timer Counter 0 (TC0) */ +#define ID_TC1 (23) /**< \brief Timer Counter 1 (TC1) */ +#define ID_TC2 (24) /**< \brief Timer Counter 2 (TC2) */ +#define ID_PWM (25) /**< \brief Pulse Width Modulation Controller (PWM) */ +#define ID_ADC12B (26) /**< \brief 12-bit ADC Controller (ADC12B) */ +#define ID_ADC (27) /**< \brief 10-bit ADC Controller (ADC) */ +#define ID_DMAC (28) /**< \brief DMA Controller (DMAC) */ +#define ID_UDPHS (29) /**< \brief USB Device High Speed (UDPHS) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3U4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3U4C_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define TC0 (0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40084000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40084100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x40088000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x40088100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x4008C000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x4008C100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40090000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40090100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40094000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x40094100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 (0x40098000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 (0x40098100U) /**< \brief (PDC_USART2) Base Address */ +#define UDPHS (0x400A4000U) /**< \brief (UDPHS ) Base Address */ +#define ADC12B (0x400A8000U) /**< \brief (ADC12B ) Base Address */ +#define PDC_ADC12B (0x400A8100U) /**< \brief (PDC_ADC12B) Base Address */ +#define ADC (0x400AC000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x400AC100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC (0x400B0000U) /**< \brief (DMAC ) Base Address */ +#define SMC (0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART (0x400E0600U) /**< \brief (UART ) Base Address */ +#define PDC_UART (0x400E0700U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 (0x400E0800U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 (0x400E0A00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA (0x400E0C00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E0E00U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1200U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1210U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1230U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1250U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1260U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1290U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define TC0 ((Tc *)0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40084000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40084100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x40088000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x40088100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x4008C000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x4008C100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40090000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40090100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40094000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x40094100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 ((Usart *)0x40098000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 ((Pdc *)0x40098100U) /**< \brief (PDC_USART2) Base Address */ +#define UDPHS ((Udphs *)0x400A4000U) /**< \brief (UDPHS ) Base Address */ +#define ADC12B ((Adc12b *)0x400A8000U) /**< \brief (ADC12B ) Base Address */ +#define PDC_ADC12B ((Pdc *)0x400A8100U) /**< \brief (PDC_ADC12B) Base Address */ +#define ADC ((Adc *)0x400AC000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x400AC100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC ((Dmac *)0x400B0000U) /**< \brief (DMAC ) Base Address */ +#define SMC ((Smc *)0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART ((Uart *)0x400E0600U) /**< \brief (UART ) Base Address */ +#define PDC_UART ((Pdc *)0x400E0700U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 ((Efc *)0x400E0800U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 ((Efc *)0x400E0A00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA ((Pio *)0x400E0C00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E0E00U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1200U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1210U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1230U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1250U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1260U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1290U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3U4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3U4C_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3u4c.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3U4C */ +/* ************************************************************************** */ + +#define IFLASH0_SIZE (0x20000u) +#define IFLASH0_PAGE_SIZE (256u) +#define IFLASH0_LOCK_REGION_SIZE (8192u) +#define IFLASH0_NB_OF_PAGES (64u) +#define IFLASH1_SIZE (0x20000u) +#define IFLASH1_PAGE_SIZE (256u) +#define IFLASH1_LOCK_REGION_SIZE (8192u) +#define IFLASH1_NB_OF_PAGES (64u) +#define IRAM_SIZE (0xD000u) +#define IFLASH_SIZE (0x40000u) + +#define IFLASH0_ADDR (0x00080000u) /**< Internal Flash 0 base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IROM_ADDR (0x00180000u) /**< Internal ROM base address */ +#define IRAM0_ADDR (0x20000000u) /**< Internal RAM 0 base address */ +#define IRAM1_ADDR (0x20080000u) /**< Internal RAM 1 base address */ +#define NFC_RAM_ADDR (0x20100000u) /**< NAND Flash Controller RAM base address */ +#define UDPHS_RAM_ADDR (0x20180000u) /**< USB High Speed Device Port RAM base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3U4C */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (96000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3U4C_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u4e.h b/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u4e.h new file mode 100644 index 000000000..2d987d8ed --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/include/sam3u4e.h @@ -0,0 +1,384 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3U4E_ +#define _SAM3U4E_ + +/** \addtogroup SAM3U4E_definitions SAM3U4E definitions + This file defines all structures and symbols for SAM3U4E: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3U4E */ +/* ************************************************************************** */ +/** \addtogroup SAM3U4E_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3U4E specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3U4E Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3U4E Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3U4E Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3U4E Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3U4E Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3U4E Power Management Controller (PMC) */ + EFC0_IRQn = 6, /**< 6 SAM3U4E Enhanced Embedded Flash Controller 0 (EFC0) */ + EFC1_IRQn = 7, /**< 7 SAM3U4E Enhanced Embedded Flash Controller 1 (EFC1) */ + UART_IRQn = 8, /**< 8 SAM3U4E Universal Asynchronous Receiver Transmitter (UART) */ + SMC_IRQn = 9, /**< 9 SAM3U4E Static Memory Controller (SMC) */ + PIOA_IRQn = 10, /**< 10 SAM3U4E Parallel I/O Controller A, (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAM3U4E Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 12, /**< 12 SAM3U4E Parallel I/O Controller C (PIOC) */ + USART0_IRQn = 13, /**< 13 SAM3U4E USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAM3U4E USART 1 (USART1) */ + USART2_IRQn = 15, /**< 15 SAM3U4E USART 2 (USART2) */ + USART3_IRQn = 16, /**< 16 SAM3U4E USART 3 (USART3) */ + HSMCI_IRQn = 17, /**< 17 SAM3U4E High Speed Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 18, /**< 18 SAM3U4E Two-Wire Interface 0 (TWI0) */ + TWI1_IRQn = 19, /**< 19 SAM3U4E Two-Wire Interface 1 (TWI1) */ + SPI_IRQn = 20, /**< 20 SAM3U4E Serial Peripheral Interface (SPI) */ + SSC_IRQn = 21, /**< 21 SAM3U4E Synchronous Serial Controller (SSC) */ + TC0_IRQn = 22, /**< 22 SAM3U4E Timer Counter 0 (TC0) */ + TC1_IRQn = 23, /**< 23 SAM3U4E Timer Counter 1 (TC1) */ + TC2_IRQn = 24, /**< 24 SAM3U4E Timer Counter 2 (TC2) */ + PWM_IRQn = 25, /**< 25 SAM3U4E Pulse Width Modulation Controller (PWM) */ + ADC12B_IRQn = 26, /**< 26 SAM3U4E 12-bit ADC Controller (ADC12B) */ + ADC_IRQn = 27, /**< 27 SAM3U4E 10-bit ADC Controller (ADC) */ + DMAC_IRQn = 28, /**< 28 SAM3U4E DMA Controller (DMAC) */ + UDPHS_IRQn = 29 /**< 29 SAM3U4E USB Device High Speed (UDPHS) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3U4E core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3U4E does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3U4E uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3U4E */ +/* ************************************************************************** */ +/** \addtogroup SAM3U4E_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_adc12b.h" +#include "component/component_chipid.h" +#include "component/component_dmac.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_smc.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_udphs.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3U4E */ +/* ************************************************************************** */ +/** \addtogroup SAM3U4E_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi.h" +#include "instance/instance_tc0.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_usart2.h" +#include "instance/instance_usart3.h" +#include "instance/instance_udphs.h" +#include "instance/instance_adc12b.h" +#include "instance/instance_adc.h" +#include "instance/instance_dmac.h" +#include "instance/instance_smc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart.h" +#include "instance/instance_chipid.h" +#include "instance/instance_efc0.h" +#include "instance/instance_efc1.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_pioc.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3U4E */ +/* ************************************************************************** */ +/** \addtogroup SAM3U4E_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC0 ( 6) /**< \brief Enhanced Embedded Flash Controller 0 (EFC0) */ +#define ID_EFC1 ( 7) /**< \brief Enhanced Embedded Flash Controller 1 (EFC1) */ +#define ID_UART ( 8) /**< \brief Universal Asynchronous Receiver Transmitter (UART) */ +#define ID_SMC ( 9) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A, (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (12) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (15) /**< \brief USART 2 (USART2) */ +#define ID_USART3 (16) /**< \brief USART 3 (USART3) */ +#define ID_HSMCI (17) /**< \brief High Speed Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (18) /**< \brief Two-Wire Interface 0 (TWI0) */ +#define ID_TWI1 (19) /**< \brief Two-Wire Interface 1 (TWI1) */ +#define ID_SPI (20) /**< \brief Serial Peripheral Interface (SPI) */ +#define ID_SSC (21) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (22) /**< \brief Timer Counter 0 (TC0) */ +#define ID_TC1 (23) /**< \brief Timer Counter 1 (TC1) */ +#define ID_TC2 (24) /**< \brief Timer Counter 2 (TC2) */ +#define ID_PWM (25) /**< \brief Pulse Width Modulation Controller (PWM) */ +#define ID_ADC12B (26) /**< \brief 12-bit ADC Controller (ADC12B) */ +#define ID_ADC (27) /**< \brief 10-bit ADC Controller (ADC) */ +#define ID_DMAC (28) /**< \brief DMA Controller (DMAC) */ +#define ID_UDPHS (29) /**< \brief USB Device High Speed (UDPHS) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3U4E */ +/* ************************************************************************** */ +/** \addtogroup SAM3U4E_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI (0x40008000U) /**< \brief (SPI ) Base Address */ +#define TC0 (0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 (0x40084000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x40084100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x40088000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x40088100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x4008C000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x4008C100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40090000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40090100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x40094000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x40094100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 (0x40098000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 (0x40098100U) /**< \brief (PDC_USART2) Base Address */ +#define USART3 (0x4009C000U) /**< \brief (USART3 ) Base Address */ +#define PDC_USART3 (0x4009C100U) /**< \brief (PDC_USART3) Base Address */ +#define UDPHS (0x400A4000U) /**< \brief (UDPHS ) Base Address */ +#define ADC12B (0x400A8000U) /**< \brief (ADC12B ) Base Address */ +#define PDC_ADC12B (0x400A8100U) /**< \brief (PDC_ADC12B) Base Address */ +#define ADC (0x400AC000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x400AC100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC (0x400B0000U) /**< \brief (DMAC ) Base Address */ +#define SMC (0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX (0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART (0x400E0600U) /**< \brief (UART ) Base Address */ +#define PDC_UART (0x400E0700U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID (0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 (0x400E0800U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 (0x400E0A00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA (0x400E0C00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E0E00U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1000U) /**< \brief (PIOC ) Base Address */ +#define RSTC (0x400E1200U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1210U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1230U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1250U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1260U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1290U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI ((Spi *)0x40008000U) /**< \brief (SPI ) Base Address */ +#define TC0 ((Tc *)0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TWI0 ((Twi *)0x40084000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x40084100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x40088000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x40088100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x4008C000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x4008C100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40090000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40090100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x40094000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x40094100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 ((Usart *)0x40098000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 ((Pdc *)0x40098100U) /**< \brief (PDC_USART2) Base Address */ +#define USART3 ((Usart *)0x4009C000U) /**< \brief (USART3 ) Base Address */ +#define PDC_USART3 ((Pdc *)0x4009C100U) /**< \brief (PDC_USART3) Base Address */ +#define UDPHS ((Udphs *)0x400A4000U) /**< \brief (UDPHS ) Base Address */ +#define ADC12B ((Adc12b *)0x400A8000U) /**< \brief (ADC12B ) Base Address */ +#define PDC_ADC12B ((Pdc *)0x400A8100U) /**< \brief (PDC_ADC12B) Base Address */ +#define ADC ((Adc *)0x400AC000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x400AC100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC ((Dmac *)0x400B0000U) /**< \brief (DMAC ) Base Address */ +#define SMC ((Smc *)0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0200U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0400U) /**< \brief (PMC ) Base Address */ +#define UART ((Uart *)0x400E0600U) /**< \brief (UART ) Base Address */ +#define PDC_UART ((Pdc *)0x400E0700U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID ((Chipid *)0x400E0740U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 ((Efc *)0x400E0800U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 ((Efc *)0x400E0A00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA ((Pio *)0x400E0C00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E0E00U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1000U) /**< \brief (PIOC ) Base Address */ +#define RSTC ((Rstc *)0x400E1200U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1210U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1230U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1250U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1260U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1290U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3U4E */ +/* ************************************************************************** */ +/** \addtogroup SAM3U4E_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3u4e.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3U4E */ +/* ************************************************************************** */ + +#define IFLASH0_SIZE (0x20000u) +#define IFLASH0_PAGE_SIZE (256u) +#define IFLASH0_LOCK_REGION_SIZE (8192u) +#define IFLASH0_NB_OF_PAGES (64u) +#define IFLASH1_SIZE (0x20000u) +#define IFLASH1_PAGE_SIZE (256u) +#define IFLASH1_LOCK_REGION_SIZE (8192u) +#define IFLASH1_NB_OF_PAGES (64u) +#define IRAM_SIZE (0xD000u) +#define IFLASH_SIZE (0x40000u) + +#define IFLASH0_ADDR (0x00080000u) /**< Internal Flash 0 base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IROM_ADDR (0x00180000u) /**< Internal ROM base address */ +#define IRAM0_ADDR (0x20000000u) /**< Internal RAM 0 base address */ +#define IRAM1_ADDR (0x20080000u) /**< Internal RAM 1 base address */ +#define NFC_RAM_ADDR (0x20100000u) /**< NAND Flash Controller RAM base address */ +#define UDPHS_RAM_ADDR (0x20180000u) /**< USB High Speed Device Port RAM base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3U4E */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (96000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3U4E_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/source/templates/exceptions.c b/hardware/sam/system/libsam/cmsis/sam3u/source/templates/exceptions.c new file mode 100644 index 000000000..360160fda --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/source/templates/exceptions.c @@ -0,0 +1,139 @@ +/*! \file ********************************************************************* + * + * \brief This file contains the default exception handlers. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \note + * The exception handler has weak aliases. + * As they are weak aliases, any function with the same name will override + * this definition. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#include "exceptions.h" + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +#ifdef __GNUC__ +/* Cortex-M3 core handlers */ +//void Reset_Handler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +void NMI_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +//void HardFault_Handler( void ) __attribute__ ((weak, alias ("Dummy_Handler"))) ; +void MemManage_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void BusFault_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void UsageFault_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVC_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void DebugMon_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void SUPC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void RSTC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTT_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PMC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void EFC0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void EFC1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void UART_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SMC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOA_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOB_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void USART0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void USART1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void USART2_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void USART3_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void MCI_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TWI0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TWI1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SPI_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SSC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC2_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PWM_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void ADC12B_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void ADC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void UDPHS_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* __GNUC__ */ + +#ifdef __ICCARM__ +/* Cortex-M3 core handlers */ +//#pragma weak Reset_Handler=Dummy_Handler +#pragma weak NMI_Handler=Dummy_Handler +//#pragma weak HardFault_Handler=Dummy_Handler +#pragma weak MemManage_Handler=Dummy_Handler +#pragma weak BusFault_Handler=Dummy_Handler +#pragma weak UsageFault_Handler=Dummy_Handler +#pragma weak SVC_Handler=Dummy_Handler +#pragma weak DebugMon_Handler=Dummy_Handler +#pragma weak PendSV_Handler=Dummy_Handler +#pragma weak SysTick_Handler=Dummy_Handler + +/* Peripherals handlers */ +#pragma weak SUPC_IrqHandler=Dummy_Handler +#pragma weak RSTC_IrqHandler=Dummy_Handler +#pragma weak RTC_IrqHandler=Dummy_Handler +#pragma weak RTT_IrqHandler=Dummy_Handler +#pragma weak WDT_IrqHandler=Dummy_Handler +#pragma weak PMC_IrqHandler=Dummy_Handler +#pragma weak EFC0_IrqHandler=Dummy_Handler +#pragma weak EFC1_IrqHandler=Dummy_Handler +#pragma weak UART_IrqHandler=Dummy_Handler +#pragma weak SMC_IrqHandler=Dummy_Handler +#pragma weak PIOA_IrqHandler=Dummy_Handler +#pragma weak PIOB_IrqHandler=Dummy_Handler +#pragma weak PIOC_IrqHandler=Dummy_Handler +#pragma weak USART0_IrqHandler=Dummy_Handler +#pragma weak USART1_IrqHandler=Dummy_Handler +#pragma weak USART2_IrqHandler=Dummy_Handler +#pragma weak USART3_IrqHandler=Dummy_Handler +#pragma weak MCI_IrqHandler=Dummy_Handler +#pragma weak TWI0_IrqHandler=Dummy_Handler +#pragma weak TWI1_IrqHandler=Dummy_Handler +#pragma weak SPI_IrqHandler=Dummy_Handler +#pragma weak SSC_IrqHandler=Dummy_Handler +#pragma weak TC0_IrqHandler=Dummy_Handler +#pragma weak TC1_IrqHandler=Dummy_Handler +#pragma weak TC2_IrqHandler=Dummy_Handler +#pragma weak PWM_IrqHandler=Dummy_Handler +#pragma weak ADC12B_IrqHandler=Dummy_Handler +#pragma weak ADC_IrqHandler=Dummy_Handler +#pragma weak DMAC_IrqHandler=Dummy_Handler +#pragma weak UDPHS_IrqHandler=Dummy_Handler +#endif /* __ICCARM__ */ + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/source/templates/exceptions.h b/hardware/sam/system/libsam/cmsis/sam3u/source/templates/exceptions.h new file mode 100644 index 000000000..caae7535a --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/source/templates/exceptions.h @@ -0,0 +1,86 @@ +/*! \file ********************************************************************* + * + * \brief This file contains the interface for default exception handlers. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#ifndef EXCEPTIONS_H_INCLUDED +#define EXCEPTIONS_H_INCLUDED + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +/* Function prototype for exception table items (interrupt handler). */ +typedef void (*IntFunc) (void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M3 core handlers */ +void Reset_Handler(void); +void NMI_Handler(void); +void HardFault_Handler(void); +void MemManage_Handler(void); +void BusFault_Handler(void); +void UsageFault_Handler(void); +void SVC_Handler(void); +void DebugMon_Handler(void); +void PendSV_Handler(void); +void SysTick_Handler(void); + +/* Peripherals handlers */ +void SUPC_IrqHandler(void); +void RSTC_IrqHandler(void); +void RTC_IrqHandler(void); +void RTT_IrqHandler(void); +void WDT_IrqHandler(void); +void PMC_IrqHandler(void); +void EFC0_IrqHandler(void); +void EFC1_IrqHandler(void); +void UART_IrqHandler(void); +void SMC_IrqHandler(void); +void PIOA_IrqHandler(void); +void PIOB_IrqHandler(void); +void PIOC_IrqHandler(void); +void USART0_IrqHandler(void); +void USART1_IrqHandler(void); +void USART2_IrqHandler(void); +void USART3_IrqHandler(void); +void MCI_IrqHandler(void); +void TWI0_IrqHandler(void); +void TWI1_IrqHandler(void); +void SPI_IrqHandler(void); +void SSC_IrqHandler(void); +void TC0_IrqHandler(void); +void TC1_IrqHandler(void); +void TC2_IrqHandler(void); +void PWM_IrqHandler(void); +void ADC12B_IrqHandler(void); +void ADC_IrqHandler(void); +void DMAC_IrqHandler(void); +void UDPHS_IrqHandler(void); + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ + +#endif /* EXCEPTIONS_H_INCLUDED */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/source/templates/gcc/startup_sam3u.c b/hardware/sam/system/libsam/cmsis/sam3u/source/templates/gcc/startup_sam3u.c new file mode 100644 index 000000000..67b3a4c72 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/source/templates/gcc/startup_sam3u.c @@ -0,0 +1,131 @@ +/*! \file ********************************************************************* + * + * \brief Startup file for SAM3U. + * + * $asf_license$ + * + * This file defines common SAM series. + * + * - Compiler: ARMGCC + * - Supported devices: All SAM3U devices can be used. + * - AppNote: + * + ******************************************************************************/ + +#include "../exceptions.h" +#include "sam3.h" + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +IntFunc exception_table[] = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + (IntFunc) (&_estack), + Reset_Handler, + NMI_Handler, + HardFault_Handler, + MemManage_Handler, + BusFault_Handler, + UsageFault_Handler, + 0, 0, 0, 0, /* Reserved */ + SVC_Handler, + DebugMon_Handler, + 0, /* Reserved */ + PendSV_Handler, + SysTick_Handler, + + /* Configurable interrupts */ + SUPC_IrqHandler, /* 0 Supply Controller */ + RSTC_IrqHandler, /* 1 Reset Controller */ + RTC_IrqHandler, /* 2 Real Time Clock */ + RTT_IrqHandler, /* 3 Real Time Timer */ + WDT_IrqHandler, /* 4 Watchdog Timer */ + PMC_IrqHandler, /* 5 PMC */ + EFC0_IrqHandler, /* 6 EEFC 0 */ + EFC1_IrqHandler, /* 7 EEFC 1 */ + UART_IrqHandler, /* 8 UART0 */ + SMC_IrqHandler, /* 9 SMC */ + PIOA_IrqHandler, /* 10 Parallel IO Controller A */ + PIOB_IrqHandler, /* 11 Parallel IO Controller B */ + PIOC_IrqHandler, /* 12 Parallel IO Controller C */ + USART0_IrqHandler, /* 13 USART 0 */ + USART1_IrqHandler, /* 14 USART 1 */ + USART2_IrqHandler, /* 15 USART 2 */ + USART3_IrqHandler, /* 16 USART 3 */ + MCI_IrqHandler, /* 17 MCI */ + TWI0_IrqHandler, /* 18 TWI 0 */ + TWI1_IrqHandler, /* 19 TWI 1 */ + SPI_IrqHandler, /* 20 SPI */ + SSC_IrqHandler, /* 21 SSC */ + TC0_IrqHandler, /* 22 Timer Counter 0 */ + TC1_IrqHandler, /* 23 Timer Counter 1 */ + TC2_IrqHandler, /* 24 Timer Counter 2 */ + PWM_IrqHandler, /* 25 PWM */ + ADC12B_IrqHandler, /* 26 ADC12B controller */ + ADC_IrqHandler, /* 27 ADC controller */ + DMAC_IrqHandler, /* 28 DMA controller */ + UDPHS_IrqHandler, /* 29 USB High Speed Port */ + Dummy_Handler /* 30 not used */ +}; + +/* TEMPORARY PATCH FOR SCB */ +#define SCB_VTOR_TBLBASE_Pos 29 /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + if (((uint32_t) pSrc >= IRAM0_ADDR) && ((uint32_t) pSrc < IRAM0_ADDR + IRAM_SIZE)) { + SCB->VTOR |= 1 << SCB_VTOR_TBLBASE_Pos; + } + + /* Initialize the C library */ + __libc_init_array(); + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} diff --git a/hardware/sam/system/libsam/cmsis/sam3u/source/templates/iar/startup_sam3u.c b/hardware/sam/system/libsam/cmsis/sam3u/source/templates/iar/startup_sam3u.c new file mode 100644 index 000000000..702e6176a --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/source/templates/iar/startup_sam3u.c @@ -0,0 +1,108 @@ +/*! \file ********************************************************************* + * + * \brief Startup file for SAM3U. + * + * $asf_license$ + * + * This file defines common SAM series. + * + * - Compiler: IAR EWARM + * - Supported devices: All SAM3U devices can be used. + * - AppNote: + * + ******************************************************************************/ + +#include "../exceptions.h" +#include "sam3.h" + +typedef void( *intfunc )( void ); +typedef union { intfunc __fun; void * __ptr; } intvec_elem; + +void __iar_program_start(void); +int __low_level_init(void); + +/* Exception Table */ +#pragma language=extended +#pragma segment="CSTACK" + +/* The name "__vector_table" has special meaning for C-SPY: */ +/* it is where the SP start value is found, and the NVIC vector */ +/* table register (VTOR) is initialized to this address if != 0 */ + +#pragma section = ".intvec" +#pragma location = ".intvec" +const intvec_elem __vector_table[] = { + {.__ptr = __sfe("CSTACK")}, + Reset_Handler, + + NMI_Handler, + HardFault_Handler, + MemManage_Handler, + BusFault_Handler, + UsageFault_Handler, + 0, 0, 0, 0, /* Reserved */ + SVC_Handler, + DebugMon_Handler, + 0, /* Reserved */ + PendSV_Handler, + SysTick_Handler, + + /* Configurable interrupts */ + SUPC_IrqHandler, /* 0 Supply Controller */ + RSTC_IrqHandler, /* 1 Reset Controller */ + RTC_IrqHandler, /* 2 Real Time Clock */ + RTT_IrqHandler, /* 3 Real Time Timer */ + WDT_IrqHandler, /* 4 Watchdog Timer */ + PMC_IrqHandler, /* 5 PMC */ + EFC0_IrqHandler, /* 6 EEFC 0 */ + EFC1_IrqHandler, /* 7 EEFC 1 */ + UART_IrqHandler, /* 8 UART0 */ + SMC_IrqHandler, /* 9 SMC */ + PIOA_IrqHandler, /* 10 Parallel IO Controller A */ + PIOB_IrqHandler, /* 11 Parallel IO Controller B */ + PIOC_IrqHandler, /* 12 Parallel IO Controller C */ + USART0_IrqHandler, /* 13 USART 0 */ + USART1_IrqHandler, /* 14 USART 1 */ + USART2_IrqHandler, /* 15 USART 2 */ + USART3_IrqHandler, /* 16 USART 3 */ + MCI_IrqHandler, /* 17 MCI */ + TWI0_IrqHandler, /* 18 TWI 0 */ + TWI1_IrqHandler, /* 19 TWI 1 */ + SPI_IrqHandler, /* 20 SPI */ + SSC_IrqHandler, /* 21 SSC */ + TC0_IrqHandler, /* 22 Timer Counter 0 */ + TC1_IrqHandler, /* 23 Timer Counter 1 */ + TC2_IrqHandler, /* 24 Timer Counter 2 */ + PWM_IrqHandler, /* 25 PWM */ + ADC12B_IrqHandler, /* 26 ADC12B controller */ + ADC_IrqHandler, /* 27 ADC controller */ + DMAC_IrqHandler, /* 28 DMA controller */ + UDPHS_IrqHandler, /* 29 USB High Speed Port */ + Dummy_Handler /* 30 not used */ +}; + +/**------------------------------------------------------------------------------ + * This is the code that gets called on processor reset. To initialize the + * device. + *------------------------------------------------------------------------------*/ +int __low_level_init(void) +{ + uint32_t *pSrc = __section_begin(".intvec"); + + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + if (((uint32_t) pSrc >= IRAM0_ADDR) && ((uint32_t) pSrc < IRAM0_ADDR + IRAM_SIZE)) { + SCB->VTOR |= 1 << SCB_VTOR_TBLBASE_Pos; + } + + return 1; /* if return 0, the data sections will not be initialized */ +} + +/**------------------------------------------------------------------------------ + * This is the code that gets called on processor reset. To initialize the + * device. + *------------------------------------------------------------------------------*/ +void Reset_Handler(void) +{ + __iar_program_start(); +} diff --git a/hardware/sam/system/libsam/cmsis/sam3u/source/templates/system_sam3u.c b/hardware/sam/system/libsam/cmsis/sam3u/source/templates/system_sam3u.c new file mode 100644 index 000000000..d4a492afa --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/source/templates/system_sam3u.c @@ -0,0 +1,204 @@ +/*! \file ********************************************************************* + * + * \brief Provides the low-level initialization functions that called + * on chip startup. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#include "system_sam3u.h" +#include "sam3.h" + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +/* Clock settings (96MHz) */ +#define SYS_BOARD_OSCOUNT (CKGR_MOR_MOSCXTST(0x8)) +#define SYS_BOARD_PLLAR (CKGR_PLLAR_ONE \ + | CKGR_PLLAR_MULA(0x7) \ + | CKGR_PLLAR_PLLACOUNT(0x3f) \ + | CKGR_PLLAR_DIVA(0x1)) +#define SYS_BOARD_MCKR (PMC_MCKR_PRES_CLK_1 | PMC_MCKR_CSS_PLLA_CLK) + +/* Clock Definitions */ +#define SYS_FREQ_XTAL_32K (32768UL) /* External 32K crystal frequency */ +#define SYS_FREQ_XTAL_XTAL12M (12000000UL) /* External 12M crystal frequency */ +#define SYS_UTMIPLL (480000000UL) /* UTMI PLL frequency */ + +#define SYS_FREQ_FWS_0 (24000000UL) /* Maximum operating frequency when FWS is 0 */ +#define SYS_FREQ_FWS_1 (40000000UL) /* Maximum operating frequency when FWS is 1 */ +#define SYS_FREQ_FWS_2 (72000000UL) /* Maximum operating frequency when FWS is 2 */ +#define SYS_FREQ_FWS_3 (84000000UL) /* Maximum operating frequency when FWS is 3 */ + +#define SYS_CKGR_MOR_KEY_VALUE CKGR_MOR_KEY(0x37) /* Key to unlock MOR register */ + +/* FIXME: should be generated by sock */ +uint32_t SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + +/** + * \brief Setup the microcontroller system. + * Initialize the System and update the SystemFrequency variable. + */ +void SystemInit(void) +{ + /* Set 3 FWS for Embedded Flash Access */ + EFC0->EEFC_FMR = EEFC_FMR_FWS(CHIP_FLASH_WAIT_STATE); + EFC1->EEFC_FMR = EEFC_FMR_FWS(CHIP_FLASH_WAIT_STATE); + + /* Initialize main oscillator */ + if (!(PMC->CKGR_MOR & CKGR_MOR_MOSCSEL)) { + PMC->CKGR_MOR = SYS_CKGR_MOR_KEY_VALUE | SYS_BOARD_OSCOUNT | + CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN; + while (!(PMC->PMC_SR & PMC_SR_MOSCXTS)) { + } + } + + /* Switch to 3-20MHz Xtal oscillator */ + PMC->CKGR_MOR = SYS_CKGR_MOR_KEY_VALUE | SYS_BOARD_OSCOUNT | + CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN | CKGR_MOR_MOSCSEL; + + while (!(PMC->PMC_SR & PMC_SR_MOSCSELS)) { + } + PMC->PMC_MCKR = (PMC->PMC_MCKR & ~(uint32_t)PMC_MCKR_CSS_Msk) | + PMC_MCKR_CSS_MAIN_CLK; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)) { + } + + /* Initialize PLLA */ + PMC->CKGR_PLLAR = SYS_BOARD_PLLAR; + while (!(PMC->PMC_SR & PMC_SR_LOCKA)) { + } + + /* Switch to main clock */ + PMC->PMC_MCKR = (SYS_BOARD_MCKR & ~PMC_MCKR_CSS_Msk) | PMC_MCKR_CSS_MAIN_CLK; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)) { + } + + /* Switch to PLLA */ + PMC->PMC_MCKR = SYS_BOARD_MCKR; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)) { + } + + SystemCoreClock = CHIP_FREQ_CPU_MAX; +} + +void SystemCoreClockUpdate(void) +{ + /* Determine clock frequency according to clock register values */ + switch (PMC->PMC_MCKR & PMC_MCKR_CSS_Msk) { + case PMC_MCKR_CSS_SLOW_CLK: /* Slow clock */ + if (SUPC->SUPC_SR & SUPC_SR_OSCSEL) { + SystemCoreClock = SYS_FREQ_XTAL_32K; + } else { + SystemCoreClock = CHIP_FREQ_SLCK_RC; + } + break; + case PMC_MCKR_CSS_MAIN_CLK: /* Main clock */ + if (PMC->CKGR_MOR & CKGR_MOR_MOSCSEL) { + SystemCoreClock = SYS_FREQ_XTAL_XTAL12M; + } else { + SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + + switch (PMC->CKGR_MOR & CKGR_MOR_MOSCRCF_Msk) { + case CKGR_MOR_MOSCRCF_4_MHz: + break; + case CKGR_MOR_MOSCRCF_8_MHz: + SystemCoreClock *= 2U; + break; + case CKGR_MOR_MOSCRCF_12_MHz: + SystemCoreClock *= 3U; + break; + default: + break; + } + } + break; + case PMC_MCKR_CSS_PLLA_CLK: /* PLLA clock */ + case PMC_MCKR_CSS_UPLL_CLK: /* UPLL clock */ + if (PMC->CKGR_MOR & CKGR_MOR_MOSCSEL) { + SystemCoreClock = SYS_FREQ_XTAL_XTAL12M; + } else { + SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + + switch (PMC->CKGR_MOR & CKGR_MOR_MOSCRCF_Msk) { + case CKGR_MOR_MOSCRCF_4_MHz: + break; + case CKGR_MOR_MOSCRCF_8_MHz: + SystemCoreClock *= 2U; + break; + case CKGR_MOR_MOSCRCF_12_MHz: + SystemCoreClock *= 3U; + break; + default: + break; + } + } + if ((PMC->PMC_MCKR & PMC_MCKR_CSS_Msk) == PMC_MCKR_CSS_PLLA_CLK) { + SystemCoreClock *= ((((PMC->CKGR_PLLAR) & CKGR_PLLAR_MULA_Msk) >> + CKGR_PLLAR_MULA_Pos) + 1U); + SystemCoreClock /= ((((PMC->CKGR_PLLAR) & CKGR_PLLAR_DIVA_Msk) >> + CKGR_PLLAR_DIVA_Pos)); + } else { + SystemCoreClock = SYS_UTMIPLL / 2U; + } + break; + } + + if ((PMC->PMC_MCKR & PMC_MCKR_PRES_Msk) == PMC_MCKR_PRES_CLK_3) { + SystemCoreClock /= 3U; + } else { + SystemCoreClock >>= ((PMC->PMC_MCKR & PMC_MCKR_PRES_Msk) >> + PMC_MCKR_PRES_Pos); + } +} + +/** + * Initialize flash and watchdog. + */ +void system_init_flash_and_watchdog(uint32_t dw_clk) +{ + /* Set FWS for embedded Flash access according to operating frequency */ + if (dw_clk < SYS_FREQ_FWS_0) { + EFC0->EEFC_FMR = EEFC_FMR_FWS(0); + EFC1->EEFC_FMR = EEFC_FMR_FWS(0); + } else if (dw_clk < SYS_FREQ_FWS_1) { + EFC0->EEFC_FMR = EEFC_FMR_FWS(1); + EFC1->EEFC_FMR = EEFC_FMR_FWS(1); + } else if (dw_clk < SYS_FREQ_FWS_2) { + EFC0->EEFC_FMR = EEFC_FMR_FWS(2); + EFC1->EEFC_FMR = EEFC_FMR_FWS(2); + } else if (dw_clk < SYS_FREQ_FWS_3) { + EFC0->EEFC_FMR = EEFC_FMR_FWS(3); + EFC1->EEFC_FMR = EEFC_FMR_FWS(3); + } else { + EFC0->EEFC_FMR = EEFC_FMR_FWS(4); + EFC1->EEFC_FMR = EEFC_FMR_FWS(4); + } + +#ifndef CONFIG_KEEP_WATCHDOG_AFTER_INIT + /* Disable the watchdog */ + WDT->WDT_MR = WDT_MR_WDDIS; +#endif +} + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ diff --git a/hardware/sam/system/libsam/cmsis/sam3u/source/templates/system_sam3u.h b/hardware/sam/system/libsam/cmsis/sam3u/source/templates/system_sam3u.h new file mode 100644 index 000000000..82c0118cd --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3u/source/templates/system_sam3u.h @@ -0,0 +1,58 @@ +/*! \file ********************************************************************* + * + * \brief CMSIS Cortex-M# Device Peripheral Access Layer Header File + * for SAM3 devices. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#ifndef SYSTEM_SAM3U_H_INCLUDED +#define SYSTEM_SAM3U_H_INCLUDED + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +#include + +extern uint32_t SystemCoreClock; /* System Clock Frequency (Core Clock) */ + +/** + * @brief Setup the microcontroller system. + * Initialize the System and update the SystemCoreClock variable. + */ +void SystemInit(void); + +/** + * @brief Updates the SystemCoreClock with current core Clock + * retrieved from cpu registers. + */ +void SystemCoreClockUpdate(void); + +/** + * Initialize flash and watchdog. + */ +void system_init_flash_and_watchdog(uint32_t dw_clk); + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ + +#endif /* SYSTEM_SAM3U_H_INCLUDED */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_adc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_adc.h new file mode 100644 index 000000000..70d30de35 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_adc.h @@ -0,0 +1,522 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_ADC_COMPONENT_ +#define _SAM3XA_ADC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Analog-to-digital Converter */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_ADC Analog-to-digital Converter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Adc hardware registers */ +typedef struct { + WoReg ADC_CR; /**< \brief (Adc Offset: 0x00) Control Register */ + RwReg ADC_MR; /**< \brief (Adc Offset: 0x04) Mode Register */ + RwReg ADC_SEQR1; /**< \brief (Adc Offset: 0x08) Channel Sequence Register 1 */ + RwReg ADC_SEQR2; /**< \brief (Adc Offset: 0x0C) Channel Sequence Register 2 */ + WoReg ADC_CHER; /**< \brief (Adc Offset: 0x10) Channel Enable Register */ + WoReg ADC_CHDR; /**< \brief (Adc Offset: 0x14) Channel Disable Register */ + RoReg ADC_CHSR; /**< \brief (Adc Offset: 0x18) Channel Status Register */ + RoReg Reserved1[1]; + RoReg ADC_LCDR; /**< \brief (Adc Offset: 0x20) Last Converted Data Register */ + WoReg ADC_IER; /**< \brief (Adc Offset: 0x24) Interrupt Enable Register */ + WoReg ADC_IDR; /**< \brief (Adc Offset: 0x28) Interrupt Disable Register */ + RoReg ADC_IMR; /**< \brief (Adc Offset: 0x2C) Interrupt Mask Register */ + RoReg ADC_ISR; /**< \brief (Adc Offset: 0x30) Interrupt Status Register */ + RoReg Reserved2[2]; + RoReg ADC_OVER; /**< \brief (Adc Offset: 0x3C) Overrun Status Register */ + RwReg ADC_EMR; /**< \brief (Adc Offset: 0x40) Extended Mode Register */ + RwReg ADC_CWR; /**< \brief (Adc Offset: 0x44) Compare Window Register */ + RwReg ADC_CGR; /**< \brief (Adc Offset: 0x48) Channel Gain Register */ + RwReg ADC_COR; /**< \brief (Adc Offset: 0x4C) Channel Offset Register */ + RoReg ADC_CDR[16]; /**< \brief (Adc Offset: 0x50) Channel Data Register */ + RoReg Reserved3[1]; + RwReg ADC_ACR; /**< \brief (Adc Offset: 0x94) Analog Control Register */ + RoReg Reserved4[19]; + RwReg ADC_WPMR; /**< \brief (Adc Offset: 0xE4) Write Protect Mode Register */ + RoReg ADC_WPSR; /**< \brief (Adc Offset: 0xE8) Write Protect Status Register */ + RoReg Reserved5[5]; + RwReg ADC_RPR; /**< \brief (Adc Offset: 0x100) Receive Pointer Register */ + RwReg ADC_RCR; /**< \brief (Adc Offset: 0x104) Receive Counter Register */ + RwReg ADC_TPR; /**< \brief (Adc Offset: 0x108) Transmit Pointer Register */ + RwReg ADC_TCR; /**< \brief (Adc Offset: 0x10C) Transmit Counter Register */ + RwReg ADC_RNPR; /**< \brief (Adc Offset: 0x110) Receive Next Pointer Register */ + RwReg ADC_RNCR; /**< \brief (Adc Offset: 0x114) Receive Next Counter Register */ + RwReg ADC_TNPR; /**< \brief (Adc Offset: 0x118) Transmit Next Pointer Register */ + RwReg ADC_TNCR; /**< \brief (Adc Offset: 0x11C) Transmit Next Counter Register */ + WoReg ADC_PTCR; /**< \brief (Adc Offset: 0x120) Transfer Control Register */ + RoReg ADC_PTSR; /**< \brief (Adc Offset: 0x124) Transfer Status Register */ +} Adc; +#endif /* __ASSEMBLY__ */ +/* -------- ADC_CR : (ADC Offset: 0x00) Control Register -------- */ +#define ADC_CR_SWRST (0x1u << 0) /**< \brief (ADC_CR) Software Reset */ +#define ADC_CR_START (0x1u << 1) /**< \brief (ADC_CR) Start Conversion */ +/* -------- ADC_MR : (ADC Offset: 0x04) Mode Register -------- */ +#define ADC_MR_TRGEN (0x1u << 0) /**< \brief (ADC_MR) Trigger Enable */ +#define ADC_MR_TRGEN_DIS (0x0u << 0) /**< \brief (ADC_MR) Hardware triggers are disabled. Starting a conversion is only possible by software. */ +#define ADC_MR_TRGEN_EN (0x1u << 0) /**< \brief (ADC_MR) Hardware trigger selected by TRGSEL field is enabled. */ +#define ADC_MR_TRGSEL_Pos 1 +#define ADC_MR_TRGSEL_Msk (0x7u << ADC_MR_TRGSEL_Pos) /**< \brief (ADC_MR) Trigger Selection */ +#define ADC_MR_TRGSEL_ADC_TRIG0 (0x0u << 1) /**< \brief (ADC_MR) External : ADCTRG */ +#define ADC_MR_TRGSEL_ADC_TRIG1 (0x1u << 1) /**< \brief (ADC_MR) TIOA Output of the Timer Counter Channel 0 */ +#define ADC_MR_TRGSEL_ADC_TRIG2 (0x2u << 1) /**< \brief (ADC_MR) TIOA Output of the Timer Counter Channel 1 */ +#define ADC_MR_TRGSEL_ADC_TRIG3 (0x3u << 1) /**< \brief (ADC_MR) TIOA Output of the Timer Counter Channel 2 */ +#define ADC_MR_TRGSEL_ADC_TRIG4 (0x4u << 1) /**< \brief (ADC_MR) PWM Event Line 0 */ +#define ADC_MR_TRGSEL_ADC_TRIG5 (0x5u << 1) /**< \brief (ADC_MR) PWM Event Line 0 */ +#define ADC_MR_LOWRES (0x1u << 4) /**< \brief (ADC_MR) Resolution */ +#define ADC_MR_LOWRES_BITS_12 (0x0u << 4) /**< \brief (ADC_MR) 12-bit resolution */ +#define ADC_MR_LOWRES_BITS_10 (0x1u << 4) /**< \brief (ADC_MR) 10-bit resolution */ +#define ADC_MR_SLEEP (0x1u << 5) /**< \brief (ADC_MR) Sleep Mode */ +#define ADC_MR_SLEEP_NORMAL (0x0u << 5) /**< \brief (ADC_MR) Normal Mode: The ADC Core and reference voltage circuitry are kept ON between conversions */ +#define ADC_MR_SLEEP_SLEEP (0x1u << 5) /**< \brief (ADC_MR) Sleep Mode: The ADC Core and reference voltage circuitry are OFF between conversions */ +#define ADC_MR_FWUP (0x1u << 6) /**< \brief (ADC_MR) Fast Wake Up */ +#define ADC_MR_FWUP_OFF (0x0u << 6) /**< \brief (ADC_MR) Normal Sleep Mode: The sleep mode is defined by the SLEEP bit */ +#define ADC_MR_FWUP_ON (0x1u << 6) /**< \brief (ADC_MR) Fast Wake Up Sleep Mode: The Voltage reference is ON between conversions and ADC Core is OFF */ +#define ADC_MR_FREERUN (0x1u << 7) /**< \brief (ADC_MR) Free Run Mode */ +#define ADC_MR_FREERUN_OFF (0x0u << 7) /**< \brief (ADC_MR) Normal Mode */ +#define ADC_MR_FREERUN_ON (0x1u << 7) /**< \brief (ADC_MR) Free Run Mode: Never wait for any trigger. */ +#define ADC_MR_PRESCAL_Pos 8 +#define ADC_MR_PRESCAL_Msk (0xffu << ADC_MR_PRESCAL_Pos) /**< \brief (ADC_MR) Prescaler Rate Selection */ +#define ADC_MR_PRESCAL(value) ((ADC_MR_PRESCAL_Msk & ((value) << ADC_MR_PRESCAL_Pos))) +#define ADC_MR_STARTUP_Pos 16 +#define ADC_MR_STARTUP_Msk (0xfu << ADC_MR_STARTUP_Pos) /**< \brief (ADC_MR) Start Up Time */ +#define ADC_MR_STARTUP_SUT0 (0x0u << 16) /**< \brief (ADC_MR) 0 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT8 (0x1u << 16) /**< \brief (ADC_MR) 8 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT16 (0x2u << 16) /**< \brief (ADC_MR) 16 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT24 (0x3u << 16) /**< \brief (ADC_MR) 24 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT64 (0x4u << 16) /**< \brief (ADC_MR) 64 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT80 (0x5u << 16) /**< \brief (ADC_MR) 80 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT96 (0x6u << 16) /**< \brief (ADC_MR) 96 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT112 (0x7u << 16) /**< \brief (ADC_MR) 112 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT512 (0x8u << 16) /**< \brief (ADC_MR) 512 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT576 (0x9u << 16) /**< \brief (ADC_MR) 576 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT640 (0xAu << 16) /**< \brief (ADC_MR) 640 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT704 (0xBu << 16) /**< \brief (ADC_MR) 704 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT768 (0xCu << 16) /**< \brief (ADC_MR) 768 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT832 (0xDu << 16) /**< \brief (ADC_MR) 832 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT896 (0xEu << 16) /**< \brief (ADC_MR) 896 periods of ADCClock */ +#define ADC_MR_STARTUP_SUT960 (0xFu << 16) /**< \brief (ADC_MR) 960 periods of ADCClock */ +#define ADC_MR_SETTLING_Pos 20 +#define ADC_MR_SETTLING_Msk (0x3u << ADC_MR_SETTLING_Pos) /**< \brief (ADC_MR) Analog Settling Time */ +#define ADC_MR_SETTLING_AST3 (0x0u << 20) /**< \brief (ADC_MR) 3 periods of ADCClock */ +#define ADC_MR_SETTLING_AST5 (0x1u << 20) /**< \brief (ADC_MR) 5 periods of ADCClock */ +#define ADC_MR_SETTLING_AST9 (0x2u << 20) /**< \brief (ADC_MR) 9 periods of ADCClock */ +#define ADC_MR_SETTLING_AST17 (0x3u << 20) /**< \brief (ADC_MR) 17 periods of ADCClock */ +#define ADC_MR_ANACH (0x1u << 23) /**< \brief (ADC_MR) Analog Change */ +#define ADC_MR_ANACH_NONE (0x0u << 23) /**< \brief (ADC_MR) No analog change on channel switching: DIFF0, GAIN0 and OFF0 are used for all channels */ +#define ADC_MR_ANACH_ALLOWED (0x1u << 23) /**< \brief (ADC_MR) Allows different analog settings for each channel. See ADC_CGR and ADC_COR Registers */ +#define ADC_MR_TRACKTIM_Pos 24 +#define ADC_MR_TRACKTIM_Msk (0xfu << ADC_MR_TRACKTIM_Pos) /**< \brief (ADC_MR) Tracking Time */ +#define ADC_MR_TRACKTIM(value) ((ADC_MR_TRACKTIM_Msk & ((value) << ADC_MR_TRACKTIM_Pos))) +#define ADC_MR_TRANSFER_Pos 28 +#define ADC_MR_TRANSFER_Msk (0x3u << ADC_MR_TRANSFER_Pos) /**< \brief (ADC_MR) Transfer Period */ +#define ADC_MR_TRANSFER(value) ((ADC_MR_TRANSFER_Msk & ((value) << ADC_MR_TRANSFER_Pos))) +#define ADC_MR_USEQ (0x1u << 31) /**< \brief (ADC_MR) Use Sequence Enable */ +#define ADC_MR_USEQ_NUM_ORDER (0x0u << 31) /**< \brief (ADC_MR) Normal Mode: The controller converts channels in a simple numeric order. */ +#define ADC_MR_USEQ_REG_ORDER (0x1u << 31) /**< \brief (ADC_MR) User Sequence Mode: The sequence respects what is defined in ADC_SEQR1 and ADC_SEQR2 registers. */ +/* -------- ADC_SEQR1 : (ADC Offset: 0x08) Channel Sequence Register 1 -------- */ +#define ADC_SEQR1_USCH1_Pos 0 +#define ADC_SEQR1_USCH1_Msk (0xfu << ADC_SEQR1_USCH1_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 1 */ +#define ADC_SEQR1_USCH1(value) ((ADC_SEQR1_USCH1_Msk & ((value) << ADC_SEQR1_USCH1_Pos))) +#define ADC_SEQR1_USCH2_Pos 4 +#define ADC_SEQR1_USCH2_Msk (0xfu << ADC_SEQR1_USCH2_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 2 */ +#define ADC_SEQR1_USCH2(value) ((ADC_SEQR1_USCH2_Msk & ((value) << ADC_SEQR1_USCH2_Pos))) +#define ADC_SEQR1_USCH3_Pos 8 +#define ADC_SEQR1_USCH3_Msk (0xfu << ADC_SEQR1_USCH3_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 3 */ +#define ADC_SEQR1_USCH3(value) ((ADC_SEQR1_USCH3_Msk & ((value) << ADC_SEQR1_USCH3_Pos))) +#define ADC_SEQR1_USCH4_Pos 12 +#define ADC_SEQR1_USCH4_Msk (0xfu << ADC_SEQR1_USCH4_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 4 */ +#define ADC_SEQR1_USCH4(value) ((ADC_SEQR1_USCH4_Msk & ((value) << ADC_SEQR1_USCH4_Pos))) +#define ADC_SEQR1_USCH5_Pos 16 +#define ADC_SEQR1_USCH5_Msk (0xfu << ADC_SEQR1_USCH5_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 5 */ +#define ADC_SEQR1_USCH5(value) ((ADC_SEQR1_USCH5_Msk & ((value) << ADC_SEQR1_USCH5_Pos))) +#define ADC_SEQR1_USCH6_Pos 20 +#define ADC_SEQR1_USCH6_Msk (0xfu << ADC_SEQR1_USCH6_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 6 */ +#define ADC_SEQR1_USCH6(value) ((ADC_SEQR1_USCH6_Msk & ((value) << ADC_SEQR1_USCH6_Pos))) +#define ADC_SEQR1_USCH7_Pos 24 +#define ADC_SEQR1_USCH7_Msk (0xfu << ADC_SEQR1_USCH7_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 7 */ +#define ADC_SEQR1_USCH7(value) ((ADC_SEQR1_USCH7_Msk & ((value) << ADC_SEQR1_USCH7_Pos))) +#define ADC_SEQR1_USCH8_Pos 28 +#define ADC_SEQR1_USCH8_Msk (0xfu << ADC_SEQR1_USCH8_Pos) /**< \brief (ADC_SEQR1) User Sequence Number 8 */ +#define ADC_SEQR1_USCH8(value) ((ADC_SEQR1_USCH8_Msk & ((value) << ADC_SEQR1_USCH8_Pos))) +/* -------- ADC_SEQR2 : (ADC Offset: 0x0C) Channel Sequence Register 2 -------- */ +#define ADC_SEQR2_USCH9_Pos 0 +#define ADC_SEQR2_USCH9_Msk (0xfu << ADC_SEQR2_USCH9_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 9 */ +#define ADC_SEQR2_USCH9(value) ((ADC_SEQR2_USCH9_Msk & ((value) << ADC_SEQR2_USCH9_Pos))) +#define ADC_SEQR2_USCH10_Pos 4 +#define ADC_SEQR2_USCH10_Msk (0xfu << ADC_SEQR2_USCH10_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 10 */ +#define ADC_SEQR2_USCH10(value) ((ADC_SEQR2_USCH10_Msk & ((value) << ADC_SEQR2_USCH10_Pos))) +#define ADC_SEQR2_USCH11_Pos 8 +#define ADC_SEQR2_USCH11_Msk (0xfu << ADC_SEQR2_USCH11_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 11 */ +#define ADC_SEQR2_USCH11(value) ((ADC_SEQR2_USCH11_Msk & ((value) << ADC_SEQR2_USCH11_Pos))) +#define ADC_SEQR2_USCH12_Pos 12 +#define ADC_SEQR2_USCH12_Msk (0xfu << ADC_SEQR2_USCH12_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 12 */ +#define ADC_SEQR2_USCH12(value) ((ADC_SEQR2_USCH12_Msk & ((value) << ADC_SEQR2_USCH12_Pos))) +#define ADC_SEQR2_USCH13_Pos 16 +#define ADC_SEQR2_USCH13_Msk (0xfu << ADC_SEQR2_USCH13_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 13 */ +#define ADC_SEQR2_USCH13(value) ((ADC_SEQR2_USCH13_Msk & ((value) << ADC_SEQR2_USCH13_Pos))) +#define ADC_SEQR2_USCH14_Pos 20 +#define ADC_SEQR2_USCH14_Msk (0xfu << ADC_SEQR2_USCH14_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 14 */ +#define ADC_SEQR2_USCH14(value) ((ADC_SEQR2_USCH14_Msk & ((value) << ADC_SEQR2_USCH14_Pos))) +#define ADC_SEQR2_USCH15_Pos 24 +#define ADC_SEQR2_USCH15_Msk (0xfu << ADC_SEQR2_USCH15_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 15 */ +#define ADC_SEQR2_USCH15(value) ((ADC_SEQR2_USCH15_Msk & ((value) << ADC_SEQR2_USCH15_Pos))) +#define ADC_SEQR2_USCH16_Pos 28 +#define ADC_SEQR2_USCH16_Msk (0xfu << ADC_SEQR2_USCH16_Pos) /**< \brief (ADC_SEQR2) User Sequence Number 16 */ +#define ADC_SEQR2_USCH16(value) ((ADC_SEQR2_USCH16_Msk & ((value) << ADC_SEQR2_USCH16_Pos))) +/* -------- ADC_CHER : (ADC Offset: 0x10) Channel Enable Register -------- */ +#define ADC_CHER_CH0 (0x1u << 0) /**< \brief (ADC_CHER) Channel 0 Enable */ +#define ADC_CHER_CH1 (0x1u << 1) /**< \brief (ADC_CHER) Channel 1 Enable */ +#define ADC_CHER_CH2 (0x1u << 2) /**< \brief (ADC_CHER) Channel 2 Enable */ +#define ADC_CHER_CH3 (0x1u << 3) /**< \brief (ADC_CHER) Channel 3 Enable */ +#define ADC_CHER_CH4 (0x1u << 4) /**< \brief (ADC_CHER) Channel 4 Enable */ +#define ADC_CHER_CH5 (0x1u << 5) /**< \brief (ADC_CHER) Channel 5 Enable */ +#define ADC_CHER_CH6 (0x1u << 6) /**< \brief (ADC_CHER) Channel 6 Enable */ +#define ADC_CHER_CH7 (0x1u << 7) /**< \brief (ADC_CHER) Channel 7 Enable */ +#define ADC_CHER_CH8 (0x1u << 8) /**< \brief (ADC_CHER) Channel 8 Enable */ +#define ADC_CHER_CH9 (0x1u << 9) /**< \brief (ADC_CHER) Channel 9 Enable */ +#define ADC_CHER_CH10 (0x1u << 10) /**< \brief (ADC_CHER) Channel 10 Enable */ +#define ADC_CHER_CH11 (0x1u << 11) /**< \brief (ADC_CHER) Channel 11 Enable */ +#define ADC_CHER_CH12 (0x1u << 12) /**< \brief (ADC_CHER) Channel 12 Enable */ +#define ADC_CHER_CH13 (0x1u << 13) /**< \brief (ADC_CHER) Channel 13 Enable */ +#define ADC_CHER_CH14 (0x1u << 14) /**< \brief (ADC_CHER) Channel 14 Enable */ +#define ADC_CHER_CH15 (0x1u << 15) /**< \brief (ADC_CHER) Channel 15 Enable */ +/* -------- ADC_CHDR : (ADC Offset: 0x14) Channel Disable Register -------- */ +#define ADC_CHDR_CH0 (0x1u << 0) /**< \brief (ADC_CHDR) Channel 0 Disable */ +#define ADC_CHDR_CH1 (0x1u << 1) /**< \brief (ADC_CHDR) Channel 1 Disable */ +#define ADC_CHDR_CH2 (0x1u << 2) /**< \brief (ADC_CHDR) Channel 2 Disable */ +#define ADC_CHDR_CH3 (0x1u << 3) /**< \brief (ADC_CHDR) Channel 3 Disable */ +#define ADC_CHDR_CH4 (0x1u << 4) /**< \brief (ADC_CHDR) Channel 4 Disable */ +#define ADC_CHDR_CH5 (0x1u << 5) /**< \brief (ADC_CHDR) Channel 5 Disable */ +#define ADC_CHDR_CH6 (0x1u << 6) /**< \brief (ADC_CHDR) Channel 6 Disable */ +#define ADC_CHDR_CH7 (0x1u << 7) /**< \brief (ADC_CHDR) Channel 7 Disable */ +#define ADC_CHDR_CH8 (0x1u << 8) /**< \brief (ADC_CHDR) Channel 8 Disable */ +#define ADC_CHDR_CH9 (0x1u << 9) /**< \brief (ADC_CHDR) Channel 9 Disable */ +#define ADC_CHDR_CH10 (0x1u << 10) /**< \brief (ADC_CHDR) Channel 10 Disable */ +#define ADC_CHDR_CH11 (0x1u << 11) /**< \brief (ADC_CHDR) Channel 11 Disable */ +#define ADC_CHDR_CH12 (0x1u << 12) /**< \brief (ADC_CHDR) Channel 12 Disable */ +#define ADC_CHDR_CH13 (0x1u << 13) /**< \brief (ADC_CHDR) Channel 13 Disable */ +#define ADC_CHDR_CH14 (0x1u << 14) /**< \brief (ADC_CHDR) Channel 14 Disable */ +#define ADC_CHDR_CH15 (0x1u << 15) /**< \brief (ADC_CHDR) Channel 15 Disable */ +/* -------- ADC_CHSR : (ADC Offset: 0x18) Channel Status Register -------- */ +#define ADC_CHSR_CH0 (0x1u << 0) /**< \brief (ADC_CHSR) Channel 0 Status */ +#define ADC_CHSR_CH1 (0x1u << 1) /**< \brief (ADC_CHSR) Channel 1 Status */ +#define ADC_CHSR_CH2 (0x1u << 2) /**< \brief (ADC_CHSR) Channel 2 Status */ +#define ADC_CHSR_CH3 (0x1u << 3) /**< \brief (ADC_CHSR) Channel 3 Status */ +#define ADC_CHSR_CH4 (0x1u << 4) /**< \brief (ADC_CHSR) Channel 4 Status */ +#define ADC_CHSR_CH5 (0x1u << 5) /**< \brief (ADC_CHSR) Channel 5 Status */ +#define ADC_CHSR_CH6 (0x1u << 6) /**< \brief (ADC_CHSR) Channel 6 Status */ +#define ADC_CHSR_CH7 (0x1u << 7) /**< \brief (ADC_CHSR) Channel 7 Status */ +#define ADC_CHSR_CH8 (0x1u << 8) /**< \brief (ADC_CHSR) Channel 8 Status */ +#define ADC_CHSR_CH9 (0x1u << 9) /**< \brief (ADC_CHSR) Channel 9 Status */ +#define ADC_CHSR_CH10 (0x1u << 10) /**< \brief (ADC_CHSR) Channel 10 Status */ +#define ADC_CHSR_CH11 (0x1u << 11) /**< \brief (ADC_CHSR) Channel 11 Status */ +#define ADC_CHSR_CH12 (0x1u << 12) /**< \brief (ADC_CHSR) Channel 12 Status */ +#define ADC_CHSR_CH13 (0x1u << 13) /**< \brief (ADC_CHSR) Channel 13 Status */ +#define ADC_CHSR_CH14 (0x1u << 14) /**< \brief (ADC_CHSR) Channel 14 Status */ +#define ADC_CHSR_CH15 (0x1u << 15) /**< \brief (ADC_CHSR) Channel 15 Status */ +/* -------- ADC_LCDR : (ADC Offset: 0x20) Last Converted Data Register -------- */ +#define ADC_LCDR_LDATA_Pos 0 +#define ADC_LCDR_LDATA_Msk (0xfffu << ADC_LCDR_LDATA_Pos) /**< \brief (ADC_LCDR) Last Data Converted */ +#define ADC_LCDR_CHNB_Pos 12 +#define ADC_LCDR_CHNB_Msk (0xfu << ADC_LCDR_CHNB_Pos) /**< \brief (ADC_LCDR) Channel Number */ +/* -------- ADC_IER : (ADC Offset: 0x24) Interrupt Enable Register -------- */ +#define ADC_IER_EOC0 (0x1u << 0) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 0 */ +#define ADC_IER_EOC1 (0x1u << 1) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 1 */ +#define ADC_IER_EOC2 (0x1u << 2) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 2 */ +#define ADC_IER_EOC3 (0x1u << 3) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 3 */ +#define ADC_IER_EOC4 (0x1u << 4) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 4 */ +#define ADC_IER_EOC5 (0x1u << 5) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 5 */ +#define ADC_IER_EOC6 (0x1u << 6) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 6 */ +#define ADC_IER_EOC7 (0x1u << 7) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 7 */ +#define ADC_IER_EOC8 (0x1u << 8) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 8 */ +#define ADC_IER_EOC9 (0x1u << 9) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 9 */ +#define ADC_IER_EOC10 (0x1u << 10) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 10 */ +#define ADC_IER_EOC11 (0x1u << 11) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 11 */ +#define ADC_IER_EOC12 (0x1u << 12) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 12 */ +#define ADC_IER_EOC13 (0x1u << 13) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 13 */ +#define ADC_IER_EOC14 (0x1u << 14) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 14 */ +#define ADC_IER_EOC15 (0x1u << 15) /**< \brief (ADC_IER) End of Conversion Interrupt Enable 15 */ +#define ADC_IER_DRDY (0x1u << 24) /**< \brief (ADC_IER) Data Ready Interrupt Enable */ +#define ADC_IER_GOVRE (0x1u << 25) /**< \brief (ADC_IER) General Overrun Error Interrupt Enable */ +#define ADC_IER_COMPE (0x1u << 26) /**< \brief (ADC_IER) Comparison Event Interrupt Enable */ +#define ADC_IER_ENDRX (0x1u << 27) /**< \brief (ADC_IER) End of Receive Buffer Interrupt Enable */ +#define ADC_IER_RXBUFF (0x1u << 28) /**< \brief (ADC_IER) Receive Buffer Full Interrupt Enable */ +/* -------- ADC_IDR : (ADC Offset: 0x28) Interrupt Disable Register -------- */ +#define ADC_IDR_EOC0 (0x1u << 0) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 0 */ +#define ADC_IDR_EOC1 (0x1u << 1) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 1 */ +#define ADC_IDR_EOC2 (0x1u << 2) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 2 */ +#define ADC_IDR_EOC3 (0x1u << 3) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 3 */ +#define ADC_IDR_EOC4 (0x1u << 4) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 4 */ +#define ADC_IDR_EOC5 (0x1u << 5) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 5 */ +#define ADC_IDR_EOC6 (0x1u << 6) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 6 */ +#define ADC_IDR_EOC7 (0x1u << 7) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 7 */ +#define ADC_IDR_EOC8 (0x1u << 8) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 8 */ +#define ADC_IDR_EOC9 (0x1u << 9) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 9 */ +#define ADC_IDR_EOC10 (0x1u << 10) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 10 */ +#define ADC_IDR_EOC11 (0x1u << 11) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 11 */ +#define ADC_IDR_EOC12 (0x1u << 12) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 12 */ +#define ADC_IDR_EOC13 (0x1u << 13) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 13 */ +#define ADC_IDR_EOC14 (0x1u << 14) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 14 */ +#define ADC_IDR_EOC15 (0x1u << 15) /**< \brief (ADC_IDR) End of Conversion Interrupt Disable 15 */ +#define ADC_IDR_DRDY (0x1u << 24) /**< \brief (ADC_IDR) Data Ready Interrupt Disable */ +#define ADC_IDR_GOVRE (0x1u << 25) /**< \brief (ADC_IDR) General Overrun Error Interrupt Disable */ +#define ADC_IDR_COMPE (0x1u << 26) /**< \brief (ADC_IDR) Comparison Event Interrupt Disable */ +#define ADC_IDR_ENDRX (0x1u << 27) /**< \brief (ADC_IDR) End of Receive Buffer Interrupt Disable */ +#define ADC_IDR_RXBUFF (0x1u << 28) /**< \brief (ADC_IDR) Receive Buffer Full Interrupt Disable */ +/* -------- ADC_IMR : (ADC Offset: 0x2C) Interrupt Mask Register -------- */ +#define ADC_IMR_EOC0 (0x1u << 0) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 0 */ +#define ADC_IMR_EOC1 (0x1u << 1) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 1 */ +#define ADC_IMR_EOC2 (0x1u << 2) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 2 */ +#define ADC_IMR_EOC3 (0x1u << 3) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 3 */ +#define ADC_IMR_EOC4 (0x1u << 4) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 4 */ +#define ADC_IMR_EOC5 (0x1u << 5) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 5 */ +#define ADC_IMR_EOC6 (0x1u << 6) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 6 */ +#define ADC_IMR_EOC7 (0x1u << 7) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 7 */ +#define ADC_IMR_EOC8 (0x1u << 8) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 8 */ +#define ADC_IMR_EOC9 (0x1u << 9) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 9 */ +#define ADC_IMR_EOC10 (0x1u << 10) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 10 */ +#define ADC_IMR_EOC11 (0x1u << 11) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 11 */ +#define ADC_IMR_EOC12 (0x1u << 12) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 12 */ +#define ADC_IMR_EOC13 (0x1u << 13) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 13 */ +#define ADC_IMR_EOC14 (0x1u << 14) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 14 */ +#define ADC_IMR_EOC15 (0x1u << 15) /**< \brief (ADC_IMR) End of Conversion Interrupt Mask 15 */ +#define ADC_IMR_DRDY (0x1u << 24) /**< \brief (ADC_IMR) Data Ready Interrupt Mask */ +#define ADC_IMR_GOVRE (0x1u << 25) /**< \brief (ADC_IMR) General Overrun Error Interrupt Mask */ +#define ADC_IMR_COMPE (0x1u << 26) /**< \brief (ADC_IMR) Comparison Event Interrupt Mask */ +#define ADC_IMR_ENDRX (0x1u << 27) /**< \brief (ADC_IMR) End of Receive Buffer Interrupt Mask */ +#define ADC_IMR_RXBUFF (0x1u << 28) /**< \brief (ADC_IMR) Receive Buffer Full Interrupt Mask */ +/* -------- ADC_ISR : (ADC Offset: 0x30) Interrupt Status Register -------- */ +#define ADC_ISR_EOC0 (0x1u << 0) /**< \brief (ADC_ISR) End of Conversion 0 */ +#define ADC_ISR_EOC1 (0x1u << 1) /**< \brief (ADC_ISR) End of Conversion 1 */ +#define ADC_ISR_EOC2 (0x1u << 2) /**< \brief (ADC_ISR) End of Conversion 2 */ +#define ADC_ISR_EOC3 (0x1u << 3) /**< \brief (ADC_ISR) End of Conversion 3 */ +#define ADC_ISR_EOC4 (0x1u << 4) /**< \brief (ADC_ISR) End of Conversion 4 */ +#define ADC_ISR_EOC5 (0x1u << 5) /**< \brief (ADC_ISR) End of Conversion 5 */ +#define ADC_ISR_EOC6 (0x1u << 6) /**< \brief (ADC_ISR) End of Conversion 6 */ +#define ADC_ISR_EOC7 (0x1u << 7) /**< \brief (ADC_ISR) End of Conversion 7 */ +#define ADC_ISR_EOC8 (0x1u << 8) /**< \brief (ADC_ISR) End of Conversion 8 */ +#define ADC_ISR_EOC9 (0x1u << 9) /**< \brief (ADC_ISR) End of Conversion 9 */ +#define ADC_ISR_EOC10 (0x1u << 10) /**< \brief (ADC_ISR) End of Conversion 10 */ +#define ADC_ISR_EOC11 (0x1u << 11) /**< \brief (ADC_ISR) End of Conversion 11 */ +#define ADC_ISR_EOC12 (0x1u << 12) /**< \brief (ADC_ISR) End of Conversion 12 */ +#define ADC_ISR_EOC13 (0x1u << 13) /**< \brief (ADC_ISR) End of Conversion 13 */ +#define ADC_ISR_EOC14 (0x1u << 14) /**< \brief (ADC_ISR) End of Conversion 14 */ +#define ADC_ISR_EOC15 (0x1u << 15) /**< \brief (ADC_ISR) End of Conversion 15 */ +#define ADC_ISR_DRDY (0x1u << 24) /**< \brief (ADC_ISR) Data Ready */ +#define ADC_ISR_GOVRE (0x1u << 25) /**< \brief (ADC_ISR) General Overrun Error */ +#define ADC_ISR_COMPE (0x1u << 26) /**< \brief (ADC_ISR) Comparison Error */ +#define ADC_ISR_ENDRX (0x1u << 27) /**< \brief (ADC_ISR) End of RX Buffer */ +#define ADC_ISR_RXBUFF (0x1u << 28) /**< \brief (ADC_ISR) RX Buffer Full */ +/* -------- ADC_OVER : (ADC Offset: 0x3C) Overrun Status Register -------- */ +#define ADC_OVER_OVRE0 (0x1u << 0) /**< \brief (ADC_OVER) Overrun Error 0 */ +#define ADC_OVER_OVRE1 (0x1u << 1) /**< \brief (ADC_OVER) Overrun Error 1 */ +#define ADC_OVER_OVRE2 (0x1u << 2) /**< \brief (ADC_OVER) Overrun Error 2 */ +#define ADC_OVER_OVRE3 (0x1u << 3) /**< \brief (ADC_OVER) Overrun Error 3 */ +#define ADC_OVER_OVRE4 (0x1u << 4) /**< \brief (ADC_OVER) Overrun Error 4 */ +#define ADC_OVER_OVRE5 (0x1u << 5) /**< \brief (ADC_OVER) Overrun Error 5 */ +#define ADC_OVER_OVRE6 (0x1u << 6) /**< \brief (ADC_OVER) Overrun Error 6 */ +#define ADC_OVER_OVRE7 (0x1u << 7) /**< \brief (ADC_OVER) Overrun Error 7 */ +#define ADC_OVER_OVRE8 (0x1u << 8) /**< \brief (ADC_OVER) Overrun Error 8 */ +#define ADC_OVER_OVRE9 (0x1u << 9) /**< \brief (ADC_OVER) Overrun Error 9 */ +#define ADC_OVER_OVRE10 (0x1u << 10) /**< \brief (ADC_OVER) Overrun Error 10 */ +#define ADC_OVER_OVRE11 (0x1u << 11) /**< \brief (ADC_OVER) Overrun Error 11 */ +#define ADC_OVER_OVRE12 (0x1u << 12) /**< \brief (ADC_OVER) Overrun Error 12 */ +#define ADC_OVER_OVRE13 (0x1u << 13) /**< \brief (ADC_OVER) Overrun Error 13 */ +#define ADC_OVER_OVRE14 (0x1u << 14) /**< \brief (ADC_OVER) Overrun Error 14 */ +#define ADC_OVER_OVRE15 (0x1u << 15) /**< \brief (ADC_OVER) Overrun Error 15 */ +/* -------- ADC_EMR : (ADC Offset: 0x40) Extended Mode Register -------- */ +#define ADC_EMR_CMPMODE_Pos 0 +#define ADC_EMR_CMPMODE_Msk (0x3u << ADC_EMR_CMPMODE_Pos) /**< \brief (ADC_EMR) Comparison Mode */ +#define ADC_EMR_CMPMODE_LOW (0x0u << 0) /**< \brief (ADC_EMR) Generates an event when the converted data is lower than the low threshold of the window. */ +#define ADC_EMR_CMPMODE_HIGH (0x1u << 0) /**< \brief (ADC_EMR) Generates an event when the converted data is higher than the high threshold of the window. */ +#define ADC_EMR_CMPMODE_IN (0x2u << 0) /**< \brief (ADC_EMR) Generates an event when the converted data is in the comparison window. */ +#define ADC_EMR_CMPMODE_OUT (0x3u << 0) /**< \brief (ADC_EMR) Generates an event when the converted data is out of the comparison window. */ +#define ADC_EMR_CMPSEL_Pos 4 +#define ADC_EMR_CMPSEL_Msk (0xfu << ADC_EMR_CMPSEL_Pos) /**< \brief (ADC_EMR) Comparison Selected Channel */ +#define ADC_EMR_CMPSEL(value) ((ADC_EMR_CMPSEL_Msk & ((value) << ADC_EMR_CMPSEL_Pos))) +#define ADC_EMR_CMPALL (0x1u << 9) /**< \brief (ADC_EMR) Compare All Channels */ +#define ADC_EMR_CMPFILTER_Pos 12 +#define ADC_EMR_CMPFILTER_Msk (0x3u << ADC_EMR_CMPFILTER_Pos) /**< \brief (ADC_EMR) Compare Event Filtering */ +#define ADC_EMR_CMPFILTER(value) ((ADC_EMR_CMPFILTER_Msk & ((value) << ADC_EMR_CMPFILTER_Pos))) +#define ADC_EMR_TAG (0x1u << 24) /**< \brief (ADC_EMR) TAG of ADC_LDCR register */ +/* -------- ADC_CWR : (ADC Offset: 0x44) Compare Window Register -------- */ +#define ADC_CWR_LOWTHRES_Pos 0 +#define ADC_CWR_LOWTHRES_Msk (0xfffu << ADC_CWR_LOWTHRES_Pos) /**< \brief (ADC_CWR) Low Threshold */ +#define ADC_CWR_LOWTHRES(value) ((ADC_CWR_LOWTHRES_Msk & ((value) << ADC_CWR_LOWTHRES_Pos))) +#define ADC_CWR_HIGHTHRES_Pos 16 +#define ADC_CWR_HIGHTHRES_Msk (0xfffu << ADC_CWR_HIGHTHRES_Pos) /**< \brief (ADC_CWR) High Threshold */ +#define ADC_CWR_HIGHTHRES(value) ((ADC_CWR_HIGHTHRES_Msk & ((value) << ADC_CWR_HIGHTHRES_Pos))) +/* -------- ADC_CGR : (ADC Offset: 0x48) Channel Gain Register -------- */ +#define ADC_CGR_GAIN0_Pos 0 +#define ADC_CGR_GAIN0_Msk (0x3u << ADC_CGR_GAIN0_Pos) /**< \brief (ADC_CGR) Gain for channel 0 */ +#define ADC_CGR_GAIN0(value) ((ADC_CGR_GAIN0_Msk & ((value) << ADC_CGR_GAIN0_Pos))) +#define ADC_CGR_GAIN1_Pos 2 +#define ADC_CGR_GAIN1_Msk (0x3u << ADC_CGR_GAIN1_Pos) /**< \brief (ADC_CGR) Gain for channel 1 */ +#define ADC_CGR_GAIN1(value) ((ADC_CGR_GAIN1_Msk & ((value) << ADC_CGR_GAIN1_Pos))) +#define ADC_CGR_GAIN2_Pos 4 +#define ADC_CGR_GAIN2_Msk (0x3u << ADC_CGR_GAIN2_Pos) /**< \brief (ADC_CGR) Gain for channel 2 */ +#define ADC_CGR_GAIN2(value) ((ADC_CGR_GAIN2_Msk & ((value) << ADC_CGR_GAIN2_Pos))) +#define ADC_CGR_GAIN3_Pos 6 +#define ADC_CGR_GAIN3_Msk (0x3u << ADC_CGR_GAIN3_Pos) /**< \brief (ADC_CGR) Gain for channel 3 */ +#define ADC_CGR_GAIN3(value) ((ADC_CGR_GAIN3_Msk & ((value) << ADC_CGR_GAIN3_Pos))) +#define ADC_CGR_GAIN4_Pos 8 +#define ADC_CGR_GAIN4_Msk (0x3u << ADC_CGR_GAIN4_Pos) /**< \brief (ADC_CGR) Gain for channel 4 */ +#define ADC_CGR_GAIN4(value) ((ADC_CGR_GAIN4_Msk & ((value) << ADC_CGR_GAIN4_Pos))) +#define ADC_CGR_GAIN5_Pos 10 +#define ADC_CGR_GAIN5_Msk (0x3u << ADC_CGR_GAIN5_Pos) /**< \brief (ADC_CGR) Gain for channel 5 */ +#define ADC_CGR_GAIN5(value) ((ADC_CGR_GAIN5_Msk & ((value) << ADC_CGR_GAIN5_Pos))) +#define ADC_CGR_GAIN6_Pos 12 +#define ADC_CGR_GAIN6_Msk (0x3u << ADC_CGR_GAIN6_Pos) /**< \brief (ADC_CGR) Gain for channel 6 */ +#define ADC_CGR_GAIN6(value) ((ADC_CGR_GAIN6_Msk & ((value) << ADC_CGR_GAIN6_Pos))) +#define ADC_CGR_GAIN7_Pos 14 +#define ADC_CGR_GAIN7_Msk (0x3u << ADC_CGR_GAIN7_Pos) /**< \brief (ADC_CGR) Gain for channel 7 */ +#define ADC_CGR_GAIN7(value) ((ADC_CGR_GAIN7_Msk & ((value) << ADC_CGR_GAIN7_Pos))) +#define ADC_CGR_GAIN8_Pos 16 +#define ADC_CGR_GAIN8_Msk (0x3u << ADC_CGR_GAIN8_Pos) /**< \brief (ADC_CGR) Gain for channel 8 */ +#define ADC_CGR_GAIN8(value) ((ADC_CGR_GAIN8_Msk & ((value) << ADC_CGR_GAIN8_Pos))) +#define ADC_CGR_GAIN9_Pos 18 +#define ADC_CGR_GAIN9_Msk (0x3u << ADC_CGR_GAIN9_Pos) /**< \brief (ADC_CGR) Gain for channel 9 */ +#define ADC_CGR_GAIN9(value) ((ADC_CGR_GAIN9_Msk & ((value) << ADC_CGR_GAIN9_Pos))) +#define ADC_CGR_GAIN10_Pos 20 +#define ADC_CGR_GAIN10_Msk (0x3u << ADC_CGR_GAIN10_Pos) /**< \brief (ADC_CGR) Gain for channel 10 */ +#define ADC_CGR_GAIN10(value) ((ADC_CGR_GAIN10_Msk & ((value) << ADC_CGR_GAIN10_Pos))) +#define ADC_CGR_GAIN11_Pos 22 +#define ADC_CGR_GAIN11_Msk (0x3u << ADC_CGR_GAIN11_Pos) /**< \brief (ADC_CGR) Gain for channel 11 */ +#define ADC_CGR_GAIN11(value) ((ADC_CGR_GAIN11_Msk & ((value) << ADC_CGR_GAIN11_Pos))) +#define ADC_CGR_GAIN12_Pos 24 +#define ADC_CGR_GAIN12_Msk (0x3u << ADC_CGR_GAIN12_Pos) /**< \brief (ADC_CGR) Gain for channel 12 */ +#define ADC_CGR_GAIN12(value) ((ADC_CGR_GAIN12_Msk & ((value) << ADC_CGR_GAIN12_Pos))) +#define ADC_CGR_GAIN13_Pos 26 +#define ADC_CGR_GAIN13_Msk (0x3u << ADC_CGR_GAIN13_Pos) /**< \brief (ADC_CGR) Gain for channel 13 */ +#define ADC_CGR_GAIN13(value) ((ADC_CGR_GAIN13_Msk & ((value) << ADC_CGR_GAIN13_Pos))) +#define ADC_CGR_GAIN14_Pos 28 +#define ADC_CGR_GAIN14_Msk (0x3u << ADC_CGR_GAIN14_Pos) /**< \brief (ADC_CGR) Gain for channel 14 */ +#define ADC_CGR_GAIN14(value) ((ADC_CGR_GAIN14_Msk & ((value) << ADC_CGR_GAIN14_Pos))) +#define ADC_CGR_GAIN15_Pos 30 +#define ADC_CGR_GAIN15_Msk (0x3u << ADC_CGR_GAIN15_Pos) /**< \brief (ADC_CGR) Gain for channel 15 */ +#define ADC_CGR_GAIN15(value) ((ADC_CGR_GAIN15_Msk & ((value) << ADC_CGR_GAIN15_Pos))) +/* -------- ADC_COR : (ADC Offset: 0x4C) Channel Offset Register -------- */ +#define ADC_COR_OFF0 (0x1u << 0) /**< \brief (ADC_COR) Offset for channel 0 */ +#define ADC_COR_OFF1 (0x1u << 1) /**< \brief (ADC_COR) Offset for channel 1 */ +#define ADC_COR_OFF2 (0x1u << 2) /**< \brief (ADC_COR) Offset for channel 2 */ +#define ADC_COR_OFF3 (0x1u << 3) /**< \brief (ADC_COR) Offset for channel 3 */ +#define ADC_COR_OFF4 (0x1u << 4) /**< \brief (ADC_COR) Offset for channel 4 */ +#define ADC_COR_OFF5 (0x1u << 5) /**< \brief (ADC_COR) Offset for channel 5 */ +#define ADC_COR_OFF6 (0x1u << 6) /**< \brief (ADC_COR) Offset for channel 6 */ +#define ADC_COR_OFF7 (0x1u << 7) /**< \brief (ADC_COR) Offset for channel 7 */ +#define ADC_COR_OFF8 (0x1u << 8) /**< \brief (ADC_COR) Offset for channel 8 */ +#define ADC_COR_OFF9 (0x1u << 9) /**< \brief (ADC_COR) Offset for channel 9 */ +#define ADC_COR_OFF10 (0x1u << 10) /**< \brief (ADC_COR) Offset for channel 10 */ +#define ADC_COR_OFF11 (0x1u << 11) /**< \brief (ADC_COR) Offset for channel 11 */ +#define ADC_COR_OFF12 (0x1u << 12) /**< \brief (ADC_COR) Offset for channel 12 */ +#define ADC_COR_OFF13 (0x1u << 13) /**< \brief (ADC_COR) Offset for channel 13 */ +#define ADC_COR_OFF14 (0x1u << 14) /**< \brief (ADC_COR) Offset for channel 14 */ +#define ADC_COR_OFF15 (0x1u << 15) /**< \brief (ADC_COR) Offset for channel 15 */ +#define ADC_COR_DIFF0 (0x1u << 16) /**< \brief (ADC_COR) Differential inputs for channel 0 */ +#define ADC_COR_DIFF1 (0x1u << 17) /**< \brief (ADC_COR) Differential inputs for channel 1 */ +#define ADC_COR_DIFF2 (0x1u << 18) /**< \brief (ADC_COR) Differential inputs for channel 2 */ +#define ADC_COR_DIFF3 (0x1u << 19) /**< \brief (ADC_COR) Differential inputs for channel 3 */ +#define ADC_COR_DIFF4 (0x1u << 20) /**< \brief (ADC_COR) Differential inputs for channel 4 */ +#define ADC_COR_DIFF5 (0x1u << 21) /**< \brief (ADC_COR) Differential inputs for channel 5 */ +#define ADC_COR_DIFF6 (0x1u << 22) /**< \brief (ADC_COR) Differential inputs for channel 6 */ +#define ADC_COR_DIFF7 (0x1u << 23) /**< \brief (ADC_COR) Differential inputs for channel 7 */ +#define ADC_COR_DIFF8 (0x1u << 24) /**< \brief (ADC_COR) Differential inputs for channel 8 */ +#define ADC_COR_DIFF9 (0x1u << 25) /**< \brief (ADC_COR) Differential inputs for channel 9 */ +#define ADC_COR_DIFF10 (0x1u << 26) /**< \brief (ADC_COR) Differential inputs for channel 10 */ +#define ADC_COR_DIFF11 (0x1u << 27) /**< \brief (ADC_COR) Differential inputs for channel 11 */ +#define ADC_COR_DIFF12 (0x1u << 28) /**< \brief (ADC_COR) Differential inputs for channel 12 */ +#define ADC_COR_DIFF13 (0x1u << 29) /**< \brief (ADC_COR) Differential inputs for channel 13 */ +#define ADC_COR_DIFF14 (0x1u << 30) /**< \brief (ADC_COR) Differential inputs for channel 14 */ +#define ADC_COR_DIFF15 (0x1u << 31) /**< \brief (ADC_COR) Differential inputs for channel 15 */ +/* -------- ADC_CDR[16] : (ADC Offset: 0x50) Channel Data Register -------- */ +#define ADC_CDR_DATA_Pos 0 +#define ADC_CDR_DATA_Msk (0xfffu << ADC_CDR_DATA_Pos) /**< \brief (ADC_CDR[16]) Converted Data */ +/* -------- ADC_ACR : (ADC Offset: 0x94) Analog Control Register -------- */ +#define ADC_ACR_TSON (0x1u << 4) /**< \brief (ADC_ACR) Temperature Sensor On */ +#define ADC_ACR_IBCTL_Pos 8 +#define ADC_ACR_IBCTL_Msk (0x3u << ADC_ACR_IBCTL_Pos) /**< \brief (ADC_ACR) ADC Bias Current Control */ +#define ADC_ACR_IBCTL(value) ((ADC_ACR_IBCTL_Msk & ((value) << ADC_ACR_IBCTL_Pos))) +/* -------- ADC_WPMR : (ADC Offset: 0xE4) Write Protect Mode Register -------- */ +#define ADC_WPMR_WPEN (0x1u << 0) /**< \brief (ADC_WPMR) Write Protect Enable */ +#define ADC_WPMR_WPKEY_Pos 8 +#define ADC_WPMR_WPKEY_Msk (0xffffffu << ADC_WPMR_WPKEY_Pos) /**< \brief (ADC_WPMR) Write Protect KEY */ +#define ADC_WPMR_WPKEY(value) ((ADC_WPMR_WPKEY_Msk & ((value) << ADC_WPMR_WPKEY_Pos))) +/* -------- ADC_WPSR : (ADC Offset: 0xE8) Write Protect Status Register -------- */ +#define ADC_WPSR_WPVS (0x1u << 0) /**< \brief (ADC_WPSR) Write Protect Violation Status */ +#define ADC_WPSR_WPVSRC_Pos 8 +#define ADC_WPSR_WPVSRC_Msk (0xffffu << ADC_WPSR_WPVSRC_Pos) /**< \brief (ADC_WPSR) Write Protect Violation Source */ +/* -------- ADC_RPR : (ADC Offset: 0x100) Receive Pointer Register -------- */ +#define ADC_RPR_RXPTR_Pos 0 +#define ADC_RPR_RXPTR_Msk (0xffffffffu << ADC_RPR_RXPTR_Pos) /**< \brief (ADC_RPR) Receive Pointer Register */ +#define ADC_RPR_RXPTR(value) ((ADC_RPR_RXPTR_Msk & ((value) << ADC_RPR_RXPTR_Pos))) +/* -------- ADC_RCR : (ADC Offset: 0x104) Receive Counter Register -------- */ +#define ADC_RCR_RXCTR_Pos 0 +#define ADC_RCR_RXCTR_Msk (0xffffu << ADC_RCR_RXCTR_Pos) /**< \brief (ADC_RCR) Receive Counter Register */ +#define ADC_RCR_RXCTR(value) ((ADC_RCR_RXCTR_Msk & ((value) << ADC_RCR_RXCTR_Pos))) +/* -------- ADC_TPR : (ADC Offset: 0x108) Transmit Pointer Register -------- */ +#define ADC_TPR_TXPTR_Pos 0 +#define ADC_TPR_TXPTR_Msk (0xffffffffu << ADC_TPR_TXPTR_Pos) /**< \brief (ADC_TPR) Transmit Counter Register */ +#define ADC_TPR_TXPTR(value) ((ADC_TPR_TXPTR_Msk & ((value) << ADC_TPR_TXPTR_Pos))) +/* -------- ADC_TCR : (ADC Offset: 0x10C) Transmit Counter Register -------- */ +#define ADC_TCR_TXCTR_Pos 0 +#define ADC_TCR_TXCTR_Msk (0xffffu << ADC_TCR_TXCTR_Pos) /**< \brief (ADC_TCR) Transmit Counter Register */ +#define ADC_TCR_TXCTR(value) ((ADC_TCR_TXCTR_Msk & ((value) << ADC_TCR_TXCTR_Pos))) +/* -------- ADC_RNPR : (ADC Offset: 0x110) Receive Next Pointer Register -------- */ +#define ADC_RNPR_RXNPTR_Pos 0 +#define ADC_RNPR_RXNPTR_Msk (0xffffffffu << ADC_RNPR_RXNPTR_Pos) /**< \brief (ADC_RNPR) Receive Next Pointer */ +#define ADC_RNPR_RXNPTR(value) ((ADC_RNPR_RXNPTR_Msk & ((value) << ADC_RNPR_RXNPTR_Pos))) +/* -------- ADC_RNCR : (ADC Offset: 0x114) Receive Next Counter Register -------- */ +#define ADC_RNCR_RXNCTR_Pos 0 +#define ADC_RNCR_RXNCTR_Msk (0xffffu << ADC_RNCR_RXNCTR_Pos) /**< \brief (ADC_RNCR) Receive Next Counter */ +#define ADC_RNCR_RXNCTR(value) ((ADC_RNCR_RXNCTR_Msk & ((value) << ADC_RNCR_RXNCTR_Pos))) +/* -------- ADC_TNPR : (ADC Offset: 0x118) Transmit Next Pointer Register -------- */ +#define ADC_TNPR_TXNPTR_Pos 0 +#define ADC_TNPR_TXNPTR_Msk (0xffffffffu << ADC_TNPR_TXNPTR_Pos) /**< \brief (ADC_TNPR) Transmit Next Pointer */ +#define ADC_TNPR_TXNPTR(value) ((ADC_TNPR_TXNPTR_Msk & ((value) << ADC_TNPR_TXNPTR_Pos))) +/* -------- ADC_TNCR : (ADC Offset: 0x11C) Transmit Next Counter Register -------- */ +#define ADC_TNCR_TXNCTR_Pos 0 +#define ADC_TNCR_TXNCTR_Msk (0xffffu << ADC_TNCR_TXNCTR_Pos) /**< \brief (ADC_TNCR) Transmit Counter Next */ +#define ADC_TNCR_TXNCTR(value) ((ADC_TNCR_TXNCTR_Msk & ((value) << ADC_TNCR_TXNCTR_Pos))) +/* -------- ADC_PTCR : (ADC Offset: 0x120) Transfer Control Register -------- */ +#define ADC_PTCR_RXTEN (0x1u << 0) /**< \brief (ADC_PTCR) Receiver Transfer Enable */ +#define ADC_PTCR_RXTDIS (0x1u << 1) /**< \brief (ADC_PTCR) Receiver Transfer Disable */ +#define ADC_PTCR_TXTEN (0x1u << 8) /**< \brief (ADC_PTCR) Transmitter Transfer Enable */ +#define ADC_PTCR_TXTDIS (0x1u << 9) /**< \brief (ADC_PTCR) Transmitter Transfer Disable */ +/* -------- ADC_PTSR : (ADC Offset: 0x124) Transfer Status Register -------- */ +#define ADC_PTSR_RXTEN (0x1u << 0) /**< \brief (ADC_PTSR) Receiver Transfer Enable */ +#define ADC_PTSR_TXTEN (0x1u << 8) /**< \brief (ADC_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3XA_ADC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_can.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_can.h new file mode 100644 index 000000000..de0b80ce9 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_can.h @@ -0,0 +1,309 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_CAN_COMPONENT_ +#define _SAM3XA_CAN_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Controller Area Network */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_CAN Controller Area Network */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief CanMb hardware registers */ +typedef struct { + RwReg CAN_MMR; /**< \brief (CanMb Offset: 0x0) Mailbox Mode Register */ + RwReg CAN_MAM; /**< \brief (CanMb Offset: 0x4) Mailbox Acceptance Mask Register */ + RwReg CAN_MID; /**< \brief (CanMb Offset: 0x8) Mailbox ID Register */ + RwReg CAN_MFID; /**< \brief (CanMb Offset: 0xC) Mailbox Family ID Register */ + RwReg CAN_MSR; /**< \brief (CanMb Offset: 0x10) Mailbox Status Register */ + RwReg CAN_MDL; /**< \brief (CanMb Offset: 0x14) Mailbox Data Low Register */ + RwReg CAN_MDH; /**< \brief (CanMb Offset: 0x18) Mailbox Data High Register */ + RwReg CAN_MCR; /**< \brief (CanMb Offset: 0x1C) Mailbox Control Register */ +} CanMb; +/** \brief Can hardware registers */ +#define CANMB_NUMBER 8 +typedef struct { + RwReg CAN_MR; /**< \brief (Can Offset: 0x0000) Mode Register */ + WoReg CAN_IER; /**< \brief (Can Offset: 0x0004) Interrupt Enable Register */ + WoReg CAN_IDR; /**< \brief (Can Offset: 0x0008) Interrupt Disable Register */ + RoReg CAN_IMR; /**< \brief (Can Offset: 0x000C) Interrupt Mask Register */ + RoReg CAN_SR; /**< \brief (Can Offset: 0x0010) Status Register */ + RwReg CAN_BR; /**< \brief (Can Offset: 0x0014) Baudrate Register */ + RoReg CAN_TIM; /**< \brief (Can Offset: 0x0018) Timer Register */ + RoReg CAN_TIMESTP; /**< \brief (Can Offset: 0x001C) Timestamp Register */ + RoReg CAN_ECR; /**< \brief (Can Offset: 0x0020) Error Counter Register */ + WoReg CAN_TCR; /**< \brief (Can Offset: 0x0024) Transfer Command Register */ + WoReg CAN_ACR; /**< \brief (Can Offset: 0x0028) Abort Command Register */ + RoReg Reserved1[117]; + CanMb CAN_MB[CANMB_NUMBER]; /**< \brief (Can Offset: 0x200) MB = 0 .. 7 */ +} Can; +#endif /* __ASSEMBLY__ */ +/* -------- CAN_MR : (CAN Offset: 0x0000) Mode Register -------- */ +#define CAN_MR_CANEN (0x1u << 0) /**< \brief (CAN_MR) CAN Controller Enable */ +#define CAN_MR_LPM (0x1u << 1) /**< \brief (CAN_MR) Disable/Enable Low Power Mode */ +#define CAN_MR_ABM (0x1u << 2) /**< \brief (CAN_MR) Disable/Enable Autobaud/Listen mode */ +#define CAN_MR_OVL (0x1u << 3) /**< \brief (CAN_MR) Disable/Enable Overload Frame */ +#define CAN_MR_TEOF (0x1u << 4) /**< \brief (CAN_MR) Timestamp messages at each end of Frame */ +#define CAN_MR_TTM (0x1u << 5) /**< \brief (CAN_MR) Disable/Enable Time Triggered Mode */ +#define CAN_MR_TIMFRZ (0x1u << 6) /**< \brief (CAN_MR) Enable Timer Freeze */ +#define CAN_MR_DRPT (0x1u << 7) /**< \brief (CAN_MR) Disable Repeat */ +#define CAN_MR_RXSYNC_Pos 24 +#define CAN_MR_RXSYNC_Msk (0x7u << CAN_MR_RXSYNC_Pos) /**< \brief (CAN_MR) Reception Synchronization Stage (not readable) */ +#define CAN_MR_RXSYNC_DOUBLE_PP (0x0u << 24) /**< \brief (CAN_MR) Rx Signal with Double Synchro Stages (2 Positive Edges) */ +#define CAN_MR_RXSYNC_DOUBLE_PN (0x1u << 24) /**< \brief (CAN_MR) Rx Signal with Double Synchro Stages (One Positive Edge and One Negative Edge) */ +#define CAN_MR_RXSYNC_SINGLE_P (0x2u << 24) /**< \brief (CAN_MR) Rx Signal with Single Synchro Stage (Positive Edge) */ +#define CAN_MR_RXSYNC_NONE (0x3u << 24) /**< \brief (CAN_MR) Rx Signal with No Synchro Stage */ +/* -------- CAN_IER : (CAN Offset: 0x0004) Interrupt Enable Register -------- */ +#define CAN_IER_MB0 (0x1u << 0) /**< \brief (CAN_IER) Mailbox 0 Interrupt Enable */ +#define CAN_IER_MB1 (0x1u << 1) /**< \brief (CAN_IER) Mailbox 1 Interrupt Enable */ +#define CAN_IER_MB2 (0x1u << 2) /**< \brief (CAN_IER) Mailbox 2 Interrupt Enable */ +#define CAN_IER_MB3 (0x1u << 3) /**< \brief (CAN_IER) Mailbox 3 Interrupt Enable */ +#define CAN_IER_MB4 (0x1u << 4) /**< \brief (CAN_IER) Mailbox 4 Interrupt Enable */ +#define CAN_IER_MB5 (0x1u << 5) /**< \brief (CAN_IER) Mailbox 5 Interrupt Enable */ +#define CAN_IER_MB6 (0x1u << 6) /**< \brief (CAN_IER) Mailbox 6 Interrupt Enable */ +#define CAN_IER_MB7 (0x1u << 7) /**< \brief (CAN_IER) Mailbox 7 Interrupt Enable */ +#define CAN_IER_ERRA (0x1u << 16) /**< \brief (CAN_IER) Error Active Mode Interrupt Enable */ +#define CAN_IER_WARN (0x1u << 17) /**< \brief (CAN_IER) Warning Limit Interrupt Enable */ +#define CAN_IER_ERRP (0x1u << 18) /**< \brief (CAN_IER) Error Passive Mode Interrupt Enable */ +#define CAN_IER_BOFF (0x1u << 19) /**< \brief (CAN_IER) Bus Off Mode Interrupt Enable */ +#define CAN_IER_SLEEP (0x1u << 20) /**< \brief (CAN_IER) Sleep Interrupt Enable */ +#define CAN_IER_WAKEUP (0x1u << 21) /**< \brief (CAN_IER) Wakeup Interrupt Enable */ +#define CAN_IER_TOVF (0x1u << 22) /**< \brief (CAN_IER) Timer Overflow Interrupt Enable */ +#define CAN_IER_TSTP (0x1u << 23) /**< \brief (CAN_IER) TimeStamp Interrupt Enable */ +#define CAN_IER_CERR (0x1u << 24) /**< \brief (CAN_IER) CRC Error Interrupt Enable */ +#define CAN_IER_SERR (0x1u << 25) /**< \brief (CAN_IER) Stuffing Error Interrupt Enable */ +#define CAN_IER_AERR (0x1u << 26) /**< \brief (CAN_IER) Acknowledgment Error Interrupt Enable */ +#define CAN_IER_FERR (0x1u << 27) /**< \brief (CAN_IER) Form Error Interrupt Enable */ +#define CAN_IER_BERR (0x1u << 28) /**< \brief (CAN_IER) Bit Error Interrupt Enable */ +/* -------- CAN_IDR : (CAN Offset: 0x0008) Interrupt Disable Register -------- */ +#define CAN_IDR_MB0 (0x1u << 0) /**< \brief (CAN_IDR) Mailbox 0 Interrupt Disable */ +#define CAN_IDR_MB1 (0x1u << 1) /**< \brief (CAN_IDR) Mailbox 1 Interrupt Disable */ +#define CAN_IDR_MB2 (0x1u << 2) /**< \brief (CAN_IDR) Mailbox 2 Interrupt Disable */ +#define CAN_IDR_MB3 (0x1u << 3) /**< \brief (CAN_IDR) Mailbox 3 Interrupt Disable */ +#define CAN_IDR_MB4 (0x1u << 4) /**< \brief (CAN_IDR) Mailbox 4 Interrupt Disable */ +#define CAN_IDR_MB5 (0x1u << 5) /**< \brief (CAN_IDR) Mailbox 5 Interrupt Disable */ +#define CAN_IDR_MB6 (0x1u << 6) /**< \brief (CAN_IDR) Mailbox 6 Interrupt Disable */ +#define CAN_IDR_MB7 (0x1u << 7) /**< \brief (CAN_IDR) Mailbox 7 Interrupt Disable */ +#define CAN_IDR_ERRA (0x1u << 16) /**< \brief (CAN_IDR) Error Active Mode Interrupt Disable */ +#define CAN_IDR_WARN (0x1u << 17) /**< \brief (CAN_IDR) Warning Limit Interrupt Disable */ +#define CAN_IDR_ERRP (0x1u << 18) /**< \brief (CAN_IDR) Error Passive Mode Interrupt Disable */ +#define CAN_IDR_BOFF (0x1u << 19) /**< \brief (CAN_IDR) Bus Off Mode Interrupt Disable */ +#define CAN_IDR_SLEEP (0x1u << 20) /**< \brief (CAN_IDR) Sleep Interrupt Disable */ +#define CAN_IDR_WAKEUP (0x1u << 21) /**< \brief (CAN_IDR) Wakeup Interrupt Disable */ +#define CAN_IDR_TOVF (0x1u << 22) /**< \brief (CAN_IDR) Timer Overflow Interrupt */ +#define CAN_IDR_TSTP (0x1u << 23) /**< \brief (CAN_IDR) TimeStamp Interrupt Disable */ +#define CAN_IDR_CERR (0x1u << 24) /**< \brief (CAN_IDR) CRC Error Interrupt Disable */ +#define CAN_IDR_SERR (0x1u << 25) /**< \brief (CAN_IDR) Stuffing Error Interrupt Disable */ +#define CAN_IDR_AERR (0x1u << 26) /**< \brief (CAN_IDR) Acknowledgment Error Interrupt Disable */ +#define CAN_IDR_FERR (0x1u << 27) /**< \brief (CAN_IDR) Form Error Interrupt Disable */ +#define CAN_IDR_BERR (0x1u << 28) /**< \brief (CAN_IDR) Bit Error Interrupt Disable */ +/* -------- CAN_IMR : (CAN Offset: 0x000C) Interrupt Mask Register -------- */ +#define CAN_IMR_MB0 (0x1u << 0) /**< \brief (CAN_IMR) Mailbox 0 Interrupt Mask */ +#define CAN_IMR_MB1 (0x1u << 1) /**< \brief (CAN_IMR) Mailbox 1 Interrupt Mask */ +#define CAN_IMR_MB2 (0x1u << 2) /**< \brief (CAN_IMR) Mailbox 2 Interrupt Mask */ +#define CAN_IMR_MB3 (0x1u << 3) /**< \brief (CAN_IMR) Mailbox 3 Interrupt Mask */ +#define CAN_IMR_MB4 (0x1u << 4) /**< \brief (CAN_IMR) Mailbox 4 Interrupt Mask */ +#define CAN_IMR_MB5 (0x1u << 5) /**< \brief (CAN_IMR) Mailbox 5 Interrupt Mask */ +#define CAN_IMR_MB6 (0x1u << 6) /**< \brief (CAN_IMR) Mailbox 6 Interrupt Mask */ +#define CAN_IMR_MB7 (0x1u << 7) /**< \brief (CAN_IMR) Mailbox 7 Interrupt Mask */ +#define CAN_IMR_ERRA (0x1u << 16) /**< \brief (CAN_IMR) Error Active Mode Interrupt Mask */ +#define CAN_IMR_WARN (0x1u << 17) /**< \brief (CAN_IMR) Warning Limit Interrupt Mask */ +#define CAN_IMR_ERRP (0x1u << 18) /**< \brief (CAN_IMR) Error Passive Mode Interrupt Mask */ +#define CAN_IMR_BOFF (0x1u << 19) /**< \brief (CAN_IMR) Bus Off Mode Interrupt Mask */ +#define CAN_IMR_SLEEP (0x1u << 20) /**< \brief (CAN_IMR) Sleep Interrupt Mask */ +#define CAN_IMR_WAKEUP (0x1u << 21) /**< \brief (CAN_IMR) Wakeup Interrupt Mask */ +#define CAN_IMR_TOVF (0x1u << 22) /**< \brief (CAN_IMR) Timer Overflow Interrupt Mask */ +#define CAN_IMR_TSTP (0x1u << 23) /**< \brief (CAN_IMR) Timestamp Interrupt Mask */ +#define CAN_IMR_CERR (0x1u << 24) /**< \brief (CAN_IMR) CRC Error Interrupt Mask */ +#define CAN_IMR_SERR (0x1u << 25) /**< \brief (CAN_IMR) Stuffing Error Interrupt Mask */ +#define CAN_IMR_AERR (0x1u << 26) /**< \brief (CAN_IMR) Acknowledgment Error Interrupt Mask */ +#define CAN_IMR_FERR (0x1u << 27) /**< \brief (CAN_IMR) Form Error Interrupt Mask */ +#define CAN_IMR_BERR (0x1u << 28) /**< \brief (CAN_IMR) Bit Error Interrupt Mask */ +/* -------- CAN_SR : (CAN Offset: 0x0010) Status Register -------- */ +#define CAN_SR_MB0 (0x1u << 0) /**< \brief (CAN_SR) Mailbox 0 Event */ +#define CAN_SR_MB1 (0x1u << 1) /**< \brief (CAN_SR) Mailbox 1 Event */ +#define CAN_SR_MB2 (0x1u << 2) /**< \brief (CAN_SR) Mailbox 2 Event */ +#define CAN_SR_MB3 (0x1u << 3) /**< \brief (CAN_SR) Mailbox 3 Event */ +#define CAN_SR_MB4 (0x1u << 4) /**< \brief (CAN_SR) Mailbox 4 Event */ +#define CAN_SR_MB5 (0x1u << 5) /**< \brief (CAN_SR) Mailbox 5 Event */ +#define CAN_SR_MB6 (0x1u << 6) /**< \brief (CAN_SR) Mailbox 6 Event */ +#define CAN_SR_MB7 (0x1u << 7) /**< \brief (CAN_SR) Mailbox 7 Event */ +#define CAN_SR_ERRA (0x1u << 16) /**< \brief (CAN_SR) Error Active Mode */ +#define CAN_SR_WARN (0x1u << 17) /**< \brief (CAN_SR) Warning Limit */ +#define CAN_SR_ERRP (0x1u << 18) /**< \brief (CAN_SR) Error Passive Mode */ +#define CAN_SR_BOFF (0x1u << 19) /**< \brief (CAN_SR) Bus Off Mode */ +#define CAN_SR_SLEEP (0x1u << 20) /**< \brief (CAN_SR) CAN controller in Low power Mode */ +#define CAN_SR_WAKEUP (0x1u << 21) /**< \brief (CAN_SR) CAN controller is not in Low power Mode */ +#define CAN_SR_TOVF (0x1u << 22) /**< \brief (CAN_SR) Timer Overflow */ +#define CAN_SR_TSTP (0x1u << 23) /**< \brief (CAN_SR) */ +#define CAN_SR_CERR (0x1u << 24) /**< \brief (CAN_SR) Mailbox CRC Error */ +#define CAN_SR_SERR (0x1u << 25) /**< \brief (CAN_SR) Mailbox Stuffing Error */ +#define CAN_SR_AERR (0x1u << 26) /**< \brief (CAN_SR) Acknowledgment Error */ +#define CAN_SR_FERR (0x1u << 27) /**< \brief (CAN_SR) Form Error */ +#define CAN_SR_BERR (0x1u << 28) /**< \brief (CAN_SR) Bit Error */ +#define CAN_SR_RBSY (0x1u << 29) /**< \brief (CAN_SR) Receiver busy */ +#define CAN_SR_TBSY (0x1u << 30) /**< \brief (CAN_SR) Transmitter busy */ +#define CAN_SR_OVLSY (0x1u << 31) /**< \brief (CAN_SR) Overload busy */ +/* -------- CAN_BR : (CAN Offset: 0x0014) Baudrate Register -------- */ +#define CAN_BR_PHASE2_Pos 0 +#define CAN_BR_PHASE2_Msk (0x7u << CAN_BR_PHASE2_Pos) /**< \brief (CAN_BR) Phase 2 segment */ +#define CAN_BR_PHASE2(value) ((CAN_BR_PHASE2_Msk & ((value) << CAN_BR_PHASE2_Pos))) +#define CAN_BR_PHASE1_Pos 4 +#define CAN_BR_PHASE1_Msk (0x7u << CAN_BR_PHASE1_Pos) /**< \brief (CAN_BR) Phase 1 segment */ +#define CAN_BR_PHASE1(value) ((CAN_BR_PHASE1_Msk & ((value) << CAN_BR_PHASE1_Pos))) +#define CAN_BR_PROPAG_Pos 8 +#define CAN_BR_PROPAG_Msk (0x7u << CAN_BR_PROPAG_Pos) /**< \brief (CAN_BR) Programming time segment */ +#define CAN_BR_PROPAG(value) ((CAN_BR_PROPAG_Msk & ((value) << CAN_BR_PROPAG_Pos))) +#define CAN_BR_SJW_Pos 12 +#define CAN_BR_SJW_Msk (0x3u << CAN_BR_SJW_Pos) /**< \brief (CAN_BR) Re-synchronization jump width */ +#define CAN_BR_SJW(value) ((CAN_BR_SJW_Msk & ((value) << CAN_BR_SJW_Pos))) +#define CAN_BR_BRP_Pos 16 +#define CAN_BR_BRP_Msk (0x7fu << CAN_BR_BRP_Pos) /**< \brief (CAN_BR) Baudrate Prescaler. */ +#define CAN_BR_BRP(value) ((CAN_BR_BRP_Msk & ((value) << CAN_BR_BRP_Pos))) +#define CAN_BR_SMP (0x1u << 24) /**< \brief (CAN_BR) Sampling Mode */ +#define CAN_BR_SMP_ONCE (0x0u << 24) /**< \brief (CAN_BR) The incoming bit stream is sampled once at sample point. */ +#define CAN_BR_SMP_THREE (0x1u << 24) /**< \brief (CAN_BR) The incoming bit stream is sampled three times with a period of a MCK clock period, centered on sample point. */ +/* -------- CAN_TIM : (CAN Offset: 0x0018) Timer Register -------- */ +#define CAN_TIM_TIMER0 (0x1u << 0) /**< \brief (CAN_TIM) Timer */ +#define CAN_TIM_TIMER1 (0x1u << 1) /**< \brief (CAN_TIM) Timer */ +#define CAN_TIM_TIMER2 (0x1u << 2) /**< \brief (CAN_TIM) Timer */ +#define CAN_TIM_TIMER3 (0x1u << 3) /**< \brief (CAN_TIM) Timer */ +#define CAN_TIM_TIMER4 (0x1u << 4) /**< \brief (CAN_TIM) Timer */ +#define CAN_TIM_TIMER5 (0x1u << 5) /**< \brief (CAN_TIM) Timer */ +#define CAN_TIM_TIMER6 (0x1u << 6) /**< \brief (CAN_TIM) Timer */ +#define CAN_TIM_TIMER7 (0x1u << 7) /**< \brief (CAN_TIM) Timer */ +/* -------- CAN_TIMESTP : (CAN Offset: 0x001C) Timestamp Register -------- */ +#define CAN_TIMESTP_MTIMESTAMP0 (0x1u << 0) /**< \brief (CAN_TIMESTP) Timestamp */ +#define CAN_TIMESTP_MTIMESTAMP1 (0x1u << 1) /**< \brief (CAN_TIMESTP) Timestamp */ +#define CAN_TIMESTP_MTIMESTAMP2 (0x1u << 2) /**< \brief (CAN_TIMESTP) Timestamp */ +#define CAN_TIMESTP_MTIMESTAMP3 (0x1u << 3) /**< \brief (CAN_TIMESTP) Timestamp */ +#define CAN_TIMESTP_MTIMESTAMP4 (0x1u << 4) /**< \brief (CAN_TIMESTP) Timestamp */ +#define CAN_TIMESTP_MTIMESTAMP5 (0x1u << 5) /**< \brief (CAN_TIMESTP) Timestamp */ +#define CAN_TIMESTP_MTIMESTAMP6 (0x1u << 6) /**< \brief (CAN_TIMESTP) Timestamp */ +#define CAN_TIMESTP_MTIMESTAMP7 (0x1u << 7) /**< \brief (CAN_TIMESTP) Timestamp */ +/* -------- CAN_ECR : (CAN Offset: 0x0020) Error Counter Register -------- */ +#define CAN_ECR_REC_Pos 0 +#define CAN_ECR_REC_Msk (0xffu << CAN_ECR_REC_Pos) /**< \brief (CAN_ECR) Receive Error Counter */ +#define CAN_ECR_TEC_Pos 16 +#define CAN_ECR_TEC_Msk (0xffu << CAN_ECR_TEC_Pos) /**< \brief (CAN_ECR) Transmit Error Counter */ +/* -------- CAN_TCR : (CAN Offset: 0x0024) Transfer Command Register -------- */ +#define CAN_TCR_MB0 (0x1u << 0) /**< \brief (CAN_TCR) Transfer Request for Mailbox 0 */ +#define CAN_TCR_MB1 (0x1u << 1) /**< \brief (CAN_TCR) Transfer Request for Mailbox 1 */ +#define CAN_TCR_MB2 (0x1u << 2) /**< \brief (CAN_TCR) Transfer Request for Mailbox 2 */ +#define CAN_TCR_MB3 (0x1u << 3) /**< \brief (CAN_TCR) Transfer Request for Mailbox 3 */ +#define CAN_TCR_MB4 (0x1u << 4) /**< \brief (CAN_TCR) Transfer Request for Mailbox 4 */ +#define CAN_TCR_MB5 (0x1u << 5) /**< \brief (CAN_TCR) Transfer Request for Mailbox 5 */ +#define CAN_TCR_MB6 (0x1u << 6) /**< \brief (CAN_TCR) Transfer Request for Mailbox 6 */ +#define CAN_TCR_MB7 (0x1u << 7) /**< \brief (CAN_TCR) Transfer Request for Mailbox 7 */ +#define CAN_TCR_TIMRST (0x1u << 31) /**< \brief (CAN_TCR) Timer Reset */ +/* -------- CAN_ACR : (CAN Offset: 0x0028) Abort Command Register -------- */ +#define CAN_ACR_MB0 (0x1u << 0) /**< \brief (CAN_ACR) Abort Request for Mailbox 0 */ +#define CAN_ACR_MB1 (0x1u << 1) /**< \brief (CAN_ACR) Abort Request for Mailbox 1 */ +#define CAN_ACR_MB2 (0x1u << 2) /**< \brief (CAN_ACR) Abort Request for Mailbox 2 */ +#define CAN_ACR_MB3 (0x1u << 3) /**< \brief (CAN_ACR) Abort Request for Mailbox 3 */ +#define CAN_ACR_MB4 (0x1u << 4) /**< \brief (CAN_ACR) Abort Request for Mailbox 4 */ +#define CAN_ACR_MB5 (0x1u << 5) /**< \brief (CAN_ACR) Abort Request for Mailbox 5 */ +#define CAN_ACR_MB6 (0x1u << 6) /**< \brief (CAN_ACR) Abort Request for Mailbox 6 */ +#define CAN_ACR_MB7 (0x1u << 7) /**< \brief (CAN_ACR) Abort Request for Mailbox 7 */ +/* -------- CAN_MMR : (CAN Offset: N/A) Mailbox Mode Register -------- */ +#define CAN_MMR_MTIMEMARK0 (0x1u << 0) /**< \brief (CAN_MMR) Mailbox Timemark */ +#define CAN_MMR_MTIMEMARK1 (0x1u << 1) /**< \brief (CAN_MMR) Mailbox Timemark */ +#define CAN_MMR_MTIMEMARK2 (0x1u << 2) /**< \brief (CAN_MMR) Mailbox Timemark */ +#define CAN_MMR_MTIMEMARK3 (0x1u << 3) /**< \brief (CAN_MMR) Mailbox Timemark */ +#define CAN_MMR_MTIMEMARK4 (0x1u << 4) /**< \brief (CAN_MMR) Mailbox Timemark */ +#define CAN_MMR_MTIMEMARK5 (0x1u << 5) /**< \brief (CAN_MMR) Mailbox Timemark */ +#define CAN_MMR_MTIMEMARK6 (0x1u << 6) /**< \brief (CAN_MMR) Mailbox Timemark */ +#define CAN_MMR_MTIMEMARK7 (0x1u << 7) /**< \brief (CAN_MMR) Mailbox Timemark */ +#define CAN_MMR_PRIOR_Pos 16 +#define CAN_MMR_PRIOR_Msk (0xfu << CAN_MMR_PRIOR_Pos) /**< \brief (CAN_MMR) Mailbox Priority */ +#define CAN_MMR_PRIOR(value) ((CAN_MMR_PRIOR_Msk & ((value) << CAN_MMR_PRIOR_Pos))) +#define CAN_MMR_MOT_Pos 24 +#define CAN_MMR_MOT_Msk (0x7u << CAN_MMR_MOT_Pos) /**< \brief (CAN_MMR) Mailbox Object Type */ +#define CAN_MMR_MOT_MB_DISABLED (0x0u << 24) /**< \brief (CAN_MMR) Mailbox is disabled. This prevents receiving or transmitting any messages with this mailbox. */ +#define CAN_MMR_MOT_MB_RX (0x1u << 24) /**< \brief (CAN_MMR) Reception Mailbox. Mailbox is configured for reception. If a message is received while the mailbox data register is full, it is discarded. */ +#define CAN_MMR_MOT_MB_RX_OVERWRITE (0x2u << 24) /**< \brief (CAN_MMR) Reception mailbox with overwrite. Mailbox is configured for reception. If a message is received while the mailbox is full, it overwrites the previous message. */ +#define CAN_MMR_MOT_MB_TX (0x3u << 24) /**< \brief (CAN_MMR) Transmit mailbox. Mailbox is configured for transmission. */ +#define CAN_MMR_MOT_MB_CONSUMER (0x4u << 24) /**< \brief (CAN_MMR) Consumer Mailbox. Mailbox is configured in reception but behaves as a Transmit Mailbox, i.e., it sends a remote frame and waits for an answer. */ +#define CAN_MMR_MOT_MB_PRODUCER (0x5u << 24) /**< \brief (CAN_MMR) Producer Mailbox. Mailbox is configured in transmission but also behaves like a reception mailbox, i.e., it waits to receive a Remote Frame before sending its contents. */ +/* -------- CAN_MAM : (CAN Offset: N/A) Mailbox Acceptance Mask Register -------- */ +#define CAN_MAM_MIDvB_Pos 0 +#define CAN_MAM_MIDvB_Msk (0x3ffffu << CAN_MAM_MIDvB_Pos) /**< \brief (CAN_MAM) Complementary bits for identifier in extended frame mode */ +#define CAN_MAM_MIDvB(value) ((CAN_MAM_MIDvB_Msk & ((value) << CAN_MAM_MIDvB_Pos))) +#define CAN_MAM_MIDvA_Pos 18 +#define CAN_MAM_MIDvA_Msk (0x7ffu << CAN_MAM_MIDvA_Pos) /**< \brief (CAN_MAM) Identifier for standard frame mode */ +#define CAN_MAM_MIDvA(value) ((CAN_MAM_MIDvA_Msk & ((value) << CAN_MAM_MIDvA_Pos))) +#define CAN_MAM_MIDE (0x1u << 29) /**< \brief (CAN_MAM) Identifier Version */ +/* -------- CAN_MID : (CAN Offset: N/A) Mailbox ID Register -------- */ +#define CAN_MID_MIDvB_Pos 0 +#define CAN_MID_MIDvB_Msk (0x3ffffu << CAN_MID_MIDvB_Pos) /**< \brief (CAN_MID) Complementary bits for identifier in extended frame mode */ +#define CAN_MID_MIDvB(value) ((CAN_MID_MIDvB_Msk & ((value) << CAN_MID_MIDvB_Pos))) +#define CAN_MID_MIDvA_Pos 18 +#define CAN_MID_MIDvA_Msk (0x7ffu << CAN_MID_MIDvA_Pos) /**< \brief (CAN_MID) Identifier for standard frame mode */ +#define CAN_MID_MIDvA(value) ((CAN_MID_MIDvA_Msk & ((value) << CAN_MID_MIDvA_Pos))) +#define CAN_MID_MIDE (0x1u << 29) /**< \brief (CAN_MID) Identifier Version */ +/* -------- CAN_MFID : (CAN Offset: N/A) Mailbox Family ID Register -------- */ +#define CAN_MFID_MFID_Pos 0 +#define CAN_MFID_MFID_Msk (0x1fffffffu << CAN_MFID_MFID_Pos) /**< \brief (CAN_MFID) Family ID */ +/* -------- CAN_MSR : (CAN Offset: N/A) Mailbox Status Register -------- */ +#define CAN_MSR_MTIMESTAMP0 (0x1u << 0) /**< \brief (CAN_MSR) Timer value */ +#define CAN_MSR_MTIMESTAMP1 (0x1u << 1) /**< \brief (CAN_MSR) Timer value */ +#define CAN_MSR_MTIMESTAMP2 (0x1u << 2) /**< \brief (CAN_MSR) Timer value */ +#define CAN_MSR_MTIMESTAMP3 (0x1u << 3) /**< \brief (CAN_MSR) Timer value */ +#define CAN_MSR_MTIMESTAMP4 (0x1u << 4) /**< \brief (CAN_MSR) Timer value */ +#define CAN_MSR_MTIMESTAMP5 (0x1u << 5) /**< \brief (CAN_MSR) Timer value */ +#define CAN_MSR_MTIMESTAMP6 (0x1u << 6) /**< \brief (CAN_MSR) Timer value */ +#define CAN_MSR_MTIMESTAMP7 (0x1u << 7) /**< \brief (CAN_MSR) Timer value */ +#define CAN_MSR_MDLC_Pos 16 +#define CAN_MSR_MDLC_Msk (0xfu << CAN_MSR_MDLC_Pos) /**< \brief (CAN_MSR) Mailbox Data Length Code */ +#define CAN_MSR_MRTR (0x1u << 20) /**< \brief (CAN_MSR) Mailbox Remote Transmission Request */ +#define CAN_MSR_MABT (0x1u << 22) /**< \brief (CAN_MSR) Mailbox Message Abort */ +#define CAN_MSR_MRDY (0x1u << 23) /**< \brief (CAN_MSR) Mailbox Ready */ +#define CAN_MSR_MMI (0x1u << 24) /**< \brief (CAN_MSR) Mailbox Message Ignored */ +/* -------- CAN_MDL : (CAN Offset: N/A) Mailbox Data Low Register -------- */ +#define CAN_MDL_MDL_Pos 0 +#define CAN_MDL_MDL_Msk (0xffffffffu << CAN_MDL_MDL_Pos) /**< \brief (CAN_MDL) Message Data Low Value */ +#define CAN_MDL_MDL(value) ((CAN_MDL_MDL_Msk & ((value) << CAN_MDL_MDL_Pos))) +/* -------- CAN_MDH : (CAN Offset: N/A) Mailbox Data High Register -------- */ +#define CAN_MDH_MDH_Pos 0 +#define CAN_MDH_MDH_Msk (0xffffffffu << CAN_MDH_MDH_Pos) /**< \brief (CAN_MDH) Message Data High Value */ +#define CAN_MDH_MDH(value) ((CAN_MDH_MDH_Msk & ((value) << CAN_MDH_MDH_Pos))) +/* -------- CAN_MCR : (CAN Offset: N/A) Mailbox Control Register -------- */ +#define CAN_MCR_MDLC_Pos 16 +#define CAN_MCR_MDLC_Msk (0xfu << CAN_MCR_MDLC_Pos) /**< \brief (CAN_MCR) Mailbox Data Length Code */ +#define CAN_MCR_MDLC(value) ((CAN_MCR_MDLC_Msk & ((value) << CAN_MCR_MDLC_Pos))) +#define CAN_MCR_MRTR (0x1u << 20) /**< \brief (CAN_MCR) Mailbox Remote Transmission Request */ +#define CAN_MCR_MACR (0x1u << 22) /**< \brief (CAN_MCR) Abort Request for Mailbox x */ +#define CAN_MCR_MTCR (0x1u << 23) /**< \brief (CAN_MCR) Mailbox Transfer Command */ + +/*@}*/ + + +#endif /* _SAM3XA_CAN_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_chipid.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_chipid.h new file mode 100644 index 000000000..16bb3659a --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_chipid.h @@ -0,0 +1,159 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_CHIPID_COMPONENT_ +#define _SAM3XA_CHIPID_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Chip Identifier */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_CHIPID Chip Identifier */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Chipid hardware registers */ +typedef struct { + RoReg CHIPID_CIDR; /**< \brief (Chipid Offset: 0x0) Chip ID Register */ + RoReg CHIPID_EXID; /**< \brief (Chipid Offset: 0x4) Chip ID Extension Register */ +} Chipid; +#endif /* __ASSEMBLY__ */ +/* -------- CHIPID_CIDR : (CHIPID Offset: 0x0) Chip ID Register -------- */ +#define CHIPID_CIDR_VERSION_Pos 0 +#define CHIPID_CIDR_VERSION_Msk (0x1fu << CHIPID_CIDR_VERSION_Pos) /**< \brief (CHIPID_CIDR) Version of the Device */ +#define CHIPID_CIDR_EPROC_Pos 5 +#define CHIPID_CIDR_EPROC_Msk (0x7u << CHIPID_CIDR_EPROC_Pos) /**< \brief (CHIPID_CIDR) Embedded Processor */ +#define CHIPID_CIDR_EPROC_ARM946ES (0x1u << 5) /**< \brief (CHIPID_CIDR) ARM946ES */ +#define CHIPID_CIDR_EPROC_ARM7TDMI (0x2u << 5) /**< \brief (CHIPID_CIDR) ARM7TDMI */ +#define CHIPID_CIDR_EPROC_CM3 (0x3u << 5) /**< \brief (CHIPID_CIDR) Cortex-M3 */ +#define CHIPID_CIDR_EPROC_ARM920T (0x4u << 5) /**< \brief (CHIPID_CIDR) ARM920T */ +#define CHIPID_CIDR_EPROC_ARM926EJS (0x5u << 5) /**< \brief (CHIPID_CIDR) ARM926EJS */ +#define CHIPID_CIDR_EPROC_CA5 (0x6u << 5) /**< \brief (CHIPID_CIDR) Cortex-A5 */ +#define CHIPID_CIDR_EPROC_CM4 (0x7u << 5) /**< \brief (CHIPID_CIDR) Cortex-M4 */ +#define CHIPID_CIDR_NVPSIZ_Pos 8 +#define CHIPID_CIDR_NVPSIZ_Msk (0xfu << CHIPID_CIDR_NVPSIZ_Pos) /**< \brief (CHIPID_CIDR) Nonvolatile Program Memory Size */ +#define CHIPID_CIDR_NVPSIZ_NONE (0x0u << 8) /**< \brief (CHIPID_CIDR) None */ +#define CHIPID_CIDR_NVPSIZ_8K (0x1u << 8) /**< \brief (CHIPID_CIDR) 8K bytes */ +#define CHIPID_CIDR_NVPSIZ_16K (0x2u << 8) /**< \brief (CHIPID_CIDR) 16K bytes */ +#define CHIPID_CIDR_NVPSIZ_32K (0x3u << 8) /**< \brief (CHIPID_CIDR) 32K bytes */ +#define CHIPID_CIDR_NVPSIZ_64K (0x5u << 8) /**< \brief (CHIPID_CIDR) 64K bytes */ +#define CHIPID_CIDR_NVPSIZ_128K (0x7u << 8) /**< \brief (CHIPID_CIDR) 128K bytes */ +#define CHIPID_CIDR_NVPSIZ_256K (0x9u << 8) /**< \brief (CHIPID_CIDR) 256K bytes */ +#define CHIPID_CIDR_NVPSIZ_512K (0xAu << 8) /**< \brief (CHIPID_CIDR) 512K bytes */ +#define CHIPID_CIDR_NVPSIZ_1024K (0xCu << 8) /**< \brief (CHIPID_CIDR) 1024K bytes */ +#define CHIPID_CIDR_NVPSIZ_2048K (0xEu << 8) /**< \brief (CHIPID_CIDR) 2048K bytes */ +#define CHIPID_CIDR_NVPSIZ2_Pos 12 +#define CHIPID_CIDR_NVPSIZ2_Msk (0xfu << CHIPID_CIDR_NVPSIZ2_Pos) /**< \brief (CHIPID_CIDR) Second Nonvolatile Program Memory Size */ +#define CHIPID_CIDR_NVPSIZ2_NONE (0x0u << 12) /**< \brief (CHIPID_CIDR) None */ +#define CHIPID_CIDR_NVPSIZ2_8K (0x1u << 12) /**< \brief (CHIPID_CIDR) 8K bytes */ +#define CHIPID_CIDR_NVPSIZ2_16K (0x2u << 12) /**< \brief (CHIPID_CIDR) 16K bytes */ +#define CHIPID_CIDR_NVPSIZ2_32K (0x3u << 12) /**< \brief (CHIPID_CIDR) 32K bytes */ +#define CHIPID_CIDR_NVPSIZ2_64K (0x5u << 12) /**< \brief (CHIPID_CIDR) 64K bytes */ +#define CHIPID_CIDR_NVPSIZ2_128K (0x7u << 12) /**< \brief (CHIPID_CIDR) 128K bytes */ +#define CHIPID_CIDR_NVPSIZ2_256K (0x9u << 12) /**< \brief (CHIPID_CIDR) 256K bytes */ +#define CHIPID_CIDR_NVPSIZ2_512K (0xAu << 12) /**< \brief (CHIPID_CIDR) 512K bytes */ +#define CHIPID_CIDR_NVPSIZ2_1024K (0xCu << 12) /**< \brief (CHIPID_CIDR) 1024K bytes */ +#define CHIPID_CIDR_NVPSIZ2_2048K (0xEu << 12) /**< \brief (CHIPID_CIDR) 2048K bytes */ +#define CHIPID_CIDR_SRAMSIZ_Pos 16 +#define CHIPID_CIDR_SRAMSIZ_Msk (0xfu << CHIPID_CIDR_SRAMSIZ_Pos) /**< \brief (CHIPID_CIDR) Internal SRAM Size */ +#define CHIPID_CIDR_SRAMSIZ_48K (0x0u << 16) /**< \brief (CHIPID_CIDR) 48K bytes */ +#define CHIPID_CIDR_SRAMSIZ_1K (0x1u << 16) /**< \brief (CHIPID_CIDR) 1K bytes */ +#define CHIPID_CIDR_SRAMSIZ_2K (0x2u << 16) /**< \brief (CHIPID_CIDR) 2K bytes */ +#define CHIPID_CIDR_SRAMSIZ_6K (0x3u << 16) /**< \brief (CHIPID_CIDR) 6K bytes */ +#define CHIPID_CIDR_SRAMSIZ_24K (0x4u << 16) /**< \brief (CHIPID_CIDR) 24K bytes */ +#define CHIPID_CIDR_SRAMSIZ_4K (0x5u << 16) /**< \brief (CHIPID_CIDR) 4K bytes */ +#define CHIPID_CIDR_SRAMSIZ_80K (0x6u << 16) /**< \brief (CHIPID_CIDR) 80K bytes */ +#define CHIPID_CIDR_SRAMSIZ_160K (0x7u << 16) /**< \brief (CHIPID_CIDR) 160K bytes */ +#define CHIPID_CIDR_SRAMSIZ_8K (0x8u << 16) /**< \brief (CHIPID_CIDR) 8K bytes */ +#define CHIPID_CIDR_SRAMSIZ_16K (0x9u << 16) /**< \brief (CHIPID_CIDR) 16K bytes */ +#define CHIPID_CIDR_SRAMSIZ_32K (0xAu << 16) /**< \brief (CHIPID_CIDR) 32K bytes */ +#define CHIPID_CIDR_SRAMSIZ_64K (0xBu << 16) /**< \brief (CHIPID_CIDR) 64K bytes */ +#define CHIPID_CIDR_SRAMSIZ_128K (0xCu << 16) /**< \brief (CHIPID_CIDR) 128K bytes */ +#define CHIPID_CIDR_SRAMSIZ_256K (0xDu << 16) /**< \brief (CHIPID_CIDR) 256K bytes */ +#define CHIPID_CIDR_SRAMSIZ_96K (0xEu << 16) /**< \brief (CHIPID_CIDR) 96K bytes */ +#define CHIPID_CIDR_SRAMSIZ_512K (0xFu << 16) /**< \brief (CHIPID_CIDR) 512K bytes */ +#define CHIPID_CIDR_ARCH_Pos 20 +#define CHIPID_CIDR_ARCH_Msk (0xffu << CHIPID_CIDR_ARCH_Pos) /**< \brief (CHIPID_CIDR) Architecture Identifier */ +#define CHIPID_CIDR_ARCH_AT91SAM9xx (0x19u << 20) /**< \brief (CHIPID_CIDR) AT91SAM9xx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM9XExx (0x29u << 20) /**< \brief (CHIPID_CIDR) AT91SAM9XExx Series */ +#define CHIPID_CIDR_ARCH_AT91x34 (0x34u << 20) /**< \brief (CHIPID_CIDR) AT91x34 Series */ +#define CHIPID_CIDR_ARCH_CAP7 (0x37u << 20) /**< \brief (CHIPID_CIDR) CAP7 Series */ +#define CHIPID_CIDR_ARCH_CAP9 (0x39u << 20) /**< \brief (CHIPID_CIDR) CAP9 Series */ +#define CHIPID_CIDR_ARCH_CAP11 (0x3Bu << 20) /**< \brief (CHIPID_CIDR) CAP11 Series */ +#define CHIPID_CIDR_ARCH_AT91x40 (0x40u << 20) /**< \brief (CHIPID_CIDR) AT91x40 Series */ +#define CHIPID_CIDR_ARCH_AT91x42 (0x42u << 20) /**< \brief (CHIPID_CIDR) AT91x42 Series */ +#define CHIPID_CIDR_ARCH_AT91x55 (0x55u << 20) /**< \brief (CHIPID_CIDR) AT91x55 Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Axx (0x60u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Axx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7AQxx (0x61u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7AQxx Series */ +#define CHIPID_CIDR_ARCH_AT91x63 (0x63u << 20) /**< \brief (CHIPID_CIDR) AT91x63 Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Sxx (0x70u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Sxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7XCxx (0x71u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7XCxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7SExx (0x72u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7SExx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Lxx (0x73u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Lxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7Xxx (0x75u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7Xxx Series */ +#define CHIPID_CIDR_ARCH_AT91SAM7SLxx (0x76u << 20) /**< \brief (CHIPID_CIDR) AT91SAM7SLxx Series */ +#define CHIPID_CIDR_ARCH_SAM3UxC (0x80u << 20) /**< \brief (CHIPID_CIDR) SAM3UxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3UxE (0x81u << 20) /**< \brief (CHIPID_CIDR) SAM3UxE Series (144-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3AxC (0x83u << 20) /**< \brief (CHIPID_CIDR) SAM3AxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4AxC (0x83u << 20) /**< \brief (CHIPID_CIDR) SAM4AxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3XxC (0x84u << 20) /**< \brief (CHIPID_CIDR) SAM3XxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4XxC (0x84u << 20) /**< \brief (CHIPID_CIDR) SAM4XxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3XxE (0x85u << 20) /**< \brief (CHIPID_CIDR) SAM3XxE Series (144-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4XxE (0x85u << 20) /**< \brief (CHIPID_CIDR) SAM4XxE Series (144-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3XxG (0x86u << 20) /**< \brief (CHIPID_CIDR) SAM3XxG Series (208/217-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4XxG (0x86u << 20) /**< \brief (CHIPID_CIDR) SAM4XxG Series (208/217-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SxA (0x88u << 20) /**< \brief (CHIPID_CIDR) SAM3SxASeries (48-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4SxA (0x88u << 20) /**< \brief (CHIPID_CIDR) SAM4SxA Series (48-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SxB (0x89u << 20) /**< \brief (CHIPID_CIDR) SAM3SxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4SxB (0x89u << 20) /**< \brief (CHIPID_CIDR) SAM4SxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SxC (0x8Au << 20) /**< \brief (CHIPID_CIDR) SAM3SxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM4SxC (0x8Au << 20) /**< \brief (CHIPID_CIDR) SAM4SxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_AT91x92 (0x92u << 20) /**< \brief (CHIPID_CIDR) AT91x92 Series */ +#define CHIPID_CIDR_ARCH_SAM3NxA (0x93u << 20) /**< \brief (CHIPID_CIDR) SAM3NxA Series (48-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3NxB (0x94u << 20) /**< \brief (CHIPID_CIDR) SAM3NxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3NxC (0x95u << 20) /**< \brief (CHIPID_CIDR) SAM3NxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SDxB (0x99u << 20) /**< \brief (CHIPID_CIDR) SAM3SDxB Series (64-pin version) */ +#define CHIPID_CIDR_ARCH_SAM3SDxC (0x9Au << 20) /**< \brief (CHIPID_CIDR) SAM3SDxC Series (100-pin version) */ +#define CHIPID_CIDR_ARCH_SAM5A (0xA5u << 20) /**< \brief (CHIPID_CIDR) SAM5A */ +#define CHIPID_CIDR_ARCH_AT75Cxx (0xF0u << 20) /**< \brief (CHIPID_CIDR) AT75Cxx Series */ +#define CHIPID_CIDR_NVPTYP_Pos 28 +#define CHIPID_CIDR_NVPTYP_Msk (0x7u << CHIPID_CIDR_NVPTYP_Pos) /**< \brief (CHIPID_CIDR) Nonvolatile Program Memory Type */ +#define CHIPID_CIDR_NVPTYP_ROM (0x0u << 28) /**< \brief (CHIPID_CIDR) ROM */ +#define CHIPID_CIDR_NVPTYP_ROMLESS (0x1u << 28) /**< \brief (CHIPID_CIDR) ROMless or on-chip Flash */ +#define CHIPID_CIDR_NVPTYP_FLASH (0x2u << 28) /**< \brief (CHIPID_CIDR) Embedded Flash Memory */ +#define CHIPID_CIDR_NVPTYP_ROM_FLASH (0x3u << 28) /**< \brief (CHIPID_CIDR) ROM and Embedded Flash MemoryNVPSIZ is ROM size NVPSIZ2 is Flash size */ +#define CHIPID_CIDR_NVPTYP_SRAM (0x4u << 28) /**< \brief (CHIPID_CIDR) SRAM emulating ROM */ +#define CHIPID_CIDR_EXT (0x1u << 31) /**< \brief (CHIPID_CIDR) Extension Flag */ +/* -------- CHIPID_EXID : (CHIPID Offset: 0x4) Chip ID Extension Register -------- */ +#define CHIPID_EXID_EXID_Pos 0 +#define CHIPID_EXID_EXID_Msk (0xffffffffu << CHIPID_EXID_EXID_Pos) /**< \brief (CHIPID_EXID) Chip ID Extension */ + +/*@}*/ + + +#endif /* _SAM3XA_CHIPID_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_dacc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_dacc.h new file mode 100644 index 000000000..afa720599 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_dacc.h @@ -0,0 +1,227 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_DACC_COMPONENT_ +#define _SAM3XA_DACC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Digital-to-Analog Converter Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_DACC Digital-to-Analog Converter Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Dacc hardware registers */ +typedef struct { + WoReg DACC_CR; /**< \brief (Dacc Offset: 0x00) Control Register */ + RwReg DACC_MR; /**< \brief (Dacc Offset: 0x04) Mode Register */ + RoReg Reserved1[2]; + WoReg DACC_CHER; /**< \brief (Dacc Offset: 0x10) Channel Enable Register */ + WoReg DACC_CHDR; /**< \brief (Dacc Offset: 0x14) Channel Disable Register */ + RoReg DACC_CHSR; /**< \brief (Dacc Offset: 0x18) Channel Status Register */ + RoReg Reserved2[1]; + WoReg DACC_CDR; /**< \brief (Dacc Offset: 0x20) Conversion Data Register */ + WoReg DACC_IER; /**< \brief (Dacc Offset: 0x24) Interrupt Enable Register */ + WoReg DACC_IDR; /**< \brief (Dacc Offset: 0x28) Interrupt Disable Register */ + RoReg DACC_IMR; /**< \brief (Dacc Offset: 0x2C) Interrupt Mask Register */ + RoReg DACC_ISR; /**< \brief (Dacc Offset: 0x30) Interrupt Status Register */ + RoReg Reserved3[24]; + RwReg DACC_ACR; /**< \brief (Dacc Offset: 0x94) Analog Current Register */ + RoReg Reserved4[19]; + RwReg DACC_WPMR; /**< \brief (Dacc Offset: 0xE4) Write Protect Mode register */ + RoReg DACC_WPSR; /**< \brief (Dacc Offset: 0xE8) Write Protect Status register */ + RoReg Reserved5[5]; + RwReg DACC_RPR; /**< \brief (Dacc Offset: 0x100) Receive Pointer Register */ + RwReg DACC_RCR; /**< \brief (Dacc Offset: 0x104) Receive Counter Register */ + RwReg DACC_TPR; /**< \brief (Dacc Offset: 0x108) Transmit Pointer Register */ + RwReg DACC_TCR; /**< \brief (Dacc Offset: 0x10C) Transmit Counter Register */ + RwReg DACC_RNPR; /**< \brief (Dacc Offset: 0x110) Receive Next Pointer Register */ + RwReg DACC_RNCR; /**< \brief (Dacc Offset: 0x114) Receive Next Counter Register */ + RwReg DACC_TNPR; /**< \brief (Dacc Offset: 0x118) Transmit Next Pointer Register */ + RwReg DACC_TNCR; /**< \brief (Dacc Offset: 0x11C) Transmit Next Counter Register */ + WoReg DACC_PTCR; /**< \brief (Dacc Offset: 0x120) Transfer Control Register */ + RoReg DACC_PTSR; /**< \brief (Dacc Offset: 0x124) Transfer Status Register */ +} Dacc; +#endif /* __ASSEMBLY__ */ +/* -------- DACC_CR : (DACC Offset: 0x00) Control Register -------- */ +#define DACC_CR_SWRST (0x1u << 0) /**< \brief (DACC_CR) Software Reset */ +/* -------- DACC_MR : (DACC Offset: 0x04) Mode Register -------- */ +#define DACC_MR_TRGEN (0x1u << 0) /**< \brief (DACC_MR) Trigger Enable */ +#define DACC_MR_TRGEN_DIS (0x0u << 0) /**< \brief (DACC_MR) External trigger mode disabled. DACC in free running mode. */ +#define DACC_MR_TRGEN_EN (0x1u << 0) /**< \brief (DACC_MR) External trigger mode enabled. */ +#define DACC_MR_TRGSEL_Pos 1 +#define DACC_MR_TRGSEL_Msk (0x7u << DACC_MR_TRGSEL_Pos) /**< \brief (DACC_MR) Trigger Selection */ +#define DACC_MR_TRGSEL(value) ((DACC_MR_TRGSEL_Msk & ((value) << DACC_MR_TRGSEL_Pos))) +#define DACC_MR_WORD (0x1u << 4) /**< \brief (DACC_MR) Word Transfer */ +#define DACC_MR_WORD_HALF (0x0u << 4) /**< \brief (DACC_MR) Half-Word transfer */ +#define DACC_MR_WORD_WORD (0x1u << 4) /**< \brief (DACC_MR) Word Transfer */ +#define DACC_MR_SLEEP (0x1u << 5) /**< \brief (DACC_MR) Sleep Mode */ +#define DACC_MR_FASTWKUP (0x1u << 6) /**< \brief (DACC_MR) Fast Wake up Mode */ +#define DACC_MR_REFRESH_Pos 8 +#define DACC_MR_REFRESH_Msk (0xffu << DACC_MR_REFRESH_Pos) /**< \brief (DACC_MR) Refresh Period */ +#define DACC_MR_REFRESH(value) ((DACC_MR_REFRESH_Msk & ((value) << DACC_MR_REFRESH_Pos))) +#define DACC_MR_USER_SEL_Pos 16 +#define DACC_MR_USER_SEL_Msk (0x3u << DACC_MR_USER_SEL_Pos) /**< \brief (DACC_MR) User Channel Selection */ +#define DACC_MR_USER_SEL_CHANNEL0 (0x0u << 16) /**< \brief (DACC_MR) Channel 0 */ +#define DACC_MR_USER_SEL_CHANNEL1 (0x1u << 16) /**< \brief (DACC_MR) Channel 1 */ +#define DACC_MR_TAG (0x1u << 20) /**< \brief (DACC_MR) Tag Selection Mode */ +#define DACC_MR_TAG_DIS (0x0u << 20) /**< \brief (DACC_MR) Tag selection mode disabled. Using USER_SEL to select the channel for the conversion. */ +#define DACC_MR_TAG_EN (0x1u << 20) /**< \brief (DACC_MR) Tag selection mode enabled */ +#define DACC_MR_MAXS (0x1u << 21) /**< \brief (DACC_MR) Max Speed Mode */ +#define DACC_MR_STARTUP_Pos 24 +#define DACC_MR_STARTUP_Msk (0x3fu << DACC_MR_STARTUP_Pos) /**< \brief (DACC_MR) Startup Time Selection */ +#define DACC_MR_STARTUP_0 (0x0u << 24) /**< \brief (DACC_MR) 0 periods of DACClock */ +#define DACC_MR_STARTUP_8 (0x1u << 24) /**< \brief (DACC_MR) 8 periods of DACClock */ +#define DACC_MR_STARTUP_16 (0x2u << 24) /**< \brief (DACC_MR) 16 periods of DACClock */ +#define DACC_MR_STARTUP_24 (0x3u << 24) /**< \brief (DACC_MR) 24 periods of DACClock */ +#define DACC_MR_STARTUP_64 (0x4u << 24) /**< \brief (DACC_MR) 64 periods of DACClock */ +#define DACC_MR_STARTUP_80 (0x5u << 24) /**< \brief (DACC_MR) 80 periods of DACClock */ +#define DACC_MR_STARTUP_96 (0x6u << 24) /**< \brief (DACC_MR) 96 periods of DACClock */ +#define DACC_MR_STARTUP_112 (0x7u << 24) /**< \brief (DACC_MR) 112 periods of DACClock */ +#define DACC_MR_STARTUP_512 (0x8u << 24) /**< \brief (DACC_MR) 512 periods of DACClock */ +#define DACC_MR_STARTUP_576 (0x9u << 24) /**< \brief (DACC_MR) 576 periods of DACClock */ +#define DACC_MR_STARTUP_640 (0xAu << 24) /**< \brief (DACC_MR) 640 periods of DACClock */ +#define DACC_MR_STARTUP_704 (0xBu << 24) /**< \brief (DACC_MR) 704 periods of DACClock */ +#define DACC_MR_STARTUP_768 (0xCu << 24) /**< \brief (DACC_MR) 768 periods of DACClock */ +#define DACC_MR_STARTUP_832 (0xDu << 24) /**< \brief (DACC_MR) 832 periods of DACClock */ +#define DACC_MR_STARTUP_896 (0xEu << 24) /**< \brief (DACC_MR) 896 periods of DACClock */ +#define DACC_MR_STARTUP_960 (0xFu << 24) /**< \brief (DACC_MR) 960 periods of DACClock */ +#define DACC_MR_STARTUP_1024 (0x10u << 24) /**< \brief (DACC_MR) 1024 periods of DACClock */ +#define DACC_MR_STARTUP_1088 (0x11u << 24) /**< \brief (DACC_MR) 1088 periods of DACClock */ +#define DACC_MR_STARTUP_1152 (0x12u << 24) /**< \brief (DACC_MR) 1152 periods of DACClock */ +#define DACC_MR_STARTUP_1216 (0x13u << 24) /**< \brief (DACC_MR) 1216 periods of DACClock */ +#define DACC_MR_STARTUP_1280 (0x14u << 24) /**< \brief (DACC_MR) 1280 periods of DACClock */ +#define DACC_MR_STARTUP_1344 (0x15u << 24) /**< \brief (DACC_MR) 1344 periods of DACClock */ +#define DACC_MR_STARTUP_1408 (0x16u << 24) /**< \brief (DACC_MR) 1408 periods of DACClock */ +#define DACC_MR_STARTUP_1472 (0x17u << 24) /**< \brief (DACC_MR) 1472 periods of DACClock */ +#define DACC_MR_STARTUP_1536 (0x18u << 24) /**< \brief (DACC_MR) 1536 periods of DACClock */ +#define DACC_MR_STARTUP_1600 (0x19u << 24) /**< \brief (DACC_MR) 1600 periods of DACClock */ +#define DACC_MR_STARTUP_1664 (0x1Au << 24) /**< \brief (DACC_MR) 1664 periods of DACClock */ +#define DACC_MR_STARTUP_1728 (0x1Bu << 24) /**< \brief (DACC_MR) 1728 periods of DACClock */ +#define DACC_MR_STARTUP_1792 (0x1Cu << 24) /**< \brief (DACC_MR) 1792 periods of DACClock */ +#define DACC_MR_STARTUP_1856 (0x1Du << 24) /**< \brief (DACC_MR) 1856 periods of DACClock */ +#define DACC_MR_STARTUP_1920 (0x1Eu << 24) /**< \brief (DACC_MR) 1920 periods of DACClock */ +#define DACC_MR_STARTUP_1984 (0x1Fu << 24) /**< \brief (DACC_MR) 1984 periods of DACClock */ +/* -------- DACC_CHER : (DACC Offset: 0x10) Channel Enable Register -------- */ +#define DACC_CHER_CH0 (0x1u << 0) /**< \brief (DACC_CHER) Channel 0 Enable */ +#define DACC_CHER_CH1 (0x1u << 1) /**< \brief (DACC_CHER) Channel 1 Enable */ +/* -------- DACC_CHDR : (DACC Offset: 0x14) Channel Disable Register -------- */ +#define DACC_CHDR_CH0 (0x1u << 0) /**< \brief (DACC_CHDR) Channel 0 Disable */ +#define DACC_CHDR_CH1 (0x1u << 1) /**< \brief (DACC_CHDR) Channel 1 Disable */ +/* -------- DACC_CHSR : (DACC Offset: 0x18) Channel Status Register -------- */ +#define DACC_CHSR_CH0 (0x1u << 0) /**< \brief (DACC_CHSR) Channel 0 Status */ +#define DACC_CHSR_CH1 (0x1u << 1) /**< \brief (DACC_CHSR) Channel 1 Status */ +/* -------- DACC_CDR : (DACC Offset: 0x20) Conversion Data Register -------- */ +#define DACC_CDR_DATA_Pos 0 +#define DACC_CDR_DATA_Msk (0xffffffffu << DACC_CDR_DATA_Pos) /**< \brief (DACC_CDR) Data to Convert */ +#define DACC_CDR_DATA(value) ((DACC_CDR_DATA_Msk & ((value) << DACC_CDR_DATA_Pos))) +/* -------- DACC_IER : (DACC Offset: 0x24) Interrupt Enable Register -------- */ +#define DACC_IER_TXRDY (0x1u << 0) /**< \brief (DACC_IER) Transmit Ready Interrupt Enable */ +#define DACC_IER_EOC (0x1u << 1) /**< \brief (DACC_IER) End of Conversion Interrupt Enable */ +#define DACC_IER_ENDTX (0x1u << 2) /**< \brief (DACC_IER) End of Transmit Buffer Interrupt Enable */ +#define DACC_IER_TXBUFE (0x1u << 3) /**< \brief (DACC_IER) Transmit Buffer Empty Interrupt Enable */ +/* -------- DACC_IDR : (DACC Offset: 0x28) Interrupt Disable Register -------- */ +#define DACC_IDR_TXRDY (0x1u << 0) /**< \brief (DACC_IDR) Transmit Ready Interrupt Disable. */ +#define DACC_IDR_EOC (0x1u << 1) /**< \brief (DACC_IDR) End of Conversion Interrupt Disable */ +#define DACC_IDR_ENDTX (0x1u << 2) /**< \brief (DACC_IDR) End of Transmit Buffer Interrupt Disable */ +#define DACC_IDR_TXBUFE (0x1u << 3) /**< \brief (DACC_IDR) Transmit Buffer Empty Interrupt Disable */ +/* -------- DACC_IMR : (DACC Offset: 0x2C) Interrupt Mask Register -------- */ +#define DACC_IMR_TXRDY (0x1u << 0) /**< \brief (DACC_IMR) Transmit Ready Interrupt Mask */ +#define DACC_IMR_EOC (0x1u << 1) /**< \brief (DACC_IMR) End of Conversion Interrupt Mask */ +#define DACC_IMR_ENDTX (0x1u << 2) /**< \brief (DACC_IMR) End of Transmit Buffer Interrupt Mask */ +#define DACC_IMR_TXBUFE (0x1u << 3) /**< \brief (DACC_IMR) Transmit Buffer Empty Interrupt Mask */ +/* -------- DACC_ISR : (DACC Offset: 0x30) Interrupt Status Register -------- */ +#define DACC_ISR_TXRDY (0x1u << 0) /**< \brief (DACC_ISR) Transmit Ready Interrupt Flag */ +#define DACC_ISR_EOC (0x1u << 1) /**< \brief (DACC_ISR) End of Conversion Interrupt Flag */ +#define DACC_ISR_ENDTX (0x1u << 2) /**< \brief (DACC_ISR) End of DMA Interrupt Flag */ +#define DACC_ISR_TXBUFE (0x1u << 3) /**< \brief (DACC_ISR) Transmit Buffer Empty */ +/* -------- DACC_ACR : (DACC Offset: 0x94) Analog Current Register -------- */ +#define DACC_ACR_IBCTLCH0_Pos 0 +#define DACC_ACR_IBCTLCH0_Msk (0x3u << DACC_ACR_IBCTLCH0_Pos) /**< \brief (DACC_ACR) Analog Output Current Control */ +#define DACC_ACR_IBCTLCH0(value) ((DACC_ACR_IBCTLCH0_Msk & ((value) << DACC_ACR_IBCTLCH0_Pos))) +#define DACC_ACR_IBCTLCH1_Pos 2 +#define DACC_ACR_IBCTLCH1_Msk (0x3u << DACC_ACR_IBCTLCH1_Pos) /**< \brief (DACC_ACR) Analog Output Current Control */ +#define DACC_ACR_IBCTLCH1(value) ((DACC_ACR_IBCTLCH1_Msk & ((value) << DACC_ACR_IBCTLCH1_Pos))) +#define DACC_ACR_IBCTLDACCORE_Pos 8 +#define DACC_ACR_IBCTLDACCORE_Msk (0x3u << DACC_ACR_IBCTLDACCORE_Pos) /**< \brief (DACC_ACR) Bias Current Control for DAC Core */ +#define DACC_ACR_IBCTLDACCORE(value) ((DACC_ACR_IBCTLDACCORE_Msk & ((value) << DACC_ACR_IBCTLDACCORE_Pos))) +/* -------- DACC_WPMR : (DACC Offset: 0xE4) Write Protect Mode register -------- */ +#define DACC_WPMR_WPEN (0x1u << 0) /**< \brief (DACC_WPMR) Write Protect Enable */ +#define DACC_WPMR_WPKEY_Pos 8 +#define DACC_WPMR_WPKEY_Msk (0xffffffu << DACC_WPMR_WPKEY_Pos) /**< \brief (DACC_WPMR) Write Protect KEY */ +#define DACC_WPMR_WPKEY(value) ((DACC_WPMR_WPKEY_Msk & ((value) << DACC_WPMR_WPKEY_Pos))) +/* -------- DACC_WPSR : (DACC Offset: 0xE8) Write Protect Status register -------- */ +#define DACC_WPSR_WPROTERR (0x1u << 0) /**< \brief (DACC_WPSR) Write protection error */ +#define DACC_WPSR_WPROTADDR_Pos 8 +#define DACC_WPSR_WPROTADDR_Msk (0xffu << DACC_WPSR_WPROTADDR_Pos) /**< \brief (DACC_WPSR) Write protection error address */ +/* -------- DACC_RPR : (DACC Offset: 0x100) Receive Pointer Register -------- */ +#define DACC_RPR_RXPTR_Pos 0 +#define DACC_RPR_RXPTR_Msk (0xffffffffu << DACC_RPR_RXPTR_Pos) /**< \brief (DACC_RPR) Receive Pointer Register */ +#define DACC_RPR_RXPTR(value) ((DACC_RPR_RXPTR_Msk & ((value) << DACC_RPR_RXPTR_Pos))) +/* -------- DACC_RCR : (DACC Offset: 0x104) Receive Counter Register -------- */ +#define DACC_RCR_RXCTR_Pos 0 +#define DACC_RCR_RXCTR_Msk (0xffffu << DACC_RCR_RXCTR_Pos) /**< \brief (DACC_RCR) Receive Counter Register */ +#define DACC_RCR_RXCTR(value) ((DACC_RCR_RXCTR_Msk & ((value) << DACC_RCR_RXCTR_Pos))) +/* -------- DACC_TPR : (DACC Offset: 0x108) Transmit Pointer Register -------- */ +#define DACC_TPR_TXPTR_Pos 0 +#define DACC_TPR_TXPTR_Msk (0xffffffffu << DACC_TPR_TXPTR_Pos) /**< \brief (DACC_TPR) Transmit Counter Register */ +#define DACC_TPR_TXPTR(value) ((DACC_TPR_TXPTR_Msk & ((value) << DACC_TPR_TXPTR_Pos))) +/* -------- DACC_TCR : (DACC Offset: 0x10C) Transmit Counter Register -------- */ +#define DACC_TCR_TXCTR_Pos 0 +#define DACC_TCR_TXCTR_Msk (0xffffu << DACC_TCR_TXCTR_Pos) /**< \brief (DACC_TCR) Transmit Counter Register */ +#define DACC_TCR_TXCTR(value) ((DACC_TCR_TXCTR_Msk & ((value) << DACC_TCR_TXCTR_Pos))) +/* -------- DACC_RNPR : (DACC Offset: 0x110) Receive Next Pointer Register -------- */ +#define DACC_RNPR_RXNPTR_Pos 0 +#define DACC_RNPR_RXNPTR_Msk (0xffffffffu << DACC_RNPR_RXNPTR_Pos) /**< \brief (DACC_RNPR) Receive Next Pointer */ +#define DACC_RNPR_RXNPTR(value) ((DACC_RNPR_RXNPTR_Msk & ((value) << DACC_RNPR_RXNPTR_Pos))) +/* -------- DACC_RNCR : (DACC Offset: 0x114) Receive Next Counter Register -------- */ +#define DACC_RNCR_RXNCTR_Pos 0 +#define DACC_RNCR_RXNCTR_Msk (0xffffu << DACC_RNCR_RXNCTR_Pos) /**< \brief (DACC_RNCR) Receive Next Counter */ +#define DACC_RNCR_RXNCTR(value) ((DACC_RNCR_RXNCTR_Msk & ((value) << DACC_RNCR_RXNCTR_Pos))) +/* -------- DACC_TNPR : (DACC Offset: 0x118) Transmit Next Pointer Register -------- */ +#define DACC_TNPR_TXNPTR_Pos 0 +#define DACC_TNPR_TXNPTR_Msk (0xffffffffu << DACC_TNPR_TXNPTR_Pos) /**< \brief (DACC_TNPR) Transmit Next Pointer */ +#define DACC_TNPR_TXNPTR(value) ((DACC_TNPR_TXNPTR_Msk & ((value) << DACC_TNPR_TXNPTR_Pos))) +/* -------- DACC_TNCR : (DACC Offset: 0x11C) Transmit Next Counter Register -------- */ +#define DACC_TNCR_TXNCTR_Pos 0 +#define DACC_TNCR_TXNCTR_Msk (0xffffu << DACC_TNCR_TXNCTR_Pos) /**< \brief (DACC_TNCR) Transmit Counter Next */ +#define DACC_TNCR_TXNCTR(value) ((DACC_TNCR_TXNCTR_Msk & ((value) << DACC_TNCR_TXNCTR_Pos))) +/* -------- DACC_PTCR : (DACC Offset: 0x120) Transfer Control Register -------- */ +#define DACC_PTCR_RXTEN (0x1u << 0) /**< \brief (DACC_PTCR) Receiver Transfer Enable */ +#define DACC_PTCR_RXTDIS (0x1u << 1) /**< \brief (DACC_PTCR) Receiver Transfer Disable */ +#define DACC_PTCR_TXTEN (0x1u << 8) /**< \brief (DACC_PTCR) Transmitter Transfer Enable */ +#define DACC_PTCR_TXTDIS (0x1u << 9) /**< \brief (DACC_PTCR) Transmitter Transfer Disable */ +/* -------- DACC_PTSR : (DACC Offset: 0x124) Transfer Status Register -------- */ +#define DACC_PTSR_RXTEN (0x1u << 0) /**< \brief (DACC_PTSR) Receiver Transfer Enable */ +#define DACC_PTSR_TXTEN (0x1u << 8) /**< \brief (DACC_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3XA_DACC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_dmac.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_dmac.h new file mode 100644 index 000000000..87a8f7672 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_dmac.h @@ -0,0 +1,367 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_DMAC_COMPONENT_ +#define _SAM3XA_DMAC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR DMA Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_DMAC DMA Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief DmacCh_num hardware registers */ +typedef struct { + RwReg DMAC_SADDR; /**< \brief (DmacCh_num Offset: 0x0) DMAC Channel Source Address Register */ + RwReg DMAC_DADDR; /**< \brief (DmacCh_num Offset: 0x4) DMAC Channel Destination Address Register */ + RwReg DMAC_DSCR; /**< \brief (DmacCh_num Offset: 0x8) DMAC Channel Descriptor Address Register */ + RwReg DMAC_CTRLA; /**< \brief (DmacCh_num Offset: 0xC) DMAC Channel Control A Register */ + RwReg DMAC_CTRLB; /**< \brief (DmacCh_num Offset: 0x10) DMAC Channel Control B Register */ + RwReg DMAC_CFG; /**< \brief (DmacCh_num Offset: 0x14) DMAC Channel Configuration Register */ + RoReg Reserved1[4]; +} DmacCh_num; +/** \brief Dmac hardware registers */ +#define DMACCH_NUM_NUMBER 6 +typedef struct { + RwReg DMAC_GCFG; /**< \brief (Dmac Offset: 0x000) DMAC Global Configuration Register */ + RwReg DMAC_EN; /**< \brief (Dmac Offset: 0x004) DMAC Enable Register */ + RwReg DMAC_SREQ; /**< \brief (Dmac Offset: 0x008) DMAC Software Single Request Register */ + RwReg DMAC_CREQ; /**< \brief (Dmac Offset: 0x00C) DMAC Software Chunk Transfer Request Register */ + RwReg DMAC_LAST; /**< \brief (Dmac Offset: 0x010) DMAC Software Last Transfer Flag Register */ + RoReg Reserved1[1]; + WoReg DMAC_EBCIER; /**< \brief (Dmac Offset: 0x018) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Enable register. */ + WoReg DMAC_EBCIDR; /**< \brief (Dmac Offset: 0x01C) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Disable register. */ + RoReg DMAC_EBCIMR; /**< \brief (Dmac Offset: 0x020) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Mask Register. */ + RoReg DMAC_EBCISR; /**< \brief (Dmac Offset: 0x024) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Status Register. */ + WoReg DMAC_CHER; /**< \brief (Dmac Offset: 0x028) DMAC Channel Handler Enable Register */ + WoReg DMAC_CHDR; /**< \brief (Dmac Offset: 0x02C) DMAC Channel Handler Disable Register */ + RoReg DMAC_CHSR; /**< \brief (Dmac Offset: 0x030) DMAC Channel Handler Status Register */ + RoReg Reserved2[2]; + DmacCh_num DMAC_CH_NUM[DMACCH_NUM_NUMBER]; /**< \brief (Dmac Offset: 0x3C) ch_num = 0 .. 5 */ + RoReg Reserved3[46]; + RwReg DMAC_WPMR; /**< \brief (Dmac Offset: 0x1E4) DMAC Write Protect Mode Register */ + RoReg DMAC_WPSR; /**< \brief (Dmac Offset: 0x1E8) DMAC Write Protect Status Register */ +} Dmac; +#endif /* __ASSEMBLY__ */ +/* -------- DMAC_GCFG : (DMAC Offset: 0x000) DMAC Global Configuration Register -------- */ +#define DMAC_GCFG_ARB_CFG (0x1u << 4) /**< \brief (DMAC_GCFG) Arbiter Configuration */ +#define DMAC_GCFG_ARB_CFG_FIXED (0x0u << 4) /**< \brief (DMAC_GCFG) Fixed priority arbiter. */ +#define DMAC_GCFG_ARB_CFG_ROUND_ROBIN (0x1u << 4) /**< \brief (DMAC_GCFG) Modified round robin arbiter. */ +/* -------- DMAC_EN : (DMAC Offset: 0x004) DMAC Enable Register -------- */ +#define DMAC_EN_ENABLE (0x1u << 0) /**< \brief (DMAC_EN) */ +/* -------- DMAC_SREQ : (DMAC Offset: 0x008) DMAC Software Single Request Register -------- */ +#define DMAC_SREQ_SSREQ0 (0x1u << 0) /**< \brief (DMAC_SREQ) Source Request */ +#define DMAC_SREQ_DSREQ0 (0x1u << 1) /**< \brief (DMAC_SREQ) Destination Request */ +#define DMAC_SREQ_SSREQ1 (0x1u << 2) /**< \brief (DMAC_SREQ) Source Request */ +#define DMAC_SREQ_DSREQ1 (0x1u << 3) /**< \brief (DMAC_SREQ) Destination Request */ +#define DMAC_SREQ_SSREQ2 (0x1u << 4) /**< \brief (DMAC_SREQ) Source Request */ +#define DMAC_SREQ_DSREQ2 (0x1u << 5) /**< \brief (DMAC_SREQ) Destination Request */ +#define DMAC_SREQ_SSREQ3 (0x1u << 6) /**< \brief (DMAC_SREQ) Source Request */ +#define DMAC_SREQ_DSREQ3 (0x1u << 7) /**< \brief (DMAC_SREQ) Destination Request */ +#define DMAC_SREQ_SSREQ4 (0x1u << 8) /**< \brief (DMAC_SREQ) Source Request */ +#define DMAC_SREQ_DSREQ4 (0x1u << 9) /**< \brief (DMAC_SREQ) Destination Request */ +#define DMAC_SREQ_SSREQ5 (0x1u << 10) /**< \brief (DMAC_SREQ) Source Request */ +#define DMAC_SREQ_DSREQ5 (0x1u << 11) /**< \brief (DMAC_SREQ) Destination Request */ +/* -------- DMAC_CREQ : (DMAC Offset: 0x00C) DMAC Software Chunk Transfer Request Register -------- */ +#define DMAC_CREQ_SCREQ0 (0x1u << 0) /**< \brief (DMAC_CREQ) Source Chunk Request */ +#define DMAC_CREQ_DCREQ0 (0x1u << 1) /**< \brief (DMAC_CREQ) Destination Chunk Request */ +#define DMAC_CREQ_SCREQ1 (0x1u << 2) /**< \brief (DMAC_CREQ) Source Chunk Request */ +#define DMAC_CREQ_DCREQ1 (0x1u << 3) /**< \brief (DMAC_CREQ) Destination Chunk Request */ +#define DMAC_CREQ_SCREQ2 (0x1u << 4) /**< \brief (DMAC_CREQ) Source Chunk Request */ +#define DMAC_CREQ_DCREQ2 (0x1u << 5) /**< \brief (DMAC_CREQ) Destination Chunk Request */ +#define DMAC_CREQ_SCREQ3 (0x1u << 6) /**< \brief (DMAC_CREQ) Source Chunk Request */ +#define DMAC_CREQ_DCREQ3 (0x1u << 7) /**< \brief (DMAC_CREQ) Destination Chunk Request */ +#define DMAC_CREQ_SCREQ4 (0x1u << 8) /**< \brief (DMAC_CREQ) Source Chunk Request */ +#define DMAC_CREQ_DCREQ4 (0x1u << 9) /**< \brief (DMAC_CREQ) Destination Chunk Request */ +#define DMAC_CREQ_SCREQ5 (0x1u << 10) /**< \brief (DMAC_CREQ) Source Chunk Request */ +#define DMAC_CREQ_DCREQ5 (0x1u << 11) /**< \brief (DMAC_CREQ) Destination Chunk Request */ +/* -------- DMAC_LAST : (DMAC Offset: 0x010) DMAC Software Last Transfer Flag Register -------- */ +#define DMAC_LAST_SLAST0 (0x1u << 0) /**< \brief (DMAC_LAST) Source Last */ +#define DMAC_LAST_DLAST0 (0x1u << 1) /**< \brief (DMAC_LAST) Destination Last */ +#define DMAC_LAST_SLAST1 (0x1u << 2) /**< \brief (DMAC_LAST) Source Last */ +#define DMAC_LAST_DLAST1 (0x1u << 3) /**< \brief (DMAC_LAST) Destination Last */ +#define DMAC_LAST_SLAST2 (0x1u << 4) /**< \brief (DMAC_LAST) Source Last */ +#define DMAC_LAST_DLAST2 (0x1u << 5) /**< \brief (DMAC_LAST) Destination Last */ +#define DMAC_LAST_SLAST3 (0x1u << 6) /**< \brief (DMAC_LAST) Source Last */ +#define DMAC_LAST_DLAST3 (0x1u << 7) /**< \brief (DMAC_LAST) Destination Last */ +#define DMAC_LAST_SLAST4 (0x1u << 8) /**< \brief (DMAC_LAST) Source Last */ +#define DMAC_LAST_DLAST4 (0x1u << 9) /**< \brief (DMAC_LAST) Destination Last */ +#define DMAC_LAST_SLAST5 (0x1u << 10) /**< \brief (DMAC_LAST) Source Last */ +#define DMAC_LAST_DLAST5 (0x1u << 11) /**< \brief (DMAC_LAST) Destination Last */ +/* -------- DMAC_EBCIER : (DMAC Offset: 0x018) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Enable register. -------- */ +#define DMAC_EBCIER_BTC0 (0x1u << 0) /**< \brief (DMAC_EBCIER) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIER_BTC1 (0x1u << 1) /**< \brief (DMAC_EBCIER) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIER_BTC2 (0x1u << 2) /**< \brief (DMAC_EBCIER) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIER_BTC3 (0x1u << 3) /**< \brief (DMAC_EBCIER) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIER_BTC4 (0x1u << 4) /**< \brief (DMAC_EBCIER) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIER_BTC5 (0x1u << 5) /**< \brief (DMAC_EBCIER) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIER_CBTC0 (0x1u << 8) /**< \brief (DMAC_EBCIER) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIER_CBTC1 (0x1u << 9) /**< \brief (DMAC_EBCIER) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIER_CBTC2 (0x1u << 10) /**< \brief (DMAC_EBCIER) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIER_CBTC3 (0x1u << 11) /**< \brief (DMAC_EBCIER) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIER_CBTC4 (0x1u << 12) /**< \brief (DMAC_EBCIER) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIER_CBTC5 (0x1u << 13) /**< \brief (DMAC_EBCIER) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIER_ERR0 (0x1u << 16) /**< \brief (DMAC_EBCIER) Access Error [5:0] */ +#define DMAC_EBCIER_ERR1 (0x1u << 17) /**< \brief (DMAC_EBCIER) Access Error [5:0] */ +#define DMAC_EBCIER_ERR2 (0x1u << 18) /**< \brief (DMAC_EBCIER) Access Error [5:0] */ +#define DMAC_EBCIER_ERR3 (0x1u << 19) /**< \brief (DMAC_EBCIER) Access Error [5:0] */ +#define DMAC_EBCIER_ERR4 (0x1u << 20) /**< \brief (DMAC_EBCIER) Access Error [5:0] */ +#define DMAC_EBCIER_ERR5 (0x1u << 21) /**< \brief (DMAC_EBCIER) Access Error [5:0] */ +/* -------- DMAC_EBCIDR : (DMAC Offset: 0x01C) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Disable register. -------- */ +#define DMAC_EBCIDR_BTC0 (0x1u << 0) /**< \brief (DMAC_EBCIDR) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIDR_BTC1 (0x1u << 1) /**< \brief (DMAC_EBCIDR) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIDR_BTC2 (0x1u << 2) /**< \brief (DMAC_EBCIDR) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIDR_BTC3 (0x1u << 3) /**< \brief (DMAC_EBCIDR) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIDR_BTC4 (0x1u << 4) /**< \brief (DMAC_EBCIDR) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIDR_BTC5 (0x1u << 5) /**< \brief (DMAC_EBCIDR) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIDR_CBTC0 (0x1u << 8) /**< \brief (DMAC_EBCIDR) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIDR_CBTC1 (0x1u << 9) /**< \brief (DMAC_EBCIDR) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIDR_CBTC2 (0x1u << 10) /**< \brief (DMAC_EBCIDR) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIDR_CBTC3 (0x1u << 11) /**< \brief (DMAC_EBCIDR) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIDR_CBTC4 (0x1u << 12) /**< \brief (DMAC_EBCIDR) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIDR_CBTC5 (0x1u << 13) /**< \brief (DMAC_EBCIDR) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIDR_ERR0 (0x1u << 16) /**< \brief (DMAC_EBCIDR) Access Error [5:0] */ +#define DMAC_EBCIDR_ERR1 (0x1u << 17) /**< \brief (DMAC_EBCIDR) Access Error [5:0] */ +#define DMAC_EBCIDR_ERR2 (0x1u << 18) /**< \brief (DMAC_EBCIDR) Access Error [5:0] */ +#define DMAC_EBCIDR_ERR3 (0x1u << 19) /**< \brief (DMAC_EBCIDR) Access Error [5:0] */ +#define DMAC_EBCIDR_ERR4 (0x1u << 20) /**< \brief (DMAC_EBCIDR) Access Error [5:0] */ +#define DMAC_EBCIDR_ERR5 (0x1u << 21) /**< \brief (DMAC_EBCIDR) Access Error [5:0] */ +/* -------- DMAC_EBCIMR : (DMAC Offset: 0x020) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Mask Register. -------- */ +#define DMAC_EBCIMR_BTC0 (0x1u << 0) /**< \brief (DMAC_EBCIMR) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIMR_BTC1 (0x1u << 1) /**< \brief (DMAC_EBCIMR) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIMR_BTC2 (0x1u << 2) /**< \brief (DMAC_EBCIMR) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIMR_BTC3 (0x1u << 3) /**< \brief (DMAC_EBCIMR) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIMR_BTC4 (0x1u << 4) /**< \brief (DMAC_EBCIMR) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIMR_BTC5 (0x1u << 5) /**< \brief (DMAC_EBCIMR) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIMR_CBTC0 (0x1u << 8) /**< \brief (DMAC_EBCIMR) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIMR_CBTC1 (0x1u << 9) /**< \brief (DMAC_EBCIMR) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIMR_CBTC2 (0x1u << 10) /**< \brief (DMAC_EBCIMR) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIMR_CBTC3 (0x1u << 11) /**< \brief (DMAC_EBCIMR) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIMR_CBTC4 (0x1u << 12) /**< \brief (DMAC_EBCIMR) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIMR_CBTC5 (0x1u << 13) /**< \brief (DMAC_EBCIMR) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCIMR_ERR0 (0x1u << 16) /**< \brief (DMAC_EBCIMR) Access Error [5:0] */ +#define DMAC_EBCIMR_ERR1 (0x1u << 17) /**< \brief (DMAC_EBCIMR) Access Error [5:0] */ +#define DMAC_EBCIMR_ERR2 (0x1u << 18) /**< \brief (DMAC_EBCIMR) Access Error [5:0] */ +#define DMAC_EBCIMR_ERR3 (0x1u << 19) /**< \brief (DMAC_EBCIMR) Access Error [5:0] */ +#define DMAC_EBCIMR_ERR4 (0x1u << 20) /**< \brief (DMAC_EBCIMR) Access Error [5:0] */ +#define DMAC_EBCIMR_ERR5 (0x1u << 21) /**< \brief (DMAC_EBCIMR) Access Error [5:0] */ +/* -------- DMAC_EBCISR : (DMAC Offset: 0x024) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Status Register. -------- */ +#define DMAC_EBCISR_BTC0 (0x1u << 0) /**< \brief (DMAC_EBCISR) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCISR_BTC1 (0x1u << 1) /**< \brief (DMAC_EBCISR) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCISR_BTC2 (0x1u << 2) /**< \brief (DMAC_EBCISR) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCISR_BTC3 (0x1u << 3) /**< \brief (DMAC_EBCISR) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCISR_BTC4 (0x1u << 4) /**< \brief (DMAC_EBCISR) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCISR_BTC5 (0x1u << 5) /**< \brief (DMAC_EBCISR) Buffer Transfer Completed [5:0] */ +#define DMAC_EBCISR_CBTC0 (0x1u << 8) /**< \brief (DMAC_EBCISR) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCISR_CBTC1 (0x1u << 9) /**< \brief (DMAC_EBCISR) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCISR_CBTC2 (0x1u << 10) /**< \brief (DMAC_EBCISR) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCISR_CBTC3 (0x1u << 11) /**< \brief (DMAC_EBCISR) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCISR_CBTC4 (0x1u << 12) /**< \brief (DMAC_EBCISR) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCISR_CBTC5 (0x1u << 13) /**< \brief (DMAC_EBCISR) Chained Buffer Transfer Completed [5:0] */ +#define DMAC_EBCISR_ERR0 (0x1u << 16) /**< \brief (DMAC_EBCISR) Access Error [5:0] */ +#define DMAC_EBCISR_ERR1 (0x1u << 17) /**< \brief (DMAC_EBCISR) Access Error [5:0] */ +#define DMAC_EBCISR_ERR2 (0x1u << 18) /**< \brief (DMAC_EBCISR) Access Error [5:0] */ +#define DMAC_EBCISR_ERR3 (0x1u << 19) /**< \brief (DMAC_EBCISR) Access Error [5:0] */ +#define DMAC_EBCISR_ERR4 (0x1u << 20) /**< \brief (DMAC_EBCISR) Access Error [5:0] */ +#define DMAC_EBCISR_ERR5 (0x1u << 21) /**< \brief (DMAC_EBCISR) Access Error [5:0] */ +/* -------- DMAC_CHER : (DMAC Offset: 0x028) DMAC Channel Handler Enable Register -------- */ +#define DMAC_CHER_ENA0 (0x1u << 0) /**< \brief (DMAC_CHER) Enable [5:0] */ +#define DMAC_CHER_ENA1 (0x1u << 1) /**< \brief (DMAC_CHER) Enable [5:0] */ +#define DMAC_CHER_ENA2 (0x1u << 2) /**< \brief (DMAC_CHER) Enable [5:0] */ +#define DMAC_CHER_ENA3 (0x1u << 3) /**< \brief (DMAC_CHER) Enable [5:0] */ +#define DMAC_CHER_ENA4 (0x1u << 4) /**< \brief (DMAC_CHER) Enable [5:0] */ +#define DMAC_CHER_ENA5 (0x1u << 5) /**< \brief (DMAC_CHER) Enable [5:0] */ +#define DMAC_CHER_SUSP0 (0x1u << 8) /**< \brief (DMAC_CHER) Suspend [5:0] */ +#define DMAC_CHER_SUSP1 (0x1u << 9) /**< \brief (DMAC_CHER) Suspend [5:0] */ +#define DMAC_CHER_SUSP2 (0x1u << 10) /**< \brief (DMAC_CHER) Suspend [5:0] */ +#define DMAC_CHER_SUSP3 (0x1u << 11) /**< \brief (DMAC_CHER) Suspend [5:0] */ +#define DMAC_CHER_SUSP4 (0x1u << 12) /**< \brief (DMAC_CHER) Suspend [5:0] */ +#define DMAC_CHER_SUSP5 (0x1u << 13) /**< \brief (DMAC_CHER) Suspend [5:0] */ +#define DMAC_CHER_KEEP0 (0x1u << 24) /**< \brief (DMAC_CHER) Keep on [5:0] */ +#define DMAC_CHER_KEEP1 (0x1u << 25) /**< \brief (DMAC_CHER) Keep on [5:0] */ +#define DMAC_CHER_KEEP2 (0x1u << 26) /**< \brief (DMAC_CHER) Keep on [5:0] */ +#define DMAC_CHER_KEEP3 (0x1u << 27) /**< \brief (DMAC_CHER) Keep on [5:0] */ +#define DMAC_CHER_KEEP4 (0x1u << 28) /**< \brief (DMAC_CHER) Keep on [5:0] */ +#define DMAC_CHER_KEEP5 (0x1u << 29) /**< \brief (DMAC_CHER) Keep on [5:0] */ +/* -------- DMAC_CHDR : (DMAC Offset: 0x02C) DMAC Channel Handler Disable Register -------- */ +#define DMAC_CHDR_DIS0 (0x1u << 0) /**< \brief (DMAC_CHDR) Disable [5:0] */ +#define DMAC_CHDR_DIS1 (0x1u << 1) /**< \brief (DMAC_CHDR) Disable [5:0] */ +#define DMAC_CHDR_DIS2 (0x1u << 2) /**< \brief (DMAC_CHDR) Disable [5:0] */ +#define DMAC_CHDR_DIS3 (0x1u << 3) /**< \brief (DMAC_CHDR) Disable [5:0] */ +#define DMAC_CHDR_DIS4 (0x1u << 4) /**< \brief (DMAC_CHDR) Disable [5:0] */ +#define DMAC_CHDR_DIS5 (0x1u << 5) /**< \brief (DMAC_CHDR) Disable [5:0] */ +#define DMAC_CHDR_RES0 (0x1u << 8) /**< \brief (DMAC_CHDR) Resume [5:0] */ +#define DMAC_CHDR_RES1 (0x1u << 9) /**< \brief (DMAC_CHDR) Resume [5:0] */ +#define DMAC_CHDR_RES2 (0x1u << 10) /**< \brief (DMAC_CHDR) Resume [5:0] */ +#define DMAC_CHDR_RES3 (0x1u << 11) /**< \brief (DMAC_CHDR) Resume [5:0] */ +#define DMAC_CHDR_RES4 (0x1u << 12) /**< \brief (DMAC_CHDR) Resume [5:0] */ +#define DMAC_CHDR_RES5 (0x1u << 13) /**< \brief (DMAC_CHDR) Resume [5:0] */ +/* -------- DMAC_CHSR : (DMAC Offset: 0x030) DMAC Channel Handler Status Register -------- */ +#define DMAC_CHSR_ENA0 (0x1u << 0) /**< \brief (DMAC_CHSR) Enable [5:0] */ +#define DMAC_CHSR_ENA1 (0x1u << 1) /**< \brief (DMAC_CHSR) Enable [5:0] */ +#define DMAC_CHSR_ENA2 (0x1u << 2) /**< \brief (DMAC_CHSR) Enable [5:0] */ +#define DMAC_CHSR_ENA3 (0x1u << 3) /**< \brief (DMAC_CHSR) Enable [5:0] */ +#define DMAC_CHSR_ENA4 (0x1u << 4) /**< \brief (DMAC_CHSR) Enable [5:0] */ +#define DMAC_CHSR_ENA5 (0x1u << 5) /**< \brief (DMAC_CHSR) Enable [5:0] */ +#define DMAC_CHSR_SUSP0 (0x1u << 8) /**< \brief (DMAC_CHSR) Suspend [5:0] */ +#define DMAC_CHSR_SUSP1 (0x1u << 9) /**< \brief (DMAC_CHSR) Suspend [5:0] */ +#define DMAC_CHSR_SUSP2 (0x1u << 10) /**< \brief (DMAC_CHSR) Suspend [5:0] */ +#define DMAC_CHSR_SUSP3 (0x1u << 11) /**< \brief (DMAC_CHSR) Suspend [5:0] */ +#define DMAC_CHSR_SUSP4 (0x1u << 12) /**< \brief (DMAC_CHSR) Suspend [5:0] */ +#define DMAC_CHSR_SUSP5 (0x1u << 13) /**< \brief (DMAC_CHSR) Suspend [5:0] */ +#define DMAC_CHSR_EMPT0 (0x1u << 16) /**< \brief (DMAC_CHSR) Empty [5:0] */ +#define DMAC_CHSR_EMPT1 (0x1u << 17) /**< \brief (DMAC_CHSR) Empty [5:0] */ +#define DMAC_CHSR_EMPT2 (0x1u << 18) /**< \brief (DMAC_CHSR) Empty [5:0] */ +#define DMAC_CHSR_EMPT3 (0x1u << 19) /**< \brief (DMAC_CHSR) Empty [5:0] */ +#define DMAC_CHSR_EMPT4 (0x1u << 20) /**< \brief (DMAC_CHSR) Empty [5:0] */ +#define DMAC_CHSR_EMPT5 (0x1u << 21) /**< \brief (DMAC_CHSR) Empty [5:0] */ +#define DMAC_CHSR_STAL0 (0x1u << 24) /**< \brief (DMAC_CHSR) Stalled [5:0] */ +#define DMAC_CHSR_STAL1 (0x1u << 25) /**< \brief (DMAC_CHSR) Stalled [5:0] */ +#define DMAC_CHSR_STAL2 (0x1u << 26) /**< \brief (DMAC_CHSR) Stalled [5:0] */ +#define DMAC_CHSR_STAL3 (0x1u << 27) /**< \brief (DMAC_CHSR) Stalled [5:0] */ +#define DMAC_CHSR_STAL4 (0x1u << 28) /**< \brief (DMAC_CHSR) Stalled [5:0] */ +#define DMAC_CHSR_STAL5 (0x1u << 29) /**< \brief (DMAC_CHSR) Stalled [5:0] */ +/* -------- DMAC_SADDR : (DMAC Offset: N/A) DMAC Channel Source Address Register -------- */ +#define DMAC_SADDR_SADDR_Pos 0 +#define DMAC_SADDR_SADDR_Msk (0xffffffffu << DMAC_SADDR_SADDR_Pos) /**< \brief (DMAC_SADDR) Channel x Source Address */ +#define DMAC_SADDR_SADDR(value) ((DMAC_SADDR_SADDR_Msk & ((value) << DMAC_SADDR_SADDR_Pos))) +/* -------- DMAC_DADDR : (DMAC Offset: N/A) DMAC Channel Destination Address Register -------- */ +#define DMAC_DADDR_DADDR_Pos 0 +#define DMAC_DADDR_DADDR_Msk (0xffffffffu << DMAC_DADDR_DADDR_Pos) /**< \brief (DMAC_DADDR) Channel x Destination Address */ +#define DMAC_DADDR_DADDR(value) ((DMAC_DADDR_DADDR_Msk & ((value) << DMAC_DADDR_DADDR_Pos))) +/* -------- DMAC_DSCR : (DMAC Offset: N/A) DMAC Channel Descriptor Address Register -------- */ +#define DMAC_DSCR_DSCR_Pos 2 +#define DMAC_DSCR_DSCR_Msk (0x3fffffffu << DMAC_DSCR_DSCR_Pos) /**< \brief (DMAC_DSCR) Buffer Transfer Descriptor Address */ +#define DMAC_DSCR_DSCR(value) ((DMAC_DSCR_DSCR_Msk & ((value) << DMAC_DSCR_DSCR_Pos))) +/* -------- DMAC_CTRLA : (DMAC Offset: N/A) DMAC Channel Control A Register -------- */ +#define DMAC_CTRLA_BTSIZE_Pos 0 +#define DMAC_CTRLA_BTSIZE_Msk (0xffffu << DMAC_CTRLA_BTSIZE_Pos) /**< \brief (DMAC_CTRLA) Buffer Transfer Size */ +#define DMAC_CTRLA_BTSIZE(value) ((DMAC_CTRLA_BTSIZE_Msk & ((value) << DMAC_CTRLA_BTSIZE_Pos))) +#define DMAC_CTRLA_SCSIZE_Pos 16 +#define DMAC_CTRLA_SCSIZE_Msk (0x7u << DMAC_CTRLA_SCSIZE_Pos) /**< \brief (DMAC_CTRLA) Source Chunk Transfer Size. */ +#define DMAC_CTRLA_SCSIZE_CHK_1 (0x0u << 16) /**< \brief (DMAC_CTRLA) 1 data transferred */ +#define DMAC_CTRLA_SCSIZE_CHK_4 (0x1u << 16) /**< \brief (DMAC_CTRLA) 4 data transferred */ +#define DMAC_CTRLA_SCSIZE_CHK_8 (0x2u << 16) /**< \brief (DMAC_CTRLA) 8 data transferred */ +#define DMAC_CTRLA_SCSIZE_CHK_16 (0x3u << 16) /**< \brief (DMAC_CTRLA) 16 data transferred */ +#define DMAC_CTRLA_SCSIZE_CHK_32 (0x4u << 16) /**< \brief (DMAC_CTRLA) 32 data transferred */ +#define DMAC_CTRLA_SCSIZE_CHK_64 (0x5u << 16) /**< \brief (DMAC_CTRLA) 64 data transferred */ +#define DMAC_CTRLA_SCSIZE_CHK_128 (0x6u << 16) /**< \brief (DMAC_CTRLA) 128 data transferred */ +#define DMAC_CTRLA_SCSIZE_CHK_256 (0x7u << 16) /**< \brief (DMAC_CTRLA) 256 data transferred */ +#define DMAC_CTRLA_DCSIZE_Pos 20 +#define DMAC_CTRLA_DCSIZE_Msk (0x7u << DMAC_CTRLA_DCSIZE_Pos) /**< \brief (DMAC_CTRLA) Destination Chunk Transfer Size */ +#define DMAC_CTRLA_DCSIZE_CHK_1 (0x0u << 20) /**< \brief (DMAC_CTRLA) 1 data transferred */ +#define DMAC_CTRLA_DCSIZE_CHK_4 (0x1u << 20) /**< \brief (DMAC_CTRLA) 4 data transferred */ +#define DMAC_CTRLA_DCSIZE_CHK_8 (0x2u << 20) /**< \brief (DMAC_CTRLA) 8 data transferred */ +#define DMAC_CTRLA_DCSIZE_CHK_16 (0x3u << 20) /**< \brief (DMAC_CTRLA) 16 data transferred */ +#define DMAC_CTRLA_DCSIZE_CHK_32 (0x4u << 20) /**< \brief (DMAC_CTRLA) 32 data transferred */ +#define DMAC_CTRLA_DCSIZE_CHK_64 (0x5u << 20) /**< \brief (DMAC_CTRLA) 64 data transferred */ +#define DMAC_CTRLA_DCSIZE_CHK_128 (0x6u << 20) /**< \brief (DMAC_CTRLA) 128 data transferred */ +#define DMAC_CTRLA_DCSIZE_CHK_256 (0x7u << 20) /**< \brief (DMAC_CTRLA) 256 data transferred */ +#define DMAC_CTRLA_SRC_WIDTH_Pos 24 +#define DMAC_CTRLA_SRC_WIDTH_Msk (0x3u << DMAC_CTRLA_SRC_WIDTH_Pos) /**< \brief (DMAC_CTRLA) Transfer Width for the Source */ +#define DMAC_CTRLA_SRC_WIDTH_BYTE (0x0u << 24) /**< \brief (DMAC_CTRLA) the transfer size is set to 8-bit width */ +#define DMAC_CTRLA_SRC_WIDTH_HALF_WORD (0x1u << 24) /**< \brief (DMAC_CTRLA) the transfer size is set to 16-bit width */ +#define DMAC_CTRLA_SRC_WIDTH_WORD (0x2u << 24) /**< \brief (DMAC_CTRLA) the transfer size is set to 32-bit width */ +#define DMAC_CTRLA_DST_WIDTH_Pos 28 +#define DMAC_CTRLA_DST_WIDTH_Msk (0x3u << DMAC_CTRLA_DST_WIDTH_Pos) /**< \brief (DMAC_CTRLA) Transfer Width for the Destination */ +#define DMAC_CTRLA_DST_WIDTH_BYTE (0x0u << 28) /**< \brief (DMAC_CTRLA) the transfer size is set to 8-bit width */ +#define DMAC_CTRLA_DST_WIDTH_HALF_WORD (0x1u << 28) /**< \brief (DMAC_CTRLA) the transfer size is set to 16-bit width */ +#define DMAC_CTRLA_DST_WIDTH_WORD (0x2u << 28) /**< \brief (DMAC_CTRLA) the transfer size is set to 32-bit width */ +#define DMAC_CTRLA_DONE (0x1u << 31) /**< \brief (DMAC_CTRLA) */ +/* -------- DMAC_CTRLB : (DMAC Offset: N/A) DMAC Channel Control B Register -------- */ +#define DMAC_CTRLB_SRC_DSCR (0x1u << 16) /**< \brief (DMAC_CTRLB) Source Address Descriptor */ +#define DMAC_CTRLB_SRC_DSCR_FETCH_FROM_MEM (0x0u << 16) /**< \brief (DMAC_CTRLB) Source address is updated when the descriptor is fetched from the memory. */ +#define DMAC_CTRLB_SRC_DSCR_FETCH_DISABLE (0x1u << 16) /**< \brief (DMAC_CTRLB) Buffer Descriptor Fetch operation is disabled for the source. */ +#define DMAC_CTRLB_DST_DSCR (0x1u << 20) /**< \brief (DMAC_CTRLB) Destination Address Descriptor */ +#define DMAC_CTRLB_DST_DSCR_FETCH_FROM_MEM (0x0u << 20) /**< \brief (DMAC_CTRLB) Destination address is updated when the descriptor is fetched from the memory. */ +#define DMAC_CTRLB_DST_DSCR_FETCH_DISABLE (0x1u << 20) /**< \brief (DMAC_CTRLB) Buffer Descriptor Fetch operation is disabled for the destination. */ +#define DMAC_CTRLB_FC_Pos 21 +#define DMAC_CTRLB_FC_Msk (0x7u << DMAC_CTRLB_FC_Pos) /**< \brief (DMAC_CTRLB) Flow Control */ +#define DMAC_CTRLB_FC_MEM2MEM_DMA_FC (0x0u << 21) /**< \brief (DMAC_CTRLB) Memory-to-Memory Transfer DMAC is flow controller */ +#define DMAC_CTRLB_FC_MEM2PER_DMA_FC (0x1u << 21) /**< \brief (DMAC_CTRLB) Memory-to-Peripheral Transfer DMAC is flow controller */ +#define DMAC_CTRLB_FC_PER2MEM_DMA_FC (0x2u << 21) /**< \brief (DMAC_CTRLB) Peripheral-to-Memory Transfer DMAC is flow controller */ +#define DMAC_CTRLB_FC_PER2PER_DMA_FC (0x3u << 21) /**< \brief (DMAC_CTRLB) Peripheral-to-Peripheral Transfer DMAC is flow controller */ +#define DMAC_CTRLB_SRC_INCR_Pos 24 +#define DMAC_CTRLB_SRC_INCR_Msk (0x3u << DMAC_CTRLB_SRC_INCR_Pos) /**< \brief (DMAC_CTRLB) Incrementing, Decrementing or Fixed Address for the Source */ +#define DMAC_CTRLB_SRC_INCR_INCREMENTING (0x0u << 24) /**< \brief (DMAC_CTRLB) The source address is incremented */ +#define DMAC_CTRLB_SRC_INCR_DECREMENTING (0x1u << 24) /**< \brief (DMAC_CTRLB) The source address is decremented */ +#define DMAC_CTRLB_SRC_INCR_FIXED (0x2u << 24) /**< \brief (DMAC_CTRLB) The source address remains unchanged */ +#define DMAC_CTRLB_DST_INCR_Pos 28 +#define DMAC_CTRLB_DST_INCR_Msk (0x3u << DMAC_CTRLB_DST_INCR_Pos) /**< \brief (DMAC_CTRLB) Incrementing, Decrementing or Fixed Address for the Destination */ +#define DMAC_CTRLB_DST_INCR_INCREMENTING (0x0u << 28) /**< \brief (DMAC_CTRLB) The destination address is incremented */ +#define DMAC_CTRLB_DST_INCR_DECREMENTING (0x1u << 28) /**< \brief (DMAC_CTRLB) The destination address is decremented */ +#define DMAC_CTRLB_DST_INCR_FIXED (0x2u << 28) /**< \brief (DMAC_CTRLB) The destination address remains unchanged */ +#define DMAC_CTRLB_IEN (0x1u << 30) /**< \brief (DMAC_CTRLB) */ +/* -------- DMAC_CFG : (DMAC Offset: N/A) DMAC Channel Configuration Register -------- */ +#define DMAC_CFG_SRC_PER_Pos 0 +#define DMAC_CFG_SRC_PER_Msk (0xfu << DMAC_CFG_SRC_PER_Pos) /**< \brief (DMAC_CFG) Source with Peripheral identifier */ +#define DMAC_CFG_SRC_PER(value) ((DMAC_CFG_SRC_PER_Msk & ((value) << DMAC_CFG_SRC_PER_Pos))) +#define DMAC_CFG_DST_PER_Pos 4 +#define DMAC_CFG_DST_PER_Msk (0xfu << DMAC_CFG_DST_PER_Pos) /**< \brief (DMAC_CFG) Destination with Peripheral identifier */ +#define DMAC_CFG_DST_PER(value) ((DMAC_CFG_DST_PER_Msk & ((value) << DMAC_CFG_DST_PER_Pos))) +#define DMAC_CFG_SRC_H2SEL (0x1u << 9) /**< \brief (DMAC_CFG) Software or Hardware Selection for the Source */ +#define DMAC_CFG_SRC_H2SEL_SW (0x0u << 9) /**< \brief (DMAC_CFG) Software handshaking interface is used to trigger a transfer request. */ +#define DMAC_CFG_SRC_H2SEL_HW (0x1u << 9) /**< \brief (DMAC_CFG) Hardware handshaking interface is used to trigger a transfer request. */ +#define DMAC_CFG_DST_H2SEL (0x1u << 13) /**< \brief (DMAC_CFG) Software or Hardware Selection for the Destination */ +#define DMAC_CFG_DST_H2SEL_SW (0x0u << 13) /**< \brief (DMAC_CFG) Software handshaking interface is used to trigger a transfer request. */ +#define DMAC_CFG_DST_H2SEL_HW (0x1u << 13) /**< \brief (DMAC_CFG) Hardware handshaking interface is used to trigger a transfer request. */ +#define DMAC_CFG_SOD (0x1u << 16) /**< \brief (DMAC_CFG) Stop On Done */ +#define DMAC_CFG_SOD_DISABLE (0x0u << 16) /**< \brief (DMAC_CFG) STOP ON DONE disabled, the descriptor fetch operation ignores DONE Field of CTRLA register. */ +#define DMAC_CFG_SOD_ENABLE (0x1u << 16) /**< \brief (DMAC_CFG) STOP ON DONE activated, the DMAC module is automatically disabled if DONE FIELD is set to 1. */ +#define DMAC_CFG_LOCK_IF (0x1u << 20) /**< \brief (DMAC_CFG) Interface Lock */ +#define DMAC_CFG_LOCK_IF_DISABLE (0x0u << 20) /**< \brief (DMAC_CFG) Interface Lock capability is disabled */ +#define DMAC_CFG_LOCK_IF_ENABLE (0x1u << 20) /**< \brief (DMAC_CFG) Interface Lock capability is enabled */ +#define DMAC_CFG_LOCK_B (0x1u << 21) /**< \brief (DMAC_CFG) Bus Lock */ +#define DMAC_CFG_LOCK_B_DISABLE (0x0u << 21) /**< \brief (DMAC_CFG) AHB Bus Locking capability is disabled. */ +#define DMAC_CFG_LOCK_IF_L (0x1u << 22) /**< \brief (DMAC_CFG) Master Interface Arbiter Lock */ +#define DMAC_CFG_LOCK_IF_L_CHUNK (0x0u << 22) /**< \brief (DMAC_CFG) The Master Interface Arbiter is locked by the channel x for a chunk transfer. */ +#define DMAC_CFG_LOCK_IF_L_BUFFER (0x1u << 22) /**< \brief (DMAC_CFG) The Master Interface Arbiter is locked by the channel x for a buffer transfer. */ +#define DMAC_CFG_AHB_PROT_Pos 24 +#define DMAC_CFG_AHB_PROT_Msk (0x7u << DMAC_CFG_AHB_PROT_Pos) /**< \brief (DMAC_CFG) AHB Protection */ +#define DMAC_CFG_AHB_PROT(value) ((DMAC_CFG_AHB_PROT_Msk & ((value) << DMAC_CFG_AHB_PROT_Pos))) +#define DMAC_CFG_FIFOCFG_Pos 28 +#define DMAC_CFG_FIFOCFG_Msk (0x3u << DMAC_CFG_FIFOCFG_Pos) /**< \brief (DMAC_CFG) FIFO Configuration */ +#define DMAC_CFG_FIFOCFG_ALAP_CFG (0x0u << 28) /**< \brief (DMAC_CFG) The largest defined length AHB burst is performed on the destination AHB interface. */ +#define DMAC_CFG_FIFOCFG_HALF_CFG (0x1u << 28) /**< \brief (DMAC_CFG) When half FIFO size is available/filled, a source/destination request is serviced. */ +#define DMAC_CFG_FIFOCFG_ASAP_CFG (0x2u << 28) /**< \brief (DMAC_CFG) When there is enough space/data available to perform a single AHB access, then the request is serviced. */ +/* -------- DMAC_WPMR : (DMAC Offset: 0x1E4) DMAC Write Protect Mode Register -------- */ +#define DMAC_WPMR_WPEN (0x1u << 0) /**< \brief (DMAC_WPMR) Write Protect Enable */ +#define DMAC_WPMR_WPKEY_Pos 8 +#define DMAC_WPMR_WPKEY_Msk (0xffffffu << DMAC_WPMR_WPKEY_Pos) /**< \brief (DMAC_WPMR) Write Protect KEY */ +#define DMAC_WPMR_WPKEY(value) ((DMAC_WPMR_WPKEY_Msk & ((value) << DMAC_WPMR_WPKEY_Pos))) +/* -------- DMAC_WPSR : (DMAC Offset: 0x1E8) DMAC Write Protect Status Register -------- */ +#define DMAC_WPSR_WPVS (0x1u << 0) /**< \brief (DMAC_WPSR) Write Protect Violation Status */ +#define DMAC_WPSR_WPVSRC_Pos 8 +#define DMAC_WPSR_WPVSRC_Msk (0xffffu << DMAC_WPSR_WPVSRC_Pos) /**< \brief (DMAC_WPSR) Write Protect Violation Source */ + +/*@}*/ + + +#endif /* _SAM3XA_DMAC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_efc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_efc.h new file mode 100644 index 000000000..ca54f4303 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_efc.h @@ -0,0 +1,76 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_EFC_COMPONENT_ +#define _SAM3XA_EFC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Embedded Flash Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_EFC Embedded Flash Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Efc hardware registers */ +typedef struct { + RwReg EEFC_FMR; /**< \brief (Efc Offset: 0x00) EEFC Flash Mode Register */ + WoReg EEFC_FCR; /**< \brief (Efc Offset: 0x04) EEFC Flash Command Register */ + RoReg EEFC_FSR; /**< \brief (Efc Offset: 0x08) EEFC Flash Status Register */ + RoReg EEFC_FRR; /**< \brief (Efc Offset: 0x0C) EEFC Flash Result Register */ +} Efc; +#endif /* __ASSEMBLY__ */ +/* -------- EEFC_FMR : (EFC Offset: 0x00) EEFC Flash Mode Register -------- */ +#define EEFC_FMR_FRDY (0x1u << 0) /**< \brief (EEFC_FMR) Ready Interrupt Enable */ +#define EEFC_FMR_FWS_Pos 8 +#define EEFC_FMR_FWS_Msk (0xfu << EEFC_FMR_FWS_Pos) /**< \brief (EEFC_FMR) Flash Wait State */ +#define EEFC_FMR_FWS(value) ((EEFC_FMR_FWS_Msk & ((value) << EEFC_FMR_FWS_Pos))) +#define EEFC_FMR_SCOD (0x1u << 16) /**< \brief (EEFC_FMR) Sequential Code Optimization Disable */ +#define EEFC_FMR_FAM (0x1u << 24) /**< \brief (EEFC_FMR) Flash Access Mode */ +/* -------- EEFC_FCR : (EFC Offset: 0x04) EEFC Flash Command Register -------- */ +#define EEFC_FCR_FCMD_Pos 0 +#define EEFC_FCR_FCMD_Msk (0xffu << EEFC_FCR_FCMD_Pos) /**< \brief (EEFC_FCR) Flash Command */ +#define EEFC_FCR_FCMD(value) ((EEFC_FCR_FCMD_Msk & ((value) << EEFC_FCR_FCMD_Pos))) +#define EEFC_FCR_FARG_Pos 8 +#define EEFC_FCR_FARG_Msk (0xffffu << EEFC_FCR_FARG_Pos) /**< \brief (EEFC_FCR) Flash Command Argument */ +#define EEFC_FCR_FARG(value) ((EEFC_FCR_FARG_Msk & ((value) << EEFC_FCR_FARG_Pos))) +#define EEFC_FCR_FKEY_Pos 24 +#define EEFC_FCR_FKEY_Msk (0xffu << EEFC_FCR_FKEY_Pos) /**< \brief (EEFC_FCR) Flash Writing Protection Key */ +#define EEFC_FCR_FKEY(value) ((EEFC_FCR_FKEY_Msk & ((value) << EEFC_FCR_FKEY_Pos))) +/* -------- EEFC_FSR : (EFC Offset: 0x08) EEFC Flash Status Register -------- */ +#define EEFC_FSR_FRDY (0x1u << 0) /**< \brief (EEFC_FSR) Flash Ready Status */ +#define EEFC_FSR_FCMDE (0x1u << 1) /**< \brief (EEFC_FSR) Flash Command Error Status */ +#define EEFC_FSR_FLOCKE (0x1u << 2) /**< \brief (EEFC_FSR) Flash Lock Error Status */ +/* -------- EEFC_FRR : (EFC Offset: 0x0C) EEFC Flash Result Register -------- */ +#define EEFC_FRR_FVALUE_Pos 0 +#define EEFC_FRR_FVALUE_Msk (0xffffffffu << EEFC_FRR_FVALUE_Pos) /**< \brief (EEFC_FRR) Flash Result Value */ + +/*@}*/ + + +#endif /* _SAM3XA_EFC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_emac.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_emac.h new file mode 100644 index 000000000..9ac1aec47 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_emac.h @@ -0,0 +1,335 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_EMAC_COMPONENT_ +#define _SAM3XA_EMAC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Ethernet MAC 10/100 */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_EMAC Ethernet MAC 10/100 */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief EmacSa hardware registers */ +typedef struct { + RwReg EMAC_SAxB; /**< \brief (EmacSa Offset: 0x0) Specific Address 1 Bottom Register */ + RwReg EMAC_SAxT; /**< \brief (EmacSa Offset: 0x4) Specific Address 1 Top Register */ +} EmacSa; +/** \brief Emac hardware registers */ +#define EMACSA_NUMBER 4 +typedef struct { + RwReg EMAC_NCR; /**< \brief (Emac Offset: 0x00) Network Control Register */ + RwReg EMAC_NCFGR; /**< \brief (Emac Offset: 0x04) Network Configuration Register */ + RoReg EMAC_NSR; /**< \brief (Emac Offset: 0x08) Network Status Register */ + RoReg Reserved1[2]; + RwReg EMAC_TSR; /**< \brief (Emac Offset: 0x14) Transmit Status Register */ + RwReg EMAC_RBQP; /**< \brief (Emac Offset: 0x18) Receive Buffer Queue Pointer Register */ + RwReg EMAC_TBQP; /**< \brief (Emac Offset: 0x1C) Transmit Buffer Queue Pointer Register */ + RwReg EMAC_RSR; /**< \brief (Emac Offset: 0x20) Receive Status Register */ + RwReg EMAC_ISR; /**< \brief (Emac Offset: 0x24) Interrupt Status Register */ + WoReg EMAC_IER; /**< \brief (Emac Offset: 0x28) Interrupt Enable Register */ + WoReg EMAC_IDR; /**< \brief (Emac Offset: 0x2C) Interrupt Disable Register */ + RoReg EMAC_IMR; /**< \brief (Emac Offset: 0x30) Interrupt Mask Register */ + RwReg EMAC_MAN; /**< \brief (Emac Offset: 0x34) Phy Maintenance Register */ + RwReg EMAC_PTR; /**< \brief (Emac Offset: 0x38) Pause Time Register */ + RwReg EMAC_PFR; /**< \brief (Emac Offset: 0x3C) Pause Frames Received Register */ + RwReg EMAC_FTO; /**< \brief (Emac Offset: 0x40) Frames Transmitted Ok Register */ + RwReg EMAC_SCF; /**< \brief (Emac Offset: 0x44) Single Collision Frames Register */ + RwReg EMAC_MCF; /**< \brief (Emac Offset: 0x48) Multiple Collision Frames Register */ + RwReg EMAC_FRO; /**< \brief (Emac Offset: 0x4C) Frames Received Ok Register */ + RwReg EMAC_FCSE; /**< \brief (Emac Offset: 0x50) Frame Check Sequence Errors Register */ + RwReg EMAC_ALE; /**< \brief (Emac Offset: 0x54) Alignment Errors Register */ + RwReg EMAC_DTF; /**< \brief (Emac Offset: 0x58) Deferred Transmission Frames Register */ + RwReg EMAC_LCOL; /**< \brief (Emac Offset: 0x5C) Late Collisions Register */ + RwReg EMAC_ECOL; /**< \brief (Emac Offset: 0x60) Excessive Collisions Register */ + RwReg EMAC_TUND; /**< \brief (Emac Offset: 0x64) Transmit Underrun Errors Register */ + RwReg EMAC_CSE; /**< \brief (Emac Offset: 0x68) Carrier Sense Errors Register */ + RwReg EMAC_RRE; /**< \brief (Emac Offset: 0x6C) Receive Resource Errors Register */ + RwReg EMAC_ROV; /**< \brief (Emac Offset: 0x70) Receive Overrun Errors Register */ + RwReg EMAC_RSE; /**< \brief (Emac Offset: 0x74) Receive Symbol Errors Register */ + RwReg EMAC_ELE; /**< \brief (Emac Offset: 0x78) Excessive Length Errors Register */ + RwReg EMAC_RJA; /**< \brief (Emac Offset: 0x7C) Receive Jabbers Register */ + RwReg EMAC_USF; /**< \brief (Emac Offset: 0x80) Undersize Frames Register */ + RwReg EMAC_STE; /**< \brief (Emac Offset: 0x84) SQE Test Errors Register */ + RwReg EMAC_RLE; /**< \brief (Emac Offset: 0x88) Received Length Field Mismatch Register */ + RoReg Reserved2[1]; + RwReg EMAC_HRB; /**< \brief (Emac Offset: 0x90) Hash Register Bottom [31:0] Register */ + RwReg EMAC_HRT; /**< \brief (Emac Offset: 0x94) Hash Register Top [63:32] Register */ + EmacSa EMAC_SA[EMACSA_NUMBER]; /**< \brief (Emac Offset: 0x98) sa = 1 .. 4 */ + RwReg EMAC_TID; /**< \brief (Emac Offset: 0xB8) Type ID Checking Register */ + RoReg Reserved3[1]; + RwReg EMAC_USRIO; /**< \brief (Emac Offset: 0xC0) User Input/Output Register */ +} Emac; +#endif /* __ASSEMBLY__ */ +/* -------- EMAC_NCR : (EMAC Offset: 0x00) Network Control Register -------- */ +#define EMAC_NCR_LB (0x1u << 0) /**< \brief (EMAC_NCR) LoopBack */ +#define EMAC_NCR_LLB (0x1u << 1) /**< \brief (EMAC_NCR) Loopback local */ +#define EMAC_NCR_RE (0x1u << 2) /**< \brief (EMAC_NCR) Receive enable */ +#define EMAC_NCR_TE (0x1u << 3) /**< \brief (EMAC_NCR) Transmit enable */ +#define EMAC_NCR_MPE (0x1u << 4) /**< \brief (EMAC_NCR) Management port enable */ +#define EMAC_NCR_CLRSTAT (0x1u << 5) /**< \brief (EMAC_NCR) Clear statistics registers */ +#define EMAC_NCR_INCSTAT (0x1u << 6) /**< \brief (EMAC_NCR) Increment statistics registers */ +#define EMAC_NCR_WESTAT (0x1u << 7) /**< \brief (EMAC_NCR) Write enable for statistics registers */ +#define EMAC_NCR_BP (0x1u << 8) /**< \brief (EMAC_NCR) Back pressure */ +#define EMAC_NCR_TSTART (0x1u << 9) /**< \brief (EMAC_NCR) Start transmission */ +#define EMAC_NCR_THALT (0x1u << 10) /**< \brief (EMAC_NCR) Transmit halt */ +/* -------- EMAC_NCFGR : (EMAC Offset: 0x04) Network Configuration Register -------- */ +#define EMAC_NCFGR_SPD (0x1u << 0) /**< \brief (EMAC_NCFGR) Speed */ +#define EMAC_NCFGR_FD (0x1u << 1) /**< \brief (EMAC_NCFGR) Full Duplex */ +#define EMAC_NCFGR_JFRAME (0x1u << 3) /**< \brief (EMAC_NCFGR) Jumbo Frames */ +#define EMAC_NCFGR_CAF (0x1u << 4) /**< \brief (EMAC_NCFGR) Copy All Frames */ +#define EMAC_NCFGR_NBC (0x1u << 5) /**< \brief (EMAC_NCFGR) No Broadcast */ +#define EMAC_NCFGR_MTI (0x1u << 6) /**< \brief (EMAC_NCFGR) Multicast Hash Enable */ +#define EMAC_NCFGR_UNI (0x1u << 7) /**< \brief (EMAC_NCFGR) Unicast Hash Enable */ +#define EMAC_NCFGR_BIG (0x1u << 8) /**< \brief (EMAC_NCFGR) Receive 1536 bytes frames */ +#define EMAC_NCFGR_CLK_Pos 10 +#define EMAC_NCFGR_CLK_Msk (0x3u << EMAC_NCFGR_CLK_Pos) /**< \brief (EMAC_NCFGR) MDC clock divider */ +#define EMAC_NCFGR_CLK_MCK_8 (0x0u << 10) /**< \brief (EMAC_NCFGR) MCK divided by 8 (MCK up to 20 MHz). */ +#define EMAC_NCFGR_CLK_MCK_16 (0x1u << 10) /**< \brief (EMAC_NCFGR) MCK divided by 16 (MCK up to 40 MHz). */ +#define EMAC_NCFGR_CLK_MCK_32 (0x2u << 10) /**< \brief (EMAC_NCFGR) MCK divided by 32 (MCK up to 80 MHz). */ +#define EMAC_NCFGR_CLK_MCK_64 (0x3u << 10) /**< \brief (EMAC_NCFGR) MCK divided by 64 (MCK up to 160 MHz). */ +#define EMAC_NCFGR_RTY (0x1u << 12) /**< \brief (EMAC_NCFGR) Retry test */ +#define EMAC_NCFGR_PAE (0x1u << 13) /**< \brief (EMAC_NCFGR) Pause Enable */ +#define EMAC_NCFGR_RBOF_Pos 14 +#define EMAC_NCFGR_RBOF_Msk (0x3u << EMAC_NCFGR_RBOF_Pos) /**< \brief (EMAC_NCFGR) Receive Buffer Offset */ +#define EMAC_NCFGR_RBOF_OFFSET_0 (0x0u << 14) /**< \brief (EMAC_NCFGR) No offset from start of receive buffer. */ +#define EMAC_NCFGR_RBOF_OFFSET_1 (0x1u << 14) /**< \brief (EMAC_NCFGR) One-byte offset from start of receive buffer. */ +#define EMAC_NCFGR_RBOF_OFFSET_2 (0x2u << 14) /**< \brief (EMAC_NCFGR) Two-byte offset from start of receive buffer. */ +#define EMAC_NCFGR_RBOF_OFFSET_3 (0x3u << 14) /**< \brief (EMAC_NCFGR) Three-byte offset from start of receive buffer. */ +#define EMAC_NCFGR_RLCE (0x1u << 16) /**< \brief (EMAC_NCFGR) Receive Length field Checking Enable */ +#define EMAC_NCFGR_DRFCS (0x1u << 17) /**< \brief (EMAC_NCFGR) Discard Receive FCS */ +#define EMAC_NCFGR_EFRHD (0x1u << 18) /**< \brief (EMAC_NCFGR) */ +#define EMAC_NCFGR_IRXFCS (0x1u << 19) /**< \brief (EMAC_NCFGR) Ignore RX FCS */ +/* -------- EMAC_NSR : (EMAC Offset: 0x08) Network Status Register -------- */ +#define EMAC_NSR_MDIO (0x1u << 1) /**< \brief (EMAC_NSR) */ +#define EMAC_NSR_IDLE (0x1u << 2) /**< \brief (EMAC_NSR) */ +/* -------- EMAC_TSR : (EMAC Offset: 0x14) Transmit Status Register -------- */ +#define EMAC_TSR_UBR (0x1u << 0) /**< \brief (EMAC_TSR) Used Bit Read */ +#define EMAC_TSR_COL (0x1u << 1) /**< \brief (EMAC_TSR) Collision Occurred */ +#define EMAC_TSR_RLES (0x1u << 2) /**< \brief (EMAC_TSR) Retry Limit exceeded */ +#define EMAC_TSR_TGO (0x1u << 3) /**< \brief (EMAC_TSR) Transmit Go */ +#define EMAC_TSR_BEX (0x1u << 4) /**< \brief (EMAC_TSR) Buffers exhausted mid frame */ +#define EMAC_TSR_COMP (0x1u << 5) /**< \brief (EMAC_TSR) Transmit Complete */ +#define EMAC_TSR_UND (0x1u << 6) /**< \brief (EMAC_TSR) Transmit Underrun */ +/* -------- EMAC_RBQP : (EMAC Offset: 0x18) Receive Buffer Queue Pointer Register -------- */ +#define EMAC_RBQP_ADDR_Pos 2 +#define EMAC_RBQP_ADDR_Msk (0x3fffffffu << EMAC_RBQP_ADDR_Pos) /**< \brief (EMAC_RBQP) Receive buffer queue pointer address */ +#define EMAC_RBQP_ADDR(value) ((EMAC_RBQP_ADDR_Msk & ((value) << EMAC_RBQP_ADDR_Pos))) +/* -------- EMAC_TBQP : (EMAC Offset: 0x1C) Transmit Buffer Queue Pointer Register -------- */ +#define EMAC_TBQP_ADDR_Pos 2 +#define EMAC_TBQP_ADDR_Msk (0x3fffffffu << EMAC_TBQP_ADDR_Pos) /**< \brief (EMAC_TBQP) Transmit buffer queue pointer address */ +#define EMAC_TBQP_ADDR(value) ((EMAC_TBQP_ADDR_Msk & ((value) << EMAC_TBQP_ADDR_Pos))) +/* -------- EMAC_RSR : (EMAC Offset: 0x20) Receive Status Register -------- */ +#define EMAC_RSR_BNA (0x1u << 0) /**< \brief (EMAC_RSR) Buffer Not Available */ +#define EMAC_RSR_REC (0x1u << 1) /**< \brief (EMAC_RSR) Frame Received */ +#define EMAC_RSR_OVR (0x1u << 2) /**< \brief (EMAC_RSR) Receive Overrun */ +/* -------- EMAC_ISR : (EMAC Offset: 0x24) Interrupt Status Register -------- */ +#define EMAC_ISR_MFD (0x1u << 0) /**< \brief (EMAC_ISR) Management Frame Done */ +#define EMAC_ISR_RCOMP (0x1u << 1) /**< \brief (EMAC_ISR) Receive Complete */ +#define EMAC_ISR_RXUBR (0x1u << 2) /**< \brief (EMAC_ISR) Receive Used Bit Read */ +#define EMAC_ISR_TXUBR (0x1u << 3) /**< \brief (EMAC_ISR) Transmit Used Bit Read */ +#define EMAC_ISR_TUND (0x1u << 4) /**< \brief (EMAC_ISR) Ethernet Transmit Buffer Underrun */ +#define EMAC_ISR_RLEX (0x1u << 5) /**< \brief (EMAC_ISR) Retry Limit Exceeded */ +#define EMAC_ISR_TXERR (0x1u << 6) /**< \brief (EMAC_ISR) Transmit Error */ +#define EMAC_ISR_TCOMP (0x1u << 7) /**< \brief (EMAC_ISR) Transmit Complete */ +#define EMAC_ISR_ROVR (0x1u << 10) /**< \brief (EMAC_ISR) Receive Overrun */ +#define EMAC_ISR_HRESP (0x1u << 11) /**< \brief (EMAC_ISR) Hresp not OK */ +#define EMAC_ISR_PFRE (0x1u << 12) /**< \brief (EMAC_ISR) Pause Frame Received */ +#define EMAC_ISR_PTZ (0x1u << 13) /**< \brief (EMAC_ISR) Pause Time Zero */ +/* -------- EMAC_IER : (EMAC Offset: 0x28) Interrupt Enable Register -------- */ +#define EMAC_IER_MFD (0x1u << 0) /**< \brief (EMAC_IER) Management Frame sent */ +#define EMAC_IER_RCOMP (0x1u << 1) /**< \brief (EMAC_IER) Receive Complete */ +#define EMAC_IER_RXUBR (0x1u << 2) /**< \brief (EMAC_IER) Receive Used Bit Read */ +#define EMAC_IER_TXUBR (0x1u << 3) /**< \brief (EMAC_IER) Transmit Used Bit Read */ +#define EMAC_IER_TUND (0x1u << 4) /**< \brief (EMAC_IER) Ethernet Transmit Buffer Underrun */ +#define EMAC_IER_RLE (0x1u << 5) /**< \brief (EMAC_IER) Retry Limit Exceeded */ +#define EMAC_IER_TXERR (0x1u << 6) /**< \brief (EMAC_IER) */ +#define EMAC_IER_TCOMP (0x1u << 7) /**< \brief (EMAC_IER) Transmit Complete */ +#define EMAC_IER_ROVR (0x1u << 10) /**< \brief (EMAC_IER) Receive Overrun */ +#define EMAC_IER_HRESP (0x1u << 11) /**< \brief (EMAC_IER) Hresp not OK */ +#define EMAC_IER_PFR (0x1u << 12) /**< \brief (EMAC_IER) Pause Frame Received */ +#define EMAC_IER_PTZ (0x1u << 13) /**< \brief (EMAC_IER) Pause Time Zero */ +/* -------- EMAC_IDR : (EMAC Offset: 0x2C) Interrupt Disable Register -------- */ +#define EMAC_IDR_MFD (0x1u << 0) /**< \brief (EMAC_IDR) Management Frame sent */ +#define EMAC_IDR_RCOMP (0x1u << 1) /**< \brief (EMAC_IDR) Receive Complete */ +#define EMAC_IDR_RXUBR (0x1u << 2) /**< \brief (EMAC_IDR) Receive Used Bit Read */ +#define EMAC_IDR_TXUBR (0x1u << 3) /**< \brief (EMAC_IDR) Transmit Used Bit Read */ +#define EMAC_IDR_TUND (0x1u << 4) /**< \brief (EMAC_IDR) Ethernet Transmit Buffer Underrun */ +#define EMAC_IDR_RLE (0x1u << 5) /**< \brief (EMAC_IDR) Retry Limit Exceeded */ +#define EMAC_IDR_TXERR (0x1u << 6) /**< \brief (EMAC_IDR) */ +#define EMAC_IDR_TCOMP (0x1u << 7) /**< \brief (EMAC_IDR) Transmit Complete */ +#define EMAC_IDR_ROVR (0x1u << 10) /**< \brief (EMAC_IDR) Receive Overrun */ +#define EMAC_IDR_HRESP (0x1u << 11) /**< \brief (EMAC_IDR) Hresp not OK */ +#define EMAC_IDR_PFR (0x1u << 12) /**< \brief (EMAC_IDR) Pause Frame Received */ +#define EMAC_IDR_PTZ (0x1u << 13) /**< \brief (EMAC_IDR) Pause Time Zero */ +/* -------- EMAC_IMR : (EMAC Offset: 0x30) Interrupt Mask Register -------- */ +#define EMAC_IMR_MFD (0x1u << 0) /**< \brief (EMAC_IMR) Management Frame sent */ +#define EMAC_IMR_RCOMP (0x1u << 1) /**< \brief (EMAC_IMR) Receive Complete */ +#define EMAC_IMR_RXUBR (0x1u << 2) /**< \brief (EMAC_IMR) Receive Used Bit Read */ +#define EMAC_IMR_TXUBR (0x1u << 3) /**< \brief (EMAC_IMR) Transmit Used Bit Read */ +#define EMAC_IMR_TUND (0x1u << 4) /**< \brief (EMAC_IMR) Ethernet Transmit Buffer Underrun */ +#define EMAC_IMR_RLE (0x1u << 5) /**< \brief (EMAC_IMR) Retry Limit Exceeded */ +#define EMAC_IMR_TXERR (0x1u << 6) /**< \brief (EMAC_IMR) */ +#define EMAC_IMR_TCOMP (0x1u << 7) /**< \brief (EMAC_IMR) Transmit Complete */ +#define EMAC_IMR_ROVR (0x1u << 10) /**< \brief (EMAC_IMR) Receive Overrun */ +#define EMAC_IMR_HRESP (0x1u << 11) /**< \brief (EMAC_IMR) Hresp not OK */ +#define EMAC_IMR_PFR (0x1u << 12) /**< \brief (EMAC_IMR) Pause Frame Received */ +#define EMAC_IMR_PTZ (0x1u << 13) /**< \brief (EMAC_IMR) Pause Time Zero */ +/* -------- EMAC_MAN : (EMAC Offset: 0x34) Phy Maintenance Register -------- */ +#define EMAC_MAN_DATA_Pos 0 +#define EMAC_MAN_DATA_Msk (0xffffu << EMAC_MAN_DATA_Pos) /**< \brief (EMAC_MAN) */ +#define EMAC_MAN_DATA(value) ((EMAC_MAN_DATA_Msk & ((value) << EMAC_MAN_DATA_Pos))) +#define EMAC_MAN_CODE_Pos 16 +#define EMAC_MAN_CODE_Msk (0x3u << EMAC_MAN_CODE_Pos) /**< \brief (EMAC_MAN) */ +#define EMAC_MAN_CODE(value) ((EMAC_MAN_CODE_Msk & ((value) << EMAC_MAN_CODE_Pos))) +#define EMAC_MAN_REGA_Pos 18 +#define EMAC_MAN_REGA_Msk (0x1fu << EMAC_MAN_REGA_Pos) /**< \brief (EMAC_MAN) Register Address */ +#define EMAC_MAN_REGA(value) ((EMAC_MAN_REGA_Msk & ((value) << EMAC_MAN_REGA_Pos))) +#define EMAC_MAN_PHYA_Pos 23 +#define EMAC_MAN_PHYA_Msk (0x1fu << EMAC_MAN_PHYA_Pos) /**< \brief (EMAC_MAN) PHY Address */ +#define EMAC_MAN_PHYA(value) ((EMAC_MAN_PHYA_Msk & ((value) << EMAC_MAN_PHYA_Pos))) +#define EMAC_MAN_RW_Pos 28 +#define EMAC_MAN_RW_Msk (0x3u << EMAC_MAN_RW_Pos) /**< \brief (EMAC_MAN) Read-write */ +#define EMAC_MAN_RW(value) ((EMAC_MAN_RW_Msk & ((value) << EMAC_MAN_RW_Pos))) +#define EMAC_MAN_SOF_Pos 30 +#define EMAC_MAN_SOF_Msk (0x3u << EMAC_MAN_SOF_Pos) /**< \brief (EMAC_MAN) Start of frame */ +#define EMAC_MAN_SOF(value) ((EMAC_MAN_SOF_Msk & ((value) << EMAC_MAN_SOF_Pos))) +/* -------- EMAC_PTR : (EMAC Offset: 0x38) Pause Time Register -------- */ +#define EMAC_PTR_PTIME_Pos 0 +#define EMAC_PTR_PTIME_Msk (0xffffu << EMAC_PTR_PTIME_Pos) /**< \brief (EMAC_PTR) Pause Time */ +#define EMAC_PTR_PTIME(value) ((EMAC_PTR_PTIME_Msk & ((value) << EMAC_PTR_PTIME_Pos))) +/* -------- EMAC_PFR : (EMAC Offset: 0x3C) Pause Frames Received Register -------- */ +#define EMAC_PFR_FROK_Pos 0 +#define EMAC_PFR_FROK_Msk (0xffffu << EMAC_PFR_FROK_Pos) /**< \brief (EMAC_PFR) Pause Frames received OK */ +#define EMAC_PFR_FROK(value) ((EMAC_PFR_FROK_Msk & ((value) << EMAC_PFR_FROK_Pos))) +/* -------- EMAC_FTO : (EMAC Offset: 0x40) Frames Transmitted Ok Register -------- */ +#define EMAC_FTO_FTOK_Pos 0 +#define EMAC_FTO_FTOK_Msk (0xffffffu << EMAC_FTO_FTOK_Pos) /**< \brief (EMAC_FTO) Frames Transmitted OK */ +#define EMAC_FTO_FTOK(value) ((EMAC_FTO_FTOK_Msk & ((value) << EMAC_FTO_FTOK_Pos))) +/* -------- EMAC_SCF : (EMAC Offset: 0x44) Single Collision Frames Register -------- */ +#define EMAC_SCF_SCF_Pos 0 +#define EMAC_SCF_SCF_Msk (0xffffu << EMAC_SCF_SCF_Pos) /**< \brief (EMAC_SCF) Single Collision Frames */ +#define EMAC_SCF_SCF(value) ((EMAC_SCF_SCF_Msk & ((value) << EMAC_SCF_SCF_Pos))) +/* -------- EMAC_MCF : (EMAC Offset: 0x48) Multiple Collision Frames Register -------- */ +#define EMAC_MCF_MCF_Pos 0 +#define EMAC_MCF_MCF_Msk (0xffffu << EMAC_MCF_MCF_Pos) /**< \brief (EMAC_MCF) Multicollision Frames */ +#define EMAC_MCF_MCF(value) ((EMAC_MCF_MCF_Msk & ((value) << EMAC_MCF_MCF_Pos))) +/* -------- EMAC_FRO : (EMAC Offset: 0x4C) Frames Received Ok Register -------- */ +#define EMAC_FRO_FROK_Pos 0 +#define EMAC_FRO_FROK_Msk (0xffffffu << EMAC_FRO_FROK_Pos) /**< \brief (EMAC_FRO) Frames Received OK */ +#define EMAC_FRO_FROK(value) ((EMAC_FRO_FROK_Msk & ((value) << EMAC_FRO_FROK_Pos))) +/* -------- EMAC_FCSE : (EMAC Offset: 0x50) Frame Check Sequence Errors Register -------- */ +#define EMAC_FCSE_FCSE_Pos 0 +#define EMAC_FCSE_FCSE_Msk (0xffu << EMAC_FCSE_FCSE_Pos) /**< \brief (EMAC_FCSE) Frame Check Sequence Errors */ +#define EMAC_FCSE_FCSE(value) ((EMAC_FCSE_FCSE_Msk & ((value) << EMAC_FCSE_FCSE_Pos))) +/* -------- EMAC_ALE : (EMAC Offset: 0x54) Alignment Errors Register -------- */ +#define EMAC_ALE_ALE_Pos 0 +#define EMAC_ALE_ALE_Msk (0xffu << EMAC_ALE_ALE_Pos) /**< \brief (EMAC_ALE) Alignment Errors */ +#define EMAC_ALE_ALE(value) ((EMAC_ALE_ALE_Msk & ((value) << EMAC_ALE_ALE_Pos))) +/* -------- EMAC_DTF : (EMAC Offset: 0x58) Deferred Transmission Frames Register -------- */ +#define EMAC_DTF_DTF_Pos 0 +#define EMAC_DTF_DTF_Msk (0xffffu << EMAC_DTF_DTF_Pos) /**< \brief (EMAC_DTF) Deferred Transmission Frames */ +#define EMAC_DTF_DTF(value) ((EMAC_DTF_DTF_Msk & ((value) << EMAC_DTF_DTF_Pos))) +/* -------- EMAC_LCOL : (EMAC Offset: 0x5C) Late Collisions Register -------- */ +#define EMAC_LCOL_LCOL_Pos 0 +#define EMAC_LCOL_LCOL_Msk (0xffu << EMAC_LCOL_LCOL_Pos) /**< \brief (EMAC_LCOL) Late Collisions */ +#define EMAC_LCOL_LCOL(value) ((EMAC_LCOL_LCOL_Msk & ((value) << EMAC_LCOL_LCOL_Pos))) +/* -------- EMAC_ECOL : (EMAC Offset: 0x60) Excessive Collisions Register -------- */ +#define EMAC_ECOL_EXCOL_Pos 0 +#define EMAC_ECOL_EXCOL_Msk (0xffu << EMAC_ECOL_EXCOL_Pos) /**< \brief (EMAC_ECOL) Excessive Collisions */ +#define EMAC_ECOL_EXCOL(value) ((EMAC_ECOL_EXCOL_Msk & ((value) << EMAC_ECOL_EXCOL_Pos))) +/* -------- EMAC_TUND : (EMAC Offset: 0x64) Transmit Underrun Errors Register -------- */ +#define EMAC_TUND_TUND_Pos 0 +#define EMAC_TUND_TUND_Msk (0xffu << EMAC_TUND_TUND_Pos) /**< \brief (EMAC_TUND) Transmit Underruns */ +#define EMAC_TUND_TUND(value) ((EMAC_TUND_TUND_Msk & ((value) << EMAC_TUND_TUND_Pos))) +/* -------- EMAC_CSE : (EMAC Offset: 0x68) Carrier Sense Errors Register -------- */ +#define EMAC_CSE_CSE_Pos 0 +#define EMAC_CSE_CSE_Msk (0xffu << EMAC_CSE_CSE_Pos) /**< \brief (EMAC_CSE) Carrier Sense Errors */ +#define EMAC_CSE_CSE(value) ((EMAC_CSE_CSE_Msk & ((value) << EMAC_CSE_CSE_Pos))) +/* -------- EMAC_RRE : (EMAC Offset: 0x6C) Receive Resource Errors Register -------- */ +#define EMAC_RRE_RRE_Pos 0 +#define EMAC_RRE_RRE_Msk (0xffffu << EMAC_RRE_RRE_Pos) /**< \brief (EMAC_RRE) Receive Resource Errors */ +#define EMAC_RRE_RRE(value) ((EMAC_RRE_RRE_Msk & ((value) << EMAC_RRE_RRE_Pos))) +/* -------- EMAC_ROV : (EMAC Offset: 0x70) Receive Overrun Errors Register -------- */ +#define EMAC_ROV_ROVR_Pos 0 +#define EMAC_ROV_ROVR_Msk (0xffu << EMAC_ROV_ROVR_Pos) /**< \brief (EMAC_ROV) Receive Overrun */ +#define EMAC_ROV_ROVR(value) ((EMAC_ROV_ROVR_Msk & ((value) << EMAC_ROV_ROVR_Pos))) +/* -------- EMAC_RSE : (EMAC Offset: 0x74) Receive Symbol Errors Register -------- */ +#define EMAC_RSE_RSE_Pos 0 +#define EMAC_RSE_RSE_Msk (0xffu << EMAC_RSE_RSE_Pos) /**< \brief (EMAC_RSE) Receive Symbol Errors */ +#define EMAC_RSE_RSE(value) ((EMAC_RSE_RSE_Msk & ((value) << EMAC_RSE_RSE_Pos))) +/* -------- EMAC_ELE : (EMAC Offset: 0x78) Excessive Length Errors Register -------- */ +#define EMAC_ELE_EXL_Pos 0 +#define EMAC_ELE_EXL_Msk (0xffu << EMAC_ELE_EXL_Pos) /**< \brief (EMAC_ELE) Excessive Length Errors */ +#define EMAC_ELE_EXL(value) ((EMAC_ELE_EXL_Msk & ((value) << EMAC_ELE_EXL_Pos))) +/* -------- EMAC_RJA : (EMAC Offset: 0x7C) Receive Jabbers Register -------- */ +#define EMAC_RJA_RJB_Pos 0 +#define EMAC_RJA_RJB_Msk (0xffu << EMAC_RJA_RJB_Pos) /**< \brief (EMAC_RJA) Receive Jabbers */ +#define EMAC_RJA_RJB(value) ((EMAC_RJA_RJB_Msk & ((value) << EMAC_RJA_RJB_Pos))) +/* -------- EMAC_USF : (EMAC Offset: 0x80) Undersize Frames Register -------- */ +#define EMAC_USF_USF_Pos 0 +#define EMAC_USF_USF_Msk (0xffu << EMAC_USF_USF_Pos) /**< \brief (EMAC_USF) Undersize frames */ +#define EMAC_USF_USF(value) ((EMAC_USF_USF_Msk & ((value) << EMAC_USF_USF_Pos))) +/* -------- EMAC_STE : (EMAC Offset: 0x84) SQE Test Errors Register -------- */ +#define EMAC_STE_SQER_Pos 0 +#define EMAC_STE_SQER_Msk (0xffu << EMAC_STE_SQER_Pos) /**< \brief (EMAC_STE) SQE test errors */ +#define EMAC_STE_SQER(value) ((EMAC_STE_SQER_Msk & ((value) << EMAC_STE_SQER_Pos))) +/* -------- EMAC_RLE : (EMAC Offset: 0x88) Received Length Field Mismatch Register -------- */ +#define EMAC_RLE_RLFM_Pos 0 +#define EMAC_RLE_RLFM_Msk (0xffu << EMAC_RLE_RLFM_Pos) /**< \brief (EMAC_RLE) Receive Length Field Mismatch */ +#define EMAC_RLE_RLFM(value) ((EMAC_RLE_RLFM_Msk & ((value) << EMAC_RLE_RLFM_Pos))) +/* -------- EMAC_HRB : (EMAC Offset: 0x90) Hash Register Bottom [31:0] Register -------- */ +#define EMAC_HRB_ADDR_Pos 0 +#define EMAC_HRB_ADDR_Msk (0xffffffffu << EMAC_HRB_ADDR_Pos) /**< \brief (EMAC_HRB) */ +#define EMAC_HRB_ADDR(value) ((EMAC_HRB_ADDR_Msk & ((value) << EMAC_HRB_ADDR_Pos))) +/* -------- EMAC_HRT : (EMAC Offset: 0x94) Hash Register Top [63:32] Register -------- */ +#define EMAC_HRT_ADDR_Pos 0 +#define EMAC_HRT_ADDR_Msk (0xffffffffu << EMAC_HRT_ADDR_Pos) /**< \brief (EMAC_HRT) */ +#define EMAC_HRT_ADDR(value) ((EMAC_HRT_ADDR_Msk & ((value) << EMAC_HRT_ADDR_Pos))) +/* -------- EMAC_SAxB : (EMAC Offset: N/A) Specific Address 1 Bottom Register -------- */ +#define EMAC_SAxB_ADDR_Pos 0 +#define EMAC_SAxB_ADDR_Msk (0xffffffffu << EMAC_SAxB_ADDR_Pos) /**< \brief (EMAC_SAxB) */ +#define EMAC_SAxB_ADDR(value) ((EMAC_SAxB_ADDR_Msk & ((value) << EMAC_SAxB_ADDR_Pos))) +/* -------- EMAC_SAxT : (EMAC Offset: N/A) Specific Address 1 Top Register -------- */ +#define EMAC_SAxT_ADDR_Pos 0 +#define EMAC_SAxT_ADDR_Msk (0xffffu << EMAC_SAxT_ADDR_Pos) /**< \brief (EMAC_SAxT) */ +#define EMAC_SAxT_ADDR(value) ((EMAC_SAxT_ADDR_Msk & ((value) << EMAC_SAxT_ADDR_Pos))) +/* -------- EMAC_TID : (EMAC Offset: 0xB8) Type ID Checking Register -------- */ +#define EMAC_TID_TID_Pos 0 +#define EMAC_TID_TID_Msk (0xffffu << EMAC_TID_TID_Pos) /**< \brief (EMAC_TID) Type ID checking */ +#define EMAC_TID_TID(value) ((EMAC_TID_TID_Msk & ((value) << EMAC_TID_TID_Pos))) +/* -------- EMAC_USRIO : (EMAC Offset: 0xC0) User Input/Output Register -------- */ +#define EMAC_USRIO_RMII (0x1u << 0) /**< \brief (EMAC_USRIO) Reduce MII */ +#define EMAC_USRIO_CLKEN (0x1u << 1) /**< \brief (EMAC_USRIO) Clock Enable */ + +/*@}*/ + + +#endif /* _SAM3XA_EMAC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_gpbr.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_gpbr.h new file mode 100644 index 000000000..3c386eb69 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_gpbr.h @@ -0,0 +1,53 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_GPBR_COMPONENT_ +#define _SAM3XA_GPBR_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR General Purpose Backup Register */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_GPBR General Purpose Backup Register */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Gpbr hardware registers */ +typedef struct { + RwReg SYS_GPBR[8]; /**< \brief (Gpbr Offset: 0x0) General Purpose Backup Register */ +} Gpbr; +#endif /* __ASSEMBLY__ */ +/* -------- SYS_GPBR[8] : (GPBR Offset: 0x0) General Purpose Backup Register -------- */ +#define SYS_GPBR_GPBR_VALUE_Pos 0 +#define SYS_GPBR_GPBR_VALUE_Msk (0xffffffffu << SYS_GPBR_GPBR_VALUE_Pos) /**< \brief (SYS_GPBR[8]) Value of GPBR x */ +#define SYS_GPBR_GPBR_VALUE(value) ((SYS_GPBR_GPBR_VALUE_Msk & ((value) << SYS_GPBR_GPBR_VALUE_Pos))) + +/*@}*/ + + +#endif /* _SAM3XA_GPBR_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_hsmci.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_hsmci.h new file mode 100644 index 000000000..ae43604d7 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_hsmci.h @@ -0,0 +1,341 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_HSMCI_COMPONENT_ +#define _SAM3XA_HSMCI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR High Speed MultiMedia Card Interface */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_HSMCI High Speed MultiMedia Card Interface */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Hsmci hardware registers */ +typedef struct { + WoReg HSMCI_CR; /**< \brief (Hsmci Offset: 0x00) Control Register */ + RwReg HSMCI_MR; /**< \brief (Hsmci Offset: 0x04) Mode Register */ + RwReg HSMCI_DTOR; /**< \brief (Hsmci Offset: 0x08) Data Timeout Register */ + RwReg HSMCI_SDCR; /**< \brief (Hsmci Offset: 0x0C) SD/SDIO Card Register */ + RwReg HSMCI_ARGR; /**< \brief (Hsmci Offset: 0x10) Argument Register */ + WoReg HSMCI_CMDR; /**< \brief (Hsmci Offset: 0x14) Command Register */ + RwReg HSMCI_BLKR; /**< \brief (Hsmci Offset: 0x18) Block Register */ + RwReg HSMCI_CSTOR; /**< \brief (Hsmci Offset: 0x1C) Completion Signal Timeout Register */ + RoReg HSMCI_RSPR[4]; /**< \brief (Hsmci Offset: 0x20) Response Register */ + RoReg HSMCI_RDR; /**< \brief (Hsmci Offset: 0x30) Receive Data Register */ + WoReg HSMCI_TDR; /**< \brief (Hsmci Offset: 0x34) Transmit Data Register */ + RoReg Reserved1[2]; + RoReg HSMCI_SR; /**< \brief (Hsmci Offset: 0x40) Status Register */ + WoReg HSMCI_IER; /**< \brief (Hsmci Offset: 0x44) Interrupt Enable Register */ + WoReg HSMCI_IDR; /**< \brief (Hsmci Offset: 0x48) Interrupt Disable Register */ + RoReg HSMCI_IMR; /**< \brief (Hsmci Offset: 0x4C) Interrupt Mask Register */ + RwReg HSMCI_DMA; /**< \brief (Hsmci Offset: 0x50) DMA Configuration Register */ + RwReg HSMCI_CFG; /**< \brief (Hsmci Offset: 0x54) Configuration Register */ + RoReg Reserved2[35]; + RwReg HSMCI_WPMR; /**< \brief (Hsmci Offset: 0xE4) Write Protection Mode Register */ + RoReg HSMCI_WPSR; /**< \brief (Hsmci Offset: 0xE8) Write Protection Status Register */ + RoReg Reserved3[69]; + RwReg HSMCI_FIFO[256]; /**< \brief (Hsmci Offset: 0x200) FIFO Memory Aperture0 */ +} Hsmci; +#endif /* __ASSEMBLY__ */ +/* -------- HSMCI_CR : (HSMCI Offset: 0x00) Control Register -------- */ +#define HSMCI_CR_MCIEN (0x1u << 0) /**< \brief (HSMCI_CR) Multi-Media Interface Enable */ +#define HSMCI_CR_MCIDIS (0x1u << 1) /**< \brief (HSMCI_CR) Multi-Media Interface Disable */ +#define HSMCI_CR_PWSEN (0x1u << 2) /**< \brief (HSMCI_CR) Power Save Mode Enable */ +#define HSMCI_CR_PWSDIS (0x1u << 3) /**< \brief (HSMCI_CR) Power Save Mode Disable */ +#define HSMCI_CR_SWRST (0x1u << 7) /**< \brief (HSMCI_CR) Software Reset */ +/* -------- HSMCI_MR : (HSMCI Offset: 0x04) Mode Register -------- */ +#define HSMCI_MR_CLKDIV_Pos 0 +#define HSMCI_MR_CLKDIV_Msk (0xffu << HSMCI_MR_CLKDIV_Pos) /**< \brief (HSMCI_MR) Clock Divider */ +#define HSMCI_MR_CLKDIV(value) ((HSMCI_MR_CLKDIV_Msk & ((value) << HSMCI_MR_CLKDIV_Pos))) +#define HSMCI_MR_PWSDIV_Pos 8 +#define HSMCI_MR_PWSDIV_Msk (0x7u << HSMCI_MR_PWSDIV_Pos) /**< \brief (HSMCI_MR) Power Saving Divider */ +#define HSMCI_MR_PWSDIV(value) ((HSMCI_MR_PWSDIV_Msk & ((value) << HSMCI_MR_PWSDIV_Pos))) +#define HSMCI_MR_RDPROOF (0x1u << 11) /**< \brief (HSMCI_MR) */ +#define HSMCI_MR_WRPROOF (0x1u << 12) /**< \brief (HSMCI_MR) */ +#define HSMCI_MR_FBYTE (0x1u << 13) /**< \brief (HSMCI_MR) Force Byte Transfer */ +#define HSMCI_MR_PADV (0x1u << 14) /**< \brief (HSMCI_MR) Padding Value */ +/* -------- HSMCI_DTOR : (HSMCI Offset: 0x08) Data Timeout Register -------- */ +#define HSMCI_DTOR_DTOCYC_Pos 0 +#define HSMCI_DTOR_DTOCYC_Msk (0xfu << HSMCI_DTOR_DTOCYC_Pos) /**< \brief (HSMCI_DTOR) Data Timeout Cycle Number */ +#define HSMCI_DTOR_DTOCYC(value) ((HSMCI_DTOR_DTOCYC_Msk & ((value) << HSMCI_DTOR_DTOCYC_Pos))) +#define HSMCI_DTOR_DTOMUL_Pos 4 +#define HSMCI_DTOR_DTOMUL_Msk (0x7u << HSMCI_DTOR_DTOMUL_Pos) /**< \brief (HSMCI_DTOR) Data Timeout Multiplier */ +#define HSMCI_DTOR_DTOMUL_1 (0x0u << 4) /**< \brief (HSMCI_DTOR) DTOCYC */ +#define HSMCI_DTOR_DTOMUL_16 (0x1u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 16 */ +#define HSMCI_DTOR_DTOMUL_128 (0x2u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 128 */ +#define HSMCI_DTOR_DTOMUL_256 (0x3u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 256 */ +#define HSMCI_DTOR_DTOMUL_1024 (0x4u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 1024 */ +#define HSMCI_DTOR_DTOMUL_4096 (0x5u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 4096 */ +#define HSMCI_DTOR_DTOMUL_65536 (0x6u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 65536 */ +#define HSMCI_DTOR_DTOMUL_1048576 (0x7u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 1048576 */ +/* -------- HSMCI_SDCR : (HSMCI Offset: 0x0C) SD/SDIO Card Register -------- */ +#define HSMCI_SDCR_SDCSEL_Pos 0 +#define HSMCI_SDCR_SDCSEL_Msk (0x3u << HSMCI_SDCR_SDCSEL_Pos) /**< \brief (HSMCI_SDCR) SDCard/SDIO Slot */ +#define HSMCI_SDCR_SDCSEL_SLOTA (0x0u << 0) /**< \brief (HSMCI_SDCR) Slot A is selected. */ +#define HSMCI_SDCR_SDCSEL_SLOTB (0x1u << 0) /**< \brief (HSMCI_SDCR) SDCARD/SDIO Slot B selected */ +#define HSMCI_SDCR_SDCSEL_SLOTC (0x2u << 0) /**< \brief (HSMCI_SDCR) - */ +#define HSMCI_SDCR_SDCSEL_SLOTD (0x3u << 0) /**< \brief (HSMCI_SDCR) - */ +#define HSMCI_SDCR_SDCBUS_Pos 6 +#define HSMCI_SDCR_SDCBUS_Msk (0x3u << HSMCI_SDCR_SDCBUS_Pos) /**< \brief (HSMCI_SDCR) SDCard/SDIO Bus Width */ +#define HSMCI_SDCR_SDCBUS_1 (0x0u << 6) /**< \brief (HSMCI_SDCR) 1 bit */ +#define HSMCI_SDCR_SDCBUS_4 (0x2u << 6) /**< \brief (HSMCI_SDCR) 4 bit */ +#define HSMCI_SDCR_SDCBUS_8 (0x3u << 6) /**< \brief (HSMCI_SDCR) 8 bit */ +/* -------- HSMCI_ARGR : (HSMCI Offset: 0x10) Argument Register -------- */ +#define HSMCI_ARGR_ARG_Pos 0 +#define HSMCI_ARGR_ARG_Msk (0xffffffffu << HSMCI_ARGR_ARG_Pos) /**< \brief (HSMCI_ARGR) Command Argument */ +#define HSMCI_ARGR_ARG(value) ((HSMCI_ARGR_ARG_Msk & ((value) << HSMCI_ARGR_ARG_Pos))) +/* -------- HSMCI_CMDR : (HSMCI Offset: 0x14) Command Register -------- */ +#define HSMCI_CMDR_CMDNB_Pos 0 +#define HSMCI_CMDR_CMDNB_Msk (0x3fu << HSMCI_CMDR_CMDNB_Pos) /**< \brief (HSMCI_CMDR) Command Number */ +#define HSMCI_CMDR_CMDNB(value) ((HSMCI_CMDR_CMDNB_Msk & ((value) << HSMCI_CMDR_CMDNB_Pos))) +#define HSMCI_CMDR_RSPTYP_Pos 6 +#define HSMCI_CMDR_RSPTYP_Msk (0x3u << HSMCI_CMDR_RSPTYP_Pos) /**< \brief (HSMCI_CMDR) Response Type */ +#define HSMCI_CMDR_RSPTYP_NORESP (0x0u << 6) /**< \brief (HSMCI_CMDR) No response. */ +#define HSMCI_CMDR_RSPTYP_48_BIT (0x1u << 6) /**< \brief (HSMCI_CMDR) 48-bit response. */ +#define HSMCI_CMDR_RSPTYP_136_BIT (0x2u << 6) /**< \brief (HSMCI_CMDR) 136-bit response. */ +#define HSMCI_CMDR_RSPTYP_R1B (0x3u << 6) /**< \brief (HSMCI_CMDR) R1b response type */ +#define HSMCI_CMDR_SPCMD_Pos 8 +#define HSMCI_CMDR_SPCMD_Msk (0x7u << HSMCI_CMDR_SPCMD_Pos) /**< \brief (HSMCI_CMDR) Special Command */ +#define HSMCI_CMDR_SPCMD_STD (0x0u << 8) /**< \brief (HSMCI_CMDR) Not a special CMD. */ +#define HSMCI_CMDR_SPCMD_INIT (0x1u << 8) /**< \brief (HSMCI_CMDR) Initialization CMD: 74 clock cycles for initialization sequence. */ +#define HSMCI_CMDR_SPCMD_SYNC (0x2u << 8) /**< \brief (HSMCI_CMDR) Synchronized CMD: Wait for the end of the current data block transfer before sending the pending command. */ +#define HSMCI_CMDR_SPCMD_CE_ATA (0x3u << 8) /**< \brief (HSMCI_CMDR) CE-ATA Completion Signal disable Command. The host cancels the ability for the device to return a command completion signal on the command line. */ +#define HSMCI_CMDR_SPCMD_IT_CMD (0x4u << 8) /**< \brief (HSMCI_CMDR) Interrupt command: Corresponds to the Interrupt Mode (CMD40). */ +#define HSMCI_CMDR_SPCMD_IT_RESP (0x5u << 8) /**< \brief (HSMCI_CMDR) Interrupt response: Corresponds to the Interrupt Mode (CMD40). */ +#define HSMCI_CMDR_SPCMD_BOR (0x6u << 8) /**< \brief (HSMCI_CMDR) Boot Operation Request. Start a boot operation mode, the host processor can read boot data from the MMC device directly. */ +#define HSMCI_CMDR_SPCMD_EBO (0x7u << 8) /**< \brief (HSMCI_CMDR) End Boot Operation. This command allows the host processor to terminate the boot operation mode. */ +#define HSMCI_CMDR_OPDCMD (0x1u << 11) /**< \brief (HSMCI_CMDR) Open Drain Command */ +#define HSMCI_CMDR_OPDCMD_PUSHPULL (0x0u << 11) /**< \brief (HSMCI_CMDR) Push pull command. */ +#define HSMCI_CMDR_OPDCMD_OPENDRAIN (0x1u << 11) /**< \brief (HSMCI_CMDR) Open drain command. */ +#define HSMCI_CMDR_MAXLAT (0x1u << 12) /**< \brief (HSMCI_CMDR) Max Latency for Command to Response */ +#define HSMCI_CMDR_MAXLAT_5 (0x0u << 12) /**< \brief (HSMCI_CMDR) 5-cycle max latency. */ +#define HSMCI_CMDR_MAXLAT_64 (0x1u << 12) /**< \brief (HSMCI_CMDR) 64-cycle max latency. */ +#define HSMCI_CMDR_TRCMD_Pos 16 +#define HSMCI_CMDR_TRCMD_Msk (0x3u << HSMCI_CMDR_TRCMD_Pos) /**< \brief (HSMCI_CMDR) Transfer Command */ +#define HSMCI_CMDR_TRCMD_NO_DATA (0x0u << 16) /**< \brief (HSMCI_CMDR) No data transfer */ +#define HSMCI_CMDR_TRCMD_START_DATA (0x1u << 16) /**< \brief (HSMCI_CMDR) Start data transfer */ +#define HSMCI_CMDR_TRCMD_STOP_DATA (0x2u << 16) /**< \brief (HSMCI_CMDR) Stop data transfer */ +#define HSMCI_CMDR_TRDIR (0x1u << 18) /**< \brief (HSMCI_CMDR) Transfer Direction */ +#define HSMCI_CMDR_TRDIR_WRITE (0x0u << 18) /**< \brief (HSMCI_CMDR) Write. */ +#define HSMCI_CMDR_TRDIR_READ (0x1u << 18) /**< \brief (HSMCI_CMDR) Read. */ +#define HSMCI_CMDR_TRTYP_Pos 19 +#define HSMCI_CMDR_TRTYP_Msk (0x7u << HSMCI_CMDR_TRTYP_Pos) /**< \brief (HSMCI_CMDR) Transfer Type */ +#define HSMCI_CMDR_TRTYP_SINGLE (0x0u << 19) /**< \brief (HSMCI_CMDR) MMC/SDCard Single Block */ +#define HSMCI_CMDR_TRTYP_MULTIPLE (0x1u << 19) /**< \brief (HSMCI_CMDR) MMC/SDCard Multiple Block */ +#define HSMCI_CMDR_TRTYP_STREAM (0x2u << 19) /**< \brief (HSMCI_CMDR) MMC Stream */ +#define HSMCI_CMDR_TRTYP_BYTE (0x4u << 19) /**< \brief (HSMCI_CMDR) SDIO Byte */ +#define HSMCI_CMDR_TRTYP_BLOCK (0x5u << 19) /**< \brief (HSMCI_CMDR) SDIO Block */ +#define HSMCI_CMDR_IOSPCMD_Pos 24 +#define HSMCI_CMDR_IOSPCMD_Msk (0x3u << HSMCI_CMDR_IOSPCMD_Pos) /**< \brief (HSMCI_CMDR) SDIO Special Command */ +#define HSMCI_CMDR_IOSPCMD_STD (0x0u << 24) /**< \brief (HSMCI_CMDR) Not an SDIO Special Command */ +#define HSMCI_CMDR_IOSPCMD_SUSPEND (0x1u << 24) /**< \brief (HSMCI_CMDR) SDIO Suspend Command */ +#define HSMCI_CMDR_IOSPCMD_RESUME (0x2u << 24) /**< \brief (HSMCI_CMDR) SDIO Resume Command */ +#define HSMCI_CMDR_ATACS (0x1u << 26) /**< \brief (HSMCI_CMDR) ATA with Command Completion Signal */ +#define HSMCI_CMDR_ATACS_NORMAL (0x0u << 26) /**< \brief (HSMCI_CMDR) Normal operation mode. */ +#define HSMCI_CMDR_ATACS_COMPLETION (0x1u << 26) /**< \brief (HSMCI_CMDR) This bit indicates that a completion signal is expected within a programmed amount of time (HSMCI_CSTOR). */ +#define HSMCI_CMDR_BOOT_ACK (0x1u << 27) /**< \brief (HSMCI_CMDR) Boot Operation Acknowledge. */ +/* -------- HSMCI_BLKR : (HSMCI Offset: 0x18) Block Register -------- */ +#define HSMCI_BLKR_BCNT_Pos 0 +#define HSMCI_BLKR_BCNT_Msk (0xffffu << HSMCI_BLKR_BCNT_Pos) /**< \brief (HSMCI_BLKR) MMC/SDIO Block Count - SDIO Byte Count */ +#define HSMCI_BLKR_BCNT_MULTIPLE (0x0u << 0) /**< \brief (HSMCI_BLKR) MMC/SDCARD Multiple BlockFrom 1 to 65635: Value 0 corresponds to an infinite block transfer. */ +#define HSMCI_BLKR_BCNT_BYTE (0x4u << 0) /**< \brief (HSMCI_BLKR) SDIO ByteFrom 1 to 512 bytes: Value 0 corresponds to a 512-byte transfer.Values from 0x200 to 0xFFFF are forbidden. */ +#define HSMCI_BLKR_BCNT_BLOCK (0x5u << 0) /**< \brief (HSMCI_BLKR) SDIO BlockFrom 1 to 511 blocks: Value 0 corresponds to an infinite block transfer.Values from 0x200 to 0xFFFF are forbidden. */ +#define HSMCI_BLKR_BLKLEN_Pos 16 +#define HSMCI_BLKR_BLKLEN_Msk (0xffffu << HSMCI_BLKR_BLKLEN_Pos) /**< \brief (HSMCI_BLKR) Data Block Length */ +#define HSMCI_BLKR_BLKLEN(value) ((HSMCI_BLKR_BLKLEN_Msk & ((value) << HSMCI_BLKR_BLKLEN_Pos))) +/* -------- HSMCI_CSTOR : (HSMCI Offset: 0x1C) Completion Signal Timeout Register -------- */ +#define HSMCI_CSTOR_CSTOCYC_Pos 0 +#define HSMCI_CSTOR_CSTOCYC_Msk (0xfu << HSMCI_CSTOR_CSTOCYC_Pos) /**< \brief (HSMCI_CSTOR) Completion Signal Timeout Cycle Number */ +#define HSMCI_CSTOR_CSTOCYC(value) ((HSMCI_CSTOR_CSTOCYC_Msk & ((value) << HSMCI_CSTOR_CSTOCYC_Pos))) +#define HSMCI_CSTOR_CSTOMUL_Pos 4 +#define HSMCI_CSTOR_CSTOMUL_Msk (0x7u << HSMCI_CSTOR_CSTOMUL_Pos) /**< \brief (HSMCI_CSTOR) Completion Signal Timeout Multiplier */ +#define HSMCI_CSTOR_CSTOMUL_1 (0x0u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1 */ +#define HSMCI_CSTOR_CSTOMUL_16 (0x1u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 16 */ +#define HSMCI_CSTOR_CSTOMUL_128 (0x2u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 128 */ +#define HSMCI_CSTOR_CSTOMUL_256 (0x3u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 256 */ +#define HSMCI_CSTOR_CSTOMUL_1024 (0x4u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1024 */ +#define HSMCI_CSTOR_CSTOMUL_4096 (0x5u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 4096 */ +#define HSMCI_CSTOR_CSTOMUL_65536 (0x6u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 65536 */ +#define HSMCI_CSTOR_CSTOMUL_1048576 (0x7u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1048576 */ +/* -------- HSMCI_RSPR[4] : (HSMCI Offset: 0x20) Response Register -------- */ +#define HSMCI_RSPR_RSP_Pos 0 +#define HSMCI_RSPR_RSP_Msk (0xffffffffu << HSMCI_RSPR_RSP_Pos) /**< \brief (HSMCI_RSPR[4]) Response */ +/* -------- HSMCI_RDR : (HSMCI Offset: 0x30) Receive Data Register -------- */ +#define HSMCI_RDR_DATA_Pos 0 +#define HSMCI_RDR_DATA_Msk (0xffffffffu << HSMCI_RDR_DATA_Pos) /**< \brief (HSMCI_RDR) Data to Read */ +/* -------- HSMCI_TDR : (HSMCI Offset: 0x34) Transmit Data Register -------- */ +#define HSMCI_TDR_DATA_Pos 0 +#define HSMCI_TDR_DATA_Msk (0xffffffffu << HSMCI_TDR_DATA_Pos) /**< \brief (HSMCI_TDR) Data to Write */ +#define HSMCI_TDR_DATA(value) ((HSMCI_TDR_DATA_Msk & ((value) << HSMCI_TDR_DATA_Pos))) +/* -------- HSMCI_SR : (HSMCI Offset: 0x40) Status Register -------- */ +#define HSMCI_SR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_SR) Command Ready */ +#define HSMCI_SR_RXRDY (0x1u << 1) /**< \brief (HSMCI_SR) Receiver Ready */ +#define HSMCI_SR_TXRDY (0x1u << 2) /**< \brief (HSMCI_SR) Transmit Ready */ +#define HSMCI_SR_BLKE (0x1u << 3) /**< \brief (HSMCI_SR) Data Block Ended */ +#define HSMCI_SR_DTIP (0x1u << 4) /**< \brief (HSMCI_SR) Data Transfer in Progress */ +#define HSMCI_SR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_SR) HSMCI Not Busy */ +#define HSMCI_SR_SDIOIRQforSlotA (0x1u << 8) /**< \brief (HSMCI_SR) */ +#define HSMCI_SR_SDIOIRQforSlotB (0x1u << 9) /**< \brief (HSMCI_SR) */ +#define HSMCI_SR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_SR) SDIO Read Wait Operation Status */ +#define HSMCI_SR_CSRCV (0x1u << 13) /**< \brief (HSMCI_SR) CE-ATA Completion Signal Received */ +#define HSMCI_SR_RINDE (0x1u << 16) /**< \brief (HSMCI_SR) Response Index Error */ +#define HSMCI_SR_RDIRE (0x1u << 17) /**< \brief (HSMCI_SR) Response Direction Error */ +#define HSMCI_SR_RCRCE (0x1u << 18) /**< \brief (HSMCI_SR) Response CRC Error */ +#define HSMCI_SR_RENDE (0x1u << 19) /**< \brief (HSMCI_SR) Response End Bit Error */ +#define HSMCI_SR_RTOE (0x1u << 20) /**< \brief (HSMCI_SR) Response Time-out Error */ +#define HSMCI_SR_DCRCE (0x1u << 21) /**< \brief (HSMCI_SR) Data CRC Error */ +#define HSMCI_SR_DTOE (0x1u << 22) /**< \brief (HSMCI_SR) Data Time-out Error */ +#define HSMCI_SR_CSTOE (0x1u << 23) /**< \brief (HSMCI_SR) Completion Signal Time-out Error */ +#define HSMCI_SR_BLKOVRE (0x1u << 24) /**< \brief (HSMCI_SR) DMA Block Overrun Error */ +#define HSMCI_SR_DMADONE (0x1u << 25) /**< \brief (HSMCI_SR) DMA Transfer done */ +#define HSMCI_SR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_SR) FIFO empty flag */ +#define HSMCI_SR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_SR) Transfer Done flag */ +#define HSMCI_SR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_SR) Boot Operation Acknowledge Received */ +#define HSMCI_SR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_SR) Boot Operation Acknowledge Error */ +#define HSMCI_SR_OVRE (0x1u << 30) /**< \brief (HSMCI_SR) Overrun */ +#define HSMCI_SR_UNRE (0x1u << 31) /**< \brief (HSMCI_SR) Underrun */ +/* -------- HSMCI_IER : (HSMCI Offset: 0x44) Interrupt Enable Register -------- */ +#define HSMCI_IER_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IER) Command Ready Interrupt Enable */ +#define HSMCI_IER_RXRDY (0x1u << 1) /**< \brief (HSMCI_IER) Receiver Ready Interrupt Enable */ +#define HSMCI_IER_TXRDY (0x1u << 2) /**< \brief (HSMCI_IER) Transmit Ready Interrupt Enable */ +#define HSMCI_IER_BLKE (0x1u << 3) /**< \brief (HSMCI_IER) Data Block Ended Interrupt Enable */ +#define HSMCI_IER_DTIP (0x1u << 4) /**< \brief (HSMCI_IER) Data Transfer in Progress Interrupt Enable */ +#define HSMCI_IER_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IER) Data Not Busy Interrupt Enable */ +#define HSMCI_IER_SDIOIRQforSlotA (0x1u << 8) /**< \brief (HSMCI_IER) */ +#define HSMCI_IER_SDIOIRQforSlotB (0x1u << 9) /**< \brief (HSMCI_IER) */ +#define HSMCI_IER_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IER) SDIO Read Wait Operation Status Interrupt Enable */ +#define HSMCI_IER_CSRCV (0x1u << 13) /**< \brief (HSMCI_IER) Completion Signal Received Interrupt Enable */ +#define HSMCI_IER_RINDE (0x1u << 16) /**< \brief (HSMCI_IER) Response Index Error Interrupt Enable */ +#define HSMCI_IER_RDIRE (0x1u << 17) /**< \brief (HSMCI_IER) Response Direction Error Interrupt Enable */ +#define HSMCI_IER_RCRCE (0x1u << 18) /**< \brief (HSMCI_IER) Response CRC Error Interrupt Enable */ +#define HSMCI_IER_RENDE (0x1u << 19) /**< \brief (HSMCI_IER) Response End Bit Error Interrupt Enable */ +#define HSMCI_IER_RTOE (0x1u << 20) /**< \brief (HSMCI_IER) Response Time-out Error Interrupt Enable */ +#define HSMCI_IER_DCRCE (0x1u << 21) /**< \brief (HSMCI_IER) Data CRC Error Interrupt Enable */ +#define HSMCI_IER_DTOE (0x1u << 22) /**< \brief (HSMCI_IER) Data Time-out Error Interrupt Enable */ +#define HSMCI_IER_CSTOE (0x1u << 23) /**< \brief (HSMCI_IER) Completion Signal Timeout Error Interrupt Enable */ +#define HSMCI_IER_BLKOVRE (0x1u << 24) /**< \brief (HSMCI_IER) DMA Block Overrun Error Interrupt Enable */ +#define HSMCI_IER_DMADONE (0x1u << 25) /**< \brief (HSMCI_IER) DMA Transfer completed Interrupt Enable */ +#define HSMCI_IER_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IER) FIFO empty Interrupt enable */ +#define HSMCI_IER_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IER) Transfer Done Interrupt enable */ +#define HSMCI_IER_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IER) Boot Acknowledge Interrupt Enable */ +#define HSMCI_IER_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IER) Boot Acknowledge Error Interrupt Enable */ +#define HSMCI_IER_OVRE (0x1u << 30) /**< \brief (HSMCI_IER) Overrun Interrupt Enable */ +#define HSMCI_IER_UNRE (0x1u << 31) /**< \brief (HSMCI_IER) Underrun Interrupt Enable */ +/* -------- HSMCI_IDR : (HSMCI Offset: 0x48) Interrupt Disable Register -------- */ +#define HSMCI_IDR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IDR) Command Ready Interrupt Disable */ +#define HSMCI_IDR_RXRDY (0x1u << 1) /**< \brief (HSMCI_IDR) Receiver Ready Interrupt Disable */ +#define HSMCI_IDR_TXRDY (0x1u << 2) /**< \brief (HSMCI_IDR) Transmit Ready Interrupt Disable */ +#define HSMCI_IDR_BLKE (0x1u << 3) /**< \brief (HSMCI_IDR) Data Block Ended Interrupt Disable */ +#define HSMCI_IDR_DTIP (0x1u << 4) /**< \brief (HSMCI_IDR) Data Transfer in Progress Interrupt Disable */ +#define HSMCI_IDR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IDR) Data Not Busy Interrupt Disable */ +#define HSMCI_IDR_SDIOIRQforSlotA (0x1u << 8) /**< \brief (HSMCI_IDR) */ +#define HSMCI_IDR_SDIOIRQforSlotB (0x1u << 9) /**< \brief (HSMCI_IDR) */ +#define HSMCI_IDR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IDR) SDIO Read Wait Operation Status Interrupt Disable */ +#define HSMCI_IDR_CSRCV (0x1u << 13) /**< \brief (HSMCI_IDR) Completion Signal received interrupt Disable */ +#define HSMCI_IDR_RINDE (0x1u << 16) /**< \brief (HSMCI_IDR) Response Index Error Interrupt Disable */ +#define HSMCI_IDR_RDIRE (0x1u << 17) /**< \brief (HSMCI_IDR) Response Direction Error Interrupt Disable */ +#define HSMCI_IDR_RCRCE (0x1u << 18) /**< \brief (HSMCI_IDR) Response CRC Error Interrupt Disable */ +#define HSMCI_IDR_RENDE (0x1u << 19) /**< \brief (HSMCI_IDR) Response End Bit Error Interrupt Disable */ +#define HSMCI_IDR_RTOE (0x1u << 20) /**< \brief (HSMCI_IDR) Response Time-out Error Interrupt Disable */ +#define HSMCI_IDR_DCRCE (0x1u << 21) /**< \brief (HSMCI_IDR) Data CRC Error Interrupt Disable */ +#define HSMCI_IDR_DTOE (0x1u << 22) /**< \brief (HSMCI_IDR) Data Time-out Error Interrupt Disable */ +#define HSMCI_IDR_CSTOE (0x1u << 23) /**< \brief (HSMCI_IDR) Completion Signal Time out Error Interrupt Disable */ +#define HSMCI_IDR_BLKOVRE (0x1u << 24) /**< \brief (HSMCI_IDR) DMA Block Overrun Error Interrupt Disable */ +#define HSMCI_IDR_DMADONE (0x1u << 25) /**< \brief (HSMCI_IDR) DMA Transfer completed Interrupt Disable */ +#define HSMCI_IDR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IDR) FIFO empty Interrupt Disable */ +#define HSMCI_IDR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IDR) Transfer Done Interrupt Disable */ +#define HSMCI_IDR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IDR) Boot Acknowledge Interrupt Disable */ +#define HSMCI_IDR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IDR) Boot Acknowledge Error Interrupt Disable */ +#define HSMCI_IDR_OVRE (0x1u << 30) /**< \brief (HSMCI_IDR) Overrun Interrupt Disable */ +#define HSMCI_IDR_UNRE (0x1u << 31) /**< \brief (HSMCI_IDR) Underrun Interrupt Disable */ +/* -------- HSMCI_IMR : (HSMCI Offset: 0x4C) Interrupt Mask Register -------- */ +#define HSMCI_IMR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IMR) Command Ready Interrupt Mask */ +#define HSMCI_IMR_RXRDY (0x1u << 1) /**< \brief (HSMCI_IMR) Receiver Ready Interrupt Mask */ +#define HSMCI_IMR_TXRDY (0x1u << 2) /**< \brief (HSMCI_IMR) Transmit Ready Interrupt Mask */ +#define HSMCI_IMR_BLKE (0x1u << 3) /**< \brief (HSMCI_IMR) Data Block Ended Interrupt Mask */ +#define HSMCI_IMR_DTIP (0x1u << 4) /**< \brief (HSMCI_IMR) Data Transfer in Progress Interrupt Mask */ +#define HSMCI_IMR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IMR) Data Not Busy Interrupt Mask */ +#define HSMCI_IMR_SDIOIRQforSlotA (0x1u << 8) /**< \brief (HSMCI_IMR) */ +#define HSMCI_IMR_SDIOIRQforSlotB (0x1u << 9) /**< \brief (HSMCI_IMR) */ +#define HSMCI_IMR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IMR) SDIO Read Wait Operation Status Interrupt Mask */ +#define HSMCI_IMR_CSRCV (0x1u << 13) /**< \brief (HSMCI_IMR) Completion Signal Received Interrupt Mask */ +#define HSMCI_IMR_RINDE (0x1u << 16) /**< \brief (HSMCI_IMR) Response Index Error Interrupt Mask */ +#define HSMCI_IMR_RDIRE (0x1u << 17) /**< \brief (HSMCI_IMR) Response Direction Error Interrupt Mask */ +#define HSMCI_IMR_RCRCE (0x1u << 18) /**< \brief (HSMCI_IMR) Response CRC Error Interrupt Mask */ +#define HSMCI_IMR_RENDE (0x1u << 19) /**< \brief (HSMCI_IMR) Response End Bit Error Interrupt Mask */ +#define HSMCI_IMR_RTOE (0x1u << 20) /**< \brief (HSMCI_IMR) Response Time-out Error Interrupt Mask */ +#define HSMCI_IMR_DCRCE (0x1u << 21) /**< \brief (HSMCI_IMR) Data CRC Error Interrupt Mask */ +#define HSMCI_IMR_DTOE (0x1u << 22) /**< \brief (HSMCI_IMR) Data Time-out Error Interrupt Mask */ +#define HSMCI_IMR_CSTOE (0x1u << 23) /**< \brief (HSMCI_IMR) Completion Signal Time-out Error Interrupt Mask */ +#define HSMCI_IMR_BLKOVRE (0x1u << 24) /**< \brief (HSMCI_IMR) DMA Block Overrun Error Interrupt Mask */ +#define HSMCI_IMR_DMADONE (0x1u << 25) /**< \brief (HSMCI_IMR) DMA Transfer Completed Interrupt Mask */ +#define HSMCI_IMR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IMR) FIFO Empty Interrupt Mask */ +#define HSMCI_IMR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IMR) Transfer Done Interrupt Mask */ +#define HSMCI_IMR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IMR) Boot Operation Acknowledge Received Interrupt Mask */ +#define HSMCI_IMR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IMR) Boot Operation Acknowledge Error Interrupt Mask */ +#define HSMCI_IMR_OVRE (0x1u << 30) /**< \brief (HSMCI_IMR) Overrun Interrupt Mask */ +#define HSMCI_IMR_UNRE (0x1u << 31) /**< \brief (HSMCI_IMR) Underrun Interrupt Mask */ +/* -------- HSMCI_DMA : (HSMCI Offset: 0x50) DMA Configuration Register -------- */ +#define HSMCI_DMA_OFFSET_Pos 0 +#define HSMCI_DMA_OFFSET_Msk (0x3u << HSMCI_DMA_OFFSET_Pos) /**< \brief (HSMCI_DMA) DMA Write Buffer Offset */ +#define HSMCI_DMA_OFFSET(value) ((HSMCI_DMA_OFFSET_Msk & ((value) << HSMCI_DMA_OFFSET_Pos))) +#define HSMCI_DMA_CHKSIZE (0x1u << 4) /**< \brief (HSMCI_DMA) DMA Channel Read and Write Chunk Size */ +#define HSMCI_DMA_CHKSIZE_1 (0x0u << 4) /**< \brief (HSMCI_DMA) 1 data available */ +#define HSMCI_DMA_CHKSIZE_4 (0x1u << 4) /**< \brief (HSMCI_DMA) 4 data available */ +#define HSMCI_DMA_DMAEN (0x1u << 8) /**< \brief (HSMCI_DMA) DMA Hardware Handshaking Enable */ +#define HSMCI_DMA_ROPT (0x1u << 12) /**< \brief (HSMCI_DMA) Read Optimization with padding */ +/* -------- HSMCI_CFG : (HSMCI Offset: 0x54) Configuration Register -------- */ +#define HSMCI_CFG_FIFOMODE (0x1u << 0) /**< \brief (HSMCI_CFG) HSMCI Internal FIFO control mode */ +#define HSMCI_CFG_FERRCTRL (0x1u << 4) /**< \brief (HSMCI_CFG) Flow Error flag reset control mode */ +#define HSMCI_CFG_HSMODE (0x1u << 8) /**< \brief (HSMCI_CFG) High Speed Mode */ +#define HSMCI_CFG_LSYNC (0x1u << 12) /**< \brief (HSMCI_CFG) Synchronize on the last block */ +/* -------- HSMCI_WPMR : (HSMCI Offset: 0xE4) Write Protection Mode Register -------- */ +#define HSMCI_WPMR_WP_EN (0x1u << 0) /**< \brief (HSMCI_WPMR) Write Protection Enable */ +#define HSMCI_WPMR_WP_KEY_Pos 8 +#define HSMCI_WPMR_WP_KEY_Msk (0xffffffu << HSMCI_WPMR_WP_KEY_Pos) /**< \brief (HSMCI_WPMR) Write Protection Key password */ +#define HSMCI_WPMR_WP_KEY(value) ((HSMCI_WPMR_WP_KEY_Msk & ((value) << HSMCI_WPMR_WP_KEY_Pos))) +/* -------- HSMCI_WPSR : (HSMCI Offset: 0xE8) Write Protection Status Register -------- */ +#define HSMCI_WPSR_WP_VS_Pos 0 +#define HSMCI_WPSR_WP_VS_Msk (0xfu << HSMCI_WPSR_WP_VS_Pos) /**< \brief (HSMCI_WPSR) Write Protection Violation Status */ +#define HSMCI_WPSR_WP_VS_NONE (0x0u << 0) /**< \brief (HSMCI_WPSR) No Write Protection Violation occurred since the last read of this register (WP_SR) */ +#define HSMCI_WPSR_WP_VS_WRITE (0x1u << 0) /**< \brief (HSMCI_WPSR) Write Protection detected unauthorized attempt to write a control register had occurred (since the last read.) */ +#define HSMCI_WPSR_WP_VS_RESET (0x2u << 0) /**< \brief (HSMCI_WPSR) Software reset had been performed while Write Protection was enabled (since the last read). */ +#define HSMCI_WPSR_WP_VS_BOTH (0x3u << 0) /**< \brief (HSMCI_WPSR) Both Write Protection violation and software reset with Write Protection enabled have occurred since the last read. */ +#define HSMCI_WPSR_WP_VSRC_Pos 8 +#define HSMCI_WPSR_WP_VSRC_Msk (0xffffu << HSMCI_WPSR_WP_VSRC_Pos) /**< \brief (HSMCI_WPSR) Write Protection Violation SouRCe */ +/* -------- HSMCI_FIFO[256] : (HSMCI Offset: 0x200) FIFO Memory Aperture0 -------- */ +#define HSMCI_FIFO_DATA_Pos 0 +#define HSMCI_FIFO_DATA_Msk (0xffffffffu << HSMCI_FIFO_DATA_Pos) /**< \brief (HSMCI_FIFO[256]) Data to Read or Data to Write */ +#define HSMCI_FIFO_DATA(value) ((HSMCI_FIFO_DATA_Msk & ((value) << HSMCI_FIFO_DATA_Pos))) + +/*@}*/ + + +#endif /* _SAM3XA_HSMCI_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_matrix.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_matrix.h new file mode 100644 index 000000000..3ec9137ea --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_matrix.h @@ -0,0 +1,285 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_MATRIX_COMPONENT_ +#define _SAM3XA_MATRIX_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR AHB Bus Matrix */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_MATRIX AHB Bus Matrix */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Matrix hardware registers */ +typedef struct { + RwReg MATRIX_MCFG[6]; /**< \brief (Matrix Offset: 0x0000) Master Configuration Register */ + RoReg Reserved1[10]; + RwReg MATRIX_SCFG[9]; /**< \brief (Matrix Offset: 0x0040) Slave Configuration Register */ + RoReg Reserved2[7]; + RwReg MATRIX_PRAS0; /**< \brief (Matrix Offset: 0x0080) Priority Register A for Slave 0 */ + RoReg Reserved3[1]; + RwReg MATRIX_PRAS1; /**< \brief (Matrix Offset: 0x0088) Priority Register A for Slave 1 */ + RoReg Reserved4[1]; + RwReg MATRIX_PRAS2; /**< \brief (Matrix Offset: 0x0090) Priority Register A for Slave 2 */ + RoReg Reserved5[1]; + RwReg MATRIX_PRAS3; /**< \brief (Matrix Offset: 0x0098) Priority Register A for Slave 3 */ + RoReg Reserved6[1]; + RwReg MATRIX_PRAS4; /**< \brief (Matrix Offset: 0x00A0) Priority Register A for Slave 4 */ + RoReg Reserved7[1]; + RwReg MATRIX_PRAS5; /**< \brief (Matrix Offset: 0x00A8) Priority Register A for Slave 5 */ + RoReg Reserved8[1]; + RwReg MATRIX_PRAS6; /**< \brief (Matrix Offset: 0x00B0) Priority Register A for Slave 6 */ + RoReg Reserved9[1]; + RwReg MATRIX_PRAS7; /**< \brief (Matrix Offset: 0x00B8) Priority Register A for Slave 7 */ + RoReg Reserved10[1]; + RwReg MATRIX_PRAS8; /**< \brief (Matrix Offset: 0x00C0) Priority Register A for Slave 8 */ + RoReg Reserved11[1]; + RoReg Reserved12[14]; + RwReg MATRIX_MRCR; /**< \brief (Matrix Offset: 0x0100) Master Remap Control Register */ + RoReg Reserved13[4]; + RwReg CCFG_SYSIO; /**< \brief (Matrix Offset: 0x0114) System I/O Configuration register */ + RoReg Reserved14[51]; + RwReg MATRIX_WPMR; /**< \brief (Matrix Offset: 0x1E4) Write Protect Mode Register */ + RoReg MATRIX_WPSR; /**< \brief (Matrix Offset: 0x1E8) Write Protect Status Register */ +} Matrix; +#endif /* __ASSEMBLY__ */ +/* -------- MATRIX_MCFG[6] : (MATRIX Offset: 0x0000) Master Configuration Register -------- */ +#define MATRIX_MCFG_ULBT_Pos 0 +#define MATRIX_MCFG_ULBT_Msk (0x7u << MATRIX_MCFG_ULBT_Pos) /**< \brief (MATRIX_MCFG[6]) Undefined Length Burst Type */ +#define MATRIX_MCFG_ULBT(value) ((MATRIX_MCFG_ULBT_Msk & ((value) << MATRIX_MCFG_ULBT_Pos))) +/* -------- MATRIX_SCFG[9] : (MATRIX Offset: 0x0040) Slave Configuration Register -------- */ +#define MATRIX_SCFG_SLOT_CYCLE_Pos 0 +#define MATRIX_SCFG_SLOT_CYCLE_Msk (0xffu << MATRIX_SCFG_SLOT_CYCLE_Pos) /**< \brief (MATRIX_SCFG[9]) Maximum Number of Allowed Cycles for a Burst */ +#define MATRIX_SCFG_SLOT_CYCLE(value) ((MATRIX_SCFG_SLOT_CYCLE_Msk & ((value) << MATRIX_SCFG_SLOT_CYCLE_Pos))) +#define MATRIX_SCFG_DEFMSTR_TYPE_Pos 16 +#define MATRIX_SCFG_DEFMSTR_TYPE_Msk (0x3u << MATRIX_SCFG_DEFMSTR_TYPE_Pos) /**< \brief (MATRIX_SCFG[9]) Default Master Type */ +#define MATRIX_SCFG_DEFMSTR_TYPE(value) ((MATRIX_SCFG_DEFMSTR_TYPE_Msk & ((value) << MATRIX_SCFG_DEFMSTR_TYPE_Pos))) +#define MATRIX_SCFG_FIXED_DEFMSTR_Pos 18 +#define MATRIX_SCFG_FIXED_DEFMSTR_Msk (0x7u << MATRIX_SCFG_FIXED_DEFMSTR_Pos) /**< \brief (MATRIX_SCFG[9]) Fixed Default Master */ +#define MATRIX_SCFG_FIXED_DEFMSTR(value) ((MATRIX_SCFG_FIXED_DEFMSTR_Msk & ((value) << MATRIX_SCFG_FIXED_DEFMSTR_Pos))) +#define MATRIX_SCFG_ARBT_Pos 24 +#define MATRIX_SCFG_ARBT_Msk (0x3u << MATRIX_SCFG_ARBT_Pos) /**< \brief (MATRIX_SCFG[9]) Arbitration Type */ +#define MATRIX_SCFG_ARBT(value) ((MATRIX_SCFG_ARBT_Msk & ((value) << MATRIX_SCFG_ARBT_Pos))) +/* -------- MATRIX_PRAS0 : (MATRIX Offset: 0x0080) Priority Register A for Slave 0 -------- */ +#define MATRIX_PRAS0_M0PR_Pos 0 +#define MATRIX_PRAS0_M0PR_Msk (0x3u << MATRIX_PRAS0_M0PR_Pos) /**< \brief (MATRIX_PRAS0) Master 0 Priority */ +#define MATRIX_PRAS0_M0PR(value) ((MATRIX_PRAS0_M0PR_Msk & ((value) << MATRIX_PRAS0_M0PR_Pos))) +#define MATRIX_PRAS0_M1PR_Pos 4 +#define MATRIX_PRAS0_M1PR_Msk (0x3u << MATRIX_PRAS0_M1PR_Pos) /**< \brief (MATRIX_PRAS0) Master 1 Priority */ +#define MATRIX_PRAS0_M1PR(value) ((MATRIX_PRAS0_M1PR_Msk & ((value) << MATRIX_PRAS0_M1PR_Pos))) +#define MATRIX_PRAS0_M2PR_Pos 8 +#define MATRIX_PRAS0_M2PR_Msk (0x3u << MATRIX_PRAS0_M2PR_Pos) /**< \brief (MATRIX_PRAS0) Master 2 Priority */ +#define MATRIX_PRAS0_M2PR(value) ((MATRIX_PRAS0_M2PR_Msk & ((value) << MATRIX_PRAS0_M2PR_Pos))) +#define MATRIX_PRAS0_M3PR_Pos 12 +#define MATRIX_PRAS0_M3PR_Msk (0x3u << MATRIX_PRAS0_M3PR_Pos) /**< \brief (MATRIX_PRAS0) Master 3 Priority */ +#define MATRIX_PRAS0_M3PR(value) ((MATRIX_PRAS0_M3PR_Msk & ((value) << MATRIX_PRAS0_M3PR_Pos))) +#define MATRIX_PRAS0_M4PR_Pos 16 +#define MATRIX_PRAS0_M4PR_Msk (0x3u << MATRIX_PRAS0_M4PR_Pos) /**< \brief (MATRIX_PRAS0) Master 4 Priority */ +#define MATRIX_PRAS0_M4PR(value) ((MATRIX_PRAS0_M4PR_Msk & ((value) << MATRIX_PRAS0_M4PR_Pos))) +#define MATRIX_PRAS0_M5PR_Pos 20 +#define MATRIX_PRAS0_M5PR_Msk (0x3u << MATRIX_PRAS0_M5PR_Pos) /**< \brief (MATRIX_PRAS0) Master 5 Priority */ +#define MATRIX_PRAS0_M5PR(value) ((MATRIX_PRAS0_M5PR_Msk & ((value) << MATRIX_PRAS0_M5PR_Pos))) +/* -------- MATRIX_PRAS1 : (MATRIX Offset: 0x0088) Priority Register A for Slave 1 -------- */ +#define MATRIX_PRAS1_M0PR_Pos 0 +#define MATRIX_PRAS1_M0PR_Msk (0x3u << MATRIX_PRAS1_M0PR_Pos) /**< \brief (MATRIX_PRAS1) Master 0 Priority */ +#define MATRIX_PRAS1_M0PR(value) ((MATRIX_PRAS1_M0PR_Msk & ((value) << MATRIX_PRAS1_M0PR_Pos))) +#define MATRIX_PRAS1_M1PR_Pos 4 +#define MATRIX_PRAS1_M1PR_Msk (0x3u << MATRIX_PRAS1_M1PR_Pos) /**< \brief (MATRIX_PRAS1) Master 1 Priority */ +#define MATRIX_PRAS1_M1PR(value) ((MATRIX_PRAS1_M1PR_Msk & ((value) << MATRIX_PRAS1_M1PR_Pos))) +#define MATRIX_PRAS1_M2PR_Pos 8 +#define MATRIX_PRAS1_M2PR_Msk (0x3u << MATRIX_PRAS1_M2PR_Pos) /**< \brief (MATRIX_PRAS1) Master 2 Priority */ +#define MATRIX_PRAS1_M2PR(value) ((MATRIX_PRAS1_M2PR_Msk & ((value) << MATRIX_PRAS1_M2PR_Pos))) +#define MATRIX_PRAS1_M3PR_Pos 12 +#define MATRIX_PRAS1_M3PR_Msk (0x3u << MATRIX_PRAS1_M3PR_Pos) /**< \brief (MATRIX_PRAS1) Master 3 Priority */ +#define MATRIX_PRAS1_M3PR(value) ((MATRIX_PRAS1_M3PR_Msk & ((value) << MATRIX_PRAS1_M3PR_Pos))) +#define MATRIX_PRAS1_M4PR_Pos 16 +#define MATRIX_PRAS1_M4PR_Msk (0x3u << MATRIX_PRAS1_M4PR_Pos) /**< \brief (MATRIX_PRAS1) Master 4 Priority */ +#define MATRIX_PRAS1_M4PR(value) ((MATRIX_PRAS1_M4PR_Msk & ((value) << MATRIX_PRAS1_M4PR_Pos))) +#define MATRIX_PRAS1_M5PR_Pos 20 +#define MATRIX_PRAS1_M5PR_Msk (0x3u << MATRIX_PRAS1_M5PR_Pos) /**< \brief (MATRIX_PRAS1) Master 5 Priority */ +#define MATRIX_PRAS1_M5PR(value) ((MATRIX_PRAS1_M5PR_Msk & ((value) << MATRIX_PRAS1_M5PR_Pos))) +/* -------- MATRIX_PRAS2 : (MATRIX Offset: 0x0090) Priority Register A for Slave 2 -------- */ +#define MATRIX_PRAS2_M0PR_Pos 0 +#define MATRIX_PRAS2_M0PR_Msk (0x3u << MATRIX_PRAS2_M0PR_Pos) /**< \brief (MATRIX_PRAS2) Master 0 Priority */ +#define MATRIX_PRAS2_M0PR(value) ((MATRIX_PRAS2_M0PR_Msk & ((value) << MATRIX_PRAS2_M0PR_Pos))) +#define MATRIX_PRAS2_M1PR_Pos 4 +#define MATRIX_PRAS2_M1PR_Msk (0x3u << MATRIX_PRAS2_M1PR_Pos) /**< \brief (MATRIX_PRAS2) Master 1 Priority */ +#define MATRIX_PRAS2_M1PR(value) ((MATRIX_PRAS2_M1PR_Msk & ((value) << MATRIX_PRAS2_M1PR_Pos))) +#define MATRIX_PRAS2_M2PR_Pos 8 +#define MATRIX_PRAS2_M2PR_Msk (0x3u << MATRIX_PRAS2_M2PR_Pos) /**< \brief (MATRIX_PRAS2) Master 2 Priority */ +#define MATRIX_PRAS2_M2PR(value) ((MATRIX_PRAS2_M2PR_Msk & ((value) << MATRIX_PRAS2_M2PR_Pos))) +#define MATRIX_PRAS2_M3PR_Pos 12 +#define MATRIX_PRAS2_M3PR_Msk (0x3u << MATRIX_PRAS2_M3PR_Pos) /**< \brief (MATRIX_PRAS2) Master 3 Priority */ +#define MATRIX_PRAS2_M3PR(value) ((MATRIX_PRAS2_M3PR_Msk & ((value) << MATRIX_PRAS2_M3PR_Pos))) +#define MATRIX_PRAS2_M4PR_Pos 16 +#define MATRIX_PRAS2_M4PR_Msk (0x3u << MATRIX_PRAS2_M4PR_Pos) /**< \brief (MATRIX_PRAS2) Master 4 Priority */ +#define MATRIX_PRAS2_M4PR(value) ((MATRIX_PRAS2_M4PR_Msk & ((value) << MATRIX_PRAS2_M4PR_Pos))) +#define MATRIX_PRAS2_M5PR_Pos 20 +#define MATRIX_PRAS2_M5PR_Msk (0x3u << MATRIX_PRAS2_M5PR_Pos) /**< \brief (MATRIX_PRAS2) Master 5 Priority */ +#define MATRIX_PRAS2_M5PR(value) ((MATRIX_PRAS2_M5PR_Msk & ((value) << MATRIX_PRAS2_M5PR_Pos))) +/* -------- MATRIX_PRAS3 : (MATRIX Offset: 0x0098) Priority Register A for Slave 3 -------- */ +#define MATRIX_PRAS3_M0PR_Pos 0 +#define MATRIX_PRAS3_M0PR_Msk (0x3u << MATRIX_PRAS3_M0PR_Pos) /**< \brief (MATRIX_PRAS3) Master 0 Priority */ +#define MATRIX_PRAS3_M0PR(value) ((MATRIX_PRAS3_M0PR_Msk & ((value) << MATRIX_PRAS3_M0PR_Pos))) +#define MATRIX_PRAS3_M1PR_Pos 4 +#define MATRIX_PRAS3_M1PR_Msk (0x3u << MATRIX_PRAS3_M1PR_Pos) /**< \brief (MATRIX_PRAS3) Master 1 Priority */ +#define MATRIX_PRAS3_M1PR(value) ((MATRIX_PRAS3_M1PR_Msk & ((value) << MATRIX_PRAS3_M1PR_Pos))) +#define MATRIX_PRAS3_M2PR_Pos 8 +#define MATRIX_PRAS3_M2PR_Msk (0x3u << MATRIX_PRAS3_M2PR_Pos) /**< \brief (MATRIX_PRAS3) Master 2 Priority */ +#define MATRIX_PRAS3_M2PR(value) ((MATRIX_PRAS3_M2PR_Msk & ((value) << MATRIX_PRAS3_M2PR_Pos))) +#define MATRIX_PRAS3_M3PR_Pos 12 +#define MATRIX_PRAS3_M3PR_Msk (0x3u << MATRIX_PRAS3_M3PR_Pos) /**< \brief (MATRIX_PRAS3) Master 3 Priority */ +#define MATRIX_PRAS3_M3PR(value) ((MATRIX_PRAS3_M3PR_Msk & ((value) << MATRIX_PRAS3_M3PR_Pos))) +#define MATRIX_PRAS3_M4PR_Pos 16 +#define MATRIX_PRAS3_M4PR_Msk (0x3u << MATRIX_PRAS3_M4PR_Pos) /**< \brief (MATRIX_PRAS3) Master 4 Priority */ +#define MATRIX_PRAS3_M4PR(value) ((MATRIX_PRAS3_M4PR_Msk & ((value) << MATRIX_PRAS3_M4PR_Pos))) +#define MATRIX_PRAS3_M5PR_Pos 20 +#define MATRIX_PRAS3_M5PR_Msk (0x3u << MATRIX_PRAS3_M5PR_Pos) /**< \brief (MATRIX_PRAS3) Master 5 Priority */ +#define MATRIX_PRAS3_M5PR(value) ((MATRIX_PRAS3_M5PR_Msk & ((value) << MATRIX_PRAS3_M5PR_Pos))) +/* -------- MATRIX_PRAS4 : (MATRIX Offset: 0x00A0) Priority Register A for Slave 4 -------- */ +#define MATRIX_PRAS4_M0PR_Pos 0 +#define MATRIX_PRAS4_M0PR_Msk (0x3u << MATRIX_PRAS4_M0PR_Pos) /**< \brief (MATRIX_PRAS4) Master 0 Priority */ +#define MATRIX_PRAS4_M0PR(value) ((MATRIX_PRAS4_M0PR_Msk & ((value) << MATRIX_PRAS4_M0PR_Pos))) +#define MATRIX_PRAS4_M1PR_Pos 4 +#define MATRIX_PRAS4_M1PR_Msk (0x3u << MATRIX_PRAS4_M1PR_Pos) /**< \brief (MATRIX_PRAS4) Master 1 Priority */ +#define MATRIX_PRAS4_M1PR(value) ((MATRIX_PRAS4_M1PR_Msk & ((value) << MATRIX_PRAS4_M1PR_Pos))) +#define MATRIX_PRAS4_M2PR_Pos 8 +#define MATRIX_PRAS4_M2PR_Msk (0x3u << MATRIX_PRAS4_M2PR_Pos) /**< \brief (MATRIX_PRAS4) Master 2 Priority */ +#define MATRIX_PRAS4_M2PR(value) ((MATRIX_PRAS4_M2PR_Msk & ((value) << MATRIX_PRAS4_M2PR_Pos))) +#define MATRIX_PRAS4_M3PR_Pos 12 +#define MATRIX_PRAS4_M3PR_Msk (0x3u << MATRIX_PRAS4_M3PR_Pos) /**< \brief (MATRIX_PRAS4) Master 3 Priority */ +#define MATRIX_PRAS4_M3PR(value) ((MATRIX_PRAS4_M3PR_Msk & ((value) << MATRIX_PRAS4_M3PR_Pos))) +#define MATRIX_PRAS4_M4PR_Pos 16 +#define MATRIX_PRAS4_M4PR_Msk (0x3u << MATRIX_PRAS4_M4PR_Pos) /**< \brief (MATRIX_PRAS4) Master 4 Priority */ +#define MATRIX_PRAS4_M4PR(value) ((MATRIX_PRAS4_M4PR_Msk & ((value) << MATRIX_PRAS4_M4PR_Pos))) +#define MATRIX_PRAS4_M5PR_Pos 20 +#define MATRIX_PRAS4_M5PR_Msk (0x3u << MATRIX_PRAS4_M5PR_Pos) /**< \brief (MATRIX_PRAS4) Master 5 Priority */ +#define MATRIX_PRAS4_M5PR(value) ((MATRIX_PRAS4_M5PR_Msk & ((value) << MATRIX_PRAS4_M5PR_Pos))) +/* -------- MATRIX_PRAS5 : (MATRIX Offset: 0x00A8) Priority Register A for Slave 5 -------- */ +#define MATRIX_PRAS5_M0PR_Pos 0 +#define MATRIX_PRAS5_M0PR_Msk (0x3u << MATRIX_PRAS5_M0PR_Pos) /**< \brief (MATRIX_PRAS5) Master 0 Priority */ +#define MATRIX_PRAS5_M0PR(value) ((MATRIX_PRAS5_M0PR_Msk & ((value) << MATRIX_PRAS5_M0PR_Pos))) +#define MATRIX_PRAS5_M1PR_Pos 4 +#define MATRIX_PRAS5_M1PR_Msk (0x3u << MATRIX_PRAS5_M1PR_Pos) /**< \brief (MATRIX_PRAS5) Master 1 Priority */ +#define MATRIX_PRAS5_M1PR(value) ((MATRIX_PRAS5_M1PR_Msk & ((value) << MATRIX_PRAS5_M1PR_Pos))) +#define MATRIX_PRAS5_M2PR_Pos 8 +#define MATRIX_PRAS5_M2PR_Msk (0x3u << MATRIX_PRAS5_M2PR_Pos) /**< \brief (MATRIX_PRAS5) Master 2 Priority */ +#define MATRIX_PRAS5_M2PR(value) ((MATRIX_PRAS5_M2PR_Msk & ((value) << MATRIX_PRAS5_M2PR_Pos))) +#define MATRIX_PRAS5_M3PR_Pos 12 +#define MATRIX_PRAS5_M3PR_Msk (0x3u << MATRIX_PRAS5_M3PR_Pos) /**< \brief (MATRIX_PRAS5) Master 3 Priority */ +#define MATRIX_PRAS5_M3PR(value) ((MATRIX_PRAS5_M3PR_Msk & ((value) << MATRIX_PRAS5_M3PR_Pos))) +#define MATRIX_PRAS5_M4PR_Pos 16 +#define MATRIX_PRAS5_M4PR_Msk (0x3u << MATRIX_PRAS5_M4PR_Pos) /**< \brief (MATRIX_PRAS5) Master 4 Priority */ +#define MATRIX_PRAS5_M4PR(value) ((MATRIX_PRAS5_M4PR_Msk & ((value) << MATRIX_PRAS5_M4PR_Pos))) +#define MATRIX_PRAS5_M5PR_Pos 20 +#define MATRIX_PRAS5_M5PR_Msk (0x3u << MATRIX_PRAS5_M5PR_Pos) /**< \brief (MATRIX_PRAS5) Master 5 Priority */ +#define MATRIX_PRAS5_M5PR(value) ((MATRIX_PRAS5_M5PR_Msk & ((value) << MATRIX_PRAS5_M5PR_Pos))) +/* -------- MATRIX_PRAS6 : (MATRIX Offset: 0x00B0) Priority Register A for Slave 6 -------- */ +#define MATRIX_PRAS6_M0PR_Pos 0 +#define MATRIX_PRAS6_M0PR_Msk (0x3u << MATRIX_PRAS6_M0PR_Pos) /**< \brief (MATRIX_PRAS6) Master 0 Priority */ +#define MATRIX_PRAS6_M0PR(value) ((MATRIX_PRAS6_M0PR_Msk & ((value) << MATRIX_PRAS6_M0PR_Pos))) +#define MATRIX_PRAS6_M1PR_Pos 4 +#define MATRIX_PRAS6_M1PR_Msk (0x3u << MATRIX_PRAS6_M1PR_Pos) /**< \brief (MATRIX_PRAS6) Master 1 Priority */ +#define MATRIX_PRAS6_M1PR(value) ((MATRIX_PRAS6_M1PR_Msk & ((value) << MATRIX_PRAS6_M1PR_Pos))) +#define MATRIX_PRAS6_M2PR_Pos 8 +#define MATRIX_PRAS6_M2PR_Msk (0x3u << MATRIX_PRAS6_M2PR_Pos) /**< \brief (MATRIX_PRAS6) Master 2 Priority */ +#define MATRIX_PRAS6_M2PR(value) ((MATRIX_PRAS6_M2PR_Msk & ((value) << MATRIX_PRAS6_M2PR_Pos))) +#define MATRIX_PRAS6_M3PR_Pos 12 +#define MATRIX_PRAS6_M3PR_Msk (0x3u << MATRIX_PRAS6_M3PR_Pos) /**< \brief (MATRIX_PRAS6) Master 3 Priority */ +#define MATRIX_PRAS6_M3PR(value) ((MATRIX_PRAS6_M3PR_Msk & ((value) << MATRIX_PRAS6_M3PR_Pos))) +#define MATRIX_PRAS6_M4PR_Pos 16 +#define MATRIX_PRAS6_M4PR_Msk (0x3u << MATRIX_PRAS6_M4PR_Pos) /**< \brief (MATRIX_PRAS6) Master 4 Priority */ +#define MATRIX_PRAS6_M4PR(value) ((MATRIX_PRAS6_M4PR_Msk & ((value) << MATRIX_PRAS6_M4PR_Pos))) +#define MATRIX_PRAS6_M5PR_Pos 20 +#define MATRIX_PRAS6_M5PR_Msk (0x3u << MATRIX_PRAS6_M5PR_Pos) /**< \brief (MATRIX_PRAS6) Master 5 Priority */ +#define MATRIX_PRAS6_M5PR(value) ((MATRIX_PRAS6_M5PR_Msk & ((value) << MATRIX_PRAS6_M5PR_Pos))) +/* -------- MATRIX_PRAS7 : (MATRIX Offset: 0x00B8) Priority Register A for Slave 7 -------- */ +#define MATRIX_PRAS7_M0PR_Pos 0 +#define MATRIX_PRAS7_M0PR_Msk (0x3u << MATRIX_PRAS7_M0PR_Pos) /**< \brief (MATRIX_PRAS7) Master 0 Priority */ +#define MATRIX_PRAS7_M0PR(value) ((MATRIX_PRAS7_M0PR_Msk & ((value) << MATRIX_PRAS7_M0PR_Pos))) +#define MATRIX_PRAS7_M1PR_Pos 4 +#define MATRIX_PRAS7_M1PR_Msk (0x3u << MATRIX_PRAS7_M1PR_Pos) /**< \brief (MATRIX_PRAS7) Master 1 Priority */ +#define MATRIX_PRAS7_M1PR(value) ((MATRIX_PRAS7_M1PR_Msk & ((value) << MATRIX_PRAS7_M1PR_Pos))) +#define MATRIX_PRAS7_M2PR_Pos 8 +#define MATRIX_PRAS7_M2PR_Msk (0x3u << MATRIX_PRAS7_M2PR_Pos) /**< \brief (MATRIX_PRAS7) Master 2 Priority */ +#define MATRIX_PRAS7_M2PR(value) ((MATRIX_PRAS7_M2PR_Msk & ((value) << MATRIX_PRAS7_M2PR_Pos))) +#define MATRIX_PRAS7_M3PR_Pos 12 +#define MATRIX_PRAS7_M3PR_Msk (0x3u << MATRIX_PRAS7_M3PR_Pos) /**< \brief (MATRIX_PRAS7) Master 3 Priority */ +#define MATRIX_PRAS7_M3PR(value) ((MATRIX_PRAS7_M3PR_Msk & ((value) << MATRIX_PRAS7_M3PR_Pos))) +#define MATRIX_PRAS7_M4PR_Pos 16 +#define MATRIX_PRAS7_M4PR_Msk (0x3u << MATRIX_PRAS7_M4PR_Pos) /**< \brief (MATRIX_PRAS7) Master 4 Priority */ +#define MATRIX_PRAS7_M4PR(value) ((MATRIX_PRAS7_M4PR_Msk & ((value) << MATRIX_PRAS7_M4PR_Pos))) +#define MATRIX_PRAS7_M5PR_Pos 20 +#define MATRIX_PRAS7_M5PR_Msk (0x3u << MATRIX_PRAS7_M5PR_Pos) /**< \brief (MATRIX_PRAS7) Master 5 Priority */ +#define MATRIX_PRAS7_M5PR(value) ((MATRIX_PRAS7_M5PR_Msk & ((value) << MATRIX_PRAS7_M5PR_Pos))) +/* -------- MATRIX_PRAS8 : (MATRIX Offset: 0x00C0) Priority Register A for Slave 8 -------- */ +#define MATRIX_PRAS8_M0PR_Pos 0 +#define MATRIX_PRAS8_M0PR_Msk (0x3u << MATRIX_PRAS8_M0PR_Pos) /**< \brief (MATRIX_PRAS8) Master 0 Priority */ +#define MATRIX_PRAS8_M0PR(value) ((MATRIX_PRAS8_M0PR_Msk & ((value) << MATRIX_PRAS8_M0PR_Pos))) +#define MATRIX_PRAS8_M1PR_Pos 4 +#define MATRIX_PRAS8_M1PR_Msk (0x3u << MATRIX_PRAS8_M1PR_Pos) /**< \brief (MATRIX_PRAS8) Master 1 Priority */ +#define MATRIX_PRAS8_M1PR(value) ((MATRIX_PRAS8_M1PR_Msk & ((value) << MATRIX_PRAS8_M1PR_Pos))) +#define MATRIX_PRAS8_M2PR_Pos 8 +#define MATRIX_PRAS8_M2PR_Msk (0x3u << MATRIX_PRAS8_M2PR_Pos) /**< \brief (MATRIX_PRAS8) Master 2 Priority */ +#define MATRIX_PRAS8_M2PR(value) ((MATRIX_PRAS8_M2PR_Msk & ((value) << MATRIX_PRAS8_M2PR_Pos))) +#define MATRIX_PRAS8_M3PR_Pos 12 +#define MATRIX_PRAS8_M3PR_Msk (0x3u << MATRIX_PRAS8_M3PR_Pos) /**< \brief (MATRIX_PRAS8) Master 3 Priority */ +#define MATRIX_PRAS8_M3PR(value) ((MATRIX_PRAS8_M3PR_Msk & ((value) << MATRIX_PRAS8_M3PR_Pos))) +#define MATRIX_PRAS8_M4PR_Pos 16 +#define MATRIX_PRAS8_M4PR_Msk (0x3u << MATRIX_PRAS8_M4PR_Pos) /**< \brief (MATRIX_PRAS8) Master 4 Priority */ +#define MATRIX_PRAS8_M4PR(value) ((MATRIX_PRAS8_M4PR_Msk & ((value) << MATRIX_PRAS8_M4PR_Pos))) +#define MATRIX_PRAS8_M5PR_Pos 20 +#define MATRIX_PRAS8_M5PR_Msk (0x3u << MATRIX_PRAS8_M5PR_Pos) /**< \brief (MATRIX_PRAS8) Master 5 Priority */ +#define MATRIX_PRAS8_M5PR(value) ((MATRIX_PRAS8_M5PR_Msk & ((value) << MATRIX_PRAS8_M5PR_Pos))) +/* -------- MATRIX_MRCR : (MATRIX Offset: 0x0100) Master Remap Control Register -------- */ +#define MATRIX_MRCR_RCB0 (0x1u << 0) /**< \brief (MATRIX_MRCR) Remap Command Bit for AHB Master 0 */ +#define MATRIX_MRCR_RCB1 (0x1u << 1) /**< \brief (MATRIX_MRCR) Remap Command Bit for AHB Master 1 */ +#define MATRIX_MRCR_RCB2 (0x1u << 2) /**< \brief (MATRIX_MRCR) Remap Command Bit for AHB Master 2 */ +#define MATRIX_MRCR_RCB3 (0x1u << 3) /**< \brief (MATRIX_MRCR) Remap Command Bit for AHB Master 3 */ +#define MATRIX_MRCR_RCB4_Pos 4 +#define MATRIX_MRCR_RCB4_Msk (0x3u << MATRIX_MRCR_RCB4_Pos) /**< \brief (MATRIX_MRCR) Remap Command Bit for AHB Master 4 */ +#define MATRIX_MRCR_RCB4(value) ((MATRIX_MRCR_RCB4_Msk & ((value) << MATRIX_MRCR_RCB4_Pos))) +#define MATRIX_MRCR_RCB5 (0x1u << 6) /**< \brief (MATRIX_MRCR) Remap Command Bit for AHB Master 5 */ +/* -------- CCFG_SYSIO : (MATRIX Offset: 0x0114) System I/O Configuration register -------- */ +#define CCFG_SYSIO_SYSIO12 (0x1u << 12) /**< \brief (CCFG_SYSIO) PC0 or ERASE Assignment */ +/* -------- MATRIX_WPMR : (MATRIX Offset: 0x1E4) Write Protect Mode Register -------- */ +#define MATRIX_WPMR_WPEN (0x1u << 0) /**< \brief (MATRIX_WPMR) Write Protect ENable */ +#define MATRIX_WPMR_WPKEY_Pos 8 +#define MATRIX_WPMR_WPKEY_Msk (0xffffffu << MATRIX_WPMR_WPKEY_Pos) /**< \brief (MATRIX_WPMR) Write Protect KEY (Write-only) */ +#define MATRIX_WPMR_WPKEY(value) ((MATRIX_WPMR_WPKEY_Msk & ((value) << MATRIX_WPMR_WPKEY_Pos))) +/* -------- MATRIX_WPSR : (MATRIX Offset: 0x1E8) Write Protect Status Register -------- */ +#define MATRIX_WPSR_WPVS (0x1u << 0) /**< \brief (MATRIX_WPSR) Write Protect Violation Status */ +#define MATRIX_WPSR_WPVSRC_Pos 8 +#define MATRIX_WPSR_WPVSRC_Msk (0xffffu << MATRIX_WPSR_WPVSRC_Pos) /**< \brief (MATRIX_WPSR) Write Protect Violation Source */ + +/*@}*/ + + +#endif /* _SAM3XA_MATRIX_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_pdc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_pdc.h new file mode 100644 index 000000000..fffd19b5c --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_pdc.h @@ -0,0 +1,98 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_PDC_COMPONENT_ +#define _SAM3XA_PDC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Peripheral DMA Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_PDC Peripheral DMA Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Pdc hardware registers */ +typedef struct { + RwReg PERIPH_RPR; /**< \brief (Pdc Offset: 0x0) Receive Pointer Register */ + RwReg PERIPH_RCR; /**< \brief (Pdc Offset: 0x4) Receive Counter Register */ + RwReg PERIPH_TPR; /**< \brief (Pdc Offset: 0x8) Transmit Pointer Register */ + RwReg PERIPH_TCR; /**< \brief (Pdc Offset: 0xC) Transmit Counter Register */ + RwReg PERIPH_RNPR; /**< \brief (Pdc Offset: 0x10) Receive Next Pointer Register */ + RwReg PERIPH_RNCR; /**< \brief (Pdc Offset: 0x14) Receive Next Counter Register */ + RwReg PERIPH_TNPR; /**< \brief (Pdc Offset: 0x18) Transmit Next Pointer Register */ + RwReg PERIPH_TNCR; /**< \brief (Pdc Offset: 0x1C) Transmit Next Counter Register */ + WoReg PERIPH_PTCR; /**< \brief (Pdc Offset: 0x20) Transfer Control Register */ + RoReg PERIPH_PTSR; /**< \brief (Pdc Offset: 0x24) Transfer Status Register */ +} Pdc; +#endif /* __ASSEMBLY__ */ +/* -------- PERIPH_RPR : (PDC Offset: 0x0) Receive Pointer Register -------- */ +#define PERIPH_RPR_RXPTR_Pos 0 +#define PERIPH_RPR_RXPTR_Msk (0xffffffffu << PERIPH_RPR_RXPTR_Pos) /**< \brief (PERIPH_RPR) Receive Pointer Register */ +#define PERIPH_RPR_RXPTR(value) ((PERIPH_RPR_RXPTR_Msk & ((value) << PERIPH_RPR_RXPTR_Pos))) +/* -------- PERIPH_RCR : (PDC Offset: 0x4) Receive Counter Register -------- */ +#define PERIPH_RCR_RXCTR_Pos 0 +#define PERIPH_RCR_RXCTR_Msk (0xffffu << PERIPH_RCR_RXCTR_Pos) /**< \brief (PERIPH_RCR) Receive Counter Register */ +#define PERIPH_RCR_RXCTR(value) ((PERIPH_RCR_RXCTR_Msk & ((value) << PERIPH_RCR_RXCTR_Pos))) +/* -------- PERIPH_TPR : (PDC Offset: 0x8) Transmit Pointer Register -------- */ +#define PERIPH_TPR_TXPTR_Pos 0 +#define PERIPH_TPR_TXPTR_Msk (0xffffffffu << PERIPH_TPR_TXPTR_Pos) /**< \brief (PERIPH_TPR) Transmit Counter Register */ +#define PERIPH_TPR_TXPTR(value) ((PERIPH_TPR_TXPTR_Msk & ((value) << PERIPH_TPR_TXPTR_Pos))) +/* -------- PERIPH_TCR : (PDC Offset: 0xC) Transmit Counter Register -------- */ +#define PERIPH_TCR_TXCTR_Pos 0 +#define PERIPH_TCR_TXCTR_Msk (0xffffu << PERIPH_TCR_TXCTR_Pos) /**< \brief (PERIPH_TCR) Transmit Counter Register */ +#define PERIPH_TCR_TXCTR(value) ((PERIPH_TCR_TXCTR_Msk & ((value) << PERIPH_TCR_TXCTR_Pos))) +/* -------- PERIPH_RNPR : (PDC Offset: 0x10) Receive Next Pointer Register -------- */ +#define PERIPH_RNPR_RXNPTR_Pos 0 +#define PERIPH_RNPR_RXNPTR_Msk (0xffffffffu << PERIPH_RNPR_RXNPTR_Pos) /**< \brief (PERIPH_RNPR) Receive Next Pointer */ +#define PERIPH_RNPR_RXNPTR(value) ((PERIPH_RNPR_RXNPTR_Msk & ((value) << PERIPH_RNPR_RXNPTR_Pos))) +/* -------- PERIPH_RNCR : (PDC Offset: 0x14) Receive Next Counter Register -------- */ +#define PERIPH_RNCR_RXNCTR_Pos 0 +#define PERIPH_RNCR_RXNCTR_Msk (0xffffu << PERIPH_RNCR_RXNCTR_Pos) /**< \brief (PERIPH_RNCR) Receive Next Counter */ +#define PERIPH_RNCR_RXNCTR(value) ((PERIPH_RNCR_RXNCTR_Msk & ((value) << PERIPH_RNCR_RXNCTR_Pos))) +/* -------- PERIPH_TNPR : (PDC Offset: 0x18) Transmit Next Pointer Register -------- */ +#define PERIPH_TNPR_TXNPTR_Pos 0 +#define PERIPH_TNPR_TXNPTR_Msk (0xffffffffu << PERIPH_TNPR_TXNPTR_Pos) /**< \brief (PERIPH_TNPR) Transmit Next Pointer */ +#define PERIPH_TNPR_TXNPTR(value) ((PERIPH_TNPR_TXNPTR_Msk & ((value) << PERIPH_TNPR_TXNPTR_Pos))) +/* -------- PERIPH_TNCR : (PDC Offset: 0x1C) Transmit Next Counter Register -------- */ +#define PERIPH_TNCR_TXNCTR_Pos 0 +#define PERIPH_TNCR_TXNCTR_Msk (0xffffu << PERIPH_TNCR_TXNCTR_Pos) /**< \brief (PERIPH_TNCR) Transmit Counter Next */ +#define PERIPH_TNCR_TXNCTR(value) ((PERIPH_TNCR_TXNCTR_Msk & ((value) << PERIPH_TNCR_TXNCTR_Pos))) +/* -------- PERIPH_PTCR : (PDC Offset: 0x20) Transfer Control Register -------- */ +#define PERIPH_PTCR_RXTEN (0x1u << 0) /**< \brief (PERIPH_PTCR) Receiver Transfer Enable */ +#define PERIPH_PTCR_RXTDIS (0x1u << 1) /**< \brief (PERIPH_PTCR) Receiver Transfer Disable */ +#define PERIPH_PTCR_TXTEN (0x1u << 8) /**< \brief (PERIPH_PTCR) Transmitter Transfer Enable */ +#define PERIPH_PTCR_TXTDIS (0x1u << 9) /**< \brief (PERIPH_PTCR) Transmitter Transfer Disable */ +/* -------- PERIPH_PTSR : (PDC Offset: 0x24) Transfer Status Register -------- */ +#define PERIPH_PTSR_RXTEN (0x1u << 0) /**< \brief (PERIPH_PTSR) Receiver Transfer Enable */ +#define PERIPH_PTSR_TXTEN (0x1u << 8) /**< \brief (PERIPH_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3XA_PDC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_pio.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_pio.h new file mode 100644 index 000000000..df598b8e1 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_pio.h @@ -0,0 +1,1435 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_PIO_COMPONENT_ +#define _SAM3XA_PIO_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Parallel Input/Output Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_PIO Parallel Input/Output Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Pio hardware registers */ +typedef struct { + WoReg PIO_PER; /**< \brief (Pio Offset: 0x0000) PIO Enable Register */ + WoReg PIO_PDR; /**< \brief (Pio Offset: 0x0004) PIO Disable Register */ + RoReg PIO_PSR; /**< \brief (Pio Offset: 0x0008) PIO Status Register */ + RoReg Reserved1[1]; + WoReg PIO_OER; /**< \brief (Pio Offset: 0x0010) Output Enable Register */ + WoReg PIO_ODR; /**< \brief (Pio Offset: 0x0014) Output Disable Register */ + RoReg PIO_OSR; /**< \brief (Pio Offset: 0x0018) Output Status Register */ + RoReg Reserved2[1]; + WoReg PIO_IFER; /**< \brief (Pio Offset: 0x0020) Glitch Input Filter Enable Register */ + WoReg PIO_IFDR; /**< \brief (Pio Offset: 0x0024) Glitch Input Filter Disable Register */ + RoReg PIO_IFSR; /**< \brief (Pio Offset: 0x0028) Glitch Input Filter Status Register */ + RoReg Reserved3[1]; + WoReg PIO_SODR; /**< \brief (Pio Offset: 0x0030) Set Output Data Register */ + WoReg PIO_CODR; /**< \brief (Pio Offset: 0x0034) Clear Output Data Register */ + RwReg PIO_ODSR; /**< \brief (Pio Offset: 0x0038) Output Data Status Register */ + RoReg PIO_PDSR; /**< \brief (Pio Offset: 0x003C) Pin Data Status Register */ + WoReg PIO_IER; /**< \brief (Pio Offset: 0x0040) Interrupt Enable Register */ + WoReg PIO_IDR; /**< \brief (Pio Offset: 0x0044) Interrupt Disable Register */ + RoReg PIO_IMR; /**< \brief (Pio Offset: 0x0048) Interrupt Mask Register */ + RoReg PIO_ISR; /**< \brief (Pio Offset: 0x004C) Interrupt Status Register */ + WoReg PIO_MDER; /**< \brief (Pio Offset: 0x0050) Multi-driver Enable Register */ + WoReg PIO_MDDR; /**< \brief (Pio Offset: 0x0054) Multi-driver Disable Register */ + RoReg PIO_MDSR; /**< \brief (Pio Offset: 0x0058) Multi-driver Status Register */ + RoReg Reserved4[1]; + WoReg PIO_PUDR; /**< \brief (Pio Offset: 0x0060) Pull-up Disable Register */ + WoReg PIO_PUER; /**< \brief (Pio Offset: 0x0064) Pull-up Enable Register */ + RoReg PIO_PUSR; /**< \brief (Pio Offset: 0x0068) Pad Pull-up Status Register */ + RoReg Reserved5[1]; + RwReg PIO_ABSR; /**< \brief (Pio Offset: 0x0070) Peripheral AB Select Register */ + RoReg Reserved6[3]; + WoReg PIO_SCIFSR; /**< \brief (Pio Offset: 0x0080) System Clock Glitch Input Filter Select Register */ + WoReg PIO_DIFSR; /**< \brief (Pio Offset: 0x0084) Debouncing Input Filter Select Register */ + RoReg PIO_IFDGSR; /**< \brief (Pio Offset: 0x0088) Glitch or Debouncing Input Filter Clock Selection Status Register */ + RwReg PIO_SCDR; /**< \brief (Pio Offset: 0x008C) Slow Clock Divider Debouncing Register */ + RoReg Reserved7[4]; + WoReg PIO_OWER; /**< \brief (Pio Offset: 0x00A0) Output Write Enable */ + WoReg PIO_OWDR; /**< \brief (Pio Offset: 0x00A4) Output Write Disable */ + RoReg PIO_OWSR; /**< \brief (Pio Offset: 0x00A8) Output Write Status Register */ + RoReg Reserved8[1]; + WoReg PIO_AIMER; /**< \brief (Pio Offset: 0x00B0) Additional Interrupt Modes Enable Register */ + WoReg PIO_AIMDR; /**< \brief (Pio Offset: 0x00B4) Additional Interrupt Modes Disables Register */ + RoReg PIO_AIMMR; /**< \brief (Pio Offset: 0x00B8) Additional Interrupt Modes Mask Register */ + RoReg Reserved9[1]; + WoReg PIO_ESR; /**< \brief (Pio Offset: 0x00C0) Edge Select Register */ + WoReg PIO_LSR; /**< \brief (Pio Offset: 0x00C4) Level Select Register */ + RoReg PIO_ELSR; /**< \brief (Pio Offset: 0x00C8) Edge/Level Status Register */ + RoReg Reserved10[1]; + WoReg PIO_FELLSR; /**< \brief (Pio Offset: 0x00D0) Falling Edge/Low Level Select Register */ + WoReg PIO_REHLSR; /**< \brief (Pio Offset: 0x00D4) Rising Edge/ High Level Select Register */ + RoReg PIO_FRLHSR; /**< \brief (Pio Offset: 0x00D8) Fall/Rise - Low/High Status Register */ + RoReg Reserved11[1]; + RoReg PIO_LOCKSR; /**< \brief (Pio Offset: 0x00E0) Lock Status */ + RwReg PIO_WPMR; /**< \brief (Pio Offset: 0x00E4) Write Protect Mode Register */ + RoReg PIO_WPSR; /**< \brief (Pio Offset: 0x00E8) Write Protect Status Register */ +} Pio; +#endif /* __ASSEMBLY__ */ +/* -------- PIO_PER : (PIO Offset: 0x0000) PIO Enable Register -------- */ +#define PIO_PER_P0 (0x1u << 0) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P1 (0x1u << 1) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P2 (0x1u << 2) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P3 (0x1u << 3) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P4 (0x1u << 4) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P5 (0x1u << 5) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P6 (0x1u << 6) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P7 (0x1u << 7) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P8 (0x1u << 8) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P9 (0x1u << 9) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P10 (0x1u << 10) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P11 (0x1u << 11) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P12 (0x1u << 12) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P13 (0x1u << 13) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P14 (0x1u << 14) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P15 (0x1u << 15) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P16 (0x1u << 16) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P17 (0x1u << 17) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P18 (0x1u << 18) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P19 (0x1u << 19) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P20 (0x1u << 20) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P21 (0x1u << 21) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P22 (0x1u << 22) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P23 (0x1u << 23) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P24 (0x1u << 24) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P25 (0x1u << 25) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P26 (0x1u << 26) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P27 (0x1u << 27) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P28 (0x1u << 28) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P29 (0x1u << 29) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P30 (0x1u << 30) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P31 (0x1u << 31) /**< \brief (PIO_PER) PIO Enable */ +/* -------- PIO_PDR : (PIO Offset: 0x0004) PIO Disable Register -------- */ +#define PIO_PDR_P0 (0x1u << 0) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P1 (0x1u << 1) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P2 (0x1u << 2) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P3 (0x1u << 3) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P4 (0x1u << 4) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P5 (0x1u << 5) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P6 (0x1u << 6) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P7 (0x1u << 7) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P8 (0x1u << 8) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P9 (0x1u << 9) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P10 (0x1u << 10) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P11 (0x1u << 11) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P12 (0x1u << 12) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P13 (0x1u << 13) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P14 (0x1u << 14) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P15 (0x1u << 15) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P16 (0x1u << 16) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P17 (0x1u << 17) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P18 (0x1u << 18) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P19 (0x1u << 19) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P20 (0x1u << 20) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P21 (0x1u << 21) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P22 (0x1u << 22) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P23 (0x1u << 23) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P24 (0x1u << 24) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P25 (0x1u << 25) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P26 (0x1u << 26) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P27 (0x1u << 27) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P28 (0x1u << 28) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P29 (0x1u << 29) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P30 (0x1u << 30) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P31 (0x1u << 31) /**< \brief (PIO_PDR) PIO Disable */ +/* -------- PIO_PSR : (PIO Offset: 0x0008) PIO Status Register -------- */ +#define PIO_PSR_P0 (0x1u << 0) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P1 (0x1u << 1) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P2 (0x1u << 2) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P3 (0x1u << 3) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P4 (0x1u << 4) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P5 (0x1u << 5) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P6 (0x1u << 6) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P7 (0x1u << 7) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P8 (0x1u << 8) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P9 (0x1u << 9) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P10 (0x1u << 10) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P11 (0x1u << 11) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P12 (0x1u << 12) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P13 (0x1u << 13) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P14 (0x1u << 14) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P15 (0x1u << 15) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P16 (0x1u << 16) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P17 (0x1u << 17) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P18 (0x1u << 18) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P19 (0x1u << 19) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P20 (0x1u << 20) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P21 (0x1u << 21) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P22 (0x1u << 22) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P23 (0x1u << 23) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P24 (0x1u << 24) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P25 (0x1u << 25) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P26 (0x1u << 26) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P27 (0x1u << 27) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P28 (0x1u << 28) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P29 (0x1u << 29) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P30 (0x1u << 30) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P31 (0x1u << 31) /**< \brief (PIO_PSR) PIO Status */ +/* -------- PIO_OER : (PIO Offset: 0x0010) Output Enable Register -------- */ +#define PIO_OER_P0 (0x1u << 0) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P1 (0x1u << 1) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P2 (0x1u << 2) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P3 (0x1u << 3) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P4 (0x1u << 4) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P5 (0x1u << 5) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P6 (0x1u << 6) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P7 (0x1u << 7) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P8 (0x1u << 8) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P9 (0x1u << 9) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P10 (0x1u << 10) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P11 (0x1u << 11) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P12 (0x1u << 12) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P13 (0x1u << 13) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P14 (0x1u << 14) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P15 (0x1u << 15) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P16 (0x1u << 16) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P17 (0x1u << 17) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P18 (0x1u << 18) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P19 (0x1u << 19) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P20 (0x1u << 20) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P21 (0x1u << 21) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P22 (0x1u << 22) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P23 (0x1u << 23) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P24 (0x1u << 24) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P25 (0x1u << 25) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P26 (0x1u << 26) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P27 (0x1u << 27) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P28 (0x1u << 28) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P29 (0x1u << 29) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P30 (0x1u << 30) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P31 (0x1u << 31) /**< \brief (PIO_OER) Output Enable */ +/* -------- PIO_ODR : (PIO Offset: 0x0014) Output Disable Register -------- */ +#define PIO_ODR_P0 (0x1u << 0) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P1 (0x1u << 1) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P2 (0x1u << 2) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P3 (0x1u << 3) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P4 (0x1u << 4) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P5 (0x1u << 5) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P6 (0x1u << 6) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P7 (0x1u << 7) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P8 (0x1u << 8) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P9 (0x1u << 9) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P10 (0x1u << 10) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P11 (0x1u << 11) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P12 (0x1u << 12) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P13 (0x1u << 13) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P14 (0x1u << 14) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P15 (0x1u << 15) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P16 (0x1u << 16) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P17 (0x1u << 17) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P18 (0x1u << 18) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P19 (0x1u << 19) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P20 (0x1u << 20) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P21 (0x1u << 21) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P22 (0x1u << 22) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P23 (0x1u << 23) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P24 (0x1u << 24) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P25 (0x1u << 25) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P26 (0x1u << 26) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P27 (0x1u << 27) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P28 (0x1u << 28) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P29 (0x1u << 29) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P30 (0x1u << 30) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P31 (0x1u << 31) /**< \brief (PIO_ODR) Output Disable */ +/* -------- PIO_OSR : (PIO Offset: 0x0018) Output Status Register -------- */ +#define PIO_OSR_P0 (0x1u << 0) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P1 (0x1u << 1) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P2 (0x1u << 2) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P3 (0x1u << 3) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P4 (0x1u << 4) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P5 (0x1u << 5) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P6 (0x1u << 6) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P7 (0x1u << 7) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P8 (0x1u << 8) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P9 (0x1u << 9) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P10 (0x1u << 10) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P11 (0x1u << 11) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P12 (0x1u << 12) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P13 (0x1u << 13) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P14 (0x1u << 14) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P15 (0x1u << 15) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P16 (0x1u << 16) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P17 (0x1u << 17) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P18 (0x1u << 18) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P19 (0x1u << 19) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P20 (0x1u << 20) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P21 (0x1u << 21) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P22 (0x1u << 22) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P23 (0x1u << 23) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P24 (0x1u << 24) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P25 (0x1u << 25) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P26 (0x1u << 26) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P27 (0x1u << 27) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P28 (0x1u << 28) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P29 (0x1u << 29) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P30 (0x1u << 30) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P31 (0x1u << 31) /**< \brief (PIO_OSR) Output Status */ +/* -------- PIO_IFER : (PIO Offset: 0x0020) Glitch Input Filter Enable Register -------- */ +#define PIO_IFER_P0 (0x1u << 0) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P1 (0x1u << 1) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P2 (0x1u << 2) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P3 (0x1u << 3) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P4 (0x1u << 4) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P5 (0x1u << 5) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P6 (0x1u << 6) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P7 (0x1u << 7) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P8 (0x1u << 8) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P9 (0x1u << 9) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P10 (0x1u << 10) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P11 (0x1u << 11) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P12 (0x1u << 12) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P13 (0x1u << 13) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P14 (0x1u << 14) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P15 (0x1u << 15) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P16 (0x1u << 16) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P17 (0x1u << 17) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P18 (0x1u << 18) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P19 (0x1u << 19) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P20 (0x1u << 20) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P21 (0x1u << 21) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P22 (0x1u << 22) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P23 (0x1u << 23) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P24 (0x1u << 24) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P25 (0x1u << 25) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P26 (0x1u << 26) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P27 (0x1u << 27) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P28 (0x1u << 28) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P29 (0x1u << 29) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P30 (0x1u << 30) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P31 (0x1u << 31) /**< \brief (PIO_IFER) Input Filter Enable */ +/* -------- PIO_IFDR : (PIO Offset: 0x0024) Glitch Input Filter Disable Register -------- */ +#define PIO_IFDR_P0 (0x1u << 0) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P1 (0x1u << 1) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P2 (0x1u << 2) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P3 (0x1u << 3) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P4 (0x1u << 4) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P5 (0x1u << 5) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P6 (0x1u << 6) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P7 (0x1u << 7) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P8 (0x1u << 8) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P9 (0x1u << 9) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P10 (0x1u << 10) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P11 (0x1u << 11) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P12 (0x1u << 12) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P13 (0x1u << 13) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P14 (0x1u << 14) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P15 (0x1u << 15) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P16 (0x1u << 16) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P17 (0x1u << 17) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P18 (0x1u << 18) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P19 (0x1u << 19) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P20 (0x1u << 20) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P21 (0x1u << 21) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P22 (0x1u << 22) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P23 (0x1u << 23) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P24 (0x1u << 24) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P25 (0x1u << 25) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P26 (0x1u << 26) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P27 (0x1u << 27) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P28 (0x1u << 28) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P29 (0x1u << 29) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P30 (0x1u << 30) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P31 (0x1u << 31) /**< \brief (PIO_IFDR) Input Filter Disable */ +/* -------- PIO_IFSR : (PIO Offset: 0x0028) Glitch Input Filter Status Register -------- */ +#define PIO_IFSR_P0 (0x1u << 0) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P1 (0x1u << 1) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P2 (0x1u << 2) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P3 (0x1u << 3) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P4 (0x1u << 4) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P5 (0x1u << 5) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P6 (0x1u << 6) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P7 (0x1u << 7) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P8 (0x1u << 8) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P9 (0x1u << 9) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P10 (0x1u << 10) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P11 (0x1u << 11) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P12 (0x1u << 12) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P13 (0x1u << 13) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P14 (0x1u << 14) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P15 (0x1u << 15) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P16 (0x1u << 16) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P17 (0x1u << 17) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P18 (0x1u << 18) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P19 (0x1u << 19) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P20 (0x1u << 20) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P21 (0x1u << 21) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P22 (0x1u << 22) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P23 (0x1u << 23) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P24 (0x1u << 24) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P25 (0x1u << 25) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P26 (0x1u << 26) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P27 (0x1u << 27) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P28 (0x1u << 28) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P29 (0x1u << 29) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P30 (0x1u << 30) /**< \brief (PIO_IFSR) Input Filer Status */ +#define PIO_IFSR_P31 (0x1u << 31) /**< \brief (PIO_IFSR) Input Filer Status */ +/* -------- PIO_SODR : (PIO Offset: 0x0030) Set Output Data Register -------- */ +#define PIO_SODR_P0 (0x1u << 0) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P1 (0x1u << 1) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P2 (0x1u << 2) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P3 (0x1u << 3) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P4 (0x1u << 4) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P5 (0x1u << 5) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P6 (0x1u << 6) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P7 (0x1u << 7) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P8 (0x1u << 8) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P9 (0x1u << 9) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P10 (0x1u << 10) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P11 (0x1u << 11) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P12 (0x1u << 12) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P13 (0x1u << 13) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P14 (0x1u << 14) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P15 (0x1u << 15) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P16 (0x1u << 16) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P17 (0x1u << 17) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P18 (0x1u << 18) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P19 (0x1u << 19) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P20 (0x1u << 20) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P21 (0x1u << 21) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P22 (0x1u << 22) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P23 (0x1u << 23) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P24 (0x1u << 24) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P25 (0x1u << 25) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P26 (0x1u << 26) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P27 (0x1u << 27) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P28 (0x1u << 28) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P29 (0x1u << 29) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P30 (0x1u << 30) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P31 (0x1u << 31) /**< \brief (PIO_SODR) Set Output Data */ +/* -------- PIO_CODR : (PIO Offset: 0x0034) Clear Output Data Register -------- */ +#define PIO_CODR_P0 (0x1u << 0) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P1 (0x1u << 1) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P2 (0x1u << 2) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P3 (0x1u << 3) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P4 (0x1u << 4) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P5 (0x1u << 5) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P6 (0x1u << 6) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P7 (0x1u << 7) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P8 (0x1u << 8) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P9 (0x1u << 9) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P10 (0x1u << 10) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P11 (0x1u << 11) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P12 (0x1u << 12) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P13 (0x1u << 13) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P14 (0x1u << 14) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P15 (0x1u << 15) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P16 (0x1u << 16) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P17 (0x1u << 17) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P18 (0x1u << 18) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P19 (0x1u << 19) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P20 (0x1u << 20) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P21 (0x1u << 21) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P22 (0x1u << 22) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P23 (0x1u << 23) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P24 (0x1u << 24) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P25 (0x1u << 25) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P26 (0x1u << 26) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P27 (0x1u << 27) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P28 (0x1u << 28) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P29 (0x1u << 29) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P30 (0x1u << 30) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P31 (0x1u << 31) /**< \brief (PIO_CODR) Clear Output Data */ +/* -------- PIO_ODSR : (PIO Offset: 0x0038) Output Data Status Register -------- */ +#define PIO_ODSR_P0 (0x1u << 0) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P1 (0x1u << 1) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P2 (0x1u << 2) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P3 (0x1u << 3) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P4 (0x1u << 4) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P5 (0x1u << 5) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P6 (0x1u << 6) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P7 (0x1u << 7) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P8 (0x1u << 8) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P9 (0x1u << 9) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P10 (0x1u << 10) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P11 (0x1u << 11) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P12 (0x1u << 12) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P13 (0x1u << 13) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P14 (0x1u << 14) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P15 (0x1u << 15) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P16 (0x1u << 16) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P17 (0x1u << 17) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P18 (0x1u << 18) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P19 (0x1u << 19) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P20 (0x1u << 20) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P21 (0x1u << 21) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P22 (0x1u << 22) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P23 (0x1u << 23) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P24 (0x1u << 24) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P25 (0x1u << 25) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P26 (0x1u << 26) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P27 (0x1u << 27) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P28 (0x1u << 28) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P29 (0x1u << 29) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P30 (0x1u << 30) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P31 (0x1u << 31) /**< \brief (PIO_ODSR) Output Data Status */ +/* -------- PIO_PDSR : (PIO Offset: 0x003C) Pin Data Status Register -------- */ +#define PIO_PDSR_P0 (0x1u << 0) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P1 (0x1u << 1) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P2 (0x1u << 2) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P3 (0x1u << 3) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P4 (0x1u << 4) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P5 (0x1u << 5) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P6 (0x1u << 6) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P7 (0x1u << 7) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P8 (0x1u << 8) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P9 (0x1u << 9) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P10 (0x1u << 10) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P11 (0x1u << 11) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P12 (0x1u << 12) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P13 (0x1u << 13) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P14 (0x1u << 14) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P15 (0x1u << 15) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P16 (0x1u << 16) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P17 (0x1u << 17) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P18 (0x1u << 18) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P19 (0x1u << 19) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P20 (0x1u << 20) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P21 (0x1u << 21) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P22 (0x1u << 22) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P23 (0x1u << 23) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P24 (0x1u << 24) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P25 (0x1u << 25) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P26 (0x1u << 26) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P27 (0x1u << 27) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P28 (0x1u << 28) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P29 (0x1u << 29) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P30 (0x1u << 30) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P31 (0x1u << 31) /**< \brief (PIO_PDSR) Output Data Status */ +/* -------- PIO_IER : (PIO Offset: 0x0040) Interrupt Enable Register -------- */ +#define PIO_IER_P0 (0x1u << 0) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P1 (0x1u << 1) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P2 (0x1u << 2) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P3 (0x1u << 3) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P4 (0x1u << 4) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P5 (0x1u << 5) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P6 (0x1u << 6) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P7 (0x1u << 7) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P8 (0x1u << 8) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P9 (0x1u << 9) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P10 (0x1u << 10) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P11 (0x1u << 11) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P12 (0x1u << 12) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P13 (0x1u << 13) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P14 (0x1u << 14) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P15 (0x1u << 15) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P16 (0x1u << 16) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P17 (0x1u << 17) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P18 (0x1u << 18) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P19 (0x1u << 19) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P20 (0x1u << 20) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P21 (0x1u << 21) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P22 (0x1u << 22) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P23 (0x1u << 23) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P24 (0x1u << 24) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P25 (0x1u << 25) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P26 (0x1u << 26) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P27 (0x1u << 27) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P28 (0x1u << 28) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P29 (0x1u << 29) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P30 (0x1u << 30) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P31 (0x1u << 31) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +/* -------- PIO_IDR : (PIO Offset: 0x0044) Interrupt Disable Register -------- */ +#define PIO_IDR_P0 (0x1u << 0) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P1 (0x1u << 1) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P2 (0x1u << 2) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P3 (0x1u << 3) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P4 (0x1u << 4) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P5 (0x1u << 5) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P6 (0x1u << 6) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P7 (0x1u << 7) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P8 (0x1u << 8) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P9 (0x1u << 9) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P10 (0x1u << 10) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P11 (0x1u << 11) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P12 (0x1u << 12) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P13 (0x1u << 13) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P14 (0x1u << 14) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P15 (0x1u << 15) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P16 (0x1u << 16) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P17 (0x1u << 17) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P18 (0x1u << 18) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P19 (0x1u << 19) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P20 (0x1u << 20) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P21 (0x1u << 21) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P22 (0x1u << 22) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P23 (0x1u << 23) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P24 (0x1u << 24) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P25 (0x1u << 25) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P26 (0x1u << 26) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P27 (0x1u << 27) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P28 (0x1u << 28) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P29 (0x1u << 29) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P30 (0x1u << 30) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P31 (0x1u << 31) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +/* -------- PIO_IMR : (PIO Offset: 0x0048) Interrupt Mask Register -------- */ +#define PIO_IMR_P0 (0x1u << 0) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P1 (0x1u << 1) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P2 (0x1u << 2) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P3 (0x1u << 3) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P4 (0x1u << 4) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P5 (0x1u << 5) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P6 (0x1u << 6) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P7 (0x1u << 7) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P8 (0x1u << 8) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P9 (0x1u << 9) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P10 (0x1u << 10) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P11 (0x1u << 11) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P12 (0x1u << 12) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P13 (0x1u << 13) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P14 (0x1u << 14) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P15 (0x1u << 15) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P16 (0x1u << 16) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P17 (0x1u << 17) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P18 (0x1u << 18) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P19 (0x1u << 19) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P20 (0x1u << 20) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P21 (0x1u << 21) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P22 (0x1u << 22) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P23 (0x1u << 23) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P24 (0x1u << 24) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P25 (0x1u << 25) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P26 (0x1u << 26) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P27 (0x1u << 27) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P28 (0x1u << 28) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P29 (0x1u << 29) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P30 (0x1u << 30) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P31 (0x1u << 31) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +/* -------- PIO_ISR : (PIO Offset: 0x004C) Interrupt Status Register -------- */ +#define PIO_ISR_P0 (0x1u << 0) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P1 (0x1u << 1) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P2 (0x1u << 2) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P3 (0x1u << 3) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P4 (0x1u << 4) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P5 (0x1u << 5) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P6 (0x1u << 6) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P7 (0x1u << 7) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P8 (0x1u << 8) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P9 (0x1u << 9) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P10 (0x1u << 10) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P11 (0x1u << 11) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P12 (0x1u << 12) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P13 (0x1u << 13) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P14 (0x1u << 14) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P15 (0x1u << 15) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P16 (0x1u << 16) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P17 (0x1u << 17) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P18 (0x1u << 18) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P19 (0x1u << 19) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P20 (0x1u << 20) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P21 (0x1u << 21) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P22 (0x1u << 22) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P23 (0x1u << 23) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P24 (0x1u << 24) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P25 (0x1u << 25) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P26 (0x1u << 26) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P27 (0x1u << 27) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P28 (0x1u << 28) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P29 (0x1u << 29) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P30 (0x1u << 30) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P31 (0x1u << 31) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +/* -------- PIO_MDER : (PIO Offset: 0x0050) Multi-driver Enable Register -------- */ +#define PIO_MDER_P0 (0x1u << 0) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P1 (0x1u << 1) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P2 (0x1u << 2) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P3 (0x1u << 3) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P4 (0x1u << 4) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P5 (0x1u << 5) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P6 (0x1u << 6) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P7 (0x1u << 7) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P8 (0x1u << 8) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P9 (0x1u << 9) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P10 (0x1u << 10) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P11 (0x1u << 11) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P12 (0x1u << 12) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P13 (0x1u << 13) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P14 (0x1u << 14) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P15 (0x1u << 15) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P16 (0x1u << 16) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P17 (0x1u << 17) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P18 (0x1u << 18) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P19 (0x1u << 19) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P20 (0x1u << 20) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P21 (0x1u << 21) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P22 (0x1u << 22) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P23 (0x1u << 23) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P24 (0x1u << 24) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P25 (0x1u << 25) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P26 (0x1u << 26) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P27 (0x1u << 27) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P28 (0x1u << 28) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P29 (0x1u << 29) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P30 (0x1u << 30) /**< \brief (PIO_MDER) Multi Drive Enable. */ +#define PIO_MDER_P31 (0x1u << 31) /**< \brief (PIO_MDER) Multi Drive Enable. */ +/* -------- PIO_MDDR : (PIO Offset: 0x0054) Multi-driver Disable Register -------- */ +#define PIO_MDDR_P0 (0x1u << 0) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P1 (0x1u << 1) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P2 (0x1u << 2) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P3 (0x1u << 3) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P4 (0x1u << 4) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P5 (0x1u << 5) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P6 (0x1u << 6) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P7 (0x1u << 7) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P8 (0x1u << 8) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P9 (0x1u << 9) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P10 (0x1u << 10) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P11 (0x1u << 11) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P12 (0x1u << 12) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P13 (0x1u << 13) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P14 (0x1u << 14) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P15 (0x1u << 15) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P16 (0x1u << 16) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P17 (0x1u << 17) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P18 (0x1u << 18) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P19 (0x1u << 19) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P20 (0x1u << 20) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P21 (0x1u << 21) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P22 (0x1u << 22) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P23 (0x1u << 23) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P24 (0x1u << 24) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P25 (0x1u << 25) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P26 (0x1u << 26) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P27 (0x1u << 27) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P28 (0x1u << 28) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P29 (0x1u << 29) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P30 (0x1u << 30) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +#define PIO_MDDR_P31 (0x1u << 31) /**< \brief (PIO_MDDR) Multi Drive Disable. */ +/* -------- PIO_MDSR : (PIO Offset: 0x0058) Multi-driver Status Register -------- */ +#define PIO_MDSR_P0 (0x1u << 0) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P1 (0x1u << 1) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P2 (0x1u << 2) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P3 (0x1u << 3) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P4 (0x1u << 4) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P5 (0x1u << 5) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P6 (0x1u << 6) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P7 (0x1u << 7) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P8 (0x1u << 8) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P9 (0x1u << 9) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P10 (0x1u << 10) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P11 (0x1u << 11) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P12 (0x1u << 12) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P13 (0x1u << 13) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P14 (0x1u << 14) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P15 (0x1u << 15) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P16 (0x1u << 16) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P17 (0x1u << 17) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P18 (0x1u << 18) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P19 (0x1u << 19) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P20 (0x1u << 20) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P21 (0x1u << 21) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P22 (0x1u << 22) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P23 (0x1u << 23) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P24 (0x1u << 24) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P25 (0x1u << 25) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P26 (0x1u << 26) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P27 (0x1u << 27) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P28 (0x1u << 28) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P29 (0x1u << 29) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P30 (0x1u << 30) /**< \brief (PIO_MDSR) Multi Drive Status. */ +#define PIO_MDSR_P31 (0x1u << 31) /**< \brief (PIO_MDSR) Multi Drive Status. */ +/* -------- PIO_PUDR : (PIO Offset: 0x0060) Pull-up Disable Register -------- */ +#define PIO_PUDR_P0 (0x1u << 0) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P1 (0x1u << 1) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P2 (0x1u << 2) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P3 (0x1u << 3) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P4 (0x1u << 4) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P5 (0x1u << 5) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P6 (0x1u << 6) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P7 (0x1u << 7) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P8 (0x1u << 8) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P9 (0x1u << 9) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P10 (0x1u << 10) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P11 (0x1u << 11) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P12 (0x1u << 12) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P13 (0x1u << 13) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P14 (0x1u << 14) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P15 (0x1u << 15) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P16 (0x1u << 16) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P17 (0x1u << 17) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P18 (0x1u << 18) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P19 (0x1u << 19) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P20 (0x1u << 20) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P21 (0x1u << 21) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P22 (0x1u << 22) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P23 (0x1u << 23) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P24 (0x1u << 24) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P25 (0x1u << 25) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P26 (0x1u << 26) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P27 (0x1u << 27) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P28 (0x1u << 28) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P29 (0x1u << 29) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P30 (0x1u << 30) /**< \brief (PIO_PUDR) Pull Up Disable. */ +#define PIO_PUDR_P31 (0x1u << 31) /**< \brief (PIO_PUDR) Pull Up Disable. */ +/* -------- PIO_PUER : (PIO Offset: 0x0064) Pull-up Enable Register -------- */ +#define PIO_PUER_P0 (0x1u << 0) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P1 (0x1u << 1) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P2 (0x1u << 2) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P3 (0x1u << 3) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P4 (0x1u << 4) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P5 (0x1u << 5) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P6 (0x1u << 6) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P7 (0x1u << 7) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P8 (0x1u << 8) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P9 (0x1u << 9) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P10 (0x1u << 10) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P11 (0x1u << 11) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P12 (0x1u << 12) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P13 (0x1u << 13) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P14 (0x1u << 14) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P15 (0x1u << 15) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P16 (0x1u << 16) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P17 (0x1u << 17) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P18 (0x1u << 18) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P19 (0x1u << 19) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P20 (0x1u << 20) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P21 (0x1u << 21) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P22 (0x1u << 22) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P23 (0x1u << 23) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P24 (0x1u << 24) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P25 (0x1u << 25) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P26 (0x1u << 26) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P27 (0x1u << 27) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P28 (0x1u << 28) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P29 (0x1u << 29) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P30 (0x1u << 30) /**< \brief (PIO_PUER) Pull Up Enable. */ +#define PIO_PUER_P31 (0x1u << 31) /**< \brief (PIO_PUER) Pull Up Enable. */ +/* -------- PIO_PUSR : (PIO Offset: 0x0068) Pad Pull-up Status Register -------- */ +#define PIO_PUSR_P0 (0x1u << 0) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P1 (0x1u << 1) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P2 (0x1u << 2) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P3 (0x1u << 3) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P4 (0x1u << 4) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P5 (0x1u << 5) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P6 (0x1u << 6) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P7 (0x1u << 7) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P8 (0x1u << 8) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P9 (0x1u << 9) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P10 (0x1u << 10) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P11 (0x1u << 11) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P12 (0x1u << 12) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P13 (0x1u << 13) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P14 (0x1u << 14) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P15 (0x1u << 15) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P16 (0x1u << 16) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P17 (0x1u << 17) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P18 (0x1u << 18) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P19 (0x1u << 19) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P20 (0x1u << 20) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P21 (0x1u << 21) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P22 (0x1u << 22) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P23 (0x1u << 23) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P24 (0x1u << 24) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P25 (0x1u << 25) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P26 (0x1u << 26) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P27 (0x1u << 27) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P28 (0x1u << 28) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P29 (0x1u << 29) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P30 (0x1u << 30) /**< \brief (PIO_PUSR) Pull Up Status. */ +#define PIO_PUSR_P31 (0x1u << 31) /**< \brief (PIO_PUSR) Pull Up Status. */ +/* -------- PIO_ABSR : (PIO Offset: 0x0070) Peripheral AB Select Register -------- */ +#define PIO_ABSR_P0 (0x1u << 0) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P1 (0x1u << 1) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P2 (0x1u << 2) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P3 (0x1u << 3) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P4 (0x1u << 4) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P5 (0x1u << 5) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P6 (0x1u << 6) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P7 (0x1u << 7) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P8 (0x1u << 8) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P9 (0x1u << 9) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P10 (0x1u << 10) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P11 (0x1u << 11) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P12 (0x1u << 12) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P13 (0x1u << 13) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P14 (0x1u << 14) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P15 (0x1u << 15) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P16 (0x1u << 16) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P17 (0x1u << 17) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P18 (0x1u << 18) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P19 (0x1u << 19) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P20 (0x1u << 20) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P21 (0x1u << 21) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P22 (0x1u << 22) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P23 (0x1u << 23) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P24 (0x1u << 24) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P25 (0x1u << 25) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P26 (0x1u << 26) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P27 (0x1u << 27) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P28 (0x1u << 28) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P29 (0x1u << 29) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P30 (0x1u << 30) /**< \brief (PIO_ABSR) Peripheral A Select. */ +#define PIO_ABSR_P31 (0x1u << 31) /**< \brief (PIO_ABSR) Peripheral A Select. */ +/* -------- PIO_SCIFSR : (PIO Offset: 0x0080) System Clock Glitch Input Filter Select Register -------- */ +#define PIO_SCIFSR_P0 (0x1u << 0) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P1 (0x1u << 1) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P2 (0x1u << 2) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P3 (0x1u << 3) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P4 (0x1u << 4) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P5 (0x1u << 5) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P6 (0x1u << 6) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P7 (0x1u << 7) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P8 (0x1u << 8) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P9 (0x1u << 9) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P10 (0x1u << 10) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P11 (0x1u << 11) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P12 (0x1u << 12) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P13 (0x1u << 13) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P14 (0x1u << 14) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P15 (0x1u << 15) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P16 (0x1u << 16) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P17 (0x1u << 17) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P18 (0x1u << 18) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P19 (0x1u << 19) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P20 (0x1u << 20) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P21 (0x1u << 21) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P22 (0x1u << 22) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P23 (0x1u << 23) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P24 (0x1u << 24) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P25 (0x1u << 25) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P26 (0x1u << 26) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P27 (0x1u << 27) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P28 (0x1u << 28) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P29 (0x1u << 29) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P30 (0x1u << 30) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +#define PIO_SCIFSR_P31 (0x1u << 31) /**< \brief (PIO_SCIFSR) System Clock Glitch Filtering Select. */ +/* -------- PIO_DIFSR : (PIO Offset: 0x0084) Debouncing Input Filter Select Register -------- */ +#define PIO_DIFSR_P0 (0x1u << 0) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P1 (0x1u << 1) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P2 (0x1u << 2) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P3 (0x1u << 3) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P4 (0x1u << 4) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P5 (0x1u << 5) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P6 (0x1u << 6) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P7 (0x1u << 7) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P8 (0x1u << 8) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P9 (0x1u << 9) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P10 (0x1u << 10) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P11 (0x1u << 11) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P12 (0x1u << 12) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P13 (0x1u << 13) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P14 (0x1u << 14) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P15 (0x1u << 15) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P16 (0x1u << 16) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P17 (0x1u << 17) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P18 (0x1u << 18) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P19 (0x1u << 19) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P20 (0x1u << 20) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P21 (0x1u << 21) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P22 (0x1u << 22) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P23 (0x1u << 23) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P24 (0x1u << 24) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P25 (0x1u << 25) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P26 (0x1u << 26) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P27 (0x1u << 27) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P28 (0x1u << 28) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P29 (0x1u << 29) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P30 (0x1u << 30) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +#define PIO_DIFSR_P31 (0x1u << 31) /**< \brief (PIO_DIFSR) Debouncing Filtering Select. */ +/* -------- PIO_IFDGSR : (PIO Offset: 0x0088) Glitch or Debouncing Input Filter Clock Selection Status Register -------- */ +#define PIO_IFDGSR_P0 (0x1u << 0) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P1 (0x1u << 1) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P2 (0x1u << 2) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P3 (0x1u << 3) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P4 (0x1u << 4) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P5 (0x1u << 5) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P6 (0x1u << 6) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P7 (0x1u << 7) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P8 (0x1u << 8) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P9 (0x1u << 9) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P10 (0x1u << 10) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P11 (0x1u << 11) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P12 (0x1u << 12) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P13 (0x1u << 13) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P14 (0x1u << 14) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P15 (0x1u << 15) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P16 (0x1u << 16) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P17 (0x1u << 17) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P18 (0x1u << 18) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P19 (0x1u << 19) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P20 (0x1u << 20) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P21 (0x1u << 21) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P22 (0x1u << 22) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P23 (0x1u << 23) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P24 (0x1u << 24) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P25 (0x1u << 25) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P26 (0x1u << 26) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P27 (0x1u << 27) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P28 (0x1u << 28) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P29 (0x1u << 29) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P30 (0x1u << 30) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFDGSR_P31 (0x1u << 31) /**< \brief (PIO_IFDGSR) Glitch or Debouncing Filter Selection Status */ +/* -------- PIO_SCDR : (PIO Offset: 0x008C) Slow Clock Divider Debouncing Register -------- */ +#define PIO_SCDR_DIV_Pos 0 +#define PIO_SCDR_DIV_Msk (0x3fffu << PIO_SCDR_DIV_Pos) /**< \brief (PIO_SCDR) Slow Clock Divider Selection for Debouncing */ +#define PIO_SCDR_DIV(value) ((PIO_SCDR_DIV_Msk & ((value) << PIO_SCDR_DIV_Pos))) +/* -------- PIO_OWER : (PIO Offset: 0x00A0) Output Write Enable -------- */ +#define PIO_OWER_P0 (0x1u << 0) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P1 (0x1u << 1) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P2 (0x1u << 2) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P3 (0x1u << 3) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P4 (0x1u << 4) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P5 (0x1u << 5) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P6 (0x1u << 6) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P7 (0x1u << 7) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P8 (0x1u << 8) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P9 (0x1u << 9) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P10 (0x1u << 10) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P11 (0x1u << 11) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P12 (0x1u << 12) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P13 (0x1u << 13) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P14 (0x1u << 14) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P15 (0x1u << 15) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P16 (0x1u << 16) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P17 (0x1u << 17) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P18 (0x1u << 18) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P19 (0x1u << 19) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P20 (0x1u << 20) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P21 (0x1u << 21) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P22 (0x1u << 22) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P23 (0x1u << 23) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P24 (0x1u << 24) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P25 (0x1u << 25) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P26 (0x1u << 26) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P27 (0x1u << 27) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P28 (0x1u << 28) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P29 (0x1u << 29) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P30 (0x1u << 30) /**< \brief (PIO_OWER) Output Write Enable. */ +#define PIO_OWER_P31 (0x1u << 31) /**< \brief (PIO_OWER) Output Write Enable. */ +/* -------- PIO_OWDR : (PIO Offset: 0x00A4) Output Write Disable -------- */ +#define PIO_OWDR_P0 (0x1u << 0) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P1 (0x1u << 1) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P2 (0x1u << 2) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P3 (0x1u << 3) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P4 (0x1u << 4) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P5 (0x1u << 5) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P6 (0x1u << 6) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P7 (0x1u << 7) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P8 (0x1u << 8) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P9 (0x1u << 9) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P10 (0x1u << 10) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P11 (0x1u << 11) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P12 (0x1u << 12) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P13 (0x1u << 13) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P14 (0x1u << 14) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P15 (0x1u << 15) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P16 (0x1u << 16) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P17 (0x1u << 17) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P18 (0x1u << 18) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P19 (0x1u << 19) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P20 (0x1u << 20) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P21 (0x1u << 21) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P22 (0x1u << 22) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P23 (0x1u << 23) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P24 (0x1u << 24) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P25 (0x1u << 25) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P26 (0x1u << 26) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P27 (0x1u << 27) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P28 (0x1u << 28) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P29 (0x1u << 29) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P30 (0x1u << 30) /**< \brief (PIO_OWDR) Output Write Disable. */ +#define PIO_OWDR_P31 (0x1u << 31) /**< \brief (PIO_OWDR) Output Write Disable. */ +/* -------- PIO_OWSR : (PIO Offset: 0x00A8) Output Write Status Register -------- */ +#define PIO_OWSR_P0 (0x1u << 0) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P1 (0x1u << 1) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P2 (0x1u << 2) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P3 (0x1u << 3) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P4 (0x1u << 4) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P5 (0x1u << 5) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P6 (0x1u << 6) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P7 (0x1u << 7) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P8 (0x1u << 8) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P9 (0x1u << 9) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P10 (0x1u << 10) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P11 (0x1u << 11) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P12 (0x1u << 12) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P13 (0x1u << 13) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P14 (0x1u << 14) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P15 (0x1u << 15) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P16 (0x1u << 16) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P17 (0x1u << 17) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P18 (0x1u << 18) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P19 (0x1u << 19) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P20 (0x1u << 20) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P21 (0x1u << 21) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P22 (0x1u << 22) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P23 (0x1u << 23) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P24 (0x1u << 24) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P25 (0x1u << 25) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P26 (0x1u << 26) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P27 (0x1u << 27) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P28 (0x1u << 28) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P29 (0x1u << 29) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P30 (0x1u << 30) /**< \brief (PIO_OWSR) Output Write Status. */ +#define PIO_OWSR_P31 (0x1u << 31) /**< \brief (PIO_OWSR) Output Write Status. */ +/* -------- PIO_AIMER : (PIO Offset: 0x00B0) Additional Interrupt Modes Enable Register -------- */ +#define PIO_AIMER_P0 (0x1u << 0) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P1 (0x1u << 1) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P2 (0x1u << 2) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P3 (0x1u << 3) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P4 (0x1u << 4) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P5 (0x1u << 5) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P6 (0x1u << 6) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P7 (0x1u << 7) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P8 (0x1u << 8) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P9 (0x1u << 9) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P10 (0x1u << 10) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P11 (0x1u << 11) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P12 (0x1u << 12) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P13 (0x1u << 13) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P14 (0x1u << 14) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P15 (0x1u << 15) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P16 (0x1u << 16) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P17 (0x1u << 17) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P18 (0x1u << 18) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P19 (0x1u << 19) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P20 (0x1u << 20) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P21 (0x1u << 21) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P22 (0x1u << 22) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P23 (0x1u << 23) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P24 (0x1u << 24) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P25 (0x1u << 25) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P26 (0x1u << 26) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P27 (0x1u << 27) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P28 (0x1u << 28) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P29 (0x1u << 29) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P30 (0x1u << 30) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +#define PIO_AIMER_P31 (0x1u << 31) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable. */ +/* -------- PIO_AIMDR : (PIO Offset: 0x00B4) Additional Interrupt Modes Disables Register -------- */ +#define PIO_AIMDR_P0 (0x1u << 0) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P1 (0x1u << 1) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P2 (0x1u << 2) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P3 (0x1u << 3) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P4 (0x1u << 4) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P5 (0x1u << 5) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P6 (0x1u << 6) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P7 (0x1u << 7) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P8 (0x1u << 8) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P9 (0x1u << 9) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P10 (0x1u << 10) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P11 (0x1u << 11) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P12 (0x1u << 12) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P13 (0x1u << 13) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P14 (0x1u << 14) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P15 (0x1u << 15) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P16 (0x1u << 16) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P17 (0x1u << 17) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P18 (0x1u << 18) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P19 (0x1u << 19) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P20 (0x1u << 20) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P21 (0x1u << 21) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P22 (0x1u << 22) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P23 (0x1u << 23) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P24 (0x1u << 24) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P25 (0x1u << 25) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P26 (0x1u << 26) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P27 (0x1u << 27) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P28 (0x1u << 28) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P29 (0x1u << 29) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P30 (0x1u << 30) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +#define PIO_AIMDR_P31 (0x1u << 31) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable. */ +/* -------- PIO_AIMMR : (PIO Offset: 0x00B8) Additional Interrupt Modes Mask Register -------- */ +#define PIO_AIMMR_P0 (0x1u << 0) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P1 (0x1u << 1) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P2 (0x1u << 2) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P3 (0x1u << 3) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P4 (0x1u << 4) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P5 (0x1u << 5) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P6 (0x1u << 6) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P7 (0x1u << 7) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P8 (0x1u << 8) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P9 (0x1u << 9) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P10 (0x1u << 10) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P11 (0x1u << 11) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P12 (0x1u << 12) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P13 (0x1u << 13) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P14 (0x1u << 14) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P15 (0x1u << 15) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P16 (0x1u << 16) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P17 (0x1u << 17) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P18 (0x1u << 18) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P19 (0x1u << 19) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P20 (0x1u << 20) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P21 (0x1u << 21) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P22 (0x1u << 22) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P23 (0x1u << 23) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P24 (0x1u << 24) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P25 (0x1u << 25) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P26 (0x1u << 26) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P27 (0x1u << 27) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P28 (0x1u << 28) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P29 (0x1u << 29) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P30 (0x1u << 30) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +#define PIO_AIMMR_P31 (0x1u << 31) /**< \brief (PIO_AIMMR) Peripheral CD Status. */ +/* -------- PIO_ESR : (PIO Offset: 0x00C0) Edge Select Register -------- */ +#define PIO_ESR_P0 (0x1u << 0) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P1 (0x1u << 1) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P2 (0x1u << 2) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P3 (0x1u << 3) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P4 (0x1u << 4) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P5 (0x1u << 5) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P6 (0x1u << 6) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P7 (0x1u << 7) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P8 (0x1u << 8) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P9 (0x1u << 9) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P10 (0x1u << 10) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P11 (0x1u << 11) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P12 (0x1u << 12) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P13 (0x1u << 13) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P14 (0x1u << 14) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P15 (0x1u << 15) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P16 (0x1u << 16) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P17 (0x1u << 17) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P18 (0x1u << 18) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P19 (0x1u << 19) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P20 (0x1u << 20) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P21 (0x1u << 21) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P22 (0x1u << 22) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P23 (0x1u << 23) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P24 (0x1u << 24) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P25 (0x1u << 25) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P26 (0x1u << 26) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P27 (0x1u << 27) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P28 (0x1u << 28) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P29 (0x1u << 29) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P30 (0x1u << 30) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +#define PIO_ESR_P31 (0x1u << 31) /**< \brief (PIO_ESR) Edge Interrupt Selection. */ +/* -------- PIO_LSR : (PIO Offset: 0x00C4) Level Select Register -------- */ +#define PIO_LSR_P0 (0x1u << 0) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P1 (0x1u << 1) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P2 (0x1u << 2) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P3 (0x1u << 3) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P4 (0x1u << 4) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P5 (0x1u << 5) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P6 (0x1u << 6) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P7 (0x1u << 7) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P8 (0x1u << 8) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P9 (0x1u << 9) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P10 (0x1u << 10) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P11 (0x1u << 11) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P12 (0x1u << 12) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P13 (0x1u << 13) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P14 (0x1u << 14) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P15 (0x1u << 15) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P16 (0x1u << 16) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P17 (0x1u << 17) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P18 (0x1u << 18) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P19 (0x1u << 19) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P20 (0x1u << 20) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P21 (0x1u << 21) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P22 (0x1u << 22) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P23 (0x1u << 23) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P24 (0x1u << 24) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P25 (0x1u << 25) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P26 (0x1u << 26) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P27 (0x1u << 27) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P28 (0x1u << 28) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P29 (0x1u << 29) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P30 (0x1u << 30) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +#define PIO_LSR_P31 (0x1u << 31) /**< \brief (PIO_LSR) Level Interrupt Selection. */ +/* -------- PIO_ELSR : (PIO Offset: 0x00C8) Edge/Level Status Register -------- */ +#define PIO_ELSR_P0 (0x1u << 0) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P1 (0x1u << 1) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P2 (0x1u << 2) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P3 (0x1u << 3) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P4 (0x1u << 4) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P5 (0x1u << 5) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P6 (0x1u << 6) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P7 (0x1u << 7) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P8 (0x1u << 8) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P9 (0x1u << 9) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P10 (0x1u << 10) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P11 (0x1u << 11) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P12 (0x1u << 12) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P13 (0x1u << 13) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P14 (0x1u << 14) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P15 (0x1u << 15) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P16 (0x1u << 16) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P17 (0x1u << 17) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P18 (0x1u << 18) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P19 (0x1u << 19) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P20 (0x1u << 20) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P21 (0x1u << 21) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P22 (0x1u << 22) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P23 (0x1u << 23) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P24 (0x1u << 24) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P25 (0x1u << 25) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P26 (0x1u << 26) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P27 (0x1u << 27) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P28 (0x1u << 28) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P29 (0x1u << 29) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P30 (0x1u << 30) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +#define PIO_ELSR_P31 (0x1u << 31) /**< \brief (PIO_ELSR) Edge/Level Interrupt source selection. */ +/* -------- PIO_FELLSR : (PIO Offset: 0x00D0) Falling Edge/Low Level Select Register -------- */ +#define PIO_FELLSR_P0 (0x1u << 0) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P1 (0x1u << 1) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P2 (0x1u << 2) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P3 (0x1u << 3) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P4 (0x1u << 4) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P5 (0x1u << 5) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P6 (0x1u << 6) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P7 (0x1u << 7) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P8 (0x1u << 8) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P9 (0x1u << 9) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P10 (0x1u << 10) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P11 (0x1u << 11) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P12 (0x1u << 12) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P13 (0x1u << 13) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P14 (0x1u << 14) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P15 (0x1u << 15) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P16 (0x1u << 16) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P17 (0x1u << 17) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P18 (0x1u << 18) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P19 (0x1u << 19) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P20 (0x1u << 20) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P21 (0x1u << 21) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P22 (0x1u << 22) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P23 (0x1u << 23) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P24 (0x1u << 24) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P25 (0x1u << 25) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P26 (0x1u << 26) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P27 (0x1u << 27) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P28 (0x1u << 28) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P29 (0x1u << 29) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P30 (0x1u << 30) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +#define PIO_FELLSR_P31 (0x1u << 31) /**< \brief (PIO_FELLSR) Falling Edge/Low Level Interrupt Selection. */ +/* -------- PIO_REHLSR : (PIO Offset: 0x00D4) Rising Edge/ High Level Select Register -------- */ +#define PIO_REHLSR_P0 (0x1u << 0) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P1 (0x1u << 1) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P2 (0x1u << 2) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P3 (0x1u << 3) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P4 (0x1u << 4) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P5 (0x1u << 5) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P6 (0x1u << 6) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P7 (0x1u << 7) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P8 (0x1u << 8) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P9 (0x1u << 9) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P10 (0x1u << 10) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P11 (0x1u << 11) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P12 (0x1u << 12) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P13 (0x1u << 13) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P14 (0x1u << 14) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P15 (0x1u << 15) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P16 (0x1u << 16) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P17 (0x1u << 17) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P18 (0x1u << 18) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P19 (0x1u << 19) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P20 (0x1u << 20) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P21 (0x1u << 21) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P22 (0x1u << 22) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P23 (0x1u << 23) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P24 (0x1u << 24) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P25 (0x1u << 25) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P26 (0x1u << 26) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P27 (0x1u << 27) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P28 (0x1u << 28) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P29 (0x1u << 29) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P30 (0x1u << 30) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +#define PIO_REHLSR_P31 (0x1u << 31) /**< \brief (PIO_REHLSR) Rising Edge /High Level Interrupt Selection. */ +/* -------- PIO_FRLHSR : (PIO Offset: 0x00D8) Fall/Rise - Low/High Status Register -------- */ +#define PIO_FRLHSR_P0 (0x1u << 0) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P1 (0x1u << 1) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P2 (0x1u << 2) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P3 (0x1u << 3) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P4 (0x1u << 4) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P5 (0x1u << 5) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P6 (0x1u << 6) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P7 (0x1u << 7) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P8 (0x1u << 8) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P9 (0x1u << 9) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P10 (0x1u << 10) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P11 (0x1u << 11) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P12 (0x1u << 12) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P13 (0x1u << 13) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P14 (0x1u << 14) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P15 (0x1u << 15) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P16 (0x1u << 16) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P17 (0x1u << 17) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P18 (0x1u << 18) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P19 (0x1u << 19) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P20 (0x1u << 20) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P21 (0x1u << 21) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P22 (0x1u << 22) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P23 (0x1u << 23) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P24 (0x1u << 24) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P25 (0x1u << 25) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P26 (0x1u << 26) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P27 (0x1u << 27) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P28 (0x1u << 28) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P29 (0x1u << 29) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P30 (0x1u << 30) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +#define PIO_FRLHSR_P31 (0x1u << 31) /**< \brief (PIO_FRLHSR) Edge /Level Interrupt Source Selection. */ +/* -------- PIO_LOCKSR : (PIO Offset: 0x00E0) Lock Status -------- */ +#define PIO_LOCKSR_P0 (0x1u << 0) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P1 (0x1u << 1) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P2 (0x1u << 2) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P3 (0x1u << 3) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P4 (0x1u << 4) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P5 (0x1u << 5) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P6 (0x1u << 6) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P7 (0x1u << 7) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P8 (0x1u << 8) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P9 (0x1u << 9) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P10 (0x1u << 10) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P11 (0x1u << 11) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P12 (0x1u << 12) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P13 (0x1u << 13) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P14 (0x1u << 14) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P15 (0x1u << 15) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P16 (0x1u << 16) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P17 (0x1u << 17) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P18 (0x1u << 18) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P19 (0x1u << 19) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P20 (0x1u << 20) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P21 (0x1u << 21) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P22 (0x1u << 22) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P23 (0x1u << 23) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P24 (0x1u << 24) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P25 (0x1u << 25) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P26 (0x1u << 26) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P27 (0x1u << 27) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P28 (0x1u << 28) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P29 (0x1u << 29) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P30 (0x1u << 30) /**< \brief (PIO_LOCKSR) Lock Status. */ +#define PIO_LOCKSR_P31 (0x1u << 31) /**< \brief (PIO_LOCKSR) Lock Status. */ +/* -------- PIO_WPMR : (PIO Offset: 0x00E4) Write Protect Mode Register -------- */ +#define PIO_WPMR_WPEN (0x1u << 0) /**< \brief (PIO_WPMR) Write Protect Enable */ +#define PIO_WPMR_WPKEY_Pos 8 +#define PIO_WPMR_WPKEY_Msk (0xffffffu << PIO_WPMR_WPKEY_Pos) /**< \brief (PIO_WPMR) Write Protect KEY */ +#define PIO_WPMR_WPKEY(value) ((PIO_WPMR_WPKEY_Msk & ((value) << PIO_WPMR_WPKEY_Pos))) +/* -------- PIO_WPSR : (PIO Offset: 0x00E8) Write Protect Status Register -------- */ +#define PIO_WPSR_WPVS (0x1u << 0) /**< \brief (PIO_WPSR) Write Protect Violation Status */ +#define PIO_WPSR_WPVSRC_Pos 8 +#define PIO_WPSR_WPVSRC_Msk (0xffffu << PIO_WPSR_WPVSRC_Pos) /**< \brief (PIO_WPSR) Write Protect Violation Source */ + +/*@}*/ + + +#endif /* _SAM3XA_PIO_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_pmc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_pmc.h new file mode 100644 index 000000000..c33044455 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_pmc.h @@ -0,0 +1,417 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_PMC_COMPONENT_ +#define _SAM3XA_PMC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Power Management Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_PMC Power Management Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Pmc hardware registers */ +typedef struct { + WoReg PMC_SCER; /**< \brief (Pmc Offset: 0x0000) System Clock Enable Register */ + WoReg PMC_SCDR; /**< \brief (Pmc Offset: 0x0004) System Clock Disable Register */ + RoReg PMC_SCSR; /**< \brief (Pmc Offset: 0x0008) System Clock Status Register */ + RoReg Reserved1[1]; + WoReg PMC_PCER0; /**< \brief (Pmc Offset: 0x0010) Peripheral Clock Enable Register 0 */ + WoReg PMC_PCDR0; /**< \brief (Pmc Offset: 0x0014) Peripheral Clock Disable Register 0 */ + RoReg PMC_PCSR0; /**< \brief (Pmc Offset: 0x0018) Peripheral Clock Status Register 0 */ + RwReg CKGR_UCKR; /**< \brief (Pmc Offset: 0x001C) UTMI Clock Register */ + RwReg CKGR_MOR; /**< \brief (Pmc Offset: 0x0020) Main Oscillator Register */ + RoReg CKGR_MCFR; /**< \brief (Pmc Offset: 0x0024) Main Clock Frequency Register */ + RwReg CKGR_PLLAR; /**< \brief (Pmc Offset: 0x0028) PLLA Register */ + RoReg Reserved2[1]; + RwReg PMC_MCKR; /**< \brief (Pmc Offset: 0x0030) Master Clock Register */ + RoReg Reserved3[1]; + RwReg PMC_USB; /**< \brief (Pmc Offset: 0x0038) USB Clock Register */ + RoReg Reserved4[1]; + RwReg PMC_PCK[3]; /**< \brief (Pmc Offset: 0x0040) Programmable Clock 0 Register */ + RoReg Reserved5[5]; + WoReg PMC_IER; /**< \brief (Pmc Offset: 0x0060) Interrupt Enable Register */ + WoReg PMC_IDR; /**< \brief (Pmc Offset: 0x0064) Interrupt Disable Register */ + RoReg PMC_SR; /**< \brief (Pmc Offset: 0x0068) Status Register */ + RoReg PMC_IMR; /**< \brief (Pmc Offset: 0x006C) Interrupt Mask Register */ + RwReg PMC_FSMR; /**< \brief (Pmc Offset: 0x0070) Fast Startup Mode Register */ + RwReg PMC_FSPR; /**< \brief (Pmc Offset: 0x0074) Fast Startup Polarity Register */ + WoReg PMC_FOCR; /**< \brief (Pmc Offset: 0x0078) Fault Output Clear Register */ + RoReg Reserved6[26]; + RwReg PMC_WPMR; /**< \brief (Pmc Offset: 0x00E4) Write Protect Mode Register */ + RoReg PMC_WPSR; /**< \brief (Pmc Offset: 0x00E8) Write Protect Status Register */ + RoReg Reserved7[5]; + WoReg PMC_PCER1; /**< \brief (Pmc Offset: 0x0100) Peripheral Clock Enable Register 1 */ + WoReg PMC_PCDR1; /**< \brief (Pmc Offset: 0x0104) Peripheral Clock Disable Register 1 */ + RoReg PMC_PCSR1; /**< \brief (Pmc Offset: 0x0108) Peripheral Clock Status Register 1 */ + RwReg PMC_PCR; /**< \brief (Pmc Offset: 0x010C) Peripheral Control Register */ +} Pmc; +#endif /* __ASSEMBLY__ */ +/* -------- PMC_SCER : (PMC Offset: 0x0000) System Clock Enable Register -------- */ +#define PMC_SCER_UOTGCLK (0x1u << 5) /**< \brief (PMC_SCER) Enable USB OTG Clock (48 MHz, USB_48M) for UTMI */ +#define PMC_SCER_PCK0 (0x1u << 8) /**< \brief (PMC_SCER) Programmable Clock 0 Output Enable */ +#define PMC_SCER_PCK1 (0x1u << 9) /**< \brief (PMC_SCER) Programmable Clock 1 Output Enable */ +#define PMC_SCER_PCK2 (0x1u << 10) /**< \brief (PMC_SCER) Programmable Clock 2 Output Enable */ +/* -------- PMC_SCDR : (PMC Offset: 0x0004) System Clock Disable Register -------- */ +#define PMC_SCDR_UOTGCLK (0x1u << 5) /**< \brief (PMC_SCDR) Disable USB OTG Clock (48 MHz, USB_48M) for UTMI */ +#define PMC_SCDR_PCK0 (0x1u << 8) /**< \brief (PMC_SCDR) Programmable Clock 0 Output Disable */ +#define PMC_SCDR_PCK1 (0x1u << 9) /**< \brief (PMC_SCDR) Programmable Clock 1 Output Disable */ +#define PMC_SCDR_PCK2 (0x1u << 10) /**< \brief (PMC_SCDR) Programmable Clock 2 Output Disable */ +/* -------- PMC_SCSR : (PMC Offset: 0x0008) System Clock Status Register -------- */ +#define PMC_SCSR_UOTGCLK (0x1u << 5) /**< \brief (PMC_SCSR) USB OTG Clock (48 MHz, USB_48M) Clock Status */ +#define PMC_SCSR_PCK0 (0x1u << 8) /**< \brief (PMC_SCSR) Programmable Clock 0 Output Status */ +#define PMC_SCSR_PCK1 (0x1u << 9) /**< \brief (PMC_SCSR) Programmable Clock 1 Output Status */ +#define PMC_SCSR_PCK2 (0x1u << 10) /**< \brief (PMC_SCSR) Programmable Clock 2 Output Status */ +/* -------- PMC_PCER0 : (PMC Offset: 0x0010) Peripheral Clock Enable Register 0 -------- */ +#define PMC_PCER0_PID2 (0x1u << 2) /**< \brief (PMC_PCER0) Peripheral Clock 2 Enable */ +#define PMC_PCER0_PID3 (0x1u << 3) /**< \brief (PMC_PCER0) Peripheral Clock 3 Enable */ +#define PMC_PCER0_PID4 (0x1u << 4) /**< \brief (PMC_PCER0) Peripheral Clock 4 Enable */ +#define PMC_PCER0_PID5 (0x1u << 5) /**< \brief (PMC_PCER0) Peripheral Clock 5 Enable */ +#define PMC_PCER0_PID6 (0x1u << 6) /**< \brief (PMC_PCER0) Peripheral Clock 6 Enable */ +#define PMC_PCER0_PID7 (0x1u << 7) /**< \brief (PMC_PCER0) Peripheral Clock 7 Enable */ +#define PMC_PCER0_PID8 (0x1u << 8) /**< \brief (PMC_PCER0) Peripheral Clock 8 Enable */ +#define PMC_PCER0_PID9 (0x1u << 9) /**< \brief (PMC_PCER0) Peripheral Clock 9 Enable */ +#define PMC_PCER0_PID10 (0x1u << 10) /**< \brief (PMC_PCER0) Peripheral Clock 10 Enable */ +#define PMC_PCER0_PID11 (0x1u << 11) /**< \brief (PMC_PCER0) Peripheral Clock 11 Enable */ +#define PMC_PCER0_PID12 (0x1u << 12) /**< \brief (PMC_PCER0) Peripheral Clock 12 Enable */ +#define PMC_PCER0_PID13 (0x1u << 13) /**< \brief (PMC_PCER0) Peripheral Clock 13 Enable */ +#define PMC_PCER0_PID14 (0x1u << 14) /**< \brief (PMC_PCER0) Peripheral Clock 14 Enable */ +#define PMC_PCER0_PID15 (0x1u << 15) /**< \brief (PMC_PCER0) Peripheral Clock 15 Enable */ +#define PMC_PCER0_PID16 (0x1u << 16) /**< \brief (PMC_PCER0) Peripheral Clock 16 Enable */ +#define PMC_PCER0_PID17 (0x1u << 17) /**< \brief (PMC_PCER0) Peripheral Clock 17 Enable */ +#define PMC_PCER0_PID18 (0x1u << 18) /**< \brief (PMC_PCER0) Peripheral Clock 18 Enable */ +#define PMC_PCER0_PID19 (0x1u << 19) /**< \brief (PMC_PCER0) Peripheral Clock 19 Enable */ +#define PMC_PCER0_PID20 (0x1u << 20) /**< \brief (PMC_PCER0) Peripheral Clock 20 Enable */ +#define PMC_PCER0_PID21 (0x1u << 21) /**< \brief (PMC_PCER0) Peripheral Clock 21 Enable */ +#define PMC_PCER0_PID22 (0x1u << 22) /**< \brief (PMC_PCER0) Peripheral Clock 22 Enable */ +#define PMC_PCER0_PID23 (0x1u << 23) /**< \brief (PMC_PCER0) Peripheral Clock 23 Enable */ +#define PMC_PCER0_PID24 (0x1u << 24) /**< \brief (PMC_PCER0) Peripheral Clock 24 Enable */ +#define PMC_PCER0_PID25 (0x1u << 25) /**< \brief (PMC_PCER0) Peripheral Clock 25 Enable */ +#define PMC_PCER0_PID26 (0x1u << 26) /**< \brief (PMC_PCER0) Peripheral Clock 26 Enable */ +#define PMC_PCER0_PID27 (0x1u << 27) /**< \brief (PMC_PCER0) Peripheral Clock 27 Enable */ +#define PMC_PCER0_PID28 (0x1u << 28) /**< \brief (PMC_PCER0) Peripheral Clock 28 Enable */ +#define PMC_PCER0_PID29 (0x1u << 29) /**< \brief (PMC_PCER0) Peripheral Clock 29 Enable */ +#define PMC_PCER0_PID30 (0x1u << 30) /**< \brief (PMC_PCER0) Peripheral Clock 30 Enable */ +#define PMC_PCER0_PID31 (0x1u << 31) /**< \brief (PMC_PCER0) Peripheral Clock 31 Enable */ +/* -------- PMC_PCDR0 : (PMC Offset: 0x0014) Peripheral Clock Disable Register 0 -------- */ +#define PMC_PCDR0_PID2 (0x1u << 2) /**< \brief (PMC_PCDR0) Peripheral Clock 2 Disable */ +#define PMC_PCDR0_PID3 (0x1u << 3) /**< \brief (PMC_PCDR0) Peripheral Clock 3 Disable */ +#define PMC_PCDR0_PID4 (0x1u << 4) /**< \brief (PMC_PCDR0) Peripheral Clock 4 Disable */ +#define PMC_PCDR0_PID5 (0x1u << 5) /**< \brief (PMC_PCDR0) Peripheral Clock 5 Disable */ +#define PMC_PCDR0_PID6 (0x1u << 6) /**< \brief (PMC_PCDR0) Peripheral Clock 6 Disable */ +#define PMC_PCDR0_PID7 (0x1u << 7) /**< \brief (PMC_PCDR0) Peripheral Clock 7 Disable */ +#define PMC_PCDR0_PID8 (0x1u << 8) /**< \brief (PMC_PCDR0) Peripheral Clock 8 Disable */ +#define PMC_PCDR0_PID9 (0x1u << 9) /**< \brief (PMC_PCDR0) Peripheral Clock 9 Disable */ +#define PMC_PCDR0_PID10 (0x1u << 10) /**< \brief (PMC_PCDR0) Peripheral Clock 10 Disable */ +#define PMC_PCDR0_PID11 (0x1u << 11) /**< \brief (PMC_PCDR0) Peripheral Clock 11 Disable */ +#define PMC_PCDR0_PID12 (0x1u << 12) /**< \brief (PMC_PCDR0) Peripheral Clock 12 Disable */ +#define PMC_PCDR0_PID13 (0x1u << 13) /**< \brief (PMC_PCDR0) Peripheral Clock 13 Disable */ +#define PMC_PCDR0_PID14 (0x1u << 14) /**< \brief (PMC_PCDR0) Peripheral Clock 14 Disable */ +#define PMC_PCDR0_PID15 (0x1u << 15) /**< \brief (PMC_PCDR0) Peripheral Clock 15 Disable */ +#define PMC_PCDR0_PID16 (0x1u << 16) /**< \brief (PMC_PCDR0) Peripheral Clock 16 Disable */ +#define PMC_PCDR0_PID17 (0x1u << 17) /**< \brief (PMC_PCDR0) Peripheral Clock 17 Disable */ +#define PMC_PCDR0_PID18 (0x1u << 18) /**< \brief (PMC_PCDR0) Peripheral Clock 18 Disable */ +#define PMC_PCDR0_PID19 (0x1u << 19) /**< \brief (PMC_PCDR0) Peripheral Clock 19 Disable */ +#define PMC_PCDR0_PID20 (0x1u << 20) /**< \brief (PMC_PCDR0) Peripheral Clock 20 Disable */ +#define PMC_PCDR0_PID21 (0x1u << 21) /**< \brief (PMC_PCDR0) Peripheral Clock 21 Disable */ +#define PMC_PCDR0_PID22 (0x1u << 22) /**< \brief (PMC_PCDR0) Peripheral Clock 22 Disable */ +#define PMC_PCDR0_PID23 (0x1u << 23) /**< \brief (PMC_PCDR0) Peripheral Clock 23 Disable */ +#define PMC_PCDR0_PID24 (0x1u << 24) /**< \brief (PMC_PCDR0) Peripheral Clock 24 Disable */ +#define PMC_PCDR0_PID25 (0x1u << 25) /**< \brief (PMC_PCDR0) Peripheral Clock 25 Disable */ +#define PMC_PCDR0_PID26 (0x1u << 26) /**< \brief (PMC_PCDR0) Peripheral Clock 26 Disable */ +#define PMC_PCDR0_PID27 (0x1u << 27) /**< \brief (PMC_PCDR0) Peripheral Clock 27 Disable */ +#define PMC_PCDR0_PID28 (0x1u << 28) /**< \brief (PMC_PCDR0) Peripheral Clock 28 Disable */ +#define PMC_PCDR0_PID29 (0x1u << 29) /**< \brief (PMC_PCDR0) Peripheral Clock 29 Disable */ +#define PMC_PCDR0_PID30 (0x1u << 30) /**< \brief (PMC_PCDR0) Peripheral Clock 30 Disable */ +#define PMC_PCDR0_PID31 (0x1u << 31) /**< \brief (PMC_PCDR0) Peripheral Clock 31 Disable */ +/* -------- PMC_PCSR0 : (PMC Offset: 0x0018) Peripheral Clock Status Register 0 -------- */ +#define PMC_PCSR0_PID2 (0x1u << 2) /**< \brief (PMC_PCSR0) Peripheral Clock 2 Status */ +#define PMC_PCSR0_PID3 (0x1u << 3) /**< \brief (PMC_PCSR0) Peripheral Clock 3 Status */ +#define PMC_PCSR0_PID4 (0x1u << 4) /**< \brief (PMC_PCSR0) Peripheral Clock 4 Status */ +#define PMC_PCSR0_PID5 (0x1u << 5) /**< \brief (PMC_PCSR0) Peripheral Clock 5 Status */ +#define PMC_PCSR0_PID6 (0x1u << 6) /**< \brief (PMC_PCSR0) Peripheral Clock 6 Status */ +#define PMC_PCSR0_PID7 (0x1u << 7) /**< \brief (PMC_PCSR0) Peripheral Clock 7 Status */ +#define PMC_PCSR0_PID8 (0x1u << 8) /**< \brief (PMC_PCSR0) Peripheral Clock 8 Status */ +#define PMC_PCSR0_PID9 (0x1u << 9) /**< \brief (PMC_PCSR0) Peripheral Clock 9 Status */ +#define PMC_PCSR0_PID10 (0x1u << 10) /**< \brief (PMC_PCSR0) Peripheral Clock 10 Status */ +#define PMC_PCSR0_PID11 (0x1u << 11) /**< \brief (PMC_PCSR0) Peripheral Clock 11 Status */ +#define PMC_PCSR0_PID12 (0x1u << 12) /**< \brief (PMC_PCSR0) Peripheral Clock 12 Status */ +#define PMC_PCSR0_PID13 (0x1u << 13) /**< \brief (PMC_PCSR0) Peripheral Clock 13 Status */ +#define PMC_PCSR0_PID14 (0x1u << 14) /**< \brief (PMC_PCSR0) Peripheral Clock 14 Status */ +#define PMC_PCSR0_PID15 (0x1u << 15) /**< \brief (PMC_PCSR0) Peripheral Clock 15 Status */ +#define PMC_PCSR0_PID16 (0x1u << 16) /**< \brief (PMC_PCSR0) Peripheral Clock 16 Status */ +#define PMC_PCSR0_PID17 (0x1u << 17) /**< \brief (PMC_PCSR0) Peripheral Clock 17 Status */ +#define PMC_PCSR0_PID18 (0x1u << 18) /**< \brief (PMC_PCSR0) Peripheral Clock 18 Status */ +#define PMC_PCSR0_PID19 (0x1u << 19) /**< \brief (PMC_PCSR0) Peripheral Clock 19 Status */ +#define PMC_PCSR0_PID20 (0x1u << 20) /**< \brief (PMC_PCSR0) Peripheral Clock 20 Status */ +#define PMC_PCSR0_PID21 (0x1u << 21) /**< \brief (PMC_PCSR0) Peripheral Clock 21 Status */ +#define PMC_PCSR0_PID22 (0x1u << 22) /**< \brief (PMC_PCSR0) Peripheral Clock 22 Status */ +#define PMC_PCSR0_PID23 (0x1u << 23) /**< \brief (PMC_PCSR0) Peripheral Clock 23 Status */ +#define PMC_PCSR0_PID24 (0x1u << 24) /**< \brief (PMC_PCSR0) Peripheral Clock 24 Status */ +#define PMC_PCSR0_PID25 (0x1u << 25) /**< \brief (PMC_PCSR0) Peripheral Clock 25 Status */ +#define PMC_PCSR0_PID26 (0x1u << 26) /**< \brief (PMC_PCSR0) Peripheral Clock 26 Status */ +#define PMC_PCSR0_PID27 (0x1u << 27) /**< \brief (PMC_PCSR0) Peripheral Clock 27 Status */ +#define PMC_PCSR0_PID28 (0x1u << 28) /**< \brief (PMC_PCSR0) Peripheral Clock 28 Status */ +#define PMC_PCSR0_PID29 (0x1u << 29) /**< \brief (PMC_PCSR0) Peripheral Clock 29 Status */ +#define PMC_PCSR0_PID30 (0x1u << 30) /**< \brief (PMC_PCSR0) Peripheral Clock 30 Status */ +#define PMC_PCSR0_PID31 (0x1u << 31) /**< \brief (PMC_PCSR0) Peripheral Clock 31 Status */ +/* -------- CKGR_UCKR : (PMC Offset: 0x001C) UTMI Clock Register -------- */ +#define CKGR_UCKR_UPLLEN (0x1u << 16) /**< \brief (CKGR_UCKR) UTMI PLL Enable */ +#define CKGR_UCKR_UPLLCOUNT_Pos 20 +#define CKGR_UCKR_UPLLCOUNT_Msk (0xfu << CKGR_UCKR_UPLLCOUNT_Pos) /**< \brief (CKGR_UCKR) UTMI PLL Start-up Time */ +#define CKGR_UCKR_UPLLCOUNT(value) ((CKGR_UCKR_UPLLCOUNT_Msk & ((value) << CKGR_UCKR_UPLLCOUNT_Pos))) +/* -------- CKGR_MOR : (PMC Offset: 0x0020) Main Oscillator Register -------- */ +#define CKGR_MOR_MOSCXTEN (0x1u << 0) /**< \brief (CKGR_MOR) Main Crystal Oscillator Enable */ +#define CKGR_MOR_MOSCXTBY (0x1u << 1) /**< \brief (CKGR_MOR) Main Crystal Oscillator Bypass */ +#define CKGR_MOR_MOSCRCEN (0x1u << 3) /**< \brief (CKGR_MOR) Main On-Chip RC Oscillator Enable */ +#define CKGR_MOR_MOSCRCF_Pos 4 +#define CKGR_MOR_MOSCRCF_Msk (0x7u << CKGR_MOR_MOSCRCF_Pos) /**< \brief (CKGR_MOR) Main On-Chip RC Oscillator Frequency Selection */ +#define CKGR_MOR_MOSCRCF_4_MHz (0x0u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 4 MHz (default) */ +#define CKGR_MOR_MOSCRCF_8_MHz (0x1u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 8 MHz */ +#define CKGR_MOR_MOSCRCF_12_MHz (0x2u << 4) /**< \brief (CKGR_MOR) The Fast RC Oscillator Frequency is at 12 MHz */ +#define CKGR_MOR_MOSCXTST_Pos 8 +#define CKGR_MOR_MOSCXTST_Msk (0xffu << CKGR_MOR_MOSCXTST_Pos) /**< \brief (CKGR_MOR) Main Crystal Oscillator Start-up Time */ +#define CKGR_MOR_MOSCXTST(value) ((CKGR_MOR_MOSCXTST_Msk & ((value) << CKGR_MOR_MOSCXTST_Pos))) +#define CKGR_MOR_KEY_Pos 16 +#define CKGR_MOR_KEY_Msk (0xffu << CKGR_MOR_KEY_Pos) /**< \brief (CKGR_MOR) Password */ +#define CKGR_MOR_KEY(value) ((CKGR_MOR_KEY_Msk & ((value) << CKGR_MOR_KEY_Pos))) +#define CKGR_MOR_MOSCSEL (0x1u << 24) /**< \brief (CKGR_MOR) Main Oscillator Selection */ +#define CKGR_MOR_CFDEN (0x1u << 25) /**< \brief (CKGR_MOR) Clock Failure Detector Enable */ +/* -------- CKGR_MCFR : (PMC Offset: 0x0024) Main Clock Frequency Register -------- */ +#define CKGR_MCFR_MAINF_Pos 0 +#define CKGR_MCFR_MAINF_Msk (0xffffu << CKGR_MCFR_MAINF_Pos) /**< \brief (CKGR_MCFR) Main Clock Frequency */ +#define CKGR_MCFR_MAINFRDY (0x1u << 16) /**< \brief (CKGR_MCFR) Main Clock Ready */ +/* -------- CKGR_PLLAR : (PMC Offset: 0x0028) PLLA Register -------- */ +#define CKGR_PLLAR_DIVA_Pos 0 +#define CKGR_PLLAR_DIVA_Msk (0xffu << CKGR_PLLAR_DIVA_Pos) /**< \brief (CKGR_PLLAR) Divider */ +#define CKGR_PLLAR_DIVA(value) ((CKGR_PLLAR_DIVA_Msk & ((value) << CKGR_PLLAR_DIVA_Pos))) +#define CKGR_PLLAR_PLLACOUNT_Pos 8 +#define CKGR_PLLAR_PLLACOUNT_Msk (0x3fu << CKGR_PLLAR_PLLACOUNT_Pos) /**< \brief (CKGR_PLLAR) PLLA Counter */ +#define CKGR_PLLAR_PLLACOUNT(value) ((CKGR_PLLAR_PLLACOUNT_Msk & ((value) << CKGR_PLLAR_PLLACOUNT_Pos))) +#define CKGR_PLLAR_MULA_Pos 16 +#define CKGR_PLLAR_MULA_Msk (0x7ffu << CKGR_PLLAR_MULA_Pos) /**< \brief (CKGR_PLLAR) PLLA Multiplier */ +#define CKGR_PLLAR_MULA(value) ((CKGR_PLLAR_MULA_Msk & ((value) << CKGR_PLLAR_MULA_Pos))) +#define CKGR_PLLAR_ONE (0x1u << 29) /**< \brief (CKGR_PLLAR) Must Be Set to 1 */ +/* -------- PMC_MCKR : (PMC Offset: 0x0030) Master Clock Register -------- */ +#define PMC_MCKR_CSS_Pos 0 +#define PMC_MCKR_CSS_Msk (0x3u << PMC_MCKR_CSS_Pos) /**< \brief (PMC_MCKR) Master Clock Source Selection */ +#define PMC_MCKR_CSS_SLOW_CLK (0x0u << 0) /**< \brief (PMC_MCKR) Slow Clock is selected */ +#define PMC_MCKR_CSS_MAIN_CLK (0x1u << 0) /**< \brief (PMC_MCKR) Main Clock is selected */ +#define PMC_MCKR_CSS_PLLA_CLK (0x2u << 0) /**< \brief (PMC_MCKR) PLLA Clock is selected */ +#define PMC_MCKR_CSS_UPLL_CLK (0x3u << 0) /**< \brief (PMC_MCKR) UPLL Clock is selected */ +#define PMC_MCKR_PRES_Pos 4 +#define PMC_MCKR_PRES_Msk (0x7u << PMC_MCKR_PRES_Pos) /**< \brief (PMC_MCKR) Processor Clock Prescaler */ +#define PMC_MCKR_PRES_CLK_1 (0x0u << 4) /**< \brief (PMC_MCKR) Selected clock */ +#define PMC_MCKR_PRES_CLK_2 (0x1u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 2 */ +#define PMC_MCKR_PRES_CLK_4 (0x2u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 4 */ +#define PMC_MCKR_PRES_CLK_8 (0x3u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 8 */ +#define PMC_MCKR_PRES_CLK_16 (0x4u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 16 */ +#define PMC_MCKR_PRES_CLK_32 (0x5u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 32 */ +#define PMC_MCKR_PRES_CLK_64 (0x6u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 64 */ +#define PMC_MCKR_PRES_CLK_3 (0x7u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 3 */ +#define PMC_MCKR_PLLADIV2 (0x1u << 12) /**< \brief (PMC_MCKR) PLLA Divisor by 2 */ +#define PMC_MCKR_UPLLDIV2 (0x1u << 13) /**< \brief (PMC_MCKR) */ +/* -------- PMC_USB : (PMC Offset: 0x0038) USB Clock Register -------- */ +#define PMC_USB_USBS (0x1u << 0) /**< \brief (PMC_USB) USB Input Clock Selection */ +#define PMC_USB_USBDIV_Pos 8 +#define PMC_USB_USBDIV_Msk (0xfu << PMC_USB_USBDIV_Pos) /**< \brief (PMC_USB) Divider for USB Clock. */ +#define PMC_USB_USBDIV(value) ((PMC_USB_USBDIV_Msk & ((value) << PMC_USB_USBDIV_Pos))) +/* -------- PMC_PCK[3] : (PMC Offset: 0x0040) Programmable Clock 0 Register -------- */ +#define PMC_PCK_CSS_Pos 0 +#define PMC_PCK_CSS_Msk (0x7u << PMC_PCK_CSS_Pos) /**< \brief (PMC_PCK[3]) Master Clock Source Selection */ +#define PMC_PCK_CSS_SLOW_CLK (0x0u << 0) /**< \brief (PMC_PCK[3]) Slow Clock is selected */ +#define PMC_PCK_CSS_MAIN_CLK (0x1u << 0) /**< \brief (PMC_PCK[3]) Main Clock is selected */ +#define PMC_PCK_CSS_PLLA_CLK (0x2u << 0) /**< \brief (PMC_PCK[3]) PLLA Clock is selected */ +#define PMC_PCK_CSS_UPLL_CLK (0x3u << 0) /**< \brief (PMC_PCK[3]) UPLL Clock is selected */ +#define PMC_PCK_CSS_MCK (0x4u << 0) /**< \brief (PMC_PCK[3]) Master Clock is selected */ +#define PMC_PCK_PRES_Pos 4 +#define PMC_PCK_PRES_Msk (0x7u << PMC_PCK_PRES_Pos) /**< \brief (PMC_PCK[3]) Programmable Clock Prescaler */ +#define PMC_PCK_PRES(value) ((PMC_PCK_PRES_Msk & ((value) << PMC_PCK_PRES_Pos))) +#define PMC_PCK_PRES_CLK_1 (0x0u << 4) /**< \brief (PMC_PCK[3]) Selected clock */ +#define PMC_PCK_PRES_CLK_2 (0x1u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 2 */ +#define PMC_PCK_PRES_CLK_4 (0x2u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 4 */ +#define PMC_PCK_PRES_CLK_8 (0x3u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 8 */ +#define PMC_PCK_PRES_CLK_16 (0x4u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 16 */ +#define PMC_PCK_PRES_CLK_32 (0x5u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 32 */ +#define PMC_PCK_PRES_CLK_64 (0x6u << 4) /**< \brief (PMC_PCK[3]) Selected clock divided by 64 */ +/* -------- PMC_IER : (PMC Offset: 0x0060) Interrupt Enable Register -------- */ +#define PMC_IER_MOSCXTS (0x1u << 0) /**< \brief (PMC_IER) Main Crystal Oscillator Status Interrupt Enable */ +#define PMC_IER_LOCKA (0x1u << 1) /**< \brief (PMC_IER) PLLA Lock Interrupt Enable */ +#define PMC_IER_MCKRDY (0x1u << 3) /**< \brief (PMC_IER) Master Clock Ready Interrupt Enable */ +#define PMC_IER_LOCKU (0x1u << 6) /**< \brief (PMC_IER) UTMI PLL Lock Interrupt Enable */ +#define PMC_IER_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IER) Programmable Clock Ready 0 Interrupt Enable */ +#define PMC_IER_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IER) Programmable Clock Ready 1 Interrupt Enable */ +#define PMC_IER_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IER) Programmable Clock Ready 2 Interrupt Enable */ +#define PMC_IER_MOSCSELS (0x1u << 16) /**< \brief (PMC_IER) Main Oscillator Selection Status Interrupt Enable */ +#define PMC_IER_MOSCRCS (0x1u << 17) /**< \brief (PMC_IER) Main On-Chip RC Status Interrupt Enable */ +#define PMC_IER_CFDEV (0x1u << 18) /**< \brief (PMC_IER) Clock Failure Detector Event Interrupt Enable */ +/* -------- PMC_IDR : (PMC Offset: 0x0064) Interrupt Disable Register -------- */ +#define PMC_IDR_MOSCXTS (0x1u << 0) /**< \brief (PMC_IDR) Main Crystal Oscillator Status Interrupt Disable */ +#define PMC_IDR_LOCKA (0x1u << 1) /**< \brief (PMC_IDR) PLLA Lock Interrupt Disable */ +#define PMC_IDR_MCKRDY (0x1u << 3) /**< \brief (PMC_IDR) Master Clock Ready Interrupt Disable */ +#define PMC_IDR_LOCKU (0x1u << 6) /**< \brief (PMC_IDR) UTMI PLL Lock Interrupt Disable */ +#define PMC_IDR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IDR) Programmable Clock Ready 0 Interrupt Disable */ +#define PMC_IDR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IDR) Programmable Clock Ready 1 Interrupt Disable */ +#define PMC_IDR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IDR) Programmable Clock Ready 2 Interrupt Disable */ +#define PMC_IDR_MOSCSELS (0x1u << 16) /**< \brief (PMC_IDR) Main Oscillator Selection Status Interrupt Disable */ +#define PMC_IDR_MOSCRCS (0x1u << 17) /**< \brief (PMC_IDR) Main On-Chip RC Status Interrupt Disable */ +#define PMC_IDR_CFDEV (0x1u << 18) /**< \brief (PMC_IDR) Clock Failure Detector Event Interrupt Disable */ +/* -------- PMC_SR : (PMC Offset: 0x0068) Status Register -------- */ +#define PMC_SR_MOSCXTS (0x1u << 0) /**< \brief (PMC_SR) Main XTAL Oscillator Status */ +#define PMC_SR_LOCKA (0x1u << 1) /**< \brief (PMC_SR) PLLA Lock Status */ +#define PMC_SR_MCKRDY (0x1u << 3) /**< \brief (PMC_SR) Master Clock Status */ +#define PMC_SR_LOCKU (0x1u << 6) /**< \brief (PMC_SR) UTMI PLL Lock Status */ +#define PMC_SR_OSCSELS (0x1u << 7) /**< \brief (PMC_SR) Slow Clock Oscillator Selection */ +#define PMC_SR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_MOSCSELS (0x1u << 16) /**< \brief (PMC_SR) Main Oscillator Selection Status */ +#define PMC_SR_MOSCRCS (0x1u << 17) /**< \brief (PMC_SR) Main On-Chip RC Oscillator Status */ +#define PMC_SR_CFDEV (0x1u << 18) /**< \brief (PMC_SR) Clock Failure Detector Event */ +#define PMC_SR_CFDS (0x1u << 19) /**< \brief (PMC_SR) Clock Failure Detector Status */ +#define PMC_SR_FOS (0x1u << 20) /**< \brief (PMC_SR) Clock Failure Detector Fault Output Status */ +/* -------- PMC_IMR : (PMC Offset: 0x006C) Interrupt Mask Register -------- */ +#define PMC_IMR_MOSCXTS (0x1u << 0) /**< \brief (PMC_IMR) Main Crystal Oscillator Status Interrupt Mask */ +#define PMC_IMR_LOCKA (0x1u << 1) /**< \brief (PMC_IMR) PLLA Lock Interrupt Mask */ +#define PMC_IMR_MCKRDY (0x1u << 3) /**< \brief (PMC_IMR) Master Clock Ready Interrupt Mask */ +#define PMC_IMR_LOCKU (0x1u << 6) /**< \brief (PMC_IMR) UTMI PLL Lock Interrupt Mask */ +#define PMC_IMR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IMR) Programmable Clock Ready 0 Interrupt Mask */ +#define PMC_IMR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IMR) Programmable Clock Ready 1 Interrupt Mask */ +#define PMC_IMR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IMR) Programmable Clock Ready 2 Interrupt Mask */ +#define PMC_IMR_MOSCSELS (0x1u << 16) /**< \brief (PMC_IMR) Main Oscillator Selection Status Interrupt Mask */ +#define PMC_IMR_MOSCRCS (0x1u << 17) /**< \brief (PMC_IMR) Main On-Chip RC Status Interrupt Mask */ +#define PMC_IMR_CFDEV (0x1u << 18) /**< \brief (PMC_IMR) Clock Failure Detector Event Interrupt Mask */ +/* -------- PMC_FSMR : (PMC Offset: 0x0070) Fast Startup Mode Register -------- */ +#define PMC_FSMR_FSTT0 (0x1u << 0) /**< \brief (PMC_FSMR) Fast Startup Input Enable 0 */ +#define PMC_FSMR_FSTT1 (0x1u << 1) /**< \brief (PMC_FSMR) Fast Startup Input Enable 1 */ +#define PMC_FSMR_FSTT2 (0x1u << 2) /**< \brief (PMC_FSMR) Fast Startup Input Enable 2 */ +#define PMC_FSMR_FSTT3 (0x1u << 3) /**< \brief (PMC_FSMR) Fast Startup Input Enable 3 */ +#define PMC_FSMR_FSTT4 (0x1u << 4) /**< \brief (PMC_FSMR) Fast Startup Input Enable 4 */ +#define PMC_FSMR_FSTT5 (0x1u << 5) /**< \brief (PMC_FSMR) Fast Startup Input Enable 5 */ +#define PMC_FSMR_FSTT6 (0x1u << 6) /**< \brief (PMC_FSMR) Fast Startup Input Enable 6 */ +#define PMC_FSMR_FSTT7 (0x1u << 7) /**< \brief (PMC_FSMR) Fast Startup Input Enable 7 */ +#define PMC_FSMR_FSTT8 (0x1u << 8) /**< \brief (PMC_FSMR) Fast Startup Input Enable 8 */ +#define PMC_FSMR_FSTT9 (0x1u << 9) /**< \brief (PMC_FSMR) Fast Startup Input Enable 9 */ +#define PMC_FSMR_FSTT10 (0x1u << 10) /**< \brief (PMC_FSMR) Fast Startup Input Enable 10 */ +#define PMC_FSMR_FSTT11 (0x1u << 11) /**< \brief (PMC_FSMR) Fast Startup Input Enable 11 */ +#define PMC_FSMR_FSTT12 (0x1u << 12) /**< \brief (PMC_FSMR) Fast Startup Input Enable 12 */ +#define PMC_FSMR_FSTT13 (0x1u << 13) /**< \brief (PMC_FSMR) Fast Startup Input Enable 13 */ +#define PMC_FSMR_FSTT14 (0x1u << 14) /**< \brief (PMC_FSMR) Fast Startup Input Enable 14 */ +#define PMC_FSMR_FSTT15 (0x1u << 15) /**< \brief (PMC_FSMR) Fast Startup Input Enable 15 */ +#define PMC_FSMR_RTTAL (0x1u << 16) /**< \brief (PMC_FSMR) RTT Alarm Enable */ +#define PMC_FSMR_RTCAL (0x1u << 17) /**< \brief (PMC_FSMR) RTC Alarm Enable */ +#define PMC_FSMR_USBAL (0x1u << 18) /**< \brief (PMC_FSMR) USB Alarm Enable */ +#define PMC_FSMR_LPM (0x1u << 20) /**< \brief (PMC_FSMR) Low Power Mode */ +/* -------- PMC_FSPR : (PMC Offset: 0x0074) Fast Startup Polarity Register -------- */ +#define PMC_FSPR_FSTP0 (0x1u << 0) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP1 (0x1u << 1) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP2 (0x1u << 2) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP3 (0x1u << 3) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP4 (0x1u << 4) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP5 (0x1u << 5) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP6 (0x1u << 6) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP7 (0x1u << 7) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP8 (0x1u << 8) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP9 (0x1u << 9) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP10 (0x1u << 10) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP11 (0x1u << 11) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP12 (0x1u << 12) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP13 (0x1u << 13) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP14 (0x1u << 14) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +#define PMC_FSPR_FSTP15 (0x1u << 15) /**< \brief (PMC_FSPR) Fast Startup Input Polarityx */ +/* -------- PMC_FOCR : (PMC Offset: 0x0078) Fault Output Clear Register -------- */ +#define PMC_FOCR_FOCLR (0x1u << 0) /**< \brief (PMC_FOCR) Fault Output Clear */ +/* -------- PMC_WPMR : (PMC Offset: 0x00E4) Write Protect Mode Register -------- */ +#define PMC_WPMR_WPEN (0x1u << 0) /**< \brief (PMC_WPMR) Write Protect Enable */ +#define PMC_WPMR_WPKEY_Pos 8 +#define PMC_WPMR_WPKEY_Msk (0xffffffu << PMC_WPMR_WPKEY_Pos) /**< \brief (PMC_WPMR) Write Protect KEY */ +#define PMC_WPMR_WPKEY(value) ((PMC_WPMR_WPKEY_Msk & ((value) << PMC_WPMR_WPKEY_Pos))) +/* -------- PMC_WPSR : (PMC Offset: 0x00E8) Write Protect Status Register -------- */ +#define PMC_WPSR_WPVS (0x1u << 0) /**< \brief (PMC_WPSR) Write Protect Violation Status */ +#define PMC_WPSR_WPVSRC_Pos 8 +#define PMC_WPSR_WPVSRC_Msk (0xffffu << PMC_WPSR_WPVSRC_Pos) /**< \brief (PMC_WPSR) Write Protect Violation Source */ +/* -------- PMC_PCER1 : (PMC Offset: 0x0100) Peripheral Clock Enable Register 1 -------- */ +#define PMC_PCER1_PID32 (0x1u << 0) /**< \brief (PMC_PCER1) Peripheral Clock 32 Enable */ +#define PMC_PCER1_PID33 (0x1u << 1) /**< \brief (PMC_PCER1) Peripheral Clock 33 Enable */ +#define PMC_PCER1_PID34 (0x1u << 2) /**< \brief (PMC_PCER1) Peripheral Clock 34 Enable */ +#define PMC_PCER1_PID35 (0x1u << 3) /**< \brief (PMC_PCER1) Peripheral Clock 35 Enable */ +#define PMC_PCER1_PID36 (0x1u << 4) /**< \brief (PMC_PCER1) Peripheral Clock 36 Enable */ +#define PMC_PCER1_PID37 (0x1u << 5) /**< \brief (PMC_PCER1) Peripheral Clock 37 Enable */ +#define PMC_PCER1_PID38 (0x1u << 6) /**< \brief (PMC_PCER1) Peripheral Clock 38 Enable */ +#define PMC_PCER1_PID39 (0x1u << 7) /**< \brief (PMC_PCER1) Peripheral Clock 39 Enable */ +#define PMC_PCER1_PID40 (0x1u << 8) /**< \brief (PMC_PCER1) Peripheral Clock 40 Enable */ +#define PMC_PCER1_PID41 (0x1u << 9) /**< \brief (PMC_PCER1) Peripheral Clock 41 Enable */ +#define PMC_PCER1_PID42 (0x1u << 10) /**< \brief (PMC_PCER1) Peripheral Clock 42 Enable */ +#define PMC_PCER1_PID43 (0x1u << 11) /**< \brief (PMC_PCER1) Peripheral Clock 43 Enable */ +#define PMC_PCER1_PID44 (0x1u << 12) /**< \brief (PMC_PCER1) Peripheral Clock 44 Enable */ +/* -------- PMC_PCDR1 : (PMC Offset: 0x0104) Peripheral Clock Disable Register 1 -------- */ +#define PMC_PCDR1_PID32 (0x1u << 0) /**< \brief (PMC_PCDR1) Peripheral Clock 32 Disable */ +#define PMC_PCDR1_PID33 (0x1u << 1) /**< \brief (PMC_PCDR1) Peripheral Clock 33 Disable */ +#define PMC_PCDR1_PID34 (0x1u << 2) /**< \brief (PMC_PCDR1) Peripheral Clock 34 Disable */ +#define PMC_PCDR1_PID35 (0x1u << 3) /**< \brief (PMC_PCDR1) Peripheral Clock 35 Disable */ +#define PMC_PCDR1_PID36 (0x1u << 4) /**< \brief (PMC_PCDR1) Peripheral Clock 36 Disable */ +#define PMC_PCDR1_PID37 (0x1u << 5) /**< \brief (PMC_PCDR1) Peripheral Clock 37 Disable */ +#define PMC_PCDR1_PID38 (0x1u << 6) /**< \brief (PMC_PCDR1) Peripheral Clock 38 Disable */ +#define PMC_PCDR1_PID39 (0x1u << 7) /**< \brief (PMC_PCDR1) Peripheral Clock 39 Disable */ +#define PMC_PCDR1_PID40 (0x1u << 8) /**< \brief (PMC_PCDR1) Peripheral Clock 40 Disable */ +#define PMC_PCDR1_PID41 (0x1u << 9) /**< \brief (PMC_PCDR1) Peripheral Clock 41 Disable */ +#define PMC_PCDR1_PID42 (0x1u << 10) /**< \brief (PMC_PCDR1) Peripheral Clock 42 Disable */ +#define PMC_PCDR1_PID43 (0x1u << 11) /**< \brief (PMC_PCDR1) Peripheral Clock 43 Disable */ +#define PMC_PCDR1_PID44 (0x1u << 12) /**< \brief (PMC_PCDR1) Peripheral Clock 44 Disable */ +/* -------- PMC_PCSR1 : (PMC Offset: 0x0108) Peripheral Clock Status Register 1 -------- */ +#define PMC_PCSR1_PID32 (0x1u << 0) /**< \brief (PMC_PCSR1) Peripheral Clock 32 Status */ +#define PMC_PCSR1_PID33 (0x1u << 1) /**< \brief (PMC_PCSR1) Peripheral Clock 33 Status */ +#define PMC_PCSR1_PID34 (0x1u << 2) /**< \brief (PMC_PCSR1) Peripheral Clock 34 Status */ +#define PMC_PCSR1_PID35 (0x1u << 3) /**< \brief (PMC_PCSR1) Peripheral Clock 35 Status */ +#define PMC_PCSR1_PID36 (0x1u << 4) /**< \brief (PMC_PCSR1) Peripheral Clock 36 Status */ +#define PMC_PCSR1_PID37 (0x1u << 5) /**< \brief (PMC_PCSR1) Peripheral Clock 37 Status */ +#define PMC_PCSR1_PID38 (0x1u << 6) /**< \brief (PMC_PCSR1) Peripheral Clock 38 Status */ +#define PMC_PCSR1_PID39 (0x1u << 7) /**< \brief (PMC_PCSR1) Peripheral Clock 39 Status */ +#define PMC_PCSR1_PID40 (0x1u << 8) /**< \brief (PMC_PCSR1) Peripheral Clock 40 Status */ +#define PMC_PCSR1_PID41 (0x1u << 9) /**< \brief (PMC_PCSR1) Peripheral Clock 41 Status */ +#define PMC_PCSR1_PID42 (0x1u << 10) /**< \brief (PMC_PCSR1) Peripheral Clock 42 Status */ +#define PMC_PCSR1_PID43 (0x1u << 11) /**< \brief (PMC_PCSR1) Peripheral Clock 43 Status */ +#define PMC_PCSR1_PID44 (0x1u << 12) /**< \brief (PMC_PCSR1) Peripheral Clock 44 Status */ +/* -------- PMC_PCR : (PMC Offset: 0x010C) Peripheral Control Register -------- */ +#define PMC_PCR_PID_Pos 0 +#define PMC_PCR_PID_Msk (0x3fu << PMC_PCR_PID_Pos) /**< \brief (PMC_PCR) Peripheral ID */ +#define PMC_PCR_PID(value) ((PMC_PCR_PID_Msk & ((value) << PMC_PCR_PID_Pos))) +#define PMC_PCR_CMD (0x1u << 12) /**< \brief (PMC_PCR) Command */ +#define PMC_PCR_DIV_Pos 16 +#define PMC_PCR_DIV_Msk (0x3u << PMC_PCR_DIV_Pos) /**< \brief (PMC_PCR) Divisor Value */ +#define PMC_PCR_DIV_PERIPH_DIV_MCK (0x0u << 16) /**< \brief (PMC_PCR) Peripheral clock is MCK */ +#define PMC_PCR_DIV_PERIPH_DIV2_MCK (0x1u << 16) /**< \brief (PMC_PCR) Peripheral clock is MCK/2 */ +#define PMC_PCR_DIV_PERIPH_DIV4_MCK (0x2u << 16) /**< \brief (PMC_PCR) Peripheral clock is MCK/4 */ +#define PMC_PCR_EN (0x1u << 28) /**< \brief (PMC_PCR) Enable */ + +/*@}*/ + + +#endif /* _SAM3XA_PMC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_pwm.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_pwm.h new file mode 100644 index 000000000..150737fd4 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_pwm.h @@ -0,0 +1,686 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_PWM_COMPONENT_ +#define _SAM3XA_PWM_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Pulse Width Modulation Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_PWM Pulse Width Modulation Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief PwmCh_num hardware registers */ +typedef struct { + RwReg PWM_CMR; /**< \brief (PwmCh_num Offset: 0x0) PWM Channel Mode Register */ + RwReg PWM_CDTY; /**< \brief (PwmCh_num Offset: 0x4) PWM Channel Duty Cycle Register */ + RwReg PWM_CDTYUPD; /**< \brief (PwmCh_num Offset: 0x8) PWM Channel Duty Cycle Update Register */ + RwReg PWM_CPRD; /**< \brief (PwmCh_num Offset: 0xC) PWM Channel Period Register */ + RwReg PWM_CPRDUPD; /**< \brief (PwmCh_num Offset: 0x10) PWM Channel Period Update Register */ + RwReg PWM_CCNT; /**< \brief (PwmCh_num Offset: 0x14) PWM Channel Counter Register */ + RwReg PWM_DT; /**< \brief (PwmCh_num Offset: 0x18) PWM Channel Dead Time Register */ + RwReg PWM_DTUPD; /**< \brief (PwmCh_num Offset: 0x1C) PWM Channel Dead Time Update Register */ +} PwmCh_num; +/** \brief PwmCmp hardware registers */ +typedef struct { + RwReg PWM_CMPV; /**< \brief (PwmCmp Offset: 0x0) PWM Comparison 0 Value Register */ + RwReg PWM_CMPVUPD; /**< \brief (PwmCmp Offset: 0x4) PWM Comparison 0 Value Update Register */ + RwReg PWM_CMPM; /**< \brief (PwmCmp Offset: 0x8) PWM Comparison 0 Mode Register */ + RwReg PWM_CMPMUPD; /**< \brief (PwmCmp Offset: 0xC) PWM Comparison 0 Mode Update Register */ +} PwmCmp; +/** \brief Pwm hardware registers */ +#define PWMCMP_NUMBER 8 +#define PWMCH_NUM_NUMBER 8 +typedef struct { + RwReg PWM_CLK; /**< \brief (Pwm Offset: 0x00) PWM Clock Register */ + WoReg PWM_ENA; /**< \brief (Pwm Offset: 0x04) PWM Enable Register */ + WoReg PWM_DIS; /**< \brief (Pwm Offset: 0x08) PWM Disable Register */ + RoReg PWM_SR; /**< \brief (Pwm Offset: 0x0C) PWM Status Register */ + WoReg PWM_IER1; /**< \brief (Pwm Offset: 0x10) PWM Interrupt Enable Register 1 */ + WoReg PWM_IDR1; /**< \brief (Pwm Offset: 0x14) PWM Interrupt Disable Register 1 */ + RoReg PWM_IMR1; /**< \brief (Pwm Offset: 0x18) PWM Interrupt Mask Register 1 */ + RoReg PWM_ISR1; /**< \brief (Pwm Offset: 0x1C) PWM Interrupt Status Register 1 */ + RwReg PWM_SCM; /**< \brief (Pwm Offset: 0x20) PWM Sync Channels Mode Register */ + RoReg Reserved1[1]; + RwReg PWM_SCUC; /**< \brief (Pwm Offset: 0x28) PWM Sync Channels Update Control Register */ + RwReg PWM_SCUP; /**< \brief (Pwm Offset: 0x2C) PWM Sync Channels Update Period Register */ + WoReg PWM_SCUPUPD; /**< \brief (Pwm Offset: 0x30) PWM Sync Channels Update Period Update Register */ + WoReg PWM_IER2; /**< \brief (Pwm Offset: 0x34) PWM Interrupt Enable Register 2 */ + WoReg PWM_IDR2; /**< \brief (Pwm Offset: 0x38) PWM Interrupt Disable Register 2 */ + RoReg PWM_IMR2; /**< \brief (Pwm Offset: 0x3C) PWM Interrupt Mask Register 2 */ + RoReg PWM_ISR2; /**< \brief (Pwm Offset: 0x40) PWM Interrupt Status Register 2 */ + RwReg PWM_OOV; /**< \brief (Pwm Offset: 0x44) PWM Output Override Value Register */ + RwReg PWM_OS; /**< \brief (Pwm Offset: 0x48) PWM Output Selection Register */ + WoReg PWM_OSS; /**< \brief (Pwm Offset: 0x4C) PWM Output Selection Set Register */ + WoReg PWM_OSC; /**< \brief (Pwm Offset: 0x50) PWM Output Selection Clear Register */ + WoReg PWM_OSSUPD; /**< \brief (Pwm Offset: 0x54) PWM Output Selection Set Update Register */ + WoReg PWM_OSCUPD; /**< \brief (Pwm Offset: 0x58) PWM Output Selection Clear Update Register */ + RwReg PWM_FMR; /**< \brief (Pwm Offset: 0x5C) PWM Fault Mode Register */ + RoReg PWM_FSR; /**< \brief (Pwm Offset: 0x60) PWM Fault Status Register */ + WoReg PWM_FCR; /**< \brief (Pwm Offset: 0x64) PWM Fault Clear Register */ + RwReg PWM_FPV; /**< \brief (Pwm Offset: 0x68) PWM Fault Protection Value Register */ + RwReg PWM_FPE1; /**< \brief (Pwm Offset: 0x6C) PWM Fault Protection Enable Register 1 */ + RwReg PWM_FPE2; /**< \brief (Pwm Offset: 0x70) PWM Fault Protection Enable Register 2 */ + RoReg Reserved2[2]; + RwReg PWM_ELMR[2]; /**< \brief (Pwm Offset: 0x7C) PWM Event Line 0 Mode Register */ + RoReg Reserved3[11]; + RwReg PWM_SMMR; /**< \brief (Pwm Offset: 0xB0) PWM Stepper Motor Mode Register */ + RoReg Reserved4[12]; + WoReg PWM_WPCR; /**< \brief (Pwm Offset: 0xE4) PWM Write Protect Control Register */ + RoReg PWM_WPSR; /**< \brief (Pwm Offset: 0xE8) PWM Write Protect Status Register */ + RoReg Reserved5[5]; + RwReg PWM_RPR; /**< \brief (Pwm Offset: 0x100) Receive Pointer Register */ + RwReg PWM_RCR; /**< \brief (Pwm Offset: 0x104) Receive Counter Register */ + RwReg PWM_TPR; /**< \brief (Pwm Offset: 0x108) Transmit Pointer Register */ + RwReg PWM_TCR; /**< \brief (Pwm Offset: 0x10C) Transmit Counter Register */ + RwReg PWM_RNPR; /**< \brief (Pwm Offset: 0x110) Receive Next Pointer Register */ + RwReg PWM_RNCR; /**< \brief (Pwm Offset: 0x114) Receive Next Counter Register */ + RwReg PWM_TNPR; /**< \brief (Pwm Offset: 0x118) Transmit Next Pointer Register */ + RwReg PWM_TNCR; /**< \brief (Pwm Offset: 0x11C) Transmit Next Counter Register */ + WoReg PWM_PTCR; /**< \brief (Pwm Offset: 0x120) Transfer Control Register */ + RoReg PWM_PTSR; /**< \brief (Pwm Offset: 0x124) Transfer Status Register */ + RoReg Reserved6[2]; + PwmCmp PWM_CMP[PWMCMP_NUMBER]; /**< \brief (Pwm Offset: 0x130) 0 .. 7 */ + RoReg Reserved7[20]; + PwmCh_num PWM_CH_NUM[PWMCH_NUM_NUMBER]; /**< \brief (Pwm Offset: 0x200) ch_num = 0 .. 7 */ +} Pwm; +#endif /* __ASSEMBLY__ */ +/* -------- PWM_CLK : (PWM Offset: 0x00) PWM Clock Register -------- */ +#define PWM_CLK_DIVA_Pos 0 +#define PWM_CLK_DIVA_Msk (0xffu << PWM_CLK_DIVA_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Divide Factor */ +#define PWM_CLK_DIVA(value) ((PWM_CLK_DIVA_Msk & ((value) << PWM_CLK_DIVA_Pos))) +#define PWM_CLK_PREA_Pos 8 +#define PWM_CLK_PREA_Msk (0xfu << PWM_CLK_PREA_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Source Clock Selection */ +#define PWM_CLK_PREA(value) ((PWM_CLK_PREA_Msk & ((value) << PWM_CLK_PREA_Pos))) +#define PWM_CLK_DIVB_Pos 16 +#define PWM_CLK_DIVB_Msk (0xffu << PWM_CLK_DIVB_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Divide Factor */ +#define PWM_CLK_DIVB(value) ((PWM_CLK_DIVB_Msk & ((value) << PWM_CLK_DIVB_Pos))) +#define PWM_CLK_PREB_Pos 24 +#define PWM_CLK_PREB_Msk (0xfu << PWM_CLK_PREB_Pos) /**< \brief (PWM_CLK) CLKA, CLKB Source Clock Selection */ +#define PWM_CLK_PREB(value) ((PWM_CLK_PREB_Msk & ((value) << PWM_CLK_PREB_Pos))) +/* -------- PWM_ENA : (PWM Offset: 0x04) PWM Enable Register -------- */ +#define PWM_ENA_CHID0 (0x1u << 0) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID1 (0x1u << 1) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID2 (0x1u << 2) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID3 (0x1u << 3) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID4 (0x1u << 4) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID5 (0x1u << 5) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID6 (0x1u << 6) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID7 (0x1u << 7) /**< \brief (PWM_ENA) Channel ID */ +/* -------- PWM_DIS : (PWM Offset: 0x08) PWM Disable Register -------- */ +#define PWM_DIS_CHID0 (0x1u << 0) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID1 (0x1u << 1) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID2 (0x1u << 2) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID3 (0x1u << 3) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID4 (0x1u << 4) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID5 (0x1u << 5) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID6 (0x1u << 6) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID7 (0x1u << 7) /**< \brief (PWM_DIS) Channel ID */ +/* -------- PWM_SR : (PWM Offset: 0x0C) PWM Status Register -------- */ +#define PWM_SR_CHID0 (0x1u << 0) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID1 (0x1u << 1) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID2 (0x1u << 2) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID3 (0x1u << 3) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID4 (0x1u << 4) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID5 (0x1u << 5) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID6 (0x1u << 6) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID7 (0x1u << 7) /**< \brief (PWM_SR) Channel ID */ +/* -------- PWM_IER1 : (PWM Offset: 0x10) PWM Interrupt Enable Register 1 -------- */ +#define PWM_IER1_CHID0 (0x1u << 0) /**< \brief (PWM_IER1) Counter Event on Channel 0 Interrupt Enable */ +#define PWM_IER1_CHID1 (0x1u << 1) /**< \brief (PWM_IER1) Counter Event on Channel 1 Interrupt Enable */ +#define PWM_IER1_CHID2 (0x1u << 2) /**< \brief (PWM_IER1) Counter Event on Channel 2 Interrupt Enable */ +#define PWM_IER1_CHID3 (0x1u << 3) /**< \brief (PWM_IER1) Counter Event on Channel 3 Interrupt Enable */ +#define PWM_IER1_CHID4 (0x1u << 4) /**< \brief (PWM_IER1) Counter Event on Channel 4 Interrupt Enable */ +#define PWM_IER1_CHID5 (0x1u << 5) /**< \brief (PWM_IER1) Counter Event on Channel 5 Interrupt Enable */ +#define PWM_IER1_CHID6 (0x1u << 6) /**< \brief (PWM_IER1) Counter Event on Channel 6 Interrupt Enable */ +#define PWM_IER1_CHID7 (0x1u << 7) /**< \brief (PWM_IER1) Counter Event on Channel 7 Interrupt Enable */ +#define PWM_IER1_FCHID0 (0x1u << 16) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 0 Interrupt Enable */ +#define PWM_IER1_FCHID1 (0x1u << 17) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 1 Interrupt Enable */ +#define PWM_IER1_FCHID2 (0x1u << 18) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 2 Interrupt Enable */ +#define PWM_IER1_FCHID3 (0x1u << 19) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 3 Interrupt Enable */ +#define PWM_IER1_FCHID4 (0x1u << 20) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 4 Interrupt Enable */ +#define PWM_IER1_FCHID5 (0x1u << 21) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 5 Interrupt Enable */ +#define PWM_IER1_FCHID6 (0x1u << 22) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 6 Interrupt Enable */ +#define PWM_IER1_FCHID7 (0x1u << 23) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 7 Interrupt Enable */ +/* -------- PWM_IDR1 : (PWM Offset: 0x14) PWM Interrupt Disable Register 1 -------- */ +#define PWM_IDR1_CHID0 (0x1u << 0) /**< \brief (PWM_IDR1) Counter Event on Channel 0 Interrupt Disable */ +#define PWM_IDR1_CHID1 (0x1u << 1) /**< \brief (PWM_IDR1) Counter Event on Channel 1 Interrupt Disable */ +#define PWM_IDR1_CHID2 (0x1u << 2) /**< \brief (PWM_IDR1) Counter Event on Channel 2 Interrupt Disable */ +#define PWM_IDR1_CHID3 (0x1u << 3) /**< \brief (PWM_IDR1) Counter Event on Channel 3 Interrupt Disable */ +#define PWM_IDR1_CHID4 (0x1u << 4) /**< \brief (PWM_IDR1) Counter Event on Channel 4 Interrupt Disable */ +#define PWM_IDR1_CHID5 (0x1u << 5) /**< \brief (PWM_IDR1) Counter Event on Channel 5 Interrupt Disable */ +#define PWM_IDR1_CHID6 (0x1u << 6) /**< \brief (PWM_IDR1) Counter Event on Channel 6 Interrupt Disable */ +#define PWM_IDR1_CHID7 (0x1u << 7) /**< \brief (PWM_IDR1) Counter Event on Channel 7 Interrupt Disable */ +#define PWM_IDR1_FCHID0 (0x1u << 16) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 0 Interrupt Disable */ +#define PWM_IDR1_FCHID1 (0x1u << 17) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 1 Interrupt Disable */ +#define PWM_IDR1_FCHID2 (0x1u << 18) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 2 Interrupt Disable */ +#define PWM_IDR1_FCHID3 (0x1u << 19) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 3 Interrupt Disable */ +#define PWM_IDR1_FCHID4 (0x1u << 20) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 4 Interrupt Disable */ +#define PWM_IDR1_FCHID5 (0x1u << 21) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 5 Interrupt Disable */ +#define PWM_IDR1_FCHID6 (0x1u << 22) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 6 Interrupt Disable */ +#define PWM_IDR1_FCHID7 (0x1u << 23) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 7 Interrupt Disable */ +/* -------- PWM_IMR1 : (PWM Offset: 0x18) PWM Interrupt Mask Register 1 -------- */ +#define PWM_IMR1_CHID0 (0x1u << 0) /**< \brief (PWM_IMR1) Counter Event on Channel 0 Interrupt Mask */ +#define PWM_IMR1_CHID1 (0x1u << 1) /**< \brief (PWM_IMR1) Counter Event on Channel 1 Interrupt Mask */ +#define PWM_IMR1_CHID2 (0x1u << 2) /**< \brief (PWM_IMR1) Counter Event on Channel 2 Interrupt Mask */ +#define PWM_IMR1_CHID3 (0x1u << 3) /**< \brief (PWM_IMR1) Counter Event on Channel 3 Interrupt Mask */ +#define PWM_IMR1_CHID4 (0x1u << 4) /**< \brief (PWM_IMR1) Counter Event on Channel 4 Interrupt Mask */ +#define PWM_IMR1_CHID5 (0x1u << 5) /**< \brief (PWM_IMR1) Counter Event on Channel 5 Interrupt Mask */ +#define PWM_IMR1_CHID6 (0x1u << 6) /**< \brief (PWM_IMR1) Counter Event on Channel 6 Interrupt Mask */ +#define PWM_IMR1_CHID7 (0x1u << 7) /**< \brief (PWM_IMR1) Counter Event on Channel 7 Interrupt Mask */ +#define PWM_IMR1_FCHID0 (0x1u << 16) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 0 Interrupt Mask */ +#define PWM_IMR1_FCHID1 (0x1u << 17) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 1 Interrupt Mask */ +#define PWM_IMR1_FCHID2 (0x1u << 18) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 2 Interrupt Mask */ +#define PWM_IMR1_FCHID3 (0x1u << 19) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 3 Interrupt Mask */ +#define PWM_IMR1_FCHID4 (0x1u << 20) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 4 Interrupt Mask */ +#define PWM_IMR1_FCHID5 (0x1u << 21) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 5 Interrupt Mask */ +#define PWM_IMR1_FCHID6 (0x1u << 22) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 6 Interrupt Mask */ +#define PWM_IMR1_FCHID7 (0x1u << 23) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 7 Interrupt Mask */ +/* -------- PWM_ISR1 : (PWM Offset: 0x1C) PWM Interrupt Status Register 1 -------- */ +#define PWM_ISR1_CHID0 (0x1u << 0) /**< \brief (PWM_ISR1) Counter Event on Channel 0 */ +#define PWM_ISR1_CHID1 (0x1u << 1) /**< \brief (PWM_ISR1) Counter Event on Channel 1 */ +#define PWM_ISR1_CHID2 (0x1u << 2) /**< \brief (PWM_ISR1) Counter Event on Channel 2 */ +#define PWM_ISR1_CHID3 (0x1u << 3) /**< \brief (PWM_ISR1) Counter Event on Channel 3 */ +#define PWM_ISR1_CHID4 (0x1u << 4) /**< \brief (PWM_ISR1) Counter Event on Channel 4 */ +#define PWM_ISR1_CHID5 (0x1u << 5) /**< \brief (PWM_ISR1) Counter Event on Channel 5 */ +#define PWM_ISR1_CHID6 (0x1u << 6) /**< \brief (PWM_ISR1) Counter Event on Channel 6 */ +#define PWM_ISR1_CHID7 (0x1u << 7) /**< \brief (PWM_ISR1) Counter Event on Channel 7 */ +#define PWM_ISR1_FCHID0 (0x1u << 16) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 0 */ +#define PWM_ISR1_FCHID1 (0x1u << 17) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 1 */ +#define PWM_ISR1_FCHID2 (0x1u << 18) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 2 */ +#define PWM_ISR1_FCHID3 (0x1u << 19) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 3 */ +#define PWM_ISR1_FCHID4 (0x1u << 20) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 4 */ +#define PWM_ISR1_FCHID5 (0x1u << 21) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 5 */ +#define PWM_ISR1_FCHID6 (0x1u << 22) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 6 */ +#define PWM_ISR1_FCHID7 (0x1u << 23) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 7 */ +/* -------- PWM_SCM : (PWM Offset: 0x20) PWM Sync Channels Mode Register -------- */ +#define PWM_SCM_SYNC0 (0x1u << 0) /**< \brief (PWM_SCM) Synchronous Channel 0 */ +#define PWM_SCM_SYNC1 (0x1u << 1) /**< \brief (PWM_SCM) Synchronous Channel 1 */ +#define PWM_SCM_SYNC2 (0x1u << 2) /**< \brief (PWM_SCM) Synchronous Channel 2 */ +#define PWM_SCM_SYNC3 (0x1u << 3) /**< \brief (PWM_SCM) Synchronous Channel 3 */ +#define PWM_SCM_SYNC4 (0x1u << 4) /**< \brief (PWM_SCM) Synchronous Channel 4 */ +#define PWM_SCM_SYNC5 (0x1u << 5) /**< \brief (PWM_SCM) Synchronous Channel 5 */ +#define PWM_SCM_SYNC6 (0x1u << 6) /**< \brief (PWM_SCM) Synchronous Channel 6 */ +#define PWM_SCM_SYNC7 (0x1u << 7) /**< \brief (PWM_SCM) Synchronous Channel 7 */ +#define PWM_SCM_UPDM_Pos 16 +#define PWM_SCM_UPDM_Msk (0x3u << PWM_SCM_UPDM_Pos) /**< \brief (PWM_SCM) Synchronous Channels Update Mode */ +#define PWM_SCM_UPDM_MODE0 (0x0u << 16) /**< \brief (PWM_SCM) Manual write of double buffer registers and manual update of synchronous channels */ +#define PWM_SCM_UPDM_MODE1 (0x1u << 16) /**< \brief (PWM_SCM) Manual write of double buffer registers and automatic update of synchronous channels */ +#define PWM_SCM_UPDM_MODE2 (0x2u << 16) /**< \brief (PWM_SCM) Automatic write of duty-cycle update registers by the PDC and automatic update of synchronous channels */ +#define PWM_SCM_PTRM (0x1u << 20) /**< \brief (PWM_SCM) PDC Transfer Request Mode */ +#define PWM_SCM_PTRCS_Pos 21 +#define PWM_SCM_PTRCS_Msk (0x7u << PWM_SCM_PTRCS_Pos) /**< \brief (PWM_SCM) PDC Transfer Request Comparison Selection */ +#define PWM_SCM_PTRCS(value) ((PWM_SCM_PTRCS_Msk & ((value) << PWM_SCM_PTRCS_Pos))) +/* -------- PWM_SCUC : (PWM Offset: 0x28) PWM Sync Channels Update Control Register -------- */ +#define PWM_SCUC_UPDULOCK (0x1u << 0) /**< \brief (PWM_SCUC) Synchronous Channels Update Unlock */ +/* -------- PWM_SCUP : (PWM Offset: 0x2C) PWM Sync Channels Update Period Register -------- */ +#define PWM_SCUP_UPR_Pos 0 +#define PWM_SCUP_UPR_Msk (0xfu << PWM_SCUP_UPR_Pos) /**< \brief (PWM_SCUP) Update Period */ +#define PWM_SCUP_UPR(value) ((PWM_SCUP_UPR_Msk & ((value) << PWM_SCUP_UPR_Pos))) +#define PWM_SCUP_UPRCNT_Pos 4 +#define PWM_SCUP_UPRCNT_Msk (0xfu << PWM_SCUP_UPRCNT_Pos) /**< \brief (PWM_SCUP) Update Period Counter */ +#define PWM_SCUP_UPRCNT(value) ((PWM_SCUP_UPRCNT_Msk & ((value) << PWM_SCUP_UPRCNT_Pos))) +/* -------- PWM_SCUPUPD : (PWM Offset: 0x30) PWM Sync Channels Update Period Update Register -------- */ +#define PWM_SCUPUPD_UPRUPD_Pos 0 +#define PWM_SCUPUPD_UPRUPD_Msk (0xfu << PWM_SCUPUPD_UPRUPD_Pos) /**< \brief (PWM_SCUPUPD) Update Period Update */ +#define PWM_SCUPUPD_UPRUPD(value) ((PWM_SCUPUPD_UPRUPD_Msk & ((value) << PWM_SCUPUPD_UPRUPD_Pos))) +/* -------- PWM_IER2 : (PWM Offset: 0x34) PWM Interrupt Enable Register 2 -------- */ +#define PWM_IER2_WRDY (0x1u << 0) /**< \brief (PWM_IER2) Write Ready for Synchronous Channels Update Interrupt Enable */ +#define PWM_IER2_ENDTX (0x1u << 1) /**< \brief (PWM_IER2) PDC End of TX Buffer Interrupt Enable */ +#define PWM_IER2_TXBUFE (0x1u << 2) /**< \brief (PWM_IER2) PDC TX Buffer Empty Interrupt Enable */ +#define PWM_IER2_UNRE (0x1u << 3) /**< \brief (PWM_IER2) Synchronous Channels Update Underrun Error Interrupt Enable */ +#define PWM_IER2_CMPM0 (0x1u << 8) /**< \brief (PWM_IER2) Comparison 0 Match Interrupt Enable */ +#define PWM_IER2_CMPM1 (0x1u << 9) /**< \brief (PWM_IER2) Comparison 1 Match Interrupt Enable */ +#define PWM_IER2_CMPM2 (0x1u << 10) /**< \brief (PWM_IER2) Comparison 2 Match Interrupt Enable */ +#define PWM_IER2_CMPM3 (0x1u << 11) /**< \brief (PWM_IER2) Comparison 3 Match Interrupt Enable */ +#define PWM_IER2_CMPM4 (0x1u << 12) /**< \brief (PWM_IER2) Comparison 4 Match Interrupt Enable */ +#define PWM_IER2_CMPM5 (0x1u << 13) /**< \brief (PWM_IER2) Comparison 5 Match Interrupt Enable */ +#define PWM_IER2_CMPM6 (0x1u << 14) /**< \brief (PWM_IER2) Comparison 6 Match Interrupt Enable */ +#define PWM_IER2_CMPM7 (0x1u << 15) /**< \brief (PWM_IER2) Comparison 7 Match Interrupt Enable */ +#define PWM_IER2_CMPU0 (0x1u << 16) /**< \brief (PWM_IER2) Comparison 0 Update Interrupt Enable */ +#define PWM_IER2_CMPU1 (0x1u << 17) /**< \brief (PWM_IER2) Comparison 1 Update Interrupt Enable */ +#define PWM_IER2_CMPU2 (0x1u << 18) /**< \brief (PWM_IER2) Comparison 2 Update Interrupt Enable */ +#define PWM_IER2_CMPU3 (0x1u << 19) /**< \brief (PWM_IER2) Comparison 3 Update Interrupt Enable */ +#define PWM_IER2_CMPU4 (0x1u << 20) /**< \brief (PWM_IER2) Comparison 4 Update Interrupt Enable */ +#define PWM_IER2_CMPU5 (0x1u << 21) /**< \brief (PWM_IER2) Comparison 5 Update Interrupt Enable */ +#define PWM_IER2_CMPU6 (0x1u << 22) /**< \brief (PWM_IER2) Comparison 6 Update Interrupt Enable */ +#define PWM_IER2_CMPU7 (0x1u << 23) /**< \brief (PWM_IER2) Comparison 7 Update Interrupt Enable */ +/* -------- PWM_IDR2 : (PWM Offset: 0x38) PWM Interrupt Disable Register 2 -------- */ +#define PWM_IDR2_WRDY (0x1u << 0) /**< \brief (PWM_IDR2) Write Ready for Synchronous Channels Update Interrupt Disable */ +#define PWM_IDR2_ENDTX (0x1u << 1) /**< \brief (PWM_IDR2) PDC End of TX Buffer Interrupt Disable */ +#define PWM_IDR2_TXBUFE (0x1u << 2) /**< \brief (PWM_IDR2) PDC TX Buffer Empty Interrupt Disable */ +#define PWM_IDR2_UNRE (0x1u << 3) /**< \brief (PWM_IDR2) Synchronous Channels Update Underrun Error Interrupt Disable */ +#define PWM_IDR2_CMPM0 (0x1u << 8) /**< \brief (PWM_IDR2) Comparison 0 Match Interrupt Disable */ +#define PWM_IDR2_CMPM1 (0x1u << 9) /**< \brief (PWM_IDR2) Comparison 1 Match Interrupt Disable */ +#define PWM_IDR2_CMPM2 (0x1u << 10) /**< \brief (PWM_IDR2) Comparison 2 Match Interrupt Disable */ +#define PWM_IDR2_CMPM3 (0x1u << 11) /**< \brief (PWM_IDR2) Comparison 3 Match Interrupt Disable */ +#define PWM_IDR2_CMPM4 (0x1u << 12) /**< \brief (PWM_IDR2) Comparison 4 Match Interrupt Disable */ +#define PWM_IDR2_CMPM5 (0x1u << 13) /**< \brief (PWM_IDR2) Comparison 5 Match Interrupt Disable */ +#define PWM_IDR2_CMPM6 (0x1u << 14) /**< \brief (PWM_IDR2) Comparison 6 Match Interrupt Disable */ +#define PWM_IDR2_CMPM7 (0x1u << 15) /**< \brief (PWM_IDR2) Comparison 7 Match Interrupt Disable */ +#define PWM_IDR2_CMPU0 (0x1u << 16) /**< \brief (PWM_IDR2) Comparison 0 Update Interrupt Disable */ +#define PWM_IDR2_CMPU1 (0x1u << 17) /**< \brief (PWM_IDR2) Comparison 1 Update Interrupt Disable */ +#define PWM_IDR2_CMPU2 (0x1u << 18) /**< \brief (PWM_IDR2) Comparison 2 Update Interrupt Disable */ +#define PWM_IDR2_CMPU3 (0x1u << 19) /**< \brief (PWM_IDR2) Comparison 3 Update Interrupt Disable */ +#define PWM_IDR2_CMPU4 (0x1u << 20) /**< \brief (PWM_IDR2) Comparison 4 Update Interrupt Disable */ +#define PWM_IDR2_CMPU5 (0x1u << 21) /**< \brief (PWM_IDR2) Comparison 5 Update Interrupt Disable */ +#define PWM_IDR2_CMPU6 (0x1u << 22) /**< \brief (PWM_IDR2) Comparison 6 Update Interrupt Disable */ +#define PWM_IDR2_CMPU7 (0x1u << 23) /**< \brief (PWM_IDR2) Comparison 7 Update Interrupt Disable */ +/* -------- PWM_IMR2 : (PWM Offset: 0x3C) PWM Interrupt Mask Register 2 -------- */ +#define PWM_IMR2_WRDY (0x1u << 0) /**< \brief (PWM_IMR2) Write Ready for Synchronous Channels Update Interrupt Mask */ +#define PWM_IMR2_ENDTX (0x1u << 1) /**< \brief (PWM_IMR2) PDC End of TX Buffer Interrupt Mask */ +#define PWM_IMR2_TXBUFE (0x1u << 2) /**< \brief (PWM_IMR2) PDC TX Buffer Empty Interrupt Mask */ +#define PWM_IMR2_UNRE (0x1u << 3) /**< \brief (PWM_IMR2) Synchronous Channels Update Underrun Error Interrupt Mask */ +#define PWM_IMR2_CMPM0 (0x1u << 8) /**< \brief (PWM_IMR2) Comparison 0 Match Interrupt Mask */ +#define PWM_IMR2_CMPM1 (0x1u << 9) /**< \brief (PWM_IMR2) Comparison 1 Match Interrupt Mask */ +#define PWM_IMR2_CMPM2 (0x1u << 10) /**< \brief (PWM_IMR2) Comparison 2 Match Interrupt Mask */ +#define PWM_IMR2_CMPM3 (0x1u << 11) /**< \brief (PWM_IMR2) Comparison 3 Match Interrupt Mask */ +#define PWM_IMR2_CMPM4 (0x1u << 12) /**< \brief (PWM_IMR2) Comparison 4 Match Interrupt Mask */ +#define PWM_IMR2_CMPM5 (0x1u << 13) /**< \brief (PWM_IMR2) Comparison 5 Match Interrupt Mask */ +#define PWM_IMR2_CMPM6 (0x1u << 14) /**< \brief (PWM_IMR2) Comparison 6 Match Interrupt Mask */ +#define PWM_IMR2_CMPM7 (0x1u << 15) /**< \brief (PWM_IMR2) Comparison 7 Match Interrupt Mask */ +#define PWM_IMR2_CMPU0 (0x1u << 16) /**< \brief (PWM_IMR2) Comparison 0 Update Interrupt Mask */ +#define PWM_IMR2_CMPU1 (0x1u << 17) /**< \brief (PWM_IMR2) Comparison 1 Update Interrupt Mask */ +#define PWM_IMR2_CMPU2 (0x1u << 18) /**< \brief (PWM_IMR2) Comparison 2 Update Interrupt Mask */ +#define PWM_IMR2_CMPU3 (0x1u << 19) /**< \brief (PWM_IMR2) Comparison 3 Update Interrupt Mask */ +#define PWM_IMR2_CMPU4 (0x1u << 20) /**< \brief (PWM_IMR2) Comparison 4 Update Interrupt Mask */ +#define PWM_IMR2_CMPU5 (0x1u << 21) /**< \brief (PWM_IMR2) Comparison 5 Update Interrupt Mask */ +#define PWM_IMR2_CMPU6 (0x1u << 22) /**< \brief (PWM_IMR2) Comparison 6 Update Interrupt Mask */ +#define PWM_IMR2_CMPU7 (0x1u << 23) /**< \brief (PWM_IMR2) Comparison 7 Update Interrupt Mask */ +/* -------- PWM_ISR2 : (PWM Offset: 0x40) PWM Interrupt Status Register 2 -------- */ +#define PWM_ISR2_WRDY (0x1u << 0) /**< \brief (PWM_ISR2) Write Ready for Synchronous Channels Update */ +#define PWM_ISR2_ENDTX (0x1u << 1) /**< \brief (PWM_ISR2) PDC End of TX Buffer */ +#define PWM_ISR2_TXBUFE (0x1u << 2) /**< \brief (PWM_ISR2) PDC TX Buffer Empty */ +#define PWM_ISR2_UNRE (0x1u << 3) /**< \brief (PWM_ISR2) Synchronous Channels Update Underrun Error */ +#define PWM_ISR2_CMPM0 (0x1u << 8) /**< \brief (PWM_ISR2) Comparison 0 Match */ +#define PWM_ISR2_CMPM1 (0x1u << 9) /**< \brief (PWM_ISR2) Comparison 1 Match */ +#define PWM_ISR2_CMPM2 (0x1u << 10) /**< \brief (PWM_ISR2) Comparison 2 Match */ +#define PWM_ISR2_CMPM3 (0x1u << 11) /**< \brief (PWM_ISR2) Comparison 3 Match */ +#define PWM_ISR2_CMPM4 (0x1u << 12) /**< \brief (PWM_ISR2) Comparison 4 Match */ +#define PWM_ISR2_CMPM5 (0x1u << 13) /**< \brief (PWM_ISR2) Comparison 5 Match */ +#define PWM_ISR2_CMPM6 (0x1u << 14) /**< \brief (PWM_ISR2) Comparison 6 Match */ +#define PWM_ISR2_CMPM7 (0x1u << 15) /**< \brief (PWM_ISR2) Comparison 7 Match */ +#define PWM_ISR2_CMPU0 (0x1u << 16) /**< \brief (PWM_ISR2) Comparison 0 Update */ +#define PWM_ISR2_CMPU1 (0x1u << 17) /**< \brief (PWM_ISR2) Comparison 1 Update */ +#define PWM_ISR2_CMPU2 (0x1u << 18) /**< \brief (PWM_ISR2) Comparison 2 Update */ +#define PWM_ISR2_CMPU3 (0x1u << 19) /**< \brief (PWM_ISR2) Comparison 3 Update */ +#define PWM_ISR2_CMPU4 (0x1u << 20) /**< \brief (PWM_ISR2) Comparison 4 Update */ +#define PWM_ISR2_CMPU5 (0x1u << 21) /**< \brief (PWM_ISR2) Comparison 5 Update */ +#define PWM_ISR2_CMPU6 (0x1u << 22) /**< \brief (PWM_ISR2) Comparison 6 Update */ +#define PWM_ISR2_CMPU7 (0x1u << 23) /**< \brief (PWM_ISR2) Comparison 7 Update */ +/* -------- PWM_OOV : (PWM Offset: 0x44) PWM Output Override Value Register -------- */ +#define PWM_OOV_OOVH0 (0x1u << 0) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 0 */ +#define PWM_OOV_OOVH1 (0x1u << 1) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 1 */ +#define PWM_OOV_OOVH2 (0x1u << 2) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 2 */ +#define PWM_OOV_OOVH3 (0x1u << 3) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 3 */ +#define PWM_OOV_OOVH4 (0x1u << 4) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 4 */ +#define PWM_OOV_OOVH5 (0x1u << 5) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 5 */ +#define PWM_OOV_OOVH6 (0x1u << 6) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 6 */ +#define PWM_OOV_OOVH7 (0x1u << 7) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 7 */ +#define PWM_OOV_OOVL0 (0x1u << 16) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 0 */ +#define PWM_OOV_OOVL1 (0x1u << 17) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 1 */ +#define PWM_OOV_OOVL2 (0x1u << 18) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 2 */ +#define PWM_OOV_OOVL3 (0x1u << 19) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 3 */ +#define PWM_OOV_OOVL4 (0x1u << 20) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 4 */ +#define PWM_OOV_OOVL5 (0x1u << 21) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 5 */ +#define PWM_OOV_OOVL6 (0x1u << 22) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 6 */ +#define PWM_OOV_OOVL7 (0x1u << 23) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 7 */ +/* -------- PWM_OS : (PWM Offset: 0x48) PWM Output Selection Register -------- */ +#define PWM_OS_OSH0 (0x1u << 0) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 0 */ +#define PWM_OS_OSH1 (0x1u << 1) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 1 */ +#define PWM_OS_OSH2 (0x1u << 2) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 2 */ +#define PWM_OS_OSH3 (0x1u << 3) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 3 */ +#define PWM_OS_OSH4 (0x1u << 4) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 4 */ +#define PWM_OS_OSH5 (0x1u << 5) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 5 */ +#define PWM_OS_OSH6 (0x1u << 6) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 6 */ +#define PWM_OS_OSH7 (0x1u << 7) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 7 */ +#define PWM_OS_OSL0 (0x1u << 16) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 0 */ +#define PWM_OS_OSL1 (0x1u << 17) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 1 */ +#define PWM_OS_OSL2 (0x1u << 18) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 2 */ +#define PWM_OS_OSL3 (0x1u << 19) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 3 */ +#define PWM_OS_OSL4 (0x1u << 20) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 4 */ +#define PWM_OS_OSL5 (0x1u << 21) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 5 */ +#define PWM_OS_OSL6 (0x1u << 22) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 6 */ +#define PWM_OS_OSL7 (0x1u << 23) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 7 */ +/* -------- PWM_OSS : (PWM Offset: 0x4C) PWM Output Selection Set Register -------- */ +#define PWM_OSS_OSSH0 (0x1u << 0) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 0 */ +#define PWM_OSS_OSSH1 (0x1u << 1) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 1 */ +#define PWM_OSS_OSSH2 (0x1u << 2) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 2 */ +#define PWM_OSS_OSSH3 (0x1u << 3) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 3 */ +#define PWM_OSS_OSSH4 (0x1u << 4) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 4 */ +#define PWM_OSS_OSSH5 (0x1u << 5) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 5 */ +#define PWM_OSS_OSSH6 (0x1u << 6) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 6 */ +#define PWM_OSS_OSSH7 (0x1u << 7) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 7 */ +#define PWM_OSS_OSSL0 (0x1u << 16) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 0 */ +#define PWM_OSS_OSSL1 (0x1u << 17) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 1 */ +#define PWM_OSS_OSSL2 (0x1u << 18) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 2 */ +#define PWM_OSS_OSSL3 (0x1u << 19) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 3 */ +#define PWM_OSS_OSSL4 (0x1u << 20) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 4 */ +#define PWM_OSS_OSSL5 (0x1u << 21) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 5 */ +#define PWM_OSS_OSSL6 (0x1u << 22) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 6 */ +#define PWM_OSS_OSSL7 (0x1u << 23) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 7 */ +/* -------- PWM_OSC : (PWM Offset: 0x50) PWM Output Selection Clear Register -------- */ +#define PWM_OSC_OSCH0 (0x1u << 0) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 0 */ +#define PWM_OSC_OSCH1 (0x1u << 1) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 1 */ +#define PWM_OSC_OSCH2 (0x1u << 2) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 2 */ +#define PWM_OSC_OSCH3 (0x1u << 3) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 3 */ +#define PWM_OSC_OSCH4 (0x1u << 4) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 4 */ +#define PWM_OSC_OSCH5 (0x1u << 5) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 5 */ +#define PWM_OSC_OSCH6 (0x1u << 6) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 6 */ +#define PWM_OSC_OSCH7 (0x1u << 7) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 7 */ +#define PWM_OSC_OSCL0 (0x1u << 16) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 0 */ +#define PWM_OSC_OSCL1 (0x1u << 17) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 1 */ +#define PWM_OSC_OSCL2 (0x1u << 18) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 2 */ +#define PWM_OSC_OSCL3 (0x1u << 19) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 3 */ +#define PWM_OSC_OSCL4 (0x1u << 20) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 4 */ +#define PWM_OSC_OSCL5 (0x1u << 21) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 5 */ +#define PWM_OSC_OSCL6 (0x1u << 22) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 6 */ +#define PWM_OSC_OSCL7 (0x1u << 23) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 7 */ +/* -------- PWM_OSSUPD : (PWM Offset: 0x54) PWM Output Selection Set Update Register -------- */ +#define PWM_OSSUPD_OSSUPH0 (0x1u << 0) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 0 */ +#define PWM_OSSUPD_OSSUPH1 (0x1u << 1) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 1 */ +#define PWM_OSSUPD_OSSUPH2 (0x1u << 2) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 2 */ +#define PWM_OSSUPD_OSSUPH3 (0x1u << 3) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 3 */ +#define PWM_OSSUPD_OSSUPH4 (0x1u << 4) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 4 */ +#define PWM_OSSUPD_OSSUPH5 (0x1u << 5) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 5 */ +#define PWM_OSSUPD_OSSUPH6 (0x1u << 6) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 6 */ +#define PWM_OSSUPD_OSSUPH7 (0x1u << 7) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 7 */ +#define PWM_OSSUPD_OSSUPL0 (0x1u << 16) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 0 */ +#define PWM_OSSUPD_OSSUPL1 (0x1u << 17) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 1 */ +#define PWM_OSSUPD_OSSUPL2 (0x1u << 18) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 2 */ +#define PWM_OSSUPD_OSSUPL3 (0x1u << 19) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 3 */ +#define PWM_OSSUPD_OSSUPL4 (0x1u << 20) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 4 */ +#define PWM_OSSUPD_OSSUPL5 (0x1u << 21) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 5 */ +#define PWM_OSSUPD_OSSUPL6 (0x1u << 22) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 6 */ +#define PWM_OSSUPD_OSSUPL7 (0x1u << 23) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 7 */ +/* -------- PWM_OSCUPD : (PWM Offset: 0x58) PWM Output Selection Clear Update Register -------- */ +#define PWM_OSCUPD_OSCUPH0 (0x1u << 0) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 0 */ +#define PWM_OSCUPD_OSCUPH1 (0x1u << 1) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 1 */ +#define PWM_OSCUPD_OSCUPH2 (0x1u << 2) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 2 */ +#define PWM_OSCUPD_OSCUPH3 (0x1u << 3) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 3 */ +#define PWM_OSCUPD_OSCUPH4 (0x1u << 4) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 4 */ +#define PWM_OSCUPD_OSCUPH5 (0x1u << 5) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 5 */ +#define PWM_OSCUPD_OSCUPH6 (0x1u << 6) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 6 */ +#define PWM_OSCUPD_OSCUPH7 (0x1u << 7) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 7 */ +#define PWM_OSCUPD_OSCUPL0 (0x1u << 16) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 0 */ +#define PWM_OSCUPD_OSCUPL1 (0x1u << 17) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 1 */ +#define PWM_OSCUPD_OSCUPL2 (0x1u << 18) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 2 */ +#define PWM_OSCUPD_OSCUPL3 (0x1u << 19) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 3 */ +#define PWM_OSCUPD_OSCUPL4 (0x1u << 20) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 4 */ +#define PWM_OSCUPD_OSCUPL5 (0x1u << 21) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 5 */ +#define PWM_OSCUPD_OSCUPDL6 (0x1u << 22) /**< \brief (PWM_OSCUPD) */ +#define PWM_OSCUPD_OSCUPL7 (0x1u << 23) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 7 */ +/* -------- PWM_FMR : (PWM Offset: 0x5C) PWM Fault Mode Register -------- */ +#define PWM_FMR_FPOL_Pos 0 +#define PWM_FMR_FPOL_Msk (0xffu << PWM_FMR_FPOL_Pos) /**< \brief (PWM_FMR) Fault Polarity (fault input bit varies from 0 to 5) */ +#define PWM_FMR_FPOL(value) ((PWM_FMR_FPOL_Msk & ((value) << PWM_FMR_FPOL_Pos))) +#define PWM_FMR_FMOD_Pos 8 +#define PWM_FMR_FMOD_Msk (0xffu << PWM_FMR_FMOD_Pos) /**< \brief (PWM_FMR) Fault Activation Mode (fault input bit varies from 0 to 5) */ +#define PWM_FMR_FMOD(value) ((PWM_FMR_FMOD_Msk & ((value) << PWM_FMR_FMOD_Pos))) +#define PWM_FMR_FFIL_Pos 16 +#define PWM_FMR_FFIL_Msk (0xffu << PWM_FMR_FFIL_Pos) /**< \brief (PWM_FMR) Fault Filtering (fault input bit varies from 0 to 5) */ +#define PWM_FMR_FFIL(value) ((PWM_FMR_FFIL_Msk & ((value) << PWM_FMR_FFIL_Pos))) +/* -------- PWM_FSR : (PWM Offset: 0x60) PWM Fault Status Register -------- */ +#define PWM_FSR_FIV_Pos 0 +#define PWM_FSR_FIV_Msk (0xffu << PWM_FSR_FIV_Pos) /**< \brief (PWM_FSR) Fault Input Value (fault input bit varies from 0 to 5) */ +#define PWM_FSR_FS_Pos 8 +#define PWM_FSR_FS_Msk (0xffu << PWM_FSR_FS_Pos) /**< \brief (PWM_FSR) Fault Status (fault input bit varies from 0 to 5) */ +/* -------- PWM_FCR : (PWM Offset: 0x64) PWM Fault Clear Register -------- */ +#define PWM_FCR_FCLR_Pos 0 +#define PWM_FCR_FCLR_Msk (0xffu << PWM_FCR_FCLR_Pos) /**< \brief (PWM_FCR) Fault Clear (fault input bit varies from 0 to 5) */ +#define PWM_FCR_FCLR(value) ((PWM_FCR_FCLR_Msk & ((value) << PWM_FCR_FCLR_Pos))) +/* -------- PWM_FPV : (PWM Offset: 0x68) PWM Fault Protection Value Register -------- */ +#define PWM_FPV_FPVH0 (0x1u << 0) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 0 */ +#define PWM_FPV_FPVH1 (0x1u << 1) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 1 */ +#define PWM_FPV_FPVH2 (0x1u << 2) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 2 */ +#define PWM_FPV_FPVH3 (0x1u << 3) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 3 */ +#define PWM_FPV_FPVH4 (0x1u << 4) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 4 */ +#define PWM_FPV_FPVH5 (0x1u << 5) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 5 */ +#define PWM_FPV_FPVH6 (0x1u << 6) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 6 */ +#define PWM_FPV_FPVH7 (0x1u << 7) /**< \brief (PWM_FPV) Fault Protection Value for PWMH output on channel 7 */ +#define PWM_FPV_FPVL0 (0x1u << 16) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 0 */ +#define PWM_FPV_FPVL1 (0x1u << 17) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 1 */ +#define PWM_FPV_FPVL2 (0x1u << 18) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 2 */ +#define PWM_FPV_FPVL3 (0x1u << 19) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 3 */ +#define PWM_FPV_FPVL4 (0x1u << 20) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 4 */ +#define PWM_FPV_FPVL5 (0x1u << 21) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 5 */ +#define PWM_FPV_FPVL6 (0x1u << 22) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 6 */ +#define PWM_FPV_FPVL7 (0x1u << 23) /**< \brief (PWM_FPV) Fault Protection Value for PWML output on channel 7 */ +/* -------- PWM_FPE1 : (PWM Offset: 0x6C) PWM Fault Protection Enable Register 1 -------- */ +#define PWM_FPE1_FPE0_Pos 0 +#define PWM_FPE1_FPE0_Msk (0xffu << PWM_FPE1_FPE0_Pos) /**< \brief (PWM_FPE1) Fault Protection Enable for channel 0 (fault input bit varies from 0 to 5) */ +#define PWM_FPE1_FPE0(value) ((PWM_FPE1_FPE0_Msk & ((value) << PWM_FPE1_FPE0_Pos))) +#define PWM_FPE1_FPE1_Pos 8 +#define PWM_FPE1_FPE1_Msk (0xffu << PWM_FPE1_FPE1_Pos) /**< \brief (PWM_FPE1) Fault Protection Enable for channel 1 (fault input bit varies from 0 to 5) */ +#define PWM_FPE1_FPE1(value) ((PWM_FPE1_FPE1_Msk & ((value) << PWM_FPE1_FPE1_Pos))) +#define PWM_FPE1_FPE2_Pos 16 +#define PWM_FPE1_FPE2_Msk (0xffu << PWM_FPE1_FPE2_Pos) /**< \brief (PWM_FPE1) Fault Protection Enable for channel 2 (fault input bit varies from 0 to 5) */ +#define PWM_FPE1_FPE2(value) ((PWM_FPE1_FPE2_Msk & ((value) << PWM_FPE1_FPE2_Pos))) +#define PWM_FPE1_FPE3_Pos 24 +#define PWM_FPE1_FPE3_Msk (0xffu << PWM_FPE1_FPE3_Pos) /**< \brief (PWM_FPE1) Fault Protection Enable for channel 3 (fault input bit varies from 0 to 5) */ +#define PWM_FPE1_FPE3(value) ((PWM_FPE1_FPE3_Msk & ((value) << PWM_FPE1_FPE3_Pos))) +/* -------- PWM_FPE2 : (PWM Offset: 0x70) PWM Fault Protection Enable Register 2 -------- */ +#define PWM_FPE2_FPE4_Pos 0 +#define PWM_FPE2_FPE4_Msk (0xffu << PWM_FPE2_FPE4_Pos) /**< \brief (PWM_FPE2) Fault Protection Enable for channel 4 (fault input bit varies from 0 to 5) */ +#define PWM_FPE2_FPE4(value) ((PWM_FPE2_FPE4_Msk & ((value) << PWM_FPE2_FPE4_Pos))) +#define PWM_FPE2_FPE5_Pos 8 +#define PWM_FPE2_FPE5_Msk (0xffu << PWM_FPE2_FPE5_Pos) /**< \brief (PWM_FPE2) Fault Protection Enable for channel 5 (fault input bit varies from 0 to 5) */ +#define PWM_FPE2_FPE5(value) ((PWM_FPE2_FPE5_Msk & ((value) << PWM_FPE2_FPE5_Pos))) +#define PWM_FPE2_FPE6_Pos 16 +#define PWM_FPE2_FPE6_Msk (0xffu << PWM_FPE2_FPE6_Pos) /**< \brief (PWM_FPE2) Fault Protection Enable for channel 6 (fault input bit varies from 0 to 5) */ +#define PWM_FPE2_FPE6(value) ((PWM_FPE2_FPE6_Msk & ((value) << PWM_FPE2_FPE6_Pos))) +#define PWM_FPE2_FPE7_Pos 24 +#define PWM_FPE2_FPE7_Msk (0xffu << PWM_FPE2_FPE7_Pos) /**< \brief (PWM_FPE2) Fault Protection Enable for channel 7 (fault input bit varies from 0 to 5) */ +#define PWM_FPE2_FPE7(value) ((PWM_FPE2_FPE7_Msk & ((value) << PWM_FPE2_FPE7_Pos))) +/* -------- PWM_ELMR[2] : (PWM Offset: 0x7C) PWM Event Line 0 Mode Register -------- */ +#define PWM_ELMR_CSEL0 (0x1u << 0) /**< \brief (PWM_ELMR[2]) Comparison 0 Selection */ +#define PWM_ELMR_CSEL1 (0x1u << 1) /**< \brief (PWM_ELMR[2]) Comparison 1 Selection */ +#define PWM_ELMR_CSEL2 (0x1u << 2) /**< \brief (PWM_ELMR[2]) Comparison 2 Selection */ +#define PWM_ELMR_CSEL3 (0x1u << 3) /**< \brief (PWM_ELMR[2]) Comparison 3 Selection */ +#define PWM_ELMR_CSEL4 (0x1u << 4) /**< \brief (PWM_ELMR[2]) Comparison 4 Selection */ +#define PWM_ELMR_CSEL5 (0x1u << 5) /**< \brief (PWM_ELMR[2]) Comparison 5 Selection */ +#define PWM_ELMR_CSEL6 (0x1u << 6) /**< \brief (PWM_ELMR[2]) Comparison 6 Selection */ +#define PWM_ELMR_CSEL7 (0x1u << 7) /**< \brief (PWM_ELMR[2]) Comparison 7 Selection */ +/* -------- PWM_SMMR : (PWM Offset: 0xB0) PWM Stepper Motor Mode Register -------- */ +#define PWM_SMMR_GCEN0 (0x1u << 0) /**< \brief (PWM_SMMR) Gray Count ENable */ +#define PWM_SMMR_GCEN1 (0x1u << 1) /**< \brief (PWM_SMMR) Gray Count ENable */ +#define PWM_SMMR_GCEN2 (0x1u << 2) /**< \brief (PWM_SMMR) Gray Count ENable */ +#define PWM_SMMR_GCEN3 (0x1u << 3) /**< \brief (PWM_SMMR) Gray Count ENable */ +#define PWM_SMMR_DOWN0 (0x1u << 16) /**< \brief (PWM_SMMR) DOWN Count */ +#define PWM_SMMR_DOWN1 (0x1u << 17) /**< \brief (PWM_SMMR) DOWN Count */ +#define PWM_SMMR_DOWN2 (0x1u << 18) /**< \brief (PWM_SMMR) DOWN Count */ +#define PWM_SMMR_DOWN3 (0x1u << 19) /**< \brief (PWM_SMMR) DOWN Count */ +/* -------- PWM_WPCR : (PWM Offset: 0xE4) PWM Write Protect Control Register -------- */ +#define PWM_WPCR_WPCMD_Pos 0 +#define PWM_WPCR_WPCMD_Msk (0x3u << PWM_WPCR_WPCMD_Pos) /**< \brief (PWM_WPCR) Write Protect Command */ +#define PWM_WPCR_WPCMD(value) ((PWM_WPCR_WPCMD_Msk & ((value) << PWM_WPCR_WPCMD_Pos))) +#define PWM_WPCR_WPRG0 (0x1u << 2) /**< \brief (PWM_WPCR) Write Protect Register Group 0 */ +#define PWM_WPCR_WPRG1 (0x1u << 3) /**< \brief (PWM_WPCR) Write Protect Register Group 1 */ +#define PWM_WPCR_WPRG2 (0x1u << 4) /**< \brief (PWM_WPCR) Write Protect Register Group 2 */ +#define PWM_WPCR_WPRG3 (0x1u << 5) /**< \brief (PWM_WPCR) Write Protect Register Group 3 */ +#define PWM_WPCR_WPRG4 (0x1u << 6) /**< \brief (PWM_WPCR) Write Protect Register Group 4 */ +#define PWM_WPCR_WPRG5 (0x1u << 7) /**< \brief (PWM_WPCR) Write Protect Register Group 5 */ +#define PWM_WPCR_WPKEY_Pos 8 +#define PWM_WPCR_WPKEY_Msk (0xffffffu << PWM_WPCR_WPKEY_Pos) /**< \brief (PWM_WPCR) Write Protect Key */ +#define PWM_WPCR_WPKEY(value) ((PWM_WPCR_WPKEY_Msk & ((value) << PWM_WPCR_WPKEY_Pos))) +/* -------- PWM_WPSR : (PWM Offset: 0xE8) PWM Write Protect Status Register -------- */ +#define PWM_WPSR_WPSWS0 (0x1u << 0) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS1 (0x1u << 1) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS2 (0x1u << 2) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS3 (0x1u << 3) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS4 (0x1u << 4) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS5 (0x1u << 5) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPVS (0x1u << 7) /**< \brief (PWM_WPSR) Write Protect Violation Status */ +#define PWM_WPSR_WPHWS0 (0x1u << 8) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS1 (0x1u << 9) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS2 (0x1u << 10) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS3 (0x1u << 11) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS4 (0x1u << 12) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS5 (0x1u << 13) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPVSRC_Pos 16 +#define PWM_WPSR_WPVSRC_Msk (0xffffu << PWM_WPSR_WPVSRC_Pos) /**< \brief (PWM_WPSR) Write Protect Violation Source */ +/* -------- PWM_RPR : (PWM Offset: 0x100) Receive Pointer Register -------- */ +#define PWM_RPR_RXPTR_Pos 0 +#define PWM_RPR_RXPTR_Msk (0xffffffffu << PWM_RPR_RXPTR_Pos) /**< \brief (PWM_RPR) Receive Pointer Register */ +#define PWM_RPR_RXPTR(value) ((PWM_RPR_RXPTR_Msk & ((value) << PWM_RPR_RXPTR_Pos))) +/* -------- PWM_RCR : (PWM Offset: 0x104) Receive Counter Register -------- */ +#define PWM_RCR_RXCTR_Pos 0 +#define PWM_RCR_RXCTR_Msk (0xffffu << PWM_RCR_RXCTR_Pos) /**< \brief (PWM_RCR) Receive Counter Register */ +#define PWM_RCR_RXCTR(value) ((PWM_RCR_RXCTR_Msk & ((value) << PWM_RCR_RXCTR_Pos))) +/* -------- PWM_TPR : (PWM Offset: 0x108) Transmit Pointer Register -------- */ +#define PWM_TPR_TXPTR_Pos 0 +#define PWM_TPR_TXPTR_Msk (0xffffffffu << PWM_TPR_TXPTR_Pos) /**< \brief (PWM_TPR) Transmit Counter Register */ +#define PWM_TPR_TXPTR(value) ((PWM_TPR_TXPTR_Msk & ((value) << PWM_TPR_TXPTR_Pos))) +/* -------- PWM_TCR : (PWM Offset: 0x10C) Transmit Counter Register -------- */ +#define PWM_TCR_TXCTR_Pos 0 +#define PWM_TCR_TXCTR_Msk (0xffffu << PWM_TCR_TXCTR_Pos) /**< \brief (PWM_TCR) Transmit Counter Register */ +#define PWM_TCR_TXCTR(value) ((PWM_TCR_TXCTR_Msk & ((value) << PWM_TCR_TXCTR_Pos))) +/* -------- PWM_RNPR : (PWM Offset: 0x110) Receive Next Pointer Register -------- */ +#define PWM_RNPR_RXNPTR_Pos 0 +#define PWM_RNPR_RXNPTR_Msk (0xffffffffu << PWM_RNPR_RXNPTR_Pos) /**< \brief (PWM_RNPR) Receive Next Pointer */ +#define PWM_RNPR_RXNPTR(value) ((PWM_RNPR_RXNPTR_Msk & ((value) << PWM_RNPR_RXNPTR_Pos))) +/* -------- PWM_RNCR : (PWM Offset: 0x114) Receive Next Counter Register -------- */ +#define PWM_RNCR_RXNCTR_Pos 0 +#define PWM_RNCR_RXNCTR_Msk (0xffffu << PWM_RNCR_RXNCTR_Pos) /**< \brief (PWM_RNCR) Receive Next Counter */ +#define PWM_RNCR_RXNCTR(value) ((PWM_RNCR_RXNCTR_Msk & ((value) << PWM_RNCR_RXNCTR_Pos))) +/* -------- PWM_TNPR : (PWM Offset: 0x118) Transmit Next Pointer Register -------- */ +#define PWM_TNPR_TXNPTR_Pos 0 +#define PWM_TNPR_TXNPTR_Msk (0xffffffffu << PWM_TNPR_TXNPTR_Pos) /**< \brief (PWM_TNPR) Transmit Next Pointer */ +#define PWM_TNPR_TXNPTR(value) ((PWM_TNPR_TXNPTR_Msk & ((value) << PWM_TNPR_TXNPTR_Pos))) +/* -------- PWM_TNCR : (PWM Offset: 0x11C) Transmit Next Counter Register -------- */ +#define PWM_TNCR_TXNCTR_Pos 0 +#define PWM_TNCR_TXNCTR_Msk (0xffffu << PWM_TNCR_TXNCTR_Pos) /**< \brief (PWM_TNCR) Transmit Counter Next */ +#define PWM_TNCR_TXNCTR(value) ((PWM_TNCR_TXNCTR_Msk & ((value) << PWM_TNCR_TXNCTR_Pos))) +/* -------- PWM_PTCR : (PWM Offset: 0x120) Transfer Control Register -------- */ +#define PWM_PTCR_RXTEN (0x1u << 0) /**< \brief (PWM_PTCR) Receiver Transfer Enable */ +#define PWM_PTCR_RXTDIS (0x1u << 1) /**< \brief (PWM_PTCR) Receiver Transfer Disable */ +#define PWM_PTCR_TXTEN (0x1u << 8) /**< \brief (PWM_PTCR) Transmitter Transfer Enable */ +#define PWM_PTCR_TXTDIS (0x1u << 9) /**< \brief (PWM_PTCR) Transmitter Transfer Disable */ +/* -------- PWM_PTSR : (PWM Offset: 0x124) Transfer Status Register -------- */ +#define PWM_PTSR_RXTEN (0x1u << 0) /**< \brief (PWM_PTSR) Receiver Transfer Enable */ +#define PWM_PTSR_TXTEN (0x1u << 8) /**< \brief (PWM_PTSR) Transmitter Transfer Enable */ +/* -------- PWM_CMPV : (PWM Offset: N/A) PWM Comparison 0 Value Register -------- */ +#define PWM_CMPV_CV_Pos 0 +#define PWM_CMPV_CV_Msk (0xffffffu << PWM_CMPV_CV_Pos) /**< \brief (PWM_CMPV) Comparison x Value */ +#define PWM_CMPV_CV(value) ((PWM_CMPV_CV_Msk & ((value) << PWM_CMPV_CV_Pos))) +#define PWM_CMPV_CVM (0x1u << 24) /**< \brief (PWM_CMPV) Comparison x Value Mode */ +/* -------- PWM_CMPVUPD : (PWM Offset: N/A) PWM Comparison 0 Value Update Register -------- */ +#define PWM_CMPVUPD_CVUPD_Pos 0 +#define PWM_CMPVUPD_CVUPD_Msk (0xffffffu << PWM_CMPVUPD_CVUPD_Pos) /**< \brief (PWM_CMPVUPD) Comparison x Value Update */ +#define PWM_CMPVUPD_CVUPD(value) ((PWM_CMPVUPD_CVUPD_Msk & ((value) << PWM_CMPVUPD_CVUPD_Pos))) +#define PWM_CMPVUPD_CVMUPD (0x1u << 24) /**< \brief (PWM_CMPVUPD) Comparison x Value Mode Update */ +/* -------- PWM_CMPM : (PWM Offset: N/A) PWM Comparison 0 Mode Register -------- */ +#define PWM_CMPM_CEN (0x1u << 0) /**< \brief (PWM_CMPM) Comparison x Enable */ +#define PWM_CMPM_CTR_Pos 4 +#define PWM_CMPM_CTR_Msk (0xfu << PWM_CMPM_CTR_Pos) /**< \brief (PWM_CMPM) Comparison x Trigger */ +#define PWM_CMPM_CTR(value) ((PWM_CMPM_CTR_Msk & ((value) << PWM_CMPM_CTR_Pos))) +#define PWM_CMPM_CPR_Pos 8 +#define PWM_CMPM_CPR_Msk (0xfu << PWM_CMPM_CPR_Pos) /**< \brief (PWM_CMPM) Comparison x Period */ +#define PWM_CMPM_CPR(value) ((PWM_CMPM_CPR_Msk & ((value) << PWM_CMPM_CPR_Pos))) +#define PWM_CMPM_CPRCNT_Pos 12 +#define PWM_CMPM_CPRCNT_Msk (0xfu << PWM_CMPM_CPRCNT_Pos) /**< \brief (PWM_CMPM) Comparison x Period Counter */ +#define PWM_CMPM_CPRCNT(value) ((PWM_CMPM_CPRCNT_Msk & ((value) << PWM_CMPM_CPRCNT_Pos))) +#define PWM_CMPM_CUPR_Pos 16 +#define PWM_CMPM_CUPR_Msk (0xfu << PWM_CMPM_CUPR_Pos) /**< \brief (PWM_CMPM) Comparison x Update Period */ +#define PWM_CMPM_CUPR(value) ((PWM_CMPM_CUPR_Msk & ((value) << PWM_CMPM_CUPR_Pos))) +#define PWM_CMPM_CUPRCNT_Pos 20 +#define PWM_CMPM_CUPRCNT_Msk (0xfu << PWM_CMPM_CUPRCNT_Pos) /**< \brief (PWM_CMPM) Comparison x Update Period Counter */ +#define PWM_CMPM_CUPRCNT(value) ((PWM_CMPM_CUPRCNT_Msk & ((value) << PWM_CMPM_CUPRCNT_Pos))) +/* -------- PWM_CMPMUPD : (PWM Offset: N/A) PWM Comparison 0 Mode Update Register -------- */ +#define PWM_CMPMUPD_CENUPD (0x1u << 0) /**< \brief (PWM_CMPMUPD) Comparison x Enable Update */ +#define PWM_CMPMUPD_CTRUPD_Pos 4 +#define PWM_CMPMUPD_CTRUPD_Msk (0xfu << PWM_CMPMUPD_CTRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Trigger Update */ +#define PWM_CMPMUPD_CTRUPD(value) ((PWM_CMPMUPD_CTRUPD_Msk & ((value) << PWM_CMPMUPD_CTRUPD_Pos))) +#define PWM_CMPMUPD_CPRUPD_Pos 8 +#define PWM_CMPMUPD_CPRUPD_Msk (0xfu << PWM_CMPMUPD_CPRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Period Update */ +#define PWM_CMPMUPD_CPRUPD(value) ((PWM_CMPMUPD_CPRUPD_Msk & ((value) << PWM_CMPMUPD_CPRUPD_Pos))) +#define PWM_CMPMUPD_CUPRUPD_Pos 16 +#define PWM_CMPMUPD_CUPRUPD_Msk (0xfu << PWM_CMPMUPD_CUPRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Update Period Update */ +#define PWM_CMPMUPD_CUPRUPD(value) ((PWM_CMPMUPD_CUPRUPD_Msk & ((value) << PWM_CMPMUPD_CUPRUPD_Pos))) +/* -------- PWM_CMR : (PWM Offset: N/A) PWM Channel Mode Register -------- */ +#define PWM_CMR_CPRE_Pos 0 +#define PWM_CMR_CPRE_Msk (0xfu << PWM_CMR_CPRE_Pos) /**< \brief (PWM_CMR) Channel Pre-scaler */ +#define PWM_CMR_CPRE_MCK (0x0u << 0) /**< \brief (PWM_CMR) Master clock */ +#define PWM_CMR_CPRE_MCK_DIV_2 (0x1u << 0) /**< \brief (PWM_CMR) Master clock/2 */ +#define PWM_CMR_CPRE_MCK_DIV_4 (0x2u << 0) /**< \brief (PWM_CMR) Master clock/4 */ +#define PWM_CMR_CPRE_MCK_DIV_8 (0x3u << 0) /**< \brief (PWM_CMR) Master clock/8 */ +#define PWM_CMR_CPRE_MCK_DIV_16 (0x4u << 0) /**< \brief (PWM_CMR) Master clock/16 */ +#define PWM_CMR_CPRE_MCK_DIV_32 (0x5u << 0) /**< \brief (PWM_CMR) Master clock/32 */ +#define PWM_CMR_CPRE_MCK_DIV_64 (0x6u << 0) /**< \brief (PWM_CMR) Master clock/64 */ +#define PWM_CMR_CPRE_MCK_DIV_128 (0x7u << 0) /**< \brief (PWM_CMR) Master clock/128 */ +#define PWM_CMR_CPRE_MCK_DIV_256 (0x8u << 0) /**< \brief (PWM_CMR) Master clock/256 */ +#define PWM_CMR_CPRE_MCK_DIV_512 (0x9u << 0) /**< \brief (PWM_CMR) Master clock/512 */ +#define PWM_CMR_CPRE_MCK_DIV_1024 (0xAu << 0) /**< \brief (PWM_CMR) Master clock/1024 */ +#define PWM_CMR_CPRE_CLKA (0xBu << 0) /**< \brief (PWM_CMR) Clock A */ +#define PWM_CMR_CPRE_CLKB (0xCu << 0) /**< \brief (PWM_CMR) Clock B */ +#define PWM_CMR_CALG (0x1u << 8) /**< \brief (PWM_CMR) Channel Alignment */ +#define PWM_CMR_CPOL (0x1u << 9) /**< \brief (PWM_CMR) Channel Polarity */ +#define PWM_CMR_CES (0x1u << 10) /**< \brief (PWM_CMR) Counter Event Selection */ +#define PWM_CMR_DTE (0x1u << 16) /**< \brief (PWM_CMR) Dead-Time Generator Enable */ +#define PWM_CMR_DTHI (0x1u << 17) /**< \brief (PWM_CMR) Dead-Time PWMHx Output Inverted */ +#define PWM_CMR_DTLI (0x1u << 18) /**< \brief (PWM_CMR) Dead-Time PWMLx Output Inverted */ +/* -------- PWM_CDTY : (PWM Offset: N/A) PWM Channel Duty Cycle Register -------- */ +#define PWM_CDTY_CDTY_Pos 0 +#define PWM_CDTY_CDTY_Msk (0xffffffu << PWM_CDTY_CDTY_Pos) /**< \brief (PWM_CDTY) Channel Duty-Cycle */ +#define PWM_CDTY_CDTY(value) ((PWM_CDTY_CDTY_Msk & ((value) << PWM_CDTY_CDTY_Pos))) +/* -------- PWM_CDTYUPD : (PWM Offset: N/A) PWM Channel Duty Cycle Update Register -------- */ +#define PWM_CDTYUPD_CDTYUPD_Pos 0 +#define PWM_CDTYUPD_CDTYUPD_Msk (0xffffffu << PWM_CDTYUPD_CDTYUPD_Pos) /**< \brief (PWM_CDTYUPD) Channel Duty-Cycle Update */ +#define PWM_CDTYUPD_CDTYUPD(value) ((PWM_CDTYUPD_CDTYUPD_Msk & ((value) << PWM_CDTYUPD_CDTYUPD_Pos))) +/* -------- PWM_CPRD : (PWM Offset: N/A) PWM Channel Period Register -------- */ +#define PWM_CPRD_CPRD_Pos 0 +#define PWM_CPRD_CPRD_Msk (0xffffffu << PWM_CPRD_CPRD_Pos) /**< \brief (PWM_CPRD) Channel Period */ +#define PWM_CPRD_CPRD(value) ((PWM_CPRD_CPRD_Msk & ((value) << PWM_CPRD_CPRD_Pos))) +/* -------- PWM_CPRDUPD : (PWM Offset: N/A) PWM Channel Period Update Register -------- */ +#define PWM_CPRDUPD_CPRDUPD_Pos 0 +#define PWM_CPRDUPD_CPRDUPD_Msk (0xffffffu << PWM_CPRDUPD_CPRDUPD_Pos) /**< \brief (PWM_CPRDUPD) Channel Period Update */ +#define PWM_CPRDUPD_CPRDUPD(value) ((PWM_CPRDUPD_CPRDUPD_Msk & ((value) << PWM_CPRDUPD_CPRDUPD_Pos))) +/* -------- PWM_CCNT : (PWM Offset: N/A) PWM Channel Counter Register -------- */ +#define PWM_CCNT_CNT_Pos 0 +#define PWM_CCNT_CNT_Msk (0xffffffu << PWM_CCNT_CNT_Pos) /**< \brief (PWM_CCNT) Channel Counter Register */ +/* -------- PWM_DT : (PWM Offset: N/A) PWM Channel Dead Time Register -------- */ +#define PWM_DT_DTH_Pos 0 +#define PWM_DT_DTH_Msk (0xffffu << PWM_DT_DTH_Pos) /**< \brief (PWM_DT) Dead-Time Value for PWMHx Output */ +#define PWM_DT_DTH(value) ((PWM_DT_DTH_Msk & ((value) << PWM_DT_DTH_Pos))) +#define PWM_DT_DTL_Pos 16 +#define PWM_DT_DTL_Msk (0xffffu << PWM_DT_DTL_Pos) /**< \brief (PWM_DT) Dead-Time Value for PWMLx Output */ +#define PWM_DT_DTL(value) ((PWM_DT_DTL_Msk & ((value) << PWM_DT_DTL_Pos))) +/* -------- PWM_DTUPD : (PWM Offset: N/A) PWM Channel Dead Time Update Register -------- */ +#define PWM_DTUPD_DTHUPD_Pos 0 +#define PWM_DTUPD_DTHUPD_Msk (0xffffu << PWM_DTUPD_DTHUPD_Pos) /**< \brief (PWM_DTUPD) Dead-Time Value Update for PWMHx Output */ +#define PWM_DTUPD_DTHUPD(value) ((PWM_DTUPD_DTHUPD_Msk & ((value) << PWM_DTUPD_DTHUPD_Pos))) +#define PWM_DTUPD_DTLUPD_Pos 16 +#define PWM_DTUPD_DTLUPD_Msk (0xffffu << PWM_DTUPD_DTLUPD_Pos) /**< \brief (PWM_DTUPD) Dead-Time Value Update for PWMLx Output */ +#define PWM_DTUPD_DTLUPD(value) ((PWM_DTUPD_DTLUPD_Msk & ((value) << PWM_DTUPD_DTLUPD_Pos))) + +/*@}*/ + + +#endif /* _SAM3XA_PWM_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_rstc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_rstc.h new file mode 100644 index 000000000..225a768b4 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_rstc.h @@ -0,0 +1,73 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_RSTC_COMPONENT_ +#define _SAM3XA_RSTC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Reset Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_RSTC Reset Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Rstc hardware registers */ +typedef struct { + WoReg RSTC_CR; /**< \brief (Rstc Offset: 0x00) Control Register */ + RoReg RSTC_SR; /**< \brief (Rstc Offset: 0x04) Status Register */ + RwReg RSTC_MR; /**< \brief (Rstc Offset: 0x08) Mode Register */ +} Rstc; +#endif /* __ASSEMBLY__ */ +/* -------- RSTC_CR : (RSTC Offset: 0x00) Control Register -------- */ +#define RSTC_CR_PROCRST (0x1u << 0) /**< \brief (RSTC_CR) Processor Reset */ +#define RSTC_CR_PERRST (0x1u << 2) /**< \brief (RSTC_CR) Peripheral Reset */ +#define RSTC_CR_EXTRST (0x1u << 3) /**< \brief (RSTC_CR) External Reset */ +#define RSTC_CR_KEY_Pos 24 +#define RSTC_CR_KEY_Msk (0xffu << RSTC_CR_KEY_Pos) /**< \brief (RSTC_CR) Password */ +#define RSTC_CR_KEY(value) ((RSTC_CR_KEY_Msk & ((value) << RSTC_CR_KEY_Pos))) +/* -------- RSTC_SR : (RSTC Offset: 0x04) Status Register -------- */ +#define RSTC_SR_URSTS (0x1u << 0) /**< \brief (RSTC_SR) User Reset Status */ +#define RSTC_SR_RSTTYP_Pos 8 +#define RSTC_SR_RSTTYP_Msk (0x7u << RSTC_SR_RSTTYP_Pos) /**< \brief (RSTC_SR) Reset Type */ +#define RSTC_SR_NRSTL (0x1u << 16) /**< \brief (RSTC_SR) NRST Pin Level */ +#define RSTC_SR_SRCMP (0x1u << 17) /**< \brief (RSTC_SR) Software Reset Command in Progress */ +/* -------- RSTC_MR : (RSTC Offset: 0x08) Mode Register -------- */ +#define RSTC_MR_URSTEN (0x1u << 0) /**< \brief (RSTC_MR) User Reset Enable */ +#define RSTC_MR_URSTIEN (0x1u << 4) /**< \brief (RSTC_MR) User Reset Interrupt Enable */ +#define RSTC_MR_ERSTL_Pos 8 +#define RSTC_MR_ERSTL_Msk (0xfu << RSTC_MR_ERSTL_Pos) /**< \brief (RSTC_MR) External Reset Length */ +#define RSTC_MR_ERSTL(value) ((RSTC_MR_ERSTL_Msk & ((value) << RSTC_MR_ERSTL_Pos))) +#define RSTC_MR_KEY_Pos 24 +#define RSTC_MR_KEY_Msk (0xffu << RSTC_MR_KEY_Pos) /**< \brief (RSTC_MR) Password */ +#define RSTC_MR_KEY(value) ((RSTC_MR_KEY_Msk & ((value) << RSTC_MR_KEY_Pos))) + +/*@}*/ + + +#endif /* _SAM3XA_RSTC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_rtc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_rtc.h new file mode 100644 index 000000000..0f29c6c18 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_rtc.h @@ -0,0 +1,168 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_RTC_COMPONENT_ +#define _SAM3XA_RTC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Real-time Clock */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_RTC Real-time Clock */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Rtc hardware registers */ +typedef struct { + RwReg RTC_CR; /**< \brief (Rtc Offset: 0x00) Control Register */ + RwReg RTC_MR; /**< \brief (Rtc Offset: 0x04) Mode Register */ + RwReg RTC_TIMR; /**< \brief (Rtc Offset: 0x08) Time Register */ + RwReg RTC_CALR; /**< \brief (Rtc Offset: 0x0C) Calendar Register */ + RwReg RTC_TIMALR; /**< \brief (Rtc Offset: 0x10) Time Alarm Register */ + RwReg RTC_CALALR; /**< \brief (Rtc Offset: 0x14) Calendar Alarm Register */ + RoReg RTC_SR; /**< \brief (Rtc Offset: 0x18) Status Register */ + WoReg RTC_SCCR; /**< \brief (Rtc Offset: 0x1C) Status Clear Command Register */ + WoReg RTC_IER; /**< \brief (Rtc Offset: 0x20) Interrupt Enable Register */ + WoReg RTC_IDR; /**< \brief (Rtc Offset: 0x24) Interrupt Disable Register */ + RoReg RTC_IMR; /**< \brief (Rtc Offset: 0x28) Interrupt Mask Register */ + RoReg RTC_VER; /**< \brief (Rtc Offset: 0x2C) Valid Entry Register */ + RoReg Reserved1[45]; + RwReg RTC_WPMR; /**< \brief (Rtc Offset: 0xE4) Write Protect Mode Register */ +} Rtc; +#endif /* __ASSEMBLY__ */ +/* -------- RTC_CR : (RTC Offset: 0x00) Control Register -------- */ +#define RTC_CR_UPDTIM (0x1u << 0) /**< \brief (RTC_CR) Update Request Time Register */ +#define RTC_CR_UPDCAL (0x1u << 1) /**< \brief (RTC_CR) Update Request Calendar Register */ +#define RTC_CR_TIMEVSEL_Pos 8 +#define RTC_CR_TIMEVSEL_Msk (0x3u << RTC_CR_TIMEVSEL_Pos) /**< \brief (RTC_CR) Time Event Selection */ +#define RTC_CR_TIMEVSEL_MINUTE (0x0u << 8) /**< \brief (RTC_CR) Minute change */ +#define RTC_CR_TIMEVSEL_HOUR (0x1u << 8) /**< \brief (RTC_CR) Hour change */ +#define RTC_CR_TIMEVSEL_MIDNIGHT (0x2u << 8) /**< \brief (RTC_CR) Every day at midnight */ +#define RTC_CR_TIMEVSEL_NOON (0x3u << 8) /**< \brief (RTC_CR) Every day at noon */ +#define RTC_CR_CALEVSEL_Pos 16 +#define RTC_CR_CALEVSEL_Msk (0x3u << RTC_CR_CALEVSEL_Pos) /**< \brief (RTC_CR) Calendar Event Selection */ +#define RTC_CR_CALEVSEL_WEEK (0x0u << 16) /**< \brief (RTC_CR) Week change (every Monday at time 00:00:00) */ +#define RTC_CR_CALEVSEL_MONTH (0x1u << 16) /**< \brief (RTC_CR) Month change (every 01 of each month at time 00:00:00) */ +#define RTC_CR_CALEVSEL_YEAR (0x2u << 16) /**< \brief (RTC_CR) Year change (every January 1 at time 00:00:00) */ +/* -------- RTC_MR : (RTC Offset: 0x04) Mode Register -------- */ +#define RTC_MR_HRMOD (0x1u << 0) /**< \brief (RTC_MR) 12-/24-hour Mode */ +/* -------- RTC_TIMR : (RTC Offset: 0x08) Time Register -------- */ +#define RTC_TIMR_SEC_Pos 0 +#define RTC_TIMR_SEC_Msk (0x7fu << RTC_TIMR_SEC_Pos) /**< \brief (RTC_TIMR) Current Second */ +#define RTC_TIMR_SEC(value) ((RTC_TIMR_SEC_Msk & ((value) << RTC_TIMR_SEC_Pos))) +#define RTC_TIMR_MIN_Pos 8 +#define RTC_TIMR_MIN_Msk (0x7fu << RTC_TIMR_MIN_Pos) /**< \brief (RTC_TIMR) Current Minute */ +#define RTC_TIMR_MIN(value) ((RTC_TIMR_MIN_Msk & ((value) << RTC_TIMR_MIN_Pos))) +#define RTC_TIMR_HOUR_Pos 16 +#define RTC_TIMR_HOUR_Msk (0x3fu << RTC_TIMR_HOUR_Pos) /**< \brief (RTC_TIMR) Current Hour */ +#define RTC_TIMR_HOUR(value) ((RTC_TIMR_HOUR_Msk & ((value) << RTC_TIMR_HOUR_Pos))) +#define RTC_TIMR_AMPM (0x1u << 22) /**< \brief (RTC_TIMR) Ante Meridiem Post Meridiem Indicator */ +/* -------- RTC_CALR : (RTC Offset: 0x0C) Calendar Register -------- */ +#define RTC_CALR_CENT_Pos 0 +#define RTC_CALR_CENT_Msk (0x7fu << RTC_CALR_CENT_Pos) /**< \brief (RTC_CALR) Current Century */ +#define RTC_CALR_CENT(value) ((RTC_CALR_CENT_Msk & ((value) << RTC_CALR_CENT_Pos))) +#define RTC_CALR_YEAR_Pos 8 +#define RTC_CALR_YEAR_Msk (0xffu << RTC_CALR_YEAR_Pos) /**< \brief (RTC_CALR) Current Year */ +#define RTC_CALR_YEAR(value) ((RTC_CALR_YEAR_Msk & ((value) << RTC_CALR_YEAR_Pos))) +#define RTC_CALR_MONTH_Pos 16 +#define RTC_CALR_MONTH_Msk (0x1fu << RTC_CALR_MONTH_Pos) /**< \brief (RTC_CALR) Current Month */ +#define RTC_CALR_MONTH(value) ((RTC_CALR_MONTH_Msk & ((value) << RTC_CALR_MONTH_Pos))) +#define RTC_CALR_DAY_Pos 21 +#define RTC_CALR_DAY_Msk (0x7u << RTC_CALR_DAY_Pos) /**< \brief (RTC_CALR) Current Day in Current Week */ +#define RTC_CALR_DAY(value) ((RTC_CALR_DAY_Msk & ((value) << RTC_CALR_DAY_Pos))) +#define RTC_CALR_DATE_Pos 24 +#define RTC_CALR_DATE_Msk (0x3fu << RTC_CALR_DATE_Pos) /**< \brief (RTC_CALR) Current Day in Current Month */ +#define RTC_CALR_DATE(value) ((RTC_CALR_DATE_Msk & ((value) << RTC_CALR_DATE_Pos))) +/* -------- RTC_TIMALR : (RTC Offset: 0x10) Time Alarm Register -------- */ +#define RTC_TIMALR_SEC_Pos 0 +#define RTC_TIMALR_SEC_Msk (0x7fu << RTC_TIMALR_SEC_Pos) /**< \brief (RTC_TIMALR) Second Alarm */ +#define RTC_TIMALR_SEC(value) ((RTC_TIMALR_SEC_Msk & ((value) << RTC_TIMALR_SEC_Pos))) +#define RTC_TIMALR_SECEN (0x1u << 7) /**< \brief (RTC_TIMALR) Second Alarm Enable */ +#define RTC_TIMALR_MIN_Pos 8 +#define RTC_TIMALR_MIN_Msk (0x7fu << RTC_TIMALR_MIN_Pos) /**< \brief (RTC_TIMALR) Minute Alarm */ +#define RTC_TIMALR_MIN(value) ((RTC_TIMALR_MIN_Msk & ((value) << RTC_TIMALR_MIN_Pos))) +#define RTC_TIMALR_MINEN (0x1u << 15) /**< \brief (RTC_TIMALR) Minute Alarm Enable */ +#define RTC_TIMALR_HOUR_Pos 16 +#define RTC_TIMALR_HOUR_Msk (0x3fu << RTC_TIMALR_HOUR_Pos) /**< \brief (RTC_TIMALR) Hour Alarm */ +#define RTC_TIMALR_HOUR(value) ((RTC_TIMALR_HOUR_Msk & ((value) << RTC_TIMALR_HOUR_Pos))) +#define RTC_TIMALR_AMPM (0x1u << 22) /**< \brief (RTC_TIMALR) AM/PM Indicator */ +#define RTC_TIMALR_HOUREN (0x1u << 23) /**< \brief (RTC_TIMALR) Hour Alarm Enable */ +/* -------- RTC_CALALR : (RTC Offset: 0x14) Calendar Alarm Register -------- */ +#define RTC_CALALR_MONTH_Pos 16 +#define RTC_CALALR_MONTH_Msk (0x1fu << RTC_CALALR_MONTH_Pos) /**< \brief (RTC_CALALR) Month Alarm */ +#define RTC_CALALR_MONTH(value) ((RTC_CALALR_MONTH_Msk & ((value) << RTC_CALALR_MONTH_Pos))) +#define RTC_CALALR_MTHEN (0x1u << 23) /**< \brief (RTC_CALALR) Month Alarm Enable */ +#define RTC_CALALR_DATE_Pos 24 +#define RTC_CALALR_DATE_Msk (0x3fu << RTC_CALALR_DATE_Pos) /**< \brief (RTC_CALALR) Date Alarm */ +#define RTC_CALALR_DATE(value) ((RTC_CALALR_DATE_Msk & ((value) << RTC_CALALR_DATE_Pos))) +#define RTC_CALALR_DATEEN (0x1u << 31) /**< \brief (RTC_CALALR) Date Alarm Enable */ +/* -------- RTC_SR : (RTC Offset: 0x18) Status Register -------- */ +#define RTC_SR_ACKUPD (0x1u << 0) /**< \brief (RTC_SR) Acknowledge for Update */ +#define RTC_SR_ALARM (0x1u << 1) /**< \brief (RTC_SR) Alarm Flag */ +#define RTC_SR_SEC (0x1u << 2) /**< \brief (RTC_SR) Second Event */ +#define RTC_SR_TIMEV (0x1u << 3) /**< \brief (RTC_SR) Time Event */ +#define RTC_SR_CALEV (0x1u << 4) /**< \brief (RTC_SR) Calendar Event */ +/* -------- RTC_SCCR : (RTC Offset: 0x1C) Status Clear Command Register -------- */ +#define RTC_SCCR_ACKCLR (0x1u << 0) /**< \brief (RTC_SCCR) Acknowledge Clear */ +#define RTC_SCCR_ALRCLR (0x1u << 1) /**< \brief (RTC_SCCR) Alarm Clear */ +#define RTC_SCCR_SECCLR (0x1u << 2) /**< \brief (RTC_SCCR) Second Clear */ +#define RTC_SCCR_TIMCLR (0x1u << 3) /**< \brief (RTC_SCCR) Time Clear */ +#define RTC_SCCR_CALCLR (0x1u << 4) /**< \brief (RTC_SCCR) Calendar Clear */ +/* -------- RTC_IER : (RTC Offset: 0x20) Interrupt Enable Register -------- */ +#define RTC_IER_ACKEN (0x1u << 0) /**< \brief (RTC_IER) Acknowledge Update Interrupt Enable */ +#define RTC_IER_ALREN (0x1u << 1) /**< \brief (RTC_IER) Alarm Interrupt Enable */ +#define RTC_IER_SECEN (0x1u << 2) /**< \brief (RTC_IER) Second Event Interrupt Enable */ +#define RTC_IER_TIMEN (0x1u << 3) /**< \brief (RTC_IER) Time Event Interrupt Enable */ +#define RTC_IER_CALEN (0x1u << 4) /**< \brief (RTC_IER) Calendar Event Interrupt Enable */ +/* -------- RTC_IDR : (RTC Offset: 0x24) Interrupt Disable Register -------- */ +#define RTC_IDR_ACKDIS (0x1u << 0) /**< \brief (RTC_IDR) Acknowledge Update Interrupt Disable */ +#define RTC_IDR_ALRDIS (0x1u << 1) /**< \brief (RTC_IDR) Alarm Interrupt Disable */ +#define RTC_IDR_SECDIS (0x1u << 2) /**< \brief (RTC_IDR) Second Event Interrupt Disable */ +#define RTC_IDR_TIMDIS (0x1u << 3) /**< \brief (RTC_IDR) Time Event Interrupt Disable */ +#define RTC_IDR_CALDIS (0x1u << 4) /**< \brief (RTC_IDR) Calendar Event Interrupt Disable */ +/* -------- RTC_IMR : (RTC Offset: 0x28) Interrupt Mask Register -------- */ +#define RTC_IMR_ACK (0x1u << 0) /**< \brief (RTC_IMR) Acknowledge Update Interrupt Mask */ +#define RTC_IMR_ALR (0x1u << 1) /**< \brief (RTC_IMR) Alarm Interrupt Mask */ +#define RTC_IMR_SEC (0x1u << 2) /**< \brief (RTC_IMR) Second Event Interrupt Mask */ +#define RTC_IMR_TIM (0x1u << 3) /**< \brief (RTC_IMR) Time Event Interrupt Mask */ +#define RTC_IMR_CAL (0x1u << 4) /**< \brief (RTC_IMR) Calendar Event Interrupt Mask */ +/* -------- RTC_VER : (RTC Offset: 0x2C) Valid Entry Register -------- */ +#define RTC_VER_NVTIM (0x1u << 0) /**< \brief (RTC_VER) Non-valid Time */ +#define RTC_VER_NVCAL (0x1u << 1) /**< \brief (RTC_VER) Non-valid Calendar */ +#define RTC_VER_NVTIMALR (0x1u << 2) /**< \brief (RTC_VER) Non-valid Time Alarm */ +#define RTC_VER_NVCALALR (0x1u << 3) /**< \brief (RTC_VER) Non-valid Calendar Alarm */ +/* -------- RTC_WPMR : (RTC Offset: 0xE4) Write Protect Mode Register -------- */ +#define RTC_WPMR_WPEN (0x1u << 0) /**< \brief (RTC_WPMR) Write Protect Enable */ +#define RTC_WPMR_WPKEY_Pos 8 +#define RTC_WPMR_WPKEY_Msk (0xffffffu << RTC_WPMR_WPKEY_Pos) /**< \brief (RTC_WPMR) */ +#define RTC_WPMR_WPKEY(value) ((RTC_WPMR_WPKEY_Msk & ((value) << RTC_WPMR_WPKEY_Pos))) + +/*@}*/ + + +#endif /* _SAM3XA_RTC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_rtt.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_rtt.h new file mode 100644 index 000000000..0903a2254 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_rtt.h @@ -0,0 +1,69 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_RTT_COMPONENT_ +#define _SAM3XA_RTT_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Real-time Timer */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_RTT Real-time Timer */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Rtt hardware registers */ +typedef struct { + RwReg RTT_MR; /**< \brief (Rtt Offset: 0x00) Mode Register */ + RwReg RTT_AR; /**< \brief (Rtt Offset: 0x04) Alarm Register */ + RoReg RTT_VR; /**< \brief (Rtt Offset: 0x08) Value Register */ + RoReg RTT_SR; /**< \brief (Rtt Offset: 0x0C) Status Register */ +} Rtt; +#endif /* __ASSEMBLY__ */ +/* -------- RTT_MR : (RTT Offset: 0x00) Mode Register -------- */ +#define RTT_MR_RTPRES_Pos 0 +#define RTT_MR_RTPRES_Msk (0xffffu << RTT_MR_RTPRES_Pos) /**< \brief (RTT_MR) Real-time Timer Prescaler Value */ +#define RTT_MR_RTPRES(value) ((RTT_MR_RTPRES_Msk & ((value) << RTT_MR_RTPRES_Pos))) +#define RTT_MR_ALMIEN (0x1u << 16) /**< \brief (RTT_MR) Alarm Interrupt Enable */ +#define RTT_MR_RTTINCIEN (0x1u << 17) /**< \brief (RTT_MR) Real-time Timer Increment Interrupt Enable */ +#define RTT_MR_RTTRST (0x1u << 18) /**< \brief (RTT_MR) Real-time Timer Restart */ +/* -------- RTT_AR : (RTT Offset: 0x04) Alarm Register -------- */ +#define RTT_AR_ALMV_Pos 0 +#define RTT_AR_ALMV_Msk (0xffffffffu << RTT_AR_ALMV_Pos) /**< \brief (RTT_AR) Alarm Value */ +#define RTT_AR_ALMV(value) ((RTT_AR_ALMV_Msk & ((value) << RTT_AR_ALMV_Pos))) +/* -------- RTT_VR : (RTT Offset: 0x08) Value Register -------- */ +#define RTT_VR_CRTV_Pos 0 +#define RTT_VR_CRTV_Msk (0xffffffffu << RTT_VR_CRTV_Pos) /**< \brief (RTT_VR) Current Real-time Value */ +/* -------- RTT_SR : (RTT Offset: 0x0C) Status Register -------- */ +#define RTT_SR_ALMS (0x1u << 0) /**< \brief (RTT_SR) Real-time Alarm Status */ +#define RTT_SR_RTTINC (0x1u << 1) /**< \brief (RTT_SR) Real-time Timer Increment */ + +/*@}*/ + + +#endif /* _SAM3XA_RTT_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_sdramc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_sdramc.h new file mode 100644 index 000000000..ac1069551 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_sdramc.h @@ -0,0 +1,188 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_SDRAMC_COMPONENT_ +#define _SAM3XA_SDRAMC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR SDRAM Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_SDRAMC SDRAM Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Sdramc hardware registers */ +typedef struct { + RwReg SDRAMC_MR; /**< \brief (Sdramc Offset: 0x00) SDRAMC Mode Register */ + RwReg SDRAMC_TR; /**< \brief (Sdramc Offset: 0x04) SDRAMC Refresh Timer Register */ + RwReg SDRAMC_CR; /**< \brief (Sdramc Offset: 0x08) SDRAMC Configuration Register */ + RoReg Reserved1[1]; + RwReg SDRAMC_LPR; /**< \brief (Sdramc Offset: 0x10) SDRAMC Low Power Register */ + WoReg SDRAMC_IER; /**< \brief (Sdramc Offset: 0x14) SDRAMC Interrupt Enable Register */ + WoReg SDRAMC_IDR; /**< \brief (Sdramc Offset: 0x18) SDRAMC Interrupt Disable Register */ + RoReg SDRAMC_IMR; /**< \brief (Sdramc Offset: 0x1C) SDRAMC Interrupt Mask Register */ + RoReg SDRAMC_ISR; /**< \brief (Sdramc Offset: 0x20) SDRAMC Interrupt Status Register */ + RwReg SDRAMC_MDR; /**< \brief (Sdramc Offset: 0x24) SDRAMC Memory Device Register */ + RwReg SDRAMC_CR1; /**< \brief (Sdramc Offset: 0x28) SDRAMC Configuration Register 1 */ + RwReg SDRAMC_OCMS; /**< \brief (Sdramc Offset: 0x2C) SDRAMC OCMS Register 1 */ +} Sdramc; +#endif /* __ASSEMBLY__ */ +/* -------- SDRAMC_MR : (SDRAMC Offset: 0x00) SDRAMC Mode Register -------- */ +#define SDRAMC_MR_MODE_Pos 0 +#define SDRAMC_MR_MODE_Msk (0x7u << SDRAMC_MR_MODE_Pos) /**< \brief (SDRAMC_MR) SDRAMC Command Mode */ +#define SDRAMC_MR_MODE_NORMAL (0x0u << 0) /**< \brief (SDRAMC_MR) Normal mode. Any access to the SDRAM is decoded normally. To activate this mode, command must be followed by a write to the SDRAM. */ +#define SDRAMC_MR_MODE_NOP (0x1u << 0) /**< \brief (SDRAMC_MR) The SDRAM Controller issues a NOP command when the SDRAM device is accessed regardless of the cycle. To activate this mode, command must be followed by a write to the SDRAM. */ +#define SDRAMC_MR_MODE_ALLBANKS_PRECHARGE (0x2u << 0) /**< \brief (SDRAMC_MR) The SDRAM Controller issues an "All Banks Precharge" command when the SDRAM device is accessed regardless of the cycle. To activate this mode, command must be followed by a write to the SDRAM. */ +#define SDRAMC_MR_MODE_LOAD_MODEREG (0x3u << 0) /**< \brief (SDRAMC_MR) The SDRAM Controller issues a "Load Mode Register" command when the SDRAM device is accessed regardless of the cycle. To activate this mode, command must be followed by a write to the SDRAM. */ +#define SDRAMC_MR_MODE_AUTO_REFRESH (0x4u << 0) /**< \brief (SDRAMC_MR) The SDRAM Controller issues an "Auto-Refresh" Command when the SDRAM device is accessed regardless of the cycle. Previously, an "All Banks Precharge" command must be issued. To activate this mode, command must be followed by a write to the SDRAM. */ +#define SDRAMC_MR_MODE_EXT_LOAD_MODEREG (0x5u << 0) /**< \brief (SDRAMC_MR) The SDRAM Controller issues an "Extended Load Mode Register" command when the SDRAM device is accessed regardless of the cycle. To activate this mode, the "Extended Load Mode Register" command must be followed by a write to the SDRAM. The write in the SDRAM must be done in the appropriate bank; most low-power SDRAM devices use the bank 1. */ +#define SDRAMC_MR_MODE_DEEP_POWERDOWN (0x6u << 0) /**< \brief (SDRAMC_MR) Deep power-down mode. Enters deep power-down mode. */ +/* -------- SDRAMC_TR : (SDRAMC Offset: 0x04) SDRAMC Refresh Timer Register -------- */ +#define SDRAMC_TR_COUNT_Pos 0 +#define SDRAMC_TR_COUNT_Msk (0xfffu << SDRAMC_TR_COUNT_Pos) /**< \brief (SDRAMC_TR) SDRAMC Refresh Timer Count */ +#define SDRAMC_TR_COUNT(value) ((SDRAMC_TR_COUNT_Msk & ((value) << SDRAMC_TR_COUNT_Pos))) +/* -------- SDRAMC_CR : (SDRAMC Offset: 0x08) SDRAMC Configuration Register -------- */ +#define SDRAMC_CR_NC_Pos 0 +#define SDRAMC_CR_NC_Msk (0x3u << SDRAMC_CR_NC_Pos) /**< \brief (SDRAMC_CR) Number of Column Bits */ +#define SDRAMC_CR_NC_COL8 (0x0u << 0) /**< \brief (SDRAMC_CR) 8 column bits */ +#define SDRAMC_CR_NC_COL9 (0x1u << 0) /**< \brief (SDRAMC_CR) 9 column bits */ +#define SDRAMC_CR_NC_COL10 (0x2u << 0) /**< \brief (SDRAMC_CR) 10 column bits */ +#define SDRAMC_CR_NC_COL11 (0x3u << 0) /**< \brief (SDRAMC_CR) 11 column bits */ +#define SDRAMC_CR_NR_Pos 2 +#define SDRAMC_CR_NR_Msk (0x3u << SDRAMC_CR_NR_Pos) /**< \brief (SDRAMC_CR) Number of Row Bits */ +#define SDRAMC_CR_NR_ROW11 (0x0u << 2) /**< \brief (SDRAMC_CR) 11 row bits */ +#define SDRAMC_CR_NR_ROW12 (0x1u << 2) /**< \brief (SDRAMC_CR) 12 row bits */ +#define SDRAMC_CR_NR_ROW13 (0x2u << 2) /**< \brief (SDRAMC_CR) 13 row bits */ +#define SDRAMC_CR_NB (0x1u << 4) /**< \brief (SDRAMC_CR) Number of Banks */ +#define SDRAMC_CR_NB_BANK2 (0x0u << 4) /**< \brief (SDRAMC_CR) 2 banks */ +#define SDRAMC_CR_NB_BANK4 (0x1u << 4) /**< \brief (SDRAMC_CR) 4 banks */ +#define SDRAMC_CR_CAS_Pos 5 +#define SDRAMC_CR_CAS_Msk (0x3u << SDRAMC_CR_CAS_Pos) /**< \brief (SDRAMC_CR) CAS Latency */ +#define SDRAMC_CR_CAS_LATENCY1 (0x1u << 5) /**< \brief (SDRAMC_CR) 1 cycle CAS latency */ +#define SDRAMC_CR_CAS_LATENCY2 (0x2u << 5) /**< \brief (SDRAMC_CR) 2 cycle CAS latency */ +#define SDRAMC_CR_CAS_LATENCY3 (0x3u << 5) /**< \brief (SDRAMC_CR) 3 cycle CAS latency */ +#define SDRAMC_CR_DBW (0x1u << 7) /**< \brief (SDRAMC_CR) Data Bus Width */ +#define SDRAMC_CR_TWR_Pos 8 +#define SDRAMC_CR_TWR_Msk (0xfu << SDRAMC_CR_TWR_Pos) /**< \brief (SDRAMC_CR) Write Recovery Delay */ +#define SDRAMC_CR_TWR(value) ((SDRAMC_CR_TWR_Msk & ((value) << SDRAMC_CR_TWR_Pos))) +#define SDRAMC_CR_TRC_TRFC_Pos 12 +#define SDRAMC_CR_TRC_TRFC_Msk (0xfu << SDRAMC_CR_TRC_TRFC_Pos) /**< \brief (SDRAMC_CR) Row Cycle Delay and Row Refresh Cycle */ +#define SDRAMC_CR_TRC_TRFC(value) ((SDRAMC_CR_TRC_TRFC_Msk & ((value) << SDRAMC_CR_TRC_TRFC_Pos))) +#define SDRAMC_CR_TRP_Pos 16 +#define SDRAMC_CR_TRP_Msk (0xfu << SDRAMC_CR_TRP_Pos) /**< \brief (SDRAMC_CR) Row Precharge Delay */ +#define SDRAMC_CR_TRP(value) ((SDRAMC_CR_TRP_Msk & ((value) << SDRAMC_CR_TRP_Pos))) +#define SDRAMC_CR_TRCD_Pos 20 +#define SDRAMC_CR_TRCD_Msk (0xfu << SDRAMC_CR_TRCD_Pos) /**< \brief (SDRAMC_CR) Row to Column Delay */ +#define SDRAMC_CR_TRCD(value) ((SDRAMC_CR_TRCD_Msk & ((value) << SDRAMC_CR_TRCD_Pos))) +#define SDRAMC_CR_TRAS_Pos 24 +#define SDRAMC_CR_TRAS_Msk (0xfu << SDRAMC_CR_TRAS_Pos) /**< \brief (SDRAMC_CR) Active to Precharge Delay */ +#define SDRAMC_CR_TRAS(value) ((SDRAMC_CR_TRAS_Msk & ((value) << SDRAMC_CR_TRAS_Pos))) +#define SDRAMC_CR_TXSR_Pos 28 +#define SDRAMC_CR_TXSR_Msk (0xfu << SDRAMC_CR_TXSR_Pos) /**< \brief (SDRAMC_CR) Exit Self Refresh to Active Delay */ +#define SDRAMC_CR_TXSR(value) ((SDRAMC_CR_TXSR_Msk & ((value) << SDRAMC_CR_TXSR_Pos))) +/* -------- SDRAMC_LPR : (SDRAMC Offset: 0x10) SDRAMC Low Power Register -------- */ +#define SDRAMC_LPR_LPCB_Pos 0 +#define SDRAMC_LPR_LPCB_Msk (0x3u << SDRAMC_LPR_LPCB_Pos) /**< \brief (SDRAMC_LPR) Low-power Configuration Bits */ +#define SDRAMC_LPR_LPCB_DISABLED (0x0u << 0) /**< \brief (SDRAMC_LPR) Low Power Feature is inhibited: no Power-down, Self-refresh or Deep Power-down command is issued to the SDRAM device. */ +#define SDRAMC_LPR_LPCB_SELF_REFRESH (0x1u << 0) /**< \brief (SDRAMC_LPR) The SDRAM Controller issues a Self-refresh command to the SDRAM device, the SDCK clock is deactivated and the SDCKE signal is set low. The SDRAM device leaves the Self Refresh Mode when accessed and enters it after the access. */ +#define SDRAMC_LPR_LPCB_POWER_DOWN (0x2u << 0) /**< \brief (SDRAMC_LPR) The SDRAM Controller issues a Power-down Command to the SDRAM device after each access, the SDCKE signal is set to low. The SDRAM device leaves the Power-down Mode when accessed and enters it after the access. */ +#define SDRAMC_LPR_LPCB_DEEP_POWER_DOWN (0x3u << 0) /**< \brief (SDRAMC_LPR) The SDRAM Controller issues a Deep Power-down command to the SDRAM device. This mode is unique to low-power SDRAM. */ +#define SDRAMC_LPR_PASR_Pos 4 +#define SDRAMC_LPR_PASR_Msk (0x7u << SDRAMC_LPR_PASR_Pos) /**< \brief (SDRAMC_LPR) Partial Array Self-refresh (only for low-power SDRAM) */ +#define SDRAMC_LPR_PASR(value) ((SDRAMC_LPR_PASR_Msk & ((value) << SDRAMC_LPR_PASR_Pos))) +#define SDRAMC_LPR_TCSR_Pos 8 +#define SDRAMC_LPR_TCSR_Msk (0x3u << SDRAMC_LPR_TCSR_Pos) /**< \brief (SDRAMC_LPR) Temperature Compensated Self-Refresh (only for low-power SDRAM) */ +#define SDRAMC_LPR_TCSR(value) ((SDRAMC_LPR_TCSR_Msk & ((value) << SDRAMC_LPR_TCSR_Pos))) +#define SDRAMC_LPR_DS_Pos 10 +#define SDRAMC_LPR_DS_Msk (0x3u << SDRAMC_LPR_DS_Pos) /**< \brief (SDRAMC_LPR) Drive Strength (only for low-power SDRAM) */ +#define SDRAMC_LPR_DS(value) ((SDRAMC_LPR_DS_Msk & ((value) << SDRAMC_LPR_DS_Pos))) +#define SDRAMC_LPR_TIMEOUT_Pos 12 +#define SDRAMC_LPR_TIMEOUT_Msk (0x3u << SDRAMC_LPR_TIMEOUT_Pos) /**< \brief (SDRAMC_LPR) Time to define when low-power mode is enable */ +#define SDRAMC_LPR_TIMEOUT_LP_LAST_XFER (0x0u << 12) /**< \brief (SDRAMC_LPR) The SDRAM controller activates the SDRAM low-power mode immediately after the end of the last transfer. */ +#define SDRAMC_LPR_TIMEOUT_LP_LAST_XFER_64 (0x1u << 12) /**< \brief (SDRAMC_LPR) The SDRAM controller activates the SDRAM low-power mode 64 clock cycles after the end of the last transfer. */ +#define SDRAMC_LPR_TIMEOUT_LP_LAST_XFER_128 (0x2u << 12) /**< \brief (SDRAMC_LPR) The SDRAM controller activates the SDRAM low-power mode 128 clock cycles after the end of the last transfer. */ +/* -------- SDRAMC_IER : (SDRAMC Offset: 0x14) SDRAMC Interrupt Enable Register -------- */ +#define SDRAMC_IER_RES (0x1u << 0) /**< \brief (SDRAMC_IER) Refresh Error Status */ +/* -------- SDRAMC_IDR : (SDRAMC Offset: 0x18) SDRAMC Interrupt Disable Register -------- */ +#define SDRAMC_IDR_RES (0x1u << 0) /**< \brief (SDRAMC_IDR) Refresh Error Status */ +/* -------- SDRAMC_IMR : (SDRAMC Offset: 0x1C) SDRAMC Interrupt Mask Register -------- */ +#define SDRAMC_IMR_RES (0x1u << 0) /**< \brief (SDRAMC_IMR) Refresh Error Status */ +/* -------- SDRAMC_ISR : (SDRAMC Offset: 0x20) SDRAMC Interrupt Status Register -------- */ +#define SDRAMC_ISR_RES (0x1u << 0) /**< \brief (SDRAMC_ISR) Refresh Error Status */ +/* -------- SDRAMC_MDR : (SDRAMC Offset: 0x24) SDRAMC Memory Device Register -------- */ +#define SDRAMC_MDR_MD_Pos 0 +#define SDRAMC_MDR_MD_Msk (0x3u << SDRAMC_MDR_MD_Pos) /**< \brief (SDRAMC_MDR) Memory Device Type */ +#define SDRAMC_MDR_MD_SDRAM (0x0u << 0) /**< \brief (SDRAMC_MDR) SDRAM */ +#define SDRAMC_MDR_MD_LPSDRAM (0x1u << 0) /**< \brief (SDRAMC_MDR) Low-power SDRAM */ +/* -------- SDRAMC_CR1 : (SDRAMC Offset: 0x28) SDRAMC Configuration Register 1 -------- */ +#define SDRAMC_CR1_NC_Pos 0 +#define SDRAMC_CR1_NC_Msk (0x3u << SDRAMC_CR1_NC_Pos) /**< \brief (SDRAMC_CR1) Number of Column Bits */ +#define SDRAMC_CR1_NC_COL8 (0x0u << 0) /**< \brief (SDRAMC_CR1) 8 column bits */ +#define SDRAMC_CR1_NC_COL9 (0x1u << 0) /**< \brief (SDRAMC_CR1) 9 column bits */ +#define SDRAMC_CR1_NC_COL10 (0x2u << 0) /**< \brief (SDRAMC_CR1) 10 column bits */ +#define SDRAMC_CR1_NC_COL11 (0x3u << 0) /**< \brief (SDRAMC_CR1) 11 column bits */ +#define SDRAMC_CR1_NR_Pos 2 +#define SDRAMC_CR1_NR_Msk (0x3u << SDRAMC_CR1_NR_Pos) /**< \brief (SDRAMC_CR1) Number of Row Bits */ +#define SDRAMC_CR1_NR_ROW11 (0x0u << 2) /**< \brief (SDRAMC_CR1) 11 row bits */ +#define SDRAMC_CR1_NR_ROW12 (0x1u << 2) /**< \brief (SDRAMC_CR1) 12 row bits */ +#define SDRAMC_CR1_NR_ROW13 (0x2u << 2) /**< \brief (SDRAMC_CR1) 13 row bits */ +#define SDRAMC_CR1_NB (0x1u << 4) /**< \brief (SDRAMC_CR1) Number of Banks */ +#define SDRAMC_CR1_NB_BANK2 (0x0u << 4) /**< \brief (SDRAMC_CR1) 2 banks */ +#define SDRAMC_CR1_NB_BANK4 (0x1u << 4) /**< \brief (SDRAMC_CR1) 4 banks */ +#define SDRAMC_CR1_CAS_Pos 5 +#define SDRAMC_CR1_CAS_Msk (0x3u << SDRAMC_CR1_CAS_Pos) /**< \brief (SDRAMC_CR1) CAS Latency */ +#define SDRAMC_CR1_CAS_LATENCY1 (0x1u << 5) /**< \brief (SDRAMC_CR1) 1 cycle CAS latency */ +#define SDRAMC_CR1_CAS_LATENCY2 (0x2u << 5) /**< \brief (SDRAMC_CR1) 2 cycle CAS latency */ +#define SDRAMC_CR1_CAS_LATENCY3 (0x3u << 5) /**< \brief (SDRAMC_CR1) 3 cycle CAS latency */ +#define SDRAMC_CR1_DBW (0x1u << 7) /**< \brief (SDRAMC_CR1) Data Bus Width */ +#define SDRAMC_CR1_TWR_Pos 8 +#define SDRAMC_CR1_TWR_Msk (0xfu << SDRAMC_CR1_TWR_Pos) /**< \brief (SDRAMC_CR1) Write Recovery Delay */ +#define SDRAMC_CR1_TWR(value) ((SDRAMC_CR1_TWR_Msk & ((value) << SDRAMC_CR1_TWR_Pos))) +#define SDRAMC_CR1_TRC_TRFC_Pos 12 +#define SDRAMC_CR1_TRC_TRFC_Msk (0xfu << SDRAMC_CR1_TRC_TRFC_Pos) /**< \brief (SDRAMC_CR1) Row Cycle Delay and Row Refresh Cycle */ +#define SDRAMC_CR1_TRC_TRFC(value) ((SDRAMC_CR1_TRC_TRFC_Msk & ((value) << SDRAMC_CR1_TRC_TRFC_Pos))) +#define SDRAMC_CR1_TRP_Pos 16 +#define SDRAMC_CR1_TRP_Msk (0xfu << SDRAMC_CR1_TRP_Pos) /**< \brief (SDRAMC_CR1) Row Precharge Delay */ +#define SDRAMC_CR1_TRP(value) ((SDRAMC_CR1_TRP_Msk & ((value) << SDRAMC_CR1_TRP_Pos))) +#define SDRAMC_CR1_TRCD_Pos 20 +#define SDRAMC_CR1_TRCD_Msk (0xfu << SDRAMC_CR1_TRCD_Pos) /**< \brief (SDRAMC_CR1) Row to Column Delay */ +#define SDRAMC_CR1_TRCD(value) ((SDRAMC_CR1_TRCD_Msk & ((value) << SDRAMC_CR1_TRCD_Pos))) +#define SDRAMC_CR1_TRAS_Pos 24 +#define SDRAMC_CR1_TRAS_Msk (0xfu << SDRAMC_CR1_TRAS_Pos) /**< \brief (SDRAMC_CR1) Active to Precharge Delay */ +#define SDRAMC_CR1_TRAS(value) ((SDRAMC_CR1_TRAS_Msk & ((value) << SDRAMC_CR1_TRAS_Pos))) +#define SDRAMC_CR1_TXSR_Pos 28 +#define SDRAMC_CR1_TXSR_Msk (0xfu << SDRAMC_CR1_TXSR_Pos) /**< \brief (SDRAMC_CR1) Exit Self Refresh to Active Delay */ +#define SDRAMC_CR1_TXSR(value) ((SDRAMC_CR1_TXSR_Msk & ((value) << SDRAMC_CR1_TXSR_Pos))) +/* -------- SDRAMC_OCMS : (SDRAMC Offset: 0x2C) SDRAMC OCMS Register 1 -------- */ +#define SDRAMC_OCMS_SDR_SE (0x1u << 0) /**< \brief (SDRAMC_OCMS) SDRAM Memory Controller Scrambling Enable */ + +/*@}*/ + + +#endif /* _SAM3XA_SDRAMC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_smc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_smc.h new file mode 100644 index 000000000..eec8fa3ae --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_smc.h @@ -0,0 +1,484 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_SMC_COMPONENT_ +#define _SAM3XA_SMC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Static Memory Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_SMC Static Memory Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief SmcCs_number hardware registers */ +typedef struct { + RwReg SMC_SETUP; /**< \brief (SmcCs_number Offset: 0x0) SMC Setup Register */ + RwReg SMC_PULSE; /**< \brief (SmcCs_number Offset: 0x4) SMC Pulse Register */ + RwReg SMC_CYCLE; /**< \brief (SmcCs_number Offset: 0x8) SMC Cycle Register */ + RwReg SMC_TIMINGS; /**< \brief (SmcCs_number Offset: 0xC) SMC Timings Register */ + RwReg SMC_MODE; /**< \brief (SmcCs_number Offset: 0x10) SMC Mode Register */ +} SmcCs_number; +/** \brief Smc hardware registers */ +#define SMCCS_NUMBER_NUMBER 8 +typedef struct { + RwReg SMC_CFG; /**< \brief (Smc Offset: 0x000) SMC NFC Configuration Register */ + WoReg SMC_CTRL; /**< \brief (Smc Offset: 0x004) SMC NFC Control Register */ + RoReg SMC_SR; /**< \brief (Smc Offset: 0x008) SMC NFC Status Register */ + WoReg SMC_IER; /**< \brief (Smc Offset: 0x00C) SMC NFC Interrupt Enable Register */ + WoReg SMC_IDR; /**< \brief (Smc Offset: 0x010) SMC NFC Interrupt Disable Register */ + RoReg SMC_IMR; /**< \brief (Smc Offset: 0x014) SMC NFC Interrupt Mask Register */ + RwReg SMC_ADDR; /**< \brief (Smc Offset: 0x018) SMC NFC Address Cycle Zero Register */ + RwReg SMC_BANK; /**< \brief (Smc Offset: 0x01C) SMC Bank Address Register */ + WoReg SMC_ECC_CTRL; /**< \brief (Smc Offset: 0x020) SMC ECC Control Register */ + RwReg SMC_ECC_MD; /**< \brief (Smc Offset: 0x024) SMC ECC Mode Register */ + RoReg SMC_ECC_SR1; /**< \brief (Smc Offset: 0x028) SMC ECC Status 1 Register */ + RoReg SMC_ECC_PR0; /**< \brief (Smc Offset: 0x02C) SMC ECC Parity 0 Register */ + RoReg SMC_ECC_PR1; /**< \brief (Smc Offset: 0x030) SMC ECC parity 1 Register */ + RoReg SMC_ECC_SR2; /**< \brief (Smc Offset: 0x034) SMC ECC status 2 Register */ + RoReg SMC_ECC_PR2; /**< \brief (Smc Offset: 0x038) SMC ECC parity 2 Register */ + RoReg SMC_ECC_PR3; /**< \brief (Smc Offset: 0x03C) SMC ECC parity 3 Register */ + RoReg SMC_ECC_PR4; /**< \brief (Smc Offset: 0x040) SMC ECC parity 4 Register */ + RoReg SMC_ECC_PR5; /**< \brief (Smc Offset: 0x044) SMC ECC parity 5 Register */ + RoReg SMC_ECC_PR6; /**< \brief (Smc Offset: 0x048) SMC ECC parity 6 Register */ + RoReg SMC_ECC_PR7; /**< \brief (Smc Offset: 0x04C) SMC ECC parity 7 Register */ + RoReg SMC_ECC_PR8; /**< \brief (Smc Offset: 0x050) SMC ECC parity 8 Register */ + RoReg SMC_ECC_PR9; /**< \brief (Smc Offset: 0x054) SMC ECC parity 9 Register */ + RoReg SMC_ECC_PR10; /**< \brief (Smc Offset: 0x058) SMC ECC parity 10 Register */ + RoReg SMC_ECC_PR11; /**< \brief (Smc Offset: 0x05C) SMC ECC parity 11 Register */ + RoReg SMC_ECC_PR12; /**< \brief (Smc Offset: 0x060) SMC ECC parity 12 Register */ + RoReg SMC_ECC_PR13; /**< \brief (Smc Offset: 0x064) SMC ECC parity 13 Register */ + RoReg SMC_ECC_PR14; /**< \brief (Smc Offset: 0x068) SMC ECC parity 14 Register */ + RoReg SMC_ECC_PR15; /**< \brief (Smc Offset: 0x06C) SMC ECC parity 15 Register */ + SmcCs_number SMC_CS_NUMBER[SMCCS_NUMBER_NUMBER]; /**< \brief (Smc Offset: 0x70) CS_number = 0 .. 7 */ + RwReg SMC_OCMS; /**< \brief (Smc Offset: 0x110) SMC OCMS Register */ + WoReg SMC_KEY1; /**< \brief (Smc Offset: 0x114) SMC OCMS KEY1 Register */ + WoReg SMC_KEY2; /**< \brief (Smc Offset: 0x118) SMC OCMS KEY2 Register */ + RoReg Reserved1[50]; + WoReg SMC_WPCR; /**< \brief (Smc Offset: 0x1E4) Write Protection Control Register */ + RoReg SMC_WPSR; /**< \brief (Smc Offset: 0x1E8) Write Protection Status Register */ +} Smc; +#endif /* __ASSEMBLY__ */ +/* -------- SMC_CFG : (SMC Offset: 0x000) SMC NFC Configuration Register -------- */ +#define SMC_CFG_PAGESIZE_Pos 0 +#define SMC_CFG_PAGESIZE_Msk (0x3u << SMC_CFG_PAGESIZE_Pos) /**< \brief (SMC_CFG) */ +#define SMC_CFG_PAGESIZE_PS512_16 (0x0u << 0) /**< \brief (SMC_CFG) Main area 512 Bytes + Spare area 16 Bytes = 528 Bytes */ +#define SMC_CFG_PAGESIZE_PS1024_32 (0x1u << 0) /**< \brief (SMC_CFG) Main area 1024 Bytes + Spare area 32 Bytes = 1056 Bytes */ +#define SMC_CFG_PAGESIZE_PS2048_64 (0x2u << 0) /**< \brief (SMC_CFG) Main area 2048 Bytes + Spare area 64 Bytes = 2112 Bytes */ +#define SMC_CFG_PAGESIZE_PS4096_128 (0x3u << 0) /**< \brief (SMC_CFG) Main area 4096 Bytes + Spare area 128 Bytes = 4224 Bytes */ +#define SMC_CFG_WSPARE (0x1u << 8) /**< \brief (SMC_CFG) Write Spare Area */ +#define SMC_CFG_RSPARE (0x1u << 9) /**< \brief (SMC_CFG) Read Spare Area */ +#define SMC_CFG_EDGECTRL (0x1u << 12) /**< \brief (SMC_CFG) Rising/Falling Edge Detection Control */ +#define SMC_CFG_RBEDGE (0x1u << 13) /**< \brief (SMC_CFG) Ready/Busy Signal Edge Detection */ +#define SMC_CFG_DTOCYC_Pos 16 +#define SMC_CFG_DTOCYC_Msk (0xfu << SMC_CFG_DTOCYC_Pos) /**< \brief (SMC_CFG) Data Timeout Cycle Number */ +#define SMC_CFG_DTOCYC(value) ((SMC_CFG_DTOCYC_Msk & ((value) << SMC_CFG_DTOCYC_Pos))) +#define SMC_CFG_DTOMUL_Pos 20 +#define SMC_CFG_DTOMUL_Msk (0x7u << SMC_CFG_DTOMUL_Pos) /**< \brief (SMC_CFG) Data Timeout Multiplier */ +#define SMC_CFG_DTOMUL_X1 (0x0u << 20) /**< \brief (SMC_CFG) DTOCYC */ +#define SMC_CFG_DTOMUL_X16 (0x1u << 20) /**< \brief (SMC_CFG) DTOCYC x 16 */ +#define SMC_CFG_DTOMUL_X128 (0x2u << 20) /**< \brief (SMC_CFG) DTOCYC x 128 */ +#define SMC_CFG_DTOMUL_X256 (0x3u << 20) /**< \brief (SMC_CFG) DTOCYC x 256 */ +#define SMC_CFG_DTOMUL_X1024 (0x4u << 20) /**< \brief (SMC_CFG) DTOCYC x 1024 */ +#define SMC_CFG_DTOMUL_X4096 (0x5u << 20) /**< \brief (SMC_CFG) DTOCYC x 4096 */ +#define SMC_CFG_DTOMUL_X65536 (0x6u << 20) /**< \brief (SMC_CFG) DTOCYC x 65536 */ +#define SMC_CFG_DTOMUL_X1048576 (0x7u << 20) /**< \brief (SMC_CFG) DTOCYC x 1048576 */ +/* -------- SMC_CTRL : (SMC Offset: 0x004) SMC NFC Control Register -------- */ +#define SMC_CTRL_NFCEN (0x1u << 0) /**< \brief (SMC_CTRL) NAND Flash Controller Enable */ +#define SMC_CTRL_NFCDIS (0x1u << 1) /**< \brief (SMC_CTRL) NAND Flash Controller Disable */ +/* -------- SMC_SR : (SMC Offset: 0x008) SMC NFC Status Register -------- */ +#define SMC_SR_SMCSTS (0x1u << 0) /**< \brief (SMC_SR) NAND Flash Controller status (this field cannot be reset) */ +#define SMC_SR_RB_RISE (0x1u << 4) /**< \brief (SMC_SR) Selected Ready Busy Rising Edge Detected */ +#define SMC_SR_RB_FALL (0x1u << 5) /**< \brief (SMC_SR) Selected Ready Busy Falling Edge Detected */ +#define SMC_SR_NFCBUSY (0x1u << 8) /**< \brief (SMC_SR) NFC Busy (this field cannot be reset) */ +#define SMC_SR_NFCWR (0x1u << 11) /**< \brief (SMC_SR) NFC Write/Read Operation (this field cannot be reset) */ +#define SMC_SR_NFCSID_Pos 12 +#define SMC_SR_NFCSID_Msk (0x7u << SMC_SR_NFCSID_Pos) /**< \brief (SMC_SR) NFC Chip Select ID (this field cannot be reset) */ +#define SMC_SR_XFRDONE (0x1u << 16) /**< \brief (SMC_SR) NFC Data Transfer Terminated */ +#define SMC_SR_CMDDONE (0x1u << 17) /**< \brief (SMC_SR) Command Done */ +#define SMC_SR_DTOE (0x1u << 20) /**< \brief (SMC_SR) Data Timeout Error */ +#define SMC_SR_UNDEF (0x1u << 21) /**< \brief (SMC_SR) Undefined Area Error */ +#define SMC_SR_AWB (0x1u << 22) /**< \brief (SMC_SR) Accessing While Busy */ +#define SMC_SR_NFCASE (0x1u << 23) /**< \brief (SMC_SR) NFC Access Size Error */ +#define SMC_SR_RB_EDGE0 (0x1u << 24) /**< \brief (SMC_SR) Ready/Busy Line 0 Edge Detected */ +/* -------- SMC_IER : (SMC Offset: 0x00C) SMC NFC Interrupt Enable Register -------- */ +#define SMC_IER_RB_RISE (0x1u << 4) /**< \brief (SMC_IER) Ready Busy Rising Edge Detection Interrupt Enable */ +#define SMC_IER_RB_FALL (0x1u << 5) /**< \brief (SMC_IER) Ready Busy Falling Edge Detection Interrupt Enable */ +#define SMC_IER_XFRDONE (0x1u << 16) /**< \brief (SMC_IER) Transfer Done Interrupt Enable */ +#define SMC_IER_CMDDONE (0x1u << 17) /**< \brief (SMC_IER) Command Done Interrupt Enable */ +#define SMC_IER_DTOE (0x1u << 20) /**< \brief (SMC_IER) Data Timeout Error Interrupt Enable */ +#define SMC_IER_UNDEF (0x1u << 21) /**< \brief (SMC_IER) Undefined Area Access Interrupt Enable */ +#define SMC_IER_AWB (0x1u << 22) /**< \brief (SMC_IER) Accessing While Busy Interrupt Enable */ +#define SMC_IER_NFCASE (0x1u << 23) /**< \brief (SMC_IER) NFC Access Size Error Interrupt Enable */ +#define SMC_IER_RB_EDGE0 (0x1u << 24) /**< \brief (SMC_IER) Ready/Busy Line 0 Interrupt Enable */ +/* -------- SMC_IDR : (SMC Offset: 0x010) SMC NFC Interrupt Disable Register -------- */ +#define SMC_IDR_RB_RISE (0x1u << 4) /**< \brief (SMC_IDR) Ready Busy Rising Edge Detection Interrupt Disable */ +#define SMC_IDR_RB_FALL (0x1u << 5) /**< \brief (SMC_IDR) Ready Busy Falling Edge Detection Interrupt Disable */ +#define SMC_IDR_XFRDONE (0x1u << 16) /**< \brief (SMC_IDR) Transfer Done Interrupt Disable */ +#define SMC_IDR_CMDDONE (0x1u << 17) /**< \brief (SMC_IDR) Command Done Interrupt Disable */ +#define SMC_IDR_DTOE (0x1u << 20) /**< \brief (SMC_IDR) Data Timeout Error Interrupt Disable */ +#define SMC_IDR_UNDEF (0x1u << 21) /**< \brief (SMC_IDR) Undefined Area Access Interrupt Disable */ +#define SMC_IDR_AWB (0x1u << 22) /**< \brief (SMC_IDR) Accessing While Busy Interrupt Disable */ +#define SMC_IDR_NFCASE (0x1u << 23) /**< \brief (SMC_IDR) NFC Access Size Error Interrupt Disable */ +#define SMC_IDR_RB_EDGE0 (0x1u << 24) /**< \brief (SMC_IDR) Ready/Busy Line 0 Interrupt Disable */ +/* -------- SMC_IMR : (SMC Offset: 0x014) SMC NFC Interrupt Mask Register -------- */ +#define SMC_IMR_RB_RISE (0x1u << 4) /**< \brief (SMC_IMR) Ready Busy Rising Edge Detection Interrupt Mask */ +#define SMC_IMR_RB_FALL (0x1u << 5) /**< \brief (SMC_IMR) Ready Busy Falling Edge Detection Interrupt Mask */ +#define SMC_IMR_XFRDONE (0x1u << 16) /**< \brief (SMC_IMR) Transfer Done Interrupt Mask */ +#define SMC_IMR_CMDDONE (0x1u << 17) /**< \brief (SMC_IMR) Command Done Interrupt Mask */ +#define SMC_IMR_DTOE (0x1u << 20) /**< \brief (SMC_IMR) Data Timeout Error Interrupt Mask */ +#define SMC_IMR_UNDEF (0x1u << 21) /**< \brief (SMC_IMR) Undefined Area Access Interrupt Mask5 */ +#define SMC_IMR_AWB (0x1u << 22) /**< \brief (SMC_IMR) Accessing While Busy Interrupt Mask */ +#define SMC_IMR_NFCASE (0x1u << 23) /**< \brief (SMC_IMR) NFC Access Size Error Interrupt Mask */ +#define SMC_IMR_RB_EDGE0 (0x1u << 24) /**< \brief (SMC_IMR) Ready/Busy Line 0 Interrupt Mask */ +/* -------- SMC_ADDR : (SMC Offset: 0x018) SMC NFC Address Cycle Zero Register -------- */ +#define SMC_ADDR_ADDR_CYCLE0_Pos 0 +#define SMC_ADDR_ADDR_CYCLE0_Msk (0xffu << SMC_ADDR_ADDR_CYCLE0_Pos) /**< \brief (SMC_ADDR) NAND Flash Array Address cycle 0 */ +#define SMC_ADDR_ADDR_CYCLE0(value) ((SMC_ADDR_ADDR_CYCLE0_Msk & ((value) << SMC_ADDR_ADDR_CYCLE0_Pos))) +/* -------- SMC_BANK : (SMC Offset: 0x01C) SMC Bank Address Register -------- */ +#define SMC_BANK_BANK_Pos 0 +#define SMC_BANK_BANK_Msk (0x7u << SMC_BANK_BANK_Pos) /**< \brief (SMC_BANK) Bank Identifier */ +#define SMC_BANK_BANK(value) ((SMC_BANK_BANK_Msk & ((value) << SMC_BANK_BANK_Pos))) +/* -------- SMC_ECC_CTRL : (SMC Offset: 0x020) SMC ECC Control Register -------- */ +#define SMC_ECC_CTRL_RST (0x1u << 0) /**< \brief (SMC_ECC_CTRL) Reset ECC */ +#define SMC_ECC_CTRL_SWRST (0x1u << 1) /**< \brief (SMC_ECC_CTRL) Software Reset */ +/* -------- SMC_ECC_MD : (SMC Offset: 0x024) SMC ECC Mode Register -------- */ +#define SMC_ECC_MD_ECC_PAGESIZE_Pos 0 +#define SMC_ECC_MD_ECC_PAGESIZE_Msk (0x3u << SMC_ECC_MD_ECC_PAGESIZE_Pos) /**< \brief (SMC_ECC_MD) ECC Page Size */ +#define SMC_ECC_MD_ECC_PAGESIZE_PS512_16 (0x0u << 0) /**< \brief (SMC_ECC_MD) Main area 512 Bytes + Spare area 16 Bytes = 528 Bytes */ +#define SMC_ECC_MD_ECC_PAGESIZE_PS1024_32 (0x1u << 0) /**< \brief (SMC_ECC_MD) Main area 1024 Bytes + Spare area 32 Bytes = 1056 Bytes */ +#define SMC_ECC_MD_ECC_PAGESIZE_PS2048_64 (0x2u << 0) /**< \brief (SMC_ECC_MD) Main area 2048 Bytes + Spare area 64 Bytes = 2112 Bytes */ +#define SMC_ECC_MD_ECC_PAGESIZE_PS4096_128 (0x3u << 0) /**< \brief (SMC_ECC_MD) Main area 4096 Bytes + Spare area 128 Bytes = 4224 Bytes */ +#define SMC_ECC_MD_TYPCORREC_Pos 4 +#define SMC_ECC_MD_TYPCORREC_Msk (0x3u << SMC_ECC_MD_TYPCORREC_Pos) /**< \brief (SMC_ECC_MD) Type of Correction */ +#define SMC_ECC_MD_TYPCORREC_CPAGE (0x0u << 4) /**< \brief (SMC_ECC_MD) 1 bit correction for a page of 512/1024/2048/4096 Bytes (for 8 or 16-bit NAND Flash) */ +#define SMC_ECC_MD_TYPCORREC_C256B (0x1u << 4) /**< \brief (SMC_ECC_MD) 1 bit correction for 256 Bytes of data for a page of 512/2048/4096 bytes (for 8-bit NAND Flash only) */ +#define SMC_ECC_MD_TYPCORREC_C512B (0x2u << 4) /**< \brief (SMC_ECC_MD) 1 bit correction for 512 Bytes of data for a page of 512/2048/4096 bytes (for 8-bit NAND Flash only) */ +/* -------- SMC_ECC_SR1 : (SMC Offset: 0x028) SMC ECC Status 1 Register -------- */ +#define SMC_ECC_SR1_RECERR0 (0x1u << 0) /**< \brief (SMC_ECC_SR1) Recoverable Error */ +#define SMC_ECC_SR1_ECCERR0_Pos 1 +#define SMC_ECC_SR1_ECCERR0_Msk (0x3u << SMC_ECC_SR1_ECCERR0_Pos) /**< \brief (SMC_ECC_SR1) ECC Error */ +#define SMC_ECC_SR1_RECERR1 (0x1u << 4) /**< \brief (SMC_ECC_SR1) Recoverable Error in the page between the 256th and the 511th bytes or the 512nd and the 1023rd bytes */ +#define SMC_ECC_SR1_ECCERR1 (0x1u << 5) /**< \brief (SMC_ECC_SR1) ECC Error in the page between the 256th and the 511th bytes or between the 512nd and the 1023rd bytes */ +#define SMC_ECC_SR1_MULERR1 (0x1u << 6) /**< \brief (SMC_ECC_SR1) Multiple Error in the page between the 256th and the 511th bytes or between the 512nd and the 1023rd bytes */ +#define SMC_ECC_SR1_RECERR2 (0x1u << 8) /**< \brief (SMC_ECC_SR1) Recoverable Error in the page between the 512nd and the 767th bytes or between the 1024th and the 1535th bytes */ +#define SMC_ECC_SR1_ECCERR2 (0x1u << 9) /**< \brief (SMC_ECC_SR1) ECC Error in the page between the 512nd and the 767th bytes or between the 1024th and the 1535th bytes */ +#define SMC_ECC_SR1_MULERR2 (0x1u << 10) /**< \brief (SMC_ECC_SR1) Multiple Error in the page between the 512nd and the 767th bytes or between the 1024th and the 1535th bytes */ +#define SMC_ECC_SR1_RECERR3 (0x1u << 12) /**< \brief (SMC_ECC_SR1) Recoverable Error in the page between the 768th and the 1023rd bytes or between the 1536th and the 2047th bytes */ +#define SMC_ECC_SR1_ECCERR3 (0x1u << 13) /**< \brief (SMC_ECC_SR1) ECC Error in the page between the 768th and the 1023rd bytes or between the 1536th and the 2047th bytes */ +#define SMC_ECC_SR1_MULERR3 (0x1u << 14) /**< \brief (SMC_ECC_SR1) Multiple Error in the page between the 768th and the 1023rd bytes or between the 1536th and the 2047th bytes */ +#define SMC_ECC_SR1_RECERR4 (0x1u << 16) /**< \brief (SMC_ECC_SR1) Recoverable Error in the page between the 1024th and the 1279th bytes or between the 2048th and the 2559th bytes */ +#define SMC_ECC_SR1_ECCERR4_Pos 17 +#define SMC_ECC_SR1_ECCERR4_Msk (0x3u << SMC_ECC_SR1_ECCERR4_Pos) /**< \brief (SMC_ECC_SR1) ECC Error in the page between the 1024th and the 1279th bytes or between the 2048th and the 2559th bytes */ +#define SMC_ECC_SR1_RECERR5 (0x1u << 20) /**< \brief (SMC_ECC_SR1) Recoverable Error in the page between the 1280th and the 1535th bytes or between the 2560th and the 3071st bytes */ +#define SMC_ECC_SR1_ECCERR5_Pos 21 +#define SMC_ECC_SR1_ECCERR5_Msk (0x3u << SMC_ECC_SR1_ECCERR5_Pos) /**< \brief (SMC_ECC_SR1) ECC Error in the page between the 1280th and the 1535th bytes or between the 2560th and the 3071st bytes */ +#define SMC_ECC_SR1_RECERR6 (0x1u << 24) /**< \brief (SMC_ECC_SR1) Recoverable Error in the page between the 1536th and the 1791st bytes or between the 3072nd and the 3583rd bytes */ +#define SMC_ECC_SR1_ECCERR6_Pos 25 +#define SMC_ECC_SR1_ECCERR6_Msk (0x3u << SMC_ECC_SR1_ECCERR6_Pos) /**< \brief (SMC_ECC_SR1) ECC Error in the page between the 1536th and the 1791st bytes or between the 3072nd and the 3583rd bytes */ +#define SMC_ECC_SR1_RECERR7 (0x1u << 28) /**< \brief (SMC_ECC_SR1) Recoverable Error in the page between the 1792nd and the 2047th bytes or between the 3584th and the 4095th bytes */ +#define SMC_ECC_SR1_ECCERR7_Pos 29 +#define SMC_ECC_SR1_ECCERR7_Msk (0x3u << SMC_ECC_SR1_ECCERR7_Pos) /**< \brief (SMC_ECC_SR1) ECC Error in the page between the 1792nd and the 2047th bytes or between the 3584th and the 4095th bytes */ +/* -------- SMC_ECC_PR0 : (SMC Offset: 0x02C) SMC ECC Parity 0 Register -------- */ +#define SMC_ECC_PR0_BITADDR_Pos 0 +#define SMC_ECC_PR0_BITADDR_Msk (0xfu << SMC_ECC_PR0_BITADDR_Pos) /**< \brief (SMC_ECC_PR0) Bit Address */ +#define SMC_ECC_PR0_WORDADDR_Pos 4 +#define SMC_ECC_PR0_WORDADDR_Msk (0xfffu << SMC_ECC_PR0_WORDADDR_Pos) /**< \brief (SMC_ECC_PR0) Word Address */ +#define SMC_ECC_PR0_BITADDR_W9BIT_Pos 0 +#define SMC_ECC_PR0_BITADDR_W9BIT_Msk (0x7u << SMC_ECC_PR0_BITADDR_W9BIT_Pos) /**< \brief (SMC_ECC_PR0) Corrupted Bit Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR0_WORDADDR_W9BIT_Pos 3 +#define SMC_ECC_PR0_WORDADDR_W9BIT_Msk (0x1ffu << SMC_ECC_PR0_WORDADDR_W9BIT_Pos) /**< \brief (SMC_ECC_PR0) Corrupted Word Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR0_NPARITY_Pos 12 +#define SMC_ECC_PR0_NPARITY_Msk (0xfffu << SMC_ECC_PR0_NPARITY_Pos) /**< \brief (SMC_ECC_PR0) Parity N */ +#define SMC_ECC_PR0_BITADDR_W8BIT_Pos 0 +#define SMC_ECC_PR0_BITADDR_W8BIT_Msk (0x7u << SMC_ECC_PR0_BITADDR_W8BIT_Pos) /**< \brief (SMC_ECC_PR0) Corrupted Bit Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR0_WORDADDR_W8BIT_Pos 3 +#define SMC_ECC_PR0_WORDADDR_W8BIT_Msk (0xffu << SMC_ECC_PR0_WORDADDR_W8BIT_Pos) /**< \brief (SMC_ECC_PR0) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR0_NPARITY_W8BIT_Pos 12 +#define SMC_ECC_PR0_NPARITY_W8BIT_Msk (0x7ffu << SMC_ECC_PR0_NPARITY_W8BIT_Pos) /**< \brief (SMC_ECC_PR0) Parity N */ +/* -------- SMC_ECC_PR1 : (SMC Offset: 0x030) SMC ECC parity 1 Register -------- */ +#define SMC_ECC_PR1_NPARITY_Pos 0 +#define SMC_ECC_PR1_NPARITY_Msk (0xffffu << SMC_ECC_PR1_NPARITY_Pos) /**< \brief (SMC_ECC_PR1) Parity N */ +#define SMC_ECC_PR1_BITADDR_Pos 0 +#define SMC_ECC_PR1_BITADDR_Msk (0x7u << SMC_ECC_PR1_BITADDR_Pos) /**< \brief (SMC_ECC_PR1) Corrupted Bit Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR1_WORDADDR_Pos 3 +#define SMC_ECC_PR1_WORDADDR_Msk (0x1ffu << SMC_ECC_PR1_WORDADDR_Pos) /**< \brief (SMC_ECC_PR1) Corrupted Word Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR1_NPARITY_W9BIT_Pos 12 +#define SMC_ECC_PR1_NPARITY_W9BIT_Msk (0xfffu << SMC_ECC_PR1_NPARITY_W9BIT_Pos) /**< \brief (SMC_ECC_PR1) Parity N */ +#define SMC_ECC_PR1_WORDADDR_W8BIT_Pos 3 +#define SMC_ECC_PR1_WORDADDR_W8BIT_Msk (0xffu << SMC_ECC_PR1_WORDADDR_W8BIT_Pos) /**< \brief (SMC_ECC_PR1) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR1_NPARITY_W8BIT_Pos 12 +#define SMC_ECC_PR1_NPARITY_W8BIT_Msk (0x7ffu << SMC_ECC_PR1_NPARITY_W8BIT_Pos) /**< \brief (SMC_ECC_PR1) Parity N */ +/* -------- SMC_ECC_SR2 : (SMC Offset: 0x034) SMC ECC status 2 Register -------- */ +#define SMC_ECC_SR2_RECERR8 (0x1u << 0) /**< \brief (SMC_ECC_SR2) Recoverable Error in the page between the 2048th and the 2303rd bytes */ +#define SMC_ECC_SR2_ECCERR8_Pos 1 +#define SMC_ECC_SR2_ECCERR8_Msk (0x3u << SMC_ECC_SR2_ECCERR8_Pos) /**< \brief (SMC_ECC_SR2) ECC Error in the page between the 2048th and the 2303rd bytes */ +#define SMC_ECC_SR2_RECERR9 (0x1u << 4) /**< \brief (SMC_ECC_SR2) Recoverable Error in the page between the 2304th and the 2559th bytes */ +#define SMC_ECC_SR2_ECCERR9 (0x1u << 5) /**< \brief (SMC_ECC_SR2) ECC Error in the page between the 2304th and the 2559th bytes */ +#define SMC_ECC_SR2_MULERR9 (0x1u << 6) /**< \brief (SMC_ECC_SR2) Multiple Error in the page between the 2304th and the 2559th bytes */ +#define SMC_ECC_SR2_RECERR10 (0x1u << 8) /**< \brief (SMC_ECC_SR2) Recoverable Error in the page between the 2560th and the 2815th bytes */ +#define SMC_ECC_SR2_ECCERR10 (0x1u << 9) /**< \brief (SMC_ECC_SR2) ECC Error in the page between the 2560th and the 2815th bytes */ +#define SMC_ECC_SR2_MULERR10 (0x1u << 10) /**< \brief (SMC_ECC_SR2) Multiple Error in the page between the 2560th and the 2815th bytes */ +#define SMC_ECC_SR2_RECERR11 (0x1u << 12) /**< \brief (SMC_ECC_SR2) Recoverable Error in the page between the 2816th and the 3071st bytes */ +#define SMC_ECC_SR2_ECCERR11 (0x1u << 13) /**< \brief (SMC_ECC_SR2) ECC Error in the page between the 2816th and the 3071st bytes */ +#define SMC_ECC_SR2_MULERR11 (0x1u << 14) /**< \brief (SMC_ECC_SR2) Multiple Error in the page between the 2816th and the 3071st bytes */ +#define SMC_ECC_SR2_RECERR12 (0x1u << 16) /**< \brief (SMC_ECC_SR2) Recoverable Error in the page between the 3072nd and the 3327th bytes */ +#define SMC_ECC_SR2_ECCERR12_Pos 17 +#define SMC_ECC_SR2_ECCERR12_Msk (0x3u << SMC_ECC_SR2_ECCERR12_Pos) /**< \brief (SMC_ECC_SR2) ECC Error in the page between the 3072nd and the 3327th bytes */ +#define SMC_ECC_SR2_RECERR13 (0x1u << 20) /**< \brief (SMC_ECC_SR2) Recoverable Error in the page between the 3328th and the 3583rd bytes */ +#define SMC_ECC_SR2_ECCERR13_Pos 21 +#define SMC_ECC_SR2_ECCERR13_Msk (0x3u << SMC_ECC_SR2_ECCERR13_Pos) /**< \brief (SMC_ECC_SR2) ECC Error in the page between the 3328th and the 3583rd bytes */ +#define SMC_ECC_SR2_RECERR14 (0x1u << 24) /**< \brief (SMC_ECC_SR2) Recoverable Error in the page between the 3584th and the 3839th bytes */ +#define SMC_ECC_SR2_ECCERR14_Pos 25 +#define SMC_ECC_SR2_ECCERR14_Msk (0x3u << SMC_ECC_SR2_ECCERR14_Pos) /**< \brief (SMC_ECC_SR2) ECC Error in the page between the 3584th and the 3839th bytes */ +#define SMC_ECC_SR2_RECERR15 (0x1u << 28) /**< \brief (SMC_ECC_SR2) Recoverable Error in the page between the 3840th and the 4095th bytes */ +#define SMC_ECC_SR2_ECCERR15_Pos 29 +#define SMC_ECC_SR2_ECCERR15_Msk (0x3u << SMC_ECC_SR2_ECCERR15_Pos) /**< \brief (SMC_ECC_SR2) ECC Error in the page between the 3840th and the 4095th bytes */ +/* -------- SMC_ECC_PR2 : (SMC Offset: 0x038) SMC ECC parity 2 Register -------- */ +#define SMC_ECC_PR2_BITADDR_Pos 0 +#define SMC_ECC_PR2_BITADDR_Msk (0x7u << SMC_ECC_PR2_BITADDR_Pos) /**< \brief (SMC_ECC_PR2) Corrupted Bit Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR2_WORDADDR_Pos 3 +#define SMC_ECC_PR2_WORDADDR_Msk (0x1ffu << SMC_ECC_PR2_WORDADDR_Pos) /**< \brief (SMC_ECC_PR2) Corrupted Word Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR2_NPARITY_Pos 12 +#define SMC_ECC_PR2_NPARITY_Msk (0xfffu << SMC_ECC_PR2_NPARITY_Pos) /**< \brief (SMC_ECC_PR2) Parity N */ +#define SMC_ECC_PR2_WORDADDR_W8BIT_Pos 3 +#define SMC_ECC_PR2_WORDADDR_W8BIT_Msk (0xffu << SMC_ECC_PR2_WORDADDR_W8BIT_Pos) /**< \brief (SMC_ECC_PR2) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR2_NPARITY_W8BIT_Pos 12 +#define SMC_ECC_PR2_NPARITY_W8BIT_Msk (0x7ffu << SMC_ECC_PR2_NPARITY_W8BIT_Pos) /**< \brief (SMC_ECC_PR2) Parity N */ +/* -------- SMC_ECC_PR3 : (SMC Offset: 0x03C) SMC ECC parity 3 Register -------- */ +#define SMC_ECC_PR3_BITADDR_Pos 0 +#define SMC_ECC_PR3_BITADDR_Msk (0x7u << SMC_ECC_PR3_BITADDR_Pos) /**< \brief (SMC_ECC_PR3) Corrupted Bit Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR3_WORDADDR_Pos 3 +#define SMC_ECC_PR3_WORDADDR_Msk (0x1ffu << SMC_ECC_PR3_WORDADDR_Pos) /**< \brief (SMC_ECC_PR3) Corrupted Word Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR3_NPARITY_Pos 12 +#define SMC_ECC_PR3_NPARITY_Msk (0xfffu << SMC_ECC_PR3_NPARITY_Pos) /**< \brief (SMC_ECC_PR3) Parity N */ +#define SMC_ECC_PR3_WORDADDR_W8BIT_Pos 3 +#define SMC_ECC_PR3_WORDADDR_W8BIT_Msk (0xffu << SMC_ECC_PR3_WORDADDR_W8BIT_Pos) /**< \brief (SMC_ECC_PR3) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR3_NPARITY_W8BIT_Pos 12 +#define SMC_ECC_PR3_NPARITY_W8BIT_Msk (0x7ffu << SMC_ECC_PR3_NPARITY_W8BIT_Pos) /**< \brief (SMC_ECC_PR3) Parity N */ +/* -------- SMC_ECC_PR4 : (SMC Offset: 0x040) SMC ECC parity 4 Register -------- */ +#define SMC_ECC_PR4_BITADDR_Pos 0 +#define SMC_ECC_PR4_BITADDR_Msk (0x7u << SMC_ECC_PR4_BITADDR_Pos) /**< \brief (SMC_ECC_PR4) Corrupted Bit Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR4_WORDADDR_Pos 3 +#define SMC_ECC_PR4_WORDADDR_Msk (0x1ffu << SMC_ECC_PR4_WORDADDR_Pos) /**< \brief (SMC_ECC_PR4) Corrupted Word Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR4_NPARITY_Pos 12 +#define SMC_ECC_PR4_NPARITY_Msk (0xfffu << SMC_ECC_PR4_NPARITY_Pos) /**< \brief (SMC_ECC_PR4) Parity N */ +#define SMC_ECC_PR4_WORDADDR_W8BIT_Pos 3 +#define SMC_ECC_PR4_WORDADDR_W8BIT_Msk (0xffu << SMC_ECC_PR4_WORDADDR_W8BIT_Pos) /**< \brief (SMC_ECC_PR4) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR4_NPARITY_W8BIT_Pos 12 +#define SMC_ECC_PR4_NPARITY_W8BIT_Msk (0x7ffu << SMC_ECC_PR4_NPARITY_W8BIT_Pos) /**< \brief (SMC_ECC_PR4) Parity N */ +/* -------- SMC_ECC_PR5 : (SMC Offset: 0x044) SMC ECC parity 5 Register -------- */ +#define SMC_ECC_PR5_BITADDR_Pos 0 +#define SMC_ECC_PR5_BITADDR_Msk (0x7u << SMC_ECC_PR5_BITADDR_Pos) /**< \brief (SMC_ECC_PR5) Corrupted Bit Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR5_WORDADDR_Pos 3 +#define SMC_ECC_PR5_WORDADDR_Msk (0x1ffu << SMC_ECC_PR5_WORDADDR_Pos) /**< \brief (SMC_ECC_PR5) Corrupted Word Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR5_NPARITY_Pos 12 +#define SMC_ECC_PR5_NPARITY_Msk (0xfffu << SMC_ECC_PR5_NPARITY_Pos) /**< \brief (SMC_ECC_PR5) Parity N */ +#define SMC_ECC_PR5_WORDADDR_W8BIT_Pos 3 +#define SMC_ECC_PR5_WORDADDR_W8BIT_Msk (0xffu << SMC_ECC_PR5_WORDADDR_W8BIT_Pos) /**< \brief (SMC_ECC_PR5) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR5_NPARITY_W8BIT_Pos 12 +#define SMC_ECC_PR5_NPARITY_W8BIT_Msk (0x7ffu << SMC_ECC_PR5_NPARITY_W8BIT_Pos) /**< \brief (SMC_ECC_PR5) Parity N */ +/* -------- SMC_ECC_PR6 : (SMC Offset: 0x048) SMC ECC parity 6 Register -------- */ +#define SMC_ECC_PR6_BITADDR_Pos 0 +#define SMC_ECC_PR6_BITADDR_Msk (0x7u << SMC_ECC_PR6_BITADDR_Pos) /**< \brief (SMC_ECC_PR6) Corrupted Bit Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR6_WORDADDR_Pos 3 +#define SMC_ECC_PR6_WORDADDR_Msk (0x1ffu << SMC_ECC_PR6_WORDADDR_Pos) /**< \brief (SMC_ECC_PR6) Corrupted Word Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR6_NPARITY_Pos 12 +#define SMC_ECC_PR6_NPARITY_Msk (0xfffu << SMC_ECC_PR6_NPARITY_Pos) /**< \brief (SMC_ECC_PR6) Parity N */ +#define SMC_ECC_PR6_WORDADDR_W8BIT_Pos 3 +#define SMC_ECC_PR6_WORDADDR_W8BIT_Msk (0xffu << SMC_ECC_PR6_WORDADDR_W8BIT_Pos) /**< \brief (SMC_ECC_PR6) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR6_NPARITY_W8BIT_Pos 12 +#define SMC_ECC_PR6_NPARITY_W8BIT_Msk (0x7ffu << SMC_ECC_PR6_NPARITY_W8BIT_Pos) /**< \brief (SMC_ECC_PR6) Parity N */ +/* -------- SMC_ECC_PR7 : (SMC Offset: 0x04C) SMC ECC parity 7 Register -------- */ +#define SMC_ECC_PR7_BITADDR_Pos 0 +#define SMC_ECC_PR7_BITADDR_Msk (0x7u << SMC_ECC_PR7_BITADDR_Pos) /**< \brief (SMC_ECC_PR7) Corrupted Bit Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR7_WORDADDR_Pos 3 +#define SMC_ECC_PR7_WORDADDR_Msk (0x1ffu << SMC_ECC_PR7_WORDADDR_Pos) /**< \brief (SMC_ECC_PR7) Corrupted Word Address in the Page between (i x 512) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR7_NPARITY_Pos 12 +#define SMC_ECC_PR7_NPARITY_Msk (0xfffu << SMC_ECC_PR7_NPARITY_Pos) /**< \brief (SMC_ECC_PR7) Parity N */ +#define SMC_ECC_PR7_WORDADDR_W8BIT_Pos 3 +#define SMC_ECC_PR7_WORDADDR_W8BIT_Msk (0xffu << SMC_ECC_PR7_WORDADDR_W8BIT_Pos) /**< \brief (SMC_ECC_PR7) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR7_NPARITY_W8BIT_Pos 12 +#define SMC_ECC_PR7_NPARITY_W8BIT_Msk (0x7ffu << SMC_ECC_PR7_NPARITY_W8BIT_Pos) /**< \brief (SMC_ECC_PR7) Parity N */ +/* -------- SMC_ECC_PR8 : (SMC Offset: 0x050) SMC ECC parity 8 Register -------- */ +#define SMC_ECC_PR8_BITADDR_Pos 0 +#define SMC_ECC_PR8_BITADDR_Msk (0x7u << SMC_ECC_PR8_BITADDR_Pos) /**< \brief (SMC_ECC_PR8) Corrupted Bit Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR8_WORDADDR_Pos 3 +#define SMC_ECC_PR8_WORDADDR_Msk (0xffu << SMC_ECC_PR8_WORDADDR_Pos) /**< \brief (SMC_ECC_PR8) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR8_NPARITY_Pos 12 +#define SMC_ECC_PR8_NPARITY_Msk (0x7ffu << SMC_ECC_PR8_NPARITY_Pos) /**< \brief (SMC_ECC_PR8) Parity N */ +/* -------- SMC_ECC_PR9 : (SMC Offset: 0x054) SMC ECC parity 9 Register -------- */ +#define SMC_ECC_PR9_BITADDR_Pos 0 +#define SMC_ECC_PR9_BITADDR_Msk (0x7u << SMC_ECC_PR9_BITADDR_Pos) /**< \brief (SMC_ECC_PR9) Corrupted Bit Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR9_WORDADDR_Pos 3 +#define SMC_ECC_PR9_WORDADDR_Msk (0xffu << SMC_ECC_PR9_WORDADDR_Pos) /**< \brief (SMC_ECC_PR9) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR9_NPARITY_Pos 12 +#define SMC_ECC_PR9_NPARITY_Msk (0x7ffu << SMC_ECC_PR9_NPARITY_Pos) /**< \brief (SMC_ECC_PR9) Parity N */ +/* -------- SMC_ECC_PR10 : (SMC Offset: 0x058) SMC ECC parity 10 Register -------- */ +#define SMC_ECC_PR10_BITADDR_Pos 0 +#define SMC_ECC_PR10_BITADDR_Msk (0x7u << SMC_ECC_PR10_BITADDR_Pos) /**< \brief (SMC_ECC_PR10) Corrupted Bit Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR10_WORDADDR_Pos 3 +#define SMC_ECC_PR10_WORDADDR_Msk (0xffu << SMC_ECC_PR10_WORDADDR_Pos) /**< \brief (SMC_ECC_PR10) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR10_NPARITY_Pos 12 +#define SMC_ECC_PR10_NPARITY_Msk (0x7ffu << SMC_ECC_PR10_NPARITY_Pos) /**< \brief (SMC_ECC_PR10) Parity N */ +/* -------- SMC_ECC_PR11 : (SMC Offset: 0x05C) SMC ECC parity 11 Register -------- */ +#define SMC_ECC_PR11_BITADDR_Pos 0 +#define SMC_ECC_PR11_BITADDR_Msk (0x7u << SMC_ECC_PR11_BITADDR_Pos) /**< \brief (SMC_ECC_PR11) Corrupted Bit Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR11_WORDADDR_Pos 3 +#define SMC_ECC_PR11_WORDADDR_Msk (0xffu << SMC_ECC_PR11_WORDADDR_Pos) /**< \brief (SMC_ECC_PR11) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR11_NPARITY_Pos 12 +#define SMC_ECC_PR11_NPARITY_Msk (0x7ffu << SMC_ECC_PR11_NPARITY_Pos) /**< \brief (SMC_ECC_PR11) Parity N */ +/* -------- SMC_ECC_PR12 : (SMC Offset: 0x060) SMC ECC parity 12 Register -------- */ +#define SMC_ECC_PR12_BITADDR_Pos 0 +#define SMC_ECC_PR12_BITADDR_Msk (0x7u << SMC_ECC_PR12_BITADDR_Pos) /**< \brief (SMC_ECC_PR12) Corrupted Bit Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR12_WORDADDR_Pos 3 +#define SMC_ECC_PR12_WORDADDR_Msk (0xffu << SMC_ECC_PR12_WORDADDR_Pos) /**< \brief (SMC_ECC_PR12) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR12_NPARITY_Pos 12 +#define SMC_ECC_PR12_NPARITY_Msk (0x7ffu << SMC_ECC_PR12_NPARITY_Pos) /**< \brief (SMC_ECC_PR12) Parity N */ +/* -------- SMC_ECC_PR13 : (SMC Offset: 0x064) SMC ECC parity 13 Register -------- */ +#define SMC_ECC_PR13_BITADDR_Pos 0 +#define SMC_ECC_PR13_BITADDR_Msk (0x7u << SMC_ECC_PR13_BITADDR_Pos) /**< \brief (SMC_ECC_PR13) Corrupted Bit Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR13_WORDADDR_Pos 3 +#define SMC_ECC_PR13_WORDADDR_Msk (0xffu << SMC_ECC_PR13_WORDADDR_Pos) /**< \brief (SMC_ECC_PR13) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR13_NPARITY_Pos 12 +#define SMC_ECC_PR13_NPARITY_Msk (0x7ffu << SMC_ECC_PR13_NPARITY_Pos) /**< \brief (SMC_ECC_PR13) Parity N */ +/* -------- SMC_ECC_PR14 : (SMC Offset: 0x068) SMC ECC parity 14 Register -------- */ +#define SMC_ECC_PR14_BITADDR_Pos 0 +#define SMC_ECC_PR14_BITADDR_Msk (0x7u << SMC_ECC_PR14_BITADDR_Pos) /**< \brief (SMC_ECC_PR14) Corrupted Bit Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR14_WORDADDR_Pos 3 +#define SMC_ECC_PR14_WORDADDR_Msk (0xffu << SMC_ECC_PR14_WORDADDR_Pos) /**< \brief (SMC_ECC_PR14) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR14_NPARITY_Pos 12 +#define SMC_ECC_PR14_NPARITY_Msk (0x7ffu << SMC_ECC_PR14_NPARITY_Pos) /**< \brief (SMC_ECC_PR14) Parity N */ +/* -------- SMC_ECC_PR15 : (SMC Offset: 0x06C) SMC ECC parity 15 Register -------- */ +#define SMC_ECC_PR15_BITADDR_Pos 0 +#define SMC_ECC_PR15_BITADDR_Msk (0x7u << SMC_ECC_PR15_BITADDR_Pos) /**< \brief (SMC_ECC_PR15) Corrupted Bit Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR15_WORDADDR_Pos 3 +#define SMC_ECC_PR15_WORDADDR_Msk (0xffu << SMC_ECC_PR15_WORDADDR_Pos) /**< \brief (SMC_ECC_PR15) Corrupted Word Address in the Page between (i x 256) and ((i + 1) x 512) - 1) Bytes */ +#define SMC_ECC_PR15_NPARITY_Pos 12 +#define SMC_ECC_PR15_NPARITY_Msk (0x7ffu << SMC_ECC_PR15_NPARITY_Pos) /**< \brief (SMC_ECC_PR15) Parity N */ +/* -------- SMC_SETUP : (SMC Offset: N/A) SMC Setup Register -------- */ +#define SMC_SETUP_NWE_SETUP_Pos 0 +#define SMC_SETUP_NWE_SETUP_Msk (0x3fu << SMC_SETUP_NWE_SETUP_Pos) /**< \brief (SMC_SETUP) NWE Setup Length */ +#define SMC_SETUP_NWE_SETUP(value) ((SMC_SETUP_NWE_SETUP_Msk & ((value) << SMC_SETUP_NWE_SETUP_Pos))) +#define SMC_SETUP_NCS_WR_SETUP_Pos 8 +#define SMC_SETUP_NCS_WR_SETUP_Msk (0x3fu << SMC_SETUP_NCS_WR_SETUP_Pos) /**< \brief (SMC_SETUP) NCS Setup Length in Write Access */ +#define SMC_SETUP_NCS_WR_SETUP(value) ((SMC_SETUP_NCS_WR_SETUP_Msk & ((value) << SMC_SETUP_NCS_WR_SETUP_Pos))) +#define SMC_SETUP_NRD_SETUP_Pos 16 +#define SMC_SETUP_NRD_SETUP_Msk (0x3fu << SMC_SETUP_NRD_SETUP_Pos) /**< \brief (SMC_SETUP) NRD Setup Length */ +#define SMC_SETUP_NRD_SETUP(value) ((SMC_SETUP_NRD_SETUP_Msk & ((value) << SMC_SETUP_NRD_SETUP_Pos))) +#define SMC_SETUP_NCS_RD_SETUP_Pos 24 +#define SMC_SETUP_NCS_RD_SETUP_Msk (0x3fu << SMC_SETUP_NCS_RD_SETUP_Pos) /**< \brief (SMC_SETUP) NCS Setup Length in Read Access */ +#define SMC_SETUP_NCS_RD_SETUP(value) ((SMC_SETUP_NCS_RD_SETUP_Msk & ((value) << SMC_SETUP_NCS_RD_SETUP_Pos))) +/* -------- SMC_PULSE : (SMC Offset: N/A) SMC Pulse Register -------- */ +#define SMC_PULSE_NWE_PULSE_Pos 0 +#define SMC_PULSE_NWE_PULSE_Msk (0x3fu << SMC_PULSE_NWE_PULSE_Pos) /**< \brief (SMC_PULSE) NWE Pulse Length */ +#define SMC_PULSE_NWE_PULSE(value) ((SMC_PULSE_NWE_PULSE_Msk & ((value) << SMC_PULSE_NWE_PULSE_Pos))) +#define SMC_PULSE_NCS_WR_PULSE_Pos 8 +#define SMC_PULSE_NCS_WR_PULSE_Msk (0x3fu << SMC_PULSE_NCS_WR_PULSE_Pos) /**< \brief (SMC_PULSE) NCS Pulse Length in WRITE Access */ +#define SMC_PULSE_NCS_WR_PULSE(value) ((SMC_PULSE_NCS_WR_PULSE_Msk & ((value) << SMC_PULSE_NCS_WR_PULSE_Pos))) +#define SMC_PULSE_NRD_PULSE_Pos 16 +#define SMC_PULSE_NRD_PULSE_Msk (0x3fu << SMC_PULSE_NRD_PULSE_Pos) /**< \brief (SMC_PULSE) NRD Pulse Length */ +#define SMC_PULSE_NRD_PULSE(value) ((SMC_PULSE_NRD_PULSE_Msk & ((value) << SMC_PULSE_NRD_PULSE_Pos))) +#define SMC_PULSE_NCS_RD_PULSE_Pos 24 +#define SMC_PULSE_NCS_RD_PULSE_Msk (0x3fu << SMC_PULSE_NCS_RD_PULSE_Pos) /**< \brief (SMC_PULSE) NCS Pulse Length in READ Access */ +#define SMC_PULSE_NCS_RD_PULSE(value) ((SMC_PULSE_NCS_RD_PULSE_Msk & ((value) << SMC_PULSE_NCS_RD_PULSE_Pos))) +/* -------- SMC_CYCLE : (SMC Offset: N/A) SMC Cycle Register -------- */ +#define SMC_CYCLE_NWE_CYCLE_Pos 0 +#define SMC_CYCLE_NWE_CYCLE_Msk (0x1ffu << SMC_CYCLE_NWE_CYCLE_Pos) /**< \brief (SMC_CYCLE) Total Write Cycle Length */ +#define SMC_CYCLE_NWE_CYCLE(value) ((SMC_CYCLE_NWE_CYCLE_Msk & ((value) << SMC_CYCLE_NWE_CYCLE_Pos))) +#define SMC_CYCLE_NRD_CYCLE_Pos 16 +#define SMC_CYCLE_NRD_CYCLE_Msk (0x1ffu << SMC_CYCLE_NRD_CYCLE_Pos) /**< \brief (SMC_CYCLE) Total Read Cycle Length */ +#define SMC_CYCLE_NRD_CYCLE(value) ((SMC_CYCLE_NRD_CYCLE_Msk & ((value) << SMC_CYCLE_NRD_CYCLE_Pos))) +/* -------- SMC_TIMINGS : (SMC Offset: N/A) SMC Timings Register -------- */ +#define SMC_TIMINGS_TCLR_Pos 0 +#define SMC_TIMINGS_TCLR_Msk (0xfu << SMC_TIMINGS_TCLR_Pos) /**< \brief (SMC_TIMINGS) CLE to REN Low Delay */ +#define SMC_TIMINGS_TCLR(value) ((SMC_TIMINGS_TCLR_Msk & ((value) << SMC_TIMINGS_TCLR_Pos))) +#define SMC_TIMINGS_TADL_Pos 4 +#define SMC_TIMINGS_TADL_Msk (0xfu << SMC_TIMINGS_TADL_Pos) /**< \brief (SMC_TIMINGS) ALE to Data Start */ +#define SMC_TIMINGS_TADL(value) ((SMC_TIMINGS_TADL_Msk & ((value) << SMC_TIMINGS_TADL_Pos))) +#define SMC_TIMINGS_TAR_Pos 8 +#define SMC_TIMINGS_TAR_Msk (0xfu << SMC_TIMINGS_TAR_Pos) /**< \brief (SMC_TIMINGS) ALE to REN Low Delay */ +#define SMC_TIMINGS_TAR(value) ((SMC_TIMINGS_TAR_Msk & ((value) << SMC_TIMINGS_TAR_Pos))) +#define SMC_TIMINGS_OCMS (0x1u << 12) /**< \brief (SMC_TIMINGS) Off Chip Memory Scrambling Enable */ +#define SMC_TIMINGS_TRR_Pos 16 +#define SMC_TIMINGS_TRR_Msk (0xfu << SMC_TIMINGS_TRR_Pos) /**< \brief (SMC_TIMINGS) Ready to REN Low Delay */ +#define SMC_TIMINGS_TRR(value) ((SMC_TIMINGS_TRR_Msk & ((value) << SMC_TIMINGS_TRR_Pos))) +#define SMC_TIMINGS_TWB_Pos 24 +#define SMC_TIMINGS_TWB_Msk (0xfu << SMC_TIMINGS_TWB_Pos) /**< \brief (SMC_TIMINGS) WEN High to REN to Busy */ +#define SMC_TIMINGS_TWB(value) ((SMC_TIMINGS_TWB_Msk & ((value) << SMC_TIMINGS_TWB_Pos))) +#define SMC_TIMINGS_RBNSEL_Pos 28 +#define SMC_TIMINGS_RBNSEL_Msk (0x7u << SMC_TIMINGS_RBNSEL_Pos) /**< \brief (SMC_TIMINGS) Ready/Busy Line Selection */ +#define SMC_TIMINGS_RBNSEL(value) ((SMC_TIMINGS_RBNSEL_Msk & ((value) << SMC_TIMINGS_RBNSEL_Pos))) +#define SMC_TIMINGS_NFSEL (0x1u << 31) /**< \brief (SMC_TIMINGS) NAND Flash Selection */ +/* -------- SMC_MODE : (SMC Offset: N/A) SMC Mode Register -------- */ +#define SMC_MODE_READ_MODE (0x1u << 0) /**< \brief (SMC_MODE) */ +#define SMC_MODE_READ_MODE_NCS_CTRL (0x0u << 0) /**< \brief (SMC_MODE) The Read operation is controlled by the NCS signal. */ +#define SMC_MODE_READ_MODE_NRD_CTRL (0x1u << 0) /**< \brief (SMC_MODE) The Read operation is controlled by the NRD signal. */ +#define SMC_MODE_WRITE_MODE (0x1u << 1) /**< \brief (SMC_MODE) */ +#define SMC_MODE_WRITE_MODE_NCS_CTRL (0x0u << 1) /**< \brief (SMC_MODE) The Write operation is controller by the NCS signal. */ +#define SMC_MODE_WRITE_MODE_NWE_CTRL (0x1u << 1) /**< \brief (SMC_MODE) The Write operation is controlled by the NWE signal. */ +#define SMC_MODE_EXNW_MODE_Pos 4 +#define SMC_MODE_EXNW_MODE_Msk (0x3u << SMC_MODE_EXNW_MODE_Pos) /**< \brief (SMC_MODE) NWAIT Mode */ +#define SMC_MODE_EXNW_MODE_DISABLED (0x0u << 4) /**< \brief (SMC_MODE) Disabled */ +#define SMC_MODE_EXNW_MODE_FROZEN (0x2u << 4) /**< \brief (SMC_MODE) Frozen Mode */ +#define SMC_MODE_EXNW_MODE_READY (0x3u << 4) /**< \brief (SMC_MODE) Ready Mode */ +#define SMC_MODE_BAT (0x1u << 8) /**< \brief (SMC_MODE) Byte Access Type */ +#define SMC_MODE_DBW (0x1u << 12) /**< \brief (SMC_MODE) Data Bus Width */ +#define SMC_MODE_DBW_BIT_8 (0x0u << 12) /**< \brief (SMC_MODE) 8-bit bus */ +#define SMC_MODE_DBW_BIT_16 (0x1u << 12) /**< \brief (SMC_MODE) 16-bit bus */ +#define SMC_MODE_TDF_CYCLES_Pos 16 +#define SMC_MODE_TDF_CYCLES_Msk (0xfu << SMC_MODE_TDF_CYCLES_Pos) /**< \brief (SMC_MODE) Data Float Time */ +#define SMC_MODE_TDF_CYCLES(value) ((SMC_MODE_TDF_CYCLES_Msk & ((value) << SMC_MODE_TDF_CYCLES_Pos))) +#define SMC_MODE_TDF_MODE (0x1u << 20) /**< \brief (SMC_MODE) TDF Optimization */ +/* -------- SMC_OCMS : (SMC Offset: 0x110) SMC OCMS Register -------- */ +#define SMC_OCMS_SMSE (0x1u << 0) /**< \brief (SMC_OCMS) Static Memory Controller Scrambling Enable */ +#define SMC_OCMS_SRSE (0x1u << 1) /**< \brief (SMC_OCMS) SRAM Scrambling Enable */ +/* -------- SMC_KEY1 : (SMC Offset: 0x114) SMC OCMS KEY1 Register -------- */ +#define SMC_KEY1_KEY1_Pos 0 +#define SMC_KEY1_KEY1_Msk (0xffffffffu << SMC_KEY1_KEY1_Pos) /**< \brief (SMC_KEY1) Off Chip Memory Scrambling (OCMS) Key Part 1 */ +#define SMC_KEY1_KEY1(value) ((SMC_KEY1_KEY1_Msk & ((value) << SMC_KEY1_KEY1_Pos))) +/* -------- SMC_KEY2 : (SMC Offset: 0x118) SMC OCMS KEY2 Register -------- */ +#define SMC_KEY2_KEY2_Pos 0 +#define SMC_KEY2_KEY2_Msk (0xffffffffu << SMC_KEY2_KEY2_Pos) /**< \brief (SMC_KEY2) Off Chip Memory Scrambling (OCMS) Key Part 2 */ +#define SMC_KEY2_KEY2(value) ((SMC_KEY2_KEY2_Msk & ((value) << SMC_KEY2_KEY2_Pos))) +/* -------- SMC_WPCR : (SMC Offset: 0x1E4) Write Protection Control Register -------- */ +#define SMC_WPCR_WP_EN (0x1u << 0) /**< \brief (SMC_WPCR) Write Protection Enable */ +#define SMC_WPCR_WP_KEY_Pos 8 +#define SMC_WPCR_WP_KEY_Msk (0xffffffu << SMC_WPCR_WP_KEY_Pos) /**< \brief (SMC_WPCR) Write Protection KEY password */ +#define SMC_WPCR_WP_KEY(value) ((SMC_WPCR_WP_KEY_Msk & ((value) << SMC_WPCR_WP_KEY_Pos))) +/* -------- SMC_WPSR : (SMC Offset: 0x1E8) Write Protection Status Register -------- */ +#define SMC_WPSR_WP_VS_Pos 0 +#define SMC_WPSR_WP_VS_Msk (0xfu << SMC_WPSR_WP_VS_Pos) /**< \brief (SMC_WPSR) Write Protection Violation Status */ +#define SMC_WPSR_WP_VSRC_Pos 8 +#define SMC_WPSR_WP_VSRC_Msk (0xffffu << SMC_WPSR_WP_VSRC_Pos) /**< \brief (SMC_WPSR) Write Protection Violation Source */ + +/*@}*/ + + +#endif /* _SAM3XA_SMC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_spi.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_spi.h new file mode 100644 index 000000000..eaae250a9 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_spi.h @@ -0,0 +1,160 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_SPI_COMPONENT_ +#define _SAM3XA_SPI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Serial Peripheral Interface */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_SPI Serial Peripheral Interface */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Spi hardware registers */ +typedef struct { + WoReg SPI_CR; /**< \brief (Spi Offset: 0x00) Control Register */ + RwReg SPI_MR; /**< \brief (Spi Offset: 0x04) Mode Register */ + RoReg SPI_RDR; /**< \brief (Spi Offset: 0x08) Receive Data Register */ + WoReg SPI_TDR; /**< \brief (Spi Offset: 0x0C) Transmit Data Register */ + RoReg SPI_SR; /**< \brief (Spi Offset: 0x10) Status Register */ + WoReg SPI_IER; /**< \brief (Spi Offset: 0x14) Interrupt Enable Register */ + WoReg SPI_IDR; /**< \brief (Spi Offset: 0x18) Interrupt Disable Register */ + RoReg SPI_IMR; /**< \brief (Spi Offset: 0x1C) Interrupt Mask Register */ + RoReg Reserved1[4]; + RwReg SPI_CSR[4]; /**< \brief (Spi Offset: 0x30) Chip Select Register */ + RoReg Reserved2[41]; + RwReg SPI_WPMR; /**< \brief (Spi Offset: 0xE4) Write Protection Control Register */ + RoReg SPI_WPSR; /**< \brief (Spi Offset: 0xE8) Write Protection Status Register */ +} Spi; +#endif /* __ASSEMBLY__ */ +/* -------- SPI_CR : (SPI Offset: 0x00) Control Register -------- */ +#define SPI_CR_SPIEN (0x1u << 0) /**< \brief (SPI_CR) SPI Enable */ +#define SPI_CR_SPIDIS (0x1u << 1) /**< \brief (SPI_CR) SPI Disable */ +#define SPI_CR_SWRST (0x1u << 7) /**< \brief (SPI_CR) SPI Software Reset */ +#define SPI_CR_LASTXFER (0x1u << 24) /**< \brief (SPI_CR) Last Transfer */ +/* -------- SPI_MR : (SPI Offset: 0x04) Mode Register -------- */ +#define SPI_MR_MSTR (0x1u << 0) /**< \brief (SPI_MR) Master/Slave Mode */ +#define SPI_MR_PS (0x1u << 1) /**< \brief (SPI_MR) Peripheral Select */ +#define SPI_MR_PCSDEC (0x1u << 2) /**< \brief (SPI_MR) Chip Select Decode */ +#define SPI_MR_MODFDIS (0x1u << 4) /**< \brief (SPI_MR) Mode Fault Detection */ +#define SPI_MR_WDRBT (0x1u << 5) /**< \brief (SPI_MR) Wait Data Read Before Transfer */ +#define SPI_MR_LLB (0x1u << 7) /**< \brief (SPI_MR) Local Loopback Enable */ +#define SPI_MR_PCS_Pos 16 +#define SPI_MR_PCS_Msk (0xfu << SPI_MR_PCS_Pos) /**< \brief (SPI_MR) Peripheral Chip Select */ +#define SPI_MR_PCS(value) ((SPI_MR_PCS_Msk & ((value) << SPI_MR_PCS_Pos))) +#define SPI_MR_DLYBCS_Pos 24 +#define SPI_MR_DLYBCS_Msk (0xffu << SPI_MR_DLYBCS_Pos) /**< \brief (SPI_MR) Delay Between Chip Selects */ +#define SPI_MR_DLYBCS(value) ((SPI_MR_DLYBCS_Msk & ((value) << SPI_MR_DLYBCS_Pos))) +/* -------- SPI_RDR : (SPI Offset: 0x08) Receive Data Register -------- */ +#define SPI_RDR_RD_Pos 0 +#define SPI_RDR_RD_Msk (0xffffu << SPI_RDR_RD_Pos) /**< \brief (SPI_RDR) Receive Data */ +#define SPI_RDR_PCS_Pos 16 +#define SPI_RDR_PCS_Msk (0xfu << SPI_RDR_PCS_Pos) /**< \brief (SPI_RDR) Peripheral Chip Select */ +/* -------- SPI_TDR : (SPI Offset: 0x0C) Transmit Data Register -------- */ +#define SPI_TDR_TD_Pos 0 +#define SPI_TDR_TD_Msk (0xffffu << SPI_TDR_TD_Pos) /**< \brief (SPI_TDR) Transmit Data */ +#define SPI_TDR_TD(value) ((SPI_TDR_TD_Msk & ((value) << SPI_TDR_TD_Pos))) +#define SPI_TDR_PCS_Pos 16 +#define SPI_TDR_PCS_Msk (0xfu << SPI_TDR_PCS_Pos) /**< \brief (SPI_TDR) Peripheral Chip Select */ +#define SPI_TDR_PCS(value) ((SPI_TDR_PCS_Msk & ((value) << SPI_TDR_PCS_Pos))) +#define SPI_TDR_LASTXFER (0x1u << 24) /**< \brief (SPI_TDR) Last Transfer */ +/* -------- SPI_SR : (SPI Offset: 0x10) Status Register -------- */ +#define SPI_SR_RDRF (0x1u << 0) /**< \brief (SPI_SR) Receive Data Register Full */ +#define SPI_SR_TDRE (0x1u << 1) /**< \brief (SPI_SR) Transmit Data Register Empty */ +#define SPI_SR_MODF (0x1u << 2) /**< \brief (SPI_SR) Mode Fault Error */ +#define SPI_SR_OVRES (0x1u << 3) /**< \brief (SPI_SR) Overrun Error Status */ +#define SPI_SR_NSSR (0x1u << 8) /**< \brief (SPI_SR) NSS Rising */ +#define SPI_SR_TXEMPTY (0x1u << 9) /**< \brief (SPI_SR) Transmission Registers Empty */ +#define SPI_SR_UNDES (0x1u << 10) /**< \brief (SPI_SR) Underrun Error Status (Slave Mode Only) */ +#define SPI_SR_SPIENS (0x1u << 16) /**< \brief (SPI_SR) SPI Enable Status */ +/* -------- SPI_IER : (SPI Offset: 0x14) Interrupt Enable Register -------- */ +#define SPI_IER_RDRF (0x1u << 0) /**< \brief (SPI_IER) Receive Data Register Full Interrupt Enable */ +#define SPI_IER_TDRE (0x1u << 1) /**< \brief (SPI_IER) SPI Transmit Data Register Empty Interrupt Enable */ +#define SPI_IER_MODF (0x1u << 2) /**< \brief (SPI_IER) Mode Fault Error Interrupt Enable */ +#define SPI_IER_OVRES (0x1u << 3) /**< \brief (SPI_IER) Overrun Error Interrupt Enable */ +#define SPI_IER_NSSR (0x1u << 8) /**< \brief (SPI_IER) NSS Rising Interrupt Enable */ +#define SPI_IER_TXEMPTY (0x1u << 9) /**< \brief (SPI_IER) Transmission Registers Empty Enable */ +#define SPI_IER_UNDES (0x1u << 10) /**< \brief (SPI_IER) Underrun Error Interrupt Enable */ +/* -------- SPI_IDR : (SPI Offset: 0x18) Interrupt Disable Register -------- */ +#define SPI_IDR_RDRF (0x1u << 0) /**< \brief (SPI_IDR) Receive Data Register Full Interrupt Disable */ +#define SPI_IDR_TDRE (0x1u << 1) /**< \brief (SPI_IDR) SPI Transmit Data Register Empty Interrupt Disable */ +#define SPI_IDR_MODF (0x1u << 2) /**< \brief (SPI_IDR) Mode Fault Error Interrupt Disable */ +#define SPI_IDR_OVRES (0x1u << 3) /**< \brief (SPI_IDR) Overrun Error Interrupt Disable */ +#define SPI_IDR_NSSR (0x1u << 8) /**< \brief (SPI_IDR) NSS Rising Interrupt Disable */ +#define SPI_IDR_TXEMPTY (0x1u << 9) /**< \brief (SPI_IDR) Transmission Registers Empty Disable */ +#define SPI_IDR_UNDES (0x1u << 10) /**< \brief (SPI_IDR) Underrun Error Interrupt Disable */ +/* -------- SPI_IMR : (SPI Offset: 0x1C) Interrupt Mask Register -------- */ +#define SPI_IMR_RDRF (0x1u << 0) /**< \brief (SPI_IMR) Receive Data Register Full Interrupt Mask */ +#define SPI_IMR_TDRE (0x1u << 1) /**< \brief (SPI_IMR) SPI Transmit Data Register Empty Interrupt Mask */ +#define SPI_IMR_MODF (0x1u << 2) /**< \brief (SPI_IMR) Mode Fault Error Interrupt Mask */ +#define SPI_IMR_OVRES (0x1u << 3) /**< \brief (SPI_IMR) Overrun Error Interrupt Mask */ +#define SPI_IMR_NSSR (0x1u << 8) /**< \brief (SPI_IMR) NSS Rising Interrupt Mask */ +#define SPI_IMR_TXEMPTY (0x1u << 9) /**< \brief (SPI_IMR) Transmission Registers Empty Mask */ +#define SPI_IMR_UNDES (0x1u << 10) /**< \brief (SPI_IMR) Underrun Error Interrupt Mask */ +/* -------- SPI_CSR[4] : (SPI Offset: 0x30) Chip Select Register -------- */ +#define SPI_CSR_CPOL (0x1u << 0) /**< \brief (SPI_CSR[4]) Clock Polarity */ +#define SPI_CSR_NCPHA (0x1u << 1) /**< \brief (SPI_CSR[4]) Clock Phase */ +#define SPI_CSR_CSNAAT (0x1u << 2) /**< \brief (SPI_CSR[4]) Chip Select Not Active After Transfer (Ignored if CSAAT = 1) */ +#define SPI_CSR_CSAAT (0x1u << 3) /**< \brief (SPI_CSR[4]) Chip Select Not Active After Transfer (Ignored if CSAAT = 1) */ +#define SPI_CSR_BITS_Pos 4 +#define SPI_CSR_BITS_Msk (0xfu << SPI_CSR_BITS_Pos) /**< \brief (SPI_CSR[4]) Bits Per Transfer */ +#define SPI_CSR_BITS_8_BIT (0x0u << 4) /**< \brief (SPI_CSR[4]) 8 bits for transfer */ +#define SPI_CSR_BITS_9_BIT (0x1u << 4) /**< \brief (SPI_CSR[4]) 9 bits for transfer */ +#define SPI_CSR_BITS_10_BIT (0x2u << 4) /**< \brief (SPI_CSR[4]) 10 bits for transfer */ +#define SPI_CSR_BITS_11_BIT (0x3u << 4) /**< \brief (SPI_CSR[4]) 11 bits for transfer */ +#define SPI_CSR_BITS_12_BIT (0x4u << 4) /**< \brief (SPI_CSR[4]) 12 bits for transfer */ +#define SPI_CSR_BITS_13_BIT (0x5u << 4) /**< \brief (SPI_CSR[4]) 13 bits for transfer */ +#define SPI_CSR_BITS_14_BIT (0x6u << 4) /**< \brief (SPI_CSR[4]) 14 bits for transfer */ +#define SPI_CSR_BITS_15_BIT (0x7u << 4) /**< \brief (SPI_CSR[4]) 15 bits for transfer */ +#define SPI_CSR_BITS_16_BIT (0x8u << 4) /**< \brief (SPI_CSR[4]) 16 bits for transfer */ +#define SPI_CSR_SCBR_Pos 8 +#define SPI_CSR_SCBR_Msk (0xffu << SPI_CSR_SCBR_Pos) /**< \brief (SPI_CSR[4]) Serial Clock Baud Rate */ +#define SPI_CSR_SCBR(value) ((SPI_CSR_SCBR_Msk & ((value) << SPI_CSR_SCBR_Pos))) +#define SPI_CSR_DLYBS_Pos 16 +#define SPI_CSR_DLYBS_Msk (0xffu << SPI_CSR_DLYBS_Pos) /**< \brief (SPI_CSR[4]) Delay Before SPCK */ +#define SPI_CSR_DLYBS(value) ((SPI_CSR_DLYBS_Msk & ((value) << SPI_CSR_DLYBS_Pos))) +#define SPI_CSR_DLYBCT_Pos 24 +#define SPI_CSR_DLYBCT_Msk (0xffu << SPI_CSR_DLYBCT_Pos) /**< \brief (SPI_CSR[4]) Delay Between Consecutive Transfers */ +#define SPI_CSR_DLYBCT(value) ((SPI_CSR_DLYBCT_Msk & ((value) << SPI_CSR_DLYBCT_Pos))) +/* -------- SPI_WPMR : (SPI Offset: 0xE4) Write Protection Control Register -------- */ +#define SPI_WPMR_SPIWPEN (0x1u << 0) /**< \brief (SPI_WPMR) SPI Write Protection Enable */ +#define SPI_WPMR_SPIWPKEY_Pos 8 +#define SPI_WPMR_SPIWPKEY_Msk (0xffffffu << SPI_WPMR_SPIWPKEY_Pos) /**< \brief (SPI_WPMR) SPI Write Protection Key Password */ +#define SPI_WPMR_SPIWPKEY(value) ((SPI_WPMR_SPIWPKEY_Msk & ((value) << SPI_WPMR_SPIWPKEY_Pos))) +/* -------- SPI_WPSR : (SPI Offset: 0xE8) Write Protection Status Register -------- */ +#define SPI_WPSR_SPIWPVS_Pos 0 +#define SPI_WPSR_SPIWPVS_Msk (0x7u << SPI_WPSR_SPIWPVS_Pos) /**< \brief (SPI_WPSR) SPI Write Protection Violation Status */ +#define SPI_WPSR_SPIWPVSRC_Pos 8 +#define SPI_WPSR_SPIWPVSRC_Msk (0xffu << SPI_WPSR_SPIWPVSRC_Pos) /**< \brief (SPI_WPSR) SPI Write Protection Violation Source */ + +/*@}*/ + + +#endif /* _SAM3XA_SPI_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_ssc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_ssc.h new file mode 100644 index 000000000..ba96be3c0 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_ssc.h @@ -0,0 +1,270 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_SSC_COMPONENT_ +#define _SAM3XA_SSC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Synchronous Serial Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_SSC Synchronous Serial Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Ssc hardware registers */ +typedef struct { + WoReg SSC_CR; /**< \brief (Ssc Offset: 0x0) Control Register */ + RwReg SSC_CMR; /**< \brief (Ssc Offset: 0x4) Clock Mode Register */ + RoReg Reserved1[2]; + RwReg SSC_RCMR; /**< \brief (Ssc Offset: 0x10) Receive Clock Mode Register */ + RwReg SSC_RFMR; /**< \brief (Ssc Offset: 0x14) Receive Frame Mode Register */ + RwReg SSC_TCMR; /**< \brief (Ssc Offset: 0x18) Transmit Clock Mode Register */ + RwReg SSC_TFMR; /**< \brief (Ssc Offset: 0x1C) Transmit Frame Mode Register */ + RoReg SSC_RHR; /**< \brief (Ssc Offset: 0x20) Receive Holding Register */ + WoReg SSC_THR; /**< \brief (Ssc Offset: 0x24) Transmit Holding Register */ + RoReg Reserved2[2]; + RoReg SSC_RSHR; /**< \brief (Ssc Offset: 0x30) Receive Sync. Holding Register */ + RwReg SSC_TSHR; /**< \brief (Ssc Offset: 0x34) Transmit Sync. Holding Register */ + RwReg SSC_RC0R; /**< \brief (Ssc Offset: 0x38) Receive Compare 0 Register */ + RwReg SSC_RC1R; /**< \brief (Ssc Offset: 0x3C) Receive Compare 1 Register */ + RoReg SSC_SR; /**< \brief (Ssc Offset: 0x40) Status Register */ + WoReg SSC_IER; /**< \brief (Ssc Offset: 0x44) Interrupt Enable Register */ + WoReg SSC_IDR; /**< \brief (Ssc Offset: 0x48) Interrupt Disable Register */ + RoReg SSC_IMR; /**< \brief (Ssc Offset: 0x4C) Interrupt Mask Register */ + RoReg Reserved3[37]; + RwReg SSC_WPMR; /**< \brief (Ssc Offset: 0xE4) Write Protect Mode Register */ + RoReg SSC_WPSR; /**< \brief (Ssc Offset: 0xE8) Write Protect Status Register */ +} Ssc; +#endif /* __ASSEMBLY__ */ +/* -------- SSC_CR : (SSC Offset: 0x0) Control Register -------- */ +#define SSC_CR_RXEN (0x1u << 0) /**< \brief (SSC_CR) Receive Enable */ +#define SSC_CR_RXDIS (0x1u << 1) /**< \brief (SSC_CR) Receive Disable */ +#define SSC_CR_TXEN (0x1u << 8) /**< \brief (SSC_CR) Transmit Enable */ +#define SSC_CR_TXDIS (0x1u << 9) /**< \brief (SSC_CR) Transmit Disable */ +#define SSC_CR_SWRST (0x1u << 15) /**< \brief (SSC_CR) Software Reset */ +/* -------- SSC_CMR : (SSC Offset: 0x4) Clock Mode Register -------- */ +#define SSC_CMR_DIV_Pos 0 +#define SSC_CMR_DIV_Msk (0xfffu << SSC_CMR_DIV_Pos) /**< \brief (SSC_CMR) Clock Divider */ +#define SSC_CMR_DIV(value) ((SSC_CMR_DIV_Msk & ((value) << SSC_CMR_DIV_Pos))) +/* -------- SSC_RCMR : (SSC Offset: 0x10) Receive Clock Mode Register -------- */ +#define SSC_RCMR_CKS_Pos 0 +#define SSC_RCMR_CKS_Msk (0x3u << SSC_RCMR_CKS_Pos) /**< \brief (SSC_RCMR) Receive Clock Selection */ +#define SSC_RCMR_CKS_MCK (0x0u << 0) /**< \brief (SSC_RCMR) Divided Clock */ +#define SSC_RCMR_CKS_TK (0x1u << 0) /**< \brief (SSC_RCMR) TK Clock signal */ +#define SSC_RCMR_CKS_RK (0x2u << 0) /**< \brief (SSC_RCMR) RK pin */ +#define SSC_RCMR_CKO_Pos 2 +#define SSC_RCMR_CKO_Msk (0x7u << SSC_RCMR_CKO_Pos) /**< \brief (SSC_RCMR) Receive Clock Output Mode Selection */ +#define SSC_RCMR_CKO_NONE (0x0u << 2) /**< \brief (SSC_RCMR) None */ +#define SSC_RCMR_CKO_CONTINUOUS (0x1u << 2) /**< \brief (SSC_RCMR) Continuous Receive Clock */ +#define SSC_RCMR_CKO_TRANSFER (0x2u << 2) /**< \brief (SSC_RCMR) Receive Clock only during data transfers */ +#define SSC_RCMR_CKI (0x1u << 5) /**< \brief (SSC_RCMR) Receive Clock Inversion */ +#define SSC_RCMR_CKG_Pos 6 +#define SSC_RCMR_CKG_Msk (0x3u << SSC_RCMR_CKG_Pos) /**< \brief (SSC_RCMR) Receive Clock Gating Selection */ +#define SSC_RCMR_CKG_NONE (0x0u << 6) /**< \brief (SSC_RCMR) None */ +#define SSC_RCMR_CKG_CONTINUOUS (0x1u << 6) /**< \brief (SSC_RCMR) Continuous Receive Clock */ +#define SSC_RCMR_CKG_TRANSFER (0x2u << 6) /**< \brief (SSC_RCMR) Receive Clock only during data transfers */ +#define SSC_RCMR_START_Pos 8 +#define SSC_RCMR_START_Msk (0xfu << SSC_RCMR_START_Pos) /**< \brief (SSC_RCMR) Receive Start Selection */ +#define SSC_RCMR_START_CONTINUOUS (0x0u << 8) /**< \brief (SSC_RCMR) Continuous, as soon as the receiver is enabled, and immediately after the end of transfer of the previous data. */ +#define SSC_RCMR_START_TRANSMIT (0x1u << 8) /**< \brief (SSC_RCMR) Transmit start */ +#define SSC_RCMR_START_RF_LOW (0x2u << 8) /**< \brief (SSC_RCMR) Detection of a low level on RF signal */ +#define SSC_RCMR_START_RF_HIGH (0x3u << 8) /**< \brief (SSC_RCMR) Detection of a high level on RF signal */ +#define SSC_RCMR_START_RF_FALLING (0x4u << 8) /**< \brief (SSC_RCMR) Detection of a falling edge on RF signal */ +#define SSC_RCMR_START_RF_RISING (0x5u << 8) /**< \brief (SSC_RCMR) Detection of a rising edge on RF signal */ +#define SSC_RCMR_START_RF_LEVEL (0x6u << 8) /**< \brief (SSC_RCMR) Detection of any level change on RF signal */ +#define SSC_RCMR_START_RF_EDGE (0x7u << 8) /**< \brief (SSC_RCMR) Detection of any edge on RF signal */ +#define SSC_RCMR_START_CMP_0 (0x8u << 8) /**< \brief (SSC_RCMR) Compare 0 */ +#define SSC_RCMR_STOP (0x1u << 12) /**< \brief (SSC_RCMR) Receive Stop Selection */ +#define SSC_RCMR_STTDLY_Pos 16 +#define SSC_RCMR_STTDLY_Msk (0xffu << SSC_RCMR_STTDLY_Pos) /**< \brief (SSC_RCMR) Receive Start Delay */ +#define SSC_RCMR_STTDLY(value) ((SSC_RCMR_STTDLY_Msk & ((value) << SSC_RCMR_STTDLY_Pos))) +#define SSC_RCMR_PERIOD_Pos 24 +#define SSC_RCMR_PERIOD_Msk (0xffu << SSC_RCMR_PERIOD_Pos) /**< \brief (SSC_RCMR) Receive Period Divider Selection */ +#define SSC_RCMR_PERIOD(value) ((SSC_RCMR_PERIOD_Msk & ((value) << SSC_RCMR_PERIOD_Pos))) +/* -------- SSC_RFMR : (SSC Offset: 0x14) Receive Frame Mode Register -------- */ +#define SSC_RFMR_DATLEN_Pos 0 +#define SSC_RFMR_DATLEN_Msk (0x1fu << SSC_RFMR_DATLEN_Pos) /**< \brief (SSC_RFMR) Data Length */ +#define SSC_RFMR_DATLEN(value) ((SSC_RFMR_DATLEN_Msk & ((value) << SSC_RFMR_DATLEN_Pos))) +#define SSC_RFMR_LOOP (0x1u << 5) /**< \brief (SSC_RFMR) Loop Mode */ +#define SSC_RFMR_MSBF (0x1u << 7) /**< \brief (SSC_RFMR) Most Significant Bit First */ +#define SSC_RFMR_DATNB_Pos 8 +#define SSC_RFMR_DATNB_Msk (0xfu << SSC_RFMR_DATNB_Pos) /**< \brief (SSC_RFMR) Data Number per Frame */ +#define SSC_RFMR_DATNB(value) ((SSC_RFMR_DATNB_Msk & ((value) << SSC_RFMR_DATNB_Pos))) +#define SSC_RFMR_FSLEN_Pos 16 +#define SSC_RFMR_FSLEN_Msk (0xfu << SSC_RFMR_FSLEN_Pos) /**< \brief (SSC_RFMR) Receive Frame Sync Length */ +#define SSC_RFMR_FSLEN(value) ((SSC_RFMR_FSLEN_Msk & ((value) << SSC_RFMR_FSLEN_Pos))) +#define SSC_RFMR_FSOS_Pos 20 +#define SSC_RFMR_FSOS_Msk (0x7u << SSC_RFMR_FSOS_Pos) /**< \brief (SSC_RFMR) Receive Frame Sync Output Selection */ +#define SSC_RFMR_FSOS_NONE (0x0u << 20) /**< \brief (SSC_RFMR) None */ +#define SSC_RFMR_FSOS_NEGATIVE (0x1u << 20) /**< \brief (SSC_RFMR) Negative Pulse */ +#define SSC_RFMR_FSOS_POSITIVE (0x2u << 20) /**< \brief (SSC_RFMR) Positive Pulse */ +#define SSC_RFMR_FSOS_LOW (0x3u << 20) /**< \brief (SSC_RFMR) Driven Low during data transfer */ +#define SSC_RFMR_FSOS_HIGH (0x4u << 20) /**< \brief (SSC_RFMR) Driven High during data transfer */ +#define SSC_RFMR_FSOS_TOGGLING (0x5u << 20) /**< \brief (SSC_RFMR) Toggling at each start of data transfer */ +#define SSC_RFMR_FSEDGE (0x1u << 24) /**< \brief (SSC_RFMR) Frame Sync Edge Detection */ +#define SSC_RFMR_FSEDGE_POSITIVE (0x0u << 24) /**< \brief (SSC_RFMR) Positive Edge Detection */ +#define SSC_RFMR_FSEDGE_NEGATIVE (0x1u << 24) /**< \brief (SSC_RFMR) Negative Edge Detection */ +#define SSC_RFMR_FSLEN_EXT_Pos 28 +#define SSC_RFMR_FSLEN_EXT_Msk (0xfu << SSC_RFMR_FSLEN_EXT_Pos) /**< \brief (SSC_RFMR) FSLEN Field Extension */ +#define SSC_RFMR_FSLEN_EXT(value) ((SSC_RFMR_FSLEN_EXT_Msk & ((value) << SSC_RFMR_FSLEN_EXT_Pos))) +/* -------- SSC_TCMR : (SSC Offset: 0x18) Transmit Clock Mode Register -------- */ +#define SSC_TCMR_CKS_Pos 0 +#define SSC_TCMR_CKS_Msk (0x3u << SSC_TCMR_CKS_Pos) /**< \brief (SSC_TCMR) Transmit Clock Selection */ +#define SSC_TCMR_CKS_MCK (0x0u << 0) /**< \brief (SSC_TCMR) Divided Clock */ +#define SSC_TCMR_CKS_TK (0x1u << 0) /**< \brief (SSC_TCMR) TK Clock signal */ +#define SSC_TCMR_CKS_RK (0x2u << 0) /**< \brief (SSC_TCMR) RK pin */ +#define SSC_TCMR_CKO_Pos 2 +#define SSC_TCMR_CKO_Msk (0x7u << SSC_TCMR_CKO_Pos) /**< \brief (SSC_TCMR) Transmit Clock Output Mode Selection */ +#define SSC_TCMR_CKO_NONE (0x0u << 2) /**< \brief (SSC_TCMR) None */ +#define SSC_TCMR_CKO_CONTINUOUS (0x1u << 2) /**< \brief (SSC_TCMR) Continuous Receive Clock */ +#define SSC_TCMR_CKO_TRANSFER (0x2u << 2) /**< \brief (SSC_TCMR) Transmit Clock only during data transfers */ +#define SSC_TCMR_CKI (0x1u << 5) /**< \brief (SSC_TCMR) Transmit Clock Inversion */ +#define SSC_TCMR_CKG_Pos 6 +#define SSC_TCMR_CKG_Msk (0x3u << SSC_TCMR_CKG_Pos) /**< \brief (SSC_TCMR) Transmit Clock Gating Selection */ +#define SSC_TCMR_CKG_NONE (0x0u << 6) /**< \brief (SSC_TCMR) None */ +#define SSC_TCMR_CKG_CONTINUOUS (0x1u << 6) /**< \brief (SSC_TCMR) Transmit Clock enabled only if TF Low */ +#define SSC_TCMR_CKG_TRANSFER (0x2u << 6) /**< \brief (SSC_TCMR) Transmit Clock enabled only if TF High */ +#define SSC_TCMR_START_Pos 8 +#define SSC_TCMR_START_Msk (0xfu << SSC_TCMR_START_Pos) /**< \brief (SSC_TCMR) Transmit Start Selection */ +#define SSC_TCMR_START_CONTINUOUS (0x0u << 8) /**< \brief (SSC_TCMR) Continuous, as soon as a word is written in the SSC_THR Register (if Transmit is enabled), and immediately after the end of transfer of the previous data. */ +#define SSC_TCMR_START_RECEIVE (0x1u << 8) /**< \brief (SSC_TCMR) Receive start */ +#define SSC_TCMR_START_RF_LOW (0x2u << 8) /**< \brief (SSC_TCMR) Detection of a low level on TF signal */ +#define SSC_TCMR_START_RF_HIGH (0x3u << 8) /**< \brief (SSC_TCMR) Detection of a high level on TF signal */ +#define SSC_TCMR_START_RF_FALLING (0x4u << 8) /**< \brief (SSC_TCMR) Detection of a falling edge on TF signal */ +#define SSC_TCMR_START_RF_RISING (0x5u << 8) /**< \brief (SSC_TCMR) Detection of a rising edge on TF signal */ +#define SSC_TCMR_START_RF_LEVEL (0x6u << 8) /**< \brief (SSC_TCMR) Detection of any level change on TF signal */ +#define SSC_TCMR_START_RF_EDGE (0x7u << 8) /**< \brief (SSC_TCMR) Detection of any edge on TF signal */ +#define SSC_TCMR_START_CMP_0 (0x8u << 8) /**< \brief (SSC_TCMR) Compare 0 */ +#define SSC_TCMR_STTDLY_Pos 16 +#define SSC_TCMR_STTDLY_Msk (0xffu << SSC_TCMR_STTDLY_Pos) /**< \brief (SSC_TCMR) Transmit Start Delay */ +#define SSC_TCMR_STTDLY(value) ((SSC_TCMR_STTDLY_Msk & ((value) << SSC_TCMR_STTDLY_Pos))) +#define SSC_TCMR_PERIOD_Pos 24 +#define SSC_TCMR_PERIOD_Msk (0xffu << SSC_TCMR_PERIOD_Pos) /**< \brief (SSC_TCMR) Transmit Period Divider Selection */ +#define SSC_TCMR_PERIOD(value) ((SSC_TCMR_PERIOD_Msk & ((value) << SSC_TCMR_PERIOD_Pos))) +/* -------- SSC_TFMR : (SSC Offset: 0x1C) Transmit Frame Mode Register -------- */ +#define SSC_TFMR_DATLEN_Pos 0 +#define SSC_TFMR_DATLEN_Msk (0x1fu << SSC_TFMR_DATLEN_Pos) /**< \brief (SSC_TFMR) Data Length */ +#define SSC_TFMR_DATLEN(value) ((SSC_TFMR_DATLEN_Msk & ((value) << SSC_TFMR_DATLEN_Pos))) +#define SSC_TFMR_DATDEF (0x1u << 5) /**< \brief (SSC_TFMR) Data Default Value */ +#define SSC_TFMR_MSBF (0x1u << 7) /**< \brief (SSC_TFMR) Most Significant Bit First */ +#define SSC_TFMR_DATNB_Pos 8 +#define SSC_TFMR_DATNB_Msk (0xfu << SSC_TFMR_DATNB_Pos) /**< \brief (SSC_TFMR) Data Number per frame */ +#define SSC_TFMR_DATNB(value) ((SSC_TFMR_DATNB_Msk & ((value) << SSC_TFMR_DATNB_Pos))) +#define SSC_TFMR_FSLEN_Pos 16 +#define SSC_TFMR_FSLEN_Msk (0xfu << SSC_TFMR_FSLEN_Pos) /**< \brief (SSC_TFMR) Transmit Frame Sync Length */ +#define SSC_TFMR_FSLEN(value) ((SSC_TFMR_FSLEN_Msk & ((value) << SSC_TFMR_FSLEN_Pos))) +#define SSC_TFMR_FSOS_Pos 20 +#define SSC_TFMR_FSOS_Msk (0x7u << SSC_TFMR_FSOS_Pos) /**< \brief (SSC_TFMR) Transmit Frame Sync Output Selection */ +#define SSC_TFMR_FSOS_NONE (0x0u << 20) /**< \brief (SSC_TFMR) None */ +#define SSC_TFMR_FSOS_NEGATIVE (0x1u << 20) /**< \brief (SSC_TFMR) Negative Pulse */ +#define SSC_TFMR_FSOS_POSITIVE (0x2u << 20) /**< \brief (SSC_TFMR) Positive Pulse */ +#define SSC_TFMR_FSOS_LOW (0x3u << 20) /**< \brief (SSC_TFMR) Driven Low during data transfer */ +#define SSC_TFMR_FSOS_HIGH (0x4u << 20) /**< \brief (SSC_TFMR) Driven High during data transfer */ +#define SSC_TFMR_FSOS_TOGGLING (0x5u << 20) /**< \brief (SSC_TFMR) Toggling at each start of data transfer */ +#define SSC_TFMR_FSDEN (0x1u << 23) /**< \brief (SSC_TFMR) Frame Sync Data Enable */ +#define SSC_TFMR_FSEDGE (0x1u << 24) /**< \brief (SSC_TFMR) Frame Sync Edge Detection */ +#define SSC_TFMR_FSEDGE_POSITIVE (0x0u << 24) /**< \brief (SSC_TFMR) Positive Edge Detection */ +#define SSC_TFMR_FSEDGE_NEGATIVE (0x1u << 24) /**< \brief (SSC_TFMR) Negative Edge Detection */ +#define SSC_TFMR_FSLEN_EXT_Pos 28 +#define SSC_TFMR_FSLEN_EXT_Msk (0xfu << SSC_TFMR_FSLEN_EXT_Pos) /**< \brief (SSC_TFMR) FSLEN Field Extension */ +#define SSC_TFMR_FSLEN_EXT(value) ((SSC_TFMR_FSLEN_EXT_Msk & ((value) << SSC_TFMR_FSLEN_EXT_Pos))) +/* -------- SSC_RHR : (SSC Offset: 0x20) Receive Holding Register -------- */ +#define SSC_RHR_RDAT_Pos 0 +#define SSC_RHR_RDAT_Msk (0xffffffffu << SSC_RHR_RDAT_Pos) /**< \brief (SSC_RHR) Receive Data */ +/* -------- SSC_THR : (SSC Offset: 0x24) Transmit Holding Register -------- */ +#define SSC_THR_TDAT_Pos 0 +#define SSC_THR_TDAT_Msk (0xffffffffu << SSC_THR_TDAT_Pos) /**< \brief (SSC_THR) Transmit Data */ +#define SSC_THR_TDAT(value) ((SSC_THR_TDAT_Msk & ((value) << SSC_THR_TDAT_Pos))) +/* -------- SSC_RSHR : (SSC Offset: 0x30) Receive Sync. Holding Register -------- */ +#define SSC_RSHR_RSDAT_Pos 0 +#define SSC_RSHR_RSDAT_Msk (0xffffu << SSC_RSHR_RSDAT_Pos) /**< \brief (SSC_RSHR) Receive Synchronization Data */ +/* -------- SSC_TSHR : (SSC Offset: 0x34) Transmit Sync. Holding Register -------- */ +#define SSC_TSHR_TSDAT_Pos 0 +#define SSC_TSHR_TSDAT_Msk (0xffffu << SSC_TSHR_TSDAT_Pos) /**< \brief (SSC_TSHR) Transmit Synchronization Data */ +#define SSC_TSHR_TSDAT(value) ((SSC_TSHR_TSDAT_Msk & ((value) << SSC_TSHR_TSDAT_Pos))) +/* -------- SSC_RC0R : (SSC Offset: 0x38) Receive Compare 0 Register -------- */ +#define SSC_RC0R_CP0_Pos 0 +#define SSC_RC0R_CP0_Msk (0xffffu << SSC_RC0R_CP0_Pos) /**< \brief (SSC_RC0R) Receive Compare Data 0 */ +#define SSC_RC0R_CP0(value) ((SSC_RC0R_CP0_Msk & ((value) << SSC_RC0R_CP0_Pos))) +/* -------- SSC_RC1R : (SSC Offset: 0x3C) Receive Compare 1 Register -------- */ +#define SSC_RC1R_CP1_Pos 0 +#define SSC_RC1R_CP1_Msk (0xffffu << SSC_RC1R_CP1_Pos) /**< \brief (SSC_RC1R) Receive Compare Data 1 */ +#define SSC_RC1R_CP1(value) ((SSC_RC1R_CP1_Msk & ((value) << SSC_RC1R_CP1_Pos))) +/* -------- SSC_SR : (SSC Offset: 0x40) Status Register -------- */ +#define SSC_SR_TXRDY (0x1u << 0) /**< \brief (SSC_SR) Transmit Ready */ +#define SSC_SR_TXEMPTY (0x1u << 1) /**< \brief (SSC_SR) Transmit Empty */ +#define SSC_SR_RXRDY (0x1u << 4) /**< \brief (SSC_SR) Receive Ready */ +#define SSC_SR_OVRUN (0x1u << 5) /**< \brief (SSC_SR) Receive Overrun */ +#define SSC_SR_CP0 (0x1u << 8) /**< \brief (SSC_SR) Compare 0 */ +#define SSC_SR_CP1 (0x1u << 9) /**< \brief (SSC_SR) Compare 1 */ +#define SSC_SR_TXSYN (0x1u << 10) /**< \brief (SSC_SR) Transmit Sync */ +#define SSC_SR_RXSYN (0x1u << 11) /**< \brief (SSC_SR) Receive Sync */ +#define SSC_SR_TXEN (0x1u << 16) /**< \brief (SSC_SR) Transmit Enable */ +#define SSC_SR_RXEN (0x1u << 17) /**< \brief (SSC_SR) Receive Enable */ +/* -------- SSC_IER : (SSC Offset: 0x44) Interrupt Enable Register -------- */ +#define SSC_IER_TXRDY (0x1u << 0) /**< \brief (SSC_IER) Transmit Ready Interrupt Enable */ +#define SSC_IER_TXEMPTY (0x1u << 1) /**< \brief (SSC_IER) Transmit Empty Interrupt Enable */ +#define SSC_IER_RXRDY (0x1u << 4) /**< \brief (SSC_IER) Receive Ready Interrupt Enable */ +#define SSC_IER_OVRUN (0x1u << 5) /**< \brief (SSC_IER) Receive Overrun Interrupt Enable */ +#define SSC_IER_CP0 (0x1u << 8) /**< \brief (SSC_IER) Compare 0 Interrupt Enable */ +#define SSC_IER_CP1 (0x1u << 9) /**< \brief (SSC_IER) Compare 1 Interrupt Enable */ +#define SSC_IER_TXSYN (0x1u << 10) /**< \brief (SSC_IER) Tx Sync Interrupt Enable */ +#define SSC_IER_RXSYN (0x1u << 11) /**< \brief (SSC_IER) Rx Sync Interrupt Enable */ +/* -------- SSC_IDR : (SSC Offset: 0x48) Interrupt Disable Register -------- */ +#define SSC_IDR_TXRDY (0x1u << 0) /**< \brief (SSC_IDR) Transmit Ready Interrupt Disable */ +#define SSC_IDR_TXEMPTY (0x1u << 1) /**< \brief (SSC_IDR) Transmit Empty Interrupt Disable */ +#define SSC_IDR_RXRDY (0x1u << 4) /**< \brief (SSC_IDR) Receive Ready Interrupt Disable */ +#define SSC_IDR_OVRUN (0x1u << 5) /**< \brief (SSC_IDR) Receive Overrun Interrupt Disable */ +#define SSC_IDR_CP0 (0x1u << 8) /**< \brief (SSC_IDR) Compare 0 Interrupt Disable */ +#define SSC_IDR_CP1 (0x1u << 9) /**< \brief (SSC_IDR) Compare 1 Interrupt Disable */ +#define SSC_IDR_TXSYN (0x1u << 10) /**< \brief (SSC_IDR) Tx Sync Interrupt Enable */ +#define SSC_IDR_RXSYN (0x1u << 11) /**< \brief (SSC_IDR) Rx Sync Interrupt Enable */ +/* -------- SSC_IMR : (SSC Offset: 0x4C) Interrupt Mask Register -------- */ +#define SSC_IMR_TXRDY (0x1u << 0) /**< \brief (SSC_IMR) Transmit Ready Interrupt Mask */ +#define SSC_IMR_TXEMPTY (0x1u << 1) /**< \brief (SSC_IMR) Transmit Empty Interrupt Mask */ +#define SSC_IMR_RXRDY (0x1u << 4) /**< \brief (SSC_IMR) Receive Ready Interrupt Mask */ +#define SSC_IMR_OVRUN (0x1u << 5) /**< \brief (SSC_IMR) Receive Overrun Interrupt Mask */ +#define SSC_IMR_CP0 (0x1u << 8) /**< \brief (SSC_IMR) Compare 0 Interrupt Mask */ +#define SSC_IMR_CP1 (0x1u << 9) /**< \brief (SSC_IMR) Compare 1 Interrupt Mask */ +#define SSC_IMR_TXSYN (0x1u << 10) /**< \brief (SSC_IMR) Tx Sync Interrupt Mask */ +#define SSC_IMR_RXSYN (0x1u << 11) /**< \brief (SSC_IMR) Rx Sync Interrupt Mask */ +/* -------- SSC_WPMR : (SSC Offset: 0xE4) Write Protect Mode Register -------- */ +#define SSC_WPMR_WPEN (0x1u << 0) /**< \brief (SSC_WPMR) Write Protect Enable */ +#define SSC_WPMR_WPKEY_Pos 8 +#define SSC_WPMR_WPKEY_Msk (0xffffffu << SSC_WPMR_WPKEY_Pos) /**< \brief (SSC_WPMR) Write Protect KEY */ +#define SSC_WPMR_WPKEY(value) ((SSC_WPMR_WPKEY_Msk & ((value) << SSC_WPMR_WPKEY_Pos))) +/* -------- SSC_WPSR : (SSC Offset: 0xE8) Write Protect Status Register -------- */ +#define SSC_WPSR_WPVS (0x1u << 0) /**< \brief (SSC_WPSR) Write Protect Violation Status */ +#define SSC_WPSR_WPVSRC_Pos 8 +#define SSC_WPSR_WPVSRC_Msk (0xffffu << SSC_WPSR_WPVSRC_Pos) /**< \brief (SSC_WPSR) Write Protect Violation Source */ + +/*@}*/ + + +#endif /* _SAM3XA_SSC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_supc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_supc.h new file mode 100644 index 000000000..36af1123c --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_supc.h @@ -0,0 +1,312 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_SUPC_COMPONENT_ +#define _SAM3XA_SUPC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Supply Controller */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_SUPC Supply Controller */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Supc hardware registers */ +typedef struct { + WoReg SUPC_CR; /**< \brief (Supc Offset: 0x00) Supply Controller Control Register */ + RwReg SUPC_SMMR; /**< \brief (Supc Offset: 0x04) Supply Controller Supply Monitor Mode Register */ + RwReg SUPC_MR; /**< \brief (Supc Offset: 0x08) Supply Controller Mode Register */ + RwReg SUPC_WUMR; /**< \brief (Supc Offset: 0x0C) Supply Controller Wake Up Mode Register */ + RwReg SUPC_WUIR; /**< \brief (Supc Offset: 0x10) Supply Controller Wake Up Inputs Register */ + RoReg SUPC_SR; /**< \brief (Supc Offset: 0x14) Supply Controller Status Register */ +} Supc; +#endif /* __ASSEMBLY__ */ +/* -------- SUPC_CR : (SUPC Offset: 0x00) Supply Controller Control Register -------- */ +#define SUPC_CR_VROFF (0x1u << 2) /**< \brief (SUPC_CR) Voltage Regulator Off */ +#define SUPC_CR_VROFF_NO_EFFECT (0x0u << 2) /**< \brief (SUPC_CR) no effect. */ +#define SUPC_CR_VROFF_STOP_VREG (0x1u << 2) /**< \brief (SUPC_CR) if KEY is correct, asserts vddcore_nreset and stops the voltage regulator. */ +#define SUPC_CR_XTALSEL (0x1u << 3) /**< \brief (SUPC_CR) Crystal Oscillator Select */ +#define SUPC_CR_XTALSEL_NO_EFFECT (0x0u << 3) /**< \brief (SUPC_CR) no effect. */ +#define SUPC_CR_XTALSEL_CRYSTAL_SEL (0x1u << 3) /**< \brief (SUPC_CR) if KEY is correct, switches the slow clock on the crystal oscillator output. */ +#define SUPC_CR_KEY_Pos 24 +#define SUPC_CR_KEY_Msk (0xffu << SUPC_CR_KEY_Pos) /**< \brief (SUPC_CR) Password */ +#define SUPC_CR_KEY(value) ((SUPC_CR_KEY_Msk & ((value) << SUPC_CR_KEY_Pos))) +/* -------- SUPC_SMMR : (SUPC Offset: 0x04) Supply Controller Supply Monitor Mode Register -------- */ +#define SUPC_SMMR_SMTH_Pos 0 +#define SUPC_SMMR_SMTH_Msk (0xfu << SUPC_SMMR_SMTH_Pos) /**< \brief (SUPC_SMMR) Supply Monitor Threshold */ +#define SUPC_SMMR_SMTH_1_9V (0x0u << 0) /**< \brief (SUPC_SMMR) 1.9 V */ +#define SUPC_SMMR_SMTH_2_0V (0x1u << 0) /**< \brief (SUPC_SMMR) 2.0 V */ +#define SUPC_SMMR_SMTH_2_1V (0x2u << 0) /**< \brief (SUPC_SMMR) 2.1 V */ +#define SUPC_SMMR_SMTH_2_2V (0x3u << 0) /**< \brief (SUPC_SMMR) 2.2 V */ +#define SUPC_SMMR_SMTH_2_3V (0x4u << 0) /**< \brief (SUPC_SMMR) 2.3 V */ +#define SUPC_SMMR_SMTH_2_4V (0x5u << 0) /**< \brief (SUPC_SMMR) 2.4 V */ +#define SUPC_SMMR_SMTH_2_5V (0x6u << 0) /**< \brief (SUPC_SMMR) 2.5 V */ +#define SUPC_SMMR_SMTH_2_6V (0x7u << 0) /**< \brief (SUPC_SMMR) 2.6 V */ +#define SUPC_SMMR_SMTH_2_7V (0x8u << 0) /**< \brief (SUPC_SMMR) 2.7 V */ +#define SUPC_SMMR_SMTH_2_8V (0x9u << 0) /**< \brief (SUPC_SMMR) 2.8 V */ +#define SUPC_SMMR_SMTH_2_9V (0xAu << 0) /**< \brief (SUPC_SMMR) 2.9 V */ +#define SUPC_SMMR_SMTH_3_0V (0xBu << 0) /**< \brief (SUPC_SMMR) 3.0 V */ +#define SUPC_SMMR_SMTH_3_1V (0xCu << 0) /**< \brief (SUPC_SMMR) 3.1 V */ +#define SUPC_SMMR_SMTH_3_2V (0xDu << 0) /**< \brief (SUPC_SMMR) 3.2 V */ +#define SUPC_SMMR_SMTH_3_3V (0xEu << 0) /**< \brief (SUPC_SMMR) 3.3 V */ +#define SUPC_SMMR_SMTH_3_4V (0xFu << 0) /**< \brief (SUPC_SMMR) 3.4 V */ +#define SUPC_SMMR_SMSMPL_Pos 8 +#define SUPC_SMMR_SMSMPL_Msk (0x7u << SUPC_SMMR_SMSMPL_Pos) /**< \brief (SUPC_SMMR) Supply Monitor Sampling Period */ +#define SUPC_SMMR_SMSMPL_SMD (0x0u << 8) /**< \brief (SUPC_SMMR) Supply Monitor disabled */ +#define SUPC_SMMR_SMSMPL_CSM (0x1u << 8) /**< \brief (SUPC_SMMR) Continuous Supply Monitor */ +#define SUPC_SMMR_SMSMPL_32SLCK (0x2u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 32 SLCK periods */ +#define SUPC_SMMR_SMSMPL_256SLCK (0x3u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 256 SLCK periods */ +#define SUPC_SMMR_SMSMPL_2048SLCK (0x4u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 2,048 SLCK periods */ +#define SUPC_SMMR_SMRSTEN (0x1u << 12) /**< \brief (SUPC_SMMR) Supply Monitor Reset Enable */ +#define SUPC_SMMR_SMRSTEN_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_SMMR) the core reset signal "vddcore_nreset" is not affected when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMRSTEN_ENABLE (0x1u << 12) /**< \brief (SUPC_SMMR) the core reset signal, vddcore_nreset is asserted when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMIEN (0x1u << 13) /**< \brief (SUPC_SMMR) Supply Monitor Interrupt Enable */ +#define SUPC_SMMR_SMIEN_NOT_ENABLE (0x0u << 13) /**< \brief (SUPC_SMMR) the SUPC interrupt signal is not affected when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMIEN_ENABLE (0x1u << 13) /**< \brief (SUPC_SMMR) the SUPC interrupt signal is asserted when a supply monitor detection occurs. */ +/* -------- SUPC_MR : (SUPC Offset: 0x08) Supply Controller Mode Register -------- */ +#define SUPC_MR_BODRSTEN (0x1u << 12) /**< \brief (SUPC_MR) Brownout Detector Reset Enable */ +#define SUPC_MR_BODRSTEN_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_MR) the core reset signal "vddcore_nreset" is not affected when a brownout detection occurs. */ +#define SUPC_MR_BODRSTEN_ENABLE (0x1u << 12) /**< \brief (SUPC_MR) the core reset signal, vddcore_nreset is asserted when a brownout detection occurs. */ +#define SUPC_MR_BODDIS (0x1u << 13) /**< \brief (SUPC_MR) Brownout Detector Disable */ +#define SUPC_MR_BODDIS_ENABLE (0x0u << 13) /**< \brief (SUPC_MR) the core brownout detector is enabled. */ +#define SUPC_MR_BODDIS_DISABLE (0x1u << 13) /**< \brief (SUPC_MR) the core brownout detector is disabled. */ +#define SUPC_MR_VDDIORDYONREG (0x1u << 14) /**< \brief (SUPC_MR) */ +#define SUPC_MR_OSCBYPASS (0x1u << 20) /**< \brief (SUPC_MR) Oscillator Bypass */ +#define SUPC_MR_OSCBYPASS_NO_EFFECT (0x0u << 20) /**< \brief (SUPC_MR) no effect. Clock selection depends on XTALSEL value. */ +#define SUPC_MR_OSCBYPASS_BYPASS (0x1u << 20) /**< \brief (SUPC_MR) the 32-KHz XTAL oscillator is selected and is put in bypass mode. */ +#define SUPC_MR_KEY_Pos 24 +#define SUPC_MR_KEY_Msk (0xffu << SUPC_MR_KEY_Pos) /**< \brief (SUPC_MR) Password Key */ +#define SUPC_MR_KEY(value) ((SUPC_MR_KEY_Msk & ((value) << SUPC_MR_KEY_Pos))) +/* -------- SUPC_WUMR : (SUPC Offset: 0x0C) Supply Controller Wake Up Mode Register -------- */ +#define SUPC_WUMR_FWUPEN (0x1u << 0) /**< \brief (SUPC_WUMR) Force Wake Up Enable */ +#define SUPC_WUMR_FWUPEN_NOT_ENABLE (0x0u << 0) /**< \brief (SUPC_WUMR) the Force Wake Up pin has no wake up effect. */ +#define SUPC_WUMR_FWUPEN_ENABLE (0x1u << 0) /**< \brief (SUPC_WUMR) the Force Wake Up pin low forces the wake up of the core power supply. */ +#define SUPC_WUMR_SMEN (0x1u << 1) /**< \brief (SUPC_WUMR) Supply Monitor Wake Up Enable */ +#define SUPC_WUMR_SMEN_NOT_ENABLE (0x0u << 1) /**< \brief (SUPC_WUMR) the supply monitor detection has no wake up effect. */ +#define SUPC_WUMR_SMEN_ENABLE (0x1u << 1) /**< \brief (SUPC_WUMR) the supply monitor detection forces the wake up of the core power supply. */ +#define SUPC_WUMR_RTTEN (0x1u << 2) /**< \brief (SUPC_WUMR) Real Time Timer Wake Up Enable */ +#define SUPC_WUMR_RTTEN_NOT_ENABLE (0x0u << 2) /**< \brief (SUPC_WUMR) the RTT alarm signal has no wake up effect. */ +#define SUPC_WUMR_RTTEN_ENABLE (0x1u << 2) /**< \brief (SUPC_WUMR) the RTT alarm signal forces the wake up of the core power supply. */ +#define SUPC_WUMR_RTCEN (0x1u << 3) /**< \brief (SUPC_WUMR) Real Time Clock Wake Up Enable */ +#define SUPC_WUMR_RTCEN_NOT_ENABLE (0x0u << 3) /**< \brief (SUPC_WUMR) the RTC alarm signal has no wake up effect. */ +#define SUPC_WUMR_RTCEN_ENABLE (0x1u << 3) /**< \brief (SUPC_WUMR) the RTC alarm signal forces the wake up of the core power supply. */ +#define SUPC_WUMR_FWUPDBC_Pos 8 +#define SUPC_WUMR_FWUPDBC_Msk (0x7u << SUPC_WUMR_FWUPDBC_Pos) /**< \brief (SUPC_WUMR) Force Wake Up Debouncer Period */ +#define SUPC_WUMR_FWUPDBC_IMMEDIATE (0x0u << 8) /**< \brief (SUPC_WUMR) Immediate, no debouncing, detected active at least on one Slow Clock edge. */ +#define SUPC_WUMR_FWUPDBC_3_SCLK (0x1u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 3 SLCK periods */ +#define SUPC_WUMR_FWUPDBC_32_SCLK (0x2u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 32 SLCK periods */ +#define SUPC_WUMR_FWUPDBC_512_SCLK (0x3u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 512 SLCK periods */ +#define SUPC_WUMR_FWUPDBC_4096_SCLK (0x4u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 4,096 SLCK periods */ +#define SUPC_WUMR_FWUPDBC_32768_SCLK (0x5u << 8) /**< \brief (SUPC_WUMR) FWUP shall be low for at least 32,768 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_Pos 12 +#define SUPC_WUMR_WKUPDBC_Msk (0x7u << SUPC_WUMR_WKUPDBC_Pos) /**< \brief (SUPC_WUMR) Wake Up Inputs Debouncer Period */ +#define SUPC_WUMR_WKUPDBC_IMMEDIATE (0x0u << 12) /**< \brief (SUPC_WUMR) Immediate, no debouncing, detected active at least on one Slow Clock edge. */ +#define SUPC_WUMR_WKUPDBC_3_SCLK (0x1u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 3 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_32_SCLK (0x2u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 32 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_512_SCLK (0x3u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 512 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_4096_SCLK (0x4u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 4,096 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_32768_SCLK (0x5u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 32,768 SLCK periods */ +/* -------- SUPC_WUIR : (SUPC Offset: 0x10) Supply Controller Wake Up Inputs Register -------- */ +#define SUPC_WUIR_WKUPEN0 (0x1u << 0) /**< \brief (SUPC_WUIR) Wake Up Input Enable 0 */ +#define SUPC_WUIR_WKUPEN0_NOT_ENABLE (0x0u << 0) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN0_ENABLE (0x1u << 0) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN1 (0x1u << 1) /**< \brief (SUPC_WUIR) Wake Up Input Enable 1 */ +#define SUPC_WUIR_WKUPEN1_NOT_ENABLE (0x0u << 1) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN1_ENABLE (0x1u << 1) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN2 (0x1u << 2) /**< \brief (SUPC_WUIR) Wake Up Input Enable 2 */ +#define SUPC_WUIR_WKUPEN2_NOT_ENABLE (0x0u << 2) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN2_ENABLE (0x1u << 2) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN3 (0x1u << 3) /**< \brief (SUPC_WUIR) Wake Up Input Enable 3 */ +#define SUPC_WUIR_WKUPEN3_NOT_ENABLE (0x0u << 3) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN3_ENABLE (0x1u << 3) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN4 (0x1u << 4) /**< \brief (SUPC_WUIR) Wake Up Input Enable 4 */ +#define SUPC_WUIR_WKUPEN4_NOT_ENABLE (0x0u << 4) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN4_ENABLE (0x1u << 4) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN5 (0x1u << 5) /**< \brief (SUPC_WUIR) Wake Up Input Enable 5 */ +#define SUPC_WUIR_WKUPEN5_NOT_ENABLE (0x0u << 5) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN5_ENABLE (0x1u << 5) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN6 (0x1u << 6) /**< \brief (SUPC_WUIR) Wake Up Input Enable 6 */ +#define SUPC_WUIR_WKUPEN6_NOT_ENABLE (0x0u << 6) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN6_ENABLE (0x1u << 6) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN7 (0x1u << 7) /**< \brief (SUPC_WUIR) Wake Up Input Enable 7 */ +#define SUPC_WUIR_WKUPEN7_NOT_ENABLE (0x0u << 7) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN7_ENABLE (0x1u << 7) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN8 (0x1u << 8) /**< \brief (SUPC_WUIR) Wake Up Input Enable 8 */ +#define SUPC_WUIR_WKUPEN8_NOT_ENABLE (0x0u << 8) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN8_ENABLE (0x1u << 8) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN9 (0x1u << 9) /**< \brief (SUPC_WUIR) Wake Up Input Enable 9 */ +#define SUPC_WUIR_WKUPEN9_NOT_ENABLE (0x0u << 9) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN9_ENABLE (0x1u << 9) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN10 (0x1u << 10) /**< \brief (SUPC_WUIR) Wake Up Input Enable 10 */ +#define SUPC_WUIR_WKUPEN10_NOT_ENABLE (0x0u << 10) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN10_ENABLE (0x1u << 10) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN11 (0x1u << 11) /**< \brief (SUPC_WUIR) Wake Up Input Enable 11 */ +#define SUPC_WUIR_WKUPEN11_NOT_ENABLE (0x0u << 11) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN11_ENABLE (0x1u << 11) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN12 (0x1u << 12) /**< \brief (SUPC_WUIR) Wake Up Input Enable 12 */ +#define SUPC_WUIR_WKUPEN12_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN12_ENABLE (0x1u << 12) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN13 (0x1u << 13) /**< \brief (SUPC_WUIR) Wake Up Input Enable 13 */ +#define SUPC_WUIR_WKUPEN13_NOT_ENABLE (0x0u << 13) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN13_ENABLE (0x1u << 13) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN14 (0x1u << 14) /**< \brief (SUPC_WUIR) Wake Up Input Enable 14 */ +#define SUPC_WUIR_WKUPEN14_NOT_ENABLE (0x0u << 14) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN14_ENABLE (0x1u << 14) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPEN15 (0x1u << 15) /**< \brief (SUPC_WUIR) Wake Up Input Enable 15 */ +#define SUPC_WUIR_WKUPEN15_NOT_ENABLE (0x0u << 15) /**< \brief (SUPC_WUIR) the corresponding wake-up input has no wake up effect. */ +#define SUPC_WUIR_WKUPEN15_ENABLE (0x1u << 15) /**< \brief (SUPC_WUIR) the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT0 (0x1u << 16) /**< \brief (SUPC_WUIR) Wake Up Input Transition 0 */ +#define SUPC_WUIR_WKUPT0_HIGH_TO_LOW (0x0u << 16) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT0_LOW_TO_HIGH (0x1u << 16) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT1 (0x1u << 17) /**< \brief (SUPC_WUIR) Wake Up Input Transition 1 */ +#define SUPC_WUIR_WKUPT1_HIGH_TO_LOW (0x0u << 17) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT1_LOW_TO_HIGH (0x1u << 17) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT2 (0x1u << 18) /**< \brief (SUPC_WUIR) Wake Up Input Transition 2 */ +#define SUPC_WUIR_WKUPT2_HIGH_TO_LOW (0x0u << 18) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT2_LOW_TO_HIGH (0x1u << 18) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT3 (0x1u << 19) /**< \brief (SUPC_WUIR) Wake Up Input Transition 3 */ +#define SUPC_WUIR_WKUPT3_HIGH_TO_LOW (0x0u << 19) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT3_LOW_TO_HIGH (0x1u << 19) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT4 (0x1u << 20) /**< \brief (SUPC_WUIR) Wake Up Input Transition 4 */ +#define SUPC_WUIR_WKUPT4_HIGH_TO_LOW (0x0u << 20) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT4_LOW_TO_HIGH (0x1u << 20) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT5 (0x1u << 21) /**< \brief (SUPC_WUIR) Wake Up Input Transition 5 */ +#define SUPC_WUIR_WKUPT5_HIGH_TO_LOW (0x0u << 21) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT5_LOW_TO_HIGH (0x1u << 21) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT6 (0x1u << 22) /**< \brief (SUPC_WUIR) Wake Up Input Transition 6 */ +#define SUPC_WUIR_WKUPT6_HIGH_TO_LOW (0x0u << 22) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT6_LOW_TO_HIGH (0x1u << 22) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT7 (0x1u << 23) /**< \brief (SUPC_WUIR) Wake Up Input Transition 7 */ +#define SUPC_WUIR_WKUPT7_HIGH_TO_LOW (0x0u << 23) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT7_LOW_TO_HIGH (0x1u << 23) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT8 (0x1u << 24) /**< \brief (SUPC_WUIR) Wake Up Input Transition 8 */ +#define SUPC_WUIR_WKUPT8_HIGH_TO_LOW (0x0u << 24) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT8_LOW_TO_HIGH (0x1u << 24) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT9 (0x1u << 25) /**< \brief (SUPC_WUIR) Wake Up Input Transition 9 */ +#define SUPC_WUIR_WKUPT9_HIGH_TO_LOW (0x0u << 25) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT9_LOW_TO_HIGH (0x1u << 25) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT10 (0x1u << 26) /**< \brief (SUPC_WUIR) Wake Up Input Transition 10 */ +#define SUPC_WUIR_WKUPT10_HIGH_TO_LOW (0x0u << 26) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT10_LOW_TO_HIGH (0x1u << 26) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT11 (0x1u << 27) /**< \brief (SUPC_WUIR) Wake Up Input Transition 11 */ +#define SUPC_WUIR_WKUPT11_HIGH_TO_LOW (0x0u << 27) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT11_LOW_TO_HIGH (0x1u << 27) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT12 (0x1u << 28) /**< \brief (SUPC_WUIR) Wake Up Input Transition 12 */ +#define SUPC_WUIR_WKUPT12_HIGH_TO_LOW (0x0u << 28) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT12_LOW_TO_HIGH (0x1u << 28) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT13 (0x1u << 29) /**< \brief (SUPC_WUIR) Wake Up Input Transition 13 */ +#define SUPC_WUIR_WKUPT13_HIGH_TO_LOW (0x0u << 29) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT13_LOW_TO_HIGH (0x1u << 29) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT14 (0x1u << 30) /**< \brief (SUPC_WUIR) Wake Up Input Transition 14 */ +#define SUPC_WUIR_WKUPT14_HIGH_TO_LOW (0x0u << 30) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT14_LOW_TO_HIGH (0x1u << 30) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT15 (0x1u << 31) /**< \brief (SUPC_WUIR) Wake Up Input Transition 15 */ +#define SUPC_WUIR_WKUPT15_HIGH_TO_LOW (0x0u << 31) /**< \brief (SUPC_WUIR) a high to low level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +#define SUPC_WUIR_WKUPT15_LOW_TO_HIGH (0x1u << 31) /**< \brief (SUPC_WUIR) a low to high level transition on the corresponding wake-up input forces the wake up of the core power supply. */ +/* -------- SUPC_SR : (SUPC Offset: 0x14) Supply Controller Status Register -------- */ +#define SUPC_SR_FWUPS (0x1u << 0) /**< \brief (SUPC_SR) FWUP Wake Up Status */ +#define SUPC_SR_FWUPS_NO (0x0u << 0) /**< \brief (SUPC_SR) no wake up due to the assertion of the FWUP pin has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_FWUPS_PRESENT (0x1u << 0) /**< \brief (SUPC_SR) at least one wake up due to the assertion of the FWUP pin has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPS (0x1u << 1) /**< \brief (SUPC_SR) WKUP Wake Up Status */ +#define SUPC_SR_WKUPS_NO (0x0u << 1) /**< \brief (SUPC_SR) no wake up due to the assertion of the WKUP pins has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPS_PRESENT (0x1u << 1) /**< \brief (SUPC_SR) at least one wake up due to the assertion of the WKUP pins has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_SMWS (0x1u << 2) /**< \brief (SUPC_SR) Supply Monitor Detection Wake Up Status */ +#define SUPC_SR_SMWS_NO (0x0u << 2) /**< \brief (SUPC_SR) no wake up due to a supply monitor detection has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_SMWS_PRESENT (0x1u << 2) /**< \brief (SUPC_SR) at least one wake up due to a supply monitor detection has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_BODRSTS (0x1u << 3) /**< \brief (SUPC_SR) Brownout Detector Reset Status */ +#define SUPC_SR_BODRSTS_NO (0x0u << 3) /**< \brief (SUPC_SR) no core brownout rising edge event has been detected since the last read of the SUPC_SR. */ +#define SUPC_SR_BODRSTS_PRESENT (0x1u << 3) /**< \brief (SUPC_SR) at least one brownout output rising edge event has been detected since the last read of the SUPC_SR. */ +#define SUPC_SR_SMRSTS (0x1u << 4) /**< \brief (SUPC_SR) Supply Monitor Reset Status */ +#define SUPC_SR_SMRSTS_NO (0x0u << 4) /**< \brief (SUPC_SR) no supply monitor detection has generated a core reset since the last read of the SUPC_SR. */ +#define SUPC_SR_SMRSTS_PRESENT (0x1u << 4) /**< \brief (SUPC_SR) at least one supply monitor detection has generated a core reset since the last read of the SUPC_SR. */ +#define SUPC_SR_SMS (0x1u << 5) /**< \brief (SUPC_SR) Supply Monitor Status */ +#define SUPC_SR_SMS_NO (0x0u << 5) /**< \brief (SUPC_SR) no supply monitor detection since the last read of SUPC_SR. */ +#define SUPC_SR_SMS_PRESENT (0x1u << 5) /**< \brief (SUPC_SR) at least one supply monitor detection since the last read of SUPC_SR. */ +#define SUPC_SR_SMOS (0x1u << 6) /**< \brief (SUPC_SR) Supply Monitor Output Status */ +#define SUPC_SR_SMOS_HIGH (0x0u << 6) /**< \brief (SUPC_SR) the supply monitor detected VDDUTMI higher than its threshold at its last measurement. */ +#define SUPC_SR_SMOS_LOW (0x1u << 6) /**< \brief (SUPC_SR) the supply monitor detected VDDUTMI lower than its threshold at its last measurement. */ +#define SUPC_SR_OSCSEL (0x1u << 7) /**< \brief (SUPC_SR) 32-kHz Oscillator Selection Status */ +#define SUPC_SR_OSCSEL_RC (0x0u << 7) /**< \brief (SUPC_SR) the slow clock, SLCK is generated by the embedded 32-kHz RC oscillator. */ +#define SUPC_SR_OSCSEL_CRYST (0x1u << 7) /**< \brief (SUPC_SR) the slow clock, SLCK is generated by the 32-kHz crystal oscillator. */ +#define SUPC_SR_FWUPIS (0x1u << 12) /**< \brief (SUPC_SR) FWUP Input Status */ +#define SUPC_SR_FWUPIS_LOW (0x0u << 12) /**< \brief (SUPC_SR) FWUP input is tied low. */ +#define SUPC_SR_FWUPIS_HIGH (0x1u << 12) /**< \brief (SUPC_SR) FWUP input is tied high. */ +#define SUPC_SR_WKUPIS0 (0x1u << 16) /**< \brief (SUPC_SR) WKUP Input Status 0 */ +#define SUPC_SR_WKUPIS0_DIS (0x0u << 16) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS0_EN (0x1u << 16) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS1 (0x1u << 17) /**< \brief (SUPC_SR) WKUP Input Status 1 */ +#define SUPC_SR_WKUPIS1_DIS (0x0u << 17) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS1_EN (0x1u << 17) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS2 (0x1u << 18) /**< \brief (SUPC_SR) WKUP Input Status 2 */ +#define SUPC_SR_WKUPIS2_DIS (0x0u << 18) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS2_EN (0x1u << 18) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS3 (0x1u << 19) /**< \brief (SUPC_SR) WKUP Input Status 3 */ +#define SUPC_SR_WKUPIS3_DIS (0x0u << 19) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS3_EN (0x1u << 19) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS4 (0x1u << 20) /**< \brief (SUPC_SR) WKUP Input Status 4 */ +#define SUPC_SR_WKUPIS4_DIS (0x0u << 20) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS4_EN (0x1u << 20) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS5 (0x1u << 21) /**< \brief (SUPC_SR) WKUP Input Status 5 */ +#define SUPC_SR_WKUPIS5_DIS (0x0u << 21) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS5_EN (0x1u << 21) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS6 (0x1u << 22) /**< \brief (SUPC_SR) WKUP Input Status 6 */ +#define SUPC_SR_WKUPIS6_DIS (0x0u << 22) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS6_EN (0x1u << 22) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS7 (0x1u << 23) /**< \brief (SUPC_SR) WKUP Input Status 7 */ +#define SUPC_SR_WKUPIS7_DIS (0x0u << 23) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS7_EN (0x1u << 23) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS8 (0x1u << 24) /**< \brief (SUPC_SR) WKUP Input Status 8 */ +#define SUPC_SR_WKUPIS8_DIS (0x0u << 24) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS8_EN (0x1u << 24) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS9 (0x1u << 25) /**< \brief (SUPC_SR) WKUP Input Status 9 */ +#define SUPC_SR_WKUPIS9_DIS (0x0u << 25) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS9_EN (0x1u << 25) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS10 (0x1u << 26) /**< \brief (SUPC_SR) WKUP Input Status 10 */ +#define SUPC_SR_WKUPIS10_DIS (0x0u << 26) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS10_EN (0x1u << 26) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS11 (0x1u << 27) /**< \brief (SUPC_SR) WKUP Input Status 11 */ +#define SUPC_SR_WKUPIS11_DIS (0x0u << 27) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS11_EN (0x1u << 27) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS12 (0x1u << 28) /**< \brief (SUPC_SR) WKUP Input Status 12 */ +#define SUPC_SR_WKUPIS12_DIS (0x0u << 28) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS12_EN (0x1u << 28) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS13 (0x1u << 29) /**< \brief (SUPC_SR) WKUP Input Status 13 */ +#define SUPC_SR_WKUPIS13_DIS (0x0u << 29) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS13_EN (0x1u << 29) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS14 (0x1u << 30) /**< \brief (SUPC_SR) WKUP Input Status 14 */ +#define SUPC_SR_WKUPIS14_DIS (0x0u << 30) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS14_EN (0x1u << 30) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS15 (0x1u << 31) /**< \brief (SUPC_SR) WKUP Input Status 15 */ +#define SUPC_SR_WKUPIS15_DIS (0x0u << 31) /**< \brief (SUPC_SR) the corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake up event. */ +#define SUPC_SR_WKUPIS15_EN (0x1u << 31) /**< \brief (SUPC_SR) the corresponding wake-up input was active at the time the debouncer triggered a wake up event. */ + +/*@}*/ + + +#endif /* _SAM3XA_SUPC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_tc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_tc.h new file mode 100644 index 000000000..88324bb18 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_tc.h @@ -0,0 +1,303 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_TC_COMPONENT_ +#define _SAM3XA_TC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Timer Counter */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_TC Timer Counter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief TcChannel hardware registers */ +typedef struct { + RwReg TC_CCR; /**< \brief (TcChannel Offset: 0x0) Channel Control Register */ + RwReg TC_CMR; /**< \brief (TcChannel Offset: 0x4) Channel Mode Register */ + RwReg TC_SMMR; /**< \brief (TcChannel Offset: 0x8) Stepper Motor Mode Register */ + RoReg Reserved1[1]; + RwReg TC_CV; /**< \brief (TcChannel Offset: 0x10) Counter Value */ + RwReg TC_RA; /**< \brief (TcChannel Offset: 0x14) Register A */ + RwReg TC_RB; /**< \brief (TcChannel Offset: 0x18) Register B */ + RwReg TC_RC; /**< \brief (TcChannel Offset: 0x1C) Register C */ + RwReg TC_SR; /**< \brief (TcChannel Offset: 0x20) Status Register */ + RwReg TC_IER; /**< \brief (TcChannel Offset: 0x24) Interrupt Enable Register */ + RwReg TC_IDR; /**< \brief (TcChannel Offset: 0x28) Interrupt Disable Register */ + RwReg TC_IMR; /**< \brief (TcChannel Offset: 0x2C) Interrupt Mask Register */ + RoReg Reserved2[4]; +} TcChannel; +/** \brief Tc hardware registers */ +#define TCCHANNEL_NUMBER 3 +typedef struct { + TcChannel TC_CHANNEL[TCCHANNEL_NUMBER]; /**< \brief (Tc Offset: 0x0) channel = 0 .. 2 */ + WoReg TC_BCR; /**< \brief (Tc Offset: 0xC0) Block Control Register */ + RwReg TC_BMR; /**< \brief (Tc Offset: 0xC4) Block Mode Register */ + WoReg TC_QIER; /**< \brief (Tc Offset: 0xC8) QDEC Interrupt Enable Register */ + WoReg TC_QIDR; /**< \brief (Tc Offset: 0xCC) QDEC Interrupt Disable Register */ + RoReg TC_QIMR; /**< \brief (Tc Offset: 0xD0) QDEC Interrupt Mask Register */ + RoReg TC_QISR; /**< \brief (Tc Offset: 0xD4) QDEC Interrupt Status Register */ + RwReg TC_FMR; /**< \brief (Tc Offset: 0xD8) Fault Mode Register */ + RoReg Reserved1[2]; + RwReg TC_WPMR; /**< \brief (Tc Offset: 0xE4) Write Protect Mode Register */ +} Tc; +#endif /* __ASSEMBLY__ */ +/* -------- TC_CCR : (TC Offset: N/A) Channel Control Register -------- */ +#define TC_CCR_CLKEN (0x1u << 0) /**< \brief (TC_CCR) Counter Clock Enable Command */ +#define TC_CCR_CLKDIS (0x1u << 1) /**< \brief (TC_CCR) Counter Clock Disable Command */ +#define TC_CCR_SWTRG (0x1u << 2) /**< \brief (TC_CCR) Software Trigger Command */ +/* -------- TC_CMR : (TC Offset: N/A) Channel Mode Register -------- */ +#define TC_CMR_TCCLKS_Pos 0 +#define TC_CMR_TCCLKS_Msk (0x7u << TC_CMR_TCCLKS_Pos) /**< \brief (TC_CMR) Clock Selection */ +#define TC_CMR_TCCLKS_TIMER_CLOCK1 (0x0u << 0) /**< \brief (TC_CMR) Clock selected: TCLK1 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK2 (0x1u << 0) /**< \brief (TC_CMR) Clock selected: TCLK2 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK3 (0x2u << 0) /**< \brief (TC_CMR) Clock selected: TCLK3 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK4 (0x3u << 0) /**< \brief (TC_CMR) Clock selected: TCLK4 */ +#define TC_CMR_TCCLKS_TIMER_CLOCK5 (0x4u << 0) /**< \brief (TC_CMR) Clock selected: TCLK5 */ +#define TC_CMR_TCCLKS_XC0 (0x5u << 0) /**< \brief (TC_CMR) Clock selected: XC0 */ +#define TC_CMR_TCCLKS_XC1 (0x6u << 0) /**< \brief (TC_CMR) Clock selected: XC1 */ +#define TC_CMR_TCCLKS_XC2 (0x7u << 0) /**< \brief (TC_CMR) Clock selected: XC2 */ +#define TC_CMR_CLKI (0x1u << 3) /**< \brief (TC_CMR) Clock Invert */ +#define TC_CMR_BURST_Pos 4 +#define TC_CMR_BURST_Msk (0x3u << TC_CMR_BURST_Pos) /**< \brief (TC_CMR) Burst Signal Selection */ +#define TC_CMR_BURST_NONE (0x0u << 4) /**< \brief (TC_CMR) The clock is not gated by an external signal. */ +#define TC_CMR_BURST_XC0 (0x1u << 4) /**< \brief (TC_CMR) XC0 is ANDed with the selected clock. */ +#define TC_CMR_BURST_XC1 (0x2u << 4) /**< \brief (TC_CMR) XC1 is ANDed with the selected clock. */ +#define TC_CMR_BURST_XC2 (0x3u << 4) /**< \brief (TC_CMR) XC2 is ANDed with the selected clock. */ +#define TC_CMR_LDBSTOP (0x1u << 6) /**< \brief (TC_CMR) Counter Clock Stopped with RB Loading */ +#define TC_CMR_LDBDIS (0x1u << 7) /**< \brief (TC_CMR) Counter Clock Disable with RB Loading */ +#define TC_CMR_ETRGEDG_Pos 8 +#define TC_CMR_ETRGEDG_Msk (0x3u << TC_CMR_ETRGEDG_Pos) /**< \brief (TC_CMR) External Trigger Edge Selection */ +#define TC_CMR_ETRGEDG_NONE (0x0u << 8) /**< \brief (TC_CMR) The clock is not gated by an external signal. */ +#define TC_CMR_ETRGEDG_RISING (0x1u << 8) /**< \brief (TC_CMR) Rising edge */ +#define TC_CMR_ETRGEDG_FALLING (0x2u << 8) /**< \brief (TC_CMR) Falling edge */ +#define TC_CMR_ETRGEDG_EDGE (0x3u << 8) /**< \brief (TC_CMR) Each edge */ +#define TC_CMR_ABETRG (0x1u << 10) /**< \brief (TC_CMR) TIOA or TIOB External Trigger Selection */ +#define TC_CMR_CPCTRG (0x1u << 14) /**< \brief (TC_CMR) RC Compare Trigger Enable */ +#define TC_CMR_WAVE (0x1u << 15) /**< \brief (TC_CMR) Waveform Mode */ +#define TC_CMR_LDRA_Pos 16 +#define TC_CMR_LDRA_Msk (0x3u << TC_CMR_LDRA_Pos) /**< \brief (TC_CMR) RA Loading Edge Selection */ +#define TC_CMR_LDRA_NONE (0x0u << 16) /**< \brief (TC_CMR) None */ +#define TC_CMR_LDRA_RISING (0x1u << 16) /**< \brief (TC_CMR) Rising edge of TIOA */ +#define TC_CMR_LDRA_FALLING (0x2u << 16) /**< \brief (TC_CMR) Falling edge of TIOA */ +#define TC_CMR_LDRA_EDGE (0x3u << 16) /**< \brief (TC_CMR) Each edge of TIOA */ +#define TC_CMR_LDRB_Pos 18 +#define TC_CMR_LDRB_Msk (0x3u << TC_CMR_LDRB_Pos) /**< \brief (TC_CMR) RB Loading Edge Selection */ +#define TC_CMR_LDRB_NONE (0x0u << 18) /**< \brief (TC_CMR) None */ +#define TC_CMR_LDRB_RISING (0x1u << 18) /**< \brief (TC_CMR) Rising edge of TIOA */ +#define TC_CMR_LDRB_FALLING (0x2u << 18) /**< \brief (TC_CMR) Falling edge of TIOA */ +#define TC_CMR_LDRB_EDGE (0x3u << 18) /**< \brief (TC_CMR) Each edge of TIOA */ +#define TC_CMR_CPCSTOP (0x1u << 6) /**< \brief (TC_CMR) Counter Clock Stopped with RC Compare */ +#define TC_CMR_CPCDIS (0x1u << 7) /**< \brief (TC_CMR) Counter Clock Disable with RC Compare */ +#define TC_CMR_EEVTEDG_Pos 8 +#define TC_CMR_EEVTEDG_Msk (0x3u << TC_CMR_EEVTEDG_Pos) /**< \brief (TC_CMR) External Event Edge Selection */ +#define TC_CMR_EEVTEDG_NONE (0x0u << 8) /**< \brief (TC_CMR) None */ +#define TC_CMR_EEVTEDG_RISING (0x1u << 8) /**< \brief (TC_CMR) Rising edge */ +#define TC_CMR_EEVTEDG_FALLING (0x2u << 8) /**< \brief (TC_CMR) Falling edge */ +#define TC_CMR_EEVTEDG_EDGE (0x3u << 8) /**< \brief (TC_CMR) Each edge */ +#define TC_CMR_EEVT_Pos 10 +#define TC_CMR_EEVT_Msk (0x3u << TC_CMR_EEVT_Pos) /**< \brief (TC_CMR) External Event Selection */ +#define TC_CMR_EEVT_TIOB (0x0u << 10) /**< \brief (TC_CMR) TIOB */ +#define TC_CMR_EEVT_XC0 (0x1u << 10) /**< \brief (TC_CMR) XC0 */ +#define TC_CMR_EEVT_XC1 (0x2u << 10) /**< \brief (TC_CMR) XC1 */ +#define TC_CMR_EEVT_XC2 (0x3u << 10) /**< \brief (TC_CMR) XC2 */ +#define TC_CMR_ENETRG (0x1u << 12) /**< \brief (TC_CMR) External Event Trigger Enable */ +#define TC_CMR_WAVSEL_Pos 13 +#define TC_CMR_WAVSEL_Msk (0x3u << TC_CMR_WAVSEL_Pos) /**< \brief (TC_CMR) Waveform Selection */ +#define TC_CMR_WAVSEL_UP (0x0u << 13) /**< \brief (TC_CMR) UP mode without automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UPDOWN (0x1u << 13) /**< \brief (TC_CMR) UPDOWN mode without automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UP_RC (0x2u << 13) /**< \brief (TC_CMR) UP mode with automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UPDOWN_RC (0x3u << 13) /**< \brief (TC_CMR) UPDOWN mode with automatic trigger on RC Compare */ +#define TC_CMR_ACPA_Pos 16 +#define TC_CMR_ACPA_Msk (0x3u << TC_CMR_ACPA_Pos) /**< \brief (TC_CMR) RA Compare Effect on TIOA */ +#define TC_CMR_ACPA_NONE (0x0u << 16) /**< \brief (TC_CMR) None */ +#define TC_CMR_ACPA_SET (0x1u << 16) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ACPA_CLEAR (0x2u << 16) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ACPA_TOGGLE (0x3u << 16) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_ACPC_Pos 18 +#define TC_CMR_ACPC_Msk (0x3u << TC_CMR_ACPC_Pos) /**< \brief (TC_CMR) RC Compare Effect on TIOA */ +#define TC_CMR_ACPC_NONE (0x0u << 18) /**< \brief (TC_CMR) None */ +#define TC_CMR_ACPC_SET (0x1u << 18) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ACPC_CLEAR (0x2u << 18) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ACPC_TOGGLE (0x3u << 18) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_AEEVT_Pos 20 +#define TC_CMR_AEEVT_Msk (0x3u << TC_CMR_AEEVT_Pos) /**< \brief (TC_CMR) External Event Effect on TIOA */ +#define TC_CMR_AEEVT_NONE (0x0u << 20) /**< \brief (TC_CMR) None */ +#define TC_CMR_AEEVT_SET (0x1u << 20) /**< \brief (TC_CMR) Set */ +#define TC_CMR_AEEVT_CLEAR (0x2u << 20) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_AEEVT_TOGGLE (0x3u << 20) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_ASWTRG_Pos 22 +#define TC_CMR_ASWTRG_Msk (0x3u << TC_CMR_ASWTRG_Pos) /**< \brief (TC_CMR) Software Trigger Effect on TIOA */ +#define TC_CMR_ASWTRG_NONE (0x0u << 22) /**< \brief (TC_CMR) None */ +#define TC_CMR_ASWTRG_SET (0x1u << 22) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ASWTRG_CLEAR (0x2u << 22) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ASWTRG_TOGGLE (0x3u << 22) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BCPB_Pos 24 +#define TC_CMR_BCPB_Msk (0x3u << TC_CMR_BCPB_Pos) /**< \brief (TC_CMR) RB Compare Effect on TIOB */ +#define TC_CMR_BCPB_NONE (0x0u << 24) /**< \brief (TC_CMR) None */ +#define TC_CMR_BCPB_SET (0x1u << 24) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BCPB_CLEAR (0x2u << 24) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BCPB_TOGGLE (0x3u << 24) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BCPC_Pos 26 +#define TC_CMR_BCPC_Msk (0x3u << TC_CMR_BCPC_Pos) /**< \brief (TC_CMR) RC Compare Effect on TIOB */ +#define TC_CMR_BCPC_NONE (0x0u << 26) /**< \brief (TC_CMR) None */ +#define TC_CMR_BCPC_SET (0x1u << 26) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BCPC_CLEAR (0x2u << 26) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BCPC_TOGGLE (0x3u << 26) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BEEVT_Pos 28 +#define TC_CMR_BEEVT_Msk (0x3u << TC_CMR_BEEVT_Pos) /**< \brief (TC_CMR) External Event Effect on TIOB */ +#define TC_CMR_BEEVT_NONE (0x0u << 28) /**< \brief (TC_CMR) None */ +#define TC_CMR_BEEVT_SET (0x1u << 28) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BEEVT_CLEAR (0x2u << 28) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BEEVT_TOGGLE (0x3u << 28) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BSWTRG_Pos 30 +#define TC_CMR_BSWTRG_Msk (0x3u << TC_CMR_BSWTRG_Pos) /**< \brief (TC_CMR) Software Trigger Effect on TIOB */ +#define TC_CMR_BSWTRG_NONE (0x0u << 30) /**< \brief (TC_CMR) None */ +#define TC_CMR_BSWTRG_SET (0x1u << 30) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BSWTRG_CLEAR (0x2u << 30) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BSWTRG_TOGGLE (0x3u << 30) /**< \brief (TC_CMR) Toggle */ +/* -------- TC_SMMR : (TC Offset: N/A) Stepper Motor Mode Register -------- */ +#define TC_SMMR_GCEN (0x1u << 0) /**< \brief (TC_SMMR) Gray Count Enable */ +#define TC_SMMR_DOWN (0x1u << 1) /**< \brief (TC_SMMR) DOWN Count */ +/* -------- TC_CV : (TC Offset: N/A) Counter Value -------- */ +#define TC_CV_CV_Pos 0 +#define TC_CV_CV_Msk (0xffffffffu << TC_CV_CV_Pos) /**< \brief (TC_CV) Counter Value */ +/* -------- TC_RA : (TC Offset: N/A) Register A -------- */ +#define TC_RA_RA_Pos 0 +#define TC_RA_RA_Msk (0xffffffffu << TC_RA_RA_Pos) /**< \brief (TC_RA) Register A */ +#define TC_RA_RA(value) ((TC_RA_RA_Msk & ((value) << TC_RA_RA_Pos))) +/* -------- TC_RB : (TC Offset: N/A) Register B -------- */ +#define TC_RB_RB_Pos 0 +#define TC_RB_RB_Msk (0xffffffffu << TC_RB_RB_Pos) /**< \brief (TC_RB) Register B */ +#define TC_RB_RB(value) ((TC_RB_RB_Msk & ((value) << TC_RB_RB_Pos))) +/* -------- TC_RC : (TC Offset: N/A) Register C -------- */ +#define TC_RC_RC_Pos 0 +#define TC_RC_RC_Msk (0xffffffffu << TC_RC_RC_Pos) /**< \brief (TC_RC) Register C */ +#define TC_RC_RC(value) ((TC_RC_RC_Msk & ((value) << TC_RC_RC_Pos))) +/* -------- TC_SR : (TC Offset: N/A) Status Register -------- */ +#define TC_SR_COVFS (0x1u << 0) /**< \brief (TC_SR) Counter Overflow Status */ +#define TC_SR_LOVRS (0x1u << 1) /**< \brief (TC_SR) Load Overrun Status */ +#define TC_SR_CPAS (0x1u << 2) /**< \brief (TC_SR) RA Compare Status */ +#define TC_SR_CPBS (0x1u << 3) /**< \brief (TC_SR) RB Compare Status */ +#define TC_SR_CPCS (0x1u << 4) /**< \brief (TC_SR) RC Compare Status */ +#define TC_SR_LDRAS (0x1u << 5) /**< \brief (TC_SR) RA Loading Status */ +#define TC_SR_LDRBS (0x1u << 6) /**< \brief (TC_SR) RB Loading Status */ +#define TC_SR_ETRGS (0x1u << 7) /**< \brief (TC_SR) External Trigger Status */ +#define TC_SR_CLKSTA (0x1u << 16) /**< \brief (TC_SR) Clock Enabling Status */ +#define TC_SR_MTIOA (0x1u << 17) /**< \brief (TC_SR) TIOA Mirror */ +#define TC_SR_MTIOB (0x1u << 18) /**< \brief (TC_SR) TIOB Mirror */ +/* -------- TC_IER : (TC Offset: N/A) Interrupt Enable Register -------- */ +#define TC_IER_COVFS (0x1u << 0) /**< \brief (TC_IER) Counter Overflow */ +#define TC_IER_LOVRS (0x1u << 1) /**< \brief (TC_IER) Load Overrun */ +#define TC_IER_CPAS (0x1u << 2) /**< \brief (TC_IER) RA Compare */ +#define TC_IER_CPBS (0x1u << 3) /**< \brief (TC_IER) RB Compare */ +#define TC_IER_CPCS (0x1u << 4) /**< \brief (TC_IER) RC Compare */ +#define TC_IER_LDRAS (0x1u << 5) /**< \brief (TC_IER) RA Loading */ +#define TC_IER_LDRBS (0x1u << 6) /**< \brief (TC_IER) RB Loading */ +#define TC_IER_ETRGS (0x1u << 7) /**< \brief (TC_IER) External Trigger */ +/* -------- TC_IDR : (TC Offset: N/A) Interrupt Disable Register -------- */ +#define TC_IDR_COVFS (0x1u << 0) /**< \brief (TC_IDR) Counter Overflow */ +#define TC_IDR_LOVRS (0x1u << 1) /**< \brief (TC_IDR) Load Overrun */ +#define TC_IDR_CPAS (0x1u << 2) /**< \brief (TC_IDR) RA Compare */ +#define TC_IDR_CPBS (0x1u << 3) /**< \brief (TC_IDR) RB Compare */ +#define TC_IDR_CPCS (0x1u << 4) /**< \brief (TC_IDR) RC Compare */ +#define TC_IDR_LDRAS (0x1u << 5) /**< \brief (TC_IDR) RA Loading */ +#define TC_IDR_LDRBS (0x1u << 6) /**< \brief (TC_IDR) RB Loading */ +#define TC_IDR_ETRGS (0x1u << 7) /**< \brief (TC_IDR) External Trigger */ +/* -------- TC_IMR : (TC Offset: N/A) Interrupt Mask Register -------- */ +#define TC_IMR_COVFS (0x1u << 0) /**< \brief (TC_IMR) Counter Overflow */ +#define TC_IMR_LOVRS (0x1u << 1) /**< \brief (TC_IMR) Load Overrun */ +#define TC_IMR_CPAS (0x1u << 2) /**< \brief (TC_IMR) RA Compare */ +#define TC_IMR_CPBS (0x1u << 3) /**< \brief (TC_IMR) RB Compare */ +#define TC_IMR_CPCS (0x1u << 4) /**< \brief (TC_IMR) RC Compare */ +#define TC_IMR_LDRAS (0x1u << 5) /**< \brief (TC_IMR) RA Loading */ +#define TC_IMR_LDRBS (0x1u << 6) /**< \brief (TC_IMR) RB Loading */ +#define TC_IMR_ETRGS (0x1u << 7) /**< \brief (TC_IMR) External Trigger */ +/* -------- TC_BCR : (TC Offset: 0xC0) Block Control Register -------- */ +#define TC_BCR_SYNC (0x1u << 0) /**< \brief (TC_BCR) Synchro Command */ +/* -------- TC_BMR : (TC Offset: 0xC4) Block Mode Register -------- */ +#define TC_BMR_TC0XC0S_Pos 0 +#define TC_BMR_TC0XC0S_Msk (0x3u << TC_BMR_TC0XC0S_Pos) /**< \brief (TC_BMR) External Clock Signal 0 Selection */ +#define TC_BMR_TC0XC0S_TCLK0 (0x0u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TCLK0 */ +#define TC_BMR_TC0XC0S_TIOA1 (0x2u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TIOA1 */ +#define TC_BMR_TC0XC0S_TIOA2 (0x3u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TIOA2 */ +#define TC_BMR_TC1XC1S_Pos 2 +#define TC_BMR_TC1XC1S_Msk (0x3u << TC_BMR_TC1XC1S_Pos) /**< \brief (TC_BMR) External Clock Signal 1 Selection */ +#define TC_BMR_TC1XC1S_TCLK1 (0x0u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TCLK1 */ +#define TC_BMR_TC1XC1S_TIOA0 (0x2u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TIOA0 */ +#define TC_BMR_TC1XC1S_TIOA2 (0x3u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TIOA2 */ +#define TC_BMR_TC2XC2S_Pos 4 +#define TC_BMR_TC2XC2S_Msk (0x3u << TC_BMR_TC2XC2S_Pos) /**< \brief (TC_BMR) External Clock Signal 2 Selection */ +#define TC_BMR_TC2XC2S_TCLK2 (0x0u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TCLK2 */ +#define TC_BMR_TC2XC2S_TIOA1 (0x2u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TIOA1 */ +#define TC_BMR_TC2XC2S_TIOA2 (0x3u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TIOA2 */ +#define TC_BMR_QDEN (0x1u << 8) /**< \brief (TC_BMR) Quadrature Decoder ENabled */ +#define TC_BMR_POSEN (0x1u << 9) /**< \brief (TC_BMR) POSition ENabled */ +#define TC_BMR_SPEEDEN (0x1u << 10) /**< \brief (TC_BMR) SPEED ENabled */ +#define TC_BMR_QDTRANS (0x1u << 11) /**< \brief (TC_BMR) Quadrature Decoding TRANSparent */ +#define TC_BMR_EDGPHA (0x1u << 12) /**< \brief (TC_BMR) EDGe on PHA count mode */ +#define TC_BMR_INVA (0x1u << 13) /**< \brief (TC_BMR) INVerted phA */ +#define TC_BMR_INVB (0x1u << 14) /**< \brief (TC_BMR) INVerted phB */ +#define TC_BMR_INVIDX (0x1u << 15) /**< \brief (TC_BMR) INVerted InDeX */ +#define TC_BMR_SWAP (0x1u << 16) /**< \brief (TC_BMR) SWAP PHA and PHB */ +#define TC_BMR_IDXPHB (0x1u << 17) /**< \brief (TC_BMR) InDeX pin is PHB pin */ +#define TC_BMR_FILTER (0x1u << 19) /**< \brief (TC_BMR) */ +#define TC_BMR_MAXFILT_Pos 20 +#define TC_BMR_MAXFILT_Msk (0x3fu << TC_BMR_MAXFILT_Pos) /**< \brief (TC_BMR) MAXimum FILTer */ +#define TC_BMR_MAXFILT(value) ((TC_BMR_MAXFILT_Msk & ((value) << TC_BMR_MAXFILT_Pos))) +/* -------- TC_QIER : (TC Offset: 0xC8) QDEC Interrupt Enable Register -------- */ +#define TC_QIER_IDX (0x1u << 0) /**< \brief (TC_QIER) InDeX */ +#define TC_QIER_DIRCHG (0x1u << 1) /**< \brief (TC_QIER) DIRection CHanGe */ +#define TC_QIER_QERR (0x1u << 2) /**< \brief (TC_QIER) Quadrature ERRor */ +/* -------- TC_QIDR : (TC Offset: 0xCC) QDEC Interrupt Disable Register -------- */ +#define TC_QIDR_IDX (0x1u << 0) /**< \brief (TC_QIDR) InDeX */ +#define TC_QIDR_DIRCHG (0x1u << 1) /**< \brief (TC_QIDR) DIRection CHanGe */ +#define TC_QIDR_QERR (0x1u << 2) /**< \brief (TC_QIDR) Quadrature ERRor */ +/* -------- TC_QIMR : (TC Offset: 0xD0) QDEC Interrupt Mask Register -------- */ +#define TC_QIMR_IDX (0x1u << 0) /**< \brief (TC_QIMR) InDeX */ +#define TC_QIMR_DIRCHG (0x1u << 1) /**< \brief (TC_QIMR) DIRection CHanGe */ +#define TC_QIMR_QERR (0x1u << 2) /**< \brief (TC_QIMR) Quadrature ERRor */ +/* -------- TC_QISR : (TC Offset: 0xD4) QDEC Interrupt Status Register -------- */ +#define TC_QISR_IDX (0x1u << 0) /**< \brief (TC_QISR) InDeX */ +#define TC_QISR_DIRCHG (0x1u << 1) /**< \brief (TC_QISR) DIRection CHanGe */ +#define TC_QISR_QERR (0x1u << 2) /**< \brief (TC_QISR) Quadrature ERRor */ +#define TC_QISR_DIR (0x1u << 8) /**< \brief (TC_QISR) Direction */ +/* -------- TC_FMR : (TC Offset: 0xD8) Fault Mode Register -------- */ +#define TC_FMR_ENCF0 (0x1u << 0) /**< \brief (TC_FMR) ENable Compare Fault Channel 0 */ +#define TC_FMR_ENCF1 (0x1u << 1) /**< \brief (TC_FMR) ENable Compare Fault Channel 1 */ +/* -------- TC_WPMR : (TC Offset: 0xE4) Write Protect Mode Register -------- */ +#define TC_WPMR_WPEN (0x1u << 0) /**< \brief (TC_WPMR) Write Protect Enable */ +#define TC_WPMR_WPKEY_Pos 8 +#define TC_WPMR_WPKEY_Msk (0xffffffu << TC_WPMR_WPKEY_Pos) /**< \brief (TC_WPMR) Write Protect KEY */ +#define TC_WPMR_WPKEY(value) ((TC_WPMR_WPKEY_Msk & ((value) << TC_WPMR_WPKEY_Pos))) + +/*@}*/ + + +#endif /* _SAM3XA_TC_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_trng.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_trng.h new file mode 100644 index 000000000..4deac7f75 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_trng.h @@ -0,0 +1,72 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_TRNG_COMPONENT_ +#define _SAM3XA_TRNG_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR True Random Number Generator */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_TRNG True Random Number Generator */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Trng hardware registers */ +typedef struct { + WoReg TRNG_CR; /**< \brief (Trng Offset: 0x00) Control Register */ + RoReg Reserved1[3]; + WoReg TRNG_IER; /**< \brief (Trng Offset: 0x10) Interrupt Enable Register */ + WoReg TRNG_IDR; /**< \brief (Trng Offset: 0x14) Interrupt Disable Register */ + RoReg TRNG_IMR; /**< \brief (Trng Offset: 0x18) Interrupt Mask Register */ + RoReg TRNG_ISR; /**< \brief (Trng Offset: 0x1C) Interrupt Status Register */ + RoReg Reserved2[12]; + RoReg TRNG_ODATA; /**< \brief (Trng Offset: 0x50) Output Data Register */ +} Trng; +#endif /* __ASSEMBLY__ */ +/* -------- TRNG_CR : (TRNG Offset: 0x00) Control Register -------- */ +#define TRNG_CR_ENABLE (0x1u << 0) /**< \brief (TRNG_CR) Enables the TRNG to provide random values */ +#define TRNG_CR_KEY_Pos 8 +#define TRNG_CR_KEY_Msk (0xffffffu << TRNG_CR_KEY_Pos) /**< \brief (TRNG_CR) Security Key */ +#define TRNG_CR_KEY(value) ((TRNG_CR_KEY_Msk & ((value) << TRNG_CR_KEY_Pos))) +/* -------- TRNG_IER : (TRNG Offset: 0x10) Interrupt Enable Register -------- */ +#define TRNG_IER_DATRDY (0x1u << 0) /**< \brief (TRNG_IER) Data Ready Interrupt Enable */ +/* -------- TRNG_IDR : (TRNG Offset: 0x14) Interrupt Disable Register -------- */ +#define TRNG_IDR_DATRDY (0x1u << 0) /**< \brief (TRNG_IDR) Data Ready Interrupt Disable */ +/* -------- TRNG_IMR : (TRNG Offset: 0x18) Interrupt Mask Register -------- */ +#define TRNG_IMR_DATRDY (0x1u << 0) /**< \brief (TRNG_IMR) Data Ready Interrupt Mask */ +/* -------- TRNG_ISR : (TRNG Offset: 0x1C) Interrupt Status Register -------- */ +#define TRNG_ISR_DATRDY (0x1u << 0) /**< \brief (TRNG_ISR) Data Ready */ +/* -------- TRNG_ODATA : (TRNG Offset: 0x50) Output Data Register -------- */ +#define TRNG_ODATA_ODATA_Pos 0 +#define TRNG_ODATA_ODATA_Msk (0xffffffffu << TRNG_ODATA_ODATA_Pos) /**< \brief (TRNG_ODATA) Output Data */ + +/*@}*/ + + +#endif /* _SAM3XA_TRNG_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_twi.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_twi.h new file mode 100644 index 000000000..cdc10d858 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_twi.h @@ -0,0 +1,217 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_TWI_COMPONENT_ +#define _SAM3XA_TWI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Two-wire Interface */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_TWI Two-wire Interface */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Twi hardware registers */ +typedef struct { + WoReg TWI_CR; /**< \brief (Twi Offset: 0x00) Control Register */ + RwReg TWI_MMR; /**< \brief (Twi Offset: 0x04) Master Mode Register */ + RwReg TWI_SMR; /**< \brief (Twi Offset: 0x08) Slave Mode Register */ + RwReg TWI_IADR; /**< \brief (Twi Offset: 0x0C) Internal Address Register */ + RwReg TWI_CWGR; /**< \brief (Twi Offset: 0x10) Clock Waveform Generator Register */ + RoReg Reserved1[3]; + RoReg TWI_SR; /**< \brief (Twi Offset: 0x20) Status Register */ + WoReg TWI_IER; /**< \brief (Twi Offset: 0x24) Interrupt Enable Register */ + WoReg TWI_IDR; /**< \brief (Twi Offset: 0x28) Interrupt Disable Register */ + RoReg TWI_IMR; /**< \brief (Twi Offset: 0x2C) Interrupt Mask Register */ + RoReg TWI_RHR; /**< \brief (Twi Offset: 0x30) Receive Holding Register */ + WoReg TWI_THR; /**< \brief (Twi Offset: 0x34) Transmit Holding Register */ + RoReg Reserved2[50]; + RwReg TWI_RPR; /**< \brief (Twi Offset: 0x100) Receive Pointer Register */ + RwReg TWI_RCR; /**< \brief (Twi Offset: 0x104) Receive Counter Register */ + RwReg TWI_TPR; /**< \brief (Twi Offset: 0x108) Transmit Pointer Register */ + RwReg TWI_TCR; /**< \brief (Twi Offset: 0x10C) Transmit Counter Register */ + RwReg TWI_RNPR; /**< \brief (Twi Offset: 0x110) Receive Next Pointer Register */ + RwReg TWI_RNCR; /**< \brief (Twi Offset: 0x114) Receive Next Counter Register */ + RwReg TWI_TNPR; /**< \brief (Twi Offset: 0x118) Transmit Next Pointer Register */ + RwReg TWI_TNCR; /**< \brief (Twi Offset: 0x11C) Transmit Next Counter Register */ + WoReg TWI_PTCR; /**< \brief (Twi Offset: 0x120) Transfer Control Register */ + RoReg TWI_PTSR; /**< \brief (Twi Offset: 0x124) Transfer Status Register */ +} Twi; +#endif /* __ASSEMBLY__ */ +/* -------- TWI_CR : (TWI Offset: 0x00) Control Register -------- */ +#define TWI_CR_START (0x1u << 0) /**< \brief (TWI_CR) Send a START Condition */ +#define TWI_CR_STOP (0x1u << 1) /**< \brief (TWI_CR) Send a STOP Condition */ +#define TWI_CR_MSEN (0x1u << 2) /**< \brief (TWI_CR) TWI Master Mode Enabled */ +#define TWI_CR_MSDIS (0x1u << 3) /**< \brief (TWI_CR) TWI Master Mode Disabled */ +#define TWI_CR_SVEN (0x1u << 4) /**< \brief (TWI_CR) TWI Slave Mode Enabled */ +#define TWI_CR_SVDIS (0x1u << 5) /**< \brief (TWI_CR) TWI Slave Mode Disabled */ +#define TWI_CR_QUICK (0x1u << 6) /**< \brief (TWI_CR) SMBUS Quick Command */ +#define TWI_CR_SWRST (0x1u << 7) /**< \brief (TWI_CR) Software Reset */ +/* -------- TWI_MMR : (TWI Offset: 0x04) Master Mode Register -------- */ +#define TWI_MMR_IADRSZ_Pos 8 +#define TWI_MMR_IADRSZ_Msk (0x3u << TWI_MMR_IADRSZ_Pos) /**< \brief (TWI_MMR) Internal Device Address Size */ +#define TWI_MMR_IADRSZ_NONE (0x0u << 8) /**< \brief (TWI_MMR) No internal device address */ +#define TWI_MMR_IADRSZ_1_BYTE (0x1u << 8) /**< \brief (TWI_MMR) One-byte internal device address */ +#define TWI_MMR_IADRSZ_2_BYTE (0x2u << 8) /**< \brief (TWI_MMR) Two-byte internal device address */ +#define TWI_MMR_IADRSZ_3_BYTE (0x3u << 8) /**< \brief (TWI_MMR) Three-byte internal device address */ +#define TWI_MMR_MREAD (0x1u << 12) /**< \brief (TWI_MMR) Master Read Direction */ +#define TWI_MMR_DADR_Pos 16 +#define TWI_MMR_DADR_Msk (0x7fu << TWI_MMR_DADR_Pos) /**< \brief (TWI_MMR) Device Address */ +#define TWI_MMR_DADR(value) ((TWI_MMR_DADR_Msk & ((value) << TWI_MMR_DADR_Pos))) +/* -------- TWI_SMR : (TWI Offset: 0x08) Slave Mode Register -------- */ +#define TWI_SMR_SADR_Pos 16 +#define TWI_SMR_SADR_Msk (0x7fu << TWI_SMR_SADR_Pos) /**< \brief (TWI_SMR) Slave Address */ +#define TWI_SMR_SADR(value) ((TWI_SMR_SADR_Msk & ((value) << TWI_SMR_SADR_Pos))) +/* -------- TWI_IADR : (TWI Offset: 0x0C) Internal Address Register -------- */ +#define TWI_IADR_IADR_Pos 0 +#define TWI_IADR_IADR_Msk (0xffffffu << TWI_IADR_IADR_Pos) /**< \brief (TWI_IADR) Internal Address */ +#define TWI_IADR_IADR(value) ((TWI_IADR_IADR_Msk & ((value) << TWI_IADR_IADR_Pos))) +/* -------- TWI_CWGR : (TWI Offset: 0x10) Clock Waveform Generator Register -------- */ +#define TWI_CWGR_CLDIV_Pos 0 +#define TWI_CWGR_CLDIV_Msk (0xffu << TWI_CWGR_CLDIV_Pos) /**< \brief (TWI_CWGR) Clock Low Divider */ +#define TWI_CWGR_CLDIV(value) ((TWI_CWGR_CLDIV_Msk & ((value) << TWI_CWGR_CLDIV_Pos))) +#define TWI_CWGR_CHDIV_Pos 8 +#define TWI_CWGR_CHDIV_Msk (0xffu << TWI_CWGR_CHDIV_Pos) /**< \brief (TWI_CWGR) Clock High Divider */ +#define TWI_CWGR_CHDIV(value) ((TWI_CWGR_CHDIV_Msk & ((value) << TWI_CWGR_CHDIV_Pos))) +#define TWI_CWGR_CKDIV_Pos 16 +#define TWI_CWGR_CKDIV_Msk (0x7u << TWI_CWGR_CKDIV_Pos) /**< \brief (TWI_CWGR) Clock Divider */ +#define TWI_CWGR_CKDIV(value) ((TWI_CWGR_CKDIV_Msk & ((value) << TWI_CWGR_CKDIV_Pos))) +/* -------- TWI_SR : (TWI Offset: 0x20) Status Register -------- */ +#define TWI_SR_TXCOMP (0x1u << 0) /**< \brief (TWI_SR) Transmission Completed (automatically set / reset) */ +#define TWI_SR_RXRDY (0x1u << 1) /**< \brief (TWI_SR) Receive Holding Register Ready (automatically set / reset) */ +#define TWI_SR_TXRDY (0x1u << 2) /**< \brief (TWI_SR) Transmit Holding Register Ready (automatically set / reset) */ +#define TWI_SR_SVREAD (0x1u << 3) /**< \brief (TWI_SR) Slave Read (automatically set / reset) */ +#define TWI_SR_SVACC (0x1u << 4) /**< \brief (TWI_SR) Slave Access (automatically set / reset) */ +#define TWI_SR_GACC (0x1u << 5) /**< \brief (TWI_SR) General Call Access (clear on read) */ +#define TWI_SR_OVRE (0x1u << 6) /**< \brief (TWI_SR) Overrun Error (clear on read) */ +#define TWI_SR_NACK (0x1u << 8) /**< \brief (TWI_SR) Not Acknowledged (clear on read) */ +#define TWI_SR_ARBLST (0x1u << 9) /**< \brief (TWI_SR) Arbitration Lost (clear on read) */ +#define TWI_SR_SCLWS (0x1u << 10) /**< \brief (TWI_SR) Clock Wait State (automatically set / reset) */ +#define TWI_SR_EOSACC (0x1u << 11) /**< \brief (TWI_SR) End Of Slave Access (clear on read) */ +#define TWI_SR_ENDRX (0x1u << 12) /**< \brief (TWI_SR) End of RX buffer */ +#define TWI_SR_ENDTX (0x1u << 13) /**< \brief (TWI_SR) End of TX buffer */ +#define TWI_SR_RXBUFF (0x1u << 14) /**< \brief (TWI_SR) RX Buffer Full */ +#define TWI_SR_TXBUFE (0x1u << 15) /**< \brief (TWI_SR) TX Buffer Empty */ +/* -------- TWI_IER : (TWI Offset: 0x24) Interrupt Enable Register -------- */ +#define TWI_IER_TXCOMP (0x1u << 0) /**< \brief (TWI_IER) Transmission Completed Interrupt Enable */ +#define TWI_IER_RXRDY (0x1u << 1) /**< \brief (TWI_IER) Receive Holding Register Ready Interrupt Enable */ +#define TWI_IER_TXRDY (0x1u << 2) /**< \brief (TWI_IER) Transmit Holding Register Ready Interrupt Enable */ +#define TWI_IER_SVACC (0x1u << 4) /**< \brief (TWI_IER) Slave Access Interrupt Enable */ +#define TWI_IER_GACC (0x1u << 5) /**< \brief (TWI_IER) General Call Access Interrupt Enable */ +#define TWI_IER_OVRE (0x1u << 6) /**< \brief (TWI_IER) Overrun Error Interrupt Enable */ +#define TWI_IER_NACK (0x1u << 8) /**< \brief (TWI_IER) Not Acknowledge Interrupt Enable */ +#define TWI_IER_ARBLST (0x1u << 9) /**< \brief (TWI_IER) Arbitration Lost Interrupt Enable */ +#define TWI_IER_SCL_WS (0x1u << 10) /**< \brief (TWI_IER) Clock Wait State Interrupt Enable */ +#define TWI_IER_EOSACC (0x1u << 11) /**< \brief (TWI_IER) End Of Slave Access Interrupt Enable */ +#define TWI_IER_ENDRX (0x1u << 12) /**< \brief (TWI_IER) End of Receive Buffer Interrupt Enable */ +#define TWI_IER_ENDTX (0x1u << 13) /**< \brief (TWI_IER) End of Transmit Buffer Interrupt Enable */ +#define TWI_IER_RXBUFF (0x1u << 14) /**< \brief (TWI_IER) Receive Buffer Full Interrupt Enable */ +#define TWI_IER_TXBUFE (0x1u << 15) /**< \brief (TWI_IER) Transmit Buffer Empty Interrupt Enable */ +/* -------- TWI_IDR : (TWI Offset: 0x28) Interrupt Disable Register -------- */ +#define TWI_IDR_TXCOMP (0x1u << 0) /**< \brief (TWI_IDR) Transmission Completed Interrupt Disable */ +#define TWI_IDR_RXRDY (0x1u << 1) /**< \brief (TWI_IDR) Receive Holding Register Ready Interrupt Disable */ +#define TWI_IDR_TXRDY (0x1u << 2) /**< \brief (TWI_IDR) Transmit Holding Register Ready Interrupt Disable */ +#define TWI_IDR_SVACC (0x1u << 4) /**< \brief (TWI_IDR) Slave Access Interrupt Disable */ +#define TWI_IDR_GACC (0x1u << 5) /**< \brief (TWI_IDR) General Call Access Interrupt Disable */ +#define TWI_IDR_OVRE (0x1u << 6) /**< \brief (TWI_IDR) Overrun Error Interrupt Disable */ +#define TWI_IDR_NACK (0x1u << 8) /**< \brief (TWI_IDR) Not Acknowledge Interrupt Disable */ +#define TWI_IDR_ARBLST (0x1u << 9) /**< \brief (TWI_IDR) Arbitration Lost Interrupt Disable */ +#define TWI_IDR_SCL_WS (0x1u << 10) /**< \brief (TWI_IDR) Clock Wait State Interrupt Disable */ +#define TWI_IDR_EOSACC (0x1u << 11) /**< \brief (TWI_IDR) End Of Slave Access Interrupt Disable */ +#define TWI_IDR_ENDRX (0x1u << 12) /**< \brief (TWI_IDR) End of Receive Buffer Interrupt Disable */ +#define TWI_IDR_ENDTX (0x1u << 13) /**< \brief (TWI_IDR) End of Transmit Buffer Interrupt Disable */ +#define TWI_IDR_RXBUFF (0x1u << 14) /**< \brief (TWI_IDR) Receive Buffer Full Interrupt Disable */ +#define TWI_IDR_TXBUFE (0x1u << 15) /**< \brief (TWI_IDR) Transmit Buffer Empty Interrupt Disable */ +/* -------- TWI_IMR : (TWI Offset: 0x2C) Interrupt Mask Register -------- */ +#define TWI_IMR_TXCOMP (0x1u << 0) /**< \brief (TWI_IMR) Transmission Completed Interrupt Mask */ +#define TWI_IMR_RXRDY (0x1u << 1) /**< \brief (TWI_IMR) Receive Holding Register Ready Interrupt Mask */ +#define TWI_IMR_TXRDY (0x1u << 2) /**< \brief (TWI_IMR) Transmit Holding Register Ready Interrupt Mask */ +#define TWI_IMR_SVACC (0x1u << 4) /**< \brief (TWI_IMR) Slave Access Interrupt Mask */ +#define TWI_IMR_GACC (0x1u << 5) /**< \brief (TWI_IMR) General Call Access Interrupt Mask */ +#define TWI_IMR_OVRE (0x1u << 6) /**< \brief (TWI_IMR) Overrun Error Interrupt Mask */ +#define TWI_IMR_NACK (0x1u << 8) /**< \brief (TWI_IMR) Not Acknowledge Interrupt Mask */ +#define TWI_IMR_ARBLST (0x1u << 9) /**< \brief (TWI_IMR) Arbitration Lost Interrupt Mask */ +#define TWI_IMR_SCL_WS (0x1u << 10) /**< \brief (TWI_IMR) Clock Wait State Interrupt Mask */ +#define TWI_IMR_EOSACC (0x1u << 11) /**< \brief (TWI_IMR) End Of Slave Access Interrupt Mask */ +#define TWI_IMR_ENDRX (0x1u << 12) /**< \brief (TWI_IMR) End of Receive Buffer Interrupt Mask */ +#define TWI_IMR_ENDTX (0x1u << 13) /**< \brief (TWI_IMR) End of Transmit Buffer Interrupt Mask */ +#define TWI_IMR_RXBUFF (0x1u << 14) /**< \brief (TWI_IMR) Receive Buffer Full Interrupt Mask */ +#define TWI_IMR_TXBUFE (0x1u << 15) /**< \brief (TWI_IMR) Transmit Buffer Empty Interrupt Mask */ +/* -------- TWI_RHR : (TWI Offset: 0x30) Receive Holding Register -------- */ +#define TWI_RHR_RXDATA_Pos 0 +#define TWI_RHR_RXDATA_Msk (0xffu << TWI_RHR_RXDATA_Pos) /**< \brief (TWI_RHR) Master or Slave Receive Holding Data */ +/* -------- TWI_THR : (TWI Offset: 0x34) Transmit Holding Register -------- */ +#define TWI_THR_TXDATA_Pos 0 +#define TWI_THR_TXDATA_Msk (0xffu << TWI_THR_TXDATA_Pos) /**< \brief (TWI_THR) Master or Slave Transmit Holding Data */ +#define TWI_THR_TXDATA(value) ((TWI_THR_TXDATA_Msk & ((value) << TWI_THR_TXDATA_Pos))) +/* -------- TWI_RPR : (TWI Offset: 0x100) Receive Pointer Register -------- */ +#define TWI_RPR_RXPTR_Pos 0 +#define TWI_RPR_RXPTR_Msk (0xffffffffu << TWI_RPR_RXPTR_Pos) /**< \brief (TWI_RPR) Receive Pointer Register */ +#define TWI_RPR_RXPTR(value) ((TWI_RPR_RXPTR_Msk & ((value) << TWI_RPR_RXPTR_Pos))) +/* -------- TWI_RCR : (TWI Offset: 0x104) Receive Counter Register -------- */ +#define TWI_RCR_RXCTR_Pos 0 +#define TWI_RCR_RXCTR_Msk (0xffffu << TWI_RCR_RXCTR_Pos) /**< \brief (TWI_RCR) Receive Counter Register */ +#define TWI_RCR_RXCTR(value) ((TWI_RCR_RXCTR_Msk & ((value) << TWI_RCR_RXCTR_Pos))) +/* -------- TWI_TPR : (TWI Offset: 0x108) Transmit Pointer Register -------- */ +#define TWI_TPR_TXPTR_Pos 0 +#define TWI_TPR_TXPTR_Msk (0xffffffffu << TWI_TPR_TXPTR_Pos) /**< \brief (TWI_TPR) Transmit Counter Register */ +#define TWI_TPR_TXPTR(value) ((TWI_TPR_TXPTR_Msk & ((value) << TWI_TPR_TXPTR_Pos))) +/* -------- TWI_TCR : (TWI Offset: 0x10C) Transmit Counter Register -------- */ +#define TWI_TCR_TXCTR_Pos 0 +#define TWI_TCR_TXCTR_Msk (0xffffu << TWI_TCR_TXCTR_Pos) /**< \brief (TWI_TCR) Transmit Counter Register */ +#define TWI_TCR_TXCTR(value) ((TWI_TCR_TXCTR_Msk & ((value) << TWI_TCR_TXCTR_Pos))) +/* -------- TWI_RNPR : (TWI Offset: 0x110) Receive Next Pointer Register -------- */ +#define TWI_RNPR_RXNPTR_Pos 0 +#define TWI_RNPR_RXNPTR_Msk (0xffffffffu << TWI_RNPR_RXNPTR_Pos) /**< \brief (TWI_RNPR) Receive Next Pointer */ +#define TWI_RNPR_RXNPTR(value) ((TWI_RNPR_RXNPTR_Msk & ((value) << TWI_RNPR_RXNPTR_Pos))) +/* -------- TWI_RNCR : (TWI Offset: 0x114) Receive Next Counter Register -------- */ +#define TWI_RNCR_RXNCTR_Pos 0 +#define TWI_RNCR_RXNCTR_Msk (0xffffu << TWI_RNCR_RXNCTR_Pos) /**< \brief (TWI_RNCR) Receive Next Counter */ +#define TWI_RNCR_RXNCTR(value) ((TWI_RNCR_RXNCTR_Msk & ((value) << TWI_RNCR_RXNCTR_Pos))) +/* -------- TWI_TNPR : (TWI Offset: 0x118) Transmit Next Pointer Register -------- */ +#define TWI_TNPR_TXNPTR_Pos 0 +#define TWI_TNPR_TXNPTR_Msk (0xffffffffu << TWI_TNPR_TXNPTR_Pos) /**< \brief (TWI_TNPR) Transmit Next Pointer */ +#define TWI_TNPR_TXNPTR(value) ((TWI_TNPR_TXNPTR_Msk & ((value) << TWI_TNPR_TXNPTR_Pos))) +/* -------- TWI_TNCR : (TWI Offset: 0x11C) Transmit Next Counter Register -------- */ +#define TWI_TNCR_TXNCTR_Pos 0 +#define TWI_TNCR_TXNCTR_Msk (0xffffu << TWI_TNCR_TXNCTR_Pos) /**< \brief (TWI_TNCR) Transmit Counter Next */ +#define TWI_TNCR_TXNCTR(value) ((TWI_TNCR_TXNCTR_Msk & ((value) << TWI_TNCR_TXNCTR_Pos))) +/* -------- TWI_PTCR : (TWI Offset: 0x120) Transfer Control Register -------- */ +#define TWI_PTCR_RXTEN (0x1u << 0) /**< \brief (TWI_PTCR) Receiver Transfer Enable */ +#define TWI_PTCR_RXTDIS (0x1u << 1) /**< \brief (TWI_PTCR) Receiver Transfer Disable */ +#define TWI_PTCR_TXTEN (0x1u << 8) /**< \brief (TWI_PTCR) Transmitter Transfer Enable */ +#define TWI_PTCR_TXTDIS (0x1u << 9) /**< \brief (TWI_PTCR) Transmitter Transfer Disable */ +/* -------- TWI_PTSR : (TWI Offset: 0x124) Transfer Status Register -------- */ +#define TWI_PTSR_RXTEN (0x1u << 0) /**< \brief (TWI_PTSR) Receiver Transfer Enable */ +#define TWI_PTSR_TXTEN (0x1u << 8) /**< \brief (TWI_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3XA_TWI_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_uart.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_uart.h new file mode 100644 index 000000000..dc8f47c93 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_uart.h @@ -0,0 +1,185 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_UART_COMPONENT_ +#define _SAM3XA_UART_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Universal Asynchronous Receiver Transmitter */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_UART Universal Asynchronous Receiver Transmitter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Uart hardware registers */ +typedef struct { + WoReg UART_CR; /**< \brief (Uart Offset: 0x0000) Control Register */ + RwReg UART_MR; /**< \brief (Uart Offset: 0x0004) Mode Register */ + WoReg UART_IER; /**< \brief (Uart Offset: 0x0008) Interrupt Enable Register */ + WoReg UART_IDR; /**< \brief (Uart Offset: 0x000C) Interrupt Disable Register */ + RoReg UART_IMR; /**< \brief (Uart Offset: 0x0010) Interrupt Mask Register */ + RoReg UART_SR; /**< \brief (Uart Offset: 0x0014) Status Register */ + RoReg UART_RHR; /**< \brief (Uart Offset: 0x0018) Receive Holding Register */ + WoReg UART_THR; /**< \brief (Uart Offset: 0x001C) Transmit Holding Register */ + RwReg UART_BRGR; /**< \brief (Uart Offset: 0x0020) Baud Rate Generator Register */ + RoReg Reserved1[55]; + RwReg UART_RPR; /**< \brief (Uart Offset: 0x100) Receive Pointer Register */ + RwReg UART_RCR; /**< \brief (Uart Offset: 0x104) Receive Counter Register */ + RwReg UART_TPR; /**< \brief (Uart Offset: 0x108) Transmit Pointer Register */ + RwReg UART_TCR; /**< \brief (Uart Offset: 0x10C) Transmit Counter Register */ + RwReg UART_RNPR; /**< \brief (Uart Offset: 0x110) Receive Next Pointer Register */ + RwReg UART_RNCR; /**< \brief (Uart Offset: 0x114) Receive Next Counter Register */ + RwReg UART_TNPR; /**< \brief (Uart Offset: 0x118) Transmit Next Pointer Register */ + RwReg UART_TNCR; /**< \brief (Uart Offset: 0x11C) Transmit Next Counter Register */ + WoReg UART_PTCR; /**< \brief (Uart Offset: 0x120) Transfer Control Register */ + RoReg UART_PTSR; /**< \brief (Uart Offset: 0x124) Transfer Status Register */ +} Uart; +#endif /* __ASSEMBLY__ */ +/* -------- UART_CR : (UART Offset: 0x0000) Control Register -------- */ +#define UART_CR_RSTRX (0x1u << 2) /**< \brief (UART_CR) Reset Receiver */ +#define UART_CR_RSTTX (0x1u << 3) /**< \brief (UART_CR) Reset Transmitter */ +#define UART_CR_RXEN (0x1u << 4) /**< \brief (UART_CR) Receiver Enable */ +#define UART_CR_RXDIS (0x1u << 5) /**< \brief (UART_CR) Receiver Disable */ +#define UART_CR_TXEN (0x1u << 6) /**< \brief (UART_CR) Transmitter Enable */ +#define UART_CR_TXDIS (0x1u << 7) /**< \brief (UART_CR) Transmitter Disable */ +#define UART_CR_RSTSTA (0x1u << 8) /**< \brief (UART_CR) Reset Status Bits */ +/* -------- UART_MR : (UART Offset: 0x0004) Mode Register -------- */ +#define UART_MR_PAR_Pos 9 +#define UART_MR_PAR_Msk (0x7u << UART_MR_PAR_Pos) /**< \brief (UART_MR) Parity Type */ +#define UART_MR_PAR_EVEN (0x0u << 9) /**< \brief (UART_MR) Even parity */ +#define UART_MR_PAR_ODD (0x1u << 9) /**< \brief (UART_MR) Odd parity */ +#define UART_MR_PAR_SPACE (0x2u << 9) /**< \brief (UART_MR) Space: parity forced to 0 */ +#define UART_MR_PAR_MARK (0x3u << 9) /**< \brief (UART_MR) Mark: parity forced to 1 */ +#define UART_MR_PAR_NO (0x4u << 9) /**< \brief (UART_MR) No parity */ +#define UART_MR_CHMODE_Pos 14 +#define UART_MR_CHMODE_Msk (0x3u << UART_MR_CHMODE_Pos) /**< \brief (UART_MR) Channel Mode */ +#define UART_MR_CHMODE_NORMAL (0x0u << 14) /**< \brief (UART_MR) Normal Mode */ +#define UART_MR_CHMODE_AUTOMATIC (0x1u << 14) /**< \brief (UART_MR) Automatic Echo */ +#define UART_MR_CHMODE_LOCAL_LOOPBACK (0x2u << 14) /**< \brief (UART_MR) Local Loopback */ +#define UART_MR_CHMODE_REMOTE_LOOPBACK (0x3u << 14) /**< \brief (UART_MR) Remote Loopback */ +/* -------- UART_IER : (UART Offset: 0x0008) Interrupt Enable Register -------- */ +#define UART_IER_RXRDY (0x1u << 0) /**< \brief (UART_IER) Enable RXRDY Interrupt */ +#define UART_IER_TXRDY (0x1u << 1) /**< \brief (UART_IER) Enable TXRDY Interrupt */ +#define UART_IER_ENDRX (0x1u << 3) /**< \brief (UART_IER) Enable End of Receive Transfer Interrupt */ +#define UART_IER_ENDTX (0x1u << 4) /**< \brief (UART_IER) Enable End of Transmit Interrupt */ +#define UART_IER_OVRE (0x1u << 5) /**< \brief (UART_IER) Enable Overrun Error Interrupt */ +#define UART_IER_FRAME (0x1u << 6) /**< \brief (UART_IER) Enable Framing Error Interrupt */ +#define UART_IER_PARE (0x1u << 7) /**< \brief (UART_IER) Enable Parity Error Interrupt */ +#define UART_IER_TXEMPTY (0x1u << 9) /**< \brief (UART_IER) Enable TXEMPTY Interrupt */ +#define UART_IER_TXBUFE (0x1u << 11) /**< \brief (UART_IER) Enable Buffer Empty Interrupt */ +#define UART_IER_RXBUFF (0x1u << 12) /**< \brief (UART_IER) Enable Buffer Full Interrupt */ +/* -------- UART_IDR : (UART Offset: 0x000C) Interrupt Disable Register -------- */ +#define UART_IDR_RXRDY (0x1u << 0) /**< \brief (UART_IDR) Disable RXRDY Interrupt */ +#define UART_IDR_TXRDY (0x1u << 1) /**< \brief (UART_IDR) Disable TXRDY Interrupt */ +#define UART_IDR_ENDRX (0x1u << 3) /**< \brief (UART_IDR) Disable End of Receive Transfer Interrupt */ +#define UART_IDR_ENDTX (0x1u << 4) /**< \brief (UART_IDR) Disable End of Transmit Interrupt */ +#define UART_IDR_OVRE (0x1u << 5) /**< \brief (UART_IDR) Disable Overrun Error Interrupt */ +#define UART_IDR_FRAME (0x1u << 6) /**< \brief (UART_IDR) Disable Framing Error Interrupt */ +#define UART_IDR_PARE (0x1u << 7) /**< \brief (UART_IDR) Disable Parity Error Interrupt */ +#define UART_IDR_TXEMPTY (0x1u << 9) /**< \brief (UART_IDR) Disable TXEMPTY Interrupt */ +#define UART_IDR_TXBUFE (0x1u << 11) /**< \brief (UART_IDR) Disable Buffer Empty Interrupt */ +#define UART_IDR_RXBUFF (0x1u << 12) /**< \brief (UART_IDR) Disable Buffer Full Interrupt */ +/* -------- UART_IMR : (UART Offset: 0x0010) Interrupt Mask Register -------- */ +#define UART_IMR_RXRDY (0x1u << 0) /**< \brief (UART_IMR) Mask RXRDY Interrupt */ +#define UART_IMR_TXRDY (0x1u << 1) /**< \brief (UART_IMR) Disable TXRDY Interrupt */ +#define UART_IMR_ENDRX (0x1u << 3) /**< \brief (UART_IMR) Mask End of Receive Transfer Interrupt */ +#define UART_IMR_ENDTX (0x1u << 4) /**< \brief (UART_IMR) Mask End of Transmit Interrupt */ +#define UART_IMR_OVRE (0x1u << 5) /**< \brief (UART_IMR) Mask Overrun Error Interrupt */ +#define UART_IMR_FRAME (0x1u << 6) /**< \brief (UART_IMR) Mask Framing Error Interrupt */ +#define UART_IMR_PARE (0x1u << 7) /**< \brief (UART_IMR) Mask Parity Error Interrupt */ +#define UART_IMR_TXEMPTY (0x1u << 9) /**< \brief (UART_IMR) Mask TXEMPTY Interrupt */ +#define UART_IMR_TXBUFE (0x1u << 11) /**< \brief (UART_IMR) Mask TXBUFE Interrupt */ +#define UART_IMR_RXBUFF (0x1u << 12) /**< \brief (UART_IMR) Mask RXBUFF Interrupt */ +/* -------- UART_SR : (UART Offset: 0x0014) Status Register -------- */ +#define UART_SR_RXRDY (0x1u << 0) /**< \brief (UART_SR) Receiver Ready */ +#define UART_SR_TXRDY (0x1u << 1) /**< \brief (UART_SR) Transmitter Ready */ +#define UART_SR_ENDRX (0x1u << 3) /**< \brief (UART_SR) End of Receiver Transfer */ +#define UART_SR_ENDTX (0x1u << 4) /**< \brief (UART_SR) End of Transmitter Transfer */ +#define UART_SR_OVRE (0x1u << 5) /**< \brief (UART_SR) Overrun Error */ +#define UART_SR_FRAME (0x1u << 6) /**< \brief (UART_SR) Framing Error */ +#define UART_SR_PARE (0x1u << 7) /**< \brief (UART_SR) Parity Error */ +#define UART_SR_TXEMPTY (0x1u << 9) /**< \brief (UART_SR) Transmitter Empty */ +#define UART_SR_TXBUFE (0x1u << 11) /**< \brief (UART_SR) Transmission Buffer Empty */ +#define UART_SR_RXBUFF (0x1u << 12) /**< \brief (UART_SR) Receive Buffer Full */ +/* -------- UART_RHR : (UART Offset: 0x0018) Receive Holding Register -------- */ +#define UART_RHR_RXCHR_Pos 0 +#define UART_RHR_RXCHR_Msk (0xffu << UART_RHR_RXCHR_Pos) /**< \brief (UART_RHR) Received Character */ +/* -------- UART_THR : (UART Offset: 0x001C) Transmit Holding Register -------- */ +#define UART_THR_TXCHR_Pos 0 +#define UART_THR_TXCHR_Msk (0xffu << UART_THR_TXCHR_Pos) /**< \brief (UART_THR) Character to be Transmitted */ +#define UART_THR_TXCHR(value) ((UART_THR_TXCHR_Msk & ((value) << UART_THR_TXCHR_Pos))) +/* -------- UART_BRGR : (UART Offset: 0x0020) Baud Rate Generator Register -------- */ +#define UART_BRGR_CD_Pos 0 +#define UART_BRGR_CD_Msk (0xffffu << UART_BRGR_CD_Pos) /**< \brief (UART_BRGR) Clock Divisor */ +#define UART_BRGR_CD(value) ((UART_BRGR_CD_Msk & ((value) << UART_BRGR_CD_Pos))) +/* -------- UART_RPR : (UART Offset: 0x100) Receive Pointer Register -------- */ +#define UART_RPR_RXPTR_Pos 0 +#define UART_RPR_RXPTR_Msk (0xffffffffu << UART_RPR_RXPTR_Pos) /**< \brief (UART_RPR) Receive Pointer Register */ +#define UART_RPR_RXPTR(value) ((UART_RPR_RXPTR_Msk & ((value) << UART_RPR_RXPTR_Pos))) +/* -------- UART_RCR : (UART Offset: 0x104) Receive Counter Register -------- */ +#define UART_RCR_RXCTR_Pos 0 +#define UART_RCR_RXCTR_Msk (0xffffu << UART_RCR_RXCTR_Pos) /**< \brief (UART_RCR) Receive Counter Register */ +#define UART_RCR_RXCTR(value) ((UART_RCR_RXCTR_Msk & ((value) << UART_RCR_RXCTR_Pos))) +/* -------- UART_TPR : (UART Offset: 0x108) Transmit Pointer Register -------- */ +#define UART_TPR_TXPTR_Pos 0 +#define UART_TPR_TXPTR_Msk (0xffffffffu << UART_TPR_TXPTR_Pos) /**< \brief (UART_TPR) Transmit Counter Register */ +#define UART_TPR_TXPTR(value) ((UART_TPR_TXPTR_Msk & ((value) << UART_TPR_TXPTR_Pos))) +/* -------- UART_TCR : (UART Offset: 0x10C) Transmit Counter Register -------- */ +#define UART_TCR_TXCTR_Pos 0 +#define UART_TCR_TXCTR_Msk (0xffffu << UART_TCR_TXCTR_Pos) /**< \brief (UART_TCR) Transmit Counter Register */ +#define UART_TCR_TXCTR(value) ((UART_TCR_TXCTR_Msk & ((value) << UART_TCR_TXCTR_Pos))) +/* -------- UART_RNPR : (UART Offset: 0x110) Receive Next Pointer Register -------- */ +#define UART_RNPR_RXNPTR_Pos 0 +#define UART_RNPR_RXNPTR_Msk (0xffffffffu << UART_RNPR_RXNPTR_Pos) /**< \brief (UART_RNPR) Receive Next Pointer */ +#define UART_RNPR_RXNPTR(value) ((UART_RNPR_RXNPTR_Msk & ((value) << UART_RNPR_RXNPTR_Pos))) +/* -------- UART_RNCR : (UART Offset: 0x114) Receive Next Counter Register -------- */ +#define UART_RNCR_RXNCTR_Pos 0 +#define UART_RNCR_RXNCTR_Msk (0xffffu << UART_RNCR_RXNCTR_Pos) /**< \brief (UART_RNCR) Receive Next Counter */ +#define UART_RNCR_RXNCTR(value) ((UART_RNCR_RXNCTR_Msk & ((value) << UART_RNCR_RXNCTR_Pos))) +/* -------- UART_TNPR : (UART Offset: 0x118) Transmit Next Pointer Register -------- */ +#define UART_TNPR_TXNPTR_Pos 0 +#define UART_TNPR_TXNPTR_Msk (0xffffffffu << UART_TNPR_TXNPTR_Pos) /**< \brief (UART_TNPR) Transmit Next Pointer */ +#define UART_TNPR_TXNPTR(value) ((UART_TNPR_TXNPTR_Msk & ((value) << UART_TNPR_TXNPTR_Pos))) +/* -------- UART_TNCR : (UART Offset: 0x11C) Transmit Next Counter Register -------- */ +#define UART_TNCR_TXNCTR_Pos 0 +#define UART_TNCR_TXNCTR_Msk (0xffffu << UART_TNCR_TXNCTR_Pos) /**< \brief (UART_TNCR) Transmit Counter Next */ +#define UART_TNCR_TXNCTR(value) ((UART_TNCR_TXNCTR_Msk & ((value) << UART_TNCR_TXNCTR_Pos))) +/* -------- UART_PTCR : (UART Offset: 0x120) Transfer Control Register -------- */ +#define UART_PTCR_RXTEN (0x1u << 0) /**< \brief (UART_PTCR) Receiver Transfer Enable */ +#define UART_PTCR_RXTDIS (0x1u << 1) /**< \brief (UART_PTCR) Receiver Transfer Disable */ +#define UART_PTCR_TXTEN (0x1u << 8) /**< \brief (UART_PTCR) Transmitter Transfer Enable */ +#define UART_PTCR_TXTDIS (0x1u << 9) /**< \brief (UART_PTCR) Transmitter Transfer Disable */ +/* -------- UART_PTSR : (UART Offset: 0x124) Transfer Status Register -------- */ +#define UART_PTSR_RXTEN (0x1u << 0) /**< \brief (UART_PTSR) Receiver Transfer Enable */ +#define UART_PTSR_TXTEN (0x1u << 8) /**< \brief (UART_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3XA_UART_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_uotghs.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_uotghs.h new file mode 100644 index 000000000..15ec768e5 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_uotghs.h @@ -0,0 +1,938 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_UOTGHS_COMPONENT_ +#define _SAM3XA_UOTGHS_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR USB On-The-Go Interface */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_UOTGHS USB On-The-Go Interface */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief UotghsDevdma hardware registers */ +typedef struct { + RwReg UOTGHS_DEVDMANXTDSC; /**< \brief (UotghsDevdma Offset: 0x0) Device DMA Channel Next Descriptor Address Register */ + RwReg UOTGHS_DEVDMAADDRESS; /**< \brief (UotghsDevdma Offset: 0x4) Device DMA Channel Address Register */ + RwReg UOTGHS_DEVDMACONTROL; /**< \brief (UotghsDevdma Offset: 0x8) Device DMA Channel Control Register */ + RwReg UOTGHS_DEVDMASTATUS; /**< \brief (UotghsDevdma Offset: 0xC) Device DMA Channel Status Register */ +} UotghsDevdma; +/** \brief UotghsHstdma hardware registers */ +typedef struct { + RwReg UOTGHS_HSTDMANXTDSC; /**< \brief (UotghsHstdma Offset: 0x0) Host DMA Channel Next Descriptor Address Register */ + RwReg UOTGHS_HSTDMAADDRESS; /**< \brief (UotghsHstdma Offset: 0x4) Host DMA Channel Address Register */ + RwReg UOTGHS_HSTDMACONTROL; /**< \brief (UotghsHstdma Offset: 0x8) Host DMA Channel Control Register */ + RwReg UOTGHS_HSTDMASTATUS; /**< \brief (UotghsHstdma Offset: 0xC) Host DMA Channel Status Register */ +} UotghsHstdma; +/** \brief Uotghs hardware registers */ +#define UOTGHSDEVDMA_NUMBER 7 +#define UOTGHSHSTDMA_NUMBER 7 +typedef struct { + RwReg UOTGHS_DEVCTRL; /**< \brief (Uotghs Offset: 0x0000) Device General Control Register */ + RoReg UOTGHS_DEVISR; /**< \brief (Uotghs Offset: 0x0004) Device Global Interrupt Status Register */ + WoReg UOTGHS_DEVICR; /**< \brief (Uotghs Offset: 0x0008) Device Global Interrupt Clear Register */ + WoReg UOTGHS_DEVIFR; /**< \brief (Uotghs Offset: 0x000C) Device Global Interrupt Set Register */ + RoReg UOTGHS_DEVIMR; /**< \brief (Uotghs Offset: 0x0010) Device Global Interrupt Mask Register */ + WoReg UOTGHS_DEVIDR; /**< \brief (Uotghs Offset: 0x0014) Device Global Interrupt Disable Register */ + WoReg UOTGHS_DEVIER; /**< \brief (Uotghs Offset: 0x0018) Device Global Interrupt Enable Register */ + RwReg UOTGHS_DEVEPT; /**< \brief (Uotghs Offset: 0x001C) Device Endpoint Register */ + RoReg UOTGHS_DEVFNUM; /**< \brief (Uotghs Offset: 0x0020) Device Frame Number Register */ + RoReg Reserved1[55]; + RwReg UOTGHS_DEVEPTCFG[10]; /**< \brief (Uotghs Offset: 0x100) Device Endpoint Configuration Register (n = 0) */ + RoReg Reserved2[2]; + RoReg UOTGHS_DEVEPTISR[10]; /**< \brief (Uotghs Offset: 0x130) Device Endpoint Status Register (n = 0) */ + RoReg Reserved3[2]; + WoReg UOTGHS_DEVEPTICR[10]; /**< \brief (Uotghs Offset: 0x160) Device Endpoint Clear Register (n = 0) */ + RoReg Reserved4[2]; + WoReg UOTGHS_DEVEPTIFR[10]; /**< \brief (Uotghs Offset: 0x190) Device Endpoint Set Register (n = 0) */ + RoReg Reserved5[2]; + RoReg UOTGHS_DEVEPTIMR[10]; /**< \brief (Uotghs Offset: 0x1C0) Device Endpoint Mask Register (n = 0) */ + RoReg Reserved6[2]; + WoReg UOTGHS_DEVEPTIER[10]; /**< \brief (Uotghs Offset: 0x1F0) Device Endpoint Enable Register (n = 0) */ + RoReg Reserved7[2]; + WoReg UOTGHS_DEVEPTIDR[10]; /**< \brief (Uotghs Offset: 0x220) Device Endpoint Disable Register (n = 0) */ + RoReg Reserved8[50]; + UotghsDevdma UOTGHS_DEVDMA[UOTGHSDEVDMA_NUMBER]; /**< \brief (Uotghs Offset: 0x310) n = 1 .. 7 */ + RoReg Reserved9[32]; + RwReg UOTGHS_HSTCTRL; /**< \brief (Uotghs Offset: 0x0400) Host General Control Register */ + RoReg UOTGHS_HSTISR; /**< \brief (Uotghs Offset: 0x0404) Host Global Interrupt Status Register */ + WoReg UOTGHS_HSTICR; /**< \brief (Uotghs Offset: 0x0408) Host Global Interrupt Clear Register */ + WoReg UOTGHS_HSTIFR; /**< \brief (Uotghs Offset: 0x040C) Host Global Interrupt Set Register */ + RoReg UOTGHS_HSTIMR; /**< \brief (Uotghs Offset: 0x0410) Host Global Interrupt Mask Register */ + WoReg UOTGHS_HSTIDR; /**< \brief (Uotghs Offset: 0x0414) Host Global Interrupt Disable Register */ + WoReg UOTGHS_HSTIER; /**< \brief (Uotghs Offset: 0x0418) Host Global Interrupt Enable Register */ + RwReg UOTGHS_HSTPIP; /**< \brief (Uotghs Offset: 0x0041C) Host Pipe Register */ + RwReg UOTGHS_HSTFNUM; /**< \brief (Uotghs Offset: 0x0420) Host Frame Number Register */ + RwReg UOTGHS_HSTADDR1; /**< \brief (Uotghs Offset: 0x0424) Host Address 1 Register */ + RwReg UOTGHS_HSTADDR2; /**< \brief (Uotghs Offset: 0x0428) Host Address 2 Register */ + RwReg UOTGHS_HSTADDR3; /**< \brief (Uotghs Offset: 0x042C) Host Address 3 Register */ + RoReg Reserved10[52]; + RwReg UOTGHS_HSTPIPCFG[10]; /**< \brief (Uotghs Offset: 0x500) Host Pipe Configuration Register (n = 0) */ + RoReg Reserved11[2]; + RoReg UOTGHS_HSTPIPISR[10]; /**< \brief (Uotghs Offset: 0x530) Host Pipe Status Register (n = 0) */ + RoReg Reserved12[2]; + WoReg UOTGHS_HSTPIPICR[10]; /**< \brief (Uotghs Offset: 0x560) Host Pipe Clear Register (n = 0) */ + RoReg Reserved13[2]; + WoReg UOTGHS_HSTPIPIFR[10]; /**< \brief (Uotghs Offset: 0x590) Host Pipe Set Register (n = 0) */ + RoReg Reserved14[2]; + RoReg UOTGHS_HSTPIPIMR[10]; /**< \brief (Uotghs Offset: 0x5C0) Host Pipe Mask Register (n = 0) */ + RoReg Reserved15[2]; + WoReg UOTGHS_HSTPIPIER[10]; /**< \brief (Uotghs Offset: 0x5F0) Host Pipe Enable Register (n = 0) */ + RoReg Reserved16[2]; + WoReg UOTGHS_HSTPIPIDR[10]; /**< \brief (Uotghs Offset: 0x620) Host Pipe Disable Register (n = 0) */ + RoReg Reserved17[2]; + RwReg UOTGHS_HSTPIPINRQ[10]; /**< \brief (Uotghs Offset: 0x650) Host Pipe IN Request Register (n = 0) */ + RoReg Reserved18[2]; + RwReg UOTGHS_HSTPIPERR[10]; /**< \brief (Uotghs Offset: 0x680) Host Pipe Error Register (n = 0) */ + RoReg Reserved19[26]; + UotghsHstdma UOTGHS_HSTDMA[UOTGHSHSTDMA_NUMBER]; /**< \brief (Uotghs Offset: 0x710) n = 1 .. 7 */ + RoReg Reserved20[32]; + RwReg UOTGHS_CTRL; /**< \brief (Uotghs Offset: 0x0800) General Control Register */ + RoReg UOTGHS_SR; /**< \brief (Uotghs Offset: 0x0804) General Status Register */ + WoReg UOTGHS_SCR; /**< \brief (Uotghs Offset: 0x0808) General Status Clear Register */ + WoReg UOTGHS_SFR; /**< \brief (Uotghs Offset: 0x080C) General Status Set Register */ + RoReg Reserved21[7]; + RoReg UOTGHS_FSM; /**< \brief (Uotghs Offset: 0x082C) General Finite State Machine Register */ +} Uotghs; +#endif /* __ASSEMBLY__ */ +/* -------- UOTGHS_DEVCTRL : (UOTGHS Offset: 0x0000) Device General Control Register -------- */ +#define UOTGHS_DEVCTRL_UADD_Pos 0 +#define UOTGHS_DEVCTRL_UADD_Msk (0x7fu << UOTGHS_DEVCTRL_UADD_Pos) /**< \brief (UOTGHS_DEVCTRL) USB Address */ +#define UOTGHS_DEVCTRL_UADD(value) ((UOTGHS_DEVCTRL_UADD_Msk & ((value) << UOTGHS_DEVCTRL_UADD_Pos))) +#define UOTGHS_DEVCTRL_ADDEN (0x1u << 7) /**< \brief (UOTGHS_DEVCTRL) Address Enable */ +#define UOTGHS_DEVCTRL_DETACH (0x1u << 8) /**< \brief (UOTGHS_DEVCTRL) Detach */ +#define UOTGHS_DEVCTRL_RMWKUP (0x1u << 9) /**< \brief (UOTGHS_DEVCTRL) Remote Wake-Up */ +#define UOTGHS_DEVCTRL_SPDCONF_Pos 10 +#define UOTGHS_DEVCTRL_SPDCONF_Msk (0x3u << UOTGHS_DEVCTRL_SPDCONF_Pos) /**< \brief (UOTGHS_DEVCTRL) Mode Configuration */ +#define UOTGHS_DEVCTRL_SPDCONF_NORMAL (0x0u << 10) /**< \brief (UOTGHS_DEVCTRL) The peripheral starts in full-speed mode and performs a high-speed reset to switch to the high-speed mode if the host is high-speed capable. */ +#define UOTGHS_DEVCTRL_SPDCONF_LOW_POWER (0x1u << 10) /**< \brief (UOTGHS_DEVCTRL) For a better consumption, if high-speed is not needed. */ +#define UOTGHS_DEVCTRL_SPDCONF_HIGH_SPEED (0x2u << 10) /**< \brief (UOTGHS_DEVCTRL) Forced high speed. */ +#define UOTGHS_DEVCTRL_SPDCONF_FORCED_FS (0x3u << 10) /**< \brief (UOTGHS_DEVCTRL) The peripheral remains in full-speed mode whatever the host speed capability. */ +#define UOTGHS_DEVCTRL_LS (0x1u << 12) /**< \brief (UOTGHS_DEVCTRL) Low-Speed Mode Force */ +#define UOTGHS_DEVCTRL_TSTJ (0x1u << 13) /**< \brief (UOTGHS_DEVCTRL) Test mode J */ +#define UOTGHS_DEVCTRL_TSTK (0x1u << 14) /**< \brief (UOTGHS_DEVCTRL) Test mode K */ +#define UOTGHS_DEVCTRL_TSTPCKT (0x1u << 15) /**< \brief (UOTGHS_DEVCTRL) Test packet mode */ +#define UOTGHS_DEVCTRL_OPMODE2 (0x1u << 16) /**< \brief (UOTGHS_DEVCTRL) Specific Operational mode */ +/* -------- UOTGHS_DEVISR : (UOTGHS Offset: 0x0004) Device Global Interrupt Status Register -------- */ +#define UOTGHS_DEVISR_SUSP (0x1u << 0) /**< \brief (UOTGHS_DEVISR) Suspend Interrupt */ +#define UOTGHS_DEVISR_MSOF (0x1u << 1) /**< \brief (UOTGHS_DEVISR) Micro Start of Frame Interrupt */ +#define UOTGHS_DEVISR_SOF (0x1u << 2) /**< \brief (UOTGHS_DEVISR) Start of Frame Interrupt */ +#define UOTGHS_DEVISR_EORST (0x1u << 3) /**< \brief (UOTGHS_DEVISR) End of Reset Interrupt */ +#define UOTGHS_DEVISR_WAKEUP (0x1u << 4) /**< \brief (UOTGHS_DEVISR) Wake-Up Interrupt */ +#define UOTGHS_DEVISR_EORSM (0x1u << 5) /**< \brief (UOTGHS_DEVISR) End of Resume Interrupt */ +#define UOTGHS_DEVISR_UPRSM (0x1u << 6) /**< \brief (UOTGHS_DEVISR) Upstream Resume Interrupt */ +#define UOTGHS_DEVISR_PEP_0 (0x1u << 12) /**< \brief (UOTGHS_DEVISR) Endpoint 0 Interrupt */ +#define UOTGHS_DEVISR_PEP_1 (0x1u << 13) /**< \brief (UOTGHS_DEVISR) Endpoint 1 Interrupt */ +#define UOTGHS_DEVISR_PEP_2 (0x1u << 14) /**< \brief (UOTGHS_DEVISR) Endpoint 2 Interrupt */ +#define UOTGHS_DEVISR_PEP_3 (0x1u << 15) /**< \brief (UOTGHS_DEVISR) Endpoint 3 Interrupt */ +#define UOTGHS_DEVISR_PEP_4 (0x1u << 16) /**< \brief (UOTGHS_DEVISR) Endpoint 4 Interrupt */ +#define UOTGHS_DEVISR_PEP_5 (0x1u << 17) /**< \brief (UOTGHS_DEVISR) Endpoint 5 Interrupt */ +#define UOTGHS_DEVISR_PEP_6 (0x1u << 18) /**< \brief (UOTGHS_DEVISR) Endpoint 6 Interrupt */ +#define UOTGHS_DEVISR_PEP_7 (0x1u << 19) /**< \brief (UOTGHS_DEVISR) Endpoint 7 Interrupt */ +#define UOTGHS_DEVISR_PEP_8 (0x1u << 20) /**< \brief (UOTGHS_DEVISR) Endpoint 8 Interrupt */ +#define UOTGHS_DEVISR_PEP_9 (0x1u << 21) /**< \brief (UOTGHS_DEVISR) Endpoint 9 Interrupt */ +#define UOTGHS_DEVISR_DMA_1 (0x1u << 25) /**< \brief (UOTGHS_DEVISR) DMA Channel 1 Interrupt */ +#define UOTGHS_DEVISR_DMA_2 (0x1u << 26) /**< \brief (UOTGHS_DEVISR) DMA Channel 2 Interrupt */ +#define UOTGHS_DEVISR_DMA_3 (0x1u << 27) /**< \brief (UOTGHS_DEVISR) DMA Channel 3 Interrupt */ +#define UOTGHS_DEVISR_DMA_4 (0x1u << 28) /**< \brief (UOTGHS_DEVISR) DMA Channel 4 Interrupt */ +#define UOTGHS_DEVISR_DMA_5 (0x1u << 29) /**< \brief (UOTGHS_DEVISR) DMA Channel 5 Interrupt */ +#define UOTGHS_DEVISR_DMA_6 (0x1u << 30) /**< \brief (UOTGHS_DEVISR) DMA Channel 6 Interrupt */ +/* -------- UOTGHS_DEVICR : (UOTGHS Offset: 0x0008) Device Global Interrupt Clear Register -------- */ +#define UOTGHS_DEVICR_SUSPC (0x1u << 0) /**< \brief (UOTGHS_DEVICR) Suspend Interrupt Clear */ +#define UOTGHS_DEVICR_MSOFC (0x1u << 1) /**< \brief (UOTGHS_DEVICR) Micro Start of Frame Interrupt Clear */ +#define UOTGHS_DEVICR_SOFC (0x1u << 2) /**< \brief (UOTGHS_DEVICR) Start of Frame Interrupt Clear */ +#define UOTGHS_DEVICR_EORSTC (0x1u << 3) /**< \brief (UOTGHS_DEVICR) End of Reset Interrupt Clear */ +#define UOTGHS_DEVICR_WAKEUPC (0x1u << 4) /**< \brief (UOTGHS_DEVICR) Wake-Up Interrupt Clear */ +#define UOTGHS_DEVICR_EORSMC (0x1u << 5) /**< \brief (UOTGHS_DEVICR) End of Resume Interrupt Clear */ +#define UOTGHS_DEVICR_UPRSMC (0x1u << 6) /**< \brief (UOTGHS_DEVICR) Upstream Resume Interrupt Clear */ +/* -------- UOTGHS_DEVIFR : (UOTGHS Offset: 0x000C) Device Global Interrupt Set Register -------- */ +#define UOTGHS_DEVIFR_SUSPS (0x1u << 0) /**< \brief (UOTGHS_DEVIFR) Suspend Interrupt Set */ +#define UOTGHS_DEVIFR_MSOFS (0x1u << 1) /**< \brief (UOTGHS_DEVIFR) Micro Start of Frame Interrupt Set */ +#define UOTGHS_DEVIFR_SOFS (0x1u << 2) /**< \brief (UOTGHS_DEVIFR) Start of Frame Interrupt Set */ +#define UOTGHS_DEVIFR_EORSTS (0x1u << 3) /**< \brief (UOTGHS_DEVIFR) End of Reset Interrupt Set */ +#define UOTGHS_DEVIFR_WAKEUPS (0x1u << 4) /**< \brief (UOTGHS_DEVIFR) Wake-Up Interrupt Set */ +#define UOTGHS_DEVIFR_EORSMS (0x1u << 5) /**< \brief (UOTGHS_DEVIFR) End of Resume Interrupt Set */ +#define UOTGHS_DEVIFR_UPRSMS (0x1u << 6) /**< \brief (UOTGHS_DEVIFR) Upstream Resume Interrupt Set */ +#define UOTGHS_DEVIFR_DMA_1 (0x1u << 25) /**< \brief (UOTGHS_DEVIFR) DMA Channel 1 Interrupt Set */ +#define UOTGHS_DEVIFR_DMA_2 (0x1u << 26) /**< \brief (UOTGHS_DEVIFR) DMA Channel 2 Interrupt Set */ +#define UOTGHS_DEVIFR_DMA_3 (0x1u << 27) /**< \brief (UOTGHS_DEVIFR) DMA Channel 3 Interrupt Set */ +#define UOTGHS_DEVIFR_DMA_4 (0x1u << 28) /**< \brief (UOTGHS_DEVIFR) DMA Channel 4 Interrupt Set */ +#define UOTGHS_DEVIFR_DMA_5 (0x1u << 29) /**< \brief (UOTGHS_DEVIFR) DMA Channel 5 Interrupt Set */ +#define UOTGHS_DEVIFR_DMA_6 (0x1u << 30) /**< \brief (UOTGHS_DEVIFR) DMA Channel 6 Interrupt Set */ +/* -------- UOTGHS_DEVIMR : (UOTGHS Offset: 0x0010) Device Global Interrupt Mask Register -------- */ +#define UOTGHS_DEVIMR_SUSPE (0x1u << 0) /**< \brief (UOTGHS_DEVIMR) Suspend Interrupt Mask */ +#define UOTGHS_DEVIMR_MSOFE (0x1u << 1) /**< \brief (UOTGHS_DEVIMR) Micro Start of Frame Interrupt Mask */ +#define UOTGHS_DEVIMR_SOFE (0x1u << 2) /**< \brief (UOTGHS_DEVIMR) Start of Frame Interrupt Mask */ +#define UOTGHS_DEVIMR_EORSTE (0x1u << 3) /**< \brief (UOTGHS_DEVIMR) End of Reset Interrupt Mask */ +#define UOTGHS_DEVIMR_WAKEUPE (0x1u << 4) /**< \brief (UOTGHS_DEVIMR) Wake-Up Interrupt Mask */ +#define UOTGHS_DEVIMR_EORSME (0x1u << 5) /**< \brief (UOTGHS_DEVIMR) End of Resume Interrupt Mask */ +#define UOTGHS_DEVIMR_UPRSME (0x1u << 6) /**< \brief (UOTGHS_DEVIMR) Upstream Resume Interrupt Mask */ +#define UOTGHS_DEVIMR_PEP_0 (0x1u << 12) /**< \brief (UOTGHS_DEVIMR) Endpoint 0 Interrupt Mask */ +#define UOTGHS_DEVIMR_PEP_1 (0x1u << 13) /**< \brief (UOTGHS_DEVIMR) Endpoint 1 Interrupt Mask */ +#define UOTGHS_DEVIMR_PEP_2 (0x1u << 14) /**< \brief (UOTGHS_DEVIMR) Endpoint 2 Interrupt Mask */ +#define UOTGHS_DEVIMR_PEP_3 (0x1u << 15) /**< \brief (UOTGHS_DEVIMR) Endpoint 3 Interrupt Mask */ +#define UOTGHS_DEVIMR_PEP_4 (0x1u << 16) /**< \brief (UOTGHS_DEVIMR) Endpoint 4 Interrupt Mask */ +#define UOTGHS_DEVIMR_PEP_5 (0x1u << 17) /**< \brief (UOTGHS_DEVIMR) Endpoint 5 Interrupt Mask */ +#define UOTGHS_DEVIMR_PEP_6 (0x1u << 18) /**< \brief (UOTGHS_DEVIMR) Endpoint 6 Interrupt Mask */ +#define UOTGHS_DEVIMR_PEP_7 (0x1u << 19) /**< \brief (UOTGHS_DEVIMR) Endpoint 7 Interrupt Mask */ +#define UOTGHS_DEVIMR_PEP_8 (0x1u << 20) /**< \brief (UOTGHS_DEVIMR) Endpoint 8 Interrupt Mask */ +#define UOTGHS_DEVIMR_PEP_9 (0x1u << 21) /**< \brief (UOTGHS_DEVIMR) Endpoint 9 Interrupt Mask */ +#define UOTGHS_DEVIMR_DMA_1 (0x1u << 25) /**< \brief (UOTGHS_DEVIMR) DMA Channel 1 Interrupt Mask */ +#define UOTGHS_DEVIMR_DMA_2 (0x1u << 26) /**< \brief (UOTGHS_DEVIMR) DMA Channel 2 Interrupt Mask */ +#define UOTGHS_DEVIMR_DMA_3 (0x1u << 27) /**< \brief (UOTGHS_DEVIMR) DMA Channel 3 Interrupt Mask */ +#define UOTGHS_DEVIMR_DMA_4 (0x1u << 28) /**< \brief (UOTGHS_DEVIMR) DMA Channel 4 Interrupt Mask */ +#define UOTGHS_DEVIMR_DMA_5 (0x1u << 29) /**< \brief (UOTGHS_DEVIMR) DMA Channel 5 Interrupt Mask */ +#define UOTGHS_DEVIMR_DMA_6 (0x1u << 30) /**< \brief (UOTGHS_DEVIMR) DMA Channel 6 Interrupt Mask */ +/* -------- UOTGHS_DEVIDR : (UOTGHS Offset: 0x0014) Device Global Interrupt Disable Register -------- */ +#define UOTGHS_DEVIDR_SUSPEC (0x1u << 0) /**< \brief (UOTGHS_DEVIDR) Suspend Interrupt Disable */ +#define UOTGHS_DEVIDR_MSOFEC (0x1u << 1) /**< \brief (UOTGHS_DEVIDR) Micro Start of Frame Interrupt Disable */ +#define UOTGHS_DEVIDR_SOFEC (0x1u << 2) /**< \brief (UOTGHS_DEVIDR) Start of Frame Interrupt Disable */ +#define UOTGHS_DEVIDR_EORSTEC (0x1u << 3) /**< \brief (UOTGHS_DEVIDR) End of Reset Interrupt Disable */ +#define UOTGHS_DEVIDR_WAKEUPEC (0x1u << 4) /**< \brief (UOTGHS_DEVIDR) Wake-Up Interrupt Disable */ +#define UOTGHS_DEVIDR_EORSMEC (0x1u << 5) /**< \brief (UOTGHS_DEVIDR) End of Resume Interrupt Disable */ +#define UOTGHS_DEVIDR_UPRSMEC (0x1u << 6) /**< \brief (UOTGHS_DEVIDR) Upstream Resume Interrupt Disable */ +#define UOTGHS_DEVIDR_PEP_0 (0x1u << 12) /**< \brief (UOTGHS_DEVIDR) Endpoint 0 Interrupt Disable */ +#define UOTGHS_DEVIDR_PEP_1 (0x1u << 13) /**< \brief (UOTGHS_DEVIDR) Endpoint 1 Interrupt Disable */ +#define UOTGHS_DEVIDR_PEP_2 (0x1u << 14) /**< \brief (UOTGHS_DEVIDR) Endpoint 2 Interrupt Disable */ +#define UOTGHS_DEVIDR_PEP_3 (0x1u << 15) /**< \brief (UOTGHS_DEVIDR) Endpoint 3 Interrupt Disable */ +#define UOTGHS_DEVIDR_PEP_4 (0x1u << 16) /**< \brief (UOTGHS_DEVIDR) Endpoint 4 Interrupt Disable */ +#define UOTGHS_DEVIDR_PEP_5 (0x1u << 17) /**< \brief (UOTGHS_DEVIDR) Endpoint 5 Interrupt Disable */ +#define UOTGHS_DEVIDR_PEP_6 (0x1u << 18) /**< \brief (UOTGHS_DEVIDR) Endpoint 6 Interrupt Disable */ +#define UOTGHS_DEVIDR_PEP_7 (0x1u << 19) /**< \brief (UOTGHS_DEVIDR) Endpoint 7 Interrupt Disable */ +#define UOTGHS_DEVIDR_PEP_8 (0x1u << 20) /**< \brief (UOTGHS_DEVIDR) Endpoint 8 Interrupt Disable */ +#define UOTGHS_DEVIDR_PEP_9 (0x1u << 21) /**< \brief (UOTGHS_DEVIDR) Endpoint 9 Interrupt Disable */ +#define UOTGHS_DEVIDR_DMA_1 (0x1u << 25) /**< \brief (UOTGHS_DEVIDR) DMA Channel 1 Interrupt Disable */ +#define UOTGHS_DEVIDR_DMA_2 (0x1u << 26) /**< \brief (UOTGHS_DEVIDR) DMA Channel 2 Interrupt Disable */ +#define UOTGHS_DEVIDR_DMA_3 (0x1u << 27) /**< \brief (UOTGHS_DEVIDR) DMA Channel 3 Interrupt Disable */ +#define UOTGHS_DEVIDR_DMA_4 (0x1u << 28) /**< \brief (UOTGHS_DEVIDR) DMA Channel 4 Interrupt Disable */ +#define UOTGHS_DEVIDR_DMA_5 (0x1u << 29) /**< \brief (UOTGHS_DEVIDR) DMA Channel 5 Interrupt Disable */ +#define UOTGHS_DEVIDR_DMA_6 (0x1u << 30) /**< \brief (UOTGHS_DEVIDR) DMA Channel 6 Interrupt Disable */ +/* -------- UOTGHS_DEVIER : (UOTGHS Offset: 0x0018) Device Global Interrupt Enable Register -------- */ +#define UOTGHS_DEVIER_SUSPES (0x1u << 0) /**< \brief (UOTGHS_DEVIER) Suspend Interrupt Enable */ +#define UOTGHS_DEVIER_MSOFES (0x1u << 1) /**< \brief (UOTGHS_DEVIER) Micro Start of Frame Interrupt Enable */ +#define UOTGHS_DEVIER_SOFES (0x1u << 2) /**< \brief (UOTGHS_DEVIER) Start of Frame Interrupt Enable */ +#define UOTGHS_DEVIER_EORSTES (0x1u << 3) /**< \brief (UOTGHS_DEVIER) End of Reset Interrupt Enable */ +#define UOTGHS_DEVIER_WAKEUPES (0x1u << 4) /**< \brief (UOTGHS_DEVIER) Wake-Up Interrupt Enable */ +#define UOTGHS_DEVIER_EORSMES (0x1u << 5) /**< \brief (UOTGHS_DEVIER) End of Resume Interrupt Enable */ +#define UOTGHS_DEVIER_UPRSMES (0x1u << 6) /**< \brief (UOTGHS_DEVIER) Upstream Resume Interrupt Enable */ +#define UOTGHS_DEVIER_PEP_0 (0x1u << 12) /**< \brief (UOTGHS_DEVIER) Endpoint 0 Interrupt Enable */ +#define UOTGHS_DEVIER_PEP_1 (0x1u << 13) /**< \brief (UOTGHS_DEVIER) Endpoint 1 Interrupt Enable */ +#define UOTGHS_DEVIER_PEP_2 (0x1u << 14) /**< \brief (UOTGHS_DEVIER) Endpoint 2 Interrupt Enable */ +#define UOTGHS_DEVIER_PEP_3 (0x1u << 15) /**< \brief (UOTGHS_DEVIER) Endpoint 3 Interrupt Enable */ +#define UOTGHS_DEVIER_PEP_4 (0x1u << 16) /**< \brief (UOTGHS_DEVIER) Endpoint 4 Interrupt Enable */ +#define UOTGHS_DEVIER_PEP_5 (0x1u << 17) /**< \brief (UOTGHS_DEVIER) Endpoint 5 Interrupt Enable */ +#define UOTGHS_DEVIER_PEP_6 (0x1u << 18) /**< \brief (UOTGHS_DEVIER) Endpoint 6 Interrupt Enable */ +#define UOTGHS_DEVIER_PEP_7 (0x1u << 19) /**< \brief (UOTGHS_DEVIER) Endpoint 7 Interrupt Enable */ +#define UOTGHS_DEVIER_PEP_8 (0x1u << 20) /**< \brief (UOTGHS_DEVIER) Endpoint 8 Interrupt Enable */ +#define UOTGHS_DEVIER_PEP_9 (0x1u << 21) /**< \brief (UOTGHS_DEVIER) Endpoint 9 Interrupt Enable */ +#define UOTGHS_DEVIER_DMA_1 (0x1u << 25) /**< \brief (UOTGHS_DEVIER) DMA Channel 1 Interrupt Enable */ +#define UOTGHS_DEVIER_DMA_2 (0x1u << 26) /**< \brief (UOTGHS_DEVIER) DMA Channel 2 Interrupt Enable */ +#define UOTGHS_DEVIER_DMA_3 (0x1u << 27) /**< \brief (UOTGHS_DEVIER) DMA Channel 3 Interrupt Enable */ +#define UOTGHS_DEVIER_DMA_4 (0x1u << 28) /**< \brief (UOTGHS_DEVIER) DMA Channel 4 Interrupt Enable */ +#define UOTGHS_DEVIER_DMA_5 (0x1u << 29) /**< \brief (UOTGHS_DEVIER) DMA Channel 5 Interrupt Enable */ +#define UOTGHS_DEVIER_DMA_6 (0x1u << 30) /**< \brief (UOTGHS_DEVIER) DMA Channel 6 Interrupt Enable */ +/* -------- UOTGHS_DEVEPT : (UOTGHS Offset: 0x001C) Device Endpoint Register -------- */ +#define UOTGHS_DEVEPT_EPEN0 (0x1u << 0) /**< \brief (UOTGHS_DEVEPT) Endpoint 0 Enable */ +#define UOTGHS_DEVEPT_EPEN1 (0x1u << 1) /**< \brief (UOTGHS_DEVEPT) Endpoint 1 Enable */ +#define UOTGHS_DEVEPT_EPEN2 (0x1u << 2) /**< \brief (UOTGHS_DEVEPT) Endpoint 2 Enable */ +#define UOTGHS_DEVEPT_EPEN3 (0x1u << 3) /**< \brief (UOTGHS_DEVEPT) Endpoint 3 Enable */ +#define UOTGHS_DEVEPT_EPEN4 (0x1u << 4) /**< \brief (UOTGHS_DEVEPT) Endpoint 4 Enable */ +#define UOTGHS_DEVEPT_EPEN5 (0x1u << 5) /**< \brief (UOTGHS_DEVEPT) Endpoint 5 Enable */ +#define UOTGHS_DEVEPT_EPEN6 (0x1u << 6) /**< \brief (UOTGHS_DEVEPT) Endpoint 6 Enable */ +#define UOTGHS_DEVEPT_EPEN7 (0x1u << 7) /**< \brief (UOTGHS_DEVEPT) Endpoint 7 Enable */ +#define UOTGHS_DEVEPT_EPEN8 (0x1u << 8) /**< \brief (UOTGHS_DEVEPT) Endpoint 8 Enable */ +#define UOTGHS_DEVEPT_EPRST0 (0x1u << 16) /**< \brief (UOTGHS_DEVEPT) Endpoint 0 Reset */ +#define UOTGHS_DEVEPT_EPRST1 (0x1u << 17) /**< \brief (UOTGHS_DEVEPT) Endpoint 1 Reset */ +#define UOTGHS_DEVEPT_EPRST2 (0x1u << 18) /**< \brief (UOTGHS_DEVEPT) Endpoint 2 Reset */ +#define UOTGHS_DEVEPT_EPRST3 (0x1u << 19) /**< \brief (UOTGHS_DEVEPT) Endpoint 3 Reset */ +#define UOTGHS_DEVEPT_EPRST4 (0x1u << 20) /**< \brief (UOTGHS_DEVEPT) Endpoint 4 Reset */ +#define UOTGHS_DEVEPT_EPRST5 (0x1u << 21) /**< \brief (UOTGHS_DEVEPT) Endpoint 5 Reset */ +#define UOTGHS_DEVEPT_EPRST6 (0x1u << 22) /**< \brief (UOTGHS_DEVEPT) Endpoint 6 Reset */ +#define UOTGHS_DEVEPT_EPRST7 (0x1u << 23) /**< \brief (UOTGHS_DEVEPT) Endpoint 7 Reset */ +#define UOTGHS_DEVEPT_EPRST8 (0x1u << 24) /**< \brief (UOTGHS_DEVEPT) Endpoint 8 Reset */ +/* -------- UOTGHS_DEVFNUM : (UOTGHS Offset: 0x0020) Device Frame Number Register -------- */ +#define UOTGHS_DEVFNUM_MFNUM_Pos 0 +#define UOTGHS_DEVFNUM_MFNUM_Msk (0x7u << UOTGHS_DEVFNUM_MFNUM_Pos) /**< \brief (UOTGHS_DEVFNUM) Micro Frame Number */ +#define UOTGHS_DEVFNUM_FNUM_Pos 3 +#define UOTGHS_DEVFNUM_FNUM_Msk (0x7ffu << UOTGHS_DEVFNUM_FNUM_Pos) /**< \brief (UOTGHS_DEVFNUM) Frame Number */ +#define UOTGHS_DEVFNUM_FNCERR (0x1u << 15) /**< \brief (UOTGHS_DEVFNUM) Frame Number CRC Error */ +/* -------- UOTGHS_DEVEPTCFG[10] : (UOTGHS Offset: 0x100) Device Endpoint Configuration Register (n = 0) -------- */ +#define UOTGHS_DEVEPTCFG_ALLOC (0x1u << 1) /**< \brief (UOTGHS_DEVEPTCFG[10]) Endpoint Memory Allocate */ +#define UOTGHS_DEVEPTCFG_EPBK_Pos 2 +#define UOTGHS_DEVEPTCFG_EPBK_Msk (0x3u << UOTGHS_DEVEPTCFG_EPBK_Pos) /**< \brief (UOTGHS_DEVEPTCFG[10]) Endpoint Banks */ +#define UOTGHS_DEVEPTCFG_EPBK_1_BANK (0x0u << 2) /**< \brief (UOTGHS_DEVEPTCFG[10]) Single-bank endpoint */ +#define UOTGHS_DEVEPTCFG_EPBK_2_BANK (0x1u << 2) /**< \brief (UOTGHS_DEVEPTCFG[10]) Double-bank endpoint */ +#define UOTGHS_DEVEPTCFG_EPBK_3_BANK (0x2u << 2) /**< \brief (UOTGHS_DEVEPTCFG[10]) Triple-bank endpoint */ +#define UOTGHS_DEVEPTCFG_EPSIZE_Pos 4 +#define UOTGHS_DEVEPTCFG_EPSIZE_Msk (0x7u << UOTGHS_DEVEPTCFG_EPSIZE_Pos) /**< \brief (UOTGHS_DEVEPTCFG[10]) Endpoint Size */ +#define UOTGHS_DEVEPTCFG_EPSIZE_8_BYTE (0x0u << 4) /**< \brief (UOTGHS_DEVEPTCFG[10]) 8 bytes */ +#define UOTGHS_DEVEPTCFG_EPSIZE_16_BYTE (0x1u << 4) /**< \brief (UOTGHS_DEVEPTCFG[10]) 16 bytes */ +#define UOTGHS_DEVEPTCFG_EPSIZE_32_BYTE (0x2u << 4) /**< \brief (UOTGHS_DEVEPTCFG[10]) 32 bytes */ +#define UOTGHS_DEVEPTCFG_EPSIZE_64_BYTE (0x3u << 4) /**< \brief (UOTGHS_DEVEPTCFG[10]) 64 bytes */ +#define UOTGHS_DEVEPTCFG_EPSIZE_128_BYTE (0x4u << 4) /**< \brief (UOTGHS_DEVEPTCFG[10]) 128 bytes */ +#define UOTGHS_DEVEPTCFG_EPSIZE_256_BYTE (0x5u << 4) /**< \brief (UOTGHS_DEVEPTCFG[10]) 256 bytes */ +#define UOTGHS_DEVEPTCFG_EPSIZE_512_BYTE (0x6u << 4) /**< \brief (UOTGHS_DEVEPTCFG[10]) 512 bytes */ +#define UOTGHS_DEVEPTCFG_EPSIZE_1024_BYTE (0x7u << 4) /**< \brief (UOTGHS_DEVEPTCFG[10]) 1024 bytes */ +#define UOTGHS_DEVEPTCFG_EPDIR (0x1u << 8) /**< \brief (UOTGHS_DEVEPTCFG[10]) Endpoint Direction */ +#define UOTGHS_DEVEPTCFG_EPDIR_OUT (0x0u << 8) /**< \brief (UOTGHS_DEVEPTCFG[10]) The endpoint direction is OUT. */ +#define UOTGHS_DEVEPTCFG_EPDIR_IN (0x1u << 8) /**< \brief (UOTGHS_DEVEPTCFG[10]) The endpoint direction is IN (nor for control endpoints). */ +#define UOTGHS_DEVEPTCFG_AUTOSW (0x1u << 9) /**< \brief (UOTGHS_DEVEPTCFG[10]) Automatic Switch */ +#define UOTGHS_DEVEPTCFG_EPTYPE_Pos 11 +#define UOTGHS_DEVEPTCFG_EPTYPE_Msk (0x3u << UOTGHS_DEVEPTCFG_EPTYPE_Pos) /**< \brief (UOTGHS_DEVEPTCFG[10]) Endpoint Type */ +#define UOTGHS_DEVEPTCFG_EPTYPE_CTRL (0x0u << 11) /**< \brief (UOTGHS_DEVEPTCFG[10]) Control */ +#define UOTGHS_DEVEPTCFG_EPTYPE_ISO (0x1u << 11) /**< \brief (UOTGHS_DEVEPTCFG[10]) Isochronous */ +#define UOTGHS_DEVEPTCFG_EPTYPE_BLK (0x2u << 11) /**< \brief (UOTGHS_DEVEPTCFG[10]) Bulk */ +#define UOTGHS_DEVEPTCFG_EPTYPE_INTRPT (0x3u << 11) /**< \brief (UOTGHS_DEVEPTCFG[10]) Interrupt */ +#define UOTGHS_DEVEPTCFG_NBTRANS_Pos 13 +#define UOTGHS_DEVEPTCFG_NBTRANS_Msk (0x3u << UOTGHS_DEVEPTCFG_NBTRANS_Pos) /**< \brief (UOTGHS_DEVEPTCFG[10]) Number of transaction per microframe for isochronous endpoint */ +#define UOTGHS_DEVEPTCFG_NBTRANS_0_TRANS (0x0u << 13) /**< \brief (UOTGHS_DEVEPTCFG[10]) reserved to endpoint that does not have the high-bandwidth isochronous capability. */ +#define UOTGHS_DEVEPTCFG_NBTRANS_1_TRANS (0x1u << 13) /**< \brief (UOTGHS_DEVEPTCFG[10]) default value: one transaction per micro-frame. */ +#define UOTGHS_DEVEPTCFG_NBTRANS_2_TRANS (0x2u << 13) /**< \brief (UOTGHS_DEVEPTCFG[10]) 2 transactions per micro-frame. This endpoint should be configured as double-bank. */ +#define UOTGHS_DEVEPTCFG_NBTRANS_3_TRANS (0x3u << 13) /**< \brief (UOTGHS_DEVEPTCFG[10]) 3 transactions per micro-frame. This endpoint should be configured as triple-bank. */ +/* -------- UOTGHS_DEVEPTISR[10] : (UOTGHS Offset: 0x130) Device Endpoint Status Register (n = 0) -------- */ +#define UOTGHS_DEVEPTISR_TXINI (0x1u << 0) /**< \brief (UOTGHS_DEVEPTISR[10]) Transmitted IN Data Interrupt */ +#define UOTGHS_DEVEPTISR_RXOUTI (0x1u << 1) /**< \brief (UOTGHS_DEVEPTISR[10]) Received OUT Data Interrupt */ +#define UOTGHS_DEVEPTISR_RXSTPI (0x1u << 2) /**< \brief (UOTGHS_DEVEPTISR[10]) Received SETUP Interrupt */ +#define UOTGHS_DEVEPTISR_UNDERFI (0x1u << 2) /**< \brief (UOTGHS_DEVEPTISR[10]) Underflow Interrupt */ +#define UOTGHS_DEVEPTISR_NAKOUTI (0x1u << 3) /**< \brief (UOTGHS_DEVEPTISR[10]) NAKed OUT Interrupt */ +#define UOTGHS_DEVEPTISR_HBISOINERRI (0x1u << 3) /**< \brief (UOTGHS_DEVEPTISR[10]) High bandwidth isochronous IN Underflow Error Interrupt */ +#define UOTGHS_DEVEPTISR_NAKINI (0x1u << 4) /**< \brief (UOTGHS_DEVEPTISR[10]) NAKed IN Interrupt */ +#define UOTGHS_DEVEPTISR_HBISOFLUSHI (0x1u << 4) /**< \brief (UOTGHS_DEVEPTISR[10]) High Bandwidth Isochronous IN Flush Interrupt */ +#define UOTGHS_DEVEPTISR_OVERFI (0x1u << 5) /**< \brief (UOTGHS_DEVEPTISR[10]) Overflow Interrupt */ +#define UOTGHS_DEVEPTISR_STALLEDI (0x1u << 6) /**< \brief (UOTGHS_DEVEPTISR[10]) STALLed Interrupt */ +#define UOTGHS_DEVEPTISR_CRCERRI (0x1u << 6) /**< \brief (UOTGHS_DEVEPTISR[10]) CRC Error Interrupt */ +#define UOTGHS_DEVEPTISR_SHORTPACKET (0x1u << 7) /**< \brief (UOTGHS_DEVEPTISR[10]) Short Packet Interrupt */ +#define UOTGHS_DEVEPTISR_DTSEQ_Pos 8 +#define UOTGHS_DEVEPTISR_DTSEQ_Msk (0x3u << UOTGHS_DEVEPTISR_DTSEQ_Pos) /**< \brief (UOTGHS_DEVEPTISR[10]) Data Toggle Sequence */ +#define UOTGHS_DEVEPTISR_DTSEQ_DATA0 (0x0u << 8) /**< \brief (UOTGHS_DEVEPTISR[10]) Data0 toggle sequence */ +#define UOTGHS_DEVEPTISR_DTSEQ_DATA1 (0x1u << 8) /**< \brief (UOTGHS_DEVEPTISR[10]) Data1 toggle sequence */ +#define UOTGHS_DEVEPTISR_DTSEQ_DATA2 (0x2u << 8) /**< \brief (UOTGHS_DEVEPTISR[10]) Data2 toggle sequence (for high-bandwidth isochronous endpoint) */ +#define UOTGHS_DEVEPTISR_DTSEQ_MDATA (0x3u << 8) /**< \brief (UOTGHS_DEVEPTISR[10]) MData toggle sequence (for high-bandwidth isochronous endpoint) */ +#define UOTGHS_DEVEPTISR_ERRORTRANS (0x1u << 10) /**< \brief (UOTGHS_DEVEPTISR[10]) High-bandwidth isochronous OUT endpoint transaction error Interrupt */ +#define UOTGHS_DEVEPTISR_NBUSYBK_Pos 12 +#define UOTGHS_DEVEPTISR_NBUSYBK_Msk (0x3u << UOTGHS_DEVEPTISR_NBUSYBK_Pos) /**< \brief (UOTGHS_DEVEPTISR[10]) Number of Busy Banks */ +#define UOTGHS_DEVEPTISR_NBUSYBK_0_BUSY (0x0u << 12) /**< \brief (UOTGHS_DEVEPTISR[10]) 0 busy bank (all banks free) */ +#define UOTGHS_DEVEPTISR_NBUSYBK_1_BUSY (0x1u << 12) /**< \brief (UOTGHS_DEVEPTISR[10]) 1 busy bank */ +#define UOTGHS_DEVEPTISR_NBUSYBK_2_BUSY (0x2u << 12) /**< \brief (UOTGHS_DEVEPTISR[10]) 2 busy banks */ +#define UOTGHS_DEVEPTISR_NBUSYBK_3_BUSY (0x3u << 12) /**< \brief (UOTGHS_DEVEPTISR[10]) 3 busy banks */ +#define UOTGHS_DEVEPTISR_CURRBK_Pos 14 +#define UOTGHS_DEVEPTISR_CURRBK_Msk (0x3u << UOTGHS_DEVEPTISR_CURRBK_Pos) /**< \brief (UOTGHS_DEVEPTISR[10]) Current Bank */ +#define UOTGHS_DEVEPTISR_CURRBK_BANK0 (0x0u << 14) /**< \brief (UOTGHS_DEVEPTISR[10]) Current bank is bank0 */ +#define UOTGHS_DEVEPTISR_CURRBK_BANK1 (0x1u << 14) /**< \brief (UOTGHS_DEVEPTISR[10]) Current bank is bank1 */ +#define UOTGHS_DEVEPTISR_CURRBK_BANK2 (0x2u << 14) /**< \brief (UOTGHS_DEVEPTISR[10]) Current bank is bank2 */ +#define UOTGHS_DEVEPTISR_RWALL (0x1u << 16) /**< \brief (UOTGHS_DEVEPTISR[10]) Read-write Allowed */ +#define UOTGHS_DEVEPTISR_CTRLDIR (0x1u << 17) /**< \brief (UOTGHS_DEVEPTISR[10]) Control Direction */ +#define UOTGHS_DEVEPTISR_CFGOK (0x1u << 18) /**< \brief (UOTGHS_DEVEPTISR[10]) Configuration OK Status */ +#define UOTGHS_DEVEPTISR_BYCT_Pos 20 +#define UOTGHS_DEVEPTISR_BYCT_Msk (0x7ffu << UOTGHS_DEVEPTISR_BYCT_Pos) /**< \brief (UOTGHS_DEVEPTISR[10]) Byte Count */ +/* -------- UOTGHS_DEVEPTICR[10] : (UOTGHS Offset: 0x160) Device Endpoint Clear Register (n = 0) -------- */ +#define UOTGHS_DEVEPTICR_TXINIC (0x1u << 0) /**< \brief (UOTGHS_DEVEPTICR[10]) Transmitted IN Data Interrupt Clear */ +#define UOTGHS_DEVEPTICR_RXOUTIC (0x1u << 1) /**< \brief (UOTGHS_DEVEPTICR[10]) Received OUT Data Interrupt Clear */ +#define UOTGHS_DEVEPTICR_RXSTPIC (0x1u << 2) /**< \brief (UOTGHS_DEVEPTICR[10]) Received SETUP Interrupt Clear */ +#define UOTGHS_DEVEPTICR_UNDERFIC (0x1u << 2) /**< \brief (UOTGHS_DEVEPTICR[10]) Underflow Interrupt Clear */ +#define UOTGHS_DEVEPTICR_NAKOUTIC (0x1u << 3) /**< \brief (UOTGHS_DEVEPTICR[10]) NAKed OUT Interrupt Clear */ +#define UOTGHS_DEVEPTICR_HBISOINERRIC (0x1u << 3) /**< \brief (UOTGHS_DEVEPTICR[10]) High bandwidth isochronous IN Underflow Error Interrupt Clear */ +#define UOTGHS_DEVEPTICR_NAKINIC (0x1u << 4) /**< \brief (UOTGHS_DEVEPTICR[10]) NAKed IN Interrupt Clear */ +#define UOTGHS_DEVEPTICR_HBISOFLUSHIC (0x1u << 4) /**< \brief (UOTGHS_DEVEPTICR[10]) High Bandwidth Isochronous IN Flush Interrupt Clear */ +#define UOTGHS_DEVEPTICR_OVERFIC (0x1u << 5) /**< \brief (UOTGHS_DEVEPTICR[10]) Overflow Interrupt Clear */ +#define UOTGHS_DEVEPTICR_STALLEDIC (0x1u << 6) /**< \brief (UOTGHS_DEVEPTICR[10]) STALLed Interrupt Clear */ +#define UOTGHS_DEVEPTICR_CRCERRIC (0x1u << 6) /**< \brief (UOTGHS_DEVEPTICR[10]) CRC Error Interrupt Clear */ +#define UOTGHS_DEVEPTICR_SHORTPACKETC (0x1u << 7) /**< \brief (UOTGHS_DEVEPTICR[10]) Short Packet Interrupt Clear */ +/* -------- UOTGHS_DEVEPTIFR[10] : (UOTGHS Offset: 0x190) Device Endpoint Set Register (n = 0) -------- */ +#define UOTGHS_DEVEPTIFR_TXINIS (0x1u << 0) /**< \brief (UOTGHS_DEVEPTIFR[10]) Transmitted IN Data Interrupt Set */ +#define UOTGHS_DEVEPTIFR_RXOUTIS (0x1u << 1) /**< \brief (UOTGHS_DEVEPTIFR[10]) Received OUT Data Interrupt Set */ +#define UOTGHS_DEVEPTIFR_RXSTPIS (0x1u << 2) /**< \brief (UOTGHS_DEVEPTIFR[10]) Received SETUP Interrupt Set */ +#define UOTGHS_DEVEPTIFR_UNDERFIS (0x1u << 2) /**< \brief (UOTGHS_DEVEPTIFR[10]) Underflow Interrupt Set */ +#define UOTGHS_DEVEPTIFR_NAKOUTIS (0x1u << 3) /**< \brief (UOTGHS_DEVEPTIFR[10]) NAKed OUT Interrupt Set */ +#define UOTGHS_DEVEPTIFR_HBISOINERRIS (0x1u << 3) /**< \brief (UOTGHS_DEVEPTIFR[10]) High bandwidth isochronous IN Underflow Error Interrupt Set */ +#define UOTGHS_DEVEPTIFR_NAKINIS (0x1u << 4) /**< \brief (UOTGHS_DEVEPTIFR[10]) NAKed IN Interrupt Set */ +#define UOTGHS_DEVEPTIFR_HBISOFLUSHIS (0x1u << 4) /**< \brief (UOTGHS_DEVEPTIFR[10]) High Bandwidth Isochronous IN Flush Interrupt Set */ +#define UOTGHS_DEVEPTIFR_OVERFIS (0x1u << 5) /**< \brief (UOTGHS_DEVEPTIFR[10]) Overflow Interrupt Set */ +#define UOTGHS_DEVEPTIFR_STALLEDIS (0x1u << 6) /**< \brief (UOTGHS_DEVEPTIFR[10]) STALLed Interrupt Set */ +#define UOTGHS_DEVEPTIFR_CRCERRIS (0x1u << 6) /**< \brief (UOTGHS_DEVEPTIFR[10]) CRC Error Interrupt Set */ +#define UOTGHS_DEVEPTIFR_SHORTPACKETS (0x1u << 7) /**< \brief (UOTGHS_DEVEPTIFR[10]) Short Packet Interrupt Set */ +#define UOTGHS_DEVEPTIFR_NBUSYBKS (0x1u << 12) /**< \brief (UOTGHS_DEVEPTIFR[10]) Number of Busy Banks Interrupt Set */ +/* -------- UOTGHS_DEVEPTIMR[10] : (UOTGHS Offset: 0x1C0) Device Endpoint Mask Register (n = 0) -------- */ +#define UOTGHS_DEVEPTIMR_TXINE (0x1u << 0) /**< \brief (UOTGHS_DEVEPTIMR[10]) Transmitted IN Data Interrupt */ +#define UOTGHS_DEVEPTIMR_RXOUTE (0x1u << 1) /**< \brief (UOTGHS_DEVEPTIMR[10]) Received OUT Data Interrupt */ +#define UOTGHS_DEVEPTIMR_RXSTPE (0x1u << 2) /**< \brief (UOTGHS_DEVEPTIMR[10]) Received SETUP Interrupt */ +#define UOTGHS_DEVEPTIMR_UNDERFE (0x1u << 2) /**< \brief (UOTGHS_DEVEPTIMR[10]) Underflow Interrupt */ +#define UOTGHS_DEVEPTIMR_NAKOUTE (0x1u << 3) /**< \brief (UOTGHS_DEVEPTIMR[10]) NAKed OUT Interrupt */ +#define UOTGHS_DEVEPTIMR_HBISOINERRE (0x1u << 3) /**< \brief (UOTGHS_DEVEPTIMR[10]) High Bandwidth Isochronous IN Error Interrupt */ +#define UOTGHS_DEVEPTIMR_NAKINE (0x1u << 4) /**< \brief (UOTGHS_DEVEPTIMR[10]) NAKed IN Interrupt */ +#define UOTGHS_DEVEPTIMR_HBISOFLUSHE (0x1u << 4) /**< \brief (UOTGHS_DEVEPTIMR[10]) High Bandwidth Isochronous IN Flush Interrupt */ +#define UOTGHS_DEVEPTIMR_OVERFE (0x1u << 5) /**< \brief (UOTGHS_DEVEPTIMR[10]) Overflow Interrupt */ +#define UOTGHS_DEVEPTIMR_STALLEDE (0x1u << 6) /**< \brief (UOTGHS_DEVEPTIMR[10]) STALLed Interrupt */ +#define UOTGHS_DEVEPTIMR_CRCERRE (0x1u << 6) /**< \brief (UOTGHS_DEVEPTIMR[10]) CRC Error Interrupt */ +#define UOTGHS_DEVEPTIMR_SHORTPACKETE (0x1u << 7) /**< \brief (UOTGHS_DEVEPTIMR[10]) Short Packet Interrupt */ +#define UOTGHS_DEVEPTIMR_MDATAE (0x1u << 8) /**< \brief (UOTGHS_DEVEPTIMR[10]) MData Interrupt */ +#define UOTGHS_DEVEPTIMR_DATAXE (0x1u << 9) /**< \brief (UOTGHS_DEVEPTIMR[10]) DataX Interrupt */ +#define UOTGHS_DEVEPTIMR_ERRORTRANSE (0x1u << 10) /**< \brief (UOTGHS_DEVEPTIMR[10]) Transaction Error Interrupt */ +#define UOTGHS_DEVEPTIMR_NBUSYBKE (0x1u << 12) /**< \brief (UOTGHS_DEVEPTIMR[10]) Number of Busy Banks Interrupt */ +#define UOTGHS_DEVEPTIMR_KILLBK (0x1u << 13) /**< \brief (UOTGHS_DEVEPTIMR[10]) Kill IN Bank */ +#define UOTGHS_DEVEPTIMR_FIFOCON (0x1u << 14) /**< \brief (UOTGHS_DEVEPTIMR[10]) FIFO Control */ +#define UOTGHS_DEVEPTIMR_EPDISHDMA (0x1u << 16) /**< \brief (UOTGHS_DEVEPTIMR[10]) Endpoint Interrupts Disable HDMA Request */ +#define UOTGHS_DEVEPTIMR_NYETDIS (0x1u << 17) /**< \brief (UOTGHS_DEVEPTIMR[10]) NYET Token Disable */ +#define UOTGHS_DEVEPTIMR_RSTDT (0x1u << 18) /**< \brief (UOTGHS_DEVEPTIMR[10]) Reset Data Toggle */ +#define UOTGHS_DEVEPTIMR_STALLRQ (0x1u << 19) /**< \brief (UOTGHS_DEVEPTIMR[10]) STALL Request */ +/* -------- UOTGHS_DEVEPTIER[10] : (UOTGHS Offset: 0x1F0) Device Endpoint Enable Register (n = 0) -------- */ +#define UOTGHS_DEVEPTIER_TXINES (0x1u << 0) /**< \brief (UOTGHS_DEVEPTIER[10]) Transmitted IN Data Interrupt Enable */ +#define UOTGHS_DEVEPTIER_RXOUTES (0x1u << 1) /**< \brief (UOTGHS_DEVEPTIER[10]) Received OUT Data Interrupt Enable */ +#define UOTGHS_DEVEPTIER_RXSTPES (0x1u << 2) /**< \brief (UOTGHS_DEVEPTIER[10]) Received SETUP Interrupt Enable */ +#define UOTGHS_DEVEPTIER_UNDERFES (0x1u << 2) /**< \brief (UOTGHS_DEVEPTIER[10]) Underflow Interrupt Enable */ +#define UOTGHS_DEVEPTIER_NAKOUTES (0x1u << 3) /**< \brief (UOTGHS_DEVEPTIER[10]) NAKed OUT Interrupt Enable */ +#define UOTGHS_DEVEPTIER_HBISOINERRES (0x1u << 3) /**< \brief (UOTGHS_DEVEPTIER[10]) High Bandwidth Isochronous IN Error Interrupt Enable */ +#define UOTGHS_DEVEPTIER_NAKINES (0x1u << 4) /**< \brief (UOTGHS_DEVEPTIER[10]) NAKed IN Interrupt Enable */ +#define UOTGHS_DEVEPTIER_HBISOFLUSHES (0x1u << 4) /**< \brief (UOTGHS_DEVEPTIER[10]) High Bandwidth Isochronous IN Flush Interrupt Enable */ +#define UOTGHS_DEVEPTIER_OVERFES (0x1u << 5) /**< \brief (UOTGHS_DEVEPTIER[10]) Overflow Interrupt Enable */ +#define UOTGHS_DEVEPTIER_STALLEDES (0x1u << 6) /**< \brief (UOTGHS_DEVEPTIER[10]) STALLed Interrupt Enable */ +#define UOTGHS_DEVEPTIER_CRCERRES (0x1u << 6) /**< \brief (UOTGHS_DEVEPTIER[10]) CRC Error Interrupt Enable */ +#define UOTGHS_DEVEPTIER_SHORTPACKETES (0x1u << 7) /**< \brief (UOTGHS_DEVEPTIER[10]) Short Packet Interrupt Enable */ +#define UOTGHS_DEVEPTIER_MDATAES (0x1u << 8) /**< \brief (UOTGHS_DEVEPTIER[10]) MData Interrupt Enable */ +#define UOTGHS_DEVEPTIER_DATAXES (0x1u << 9) /**< \brief (UOTGHS_DEVEPTIER[10]) DataX Interrupt Enable */ +#define UOTGHS_DEVEPTIER_ERRORTRANSES (0x1u << 10) /**< \brief (UOTGHS_DEVEPTIER[10]) Transaction Error Interrupt Enable */ +#define UOTGHS_DEVEPTIER_NBUSYBKES (0x1u << 12) /**< \brief (UOTGHS_DEVEPTIER[10]) Number of Busy Banks Interrupt Enable */ +#define UOTGHS_DEVEPTIER_KILLBKS (0x1u << 13) /**< \brief (UOTGHS_DEVEPTIER[10]) Kill IN Bank */ +#define UOTGHS_DEVEPTIER_EPDISHDMAS (0x1u << 16) /**< \brief (UOTGHS_DEVEPTIER[10]) Endpoint Interrupts Disable HDMA Request Enable */ +#define UOTGHS_DEVEPTIER_NYETDISS (0x1u << 17) /**< \brief (UOTGHS_DEVEPTIER[10]) NYET Token Disable Enable */ +#define UOTGHS_DEVEPTIER_RSTDTS (0x1u << 18) /**< \brief (UOTGHS_DEVEPTIER[10]) Reset Data Toggle Enable */ +#define UOTGHS_DEVEPTIER_STALLRQS (0x1u << 19) /**< \brief (UOTGHS_DEVEPTIER[10]) STALL Request Enable */ +/* -------- UOTGHS_DEVEPTIDR[10] : (UOTGHS Offset: 0x220) Device Endpoint Disable Register (n = 0) -------- */ +#define UOTGHS_DEVEPTIDR_TXINEC (0x1u << 0) /**< \brief (UOTGHS_DEVEPTIDR[10]) Transmitted IN Interrupt Clear */ +#define UOTGHS_DEVEPTIDR_RXOUTEC (0x1u << 1) /**< \brief (UOTGHS_DEVEPTIDR[10]) Received OUT Data Interrupt Clear */ +#define UOTGHS_DEVEPTIDR_RXSTPEC (0x1u << 2) /**< \brief (UOTGHS_DEVEPTIDR[10]) Received SETUP Interrupt Clear */ +#define UOTGHS_DEVEPTIDR_UNDERFEC (0x1u << 2) /**< \brief (UOTGHS_DEVEPTIDR[10]) Underflow Interrupt Clear */ +#define UOTGHS_DEVEPTIDR_NAKOUTEC (0x1u << 3) /**< \brief (UOTGHS_DEVEPTIDR[10]) NAKed OUT Interrupt Clear */ +#define UOTGHS_DEVEPTIDR_HBISOINERREC (0x1u << 3) /**< \brief (UOTGHS_DEVEPTIDR[10]) High Bandwidth Isochronous IN Error Interrupt Clear */ +#define UOTGHS_DEVEPTIDR_NAKINEC (0x1u << 4) /**< \brief (UOTGHS_DEVEPTIDR[10]) NAKed IN Interrupt Clear */ +#define UOTGHS_DEVEPTIDR_HBISOFLUSHEC (0x1u << 4) /**< \brief (UOTGHS_DEVEPTIDR[10]) High Bandwidth Isochronous IN Flush Interrupt Clear */ +#define UOTGHS_DEVEPTIDR_OVERFEC (0x1u << 5) /**< \brief (UOTGHS_DEVEPTIDR[10]) Overflow Interrupt Clear */ +#define UOTGHS_DEVEPTIDR_STALLEDEC (0x1u << 6) /**< \brief (UOTGHS_DEVEPTIDR[10]) STALLed Interrupt Clear */ +#define UOTGHS_DEVEPTIDR_CRCERREC (0x1u << 6) /**< \brief (UOTGHS_DEVEPTIDR[10]) CRC Error Interrupt Clear */ +#define UOTGHS_DEVEPTIDR_SHORTPACKETEC (0x1u << 7) /**< \brief (UOTGHS_DEVEPTIDR[10]) Shortpacket Interrupt Clear */ +#define UOTGHS_DEVEPTIDR_MDATEC (0x1u << 8) /**< \brief (UOTGHS_DEVEPTIDR[10]) MData Interrupt Clear */ +#define UOTGHS_DEVEPTIDR_DATAXEC (0x1u << 9) /**< \brief (UOTGHS_DEVEPTIDR[10]) DataX Interrupt Clear */ +#define UOTGHS_DEVEPTIDR_ERRORTRANSEC (0x1u << 10) /**< \brief (UOTGHS_DEVEPTIDR[10]) Transaction Error Interrupt Clear */ +#define UOTGHS_DEVEPTIDR_NBUSYBKEC (0x1u << 12) /**< \brief (UOTGHS_DEVEPTIDR[10]) Number of Busy Banks Interrupt Clear */ +#define UOTGHS_DEVEPTIDR_FIFOCONC (0x1u << 14) /**< \brief (UOTGHS_DEVEPTIDR[10]) FIFO Control Clear */ +#define UOTGHS_DEVEPTIDR_EPDISHDMAC (0x1u << 16) /**< \brief (UOTGHS_DEVEPTIDR[10]) Endpoint Interrupts Disable HDMA Request Clear */ +#define UOTGHS_DEVEPTIDR_NYETDISC (0x1u << 17) /**< \brief (UOTGHS_DEVEPTIDR[10]) NYET Token Disable Clear */ +#define UOTGHS_DEVEPTIDR_STALLRQC (0x1u << 19) /**< \brief (UOTGHS_DEVEPTIDR[10]) STALL Request Clear */ +/* -------- UOTGHS_DEVDMANXTDSC : (UOTGHS Offset: N/A) Device DMA Channel Next Descriptor Address Register -------- */ +#define UOTGHS_DEVDMANXTDSC_NXT_DSC_ADD_Pos 0 +#define UOTGHS_DEVDMANXTDSC_NXT_DSC_ADD_Msk (0xffffffffu << UOTGHS_DEVDMANXTDSC_NXT_DSC_ADD_Pos) /**< \brief (UOTGHS_DEVDMANXTDSC) Next Descriptor Address */ +#define UOTGHS_DEVDMANXTDSC_NXT_DSC_ADD(value) ((UOTGHS_DEVDMANXTDSC_NXT_DSC_ADD_Msk & ((value) << UOTGHS_DEVDMANXTDSC_NXT_DSC_ADD_Pos))) +/* -------- UOTGHS_DEVDMAADDRESS : (UOTGHS Offset: N/A) Device DMA Channel Address Register -------- */ +#define UOTGHS_DEVDMAADDRESS_BUFF_ADD_Pos 0 +#define UOTGHS_DEVDMAADDRESS_BUFF_ADD_Msk (0xffffffffu << UOTGHS_DEVDMAADDRESS_BUFF_ADD_Pos) /**< \brief (UOTGHS_DEVDMAADDRESS) Buffer Address */ +#define UOTGHS_DEVDMAADDRESS_BUFF_ADD(value) ((UOTGHS_DEVDMAADDRESS_BUFF_ADD_Msk & ((value) << UOTGHS_DEVDMAADDRESS_BUFF_ADD_Pos))) +/* -------- UOTGHS_DEVDMACONTROL : (UOTGHS Offset: N/A) Device DMA Channel Control Register -------- */ +#define UOTGHS_DEVDMACONTROL_CHANN_ENB (0x1u << 0) /**< \brief (UOTGHS_DEVDMACONTROL) Channel Enable Command */ +#define UOTGHS_DEVDMACONTROL_LDNXT_DSC (0x1u << 1) /**< \brief (UOTGHS_DEVDMACONTROL) Load Next Channel Transfer Descriptor Enable Command */ +#define UOTGHS_DEVDMACONTROL_END_TR_EN (0x1u << 2) /**< \brief (UOTGHS_DEVDMACONTROL) End of Transfer Enable Control */ +#define UOTGHS_DEVDMACONTROL_END_B_EN (0x1u << 3) /**< \brief (UOTGHS_DEVDMACONTROL) End of Buffer Enable Control */ +#define UOTGHS_DEVDMACONTROL_END_TR_IT (0x1u << 4) /**< \brief (UOTGHS_DEVDMACONTROL) End of Transfer Interrupt Enable */ +#define UOTGHS_DEVDMACONTROL_END_BUFFIT (0x1u << 5) /**< \brief (UOTGHS_DEVDMACONTROL) End of Buffer Interrupt Enable */ +#define UOTGHS_DEVDMACONTROL_DESC_LD_IT (0x1u << 6) /**< \brief (UOTGHS_DEVDMACONTROL) Descriptor Loaded Interrupt Enable */ +#define UOTGHS_DEVDMACONTROL_BURST_LCK (0x1u << 7) /**< \brief (UOTGHS_DEVDMACONTROL) Burst Lock Enable */ +#define UOTGHS_DEVDMACONTROL_BUFF_LENGTH_Pos 16 +#define UOTGHS_DEVDMACONTROL_BUFF_LENGTH_Msk (0xffffu << UOTGHS_DEVDMACONTROL_BUFF_LENGTH_Pos) /**< \brief (UOTGHS_DEVDMACONTROL) Buffer Byte Length (Write-only) */ +#define UOTGHS_DEVDMACONTROL_BUFF_LENGTH(value) ((UOTGHS_DEVDMACONTROL_BUFF_LENGTH_Msk & ((value) << UOTGHS_DEVDMACONTROL_BUFF_LENGTH_Pos))) +/* -------- UOTGHS_DEVDMASTATUS : (UOTGHS Offset: N/A) Device DMA Channel Status Register -------- */ +#define UOTGHS_DEVDMASTATUS_CHANN_ENB (0x1u << 0) /**< \brief (UOTGHS_DEVDMASTATUS) Channel Enable Status */ +#define UOTGHS_DEVDMASTATUS_CHANN_ACT (0x1u << 1) /**< \brief (UOTGHS_DEVDMASTATUS) Channel Active Status */ +#define UOTGHS_DEVDMASTATUS_END_TR_ST (0x1u << 4) /**< \brief (UOTGHS_DEVDMASTATUS) End of Channel Transfer Status */ +#define UOTGHS_DEVDMASTATUS_END_BF_ST (0x1u << 5) /**< \brief (UOTGHS_DEVDMASTATUS) End of Channel Buffer Status */ +#define UOTGHS_DEVDMASTATUS_DESC_LDST (0x1u << 6) /**< \brief (UOTGHS_DEVDMASTATUS) Descriptor Loaded Status */ +#define UOTGHS_DEVDMASTATUS_BUFF_COUNT_Pos 16 +#define UOTGHS_DEVDMASTATUS_BUFF_COUNT_Msk (0xffffu << UOTGHS_DEVDMASTATUS_BUFF_COUNT_Pos) /**< \brief (UOTGHS_DEVDMASTATUS) Buffer Byte Count */ +#define UOTGHS_DEVDMASTATUS_BUFF_COUNT(value) ((UOTGHS_DEVDMASTATUS_BUFF_COUNT_Msk & ((value) << UOTGHS_DEVDMASTATUS_BUFF_COUNT_Pos))) +/* -------- UOTGHS_HSTCTRL : (UOTGHS Offset: 0x0400) Host General Control Register -------- */ +#define UOTGHS_HSTCTRL_SOFE (0x1u << 8) /**< \brief (UOTGHS_HSTCTRL) Start of Frame Generation Enable */ +#define UOTGHS_HSTCTRL_RESET (0x1u << 9) /**< \brief (UOTGHS_HSTCTRL) Send USB Reset */ +#define UOTGHS_HSTCTRL_RESUME (0x1u << 10) /**< \brief (UOTGHS_HSTCTRL) Send USB Resume */ +#define UOTGHS_HSTCTRL_SPDCONF_Pos 12 +#define UOTGHS_HSTCTRL_SPDCONF_Msk (0x3u << UOTGHS_HSTCTRL_SPDCONF_Pos) /**< \brief (UOTGHS_HSTCTRL) Mode Configuration */ +#define UOTGHS_HSTCTRL_SPDCONF_NORMAL (0x0u << 12) /**< \brief (UOTGHS_HSTCTRL) The host starts in full-speed mode and performs a high-speed reset to switch to the high-speed mode if the downstream peripheral is high-speed capable. */ +#define UOTGHS_HSTCTRL_SPDCONF_LOW_POWER (0x1u << 12) /**< \brief (UOTGHS_HSTCTRL) For a better consumption, if high-speed is not needed. */ +#define UOTGHS_HSTCTRL_SPDCONF_HIGH_SPEED (0x2u << 12) /**< \brief (UOTGHS_HSTCTRL) Forced high speed. */ +#define UOTGHS_HSTCTRL_SPDCONF_FORCED_FS (0x3u << 12) /**< \brief (UOTGHS_HSTCTRL) The host remains to full-speed mode whatever the peripheral speed capability. */ +/* -------- UOTGHS_HSTISR : (UOTGHS Offset: 0x0404) Host Global Interrupt Status Register -------- */ +#define UOTGHS_HSTISR_DCONNI (0x1u << 0) /**< \brief (UOTGHS_HSTISR) Device Connection Interrupt */ +#define UOTGHS_HSTISR_DDISCI (0x1u << 1) /**< \brief (UOTGHS_HSTISR) Device Disconnection Interrupt */ +#define UOTGHS_HSTISR_RSTI (0x1u << 2) /**< \brief (UOTGHS_HSTISR) USB Reset Sent Interrupt */ +#define UOTGHS_HSTISR_RSMEDI (0x1u << 3) /**< \brief (UOTGHS_HSTISR) Downstream Resume Sent Interrupt */ +#define UOTGHS_HSTISR_RXRSMI (0x1u << 4) /**< \brief (UOTGHS_HSTISR) Upstream Resume Received Interrupt */ +#define UOTGHS_HSTISR_HSOFI (0x1u << 5) /**< \brief (UOTGHS_HSTISR) Host Start of Frame Interrupt */ +#define UOTGHS_HSTISR_HWUPI (0x1u << 6) /**< \brief (UOTGHS_HSTISR) Host Wake-Up Interrupt */ +#define UOTGHS_HSTISR_PEP_0 (0x1u << 8) /**< \brief (UOTGHS_HSTISR) Pipe 0 Interrupt */ +#define UOTGHS_HSTISR_PEP_1 (0x1u << 9) /**< \brief (UOTGHS_HSTISR) Pipe 1 Interrupt */ +#define UOTGHS_HSTISR_PEP_2 (0x1u << 10) /**< \brief (UOTGHS_HSTISR) Pipe 2 Interrupt */ +#define UOTGHS_HSTISR_PEP_3 (0x1u << 11) /**< \brief (UOTGHS_HSTISR) Pipe 3 Interrupt */ +#define UOTGHS_HSTISR_PEP_4 (0x1u << 12) /**< \brief (UOTGHS_HSTISR) Pipe 4 Interrupt */ +#define UOTGHS_HSTISR_PEP_5 (0x1u << 13) /**< \brief (UOTGHS_HSTISR) Pipe 5 Interrupt */ +#define UOTGHS_HSTISR_PEP_6 (0x1u << 14) /**< \brief (UOTGHS_HSTISR) Pipe 6 Interrupt */ +#define UOTGHS_HSTISR_PEP_7 (0x1u << 15) /**< \brief (UOTGHS_HSTISR) Pipe 7 Interrupt */ +#define UOTGHS_HSTISR_PEP_8 (0x1u << 16) /**< \brief (UOTGHS_HSTISR) Pipe 8 Interrupt */ +#define UOTGHS_HSTISR_PEP_9 (0x1u << 17) /**< \brief (UOTGHS_HSTISR) Pipe 9 Interrupt */ +#define UOTGHS_HSTISR_DMA_1 (0x1u << 25) /**< \brief (UOTGHS_HSTISR) DMA Channel 1 Interrupt */ +#define UOTGHS_HSTISR_DMA_2 (0x1u << 26) /**< \brief (UOTGHS_HSTISR) DMA Channel 2 Interrupt */ +#define UOTGHS_HSTISR_DMA_3 (0x1u << 27) /**< \brief (UOTGHS_HSTISR) DMA Channel 3 Interrupt */ +#define UOTGHS_HSTISR_DMA_4 (0x1u << 28) /**< \brief (UOTGHS_HSTISR) DMA Channel 4 Interrupt */ +#define UOTGHS_HSTISR_DMA_5 (0x1u << 29) /**< \brief (UOTGHS_HSTISR) DMA Channel 5 Interrupt */ +#define UOTGHS_HSTISR_DMA_6 (0x1u << 30) /**< \brief (UOTGHS_HSTISR) DMA Channel 6 Interrupt */ +/* -------- UOTGHS_HSTICR : (UOTGHS Offset: 0x0408) Host Global Interrupt Clear Register -------- */ +#define UOTGHS_HSTICR_DCONNIC (0x1u << 0) /**< \brief (UOTGHS_HSTICR) Device Connection Interrupt Clear */ +#define UOTGHS_HSTICR_DDISCIC (0x1u << 1) /**< \brief (UOTGHS_HSTICR) Device Disconnection Interrupt Clear */ +#define UOTGHS_HSTICR_RSTIC (0x1u << 2) /**< \brief (UOTGHS_HSTICR) USB Reset Sent Interrupt Clear */ +#define UOTGHS_HSTICR_RSMEDIC (0x1u << 3) /**< \brief (UOTGHS_HSTICR) Downstream Resume Sent Interrupt Clear */ +#define UOTGHS_HSTICR_RXRSMIC (0x1u << 4) /**< \brief (UOTGHS_HSTICR) Upstream Resume Received Interrupt Clear */ +#define UOTGHS_HSTICR_HSOFIC (0x1u << 5) /**< \brief (UOTGHS_HSTICR) Host Start of Frame Interrupt Clear */ +#define UOTGHS_HSTICR_HWUPIC (0x1u << 6) /**< \brief (UOTGHS_HSTICR) Host Wake-Up Interrupt Clear */ +/* -------- UOTGHS_HSTIFR : (UOTGHS Offset: 0x040C) Host Global Interrupt Set Register -------- */ +#define UOTGHS_HSTIFR_DCONNIS (0x1u << 0) /**< \brief (UOTGHS_HSTIFR) Device Connection Interrupt Set */ +#define UOTGHS_HSTIFR_DDISCIS (0x1u << 1) /**< \brief (UOTGHS_HSTIFR) Device Disconnection Interrupt Set */ +#define UOTGHS_HSTIFR_RSTIS (0x1u << 2) /**< \brief (UOTGHS_HSTIFR) USB Reset Sent Interrupt Set */ +#define UOTGHS_HSTIFR_RSMEDIS (0x1u << 3) /**< \brief (UOTGHS_HSTIFR) Downstream Resume Sent Interrupt Set */ +#define UOTGHS_HSTIFR_RXRSMIS (0x1u << 4) /**< \brief (UOTGHS_HSTIFR) Upstream Resume Received Interrupt Set */ +#define UOTGHS_HSTIFR_HSOFIS (0x1u << 5) /**< \brief (UOTGHS_HSTIFR) Host Start of Frame Interrupt Set */ +#define UOTGHS_HSTIFR_HWUPIS (0x1u << 6) /**< \brief (UOTGHS_HSTIFR) Host Wake-Up Interrupt Set */ +#define UOTGHS_HSTIFR_DMA_1 (0x1u << 25) /**< \brief (UOTGHS_HSTIFR) DMA Channel 1 Interrupt Set */ +#define UOTGHS_HSTIFR_DMA_2 (0x1u << 26) /**< \brief (UOTGHS_HSTIFR) DMA Channel 2 Interrupt Set */ +#define UOTGHS_HSTIFR_DMA_3 (0x1u << 27) /**< \brief (UOTGHS_HSTIFR) DMA Channel 3 Interrupt Set */ +#define UOTGHS_HSTIFR_DMA_4 (0x1u << 28) /**< \brief (UOTGHS_HSTIFR) DMA Channel 4 Interrupt Set */ +#define UOTGHS_HSTIFR_DMA_5 (0x1u << 29) /**< \brief (UOTGHS_HSTIFR) DMA Channel 5 Interrupt Set */ +#define UOTGHS_HSTIFR_DMA_6 (0x1u << 30) /**< \brief (UOTGHS_HSTIFR) DMA Channel 6 Interrupt Set */ +/* -------- UOTGHS_HSTIMR : (UOTGHS Offset: 0x0410) Host Global Interrupt Mask Register -------- */ +#define UOTGHS_HSTIMR_DCONNIE (0x1u << 0) /**< \brief (UOTGHS_HSTIMR) Device Connection Interrupt Enable */ +#define UOTGHS_HSTIMR_DDISCIE (0x1u << 1) /**< \brief (UOTGHS_HSTIMR) Device Disconnection Interrupt Enable */ +#define UOTGHS_HSTIMR_RSTIE (0x1u << 2) /**< \brief (UOTGHS_HSTIMR) USB Reset Sent Interrupt Enable */ +#define UOTGHS_HSTIMR_RSMEDIE (0x1u << 3) /**< \brief (UOTGHS_HSTIMR) Downstream Resume Sent Interrupt Enable */ +#define UOTGHS_HSTIMR_RXRSMIE (0x1u << 4) /**< \brief (UOTGHS_HSTIMR) Upstream Resume Received Interrupt Enable */ +#define UOTGHS_HSTIMR_HSOFIE (0x1u << 5) /**< \brief (UOTGHS_HSTIMR) Host Start of Frame Interrupt Enable */ +#define UOTGHS_HSTIMR_HWUPIE (0x1u << 6) /**< \brief (UOTGHS_HSTIMR) Host Wake-Up Interrupt Enable */ +#define UOTGHS_HSTIMR_PEP_0 (0x1u << 8) /**< \brief (UOTGHS_HSTIMR) Pipe 0 Interrupt Enable */ +#define UOTGHS_HSTIMR_PEP_1 (0x1u << 9) /**< \brief (UOTGHS_HSTIMR) Pipe 1 Interrupt Enable */ +#define UOTGHS_HSTIMR_PEP_2 (0x1u << 10) /**< \brief (UOTGHS_HSTIMR) Pipe 2 Interrupt Enable */ +#define UOTGHS_HSTIMR_PEP_3 (0x1u << 11) /**< \brief (UOTGHS_HSTIMR) Pipe 3 Interrupt Enable */ +#define UOTGHS_HSTIMR_PEP_4 (0x1u << 12) /**< \brief (UOTGHS_HSTIMR) Pipe 4 Interrupt Enable */ +#define UOTGHS_HSTIMR_PEP_5 (0x1u << 13) /**< \brief (UOTGHS_HSTIMR) Pipe 5 Interrupt Enable */ +#define UOTGHS_HSTIMR_PEP_6 (0x1u << 14) /**< \brief (UOTGHS_HSTIMR) Pipe 6 Interrupt Enable */ +#define UOTGHS_HSTIMR_PEP_7 (0x1u << 15) /**< \brief (UOTGHS_HSTIMR) Pipe 7 Interrupt Enable */ +#define UOTGHS_HSTIMR_PEP_8 (0x1u << 16) /**< \brief (UOTGHS_HSTIMR) Pipe 8 Interrupt Enable */ +#define UOTGHS_HSTIMR_PEP_9 (0x1u << 17) /**< \brief (UOTGHS_HSTIMR) Pipe 9 Interrupt Enable */ +#define UOTGHS_HSTIMR_DMA_1 (0x1u << 25) /**< \brief (UOTGHS_HSTIMR) DMA Channel 1 Interrupt Enable */ +#define UOTGHS_HSTIMR_DMA_2 (0x1u << 26) /**< \brief (UOTGHS_HSTIMR) DMA Channel 2 Interrupt Enable */ +#define UOTGHS_HSTIMR_DMA_3 (0x1u << 27) /**< \brief (UOTGHS_HSTIMR) DMA Channel 3 Interrupt Enable */ +#define UOTGHS_HSTIMR_DMA_4 (0x1u << 28) /**< \brief (UOTGHS_HSTIMR) DMA Channel 4 Interrupt Enable */ +#define UOTGHS_HSTIMR_DMA_5 (0x1u << 29) /**< \brief (UOTGHS_HSTIMR) DMA Channel 5 Interrupt Enable */ +#define UOTGHS_HSTIMR_DMA_6 (0x1u << 30) /**< \brief (UOTGHS_HSTIMR) DMA Channel 6 Interrupt Enable */ +/* -------- UOTGHS_HSTIDR : (UOTGHS Offset: 0x0414) Host Global Interrupt Disable Register -------- */ +#define UOTGHS_HSTIDR_DCONNIEC (0x1u << 0) /**< \brief (UOTGHS_HSTIDR) Device Connection Interrupt Disable */ +#define UOTGHS_HSTIDR_DDISCIEC (0x1u << 1) /**< \brief (UOTGHS_HSTIDR) Device Disconnection Interrupt Disable */ +#define UOTGHS_HSTIDR_RSTIEC (0x1u << 2) /**< \brief (UOTGHS_HSTIDR) USB Reset Sent Interrupt Disable */ +#define UOTGHS_HSTIDR_RSMEDIEC (0x1u << 3) /**< \brief (UOTGHS_HSTIDR) Downstream Resume Sent Interrupt Disable */ +#define UOTGHS_HSTIDR_RXRSMIEC (0x1u << 4) /**< \brief (UOTGHS_HSTIDR) Upstream Resume Received Interrupt Disable */ +#define UOTGHS_HSTIDR_HSOFIEC (0x1u << 5) /**< \brief (UOTGHS_HSTIDR) Host Start of Frame Interrupt Disable */ +#define UOTGHS_HSTIDR_HWUPIEC (0x1u << 6) /**< \brief (UOTGHS_HSTIDR) Host Wake-Up Interrupt Disable */ +#define UOTGHS_HSTIDR_PEP_0 (0x1u << 8) /**< \brief (UOTGHS_HSTIDR) Pipe 0 Interrupt Disable */ +#define UOTGHS_HSTIDR_PEP_1 (0x1u << 9) /**< \brief (UOTGHS_HSTIDR) Pipe 1 Interrupt Disable */ +#define UOTGHS_HSTIDR_PEP_2 (0x1u << 10) /**< \brief (UOTGHS_HSTIDR) Pipe 2 Interrupt Disable */ +#define UOTGHS_HSTIDR_PEP_3 (0x1u << 11) /**< \brief (UOTGHS_HSTIDR) Pipe 3 Interrupt Disable */ +#define UOTGHS_HSTIDR_PEP_4 (0x1u << 12) /**< \brief (UOTGHS_HSTIDR) Pipe 4 Interrupt Disable */ +#define UOTGHS_HSTIDR_PEP_5 (0x1u << 13) /**< \brief (UOTGHS_HSTIDR) Pipe 5 Interrupt Disable */ +#define UOTGHS_HSTIDR_PEP_6 (0x1u << 14) /**< \brief (UOTGHS_HSTIDR) Pipe 6 Interrupt Disable */ +#define UOTGHS_HSTIDR_PEP_7 (0x1u << 15) /**< \brief (UOTGHS_HSTIDR) Pipe 7 Interrupt Disable */ +#define UOTGHS_HSTIDR_PEP_8 (0x1u << 16) /**< \brief (UOTGHS_HSTIDR) Pipe 8 Interrupt Disable */ +#define UOTGHS_HSTIDR_PEP_9 (0x1u << 17) /**< \brief (UOTGHS_HSTIDR) Pipe 9 Interrupt Disable */ +#define UOTGHS_HSTIDR_DMA_1 (0x1u << 25) /**< \brief (UOTGHS_HSTIDR) DMA Channel 1 Interrupt Disable */ +#define UOTGHS_HSTIDR_DMA_2 (0x1u << 26) /**< \brief (UOTGHS_HSTIDR) DMA Channel 2 Interrupt Disable */ +#define UOTGHS_HSTIDR_DMA_3 (0x1u << 27) /**< \brief (UOTGHS_HSTIDR) DMA Channel 3 Interrupt Disable */ +#define UOTGHS_HSTIDR_DMA_4 (0x1u << 28) /**< \brief (UOTGHS_HSTIDR) DMA Channel 4 Interrupt Disable */ +#define UOTGHS_HSTIDR_DMA_5 (0x1u << 29) /**< \brief (UOTGHS_HSTIDR) DMA Channel 5 Interrupt Disable */ +#define UOTGHS_HSTIDR_DMA_6 (0x1u << 30) /**< \brief (UOTGHS_HSTIDR) DMA Channel 6 Interrupt Disable */ +/* -------- UOTGHS_HSTIER : (UOTGHS Offset: 0x0418) Host Global Interrupt Enable Register -------- */ +#define UOTGHS_HSTIER_DCONNIES (0x1u << 0) /**< \brief (UOTGHS_HSTIER) Device Connection Interrupt Enable */ +#define UOTGHS_HSTIER_DDISCIES (0x1u << 1) /**< \brief (UOTGHS_HSTIER) Device Disconnection Interrupt Enable */ +#define UOTGHS_HSTIER_RSTIES (0x1u << 2) /**< \brief (UOTGHS_HSTIER) USB Reset Sent Interrupt Enable */ +#define UOTGHS_HSTIER_RSMEDIES (0x1u << 3) /**< \brief (UOTGHS_HSTIER) Downstream Resume Sent Interrupt Enable */ +#define UOTGHS_HSTIER_RXRSMIES (0x1u << 4) /**< \brief (UOTGHS_HSTIER) Upstream Resume Received Interrupt Enable */ +#define UOTGHS_HSTIER_HSOFIES (0x1u << 5) /**< \brief (UOTGHS_HSTIER) Host Start of Frame Interrupt Enable */ +#define UOTGHS_HSTIER_HWUPIES (0x1u << 6) /**< \brief (UOTGHS_HSTIER) Host Wake-Up Interrupt Enable */ +#define UOTGHS_HSTIER_PEP_0 (0x1u << 8) /**< \brief (UOTGHS_HSTIER) Pipe 0 Interrupt Enable */ +#define UOTGHS_HSTIER_PEP_1 (0x1u << 9) /**< \brief (UOTGHS_HSTIER) Pipe 1 Interrupt Enable */ +#define UOTGHS_HSTIER_PEP_2 (0x1u << 10) /**< \brief (UOTGHS_HSTIER) Pipe 2 Interrupt Enable */ +#define UOTGHS_HSTIER_PEP_3 (0x1u << 11) /**< \brief (UOTGHS_HSTIER) Pipe 3 Interrupt Enable */ +#define UOTGHS_HSTIER_PEP_4 (0x1u << 12) /**< \brief (UOTGHS_HSTIER) Pipe 4 Interrupt Enable */ +#define UOTGHS_HSTIER_PEP_5 (0x1u << 13) /**< \brief (UOTGHS_HSTIER) Pipe 5 Interrupt Enable */ +#define UOTGHS_HSTIER_PEP_6 (0x1u << 14) /**< \brief (UOTGHS_HSTIER) Pipe 6 Interrupt Enable */ +#define UOTGHS_HSTIER_PEP_7 (0x1u << 15) /**< \brief (UOTGHS_HSTIER) Pipe 7 Interrupt Enable */ +#define UOTGHS_HSTIER_PEP_8 (0x1u << 16) /**< \brief (UOTGHS_HSTIER) Pipe 8 Interrupt Enable */ +#define UOTGHS_HSTIER_PEP_9 (0x1u << 17) /**< \brief (UOTGHS_HSTIER) Pipe 9 Interrupt Enable */ +#define UOTGHS_HSTIER_DMA_1 (0x1u << 25) /**< \brief (UOTGHS_HSTIER) DMA Channel 1 Interrupt Enable */ +#define UOTGHS_HSTIER_DMA_2 (0x1u << 26) /**< \brief (UOTGHS_HSTIER) DMA Channel 2 Interrupt Enable */ +#define UOTGHS_HSTIER_DMA_3 (0x1u << 27) /**< \brief (UOTGHS_HSTIER) DMA Channel 3 Interrupt Enable */ +#define UOTGHS_HSTIER_DMA_4 (0x1u << 28) /**< \brief (UOTGHS_HSTIER) DMA Channel 4 Interrupt Enable */ +#define UOTGHS_HSTIER_DMA_5 (0x1u << 29) /**< \brief (UOTGHS_HSTIER) DMA Channel 5 Interrupt Enable */ +#define UOTGHS_HSTIER_DMA_6 (0x1u << 30) /**< \brief (UOTGHS_HSTIER) DMA Channel 6 Interrupt Enable */ +/* -------- UOTGHS_HSTPIP : (UOTGHS Offset: 0x0041C) Host Pipe Register -------- */ +#define UOTGHS_HSTPIP_PEN0 (0x1u << 0) /**< \brief (UOTGHS_HSTPIP) Pipe 0 Enable */ +#define UOTGHS_HSTPIP_PEN1 (0x1u << 1) /**< \brief (UOTGHS_HSTPIP) Pipe 1 Enable */ +#define UOTGHS_HSTPIP_PEN2 (0x1u << 2) /**< \brief (UOTGHS_HSTPIP) Pipe 2 Enable */ +#define UOTGHS_HSTPIP_PEN3 (0x1u << 3) /**< \brief (UOTGHS_HSTPIP) Pipe 3 Enable */ +#define UOTGHS_HSTPIP_PEN4 (0x1u << 4) /**< \brief (UOTGHS_HSTPIP) Pipe 4 Enable */ +#define UOTGHS_HSTPIP_PEN5 (0x1u << 5) /**< \brief (UOTGHS_HSTPIP) Pipe 5 Enable */ +#define UOTGHS_HSTPIP_PEN6 (0x1u << 6) /**< \brief (UOTGHS_HSTPIP) Pipe 6 Enable */ +#define UOTGHS_HSTPIP_PEN7 (0x1u << 7) /**< \brief (UOTGHS_HSTPIP) Pipe 7 Enable */ +#define UOTGHS_HSTPIP_PEN8 (0x1u << 8) /**< \brief (UOTGHS_HSTPIP) Pipe 8 Enable */ +#define UOTGHS_HSTPIP_PRST0 (0x1u << 16) /**< \brief (UOTGHS_HSTPIP) Pipe 0 Reset */ +#define UOTGHS_HSTPIP_PRST1 (0x1u << 17) /**< \brief (UOTGHS_HSTPIP) Pipe 1 Reset */ +#define UOTGHS_HSTPIP_PRST2 (0x1u << 18) /**< \brief (UOTGHS_HSTPIP) Pipe 2 Reset */ +#define UOTGHS_HSTPIP_PRST3 (0x1u << 19) /**< \brief (UOTGHS_HSTPIP) Pipe 3 Reset */ +#define UOTGHS_HSTPIP_PRST4 (0x1u << 20) /**< \brief (UOTGHS_HSTPIP) Pipe 4 Reset */ +#define UOTGHS_HSTPIP_PRST5 (0x1u << 21) /**< \brief (UOTGHS_HSTPIP) Pipe 5 Reset */ +#define UOTGHS_HSTPIP_PRST6 (0x1u << 22) /**< \brief (UOTGHS_HSTPIP) Pipe 6 Reset */ +#define UOTGHS_HSTPIP_PRST7 (0x1u << 23) /**< \brief (UOTGHS_HSTPIP) Pipe 7 Reset */ +#define UOTGHS_HSTPIP_PRST8 (0x1u << 24) /**< \brief (UOTGHS_HSTPIP) Pipe 8 Reset */ +/* -------- UOTGHS_HSTFNUM : (UOTGHS Offset: 0x0420) Host Frame Number Register -------- */ +#define UOTGHS_HSTFNUM_MFNUM_Pos 0 +#define UOTGHS_HSTFNUM_MFNUM_Msk (0x7u << UOTGHS_HSTFNUM_MFNUM_Pos) /**< \brief (UOTGHS_HSTFNUM) Micro Frame Number */ +#define UOTGHS_HSTFNUM_MFNUM(value) ((UOTGHS_HSTFNUM_MFNUM_Msk & ((value) << UOTGHS_HSTFNUM_MFNUM_Pos))) +#define UOTGHS_HSTFNUM_FNUM_Pos 3 +#define UOTGHS_HSTFNUM_FNUM_Msk (0x7ffu << UOTGHS_HSTFNUM_FNUM_Pos) /**< \brief (UOTGHS_HSTFNUM) Frame Number */ +#define UOTGHS_HSTFNUM_FNUM(value) ((UOTGHS_HSTFNUM_FNUM_Msk & ((value) << UOTGHS_HSTFNUM_FNUM_Pos))) +#define UOTGHS_HSTFNUM_FLENHIGH_Pos 16 +#define UOTGHS_HSTFNUM_FLENHIGH_Msk (0xffu << UOTGHS_HSTFNUM_FLENHIGH_Pos) /**< \brief (UOTGHS_HSTFNUM) Frame Length */ +#define UOTGHS_HSTFNUM_FLENHIGH(value) ((UOTGHS_HSTFNUM_FLENHIGH_Msk & ((value) << UOTGHS_HSTFNUM_FLENHIGH_Pos))) +/* -------- UOTGHS_HSTADDR1 : (UOTGHS Offset: 0x0424) Host Address 1 Register -------- */ +#define UOTGHS_HSTADDR1_HSTADDRP0_Pos 0 +#define UOTGHS_HSTADDR1_HSTADDRP0_Msk (0x7fu << UOTGHS_HSTADDR1_HSTADDRP0_Pos) /**< \brief (UOTGHS_HSTADDR1) USB Host Address */ +#define UOTGHS_HSTADDR1_HSTADDRP0(value) ((UOTGHS_HSTADDR1_HSTADDRP0_Msk & ((value) << UOTGHS_HSTADDR1_HSTADDRP0_Pos))) +#define UOTGHS_HSTADDR1_HSTADDRP1_Pos 8 +#define UOTGHS_HSTADDR1_HSTADDRP1_Msk (0x7fu << UOTGHS_HSTADDR1_HSTADDRP1_Pos) /**< \brief (UOTGHS_HSTADDR1) USB Host Address */ +#define UOTGHS_HSTADDR1_HSTADDRP1(value) ((UOTGHS_HSTADDR1_HSTADDRP1_Msk & ((value) << UOTGHS_HSTADDR1_HSTADDRP1_Pos))) +#define UOTGHS_HSTADDR1_HSTADDRP2_Pos 16 +#define UOTGHS_HSTADDR1_HSTADDRP2_Msk (0x7fu << UOTGHS_HSTADDR1_HSTADDRP2_Pos) /**< \brief (UOTGHS_HSTADDR1) USB Host Address */ +#define UOTGHS_HSTADDR1_HSTADDRP2(value) ((UOTGHS_HSTADDR1_HSTADDRP2_Msk & ((value) << UOTGHS_HSTADDR1_HSTADDRP2_Pos))) +#define UOTGHS_HSTADDR1_HSTADDRP3_Pos 24 +#define UOTGHS_HSTADDR1_HSTADDRP3_Msk (0x7fu << UOTGHS_HSTADDR1_HSTADDRP3_Pos) /**< \brief (UOTGHS_HSTADDR1) USB Host Address */ +#define UOTGHS_HSTADDR1_HSTADDRP3(value) ((UOTGHS_HSTADDR1_HSTADDRP3_Msk & ((value) << UOTGHS_HSTADDR1_HSTADDRP3_Pos))) +/* -------- UOTGHS_HSTADDR2 : (UOTGHS Offset: 0x0428) Host Address 2 Register -------- */ +#define UOTGHS_HSTADDR2_HSTADDRP4_Pos 0 +#define UOTGHS_HSTADDR2_HSTADDRP4_Msk (0x7fu << UOTGHS_HSTADDR2_HSTADDRP4_Pos) /**< \brief (UOTGHS_HSTADDR2) USB Host Address */ +#define UOTGHS_HSTADDR2_HSTADDRP4(value) ((UOTGHS_HSTADDR2_HSTADDRP4_Msk & ((value) << UOTGHS_HSTADDR2_HSTADDRP4_Pos))) +#define UOTGHS_HSTADDR2_HSTADDRP5_Pos 8 +#define UOTGHS_HSTADDR2_HSTADDRP5_Msk (0x7fu << UOTGHS_HSTADDR2_HSTADDRP5_Pos) /**< \brief (UOTGHS_HSTADDR2) USB Host Address */ +#define UOTGHS_HSTADDR2_HSTADDRP5(value) ((UOTGHS_HSTADDR2_HSTADDRP5_Msk & ((value) << UOTGHS_HSTADDR2_HSTADDRP5_Pos))) +#define UOTGHS_HSTADDR2_HSTADDRP6_Pos 16 +#define UOTGHS_HSTADDR2_HSTADDRP6_Msk (0x7fu << UOTGHS_HSTADDR2_HSTADDRP6_Pos) /**< \brief (UOTGHS_HSTADDR2) USB Host Address */ +#define UOTGHS_HSTADDR2_HSTADDRP6(value) ((UOTGHS_HSTADDR2_HSTADDRP6_Msk & ((value) << UOTGHS_HSTADDR2_HSTADDRP6_Pos))) +#define UOTGHS_HSTADDR2_HSTADDRP7_Pos 24 +#define UOTGHS_HSTADDR2_HSTADDRP7_Msk (0x7fu << UOTGHS_HSTADDR2_HSTADDRP7_Pos) /**< \brief (UOTGHS_HSTADDR2) USB Host Address */ +#define UOTGHS_HSTADDR2_HSTADDRP7(value) ((UOTGHS_HSTADDR2_HSTADDRP7_Msk & ((value) << UOTGHS_HSTADDR2_HSTADDRP7_Pos))) +/* -------- UOTGHS_HSTADDR3 : (UOTGHS Offset: 0x042C) Host Address 3 Register -------- */ +#define UOTGHS_HSTADDR3_HSTADDRP8_Pos 0 +#define UOTGHS_HSTADDR3_HSTADDRP8_Msk (0x7fu << UOTGHS_HSTADDR3_HSTADDRP8_Pos) /**< \brief (UOTGHS_HSTADDR3) USB Host Address */ +#define UOTGHS_HSTADDR3_HSTADDRP8(value) ((UOTGHS_HSTADDR3_HSTADDRP8_Msk & ((value) << UOTGHS_HSTADDR3_HSTADDRP8_Pos))) +#define UOTGHS_HSTADDR3_HSTADDRP9_Pos 8 +#define UOTGHS_HSTADDR3_HSTADDRP9_Msk (0x7fu << UOTGHS_HSTADDR3_HSTADDRP9_Pos) /**< \brief (UOTGHS_HSTADDR3) USB Host Address */ +#define UOTGHS_HSTADDR3_HSTADDRP9(value) ((UOTGHS_HSTADDR3_HSTADDRP9_Msk & ((value) << UOTGHS_HSTADDR3_HSTADDRP9_Pos))) +/* -------- UOTGHS_HSTPIPCFG[10] : (UOTGHS Offset: 0x500) Host Pipe Configuration Register (n = 0) -------- */ +#define UOTGHS_HSTPIPCFG_ALLOC (0x1u << 1) /**< \brief (UOTGHS_HSTPIPCFG[10]) Pipe Memory Allocate */ +#define UOTGHS_HSTPIPCFG_PBK_Pos 2 +#define UOTGHS_HSTPIPCFG_PBK_Msk (0x3u << UOTGHS_HSTPIPCFG_PBK_Pos) /**< \brief (UOTGHS_HSTPIPCFG[10]) Pipe Banks */ +#define UOTGHS_HSTPIPCFG_PBK_1_BANK (0x0u << 2) /**< \brief (UOTGHS_HSTPIPCFG[10]) Single-bank pipe */ +#define UOTGHS_HSTPIPCFG_PBK_2_BANK (0x1u << 2) /**< \brief (UOTGHS_HSTPIPCFG[10]) Double-bank pipe */ +#define UOTGHS_HSTPIPCFG_PBK_3_BANK (0x2u << 2) /**< \brief (UOTGHS_HSTPIPCFG[10]) Triple-bank pipe */ +#define UOTGHS_HSTPIPCFG_PSIZE_Pos 4 +#define UOTGHS_HSTPIPCFG_PSIZE_Msk (0x7u << UOTGHS_HSTPIPCFG_PSIZE_Pos) /**< \brief (UOTGHS_HSTPIPCFG[10]) Pipe Size */ +#define UOTGHS_HSTPIPCFG_PSIZE_8_BYTE (0x0u << 4) /**< \brief (UOTGHS_HSTPIPCFG[10]) 8 bytes */ +#define UOTGHS_HSTPIPCFG_PSIZE_16_BYTE (0x1u << 4) /**< \brief (UOTGHS_HSTPIPCFG[10]) 16 bytes */ +#define UOTGHS_HSTPIPCFG_PSIZE_32_BYTE (0x2u << 4) /**< \brief (UOTGHS_HSTPIPCFG[10]) 32 bytes */ +#define UOTGHS_HSTPIPCFG_PSIZE_64_BYTE (0x3u << 4) /**< \brief (UOTGHS_HSTPIPCFG[10]) 64 bytes */ +#define UOTGHS_HSTPIPCFG_PSIZE_128_BYTE (0x4u << 4) /**< \brief (UOTGHS_HSTPIPCFG[10]) 128 bytes */ +#define UOTGHS_HSTPIPCFG_PSIZE_256_BYTE (0x5u << 4) /**< \brief (UOTGHS_HSTPIPCFG[10]) 256 bytes */ +#define UOTGHS_HSTPIPCFG_PSIZE_512_BYTE (0x6u << 4) /**< \brief (UOTGHS_HSTPIPCFG[10]) 512 bytes */ +#define UOTGHS_HSTPIPCFG_PSIZE_1024_BYTE (0x7u << 4) /**< \brief (UOTGHS_HSTPIPCFG[10]) 1024 bytes */ +#define UOTGHS_HSTPIPCFG_PTOKEN_Pos 8 +#define UOTGHS_HSTPIPCFG_PTOKEN_Msk (0x3u << UOTGHS_HSTPIPCFG_PTOKEN_Pos) /**< \brief (UOTGHS_HSTPIPCFG[10]) Pipe Token */ +#define UOTGHS_HSTPIPCFG_PTOKEN_SETUP (0x0u << 8) /**< \brief (UOTGHS_HSTPIPCFG[10]) SETUP */ +#define UOTGHS_HSTPIPCFG_PTOKEN_IN (0x1u << 8) /**< \brief (UOTGHS_HSTPIPCFG[10]) IN */ +#define UOTGHS_HSTPIPCFG_PTOKEN_OUT (0x2u << 8) /**< \brief (UOTGHS_HSTPIPCFG[10]) OUT */ +#define UOTGHS_HSTPIPCFG_AUTOSW (0x1u << 10) /**< \brief (UOTGHS_HSTPIPCFG[10]) Automatic Switch */ +#define UOTGHS_HSTPIPCFG_PTYPE_Pos 12 +#define UOTGHS_HSTPIPCFG_PTYPE_Msk (0x3u << UOTGHS_HSTPIPCFG_PTYPE_Pos) /**< \brief (UOTGHS_HSTPIPCFG[10]) Pipe Type */ +#define UOTGHS_HSTPIPCFG_PTYPE_CTRL (0x0u << 12) /**< \brief (UOTGHS_HSTPIPCFG[10]) Control */ +#define UOTGHS_HSTPIPCFG_PTYPE_ISO (0x1u << 12) /**< \brief (UOTGHS_HSTPIPCFG[10]) Isochronous */ +#define UOTGHS_HSTPIPCFG_PTYPE_BLK (0x2u << 12) /**< \brief (UOTGHS_HSTPIPCFG[10]) Bulk */ +#define UOTGHS_HSTPIPCFG_PTYPE_INTRPT (0x3u << 12) /**< \brief (UOTGHS_HSTPIPCFG[10]) Interrupt */ +#define UOTGHS_HSTPIPCFG_PEPNUM_Pos 16 +#define UOTGHS_HSTPIPCFG_PEPNUM_Msk (0xfu << UOTGHS_HSTPIPCFG_PEPNUM_Pos) /**< \brief (UOTGHS_HSTPIPCFG[10]) Pipe Endpoint Number */ +#define UOTGHS_HSTPIPCFG_PEPNUM(value) ((UOTGHS_HSTPIPCFG_PEPNUM_Msk & ((value) << UOTGHS_HSTPIPCFG_PEPNUM_Pos))) +#define UOTGHS_HSTPIPCFG_PINGEN (0x1u << 20) /**< \brief (UOTGHS_HSTPIPCFG[10]) Ping Enable */ +#define UOTGHS_HSTPIPCFG_INTFRQ_Pos 24 +#define UOTGHS_HSTPIPCFG_INTFRQ_Msk (0xffu << UOTGHS_HSTPIPCFG_INTFRQ_Pos) /**< \brief (UOTGHS_HSTPIPCFG[10]) Pipe Interrupt Request Frequency */ +#define UOTGHS_HSTPIPCFG_INTFRQ(value) ((UOTGHS_HSTPIPCFG_INTFRQ_Msk & ((value) << UOTGHS_HSTPIPCFG_INTFRQ_Pos))) +#define UOTGHS_HSTPIPCFG_BINTERVAL_Pos 24 +#define UOTGHS_HSTPIPCFG_BINTERVAL_Msk (0xffu << UOTGHS_HSTPIPCFG_BINTERVAL_Pos) /**< \brief (UOTGHS_HSTPIPCFG[10]) bInterval parameter for the Bulk-Out/Ping transaction */ +#define UOTGHS_HSTPIPCFG_BINTERVAL(value) ((UOTGHS_HSTPIPCFG_BINTERVAL_Msk & ((value) << UOTGHS_HSTPIPCFG_BINTERVAL_Pos))) +/* -------- UOTGHS_HSTPIPISR[10] : (UOTGHS Offset: 0x530) Host Pipe Status Register (n = 0) -------- */ +#define UOTGHS_HSTPIPISR_RXINI (0x1u << 0) /**< \brief (UOTGHS_HSTPIPISR[10]) Received IN Data Interrupt */ +#define UOTGHS_HSTPIPISR_TXOUTI (0x1u << 1) /**< \brief (UOTGHS_HSTPIPISR[10]) Transmitted OUT Data Interrupt */ +#define UOTGHS_HSTPIPISR_TXSTPI (0x1u << 2) /**< \brief (UOTGHS_HSTPIPISR[10]) Transmitted SETUP Interrupt */ +#define UOTGHS_HSTPIPISR_UNDERFI (0x1u << 2) /**< \brief (UOTGHS_HSTPIPISR[10]) Underflow Interrupt */ +#define UOTGHS_HSTPIPISR_PERRI (0x1u << 3) /**< \brief (UOTGHS_HSTPIPISR[10]) Pipe Error Interrupt */ +#define UOTGHS_HSTPIPISR_NAKEDI (0x1u << 4) /**< \brief (UOTGHS_HSTPIPISR[10]) NAKed Interrupt */ +#define UOTGHS_HSTPIPISR_OVERFI (0x1u << 5) /**< \brief (UOTGHS_HSTPIPISR[10]) Overflow Interrupt */ +#define UOTGHS_HSTPIPISR_RXSTALLDI (0x1u << 6) /**< \brief (UOTGHS_HSTPIPISR[10]) Received STALLed Interrupt */ +#define UOTGHS_HSTPIPISR_CRCERRI (0x1u << 6) /**< \brief (UOTGHS_HSTPIPISR[10]) CRC Error Interrupt */ +#define UOTGHS_HSTPIPISR_SHORTPACKETI (0x1u << 7) /**< \brief (UOTGHS_HSTPIPISR[10]) Short Packet Interrupt */ +#define UOTGHS_HSTPIPISR_DTSEQ_Pos 8 +#define UOTGHS_HSTPIPISR_DTSEQ_Msk (0x3u << UOTGHS_HSTPIPISR_DTSEQ_Pos) /**< \brief (UOTGHS_HSTPIPISR[10]) Data Toggle Sequence */ +#define UOTGHS_HSTPIPISR_DTSEQ_DATA0 (0x0u << 8) /**< \brief (UOTGHS_HSTPIPISR[10]) Data0 toggle sequence */ +#define UOTGHS_HSTPIPISR_DTSEQ_DATA1 (0x1u << 8) /**< \brief (UOTGHS_HSTPIPISR[10]) Data1 toggle sequence */ +#define UOTGHS_HSTPIPISR_NBUSYBK_Pos 12 +#define UOTGHS_HSTPIPISR_NBUSYBK_Msk (0x3u << UOTGHS_HSTPIPISR_NBUSYBK_Pos) /**< \brief (UOTGHS_HSTPIPISR[10]) Number of Busy Banks */ +#define UOTGHS_HSTPIPISR_NBUSYBK_0_BUSY (0x0u << 12) /**< \brief (UOTGHS_HSTPIPISR[10]) 0 busy bank (all banks free) */ +#define UOTGHS_HSTPIPISR_NBUSYBK_1_BUSY (0x1u << 12) /**< \brief (UOTGHS_HSTPIPISR[10]) 1 busy bank */ +#define UOTGHS_HSTPIPISR_NBUSYBK_2_BUSY (0x2u << 12) /**< \brief (UOTGHS_HSTPIPISR[10]) 2 busy banks */ +#define UOTGHS_HSTPIPISR_NBUSYBK_3_BUSY (0x3u << 12) /**< \brief (UOTGHS_HSTPIPISR[10]) 3 busy banks */ +#define UOTGHS_HSTPIPISR_CURRBK_Pos 14 +#define UOTGHS_HSTPIPISR_CURRBK_Msk (0x3u << UOTGHS_HSTPIPISR_CURRBK_Pos) /**< \brief (UOTGHS_HSTPIPISR[10]) Current Bank */ +#define UOTGHS_HSTPIPISR_CURRBK_BANK0 (0x0u << 14) /**< \brief (UOTGHS_HSTPIPISR[10]) Current bank is bank0 */ +#define UOTGHS_HSTPIPISR_CURRBK_BANK1 (0x1u << 14) /**< \brief (UOTGHS_HSTPIPISR[10]) Current bank is bank1 */ +#define UOTGHS_HSTPIPISR_CURRBK_BANK2 (0x2u << 14) /**< \brief (UOTGHS_HSTPIPISR[10]) Current bank is bank2 */ +#define UOTGHS_HSTPIPISR_RWALL (0x1u << 16) /**< \brief (UOTGHS_HSTPIPISR[10]) Read-write Allowed */ +#define UOTGHS_HSTPIPISR_CFGOK (0x1u << 18) /**< \brief (UOTGHS_HSTPIPISR[10]) Configuration OK Status */ +#define UOTGHS_HSTPIPISR_PBYCT_Pos 20 +#define UOTGHS_HSTPIPISR_PBYCT_Msk (0x7ffu << UOTGHS_HSTPIPISR_PBYCT_Pos) /**< \brief (UOTGHS_HSTPIPISR[10]) Pipe Byte Count */ +/* -------- UOTGHS_HSTPIPICR[10] : (UOTGHS Offset: 0x560) Host Pipe Clear Register (n = 0) -------- */ +#define UOTGHS_HSTPIPICR_RXINIC (0x1u << 0) /**< \brief (UOTGHS_HSTPIPICR[10]) Received IN Data Interrupt Clear */ +#define UOTGHS_HSTPIPICR_TXOUTIC (0x1u << 1) /**< \brief (UOTGHS_HSTPIPICR[10]) Transmitted OUT Data Interrupt Clear */ +#define UOTGHS_HSTPIPICR_TXSTPIC (0x1u << 2) /**< \brief (UOTGHS_HSTPIPICR[10]) Transmitted SETUP Interrupt Clear */ +#define UOTGHS_HSTPIPICR_UNDERFIC (0x1u << 2) /**< \brief (UOTGHS_HSTPIPICR[10]) Underflow Interrupt Clear */ +#define UOTGHS_HSTPIPICR_NAKEDIC (0x1u << 4) /**< \brief (UOTGHS_HSTPIPICR[10]) NAKed Interrupt Clear */ +#define UOTGHS_HSTPIPICR_OVERFIC (0x1u << 5) /**< \brief (UOTGHS_HSTPIPICR[10]) Overflow Interrupt Clear */ +#define UOTGHS_HSTPIPICR_RXSTALLDIC (0x1u << 6) /**< \brief (UOTGHS_HSTPIPICR[10]) Received STALLed Interrupt Clear */ +#define UOTGHS_HSTPIPICR_CRCERRIC (0x1u << 6) /**< \brief (UOTGHS_HSTPIPICR[10]) CRC Error Interrupt Clear */ +#define UOTGHS_HSTPIPICR_SHORTPACKETIC (0x1u << 7) /**< \brief (UOTGHS_HSTPIPICR[10]) Short Packet Interrupt Clear */ +/* -------- UOTGHS_HSTPIPIFR[10] : (UOTGHS Offset: 0x590) Host Pipe Set Register (n = 0) -------- */ +#define UOTGHS_HSTPIPIFR_RXINIS (0x1u << 0) /**< \brief (UOTGHS_HSTPIPIFR[10]) Received IN Data Interrupt Set */ +#define UOTGHS_HSTPIPIFR_TXOUTIS (0x1u << 1) /**< \brief (UOTGHS_HSTPIPIFR[10]) Transmitted OUT Data Interrupt Set */ +#define UOTGHS_HSTPIPIFR_TXSTPIS (0x1u << 2) /**< \brief (UOTGHS_HSTPIPIFR[10]) Transmitted SETUP Interrupt Set */ +#define UOTGHS_HSTPIPIFR_UNDERFIS (0x1u << 2) /**< \brief (UOTGHS_HSTPIPIFR[10]) Underflow Interrupt Set */ +#define UOTGHS_HSTPIPIFR_PERRIS (0x1u << 3) /**< \brief (UOTGHS_HSTPIPIFR[10]) Pipe Error Interrupt Set */ +#define UOTGHS_HSTPIPIFR_NAKEDIS (0x1u << 4) /**< \brief (UOTGHS_HSTPIPIFR[10]) NAKed Interrupt Set */ +#define UOTGHS_HSTPIPIFR_OVERFIS (0x1u << 5) /**< \brief (UOTGHS_HSTPIPIFR[10]) Overflow Interrupt Set */ +#define UOTGHS_HSTPIPIFR_RXSTALLDIS (0x1u << 6) /**< \brief (UOTGHS_HSTPIPIFR[10]) Received STALLed Interrupt Set */ +#define UOTGHS_HSTPIPIFR_CRCERRIS (0x1u << 6) /**< \brief (UOTGHS_HSTPIPIFR[10]) CRC Error Interrupt Set */ +#define UOTGHS_HSTPIPIFR_SHORTPACKETIS (0x1u << 7) /**< \brief (UOTGHS_HSTPIPIFR[10]) Short Packet Interrupt Set */ +#define UOTGHS_HSTPIPIFR_NBUSYBKS (0x1u << 12) /**< \brief (UOTGHS_HSTPIPIFR[10]) Number of Busy Banks Set */ +/* -------- UOTGHS_HSTPIPIMR[10] : (UOTGHS Offset: 0x5C0) Host Pipe Mask Register (n = 0) -------- */ +#define UOTGHS_HSTPIPIMR_RXINE (0x1u << 0) /**< \brief (UOTGHS_HSTPIPIMR[10]) Received IN Data Interrupt Enable */ +#define UOTGHS_HSTPIPIMR_TXOUTE (0x1u << 1) /**< \brief (UOTGHS_HSTPIPIMR[10]) Transmitted OUT Data Interrupt Enable */ +#define UOTGHS_HSTPIPIMR_TXSTPE (0x1u << 2) /**< \brief (UOTGHS_HSTPIPIMR[10]) Transmitted SETUP Interrupt Enable */ +#define UOTGHS_HSTPIPIMR_UNDERFIE (0x1u << 2) /**< \brief (UOTGHS_HSTPIPIMR[10]) Underflow Interrupt Enable */ +#define UOTGHS_HSTPIPIMR_PERRE (0x1u << 3) /**< \brief (UOTGHS_HSTPIPIMR[10]) Pipe Error Interrupt Enable */ +#define UOTGHS_HSTPIPIMR_NAKEDE (0x1u << 4) /**< \brief (UOTGHS_HSTPIPIMR[10]) NAKed Interrupt Enable */ +#define UOTGHS_HSTPIPIMR_OVERFIE (0x1u << 5) /**< \brief (UOTGHS_HSTPIPIMR[10]) Overflow Interrupt Enable */ +#define UOTGHS_HSTPIPIMR_RXSTALLDE (0x1u << 6) /**< \brief (UOTGHS_HSTPIPIMR[10]) Received STALLed Interrupt Enable */ +#define UOTGHS_HSTPIPIMR_CRCERRE (0x1u << 6) /**< \brief (UOTGHS_HSTPIPIMR[10]) CRC Error Interrupt Enable */ +#define UOTGHS_HSTPIPIMR_SHORTPACKETIE (0x1u << 7) /**< \brief (UOTGHS_HSTPIPIMR[10]) Short Packet Interrupt Enable */ +#define UOTGHS_HSTPIPIMR_NBUSYBKE (0x1u << 12) /**< \brief (UOTGHS_HSTPIPIMR[10]) Number of Busy Banks Interrupt Enable */ +#define UOTGHS_HSTPIPIMR_FIFOCON (0x1u << 14) /**< \brief (UOTGHS_HSTPIPIMR[10]) FIFO Control */ +#define UOTGHS_HSTPIPIMR_PDISHDMA (0x1u << 16) /**< \brief (UOTGHS_HSTPIPIMR[10]) Pipe Interrupts Disable HDMA Request Enable */ +#define UOTGHS_HSTPIPIMR_PFREEZE (0x1u << 17) /**< \brief (UOTGHS_HSTPIPIMR[10]) Pipe Freeze */ +#define UOTGHS_HSTPIPIMR_RSTDT (0x1u << 18) /**< \brief (UOTGHS_HSTPIPIMR[10]) Reset Data Toggle */ +/* -------- UOTGHS_HSTPIPIER[10] : (UOTGHS Offset: 0x5F0) Host Pipe Enable Register (n = 0) -------- */ +#define UOTGHS_HSTPIPIER_RXINES (0x1u << 0) /**< \brief (UOTGHS_HSTPIPIER[10]) Received IN Data Interrupt Enable */ +#define UOTGHS_HSTPIPIER_TXOUTES (0x1u << 1) /**< \brief (UOTGHS_HSTPIPIER[10]) Transmitted OUT Data Interrupt Enable */ +#define UOTGHS_HSTPIPIER_TXSTPES (0x1u << 2) /**< \brief (UOTGHS_HSTPIPIER[10]) Transmitted SETUP Interrupt Enable */ +#define UOTGHS_HSTPIPIER_UNDERFIES (0x1u << 2) /**< \brief (UOTGHS_HSTPIPIER[10]) Underflow Interrupt Enable */ +#define UOTGHS_HSTPIPIER_PERRES (0x1u << 3) /**< \brief (UOTGHS_HSTPIPIER[10]) Pipe Error Interrupt Enable */ +#define UOTGHS_HSTPIPIER_NAKEDES (0x1u << 4) /**< \brief (UOTGHS_HSTPIPIER[10]) NAKed Interrupt Enable */ +#define UOTGHS_HSTPIPIER_OVERFIES (0x1u << 5) /**< \brief (UOTGHS_HSTPIPIER[10]) Overflow Interrupt Enable */ +#define UOTGHS_HSTPIPIER_RXSTALLDES (0x1u << 6) /**< \brief (UOTGHS_HSTPIPIER[10]) Received STALLed Interrupt Enable */ +#define UOTGHS_HSTPIPIER_CRCERRES (0x1u << 6) /**< \brief (UOTGHS_HSTPIPIER[10]) CRC Error Interrupt Enable */ +#define UOTGHS_HSTPIPIER_SHORTPACKETIES (0x1u << 7) /**< \brief (UOTGHS_HSTPIPIER[10]) Short Packet Interrupt Enable */ +#define UOTGHS_HSTPIPIER_NBUSYBKES (0x1u << 12) /**< \brief (UOTGHS_HSTPIPIER[10]) Number of Busy Banks Enable */ +#define UOTGHS_HSTPIPIER_PDISHDMAS (0x1u << 16) /**< \brief (UOTGHS_HSTPIPIER[10]) Pipe Interrupts Disable HDMA Request Enable */ +#define UOTGHS_HSTPIPIER_PFREEZES (0x1u << 17) /**< \brief (UOTGHS_HSTPIPIER[10]) Pipe Freeze Enable */ +#define UOTGHS_HSTPIPIER_RSTDTS (0x1u << 18) /**< \brief (UOTGHS_HSTPIPIER[10]) Reset Data Toggle Enable */ +/* -------- UOTGHS_HSTPIPIDR[10] : (UOTGHS Offset: 0x620) Host Pipe Disable Register (n = 0) -------- */ +#define UOTGHS_HSTPIPIDR_RXINEC (0x1u << 0) /**< \brief (UOTGHS_HSTPIPIDR[10]) Received IN Data Interrupt Disable */ +#define UOTGHS_HSTPIPIDR_TXOUTEC (0x1u << 1) /**< \brief (UOTGHS_HSTPIPIDR[10]) Transmitted OUT Data Interrupt Disable */ +#define UOTGHS_HSTPIPIDR_TXSTPEC (0x1u << 2) /**< \brief (UOTGHS_HSTPIPIDR[10]) Transmitted SETUP Interrupt Disable */ +#define UOTGHS_HSTPIPIDR_UNDERFIEC (0x1u << 2) /**< \brief (UOTGHS_HSTPIPIDR[10]) Underflow Interrupt Disable */ +#define UOTGHS_HSTPIPIDR_PERREC (0x1u << 3) /**< \brief (UOTGHS_HSTPIPIDR[10]) Pipe Error Interrupt Disable */ +#define UOTGHS_HSTPIPIDR_NAKEDEC (0x1u << 4) /**< \brief (UOTGHS_HSTPIPIDR[10]) NAKed Interrupt Disable */ +#define UOTGHS_HSTPIPIDR_OVERFIEC (0x1u << 5) /**< \brief (UOTGHS_HSTPIPIDR[10]) Overflow Interrupt Disable */ +#define UOTGHS_HSTPIPIDR_RXSTALLDEC (0x1u << 6) /**< \brief (UOTGHS_HSTPIPIDR[10]) Received STALLed Interrupt Disable */ +#define UOTGHS_HSTPIPIDR_CRCERREC (0x1u << 6) /**< \brief (UOTGHS_HSTPIPIDR[10]) CRC Error Interrupt Disable */ +#define UOTGHS_HSTPIPIDR_SHORTPACKETIEC (0x1u << 7) /**< \brief (UOTGHS_HSTPIPIDR[10]) Short Packet Interrupt Disable */ +#define UOTGHS_HSTPIPIDR_NBUSYBKEC (0x1u << 12) /**< \brief (UOTGHS_HSTPIPIDR[10]) Number of Busy Banks Disable */ +#define UOTGHS_HSTPIPIDR_FIFOCONC (0x1u << 14) /**< \brief (UOTGHS_HSTPIPIDR[10]) FIFO Control Disable */ +#define UOTGHS_HSTPIPIDR_PDISHDMAC (0x1u << 16) /**< \brief (UOTGHS_HSTPIPIDR[10]) Pipe Interrupts Disable HDMA Request Disable */ +#define UOTGHS_HSTPIPIDR_PFREEZEC (0x1u << 17) /**< \brief (UOTGHS_HSTPIPIDR[10]) Pipe Freeze Disable */ +/* -------- UOTGHS_HSTPIPINRQ[10] : (UOTGHS Offset: 0x650) Host Pipe IN Request Register (n = 0) -------- */ +#define UOTGHS_HSTPIPINRQ_INRQ_Pos 0 +#define UOTGHS_HSTPIPINRQ_INRQ_Msk (0xffu << UOTGHS_HSTPIPINRQ_INRQ_Pos) /**< \brief (UOTGHS_HSTPIPINRQ[10]) IN Request Number before Freeze */ +#define UOTGHS_HSTPIPINRQ_INRQ(value) ((UOTGHS_HSTPIPINRQ_INRQ_Msk & ((value) << UOTGHS_HSTPIPINRQ_INRQ_Pos))) +#define UOTGHS_HSTPIPINRQ_INMODE (0x1u << 8) /**< \brief (UOTGHS_HSTPIPINRQ[10]) IN Request Mode */ +/* -------- UOTGHS_HSTPIPERR[10] : (UOTGHS Offset: 0x680) Host Pipe Error Register (n = 0) -------- */ +#define UOTGHS_HSTPIPERR_DATATGL (0x1u << 0) /**< \brief (UOTGHS_HSTPIPERR[10]) Data Toggle Error */ +#define UOTGHS_HSTPIPERR_DATAPID (0x1u << 1) /**< \brief (UOTGHS_HSTPIPERR[10]) Data PID Error */ +#define UOTGHS_HSTPIPERR_PID (0x1u << 2) /**< \brief (UOTGHS_HSTPIPERR[10]) PID Error */ +#define UOTGHS_HSTPIPERR_TIMEOUT (0x1u << 3) /**< \brief (UOTGHS_HSTPIPERR[10]) Time-Out Error */ +#define UOTGHS_HSTPIPERR_CRC16 (0x1u << 4) /**< \brief (UOTGHS_HSTPIPERR[10]) CRC16 Error */ +#define UOTGHS_HSTPIPERR_COUNTER_Pos 5 +#define UOTGHS_HSTPIPERR_COUNTER_Msk (0x3u << UOTGHS_HSTPIPERR_COUNTER_Pos) /**< \brief (UOTGHS_HSTPIPERR[10]) Error Counter */ +#define UOTGHS_HSTPIPERR_COUNTER(value) ((UOTGHS_HSTPIPERR_COUNTER_Msk & ((value) << UOTGHS_HSTPIPERR_COUNTER_Pos))) +/* -------- UOTGHS_HSTDMANXTDSC : (UOTGHS Offset: N/A) Host DMA Channel Next Descriptor Address Register -------- */ +#define UOTGHS_HSTDMANXTDSC_NXT_DSC_ADD_Pos 0 +#define UOTGHS_HSTDMANXTDSC_NXT_DSC_ADD_Msk (0xffffffffu << UOTGHS_HSTDMANXTDSC_NXT_DSC_ADD_Pos) /**< \brief (UOTGHS_HSTDMANXTDSC) Next Descriptor Address */ +#define UOTGHS_HSTDMANXTDSC_NXT_DSC_ADD(value) ((UOTGHS_HSTDMANXTDSC_NXT_DSC_ADD_Msk & ((value) << UOTGHS_HSTDMANXTDSC_NXT_DSC_ADD_Pos))) +/* -------- UOTGHS_HSTDMAADDRESS : (UOTGHS Offset: N/A) Host DMA Channel Address Register -------- */ +#define UOTGHS_HSTDMAADDRESS_BUFF_ADD_Pos 0 +#define UOTGHS_HSTDMAADDRESS_BUFF_ADD_Msk (0xffffffffu << UOTGHS_HSTDMAADDRESS_BUFF_ADD_Pos) /**< \brief (UOTGHS_HSTDMAADDRESS) Buffer Address */ +#define UOTGHS_HSTDMAADDRESS_BUFF_ADD(value) ((UOTGHS_HSTDMAADDRESS_BUFF_ADD_Msk & ((value) << UOTGHS_HSTDMAADDRESS_BUFF_ADD_Pos))) +/* -------- UOTGHS_HSTDMACONTROL : (UOTGHS Offset: N/A) Host DMA Channel Control Register -------- */ +#define UOTGHS_HSTDMACONTROL_CHANN_ENB (0x1u << 0) /**< \brief (UOTGHS_HSTDMACONTROL) Channel Enable Command */ +#define UOTGHS_HSTDMACONTROL_LDNXT_DSC (0x1u << 1) /**< \brief (UOTGHS_HSTDMACONTROL) Load Next Channel Transfer Descriptor Enable Command */ +#define UOTGHS_HSTDMACONTROL_END_TR_EN (0x1u << 2) /**< \brief (UOTGHS_HSTDMACONTROL) End of Transfer Enable (Control) */ +#define UOTGHS_HSTDMACONTROL_END_B_EN (0x1u << 3) /**< \brief (UOTGHS_HSTDMACONTROL) End of Buffer Enable Control */ +#define UOTGHS_HSTDMACONTROL_END_TR_IT (0x1u << 4) /**< \brief (UOTGHS_HSTDMACONTROL) End of Transfer Interrupt Enable */ +#define UOTGHS_HSTDMACONTROL_END_BUFFIT (0x1u << 5) /**< \brief (UOTGHS_HSTDMACONTROL) End of Buffer Interrupt Enable */ +#define UOTGHS_HSTDMACONTROL_DESC_LD_IT (0x1u << 6) /**< \brief (UOTGHS_HSTDMACONTROL) Descriptor Loaded Interrupt Enable */ +#define UOTGHS_HSTDMACONTROL_BURST_LCK (0x1u << 7) /**< \brief (UOTGHS_HSTDMACONTROL) Burst Lock Enable */ +#define UOTGHS_HSTDMACONTROL_BUFF_LENGTH_Pos 16 +#define UOTGHS_HSTDMACONTROL_BUFF_LENGTH_Msk (0xffffu << UOTGHS_HSTDMACONTROL_BUFF_LENGTH_Pos) /**< \brief (UOTGHS_HSTDMACONTROL) Buffer Byte Length (Write-only) */ +#define UOTGHS_HSTDMACONTROL_BUFF_LENGTH(value) ((UOTGHS_HSTDMACONTROL_BUFF_LENGTH_Msk & ((value) << UOTGHS_HSTDMACONTROL_BUFF_LENGTH_Pos))) +/* -------- UOTGHS_HSTDMASTATUS : (UOTGHS Offset: N/A) Host DMA Channel Status Register -------- */ +#define UOTGHS_HSTDMASTATUS_CHANN_ENB (0x1u << 0) /**< \brief (UOTGHS_HSTDMASTATUS) Channel Enable Status */ +#define UOTGHS_HSTDMASTATUS_CHANN_ACT (0x1u << 1) /**< \brief (UOTGHS_HSTDMASTATUS) Channel Active Status */ +#define UOTGHS_HSTDMASTATUS_END_TR_ST (0x1u << 4) /**< \brief (UOTGHS_HSTDMASTATUS) End of Channel Transfer Status */ +#define UOTGHS_HSTDMASTATUS_END_BF_ST (0x1u << 5) /**< \brief (UOTGHS_HSTDMASTATUS) End of Channel Buffer Status */ +#define UOTGHS_HSTDMASTATUS_DESC_LDST (0x1u << 6) /**< \brief (UOTGHS_HSTDMASTATUS) Descriptor Loaded Status */ +#define UOTGHS_HSTDMASTATUS_BUFF_COUNT_Pos 16 +#define UOTGHS_HSTDMASTATUS_BUFF_COUNT_Msk (0xffffu << UOTGHS_HSTDMASTATUS_BUFF_COUNT_Pos) /**< \brief (UOTGHS_HSTDMASTATUS) Buffer Byte Count */ +#define UOTGHS_HSTDMASTATUS_BUFF_COUNT(value) ((UOTGHS_HSTDMASTATUS_BUFF_COUNT_Msk & ((value) << UOTGHS_HSTDMASTATUS_BUFF_COUNT_Pos))) +/* -------- UOTGHS_CTRL : (UOTGHS Offset: 0x0800) General Control Register -------- */ +#define UOTGHS_CTRL_IDTE (0x1u << 0) /**< \brief (UOTGHS_CTRL) ID Transition Interrupt Enable */ +#define UOTGHS_CTRL_VBUSTE (0x1u << 1) /**< \brief (UOTGHS_CTRL) VBus Transition Interrupt Enable */ +#define UOTGHS_CTRL_SRPE (0x1u << 2) /**< \brief (UOTGHS_CTRL) SRP Interrupt Enable */ +#define UOTGHS_CTRL_VBERRE (0x1u << 3) /**< \brief (UOTGHS_CTRL) VBus Error Interrupt Enable */ +#define UOTGHS_CTRL_BCERRE (0x1u << 4) /**< \brief (UOTGHS_CTRL) B-Connection Error Interrupt Enable */ +#define UOTGHS_CTRL_ROLEEXE (0x1u << 5) /**< \brief (UOTGHS_CTRL) Role Exchange Interrupt Enable */ +#define UOTGHS_CTRL_HNPERRE (0x1u << 6) /**< \brief (UOTGHS_CTRL) HNP Error Interrupt Enable */ +#define UOTGHS_CTRL_STOE (0x1u << 7) /**< \brief (UOTGHS_CTRL) Suspend Time-Out Interrupt Enable */ +#define UOTGHS_CTRL_VBUSHWC (0x1u << 8) /**< \brief (UOTGHS_CTRL) VBus Hardware Control */ +#define UOTGHS_CTRL_SRPSEL (0x1u << 9) /**< \brief (UOTGHS_CTRL) SRP Selection */ +#define UOTGHS_CTRL_SRPREQ (0x1u << 10) /**< \brief (UOTGHS_CTRL) SRP Request */ +#define UOTGHS_CTRL_HNPREQ (0x1u << 11) /**< \brief (UOTGHS_CTRL) HNP Request */ +#define UOTGHS_CTRL_OTGPADE (0x1u << 12) /**< \brief (UOTGHS_CTRL) OTG Pad Enable */ +#define UOTGHS_CTRL_VBUSPO (0x1u << 13) /**< \brief (UOTGHS_CTRL) VBus Polarity Off */ +#define UOTGHS_CTRL_FRZCLK (0x1u << 14) /**< \brief (UOTGHS_CTRL) Freeze USB Clock */ +#define UOTGHS_CTRL_USBE (0x1u << 15) /**< \brief (UOTGHS_CTRL) UOTGHS Enable */ +#define UOTGHS_CTRL_TIMVALUE_Pos 16 +#define UOTGHS_CTRL_TIMVALUE_Msk (0x3u << UOTGHS_CTRL_TIMVALUE_Pos) /**< \brief (UOTGHS_CTRL) Timer Value */ +#define UOTGHS_CTRL_TIMVALUE(value) ((UOTGHS_CTRL_TIMVALUE_Msk & ((value) << UOTGHS_CTRL_TIMVALUE_Pos))) +#define UOTGHS_CTRL_TIMPAGE_Pos 20 +#define UOTGHS_CTRL_TIMPAGE_Msk (0x3u << UOTGHS_CTRL_TIMPAGE_Pos) /**< \brief (UOTGHS_CTRL) Timer Page */ +#define UOTGHS_CTRL_TIMPAGE(value) ((UOTGHS_CTRL_TIMPAGE_Msk & ((value) << UOTGHS_CTRL_TIMPAGE_Pos))) +#define UOTGHS_CTRL_UNLOCK (0x1u << 22) /**< \brief (UOTGHS_CTRL) Timer Access Unlock */ +#define UOTGHS_CTRL_UIDE (0x1u << 24) /**< \brief (UOTGHS_CTRL) UOTGID Pin Enable */ +#define UOTGHS_CTRL_UIDE_UIMOD (0x0u << 24) /**< \brief (UOTGHS_CTRL) The USB mode (device/host) is selected from the UIMOD bit. */ +#define UOTGHS_CTRL_UIDE_UOTGID (0x1u << 24) /**< \brief (UOTGHS_CTRL) The USB mode (device/host) is selected from the UOTGID input pin. */ +#define UOTGHS_CTRL_UIMOD (0x1u << 25) /**< \brief (UOTGHS_CTRL) UOTGHS Mode */ +#define UOTGHS_CTRL_UIMOD_Host (0x0u << 25) /**< \brief (UOTGHS_CTRL) The module is in USB host mode. */ +#define UOTGHS_CTRL_UIMOD_Device (0x1u << 25) /**< \brief (UOTGHS_CTRL) The module is in USB device mode. */ +/* -------- UOTGHS_SR : (UOTGHS Offset: 0x0804) General Status Register -------- */ +#define UOTGHS_SR_IDTI (0x1u << 0) /**< \brief (UOTGHS_SR) ID Transition Interrupt */ +#define UOTGHS_SR_VBUSTI (0x1u << 1) /**< \brief (UOTGHS_SR) VBus Transition Interrupt */ +#define UOTGHS_SR_SRPI (0x1u << 2) /**< \brief (UOTGHS_SR) SRP Interrupt */ +#define UOTGHS_SR_VBERRI (0x1u << 3) /**< \brief (UOTGHS_SR) VBus Error Interrupt */ +#define UOTGHS_SR_BCERRI (0x1u << 4) /**< \brief (UOTGHS_SR) B-Connection Error Interrupt */ +#define UOTGHS_SR_ROLEEXI (0x1u << 5) /**< \brief (UOTGHS_SR) Role Exchange Interrupt */ +#define UOTGHS_SR_HNPERRI (0x1u << 6) /**< \brief (UOTGHS_SR) HNP Error Interrupt */ +#define UOTGHS_SR_STOI (0x1u << 7) /**< \brief (UOTGHS_SR) Suspend Time-Out Interrupt */ +#define UOTGHS_SR_VBUSRQ (0x1u << 9) /**< \brief (UOTGHS_SR) VBus Request */ +#define UOTGHS_SR_ID (0x1u << 10) /**< \brief (UOTGHS_SR) UOTGID Pin State */ +#define UOTGHS_SR_VBUS (0x1u << 11) /**< \brief (UOTGHS_SR) VBus Level */ +#define UOTGHS_SR_SPEED_Pos 12 +#define UOTGHS_SR_SPEED_Msk (0x3u << UOTGHS_SR_SPEED_Pos) /**< \brief (UOTGHS_SR) Speed Status */ +#define UOTGHS_SR_SPEED_FULL_SPEED (0x0u << 12) /**< \brief (UOTGHS_SR) Full-Speed mode */ +#define UOTGHS_SR_SPEED_HIGH_SPEED (0x1u << 12) /**< \brief (UOTGHS_SR) High-Speed mode */ +#define UOTGHS_SR_SPEED_LOW_SPEED (0x2u << 12) /**< \brief (UOTGHS_SR) Low-Speed mode */ +#define UOTGHS_SR_CLKUSABLE (0x1u << 14) /**< \brief (UOTGHS_SR) UTMI Clock Usable */ +/* -------- UOTGHS_SCR : (UOTGHS Offset: 0x0808) General Status Clear Register -------- */ +#define UOTGHS_SCR_IDTIC (0x1u << 0) /**< \brief (UOTGHS_SCR) ID Transition Interrupt Clear */ +#define UOTGHS_SCR_VBUSTIC (0x1u << 1) /**< \brief (UOTGHS_SCR) VBus Transition Interrupt Clear */ +#define UOTGHS_SCR_SRPIC (0x1u << 2) /**< \brief (UOTGHS_SCR) SRP Interrupt Clear */ +#define UOTGHS_SCR_VBERRIC (0x1u << 3) /**< \brief (UOTGHS_SCR) VBus Error Interrupt Clear */ +#define UOTGHS_SCR_BCERRIC (0x1u << 4) /**< \brief (UOTGHS_SCR) B-Connection Error Interrupt Clear */ +#define UOTGHS_SCR_ROLEEXIC (0x1u << 5) /**< \brief (UOTGHS_SCR) Role Exchange Interrupt Clear */ +#define UOTGHS_SCR_HNPERRIC (0x1u << 6) /**< \brief (UOTGHS_SCR) HNP Error Interrupt Clear */ +#define UOTGHS_SCR_STOIC (0x1u << 7) /**< \brief (UOTGHS_SCR) Suspend Time-Out Interrupt Clear */ +#define UOTGHS_SCR_VBUSRQC (0x1u << 9) /**< \brief (UOTGHS_SCR) VBus Request Clear */ +/* -------- UOTGHS_SFR : (UOTGHS Offset: 0x080C) General Status Set Register -------- */ +#define UOTGHS_SFR_IDTIS (0x1u << 0) /**< \brief (UOTGHS_SFR) ID Transition Interrupt Set */ +#define UOTGHS_SFR_VBUSTIS (0x1u << 1) /**< \brief (UOTGHS_SFR) VBus Transition Interrupt Set */ +#define UOTGHS_SFR_SRPIS (0x1u << 2) /**< \brief (UOTGHS_SFR) SRP Interrupt Set */ +#define UOTGHS_SFR_VBERRIS (0x1u << 3) /**< \brief (UOTGHS_SFR) VBus Error Interrupt Set */ +#define UOTGHS_SFR_BCERRIS (0x1u << 4) /**< \brief (UOTGHS_SFR) B-Connection Error Interrupt Set */ +#define UOTGHS_SFR_ROLEEXIS (0x1u << 5) /**< \brief (UOTGHS_SFR) Role Exchange Interrupt Set */ +#define UOTGHS_SFR_HNPERRIS (0x1u << 6) /**< \brief (UOTGHS_SFR) HNP Error Interrupt Set */ +#define UOTGHS_SFR_STOIS (0x1u << 7) /**< \brief (UOTGHS_SFR) Suspend Time-Out Interrupt Set */ +#define UOTGHS_SFR_VBUSRQS (0x1u << 9) /**< \brief (UOTGHS_SFR) VBus Request Set */ +/* -------- UOTGHS_FSM : (UOTGHS Offset: 0x082C) General Finite State Machine Register -------- */ +#define UOTGHS_FSM_DRDSTATE_Pos 0 +#define UOTGHS_FSM_DRDSTATE_Msk (0xfu << UOTGHS_FSM_DRDSTATE_Pos) /**< \brief (UOTGHS_FSM) */ +#define UOTGHS_FSM_DRDSTATE_A_IDLESTATE (0x0u << 0) /**< \brief (UOTGHS_FSM) This is the start state for A-devices (when the ID pin is 0) */ +#define UOTGHS_FSM_DRDSTATE_A_WAIT_VRISE (0x1u << 0) /**< \brief (UOTGHS_FSM) In this state, the A-device waits for the voltage on VBus to rise above the A-device VBus Valid threshold (4.4 V). */ +#define UOTGHS_FSM_DRDSTATE_A_WAIT_BCON (0x2u << 0) /**< \brief (UOTGHS_FSM) In this state, the A-device waits for the B-device to signal a connection. */ +#define UOTGHS_FSM_DRDSTATE_A_HOST (0x3u << 0) /**< \brief (UOTGHS_FSM) In this state, the A-device that operates in Host mode is operational. */ +#define UOTGHS_FSM_DRDSTATE_A_SUSPEND (0x4u << 0) /**< \brief (UOTGHS_FSM) The A-device operating as a host is in the suspend mode. */ +#define UOTGHS_FSM_DRDSTATE_A_PERIPHERAL (0x5u << 0) /**< \brief (UOTGHS_FSM) The A-device operates as a peripheral. */ +#define UOTGHS_FSM_DRDSTATE_A_WAIT_VFALL (0x6u << 0) /**< \brief (UOTGHS_FSM) In this state, the A-device waits for the voltage on VBus to drop below the A-device Session Valid threshold (1.4 V). */ +#define UOTGHS_FSM_DRDSTATE_A_VBUS_ERR (0x7u << 0) /**< \brief (UOTGHS_FSM) In this state, the A-device waits for recovery of the over-current condition that caused it to enter this state. */ +#define UOTGHS_FSM_DRDSTATE_A_WAIT_DISCHARGE (0x8u << 0) /**< \brief (UOTGHS_FSM) In this state, the A-device waits for the data USB line to discharge (100 us). */ +#define UOTGHS_FSM_DRDSTATE_B_IDLE (0x9u << 0) /**< \brief (UOTGHS_FSM) This is the start state for B-device (when the ID pin is 1). */ +#define UOTGHS_FSM_DRDSTATE_B_PERIPHERAL (0xAu << 0) /**< \brief (UOTGHS_FSM) In this state, the B-device acts as the peripheral. */ +#define UOTGHS_FSM_DRDSTATE_B_WAIT_BEGIN_HNP (0xBu << 0) /**< \brief (UOTGHS_FSM) In this state, the B-device is in suspend mode and waits until 3 ms before initiating the HNP protocol if requested. */ +#define UOTGHS_FSM_DRDSTATE_B_WAIT_DISCHARGE (0xCu << 0) /**< \brief (UOTGHS_FSM) In this state, the B-device waits for the data USB line to discharge (100 us) before becoming Host. */ +#define UOTGHS_FSM_DRDSTATE_B_WAIT_ACON (0xDu << 0) /**< \brief (UOTGHS_FSM) In this state, the B-device waits for the A-device to signal a connect before becoming B-Host. */ +#define UOTGHS_FSM_DRDSTATE_B_HOST (0xEu << 0) /**< \brief (UOTGHS_FSM) In this state, the B-device acts as the Host. */ +#define UOTGHS_FSM_DRDSTATE_B_SRP_INIT (0xFu << 0) /**< \brief (UOTGHS_FSM) In this state, the B-device attempts to start a session using the SRP protocol. */ + +/*@}*/ + + +#endif /* _SAM3XA_UOTGHS_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_usart.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_usart.h new file mode 100644 index 000000000..4e9ad8e8e --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_usart.h @@ -0,0 +1,396 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_USART_COMPONENT_ +#define _SAM3XA_USART_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Universal Synchronous Asynchronous Receiver Transmitter */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_USART Universal Synchronous Asynchronous Receiver Transmitter */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Usart hardware registers */ +typedef struct { + WoReg US_CR; /**< \brief (Usart Offset: 0x0000) Control Register */ + RwReg US_MR; /**< \brief (Usart Offset: 0x0004) Mode Register */ + WoReg US_IER; /**< \brief (Usart Offset: 0x0008) Interrupt Enable Register */ + WoReg US_IDR; /**< \brief (Usart Offset: 0x000C) Interrupt Disable Register */ + RoReg US_IMR; /**< \brief (Usart Offset: 0x0010) Interrupt Mask Register */ + RoReg US_CSR; /**< \brief (Usart Offset: 0x0014) Channel Status Register */ + RoReg US_RHR; /**< \brief (Usart Offset: 0x0018) Receiver Holding Register */ + WoReg US_THR; /**< \brief (Usart Offset: 0x001C) Transmitter Holding Register */ + RwReg US_BRGR; /**< \brief (Usart Offset: 0x0020) Baud Rate Generator Register */ + RwReg US_RTOR; /**< \brief (Usart Offset: 0x0024) Receiver Time-out Register */ + RwReg US_TTGR; /**< \brief (Usart Offset: 0x0028) Transmitter Timeguard Register */ + RoReg Reserved1[5]; + RwReg US_FIDI; /**< \brief (Usart Offset: 0x0040) FI DI Ratio Register */ + RoReg US_NER; /**< \brief (Usart Offset: 0x0044) Number of Errors Register */ + RoReg Reserved2[1]; + RwReg US_IF; /**< \brief (Usart Offset: 0x004C) IrDA Filter Register */ + RwReg US_MAN; /**< \brief (Usart Offset: 0x0050) Manchester Encoder Decoder Register */ + RwReg US_LINMR; /**< \brief (Usart Offset: 0x0054) LIN Mode Register */ + RwReg US_LINIR; /**< \brief (Usart Offset: 0x0058) LIN Identifier Register */ + RoReg Reserved3[34]; + RwReg US_WPMR; /**< \brief (Usart Offset: 0xE4) Write Protect Mode Register */ + RoReg US_WPSR; /**< \brief (Usart Offset: 0xE8) Write Protect Status Register */ + RoReg Reserved4[5]; + RwReg US_RPR; /**< \brief (Usart Offset: 0x100) Receive Pointer Register */ + RwReg US_RCR; /**< \brief (Usart Offset: 0x104) Receive Counter Register */ + RwReg US_TPR; /**< \brief (Usart Offset: 0x108) Transmit Pointer Register */ + RwReg US_TCR; /**< \brief (Usart Offset: 0x10C) Transmit Counter Register */ + RwReg US_RNPR; /**< \brief (Usart Offset: 0x110) Receive Next Pointer Register */ + RwReg US_RNCR; /**< \brief (Usart Offset: 0x114) Receive Next Counter Register */ + RwReg US_TNPR; /**< \brief (Usart Offset: 0x118) Transmit Next Pointer Register */ + RwReg US_TNCR; /**< \brief (Usart Offset: 0x11C) Transmit Next Counter Register */ + WoReg US_PTCR; /**< \brief (Usart Offset: 0x120) Transfer Control Register */ + RoReg US_PTSR; /**< \brief (Usart Offset: 0x124) Transfer Status Register */ +} Usart; +#endif /* __ASSEMBLY__ */ +/* -------- US_CR : (USART Offset: 0x0000) Control Register -------- */ +#define US_CR_RSTRX (0x1u << 2) /**< \brief (US_CR) Reset Receiver */ +#define US_CR_RSTTX (0x1u << 3) /**< \brief (US_CR) Reset Transmitter */ +#define US_CR_RXEN (0x1u << 4) /**< \brief (US_CR) Receiver Enable */ +#define US_CR_RXDIS (0x1u << 5) /**< \brief (US_CR) Receiver Disable */ +#define US_CR_TXEN (0x1u << 6) /**< \brief (US_CR) Transmitter Enable */ +#define US_CR_TXDIS (0x1u << 7) /**< \brief (US_CR) Transmitter Disable */ +#define US_CR_RSTSTA (0x1u << 8) /**< \brief (US_CR) Reset Status Bits */ +#define US_CR_STTBRK (0x1u << 9) /**< \brief (US_CR) Start Break */ +#define US_CR_STPBRK (0x1u << 10) /**< \brief (US_CR) Stop Break */ +#define US_CR_STTTO (0x1u << 11) /**< \brief (US_CR) Start Time-out */ +#define US_CR_SENDA (0x1u << 12) /**< \brief (US_CR) Send Address */ +#define US_CR_RSTIT (0x1u << 13) /**< \brief (US_CR) Reset Iterations */ +#define US_CR_RSTNACK (0x1u << 14) /**< \brief (US_CR) Reset Non Acknowledge */ +#define US_CR_RETTO (0x1u << 15) /**< \brief (US_CR) Rearm Time-out */ +#define US_CR_RTSEN (0x1u << 18) /**< \brief (US_CR) Request to Send Enable */ +#define US_CR_FCS (0x1u << 18) /**< \brief (US_CR) Force SPI Chip Select */ +#define US_CR_RTSDIS (0x1u << 19) /**< \brief (US_CR) Request to Send Disable */ +#define US_CR_RCS (0x1u << 19) /**< \brief (US_CR) Release SPI Chip Select */ +#define US_CR_LINABT (0x1u << 20) /**< \brief (US_CR) Abort LIN Transmission */ +#define US_CR_LINWKUP (0x1u << 21) /**< \brief (US_CR) Send LIN Wakeup Signal */ +/* -------- US_MR : (USART Offset: 0x0004) Mode Register -------- */ +#define US_MR_USART_MODE_Pos 0 +#define US_MR_USART_MODE_Msk (0xfu << US_MR_USART_MODE_Pos) /**< \brief (US_MR) */ +#define US_MR_USART_MODE_NORMAL (0x0u << 0) /**< \brief (US_MR) Normal mode */ +#define US_MR_USART_MODE_RS485 (0x1u << 0) /**< \brief (US_MR) RS485 */ +#define US_MR_USART_MODE_HW_HANDSHAKING (0x2u << 0) /**< \brief (US_MR) Hardware Handshaking */ +#define US_MR_USART_MODE_IS07816_T_0 (0x4u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 0 */ +#define US_MR_USART_MODE_IS07816_T_1 (0x6u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 1 */ +#define US_MR_USART_MODE_IRDA (0x8u << 0) /**< \brief (US_MR) IrDA */ +#define US_MR_USART_MODE_LIN_MASTER (0xAu << 0) /**< \brief (US_MR) LIN Master */ +#define US_MR_USART_MODE_LIN_SLAVE (0xBu << 0) /**< \brief (US_MR) LIN Slave */ +#define US_MR_USART_MODE_SPI_MASTER (0xEu << 0) /**< \brief (US_MR) SPI Master */ +#define US_MR_USART_MODE_SPI_SLAVE (0xFu << 0) /**< \brief (US_MR) SPI Slave */ +#define US_MR_USCLKS_Pos 4 +#define US_MR_USCLKS_Msk (0x3u << US_MR_USCLKS_Pos) /**< \brief (US_MR) Clock Selection */ +#define US_MR_USCLKS_MCK (0x0u << 4) /**< \brief (US_MR) Master Clock MCK is selected */ +#define US_MR_USCLKS_DIV (0x1u << 4) /**< \brief (US_MR) Internal Clock Divided MCK/DIV (DIV=8) is selected */ +#define US_MR_USCLKS_SCK (0x3u << 4) /**< \brief (US_MR) Serial Clock SLK is selected */ +#define US_MR_CHRL_Pos 6 +#define US_MR_CHRL_Msk (0x3u << US_MR_CHRL_Pos) /**< \brief (US_MR) Character Length. */ +#define US_MR_CHRL_5_BIT (0x0u << 6) /**< \brief (US_MR) Character length is 5 bits */ +#define US_MR_CHRL_6_BIT (0x1u << 6) /**< \brief (US_MR) Character length is 6 bits */ +#define US_MR_CHRL_7_BIT (0x2u << 6) /**< \brief (US_MR) Character length is 7 bits */ +#define US_MR_CHRL_8_BIT (0x3u << 6) /**< \brief (US_MR) Character length is 8 bits */ +#define US_MR_SYNC (0x1u << 8) /**< \brief (US_MR) Synchronous Mode Select */ +#define US_MR_CPHA (0x1u << 8) /**< \brief (US_MR) SPI Clock Phase */ +#define US_MR_PAR_Pos 9 +#define US_MR_PAR_Msk (0x7u << US_MR_PAR_Pos) /**< \brief (US_MR) Parity Type */ +#define US_MR_PAR_EVEN (0x0u << 9) /**< \brief (US_MR) Even parity */ +#define US_MR_PAR_ODD (0x1u << 9) /**< \brief (US_MR) Odd parity */ +#define US_MR_PAR_SPACE (0x2u << 9) /**< \brief (US_MR) Parity forced to 0 (Space) */ +#define US_MR_PAR_MARK (0x3u << 9) /**< \brief (US_MR) Parity forced to 1 (Mark) */ +#define US_MR_PAR_NO (0x4u << 9) /**< \brief (US_MR) No parity */ +#define US_MR_PAR_MULTIDROP (0x6u << 9) /**< \brief (US_MR) Multidrop mode */ +#define US_MR_NBSTOP_Pos 12 +#define US_MR_NBSTOP_Msk (0x3u << US_MR_NBSTOP_Pos) /**< \brief (US_MR) Number of Stop Bits */ +#define US_MR_NBSTOP_1_BIT (0x0u << 12) /**< \brief (US_MR) 1 stop bit */ +#define US_MR_NBSTOP_1_5_BIT (0x1u << 12) /**< \brief (US_MR) 1.5 stop bit (SYNC = 0) or reserved (SYNC = 1) */ +#define US_MR_NBSTOP_2_BIT (0x2u << 12) /**< \brief (US_MR) 2 stop bits */ +#define US_MR_CHMODE_Pos 14 +#define US_MR_CHMODE_Msk (0x3u << US_MR_CHMODE_Pos) /**< \brief (US_MR) Channel Mode */ +#define US_MR_CHMODE_NORMAL (0x0u << 14) /**< \brief (US_MR) Normal Mode */ +#define US_MR_CHMODE_AUTOMATIC (0x1u << 14) /**< \brief (US_MR) Automatic Echo. Receiver input is connected to the TXD pin. */ +#define US_MR_CHMODE_LOCAL_LOOPBACK (0x2u << 14) /**< \brief (US_MR) Local Loopback. Transmitter output is connected to the Receiver Input. */ +#define US_MR_CHMODE_REMOTE_LOOPBACK (0x3u << 14) /**< \brief (US_MR) Remote Loopback. RXD pin is internally connected to the TXD pin. */ +#define US_MR_MSBF (0x1u << 16) /**< \brief (US_MR) Bit Order */ +#define US_MR_CPOL (0x1u << 16) /**< \brief (US_MR) SPI Clock Polarity */ +#define US_MR_MODE9 (0x1u << 17) /**< \brief (US_MR) 9-bit Character Length */ +#define US_MR_CLKO (0x1u << 18) /**< \brief (US_MR) Clock Output Select */ +#define US_MR_OVER (0x1u << 19) /**< \brief (US_MR) Oversampling Mode */ +#define US_MR_INACK (0x1u << 20) /**< \brief (US_MR) Inhibit Non Acknowledge */ +#define US_MR_DSNACK (0x1u << 21) /**< \brief (US_MR) Disable Successive NACK */ +#define US_MR_VAR_SYNC (0x1u << 22) /**< \brief (US_MR) Variable Synchronization of Command/Data Sync Start Frame Delimiter */ +#define US_MR_INVDATA (0x1u << 23) /**< \brief (US_MR) INverted Data */ +#define US_MR_MAX_ITERATION_Pos 24 +#define US_MR_MAX_ITERATION_Msk (0x7u << US_MR_MAX_ITERATION_Pos) /**< \brief (US_MR) */ +#define US_MR_MAX_ITERATION(value) ((US_MR_MAX_ITERATION_Msk & ((value) << US_MR_MAX_ITERATION_Pos))) +#define US_MR_FILTER (0x1u << 28) /**< \brief (US_MR) Infrared Receive Line Filter */ +#define US_MR_MAN (0x1u << 29) /**< \brief (US_MR) Manchester Encoder/Decoder Enable */ +#define US_MR_MODSYNC (0x1u << 30) /**< \brief (US_MR) Manchester Synchronization Mode */ +#define US_MR_ONEBIT (0x1u << 31) /**< \brief (US_MR) Start Frame Delimiter Selector */ +/* -------- US_IER : (USART Offset: 0x0008) Interrupt Enable Register -------- */ +#define US_IER_RXRDY (0x1u << 0) /**< \brief (US_IER) RXRDY Interrupt Enable */ +#define US_IER_TXRDY (0x1u << 1) /**< \brief (US_IER) TXRDY Interrupt Enable */ +#define US_IER_RXBRK (0x1u << 2) /**< \brief (US_IER) Receiver Break Interrupt Enable */ +#define US_IER_ENDRX (0x1u << 3) /**< \brief (US_IER) End of Receive Transfer Interrupt Enable */ +#define US_IER_ENDTX (0x1u << 4) /**< \brief (US_IER) End of Transmit Interrupt Enable */ +#define US_IER_OVRE (0x1u << 5) /**< \brief (US_IER) Overrun Error Interrupt Enable */ +#define US_IER_FRAME (0x1u << 6) /**< \brief (US_IER) Framing Error Interrupt Enable */ +#define US_IER_PARE (0x1u << 7) /**< \brief (US_IER) Parity Error Interrupt Enable */ +#define US_IER_TIMEOUT (0x1u << 8) /**< \brief (US_IER) Time-out Interrupt Enable */ +#define US_IER_TXEMPTY (0x1u << 9) /**< \brief (US_IER) TXEMPTY Interrupt Enable */ +#define US_IER_ITER (0x1u << 10) /**< \brief (US_IER) Max number of Repetitions Reached */ +#define US_IER_UNRE (0x1u << 10) /**< \brief (US_IER) SPI Underrun Error */ +#define US_IER_TXBUFE (0x1u << 11) /**< \brief (US_IER) Buffer Empty Interrupt Enable */ +#define US_IER_RXBUFF (0x1u << 12) /**< \brief (US_IER) Buffer Full Interrupt Enable */ +#define US_IER_NACK (0x1u << 13) /**< \brief (US_IER) Non Acknowledge Interrupt Enable */ +#define US_IER_LINBK (0x1u << 13) /**< \brief (US_IER) LIN Break Sent or LIN Break Received Interrupt Enable */ +#define US_IER_LINID (0x1u << 14) /**< \brief (US_IER) LIN Identifier Sent or LIN Identifier Received Interrupt Enable */ +#define US_IER_LINTC (0x1u << 15) /**< \brief (US_IER) LIN Transfer Completed Interrupt Enable */ +#define US_IER_CTSIC (0x1u << 19) /**< \brief (US_IER) Clear to Send Input Change Interrupt Enable */ +#define US_IER_MANE (0x1u << 24) /**< \brief (US_IER) Manchester Error Interrupt Enable */ +#define US_IER_LINBE (0x1u << 25) /**< \brief (US_IER) LIN Bus Error Interrupt Enable */ +#define US_IER_LINISFE (0x1u << 26) /**< \brief (US_IER) LIN Inconsistent Synch Field Error Interrupt Enable */ +#define US_IER_LINIPE (0x1u << 27) /**< \brief (US_IER) LIN Identifier Parity Interrupt Enable */ +#define US_IER_LINCE (0x1u << 28) /**< \brief (US_IER) LIN Checksum Error Interrupt Enable */ +#define US_IER_LINSNRE (0x1u << 29) /**< \brief (US_IER) LIN Slave Not Responding Error Interrupt Enable */ +/* -------- US_IDR : (USART Offset: 0x000C) Interrupt Disable Register -------- */ +#define US_IDR_RXRDY (0x1u << 0) /**< \brief (US_IDR) RXRDY Interrupt Disable */ +#define US_IDR_TXRDY (0x1u << 1) /**< \brief (US_IDR) TXRDY Interrupt Disable */ +#define US_IDR_RXBRK (0x1u << 2) /**< \brief (US_IDR) Receiver Break Interrupt Disable */ +#define US_IDR_ENDRX (0x1u << 3) /**< \brief (US_IDR) End of Receive Transfer Interrupt Disable */ +#define US_IDR_ENDTX (0x1u << 4) /**< \brief (US_IDR) End of Transmit Interrupt Disable */ +#define US_IDR_OVRE (0x1u << 5) /**< \brief (US_IDR) Overrun Error Interrupt Disable */ +#define US_IDR_FRAME (0x1u << 6) /**< \brief (US_IDR) Framing Error Interrupt Disable */ +#define US_IDR_PARE (0x1u << 7) /**< \brief (US_IDR) Parity Error Interrupt Disable */ +#define US_IDR_TIMEOUT (0x1u << 8) /**< \brief (US_IDR) Time-out Interrupt Disable */ +#define US_IDR_TXEMPTY (0x1u << 9) /**< \brief (US_IDR) TXEMPTY Interrupt Disable */ +#define US_IDR_ITER (0x1u << 10) /**< \brief (US_IDR) Max number of Repetitions Reached Disable */ +#define US_IDR_UNRE (0x1u << 10) /**< \brief (US_IDR) SPI Underrun Error Disable */ +#define US_IDR_TXBUFE (0x1u << 11) /**< \brief (US_IDR) Buffer Empty Interrupt Disable */ +#define US_IDR_RXBUFF (0x1u << 12) /**< \brief (US_IDR) Buffer Full Interrupt Disable */ +#define US_IDR_NACK (0x1u << 13) /**< \brief (US_IDR) Non Acknowledge Interrupt Disable */ +#define US_IDR_LINBK (0x1u << 13) /**< \brief (US_IDR) LIN Break Sent or LIN Break Received Interrupt Disable */ +#define US_IDR_LINID (0x1u << 14) /**< \brief (US_IDR) LIN Identifier Sent or LIN Identifier Received Interrupt Disable */ +#define US_IDR_LINTC (0x1u << 15) /**< \brief (US_IDR) LIN Transfer Completed Interrupt Disable */ +#define US_IDR_CTSIC (0x1u << 19) /**< \brief (US_IDR) Clear to Send Input Change Interrupt Disable */ +#define US_IDR_MANE (0x1u << 24) /**< \brief (US_IDR) Manchester Error Interrupt Disable */ +#define US_IDR_LINBE (0x1u << 25) /**< \brief (US_IDR) LIN Bus Error Interrupt Disable */ +#define US_IDR_LINISFE (0x1u << 26) /**< \brief (US_IDR) LIN Inconsistent Synch Field Error Interrupt Disable */ +#define US_IDR_LINIPE (0x1u << 27) /**< \brief (US_IDR) LIN Identifier Parity Interrupt Disable */ +#define US_IDR_LINCE (0x1u << 28) /**< \brief (US_IDR) LIN Checksum Error Interrupt Disable */ +#define US_IDR_LINSNRE (0x1u << 29) /**< \brief (US_IDR) LIN Slave Not Responding Error Interrupt Disable */ +/* -------- US_IMR : (USART Offset: 0x0010) Interrupt Mask Register -------- */ +#define US_IMR_RXRDY (0x1u << 0) /**< \brief (US_IMR) RXRDY Interrupt Mask */ +#define US_IMR_TXRDY (0x1u << 1) /**< \brief (US_IMR) TXRDY Interrupt Mask */ +#define US_IMR_RXBRK (0x1u << 2) /**< \brief (US_IMR) Receiver Break Interrupt Mask */ +#define US_IMR_ENDRX (0x1u << 3) /**< \brief (US_IMR) End of Receive Transfer Interrupt Mask */ +#define US_IMR_ENDTX (0x1u << 4) /**< \brief (US_IMR) End of Transmit Interrupt Mask */ +#define US_IMR_OVRE (0x1u << 5) /**< \brief (US_IMR) Overrun Error Interrupt Mask */ +#define US_IMR_FRAME (0x1u << 6) /**< \brief (US_IMR) Framing Error Interrupt Mask */ +#define US_IMR_PARE (0x1u << 7) /**< \brief (US_IMR) Parity Error Interrupt Mask */ +#define US_IMR_TIMEOUT (0x1u << 8) /**< \brief (US_IMR) Time-out Interrupt Mask */ +#define US_IMR_TXEMPTY (0x1u << 9) /**< \brief (US_IMR) TXEMPTY Interrupt Mask */ +#define US_IMR_ITER (0x1u << 10) /**< \brief (US_IMR) Max number of Repetitions Reached Mask */ +#define US_IMR_UNRE (0x1u << 10) /**< \brief (US_IMR) SPI Underrun Error Mask */ +#define US_IMR_TXBUFE (0x1u << 11) /**< \brief (US_IMR) Buffer Empty Interrupt Mask */ +#define US_IMR_RXBUFF (0x1u << 12) /**< \brief (US_IMR) Buffer Full Interrupt Mask */ +#define US_IMR_NACK (0x1u << 13) /**< \brief (US_IMR) Non Acknowledge Interrupt Mask */ +#define US_IMR_LINBK (0x1u << 13) /**< \brief (US_IMR) LIN Break Sent or LIN Break Received Interrupt Mask */ +#define US_IMR_LINID (0x1u << 14) /**< \brief (US_IMR) LIN Identifier Sent or LIN Identifier Received Interrupt Mask */ +#define US_IMR_LINTC (0x1u << 15) /**< \brief (US_IMR) LIN Transfer Completed Interrupt Mask */ +#define US_IMR_CTSIC (0x1u << 19) /**< \brief (US_IMR) Clear to Send Input Change Interrupt Mask */ +#define US_IMR_MANE (0x1u << 24) /**< \brief (US_IMR) Manchester Error Interrupt Mask */ +#define US_IMR_LINBE (0x1u << 25) /**< \brief (US_IMR) LIN Bus Error Interrupt Mask */ +#define US_IMR_LINISFE (0x1u << 26) /**< \brief (US_IMR) LIN Inconsistent Synch Field Error Interrupt Mask */ +#define US_IMR_LINIPE (0x1u << 27) /**< \brief (US_IMR) LIN Identifier Parity Interrupt Mask */ +#define US_IMR_LINCE (0x1u << 28) /**< \brief (US_IMR) LIN Checksum Error Interrupt Mask */ +#define US_IMR_LINSNRE (0x1u << 29) /**< \brief (US_IMR) LIN Slave Not Responding Error Interrupt Mask */ +/* -------- US_CSR : (USART Offset: 0x0014) Channel Status Register -------- */ +#define US_CSR_RXRDY (0x1u << 0) /**< \brief (US_CSR) Receiver Ready */ +#define US_CSR_TXRDY (0x1u << 1) /**< \brief (US_CSR) Transmitter Ready */ +#define US_CSR_RXBRK (0x1u << 2) /**< \brief (US_CSR) Break Received/End of Break */ +#define US_CSR_ENDRX (0x1u << 3) /**< \brief (US_CSR) End of Receiver Transfer */ +#define US_CSR_ENDTX (0x1u << 4) /**< \brief (US_CSR) End of Transmitter Transfer */ +#define US_CSR_OVRE (0x1u << 5) /**< \brief (US_CSR) Overrun Error */ +#define US_CSR_FRAME (0x1u << 6) /**< \brief (US_CSR) Framing Error */ +#define US_CSR_PARE (0x1u << 7) /**< \brief (US_CSR) Parity Error */ +#define US_CSR_TIMEOUT (0x1u << 8) /**< \brief (US_CSR) Receiver Time-out */ +#define US_CSR_TXEMPTY (0x1u << 9) /**< \brief (US_CSR) Transmitter Empty */ +#define US_CSR_ITER (0x1u << 10) /**< \brief (US_CSR) Max number of Repetitions Reached */ +#define US_CSR_UNRE (0x1u << 10) /**< \brief (US_CSR) SPI Underrun Error */ +#define US_CSR_TXBUFE (0x1u << 11) /**< \brief (US_CSR) Transmission Buffer Empty */ +#define US_CSR_RXBUFF (0x1u << 12) /**< \brief (US_CSR) Reception Buffer Full */ +#define US_CSR_NACK (0x1u << 13) /**< \brief (US_CSR) Non Acknowledge Interrupt */ +#define US_CSR_LINBK (0x1u << 13) /**< \brief (US_CSR) LIN Break Sent or LIN Break Received */ +#define US_CSR_LINID (0x1u << 14) /**< \brief (US_CSR) LIN Identifier Sent or LIN Identifier Received */ +#define US_CSR_LINTC (0x1u << 15) /**< \brief (US_CSR) LIN Transfer Completed */ +#define US_CSR_CTSIC (0x1u << 19) /**< \brief (US_CSR) Clear to Send Input Change Flag */ +#define US_CSR_CTS (0x1u << 23) /**< \brief (US_CSR) Image of CTS Input */ +#define US_CSR_LINBLS (0x1u << 23) /**< \brief (US_CSR) LIN Bus Line Status */ +#define US_CSR_MANERR (0x1u << 24) /**< \brief (US_CSR) Manchester Error */ +#define US_CSR_LINBE (0x1u << 25) /**< \brief (US_CSR) LIN Bit Error */ +#define US_CSR_LINISFE (0x1u << 26) /**< \brief (US_CSR) LIN Inconsistent Synch Field Error */ +#define US_CSR_LINIPE (0x1u << 27) /**< \brief (US_CSR) LIN Identifier Parity Error */ +#define US_CSR_LINCE (0x1u << 28) /**< \brief (US_CSR) LIN Checksum Error */ +#define US_CSR_LINSNRE (0x1u << 29) /**< \brief (US_CSR) LIN Slave Not Responding Error */ +/* -------- US_RHR : (USART Offset: 0x0018) Receiver Holding Register -------- */ +#define US_RHR_RXCHR_Pos 0 +#define US_RHR_RXCHR_Msk (0x1ffu << US_RHR_RXCHR_Pos) /**< \brief (US_RHR) Received Character */ +#define US_RHR_RXSYNH (0x1u << 15) /**< \brief (US_RHR) Received Sync */ +/* -------- US_THR : (USART Offset: 0x001C) Transmitter Holding Register -------- */ +#define US_THR_TXCHR_Pos 0 +#define US_THR_TXCHR_Msk (0x1ffu << US_THR_TXCHR_Pos) /**< \brief (US_THR) Character to be Transmitted */ +#define US_THR_TXCHR(value) ((US_THR_TXCHR_Msk & ((value) << US_THR_TXCHR_Pos))) +#define US_THR_TXSYNH (0x1u << 15) /**< \brief (US_THR) Sync Field to be transmitted */ +/* -------- US_BRGR : (USART Offset: 0x0020) Baud Rate Generator Register -------- */ +#define US_BRGR_CD_Pos 0 +#define US_BRGR_CD_Msk (0xffffu << US_BRGR_CD_Pos) /**< \brief (US_BRGR) Clock Divider */ +#define US_BRGR_CD(value) ((US_BRGR_CD_Msk & ((value) << US_BRGR_CD_Pos))) +#define US_BRGR_FP_Pos 16 +#define US_BRGR_FP_Msk (0x7u << US_BRGR_FP_Pos) /**< \brief (US_BRGR) Fractional Part */ +#define US_BRGR_FP(value) ((US_BRGR_FP_Msk & ((value) << US_BRGR_FP_Pos))) +/* -------- US_RTOR : (USART Offset: 0x0024) Receiver Time-out Register -------- */ +#define US_RTOR_TO_Pos 0 +#define US_RTOR_TO_Msk (0x1ffffu << US_RTOR_TO_Pos) /**< \brief (US_RTOR) Time-out Value */ +#define US_RTOR_TO(value) ((US_RTOR_TO_Msk & ((value) << US_RTOR_TO_Pos))) +/* -------- US_TTGR : (USART Offset: 0x0028) Transmitter Timeguard Register -------- */ +#define US_TTGR_TG_Pos 0 +#define US_TTGR_TG_Msk (0xffu << US_TTGR_TG_Pos) /**< \brief (US_TTGR) Timeguard Value */ +#define US_TTGR_TG(value) ((US_TTGR_TG_Msk & ((value) << US_TTGR_TG_Pos))) +/* -------- US_FIDI : (USART Offset: 0x0040) FI DI Ratio Register -------- */ +#define US_FIDI_FI_DI_RATIO_Pos 0 +#define US_FIDI_FI_DI_RATIO_Msk (0x7ffu << US_FIDI_FI_DI_RATIO_Pos) /**< \brief (US_FIDI) FI Over DI Ratio Value */ +#define US_FIDI_FI_DI_RATIO(value) ((US_FIDI_FI_DI_RATIO_Msk & ((value) << US_FIDI_FI_DI_RATIO_Pos))) +/* -------- US_NER : (USART Offset: 0x0044) Number of Errors Register -------- */ +#define US_NER_NB_ERRORS_Pos 0 +#define US_NER_NB_ERRORS_Msk (0xffu << US_NER_NB_ERRORS_Pos) /**< \brief (US_NER) Number of Errors */ +/* -------- US_IF : (USART Offset: 0x004C) IrDA Filter Register -------- */ +#define US_IF_IRDA_FILTER_Pos 0 +#define US_IF_IRDA_FILTER_Msk (0xffu << US_IF_IRDA_FILTER_Pos) /**< \brief (US_IF) IrDA Filter */ +#define US_IF_IRDA_FILTER(value) ((US_IF_IRDA_FILTER_Msk & ((value) << US_IF_IRDA_FILTER_Pos))) +/* -------- US_MAN : (USART Offset: 0x0050) Manchester Encoder Decoder Register -------- */ +#define US_MAN_TX_PL_Pos 0 +#define US_MAN_TX_PL_Msk (0xfu << US_MAN_TX_PL_Pos) /**< \brief (US_MAN) Transmitter Preamble Length */ +#define US_MAN_TX_PL(value) ((US_MAN_TX_PL_Msk & ((value) << US_MAN_TX_PL_Pos))) +#define US_MAN_TX_PP_Pos 8 +#define US_MAN_TX_PP_Msk (0x3u << US_MAN_TX_PP_Pos) /**< \brief (US_MAN) Transmitter Preamble Pattern */ +#define US_MAN_TX_PP_ALL_ONE (0x0u << 8) /**< \brief (US_MAN) The preamble is composed of '1's */ +#define US_MAN_TX_PP_ALL_ZERO (0x1u << 8) /**< \brief (US_MAN) The preamble is composed of '0's */ +#define US_MAN_TX_PP_ZERO_ONE (0x2u << 8) /**< \brief (US_MAN) The preamble is composed of '01's */ +#define US_MAN_TX_PP_ONE_ZERO (0x3u << 8) /**< \brief (US_MAN) The preamble is composed of '10's */ +#define US_MAN_TX_MPOL (0x1u << 12) /**< \brief (US_MAN) Transmitter Manchester Polarity */ +#define US_MAN_RX_PL_Pos 16 +#define US_MAN_RX_PL_Msk (0xfu << US_MAN_RX_PL_Pos) /**< \brief (US_MAN) Receiver Preamble Length */ +#define US_MAN_RX_PL(value) ((US_MAN_RX_PL_Msk & ((value) << US_MAN_RX_PL_Pos))) +#define US_MAN_RX_PP_Pos 24 +#define US_MAN_RX_PP_Msk (0x3u << US_MAN_RX_PP_Pos) /**< \brief (US_MAN) Receiver Preamble Pattern detected */ +#define US_MAN_RX_PP_ALL_ONE (0x0u << 24) /**< \brief (US_MAN) The preamble is composed of '1's */ +#define US_MAN_RX_PP_ALL_ZERO (0x1u << 24) /**< \brief (US_MAN) The preamble is composed of '0's */ +#define US_MAN_RX_PP_ZERO_ONE (0x2u << 24) /**< \brief (US_MAN) The preamble is composed of '01's */ +#define US_MAN_RX_PP_ONE_ZERO (0x3u << 24) /**< \brief (US_MAN) The preamble is composed of '10's */ +#define US_MAN_RX_MPOL (0x1u << 28) /**< \brief (US_MAN) Receiver Manchester Polarity */ +#define US_MAN_STUCKTO1 (0x1u << 29) /**< \brief (US_MAN) */ +#define US_MAN_DRIFT (0x1u << 30) /**< \brief (US_MAN) Drift compensation */ +/* -------- US_LINMR : (USART Offset: 0x0054) LIN Mode Register -------- */ +#define US_LINMR_NACT_Pos 0 +#define US_LINMR_NACT_Msk (0x3u << US_LINMR_NACT_Pos) /**< \brief (US_LINMR) LIN Node Action */ +#define US_LINMR_NACT_PUBLISH (0x0u << 0) /**< \brief (US_LINMR) The USART transmits the response. */ +#define US_LINMR_NACT_SUBSCRIBE (0x1u << 0) /**< \brief (US_LINMR) The USART receives the response. */ +#define US_LINMR_NACT_IGNORE (0x2u << 0) /**< \brief (US_LINMR) The USART does not transmit and does not receive the response. */ +#define US_LINMR_PARDIS (0x1u << 2) /**< \brief (US_LINMR) Parity Disable */ +#define US_LINMR_CHKDIS (0x1u << 3) /**< \brief (US_LINMR) Checksum Disable */ +#define US_LINMR_CHKTYP (0x1u << 4) /**< \brief (US_LINMR) Checksum Type */ +#define US_LINMR_DLM (0x1u << 5) /**< \brief (US_LINMR) Data Length Mode */ +#define US_LINMR_FSDIS (0x1u << 6) /**< \brief (US_LINMR) Frame Slot Mode Disable */ +#define US_LINMR_WKUPTYP (0x1u << 7) /**< \brief (US_LINMR) Wakeup Signal Type */ +#define US_LINMR_DLC_Pos 8 +#define US_LINMR_DLC_Msk (0xffu << US_LINMR_DLC_Pos) /**< \brief (US_LINMR) Data Length Control */ +#define US_LINMR_DLC(value) ((US_LINMR_DLC_Msk & ((value) << US_LINMR_DLC_Pos))) +#define US_LINMR_PDCM (0x1u << 16) /**< \brief (US_LINMR) PDC Mode */ +/* -------- US_LINIR : (USART Offset: 0x0058) LIN Identifier Register -------- */ +#define US_LINIR_IDCHR_Pos 0 +#define US_LINIR_IDCHR_Msk (0xffu << US_LINIR_IDCHR_Pos) /**< \brief (US_LINIR) Identifier Character */ +#define US_LINIR_IDCHR(value) ((US_LINIR_IDCHR_Msk & ((value) << US_LINIR_IDCHR_Pos))) +/* -------- US_WPMR : (USART Offset: 0xE4) Write Protect Mode Register -------- */ +#define US_WPMR_WPEN (0x1u << 0) /**< \brief (US_WPMR) Write Protect Enable */ +#define US_WPMR_WPKEY_Pos 8 +#define US_WPMR_WPKEY_Msk (0xffffffu << US_WPMR_WPKEY_Pos) /**< \brief (US_WPMR) Write Protect KEY */ +#define US_WPMR_WPKEY(value) ((US_WPMR_WPKEY_Msk & ((value) << US_WPMR_WPKEY_Pos))) +/* -------- US_WPSR : (USART Offset: 0xE8) Write Protect Status Register -------- */ +#define US_WPSR_WPVS (0x1u << 0) /**< \brief (US_WPSR) Write Protect Violation Status */ +#define US_WPSR_WPVSRC_Pos 8 +#define US_WPSR_WPVSRC_Msk (0xffffu << US_WPSR_WPVSRC_Pos) /**< \brief (US_WPSR) Write Protect Violation Source */ +/* -------- US_RPR : (USART Offset: 0x100) Receive Pointer Register -------- */ +#define US_RPR_RXPTR_Pos 0 +#define US_RPR_RXPTR_Msk (0xffffffffu << US_RPR_RXPTR_Pos) /**< \brief (US_RPR) Receive Pointer Register */ +#define US_RPR_RXPTR(value) ((US_RPR_RXPTR_Msk & ((value) << US_RPR_RXPTR_Pos))) +/* -------- US_RCR : (USART Offset: 0x104) Receive Counter Register -------- */ +#define US_RCR_RXCTR_Pos 0 +#define US_RCR_RXCTR_Msk (0xffffu << US_RCR_RXCTR_Pos) /**< \brief (US_RCR) Receive Counter Register */ +#define US_RCR_RXCTR(value) ((US_RCR_RXCTR_Msk & ((value) << US_RCR_RXCTR_Pos))) +/* -------- US_TPR : (USART Offset: 0x108) Transmit Pointer Register -------- */ +#define US_TPR_TXPTR_Pos 0 +#define US_TPR_TXPTR_Msk (0xffffffffu << US_TPR_TXPTR_Pos) /**< \brief (US_TPR) Transmit Counter Register */ +#define US_TPR_TXPTR(value) ((US_TPR_TXPTR_Msk & ((value) << US_TPR_TXPTR_Pos))) +/* -------- US_TCR : (USART Offset: 0x10C) Transmit Counter Register -------- */ +#define US_TCR_TXCTR_Pos 0 +#define US_TCR_TXCTR_Msk (0xffffu << US_TCR_TXCTR_Pos) /**< \brief (US_TCR) Transmit Counter Register */ +#define US_TCR_TXCTR(value) ((US_TCR_TXCTR_Msk & ((value) << US_TCR_TXCTR_Pos))) +/* -------- US_RNPR : (USART Offset: 0x110) Receive Next Pointer Register -------- */ +#define US_RNPR_RXNPTR_Pos 0 +#define US_RNPR_RXNPTR_Msk (0xffffffffu << US_RNPR_RXNPTR_Pos) /**< \brief (US_RNPR) Receive Next Pointer */ +#define US_RNPR_RXNPTR(value) ((US_RNPR_RXNPTR_Msk & ((value) << US_RNPR_RXNPTR_Pos))) +/* -------- US_RNCR : (USART Offset: 0x114) Receive Next Counter Register -------- */ +#define US_RNCR_RXNCTR_Pos 0 +#define US_RNCR_RXNCTR_Msk (0xffffu << US_RNCR_RXNCTR_Pos) /**< \brief (US_RNCR) Receive Next Counter */ +#define US_RNCR_RXNCTR(value) ((US_RNCR_RXNCTR_Msk & ((value) << US_RNCR_RXNCTR_Pos))) +/* -------- US_TNPR : (USART Offset: 0x118) Transmit Next Pointer Register -------- */ +#define US_TNPR_TXNPTR_Pos 0 +#define US_TNPR_TXNPTR_Msk (0xffffffffu << US_TNPR_TXNPTR_Pos) /**< \brief (US_TNPR) Transmit Next Pointer */ +#define US_TNPR_TXNPTR(value) ((US_TNPR_TXNPTR_Msk & ((value) << US_TNPR_TXNPTR_Pos))) +/* -------- US_TNCR : (USART Offset: 0x11C) Transmit Next Counter Register -------- */ +#define US_TNCR_TXNCTR_Pos 0 +#define US_TNCR_TXNCTR_Msk (0xffffu << US_TNCR_TXNCTR_Pos) /**< \brief (US_TNCR) Transmit Counter Next */ +#define US_TNCR_TXNCTR(value) ((US_TNCR_TXNCTR_Msk & ((value) << US_TNCR_TXNCTR_Pos))) +/* -------- US_PTCR : (USART Offset: 0x120) Transfer Control Register -------- */ +#define US_PTCR_RXTEN (0x1u << 0) /**< \brief (US_PTCR) Receiver Transfer Enable */ +#define US_PTCR_RXTDIS (0x1u << 1) /**< \brief (US_PTCR) Receiver Transfer Disable */ +#define US_PTCR_TXTEN (0x1u << 8) /**< \brief (US_PTCR) Transmitter Transfer Enable */ +#define US_PTCR_TXTDIS (0x1u << 9) /**< \brief (US_PTCR) Transmitter Transfer Disable */ +/* -------- US_PTSR : (USART Offset: 0x124) Transfer Status Register -------- */ +#define US_PTSR_RXTEN (0x1u << 0) /**< \brief (US_PTSR) Receiver Transfer Enable */ +#define US_PTSR_TXTEN (0x1u << 8) /**< \brief (US_PTSR) Transmitter Transfer Enable */ + +/*@}*/ + + +#endif /* _SAM3XA_USART_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_wdt.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_wdt.h new file mode 100644 index 000000000..aa5772b3d --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/component/component_wdt.h @@ -0,0 +1,72 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_WDT_COMPONENT_ +#define _SAM3XA_WDT_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Watchdog Timer */ +/* ============================================================================= */ +/** \addtogroup SAM3XA_WDT Watchdog Timer */ +/*@{*/ + +#ifndef __ASSEMBLY__ +/** \brief Wdt hardware registers */ +typedef struct { + WoReg WDT_CR; /**< \brief (Wdt Offset: 0x00) Control Register */ + RwReg WDT_MR; /**< \brief (Wdt Offset: 0x04) Mode Register */ + RoReg WDT_SR; /**< \brief (Wdt Offset: 0x08) Status Register */ +} Wdt; +#endif /* __ASSEMBLY__ */ +/* -------- WDT_CR : (WDT Offset: 0x00) Control Register -------- */ +#define WDT_CR_WDRSTT (0x1u << 0) /**< \brief (WDT_CR) Watchdog Restart */ +#define WDT_CR_KEY_Pos 24 +#define WDT_CR_KEY_Msk (0xffu << WDT_CR_KEY_Pos) /**< \brief (WDT_CR) Password */ +#define WDT_CR_KEY(value) ((WDT_CR_KEY_Msk & ((value) << WDT_CR_KEY_Pos))) +/* -------- WDT_MR : (WDT Offset: 0x04) Mode Register -------- */ +#define WDT_MR_WDV_Pos 0 +#define WDT_MR_WDV_Msk (0xfffu << WDT_MR_WDV_Pos) /**< \brief (WDT_MR) Watchdog Counter Value */ +#define WDT_MR_WDV(value) ((WDT_MR_WDV_Msk & ((value) << WDT_MR_WDV_Pos))) +#define WDT_MR_WDFIEN (0x1u << 12) /**< \brief (WDT_MR) Watchdog Fault Interrupt Enable */ +#define WDT_MR_WDRSTEN (0x1u << 13) /**< \brief (WDT_MR) Watchdog Reset Enable */ +#define WDT_MR_WDRPROC (0x1u << 14) /**< \brief (WDT_MR) Watchdog Reset Processor */ +#define WDT_MR_WDDIS (0x1u << 15) /**< \brief (WDT_MR) Watchdog Disable */ +#define WDT_MR_WDD_Pos 16 +#define WDT_MR_WDD_Msk (0xfffu << WDT_MR_WDD_Pos) /**< \brief (WDT_MR) Watchdog Delta Value */ +#define WDT_MR_WDD(value) ((WDT_MR_WDD_Msk & ((value) << WDT_MR_WDD_Pos))) +#define WDT_MR_WDDBGHLT (0x1u << 28) /**< \brief (WDT_MR) Watchdog Debug Halt */ +#define WDT_MR_WDIDLEHLT (0x1u << 29) /**< \brief (WDT_MR) Watchdog Idle Halt */ +/* -------- WDT_SR : (WDT Offset: 0x08) Status Register -------- */ +#define WDT_SR_WDUNF (0x1u << 0) /**< \brief (WDT_SR) Watchdog Underflow */ +#define WDT_SR_WDERR (0x1u << 1) /**< \brief (WDT_SR) Watchdog Error */ + +/*@}*/ + + +#endif /* _SAM3XA_WDT_COMPONENT_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_adc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_adc.h new file mode 100644 index 000000000..a9f2279d0 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_adc.h @@ -0,0 +1,100 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_ADC_INSTANCE_ +#define _SAM3XA_ADC_INSTANCE_ + +/* ========== Register definition for ADC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_ADC_CR (0x400C0000U) /**< \brief (ADC) Control Register */ +#define REG_ADC_MR (0x400C0004U) /**< \brief (ADC) Mode Register */ +#define REG_ADC_SEQR1 (0x400C0008U) /**< \brief (ADC) Channel Sequence Register 1 */ +#define REG_ADC_SEQR2 (0x400C000CU) /**< \brief (ADC) Channel Sequence Register 2 */ +#define REG_ADC_CHER (0x400C0010U) /**< \brief (ADC) Channel Enable Register */ +#define REG_ADC_CHDR (0x400C0014U) /**< \brief (ADC) Channel Disable Register */ +#define REG_ADC_CHSR (0x400C0018U) /**< \brief (ADC) Channel Status Register */ +#define REG_ADC_LCDR (0x400C0020U) /**< \brief (ADC) Last Converted Data Register */ +#define REG_ADC_IER (0x400C0024U) /**< \brief (ADC) Interrupt Enable Register */ +#define REG_ADC_IDR (0x400C0028U) /**< \brief (ADC) Interrupt Disable Register */ +#define REG_ADC_IMR (0x400C002CU) /**< \brief (ADC) Interrupt Mask Register */ +#define REG_ADC_ISR (0x400C0030U) /**< \brief (ADC) Interrupt Status Register */ +#define REG_ADC_OVER (0x400C003CU) /**< \brief (ADC) Overrun Status Register */ +#define REG_ADC_EMR (0x400C0040U) /**< \brief (ADC) Extended Mode Register */ +#define REG_ADC_CWR (0x400C0044U) /**< \brief (ADC) Compare Window Register */ +#define REG_ADC_CGR (0x400C0048U) /**< \brief (ADC) Channel Gain Register */ +#define REG_ADC_COR (0x400C004CU) /**< \brief (ADC) Channel Offset Register */ +#define REG_ADC_CDR (0x400C0050U) /**< \brief (ADC) Channel Data Register */ +#define REG_ADC_ACR (0x400C0094U) /**< \brief (ADC) Analog Control Register */ +#define REG_ADC_WPMR (0x400C00E4U) /**< \brief (ADC) Write Protect Mode Register */ +#define REG_ADC_WPSR (0x400C00E8U) /**< \brief (ADC) Write Protect Status Register */ +#define REG_ADC_RPR (0x400C0100U) /**< \brief (ADC) Receive Pointer Register */ +#define REG_ADC_RCR (0x400C0104U) /**< \brief (ADC) Receive Counter Register */ +#define REG_ADC_TPR (0x400C0108U) /**< \brief (ADC) Transmit Pointer Register */ +#define REG_ADC_TCR (0x400C010CU) /**< \brief (ADC) Transmit Counter Register */ +#define REG_ADC_RNPR (0x400C0110U) /**< \brief (ADC) Receive Next Pointer Register */ +#define REG_ADC_RNCR (0x400C0114U) /**< \brief (ADC) Receive Next Counter Register */ +#define REG_ADC_TNPR (0x400C0118U) /**< \brief (ADC) Transmit Next Pointer Register */ +#define REG_ADC_TNCR (0x400C011CU) /**< \brief (ADC) Transmit Next Counter Register */ +#define REG_ADC_PTCR (0x400C0120U) /**< \brief (ADC) Transfer Control Register */ +#define REG_ADC_PTSR (0x400C0124U) /**< \brief (ADC) Transfer Status Register */ +#else +#define REG_ADC_CR (*(WoReg*)0x400C0000U) /**< \brief (ADC) Control Register */ +#define REG_ADC_MR (*(RwReg*)0x400C0004U) /**< \brief (ADC) Mode Register */ +#define REG_ADC_SEQR1 (*(RwReg*)0x400C0008U) /**< \brief (ADC) Channel Sequence Register 1 */ +#define REG_ADC_SEQR2 (*(RwReg*)0x400C000CU) /**< \brief (ADC) Channel Sequence Register 2 */ +#define REG_ADC_CHER (*(WoReg*)0x400C0010U) /**< \brief (ADC) Channel Enable Register */ +#define REG_ADC_CHDR (*(WoReg*)0x400C0014U) /**< \brief (ADC) Channel Disable Register */ +#define REG_ADC_CHSR (*(RoReg*)0x400C0018U) /**< \brief (ADC) Channel Status Register */ +#define REG_ADC_LCDR (*(RoReg*)0x400C0020U) /**< \brief (ADC) Last Converted Data Register */ +#define REG_ADC_IER (*(WoReg*)0x400C0024U) /**< \brief (ADC) Interrupt Enable Register */ +#define REG_ADC_IDR (*(WoReg*)0x400C0028U) /**< \brief (ADC) Interrupt Disable Register */ +#define REG_ADC_IMR (*(RoReg*)0x400C002CU) /**< \brief (ADC) Interrupt Mask Register */ +#define REG_ADC_ISR (*(RoReg*)0x400C0030U) /**< \brief (ADC) Interrupt Status Register */ +#define REG_ADC_OVER (*(RoReg*)0x400C003CU) /**< \brief (ADC) Overrun Status Register */ +#define REG_ADC_EMR (*(RwReg*)0x400C0040U) /**< \brief (ADC) Extended Mode Register */ +#define REG_ADC_CWR (*(RwReg*)0x400C0044U) /**< \brief (ADC) Compare Window Register */ +#define REG_ADC_CGR (*(RwReg*)0x400C0048U) /**< \brief (ADC) Channel Gain Register */ +#define REG_ADC_COR (*(RwReg*)0x400C004CU) /**< \brief (ADC) Channel Offset Register */ +#define REG_ADC_CDR (*(RoReg*)0x400C0050U) /**< \brief (ADC) Channel Data Register */ +#define REG_ADC_ACR (*(RwReg*)0x400C0094U) /**< \brief (ADC) Analog Control Register */ +#define REG_ADC_WPMR (*(RwReg*)0x400C00E4U) /**< \brief (ADC) Write Protect Mode Register */ +#define REG_ADC_WPSR (*(RoReg*)0x400C00E8U) /**< \brief (ADC) Write Protect Status Register */ +#define REG_ADC_RPR (*(RwReg*)0x400C0100U) /**< \brief (ADC) Receive Pointer Register */ +#define REG_ADC_RCR (*(RwReg*)0x400C0104U) /**< \brief (ADC) Receive Counter Register */ +#define REG_ADC_TPR (*(RwReg*)0x400C0108U) /**< \brief (ADC) Transmit Pointer Register */ +#define REG_ADC_TCR (*(RwReg*)0x400C010CU) /**< \brief (ADC) Transmit Counter Register */ +#define REG_ADC_RNPR (*(RwReg*)0x400C0110U) /**< \brief (ADC) Receive Next Pointer Register */ +#define REG_ADC_RNCR (*(RwReg*)0x400C0114U) /**< \brief (ADC) Receive Next Counter Register */ +#define REG_ADC_TNPR (*(RwReg*)0x400C0118U) /**< \brief (ADC) Transmit Next Pointer Register */ +#define REG_ADC_TNCR (*(RwReg*)0x400C011CU) /**< \brief (ADC) Transmit Next Counter Register */ +#define REG_ADC_PTCR (*(WoReg*)0x400C0120U) /**< \brief (ADC) Transfer Control Register */ +#define REG_ADC_PTSR (*(RoReg*)0x400C0124U) /**< \brief (ADC) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_ADC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_can0.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_can0.h new file mode 100644 index 000000000..0307bef86 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_can0.h @@ -0,0 +1,188 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_CAN0_INSTANCE_ +#define _SAM3XA_CAN0_INSTANCE_ + +/* ========== Register definition for CAN0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_CAN0_MR (0x400B4000U) /**< \brief (CAN0) Mode Register */ +#define REG_CAN0_IER (0x400B4004U) /**< \brief (CAN0) Interrupt Enable Register */ +#define REG_CAN0_IDR (0x400B4008U) /**< \brief (CAN0) Interrupt Disable Register */ +#define REG_CAN0_IMR (0x400B400CU) /**< \brief (CAN0) Interrupt Mask Register */ +#define REG_CAN0_SR (0x400B4010U) /**< \brief (CAN0) Status Register */ +#define REG_CAN0_BR (0x400B4014U) /**< \brief (CAN0) Baudrate Register */ +#define REG_CAN0_TIM (0x400B4018U) /**< \brief (CAN0) Timer Register */ +#define REG_CAN0_TIMESTP (0x400B401CU) /**< \brief (CAN0) Timestamp Register */ +#define REG_CAN0_ECR (0x400B4020U) /**< \brief (CAN0) Error Counter Register */ +#define REG_CAN0_TCR (0x400B4024U) /**< \brief (CAN0) Transfer Command Register */ +#define REG_CAN0_ACR (0x400B4028U) /**< \brief (CAN0) Abort Command Register */ +#define REG_CAN0_MMR0 (0x400B4200U) /**< \brief (CAN0) Mailbox Mode Register (MB = 0) */ +#define REG_CAN0_MAM0 (0x400B4204U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 0) */ +#define REG_CAN0_MID0 (0x400B4208U) /**< \brief (CAN0) Mailbox ID Register (MB = 0) */ +#define REG_CAN0_MFID0 (0x400B420CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 0) */ +#define REG_CAN0_MSR0 (0x400B4210U) /**< \brief (CAN0) Mailbox Status Register (MB = 0) */ +#define REG_CAN0_MDL0 (0x400B4214U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 0) */ +#define REG_CAN0_MDH0 (0x400B4218U) /**< \brief (CAN0) Mailbox Data High Register (MB = 0) */ +#define REG_CAN0_MCR0 (0x400B421CU) /**< \brief (CAN0) Mailbox Control Register (MB = 0) */ +#define REG_CAN0_MMR1 (0x400B4220U) /**< \brief (CAN0) Mailbox Mode Register (MB = 1) */ +#define REG_CAN0_MAM1 (0x400B4224U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 1) */ +#define REG_CAN0_MID1 (0x400B4228U) /**< \brief (CAN0) Mailbox ID Register (MB = 1) */ +#define REG_CAN0_MFID1 (0x400B422CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 1) */ +#define REG_CAN0_MSR1 (0x400B4230U) /**< \brief (CAN0) Mailbox Status Register (MB = 1) */ +#define REG_CAN0_MDL1 (0x400B4234U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 1) */ +#define REG_CAN0_MDH1 (0x400B4238U) /**< \brief (CAN0) Mailbox Data High Register (MB = 1) */ +#define REG_CAN0_MCR1 (0x400B423CU) /**< \brief (CAN0) Mailbox Control Register (MB = 1) */ +#define REG_CAN0_MMR2 (0x400B4240U) /**< \brief (CAN0) Mailbox Mode Register (MB = 2) */ +#define REG_CAN0_MAM2 (0x400B4244U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 2) */ +#define REG_CAN0_MID2 (0x400B4248U) /**< \brief (CAN0) Mailbox ID Register (MB = 2) */ +#define REG_CAN0_MFID2 (0x400B424CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 2) */ +#define REG_CAN0_MSR2 (0x400B4250U) /**< \brief (CAN0) Mailbox Status Register (MB = 2) */ +#define REG_CAN0_MDL2 (0x400B4254U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 2) */ +#define REG_CAN0_MDH2 (0x400B4258U) /**< \brief (CAN0) Mailbox Data High Register (MB = 2) */ +#define REG_CAN0_MCR2 (0x400B425CU) /**< \brief (CAN0) Mailbox Control Register (MB = 2) */ +#define REG_CAN0_MMR3 (0x400B4260U) /**< \brief (CAN0) Mailbox Mode Register (MB = 3) */ +#define REG_CAN0_MAM3 (0x400B4264U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 3) */ +#define REG_CAN0_MID3 (0x400B4268U) /**< \brief (CAN0) Mailbox ID Register (MB = 3) */ +#define REG_CAN0_MFID3 (0x400B426CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 3) */ +#define REG_CAN0_MSR3 (0x400B4270U) /**< \brief (CAN0) Mailbox Status Register (MB = 3) */ +#define REG_CAN0_MDL3 (0x400B4274U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 3) */ +#define REG_CAN0_MDH3 (0x400B4278U) /**< \brief (CAN0) Mailbox Data High Register (MB = 3) */ +#define REG_CAN0_MCR3 (0x400B427CU) /**< \brief (CAN0) Mailbox Control Register (MB = 3) */ +#define REG_CAN0_MMR4 (0x400B4280U) /**< \brief (CAN0) Mailbox Mode Register (MB = 4) */ +#define REG_CAN0_MAM4 (0x400B4284U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 4) */ +#define REG_CAN0_MID4 (0x400B4288U) /**< \brief (CAN0) Mailbox ID Register (MB = 4) */ +#define REG_CAN0_MFID4 (0x400B428CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 4) */ +#define REG_CAN0_MSR4 (0x400B4290U) /**< \brief (CAN0) Mailbox Status Register (MB = 4) */ +#define REG_CAN0_MDL4 (0x400B4294U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 4) */ +#define REG_CAN0_MDH4 (0x400B4298U) /**< \brief (CAN0) Mailbox Data High Register (MB = 4) */ +#define REG_CAN0_MCR4 (0x400B429CU) /**< \brief (CAN0) Mailbox Control Register (MB = 4) */ +#define REG_CAN0_MMR5 (0x400B42A0U) /**< \brief (CAN0) Mailbox Mode Register (MB = 5) */ +#define REG_CAN0_MAM5 (0x400B42A4U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 5) */ +#define REG_CAN0_MID5 (0x400B42A8U) /**< \brief (CAN0) Mailbox ID Register (MB = 5) */ +#define REG_CAN0_MFID5 (0x400B42ACU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 5) */ +#define REG_CAN0_MSR5 (0x400B42B0U) /**< \brief (CAN0) Mailbox Status Register (MB = 5) */ +#define REG_CAN0_MDL5 (0x400B42B4U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 5) */ +#define REG_CAN0_MDH5 (0x400B42B8U) /**< \brief (CAN0) Mailbox Data High Register (MB = 5) */ +#define REG_CAN0_MCR5 (0x400B42BCU) /**< \brief (CAN0) Mailbox Control Register (MB = 5) */ +#define REG_CAN0_MMR6 (0x400B42C0U) /**< \brief (CAN0) Mailbox Mode Register (MB = 6) */ +#define REG_CAN0_MAM6 (0x400B42C4U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 6) */ +#define REG_CAN0_MID6 (0x400B42C8U) /**< \brief (CAN0) Mailbox ID Register (MB = 6) */ +#define REG_CAN0_MFID6 (0x400B42CCU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 6) */ +#define REG_CAN0_MSR6 (0x400B42D0U) /**< \brief (CAN0) Mailbox Status Register (MB = 6) */ +#define REG_CAN0_MDL6 (0x400B42D4U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 6) */ +#define REG_CAN0_MDH6 (0x400B42D8U) /**< \brief (CAN0) Mailbox Data High Register (MB = 6) */ +#define REG_CAN0_MCR6 (0x400B42DCU) /**< \brief (CAN0) Mailbox Control Register (MB = 6) */ +#define REG_CAN0_MMR7 (0x400B42E0U) /**< \brief (CAN0) Mailbox Mode Register (MB = 7) */ +#define REG_CAN0_MAM7 (0x400B42E4U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 7) */ +#define REG_CAN0_MID7 (0x400B42E8U) /**< \brief (CAN0) Mailbox ID Register (MB = 7) */ +#define REG_CAN0_MFID7 (0x400B42ECU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 7) */ +#define REG_CAN0_MSR7 (0x400B42F0U) /**< \brief (CAN0) Mailbox Status Register (MB = 7) */ +#define REG_CAN0_MDL7 (0x400B42F4U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 7) */ +#define REG_CAN0_MDH7 (0x400B42F8U) /**< \brief (CAN0) Mailbox Data High Register (MB = 7) */ +#define REG_CAN0_MCR7 (0x400B42FCU) /**< \brief (CAN0) Mailbox Control Register (MB = 7) */ +#else +#define REG_CAN0_MR (*(RwReg*)0x400B4000U) /**< \brief (CAN0) Mode Register */ +#define REG_CAN0_IER (*(WoReg*)0x400B4004U) /**< \brief (CAN0) Interrupt Enable Register */ +#define REG_CAN0_IDR (*(WoReg*)0x400B4008U) /**< \brief (CAN0) Interrupt Disable Register */ +#define REG_CAN0_IMR (*(RoReg*)0x400B400CU) /**< \brief (CAN0) Interrupt Mask Register */ +#define REG_CAN0_SR (*(RoReg*)0x400B4010U) /**< \brief (CAN0) Status Register */ +#define REG_CAN0_BR (*(RwReg*)0x400B4014U) /**< \brief (CAN0) Baudrate Register */ +#define REG_CAN0_TIM (*(RoReg*)0x400B4018U) /**< \brief (CAN0) Timer Register */ +#define REG_CAN0_TIMESTP (*(RoReg*)0x400B401CU) /**< \brief (CAN0) Timestamp Register */ +#define REG_CAN0_ECR (*(RoReg*)0x400B4020U) /**< \brief (CAN0) Error Counter Register */ +#define REG_CAN0_TCR (*(WoReg*)0x400B4024U) /**< \brief (CAN0) Transfer Command Register */ +#define REG_CAN0_ACR (*(WoReg*)0x400B4028U) /**< \brief (CAN0) Abort Command Register */ +#define REG_CAN0_MMR0 (*(RwReg*)0x400B4200U) /**< \brief (CAN0) Mailbox Mode Register (MB = 0) */ +#define REG_CAN0_MAM0 (*(RwReg*)0x400B4204U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 0) */ +#define REG_CAN0_MID0 (*(RwReg*)0x400B4208U) /**< \brief (CAN0) Mailbox ID Register (MB = 0) */ +#define REG_CAN0_MFID0 (*(RoReg*)0x400B420CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 0) */ +#define REG_CAN0_MSR0 (*(RoReg*)0x400B4210U) /**< \brief (CAN0) Mailbox Status Register (MB = 0) */ +#define REG_CAN0_MDL0 (*(RwReg*)0x400B4214U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 0) */ +#define REG_CAN0_MDH0 (*(RwReg*)0x400B4218U) /**< \brief (CAN0) Mailbox Data High Register (MB = 0) */ +#define REG_CAN0_MCR0 (*(WoReg*)0x400B421CU) /**< \brief (CAN0) Mailbox Control Register (MB = 0) */ +#define REG_CAN0_MMR1 (*(RwReg*)0x400B4220U) /**< \brief (CAN0) Mailbox Mode Register (MB = 1) */ +#define REG_CAN0_MAM1 (*(RwReg*)0x400B4224U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 1) */ +#define REG_CAN0_MID1 (*(RwReg*)0x400B4228U) /**< \brief (CAN0) Mailbox ID Register (MB = 1) */ +#define REG_CAN0_MFID1 (*(RoReg*)0x400B422CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 1) */ +#define REG_CAN0_MSR1 (*(RoReg*)0x400B4230U) /**< \brief (CAN0) Mailbox Status Register (MB = 1) */ +#define REG_CAN0_MDL1 (*(RwReg*)0x400B4234U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 1) */ +#define REG_CAN0_MDH1 (*(RwReg*)0x400B4238U) /**< \brief (CAN0) Mailbox Data High Register (MB = 1) */ +#define REG_CAN0_MCR1 (*(WoReg*)0x400B423CU) /**< \brief (CAN0) Mailbox Control Register (MB = 1) */ +#define REG_CAN0_MMR2 (*(RwReg*)0x400B4240U) /**< \brief (CAN0) Mailbox Mode Register (MB = 2) */ +#define REG_CAN0_MAM2 (*(RwReg*)0x400B4244U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 2) */ +#define REG_CAN0_MID2 (*(RwReg*)0x400B4248U) /**< \brief (CAN0) Mailbox ID Register (MB = 2) */ +#define REG_CAN0_MFID2 (*(RoReg*)0x400B424CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 2) */ +#define REG_CAN0_MSR2 (*(RoReg*)0x400B4250U) /**< \brief (CAN0) Mailbox Status Register (MB = 2) */ +#define REG_CAN0_MDL2 (*(RwReg*)0x400B4254U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 2) */ +#define REG_CAN0_MDH2 (*(RwReg*)0x400B4258U) /**< \brief (CAN0) Mailbox Data High Register (MB = 2) */ +#define REG_CAN0_MCR2 (*(WoReg*)0x400B425CU) /**< \brief (CAN0) Mailbox Control Register (MB = 2) */ +#define REG_CAN0_MMR3 (*(RwReg*)0x400B4260U) /**< \brief (CAN0) Mailbox Mode Register (MB = 3) */ +#define REG_CAN0_MAM3 (*(RwReg*)0x400B4264U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 3) */ +#define REG_CAN0_MID3 (*(RwReg*)0x400B4268U) /**< \brief (CAN0) Mailbox ID Register (MB = 3) */ +#define REG_CAN0_MFID3 (*(RoReg*)0x400B426CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 3) */ +#define REG_CAN0_MSR3 (*(RoReg*)0x400B4270U) /**< \brief (CAN0) Mailbox Status Register (MB = 3) */ +#define REG_CAN0_MDL3 (*(RwReg*)0x400B4274U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 3) */ +#define REG_CAN0_MDH3 (*(RwReg*)0x400B4278U) /**< \brief (CAN0) Mailbox Data High Register (MB = 3) */ +#define REG_CAN0_MCR3 (*(WoReg*)0x400B427CU) /**< \brief (CAN0) Mailbox Control Register (MB = 3) */ +#define REG_CAN0_MMR4 (*(RwReg*)0x400B4280U) /**< \brief (CAN0) Mailbox Mode Register (MB = 4) */ +#define REG_CAN0_MAM4 (*(RwReg*)0x400B4284U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 4) */ +#define REG_CAN0_MID4 (*(RwReg*)0x400B4288U) /**< \brief (CAN0) Mailbox ID Register (MB = 4) */ +#define REG_CAN0_MFID4 (*(RoReg*)0x400B428CU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 4) */ +#define REG_CAN0_MSR4 (*(RoReg*)0x400B4290U) /**< \brief (CAN0) Mailbox Status Register (MB = 4) */ +#define REG_CAN0_MDL4 (*(RwReg*)0x400B4294U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 4) */ +#define REG_CAN0_MDH4 (*(RwReg*)0x400B4298U) /**< \brief (CAN0) Mailbox Data High Register (MB = 4) */ +#define REG_CAN0_MCR4 (*(WoReg*)0x400B429CU) /**< \brief (CAN0) Mailbox Control Register (MB = 4) */ +#define REG_CAN0_MMR5 (*(RwReg*)0x400B42A0U) /**< \brief (CAN0) Mailbox Mode Register (MB = 5) */ +#define REG_CAN0_MAM5 (*(RwReg*)0x400B42A4U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 5) */ +#define REG_CAN0_MID5 (*(RwReg*)0x400B42A8U) /**< \brief (CAN0) Mailbox ID Register (MB = 5) */ +#define REG_CAN0_MFID5 (*(RoReg*)0x400B42ACU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 5) */ +#define REG_CAN0_MSR5 (*(RoReg*)0x400B42B0U) /**< \brief (CAN0) Mailbox Status Register (MB = 5) */ +#define REG_CAN0_MDL5 (*(RwReg*)0x400B42B4U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 5) */ +#define REG_CAN0_MDH5 (*(RwReg*)0x400B42B8U) /**< \brief (CAN0) Mailbox Data High Register (MB = 5) */ +#define REG_CAN0_MCR5 (*(WoReg*)0x400B42BCU) /**< \brief (CAN0) Mailbox Control Register (MB = 5) */ +#define REG_CAN0_MMR6 (*(RwReg*)0x400B42C0U) /**< \brief (CAN0) Mailbox Mode Register (MB = 6) */ +#define REG_CAN0_MAM6 (*(RwReg*)0x400B42C4U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 6) */ +#define REG_CAN0_MID6 (*(RwReg*)0x400B42C8U) /**< \brief (CAN0) Mailbox ID Register (MB = 6) */ +#define REG_CAN0_MFID6 (*(RoReg*)0x400B42CCU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 6) */ +#define REG_CAN0_MSR6 (*(RoReg*)0x400B42D0U) /**< \brief (CAN0) Mailbox Status Register (MB = 6) */ +#define REG_CAN0_MDL6 (*(RwReg*)0x400B42D4U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 6) */ +#define REG_CAN0_MDH6 (*(RwReg*)0x400B42D8U) /**< \brief (CAN0) Mailbox Data High Register (MB = 6) */ +#define REG_CAN0_MCR6 (*(WoReg*)0x400B42DCU) /**< \brief (CAN0) Mailbox Control Register (MB = 6) */ +#define REG_CAN0_MMR7 (*(RwReg*)0x400B42E0U) /**< \brief (CAN0) Mailbox Mode Register (MB = 7) */ +#define REG_CAN0_MAM7 (*(RwReg*)0x400B42E4U) /**< \brief (CAN0) Mailbox Acceptance Mask Register (MB = 7) */ +#define REG_CAN0_MID7 (*(RwReg*)0x400B42E8U) /**< \brief (CAN0) Mailbox ID Register (MB = 7) */ +#define REG_CAN0_MFID7 (*(RoReg*)0x400B42ECU) /**< \brief (CAN0) Mailbox Family ID Register (MB = 7) */ +#define REG_CAN0_MSR7 (*(RoReg*)0x400B42F0U) /**< \brief (CAN0) Mailbox Status Register (MB = 7) */ +#define REG_CAN0_MDL7 (*(RwReg*)0x400B42F4U) /**< \brief (CAN0) Mailbox Data Low Register (MB = 7) */ +#define REG_CAN0_MDH7 (*(RwReg*)0x400B42F8U) /**< \brief (CAN0) Mailbox Data High Register (MB = 7) */ +#define REG_CAN0_MCR7 (*(WoReg*)0x400B42FCU) /**< \brief (CAN0) Mailbox Control Register (MB = 7) */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_CAN0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_can1.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_can1.h new file mode 100644 index 000000000..4662d18ab --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_can1.h @@ -0,0 +1,188 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_CAN1_INSTANCE_ +#define _SAM3XA_CAN1_INSTANCE_ + +/* ========== Register definition for CAN1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_CAN1_MR (0x400B8000U) /**< \brief (CAN1) Mode Register */ +#define REG_CAN1_IER (0x400B8004U) /**< \brief (CAN1) Interrupt Enable Register */ +#define REG_CAN1_IDR (0x400B8008U) /**< \brief (CAN1) Interrupt Disable Register */ +#define REG_CAN1_IMR (0x400B800CU) /**< \brief (CAN1) Interrupt Mask Register */ +#define REG_CAN1_SR (0x400B8010U) /**< \brief (CAN1) Status Register */ +#define REG_CAN1_BR (0x400B8014U) /**< \brief (CAN1) Baudrate Register */ +#define REG_CAN1_TIM (0x400B8018U) /**< \brief (CAN1) Timer Register */ +#define REG_CAN1_TIMESTP (0x400B801CU) /**< \brief (CAN1) Timestamp Register */ +#define REG_CAN1_ECR (0x400B8020U) /**< \brief (CAN1) Error Counter Register */ +#define REG_CAN1_TCR (0x400B8024U) /**< \brief (CAN1) Transfer Command Register */ +#define REG_CAN1_ACR (0x400B8028U) /**< \brief (CAN1) Abort Command Register */ +#define REG_CAN1_MMR0 (0x400B8200U) /**< \brief (CAN1) Mailbox Mode Register (MB = 0) */ +#define REG_CAN1_MAM0 (0x400B8204U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 0) */ +#define REG_CAN1_MID0 (0x400B8208U) /**< \brief (CAN1) Mailbox ID Register (MB = 0) */ +#define REG_CAN1_MFID0 (0x400B820CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 0) */ +#define REG_CAN1_MSR0 (0x400B8210U) /**< \brief (CAN1) Mailbox Status Register (MB = 0) */ +#define REG_CAN1_MDL0 (0x400B8214U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 0) */ +#define REG_CAN1_MDH0 (0x400B8218U) /**< \brief (CAN1) Mailbox Data High Register (MB = 0) */ +#define REG_CAN1_MCR0 (0x400B821CU) /**< \brief (CAN1) Mailbox Control Register (MB = 0) */ +#define REG_CAN1_MMR1 (0x400B8220U) /**< \brief (CAN1) Mailbox Mode Register (MB = 1) */ +#define REG_CAN1_MAM1 (0x400B8224U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 1) */ +#define REG_CAN1_MID1 (0x400B8228U) /**< \brief (CAN1) Mailbox ID Register (MB = 1) */ +#define REG_CAN1_MFID1 (0x400B822CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 1) */ +#define REG_CAN1_MSR1 (0x400B8230U) /**< \brief (CAN1) Mailbox Status Register (MB = 1) */ +#define REG_CAN1_MDL1 (0x400B8234U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 1) */ +#define REG_CAN1_MDH1 (0x400B8238U) /**< \brief (CAN1) Mailbox Data High Register (MB = 1) */ +#define REG_CAN1_MCR1 (0x400B823CU) /**< \brief (CAN1) Mailbox Control Register (MB = 1) */ +#define REG_CAN1_MMR2 (0x400B8240U) /**< \brief (CAN1) Mailbox Mode Register (MB = 2) */ +#define REG_CAN1_MAM2 (0x400B8244U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 2) */ +#define REG_CAN1_MID2 (0x400B8248U) /**< \brief (CAN1) Mailbox ID Register (MB = 2) */ +#define REG_CAN1_MFID2 (0x400B824CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 2) */ +#define REG_CAN1_MSR2 (0x400B8250U) /**< \brief (CAN1) Mailbox Status Register (MB = 2) */ +#define REG_CAN1_MDL2 (0x400B8254U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 2) */ +#define REG_CAN1_MDH2 (0x400B8258U) /**< \brief (CAN1) Mailbox Data High Register (MB = 2) */ +#define REG_CAN1_MCR2 (0x400B825CU) /**< \brief (CAN1) Mailbox Control Register (MB = 2) */ +#define REG_CAN1_MMR3 (0x400B8260U) /**< \brief (CAN1) Mailbox Mode Register (MB = 3) */ +#define REG_CAN1_MAM3 (0x400B8264U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 3) */ +#define REG_CAN1_MID3 (0x400B8268U) /**< \brief (CAN1) Mailbox ID Register (MB = 3) */ +#define REG_CAN1_MFID3 (0x400B826CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 3) */ +#define REG_CAN1_MSR3 (0x400B8270U) /**< \brief (CAN1) Mailbox Status Register (MB = 3) */ +#define REG_CAN1_MDL3 (0x400B8274U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 3) */ +#define REG_CAN1_MDH3 (0x400B8278U) /**< \brief (CAN1) Mailbox Data High Register (MB = 3) */ +#define REG_CAN1_MCR3 (0x400B827CU) /**< \brief (CAN1) Mailbox Control Register (MB = 3) */ +#define REG_CAN1_MMR4 (0x400B8280U) /**< \brief (CAN1) Mailbox Mode Register (MB = 4) */ +#define REG_CAN1_MAM4 (0x400B8284U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 4) */ +#define REG_CAN1_MID4 (0x400B8288U) /**< \brief (CAN1) Mailbox ID Register (MB = 4) */ +#define REG_CAN1_MFID4 (0x400B828CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 4) */ +#define REG_CAN1_MSR4 (0x400B8290U) /**< \brief (CAN1) Mailbox Status Register (MB = 4) */ +#define REG_CAN1_MDL4 (0x400B8294U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 4) */ +#define REG_CAN1_MDH4 (0x400B8298U) /**< \brief (CAN1) Mailbox Data High Register (MB = 4) */ +#define REG_CAN1_MCR4 (0x400B829CU) /**< \brief (CAN1) Mailbox Control Register (MB = 4) */ +#define REG_CAN1_MMR5 (0x400B82A0U) /**< \brief (CAN1) Mailbox Mode Register (MB = 5) */ +#define REG_CAN1_MAM5 (0x400B82A4U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 5) */ +#define REG_CAN1_MID5 (0x400B82A8U) /**< \brief (CAN1) Mailbox ID Register (MB = 5) */ +#define REG_CAN1_MFID5 (0x400B82ACU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 5) */ +#define REG_CAN1_MSR5 (0x400B82B0U) /**< \brief (CAN1) Mailbox Status Register (MB = 5) */ +#define REG_CAN1_MDL5 (0x400B82B4U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 5) */ +#define REG_CAN1_MDH5 (0x400B82B8U) /**< \brief (CAN1) Mailbox Data High Register (MB = 5) */ +#define REG_CAN1_MCR5 (0x400B82BCU) /**< \brief (CAN1) Mailbox Control Register (MB = 5) */ +#define REG_CAN1_MMR6 (0x400B82C0U) /**< \brief (CAN1) Mailbox Mode Register (MB = 6) */ +#define REG_CAN1_MAM6 (0x400B82C4U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 6) */ +#define REG_CAN1_MID6 (0x400B82C8U) /**< \brief (CAN1) Mailbox ID Register (MB = 6) */ +#define REG_CAN1_MFID6 (0x400B82CCU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 6) */ +#define REG_CAN1_MSR6 (0x400B82D0U) /**< \brief (CAN1) Mailbox Status Register (MB = 6) */ +#define REG_CAN1_MDL6 (0x400B82D4U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 6) */ +#define REG_CAN1_MDH6 (0x400B82D8U) /**< \brief (CAN1) Mailbox Data High Register (MB = 6) */ +#define REG_CAN1_MCR6 (0x400B82DCU) /**< \brief (CAN1) Mailbox Control Register (MB = 6) */ +#define REG_CAN1_MMR7 (0x400B82E0U) /**< \brief (CAN1) Mailbox Mode Register (MB = 7) */ +#define REG_CAN1_MAM7 (0x400B82E4U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 7) */ +#define REG_CAN1_MID7 (0x400B82E8U) /**< \brief (CAN1) Mailbox ID Register (MB = 7) */ +#define REG_CAN1_MFID7 (0x400B82ECU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 7) */ +#define REG_CAN1_MSR7 (0x400B82F0U) /**< \brief (CAN1) Mailbox Status Register (MB = 7) */ +#define REG_CAN1_MDL7 (0x400B82F4U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 7) */ +#define REG_CAN1_MDH7 (0x400B82F8U) /**< \brief (CAN1) Mailbox Data High Register (MB = 7) */ +#define REG_CAN1_MCR7 (0x400B82FCU) /**< \brief (CAN1) Mailbox Control Register (MB = 7) */ +#else +#define REG_CAN1_MR (*(RwReg*)0x400B8000U) /**< \brief (CAN1) Mode Register */ +#define REG_CAN1_IER (*(WoReg*)0x400B8004U) /**< \brief (CAN1) Interrupt Enable Register */ +#define REG_CAN1_IDR (*(WoReg*)0x400B8008U) /**< \brief (CAN1) Interrupt Disable Register */ +#define REG_CAN1_IMR (*(RoReg*)0x400B800CU) /**< \brief (CAN1) Interrupt Mask Register */ +#define REG_CAN1_SR (*(RoReg*)0x400B8010U) /**< \brief (CAN1) Status Register */ +#define REG_CAN1_BR (*(RwReg*)0x400B8014U) /**< \brief (CAN1) Baudrate Register */ +#define REG_CAN1_TIM (*(RoReg*)0x400B8018U) /**< \brief (CAN1) Timer Register */ +#define REG_CAN1_TIMESTP (*(RoReg*)0x400B801CU) /**< \brief (CAN1) Timestamp Register */ +#define REG_CAN1_ECR (*(RoReg*)0x400B8020U) /**< \brief (CAN1) Error Counter Register */ +#define REG_CAN1_TCR (*(WoReg*)0x400B8024U) /**< \brief (CAN1) Transfer Command Register */ +#define REG_CAN1_ACR (*(WoReg*)0x400B8028U) /**< \brief (CAN1) Abort Command Register */ +#define REG_CAN1_MMR0 (*(RwReg*)0x400B8200U) /**< \brief (CAN1) Mailbox Mode Register (MB = 0) */ +#define REG_CAN1_MAM0 (*(RwReg*)0x400B8204U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 0) */ +#define REG_CAN1_MID0 (*(RwReg*)0x400B8208U) /**< \brief (CAN1) Mailbox ID Register (MB = 0) */ +#define REG_CAN1_MFID0 (*(RoReg*)0x400B820CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 0) */ +#define REG_CAN1_MSR0 (*(RoReg*)0x400B8210U) /**< \brief (CAN1) Mailbox Status Register (MB = 0) */ +#define REG_CAN1_MDL0 (*(RwReg*)0x400B8214U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 0) */ +#define REG_CAN1_MDH0 (*(RwReg*)0x400B8218U) /**< \brief (CAN1) Mailbox Data High Register (MB = 0) */ +#define REG_CAN1_MCR0 (*(WoReg*)0x400B821CU) /**< \brief (CAN1) Mailbox Control Register (MB = 0) */ +#define REG_CAN1_MMR1 (*(RwReg*)0x400B8220U) /**< \brief (CAN1) Mailbox Mode Register (MB = 1) */ +#define REG_CAN1_MAM1 (*(RwReg*)0x400B8224U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 1) */ +#define REG_CAN1_MID1 (*(RwReg*)0x400B8228U) /**< \brief (CAN1) Mailbox ID Register (MB = 1) */ +#define REG_CAN1_MFID1 (*(RoReg*)0x400B822CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 1) */ +#define REG_CAN1_MSR1 (*(RoReg*)0x400B8230U) /**< \brief (CAN1) Mailbox Status Register (MB = 1) */ +#define REG_CAN1_MDL1 (*(RwReg*)0x400B8234U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 1) */ +#define REG_CAN1_MDH1 (*(RwReg*)0x400B8238U) /**< \brief (CAN1) Mailbox Data High Register (MB = 1) */ +#define REG_CAN1_MCR1 (*(WoReg*)0x400B823CU) /**< \brief (CAN1) Mailbox Control Register (MB = 1) */ +#define REG_CAN1_MMR2 (*(RwReg*)0x400B8240U) /**< \brief (CAN1) Mailbox Mode Register (MB = 2) */ +#define REG_CAN1_MAM2 (*(RwReg*)0x400B8244U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 2) */ +#define REG_CAN1_MID2 (*(RwReg*)0x400B8248U) /**< \brief (CAN1) Mailbox ID Register (MB = 2) */ +#define REG_CAN1_MFID2 (*(RoReg*)0x400B824CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 2) */ +#define REG_CAN1_MSR2 (*(RoReg*)0x400B8250U) /**< \brief (CAN1) Mailbox Status Register (MB = 2) */ +#define REG_CAN1_MDL2 (*(RwReg*)0x400B8254U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 2) */ +#define REG_CAN1_MDH2 (*(RwReg*)0x400B8258U) /**< \brief (CAN1) Mailbox Data High Register (MB = 2) */ +#define REG_CAN1_MCR2 (*(WoReg*)0x400B825CU) /**< \brief (CAN1) Mailbox Control Register (MB = 2) */ +#define REG_CAN1_MMR3 (*(RwReg*)0x400B8260U) /**< \brief (CAN1) Mailbox Mode Register (MB = 3) */ +#define REG_CAN1_MAM3 (*(RwReg*)0x400B8264U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 3) */ +#define REG_CAN1_MID3 (*(RwReg*)0x400B8268U) /**< \brief (CAN1) Mailbox ID Register (MB = 3) */ +#define REG_CAN1_MFID3 (*(RoReg*)0x400B826CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 3) */ +#define REG_CAN1_MSR3 (*(RoReg*)0x400B8270U) /**< \brief (CAN1) Mailbox Status Register (MB = 3) */ +#define REG_CAN1_MDL3 (*(RwReg*)0x400B8274U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 3) */ +#define REG_CAN1_MDH3 (*(RwReg*)0x400B8278U) /**< \brief (CAN1) Mailbox Data High Register (MB = 3) */ +#define REG_CAN1_MCR3 (*(WoReg*)0x400B827CU) /**< \brief (CAN1) Mailbox Control Register (MB = 3) */ +#define REG_CAN1_MMR4 (*(RwReg*)0x400B8280U) /**< \brief (CAN1) Mailbox Mode Register (MB = 4) */ +#define REG_CAN1_MAM4 (*(RwReg*)0x400B8284U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 4) */ +#define REG_CAN1_MID4 (*(RwReg*)0x400B8288U) /**< \brief (CAN1) Mailbox ID Register (MB = 4) */ +#define REG_CAN1_MFID4 (*(RoReg*)0x400B828CU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 4) */ +#define REG_CAN1_MSR4 (*(RoReg*)0x400B8290U) /**< \brief (CAN1) Mailbox Status Register (MB = 4) */ +#define REG_CAN1_MDL4 (*(RwReg*)0x400B8294U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 4) */ +#define REG_CAN1_MDH4 (*(RwReg*)0x400B8298U) /**< \brief (CAN1) Mailbox Data High Register (MB = 4) */ +#define REG_CAN1_MCR4 (*(WoReg*)0x400B829CU) /**< \brief (CAN1) Mailbox Control Register (MB = 4) */ +#define REG_CAN1_MMR5 (*(RwReg*)0x400B82A0U) /**< \brief (CAN1) Mailbox Mode Register (MB = 5) */ +#define REG_CAN1_MAM5 (*(RwReg*)0x400B82A4U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 5) */ +#define REG_CAN1_MID5 (*(RwReg*)0x400B82A8U) /**< \brief (CAN1) Mailbox ID Register (MB = 5) */ +#define REG_CAN1_MFID5 (*(RoReg*)0x400B82ACU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 5) */ +#define REG_CAN1_MSR5 (*(RoReg*)0x400B82B0U) /**< \brief (CAN1) Mailbox Status Register (MB = 5) */ +#define REG_CAN1_MDL5 (*(RwReg*)0x400B82B4U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 5) */ +#define REG_CAN1_MDH5 (*(RwReg*)0x400B82B8U) /**< \brief (CAN1) Mailbox Data High Register (MB = 5) */ +#define REG_CAN1_MCR5 (*(WoReg*)0x400B82BCU) /**< \brief (CAN1) Mailbox Control Register (MB = 5) */ +#define REG_CAN1_MMR6 (*(RwReg*)0x400B82C0U) /**< \brief (CAN1) Mailbox Mode Register (MB = 6) */ +#define REG_CAN1_MAM6 (*(RwReg*)0x400B82C4U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 6) */ +#define REG_CAN1_MID6 (*(RwReg*)0x400B82C8U) /**< \brief (CAN1) Mailbox ID Register (MB = 6) */ +#define REG_CAN1_MFID6 (*(RoReg*)0x400B82CCU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 6) */ +#define REG_CAN1_MSR6 (*(RoReg*)0x400B82D0U) /**< \brief (CAN1) Mailbox Status Register (MB = 6) */ +#define REG_CAN1_MDL6 (*(RwReg*)0x400B82D4U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 6) */ +#define REG_CAN1_MDH6 (*(RwReg*)0x400B82D8U) /**< \brief (CAN1) Mailbox Data High Register (MB = 6) */ +#define REG_CAN1_MCR6 (*(WoReg*)0x400B82DCU) /**< \brief (CAN1) Mailbox Control Register (MB = 6) */ +#define REG_CAN1_MMR7 (*(RwReg*)0x400B82E0U) /**< \brief (CAN1) Mailbox Mode Register (MB = 7) */ +#define REG_CAN1_MAM7 (*(RwReg*)0x400B82E4U) /**< \brief (CAN1) Mailbox Acceptance Mask Register (MB = 7) */ +#define REG_CAN1_MID7 (*(RwReg*)0x400B82E8U) /**< \brief (CAN1) Mailbox ID Register (MB = 7) */ +#define REG_CAN1_MFID7 (*(RoReg*)0x400B82ECU) /**< \brief (CAN1) Mailbox Family ID Register (MB = 7) */ +#define REG_CAN1_MSR7 (*(RoReg*)0x400B82F0U) /**< \brief (CAN1) Mailbox Status Register (MB = 7) */ +#define REG_CAN1_MDL7 (*(RwReg*)0x400B82F4U) /**< \brief (CAN1) Mailbox Data Low Register (MB = 7) */ +#define REG_CAN1_MDH7 (*(RwReg*)0x400B82F8U) /**< \brief (CAN1) Mailbox Data High Register (MB = 7) */ +#define REG_CAN1_MCR7 (*(WoReg*)0x400B82FCU) /**< \brief (CAN1) Mailbox Control Register (MB = 7) */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_CAN1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_chipid.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_chipid.h new file mode 100644 index 000000000..b5f550d22 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_chipid.h @@ -0,0 +1,42 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_CHIPID_INSTANCE_ +#define _SAM3XA_CHIPID_INSTANCE_ + +/* ========== Register definition for CHIPID peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_CHIPID_CIDR (0x400E0940U) /**< \brief (CHIPID) Chip ID Register */ +#define REG_CHIPID_EXID (0x400E0944U) /**< \brief (CHIPID) Chip ID Extension Register */ +#else +#define REG_CHIPID_CIDR (*(RoReg*)0x400E0940U) /**< \brief (CHIPID) Chip ID Register */ +#define REG_CHIPID_EXID (*(RoReg*)0x400E0944U) /**< \brief (CHIPID) Chip ID Extension Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_CHIPID_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_dacc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_dacc.h new file mode 100644 index 000000000..e27cb4ef7 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_dacc.h @@ -0,0 +1,84 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_DACC_INSTANCE_ +#define _SAM3XA_DACC_INSTANCE_ + +/* ========== Register definition for DACC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_DACC_CR (0x400C8000U) /**< \brief (DACC) Control Register */ +#define REG_DACC_MR (0x400C8004U) /**< \brief (DACC) Mode Register */ +#define REG_DACC_CHER (0x400C8010U) /**< \brief (DACC) Channel Enable Register */ +#define REG_DACC_CHDR (0x400C8014U) /**< \brief (DACC) Channel Disable Register */ +#define REG_DACC_CHSR (0x400C8018U) /**< \brief (DACC) Channel Status Register */ +#define REG_DACC_CDR (0x400C8020U) /**< \brief (DACC) Conversion Data Register */ +#define REG_DACC_IER (0x400C8024U) /**< \brief (DACC) Interrupt Enable Register */ +#define REG_DACC_IDR (0x400C8028U) /**< \brief (DACC) Interrupt Disable Register */ +#define REG_DACC_IMR (0x400C802CU) /**< \brief (DACC) Interrupt Mask Register */ +#define REG_DACC_ISR (0x400C8030U) /**< \brief (DACC) Interrupt Status Register */ +#define REG_DACC_ACR (0x400C8094U) /**< \brief (DACC) Analog Current Register */ +#define REG_DACC_WPMR (0x400C80E4U) /**< \brief (DACC) Write Protect Mode register */ +#define REG_DACC_WPSR (0x400C80E8U) /**< \brief (DACC) Write Protect Status register */ +#define REG_DACC_RPR (0x400C8100U) /**< \brief (DACC) Receive Pointer Register */ +#define REG_DACC_RCR (0x400C8104U) /**< \brief (DACC) Receive Counter Register */ +#define REG_DACC_TPR (0x400C8108U) /**< \brief (DACC) Transmit Pointer Register */ +#define REG_DACC_TCR (0x400C810CU) /**< \brief (DACC) Transmit Counter Register */ +#define REG_DACC_RNPR (0x400C8110U) /**< \brief (DACC) Receive Next Pointer Register */ +#define REG_DACC_RNCR (0x400C8114U) /**< \brief (DACC) Receive Next Counter Register */ +#define REG_DACC_TNPR (0x400C8118U) /**< \brief (DACC) Transmit Next Pointer Register */ +#define REG_DACC_TNCR (0x400C811CU) /**< \brief (DACC) Transmit Next Counter Register */ +#define REG_DACC_PTCR (0x400C8120U) /**< \brief (DACC) Transfer Control Register */ +#define REG_DACC_PTSR (0x400C8124U) /**< \brief (DACC) Transfer Status Register */ +#else +#define REG_DACC_CR (*(WoReg*)0x400C8000U) /**< \brief (DACC) Control Register */ +#define REG_DACC_MR (*(RwReg*)0x400C8004U) /**< \brief (DACC) Mode Register */ +#define REG_DACC_CHER (*(WoReg*)0x400C8010U) /**< \brief (DACC) Channel Enable Register */ +#define REG_DACC_CHDR (*(WoReg*)0x400C8014U) /**< \brief (DACC) Channel Disable Register */ +#define REG_DACC_CHSR (*(RoReg*)0x400C8018U) /**< \brief (DACC) Channel Status Register */ +#define REG_DACC_CDR (*(WoReg*)0x400C8020U) /**< \brief (DACC) Conversion Data Register */ +#define REG_DACC_IER (*(WoReg*)0x400C8024U) /**< \brief (DACC) Interrupt Enable Register */ +#define REG_DACC_IDR (*(WoReg*)0x400C8028U) /**< \brief (DACC) Interrupt Disable Register */ +#define REG_DACC_IMR (*(RoReg*)0x400C802CU) /**< \brief (DACC) Interrupt Mask Register */ +#define REG_DACC_ISR (*(RoReg*)0x400C8030U) /**< \brief (DACC) Interrupt Status Register */ +#define REG_DACC_ACR (*(RwReg*)0x400C8094U) /**< \brief (DACC) Analog Current Register */ +#define REG_DACC_WPMR (*(RwReg*)0x400C80E4U) /**< \brief (DACC) Write Protect Mode register */ +#define REG_DACC_WPSR (*(RoReg*)0x400C80E8U) /**< \brief (DACC) Write Protect Status register */ +#define REG_DACC_RPR (*(RwReg*)0x400C8100U) /**< \brief (DACC) Receive Pointer Register */ +#define REG_DACC_RCR (*(RwReg*)0x400C8104U) /**< \brief (DACC) Receive Counter Register */ +#define REG_DACC_TPR (*(RwReg*)0x400C8108U) /**< \brief (DACC) Transmit Pointer Register */ +#define REG_DACC_TCR (*(RwReg*)0x400C810CU) /**< \brief (DACC) Transmit Counter Register */ +#define REG_DACC_RNPR (*(RwReg*)0x400C8110U) /**< \brief (DACC) Receive Next Pointer Register */ +#define REG_DACC_RNCR (*(RwReg*)0x400C8114U) /**< \brief (DACC) Receive Next Counter Register */ +#define REG_DACC_TNPR (*(RwReg*)0x400C8118U) /**< \brief (DACC) Transmit Next Pointer Register */ +#define REG_DACC_TNCR (*(RwReg*)0x400C811CU) /**< \brief (DACC) Transmit Next Counter Register */ +#define REG_DACC_PTCR (*(WoReg*)0x400C8120U) /**< \brief (DACC) Transfer Control Register */ +#define REG_DACC_PTSR (*(RoReg*)0x400C8124U) /**< \brief (DACC) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_DACC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_dmac.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_dmac.h new file mode 100644 index 000000000..1301e38eb --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_dmac.h @@ -0,0 +1,138 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_DMAC_INSTANCE_ +#define _SAM3XA_DMAC_INSTANCE_ + +/* ========== Register definition for DMAC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_DMAC_GCFG (0x400C4000U) /**< \brief (DMAC) DMAC Global Configuration Register */ +#define REG_DMAC_EN (0x400C4004U) /**< \brief (DMAC) DMAC Enable Register */ +#define REG_DMAC_SREQ (0x400C4008U) /**< \brief (DMAC) DMAC Software Single Request Register */ +#define REG_DMAC_CREQ (0x400C400CU) /**< \brief (DMAC) DMAC Software Chunk Transfer Request Register */ +#define REG_DMAC_LAST (0x400C4010U) /**< \brief (DMAC) DMAC Software Last Transfer Flag Register */ +#define REG_DMAC_EBCIER (0x400C4018U) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Enable register. */ +#define REG_DMAC_EBCIDR (0x400C401CU) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Disable register. */ +#define REG_DMAC_EBCIMR (0x400C4020U) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Mask Register. */ +#define REG_DMAC_EBCISR (0x400C4024U) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Status Register. */ +#define REG_DMAC_CHER (0x400C4028U) /**< \brief (DMAC) DMAC Channel Handler Enable Register */ +#define REG_DMAC_CHDR (0x400C402CU) /**< \brief (DMAC) DMAC Channel Handler Disable Register */ +#define REG_DMAC_CHSR (0x400C4030U) /**< \brief (DMAC) DMAC Channel Handler Status Register */ +#define REG_DMAC_SADDR0 (0x400C403CU) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 0) */ +#define REG_DMAC_DADDR0 (0x400C4040U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 0) */ +#define REG_DMAC_DSCR0 (0x400C4044U) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 0) */ +#define REG_DMAC_CTRLA0 (0x400C4048U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 0) */ +#define REG_DMAC_CTRLB0 (0x400C404CU) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 0) */ +#define REG_DMAC_CFG0 (0x400C4050U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 0) */ +#define REG_DMAC_SADDR1 (0x400C4064U) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 1) */ +#define REG_DMAC_DADDR1 (0x400C4068U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 1) */ +#define REG_DMAC_DSCR1 (0x400C406CU) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 1) */ +#define REG_DMAC_CTRLA1 (0x400C4070U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 1) */ +#define REG_DMAC_CTRLB1 (0x400C4074U) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 1) */ +#define REG_DMAC_CFG1 (0x400C4078U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 1) */ +#define REG_DMAC_SADDR2 (0x400C408CU) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 2) */ +#define REG_DMAC_DADDR2 (0x400C4090U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 2) */ +#define REG_DMAC_DSCR2 (0x400C4094U) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 2) */ +#define REG_DMAC_CTRLA2 (0x400C4098U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 2) */ +#define REG_DMAC_CTRLB2 (0x400C409CU) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 2) */ +#define REG_DMAC_CFG2 (0x400C40A0U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 2) */ +#define REG_DMAC_SADDR3 (0x400C40B4U) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 3) */ +#define REG_DMAC_DADDR3 (0x400C40B8U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 3) */ +#define REG_DMAC_DSCR3 (0x400C40BCU) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 3) */ +#define REG_DMAC_CTRLA3 (0x400C40C0U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 3) */ +#define REG_DMAC_CTRLB3 (0x400C40C4U) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 3) */ +#define REG_DMAC_CFG3 (0x400C40C8U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 3) */ +#define REG_DMAC_SADDR4 (0x400C40DCU) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 4) */ +#define REG_DMAC_DADDR4 (0x400C40E0U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 4) */ +#define REG_DMAC_DSCR4 (0x400C40E4U) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 4) */ +#define REG_DMAC_CTRLA4 (0x400C40E8U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 4) */ +#define REG_DMAC_CTRLB4 (0x400C40ECU) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 4) */ +#define REG_DMAC_CFG4 (0x400C40F0U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 4) */ +#define REG_DMAC_SADDR5 (0x400C4104U) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 5) */ +#define REG_DMAC_DADDR5 (0x400C4108U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 5) */ +#define REG_DMAC_DSCR5 (0x400C410CU) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 5) */ +#define REG_DMAC_CTRLA5 (0x400C4110U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 5) */ +#define REG_DMAC_CTRLB5 (0x400C4114U) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 5) */ +#define REG_DMAC_CFG5 (0x400C4118U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 5) */ +#define REG_DMAC_WPMR (0x400C41E4U) /**< \brief (DMAC) DMAC Write Protect Mode Register */ +#define REG_DMAC_WPSR (0x400C41E8U) /**< \brief (DMAC) DMAC Write Protect Status Register */ +#else +#define REG_DMAC_GCFG (*(RwReg*)0x400C4000U) /**< \brief (DMAC) DMAC Global Configuration Register */ +#define REG_DMAC_EN (*(RwReg*)0x400C4004U) /**< \brief (DMAC) DMAC Enable Register */ +#define REG_DMAC_SREQ (*(RwReg*)0x400C4008U) /**< \brief (DMAC) DMAC Software Single Request Register */ +#define REG_DMAC_CREQ (*(RwReg*)0x400C400CU) /**< \brief (DMAC) DMAC Software Chunk Transfer Request Register */ +#define REG_DMAC_LAST (*(RwReg*)0x400C4010U) /**< \brief (DMAC) DMAC Software Last Transfer Flag Register */ +#define REG_DMAC_EBCIER (*(WoReg*)0x400C4018U) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Enable register. */ +#define REG_DMAC_EBCIDR (*(WoReg*)0x400C401CU) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer Transfer Completed Interrupt Disable register. */ +#define REG_DMAC_EBCIMR (*(RoReg*)0x400C4020U) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Mask Register. */ +#define REG_DMAC_EBCISR (*(RoReg*)0x400C4024U) /**< \brief (DMAC) DMAC Error, Chained Buffer Transfer Completed Interrupt and Buffer transfer completed Status Register. */ +#define REG_DMAC_CHER (*(WoReg*)0x400C4028U) /**< \brief (DMAC) DMAC Channel Handler Enable Register */ +#define REG_DMAC_CHDR (*(WoReg*)0x400C402CU) /**< \brief (DMAC) DMAC Channel Handler Disable Register */ +#define REG_DMAC_CHSR (*(RoReg*)0x400C4030U) /**< \brief (DMAC) DMAC Channel Handler Status Register */ +#define REG_DMAC_SADDR0 (*(RwReg*)0x400C403CU) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 0) */ +#define REG_DMAC_DADDR0 (*(RwReg*)0x400C4040U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 0) */ +#define REG_DMAC_DSCR0 (*(RwReg*)0x400C4044U) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 0) */ +#define REG_DMAC_CTRLA0 (*(RwReg*)0x400C4048U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 0) */ +#define REG_DMAC_CTRLB0 (*(RwReg*)0x400C404CU) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 0) */ +#define REG_DMAC_CFG0 (*(RwReg*)0x400C4050U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 0) */ +#define REG_DMAC_SADDR1 (*(RwReg*)0x400C4064U) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 1) */ +#define REG_DMAC_DADDR1 (*(RwReg*)0x400C4068U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 1) */ +#define REG_DMAC_DSCR1 (*(RwReg*)0x400C406CU) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 1) */ +#define REG_DMAC_CTRLA1 (*(RwReg*)0x400C4070U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 1) */ +#define REG_DMAC_CTRLB1 (*(RwReg*)0x400C4074U) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 1) */ +#define REG_DMAC_CFG1 (*(RwReg*)0x400C4078U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 1) */ +#define REG_DMAC_SADDR2 (*(RwReg*)0x400C408CU) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 2) */ +#define REG_DMAC_DADDR2 (*(RwReg*)0x400C4090U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 2) */ +#define REG_DMAC_DSCR2 (*(RwReg*)0x400C4094U) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 2) */ +#define REG_DMAC_CTRLA2 (*(RwReg*)0x400C4098U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 2) */ +#define REG_DMAC_CTRLB2 (*(RwReg*)0x400C409CU) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 2) */ +#define REG_DMAC_CFG2 (*(RwReg*)0x400C40A0U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 2) */ +#define REG_DMAC_SADDR3 (*(RwReg*)0x400C40B4U) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 3) */ +#define REG_DMAC_DADDR3 (*(RwReg*)0x400C40B8U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 3) */ +#define REG_DMAC_DSCR3 (*(RwReg*)0x400C40BCU) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 3) */ +#define REG_DMAC_CTRLA3 (*(RwReg*)0x400C40C0U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 3) */ +#define REG_DMAC_CTRLB3 (*(RwReg*)0x400C40C4U) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 3) */ +#define REG_DMAC_CFG3 (*(RwReg*)0x400C40C8U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 3) */ +#define REG_DMAC_SADDR4 (*(RwReg*)0x400C40DCU) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 4) */ +#define REG_DMAC_DADDR4 (*(RwReg*)0x400C40E0U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 4) */ +#define REG_DMAC_DSCR4 (*(RwReg*)0x400C40E4U) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 4) */ +#define REG_DMAC_CTRLA4 (*(RwReg*)0x400C40E8U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 4) */ +#define REG_DMAC_CTRLB4 (*(RwReg*)0x400C40ECU) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 4) */ +#define REG_DMAC_CFG4 (*(RwReg*)0x400C40F0U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 4) */ +#define REG_DMAC_SADDR5 (*(RwReg*)0x400C4104U) /**< \brief (DMAC) DMAC Channel Source Address Register (ch_num = 5) */ +#define REG_DMAC_DADDR5 (*(RwReg*)0x400C4108U) /**< \brief (DMAC) DMAC Channel Destination Address Register (ch_num = 5) */ +#define REG_DMAC_DSCR5 (*(RwReg*)0x400C410CU) /**< \brief (DMAC) DMAC Channel Descriptor Address Register (ch_num = 5) */ +#define REG_DMAC_CTRLA5 (*(RwReg*)0x400C4110U) /**< \brief (DMAC) DMAC Channel Control A Register (ch_num = 5) */ +#define REG_DMAC_CTRLB5 (*(RwReg*)0x400C4114U) /**< \brief (DMAC) DMAC Channel Control B Register (ch_num = 5) */ +#define REG_DMAC_CFG5 (*(RwReg*)0x400C4118U) /**< \brief (DMAC) DMAC Channel Configuration Register (ch_num = 5) */ +#define REG_DMAC_WPMR (*(RwReg*)0x400C41E4U) /**< \brief (DMAC) DMAC Write Protect Mode Register */ +#define REG_DMAC_WPSR (*(RoReg*)0x400C41E8U) /**< \brief (DMAC) DMAC Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_DMAC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_efc0.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_efc0.h new file mode 100644 index 000000000..278d2cc57 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_efc0.h @@ -0,0 +1,46 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_EFC0_INSTANCE_ +#define _SAM3XA_EFC0_INSTANCE_ + +/* ========== Register definition for EFC0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_EFC0_FMR (0x400E0A00U) /**< \brief (EFC0) EEFC Flash Mode Register */ +#define REG_EFC0_FCR (0x400E0A04U) /**< \brief (EFC0) EEFC Flash Command Register */ +#define REG_EFC0_FSR (0x400E0A08U) /**< \brief (EFC0) EEFC Flash Status Register */ +#define REG_EFC0_FRR (0x400E0A0CU) /**< \brief (EFC0) EEFC Flash Result Register */ +#else +#define REG_EFC0_FMR (*(RwReg*)0x400E0A00U) /**< \brief (EFC0) EEFC Flash Mode Register */ +#define REG_EFC0_FCR (*(WoReg*)0x400E0A04U) /**< \brief (EFC0) EEFC Flash Command Register */ +#define REG_EFC0_FSR (*(RoReg*)0x400E0A08U) /**< \brief (EFC0) EEFC Flash Status Register */ +#define REG_EFC0_FRR (*(RoReg*)0x400E0A0CU) /**< \brief (EFC0) EEFC Flash Result Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_EFC0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_efc1.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_efc1.h new file mode 100644 index 000000000..3fb5cb54c --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_efc1.h @@ -0,0 +1,46 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_EFC1_INSTANCE_ +#define _SAM3XA_EFC1_INSTANCE_ + +/* ========== Register definition for EFC1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_EFC1_FMR (0x400E0C00U) /**< \brief (EFC1) EEFC Flash Mode Register */ +#define REG_EFC1_FCR (0x400E0C04U) /**< \brief (EFC1) EEFC Flash Command Register */ +#define REG_EFC1_FSR (0x400E0C08U) /**< \brief (EFC1) EEFC Flash Status Register */ +#define REG_EFC1_FRR (0x400E0C0CU) /**< \brief (EFC1) EEFC Flash Result Register */ +#else +#define REG_EFC1_FMR (*(RwReg*)0x400E0C00U) /**< \brief (EFC1) EEFC Flash Mode Register */ +#define REG_EFC1_FCR (*(WoReg*)0x400E0C04U) /**< \brief (EFC1) EEFC Flash Command Register */ +#define REG_EFC1_FSR (*(RoReg*)0x400E0C08U) /**< \brief (EFC1) EEFC Flash Status Register */ +#define REG_EFC1_FRR (*(RoReg*)0x400E0C0CU) /**< \brief (EFC1) EEFC Flash Result Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_EFC1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_emac.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_emac.h new file mode 100644 index 000000000..c67415ea3 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_emac.h @@ -0,0 +1,128 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_EMAC_INSTANCE_ +#define _SAM3XA_EMAC_INSTANCE_ + +/* ========== Register definition for EMAC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_EMAC_NCR (0x400B0000U) /**< \brief (EMAC) Network Control Register */ +#define REG_EMAC_NCFGR (0x400B0004U) /**< \brief (EMAC) Network Configuration Register */ +#define REG_EMAC_NSR (0x400B0008U) /**< \brief (EMAC) Network Status Register */ +#define REG_EMAC_TSR (0x400B0014U) /**< \brief (EMAC) Transmit Status Register */ +#define REG_EMAC_RBQP (0x400B0018U) /**< \brief (EMAC) Receive Buffer Queue Pointer Register */ +#define REG_EMAC_TBQP (0x400B001CU) /**< \brief (EMAC) Transmit Buffer Queue Pointer Register */ +#define REG_EMAC_RSR (0x400B0020U) /**< \brief (EMAC) Receive Status Register */ +#define REG_EMAC_ISR (0x400B0024U) /**< \brief (EMAC) Interrupt Status Register */ +#define REG_EMAC_IER (0x400B0028U) /**< \brief (EMAC) Interrupt Enable Register */ +#define REG_EMAC_IDR (0x400B002CU) /**< \brief (EMAC) Interrupt Disable Register */ +#define REG_EMAC_IMR (0x400B0030U) /**< \brief (EMAC) Interrupt Mask Register */ +#define REG_EMAC_MAN (0x400B0034U) /**< \brief (EMAC) Phy Maintenance Register */ +#define REG_EMAC_PTR (0x400B0038U) /**< \brief (EMAC) Pause Time Register */ +#define REG_EMAC_PFR (0x400B003CU) /**< \brief (EMAC) Pause Frames Received Register */ +#define REG_EMAC_FTO (0x400B0040U) /**< \brief (EMAC) Frames Transmitted Ok Register */ +#define REG_EMAC_SCF (0x400B0044U) /**< \brief (EMAC) Single Collision Frames Register */ +#define REG_EMAC_MCF (0x400B0048U) /**< \brief (EMAC) Multiple Collision Frames Register */ +#define REG_EMAC_FRO (0x400B004CU) /**< \brief (EMAC) Frames Received Ok Register */ +#define REG_EMAC_FCSE (0x400B0050U) /**< \brief (EMAC) Frame Check Sequence Errors Register */ +#define REG_EMAC_ALE (0x400B0054U) /**< \brief (EMAC) Alignment Errors Register */ +#define REG_EMAC_DTF (0x400B0058U) /**< \brief (EMAC) Deferred Transmission Frames Register */ +#define REG_EMAC_LCOL (0x400B005CU) /**< \brief (EMAC) Late Collisions Register */ +#define REG_EMAC_ECOL (0x400B0060U) /**< \brief (EMAC) Excessive Collisions Register */ +#define REG_EMAC_TUND (0x400B0064U) /**< \brief (EMAC) Transmit Underrun Errors Register */ +#define REG_EMAC_CSE (0x400B0068U) /**< \brief (EMAC) Carrier Sense Errors Register */ +#define REG_EMAC_RRE (0x400B006CU) /**< \brief (EMAC) Receive Resource Errors Register */ +#define REG_EMAC_ROV (0x400B0070U) /**< \brief (EMAC) Receive Overrun Errors Register */ +#define REG_EMAC_RSE (0x400B0074U) /**< \brief (EMAC) Receive Symbol Errors Register */ +#define REG_EMAC_ELE (0x400B0078U) /**< \brief (EMAC) Excessive Length Errors Register */ +#define REG_EMAC_RJA (0x400B007CU) /**< \brief (EMAC) Receive Jabbers Register */ +#define REG_EMAC_USF (0x400B0080U) /**< \brief (EMAC) Undersize Frames Register */ +#define REG_EMAC_STE (0x400B0084U) /**< \brief (EMAC) SQE Test Errors Register */ +#define REG_EMAC_RLE (0x400B0088U) /**< \brief (EMAC) Received Length Field Mismatch Register */ +#define REG_EMAC_HRB (0x400B0090U) /**< \brief (EMAC) Hash Register Bottom [31:0] Register */ +#define REG_EMAC_HRT (0x400B0094U) /**< \brief (EMAC) Hash Register Top [63:32] Register */ +#define REG_EMAC_SA1B (0x400B0098U) /**< \brief (EMAC) Specific Address 1 Bottom Register */ +#define REG_EMAC_SA1T (0x400B009CU) /**< \brief (EMAC) Specific Address 1 Top Register */ +#define REG_EMAC_SA2B (0x400B00A0U) /**< \brief (EMAC) Specific Address 2 Bottom Register */ +#define REG_EMAC_SA2T (0x400B00A4U) /**< \brief (EMAC) Specific Address 2 Top Register */ +#define REG_EMAC_SA3B (0x400B00A8U) /**< \brief (EMAC) Specific Address 3 Bottom Register */ +#define REG_EMAC_SA3T (0x400B00ACU) /**< \brief (EMAC) Specific Address 3 Top Register */ +#define REG_EMAC_SA4B (0x400B00B0U) /**< \brief (EMAC) Specific Address 4 Bottom Register */ +#define REG_EMAC_SA4T (0x400B00B4U) /**< \brief (EMAC) Specific Address 4 Top Register */ +#define REG_EMAC_TID (0x400B00B8U) /**< \brief (EMAC) Type ID Checking Register */ +#define REG_EMAC_USRIO (0x400B00C0U) /**< \brief (EMAC) User Input/Output Register */ +#else +#define REG_EMAC_NCR (*(RwReg*)0x400B0000U) /**< \brief (EMAC) Network Control Register */ +#define REG_EMAC_NCFGR (*(RwReg*)0x400B0004U) /**< \brief (EMAC) Network Configuration Register */ +#define REG_EMAC_NSR (*(RoReg*)0x400B0008U) /**< \brief (EMAC) Network Status Register */ +#define REG_EMAC_TSR (*(RwReg*)0x400B0014U) /**< \brief (EMAC) Transmit Status Register */ +#define REG_EMAC_RBQP (*(RwReg*)0x400B0018U) /**< \brief (EMAC) Receive Buffer Queue Pointer Register */ +#define REG_EMAC_TBQP (*(RwReg*)0x400B001CU) /**< \brief (EMAC) Transmit Buffer Queue Pointer Register */ +#define REG_EMAC_RSR (*(RwReg*)0x400B0020U) /**< \brief (EMAC) Receive Status Register */ +#define REG_EMAC_ISR (*(RwReg*)0x400B0024U) /**< \brief (EMAC) Interrupt Status Register */ +#define REG_EMAC_IER (*(WoReg*)0x400B0028U) /**< \brief (EMAC) Interrupt Enable Register */ +#define REG_EMAC_IDR (*(WoReg*)0x400B002CU) /**< \brief (EMAC) Interrupt Disable Register */ +#define REG_EMAC_IMR (*(RoReg*)0x400B0030U) /**< \brief (EMAC) Interrupt Mask Register */ +#define REG_EMAC_MAN (*(RwReg*)0x400B0034U) /**< \brief (EMAC) Phy Maintenance Register */ +#define REG_EMAC_PTR (*(RwReg*)0x400B0038U) /**< \brief (EMAC) Pause Time Register */ +#define REG_EMAC_PFR (*(RwReg*)0x400B003CU) /**< \brief (EMAC) Pause Frames Received Register */ +#define REG_EMAC_FTO (*(RwReg*)0x400B0040U) /**< \brief (EMAC) Frames Transmitted Ok Register */ +#define REG_EMAC_SCF (*(RwReg*)0x400B0044U) /**< \brief (EMAC) Single Collision Frames Register */ +#define REG_EMAC_MCF (*(RwReg*)0x400B0048U) /**< \brief (EMAC) Multiple Collision Frames Register */ +#define REG_EMAC_FRO (*(RwReg*)0x400B004CU) /**< \brief (EMAC) Frames Received Ok Register */ +#define REG_EMAC_FCSE (*(RwReg*)0x400B0050U) /**< \brief (EMAC) Frame Check Sequence Errors Register */ +#define REG_EMAC_ALE (*(RwReg*)0x400B0054U) /**< \brief (EMAC) Alignment Errors Register */ +#define REG_EMAC_DTF (*(RwReg*)0x400B0058U) /**< \brief (EMAC) Deferred Transmission Frames Register */ +#define REG_EMAC_LCOL (*(RwReg*)0x400B005CU) /**< \brief (EMAC) Late Collisions Register */ +#define REG_EMAC_ECOL (*(RwReg*)0x400B0060U) /**< \brief (EMAC) Excessive Collisions Register */ +#define REG_EMAC_TUND (*(RwReg*)0x400B0064U) /**< \brief (EMAC) Transmit Underrun Errors Register */ +#define REG_EMAC_CSE (*(RwReg*)0x400B0068U) /**< \brief (EMAC) Carrier Sense Errors Register */ +#define REG_EMAC_RRE (*(RwReg*)0x400B006CU) /**< \brief (EMAC) Receive Resource Errors Register */ +#define REG_EMAC_ROV (*(RwReg*)0x400B0070U) /**< \brief (EMAC) Receive Overrun Errors Register */ +#define REG_EMAC_RSE (*(RwReg*)0x400B0074U) /**< \brief (EMAC) Receive Symbol Errors Register */ +#define REG_EMAC_ELE (*(RwReg*)0x400B0078U) /**< \brief (EMAC) Excessive Length Errors Register */ +#define REG_EMAC_RJA (*(RwReg*)0x400B007CU) /**< \brief (EMAC) Receive Jabbers Register */ +#define REG_EMAC_USF (*(RwReg*)0x400B0080U) /**< \brief (EMAC) Undersize Frames Register */ +#define REG_EMAC_STE (*(RwReg*)0x400B0084U) /**< \brief (EMAC) SQE Test Errors Register */ +#define REG_EMAC_RLE (*(RwReg*)0x400B0088U) /**< \brief (EMAC) Received Length Field Mismatch Register */ +#define REG_EMAC_HRB (*(RwReg*)0x400B0090U) /**< \brief (EMAC) Hash Register Bottom [31:0] Register */ +#define REG_EMAC_HRT (*(RwReg*)0x400B0094U) /**< \brief (EMAC) Hash Register Top [63:32] Register */ +#define REG_EMAC_SA1B (*(RwReg*)0x400B0098U) /**< \brief (EMAC) Specific Address 1 Bottom Register */ +#define REG_EMAC_SA1T (*(RwReg*)0x400B009CU) /**< \brief (EMAC) Specific Address 1 Top Register */ +#define REG_EMAC_SA2B (*(RwReg*)0x400B00A0U) /**< \brief (EMAC) Specific Address 2 Bottom Register */ +#define REG_EMAC_SA2T (*(RwReg*)0x400B00A4U) /**< \brief (EMAC) Specific Address 2 Top Register */ +#define REG_EMAC_SA3B (*(RwReg*)0x400B00A8U) /**< \brief (EMAC) Specific Address 3 Bottom Register */ +#define REG_EMAC_SA3T (*(RwReg*)0x400B00ACU) /**< \brief (EMAC) Specific Address 3 Top Register */ +#define REG_EMAC_SA4B (*(RwReg*)0x400B00B0U) /**< \brief (EMAC) Specific Address 4 Bottom Register */ +#define REG_EMAC_SA4T (*(RwReg*)0x400B00B4U) /**< \brief (EMAC) Specific Address 4 Top Register */ +#define REG_EMAC_TID (*(RwReg*)0x400B00B8U) /**< \brief (EMAC) Type ID Checking Register */ +#define REG_EMAC_USRIO (*(RwReg*)0x400B00C0U) /**< \brief (EMAC) User Input/Output Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_EMAC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_gpbr.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_gpbr.h new file mode 100644 index 000000000..b96b12e94 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_gpbr.h @@ -0,0 +1,40 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_GPBR_INSTANCE_ +#define _SAM3XA_GPBR_INSTANCE_ + +/* ========== Register definition for GPBR peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_GPBR_GPBR (0x400E1A90U) /**< \brief (GPBR) General Purpose Backup Register */ +#else +#define REG_GPBR_GPBR (*(RwReg*)0x400E1A90U) /**< \brief (GPBR) General Purpose Backup Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_GPBR_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_hsmci.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_hsmci.h new file mode 100644 index 000000000..8fbfe4fd4 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_hsmci.h @@ -0,0 +1,78 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_HSMCI_INSTANCE_ +#define _SAM3XA_HSMCI_INSTANCE_ + +/* ========== Register definition for HSMCI peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_HSMCI_CR (0x40000000U) /**< \brief (HSMCI) Control Register */ +#define REG_HSMCI_MR (0x40000004U) /**< \brief (HSMCI) Mode Register */ +#define REG_HSMCI_DTOR (0x40000008U) /**< \brief (HSMCI) Data Timeout Register */ +#define REG_HSMCI_SDCR (0x4000000CU) /**< \brief (HSMCI) SD/SDIO Card Register */ +#define REG_HSMCI_ARGR (0x40000010U) /**< \brief (HSMCI) Argument Register */ +#define REG_HSMCI_CMDR (0x40000014U) /**< \brief (HSMCI) Command Register */ +#define REG_HSMCI_BLKR (0x40000018U) /**< \brief (HSMCI) Block Register */ +#define REG_HSMCI_CSTOR (0x4000001CU) /**< \brief (HSMCI) Completion Signal Timeout Register */ +#define REG_HSMCI_RSPR (0x40000020U) /**< \brief (HSMCI) Response Register */ +#define REG_HSMCI_RDR (0x40000030U) /**< \brief (HSMCI) Receive Data Register */ +#define REG_HSMCI_TDR (0x40000034U) /**< \brief (HSMCI) Transmit Data Register */ +#define REG_HSMCI_SR (0x40000040U) /**< \brief (HSMCI) Status Register */ +#define REG_HSMCI_IER (0x40000044U) /**< \brief (HSMCI) Interrupt Enable Register */ +#define REG_HSMCI_IDR (0x40000048U) /**< \brief (HSMCI) Interrupt Disable Register */ +#define REG_HSMCI_IMR (0x4000004CU) /**< \brief (HSMCI) Interrupt Mask Register */ +#define REG_HSMCI_DMA (0x40000050U) /**< \brief (HSMCI) DMA Configuration Register */ +#define REG_HSMCI_CFG (0x40000054U) /**< \brief (HSMCI) Configuration Register */ +#define REG_HSMCI_WPMR (0x400000E4U) /**< \brief (HSMCI) Write Protection Mode Register */ +#define REG_HSMCI_WPSR (0x400000E8U) /**< \brief (HSMCI) Write Protection Status Register */ +#define REG_HSMCI_FIFO (0x40000200U) /**< \brief (HSMCI) FIFO Memory Aperture0 */ +#else +#define REG_HSMCI_CR (*(WoReg*)0x40000000U) /**< \brief (HSMCI) Control Register */ +#define REG_HSMCI_MR (*(RwReg*)0x40000004U) /**< \brief (HSMCI) Mode Register */ +#define REG_HSMCI_DTOR (*(RwReg*)0x40000008U) /**< \brief (HSMCI) Data Timeout Register */ +#define REG_HSMCI_SDCR (*(RwReg*)0x4000000CU) /**< \brief (HSMCI) SD/SDIO Card Register */ +#define REG_HSMCI_ARGR (*(RwReg*)0x40000010U) /**< \brief (HSMCI) Argument Register */ +#define REG_HSMCI_CMDR (*(WoReg*)0x40000014U) /**< \brief (HSMCI) Command Register */ +#define REG_HSMCI_BLKR (*(RwReg*)0x40000018U) /**< \brief (HSMCI) Block Register */ +#define REG_HSMCI_CSTOR (*(RwReg*)0x4000001CU) /**< \brief (HSMCI) Completion Signal Timeout Register */ +#define REG_HSMCI_RSPR (*(RoReg*)0x40000020U) /**< \brief (HSMCI) Response Register */ +#define REG_HSMCI_RDR (*(RoReg*)0x40000030U) /**< \brief (HSMCI) Receive Data Register */ +#define REG_HSMCI_TDR (*(WoReg*)0x40000034U) /**< \brief (HSMCI) Transmit Data Register */ +#define REG_HSMCI_SR (*(RoReg*)0x40000040U) /**< \brief (HSMCI) Status Register */ +#define REG_HSMCI_IER (*(WoReg*)0x40000044U) /**< \brief (HSMCI) Interrupt Enable Register */ +#define REG_HSMCI_IDR (*(WoReg*)0x40000048U) /**< \brief (HSMCI) Interrupt Disable Register */ +#define REG_HSMCI_IMR (*(RoReg*)0x4000004CU) /**< \brief (HSMCI) Interrupt Mask Register */ +#define REG_HSMCI_DMA (*(RwReg*)0x40000050U) /**< \brief (HSMCI) DMA Configuration Register */ +#define REG_HSMCI_CFG (*(RwReg*)0x40000054U) /**< \brief (HSMCI) Configuration Register */ +#define REG_HSMCI_WPMR (*(RwReg*)0x400000E4U) /**< \brief (HSMCI) Write Protection Mode Register */ +#define REG_HSMCI_WPSR (*(RoReg*)0x400000E8U) /**< \brief (HSMCI) Write Protection Status Register */ +#define REG_HSMCI_FIFO (*(RwReg*)0x40000200U) /**< \brief (HSMCI) FIFO Memory Aperture0 */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_HSMCI_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_matrix.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_matrix.h new file mode 100644 index 000000000..c7fe7ec62 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_matrix.h @@ -0,0 +1,68 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_MATRIX_INSTANCE_ +#define _SAM3XA_MATRIX_INSTANCE_ + +/* ========== Register definition for MATRIX peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_MATRIX_MCFG (0x400E0400U) /**< \brief (MATRIX) Master Configuration Register */ +#define REG_MATRIX_SCFG (0x400E0440U) /**< \brief (MATRIX) Slave Configuration Register */ +#define REG_MATRIX_PRAS0 (0x400E0480U) /**< \brief (MATRIX) Priority Register A for Slave 0 */ +#define REG_MATRIX_PRAS1 (0x400E0488U) /**< \brief (MATRIX) Priority Register A for Slave 1 */ +#define REG_MATRIX_PRAS2 (0x400E0490U) /**< \brief (MATRIX) Priority Register A for Slave 2 */ +#define REG_MATRIX_PRAS3 (0x400E0498U) /**< \brief (MATRIX) Priority Register A for Slave 3 */ +#define REG_MATRIX_PRAS4 (0x400E04A0U) /**< \brief (MATRIX) Priority Register A for Slave 4 */ +#define REG_MATRIX_PRAS5 (0x400E04A8U) /**< \brief (MATRIX) Priority Register A for Slave 5 */ +#define REG_MATRIX_PRAS6 (0x400E04B0U) /**< \brief (MATRIX) Priority Register A for Slave 6 */ +#define REG_MATRIX_PRAS7 (0x400E04B8U) /**< \brief (MATRIX) Priority Register A for Slave 7 */ +#define REG_MATRIX_PRAS8 (0x400E04C0U) /**< \brief (MATRIX) Priority Register A for Slave 8 */ +#define REG_MATRIX_MRCR (0x400E0500U) /**< \brief (MATRIX) Master Remap Control Register */ +#define REG_CCFG_SYSIO (0x400E0514U) /**< \brief (MATRIX) System I/O Configuration register */ +#define REG_MATRIX_WPMR (0x400E05E4U) /**< \brief (MATRIX) Write Protect Mode Register */ +#define REG_MATRIX_WPSR (0x400E05E8U) /**< \brief (MATRIX) Write Protect Status Register */ +#else +#define REG_MATRIX_MCFG (*(RwReg*)0x400E0400U) /**< \brief (MATRIX) Master Configuration Register */ +#define REG_MATRIX_SCFG (*(RwReg*)0x400E0440U) /**< \brief (MATRIX) Slave Configuration Register */ +#define REG_MATRIX_PRAS0 (*(RwReg*)0x400E0480U) /**< \brief (MATRIX) Priority Register A for Slave 0 */ +#define REG_MATRIX_PRAS1 (*(RwReg*)0x400E0488U) /**< \brief (MATRIX) Priority Register A for Slave 1 */ +#define REG_MATRIX_PRAS2 (*(RwReg*)0x400E0490U) /**< \brief (MATRIX) Priority Register A for Slave 2 */ +#define REG_MATRIX_PRAS3 (*(RwReg*)0x400E0498U) /**< \brief (MATRIX) Priority Register A for Slave 3 */ +#define REG_MATRIX_PRAS4 (*(RwReg*)0x400E04A0U) /**< \brief (MATRIX) Priority Register A for Slave 4 */ +#define REG_MATRIX_PRAS5 (*(RwReg*)0x400E04A8U) /**< \brief (MATRIX) Priority Register A for Slave 5 */ +#define REG_MATRIX_PRAS6 (*(RwReg*)0x400E04B0U) /**< \brief (MATRIX) Priority Register A for Slave 6 */ +#define REG_MATRIX_PRAS7 (*(RwReg*)0x400E04B8U) /**< \brief (MATRIX) Priority Register A for Slave 7 */ +#define REG_MATRIX_PRAS8 (*(RwReg*)0x400E04C0U) /**< \brief (MATRIX) Priority Register A for Slave 8 */ +#define REG_MATRIX_MRCR (*(RwReg*)0x400E0500U) /**< \brief (MATRIX) Master Remap Control Register */ +#define REG_CCFG_SYSIO (*(RwReg*)0x400E0514U) /**< \brief (MATRIX) System I/O Configuration register */ +#define REG_MATRIX_WPMR (*(RwReg*)0x400E05E4U) /**< \brief (MATRIX) Write Protect Mode Register */ +#define REG_MATRIX_WPSR (*(RoReg*)0x400E05E8U) /**< \brief (MATRIX) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_MATRIX_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_pioa.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_pioa.h new file mode 100644 index 000000000..b678d0598 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_pioa.h @@ -0,0 +1,124 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_PIOA_INSTANCE_ +#define _SAM3XA_PIOA_INSTANCE_ + +/* ========== Register definition for PIOA peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PIOA_PER (0x400E0E00U) /**< \brief (PIOA) PIO Enable Register */ +#define REG_PIOA_PDR (0x400E0E04U) /**< \brief (PIOA) PIO Disable Register */ +#define REG_PIOA_PSR (0x400E0E08U) /**< \brief (PIOA) PIO Status Register */ +#define REG_PIOA_OER (0x400E0E10U) /**< \brief (PIOA) Output Enable Register */ +#define REG_PIOA_ODR (0x400E0E14U) /**< \brief (PIOA) Output Disable Register */ +#define REG_PIOA_OSR (0x400E0E18U) /**< \brief (PIOA) Output Status Register */ +#define REG_PIOA_IFER (0x400E0E20U) /**< \brief (PIOA) Glitch Input Filter Enable Register */ +#define REG_PIOA_IFDR (0x400E0E24U) /**< \brief (PIOA) Glitch Input Filter Disable Register */ +#define REG_PIOA_IFSR (0x400E0E28U) /**< \brief (PIOA) Glitch Input Filter Status Register */ +#define REG_PIOA_SODR (0x400E0E30U) /**< \brief (PIOA) Set Output Data Register */ +#define REG_PIOA_CODR (0x400E0E34U) /**< \brief (PIOA) Clear Output Data Register */ +#define REG_PIOA_ODSR (0x400E0E38U) /**< \brief (PIOA) Output Data Status Register */ +#define REG_PIOA_PDSR (0x400E0E3CU) /**< \brief (PIOA) Pin Data Status Register */ +#define REG_PIOA_IER (0x400E0E40U) /**< \brief (PIOA) Interrupt Enable Register */ +#define REG_PIOA_IDR (0x400E0E44U) /**< \brief (PIOA) Interrupt Disable Register */ +#define REG_PIOA_IMR (0x400E0E48U) /**< \brief (PIOA) Interrupt Mask Register */ +#define REG_PIOA_ISR (0x400E0E4CU) /**< \brief (PIOA) Interrupt Status Register */ +#define REG_PIOA_MDER (0x400E0E50U) /**< \brief (PIOA) Multi-driver Enable Register */ +#define REG_PIOA_MDDR (0x400E0E54U) /**< \brief (PIOA) Multi-driver Disable Register */ +#define REG_PIOA_MDSR (0x400E0E58U) /**< \brief (PIOA) Multi-driver Status Register */ +#define REG_PIOA_PUDR (0x400E0E60U) /**< \brief (PIOA) Pull-up Disable Register */ +#define REG_PIOA_PUER (0x400E0E64U) /**< \brief (PIOA) Pull-up Enable Register */ +#define REG_PIOA_PUSR (0x400E0E68U) /**< \brief (PIOA) Pad Pull-up Status Register */ +#define REG_PIOA_ABSR (0x400E0E70U) /**< \brief (PIOA) Peripheral AB Select Register */ +#define REG_PIOA_SCIFSR (0x400E0E80U) /**< \brief (PIOA) System Clock Glitch Input Filter Select Register */ +#define REG_PIOA_DIFSR (0x400E0E84U) /**< \brief (PIOA) Debouncing Input Filter Select Register */ +#define REG_PIOA_IFDGSR (0x400E0E88U) /**< \brief (PIOA) Glitch or Debouncing Input Filter Clock Selection Status Register */ +#define REG_PIOA_SCDR (0x400E0E8CU) /**< \brief (PIOA) Slow Clock Divider Debouncing Register */ +#define REG_PIOA_OWER (0x400E0EA0U) /**< \brief (PIOA) Output Write Enable */ +#define REG_PIOA_OWDR (0x400E0EA4U) /**< \brief (PIOA) Output Write Disable */ +#define REG_PIOA_OWSR (0x400E0EA8U) /**< \brief (PIOA) Output Write Status Register */ +#define REG_PIOA_AIMER (0x400E0EB0U) /**< \brief (PIOA) Additional Interrupt Modes Enable Register */ +#define REG_PIOA_AIMDR (0x400E0EB4U) /**< \brief (PIOA) Additional Interrupt Modes Disables Register */ +#define REG_PIOA_AIMMR (0x400E0EB8U) /**< \brief (PIOA) Additional Interrupt Modes Mask Register */ +#define REG_PIOA_ESR (0x400E0EC0U) /**< \brief (PIOA) Edge Select Register */ +#define REG_PIOA_LSR (0x400E0EC4U) /**< \brief (PIOA) Level Select Register */ +#define REG_PIOA_ELSR (0x400E0EC8U) /**< \brief (PIOA) Edge/Level Status Register */ +#define REG_PIOA_FELLSR (0x400E0ED0U) /**< \brief (PIOA) Falling Edge/Low Level Select Register */ +#define REG_PIOA_REHLSR (0x400E0ED4U) /**< \brief (PIOA) Rising Edge/ High Level Select Register */ +#define REG_PIOA_FRLHSR (0x400E0ED8U) /**< \brief (PIOA) Fall/Rise - Low/High Status Register */ +#define REG_PIOA_LOCKSR (0x400E0EE0U) /**< \brief (PIOA) Lock Status */ +#define REG_PIOA_WPMR (0x400E0EE4U) /**< \brief (PIOA) Write Protect Mode Register */ +#define REG_PIOA_WPSR (0x400E0EE8U) /**< \brief (PIOA) Write Protect Status Register */ +#else +#define REG_PIOA_PER (*(WoReg*)0x400E0E00U) /**< \brief (PIOA) PIO Enable Register */ +#define REG_PIOA_PDR (*(WoReg*)0x400E0E04U) /**< \brief (PIOA) PIO Disable Register */ +#define REG_PIOA_PSR (*(RoReg*)0x400E0E08U) /**< \brief (PIOA) PIO Status Register */ +#define REG_PIOA_OER (*(WoReg*)0x400E0E10U) /**< \brief (PIOA) Output Enable Register */ +#define REG_PIOA_ODR (*(WoReg*)0x400E0E14U) /**< \brief (PIOA) Output Disable Register */ +#define REG_PIOA_OSR (*(RoReg*)0x400E0E18U) /**< \brief (PIOA) Output Status Register */ +#define REG_PIOA_IFER (*(WoReg*)0x400E0E20U) /**< \brief (PIOA) Glitch Input Filter Enable Register */ +#define REG_PIOA_IFDR (*(WoReg*)0x400E0E24U) /**< \brief (PIOA) Glitch Input Filter Disable Register */ +#define REG_PIOA_IFSR (*(RoReg*)0x400E0E28U) /**< \brief (PIOA) Glitch Input Filter Status Register */ +#define REG_PIOA_SODR (*(WoReg*)0x400E0E30U) /**< \brief (PIOA) Set Output Data Register */ +#define REG_PIOA_CODR (*(WoReg*)0x400E0E34U) /**< \brief (PIOA) Clear Output Data Register */ +#define REG_PIOA_ODSR (*(RwReg*)0x400E0E38U) /**< \brief (PIOA) Output Data Status Register */ +#define REG_PIOA_PDSR (*(RoReg*)0x400E0E3CU) /**< \brief (PIOA) Pin Data Status Register */ +#define REG_PIOA_IER (*(WoReg*)0x400E0E40U) /**< \brief (PIOA) Interrupt Enable Register */ +#define REG_PIOA_IDR (*(WoReg*)0x400E0E44U) /**< \brief (PIOA) Interrupt Disable Register */ +#define REG_PIOA_IMR (*(RoReg*)0x400E0E48U) /**< \brief (PIOA) Interrupt Mask Register */ +#define REG_PIOA_ISR (*(RoReg*)0x400E0E4CU) /**< \brief (PIOA) Interrupt Status Register */ +#define REG_PIOA_MDER (*(WoReg*)0x400E0E50U) /**< \brief (PIOA) Multi-driver Enable Register */ +#define REG_PIOA_MDDR (*(WoReg*)0x400E0E54U) /**< \brief (PIOA) Multi-driver Disable Register */ +#define REG_PIOA_MDSR (*(RoReg*)0x400E0E58U) /**< \brief (PIOA) Multi-driver Status Register */ +#define REG_PIOA_PUDR (*(WoReg*)0x400E0E60U) /**< \brief (PIOA) Pull-up Disable Register */ +#define REG_PIOA_PUER (*(WoReg*)0x400E0E64U) /**< \brief (PIOA) Pull-up Enable Register */ +#define REG_PIOA_PUSR (*(RoReg*)0x400E0E68U) /**< \brief (PIOA) Pad Pull-up Status Register */ +#define REG_PIOA_ABSR (*(RwReg*)0x400E0E70U) /**< \brief (PIOA) Peripheral AB Select Register */ +#define REG_PIOA_SCIFSR (*(WoReg*)0x400E0E80U) /**< \brief (PIOA) System Clock Glitch Input Filter Select Register */ +#define REG_PIOA_DIFSR (*(WoReg*)0x400E0E84U) /**< \brief (PIOA) Debouncing Input Filter Select Register */ +#define REG_PIOA_IFDGSR (*(RoReg*)0x400E0E88U) /**< \brief (PIOA) Glitch or Debouncing Input Filter Clock Selection Status Register */ +#define REG_PIOA_SCDR (*(RwReg*)0x400E0E8CU) /**< \brief (PIOA) Slow Clock Divider Debouncing Register */ +#define REG_PIOA_OWER (*(WoReg*)0x400E0EA0U) /**< \brief (PIOA) Output Write Enable */ +#define REG_PIOA_OWDR (*(WoReg*)0x400E0EA4U) /**< \brief (PIOA) Output Write Disable */ +#define REG_PIOA_OWSR (*(RoReg*)0x400E0EA8U) /**< \brief (PIOA) Output Write Status Register */ +#define REG_PIOA_AIMER (*(WoReg*)0x400E0EB0U) /**< \brief (PIOA) Additional Interrupt Modes Enable Register */ +#define REG_PIOA_AIMDR (*(WoReg*)0x400E0EB4U) /**< \brief (PIOA) Additional Interrupt Modes Disables Register */ +#define REG_PIOA_AIMMR (*(RoReg*)0x400E0EB8U) /**< \brief (PIOA) Additional Interrupt Modes Mask Register */ +#define REG_PIOA_ESR (*(WoReg*)0x400E0EC0U) /**< \brief (PIOA) Edge Select Register */ +#define REG_PIOA_LSR (*(WoReg*)0x400E0EC4U) /**< \brief (PIOA) Level Select Register */ +#define REG_PIOA_ELSR (*(RoReg*)0x400E0EC8U) /**< \brief (PIOA) Edge/Level Status Register */ +#define REG_PIOA_FELLSR (*(WoReg*)0x400E0ED0U) /**< \brief (PIOA) Falling Edge/Low Level Select Register */ +#define REG_PIOA_REHLSR (*(WoReg*)0x400E0ED4U) /**< \brief (PIOA) Rising Edge/ High Level Select Register */ +#define REG_PIOA_FRLHSR (*(RoReg*)0x400E0ED8U) /**< \brief (PIOA) Fall/Rise - Low/High Status Register */ +#define REG_PIOA_LOCKSR (*(RoReg*)0x400E0EE0U) /**< \brief (PIOA) Lock Status */ +#define REG_PIOA_WPMR (*(RwReg*)0x400E0EE4U) /**< \brief (PIOA) Write Protect Mode Register */ +#define REG_PIOA_WPSR (*(RoReg*)0x400E0EE8U) /**< \brief (PIOA) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_PIOA_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_piob.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_piob.h new file mode 100644 index 000000000..36e88e401 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_piob.h @@ -0,0 +1,124 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_PIOB_INSTANCE_ +#define _SAM3XA_PIOB_INSTANCE_ + +/* ========== Register definition for PIOB peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PIOB_PER (0x400E1000U) /**< \brief (PIOB) PIO Enable Register */ +#define REG_PIOB_PDR (0x400E1004U) /**< \brief (PIOB) PIO Disable Register */ +#define REG_PIOB_PSR (0x400E1008U) /**< \brief (PIOB) PIO Status Register */ +#define REG_PIOB_OER (0x400E1010U) /**< \brief (PIOB) Output Enable Register */ +#define REG_PIOB_ODR (0x400E1014U) /**< \brief (PIOB) Output Disable Register */ +#define REG_PIOB_OSR (0x400E1018U) /**< \brief (PIOB) Output Status Register */ +#define REG_PIOB_IFER (0x400E1020U) /**< \brief (PIOB) Glitch Input Filter Enable Register */ +#define REG_PIOB_IFDR (0x400E1024U) /**< \brief (PIOB) Glitch Input Filter Disable Register */ +#define REG_PIOB_IFSR (0x400E1028U) /**< \brief (PIOB) Glitch Input Filter Status Register */ +#define REG_PIOB_SODR (0x400E1030U) /**< \brief (PIOB) Set Output Data Register */ +#define REG_PIOB_CODR (0x400E1034U) /**< \brief (PIOB) Clear Output Data Register */ +#define REG_PIOB_ODSR (0x400E1038U) /**< \brief (PIOB) Output Data Status Register */ +#define REG_PIOB_PDSR (0x400E103CU) /**< \brief (PIOB) Pin Data Status Register */ +#define REG_PIOB_IER (0x400E1040U) /**< \brief (PIOB) Interrupt Enable Register */ +#define REG_PIOB_IDR (0x400E1044U) /**< \brief (PIOB) Interrupt Disable Register */ +#define REG_PIOB_IMR (0x400E1048U) /**< \brief (PIOB) Interrupt Mask Register */ +#define REG_PIOB_ISR (0x400E104CU) /**< \brief (PIOB) Interrupt Status Register */ +#define REG_PIOB_MDER (0x400E1050U) /**< \brief (PIOB) Multi-driver Enable Register */ +#define REG_PIOB_MDDR (0x400E1054U) /**< \brief (PIOB) Multi-driver Disable Register */ +#define REG_PIOB_MDSR (0x400E1058U) /**< \brief (PIOB) Multi-driver Status Register */ +#define REG_PIOB_PUDR (0x400E1060U) /**< \brief (PIOB) Pull-up Disable Register */ +#define REG_PIOB_PUER (0x400E1064U) /**< \brief (PIOB) Pull-up Enable Register */ +#define REG_PIOB_PUSR (0x400E1068U) /**< \brief (PIOB) Pad Pull-up Status Register */ +#define REG_PIOB_ABSR (0x400E1070U) /**< \brief (PIOB) Peripheral AB Select Register */ +#define REG_PIOB_SCIFSR (0x400E1080U) /**< \brief (PIOB) System Clock Glitch Input Filter Select Register */ +#define REG_PIOB_DIFSR (0x400E1084U) /**< \brief (PIOB) Debouncing Input Filter Select Register */ +#define REG_PIOB_IFDGSR (0x400E1088U) /**< \brief (PIOB) Glitch or Debouncing Input Filter Clock Selection Status Register */ +#define REG_PIOB_SCDR (0x400E108CU) /**< \brief (PIOB) Slow Clock Divider Debouncing Register */ +#define REG_PIOB_OWER (0x400E10A0U) /**< \brief (PIOB) Output Write Enable */ +#define REG_PIOB_OWDR (0x400E10A4U) /**< \brief (PIOB) Output Write Disable */ +#define REG_PIOB_OWSR (0x400E10A8U) /**< \brief (PIOB) Output Write Status Register */ +#define REG_PIOB_AIMER (0x400E10B0U) /**< \brief (PIOB) Additional Interrupt Modes Enable Register */ +#define REG_PIOB_AIMDR (0x400E10B4U) /**< \brief (PIOB) Additional Interrupt Modes Disables Register */ +#define REG_PIOB_AIMMR (0x400E10B8U) /**< \brief (PIOB) Additional Interrupt Modes Mask Register */ +#define REG_PIOB_ESR (0x400E10C0U) /**< \brief (PIOB) Edge Select Register */ +#define REG_PIOB_LSR (0x400E10C4U) /**< \brief (PIOB) Level Select Register */ +#define REG_PIOB_ELSR (0x400E10C8U) /**< \brief (PIOB) Edge/Level Status Register */ +#define REG_PIOB_FELLSR (0x400E10D0U) /**< \brief (PIOB) Falling Edge/Low Level Select Register */ +#define REG_PIOB_REHLSR (0x400E10D4U) /**< \brief (PIOB) Rising Edge/ High Level Select Register */ +#define REG_PIOB_FRLHSR (0x400E10D8U) /**< \brief (PIOB) Fall/Rise - Low/High Status Register */ +#define REG_PIOB_LOCKSR (0x400E10E0U) /**< \brief (PIOB) Lock Status */ +#define REG_PIOB_WPMR (0x400E10E4U) /**< \brief (PIOB) Write Protect Mode Register */ +#define REG_PIOB_WPSR (0x400E10E8U) /**< \brief (PIOB) Write Protect Status Register */ +#else +#define REG_PIOB_PER (*(WoReg*)0x400E1000U) /**< \brief (PIOB) PIO Enable Register */ +#define REG_PIOB_PDR (*(WoReg*)0x400E1004U) /**< \brief (PIOB) PIO Disable Register */ +#define REG_PIOB_PSR (*(RoReg*)0x400E1008U) /**< \brief (PIOB) PIO Status Register */ +#define REG_PIOB_OER (*(WoReg*)0x400E1010U) /**< \brief (PIOB) Output Enable Register */ +#define REG_PIOB_ODR (*(WoReg*)0x400E1014U) /**< \brief (PIOB) Output Disable Register */ +#define REG_PIOB_OSR (*(RoReg*)0x400E1018U) /**< \brief (PIOB) Output Status Register */ +#define REG_PIOB_IFER (*(WoReg*)0x400E1020U) /**< \brief (PIOB) Glitch Input Filter Enable Register */ +#define REG_PIOB_IFDR (*(WoReg*)0x400E1024U) /**< \brief (PIOB) Glitch Input Filter Disable Register */ +#define REG_PIOB_IFSR (*(RoReg*)0x400E1028U) /**< \brief (PIOB) Glitch Input Filter Status Register */ +#define REG_PIOB_SODR (*(WoReg*)0x400E1030U) /**< \brief (PIOB) Set Output Data Register */ +#define REG_PIOB_CODR (*(WoReg*)0x400E1034U) /**< \brief (PIOB) Clear Output Data Register */ +#define REG_PIOB_ODSR (*(RwReg*)0x400E1038U) /**< \brief (PIOB) Output Data Status Register */ +#define REG_PIOB_PDSR (*(RoReg*)0x400E103CU) /**< \brief (PIOB) Pin Data Status Register */ +#define REG_PIOB_IER (*(WoReg*)0x400E1040U) /**< \brief (PIOB) Interrupt Enable Register */ +#define REG_PIOB_IDR (*(WoReg*)0x400E1044U) /**< \brief (PIOB) Interrupt Disable Register */ +#define REG_PIOB_IMR (*(RoReg*)0x400E1048U) /**< \brief (PIOB) Interrupt Mask Register */ +#define REG_PIOB_ISR (*(RoReg*)0x400E104CU) /**< \brief (PIOB) Interrupt Status Register */ +#define REG_PIOB_MDER (*(WoReg*)0x400E1050U) /**< \brief (PIOB) Multi-driver Enable Register */ +#define REG_PIOB_MDDR (*(WoReg*)0x400E1054U) /**< \brief (PIOB) Multi-driver Disable Register */ +#define REG_PIOB_MDSR (*(RoReg*)0x400E1058U) /**< \brief (PIOB) Multi-driver Status Register */ +#define REG_PIOB_PUDR (*(WoReg*)0x400E1060U) /**< \brief (PIOB) Pull-up Disable Register */ +#define REG_PIOB_PUER (*(WoReg*)0x400E1064U) /**< \brief (PIOB) Pull-up Enable Register */ +#define REG_PIOB_PUSR (*(RoReg*)0x400E1068U) /**< \brief (PIOB) Pad Pull-up Status Register */ +#define REG_PIOB_ABSR (*(RwReg*)0x400E1070U) /**< \brief (PIOB) Peripheral AB Select Register */ +#define REG_PIOB_SCIFSR (*(WoReg*)0x400E1080U) /**< \brief (PIOB) System Clock Glitch Input Filter Select Register */ +#define REG_PIOB_DIFSR (*(WoReg*)0x400E1084U) /**< \brief (PIOB) Debouncing Input Filter Select Register */ +#define REG_PIOB_IFDGSR (*(RoReg*)0x400E1088U) /**< \brief (PIOB) Glitch or Debouncing Input Filter Clock Selection Status Register */ +#define REG_PIOB_SCDR (*(RwReg*)0x400E108CU) /**< \brief (PIOB) Slow Clock Divider Debouncing Register */ +#define REG_PIOB_OWER (*(WoReg*)0x400E10A0U) /**< \brief (PIOB) Output Write Enable */ +#define REG_PIOB_OWDR (*(WoReg*)0x400E10A4U) /**< \brief (PIOB) Output Write Disable */ +#define REG_PIOB_OWSR (*(RoReg*)0x400E10A8U) /**< \brief (PIOB) Output Write Status Register */ +#define REG_PIOB_AIMER (*(WoReg*)0x400E10B0U) /**< \brief (PIOB) Additional Interrupt Modes Enable Register */ +#define REG_PIOB_AIMDR (*(WoReg*)0x400E10B4U) /**< \brief (PIOB) Additional Interrupt Modes Disables Register */ +#define REG_PIOB_AIMMR (*(RoReg*)0x400E10B8U) /**< \brief (PIOB) Additional Interrupt Modes Mask Register */ +#define REG_PIOB_ESR (*(WoReg*)0x400E10C0U) /**< \brief (PIOB) Edge Select Register */ +#define REG_PIOB_LSR (*(WoReg*)0x400E10C4U) /**< \brief (PIOB) Level Select Register */ +#define REG_PIOB_ELSR (*(RoReg*)0x400E10C8U) /**< \brief (PIOB) Edge/Level Status Register */ +#define REG_PIOB_FELLSR (*(WoReg*)0x400E10D0U) /**< \brief (PIOB) Falling Edge/Low Level Select Register */ +#define REG_PIOB_REHLSR (*(WoReg*)0x400E10D4U) /**< \brief (PIOB) Rising Edge/ High Level Select Register */ +#define REG_PIOB_FRLHSR (*(RoReg*)0x400E10D8U) /**< \brief (PIOB) Fall/Rise - Low/High Status Register */ +#define REG_PIOB_LOCKSR (*(RoReg*)0x400E10E0U) /**< \brief (PIOB) Lock Status */ +#define REG_PIOB_WPMR (*(RwReg*)0x400E10E4U) /**< \brief (PIOB) Write Protect Mode Register */ +#define REG_PIOB_WPSR (*(RoReg*)0x400E10E8U) /**< \brief (PIOB) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_PIOB_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_pioc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_pioc.h new file mode 100644 index 000000000..bda3019ae --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_pioc.h @@ -0,0 +1,124 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_PIOC_INSTANCE_ +#define _SAM3XA_PIOC_INSTANCE_ + +/* ========== Register definition for PIOC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PIOC_PER (0x400E1200U) /**< \brief (PIOC) PIO Enable Register */ +#define REG_PIOC_PDR (0x400E1204U) /**< \brief (PIOC) PIO Disable Register */ +#define REG_PIOC_PSR (0x400E1208U) /**< \brief (PIOC) PIO Status Register */ +#define REG_PIOC_OER (0x400E1210U) /**< \brief (PIOC) Output Enable Register */ +#define REG_PIOC_ODR (0x400E1214U) /**< \brief (PIOC) Output Disable Register */ +#define REG_PIOC_OSR (0x400E1218U) /**< \brief (PIOC) Output Status Register */ +#define REG_PIOC_IFER (0x400E1220U) /**< \brief (PIOC) Glitch Input Filter Enable Register */ +#define REG_PIOC_IFDR (0x400E1224U) /**< \brief (PIOC) Glitch Input Filter Disable Register */ +#define REG_PIOC_IFSR (0x400E1228U) /**< \brief (PIOC) Glitch Input Filter Status Register */ +#define REG_PIOC_SODR (0x400E1230U) /**< \brief (PIOC) Set Output Data Register */ +#define REG_PIOC_CODR (0x400E1234U) /**< \brief (PIOC) Clear Output Data Register */ +#define REG_PIOC_ODSR (0x400E1238U) /**< \brief (PIOC) Output Data Status Register */ +#define REG_PIOC_PDSR (0x400E123CU) /**< \brief (PIOC) Pin Data Status Register */ +#define REG_PIOC_IER (0x400E1240U) /**< \brief (PIOC) Interrupt Enable Register */ +#define REG_PIOC_IDR (0x400E1244U) /**< \brief (PIOC) Interrupt Disable Register */ +#define REG_PIOC_IMR (0x400E1248U) /**< \brief (PIOC) Interrupt Mask Register */ +#define REG_PIOC_ISR (0x400E124CU) /**< \brief (PIOC) Interrupt Status Register */ +#define REG_PIOC_MDER (0x400E1250U) /**< \brief (PIOC) Multi-driver Enable Register */ +#define REG_PIOC_MDDR (0x400E1254U) /**< \brief (PIOC) Multi-driver Disable Register */ +#define REG_PIOC_MDSR (0x400E1258U) /**< \brief (PIOC) Multi-driver Status Register */ +#define REG_PIOC_PUDR (0x400E1260U) /**< \brief (PIOC) Pull-up Disable Register */ +#define REG_PIOC_PUER (0x400E1264U) /**< \brief (PIOC) Pull-up Enable Register */ +#define REG_PIOC_PUSR (0x400E1268U) /**< \brief (PIOC) Pad Pull-up Status Register */ +#define REG_PIOC_ABSR (0x400E1270U) /**< \brief (PIOC) Peripheral AB Select Register */ +#define REG_PIOC_SCIFSR (0x400E1280U) /**< \brief (PIOC) System Clock Glitch Input Filter Select Register */ +#define REG_PIOC_DIFSR (0x400E1284U) /**< \brief (PIOC) Debouncing Input Filter Select Register */ +#define REG_PIOC_IFDGSR (0x400E1288U) /**< \brief (PIOC) Glitch or Debouncing Input Filter Clock Selection Status Register */ +#define REG_PIOC_SCDR (0x400E128CU) /**< \brief (PIOC) Slow Clock Divider Debouncing Register */ +#define REG_PIOC_OWER (0x400E12A0U) /**< \brief (PIOC) Output Write Enable */ +#define REG_PIOC_OWDR (0x400E12A4U) /**< \brief (PIOC) Output Write Disable */ +#define REG_PIOC_OWSR (0x400E12A8U) /**< \brief (PIOC) Output Write Status Register */ +#define REG_PIOC_AIMER (0x400E12B0U) /**< \brief (PIOC) Additional Interrupt Modes Enable Register */ +#define REG_PIOC_AIMDR (0x400E12B4U) /**< \brief (PIOC) Additional Interrupt Modes Disables Register */ +#define REG_PIOC_AIMMR (0x400E12B8U) /**< \brief (PIOC) Additional Interrupt Modes Mask Register */ +#define REG_PIOC_ESR (0x400E12C0U) /**< \brief (PIOC) Edge Select Register */ +#define REG_PIOC_LSR (0x400E12C4U) /**< \brief (PIOC) Level Select Register */ +#define REG_PIOC_ELSR (0x400E12C8U) /**< \brief (PIOC) Edge/Level Status Register */ +#define REG_PIOC_FELLSR (0x400E12D0U) /**< \brief (PIOC) Falling Edge/Low Level Select Register */ +#define REG_PIOC_REHLSR (0x400E12D4U) /**< \brief (PIOC) Rising Edge/ High Level Select Register */ +#define REG_PIOC_FRLHSR (0x400E12D8U) /**< \brief (PIOC) Fall/Rise - Low/High Status Register */ +#define REG_PIOC_LOCKSR (0x400E12E0U) /**< \brief (PIOC) Lock Status */ +#define REG_PIOC_WPMR (0x400E12E4U) /**< \brief (PIOC) Write Protect Mode Register */ +#define REG_PIOC_WPSR (0x400E12E8U) /**< \brief (PIOC) Write Protect Status Register */ +#else +#define REG_PIOC_PER (*(WoReg*)0x400E1200U) /**< \brief (PIOC) PIO Enable Register */ +#define REG_PIOC_PDR (*(WoReg*)0x400E1204U) /**< \brief (PIOC) PIO Disable Register */ +#define REG_PIOC_PSR (*(RoReg*)0x400E1208U) /**< \brief (PIOC) PIO Status Register */ +#define REG_PIOC_OER (*(WoReg*)0x400E1210U) /**< \brief (PIOC) Output Enable Register */ +#define REG_PIOC_ODR (*(WoReg*)0x400E1214U) /**< \brief (PIOC) Output Disable Register */ +#define REG_PIOC_OSR (*(RoReg*)0x400E1218U) /**< \brief (PIOC) Output Status Register */ +#define REG_PIOC_IFER (*(WoReg*)0x400E1220U) /**< \brief (PIOC) Glitch Input Filter Enable Register */ +#define REG_PIOC_IFDR (*(WoReg*)0x400E1224U) /**< \brief (PIOC) Glitch Input Filter Disable Register */ +#define REG_PIOC_IFSR (*(RoReg*)0x400E1228U) /**< \brief (PIOC) Glitch Input Filter Status Register */ +#define REG_PIOC_SODR (*(WoReg*)0x400E1230U) /**< \brief (PIOC) Set Output Data Register */ +#define REG_PIOC_CODR (*(WoReg*)0x400E1234U) /**< \brief (PIOC) Clear Output Data Register */ +#define REG_PIOC_ODSR (*(RwReg*)0x400E1238U) /**< \brief (PIOC) Output Data Status Register */ +#define REG_PIOC_PDSR (*(RoReg*)0x400E123CU) /**< \brief (PIOC) Pin Data Status Register */ +#define REG_PIOC_IER (*(WoReg*)0x400E1240U) /**< \brief (PIOC) Interrupt Enable Register */ +#define REG_PIOC_IDR (*(WoReg*)0x400E1244U) /**< \brief (PIOC) Interrupt Disable Register */ +#define REG_PIOC_IMR (*(RoReg*)0x400E1248U) /**< \brief (PIOC) Interrupt Mask Register */ +#define REG_PIOC_ISR (*(RoReg*)0x400E124CU) /**< \brief (PIOC) Interrupt Status Register */ +#define REG_PIOC_MDER (*(WoReg*)0x400E1250U) /**< \brief (PIOC) Multi-driver Enable Register */ +#define REG_PIOC_MDDR (*(WoReg*)0x400E1254U) /**< \brief (PIOC) Multi-driver Disable Register */ +#define REG_PIOC_MDSR (*(RoReg*)0x400E1258U) /**< \brief (PIOC) Multi-driver Status Register */ +#define REG_PIOC_PUDR (*(WoReg*)0x400E1260U) /**< \brief (PIOC) Pull-up Disable Register */ +#define REG_PIOC_PUER (*(WoReg*)0x400E1264U) /**< \brief (PIOC) Pull-up Enable Register */ +#define REG_PIOC_PUSR (*(RoReg*)0x400E1268U) /**< \brief (PIOC) Pad Pull-up Status Register */ +#define REG_PIOC_ABSR (*(RwReg*)0x400E1270U) /**< \brief (PIOC) Peripheral AB Select Register */ +#define REG_PIOC_SCIFSR (*(WoReg*)0x400E1280U) /**< \brief (PIOC) System Clock Glitch Input Filter Select Register */ +#define REG_PIOC_DIFSR (*(WoReg*)0x400E1284U) /**< \brief (PIOC) Debouncing Input Filter Select Register */ +#define REG_PIOC_IFDGSR (*(RoReg*)0x400E1288U) /**< \brief (PIOC) Glitch or Debouncing Input Filter Clock Selection Status Register */ +#define REG_PIOC_SCDR (*(RwReg*)0x400E128CU) /**< \brief (PIOC) Slow Clock Divider Debouncing Register */ +#define REG_PIOC_OWER (*(WoReg*)0x400E12A0U) /**< \brief (PIOC) Output Write Enable */ +#define REG_PIOC_OWDR (*(WoReg*)0x400E12A4U) /**< \brief (PIOC) Output Write Disable */ +#define REG_PIOC_OWSR (*(RoReg*)0x400E12A8U) /**< \brief (PIOC) Output Write Status Register */ +#define REG_PIOC_AIMER (*(WoReg*)0x400E12B0U) /**< \brief (PIOC) Additional Interrupt Modes Enable Register */ +#define REG_PIOC_AIMDR (*(WoReg*)0x400E12B4U) /**< \brief (PIOC) Additional Interrupt Modes Disables Register */ +#define REG_PIOC_AIMMR (*(RoReg*)0x400E12B8U) /**< \brief (PIOC) Additional Interrupt Modes Mask Register */ +#define REG_PIOC_ESR (*(WoReg*)0x400E12C0U) /**< \brief (PIOC) Edge Select Register */ +#define REG_PIOC_LSR (*(WoReg*)0x400E12C4U) /**< \brief (PIOC) Level Select Register */ +#define REG_PIOC_ELSR (*(RoReg*)0x400E12C8U) /**< \brief (PIOC) Edge/Level Status Register */ +#define REG_PIOC_FELLSR (*(WoReg*)0x400E12D0U) /**< \brief (PIOC) Falling Edge/Low Level Select Register */ +#define REG_PIOC_REHLSR (*(WoReg*)0x400E12D4U) /**< \brief (PIOC) Rising Edge/ High Level Select Register */ +#define REG_PIOC_FRLHSR (*(RoReg*)0x400E12D8U) /**< \brief (PIOC) Fall/Rise - Low/High Status Register */ +#define REG_PIOC_LOCKSR (*(RoReg*)0x400E12E0U) /**< \brief (PIOC) Lock Status */ +#define REG_PIOC_WPMR (*(RwReg*)0x400E12E4U) /**< \brief (PIOC) Write Protect Mode Register */ +#define REG_PIOC_WPSR (*(RoReg*)0x400E12E8U) /**< \brief (PIOC) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_PIOC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_piod.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_piod.h new file mode 100644 index 000000000..e58a65d9e --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_piod.h @@ -0,0 +1,124 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_PIOD_INSTANCE_ +#define _SAM3XA_PIOD_INSTANCE_ + +/* ========== Register definition for PIOD peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PIOD_PER (0x400E1400U) /**< \brief (PIOD) PIO Enable Register */ +#define REG_PIOD_PDR (0x400E1404U) /**< \brief (PIOD) PIO Disable Register */ +#define REG_PIOD_PSR (0x400E1408U) /**< \brief (PIOD) PIO Status Register */ +#define REG_PIOD_OER (0x400E1410U) /**< \brief (PIOD) Output Enable Register */ +#define REG_PIOD_ODR (0x400E1414U) /**< \brief (PIOD) Output Disable Register */ +#define REG_PIOD_OSR (0x400E1418U) /**< \brief (PIOD) Output Status Register */ +#define REG_PIOD_IFER (0x400E1420U) /**< \brief (PIOD) Glitch Input Filter Enable Register */ +#define REG_PIOD_IFDR (0x400E1424U) /**< \brief (PIOD) Glitch Input Filter Disable Register */ +#define REG_PIOD_IFSR (0x400E1428U) /**< \brief (PIOD) Glitch Input Filter Status Register */ +#define REG_PIOD_SODR (0x400E1430U) /**< \brief (PIOD) Set Output Data Register */ +#define REG_PIOD_CODR (0x400E1434U) /**< \brief (PIOD) Clear Output Data Register */ +#define REG_PIOD_ODSR (0x400E1438U) /**< \brief (PIOD) Output Data Status Register */ +#define REG_PIOD_PDSR (0x400E143CU) /**< \brief (PIOD) Pin Data Status Register */ +#define REG_PIOD_IER (0x400E1440U) /**< \brief (PIOD) Interrupt Enable Register */ +#define REG_PIOD_IDR (0x400E1444U) /**< \brief (PIOD) Interrupt Disable Register */ +#define REG_PIOD_IMR (0x400E1448U) /**< \brief (PIOD) Interrupt Mask Register */ +#define REG_PIOD_ISR (0x400E144CU) /**< \brief (PIOD) Interrupt Status Register */ +#define REG_PIOD_MDER (0x400E1450U) /**< \brief (PIOD) Multi-driver Enable Register */ +#define REG_PIOD_MDDR (0x400E1454U) /**< \brief (PIOD) Multi-driver Disable Register */ +#define REG_PIOD_MDSR (0x400E1458U) /**< \brief (PIOD) Multi-driver Status Register */ +#define REG_PIOD_PUDR (0x400E1460U) /**< \brief (PIOD) Pull-up Disable Register */ +#define REG_PIOD_PUER (0x400E1464U) /**< \brief (PIOD) Pull-up Enable Register */ +#define REG_PIOD_PUSR (0x400E1468U) /**< \brief (PIOD) Pad Pull-up Status Register */ +#define REG_PIOD_ABSR (0x400E1470U) /**< \brief (PIOD) Peripheral AB Select Register */ +#define REG_PIOD_SCIFSR (0x400E1480U) /**< \brief (PIOD) System Clock Glitch Input Filter Select Register */ +#define REG_PIOD_DIFSR (0x400E1484U) /**< \brief (PIOD) Debouncing Input Filter Select Register */ +#define REG_PIOD_IFDGSR (0x400E1488U) /**< \brief (PIOD) Glitch or Debouncing Input Filter Clock Selection Status Register */ +#define REG_PIOD_SCDR (0x400E148CU) /**< \brief (PIOD) Slow Clock Divider Debouncing Register */ +#define REG_PIOD_OWER (0x400E14A0U) /**< \brief (PIOD) Output Write Enable */ +#define REG_PIOD_OWDR (0x400E14A4U) /**< \brief (PIOD) Output Write Disable */ +#define REG_PIOD_OWSR (0x400E14A8U) /**< \brief (PIOD) Output Write Status Register */ +#define REG_PIOD_AIMER (0x400E14B0U) /**< \brief (PIOD) Additional Interrupt Modes Enable Register */ +#define REG_PIOD_AIMDR (0x400E14B4U) /**< \brief (PIOD) Additional Interrupt Modes Disables Register */ +#define REG_PIOD_AIMMR (0x400E14B8U) /**< \brief (PIOD) Additional Interrupt Modes Mask Register */ +#define REG_PIOD_ESR (0x400E14C0U) /**< \brief (PIOD) Edge Select Register */ +#define REG_PIOD_LSR (0x400E14C4U) /**< \brief (PIOD) Level Select Register */ +#define REG_PIOD_ELSR (0x400E14C8U) /**< \brief (PIOD) Edge/Level Status Register */ +#define REG_PIOD_FELLSR (0x400E14D0U) /**< \brief (PIOD) Falling Edge/Low Level Select Register */ +#define REG_PIOD_REHLSR (0x400E14D4U) /**< \brief (PIOD) Rising Edge/ High Level Select Register */ +#define REG_PIOD_FRLHSR (0x400E14D8U) /**< \brief (PIOD) Fall/Rise - Low/High Status Register */ +#define REG_PIOD_LOCKSR (0x400E14E0U) /**< \brief (PIOD) Lock Status */ +#define REG_PIOD_WPMR (0x400E14E4U) /**< \brief (PIOD) Write Protect Mode Register */ +#define REG_PIOD_WPSR (0x400E14E8U) /**< \brief (PIOD) Write Protect Status Register */ +#else +#define REG_PIOD_PER (*(WoReg*)0x400E1400U) /**< \brief (PIOD) PIO Enable Register */ +#define REG_PIOD_PDR (*(WoReg*)0x400E1404U) /**< \brief (PIOD) PIO Disable Register */ +#define REG_PIOD_PSR (*(RoReg*)0x400E1408U) /**< \brief (PIOD) PIO Status Register */ +#define REG_PIOD_OER (*(WoReg*)0x400E1410U) /**< \brief (PIOD) Output Enable Register */ +#define REG_PIOD_ODR (*(WoReg*)0x400E1414U) /**< \brief (PIOD) Output Disable Register */ +#define REG_PIOD_OSR (*(RoReg*)0x400E1418U) /**< \brief (PIOD) Output Status Register */ +#define REG_PIOD_IFER (*(WoReg*)0x400E1420U) /**< \brief (PIOD) Glitch Input Filter Enable Register */ +#define REG_PIOD_IFDR (*(WoReg*)0x400E1424U) /**< \brief (PIOD) Glitch Input Filter Disable Register */ +#define REG_PIOD_IFSR (*(RoReg*)0x400E1428U) /**< \brief (PIOD) Glitch Input Filter Status Register */ +#define REG_PIOD_SODR (*(WoReg*)0x400E1430U) /**< \brief (PIOD) Set Output Data Register */ +#define REG_PIOD_CODR (*(WoReg*)0x400E1434U) /**< \brief (PIOD) Clear Output Data Register */ +#define REG_PIOD_ODSR (*(RwReg*)0x400E1438U) /**< \brief (PIOD) Output Data Status Register */ +#define REG_PIOD_PDSR (*(RoReg*)0x400E143CU) /**< \brief (PIOD) Pin Data Status Register */ +#define REG_PIOD_IER (*(WoReg*)0x400E1440U) /**< \brief (PIOD) Interrupt Enable Register */ +#define REG_PIOD_IDR (*(WoReg*)0x400E1444U) /**< \brief (PIOD) Interrupt Disable Register */ +#define REG_PIOD_IMR (*(RoReg*)0x400E1448U) /**< \brief (PIOD) Interrupt Mask Register */ +#define REG_PIOD_ISR (*(RoReg*)0x400E144CU) /**< \brief (PIOD) Interrupt Status Register */ +#define REG_PIOD_MDER (*(WoReg*)0x400E1450U) /**< \brief (PIOD) Multi-driver Enable Register */ +#define REG_PIOD_MDDR (*(WoReg*)0x400E1454U) /**< \brief (PIOD) Multi-driver Disable Register */ +#define REG_PIOD_MDSR (*(RoReg*)0x400E1458U) /**< \brief (PIOD) Multi-driver Status Register */ +#define REG_PIOD_PUDR (*(WoReg*)0x400E1460U) /**< \brief (PIOD) Pull-up Disable Register */ +#define REG_PIOD_PUER (*(WoReg*)0x400E1464U) /**< \brief (PIOD) Pull-up Enable Register */ +#define REG_PIOD_PUSR (*(RoReg*)0x400E1468U) /**< \brief (PIOD) Pad Pull-up Status Register */ +#define REG_PIOD_ABSR (*(RwReg*)0x400E1470U) /**< \brief (PIOD) Peripheral AB Select Register */ +#define REG_PIOD_SCIFSR (*(WoReg*)0x400E1480U) /**< \brief (PIOD) System Clock Glitch Input Filter Select Register */ +#define REG_PIOD_DIFSR (*(WoReg*)0x400E1484U) /**< \brief (PIOD) Debouncing Input Filter Select Register */ +#define REG_PIOD_IFDGSR (*(RoReg*)0x400E1488U) /**< \brief (PIOD) Glitch or Debouncing Input Filter Clock Selection Status Register */ +#define REG_PIOD_SCDR (*(RwReg*)0x400E148CU) /**< \brief (PIOD) Slow Clock Divider Debouncing Register */ +#define REG_PIOD_OWER (*(WoReg*)0x400E14A0U) /**< \brief (PIOD) Output Write Enable */ +#define REG_PIOD_OWDR (*(WoReg*)0x400E14A4U) /**< \brief (PIOD) Output Write Disable */ +#define REG_PIOD_OWSR (*(RoReg*)0x400E14A8U) /**< \brief (PIOD) Output Write Status Register */ +#define REG_PIOD_AIMER (*(WoReg*)0x400E14B0U) /**< \brief (PIOD) Additional Interrupt Modes Enable Register */ +#define REG_PIOD_AIMDR (*(WoReg*)0x400E14B4U) /**< \brief (PIOD) Additional Interrupt Modes Disables Register */ +#define REG_PIOD_AIMMR (*(RoReg*)0x400E14B8U) /**< \brief (PIOD) Additional Interrupt Modes Mask Register */ +#define REG_PIOD_ESR (*(WoReg*)0x400E14C0U) /**< \brief (PIOD) Edge Select Register */ +#define REG_PIOD_LSR (*(WoReg*)0x400E14C4U) /**< \brief (PIOD) Level Select Register */ +#define REG_PIOD_ELSR (*(RoReg*)0x400E14C8U) /**< \brief (PIOD) Edge/Level Status Register */ +#define REG_PIOD_FELLSR (*(WoReg*)0x400E14D0U) /**< \brief (PIOD) Falling Edge/Low Level Select Register */ +#define REG_PIOD_REHLSR (*(WoReg*)0x400E14D4U) /**< \brief (PIOD) Rising Edge/ High Level Select Register */ +#define REG_PIOD_FRLHSR (*(RoReg*)0x400E14D8U) /**< \brief (PIOD) Fall/Rise - Low/High Status Register */ +#define REG_PIOD_LOCKSR (*(RoReg*)0x400E14E0U) /**< \brief (PIOD) Lock Status */ +#define REG_PIOD_WPMR (*(RwReg*)0x400E14E4U) /**< \brief (PIOD) Write Protect Mode Register */ +#define REG_PIOD_WPSR (*(RoReg*)0x400E14E8U) /**< \brief (PIOD) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_PIOD_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_pioe.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_pioe.h new file mode 100644 index 000000000..f4c6f0dac --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_pioe.h @@ -0,0 +1,124 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_PIOE_INSTANCE_ +#define _SAM3XA_PIOE_INSTANCE_ + +/* ========== Register definition for PIOE peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PIOE_PER (0x400E1600U) /**< \brief (PIOE) PIO Enable Register */ +#define REG_PIOE_PDR (0x400E1604U) /**< \brief (PIOE) PIO Disable Register */ +#define REG_PIOE_PSR (0x400E1608U) /**< \brief (PIOE) PIO Status Register */ +#define REG_PIOE_OER (0x400E1610U) /**< \brief (PIOE) Output Enable Register */ +#define REG_PIOE_ODR (0x400E1614U) /**< \brief (PIOE) Output Disable Register */ +#define REG_PIOE_OSR (0x400E1618U) /**< \brief (PIOE) Output Status Register */ +#define REG_PIOE_IFER (0x400E1620U) /**< \brief (PIOE) Glitch Input Filter Enable Register */ +#define REG_PIOE_IFDR (0x400E1624U) /**< \brief (PIOE) Glitch Input Filter Disable Register */ +#define REG_PIOE_IFSR (0x400E1628U) /**< \brief (PIOE) Glitch Input Filter Status Register */ +#define REG_PIOE_SODR (0x400E1630U) /**< \brief (PIOE) Set Output Data Register */ +#define REG_PIOE_CODR (0x400E1634U) /**< \brief (PIOE) Clear Output Data Register */ +#define REG_PIOE_ODSR (0x400E1638U) /**< \brief (PIOE) Output Data Status Register */ +#define REG_PIOE_PDSR (0x400E163CU) /**< \brief (PIOE) Pin Data Status Register */ +#define REG_PIOE_IER (0x400E1640U) /**< \brief (PIOE) Interrupt Enable Register */ +#define REG_PIOE_IDR (0x400E1644U) /**< \brief (PIOE) Interrupt Disable Register */ +#define REG_PIOE_IMR (0x400E1648U) /**< \brief (PIOE) Interrupt Mask Register */ +#define REG_PIOE_ISR (0x400E164CU) /**< \brief (PIOE) Interrupt Status Register */ +#define REG_PIOE_MDER (0x400E1650U) /**< \brief (PIOE) Multi-driver Enable Register */ +#define REG_PIOE_MDDR (0x400E1654U) /**< \brief (PIOE) Multi-driver Disable Register */ +#define REG_PIOE_MDSR (0x400E1658U) /**< \brief (PIOE) Multi-driver Status Register */ +#define REG_PIOE_PUDR (0x400E1660U) /**< \brief (PIOE) Pull-up Disable Register */ +#define REG_PIOE_PUER (0x400E1664U) /**< \brief (PIOE) Pull-up Enable Register */ +#define REG_PIOE_PUSR (0x400E1668U) /**< \brief (PIOE) Pad Pull-up Status Register */ +#define REG_PIOE_ABSR (0x400E1670U) /**< \brief (PIOE) Peripheral AB Select Register */ +#define REG_PIOE_SCIFSR (0x400E1680U) /**< \brief (PIOE) System Clock Glitch Input Filter Select Register */ +#define REG_PIOE_DIFSR (0x400E1684U) /**< \brief (PIOE) Debouncing Input Filter Select Register */ +#define REG_PIOE_IFDGSR (0x400E1688U) /**< \brief (PIOE) Glitch or Debouncing Input Filter Clock Selection Status Register */ +#define REG_PIOE_SCDR (0x400E168CU) /**< \brief (PIOE) Slow Clock Divider Debouncing Register */ +#define REG_PIOE_OWER (0x400E16A0U) /**< \brief (PIOE) Output Write Enable */ +#define REG_PIOE_OWDR (0x400E16A4U) /**< \brief (PIOE) Output Write Disable */ +#define REG_PIOE_OWSR (0x400E16A8U) /**< \brief (PIOE) Output Write Status Register */ +#define REG_PIOE_AIMER (0x400E16B0U) /**< \brief (PIOE) Additional Interrupt Modes Enable Register */ +#define REG_PIOE_AIMDR (0x400E16B4U) /**< \brief (PIOE) Additional Interrupt Modes Disables Register */ +#define REG_PIOE_AIMMR (0x400E16B8U) /**< \brief (PIOE) Additional Interrupt Modes Mask Register */ +#define REG_PIOE_ESR (0x400E16C0U) /**< \brief (PIOE) Edge Select Register */ +#define REG_PIOE_LSR (0x400E16C4U) /**< \brief (PIOE) Level Select Register */ +#define REG_PIOE_ELSR (0x400E16C8U) /**< \brief (PIOE) Edge/Level Status Register */ +#define REG_PIOE_FELLSR (0x400E16D0U) /**< \brief (PIOE) Falling Edge/Low Level Select Register */ +#define REG_PIOE_REHLSR (0x400E16D4U) /**< \brief (PIOE) Rising Edge/ High Level Select Register */ +#define REG_PIOE_FRLHSR (0x400E16D8U) /**< \brief (PIOE) Fall/Rise - Low/High Status Register */ +#define REG_PIOE_LOCKSR (0x400E16E0U) /**< \brief (PIOE) Lock Status */ +#define REG_PIOE_WPMR (0x400E16E4U) /**< \brief (PIOE) Write Protect Mode Register */ +#define REG_PIOE_WPSR (0x400E16E8U) /**< \brief (PIOE) Write Protect Status Register */ +#else +#define REG_PIOE_PER (*(WoReg*)0x400E1600U) /**< \brief (PIOE) PIO Enable Register */ +#define REG_PIOE_PDR (*(WoReg*)0x400E1604U) /**< \brief (PIOE) PIO Disable Register */ +#define REG_PIOE_PSR (*(RoReg*)0x400E1608U) /**< \brief (PIOE) PIO Status Register */ +#define REG_PIOE_OER (*(WoReg*)0x400E1610U) /**< \brief (PIOE) Output Enable Register */ +#define REG_PIOE_ODR (*(WoReg*)0x400E1614U) /**< \brief (PIOE) Output Disable Register */ +#define REG_PIOE_OSR (*(RoReg*)0x400E1618U) /**< \brief (PIOE) Output Status Register */ +#define REG_PIOE_IFER (*(WoReg*)0x400E1620U) /**< \brief (PIOE) Glitch Input Filter Enable Register */ +#define REG_PIOE_IFDR (*(WoReg*)0x400E1624U) /**< \brief (PIOE) Glitch Input Filter Disable Register */ +#define REG_PIOE_IFSR (*(RoReg*)0x400E1628U) /**< \brief (PIOE) Glitch Input Filter Status Register */ +#define REG_PIOE_SODR (*(WoReg*)0x400E1630U) /**< \brief (PIOE) Set Output Data Register */ +#define REG_PIOE_CODR (*(WoReg*)0x400E1634U) /**< \brief (PIOE) Clear Output Data Register */ +#define REG_PIOE_ODSR (*(RwReg*)0x400E1638U) /**< \brief (PIOE) Output Data Status Register */ +#define REG_PIOE_PDSR (*(RoReg*)0x400E163CU) /**< \brief (PIOE) Pin Data Status Register */ +#define REG_PIOE_IER (*(WoReg*)0x400E1640U) /**< \brief (PIOE) Interrupt Enable Register */ +#define REG_PIOE_IDR (*(WoReg*)0x400E1644U) /**< \brief (PIOE) Interrupt Disable Register */ +#define REG_PIOE_IMR (*(RoReg*)0x400E1648U) /**< \brief (PIOE) Interrupt Mask Register */ +#define REG_PIOE_ISR (*(RoReg*)0x400E164CU) /**< \brief (PIOE) Interrupt Status Register */ +#define REG_PIOE_MDER (*(WoReg*)0x400E1650U) /**< \brief (PIOE) Multi-driver Enable Register */ +#define REG_PIOE_MDDR (*(WoReg*)0x400E1654U) /**< \brief (PIOE) Multi-driver Disable Register */ +#define REG_PIOE_MDSR (*(RoReg*)0x400E1658U) /**< \brief (PIOE) Multi-driver Status Register */ +#define REG_PIOE_PUDR (*(WoReg*)0x400E1660U) /**< \brief (PIOE) Pull-up Disable Register */ +#define REG_PIOE_PUER (*(WoReg*)0x400E1664U) /**< \brief (PIOE) Pull-up Enable Register */ +#define REG_PIOE_PUSR (*(RoReg*)0x400E1668U) /**< \brief (PIOE) Pad Pull-up Status Register */ +#define REG_PIOE_ABSR (*(RwReg*)0x400E1670U) /**< \brief (PIOE) Peripheral AB Select Register */ +#define REG_PIOE_SCIFSR (*(WoReg*)0x400E1680U) /**< \brief (PIOE) System Clock Glitch Input Filter Select Register */ +#define REG_PIOE_DIFSR (*(WoReg*)0x400E1684U) /**< \brief (PIOE) Debouncing Input Filter Select Register */ +#define REG_PIOE_IFDGSR (*(RoReg*)0x400E1688U) /**< \brief (PIOE) Glitch or Debouncing Input Filter Clock Selection Status Register */ +#define REG_PIOE_SCDR (*(RwReg*)0x400E168CU) /**< \brief (PIOE) Slow Clock Divider Debouncing Register */ +#define REG_PIOE_OWER (*(WoReg*)0x400E16A0U) /**< \brief (PIOE) Output Write Enable */ +#define REG_PIOE_OWDR (*(WoReg*)0x400E16A4U) /**< \brief (PIOE) Output Write Disable */ +#define REG_PIOE_OWSR (*(RoReg*)0x400E16A8U) /**< \brief (PIOE) Output Write Status Register */ +#define REG_PIOE_AIMER (*(WoReg*)0x400E16B0U) /**< \brief (PIOE) Additional Interrupt Modes Enable Register */ +#define REG_PIOE_AIMDR (*(WoReg*)0x400E16B4U) /**< \brief (PIOE) Additional Interrupt Modes Disables Register */ +#define REG_PIOE_AIMMR (*(RoReg*)0x400E16B8U) /**< \brief (PIOE) Additional Interrupt Modes Mask Register */ +#define REG_PIOE_ESR (*(WoReg*)0x400E16C0U) /**< \brief (PIOE) Edge Select Register */ +#define REG_PIOE_LSR (*(WoReg*)0x400E16C4U) /**< \brief (PIOE) Level Select Register */ +#define REG_PIOE_ELSR (*(RoReg*)0x400E16C8U) /**< \brief (PIOE) Edge/Level Status Register */ +#define REG_PIOE_FELLSR (*(WoReg*)0x400E16D0U) /**< \brief (PIOE) Falling Edge/Low Level Select Register */ +#define REG_PIOE_REHLSR (*(WoReg*)0x400E16D4U) /**< \brief (PIOE) Rising Edge/ High Level Select Register */ +#define REG_PIOE_FRLHSR (*(RoReg*)0x400E16D8U) /**< \brief (PIOE) Fall/Rise - Low/High Status Register */ +#define REG_PIOE_LOCKSR (*(RoReg*)0x400E16E0U) /**< \brief (PIOE) Lock Status */ +#define REG_PIOE_WPMR (*(RwReg*)0x400E16E4U) /**< \brief (PIOE) Write Protect Mode Register */ +#define REG_PIOE_WPSR (*(RoReg*)0x400E16E8U) /**< \brief (PIOE) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_PIOE_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_piof.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_piof.h new file mode 100644 index 000000000..7d6846a67 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_piof.h @@ -0,0 +1,124 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_PIOF_INSTANCE_ +#define _SAM3XA_PIOF_INSTANCE_ + +/* ========== Register definition for PIOF peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PIOF_PER (0x400E1800U) /**< \brief (PIOF) PIO Enable Register */ +#define REG_PIOF_PDR (0x400E1804U) /**< \brief (PIOF) PIO Disable Register */ +#define REG_PIOF_PSR (0x400E1808U) /**< \brief (PIOF) PIO Status Register */ +#define REG_PIOF_OER (0x400E1810U) /**< \brief (PIOF) Output Enable Register */ +#define REG_PIOF_ODR (0x400E1814U) /**< \brief (PIOF) Output Disable Register */ +#define REG_PIOF_OSR (0x400E1818U) /**< \brief (PIOF) Output Status Register */ +#define REG_PIOF_IFER (0x400E1820U) /**< \brief (PIOF) Glitch Input Filter Enable Register */ +#define REG_PIOF_IFDR (0x400E1824U) /**< \brief (PIOF) Glitch Input Filter Disable Register */ +#define REG_PIOF_IFSR (0x400E1828U) /**< \brief (PIOF) Glitch Input Filter Status Register */ +#define REG_PIOF_SODR (0x400E1830U) /**< \brief (PIOF) Set Output Data Register */ +#define REG_PIOF_CODR (0x400E1834U) /**< \brief (PIOF) Clear Output Data Register */ +#define REG_PIOF_ODSR (0x400E1838U) /**< \brief (PIOF) Output Data Status Register */ +#define REG_PIOF_PDSR (0x400E183CU) /**< \brief (PIOF) Pin Data Status Register */ +#define REG_PIOF_IER (0x400E1840U) /**< \brief (PIOF) Interrupt Enable Register */ +#define REG_PIOF_IDR (0x400E1844U) /**< \brief (PIOF) Interrupt Disable Register */ +#define REG_PIOF_IMR (0x400E1848U) /**< \brief (PIOF) Interrupt Mask Register */ +#define REG_PIOF_ISR (0x400E184CU) /**< \brief (PIOF) Interrupt Status Register */ +#define REG_PIOF_MDER (0x400E1850U) /**< \brief (PIOF) Multi-driver Enable Register */ +#define REG_PIOF_MDDR (0x400E1854U) /**< \brief (PIOF) Multi-driver Disable Register */ +#define REG_PIOF_MDSR (0x400E1858U) /**< \brief (PIOF) Multi-driver Status Register */ +#define REG_PIOF_PUDR (0x400E1860U) /**< \brief (PIOF) Pull-up Disable Register */ +#define REG_PIOF_PUER (0x400E1864U) /**< \brief (PIOF) Pull-up Enable Register */ +#define REG_PIOF_PUSR (0x400E1868U) /**< \brief (PIOF) Pad Pull-up Status Register */ +#define REG_PIOF_ABSR (0x400E1870U) /**< \brief (PIOF) Peripheral AB Select Register */ +#define REG_PIOF_SCIFSR (0x400E1880U) /**< \brief (PIOF) System Clock Glitch Input Filter Select Register */ +#define REG_PIOF_DIFSR (0x400E1884U) /**< \brief (PIOF) Debouncing Input Filter Select Register */ +#define REG_PIOF_IFDGSR (0x400E1888U) /**< \brief (PIOF) Glitch or Debouncing Input Filter Clock Selection Status Register */ +#define REG_PIOF_SCDR (0x400E188CU) /**< \brief (PIOF) Slow Clock Divider Debouncing Register */ +#define REG_PIOF_OWER (0x400E18A0U) /**< \brief (PIOF) Output Write Enable */ +#define REG_PIOF_OWDR (0x400E18A4U) /**< \brief (PIOF) Output Write Disable */ +#define REG_PIOF_OWSR (0x400E18A8U) /**< \brief (PIOF) Output Write Status Register */ +#define REG_PIOF_AIMER (0x400E18B0U) /**< \brief (PIOF) Additional Interrupt Modes Enable Register */ +#define REG_PIOF_AIMDR (0x400E18B4U) /**< \brief (PIOF) Additional Interrupt Modes Disables Register */ +#define REG_PIOF_AIMMR (0x400E18B8U) /**< \brief (PIOF) Additional Interrupt Modes Mask Register */ +#define REG_PIOF_ESR (0x400E18C0U) /**< \brief (PIOF) Edge Select Register */ +#define REG_PIOF_LSR (0x400E18C4U) /**< \brief (PIOF) Level Select Register */ +#define REG_PIOF_ELSR (0x400E18C8U) /**< \brief (PIOF) Edge/Level Status Register */ +#define REG_PIOF_FELLSR (0x400E18D0U) /**< \brief (PIOF) Falling Edge/Low Level Select Register */ +#define REG_PIOF_REHLSR (0x400E18D4U) /**< \brief (PIOF) Rising Edge/ High Level Select Register */ +#define REG_PIOF_FRLHSR (0x400E18D8U) /**< \brief (PIOF) Fall/Rise - Low/High Status Register */ +#define REG_PIOF_LOCKSR (0x400E18E0U) /**< \brief (PIOF) Lock Status */ +#define REG_PIOF_WPMR (0x400E18E4U) /**< \brief (PIOF) Write Protect Mode Register */ +#define REG_PIOF_WPSR (0x400E18E8U) /**< \brief (PIOF) Write Protect Status Register */ +#else +#define REG_PIOF_PER (*(WoReg*)0x400E1800U) /**< \brief (PIOF) PIO Enable Register */ +#define REG_PIOF_PDR (*(WoReg*)0x400E1804U) /**< \brief (PIOF) PIO Disable Register */ +#define REG_PIOF_PSR (*(RoReg*)0x400E1808U) /**< \brief (PIOF) PIO Status Register */ +#define REG_PIOF_OER (*(WoReg*)0x400E1810U) /**< \brief (PIOF) Output Enable Register */ +#define REG_PIOF_ODR (*(WoReg*)0x400E1814U) /**< \brief (PIOF) Output Disable Register */ +#define REG_PIOF_OSR (*(RoReg*)0x400E1818U) /**< \brief (PIOF) Output Status Register */ +#define REG_PIOF_IFER (*(WoReg*)0x400E1820U) /**< \brief (PIOF) Glitch Input Filter Enable Register */ +#define REG_PIOF_IFDR (*(WoReg*)0x400E1824U) /**< \brief (PIOF) Glitch Input Filter Disable Register */ +#define REG_PIOF_IFSR (*(RoReg*)0x400E1828U) /**< \brief (PIOF) Glitch Input Filter Status Register */ +#define REG_PIOF_SODR (*(WoReg*)0x400E1830U) /**< \brief (PIOF) Set Output Data Register */ +#define REG_PIOF_CODR (*(WoReg*)0x400E1834U) /**< \brief (PIOF) Clear Output Data Register */ +#define REG_PIOF_ODSR (*(RwReg*)0x400E1838U) /**< \brief (PIOF) Output Data Status Register */ +#define REG_PIOF_PDSR (*(RoReg*)0x400E183CU) /**< \brief (PIOF) Pin Data Status Register */ +#define REG_PIOF_IER (*(WoReg*)0x400E1840U) /**< \brief (PIOF) Interrupt Enable Register */ +#define REG_PIOF_IDR (*(WoReg*)0x400E1844U) /**< \brief (PIOF) Interrupt Disable Register */ +#define REG_PIOF_IMR (*(RoReg*)0x400E1848U) /**< \brief (PIOF) Interrupt Mask Register */ +#define REG_PIOF_ISR (*(RoReg*)0x400E184CU) /**< \brief (PIOF) Interrupt Status Register */ +#define REG_PIOF_MDER (*(WoReg*)0x400E1850U) /**< \brief (PIOF) Multi-driver Enable Register */ +#define REG_PIOF_MDDR (*(WoReg*)0x400E1854U) /**< \brief (PIOF) Multi-driver Disable Register */ +#define REG_PIOF_MDSR (*(RoReg*)0x400E1858U) /**< \brief (PIOF) Multi-driver Status Register */ +#define REG_PIOF_PUDR (*(WoReg*)0x400E1860U) /**< \brief (PIOF) Pull-up Disable Register */ +#define REG_PIOF_PUER (*(WoReg*)0x400E1864U) /**< \brief (PIOF) Pull-up Enable Register */ +#define REG_PIOF_PUSR (*(RoReg*)0x400E1868U) /**< \brief (PIOF) Pad Pull-up Status Register */ +#define REG_PIOF_ABSR (*(RwReg*)0x400E1870U) /**< \brief (PIOF) Peripheral AB Select Register */ +#define REG_PIOF_SCIFSR (*(WoReg*)0x400E1880U) /**< \brief (PIOF) System Clock Glitch Input Filter Select Register */ +#define REG_PIOF_DIFSR (*(WoReg*)0x400E1884U) /**< \brief (PIOF) Debouncing Input Filter Select Register */ +#define REG_PIOF_IFDGSR (*(RoReg*)0x400E1888U) /**< \brief (PIOF) Glitch or Debouncing Input Filter Clock Selection Status Register */ +#define REG_PIOF_SCDR (*(RwReg*)0x400E188CU) /**< \brief (PIOF) Slow Clock Divider Debouncing Register */ +#define REG_PIOF_OWER (*(WoReg*)0x400E18A0U) /**< \brief (PIOF) Output Write Enable */ +#define REG_PIOF_OWDR (*(WoReg*)0x400E18A4U) /**< \brief (PIOF) Output Write Disable */ +#define REG_PIOF_OWSR (*(RoReg*)0x400E18A8U) /**< \brief (PIOF) Output Write Status Register */ +#define REG_PIOF_AIMER (*(WoReg*)0x400E18B0U) /**< \brief (PIOF) Additional Interrupt Modes Enable Register */ +#define REG_PIOF_AIMDR (*(WoReg*)0x400E18B4U) /**< \brief (PIOF) Additional Interrupt Modes Disables Register */ +#define REG_PIOF_AIMMR (*(RoReg*)0x400E18B8U) /**< \brief (PIOF) Additional Interrupt Modes Mask Register */ +#define REG_PIOF_ESR (*(WoReg*)0x400E18C0U) /**< \brief (PIOF) Edge Select Register */ +#define REG_PIOF_LSR (*(WoReg*)0x400E18C4U) /**< \brief (PIOF) Level Select Register */ +#define REG_PIOF_ELSR (*(RoReg*)0x400E18C8U) /**< \brief (PIOF) Edge/Level Status Register */ +#define REG_PIOF_FELLSR (*(WoReg*)0x400E18D0U) /**< \brief (PIOF) Falling Edge/Low Level Select Register */ +#define REG_PIOF_REHLSR (*(WoReg*)0x400E18D4U) /**< \brief (PIOF) Rising Edge/ High Level Select Register */ +#define REG_PIOF_FRLHSR (*(RoReg*)0x400E18D8U) /**< \brief (PIOF) Fall/Rise - Low/High Status Register */ +#define REG_PIOF_LOCKSR (*(RoReg*)0x400E18E0U) /**< \brief (PIOF) Lock Status */ +#define REG_PIOF_WPMR (*(RwReg*)0x400E18E4U) /**< \brief (PIOF) Write Protect Mode Register */ +#define REG_PIOF_WPSR (*(RoReg*)0x400E18E8U) /**< \brief (PIOF) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_PIOF_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_pmc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_pmc.h new file mode 100644 index 000000000..1c867c775 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_pmc.h @@ -0,0 +1,90 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_PMC_INSTANCE_ +#define _SAM3XA_PMC_INSTANCE_ + +/* ========== Register definition for PMC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PMC_SCER (0x400E0600U) /**< \brief (PMC) System Clock Enable Register */ +#define REG_PMC_SCDR (0x400E0604U) /**< \brief (PMC) System Clock Disable Register */ +#define REG_PMC_SCSR (0x400E0608U) /**< \brief (PMC) System Clock Status Register */ +#define REG_PMC_PCER0 (0x400E0610U) /**< \brief (PMC) Peripheral Clock Enable Register 0 */ +#define REG_PMC_PCDR0 (0x400E0614U) /**< \brief (PMC) Peripheral Clock Disable Register 0 */ +#define REG_PMC_PCSR0 (0x400E0618U) /**< \brief (PMC) Peripheral Clock Status Register 0 */ +#define REG_CKGR_UCKR (0x400E061CU) /**< \brief (PMC) UTMI Clock Register */ +#define REG_CKGR_MOR (0x400E0620U) /**< \brief (PMC) Main Oscillator Register */ +#define REG_CKGR_MCFR (0x400E0624U) /**< \brief (PMC) Main Clock Frequency Register */ +#define REG_CKGR_PLLAR (0x400E0628U) /**< \brief (PMC) PLLA Register */ +#define REG_PMC_MCKR (0x400E0630U) /**< \brief (PMC) Master Clock Register */ +#define REG_PMC_USB (0x400E0638U) /**< \brief (PMC) USB Clock Register */ +#define REG_PMC_PCK (0x400E0640U) /**< \brief (PMC) Programmable Clock 0 Register */ +#define REG_PMC_IER (0x400E0660U) /**< \brief (PMC) Interrupt Enable Register */ +#define REG_PMC_IDR (0x400E0664U) /**< \brief (PMC) Interrupt Disable Register */ +#define REG_PMC_SR (0x400E0668U) /**< \brief (PMC) Status Register */ +#define REG_PMC_IMR (0x400E066CU) /**< \brief (PMC) Interrupt Mask Register */ +#define REG_PMC_FSMR (0x400E0670U) /**< \brief (PMC) Fast Startup Mode Register */ +#define REG_PMC_FSPR (0x400E0674U) /**< \brief (PMC) Fast Startup Polarity Register */ +#define REG_PMC_FOCR (0x400E0678U) /**< \brief (PMC) Fault Output Clear Register */ +#define REG_PMC_WPMR (0x400E06E4U) /**< \brief (PMC) Write Protect Mode Register */ +#define REG_PMC_WPSR (0x400E06E8U) /**< \brief (PMC) Write Protect Status Register */ +#define REG_PMC_PCER1 (0x400E0700U) /**< \brief (PMC) Peripheral Clock Enable Register 1 */ +#define REG_PMC_PCDR1 (0x400E0704U) /**< \brief (PMC) Peripheral Clock Disable Register 1 */ +#define REG_PMC_PCSR1 (0x400E0708U) /**< \brief (PMC) Peripheral Clock Status Register 1 */ +#define REG_PMC_PCR (0x400E070CU) /**< \brief (PMC) Peripheral Control Register */ +#else +#define REG_PMC_SCER (*(WoReg*)0x400E0600U) /**< \brief (PMC) System Clock Enable Register */ +#define REG_PMC_SCDR (*(WoReg*)0x400E0604U) /**< \brief (PMC) System Clock Disable Register */ +#define REG_PMC_SCSR (*(RoReg*)0x400E0608U) /**< \brief (PMC) System Clock Status Register */ +#define REG_PMC_PCER0 (*(WoReg*)0x400E0610U) /**< \brief (PMC) Peripheral Clock Enable Register 0 */ +#define REG_PMC_PCDR0 (*(WoReg*)0x400E0614U) /**< \brief (PMC) Peripheral Clock Disable Register 0 */ +#define REG_PMC_PCSR0 (*(RoReg*)0x400E0618U) /**< \brief (PMC) Peripheral Clock Status Register 0 */ +#define REG_CKGR_UCKR (*(RwReg*)0x400E061CU) /**< \brief (PMC) UTMI Clock Register */ +#define REG_CKGR_MOR (*(RwReg*)0x400E0620U) /**< \brief (PMC) Main Oscillator Register */ +#define REG_CKGR_MCFR (*(RoReg*)0x400E0624U) /**< \brief (PMC) Main Clock Frequency Register */ +#define REG_CKGR_PLLAR (*(RwReg*)0x400E0628U) /**< \brief (PMC) PLLA Register */ +#define REG_PMC_MCKR (*(RwReg*)0x400E0630U) /**< \brief (PMC) Master Clock Register */ +#define REG_PMC_USB (*(RwReg*)0x400E0638U) /**< \brief (PMC) USB Clock Register */ +#define REG_PMC_PCK (*(RwReg*)0x400E0640U) /**< \brief (PMC) Programmable Clock 0 Register */ +#define REG_PMC_IER (*(WoReg*)0x400E0660U) /**< \brief (PMC) Interrupt Enable Register */ +#define REG_PMC_IDR (*(WoReg*)0x400E0664U) /**< \brief (PMC) Interrupt Disable Register */ +#define REG_PMC_SR (*(RoReg*)0x400E0668U) /**< \brief (PMC) Status Register */ +#define REG_PMC_IMR (*(RoReg*)0x400E066CU) /**< \brief (PMC) Interrupt Mask Register */ +#define REG_PMC_FSMR (*(RwReg*)0x400E0670U) /**< \brief (PMC) Fast Startup Mode Register */ +#define REG_PMC_FSPR (*(RwReg*)0x400E0674U) /**< \brief (PMC) Fast Startup Polarity Register */ +#define REG_PMC_FOCR (*(WoReg*)0x400E0678U) /**< \brief (PMC) Fault Output Clear Register */ +#define REG_PMC_WPMR (*(RwReg*)0x400E06E4U) /**< \brief (PMC) Write Protect Mode Register */ +#define REG_PMC_WPSR (*(RoReg*)0x400E06E8U) /**< \brief (PMC) Write Protect Status Register */ +#define REG_PMC_PCER1 (*(WoReg*)0x400E0700U) /**< \brief (PMC) Peripheral Clock Enable Register 1 */ +#define REG_PMC_PCDR1 (*(WoReg*)0x400E0704U) /**< \brief (PMC) Peripheral Clock Disable Register 1 */ +#define REG_PMC_PCSR1 (*(RoReg*)0x400E0708U) /**< \brief (PMC) Peripheral Clock Status Register 1 */ +#define REG_PMC_PCR (*(RwReg*)0x400E070CU) /**< \brief (PMC) Peripheral Control Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_PMC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_pwm.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_pwm.h new file mode 100644 index 000000000..79859cf8a --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_pwm.h @@ -0,0 +1,314 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_PWM_INSTANCE_ +#define _SAM3XA_PWM_INSTANCE_ + +/* ========== Register definition for PWM peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_PWM_CLK (0x40094000U) /**< \brief (PWM) PWM Clock Register */ +#define REG_PWM_ENA (0x40094004U) /**< \brief (PWM) PWM Enable Register */ +#define REG_PWM_DIS (0x40094008U) /**< \brief (PWM) PWM Disable Register */ +#define REG_PWM_SR (0x4009400CU) /**< \brief (PWM) PWM Status Register */ +#define REG_PWM_IER1 (0x40094010U) /**< \brief (PWM) PWM Interrupt Enable Register 1 */ +#define REG_PWM_IDR1 (0x40094014U) /**< \brief (PWM) PWM Interrupt Disable Register 1 */ +#define REG_PWM_IMR1 (0x40094018U) /**< \brief (PWM) PWM Interrupt Mask Register 1 */ +#define REG_PWM_ISR1 (0x4009401CU) /**< \brief (PWM) PWM Interrupt Status Register 1 */ +#define REG_PWM_SCM (0x40094020U) /**< \brief (PWM) PWM Sync Channels Mode Register */ +#define REG_PWM_SCUC (0x40094028U) /**< \brief (PWM) PWM Sync Channels Update Control Register */ +#define REG_PWM_SCUP (0x4009402CU) /**< \brief (PWM) PWM Sync Channels Update Period Register */ +#define REG_PWM_SCUPUPD (0x40094030U) /**< \brief (PWM) PWM Sync Channels Update Period Update Register */ +#define REG_PWM_IER2 (0x40094034U) /**< \brief (PWM) PWM Interrupt Enable Register 2 */ +#define REG_PWM_IDR2 (0x40094038U) /**< \brief (PWM) PWM Interrupt Disable Register 2 */ +#define REG_PWM_IMR2 (0x4009403CU) /**< \brief (PWM) PWM Interrupt Mask Register 2 */ +#define REG_PWM_ISR2 (0x40094040U) /**< \brief (PWM) PWM Interrupt Status Register 2 */ +#define REG_PWM_OOV (0x40094044U) /**< \brief (PWM) PWM Output Override Value Register */ +#define REG_PWM_OS (0x40094048U) /**< \brief (PWM) PWM Output Selection Register */ +#define REG_PWM_OSS (0x4009404CU) /**< \brief (PWM) PWM Output Selection Set Register */ +#define REG_PWM_OSC (0x40094050U) /**< \brief (PWM) PWM Output Selection Clear Register */ +#define REG_PWM_OSSUPD (0x40094054U) /**< \brief (PWM) PWM Output Selection Set Update Register */ +#define REG_PWM_OSCUPD (0x40094058U) /**< \brief (PWM) PWM Output Selection Clear Update Register */ +#define REG_PWM_FMR (0x4009405CU) /**< \brief (PWM) PWM Fault Mode Register */ +#define REG_PWM_FSR (0x40094060U) /**< \brief (PWM) PWM Fault Status Register */ +#define REG_PWM_FCR (0x40094064U) /**< \brief (PWM) PWM Fault Clear Register */ +#define REG_PWM_FPV (0x40094068U) /**< \brief (PWM) PWM Fault Protection Value Register */ +#define REG_PWM_FPE1 (0x4009406CU) /**< \brief (PWM) PWM Fault Protection Enable Register 1 */ +#define REG_PWM_FPE2 (0x40094070U) /**< \brief (PWM) PWM Fault Protection Enable Register 2 */ +#define REG_PWM_ELMR (0x4009407CU) /**< \brief (PWM) PWM Event Line 0 Mode Register */ +#define REG_PWM_SMMR (0x400940B0U) /**< \brief (PWM) PWM Stepper Motor Mode Register */ +#define REG_PWM_WPCR (0x400940E4U) /**< \brief (PWM) PWM Write Protect Control Register */ +#define REG_PWM_WPSR (0x400940E8U) /**< \brief (PWM) PWM Write Protect Status Register */ +#define REG_PWM_RPR (0x40094100U) /**< \brief (PWM) Receive Pointer Register */ +#define REG_PWM_RCR (0x40094104U) /**< \brief (PWM) Receive Counter Register */ +#define REG_PWM_TPR (0x40094108U) /**< \brief (PWM) Transmit Pointer Register */ +#define REG_PWM_TCR (0x4009410CU) /**< \brief (PWM) Transmit Counter Register */ +#define REG_PWM_RNPR (0x40094110U) /**< \brief (PWM) Receive Next Pointer Register */ +#define REG_PWM_RNCR (0x40094114U) /**< \brief (PWM) Receive Next Counter Register */ +#define REG_PWM_TNPR (0x40094118U) /**< \brief (PWM) Transmit Next Pointer Register */ +#define REG_PWM_TNCR (0x4009411CU) /**< \brief (PWM) Transmit Next Counter Register */ +#define REG_PWM_PTCR (0x40094120U) /**< \brief (PWM) Transfer Control Register */ +#define REG_PWM_PTSR (0x40094124U) /**< \brief (PWM) Transfer Status Register */ +#define REG_PWM_CMPV0 (0x40094130U) /**< \brief (PWM) PWM Comparison 0 Value Register */ +#define REG_PWM_CMPVUPD0 (0x40094134U) /**< \brief (PWM) PWM Comparison 0 Value Update Register */ +#define REG_PWM_CMPM0 (0x40094138U) /**< \brief (PWM) PWM Comparison 0 Mode Register */ +#define REG_PWM_CMPMUPD0 (0x4009413CU) /**< \brief (PWM) PWM Comparison 0 Mode Update Register */ +#define REG_PWM_CMPV1 (0x40094140U) /**< \brief (PWM) PWM Comparison 1 Value Register */ +#define REG_PWM_CMPVUPD1 (0x40094144U) /**< \brief (PWM) PWM Comparison 1 Value Update Register */ +#define REG_PWM_CMPM1 (0x40094148U) /**< \brief (PWM) PWM Comparison 1 Mode Register */ +#define REG_PWM_CMPMUPD1 (0x4009414CU) /**< \brief (PWM) PWM Comparison 1 Mode Update Register */ +#define REG_PWM_CMPV2 (0x40094150U) /**< \brief (PWM) PWM Comparison 2 Value Register */ +#define REG_PWM_CMPVUPD2 (0x40094154U) /**< \brief (PWM) PWM Comparison 2 Value Update Register */ +#define REG_PWM_CMPM2 (0x40094158U) /**< \brief (PWM) PWM Comparison 2 Mode Register */ +#define REG_PWM_CMPMUPD2 (0x4009415CU) /**< \brief (PWM) PWM Comparison 2 Mode Update Register */ +#define REG_PWM_CMPV3 (0x40094160U) /**< \brief (PWM) PWM Comparison 3 Value Register */ +#define REG_PWM_CMPVUPD3 (0x40094164U) /**< \brief (PWM) PWM Comparison 3 Value Update Register */ +#define REG_PWM_CMPM3 (0x40094168U) /**< \brief (PWM) PWM Comparison 3 Mode Register */ +#define REG_PWM_CMPMUPD3 (0x4009416CU) /**< \brief (PWM) PWM Comparison 3 Mode Update Register */ +#define REG_PWM_CMPV4 (0x40094170U) /**< \brief (PWM) PWM Comparison 4 Value Register */ +#define REG_PWM_CMPVUPD4 (0x40094174U) /**< \brief (PWM) PWM Comparison 4 Value Update Register */ +#define REG_PWM_CMPM4 (0x40094178U) /**< \brief (PWM) PWM Comparison 4 Mode Register */ +#define REG_PWM_CMPMUPD4 (0x4009417CU) /**< \brief (PWM) PWM Comparison 4 Mode Update Register */ +#define REG_PWM_CMPV5 (0x40094180U) /**< \brief (PWM) PWM Comparison 5 Value Register */ +#define REG_PWM_CMPVUPD5 (0x40094184U) /**< \brief (PWM) PWM Comparison 5 Value Update Register */ +#define REG_PWM_CMPM5 (0x40094188U) /**< \brief (PWM) PWM Comparison 5 Mode Register */ +#define REG_PWM_CMPMUPD5 (0x4009418CU) /**< \brief (PWM) PWM Comparison 5 Mode Update Register */ +#define REG_PWM_CMPV6 (0x40094190U) /**< \brief (PWM) PWM Comparison 6 Value Register */ +#define REG_PWM_CMPVUPD6 (0x40094194U) /**< \brief (PWM) PWM Comparison 6 Value Update Register */ +#define REG_PWM_CMPM6 (0x40094198U) /**< \brief (PWM) PWM Comparison 6 Mode Register */ +#define REG_PWM_CMPMUPD6 (0x4009419CU) /**< \brief (PWM) PWM Comparison 6 Mode Update Register */ +#define REG_PWM_CMPV7 (0x400941A0U) /**< \brief (PWM) PWM Comparison 7 Value Register */ +#define REG_PWM_CMPVUPD7 (0x400941A4U) /**< \brief (PWM) PWM Comparison 7 Value Update Register */ +#define REG_PWM_CMPM7 (0x400941A8U) /**< \brief (PWM) PWM Comparison 7 Mode Register */ +#define REG_PWM_CMPMUPD7 (0x400941ACU) /**< \brief (PWM) PWM Comparison 7 Mode Update Register */ +#define REG_PWM_CMR0 (0x40094200U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 0) */ +#define REG_PWM_CDTY0 (0x40094204U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 0) */ +#define REG_PWM_CDTYUPD0 (0x40094208U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 0) */ +#define REG_PWM_CPRD0 (0x4009420CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 0) */ +#define REG_PWM_CPRDUPD0 (0x40094210U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 0) */ +#define REG_PWM_CCNT0 (0x40094214U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 0) */ +#define REG_PWM_DT0 (0x40094218U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 0) */ +#define REG_PWM_DTUPD0 (0x4009421CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 0) */ +#define REG_PWM_CMR1 (0x40094220U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 1) */ +#define REG_PWM_CDTY1 (0x40094224U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 1) */ +#define REG_PWM_CDTYUPD1 (0x40094228U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 1) */ +#define REG_PWM_CPRD1 (0x4009422CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 1) */ +#define REG_PWM_CPRDUPD1 (0x40094230U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 1) */ +#define REG_PWM_CCNT1 (0x40094234U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 1) */ +#define REG_PWM_DT1 (0x40094238U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 1) */ +#define REG_PWM_DTUPD1 (0x4009423CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 1) */ +#define REG_PWM_CMR2 (0x40094240U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 2) */ +#define REG_PWM_CDTY2 (0x40094244U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 2) */ +#define REG_PWM_CDTYUPD2 (0x40094248U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 2) */ +#define REG_PWM_CPRD2 (0x4009424CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 2) */ +#define REG_PWM_CPRDUPD2 (0x40094250U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 2) */ +#define REG_PWM_CCNT2 (0x40094254U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 2) */ +#define REG_PWM_DT2 (0x40094258U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 2) */ +#define REG_PWM_DTUPD2 (0x4009425CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 2) */ +#define REG_PWM_CMR3 (0x40094260U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 3) */ +#define REG_PWM_CDTY3 (0x40094264U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 3) */ +#define REG_PWM_CDTYUPD3 (0x40094268U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 3) */ +#define REG_PWM_CPRD3 (0x4009426CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 3) */ +#define REG_PWM_CPRDUPD3 (0x40094270U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 3) */ +#define REG_PWM_CCNT3 (0x40094274U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 3) */ +#define REG_PWM_DT3 (0x40094278U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 3) */ +#define REG_PWM_DTUPD3 (0x4009427CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 3) */ +#define REG_PWM_CMR4 (0x40094280U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 4) */ +#define REG_PWM_CDTY4 (0x40094284U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 4) */ +#define REG_PWM_CDTYUPD4 (0x40094288U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 4) */ +#define REG_PWM_CPRD4 (0x4009428CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 4) */ +#define REG_PWM_CPRDUPD4 (0x40094290U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 4) */ +#define REG_PWM_CCNT4 (0x40094294U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 4) */ +#define REG_PWM_DT4 (0x40094298U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 4) */ +#define REG_PWM_DTUPD4 (0x4009429CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 4) */ +#define REG_PWM_CMR5 (0x400942A0U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 5) */ +#define REG_PWM_CDTY5 (0x400942A4U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 5) */ +#define REG_PWM_CDTYUPD5 (0x400942A8U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 5) */ +#define REG_PWM_CPRD5 (0x400942ACU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 5) */ +#define REG_PWM_CPRDUPD5 (0x400942B0U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 5) */ +#define REG_PWM_CCNT5 (0x400942B4U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 5) */ +#define REG_PWM_DT5 (0x400942B8U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 5) */ +#define REG_PWM_DTUPD5 (0x400942BCU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 5) */ +#define REG_PWM_CMR6 (0x400942C0U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 6) */ +#define REG_PWM_CDTY6 (0x400942C4U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 6) */ +#define REG_PWM_CDTYUPD6 (0x400942C8U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 6) */ +#define REG_PWM_CPRD6 (0x400942CCU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 6) */ +#define REG_PWM_CPRDUPD6 (0x400942D0U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 6) */ +#define REG_PWM_CCNT6 (0x400942D4U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 6) */ +#define REG_PWM_DT6 (0x400942D8U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 6) */ +#define REG_PWM_DTUPD6 (0x400942DCU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 6) */ +#define REG_PWM_CMR7 (0x400942E0U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 7) */ +#define REG_PWM_CDTY7 (0x400942E4U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 7) */ +#define REG_PWM_CDTYUPD7 (0x400942E8U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 7) */ +#define REG_PWM_CPRD7 (0x400942ECU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 7) */ +#define REG_PWM_CPRDUPD7 (0x400942F0U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 7) */ +#define REG_PWM_CCNT7 (0x400942F4U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 7) */ +#define REG_PWM_DT7 (0x400942F8U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 7) */ +#define REG_PWM_DTUPD7 (0x400942FCU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 7) */ +#else +#define REG_PWM_CLK (*(RwReg*)0x40094000U) /**< \brief (PWM) PWM Clock Register */ +#define REG_PWM_ENA (*(WoReg*)0x40094004U) /**< \brief (PWM) PWM Enable Register */ +#define REG_PWM_DIS (*(WoReg*)0x40094008U) /**< \brief (PWM) PWM Disable Register */ +#define REG_PWM_SR (*(RoReg*)0x4009400CU) /**< \brief (PWM) PWM Status Register */ +#define REG_PWM_IER1 (*(WoReg*)0x40094010U) /**< \brief (PWM) PWM Interrupt Enable Register 1 */ +#define REG_PWM_IDR1 (*(WoReg*)0x40094014U) /**< \brief (PWM) PWM Interrupt Disable Register 1 */ +#define REG_PWM_IMR1 (*(RoReg*)0x40094018U) /**< \brief (PWM) PWM Interrupt Mask Register 1 */ +#define REG_PWM_ISR1 (*(RoReg*)0x4009401CU) /**< \brief (PWM) PWM Interrupt Status Register 1 */ +#define REG_PWM_SCM (*(RwReg*)0x40094020U) /**< \brief (PWM) PWM Sync Channels Mode Register */ +#define REG_PWM_SCUC (*(RwReg*)0x40094028U) /**< \brief (PWM) PWM Sync Channels Update Control Register */ +#define REG_PWM_SCUP (*(RwReg*)0x4009402CU) /**< \brief (PWM) PWM Sync Channels Update Period Register */ +#define REG_PWM_SCUPUPD (*(WoReg*)0x40094030U) /**< \brief (PWM) PWM Sync Channels Update Period Update Register */ +#define REG_PWM_IER2 (*(WoReg*)0x40094034U) /**< \brief (PWM) PWM Interrupt Enable Register 2 */ +#define REG_PWM_IDR2 (*(WoReg*)0x40094038U) /**< \brief (PWM) PWM Interrupt Disable Register 2 */ +#define REG_PWM_IMR2 (*(RoReg*)0x4009403CU) /**< \brief (PWM) PWM Interrupt Mask Register 2 */ +#define REG_PWM_ISR2 (*(RoReg*)0x40094040U) /**< \brief (PWM) PWM Interrupt Status Register 2 */ +#define REG_PWM_OOV (*(RwReg*)0x40094044U) /**< \brief (PWM) PWM Output Override Value Register */ +#define REG_PWM_OS (*(RwReg*)0x40094048U) /**< \brief (PWM) PWM Output Selection Register */ +#define REG_PWM_OSS (*(WoReg*)0x4009404CU) /**< \brief (PWM) PWM Output Selection Set Register */ +#define REG_PWM_OSC (*(WoReg*)0x40094050U) /**< \brief (PWM) PWM Output Selection Clear Register */ +#define REG_PWM_OSSUPD (*(WoReg*)0x40094054U) /**< \brief (PWM) PWM Output Selection Set Update Register */ +#define REG_PWM_OSCUPD (*(WoReg*)0x40094058U) /**< \brief (PWM) PWM Output Selection Clear Update Register */ +#define REG_PWM_FMR (*(RwReg*)0x4009405CU) /**< \brief (PWM) PWM Fault Mode Register */ +#define REG_PWM_FSR (*(RoReg*)0x40094060U) /**< \brief (PWM) PWM Fault Status Register */ +#define REG_PWM_FCR (*(WoReg*)0x40094064U) /**< \brief (PWM) PWM Fault Clear Register */ +#define REG_PWM_FPV (*(RwReg*)0x40094068U) /**< \brief (PWM) PWM Fault Protection Value Register */ +#define REG_PWM_FPE1 (*(RwReg*)0x4009406CU) /**< \brief (PWM) PWM Fault Protection Enable Register 1 */ +#define REG_PWM_FPE2 (*(RwReg*)0x40094070U) /**< \brief (PWM) PWM Fault Protection Enable Register 2 */ +#define REG_PWM_ELMR (*(RwReg*)0x4009407CU) /**< \brief (PWM) PWM Event Line 0 Mode Register */ +#define REG_PWM_SMMR (*(RwReg*)0x400940B0U) /**< \brief (PWM) PWM Stepper Motor Mode Register */ +#define REG_PWM_WPCR (*(WoReg*)0x400940E4U) /**< \brief (PWM) PWM Write Protect Control Register */ +#define REG_PWM_WPSR (*(RoReg*)0x400940E8U) /**< \brief (PWM) PWM Write Protect Status Register */ +#define REG_PWM_RPR (*(RwReg*)0x40094100U) /**< \brief (PWM) Receive Pointer Register */ +#define REG_PWM_RCR (*(RwReg*)0x40094104U) /**< \brief (PWM) Receive Counter Register */ +#define REG_PWM_TPR (*(RwReg*)0x40094108U) /**< \brief (PWM) Transmit Pointer Register */ +#define REG_PWM_TCR (*(RwReg*)0x4009410CU) /**< \brief (PWM) Transmit Counter Register */ +#define REG_PWM_RNPR (*(RwReg*)0x40094110U) /**< \brief (PWM) Receive Next Pointer Register */ +#define REG_PWM_RNCR (*(RwReg*)0x40094114U) /**< \brief (PWM) Receive Next Counter Register */ +#define REG_PWM_TNPR (*(RwReg*)0x40094118U) /**< \brief (PWM) Transmit Next Pointer Register */ +#define REG_PWM_TNCR (*(RwReg*)0x4009411CU) /**< \brief (PWM) Transmit Next Counter Register */ +#define REG_PWM_PTCR (*(WoReg*)0x40094120U) /**< \brief (PWM) Transfer Control Register */ +#define REG_PWM_PTSR (*(RoReg*)0x40094124U) /**< \brief (PWM) Transfer Status Register */ +#define REG_PWM_CMPV0 (*(RwReg*)0x40094130U) /**< \brief (PWM) PWM Comparison 0 Value Register */ +#define REG_PWM_CMPVUPD0 (*(WoReg*)0x40094134U) /**< \brief (PWM) PWM Comparison 0 Value Update Register */ +#define REG_PWM_CMPM0 (*(RwReg*)0x40094138U) /**< \brief (PWM) PWM Comparison 0 Mode Register */ +#define REG_PWM_CMPMUPD0 (*(WoReg*)0x4009413CU) /**< \brief (PWM) PWM Comparison 0 Mode Update Register */ +#define REG_PWM_CMPV1 (*(RwReg*)0x40094140U) /**< \brief (PWM) PWM Comparison 1 Value Register */ +#define REG_PWM_CMPVUPD1 (*(WoReg*)0x40094144U) /**< \brief (PWM) PWM Comparison 1 Value Update Register */ +#define REG_PWM_CMPM1 (*(RwReg*)0x40094148U) /**< \brief (PWM) PWM Comparison 1 Mode Register */ +#define REG_PWM_CMPMUPD1 (*(WoReg*)0x4009414CU) /**< \brief (PWM) PWM Comparison 1 Mode Update Register */ +#define REG_PWM_CMPV2 (*(RwReg*)0x40094150U) /**< \brief (PWM) PWM Comparison 2 Value Register */ +#define REG_PWM_CMPVUPD2 (*(WoReg*)0x40094154U) /**< \brief (PWM) PWM Comparison 2 Value Update Register */ +#define REG_PWM_CMPM2 (*(RwReg*)0x40094158U) /**< \brief (PWM) PWM Comparison 2 Mode Register */ +#define REG_PWM_CMPMUPD2 (*(WoReg*)0x4009415CU) /**< \brief (PWM) PWM Comparison 2 Mode Update Register */ +#define REG_PWM_CMPV3 (*(RwReg*)0x40094160U) /**< \brief (PWM) PWM Comparison 3 Value Register */ +#define REG_PWM_CMPVUPD3 (*(WoReg*)0x40094164U) /**< \brief (PWM) PWM Comparison 3 Value Update Register */ +#define REG_PWM_CMPM3 (*(RwReg*)0x40094168U) /**< \brief (PWM) PWM Comparison 3 Mode Register */ +#define REG_PWM_CMPMUPD3 (*(WoReg*)0x4009416CU) /**< \brief (PWM) PWM Comparison 3 Mode Update Register */ +#define REG_PWM_CMPV4 (*(RwReg*)0x40094170U) /**< \brief (PWM) PWM Comparison 4 Value Register */ +#define REG_PWM_CMPVUPD4 (*(WoReg*)0x40094174U) /**< \brief (PWM) PWM Comparison 4 Value Update Register */ +#define REG_PWM_CMPM4 (*(RwReg*)0x40094178U) /**< \brief (PWM) PWM Comparison 4 Mode Register */ +#define REG_PWM_CMPMUPD4 (*(WoReg*)0x4009417CU) /**< \brief (PWM) PWM Comparison 4 Mode Update Register */ +#define REG_PWM_CMPV5 (*(RwReg*)0x40094180U) /**< \brief (PWM) PWM Comparison 5 Value Register */ +#define REG_PWM_CMPVUPD5 (*(WoReg*)0x40094184U) /**< \brief (PWM) PWM Comparison 5 Value Update Register */ +#define REG_PWM_CMPM5 (*(RwReg*)0x40094188U) /**< \brief (PWM) PWM Comparison 5 Mode Register */ +#define REG_PWM_CMPMUPD5 (*(WoReg*)0x4009418CU) /**< \brief (PWM) PWM Comparison 5 Mode Update Register */ +#define REG_PWM_CMPV6 (*(RwReg*)0x40094190U) /**< \brief (PWM) PWM Comparison 6 Value Register */ +#define REG_PWM_CMPVUPD6 (*(WoReg*)0x40094194U) /**< \brief (PWM) PWM Comparison 6 Value Update Register */ +#define REG_PWM_CMPM6 (*(RwReg*)0x40094198U) /**< \brief (PWM) PWM Comparison 6 Mode Register */ +#define REG_PWM_CMPMUPD6 (*(WoReg*)0x4009419CU) /**< \brief (PWM) PWM Comparison 6 Mode Update Register */ +#define REG_PWM_CMPV7 (*(RwReg*)0x400941A0U) /**< \brief (PWM) PWM Comparison 7 Value Register */ +#define REG_PWM_CMPVUPD7 (*(WoReg*)0x400941A4U) /**< \brief (PWM) PWM Comparison 7 Value Update Register */ +#define REG_PWM_CMPM7 (*(RwReg*)0x400941A8U) /**< \brief (PWM) PWM Comparison 7 Mode Register */ +#define REG_PWM_CMPMUPD7 (*(WoReg*)0x400941ACU) /**< \brief (PWM) PWM Comparison 7 Mode Update Register */ +#define REG_PWM_CMR0 (*(RwReg*)0x40094200U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 0) */ +#define REG_PWM_CDTY0 (*(RwReg*)0x40094204U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 0) */ +#define REG_PWM_CDTYUPD0 (*(WoReg*)0x40094208U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 0) */ +#define REG_PWM_CPRD0 (*(RwReg*)0x4009420CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 0) */ +#define REG_PWM_CPRDUPD0 (*(WoReg*)0x40094210U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 0) */ +#define REG_PWM_CCNT0 (*(RoReg*)0x40094214U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 0) */ +#define REG_PWM_DT0 (*(RwReg*)0x40094218U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 0) */ +#define REG_PWM_DTUPD0 (*(WoReg*)0x4009421CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 0) */ +#define REG_PWM_CMR1 (*(RwReg*)0x40094220U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 1) */ +#define REG_PWM_CDTY1 (*(RwReg*)0x40094224U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 1) */ +#define REG_PWM_CDTYUPD1 (*(WoReg*)0x40094228U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 1) */ +#define REG_PWM_CPRD1 (*(RwReg*)0x4009422CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 1) */ +#define REG_PWM_CPRDUPD1 (*(WoReg*)0x40094230U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 1) */ +#define REG_PWM_CCNT1 (*(RoReg*)0x40094234U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 1) */ +#define REG_PWM_DT1 (*(RwReg*)0x40094238U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 1) */ +#define REG_PWM_DTUPD1 (*(WoReg*)0x4009423CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 1) */ +#define REG_PWM_CMR2 (*(RwReg*)0x40094240U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 2) */ +#define REG_PWM_CDTY2 (*(RwReg*)0x40094244U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 2) */ +#define REG_PWM_CDTYUPD2 (*(WoReg*)0x40094248U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 2) */ +#define REG_PWM_CPRD2 (*(RwReg*)0x4009424CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 2) */ +#define REG_PWM_CPRDUPD2 (*(WoReg*)0x40094250U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 2) */ +#define REG_PWM_CCNT2 (*(RoReg*)0x40094254U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 2) */ +#define REG_PWM_DT2 (*(RwReg*)0x40094258U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 2) */ +#define REG_PWM_DTUPD2 (*(WoReg*)0x4009425CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 2) */ +#define REG_PWM_CMR3 (*(RwReg*)0x40094260U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 3) */ +#define REG_PWM_CDTY3 (*(RwReg*)0x40094264U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 3) */ +#define REG_PWM_CDTYUPD3 (*(WoReg*)0x40094268U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 3) */ +#define REG_PWM_CPRD3 (*(RwReg*)0x4009426CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 3) */ +#define REG_PWM_CPRDUPD3 (*(WoReg*)0x40094270U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 3) */ +#define REG_PWM_CCNT3 (*(RoReg*)0x40094274U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 3) */ +#define REG_PWM_DT3 (*(RwReg*)0x40094278U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 3) */ +#define REG_PWM_DTUPD3 (*(WoReg*)0x4009427CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 3) */ +#define REG_PWM_CMR4 (*(RwReg*)0x40094280U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 4) */ +#define REG_PWM_CDTY4 (*(RwReg*)0x40094284U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 4) */ +#define REG_PWM_CDTYUPD4 (*(WoReg*)0x40094288U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 4) */ +#define REG_PWM_CPRD4 (*(RwReg*)0x4009428CU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 4) */ +#define REG_PWM_CPRDUPD4 (*(WoReg*)0x40094290U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 4) */ +#define REG_PWM_CCNT4 (*(RoReg*)0x40094294U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 4) */ +#define REG_PWM_DT4 (*(RwReg*)0x40094298U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 4) */ +#define REG_PWM_DTUPD4 (*(WoReg*)0x4009429CU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 4) */ +#define REG_PWM_CMR5 (*(RwReg*)0x400942A0U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 5) */ +#define REG_PWM_CDTY5 (*(RwReg*)0x400942A4U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 5) */ +#define REG_PWM_CDTYUPD5 (*(WoReg*)0x400942A8U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 5) */ +#define REG_PWM_CPRD5 (*(RwReg*)0x400942ACU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 5) */ +#define REG_PWM_CPRDUPD5 (*(WoReg*)0x400942B0U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 5) */ +#define REG_PWM_CCNT5 (*(RoReg*)0x400942B4U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 5) */ +#define REG_PWM_DT5 (*(RwReg*)0x400942B8U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 5) */ +#define REG_PWM_DTUPD5 (*(WoReg*)0x400942BCU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 5) */ +#define REG_PWM_CMR6 (*(RwReg*)0x400942C0U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 6) */ +#define REG_PWM_CDTY6 (*(RwReg*)0x400942C4U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 6) */ +#define REG_PWM_CDTYUPD6 (*(WoReg*)0x400942C8U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 6) */ +#define REG_PWM_CPRD6 (*(RwReg*)0x400942CCU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 6) */ +#define REG_PWM_CPRDUPD6 (*(WoReg*)0x400942D0U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 6) */ +#define REG_PWM_CCNT6 (*(RoReg*)0x400942D4U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 6) */ +#define REG_PWM_DT6 (*(RwReg*)0x400942D8U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 6) */ +#define REG_PWM_DTUPD6 (*(WoReg*)0x400942DCU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 6) */ +#define REG_PWM_CMR7 (*(RwReg*)0x400942E0U) /**< \brief (PWM) PWM Channel Mode Register (ch_num = 7) */ +#define REG_PWM_CDTY7 (*(RwReg*)0x400942E4U) /**< \brief (PWM) PWM Channel Duty Cycle Register (ch_num = 7) */ +#define REG_PWM_CDTYUPD7 (*(WoReg*)0x400942E8U) /**< \brief (PWM) PWM Channel Duty Cycle Update Register (ch_num = 7) */ +#define REG_PWM_CPRD7 (*(RwReg*)0x400942ECU) /**< \brief (PWM) PWM Channel Period Register (ch_num = 7) */ +#define REG_PWM_CPRDUPD7 (*(WoReg*)0x400942F0U) /**< \brief (PWM) PWM Channel Period Update Register (ch_num = 7) */ +#define REG_PWM_CCNT7 (*(RoReg*)0x400942F4U) /**< \brief (PWM) PWM Channel Counter Register (ch_num = 7) */ +#define REG_PWM_DT7 (*(RwReg*)0x400942F8U) /**< \brief (PWM) PWM Channel Dead Time Register (ch_num = 7) */ +#define REG_PWM_DTUPD7 (*(WoReg*)0x400942FCU) /**< \brief (PWM) PWM Channel Dead Time Update Register (ch_num = 7) */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_PWM_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_rstc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_rstc.h new file mode 100644 index 000000000..e2cd8dd25 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_rstc.h @@ -0,0 +1,44 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_RSTC_INSTANCE_ +#define _SAM3XA_RSTC_INSTANCE_ + +/* ========== Register definition for RSTC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_RSTC_CR (0x400E1A00U) /**< \brief (RSTC) Control Register */ +#define REG_RSTC_SR (0x400E1A04U) /**< \brief (RSTC) Status Register */ +#define REG_RSTC_MR (0x400E1A08U) /**< \brief (RSTC) Mode Register */ +#else +#define REG_RSTC_CR (*(WoReg*)0x400E1A00U) /**< \brief (RSTC) Control Register */ +#define REG_RSTC_SR (*(RoReg*)0x400E1A04U) /**< \brief (RSTC) Status Register */ +#define REG_RSTC_MR (*(RwReg*)0x400E1A08U) /**< \brief (RSTC) Mode Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_RSTC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_rtc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_rtc.h new file mode 100644 index 000000000..3aedcc492 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_rtc.h @@ -0,0 +1,64 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_RTC_INSTANCE_ +#define _SAM3XA_RTC_INSTANCE_ + +/* ========== Register definition for RTC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_RTC_CR (0x400E1A60U) /**< \brief (RTC) Control Register */ +#define REG_RTC_MR (0x400E1A64U) /**< \brief (RTC) Mode Register */ +#define REG_RTC_TIMR (0x400E1A68U) /**< \brief (RTC) Time Register */ +#define REG_RTC_CALR (0x400E1A6CU) /**< \brief (RTC) Calendar Register */ +#define REG_RTC_TIMALR (0x400E1A70U) /**< \brief (RTC) Time Alarm Register */ +#define REG_RTC_CALALR (0x400E1A74U) /**< \brief (RTC) Calendar Alarm Register */ +#define REG_RTC_SR (0x400E1A78U) /**< \brief (RTC) Status Register */ +#define REG_RTC_SCCR (0x400E1A7CU) /**< \brief (RTC) Status Clear Command Register */ +#define REG_RTC_IER (0x400E1A80U) /**< \brief (RTC) Interrupt Enable Register */ +#define REG_RTC_IDR (0x400E1A84U) /**< \brief (RTC) Interrupt Disable Register */ +#define REG_RTC_IMR (0x400E1A88U) /**< \brief (RTC) Interrupt Mask Register */ +#define REG_RTC_VER (0x400E1A8CU) /**< \brief (RTC) Valid Entry Register */ +#define REG_RTC_WPMR (0x400E1B44U) /**< \brief (RTC) Write Protect Mode Register */ +#else +#define REG_RTC_CR (*(RwReg*)0x400E1A60U) /**< \brief (RTC) Control Register */ +#define REG_RTC_MR (*(RwReg*)0x400E1A64U) /**< \brief (RTC) Mode Register */ +#define REG_RTC_TIMR (*(RwReg*)0x400E1A68U) /**< \brief (RTC) Time Register */ +#define REG_RTC_CALR (*(RwReg*)0x400E1A6CU) /**< \brief (RTC) Calendar Register */ +#define REG_RTC_TIMALR (*(RwReg*)0x400E1A70U) /**< \brief (RTC) Time Alarm Register */ +#define REG_RTC_CALALR (*(RwReg*)0x400E1A74U) /**< \brief (RTC) Calendar Alarm Register */ +#define REG_RTC_SR (*(RoReg*)0x400E1A78U) /**< \brief (RTC) Status Register */ +#define REG_RTC_SCCR (*(WoReg*)0x400E1A7CU) /**< \brief (RTC) Status Clear Command Register */ +#define REG_RTC_IER (*(WoReg*)0x400E1A80U) /**< \brief (RTC) Interrupt Enable Register */ +#define REG_RTC_IDR (*(WoReg*)0x400E1A84U) /**< \brief (RTC) Interrupt Disable Register */ +#define REG_RTC_IMR (*(RoReg*)0x400E1A88U) /**< \brief (RTC) Interrupt Mask Register */ +#define REG_RTC_VER (*(RoReg*)0x400E1A8CU) /**< \brief (RTC) Valid Entry Register */ +#define REG_RTC_WPMR (*(RwReg*)0x400E1B44U) /**< \brief (RTC) Write Protect Mode Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_RTC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_rtt.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_rtt.h new file mode 100644 index 000000000..912a296ca --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_rtt.h @@ -0,0 +1,46 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_RTT_INSTANCE_ +#define _SAM3XA_RTT_INSTANCE_ + +/* ========== Register definition for RTT peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_RTT_MR (0x400E1A30U) /**< \brief (RTT) Mode Register */ +#define REG_RTT_AR (0x400E1A34U) /**< \brief (RTT) Alarm Register */ +#define REG_RTT_VR (0x400E1A38U) /**< \brief (RTT) Value Register */ +#define REG_RTT_SR (0x400E1A3CU) /**< \brief (RTT) Status Register */ +#else +#define REG_RTT_MR (*(RwReg*)0x400E1A30U) /**< \brief (RTT) Mode Register */ +#define REG_RTT_AR (*(RwReg*)0x400E1A34U) /**< \brief (RTT) Alarm Register */ +#define REG_RTT_VR (*(RoReg*)0x400E1A38U) /**< \brief (RTT) Value Register */ +#define REG_RTT_SR (*(RoReg*)0x400E1A3CU) /**< \brief (RTT) Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_RTT_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_sdramc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_sdramc.h new file mode 100644 index 000000000..aebb86366 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_sdramc.h @@ -0,0 +1,60 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_SDRAMC_INSTANCE_ +#define _SAM3XA_SDRAMC_INSTANCE_ + +/* ========== Register definition for SDRAMC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SDRAMC_MR (0x400E0200U) /**< \brief (SDRAMC) SDRAMC Mode Register */ +#define REG_SDRAMC_TR (0x400E0204U) /**< \brief (SDRAMC) SDRAMC Refresh Timer Register */ +#define REG_SDRAMC_CR (0x400E0208U) /**< \brief (SDRAMC) SDRAMC Configuration Register */ +#define REG_SDRAMC_LPR (0x400E0210U) /**< \brief (SDRAMC) SDRAMC Low Power Register */ +#define REG_SDRAMC_IER (0x400E0214U) /**< \brief (SDRAMC) SDRAMC Interrupt Enable Register */ +#define REG_SDRAMC_IDR (0x400E0218U) /**< \brief (SDRAMC) SDRAMC Interrupt Disable Register */ +#define REG_SDRAMC_IMR (0x400E021CU) /**< \brief (SDRAMC) SDRAMC Interrupt Mask Register */ +#define REG_SDRAMC_ISR (0x400E0220U) /**< \brief (SDRAMC) SDRAMC Interrupt Status Register */ +#define REG_SDRAMC_MDR (0x400E0224U) /**< \brief (SDRAMC) SDRAMC Memory Device Register */ +#define REG_SDRAMC_CR1 (0x400E0228U) /**< \brief (SDRAMC) SDRAMC Configuration Register 1 */ +#define REG_SDRAMC_OCMS (0x400E022CU) /**< \brief (SDRAMC) SDRAMC OCMS Register 1 */ +#else +#define REG_SDRAMC_MR (*(RwReg*)0x400E0200U) /**< \brief (SDRAMC) SDRAMC Mode Register */ +#define REG_SDRAMC_TR (*(RwReg*)0x400E0204U) /**< \brief (SDRAMC) SDRAMC Refresh Timer Register */ +#define REG_SDRAMC_CR (*(RwReg*)0x400E0208U) /**< \brief (SDRAMC) SDRAMC Configuration Register */ +#define REG_SDRAMC_LPR (*(RwReg*)0x400E0210U) /**< \brief (SDRAMC) SDRAMC Low Power Register */ +#define REG_SDRAMC_IER (*(WoReg*)0x400E0214U) /**< \brief (SDRAMC) SDRAMC Interrupt Enable Register */ +#define REG_SDRAMC_IDR (*(WoReg*)0x400E0218U) /**< \brief (SDRAMC) SDRAMC Interrupt Disable Register */ +#define REG_SDRAMC_IMR (*(RoReg*)0x400E021CU) /**< \brief (SDRAMC) SDRAMC Interrupt Mask Register */ +#define REG_SDRAMC_ISR (*(RoReg*)0x400E0220U) /**< \brief (SDRAMC) SDRAMC Interrupt Status Register */ +#define REG_SDRAMC_MDR (*(RwReg*)0x400E0224U) /**< \brief (SDRAMC) SDRAMC Memory Device Register */ +#define REG_SDRAMC_CR1 (*(RwReg*)0x400E0228U) /**< \brief (SDRAMC) SDRAMC Configuration Register 1 */ +#define REG_SDRAMC_OCMS (*(RwReg*)0x400E022CU) /**< \brief (SDRAMC) SDRAMC OCMS Register 1 */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_SDRAMC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_smc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_smc.h new file mode 100644 index 000000000..c5115cf63 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_smc.h @@ -0,0 +1,184 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_SMC_INSTANCE_ +#define _SAM3XA_SMC_INSTANCE_ + +/* ========== Register definition for SMC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SMC_CFG (0x400E0000U) /**< \brief (SMC) SMC NFC Configuration Register */ +#define REG_SMC_CTRL (0x400E0004U) /**< \brief (SMC) SMC NFC Control Register */ +#define REG_SMC_SR (0x400E0008U) /**< \brief (SMC) SMC NFC Status Register */ +#define REG_SMC_IER (0x400E000CU) /**< \brief (SMC) SMC NFC Interrupt Enable Register */ +#define REG_SMC_IDR (0x400E0010U) /**< \brief (SMC) SMC NFC Interrupt Disable Register */ +#define REG_SMC_IMR (0x400E0014U) /**< \brief (SMC) SMC NFC Interrupt Mask Register */ +#define REG_SMC_ADDR (0x400E0018U) /**< \brief (SMC) SMC NFC Address Cycle Zero Register */ +#define REG_SMC_BANK (0x400E001CU) /**< \brief (SMC) SMC Bank Address Register */ +#define REG_SMC_ECC_CTRL (0x400E0020U) /**< \brief (SMC) SMC ECC Control Register */ +#define REG_SMC_ECC_MD (0x400E0024U) /**< \brief (SMC) SMC ECC Mode Register */ +#define REG_SMC_ECC_SR1 (0x400E0028U) /**< \brief (SMC) SMC ECC Status 1 Register */ +#define REG_SMC_ECC_PR0 (0x400E002CU) /**< \brief (SMC) SMC ECC Parity 0 Register */ +#define REG_SMC_ECC_PR1 (0x400E0030U) /**< \brief (SMC) SMC ECC parity 1 Register */ +#define REG_SMC_ECC_SR2 (0x400E0034U) /**< \brief (SMC) SMC ECC status 2 Register */ +#define REG_SMC_ECC_PR2 (0x400E0038U) /**< \brief (SMC) SMC ECC parity 2 Register */ +#define REG_SMC_ECC_PR3 (0x400E003CU) /**< \brief (SMC) SMC ECC parity 3 Register */ +#define REG_SMC_ECC_PR4 (0x400E0040U) /**< \brief (SMC) SMC ECC parity 4 Register */ +#define REG_SMC_ECC_PR5 (0x400E0044U) /**< \brief (SMC) SMC ECC parity 5 Register */ +#define REG_SMC_ECC_PR6 (0x400E0048U) /**< \brief (SMC) SMC ECC parity 6 Register */ +#define REG_SMC_ECC_PR7 (0x400E004CU) /**< \brief (SMC) SMC ECC parity 7 Register */ +#define REG_SMC_ECC_PR8 (0x400E0050U) /**< \brief (SMC) SMC ECC parity 8 Register */ +#define REG_SMC_ECC_PR9 (0x400E0054U) /**< \brief (SMC) SMC ECC parity 9 Register */ +#define REG_SMC_ECC_PR10 (0x400E0058U) /**< \brief (SMC) SMC ECC parity 10 Register */ +#define REG_SMC_ECC_PR11 (0x400E005CU) /**< \brief (SMC) SMC ECC parity 11 Register */ +#define REG_SMC_ECC_PR12 (0x400E0060U) /**< \brief (SMC) SMC ECC parity 12 Register */ +#define REG_SMC_ECC_PR13 (0x400E0064U) /**< \brief (SMC) SMC ECC parity 13 Register */ +#define REG_SMC_ECC_PR14 (0x400E0068U) /**< \brief (SMC) SMC ECC parity 14 Register */ +#define REG_SMC_ECC_PR15 (0x400E006CU) /**< \brief (SMC) SMC ECC parity 15 Register */ +#define REG_SMC_SETUP0 (0x400E0070U) /**< \brief (SMC) SMC Setup Register (CS_number = 0) */ +#define REG_SMC_PULSE0 (0x400E0074U) /**< \brief (SMC) SMC Pulse Register (CS_number = 0) */ +#define REG_SMC_CYCLE0 (0x400E0078U) /**< \brief (SMC) SMC Cycle Register (CS_number = 0) */ +#define REG_SMC_TIMINGS0 (0x400E007CU) /**< \brief (SMC) SMC Timings Register (CS_number = 0) */ +#define REG_SMC_MODE0 (0x400E0080U) /**< \brief (SMC) SMC Mode Register (CS_number = 0) */ +#define REG_SMC_SETUP1 (0x400E0084U) /**< \brief (SMC) SMC Setup Register (CS_number = 1) */ +#define REG_SMC_PULSE1 (0x400E0088U) /**< \brief (SMC) SMC Pulse Register (CS_number = 1) */ +#define REG_SMC_CYCLE1 (0x400E008CU) /**< \brief (SMC) SMC Cycle Register (CS_number = 1) */ +#define REG_SMC_TIMINGS1 (0x400E0090U) /**< \brief (SMC) SMC Timings Register (CS_number = 1) */ +#define REG_SMC_MODE1 (0x400E0094U) /**< \brief (SMC) SMC Mode Register (CS_number = 1) */ +#define REG_SMC_SETUP2 (0x400E0098U) /**< \brief (SMC) SMC Setup Register (CS_number = 2) */ +#define REG_SMC_PULSE2 (0x400E009CU) /**< \brief (SMC) SMC Pulse Register (CS_number = 2) */ +#define REG_SMC_CYCLE2 (0x400E00A0U) /**< \brief (SMC) SMC Cycle Register (CS_number = 2) */ +#define REG_SMC_TIMINGS2 (0x400E00A4U) /**< \brief (SMC) SMC Timings Register (CS_number = 2) */ +#define REG_SMC_MODE2 (0x400E00A8U) /**< \brief (SMC) SMC Mode Register (CS_number = 2) */ +#define REG_SMC_SETUP3 (0x400E00ACU) /**< \brief (SMC) SMC Setup Register (CS_number = 3) */ +#define REG_SMC_PULSE3 (0x400E00B0U) /**< \brief (SMC) SMC Pulse Register (CS_number = 3) */ +#define REG_SMC_CYCLE3 (0x400E00B4U) /**< \brief (SMC) SMC Cycle Register (CS_number = 3) */ +#define REG_SMC_TIMINGS3 (0x400E00B8U) /**< \brief (SMC) SMC Timings Register (CS_number = 3) */ +#define REG_SMC_MODE3 (0x400E00BCU) /**< \brief (SMC) SMC Mode Register (CS_number = 3) */ +#define REG_SMC_SETUP4 (0x400E00C0U) /**< \brief (SMC) SMC Setup Register (CS_number = 4) */ +#define REG_SMC_PULSE4 (0x400E00C4U) /**< \brief (SMC) SMC Pulse Register (CS_number = 4) */ +#define REG_SMC_CYCLE4 (0x400E00C8U) /**< \brief (SMC) SMC Cycle Register (CS_number = 4) */ +#define REG_SMC_TIMINGS4 (0x400E00CCU) /**< \brief (SMC) SMC Timings Register (CS_number = 4) */ +#define REG_SMC_MODE4 (0x400E00D0U) /**< \brief (SMC) SMC Mode Register (CS_number = 4) */ +#define REG_SMC_SETUP5 (0x400E00D4U) /**< \brief (SMC) SMC Setup Register (CS_number = 5) */ +#define REG_SMC_PULSE5 (0x400E00D8U) /**< \brief (SMC) SMC Pulse Register (CS_number = 5) */ +#define REG_SMC_CYCLE5 (0x400E00DCU) /**< \brief (SMC) SMC Cycle Register (CS_number = 5) */ +#define REG_SMC_TIMINGS5 (0x400E00E0U) /**< \brief (SMC) SMC Timings Register (CS_number = 5) */ +#define REG_SMC_MODE5 (0x400E00E4U) /**< \brief (SMC) SMC Mode Register (CS_number = 5) */ +#define REG_SMC_SETUP6 (0x400E00E8U) /**< \brief (SMC) SMC Setup Register (CS_number = 6) */ +#define REG_SMC_PULSE6 (0x400E00ECU) /**< \brief (SMC) SMC Pulse Register (CS_number = 6) */ +#define REG_SMC_CYCLE6 (0x400E00F0U) /**< \brief (SMC) SMC Cycle Register (CS_number = 6) */ +#define REG_SMC_TIMINGS6 (0x400E00F4U) /**< \brief (SMC) SMC Timings Register (CS_number = 6) */ +#define REG_SMC_MODE6 (0x400E00F8U) /**< \brief (SMC) SMC Mode Register (CS_number = 6) */ +#define REG_SMC_SETUP7 (0x400E00FCU) /**< \brief (SMC) SMC Setup Register (CS_number = 7) */ +#define REG_SMC_PULSE7 (0x400E0100U) /**< \brief (SMC) SMC Pulse Register (CS_number = 7) */ +#define REG_SMC_CYCLE7 (0x400E0104U) /**< \brief (SMC) SMC Cycle Register (CS_number = 7) */ +#define REG_SMC_TIMINGS7 (0x400E0108U) /**< \brief (SMC) SMC Timings Register (CS_number = 7) */ +#define REG_SMC_MODE7 (0x400E010CU) /**< \brief (SMC) SMC Mode Register (CS_number = 7) */ +#define REG_SMC_OCMS (0x400E0110U) /**< \brief (SMC) SMC OCMS Register */ +#define REG_SMC_KEY1 (0x400E0114U) /**< \brief (SMC) SMC OCMS KEY1 Register */ +#define REG_SMC_KEY2 (0x400E0118U) /**< \brief (SMC) SMC OCMS KEY2 Register */ +#define REG_SMC_WPCR (0x400E01E4U) /**< \brief (SMC) Write Protection Control Register */ +#define REG_SMC_WPSR (0x400E01E8U) /**< \brief (SMC) Write Protection Status Register */ +#else +#define REG_SMC_CFG (*(RwReg*)0x400E0000U) /**< \brief (SMC) SMC NFC Configuration Register */ +#define REG_SMC_CTRL (*(WoReg*)0x400E0004U) /**< \brief (SMC) SMC NFC Control Register */ +#define REG_SMC_SR (*(RoReg*)0x400E0008U) /**< \brief (SMC) SMC NFC Status Register */ +#define REG_SMC_IER (*(WoReg*)0x400E000CU) /**< \brief (SMC) SMC NFC Interrupt Enable Register */ +#define REG_SMC_IDR (*(WoReg*)0x400E0010U) /**< \brief (SMC) SMC NFC Interrupt Disable Register */ +#define REG_SMC_IMR (*(RoReg*)0x400E0014U) /**< \brief (SMC) SMC NFC Interrupt Mask Register */ +#define REG_SMC_ADDR (*(RwReg*)0x400E0018U) /**< \brief (SMC) SMC NFC Address Cycle Zero Register */ +#define REG_SMC_BANK (*(RwReg*)0x400E001CU) /**< \brief (SMC) SMC Bank Address Register */ +#define REG_SMC_ECC_CTRL (*(WoReg*)0x400E0020U) /**< \brief (SMC) SMC ECC Control Register */ +#define REG_SMC_ECC_MD (*(RwReg*)0x400E0024U) /**< \brief (SMC) SMC ECC Mode Register */ +#define REG_SMC_ECC_SR1 (*(RoReg*)0x400E0028U) /**< \brief (SMC) SMC ECC Status 1 Register */ +#define REG_SMC_ECC_PR0 (*(RoReg*)0x400E002CU) /**< \brief (SMC) SMC ECC Parity 0 Register */ +#define REG_SMC_ECC_PR1 (*(RoReg*)0x400E0030U) /**< \brief (SMC) SMC ECC parity 1 Register */ +#define REG_SMC_ECC_SR2 (*(RoReg*)0x400E0034U) /**< \brief (SMC) SMC ECC status 2 Register */ +#define REG_SMC_ECC_PR2 (*(RoReg*)0x400E0038U) /**< \brief (SMC) SMC ECC parity 2 Register */ +#define REG_SMC_ECC_PR3 (*(RoReg*)0x400E003CU) /**< \brief (SMC) SMC ECC parity 3 Register */ +#define REG_SMC_ECC_PR4 (*(RoReg*)0x400E0040U) /**< \brief (SMC) SMC ECC parity 4 Register */ +#define REG_SMC_ECC_PR5 (*(RoReg*)0x400E0044U) /**< \brief (SMC) SMC ECC parity 5 Register */ +#define REG_SMC_ECC_PR6 (*(RoReg*)0x400E0048U) /**< \brief (SMC) SMC ECC parity 6 Register */ +#define REG_SMC_ECC_PR7 (*(RoReg*)0x400E004CU) /**< \brief (SMC) SMC ECC parity 7 Register */ +#define REG_SMC_ECC_PR8 (*(RoReg*)0x400E0050U) /**< \brief (SMC) SMC ECC parity 8 Register */ +#define REG_SMC_ECC_PR9 (*(RoReg*)0x400E0054U) /**< \brief (SMC) SMC ECC parity 9 Register */ +#define REG_SMC_ECC_PR10 (*(RoReg*)0x400E0058U) /**< \brief (SMC) SMC ECC parity 10 Register */ +#define REG_SMC_ECC_PR11 (*(RoReg*)0x400E005CU) /**< \brief (SMC) SMC ECC parity 11 Register */ +#define REG_SMC_ECC_PR12 (*(RoReg*)0x400E0060U) /**< \brief (SMC) SMC ECC parity 12 Register */ +#define REG_SMC_ECC_PR13 (*(RoReg*)0x400E0064U) /**< \brief (SMC) SMC ECC parity 13 Register */ +#define REG_SMC_ECC_PR14 (*(RoReg*)0x400E0068U) /**< \brief (SMC) SMC ECC parity 14 Register */ +#define REG_SMC_ECC_PR15 (*(RoReg*)0x400E006CU) /**< \brief (SMC) SMC ECC parity 15 Register */ +#define REG_SMC_SETUP0 (*(RwReg*)0x400E0070U) /**< \brief (SMC) SMC Setup Register (CS_number = 0) */ +#define REG_SMC_PULSE0 (*(RwReg*)0x400E0074U) /**< \brief (SMC) SMC Pulse Register (CS_number = 0) */ +#define REG_SMC_CYCLE0 (*(RwReg*)0x400E0078U) /**< \brief (SMC) SMC Cycle Register (CS_number = 0) */ +#define REG_SMC_TIMINGS0 (*(RwReg*)0x400E007CU) /**< \brief (SMC) SMC Timings Register (CS_number = 0) */ +#define REG_SMC_MODE0 (*(RwReg*)0x400E0080U) /**< \brief (SMC) SMC Mode Register (CS_number = 0) */ +#define REG_SMC_SETUP1 (*(RwReg*)0x400E0084U) /**< \brief (SMC) SMC Setup Register (CS_number = 1) */ +#define REG_SMC_PULSE1 (*(RwReg*)0x400E0088U) /**< \brief (SMC) SMC Pulse Register (CS_number = 1) */ +#define REG_SMC_CYCLE1 (*(RwReg*)0x400E008CU) /**< \brief (SMC) SMC Cycle Register (CS_number = 1) */ +#define REG_SMC_TIMINGS1 (*(RwReg*)0x400E0090U) /**< \brief (SMC) SMC Timings Register (CS_number = 1) */ +#define REG_SMC_MODE1 (*(RwReg*)0x400E0094U) /**< \brief (SMC) SMC Mode Register (CS_number = 1) */ +#define REG_SMC_SETUP2 (*(RwReg*)0x400E0098U) /**< \brief (SMC) SMC Setup Register (CS_number = 2) */ +#define REG_SMC_PULSE2 (*(RwReg*)0x400E009CU) /**< \brief (SMC) SMC Pulse Register (CS_number = 2) */ +#define REG_SMC_CYCLE2 (*(RwReg*)0x400E00A0U) /**< \brief (SMC) SMC Cycle Register (CS_number = 2) */ +#define REG_SMC_TIMINGS2 (*(RwReg*)0x400E00A4U) /**< \brief (SMC) SMC Timings Register (CS_number = 2) */ +#define REG_SMC_MODE2 (*(RwReg*)0x400E00A8U) /**< \brief (SMC) SMC Mode Register (CS_number = 2) */ +#define REG_SMC_SETUP3 (*(RwReg*)0x400E00ACU) /**< \brief (SMC) SMC Setup Register (CS_number = 3) */ +#define REG_SMC_PULSE3 (*(RwReg*)0x400E00B0U) /**< \brief (SMC) SMC Pulse Register (CS_number = 3) */ +#define REG_SMC_CYCLE3 (*(RwReg*)0x400E00B4U) /**< \brief (SMC) SMC Cycle Register (CS_number = 3) */ +#define REG_SMC_TIMINGS3 (*(RwReg*)0x400E00B8U) /**< \brief (SMC) SMC Timings Register (CS_number = 3) */ +#define REG_SMC_MODE3 (*(RwReg*)0x400E00BCU) /**< \brief (SMC) SMC Mode Register (CS_number = 3) */ +#define REG_SMC_SETUP4 (*(RwReg*)0x400E00C0U) /**< \brief (SMC) SMC Setup Register (CS_number = 4) */ +#define REG_SMC_PULSE4 (*(RwReg*)0x400E00C4U) /**< \brief (SMC) SMC Pulse Register (CS_number = 4) */ +#define REG_SMC_CYCLE4 (*(RwReg*)0x400E00C8U) /**< \brief (SMC) SMC Cycle Register (CS_number = 4) */ +#define REG_SMC_TIMINGS4 (*(RwReg*)0x400E00CCU) /**< \brief (SMC) SMC Timings Register (CS_number = 4) */ +#define REG_SMC_MODE4 (*(RwReg*)0x400E00D0U) /**< \brief (SMC) SMC Mode Register (CS_number = 4) */ +#define REG_SMC_SETUP5 (*(RwReg*)0x400E00D4U) /**< \brief (SMC) SMC Setup Register (CS_number = 5) */ +#define REG_SMC_PULSE5 (*(RwReg*)0x400E00D8U) /**< \brief (SMC) SMC Pulse Register (CS_number = 5) */ +#define REG_SMC_CYCLE5 (*(RwReg*)0x400E00DCU) /**< \brief (SMC) SMC Cycle Register (CS_number = 5) */ +#define REG_SMC_TIMINGS5 (*(RwReg*)0x400E00E0U) /**< \brief (SMC) SMC Timings Register (CS_number = 5) */ +#define REG_SMC_MODE5 (*(RwReg*)0x400E00E4U) /**< \brief (SMC) SMC Mode Register (CS_number = 5) */ +#define REG_SMC_SETUP6 (*(RwReg*)0x400E00E8U) /**< \brief (SMC) SMC Setup Register (CS_number = 6) */ +#define REG_SMC_PULSE6 (*(RwReg*)0x400E00ECU) /**< \brief (SMC) SMC Pulse Register (CS_number = 6) */ +#define REG_SMC_CYCLE6 (*(RwReg*)0x400E00F0U) /**< \brief (SMC) SMC Cycle Register (CS_number = 6) */ +#define REG_SMC_TIMINGS6 (*(RwReg*)0x400E00F4U) /**< \brief (SMC) SMC Timings Register (CS_number = 6) */ +#define REG_SMC_MODE6 (*(RwReg*)0x400E00F8U) /**< \brief (SMC) SMC Mode Register (CS_number = 6) */ +#define REG_SMC_SETUP7 (*(RwReg*)0x400E00FCU) /**< \brief (SMC) SMC Setup Register (CS_number = 7) */ +#define REG_SMC_PULSE7 (*(RwReg*)0x400E0100U) /**< \brief (SMC) SMC Pulse Register (CS_number = 7) */ +#define REG_SMC_CYCLE7 (*(RwReg*)0x400E0104U) /**< \brief (SMC) SMC Cycle Register (CS_number = 7) */ +#define REG_SMC_TIMINGS7 (*(RwReg*)0x400E0108U) /**< \brief (SMC) SMC Timings Register (CS_number = 7) */ +#define REG_SMC_MODE7 (*(RwReg*)0x400E010CU) /**< \brief (SMC) SMC Mode Register (CS_number = 7) */ +#define REG_SMC_OCMS (*(RwReg*)0x400E0110U) /**< \brief (SMC) SMC OCMS Register */ +#define REG_SMC_KEY1 (*(WoReg*)0x400E0114U) /**< \brief (SMC) SMC OCMS KEY1 Register */ +#define REG_SMC_KEY2 (*(WoReg*)0x400E0118U) /**< \brief (SMC) SMC OCMS KEY2 Register */ +#define REG_SMC_WPCR (*(WoReg*)0x400E01E4U) /**< \brief (SMC) Write Protection Control Register */ +#define REG_SMC_WPSR (*(RoReg*)0x400E01E8U) /**< \brief (SMC) Write Protection Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_SMC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_spi0.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_spi0.h new file mode 100644 index 000000000..9d957ce16 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_spi0.h @@ -0,0 +1,60 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_SPI0_INSTANCE_ +#define _SAM3XA_SPI0_INSTANCE_ + +/* ========== Register definition for SPI0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SPI0_CR (0x40008000U) /**< \brief (SPI0) Control Register */ +#define REG_SPI0_MR (0x40008004U) /**< \brief (SPI0) Mode Register */ +#define REG_SPI0_RDR (0x40008008U) /**< \brief (SPI0) Receive Data Register */ +#define REG_SPI0_TDR (0x4000800CU) /**< \brief (SPI0) Transmit Data Register */ +#define REG_SPI0_SR (0x40008010U) /**< \brief (SPI0) Status Register */ +#define REG_SPI0_IER (0x40008014U) /**< \brief (SPI0) Interrupt Enable Register */ +#define REG_SPI0_IDR (0x40008018U) /**< \brief (SPI0) Interrupt Disable Register */ +#define REG_SPI0_IMR (0x4000801CU) /**< \brief (SPI0) Interrupt Mask Register */ +#define REG_SPI0_CSR (0x40008030U) /**< \brief (SPI0) Chip Select Register */ +#define REG_SPI0_WPMR (0x400080E4U) /**< \brief (SPI0) Write Protection Control Register */ +#define REG_SPI0_WPSR (0x400080E8U) /**< \brief (SPI0) Write Protection Status Register */ +#else +#define REG_SPI0_CR (*(WoReg*)0x40008000U) /**< \brief (SPI0) Control Register */ +#define REG_SPI0_MR (*(RwReg*)0x40008004U) /**< \brief (SPI0) Mode Register */ +#define REG_SPI0_RDR (*(RoReg*)0x40008008U) /**< \brief (SPI0) Receive Data Register */ +#define REG_SPI0_TDR (*(WoReg*)0x4000800CU) /**< \brief (SPI0) Transmit Data Register */ +#define REG_SPI0_SR (*(RoReg*)0x40008010U) /**< \brief (SPI0) Status Register */ +#define REG_SPI0_IER (*(WoReg*)0x40008014U) /**< \brief (SPI0) Interrupt Enable Register */ +#define REG_SPI0_IDR (*(WoReg*)0x40008018U) /**< \brief (SPI0) Interrupt Disable Register */ +#define REG_SPI0_IMR (*(RoReg*)0x4000801CU) /**< \brief (SPI0) Interrupt Mask Register */ +#define REG_SPI0_CSR (*(RwReg*)0x40008030U) /**< \brief (SPI0) Chip Select Register */ +#define REG_SPI0_WPMR (*(RwReg*)0x400080E4U) /**< \brief (SPI0) Write Protection Control Register */ +#define REG_SPI0_WPSR (*(RoReg*)0x400080E8U) /**< \brief (SPI0) Write Protection Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_SPI0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_spi1.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_spi1.h new file mode 100644 index 000000000..f47352bae --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_spi1.h @@ -0,0 +1,60 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_SPI1_INSTANCE_ +#define _SAM3XA_SPI1_INSTANCE_ + +/* ========== Register definition for SPI1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SPI1_CR (0x4000C000U) /**< \brief (SPI1) Control Register */ +#define REG_SPI1_MR (0x4000C004U) /**< \brief (SPI1) Mode Register */ +#define REG_SPI1_RDR (0x4000C008U) /**< \brief (SPI1) Receive Data Register */ +#define REG_SPI1_TDR (0x4000C00CU) /**< \brief (SPI1) Transmit Data Register */ +#define REG_SPI1_SR (0x4000C010U) /**< \brief (SPI1) Status Register */ +#define REG_SPI1_IER (0x4000C014U) /**< \brief (SPI1) Interrupt Enable Register */ +#define REG_SPI1_IDR (0x4000C018U) /**< \brief (SPI1) Interrupt Disable Register */ +#define REG_SPI1_IMR (0x4000C01CU) /**< \brief (SPI1) Interrupt Mask Register */ +#define REG_SPI1_CSR (0x4000C030U) /**< \brief (SPI1) Chip Select Register */ +#define REG_SPI1_WPMR (0x4000C0E4U) /**< \brief (SPI1) Write Protection Control Register */ +#define REG_SPI1_WPSR (0x4000C0E8U) /**< \brief (SPI1) Write Protection Status Register */ +#else +#define REG_SPI1_CR (*(WoReg*)0x4000C000U) /**< \brief (SPI1) Control Register */ +#define REG_SPI1_MR (*(RwReg*)0x4000C004U) /**< \brief (SPI1) Mode Register */ +#define REG_SPI1_RDR (*(RoReg*)0x4000C008U) /**< \brief (SPI1) Receive Data Register */ +#define REG_SPI1_TDR (*(WoReg*)0x4000C00CU) /**< \brief (SPI1) Transmit Data Register */ +#define REG_SPI1_SR (*(RoReg*)0x4000C010U) /**< \brief (SPI1) Status Register */ +#define REG_SPI1_IER (*(WoReg*)0x4000C014U) /**< \brief (SPI1) Interrupt Enable Register */ +#define REG_SPI1_IDR (*(WoReg*)0x4000C018U) /**< \brief (SPI1) Interrupt Disable Register */ +#define REG_SPI1_IMR (*(RoReg*)0x4000C01CU) /**< \brief (SPI1) Interrupt Mask Register */ +#define REG_SPI1_CSR (*(RwReg*)0x4000C030U) /**< \brief (SPI1) Chip Select Register */ +#define REG_SPI1_WPMR (*(RwReg*)0x4000C0E4U) /**< \brief (SPI1) Write Protection Control Register */ +#define REG_SPI1_WPSR (*(RoReg*)0x4000C0E8U) /**< \brief (SPI1) Write Protection Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_SPI1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_ssc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_ssc.h new file mode 100644 index 000000000..34c1c0a00 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_ssc.h @@ -0,0 +1,74 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_SSC_INSTANCE_ +#define _SAM3XA_SSC_INSTANCE_ + +/* ========== Register definition for SSC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SSC_CR (0x40004000U) /**< \brief (SSC) Control Register */ +#define REG_SSC_CMR (0x40004004U) /**< \brief (SSC) Clock Mode Register */ +#define REG_SSC_RCMR (0x40004010U) /**< \brief (SSC) Receive Clock Mode Register */ +#define REG_SSC_RFMR (0x40004014U) /**< \brief (SSC) Receive Frame Mode Register */ +#define REG_SSC_TCMR (0x40004018U) /**< \brief (SSC) Transmit Clock Mode Register */ +#define REG_SSC_TFMR (0x4000401CU) /**< \brief (SSC) Transmit Frame Mode Register */ +#define REG_SSC_RHR (0x40004020U) /**< \brief (SSC) Receive Holding Register */ +#define REG_SSC_THR (0x40004024U) /**< \brief (SSC) Transmit Holding Register */ +#define REG_SSC_RSHR (0x40004030U) /**< \brief (SSC) Receive Sync. Holding Register */ +#define REG_SSC_TSHR (0x40004034U) /**< \brief (SSC) Transmit Sync. Holding Register */ +#define REG_SSC_RC0R (0x40004038U) /**< \brief (SSC) Receive Compare 0 Register */ +#define REG_SSC_RC1R (0x4000403CU) /**< \brief (SSC) Receive Compare 1 Register */ +#define REG_SSC_SR (0x40004040U) /**< \brief (SSC) Status Register */ +#define REG_SSC_IER (0x40004044U) /**< \brief (SSC) Interrupt Enable Register */ +#define REG_SSC_IDR (0x40004048U) /**< \brief (SSC) Interrupt Disable Register */ +#define REG_SSC_IMR (0x4000404CU) /**< \brief (SSC) Interrupt Mask Register */ +#define REG_SSC_WPMR (0x400040E4U) /**< \brief (SSC) Write Protect Mode Register */ +#define REG_SSC_WPSR (0x400040E8U) /**< \brief (SSC) Write Protect Status Register */ +#else +#define REG_SSC_CR (*(WoReg*)0x40004000U) /**< \brief (SSC) Control Register */ +#define REG_SSC_CMR (*(RwReg*)0x40004004U) /**< \brief (SSC) Clock Mode Register */ +#define REG_SSC_RCMR (*(RwReg*)0x40004010U) /**< \brief (SSC) Receive Clock Mode Register */ +#define REG_SSC_RFMR (*(RwReg*)0x40004014U) /**< \brief (SSC) Receive Frame Mode Register */ +#define REG_SSC_TCMR (*(RwReg*)0x40004018U) /**< \brief (SSC) Transmit Clock Mode Register */ +#define REG_SSC_TFMR (*(RwReg*)0x4000401CU) /**< \brief (SSC) Transmit Frame Mode Register */ +#define REG_SSC_RHR (*(RoReg*)0x40004020U) /**< \brief (SSC) Receive Holding Register */ +#define REG_SSC_THR (*(WoReg*)0x40004024U) /**< \brief (SSC) Transmit Holding Register */ +#define REG_SSC_RSHR (*(RoReg*)0x40004030U) /**< \brief (SSC) Receive Sync. Holding Register */ +#define REG_SSC_TSHR (*(RwReg*)0x40004034U) /**< \brief (SSC) Transmit Sync. Holding Register */ +#define REG_SSC_RC0R (*(RwReg*)0x40004038U) /**< \brief (SSC) Receive Compare 0 Register */ +#define REG_SSC_RC1R (*(RwReg*)0x4000403CU) /**< \brief (SSC) Receive Compare 1 Register */ +#define REG_SSC_SR (*(RoReg*)0x40004040U) /**< \brief (SSC) Status Register */ +#define REG_SSC_IER (*(WoReg*)0x40004044U) /**< \brief (SSC) Interrupt Enable Register */ +#define REG_SSC_IDR (*(WoReg*)0x40004048U) /**< \brief (SSC) Interrupt Disable Register */ +#define REG_SSC_IMR (*(RoReg*)0x4000404CU) /**< \brief (SSC) Interrupt Mask Register */ +#define REG_SSC_WPMR (*(RwReg*)0x400040E4U) /**< \brief (SSC) Write Protect Mode Register */ +#define REG_SSC_WPSR (*(RoReg*)0x400040E8U) /**< \brief (SSC) Write Protect Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_SSC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_supc.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_supc.h new file mode 100644 index 000000000..5d5ecb50a --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_supc.h @@ -0,0 +1,50 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_SUPC_INSTANCE_ +#define _SAM3XA_SUPC_INSTANCE_ + +/* ========== Register definition for SUPC peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_SUPC_CR (0x400E1A10U) /**< \brief (SUPC) Supply Controller Control Register */ +#define REG_SUPC_SMMR (0x400E1A14U) /**< \brief (SUPC) Supply Controller Supply Monitor Mode Register */ +#define REG_SUPC_MR (0x400E1A18U) /**< \brief (SUPC) Supply Controller Mode Register */ +#define REG_SUPC_WUMR (0x400E1A1CU) /**< \brief (SUPC) Supply Controller Wake Up Mode Register */ +#define REG_SUPC_WUIR (0x400E1A20U) /**< \brief (SUPC) Supply Controller Wake Up Inputs Register */ +#define REG_SUPC_SR (0x400E1A24U) /**< \brief (SUPC) Supply Controller Status Register */ +#else +#define REG_SUPC_CR (*(WoReg*)0x400E1A10U) /**< \brief (SUPC) Supply Controller Control Register */ +#define REG_SUPC_SMMR (*(RwReg*)0x400E1A14U) /**< \brief (SUPC) Supply Controller Supply Monitor Mode Register */ +#define REG_SUPC_MR (*(RwReg*)0x400E1A18U) /**< \brief (SUPC) Supply Controller Mode Register */ +#define REG_SUPC_WUMR (*(RwReg*)0x400E1A1CU) /**< \brief (SUPC) Supply Controller Wake Up Mode Register */ +#define REG_SUPC_WUIR (*(RwReg*)0x400E1A20U) /**< \brief (SUPC) Supply Controller Wake Up Inputs Register */ +#define REG_SUPC_SR (*(RoReg*)0x400E1A24U) /**< \brief (SUPC) Supply Controller Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_SUPC_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_tc0.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_tc0.h new file mode 100644 index 000000000..10c6624ef --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_tc0.h @@ -0,0 +1,120 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_TC0_INSTANCE_ +#define _SAM3XA_TC0_INSTANCE_ + +/* ========== Register definition for TC0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TC0_CCR0 (0x40080000U) /**< \brief (TC0) Channel Control Register (channel = 0) */ +#define REG_TC0_CMR0 (0x40080004U) /**< \brief (TC0) Channel Mode Register (channel = 0) */ +#define REG_TC0_SMMR0 (0x40080008U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC0_CV0 (0x40080010U) /**< \brief (TC0) Counter Value (channel = 0) */ +#define REG_TC0_RA0 (0x40080014U) /**< \brief (TC0) Register A (channel = 0) */ +#define REG_TC0_RB0 (0x40080018U) /**< \brief (TC0) Register B (channel = 0) */ +#define REG_TC0_RC0 (0x4008001CU) /**< \brief (TC0) Register C (channel = 0) */ +#define REG_TC0_SR0 (0x40080020U) /**< \brief (TC0) Status Register (channel = 0) */ +#define REG_TC0_IER0 (0x40080024U) /**< \brief (TC0) Interrupt Enable Register (channel = 0) */ +#define REG_TC0_IDR0 (0x40080028U) /**< \brief (TC0) Interrupt Disable Register (channel = 0) */ +#define REG_TC0_IMR0 (0x4008002CU) /**< \brief (TC0) Interrupt Mask Register (channel = 0) */ +#define REG_TC0_CCR1 (0x40080040U) /**< \brief (TC0) Channel Control Register (channel = 1) */ +#define REG_TC0_CMR1 (0x40080044U) /**< \brief (TC0) Channel Mode Register (channel = 1) */ +#define REG_TC0_SMMR1 (0x40080048U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC0_CV1 (0x40080050U) /**< \brief (TC0) Counter Value (channel = 1) */ +#define REG_TC0_RA1 (0x40080054U) /**< \brief (TC0) Register A (channel = 1) */ +#define REG_TC0_RB1 (0x40080058U) /**< \brief (TC0) Register B (channel = 1) */ +#define REG_TC0_RC1 (0x4008005CU) /**< \brief (TC0) Register C (channel = 1) */ +#define REG_TC0_SR1 (0x40080060U) /**< \brief (TC0) Status Register (channel = 1) */ +#define REG_TC0_IER1 (0x40080064U) /**< \brief (TC0) Interrupt Enable Register (channel = 1) */ +#define REG_TC0_IDR1 (0x40080068U) /**< \brief (TC0) Interrupt Disable Register (channel = 1) */ +#define REG_TC0_IMR1 (0x4008006CU) /**< \brief (TC0) Interrupt Mask Register (channel = 1) */ +#define REG_TC0_CCR2 (0x40080080U) /**< \brief (TC0) Channel Control Register (channel = 2) */ +#define REG_TC0_CMR2 (0x40080084U) /**< \brief (TC0) Channel Mode Register (channel = 2) */ +#define REG_TC0_SMMR2 (0x40080088U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC0_CV2 (0x40080090U) /**< \brief (TC0) Counter Value (channel = 2) */ +#define REG_TC0_RA2 (0x40080094U) /**< \brief (TC0) Register A (channel = 2) */ +#define REG_TC0_RB2 (0x40080098U) /**< \brief (TC0) Register B (channel = 2) */ +#define REG_TC0_RC2 (0x4008009CU) /**< \brief (TC0) Register C (channel = 2) */ +#define REG_TC0_SR2 (0x400800A0U) /**< \brief (TC0) Status Register (channel = 2) */ +#define REG_TC0_IER2 (0x400800A4U) /**< \brief (TC0) Interrupt Enable Register (channel = 2) */ +#define REG_TC0_IDR2 (0x400800A8U) /**< \brief (TC0) Interrupt Disable Register (channel = 2) */ +#define REG_TC0_IMR2 (0x400800ACU) /**< \brief (TC0) Interrupt Mask Register (channel = 2) */ +#define REG_TC0_BCR (0x400800C0U) /**< \brief (TC0) Block Control Register */ +#define REG_TC0_BMR (0x400800C4U) /**< \brief (TC0) Block Mode Register */ +#define REG_TC0_QIER (0x400800C8U) /**< \brief (TC0) QDEC Interrupt Enable Register */ +#define REG_TC0_QIDR (0x400800CCU) /**< \brief (TC0) QDEC Interrupt Disable Register */ +#define REG_TC0_QIMR (0x400800D0U) /**< \brief (TC0) QDEC Interrupt Mask Register */ +#define REG_TC0_QISR (0x400800D4U) /**< \brief (TC0) QDEC Interrupt Status Register */ +#define REG_TC0_FMR (0x400800D8U) /**< \brief (TC0) Fault Mode Register */ +#define REG_TC0_WPMR (0x400800E4U) /**< \brief (TC0) Write Protect Mode Register */ +#else +#define REG_TC0_CCR0 (*(WoReg*)0x40080000U) /**< \brief (TC0) Channel Control Register (channel = 0) */ +#define REG_TC0_CMR0 (*(RwReg*)0x40080004U) /**< \brief (TC0) Channel Mode Register (channel = 0) */ +#define REG_TC0_SMMR0 (*(RwReg*)0x40080008U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC0_CV0 (*(RoReg*)0x40080010U) /**< \brief (TC0) Counter Value (channel = 0) */ +#define REG_TC0_RA0 (*(RwReg*)0x40080014U) /**< \brief (TC0) Register A (channel = 0) */ +#define REG_TC0_RB0 (*(RwReg*)0x40080018U) /**< \brief (TC0) Register B (channel = 0) */ +#define REG_TC0_RC0 (*(RwReg*)0x4008001CU) /**< \brief (TC0) Register C (channel = 0) */ +#define REG_TC0_SR0 (*(RoReg*)0x40080020U) /**< \brief (TC0) Status Register (channel = 0) */ +#define REG_TC0_IER0 (*(WoReg*)0x40080024U) /**< \brief (TC0) Interrupt Enable Register (channel = 0) */ +#define REG_TC0_IDR0 (*(WoReg*)0x40080028U) /**< \brief (TC0) Interrupt Disable Register (channel = 0) */ +#define REG_TC0_IMR0 (*(RoReg*)0x4008002CU) /**< \brief (TC0) Interrupt Mask Register (channel = 0) */ +#define REG_TC0_CCR1 (*(WoReg*)0x40080040U) /**< \brief (TC0) Channel Control Register (channel = 1) */ +#define REG_TC0_CMR1 (*(RwReg*)0x40080044U) /**< \brief (TC0) Channel Mode Register (channel = 1) */ +#define REG_TC0_SMMR1 (*(RwReg*)0x40080048U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC0_CV1 (*(RoReg*)0x40080050U) /**< \brief (TC0) Counter Value (channel = 1) */ +#define REG_TC0_RA1 (*(RwReg*)0x40080054U) /**< \brief (TC0) Register A (channel = 1) */ +#define REG_TC0_RB1 (*(RwReg*)0x40080058U) /**< \brief (TC0) Register B (channel = 1) */ +#define REG_TC0_RC1 (*(RwReg*)0x4008005CU) /**< \brief (TC0) Register C (channel = 1) */ +#define REG_TC0_SR1 (*(RoReg*)0x40080060U) /**< \brief (TC0) Status Register (channel = 1) */ +#define REG_TC0_IER1 (*(WoReg*)0x40080064U) /**< \brief (TC0) Interrupt Enable Register (channel = 1) */ +#define REG_TC0_IDR1 (*(WoReg*)0x40080068U) /**< \brief (TC0) Interrupt Disable Register (channel = 1) */ +#define REG_TC0_IMR1 (*(RoReg*)0x4008006CU) /**< \brief (TC0) Interrupt Mask Register (channel = 1) */ +#define REG_TC0_CCR2 (*(WoReg*)0x40080080U) /**< \brief (TC0) Channel Control Register (channel = 2) */ +#define REG_TC0_CMR2 (*(RwReg*)0x40080084U) /**< \brief (TC0) Channel Mode Register (channel = 2) */ +#define REG_TC0_SMMR2 (*(RwReg*)0x40080088U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC0_CV2 (*(RoReg*)0x40080090U) /**< \brief (TC0) Counter Value (channel = 2) */ +#define REG_TC0_RA2 (*(RwReg*)0x40080094U) /**< \brief (TC0) Register A (channel = 2) */ +#define REG_TC0_RB2 (*(RwReg*)0x40080098U) /**< \brief (TC0) Register B (channel = 2) */ +#define REG_TC0_RC2 (*(RwReg*)0x4008009CU) /**< \brief (TC0) Register C (channel = 2) */ +#define REG_TC0_SR2 (*(RoReg*)0x400800A0U) /**< \brief (TC0) Status Register (channel = 2) */ +#define REG_TC0_IER2 (*(WoReg*)0x400800A4U) /**< \brief (TC0) Interrupt Enable Register (channel = 2) */ +#define REG_TC0_IDR2 (*(WoReg*)0x400800A8U) /**< \brief (TC0) Interrupt Disable Register (channel = 2) */ +#define REG_TC0_IMR2 (*(RoReg*)0x400800ACU) /**< \brief (TC0) Interrupt Mask Register (channel = 2) */ +#define REG_TC0_BCR (*(WoReg*)0x400800C0U) /**< \brief (TC0) Block Control Register */ +#define REG_TC0_BMR (*(RwReg*)0x400800C4U) /**< \brief (TC0) Block Mode Register */ +#define REG_TC0_QIER (*(WoReg*)0x400800C8U) /**< \brief (TC0) QDEC Interrupt Enable Register */ +#define REG_TC0_QIDR (*(WoReg*)0x400800CCU) /**< \brief (TC0) QDEC Interrupt Disable Register */ +#define REG_TC0_QIMR (*(RoReg*)0x400800D0U) /**< \brief (TC0) QDEC Interrupt Mask Register */ +#define REG_TC0_QISR (*(RoReg*)0x400800D4U) /**< \brief (TC0) QDEC Interrupt Status Register */ +#define REG_TC0_FMR (*(RwReg*)0x400800D8U) /**< \brief (TC0) Fault Mode Register */ +#define REG_TC0_WPMR (*(RwReg*)0x400800E4U) /**< \brief (TC0) Write Protect Mode Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_TC0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_tc1.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_tc1.h new file mode 100644 index 000000000..f40fcc1b1 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_tc1.h @@ -0,0 +1,120 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_TC1_INSTANCE_ +#define _SAM3XA_TC1_INSTANCE_ + +/* ========== Register definition for TC1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TC1_CCR0 (0x40084000U) /**< \brief (TC1) Channel Control Register (channel = 0) */ +#define REG_TC1_CMR0 (0x40084004U) /**< \brief (TC1) Channel Mode Register (channel = 0) */ +#define REG_TC1_SMMR0 (0x40084008U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC1_CV0 (0x40084010U) /**< \brief (TC1) Counter Value (channel = 0) */ +#define REG_TC1_RA0 (0x40084014U) /**< \brief (TC1) Register A (channel = 0) */ +#define REG_TC1_RB0 (0x40084018U) /**< \brief (TC1) Register B (channel = 0) */ +#define REG_TC1_RC0 (0x4008401CU) /**< \brief (TC1) Register C (channel = 0) */ +#define REG_TC1_SR0 (0x40084020U) /**< \brief (TC1) Status Register (channel = 0) */ +#define REG_TC1_IER0 (0x40084024U) /**< \brief (TC1) Interrupt Enable Register (channel = 0) */ +#define REG_TC1_IDR0 (0x40084028U) /**< \brief (TC1) Interrupt Disable Register (channel = 0) */ +#define REG_TC1_IMR0 (0x4008402CU) /**< \brief (TC1) Interrupt Mask Register (channel = 0) */ +#define REG_TC1_CCR1 (0x40084040U) /**< \brief (TC1) Channel Control Register (channel = 1) */ +#define REG_TC1_CMR1 (0x40084044U) /**< \brief (TC1) Channel Mode Register (channel = 1) */ +#define REG_TC1_SMMR1 (0x40084048U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC1_CV1 (0x40084050U) /**< \brief (TC1) Counter Value (channel = 1) */ +#define REG_TC1_RA1 (0x40084054U) /**< \brief (TC1) Register A (channel = 1) */ +#define REG_TC1_RB1 (0x40084058U) /**< \brief (TC1) Register B (channel = 1) */ +#define REG_TC1_RC1 (0x4008405CU) /**< \brief (TC1) Register C (channel = 1) */ +#define REG_TC1_SR1 (0x40084060U) /**< \brief (TC1) Status Register (channel = 1) */ +#define REG_TC1_IER1 (0x40084064U) /**< \brief (TC1) Interrupt Enable Register (channel = 1) */ +#define REG_TC1_IDR1 (0x40084068U) /**< \brief (TC1) Interrupt Disable Register (channel = 1) */ +#define REG_TC1_IMR1 (0x4008406CU) /**< \brief (TC1) Interrupt Mask Register (channel = 1) */ +#define REG_TC1_CCR2 (0x40084080U) /**< \brief (TC1) Channel Control Register (channel = 2) */ +#define REG_TC1_CMR2 (0x40084084U) /**< \brief (TC1) Channel Mode Register (channel = 2) */ +#define REG_TC1_SMMR2 (0x40084088U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC1_CV2 (0x40084090U) /**< \brief (TC1) Counter Value (channel = 2) */ +#define REG_TC1_RA2 (0x40084094U) /**< \brief (TC1) Register A (channel = 2) */ +#define REG_TC1_RB2 (0x40084098U) /**< \brief (TC1) Register B (channel = 2) */ +#define REG_TC1_RC2 (0x4008409CU) /**< \brief (TC1) Register C (channel = 2) */ +#define REG_TC1_SR2 (0x400840A0U) /**< \brief (TC1) Status Register (channel = 2) */ +#define REG_TC1_IER2 (0x400840A4U) /**< \brief (TC1) Interrupt Enable Register (channel = 2) */ +#define REG_TC1_IDR2 (0x400840A8U) /**< \brief (TC1) Interrupt Disable Register (channel = 2) */ +#define REG_TC1_IMR2 (0x400840ACU) /**< \brief (TC1) Interrupt Mask Register (channel = 2) */ +#define REG_TC1_BCR (0x400840C0U) /**< \brief (TC1) Block Control Register */ +#define REG_TC1_BMR (0x400840C4U) /**< \brief (TC1) Block Mode Register */ +#define REG_TC1_QIER (0x400840C8U) /**< \brief (TC1) QDEC Interrupt Enable Register */ +#define REG_TC1_QIDR (0x400840CCU) /**< \brief (TC1) QDEC Interrupt Disable Register */ +#define REG_TC1_QIMR (0x400840D0U) /**< \brief (TC1) QDEC Interrupt Mask Register */ +#define REG_TC1_QISR (0x400840D4U) /**< \brief (TC1) QDEC Interrupt Status Register */ +#define REG_TC1_FMR (0x400840D8U) /**< \brief (TC1) Fault Mode Register */ +#define REG_TC1_WPMR (0x400840E4U) /**< \brief (TC1) Write Protect Mode Register */ +#else +#define REG_TC1_CCR0 (*(WoReg*)0x40084000U) /**< \brief (TC1) Channel Control Register (channel = 0) */ +#define REG_TC1_CMR0 (*(RwReg*)0x40084004U) /**< \brief (TC1) Channel Mode Register (channel = 0) */ +#define REG_TC1_SMMR0 (*(RwReg*)0x40084008U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC1_CV0 (*(RoReg*)0x40084010U) /**< \brief (TC1) Counter Value (channel = 0) */ +#define REG_TC1_RA0 (*(RwReg*)0x40084014U) /**< \brief (TC1) Register A (channel = 0) */ +#define REG_TC1_RB0 (*(RwReg*)0x40084018U) /**< \brief (TC1) Register B (channel = 0) */ +#define REG_TC1_RC0 (*(RwReg*)0x4008401CU) /**< \brief (TC1) Register C (channel = 0) */ +#define REG_TC1_SR0 (*(RoReg*)0x40084020U) /**< \brief (TC1) Status Register (channel = 0) */ +#define REG_TC1_IER0 (*(WoReg*)0x40084024U) /**< \brief (TC1) Interrupt Enable Register (channel = 0) */ +#define REG_TC1_IDR0 (*(WoReg*)0x40084028U) /**< \brief (TC1) Interrupt Disable Register (channel = 0) */ +#define REG_TC1_IMR0 (*(RoReg*)0x4008402CU) /**< \brief (TC1) Interrupt Mask Register (channel = 0) */ +#define REG_TC1_CCR1 (*(WoReg*)0x40084040U) /**< \brief (TC1) Channel Control Register (channel = 1) */ +#define REG_TC1_CMR1 (*(RwReg*)0x40084044U) /**< \brief (TC1) Channel Mode Register (channel = 1) */ +#define REG_TC1_SMMR1 (*(RwReg*)0x40084048U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC1_CV1 (*(RoReg*)0x40084050U) /**< \brief (TC1) Counter Value (channel = 1) */ +#define REG_TC1_RA1 (*(RwReg*)0x40084054U) /**< \brief (TC1) Register A (channel = 1) */ +#define REG_TC1_RB1 (*(RwReg*)0x40084058U) /**< \brief (TC1) Register B (channel = 1) */ +#define REG_TC1_RC1 (*(RwReg*)0x4008405CU) /**< \brief (TC1) Register C (channel = 1) */ +#define REG_TC1_SR1 (*(RoReg*)0x40084060U) /**< \brief (TC1) Status Register (channel = 1) */ +#define REG_TC1_IER1 (*(WoReg*)0x40084064U) /**< \brief (TC1) Interrupt Enable Register (channel = 1) */ +#define REG_TC1_IDR1 (*(WoReg*)0x40084068U) /**< \brief (TC1) Interrupt Disable Register (channel = 1) */ +#define REG_TC1_IMR1 (*(RoReg*)0x4008406CU) /**< \brief (TC1) Interrupt Mask Register (channel = 1) */ +#define REG_TC1_CCR2 (*(WoReg*)0x40084080U) /**< \brief (TC1) Channel Control Register (channel = 2) */ +#define REG_TC1_CMR2 (*(RwReg*)0x40084084U) /**< \brief (TC1) Channel Mode Register (channel = 2) */ +#define REG_TC1_SMMR2 (*(RwReg*)0x40084088U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC1_CV2 (*(RoReg*)0x40084090U) /**< \brief (TC1) Counter Value (channel = 2) */ +#define REG_TC1_RA2 (*(RwReg*)0x40084094U) /**< \brief (TC1) Register A (channel = 2) */ +#define REG_TC1_RB2 (*(RwReg*)0x40084098U) /**< \brief (TC1) Register B (channel = 2) */ +#define REG_TC1_RC2 (*(RwReg*)0x4008409CU) /**< \brief (TC1) Register C (channel = 2) */ +#define REG_TC1_SR2 (*(RoReg*)0x400840A0U) /**< \brief (TC1) Status Register (channel = 2) */ +#define REG_TC1_IER2 (*(WoReg*)0x400840A4U) /**< \brief (TC1) Interrupt Enable Register (channel = 2) */ +#define REG_TC1_IDR2 (*(WoReg*)0x400840A8U) /**< \brief (TC1) Interrupt Disable Register (channel = 2) */ +#define REG_TC1_IMR2 (*(RoReg*)0x400840ACU) /**< \brief (TC1) Interrupt Mask Register (channel = 2) */ +#define REG_TC1_BCR (*(WoReg*)0x400840C0U) /**< \brief (TC1) Block Control Register */ +#define REG_TC1_BMR (*(RwReg*)0x400840C4U) /**< \brief (TC1) Block Mode Register */ +#define REG_TC1_QIER (*(WoReg*)0x400840C8U) /**< \brief (TC1) QDEC Interrupt Enable Register */ +#define REG_TC1_QIDR (*(WoReg*)0x400840CCU) /**< \brief (TC1) QDEC Interrupt Disable Register */ +#define REG_TC1_QIMR (*(RoReg*)0x400840D0U) /**< \brief (TC1) QDEC Interrupt Mask Register */ +#define REG_TC1_QISR (*(RoReg*)0x400840D4U) /**< \brief (TC1) QDEC Interrupt Status Register */ +#define REG_TC1_FMR (*(RwReg*)0x400840D8U) /**< \brief (TC1) Fault Mode Register */ +#define REG_TC1_WPMR (*(RwReg*)0x400840E4U) /**< \brief (TC1) Write Protect Mode Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_TC1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_tc2.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_tc2.h new file mode 100644 index 000000000..4c4e86112 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_tc2.h @@ -0,0 +1,120 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_TC2_INSTANCE_ +#define _SAM3XA_TC2_INSTANCE_ + +/* ========== Register definition for TC2 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TC2_CCR0 (0x40088000U) /**< \brief (TC2) Channel Control Register (channel = 0) */ +#define REG_TC2_CMR0 (0x40088004U) /**< \brief (TC2) Channel Mode Register (channel = 0) */ +#define REG_TC2_SMMR0 (0x40088008U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC2_CV0 (0x40088010U) /**< \brief (TC2) Counter Value (channel = 0) */ +#define REG_TC2_RA0 (0x40088014U) /**< \brief (TC2) Register A (channel = 0) */ +#define REG_TC2_RB0 (0x40088018U) /**< \brief (TC2) Register B (channel = 0) */ +#define REG_TC2_RC0 (0x4008801CU) /**< \brief (TC2) Register C (channel = 0) */ +#define REG_TC2_SR0 (0x40088020U) /**< \brief (TC2) Status Register (channel = 0) */ +#define REG_TC2_IER0 (0x40088024U) /**< \brief (TC2) Interrupt Enable Register (channel = 0) */ +#define REG_TC2_IDR0 (0x40088028U) /**< \brief (TC2) Interrupt Disable Register (channel = 0) */ +#define REG_TC2_IMR0 (0x4008802CU) /**< \brief (TC2) Interrupt Mask Register (channel = 0) */ +#define REG_TC2_CCR1 (0x40088040U) /**< \brief (TC2) Channel Control Register (channel = 1) */ +#define REG_TC2_CMR1 (0x40088044U) /**< \brief (TC2) Channel Mode Register (channel = 1) */ +#define REG_TC2_SMMR1 (0x40088048U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC2_CV1 (0x40088050U) /**< \brief (TC2) Counter Value (channel = 1) */ +#define REG_TC2_RA1 (0x40088054U) /**< \brief (TC2) Register A (channel = 1) */ +#define REG_TC2_RB1 (0x40088058U) /**< \brief (TC2) Register B (channel = 1) */ +#define REG_TC2_RC1 (0x4008805CU) /**< \brief (TC2) Register C (channel = 1) */ +#define REG_TC2_SR1 (0x40088060U) /**< \brief (TC2) Status Register (channel = 1) */ +#define REG_TC2_IER1 (0x40088064U) /**< \brief (TC2) Interrupt Enable Register (channel = 1) */ +#define REG_TC2_IDR1 (0x40088068U) /**< \brief (TC2) Interrupt Disable Register (channel = 1) */ +#define REG_TC2_IMR1 (0x4008806CU) /**< \brief (TC2) Interrupt Mask Register (channel = 1) */ +#define REG_TC2_CCR2 (0x40088080U) /**< \brief (TC2) Channel Control Register (channel = 2) */ +#define REG_TC2_CMR2 (0x40088084U) /**< \brief (TC2) Channel Mode Register (channel = 2) */ +#define REG_TC2_SMMR2 (0x40088088U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC2_CV2 (0x40088090U) /**< \brief (TC2) Counter Value (channel = 2) */ +#define REG_TC2_RA2 (0x40088094U) /**< \brief (TC2) Register A (channel = 2) */ +#define REG_TC2_RB2 (0x40088098U) /**< \brief (TC2) Register B (channel = 2) */ +#define REG_TC2_RC2 (0x4008809CU) /**< \brief (TC2) Register C (channel = 2) */ +#define REG_TC2_SR2 (0x400880A0U) /**< \brief (TC2) Status Register (channel = 2) */ +#define REG_TC2_IER2 (0x400880A4U) /**< \brief (TC2) Interrupt Enable Register (channel = 2) */ +#define REG_TC2_IDR2 (0x400880A8U) /**< \brief (TC2) Interrupt Disable Register (channel = 2) */ +#define REG_TC2_IMR2 (0x400880ACU) /**< \brief (TC2) Interrupt Mask Register (channel = 2) */ +#define REG_TC2_BCR (0x400880C0U) /**< \brief (TC2) Block Control Register */ +#define REG_TC2_BMR (0x400880C4U) /**< \brief (TC2) Block Mode Register */ +#define REG_TC2_QIER (0x400880C8U) /**< \brief (TC2) QDEC Interrupt Enable Register */ +#define REG_TC2_QIDR (0x400880CCU) /**< \brief (TC2) QDEC Interrupt Disable Register */ +#define REG_TC2_QIMR (0x400880D0U) /**< \brief (TC2) QDEC Interrupt Mask Register */ +#define REG_TC2_QISR (0x400880D4U) /**< \brief (TC2) QDEC Interrupt Status Register */ +#define REG_TC2_FMR (0x400880D8U) /**< \brief (TC2) Fault Mode Register */ +#define REG_TC2_WPMR (0x400880E4U) /**< \brief (TC2) Write Protect Mode Register */ +#else +#define REG_TC2_CCR0 (*(WoReg*)0x40088000U) /**< \brief (TC2) Channel Control Register (channel = 0) */ +#define REG_TC2_CMR0 (*(RwReg*)0x40088004U) /**< \brief (TC2) Channel Mode Register (channel = 0) */ +#define REG_TC2_SMMR0 (*(RwReg*)0x40088008U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 0) */ +#define REG_TC2_CV0 (*(RoReg*)0x40088010U) /**< \brief (TC2) Counter Value (channel = 0) */ +#define REG_TC2_RA0 (*(RwReg*)0x40088014U) /**< \brief (TC2) Register A (channel = 0) */ +#define REG_TC2_RB0 (*(RwReg*)0x40088018U) /**< \brief (TC2) Register B (channel = 0) */ +#define REG_TC2_RC0 (*(RwReg*)0x4008801CU) /**< \brief (TC2) Register C (channel = 0) */ +#define REG_TC2_SR0 (*(RoReg*)0x40088020U) /**< \brief (TC2) Status Register (channel = 0) */ +#define REG_TC2_IER0 (*(WoReg*)0x40088024U) /**< \brief (TC2) Interrupt Enable Register (channel = 0) */ +#define REG_TC2_IDR0 (*(WoReg*)0x40088028U) /**< \brief (TC2) Interrupt Disable Register (channel = 0) */ +#define REG_TC2_IMR0 (*(RoReg*)0x4008802CU) /**< \brief (TC2) Interrupt Mask Register (channel = 0) */ +#define REG_TC2_CCR1 (*(WoReg*)0x40088040U) /**< \brief (TC2) Channel Control Register (channel = 1) */ +#define REG_TC2_CMR1 (*(RwReg*)0x40088044U) /**< \brief (TC2) Channel Mode Register (channel = 1) */ +#define REG_TC2_SMMR1 (*(RwReg*)0x40088048U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 1) */ +#define REG_TC2_CV1 (*(RoReg*)0x40088050U) /**< \brief (TC2) Counter Value (channel = 1) */ +#define REG_TC2_RA1 (*(RwReg*)0x40088054U) /**< \brief (TC2) Register A (channel = 1) */ +#define REG_TC2_RB1 (*(RwReg*)0x40088058U) /**< \brief (TC2) Register B (channel = 1) */ +#define REG_TC2_RC1 (*(RwReg*)0x4008805CU) /**< \brief (TC2) Register C (channel = 1) */ +#define REG_TC2_SR1 (*(RoReg*)0x40088060U) /**< \brief (TC2) Status Register (channel = 1) */ +#define REG_TC2_IER1 (*(WoReg*)0x40088064U) /**< \brief (TC2) Interrupt Enable Register (channel = 1) */ +#define REG_TC2_IDR1 (*(WoReg*)0x40088068U) /**< \brief (TC2) Interrupt Disable Register (channel = 1) */ +#define REG_TC2_IMR1 (*(RoReg*)0x4008806CU) /**< \brief (TC2) Interrupt Mask Register (channel = 1) */ +#define REG_TC2_CCR2 (*(WoReg*)0x40088080U) /**< \brief (TC2) Channel Control Register (channel = 2) */ +#define REG_TC2_CMR2 (*(RwReg*)0x40088084U) /**< \brief (TC2) Channel Mode Register (channel = 2) */ +#define REG_TC2_SMMR2 (*(RwReg*)0x40088088U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 2) */ +#define REG_TC2_CV2 (*(RoReg*)0x40088090U) /**< \brief (TC2) Counter Value (channel = 2) */ +#define REG_TC2_RA2 (*(RwReg*)0x40088094U) /**< \brief (TC2) Register A (channel = 2) */ +#define REG_TC2_RB2 (*(RwReg*)0x40088098U) /**< \brief (TC2) Register B (channel = 2) */ +#define REG_TC2_RC2 (*(RwReg*)0x4008809CU) /**< \brief (TC2) Register C (channel = 2) */ +#define REG_TC2_SR2 (*(RoReg*)0x400880A0U) /**< \brief (TC2) Status Register (channel = 2) */ +#define REG_TC2_IER2 (*(WoReg*)0x400880A4U) /**< \brief (TC2) Interrupt Enable Register (channel = 2) */ +#define REG_TC2_IDR2 (*(WoReg*)0x400880A8U) /**< \brief (TC2) Interrupt Disable Register (channel = 2) */ +#define REG_TC2_IMR2 (*(RoReg*)0x400880ACU) /**< \brief (TC2) Interrupt Mask Register (channel = 2) */ +#define REG_TC2_BCR (*(WoReg*)0x400880C0U) /**< \brief (TC2) Block Control Register */ +#define REG_TC2_BMR (*(RwReg*)0x400880C4U) /**< \brief (TC2) Block Mode Register */ +#define REG_TC2_QIER (*(WoReg*)0x400880C8U) /**< \brief (TC2) QDEC Interrupt Enable Register */ +#define REG_TC2_QIDR (*(WoReg*)0x400880CCU) /**< \brief (TC2) QDEC Interrupt Disable Register */ +#define REG_TC2_QIMR (*(RoReg*)0x400880D0U) /**< \brief (TC2) QDEC Interrupt Mask Register */ +#define REG_TC2_QISR (*(RoReg*)0x400880D4U) /**< \brief (TC2) QDEC Interrupt Status Register */ +#define REG_TC2_FMR (*(RwReg*)0x400880D8U) /**< \brief (TC2) Fault Mode Register */ +#define REG_TC2_WPMR (*(RwReg*)0x400880E4U) /**< \brief (TC2) Write Protect Mode Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_TC2_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_trng.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_trng.h new file mode 100644 index 000000000..811cdafcd --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_trng.h @@ -0,0 +1,50 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_TRNG_INSTANCE_ +#define _SAM3XA_TRNG_INSTANCE_ + +/* ========== Register definition for TRNG peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TRNG_CR (0x400BC000U) /**< \brief (TRNG) Control Register */ +#define REG_TRNG_IER (0x400BC010U) /**< \brief (TRNG) Interrupt Enable Register */ +#define REG_TRNG_IDR (0x400BC014U) /**< \brief (TRNG) Interrupt Disable Register */ +#define REG_TRNG_IMR (0x400BC018U) /**< \brief (TRNG) Interrupt Mask Register */ +#define REG_TRNG_ISR (0x400BC01CU) /**< \brief (TRNG) Interrupt Status Register */ +#define REG_TRNG_ODATA (0x400BC050U) /**< \brief (TRNG) Output Data Register */ +#else +#define REG_TRNG_CR (*(WoReg*)0x400BC000U) /**< \brief (TRNG) Control Register */ +#define REG_TRNG_IER (*(WoReg*)0x400BC010U) /**< \brief (TRNG) Interrupt Enable Register */ +#define REG_TRNG_IDR (*(WoReg*)0x400BC014U) /**< \brief (TRNG) Interrupt Disable Register */ +#define REG_TRNG_IMR (*(RoReg*)0x400BC018U) /**< \brief (TRNG) Interrupt Mask Register */ +#define REG_TRNG_ISR (*(RoReg*)0x400BC01CU) /**< \brief (TRNG) Interrupt Status Register */ +#define REG_TRNG_ODATA (*(RoReg*)0x400BC050U) /**< \brief (TRNG) Output Data Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_TRNG_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_twi0.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_twi0.h new file mode 100644 index 000000000..357803339 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_twi0.h @@ -0,0 +1,80 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_TWI0_INSTANCE_ +#define _SAM3XA_TWI0_INSTANCE_ + +/* ========== Register definition for TWI0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TWI0_CR (0x4008C000U) /**< \brief (TWI0) Control Register */ +#define REG_TWI0_MMR (0x4008C004U) /**< \brief (TWI0) Master Mode Register */ +#define REG_TWI0_SMR (0x4008C008U) /**< \brief (TWI0) Slave Mode Register */ +#define REG_TWI0_IADR (0x4008C00CU) /**< \brief (TWI0) Internal Address Register */ +#define REG_TWI0_CWGR (0x4008C010U) /**< \brief (TWI0) Clock Waveform Generator Register */ +#define REG_TWI0_SR (0x4008C020U) /**< \brief (TWI0) Status Register */ +#define REG_TWI0_IER (0x4008C024U) /**< \brief (TWI0) Interrupt Enable Register */ +#define REG_TWI0_IDR (0x4008C028U) /**< \brief (TWI0) Interrupt Disable Register */ +#define REG_TWI0_IMR (0x4008C02CU) /**< \brief (TWI0) Interrupt Mask Register */ +#define REG_TWI0_RHR (0x4008C030U) /**< \brief (TWI0) Receive Holding Register */ +#define REG_TWI0_THR (0x4008C034U) /**< \brief (TWI0) Transmit Holding Register */ +#define REG_TWI0_RPR (0x4008C100U) /**< \brief (TWI0) Receive Pointer Register */ +#define REG_TWI0_RCR (0x4008C104U) /**< \brief (TWI0) Receive Counter Register */ +#define REG_TWI0_TPR (0x4008C108U) /**< \brief (TWI0) Transmit Pointer Register */ +#define REG_TWI0_TCR (0x4008C10CU) /**< \brief (TWI0) Transmit Counter Register */ +#define REG_TWI0_RNPR (0x4008C110U) /**< \brief (TWI0) Receive Next Pointer Register */ +#define REG_TWI0_RNCR (0x4008C114U) /**< \brief (TWI0) Receive Next Counter Register */ +#define REG_TWI0_TNPR (0x4008C118U) /**< \brief (TWI0) Transmit Next Pointer Register */ +#define REG_TWI0_TNCR (0x4008C11CU) /**< \brief (TWI0) Transmit Next Counter Register */ +#define REG_TWI0_PTCR (0x4008C120U) /**< \brief (TWI0) Transfer Control Register */ +#define REG_TWI0_PTSR (0x4008C124U) /**< \brief (TWI0) Transfer Status Register */ +#else +#define REG_TWI0_CR (*(WoReg*)0x4008C000U) /**< \brief (TWI0) Control Register */ +#define REG_TWI0_MMR (*(RwReg*)0x4008C004U) /**< \brief (TWI0) Master Mode Register */ +#define REG_TWI0_SMR (*(RwReg*)0x4008C008U) /**< \brief (TWI0) Slave Mode Register */ +#define REG_TWI0_IADR (*(RwReg*)0x4008C00CU) /**< \brief (TWI0) Internal Address Register */ +#define REG_TWI0_CWGR (*(RwReg*)0x4008C010U) /**< \brief (TWI0) Clock Waveform Generator Register */ +#define REG_TWI0_SR (*(RoReg*)0x4008C020U) /**< \brief (TWI0) Status Register */ +#define REG_TWI0_IER (*(WoReg*)0x4008C024U) /**< \brief (TWI0) Interrupt Enable Register */ +#define REG_TWI0_IDR (*(WoReg*)0x4008C028U) /**< \brief (TWI0) Interrupt Disable Register */ +#define REG_TWI0_IMR (*(RoReg*)0x4008C02CU) /**< \brief (TWI0) Interrupt Mask Register */ +#define REG_TWI0_RHR (*(RoReg*)0x4008C030U) /**< \brief (TWI0) Receive Holding Register */ +#define REG_TWI0_THR (*(WoReg*)0x4008C034U) /**< \brief (TWI0) Transmit Holding Register */ +#define REG_TWI0_RPR (*(RwReg*)0x4008C100U) /**< \brief (TWI0) Receive Pointer Register */ +#define REG_TWI0_RCR (*(RwReg*)0x4008C104U) /**< \brief (TWI0) Receive Counter Register */ +#define REG_TWI0_TPR (*(RwReg*)0x4008C108U) /**< \brief (TWI0) Transmit Pointer Register */ +#define REG_TWI0_TCR (*(RwReg*)0x4008C10CU) /**< \brief (TWI0) Transmit Counter Register */ +#define REG_TWI0_RNPR (*(RwReg*)0x4008C110U) /**< \brief (TWI0) Receive Next Pointer Register */ +#define REG_TWI0_RNCR (*(RwReg*)0x4008C114U) /**< \brief (TWI0) Receive Next Counter Register */ +#define REG_TWI0_TNPR (*(RwReg*)0x4008C118U) /**< \brief (TWI0) Transmit Next Pointer Register */ +#define REG_TWI0_TNCR (*(RwReg*)0x4008C11CU) /**< \brief (TWI0) Transmit Next Counter Register */ +#define REG_TWI0_PTCR (*(WoReg*)0x4008C120U) /**< \brief (TWI0) Transfer Control Register */ +#define REG_TWI0_PTSR (*(RoReg*)0x4008C124U) /**< \brief (TWI0) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_TWI0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_twi1.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_twi1.h new file mode 100644 index 000000000..dc4aad851 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_twi1.h @@ -0,0 +1,80 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_TWI1_INSTANCE_ +#define _SAM3XA_TWI1_INSTANCE_ + +/* ========== Register definition for TWI1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_TWI1_CR (0x40090000U) /**< \brief (TWI1) Control Register */ +#define REG_TWI1_MMR (0x40090004U) /**< \brief (TWI1) Master Mode Register */ +#define REG_TWI1_SMR (0x40090008U) /**< \brief (TWI1) Slave Mode Register */ +#define REG_TWI1_IADR (0x4009000CU) /**< \brief (TWI1) Internal Address Register */ +#define REG_TWI1_CWGR (0x40090010U) /**< \brief (TWI1) Clock Waveform Generator Register */ +#define REG_TWI1_SR (0x40090020U) /**< \brief (TWI1) Status Register */ +#define REG_TWI1_IER (0x40090024U) /**< \brief (TWI1) Interrupt Enable Register */ +#define REG_TWI1_IDR (0x40090028U) /**< \brief (TWI1) Interrupt Disable Register */ +#define REG_TWI1_IMR (0x4009002CU) /**< \brief (TWI1) Interrupt Mask Register */ +#define REG_TWI1_RHR (0x40090030U) /**< \brief (TWI1) Receive Holding Register */ +#define REG_TWI1_THR (0x40090034U) /**< \brief (TWI1) Transmit Holding Register */ +#define REG_TWI1_RPR (0x40090100U) /**< \brief (TWI1) Receive Pointer Register */ +#define REG_TWI1_RCR (0x40090104U) /**< \brief (TWI1) Receive Counter Register */ +#define REG_TWI1_TPR (0x40090108U) /**< \brief (TWI1) Transmit Pointer Register */ +#define REG_TWI1_TCR (0x4009010CU) /**< \brief (TWI1) Transmit Counter Register */ +#define REG_TWI1_RNPR (0x40090110U) /**< \brief (TWI1) Receive Next Pointer Register */ +#define REG_TWI1_RNCR (0x40090114U) /**< \brief (TWI1) Receive Next Counter Register */ +#define REG_TWI1_TNPR (0x40090118U) /**< \brief (TWI1) Transmit Next Pointer Register */ +#define REG_TWI1_TNCR (0x4009011CU) /**< \brief (TWI1) Transmit Next Counter Register */ +#define REG_TWI1_PTCR (0x40090120U) /**< \brief (TWI1) Transfer Control Register */ +#define REG_TWI1_PTSR (0x40090124U) /**< \brief (TWI1) Transfer Status Register */ +#else +#define REG_TWI1_CR (*(WoReg*)0x40090000U) /**< \brief (TWI1) Control Register */ +#define REG_TWI1_MMR (*(RwReg*)0x40090004U) /**< \brief (TWI1) Master Mode Register */ +#define REG_TWI1_SMR (*(RwReg*)0x40090008U) /**< \brief (TWI1) Slave Mode Register */ +#define REG_TWI1_IADR (*(RwReg*)0x4009000CU) /**< \brief (TWI1) Internal Address Register */ +#define REG_TWI1_CWGR (*(RwReg*)0x40090010U) /**< \brief (TWI1) Clock Waveform Generator Register */ +#define REG_TWI1_SR (*(RoReg*)0x40090020U) /**< \brief (TWI1) Status Register */ +#define REG_TWI1_IER (*(WoReg*)0x40090024U) /**< \brief (TWI1) Interrupt Enable Register */ +#define REG_TWI1_IDR (*(WoReg*)0x40090028U) /**< \brief (TWI1) Interrupt Disable Register */ +#define REG_TWI1_IMR (*(RoReg*)0x4009002CU) /**< \brief (TWI1) Interrupt Mask Register */ +#define REG_TWI1_RHR (*(RoReg*)0x40090030U) /**< \brief (TWI1) Receive Holding Register */ +#define REG_TWI1_THR (*(WoReg*)0x40090034U) /**< \brief (TWI1) Transmit Holding Register */ +#define REG_TWI1_RPR (*(RwReg*)0x40090100U) /**< \brief (TWI1) Receive Pointer Register */ +#define REG_TWI1_RCR (*(RwReg*)0x40090104U) /**< \brief (TWI1) Receive Counter Register */ +#define REG_TWI1_TPR (*(RwReg*)0x40090108U) /**< \brief (TWI1) Transmit Pointer Register */ +#define REG_TWI1_TCR (*(RwReg*)0x4009010CU) /**< \brief (TWI1) Transmit Counter Register */ +#define REG_TWI1_RNPR (*(RwReg*)0x40090110U) /**< \brief (TWI1) Receive Next Pointer Register */ +#define REG_TWI1_RNCR (*(RwReg*)0x40090114U) /**< \brief (TWI1) Receive Next Counter Register */ +#define REG_TWI1_TNPR (*(RwReg*)0x40090118U) /**< \brief (TWI1) Transmit Next Pointer Register */ +#define REG_TWI1_TNCR (*(RwReg*)0x4009011CU) /**< \brief (TWI1) Transmit Next Counter Register */ +#define REG_TWI1_PTCR (*(WoReg*)0x40090120U) /**< \brief (TWI1) Transfer Control Register */ +#define REG_TWI1_PTSR (*(RoReg*)0x40090124U) /**< \brief (TWI1) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_TWI1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_uart.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_uart.h new file mode 100644 index 000000000..0bbf0ce65 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_uart.h @@ -0,0 +1,76 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_UART_INSTANCE_ +#define _SAM3XA_UART_INSTANCE_ + +/* ========== Register definition for UART peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_UART_CR (0x400E0800U) /**< \brief (UART) Control Register */ +#define REG_UART_MR (0x400E0804U) /**< \brief (UART) Mode Register */ +#define REG_UART_IER (0x400E0808U) /**< \brief (UART) Interrupt Enable Register */ +#define REG_UART_IDR (0x400E080CU) /**< \brief (UART) Interrupt Disable Register */ +#define REG_UART_IMR (0x400E0810U) /**< \brief (UART) Interrupt Mask Register */ +#define REG_UART_SR (0x400E0814U) /**< \brief (UART) Status Register */ +#define REG_UART_RHR (0x400E0818U) /**< \brief (UART) Receive Holding Register */ +#define REG_UART_THR (0x400E081CU) /**< \brief (UART) Transmit Holding Register */ +#define REG_UART_BRGR (0x400E0820U) /**< \brief (UART) Baud Rate Generator Register */ +#define REG_UART_RPR (0x400E0900U) /**< \brief (UART) Receive Pointer Register */ +#define REG_UART_RCR (0x400E0904U) /**< \brief (UART) Receive Counter Register */ +#define REG_UART_TPR (0x400E0908U) /**< \brief (UART) Transmit Pointer Register */ +#define REG_UART_TCR (0x400E090CU) /**< \brief (UART) Transmit Counter Register */ +#define REG_UART_RNPR (0x400E0910U) /**< \brief (UART) Receive Next Pointer Register */ +#define REG_UART_RNCR (0x400E0914U) /**< \brief (UART) Receive Next Counter Register */ +#define REG_UART_TNPR (0x400E0918U) /**< \brief (UART) Transmit Next Pointer Register */ +#define REG_UART_TNCR (0x400E091CU) /**< \brief (UART) Transmit Next Counter Register */ +#define REG_UART_PTCR (0x400E0920U) /**< \brief (UART) Transfer Control Register */ +#define REG_UART_PTSR (0x400E0924U) /**< \brief (UART) Transfer Status Register */ +#else +#define REG_UART_CR (*(WoReg*)0x400E0800U) /**< \brief (UART) Control Register */ +#define REG_UART_MR (*(RwReg*)0x400E0804U) /**< \brief (UART) Mode Register */ +#define REG_UART_IER (*(WoReg*)0x400E0808U) /**< \brief (UART) Interrupt Enable Register */ +#define REG_UART_IDR (*(WoReg*)0x400E080CU) /**< \brief (UART) Interrupt Disable Register */ +#define REG_UART_IMR (*(RoReg*)0x400E0810U) /**< \brief (UART) Interrupt Mask Register */ +#define REG_UART_SR (*(RoReg*)0x400E0814U) /**< \brief (UART) Status Register */ +#define REG_UART_RHR (*(RoReg*)0x400E0818U) /**< \brief (UART) Receive Holding Register */ +#define REG_UART_THR (*(WoReg*)0x400E081CU) /**< \brief (UART) Transmit Holding Register */ +#define REG_UART_BRGR (*(RwReg*)0x400E0820U) /**< \brief (UART) Baud Rate Generator Register */ +#define REG_UART_RPR (*(RwReg*)0x400E0900U) /**< \brief (UART) Receive Pointer Register */ +#define REG_UART_RCR (*(RwReg*)0x400E0904U) /**< \brief (UART) Receive Counter Register */ +#define REG_UART_TPR (*(RwReg*)0x400E0908U) /**< \brief (UART) Transmit Pointer Register */ +#define REG_UART_TCR (*(RwReg*)0x400E090CU) /**< \brief (UART) Transmit Counter Register */ +#define REG_UART_RNPR (*(RwReg*)0x400E0910U) /**< \brief (UART) Receive Next Pointer Register */ +#define REG_UART_RNCR (*(RwReg*)0x400E0914U) /**< \brief (UART) Receive Next Counter Register */ +#define REG_UART_TNPR (*(RwReg*)0x400E0918U) /**< \brief (UART) Transmit Next Pointer Register */ +#define REG_UART_TNCR (*(RwReg*)0x400E091CU) /**< \brief (UART) Transmit Next Counter Register */ +#define REG_UART_PTCR (*(WoReg*)0x400E0920U) /**< \brief (UART) Transfer Control Register */ +#define REG_UART_PTSR (*(RoReg*)0x400E0924U) /**< \brief (UART) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_UART_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_uotghs.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_uotghs.h new file mode 100644 index 000000000..7d40f7601 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_uotghs.h @@ -0,0 +1,234 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_UOTGHS_INSTANCE_ +#define _SAM3XA_UOTGHS_INSTANCE_ + +/* ========== Register definition for UOTGHS peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_UOTGHS_DEVCTRL (0x400AC000U) /**< \brief (UOTGHS) Device General Control Register */ +#define REG_UOTGHS_DEVISR (0x400AC004U) /**< \brief (UOTGHS) Device Global Interrupt Status Register */ +#define REG_UOTGHS_DEVICR (0x400AC008U) /**< \brief (UOTGHS) Device Global Interrupt Clear Register */ +#define REG_UOTGHS_DEVIFR (0x400AC00CU) /**< \brief (UOTGHS) Device Global Interrupt Set Register */ +#define REG_UOTGHS_DEVIMR (0x400AC010U) /**< \brief (UOTGHS) Device Global Interrupt Mask Register */ +#define REG_UOTGHS_DEVIDR (0x400AC014U) /**< \brief (UOTGHS) Device Global Interrupt Disable Register */ +#define REG_UOTGHS_DEVIER (0x400AC018U) /**< \brief (UOTGHS) Device Global Interrupt Enable Register */ +#define REG_UOTGHS_DEVEPT (0x400AC01CU) /**< \brief (UOTGHS) Device Endpoint Register */ +#define REG_UOTGHS_DEVFNUM (0x400AC020U) /**< \brief (UOTGHS) Device Frame Number Register */ +#define REG_UOTGHS_DEVEPTCFG (0x400AC100U) /**< \brief (UOTGHS) Device Endpoint Configuration Register (n = 0) */ +#define REG_UOTGHS_DEVEPTISR (0x400AC130U) /**< \brief (UOTGHS) Device Endpoint Status Register (n = 0) */ +#define REG_UOTGHS_DEVEPTICR (0x400AC160U) /**< \brief (UOTGHS) Device Endpoint Clear Register (n = 0) */ +#define REG_UOTGHS_DEVEPTIFR (0x400AC190U) /**< \brief (UOTGHS) Device Endpoint Set Register (n = 0) */ +#define REG_UOTGHS_DEVEPTIMR (0x400AC1C0U) /**< \brief (UOTGHS) Device Endpoint Mask Register (n = 0) */ +#define REG_UOTGHS_DEVEPTIER (0x400AC1F0U) /**< \brief (UOTGHS) Device Endpoint Enable Register (n = 0) */ +#define REG_UOTGHS_DEVEPTIDR (0x400AC220U) /**< \brief (UOTGHS) Device Endpoint Disable Register (n = 0) */ +#define REG_UOTGHS_DEVDMANXTDSC1 (0x400AC310U) /**< \brief (UOTGHS) Device DMA Channel Next Descriptor Address Register (n = 1) */ +#define REG_UOTGHS_DEVDMAADDRESS1 (0x400AC314U) /**< \brief (UOTGHS) Device DMA Channel Address Register (n = 1) */ +#define REG_UOTGHS_DEVDMACONTROL1 (0x400AC318U) /**< \brief (UOTGHS) Device DMA Channel Control Register (n = 1) */ +#define REG_UOTGHS_DEVDMASTATUS1 (0x400AC31CU) /**< \brief (UOTGHS) Device DMA Channel Status Register (n = 1) */ +#define REG_UOTGHS_DEVDMANXTDSC2 (0x400AC320U) /**< \brief (UOTGHS) Device DMA Channel Next Descriptor Address Register (n = 2) */ +#define REG_UOTGHS_DEVDMAADDRESS2 (0x400AC324U) /**< \brief (UOTGHS) Device DMA Channel Address Register (n = 2) */ +#define REG_UOTGHS_DEVDMACONTROL2 (0x400AC328U) /**< \brief (UOTGHS) Device DMA Channel Control Register (n = 2) */ +#define REG_UOTGHS_DEVDMASTATUS2 (0x400AC32CU) /**< \brief (UOTGHS) Device DMA Channel Status Register (n = 2) */ +#define REG_UOTGHS_DEVDMANXTDSC3 (0x400AC330U) /**< \brief (UOTGHS) Device DMA Channel Next Descriptor Address Register (n = 3) */ +#define REG_UOTGHS_DEVDMAADDRESS3 (0x400AC334U) /**< \brief (UOTGHS) Device DMA Channel Address Register (n = 3) */ +#define REG_UOTGHS_DEVDMACONTROL3 (0x400AC338U) /**< \brief (UOTGHS) Device DMA Channel Control Register (n = 3) */ +#define REG_UOTGHS_DEVDMASTATUS3 (0x400AC33CU) /**< \brief (UOTGHS) Device DMA Channel Status Register (n = 3) */ +#define REG_UOTGHS_DEVDMANXTDSC4 (0x400AC340U) /**< \brief (UOTGHS) Device DMA Channel Next Descriptor Address Register (n = 4) */ +#define REG_UOTGHS_DEVDMAADDRESS4 (0x400AC344U) /**< \brief (UOTGHS) Device DMA Channel Address Register (n = 4) */ +#define REG_UOTGHS_DEVDMACONTROL4 (0x400AC348U) /**< \brief (UOTGHS) Device DMA Channel Control Register (n = 4) */ +#define REG_UOTGHS_DEVDMASTATUS4 (0x400AC34CU) /**< \brief (UOTGHS) Device DMA Channel Status Register (n = 4) */ +#define REG_UOTGHS_DEVDMANXTDSC5 (0x400AC350U) /**< \brief (UOTGHS) Device DMA Channel Next Descriptor Address Register (n = 5) */ +#define REG_UOTGHS_DEVDMAADDRESS5 (0x400AC354U) /**< \brief (UOTGHS) Device DMA Channel Address Register (n = 5) */ +#define REG_UOTGHS_DEVDMACONTROL5 (0x400AC358U) /**< \brief (UOTGHS) Device DMA Channel Control Register (n = 5) */ +#define REG_UOTGHS_DEVDMASTATUS5 (0x400AC35CU) /**< \brief (UOTGHS) Device DMA Channel Status Register (n = 5) */ +#define REG_UOTGHS_DEVDMANXTDSC6 (0x400AC360U) /**< \brief (UOTGHS) Device DMA Channel Next Descriptor Address Register (n = 6) */ +#define REG_UOTGHS_DEVDMAADDRESS6 (0x400AC364U) /**< \brief (UOTGHS) Device DMA Channel Address Register (n = 6) */ +#define REG_UOTGHS_DEVDMACONTROL6 (0x400AC368U) /**< \brief (UOTGHS) Device DMA Channel Control Register (n = 6) */ +#define REG_UOTGHS_DEVDMASTATUS6 (0x400AC36CU) /**< \brief (UOTGHS) Device DMA Channel Status Register (n = 6) */ +#define REG_UOTGHS_DEVDMANXTDSC7 (0x400AC370U) /**< \brief (UOTGHS) Device DMA Channel Next Descriptor Address Register (n = 7) */ +#define REG_UOTGHS_DEVDMAADDRESS7 (0x400AC374U) /**< \brief (UOTGHS) Device DMA Channel Address Register (n = 7) */ +#define REG_UOTGHS_DEVDMACONTROL7 (0x400AC378U) /**< \brief (UOTGHS) Device DMA Channel Control Register (n = 7) */ +#define REG_UOTGHS_DEVDMASTATUS7 (0x400AC37CU) /**< \brief (UOTGHS) Device DMA Channel Status Register (n = 7) */ +#define REG_UOTGHS_HSTCTRL (0x400AC400U) /**< \brief (UOTGHS) Host General Control Register */ +#define REG_UOTGHS_HSTISR (0x400AC404U) /**< \brief (UOTGHS) Host Global Interrupt Status Register */ +#define REG_UOTGHS_HSTICR (0x400AC408U) /**< \brief (UOTGHS) Host Global Interrupt Clear Register */ +#define REG_UOTGHS_HSTIFR (0x400AC40CU) /**< \brief (UOTGHS) Host Global Interrupt Set Register */ +#define REG_UOTGHS_HSTIMR (0x400AC410U) /**< \brief (UOTGHS) Host Global Interrupt Mask Register */ +#define REG_UOTGHS_HSTIDR (0x400AC414U) /**< \brief (UOTGHS) Host Global Interrupt Disable Register */ +#define REG_UOTGHS_HSTIER (0x400AC418U) /**< \brief (UOTGHS) Host Global Interrupt Enable Register */ +#define REG_UOTGHS_HSTPIP (0x400AC41CU) /**< \brief (UOTGHS) Host Pipe Register */ +#define REG_UOTGHS_HSTFNUM (0x400AC420U) /**< \brief (UOTGHS) Host Frame Number Register */ +#define REG_UOTGHS_HSTADDR1 (0x400AC424U) /**< \brief (UOTGHS) Host Address 1 Register */ +#define REG_UOTGHS_HSTADDR2 (0x400AC428U) /**< \brief (UOTGHS) Host Address 2 Register */ +#define REG_UOTGHS_HSTADDR3 (0x400AC42CU) /**< \brief (UOTGHS) Host Address 3 Register */ +#define REG_UOTGHS_HSTPIPCFG (0x400AC500U) /**< \brief (UOTGHS) Host Pipe Configuration Register (n = 0) */ +#define REG_UOTGHS_HSTPIPISR (0x400AC530U) /**< \brief (UOTGHS) Host Pipe Status Register (n = 0) */ +#define REG_UOTGHS_HSTPIPICR (0x400AC560U) /**< \brief (UOTGHS) Host Pipe Clear Register (n = 0) */ +#define REG_UOTGHS_HSTPIPIFR (0x400AC590U) /**< \brief (UOTGHS) Host Pipe Set Register (n = 0) */ +#define REG_UOTGHS_HSTPIPIMR (0x400AC5C0U) /**< \brief (UOTGHS) Host Pipe Mask Register (n = 0) */ +#define REG_UOTGHS_HSTPIPIER (0x400AC5F0U) /**< \brief (UOTGHS) Host Pipe Enable Register (n = 0) */ +#define REG_UOTGHS_HSTPIPIDR (0x400AC620U) /**< \brief (UOTGHS) Host Pipe Disable Register (n = 0) */ +#define REG_UOTGHS_HSTPIPINRQ (0x400AC650U) /**< \brief (UOTGHS) Host Pipe IN Request Register (n = 0) */ +#define REG_UOTGHS_HSTPIPERR (0x400AC680U) /**< \brief (UOTGHS) Host Pipe Error Register (n = 0) */ +#define REG_UOTGHS_HSTDMANXTDSC1 (0x400AC710U) /**< \brief (UOTGHS) Host DMA Channel Next Descriptor Address Register (n = 1) */ +#define REG_UOTGHS_HSTDMAADDRESS1 (0x400AC714U) /**< \brief (UOTGHS) Host DMA Channel Address Register (n = 1) */ +#define REG_UOTGHS_HSTDMACONTROL1 (0x400AC718U) /**< \brief (UOTGHS) Host DMA Channel Control Register (n = 1) */ +#define REG_UOTGHS_HSTDMASTATUS1 (0x400AC71CU) /**< \brief (UOTGHS) Host DMA Channel Status Register (n = 1) */ +#define REG_UOTGHS_HSTDMANXTDSC2 (0x400AC720U) /**< \brief (UOTGHS) Host DMA Channel Next Descriptor Address Register (n = 2) */ +#define REG_UOTGHS_HSTDMAADDRESS2 (0x400AC724U) /**< \brief (UOTGHS) Host DMA Channel Address Register (n = 2) */ +#define REG_UOTGHS_HSTDMACONTROL2 (0x400AC728U) /**< \brief (UOTGHS) Host DMA Channel Control Register (n = 2) */ +#define REG_UOTGHS_HSTDMASTATUS2 (0x400AC72CU) /**< \brief (UOTGHS) Host DMA Channel Status Register (n = 2) */ +#define REG_UOTGHS_HSTDMANXTDSC3 (0x400AC730U) /**< \brief (UOTGHS) Host DMA Channel Next Descriptor Address Register (n = 3) */ +#define REG_UOTGHS_HSTDMAADDRESS3 (0x400AC734U) /**< \brief (UOTGHS) Host DMA Channel Address Register (n = 3) */ +#define REG_UOTGHS_HSTDMACONTROL3 (0x400AC738U) /**< \brief (UOTGHS) Host DMA Channel Control Register (n = 3) */ +#define REG_UOTGHS_HSTDMASTATUS3 (0x400AC73CU) /**< \brief (UOTGHS) Host DMA Channel Status Register (n = 3) */ +#define REG_UOTGHS_HSTDMANXTDSC4 (0x400AC740U) /**< \brief (UOTGHS) Host DMA Channel Next Descriptor Address Register (n = 4) */ +#define REG_UOTGHS_HSTDMAADDRESS4 (0x400AC744U) /**< \brief (UOTGHS) Host DMA Channel Address Register (n = 4) */ +#define REG_UOTGHS_HSTDMACONTROL4 (0x400AC748U) /**< \brief (UOTGHS) Host DMA Channel Control Register (n = 4) */ +#define REG_UOTGHS_HSTDMASTATUS4 (0x400AC74CU) /**< \brief (UOTGHS) Host DMA Channel Status Register (n = 4) */ +#define REG_UOTGHS_HSTDMANXTDSC5 (0x400AC750U) /**< \brief (UOTGHS) Host DMA Channel Next Descriptor Address Register (n = 5) */ +#define REG_UOTGHS_HSTDMAADDRESS5 (0x400AC754U) /**< \brief (UOTGHS) Host DMA Channel Address Register (n = 5) */ +#define REG_UOTGHS_HSTDMACONTROL5 (0x400AC758U) /**< \brief (UOTGHS) Host DMA Channel Control Register (n = 5) */ +#define REG_UOTGHS_HSTDMASTATUS5 (0x400AC75CU) /**< \brief (UOTGHS) Host DMA Channel Status Register (n = 5) */ +#define REG_UOTGHS_HSTDMANXTDSC6 (0x400AC760U) /**< \brief (UOTGHS) Host DMA Channel Next Descriptor Address Register (n = 6) */ +#define REG_UOTGHS_HSTDMAADDRESS6 (0x400AC764U) /**< \brief (UOTGHS) Host DMA Channel Address Register (n = 6) */ +#define REG_UOTGHS_HSTDMACONTROL6 (0x400AC768U) /**< \brief (UOTGHS) Host DMA Channel Control Register (n = 6) */ +#define REG_UOTGHS_HSTDMASTATUS6 (0x400AC76CU) /**< \brief (UOTGHS) Host DMA Channel Status Register (n = 6) */ +#define REG_UOTGHS_HSTDMANXTDSC7 (0x400AC770U) /**< \brief (UOTGHS) Host DMA Channel Next Descriptor Address Register (n = 7) */ +#define REG_UOTGHS_HSTDMAADDRESS7 (0x400AC774U) /**< \brief (UOTGHS) Host DMA Channel Address Register (n = 7) */ +#define REG_UOTGHS_HSTDMACONTROL7 (0x400AC778U) /**< \brief (UOTGHS) Host DMA Channel Control Register (n = 7) */ +#define REG_UOTGHS_HSTDMASTATUS7 (0x400AC77CU) /**< \brief (UOTGHS) Host DMA Channel Status Register (n = 7) */ +#define REG_UOTGHS_CTRL (0x400AC800U) /**< \brief (UOTGHS) General Control Register */ +#define REG_UOTGHS_SR (0x400AC804U) /**< \brief (UOTGHS) General Status Register */ +#define REG_UOTGHS_SCR (0x400AC808U) /**< \brief (UOTGHS) General Status Clear Register */ +#define REG_UOTGHS_SFR (0x400AC80CU) /**< \brief (UOTGHS) General Status Set Register */ +#define REG_UOTGHS_FSM (0x400AC82CU) /**< \brief (UOTGHS) General Finite State Machine Register */ +#else +#define REG_UOTGHS_DEVCTRL (*(RwReg*)0x400AC000U) /**< \brief (UOTGHS) Device General Control Register */ +#define REG_UOTGHS_DEVISR (*(RoReg*)0x400AC004U) /**< \brief (UOTGHS) Device Global Interrupt Status Register */ +#define REG_UOTGHS_DEVICR (*(WoReg*)0x400AC008U) /**< \brief (UOTGHS) Device Global Interrupt Clear Register */ +#define REG_UOTGHS_DEVIFR (*(WoReg*)0x400AC00CU) /**< \brief (UOTGHS) Device Global Interrupt Set Register */ +#define REG_UOTGHS_DEVIMR (*(RoReg*)0x400AC010U) /**< \brief (UOTGHS) Device Global Interrupt Mask Register */ +#define REG_UOTGHS_DEVIDR (*(WoReg*)0x400AC014U) /**< \brief (UOTGHS) Device Global Interrupt Disable Register */ +#define REG_UOTGHS_DEVIER (*(WoReg*)0x400AC018U) /**< \brief (UOTGHS) Device Global Interrupt Enable Register */ +#define REG_UOTGHS_DEVEPT (*(RwReg*)0x400AC01CU) /**< \brief (UOTGHS) Device Endpoint Register */ +#define REG_UOTGHS_DEVFNUM (*(RoReg*)0x400AC020U) /**< \brief (UOTGHS) Device Frame Number Register */ +#define REG_UOTGHS_DEVEPTCFG (*(RwReg*)0x400AC100U) /**< \brief (UOTGHS) Device Endpoint Configuration Register (n = 0) */ +#define REG_UOTGHS_DEVEPTISR (*(RoReg*)0x400AC130U) /**< \brief (UOTGHS) Device Endpoint Status Register (n = 0) */ +#define REG_UOTGHS_DEVEPTICR (*(WoReg*)0x400AC160U) /**< \brief (UOTGHS) Device Endpoint Clear Register (n = 0) */ +#define REG_UOTGHS_DEVEPTIFR (*(WoReg*)0x400AC190U) /**< \brief (UOTGHS) Device Endpoint Set Register (n = 0) */ +#define REG_UOTGHS_DEVEPTIMR (*(RoReg*)0x400AC1C0U) /**< \brief (UOTGHS) Device Endpoint Mask Register (n = 0) */ +#define REG_UOTGHS_DEVEPTIER (*(WoReg*)0x400AC1F0U) /**< \brief (UOTGHS) Device Endpoint Enable Register (n = 0) */ +#define REG_UOTGHS_DEVEPTIDR (*(WoReg*)0x400AC220U) /**< \brief (UOTGHS) Device Endpoint Disable Register (n = 0) */ +#define REG_UOTGHS_DEVDMANXTDSC1 (*(RwReg*)0x400AC310U) /**< \brief (UOTGHS) Device DMA Channel Next Descriptor Address Register (n = 1) */ +#define REG_UOTGHS_DEVDMAADDRESS1 (*(RwReg*)0x400AC314U) /**< \brief (UOTGHS) Device DMA Channel Address Register (n = 1) */ +#define REG_UOTGHS_DEVDMACONTROL1 (*(RwReg*)0x400AC318U) /**< \brief (UOTGHS) Device DMA Channel Control Register (n = 1) */ +#define REG_UOTGHS_DEVDMASTATUS1 (*(RwReg*)0x400AC31CU) /**< \brief (UOTGHS) Device DMA Channel Status Register (n = 1) */ +#define REG_UOTGHS_DEVDMANXTDSC2 (*(RwReg*)0x400AC320U) /**< \brief (UOTGHS) Device DMA Channel Next Descriptor Address Register (n = 2) */ +#define REG_UOTGHS_DEVDMAADDRESS2 (*(RwReg*)0x400AC324U) /**< \brief (UOTGHS) Device DMA Channel Address Register (n = 2) */ +#define REG_UOTGHS_DEVDMACONTROL2 (*(RwReg*)0x400AC328U) /**< \brief (UOTGHS) Device DMA Channel Control Register (n = 2) */ +#define REG_UOTGHS_DEVDMASTATUS2 (*(RwReg*)0x400AC32CU) /**< \brief (UOTGHS) Device DMA Channel Status Register (n = 2) */ +#define REG_UOTGHS_DEVDMANXTDSC3 (*(RwReg*)0x400AC330U) /**< \brief (UOTGHS) Device DMA Channel Next Descriptor Address Register (n = 3) */ +#define REG_UOTGHS_DEVDMAADDRESS3 (*(RwReg*)0x400AC334U) /**< \brief (UOTGHS) Device DMA Channel Address Register (n = 3) */ +#define REG_UOTGHS_DEVDMACONTROL3 (*(RwReg*)0x400AC338U) /**< \brief (UOTGHS) Device DMA Channel Control Register (n = 3) */ +#define REG_UOTGHS_DEVDMASTATUS3 (*(RwReg*)0x400AC33CU) /**< \brief (UOTGHS) Device DMA Channel Status Register (n = 3) */ +#define REG_UOTGHS_DEVDMANXTDSC4 (*(RwReg*)0x400AC340U) /**< \brief (UOTGHS) Device DMA Channel Next Descriptor Address Register (n = 4) */ +#define REG_UOTGHS_DEVDMAADDRESS4 (*(RwReg*)0x400AC344U) /**< \brief (UOTGHS) Device DMA Channel Address Register (n = 4) */ +#define REG_UOTGHS_DEVDMACONTROL4 (*(RwReg*)0x400AC348U) /**< \brief (UOTGHS) Device DMA Channel Control Register (n = 4) */ +#define REG_UOTGHS_DEVDMASTATUS4 (*(RwReg*)0x400AC34CU) /**< \brief (UOTGHS) Device DMA Channel Status Register (n = 4) */ +#define REG_UOTGHS_DEVDMANXTDSC5 (*(RwReg*)0x400AC350U) /**< \brief (UOTGHS) Device DMA Channel Next Descriptor Address Register (n = 5) */ +#define REG_UOTGHS_DEVDMAADDRESS5 (*(RwReg*)0x400AC354U) /**< \brief (UOTGHS) Device DMA Channel Address Register (n = 5) */ +#define REG_UOTGHS_DEVDMACONTROL5 (*(RwReg*)0x400AC358U) /**< \brief (UOTGHS) Device DMA Channel Control Register (n = 5) */ +#define REG_UOTGHS_DEVDMASTATUS5 (*(RwReg*)0x400AC35CU) /**< \brief (UOTGHS) Device DMA Channel Status Register (n = 5) */ +#define REG_UOTGHS_DEVDMANXTDSC6 (*(RwReg*)0x400AC360U) /**< \brief (UOTGHS) Device DMA Channel Next Descriptor Address Register (n = 6) */ +#define REG_UOTGHS_DEVDMAADDRESS6 (*(RwReg*)0x400AC364U) /**< \brief (UOTGHS) Device DMA Channel Address Register (n = 6) */ +#define REG_UOTGHS_DEVDMACONTROL6 (*(RwReg*)0x400AC368U) /**< \brief (UOTGHS) Device DMA Channel Control Register (n = 6) */ +#define REG_UOTGHS_DEVDMASTATUS6 (*(RwReg*)0x400AC36CU) /**< \brief (UOTGHS) Device DMA Channel Status Register (n = 6) */ +#define REG_UOTGHS_DEVDMANXTDSC7 (*(RwReg*)0x400AC370U) /**< \brief (UOTGHS) Device DMA Channel Next Descriptor Address Register (n = 7) */ +#define REG_UOTGHS_DEVDMAADDRESS7 (*(RwReg*)0x400AC374U) /**< \brief (UOTGHS) Device DMA Channel Address Register (n = 7) */ +#define REG_UOTGHS_DEVDMACONTROL7 (*(RwReg*)0x400AC378U) /**< \brief (UOTGHS) Device DMA Channel Control Register (n = 7) */ +#define REG_UOTGHS_DEVDMASTATUS7 (*(RwReg*)0x400AC37CU) /**< \brief (UOTGHS) Device DMA Channel Status Register (n = 7) */ +#define REG_UOTGHS_HSTCTRL (*(RwReg*)0x400AC400U) /**< \brief (UOTGHS) Host General Control Register */ +#define REG_UOTGHS_HSTISR (*(RoReg*)0x400AC404U) /**< \brief (UOTGHS) Host Global Interrupt Status Register */ +#define REG_UOTGHS_HSTICR (*(WoReg*)0x400AC408U) /**< \brief (UOTGHS) Host Global Interrupt Clear Register */ +#define REG_UOTGHS_HSTIFR (*(WoReg*)0x400AC40CU) /**< \brief (UOTGHS) Host Global Interrupt Set Register */ +#define REG_UOTGHS_HSTIMR (*(RoReg*)0x400AC410U) /**< \brief (UOTGHS) Host Global Interrupt Mask Register */ +#define REG_UOTGHS_HSTIDR (*(WoReg*)0x400AC414U) /**< \brief (UOTGHS) Host Global Interrupt Disable Register */ +#define REG_UOTGHS_HSTIER (*(WoReg*)0x400AC418U) /**< \brief (UOTGHS) Host Global Interrupt Enable Register */ +#define REG_UOTGHS_HSTPIP (*(RwReg*)0x400AC41CU) /**< \brief (UOTGHS) Host Pipe Register */ +#define REG_UOTGHS_HSTFNUM (*(RwReg*)0x400AC420U) /**< \brief (UOTGHS) Host Frame Number Register */ +#define REG_UOTGHS_HSTADDR1 (*(RwReg*)0x400AC424U) /**< \brief (UOTGHS) Host Address 1 Register */ +#define REG_UOTGHS_HSTADDR2 (*(RwReg*)0x400AC428U) /**< \brief (UOTGHS) Host Address 2 Register */ +#define REG_UOTGHS_HSTADDR3 (*(RwReg*)0x400AC42CU) /**< \brief (UOTGHS) Host Address 3 Register */ +#define REG_UOTGHS_HSTPIPCFG (*(RwReg*)0x400AC500U) /**< \brief (UOTGHS) Host Pipe Configuration Register (n = 0) */ +#define REG_UOTGHS_HSTPIPISR (*(RoReg*)0x400AC530U) /**< \brief (UOTGHS) Host Pipe Status Register (n = 0) */ +#define REG_UOTGHS_HSTPIPICR (*(WoReg*)0x400AC560U) /**< \brief (UOTGHS) Host Pipe Clear Register (n = 0) */ +#define REG_UOTGHS_HSTPIPIFR (*(WoReg*)0x400AC590U) /**< \brief (UOTGHS) Host Pipe Set Register (n = 0) */ +#define REG_UOTGHS_HSTPIPIMR (*(RoReg*)0x400AC5C0U) /**< \brief (UOTGHS) Host Pipe Mask Register (n = 0) */ +#define REG_UOTGHS_HSTPIPIER (*(WoReg*)0x400AC5F0U) /**< \brief (UOTGHS) Host Pipe Enable Register (n = 0) */ +#define REG_UOTGHS_HSTPIPIDR (*(WoReg*)0x400AC620U) /**< \brief (UOTGHS) Host Pipe Disable Register (n = 0) */ +#define REG_UOTGHS_HSTPIPINRQ (*(RwReg*)0x400AC650U) /**< \brief (UOTGHS) Host Pipe IN Request Register (n = 0) */ +#define REG_UOTGHS_HSTPIPERR (*(RwReg*)0x400AC680U) /**< \brief (UOTGHS) Host Pipe Error Register (n = 0) */ +#define REG_UOTGHS_HSTDMANXTDSC1 (*(RwReg*)0x400AC710U) /**< \brief (UOTGHS) Host DMA Channel Next Descriptor Address Register (n = 1) */ +#define REG_UOTGHS_HSTDMAADDRESS1 (*(RwReg*)0x400AC714U) /**< \brief (UOTGHS) Host DMA Channel Address Register (n = 1) */ +#define REG_UOTGHS_HSTDMACONTROL1 (*(RwReg*)0x400AC718U) /**< \brief (UOTGHS) Host DMA Channel Control Register (n = 1) */ +#define REG_UOTGHS_HSTDMASTATUS1 (*(RwReg*)0x400AC71CU) /**< \brief (UOTGHS) Host DMA Channel Status Register (n = 1) */ +#define REG_UOTGHS_HSTDMANXTDSC2 (*(RwReg*)0x400AC720U) /**< \brief (UOTGHS) Host DMA Channel Next Descriptor Address Register (n = 2) */ +#define REG_UOTGHS_HSTDMAADDRESS2 (*(RwReg*)0x400AC724U) /**< \brief (UOTGHS) Host DMA Channel Address Register (n = 2) */ +#define REG_UOTGHS_HSTDMACONTROL2 (*(RwReg*)0x400AC728U) /**< \brief (UOTGHS) Host DMA Channel Control Register (n = 2) */ +#define REG_UOTGHS_HSTDMASTATUS2 (*(RwReg*)0x400AC72CU) /**< \brief (UOTGHS) Host DMA Channel Status Register (n = 2) */ +#define REG_UOTGHS_HSTDMANXTDSC3 (*(RwReg*)0x400AC730U) /**< \brief (UOTGHS) Host DMA Channel Next Descriptor Address Register (n = 3) */ +#define REG_UOTGHS_HSTDMAADDRESS3 (*(RwReg*)0x400AC734U) /**< \brief (UOTGHS) Host DMA Channel Address Register (n = 3) */ +#define REG_UOTGHS_HSTDMACONTROL3 (*(RwReg*)0x400AC738U) /**< \brief (UOTGHS) Host DMA Channel Control Register (n = 3) */ +#define REG_UOTGHS_HSTDMASTATUS3 (*(RwReg*)0x400AC73CU) /**< \brief (UOTGHS) Host DMA Channel Status Register (n = 3) */ +#define REG_UOTGHS_HSTDMANXTDSC4 (*(RwReg*)0x400AC740U) /**< \brief (UOTGHS) Host DMA Channel Next Descriptor Address Register (n = 4) */ +#define REG_UOTGHS_HSTDMAADDRESS4 (*(RwReg*)0x400AC744U) /**< \brief (UOTGHS) Host DMA Channel Address Register (n = 4) */ +#define REG_UOTGHS_HSTDMACONTROL4 (*(RwReg*)0x400AC748U) /**< \brief (UOTGHS) Host DMA Channel Control Register (n = 4) */ +#define REG_UOTGHS_HSTDMASTATUS4 (*(RwReg*)0x400AC74CU) /**< \brief (UOTGHS) Host DMA Channel Status Register (n = 4) */ +#define REG_UOTGHS_HSTDMANXTDSC5 (*(RwReg*)0x400AC750U) /**< \brief (UOTGHS) Host DMA Channel Next Descriptor Address Register (n = 5) */ +#define REG_UOTGHS_HSTDMAADDRESS5 (*(RwReg*)0x400AC754U) /**< \brief (UOTGHS) Host DMA Channel Address Register (n = 5) */ +#define REG_UOTGHS_HSTDMACONTROL5 (*(RwReg*)0x400AC758U) /**< \brief (UOTGHS) Host DMA Channel Control Register (n = 5) */ +#define REG_UOTGHS_HSTDMASTATUS5 (*(RwReg*)0x400AC75CU) /**< \brief (UOTGHS) Host DMA Channel Status Register (n = 5) */ +#define REG_UOTGHS_HSTDMANXTDSC6 (*(RwReg*)0x400AC760U) /**< \brief (UOTGHS) Host DMA Channel Next Descriptor Address Register (n = 6) */ +#define REG_UOTGHS_HSTDMAADDRESS6 (*(RwReg*)0x400AC764U) /**< \brief (UOTGHS) Host DMA Channel Address Register (n = 6) */ +#define REG_UOTGHS_HSTDMACONTROL6 (*(RwReg*)0x400AC768U) /**< \brief (UOTGHS) Host DMA Channel Control Register (n = 6) */ +#define REG_UOTGHS_HSTDMASTATUS6 (*(RwReg*)0x400AC76CU) /**< \brief (UOTGHS) Host DMA Channel Status Register (n = 6) */ +#define REG_UOTGHS_HSTDMANXTDSC7 (*(RwReg*)0x400AC770U) /**< \brief (UOTGHS) Host DMA Channel Next Descriptor Address Register (n = 7) */ +#define REG_UOTGHS_HSTDMAADDRESS7 (*(RwReg*)0x400AC774U) /**< \brief (UOTGHS) Host DMA Channel Address Register (n = 7) */ +#define REG_UOTGHS_HSTDMACONTROL7 (*(RwReg*)0x400AC778U) /**< \brief (UOTGHS) Host DMA Channel Control Register (n = 7) */ +#define REG_UOTGHS_HSTDMASTATUS7 (*(RwReg*)0x400AC77CU) /**< \brief (UOTGHS) Host DMA Channel Status Register (n = 7) */ +#define REG_UOTGHS_CTRL (*(RwReg*)0x400AC800U) /**< \brief (UOTGHS) General Control Register */ +#define REG_UOTGHS_SR (*(RoReg*)0x400AC804U) /**< \brief (UOTGHS) General Status Register */ +#define REG_UOTGHS_SCR (*(WoReg*)0x400AC808U) /**< \brief (UOTGHS) General Status Clear Register */ +#define REG_UOTGHS_SFR (*(WoReg*)0x400AC80CU) /**< \brief (UOTGHS) General Status Set Register */ +#define REG_UOTGHS_FSM (*(RoReg*)0x400AC82CU) /**< \brief (UOTGHS) General Finite State Machine Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_UOTGHS_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_usart0.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_usart0.h new file mode 100644 index 000000000..5f9d8b2b1 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_usart0.h @@ -0,0 +1,96 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_USART0_INSTANCE_ +#define _SAM3XA_USART0_INSTANCE_ + +/* ========== Register definition for USART0 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_USART0_CR (0x40098000U) /**< \brief (USART0) Control Register */ +#define REG_USART0_MR (0x40098004U) /**< \brief (USART0) Mode Register */ +#define REG_USART0_IER (0x40098008U) /**< \brief (USART0) Interrupt Enable Register */ +#define REG_USART0_IDR (0x4009800CU) /**< \brief (USART0) Interrupt Disable Register */ +#define REG_USART0_IMR (0x40098010U) /**< \brief (USART0) Interrupt Mask Register */ +#define REG_USART0_CSR (0x40098014U) /**< \brief (USART0) Channel Status Register */ +#define REG_USART0_RHR (0x40098018U) /**< \brief (USART0) Receiver Holding Register */ +#define REG_USART0_THR (0x4009801CU) /**< \brief (USART0) Transmitter Holding Register */ +#define REG_USART0_BRGR (0x40098020U) /**< \brief (USART0) Baud Rate Generator Register */ +#define REG_USART0_RTOR (0x40098024U) /**< \brief (USART0) Receiver Time-out Register */ +#define REG_USART0_TTGR (0x40098028U) /**< \brief (USART0) Transmitter Timeguard Register */ +#define REG_USART0_FIDI (0x40098040U) /**< \brief (USART0) FI DI Ratio Register */ +#define REG_USART0_NER (0x40098044U) /**< \brief (USART0) Number of Errors Register */ +#define REG_USART0_IF (0x4009804CU) /**< \brief (USART0) IrDA Filter Register */ +#define REG_USART0_MAN (0x40098050U) /**< \brief (USART0) Manchester Encoder Decoder Register */ +#define REG_USART0_LINMR (0x40098054U) /**< \brief (USART0) LIN Mode Register */ +#define REG_USART0_LINIR (0x40098058U) /**< \brief (USART0) LIN Identifier Register */ +#define REG_USART0_WPMR (0x400980E4U) /**< \brief (USART0) Write Protect Mode Register */ +#define REG_USART0_WPSR (0x400980E8U) /**< \brief (USART0) Write Protect Status Register */ +#define REG_USART0_RPR (0x40098100U) /**< \brief (USART0) Receive Pointer Register */ +#define REG_USART0_RCR (0x40098104U) /**< \brief (USART0) Receive Counter Register */ +#define REG_USART0_TPR (0x40098108U) /**< \brief (USART0) Transmit Pointer Register */ +#define REG_USART0_TCR (0x4009810CU) /**< \brief (USART0) Transmit Counter Register */ +#define REG_USART0_RNPR (0x40098110U) /**< \brief (USART0) Receive Next Pointer Register */ +#define REG_USART0_RNCR (0x40098114U) /**< \brief (USART0) Receive Next Counter Register */ +#define REG_USART0_TNPR (0x40098118U) /**< \brief (USART0) Transmit Next Pointer Register */ +#define REG_USART0_TNCR (0x4009811CU) /**< \brief (USART0) Transmit Next Counter Register */ +#define REG_USART0_PTCR (0x40098120U) /**< \brief (USART0) Transfer Control Register */ +#define REG_USART0_PTSR (0x40098124U) /**< \brief (USART0) Transfer Status Register */ +#else +#define REG_USART0_CR (*(WoReg*)0x40098000U) /**< \brief (USART0) Control Register */ +#define REG_USART0_MR (*(RwReg*)0x40098004U) /**< \brief (USART0) Mode Register */ +#define REG_USART0_IER (*(WoReg*)0x40098008U) /**< \brief (USART0) Interrupt Enable Register */ +#define REG_USART0_IDR (*(WoReg*)0x4009800CU) /**< \brief (USART0) Interrupt Disable Register */ +#define REG_USART0_IMR (*(RoReg*)0x40098010U) /**< \brief (USART0) Interrupt Mask Register */ +#define REG_USART0_CSR (*(RoReg*)0x40098014U) /**< \brief (USART0) Channel Status Register */ +#define REG_USART0_RHR (*(RoReg*)0x40098018U) /**< \brief (USART0) Receiver Holding Register */ +#define REG_USART0_THR (*(WoReg*)0x4009801CU) /**< \brief (USART0) Transmitter Holding Register */ +#define REG_USART0_BRGR (*(RwReg*)0x40098020U) /**< \brief (USART0) Baud Rate Generator Register */ +#define REG_USART0_RTOR (*(RwReg*)0x40098024U) /**< \brief (USART0) Receiver Time-out Register */ +#define REG_USART0_TTGR (*(RwReg*)0x40098028U) /**< \brief (USART0) Transmitter Timeguard Register */ +#define REG_USART0_FIDI (*(RwReg*)0x40098040U) /**< \brief (USART0) FI DI Ratio Register */ +#define REG_USART0_NER (*(RoReg*)0x40098044U) /**< \brief (USART0) Number of Errors Register */ +#define REG_USART0_IF (*(RwReg*)0x4009804CU) /**< \brief (USART0) IrDA Filter Register */ +#define REG_USART0_MAN (*(RwReg*)0x40098050U) /**< \brief (USART0) Manchester Encoder Decoder Register */ +#define REG_USART0_LINMR (*(RwReg*)0x40098054U) /**< \brief (USART0) LIN Mode Register */ +#define REG_USART0_LINIR (*(RwReg*)0x40098058U) /**< \brief (USART0) LIN Identifier Register */ +#define REG_USART0_WPMR (*(RwReg*)0x400980E4U) /**< \brief (USART0) Write Protect Mode Register */ +#define REG_USART0_WPSR (*(RoReg*)0x400980E8U) /**< \brief (USART0) Write Protect Status Register */ +#define REG_USART0_RPR (*(RwReg*)0x40098100U) /**< \brief (USART0) Receive Pointer Register */ +#define REG_USART0_RCR (*(RwReg*)0x40098104U) /**< \brief (USART0) Receive Counter Register */ +#define REG_USART0_TPR (*(RwReg*)0x40098108U) /**< \brief (USART0) Transmit Pointer Register */ +#define REG_USART0_TCR (*(RwReg*)0x4009810CU) /**< \brief (USART0) Transmit Counter Register */ +#define REG_USART0_RNPR (*(RwReg*)0x40098110U) /**< \brief (USART0) Receive Next Pointer Register */ +#define REG_USART0_RNCR (*(RwReg*)0x40098114U) /**< \brief (USART0) Receive Next Counter Register */ +#define REG_USART0_TNPR (*(RwReg*)0x40098118U) /**< \brief (USART0) Transmit Next Pointer Register */ +#define REG_USART0_TNCR (*(RwReg*)0x4009811CU) /**< \brief (USART0) Transmit Next Counter Register */ +#define REG_USART0_PTCR (*(WoReg*)0x40098120U) /**< \brief (USART0) Transfer Control Register */ +#define REG_USART0_PTSR (*(RoReg*)0x40098124U) /**< \brief (USART0) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_USART0_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_usart1.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_usart1.h new file mode 100644 index 000000000..2574dccd1 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_usart1.h @@ -0,0 +1,96 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_USART1_INSTANCE_ +#define _SAM3XA_USART1_INSTANCE_ + +/* ========== Register definition for USART1 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_USART1_CR (0x4009C000U) /**< \brief (USART1) Control Register */ +#define REG_USART1_MR (0x4009C004U) /**< \brief (USART1) Mode Register */ +#define REG_USART1_IER (0x4009C008U) /**< \brief (USART1) Interrupt Enable Register */ +#define REG_USART1_IDR (0x4009C00CU) /**< \brief (USART1) Interrupt Disable Register */ +#define REG_USART1_IMR (0x4009C010U) /**< \brief (USART1) Interrupt Mask Register */ +#define REG_USART1_CSR (0x4009C014U) /**< \brief (USART1) Channel Status Register */ +#define REG_USART1_RHR (0x4009C018U) /**< \brief (USART1) Receiver Holding Register */ +#define REG_USART1_THR (0x4009C01CU) /**< \brief (USART1) Transmitter Holding Register */ +#define REG_USART1_BRGR (0x4009C020U) /**< \brief (USART1) Baud Rate Generator Register */ +#define REG_USART1_RTOR (0x4009C024U) /**< \brief (USART1) Receiver Time-out Register */ +#define REG_USART1_TTGR (0x4009C028U) /**< \brief (USART1) Transmitter Timeguard Register */ +#define REG_USART1_FIDI (0x4009C040U) /**< \brief (USART1) FI DI Ratio Register */ +#define REG_USART1_NER (0x4009C044U) /**< \brief (USART1) Number of Errors Register */ +#define REG_USART1_IF (0x4009C04CU) /**< \brief (USART1) IrDA Filter Register */ +#define REG_USART1_MAN (0x4009C050U) /**< \brief (USART1) Manchester Encoder Decoder Register */ +#define REG_USART1_LINMR (0x4009C054U) /**< \brief (USART1) LIN Mode Register */ +#define REG_USART1_LINIR (0x4009C058U) /**< \brief (USART1) LIN Identifier Register */ +#define REG_USART1_WPMR (0x4009C0E4U) /**< \brief (USART1) Write Protect Mode Register */ +#define REG_USART1_WPSR (0x4009C0E8U) /**< \brief (USART1) Write Protect Status Register */ +#define REG_USART1_RPR (0x4009C100U) /**< \brief (USART1) Receive Pointer Register */ +#define REG_USART1_RCR (0x4009C104U) /**< \brief (USART1) Receive Counter Register */ +#define REG_USART1_TPR (0x4009C108U) /**< \brief (USART1) Transmit Pointer Register */ +#define REG_USART1_TCR (0x4009C10CU) /**< \brief (USART1) Transmit Counter Register */ +#define REG_USART1_RNPR (0x4009C110U) /**< \brief (USART1) Receive Next Pointer Register */ +#define REG_USART1_RNCR (0x4009C114U) /**< \brief (USART1) Receive Next Counter Register */ +#define REG_USART1_TNPR (0x4009C118U) /**< \brief (USART1) Transmit Next Pointer Register */ +#define REG_USART1_TNCR (0x4009C11CU) /**< \brief (USART1) Transmit Next Counter Register */ +#define REG_USART1_PTCR (0x4009C120U) /**< \brief (USART1) Transfer Control Register */ +#define REG_USART1_PTSR (0x4009C124U) /**< \brief (USART1) Transfer Status Register */ +#else +#define REG_USART1_CR (*(WoReg*)0x4009C000U) /**< \brief (USART1) Control Register */ +#define REG_USART1_MR (*(RwReg*)0x4009C004U) /**< \brief (USART1) Mode Register */ +#define REG_USART1_IER (*(WoReg*)0x4009C008U) /**< \brief (USART1) Interrupt Enable Register */ +#define REG_USART1_IDR (*(WoReg*)0x4009C00CU) /**< \brief (USART1) Interrupt Disable Register */ +#define REG_USART1_IMR (*(RoReg*)0x4009C010U) /**< \brief (USART1) Interrupt Mask Register */ +#define REG_USART1_CSR (*(RoReg*)0x4009C014U) /**< \brief (USART1) Channel Status Register */ +#define REG_USART1_RHR (*(RoReg*)0x4009C018U) /**< \brief (USART1) Receiver Holding Register */ +#define REG_USART1_THR (*(WoReg*)0x4009C01CU) /**< \brief (USART1) Transmitter Holding Register */ +#define REG_USART1_BRGR (*(RwReg*)0x4009C020U) /**< \brief (USART1) Baud Rate Generator Register */ +#define REG_USART1_RTOR (*(RwReg*)0x4009C024U) /**< \brief (USART1) Receiver Time-out Register */ +#define REG_USART1_TTGR (*(RwReg*)0x4009C028U) /**< \brief (USART1) Transmitter Timeguard Register */ +#define REG_USART1_FIDI (*(RwReg*)0x4009C040U) /**< \brief (USART1) FI DI Ratio Register */ +#define REG_USART1_NER (*(RoReg*)0x4009C044U) /**< \brief (USART1) Number of Errors Register */ +#define REG_USART1_IF (*(RwReg*)0x4009C04CU) /**< \brief (USART1) IrDA Filter Register */ +#define REG_USART1_MAN (*(RwReg*)0x4009C050U) /**< \brief (USART1) Manchester Encoder Decoder Register */ +#define REG_USART1_LINMR (*(RwReg*)0x4009C054U) /**< \brief (USART1) LIN Mode Register */ +#define REG_USART1_LINIR (*(RwReg*)0x4009C058U) /**< \brief (USART1) LIN Identifier Register */ +#define REG_USART1_WPMR (*(RwReg*)0x4009C0E4U) /**< \brief (USART1) Write Protect Mode Register */ +#define REG_USART1_WPSR (*(RoReg*)0x4009C0E8U) /**< \brief (USART1) Write Protect Status Register */ +#define REG_USART1_RPR (*(RwReg*)0x4009C100U) /**< \brief (USART1) Receive Pointer Register */ +#define REG_USART1_RCR (*(RwReg*)0x4009C104U) /**< \brief (USART1) Receive Counter Register */ +#define REG_USART1_TPR (*(RwReg*)0x4009C108U) /**< \brief (USART1) Transmit Pointer Register */ +#define REG_USART1_TCR (*(RwReg*)0x4009C10CU) /**< \brief (USART1) Transmit Counter Register */ +#define REG_USART1_RNPR (*(RwReg*)0x4009C110U) /**< \brief (USART1) Receive Next Pointer Register */ +#define REG_USART1_RNCR (*(RwReg*)0x4009C114U) /**< \brief (USART1) Receive Next Counter Register */ +#define REG_USART1_TNPR (*(RwReg*)0x4009C118U) /**< \brief (USART1) Transmit Next Pointer Register */ +#define REG_USART1_TNCR (*(RwReg*)0x4009C11CU) /**< \brief (USART1) Transmit Next Counter Register */ +#define REG_USART1_PTCR (*(WoReg*)0x4009C120U) /**< \brief (USART1) Transfer Control Register */ +#define REG_USART1_PTSR (*(RoReg*)0x4009C124U) /**< \brief (USART1) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_USART1_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_usart2.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_usart2.h new file mode 100644 index 000000000..cff7d4bdd --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_usart2.h @@ -0,0 +1,96 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_USART2_INSTANCE_ +#define _SAM3XA_USART2_INSTANCE_ + +/* ========== Register definition for USART2 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_USART2_CR (0x400A0000U) /**< \brief (USART2) Control Register */ +#define REG_USART2_MR (0x400A0004U) /**< \brief (USART2) Mode Register */ +#define REG_USART2_IER (0x400A0008U) /**< \brief (USART2) Interrupt Enable Register */ +#define REG_USART2_IDR (0x400A000CU) /**< \brief (USART2) Interrupt Disable Register */ +#define REG_USART2_IMR (0x400A0010U) /**< \brief (USART2) Interrupt Mask Register */ +#define REG_USART2_CSR (0x400A0014U) /**< \brief (USART2) Channel Status Register */ +#define REG_USART2_RHR (0x400A0018U) /**< \brief (USART2) Receiver Holding Register */ +#define REG_USART2_THR (0x400A001CU) /**< \brief (USART2) Transmitter Holding Register */ +#define REG_USART2_BRGR (0x400A0020U) /**< \brief (USART2) Baud Rate Generator Register */ +#define REG_USART2_RTOR (0x400A0024U) /**< \brief (USART2) Receiver Time-out Register */ +#define REG_USART2_TTGR (0x400A0028U) /**< \brief (USART2) Transmitter Timeguard Register */ +#define REG_USART2_FIDI (0x400A0040U) /**< \brief (USART2) FI DI Ratio Register */ +#define REG_USART2_NER (0x400A0044U) /**< \brief (USART2) Number of Errors Register */ +#define REG_USART2_IF (0x400A004CU) /**< \brief (USART2) IrDA Filter Register */ +#define REG_USART2_MAN (0x400A0050U) /**< \brief (USART2) Manchester Encoder Decoder Register */ +#define REG_USART2_LINMR (0x400A0054U) /**< \brief (USART2) LIN Mode Register */ +#define REG_USART2_LINIR (0x400A0058U) /**< \brief (USART2) LIN Identifier Register */ +#define REG_USART2_WPMR (0x400A00E4U) /**< \brief (USART2) Write Protect Mode Register */ +#define REG_USART2_WPSR (0x400A00E8U) /**< \brief (USART2) Write Protect Status Register */ +#define REG_USART2_RPR (0x400A0100U) /**< \brief (USART2) Receive Pointer Register */ +#define REG_USART2_RCR (0x400A0104U) /**< \brief (USART2) Receive Counter Register */ +#define REG_USART2_TPR (0x400A0108U) /**< \brief (USART2) Transmit Pointer Register */ +#define REG_USART2_TCR (0x400A010CU) /**< \brief (USART2) Transmit Counter Register */ +#define REG_USART2_RNPR (0x400A0110U) /**< \brief (USART2) Receive Next Pointer Register */ +#define REG_USART2_RNCR (0x400A0114U) /**< \brief (USART2) Receive Next Counter Register */ +#define REG_USART2_TNPR (0x400A0118U) /**< \brief (USART2) Transmit Next Pointer Register */ +#define REG_USART2_TNCR (0x400A011CU) /**< \brief (USART2) Transmit Next Counter Register */ +#define REG_USART2_PTCR (0x400A0120U) /**< \brief (USART2) Transfer Control Register */ +#define REG_USART2_PTSR (0x400A0124U) /**< \brief (USART2) Transfer Status Register */ +#else +#define REG_USART2_CR (*(WoReg*)0x400A0000U) /**< \brief (USART2) Control Register */ +#define REG_USART2_MR (*(RwReg*)0x400A0004U) /**< \brief (USART2) Mode Register */ +#define REG_USART2_IER (*(WoReg*)0x400A0008U) /**< \brief (USART2) Interrupt Enable Register */ +#define REG_USART2_IDR (*(WoReg*)0x400A000CU) /**< \brief (USART2) Interrupt Disable Register */ +#define REG_USART2_IMR (*(RoReg*)0x400A0010U) /**< \brief (USART2) Interrupt Mask Register */ +#define REG_USART2_CSR (*(RoReg*)0x400A0014U) /**< \brief (USART2) Channel Status Register */ +#define REG_USART2_RHR (*(RoReg*)0x400A0018U) /**< \brief (USART2) Receiver Holding Register */ +#define REG_USART2_THR (*(WoReg*)0x400A001CU) /**< \brief (USART2) Transmitter Holding Register */ +#define REG_USART2_BRGR (*(RwReg*)0x400A0020U) /**< \brief (USART2) Baud Rate Generator Register */ +#define REG_USART2_RTOR (*(RwReg*)0x400A0024U) /**< \brief (USART2) Receiver Time-out Register */ +#define REG_USART2_TTGR (*(RwReg*)0x400A0028U) /**< \brief (USART2) Transmitter Timeguard Register */ +#define REG_USART2_FIDI (*(RwReg*)0x400A0040U) /**< \brief (USART2) FI DI Ratio Register */ +#define REG_USART2_NER (*(RoReg*)0x400A0044U) /**< \brief (USART2) Number of Errors Register */ +#define REG_USART2_IF (*(RwReg*)0x400A004CU) /**< \brief (USART2) IrDA Filter Register */ +#define REG_USART2_MAN (*(RwReg*)0x400A0050U) /**< \brief (USART2) Manchester Encoder Decoder Register */ +#define REG_USART2_LINMR (*(RwReg*)0x400A0054U) /**< \brief (USART2) LIN Mode Register */ +#define REG_USART2_LINIR (*(RwReg*)0x400A0058U) /**< \brief (USART2) LIN Identifier Register */ +#define REG_USART2_WPMR (*(RwReg*)0x400A00E4U) /**< \brief (USART2) Write Protect Mode Register */ +#define REG_USART2_WPSR (*(RoReg*)0x400A00E8U) /**< \brief (USART2) Write Protect Status Register */ +#define REG_USART2_RPR (*(RwReg*)0x400A0100U) /**< \brief (USART2) Receive Pointer Register */ +#define REG_USART2_RCR (*(RwReg*)0x400A0104U) /**< \brief (USART2) Receive Counter Register */ +#define REG_USART2_TPR (*(RwReg*)0x400A0108U) /**< \brief (USART2) Transmit Pointer Register */ +#define REG_USART2_TCR (*(RwReg*)0x400A010CU) /**< \brief (USART2) Transmit Counter Register */ +#define REG_USART2_RNPR (*(RwReg*)0x400A0110U) /**< \brief (USART2) Receive Next Pointer Register */ +#define REG_USART2_RNCR (*(RwReg*)0x400A0114U) /**< \brief (USART2) Receive Next Counter Register */ +#define REG_USART2_TNPR (*(RwReg*)0x400A0118U) /**< \brief (USART2) Transmit Next Pointer Register */ +#define REG_USART2_TNCR (*(RwReg*)0x400A011CU) /**< \brief (USART2) Transmit Next Counter Register */ +#define REG_USART2_PTCR (*(WoReg*)0x400A0120U) /**< \brief (USART2) Transfer Control Register */ +#define REG_USART2_PTSR (*(RoReg*)0x400A0124U) /**< \brief (USART2) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_USART2_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_usart3.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_usart3.h new file mode 100644 index 000000000..357f20fbd --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_usart3.h @@ -0,0 +1,96 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_USART3_INSTANCE_ +#define _SAM3XA_USART3_INSTANCE_ + +/* ========== Register definition for USART3 peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_USART3_CR (0x400A4000U) /**< \brief (USART3) Control Register */ +#define REG_USART3_MR (0x400A4004U) /**< \brief (USART3) Mode Register */ +#define REG_USART3_IER (0x400A4008U) /**< \brief (USART3) Interrupt Enable Register */ +#define REG_USART3_IDR (0x400A400CU) /**< \brief (USART3) Interrupt Disable Register */ +#define REG_USART3_IMR (0x400A4010U) /**< \brief (USART3) Interrupt Mask Register */ +#define REG_USART3_CSR (0x400A4014U) /**< \brief (USART3) Channel Status Register */ +#define REG_USART3_RHR (0x400A4018U) /**< \brief (USART3) Receiver Holding Register */ +#define REG_USART3_THR (0x400A401CU) /**< \brief (USART3) Transmitter Holding Register */ +#define REG_USART3_BRGR (0x400A4020U) /**< \brief (USART3) Baud Rate Generator Register */ +#define REG_USART3_RTOR (0x400A4024U) /**< \brief (USART3) Receiver Time-out Register */ +#define REG_USART3_TTGR (0x400A4028U) /**< \brief (USART3) Transmitter Timeguard Register */ +#define REG_USART3_FIDI (0x400A4040U) /**< \brief (USART3) FI DI Ratio Register */ +#define REG_USART3_NER (0x400A4044U) /**< \brief (USART3) Number of Errors Register */ +#define REG_USART3_IF (0x400A404CU) /**< \brief (USART3) IrDA Filter Register */ +#define REG_USART3_MAN (0x400A4050U) /**< \brief (USART3) Manchester Encoder Decoder Register */ +#define REG_USART3_LINMR (0x400A4054U) /**< \brief (USART3) LIN Mode Register */ +#define REG_USART3_LINIR (0x400A4058U) /**< \brief (USART3) LIN Identifier Register */ +#define REG_USART3_WPMR (0x400A40E4U) /**< \brief (USART3) Write Protect Mode Register */ +#define REG_USART3_WPSR (0x400A40E8U) /**< \brief (USART3) Write Protect Status Register */ +#define REG_USART3_RPR (0x400A4100U) /**< \brief (USART3) Receive Pointer Register */ +#define REG_USART3_RCR (0x400A4104U) /**< \brief (USART3) Receive Counter Register */ +#define REG_USART3_TPR (0x400A4108U) /**< \brief (USART3) Transmit Pointer Register */ +#define REG_USART3_TCR (0x400A410CU) /**< \brief (USART3) Transmit Counter Register */ +#define REG_USART3_RNPR (0x400A4110U) /**< \brief (USART3) Receive Next Pointer Register */ +#define REG_USART3_RNCR (0x400A4114U) /**< \brief (USART3) Receive Next Counter Register */ +#define REG_USART3_TNPR (0x400A4118U) /**< \brief (USART3) Transmit Next Pointer Register */ +#define REG_USART3_TNCR (0x400A411CU) /**< \brief (USART3) Transmit Next Counter Register */ +#define REG_USART3_PTCR (0x400A4120U) /**< \brief (USART3) Transfer Control Register */ +#define REG_USART3_PTSR (0x400A4124U) /**< \brief (USART3) Transfer Status Register */ +#else +#define REG_USART3_CR (*(WoReg*)0x400A4000U) /**< \brief (USART3) Control Register */ +#define REG_USART3_MR (*(RwReg*)0x400A4004U) /**< \brief (USART3) Mode Register */ +#define REG_USART3_IER (*(WoReg*)0x400A4008U) /**< \brief (USART3) Interrupt Enable Register */ +#define REG_USART3_IDR (*(WoReg*)0x400A400CU) /**< \brief (USART3) Interrupt Disable Register */ +#define REG_USART3_IMR (*(RoReg*)0x400A4010U) /**< \brief (USART3) Interrupt Mask Register */ +#define REG_USART3_CSR (*(RoReg*)0x400A4014U) /**< \brief (USART3) Channel Status Register */ +#define REG_USART3_RHR (*(RoReg*)0x400A4018U) /**< \brief (USART3) Receiver Holding Register */ +#define REG_USART3_THR (*(WoReg*)0x400A401CU) /**< \brief (USART3) Transmitter Holding Register */ +#define REG_USART3_BRGR (*(RwReg*)0x400A4020U) /**< \brief (USART3) Baud Rate Generator Register */ +#define REG_USART3_RTOR (*(RwReg*)0x400A4024U) /**< \brief (USART3) Receiver Time-out Register */ +#define REG_USART3_TTGR (*(RwReg*)0x400A4028U) /**< \brief (USART3) Transmitter Timeguard Register */ +#define REG_USART3_FIDI (*(RwReg*)0x400A4040U) /**< \brief (USART3) FI DI Ratio Register */ +#define REG_USART3_NER (*(RoReg*)0x400A4044U) /**< \brief (USART3) Number of Errors Register */ +#define REG_USART3_IF (*(RwReg*)0x400A404CU) /**< \brief (USART3) IrDA Filter Register */ +#define REG_USART3_MAN (*(RwReg*)0x400A4050U) /**< \brief (USART3) Manchester Encoder Decoder Register */ +#define REG_USART3_LINMR (*(RwReg*)0x400A4054U) /**< \brief (USART3) LIN Mode Register */ +#define REG_USART3_LINIR (*(RwReg*)0x400A4058U) /**< \brief (USART3) LIN Identifier Register */ +#define REG_USART3_WPMR (*(RwReg*)0x400A40E4U) /**< \brief (USART3) Write Protect Mode Register */ +#define REG_USART3_WPSR (*(RoReg*)0x400A40E8U) /**< \brief (USART3) Write Protect Status Register */ +#define REG_USART3_RPR (*(RwReg*)0x400A4100U) /**< \brief (USART3) Receive Pointer Register */ +#define REG_USART3_RCR (*(RwReg*)0x400A4104U) /**< \brief (USART3) Receive Counter Register */ +#define REG_USART3_TPR (*(RwReg*)0x400A4108U) /**< \brief (USART3) Transmit Pointer Register */ +#define REG_USART3_TCR (*(RwReg*)0x400A410CU) /**< \brief (USART3) Transmit Counter Register */ +#define REG_USART3_RNPR (*(RwReg*)0x400A4110U) /**< \brief (USART3) Receive Next Pointer Register */ +#define REG_USART3_RNCR (*(RwReg*)0x400A4114U) /**< \brief (USART3) Receive Next Counter Register */ +#define REG_USART3_TNPR (*(RwReg*)0x400A4118U) /**< \brief (USART3) Transmit Next Pointer Register */ +#define REG_USART3_TNCR (*(RwReg*)0x400A411CU) /**< \brief (USART3) Transmit Next Counter Register */ +#define REG_USART3_PTCR (*(WoReg*)0x400A4120U) /**< \brief (USART3) Transfer Control Register */ +#define REG_USART3_PTSR (*(RoReg*)0x400A4124U) /**< \brief (USART3) Transfer Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_USART3_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_wdt.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_wdt.h new file mode 100644 index 000000000..e60630056 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/instance/instance_wdt.h @@ -0,0 +1,44 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_WDT_INSTANCE_ +#define _SAM3XA_WDT_INSTANCE_ + +/* ========== Register definition for WDT peripheral ========== */ +#ifdef __ASSEMBLY__ +#define REG_WDT_CR (0x400E1A50U) /**< \brief (WDT) Control Register */ +#define REG_WDT_MR (0x400E1A54U) /**< \brief (WDT) Mode Register */ +#define REG_WDT_SR (0x400E1A58U) /**< \brief (WDT) Status Register */ +#else +#define REG_WDT_CR (*(WoReg*)0x400E1A50U) /**< \brief (WDT) Control Register */ +#define REG_WDT_MR (*(RwReg*)0x400E1A54U) /**< \brief (WDT) Mode Register */ +#define REG_WDT_SR (*(RoReg*)0x400E1A58U) /**< \brief (WDT) Status Register */ +#endif /* __ASSEMBLY__ */ + +#endif /* _SAM3XA_WDT_INSTANCE_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3a2c.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3a2c.h new file mode 100644 index 000000000..233a32c43 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3a2c.h @@ -0,0 +1,338 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3A2C_PIO_ +#define _SAM3A2C_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PB15 (1u << 15) /**< \brief Pin Controlled by PB15 */ +#define PIO_PB16 (1u << 16) /**< \brief Pin Controlled by PB16 */ +#define PIO_PB17 (1u << 17) /**< \brief Pin Controlled by PB17 */ +#define PIO_PB18 (1u << 18) /**< \brief Pin Controlled by PB18 */ +#define PIO_PB19 (1u << 19) /**< \brief Pin Controlled by PB19 */ +#define PIO_PB20 (1u << 20) /**< \brief Pin Controlled by PB20 */ +#define PIO_PB21 (1u << 21) /**< \brief Pin Controlled by PB21 */ +#define PIO_PB22 (1u << 22) /**< \brief Pin Controlled by PB22 */ +#define PIO_PB23 (1u << 23) /**< \brief Pin Controlled by PB23 */ +#define PIO_PB24 (1u << 24) /**< \brief Pin Controlled by PB24 */ +#define PIO_PB25 (1u << 25) /**< \brief Pin Controlled by PB25 */ +#define PIO_PB26 (1u << 26) /**< \brief Pin Controlled by PB26 */ +#define PIO_PB27 (1u << 27) /**< \brief Pin Controlled by PB27 */ +#define PIO_PB28 (1u << 28) /**< \brief Pin Controlled by PB28 */ +#define PIO_PB29 (1u << 29) /**< \brief Pin Controlled by PB29 */ +#define PIO_PB30 (1u << 30) /**< \brief Pin Controlled by PB30 */ +#define PIO_PB31 (1u << 31) /**< \brief Pin Controlled by PB31 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA2X1_AD0 (1u << 2) /**< \brief Adc signal: AD0 */ +#define PIO_PA3X1_AD1 (1u << 3) /**< \brief Adc signal: AD1/WKUP1 */ +#define PIO_PA3X1_WKUP1 (1u << 3) /**< \brief Adc signal: AD1/WKUP1 */ +#define PIO_PB17X1_AD10 (1u << 17) /**< \brief Adc signal: AD10 */ +#define PIO_PB18X1_AD11 (1u << 18) /**< \brief Adc signal: AD11 */ +#define PIO_PB19X1_AD12 (1u << 19) /**< \brief Adc signal: AD12 */ +#define PIO_PB20X1_AD13 (1u << 20) /**< \brief Adc signal: AD13 */ +#define PIO_PB21X1_AD14 (1u << 21) /**< \brief Adc signal: AD14/WKUP13 */ +#define PIO_PB21X1_WKUP13 (1u << 21) /**< \brief Adc signal: AD14/WKUP13 */ +#define PIO_PA4X1_AD2 (1u << 4) /**< \brief Adc signal: AD2 */ +#define PIO_PA6X1_AD3 (1u << 6) /**< \brief Adc signal: AD3 */ +#define PIO_PA22X1_AD4 (1u << 22) /**< \brief Adc signal: AD4 */ +#define PIO_PA23X1_AD5 (1u << 23) /**< \brief Adc signal: AD5 */ +#define PIO_PA24X1_AD6 (1u << 24) /**< \brief Adc signal: AD6 */ +#define PIO_PA16X1_AD7 (1u << 16) /**< \brief Adc signal: AD7 */ +#define PIO_PB12X1_AD8 (1u << 12) /**< \brief Adc signal: AD8 */ +#define PIO_PB13X1_AD9 (1u << 13) /**< \brief Adc signal: AD9 */ +#define PIO_PA11B_ADTRG (1u << 11) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for CAN0 peripheral ========== */ +#define PIO_PA1A_CANRX0 (1u << 1) /**< \brief Can0 signal: CANRX0 */ +#define PIO_PA0A_CANTX0 (1u << 0) /**< \brief Can0 signal: CANTX0 */ +/* ========== Pio definition for CAN1 peripheral ========== */ +#define PIO_PB15A_CANRX1 (1u << 15) /**< \brief Can1 signal: CANRX1 */ +#define PIO_PB14A_CANTX1 (1u << 14) /**< \brief Can1 signal: CANTX1 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB15X1_DAC0 (1u << 15) /**< \brief Dacc signal: DAC0/WKUP12 */ +#define PIO_PB15X1_WKUP12 (1u << 15) /**< \brief Dacc signal: DAC0/WKUP12 */ +#define PIO_PB16X1_DAC1 (1u << 16) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA10B_DATRG (1u << 10) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA20A_MCCDA (1u << 20) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PE20B_MCCDB (1u << 20) /**< \brief Hsmci signal: MCCDB */ +#define PIO_PA19A_MCCK (1u << 19) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA21A_MCDA0 (1u << 21) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA22A_MCDA1 (1u << 22) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA23A_MCDA2 (1u << 23) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA24A_MCDA3 (1u << 24) /**< \brief Hsmci signal: MCDA3 */ +#define PIO_PD0B_MCDA4 (1u << 0) /**< \brief Hsmci signal: MCDA4 */ +#define PIO_PD1B_MCDA5 (1u << 1) /**< \brief Hsmci signal: MCDA5 */ +#define PIO_PD2B_MCDA6 (1u << 2) /**< \brief Hsmci signal: MCDA6 */ +#define PIO_PD3B_MCDA7 (1u << 3) /**< \brief Hsmci signal: MCDA7 */ +#define PIO_PE22B_MCDB0 (1u << 22) /**< \brief Hsmci signal: MCDB0 */ +#define PIO_PE24B_MCDB1 (1u << 24) /**< \brief Hsmci signal: MCDB1 */ +#define PIO_PE26B_MCDB2 (1u << 26) /**< \brief Hsmci signal: MCDB2 */ +#define PIO_PE27B_MCDB3 (1u << 27) /**< \brief Hsmci signal: MCDB3 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA1B_PCK0 (1u << 1) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB22B_PCK0 (1u << 22) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA24B_PCK1 (1u << 24) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA30B_PCK1 (1u << 30) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA28B_PCK2 (1u << 28) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA5B_PWMFI0 (1u << 5) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA3B_PWMFI1 (1u << 3) /**< \brief Pwm signal: PWMFI1 */ +#define PIO_PD6B_PWMFI2 (1u << 6) /**< \brief Pwm signal: PWMFI2 */ +#define PIO_PA8B_PWMH0 (1u << 8) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB12B_PWMH0 (1u << 12) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC3B_PWMH0 (1u << 3) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PE15A_PWMH0 (1u << 15) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB13B_PWMH1 (1u << 13) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC5B_PWMH1 (1u << 5) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PE16A_PWMH1 (1u << 16) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB14B_PWMH2 (1u << 14) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC7B_PWMH2 (1u << 7) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA9B_PWMH3 (1u << 9) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB15B_PWMH3 (1u << 15) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC9B_PWMH3 (1u << 9) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PF3A_PWMH3 (1u << 3) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC20B_PWMH4 (1u << 20) /**< \brief Pwm signal: PWMH4 */ +#define PIO_PE20A_PWMH4 (1u << 20) /**< \brief Pwm signal: PWMH4 */ +#define PIO_PC19B_PWMH5 (1u << 19) /**< \brief Pwm signal: PWMH5 */ +#define PIO_PE22A_PWMH5 (1u << 22) /**< \brief Pwm signal: PWMH5 */ +#define PIO_PC18B_PWMH6 (1u << 18) /**< \brief Pwm signal: PWMH6 */ +#define PIO_PE24A_PWMH6 (1u << 24) /**< \brief Pwm signal: PWMH6 */ +#define PIO_PE26A_PWMH7 (1u << 26) /**< \brief Pwm signal: PWMH7 */ +#define PIO_PA21B_PWML0 (1u << 21) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB16B_PWML0 (1u << 16) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC2B_PWML0 (1u << 2) /**< \brief Pwm signal: PWML0 */ +#define PIO_PE18A_PWML0 (1u << 18) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA12B_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB17B_PWML1 (1u << 17) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC4B_PWML1 (1u << 4) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA20B_PWML2 (1u << 20) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB18B_PWML2 (1u << 18) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC6B_PWML2 (1u << 6) /**< \brief Pwm signal: PWML2 */ +#define PIO_PE17A_PWML2 (1u << 17) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA0B_PWML3 (1u << 0) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB19B_PWML3 (1u << 19) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC8B_PWML3 (1u << 8) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB6B_PWML4 (1u << 6) /**< \brief Pwm signal: PWML4 */ +#define PIO_PC21B_PWML4 (1u << 21) /**< \brief Pwm signal: PWML4 */ +#define PIO_PE19A_PWML4 (1u << 19) /**< \brief Pwm signal: PWML4 */ +#define PIO_PB7B_PWML5 (1u << 7) /**< \brief Pwm signal: PWML5 */ +#define PIO_PC22B_PWML5 (1u << 22) /**< \brief Pwm signal: PWML5 */ +#define PIO_PE21A_PWML5 (1u << 21) /**< \brief Pwm signal: PWML5 */ +#define PIO_PB8B_PWML6 (1u << 8) /**< \brief Pwm signal: PWML6 */ +#define PIO_PC23B_PWML6 (1u << 23) /**< \brief Pwm signal: PWML6 */ +#define PIO_PE23A_PWML6 (1u << 23) /**< \brief Pwm signal: PWML6 */ +#define PIO_PB9B_PWML7 (1u << 9) /**< \brief Pwm signal: PWML7 */ +#define PIO_PC24B_PWML7 (1u << 24) /**< \brief Pwm signal: PWML7 */ +#define PIO_PE25A_PWML7 (1u << 25) /**< \brief Pwm signal: PWML7 */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PA25A_SPI0_MISO (1u << 25) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PA26A_SPI0_MOSI (1u << 26) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PA28A_SPI0_NPCS0 (1u << 28) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA29A_SPI0_NPCS1 (1u << 29) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PB20B_SPI0_NPCS1 (1u << 20) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PA30A_SPI0_NPCS2 (1u << 30) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PB21B_SPI0_NPCS2 (1u << 21) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PA31A_SPI0_NPCS3 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PB23B_SPI0_NPCS3 (1u << 23) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PA27A_SPI0_SPCK (1u << 27) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PB18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PB17A_RF (1u << 17) /**< \brief Ssc signal: RF */ +#define PIO_PB19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA16B_TD (1u << 16) /**< \brief Ssc signal: TD */ +#define PIO_PA15B_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA14B_TK (1u << 14) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PB26B_TCLK0 (1u << 26) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA4A_TCLK1 (1u << 4) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA7A_TCLK2 (1u << 7) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PB25B_TIOA0 (1u << 25) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA2A_TIOA1 (1u << 2) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA5A_TIOA2 (1u << 5) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PB27B_TIOB0 (1u << 27) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA3A_TIOB1 (1u << 3) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA6A_TIOB2 (1u << 6) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PA22B_TCLK3 (1u << 22) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PA23B_TCLK4 (1u << 23) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PB16A_TCLK5 (1u << 16) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PB0B_TIOA3 (1u << 0) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PE9A_TIOA3 (1u << 9) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PB2B_TIOA4 (1u << 2) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PE11A_TIOA4 (1u << 11) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PB4B_TIOA5 (1u << 4) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PE13A_TIOA5 (1u << 13) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PB1B_TIOB3 (1u << 1) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PE10A_TIOB3 (1u << 10) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PB3B_TIOB4 (1u << 3) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PE12A_TIOB4 (1u << 12) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PB5B_TIOB5 (1u << 5) /**< \brief Tc1 signal: TIOB5 */ +#define PIO_PE14A_TIOB5 (1u << 14) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA18A_TWCK0 (1u << 18) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA17A_TWD0 (1u << 17) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB13A_TWCK1 (1u << 13) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB12A_TWD1 (1u << 12) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART peripheral ========== */ +#define PIO_PA8A_URXD (1u << 8) /**< \brief Uart signal: URXD */ +#define PIO_PA9A_UTXD (1u << 9) /**< \brief Uart signal: UTXD */ +/* ========== Pio definition for UOTGHS peripheral ========== */ +#define PIO_PB11A_UOTGID (1u << 11) /**< \brief Uotghs signal: UOTGID */ +#define PIO_PB10A_UOTGVBOF (1u << 10) /**< \brief Uotghs signal: UOTGVBOF */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB26A_CTS0 (1u << 26) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PB25A_RTS0 (1u << 25) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA10A_RXD0 (1u << 10) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA17B_SCK0 (1u << 17) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA11A_TXD0 (1u << 11) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA15A_CTS1 (1u << 15) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA14A_RTS1 (1u << 14) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA12A_RXD1 (1u << 12) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA16A_SCK1 (1u << 16) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA13A_TXD1 (1u << 13) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PB23A_CTS2 (1u << 23) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PB22A_RTS2 (1u << 22) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PB21A_RXD2 (1u << 21) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PB24A_SCK2 (1u << 24) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PB20A_TXD2 (1u << 20) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PB15_IDX 47 +#define PIO_PB16_IDX 48 +#define PIO_PB17_IDX 49 +#define PIO_PB18_IDX 50 +#define PIO_PB19_IDX 51 +#define PIO_PB20_IDX 52 +#define PIO_PB21_IDX 53 +#define PIO_PB22_IDX 54 +#define PIO_PB23_IDX 55 +#define PIO_PB24_IDX 56 +#define PIO_PB25_IDX 57 +#define PIO_PB26_IDX 58 +#define PIO_PB27_IDX 59 +#define PIO_PB28_IDX 60 +#define PIO_PB29_IDX 61 +#define PIO_PB30_IDX 62 +#define PIO_PB31_IDX 63 + +#endif /* _SAM3A2C_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3a4c.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3a4c.h new file mode 100644 index 000000000..7cd79bbf0 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3a4c.h @@ -0,0 +1,338 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3A4C_PIO_ +#define _SAM3A4C_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PB15 (1u << 15) /**< \brief Pin Controlled by PB15 */ +#define PIO_PB16 (1u << 16) /**< \brief Pin Controlled by PB16 */ +#define PIO_PB17 (1u << 17) /**< \brief Pin Controlled by PB17 */ +#define PIO_PB18 (1u << 18) /**< \brief Pin Controlled by PB18 */ +#define PIO_PB19 (1u << 19) /**< \brief Pin Controlled by PB19 */ +#define PIO_PB20 (1u << 20) /**< \brief Pin Controlled by PB20 */ +#define PIO_PB21 (1u << 21) /**< \brief Pin Controlled by PB21 */ +#define PIO_PB22 (1u << 22) /**< \brief Pin Controlled by PB22 */ +#define PIO_PB23 (1u << 23) /**< \brief Pin Controlled by PB23 */ +#define PIO_PB24 (1u << 24) /**< \brief Pin Controlled by PB24 */ +#define PIO_PB25 (1u << 25) /**< \brief Pin Controlled by PB25 */ +#define PIO_PB26 (1u << 26) /**< \brief Pin Controlled by PB26 */ +#define PIO_PB27 (1u << 27) /**< \brief Pin Controlled by PB27 */ +#define PIO_PB28 (1u << 28) /**< \brief Pin Controlled by PB28 */ +#define PIO_PB29 (1u << 29) /**< \brief Pin Controlled by PB29 */ +#define PIO_PB30 (1u << 30) /**< \brief Pin Controlled by PB30 */ +#define PIO_PB31 (1u << 31) /**< \brief Pin Controlled by PB31 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA2X1_AD0 (1u << 2) /**< \brief Adc signal: AD0 */ +#define PIO_PA3X1_AD1 (1u << 3) /**< \brief Adc signal: AD1/WKUP1 */ +#define PIO_PA3X1_WKUP1 (1u << 3) /**< \brief Adc signal: AD1/WKUP1 */ +#define PIO_PB17X1_AD10 (1u << 17) /**< \brief Adc signal: AD10 */ +#define PIO_PB18X1_AD11 (1u << 18) /**< \brief Adc signal: AD11 */ +#define PIO_PB19X1_AD12 (1u << 19) /**< \brief Adc signal: AD12 */ +#define PIO_PB20X1_AD13 (1u << 20) /**< \brief Adc signal: AD13 */ +#define PIO_PB21X1_AD14 (1u << 21) /**< \brief Adc signal: AD14/WKUP13 */ +#define PIO_PB21X1_WKUP13 (1u << 21) /**< \brief Adc signal: AD14/WKUP13 */ +#define PIO_PA4X1_AD2 (1u << 4) /**< \brief Adc signal: AD2 */ +#define PIO_PA6X1_AD3 (1u << 6) /**< \brief Adc signal: AD3 */ +#define PIO_PA22X1_AD4 (1u << 22) /**< \brief Adc signal: AD4 */ +#define PIO_PA23X1_AD5 (1u << 23) /**< \brief Adc signal: AD5 */ +#define PIO_PA24X1_AD6 (1u << 24) /**< \brief Adc signal: AD6 */ +#define PIO_PA16X1_AD7 (1u << 16) /**< \brief Adc signal: AD7 */ +#define PIO_PB12X1_AD8 (1u << 12) /**< \brief Adc signal: AD8 */ +#define PIO_PB13X1_AD9 (1u << 13) /**< \brief Adc signal: AD9 */ +#define PIO_PA11B_ADTRG (1u << 11) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for CAN0 peripheral ========== */ +#define PIO_PA1A_CANRX0 (1u << 1) /**< \brief Can0 signal: CANRX0 */ +#define PIO_PA0A_CANTX0 (1u << 0) /**< \brief Can0 signal: CANTX0 */ +/* ========== Pio definition for CAN1 peripheral ========== */ +#define PIO_PB15A_CANRX1 (1u << 15) /**< \brief Can1 signal: CANRX1 */ +#define PIO_PB14A_CANTX1 (1u << 14) /**< \brief Can1 signal: CANTX1 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB15X1_DAC0 (1u << 15) /**< \brief Dacc signal: DAC0/WKUP12 */ +#define PIO_PB15X1_WKUP12 (1u << 15) /**< \brief Dacc signal: DAC0/WKUP12 */ +#define PIO_PB16X1_DAC1 (1u << 16) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA10B_DATRG (1u << 10) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA20A_MCCDA (1u << 20) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PE20B_MCCDB (1u << 20) /**< \brief Hsmci signal: MCCDB */ +#define PIO_PA19A_MCCK (1u << 19) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA21A_MCDA0 (1u << 21) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA22A_MCDA1 (1u << 22) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA23A_MCDA2 (1u << 23) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA24A_MCDA3 (1u << 24) /**< \brief Hsmci signal: MCDA3 */ +#define PIO_PD0B_MCDA4 (1u << 0) /**< \brief Hsmci signal: MCDA4 */ +#define PIO_PD1B_MCDA5 (1u << 1) /**< \brief Hsmci signal: MCDA5 */ +#define PIO_PD2B_MCDA6 (1u << 2) /**< \brief Hsmci signal: MCDA6 */ +#define PIO_PD3B_MCDA7 (1u << 3) /**< \brief Hsmci signal: MCDA7 */ +#define PIO_PE22B_MCDB0 (1u << 22) /**< \brief Hsmci signal: MCDB0 */ +#define PIO_PE24B_MCDB1 (1u << 24) /**< \brief Hsmci signal: MCDB1 */ +#define PIO_PE26B_MCDB2 (1u << 26) /**< \brief Hsmci signal: MCDB2 */ +#define PIO_PE27B_MCDB3 (1u << 27) /**< \brief Hsmci signal: MCDB3 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA1B_PCK0 (1u << 1) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB22B_PCK0 (1u << 22) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA24B_PCK1 (1u << 24) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA30B_PCK1 (1u << 30) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA28B_PCK2 (1u << 28) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA5B_PWMFI0 (1u << 5) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA3B_PWMFI1 (1u << 3) /**< \brief Pwm signal: PWMFI1 */ +#define PIO_PD6B_PWMFI2 (1u << 6) /**< \brief Pwm signal: PWMFI2 */ +#define PIO_PA8B_PWMH0 (1u << 8) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB12B_PWMH0 (1u << 12) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC3B_PWMH0 (1u << 3) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PE15A_PWMH0 (1u << 15) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB13B_PWMH1 (1u << 13) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC5B_PWMH1 (1u << 5) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PE16A_PWMH1 (1u << 16) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB14B_PWMH2 (1u << 14) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC7B_PWMH2 (1u << 7) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA9B_PWMH3 (1u << 9) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB15B_PWMH3 (1u << 15) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC9B_PWMH3 (1u << 9) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PF3A_PWMH3 (1u << 3) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC20B_PWMH4 (1u << 20) /**< \brief Pwm signal: PWMH4 */ +#define PIO_PE20A_PWMH4 (1u << 20) /**< \brief Pwm signal: PWMH4 */ +#define PIO_PC19B_PWMH5 (1u << 19) /**< \brief Pwm signal: PWMH5 */ +#define PIO_PE22A_PWMH5 (1u << 22) /**< \brief Pwm signal: PWMH5 */ +#define PIO_PC18B_PWMH6 (1u << 18) /**< \brief Pwm signal: PWMH6 */ +#define PIO_PE24A_PWMH6 (1u << 24) /**< \brief Pwm signal: PWMH6 */ +#define PIO_PE26A_PWMH7 (1u << 26) /**< \brief Pwm signal: PWMH7 */ +#define PIO_PA21B_PWML0 (1u << 21) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB16B_PWML0 (1u << 16) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC2B_PWML0 (1u << 2) /**< \brief Pwm signal: PWML0 */ +#define PIO_PE18A_PWML0 (1u << 18) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA12B_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB17B_PWML1 (1u << 17) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC4B_PWML1 (1u << 4) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA20B_PWML2 (1u << 20) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB18B_PWML2 (1u << 18) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC6B_PWML2 (1u << 6) /**< \brief Pwm signal: PWML2 */ +#define PIO_PE17A_PWML2 (1u << 17) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA0B_PWML3 (1u << 0) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB19B_PWML3 (1u << 19) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC8B_PWML3 (1u << 8) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB6B_PWML4 (1u << 6) /**< \brief Pwm signal: PWML4 */ +#define PIO_PC21B_PWML4 (1u << 21) /**< \brief Pwm signal: PWML4 */ +#define PIO_PE19A_PWML4 (1u << 19) /**< \brief Pwm signal: PWML4 */ +#define PIO_PB7B_PWML5 (1u << 7) /**< \brief Pwm signal: PWML5 */ +#define PIO_PC22B_PWML5 (1u << 22) /**< \brief Pwm signal: PWML5 */ +#define PIO_PE21A_PWML5 (1u << 21) /**< \brief Pwm signal: PWML5 */ +#define PIO_PB8B_PWML6 (1u << 8) /**< \brief Pwm signal: PWML6 */ +#define PIO_PC23B_PWML6 (1u << 23) /**< \brief Pwm signal: PWML6 */ +#define PIO_PE23A_PWML6 (1u << 23) /**< \brief Pwm signal: PWML6 */ +#define PIO_PB9B_PWML7 (1u << 9) /**< \brief Pwm signal: PWML7 */ +#define PIO_PC24B_PWML7 (1u << 24) /**< \brief Pwm signal: PWML7 */ +#define PIO_PE25A_PWML7 (1u << 25) /**< \brief Pwm signal: PWML7 */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PA25A_SPI0_MISO (1u << 25) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PA26A_SPI0_MOSI (1u << 26) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PA28A_SPI0_NPCS0 (1u << 28) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA29A_SPI0_NPCS1 (1u << 29) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PB20B_SPI0_NPCS1 (1u << 20) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PA30A_SPI0_NPCS2 (1u << 30) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PB21B_SPI0_NPCS2 (1u << 21) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PA31A_SPI0_NPCS3 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PB23B_SPI0_NPCS3 (1u << 23) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PA27A_SPI0_SPCK (1u << 27) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PB18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PB17A_RF (1u << 17) /**< \brief Ssc signal: RF */ +#define PIO_PB19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA16B_TD (1u << 16) /**< \brief Ssc signal: TD */ +#define PIO_PA15B_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA14B_TK (1u << 14) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PB26B_TCLK0 (1u << 26) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA4A_TCLK1 (1u << 4) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA7A_TCLK2 (1u << 7) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PB25B_TIOA0 (1u << 25) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA2A_TIOA1 (1u << 2) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA5A_TIOA2 (1u << 5) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PB27B_TIOB0 (1u << 27) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA3A_TIOB1 (1u << 3) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA6A_TIOB2 (1u << 6) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PA22B_TCLK3 (1u << 22) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PA23B_TCLK4 (1u << 23) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PB16A_TCLK5 (1u << 16) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PB0B_TIOA3 (1u << 0) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PE9A_TIOA3 (1u << 9) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PB2B_TIOA4 (1u << 2) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PE11A_TIOA4 (1u << 11) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PB4B_TIOA5 (1u << 4) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PE13A_TIOA5 (1u << 13) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PB1B_TIOB3 (1u << 1) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PE10A_TIOB3 (1u << 10) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PB3B_TIOB4 (1u << 3) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PE12A_TIOB4 (1u << 12) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PB5B_TIOB5 (1u << 5) /**< \brief Tc1 signal: TIOB5 */ +#define PIO_PE14A_TIOB5 (1u << 14) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA18A_TWCK0 (1u << 18) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA17A_TWD0 (1u << 17) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB13A_TWCK1 (1u << 13) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB12A_TWD1 (1u << 12) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART peripheral ========== */ +#define PIO_PA8A_URXD (1u << 8) /**< \brief Uart signal: URXD */ +#define PIO_PA9A_UTXD (1u << 9) /**< \brief Uart signal: UTXD */ +/* ========== Pio definition for UOTGHS peripheral ========== */ +#define PIO_PB11A_UOTGID (1u << 11) /**< \brief Uotghs signal: UOTGID */ +#define PIO_PB10A_UOTGVBOF (1u << 10) /**< \brief Uotghs signal: UOTGVBOF */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB26A_CTS0 (1u << 26) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PB25A_RTS0 (1u << 25) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA10A_RXD0 (1u << 10) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA17B_SCK0 (1u << 17) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA11A_TXD0 (1u << 11) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA15A_CTS1 (1u << 15) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA14A_RTS1 (1u << 14) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA12A_RXD1 (1u << 12) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA16A_SCK1 (1u << 16) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA13A_TXD1 (1u << 13) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PB23A_CTS2 (1u << 23) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PB22A_RTS2 (1u << 22) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PB21A_RXD2 (1u << 21) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PB24A_SCK2 (1u << 24) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PB20A_TXD2 (1u << 20) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PB15_IDX 47 +#define PIO_PB16_IDX 48 +#define PIO_PB17_IDX 49 +#define PIO_PB18_IDX 50 +#define PIO_PB19_IDX 51 +#define PIO_PB20_IDX 52 +#define PIO_PB21_IDX 53 +#define PIO_PB22_IDX 54 +#define PIO_PB23_IDX 55 +#define PIO_PB24_IDX 56 +#define PIO_PB25_IDX 57 +#define PIO_PB26_IDX 58 +#define PIO_PB27_IDX 59 +#define PIO_PB28_IDX 60 +#define PIO_PB29_IDX 61 +#define PIO_PB30_IDX 62 +#define PIO_PB31_IDX 63 + +#endif /* _SAM3A4C_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3a8c.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3a8c.h new file mode 100644 index 000000000..a04c6b7ea --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3a8c.h @@ -0,0 +1,338 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3A8C_PIO_ +#define _SAM3A8C_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PB15 (1u << 15) /**< \brief Pin Controlled by PB15 */ +#define PIO_PB16 (1u << 16) /**< \brief Pin Controlled by PB16 */ +#define PIO_PB17 (1u << 17) /**< \brief Pin Controlled by PB17 */ +#define PIO_PB18 (1u << 18) /**< \brief Pin Controlled by PB18 */ +#define PIO_PB19 (1u << 19) /**< \brief Pin Controlled by PB19 */ +#define PIO_PB20 (1u << 20) /**< \brief Pin Controlled by PB20 */ +#define PIO_PB21 (1u << 21) /**< \brief Pin Controlled by PB21 */ +#define PIO_PB22 (1u << 22) /**< \brief Pin Controlled by PB22 */ +#define PIO_PB23 (1u << 23) /**< \brief Pin Controlled by PB23 */ +#define PIO_PB24 (1u << 24) /**< \brief Pin Controlled by PB24 */ +#define PIO_PB25 (1u << 25) /**< \brief Pin Controlled by PB25 */ +#define PIO_PB26 (1u << 26) /**< \brief Pin Controlled by PB26 */ +#define PIO_PB27 (1u << 27) /**< \brief Pin Controlled by PB27 */ +#define PIO_PB28 (1u << 28) /**< \brief Pin Controlled by PB28 */ +#define PIO_PB29 (1u << 29) /**< \brief Pin Controlled by PB29 */ +#define PIO_PB30 (1u << 30) /**< \brief Pin Controlled by PB30 */ +#define PIO_PB31 (1u << 31) /**< \brief Pin Controlled by PB31 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA2X1_AD0 (1u << 2) /**< \brief Adc signal: AD0 */ +#define PIO_PA3X1_AD1 (1u << 3) /**< \brief Adc signal: AD1/WKUP1 */ +#define PIO_PA3X1_WKUP1 (1u << 3) /**< \brief Adc signal: AD1/WKUP1 */ +#define PIO_PB17X1_AD10 (1u << 17) /**< \brief Adc signal: AD10 */ +#define PIO_PB18X1_AD11 (1u << 18) /**< \brief Adc signal: AD11 */ +#define PIO_PB19X1_AD12 (1u << 19) /**< \brief Adc signal: AD12 */ +#define PIO_PB20X1_AD13 (1u << 20) /**< \brief Adc signal: AD13 */ +#define PIO_PB21X1_AD14 (1u << 21) /**< \brief Adc signal: AD14/WKUP13 */ +#define PIO_PB21X1_WKUP13 (1u << 21) /**< \brief Adc signal: AD14/WKUP13 */ +#define PIO_PA4X1_AD2 (1u << 4) /**< \brief Adc signal: AD2 */ +#define PIO_PA6X1_AD3 (1u << 6) /**< \brief Adc signal: AD3 */ +#define PIO_PA22X1_AD4 (1u << 22) /**< \brief Adc signal: AD4 */ +#define PIO_PA23X1_AD5 (1u << 23) /**< \brief Adc signal: AD5 */ +#define PIO_PA24X1_AD6 (1u << 24) /**< \brief Adc signal: AD6 */ +#define PIO_PA16X1_AD7 (1u << 16) /**< \brief Adc signal: AD7 */ +#define PIO_PB12X1_AD8 (1u << 12) /**< \brief Adc signal: AD8 */ +#define PIO_PB13X1_AD9 (1u << 13) /**< \brief Adc signal: AD9 */ +#define PIO_PA11B_ADTRG (1u << 11) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for CAN0 peripheral ========== */ +#define PIO_PA1A_CANRX0 (1u << 1) /**< \brief Can0 signal: CANRX0 */ +#define PIO_PA0A_CANTX0 (1u << 0) /**< \brief Can0 signal: CANTX0 */ +/* ========== Pio definition for CAN1 peripheral ========== */ +#define PIO_PB15A_CANRX1 (1u << 15) /**< \brief Can1 signal: CANRX1 */ +#define PIO_PB14A_CANTX1 (1u << 14) /**< \brief Can1 signal: CANTX1 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB15X1_DAC0 (1u << 15) /**< \brief Dacc signal: DAC0/WKUP12 */ +#define PIO_PB15X1_WKUP12 (1u << 15) /**< \brief Dacc signal: DAC0/WKUP12 */ +#define PIO_PB16X1_DAC1 (1u << 16) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA10B_DATRG (1u << 10) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA20A_MCCDA (1u << 20) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PE20B_MCCDB (1u << 20) /**< \brief Hsmci signal: MCCDB */ +#define PIO_PA19A_MCCK (1u << 19) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA21A_MCDA0 (1u << 21) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA22A_MCDA1 (1u << 22) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA23A_MCDA2 (1u << 23) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA24A_MCDA3 (1u << 24) /**< \brief Hsmci signal: MCDA3 */ +#define PIO_PD0B_MCDA4 (1u << 0) /**< \brief Hsmci signal: MCDA4 */ +#define PIO_PD1B_MCDA5 (1u << 1) /**< \brief Hsmci signal: MCDA5 */ +#define PIO_PD2B_MCDA6 (1u << 2) /**< \brief Hsmci signal: MCDA6 */ +#define PIO_PD3B_MCDA7 (1u << 3) /**< \brief Hsmci signal: MCDA7 */ +#define PIO_PE22B_MCDB0 (1u << 22) /**< \brief Hsmci signal: MCDB0 */ +#define PIO_PE24B_MCDB1 (1u << 24) /**< \brief Hsmci signal: MCDB1 */ +#define PIO_PE26B_MCDB2 (1u << 26) /**< \brief Hsmci signal: MCDB2 */ +#define PIO_PE27B_MCDB3 (1u << 27) /**< \brief Hsmci signal: MCDB3 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA1B_PCK0 (1u << 1) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB22B_PCK0 (1u << 22) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA24B_PCK1 (1u << 24) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA30B_PCK1 (1u << 30) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA28B_PCK2 (1u << 28) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA5B_PWMFI0 (1u << 5) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA3B_PWMFI1 (1u << 3) /**< \brief Pwm signal: PWMFI1 */ +#define PIO_PD6B_PWMFI2 (1u << 6) /**< \brief Pwm signal: PWMFI2 */ +#define PIO_PA8B_PWMH0 (1u << 8) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB12B_PWMH0 (1u << 12) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC3B_PWMH0 (1u << 3) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PE15A_PWMH0 (1u << 15) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB13B_PWMH1 (1u << 13) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC5B_PWMH1 (1u << 5) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PE16A_PWMH1 (1u << 16) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB14B_PWMH2 (1u << 14) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC7B_PWMH2 (1u << 7) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA9B_PWMH3 (1u << 9) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB15B_PWMH3 (1u << 15) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC9B_PWMH3 (1u << 9) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PF3A_PWMH3 (1u << 3) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC20B_PWMH4 (1u << 20) /**< \brief Pwm signal: PWMH4 */ +#define PIO_PE20A_PWMH4 (1u << 20) /**< \brief Pwm signal: PWMH4 */ +#define PIO_PC19B_PWMH5 (1u << 19) /**< \brief Pwm signal: PWMH5 */ +#define PIO_PE22A_PWMH5 (1u << 22) /**< \brief Pwm signal: PWMH5 */ +#define PIO_PC18B_PWMH6 (1u << 18) /**< \brief Pwm signal: PWMH6 */ +#define PIO_PE24A_PWMH6 (1u << 24) /**< \brief Pwm signal: PWMH6 */ +#define PIO_PE26A_PWMH7 (1u << 26) /**< \brief Pwm signal: PWMH7 */ +#define PIO_PA21B_PWML0 (1u << 21) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB16B_PWML0 (1u << 16) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC2B_PWML0 (1u << 2) /**< \brief Pwm signal: PWML0 */ +#define PIO_PE18A_PWML0 (1u << 18) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA12B_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB17B_PWML1 (1u << 17) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC4B_PWML1 (1u << 4) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA20B_PWML2 (1u << 20) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB18B_PWML2 (1u << 18) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC6B_PWML2 (1u << 6) /**< \brief Pwm signal: PWML2 */ +#define PIO_PE17A_PWML2 (1u << 17) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA0B_PWML3 (1u << 0) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB19B_PWML3 (1u << 19) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC8B_PWML3 (1u << 8) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB6B_PWML4 (1u << 6) /**< \brief Pwm signal: PWML4 */ +#define PIO_PC21B_PWML4 (1u << 21) /**< \brief Pwm signal: PWML4 */ +#define PIO_PE19A_PWML4 (1u << 19) /**< \brief Pwm signal: PWML4 */ +#define PIO_PB7B_PWML5 (1u << 7) /**< \brief Pwm signal: PWML5 */ +#define PIO_PC22B_PWML5 (1u << 22) /**< \brief Pwm signal: PWML5 */ +#define PIO_PE21A_PWML5 (1u << 21) /**< \brief Pwm signal: PWML5 */ +#define PIO_PB8B_PWML6 (1u << 8) /**< \brief Pwm signal: PWML6 */ +#define PIO_PC23B_PWML6 (1u << 23) /**< \brief Pwm signal: PWML6 */ +#define PIO_PE23A_PWML6 (1u << 23) /**< \brief Pwm signal: PWML6 */ +#define PIO_PB9B_PWML7 (1u << 9) /**< \brief Pwm signal: PWML7 */ +#define PIO_PC24B_PWML7 (1u << 24) /**< \brief Pwm signal: PWML7 */ +#define PIO_PE25A_PWML7 (1u << 25) /**< \brief Pwm signal: PWML7 */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PA25A_SPI0_MISO (1u << 25) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PA26A_SPI0_MOSI (1u << 26) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PA28A_SPI0_NPCS0 (1u << 28) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA29A_SPI0_NPCS1 (1u << 29) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PB20B_SPI0_NPCS1 (1u << 20) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PA30A_SPI0_NPCS2 (1u << 30) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PB21B_SPI0_NPCS2 (1u << 21) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PA31A_SPI0_NPCS3 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PB23B_SPI0_NPCS3 (1u << 23) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PA27A_SPI0_SPCK (1u << 27) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PB18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PB17A_RF (1u << 17) /**< \brief Ssc signal: RF */ +#define PIO_PB19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA16B_TD (1u << 16) /**< \brief Ssc signal: TD */ +#define PIO_PA15B_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA14B_TK (1u << 14) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PB26B_TCLK0 (1u << 26) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA4A_TCLK1 (1u << 4) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA7A_TCLK2 (1u << 7) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PB25B_TIOA0 (1u << 25) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA2A_TIOA1 (1u << 2) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA5A_TIOA2 (1u << 5) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PB27B_TIOB0 (1u << 27) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA3A_TIOB1 (1u << 3) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA6A_TIOB2 (1u << 6) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PA22B_TCLK3 (1u << 22) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PA23B_TCLK4 (1u << 23) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PB16A_TCLK5 (1u << 16) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PB0B_TIOA3 (1u << 0) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PE9A_TIOA3 (1u << 9) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PB2B_TIOA4 (1u << 2) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PE11A_TIOA4 (1u << 11) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PB4B_TIOA5 (1u << 4) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PE13A_TIOA5 (1u << 13) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PB1B_TIOB3 (1u << 1) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PE10A_TIOB3 (1u << 10) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PB3B_TIOB4 (1u << 3) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PE12A_TIOB4 (1u << 12) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PB5B_TIOB5 (1u << 5) /**< \brief Tc1 signal: TIOB5 */ +#define PIO_PE14A_TIOB5 (1u << 14) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA18A_TWCK0 (1u << 18) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA17A_TWD0 (1u << 17) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB13A_TWCK1 (1u << 13) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB12A_TWD1 (1u << 12) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART peripheral ========== */ +#define PIO_PA8A_URXD (1u << 8) /**< \brief Uart signal: URXD */ +#define PIO_PA9A_UTXD (1u << 9) /**< \brief Uart signal: UTXD */ +/* ========== Pio definition for UOTGHS peripheral ========== */ +#define PIO_PB11A_UOTGID (1u << 11) /**< \brief Uotghs signal: UOTGID */ +#define PIO_PB10A_UOTGVBOF (1u << 10) /**< \brief Uotghs signal: UOTGVBOF */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB26A_CTS0 (1u << 26) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PB25A_RTS0 (1u << 25) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA10A_RXD0 (1u << 10) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA17B_SCK0 (1u << 17) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA11A_TXD0 (1u << 11) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA15A_CTS1 (1u << 15) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA14A_RTS1 (1u << 14) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA12A_RXD1 (1u << 12) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA16A_SCK1 (1u << 16) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA13A_TXD1 (1u << 13) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PB23A_CTS2 (1u << 23) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PB22A_RTS2 (1u << 22) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PB21A_RXD2 (1u << 21) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PB24A_SCK2 (1u << 24) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PB20A_TXD2 (1u << 20) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PB15_IDX 47 +#define PIO_PB16_IDX 48 +#define PIO_PB17_IDX 49 +#define PIO_PB18_IDX 50 +#define PIO_PB19_IDX 51 +#define PIO_PB20_IDX 52 +#define PIO_PB21_IDX 53 +#define PIO_PB22_IDX 54 +#define PIO_PB23_IDX 55 +#define PIO_PB24_IDX 56 +#define PIO_PB25_IDX 57 +#define PIO_PB26_IDX 58 +#define PIO_PB27_IDX 59 +#define PIO_PB28_IDX 60 +#define PIO_PB29_IDX 61 +#define PIO_PB30_IDX 62 +#define PIO_PB31_IDX 63 + +#endif /* _SAM3A8C_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3x4c.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3x4c.h new file mode 100644 index 000000000..4afffcb8f --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3x4c.h @@ -0,0 +1,358 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3X4C_PIO_ +#define _SAM3X4C_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PB15 (1u << 15) /**< \brief Pin Controlled by PB15 */ +#define PIO_PB16 (1u << 16) /**< \brief Pin Controlled by PB16 */ +#define PIO_PB17 (1u << 17) /**< \brief Pin Controlled by PB17 */ +#define PIO_PB18 (1u << 18) /**< \brief Pin Controlled by PB18 */ +#define PIO_PB19 (1u << 19) /**< \brief Pin Controlled by PB19 */ +#define PIO_PB20 (1u << 20) /**< \brief Pin Controlled by PB20 */ +#define PIO_PB21 (1u << 21) /**< \brief Pin Controlled by PB21 */ +#define PIO_PB22 (1u << 22) /**< \brief Pin Controlled by PB22 */ +#define PIO_PB23 (1u << 23) /**< \brief Pin Controlled by PB23 */ +#define PIO_PB24 (1u << 24) /**< \brief Pin Controlled by PB24 */ +#define PIO_PB25 (1u << 25) /**< \brief Pin Controlled by PB25 */ +#define PIO_PB26 (1u << 26) /**< \brief Pin Controlled by PB26 */ +#define PIO_PB27 (1u << 27) /**< \brief Pin Controlled by PB27 */ +#define PIO_PB28 (1u << 28) /**< \brief Pin Controlled by PB28 */ +#define PIO_PB29 (1u << 29) /**< \brief Pin Controlled by PB29 */ +#define PIO_PB30 (1u << 30) /**< \brief Pin Controlled by PB30 */ +#define PIO_PB31 (1u << 31) /**< \brief Pin Controlled by PB31 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA2X1_AD0 (1u << 2) /**< \brief Adc signal: AD0 */ +#define PIO_PA3X1_AD1 (1u << 3) /**< \brief Adc signal: AD1/WKUP1 */ +#define PIO_PA3X1_WKUP1 (1u << 3) /**< \brief Adc signal: AD1/WKUP1 */ +#define PIO_PB17X1_AD10 (1u << 17) /**< \brief Adc signal: AD10 */ +#define PIO_PB18X1_AD11 (1u << 18) /**< \brief Adc signal: AD11 */ +#define PIO_PB19X1_AD12 (1u << 19) /**< \brief Adc signal: AD12 */ +#define PIO_PB20X1_AD13 (1u << 20) /**< \brief Adc signal: AD13 */ +#define PIO_PB21X1_AD14 (1u << 21) /**< \brief Adc signal: AD14/WKUP13 */ +#define PIO_PB21X1_WKUP13 (1u << 21) /**< \brief Adc signal: AD14/WKUP13 */ +#define PIO_PA4X1_AD2 (1u << 4) /**< \brief Adc signal: AD2 */ +#define PIO_PA6X1_AD3 (1u << 6) /**< \brief Adc signal: AD3 */ +#define PIO_PA22X1_AD4 (1u << 22) /**< \brief Adc signal: AD4 */ +#define PIO_PA23X1_AD5 (1u << 23) /**< \brief Adc signal: AD5 */ +#define PIO_PA24X1_AD6 (1u << 24) /**< \brief Adc signal: AD6 */ +#define PIO_PA16X1_AD7 (1u << 16) /**< \brief Adc signal: AD7 */ +#define PIO_PB12X1_AD8 (1u << 12) /**< \brief Adc signal: AD8 */ +#define PIO_PB13X1_AD9 (1u << 13) /**< \brief Adc signal: AD9 */ +#define PIO_PA11B_ADTRG (1u << 11) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for CAN0 peripheral ========== */ +#define PIO_PA1A_CANRX0 (1u << 1) /**< \brief Can0 signal: CANRX0 */ +#define PIO_PA0A_CANTX0 (1u << 0) /**< \brief Can0 signal: CANTX0 */ +/* ========== Pio definition for CAN1 peripheral ========== */ +#define PIO_PB15A_CANRX1 (1u << 15) /**< \brief Can1 signal: CANRX1 */ +#define PIO_PB14A_CANTX1 (1u << 14) /**< \brief Can1 signal: CANTX1 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB15X1_DAC0 (1u << 15) /**< \brief Dacc signal: DAC0/WKUP12 */ +#define PIO_PB15X1_WKUP12 (1u << 15) /**< \brief Dacc signal: DAC0/WKUP12 */ +#define PIO_PB16X1_DAC1 (1u << 16) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA10B_DATRG (1u << 10) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for EMAC peripheral ========== */ +#define PIO_PC13B_ECOL (1u << 13) /**< \brief Emac signal: ECOL */ +#define PIO_PC10B_ECRS (1u << 10) /**< \brief Emac signal: ECRS */ +#define PIO_PB4A_ECRSDV (1u << 4) /**< \brief Emac signal: ECRSDV/ERXDV */ +#define PIO_PB4A_ERXDV (1u << 4) /**< \brief Emac signal: ECRSDV/ERXDV */ +#define PIO_PB8A_EMDC (1u << 8) /**< \brief Emac signal: EMDC */ +#define PIO_PB9A_EMDIO (1u << 9) /**< \brief Emac signal: EMDIO */ +#define PIO_PB5A_ERX0 (1u << 5) /**< \brief Emac signal: ERX0 */ +#define PIO_PB6A_ERX1 (1u << 6) /**< \brief Emac signal: ERX1 */ +#define PIO_PC11B_ERX2 (1u << 11) /**< \brief Emac signal: ERX2 */ +#define PIO_PC12B_ERX3 (1u << 12) /**< \brief Emac signal: ERX3 */ +#define PIO_PC14B_ERXCK (1u << 14) /**< \brief Emac signal: ERXCK */ +#define PIO_PB7A_ERXER (1u << 7) /**< \brief Emac signal: ERXER */ +#define PIO_PB2A_ETX0 (1u << 2) /**< \brief Emac signal: ETX0 */ +#define PIO_PB3A_ETX1 (1u << 3) /**< \brief Emac signal: ETX1 */ +#define PIO_PC15B_ETX2 (1u << 15) /**< \brief Emac signal: ETX2 */ +#define PIO_PC16B_ETX3 (1u << 16) /**< \brief Emac signal: ETX3 */ +#define PIO_PB0A_ETXCK (1u << 0) /**< \brief Emac signal: ETXCK */ +#define PIO_PB1A_ETXEN (1u << 1) /**< \brief Emac signal: ETXEN */ +#define PIO_PC17B_ETXER (1u << 17) /**< \brief Emac signal: ETXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA20A_MCCDA (1u << 20) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PE20B_MCCDB (1u << 20) /**< \brief Hsmci signal: MCCDB */ +#define PIO_PA19A_MCCK (1u << 19) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA21A_MCDA0 (1u << 21) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA22A_MCDA1 (1u << 22) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA23A_MCDA2 (1u << 23) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA24A_MCDA3 (1u << 24) /**< \brief Hsmci signal: MCDA3 */ +#define PIO_PD0B_MCDA4 (1u << 0) /**< \brief Hsmci signal: MCDA4 */ +#define PIO_PD1B_MCDA5 (1u << 1) /**< \brief Hsmci signal: MCDA5 */ +#define PIO_PD2B_MCDA6 (1u << 2) /**< \brief Hsmci signal: MCDA6 */ +#define PIO_PD3B_MCDA7 (1u << 3) /**< \brief Hsmci signal: MCDA7 */ +#define PIO_PE22B_MCDB0 (1u << 22) /**< \brief Hsmci signal: MCDB0 */ +#define PIO_PE24B_MCDB1 (1u << 24) /**< \brief Hsmci signal: MCDB1 */ +#define PIO_PE26B_MCDB2 (1u << 26) /**< \brief Hsmci signal: MCDB2 */ +#define PIO_PE27B_MCDB3 (1u << 27) /**< \brief Hsmci signal: MCDB3 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA1B_PCK0 (1u << 1) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB22B_PCK0 (1u << 22) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA24B_PCK1 (1u << 24) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA30B_PCK1 (1u << 30) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA28B_PCK2 (1u << 28) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA5B_PWMFI0 (1u << 5) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA3B_PWMFI1 (1u << 3) /**< \brief Pwm signal: PWMFI1 */ +#define PIO_PD6B_PWMFI2 (1u << 6) /**< \brief Pwm signal: PWMFI2 */ +#define PIO_PA8B_PWMH0 (1u << 8) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB12B_PWMH0 (1u << 12) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC3B_PWMH0 (1u << 3) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PE15A_PWMH0 (1u << 15) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB13B_PWMH1 (1u << 13) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC5B_PWMH1 (1u << 5) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PE16A_PWMH1 (1u << 16) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB14B_PWMH2 (1u << 14) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC7B_PWMH2 (1u << 7) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA9B_PWMH3 (1u << 9) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB15B_PWMH3 (1u << 15) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC9B_PWMH3 (1u << 9) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PF3A_PWMH3 (1u << 3) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC20B_PWMH4 (1u << 20) /**< \brief Pwm signal: PWMH4 */ +#define PIO_PE20A_PWMH4 (1u << 20) /**< \brief Pwm signal: PWMH4 */ +#define PIO_PC19B_PWMH5 (1u << 19) /**< \brief Pwm signal: PWMH5 */ +#define PIO_PE22A_PWMH5 (1u << 22) /**< \brief Pwm signal: PWMH5 */ +#define PIO_PC18B_PWMH6 (1u << 18) /**< \brief Pwm signal: PWMH6 */ +#define PIO_PE24A_PWMH6 (1u << 24) /**< \brief Pwm signal: PWMH6 */ +#define PIO_PE26A_PWMH7 (1u << 26) /**< \brief Pwm signal: PWMH7 */ +#define PIO_PA21B_PWML0 (1u << 21) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB16B_PWML0 (1u << 16) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC2B_PWML0 (1u << 2) /**< \brief Pwm signal: PWML0 */ +#define PIO_PE18A_PWML0 (1u << 18) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA12B_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB17B_PWML1 (1u << 17) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC4B_PWML1 (1u << 4) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA20B_PWML2 (1u << 20) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB18B_PWML2 (1u << 18) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC6B_PWML2 (1u << 6) /**< \brief Pwm signal: PWML2 */ +#define PIO_PE17A_PWML2 (1u << 17) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA0B_PWML3 (1u << 0) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB19B_PWML3 (1u << 19) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC8B_PWML3 (1u << 8) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB6B_PWML4 (1u << 6) /**< \brief Pwm signal: PWML4 */ +#define PIO_PC21B_PWML4 (1u << 21) /**< \brief Pwm signal: PWML4 */ +#define PIO_PE19A_PWML4 (1u << 19) /**< \brief Pwm signal: PWML4 */ +#define PIO_PB7B_PWML5 (1u << 7) /**< \brief Pwm signal: PWML5 */ +#define PIO_PC22B_PWML5 (1u << 22) /**< \brief Pwm signal: PWML5 */ +#define PIO_PE21A_PWML5 (1u << 21) /**< \brief Pwm signal: PWML5 */ +#define PIO_PB8B_PWML6 (1u << 8) /**< \brief Pwm signal: PWML6 */ +#define PIO_PC23B_PWML6 (1u << 23) /**< \brief Pwm signal: PWML6 */ +#define PIO_PE23A_PWML6 (1u << 23) /**< \brief Pwm signal: PWML6 */ +#define PIO_PB9B_PWML7 (1u << 9) /**< \brief Pwm signal: PWML7 */ +#define PIO_PC24B_PWML7 (1u << 24) /**< \brief Pwm signal: PWML7 */ +#define PIO_PE25A_PWML7 (1u << 25) /**< \brief Pwm signal: PWML7 */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PA25A_SPI0_MISO (1u << 25) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PA26A_SPI0_MOSI (1u << 26) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PA28A_SPI0_NPCS0 (1u << 28) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA29A_SPI0_NPCS1 (1u << 29) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PB20B_SPI0_NPCS1 (1u << 20) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PA30A_SPI0_NPCS2 (1u << 30) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PB21B_SPI0_NPCS2 (1u << 21) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PA31A_SPI0_NPCS3 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PB23B_SPI0_NPCS3 (1u << 23) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PA27A_SPI0_SPCK (1u << 27) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PB18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PB17A_RF (1u << 17) /**< \brief Ssc signal: RF */ +#define PIO_PB19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA16B_TD (1u << 16) /**< \brief Ssc signal: TD */ +#define PIO_PA15B_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA14B_TK (1u << 14) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PB26B_TCLK0 (1u << 26) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA4A_TCLK1 (1u << 4) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA7A_TCLK2 (1u << 7) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PB25B_TIOA0 (1u << 25) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA2A_TIOA1 (1u << 2) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA5A_TIOA2 (1u << 5) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PB27B_TIOB0 (1u << 27) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA3A_TIOB1 (1u << 3) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA6A_TIOB2 (1u << 6) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PA22B_TCLK3 (1u << 22) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PA23B_TCLK4 (1u << 23) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PB16A_TCLK5 (1u << 16) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PB0B_TIOA3 (1u << 0) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PE9A_TIOA3 (1u << 9) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PB2B_TIOA4 (1u << 2) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PE11A_TIOA4 (1u << 11) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PB4B_TIOA5 (1u << 4) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PE13A_TIOA5 (1u << 13) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PB1B_TIOB3 (1u << 1) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PE10A_TIOB3 (1u << 10) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PB3B_TIOB4 (1u << 3) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PE12A_TIOB4 (1u << 12) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PB5B_TIOB5 (1u << 5) /**< \brief Tc1 signal: TIOB5 */ +#define PIO_PE14A_TIOB5 (1u << 14) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA18A_TWCK0 (1u << 18) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA17A_TWD0 (1u << 17) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB13A_TWCK1 (1u << 13) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB12A_TWD1 (1u << 12) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART peripheral ========== */ +#define PIO_PA8A_URXD (1u << 8) /**< \brief Uart signal: URXD */ +#define PIO_PA9A_UTXD (1u << 9) /**< \brief Uart signal: UTXD */ +/* ========== Pio definition for UOTGHS peripheral ========== */ +#define PIO_PB11A_UOTGID (1u << 11) /**< \brief Uotghs signal: UOTGID */ +#define PIO_PB10A_UOTGVBOF (1u << 10) /**< \brief Uotghs signal: UOTGVBOF */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB26A_CTS0 (1u << 26) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PB25A_RTS0 (1u << 25) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA10A_RXD0 (1u << 10) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA17B_SCK0 (1u << 17) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA11A_TXD0 (1u << 11) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA15A_CTS1 (1u << 15) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA14A_RTS1 (1u << 14) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA12A_RXD1 (1u << 12) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA16A_SCK1 (1u << 16) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA13A_TXD1 (1u << 13) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PB23A_CTS2 (1u << 23) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PB22A_RTS2 (1u << 22) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PB21A_RXD2 (1u << 21) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PB24A_SCK2 (1u << 24) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PB20A_TXD2 (1u << 20) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PB15_IDX 47 +#define PIO_PB16_IDX 48 +#define PIO_PB17_IDX 49 +#define PIO_PB18_IDX 50 +#define PIO_PB19_IDX 51 +#define PIO_PB20_IDX 52 +#define PIO_PB21_IDX 53 +#define PIO_PB22_IDX 54 +#define PIO_PB23_IDX 55 +#define PIO_PB24_IDX 56 +#define PIO_PB25_IDX 57 +#define PIO_PB26_IDX 58 +#define PIO_PB27_IDX 59 +#define PIO_PB28_IDX 60 +#define PIO_PB29_IDX 61 +#define PIO_PB30_IDX 62 +#define PIO_PB31_IDX 63 + +#endif /* _SAM3X4C_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3x4e.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3x4e.h new file mode 100644 index 000000000..19d8355dc --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3x4e.h @@ -0,0 +1,552 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3X4E_PIO_ +#define _SAM3X4E_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PB15 (1u << 15) /**< \brief Pin Controlled by PB15 */ +#define PIO_PB16 (1u << 16) /**< \brief Pin Controlled by PB16 */ +#define PIO_PB17 (1u << 17) /**< \brief Pin Controlled by PB17 */ +#define PIO_PB18 (1u << 18) /**< \brief Pin Controlled by PB18 */ +#define PIO_PB19 (1u << 19) /**< \brief Pin Controlled by PB19 */ +#define PIO_PB20 (1u << 20) /**< \brief Pin Controlled by PB20 */ +#define PIO_PB21 (1u << 21) /**< \brief Pin Controlled by PB21 */ +#define PIO_PB22 (1u << 22) /**< \brief Pin Controlled by PB22 */ +#define PIO_PB23 (1u << 23) /**< \brief Pin Controlled by PB23 */ +#define PIO_PB24 (1u << 24) /**< \brief Pin Controlled by PB24 */ +#define PIO_PB25 (1u << 25) /**< \brief Pin Controlled by PB25 */ +#define PIO_PB26 (1u << 26) /**< \brief Pin Controlled by PB26 */ +#define PIO_PB27 (1u << 27) /**< \brief Pin Controlled by PB27 */ +#define PIO_PB28 (1u << 28) /**< \brief Pin Controlled by PB28 */ +#define PIO_PB29 (1u << 29) /**< \brief Pin Controlled by PB29 */ +#define PIO_PB30 (1u << 30) /**< \brief Pin Controlled by PB30 */ +#define PIO_PB31 (1u << 31) /**< \brief Pin Controlled by PB31 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA2X1_AD0 (1u << 2) /**< \brief Adc signal: AD0 */ +#define PIO_PA3X1_AD1 (1u << 3) /**< \brief Adc signal: AD1/WKUP1 */ +#define PIO_PA3X1_WKUP1 (1u << 3) /**< \brief Adc signal: AD1/WKUP1 */ +#define PIO_PB17X1_AD10 (1u << 17) /**< \brief Adc signal: AD10 */ +#define PIO_PB18X1_AD11 (1u << 18) /**< \brief Adc signal: AD11 */ +#define PIO_PB19X1_AD12 (1u << 19) /**< \brief Adc signal: AD12 */ +#define PIO_PB20X1_AD13 (1u << 20) /**< \brief Adc signal: AD13 */ +#define PIO_PB21X1_AD14 (1u << 21) /**< \brief Adc signal: AD14/WKUP13 */ +#define PIO_PB21X1_WKUP13 (1u << 21) /**< \brief Adc signal: AD14/WKUP13 */ +#define PIO_PA4X1_AD2 (1u << 4) /**< \brief Adc signal: AD2 */ +#define PIO_PA6X1_AD3 (1u << 6) /**< \brief Adc signal: AD3 */ +#define PIO_PA22X1_AD4 (1u << 22) /**< \brief Adc signal: AD4 */ +#define PIO_PA23X1_AD5 (1u << 23) /**< \brief Adc signal: AD5 */ +#define PIO_PA24X1_AD6 (1u << 24) /**< \brief Adc signal: AD6 */ +#define PIO_PA16X1_AD7 (1u << 16) /**< \brief Adc signal: AD7 */ +#define PIO_PB12X1_AD8 (1u << 12) /**< \brief Adc signal: AD8 */ +#define PIO_PB13X1_AD9 (1u << 13) /**< \brief Adc signal: AD9 */ +#define PIO_PA11B_ADTRG (1u << 11) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for CAN0 peripheral ========== */ +#define PIO_PA1A_CANRX0 (1u << 1) /**< \brief Can0 signal: CANRX0 */ +#define PIO_PA0A_CANTX0 (1u << 0) /**< \brief Can0 signal: CANTX0 */ +/* ========== Pio definition for CAN1 peripheral ========== */ +#define PIO_PB15A_CANRX1 (1u << 15) /**< \brief Can1 signal: CANRX1 */ +#define PIO_PB14A_CANTX1 (1u << 14) /**< \brief Can1 signal: CANTX1 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB15X1_DAC0 (1u << 15) /**< \brief Dacc signal: DAC0/WKUP12 */ +#define PIO_PB15X1_WKUP12 (1u << 15) /**< \brief Dacc signal: DAC0/WKUP12 */ +#define PIO_PB16X1_DAC1 (1u << 16) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA10B_DATRG (1u << 10) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PC21A_A0 (1u << 21) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PC21A_NBS0 (1u << 21) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PC22A_A1 (1u << 22) /**< \brief Ebi signal: A1 */ +#define PIO_PD0A_A10 (1u << 0) /**< \brief Ebi signal: A10 */ +#define PIO_PD22A_A10 (1u << 22) /**< \brief Ebi signal: A10 */ +#define PIO_PD1A_A11 (1u << 1) /**< \brief Ebi signal: A11 */ +#define PIO_PD23A_A11 (1u << 23) /**< \brief Ebi signal: A11 */ +#define PIO_PD2A_A12 (1u << 2) /**< \brief Ebi signal: A12 */ +#define PIO_PD24A_A12 (1u << 24) /**< \brief Ebi signal: A12 */ +#define PIO_PD3A_A13 (1u << 3) /**< \brief Ebi signal: A13 */ +#define PIO_PD25A_A13 (1u << 25) /**< \brief Ebi signal: A13 */ +#define PIO_PD4A_A14 (1u << 4) /**< \brief Ebi signal: A14 */ +#define PIO_PD26A_A14 (1u << 26) /**< \brief Ebi signal: A14 */ +#define PIO_PD5A_A15 (1u << 5) /**< \brief Ebi signal: A15 */ +#define PIO_PD27A_A15 (1u << 27) /**< \brief Ebi signal: A15 */ +#define PIO_PD6A_A16 (1u << 6) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PD6A_BA0 (1u << 6) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PD28A_A16 (1u << 28) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PD28A_BA0 (1u << 28) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PD7A_A17 (1u << 7) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PD7A_BA1 (1u << 7) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PD29A_A17 (1u << 29) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PD29A_BA1 (1u << 29) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PA25B_A18 (1u << 25) /**< \brief Ebi signal: A18 */ +#define PIO_PB10B_A18 (1u << 10) /**< \brief Ebi signal: A18 */ +#define PIO_PD30A_A18 (1u << 30) /**< \brief Ebi signal: A18 */ +#define PIO_PA26B_A19 (1u << 26) /**< \brief Ebi signal: A19 */ +#define PIO_PB11B_A19 (1u << 11) /**< \brief Ebi signal: A19 */ +#define PIO_PE0A_A19 (1u << 0) /**< \brief Ebi signal: A19 */ +#define PIO_PC23A_A2 (1u << 23) /**< \brief Ebi signal: A2 */ +#define PIO_PA18B_A20 (1u << 18) /**< \brief Ebi signal: A20 */ +#define PIO_PA27B_A20 (1u << 27) /**< \brief Ebi signal: A20 */ +#define PIO_PE1A_A20 (1u << 1) /**< \brief Ebi signal: A20 */ +#define PIO_PD8A_A21 (1u << 8) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PD8A_NANDALE (1u << 8) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PE2A_A21 (1u << 2) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PE2A_NANDALE (1u << 2) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PD9A_A22 (1u << 9) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PD9A_NANDCLE (1u << 9) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PE3A_A22 (1u << 3) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PE3A_NANDCLE (1u << 3) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PE4A_A23 (1u << 4) /**< \brief Ebi signal: A23 */ +#define PIO_PC24A_A3 (1u << 24) /**< \brief Ebi signal: A3 */ +#define PIO_PC25A_A4 (1u << 25) /**< \brief Ebi signal: A4 */ +#define PIO_PC26A_A5 (1u << 26) /**< \brief Ebi signal: A5 */ +#define PIO_PD17A_A5 (1u << 17) /**< \brief Ebi signal: A5 */ +#define PIO_PC27A_A6 (1u << 27) /**< \brief Ebi signal: A6 */ +#define PIO_PD18A_A6 (1u << 18) /**< \brief Ebi signal: A6 */ +#define PIO_PC28A_A7 (1u << 28) /**< \brief Ebi signal: A7 */ +#define PIO_PD19A_A7 (1u << 19) /**< \brief Ebi signal: A7 */ +#define PIO_PC29A_A8 (1u << 29) /**< \brief Ebi signal: A8 */ +#define PIO_PD20A_A8 (1u << 20) /**< \brief Ebi signal: A8 */ +#define PIO_PC30A_A9 (1u << 30) /**< \brief Ebi signal: A9 */ +#define PIO_PD21A_A9 (1u << 21) /**< \brief Ebi signal: A9 */ +#define PIO_PD16A_CAS (1u << 16) /**< \brief Ebi signal: CAS */ +#define PIO_PC2A_D0 (1u << 2) /**< \brief Ebi signal: D0 */ +#define PIO_PC3A_D1 (1u << 3) /**< \brief Ebi signal: D1 */ +#define PIO_PC12A_D10 (1u << 12) /**< \brief Ebi signal: D10 */ +#define PIO_PC13A_D11 (1u << 13) /**< \brief Ebi signal: D11 */ +#define PIO_PC14A_D12 (1u << 14) /**< \brief Ebi signal: D12 */ +#define PIO_PC15A_D13 (1u << 15) /**< \brief Ebi signal: D13 */ +#define PIO_PC16A_D14 (1u << 16) /**< \brief Ebi signal: D14 */ +#define PIO_PC17A_D15 (1u << 17) /**< \brief Ebi signal: D15 */ +#define PIO_PC4A_D2 (1u << 4) /**< \brief Ebi signal: D2 */ +#define PIO_PC5A_D3 (1u << 5) /**< \brief Ebi signal: D3 */ +#define PIO_PC6A_D4 (1u << 6) /**< \brief Ebi signal: D4 */ +#define PIO_PC7A_D5 (1u << 7) /**< \brief Ebi signal: D5 */ +#define PIO_PC8A_D6 (1u << 8) /**< \brief Ebi signal: D6 */ +#define PIO_PC9A_D7 (1u << 9) /**< \brief Ebi signal: D7 */ +#define PIO_PC10A_D8 (1u << 10) /**< \brief Ebi signal: D8 */ +#define PIO_PC11A_D9 (1u << 11) /**< \brief Ebi signal: D9 */ +#define PIO_PC19A_NANDOE (1u << 19) /**< \brief Ebi signal: NANDOE */ +#define PIO_PA2B_NANDRDY (1u << 2) /**< \brief Ebi signal: NANDRDY */ +#define PIO_PC20A_NANDWE (1u << 20) /**< \brief Ebi signal: NANDWE */ +#define PIO_PA6B_NCS0 (1u << 6) /**< \brief Ebi signal: NCS0 */ +#define PIO_PA7B_NCS1 (1u << 7) /**< \brief Ebi signal: NCS1 */ +#define PIO_PB24B_NCS2 (1u << 24) /**< \brief Ebi signal: NCS2 */ +#define PIO_PB27A_NCS3 (1u << 27) /**< \brief Ebi signal: NCS3 */ +#define PIO_PE5A_NCS4 (1u << 5) /**< \brief Ebi signal: NCS4 */ +#define PIO_PE6A_NCS5 (1u << 6) /**< \brief Ebi signal: NCS5 */ +#define PIO_PE18B_NCS6 (1u << 18) /**< \brief Ebi signal: NCS6 */ +#define PIO_PE27A_NCS7 (1u << 27) /**< \brief Ebi signal: NCS7 */ +#define PIO_PA29B_NRD (1u << 29) /**< \brief Ebi signal: NRD */ +#define PIO_PA4B_NWAIT (1u << 4) /**< \brief Ebi signal: NWAIT */ +#define PIO_PC18A_NWR0 (1u << 18) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PC18A_NWE (1u << 18) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PD10A_NWR1 (1u << 10) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PD10A_NBS1 (1u << 10) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PD15A_RAS (1u << 15) /**< \brief Ebi signal: RAS */ +#define PIO_PD11A_SDA10 (1u << 11) /**< \brief Ebi signal: SDA10 */ +#define PIO_PD13A_SDCKE (1u << 13) /**< \brief Ebi signal: SDCKE */ +#define PIO_PD12A_SDCS (1u << 12) /**< \brief Ebi signal: SDCS */ +#define PIO_PD14A_SDWE (1u << 14) /**< \brief Ebi signal: SDWE */ +/* ========== Pio definition for EMAC peripheral ========== */ +#define PIO_PC13B_ECOL (1u << 13) /**< \brief Emac signal: ECOL */ +#define PIO_PC10B_ECRS (1u << 10) /**< \brief Emac signal: ECRS */ +#define PIO_PB4A_ECRSDV (1u << 4) /**< \brief Emac signal: ECRSDV/ERXDV */ +#define PIO_PB4A_ERXDV (1u << 4) /**< \brief Emac signal: ECRSDV/ERXDV */ +#define PIO_PB8A_EMDC (1u << 8) /**< \brief Emac signal: EMDC */ +#define PIO_PB9A_EMDIO (1u << 9) /**< \brief Emac signal: EMDIO */ +#define PIO_PB5A_ERX0 (1u << 5) /**< \brief Emac signal: ERX0 */ +#define PIO_PB6A_ERX1 (1u << 6) /**< \brief Emac signal: ERX1 */ +#define PIO_PC11B_ERX2 (1u << 11) /**< \brief Emac signal: ERX2 */ +#define PIO_PC12B_ERX3 (1u << 12) /**< \brief Emac signal: ERX3 */ +#define PIO_PC14B_ERXCK (1u << 14) /**< \brief Emac signal: ERXCK */ +#define PIO_PB7A_ERXER (1u << 7) /**< \brief Emac signal: ERXER */ +#define PIO_PB2A_ETX0 (1u << 2) /**< \brief Emac signal: ETX0 */ +#define PIO_PB3A_ETX1 (1u << 3) /**< \brief Emac signal: ETX1 */ +#define PIO_PC15B_ETX2 (1u << 15) /**< \brief Emac signal: ETX2 */ +#define PIO_PC16B_ETX3 (1u << 16) /**< \brief Emac signal: ETX3 */ +#define PIO_PB0A_ETXCK (1u << 0) /**< \brief Emac signal: ETXCK */ +#define PIO_PB1A_ETXEN (1u << 1) /**< \brief Emac signal: ETXEN */ +#define PIO_PC17B_ETXER (1u << 17) /**< \brief Emac signal: ETXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA20A_MCCDA (1u << 20) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PE20B_MCCDB (1u << 20) /**< \brief Hsmci signal: MCCDB */ +#define PIO_PA19A_MCCK (1u << 19) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA21A_MCDA0 (1u << 21) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA22A_MCDA1 (1u << 22) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA23A_MCDA2 (1u << 23) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA24A_MCDA3 (1u << 24) /**< \brief Hsmci signal: MCDA3 */ +#define PIO_PD0B_MCDA4 (1u << 0) /**< \brief Hsmci signal: MCDA4 */ +#define PIO_PD1B_MCDA5 (1u << 1) /**< \brief Hsmci signal: MCDA5 */ +#define PIO_PD2B_MCDA6 (1u << 2) /**< \brief Hsmci signal: MCDA6 */ +#define PIO_PD3B_MCDA7 (1u << 3) /**< \brief Hsmci signal: MCDA7 */ +#define PIO_PE22B_MCDB0 (1u << 22) /**< \brief Hsmci signal: MCDB0 */ +#define PIO_PE24B_MCDB1 (1u << 24) /**< \brief Hsmci signal: MCDB1 */ +#define PIO_PE26B_MCDB2 (1u << 26) /**< \brief Hsmci signal: MCDB2 */ +#define PIO_PE27B_MCDB3 (1u << 27) /**< \brief Hsmci signal: MCDB3 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA1B_PCK0 (1u << 1) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB22B_PCK0 (1u << 22) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA24B_PCK1 (1u << 24) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA30B_PCK1 (1u << 30) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA28B_PCK2 (1u << 28) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA5B_PWMFI0 (1u << 5) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA3B_PWMFI1 (1u << 3) /**< \brief Pwm signal: PWMFI1 */ +#define PIO_PD6B_PWMFI2 (1u << 6) /**< \brief Pwm signal: PWMFI2 */ +#define PIO_PA8B_PWMH0 (1u << 8) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB12B_PWMH0 (1u << 12) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC3B_PWMH0 (1u << 3) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PE15A_PWMH0 (1u << 15) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB13B_PWMH1 (1u << 13) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC5B_PWMH1 (1u << 5) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PE16A_PWMH1 (1u << 16) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB14B_PWMH2 (1u << 14) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC7B_PWMH2 (1u << 7) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA9B_PWMH3 (1u << 9) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB15B_PWMH3 (1u << 15) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC9B_PWMH3 (1u << 9) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PF3A_PWMH3 (1u << 3) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC20B_PWMH4 (1u << 20) /**< \brief Pwm signal: PWMH4 */ +#define PIO_PE20A_PWMH4 (1u << 20) /**< \brief Pwm signal: PWMH4 */ +#define PIO_PC19B_PWMH5 (1u << 19) /**< \brief Pwm signal: PWMH5 */ +#define PIO_PE22A_PWMH5 (1u << 22) /**< \brief Pwm signal: PWMH5 */ +#define PIO_PC18B_PWMH6 (1u << 18) /**< \brief Pwm signal: PWMH6 */ +#define PIO_PE24A_PWMH6 (1u << 24) /**< \brief Pwm signal: PWMH6 */ +#define PIO_PE26A_PWMH7 (1u << 26) /**< \brief Pwm signal: PWMH7 */ +#define PIO_PA21B_PWML0 (1u << 21) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB16B_PWML0 (1u << 16) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC2B_PWML0 (1u << 2) /**< \brief Pwm signal: PWML0 */ +#define PIO_PE18A_PWML0 (1u << 18) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA12B_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB17B_PWML1 (1u << 17) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC4B_PWML1 (1u << 4) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA20B_PWML2 (1u << 20) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB18B_PWML2 (1u << 18) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC6B_PWML2 (1u << 6) /**< \brief Pwm signal: PWML2 */ +#define PIO_PE17A_PWML2 (1u << 17) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA0B_PWML3 (1u << 0) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB19B_PWML3 (1u << 19) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC8B_PWML3 (1u << 8) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB6B_PWML4 (1u << 6) /**< \brief Pwm signal: PWML4 */ +#define PIO_PC21B_PWML4 (1u << 21) /**< \brief Pwm signal: PWML4 */ +#define PIO_PE19A_PWML4 (1u << 19) /**< \brief Pwm signal: PWML4 */ +#define PIO_PB7B_PWML5 (1u << 7) /**< \brief Pwm signal: PWML5 */ +#define PIO_PC22B_PWML5 (1u << 22) /**< \brief Pwm signal: PWML5 */ +#define PIO_PE21A_PWML5 (1u << 21) /**< \brief Pwm signal: PWML5 */ +#define PIO_PB8B_PWML6 (1u << 8) /**< \brief Pwm signal: PWML6 */ +#define PIO_PC23B_PWML6 (1u << 23) /**< \brief Pwm signal: PWML6 */ +#define PIO_PE23A_PWML6 (1u << 23) /**< \brief Pwm signal: PWML6 */ +#define PIO_PB9B_PWML7 (1u << 9) /**< \brief Pwm signal: PWML7 */ +#define PIO_PC24B_PWML7 (1u << 24) /**< \brief Pwm signal: PWML7 */ +#define PIO_PE25A_PWML7 (1u << 25) /**< \brief Pwm signal: PWML7 */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PA25A_SPI0_MISO (1u << 25) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PA26A_SPI0_MOSI (1u << 26) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PA28A_SPI0_NPCS0 (1u << 28) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA29A_SPI0_NPCS1 (1u << 29) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PB20B_SPI0_NPCS1 (1u << 20) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PA30A_SPI0_NPCS2 (1u << 30) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PB21B_SPI0_NPCS2 (1u << 21) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PA31A_SPI0_NPCS3 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PB23B_SPI0_NPCS3 (1u << 23) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PA27A_SPI0_SPCK (1u << 27) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PB18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PB17A_RF (1u << 17) /**< \brief Ssc signal: RF */ +#define PIO_PB19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA16B_TD (1u << 16) /**< \brief Ssc signal: TD */ +#define PIO_PA15B_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA14B_TK (1u << 14) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PB26B_TCLK0 (1u << 26) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA4A_TCLK1 (1u << 4) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA7A_TCLK2 (1u << 7) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PB25B_TIOA0 (1u << 25) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA2A_TIOA1 (1u << 2) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA5A_TIOA2 (1u << 5) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PB27B_TIOB0 (1u << 27) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA3A_TIOB1 (1u << 3) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA6A_TIOB2 (1u << 6) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PA22B_TCLK3 (1u << 22) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PA23B_TCLK4 (1u << 23) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PB16A_TCLK5 (1u << 16) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PB0B_TIOA3 (1u << 0) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PE9A_TIOA3 (1u << 9) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PB2B_TIOA4 (1u << 2) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PE11A_TIOA4 (1u << 11) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PB4B_TIOA5 (1u << 4) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PE13A_TIOA5 (1u << 13) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PB1B_TIOB3 (1u << 1) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PE10A_TIOB3 (1u << 10) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PB3B_TIOB4 (1u << 3) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PE12A_TIOB4 (1u << 12) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PB5B_TIOB5 (1u << 5) /**< \brief Tc1 signal: TIOB5 */ +#define PIO_PE14A_TIOB5 (1u << 14) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TC2 peripheral ========== */ +#define PIO_PC27B_TCLK6 (1u << 27) /**< \brief Tc2 signal: TCLK6 */ +#define PIO_PC30B_TCLK7 (1u << 30) /**< \brief Tc2 signal: TCLK7 */ +#define PIO_PD9B_TCLK8 (1u << 9) /**< \brief Tc2 signal: TCLK8 */ +#define PIO_PC25B_TIOA6 (1u << 25) /**< \brief Tc2 signal: TIOA6 */ +#define PIO_PC28B_TIOA7 (1u << 28) /**< \brief Tc2 signal: TIOA7 */ +#define PIO_PD7B_TIOA8 (1u << 7) /**< \brief Tc2 signal: TIOA8 */ +#define PIO_PC26B_TIOB6 (1u << 26) /**< \brief Tc2 signal: TIOB6 */ +#define PIO_PC29B_TIOB7 (1u << 29) /**< \brief Tc2 signal: TIOB7 */ +#define PIO_PD8B_TIOB8 (1u << 8) /**< \brief Tc2 signal: TIOB8 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA18A_TWCK0 (1u << 18) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA17A_TWD0 (1u << 17) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB13A_TWCK1 (1u << 13) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB12A_TWD1 (1u << 12) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART peripheral ========== */ +#define PIO_PA8A_URXD (1u << 8) /**< \brief Uart signal: URXD */ +#define PIO_PA9A_UTXD (1u << 9) /**< \brief Uart signal: UTXD */ +/* ========== Pio definition for UOTGHS peripheral ========== */ +#define PIO_PB11A_UOTGID (1u << 11) /**< \brief Uotghs signal: UOTGID */ +#define PIO_PB10A_UOTGVBOF (1u << 10) /**< \brief Uotghs signal: UOTGVBOF */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB26A_CTS0 (1u << 26) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PB25A_RTS0 (1u << 25) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA10A_RXD0 (1u << 10) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA17B_SCK0 (1u << 17) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA11A_TXD0 (1u << 11) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA15A_CTS1 (1u << 15) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA14A_RTS1 (1u << 14) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA12A_RXD1 (1u << 12) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA16A_SCK1 (1u << 16) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA13A_TXD1 (1u << 13) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PB23A_CTS2 (1u << 23) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PB22A_RTS2 (1u << 22) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PB21A_RXD2 (1u << 21) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PB24A_SCK2 (1u << 24) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PB20A_TXD2 (1u << 20) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio definition for USART3 peripheral ========== */ +#define PIO_PF4A_CTS3 (1u << 4) /**< \brief Usart3 signal: CTS3 */ +#define PIO_PF5A_RTS3 (1u << 5) /**< \brief Usart3 signal: RTS3 */ +#define PIO_PD5B_RXD3 (1u << 5) /**< \brief Usart3 signal: RXD3 */ +#define PIO_PE16B_SCK3 (1u << 16) /**< \brief Usart3 signal: SCK3 */ +#define PIO_PD4B_TXD3 (1u << 4) /**< \brief Usart3 signal: TXD3 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PB15_IDX 47 +#define PIO_PB16_IDX 48 +#define PIO_PB17_IDX 49 +#define PIO_PB18_IDX 50 +#define PIO_PB19_IDX 51 +#define PIO_PB20_IDX 52 +#define PIO_PB21_IDX 53 +#define PIO_PB22_IDX 54 +#define PIO_PB23_IDX 55 +#define PIO_PB24_IDX 56 +#define PIO_PB25_IDX 57 +#define PIO_PB26_IDX 58 +#define PIO_PB27_IDX 59 +#define PIO_PB28_IDX 60 +#define PIO_PB29_IDX 61 +#define PIO_PB30_IDX 62 +#define PIO_PB31_IDX 63 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 + +#endif /* _SAM3X4E_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3x8c.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3x8c.h new file mode 100644 index 000000000..023fd5416 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3x8c.h @@ -0,0 +1,358 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3X8C_PIO_ +#define _SAM3X8C_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PB15 (1u << 15) /**< \brief Pin Controlled by PB15 */ +#define PIO_PB16 (1u << 16) /**< \brief Pin Controlled by PB16 */ +#define PIO_PB17 (1u << 17) /**< \brief Pin Controlled by PB17 */ +#define PIO_PB18 (1u << 18) /**< \brief Pin Controlled by PB18 */ +#define PIO_PB19 (1u << 19) /**< \brief Pin Controlled by PB19 */ +#define PIO_PB20 (1u << 20) /**< \brief Pin Controlled by PB20 */ +#define PIO_PB21 (1u << 21) /**< \brief Pin Controlled by PB21 */ +#define PIO_PB22 (1u << 22) /**< \brief Pin Controlled by PB22 */ +#define PIO_PB23 (1u << 23) /**< \brief Pin Controlled by PB23 */ +#define PIO_PB24 (1u << 24) /**< \brief Pin Controlled by PB24 */ +#define PIO_PB25 (1u << 25) /**< \brief Pin Controlled by PB25 */ +#define PIO_PB26 (1u << 26) /**< \brief Pin Controlled by PB26 */ +#define PIO_PB27 (1u << 27) /**< \brief Pin Controlled by PB27 */ +#define PIO_PB28 (1u << 28) /**< \brief Pin Controlled by PB28 */ +#define PIO_PB29 (1u << 29) /**< \brief Pin Controlled by PB29 */ +#define PIO_PB30 (1u << 30) /**< \brief Pin Controlled by PB30 */ +#define PIO_PB31 (1u << 31) /**< \brief Pin Controlled by PB31 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA2X1_AD0 (1u << 2) /**< \brief Adc signal: AD0 */ +#define PIO_PA3X1_AD1 (1u << 3) /**< \brief Adc signal: AD1/WKUP1 */ +#define PIO_PA3X1_WKUP1 (1u << 3) /**< \brief Adc signal: AD1/WKUP1 */ +#define PIO_PB17X1_AD10 (1u << 17) /**< \brief Adc signal: AD10 */ +#define PIO_PB18X1_AD11 (1u << 18) /**< \brief Adc signal: AD11 */ +#define PIO_PB19X1_AD12 (1u << 19) /**< \brief Adc signal: AD12 */ +#define PIO_PB20X1_AD13 (1u << 20) /**< \brief Adc signal: AD13 */ +#define PIO_PB21X1_AD14 (1u << 21) /**< \brief Adc signal: AD14/WKUP13 */ +#define PIO_PB21X1_WKUP13 (1u << 21) /**< \brief Adc signal: AD14/WKUP13 */ +#define PIO_PA4X1_AD2 (1u << 4) /**< \brief Adc signal: AD2 */ +#define PIO_PA6X1_AD3 (1u << 6) /**< \brief Adc signal: AD3 */ +#define PIO_PA22X1_AD4 (1u << 22) /**< \brief Adc signal: AD4 */ +#define PIO_PA23X1_AD5 (1u << 23) /**< \brief Adc signal: AD5 */ +#define PIO_PA24X1_AD6 (1u << 24) /**< \brief Adc signal: AD6 */ +#define PIO_PA16X1_AD7 (1u << 16) /**< \brief Adc signal: AD7 */ +#define PIO_PB12X1_AD8 (1u << 12) /**< \brief Adc signal: AD8 */ +#define PIO_PB13X1_AD9 (1u << 13) /**< \brief Adc signal: AD9 */ +#define PIO_PA11B_ADTRG (1u << 11) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for CAN0 peripheral ========== */ +#define PIO_PA1A_CANRX0 (1u << 1) /**< \brief Can0 signal: CANRX0 */ +#define PIO_PA0A_CANTX0 (1u << 0) /**< \brief Can0 signal: CANTX0 */ +/* ========== Pio definition for CAN1 peripheral ========== */ +#define PIO_PB15A_CANRX1 (1u << 15) /**< \brief Can1 signal: CANRX1 */ +#define PIO_PB14A_CANTX1 (1u << 14) /**< \brief Can1 signal: CANTX1 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB15X1_DAC0 (1u << 15) /**< \brief Dacc signal: DAC0/WKUP12 */ +#define PIO_PB15X1_WKUP12 (1u << 15) /**< \brief Dacc signal: DAC0/WKUP12 */ +#define PIO_PB16X1_DAC1 (1u << 16) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA10B_DATRG (1u << 10) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for EMAC peripheral ========== */ +#define PIO_PC13B_ECOL (1u << 13) /**< \brief Emac signal: ECOL */ +#define PIO_PC10B_ECRS (1u << 10) /**< \brief Emac signal: ECRS */ +#define PIO_PB4A_ECRSDV (1u << 4) /**< \brief Emac signal: ECRSDV/ERXDV */ +#define PIO_PB4A_ERXDV (1u << 4) /**< \brief Emac signal: ECRSDV/ERXDV */ +#define PIO_PB8A_EMDC (1u << 8) /**< \brief Emac signal: EMDC */ +#define PIO_PB9A_EMDIO (1u << 9) /**< \brief Emac signal: EMDIO */ +#define PIO_PB5A_ERX0 (1u << 5) /**< \brief Emac signal: ERX0 */ +#define PIO_PB6A_ERX1 (1u << 6) /**< \brief Emac signal: ERX1 */ +#define PIO_PC11B_ERX2 (1u << 11) /**< \brief Emac signal: ERX2 */ +#define PIO_PC12B_ERX3 (1u << 12) /**< \brief Emac signal: ERX3 */ +#define PIO_PC14B_ERXCK (1u << 14) /**< \brief Emac signal: ERXCK */ +#define PIO_PB7A_ERXER (1u << 7) /**< \brief Emac signal: ERXER */ +#define PIO_PB2A_ETX0 (1u << 2) /**< \brief Emac signal: ETX0 */ +#define PIO_PB3A_ETX1 (1u << 3) /**< \brief Emac signal: ETX1 */ +#define PIO_PC15B_ETX2 (1u << 15) /**< \brief Emac signal: ETX2 */ +#define PIO_PC16B_ETX3 (1u << 16) /**< \brief Emac signal: ETX3 */ +#define PIO_PB0A_ETXCK (1u << 0) /**< \brief Emac signal: ETXCK */ +#define PIO_PB1A_ETXEN (1u << 1) /**< \brief Emac signal: ETXEN */ +#define PIO_PC17B_ETXER (1u << 17) /**< \brief Emac signal: ETXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA20A_MCCDA (1u << 20) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PE20B_MCCDB (1u << 20) /**< \brief Hsmci signal: MCCDB */ +#define PIO_PA19A_MCCK (1u << 19) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA21A_MCDA0 (1u << 21) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA22A_MCDA1 (1u << 22) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA23A_MCDA2 (1u << 23) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA24A_MCDA3 (1u << 24) /**< \brief Hsmci signal: MCDA3 */ +#define PIO_PD0B_MCDA4 (1u << 0) /**< \brief Hsmci signal: MCDA4 */ +#define PIO_PD1B_MCDA5 (1u << 1) /**< \brief Hsmci signal: MCDA5 */ +#define PIO_PD2B_MCDA6 (1u << 2) /**< \brief Hsmci signal: MCDA6 */ +#define PIO_PD3B_MCDA7 (1u << 3) /**< \brief Hsmci signal: MCDA7 */ +#define PIO_PE22B_MCDB0 (1u << 22) /**< \brief Hsmci signal: MCDB0 */ +#define PIO_PE24B_MCDB1 (1u << 24) /**< \brief Hsmci signal: MCDB1 */ +#define PIO_PE26B_MCDB2 (1u << 26) /**< \brief Hsmci signal: MCDB2 */ +#define PIO_PE27B_MCDB3 (1u << 27) /**< \brief Hsmci signal: MCDB3 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA1B_PCK0 (1u << 1) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB22B_PCK0 (1u << 22) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA24B_PCK1 (1u << 24) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA30B_PCK1 (1u << 30) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA28B_PCK2 (1u << 28) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA5B_PWMFI0 (1u << 5) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA3B_PWMFI1 (1u << 3) /**< \brief Pwm signal: PWMFI1 */ +#define PIO_PD6B_PWMFI2 (1u << 6) /**< \brief Pwm signal: PWMFI2 */ +#define PIO_PA8B_PWMH0 (1u << 8) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB12B_PWMH0 (1u << 12) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC3B_PWMH0 (1u << 3) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PE15A_PWMH0 (1u << 15) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB13B_PWMH1 (1u << 13) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC5B_PWMH1 (1u << 5) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PE16A_PWMH1 (1u << 16) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB14B_PWMH2 (1u << 14) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC7B_PWMH2 (1u << 7) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA9B_PWMH3 (1u << 9) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB15B_PWMH3 (1u << 15) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC9B_PWMH3 (1u << 9) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PF3A_PWMH3 (1u << 3) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC20B_PWMH4 (1u << 20) /**< \brief Pwm signal: PWMH4 */ +#define PIO_PE20A_PWMH4 (1u << 20) /**< \brief Pwm signal: PWMH4 */ +#define PIO_PC19B_PWMH5 (1u << 19) /**< \brief Pwm signal: PWMH5 */ +#define PIO_PE22A_PWMH5 (1u << 22) /**< \brief Pwm signal: PWMH5 */ +#define PIO_PC18B_PWMH6 (1u << 18) /**< \brief Pwm signal: PWMH6 */ +#define PIO_PE24A_PWMH6 (1u << 24) /**< \brief Pwm signal: PWMH6 */ +#define PIO_PE26A_PWMH7 (1u << 26) /**< \brief Pwm signal: PWMH7 */ +#define PIO_PA21B_PWML0 (1u << 21) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB16B_PWML0 (1u << 16) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC2B_PWML0 (1u << 2) /**< \brief Pwm signal: PWML0 */ +#define PIO_PE18A_PWML0 (1u << 18) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA12B_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB17B_PWML1 (1u << 17) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC4B_PWML1 (1u << 4) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA20B_PWML2 (1u << 20) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB18B_PWML2 (1u << 18) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC6B_PWML2 (1u << 6) /**< \brief Pwm signal: PWML2 */ +#define PIO_PE17A_PWML2 (1u << 17) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA0B_PWML3 (1u << 0) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB19B_PWML3 (1u << 19) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC8B_PWML3 (1u << 8) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB6B_PWML4 (1u << 6) /**< \brief Pwm signal: PWML4 */ +#define PIO_PC21B_PWML4 (1u << 21) /**< \brief Pwm signal: PWML4 */ +#define PIO_PE19A_PWML4 (1u << 19) /**< \brief Pwm signal: PWML4 */ +#define PIO_PB7B_PWML5 (1u << 7) /**< \brief Pwm signal: PWML5 */ +#define PIO_PC22B_PWML5 (1u << 22) /**< \brief Pwm signal: PWML5 */ +#define PIO_PE21A_PWML5 (1u << 21) /**< \brief Pwm signal: PWML5 */ +#define PIO_PB8B_PWML6 (1u << 8) /**< \brief Pwm signal: PWML6 */ +#define PIO_PC23B_PWML6 (1u << 23) /**< \brief Pwm signal: PWML6 */ +#define PIO_PE23A_PWML6 (1u << 23) /**< \brief Pwm signal: PWML6 */ +#define PIO_PB9B_PWML7 (1u << 9) /**< \brief Pwm signal: PWML7 */ +#define PIO_PC24B_PWML7 (1u << 24) /**< \brief Pwm signal: PWML7 */ +#define PIO_PE25A_PWML7 (1u << 25) /**< \brief Pwm signal: PWML7 */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PA25A_SPI0_MISO (1u << 25) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PA26A_SPI0_MOSI (1u << 26) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PA28A_SPI0_NPCS0 (1u << 28) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA29A_SPI0_NPCS1 (1u << 29) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PB20B_SPI0_NPCS1 (1u << 20) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PA30A_SPI0_NPCS2 (1u << 30) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PB21B_SPI0_NPCS2 (1u << 21) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PA31A_SPI0_NPCS3 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PB23B_SPI0_NPCS3 (1u << 23) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PA27A_SPI0_SPCK (1u << 27) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PB18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PB17A_RF (1u << 17) /**< \brief Ssc signal: RF */ +#define PIO_PB19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA16B_TD (1u << 16) /**< \brief Ssc signal: TD */ +#define PIO_PA15B_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA14B_TK (1u << 14) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PB26B_TCLK0 (1u << 26) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA4A_TCLK1 (1u << 4) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA7A_TCLK2 (1u << 7) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PB25B_TIOA0 (1u << 25) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA2A_TIOA1 (1u << 2) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA5A_TIOA2 (1u << 5) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PB27B_TIOB0 (1u << 27) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA3A_TIOB1 (1u << 3) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA6A_TIOB2 (1u << 6) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PA22B_TCLK3 (1u << 22) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PA23B_TCLK4 (1u << 23) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PB16A_TCLK5 (1u << 16) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PB0B_TIOA3 (1u << 0) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PE9A_TIOA3 (1u << 9) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PB2B_TIOA4 (1u << 2) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PE11A_TIOA4 (1u << 11) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PB4B_TIOA5 (1u << 4) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PE13A_TIOA5 (1u << 13) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PB1B_TIOB3 (1u << 1) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PE10A_TIOB3 (1u << 10) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PB3B_TIOB4 (1u << 3) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PE12A_TIOB4 (1u << 12) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PB5B_TIOB5 (1u << 5) /**< \brief Tc1 signal: TIOB5 */ +#define PIO_PE14A_TIOB5 (1u << 14) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA18A_TWCK0 (1u << 18) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA17A_TWD0 (1u << 17) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB13A_TWCK1 (1u << 13) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB12A_TWD1 (1u << 12) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART peripheral ========== */ +#define PIO_PA8A_URXD (1u << 8) /**< \brief Uart signal: URXD */ +#define PIO_PA9A_UTXD (1u << 9) /**< \brief Uart signal: UTXD */ +/* ========== Pio definition for UOTGHS peripheral ========== */ +#define PIO_PB11A_UOTGID (1u << 11) /**< \brief Uotghs signal: UOTGID */ +#define PIO_PB10A_UOTGVBOF (1u << 10) /**< \brief Uotghs signal: UOTGVBOF */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB26A_CTS0 (1u << 26) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PB25A_RTS0 (1u << 25) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA10A_RXD0 (1u << 10) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA17B_SCK0 (1u << 17) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA11A_TXD0 (1u << 11) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA15A_CTS1 (1u << 15) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA14A_RTS1 (1u << 14) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA12A_RXD1 (1u << 12) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA16A_SCK1 (1u << 16) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA13A_TXD1 (1u << 13) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PB23A_CTS2 (1u << 23) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PB22A_RTS2 (1u << 22) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PB21A_RXD2 (1u << 21) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PB24A_SCK2 (1u << 24) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PB20A_TXD2 (1u << 20) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PB15_IDX 47 +#define PIO_PB16_IDX 48 +#define PIO_PB17_IDX 49 +#define PIO_PB18_IDX 50 +#define PIO_PB19_IDX 51 +#define PIO_PB20_IDX 52 +#define PIO_PB21_IDX 53 +#define PIO_PB22_IDX 54 +#define PIO_PB23_IDX 55 +#define PIO_PB24_IDX 56 +#define PIO_PB25_IDX 57 +#define PIO_PB26_IDX 58 +#define PIO_PB27_IDX 59 +#define PIO_PB28_IDX 60 +#define PIO_PB29_IDX 61 +#define PIO_PB30_IDX 62 +#define PIO_PB31_IDX 63 + +#endif /* _SAM3X8C_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3x8e.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3x8e.h new file mode 100644 index 000000000..904349e07 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3x8e.h @@ -0,0 +1,552 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3X8E_PIO_ +#define _SAM3X8E_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PB15 (1u << 15) /**< \brief Pin Controlled by PB15 */ +#define PIO_PB16 (1u << 16) /**< \brief Pin Controlled by PB16 */ +#define PIO_PB17 (1u << 17) /**< \brief Pin Controlled by PB17 */ +#define PIO_PB18 (1u << 18) /**< \brief Pin Controlled by PB18 */ +#define PIO_PB19 (1u << 19) /**< \brief Pin Controlled by PB19 */ +#define PIO_PB20 (1u << 20) /**< \brief Pin Controlled by PB20 */ +#define PIO_PB21 (1u << 21) /**< \brief Pin Controlled by PB21 */ +#define PIO_PB22 (1u << 22) /**< \brief Pin Controlled by PB22 */ +#define PIO_PB23 (1u << 23) /**< \brief Pin Controlled by PB23 */ +#define PIO_PB24 (1u << 24) /**< \brief Pin Controlled by PB24 */ +#define PIO_PB25 (1u << 25) /**< \brief Pin Controlled by PB25 */ +#define PIO_PB26 (1u << 26) /**< \brief Pin Controlled by PB26 */ +#define PIO_PB27 (1u << 27) /**< \brief Pin Controlled by PB27 */ +#define PIO_PB28 (1u << 28) /**< \brief Pin Controlled by PB28 */ +#define PIO_PB29 (1u << 29) /**< \brief Pin Controlled by PB29 */ +#define PIO_PB30 (1u << 30) /**< \brief Pin Controlled by PB30 */ +#define PIO_PB31 (1u << 31) /**< \brief Pin Controlled by PB31 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA2X1_AD0 (1u << 2) /**< \brief Adc signal: AD0 */ +#define PIO_PA3X1_AD1 (1u << 3) /**< \brief Adc signal: AD1/WKUP1 */ +#define PIO_PA3X1_WKUP1 (1u << 3) /**< \brief Adc signal: AD1/WKUP1 */ +#define PIO_PB17X1_AD10 (1u << 17) /**< \brief Adc signal: AD10 */ +#define PIO_PB18X1_AD11 (1u << 18) /**< \brief Adc signal: AD11 */ +#define PIO_PB19X1_AD12 (1u << 19) /**< \brief Adc signal: AD12 */ +#define PIO_PB20X1_AD13 (1u << 20) /**< \brief Adc signal: AD13 */ +#define PIO_PB21X1_AD14 (1u << 21) /**< \brief Adc signal: AD14/WKUP13 */ +#define PIO_PB21X1_WKUP13 (1u << 21) /**< \brief Adc signal: AD14/WKUP13 */ +#define PIO_PA4X1_AD2 (1u << 4) /**< \brief Adc signal: AD2 */ +#define PIO_PA6X1_AD3 (1u << 6) /**< \brief Adc signal: AD3 */ +#define PIO_PA22X1_AD4 (1u << 22) /**< \brief Adc signal: AD4 */ +#define PIO_PA23X1_AD5 (1u << 23) /**< \brief Adc signal: AD5 */ +#define PIO_PA24X1_AD6 (1u << 24) /**< \brief Adc signal: AD6 */ +#define PIO_PA16X1_AD7 (1u << 16) /**< \brief Adc signal: AD7 */ +#define PIO_PB12X1_AD8 (1u << 12) /**< \brief Adc signal: AD8 */ +#define PIO_PB13X1_AD9 (1u << 13) /**< \brief Adc signal: AD9 */ +#define PIO_PA11B_ADTRG (1u << 11) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for CAN0 peripheral ========== */ +#define PIO_PA1A_CANRX0 (1u << 1) /**< \brief Can0 signal: CANRX0 */ +#define PIO_PA0A_CANTX0 (1u << 0) /**< \brief Can0 signal: CANTX0 */ +/* ========== Pio definition for CAN1 peripheral ========== */ +#define PIO_PB15A_CANRX1 (1u << 15) /**< \brief Can1 signal: CANRX1 */ +#define PIO_PB14A_CANTX1 (1u << 14) /**< \brief Can1 signal: CANTX1 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB15X1_DAC0 (1u << 15) /**< \brief Dacc signal: DAC0/WKUP12 */ +#define PIO_PB15X1_WKUP12 (1u << 15) /**< \brief Dacc signal: DAC0/WKUP12 */ +#define PIO_PB16X1_DAC1 (1u << 16) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA10B_DATRG (1u << 10) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PC21A_A0 (1u << 21) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PC21A_NBS0 (1u << 21) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PC22A_A1 (1u << 22) /**< \brief Ebi signal: A1 */ +#define PIO_PD0A_A10 (1u << 0) /**< \brief Ebi signal: A10 */ +#define PIO_PD22A_A10 (1u << 22) /**< \brief Ebi signal: A10 */ +#define PIO_PD1A_A11 (1u << 1) /**< \brief Ebi signal: A11 */ +#define PIO_PD23A_A11 (1u << 23) /**< \brief Ebi signal: A11 */ +#define PIO_PD2A_A12 (1u << 2) /**< \brief Ebi signal: A12 */ +#define PIO_PD24A_A12 (1u << 24) /**< \brief Ebi signal: A12 */ +#define PIO_PD3A_A13 (1u << 3) /**< \brief Ebi signal: A13 */ +#define PIO_PD25A_A13 (1u << 25) /**< \brief Ebi signal: A13 */ +#define PIO_PD4A_A14 (1u << 4) /**< \brief Ebi signal: A14 */ +#define PIO_PD26A_A14 (1u << 26) /**< \brief Ebi signal: A14 */ +#define PIO_PD5A_A15 (1u << 5) /**< \brief Ebi signal: A15 */ +#define PIO_PD27A_A15 (1u << 27) /**< \brief Ebi signal: A15 */ +#define PIO_PD6A_A16 (1u << 6) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PD6A_BA0 (1u << 6) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PD28A_A16 (1u << 28) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PD28A_BA0 (1u << 28) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PD7A_A17 (1u << 7) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PD7A_BA1 (1u << 7) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PD29A_A17 (1u << 29) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PD29A_BA1 (1u << 29) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PA25B_A18 (1u << 25) /**< \brief Ebi signal: A18 */ +#define PIO_PB10B_A18 (1u << 10) /**< \brief Ebi signal: A18 */ +#define PIO_PD30A_A18 (1u << 30) /**< \brief Ebi signal: A18 */ +#define PIO_PA26B_A19 (1u << 26) /**< \brief Ebi signal: A19 */ +#define PIO_PB11B_A19 (1u << 11) /**< \brief Ebi signal: A19 */ +#define PIO_PE0A_A19 (1u << 0) /**< \brief Ebi signal: A19 */ +#define PIO_PC23A_A2 (1u << 23) /**< \brief Ebi signal: A2 */ +#define PIO_PA18B_A20 (1u << 18) /**< \brief Ebi signal: A20 */ +#define PIO_PA27B_A20 (1u << 27) /**< \brief Ebi signal: A20 */ +#define PIO_PE1A_A20 (1u << 1) /**< \brief Ebi signal: A20 */ +#define PIO_PD8A_A21 (1u << 8) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PD8A_NANDALE (1u << 8) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PE2A_A21 (1u << 2) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PE2A_NANDALE (1u << 2) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PD9A_A22 (1u << 9) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PD9A_NANDCLE (1u << 9) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PE3A_A22 (1u << 3) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PE3A_NANDCLE (1u << 3) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PE4A_A23 (1u << 4) /**< \brief Ebi signal: A23 */ +#define PIO_PC24A_A3 (1u << 24) /**< \brief Ebi signal: A3 */ +#define PIO_PC25A_A4 (1u << 25) /**< \brief Ebi signal: A4 */ +#define PIO_PC26A_A5 (1u << 26) /**< \brief Ebi signal: A5 */ +#define PIO_PD17A_A5 (1u << 17) /**< \brief Ebi signal: A5 */ +#define PIO_PC27A_A6 (1u << 27) /**< \brief Ebi signal: A6 */ +#define PIO_PD18A_A6 (1u << 18) /**< \brief Ebi signal: A6 */ +#define PIO_PC28A_A7 (1u << 28) /**< \brief Ebi signal: A7 */ +#define PIO_PD19A_A7 (1u << 19) /**< \brief Ebi signal: A7 */ +#define PIO_PC29A_A8 (1u << 29) /**< \brief Ebi signal: A8 */ +#define PIO_PD20A_A8 (1u << 20) /**< \brief Ebi signal: A8 */ +#define PIO_PC30A_A9 (1u << 30) /**< \brief Ebi signal: A9 */ +#define PIO_PD21A_A9 (1u << 21) /**< \brief Ebi signal: A9 */ +#define PIO_PD16A_CAS (1u << 16) /**< \brief Ebi signal: CAS */ +#define PIO_PC2A_D0 (1u << 2) /**< \brief Ebi signal: D0 */ +#define PIO_PC3A_D1 (1u << 3) /**< \brief Ebi signal: D1 */ +#define PIO_PC12A_D10 (1u << 12) /**< \brief Ebi signal: D10 */ +#define PIO_PC13A_D11 (1u << 13) /**< \brief Ebi signal: D11 */ +#define PIO_PC14A_D12 (1u << 14) /**< \brief Ebi signal: D12 */ +#define PIO_PC15A_D13 (1u << 15) /**< \brief Ebi signal: D13 */ +#define PIO_PC16A_D14 (1u << 16) /**< \brief Ebi signal: D14 */ +#define PIO_PC17A_D15 (1u << 17) /**< \brief Ebi signal: D15 */ +#define PIO_PC4A_D2 (1u << 4) /**< \brief Ebi signal: D2 */ +#define PIO_PC5A_D3 (1u << 5) /**< \brief Ebi signal: D3 */ +#define PIO_PC6A_D4 (1u << 6) /**< \brief Ebi signal: D4 */ +#define PIO_PC7A_D5 (1u << 7) /**< \brief Ebi signal: D5 */ +#define PIO_PC8A_D6 (1u << 8) /**< \brief Ebi signal: D6 */ +#define PIO_PC9A_D7 (1u << 9) /**< \brief Ebi signal: D7 */ +#define PIO_PC10A_D8 (1u << 10) /**< \brief Ebi signal: D8 */ +#define PIO_PC11A_D9 (1u << 11) /**< \brief Ebi signal: D9 */ +#define PIO_PC19A_NANDOE (1u << 19) /**< \brief Ebi signal: NANDOE */ +#define PIO_PA2B_NANDRDY (1u << 2) /**< \brief Ebi signal: NANDRDY */ +#define PIO_PC20A_NANDWE (1u << 20) /**< \brief Ebi signal: NANDWE */ +#define PIO_PA6B_NCS0 (1u << 6) /**< \brief Ebi signal: NCS0 */ +#define PIO_PA7B_NCS1 (1u << 7) /**< \brief Ebi signal: NCS1 */ +#define PIO_PB24B_NCS2 (1u << 24) /**< \brief Ebi signal: NCS2 */ +#define PIO_PB27A_NCS3 (1u << 27) /**< \brief Ebi signal: NCS3 */ +#define PIO_PE5A_NCS4 (1u << 5) /**< \brief Ebi signal: NCS4 */ +#define PIO_PE6A_NCS5 (1u << 6) /**< \brief Ebi signal: NCS5 */ +#define PIO_PE18B_NCS6 (1u << 18) /**< \brief Ebi signal: NCS6 */ +#define PIO_PE27A_NCS7 (1u << 27) /**< \brief Ebi signal: NCS7 */ +#define PIO_PA29B_NRD (1u << 29) /**< \brief Ebi signal: NRD */ +#define PIO_PA4B_NWAIT (1u << 4) /**< \brief Ebi signal: NWAIT */ +#define PIO_PC18A_NWR0 (1u << 18) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PC18A_NWE (1u << 18) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PD10A_NWR1 (1u << 10) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PD10A_NBS1 (1u << 10) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PD15A_RAS (1u << 15) /**< \brief Ebi signal: RAS */ +#define PIO_PD11A_SDA10 (1u << 11) /**< \brief Ebi signal: SDA10 */ +#define PIO_PD13A_SDCKE (1u << 13) /**< \brief Ebi signal: SDCKE */ +#define PIO_PD12A_SDCS (1u << 12) /**< \brief Ebi signal: SDCS */ +#define PIO_PD14A_SDWE (1u << 14) /**< \brief Ebi signal: SDWE */ +/* ========== Pio definition for EMAC peripheral ========== */ +#define PIO_PC13B_ECOL (1u << 13) /**< \brief Emac signal: ECOL */ +#define PIO_PC10B_ECRS (1u << 10) /**< \brief Emac signal: ECRS */ +#define PIO_PB4A_ECRSDV (1u << 4) /**< \brief Emac signal: ECRSDV/ERXDV */ +#define PIO_PB4A_ERXDV (1u << 4) /**< \brief Emac signal: ECRSDV/ERXDV */ +#define PIO_PB8A_EMDC (1u << 8) /**< \brief Emac signal: EMDC */ +#define PIO_PB9A_EMDIO (1u << 9) /**< \brief Emac signal: EMDIO */ +#define PIO_PB5A_ERX0 (1u << 5) /**< \brief Emac signal: ERX0 */ +#define PIO_PB6A_ERX1 (1u << 6) /**< \brief Emac signal: ERX1 */ +#define PIO_PC11B_ERX2 (1u << 11) /**< \brief Emac signal: ERX2 */ +#define PIO_PC12B_ERX3 (1u << 12) /**< \brief Emac signal: ERX3 */ +#define PIO_PC14B_ERXCK (1u << 14) /**< \brief Emac signal: ERXCK */ +#define PIO_PB7A_ERXER (1u << 7) /**< \brief Emac signal: ERXER */ +#define PIO_PB2A_ETX0 (1u << 2) /**< \brief Emac signal: ETX0 */ +#define PIO_PB3A_ETX1 (1u << 3) /**< \brief Emac signal: ETX1 */ +#define PIO_PC15B_ETX2 (1u << 15) /**< \brief Emac signal: ETX2 */ +#define PIO_PC16B_ETX3 (1u << 16) /**< \brief Emac signal: ETX3 */ +#define PIO_PB0A_ETXCK (1u << 0) /**< \brief Emac signal: ETXCK */ +#define PIO_PB1A_ETXEN (1u << 1) /**< \brief Emac signal: ETXEN */ +#define PIO_PC17B_ETXER (1u << 17) /**< \brief Emac signal: ETXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA20A_MCCDA (1u << 20) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PE20B_MCCDB (1u << 20) /**< \brief Hsmci signal: MCCDB */ +#define PIO_PA19A_MCCK (1u << 19) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA21A_MCDA0 (1u << 21) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA22A_MCDA1 (1u << 22) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA23A_MCDA2 (1u << 23) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA24A_MCDA3 (1u << 24) /**< \brief Hsmci signal: MCDA3 */ +#define PIO_PD0B_MCDA4 (1u << 0) /**< \brief Hsmci signal: MCDA4 */ +#define PIO_PD1B_MCDA5 (1u << 1) /**< \brief Hsmci signal: MCDA5 */ +#define PIO_PD2B_MCDA6 (1u << 2) /**< \brief Hsmci signal: MCDA6 */ +#define PIO_PD3B_MCDA7 (1u << 3) /**< \brief Hsmci signal: MCDA7 */ +#define PIO_PE22B_MCDB0 (1u << 22) /**< \brief Hsmci signal: MCDB0 */ +#define PIO_PE24B_MCDB1 (1u << 24) /**< \brief Hsmci signal: MCDB1 */ +#define PIO_PE26B_MCDB2 (1u << 26) /**< \brief Hsmci signal: MCDB2 */ +#define PIO_PE27B_MCDB3 (1u << 27) /**< \brief Hsmci signal: MCDB3 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA1B_PCK0 (1u << 1) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB22B_PCK0 (1u << 22) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA24B_PCK1 (1u << 24) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA30B_PCK1 (1u << 30) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA28B_PCK2 (1u << 28) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA5B_PWMFI0 (1u << 5) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA3B_PWMFI1 (1u << 3) /**< \brief Pwm signal: PWMFI1 */ +#define PIO_PD6B_PWMFI2 (1u << 6) /**< \brief Pwm signal: PWMFI2 */ +#define PIO_PA8B_PWMH0 (1u << 8) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB12B_PWMH0 (1u << 12) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC3B_PWMH0 (1u << 3) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PE15A_PWMH0 (1u << 15) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB13B_PWMH1 (1u << 13) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC5B_PWMH1 (1u << 5) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PE16A_PWMH1 (1u << 16) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB14B_PWMH2 (1u << 14) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC7B_PWMH2 (1u << 7) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA9B_PWMH3 (1u << 9) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB15B_PWMH3 (1u << 15) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC9B_PWMH3 (1u << 9) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PF3A_PWMH3 (1u << 3) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC20B_PWMH4 (1u << 20) /**< \brief Pwm signal: PWMH4 */ +#define PIO_PE20A_PWMH4 (1u << 20) /**< \brief Pwm signal: PWMH4 */ +#define PIO_PC19B_PWMH5 (1u << 19) /**< \brief Pwm signal: PWMH5 */ +#define PIO_PE22A_PWMH5 (1u << 22) /**< \brief Pwm signal: PWMH5 */ +#define PIO_PC18B_PWMH6 (1u << 18) /**< \brief Pwm signal: PWMH6 */ +#define PIO_PE24A_PWMH6 (1u << 24) /**< \brief Pwm signal: PWMH6 */ +#define PIO_PE26A_PWMH7 (1u << 26) /**< \brief Pwm signal: PWMH7 */ +#define PIO_PA21B_PWML0 (1u << 21) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB16B_PWML0 (1u << 16) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC2B_PWML0 (1u << 2) /**< \brief Pwm signal: PWML0 */ +#define PIO_PE18A_PWML0 (1u << 18) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA12B_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB17B_PWML1 (1u << 17) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC4B_PWML1 (1u << 4) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA20B_PWML2 (1u << 20) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB18B_PWML2 (1u << 18) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC6B_PWML2 (1u << 6) /**< \brief Pwm signal: PWML2 */ +#define PIO_PE17A_PWML2 (1u << 17) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA0B_PWML3 (1u << 0) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB19B_PWML3 (1u << 19) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC8B_PWML3 (1u << 8) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB6B_PWML4 (1u << 6) /**< \brief Pwm signal: PWML4 */ +#define PIO_PC21B_PWML4 (1u << 21) /**< \brief Pwm signal: PWML4 */ +#define PIO_PE19A_PWML4 (1u << 19) /**< \brief Pwm signal: PWML4 */ +#define PIO_PB7B_PWML5 (1u << 7) /**< \brief Pwm signal: PWML5 */ +#define PIO_PC22B_PWML5 (1u << 22) /**< \brief Pwm signal: PWML5 */ +#define PIO_PE21A_PWML5 (1u << 21) /**< \brief Pwm signal: PWML5 */ +#define PIO_PB8B_PWML6 (1u << 8) /**< \brief Pwm signal: PWML6 */ +#define PIO_PC23B_PWML6 (1u << 23) /**< \brief Pwm signal: PWML6 */ +#define PIO_PE23A_PWML6 (1u << 23) /**< \brief Pwm signal: PWML6 */ +#define PIO_PB9B_PWML7 (1u << 9) /**< \brief Pwm signal: PWML7 */ +#define PIO_PC24B_PWML7 (1u << 24) /**< \brief Pwm signal: PWML7 */ +#define PIO_PE25A_PWML7 (1u << 25) /**< \brief Pwm signal: PWML7 */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PA25A_SPI0_MISO (1u << 25) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PA26A_SPI0_MOSI (1u << 26) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PA28A_SPI0_NPCS0 (1u << 28) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA29A_SPI0_NPCS1 (1u << 29) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PB20B_SPI0_NPCS1 (1u << 20) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PA30A_SPI0_NPCS2 (1u << 30) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PB21B_SPI0_NPCS2 (1u << 21) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PA31A_SPI0_NPCS3 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PB23B_SPI0_NPCS3 (1u << 23) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PA27A_SPI0_SPCK (1u << 27) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PB18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PB17A_RF (1u << 17) /**< \brief Ssc signal: RF */ +#define PIO_PB19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA16B_TD (1u << 16) /**< \brief Ssc signal: TD */ +#define PIO_PA15B_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA14B_TK (1u << 14) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PB26B_TCLK0 (1u << 26) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA4A_TCLK1 (1u << 4) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA7A_TCLK2 (1u << 7) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PB25B_TIOA0 (1u << 25) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA2A_TIOA1 (1u << 2) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA5A_TIOA2 (1u << 5) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PB27B_TIOB0 (1u << 27) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA3A_TIOB1 (1u << 3) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA6A_TIOB2 (1u << 6) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PA22B_TCLK3 (1u << 22) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PA23B_TCLK4 (1u << 23) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PB16A_TCLK5 (1u << 16) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PB0B_TIOA3 (1u << 0) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PE9A_TIOA3 (1u << 9) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PB2B_TIOA4 (1u << 2) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PE11A_TIOA4 (1u << 11) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PB4B_TIOA5 (1u << 4) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PE13A_TIOA5 (1u << 13) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PB1B_TIOB3 (1u << 1) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PE10A_TIOB3 (1u << 10) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PB3B_TIOB4 (1u << 3) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PE12A_TIOB4 (1u << 12) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PB5B_TIOB5 (1u << 5) /**< \brief Tc1 signal: TIOB5 */ +#define PIO_PE14A_TIOB5 (1u << 14) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TC2 peripheral ========== */ +#define PIO_PC27B_TCLK6 (1u << 27) /**< \brief Tc2 signal: TCLK6 */ +#define PIO_PC30B_TCLK7 (1u << 30) /**< \brief Tc2 signal: TCLK7 */ +#define PIO_PD9B_TCLK8 (1u << 9) /**< \brief Tc2 signal: TCLK8 */ +#define PIO_PC25B_TIOA6 (1u << 25) /**< \brief Tc2 signal: TIOA6 */ +#define PIO_PC28B_TIOA7 (1u << 28) /**< \brief Tc2 signal: TIOA7 */ +#define PIO_PD7B_TIOA8 (1u << 7) /**< \brief Tc2 signal: TIOA8 */ +#define PIO_PC26B_TIOB6 (1u << 26) /**< \brief Tc2 signal: TIOB6 */ +#define PIO_PC29B_TIOB7 (1u << 29) /**< \brief Tc2 signal: TIOB7 */ +#define PIO_PD8B_TIOB8 (1u << 8) /**< \brief Tc2 signal: TIOB8 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA18A_TWCK0 (1u << 18) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA17A_TWD0 (1u << 17) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB13A_TWCK1 (1u << 13) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB12A_TWD1 (1u << 12) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART peripheral ========== */ +#define PIO_PA8A_URXD (1u << 8) /**< \brief Uart signal: URXD */ +#define PIO_PA9A_UTXD (1u << 9) /**< \brief Uart signal: UTXD */ +/* ========== Pio definition for UOTGHS peripheral ========== */ +#define PIO_PB11A_UOTGID (1u << 11) /**< \brief Uotghs signal: UOTGID */ +#define PIO_PB10A_UOTGVBOF (1u << 10) /**< \brief Uotghs signal: UOTGVBOF */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB26A_CTS0 (1u << 26) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PB25A_RTS0 (1u << 25) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA10A_RXD0 (1u << 10) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA17B_SCK0 (1u << 17) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA11A_TXD0 (1u << 11) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA15A_CTS1 (1u << 15) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA14A_RTS1 (1u << 14) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA12A_RXD1 (1u << 12) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA16A_SCK1 (1u << 16) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA13A_TXD1 (1u << 13) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PB23A_CTS2 (1u << 23) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PB22A_RTS2 (1u << 22) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PB21A_RXD2 (1u << 21) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PB24A_SCK2 (1u << 24) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PB20A_TXD2 (1u << 20) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio definition for USART3 peripheral ========== */ +#define PIO_PF4A_CTS3 (1u << 4) /**< \brief Usart3 signal: CTS3 */ +#define PIO_PF5A_RTS3 (1u << 5) /**< \brief Usart3 signal: RTS3 */ +#define PIO_PD5B_RXD3 (1u << 5) /**< \brief Usart3 signal: RXD3 */ +#define PIO_PE16B_SCK3 (1u << 16) /**< \brief Usart3 signal: SCK3 */ +#define PIO_PD4B_TXD3 (1u << 4) /**< \brief Usart3 signal: TXD3 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PB15_IDX 47 +#define PIO_PB16_IDX 48 +#define PIO_PB17_IDX 49 +#define PIO_PB18_IDX 50 +#define PIO_PB19_IDX 51 +#define PIO_PB20_IDX 52 +#define PIO_PB21_IDX 53 +#define PIO_PB22_IDX 54 +#define PIO_PB23_IDX 55 +#define PIO_PB24_IDX 56 +#define PIO_PB25_IDX 57 +#define PIO_PB26_IDX 58 +#define PIO_PB27_IDX 59 +#define PIO_PB28_IDX 60 +#define PIO_PB29_IDX 61 +#define PIO_PB30_IDX 62 +#define PIO_PB31_IDX 63 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 + +#endif /* _SAM3X8E_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3x8h.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3x8h.h new file mode 100644 index 000000000..f438e52c4 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/pio/pio_sam3x8h.h @@ -0,0 +1,680 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3X8H_PIO_ +#define _SAM3X8H_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB10 (1u << 10) /**< \brief Pin Controlled by PB10 */ +#define PIO_PB11 (1u << 11) /**< \brief Pin Controlled by PB11 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PB14 (1u << 14) /**< \brief Pin Controlled by PB14 */ +#define PIO_PB15 (1u << 15) /**< \brief Pin Controlled by PB15 */ +#define PIO_PB16 (1u << 16) /**< \brief Pin Controlled by PB16 */ +#define PIO_PB17 (1u << 17) /**< \brief Pin Controlled by PB17 */ +#define PIO_PB18 (1u << 18) /**< \brief Pin Controlled by PB18 */ +#define PIO_PB19 (1u << 19) /**< \brief Pin Controlled by PB19 */ +#define PIO_PB20 (1u << 20) /**< \brief Pin Controlled by PB20 */ +#define PIO_PB21 (1u << 21) /**< \brief Pin Controlled by PB21 */ +#define PIO_PB22 (1u << 22) /**< \brief Pin Controlled by PB22 */ +#define PIO_PB23 (1u << 23) /**< \brief Pin Controlled by PB23 */ +#define PIO_PB24 (1u << 24) /**< \brief Pin Controlled by PB24 */ +#define PIO_PB25 (1u << 25) /**< \brief Pin Controlled by PB25 */ +#define PIO_PB26 (1u << 26) /**< \brief Pin Controlled by PB26 */ +#define PIO_PB27 (1u << 27) /**< \brief Pin Controlled by PB27 */ +#define PIO_PB28 (1u << 28) /**< \brief Pin Controlled by PB28 */ +#define PIO_PB29 (1u << 29) /**< \brief Pin Controlled by PB29 */ +#define PIO_PB30 (1u << 30) /**< \brief Pin Controlled by PB30 */ +#define PIO_PB31 (1u << 31) /**< \brief Pin Controlled by PB31 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ +#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ +#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ +#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ +#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ +#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ +#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ +#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD23 (1u << 23) /**< \brief Pin Controlled by PD23 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ +#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ +#define PIO_PD29 (1u << 29) /**< \brief Pin Controlled by PD29 */ +#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ +#define PIO_PE0 (1u << 0) /**< \brief Pin Controlled by PE0 */ +#define PIO_PE1 (1u << 1) /**< \brief Pin Controlled by PE1 */ +#define PIO_PE2 (1u << 2) /**< \brief Pin Controlled by PE2 */ +#define PIO_PE3 (1u << 3) /**< \brief Pin Controlled by PE3 */ +#define PIO_PE4 (1u << 4) /**< \brief Pin Controlled by PE4 */ +#define PIO_PE5 (1u << 5) /**< \brief Pin Controlled by PE5 */ +#define PIO_PE6 (1u << 6) /**< \brief Pin Controlled by PE6 */ +#define PIO_PE7 (1u << 7) /**< \brief Pin Controlled by PE7 */ +#define PIO_PE8 (1u << 8) /**< \brief Pin Controlled by PE8 */ +#define PIO_PE9 (1u << 9) /**< \brief Pin Controlled by PE9 */ +#define PIO_PE10 (1u << 10) /**< \brief Pin Controlled by PE10 */ +#define PIO_PE11 (1u << 11) /**< \brief Pin Controlled by PE11 */ +#define PIO_PE12 (1u << 12) /**< \brief Pin Controlled by PE12 */ +#define PIO_PE13 (1u << 13) /**< \brief Pin Controlled by PE13 */ +#define PIO_PE14 (1u << 14) /**< \brief Pin Controlled by PE14 */ +#define PIO_PE15 (1u << 15) /**< \brief Pin Controlled by PE15 */ +#define PIO_PE16 (1u << 16) /**< \brief Pin Controlled by PE16 */ +#define PIO_PE17 (1u << 17) /**< \brief Pin Controlled by PE17 */ +#define PIO_PE18 (1u << 18) /**< \brief Pin Controlled by PE18 */ +#define PIO_PE19 (1u << 19) /**< \brief Pin Controlled by PE19 */ +#define PIO_PE20 (1u << 20) /**< \brief Pin Controlled by PE20 */ +#define PIO_PE21 (1u << 21) /**< \brief Pin Controlled by PE21 */ +#define PIO_PE22 (1u << 22) /**< \brief Pin Controlled by PE22 */ +#define PIO_PE23 (1u << 23) /**< \brief Pin Controlled by PE23 */ +#define PIO_PE24 (1u << 24) /**< \brief Pin Controlled by PE24 */ +#define PIO_PE25 (1u << 25) /**< \brief Pin Controlled by PE25 */ +#define PIO_PE26 (1u << 26) /**< \brief Pin Controlled by PE26 */ +#define PIO_PE27 (1u << 27) /**< \brief Pin Controlled by PE27 */ +#define PIO_PE28 (1u << 28) /**< \brief Pin Controlled by PE28 */ +#define PIO_PE29 (1u << 29) /**< \brief Pin Controlled by PE29 */ +#define PIO_PE30 (1u << 30) /**< \brief Pin Controlled by PE30 */ +#define PIO_PE31 (1u << 31) /**< \brief Pin Controlled by PE31 */ +#define PIO_PF0 (1u << 0) /**< \brief Pin Controlled by PF0 */ +#define PIO_PF1 (1u << 1) /**< \brief Pin Controlled by PF1 */ +#define PIO_PF2 (1u << 2) /**< \brief Pin Controlled by PF2 */ +#define PIO_PF3 (1u << 3) /**< \brief Pin Controlled by PF3 */ +#define PIO_PF4 (1u << 4) /**< \brief Pin Controlled by PF4 */ +#define PIO_PF5 (1u << 5) /**< \brief Pin Controlled by PF5 */ +/* ========== Pio definition for ADC peripheral ========== */ +#define PIO_PA2X1_AD0 (1u << 2) /**< \brief Adc signal: AD0 */ +#define PIO_PA3X1_AD1 (1u << 3) /**< \brief Adc signal: AD1/WKUP1 */ +#define PIO_PA3X1_WKUP1 (1u << 3) /**< \brief Adc signal: AD1/WKUP1 */ +#define PIO_PB17X1_AD10 (1u << 17) /**< \brief Adc signal: AD10 */ +#define PIO_PB18X1_AD11 (1u << 18) /**< \brief Adc signal: AD11 */ +#define PIO_PB19X1_AD12 (1u << 19) /**< \brief Adc signal: AD12 */ +#define PIO_PB20X1_AD13 (1u << 20) /**< \brief Adc signal: AD13 */ +#define PIO_PB21X1_AD14 (1u << 21) /**< \brief Adc signal: AD14/WKUP13 */ +#define PIO_PB21X1_WKUP13 (1u << 21) /**< \brief Adc signal: AD14/WKUP13 */ +#define PIO_PA4X1_AD2 (1u << 4) /**< \brief Adc signal: AD2 */ +#define PIO_PA6X1_AD3 (1u << 6) /**< \brief Adc signal: AD3 */ +#define PIO_PA22X1_AD4 (1u << 22) /**< \brief Adc signal: AD4 */ +#define PIO_PA23X1_AD5 (1u << 23) /**< \brief Adc signal: AD5 */ +#define PIO_PA24X1_AD6 (1u << 24) /**< \brief Adc signal: AD6 */ +#define PIO_PA16X1_AD7 (1u << 16) /**< \brief Adc signal: AD7 */ +#define PIO_PB12X1_AD8 (1u << 12) /**< \brief Adc signal: AD8 */ +#define PIO_PB13X1_AD9 (1u << 13) /**< \brief Adc signal: AD9 */ +#define PIO_PA11B_ADTRG (1u << 11) /**< \brief Adc signal: ADTRG */ +/* ========== Pio definition for CAN0 peripheral ========== */ +#define PIO_PA1A_CANRX0 (1u << 1) /**< \brief Can0 signal: CANRX0 */ +#define PIO_PA0A_CANTX0 (1u << 0) /**< \brief Can0 signal: CANTX0 */ +/* ========== Pio definition for CAN1 peripheral ========== */ +#define PIO_PB15A_CANRX1 (1u << 15) /**< \brief Can1 signal: CANRX1 */ +#define PIO_PB14A_CANTX1 (1u << 14) /**< \brief Can1 signal: CANTX1 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB15X1_DAC0 (1u << 15) /**< \brief Dacc signal: DAC0/WKUP12 */ +#define PIO_PB15X1_WKUP12 (1u << 15) /**< \brief Dacc signal: DAC0/WKUP12 */ +#define PIO_PB16X1_DAC1 (1u << 16) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA10B_DATRG (1u << 10) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PC21A_A0 (1u << 21) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PC21A_NBS0 (1u << 21) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PC22A_A1 (1u << 22) /**< \brief Ebi signal: A1 */ +#define PIO_PD0A_A10 (1u << 0) /**< \brief Ebi signal: A10 */ +#define PIO_PD22A_A10 (1u << 22) /**< \brief Ebi signal: A10 */ +#define PIO_PD1A_A11 (1u << 1) /**< \brief Ebi signal: A11 */ +#define PIO_PD23A_A11 (1u << 23) /**< \brief Ebi signal: A11 */ +#define PIO_PD2A_A12 (1u << 2) /**< \brief Ebi signal: A12 */ +#define PIO_PD24A_A12 (1u << 24) /**< \brief Ebi signal: A12 */ +#define PIO_PD3A_A13 (1u << 3) /**< \brief Ebi signal: A13 */ +#define PIO_PD25A_A13 (1u << 25) /**< \brief Ebi signal: A13 */ +#define PIO_PD4A_A14 (1u << 4) /**< \brief Ebi signal: A14 */ +#define PIO_PD26A_A14 (1u << 26) /**< \brief Ebi signal: A14 */ +#define PIO_PD5A_A15 (1u << 5) /**< \brief Ebi signal: A15 */ +#define PIO_PD27A_A15 (1u << 27) /**< \brief Ebi signal: A15 */ +#define PIO_PD6A_A16 (1u << 6) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PD6A_BA0 (1u << 6) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PD28A_A16 (1u << 28) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PD28A_BA0 (1u << 28) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PD7A_A17 (1u << 7) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PD7A_BA1 (1u << 7) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PD29A_A17 (1u << 29) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PD29A_BA1 (1u << 29) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PA25B_A18 (1u << 25) /**< \brief Ebi signal: A18 */ +#define PIO_PB10B_A18 (1u << 10) /**< \brief Ebi signal: A18 */ +#define PIO_PD30A_A18 (1u << 30) /**< \brief Ebi signal: A18 */ +#define PIO_PA26B_A19 (1u << 26) /**< \brief Ebi signal: A19 */ +#define PIO_PB11B_A19 (1u << 11) /**< \brief Ebi signal: A19 */ +#define PIO_PE0A_A19 (1u << 0) /**< \brief Ebi signal: A19 */ +#define PIO_PC23A_A2 (1u << 23) /**< \brief Ebi signal: A2 */ +#define PIO_PA18B_A20 (1u << 18) /**< \brief Ebi signal: A20 */ +#define PIO_PA27B_A20 (1u << 27) /**< \brief Ebi signal: A20 */ +#define PIO_PE1A_A20 (1u << 1) /**< \brief Ebi signal: A20 */ +#define PIO_PD8A_A21 (1u << 8) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PD8A_NANDALE (1u << 8) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PE2A_A21 (1u << 2) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PE2A_NANDALE (1u << 2) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PD9A_A22 (1u << 9) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PD9A_NANDCLE (1u << 9) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PE3A_A22 (1u << 3) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PE3A_NANDCLE (1u << 3) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PE4A_A23 (1u << 4) /**< \brief Ebi signal: A23 */ +#define PIO_PC24A_A3 (1u << 24) /**< \brief Ebi signal: A3 */ +#define PIO_PC25A_A4 (1u << 25) /**< \brief Ebi signal: A4 */ +#define PIO_PC26A_A5 (1u << 26) /**< \brief Ebi signal: A5 */ +#define PIO_PD17A_A5 (1u << 17) /**< \brief Ebi signal: A5 */ +#define PIO_PC27A_A6 (1u << 27) /**< \brief Ebi signal: A6 */ +#define PIO_PD18A_A6 (1u << 18) /**< \brief Ebi signal: A6 */ +#define PIO_PC28A_A7 (1u << 28) /**< \brief Ebi signal: A7 */ +#define PIO_PD19A_A7 (1u << 19) /**< \brief Ebi signal: A7 */ +#define PIO_PC29A_A8 (1u << 29) /**< \brief Ebi signal: A8 */ +#define PIO_PD20A_A8 (1u << 20) /**< \brief Ebi signal: A8 */ +#define PIO_PC30A_A9 (1u << 30) /**< \brief Ebi signal: A9 */ +#define PIO_PD21A_A9 (1u << 21) /**< \brief Ebi signal: A9 */ +#define PIO_PD16A_CAS (1u << 16) /**< \brief Ebi signal: CAS */ +#define PIO_PC2A_D0 (1u << 2) /**< \brief Ebi signal: D0 */ +#define PIO_PC3A_D1 (1u << 3) /**< \brief Ebi signal: D1 */ +#define PIO_PC12A_D10 (1u << 12) /**< \brief Ebi signal: D10 */ +#define PIO_PC13A_D11 (1u << 13) /**< \brief Ebi signal: D11 */ +#define PIO_PC14A_D12 (1u << 14) /**< \brief Ebi signal: D12 */ +#define PIO_PC15A_D13 (1u << 15) /**< \brief Ebi signal: D13 */ +#define PIO_PC16A_D14 (1u << 16) /**< \brief Ebi signal: D14 */ +#define PIO_PC17A_D15 (1u << 17) /**< \brief Ebi signal: D15 */ +#define PIO_PC4A_D2 (1u << 4) /**< \brief Ebi signal: D2 */ +#define PIO_PC5A_D3 (1u << 5) /**< \brief Ebi signal: D3 */ +#define PIO_PC6A_D4 (1u << 6) /**< \brief Ebi signal: D4 */ +#define PIO_PC7A_D5 (1u << 7) /**< \brief Ebi signal: D5 */ +#define PIO_PC8A_D6 (1u << 8) /**< \brief Ebi signal: D6 */ +#define PIO_PC9A_D7 (1u << 9) /**< \brief Ebi signal: D7 */ +#define PIO_PC10A_D8 (1u << 10) /**< \brief Ebi signal: D8 */ +#define PIO_PC11A_D9 (1u << 11) /**< \brief Ebi signal: D9 */ +#define PIO_PC19A_NANDOE (1u << 19) /**< \brief Ebi signal: NANDOE */ +#define PIO_PA2B_NANDRDY (1u << 2) /**< \brief Ebi signal: NANDRDY */ +#define PIO_PC20A_NANDWE (1u << 20) /**< \brief Ebi signal: NANDWE */ +#define PIO_PA6B_NCS0 (1u << 6) /**< \brief Ebi signal: NCS0 */ +#define PIO_PA7B_NCS1 (1u << 7) /**< \brief Ebi signal: NCS1 */ +#define PIO_PB24B_NCS2 (1u << 24) /**< \brief Ebi signal: NCS2 */ +#define PIO_PB27A_NCS3 (1u << 27) /**< \brief Ebi signal: NCS3 */ +#define PIO_PE5A_NCS4 (1u << 5) /**< \brief Ebi signal: NCS4 */ +#define PIO_PE6A_NCS5 (1u << 6) /**< \brief Ebi signal: NCS5 */ +#define PIO_PE18B_NCS6 (1u << 18) /**< \brief Ebi signal: NCS6 */ +#define PIO_PE27A_NCS7 (1u << 27) /**< \brief Ebi signal: NCS7 */ +#define PIO_PA29B_NRD (1u << 29) /**< \brief Ebi signal: NRD */ +#define PIO_PA4B_NWAIT (1u << 4) /**< \brief Ebi signal: NWAIT */ +#define PIO_PC18A_NWR0 (1u << 18) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PC18A_NWE (1u << 18) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PD10A_NWR1 (1u << 10) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PD10A_NBS1 (1u << 10) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PD15A_RAS (1u << 15) /**< \brief Ebi signal: RAS */ +#define PIO_PD11A_SDA10 (1u << 11) /**< \brief Ebi signal: SDA10 */ +#define PIO_PD13A_SDCKE (1u << 13) /**< \brief Ebi signal: SDCKE */ +#define PIO_PD12A_SDCS (1u << 12) /**< \brief Ebi signal: SDCS */ +#define PIO_PD14A_SDWE (1u << 14) /**< \brief Ebi signal: SDWE */ +/* ========== Pio definition for EMAC peripheral ========== */ +#define PIO_PC13B_ECOL (1u << 13) /**< \brief Emac signal: ECOL */ +#define PIO_PC10B_ECRS (1u << 10) /**< \brief Emac signal: ECRS */ +#define PIO_PB4A_ECRSDV (1u << 4) /**< \brief Emac signal: ECRSDV/ERXDV */ +#define PIO_PB4A_ERXDV (1u << 4) /**< \brief Emac signal: ECRSDV/ERXDV */ +#define PIO_PB8A_EMDC (1u << 8) /**< \brief Emac signal: EMDC */ +#define PIO_PB9A_EMDIO (1u << 9) /**< \brief Emac signal: EMDIO */ +#define PIO_PB5A_ERX0 (1u << 5) /**< \brief Emac signal: ERX0 */ +#define PIO_PB6A_ERX1 (1u << 6) /**< \brief Emac signal: ERX1 */ +#define PIO_PC11B_ERX2 (1u << 11) /**< \brief Emac signal: ERX2 */ +#define PIO_PC12B_ERX3 (1u << 12) /**< \brief Emac signal: ERX3 */ +#define PIO_PC14B_ERXCK (1u << 14) /**< \brief Emac signal: ERXCK */ +#define PIO_PB7A_ERXER (1u << 7) /**< \brief Emac signal: ERXER */ +#define PIO_PB2A_ETX0 (1u << 2) /**< \brief Emac signal: ETX0 */ +#define PIO_PB3A_ETX1 (1u << 3) /**< \brief Emac signal: ETX1 */ +#define PIO_PC15B_ETX2 (1u << 15) /**< \brief Emac signal: ETX2 */ +#define PIO_PC16B_ETX3 (1u << 16) /**< \brief Emac signal: ETX3 */ +#define PIO_PB0A_ETXCK (1u << 0) /**< \brief Emac signal: ETXCK */ +#define PIO_PB1A_ETXEN (1u << 1) /**< \brief Emac signal: ETXEN */ +#define PIO_PC17B_ETXER (1u << 17) /**< \brief Emac signal: ETXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA20A_MCCDA (1u << 20) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PE20B_MCCDB (1u << 20) /**< \brief Hsmci signal: MCCDB */ +#define PIO_PA19A_MCCK (1u << 19) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA21A_MCDA0 (1u << 21) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA22A_MCDA1 (1u << 22) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA23A_MCDA2 (1u << 23) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA24A_MCDA3 (1u << 24) /**< \brief Hsmci signal: MCDA3 */ +#define PIO_PD0B_MCDA4 (1u << 0) /**< \brief Hsmci signal: MCDA4 */ +#define PIO_PD1B_MCDA5 (1u << 1) /**< \brief Hsmci signal: MCDA5 */ +#define PIO_PD2B_MCDA6 (1u << 2) /**< \brief Hsmci signal: MCDA6 */ +#define PIO_PD3B_MCDA7 (1u << 3) /**< \brief Hsmci signal: MCDA7 */ +#define PIO_PE22B_MCDB0 (1u << 22) /**< \brief Hsmci signal: MCDB0 */ +#define PIO_PE24B_MCDB1 (1u << 24) /**< \brief Hsmci signal: MCDB1 */ +#define PIO_PE26B_MCDB2 (1u << 26) /**< \brief Hsmci signal: MCDB2 */ +#define PIO_PE27B_MCDB3 (1u << 27) /**< \brief Hsmci signal: MCDB3 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA1B_PCK0 (1u << 1) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB22B_PCK0 (1u << 22) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA24B_PCK1 (1u << 24) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA30B_PCK1 (1u << 30) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA28B_PCK2 (1u << 28) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM peripheral ========== */ +#define PIO_PA5B_PWMFI0 (1u << 5) /**< \brief Pwm signal: PWMFI0 */ +#define PIO_PA3B_PWMFI1 (1u << 3) /**< \brief Pwm signal: PWMFI1 */ +#define PIO_PD6B_PWMFI2 (1u << 6) /**< \brief Pwm signal: PWMFI2 */ +#define PIO_PA8B_PWMH0 (1u << 8) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PB12B_PWMH0 (1u << 12) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PC3B_PWMH0 (1u << 3) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PE15A_PWMH0 (1u << 15) /**< \brief Pwm signal: PWMH0 */ +#define PIO_PA19B_PWMH1 (1u << 19) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PB13B_PWMH1 (1u << 13) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PC5B_PWMH1 (1u << 5) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PE16A_PWMH1 (1u << 16) /**< \brief Pwm signal: PWMH1 */ +#define PIO_PA13B_PWMH2 (1u << 13) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PB14B_PWMH2 (1u << 14) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PC7B_PWMH2 (1u << 7) /**< \brief Pwm signal: PWMH2 */ +#define PIO_PA9B_PWMH3 (1u << 9) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PB15B_PWMH3 (1u << 15) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC9B_PWMH3 (1u << 9) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PF3A_PWMH3 (1u << 3) /**< \brief Pwm signal: PWMH3 */ +#define PIO_PC20B_PWMH4 (1u << 20) /**< \brief Pwm signal: PWMH4 */ +#define PIO_PE20A_PWMH4 (1u << 20) /**< \brief Pwm signal: PWMH4 */ +#define PIO_PC19B_PWMH5 (1u << 19) /**< \brief Pwm signal: PWMH5 */ +#define PIO_PE22A_PWMH5 (1u << 22) /**< \brief Pwm signal: PWMH5 */ +#define PIO_PC18B_PWMH6 (1u << 18) /**< \brief Pwm signal: PWMH6 */ +#define PIO_PE24A_PWMH6 (1u << 24) /**< \brief Pwm signal: PWMH6 */ +#define PIO_PE26A_PWMH7 (1u << 26) /**< \brief Pwm signal: PWMH7 */ +#define PIO_PA21B_PWML0 (1u << 21) /**< \brief Pwm signal: PWML0 */ +#define PIO_PB16B_PWML0 (1u << 16) /**< \brief Pwm signal: PWML0 */ +#define PIO_PC2B_PWML0 (1u << 2) /**< \brief Pwm signal: PWML0 */ +#define PIO_PE18A_PWML0 (1u << 18) /**< \brief Pwm signal: PWML0 */ +#define PIO_PA12B_PWML1 (1u << 12) /**< \brief Pwm signal: PWML1 */ +#define PIO_PB17B_PWML1 (1u << 17) /**< \brief Pwm signal: PWML1 */ +#define PIO_PC4B_PWML1 (1u << 4) /**< \brief Pwm signal: PWML1 */ +#define PIO_PA20B_PWML2 (1u << 20) /**< \brief Pwm signal: PWML2 */ +#define PIO_PB18B_PWML2 (1u << 18) /**< \brief Pwm signal: PWML2 */ +#define PIO_PC6B_PWML2 (1u << 6) /**< \brief Pwm signal: PWML2 */ +#define PIO_PE17A_PWML2 (1u << 17) /**< \brief Pwm signal: PWML2 */ +#define PIO_PA0B_PWML3 (1u << 0) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB19B_PWML3 (1u << 19) /**< \brief Pwm signal: PWML3 */ +#define PIO_PC8B_PWML3 (1u << 8) /**< \brief Pwm signal: PWML3 */ +#define PIO_PB6B_PWML4 (1u << 6) /**< \brief Pwm signal: PWML4 */ +#define PIO_PC21B_PWML4 (1u << 21) /**< \brief Pwm signal: PWML4 */ +#define PIO_PE19A_PWML4 (1u << 19) /**< \brief Pwm signal: PWML4 */ +#define PIO_PB7B_PWML5 (1u << 7) /**< \brief Pwm signal: PWML5 */ +#define PIO_PC22B_PWML5 (1u << 22) /**< \brief Pwm signal: PWML5 */ +#define PIO_PE21A_PWML5 (1u << 21) /**< \brief Pwm signal: PWML5 */ +#define PIO_PB8B_PWML6 (1u << 8) /**< \brief Pwm signal: PWML6 */ +#define PIO_PC23B_PWML6 (1u << 23) /**< \brief Pwm signal: PWML6 */ +#define PIO_PE23A_PWML6 (1u << 23) /**< \brief Pwm signal: PWML6 */ +#define PIO_PB9B_PWML7 (1u << 9) /**< \brief Pwm signal: PWML7 */ +#define PIO_PC24B_PWML7 (1u << 24) /**< \brief Pwm signal: PWML7 */ +#define PIO_PE25A_PWML7 (1u << 25) /**< \brief Pwm signal: PWML7 */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PA25A_SPI0_MISO (1u << 25) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PA26A_SPI0_MOSI (1u << 26) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PA28A_SPI0_NPCS0 (1u << 28) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA29A_SPI0_NPCS1 (1u << 29) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PB20B_SPI0_NPCS1 (1u << 20) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PA30A_SPI0_NPCS2 (1u << 30) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PB21B_SPI0_NPCS2 (1u << 21) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PA31A_SPI0_NPCS3 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PB23B_SPI0_NPCS3 (1u << 23) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PA27A_SPI0_SPCK (1u << 27) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SPI1 peripheral ========== */ +#define PIO_PE28A_SPI1_MISO (1u << 28) /**< \brief Spi1 signal: SPI1_MISO */ +#define PIO_PE29A_SPI1_MOSI (1u << 29) /**< \brief Spi1 signal: SPI1_MOSI */ +#define PIO_PE31A_SPI1_NPCS0 (1u << 31) /**< \brief Spi1 signal: SPI1_NPCS0 */ +#define PIO_PF0A_SPI1_NPCS1 (1u << 0) /**< \brief Spi1 signal: SPI1_NPCS1 */ +#define PIO_PF1A_SPI1_NPCS2 (1u << 1) /**< \brief Spi1 signal: SPI1_NPCS2 */ +#define PIO_PF2A_SPI1_NPCS3 (1u << 2) /**< \brief Spi1 signal: SPI1_NPCS3 */ +#define PIO_PE30A_SPI1_SPCK (1u << 30) /**< \brief Spi1 signal: SPI1_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PB18A_RD (1u << 18) /**< \brief Ssc signal: RD */ +#define PIO_PB17A_RF (1u << 17) /**< \brief Ssc signal: RF */ +#define PIO_PB19A_RK (1u << 19) /**< \brief Ssc signal: RK */ +#define PIO_PA16B_TD (1u << 16) /**< \brief Ssc signal: TD */ +#define PIO_PA15B_TF (1u << 15) /**< \brief Ssc signal: TF */ +#define PIO_PA14B_TK (1u << 14) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PB26B_TCLK0 (1u << 26) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA4A_TCLK1 (1u << 4) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA7A_TCLK2 (1u << 7) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PB25B_TIOA0 (1u << 25) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA2A_TIOA1 (1u << 2) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA5A_TIOA2 (1u << 5) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PB27B_TIOB0 (1u << 27) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA3A_TIOB1 (1u << 3) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA6A_TIOB2 (1u << 6) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PA22B_TCLK3 (1u << 22) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PA23B_TCLK4 (1u << 23) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PB16A_TCLK5 (1u << 16) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PB0B_TIOA3 (1u << 0) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PE9A_TIOA3 (1u << 9) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PB2B_TIOA4 (1u << 2) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PE11A_TIOA4 (1u << 11) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PB4B_TIOA5 (1u << 4) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PE13A_TIOA5 (1u << 13) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PB1B_TIOB3 (1u << 1) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PE10A_TIOB3 (1u << 10) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PB3B_TIOB4 (1u << 3) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PE12A_TIOB4 (1u << 12) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PB5B_TIOB5 (1u << 5) /**< \brief Tc1 signal: TIOB5 */ +#define PIO_PE14A_TIOB5 (1u << 14) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TC2 peripheral ========== */ +#define PIO_PC27B_TCLK6 (1u << 27) /**< \brief Tc2 signal: TCLK6 */ +#define PIO_PC30B_TCLK7 (1u << 30) /**< \brief Tc2 signal: TCLK7 */ +#define PIO_PD9B_TCLK8 (1u << 9) /**< \brief Tc2 signal: TCLK8 */ +#define PIO_PC25B_TIOA6 (1u << 25) /**< \brief Tc2 signal: TIOA6 */ +#define PIO_PC28B_TIOA7 (1u << 28) /**< \brief Tc2 signal: TIOA7 */ +#define PIO_PD7B_TIOA8 (1u << 7) /**< \brief Tc2 signal: TIOA8 */ +#define PIO_PC26B_TIOB6 (1u << 26) /**< \brief Tc2 signal: TIOB6 */ +#define PIO_PC29B_TIOB7 (1u << 29) /**< \brief Tc2 signal: TIOB7 */ +#define PIO_PD8B_TIOB8 (1u << 8) /**< \brief Tc2 signal: TIOB8 */ +/* ========== Pio definition for TWI0 peripheral ========== */ +#define PIO_PA18A_TWCK0 (1u << 18) /**< \brief Twi0 signal: TWCK0 */ +#define PIO_PA17A_TWD0 (1u << 17) /**< \brief Twi0 signal: TWD0 */ +/* ========== Pio definition for TWI1 peripheral ========== */ +#define PIO_PB13A_TWCK1 (1u << 13) /**< \brief Twi1 signal: TWCK1 */ +#define PIO_PB12A_TWD1 (1u << 12) /**< \brief Twi1 signal: TWD1 */ +/* ========== Pio definition for UART peripheral ========== */ +#define PIO_PA8A_URXD (1u << 8) /**< \brief Uart signal: URXD */ +#define PIO_PA9A_UTXD (1u << 9) /**< \brief Uart signal: UTXD */ +/* ========== Pio definition for UOTGHS peripheral ========== */ +#define PIO_PB11A_UOTGID (1u << 11) /**< \brief Uotghs signal: UOTGID */ +#define PIO_PB10A_UOTGVBOF (1u << 10) /**< \brief Uotghs signal: UOTGVBOF */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB26A_CTS0 (1u << 26) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PB25A_RTS0 (1u << 25) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PA10A_RXD0 (1u << 10) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PA17B_SCK0 (1u << 17) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PA11A_TXD0 (1u << 11) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA15A_CTS1 (1u << 15) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA14A_RTS1 (1u << 14) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA12A_RXD1 (1u << 12) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA16A_SCK1 (1u << 16) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PA13A_TXD1 (1u << 13) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PB23A_CTS2 (1u << 23) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PB22A_RTS2 (1u << 22) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PB21A_RXD2 (1u << 21) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PB24A_SCK2 (1u << 24) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PB20A_TXD2 (1u << 20) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio definition for USART3 peripheral ========== */ +#define PIO_PF4A_CTS3 (1u << 4) /**< \brief Usart3 signal: CTS3 */ +#define PIO_PF5A_RTS3 (1u << 5) /**< \brief Usart3 signal: RTS3 */ +#define PIO_PD5B_RXD3 (1u << 5) /**< \brief Usart3 signal: RXD3 */ +#define PIO_PE16B_SCK3 (1u << 16) /**< \brief Usart3 signal: SCK3 */ +#define PIO_PD4B_TXD3 (1u << 4) /**< \brief Usart3 signal: TXD3 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB10_IDX 42 +#define PIO_PB11_IDX 43 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PB14_IDX 46 +#define PIO_PB15_IDX 47 +#define PIO_PB16_IDX 48 +#define PIO_PB17_IDX 49 +#define PIO_PB18_IDX 50 +#define PIO_PB19_IDX 51 +#define PIO_PB20_IDX 52 +#define PIO_PB21_IDX 53 +#define PIO_PB22_IDX 54 +#define PIO_PB23_IDX 55 +#define PIO_PB24_IDX 56 +#define PIO_PB25_IDX 57 +#define PIO_PB26_IDX 58 +#define PIO_PB27_IDX 59 +#define PIO_PB28_IDX 60 +#define PIO_PB29_IDX 61 +#define PIO_PB30_IDX 62 +#define PIO_PB31_IDX 63 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD13_IDX 109 +#define PIO_PD14_IDX 110 +#define PIO_PD15_IDX 111 +#define PIO_PD16_IDX 112 +#define PIO_PD17_IDX 113 +#define PIO_PD18_IDX 114 +#define PIO_PD19_IDX 115 +#define PIO_PD20_IDX 116 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD23_IDX 119 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD27_IDX 123 +#define PIO_PD28_IDX 124 +#define PIO_PD29_IDX 125 +#define PIO_PD30_IDX 126 +#define PIO_PE0_IDX 128 +#define PIO_PE1_IDX 129 +#define PIO_PE2_IDX 130 +#define PIO_PE3_IDX 131 +#define PIO_PE4_IDX 132 +#define PIO_PE5_IDX 133 +#define PIO_PE6_IDX 134 +#define PIO_PE7_IDX 135 +#define PIO_PE8_IDX 136 +#define PIO_PE9_IDX 137 +#define PIO_PE10_IDX 138 +#define PIO_PE11_IDX 139 +#define PIO_PE12_IDX 140 +#define PIO_PE13_IDX 141 +#define PIO_PE14_IDX 142 +#define PIO_PE15_IDX 143 +#define PIO_PE16_IDX 144 +#define PIO_PE17_IDX 145 +#define PIO_PE18_IDX 146 +#define PIO_PE19_IDX 147 +#define PIO_PE20_IDX 148 +#define PIO_PE21_IDX 149 +#define PIO_PE22_IDX 150 +#define PIO_PE23_IDX 151 +#define PIO_PE24_IDX 152 +#define PIO_PE25_IDX 153 +#define PIO_PE26_IDX 154 +#define PIO_PE27_IDX 155 +#define PIO_PE28_IDX 156 +#define PIO_PE29_IDX 157 +#define PIO_PE30_IDX 158 +#define PIO_PE31_IDX 159 +#define PIO_PF0_IDX 160 +#define PIO_PF1_IDX 161 +#define PIO_PF2_IDX 162 +#define PIO_PF3_IDX 163 +#define PIO_PF4_IDX 164 +#define PIO_PF5_IDX 165 + +#endif /* _SAM3X8H_PIO_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3a2c.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3a2c.h new file mode 100644 index 000000000..47d0b5440 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3a2c.h @@ -0,0 +1,402 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3A2C_ +#define _SAM3A2C_ + +/** \addtogroup SAM3A2C_definitions SAM3A2C definitions + This file defines all structures and symbols for SAM3A2C: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3A2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3A2C_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3A2C specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3A2C Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3A2C Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3A2C Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3A2C Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3A2C Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3A2C Power Management Controller (PMC) */ + EFC0_IRQn = 6, /**< 6 SAM3A2C Enhanced Flash Controller 0 (EFC0) */ + EFC1_IRQn = 7, /**< 7 SAM3A2C Enhanced Flash Controller 1 (EFC1) */ + UART_IRQn = 8, /**< 8 SAM3A2C Universal Asynchronous Receiver Transceiver (UART) */ + PIOA_IRQn = 11, /**< 11 SAM3A2C Parallel I/O Controller A, (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3A2C Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 17, /**< 17 SAM3A2C USART 0 (USART0) */ + USART1_IRQn = 18, /**< 18 SAM3A2C USART 1 (USART1) */ + USART2_IRQn = 19, /**< 19 SAM3A2C USART 2 (USART2) */ + HSMCI_IRQn = 21, /**< 21 SAM3A2C Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 22, /**< 22 SAM3A2C Two-Wire Interface 0 (TWI0) */ + TWI1_IRQn = 23, /**< 23 SAM3A2C Two-Wire Interface 1 (TWI1) */ + SPI0_IRQn = 24, /**< 24 SAM3A2C Serial Peripheral Interface (SPI0) */ + SSC_IRQn = 26, /**< 26 SAM3A2C Synchronous Serial Controller (SSC) */ + TC0_IRQn = 27, /**< 27 SAM3A2C Timer Counter 0 (TC0) */ + TC1_IRQn = 28, /**< 28 SAM3A2C Timer Counter 1 (TC1) */ + TC2_IRQn = 29, /**< 29 SAM3A2C Timer Counter 2 (TC2) */ + TC3_IRQn = 30, /**< 30 SAM3A2C Timer Counter 3 (TC3) */ + TC4_IRQn = 31, /**< 31 SAM3A2C Timer Counter 4 (TC4) */ + TC5_IRQn = 32, /**< 32 SAM3A2C Timer Counter 5 (TC5) */ + PWM_IRQn = 36, /**< 36 SAM3A2C Pulse Width Modulation Controller (PWM) */ + ADC_IRQn = 37, /**< 37 SAM3A2C ADC Controller (ADC) */ + DACC_IRQn = 38, /**< 38 SAM3A2C DAC Controller (DACC) */ + DMAC_IRQn = 39, /**< 39 SAM3A2C DMA Controller (DMAC) */ + UOTGHS_IRQn = 40, /**< 40 SAM3A2C USB OTG High Speed (UOTGHS) */ + TRNG_IRQn = 41, /**< 41 SAM3A2C True Random Number Generator (TRNG) */ + CAN0_IRQn = 43, /**< 43 SAM3A2C CAN Controller 0 (CAN0) */ + CAN1_IRQn = 44 /**< 44 SAM3A2C CAN Controller 1 (CAN1) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3A2C core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3A2C does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3A2C uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3A2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3A2C_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_can.h" +#include "component/component_chipid.h" +#include "component/component_dacc.h" +#include "component/component_dmac.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_trng.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_uotghs.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3A2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3A2C_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi0.h" +#include "instance/instance_tc0.h" +#include "instance/instance_tc1.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_usart2.h" +#include "instance/instance_uotghs.h" +#include "instance/instance_can0.h" +#include "instance/instance_can1.h" +#include "instance/instance_trng.h" +#include "instance/instance_adc.h" +#include "instance/instance_dmac.h" +#include "instance/instance_dacc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart.h" +#include "instance/instance_chipid.h" +#include "instance/instance_efc0.h" +#include "instance/instance_efc1.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3A2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3A2C_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC0 ( 6) /**< \brief Enhanced Flash Controller 0 (EFC0) */ +#define ID_EFC1 ( 7) /**< \brief Enhanced Flash Controller 1 (EFC1) */ +#define ID_UART ( 8) /**< \brief Universal Asynchronous Receiver Transceiver (UART) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A, (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (17) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (18) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (19) /**< \brief USART 2 (USART2) */ +#define ID_HSMCI (21) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (22) /**< \brief Two-Wire Interface 0 (TWI0) */ +#define ID_TWI1 (23) /**< \brief Two-Wire Interface 1 (TWI1) */ +#define ID_SPI0 (24) /**< \brief Serial Peripheral Interface (SPI0) */ +#define ID_SSC (26) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (27) /**< \brief Timer Counter 0 (TC0) */ +#define ID_TC1 (28) /**< \brief Timer Counter 1 (TC1) */ +#define ID_TC2 (29) /**< \brief Timer Counter 2 (TC2) */ +#define ID_TC3 (30) /**< \brief Timer Counter 3 (TC3) */ +#define ID_TC4 (31) /**< \brief Timer Counter 4 (TC4) */ +#define ID_TC5 (32) /**< \brief Timer Counter 5 (TC5) */ +#define ID_PWM (36) /**< \brief Pulse Width Modulation Controller (PWM) */ +#define ID_ADC (37) /**< \brief ADC Controller (ADC) */ +#define ID_DACC (38) /**< \brief DAC Controller (DACC) */ +#define ID_DMAC (39) /**< \brief DMA Controller (DMAC) */ +#define ID_UOTGHS (40) /**< \brief USB OTG High Speed (UOTGHS) */ +#define ID_TRNG (41) /**< \brief True Random Number Generator (TRNG) */ +#define ID_CAN0 (43) /**< \brief CAN Controller 0 (CAN0) */ +#define ID_CAN1 (44) /**< \brief CAN Controller 1 (CAN1) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3A2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3A2C_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 (0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40084000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 (0x4008C000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x4008C100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x40090000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x40090100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40094000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40094100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40098000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40098100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x4009C000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x4009C100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 (0x400A0000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 (0x400A0100U) /**< \brief (PDC_USART2) Base Address */ +#define UOTGHS (0x400AC000U) /**< \brief (UOTGHS ) Base Address */ +#define CAN0 (0x400B4000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 (0x400B8000U) /**< \brief (CAN1 ) Base Address */ +#define TRNG (0x400BC000U) /**< \brief (TRNG ) Base Address */ +#define ADC (0x400C0000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x400C0100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC (0x400C4000U) /**< \brief (DMAC ) Base Address */ +#define DACC (0x400C8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x400C8100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX (0x400E0400U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART (0x400E0800U) /**< \brief (UART ) Base Address */ +#define PDC_UART (0x400E0900U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 (0x400E0A00U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 (0x400E0C00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1A00U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1A10U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1A30U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1A50U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1A60U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1A90U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 ((Tc *)0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40084000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 ((Twi *)0x4008C000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x4008C100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x40090000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x40090100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40094000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40094100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40098000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40098100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x4009C000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x4009C100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 ((Usart *)0x400A0000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 ((Pdc *)0x400A0100U) /**< \brief (PDC_USART2) Base Address */ +#define UOTGHS ((Uotghs *)0x400AC000U) /**< \brief (UOTGHS ) Base Address */ +#define CAN0 ((Can *)0x400B4000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 ((Can *)0x400B8000U) /**< \brief (CAN1 ) Base Address */ +#define TRNG ((Trng *)0x400BC000U) /**< \brief (TRNG ) Base Address */ +#define ADC ((Adc *)0x400C0000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x400C0100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC ((Dmac *)0x400C4000U) /**< \brief (DMAC ) Base Address */ +#define DACC ((Dacc *)0x400C8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x400C8100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0400U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART ((Uart *)0x400E0800U) /**< \brief (UART ) Base Address */ +#define PDC_UART ((Pdc *)0x400E0900U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 ((Efc *)0x400E0A00U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 ((Efc *)0x400E0C00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1A00U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1A10U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1A30U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1A50U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1A60U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1A90U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3A2C */ +/* ************************************************************************** */ +/** \addtogroup SAM3A2C_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3a2c.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3A2C */ +/* ************************************************************************** */ + +#define IFLASH0_SIZE (0x10000u) +#define IFLASH0_PAGE_SIZE (256u) +#define IFLASH0_LOCK_REGION_SIZE (16384u) +#define IFLASH0_NB_OF_PAGES (256u) +#define IFLASH1_SIZE (0x10000u) +#define IFLASH1_PAGE_SIZE (256u) +#define IFLASH1_LOCK_REGION_SIZE (16384u) +#define IFLASH1_NB_OF_PAGES (256u) +#define IRAM0_SIZE (0x4000u) +#define IRAM1_SIZE (0x4000u) +#define IFLASH_SIZE (0x20000u) +#define IRAM_SIZE (0x8000u) + +#define IFLASH0_ADDR (0x00080000u) /**< Internal Flash 0 base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IROM_ADDR (0x00100000u) /**< Internal ROM base address */ +#define IRAM0_ADDR (0x20000000u) /**< Internal RAM 0 base address */ +#define IRAM1_ADDR (0x20080000u) /**< Internal RAM 1 base address */ +#define NFC_RAM_ADDR (0x20100000u) /**< NAND Flash Controller RAM base address */ +#define UOTGHS_RAM_ADDR (0x20180000u) /**< USB On-The-Go Interface RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ +#define EBI_CS4_ADDR (0x64000000u) /**< EBI Chip Select 4 base address */ +#define EBI_CS5_ADDR (0x65000000u) /**< EBI Chip Select 5 base address */ +#define EBI_CS6_ADDR (0x66000000u) /**< EBI Chip Select 6 base address */ +#define EBI_CS7_ADDR (0x67000000u) /**< EBI Chip Select 7 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3A2C */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (84000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3A2C_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3a4c.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3a4c.h new file mode 100644 index 000000000..7c95eace8 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3a4c.h @@ -0,0 +1,402 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3A4C_ +#define _SAM3A4C_ + +/** \addtogroup SAM3A4C_definitions SAM3A4C definitions + This file defines all structures and symbols for SAM3A4C: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3A4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3A4C_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3A4C specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3A4C Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3A4C Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3A4C Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3A4C Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3A4C Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3A4C Power Management Controller (PMC) */ + EFC0_IRQn = 6, /**< 6 SAM3A4C Enhanced Flash Controller 0 (EFC0) */ + EFC1_IRQn = 7, /**< 7 SAM3A4C Enhanced Flash Controller 1 (EFC1) */ + UART_IRQn = 8, /**< 8 SAM3A4C Universal Asynchronous Receiver Transceiver (UART) */ + PIOA_IRQn = 11, /**< 11 SAM3A4C Parallel I/O Controller A, (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3A4C Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 17, /**< 17 SAM3A4C USART 0 (USART0) */ + USART1_IRQn = 18, /**< 18 SAM3A4C USART 1 (USART1) */ + USART2_IRQn = 19, /**< 19 SAM3A4C USART 2 (USART2) */ + HSMCI_IRQn = 21, /**< 21 SAM3A4C Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 22, /**< 22 SAM3A4C Two-Wire Interface 0 (TWI0) */ + TWI1_IRQn = 23, /**< 23 SAM3A4C Two-Wire Interface 1 (TWI1) */ + SPI0_IRQn = 24, /**< 24 SAM3A4C Serial Peripheral Interface (SPI0) */ + SSC_IRQn = 26, /**< 26 SAM3A4C Synchronous Serial Controller (SSC) */ + TC0_IRQn = 27, /**< 27 SAM3A4C Timer Counter 0 (TC0) */ + TC1_IRQn = 28, /**< 28 SAM3A4C Timer Counter 1 (TC1) */ + TC2_IRQn = 29, /**< 29 SAM3A4C Timer Counter 2 (TC2) */ + TC3_IRQn = 30, /**< 30 SAM3A4C Timer Counter 3 (TC3) */ + TC4_IRQn = 31, /**< 31 SAM3A4C Timer Counter 4 (TC4) */ + TC5_IRQn = 32, /**< 32 SAM3A4C Timer Counter 5 (TC5) */ + PWM_IRQn = 36, /**< 36 SAM3A4C Pulse Width Modulation Controller (PWM) */ + ADC_IRQn = 37, /**< 37 SAM3A4C ADC Controller (ADC) */ + DACC_IRQn = 38, /**< 38 SAM3A4C DAC Controller (DACC) */ + DMAC_IRQn = 39, /**< 39 SAM3A4C DMA Controller (DMAC) */ + UOTGHS_IRQn = 40, /**< 40 SAM3A4C USB OTG High Speed (UOTGHS) */ + TRNG_IRQn = 41, /**< 41 SAM3A4C True Random Number Generator (TRNG) */ + CAN0_IRQn = 43, /**< 43 SAM3A4C CAN Controller 0 (CAN0) */ + CAN1_IRQn = 44 /**< 44 SAM3A4C CAN Controller 1 (CAN1) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3A4C core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3A4C does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3A4C uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3A4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3A4C_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_can.h" +#include "component/component_chipid.h" +#include "component/component_dacc.h" +#include "component/component_dmac.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_trng.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_uotghs.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3A4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3A4C_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi0.h" +#include "instance/instance_tc0.h" +#include "instance/instance_tc1.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_usart2.h" +#include "instance/instance_uotghs.h" +#include "instance/instance_can0.h" +#include "instance/instance_can1.h" +#include "instance/instance_trng.h" +#include "instance/instance_adc.h" +#include "instance/instance_dmac.h" +#include "instance/instance_dacc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart.h" +#include "instance/instance_chipid.h" +#include "instance/instance_efc0.h" +#include "instance/instance_efc1.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3A4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3A4C_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC0 ( 6) /**< \brief Enhanced Flash Controller 0 (EFC0) */ +#define ID_EFC1 ( 7) /**< \brief Enhanced Flash Controller 1 (EFC1) */ +#define ID_UART ( 8) /**< \brief Universal Asynchronous Receiver Transceiver (UART) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A, (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (17) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (18) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (19) /**< \brief USART 2 (USART2) */ +#define ID_HSMCI (21) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (22) /**< \brief Two-Wire Interface 0 (TWI0) */ +#define ID_TWI1 (23) /**< \brief Two-Wire Interface 1 (TWI1) */ +#define ID_SPI0 (24) /**< \brief Serial Peripheral Interface (SPI0) */ +#define ID_SSC (26) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (27) /**< \brief Timer Counter 0 (TC0) */ +#define ID_TC1 (28) /**< \brief Timer Counter 1 (TC1) */ +#define ID_TC2 (29) /**< \brief Timer Counter 2 (TC2) */ +#define ID_TC3 (30) /**< \brief Timer Counter 3 (TC3) */ +#define ID_TC4 (31) /**< \brief Timer Counter 4 (TC4) */ +#define ID_TC5 (32) /**< \brief Timer Counter 5 (TC5) */ +#define ID_PWM (36) /**< \brief Pulse Width Modulation Controller (PWM) */ +#define ID_ADC (37) /**< \brief ADC Controller (ADC) */ +#define ID_DACC (38) /**< \brief DAC Controller (DACC) */ +#define ID_DMAC (39) /**< \brief DMA Controller (DMAC) */ +#define ID_UOTGHS (40) /**< \brief USB OTG High Speed (UOTGHS) */ +#define ID_TRNG (41) /**< \brief True Random Number Generator (TRNG) */ +#define ID_CAN0 (43) /**< \brief CAN Controller 0 (CAN0) */ +#define ID_CAN1 (44) /**< \brief CAN Controller 1 (CAN1) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3A4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3A4C_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 (0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40084000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 (0x4008C000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x4008C100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x40090000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x40090100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40094000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40094100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40098000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40098100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x4009C000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x4009C100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 (0x400A0000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 (0x400A0100U) /**< \brief (PDC_USART2) Base Address */ +#define UOTGHS (0x400AC000U) /**< \brief (UOTGHS ) Base Address */ +#define CAN0 (0x400B4000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 (0x400B8000U) /**< \brief (CAN1 ) Base Address */ +#define TRNG (0x400BC000U) /**< \brief (TRNG ) Base Address */ +#define ADC (0x400C0000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x400C0100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC (0x400C4000U) /**< \brief (DMAC ) Base Address */ +#define DACC (0x400C8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x400C8100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX (0x400E0400U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART (0x400E0800U) /**< \brief (UART ) Base Address */ +#define PDC_UART (0x400E0900U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 (0x400E0A00U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 (0x400E0C00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1A00U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1A10U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1A30U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1A50U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1A60U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1A90U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 ((Tc *)0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40084000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 ((Twi *)0x4008C000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x4008C100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x40090000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x40090100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40094000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40094100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40098000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40098100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x4009C000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x4009C100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 ((Usart *)0x400A0000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 ((Pdc *)0x400A0100U) /**< \brief (PDC_USART2) Base Address */ +#define UOTGHS ((Uotghs *)0x400AC000U) /**< \brief (UOTGHS ) Base Address */ +#define CAN0 ((Can *)0x400B4000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 ((Can *)0x400B8000U) /**< \brief (CAN1 ) Base Address */ +#define TRNG ((Trng *)0x400BC000U) /**< \brief (TRNG ) Base Address */ +#define ADC ((Adc *)0x400C0000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x400C0100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC ((Dmac *)0x400C4000U) /**< \brief (DMAC ) Base Address */ +#define DACC ((Dacc *)0x400C8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x400C8100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0400U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART ((Uart *)0x400E0800U) /**< \brief (UART ) Base Address */ +#define PDC_UART ((Pdc *)0x400E0900U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 ((Efc *)0x400E0A00U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 ((Efc *)0x400E0C00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1A00U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1A10U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1A30U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1A50U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1A60U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1A90U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3A4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3A4C_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3a4c.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3A4C */ +/* ************************************************************************** */ + +#define IFLASH0_SIZE (0x20000u) +#define IFLASH0_PAGE_SIZE (256u) +#define IFLASH0_LOCK_REGION_SIZE (16384u) +#define IFLASH0_NB_OF_PAGES (512u) +#define IFLASH1_SIZE (0x20000u) +#define IFLASH1_PAGE_SIZE (256u) +#define IFLASH1_LOCK_REGION_SIZE (16384u) +#define IFLASH1_NB_OF_PAGES (512u) +#define IRAM0_SIZE (0x8000u) +#define IRAM1_SIZE (0x8000u) +#define IFLASH_SIZE (0x40000u) +#define IRAM_SIZE (0x10000u) + +#define IFLASH0_ADDR (0x00080000u) /**< Internal Flash 0 base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IROM_ADDR (0x00100000u) /**< Internal ROM base address */ +#define IRAM0_ADDR (0x20000000u) /**< Internal RAM 0 base address */ +#define IRAM1_ADDR (0x20080000u) /**< Internal RAM 1 base address */ +#define NFC_RAM_ADDR (0x20100000u) /**< NAND Flash Controller RAM base address */ +#define UOTGHS_RAM_ADDR (0x20180000u) /**< USB On-The-Go Interface RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ +#define EBI_CS4_ADDR (0x64000000u) /**< EBI Chip Select 4 base address */ +#define EBI_CS5_ADDR (0x65000000u) /**< EBI Chip Select 5 base address */ +#define EBI_CS6_ADDR (0x66000000u) /**< EBI Chip Select 6 base address */ +#define EBI_CS7_ADDR (0x67000000u) /**< EBI Chip Select 7 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3A4C */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (84000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3A4C_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3a8c.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3a8c.h new file mode 100644 index 000000000..20ffbb2a7 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3a8c.h @@ -0,0 +1,402 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3A8C_ +#define _SAM3A8C_ + +/** \addtogroup SAM3A8C_definitions SAM3A8C definitions + This file defines all structures and symbols for SAM3A8C: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3A8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3A8C_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3A8C specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3A8C Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3A8C Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3A8C Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3A8C Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3A8C Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3A8C Power Management Controller (PMC) */ + EFC0_IRQn = 6, /**< 6 SAM3A8C Enhanced Flash Controller 0 (EFC0) */ + EFC1_IRQn = 7, /**< 7 SAM3A8C Enhanced Flash Controller 1 (EFC1) */ + UART_IRQn = 8, /**< 8 SAM3A8C Universal Asynchronous Receiver Transceiver (UART) */ + PIOA_IRQn = 11, /**< 11 SAM3A8C Parallel I/O Controller A, (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3A8C Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 17, /**< 17 SAM3A8C USART 0 (USART0) */ + USART1_IRQn = 18, /**< 18 SAM3A8C USART 1 (USART1) */ + USART2_IRQn = 19, /**< 19 SAM3A8C USART 2 (USART2) */ + HSMCI_IRQn = 21, /**< 21 SAM3A8C Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 22, /**< 22 SAM3A8C Two-Wire Interface 0 (TWI0) */ + TWI1_IRQn = 23, /**< 23 SAM3A8C Two-Wire Interface 1 (TWI1) */ + SPI0_IRQn = 24, /**< 24 SAM3A8C Serial Peripheral Interface (SPI0) */ + SSC_IRQn = 26, /**< 26 SAM3A8C Synchronous Serial Controller (SSC) */ + TC0_IRQn = 27, /**< 27 SAM3A8C Timer Counter 0 (TC0) */ + TC1_IRQn = 28, /**< 28 SAM3A8C Timer Counter 1 (TC1) */ + TC2_IRQn = 29, /**< 29 SAM3A8C Timer Counter 2 (TC2) */ + TC3_IRQn = 30, /**< 30 SAM3A8C Timer Counter 3 (TC3) */ + TC4_IRQn = 31, /**< 31 SAM3A8C Timer Counter 4 (TC4) */ + TC5_IRQn = 32, /**< 32 SAM3A8C Timer Counter 5 (TC5) */ + PWM_IRQn = 36, /**< 36 SAM3A8C Pulse Width Modulation Controller (PWM) */ + ADC_IRQn = 37, /**< 37 SAM3A8C ADC Controller (ADC) */ + DACC_IRQn = 38, /**< 38 SAM3A8C DAC Controller (DACC) */ + DMAC_IRQn = 39, /**< 39 SAM3A8C DMA Controller (DMAC) */ + UOTGHS_IRQn = 40, /**< 40 SAM3A8C USB OTG High Speed (UOTGHS) */ + TRNG_IRQn = 41, /**< 41 SAM3A8C True Random Number Generator (TRNG) */ + CAN0_IRQn = 43, /**< 43 SAM3A8C CAN Controller 0 (CAN0) */ + CAN1_IRQn = 44 /**< 44 SAM3A8C CAN Controller 1 (CAN1) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3A8C core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3A8C does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3A8C uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3A8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3A8C_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_can.h" +#include "component/component_chipid.h" +#include "component/component_dacc.h" +#include "component/component_dmac.h" +#include "component/component_efc.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_trng.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_uotghs.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3A8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3A8C_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi0.h" +#include "instance/instance_tc0.h" +#include "instance/instance_tc1.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_usart2.h" +#include "instance/instance_uotghs.h" +#include "instance/instance_can0.h" +#include "instance/instance_can1.h" +#include "instance/instance_trng.h" +#include "instance/instance_adc.h" +#include "instance/instance_dmac.h" +#include "instance/instance_dacc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart.h" +#include "instance/instance_chipid.h" +#include "instance/instance_efc0.h" +#include "instance/instance_efc1.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3A8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3A8C_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC0 ( 6) /**< \brief Enhanced Flash Controller 0 (EFC0) */ +#define ID_EFC1 ( 7) /**< \brief Enhanced Flash Controller 1 (EFC1) */ +#define ID_UART ( 8) /**< \brief Universal Asynchronous Receiver Transceiver (UART) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A, (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (17) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (18) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (19) /**< \brief USART 2 (USART2) */ +#define ID_HSMCI (21) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (22) /**< \brief Two-Wire Interface 0 (TWI0) */ +#define ID_TWI1 (23) /**< \brief Two-Wire Interface 1 (TWI1) */ +#define ID_SPI0 (24) /**< \brief Serial Peripheral Interface (SPI0) */ +#define ID_SSC (26) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (27) /**< \brief Timer Counter 0 (TC0) */ +#define ID_TC1 (28) /**< \brief Timer Counter 1 (TC1) */ +#define ID_TC2 (29) /**< \brief Timer Counter 2 (TC2) */ +#define ID_TC3 (30) /**< \brief Timer Counter 3 (TC3) */ +#define ID_TC4 (31) /**< \brief Timer Counter 4 (TC4) */ +#define ID_TC5 (32) /**< \brief Timer Counter 5 (TC5) */ +#define ID_PWM (36) /**< \brief Pulse Width Modulation Controller (PWM) */ +#define ID_ADC (37) /**< \brief ADC Controller (ADC) */ +#define ID_DACC (38) /**< \brief DAC Controller (DACC) */ +#define ID_DMAC (39) /**< \brief DMA Controller (DMAC) */ +#define ID_UOTGHS (40) /**< \brief USB OTG High Speed (UOTGHS) */ +#define ID_TRNG (41) /**< \brief True Random Number Generator (TRNG) */ +#define ID_CAN0 (43) /**< \brief CAN Controller 0 (CAN0) */ +#define ID_CAN1 (44) /**< \brief CAN Controller 1 (CAN1) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3A8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3A8C_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 (0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40084000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 (0x4008C000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x4008C100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x40090000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x40090100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40094000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40094100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40098000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40098100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x4009C000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x4009C100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 (0x400A0000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 (0x400A0100U) /**< \brief (PDC_USART2) Base Address */ +#define UOTGHS (0x400AC000U) /**< \brief (UOTGHS ) Base Address */ +#define CAN0 (0x400B4000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 (0x400B8000U) /**< \brief (CAN1 ) Base Address */ +#define TRNG (0x400BC000U) /**< \brief (TRNG ) Base Address */ +#define ADC (0x400C0000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x400C0100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC (0x400C4000U) /**< \brief (DMAC ) Base Address */ +#define DACC (0x400C8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x400C8100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX (0x400E0400U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART (0x400E0800U) /**< \brief (UART ) Base Address */ +#define PDC_UART (0x400E0900U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 (0x400E0A00U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 (0x400E0C00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1A00U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1A10U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1A30U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1A50U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1A60U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1A90U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 ((Tc *)0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40084000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 ((Twi *)0x4008C000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x4008C100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x40090000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x40090100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40094000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40094100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40098000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40098100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x4009C000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x4009C100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 ((Usart *)0x400A0000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 ((Pdc *)0x400A0100U) /**< \brief (PDC_USART2) Base Address */ +#define UOTGHS ((Uotghs *)0x400AC000U) /**< \brief (UOTGHS ) Base Address */ +#define CAN0 ((Can *)0x400B4000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 ((Can *)0x400B8000U) /**< \brief (CAN1 ) Base Address */ +#define TRNG ((Trng *)0x400BC000U) /**< \brief (TRNG ) Base Address */ +#define ADC ((Adc *)0x400C0000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x400C0100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC ((Dmac *)0x400C4000U) /**< \brief (DMAC ) Base Address */ +#define DACC ((Dacc *)0x400C8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x400C8100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0400U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART ((Uart *)0x400E0800U) /**< \brief (UART ) Base Address */ +#define PDC_UART ((Pdc *)0x400E0900U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 ((Efc *)0x400E0A00U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 ((Efc *)0x400E0C00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1A00U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1A10U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1A30U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1A50U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1A60U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1A90U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3A8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3A8C_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3a8c.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3A8C */ +/* ************************************************************************** */ + +#define IFLASH0_SIZE (0x40000u) +#define IFLASH0_PAGE_SIZE (256u) +#define IFLASH0_LOCK_REGION_SIZE (16384u) +#define IFLASH0_NB_OF_PAGES (1024u) +#define IFLASH1_SIZE (0x40000u) +#define IFLASH1_PAGE_SIZE (256u) +#define IFLASH1_LOCK_REGION_SIZE (16384u) +#define IFLASH1_NB_OF_PAGES (1024u) +#define IRAM0_SIZE (0x10000u) +#define IRAM1_SIZE (0x8000u) +#define IFLASH_SIZE (0x80000u) +#define IRAM_SIZE (0x18000u) + +#define IFLASH0_ADDR (0x00080000u) /**< Internal Flash 0 base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IROM_ADDR (0x00100000u) /**< Internal ROM base address */ +#define IRAM0_ADDR (0x20000000u) /**< Internal RAM 0 base address */ +#define IRAM1_ADDR (0x20080000u) /**< Internal RAM 1 base address */ +#define NFC_RAM_ADDR (0x20100000u) /**< NAND Flash Controller RAM base address */ +#define UOTGHS_RAM_ADDR (0x20180000u) /**< USB On-The-Go Interface RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ +#define EBI_CS4_ADDR (0x64000000u) /**< EBI Chip Select 4 base address */ +#define EBI_CS5_ADDR (0x65000000u) /**< EBI Chip Select 5 base address */ +#define EBI_CS6_ADDR (0x66000000u) /**< EBI Chip Select 6 base address */ +#define EBI_CS7_ADDR (0x67000000u) /**< EBI Chip Select 7 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3A8C */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (84000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3A8C_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3x4c.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3x4c.h new file mode 100644 index 000000000..c539981f9 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3x4c.h @@ -0,0 +1,408 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3X4C_ +#define _SAM3X4C_ + +/** \addtogroup SAM3X4C_definitions SAM3X4C definitions + This file defines all structures and symbols for SAM3X4C: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3X4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3X4C_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3X4C specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3X4C Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3X4C Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3X4C Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3X4C Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3X4C Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3X4C Power Management Controller (PMC) */ + EFC0_IRQn = 6, /**< 6 SAM3X4C Enhanced Flash Controller 0 (EFC0) */ + EFC1_IRQn = 7, /**< 7 SAM3X4C Enhanced Flash Controller 1 (EFC1) */ + UART_IRQn = 8, /**< 8 SAM3X4C Universal Asynchronous Receiver Transceiver (UART) */ + PIOA_IRQn = 11, /**< 11 SAM3X4C Parallel I/O Controller A, (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3X4C Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 17, /**< 17 SAM3X4C USART 0 (USART0) */ + USART1_IRQn = 18, /**< 18 SAM3X4C USART 1 (USART1) */ + USART2_IRQn = 19, /**< 19 SAM3X4C USART 2 (USART2) */ + HSMCI_IRQn = 21, /**< 21 SAM3X4C Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 22, /**< 22 SAM3X4C Two-Wire Interface 0 (TWI0) */ + TWI1_IRQn = 23, /**< 23 SAM3X4C Two-Wire Interface 1 (TWI1) */ + SPI0_IRQn = 24, /**< 24 SAM3X4C Serial Peripheral Interface (SPI0) */ + SSC_IRQn = 26, /**< 26 SAM3X4C Synchronous Serial Controller (SSC) */ + TC0_IRQn = 27, /**< 27 SAM3X4C Timer Counter 0 (TC0) */ + TC1_IRQn = 28, /**< 28 SAM3X4C Timer Counter 1 (TC1) */ + TC2_IRQn = 29, /**< 29 SAM3X4C Timer Counter 2 (TC2) */ + TC3_IRQn = 30, /**< 30 SAM3X4C Timer Counter 3 (TC3) */ + TC4_IRQn = 31, /**< 31 SAM3X4C Timer Counter 4 (TC4) */ + TC5_IRQn = 32, /**< 32 SAM3X4C Timer Counter 5 (TC5) */ + PWM_IRQn = 36, /**< 36 SAM3X4C Pulse Width Modulation Controller (PWM) */ + ADC_IRQn = 37, /**< 37 SAM3X4C ADC Controller (ADC) */ + DACC_IRQn = 38, /**< 38 SAM3X4C DAC Controller (DACC) */ + DMAC_IRQn = 39, /**< 39 SAM3X4C DMA Controller (DMAC) */ + UOTGHS_IRQn = 40, /**< 40 SAM3X4C USB OTG High Speed (UOTGHS) */ + TRNG_IRQn = 41, /**< 41 SAM3X4C True Random Number Generator (TRNG) */ + EMAC_IRQn = 42, /**< 42 SAM3X4C Ethernet MAC (EMAC) */ + CAN0_IRQn = 43, /**< 43 SAM3X4C CAN Controller 0 (CAN0) */ + CAN1_IRQn = 44 /**< 44 SAM3X4C CAN Controller 1 (CAN1) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3X4C core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3X4C does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3X4C uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3X4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3X4C_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_can.h" +#include "component/component_chipid.h" +#include "component/component_dacc.h" +#include "component/component_dmac.h" +#include "component/component_efc.h" +#include "component/component_emac.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_trng.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_uotghs.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3X4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3X4C_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi0.h" +#include "instance/instance_tc0.h" +#include "instance/instance_tc1.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_usart2.h" +#include "instance/instance_uotghs.h" +#include "instance/instance_emac.h" +#include "instance/instance_can0.h" +#include "instance/instance_can1.h" +#include "instance/instance_trng.h" +#include "instance/instance_adc.h" +#include "instance/instance_dmac.h" +#include "instance/instance_dacc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart.h" +#include "instance/instance_chipid.h" +#include "instance/instance_efc0.h" +#include "instance/instance_efc1.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3X4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3X4C_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC0 ( 6) /**< \brief Enhanced Flash Controller 0 (EFC0) */ +#define ID_EFC1 ( 7) /**< \brief Enhanced Flash Controller 1 (EFC1) */ +#define ID_UART ( 8) /**< \brief Universal Asynchronous Receiver Transceiver (UART) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A, (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (17) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (18) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (19) /**< \brief USART 2 (USART2) */ +#define ID_HSMCI (21) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (22) /**< \brief Two-Wire Interface 0 (TWI0) */ +#define ID_TWI1 (23) /**< \brief Two-Wire Interface 1 (TWI1) */ +#define ID_SPI0 (24) /**< \brief Serial Peripheral Interface (SPI0) */ +#define ID_SSC (26) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (27) /**< \brief Timer Counter 0 (TC0) */ +#define ID_TC1 (28) /**< \brief Timer Counter 1 (TC1) */ +#define ID_TC2 (29) /**< \brief Timer Counter 2 (TC2) */ +#define ID_TC3 (30) /**< \brief Timer Counter 3 (TC3) */ +#define ID_TC4 (31) /**< \brief Timer Counter 4 (TC4) */ +#define ID_TC5 (32) /**< \brief Timer Counter 5 (TC5) */ +#define ID_PWM (36) /**< \brief Pulse Width Modulation Controller (PWM) */ +#define ID_ADC (37) /**< \brief ADC Controller (ADC) */ +#define ID_DACC (38) /**< \brief DAC Controller (DACC) */ +#define ID_DMAC (39) /**< \brief DMA Controller (DMAC) */ +#define ID_UOTGHS (40) /**< \brief USB OTG High Speed (UOTGHS) */ +#define ID_TRNG (41) /**< \brief True Random Number Generator (TRNG) */ +#define ID_EMAC (42) /**< \brief Ethernet MAC (EMAC) */ +#define ID_CAN0 (43) /**< \brief CAN Controller 0 (CAN0) */ +#define ID_CAN1 (44) /**< \brief CAN Controller 1 (CAN1) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3X4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3X4C_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 (0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40084000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 (0x4008C000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x4008C100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x40090000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x40090100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40094000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40094100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40098000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40098100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x4009C000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x4009C100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 (0x400A0000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 (0x400A0100U) /**< \brief (PDC_USART2) Base Address */ +#define UOTGHS (0x400AC000U) /**< \brief (UOTGHS ) Base Address */ +#define EMAC (0x400B0000U) /**< \brief (EMAC ) Base Address */ +#define CAN0 (0x400B4000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 (0x400B8000U) /**< \brief (CAN1 ) Base Address */ +#define TRNG (0x400BC000U) /**< \brief (TRNG ) Base Address */ +#define ADC (0x400C0000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x400C0100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC (0x400C4000U) /**< \brief (DMAC ) Base Address */ +#define DACC (0x400C8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x400C8100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX (0x400E0400U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART (0x400E0800U) /**< \brief (UART ) Base Address */ +#define PDC_UART (0x400E0900U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 (0x400E0A00U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 (0x400E0C00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1A00U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1A10U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1A30U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1A50U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1A60U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1A90U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 ((Tc *)0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40084000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 ((Twi *)0x4008C000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x4008C100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x40090000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x40090100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40094000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40094100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40098000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40098100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x4009C000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x4009C100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 ((Usart *)0x400A0000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 ((Pdc *)0x400A0100U) /**< \brief (PDC_USART2) Base Address */ +#define UOTGHS ((Uotghs *)0x400AC000U) /**< \brief (UOTGHS ) Base Address */ +#define EMAC ((Emac *)0x400B0000U) /**< \brief (EMAC ) Base Address */ +#define CAN0 ((Can *)0x400B4000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 ((Can *)0x400B8000U) /**< \brief (CAN1 ) Base Address */ +#define TRNG ((Trng *)0x400BC000U) /**< \brief (TRNG ) Base Address */ +#define ADC ((Adc *)0x400C0000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x400C0100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC ((Dmac *)0x400C4000U) /**< \brief (DMAC ) Base Address */ +#define DACC ((Dacc *)0x400C8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x400C8100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0400U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART ((Uart *)0x400E0800U) /**< \brief (UART ) Base Address */ +#define PDC_UART ((Pdc *)0x400E0900U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 ((Efc *)0x400E0A00U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 ((Efc *)0x400E0C00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1A00U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1A10U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1A30U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1A50U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1A60U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1A90U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3X4C */ +/* ************************************************************************** */ +/** \addtogroup SAM3X4C_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3x4c.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3X4C */ +/* ************************************************************************** */ + +#define IFLASH0_SIZE (0x20000u) +#define IFLASH0_PAGE_SIZE (256u) +#define IFLASH0_LOCK_REGION_SIZE (16384u) +#define IFLASH0_NB_OF_PAGES (512u) +#define IFLASH1_SIZE (0x20000u) +#define IFLASH1_PAGE_SIZE (256u) +#define IFLASH1_LOCK_REGION_SIZE (16384u) +#define IFLASH1_NB_OF_PAGES (512u) +#define IRAM0_SIZE (0x8000u) +#define IRAM1_SIZE (0x8000u) +#define IFLASH_SIZE (0x40000u) +#define IRAM_SIZE (0x10000u) + +#define IFLASH0_ADDR (0x00080000u) /**< Internal Flash 0 base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IROM_ADDR (0x00100000u) /**< Internal ROM base address */ +#define IRAM0_ADDR (0x20000000u) /**< Internal RAM 0 base address */ +#define IRAM1_ADDR (0x20080000u) /**< Internal RAM 1 base address */ +#define NFC_RAM_ADDR (0x20100000u) /**< NAND Flash Controller RAM base address */ +#define UOTGHS_RAM_ADDR (0x20180000u) /**< USB On-The-Go Interface RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ +#define EBI_CS4_ADDR (0x64000000u) /**< EBI Chip Select 4 base address */ +#define EBI_CS5_ADDR (0x65000000u) /**< EBI Chip Select 5 base address */ +#define EBI_CS6_ADDR (0x66000000u) /**< EBI Chip Select 6 base address */ +#define EBI_CS7_ADDR (0x67000000u) /**< EBI Chip Select 7 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3X4C */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (84000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3X4C_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3x4e.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3x4e.h new file mode 100644 index 000000000..b5a47a36f --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3x4e.h @@ -0,0 +1,441 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3X4E_ +#define _SAM3X4E_ + +/** \addtogroup SAM3X4E_definitions SAM3X4E definitions + This file defines all structures and symbols for SAM3X4E: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3X4E */ +/* ************************************************************************** */ +/** \addtogroup SAM3X4E_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3X4E specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3X4E Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3X4E Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3X4E Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3X4E Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3X4E Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3X4E Power Management Controller (PMC) */ + EFC0_IRQn = 6, /**< 6 SAM3X4E Enhanced Flash Controller 0 (EFC0) */ + EFC1_IRQn = 7, /**< 7 SAM3X4E Enhanced Flash Controller 1 (EFC1) */ + UART_IRQn = 8, /**< 8 SAM3X4E Universal Asynchronous Receiver Transceiver (UART) */ + SMC_IRQn = 9, /**< 9 SAM3X4E Static Memory Controller (SMC) */ + PIOA_IRQn = 11, /**< 11 SAM3X4E Parallel I/O Controller A, (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3X4E Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 13, /**< 13 SAM3X4E Parallel I/O Controller C (PIOC) */ + PIOD_IRQn = 14, /**< 14 SAM3X4E Parallel I/O Controller D (PIOD) */ + USART0_IRQn = 17, /**< 17 SAM3X4E USART 0 (USART0) */ + USART1_IRQn = 18, /**< 18 SAM3X4E USART 1 (USART1) */ + USART2_IRQn = 19, /**< 19 SAM3X4E USART 2 (USART2) */ + USART3_IRQn = 20, /**< 20 SAM3X4E USART 3 (USART3) */ + HSMCI_IRQn = 21, /**< 21 SAM3X4E Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 22, /**< 22 SAM3X4E Two-Wire Interface 0 (TWI0) */ + TWI1_IRQn = 23, /**< 23 SAM3X4E Two-Wire Interface 1 (TWI1) */ + SPI0_IRQn = 24, /**< 24 SAM3X4E Serial Peripheral Interface (SPI0) */ + SSC_IRQn = 26, /**< 26 SAM3X4E Synchronous Serial Controller (SSC) */ + TC0_IRQn = 27, /**< 27 SAM3X4E Timer Counter 0 (TC0) */ + TC1_IRQn = 28, /**< 28 SAM3X4E Timer Counter 1 (TC1) */ + TC2_IRQn = 29, /**< 29 SAM3X4E Timer Counter 2 (TC2) */ + TC3_IRQn = 30, /**< 30 SAM3X4E Timer Counter 3 (TC3) */ + TC4_IRQn = 31, /**< 31 SAM3X4E Timer Counter 4 (TC4) */ + TC5_IRQn = 32, /**< 32 SAM3X4E Timer Counter 5 (TC5) */ + TC6_IRQn = 33, /**< 33 SAM3X4E Timer Counter 6 (TC6) */ + TC7_IRQn = 34, /**< 34 SAM3X4E Timer Counter 7 (TC7) */ + TC8_IRQn = 35, /**< 35 SAM3X4E Timer Counter 8 (TC8) */ + PWM_IRQn = 36, /**< 36 SAM3X4E Pulse Width Modulation Controller (PWM) */ + ADC_IRQn = 37, /**< 37 SAM3X4E ADC Controller (ADC) */ + DACC_IRQn = 38, /**< 38 SAM3X4E DAC Controller (DACC) */ + DMAC_IRQn = 39, /**< 39 SAM3X4E DMA Controller (DMAC) */ + UOTGHS_IRQn = 40, /**< 40 SAM3X4E USB OTG High Speed (UOTGHS) */ + TRNG_IRQn = 41, /**< 41 SAM3X4E True Random Number Generator (TRNG) */ + EMAC_IRQn = 42, /**< 42 SAM3X4E Ethernet MAC (EMAC) */ + CAN0_IRQn = 43, /**< 43 SAM3X4E CAN Controller 0 (CAN0) */ + CAN1_IRQn = 44 /**< 44 SAM3X4E CAN Controller 1 (CAN1) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3X4E core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3X4E does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3X4E uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3X4E */ +/* ************************************************************************** */ +/** \addtogroup SAM3X4E_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_can.h" +#include "component/component_chipid.h" +#include "component/component_dacc.h" +#include "component/component_dmac.h" +#include "component/component_efc.h" +#include "component/component_emac.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_smc.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_trng.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_uotghs.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3X4E */ +/* ************************************************************************** */ +/** \addtogroup SAM3X4E_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi0.h" +#include "instance/instance_tc0.h" +#include "instance/instance_tc1.h" +#include "instance/instance_tc2.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_usart2.h" +#include "instance/instance_usart3.h" +#include "instance/instance_uotghs.h" +#include "instance/instance_emac.h" +#include "instance/instance_can0.h" +#include "instance/instance_can1.h" +#include "instance/instance_trng.h" +#include "instance/instance_adc.h" +#include "instance/instance_dmac.h" +#include "instance/instance_dacc.h" +#include "instance/instance_smc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart.h" +#include "instance/instance_chipid.h" +#include "instance/instance_efc0.h" +#include "instance/instance_efc1.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_pioc.h" +#include "instance/instance_piod.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3X4E */ +/* ************************************************************************** */ +/** \addtogroup SAM3X4E_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC0 ( 6) /**< \brief Enhanced Flash Controller 0 (EFC0) */ +#define ID_EFC1 ( 7) /**< \brief Enhanced Flash Controller 1 (EFC1) */ +#define ID_UART ( 8) /**< \brief Universal Asynchronous Receiver Transceiver (UART) */ +#define ID_SMC ( 9) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A, (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (13) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_PIOD (14) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_USART0 (17) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (18) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (19) /**< \brief USART 2 (USART2) */ +#define ID_USART3 (20) /**< \brief USART 3 (USART3) */ +#define ID_HSMCI (21) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (22) /**< \brief Two-Wire Interface 0 (TWI0) */ +#define ID_TWI1 (23) /**< \brief Two-Wire Interface 1 (TWI1) */ +#define ID_SPI0 (24) /**< \brief Serial Peripheral Interface (SPI0) */ +#define ID_SSC (26) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (27) /**< \brief Timer Counter 0 (TC0) */ +#define ID_TC1 (28) /**< \brief Timer Counter 1 (TC1) */ +#define ID_TC2 (29) /**< \brief Timer Counter 2 (TC2) */ +#define ID_TC3 (30) /**< \brief Timer Counter 3 (TC3) */ +#define ID_TC4 (31) /**< \brief Timer Counter 4 (TC4) */ +#define ID_TC5 (32) /**< \brief Timer Counter 5 (TC5) */ +#define ID_TC6 (33) /**< \brief Timer Counter 6 (TC6) */ +#define ID_TC7 (34) /**< \brief Timer Counter 7 (TC7) */ +#define ID_TC8 (35) /**< \brief Timer Counter 8 (TC8) */ +#define ID_PWM (36) /**< \brief Pulse Width Modulation Controller (PWM) */ +#define ID_ADC (37) /**< \brief ADC Controller (ADC) */ +#define ID_DACC (38) /**< \brief DAC Controller (DACC) */ +#define ID_DMAC (39) /**< \brief DMA Controller (DMAC) */ +#define ID_UOTGHS (40) /**< \brief USB OTG High Speed (UOTGHS) */ +#define ID_TRNG (41) /**< \brief True Random Number Generator (TRNG) */ +#define ID_EMAC (42) /**< \brief Ethernet MAC (EMAC) */ +#define ID_CAN0 (43) /**< \brief CAN Controller 0 (CAN0) */ +#define ID_CAN1 (44) /**< \brief CAN Controller 1 (CAN1) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3X4E */ +/* ************************************************************************** */ +/** \addtogroup SAM3X4E_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 (0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40084000U) /**< \brief (TC1 ) Base Address */ +#define TC2 (0x40088000U) /**< \brief (TC2 ) Base Address */ +#define TWI0 (0x4008C000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x4008C100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x40090000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x40090100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40094000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40094100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40098000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40098100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x4009C000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x4009C100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 (0x400A0000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 (0x400A0100U) /**< \brief (PDC_USART2) Base Address */ +#define USART3 (0x400A4000U) /**< \brief (USART3 ) Base Address */ +#define PDC_USART3 (0x400A4100U) /**< \brief (PDC_USART3) Base Address */ +#define UOTGHS (0x400AC000U) /**< \brief (UOTGHS ) Base Address */ +#define EMAC (0x400B0000U) /**< \brief (EMAC ) Base Address */ +#define CAN0 (0x400B4000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 (0x400B8000U) /**< \brief (CAN1 ) Base Address */ +#define TRNG (0x400BC000U) /**< \brief (TRNG ) Base Address */ +#define ADC (0x400C0000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x400C0100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC (0x400C4000U) /**< \brief (DMAC ) Base Address */ +#define DACC (0x400C8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x400C8100U) /**< \brief (PDC_DACC ) Base Address */ +#define SMC (0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX (0x400E0400U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART (0x400E0800U) /**< \brief (UART ) Base Address */ +#define PDC_UART (0x400E0900U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 (0x400E0A00U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 (0x400E0C00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC (0x400E1A00U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1A10U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1A30U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1A50U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1A60U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1A90U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 ((Tc *)0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40084000U) /**< \brief (TC1 ) Base Address */ +#define TC2 ((Tc *)0x40088000U) /**< \brief (TC2 ) Base Address */ +#define TWI0 ((Twi *)0x4008C000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x4008C100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x40090000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x40090100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40094000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40094100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40098000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40098100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x4009C000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x4009C100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 ((Usart *)0x400A0000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 ((Pdc *)0x400A0100U) /**< \brief (PDC_USART2) Base Address */ +#define USART3 ((Usart *)0x400A4000U) /**< \brief (USART3 ) Base Address */ +#define PDC_USART3 ((Pdc *)0x400A4100U) /**< \brief (PDC_USART3) Base Address */ +#define UOTGHS ((Uotghs *)0x400AC000U) /**< \brief (UOTGHS ) Base Address */ +#define EMAC ((Emac *)0x400B0000U) /**< \brief (EMAC ) Base Address */ +#define CAN0 ((Can *)0x400B4000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 ((Can *)0x400B8000U) /**< \brief (CAN1 ) Base Address */ +#define TRNG ((Trng *)0x400BC000U) /**< \brief (TRNG ) Base Address */ +#define ADC ((Adc *)0x400C0000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x400C0100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC ((Dmac *)0x400C4000U) /**< \brief (DMAC ) Base Address */ +#define DACC ((Dacc *)0x400C8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x400C8100U) /**< \brief (PDC_DACC ) Base Address */ +#define SMC ((Smc *)0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0400U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART ((Uart *)0x400E0800U) /**< \brief (UART ) Base Address */ +#define PDC_UART ((Pdc *)0x400E0900U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 ((Efc *)0x400E0A00U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 ((Efc *)0x400E0C00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC ((Rstc *)0x400E1A00U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1A10U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1A30U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1A50U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1A60U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1A90U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3X4E */ +/* ************************************************************************** */ +/** \addtogroup SAM3X4E_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3x4e.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3X4E */ +/* ************************************************************************** */ + +#define IFLASH0_SIZE (0x20000u) +#define IFLASH0_PAGE_SIZE (256u) +#define IFLASH0_LOCK_REGION_SIZE (16384u) +#define IFLASH0_NB_OF_PAGES (512u) +#define IFLASH1_SIZE (0x20000u) +#define IFLASH1_PAGE_SIZE (256u) +#define IFLASH1_LOCK_REGION_SIZE (16384u) +#define IFLASH1_NB_OF_PAGES (512u) +#define IRAM0_SIZE (0x8000u) +#define IRAM1_SIZE (0x8000u) +#define NFCRAM_SIZE (0x1000u) +#define IFLASH_SIZE (0x40000u) +#define IRAM_SIZE (0x10000u) + +#define IFLASH0_ADDR (0x00080000u) /**< Internal Flash 0 base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IROM_ADDR (0x00100000u) /**< Internal ROM base address */ +#define IRAM0_ADDR (0x20000000u) /**< Internal RAM 0 base address */ +#define IRAM1_ADDR (0x20080000u) /**< Internal RAM 1 base address */ +#define NFC_RAM_ADDR (0x20100000u) /**< NAND Flash Controller RAM base address */ +#define UOTGHS_RAM_ADDR (0x20180000u) /**< USB On-The-Go Interface RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ +#define EBI_CS4_ADDR (0x64000000u) /**< EBI Chip Select 4 base address */ +#define EBI_CS5_ADDR (0x65000000u) /**< EBI Chip Select 5 base address */ +#define EBI_CS6_ADDR (0x66000000u) /**< EBI Chip Select 6 base address */ +#define EBI_CS7_ADDR (0x67000000u) /**< EBI Chip Select 7 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3X4E */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (84000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3X4E_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3x8c.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3x8c.h new file mode 100644 index 000000000..3314d65df --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3x8c.h @@ -0,0 +1,408 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3X8C_ +#define _SAM3X8C_ + +/** \addtogroup SAM3X8C_definitions SAM3X8C definitions + This file defines all structures and symbols for SAM3X8C: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3X8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3X8C_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3X8C specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3X8C Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3X8C Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3X8C Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3X8C Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3X8C Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3X8C Power Management Controller (PMC) */ + EFC0_IRQn = 6, /**< 6 SAM3X8C Enhanced Flash Controller 0 (EFC0) */ + EFC1_IRQn = 7, /**< 7 SAM3X8C Enhanced Flash Controller 1 (EFC1) */ + UART_IRQn = 8, /**< 8 SAM3X8C Universal Asynchronous Receiver Transceiver (UART) */ + PIOA_IRQn = 11, /**< 11 SAM3X8C Parallel I/O Controller A, (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3X8C Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 17, /**< 17 SAM3X8C USART 0 (USART0) */ + USART1_IRQn = 18, /**< 18 SAM3X8C USART 1 (USART1) */ + USART2_IRQn = 19, /**< 19 SAM3X8C USART 2 (USART2) */ + HSMCI_IRQn = 21, /**< 21 SAM3X8C Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 22, /**< 22 SAM3X8C Two-Wire Interface 0 (TWI0) */ + TWI1_IRQn = 23, /**< 23 SAM3X8C Two-Wire Interface 1 (TWI1) */ + SPI0_IRQn = 24, /**< 24 SAM3X8C Serial Peripheral Interface (SPI0) */ + SSC_IRQn = 26, /**< 26 SAM3X8C Synchronous Serial Controller (SSC) */ + TC0_IRQn = 27, /**< 27 SAM3X8C Timer Counter 0 (TC0) */ + TC1_IRQn = 28, /**< 28 SAM3X8C Timer Counter 1 (TC1) */ + TC2_IRQn = 29, /**< 29 SAM3X8C Timer Counter 2 (TC2) */ + TC3_IRQn = 30, /**< 30 SAM3X8C Timer Counter 3 (TC3) */ + TC4_IRQn = 31, /**< 31 SAM3X8C Timer Counter 4 (TC4) */ + TC5_IRQn = 32, /**< 32 SAM3X8C Timer Counter 5 (TC5) */ + PWM_IRQn = 36, /**< 36 SAM3X8C Pulse Width Modulation Controller (PWM) */ + ADC_IRQn = 37, /**< 37 SAM3X8C ADC Controller (ADC) */ + DACC_IRQn = 38, /**< 38 SAM3X8C DAC Controller (DACC) */ + DMAC_IRQn = 39, /**< 39 SAM3X8C DMA Controller (DMAC) */ + UOTGHS_IRQn = 40, /**< 40 SAM3X8C USB OTG High Speed (UOTGHS) */ + TRNG_IRQn = 41, /**< 41 SAM3X8C True Random Number Generator (TRNG) */ + EMAC_IRQn = 42, /**< 42 SAM3X8C Ethernet MAC (EMAC) */ + CAN0_IRQn = 43, /**< 43 SAM3X8C CAN Controller 0 (CAN0) */ + CAN1_IRQn = 44 /**< 44 SAM3X8C CAN Controller 1 (CAN1) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3X8C core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3X8C does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3X8C uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3X8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3X8C_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_can.h" +#include "component/component_chipid.h" +#include "component/component_dacc.h" +#include "component/component_dmac.h" +#include "component/component_efc.h" +#include "component/component_emac.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_trng.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_uotghs.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3X8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3X8C_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi0.h" +#include "instance/instance_tc0.h" +#include "instance/instance_tc1.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_usart2.h" +#include "instance/instance_uotghs.h" +#include "instance/instance_emac.h" +#include "instance/instance_can0.h" +#include "instance/instance_can1.h" +#include "instance/instance_trng.h" +#include "instance/instance_adc.h" +#include "instance/instance_dmac.h" +#include "instance/instance_dacc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart.h" +#include "instance/instance_chipid.h" +#include "instance/instance_efc0.h" +#include "instance/instance_efc1.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3X8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3X8C_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC0 ( 6) /**< \brief Enhanced Flash Controller 0 (EFC0) */ +#define ID_EFC1 ( 7) /**< \brief Enhanced Flash Controller 1 (EFC1) */ +#define ID_UART ( 8) /**< \brief Universal Asynchronous Receiver Transceiver (UART) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A, (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (17) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (18) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (19) /**< \brief USART 2 (USART2) */ +#define ID_HSMCI (21) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (22) /**< \brief Two-Wire Interface 0 (TWI0) */ +#define ID_TWI1 (23) /**< \brief Two-Wire Interface 1 (TWI1) */ +#define ID_SPI0 (24) /**< \brief Serial Peripheral Interface (SPI0) */ +#define ID_SSC (26) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (27) /**< \brief Timer Counter 0 (TC0) */ +#define ID_TC1 (28) /**< \brief Timer Counter 1 (TC1) */ +#define ID_TC2 (29) /**< \brief Timer Counter 2 (TC2) */ +#define ID_TC3 (30) /**< \brief Timer Counter 3 (TC3) */ +#define ID_TC4 (31) /**< \brief Timer Counter 4 (TC4) */ +#define ID_TC5 (32) /**< \brief Timer Counter 5 (TC5) */ +#define ID_PWM (36) /**< \brief Pulse Width Modulation Controller (PWM) */ +#define ID_ADC (37) /**< \brief ADC Controller (ADC) */ +#define ID_DACC (38) /**< \brief DAC Controller (DACC) */ +#define ID_DMAC (39) /**< \brief DMA Controller (DMAC) */ +#define ID_UOTGHS (40) /**< \brief USB OTG High Speed (UOTGHS) */ +#define ID_TRNG (41) /**< \brief True Random Number Generator (TRNG) */ +#define ID_EMAC (42) /**< \brief Ethernet MAC (EMAC) */ +#define ID_CAN0 (43) /**< \brief CAN Controller 0 (CAN0) */ +#define ID_CAN1 (44) /**< \brief CAN Controller 1 (CAN1) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3X8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3X8C_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 (0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40084000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 (0x4008C000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x4008C100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x40090000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x40090100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40094000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40094100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40098000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40098100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x4009C000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x4009C100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 (0x400A0000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 (0x400A0100U) /**< \brief (PDC_USART2) Base Address */ +#define UOTGHS (0x400AC000U) /**< \brief (UOTGHS ) Base Address */ +#define EMAC (0x400B0000U) /**< \brief (EMAC ) Base Address */ +#define CAN0 (0x400B4000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 (0x400B8000U) /**< \brief (CAN1 ) Base Address */ +#define TRNG (0x400BC000U) /**< \brief (TRNG ) Base Address */ +#define ADC (0x400C0000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x400C0100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC (0x400C4000U) /**< \brief (DMAC ) Base Address */ +#define DACC (0x400C8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x400C8100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX (0x400E0400U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART (0x400E0800U) /**< \brief (UART ) Base Address */ +#define PDC_UART (0x400E0900U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 (0x400E0A00U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 (0x400E0C00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC (0x400E1A00U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1A10U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1A30U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1A50U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1A60U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1A90U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 ((Tc *)0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40084000U) /**< \brief (TC1 ) Base Address */ +#define TWI0 ((Twi *)0x4008C000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x4008C100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x40090000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x40090100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40094000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40094100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40098000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40098100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x4009C000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x4009C100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 ((Usart *)0x400A0000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 ((Pdc *)0x400A0100U) /**< \brief (PDC_USART2) Base Address */ +#define UOTGHS ((Uotghs *)0x400AC000U) /**< \brief (UOTGHS ) Base Address */ +#define EMAC ((Emac *)0x400B0000U) /**< \brief (EMAC ) Base Address */ +#define CAN0 ((Can *)0x400B4000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 ((Can *)0x400B8000U) /**< \brief (CAN1 ) Base Address */ +#define TRNG ((Trng *)0x400BC000U) /**< \brief (TRNG ) Base Address */ +#define ADC ((Adc *)0x400C0000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x400C0100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC ((Dmac *)0x400C4000U) /**< \brief (DMAC ) Base Address */ +#define DACC ((Dacc *)0x400C8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x400C8100U) /**< \brief (PDC_DACC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0400U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART ((Uart *)0x400E0800U) /**< \brief (UART ) Base Address */ +#define PDC_UART ((Pdc *)0x400E0900U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 ((Efc *)0x400E0A00U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 ((Efc *)0x400E0C00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define RSTC ((Rstc *)0x400E1A00U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1A10U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1A30U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1A50U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1A60U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1A90U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3X8C */ +/* ************************************************************************** */ +/** \addtogroup SAM3X8C_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3x8c.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3X8C */ +/* ************************************************************************** */ + +#define IFLASH0_SIZE (0x40000u) +#define IFLASH0_PAGE_SIZE (256u) +#define IFLASH0_LOCK_REGION_SIZE (16384u) +#define IFLASH0_NB_OF_PAGES (1024u) +#define IFLASH1_SIZE (0x40000u) +#define IFLASH1_PAGE_SIZE (256u) +#define IFLASH1_LOCK_REGION_SIZE (16384u) +#define IFLASH1_NB_OF_PAGES (1024u) +#define IRAM0_SIZE (0x10000u) +#define IRAM1_SIZE (0x8000u) +#define IFLASH_SIZE (0x80000u) +#define IRAM_SIZE (0x18000u) + +#define IFLASH0_ADDR (0x00080000u) /**< Internal Flash 0 base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IROM_ADDR (0x00100000u) /**< Internal ROM base address */ +#define IRAM0_ADDR (0x20000000u) /**< Internal RAM 0 base address */ +#define IRAM1_ADDR (0x20080000u) /**< Internal RAM 1 base address */ +#define NFC_RAM_ADDR (0x20100000u) /**< NAND Flash Controller RAM base address */ +#define UOTGHS_RAM_ADDR (0x20180000u) /**< USB On-The-Go Interface RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ +#define EBI_CS4_ADDR (0x64000000u) /**< EBI Chip Select 4 base address */ +#define EBI_CS5_ADDR (0x65000000u) /**< EBI Chip Select 5 base address */ +#define EBI_CS6_ADDR (0x66000000u) /**< EBI Chip Select 6 base address */ +#define EBI_CS7_ADDR (0x67000000u) /**< EBI Chip Select 7 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3X8C */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (84000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3X8C_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3x8e.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3x8e.h new file mode 100644 index 000000000..6d3ba7a5a --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3x8e.h @@ -0,0 +1,441 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3X8E_ +#define _SAM3X8E_ + +/** \addtogroup SAM3X8E_definitions SAM3X8E definitions + This file defines all structures and symbols for SAM3X8E: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3X8E */ +/* ************************************************************************** */ +/** \addtogroup SAM3X8E_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3X8E specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3X8E Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3X8E Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3X8E Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3X8E Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3X8E Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3X8E Power Management Controller (PMC) */ + EFC0_IRQn = 6, /**< 6 SAM3X8E Enhanced Flash Controller 0 (EFC0) */ + EFC1_IRQn = 7, /**< 7 SAM3X8E Enhanced Flash Controller 1 (EFC1) */ + UART_IRQn = 8, /**< 8 SAM3X8E Universal Asynchronous Receiver Transceiver (UART) */ + SMC_IRQn = 9, /**< 9 SAM3X8E Static Memory Controller (SMC) */ + PIOA_IRQn = 11, /**< 11 SAM3X8E Parallel I/O Controller A, (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3X8E Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 13, /**< 13 SAM3X8E Parallel I/O Controller C (PIOC) */ + PIOD_IRQn = 14, /**< 14 SAM3X8E Parallel I/O Controller D (PIOD) */ + USART0_IRQn = 17, /**< 17 SAM3X8E USART 0 (USART0) */ + USART1_IRQn = 18, /**< 18 SAM3X8E USART 1 (USART1) */ + USART2_IRQn = 19, /**< 19 SAM3X8E USART 2 (USART2) */ + USART3_IRQn = 20, /**< 20 SAM3X8E USART 3 (USART3) */ + HSMCI_IRQn = 21, /**< 21 SAM3X8E Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 22, /**< 22 SAM3X8E Two-Wire Interface 0 (TWI0) */ + TWI1_IRQn = 23, /**< 23 SAM3X8E Two-Wire Interface 1 (TWI1) */ + SPI0_IRQn = 24, /**< 24 SAM3X8E Serial Peripheral Interface (SPI0) */ + SSC_IRQn = 26, /**< 26 SAM3X8E Synchronous Serial Controller (SSC) */ + TC0_IRQn = 27, /**< 27 SAM3X8E Timer Counter 0 (TC0) */ + TC1_IRQn = 28, /**< 28 SAM3X8E Timer Counter 1 (TC1) */ + TC2_IRQn = 29, /**< 29 SAM3X8E Timer Counter 2 (TC2) */ + TC3_IRQn = 30, /**< 30 SAM3X8E Timer Counter 3 (TC3) */ + TC4_IRQn = 31, /**< 31 SAM3X8E Timer Counter 4 (TC4) */ + TC5_IRQn = 32, /**< 32 SAM3X8E Timer Counter 5 (TC5) */ + TC6_IRQn = 33, /**< 33 SAM3X8E Timer Counter 6 (TC6) */ + TC7_IRQn = 34, /**< 34 SAM3X8E Timer Counter 7 (TC7) */ + TC8_IRQn = 35, /**< 35 SAM3X8E Timer Counter 8 (TC8) */ + PWM_IRQn = 36, /**< 36 SAM3X8E Pulse Width Modulation Controller (PWM) */ + ADC_IRQn = 37, /**< 37 SAM3X8E ADC Controller (ADC) */ + DACC_IRQn = 38, /**< 38 SAM3X8E DAC Controller (DACC) */ + DMAC_IRQn = 39, /**< 39 SAM3X8E DMA Controller (DMAC) */ + UOTGHS_IRQn = 40, /**< 40 SAM3X8E USB OTG High Speed (UOTGHS) */ + TRNG_IRQn = 41, /**< 41 SAM3X8E True Random Number Generator (TRNG) */ + EMAC_IRQn = 42, /**< 42 SAM3X8E Ethernet MAC (EMAC) */ + CAN0_IRQn = 43, /**< 43 SAM3X8E CAN Controller 0 (CAN0) */ + CAN1_IRQn = 44 /**< 44 SAM3X8E CAN Controller 1 (CAN1) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3X8E core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3X8E does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3X8E uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3X8E */ +/* ************************************************************************** */ +/** \addtogroup SAM3X8E_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_can.h" +#include "component/component_chipid.h" +#include "component/component_dacc.h" +#include "component/component_dmac.h" +#include "component/component_efc.h" +#include "component/component_emac.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_smc.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_trng.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_uotghs.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3X8E */ +/* ************************************************************************** */ +/** \addtogroup SAM3X8E_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi0.h" +#include "instance/instance_tc0.h" +#include "instance/instance_tc1.h" +#include "instance/instance_tc2.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_usart2.h" +#include "instance/instance_usart3.h" +#include "instance/instance_uotghs.h" +#include "instance/instance_emac.h" +#include "instance/instance_can0.h" +#include "instance/instance_can1.h" +#include "instance/instance_trng.h" +#include "instance/instance_adc.h" +#include "instance/instance_dmac.h" +#include "instance/instance_dacc.h" +#include "instance/instance_smc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart.h" +#include "instance/instance_chipid.h" +#include "instance/instance_efc0.h" +#include "instance/instance_efc1.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_pioc.h" +#include "instance/instance_piod.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3X8E */ +/* ************************************************************************** */ +/** \addtogroup SAM3X8E_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC0 ( 6) /**< \brief Enhanced Flash Controller 0 (EFC0) */ +#define ID_EFC1 ( 7) /**< \brief Enhanced Flash Controller 1 (EFC1) */ +#define ID_UART ( 8) /**< \brief Universal Asynchronous Receiver Transceiver (UART) */ +#define ID_SMC ( 9) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A, (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (13) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_PIOD (14) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_USART0 (17) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (18) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (19) /**< \brief USART 2 (USART2) */ +#define ID_USART3 (20) /**< \brief USART 3 (USART3) */ +#define ID_HSMCI (21) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (22) /**< \brief Two-Wire Interface 0 (TWI0) */ +#define ID_TWI1 (23) /**< \brief Two-Wire Interface 1 (TWI1) */ +#define ID_SPI0 (24) /**< \brief Serial Peripheral Interface (SPI0) */ +#define ID_SSC (26) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (27) /**< \brief Timer Counter 0 (TC0) */ +#define ID_TC1 (28) /**< \brief Timer Counter 1 (TC1) */ +#define ID_TC2 (29) /**< \brief Timer Counter 2 (TC2) */ +#define ID_TC3 (30) /**< \brief Timer Counter 3 (TC3) */ +#define ID_TC4 (31) /**< \brief Timer Counter 4 (TC4) */ +#define ID_TC5 (32) /**< \brief Timer Counter 5 (TC5) */ +#define ID_TC6 (33) /**< \brief Timer Counter 6 (TC6) */ +#define ID_TC7 (34) /**< \brief Timer Counter 7 (TC7) */ +#define ID_TC8 (35) /**< \brief Timer Counter 8 (TC8) */ +#define ID_PWM (36) /**< \brief Pulse Width Modulation Controller (PWM) */ +#define ID_ADC (37) /**< \brief ADC Controller (ADC) */ +#define ID_DACC (38) /**< \brief DAC Controller (DACC) */ +#define ID_DMAC (39) /**< \brief DMA Controller (DMAC) */ +#define ID_UOTGHS (40) /**< \brief USB OTG High Speed (UOTGHS) */ +#define ID_TRNG (41) /**< \brief True Random Number Generator (TRNG) */ +#define ID_EMAC (42) /**< \brief Ethernet MAC (EMAC) */ +#define ID_CAN0 (43) /**< \brief CAN Controller 0 (CAN0) */ +#define ID_CAN1 (44) /**< \brief CAN Controller 1 (CAN1) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3X8E */ +/* ************************************************************************** */ +/** \addtogroup SAM3X8E_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 (0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40084000U) /**< \brief (TC1 ) Base Address */ +#define TC2 (0x40088000U) /**< \brief (TC2 ) Base Address */ +#define TWI0 (0x4008C000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x4008C100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x40090000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x40090100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40094000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40094100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40098000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40098100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x4009C000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x4009C100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 (0x400A0000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 (0x400A0100U) /**< \brief (PDC_USART2) Base Address */ +#define USART3 (0x400A4000U) /**< \brief (USART3 ) Base Address */ +#define PDC_USART3 (0x400A4100U) /**< \brief (PDC_USART3) Base Address */ +#define UOTGHS (0x400AC000U) /**< \brief (UOTGHS ) Base Address */ +#define EMAC (0x400B0000U) /**< \brief (EMAC ) Base Address */ +#define CAN0 (0x400B4000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 (0x400B8000U) /**< \brief (CAN1 ) Base Address */ +#define TRNG (0x400BC000U) /**< \brief (TRNG ) Base Address */ +#define ADC (0x400C0000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x400C0100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC (0x400C4000U) /**< \brief (DMAC ) Base Address */ +#define DACC (0x400C8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x400C8100U) /**< \brief (PDC_DACC ) Base Address */ +#define SMC (0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX (0x400E0400U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART (0x400E0800U) /**< \brief (UART ) Base Address */ +#define PDC_UART (0x400E0900U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 (0x400E0A00U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 (0x400E0C00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC (0x400E1A00U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1A10U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1A30U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1A50U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1A60U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1A90U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 ((Tc *)0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40084000U) /**< \brief (TC1 ) Base Address */ +#define TC2 ((Tc *)0x40088000U) /**< \brief (TC2 ) Base Address */ +#define TWI0 ((Twi *)0x4008C000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x4008C100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x40090000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x40090100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40094000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40094100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40098000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40098100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x4009C000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x4009C100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 ((Usart *)0x400A0000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 ((Pdc *)0x400A0100U) /**< \brief (PDC_USART2) Base Address */ +#define USART3 ((Usart *)0x400A4000U) /**< \brief (USART3 ) Base Address */ +#define PDC_USART3 ((Pdc *)0x400A4100U) /**< \brief (PDC_USART3) Base Address */ +#define UOTGHS ((Uotghs *)0x400AC000U) /**< \brief (UOTGHS ) Base Address */ +#define EMAC ((Emac *)0x400B0000U) /**< \brief (EMAC ) Base Address */ +#define CAN0 ((Can *)0x400B4000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 ((Can *)0x400B8000U) /**< \brief (CAN1 ) Base Address */ +#define TRNG ((Trng *)0x400BC000U) /**< \brief (TRNG ) Base Address */ +#define ADC ((Adc *)0x400C0000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x400C0100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC ((Dmac *)0x400C4000U) /**< \brief (DMAC ) Base Address */ +#define DACC ((Dacc *)0x400C8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x400C8100U) /**< \brief (PDC_DACC ) Base Address */ +#define SMC ((Smc *)0x400E0000U) /**< \brief (SMC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0400U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART ((Uart *)0x400E0800U) /**< \brief (UART ) Base Address */ +#define PDC_UART ((Pdc *)0x400E0900U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 ((Efc *)0x400E0A00U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 ((Efc *)0x400E0C00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC ((Rstc *)0x400E1A00U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1A10U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1A30U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1A50U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1A60U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1A90U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3X8E */ +/* ************************************************************************** */ +/** \addtogroup SAM3X8E_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3x8e.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3X8E */ +/* ************************************************************************** */ + +#define IFLASH0_SIZE (0x40000u) +#define IFLASH0_PAGE_SIZE (256u) +#define IFLASH0_LOCK_REGION_SIZE (16384u) +#define IFLASH0_NB_OF_PAGES (1024u) +#define IFLASH1_SIZE (0x40000u) +#define IFLASH1_PAGE_SIZE (256u) +#define IFLASH1_LOCK_REGION_SIZE (16384u) +#define IFLASH1_NB_OF_PAGES (1024u) +#define IRAM0_SIZE (0x10000u) +#define IRAM1_SIZE (0x8000u) +#define NFCRAM_SIZE (0x1000u) +#define IFLASH_SIZE (0x80000u) +#define IRAM_SIZE (0x18000u) + +#define IFLASH0_ADDR (0x00080000u) /**< Internal Flash 0 base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IROM_ADDR (0x00100000u) /**< Internal ROM base address */ +#define IRAM0_ADDR (0x20000000u) /**< Internal RAM 0 base address */ +#define IRAM1_ADDR (0x20080000u) /**< Internal RAM 1 base address */ +#define NFC_RAM_ADDR (0x20100000u) /**< NAND Flash Controller RAM base address */ +#define UOTGHS_RAM_ADDR (0x20180000u) /**< USB On-The-Go Interface RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ +#define EBI_CS4_ADDR (0x64000000u) /**< EBI Chip Select 4 base address */ +#define EBI_CS5_ADDR (0x65000000u) /**< EBI Chip Select 5 base address */ +#define EBI_CS6_ADDR (0x66000000u) /**< EBI Chip Select 6 base address */ +#define EBI_CS7_ADDR (0x67000000u) /**< EBI Chip Select 7 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3X8E */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (84000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3X8E_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3x8h.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3x8h.h new file mode 100644 index 000000000..1ca0d9d08 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3x8h.h @@ -0,0 +1,462 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3X8H_ +#define _SAM3X8H_ + +/** \addtogroup SAM3X8H_definitions SAM3X8H definitions + This file defines all structures and symbols for SAM3X8H: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __ASSEMBLY__ +#include +#ifndef __cplusplus +typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#else +typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ +#endif +typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ +typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAM3X8H */ +/* ************************************************************************** */ +/** \addtogroup SAM3X8H_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M3 System Tick Interrupt */ +/****** SAM3X8H specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAM3X8H Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAM3X8H Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAM3X8H Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAM3X8H Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAM3X8H Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAM3X8H Power Management Controller (PMC) */ + EFC0_IRQn = 6, /**< 6 SAM3X8H Enhanced Flash Controller 0 (EFC0) */ + EFC1_IRQn = 7, /**< 7 SAM3X8H Enhanced Flash Controller 1 (EFC1) */ + UART_IRQn = 8, /**< 8 SAM3X8H Universal Asynchronous Receiver Transceiver (UART) */ + SMC_IRQn = 9, /**< 9 SAM3X8H Static Memory Controller (SMC) */ + SDRAMC_IRQn = 10, /**< 10 SAM3X8H Synchronous Dynamic RAM Controller (SDRAMC) */ + PIOA_IRQn = 11, /**< 11 SAM3X8H Parallel I/O Controller A, (PIOA) */ + PIOB_IRQn = 12, /**< 12 SAM3X8H Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 13, /**< 13 SAM3X8H Parallel I/O Controller C (PIOC) */ + PIOD_IRQn = 14, /**< 14 SAM3X8H Parallel I/O Controller D (PIOD) */ + PIOE_IRQn = 15, /**< 15 SAM3X8H Parallel I/O Controller E (PIOE) */ + PIOF_IRQn = 16, /**< 16 SAM3X8H Parallel I/O Controller F (PIOF) */ + USART0_IRQn = 17, /**< 17 SAM3X8H USART 0 (USART0) */ + USART1_IRQn = 18, /**< 18 SAM3X8H USART 1 (USART1) */ + USART2_IRQn = 19, /**< 19 SAM3X8H USART 2 (USART2) */ + USART3_IRQn = 20, /**< 20 SAM3X8H USART 3 (USART3) */ + HSMCI_IRQn = 21, /**< 21 SAM3X8H Multimedia Card Interface (HSMCI) */ + TWI0_IRQn = 22, /**< 22 SAM3X8H Two-Wire Interface 0 (TWI0) */ + TWI1_IRQn = 23, /**< 23 SAM3X8H Two-Wire Interface 1 (TWI1) */ + SPI0_IRQn = 24, /**< 24 SAM3X8H Serial Peripheral Interface (SPI0) */ + SPI1_IRQn = 25, /**< 25 SAM3X8H Serial Peripheral Interface (SPI1) */ + SSC_IRQn = 26, /**< 26 SAM3X8H Synchronous Serial Controller (SSC) */ + TC0_IRQn = 27, /**< 27 SAM3X8H Timer Counter 0 (TC0) */ + TC1_IRQn = 28, /**< 28 SAM3X8H Timer Counter 1 (TC1) */ + TC2_IRQn = 29, /**< 29 SAM3X8H Timer Counter 2 (TC2) */ + TC3_IRQn = 30, /**< 30 SAM3X8H Timer Counter 3 (TC3) */ + TC4_IRQn = 31, /**< 31 SAM3X8H Timer Counter 4 (TC4) */ + TC5_IRQn = 32, /**< 32 SAM3X8H Timer Counter 5 (TC5) */ + TC6_IRQn = 33, /**< 33 SAM3X8H Timer Counter 6 (TC6) */ + TC7_IRQn = 34, /**< 34 SAM3X8H Timer Counter 7 (TC7) */ + TC8_IRQn = 35, /**< 35 SAM3X8H Timer Counter 8 (TC8) */ + PWM_IRQn = 36, /**< 36 SAM3X8H Pulse Width Modulation Controller (PWM) */ + ADC_IRQn = 37, /**< 37 SAM3X8H ADC Controller (ADC) */ + DACC_IRQn = 38, /**< 38 SAM3X8H DAC Controller (DACC) */ + DMAC_IRQn = 39, /**< 39 SAM3X8H DMA Controller (DMAC) */ + UOTGHS_IRQn = 40, /**< 40 SAM3X8H USB OTG High Speed (UOTGHS) */ + TRNG_IRQn = 41, /**< 41 SAM3X8H True Random Number Generator (TRNG) */ + EMAC_IRQn = 42, /**< 42 SAM3X8H Ethernet MAC (EMAC) */ + CAN0_IRQn = 43, /**< 43 SAM3X8H CAN Controller 0 (CAN0) */ + CAN1_IRQn = 44 /**< 44 SAM3X8H CAN Controller 1 (CAN1) */ +} IRQn_Type; + +/** + * \brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ + +#define __CM3_REV 0x0200 /**< SAM3X8H core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAM3X8H does provide a MPU */ +#define __NVIC_PRIO_BITS 4 /**< SAM3X8H uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ + +/* + * \brief CMSIS includes + */ + +#include + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAM3X8H */ +/* ************************************************************************** */ +/** \addtogroup SAM3X8H_api Peripheral Software API */ +/*@{*/ + +#include "component/component_adc.h" +#include "component/component_can.h" +#include "component/component_chipid.h" +#include "component/component_dacc.h" +#include "component/component_dmac.h" +#include "component/component_efc.h" +#include "component/component_emac.h" +#include "component/component_gpbr.h" +#include "component/component_hsmci.h" +#include "component/component_matrix.h" +#include "component/component_pdc.h" +#include "component/component_pio.h" +#include "component/component_pmc.h" +#include "component/component_pwm.h" +#include "component/component_rstc.h" +#include "component/component_rtc.h" +#include "component/component_rtt.h" +#include "component/component_sdramc.h" +#include "component/component_smc.h" +#include "component/component_spi.h" +#include "component/component_ssc.h" +#include "component/component_supc.h" +#include "component/component_tc.h" +#include "component/component_trng.h" +#include "component/component_twi.h" +#include "component/component_uart.h" +#include "component/component_uotghs.h" +#include "component/component_usart.h" +#include "component/component_wdt.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAM3X8H */ +/* ************************************************************************** */ +/** \addtogroup SAM3X8H_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/instance_hsmci.h" +#include "instance/instance_ssc.h" +#include "instance/instance_spi0.h" +#include "instance/instance_spi1.h" +#include "instance/instance_tc0.h" +#include "instance/instance_tc1.h" +#include "instance/instance_tc2.h" +#include "instance/instance_twi0.h" +#include "instance/instance_twi1.h" +#include "instance/instance_pwm.h" +#include "instance/instance_usart0.h" +#include "instance/instance_usart1.h" +#include "instance/instance_usart2.h" +#include "instance/instance_usart3.h" +#include "instance/instance_uotghs.h" +#include "instance/instance_emac.h" +#include "instance/instance_can0.h" +#include "instance/instance_can1.h" +#include "instance/instance_trng.h" +#include "instance/instance_adc.h" +#include "instance/instance_dmac.h" +#include "instance/instance_dacc.h" +#include "instance/instance_smc.h" +#include "instance/instance_sdramc.h" +#include "instance/instance_matrix.h" +#include "instance/instance_pmc.h" +#include "instance/instance_uart.h" +#include "instance/instance_chipid.h" +#include "instance/instance_efc0.h" +#include "instance/instance_efc1.h" +#include "instance/instance_pioa.h" +#include "instance/instance_piob.h" +#include "instance/instance_pioc.h" +#include "instance/instance_piod.h" +#include "instance/instance_pioe.h" +#include "instance/instance_piof.h" +#include "instance/instance_rstc.h" +#include "instance/instance_supc.h" +#include "instance/instance_rtt.h" +#include "instance/instance_wdt.h" +#include "instance/instance_rtc.h" +#include "instance/instance_gpbr.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAM3X8H */ +/* ************************************************************************** */ +/** \addtogroup SAM3X8H_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC0 ( 6) /**< \brief Enhanced Flash Controller 0 (EFC0) */ +#define ID_EFC1 ( 7) /**< \brief Enhanced Flash Controller 1 (EFC1) */ +#define ID_UART ( 8) /**< \brief Universal Asynchronous Receiver Transceiver (UART) */ +#define ID_SMC ( 9) /**< \brief Static Memory Controller (SMC) */ +#define ID_SDRAMC (10) /**< \brief Synchronous Dynamic RAM Controller (SDRAMC) */ +#define ID_PIOA (11) /**< \brief Parallel I/O Controller A, (PIOA) */ +#define ID_PIOB (12) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (13) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_PIOD (14) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_PIOE (15) /**< \brief Parallel I/O Controller E (PIOE) */ +#define ID_PIOF (16) /**< \brief Parallel I/O Controller F (PIOF) */ +#define ID_USART0 (17) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (18) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (19) /**< \brief USART 2 (USART2) */ +#define ID_USART3 (20) /**< \brief USART 3 (USART3) */ +#define ID_HSMCI (21) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWI0 (22) /**< \brief Two-Wire Interface 0 (TWI0) */ +#define ID_TWI1 (23) /**< \brief Two-Wire Interface 1 (TWI1) */ +#define ID_SPI0 (24) /**< \brief Serial Peripheral Interface (SPI0) */ +#define ID_SPI1 (25) /**< \brief Serial Peripheral Interface (SPI1) */ +#define ID_SSC (26) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (27) /**< \brief Timer Counter 0 (TC0) */ +#define ID_TC1 (28) /**< \brief Timer Counter 1 (TC1) */ +#define ID_TC2 (29) /**< \brief Timer Counter 2 (TC2) */ +#define ID_TC3 (30) /**< \brief Timer Counter 3 (TC3) */ +#define ID_TC4 (31) /**< \brief Timer Counter 4 (TC4) */ +#define ID_TC5 (32) /**< \brief Timer Counter 5 (TC5) */ +#define ID_TC6 (33) /**< \brief Timer Counter 6 (TC6) */ +#define ID_TC7 (34) /**< \brief Timer Counter 7 (TC7) */ +#define ID_TC8 (35) /**< \brief Timer Counter 8 (TC8) */ +#define ID_PWM (36) /**< \brief Pulse Width Modulation Controller (PWM) */ +#define ID_ADC (37) /**< \brief ADC Controller (ADC) */ +#define ID_DACC (38) /**< \brief DAC Controller (DACC) */ +#define ID_DMAC (39) /**< \brief DMA Controller (DMAC) */ +#define ID_UOTGHS (40) /**< \brief USB OTG High Speed (UOTGHS) */ +#define ID_TRNG (41) /**< \brief True Random Number Generator (TRNG) */ +#define ID_EMAC (42) /**< \brief Ethernet MAC (EMAC) */ +#define ID_CAN0 (43) /**< \brief CAN Controller 0 (CAN0) */ +#define ID_CAN1 (44) /**< \brief CAN Controller 1 (CAN1) */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAM3X8H */ +/* ************************************************************************** */ +/** \addtogroup SAM3X8H_base Peripheral Base Address Definitions */ +/*@{*/ + +#ifdef __ASSEMBLY__ +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define SPI1 (0x4000C000U) /**< \brief (SPI1 ) Base Address */ +#define TC0 (0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40084000U) /**< \brief (TC1 ) Base Address */ +#define TC2 (0x40088000U) /**< \brief (TC2 ) Base Address */ +#define TWI0 (0x4008C000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 (0x4008C100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 (0x40090000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 (0x40090100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM (0x40094000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM (0x40094100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 (0x40098000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 (0x40098100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 (0x4009C000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 (0x4009C100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 (0x400A0000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 (0x400A0100U) /**< \brief (PDC_USART2) Base Address */ +#define USART3 (0x400A4000U) /**< \brief (USART3 ) Base Address */ +#define PDC_USART3 (0x400A4100U) /**< \brief (PDC_USART3) Base Address */ +#define UOTGHS (0x400AC000U) /**< \brief (UOTGHS ) Base Address */ +#define EMAC (0x400B0000U) /**< \brief (EMAC ) Base Address */ +#define CAN0 (0x400B4000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 (0x400B8000U) /**< \brief (CAN1 ) Base Address */ +#define TRNG (0x400BC000U) /**< \brief (TRNG ) Base Address */ +#define ADC (0x400C0000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC (0x400C0100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC (0x400C4000U) /**< \brief (DMAC ) Base Address */ +#define DACC (0x400C8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC (0x400C8100U) /**< \brief (PDC_DACC ) Base Address */ +#define SMC (0x400E0000U) /**< \brief (SMC ) Base Address */ +#define SDRAMC (0x400E0200U) /**< \brief (SDRAMC ) Base Address */ +#define MATRIX (0x400E0400U) /**< \brief (MATRIX ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART (0x400E0800U) /**< \brief (UART ) Base Address */ +#define PDC_UART (0x400E0900U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 (0x400E0A00U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 (0x400E0C00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define PIOE (0x400E1600U) /**< \brief (PIOE ) Base Address */ +#define PIOF (0x400E1800U) /**< \brief (PIOF ) Base Address */ +#define RSTC (0x400E1A00U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1A10U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1A30U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1A50U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1A60U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1A90U) /**< \brief (GPBR ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define SPI1 ((Spi *)0x4000C000U) /**< \brief (SPI1 ) Base Address */ +#define TC0 ((Tc *)0x40080000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40084000U) /**< \brief (TC1 ) Base Address */ +#define TC2 ((Tc *)0x40088000U) /**< \brief (TC2 ) Base Address */ +#define TWI0 ((Twi *)0x4008C000U) /**< \brief (TWI0 ) Base Address */ +#define PDC_TWI0 ((Pdc *)0x4008C100U) /**< \brief (PDC_TWI0 ) Base Address */ +#define TWI1 ((Twi *)0x40090000U) /**< \brief (TWI1 ) Base Address */ +#define PDC_TWI1 ((Pdc *)0x40090100U) /**< \brief (PDC_TWI1 ) Base Address */ +#define PWM ((Pwm *)0x40094000U) /**< \brief (PWM ) Base Address */ +#define PDC_PWM ((Pdc *)0x40094100U) /**< \brief (PDC_PWM ) Base Address */ +#define USART0 ((Usart *)0x40098000U) /**< \brief (USART0 ) Base Address */ +#define PDC_USART0 ((Pdc *)0x40098100U) /**< \brief (PDC_USART0) Base Address */ +#define USART1 ((Usart *)0x4009C000U) /**< \brief (USART1 ) Base Address */ +#define PDC_USART1 ((Pdc *)0x4009C100U) /**< \brief (PDC_USART1) Base Address */ +#define USART2 ((Usart *)0x400A0000U) /**< \brief (USART2 ) Base Address */ +#define PDC_USART2 ((Pdc *)0x400A0100U) /**< \brief (PDC_USART2) Base Address */ +#define USART3 ((Usart *)0x400A4000U) /**< \brief (USART3 ) Base Address */ +#define PDC_USART3 ((Pdc *)0x400A4100U) /**< \brief (PDC_USART3) Base Address */ +#define UOTGHS ((Uotghs *)0x400AC000U) /**< \brief (UOTGHS ) Base Address */ +#define EMAC ((Emac *)0x400B0000U) /**< \brief (EMAC ) Base Address */ +#define CAN0 ((Can *)0x400B4000U) /**< \brief (CAN0 ) Base Address */ +#define CAN1 ((Can *)0x400B8000U) /**< \brief (CAN1 ) Base Address */ +#define TRNG ((Trng *)0x400BC000U) /**< \brief (TRNG ) Base Address */ +#define ADC ((Adc *)0x400C0000U) /**< \brief (ADC ) Base Address */ +#define PDC_ADC ((Pdc *)0x400C0100U) /**< \brief (PDC_ADC ) Base Address */ +#define DMAC ((Dmac *)0x400C4000U) /**< \brief (DMAC ) Base Address */ +#define DACC ((Dacc *)0x400C8000U) /**< \brief (DACC ) Base Address */ +#define PDC_DACC ((Pdc *)0x400C8100U) /**< \brief (PDC_DACC ) Base Address */ +#define SMC ((Smc *)0x400E0000U) /**< \brief (SMC ) Base Address */ +#define SDRAMC ((Sdramc *)0x400E0200U) /**< \brief (SDRAMC ) Base Address */ +#define MATRIX ((Matrix *)0x400E0400U) /**< \brief (MATRIX ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART ((Uart *)0x400E0800U) /**< \brief (UART ) Base Address */ +#define PDC_UART ((Pdc *)0x400E0900U) /**< \brief (PDC_UART ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID ) Base Address */ +#define EFC0 ((Efc *)0x400E0A00U) /**< \brief (EFC0 ) Base Address */ +#define EFC1 ((Efc *)0x400E0C00U) /**< \brief (EFC1 ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define PIOE ((Pio *)0x400E1600U) /**< \brief (PIOE ) Base Address */ +#define PIOF ((Pio *)0x400E1800U) /**< \brief (PIOF ) Base Address */ +#define RSTC ((Rstc *)0x400E1A00U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1A10U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1A30U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1A50U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1A60U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1A90U) /**< \brief (GPBR ) Base Address */ +#endif /* __ASSEMBLY__ */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAM3X8H */ +/* ************************************************************************** */ +/** \addtogroup SAM3X8H_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/pio_sam3x8h.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAM3X8H */ +/* ************************************************************************** */ + +#define IFLASH0_SIZE (0x40000u) +#define IFLASH0_PAGE_SIZE (256u) +#define IFLASH0_LOCK_REGION_SIZE (16384u) +#define IFLASH0_NB_OF_PAGES (1024u) +#define IFLASH1_SIZE (0x40000u) +#define IFLASH1_PAGE_SIZE (256u) +#define IFLASH1_LOCK_REGION_SIZE (16384u) +#define IFLASH1_NB_OF_PAGES (1024u) +#define IRAM0_SIZE (0x10000u) +#define IRAM1_SIZE (0x8000u) +#define NFCRAM_SIZE (0x1000u) +#define IFLASH_SIZE (0x80000u) +#define IRAM_SIZE (0x18000u) + +#define IFLASH0_ADDR (0x00080000u) /**< Internal Flash 0 base address */ +#if defined IFLASH0_SIZE +#define IFLASH1_ADDR (IFLASH0_ADDR+IFLASH0_SIZE) /**< Internal Flash 1 base address */ +#endif +#define IROM_ADDR (0x00100000u) /**< Internal ROM base address */ +#define IRAM0_ADDR (0x20000000u) /**< Internal RAM 0 base address */ +#define IRAM1_ADDR (0x20080000u) /**< Internal RAM 1 base address */ +#define NFC_RAM_ADDR (0x20100000u) /**< NAND Flash Controller RAM base address */ +#define UOTGHS_RAM_ADDR (0x20180000u) /**< USB On-The-Go Interface RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ +#define EBI_CS4_ADDR (0x64000000u) /**< EBI Chip Select 4 base address */ +#define EBI_CS5_ADDR (0x65000000u) /**< EBI Chip Select 5 base address */ +#define EBI_CS6_ADDR (0x66000000u) /**< EBI Chip Select 6 base address */ +#define EBI_CS7_ADDR (0x67000000u) /**< EBI Chip Select 7 base address */ + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAM3X8H */ +/* ************************************************************************** */ + +/* Device characteristics */ + +#define CHIP_FREQ_SLCK_RC_MIN (20000U) +#define CHIP_FREQ_SLCK_RC (32000U) +#define CHIP_FREQ_SLCK_RC_MAX (44000U) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000U) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000U) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000U) +#define CHIP_FREQ_CPU_MAX (84000000U) +#define CHIP_FLASH_WAIT_STATE (3U) + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAM3X8H_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3xa.h b/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3xa.h new file mode 100644 index 000000000..73e9ad699 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/include/sam3xa.h @@ -0,0 +1,53 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3XA_ +#define _SAM3XA_ + +#if defined __SAM3A2C__ + #include "sam3a2c.h" +#elif defined __SAM3A4C__ + #include "sam3a4c.h" +#elif defined __SAM3A8C__ + #include "sam3a8c.h" +#elif defined __SAM3X4C__ + #include "sam3x4c.h" +#elif defined __SAM3X4E__ + #include "sam3x4e.h" +#elif defined __SAM3X8C__ + #include "sam3x8c.h" +#elif defined __SAM3X8E__ + #include "sam3x8e.h" +#elif defined __SAM3X8H__ + #include "sam3x8h.h" +#else + #error Library does not support the specified device. +#endif + +#endif /* _SAM3XA_ */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/source/templates/exceptions.c b/hardware/sam/system/libsam/cmsis/sam3xa/source/templates/exceptions.c new file mode 100644 index 000000000..7206fd681 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/source/templates/exceptions.c @@ -0,0 +1,173 @@ +/*! \file ********************************************************************* + * + * \brief This file contains the default exception handlers. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \note + * The exception handler has weak aliases. + * As they are weak aliases, any function with the same name will override + * this definition. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#include "exceptions.h" + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +#ifdef __GNUC__ +/* Cortex-M3 core handlers */ +//void Reset_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void NMI_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +//void HardFault_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void MemManage_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void BusFault_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void UsageFault_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVC_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void DebugMon_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler(void) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void ACC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void ADC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void CAN0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void CAN1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void CRCCU_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void DACC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void EFC0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void EFC1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void EMAC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void HSMCI_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOA_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOB_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOD_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOE_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOF_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PMC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void PWM_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void RSTC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTT_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SDRAMC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SMC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SPI0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SPI1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SSC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void SUPC_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC2_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC6_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC7_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC8_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TRNG_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TWI0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void TWI1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void UART_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void UOTGHS_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void USART0_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void USART1_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void USART2_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void USART3_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_IrqHandler(void) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* __GNUC__ */ + +#ifdef __ICCARM__ +/* Cortex-M3 core handlers */ +//#pragma weak Reset_Handler=Dummy_Handler +#pragma weak NMI_Handler=Dummy_Handler +//#pragma weak HardFault_Handler=Dummy_Handler +#pragma weak MemManage_Handler=Dummy_Handler +#pragma weak BusFault_Handler=Dummy_Handler +#pragma weak UsageFault_Handler=Dummy_Handler +#pragma weak SVC_Handler=Dummy_Handler +#pragma weak DebugMon_Handler=Dummy_Handler +#pragma weak PendSV_Handler=Dummy_Handler +#pragma weak SysTick_Handler=Dummy_Handler + +/* Peripherals handlers */ +#pragma weak ACC_IrqHandler=Dummy_Handler +#pragma weak ADC_IrqHandler=Dummy_Handler +#pragma weak CAN0_IrqHandler=Dummy_Handler +#pragma weak CAN1_IrqHandler=Dummy_Handler +#pragma weak CRCCU_IrqHandler=Dummy_Handler +#pragma weak DACC_IrqHandler=Dummy_Handler +#pragma weak DMAC_IrqHandler=Dummy_Handler +#pragma weak EFC0_IrqHandler=Dummy_Handler +#pragma weak EFC1_IrqHandler=Dummy_Handler +#pragma weak EMAC_IrqHandler=Dummy_Handler +#pragma weak HSMCI_IrqHandler=Dummy_Handler +#pragma weak PIOA_IrqHandler=Dummy_Handler +#pragma weak PIOB_IrqHandler=Dummy_Handler +#pragma weak PIOC_IrqHandler=Dummy_Handler +#pragma weak PIOD_IrqHandler=Dummy_Handler +#pragma weak PIOE_IrqHandler=Dummy_Handler +#pragma weak PIOF_IrqHandler=Dummy_Handler +#pragma weak PMC_IrqHandler=Dummy_Handler +#pragma weak PWM_IrqHandler=Dummy_Handler +#pragma weak RSTC_IrqHandler=Dummy_Handler +#pragma weak RTC_IrqHandler=Dummy_Handler +#pragma weak RTT_IrqHandler=Dummy_Handler +#pragma weak SDRAMC_IrqHandler=Dummy_Handler +#pragma weak SMC_IrqHandler=Dummy_Handler +#pragma weak SPI0_IrqHandler=Dummy_Handler +#pragma weak SPI1_IrqHandler=Dummy_Handler +#pragma weak SSC_IrqHandler=Dummy_Handler +#pragma weak SUPC_IrqHandler=Dummy_Handler +#pragma weak TC0_IrqHandler=Dummy_Handler +#pragma weak TC1_IrqHandler=Dummy_Handler +#pragma weak TC2_IrqHandler=Dummy_Handler +#pragma weak TC3_IrqHandler=Dummy_Handler +#pragma weak TC4_IrqHandler=Dummy_Handler +#pragma weak TC5_IrqHandler=Dummy_Handler +#pragma weak TC6_IrqHandler=Dummy_Handler +#pragma weak TC7_IrqHandler=Dummy_Handler +#pragma weak TC8_IrqHandler=Dummy_Handler +#pragma weak TRNG_IrqHandler=Dummy_Handler +#pragma weak TWI0_IrqHandler=Dummy_Handler +#pragma weak TWI1_IrqHandler=Dummy_Handler +#pragma weak UART_IrqHandler=Dummy_Handler +#pragma weak UOTGHS_IrqHandler=Dummy_Handler +#pragma weak USART0_IrqHandler=Dummy_Handler +#pragma weak USART1_IrqHandler=Dummy_Handler +#pragma weak USART2_IrqHandler=Dummy_Handler +#pragma weak USART3_IrqHandler=Dummy_Handler +#pragma weak WDT_IrqHandler=Dummy_Handler +#endif /* __ICCARM__ */ + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/source/templates/exceptions.h b/hardware/sam/system/libsam/cmsis/sam3xa/source/templates/exceptions.h new file mode 100644 index 000000000..1c235b249 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/source/templates/exceptions.h @@ -0,0 +1,103 @@ +/*! \file ********************************************************************* + * + * \brief This file contains the interface for default exception handlers. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#ifndef EXCEPTIONS_H_INCLUDED +#define EXCEPTIONS_H_INCLUDED + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +/* Function prototype for exception table items (interrupt handler). */ +typedef void (*IntFunc) (void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M3 core handlers */ +void Reset_Handler(void); +void NMI_Handler(void); +void HardFault_Handler(void); +void MemManage_Handler(void); +void BusFault_Handler(void); +void UsageFault_Handler(void); +void SVC_Handler(void); +void DebugMon_Handler(void); +void PendSV_Handler(void); +void SysTick_Handler(void); + +/* Peripherals handlers */ +void ACC_IrqHandler(void); +void ADC_IrqHandler(void); +void CAN0_IrqHandler(void); +void CAN1_IrqHandler(void); +void CRCCU_IrqHandler(void); +void DACC_IrqHandler(void); +void DMAC_IrqHandler(void); +void EFC0_IrqHandler(void); +void EFC1_IrqHandler(void); +void EMAC_IrqHandler(void); +void HSMCI_IrqHandler(void); +void PIOA_IrqHandler(void); +void PIOB_IrqHandler(void); +void PIOC_IrqHandler(void); +void PIOD_IrqHandler(void); +void PIOE_IrqHandler(void); +void PIOF_IrqHandler(void); +void PMC_IrqHandler(void); +void PWM_IrqHandler(void); +void RSTC_IrqHandler(void); +void RTC_IrqHandler(void); +void RTT_IrqHandler(void); +void SDRAMC_IrqHandler(void); +void SMC_IrqHandler(void); +void SPI0_IrqHandler(void); +void SPI1_IrqHandler(void); +void SSC_IrqHandler(void); +void SUPC_IrqHandler(void); +void TC0_IrqHandler(void); +void TC1_IrqHandler(void); +void TC2_IrqHandler(void); +void TC3_IrqHandler(void); +void TC4_IrqHandler(void); +void TC5_IrqHandler(void); +void TC6_IrqHandler(void); +void TC7_IrqHandler(void); +void TC8_IrqHandler(void); +void TRNG_IrqHandler(void); +void TWI0_IrqHandler(void); +void TWI1_IrqHandler(void); +void UART_IrqHandler(void); +void UOTGHS_IrqHandler(void); +void USART0_IrqHandler(void); +void USART1_IrqHandler(void); +void USART2_IrqHandler(void); +void USART3_IrqHandler(void); +void WDT_IrqHandler(void); + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ + +#endif /* EXCEPTIONS_H_INCLUDED */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/source/templates/gcc/startup_sam3x.c b/hardware/sam/system/libsam/cmsis/sam3xa/source/templates/gcc/startup_sam3x.c new file mode 100644 index 000000000..3afa1c96c --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/source/templates/gcc/startup_sam3x.c @@ -0,0 +1,146 @@ +/*! \file ********************************************************************* + * + * \brief Startup file for SAM3X. + * + * $asf_license$ + * + * This file defines common SAM series. + * + * - Compiler: ARMGCC + * - Supported devices: All SAM3X devices can be used. + * - AppNote: + * + ******************************************************************************/ + +#include "../exceptions.h" +#include "sam3.h" + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +IntFunc exception_table[] = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + (IntFunc) (&_estack), + Reset_Handler, + + NMI_Handler, + HardFault_Handler, + MemManage_Handler, + BusFault_Handler, + UsageFault_Handler, + 0, 0, 0, 0, /* Reserved */ + SVC_Handler, + DebugMon_Handler, + 0, /* Reserved */ + PendSV_Handler, + SysTick_Handler, + + /* Configurable interrupts */ + SUPC_IrqHandler, /* 0 Supply Controller */ + RSTC_IrqHandler, /* 1 Reset Controller */ + RTC_IrqHandler, /* 2 Real Time Clock */ + RTT_IrqHandler, /* 3 Real Time Timer */ + WDT_IrqHandler, /* 4 Watchdog Timer */ + PMC_IrqHandler, /* 5 PMC */ + EFC0_IrqHandler, /* 6 EFC 0 */ + EFC1_IrqHandler, /* 7 EFC 1 */ + UART_IrqHandler, /* 8 UART */ + SMC_IrqHandler, /* 9 SMC */ + SDRAMC_IrqHandler, /* 10 SDRAMC */ + PIOA_IrqHandler, /* 11 Parallel IO Controller A */ + PIOB_IrqHandler, /* 12 Parallel IO Controller B */ + PIOC_IrqHandler, /* 13 Parallel IO Controller C */ + PIOD_IrqHandler, /* 14 Parallel IO Controller D */ + PIOE_IrqHandler, /* 15 Parallel IO Controller E */ + PIOF_IrqHandler, /* 16 Parallel IO Controller F */ + USART0_IrqHandler, /* 17 USART 0 */ + USART1_IrqHandler, /* 18 USART 1 */ + USART2_IrqHandler, /* 19 USART 2 */ + USART3_IrqHandler, /* 20 USART 3 */ + HSMCI_IrqHandler, /* 21 MCI */ + TWI0_IrqHandler, /* 22 TWI 0 */ + TWI1_IrqHandler, /* 23 TWI 1 */ + SPI0_IrqHandler, /* 24 SPI 0 */ + SPI1_IrqHandler, /* 25 SPI 1 */ + SSC_IrqHandler, /* 26 SSC */ + TC0_IrqHandler, /* 27 Timer Counter 0 */ + TC1_IrqHandler, /* 28 Timer Counter 1 */ + TC2_IrqHandler, /* 29 Timer Counter 2 */ + TC3_IrqHandler, /* 30 Timer Counter 3 */ + TC4_IrqHandler, /* 31 Timer Counter 4 */ + TC5_IrqHandler, /* 32 Timer Counter 5 */ + TC6_IrqHandler, /* 33 Timer Counter 6 */ + TC7_IrqHandler, /* 34 Timer Counter 7 */ + TC8_IrqHandler, /* 35 Timer Counter 8 */ + PWM_IrqHandler, /* 36 PWM */ + ADC_IrqHandler, /* 37 ADC controller */ + DACC_IrqHandler, /* 38 DAC controller */ + DMAC_IrqHandler, /* 39 DMA Controller */ + UOTGHS_IrqHandler, /* 40 USB OTG High Speed */ + TRNG_IrqHandler, /* 41 True Random Number Generator */ + EMAC_IrqHandler, /* 42 Ethernet MAC */ + CAN0_IrqHandler, /* 43 CAN Controller 0 */ + CAN1_IrqHandler, /* 44 CAN Controller 1 */ +}; + +/* TEMPORARY PATCH FOR SCB */ +#define SCB_VTOR_TBLBASE_Pos 29 /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + if (((uint32_t) pSrc >= IRAM0_ADDR) && ((uint32_t) pSrc < NFC_RAM_ADDR)) { + SCB->VTOR |= 1 << SCB_VTOR_TBLBASE_Pos; + } + + /* Initialize the C library */ + __libc_init_array(); + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/source/templates/iar/startup_sam3x.c b/hardware/sam/system/libsam/cmsis/sam3xa/source/templates/iar/startup_sam3x.c new file mode 100644 index 000000000..c72851736 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/source/templates/iar/startup_sam3x.c @@ -0,0 +1,122 @@ +/*! \file ********************************************************************* + * + * \brief Startup file for SAM3X. + * + * $asf_license$ + * + * This file defines common SAM series. + * + * - Compiler: IAR EWARM + * - Supported devices: All SAM3X devices can be used. + * - AppNote: + * + ******************************************************************************/ + +#include "../exceptions.h" +#include "sam3.h" + +typedef void (*intfunc) (void); +typedef union { intfunc __fun; void * __ptr; } intvec_elem; + +void __iar_program_start(void); +int __low_level_init(void); + +/* Exception Table */ +#pragma language=extended +#pragma segment="CSTACK" + +/* The name "__vector_table" has special meaning for C-SPY: */ +/* it is where the SP start value is found, and the NVIC vector */ +/* table register (VTOR) is initialized to this address if != 0 */ + +#pragma section = ".intvec" +#pragma location = ".intvec" +const intvec_elem __vector_table[] = { + {.__ptr = __sfe("CSTACK")}, + Reset_Handler, + + NMI_Handler, + HardFault_Handler, + MemManage_Handler, + BusFault_Handler, + UsageFault_Handler, + 0, 0, 0, 0, /* Reserved */ + SVC_Handler, + DebugMon_Handler, + 0, /* Reserved */ + PendSV_Handler, + SysTick_Handler, + + /* Configurable interrupts */ + SUPC_IrqHandler, /* 0 Supply Controller */ + RSTC_IrqHandler, /* 1 Reset Controller */ + RTC_IrqHandler, /* 2 Real Time Clock */ + RTT_IrqHandler, /* 3 Real Time Timer */ + WDT_IrqHandler, /* 4 Watchdog Timer */ + PMC_IrqHandler, /* 5 PMC */ + EFC0_IrqHandler, /* 6 EFC 0 */ + EFC1_IrqHandler, /* 7 EFC 1 */ + UART_IrqHandler, /* 8 UART */ + SMC_IrqHandler, /* 9 SMC */ + SDRAMC_IrqHandler, /* 10 SDRAMC */ + PIOA_IrqHandler, /* 11 Parallel IO Controller A */ + PIOB_IrqHandler, /* 12 Parallel IO Controller B */ + PIOC_IrqHandler, /* 13 Parallel IO Controller C */ + PIOD_IrqHandler, /* 14 Parallel IO Controller D */ + PIOE_IrqHandler, /* 15 Parallel IO Controller E */ + PIOF_IrqHandler, /* 16 Parallel IO Controller F */ + USART0_IrqHandler, /* 17 USART 0 */ + USART1_IrqHandler, /* 18 USART 1 */ + USART2_IrqHandler, /* 19 USART 2 */ + USART3_IrqHandler, /* 20 USART 3 */ + HSMCI_IrqHandler, /* 21 MCI */ + TWI0_IrqHandler, /* 22 TWI 0 */ + TWI1_IrqHandler, /* 23 TWI 1 */ + SPI0_IrqHandler, /* 24 SPI 0 */ + SPI1_IrqHandler, /* 25 SPI 1 */ + SSC_IrqHandler, /* 26 SSC */ + TC0_IrqHandler, /* 27 Timer Counter 0 */ + TC1_IrqHandler, /* 28 Timer Counter 1 */ + TC2_IrqHandler, /* 29 Timer Counter 2 */ + TC3_IrqHandler, /* 30 Timer Counter 3 */ + TC4_IrqHandler, /* 31 Timer Counter 4 */ + TC5_IrqHandler, /* 32 Timer Counter 5 */ + TC6_IrqHandler, /* 33 Timer Counter 6 */ + TC7_IrqHandler, /* 34 Timer Counter 7 */ + TC8_IrqHandler, /* 35 Timer Counter 8 */ + PWM_IrqHandler, /* 36 PWM */ + ADC_IrqHandler, /* 37 ADC controller */ + DACC_IrqHandler, /* 38 DAC controller */ + DMAC_IrqHandler, /* 39 DMA Controller */ + UOTGHS_IrqHandler, /* 40 USB OTG High Speed */ + TRNG_IrqHandler, /* 41 True Random Number Generator */ + EMAC_IrqHandler, /* 42 Ethernet MAC */ + CAN0_IrqHandler, /* 43 CAN Controller 0 */ + CAN1_IrqHandler, /* 44 CAN Controller 1 */ +}; + +/**------------------------------------------------------------------------------ + * This is the code that gets called on processor reset. To initialize the + * device. + *------------------------------------------------------------------------------*/ +int __low_level_init(void) +{ + uint32_t *pSrc = __section_begin(".intvec"); + + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + if (((uint32_t) pSrc >= IRAM0_ADDR) && ((uint32_t) pSrc < NFC_RAM_ADDR)) { + SCB->VTOR |= 1 << SCB_VTOR_TBLBASE_Pos; + } + + return 1; /* if return 0, the data sections will not be initialized */ +} + +/**------------------------------------------------------------------------------ + * This is the code that gets called on processor reset. To initialize the + * device. + *------------------------------------------------------------------------------*/ +void Reset_Handler(void) +{ + __iar_program_start(); +} diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/source/templates/system_sam3x.c b/hardware/sam/system/libsam/cmsis/sam3xa/source/templates/system_sam3x.c new file mode 100644 index 000000000..27186e512 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/source/templates/system_sam3x.c @@ -0,0 +1,204 @@ +/*! \file ********************************************************************* + * + * \brief Provides the low-level initialization functions that called + * on chip startup. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#include "system_sam3x.h" +#include "sam3xa.h" + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +/* Clock settings (84MHz) */ +#define SYS_BOARD_OSCOUNT (CKGR_MOR_MOSCXTST(0x8)) +#define SYS_BOARD_PLLAR (CKGR_PLLAR_ONE \ + | CKGR_PLLAR_MULA(0x6) \ + | CKGR_PLLAR_PLLACOUNT(0x3f) \ + | CKGR_PLLAR_DIVA(0x1)) +#define SYS_BOARD_MCKR (PMC_MCKR_PRES_CLK_1 | PMC_MCKR_CSS_PLLA_CLK) + +/* Clock Definitions */ +#define SYS_FREQ_XTAL_32K (32768UL) /* External 32K crystal frequency */ +#define SYS_FREQ_XTAL_XTAL12M (12000000UL) /* External 12M crystal frequency */ +#define SYS_UTMIPLL (480000000UL) /* UTMI PLL frequency */ + +#define SYS_FREQ_FWS_0 (22500000UL) /* Maximum operating frequency when FWS is 0 */ +#define SYS_FREQ_FWS_1 (34000000UL) /* Maximum operating frequency when FWS is 1 */ +#define SYS_FREQ_FWS_2 (53000000UL) /* Maximum operating frequency when FWS is 2 */ +#define SYS_FREQ_FWS_3 (78000000UL) /* Maximum operating frequency when FWS is 3 */ + +#define SYS_CKGR_MOR_KEY_VALUE CKGR_MOR_KEY(0x37) /* Key to unlock MOR register */ + +/* FIXME: should be generated by sock */ +uint32_t SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + +/** + * \brief Setup the microcontroller system. + * Initialize the System and update the SystemFrequency variable. + */ +void SystemInit(void) +{ + /* Set 3 FWS for Embedded Flash Access */ + EFC0->EEFC_FMR = EEFC_FMR_FWS(CHIP_FLASH_WAIT_STATE); + EFC1->EEFC_FMR = EEFC_FMR_FWS(CHIP_FLASH_WAIT_STATE); + + /* Initialize main oscillator */ + if (!(PMC->CKGR_MOR & CKGR_MOR_MOSCSEL)) { + PMC->CKGR_MOR = SYS_CKGR_MOR_KEY_VALUE | SYS_BOARD_OSCOUNT | + CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN; + while (!(PMC->PMC_SR & PMC_SR_MOSCXTS)) { + } + } + + /* Switch to 3-20MHz Xtal oscillator */ + PMC->CKGR_MOR = SYS_CKGR_MOR_KEY_VALUE | SYS_BOARD_OSCOUNT | + CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN | CKGR_MOR_MOSCSEL; + + while (!(PMC->PMC_SR & PMC_SR_MOSCSELS)) { + } + PMC->PMC_MCKR = (PMC->PMC_MCKR & ~(uint32_t)PMC_MCKR_CSS_Msk) | + PMC_MCKR_CSS_MAIN_CLK; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)) { + } + + /* Initialize PLLA */ + PMC->CKGR_PLLAR = SYS_BOARD_PLLAR; + while (!(PMC->PMC_SR & PMC_SR_LOCKA)) { + } + + /* Switch to main clock */ + PMC->PMC_MCKR = (SYS_BOARD_MCKR & ~PMC_MCKR_CSS_Msk) | PMC_MCKR_CSS_MAIN_CLK; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)) { + } + + /* Switch to PLLA */ + PMC->PMC_MCKR = SYS_BOARD_MCKR; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)) { + } + + SystemCoreClock = CHIP_FREQ_CPU_MAX; +} + +void SystemCoreClockUpdate(void) +{ + /* Determine clock frequency according to clock register values */ + switch (PMC->PMC_MCKR & PMC_MCKR_CSS_Msk) { + case PMC_MCKR_CSS_SLOW_CLK: /* Slow clock */ + if (SUPC->SUPC_SR & SUPC_SR_OSCSEL) { + SystemCoreClock = SYS_FREQ_XTAL_32K; + } else { + SystemCoreClock = CHIP_FREQ_SLCK_RC; + } + break; + case PMC_MCKR_CSS_MAIN_CLK: /* Main clock */ + if (PMC->CKGR_MOR & CKGR_MOR_MOSCSEL) { + SystemCoreClock = SYS_FREQ_XTAL_XTAL12M; + } else { + SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + + switch (PMC->CKGR_MOR & CKGR_MOR_MOSCRCF_Msk) { + case CKGR_MOR_MOSCRCF_4_MHz: + break; + case CKGR_MOR_MOSCRCF_8_MHz: + SystemCoreClock *= 2U; + break; + case CKGR_MOR_MOSCRCF_12_MHz: + SystemCoreClock *= 3U; + break; + default: + break; + } + } + break; + case PMC_MCKR_CSS_PLLA_CLK: /* PLLA clock */ + case PMC_MCKR_CSS_UPLL_CLK: /* UPLL clock */ + if (PMC->CKGR_MOR & CKGR_MOR_MOSCSEL) { + SystemCoreClock = SYS_FREQ_XTAL_XTAL12M; + } else { + SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + + switch (PMC->CKGR_MOR & CKGR_MOR_MOSCRCF_Msk) { + case CKGR_MOR_MOSCRCF_4_MHz: + break; + case CKGR_MOR_MOSCRCF_8_MHz: + SystemCoreClock *= 2U; + break; + case CKGR_MOR_MOSCRCF_12_MHz: + SystemCoreClock *= 3U; + break; + default: + break; + } + } + if ((PMC->PMC_MCKR & PMC_MCKR_CSS_Msk) == PMC_MCKR_CSS_PLLA_CLK) { + SystemCoreClock *= ((((PMC->CKGR_PLLAR) & CKGR_PLLAR_MULA_Msk) >> + CKGR_PLLAR_MULA_Pos) + 1U); + SystemCoreClock /= ((((PMC->CKGR_PLLAR) & CKGR_PLLAR_DIVA_Msk) >> + CKGR_PLLAR_DIVA_Pos)); + } else { + SystemCoreClock = SYS_UTMIPLL / 2U; + } + break; + } + + if ((PMC->PMC_MCKR & PMC_MCKR_PRES_Msk) == PMC_MCKR_PRES_CLK_3) { + SystemCoreClock /= 3U; + } else { + SystemCoreClock >>= ((PMC->PMC_MCKR & PMC_MCKR_PRES_Msk) >> + PMC_MCKR_PRES_Pos); + } +} + +/** + * Initialize flash and watchdog. + */ +void system_init_flash_and_watchdog(uint32_t dw_clk) +{ + /* Set FWS for embedded Flash access according to operating frequency */ + if (dw_clk < SYS_FREQ_FWS_0) { + EFC0->EEFC_FMR = EEFC_FMR_FWS(0); + EFC1->EEFC_FMR = EEFC_FMR_FWS(0); + } else if (dw_clk < SYS_FREQ_FWS_1) { + EFC0->EEFC_FMR = EEFC_FMR_FWS(1); + EFC1->EEFC_FMR = EEFC_FMR_FWS(1); + } else if (dw_clk < SYS_FREQ_FWS_2) { + EFC0->EEFC_FMR = EEFC_FMR_FWS(2); + EFC1->EEFC_FMR = EEFC_FMR_FWS(2); + } else if (dw_clk < SYS_FREQ_FWS_3) { + EFC0->EEFC_FMR = EEFC_FMR_FWS(3); + EFC1->EEFC_FMR = EEFC_FMR_FWS(3); + } else { + EFC0->EEFC_FMR = EEFC_FMR_FWS(4); + EFC1->EEFC_FMR = EEFC_FMR_FWS(4); + } + +#ifndef CONFIG_KEEP_WATCHDOG_AFTER_INIT + /* Disable the watchdog */ + WDT->WDT_MR = WDT_MR_WDDIS; +#endif +} + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ diff --git a/hardware/sam/system/libsam/cmsis/sam3xa/source/templates/system_sam3x.h b/hardware/sam/system/libsam/cmsis/sam3xa/source/templates/system_sam3x.h new file mode 100644 index 000000000..147901ac5 --- /dev/null +++ b/hardware/sam/system/libsam/cmsis/sam3xa/source/templates/system_sam3x.h @@ -0,0 +1,58 @@ +/*! \file ********************************************************************* + * + * \brief CMSIS Cortex-M# Device Peripheral Access Layer Header File + * for SAM3 devices. + * + * $asf_license$ + * + * \par Purpose + * + * This file provides basic support for Cortex-M processor based + * microcontrollers. + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.no/ + * + ******************************************************************************/ + +#ifndef SYSTEM_SAM3X_H_INCLUDED +#define SYSTEM_SAM3X_H_INCLUDED + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +#include + +extern uint32_t SystemCoreClock; /* System Clock Frequency (Core Clock) */ + +/** + * @brief Setup the microcontroller system. + * Initialize the System and update the SystemCoreClock variable. + */ +void SystemInit(void); + +/** + * Initialize the flash and watchdog setting . + */ +void set_flash_and_watchdog(void); + +/** + * @brief Updates the SystemCoreClock with current core Clock + * retrieved from cpu registers. + */ +void SystemCoreClockUpdate(void); + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ + +#endif /* SYSTEM_SAM3X_H_INCLUDED */ diff --git a/hardware/sam/system/libsam/include/adc.h b/hardware/sam/system/libsam/include/adc.h new file mode 100644 index 000000000..31534753c --- /dev/null +++ b/hardware/sam/system/libsam/include/adc.h @@ -0,0 +1,139 @@ +/*! \file ********************************************************************* + * + * \brief API for SAM3 Analog-to-Digital Converter (ADC/ADC12B) controller. + * + * ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * + * - Compiler: IAR EWARM and CodeSourcery GCC for ARM + * - Supported devices: All SAM devices with a Analog-to-Digital Converter can be used. + * - AppNote: + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.com/ + * + *******************************************************************************/ + +#ifndef ADC_H_INCLUDED +#define ADC_H_INCLUDED + +#include "../chip.h" + +#define ADC_FREQ_MAX 5000000 +#define ADC_STARTUP 20 + +#define ADC12_FREQ_MAX 20000000 +#define ADC12_FREQ_MIN 1000000 + +#define ADC12_STARTUP_NORM 40 +#define ADC12_STARTUP_FAST 12 + +/* Definitions for ADC resolution */ +typedef enum _adc_resolution_t { +#if SAM3N || SAM3U + ADC_8_BITS = ADC_MR_LOWRES_BITS_8, /* ADC 8-bit resolution */ +#endif /* SAM3N || SAM3U */ + ADC_10_BITS = ADC_MR_LOWRES_BITS_10, /* ADC 10-bit resolution */ +#if SAM3S || SAM3XA + ADC_12_BITS = ADC_MR_LOWRES_BITS_12, /* ADC 12-bit resolution */ +#endif /* SAM3S || SAM3XA */ + ADC_NONE +} adc_resolution_t; + +#if SAM3U +typedef enum _adc12_resolution_t { + ADC12_10_BITS = ADC12B_MR_LOWRES_BITS_10, /* ADC 10-bit resolution */ + ADC12_12_BITS = ADC12B_MR_LOWRES_BITS_12 /* ADC 12-bit resolution */ +} adc12_resolution_t; +#endif /* SAM3U */ + +/* Definitions for ADC trigger */ +typedef enum _adc_trigger_t { + ADC_TRIG_SW = ADC_MR_TRGEN_DIS, /* Starting a conversion is only possible by software. */ + ADC_TRIG_EXT = ((ADC_MR_TRGSEL_ADC_TRIG0 < + +/* + * Global Definitions + */ +typedef enum _EPioType +{ + PIO_NOT_A_PIN, /* Not under control of a peripheral. */ + PIO_PERIPH_A, /* The pin is controlled by the associated signal of peripheral A. */ + PIO_PERIPH_B, /* The pin is controlled by the associated signal of peripheral B. */ +#if (defined _SAM3S_) || (defined _SAM3S8_) || (defined _SAM3N_) + PIO_PERIPH_C, /* The pin is controlled by the associated signal of peripheral C. */ + PIO_PERIPH_D, /* The pin is controlled by the associated signal of peripheral D. */ +#endif /* (defined _SAM3S_) || (defined _SAM3S8_) || (defined _SAM3N_) */ + PIO_INPUT, /* The pin is an input. */ + PIO_OUTPUT_0, /* The pin is an output and has a default level of 0. */ + PIO_OUTPUT_1 /* The pin is an output and has a default level of 1. */ +} EPioType ; + + +/* Default pin configuration (no attribute). */ +#define PIO_DEFAULT (0u << 0) +/* The internal pin pull-up is active. */ +#define PIO_PULLUP (1u << 0) +/* The internal glitch filter is active. */ +#define PIO_DEGLITCH (1u << 1) +/* The pin is open-drain. */ +#define PIO_OPENDRAIN (1u << 2) + +/* The internal debouncing filter is active. */ +#define PIO_DEBOUNCE (1u << 3) + +/* Enable additional interrupt modes. */ +#define PIO_IT_AIME (1u << 4) + +/* Interrupt High Level/Rising Edge detection is active. */ +#define PIO_IT_RE_OR_HL (1u << 5) +/* Interrupt Edge detection is active. */ +#define PIO_IT_EDGE (1u << 6) + +/* Low level interrupt is active */ +#define PIO_IT_LOW_LEVEL (0 | 0 | PIO_IT_AIME) +/* High level interrupt is active */ +#define PIO_IT_HIGH_LEVEL (PIO_IT_RE_OR_HL | 0 | PIO_IT_AIME) +/* Falling edge interrupt is active */ +#define PIO_IT_FALL_EDGE (0 | PIO_IT_EDGE | PIO_IT_AIME) +/* Rising edge interrupt is active */ +#define PIO_IT_RISE_EDGE (PIO_IT_RE_OR_HL | PIO_IT_EDGE | PIO_IT_AIME) + +#ifdef __cplusplus + extern "C" { +#endif + +/* + * The #attribute# field is a bitmask that can either be set to PIO_DEFAULt, + * or combine (using bitwise OR '|') any number of the following constants: + * - PIO_PULLUP + * - PIO_DEGLITCH + * - PIO_DEBOUNCE + * - PIO_OPENDRAIN + * - PIO_IT_LOW_LEVEL + * - PIO_IT_HIGH_LEVEL + * - PIO_IT_FALL_EDGE + * - PIO_IT_RISE_EDGE + */ + + +/* + * Global Functions + */ +extern void PIO_DisableInterrupt( Pio* pPio, const uint32_t dwMask ) ; +extern void PIO_PullUp( Pio* pPio, const uint32_t dwMask, const uint32_t dwPullUpEnable ) ; +extern void PIO_SetDebounceFilter( Pio* pPio, const uint32_t dwMask, const uint32_t dwCuttOff ) ; + +extern void PIO_Set( Pio* pPio, const uint32_t dwMask ) ; +extern void PIO_Clear( Pio* pPio, const uint32_t dwMask ) ; +extern uint32_t PIO_Get( Pio* pPio, const EPioType dwType, const uint32_t dwMask ) ; + +extern void PIO_SetPeripheral( Pio* pPio, const EPioType dwType, const uint32_t dwMask ) ; +extern void PIO_SetInput( Pio* pPio, uint32_t dwMask, uint32_t dwAttribute ) ; +extern void PIO_SetOutput( Pio* pPio, uint32_t dwMask, uint32_t dwDefaultValue, + uint32_t dwMultiDriveEnable, uint32_t dwPullUpEnable ) ; + +extern uint32_t PIO_Configure( Pio* pPio, const EPioType dwType, const uint32_t dwMask, const uint32_t dwAttribute ) ; + +extern uint32_t PIO_GetOutputDataStatus( const Pio* pPio, const uint32_t dwMask ) ; + + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef _PIO_ */ + diff --git a/hardware/sam/system/libsam/include/pio_it.h b/hardware/sam/system/libsam/include/pio_it.h new file mode 100644 index 000000000..9d38cd2b2 --- /dev/null +++ b/hardware/sam/system/libsam/include/pio_it.h @@ -0,0 +1,96 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** + * \file + * + * \par Purpose + * + * Configuration and handling of interrupts on PIO status changes. The API + * provided here have several advantages over the traditional PIO interrupt + * configuration approach: + * - It is highly portable + * - It automatically demultiplexes interrupts when multiples pins have been + * configured on a single PIO controller + * - It allows a group of pins to share the same interrupt + * + * However, it also has several minor drawbacks that may prevent from using it + * in particular applications: + * - It enables the clocks of all PIO controllers + * - PIO controllers all share the same interrupt handler, which does the + * demultiplexing and can be slower than direct configuration + * - It reserves space for a fixed number of interrupts, which can be + * increased by modifying the appropriate constant in pio_it.c. + * + * \par Usage + * + * -# Initialize the PIO interrupt mechanism using PIO_InitializeInterrupts() + * with the desired priority (0 ... 7). + * -# Configure a status change interrupt on one or more pin(s) with + * PIO_ConfigureIt(). + * -# Enable & disable interrupts on pins using PIO_EnableIt() and + * PIO_DisableIt(). + */ + +#ifndef _PIO_IT_ +#define _PIO_IT_ + +/* + * Headers + */ + +#include "pio.h" + +#ifdef __cplusplus + extern "C" { +#endif + +/* + * Global functions + */ + +extern void PIO_InitializeInterrupts( uint32_t dwPriority ) ; + +extern void PIO_ConfigureIt( const Pin *pPin, void (*handler)( const Pin* ) ) ; + +extern void PIO_EnableIt( const Pio* pPio, const uint32_t dwMask ) ; +extern void PIO_DisableIt( const Pio* pPio, const uint32_t dwMask ) ; + +extern void PIO_IT_InterruptHandler( void ) ; + +extern void PioInterruptHandler( uint32_t id, Pio *pPio ) ; + +extern void PIO_CaptureHandler( void ) ; + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef _PIO_IT_ */ + diff --git a/hardware/sam/system/libsam/include/pmc.h b/hardware/sam/system/libsam/include/pmc.h new file mode 100644 index 000000000..5b82a1f0b --- /dev/null +++ b/hardware/sam/system/libsam/include/pmc.h @@ -0,0 +1,56 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _PMC_ +#define _PMC_ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ +#include + +/*---------------------------------------------------------------------------- + * Exported functions + *----------------------------------------------------------------------------*/ + +#ifdef __cplusplus + extern "C" { +#endif + +extern void PMC_EnablePeripheral( uint32_t dwId ) ; +extern void PMC_DisablePeripheral( uint32_t dwId ) ; + +extern uint32_t PMC_IsPeripheralEnabled( uint32_t dwId ) ; + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef _PMC_ */ + diff --git a/hardware/sam/system/libsam/include/pwmc.h b/hardware/sam/system/libsam/include/pwmc.h new file mode 100644 index 000000000..4ec6b7883 --- /dev/null +++ b/hardware/sam/system/libsam/include/pwmc.h @@ -0,0 +1,127 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** + * \file + * + * \par Purpose + * + * Interface for configuration the Pulse Width Modulation Controller (PWM) peripheral. + * + * \par Usage + * + * -# Configures PWM clocks A & B to run at the given frequencies using + * \ref PWMC_ConfigureClocks(). + * -# Configure PWMC channel using \ref PWMC_ConfigureChannel(), \ref PWMC_ConfigureChannelExt() + * \ref PWMC_SetPeriod(), \ref PWMC_SetDutyCycle() and \ref PWMC_SetDeadTime(). + * -# Enable & disable channel using \ref PWMC_EnableChannel() and + * \ref PWMC_DisableChannel(). + * -# Enable & disable the period interrupt for the given PWM channel using + * \ref PWMC_EnableChannelIt() and \ref PWMC_DisableChannelIt(). + * -# Enable & disable the selected interrupts sources on a PWMC peripheral + * using \ref PWMC_EnableIt() and \ref PWMC_DisableIt(). + * -# Control syncronous channel using \ref PWMC_ConfigureSyncChannel(), + * \ref PWMC_SetSyncChannelUpdatePeriod() and \ref PWMC_SetSyncChannelUpdateUnlock(). + * -# Control PWM override output using \ref PWMC_SetOverrideValue(), + * \ref PWMC_EnableOverrideOutput() and \ref PWMC_DisableOverrideOutput(). + * -# Send data through the transmitter using \ref PWMC_WriteBuffer(). + * + */ + +#ifndef _PWMC_ +#define _PWMC_ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "../chip.h" + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/*---------------------------------------------------------------------------- + * Exported functions + *----------------------------------------------------------------------------*/ + +extern void PWMC_ConfigureChannel( + Pwm* pPwm, + uint8_t channel, + uint32_t prescaler, + uint32_t alignment, + uint32_t polarity); +extern void PWMC_ConfigureChannelExt( + Pwm* pPwm, + uint8_t channel, + uint32_t prescaler, + uint32_t alignment, + uint32_t polarity, + uint32_t countEventSelect, + uint32_t DTEnable, + uint32_t DTHInverte, + uint32_t DTLInverte); +extern void PWMC_ConfigureClocks(uint32_t clka, uint32_t clkb, uint32_t mck); +extern void PWMC_SetPeriod( Pwm* pPwm, uint8_t channel, uint16_t period); +extern void PWMC_SetDutyCycle( Pwm* pPwm, uint8_t channel, uint16_t duty); +extern void PWMC_SetDeadTime( Pwm* pPwm, uint8_t channel, uint16_t timeH, uint16_t timeL); +extern void PWMC_ConfigureSyncChannel( Pwm* pPwm, + uint32_t channels, + uint32_t updateMode, + uint32_t requestMode, + uint32_t requestComparisonSelect); +extern void PWMC_SetSyncChannelUpdatePeriod( Pwm* pPwm, uint8_t period); +extern void PWMC_SetSyncChannelUpdateUnlock( Pwm* pPwm ); +extern void PWMC_EnableChannel( Pwm* pPwm, uint8_t channel); +extern void PWMC_DisableChannel( Pwm* pPwm, uint8_t channel); +extern void PWMC_EnableChannelIt( Pwm* pPwm, uint8_t channel); +extern void PWMC_DisableChannelIt( Pwm* pPwm, uint8_t channel); +extern void PWMC_EnableIt( Pwm* pPwm, uint32_t sources1, uint32_t sources2); +extern void PWMC_DisableIt( Pwm* pPwm, uint32_t sources1, uint32_t sources2); +extern uint8_t PWMC_WriteBuffer(Pwm *pwmc, + void *buffer, + uint32_t length); +extern void PWMC_SetOverrideValue( Pwm* pPwm, uint32_t value); +extern void PWMC_EnableOverrideOutput( Pwm* pPwm, uint32_t value, uint32_t sync); +extern void PWMC_DisableOverrideOutput( Pwm* pPwm, uint32_t value, uint32_t sync); +extern void PWMC_SetFaultMode( Pwm* pPwm, uint32_t mode); +extern void PWMC_FaultClear( Pwm* pPwm, uint32_t fault); +extern void PWMC_SetFaultProtectionValue( Pwm* pPwm, uint32_t value); +extern void PWMC_EnableFaultProtection( Pwm* pPwm, uint32_t value); +extern void PWMC_ConfigureComparisonUnit( Pwm* pPwm, uint32_t x, uint32_t value, uint32_t mode); +extern void PWMC_ConfigureEventLineMode( Pwm* pPwm, uint32_t x, uint32_t mode); + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef _PWMC_ */ + diff --git a/hardware/sam/system/libsam/include/rtc.h b/hardware/sam/system/libsam/include/rtc.h new file mode 100644 index 000000000..6393bccf0 --- /dev/null +++ b/hardware/sam/system/libsam/include/rtc.h @@ -0,0 +1,97 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** + * \file + * + * Interface for Real Time Clock (RTC) controller. + * + */ + +#ifndef _RTC_ +#define _RTC_ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ +#include "../chip.h" + +#include + +/*---------------------------------------------------------------------------- + * Definitions + *----------------------------------------------------------------------------*/ + +#define RTC_HOUR_BIT_LEN_MASK 0x3F +#define RTC_MIN_BIT_LEN_MASK 0x7F +#define RTC_SEC_BIT_LEN_MASK 0x7F +#define RTC_CENT_BIT_LEN_MASK 0x7F +#define RTC_YEAR_BIT_LEN_MASK 0xFF +#define RTC_MONTH_BIT_LEN_MASK 0x1F +#define RTC_DATE_BIT_LEN_MASK 0x3F +#define RTC_WEEK_BIT_LEN_MASK 0x07 + +/*---------------------------------------------------------------------------- + * Exported functions + *----------------------------------------------------------------------------*/ + +#ifdef __cplusplus + extern "C" { +#endif + +extern void RTC_SetHourMode( Rtc* pRtc, uint32_t dwMode ) ; + +extern uint32_t RTC_GetHourMode( Rtc* pRtc ) ; + +extern void RTC_EnableIt( Rtc* pRtc, uint32_t dwSources ) ; + +extern void RTC_DisableIt( Rtc* pRtc, uint32_t dwSources ) ; + +extern int RTC_SetTime( Rtc* pRtc, uint8_t ucHour, uint8_t ucMinute, uint8_t ucSecond ) ; + +extern void RTC_GetTime( Rtc* pRtc, uint8_t *pucHour, uint8_t *pucMinute, uint8_t *pucSecond ) ; + +extern int RTC_SetTimeAlarm( Rtc* pRtc, uint8_t *pucHour, uint8_t *pucMinute, uint8_t *pucSecond ) ; + +extern void RTC_GetDate( Rtc* pRtc, uint16_t *pwYear, uint8_t *pucMonth, uint8_t *pucDay, uint8_t *pucWeek ) ; + +extern int RTC_SetDate( Rtc* pRtc, uint16_t wYear, uint8_t ucMonth, uint8_t ucDay, uint8_t ucWeek ) ; + +extern int RTC_SetDateAlarm( Rtc* pRtc, uint8_t *pucMonth, uint8_t *pucDay ) ; + +extern void RTC_ClearSCCR( Rtc* pRtc, uint32_t dwMask ) ; + +extern uint32_t RTC_GetSR( Rtc* pRtc, uint32_t dwMask ) ; + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef _RTC_ */ + diff --git a/hardware/sam/system/libsam/include/rtt.h b/hardware/sam/system/libsam/include/rtt.h new file mode 100644 index 000000000..9823d8502 --- /dev/null +++ b/hardware/sam/system/libsam/include/rtt.h @@ -0,0 +1,82 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** + * \file + * + * \par Purpose + * + * Interface for Real Time Timer (RTT) controller. + * + * \par Usage + * + * -# Changes the prescaler value of the given RTT and restarts it + * using \ref RTT_SetPrescaler(). + * -# Get current value of the RTT using \ref RTT_GetTime(). + * -# Enables the specified RTT interrupt using \ref RTT_EnableIT(). + * -# Get the status register value of the given RTT using \ref RTT_GetStatus(). + * -# Configures the RTT to generate an alarm at the given time + * using \ref RTT_SetAlarm(). + */ + +#ifndef _RTT_ +#define _RTT_ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "../chip.h" + +#include + +/*---------------------------------------------------------------------------- + * Exported functions + *----------------------------------------------------------------------------*/ + +#ifdef __cplusplus + extern "C" { +#endif + +extern void RTT_SetPrescaler( Rtt* pRtt, uint16_t wPrescaler ) ; + +extern uint32_t RTT_GetTime( Rtt* pRtt ) ; + +extern void RTT_EnableIT( Rtt* pRtt, uint32_t dwSources ) ; + +extern uint32_t RTT_GetStatus( Rtt *pRtt ) ; + +extern void RTT_SetAlarm( Rtt *pRtt, uint32_t dwTime ) ; + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef RTT_H */ + diff --git a/hardware/sam/system/libsam/include/sam.h b/hardware/sam/system/libsam/include/sam.h new file mode 100644 index 000000000..429bb71b7 --- /dev/null +++ b/hardware/sam/system/libsam/include/sam.h @@ -0,0 +1,137 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM_DEFS_ +#define _SAM_DEFS_ + +#define part_is_defined(part) (defined(__ ## part ## __)) + +/* SAM3 family */ + +/* SAM3S series */ +#define SAM3S1 ( \ + part_is_defined( SAM3S1A ) || \ + part_is_defined( SAM3S1B ) || \ + part_is_defined( SAM3S1C ) ) + +#define SAM3S2 ( \ + part_is_defined( SAM3S2A ) || \ + part_is_defined( SAM3S2B ) || \ + part_is_defined( SAM3S2C ) ) + +#define SAM3S4 ( \ + part_is_defined( SAM3S4A ) || \ + part_is_defined( SAM3S4B ) || \ + part_is_defined( SAM3S4C ) ) + +#define SAM3S8 ( \ + part_is_defined( SAM3S8B ) || \ + part_is_defined( SAM3S8C ) ) + +#define SAM3SD8 ( \ + part_is_defined( SAM3SD8B ) || \ + part_is_defined( SAM3SD8C ) ) + +#define SAM3U1 ( \ + part_is_defined( SAM3U1C ) || \ + part_is_defined( SAM3U1E ) ) + +#define SAM3U2 ( \ + part_is_defined( SAM3U2C ) || \ + part_is_defined( SAM3U2E ) ) + +#define SAM3U4 ( \ + part_is_defined( SAM3U4C ) || \ + part_is_defined( SAM3U4E ) ) + +#define SAM3N1 ( \ + part_is_defined( SAM3N1A ) || \ + part_is_defined( SAM3N1B ) || \ + part_is_defined( SAM3N1C ) ) + +#define SAM3N2 ( \ + part_is_defined( SAM3N2A ) || \ + part_is_defined( SAM3N2B ) || \ + part_is_defined( SAM3N2C ) ) + +#define SAM3N4 ( \ + part_is_defined( SAM3N4A ) || \ + part_is_defined( SAM3N4B ) || \ + part_is_defined( SAM3N4C ) ) + +#define SAM3X2 ( \ + part_is_defined( SAM3X2C ) || \ + part_is_defined( SAM3X2E ) || \ + part_is_defined( SAM3X2G ) || \ + part_is_defined( SAM3X2H ) ) + +#define SAM3X4 ( \ + part_is_defined( SAM3X4C ) || \ + part_is_defined( SAM3X4E ) || \ + part_is_defined( SAM3X4G ) || \ + part_is_defined( SAM3X4H ) ) + +#define SAM3X8 ( \ + part_is_defined( SAM3X8C ) || \ + part_is_defined( SAM3X8E ) || \ + part_is_defined( SAM3X8G ) || \ + part_is_defined( SAM3X8H ) ) + +#define SAM3A2 ( \ + part_is_defined( SAM3A2C ) ) + +#define SAM3A4 ( \ + part_is_defined( SAM3A4C ) ) + +#define SAM3A8 ( \ + part_is_defined( SAM3A8C ) ) + +/* Entire SAM3S Family */ +#define SAM3S (SAM3S1 || SAM3S2 || SAM3S4 || SAM3S8 || SAM3SD8) + +/* Entire SAM3U Family */ +#define SAM3U (SAM3U1 || SAM3U2 || SAM3U4) + +/* Entire SAM3N Family */ +#define SAM3N (SAM3N1 || SAM3N2 || SAM3N4) + +/* Entire SAM3XA Family */ +#define SAM3XA (SAM3X2 || SAM3X4 || SAM3X8 || SAM3A2 || SAM3A4 || SAM3A8) + +/* SAM9 family */ + +/* SAM7 family */ + + +/* Global SAM product line */ +#define SAM ( SAM3S || SAM3U || SAM3N || SAM3XA ) + +#include "include/sam3.h" + +#endif /* _SAM_DEFS_ */ diff --git a/hardware/sam/system/libsam/include/sam3.h b/hardware/sam/system/libsam/include/sam3.h new file mode 100644 index 000000000..4320a9abc --- /dev/null +++ b/hardware/sam/system/libsam/include/sam3.h @@ -0,0 +1,103 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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 _SAM3_ +#define _SAM3_ + +#if (defined __SAM3S8A__) || (defined __SAM3S8B__) || (defined __SAM3S8C__) /* SAM3S8 */ + #include "cmsis/sam3s8/include/sam3s8.h" + #include "cmsis/sam3s8/source/templates/system_sam3s8.h" + #include "cmsis/sam3s8/source/templates/exceptions.h" +#elif (defined __SAM3SD8A__) || (defined __SAM3SD8B__) || (defined __SAM3SD8C__) /* SAM3SD8 */ + #include "cmsis/sam3s8/include/sam3s8.h" + #include "cmsis/sam3s8/source/templates/system_sam3s8.h" + #include "cmsis/sam3s8/source/templates/exceptions.h" + +#elif (defined __SAM3S4C__) || (defined __SAM3S4B__) || (defined __SAM3S4A__) /* SAM3S4 */ + #include "cmsis/sam3s/include/sam3s.h" + #include "cmsis/sam3s/source/templates/system_sam3s.h" + #include "cmsis/sam3s/source/templates/exceptions.h" +#elif (defined __SAM3S2C__) || (defined __SAM3S2B__) || (defined __SAM3S2A__) /* SAM3S2 */ + #include "cmsis/sam3s/include/sam3s.h" + #include "cmsis/sam3s/source/templates/system_sam3s.h" + #include "cmsis/sam3s/source/templates/exceptions.h" +#elif (defined __SAM3S1C__) || (defined __SAM3S1B__) || (defined __SAM3S1A__) /* SAM3S1 */ + #include "cmsis/sam3s/include/sam3s.h" + #include "cmsis/sam3s/source/templates/system_sam3s.h" + #include "cmsis/sam3s/source/templates/exceptions.h" + +#elif (defined __SAM3U4C__) || (defined __SAM3U4E__) /* SAM3U4 */ + #include "cmsis/sam3u/include/sam3u.h" + #include "cmsis/sam3u/source/templates/system_sam3u.h" + #include "cmsis/sam3u/source/templates/exceptions.h" +#elif (defined __SAM3U2C__) || (defined __SAM3U2E__) /* SAM3U2 */ + #include "cmsis/sam3u/include/sam3u.h" + #include "cmsis/sam3u/source/templates/system_sam3u.h" + #include "cmsis/sam3u/source/templates/exceptions.h" +#elif (defined __SAM3U1C__) || (defined __SAM3U1E__) /* SAM3U1 */ + #include "cmsis/sam3u/include/sam3u.h" + #include "cmsis/sam3u/source/templates/system_sam3u.h" + #include "cmsis/sam3u/source/templates/exceptions.h" + +#elif (defined __SAM3N4C__) || (defined __SAM3N4B__) || (defined __SAM3N4A__) /* SAM3N4 */ + #include "cmsis/sam3n/include/sam3n.h" + #include "cmsis/sam3n/source/templates/system_sam3n.h" + #include "cmsis/sam3n/source/templates/exceptions.h" +#elif (defined __SAM3N2C__) || (defined __SAM3N2B__) || (defined __SAM3N2A__) /* SAM3N2 */ + #include "cmsis/sam3n/include/sam3n.h" + #include "cmsis/sam3n/source/templates/system_sam3n.h" + #include "cmsis/sam3n/source/templates/exceptions.h" +#elif (defined __SAM3N1C__) || (defined __SAM3N1B__) || (defined __SAM3N1A__) /* SAM3N1 */ + #include "cmsis/sam3n/include/sam3n.h" + #include "cmsis/sam3n/source/templates/system_sam3n.h" + #include "cmsis/sam3n/source/templates/exceptions.h" + +#elif (defined __SAM3A8C__) || (defined __SAM3A4C__) || (defined __SAM3A2C__) /* SAM3A */ + #include "cmsis/sam3xa/include/sam3xa.h" + #include "cmsis/sam3xa/source/templates/system_sam3xa.h" + #include "cmsis/sam3xa/source/templates/exceptions.h" + +#elif (defined __SAM3X8C__) || (defined __SAM3X8E__) || (defined __SAM3X8G__) || (defined __SAM3X8H__) /* SAM3X8 */ + #include "cmsis/sam3xa/include/sam3xa.h" + #include "cmsis/sam3xa/source/templates/system_sam3xa.h" + #include "cmsis/sam3xa/source/templates/exceptions.h" +#elif (defined __SAM3X4C__) || (defined __SAM3X4E__) || (defined __SAM3X4G__) || (defined __SAM3X4H__) /* SAM3X4 */ + #include "cmsis/sam3xa/include/sam3xa.h" + #include "cmsis/sam3xa/source/templates/system_sam3xa.h" + #include "cmsis/sam3xa/source/templates/exceptions.h" +#elif (defined __SAM3X2C__) || (defined __SAM3X2E__) || (defined __SAM3X2G__) || (defined __SAM3X2H__) /* SAM3X2 */ + #include "cmsis/sam3xa/include/sam3xa.h" + #include "cmsis/sam3xa/source/templates/system_sam3xa.h" + #include "cmsis/sam3xa/source/templates/exceptions.h" + +#else + #error Library does not support the specified device. +#endif + +#endif /* _SAM3_ */ diff --git a/hardware/sam/system/libsam/include/spi.h b/hardware/sam/system/libsam/include/spi.h new file mode 100644 index 000000000..1fb69addb --- /dev/null +++ b/hardware/sam/system/libsam/include/spi.h @@ -0,0 +1,117 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** + * \file + * + * Interface for Serial Peripheral Interface (SPI) controller. + * + */ + +#ifndef _SPI_ +#define _SPI_ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "../chip.h" + +/*---------------------------------------------------------------------------- + * Macros + *----------------------------------------------------------------------------*/ + +/** + * + * Here are several macros which should be used when configuring a SPI + * peripheral. + * + * \section spi_configuration_macros SPI Configuration Macros + * - \ref SPI_PCS + * - \ref SPI_SCBR + * - \ref SPI_DLYBS + * - \ref SPI_DLYBCT + */ + +/** Calculate the PCS field value given the chip select NPCS value */ +#define SPI_PCS(npcs) ((~(1 << (npcs)) & 0xF) << 16) + +/** Calculates the value of the CSR SCBR field given the baudrate and MCK. */ +#define SPI_SCBR(baudrate, masterClock) ((uint32_t) ((masterClock) / (baudrate)) << 8) + +/** Calculates the value of the CSR DLYBS field given the desired delay (in ns) */ +#define SPI_DLYBS(delay, masterClock) ((uint32_t) ((((masterClock) / 1000000) * (delay)) / 1000) << 16) + +/** Calculates the value of the CSR DLYBCT field given the desired delay (in ns) */ +#define SPI_DLYBCT(delay, masterClock) ((uint32_t) ((((masterClock) / 1000000) * (delay)) / 32000) << 24) + +/*------------------------------------------------------------------------------ */ + +#ifdef __cplusplus + extern "C" { +#endif + +/*---------------------------------------------------------------------------- + * Exported functions + *----------------------------------------------------------------------------*/ + +extern void SPI_Enable( Spi* spi ) ; +extern void SPI_Disable( Spi* spi ) ; +extern void SPI_EnableIt( Spi* spi, uint32_t dwSources ) ; +extern void SPI_DisableIt( Spi* spi, uint32_t dwSources ) ; + +extern void SPI_Configure( Spi* spi, uint32_t dwId, uint32_t dwConfiguration ) ; +extern void SPI_ConfigureNPCS( Spi* spi, uint32_t dwNpcs, uint32_t dwConfiguration ) ; + +extern uint32_t SPI_Read( Spi* spi ) ; +extern void SPI_Write( Spi* spi, uint32_t dwNpcs, uint16_t wData ) ; + +extern uint32_t SPI_GetStatus( Spi* spi ) ; +extern uint32_t SPI_IsFinished( Spi* pSpi ) ; + +#if (defined _SAM3S_) || (defined _SAM3S8_) || (defined _SAM3N_) +extern void SPI_PdcEnableTx( Spi* spi ) ; +extern void SPI_PdcDisableTx( Spi* spi ) ; +extern void SPI_PdcEnableRx( Spi* spi ) ; +extern void SPI_PdcDisableRx( Spi* spi ) ; + +extern void SPI_PdcSetTx( Spi* spi, void* pvTxBuf, uint32_t dwTxCount, void* pvTxNextBuf, uint32_t dwTxNextCount ) ; +extern void SPI_PdcSetRx( Spi* spi, void* pvRxBuf, uint32_t dwRxCount, void* pvRxNextBuf, uint32_t dwRxNextCount ) ; + +extern uint32_t SPI_WriteBuffer( Spi* spi, void* pvBuffer, uint32_t dwLength ) ; + +extern uint32_t SPI_ReadBuffer( Spi* spi, void* pvBuffer, uint32_t dwLength ) ; +#endif /* (defined _SAM3S_) || (defined _SAM3S8_) || (defined _SAM3N_) */ + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef _SPI_ */ + diff --git a/hardware/sam/system/libsam/include/tc.h b/hardware/sam/system/libsam/include/tc.h new file mode 100644 index 000000000..92c0b0367 --- /dev/null +++ b/hardware/sam/system/libsam/include/tc.h @@ -0,0 +1,76 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** + * \file + * + * \section Purpose + * + * Interface for configuring and using Timer Counter (TC) peripherals. + * + * \section Usage + * -# Optionally, use TC_FindMckDivisor() to let the program find the best + * TCCLKS field value automatically. + * -# Configure a Timer Counter in the desired mode using TC_Configure(). + * -# Start or stop the timer clock using TC_Start() and TC_Stop(). + */ + +#ifndef _TC_ +#define _TC_ + +/*------------------------------------------------------------------------------ + * Headers + *------------------------------------------------------------------------------*/ + +#include "../chip.h" + +#include + +/*------------------------------------------------------------------------------ + * Global functions + *------------------------------------------------------------------------------*/ + +#ifdef __cplusplus + extern "C" { +#endif + +extern void TC_Configure( Tc *pTc, uint32_t dwChannel, uint32_t dwMode ) ; + +extern void TC_Start( Tc *pTc, uint32_t dwChannel ) ; + +extern void TC_Stop( Tc *pTc, uint32_t dwChannel ) ; + +extern uint32_t TC_FindMckDivisor( uint32_t dwFreq, uint32_t dwMCk, uint32_t *dwDiv, uint32_t *dwTcClks, uint32_t dwBoardMCK ) ; + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef _TC_ */ + diff --git a/hardware/sam/system/libsam/include/timetick.h b/hardware/sam/system/libsam/include/timetick.h new file mode 100644 index 000000000..62bdf2e18 --- /dev/null +++ b/hardware/sam/system/libsam/include/timetick.h @@ -0,0 +1,78 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** + * \file + * + * \par Purpose + * + * Methods and definitions for Global time tick and wait functions. + * + * Defines a common and simpliest use of Time Tick, to increase tickCount + * every 1ms, the application can get this value through GetTickCount(). + * + * \par Usage + * + * -# Configure the System Tick with TimeTick_Configure() when MCK changed + * \note + * Must be done before any invoke of GetTickCount(), Wait() or Sleep(). + * -# Uses GetTickCount to get current tick value. + * -# Uses Wait to wait several ms. + * -# Uses Sleep to enter wait for interrupt mode to wait several ms. + * + */ + +#ifndef _TIMETICK_ +#define _TIMETICK_ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include + +/*---------------------------------------------------------------------------- + * Definitions + *----------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------- + * Global functions + *----------------------------------------------------------------------------*/ + +extern uint32_t TimeTick_Configure( uint32_t dwNew_MCK ) ; + +extern void TimeTick_Increment( void ) ; + +extern uint32_t GetTickCount( void ) ; + +extern void Wait( volatile uint32_t dwMs ) ; + +extern void Sleep( volatile uint32_t dwMs ) ; + +#endif /* _TIMETICK_ */ diff --git a/hardware/sam/system/libsam/include/twi.h b/hardware/sam/system/libsam/include/twi.h new file mode 100644 index 000000000..c4ef4f009 --- /dev/null +++ b/hardware/sam/system/libsam/include/twi.h @@ -0,0 +1,111 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** + * \file + * + * Interface for configuration the Two Wire Interface (TWI) peripheral. + * + */ + +#ifndef _TWI_ +#define _TWI_ + +/*------------------------------------------------------------------------------ + * Headers + *------------------------------------------------------------------------------*/ + +#include "../chip.h" + +#include + +/*---------------------------------------------------------------------------- + * Macros + *----------------------------------------------------------------------------*/ +/* Returns 1 if the TXRDY bit (ready to transmit data) is set in the given status register value.*/ +#define TWI_STATUS_TXRDY(status) (((status) & TWI_SR_TXRDY) == TWI_SR_TXRDY) + +/* Returns 1 if the RXRDY bit (ready to receive data) is set in the given status register value.*/ +#define TWI_STATUS_RXRDY(status) (((status) & TWI_SR_RXRDY) == TWI_SR_RXRDY) + +/* Returns 1 if the TXCOMP bit (transfer complete) is set in the given status register value.*/ +#define TWI_STATUS_TXCOMP(status) (((status) & TWI_SR_TXCOMP) == TWI_SR_TXCOMP) + +#ifdef __cplusplus + extern "C" { +#endif + +/*---------------------------------------------------------------------------- + * External function + *----------------------------------------------------------------------------*/ + +extern void TWI_ConfigureMaster(Twi *pTwi, uint32_t twck, uint32_t mck); + +extern void TWI_ConfigureSlave(Twi *pTwi, uint8_t slaveAddress); + +extern void TWI_Stop(Twi *pTwi); + +extern void TWI_StartRead( + Twi *pTwi, + uint8_t address, + uint32_t iaddress, + uint8_t isize); + +extern uint8_t TWI_ReadByte(Twi *pTwi); + +extern void TWI_WriteByte(Twi *pTwi, uint8_t byte); + +extern void TWI_StartWrite( + Twi *pTwi, + uint8_t address, + uint32_t iaddress, + uint8_t isize, + uint8_t byte); + +extern uint8_t TWI_ByteReceived(Twi *pTwi); + +extern uint8_t TWI_ByteSent(Twi *pTwi); + +extern uint8_t TWI_TransferComplete(Twi *pTwi); + +extern void TWI_EnableIt(Twi *pTwi, uint32_t sources); + +extern void TWI_DisableIt(Twi *pTwi, uint32_t sources); + +extern uint32_t TWI_GetStatus(Twi *pTwi); + +extern uint32_t TWI_GetMaskedStatus(Twi *pTwi); + +extern void TWI_SendSTOPCondition(Twi *pTwi); + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef _TWI_ */ diff --git a/hardware/sam/system/libsam/include/usart.h b/hardware/sam/system/libsam/include/usart.h new file mode 100644 index 000000000..d20ae07b1 --- /dev/null +++ b/hardware/sam/system/libsam/include/usart.h @@ -0,0 +1,133 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** + * \file + * + * \par Purpose + * + * This module provides several definitions and methods for using an USART + * peripheral. + * + * \par Usage + * + * -# Enable the USART peripheral clock in the PMC. + * -# Enable the required USART PIOs (see pio.h). + * -# Configure the UART by calling USART_Configure. + * -# Enable the transmitter and/or the receiver of the USART using + * USART_SetTransmitterEnabled and USART_SetReceiverEnabled. + * -# Send data through the USART using the USART_Write and + * USART_WriteBuffer methods. + * -# Receive data from the USART using the USART_Read and + * USART_ReadBuffer functions; the availability of data can be polled + * with USART_IsDataAvailable. + * -# Disable the transmitter and/or the receiver of the USART with + * USART_SetTransmitterEnabled and USART_SetReceiverEnabled. + */ + +#ifndef _USART_ +#define _USART_ + +/*------------------------------------------------------------------------------ + * Headers + *------------------------------------------------------------------------------*/ + +#include "../chip.h" + +#include + +/*------------------------------------------------------------------------------ + * Definitions + *------------------------------------------------------------------------------*/ + +/** \section USART_mode USART modes + * This section lists several common operating modes for an USART peripheral. + * + * \b Modes + * - USART_MODE_ASYNCHRONOUS + * - USART_MODE_IRDA + */ + +/** Basic asynchronous mode, i.e. 8 bits no parity.*/ +#define USART_MODE_ASYNCHRONOUS (US_MR_CHRL_8_BIT | US_MR_PAR_NO) + +/** IRDA mode*/ +#define USART_MODE_IRDA (AT91C_US_USMODE_IRDA | AT91C_US_CHRL_8_BITS | AT91C_US_PAR_NONE | AT91C_US_FILTER) + +/** SPI mode*/ +#define AT91C_US_USMODE_SPIM 0xE +#define US_SPI_CPOL_0 (0x0<<16) +#define US_SPI_CPHA_0 (0x0<<8) +#define US_SPI_CPOL_1 (0x1<<16) +#define US_SPI_CPHA_1 (0x1<<8) +#define US_SPI_BPMODE_0 (US_SPI_CPOL_0|US_SPI_CPHA_1) +#define US_SPI_BPMODE_1 (US_SPI_CPOL_0|US_SPI_CPHA_0) +#define US_SPI_BPMODE_2 (US_SPI_CPOL_1|US_SPI_CPHA_1) +#define US_SPI_BPMODE_3 (US_SPI_CPOL_1|US_SPI_CPHA_0) + +#ifdef __cplusplus + extern "C" { +#endif + +/*------------------------------------------------------------------------------*/ +/* Exported functions */ +/*------------------------------------------------------------------------------*/ + +extern void USART_Configure( Usart *usart, uint32_t mode, uint32_t baudrate, uint32_t masterClock ) ; +extern uint32_t USART_GetStatus( Usart *usart ) ; +extern void USART_EnableIt( Usart *usart,uint32_t mode ) ; +extern void USART_DisableIt( Usart *usart,uint32_t mode ) ; +extern void USART_SetTransmitterEnabled( Usart *usart, uint8_t enabled ) ; + +extern void USART_SetReceiverEnabled( Usart *usart, uint8_t enabled ) ; + +extern void USART_Write( Usart *usart, uint16_t data, volatile uint32_t timeOut ) ; + +extern uint8_t USART_WriteBuffer( Usart *usart, void *buffer, uint32_t size ) ; + +extern uint16_t USART_Read( Usart *usart, volatile uint32_t timeOut ) ; + +extern uint8_t USART_ReadBuffer( Usart *usart, void *buffer, uint32_t size ) ; + +extern uint8_t USART_IsDataAvailable( Usart *usart ) ; + +extern void USART_SetIrdaFilter(Usart *pUsart, uint8_t filter); + +extern void USART_PutChar( Usart *usart, uint8_t c ) ; + +extern uint32_t USART_IsRxReady( Usart *usart ) ; + +extern uint8_t USART_GetChar( Usart *usart ) ; + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef _USART_ */ + diff --git a/hardware/sam/system/libsam/include/wdt.h b/hardware/sam/system/libsam/include/wdt.h new file mode 100644 index 000000000..8a3f4a4e5 --- /dev/null +++ b/hardware/sam/system/libsam/include/wdt.h @@ -0,0 +1,74 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** + * \file + * + * \section Purpose + * Interface for Watchdog Timer (WDT) controller. + * + * \section Usage + * -# Enable watchdog with given mode using \ref WDT_Enable(). + * -# Disable watchdog using \ref WDT_Disable() + * -# Restart the watchdog using \ref WDT_Restart(). + * -# Get watchdog status using \ref WDT_GetStatus(). + * -# Caculate watchdog period value using \ref WDT_GetPeriod(). + */ + +#ifndef _WDT_ +#define _WDT_ + +#include "../chip.h" + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/*---------------------------------------------------------------------------- + * Exported functions + *----------------------------------------------------------------------------*/ + +extern void WDT_Enable( Wdt* pWDT, uint32_t dwMode ) ; + +extern void WDT_Disable( Wdt* pWDT ) ; + +extern void WDT_Restart( Wdt* pWDT ) ; + +extern uint32_t WDT_GetStatus( Wdt* pWDT ) ; + +extern uint32_t WDT_GetPeriod( uint32_t dwMs ) ; + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef _WDT_ */ + diff --git a/hardware/sam/system/libsam/readme.txt b/hardware/sam/system/libsam/readme.txt new file mode 100644 index 000000000..350b3cfe2 --- /dev/null +++ b/hardware/sam/system/libsam/readme.txt @@ -0,0 +1,33 @@ +Makefile into build_gcc folder build the SAM peripheral library and put it into ../../../cores/sam Arduino API folder + +/* + %atmel_license% +*/ += +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2010, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- diff --git a/hardware/sam/system/libsam/source/adc10_sam3u.c b/hardware/sam/system/libsam/source/adc10_sam3u.c new file mode 100644 index 000000000..9531651df --- /dev/null +++ b/hardware/sam/system/libsam/source/adc10_sam3u.c @@ -0,0 +1,331 @@ +/*! \file ********************************************************************* + * + * \brief API for SAM3 Analog-to-Digital Converter (ADC/ADC12B) controller. + * + * ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * + * - Compiler: IAR EWARM and CodeSourcery GCC for ARM + * - Supported devices: All SAM devices with a Analog-to-Digital Converter can be used. + * - AppNote: + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.com/ + * + *******************************************************************************/ + +#include "../chip.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ +/**INDENT-ON**/ +/// @endcond + +#if SAM3U + +/** + * \brief Initializes the given ADC with the specified ADC clock and startup time. + * + * \param p_adc Pointer to an ADC instance. + * \param dw_mck Main clock of the device (value in Hz). + * \param dw_adc_clock Analog-to-Digital conversion clock (value in Hz). + * \param ul_startuptime ADC start up time value(value in us). Please refer to the product datasheet for details. + * \param ul_offmode_startuptime ADC off mode startup Time value(value in us). Please refer to the product datasheet for details. + * + * \retval 0 The initialization operation succeeds. + * \retval others The initialization operation fails. + */ +uint32_t adc_init(Adc *p_adc, uint32_t ul_mck, uint32_t ul_adc_clock, uint32_t ul_startuptime) +{ + p_adc->ADC_CR = ADC_CR_SWRST; + + /* Reset Mode Register */ + p_adc->ADC_MR = 0; + + /* Reset PDC transfer */ + p_adc->ADC_PTCR = (ADC_PTCR_RXTDIS | ADC_PTCR_TXTDIS); + p_adc->ADC_RCR = 0; + p_adc->ADC_RNCR = 0; + p_adc->ADC_TCR = 0; + p_adc->ADC_TNCR = 0; + uint32_t prescal = ul_mck/(2 * ul_adc_clock) - 1; + // check for rounding errors + if ( (ul_mck/((prescal+1)*2)) > ul_adc_clock ) { + prescal++; + ul_adc_clock = ul_mck/((prescal+1)*2); + } + uint32_t startup = ((ul_adc_clock/1000000) * ul_startuptime / 8) - 1; + p_adc->ADC_MR |= ADC_MR_PRESCAL(prescal) | ADC_MR_STARTUP(startup); + return 0; +} + +/** + * \brief Configures conversion resolution. + * + * \param p_adc Pointer to an ADC instance. + * \param resolution ADC resolution. + */ +void adc_set_resolution(Adc *p_adc, adc_resolution_t resolution) +{ + p_adc->ADC_MR |= (resolution<<4) & ADC_MR_LOWRES; +} + +/** + * \brief Configures conversion trigger and free run mode. + * + * \param p_adc Pointer to an ADC instance. + * \param trigger Conversion trigger. + */ +void adc_configure_trigger(Adc *p_adc, adc_trigger_t trigger) +{ + p_adc->ADC_MR |= trigger; +} +/** + * \brief Configures ADC power saving mode. + * + * \param p_adc Pointer to an ADC instance. + * \param uc_sleep ADC_MR_SLEEP_NORMAL keeps the ADC Core and reference voltage circuitry ON between conversions + * ADC_MR_SLEEP_SLEEP keeps the ADC Core and reference voltage circuitry OFF between conversions + * \param uc_offmode 0 Standby Mode (if Sleep Bit = 1) + * 1 Off Mode + */ +void adc_configure_power_save(Adc *p_adc, uint8_t uc_sleep, uint8_t uc_offmode) +{ + p_adc->ADC_MR |= ((uc_sleep<<5) & ADC_MR_SLEEP) ; +} + +/** + * \brief Configures ADC timing. + * + * \param p_adc Pointer to an ADC instance. + * \param ul_sh ADC sample and hold time = uc_sh / ADC clock. + */ +void adc_configure_timing(Adc *p_adc, uint32_t ul_sh) +{ + p_adc->ADC_MR |= ADC_MR_SHTIM( ul_sh ) ; +} + +/** + * \brief Starts analog-to-digital conversion. + * + * \note If one of the hardware event is selected as ADC trigger, this function can NOT start analog to digital conversion. + * + * \param p_adc Pointer to an ADC instance. + */ +void adc_start(Adc *p_adc) +{ + p_adc->ADC_CR = ADC_CR_START; +} + +/** + * \brief Stop analog-to-digital conversion. + * \param p_adc Pointer to an ADC instance. + */ +void adc_stop(Adc *p_adc) +{ + p_adc->ADC_CR = ADC_CR_SWRST; +} +/** + * \brief Enables the specified ADC channel. + * + * \param p_adc Pointer to an ADC instance. + * \param adc_ch ADC channel number. + */ +void adc_enable_channel(Adc *p_adc, adc_channel_num_t adc_ch) +{ + p_adc->ADC_CHER = 1 << adc_ch; +} + +/** + * \brief Disables the specified ADC channel. + * + * \param p_adc Pointer to an ADC instance. + * \param adc_ch ADC channel number. + */ +void adc_disable_channel(Adc *p_adc, adc_channel_num_t adc_ch) +{ + p_adc->ADC_CHDR = 1 << adc_ch; +} + +/** + * \brief Reads the ADC channel status. + * + * \param p_adc Pointer to an ADC instance. + * \param adc_ch ADC channel number. + * + * \retval 1 means the specified channel is enabled. + * 0 means the specified channel is disabled. + */ +uint32_t adc_get_channel_status(Adc *p_adc, adc_channel_num_t adc_ch) +{ + return p_adc->ADC_CHSR & (1 << adc_ch); +} + +/** + * \brief Reads the ADC status. + * + * \param p_adc Pointer to an ADC instance. + * + * \retval ADC status register content. + */ +uint32_t adc_get_status(Adc *p_adc) +{ + return p_adc->ADC_SR; +} + +/** + * \brief Reads the ADC result data of the specified channel. + * + * \param p_adc Pointer to an ADC instance. + * \param adc_ch ADC channel number. + * + * \retval ADC data of the specified channel. + */ +uint32_t adc_get_value(Adc *p_adc, adc_channel_num_t adc_ch) +{ + uint32_t dwData = 0; + + if ( 15 >= adc_ch ) + { + dwData=*(p_adc->ADC_CDR+adc_ch) ; + } + + return dwData ; +} + +/** + * \brief Reads the last ADC result data. + * + * \param p_adc Pointer to an ADC instance. + * + * \retval ADC data. + */ +uint32_t adc_get_latest_value(Adc *p_adc) +{ + return p_adc->ADC_LCDR; +} + +/** + * \brief Returns the actual ADC clock. + * + * \param p_adc Pointer to an ADC instance. + * \param ul_mck Main clock of the device (value in Hz). + * + * \retval 0 The actual ADC clock (value in Hz). + */ +uint32_t adc_get_actual_adc_clock(Adc *p_adc, uint32_t ul_mck) +{ + uint32_t ul_adcfreq; + uint32_t ul_prescal; + + /* ADCClock = MCK / ( (PRESCAL+1) * 2 ) */ + ul_prescal = (( p_adc->ADC_MR & ADC_MR_PRESCAL_Msk) >> ADC_MR_PRESCAL_Pos); + ul_adcfreq = ul_mck / ((ul_prescal+1)*2); + return ul_adcfreq; +} + +/** + * \brief Enables ADC interrupt(s). + * + * \param p_adc Pointer to an ADC instance. + * \param dw_source Interrupt(s) to be enabled. + */ +void adc_enable_interrupt(Adc *p_adc, uint32_t ul_source) +{ + p_adc->ADC_IER = ul_source; +} + +/** + * \brief Disables ADC interrupt(s). + * + * \param p_adc Pointer to an ADC instance. + * \param dw_source Interrupt(s) to be disabled. + */ +void adc_disable_interrupt(Adc *p_adc, uint32_t ul_source) +{ + p_adc->ADC_IDR = ul_source; +} + +/** + * \brief Reads ADC interrupt mask. + * + * \param p_adc Pointer to an ADC instance. + * + * \retval ADC interrupt status. + */ + uint32_t adc_get_interrupt_status(Adc *p_adc) +{ + return p_adc->ADC_SR ; +} + +/** \brief Read ADC interrupt mask. + * + * \param p_uart pointer to a UART instance. + * + * \return The interrupt mask value. + */ +uint32_t adc_get_interrupt_mask(Adc *p_adc) +{ + return p_adc->ADC_IMR; +} + +/** + * \brief Reads overrun status. + * + * \param p_adc Pointer to an ADC instance. + * + * \retval ADC overrun status. + */ +uint32_t adc_check_ovr(Adc *p_adc,adc_channel_num_t adc_ch) +{ + return p_adc->ADC_SR & (0x01u << (adc_ch+8)); +} + +/** + * \brief Gets PDC registers base address. + * + * \param p_adc Pointer to an ADC instance. + * + * \retval PDC registers base for PDC driver to access. + */ +Pdc *adc_get_pdc_base(Adc *p_adc) +{ + return PDC_ADC; +} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif /* __cplusplus */ +/**INDENT-ON**/ +/// @endcond + +#endif /* SAM3U */ diff --git a/hardware/sam/system/libsam/source/adc12_sam3u.c b/hardware/sam/system/libsam/source/adc12_sam3u.c new file mode 100644 index 000000000..2ca25bf7d --- /dev/null +++ b/hardware/sam/system/libsam/source/adc12_sam3u.c @@ -0,0 +1,379 @@ +/*! \file ********************************************************************* + * + * \brief API for SAM3 Analog-to-Digital Converter (ADC/ADC12B) controller. + * + * ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * + * - Compiler: IAR EWARM and CodeSourcery GCC for ARM + * - Supported devices: All SAM devices with a Analog-to-Digital Converter can be used. + * - AppNote: + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.com/ + * + *******************************************************************************/ + +#include "../chip.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ +/**INDENT-ON**/ +/// @endcond + +#if SAM3U + +/** + * \brief Initializes the given ADC with the specified ADC clock and startup time. + * + * \param p_adc Pointer to an ADC instance. + * \param dw_mck Main clock of the device (value in Hz). + * \param dw_adc_clock Analog-to-Digital conversion clock (value in Hz). + * \param ul_startuptime ADC start up time value(value in us). Please refer to the product datasheet for details. + * \param ul_offmode_startuptime ADC off mode startup Time value(value in us). Please refer to the product datasheet for details. + * + * \retval 0 The initialization operation succeeds. + * \retval others The initialization operation fails. + */ +uint32_t adc12_init(Adc12b *p_adc, uint32_t ul_mck, uint32_t ul_adc_clock, uint32_t ul_startuptime, uint32_t ul_offmode_startuptime) +{ + p_adc->ADC12B_CR = ADC12B_CR_SWRST; + + /* Reset Mode Register */ + p_adc->ADC12B_MR = 0; + + /* Reset PDC transfer */ + p_adc->ADC12B_PTCR = (ADC12B_PTCR_RXTDIS | ADC12B_PTCR_TXTDIS); + p_adc->ADC12B_RCR = 0; + p_adc->ADC12B_RNCR = 0; + p_adc->ADC12B_TCR = 0; + p_adc->ADC12B_TNCR = 0; + uint32_t prescal = ul_mck/(2 * ul_adc_clock) - 1; + // check for rounding errors + if ( (ul_mck/((prescal+1)*2)) > ul_adc_clock ) { + prescal++; + ul_adc_clock = ul_mck/((prescal+1)*2); + } + uint32_t startup = ((ul_adc_clock/1000000) * ul_startuptime / 8) - 1; + p_adc->ADC12B_MR |= ADC12B_MR_PRESCAL(prescal) | ADC12B_MR_STARTUP(startup); + + uint32_t offmode = ((ul_adc_clock/1000000) * ul_offmode_startuptime / 8) - 1; + p_adc->ADC12B_EMR |= ADC12B_EMR_OFF_MODE_STARTUP_TIME(offmode); + return 0; +} +/** + * \brief Configures conversion resolution. + * + * \param p_adc Pointer to an ADC instance. + * \param resolution ADC resolution. + */ +void adc12_set_resolution(Adc12b *p_adc, adc_resolution_t resolution) +{ + p_adc->ADC12B_MR |= (resolution<<4) & ADC12B_MR_LOWRES; +} +/** + * \brief Configures conversion trigger and free run mode. + * + * \param p_adc Pointer to an ADC instance. + * \param trigger Conversion trigger. + */ +void adc12_configure_trigger(Adc12b *p_adc, adc_trigger_t trigger) +{ + p_adc->ADC12B_MR |= trigger; +} +/** + * \brief Configures ADC power saving mode. + * + * \param p_adc Pointer to an ADC instance. + * \param uc_sleep ADC_MR_SLEEP_NORMAL keeps the ADC Core and reference voltage circuitry ON between conversions + * ADC_MR_SLEEP_SLEEP keeps the ADC Core and reference voltage circuitry OFF between conversions + * \param uc_offmode 0 Standby Mode (if Sleep Bit = 1) + * 1 Off Mode + */ +void adc12_configure_power_save(Adc12b *p_adc, uint8_t uc_sleep, uint8_t uc_offmode) +{ + p_adc->ADC12B_MR |= ((uc_sleep<<5) & ADC12B_MR_SLEEP) ; + p_adc->ADC12B_EMR |= uc_offmode; +} +/** + * \brief Configures ADC timing. + * + * \param p_adc Pointer to an ADC instance. + * \param ul_sh ADC sample and hold time = uc_sh / ADC clock. + * + */ +void adc12_configure_timing(Adc12b *p_adc, uint32_t ul_sh) +{ + p_adc->ADC12B_MR |= ADC12B_MR_SHTIM( ul_sh ) ; +} +/** + * \brief Starts analog-to-digital conversion. + * + * \note If one of the hardware event is selected as ADC trigger, this function can NOT start analog to digital conversion. + * + * \param p_adc Pointer to an ADC instance. + */ + +void adc12_start(Adc12b *p_adc) +{ + p_adc->ADC12B_CR = ADC12B_CR_START; +} +/** + * \brief Stop analog-to-digital conversion. + * \param p_adc Pointer to an ADC instance. + */ +void adc12_stop(Adc12b *p_adc) +{ + p_adc->ADC12B_CR = ADC12B_CR_SWRST; +} +/** + * \brief Enables the specified ADC channel. + * + * \param p_adc Pointer to an ADC instance. + * \param adc_ch ADC channel number. + */ +void adc12_enable_channel(Adc12b *p_adc, adc_channel_num_t adc_ch) +{ + p_adc->ADC12B_CHER = 1 << adc_ch; +} + +/** + * \brief Disables the specified ADC channel. + * + * \param p_adc Pointer to an ADC instance. + * \param adc_ch ADC channel number. + */ +void adc12_disable_channel(Adc12b *p_adc, adc_channel_num_t adc_ch) +{ + p_adc->ADC12B_CHDR = 1 << adc_ch; +} + +/** + * \brief Reads the ADC channel status. + * + * \param p_adc Pointer to an ADC instance. + * \param adc_ch ADC channel number. + * + * \retval 1 means the specified channel is enabled. + * 0 means the specified channel is disabled. + */ +uint32_t adc12_get_channel_status(Adc12b *p_adc, adc_channel_num_t adc_ch) +{ + return p_adc->ADC12B_CHSR & (1 << adc_ch); +} + +/** + * \brief Reads the ADC status. + * + * \param p_adc Pointer to an ADC instance. + * + * \retval ADC status register content. + */ +uint32_t adc12_get_status(Adc12b *p_adc) +{ + return p_adc->ADC12B_SR; +} + +/** + * \brief Reads the ADC result data of the specified channel. + * + * \param p_adc Pointer to an ADC instance. + * \param adc_ch ADC channel number. + * + * \retval ADC data of the specified channel. + */ +uint32_t adc12_get_value(Adc12b *p_adc, adc_channel_num_t adc_ch) +{ + uint32_t dwData = 0; + + if ( 15 >= adc_ch ) + { + dwData=*(p_adc->ADC12B_CDR+adc_ch) ; + } + + return dwData ; +} + +/** + * \brief Reads the last ADC result data. + * + * \param p_adc Pointer to an ADC instance. + * + * \retval ADC data. + */ +uint32_t adc12_get_latest_value(Adc12b *p_adc) +{ + return p_adc->ADC12B_LCDR; +} +/** + * \brief Enables differential input for all channels. + * + * \param p_adc Pointer to an ADC instance. + */ + void adc12_enable_differential_input(Adc12b *p_adc) +{ + p_adc->ADC12B_ACR |= (0x01u << 16); +} + +/** + * \brief Disables differential input for the specified channel. + * + * \param p_adc Pointer to an ADC instance. + */ +void adc12_disable_differential_input(Adc12b*p_adc) +{ + p_adc->ADC12B_ACR &= (0x01u << 16); +} + +/** + * \brief Enables analog signal offset for the specified channel. + * + * \param p_adc Pointer to an ADC instance. + */ +void adc12_enable_input_offset(Adc12b *p_adc) +{ + p_adc->ADC12B_ACR |= (0x01u << 17); +} + +/** + * \brief Disables analog signal offset for the specified channel. + * + * \param p_adc Pointer to an ADC instance. + */ +void adc12_disable_input_offset(Adc12b *p_adc) +{ + p_adc->ADC12B_ACR &= (0x01u << 17); +} +/** + * \brief Configures input gain for the specified channel. + * + * \param p_adc Pointer to an ADC instance. + * \param gain Gain value for the input. + */ +void adc12_set_input_gain(Adc12b *p_adc, adc_gainvalue_t gain) +{ + p_adc->ADC12B_ACR |= (0x03u & gain); +} +uint32_t adc12_get_actual_adc_clock(Adc12b *p_adc, uint32_t ul_mck) +{ + uint32_t ul_adcfreq; + uint32_t ul_prescal; + + /* ADCClock = MCK / ( (PRESCAL+1) * 2 ) */ + ul_prescal = (( p_adc->ADC12B_MR & ADC12B_MR_PRESCAL_Msk) >> ADC12B_MR_PRESCAL_Pos); + ul_adcfreq = ul_mck / ((ul_prescal+1)*2); + return ul_adcfreq; +} +/** + * \brief Enables ADC interrupt(s). + * + * \param p_adc Pointer to an ADC instance. + * \param dw_source Interrupt(s) to be enabled. + */ +void adc12_enable_interrupt(Adc12b *p_adc, uint32_t ul_source) +{ + p_adc->ADC12B_IER = ul_source; +} + +/** + * \brief Disables ADC interrupt(s). + * + * \param p_adc Pointer to an ADC instance. + * \param dw_source Interrupt(s) to be disabled. + */ +void adc12_disable_interrupt(Adc12b *p_adc, uint32_t ul_source) +{ + p_adc->ADC12B_IDR = ul_source; +} +/** \brief Read ADC interrupt mask. + * + * \param p_uart pointer to a UART instance. + * + * \return The interrupt mask value. + */ +uint32_t adc12_get_interrupt_mask(Adc12b *p_adc) +{ + return p_adc->ADC12B_IMR; +} +/** + * \brief Reads ADC interrupt status. + * + * \param p_adc Pointer to an ADC instance. + * + * \retval ADC interrupt status. + */ +uint32_t adc12_get_interrupt_status(Adc12b *p_adc) +{ + return p_adc->ADC12B_SR ; +} +/** + * \brief Reads overrun status. + * + * \param p_adc Pointer to an ADC instance. + * + * \retval ADC overrun status. + */ +uint32_t adc12_check_ovr(Adc12b *p_adc,adc_channel_num_t adc_ch) +{ + return p_adc->ADC12B_SR & (0x01u << (adc_ch+8)); +} +/** + * \brief Adapts performance versus power consumption. + * + * \note Please refer to ADC Characteristics in the product datasheet for the details. + * + * \param p_adc Pointer to an ADC instance. + * \param ibctl ADC Bias current control. + */ +void adc12_set_bias_current(Adc12b *p_adc, uint8_t uc_ibctl) +{ + p_adc->ADC12B_ACR |= ADC12B_ACR_IBCTL(uc_ibctl); +} +/** + * \brief Gets PDC registers base address. + * + * \param p_adc Pointer to an ADC instance. + * + * \retval PDC registers base for PDC driver to access. + */ +Pdc *adc12_get_pdc_base(Adc12b *p_adc) +{ + return PDC_ADC12B; +} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif /* __cplusplus */ +/**INDENT-ON**/ +/// @endcond + +#endif /* SAM3U */ diff --git a/hardware/sam/system/libsam/source/adc_sam3snxa.c b/hardware/sam/system/libsam/source/adc_sam3snxa.c new file mode 100644 index 000000000..f93b57304 --- /dev/null +++ b/hardware/sam/system/libsam/source/adc_sam3snxa.c @@ -0,0 +1,806 @@ +/*! \file ********************************************************************* + * + * \brief API for SAM3 Analog-to-Digital Converter (ADC/ADC12B) controller. + * + * ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * + * - Compiler: IAR EWARM and CodeSourcery GCC for ARM + * - Supported devices: All SAM devices with a Analog-to-Digital Converter can be used. + * - AppNote: + * + * \author Atmel Corporation: http://www.atmel.com \n + * Support and FAQ: http://support.atmel.com/ + * + *******************************************************************************/ + +#include "../chip.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +#if SAM3S || SAM3N || SAM3XA + +/** + * \brief Initializes the given ADC with the specified ADC clock and startup time. + * + * \param p_adc Pointer to an ADC instance. + * \param dw_mck Main clock of the device (value in Hz). + * \param dw_adc_clock Analog-to-Digital conversion clock (value in Hz). + * \param uc_startup ADC start up time. Please refer to the product datasheet for details. + * + * \retval 0 The initialization operation succeeds. + * \retval others The initialization operation fails. + */ +uint32_t adc_init(Adc *p_adc, uint32_t ul_mck, uint32_t ul_adc_clock, uint8_t uc_startup) +{ + uint32_t ul_prescal; + + /* Reset the controller */ + p_adc->ADC_CR = ADC_CR_SWRST; + + /* Reset Mode Register */ + p_adc->ADC_MR = 0; + + /* Reset PDC transfer */ + p_adc->ADC_PTCR = (ADC_PTCR_RXTDIS | ADC_PTCR_TXTDIS); + p_adc->ADC_RCR = 0; + p_adc->ADC_RNCR = 0; + p_adc->ADC_TCR = 0; + p_adc->ADC_TNCR = 0; + + ul_prescal = ul_mck/(2 * ul_adc_clock) - 1; + p_adc->ADC_MR |= ADC_MR_PRESCAL( ul_prescal ) | ( (uc_startup<ADC_MR |= (resolution<<4) & ADC_MR_LOWRES; +} + +/** + * \brief Configures conversion trigger and free run mode. + * + * \param p_adc Pointer to an ADC instance. + * \param trigger Conversion trigger. + * \param uc_freerun ADC_MR_FREERUN_ON enables freerun mode + * ADC_MR_FREERUN_OFF disables freerun mode + * + */ +void adc_configure_trigger(Adc *p_adc, adc_trigger_t trigger, uint8_t uc_freerun) +{ + p_adc->ADC_MR |= trigger | ((uc_freerun<<7) & ADC_MR_FREERUN); +} + +/** + * \brief Configures ADC power saving mode. + * + * \param p_adc Pointer to an ADC instance. + * \param uc_sleep ADC_MR_SLEEP_NORMAL keeps the ADC Core and reference voltage circuitry ON between conversions + * ADC_MR_SLEEP_SLEEP keeps the ADC Core and reference voltage circuitry OFF between conversions + * \param uc_fwup ADC_MR_FWUP_OFF configures sleep mode as uc_sleep setting + * ADC_MR_FWUP_ON keeps voltage reference ON and ADC Core OFF between conversions + * + */ +void adc_configure_power_save(Adc *p_adc, uint8_t uc_sleep, uint8_t uc_fwup) +{ + p_adc->ADC_MR |= ( ((uc_sleep<<5) & ADC_MR_SLEEP) | ((uc_fwup<<6) & ADC_MR_FWUP) ); +} + +/** + * \brief Configures conversion sequence. + * + * \param p_adc Pointer to an ADC instance. + * \param ch_list Channel sequence list. + * \param number Number of channels in the list. + * + */ +void adc_configure_sequence(Adc *p_adc, adc_channel_num_t ch_list[], uint8_t uc_num) +{ + uint8_t uc_counter; + if(uc_num < 8) + { + for(uc_counter=0;uc_counter < uc_num;uc_counter++) + { + p_adc->ADC_SEQR1 |= ch_list[uc_counter] << (4*uc_counter); + } + } + else + { + for(uc_counter=0;uc_counter < 8;uc_counter++) + { + p_adc->ADC_SEQR1 |= ch_list[uc_counter] << (4*uc_counter); + } + for(uc_counter=0;uc_counter < uc_num-8;uc_counter++) + { + p_adc->ADC_SEQR2 |= ch_list[uc_counter] << (4*uc_counter); + } + } +} + +#if SAM3S || SAM3XA +/** + * \brief Configures ADC timing. + * + * \param p_adc Pointer to an ADC instance. + * \param uc_tracking ADC tracking time = uc_tracking / ADC clock. + * \param uc_settling Analog settling time = (uc_settling + 1) / ADC clock. + * \param uc_transfer Data transfer time = (uc_transfer * 2 + 3) / ADC clock. + * + */ +void adc_configure_timing(Adc *p_adc, uint8_t uc_tracking, adc_settling_time_t settling, uint8_t uc_transfer) +{ + p_adc->ADC_MR |= ADC_MR_TRANSFER( uc_transfer ) + | settling + | ADC_MR_TRACKTIM( uc_tracking ) ; +} +#elif SAM3N +/** + * \brief Configures ADC timing. + * + * \param p_adc Pointer to an ADC instance. + * \param uc_tracking ADC tracking time = uc_tracking / ADC clock. + * + */ +void adc_configure_timing(Adc *p_adc, uint8_t uc_tracking) +{ + p_adc->ADC_MR |= ADC_MR_TRACKTIM( uc_tracking ) ; +} +#endif + +#if SAM3S || SAM3XA +/** + * \brief enable analog change. + * + * note it allows different analog settings for each channel, + * + * \param pAdc Pointer to an Adc instance. + */ +void adc_enable_anch( Adc *pAdc ) +{ + pAdc->ADC_MR |= ADC_MR_ANACH; +} +#endif + +#if SAM3S || SAM3XA +/** + * \brief disable analog change. + * + * note DIFF0, GAIN0 and OFF0 are used for all channels. + * + * \param pAdc Pointer to an Adc instance. + */ +void adc_disable_anch( Adc *pAdc ) +{ + pAdc->ADC_MR &= ~ADC_MR_ANACH; +} +#endif + +/** + * \brief Starts analog-to-digital conversion. + * + * \note If one of the hardware event is selected as ADC trigger, this function can NOT start analog to digital conversion. + * + * \param p_adc Pointer to an ADC instance. + * + */ + +void adc_start(Adc *p_adc) +{ + p_adc->ADC_CR = ADC_CR_START; +} + +/** + * \brief Stop analog-to-digital conversion. + * \param p_adc Pointer to an ADC instance. + * + */ +void adc_stop(Adc *p_adc) +{ + p_adc->ADC_CR = ADC_CR_SWRST; +} + +/** + * \brief Enables the specified ADC channel. + * + * \param p_adc Pointer to an ADC instance. + * \param adc_ch ADC channel number. + * + */ +void adc_enable_channel(Adc *p_adc, adc_channel_num_t adc_ch) +{ + p_adc->ADC_CHER = 1 << adc_ch; +} + +/** + * \brief Disables the specified ADC channel. + * + * \param p_adc Pointer to an ADC instance. + * \param adc_ch ADC channel number. + * + */ +void adc_disable_channel(Adc *p_adc, adc_channel_num_t adc_ch) +{ + p_adc->ADC_CHDR = 1 << adc_ch; +} + +/** + * \brief Reads the ADC channel status. + * + * \param p_adc Pointer to an ADC instance. + * \param adc_ch ADC channel number. + * + * \retval 1 means the specified channel is enabled. + * 0 means the specified channel is disabled. + */ +uint32_t adc_get_channnel_status(Adc *p_adc, adc_channel_num_t adc_ch) +{ + return p_adc->ADC_CHSR & (1 << adc_ch); +} + +/** + * \brief Reads the ADC status. + * + * \param p_adc Pointer to an ADC instance. + * + * \retval ADC status register content. + */ +uint32_t adc_get_status(Adc *p_adc) +{ + return p_adc->ADC_ISR; +} + +/** + * \brief Reads the ADC overrun status. + * + * \param p_adc Pointer to an ADC instance. + * + * \retval ADC overrun status register content. + */ +uint32_t adc_get_overrun_status(Adc *p_adc) +{ + return p_adc->ADC_OVER; +} + +/** + * \brief Reads the ADC result data of the specified channel. + * + * \param p_adc Pointer to an ADC instance. + * \param adc_ch ADC channel number. + * + * \retval ADC data of the specified channel. + */ +uint32_t adc_get_value(Adc *p_adc, adc_channel_num_t adc_ch) +{ + uint32_t dwData = 0; + + if ( 15 >= adc_ch ) + { + dwData=*(p_adc->ADC_CDR+adc_ch) ; + } + + return dwData ; +} + +/** + * \brief Reads the last ADC result data. + * + * \param p_adc Pointer to an ADC instance. + * + * \retval ADC data. + */ +uint32_t adc_get_latest_value(Adc *p_adc) +{ + return p_adc->ADC_LCDR; +} + +/** + * \brief Enables TAG option so that the number of the last converted channel can be indicated. + * + * \param p_adc Pointer to an ADC instance. + * + */ +void adc_enable_tag(Adc *p_adc) +{ + p_adc->ADC_EMR |= ADC_EMR_TAG; +} + +/** + * \brief Disables TAG option. + * + * \param p_adc Pointer to an ADC instance. + * + */ +void adc_disable_tag(Adc *p_adc) +{ + p_adc->ADC_EMR &= ~ADC_EMR_TAG; +} + +/** + * \brief Indicates the last converted channel. + * + * \note If TAG option is NOT enabled before, an incorrect channel number is returned. + * + * \param p_adc Pointer to an ADC instance. + * + * \retval The last converted channel number. + */ +adc_channel_num_t adc_get_tag(Adc *p_adc) +{ + return (p_adc->ADC_LCDR & ADC_LCDR_CHNB_Msk) >> ADC_LCDR_CHNB_Pos; +} + +/** + * \brief Enables conversion sequencer. + * + * \param p_adc Pointer to an ADC instance. + * + */ +void adc_start_sequencer(Adc *p_adc) +{ + p_adc->ADC_MR |= ADC_MR_USEQ; +} + +/** + * \brief Disables conversion sequencer. + * + * \param p_adc Pointer to an ADC instance. + * + */ +void adc_stop_sequencer(Adc *p_adc) +{ + p_adc->ADC_MR &= ~ADC_MR_USEQ; +} + +/** + * \brief Configures comparsion mode. + * + * \param p_adc Pointer to an ADC instance. + * \param mode ADC comparsion mode. + * + */ +void adc_set_comparison_mode(Adc *p_adc, uint8_t uc_mode) +{ + p_adc->ADC_EMR &= (uint32_t)~(ADC_EMR_CMPMODE_Msk); + p_adc->ADC_EMR |= (uc_mode & ADC_EMR_CMPMODE_Msk); +} + +/** + * \brief get comparsion mode. + * + * \param p_adc Pointer to an ADC instance. + * \param mode ADC comparsion mode. + * + * \retval compare mode value. + */ +uint32_t adc_get_comparison_mode(Adc *p_adc) +{ + return p_adc->ADC_EMR & ADC_EMR_CMPMODE_Msk; +} + +/** + * \brief Configures ADC compare window. + * + * \param p_adc Pointer to an ADC instance. + * \param w_low_threshold Low threshold of compare window. + * \param w_high_threshold High threshold of compare window. + * + */ +void adc_set_comparsion_window(Adc *p_adc, uint16_t us_low_threshold, uint16_t us_high_threshold) +{ + p_adc->ADC_CWR = ADC_CWR_LOWTHRES(us_low_threshold) | ADC_CWR_HIGHTHRES(us_high_threshold); +} + +/** + * \brief Configures comparison selected channel. + * + * \param p_adc Pointer to an ADC instance. + * \param channel Comparison selected channel. + * + */ +void adc_set_comparison_channel(Adc *p_adc, adc_channel_num_t channel) +{ + if ( channel < 16 ) + { + p_adc->ADC_EMR &= (uint32_t)~(ADC_EMR_CMPALL); + p_adc->ADC_EMR &= (uint32_t)~(ADC_EMR_CMPSEL_Msk); + p_adc->ADC_EMR |= (channel << ADC_EMR_CMPSEL_Pos); + } + else + { + p_adc->ADC_EMR |= ADC_EMR_CMPALL; + } +} + +#if SAM3S || SAM3XA +/** + * \brief Enables differential input for the specified channel. + * + * \param p_adc Pointer to an ADC instance. + * \param channel Channel number. + * + */ + void adc_enable_differential_input(Adc *p_adc, adc_channel_num_t channel) +{ + p_adc->ADC_COR |= 0x01u << (16+ channel); +} + +/** + * \brief Disables differential input for the specified channel. + * + * \param p_adc Pointer to an ADC instance. + * \param channel Channel number. + * + */ +void adc_disable_differential_input(Adc *p_adc, adc_channel_num_t channel) +{ + uint32_t ul_temp; + ul_temp = p_adc->ADC_COR; + p_adc->ADC_COR &= 0xfffeffffu << channel; + p_adc->ADC_COR |= ul_temp; +} + +/** + * \brief Enables analog signal offset for the specified channel. + * + * \param p_adc Pointer to an ADC instance. + * \param channel Channel number. + * + */ +void adc_enable_input_offset(Adc *p_adc, adc_channel_num_t channel) +{ + p_adc->ADC_COR |= 0x01u << channel; +} + +/** + * \brief Disables analog signal offset for the specified channel. + * + * \param p_adc Pointer to an ADC instance. + * \param channel Channel number. + * + */ +void adc_disable_input_offset(Adc *p_adc, adc_channel_num_t channel) +{ + uint32_t ul_temp; + ul_temp = p_adc->ADC_COR; + p_adc->ADC_COR &= (0xfffffffeu << channel); + p_adc->ADC_COR |= ul_temp; +} + +/** + * \brief Configures input gain for the specified channel. + * + * \param p_adc Pointer to an ADC instance. + * \param channel Channel number. + * \param gain Gain value for the input. + * + */ +void adc_set_input_gain(Adc *p_adc, adc_channel_num_t channel, adc_gainvalue_t gain) +{ + p_adc->ADC_CGR |= (0x03u << (2*channel)) & (gain << (2*channel)); +} +#endif /* SAM3S || SAM3XA */ + +#if SAM3S8 || SAM3SD8 +/** + * \brief set adc auto calibration mode. + * + * \param p_adc Pointer to an ADC instance. + * + */ +void adc_set_calibmode(Adc *p_adc) +{ + p_adc->ADC_CR |= ADC_CR_AUTOCAL; +} +#endif /* SAM3S8 || SAM3SD8 */ + +/** + * \brief Returns the actual ADC clock. + * + * \param p_adc Pointer to an ADC instance. + * \param ul_mck Main clock of the device (value in Hz). + * + * \retval 0 The actual ADC clock (value in Hz). + */ +uint32_t adc_get_actual_adc_clock(Adc *p_adc, uint32_t ul_mck) +{ + uint32_t ul_adcfreq; + uint32_t ul_prescal; + + /* ADCClock = MCK / ( (PRESCAL+1) * 2 ) */ + ul_prescal = (( p_adc->ADC_MR & ADC_MR_PRESCAL_Msk) >> ADC_MR_PRESCAL_Pos); + ul_adcfreq = ul_mck / ((ul_prescal+1)*2); + return ul_adcfreq; +} + +/** + * \brief Enables ADC interrupt(s). + * + * \param p_adc Pointer to an ADC instance. + * \param dw_source Interrupt(s) to be enabled. + * + */ +void adc_enable_interrupt(Adc *p_adc, uint32_t ul_source) +{ + p_adc->ADC_IER = ul_source; +} + +/** + * \brief Disables ADC interrupt(s). + * + * \param p_adc Pointer to an ADC instance. + * \param dw_source Interrupt(s) to be disabled. + * + */ +void adc_disable_interrupt(Adc *p_adc, uint32_t ul_source) +{ + p_adc->ADC_IDR = ul_source; +} + +/** + * \brief Reads ADC interrupt status. + * + * \param p_adc Pointer to an ADC instance. + * + * \retval ADC interrupt status. + */ +uint32_t adc_get_interrupt_status(Adc *p_adc) +{ + return p_adc->ADC_ISR ; +} + +/** \brief Read ADC interrupt mask. + * + * \param p_uart pointer to a UART instance. + * + * \return The interrupt mask value. + */ +uint32_t adc_get_interrupt_mask(Adc *p_adc) +{ + return p_adc->ADC_IMR; +} + +/** + * \brief Reads overrun status. + * + * \param p_adc Pointer to an ADC instance. + * + * \retval ADC overrun status. + */ +uint32_t adc_check_ovr(Adc *p_adc,adc_channel_num_t adc_ch) +{ + return p_adc->ADC_OVER & (0x01u << adc_ch); +} + +#if SAM3S || SAM3XA +/** + * \brief Adapts performance versus power consumption. + * + * \note Please refer to ADC Characteristics in the product datasheet for the details. + * + * \param p_adc Pointer to an ADC instance. + * \param ibctl ADC Bias current control. + * + */ +void adc_set_bias_current(Adc *p_adc, uint8_t uc_ibctl) +{ + p_adc->ADC_ACR |= ADC_ACR_IBCTL(uc_ibctl); +} +#endif + +#if SAM3S || SAM3XA +/** + * \brief turn on temperature sensor. + * + * \param p_adc Pointer to an ADC instance. + * + */ +void adc_enable_ts(Adc *p_adc) +{ + p_adc->ADC_ACR |= ADC_ACR_TSON; +} +#endif + +#if SAM3S || SAM3XA +/** + * \brief turn off temperature sensor. + * + * \param p_adc Pointer to an ADC instance. + * + */ +void adc_disable_ts(Adc *p_adc) +{ + p_adc->ADC_ACR &= ~ADC_ACR_TSON; +} +#endif + +/** + * \brief Enables or disables write protection of ADC registers. + * + * \param p_adc Pointer to an ADC instance. + * \param dw_eanble 1 to eanble, 0 to disable. + */ +void adc_set_writeprotect(Adc *p_adc, uint32_t ul_enable) +{ + p_adc->ADC_WPMR |= ADC_WPMR_WPKEY(ul_enable); +} + +/** + * \brief Indicates write protect status. + * + * \param p_adc Pointer to an ADC instance. + * + * \return 0 if the peripheral is not protected, or 16-bit Write Protect Violation Status. + */ +uint32_t adc_get_writeprotect_status(Adc *p_adc) +{ + return p_adc->ADC_WPSR & ADC_WPSR_WPVS; +} + +/** + * \brief calcul_startup + */ +static uint32_t calcul_startup( uint32_t ul_startup ) +{ + uint32_t ul_startup_value=0; + + if( ul_startup == 0 ) + ul_startup_value = 0; + else if( ul_startup == 1 ) + ul_startup_value = 8; + else if( ul_startup == 2 ) + ul_startup_value = 16; + else if( ul_startup == 3 ) + ul_startup_value = 24; + else if( ul_startup == 4 ) + ul_startup_value = 64; + else if( ul_startup == 5 ) + ul_startup_value = 80; + else if( ul_startup == 6 ) + ul_startup_value = 96; + else if( ul_startup == 7 ) + ul_startup_value = 112; + else if( ul_startup == 8 ) + ul_startup_value = 512; + else if( ul_startup == 9 ) + ul_startup_value = 576; + else if( ul_startup == 10 ) + ul_startup_value = 640; + else if( ul_startup == 11 ) + ul_startup_value = 704; + else if( ul_startup == 12 ) + ul_startup_value = 768; + else if( ul_startup == 13 ) + ul_startup_value = 832; + else if( ul_startup == 14 ) + ul_startup_value = 896; + else if( ul_startup == 15 ) + ul_startup_value = 960; + + return ul_startup_value; +} + +#if 0 +/** + * \brief Checks ADC configurations. + * + * \param p_adc Pointer to an ADC instance. + * \param dw_mck Main clock of the device (value in Hz). + */ +void adc_check(Adc* p_adc, uint32_t ul_mck) +{ + uint32_t ul_adcfreq; + uint32_t ul_prescal; + uint32_t ul_startup; + + /* ADCClock = MCK / ( (PRESCAL+1) * 2 ) */ + ul_prescal = (( p_adc->ADC_MR & ADC_MR_PRESCAL_Msk) >> ADC_MR_PRESCAL_Pos); + ul_adcfreq = ul_mck / ((ul_prescal+1)*2); + printf("ADC clock frequency = %d Hz\r\n", (int)ul_adcfreq ); + + if( ul_adcfreq < ADC_FREQ_MIN ) + { + printf("adc frequency too low (out of specification: %d Hz)\r\n", (int)ADC_FREQ_MIN); + } + if( ul_adcfreq > ADC_FREQ_MAX ) + { + printf("adc frequency too high (out of specification: %d Hz)\r\n", (int)ADC_FREQ_MAX); + } + + ul_startup = (( p_adc->ADC_MR & ADC_MR_STARTUP_Msk) >> ADC_MR_STARTUP_Pos); + if( !(p_adc->ADC_MR & ADC_MR_SLEEP_SLEEP) ) + { + /* 40ms */ + if( ADC_STARTUP_NORM * ul_adcfreq / 1000000 > calcul_startup(ul_startup) ) + { + printf("Startup time too small: %d, programmed: %d\r\n", (int)(ADC_STARTUP_NORM * ul_adcfreq / 1000000), (int)calcul_startup(ul_startup)); + } + } + else + { + if(p_adc->ADC_MR & ADC_MR_FREERUN_ON) + { + printf("FreeRun forbidden in sleep mode\n\r"); + } + if( !(p_adc->ADC_MR & ADC_MR_FWUP_ON) ) + { + /* Sleep 40ms */ + if( ADC_STARTUP_NORM * ul_adcfreq / 1000000 > calcul_startup(ul_startup) ) + { + printf("Startup time too small: %d, programmed: %d\r\n", (int)(ADC_STARTUP_NORM * ul_adcfreq / 1000000), (int)(calcul_startup(ul_startup))); + } + } + else + { + if( p_adc->ADC_MR & ADC_MR_FWUP_ON ) + { + /* Fast Wake Up Sleep Mode: 12ms */ + if( ADC_STARTUP_FAST * ul_adcfreq / 1000000 > calcul_startup(ul_startup) ) + { + printf("Startup time too small: %d, programmed: %d\r\n", (int)(ADC_STARTUP_NORM * ul_adcfreq / 1000000), (int)(calcul_startup(ul_startup))); + } + } + } + } +} +#endif /* 0 */ + +/** + * \brief Gets PDC registers base address. + * + * \param p_adc Pointer to an ADC instance. + * + * \retval PDC registers base for PDC driver to access. + */ +Pdc *adc_get_pdc_base(Adc *p_adc) +{ + return PDC_ADC; +} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif // SAM3S || SAM3N || SAM3XA +/**INDENT-ON**/ +/// @endcond + +#endif /* SAM3S || SAM3N || SAM3XA */ + diff --git a/hardware/sam/system/libsam/source/pio.c b/hardware/sam/system/libsam/source/pio.c new file mode 100644 index 000000000..3c0597063 --- /dev/null +++ b/hardware/sam/system/libsam/source/pio.c @@ -0,0 +1,386 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** \file */ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ +#include "chip.h" + +/** + * \brief Configures Pio pin internal pull-up. + * + * \param pPio Pointer to a PIO controller. + * \param dwMask Bitmask of one or more pin(s) to configure. + * \param dwPullUpEnable Indicates if the pin(s) internal pull-up shall be configured. + */ +extern void PIO_DisableInterrupt( Pio *pPio, const uint32_t dwMask ) +{ + /* Disable interrupts on the pin */ + pPio->PIO_IDR = dwMask ; +} + +/** + * \brief Configures Pio pin internal pull-up. + * + * \param pPio Pointer to a PIO controller. + * \param dwMask Bitmask of one or more pin(s) to configure. + * \param dwPullUpEnable Indicates if the pin(s) internal pull-up shall be configured. + */ +extern void PIO_PullUp( Pio *pPio, const uint32_t dwMask, const uint32_t dwPullUpEnable ) +{ + /* Enable the pull-up(s) if necessary */ + if ( dwPullUpEnable ) + { + pPio->PIO_PUER = dwMask ; + } + else + { + pPio->PIO_PUDR = dwMask ; + } +} + +/** + * \brief Configures Glitch or Debouncing filter for input. + * + * \param pin Pointer to a Pin instance describing one or more pins. + * \param cuttoff Cutt off frequency for debounce filter. + */ +extern void PIO_SetDebounceFilter( Pio* pPio, const uint32_t dwMask, const uint32_t dwCuttOff ) +{ +#if (defined _SAM3S_) || (defined _SAM3S8_) || (defined _SAM3N_) + pPio->PIO_IFSCER = dwMask ; /* set Debouncing, 0 bit field no effect */ +#elif (defined _SAM3XA_) || (defined _SAM3U_) + pPio->PIO_DIFSR = dwMask ; /* set Debouncing, 0 bit field no effect */ +#else + #error "The specified chip is not supported." +#endif + pPio->PIO_SCDR = ((32678/(2*(dwCuttOff))) - 1) & 0x3FFF; /* the lowest 14 bits work */ +} + +/** + * \brief Sets a high output level on all the PIOs defined in the given Pin instance. + * This has no immediate effects on PIOs that are not output, but the PIO + * controller will memorize the value they are changed to outputs. + * + * \param pin Pointer to a Pin instance describing one or more pins. + */ +extern void PIO_Set( Pio* pPio, const uint32_t dwMask ) +{ + pPio->PIO_SODR = dwMask ; +} + +/** + * \brief Returns 1 if one or more PIO of the given Pin instance currently have + * a high level; otherwise returns 0. This method returns the actual value that + * is being read on the pin. To return the supposed output value of a pin, use + * PIO_GetOutputDataStatus() instead. + * + * \param pin Pointer to a Pin instance describing one or more pins. + * + * \return 1 if the Pin instance contains at least one PIO that currently has + * a high level; otherwise 0. + */ +extern uint32_t PIO_Get( Pio* pPio, const EPioType dwType, const uint32_t dwMask ) +{ + uint32_t dwReg ; + + if ( (dwType == PIO_OUTPUT_0) || (dwType == PIO_OUTPUT_1) ) + { + dwReg = pPio->PIO_ODSR ; + } + else + { + dwReg = pPio->PIO_PDSR ; + } + + if ( (dwReg & dwMask) == 0 ) + { + return 0 ; + } + else + { + return 1 ; + } +} + +/** + * \brief Sets a low output level on all the PIOs defined in the given Pin instance. + * This has no immediate effects on PIOs that are not output, but the PIO + * controller will memorize the value they are changed to outputs. + * + * \param pin Pointer to a Pin instance describing one or more pins. + */ +extern void PIO_Clear( Pio* pPio, const uint32_t dwMask ) +{ + pPio->PIO_CODR = dwMask ; +} + +/** + * \brief Configures one pin of a PIO controller as being controlled by specific peripheral. + * + * \param pPio Pointer to a PIO controller. + * \param dwType PIO type. + * \param dwMask Bitmask of one or more pin(s) to configure. + */ +extern void PIO_SetPeripheral( Pio* pPio, EPioType dwType, uint32_t dwMask ) +{ + uint32_t dwSR ; + + /* Disable interrupts on the pin(s) */ + pPio->PIO_IDR = dwMask ; + + switch ( dwType ) + { + case PIO_PERIPH_A : +#if (defined _SAM3S_) || (defined _SAM3S8_) || (defined _SAM3N_) + dwSR = pPio->PIO_ABCDSR[0] ; + pPio->PIO_ABCDSR[0] &= (~dwMask & dwSR) ; + + dwSR = pPio->PIO_ABCDSR[1]; + pPio->PIO_ABCDSR[1] &= (~dwMask & dwSR) ; +#endif /* (defined _SAM3S_) || (defined _SAM3S8_) || (defined _SAM3N_) */ + +#if (defined _SAM3U_) || (defined _SAM3XA_) + dwSR = pPio->PIO_ABSR ; + pPio->PIO_ABSR &= (~dwMask & dwSR) ; +#endif /* (defined _SAM3U_) || (defined _SAM3XA_) */ + break ; + + case PIO_PERIPH_B : +#if (defined _SAM3S_) || (defined _SAM3S8_) || (defined _SAM3N_) + dwSR = pPio->PIO_ABCDSR[0] ; + pPio->PIO_ABCDSR[0] = (dwMask | dwSR) ; + + dwSR = pPio->PIO_ABCDSR[1] ; + pPio->PIO_ABCDSR[1] &= (~dwMask & dwSR) ; +#endif /* (defined _SAM3S_) || (defined _SAM3S8_) || (defined _SAM3N_) */ + +#if (defined _SAM3U_) || (defined _SAM3XA_) + dwSR = pPio->PIO_ABSR ; + pPio->PIO_ABSR = (dwMask | dwSR) ; +#endif /* (defined _SAM3U_) || (defined _SAM3XA_) */ + break ; + +#if (defined _SAM3S_) || (defined _SAM3S8_) || (defined _SAM3N_) + case PIO_PERIPH_C : + dwSR = pPio->PIO_ABCDSR[0] ; + pPio->PIO_ABCDSR[0] &= (~dwMask & dwSR) ; + + dwSR = pPio->PIO_ABCDSR[1] ; + pPio->PIO_ABCDSR[1] = (dwMask | dwSR) ; + break ; + + case PIO_PERIPH_D : + dwSR = pPio->PIO_ABCDSR[0] ; + pPio->PIO_ABCDSR[0] = (dwMask | dwSR) ; + + dwSR = pPio->PIO_ABCDSR[1] ; + pPio->PIO_ABCDSR[1] = (dwMask | dwSR) ; + break ; +#endif /* (defined _SAM3S_) || (defined _SAM3S8_) || (defined _SAM3N_) */ + + // other types are invalid in this function + case PIO_INPUT : + case PIO_OUTPUT_0 : + case PIO_OUTPUT_1 : + case PIO_NOT_A_PIN : + return ; + } + + // Remove the pins from under the control of PIO + pPio->PIO_PDR = dwMask ; +} + +/** + * \brief Configures one or more pin(s) or a PIO controller as inputs. Optionally, + * the corresponding internal pull-up(s) and glitch filter(s) can be enabled. + * + * \param pPio Pointer to a PIO controller. + * \param dwMask Bitmask indicating which pin(s) to configure as input(s). + * \param dwAttribute . + */ +extern void PIO_SetInput( Pio* pPio, uint32_t dwMask, uint32_t dwAttribute ) +{ + PIO_DisableInterrupt( pPio, dwMask ) ; + PIO_PullUp( pPio, dwMask, dwAttribute & PIO_PULLUP ) ; + + /* Enable Input Filter if necessary */ + if ( dwAttribute & (PIO_DEGLITCH | PIO_DEBOUNCE) ) + { + pPio->PIO_IFER = dwMask ; + } + else + { + pPio->PIO_IFDR = dwMask ; + } + + /* Enable de-glitch or de-bounce if necessary */ +#if (defined _SAM3S_) || (defined _SAM3S8_) || (defined _SAM3N_) + if ( dwAttribute & PIO_DEGLITCH ) + { + pPio->PIO_IFSCDR = dwMask ; + } + else + { + if ( dwAttribute & PIO_DEBOUNCE ) + { + pPio->PIO_IFSCER = dwMask ; + } + } +#elif (defined _SAM3U_) || (defined _SAM3XA_) + if ( dwAttribute & PIO_DEGLITCH ) + { + pPio->PIO_SCIFSR = dwMask ; + } + else + { + if ( dwAttribute & PIO_DEBOUNCE ) + { + pPio->PIO_SCIFSR = dwMask ; + } + } +#else + #error "The specified chip is not supported." +#endif + + /* Configure pin as input */ + pPio->PIO_ODR = dwMask ; + pPio->PIO_PER = dwMask ; +} + +/** + * \brief Configures one or more pin(s) of a PIO controller as outputs, with the + * given default value. Optionally, the multi-drive feature can be enabled + * on the pin(s). + * + * \param pPio Pointer to a PIO controller. + * \param dwMask Bitmask indicating which pin(s) to configure. + * \param defaultValue Default level on the pin(s). + * \param enableMultiDrive Indicates if the pin(s) shall be configured as open-drain. + * \param enablePullUp Indicates if the pin shall have its pull-up activated. + */ +extern void PIO_SetOutput( Pio* pPio, uint32_t dwMask, uint32_t dwDefaultValue, + uint32_t dwMultiDriveEnable, uint32_t dwPullUpEnable ) +{ + PIO_DisableInterrupt( pPio, dwMask ) ; + PIO_PullUp( pPio, dwMask, dwPullUpEnable ) ; + + /* Enable multi-drive if necessary */ + if ( dwMultiDriveEnable ) + { + pPio->PIO_MDER = dwMask ; + } + else + { + pPio->PIO_MDDR = dwMask ; + } + + /* Set default value */ + if ( dwDefaultValue ) + { + pPio->PIO_SODR = dwMask ; + } + else + { + pPio->PIO_CODR = dwMask ; + } + + /* Configure pin(s) as output(s) */ + pPio->PIO_OER = dwMask ; + pPio->PIO_PER = dwMask ; +} + +/** + * + * \return 1 if the pins have been configured properly; otherwise 0. + */ +extern uint32_t PIO_Configure( Pio* pPio, const EPioType dwType, const uint32_t dwMask, const uint32_t dwAttribute ) +{ + /* Configure pins */ + switch ( dwType ) + { + case PIO_PERIPH_A : + case PIO_PERIPH_B : +#if (defined _SAM3S_) || (defined _SAM3S8_) || (defined _SAM3N_) + case PIO_PERIPH_C : + case PIO_PERIPH_D : +#endif /* (defined _SAM3S_) || (defined _SAM3S8_) || (defined _SAM3N_) */ + /* Put the pin under control of peripheral */ + PIO_SetPeripheral( pPio, dwType, dwMask ) ; + /* Disable interrupts on the pin(s) */ + PIO_DisableInterrupt( pPio, dwMask ) ; + /* Enable Pullup */ + PIO_PullUp( pPio, dwMask, (dwAttribute & PIO_PULLUP) ) ; + break; + + case PIO_INPUT : + PIO_SetInput( pPio, dwMask, dwAttribute ) ; + break; + + case PIO_OUTPUT_0 : + case PIO_OUTPUT_1 : + PIO_SetOutput( pPio, dwMask, (dwType == PIO_OUTPUT_1), + (dwAttribute & PIO_OPENDRAIN) ? 1 : 0, + (dwAttribute & PIO_PULLUP) ? 1 : 0); + break ; + + default : + return 0 ; + } + + return 1 ; +} + +/** + * \brief Returns 1 if one or more PIO of the given Pin are configured to output a + * high level (even if they are not output). + * To get the actual value of the pin, use PIO_Get() instead. + * + * \param pPio Pointer to a Pin instance describing one or more pins. + * + * \return 1 if the Pin instance contains at least one PIO that is configured + * to output a high level; otherwise 0. + */ +extern uint32_t PIO_GetOutputDataStatus( const Pio* pPio, const uint32_t dwMask ) +{ + /* Test if pin is under control of PIO */ + if ( (pPio->PIO_PSR & dwMask) != 0 ) + { + /* Test if pin is configured as output */ + if ( (pPio->PIO_OSR & dwMask) != 0 ) + { + return 1 ; + } + } + + return 0 ; +} + diff --git a/hardware/sam/system/libsam/source/pio_it.c.disabled b/hardware/sam/system/libsam/source/pio_it.c.disabled new file mode 100644 index 000000000..0a4ebad7c --- /dev/null +++ b/hardware/sam/system/libsam/source/pio_it.c.disabled @@ -0,0 +1,280 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "chip.h" + +#include + +/*---------------------------------------------------------------------------- + * Local definitions + *----------------------------------------------------------------------------*/ + +/* Maximum number of interrupt sources that can be defined. This + * constant can be increased, but the current value is the smallest possible + * that will be compatible with all existing projects. */ +#define MAX_INTERRUPT_SOURCES 7 + +/*---------------------------------------------------------------------------- + * Local types + *----------------------------------------------------------------------------*/ + +/** + * Describes a PIO interrupt source, including the PIO instance triggering the + * interrupt and the associated interrupt handler. + */ +typedef struct _InterruptSource +{ + /* Pointer to the source pin instance. */ + const Pin *pPin ; + + /* Interrupt handler. */ + void (*handler)( const Pin* ) ; +} InterruptSource ; + +/*---------------------------------------------------------------------------- + * Local variables + *----------------------------------------------------------------------------*/ + +/* List of interrupt sources. */ +static InterruptSource _aIntSources[MAX_INTERRUPT_SOURCES] ; + +/* Number of currently defined interrupt sources. */ +static uint32_t _dwNumSources = 0; + +/*---------------------------------------------------------------------------- + * Local Functions + *----------------------------------------------------------------------------*/ + +/** + * \brief Handles all interrupts on the given PIO controller. + * \param id PIO controller ID. + * \param pPio PIO controller base address. + */ +extern void PioInterruptHandler( uint32_t id, Pio *pPio ) +{ + uint32_t status; + uint32_t i; + + /* Read PIO controller status */ + status = pPio->PIO_ISR; + status &= pPio->PIO_IMR; + + /* Check pending events */ + if ( status != 0 ) + { + TRACE_DEBUG( "PIO interrupt on PIO controller #%d\n\r", id ) ; + + /* Find triggering source */ + i = 0; + while ( status != 0 ) + { + /* There cannot be an unconfigured source enabled. */ + assert(i < _dwNumSources); + + /* Source is configured on the same controller */ + if (_aIntSources[i].pPin->id == id) + { + /* Source has PIOs whose statuses have changed */ + if ( (status & _aIntSources[i].pPin->mask) != 0 ) + { + TRACE_DEBUG( "Interrupt source #%d triggered\n\r", i ) ; + + _aIntSources[i].handler(_aIntSources[i].pPin); + status &= ~(_aIntSources[i].pPin->mask); + } + } + i++; + } + } +} + +/*---------------------------------------------------------------------------- + * Global Functions + *----------------------------------------------------------------------------*/ + +/** + * \brief Parallel IO Controller A interrupt handler + * \Redefined PIOA interrupt handler for NVIC interrupt table. + */ +extern void PIOA_IrqHandler( void ) +{ + if ( PIOA->PIO_PCISR != 0 ) + { + PIO_CaptureHandler() ; + } + + PioInterruptHandler( ID_PIOA, PIOA ) ; +} + +/** + * \brief Parallel IO Controller B interrupt handler + * \Redefined PIOB interrupt handler for NVIC interrupt table. + */ +extern void PIOB_IrqHandler( void ) +{ + PioInterruptHandler( ID_PIOB, PIOB ) ; +} + +/** + * \brief Parallel IO Controller C interrupt handler + * \Redefined PIOC interrupt handler for NVIC interrupt table. + */ +extern void PIOC_IrqHandler( void ) +{ + PioInterruptHandler( ID_PIOC, PIOC ) ; +} + +/** + * \brief Initializes the PIO interrupt management logic + * + * The desired priority of PIO interrupts must be provided. + * Calling this function multiple times result in the reset of currently + * configured interrupts. + * + * \param priority PIO controller interrupts priority. + */ +extern void PIO_InitializeInterrupts( uint32_t dwPriority ) +{ + TRACE_DEBUG( "PIO_Initialize()\n\r" ) ; + + /* Reset sources */ + _dwNumSources = 0 ; + + /* Configure PIO interrupt sources */ + TRACE_DEBUG( "PIO_Initialize: Configuring PIOA\n\r" ) ; + PMC_EnablePeripheral( ID_PIOA ) ; + PIOA->PIO_ISR ; + PIOA->PIO_IDR = 0xFFFFFFFF ; + NVIC_DisableIRQ( PIOA_IRQn ) ; + NVIC_ClearPendingIRQ( PIOA_IRQn ) ; + NVIC_SetPriority( PIOA_IRQn, dwPriority ) ; + NVIC_EnableIRQ( PIOA_IRQn ) ; + + TRACE_DEBUG( "PIO_Initialize: Configuring PIOB\n\r" ) ; + PMC_EnablePeripheral( ID_PIOB ) ; + PIOB->PIO_ISR ; + PIOB->PIO_IDR = 0xFFFFFFFF ; + NVIC_DisableIRQ( PIOB_IRQn ) ; + NVIC_ClearPendingIRQ( PIOB_IRQn ) ; + NVIC_SetPriority( PIOB_IRQn, dwPriority ) ; + NVIC_EnableIRQ( PIOB_IRQn ) ; + + TRACE_DEBUG( "PIO_Initialize: Configuring PIOC\n\r" ) ; + PMC_EnablePeripheral( ID_PIOC ) ; + PIOC->PIO_ISR ; + PIOC->PIO_IDR = 0xFFFFFFFF ; + NVIC_DisableIRQ( PIOC_IRQn ) ; + NVIC_ClearPendingIRQ( PIOC_IRQn ) ; + NVIC_SetPriority( PIOC_IRQn, dwPriority ) ; + NVIC_EnableIRQ( PIOC_IRQn ) ; +} + +/** + * Configures a PIO or a group of PIO to generate an interrupt on status + * change. The provided interrupt handler will be called with the triggering + * pin as its parameter (enabling different pin instances to share the same + * handler). + * \param pPin Pointer to a Pin instance. + * \param handler Interrupt handler function pointer. + */ +extern void PIO_ConfigureIt( const Pin *pPin, void (*handler)( const Pin* ) ) +{ + Pio* pio ; + InterruptSource* pSource ; + + TRACE_DEBUG( "PIO_ConfigureIt()\n\r" ) ; + + assert( pPin ) ; + pio = pPin->pio ; + assert( _dwNumSources < MAX_INTERRUPT_SOURCES ) ; + + /* Define new source */ + TRACE_DEBUG( "PIO_ConfigureIt: Defining new source #%d.\n\r", _dwNumSources ) ; + + pSource = &(_aIntSources[_dwNumSources]) ; + pSource->pPin = pPin ; + pSource->handler = handler ; + _dwNumSources++ ; + + /* PIO3 with additional interrupt support + * Configure additional interrupt mode registers */ + if ( pPin->attribute & PIO_IT_AIME ) + { + // enable additional interrupt mode + pio->PIO_AIMER = pPin->mask ; + + // if bit field of selected pin is 1, set as Rising Edge/High level detection event + if ( pPin->attribute & PIO_IT_RE_OR_HL ) + { + pio->PIO_REHLSR = pPin->mask ; + } + else + { + pio->PIO_FELLSR = pPin->mask; + } + + /* if bit field of selected pin is 1, set as edge detection source */ + if (pPin->attribute & PIO_IT_EDGE) + pio->PIO_ESR = pPin->mask; + else + pio->PIO_LSR = pPin->mask; + } + else + { + /* disable additional interrupt mode */ + pio->PIO_AIMDR = pPin->mask; + } +} + +/** + * Enables the given interrupt source if it has been configured. The status + * register of the corresponding PIO controller is cleared prior to enabling + * the interrupt. + * \param pPin Interrupt source to enable. + */ +extern void PIO_EnableIt( const Pio* pPio, const uint32_t dwMask ) +{ + pPio->PIO_ISR ; + pPio->PIO_IER = dwMask ; +} + +/** + * Disables a given interrupt source, with no added side effects. + * + * \param pPin Interrupt source to disable. + */ +extern void PIO_DisableIt( const Pio* pPio, const uint32_t dwMask ) +{ + pPio->PIO_IDR = dwMask ; +} + diff --git a/hardware/sam/system/libsam/source/pmc.c b/hardware/sam/system/libsam/source/pmc.c new file mode 100644 index 000000000..a390d9196 --- /dev/null +++ b/hardware/sam/system/libsam/source/pmc.c @@ -0,0 +1,183 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "chip.h" + +#include + +/*---------------------------------------------------------------------------- + * Local definitions + *----------------------------------------------------------------------------*/ + +#define MASK_STATUS0 0xFFFFFFFC +#define MASK_STATUS1 0xFFFFFFFF + +/*---------------------------------------------------------------------------- + * Exported functions + *----------------------------------------------------------------------------*/ + +/** + * \brief Enables the clock of a peripheral. The peripheral ID is used + * to identify which peripheral is targetted. + * + * \note The ID must NOT be shifted (i.e. 1 << ID_xxx). + * + * \param id Peripheral ID (ID_xxx). + */ +extern void PMC_EnablePeripheral( uint32_t dwId ) +{ +#if (defined _SAM3S_) || (defined _SAM3S8_) || (defined _SAM3XA_) + assert( dwId < 35 ) ; + + if ( dwId < 32 ) + { + if ( (PMC->PMC_PCSR0 & ((uint32_t)1 << dwId)) == ((uint32_t)1 << dwId) ) + { +// TRACE_DEBUG( "PMC_EnablePeripheral: clock of peripheral" " %u is already enabled\n\r", dwId ) ; + } + else + { + PMC->PMC_PCER0 = 1 << dwId ; + } + } + else + { + dwId -= 32; + if ((PMC->PMC_PCSR1 & ((uint32_t)1 << dwId)) == ((uint32_t)1 << dwId)) + { +// TRACE_DEBUG( "PMC_EnablePeripheral: clock of peripheral" " %u is already enabled\n\r", dwId + 32 ) ; + } + else + { + PMC->PMC_PCER1 = 1 << dwId ; + } + } +#elif (defined _SAM3N_) || (defined _SAM3U_) + if ( (PMC->PMC_PCSR0 & ((uint32_t)1 << dwId)) != ((uint32_t)1 << dwId) ) + { + PMC->PMC_PCER0 = 1 << dwId ; + } +#else + #error "The specified chip is not supported." +#endif +} + +/** + * \brief Disables the clock of a peripheral. The peripheral ID is used + * to identify which peripheral is targetted. + * + * \note The ID must NOT be shifted (i.e. 1 << ID_xxx). + * + * \param id Peripheral ID (ID_xxx). + */ +extern void PMC_DisablePeripheral( uint32_t dwId ) +{ +#if (defined _SAM3S_) || (defined _SAM3S8_) || (defined _SAM3XA_) + assert( dwId < 35 ) ; + + if ( dwId < 32 ) + { + if ( (PMC->PMC_PCSR0 & ((uint32_t)1 << dwId)) == ((uint32_t)1 << dwId) ) + { + PMC->PMC_PCDR0 = 1 << dwId ; + } + } + else + { + dwId -= 32 ; + if ( (PMC->PMC_PCSR1 & ((uint32_t)1 << dwId)) == ((uint32_t)1 << dwId) ) + { + PMC->PMC_PCDR1 = 1 << dwId ; + } + } +#elif (defined _SAM3N_) || (defined _SAM3U_) + if ( (PMC->PMC_PCSR0 & ((uint32_t)1 << dwId)) == ((uint32_t)1 << dwId) ) + { + PMC->PMC_PCDR0 = 1 << dwId ; + } +#else + #error "The specified chip is not supported." +#endif +} + +/** + * \brief Get the status of the specified peripheral clock. + * + * \note The ID must NOT be shifted (i.e. 1 << ID_xxx). + * + * \param dwId Peripheral ID (ID_xxx). + * + * \retval 0 Clock is active. + * \retval 1 Clock is inactive. + * \retval 2 Invalid parameter. + */ +extern uint32_t PMC_IsPeripheralEnabled( uint32_t dwId ) +{ +#if (defined _SAM3S_) || (defined _SAM3S8_) || (defined _SAM3XA_) + assert( dwId < 35 ) ; + + if ( dwId < 32 ) + { + if ( PMC->PMC_PCSR0 & (1 << dwId) ) + { + return 0 ; + } + else + { + return 1 ; + } + } + else + { + if ( PMC->PMC_PCSR1 & (1 << (dwId - 32)) ) + { + return 0 ; + } + else + { + return 1 ; + } + } +#elif (defined _SAM3N_) || (defined _SAM3U_) + if ( (PMC->PMC_PCSR0 & ((uint32_t)1 << dwId)) ) + { + return 0 ; + } + else + { + return 1 ; + } +#else + #error "The specified chip is not supported." +#endif +} diff --git a/hardware/sam/system/libsam/source/pwmc.c b/hardware/sam/system/libsam/source/pwmc.c new file mode 100644 index 000000000..6b6a3fc11 --- /dev/null +++ b/hardware/sam/system/libsam/source/pwmc.c @@ -0,0 +1,614 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** \addtogroup pwm_module Working with PWM + * The PWM driver provides the interface to configure and use the PWM + * peripheral. + * + * The PWM macrocell controls square output waveforms of 4 channels. + * Characteristics of output waveforms such as period, duty-cycle, + * dead-time can be configured.\n + * Some of PWM channels can be linked together as synchronous channel and + * duty-cycle of synchronous channels can be updated by PDC automaticly. + * + * Before enabling the channels, they must have been configured first. + * The main settings include: + *
    + *
  • Configuration of the clock generator.
  • + *
  • Selection of the clock for each channel.
  • + *
  • Configuration of output waveform characteristics, such as period, duty-cycle etc.
  • + *
  • Configuration for synchronous channels if needed.
  • + * - Selection of the synchronous channels. + * - Selection of the moment when the WRDY flag and the corresponding PDC + * transfer request are set (PTRM and PTRCS in the PWM_SCM register). + * - Configuration of the update mode (UPDM in the PWM_SCM register). + * - Configuration of the update period (UPR in the PWM_SCUP register). + *
+ * + * After the channels is enabled, the user must use respective update registers + * to change the wave characteristics to prevent unexpected output waveform. + * i.e. PWM_CDTYUPDx register should be used if user want to change duty-cycle + * when the channel is enabled. + * + * For more accurate information, please look at the PWM section of the + * Datasheet. + * + * Related files :\n + * \ref pwmc.c\n + * \ref pwmc.h.\n + */ +/*@{*/ +/*@}*/ + +/** + * \file + * + * Implementation of the Pulse Width Modulation Controller (PWM) peripheral. + * + */ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "chip.h" + +#include +#include + +/*---------------------------------------------------------------------------- + * Local functions + *----------------------------------------------------------------------------*/ + +/** + * \brief Finds a prescaler/divisor couple to generate the desired frequency + * from MCK. + * + * Returns the value to enter in PWM_CLK or 0 if the configuration cannot be + * met. + * + * \param frequency Desired frequency in Hz. + * \param mck Master clock frequency in Hz. + */ +static uint16_t FindClockConfiguration( + uint32_t frequency, + uint32_t mck) +{ + uint32_t divisors[11] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024}; + uint8_t divisor = 0; + uint32_t prescaler; + + assert(frequency < mck); + + /* Find prescaler and divisor values */ + prescaler = (mck / divisors[divisor]) / frequency; + while ((prescaler > 255) && (divisor < 11)) { + + divisor++; + prescaler = (mck / divisors[divisor]) / frequency; + } + + /* Return result */ + if ( divisor < 11 ) + { +// TRACE_DEBUG( "Found divisor=%u and prescaler=%u for freq=%uHz\n\r", divisors[divisor], prescaler, frequency ) ; + + return prescaler | (divisor << 8) ; + } + else + { + return 0 ; + } +} + +/*---------------------------------------------------------------------------- + * Exported functions + *----------------------------------------------------------------------------*/ + +/** + * \brief Configures PWM a channel with the given parameters, basic configure function. + * + * The PWM controller must have been clocked in the PMC prior to calling this + * function. + * Beware: this function disables the channel. It waits until disable is effective. + * + * \param channel Channel number. + * \param prescaler Channel prescaler. + * \param alignment Channel alignment. + * \param polarity Channel polarity. + */ +void PWMC_ConfigureChannel( + Pwm* pPwm, + uint8_t channel, + uint32_t prescaler, + uint32_t alignment, + uint32_t polarity) +{ + pPwm->PWM_CH_NUM[0].PWM_CMR = 1; + +// assert(prescaler < PWM_CMR0_CPRE_MCKB); + assert((alignment & (uint32_t)~PWM_CMR_CALG) == 0); + assert((polarity & (uint32_t)~PWM_CMR_CPOL) == 0); + + /* Disable channel (effective at the end of the current period) */ + if ((pPwm->PWM_SR & (1 << channel)) != 0) { + pPwm->PWM_DIS = 1 << channel; + while ((pPwm->PWM_SR & (1 << channel)) != 0); + } + + /* Configure channel */ + pPwm->PWM_CH_NUM[channel].PWM_CMR = prescaler | alignment | polarity; +} + +/** + * \brief Configures PWM a channel with the given parameters, extend configure function. + * + * The PWM controller must have been clocked in the PMC prior to calling this + * function. + * Beware: this function disables the channel. It waits until disable is effective. + * + * \param channel Channel number. + * \param prescaler Channel prescaler. + * \param alignment Channel alignment. + * \param polarity Channel polarity. + * \param countEventSelect Channel counter event selection. + * \param DTEnable Channel dead time generator enable. + * \param DTHInverte Channel Dead-Time PWMHx output Inverted. + * \param DTLInverte Channel Dead-Time PWMHx output Inverted. + */ +void PWMC_ConfigureChannelExt( + Pwm* pPwm, + uint8_t channel, + uint32_t prescaler, + uint32_t alignment, + uint32_t polarity, + uint32_t countEventSelect, + uint32_t DTEnable, + uint32_t DTHInverte, + uint32_t DTLInverte) +{ +// assert(prescaler < PWM_CMR0_CPRE_MCKB); + assert((alignment & (uint32_t)~PWM_CMR_CALG) == 0); + assert((polarity & (uint32_t)~PWM_CMR_CPOL) == 0); + assert((countEventSelect & (uint32_t)~PWM_CMR_CES) == 0); + assert((DTEnable & (uint32_t)~PWM_CMR_DTE) == 0); + assert((DTHInverte & (uint32_t)~PWM_CMR_DTHI) == 0); + assert((DTLInverte & (uint32_t)~PWM_CMR_DTLI) == 0); + + /* Disable channel (effective at the end of the current period) */ + if ((pPwm->PWM_SR & (1 << channel)) != 0) { + pPwm->PWM_DIS = 1 << channel; + while ((pPwm->PWM_SR & (1 << channel)) != 0); + } + + /* Configure channel */ + pPwm->PWM_CH_NUM[channel].PWM_CMR = prescaler | alignment | polarity | + countEventSelect | DTEnable | DTHInverte | DTLInverte; +} + +/** + * \brief Configures PWM clocks A & B to run at the given frequencies. + * + * This function finds the best MCK divisor and prescaler values automatically. + * + * \param clka Desired clock A frequency (0 if not used). + * \param clkb Desired clock B frequency (0 if not used). + * \param mck Master clock frequency. + */ +void PWMC_ConfigureClocks(uint32_t clka, uint32_t clkb, uint32_t mck) +{ + uint32_t mode = 0; + uint32_t result; + + /* Clock A */ + if (clka != 0) { + + result = FindClockConfiguration(clka, mck); + assert( result != 0 ) ; + mode |= result; + } + + /* Clock B */ + if (clkb != 0) { + + result = FindClockConfiguration(clkb, mck); + assert( result != 0 ) ; + mode |= (result << 16); + } + + /* Configure clocks */ +// TRACE_DEBUG( "Setting PWM_CLK = 0x%08X\n\r", mode ) ; + PWM->PWM_CLK = mode; +} + +/** + * \brief Sets the period value used by a PWM channel. + * + * This function writes directly to the CPRD register if the channel is disabled; + * otherwise, it uses the update register CPRDUPD. + * + * \param channel Channel number. + * \param period Period value. + */ +void PWMC_SetPeriod( Pwm* pPwm, uint8_t channel, uint16_t period) +{ + /* If channel is disabled, write to CPRD */ + if ((pPwm->PWM_SR & (1 << channel)) == 0) { + + pPwm->PWM_CH_NUM[channel].PWM_CPRD = period; + } + /* Otherwise use update register */ + else { + + pPwm->PWM_CH_NUM[channel].PWM_CPRDUPD = period; + } +} + +/** + * \brief Sets the duty cycle used by a PWM channel. + * This function writes directly to the CDTY register if the channel is disabled; + * otherwise it uses the update register CDTYUPD. + * Note that the duty cycle must always be inferior or equal to the channel + * period. + * + * \param channel Channel number. + * \param duty Duty cycle value. + */ +void PWMC_SetDutyCycle( Pwm* pPwm, uint8_t channel, uint16_t duty) +{ + assert(duty <= pPwm->PWM_CH_NUM[channel].PWM_CPRD); + + /* If channel is disabled, write to CDTY */ + if ((pPwm->PWM_SR & (1 << channel)) == 0) { + + pPwm->PWM_CH_NUM[channel].PWM_CDTY = duty; + } + /* Otherwise use update register */ + else { + + pPwm->PWM_CH_NUM[channel].PWM_CDTYUPD = duty; + } +} + +/** + * \brief Sets the dead time used by a PWM channel. + * This function writes directly to the DT register if the channel is disabled; + * otherwise it uses the update register DTUPD. + * Note that the dead time must always be inferior or equal to the channel + * period. + * + * \param channel Channel number. + * \param timeH Dead time value for PWMHx output. + * \param timeL Dead time value for PWMLx output. + */ +void PWMC_SetDeadTime( Pwm* pPwm, uint8_t channel, uint16_t timeH, uint16_t timeL) +{ + assert(timeH <= pPwm->PWM_CH_NUM[channel].PWM_CPRD); + assert(timeL <= pPwm->PWM_CH_NUM[channel].PWM_CPRD); + + /* If channel is disabled, write to DT */ + if ((pPwm->PWM_SR & (1 << channel)) == 0) { + + pPwm->PWM_CH_NUM[channel].PWM_DT = timeH | (timeL << 16); + } + /* Otherwise use update register */ + else { + pPwm->PWM_CH_NUM[channel].PWM_DTUPD = timeH | (timeL << 16); + } +} + +/** + * \brief Configures Syncronous channel with the given parameters. + * Beware: At this time, the channels should be disabled. + * + * \param channels Bitwise OR of Syncronous channels. + * \param updateMode Syncronous channel update mode. + * \param requestMode PDC transfer request mode. + * \param requestComparisonSelect PDC transfer request comparison selection. + */ +void PWMC_ConfigureSyncChannel( Pwm* pPwm, + uint32_t channels, + uint32_t updateMode, + uint32_t requestMode, + uint32_t requestComparisonSelect) +{ + pPwm->PWM_SCM = channels | updateMode | requestMode | requestComparisonSelect; +} + +/** + * \brief Sets the update period of the synchronous channels. + * This function writes directly to the SCUP register if the channel #0 is disabled; + * otherwise it uses the update register SCUPUPD. + * + * \param period update period. + */ +void PWMC_SetSyncChannelUpdatePeriod( Pwm* pPwm, uint8_t period) +{ + /* If channel is disabled, write to SCUP */ + if ((pPwm->PWM_SR & (1 << 0)) == 0) { + + pPwm->PWM_SCUP = period; + } + /* Otherwise use update register */ + else { + + pPwm->PWM_SCUPUPD = period; + } +} + +/** + * \brief Sets synchronous channels update unlock. + * + * Note: If the UPDM field is set to 0, writing the UPDULOCK bit to 1 + * triggers the update of the period value, the duty-cycle and + * the dead-time values of synchronous channels at the beginning + * of the next PWM period. If the field UPDM is set to 1 or 2, + * writing the UPDULOCK bit to 1 triggers only the update of + * the period value and of the dead-time values of synchronous channels. + * This bit is automatically reset when the update is done. + */ +void PWMC_SetSyncChannelUpdateUnlock( Pwm* pPwm ) +{ + pPwm->PWM_SCUC = PWM_SCUC_UPDULOCK; +} + +/** + * \brief Enables the given PWM channel. + * + * This does NOT enable the corresponding pin;this must be done in the user code. + * + * \param channel Channel number. + */ +void PWMC_EnableChannel( Pwm* pPwm, uint8_t channel) +{ + pPwm->PWM_ENA = 1 << channel; +} + +/** + * \brief Disables the given PWM channel. + * + * Beware, channel will be effectively disabled at the end of the current period. + * Application can check channel is disabled using the following wait loop: + * while ((PWM->PWM_SR & (1 << channel)) != 0); + * + * \param channel Channel number. + */ +void PWMC_DisableChannel( Pwm* pPwm, uint8_t channel) +{ + pPwm->PWM_DIS = 1 << channel; +} + +/** + * \brief Enables the period interrupt for the given PWM channel. + * + * \param channel Channel number. + */ +void PWMC_EnableChannelIt( Pwm* pPwm, uint8_t channel) +{ + pPwm->PWM_IER1 = 1 << channel; +} + +/** + * \brief Disables the period interrupt for the given PWM channel. + * + * \param channel Channel number. + */ +void PWMC_DisableChannelIt( Pwm* pPwm, uint8_t channel) +{ + pPwm->PWM_IDR1 = 1 << channel; +} + +/** + * \brief Enables the selected interrupts sources on a PWMC peripheral. + * + * \param sources1 Bitwise OR of selected interrupt sources of PWM_IER1. + * \param sources2 Bitwise OR of selected interrupt sources of PWM_IER2. + */ +void PWMC_EnableIt( Pwm* pPwm, uint32_t sources1, uint32_t sources2) +{ + pPwm->PWM_IER1 = sources1; + pPwm->PWM_IER2 = sources2; +} + +/** + * \brief Disables the selected interrupts sources on a PWMC peripheral. + * + * \param sources1 Bitwise OR of selected interrupt sources of PWM_IDR1. + * \param sources2 Bitwise OR of selected interrupt sources of PWM_IDR2. + */ +void PWMC_DisableIt( Pwm* pPwm, uint32_t sources1, uint32_t sources2) +{ + pPwm->PWM_IDR1 = sources1; + pPwm->PWM_IDR2 = sources2; +} + +/** + * \brief Sends the contents of buffer through a PWMC peripheral, using the PDC to + * take care of the transfer. + * + * Note: Duty cycle of syncronous channels can update by PDC + * when the field UPDM (Update Mode) in the PWM_SCM register is set to 2. + * + * \param pwmc Pointer to an Pwm instance. + * \param buffer Data buffer to send. + * \param length Length of the data buffer. + */ +uint8_t PWMC_WriteBuffer(Pwm *pwmc, + void *buffer, + uint32_t length) +{ + /* Check if first bank is free */ + if (pwmc->PWM_TCR == 0) { + + pwmc->PWM_TPR = (uint32_t) buffer; + pwmc->PWM_TCR = length; + pwmc->PWM_PTCR = PERIPH_PTCR_TXTEN; + return 1; + } + /* Check if second bank is free */ + else if (pwmc->PWM_TNCR == 0) { + + pwmc->PWM_TNPR = (uint32_t) buffer; + pwmc->PWM_TNCR = length; + return 1; + } + + /* No free banks */ + return 0; +} + +/** + * \brief Set PWM output override value. + * + * \param value Bitwise OR of output override value. + */ +void PWMC_SetOverrideValue( Pwm* pPwm, uint32_t value) +{ + pPwm->PWM_OOV = value; +} + +/** + * \brief Enalbe override output. + * + * \param value Bitwise OR of output selection. + * \param sync 0: enable the output asyncronously, 1: enable it syncronously + */ +void PWMC_EnableOverrideOutput( Pwm* pPwm, uint32_t value, uint32_t sync) +{ + if (sync) { + + pPwm->PWM_OSSUPD = value; + } else { + + pPwm->PWM_OSS = value; + } +} + +/** + * \brief Disalbe override output. + * + * \param value Bitwise OR of output selection. + * \param sync 0: enable the output asyncronously, 1: enable it syncronously + */ +void PWMC_DisableOverrideOutput( Pwm* pPwm, uint32_t value, uint32_t sync) +{ + if (sync) { + + pPwm->PWM_OSCUPD = value; + } else { + + pPwm->PWM_OSC = value; + } +} + +/** + * \brief Set PWM fault mode. + * + * \param mode Bitwise OR of fault mode. + */ +void PWMC_SetFaultMode( Pwm* pPwm, uint32_t mode) +{ + pPwm->PWM_FMR = mode; +} + +/** + * \brief PWM fault clear. + * + * \param fault Bitwise OR of fault to clear. + */ +void PWMC_FaultClear( Pwm* pPwm, uint32_t fault) +{ + pPwm->PWM_FCR = fault; +} + +/** + * \brief Set PWM fault protection value. + * + * \param value Bitwise OR of fault protection value. + */ +void PWMC_SetFaultProtectionValue( Pwm* pPwm, uint32_t value) +{ + pPwm->PWM_FPV = value; +} + +/** + * \brief Enable PWM fault protection. + * + * \param value Bitwise OR of FPEx[y]. + */ +void PWMC_EnableFaultProtection( Pwm* pPwm, uint32_t value) +{ + pPwm->PWM_FPE = value; +} + +/** + * \brief Configure comparison unit. + * + * \param x comparison x index + * \param value comparison x value. + * \param mode comparison x mode + */ +void PWMC_ConfigureComparisonUnit( Pwm* pPwm, uint32_t x, uint32_t value, uint32_t mode) +{ + assert(x < 8); + + /* If channel is disabled, write to CMPxM & CMPxV */ + if ((pPwm->PWM_SR & (1 << 0)) == 0) { + pPwm->PWM_CMP[x].PWM_CMPM = mode; + pPwm->PWM_CMP[x].PWM_CMPV = value; + } + /* Otherwise use update register */ + else { + pPwm->PWM_CMP[x].PWM_CMPMUPD = mode; + pPwm->PWM_CMP[x].PWM_CMPVUPD = value; + } +} + +/** + * \brief Configure event line mode. + * + * \param x Line x + * \param mode Bitwise OR of line mode selection + */ +void PWMC_ConfigureEventLineMode( Pwm* pPwm, uint32_t x, uint32_t mode) +{ + assert(x < 2); + + if (x == 0) + { + pPwm->PWM_ELMR[0] = mode; + } + else + { + if (x == 1) + { + pPwm->PWM_ELMR[1] = mode; + } + } +} diff --git a/hardware/sam/system/libsam/source/rtc.c b/hardware/sam/system/libsam/source/rtc.c new file mode 100644 index 000000000..185043678 --- /dev/null +++ b/hardware/sam/system/libsam/source/rtc.c @@ -0,0 +1,450 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** \addtogroup rtc_module Working with RTC + * The RTC driver provides the interface to configure and use the RTC + * peripheral. + * + * It manages date, time, and alarms.\n + * This timer is clocked by the 32kHz system clock, and is not impacted by + * power management settings (PMC). To be accurate, it is better to use an + * external 32kHz crystal instead of the internal 32kHz RC.\n + * + * It uses BCD format, and time can be set in AM/PM or 24h mode through a + * configuration bit in the mode register.\n + * + * To update date or time, the user has to follow these few steps : + *
    + *
  • Set UPDTIM and/or UPDCAL bit(s) in RTC_CR,
  • + *
  • Polling or IRQ on the ACKUPD bit of RTC_CR,
  • + *
  • Clear ACKUPD bit in RTC_SCCR,
  • + *
  • Update Time and/or Calendar values in RTC_TIMR/RTC_CALR (BCD format),
  • + *
  • Clear UPDTIM and/or UPDCAL bit in RTC_CR.
  • + *
+ * An alarm can be set to happen on month, date, hours, minutes or seconds, + * by setting the proper "Enable" bit of each of these fields in the Time and + * Calendar registers. + * This allows a large number of configurations to be available for the user. + * Alarm occurence can be detected even by polling or interrupt. + * + * A check of the validity of the date and time format and values written by the user is automatically done. + * Errors are reported through the Valid Entry Register. + * + * For more accurate information, please look at the RTC section of the + * Datasheet. + * + * Related files :\n + * \ref rtc.c\n + * \ref rtc.h.\n +*/ +/*@{*/ +/*@}*/ + + +/** + * \file + * + * Implementation of Real Time Clock (RTC) controller. + * + */ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "chip.h" + +#include +#include + +/*---------------------------------------------------------------------------- + * Exported functions + *----------------------------------------------------------------------------*/ + +/** + * \brief Sets the RTC in either 12 or 24 hour mode. + * + * \param mode Hour mode. + */ +extern void RTC_SetHourMode( Rtc* pRtc, uint32_t dwMode ) +{ + assert((dwMode & 0xFFFFFFFE) == 0); + + pRtc->RTC_MR = dwMode ; +} + +/** + * \brief Gets the RTC mode. + * + * \return Hour mode. + */ +extern uint32_t RTC_GetHourMode( Rtc* pRtc ) +{ + uint32_t dwMode ; + + dwMode = pRtc->RTC_MR; + dwMode &= 0xFFFFFFFE; + + return dwMode ; +} + +/** + * \brief Enables the selected interrupt sources of the RTC. + * + * \param sources Interrupt sources to enable. + */ +extern void RTC_EnableIt( Rtc* pRtc, uint32_t dwSources ) +{ + assert((dwSources & (uint32_t)(~0x1F)) == 0); + + pRtc->RTC_IER = dwSources ; +} + +/** +* \brief Disables the selected interrupt sources of the RTC. +* +* \param sources Interrupt sources to disable. +*/ +extern void RTC_DisableIt( Rtc* pRtc, uint32_t dwSources ) +{ + assert((dwSources & (uint32_t)(~0x1F)) == 0); + + pRtc->RTC_IDR = dwSources ; +} + +/** + * \brief Sets the current time in the RTC. + * + * \note In successive update operations, the user must wait at least one second + * after resetting the UPDTIM/UPDCAL bit in the RTC_CR before setting these + * bits again. Please look at the RTC section of the datasheet for detail. + * + * \param ucHour Current hour in 12 or 24 hour mode. + * \param ucMinute Current minute. + * \param ucSecond Current second. + * + * \return 0 sucess, 1 fail to set + */ +extern int RTC_SetTime( Rtc* pRtc, uint8_t ucHour, uint8_t ucMinute, uint8_t ucSecond ) +{ + uint32_t dwTime=0 ; + uint8_t ucHour_bcd ; + uint8_t ucMin_bcd ; + uint8_t ucSec_bcd ; + + /* if 12-hour mode, set AMPM bit */ + if ( (pRtc->RTC_MR & RTC_MR_HRMOD) == RTC_MR_HRMOD ) + { + if ( ucHour > 12 ) + { + ucHour -= 12 ; + dwTime |= RTC_TIMR_AMPM ; + } + } + ucHour_bcd = (ucHour%10) | ((ucHour/10)<<4) ; + ucMin_bcd = (ucMinute%10) | ((ucMinute/10)<<4) ; + ucSec_bcd = (ucSecond%10) | ((ucSecond/10)<<4) ; + + /* value overflow */ + if ( (ucHour_bcd & (uint8_t)(~RTC_HOUR_BIT_LEN_MASK)) | + (ucMin_bcd & (uint8_t)(~RTC_MIN_BIT_LEN_MASK)) | + (ucSec_bcd & (uint8_t)(~RTC_SEC_BIT_LEN_MASK))) + { + return 1 ; + } + + dwTime = ucSec_bcd | (ucMin_bcd << 8) | (ucHour_bcd<<16) ; + + pRtc->RTC_CR |= RTC_CR_UPDTIM ; + while ((pRtc->RTC_SR & RTC_SR_ACKUPD) != RTC_SR_ACKUPD) ; + pRtc->RTC_SCCR = RTC_SCCR_ACKCLR ; + pRtc->RTC_TIMR = dwTime ; + pRtc->RTC_CR &= (uint32_t)(~RTC_CR_UPDTIM) ; + pRtc->RTC_SCCR |= RTC_SCCR_SECCLR ; + + return (int)(pRtc->RTC_VER & RTC_VER_NVTIM) ; +} + +/** + * \brief Retrieves the current time as stored in the RTC in several variables. + * + * \param pucHour If not null, current hour is stored in this variable. + * \param pucMinute If not null, current minute is stored in this variable. + * \param pucSecond If not null, current second is stored in this variable. + */ +extern void RTC_GetTime( Rtc* pRtc, uint8_t *pucHour, uint8_t *pucMinute, uint8_t *pucSecond ) +{ + uint32_t dwTime ; + + /* Get current RTC time */ + dwTime = pRtc->RTC_TIMR ; + while ( dwTime != pRtc->RTC_TIMR ) + { + dwTime = pRtc->RTC_TIMR ; + } + + /* Hour */ + if ( pucHour ) + { + *pucHour = ((dwTime & 0x00300000) >> 20) * 10 + + ((dwTime & 0x000F0000) >> 16); + + if ( (dwTime & RTC_TIMR_AMPM) == RTC_TIMR_AMPM ) + { + *pucHour += 12 ; + } + } + + /* Minute */ + if ( pucMinute ) + { + *pucMinute = ((dwTime & 0x00007000) >> 12) * 10 + + ((dwTime & 0x00000F00) >> 8); + } + + /* Second */ + if ( pucSecond ) + { + *pucSecond = ((dwTime & 0x00000070) >> 4) * 10 + + (dwTime & 0x0000000F); + } +} + +/** + * \brief Sets a time alarm on the RTC. + * The match is performed only on the provided variables; + * Setting all pointers to 0 disables the time alarm. + * + * \note In AM/PM mode, the hour value must have bit #7 set for PM, cleared for + * AM (as expected in the time registers). + * + * \param pucHour If not null, the time alarm will hour-match this value. + * \param pucMinute If not null, the time alarm will minute-match this value. + * \param pucSecond If not null, the time alarm will second-match this value. + * + * \return 0 success, 1 fail to set + */ +extern int RTC_SetTimeAlarm( Rtc* pRtc, uint8_t *pucHour, uint8_t *pucMinute, uint8_t *pucSecond ) +{ + uint32_t dwAlarm=0 ; + + /* Hour */ + if ( pucHour ) + { + dwAlarm |= RTC_TIMALR_HOUREN | ((*pucHour / 10) << 20) | ((*pucHour % 10) << 16); + } + + /* Minute */ + if ( pucMinute ) + { + dwAlarm |= RTC_TIMALR_MINEN | ((*pucMinute / 10) << 12) | ((*pucMinute % 10) << 8); + } + + /* Second */ + if ( pucSecond ) + { + dwAlarm |= RTC_TIMALR_SECEN | ((*pucSecond / 10) << 4) | (*pucSecond % 10); + } + + pRtc->RTC_TIMALR = dwAlarm ; + + return (int)(pRtc->RTC_VER & RTC_VER_NVTIMALR) ; +} + +/** + * \brief Retrieves the current year, month and day from the RTC. + * Month, day and week values are numbered starting at 1. + * + * \param pYwear Current year (optional). + * \param pucMonth Current month (optional). + * \param pucDay Current day (optional). + * \param pucWeek Current day in current week (optional). + */ +extern void RTC_GetDate( Rtc* pRtc, uint16_t *pwYear, uint8_t *pucMonth, uint8_t *pucDay, uint8_t *pucWeek ) +{ + uint32_t dwDate ; + + /* Get current date (multiple reads are necessary to insure a stable value) */ + do + { + dwDate = pRtc->RTC_CALR ; + } + while ( dwDate != pRtc->RTC_CALR ) ; + + /* Retrieve year */ + if ( pwYear ) + { + *pwYear = (((dwDate >> 4) & 0x7) * 1000) + + ((dwDate & 0xF) * 100) + + (((dwDate >> 12) & 0xF) * 10) + + ((dwDate >> 8) & 0xF); + } + + /* Retrieve month */ + if ( pucMonth ) + { + *pucMonth = (((dwDate >> 20) & 1) * 10) + ((dwDate >> 16) & 0xF); + } + + /* Retrieve day */ + if ( pucDay ) + { + *pucDay = (((dwDate >> 28) & 0x3) * 10) + ((dwDate >> 24) & 0xF); + } + + /* Retrieve week */ + if ( pucWeek ) + { + *pucWeek = ((dwDate >> 21) & 0x7); + } +} + +/** + * \brief Sets the current year, month and day in the RTC. + * Month, day and week values must be numbered starting from 1. + * + * \note In successive update operations, the user must wait at least one second + * after resetting the UPDTIM/UPDCAL bit in the RTC_CR before setting these + * bits again. Please look at the RTC section of the datasheet for detail. + * + * \param wYear Current year. + * \param ucMonth Current month. + * \param ucDay Current day. + * \param ucWeek Day number in current week. + * + * \return 0 success, 1 fail to set + */ +extern int RTC_SetDate( Rtc* pRtc, uint16_t wYear, uint8_t ucMonth, uint8_t ucDay, uint8_t ucWeek ) +{ + uint32_t wDate ; + uint8_t ucCent_bcd ; + uint8_t ucYear_bcd ; + uint8_t ucMonth_bcd ; + uint8_t ucDay_bcd ; + uint8_t ucWeek_bcd ; + + ucCent_bcd = ((wYear/100)%10) | ((wYear/1000)<<4); + ucYear_bcd = (wYear%10) | (((wYear/10)%10)<<4); + ucMonth_bcd = ((ucMonth%10) | (ucMonth/10)<<4); + ucDay_bcd = ((ucDay%10) | (ucDay/10)<<4); + ucWeek_bcd = ((ucWeek%10) | (ucWeek/10)<<4); + + /* value over flow */ + if ( (ucCent_bcd & (uint8_t)(~RTC_CENT_BIT_LEN_MASK)) | + (ucYear_bcd & (uint8_t)(~RTC_YEAR_BIT_LEN_MASK)) | + (ucMonth_bcd & (uint8_t)(~RTC_MONTH_BIT_LEN_MASK)) | + (ucWeek_bcd & (uint8_t)(~RTC_WEEK_BIT_LEN_MASK)) | + (ucDay_bcd & (uint8_t)(~RTC_DATE_BIT_LEN_MASK)) + ) + { + return 1 ; + } + + + /* Convert values to date register value */ + wDate = ucCent_bcd | + (ucYear_bcd << 8) | + (ucMonth_bcd << 16) | + (ucWeek_bcd << 21) | + (ucDay_bcd << 24); + + /* Update calendar register */ + pRtc->RTC_CR |= RTC_CR_UPDCAL ; + while ((pRtc->RTC_SR & RTC_SR_ACKUPD) != RTC_SR_ACKUPD) ; + + pRtc->RTC_SCCR = RTC_SCCR_ACKCLR; + pRtc->RTC_CALR = wDate ; + pRtc->RTC_CR &= (uint32_t)(~RTC_CR_UPDCAL) ; + pRtc->RTC_SCCR |= RTC_SCCR_SECCLR; /* clear SECENV in SCCR */ + + return (int)(pRtc->RTC_VER & RTC_VER_NVCAL) ; +} + +/** + * \brief Sets a date alarm in the RTC. + * The alarm will match only the provided values; + * Passing a null-pointer disables the corresponding field match. + * + * \param pucMonth If not null, the RTC alarm will month-match this value. + * \param pucDay If not null, the RTC alarm will day-match this value. + * + * \return 0 success, 1 fail to set + */ +extern int RTC_SetDateAlarm( Rtc* pRtc, uint8_t *pucMonth, uint8_t *pucDay ) +{ + uint32_t dwAlarm ; + + dwAlarm = ((pucMonth) || (pucDay)) ? (0) : (0x01010000); + + /* Compute alarm field value */ + if ( pucMonth ) + { + dwAlarm |= RTC_CALALR_MTHEN | ((*pucMonth / 10) << 20) | ((*pucMonth % 10) << 16); + } + + if ( pucDay ) + { + dwAlarm |= RTC_CALALR_DATEEN | ((*pucDay / 10) << 28) | ((*pucDay % 10) << 24); + } + + /* Set alarm */ + pRtc->RTC_CALALR = dwAlarm ; + + return (int)(pRtc->RTC_VER & RTC_VER_NVCALALR) ; +} + +/** + * \brief Clear flag bits of status clear command register in the RTC. + * + * \param mask Bits mask of cleared events + */ +extern void RTC_ClearSCCR( Rtc* pRtc, uint32_t dwMask ) +{ + /* Clear all flag bits in status clear command register */ + dwMask &= RTC_SCCR_ACKCLR | RTC_SCCR_ALRCLR | RTC_SCCR_SECCLR | RTC_SCCR_TIMCLR | RTC_SCCR_CALCLR ; + + pRtc->RTC_SCCR = dwMask ; +} + +/** + * \brief Get flag bits of status register in the RTC. + * + * \param mask Bits mask of Status Register + * + * \return Status register & mask + */ +extern uint32_t RTC_GetSR( Rtc* pRtc, uint32_t dwMask ) +{ + uint32_t dwEvent ; + + dwEvent = pRtc->RTC_SR ; + + return (dwEvent & dwMask) ; +} + diff --git a/hardware/sam/system/libsam/source/rtt.c b/hardware/sam/system/libsam/source/rtt.c new file mode 100644 index 000000000..84e7c5121 --- /dev/null +++ b/hardware/sam/system/libsam/source/rtt.c @@ -0,0 +1,132 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** \addtogroup rtt_module Working with RTT + * The RTT driver provides the interface to configure and use the RTT + * peripheral. + * + * The Real-time Timer is used to count elapsed seconds.\n + * This timer is clocked by the 32kHz system clock divided by a programmable + * 16-bit balue. To be accurate, it is better to use an + * external 32kHz crystal instead of the internal 32kHz RC.\n + * + * To count elapsed seconds, the user could follow these few steps: + *
    + *
  • Programming PTPRES in RTT_MR to feeding the timer with a 1Hz signal.
  • + *
  • Writing the bit RTTRST in RTT_MR to restart the timer with new settings.
  • + *
+ * + * An alarm can be set to happen on second by setting alarm value in RTT_AR. + * Alarm occurence can be detected by polling or interrupt. + * + * For more accurate information, please look at the RTT section of the + * Datasheet. + * + * Related files :\n + * \ref rtt.c\n + * \ref rtt.h.\n + */ +/*@{*/ +/*@}*/ + +/** + * \file + * + * Implementation of Real Time Timer (RTT) controller. + * + */ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ +#include "chip.h" + +#include + +/*---------------------------------------------------------------------------- + * Exported functions + *----------------------------------------------------------------------------*/ + +/** + * \brief Changes the prescaler value of the given RTT and restarts it. + * + * \note This function disables RTT interrupt sources. + * + * \param rtt Pointer to a Rtt instance. + * \param prescaler Prescaler value for the RTT. + */ +void RTT_SetPrescaler(Rtt *rtt, uint16_t prescaler) +{ + rtt->RTT_MR = (prescaler | RTT_MR_RTTRST); +} + +/** + * \brief Returns the current value of the RTT timer value. + * + * \param rtt Pointer to a Rtt instance. + */ +uint32_t RTT_GetTime(Rtt *rtt) +{ + return rtt->RTT_VR; +} + +/** + * \brief Enables the specified RTT interrupt sources. + * + * \param rtt Pointer to a Rtt instance. + * \param sources Bitmask of interrupts to enable. + */ +void RTT_EnableIT(Rtt *rtt, uint32_t sources) +{ + assert( (sources & 0x0004FFFF) == 0 ) ; + rtt->RTT_MR |= sources; +} + +/** + * \brief Returns the status register value of the given RTT. + * + * \param rtt Pointer to an Rtt instance. + */ +uint32_t RTT_GetStatus(Rtt *rtt) +{ + return rtt->RTT_SR; +} + +/** + * \brief Configures the RTT to generate an alarm at the given time. + * + * \param pRtt Pointer to an Rtt instance. + * \param time Alarm time. + */ +void RTT_SetAlarm(Rtt *pRtt, uint32_t time) +{ + assert(time > 0); + + pRtt->RTT_AR = time - 1; +} diff --git a/hardware/sam/system/libsam/source/spi.c b/hardware/sam/system/libsam/source/spi.c new file mode 100644 index 000000000..058f2cd9b --- /dev/null +++ b/hardware/sam/system/libsam/source/spi.c @@ -0,0 +1,352 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** \addtogroup spi_module Working with SPI + * The SPI driver provides the interface to configure and use the SPI + * peripheral. + * + * The Serial Peripheral Interface (SPI) circuit is a synchronous serial + * data link that provides communication with external devices in Master + * or Slave Mode. + * + * To use the SPI, the user has to follow these few steps: + * -# Enable the SPI pins required by the application (see pio.h). + * -# Configure the SPI using the \ref SPI_Configure(). This enables the + * peripheral clock. The mode register is loaded with the given value. + * -# Configure all the necessary chip selects with \ref SPI_ConfigureNPCS(). + * -# Enable the SPI by calling \ref SPI_Enable(). + * -# Send/receive data using \ref SPI_Write() and \ref SPI_Read(). Note that \ref SPI_Read() + * must be called after \ref SPI_Write() to retrieve the last value read. + * -# Send/receive data using the PDC with the \ref SPI_WriteBuffer() and + * \ref SPI_ReadBuffer() functions. + * -# Disable the SPI by calling \ref SPI_Disable(). + * + * For more accurate information, please look at the SPI section of the + * Datasheet. + * + * Related files :\n + * \ref spi.c\n + * \ref spi.h.\n +*/ +/*@{*/ +/*@}*/ + +/** + * \file + * + * Implementation of Serial Peripheral Interface (SPI) controller. + * + */ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "chip.h" + +#include + +/*---------------------------------------------------------------------------- + * Exported functions + *----------------------------------------------------------------------------*/ + +/** + * \brief Enables a SPI peripheral. + * + * \param spi Pointer to an Spi instance. + */ +extern void SPI_Enable( Spi* spi ) +{ + spi->SPI_CR = SPI_CR_SPIEN ; +} + +/** + * \brief Disables a SPI peripheral. + * + * \param spi Pointer to an Spi instance. + */ +extern void SPI_Disable( Spi* spi ) +{ + spi->SPI_CR = SPI_CR_SPIDIS ; +} + +/** + * \brief Enables one or more interrupt sources of a SPI peripheral. + * + * \param spi Pointer to an Spi instance. + * \param sources Bitwise OR of selected interrupt sources. + */ +extern void SPI_EnableIt( Spi* spi, uint32_t dwSources ) +{ + spi->SPI_IER = dwSources ; +} + +/** + * \brief Disables one or more interrupt sources of a SPI peripheral. + * + * \param spi Pointer to an Spi instance. + * \param sources Bitwise OR of selected interrupt sources. + */ +extern void SPI_DisableIt( Spi* spi, uint32_t dwSources ) +{ + spi->SPI_IDR = dwSources ; +} + +/** + * \brief Configures a SPI peripheral as specified. The configuration can be computed + * using several macros (see \ref spi_configuration_macros). + * + * \param spi Pointer to an Spi instance. + * \param id Peripheral ID of the SPI. + * \param configuration Value of the SPI configuration register. + */ +extern void SPI_Configure( Spi* spi, uint32_t dwId, uint32_t dwConfiguration ) +{ + PMC_EnablePeripheral( dwId ) ; + spi->SPI_CR = SPI_CR_SPIDIS ; + + /* Execute a software reset of the SPI twice */ + spi->SPI_CR = SPI_CR_SWRST ; + spi->SPI_CR = SPI_CR_SWRST ; + spi->SPI_MR = dwConfiguration ; +} + + +/** + * \brief Configures a chip select of a SPI peripheral. The chip select configuration + * is computed using several macros (see \ref spi_configuration_macros). + * + * \param spi Pointer to an Spi instance. + * \param npcs Chip select to configure (0, 1, 2 or 3). + * \param configuration Desired chip select configuration. + */ +void SPI_ConfigureNPCS( Spi* spi, uint32_t dwNpcs, uint32_t dwConfiguration ) +{ + spi->SPI_CSR[dwNpcs] = dwConfiguration ; +} + +/** + * \brief Get the current status register of the given SPI peripheral. + * \note This resets the internal value of the status register, so further + * read may yield different values. + * \param spi Pointer to a Spi instance. + * \return SPI status register. + */ +extern uint32_t SPI_GetStatus( Spi* spi ) +{ + return spi->SPI_SR ; +} + +/** + * \brief Reads and returns the last word of data received by a SPI peripheral. This + * method must be called after a successful SPI_Write call. + * + * \param spi Pointer to an Spi instance. + * + * \return readed data. + */ +extern uint32_t SPI_Read( Spi* spi ) +{ + while ( (spi->SPI_SR & SPI_SR_RDRF) == 0 ) ; + + return spi->SPI_RDR & 0xFFFF ; +} + +/** + * \brief Sends data through a SPI peripheral. If the SPI is configured to use a fixed + * peripheral select, the npcs value is meaningless. Otherwise, it identifies + * the component which shall be addressed. + * + * \param spi Pointer to an Spi instance. + * \param npcs Chip select of the component to address (0, 1, 2 or 3). + * \param data Word of data to send. + */ +extern void SPI_Write( Spi* spi, uint32_t dwNpcs, uint16_t wData ) +{ + /* Send data */ + while ( (spi->SPI_SR & SPI_SR_TXEMPTY) == 0 ) ; + spi->SPI_TDR = wData | SPI_PCS( dwNpcs ) ; + while ( (spi->SPI_SR & SPI_SR_TDRE) == 0 ) ; +} + +/** + * \brief Check if SPI transfer finish. + * + * \param spi Pointer to an Spi instance. + * + * \return Returns 1 if there is no pending write operation on the SPI; otherwise + * returns 0. + */ +extern uint32_t SPI_IsFinished( Spi* spi ) +{ + return ((spi->SPI_SR & SPI_SR_TXEMPTY) != 0) ; +} + +#if (defined _SAM3S_) || (defined _SAM3S8_) || (defined _SAM3N_) +/** + * \brief Enable Spi PDC transmit + * \param spi Pointer to an Spi instance. +*/ +extern void SPI_PdcEnableTx( Spi* spi ) +{ + spi->SPI_PTCR = SPI_PTCR_TXTEN ; +} + +/** + * \brief Disable Spi PDC transmit + * \param spi Pointer to an Spi instance. +*/ +extern void SPI_PdcDisableTx( Spi* spi ) +{ + spi->SPI_PTCR = SPI_PTCR_TXTDIS ; +} + +/** + * \brief Enable Spi PDC receive + * \param spi Pointer to an Spi instance. +*/ +extern void SPI_PdcEnableRx( Spi* spi ) +{ + spi->SPI_PTCR = SPI_PTCR_RXTEN ; +} + +/** + * \brief Disable Spi PDC receive + * \param spi Pointer to an Spi instance. +*/ +extern void SPI_PdcDisableRx( Spi* spi ) +{ + spi->SPI_PTCR = SPI_PTCR_RXTDIS ; +} + +/** + * \brief Set PDC transmit and next transmit buffer address and size. + * + * \param spi Pointer to an Spi instance. + * \param txBuf PDC transmit buffer address. + * \param txCount Length in bytes of the transmit buffer. + * \param txNextBuf PDC next transmit buffer address. + * \param txNextCount Length in bytes of the next transmit buffer. + */ +extern void SPI_PdcSetTx( Spi* spi, void* pvTxBuf, uint32_t dwTxCount, void* pvTxNextBuf, uint32_t dwTxNextCount ) +{ + spi->SPI_TPR = (uint32_t)pvTxBuf ; + spi->SPI_TCR = dwTxCount ; + spi->SPI_TNPR = (uint32_t)pvTxNextBuf ; + spi->SPI_TNCR = dwTxNextCount ; +} + +/** + * \brief Set PDC receive and next receive buffer address and size. + * + * \param spi Pointer to an Spi instance. + * \param rxBuf PDC receive buffer address. + * \param rxCount Length in bytes of the receive buffer. + * \param rxNextBuf PDC next receive buffer address. + * \param rxNextCount Length in bytes of the next receive buffer. + */ +extern void SPI_PdcSetRx( Spi* spi, void* pvRxBuf, uint32_t dwRxCount, void* pvRxNextBuf, uint32_t dwRxNextCount ) +{ + spi->SPI_RPR = (uint32_t)pvRxBuf ; + spi->SPI_RCR = dwRxCount ; + spi->SPI_RNPR = (uint32_t)pvRxNextBuf ; + spi->SPI_RNCR = dwRxNextCount ; +} + +/** + * \brief Sends the contents of buffer through a SPI peripheral, using the PDC to + * take care of the transfer. + * + * \param spi Pointer to an Spi instance. + * \param buffer Data buffer to send. + * \param length Length of the data buffer. + */ +extern uint32_t SPI_WriteBuffer( Spi* spi, void* pvBuffer, uint32_t dwLength ) +{ + /* Check if first bank is free */ + if ( spi->SPI_TCR == 0 ) + { + spi->SPI_TPR = (uint32_t)pvBuffer ; + spi->SPI_TCR = dwLength ; + spi->SPI_PTCR = PERIPH_PTCR_TXTEN ; + + return 1 ; + } + /* Check if second bank is free */ + else + { + if ( spi->SPI_TNCR == 0 ) + { + spi->SPI_TNPR = (uint32_t)pvBuffer ; + spi->SPI_TNCR = dwLength ; + + return 1 ; + } + } + + /* No free banks */ + return 0 ; +} + +/** + * \brief Reads data from a SPI peripheral until the provided buffer is filled. This + * method does NOT need to be called after SPI_Write or SPI_WriteBuffer. + * + * \param spi Pointer to an Spi instance. + * \param buffer Data buffer to store incoming bytes. + * \param length Length in bytes of the data buffer. + */ +extern uint32_t SPI_ReadBuffer( Spi* spi, void *pvBuffer, uint32_t dwLength ) +{ + /* Check if the first bank is free */ + if ( spi->SPI_RCR == 0 ) + { + spi->SPI_RPR = (uint32_t)pvBuffer ; + spi->SPI_RCR = dwLength ; + spi->SPI_PTCR = PERIPH_PTCR_RXTEN ; + + return 1 ; + } + /* Check if second bank is free */ + else + { + if ( spi->SPI_RNCR == 0 ) + { + spi->SPI_RNPR = (uint32_t)pvBuffer ; + spi->SPI_RNCR = dwLength ; + return 1 ; + } + } + + /* No free bank */ + return 0 ; +} + +#endif /* (defined _SAM3S_) || (defined _SAM3S8_) || (defined _SAM3N_) */ + diff --git a/hardware/sam/system/libsam/source/tc.c b/hardware/sam/system/libsam/source/tc.c new file mode 100644 index 000000000..35439db5a --- /dev/null +++ b/hardware/sam/system/libsam/source/tc.c @@ -0,0 +1,175 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** + * \file + * + * Implementation of Timer Counter (TC). + * + */ + +/*------------------------------------------------------------------------------ + * Headers + *------------------------------------------------------------------------------*/ + +#include "chip.h" + +#include + +/*------------------------------------------------------------------------------ + * Global functions + *------------------------------------------------------------------------------*/ + +/** + * \brief Configures a Timer Counter Channel + * + * Configures a Timer Counter to operate in the given mode. Timer is stopped + * after configuration and must be restarted with TC_Start(). All the + * interrupts of the timer are also disabled. + * + * \param pTc Pointer to a Tc instance. + * \param channel Channel number. + * \param mode Operating mode (TC_CMR value). + */ +extern void TC_Configure( Tc *pTc, uint32_t dwChannel, uint32_t dwMode ) +{ + TcChannel* pTcCh ; + + assert( dwChannel < (sizeof( pTc->TC_CHANNEL )/sizeof( pTc->TC_CHANNEL[0] )) ) ; + pTcCh = pTc->TC_CHANNEL+dwChannel ; + + /* Disable TC clock */ + pTcCh->TC_CCR = TC_CCR_CLKDIS ; + + /* Disable interrupts */ + pTcCh->TC_IDR = 0xFFFFFFFF ; + + /* Clear status register */ + pTcCh->TC_SR ; + + /* Set mode */ + pTcCh->TC_CMR = dwMode ; +} + +/** + * \brief Reset and Start the TC Channel + * + * Enables the timer clock and performs a software reset to start the counting. + * + * \param pTc Pointer to a Tc instance. + * \param dwChannel Channel number. + */ +extern void TC_Start( Tc *pTc, uint32_t dwChannel ) +{ + TcChannel* pTcCh ; + + assert( dwChannel < (sizeof( pTc->TC_CHANNEL )/sizeof( pTc->TC_CHANNEL[0] )) ) ; + + pTcCh = pTc->TC_CHANNEL+dwChannel ; + pTcCh->TC_CCR = TC_CCR_CLKEN | TC_CCR_SWTRG ; +} + +/** + * \brief Stop TC Channel + * + * Disables the timer clock, stopping the counting. + * + * \param pTc Pointer to a Tc instance. + * \param dwChannel Channel number. + */ +extern void TC_Stop(Tc *pTc, uint32_t dwChannel ) +{ + TcChannel* pTcCh ; + + assert( dwChannel < (sizeof( pTc->TC_CHANNEL )/sizeof( pTc->TC_CHANNEL[0] )) ) ; + + pTcCh = pTc->TC_CHANNEL+dwChannel ; + pTcCh->TC_CCR = TC_CCR_CLKDIS ; +} + +/** + * \brief Find best MCK divisor + * + * Finds the best MCK divisor given the timer frequency and MCK. The result + * is guaranteed to satisfy the following equation: + * \code + * (MCK / (DIV * 65536)) <= freq <= (MCK / DIV) + * \endcode + * with DIV being the highest possible value. + * + * \param dwFreq Desired timer frequency. + * \param dwMCk Master clock frequency. + * \param dwDiv Divisor value. + * \param dwTcClks TCCLKS field value for divisor. + * \param dwBoardMCK Board clock frequency. + * + * \return 1 if a proper divisor has been found, otherwise 0. + */ +extern uint32_t TC_FindMckDivisor( uint32_t dwFreq, uint32_t dwMCk, uint32_t *dwDiv, uint32_t *dwTcClks, uint32_t dwBoardMCK ) +{ + const uint32_t adwDivisors[5] = { 2, 8, 32, 128, dwBoardMCK / 32768 } ; + + uint32_t dwIndex = 0 ; + + /* Satisfy lower bound */ + while ( dwFreq < ((dwMCk / adwDivisors[dwIndex]) / 65536) ) + { + dwIndex++ ; + + /* If no divisor can be found, return 0 */ + if ( dwIndex == (sizeof( adwDivisors )/sizeof( adwDivisors[0] )) ) + { + return 0 ; + } + } + + /* Try to maximize DIV while satisfying upper bound */ + while ( dwIndex < 4 ) + { + + if ( dwFreq > (dwMCk / adwDivisors[dwIndex + 1]) ) + { + break ; + } + dwIndex++ ; + } + + /* Store results */ + if ( dwDiv ) + { + *dwDiv = adwDivisors[dwIndex] ; + } + if ( dwTcClks ) + { + *dwTcClks = dwIndex ; + } + + return 1 ; +} + diff --git a/hardware/sam/system/libsam/source/timetick.c b/hardware/sam/system/libsam/source/timetick.c new file mode 100644 index 000000000..8522e20a1 --- /dev/null +++ b/hardware/sam/system/libsam/source/timetick.c @@ -0,0 +1,118 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** + * \file + * Implement simple system tick usage. + */ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "chip.h" + +/*---------------------------------------------------------------------------- + * Local variables + *----------------------------------------------------------------------------*/ + +/** Tick Counter united by ms */ +static volatile uint32_t _dwTickCount=0 ; + +/*---------------------------------------------------------------------------- + * Exported Functions + *----------------------------------------------------------------------------*/ + +/** + * \brief Handler for Sytem Tick interrupt. + */ +extern void TimeTick_Increment( void ) +{ + _dwTickCount++ ; +} + +/** + * \brief Configures the SAM3 SysTick & reset tickCount. + * Systick interrupt handler will generates 1ms interrupt and increase a + * tickCount. + * \param dwNew_MCK Current master clock. + */ +extern uint32_t TimeTick_Configure( uint32_t dwNew_MCK ) +{ + _dwTickCount = 0 ; + + return SysTick_Config( dwNew_MCK/1000 ) ; +} + +/** + * \brief Get current Tick Count, in ms. + */ +extern uint32_t GetTickCount( void ) +{ + return _dwTickCount ; +} + +/** + * \brief Sync Wait for several ms + */ +extern void Wait( volatile uint32_t dwMs ) +{ + uint32_t dwStart ; + uint32_t dwCurrent ; + + dwStart = _dwTickCount ; + do + { + dwCurrent = _dwTickCount ; + } while ( dwCurrent - dwStart < dwMs ) ; +} + +/** + * \brief Sync Sleep for several ms + */ +extern void Sleep( volatile uint32_t dwMs ) +{ + uint32_t dwStart ; + uint32_t dwCurrent ; + + dwStart = _dwTickCount ; + + do + { + dwCurrent = _dwTickCount ; + + if ( dwCurrent - dwStart > dwMs ) + { + break ; + } + + __WFI() ; + } while( 1 ) ; +} + diff --git a/hardware/sam/system/libsam/source/twi.c b/hardware/sam/system/libsam/source/twi.c new file mode 100644 index 000000000..44287680c --- /dev/null +++ b/hardware/sam/system/libsam/source/twi.c @@ -0,0 +1,380 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** \addtogroup twi_module Working with TWI + * The TWI driver provides the interface to configure and use the TWI + * peripheral. + * + * \section Usage + *
    + *
  • Configures a TWI peripheral to operate in master mode, at the given + * frequency (in Hz) using TWI_Configure().
  • + *
  • Sends a STOP condition on the TWI using TWI_Stop().
  • + *
  • Starts a read operation on the TWI bus with the specified slave using + * TWI_StartRead(). Data must then be read using TWI_ReadByte() whenever + * a byte is available (poll using TWI_ByteReceived()).
  • + *
  • Starts a write operation on the TWI to access the selected slave using + * TWI_StartWrite(). A byte of data must be provided to start the write; + * other bytes are written next.
  • + *
  • Sends a byte of data to one of the TWI slaves on the bus using TWI_WriteByte(). + * This function must be called once before TWI_StartWrite() with the first byte of data + * to send, then it shall be called repeatedly after that to send the remaining bytes.
  • + *
  • Check if a byte has been received and can be read on the given TWI + * peripheral using TWI_ByteReceived().< + * Check if a byte has been sent using TWI_ByteSent().
  • + *
  • Check if the current transmission is complete (the STOP has been sent) + * using TWI_TransferComplete().
  • + *
  • Enables & disable the selected interrupts sources on a TWI peripheral + * using TWI_EnableIt() and TWI_DisableIt().
  • + *
  • Get current status register of the given TWI peripheral using + * TWI_GetStatus(). Get current status register of the given TWI peripheral, but + * masking interrupt sources which are not currently enabled using + * TWI_GetMaskedStatus().
  • + *
+ * For more accurate information, please look at the TWI section of the + * Datasheet. + * + * Related files :\n + * \ref twi.c\n + * \ref twi.h.\n +*/ +/*@{*/ +/*@}*/ + +/** + * \file + * + * Implementation of Two Wire Interface (TWI). + * + */ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "chip.h" + +#include +#include + +/*---------------------------------------------------------------------------- + * Exported functions + *----------------------------------------------------------------------------*/ + +/** + * \brief Configures a TWI peripheral to operate in master mode, at the given + * frequency (in Hz). The duty cycle of the TWI clock is set to 50%. + * \param pTwi Pointer to an Twi instance. + * \param twck Desired TWI clock frequency. + * \param mck Master clock frequency. + */ +void TWI_ConfigureMaster( Twi* pTwi, uint32_t dwTwCk, uint32_t dwMCk ) +{ + uint32_t dwCkDiv = 0 ; + uint32_t dwClDiv ; + uint32_t dwOk = 0 ; + + assert( pTwi ) ; + + /* SVEN: TWI Slave Mode Enabled */ + pTwi->TWI_CR = TWI_CR_SVEN ; + /* Reset the TWI */ + pTwi->TWI_CR = TWI_CR_SWRST ; + pTwi->TWI_RHR ; + + /* TWI Slave Mode Disabled, TWI Master Mode Disabled. */ + pTwi->TWI_CR = TWI_CR_SVDIS ; + pTwi->TWI_CR = TWI_CR_MSDIS ; + + /* Set master mode */ + pTwi->TWI_CR = TWI_CR_MSEN ; + + /* Configure clock */ + while ( !dwOk ) + { + dwClDiv = ((dwMCk / (2 * dwTwCk)) - 4) / (1<TWI_CWGR = 0 ; + pTwi->TWI_CWGR = (dwCkDiv << 16) | (dwClDiv << 8) | dwClDiv ; +} + +/** + * \brief Configures a TWI peripheral to operate in slave mode. + * \param pTwi Pointer to an Twi instance. + * \param slaveAddress Slave address. + */ +void TWI_ConfigureSlave(Twi *pTwi, uint8_t slaveAddress) +{ + uint32_t i; + + /* TWI software reset */ + pTwi->TWI_CR = TWI_CR_SWRST; + pTwi->TWI_RHR; + + /* Wait at least 10 ms */ + for (i=0; i < 1000000; i++); + + /* TWI Slave Mode Disabled, TWI Master Mode Disabled*/ + pTwi->TWI_CR = TWI_CR_SVDIS | TWI_CR_MSDIS; + + /* Configure slave address. */ + pTwi->TWI_SMR = 0; + pTwi->TWI_SMR = TWI_SMR_SADR(slaveAddress); + + /* SVEN: TWI Slave Mode Enabled */ + pTwi->TWI_CR = TWI_CR_SVEN; + + /* Wait at least 10 ms */ + for (i=0; i < 1000000; i++); + assert( (pTwi->TWI_CR & TWI_CR_SVDIS)!= TWI_CR_SVDIS ) ; +} + +/** + * \brief Sends a STOP condition on the TWI. + * \param pTwi Pointer to an Twi instance. + */ +void TWI_Stop( Twi *pTwi ) +{ + assert( pTwi != NULL ) ; + + pTwi->TWI_CR = TWI_CR_STOP; +} + +/** + * \brief Starts a read operation on the TWI bus with the specified slave, it returns + * immediately. Data must then be read using TWI_ReadByte() whenever a byte is + * available (poll using TWI_ByteReceived()). + * \param pTwi Pointer to an Twi instance. + * \param address Slave address on the bus. + * \param iaddress Optional internal address bytes. + * \param isize Number of internal address bytes. + */ +void TWI_StartRead( + Twi *pTwi, + uint8_t address, + uint32_t iaddress, + uint8_t isize) +{ + assert( pTwi != NULL ) ; + assert( (address & 0x80) == 0 ) ; + assert( (iaddress & 0xFF000000) == 0 ) ; + assert( isize < 4 ) ; + + /* Set slave address and number of internal address bytes. */ + pTwi->TWI_MMR = 0; + pTwi->TWI_MMR = (isize << 8) | TWI_MMR_MREAD | (address << 16); + + /* Set internal address bytes */ + pTwi->TWI_IADR = 0; + pTwi->TWI_IADR = iaddress; + + /* Send START condition */ + pTwi->TWI_CR = TWI_CR_START; +} + +/** + * \brief Reads a byte from the TWI bus. The read operation must have been started + * using TWI_StartRead() and a byte must be available (check with TWI_ByteReceived()). + * \param pTwi Pointer to an Twi instance. + * \return byte read. + */ +uint8_t TWI_ReadByte(Twi *pTwi) +{ + assert( pTwi != NULL ) ; + + return pTwi->TWI_RHR; +} + +/** + * \brief Sends a byte of data to one of the TWI slaves on the bus. + * \note This function must be called once before TWI_StartWrite() with + * the first byte of data to send, then it shall be called repeatedly + * after that to send the remaining bytes. + * \param pTwi Pointer to an Twi instance. + * \param byte Byte to send. + */ +void TWI_WriteByte(Twi *pTwi, uint8_t byte) +{ + assert( pTwi != NULL ) ; + + pTwi->TWI_THR = byte; +} + +/** + * \brief Starts a write operation on the TWI to access the selected slave, then + * returns immediately. A byte of data must be provided to start the write; + * other bytes are written next. + * after that to send the remaining bytes. + * \param pTwi Pointer to an Twi instance. + * \param address Address of slave to acccess on the bus. + * \param iaddress Optional slave internal address. + * \param isize Number of internal address bytes. + * \param byte First byte to send. + */ +void TWI_StartWrite( + Twi *pTwi, + uint8_t address, + uint32_t iaddress, + uint8_t isize, + uint8_t byte) +{ + assert( pTwi != NULL ) ; + assert( (address & 0x80) == 0 ) ; + assert( (iaddress & 0xFF000000) == 0 ) ; + assert( isize < 4 ) ; + + /* Set slave address and number of internal address bytes. */ + pTwi->TWI_MMR = 0; + pTwi->TWI_MMR = (isize << 8) | (address << 16); + + /* Set internal address bytes. */ + pTwi->TWI_IADR = 0; + pTwi->TWI_IADR = iaddress; + + /* Write first byte to send.*/ + TWI_WriteByte(pTwi, byte); +} + +/** + * \brief Check if a byte have been receiced from TWI. + * \param pTwi Pointer to an Twi instance. + * \return 1 if a byte has been received and can be read on the given TWI + * peripheral; otherwise, returns 0. This function resets the status register. + */ +uint8_t TWI_ByteReceived(Twi *pTwi) +{ + return ((pTwi->TWI_SR & TWI_SR_RXRDY) == TWI_SR_RXRDY); +} + +/** + * \brief Check if a byte have been sent to TWI. + * \param pTwi Pointer to an Twi instance. + * \return 1 if a byte has been sent so another one can be stored for + * transmission; otherwise returns 0. This function clears the status register. + */ +uint8_t TWI_ByteSent(Twi *pTwi) +{ + return ((pTwi->TWI_SR & TWI_SR_TXRDY) == TWI_SR_TXRDY); +} + +/** + * \brief Check if current transmission is complet. + * \param pTwi Pointer to an Twi instance. + * \return 1 if the current transmission is complete (the STOP has been sent); + * otherwise returns 0. + */ +uint8_t TWI_TransferComplete(Twi *pTwi) +{ + return ((pTwi->TWI_SR & TWI_SR_TXCOMP) == TWI_SR_TXCOMP); +} + +/** + * \brief Enables the selected interrupts sources on a TWI peripheral. + * \param pTwi Pointer to an Twi instance. + * \param sources Bitwise OR of selected interrupt sources. + */ +void TWI_EnableIt(Twi *pTwi, uint32_t sources) +{ + assert( pTwi != NULL ) ; + assert( (sources & 0xFFFFF088) == 0 ) ; + + pTwi->TWI_IER = sources; +} + +/** + * \brief Disables the selected interrupts sources on a TWI peripheral. + * \param pTwi Pointer to an Twi instance. + * \param sources Bitwise OR of selected interrupt sources. + */ +void TWI_DisableIt(Twi *pTwi, uint32_t sources) +{ + assert( pTwi != NULL ) ; + assert( (sources & 0xFFFFF088) == 0 ) ; + + pTwi->TWI_IDR = sources; +} + +/** + * \brief Get the current status register of the given TWI peripheral. + * \note This resets the internal value of the status register, so further + * read may yield different values. + * \param pTwi Pointer to an Twi instance. + * \return TWI status register. + */ +uint32_t TWI_GetStatus(Twi *pTwi) +{ + assert( pTwi != NULL ) ; + + return pTwi->TWI_SR; +} + +/** + * \brief Returns the current status register of the given TWI peripheral, but + * masking interrupt sources which are not currently enabled. + * \note This resets the internal value of the status register, so further + * read may yield different values. + * \param pTwi Pointer to an Twi instance. + */ +uint32_t TWI_GetMaskedStatus(Twi *pTwi) +{ + uint32_t status; + + assert( pTwi != NULL ) ; + + status = pTwi->TWI_SR; + status &= pTwi->TWI_IMR; + + return status; +} + +/** + * \brief Sends a STOP condition. STOP Condition is sent just after completing + * the current byte transmission in master read mode. + * \param pTwi Pointer to an Twi instance. + */ +void TWI_SendSTOPCondition(Twi *pTwi) +{ + assert( pTwi != NULL ) ; + + pTwi->TWI_CR |= TWI_CR_STOP; +} + diff --git a/hardware/sam/system/libsam/source/usart.c b/hardware/sam/system/libsam/source/usart.c new file mode 100644 index 000000000..163b26b21 --- /dev/null +++ b/hardware/sam/system/libsam/source/usart.c @@ -0,0 +1,409 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** \addtogroup usart_module Working with USART + * The USART driver provides the interface to configure and use the USART peripheral.\n + * + * The USART supports several kinds of comminication modes such as full-duplex asynchronous/ + * synchronous serial commnunication,RS485 with driver control signal,ISO7816,SPI and Test modes. + * + * To start a USART transfer with \ref AT91SAM3S_PDC "PDC" support, the user could follow these steps: + *
    + *
  • Configure USART with expected mode and baudrate(see \ref USART_Configure), which could be done by: + * -# Resetting and disabling transmitter and receiver by setting US_CR(Control Register).
  • + * -# Conifguring the USART in a specific mode by setting USART_MODE bits in US_MR(Mode Register) + * -# Setting baudrate which is different from mode to mode. + + *
  • Enable transmitter or receiver respectively by set US_CR_TXEN or US_CR_RXEN in US_CR.
  • + *
  • Read from or write to the peripheral with \ref USART_ReadBuffer or \ref USART_WriteBuffer. + These operations could be done by polling or interruption.
  • + *
  • For polling, check the status bit US_CSR_ENDRX/US_CSR_RXBUFF (READ) or US_CSR_ENDTX/ + US_CSR_TXBUFE (WRITE).
  • + *
  • For interruption,"enable" the status bit through US_IER and + realize the hanler with USARTx_IrqHandler according to IRQ vector + table which is defined in board_cstartup_.c + To enable the interruption of USART,it should be configured with priority and enabled first through + NVIC .
  • + *
+ * + * For more accurate information, please look at the USART section of the + * Datasheet. + * + * Related files :\n + * \ref usart.c\n + * \ref usart.h\n +*/ + + + +/** + * \file + * + * Implementation of USART (Universal Synchronous Asynchronous Receiver Transmitter) + * controller. + * + */ +/*------------------------------------------------------------------------------ + * Headers + *------------------------------------------------------------------------------*/ +#include "chip.h" + +#include +#include + +/*---------------------------------------------------------------------------- + * Local definitions + *----------------------------------------------------------------------------*/ + + +/*------------------------------------------------------------------------------ + * Exported functions + *------------------------------------------------------------------------------*/ + +/** + * \brief Configures an USART peripheral with the specified parameters. + * + * + * \param usart Pointer to the USART peripheral to configure. + * \param mode Desired value for the USART mode register (see the datasheet). + * \param baudrate Baudrate at which the USART should operate (in Hz). + * \param masterClock Frequency of the system master clock (in Hz). + */ +void USART_Configure(Usart *usart, + uint32_t mode, + uint32_t baudrate, + uint32_t masterClock) +{ + /* Reset and disable receiver & transmitter*/ + usart->US_CR = US_CR_RSTRX | US_CR_RSTTX + | US_CR_RXDIS | US_CR_TXDIS; + + /* Configure mode*/ + usart->US_MR = mode; + + /* Configure baudrate*/ + /* Asynchronous, no oversampling*/ + if ( ((mode & US_MR_SYNC) == 0) && ((mode & US_MR_OVER) == 0) ) + { + usart->US_BRGR = (masterClock / baudrate) / 16; + } + + if( ((mode & US_MR_USART_MODE_SPI_MASTER) == US_MR_USART_MODE_SPI_MASTER) + || ((mode & US_MR_SYNC) == US_MR_SYNC)) + { + if( (mode & US_MR_USCLKS_Msk) == US_MR_USCLKS_MCK) + { + usart->US_BRGR = masterClock / baudrate; + } + else + { + if ( (mode & US_MR_USCLKS_DIV) == US_MR_USCLKS_DIV) + { + usart->US_BRGR = masterClock / baudrate / 8; + } + } + } + /* TODO other modes*/ +} +/** + * \brief Enables or disables the transmitter of an USART peripheral. + * + * + * \param usart Pointer to an USART peripheral + * \param enabled If true, the transmitter is enabled; otherwise it is + * disabled. + */ +void USART_SetTransmitterEnabled(Usart *usart, uint8_t enabled) +{ + if (enabled) { + + usart->US_CR = US_CR_TXEN; + } + else { + + usart->US_CR = US_CR_TXDIS; + } +} + +/** + * \brief Enables or disables the receiver of an USART peripheral + * + * + * \param usart Pointer to an USART peripheral + * \param enabled If true, the receiver is enabled; otherwise it is disabled. + */ +void USART_SetReceiverEnabled(Usart *usart, + uint8_t enabled) +{ + if (enabled) { + + usart->US_CR = US_CR_RXEN; + } + else { + + usart->US_CR = US_CR_RXDIS; + } +} + +/** + * \brief Sends one packet of data through the specified USART peripheral. This + * function operates synchronously, so it only returns when the data has been + * actually sent. + * + * + * \param usart Pointer to an USART peripheral. + * \param data Data to send including 9nth bit and sync field if necessary (in + * the same format as the US_THR register in the datasheet). + * \param timeOut Time out value (0 = no timeout). + */ +void USART_Write( + Usart *usart, + uint16_t data, + volatile uint32_t timeOut) +{ + if (timeOut == 0) { + + while ((usart->US_CSR & US_CSR_TXEMPTY) == 0); + } + else { + + while ((usart->US_CSR & US_CSR_TXEMPTY) == 0) { + + if (timeOut == 0) { + +// TRACE_ERROR("USART_Write: Timed out.\n\r"); + return; + } + timeOut--; + } + } + + usart->US_THR = data; +} + +/** + * \brief Sends the contents of a data buffer through the specified USART peripheral. + * This function returns immediately (1 if the buffer has been queued, 0 + * otherwise); poll the ENDTX and TXBUFE bits of the USART status register + * to check for the transfer completion. + * + * \param usart Pointer to an USART peripheral. + * \param buffer Pointer to the data buffer to send. + * \param size Size of the data buffer (in bytes). + */ +uint8_t USART_WriteBuffer( + Usart *usart, + void *buffer, + uint32_t size) +{ + /* Check if the first PDC bank is free*/ + if ((usart->US_TCR == 0) && (usart->US_TNCR == 0)) { + + usart->US_TPR = (uint32_t) buffer; + usart->US_TCR = size; + usart->US_PTCR = US_PTCR_TXTEN; + + return 1; + } + /* Check if the second PDC bank is free*/ + else if (usart->US_TNCR == 0) { + + usart->US_TNPR = (uint32_t) buffer; + usart->US_TNCR = size; + + return 1; + } + else { + + return 0; + } +} + + +/** + * \brief Reads and return a packet of data on the specified USART peripheral. This + * function operates asynchronously, so it waits until some data has been + * received. + * + * \param usart Pointer to an USART peripheral. + * \param timeOut Time out value (0 -> no timeout). + */ +uint16_t USART_Read( + Usart *usart, + volatile uint32_t timeOut) +{ + if (timeOut == 0) { + + while ((usart->US_CSR & US_CSR_RXRDY) == 0); + } + else { + + while ((usart->US_CSR & US_CSR_RXRDY) == 0) { + + if (timeOut == 0) { + +// TRACE_ERROR( "USART_Read: Timed out.\n\r" ) ; + return 0; + } + timeOut--; + } + } + + return usart->US_RHR; +} + +/** + * \brief Reads data from an USART peripheral, filling the provided buffer until it + * becomes full. This function returns immediately with 1 if the buffer has + * been queued for transmission; otherwise 0. + * + * \param usart Pointer to an USART peripheral. + * \param buffer Pointer to the buffer where the received data will be stored. + * \param size Size of the data buffer (in bytes). + */ +uint8_t USART_ReadBuffer(Usart *usart, + void *buffer, + uint32_t size) +{ + /* Check if the first PDC bank is free*/ + if ((usart->US_RCR == 0) && (usart->US_RNCR == 0)) { + + usart->US_RPR = (uint32_t) buffer; + usart->US_RCR = size; + usart->US_PTCR = US_PTCR_RXTEN; + + return 1; + } + /* Check if the second PDC bank is free*/ + else if (usart->US_RNCR == 0) { + + usart->US_RNPR = (uint32_t) buffer; + usart->US_RNCR = size; + + return 1; + } + else { + + return 0; + } +} + +/** + * \brief Returns 1 if some data has been received and can be read from an USART; + * otherwise returns 0. + * + * \param usart Pointer to an Usart instance. + */ +uint8_t USART_IsDataAvailable(Usart *usart) +{ + if ((usart->US_CSR & US_CSR_RXRDY) != 0) { + + return 1; + } + else { + + return 0; + } +} + +/** + * \brief Sets the filter value for the IRDA demodulator. + * + * \param pUsart Pointer to an Usart instance. + * \param filter Filter value. + */ +void USART_SetIrdaFilter(Usart *pUsart, uint8_t filter) +{ + assert( pUsart != NULL ) ; + + pUsart->US_IF = filter; +} + +/** + * \brief Sends one packet of data through the specified USART peripheral. This + * function operates synchronously, so it only returns when the data has been + * actually sent. + * + * \param usart Pointer to an USART peripheral. + * \param c Character to send + */ +void USART_PutChar( + Usart *usart, + uint8_t c) +{ + /* Wait for the transmitter to be ready*/ + while ((usart->US_CSR & US_CSR_TXEMPTY) == 0); + + /* Send character*/ + usart->US_THR = c; + + /* Wait for the transfer to complete*/ + while ((usart->US_CSR & US_CSR_TXEMPTY) == 0); +} + +/** + * \brief Return 1 if a character can be read in USART + */ +uint32_t USART_IsRxReady(Usart *usart) +{ + return (usart->US_CSR & US_CSR_RXRDY); +} +/** + * \brief Get present status + */ +uint32_t USART_GetStatus(Usart *usart) +{ + return usart->US_CSR; +} +/** + * \brief Enable interrupt + */ +void USART_EnableIt(Usart *usart,uint32_t mode) +{ + usart->US_IER = mode; +} +/** + * \brief Disable interrupt + */ +void USART_DisableIt(Usart *usart,uint32_t mode) +{ + usart->US_IDR = mode; +} +/** + * \brief Reads and returns a character from the USART. + * + * \note This function is synchronous (i.e. uses polling). + * \param usart Pointer to an USART peripheral. + * \return Character received. + */ +uint8_t USART_GetChar(Usart *usart) +{ + while ((usart->US_CSR & US_CSR_RXRDY) == 0); + return usart->US_RHR; +} diff --git a/hardware/sam/system/libsam/source/wdt.c b/hardware/sam/system/libsam/source/wdt.c new file mode 100644 index 000000000..7328042f2 --- /dev/null +++ b/hardware/sam/system/libsam/source/wdt.c @@ -0,0 +1,132 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/** + * \file + * + * Implementation of Watchdog Timer (WDT) controller. + * + */ + +/** \addtogroup wdt_module Working with WDT + * The WDT driver provides the interface to configure and use the WDT + * peripheral. + * + * The WDT can be used to prevent system lock-up if the software becomes + * trapped in a deadlock. It can generate a general reset or a processor + * reset only. It is clocked by slow clock divided by 128. + * + * The WDT is running at reset with 16 seconds watchdog period (slow clock at 32.768 kHz) + * and external reset generation enabled. The user must either disable it or + * reprogram it to meet the application requires. + * + * To use the WDT, the user could follow these few steps: + *
    + *
  • Enable watchdog with given mode using \ref WDT_Enable(). + *
  • Restart the watchdog using \ref WDT_Restart() within the watchdog period. + *
+ * + * For more accurate information, please look at the WDT section of the + * Datasheet. + * + * \note + * The Watchdog Mode Register (WDT_MR) can be written only once.\n + * + * Related files :\n + * \ref wdt.c\n + * \ref wdt.h.\n + */ +/*@{*/ +/*@}*/ + +/*--------------------------------------------------------------------------- + * Headers + *---------------------------------------------------------------------------*/ + +#include "chip.h" + +#include + +/*---------------------------------------------------------------------------- + * Exported functions + *----------------------------------------------------------------------------*/ + +/** + * \brief Enable watchdog with given mode. + * + * \note The Watchdog Mode Register (WDT_MR) can be written only once. + * Only a processor reset resets it. + * + * \param dwMode WDT mode to be set + */ +extern void WDT_Enable( Wdt* pWDT, uint32_t dwMode ) +{ + pWDT->WDT_MR = dwMode ; +} + +/** + * \brief Disable watchdog. + * + * \note The Watchdog Mode Register (WDT_MR) can be written only once. + * Only a processor reset resets it. + */ +extern void WDT_Disable( Wdt* pWDT ) +{ + pWDT->WDT_MR = WDT_MR_WDDIS; +} + +/** + * \brief Watchdog restart. + */ +extern void WDT_Restart( Wdt* pWDT ) +{ + pWDT->WDT_CR = 0xA5000001; +} + +/** + * \brief Watchdog get status. + */ +extern uint32_t WDT_GetStatus( Wdt* pWDT ) +{ + return (pWDT->WDT_SR & 0x3) ; +} + +/** + * \brief Watchdog get period. + * + * \param dwMs desired watchdog period in millisecond. + */ +extern uint32_t WDT_GetPeriod( uint32_t dwMs ) +{ + if ( (dwMs < 4) || (dwMs > 16000) ) + { + return 0 ; + } + return ((dwMs << 8) / 1000) ; +} diff --git a/hardware/sam/variants/arduino_due/1661fa.pdf b/hardware/sam/variants/arduino_due/1661fa.pdf new file mode 100644 index 000000000..bda8df4cb Binary files /dev/null and b/hardware/sam/variants/arduino_due/1661fa.pdf differ diff --git a/hardware/sam/variants/arduino_due/Arduino_ZZZ_U01.pdf b/hardware/sam/variants/arduino_due/Arduino_ZZZ_U01.pdf new file mode 100644 index 000000000..0fe138c7a Binary files /dev/null and b/hardware/sam/variants/arduino_due/Arduino_ZZZ_U01.pdf differ diff --git a/hardware/sam/variants/arduino_due/build_gcc/Makefile b/hardware/sam/variants/arduino_due/build_gcc/Makefile new file mode 100644 index 000000000..6851bdaa8 --- /dev/null +++ b/hardware/sam/variants/arduino_due/build_gcc/Makefile @@ -0,0 +1,42 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Makefile for compiling libboard +BOARD = + +SUBMAKE_OPTIONS=--no-builtin-rules --no-builtin-variables + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- + +all: arduino_due + +.PHONY: arduino_due +arduino_due: + @echo --- Making arduino_due + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f libvariant_arduino_due.mk +# @$(MAKE) $(SUBMAKE_OPTIONS) -f libvariant_arduino_due.mk + +.PHONY: clean +clean: + @echo --- Cleaning arduino_due + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f libvariant_arduino_due.mk $@ +# @$(MAKE) $(SUBMAKE_OPTIONS) -f libvariant_arduino_due.mk $@ + + diff --git a/hardware/sam/variants/arduino_due/build_gcc/debug.mk b/hardware/sam/variants/arduino_due/build_gcc/debug.mk new file mode 100644 index 000000000..d0716744a --- /dev/null +++ b/hardware/sam/variants/arduino_due/build_gcc/debug.mk @@ -0,0 +1,25 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Optimization level +# -O1 Optimize +# -O2 Optimize even more +# -O3 Optimize yet more +# -O0 Reduce compilation time and make debugging produce the expected results +# -Os Optimize for size +OPTIMIZATION = -g -O0 -DDEBUG diff --git a/hardware/sam/variants/arduino_due/build_gcc/gcc.mk b/hardware/sam/variants/arduino_due/build_gcc/gcc.mk new file mode 100644 index 000000000..ebbf6d3c0 --- /dev/null +++ b/hardware/sam/variants/arduino_due/build_gcc/gcc.mk @@ -0,0 +1,81 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Tool suffix when cross-compiling +#CROSS_COMPILE = ../../../../tools/CodeSourcery_arm/bin/arm-none-eabi- +CROSS_COMPILE = $(ARM_GCC_TOOLCHAIN)/arm-none-eabi- + +# Compilation tools +AR = $(CROSS_COMPILE)ar +CC = $(CROSS_COMPILE)gcc +CXX = $(CROSS_COMPILE)g++ +AS = $(CROSS_COMPILE)as +#LD = $(CROSS_COMPILE)ld +#SIZE = $(CROSS_COMPILE)size +NM = $(CROSS_COMPILE)nm +#OBJCOPY = $(CROSS_COMPILE)objcopy +RM=cs-rm -Rf +SEP=\\ + +# --------------------------------------------------------------------------------------- +# C Flags + +CFLAGS += -Wall -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int +CFLAGS += -Werror-implicit-function-declaration -Wmain -Wparentheses +CFLAGS += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused +CFLAGS += -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef +CFLAGS += -Wshadow -Wpointer-arith -Wbad-function-cast -Wwrite-strings +CFLAGS += -Wsign-compare -Waggregate-return -Wstrict-prototypes +CFLAGS += -Wmissing-prototypes -Wmissing-declarations +CFLAGS += -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations +CFLAGS += -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wlong-long +CFLAGS += -Wunreachable-code +CFLAGS += -Wcast-align +#CFLAGS += -Wmissing-noreturn +#CFLAGS += -Wconversion + +CFLAGS += --param max-inline-insns-single=500 -mcpu=cortex-m3 -mthumb -mlong-calls -ffunction-sections -nostdlib +CFLAGS += $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) -D$(VARIANT) + +# To reduce application size use only integer printf function. +CFLAGS += -Dprintf=iprintf + +# --------------------------------------------------------------------------------------- +# CPP Flags + +CPPFLAGS += -Wall -Wchar-subscripts -Wcomment -Wformat=2 +CPPFLAGS += -Wmain -Wparentheses -Wcast-align -Wunreachable-code +CPPFLAGS += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused +CPPFLAGS += -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef +CPPFLAGS += -Wshadow -Wpointer-arith -Wwrite-strings +CPPFLAGS += -Wsign-compare -Waggregate-return -Wmissing-declarations +CPPFLAGS += -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations +CPPFLAGS += -Wpacked -Wredundant-decls -Winline -Wlong-long +#CPPFLAGS += -Wmissing-noreturn +#CPPFLAGS += -Wconversion + +CPPFLAGS += --param max-inline-insns-single=500 -mcpu=cortex-m3 -mthumb -mlong-calls -ffunction-sections -fno-rtti -fno-exceptions +CPPFLAGS += $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) + +# To reduce application size use only integer printf function. +CPPFLAGS += -Dprintf=iprintf + +# --------------------------------------------------------------------------------------- +# ASM Flags + +ASFLAGS = -mcpu=cortex-m3 -mthumb -Wall -g $(OPTIMIZATION) $(INCLUDES) diff --git a/hardware/sam/variants/arduino_due/build_gcc/libvariant_arduino_due.mk b/hardware/sam/variants/arduino_due/build_gcc/libvariant_arduino_due.mk new file mode 100644 index 000000000..f4d5965f3 --- /dev/null +++ b/hardware/sam/variants/arduino_due/build_gcc/libvariant_arduino_due.mk @@ -0,0 +1,174 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Makefile for compiling libArduino +.SUFFIXES: .o .a .c .s + +CHIP=__SAM3U4E__ +VARIANT=arduino_due +LIBNAME=libvariant_$(VARIANT) +TOOLCHAIN=gcc + +#------------------------------------------------------------------------------- +# Path +#------------------------------------------------------------------------------- + +# Output directories +OUTPUT_BIN = ../../../cores/sam + +# Libraries +PROJECT_BASE_PATH = .. +SYSTEM_PATH = ../../../system +CMSIS_PATH = $(SYSTEM_PATH)/CMSIS/Include +ARDUINO_PATH = ../../../cores/sam +VARIANT_BASE_PATH = ../../../variants +VARIANT_PATH = ../../../variants/$(VARIANT) +VARIANT_COMMON_PATH = ../../common + +#------------------------------------------------------------------------------- +# Files +#------------------------------------------------------------------------------- + +vpath %.h $(PROJECT_BASE_PATH) $(SYSTEM_PATH) $(VARIANT_PATH) $(VARIANT_COMMON_PATH) +#vpath %.c $(PROJECT_BASE_PATH) $(VARIANT_PATH) +vpath %.cpp $(PROJECT_BASE_PATH) $(PROJECT_BASE_PATH) $(VARIANT_COMMON_PATH) + +VPATH+=$(PROJECT_BASE_PATH) + +INCLUDES = +#INCLUDES += -I$(PROJECT_BASE_PATH) +INCLUDES += -I$(ARDUINO_PATH) +INCLUDES += -I$(SYSTEM_PATH) +INCLUDES += -I$(SYSTEM_PATH)/libsam +INCLUDES += -I$(VARIANT_BASE_PATH) +INCLUDES += -I$(VARIANT_PATH) +INCLUDES += -I$(CMSIS_PATH) + +#------------------------------------------------------------------------------- +ifdef DEBUG +include debug.mk +else +include release.mk +endif + +#------------------------------------------------------------------------------- +# Tools +#------------------------------------------------------------------------------- + +include $(TOOLCHAIN).mk + +#------------------------------------------------------------------------------- +ifdef DEBUG +OUTPUT_OBJ=debug +OUTPUT_LIB_POSTFIX=dbg +else +OUTPUT_OBJ=release +OUTPUT_LIB_POSTFIX=rel +endif + +OUTPUT_LIB=$(LIBNAME)_$(TOOLCHAIN)_$(OUTPUT_LIB_POSTFIX).a +OUTPUT_PATH=$(OUTPUT_OBJ)_$(VARIANT) + +#------------------------------------------------------------------------------- +# C source files and objects +#------------------------------------------------------------------------------- +C_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.c) + +C_OBJ_TEMP = $(patsubst %.c, %.o, $(notdir $(C_SRC))) + +# during development, remove some files +C_OBJ_FILTER= + +C_OBJ=$(filter-out $(C_OBJ_FILTER), $(C_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# CPP source files and objects +#------------------------------------------------------------------------------- +CPP_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.cpp) +CPP_SRC+=$(wildcard $(VARIANT_COMMON_PATH)/*.cpp) + +CPP_OBJ_TEMP = $(patsubst %.cpp, %.o, $(notdir $(CPP_SRC))) + +# during development, remove some files +CPP_OBJ_FILTER= + +CPP_OBJ=$(filter-out $(CPP_OBJ_FILTER), $(CPP_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# Assembler source files and objects +#------------------------------------------------------------------------------- +A_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.s) + +A_OBJ_TEMP=$(patsubst %.s, %.o, $(notdir $(A_SRC))) + +# during development, remove some files +A_OBJ_FILTER= + +A_OBJ=$(filter-out $(A_OBJ_FILTER), $(A_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- +all: $(VARIANT) + +$(VARIANT): create_output $(OUTPUT_LIB) + +.PHONY: create_output +create_output: + @echo --- Preparing $(VARIANT) files in $(OUTPUT_PATH) $(OUTPUT_BIN) + @echo ------------------------- + @echo *$(INCLUDES) + @echo ------------------------- + @echo *$(C_SRC) + @echo ------------------------- + @echo *$(C_OBJ) + @echo ------------------------- + @echo *$(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) + @echo ------------------------- + @echo *$(CPP_SRC) + @echo ------------------------- + @echo *$(CPP_OBJ) + @echo ------------------------- + @echo *$(addprefix $(OUTPUT_PATH)/, $(CPP_OBJ)) + @echo ------------------------- + @echo *$(A_SRC) + @echo ------------------------- + + -@mkdir $(OUTPUT_PATH) 1>NUL 2>&1 + +$(addprefix $(OUTPUT_PATH)/,$(C_OBJ)): $(OUTPUT_PATH)/%.o: %.c +# @$(CC) -v -c $(CFLAGS) $< -o $@ + @$(CC) -c $(CFLAGS) $< -o $@ + +$(addprefix $(OUTPUT_PATH)/,$(CPP_OBJ)): $(OUTPUT_PATH)/%.o: %.cpp +# @$(CC) -c $(CPPFLAGS) $< -o $@ + @$(CC) -xc++ -c $(CPPFLAGS) $< -o $@ + +$(addprefix $(OUTPUT_PATH)/,$(A_OBJ)): $(OUTPUT_PATH)/%.o: %.s + @$(AS) -c $(ASFLAGS) $< -o $@ + +$(OUTPUT_LIB): $(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(CPP_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(A_OBJ)) + @$(AR) -v -r "$(OUTPUT_BIN)/$@" $^ + @$(NM) "$(OUTPUT_BIN)/$@" > "$(OUTPUT_BIN)/$@.txt" + + +.PHONY: clean +clean: + @echo --- Cleaning $(VARIANT) files [$(OUTPUT_PATH)$(SEP)*.o] + -@$(RM) $(OUTPUT_PATH) 1>NUL 2>&1 + -@$(RM) $(OUTPUT_BIN)/$(OUTPUT_LIB) 1>NUL 2>&1 diff --git a/hardware/sam/variants/arduino_due/build_gcc/release.mk b/hardware/sam/variants/arduino_due/build_gcc/release.mk new file mode 100644 index 000000000..0d15157f4 --- /dev/null +++ b/hardware/sam/variants/arduino_due/build_gcc/release.mk @@ -0,0 +1,25 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Optimization level +# -O1 Optimize +# -O2 Optimize even more +# -O3 Optimize yet more +# -O0 Reduce compilation time and make debugging produce the expected results +# -Os Optimize for size +OPTIMIZATION = -Os diff --git a/hardware/sam/variants/arduino_due/debug_scripts/gcc/arduino_due_flash.gdb b/hardware/sam/variants/arduino_due/debug_scripts/gcc/arduino_due_flash.gdb new file mode 100644 index 000000000..c912752bc --- /dev/null +++ b/hardware/sam/variants/arduino_due/debug_scripts/gcc/arduino_due_flash.gdb @@ -0,0 +1,31 @@ +#******************************************************* +# +# Connect to J-Link and debug application in flash. +# + +# define 'reset' command +define reset + +# Connect to the J-Link gdb server +target remote localhost:2331 +# Reset the chip to get to a known state +monitor reset + +# Select flash device +monitor flash device = AT91SAM3U4E +# Enable flash download and flash breakpoints +monitor flash download = 1 +# Load the program +load + +# Reset peripheral (RSTC_CR) +set *0x400e1200 = 0xA5000004 + +# Initializing PC and stack pointer +mon reg sp=(0x80000) +set *0x80004 = *0x80004 & 0xFFFFFFFE +mon reg pc=(0x80004) +info reg + +# end of 'reset' command +end diff --git a/hardware/sam/variants/arduino_due/debug_scripts/gcc/arduino_due_sram.gdb b/hardware/sam/variants/arduino_due/debug_scripts/gcc/arduino_due_sram.gdb new file mode 100644 index 000000000..c7cc015ba --- /dev/null +++ b/hardware/sam/variants/arduino_due/debug_scripts/gcc/arduino_due_sram.gdb @@ -0,0 +1,23 @@ +#************************************************* +# +# Connect to J-Link and debug application in sram on SAM3U +# +# Note: +# First,users should do Step1 and Step2 according to your project, +# then do Step3. + +# Step1: Connect to the J-Link gdb server +#target remote localhost:2331 +#mon reset + +# Step2: Load file(eg. getting-started project) +#load bin/basic-dhrystone-project-at91sam3u-ek-at91sam3u4-sram.elf +#symbol-file bin/basic-dhrystone-project-at91sam3u-ek-at91sam3u4-sram.elf + +# Step3: Initializing PC and stack pointer +# Perpheral reset RSTC_CR +set *0x400e1200 = 0xA5000004 +# Modify pc value to even before writing pc register +mon reg sp=(0x20000000) +set *0x20000004 = *0x20000004 & 0xFFFFFFFE +mon reg pc=(0x20000004) diff --git a/hardware/sam/variants/arduino_due/debug_scripts/iar/arduino_due_flash.mac b/hardware/sam/variants/arduino_due/debug_scripts/iar/arduino_due_flash.mac new file mode 100644 index 000000000..959583582 --- /dev/null +++ b/hardware/sam/variants/arduino_due/debug_scripts/iar/arduino_due_flash.mac @@ -0,0 +1,44 @@ +// --------------------------------------------------------- +// ATMEL Microcontroller Software Support - ROUSSET - +// --------------------------------------------------------- +// The software is delivered "AS IS" without warranty or +// condition of any kind, either express, implied or +// statutory. This includes without limitation any warranty +// or condition with respect to merchantability or fitness +// for any particular purpose, or against the infringements of +// intellectual property rights of others. +// --------------------------------------------------------- +// File: at91sam3u-ek-flash.mac +// User setup file for CSPY debugger. +// --------------------------------------------------------- +__var __mac_i; +__var __mac_pt; + +/********************************************************************* +* +* execUserReset() +*/ +execUserReset() +{ + __message "------------------------------ execUserReset ---------------------------------"; + __message "-------------------------------Set PC Reset ----------------------------------"; + + __hwReset(0); + + // perpheral reset RSTC_CR + __writeMemory32(0xA5000004,0x400e1200,"Memory"); +} + +/********************************************************************* +* +* execUserPreload() +*/ +execUserPreload() +{ + __message "------------------------------ execUserPreload ---------------------------------"; + + __hwReset(0); //* Hardware Reset: CPU is automatically halted after the reset + + // perpheral reset RSTC_CR + __writeMemory32(0xA5000004,0x400e1200,"Memory"); +} diff --git a/hardware/sam/variants/arduino_due/debug_scripts/iar/arduino_due_sram.mac b/hardware/sam/variants/arduino_due/debug_scripts/iar/arduino_due_sram.mac new file mode 100644 index 000000000..ba86029d3 --- /dev/null +++ b/hardware/sam/variants/arduino_due/debug_scripts/iar/arduino_due_sram.mac @@ -0,0 +1,44 @@ +// --------------------------------------------------------- +// ATMEL Microcontroller Software Support - ROUSSET - +// --------------------------------------------------------- +// The software is delivered "AS IS" without warranty or +// condition of any kind, either express, implied or +// statutory. This includes without limitation any warranty +// or condition with respect to merchantability or fitness +// for any particular purpose, or against the infringements of +// intellectual property rights of others. +// --------------------------------------------------------- +// File: at91sam3u-ek-sram.mac +// User setup file for CSPY debugger. +// --------------------------------------------------------- +__var __mac_i; +__var __mac_pt; + +/********************************************************************* +* +* execUserReset() +*/ +execUserReset() +{ + __message "------------------------------ execUserReset ---------------------------------"; + __message "-------------------------------Set PC Reset ----------------------------------"; + + //__hwReset(50); + + // perpheral reset RSTC_CR + __writeMemory32(0xA5000004,0x400e1200,"Memory"); +} + +/********************************************************************* +* +* execUserPreload() +*/ +execUserPreload() +{ + __message "------------------------------ execUserPreload ---------------------------------"; + + __hwReset(0); //* Hardware Reset: CPU is automatically halted after the reset + + // perpheral reset RSTC_CR + __writeMemory32(0xA5000004,0x400e1200,"Memory"); +} diff --git a/hardware/sam/variants/arduino_due/linker_scripts/gcc/flash.ld b/hardware/sam/variants/arduino_due/linker_scripts/gcc/flash.ld new file mode 100644 index 000000000..c79e630a5 --- /dev/null +++ b/hardware/sam/variants/arduino_due/linker_scripts/gcc/flash.ld @@ -0,0 +1,150 @@ +/* ---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2009, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------------ + * Linker script for running in internal FLASH on the SAM3U4 + *----------------------------------------------------------------------------*/ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + flash0 (W!RX) : ORIGIN = 0x00080000, LENGTH = 0x00020000 /* Flash0, 128K */ + flash1 (W!RX) : ORIGIN = 0x00100000, LENGTH = 0x00020000 /* Flash1, 128K */ + sram0 (W!RX) : ORIGIN = 0x20000000, LENGTH = 0x00008000 /* Sram0, 32K */ + sram1 (W!RX) : ORIGIN = 0x20080000, LENGTH = 0x00004000 /* Sram1, 16K */ + rom (rx) : ORIGIN = ORIGIN(flash1)-LENGTH(flash0), LENGTH = LENGTH(flash0)+LENGTH(flash1) /* Flash, 256K */ + ram (rwx) : ORIGIN = ORIGIN( sram1)-LENGTH( sram0), LENGTH = LENGTH( sram0)+LENGTH( sram1) /* sram, 48K */ +} + +/* The stack size used by the application. NOTE: you need to adjust */ +STACK_SIZE = 0x2000; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(0x4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > flash0 + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > flash0 + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > sram0 + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > sram0 + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > sram1 + + . = ALIGN(4); + _end = . ; +} diff --git a/hardware/sam/variants/arduino_due/linker_scripts/gcc/sram.ld b/hardware/sam/variants/arduino_due/linker_scripts/gcc/sram.ld new file mode 100644 index 000000000..c8e21ad30 --- /dev/null +++ b/hardware/sam/variants/arduino_due/linker_scripts/gcc/sram.ld @@ -0,0 +1,150 @@ +/* ---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2009, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------------ + * Linker script for running in internal SRAM on the SAM3U4 + *----------------------------------------------------------------------------*/ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + flash0 (W!RX) : ORIGIN = 0x00080000, LENGTH = 0x00020000 /* Flash0, 128K */ + flash1 (W!RX) : ORIGIN = 0x00100000, LENGTH = 0x00020000 /* Flash1, 128K */ + sram0 (W!RX) : ORIGIN = 0x20000000, LENGTH = 0x00008000 /* Sram0, 32K */ + sram1 (W!RX) : ORIGIN = 0x20080000, LENGTH = 0x00004000 /* Sram1, 16K */ + rom (rx) : ORIGIN = ORIGIN(flash1)-LENGTH(flash0), LENGTH = LENGTH(flash0)+LENGTH(flash1) /* Flash, 256K */ + ram (rwx) : ORIGIN = ORIGIN( sram1)-LENGTH( sram0), LENGTH = LENGTH( sram0)+LENGTH( sram1) /* sram, 48K */ +} + +/* The stack size used by the application. NOTE: you need to adjust */ +STACK_SIZE = 0x800; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(0x4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > sram0 + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > sram1 + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > sram1 + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > sram1 + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > sram1 + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _end = . ; +} diff --git a/hardware/sam/variants/arduino_due/linker_scripts/iar/flash.icf b/hardware/sam/variants/arduino_due/linker_scripts/iar/flash.icf new file mode 100644 index 000000000..956230fbd --- /dev/null +++ b/hardware/sam/variants/arduino_due/linker_scripts/iar/flash.icf @@ -0,0 +1,49 @@ +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */ +/*-Vector table start*/ +define symbol __ICFEDIT_vector_start__ = 0x00080000; /*Add for CMSIS*/ +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_RAM0_start__ = 0x20000000; +define symbol __ICFEDIT_region_RAM0_end__ = 0x20007FFF; +define symbol __ICFEDIT_region_RAM1_start__ = 0x20080000; +define symbol __ICFEDIT_region_RAM1_end__ = 0x20083FFF; +define symbol __ICFEDIT_region_ROM0_start__ = 0x00080000; +define symbol __ICFEDIT_region_ROM0_end__ = 0x0009FFFF; +define symbol __ICFEDIT_region_ROM1_start__ = 0x00100000; +define symbol __ICFEDIT_region_ROM1_end__ = 0x0011FFFF; +/*-Sizes-*/ +/*define symbol __ICFEDIT_size_cstack__ = 0x1000;*//*for nandflash*/ +define symbol __ICFEDIT_size_cstack__ = 0x2000; +define symbol __ICFEDIT_size_heap__ = 0x200; +/*-Specials-*/ +/*define symbol __ICFEDIT_region_RAM_VECT_start__ = __ICFEDIT_region_RAM0_start__;*/ /*Referenced for CMSIS*/ +/*define symbol __ICFEDIT_size_vectors__ = 0x100;*/ /*Referenced for CMSIS*/ +/*-Exports-*/ +/*export symbol __ICFEDIT_region_RAM_VECT_start__;*/ +export symbol __ICFEDIT_vector_start__; /*Add for CMSIS*/ +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +/*define region RAM_VECT_region = mem:[from __ICFEDIT_region_RAM_VECT_start__ size __ICFEDIT_size_vectors__];*/ /*Referenced for CMSIS*/ +/*define region RAM0_region = mem:[from __ICFEDIT_region_RAM0_start__+__ICFEDIT_size_vectors__ to __ICFEDIT_region_RAM0_end__];*/ /*Referenced for CMSIS*/ +define region RAM0_region = mem:[from __ICFEDIT_region_RAM0_start__ to __ICFEDIT_region_RAM0_end__]; +define region RAM1_region = mem:[from __ICFEDIT_region_RAM1_start__ to __ICFEDIT_region_RAM1_end__]; +/*define region RAM_region = mem:[from __ICFEDIT_region_RAM0_start__+__ICFEDIT_size_vectors__ to __ICFEDIT_region_RAM0_end__] | + mem:[from __ICFEDIT_region_RAM1_start__ to __ICFEDIT_region_RAM1_end__];*/ /*Referenced for CMSIS*/ +define region ROM0_region = mem:[from __ICFEDIT_region_ROM0_start__ to __ICFEDIT_region_ROM0_end__]; +define region ROM1_region = mem:[from __ICFEDIT_region_ROM1_start__ to __ICFEDIT_region_ROM1_end__]; + +/*define block RamVect with alignment = 8, size = __ICFEDIT_size_vectors__ { };*/ +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; +define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; + +initialize by copy { readwrite }; +do not initialize { section .noinit }; + +/*place at start of ROM0_region { readonly section .vectors };*/ /*Referenced for CMSIS*/ +place at address mem:__ICFEDIT_vector_start__ { readonly section .intvec }; /*Add for CMSIS*/ +place in ROM0_region { readonly }; +place in RAM0_region { readwrite, block HEAP }; +place in RAM1_region { block CSTACK }; /* for nandflash*/ +/*place in RAM_VECT_region { block RamVect };*/ /*Referenced for CMSIS*/ \ No newline at end of file diff --git a/hardware/sam/variants/arduino_due/linker_scripts/iar/sram.icf b/hardware/sam/variants/arduino_due/linker_scripts/iar/sram.icf new file mode 100644 index 000000000..d7d33537a --- /dev/null +++ b/hardware/sam/variants/arduino_due/linker_scripts/iar/sram.icf @@ -0,0 +1,33 @@ +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */ +/*-Vector table start*/ +define symbol __ICFEDIT_vector_start__ = 0x20000000; +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_RAM0_start__ = 0x20000000; +define symbol __ICFEDIT_region_RAM0_end__ = 0x20007FFF; +define symbol __ICFEDIT_region_RAM1_start__ = 0x20080000; +define symbol __ICFEDIT_region_RAM1_end__ = 0x20083FFF; +/*-Sizes-*/ +define symbol __ICFEDIT_size_cstack__ = 0x900; +define symbol __ICFEDIT_size_heap__ = 0x200; +/*-Exports-*/ +export symbol __ICFEDIT_vector_start__; +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region RAM0_region = mem:[from __ICFEDIT_region_RAM0_start__ to __ICFEDIT_region_RAM0_end__]; +define region RAM1_region = mem:[from __ICFEDIT_region_RAM1_start__ to __ICFEDIT_region_RAM1_end__]; +/*define region RAM_region = mem:[from __ICFEDIT_region_RAM0_start__+__ICFEDIT_size_vectors__ to __ICFEDIT_region_RAM0_end__] | + mem:[from __ICFEDIT_region_RAM1_start__ to __ICFEDIT_region_RAM1_end__];*/ + +/* define block RamVect with alignment = 8, size = __ICFEDIT_size_vectors__ { }; */ +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; +define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; + +initialize by copy { readwrite }; +do not initialize { section .noinit }; + +place at address mem:__ICFEDIT_vector_start__ { readonly section .intvec }; +place in RAM0_region { readonly }; +place in RAM1_region { readwrite, block CSTACK, block HEAP }; diff --git a/hardware/sam/variants/arduino_due/pins.xls b/hardware/sam/variants/arduino_due/pins.xls new file mode 100644 index 000000000..d105ee475 Binary files /dev/null and b/hardware/sam/variants/arduino_due/pins.xls differ diff --git a/hardware/sam/variants/arduino_due/variant.cpp b/hardware/sam/variants/arduino_due/variant.cpp new file mode 100644 index 000000000..5e531b9d8 --- /dev/null +++ b/hardware/sam/variants/arduino_due/variant.cpp @@ -0,0 +1,377 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "variant.h" + +/* + * DUE Board pin | PORT + * ----------------+-------- + * 0 RX0 | PA11 + * 1 TX0 | PA12 + * 2 PWML3 | PC9 + * 3 PWMH3 | PB16 + * 4 NPCS0 | PA16 + * 5 TIOA2 | PA30 + * 6 PWMH2 | PA6 + * 7 PWML2 | PC8 + * 8 PWML1 | PC7 + * 9 PWMH1 | PA5 + * 10 TIOA0 | PA1 + * 11 PWMH0 | PA4 + * 12 PWML0 | PC6 + * 13 | PC21 + * 14 TX3 | PA22 + * 15 RX3 | PA23 + * 16 TX2 | PA20 + * 17 RX2 | PA21 + * 18 TX1 | PA18 + * 19 RX1 | PA19 + * 20 SDA | PA24 + * 21 SCL | PA25 + * 22 | PC3 + * 23 | PC2 + * 24 | PC1 + * 25 | PC0 + * 26 | PB28 + * 27 | PB27 + * 28 | PB26 + * 29 | PB25 + * 30 | PB24 + * 31 | PB23 + * 32 | PB22 + * 33 | PB21 + * 34 | PB20 + * 35 | PB19 + * 36 | PB18 + * 37 | PB17 + * 38 | PA28 + * 39 | PA29 + * 40 | PC22 + * 41 | PA31 + * 42 | PC23 + * 43 | PB0 + * 44 | PC24 + * 45 | PB1 + * 46 | PC25 + * 47 | PB2 + * 48 | PC26 + * 49 | PB11 + * 50 | PB12 + * 51 | PB13 + * 52 | PC27 + * 53 | PA27 + * A0 | PB5 + * A1 | PB6 + * A2 | PB7 + * A3 | PB8 + * A4 | PC28 + * A5 | PC29 + * A6 | PC30 + * A7 | PC31 + * A8 | PB3 + * A9 | PB4 + * A10 | PC15 + * A11 | PC16 + * A12 | PC17 + * A13 | PC18 + * A14 | This pin is DAC0 output of LTC1661CMS8 + * A15 | This pin is DAC1 output of LTC1661CMS8 + * SDA1 | PA9 + * SCL1 | PA10 + * + * + * LTC1661CMS8 pin | PORT + * ----------------+-------- + * #CS/LD | PB9 + * SCK | PB10 + * DIN | PB14 + * + * + * LEDs | PORT + * ----------------+-------- + * "TX" | PC19 + * "RX" | PC14 + * "L" | PC21 + */ + + +/* + * Pins descriptions + */ +extern const PinDescription g_APinDescription[]= +{ + // 0 .. 53 - Digital pins + // ---------------------- + // 0/1 - UART (Serial) + { PIOA, PIO_PA11A_URXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // URXD + { PIOA, PIO_PA12A_UTXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // UTXD + + // 2 + { PIOC, PIO_PC9B_PWML3, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH3, NO_TC }, // PWML3 + { PIOB, PIO_PB16B_PWMH3, ID_PIOB, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH3, NO_TC }, // PWMH3 + { PIOC, PIO_PA16A_NPCS0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // NPCS0 + + // 5 + { PIOA, PIO_PA30B_TIOA2, ID_PIOA, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NO_PWM, TC0_CHA2 }, // TIOA2 + { PIOA, PIO_PA6B_PWMH2, ID_PIOA, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH2, NO_TC }, // PWMH2 + { PIOC, PIO_PC8B_PWML2, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH2, NO_TC }, // PWML2 + { PIOC, PIO_PC7B_PWML1, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH1, NO_TC }, // PWML1 + { PIOA, PIO_PA5B_PWMH1, ID_PIOA, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH1, NO_TC }, // PWMH1 + // 10 + { PIOA, PIO_PA1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NO_PWM, TC0_CHA0 }, // TIOA0 + { PIOA, PIO_PA4B_PWMH0, ID_PIOA, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH0, NO_TC }, // PWMH0 + { PIOC, PIO_PC6B_PWML0, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH0, NO_TC }, // PWML0 + + // 13 - AMBER LED + { PIOC, PIO_PC21, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 13 + + // 14/15 - USART2 (Serial4) + { PIOA, PIO_PA22A_TXD2, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // TXD2 + { PIOA, PIO_PA23A_RXD2, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // RXD2 + + // 16/17 - USART1 (Serial3) + { PIOA, PIO_PA20A_TXD1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // TXD1 + { PIOA, PIO_PA21A_RXD1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // RXD1 + + // 18/19 - USART0 (Serial2) + { PIOA, PIO_PA18A_TXD0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // TXD0 + { PIOA, PIO_PA19A_RXD0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // RXD0 + + // 20/21 - TWI1 + { PIOA, PIO_PA24A_TWD1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // TWD1 - SDA0 + { PIOA, PIO_PA25A_TWCK1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // TWCK1 - SCL0 + + // 22 + { PIOC, PIO_PC3, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 22 + { PIOC, PIO_PC2, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 23 + { PIOC, PIO_PC1, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 24 + { PIOC, PIO_PC0, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 25 + + // 26 + { PIOB, PIO_PB28, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 26 + { PIOB, PIO_PB27, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 27 + { PIOB, PIO_PB26, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 28 + { PIOB, PIO_PB25, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 29 + + // 30 + { PIOB, PIO_PB24, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 30 + { PIOB, PIO_PB23, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 31 + { PIOB, PIO_PB22, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 32 + { PIOB, PIO_PB21, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 33 + + // 34 + { PIOB, PIO_PB20, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 34 + { PIOB, PIO_PB19, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 35 + { PIOB, PIO_PB18, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 36 + { PIOB, PIO_PB17, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 37 + + // 38 + { PIOA, PIO_PA28, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 38 + { PIOA, PIO_PA29, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 39 + { PIOC, PIO_PC22, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 40 + { PIOA, PIO_PA31, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 41 + + // 42 + { PIOC, PIO_PC23, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 42 + { PIOB, PIO_PB0 , ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 43 + { PIOC, PIO_PC24, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 44 + { PIOB, PIO_PB1 , ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 45 + + // 46 + { PIOC, PIO_PC25, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 46 + { PIOB, PIO_PB2 , ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 47 + { PIOC, PIO_PC26, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 48 + { PIOB, PIO_PB11, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 49 + + // 50 + { PIOB, PIO_PB12, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 50 + { PIOB, PIO_PB13, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 51 + { PIOC, PIO_PC27, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 52 + { PIOA, PIO_PA27, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // PIN 53 + + // 54 .. 67 - Analog pins + // ---------------------- + { PIOB, PIO_PB5X1_AD0, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC0, ADC0, NO_PWM, NO_TC }, // AD0 + { PIOB, PIO_PB6X1_AD1, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC1, ADC1, NO_PWM, NO_TC }, // AD1 + { PIOB, PIO_PB7X1_AD2, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC2, ADC2, NO_PWM, NO_TC }, // AD2 + { PIOB, PIO_PB8X1_AD3, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC3, ADC3, NO_PWM, NO_TC }, // AD3 + // 58 + { PIOC, PIO_PC28X1_AD4, ID_PIOC, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC4, ADC4, NO_PWM, NO_TC }, // AD4 + { PIOC, PIO_PC29X1_AD5, ID_PIOC, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC5, ADC5, NO_PWM, NO_TC }, // AD5 + { PIOC, PIO_PC30X1_AD6, ID_PIOC, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC6, ADC6, NO_PWM, NO_TC }, // AD6 + { PIOC, PIO_PC31X1_AD7, ID_PIOC, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC7, ADC7, NO_PWM, NO_TC }, // AD7 + // 62 + { PIOB, PIO_PB3X1_AD12B2, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC8, ADC2, NO_PWM, NO_TC }, // AD8 + { PIOB, PIO_PB4X1_AD12B3, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC9, ADC3, NO_PWM, NO_TC }, // AD9 + { PIOC, PIO_PC15X1_AD12B4, ID_PIOC, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC10, ADC4, NO_PWM, NO_TC }, // AD10 + { PIOC, PIO_PC16X1_AD12B5, ID_PIOC, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC11, ADC5, NO_PWM, NO_TC }, // AD11 + // 66 + { PIOC, PIO_PC17X1_AD12B6, ID_PIOC, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC12, ADC6, NO_PWM, NO_TC }, // AD12 + { PIOC, PIO_PC18X1_AD12B7, ID_PIOC, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC13, ADC7, NO_PWM, NO_TC }, // AD13 + + // 68/69 - TWI0 + { PIOA, PIO_PA9A_TWD0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // TWD0 - SDA1 + { PIOA, PIO_PA10A_TWCK0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // TWCK0 - SCL1 + + // 70/71/72 - External DAC + { PIOB, PIO_PB9, ID_PIOB, PIO_OUTPUT_1, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // DAC-CS + { PIOB, PIO_PB10, ID_PIOB, PIO_OUTPUT_1, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // DAC-SCK + { PIOB, PIO_PB14, ID_PIOB, PIO_OUTPUT_1, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // DAC-DIN + + // 73/74 - LEDs + { PIOC, PIO_PC14, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // LED AMBER RXL + { PIOC, PIO_PC19, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // LED AMBER TXL + + // 75/76/77 - SPI + { PIOA, PIO_PA13A_MISO, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // MISO + { PIOA, PIO_PA14A_MOSI, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // MOSI + { PIOA, PIO_PA15A_SPCK, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NO_PWM, NO_TC }, // SPCK + + // 78 .. 83 - "All pins" masks + + // 78 - TWI0 all pins + { PIOA, PIO_PA9A_TWD0|PIO_PA10A_TWCK0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NO_PWM, NO_TC }, + // 79 - TWI1 all pins + { PIOA, PIO_PA24A_TWD1|PIO_PA25A_TWCK1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NO_PWM, NO_TC }, + // 80 - UART (Serial) all pins + { PIOA, PIO_PA11A_URXD|PIO_PA12A_UTXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NO_PWM, NO_TC }, + // 81 - USART0 (Serial2) all pins + { PIOA, PIO_PA19A_RXD0|PIO_PA18A_TXD0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NO_PWM, NO_TC }, + // 82 - USART1 (Serial3) all pins + { PIOA, PIO_PA21A_RXD1|PIO_PA20A_TXD1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NO_PWM, NO_TC }, + // 83 - USART2 (Serial4) all pins + { PIOA, PIO_PA23A_RXD2|PIO_PA22A_TXD2, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NO_PWM, NO_TC }, + + // END + { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NO_PWM, NO_TC } +} ; + +/* + * UART objects + */ +RingBuffer rx_buffer1 ; + +UARTClass Serial( UART, UART_IRQn, ID_UART, &rx_buffer1 ) ; + +// IT handlers +void UART_IrqHandler(void) +{ + Serial.IrqHandler() ; +} + +// ---------------------------------------------------------------------------- +/* + * USART objects + */ +RingBuffer rx_buffer2 ; +RingBuffer rx_buffer3 ; +RingBuffer rx_buffer4 ; + +USARTClass Serial2( USART0, USART0_IRQn, ID_USART0, &rx_buffer2 ) ; +USARTClass Serial3( USART1, USART1_IRQn, ID_USART1, &rx_buffer3 ) ; +USARTClass Serial4( USART2, USART2_IRQn, ID_USART2, &rx_buffer4 ) ; + +// IT handlers +void USART0_IrqHandler( void ) +{ + Serial2.IrqHandler() ; +} + +void USART1_IrqHandler( void ) +{ + Serial3.IrqHandler() ; +} + +void USART2_IrqHandler( void ) +{ + Serial4.IrqHandler() ; +} + +// ---------------------------------------------------------------------------- + +#ifdef __cplusplus +extern "C" { +#endif + +// Should be made in a better way... +extern void analogOutputInit(void); + +/** + * + */ +extern void init( void ) +{ + SystemInit() ; + + // Set Systick to 1ms interval, common to all SAM3 variants + if ( SysTick_Config( SystemCoreClock / 1000 ) ) + { + // Capture error + while ( 1 ) ; + } + + // Disable watchdog, common to all SAM variants + WDT_Disable( WDT ) ; + + // Initialize Serial port UART, common to all SAM3 variants + PIO_Configure( + g_APinDescription[PINS_UART].pPort, + g_APinDescription[PINS_UART].ulPinType, + g_APinDescription[PINS_UART].ulPin, + g_APinDescription[PINS_UART].ulPinConfiguration); + + // Initialize Serial ports USART + PIO_Configure( + g_APinDescription[PINS_USART0].pPort, + g_APinDescription[PINS_USART0].ulPinType, + g_APinDescription[PINS_USART0].ulPin, + g_APinDescription[PINS_USART0].ulPinConfiguration); + PIO_Configure( + g_APinDescription[PINS_USART1].pPort, + g_APinDescription[PINS_USART1].ulPinType, + g_APinDescription[PINS_USART1].ulPin, + g_APinDescription[PINS_USART1].ulPinConfiguration); + PIO_Configure( + g_APinDescription[PINS_USART2].pPort, + g_APinDescription[PINS_USART2].ulPinType, + g_APinDescription[PINS_USART2].ulPin, + g_APinDescription[PINS_USART2].ulPinConfiguration); + + // Initialize 10bit Analog Controller + PMC_EnablePeripheral( ID_ADC ) ; + adc_init( ADC, SystemCoreClock, ADC_FREQ_MAX, ADC_STARTUP ) ; + adc_configure_timing( ADC, 15 ) ; + adc_configure_trigger( ADC, ADC_TRIG_SW ) ; + adc_disable_interrupt( ADC, 0xFFFFFFFF ) ; /* Disable all adc interrupt. */ + adc_disable_channel( ADC, ADC_ALL_CHANNEL ) ; + + // Initialize 12bit Analog Controller + PMC_EnablePeripheral( ID_ADC12B ) ; + adc12_init( ADC12B, SystemCoreClock, ADC12_FREQ_MAX, ADC12_STARTUP_FAST, 1 ) ; + adc12_configure_timing( ADC12B, 15 ) ; + adc12_configure_trigger( ADC12B, ADC_TRIG_SW ) ; + adc12_disable_interrupt( ADC12B, 0xFFFFFFFF ) ; /* Disable all adc interrupt. */ + adc12_disable_channel( ADC12B, ADC_ALL_CHANNEL ) ; + + // Initialize analogOutput module + analogOutputInit(); +} +#ifdef __cplusplus +} +#endif + diff --git a/hardware/sam/variants/arduino_due/variant.h b/hardware/sam/variants/arduino_due/variant.h new file mode 100644 index 000000000..b13eb4a3b --- /dev/null +++ b/hardware/sam/variants/arduino_due/variant.h @@ -0,0 +1,174 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _VARIANT_ARDUINO_DUE_ +#define _VARIANT_ARDUINO_DUE_ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "Arduino.h" +#ifdef __cplusplus +#include "UARTClass.h" +#include "USARTClass.h" +#endif + +/** + * Libc porting layers + */ +#if defined ( __GNUC__ ) /* GCC CS3 */ +# include /** RedHat Newlib minimal stub */ +#endif + +/*---------------------------------------------------------------------------- + * Definitions + *----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------*/ + +#ifndef arduino_due +#define arduino_due +#endif + +/** Name of the board */ +#define VARIANT_NAME "ARDUINO_DUE" + +/* +#define VARIANT_REV_A +#define VARIANT_REV_B +*/ + +/** Frequency of the board main oscillator */ +#define VARIANT_MAINOSC 12000000 + +/** Master clock frequency */ +#define VARIANT_MCK 96000000 + +/*---------------------------------------------------------------------------- + * Pins + *----------------------------------------------------------------------------*/ + +// Number of pins defined in PinDescription array +#define PINS_COUNT (84u) + +// LEDs +#define PIN_LED_13 (13u) +#define PIN_LED_RXL (73u) +#define PIN_LED_TXL (74u) +#define PIN_LED PIN_LED_13 +#define PIN_LED2 PIN_LED_RXL +#define PIN_LED3 PIN_LED_TXL + +/* + * SPI Interfaces + */ +#define SPI_INTERFACES_COUNT 1 + +#define SPI_INTERFACE SPI +#define SPI_INTERFACE_ID ID_SPI +#define PIN_SPI_SS (4u) +#define PIN_SPI_MOSI (76u) +#define PIN_SPI_MISO (75u) +#define PIN_SPI_SCK (77u) + +static const uint8_t SS = 4 ; +static const uint8_t MOSI = 76 ; +static const uint8_t MISO = 75 ; +static const uint8_t SCK = 77 ; + +/* + * Wire Interfaces + */ +#define WIRE_INTERFACES_COUNT 2 + +#define PIN_WIRE_SDA (20u) +#define PIN_WIRE_SCL (21u) +#define WIRE_INTERFACE TWI1 +#define WIRE_INTERFACE_ID ID_TWI1 +#define WIRE_ISR_HANDLER TWI1_IrqHandler + +#define PIN_WIRE1_SDA (68u) +#define PIN_WIRE1_SCL (69u) +#define WIRE1_INTERFACE TWI0 +#define WIRE1_INTERFACE_ID ID_TWI0 +#define WIRE1_ISR_HANDLER TWI0_IrqHandler + +/* + * UART/USART Interfaces + */ +#define PINS_UART (80u) + +#define PINS_USART0 (81u) +#define PINS_USART1 (82u) +#define PINS_USART2 (83u) + +/* + * Analog pins + */ +static const uint8_t A0 = 54; +static const uint8_t A1 = 55; +static const uint8_t A2 = 56; +static const uint8_t A3 = 57; +static const uint8_t A4 = 58; +static const uint8_t A5 = 59; +static const uint8_t A6 = 60; +static const uint8_t A7 = 61; +static const uint8_t A8 = 62; +static const uint8_t A9 = 63; +static const uint8_t A10 = 64; +static const uint8_t A11 = 65; +static const uint8_t A12 = 66; +static const uint8_t A13 = 67; +// static const uint8_t A14 = ; +// static const uint8_t A15 = ; + +/* + * PWM + */ +#define PWM_INTERFACE PWM +#define PWM_INTERFACE_ID ID_PWM +#define PWM_FREQUENCY 1000 +#define PWM_MAX_DUTY_CYCLE 255 +#define PWM_MIN_DUTY_CYCLE 0 + +/* + * TC + */ +#define TC_INTERFACE TC0 +#define TC_INTERFACE_ID ID_TC0 +#define TC_FREQUENCY 1000 +#define TC_MAX_DUTY_CYCLE 255 +#define TC_MIN_DUTY_CYCLE 0 + +/*---------------------------------------------------------------------------- + * Arduino objects - C++ only + *----------------------------------------------------------------------------*/ + +#ifdef __cplusplus + +extern UARTClass Serial ; + +extern USARTClass Serial2 ; +extern USARTClass Serial3 ; +extern USARTClass Serial4 ; + +#endif + +#endif /* _VARIANT_ARDUINO_DUE_ */ + diff --git a/hardware/sam/variants/sam3s_ek/SAM3S-EK_REVB.pdf b/hardware/sam/variants/sam3s_ek/SAM3S-EK_REVB.pdf new file mode 100644 index 000000000..6f3f55475 Binary files /dev/null and b/hardware/sam/variants/sam3s_ek/SAM3S-EK_REVB.pdf differ diff --git a/hardware/sam/variants/sam3s_ek/build_gcc/Makefile b/hardware/sam/variants/sam3s_ek/build_gcc/Makefile new file mode 100644 index 000000000..80f9cc02c --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/build_gcc/Makefile @@ -0,0 +1,42 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Makefile for compiling libboard +BOARD = + +SUBMAKE_OPTIONS=--no-builtin-rules --no-builtin-variables + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- + +all: sam3s_ek + +.PHONY: sam3s_ek +sam3s_ek: + @echo --- Making sam3s_ek + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f libvariant_sam3s_ek.mk +# @$(MAKE) $(SUBMAKE_OPTIONS) -f libvariant_sam3s_ek.mk + +.PHONY: clean +clean: + @echo --- Cleaning sam3s_ek + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f libvariant_sam3s_ek.mk $@ +# @$(MAKE) $(SUBMAKE_OPTIONS) -f libvariant_sam3s_ek.mk $@ + + diff --git a/hardware/sam/variants/sam3s_ek/build_gcc/debug.mk b/hardware/sam/variants/sam3s_ek/build_gcc/debug.mk new file mode 100644 index 000000000..d0716744a --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/build_gcc/debug.mk @@ -0,0 +1,25 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Optimization level +# -O1 Optimize +# -O2 Optimize even more +# -O3 Optimize yet more +# -O0 Reduce compilation time and make debugging produce the expected results +# -Os Optimize for size +OPTIMIZATION = -g -O0 -DDEBUG diff --git a/hardware/sam/variants/sam3s_ek/build_gcc/gcc.mk b/hardware/sam/variants/sam3s_ek/build_gcc/gcc.mk new file mode 100644 index 000000000..ebbf6d3c0 --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/build_gcc/gcc.mk @@ -0,0 +1,81 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Tool suffix when cross-compiling +#CROSS_COMPILE = ../../../../tools/CodeSourcery_arm/bin/arm-none-eabi- +CROSS_COMPILE = $(ARM_GCC_TOOLCHAIN)/arm-none-eabi- + +# Compilation tools +AR = $(CROSS_COMPILE)ar +CC = $(CROSS_COMPILE)gcc +CXX = $(CROSS_COMPILE)g++ +AS = $(CROSS_COMPILE)as +#LD = $(CROSS_COMPILE)ld +#SIZE = $(CROSS_COMPILE)size +NM = $(CROSS_COMPILE)nm +#OBJCOPY = $(CROSS_COMPILE)objcopy +RM=cs-rm -Rf +SEP=\\ + +# --------------------------------------------------------------------------------------- +# C Flags + +CFLAGS += -Wall -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int +CFLAGS += -Werror-implicit-function-declaration -Wmain -Wparentheses +CFLAGS += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused +CFLAGS += -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef +CFLAGS += -Wshadow -Wpointer-arith -Wbad-function-cast -Wwrite-strings +CFLAGS += -Wsign-compare -Waggregate-return -Wstrict-prototypes +CFLAGS += -Wmissing-prototypes -Wmissing-declarations +CFLAGS += -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations +CFLAGS += -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wlong-long +CFLAGS += -Wunreachable-code +CFLAGS += -Wcast-align +#CFLAGS += -Wmissing-noreturn +#CFLAGS += -Wconversion + +CFLAGS += --param max-inline-insns-single=500 -mcpu=cortex-m3 -mthumb -mlong-calls -ffunction-sections -nostdlib +CFLAGS += $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) -D$(VARIANT) + +# To reduce application size use only integer printf function. +CFLAGS += -Dprintf=iprintf + +# --------------------------------------------------------------------------------------- +# CPP Flags + +CPPFLAGS += -Wall -Wchar-subscripts -Wcomment -Wformat=2 +CPPFLAGS += -Wmain -Wparentheses -Wcast-align -Wunreachable-code +CPPFLAGS += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused +CPPFLAGS += -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef +CPPFLAGS += -Wshadow -Wpointer-arith -Wwrite-strings +CPPFLAGS += -Wsign-compare -Waggregate-return -Wmissing-declarations +CPPFLAGS += -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations +CPPFLAGS += -Wpacked -Wredundant-decls -Winline -Wlong-long +#CPPFLAGS += -Wmissing-noreturn +#CPPFLAGS += -Wconversion + +CPPFLAGS += --param max-inline-insns-single=500 -mcpu=cortex-m3 -mthumb -mlong-calls -ffunction-sections -fno-rtti -fno-exceptions +CPPFLAGS += $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) + +# To reduce application size use only integer printf function. +CPPFLAGS += -Dprintf=iprintf + +# --------------------------------------------------------------------------------------- +# ASM Flags + +ASFLAGS = -mcpu=cortex-m3 -mthumb -Wall -g $(OPTIMIZATION) $(INCLUDES) diff --git a/hardware/sam/variants/sam3s_ek/build_gcc/libvariant_sam3s_ek.mk b/hardware/sam/variants/sam3s_ek/build_gcc/libvariant_sam3s_ek.mk new file mode 100644 index 000000000..1af8f3d32 --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/build_gcc/libvariant_sam3s_ek.mk @@ -0,0 +1,174 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Makefile for compiling libArduino +.SUFFIXES: .o .a .c .s + +CHIP=__SAM3S4C__ +VARIANT=sam3s_ek +LIBNAME=libvariant_$(VARIANT) +TOOLCHAIN=gcc + +#------------------------------------------------------------------------------- +# Path +#------------------------------------------------------------------------------- + +# Output directories +OUTPUT_BIN = ../../../cores/sam + +# Libraries +PROJECT_BASE_PATH = .. +SYSTEM_PATH = ../../../system +CMSIS_PATH = $(SYSTEM_PATH)/CMSIS/Include +ARDUINO_PATH = ../../../cores/sam +VARIANT_BASE_PATH = ../../../variants +VARIANT_PATH = ../../../variants/$(VARIANT) +VARIANT_COMMON_PATH = ../../common + +#------------------------------------------------------------------------------- +# Files +#------------------------------------------------------------------------------- + +vpath %.h $(PROJECT_BASE_PATH) $(SYSTEM_PATH) $(VARIANT_PATH) $(VARIANT_COMMON_PATH) +#vpath %.c $(PROJECT_BASE_PATH) $(VARIANT_PATH) +vpath %.cpp $(PROJECT_BASE_PATH) $(PROJECT_BASE_PATH) $(VARIANT_COMMON_PATH) + +VPATH+=$(PROJECT_BASE_PATH) + +INCLUDES = +#INCLUDES += -I$(PROJECT_BASE_PATH) +INCLUDES += -I$(ARDUINO_PATH) +INCLUDES += -I$(SYSTEM_PATH) +INCLUDES += -I$(SYSTEM_PATH)/libsam +INCLUDES += -I$(VARIANT_BASE_PATH) +INCLUDES += -I$(VARIANT_PATH) +INCLUDES += -I$(CMSIS_PATH) + +#------------------------------------------------------------------------------- +ifdef DEBUG +include debug.mk +else +include release.mk +endif + +#------------------------------------------------------------------------------- +# Tools +#------------------------------------------------------------------------------- + +include $(TOOLCHAIN).mk + +#------------------------------------------------------------------------------- +ifdef DEBUG +OUTPUT_OBJ=debug +OUTPUT_LIB_POSTFIX=dbg +else +OUTPUT_OBJ=release +OUTPUT_LIB_POSTFIX=rel +endif + +OUTPUT_LIB=$(LIBNAME)_$(TOOLCHAIN)_$(OUTPUT_LIB_POSTFIX).a +OUTPUT_PATH=$(OUTPUT_OBJ)_$(VARIANT) + +#------------------------------------------------------------------------------- +# C source files and objects +#------------------------------------------------------------------------------- +C_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.c) + +C_OBJ_TEMP = $(patsubst %.c, %.o, $(notdir $(C_SRC))) + +# during development, remove some files +C_OBJ_FILTER=wiring_analog.o wiring_pulse.o + +C_OBJ=$(filter-out $(C_OBJ_FILTER), $(C_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# CPP source files and objects +#------------------------------------------------------------------------------- +CPP_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.cpp) +CPP_SRC+=$(wildcard $(VARIANT_COMMON_PATH)/*.cpp) + +CPP_OBJ_TEMP = $(patsubst %.cpp, %.o, $(notdir $(CPP_SRC))) + +# during development, remove some files +CPP_OBJ_FILTER=Tone.o + +CPP_OBJ=$(filter-out $(CPP_OBJ_FILTER), $(CPP_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# Assembler source files and objects +#------------------------------------------------------------------------------- +A_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.s) + +A_OBJ_TEMP=$(patsubst %.s, %.o, $(notdir $(A_SRC))) + +# during development, remove some files +A_OBJ_FILTER= + +A_OBJ=$(filter-out $(A_OBJ_FILTER), $(A_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- +all: $(VARIANT) + +$(VARIANT): create_output $(OUTPUT_LIB) + +.PHONY: create_output +create_output: + @echo --- Preparing $(VARIANT) files in $(OUTPUT_PATH) $(OUTPUT_BIN) + @echo ------------------------- + @echo *$(INCLUDES) + @echo ------------------------- + @echo *$(C_SRC) + @echo ------------------------- + @echo *$(C_OBJ) + @echo ------------------------- + @echo *$(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) + @echo ------------------------- + @echo *$(CPP_SRC) + @echo ------------------------- + @echo *$(CPP_OBJ) + @echo ------------------------- + @echo *$(addprefix $(OUTPUT_PATH)/, $(CPP_OBJ)) + @echo ------------------------- + @echo *$(A_SRC) + @echo ------------------------- + + -@mkdir $(OUTPUT_PATH) 1>NUL 2>&1 + +$(addprefix $(OUTPUT_PATH)/,$(C_OBJ)): $(OUTPUT_PATH)/%.o: %.c +# @$(CC) -v -c $(CFLAGS) $< -o $@ + @$(CC) -c $(CFLAGS) $< -o $@ + +$(addprefix $(OUTPUT_PATH)/,$(CPP_OBJ)): $(OUTPUT_PATH)/%.o: %.cpp +# @$(CC) -c $(CPPFLAGS) $< -o $@ + @$(CC) -xc++ -c $(CPPFLAGS) $< -o $@ + +$(addprefix $(OUTPUT_PATH)/,$(A_OBJ)): $(OUTPUT_PATH)/%.o: %.s + @$(AS) -c $(ASFLAGS) $< -o $@ + +$(OUTPUT_LIB): $(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(CPP_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(A_OBJ)) + @$(AR) -v -r "$(OUTPUT_BIN)/$@" $^ + @$(NM) "$(OUTPUT_BIN)/$@" > "$(OUTPUT_BIN)/$@.txt" + + +.PHONY: clean +clean: + @echo --- Cleaning $(VARIANT) files [$(OUTPUT_PATH)$(SEP)*.o] + -@$(RM) $(OUTPUT_PATH) 1>NUL 2>&1 + -@$(RM) $(OUTPUT_BIN)/$(OUTPUT_LIB) 1>NUL 2>&1 diff --git a/hardware/sam/variants/sam3s_ek/build_gcc/release.mk b/hardware/sam/variants/sam3s_ek/build_gcc/release.mk new file mode 100644 index 000000000..0d15157f4 --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/build_gcc/release.mk @@ -0,0 +1,25 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Optimization level +# -O1 Optimize +# -O2 Optimize even more +# -O3 Optimize yet more +# -O0 Reduce compilation time and make debugging produce the expected results +# -Os Optimize for size +OPTIMIZATION = -Os diff --git a/hardware/sam/variants/sam3s_ek/build_iar/libvariant_sam3s_ek.ewd b/hardware/sam/variants/sam3s_ek/build_iar/libvariant_sam3s_ek.ewd new file mode 100644 index 000000000..3ca049b67 --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/build_iar/libvariant_sam3s_ek.ewd @@ -0,0 +1,1769 @@ + + + + 2 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + ANGEL_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IARROM_ID + 2 + + 1 + 1 + 1 + + + + + + + + + JLINK_ID + 2 + + 13 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + MACRAIGOR_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + PEMICRO_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + + + + + + + RDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + + + + + + + STLINK_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + XDS100_ID + 2 + + 0 + 1 + 1 + + + + + + + $TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin + 1 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + ANGEL_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IARROM_ID + 2 + + 1 + 1 + 0 + + + + + + + + + JLINK_ID + 2 + + 13 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + MACRAIGOR_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + PEMICRO_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + + + + + + + RDI_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + + + + + + + STLINK_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + XDS100_ID + 2 + + 0 + 1 + 0 + + + + + + + $TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin + 1 + + + + + + diff --git a/hardware/sam/variants/sam3s_ek/build_iar/libvariant_sam3s_ek.ewp b/hardware/sam/variants/sam3s_ek/build_iar/libvariant_sam3s_ek.ewp new file mode 100644 index 000000000..35a44c755 --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/build_iar/libvariant_sam3s_ek.ewp @@ -0,0 +1,1824 @@ + + + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 21 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 28 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 13 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 21 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 28 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 13 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + common + + $PROJ_DIR$\..\..\common\cortex_handlers.cpp + + + $PROJ_DIR$\..\..\common\UARTClass.cpp + + + $PROJ_DIR$\..\..\common\UARTClass.h + + + $PROJ_DIR$\..\..\common\USARTClass.cpp + + + $PROJ_DIR$\..\..\common\USARTClass.h + + + + $PROJ_DIR$\..\pins_arduino.h + + + $PROJ_DIR$\..\variant.cpp + + + $PROJ_DIR$\..\variant.h + + + + diff --git a/hardware/sam/variants/sam3s_ek/debug_scripts/gcc/sam3s_ek_flash.gdb b/hardware/sam/variants/sam3s_ek/debug_scripts/gcc/sam3s_ek_flash.gdb new file mode 100644 index 000000000..2ce32081b --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/debug_scripts/gcc/sam3s_ek_flash.gdb @@ -0,0 +1,32 @@ +#******************************************************* +# +# Connect to J-Link and debug application in flash. +# + +# define 'reset' command +define reset + +# Connect to the J-Link gdb server +target remote localhost:2331 +# Reset the chip to get to a known state +monitor reset + +# Select flash device +monitor flash device = AT91SAM3S4C +# Enable flash download and flash breakpoints +monitor flash download = 1 +# Load the program +load + +# Reset peripheral (RSTC_CR) +set *0x400e1400 = 0xA5000004 + +# Initializing PC and stack pointer +mon reg sp=(0x400000) +set *0x400004 = *0x400004 & 0xFFFFFFFE +mon reg pc=(0x400004) +info reg + +# end of 'reset' command +end + diff --git a/hardware/sam/variants/sam3s_ek/debug_scripts/gcc/sam3s_ek_sram.gdb b/hardware/sam/variants/sam3s_ek/debug_scripts/gcc/sam3s_ek_sram.gdb new file mode 100644 index 000000000..019bd0a94 --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/debug_scripts/gcc/sam3s_ek_sram.gdb @@ -0,0 +1,27 @@ +#************************************************* +# +# Connect to J-Link and debug application in sram on SAM3S +# +# Note: +# First, users should modify Step1 and Step2 according to their project, +# then do Step3. + +# Step1: Connect to the J-Link gdb server +define reset +target remote localhost:2331 +monitor reset + +# Step2: Load file(eg. getting-started project) +load + +# Step3: Reset peripheral (RSTC_CR) +set *0x400e1400 = 0xA5000004 + +# Step4: Initializing PC and stack pointer +# Modify pc value to even before writing pc register +mon reg sp=(0x20000000) +set *0x20000004 = *0x20000004 & 0xFFFFFFFE +mon reg pc=(0x20000004) +info reg + +end diff --git a/hardware/sam/variants/sam3s_ek/debug_scripts/iar/sam3s_ek_flash.mac b/hardware/sam/variants/sam3s_ek/debug_scripts/iar/sam3s_ek_flash.mac new file mode 100644 index 000000000..786914233 --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/debug_scripts/iar/sam3s_ek_flash.mac @@ -0,0 +1,42 @@ +// --------------------------------------------------------- +// ATMEL Microcontroller Software Support - ROUSSET - +// --------------------------------------------------------- +// The software is delivered "AS IS" without warranty or +// condition of any kind, either express, implied or +// statutory. This includes without limitation any warranty +// or condition with respect to merchantability or fitness +// for any particular purpose, or against the infringements of +// intellectual property rights of others. +// --------------------------------------------------------- +// File: at91sam3s-ek-flash.mac +// User setup file for CSPY debugger. +// --------------------------------------------------------- + +/********************************************************************* +* +* execUserReset() +*/ +execUserReset() +{ + __message "------------------------------ execUserReset ---------------------------------"; + __message "-------------------------------Set PC Reset ----------------------------------"; + + __hwReset(0); + + // peripheral reset RSTC_CR + __writeMemory32(0xA5000004,0x400e1400,"Memory"); +} + +/********************************************************************* +* +* execUserPreload() +*/ +execUserPreload() +{ + __message "------------------------------ execUserPreload ---------------------------------"; + + __hwReset(0); //* Hardware Reset: CPU is automatically halted after the reset + + // peripheral reset RSTC_CR + __writeMemory32(0xA5000004,0x400e1400,"Memory"); +} diff --git a/hardware/sam/variants/sam3s_ek/debug_scripts/iar/sam3s_ek_sram.mac b/hardware/sam/variants/sam3s_ek/debug_scripts/iar/sam3s_ek_sram.mac new file mode 100644 index 000000000..94d385add --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/debug_scripts/iar/sam3s_ek_sram.mac @@ -0,0 +1,42 @@ +// --------------------------------------------------------- +// ATMEL Microcontroller Software Support - ROUSSET - +// --------------------------------------------------------- +// The software is delivered "AS IS" without warranty or +// condition of any kind, either express, implied or +// statutory. This includes without limitation any warranty +// or condition with respect to merchantability or fitness +// for any particular purpose, or against the infringements of +// intellectual property rights of others. +// --------------------------------------------------------- +// File: at91sam3s-ek-sram.mac +// User setup file for CSPY debugger. +// --------------------------------------------------------- + +/********************************************************************* +* +* execUserReset() +*/ +execUserReset() +{ + __message "------------------------------ execUserReset ---------------------------------"; + __message "-------------------------------Set PC Reset ----------------------------------"; + + __hwReset(0); + + // peripheral reset RSTC_CR + __writeMemory32(0xA5000004,0x400e1400,"Memory"); +} + +/********************************************************************* +* +* execUserPreload() +*/ +execUserPreload() +{ + __message "------------------------------ execUserPreload ---------------------------------"; + + __hwReset(0); //* Hardware Reset: CPU is automatically halted after the reset + + // peripheral reset RSTC_CR + __writeMemory32(0xA5000004,0x400e1400,"Memory"); +} diff --git a/hardware/sam/variants/sam3s_ek/linker_scripts/README.txt b/hardware/sam/variants/sam3s_ek/linker_scripts/README.txt new file mode 100644 index 000000000..c2ce9dbf0 --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/linker_scripts/README.txt @@ -0,0 +1,9 @@ +files to be used for Arduino API build: +flash_arduino.ld + +files to be used for Arduino Bootloader build: +flash_arduino_bootloader.ld + +files to be used for other uses of board +flash.ld +sram.ld \ No newline at end of file diff --git a/hardware/sam/variants/sam3s_ek/linker_scripts/gcc/flash.ld b/hardware/sam/variants/sam3s_ek/linker_scripts/gcc/flash.ld new file mode 100644 index 000000000..c47a2c508 --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/linker_scripts/gcc/flash.ld @@ -0,0 +1,140 @@ +/* ---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2009, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------------ + * Linker script for running in internal FLASH on the ATSAM3S4 + *----------------------------------------------------------------------------*/ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00400000, LENGTH = 0x00040000 /* flash, 256K */ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x0000c000 /* sram, 48K */ +} + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(0x4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + *(.stack .stack.*) + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/hardware/sam/variants/sam3s_ek/linker_scripts/gcc/flash_arduino.ld b/hardware/sam/variants/sam3s_ek/linker_scripts/gcc/flash_arduino.ld new file mode 100644 index 000000000..1900568e9 --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/linker_scripts/gcc/flash_arduino.ld @@ -0,0 +1,140 @@ +/* ---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2009, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------------ + * Linker script for running in internal FLASH on the ATSAM3S4 + *----------------------------------------------------------------------------*/ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00404000, LENGTH = 0x0003c000 /* flash, 240KB = 256K minus 16KB of bootloader */ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x0000c000 /* sram, 48KB */ +} + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(0x4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + *(.stack .stack.*) + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/hardware/sam/variants/sam3s_ek/linker_scripts/gcc/flash_arduino_bootloader.ld b/hardware/sam/variants/sam3s_ek/linker_scripts/gcc/flash_arduino_bootloader.ld new file mode 100644 index 000000000..b1f362548 --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/linker_scripts/gcc/flash_arduino_bootloader.ld @@ -0,0 +1,140 @@ +/* ---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2009, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------------ + * Linker script for running in internal FLASH on the ATSAM3S4 + *----------------------------------------------------------------------------*/ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00400000, LENGTH = 0x00004000 /* flash, 16KB */ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x0000c000 /* sram, 48KB */ +} + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(0x4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + *(.stack .stack.*) + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/hardware/sam/variants/sam3s_ek/linker_scripts/gcc/sram.ld b/hardware/sam/variants/sam3s_ek/linker_scripts/gcc/sram.ld new file mode 100644 index 000000000..9c6875554 --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/linker_scripts/gcc/sram.ld @@ -0,0 +1,140 @@ +/* ---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2009, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------------ + * Linker script for running in internal SRAM on the ATSAM3S4 + *----------------------------------------------------------------------------*/ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00400000, LENGTH = 0x00040000 /* flash, 256K */ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x0000c000 /* sram, 48K */ +} + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(0x4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > ram + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + *(.stack .stack.*) + } > ram + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > ram + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _end = . ; +} diff --git a/hardware/sam/variants/sam3s_ek/linker_scripts/iar/sam3s_ek_flash.icf b/hardware/sam/variants/sam3s_ek/linker_scripts/iar/sam3s_ek_flash.icf new file mode 100644 index 000000000..d4bb4deb5 --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/linker_scripts/iar/sam3s_ek_flash.icf @@ -0,0 +1,28 @@ +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */ +/*-Vector table start*/ +define symbol __ICFEDIT_vector_start__ = 0x00400000; +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; +define symbol __ICFEDIT_region_RAM_end__ = 0x2000BFFF; +define symbol __ICFEDIT_region_ROM_start__ = 0x00400000; +define symbol __ICFEDIT_region_ROM_end__ = 0x0043FFFF; +/*-Sizes-*/ +define symbol __ICFEDIT_size_cstack__ = 0x4000; +define symbol __ICFEDIT_size_heap__ = 0x2000; +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; +define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; + +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; +define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; + +initialize by copy { readwrite }; +do not initialize { section .noinit }; + +place at address mem:__ICFEDIT_vector_start__ { readonly section .intvec }; +place in ROM_region { readonly }; +place in RAM_region { readwrite, block CSTACK, block HEAP }; diff --git a/hardware/sam/variants/sam3s_ek/linker_scripts/iar/sam3s_ek_sram.icf b/hardware/sam/variants/sam3s_ek/linker_scripts/iar/sam3s_ek_sram.icf new file mode 100644 index 000000000..1666effb4 --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/linker_scripts/iar/sam3s_ek_sram.icf @@ -0,0 +1,25 @@ +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */ +/*-Vector table start*/ +define symbol __ICFEDIT_vector_start__ = 0x20000000; +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; +define symbol __ICFEDIT_region_RAM_end__ = 0x2000BFFF; +/*-Sizes-*/ +define symbol __ICFEDIT_size_cstack__ = 0x2000; +define symbol __ICFEDIT_size_heap__ = 0x200; +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; + +/* define block RamVect with alignment = 8, size = __ICFEDIT_size_vectors__ { }; */ +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; +define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; + +initialize by copy with packing=none { readwrite }; +do not initialize { section .noinit }; + +place at address mem:__ICFEDIT_vector_start__ { readonly section .intvec }; +place in RAM_region { readonly, readwrite, block CSTACK, block HEAP }; diff --git a/hardware/sam/variants/sam3s_ek/variant.cpp b/hardware/sam/variants/sam3s_ek/variant.cpp new file mode 100644 index 000000000..5352e089b --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/variant.cpp @@ -0,0 +1,229 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "variant.h" + +/* + * Pins descriptions + */ +extern const PinDescription g_APinDescription[]= +{ + // LEDS, 0..2 +#if defined VARIANT_REV_A + { PIOC, PIO_PC20, ID_PIOC, PIO_OUTPUT_1, PIO_DEFAULT }, // LED BLUE + { PIOC, PIO_PC21, ID_PIOC, PIO_OUTPUT_1, PIO_DEFAULT }, // LED GREEN + { PIOC, PIO_PC22, ID_PIOC, PIO_OUTPUT_1, PIO_DEFAULT }, // LED RED +#elif defined VARIANT_REV_B + { PIOA, PIO_PA19, ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT }, // LED BLUE + { PIOA, PIO_PA20, ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT }, // LED GREEN + { PIOC, PIO_PC20, ID_PIOC, PIO_OUTPUT_1, PIO_DEFAULT }, // LED RED +#else +#error "No board revision defined" +#endif + + // Clock 32KHz, 3..4 + { PIOA, PIO_PA7, ID_PIOA, PIO_NOT_A_PIN, PIO_DEFAULT }, // XIN32 + { PIOA, PIO_PA8, ID_PIOA, PIO_NOT_A_PIN, PIO_DEFAULT }, // XOUT32 + + // Clock 12MHz, 5..6 + { PIOB, PIO_PB9, ID_PIOB, PIO_NOT_A_PIN, PIO_DEFAULT }, // XIN + { PIOB, PIO_PB8, ID_PIOB, PIO_NOT_A_PIN, PIO_DEFAULT }, // XOUT + + // JTAG, 7..10 + { PIOB, PIO_PB4, ID_PIOB, PIO_NOT_A_PIN, PIO_DEFAULT }, // TDI + { PIOB, PIO_PB5, ID_PIOB, PIO_NOT_A_PIN, PIO_DEFAULT }, // TDO + { PIOB, PIO_PB6, ID_PIOB, PIO_NOT_A_PIN, PIO_DEFAULT }, // TMS + { PIOB, PIO_PB7, ID_PIOB, PIO_NOT_A_PIN, PIO_DEFAULT }, // TCK + + // USB, 11..13 + { PIOB, PIO_PB10, ID_PIOB, PIO_NOT_A_PIN, PIO_DEFAULT }, // DDM + { PIOB, PIO_PB11, ID_PIOB, PIO_NOT_A_PIN, PIO_DEFAULT }, // DDP +#if defined VARIANT_REV_A + { PIOC, PIO_PC23, ID_PIOC, PIO_INPUT, PIO_PULLUP }, // USB_VBUS +#elif defined VARIANT_REV_B + { PIOC, PIO_PC21, ID_PIOC, PIO_INPUT, PIO_PULLUP }, // USB_VBUS +#else +#error "No board revision defined" +#endif + + // UART0 (Serial), 14..16 + { PIOA, PIO_PA9, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // URXD0 + { PIOA, PIO_PA10, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // UTXD0 + { PIOA, PIO_PA9|PIO_PA10, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // All UART0 pins + + // Push buttons, 17..18 + { PIOB, PIO_PB3, ID_PIOB, PIO_INPUT, PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE }, // PB1 + { PIOC, PIO_PC12, ID_PIOC, PIO_INPUT, PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_FALL_EDGE }, // PB2 + + // QTouch Slider, 19..20 + { PIOA, (PIO_PA0 | PIO_PA2 | PIO_PA4), ID_PIOA, PIO_INPUT, PIO_DEFAULT }, // QTSLIDR SNS + { PIOA, (PIO_PA1 | PIO_PA3 | PIO_PA5), ID_PIOA, PIO_INPUT, PIO_DEFAULT }, // QTSLIDR SNSK + + // QTouch Buttons, 21..22 + { PIOC, (PIO_PC22 | PIO_PC24 | PIO_PC26 | PIO_PC28 | PIO_PC30), ID_PIOC, PIO_INPUT, PIO_DEFAULT }, // KEYS SNS + { PIOC, (PIO_PC23 | PIO_PC25 | PIO_PC27 | PIO_PC29 | PIO_PC31), ID_PIOC, PIO_INPUT, PIO_DEFAULT }, // KEYS SNSK + + // MCI (SDCARD), 23..30 +#if defined VARIANT_REV_A + { PIOA, PIO_PA15, ID_PIOA, PIO_INPUT, PIO_PULLUP }, // MCI Card Detect +#elif defined VARIANT_REV_B + { PIOA, PIO_PA6, ID_PIOA, PIO_INPUT, PIO_PULLUP }, // MCI Card Detect +#else +#error "No board revision defined" +#endif + { PIOA, PIO_PA30, ID_PIOA, PIO_PERIPH_C, PIO_PULLUP }, // MCDA0 + { PIOA, PIO_PA31, ID_PIOA, PIO_PERIPH_C, PIO_PULLUP }, // MCDA1 + { PIOA, PIO_PA26, ID_PIOA, PIO_PERIPH_C, PIO_PULLUP }, // MCDA2 + { PIOA, PIO_PA27, ID_PIOA, PIO_PERIPH_C, PIO_PULLUP }, // MCDA3 + { PIOA, PIO_PA28, ID_PIOA, PIO_PERIPH_C, PIO_PULLUP }, // MCCDA + { PIOA, PIO_PA29, ID_PIOA, PIO_PERIPH_C, PIO_PULLUP }, // MCCK + + { PIOA, PIO_PA26|PIO_PA27|PIO_PA28|PIO_PA29|PIO_PA30|PIO_PA31, ID_PIOA, PIO_PERIPH_C, PIO_PULLUP }, // All MCI Pins + + // SPI, 31..34 + { PIOA, PIO_PA12A_MISO, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // MISO + { PIOA, PIO_PA13A_MOSI, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // MOSI + { PIOA, PIO_PA14A_SPCK, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // SPCK + { PIOA, PIO_PA11A_NPCS0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // NPCS0 + + // TouchScreen, 35..36 +#if defined VARIANT_REV_A + { PIOA, PIO_PA4, ID_PIOA, PIO_INPUT, PIO_PULLUP }, // IRQ_TSC + { PIOA, PIO_PA5, ID_PIOA, PIO_INPUT, PIO_PULLUP }, // BUSY_TSC +#elif defined VARIANT_REV_B + { PIOA, PIO_PA16, ID_PIOA, PIO_INPUT, PIO_PULLUP }, // IRQ_TSC + { PIOA, PIO_PA17, ID_PIOA, PIO_INPUT, PIO_PULLUP }, // BUSY_TSC +#else +#error "No board revision defined" +#endif + + // USART1, 37..41 + { PIOA, PIO_PA21A_RXD1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // RXD1 + { PIOA, PIO_PA22A_TXD1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // TXD1 + { PIOA, PIO_PA24A_RTS1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // RTS1 + { PIOA, PIO_PA25A_CTS1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // CTS1 + { PIOA, PIO_PA23A_SCK1, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT }, // COM1 ENABLE (MAX232) + + // LCD, 42..47 + { PIOC, 0xFF, ID_PIOC, PIO_PERIPH_A, PIO_PULLUP }, // EBI Data bus + { PIOC, PIO_PC8, ID_PIOC, PIO_PERIPH_A, PIO_PULLUP }, // EBI_NWE + { PIOC, PIO_PC11, ID_PIOC, PIO_PERIPH_A, PIO_PULLUP }, // EBI_NRD + { PIOC, PIO_PC15, ID_PIOC, PIO_PERIPH_A, PIO_PULLUP }, // LCD CS + { PIOC, PIO_PC19, ID_PIOC, PIO_PERIPH_A, PIO_PULLUP }, // LCD RS + { PIOC, PIO_PC13, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT }, // LCD BackLight + + { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT } // END +} ; + +/* + * UART objects + */ +RingBuffer rx_buffer1 ; +RingBuffer tx_buffer1 ; +RingBuffer rx_buffer2 ; +RingBuffer tx_buffer2 ; + +UARTClass Serial( UART0, UART0_IRQn, ID_UART0, &rx_buffer1, &tx_buffer1 ) ; +UARTClass Serial2( UART1, UART1_IRQn, ID_UART1, &rx_buffer2, &tx_buffer2 ) ; + +#ifdef __cplusplus +extern "C" { +#endif + +// IT handlers +extern void UART0_IrqHandler( void ) +{ + Serial.IrqHandler() ; +} + +extern void UART1_IrqHandler( void ) +{ + Serial2.IrqHandler() ; +} + +#ifdef __cplusplus +} +#endif + +// ---------------------------------------------------------------------------- +/* + * USART objects + */ +RingBuffer rx_buffer3 ; +RingBuffer tx_buffer3 ; +RingBuffer rx_buffer4 ; +RingBuffer tx_buffer4 ; + +USARTClass Serial3( USART0, USART0_IRQn, ID_USART0, &rx_buffer3, &tx_buffer3 ) ; +USARTClass Serial4( USART1, USART1_IRQn, ID_USART1, &rx_buffer4, &tx_buffer4 ) ; + +#ifdef __cplusplus +extern "C" { +#endif + +// IT handlers +extern void USART0_IrqHandler( void ) +{ + Serial3.IrqHandler() ; +} + +extern void USART1_IrqHandler( void ) +{ + Serial4.IrqHandler() ; +} + +#ifdef __cplusplus +} +#endif + +// ---------------------------------------------------------------------------- + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * + */ +extern void init( void ) +{ + SystemInit() ; + + /* Set Systick to 1ms interval, common to all SAM3 variants */ + if ( SysTick_Config( SystemCoreClock / 1000 ) ) + { + /* Capture error */ + while ( 1 ) ; + } + + /* Disable watchdog, common to all SAM variants */ + WDT_Disable( WDT ) ; + + // Initialize Serial port UART0, common to all SAM3 variants + PIO_Configure( g_APinDescription[PINS_UART].pPort, g_APinDescription[PINS_UART].ulPinType, + g_APinDescription[PINS_UART].ulPin, g_APinDescription[PINS_UART].ulPinConfiguration ) ; + + // Switch off Power LED + PIO_Configure( g_APinDescription[PIN_LED_RED].pPort, g_APinDescription[PIN_LED_RED].ulPinType, + g_APinDescription[PIN_LED_RED].ulPin, g_APinDescription[PIN_LED_RED].ulPinConfiguration ) ; + PIO_Clear( g_APinDescription[PIN_LED_RED].pPort, g_APinDescription[PIN_LED_RED].ulPin ) ; +} +#ifdef __cplusplus +} +#endif + diff --git a/hardware/sam/variants/sam3s_ek/variant.h b/hardware/sam/variants/sam3s_ek/variant.h new file mode 100644 index 000000000..b2cb9256e --- /dev/null +++ b/hardware/sam/variants/sam3s_ek/variant.h @@ -0,0 +1,106 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _VARIANT_SAM3S_EK_ +#define _VARIANT_SAM3S_EK_ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "Arduino.h" +#include "UARTClass.h" +#include "USARTClass.h" + +/** + * Libc porting layers + */ +#if defined ( __GNUC__ ) /* GCC CS3 */ +# include /** RedHat Newlib minimal stub */ +#endif + +/*---------------------------------------------------------------------------- + * Definitions + *----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------*/ + +#ifndef sam3s_ek +#define sam3s_ek +#endif + +/** Name of the board */ +#define VARIANT_NAME "SAM3S-EK" + +#define VARIANT_REV_A +/* +#define VARIANT_REV_B +*/ + +/** Frequency of the board main oscillator */ +#define VARIANT_MAINOSC 12000000 + +/** Master clock frequency */ +#define VARIANT_MCK 64000000 + +/*---------------------------------------------------------------------------- + * Pins + *----------------------------------------------------------------------------*/ + +#define PIN_LED_BLUE (0u) +#define PIN_LED_GREEN (1u) +#define PIN_LED_RED (2u) +#define PIN_LED PIN_LED_BLUE + +#define PIN_DAC0 (u) + +static const uint8_t SS = 34 ; +static const uint8_t MOSI = 32 ; +static const uint8_t MISO = 31 ; +static const uint8_t SCK = 33 ; + +#define PINS_UART (16u) + +#if defined VARIANT_REV_A +# define PIN_TSC_IRQ_WUP_ID (1UL << 3) +#elif defined VARIANT_REV_B +# define PIN_TSC_IRQ_WUP_ID (1UL << 15) +#else +#error "No board revision defined" +#endif + +#define BOARD_LCD_PINS PIN_EBI_DATA_BUS, PIN_EBI_NRD, PIN_EBI_NWE, PIN_EBI_NCS1, PIN_EBI_LCD_RS +#define BOARD_LCD_BASE 0x61000000 /** Define ILI9325 base address. */ +#define BOARD_LCD_RS (1 << 1) /** Define ILI9325 register select signal. */ + +/*---------------------------------------------------------------------------- + * Arduino objects - C++ only + *----------------------------------------------------------------------------*/ + +#ifdef __cplusplus + +extern UARTClass Serial ; +extern UARTClass Serial2 ; + +extern USARTClass Serial3 ; +extern USARTClass Serial4 ; + +#endif + +#endif /* _VARIANT_SAM3S_EK_ */ + diff --git a/hardware/sam/variants/sam3u_ek/SAM3U-EK_REVC.pdf b/hardware/sam/variants/sam3u_ek/SAM3U-EK_REVC.pdf new file mode 100644 index 000000000..4f828cf85 Binary files /dev/null and b/hardware/sam/variants/sam3u_ek/SAM3U-EK_REVC.pdf differ diff --git a/hardware/sam/variants/sam3u_ek/build_gcc/Makefile b/hardware/sam/variants/sam3u_ek/build_gcc/Makefile new file mode 100644 index 000000000..024445216 --- /dev/null +++ b/hardware/sam/variants/sam3u_ek/build_gcc/Makefile @@ -0,0 +1,42 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Makefile for compiling libboard +BOARD = + +SUBMAKE_OPTIONS=--no-builtin-rules --no-builtin-variables + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- + +all: sam3u_ek + +.PHONY: sam3u_ek +sam3u_ek: + @echo --- Making sam3u_ek + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f libvariant_sam3u_ek.mk +# @$(MAKE) $(SUBMAKE_OPTIONS) -f libvariant_sam3u_ek.mk + +.PHONY: clean +clean: + @echo --- Cleaning sam3u_ek + @$(MAKE) DEBUG=1 $(SUBMAKE_OPTIONS) -f libvariant_sam3u_ek.mk $@ +# @$(MAKE) $(SUBMAKE_OPTIONS) -f libvariant_sam3u_ek.mk $@ + + diff --git a/hardware/sam/variants/sam3u_ek/build_gcc/debug.mk b/hardware/sam/variants/sam3u_ek/build_gcc/debug.mk new file mode 100644 index 000000000..d0716744a --- /dev/null +++ b/hardware/sam/variants/sam3u_ek/build_gcc/debug.mk @@ -0,0 +1,25 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Optimization level +# -O1 Optimize +# -O2 Optimize even more +# -O3 Optimize yet more +# -O0 Reduce compilation time and make debugging produce the expected results +# -Os Optimize for size +OPTIMIZATION = -g -O0 -DDEBUG diff --git a/hardware/sam/variants/sam3u_ek/build_gcc/gcc.mk b/hardware/sam/variants/sam3u_ek/build_gcc/gcc.mk new file mode 100644 index 000000000..34ceef055 --- /dev/null +++ b/hardware/sam/variants/sam3u_ek/build_gcc/gcc.mk @@ -0,0 +1,82 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Tool suffix when cross-compiling +#CROSS_COMPILE = ../../../../tools/CodeSourcery_arm/bin/arm-none-eabi- +CROSS_COMPILE = $(ARM_GCC_TOOLCHAIN)/arm-none-eabi- + +# Compilation tools +AR = $(CROSS_COMPILE)ar +CC = $(CROSS_COMPILE)gcc +CXX = $(CROSS_COMPILE)g++ +AS = $(CROSS_COMPILE)as +#LD = $(CROSS_COMPILE)ld +#SIZE = $(CROSS_COMPILE)size +NM = $(CROSS_COMPILE)nm +#OBJCOPY = $(CROSS_COMPILE)objcopy +RM=cs-rm -Rf +SEP=\\ + +# --------------------------------------------------------------------------------------- +# C Flags + +CFLAGS += -Wall -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int +CFLAGS += -Werror-implicit-function-declaration -Wmain -Wparentheses +CFLAGS += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused +CFLAGS += -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef +CFLAGS += -Wshadow -Wpointer-arith -Wbad-function-cast -Wwrite-strings +CFLAGS += -Wsign-compare -Waggregate-return -Wstrict-prototypes +CFLAGS += -Wmissing-prototypes -Wmissing-declarations +CFLAGS += -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations +CFLAGS += -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wlong-long +CFLAGS += -Wunreachable-code +CFLAGS += -Wcast-align +#CFLAGS += -Wmissing-noreturn +#CFLAGS += -Wconversion + +CFLAGS += --param max-inline-insns-single=500 -mcpu=cortex-m3 -mthumb -mlong-calls -ffunction-sections -nostdlib +CFLAGS += $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) -D$(VARIANT) + +# To reduce application size use only integer printf function. +CFLAGS += -Dprintf=iprintf + +# --------------------------------------------------------------------------------------- +# CPP Flags + +CPPFLAGS += -Wall -Wchar-subscripts -Wcomment -Wformat=2 +CPPFLAGS += -Wmain -Wparentheses -Wcast-align -Wunreachable-code +CPPFLAGS += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused +CPPFLAGS += -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef +CPPFLAGS += -Wshadow -Wpointer-arith -Wwrite-strings +CPPFLAGS += -Wsign-compare -Waggregate-return -Wmissing-declarations +CPPFLAGS += -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations +CPPFLAGS += -Wpacked -Wredundant-decls -Winline -Wlong-long +#CPPFLAGS += -Wmissing-noreturn +#CPPFLAGS += -Wconversion + +# -fno-rtti -fno-exceptions +CPPFLAGS += --param max-inline-insns-single=500 -mcpu=cortex-m3 -mthumb -mlong-calls -ffunction-sections +CPPFLAGS += $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) + +# To reduce application size use only integer printf function. +CPPFLAGS += -Dprintf=iprintf + +# --------------------------------------------------------------------------------------- +# ASM Flags + +ASFLAGS = -mcpu=cortex-m3 -mthumb -Wall -g $(OPTIMIZATION) $(INCLUDES) diff --git a/hardware/sam/variants/sam3u_ek/build_gcc/libvariant_sam3u_ek.mk b/hardware/sam/variants/sam3u_ek/build_gcc/libvariant_sam3u_ek.mk new file mode 100644 index 000000000..8254f3c52 --- /dev/null +++ b/hardware/sam/variants/sam3u_ek/build_gcc/libvariant_sam3u_ek.mk @@ -0,0 +1,176 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Makefile for compiling libArduino +.SUFFIXES: .o .a .c .s + +CHIP=__SAM3U4E__ +VARIANT=sam3u_ek +LIBNAME=libvariant_$(VARIANT) +TOOLCHAIN=gcc + +#------------------------------------------------------------------------------- +# Path +#------------------------------------------------------------------------------- + +# Output directories +OUTPUT_BIN = ../../../cores/sam + +# Libraries +PROJECT_BASE_PATH = .. +SYSTEM_PATH = ../../../system +CMSIS_PATH = $(SYSTEM_PATH)/CMSIS/Include +ARDUINO_PATH = ../../../cores/sam +VARIANT_BASE_PATH = ../../../variants +VARIANT_PATH = ../../../variants/$(VARIANT) +#VARIANT_COMMON_PATH = ../../common + +#------------------------------------------------------------------------------- +# Files +#------------------------------------------------------------------------------- + +vpath %.h $(PROJECT_BASE_PATH) $(SYSTEM_PATH) $(VARIANT_PATH) +#$(VARIANT_COMMON_PATH) +#vpath %.c $(PROJECT_BASE_PATH) $(VARIANT_PATH) +vpath %.cpp $(PROJECT_BASE_PATH) $(PROJECT_BASE_PATH) +#$(VARIANT_COMMON_PATH) + +VPATH+=$(PROJECT_BASE_PATH) + +INCLUDES = +#INCLUDES += -I$(PROJECT_BASE_PATH) +INCLUDES += -I$(ARDUINO_PATH) +INCLUDES += -I$(SYSTEM_PATH) +INCLUDES += -I$(SYSTEM_PATH)/libsam +INCLUDES += -I$(VARIANT_BASE_PATH) +INCLUDES += -I$(VARIANT_PATH) +INCLUDES += -I$(CMSIS_PATH) + +#------------------------------------------------------------------------------- +ifdef DEBUG +include debug.mk +else +include release.mk +endif + +#------------------------------------------------------------------------------- +# Tools +#------------------------------------------------------------------------------- + +include $(TOOLCHAIN).mk + +#------------------------------------------------------------------------------- +ifdef DEBUG +OUTPUT_OBJ=debug +OUTPUT_LIB_POSTFIX=dbg +else +OUTPUT_OBJ=release +OUTPUT_LIB_POSTFIX=rel +endif + +OUTPUT_LIB=$(LIBNAME)_$(TOOLCHAIN)_$(OUTPUT_LIB_POSTFIX).a +OUTPUT_PATH=$(OUTPUT_OBJ)_$(VARIANT) + +#------------------------------------------------------------------------------- +# C source files and objects +#------------------------------------------------------------------------------- +C_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.c) + +C_OBJ_TEMP = $(patsubst %.c, %.o, $(notdir $(C_SRC))) + +# during development, remove some files +C_OBJ_FILTER= + +C_OBJ=$(filter-out $(C_OBJ_FILTER), $(C_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# CPP source files and objects +#------------------------------------------------------------------------------- +CPP_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.cpp) +#CPP_SRC+=$(wildcard $(VARIANT_COMMON_PATH)/*.cpp) + +CPP_OBJ_TEMP = $(patsubst %.cpp, %.o, $(notdir $(CPP_SRC))) + +# during development, remove some files +CPP_OBJ_FILTER= + +CPP_OBJ=$(filter-out $(CPP_OBJ_FILTER), $(CPP_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# Assembler source files and objects +#------------------------------------------------------------------------------- +A_SRC=$(wildcard $(PROJECT_BASE_PATH)/*.s) + +A_OBJ_TEMP=$(patsubst %.s, %.o, $(notdir $(A_SRC))) + +# during development, remove some files +A_OBJ_FILTER= + +A_OBJ=$(filter-out $(A_OBJ_FILTER), $(A_OBJ_TEMP)) + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- +all: $(VARIANT) + +$(VARIANT): create_output $(OUTPUT_LIB) + +.PHONY: create_output +create_output: + @echo --- Preparing $(VARIANT) files in $(OUTPUT_PATH) $(OUTPUT_BIN) + @echo ------------------------- + @echo *$(INCLUDES) + @echo ------------------------- + @echo *$(C_SRC) + @echo ------------------------- + @echo *$(C_OBJ) + @echo ------------------------- + @echo *$(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) + @echo ------------------------- + @echo *$(CPP_SRC) + @echo ------------------------- + @echo *$(CPP_OBJ) + @echo ------------------------- + @echo *$(addprefix $(OUTPUT_PATH)/, $(CPP_OBJ)) + @echo ------------------------- + @echo *$(A_SRC) + @echo ------------------------- + + -@mkdir $(OUTPUT_PATH) 1>NUL 2>&1 + +$(addprefix $(OUTPUT_PATH)/,$(C_OBJ)): $(OUTPUT_PATH)/%.o: %.c +# @$(CC) -v -c $(CFLAGS) $< -o $@ + @$(CC) -c $(CFLAGS) $< -o $@ + +$(addprefix $(OUTPUT_PATH)/,$(CPP_OBJ)): $(OUTPUT_PATH)/%.o: %.cpp +# @$(CC) -c $(CPPFLAGS) $< -o $@ + @$(CC) -xc++ -c $(CPPFLAGS) $< -o $@ + +$(addprefix $(OUTPUT_PATH)/,$(A_OBJ)): $(OUTPUT_PATH)/%.o: %.s + @$(AS) -c $(ASFLAGS) $< -o $@ + +$(OUTPUT_LIB): $(addprefix $(OUTPUT_PATH)/, $(C_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(CPP_OBJ)) $(addprefix $(OUTPUT_PATH)/, $(A_OBJ)) + @$(AR) -v -r "$(OUTPUT_BIN)/$@" $^ + @$(NM) "$(OUTPUT_BIN)/$@" > "$(OUTPUT_BIN)/$@.txt" + + +.PHONY: clean +clean: + @echo --- Cleaning $(VARIANT) files [$(OUTPUT_PATH)$(SEP)*.o] + -@$(RM) $(OUTPUT_PATH) 1>NUL 2>&1 + -@$(RM) $(OUTPUT_BIN)/$(OUTPUT_LIB) 1>NUL 2>&1 diff --git a/hardware/sam/variants/sam3u_ek/build_gcc/release.mk b/hardware/sam/variants/sam3u_ek/build_gcc/release.mk new file mode 100644 index 000000000..0d15157f4 --- /dev/null +++ b/hardware/sam/variants/sam3u_ek/build_gcc/release.mk @@ -0,0 +1,25 @@ +# +# Copyright (c) 2011 Arduino. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# Optimization level +# -O1 Optimize +# -O2 Optimize even more +# -O3 Optimize yet more +# -O0 Reduce compilation time and make debugging produce the expected results +# -Os Optimize for size +OPTIMIZATION = -Os diff --git a/hardware/sam/variants/sam3u_ek/debug_scripts/gcc/sam3u_ek_flash.gdb b/hardware/sam/variants/sam3u_ek/debug_scripts/gcc/sam3u_ek_flash.gdb new file mode 100644 index 000000000..a0fb3fd20 --- /dev/null +++ b/hardware/sam/variants/sam3u_ek/debug_scripts/gcc/sam3u_ek_flash.gdb @@ -0,0 +1,33 @@ +#******************************************************* +# +# Connect to J-Link and debug application in flash. +# + +# define 'reset' command +define reset + +# Connect to the J-Link gdb server +target remote localhost:2331 +# Reset the chip to get to a known state +monitor reset + +# Select flash device +monitor flash device = AT91SAM3U4E +# Enable flash download and flash breakpoints +monitor flash download = 1 +# Load the program +load + +# Reset peripheral (RSTC_CR) +set *0x400e1200 = 0xA5000004 + +# Initializing PC and stack pointer +mon reg sp=(0x80000) +set *0x80004 = *0x80004 & 0xFFFFFFFE +mon reg pc=(0x80004) +info reg + +break main + +# end of 'reset' command +end diff --git a/hardware/sam/variants/sam3u_ek/debug_scripts/gcc/sam3u_ek_sram.gdb b/hardware/sam/variants/sam3u_ek/debug_scripts/gcc/sam3u_ek_sram.gdb new file mode 100644 index 000000000..5fa44e23c --- /dev/null +++ b/hardware/sam/variants/sam3u_ek/debug_scripts/gcc/sam3u_ek_sram.gdb @@ -0,0 +1,29 @@ +#******************************************************* +# +# Connect to J-Link and debug application in flash. +# + +# define 'reset' command +define reset + +# Connect to the J-Link gdb server +target remote localhost:2331 +# Reset the chip to get to a known state +monitor reset + +# Load the program +load + +# Reset peripheral (RSTC_CR) +set *0x400e1200 = 0xA5000004 + +# Initializing PC and stack pointer +mon reg sp=(0x20000000) +set *0x20000004 = *0x20000004 & 0xFFFFFFFE +mon reg pc=(0x20000004) +info reg + +break main + +# end of 'reset' command +end diff --git a/hardware/sam/variants/sam3u_ek/debug_scripts/iar/sam3u_ek_flash.mac b/hardware/sam/variants/sam3u_ek/debug_scripts/iar/sam3u_ek_flash.mac new file mode 100644 index 000000000..959583582 --- /dev/null +++ b/hardware/sam/variants/sam3u_ek/debug_scripts/iar/sam3u_ek_flash.mac @@ -0,0 +1,44 @@ +// --------------------------------------------------------- +// ATMEL Microcontroller Software Support - ROUSSET - +// --------------------------------------------------------- +// The software is delivered "AS IS" without warranty or +// condition of any kind, either express, implied or +// statutory. This includes without limitation any warranty +// or condition with respect to merchantability or fitness +// for any particular purpose, or against the infringements of +// intellectual property rights of others. +// --------------------------------------------------------- +// File: at91sam3u-ek-flash.mac +// User setup file for CSPY debugger. +// --------------------------------------------------------- +__var __mac_i; +__var __mac_pt; + +/********************************************************************* +* +* execUserReset() +*/ +execUserReset() +{ + __message "------------------------------ execUserReset ---------------------------------"; + __message "-------------------------------Set PC Reset ----------------------------------"; + + __hwReset(0); + + // perpheral reset RSTC_CR + __writeMemory32(0xA5000004,0x400e1200,"Memory"); +} + +/********************************************************************* +* +* execUserPreload() +*/ +execUserPreload() +{ + __message "------------------------------ execUserPreload ---------------------------------"; + + __hwReset(0); //* Hardware Reset: CPU is automatically halted after the reset + + // perpheral reset RSTC_CR + __writeMemory32(0xA5000004,0x400e1200,"Memory"); +} diff --git a/hardware/sam/variants/sam3u_ek/debug_scripts/iar/sam3u_ek_sram.mac b/hardware/sam/variants/sam3u_ek/debug_scripts/iar/sam3u_ek_sram.mac new file mode 100644 index 000000000..ba86029d3 --- /dev/null +++ b/hardware/sam/variants/sam3u_ek/debug_scripts/iar/sam3u_ek_sram.mac @@ -0,0 +1,44 @@ +// --------------------------------------------------------- +// ATMEL Microcontroller Software Support - ROUSSET - +// --------------------------------------------------------- +// The software is delivered "AS IS" without warranty or +// condition of any kind, either express, implied or +// statutory. This includes without limitation any warranty +// or condition with respect to merchantability or fitness +// for any particular purpose, or against the infringements of +// intellectual property rights of others. +// --------------------------------------------------------- +// File: at91sam3u-ek-sram.mac +// User setup file for CSPY debugger. +// --------------------------------------------------------- +__var __mac_i; +__var __mac_pt; + +/********************************************************************* +* +* execUserReset() +*/ +execUserReset() +{ + __message "------------------------------ execUserReset ---------------------------------"; + __message "-------------------------------Set PC Reset ----------------------------------"; + + //__hwReset(50); + + // perpheral reset RSTC_CR + __writeMemory32(0xA5000004,0x400e1200,"Memory"); +} + +/********************************************************************* +* +* execUserPreload() +*/ +execUserPreload() +{ + __message "------------------------------ execUserPreload ---------------------------------"; + + __hwReset(0); //* Hardware Reset: CPU is automatically halted after the reset + + // perpheral reset RSTC_CR + __writeMemory32(0xA5000004,0x400e1200,"Memory"); +} diff --git a/hardware/sam/variants/sam3u_ek/linker_scripts/gcc/flash.ld b/hardware/sam/variants/sam3u_ek/linker_scripts/gcc/flash.ld new file mode 100644 index 000000000..c79e630a5 --- /dev/null +++ b/hardware/sam/variants/sam3u_ek/linker_scripts/gcc/flash.ld @@ -0,0 +1,150 @@ +/* ---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2009, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------------ + * Linker script for running in internal FLASH on the SAM3U4 + *----------------------------------------------------------------------------*/ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + flash0 (W!RX) : ORIGIN = 0x00080000, LENGTH = 0x00020000 /* Flash0, 128K */ + flash1 (W!RX) : ORIGIN = 0x00100000, LENGTH = 0x00020000 /* Flash1, 128K */ + sram0 (W!RX) : ORIGIN = 0x20000000, LENGTH = 0x00008000 /* Sram0, 32K */ + sram1 (W!RX) : ORIGIN = 0x20080000, LENGTH = 0x00004000 /* Sram1, 16K */ + rom (rx) : ORIGIN = ORIGIN(flash1)-LENGTH(flash0), LENGTH = LENGTH(flash0)+LENGTH(flash1) /* Flash, 256K */ + ram (rwx) : ORIGIN = ORIGIN( sram1)-LENGTH( sram0), LENGTH = LENGTH( sram0)+LENGTH( sram1) /* sram, 48K */ +} + +/* The stack size used by the application. NOTE: you need to adjust */ +STACK_SIZE = 0x2000; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(0x4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > flash0 + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > flash0 + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > sram0 + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > sram0 + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > sram1 + + . = ALIGN(4); + _end = . ; +} diff --git a/hardware/sam/variants/sam3u_ek/linker_scripts/gcc/sram.ld b/hardware/sam/variants/sam3u_ek/linker_scripts/gcc/sram.ld new file mode 100644 index 000000000..c8e21ad30 --- /dev/null +++ b/hardware/sam/variants/sam3u_ek/linker_scripts/gcc/sram.ld @@ -0,0 +1,150 @@ +/* ---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2009, 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: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * 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. + * ---------------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------------ + * Linker script for running in internal SRAM on the SAM3U4 + *----------------------------------------------------------------------------*/ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + flash0 (W!RX) : ORIGIN = 0x00080000, LENGTH = 0x00020000 /* Flash0, 128K */ + flash1 (W!RX) : ORIGIN = 0x00100000, LENGTH = 0x00020000 /* Flash1, 128K */ + sram0 (W!RX) : ORIGIN = 0x20000000, LENGTH = 0x00008000 /* Sram0, 32K */ + sram1 (W!RX) : ORIGIN = 0x20080000, LENGTH = 0x00004000 /* Sram1, 16K */ + rom (rx) : ORIGIN = ORIGIN(flash1)-LENGTH(flash0), LENGTH = LENGTH(flash0)+LENGTH(flash1) /* Flash, 256K */ + ram (rwx) : ORIGIN = ORIGIN( sram1)-LENGTH( sram0), LENGTH = LENGTH( sram0)+LENGTH( sram1) /* sram, 48K */ +} + +/* The stack size used by the application. NOTE: you need to adjust */ +STACK_SIZE = 0x800; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(0x4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > sram0 + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > sram1 + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > sram1 + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > sram1 + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > sram1 + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _end = . ; +} diff --git a/hardware/sam/variants/sam3u_ek/linker_scripts/iar/flash.icf b/hardware/sam/variants/sam3u_ek/linker_scripts/iar/flash.icf new file mode 100644 index 000000000..956230fbd --- /dev/null +++ b/hardware/sam/variants/sam3u_ek/linker_scripts/iar/flash.icf @@ -0,0 +1,49 @@ +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */ +/*-Vector table start*/ +define symbol __ICFEDIT_vector_start__ = 0x00080000; /*Add for CMSIS*/ +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_RAM0_start__ = 0x20000000; +define symbol __ICFEDIT_region_RAM0_end__ = 0x20007FFF; +define symbol __ICFEDIT_region_RAM1_start__ = 0x20080000; +define symbol __ICFEDIT_region_RAM1_end__ = 0x20083FFF; +define symbol __ICFEDIT_region_ROM0_start__ = 0x00080000; +define symbol __ICFEDIT_region_ROM0_end__ = 0x0009FFFF; +define symbol __ICFEDIT_region_ROM1_start__ = 0x00100000; +define symbol __ICFEDIT_region_ROM1_end__ = 0x0011FFFF; +/*-Sizes-*/ +/*define symbol __ICFEDIT_size_cstack__ = 0x1000;*//*for nandflash*/ +define symbol __ICFEDIT_size_cstack__ = 0x2000; +define symbol __ICFEDIT_size_heap__ = 0x200; +/*-Specials-*/ +/*define symbol __ICFEDIT_region_RAM_VECT_start__ = __ICFEDIT_region_RAM0_start__;*/ /*Referenced for CMSIS*/ +/*define symbol __ICFEDIT_size_vectors__ = 0x100;*/ /*Referenced for CMSIS*/ +/*-Exports-*/ +/*export symbol __ICFEDIT_region_RAM_VECT_start__;*/ +export symbol __ICFEDIT_vector_start__; /*Add for CMSIS*/ +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +/*define region RAM_VECT_region = mem:[from __ICFEDIT_region_RAM_VECT_start__ size __ICFEDIT_size_vectors__];*/ /*Referenced for CMSIS*/ +/*define region RAM0_region = mem:[from __ICFEDIT_region_RAM0_start__+__ICFEDIT_size_vectors__ to __ICFEDIT_region_RAM0_end__];*/ /*Referenced for CMSIS*/ +define region RAM0_region = mem:[from __ICFEDIT_region_RAM0_start__ to __ICFEDIT_region_RAM0_end__]; +define region RAM1_region = mem:[from __ICFEDIT_region_RAM1_start__ to __ICFEDIT_region_RAM1_end__]; +/*define region RAM_region = mem:[from __ICFEDIT_region_RAM0_start__+__ICFEDIT_size_vectors__ to __ICFEDIT_region_RAM0_end__] | + mem:[from __ICFEDIT_region_RAM1_start__ to __ICFEDIT_region_RAM1_end__];*/ /*Referenced for CMSIS*/ +define region ROM0_region = mem:[from __ICFEDIT_region_ROM0_start__ to __ICFEDIT_region_ROM0_end__]; +define region ROM1_region = mem:[from __ICFEDIT_region_ROM1_start__ to __ICFEDIT_region_ROM1_end__]; + +/*define block RamVect with alignment = 8, size = __ICFEDIT_size_vectors__ { };*/ +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; +define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; + +initialize by copy { readwrite }; +do not initialize { section .noinit }; + +/*place at start of ROM0_region { readonly section .vectors };*/ /*Referenced for CMSIS*/ +place at address mem:__ICFEDIT_vector_start__ { readonly section .intvec }; /*Add for CMSIS*/ +place in ROM0_region { readonly }; +place in RAM0_region { readwrite, block HEAP }; +place in RAM1_region { block CSTACK }; /* for nandflash*/ +/*place in RAM_VECT_region { block RamVect };*/ /*Referenced for CMSIS*/ \ No newline at end of file diff --git a/hardware/sam/variants/sam3u_ek/linker_scripts/iar/sram.icf b/hardware/sam/variants/sam3u_ek/linker_scripts/iar/sram.icf new file mode 100644 index 000000000..d7d33537a --- /dev/null +++ b/hardware/sam/variants/sam3u_ek/linker_scripts/iar/sram.icf @@ -0,0 +1,33 @@ +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */ +/*-Vector table start*/ +define symbol __ICFEDIT_vector_start__ = 0x20000000; +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_RAM0_start__ = 0x20000000; +define symbol __ICFEDIT_region_RAM0_end__ = 0x20007FFF; +define symbol __ICFEDIT_region_RAM1_start__ = 0x20080000; +define symbol __ICFEDIT_region_RAM1_end__ = 0x20083FFF; +/*-Sizes-*/ +define symbol __ICFEDIT_size_cstack__ = 0x900; +define symbol __ICFEDIT_size_heap__ = 0x200; +/*-Exports-*/ +export symbol __ICFEDIT_vector_start__; +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region RAM0_region = mem:[from __ICFEDIT_region_RAM0_start__ to __ICFEDIT_region_RAM0_end__]; +define region RAM1_region = mem:[from __ICFEDIT_region_RAM1_start__ to __ICFEDIT_region_RAM1_end__]; +/*define region RAM_region = mem:[from __ICFEDIT_region_RAM0_start__+__ICFEDIT_size_vectors__ to __ICFEDIT_region_RAM0_end__] | + mem:[from __ICFEDIT_region_RAM1_start__ to __ICFEDIT_region_RAM1_end__];*/ + +/* define block RamVect with alignment = 8, size = __ICFEDIT_size_vectors__ { }; */ +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; +define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; + +initialize by copy { readwrite }; +do not initialize { section .noinit }; + +place at address mem:__ICFEDIT_vector_start__ { readonly section .intvec }; +place in RAM0_region { readonly }; +place in RAM1_region { readwrite, block CSTACK, block HEAP }; diff --git a/hardware/sam/variants/sam3u_ek/pins.xls b/hardware/sam/variants/sam3u_ek/pins.xls new file mode 100644 index 000000000..4b1389fbf Binary files /dev/null and b/hardware/sam/variants/sam3u_ek/pins.xls differ diff --git a/hardware/sam/variants/sam3u_ek/variant.cpp b/hardware/sam/variants/sam3u_ek/variant.cpp new file mode 100644 index 000000000..f2c160046 --- /dev/null +++ b/hardware/sam/variants/sam3u_ek/variant.cpp @@ -0,0 +1,171 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "variant.h" + +/* + * Pins descriptions + */ +extern const PinDescription g_APinDescription[]= +{ + // LEDS, 0..2 + { PIOB, PIO_PB0, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT }, // LED BLUE + { PIOB, PIO_PB1, ID_PIOB, PIO_OUTPUT_1, PIO_DEFAULT }, // LED GREEN + { PIOB, PIO_PB2, ID_PIOB, PIO_OUTPUT_1, PIO_DEFAULT }, // LED RED + + // USB, 3..3 + { PIOA, PIO_PA0, ID_PIOA, PIO_INPUT, PIO_PULLUP }, // USB_VBUS + + // UART (Serial), 4..6 + { PIOA, PIO_PA11A_URXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // URXD + { PIOA, PIO_PA12A_UTXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // UTXD + { PIOA, PIO_PA11A_URXD|PIO_PA12A_UTXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // All UART pins + + // Push buttons, 7..8 + { PIOA, PIO_PA18, ID_PIOA, PIO_INPUT, PIO_PULLUP | PIO_DEGLITCH }, // PB_LEFT + { PIOA, PIO_PA19, ID_PIOA, PIO_INPUT, PIO_PULLUP | PIO_DEGLITCH }, // PB_RIGHT + + // MCI (SDCARD), 9..19 + { PIOA, PIO_PA25, ID_PIOA, PIO_INPUT, PIO_PULLUP }, // MCI Card Detect + { PIOA, PIO_PA5A_MCDA0, ID_PIOA, PIO_PERIPH_A, PIO_PULLUP }, // MCDA0 + { PIOA, PIO_PA6A_MCDA1, ID_PIOA, PIO_PERIPH_A, PIO_PULLUP }, // MCDA1 + { PIOA, PIO_PA7A_MCDA2, ID_PIOA, PIO_PERIPH_A, PIO_PULLUP }, // MCDA2 + { PIOA, PIO_PA8A_MCDA3, ID_PIOA, PIO_PERIPH_A, PIO_PULLUP }, // MCDA3 + { PIOC, PIO_PC28B_MCDA4, ID_PIOC, PIO_PERIPH_B, PIO_PULLUP }, // MCDA4 + { PIOC, PIO_PC29B_MCDA5, ID_PIOC, PIO_PERIPH_B, PIO_PULLUP }, // MCDA5 + { PIOC, PIO_PC30B_MCDA6, ID_PIOC, PIO_PERIPH_B, PIO_PULLUP }, // MCDA6 + { PIOC, PIO_PC31B_MCDA7, ID_PIOC, PIO_PERIPH_B, PIO_PULLUP }, // MCDA7 + { PIOA, PIO_PA4A_MCCDA, ID_PIOA, PIO_PERIPH_A, PIO_PULLUP }, // MCCDA + { PIOA, PIO_PA3A_MCCK, ID_PIOA, PIO_PERIPH_A, PIO_PULLUP }, // MCCK + + // SPI, 20..23 + { PIOA, PIO_PA13A_MISO, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // MISO + { PIOA, PIO_PA14A_MOSI, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // MOSI + { PIOA, PIO_PA15A_SPCK, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // SPCK + { PIOC, PIO_PC14B_NPCS2, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT }, // NPCS2 + + // TouchScreen, 24..25 + { PIOA, PIO_PA24, ID_PIOA, PIO_INPUT, PIO_PULLUP }, // IRQ_TSC + { PIOA, PIO_PA2, ID_PIOA, PIO_INPUT, PIO_PULLUP }, // BUSY_TSC + + // USART1, 26..29 + { PIOA, PIO_PA21A_RXD1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // RXD1 + { PIOA, PIO_PA20A_TXD1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // TXD1 + { PIOA, PIO_PA22B_RTS1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // RTS1 + { PIOA, PIO_PA23B_CTS1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT }, // CTS1 + + // LCD, 30..47 + { PIOB, 0xFE01FE00, ID_PIOB, PIO_PERIPH_A, PIO_PULLUP }, // EBI Data bus PB9-16 PB25-31 + { PIOB, PIO_PB23A_NWE, ID_PIOB, PIO_PERIPH_A, PIO_PULLUP }, // EBI_NWE + { PIOB, PIO_PB19A_NRD, ID_PIOB, PIO_PERIPH_A, PIO_PULLUP }, // EBI_NRD + { PIOC, PIO_PC16A_NCS2, ID_PIOC, PIO_PERIPH_A, PIO_PULLUP }, // LCD CS + { PIOB, PIO_PB8, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT }, // LCD RS + { PIOC, PIO_PC19, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT }, // LCD BackLight + + { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT } // END +} ; + +/* + * UART objects + */ +RingBuffer rx_buffer1 ; +RingBuffer tx_buffer1 ; + +UARTClass Serial( UART, UART_IRQn, ID_UART, &rx_buffer1, &tx_buffer1 ) ; + +#ifdef __cplusplus +extern "C" { +#endif + +// IT handlers +extern void UART_IrqHandler( void ) +{ + Serial.IrqHandler() ; +} + +#ifdef __cplusplus +} +#endif + +// ---------------------------------------------------------------------------- +/* + * USART objects + */ +RingBuffer rx_buffer2 ; +RingBuffer tx_buffer2 ; +RingBuffer rx_buffer3 ; +RingBuffer tx_buffer3 ; + +USARTClass Serial2( USART0, USART0_IRQn, ID_USART0, &rx_buffer2, &tx_buffer2 ) ; +USARTClass Serial3( USART1, USART1_IRQn, ID_USART1, &rx_buffer3, &tx_buffer3 ) ; + +#ifdef __cplusplus +extern "C" { +#endif + +// IT handlers +extern void USART0_IrqHandler( void ) +{ + Serial2.IrqHandler() ; +} + +extern void USART1_IrqHandler( void ) +{ + Serial3.IrqHandler() ; +} + +#ifdef __cplusplus +} +#endif + +// ---------------------------------------------------------------------------- + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * + */ +extern void init( void ) +{ + SystemInit() ; + + /* Set Systick to 1ms interval, common to all SAM3 variants */ + if ( SysTick_Config( SystemCoreClock / 1000 ) ) + { + /* Capture error */ + while ( 1 ) ; + } + + /* Disable watchdog, common to all SAM variants */ + WDT_Disable( WDT ) ; + + // Initialize UART Serial port + PIO_Configure( g_APinDescription[PINS_UART].pPort, g_APinDescription[PINS_UART].ulPinType, + g_APinDescription[PINS_UART].ulPin, g_APinDescription[PINS_UART].ulPinConfiguration ) ; + + // Switch off Power LED + PIO_Configure( g_APinDescription[PIN_LED_RED].pPort, g_APinDescription[PIN_LED_RED].ulPinType, + g_APinDescription[PIN_LED_RED].ulPin, g_APinDescription[PIN_LED_RED].ulPinConfiguration ) ; + PIO_Clear( g_APinDescription[PIN_LED_RED].pPort, g_APinDescription[PIN_LED_RED].ulPin ) ; +} +#ifdef __cplusplus +} +#endif + diff --git a/hardware/sam/variants/sam3u_ek/variant.h b/hardware/sam/variants/sam3u_ek/variant.h new file mode 100644 index 000000000..77b0fe305 --- /dev/null +++ b/hardware/sam/variants/sam3u_ek/variant.h @@ -0,0 +1,94 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _VARIANT_SAM3U_EK_ +#define _VARIANT_SAM3U_EK_ + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "Arduino.h" +#include "UARTClass.h" +#include "USARTClass.h" + +/** + * Libc porting layers + */ +#if defined ( __GNUC__ ) /* GCC CS3 */ +# include /** RedHat Newlib minimal stub */ +#endif + +/*---------------------------------------------------------------------------- + * Definitions + *----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------*/ + +#ifndef sam3u_ek +#define sam3u_ek +#endif + +/** Name of the board */ +#define VARIANT_NAME "SAM3U-EK" + +/* +#define VARIANT_REV_A +#define VARIANT_REV_B +#define VARIANT_REV_C +#define VARIANT_REV_D +*/ + +/** Frequency of the board main oscillator */ +#define VARIANT_MAINOSC 12000000 + +/** Master clock frequency */ +#define VARIANT_MCK 96000000 + +/*---------------------------------------------------------------------------- + * Pins + *----------------------------------------------------------------------------*/ + +#define PIN_LED_BLUE (0u) +#define PIN_LED_GREEN (1u) +#define PIN_LED_RED (2u) +#define PIN_LED PIN_LED_BLUE +#define PIN_LED2 PIN_LED_GREEN + +static const uint8_t SS = 23 ; +static const uint8_t MOSI = 21 ; +static const uint8_t MISO = 20 ; +static const uint8_t SCK = 22 ; + +#define PINS_UART (6u) + +/*---------------------------------------------------------------------------- + * Arduino objects - C++ only + *----------------------------------------------------------------------------*/ + +#ifdef __cplusplus + +extern UARTClass Serial ; + +extern USARTClass Serial2 ; +extern USARTClass Serial3 ; + +#endif + +#endif /* _VARIANT_SAM3U_EK_ */ + diff --git a/hardware/tools/README.txt b/hardware/tools/README.txt new file mode 100644 index 000000000..4da5594ad --- /dev/null +++ b/hardware/tools/README.txt @@ -0,0 +1 @@ +Here should be present the CodeSourcery ARM GCC toolchain \ No newline at end of file